我想用刻录软件在一个U盘或移动硬盘里不同的分区刻录不同版本的Linux系统ISO镜像 进入BIOS设置是如何才能

我想用刻录软件在一个U盘或移动硬盘里不同的分区刻录不同版本的Linux系统ISO镜像 进入BIOS设置是如何才能,第1张

如何创建有多个 Linux 发行版的可启动 USB

我们有一个工具正好可以做到在单个 U 盘上保留多个 Linux 发行版。你所需要做的只是选择要安装的发行版。在本教程中,我们将介绍如何在 U 盘中安装多个 Linux 发行版用于现场会话live session。

要确保你有一个足够大的 U 盘,以便在它上面安装多个 Linux 发行版,一个 8 GB 的 U 盘应该足够用于三四个 Linux 发行版。

步骤 1

MultiBootUSB 是一个自由、开源的跨平台应用程序,允许你创建具有多个 Linux 发行版的 U 盘。它还支持在任何时候卸载任何发行版,以便你回收驱动器上的空间用于另一个发行版。

下载 .deb 包并双击安装。

下载 MultiBootUSB

步骤 2

推荐的文件系统是 FAT32,因此在创建多引导 U 盘之前,请确保格式化 U 盘。

步骤 3

下载要安装的 Linux 发行版的 ISO 镜像。

步骤 4

完成这些后,启动 MultiBootUSB。

MultiBootUSB

主屏幕要求你选择 U 盘和你打算放到 U 盘上的 Linux 发行版镜像文件。

MultiBootUSB 支持 Ubuntu、Fedora 和 Debian 发行版的持久化,这意味着对 Linux 发行版的现场版本所做的更改将保存到 USB 上。

你可以通过拖动 MultiBootUSB 选项卡下的滑块来选择持久化大小。持久化为你提供了在运行时将更改保存到 U 盘的选项。

MultiBootUSB persistence storage

步骤 5

单击“安装发行版”选项并继续安装。在显示成功的安装消息之前,需要一些时间才能完成。

你现在可以在已安装部分中看到发行版了。对于另外的 *** 作系统,重复该过程。这是我安装 Ubuntu 16.10 和 Fedora 24 后的样子。

MultiBootSystem with Ubuntu and Fedora

步骤 6

下次通过 USB 启动时,我可以选择任何一个发行版。

Boot Menu

只要你的 U 盘允许,你可以添加任意数量的发行版。要删除发行版,请从列表中选择它,然后单击卸载发行版。

最后的话

MultiBootUSB 真的很便于在 U 盘上安装多个 Linux 发行版。只需点击几下,我就有两个我最喜欢的 *** 作系统的工作盘了,我可以在任何系统上启动它们。

电脑有两个硬盘,且不安装双系统的情况下建议拆下一块硬盘装入硬盘盒或使用‘易驱线’把拆下硬盘作为活动硬盘使用,十分方便。而留下的是一块适宜做系统的硬盘,至于它的分区在做系统时使用系统工具直接按照不同分区方案安装系统选择即可。

硬盘则可以随时挂在任意电脑USB接口,使用系统的‘磁盘管理’分区即可。

U盘引导多个linux镜像安装,同时支持BIOS和UEFI模式

准备开整

基本步骤

步骤一: 格式化U盘

注意点: bios_grub标记的分区

步骤二: 安装grub到U盘

步骤三: 添加grub菜单

参考文献

前言: 生命不息,折腾不止。在折腾中进步,在踩坑中成长。

准备开整

U盘一枚(4G容量以上,备份好数据,一会可能要重新格式化)

可用的任意 *** 作系统,64位(32位就不要折腾UEFI了)

UEFI 与 ESP 预备知识,限于篇幅就不详细介绍了,自己看文档原理

USB启动的原理就不多做讲解了,有兴趣的话找找相关的文档,介绍很多,也很详细,跟硬盘引导过程差不多。注意的是BIOS+MBR模式和UEFI+GPT模式是不同的。

基本步骤

先说一下我的环境,金士顿16G U盘一个, *** 作系统是Deepin 2014.3 64bit,基于Ubuntu 14.04,其他类似的系统可以类比。Linux系统本来就使用grub引导(不要在CentOS/RHEL 6及以下版本折腾了,那个是Grub Legacy,已经不维护了),折腾起来要比其他 *** 作系统方便的多,软件仓库就有grub相关的软件包,也不需要单独安装太多东西。Windows下可以用 grub2win ,原理是一样的。

步骤一: 格式化U盘

想要支持UEFI引导,GPT是不可少了,而且GPT是兼容MBR了。所以第一步需要先将U盘格式化为GPT分区,这样efi文件可以和MBR共存,实现UEFI和BIOS双支持。

如果U盘已经是

Linux下支持GPT分区的工具: parted, gdisk。大致的步骤就是使用gdisk(命令和 *** 作方式几乎和fdisk完全一样,只是支持GPT),或parted对U盘重新分区,然后标记ESP。如果用gdisk,只要给分区标记EF00编号即可,如果用parted,给分区boot标记即可。命令行就不演示了,很简单,我这边截图使用图形化工具gparted分区,同样结果也是GPT分区。

图形化的gparted *** 作也很简单,建立GPT分区表,分区,格式化为FAT32( 注: 尽管ESP支持多种分区,但是为了通用性与兼容性还是建议FAT32 ),标记分区为boot

这样U盘处理就完成了,使用gdisk或parted显示一下U盘的信息,看到这样的信息就是OK的

$ sudo gdisk -l /dev/sdb  # 根据你的U盘的名字修改dev设备 

GPT fdisk (gdisk) version 0.8.8

Partition table scan: 

MBR: protective      # <========================= 保护性的MBR,这个是GPT兼容MBR的一种设计 

BSD: not present 

APM: not present 

GPT: present         # <========================= 看这里,已经是GPT了

Found valid GPT with protective MBR using GPT.   # <========== 这里的显示也说明是GPT分区 

Disk /dev/sdb: 30736384 sectors, 14.7 GiB 

Logical sector size: 512 bytes 

Disk identifier (GUID): 022EE53E-9641-4D28-9394-0826CFA24730 

Partition table holds up to 128 entries 

First usable sector is 34, last usable sector is 30736350 

Partitions will be aligned on 2048-sector boundaries 

Total free space is 4029 sectors (2.0 MiB)

Number  Start (sector)    End (sector)  Size       Code  Name 

1            2048        30734335   14.7 GiB    EF00         # <======== 这里很关键,看Code是EF00,想要分区成为ESP必须设置这个标记,如果手工用gdisk别忘了这一步

$ sudo parted /dev/sdb print 

Model: Kingston DataTraveler 3.0 (scsi) 

磁盘 /dev/sdb: 15.7GB 

Sector size (logical/physical): 512B/512B 

分区表:gpt                                 # <======= GPT分区 

Disk Flags:

数字  开始:  End     大小    文件系统  Name  标志 

1  1049kB  15.7GB  15.7GB  fat32         启动, esp      # <===== ESP已经设置成功 

注意点: bios_grub标记的分区

这个要特别强调,bios_grub标记的分区必须存在,否则BIOS模式下无法使用 。

有关bios_grub标记的分区说明: https://help.ubuntu.com/community/Installation/UEFI-and-BIOS#Make_a_system_bootable_in_UEFI_as_well_as_BIOS

这里我简单提及一下这个标记的作用。上面提到过,GPT兼容MBR,如果要让grub在GPT上使用MBR模式安装的话,需要设置这个标记。按照ubuntu官方文档(上面那个文档,想了解详细的话必看!),这个分区有以下几个特点:

1MB容量

不需要格式化

设置bios_grub标记

如果用gdisk, parted, gparted这些工具分区的时候,你会发现总会有一个1MB的剩余空间,就是干这个用的,现在,我只需要给这个剩余空间分区,并打上bios_grub标记就行了(EF02),不用格式化。parted *** 作也类似

sudo gdisk /dev/sdb# 下面可以看到gdisk的 *** 作几乎和fdisk完全一样,熟悉fdisk可以无压力上手GPT fdisk (gdisk) version 0.8.8Partition table scan:

 MBR: protective

 BSD: not present

 APM: not present

 GPT: presentFound valid GPT with protective MBRusing GPT.Command (? for help): nPartition number (2-128, default 2):First sector (34-30736350, default = 30734336) or {+-}size{KMGTP}:Last sector (30734336-30736350, default = 30736350) or {+-}size{KMGTP}:Current type is 'Linux filesystem'Hex code or GUID (L to show codes, Enter = 8300): EF02Changed type of partition to 'BIOS boot partition'Command (? for help): pDisk /dev/sdb: 30736384 sectors, 14.7 GiBLogical sector size: 512 bytesDisk identifier (GUID): 0086B5EF-81D9-4BD1-816C-AD1EADCD2338Partition table holds up to 128 entriesFirst usable sector is 34, last usable sector is 30736350Partitions will be aligned on 2048-sector boundariesTotal free space is 2014 sectors (1007.0 KiB)Number  Start (sector)    End (sector)  Size       Code  Name

           2048        30734335   14.7 GiB    EF00        30734336        30736350   1007.5 KiB  EF02  BIOS boot partition # <== EF02对应的就是bios_grub这个标记Command (? for help): wFinal checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING

PARTITIONS!!Do you want to proceed? (Y/N): y

OKwriting new GUID partition table (GPT) to /dev/sdb.Warning: The kernel is still using the old partition table.The new table will be used at the next reboot.The operation has completed successfully.sudo parted /dev/sdb printsudo gdisk /dev/sdb

GPT fdisk (gdisk) version 0.8.8Partition table scan:

 MBR: protective

 BSD: not present

 APM: not present

 GPT: presentFound valid GPT with protective MBRusing GPT.Command (? for help): nPartition number (2-128, default 2):First sector (34-30736350, default = 30734336) or {+-}size{KMGTP}:Last sector (30734336-30736350, default = 30736350) or {+-}size{KMGTP}:Current type is 'Linux filesystem'Hex code or GUID (L to show codes, Enter = 8300): EF02Changed type of partition to 'BIOS boot partition'Command (? for help): pDisk /dev/sdb: 30736384 sectors, 14.7 GiBLogical sector size: 512 bytesDisk identifier (GUID): 0086B5EF-81D9-4BD1-816C-AD1EADCD2338Partition table holds up to 128 entriesFirst usable sector is 34, last usable sector is 30736350Partitions will be aligned on 2048-sector boundariesTotal free space is 2014 sectors (1007.0 KiB)Number  Start (sector)    End (sector)  Size       Code  Name

           2048        30734335   14.7 GiB    EF00        30734336        30736350   1007.5 KiB  EF02  BIOS boot partitionCommand (? for help): wFinal checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING

PARTITIONS!!Do you want to proceed? (Y/N): y

OKwriting new GUID partition table (GPT) to /dev/sdb.Warning: The kernel is still using the old partition table.The new table will be used at the next reboot.The operation has completed successfully.$ sudo parted /dev/sdb printModel: Kingston DataTraveler 3.0 (scsi)磁盘 /dev/sdb: 15.7GBSector size (logical/physical): 512B/512B分区表:gptDisk Flags: 数字  开始:  End     大小    文件系统      Name                 标志

   1049kB  15.7GB  15.7GB  fat32                          启动, esp    15.7GB  15.7GB  1032kB            BIOS boot partition  bios_grub  # <== 要的就是这个!

至此分区的步骤就完成了。如果你已经是GPT分区了,就不用重新分区了,只要处理成ESP就行了

步骤二: 安装grub到U盘

这一步相比上一步已经简单许多了,但还是有一个小坑需要注意。先贴命令:

$ sudo mount /dev/sdb1 /mnt -o uid=$USER,gid=$USER  # 没什么好说的,挂载U盘使用,加上uid和gid参数只是为了编辑文件不需要sudo而已# grub安装到MBR$  sudo grub-install --target=i386-pc --recheck --boot-directory=/mnt/boot /dev/sdbInstalling for i386-pc platform.Installation finished. No error reported.# grub安装到ESP,特别注意--removable参数,安装到移动设备上一定要用这个参数$ sudo grub-install --target x86_64-efi --efi-directory /mnt --boot-directory=/mnt/boot --removableInstalling for x86_64-efi platform.Installation finished. No error reported.

命令没有任何难度,但是有几个坑需要特别注意:

Ubuntu的分包问题grub默认的target是i386-pc,这个target包含在 grub-pc 这个包,如果你的系统使用BIOS+MBR安装,这个包默认是存在的。x86_64-efi这个target包含在 grub-efi 这个包,只有你的系统使用UEFI+GPT方式安装这个包才会存在。如果某个target报错,错误信息类似于 grub-install: error: /usr/lib/grub/x86_64-efi/modinfo.sh doesn't exist. Please specify --target or --directory. 这样的话,就需要安装 grub-pc 或 grub-efi 之后再试。

安装到ESP要加–removable这个参数 这个参数专门针对于可移动设备,一定要加

bios_grub标记的分区 如果按照上面的分区过程 *** 作了,增加了这个标记的分区,安装grub的时候会自动识别这个标记的分区并成功安装grub,否则报错:

Installing for i386-pc platform.grub-install: warning: this GPT partition label contains no BIOS Boot Partitionembedding won't be possible.

grub-install: warning: 无法嵌入。在此次安装中 GRUB 只能通过使用块列表安装。但是块列表是不可信赖的,不推荐使用。.

grub-install:错误: will not proceed with blocklists.

步骤三: 添加grub菜单

如果前面都没问题的话,最后就只剩下添加grub菜单了。在 /mnt/boot/grub 这个目录下,新建 grub.cfg 配置文件就行了。grub2的语法很复杂,图省事就从网上各种摘抄拼接就行了。比如我把linux发行版的iso镜像都扔到了 boot/iso 这个目录,于是乎我的 grub.cfg 成了这样:

# path to the partition holding ISO images (using UUID)probe -u $root --set=rootuuidset imgdevpath="/dev/disk/by-uuid/$rootuuid"# define globally (i.e outside any menuentry)insmod search_fs_uuid

search --no-floppy --set=isopart --fs-uuid $rootuuid

insmod all_video

menuentry "Linux Mint cinnamon 64bit ISO" {

set isofile=/boot/iso/linuxmint-17.2-cinnamon-64bit.iso

loopback loop ($isopart)$isofile

linux (loop)/casper/vmlinuz file=/cdrom/preseed/linuxmint.seed boot=casper iso-scan/filename=$isofile noeject noprompt splash locale=zh_CN.UTF-8 --

initrd (loop)/casper/initrd.lz}menuentry "Ubuntu Desktop 64bit ISO" {

set isofile=/boot/iso/ubuntu-14.04.3-desktop-amd64+mac.iso

loopback loop ($isopart)$isofile

linux (loop)/casper/vmlinuz file=/cdrom/preseed/ubuntu.seed boot=casper iso-scan/filename=$isofile noeject noprompt splash locale=zh_CN.UTF-8 --

initrd (loop)/casper/initrd.lz}menuentry "UbuntuKylin Desktop 64bit ISO" {

set isofile=/boot/iso/ubuntukylin-14.04.3-desktop-amd64.iso

loopback loop ($isopart)$isofile

linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=$isofile noeject noprompt splash locale=zh_CN.UTF-8 --

initrd (loop)/casper/initrd.lz}menuentry "Ubuntu Server 64bit ISO" {

set isofile=/boot/iso/ubuntu-14.04.3-server-amd64+mac.iso

loopback loop ($isopart)$isofile set gfxpayload=keep

linux (loop)/install/vmlinuz file=/cdrom/preseed/ubuntu-server.seed iso-scan/filename=$isofile quiet --

initrd (loop)/install/initrd.gz}menuentry "Deepin 2014 ISO" {

set isofile=/boot/iso/deepin_2014.3_amd64.iso

loopback loop ($isopart)$isofile

linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofile noeject noprompt splash locale=zh_CN.UTF-8 --

initrd (loop)/casper/initrd.lz}

根据自己的需求增删改改就行了。想进一步美化的话,grub2关于美化的文档也很多,就不赘述了。

注意: 不要使用虚拟机测试,因为虚拟机不能完整模拟主板。因此不一定能引导你的U盘,让你误以为制作失败了。尽可能用真机去测试引导。

最后,贴一个效果图,可以看到BIOS模式和UEFI都可以引导了

补充: 稍作美化一下效果,只不过那个从本地硬盘启动还没实现,需要看看别人怎么写的。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/8467661.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-16
下一篇 2023-04-16

发表评论

登录后才能评论

评论列表(0条)

保存