systemrescuecd 中的 grub 配置从 5 升级到 6

systemrescuecd 中的 grub 配置从 5 升级到 6

我有一个与 SystemRescueCd v5 配合使用的配置,如下所示:

menuentry 'System Rescue Cd' {
  set isofile='/systemrescuecd.iso'
  loopback loop (hd3,gpt2)$isofile
  linux (loop)/isolinux/rescue64 isoloop=$isofile nouveau.blacklist=1 nomodeset
  initrd (loop)/isolinux/initram.igz
}

现在,根据最新版本,内容如下:
http://www.system-rescue-cd.org/manual/Installing_SystemRescueCd_on_the_disk/

看起来像这样:

menuentry "SystemRescueCd (isoloop)" {
    load_video
    insmod gzio
    insmod part_gpt
    insmod part_msdos
    insmod ext2
    search --no-floppy --label boot --set=root
    loopback loop /systemrescuecd.iso
    echo   'Loading kernel ...'
    linux  (loop)/sysresccd/boot/x86_64/vmlinuz img_label=boot img_loop=/systemrescuecd.iso archisobasedir=sysresccd copytoram setkmap=us
    echo   'Loading initramfs ...'
    initrd (loop)/sysresccd/boot/x86_64/sysresccd.img
}

鉴于现在我在另一个驱动器上使用 ISO,尝试将其升级为:

menuentry "SystemRescueCd (isoloop)" {
    load_video
    insmod gzio
    insmod part_gpt
    insmod part_msdos
    insmod ext2
#    search --no-floppy --label boot --set=root
#    loopback loop /systemrescuecd.iso
set isofile='/systemrescuecd.iso'
loopback loop (hd3,gpt2)$isofile
    echo   'Loading kernel ...'
    linux  (loop)/sysresccd/boot/x86_64/vmlinuz img_label=boot img_loop=/systemrescuecd.iso archisobasedir=sysresccd copytoram setkmap=us
    echo   'Loading initramfs ...'
    initrd (loop)/sysresccd/boot/x86_64/sysresccd.img
}

它随启动而启动,但随后抛出此错误:
Waiting 30 seconds for device /dev/disk/by-label/boot

你知道这可能是什么吗?
我只是尝试使用来自不同驱动器的启动 SystemRescueCd,但其余的都是一样的……

答案1

我找到了一个适合我的菜单,所以我将其粘贴到这里并写下一些评论(:

default=0
timeout=13

set gfxmode=auto
set gfxpayload=keep
insmod part_msdos
insmod part_gpt
insmod efi_gop
insmod efi_uga
insmod font
insmod gfxterm
insmod video
insmod videotest
terminal_output gfxterm
loadfont /grub/fonts/unicode.pf2

menuentry "Apagar" {
    halt
}

menu "SystemRescueCD 6.0.3 [64 Bits]" {
    set uuid="..."
    search --no-floppy --fs-uuid --set=root $uuid
    set iso="systemrescuecd-6.0.3.iso"
    loopback loop /$iso
    linux (loop)/sysresccd/boot/x86_64/vmlinuz scandelay=1 setkmap=es copytoram dostartx archisobasedir=sysresccd img_label=... img_loop=/$iso
    initrd (loop)/sysresccd/boot/intel_ucode.img (loop)/sysresccd/boot/amd_ucode.img (loop)/sysresccd/boot/x86_64/sysresccd.img
}

在带有 的行上set uuid="...",而不是...,输入 ISO 所在分区的 UUID,它将被用作 root。

在参数 上img_label=...,而不是...,输入 ISO 所在分区的标签,它将在 losetup 之前被挂载,因此可以找到 ISO 文件。

这对我来说是个窍门,将我的 ISO 文件的“其他”分区的标签放在其中,而不是安装了 Grub2 的分区的标签。

希望这对您和其他人有所帮助。

注 1:我必须深入尝试 SystemRescueCD 的其他版本,但我认为如果它适用于最新的 6.0.3,那么它就一定适用于 6.0.3 之前的任何 6.x(但我没有测试过)。

注意2:根本dostartx不起作用,我必须startx每次都打字,但是copytoramsetkmap=es(西班牙语键盘)可以工作。

答案2

menuentry "System Rescue CD" {
    set gfxmode=auto
    set gfxpayload=keep
    insmod part_msdos
    insmod part_gpt
    insmod efi_gop
    insmod efi_uga
    insmod font
    insmod gfxterm
    insmod video
    insmod videotest
    terminal_output gfxterm
    set uuid="#UUID"
    search --no-floppy --fs-uuid --set=root $uuid
    set iso="systemrescuecd-6.0.3.iso"
    loopback loop /$iso
    linux (loop)/sysresccd/boot/x86_64/vmlinuz scandelay=1 copytoram doxdetect archisobasedir=sysresccd img_label=#LABEL img_loop=/$iso
    initrd (loop)/sysresccd/boot/intel_ucode.img (loop)/sysresccd/boot/amd_ucode.img (loop)/sysresccd/boot/x86_64/sysresccd.img
}

这是基于上述解决方案的,它可以工作,但是 X.org 失败了并且它正在设置英文键盘映射,所以我删除了它并添加了它doxdetect以便在任何 vga 驱动程序上工作。

你看到了 #UUID 和 #LABEL,你可以从中获取分区blkid

然后它与startx一起工作

相关内容