カーネルをコンパイルするときにinitrdのサイズを小さくするには?

カーネルをコンパイルするときにinitrdのサイズを小さくするには?

私のカーネルをコンパイルするときにデフォルトで行うことは次のとおりです。

  1. www.kernel.orgからソースコードをダウンロードして解凍しました。

  2. 以前の内容を.configソースコードにコピーし、make menuconfig新しいオプションを観察し、カーネルの新しいポリシーに従って設定を変更することを行いました。

  3. それからそれをコンパイルします。make -j 4

  4. 最後にインストールしました: su -c 'make modules_install && make install'

  5. /bootいくつかのテストの後、古いカーネル(およびから)を削除し、新しい/lib/modulesカーネルで完全に実行しました(この最後のステップで何度も私の命を救いました!専門家のヒント! )。

問題は、/boot/initrd.img-4.x.x私のディストリビューションにあるものと比較すると、常に大きなものを得ることです。以下は、現在のディレクトリの内容の例です/boot/

# 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

initrd.img私のファイルサイズが私のディストリビューションのファイルサイズより約10倍大きいことに気づきました。

それでは、カーネルをコンパイルするときに私が何か間違っているのでしょうか?そしてどのようにサイズを減らすことができますかinitrd.img

ベストアンサー1

これは、カーネルモジュールが削除されていないためです。サイズを小さくするには、皮をむく必要があります。

次のコマンドを使用します。

SHW@SHW:/tmp# cd /lib/modules/<new_kernel>
SHW@SHW:/tmp# find . -name *.ko -exec strip --strip-unneeded {} +

これにより、サイズが大幅に減少します。上記のコマンドを実行した後、引き続きinitramfs / initrdを作成できます。

man strip

   --strip-unneeded
       Remove all symbols that are not needed for relocation processing.

おすすめ記事