Làm cách nào để biết thuật toán giải nén nào được biên dịch vào kernel linux?


8

Nếu /proc/config.gzkhông có sẵn, làm thế nào để tôi biết thuật toán giải nén nào mà kernel đang chạy có khả năng sử dụng trên một nén cpio initramfs?

gzipthuật toán luôn có sẵn, ngay cả khi CONFIG_DECOMPRESS_GZIPkhông phải là ykhi xây dựng kernel?

Câu trả lời:


2

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.cvà không nhận được bất kỳ trạng thái đặc biệt nào; nó sẽ chỉ ở đó nếu CONFIG_DECOMPRESS_GZIPykhi kernel được biên dịch.

Danh sách các thuật toán nén có sẵn là compressed_formatscấ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_methodchứ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

0

Bạn có thể nhận biết kiểu nén của mình bằng cách vào thư mục sys / power / tuxonice / nén ở đó bạn sẽ có một tệp có tên thuật toán đi vào nó, nó sẽ có kiểu giải nén trong đó cho tôi nó được viết lzo.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.