a469660742 2014-03-20 07:23 采纳率: 0%
浏览 1105

红帽如何加载磁盘镜像启动系统

grub2 支持加载磁盘镜像,于是我打算将红帽根分区的镜像打包然后用grub2 去启动。但是不知道启动参数改怎么写

我模仿ubuntu wubi的做法这样写

menuentry "--------redhat_disk-------" {
insmod ext2
insmod ext3
set root='(hd0,msdos1)'
loopback loop0 /redhat.img
set root=(loop0)
linux (loop0)/boot/vmlinuz-2.6.32-131.0.15.el6.x86_64 root=/dev/sda1 loop=/redhat.img ro

initrd (loop0)/boot/initramfs-2.6.32-131.0.15.el6.x86_64.img
boot
}
​但是红帽会将/dev/sda1 当做根分区,导致启动失败

后来改成

menuentry "--------redhat_disk-------" {
insmod ext2
insmod ext3
set root='(hd0,msdos1)'
loopback loop0 /redhat.img
set root=(loop0)
linux (loop0)/boot/vmlinuz-2.6.32-131.0.15.el6.x86_64 root=/dev/loop0 ro

initrd (loop0)/boot/initramfs-2.6.32-131.0.15.el6.x86_64.img
boot
}

​还是无法启动。请问要怎么写,内核才能失败磁盘镜像呢?

求各位指点!

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-01 21:26
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    在Red Hat Linux中,你可以使用--drive选项来指定磁盘映像作为启动设备。以下是一个示例脚本:

    #!/bin/bash
    
    # 定义启动参数
    GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
    
    # 指定磁盘映像文件路径
    IMAGE_FILE="/path/to/your/image.iso"
    
    # 使用mount命令挂载磁盘映像
    sudo mount -o loop "$IMAGE_FILE" /mnt/image
    
    # 使用mount命令挂载根分区
    sudo mount /dev/sda1 /mnt/root
    
    # 将当前工作目录重定向到/boot目录
    cd /mnt/root
    
    # 创建一个新菜单项
    echo "
    menuentry 'redhat_disk' {
        --drive /mnt/image
        --append \"GRUB_CMDLINE_LINUX=\"$GRUB_CMDLINE_LINUX_DEFAULT\" 
        --load
    }" > menu.lst
    
    # 使用mount命令挂载根分区并运行 grub-install
    sudo mount /dev/sda1 /mnt/root
    
    # 使用grub2-mkconfig命令生成配置文件
    grub2-mkconfig -o /boot/grub/grub.cfg
    
    # 在终端执行 `grub2-mkconfig -o /boot/grub/grub.cfg`
    sudo grub2-mkconfig -o /boot/grub/grub.cfg
    
    # 运行 grub-install
    sudo grub-install --target=x86_64-efi --bootloader-id=GRUB --recheck
    
    # 使用 mount 命令挂载根分区
    sudo mount /dev/sda1 /mnt/root
    
    # 更新 grub 配置文件
    sudo grub-set-default /boot/grub2/menu.lst
    
    # 使用 mount 命令挂载根分区并运行 init
    sudo mount /dev/sda1 /mnt/root
    
    sudo /mnt/root/init
    
    # 关闭虚拟机
    exit
    

    在这个脚本中,我们首先定义了启动参数和磁盘映像文件路径。然后,我们使用mount命令挂载磁盘映像,并将根分区挂载到 /mnt/root 目录下。

    接下来,我们将当前工作目录重定向到 /mnt/root 目录下的 boot 目录,以便我们可以创建一个新的菜单项。我们还创建了一个新的菜单项,并指定了 GRUB_CMDLINE_LINUX 参数。

    然后,我们使用grub2-mkconfig命令生成配置文件,并将其写入 /boot/grub/grub.cfg 文件中。

    最后,我们使用grub-install命令安装 GRUB 系统引导程序,同时指定了目标硬件(在这种情况下是 x86_64-efi)和 ID。

    之后,我们更新 grub 配置文件,并设置默认启动设备为 /boot/grub2/menu.lst

    最后,我们使用mount命令挂载根分区,并运行 init 命令以启动系统。

    评论

报告相同问题?