![默认 Grub2 条目未指向最新内核版本 + “selinuxfs mount failed”启动错误:如何修复?](https://linux22.com/image/1084197/%E9%BB%98%E8%AE%A4%20Grub2%20%E6%9D%A1%E7%9B%AE%E6%9C%AA%E6%8C%87%E5%90%91%E6%9C%80%E6%96%B0%E5%86%85%E6%A0%B8%E7%89%88%E6%9C%AC%20%2B%20%E2%80%9Cselinuxfs%20mount%20failed%E2%80%9D%E5%90%AF%E5%8A%A8%E9%94%99%E8%AF%AF%EF%BC%9A%E5%A6%82%E4%BD%95%E4%BF%AE%E5%A4%8D%EF%BC%9F.png)
我安装了 Ubuntu 14.04 和 Linux(Mandriva 2011/Grub Legacy)的多重启动。一开始它似乎可以正常工作。但在我第一次更新 Ubuntu 时,系统“强烈建议”我更新 grub,结果 grub 菜单有 3 个子菜单和 887 个条目!
所以我定制了 Grub2 并更新了它(grub-update)。我让 Grub2 为我的 Ubuntu 生成自动条目,并将我的 Mandriva 条目放在 /etc/grub.d/40_custom 中。
- 问题是我的 grub 菜单中的默认条目(“ubuntu”)+其他 2 个条目(“linux”,“linux recovery”)始终指向第一的Ubuntu 的内核版本,而不是最新的。
我有 4 个新版本的内核,选择它们后,我可以正常启动。此外,当我在 grub 菜单中选择一个特定的内核版本时,我不会收到“selinuxfs mount failed error”...
我在 /boot 中设置了符号链接(vmlinuz、vmlinuz-dektop 等),使其在重启之前指向最新的内核版本。但是当我在重启后检查时,它们始终指向内核的第一个版本!! 这些菜单项是由 Grub2 使用 grub-update 自动生成的。
- 此外,自动生成的条目(“ubuntu”,“linux”,“linux recovery”)一定有问题,才会导致“mount failed selinuxfs on .../selinux no such file or directory”错误,即使它不会停止启动过程。
那我该怎么办?
以下是 /boot/grub.cfg 的摘录:
默认菜单项“Ubuntu”
menuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-35aa379d-1870-4ef0-add3-ee1f2324257f' { recordfail load_video gfxmode $linux_gfx_mode insmod gzio insmod part_msdos insmod ext2 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' 86e4c77e-6549-478c-9a75-166a21019644 else search --no-floppy --fs-uuid --set=root 86e4c77e-6549-478c-9a75-166a21019644 fi linux /vmlinuz-desktop root=/dev/sda10 ro quiet splash $vt_handoff }
特定内核版本的菜单项
menuentry 'Ubuntu, avec Linux 3.13.0-43-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-3.13.0-43-generic-advanced-35aa379 d-1870-4ef0-add3-ee1f2324257f' { recordfail load_video gfxmode $linux_gfx_mode insmod gzio insmod part_msdos insmod ext2 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' 86e4c77e-6549-478c-9a75-166a21019644 else search --no-floppy --fs-uuid --set=root 86e4c77e-6549-478c-9a75-166a21019644 fi echo 'Chargement de Linux 3.13.0-43-generic…' linux /vmlinuz-3.13.0-43-generic root=UUID=35aa379d-1870-4ef0-add3-ee1f2324257f ro quiet splash $vt_handoff echo 'Chargement du disque mémoire initial…' initrd /initrd.img-3.13.0-43-generic }