原文链接: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
}

手动制作BIOS和EFI多启动U盘的更多相关文章

  1. 如何在linux下制作一个windows的可启动u盘?

    如何在linux下制作一个windows的可启动u盘? 情景是这样的,有一个windows10的iso,现在想通过U盘安装,要求即支持UEFI(启动引导器),又支持Legacy(启动引导器),因为有一 ...

  2. 制作Windows Server 2008安装启动U盘

    昨天刚下了Windows server 2008因为没有刻录机,所以我就用2G U盘把Windows server 2008光盘镜像做成U盘安装效果和光盘安装一样. 下面就是制作方法: UltraIS ...

  3. 制作MACOSX 10.9Mavericks安装启动U盘教程

    苹果OS X Mavericks发布了,不少朋友又开始制作系统安装U盘了.其实下面介绍的方法与之前介绍的方法可能有些不同,不过原理还是一样的.下面看看具体的操作步骤吧! 1. 首先你需要开启显示隐藏文 ...

  4. Windows 7 封装篇(一)【母盘定制】[手动制作]定制合适的系统母盘

    Windows 7 封装篇(一)[母盘定制][手动制作]定制合适的系统母盘 http://www.win10u.com/article/html/10.html Windows 7 封装篇(一)[母盘 ...

  5. 微软Windows 7 “可启动U盘”制作工具及使用方法,非常的简单

    目前,用“可启动U盘”替代光驱光盘安装操作系统,已经成为一种时尚(至少对没有刻录机或不愿购买光碟的群体是这样).制作“可启动U盘”的方法和工具很多,区别无非是制作的难易程度和对“U盘类型”的支持程度. ...

  6. 对“传统BIOS”与“EFI/UEFI BIOS”的基本认识

    硬盘(MBR磁盘)分区基本认识+Windows启动原理 大家常会看到硬盘分区中这样的几种说法:系统分区.启动分区.活动分区.主分区.拓展分区.逻辑分区,MBR.PBR.DPT.主引导扇区等.尤其是看到 ...

  7. CentOS 7系统上制作Clonezilla(再生龙)启动U盘并克隆双系统

    笔记本安装的是双系统:Win7 64位,CentOS 7 64位. 政采就是个巨大的坑,笔记本标配的是5400转的机械硬盘,开机时间常常要一至两分钟,软件运行起来时各种数据的读写也非常慢,忍无可忍,决 ...

  8. WinPE启动U盘的制作方法与软件下载(通用PE工具箱/老毛桃/大白菜WinPE)

    转自:http://blog.sina.com.cn/s/blog_58c380370100cp5x.html 文件大小:39.5M(支持Win7安装,早期的通用PE工具箱,小巧不过几十兆,现在都臃肿 ...

  9. 谁说NTFS不支持UEFI启动的?启动U盘放不了超过4G的文件怎么办?Server2016 Win10 U盘UEFI启动制作方法

    大家都知道,我们平时做启动盘,用得最多的就是UltraISO(软碟通)这个工具了.用它我们可以很简单快速的把一个空白的普通U盘制作成一个PE启动U盘或系统U盘,然后用它来安装系统非常的方便,受到了广大 ...

随机推荐

  1. 【转载】 C#中使用Count方法获取List集合中符合条件的个数

    很多时候操作List集合的过程中,我们需要根据特定的查询条件,获取List集合中有多少个实体对象符合查询条件,例如一批产品的对象List集合,如果这批产品的不合格数量大于10则重点备注.在C#中可以自 ...

  2. 易优cms后台RCE以及任意文件上传漏洞

    前言 EyouCms是基于TP5.0框架为核心开发的免费+开源的企业内容管理系统,专注企业建站用户需求提供海量各行业模板,降低中小企业网站建设.网络营销成本,致力于打造用户舒适的建站体验.易优cms ...

  3. OpenStack kilo版(6) 启动第一台虚拟机

    创建网络 提供者为external,类型为flat,网络名称为public,: root@controller:~# neutron net-create --shared --provider:ph ...

  4. Python——getpass(密码不显示)

    为了用户输入密码时,不被其他人员看到,可以使用getpass模块来将密码以不显示的形式来表达. import getpass pwd = getpass.getpass() #在PyCharm中,运行 ...

  5. extern "C" 分析 -转

    1.引言 C++语言的创建初衷是“a better C”,但是这并不意味着C++中类似C语言的全局变量和函数所采用的编译和连接方式与C语言完全相同.作为一种欲与C兼容的语言,C++保留了一部分过程式语 ...

  6. KVM虚拟化——简介

    KVM 基于内核的虚拟机KVM(Kernel-Based Virtual Machine)是2007年问世的开源虚拟化解决方案.KVM需要两个条件: ①硬件支持全虚拟化 ②操作系统为Linux KVM ...

  7. DNS服务——域名解析容错

    介绍 DNS服务至关重要,你我每天访问网站不可能是记忆IP地址.因此DNS服务器的可靠性至关重要.下面介绍DNS服务器容错机制,看图 为了防止DNS服务器故障不再提供服务,引入辅助DNS服务器.辅助D ...

  8. sql index改怎么建

    https://stackoverflow.com/questions/11299217/how-can-i-optimize-this-sql-query-using-indexes ------- ...

  9. require sqlite3时报The specified module could not be found.错误

    http://dependencywalker.com/ 在这个站点下载对应平台的Dependency Walker,打开你自己编译好的.node文件(sqlite3\lib\binding\node ...

  10. SQL:分区拾忆

    1.文件组与文件 数据库属性——可以先添加多个文件组(抽象分割) 单个文件组可以有多文件(物理上的分割),可以添加文件然后指定文件组 例如: 2.分区函数 语法: CREATE PARTITION F ...