手动将内核映像移动到 /boot 目录

手动将内核映像移动到 /boot 目录

我在 Gentoo 上编译了自己的内核(如下手册)然后我将其bzImage移至/boot/vmlinuz-4.0.5.但是当我启动系统时,我得到了 Grub2 shell。我究竟做错了什么?

另外,当我尝试从 Grub shell 引导系统时,出现以下错误:kernel panic-not syncing: VFS: unable to mount root fs on unknown block(0, 0)。我还在该硬盘上安装了 Windows 10。

最初,/boot它是一个 2MB 的单独分区,但我发现我不需要这样做,并且我删除了对该分区的任何引用(基本上,我删除了有关 的/etc/fstab行)。鉴于我重新启动系统后,我得到了.我从 Ubuntu Live CD 启动并构建了内核,之后我手动将内核移动到.我手动完成它,因为(它应该处理这项工作)会将其复制到错误的位置。fstab/bootgrub2 shell/bootmake install

这些是我用来从 Ubuntu Live CD 构建内核的命令:

ubuntu@ubuntu:/media/ubuntu/a243b31a-80dd-4a49-8de2-f4417816981d/usr/src/linux$ make menuconfig
ubuntu@ubuntu:/media/ubuntu/a243b31a-80dd-4a49-8de2-f4417816981d/usr/src/linux$ make && make modules_install
ubuntu@ubuntu:/media/ubuntu/a243b31a-80dd-4a49-8de2-f4417816981d/usr/src/linux$ cp arch/bzImage ../../../boot/vmlinuz-4.0.5

然后我重新启动。

答案1

bzImage早些时候,当我手动将文件复制到 时,我遇到了同样的错误/boot。然而跑步make install为我解决了这个问题。make install生成initramfs图像。该initramfs文件名为

initramfs-4.12.0-rc3+.img

在我的系统上

拥有vmlinuzinitramfs文件后,您需要运行grub2-mkconfig命令

grub2-mkconfig -o /boot/grub2/grub.cfg

它会自动生成grub.cfg文件并将内核与initramfs文件关联起来,如下所示

 --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-4.12.0-rc3+-advanced-1cd90ed5-08a6-4ca3-8b96-65b5a30382ae' {
        load_video
        insmod gzio
        insmod part_msdos
        insmod xfs
        set root='hd0,msdos1'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 --hint='hd0,msdos1'  f33e4ffc-4d5b-44be-aedd-7aacc6241ed9
        else
          search --no-floppy --fs-uuid --set=root f33e4ffc-4d5b-44be-aedd-7aacc6241ed9
        fi
        linux16 /vmlinuz-4.12.0-rc3+ root=/dev/mapper/cl-root ro crashkernel=auto rd.lvm.lv=cl/root rd.lvm.lv=cl/swap rhgb quiet LANG=en_US.UTF-8
        initrd16 /initramfs-4.12.0-rc3+.img

相关内容