1. ホーム
  2. linux

[解決済み] エラーです。"gzip: stdout: Linuxカーネルアップグレード中に「No space left on device」(デバイスに空き容量がない)が発生する(空き容量がある間)[closed]。

2022-02-12 22:33:12

質問

現在、Linux カーネルを 4.4.0-63 から 4.10.12 にアップグレードしようとしている最中です。私は、手順(を使うことによって)を乗り切りました。 http://www.thegeekstuff.com/2013/06/compile-linux-kernel のマニュアルを参照)。 make -> make modules -> make modules_install

でも、一度は".をやってみようと思うのですが。 make install "以下のエラーが発生します。

user@thiscomp:/usr/src/linux-4.10.12$ sudo make install
sh ./arch/x86/boot/install.sh 4.10.12 arch/x86/boot/bzImage \
            System.map "/boot"
run-parts: executing /etc/kernel/postinst.d/apt-auto-removal 4.10.12 
/boot/vmlinuz-4.10.12
run-parts: executing /etc/kernel/postinst.d/initramfs-tools 4.10.12 
/boot/vmlinuz-4.10.12
update-initramfs: Generating /boot/initrd.img-4.10.12
W: Possible missing firmware /lib/firmware/ast_dp501_fw.bin for module ast

gzip: stdout: No space left on device
E: mkinitramfs failure cpio 141 gzip 1
update-initramfs: failed for /boot/initrd.img-4.10.12 with 1.
run-parts: /etc/kernel/postinst.d/initramfs-tools exited with return code 1
make[1]: *** [install] Error 1
make: *** [install] Error 2

まず、/bootが一杯になっていないか確認しましたが、そうではないようです。

user@thiscomp:/usr/src/linux-4.10.12$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/dm-0       252G   43G  197G  18% /
...
/dev/sda1       236M   75M  149M  34% /boot

ネットで見たところ、これは通常、過去のカーネルバージョンが必要以上に長く残っていることと関係があるようです。しかし、私が見た限りでは、"を実行した後に過去のバージョンがぶら下がることはありませんでした。 dpkg -l linux-image* となります。

un  linux-image     
ii  linux-image-4.4.0-63-generic  
ii  linux-image-extra-4.4.0-63-generic
ii  linux-image-generic-lts-xenial

特に/bootが満杯になっていないようなので)他にどこを見れば問題がわかるのかわかりません。何かアイデアはありますか?

編集 コメント要求されたコマンドを追加。

user@thiscomp:/usr/src/linux-4.10.12$ df -i
Filesystem       Inodes  IUsed    IFree IUse% Mounted on
/dev/dm-0      16777216 469172 16308044    3% /
..
/dev/sda1         62248    307    61941    1% /boot
user@thiscomp:/usr/src/linux-4.10.12$ ls -l /boot
total 69528
-rw-r--r-- 1 root root  1245512 Feb 13 06:43 abi-4.4.0-63-generic
-rw-r--r-- 1 root root   203277 Apr 25 22:42 config-4.10.12
-rw-r--r-- 1 root root   203277 Apr 25 22:32 config-4.10.12.old
-rw-r--r-- 1 root root   190255 Feb 13 06:43 config-4.4.0-63-generic
drwxr-xr-x 5 root root     1024 Apr 25 20:17 grub
-rw-r--r-- 1 root root 35960364 Apr 25 17:46 initrd.img-4.4.0-63-generic
drwx------ 2 root root    12288 Feb 15 16:18 lost+found
-rw-r--r-- 1 root root   176500 Mar 12  2014 memtest86+.bin
-rw-r--r-- 1 root root   178176 Mar 12  2014 memtest86+.elf
-rw-r--r-- 1 root root   178680 Mar 12  2014 memtest86+_multiboot.bin
-rw-r--r-- 1 root root  3662296 Apr 25 22:42 System.map-4.10.12
-rw-r--r-- 1 root root  3662296 Apr 25 22:32 System.map-4.10.12.old
-rw------- 1 root root  3897401 Feb 13 06:43 System.map-4.4.0-63-generic
-rw-r--r-- 1 root root  7169312 Apr 25 22:42 vmlinuz-4.10.12
-rw-r--r-- 1 root root  7169312 Apr 25 22:32 vmlinuz-4.10.12.old
-rw------- 1 root root  6989520 Feb 13 06:43 vmlinuz-4.4.0-63-generic

編集2 tmpfs をマウントしました。

user@thiscomp:/usr/src/linux-4.10.12$ sudo mount -t tmpfs none /boot
user@thiscomp:/usr/src/linux-4.10.12$ sudo make install
sh ./arch/x86/boot/install.sh 4.10.12 arch/x86/boot/bzImage \
            System.map "/boot"
run-parts: executing /etc/kernel/postinst.d/apt-auto-removal 4.10.12         
/boot/vmlinuz-4.10.12
run-parts: executing /etc/kernel/postinst.d/initramfs-tools 4.10.12                 
/boot/vmlinuz-4.10.12
update-initramfs: Generating /boot/initrd.img-4.10.12
W: Possible missing firmware /lib/firmware/ast_dp501_fw.bin for module ast
run-parts: executing /etc/kernel/postinst.d/pm-utils 4.10.12 /boot/vmlinuz-
4.10.12
run-parts: executing /etc/kernel/postinst.d/update-notifier 4.10.12 
/boot/vmlinuz-4.10.12
run-parts: executing /etc/kernel/postinst.d/zz-update-grub 4.10.12 
/boot/vmlinuz-4.10.12
comp528@virt05:/usr/src/linux-4.10.12$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/dm-0       252G   43G  197G  18% /
...
none             16G  310M   16G   2% /boot

解決方法は?

<ブロッククオート

/bootが一杯になっていないか確認しましたが、そうではないようです。

 /dev/sda1       236M   75M  149M  34% /boot

run-parts: executing /etc/kernel/postinst.d/initramfs-tools 4.10.12 
/boot/vmlinuz-4.10.12
update-initramfs: Generating /boot/initrd.img-4.10.12
gzip: stdout: No space left on device

やはり/bootパーティションの空き容量に問題があるのでしょう。(300MBのうち149MBまでgzipで書き込んだ一時ファイルがあったのですが、ブート領域がいっぱいになるとgzipがそのファイルを削除してしまい、見えなくなります)

何か大きなものを/bootパーティションに一時的にマウントしてみるとよいでしょう。

 mount -t tmpfs none /boot

を起動し、再起動する。 sudo make install を実行して、initramfsの実際のサイズ(300MB)を確認します。

または、/etc/kernel/postinst.d/initramfs-tools が起動する際に使用するパラメータを確認します。 update-initramfs を追加し -v オプションで指定します。また、次のようにしてもよいでしょう。

  • ディスクを再フォーマットして/bootを大きくする
  • コンフィグでいくつかのモジュールを無効にして再構築する。
  • でインストールする前にモジュールを削除します。 make INSTALL_MOD_STRIP=1 modules_install コマンドを使用します。 https://superuser.com/questions/705121
  • 必要なモジュールだけをinitramfsにインストールする