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 đó
.configvà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 4Cuố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ừ
/bootvà/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.xcá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.imgtệ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?