在U盘上安装Grub,并引导iso镜像

在U盘上安装Grub2并添加引导

用lsblk -f命令来察看磁盘分区(同时可以得到磁盘的UUID,之后会用到):
$ lsblk -f
NAME   FSTYPE LABEL UUID                                 MOUNTPOINT
sda                                                      
├─sda1 vfat         9382-DA94                            /boot/efi
├─sda2 swap         103456e6-b2de-4201-ba36-06105230948a [SWAP]

├─sda3 ext4         8b65c03b-e92e-4274-a280-857b0c4f54b3 /

├─sda4 ext4         ed12ec55-204b-47e6-bb55-cbf0d69fa824 /home
├─sda5                                                   
└─sda6 ntfs   OS    021AAF501AAF4011                     
sdb                                                      
└─sdb1 vfat         5BB5-0BFB                            
sr0                                                      

这里的U盘是sdb,只有一个分区sdb1。创建一个文件夹,把要用来存储Grub相关文件的U盘分区挂载到此文件夹上
如:# mount /dev/sdb1 /home/user/usb

安装Grub2,如:# grub--install --force --no-floppy --root-directory=/home/user/usb /dev/sdb (注意这里的参数是U盘,而不是分区)

安装完成之后U盘上已经有了Grub相关的文件,如:

$ tree usb/
usb/
├── archlinux-dual.iso
├── boot
│   └── grub
│       ├── fonts
│       │   └── unicode.pf2
│       ├── grub.cfg
│       ├── grubenv
│       ├── i386-pc
│       │   ├── 915resolution.mod
│       │   ├── zfsinfo.mod
│       │   └── ...
│       ├── locale
│       │   ├── ast.mo
│       │   ├── zh_CN.mo
│       │   └── ...
│       ├── themes
│       │   └── starfield
│       │       ├── blob_w.png│       │       ├── terminal_box_w.png
│       │       └── ...
│       └── x86_64-efi
│           ├── acpi.mod
│           ├── affs.mod
│           └── ...
└── EFI
    └── arch
        └── grubx64.efi

现在将grub的配置文件复制到U盘的对应目录中,$ "cp /boot/grub/grub.cfg /home/user/usb/boot/grub/grub.cfg"

备份grub的配置文件(这一步可以不进行,不会影响启动U盘的制作):
# mkdir -p /home/user/usb/etc/default
# cp /etc/default/grub /home/user/usb/etc/default
# cp -a /etc/grub.d /home/user/usb/etc

为U盘上的grub添加启动菜单,这里以引导Arch的镜像文件为例:
menuentry "Archlinux-x86_64.iso" --class iso {
        set isofile="/archlinux-2013.04.01-dual.iso"
        loopback loop (hd0,1)$isofile
        linux (loop)/arch/boot/x86_64/vmlinuz archisolabel=Your_label img_dev=/dev/disk/by-uuid/5BB5-0BFB img_loop=$isofile earlymodules=loop
        initrd (loop)/arch/boot/x86_64/archiso.img
}

代码很简单,这里的UUID就是上面得到的U盘存储grub相关文件的分区的UUID
当然也可以参考grub的相关文档自己添加启动项


本文根据Arch Wiki的Grub页面(https://wiki.archlinux.org/index.php/GRUB_%28%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87%29)和此地址(https://blog.icehoney.me/posts/2013-04-25-grub2-boot-from-iso)的文章整理

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值