使用哪个 ISO 文件、vmlinuz 和 initrd.gz 从多重启动 USB 安装 CentOS?

使用哪个 ISO 文件、vmlinuz 和 initrd.gz 从多重启动 USB 安装 CentOS?

我使用 GRUB 创建了一个多重引导的可引导 USB,并用它成功安装了 Debian 8.1。多重引导 USB 是一种包含多个操作系统的 ISO 映像的 USB,使用 GRUB 来选择引导哪一个。

对于 Debian,它是一个关键:

  1. Debian 8.1 ISO 应该是混合型的。我从下载的
    http://ftp.nl.debian.org/debian-cd/8.1.0-live/amd64/bt-hybrid/

  2. vmlinuz文件initrd.gz应该是hd-median用于 debian-installer。我从下载它们 http://ftp.nl.debian.org/debian/dists/jessie/main/installer-i386/current/images/hd-media/

grub.cfg安装 Debian 8.1 的文件是:

menuentry 'to install Debian 8.1 from usb' {
    insmod part_msdos
    insmod ext2
    set isofile="(hd0)/debian-8.1/debian-8.1-hybrid.iso"
    loopback loop $isofile
    linux (hd0)/debian-8.1/vmlinuz
    initrd (hd0)/debian-8.1/initrd.gz
 }

现在,我想将 CentOS 7 添加到同一个 USB 驱动器,并能够从 GRUB 菜单启动它。 CentOS ISO 共有三种:

  1. DVD光盘
  2. 一切ISO
  3. 最小ISO

CentOS 没有像 Debian 那样的混合 ISO。我应该使用哪种 ISO 文件和vmlinuz,initrd.gz文件从 USB 安装 CentOS?我应该如何配置 GRUB 来引导 CentOS 7 ISO?

我已经测试过:

  1. 我下载了CentOS-7-x86_64-LiveCD-1503.iso
  2. 我安装了 ISO 并vmlinuz0initrd0.img目录中isolinux复制
  3. 我创建了一个grub.cfg条目,如下所示:

    menuentry 'to install centos7.1 from usb' {
        insmod part_msdos
        insmod ext2
        insmod ntfs
        set isofile="(hd0,0)/centos-7.1/CentOS-7-x86_64-LiveCD-1503.iso"
        loopback loop $isofile
        linux (hd0,0)/centos-7.1/vmlinuz0    
        initrd (hd0,0)/centos-7.1/initrd0.img
    }
    

我收到以下错误:

我使用的 USB HDD 的目录结构如下:

├── boot
│   └── grub
│       ├── fonts
│       │   └── unicode.pf2
│       ├── grub.cfg
│       ├── grubenv
│       ├── i386-pc
│       │   ├── 915resolution.mod
│       │   └── zfs.mod
│       └── locale
│           ├── ast.mo
│           ├── ca.mo
│           ├── da.mo
│           ├── vi.mo
│           ├── zh_CN.mo
│           └── zh_TW.mo
├── centos-7.1
│   ├── CentOS-7-x86_64-LiveCD-1503.iso
│   ├── initrd0.img
│   └── vmlinuz0
├── debian-8.1
│   ├── debian-8.1-hybrid.iso
│   ├── initrd.gz
│   └── vmlinuz

为了简单起见,删除了许多子目录。

答案1

当您引用 vmlinuz 文件的位置时,您是从 ISO 的根目录引用的,因此您的 centos-7.1 目录是错误的。

要从已标记为 Live CD 的官方 ISO 启动,您必须进行一些修改。

首先要确定 vmlinuz 和 initrd 是什么,我将挂载 iso 映像,并找到 vmlinuz 和 initrd 所在的目录。这是你必须在 (hd0,0) 之后写入 grub.cfg 的目录(顺便说一句,它应该是环形,而不是 (hd0,0)) 替换 centos-7.1 我还会检查其配置脚本以查看是否需要某些选项并添加这些选项。

无论如何,你有一个向导这里

答案2

CentOS 维基有一个指导从 USB 安装,涵盖 6.5 及更高版本(包括 7.x)。您尝试过这些步骤吗?

基本上,它涉及将 ISO 映像写入 USB 驱动器并从中启动。所以,像这样:

dd if=CentOS-7-x86_64-DVD-1503-01.iso of=/dev/sdb

你的闪存驱动器在哪里/dev/sdb

这与您的 Debian 示例略有不同,但您没有指定从 GRUB 引导 ISO 只是“从 USB”的要求。如果是这样的话@YoMismo's回答有所需的信息。

答案3

在我的情况下,grub.cfg 的正确格式应该如下:

menuentry "to install  CentOS-7.0-1406-x86_64-DVD" {
    insmod part_msdos
    insmod ext2
    insmod ntfs
    set isofile='(hd0)/centos-7.1/CentOS-7-x86_64-DVD-1503-01.iso'
    loopback loop $isofile
    linux (loop)/isolinux/vmlinuz noeject inst.stage2=hd:/dev/sdb:/centos-7.1/CentOS-7-x86_64-DVD-1503-01.iso
    initrd (loop)/isolinux/initrd.img
}

相关内容