Grub2 14.04 版本后备...需要操作方法

Grub2 14.04 版本后备...需要操作方法
  • Ubuntu 服务器 14.04 efi-gpt 磁盘有三个分区,1=启动,2=主,3=恢复
  • 我想:默认在 gpt2 上启动,grub 回退到 gpt3,然后 grub-reboot 从主目录重新启动进入恢复。

  • 我得到了什么根本无法启动,只是立即重启循环。

GNU 文档让我有点困惑。我需要能够对 40_custom 文件和 /etc/default/grub 进行所有更改,以使其可重复且稳定。

以下是一些链接: http://www.gnu.org/software/grub/manual/grub.html#Simple-configuration https://www.gnu.org/software/grub/manual/legacy/Booting-fallback-systems.html “wiki.ubuntuusers.de/GRUB_2/Skripte/#Fallback-Skript”

这是/etc/default/grub:

# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.
# For full documentation of the options in this file, see:
#   info -f grub -n 'Simple configuration'

GRUB_DEFAULT=0
#GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR=""
GRUB_CMDLINE_LINUX_DEFAULT=""
GRUB_CMDLINE_LINUX=""

# fallback addition
export GRUB_FALLBACK="1 2"
GRUB_DEFAULT=saved
GRUB_SAVEDEFAULT=true



# Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel that obtains
# the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)
#GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"

# Uncomment to disable graphical terminal (grub-pc only)
#GRUB_TERMINAL=console

# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
#GRUB_GFXMODE=640x480

# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
GRUB_DISABLE_LINUX_UUID=true

# Uncomment to disable generation of recovery mode menu entries
GRUB_DISABLE_RECOVERY="true"

# Uncomment to get a beep at grub start
#GRUB_INIT_TUNE="480 440 1

以下是 grub.cfg 的相关部分:

## BEGIN /etc/grub.d/40_custom ###
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.


menuentry 'ITH Robot Base Main (on /dev/sda2)' {
        recordfail
        load_video
        gfxmode $linux_gfx_mode
        insmod gzio
        insmod part_gpt
        insmod ext2
        set root='hd0,gpt2'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt2 --hint-efi=hd0,gpt2 --hint-baremetal=ahci0,gpt2  208a7546-da6b-4d07-82ab-0f04e8db6fd0
        else
          search --no-floppy --fs-uuid --set=root 208a7546-da6b-4d07-82ab-0f04e8db6fd0
        fi
        linux   /boot/vmlinuz  
        initrd  /boot/initrd.img
        savedefault fallback
}



menuentry 'ITH Robot Base Recovery(on /dev/sda3)' {
        insmod part_gpt
        insmod ext2
        set root='hd0,gpt3'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt3 --hint-efi=hd0,gpt3 --hint-baremetal=ahci0,gpt3  89ad84a4-3fe5-4409-a702-96ae698872d2
        else
          search --no-floppy --fs-uuid --set=root 89ad84a4-3fe5-4409-a702-96ae698872d2
        fi
        linux /boot/vmlinuz
        initrd /boot/initrd.img
        savedefault fallback
}
### END /etc/grub.d/40_custom ###

答案1

我通过确保我的磁盘设置为 EFI/GPT(不是必需的,但如果没有正确设置,在我已经感到困惑的情况下就无法按照说明操作)、使用 gparted(或 parted)创建启动 EFI 分区以及编辑正确的文件解决了这些问题。以下指南可能会有所帮助:

  • 为了正确获取磁盘,请使用 gparted 创建 GPT 磁盘表,然后创建一个较小的 Fat32 分区,将标志设置为“启动”并设置一个挂载点/boot/efi。(挂载点是常规的,但我建议遵循惯例)。
  • 根据需要添加其他分区,但根分区不会像平常一样具有启动标志。
  • 安装 Ubuntu 后,你会发现 Grub 已经为启动菜单设置了它能找到的所有分区。你可能不想要这个,或者你可能有自定义设置。
  • 检查 /etc/fstab 以确保 /boot/efi mount 命令存在,并检查文件系统以确保存在 /boot/efi 挂载点。
  • 建议:在运行 update-grub 之前,请备份、,/boot/grub并准备好可启动的闪存驱动器或某种方法来挂载新的分区,以便在更改无法启动时可以修复它们。/etc/default/grub/etc/grub.d
  • 您只需要在 中更改几件事/etc/default/grub,大部分更改都应该在 中,/etc/grub.d/40_custom另外根据需要对 10* 20* 30* 脚本进行 chmodding 以防止它们执行操作。
  • 您可以将菜单节从中剪切并粘贴/boot/grub/grub.cfg40_custom
  • 注意 Grub(可能是 EFI?) 从零(hd0) 开始计数磁盘,从一开始计数分区。
  • 运行 update-grub 来创建 grub.cfg 文件
  • 你不需要对 Fat32 启动分区做任何事情
  • 注意:我在具有两个可启动闪存驱动器和一个 HD 的系统上遇到了问题,HD 使用闪存驱动器上的启动 EFI 分区,而不是其自身上的。这都是因为连接了无关的驱动器 - 尝试断开您不想更改的任何内容。
  • 注意:如果您正在保存和恢复多个驱动器,则必须使用 tune2fs 重置 UUID,否则会发生冲突。

相关内容