Các thuật toán nén được khai báo trong lib/decompress.c
. Gzip được định nghĩa trong lib/decompress_inflate.c
và không nhận được bất kỳ trạng thái đặc biệt nào; nó sẽ chỉ ở đó nếu CONFIG_DECOMPRESS_GZIP
là y
khi kernel được biên dịch.
Danh sách các thuật toán nén có sẵn là compressed_formats
cấu trúc. Vì nó được định nghĩa là static
, nó không có sẵn trong các tệp nguồn khác. Do đó, chức năng duy nhất sử dụng nó là chính decompress_method
chức năng lib/decompress.c
đó. Vì vậy, cách duy nhất để có được hạt nhân sử dụng bảng thuật toán được hỗ trợ là cố gắng giải nén thứ gì đó bắt đầu bằng chuỗi ma thuật hai byte thích hợp và xem hàm đó có trả về tên thuật toán không.
Bạn có thể cho biết các hàm giải nén nào được hỗ trợ bằng cách tìm kiếm danh sách các ký hiệu kernel ( /proc/kallsyms
). Các chức năng không được xác định như vậy, vì vậy bạn sẽ cần phải nướng trong danh sách tên biểu tượng.
</proc/kallsyms cut -d " " -f 3 |
grep -xF -e gunzip -e bzip2 -e unlzma -e unxz -e unlzo -e unlz4