grub2 设置启动引导 Fedora 21 Workstation Live iso

时间:2023-01-19 07:06:59

通过grub2引导iso文件的方式,不需要刻录光碟,直接引导硬盘或U盘中的iso文件。本文介绍U盘引导 Fedora-Live-Workstation-x86_64-21-5.iso的grub2设置及方法。该方法同样适合于从引导硬盘中的 iso 文件,只需要将 uuid 的值修改为对应的值便可。

Fedora-Live-Workstation-x86_64-21-5.iso是最新一版的 Fedora系统正式发行版。朋友们可以到各大开源镜像站去下载此文件。该文件提供了一个 Fedora 21 版的 Live iso。也就是说,引导了该文件,便启动了 Fedora 21 系统。

一、U盘引导

一.1、U盘安装 grub2 (已经在U盘安装了 grub2 的可以跳过这个步骤)

将grub2安装到U盘,需要首先确保第一分区的起点在2048。

$ sudo fdisk -l

Disk /dev/sdb: 3.7 GiB, 3974103040 bytes, 7761920 sectors
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xccd4ebea

设备 启动 起点 末尾 块 标识 系统
/dev/sdb1 * 2048 7761919 3879936 c W95 FAT32 (LBA)


这个U盘只有一个分区,且起点在2048,并且带有启动标志(即分区已被激活),符合要求。可以在该U盘上安装grub2。如果不符合要求,请使用 fdisk 重新分区。这里不讲分区及激活的方法。

安装的方法是:

Fedora Centos 等

$ sudo grub2-install --no-floppy --root-directory=/run/media/user/mutiboot /dev/sdb

Archlinux Debian Ubuntu 等

$ sudo grub-install --no-floppy --root-directory=/run/media/user/mutiboot /dev/sdb

这里/run/media/user/mutiboot是u盘的挂载点,/dev/sdb是u盘设备,这两处需要根据实际情况修改。安装成功会显示成功的信息,并且在u盘中会有/boot/grub2(或/boot/grub)目录。

一、2、设置引导

将 Fedora-Live-Workstation-x86_64-21-5.iso 复制到U盘根目录。编辑修改 grub.cfg 文件如下(以Fedora为例):

#引导菜单显示的时间
set timeout=5
#分区格式,这里是fat32格式,如果是ext4格式设置为ext2,如果是其它格式请设置为对应的格式
insmod fat
#默认启动菜单项
set default=0
loadfont /boot/grub2/fonts/unicode.pf2
#启动分辨率
set gfxmode=1024x768
set gfxpayload=keep
insmod gfxterm
insmod vbe
insmod loopback
insmod iso9660
terminal_output gfxterm
insmod jpeg
#grub2背景图片,根据你的需要修改
background_image /boot/W0201407.jpg
setmenu_color_normal=white/black
setmenu_color_highlight=black/light-gray
set USBUUID="CE23-8646"
menuentry "Fedora 21 Live Workstation (64 bit)" {
set isoname="Fedora-Live-Workstation-x86_64-21-5"
set isofile="/${isoname}.iso"
search --no-floppy --fs-uuid --set=root ${USBUUID}
loopback loop $isofile
linux (loop)/isolinux/vmlinuz0 iso-scan/filename=${isofile} root=live:CDLABEL=Fedora-Live-WS-x86_64-21-5 rootfstype=auto ro rd.live.image quiet rhgb rd.luks=0 rd.md=0 rd.dm=0
initrd (loop)/isolinux/initrd0.img
}
menuentry "启动第一存储器主引导记录 " {
set root=(hd0)
chainloader +1
}
menuentry "启动第二存储器主引导记录 " {
set root=(hd1)
chainloader +1
}
menuentry "重启"{
reboot
}
menuentry "关机"{
halt
}

注:set USBUUID="" 项需要根据实际值修改,查看该值的方法是命令:ls -l /dev/disk/by-uuid/

二、硬盘引导

grub2 的硬盘引导设置,通过修改 /etc/grub.d/40_custom 然后运行 grub2-mkconfig ( grub-mkconfig )来配置(需要管理员权限)。

二、1、修改 40_custom 文件

将THEUUID的值设置为存放 iso 文件的分区的正确 uuid。下面是其中一个能够正确引导的例子,该例以 iso 文件放置在分区的 iso 子文件夹为例(注意对应的分区格式):

insmod ext2
insmod loopback
insmod iso9660
set THEUUID="4815cd78-fd9f-488f-8ee9-225e305ffb18"

menuentry "Fedora 21 Live Workstation (64 bit)" {
set isoname="Fedora-Live-Workstation-x86_64-21-5"
set isofile="/iso/${isoname}.iso"
search --no-floppy --fs-uuid --set=root ${THEUUID}
loopback loop /$isofile
linux (loop)/isolinux/vmlinuz0 iso-scan/filename=${isofile} root=live:CDLABEL=Fedora-Live-WS-x86_64-21-5 rootfstype=auto ro rd.live.image quiet rhgb rd.luks=0 rd.md=0 rd.dm=0
initrd (loop)/isolinux/initrd0.img
}

二、2、运行 grub2-mkconfig

Fedora Centos 等

sudo grub2-mkconfig -o /boot/grub2/grub.cfg

Archlinux Debian Ubuntu 等

sudo grub-mkconfig -o /boot/grub/grub.cfg