注意:本教程只适用于支持EFI启动的计算机。如安装盘中包括Linux,则选用的Linux发行版需要支持EFI启动。
我平时给自己或者别人重装系统的频率还算挺高的,因为有时候要装macOS有时候要装Windows,每次都要重新把安装包刷到我的U盘里,不但非常折腾,而且对寿命也不好。于是我这几天就花时间研究了一下怎么把这些安装盘都塞到一个U盘里,并取得了不错的结果。
这个U盘不仅可以选择启动多个系统,而且当某一个系统的安装盘需要更新的时候,并不需要抹掉整个盘,只要单独处理对应的分区就好,非常方便。启动的时候效果是这样的:
引导画面
我的这个盘包括了一个macOS安装器、一个Windows10安装器、一个GPartedLive(GParted是一个Linux平台的分区工具,这是一个仅提供该分区工具及其他一些基本功能的简易Linux发行版)和一个WinPE。接下来的教程我会教大家怎样制作一个这样的启动U盘并应对一些启动问题。
各系统截图
预备知识
为了不让你看得云里雾里,我们先来看一看EFI是个什么东西。简单来说,EFI是一种操作系统的引导方式。
不知道你是否还记得几年前的电脑刚开机是什么样子的。
Award BIOS 引导画面
这个黑底白字的画面被称为开机自检画面,是由主板上一块叫做BIOS的芯片生成的。该芯片在开机时首先完成上电自检(POST)并初始化各种硬件,之后会读取磁盘的一个固定区域来寻找启动程序(0面0道1扇区)。操作系统会把自己的引导程序写在里面,当BIOS发现这段程序后,就会交出控制权,操作系统就启动了。这种引导方式被称为LegaceyBoot,而这种包含了启动程序区块的分区表格式被称为主引导记录(MBR),与其相对的就是GPT。
2005年发明的EFI与Legacey不同,它并不会从磁盘的固定位置去寻找启动程序,而是在每一个分区中寻找EFI 文件夹中的引导程序。对于一个只支持LegaceyBoot的操作系统而言,假如你要让一个磁盘可以引导,需要用一些特殊的程序去写入启动区块,而且由于一个硬盘只有一个启动区块,实现多系统启动非常的麻烦,需要工具的帮助才能实现(YUMI–MultibootUSBCreator)。而EFI的启动程序和普通的文件放在同一个地方,假如你要把一个支持EFI的操作系统安装盘扔进U盘里,只要简单的把所有文件复制进去就可以了。直接就可以开机,不需要进行任何多余的操作,本教程就是利用了这一点。
由于只有新的电脑才会支持EFI引导,在较老的电脑上使用之前请先确认电脑是否支持EFI引导。以及如果你想要确认自己要扔进U盘里的安装盘支不支持EFI,只需要打开ISO文件,看看里面有没有一个叫EFI的文件夹就可以了。
材料准备
如果你想要存下这么多的安装盘,首先你需要一个至少16GB的U盘。作为参考:
macOS10.13安装盘需要的空间为为5.5GB。
Win101709安装盘尺寸为5GB。
(以上大小以0.5为单位上取整)
你需要一个可用的Windows系统,用于运行分区工具,虚拟机也可以。macOS的磁盘工具基本上就是个废物,当你在一个U盘中同时创建HFS+和FAT文件系统的时候会直接报错。而且在Windows中弄好的FAT分区在macOS中也无法调整大小。
错误提示
准备好你需要放进去的安装盘等,如果需要的话还可以准备一个WinPE。我这里推荐AOMEIPE,是一个国外的WinPE环境,支持自己添加软件和驱动。(这个PE运行的时候会屏蔽掉自己所在的驱动器,这可能会有一些问题,我们后面会讲。AOMEIPE是成都一家公司做的,只是他们的PE只放在外国网站上。感谢Umi提醒。)
需要的软件有:
解压软件。由于一些Linux的ISO镜像直接挂载会报错,我们需要一些工具把其中的文件解压出来。Mac下如:TheUnarchiver,Windows下如:7Zip
分区工具,如:DiskGenius
镜像写入工具。Mac下的NTFS不好用,U盘分区需要被格式化为FAT32。而Windows的安装盘中含有一些大于4GB的文件,这不被FAT32支持。所以我们需要一些特殊工具来做写入操作。如:UNetBootin(选择UNetBootin的原因主要是这款软件支持写入到分区而不是整个硬盘)
写入macOS安装器
先从macOS开始。首先下载好macOS的安装程序(.app)备用,我们来进行一些分区操作。macOS启动需要使用GPT(GUID)分区表,所以我们需要把磁盘格式化成这种格式而不是U盘里默认的MBR。
打开磁盘工具,首先在左边选中你的U盘,注意是选中U盘而不是其中的分区,之后点击抹掉按钮,这会把整个磁盘抹成GPT。⚠️该操作会清空U盘的全部内容,注意备份。⚠️(虽然一些软件可以直接转换MBR和GPT,不过我还是觉得直接都抹掉比较干净)
按照图上的做法,将分区格式选为MacOS扩展(日志式),方案选择GUID分区图。点击抹掉。有一定概率出现第一次抹掉不成功的情况,是由于系统没有正确卸载磁盘导致的,这个Bug很常见。如果第一次失败了,就再试一次。
之后还是选中U盘,点击分区。你现在应该看到整个硬盘使用一个分区。点击下面的加号新建一个分区,上面的硬盘会被平均分为两个。选择右边的一个(第一个分区),在右侧的详细信息中将分区的名称改为「macOS」(在之后的写入命令中我们会用到这个名称),将大小改为5.5GB(其实可以再小一点,但是为了能够兼容之后的macOS更新,我觉得这里5.5是一个比较合理的大小)。点击分区。
之后你应该能在Mac的桌面上同时看到这两个分区。完成分区操作之后我们接下来写入安装器。打开系统终端,找到你的下载的.app文件,拖入终端窗口中来输入文件路径。终端会在文件路径的后面加一个空格,要注意删掉。
紧接着在后面输入/Contents/Resources/createinstallmedia--volume/Volumes/macOS
,之后按回车继续运行,程序会询问你是否确定要抹掉,输入y回车。之后只要等着完成就可以了。
等到程序提示「Done.」的时候就说明已经写入成功了。如果你在写入的过程中不小心关掉了终端窗口,那请到磁盘工具中抹掉macOS这个分区再重来一遍。
重启电脑,在开机过程中按住Option键,你应该看到系统的启动菜单里出现了安装程序的图标。
其他分区处理和写入Linux分区
不是所有的电脑都像Mac这样可以在启动菜单显示U盘中的每一个分区的,有的EFIBIOS会直接从U盘能识别的第一个区启动(macOS在PC中会被忽略,原因是macOS的引导程序存储在 .IABootFiles而不是一般的EFI文件夹),其后面的分区就都没用了。假如你的第一个分区就是Windows安装程序,那么你将没有办法进入到放在另一个分区的系统(比如说WinPE)中。
要解决这个问题,我们可以把一个Linux发行版放在macOS分区后面的第一个分区。因为Linux发行版大多含有一个叫做GRUB的引导程序,这个程序可以从其自带的命令行跳转到另一个分区来启动。
如果你本来就需要一个Linux,请把它写在紧随macOS分区之后的分区里。如果你不需要Linux,我这里推荐写入一个GPartedLive。GParted是一个非常实用的分区工具,发行版的体积很小,解决问题的同时还具备实用性。下载地址:gparted.org,下载64BitISO即可。
接下来我们先进入Window进行分区操作,将U盘连接到Windows,虚拟机也可以。系统可能会提示分区损坏,取消掉不要格式化,这是因为Windows读不了HFS+的分区。
打开DiskGenius(下称DG),点击这个向右的小箭头切换到U盘:
你可以看到如下的分区图示:
右键删除右侧的这个大分区,点击保存更改。DG每次每次修改分区结构都需要保存一次,否则可能会出现都已经点到对话框里填好参数了还叫你出去保存一下再重新进来的情况(这什么诡异的交互设计)。
在空白区域建立一个1GB的分区(如果你要装自己的发行版,可能需要更大的分区),分区格式为FAT32,DG在新建分区的时候只能使用整数大小,所以先这么办,回头再调整。完成后不要忘了点击保存更改。
关闭DG,你应该能够在资源管理器中看到出现的U盘了。用解压工具打开下载好的GParted或者其他Linux发行版的安装ISO,将其中的文件直接扔进去就可以了。
重新进入DG,右键刚才的分区调整分区大小,针对GParted,我这里调整为350M大小。
之后重启系统应该就可以在启动菜单中看到写入的GParted启动盘了。在Mac上应该表示为一个名叫「EFIBOOT」的黄色硬盘图标。
写入Windows安装程序
分区的方法和Linux的做法类似。在空白区域建立一个新分区,对于Windows我的推荐大小是5GB,分区格式还是FAT32。
我们前面讲过,Windows安装盘中有一个文件超过了FAT32的最大文件大小,需要用第三方工具来写入。运行UNetBootin,选择下方的ISO,点击三个点的按钮选中Windows的安装镜像。然后选择刚刚创建的分区作为目标。⚠️千万不要选错,把别的分区抹掉就要重来了。⚠️
点击写入等待完成。
之后重启应该就可以看到又多一个启动盘了。
写入其他内容
如果你没有什么其他的安装盘要写了的话,我们就可以在DG中把剩余空间建立一个新分区,用于存储文件。
最后我们把WinPE装进去。我们没必要给WinPE单独弄一个分区,直接放在这最后一个分区里就可以了。我来介绍一下AOMEIPE。
国内的PE系统想必很多人都用过,问题非常多。比如很多都不支持NVME硬盘,导致无法给SSD做备份,一些无良作者还会夹带私货,偷偷改电脑浏览器的主页啊,自动给你装个某数字公司杀毒软件啊什么的。而且还有一个问题就是丑。即便是目前中国网上能找到的最好的「微PE」里面也有很多乱加图标的程序。所以在这里我选择了一个国外的PE来用,虽然其中没有国人常用的一些软件,不过因为能够支持自己添加,所以实际使用起来还是非常舒服的。最重要的是,对EFI启动和 NVME 硬盘支持都很好。
在官网下载一个安装器,这个安装器要先装到系统里。运行的时候是这样的。注意一下中间这一步可以自己添加软件和驱动,不要忘了加。最后选择生成 ISO。
这里再次推荐DG,因为这个PE在运行的时候会隐藏掉自己所在的盘,也就是说你没办法用剩余空间来备份文件。DG自带了一个文件浏览器,可以读写没有挂载的磁盘中的文件,在需要备份的时候就非常方便了。要么还要再插一另外个盘。
之后继续各种下一步,生成出来就可以了。
老规矩把这个盘中的所有文件复制出来,扔到我们刚刚建立的最后一个分区中。为了让我们这个拿来存文件的分区干净一些,我们还可以在右键菜单中选择「属性」,把这些文件和文件夹都隐藏掉。
重启之后你应该能看到另一个新的启动盘。
便捷性调整
你可能注意到了一些问题,在启动画面中,后三个盘都叫「EFIBOOT」。我们要怎么分清哪个是哪个呢?我花了很多的时间去研究怎么修改这个显示名称,结论是不行。Mac 似乎不支持修改FAT32文件系统的显示名。不过这也不要紧,我们还有一个东西可以改,就是磁盘的图标。
在Mac中,启动盘的图标是由一个在根目录的.VolumeIcon.icns决定的。这里我做好了一些对应的图标,你可以下载使用:百度云GoogleDrive。另外你还可以使用Image2Icon这个App自己制作ICNS文件,也非常方便。
扔图标进去然后改名成 .VolumeIcon.icns 就可以了。
在不支持多个EFI分区的电脑上启动
有一些PC的 UEFI 无法识别一个盘里面的多个EFI分区(就连ParallelsDesktop 的虚拟机BIOS都有这个毛病),遇到这种情况实在是非常尴尬的。不过我们之前已经弄好了一个Linux分区,接下来我就教大家如何用GRUB手动引导进其他分区。
首先启动系统,进入U盘,你会看到类似这样的画面。
GRUB 菜单
在画面中按下C键进入命令行,你会看到GRUB>这样的提示符。首先输入ls看一看可用的硬盘和分区。
图中的格式是这样的(hd硬盘号,分区号)。我们的U盘虽然只分了四个区,但是由于macOS在最前面添加的保留分区的存在,加起来一共是有 5 个分区,分别从 1 到5表示。看看上面哪个编号的硬盘含有五个区的话,那就应该是我们U盘的编号了,这里是 0,一般都应该是 0。
假如我们要进入Windows的安装程序,这个区的编号是4,在命令行输入setroot=(hd0,4) 回车。
之后要给出Windows的EFI引导程序的位置,输入chainloader/EFI/Boot/bootx64.efi+1(Win10的引导一般都在这个地方),应该会看到如下的提示,表示装载成功了。
之后再输入boot,不出意外的话,Windows安装程序就能正常启动。
如果你想要启动PE的话,那么除了分区编号改成5之外,其他情况都是一样的。
Q&A
安装盘有了新版本怎么办?只要抹掉该分区,重新按照之前的步骤刷入即可。Windows也是同理,不过要在Windows中这个操作叫格式化。
有安装盘的那些分区可以自己存文件么?当然可以,可用空间里面随便存,不会浪费。
推出U盘的时候总是无法推出怎么办?因为四个区的关系,在较慢的U盘上推出的时候会非常的卡,这是正常现象,多等一会就好了。
(题图背景是我在东京的住处自己拍的)
:http://www.linuxidc.com/Linux/2017-11/148899.htm