从u盘启动进入grub (从U盘启动进入GRUB) 前言

2021年7月底,开始研究国产系统(Linux)。

通常情况,一个系统镜像需要制作一个安装U盘,来进行安装。

但这显然是不科学的!Linux系统那么多,每个系统一个U盘,花钱不说,带着一堆U盘也不方便。

于是研究了一下,将统信UOS、银河麒麟的镜像做在一个U盘上。。

研究的过程就不讲了,直接上方法!

方法一

这是我研究完之后才发现的神软!我的方法太复杂了,一般情况推荐使用它:

Ventoy,官网地址:Ventoy

软件界面非常简单,使用也非常简单,这里就不讲了:

电脑

安装好后,各种系统镜像无脑往U盘上放就行了,无论是Windows还是Linux,也不管是X86、ARM还是MIPS架构都能支持!非常强大,运维人员必备神器:

方法二

这是我当时研究的方法,复杂且适用性不高,写在这里主要不想枉费当时的一番心血!内中也有一些知识点,可供借鉴。。

准备工作:

1个不小于8G的U盘。我使用的是64G

统信UOS的ISO镜像文件。官网地址下载:统信UOS生态社区 - 打造操作系统创新生态 本次使用的版本是:uniontechos-desktop-21.0-home-beta5-amd64.iso

银河麒麟的ISO镜像文件。官网地址:https://www.kylinos.cn 本次使用的版本是:Kylin-Desktop-V10-Release-Build1-20200313-x86_64.iso 但是去哪里下载的我忘记了

其它软件:

Grub2 Windows版 官网地址:https://ftp.gnu.org/gnu/grub 本次所用版本为:grub-2.06-for-windows.zip

7-ZIP 官网地址:https://www.7-zip.org 本次所用版本:21.02

DiskGenius 官网地址:https://www.diskgenius.cn

1、使用DiskGenius将U盘分区格式化为FAT32格式。如果存在多个分区,建议全部删除后新建一个主分区即可。

说明:如果U盘小于32G,也可以使用Windows自带的格式化。FAT32是为了更好的兼容性。

2、将GRUB2整个解压出来,这里我解压后的目录是:E:\grub-2.06-for-windows

运行CMD,输入命令:wmic diskdrive list brief 查看U盘在系统中的设备ID,如图:

\\.\PHYSICALDRIVE4 就是我U盘在系统中的设备ID。继续输入命令:cd /d E:\grub-2.06-for-windows 进入grub2所在目录,注意修改成你解压的目录。

输入命令:grub-install --target=i386-pc --boot-directory=j: --recheck \\.\PHYSICALDRIVE4

其中 --target=i386-pc 表示使用传统的BIOS引导模式(实际上UEFI也可以引导)

--boot-directory=j: 表示引导目录是j盘(我的U盘盘符)

--recheck \\.\PHYSICALDRIVE4 --recheck 这个参数的说明是:”delete device map if it already exists “

完成后,Grub就被写入U盘了,此时U盘已具备了引导系统的能力。

3、使用7-ZIP打开统信UOS的ISO镜像,将所有文件解压到U盘。

为什么要使用7-ZIP,而不是WinRAR、UltraISO这些软件?

我们先来看两张图:

第一张图是WinRAR、第二张图是7-ZIP,打开的是同一个ISO文件,但是显示的文件、目录名称却有很大的不同!!

显而易见,7-ZIP的显示才是正确的,WinRAR那个是错误的。

UltraISO和WinRAR的情况是一样的,因此,这里使用7-ZIP解压! //2021.08.13日更新说明:UltraISO 9.7.2以后的版本也可以支持

4、打开银河麒麟的ISO镜像文件,将.disk和casper这两个目录解压到U盘。

银河麒麟的镜像文件与UOS不同,可以使用WinRAR打开。当然,随着版本更新,未来不好说,还是使用7-ZIP比较放心。

5、打开U盘\boot\grub\grub.cfg 文件,加入银河麒麟的启动菜单。

可以从麒麟的ISO文件中,boot\grub\grub.cfg中提取。

改完后像这样:

注意,我在第一行加入了一句:set timeout=50

如果不加之句,不会出现选择菜单,直接就进入UOS的安装了。

grub.cfg文件改好之后,将它复制一份到这个位置:U盘\grub 目录下

至此,UOS+麒麟 的二合一安装U盘就做好了!

一些问题说明:

问题1:为什么UOS解压了所有文件,而麒麟只要了两个目录?

因为麒麟只需要.disk和casper这两个目录就正常了!

而UOS在测试的时候发现电脑,只要live和oem两个目录就可以完成安装,但是安装完成后,系统无法启动!

我也懒得一个一个的测试,就直接解压全部的文件了!另外一个原因是UOS根目录的deepin-boot-maker.exe、uos-system-installer.exe这两个程序是有实用价值的,也就保留了

问题2:UEFI模式可以启动吗?

实测可以!

因为UOS是解压了所有文件的,其中EFI目录中包含了UEFI启动所需的文件。

这里特别说明一下:传统BIOS引导的时候,Grub的配置文件是 U盘\grub\grub.cfg

而通过UEFI引导的时候,配置文件则是:U盘\boot\grub\grub.cfg

所以,在第5步操作时,为什么要复制一份grub.cfg到U盘\grub目录下就是这个原因

当然,UEFI引导实际是由 U盘\EFI\BOOT\BOOTx64.EFI 文件来控制,U盘\boot\grub\grub.cfg 这个配置文件也是由它定义的。可以使用grub-mkimage自己生成BOOTx64.EFI,来使得无论是BIOS方式还是UEFI方式,都统一使用一个grub.cfg文件。

但是,并不推荐这么做!原因请看问题3

问题3:memtest86+可以使用吗?

答案是:可以也不可以!

为什么这么说呢?因为memtest86+这个程序,并没有支持EFI模式的版本!

在传统的BIOS模式中,它是可以使用的,但是在UEFI模式中,它无法使用!

因此,并不建议修改BOOTx64.EFI使配置文件统一,分开的配置更灵活有效。

如果你还记得前面讲的内容,那可能发现了电脑U盘\boot\grub\grub.cfg 这个文件里面有一个错误:

memtest86+在UEFI模式中是无法使用的,因此,应该把这三行删除。


skyyx2002

2021.07.31

?


电脑