将其移到这里以尝试获取一些见解。
我目前正在尝试将 Linux 内核从 4.4.0-63 升级到 4.10.12(我对这里的文件做了一些编辑)。我在 Ubuntu 14.04 x86_64 上运行,并已完成以下步骤:make menuconfig(我接受了默认值)-> 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
udev 16G 4.0K 16G 1% /dev
tmpfs 3.2G 1.2M 3.2G 1% /run
/dev/dm-0 252G 43G 197G 18% /
none 4.0K 0 4.0K 0% /sys/fs/cgroup
none 5.0M 0 5.0M 0% /run/lock
none 16G 152K 16G 1% /run/shm
none 100M 32K 100M 1% /run/user
/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
最后,安装到 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
user@thiscomp:/usr/src/linux-4.10.12$ df -h
Filesystem Size Used Avail Use% Mounted on
udev 16G 4.0K 16G 1% /dev
tmpfs 3.2G 1.2M 3.2G 1% /run
/dev/dm-0 252G 43G 197G 18% /
none 4.0K 0 4.0K 0% /sys/fs/cgroup
none 5.0M 0 5.0M 0% /run/lock
none 16G 152K 16G 1% /run/shm
none 100M 32K 100M 1% /run/user
none 16G 310M 16G 2% /boot
我不确定还能从哪里查找问题(尤其是看起来 /boot 似乎还没满)。有没有办法缩小安装体积,同时仍安装必要的内容(或者有没有办法调整 /boot 的大小而不清除系统?)。
编辑(添加评论请求的命令):
user@thiscomp:/usr/src/linux-4.10.12$ df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
udev 4108437 534 4107903 1% /dev
tmpfs 4113275 609 4112666 1% /run
/dev/dm-0 16777216 470608 16306608 3% /
none 4113275 14 4113261 1% /sys/fs/cgroup
none 4113275 6 4113269 1% /run/lock
none 4113275 6 4113269 1% /run/shm
none 4113275 25 4113250 1% /run/user
/dev/sda1 62248 307 61941 1% /boot
编辑2挂载 tmpfs 后添加文件大小:
user@thiscomp:/usr/src/linux-4.10.12$ ls -l /boot/initrd.img-4.10.12
/boot/vmlinuz-4.10.12
-rw-r--r-- 1 root root 312429420 Apr 26 07:02 /boot/initrd.img-4.10.12
-rw-r--r-- 1 root root 7149280 Apr 26 07:01 /boot/vmlinuz-4.10.12
编辑3模块数量:
user@thiscomp:/usr/src/linux-4.10.12$ grep -o '=m' /boot/config-4.4.0-63-
generic | wc -l
4409
user@thiscomp:/usr/src/linux-4.10.12$ grep -o '=m' .config | wc -l
4332
答案1
问题最终是由于我在运行 make_install 之前没有剥离模块,因此与我当前的内核相比,正在安装的内核非常大(请参见此处:https://stackoverflow.com/a/43624752/3776230)
基本上,安装模块时必须运行“make INSTALL_MOD_STRIP=1 modules_install”。