Linux-Kernel
我如何知道 Linux 核心中編譯了哪些解壓縮算法?
如果
/proc/config.gz
不可用,我如何知道正在執行的核心能夠在壓縮文件上使用哪些解壓縮算法cpio
initramfs
?該
gzip
算法是否始終可用,即使在建構核心時CONFIG_DECOMPRESS_GZIP
不可用?y
壓縮算法在
lib/decompress.c
. Gzip 被定義lib/decompress_inflate.c
並沒有得到任何特殊狀態;只有在編譯核心時它才會存在CONFIG_DECOMPRESS_GZIP
。y
可用壓縮算法的列表是
compressed_formats
結構。由於它被定義為static
,它在其他源文件中不可用。因此,唯一使用它的函式就是decompress_method
函式lib/decompress.c
本身。因此,讓核心使用支持算法表的唯一方法是嘗試解壓縮以適當的兩字節魔術序列開頭的內容,並查看該函式是否返回算法名稱。您可以通過搜尋核心符號列表 ( ) 來判斷支持哪些解壓縮函式
/proc/kallsyms
。這些函式沒有被這樣標識,因此您需要在符號名稱列表中烘焙。</proc/kallsyms cut -d " " -f 3 | grep -xF -e gunzip -e bzip2 -e unlzma -e unxz -e unlzo -e unlz4