原文链接:https://www.lainme.com/doku.php/blog/2017/07/%E5%88%B6%E4%BD%9Cbios%E5%92%8Cefi%E5%A4%9A%E5%90%AF%E5%8A%A8u%E7%9B%98

准备分区

U盘使用的是MBR分区表(GPT应该也行),并分为两个区:

  • 第一分区:FAT32格式,作为引导分区/EFI分区,大小以100MB为宜。
  • 第二分区:EXT4或其他你喜欢的格式,存放ISO和其他文件。

安装引导

启动引导使用GRUB,并假设第一分区是/dev/sdb1。先挂载分区

sudo mount /dev/sdb1 /mnt

然后安装BIOS引导

sudo grub-install --target=i386-pc --boot-directory=/mnt/boot --recheck /dev/sdb

再安装EFI引导

sudo grub-install --target=x86_64-efi --efi-directory=/mnt --boot-directory=/mnt/boot --removable --recheck

配置引导

假设其他文件都存放于第二分区(/dev/sdb2),并包含以下目录/文件

-- slax/
-- images/archlinux.iso
-- images/ubuntu-gnome.iso

则建立/mnt/boot/grub/grub.cfg文件,并写入以下内容

insmod search_fs_uuid
set rootuuid=[第二分区的UUID]
set rootpath=/dev/disk/by-uuid/$rootuuid
search --no-floppy --set=rootpart --fs-uuid $rootuuid insmod vbe
insmod efi_gop
insmod efi_uga
insmod font
if loadfont ${prefix}/fonts/unicode.pf2
then
insmod gfxterm
set gfxmode=auto
set gfxpayload=keep
terminal_output gfxterm
fi menuentry 'Slax' {
set syspath=/slax
set root=$rootpart
linux $syspath/boot/vmlinuz from=$syspath vga=normal load_ramdisk=1 prompt_ramdisk=0 printk.time=0 slax.flags=perch,xmode
initrd $syspath/boot/initrfs.img
} menuentry '[LiveCD] Archlinux' {
set isopath=/images/archlinux.iso
loopback loop ($rootpart)$isopath
linux (loop)/arch/boot/x86_64/vmlinuz archisodevice=/dev/loop0 img_dev=$rootpath img_loop=$isopath
initrd (loop)/arch/boot/x86_64/archiso.img
} menuentry '[LiveCD] Ubuntu (GNOME)' {
set isopath='/images/ubuntu-gnome.iso'
loopback loop ($rootpart)$isopath
linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=$isopath locale=zh_CN.UTF-8
initrd (loop)/casper/initrd.lz
}

其中[第二分区的UUID]可以通过以下命令获取:

sudo blkid /dev/sdb2

自作过程记录:

-- slax/
-- images/opensuse-kde32.iso
-- images/opensuse-kde64.iso
-- images/manjaro-kde32.iso
-- images/manjaro-kde64.iso
-- images/manjaro-xfce64.iso
-- images/ubuntu18.04.3.iso
使用命令:blkid /dev/sdb5 获取分区的UUID:DA18-EBFA, 还有:TYPE="vfat" PARTUUID="969d4ec8-05"
insmod search_fs_uuid
set rootuuid=[DA18-EBFA]
set rootpath=/dev/disk/by-uuid/$rootuuid
search --no-floppy --set=rootpart --fs-uuid $rootuuid

insmod vbe
insmod efi_gop
insmod efi_uga
insmod font
if loadfont ${prefix}/fonts/unicode.pf2
then
insmod gfxterm
set gfxmode=auto
set gfxpayload=keep
terminal_output gfxterm
fi

menuentry 'Slax' {
set syspath=/slax
set root=$rootpart
linux $syspath/boot/vmlinuz from=$syspath vga=normal load_ramdisk=1 prompt_ramdisk=0 printk.time=0 slax.flags=perch,xmode
initrd $syspath/boot/initrfs.img
}

menuentry '[LiveCD] OpenSuseKde32' {
set isopath=/images/opensuse-kde32.iso
loopback loop ($rootpart)$isopath
linux (loop)/arch/boot/x86_64/vmlinuz archisodevice=/dev/loop0 img_dev=$rootpath img_loop=$isopath
initrd (loop)/arch/boot/x86_64/archiso.img
}

menuentry '[LiveCD] OpenSuseKde64' {
set isopath=/images/opensuse-kde64.iso
loopback loop ($rootpart)$isopath
linux (loop)/arch/boot/x86_64/vmlinuz archisodevice=/dev/loop0 img_dev=$rootpath img_loop=$isopath
initrd (loop)/arch/boot/x86_64/archiso.img
}

menuentry '[LiveCD] Ubuntu (GNOME)' {
set isopath='/images/ubuntu-gnome.iso'
loopback loop ($rootpart)$isopath
linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=$isopath locale=zh_CN.UTF-8
initrd (loop)/casper/initrd.lz
}

最新文章

  1. Scrapy创建zentao爬虫
  2. Twitter-Snowflake,64位自增ID算法详解
  3. WMSYS.WM_CONCAT(distinct(字段名)) 函数,字符串拼接函数。合并列
  4. Linux挂载磁盘
  5. [BTS] Faulting application name: BTSNTSvc.exe, version: 3.9.469.0, time stamp: 0x4c547e09
  6. eclipse常用的字体
  7. Python 最佳实践
  8. VS2012 的MVC4实例
  9. jQuery EasyUI的使用入门
  10. Bootstrap3 表单-被支持的控件:输入框
  11. postman的安装和使用
  12. linux安装Subversion版本控制工具(Subversion + Apache + jsvnadmin)
  13. UDAF(用户自定义聚合函数)求众数
  14. private static final Logger logger= LoggerFactory.getLogger(WhMainBusi.class);
  15. 【Linux学习一】命令查看与帮助
  16. 码代码的小女孩(来自noip贴吧)
  17. Debug模式下,测试app后缀名“-测试”
  18. csp刷题
  19. [转]启动Tomcat提示:指定的服务未安装
  20. Android 5.0 + IDA 6.8 调试经验分享

热门文章

  1. 利用WkHtmlToPdf,把H5 转成PDF
  2. js入门之内置数组对象 Array
  3. MM-发票校验与收货的差异处理
  4. Mac 下 visual studio code 编辑器 设置为中文
  5. Vue指令之`v-model`和`双向数据绑定
  6. javascript_06-控制流程
  7. testlink关联redmine设置
  8. python高并发的详解
  9. 科大讯飞语音识别Demo创建
  10. java基础(3)---Scanner键盘输入