Ketika saya mengkompilasi kernel saya sendiri, pada dasarnya yang saya lakukan adalah sebagai berikut:
Saya mengunduh sumber-sumber dari www.kernel.org dan membuka kompresnya.
Saya menyalin yang sebelumnya
.config
ke sumber dan melakukanmake menuconfig
untuk melihat opsi-opsi baru dan memodifikasi konfigurasi sesuai dengan kebijakan baru kernel.Lalu, saya kompilasi:
make -j 4
Akhirnya, saya menginstalnya:
su -c 'make modules_install && make install'
.Setelah beberapa tes, saya menghapus kernel lama (dari
/boot
dan/lib/modules
) dan menjalankan sepenuhnya dengan yang baru (langkah terakhir ini menyelamatkan hidup saya beberapa kali! Ini pro-tip !).
Masalahnya adalah saya selalu mendapatkan /boot/initrd.img-4.x.x
yang sangat besar dibandingkan dengan yang dari distribusi saya. Di sini isi /boot/
direktori saya saat ini sebagai contoh:
# 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
Seperti yang mungkin Anda perhatikan, ukuran initrd.img
file saya sekitar 10 kali lebih besar daripada yang dari distribusi saya.
Jadi, apakah saya melakukan sesuatu yang salah ketika mengkompilasi kernel saya? Dan, bagaimana saya bisa mengurangi ukuran saya initrd.img
?
sumber
Jawaban:
Ini karena semua modul kernel tidak dilucuti. Anda perlu melepasnya ke ukurannya.
Gunakan perintah ini:
Ini akan mengurangi ukuran secara drastis. Setelah menjalankan perintah di atas, Anda dapat melanjutkan untuk membuat initramfs / initrd
sumber
initrd
gambar dengan 10 ... Terima kasih banyak, itu bekerja dengan baik!{}
dan+
.Saya melakukan beberapa penelitian tambahan pada masalah untuk mengetahui apa cara terbaik untuk mendapatkan modul dilucuti dan di sini adalah proses lengkap yang saya temukan (masih SHW memang membawa jawabannya tetapi proses yang saya temukan entah bagaimana lebih standar):
Unduh sumber dari
www.kernel.org
dan hapus kompresnya.Salin sebelumnya
.config
ke sumber dan lakukanmake menuconfig
untuk melihat opsi baru dan memodifikasi konfigurasi sesuai dengan kebijakan baru kernel.Kemudian, kompilasi:
Akhirnya, instal:
Setelah beberapa tes, hapus kernel lama dari
/boot
dan/lib/modules
direktori.The
INSTALL_MOD_STRIP
ketika diatur untuk1
menambahkanstrip --strip-debug
ketika menginstal modul, yang cukup untuk mengurangi ukuran drastis.Lihat: INSTALL_MOD_STRIP di
Documentation/kbuild/kbuild.txt
.sumber
Anda juga dapat mengubah konfigurasi
initramfs.conf
Temukan file di
/etc/initramfs-tools/initramfs.conf
Ada pengaturan yang mengatakan
MODULES=most
ini termasuk sebagian besar modul untuk gambar initrd Anda.Mengubahnya menjadi
MODULES=dep
ini membuat generator initramfs menebak modul mana yang akan disertakan.Lihat halaman manual untuk initramfs.conf di sini .
CATATAN 1: Setelah melakukan langkah-langkah di atas ukuran gambar initramfs saya berkurang dari 282 MB menjadi 99 MB. (Ini masih cukup besar tetapi merupakan peningkatan yang signifikan)
CATATAN 2: Saya juga mencoba membuka modul kernel di
/lib/modules/<kernel version>
. Modul yang disediakan oleh pembaruan OS dilucuti (ukuran = 211 MB) dan dengan demikian gambar intiramf yang sesuai adalah sekitar 15 MB. Setelah melepas modul dari kernel vanilla yang saya kompilasi sendiri ukuran folder adalah 185 MB dan gambar intramfs adalah 16 MB. Jadi setelah semua optimasi ukuran turun dari 282 MB menjadi 16 MB !! Untuk pengupasan gunakan kode iniDalam kode di atas, ganti
<kernel_release>
dengan versi kernel yang Anda inginkan untuk menghapus modul.Untuk diskusi lebih lanjut, lihat tautan ini .
Kode di atas harus dijalankan sebagai
sudo
atausu
sumber