Khi tôi biên dịch kernel của mình, về cơ bản những gì tôi làm là như sau:
Tôi tải các nguồn từ www.kernel.org và giải nén nó.
Tôi sao chép trước đó
.config
vào các nguồn và thực hiệnmake menuconfig
để xem các tùy chọn mới và sửa đổi cấu hình theo chính sách mới của kernel.Sau đó, tôi biên dịch nó:
make -j 4
Cuối cùng, tôi cài đặt nó :
su -c 'make modules_install && make install'
.Sau một vài thử nghiệm, tôi loại bỏ kernel cũ (từ
/boot
và/lib/modules
) và chạy hoàn toàn với kernel mới (bước cuối cùng này đã cứu mạng tôi nhiều lần! Đó là một pro-tip !).
Vấn đề là tôi luôn nhận được một /boot/initrd.img-4.x.x
cái rất lớn so với những cái từ bản phân phối của tôi. Ở đây nội dung của /boot/
thư mục hiện tại của tôi là một ví dụ:
# ls -alFh
total 243M
drwxr-xr-x 5 root root 4.0K Mar 16 21:26 ./
drwxr-xr-x 25 root root 4.0K Feb 25 09:28 ../
-rw-r--r-- 1 root root 2.9M Mar 9 07:39 System.map-4.4.0-1-amd64
-rw-r--r-- 1 root root 3.1M Mar 11 22:30 System.map-4.4.5
-rw-r--r-- 1 root root 3.2M Mar 16 21:26 System.map-4.5.0
-rw-r--r-- 1 root root 170K Mar 9 07:39 config-4.4.0-1-amd64
-rw-r--r-- 1 root root 124K Mar 11 22:30 config-4.4.5
-rw-r--r-- 1 root root 126K Mar 16 21:26 config-4.5.0
drwxr-xr-x 5 root root 512 Jan 1 1970 efi/
drwxr-xr-x 5 root root 4.0K Mar 16 21:27 grub/
-rw-r--r-- 1 root root 19M Mar 10 22:01 initrd.img-4.4.0-1-amd64
-rw-r--r-- 1 root root 101M Mar 12 13:59 initrd.img-4.4.5
-rw-r--r-- 1 root root 103M Mar 16 21:26 initrd.img-4.5.0
drwx------ 2 root root 16K Apr 8 2014 lost+found/
-rw-r--r-- 1 root root 3.5M Mar 9 07:30 vmlinuz-4.4.0-1-amd64
-rw-r--r-- 1 root root 4.1M Mar 11 22:30 vmlinuz-4.4.5
-rw-r--r-- 1 root root 4.1M Mar 16 21:26 vmlinuz-4.5.0
Như bạn có thể nhận thấy, kích thước initrd.img
tệp của tôi lớn hơn khoảng 10 lần so với tệp từ bản phân phối của tôi.
Vì vậy, tôi có làm gì sai khi biên dịch kernel không? Và, làm thế nào tôi có thể giảm kích thước của tôi initrd.img
?