无U盘无额外软件使用Grub2引导挂载硬盘安装Manjaro等Linux双系统

最近刷到Manjaro美化,被它的外观打动,于是心痒又想装Linux了,无奈暑假回来没带U盘,只能麻烦地纯硬盘安装了(此文章于23年3月重写)。
目标:无U盘光驱等介质,无需下载第三方软件,使用Grub2挂载硬盘分区法来安装Linux/Win双系统。
适用的Linux发行版:Manjaro,ArchLinux,Ubuntu,等(其他需自行测试)
准备:一台装有Windows的联网电脑(废话)
限制:此教程仅适用于GPT分区硬盘和使用UEFI引导模式的电脑
废话不多说,教程开始。
*建议在完整阅读完每一个大步骤后再进行操作!有些注意事项是在操作步骤之后的,手不要太快了!*

一、下载镜像
下载你想要安装的Linux发行版ISO镜像,教程以Manjaro为例,其他发行版自行去互联网搜索官网下载。
Manjaro ISO镜像下载地址:https://manjaro.org/download/
Manjaro官方有三种桌面环境可以选择,我选的是Plasma(这是KDE社区开发的桌面环境)。

如果你想下载Manjaro,点击橙色的【Download】按钮,并选择蓝色按钮【Image】就可以下载ISO文件了(外网服务器,加速下载请使用魔法)。

二、硬盘分区
右键左下角的Win徽标→磁盘管理,找一块硬盘(最好是跟Windows系统同一硬盘),自行寻找一个分区,右键压缩卷,分出一个不少于8GB的FAT32格式的分区来。这块分区将会被当成“替代U盘”,存放ISO镜像文件。将你下载的Linux ISO镜像复制进这个分区里。




再自行找一分区,右键压缩卷,分出一个不少于40GB(此分区用作Linux系统盘,按照自己的需求来,想用长久的Linux系统就分大一点)的分区来当做Linux的系统盘,可以先不格式化,保持未分配就行。

做完以上步骤后,你应该有图2.5中的三块分区:原分区(左一)、预分配给Linux系统盘的未分配黑块空间(左二)、“替代U盘分区”(右一)。
三、关闭安全启动,快速启动和设置AHCI
关闭电脑,进入BIOS,按照自己电脑的相关方式做以下三个事情:
1.关闭快速启动(有的电脑没有,没有的就在控制面板里关,位置自己百度找)
2.关闭安全启动(即Security Boot)
3.硬盘SATA类型改成AHCI
*注意:如果你的电脑磁盘有BitLocker,在关闭 安全启动 后开机进入Windows系统可能会要求你输入BitLocker解锁密钥,请在进行以上步骤之前检查你的BitLocker状态,并关闭它或者记下解锁密钥,否则硬盘会废掉,里面的数据也会永久不可读!*

如果你的电脑在做完以上三步后出现无法正常进入原Windows系统(例如无限重启),请回到BIOS将安全启动打开并将硬盘SATA类型切换回去,在正常进入原Windows系统后,使用键盘快捷键Win+R打开运行对话框,输入“msconfig”并回车,在打开的“系统配置”窗口中单击“引导”选项卡,勾选“安全引导”后单击【确定】按钮,并在弹出的对话框中单击【重新启动】按钮。


在重启开机的瞬间进入BIOS,将硬盘SATA类型改为AHCI,保存重启后系统会自动进入Windows安全模式,在安全模式系统下重复Win+R→msconfig→引导选项卡→取消勾选安全引导→确定→重新启动,完成后你的Windows系统应该就可以在AHCI模式下正常启动了。
四、安装Grub2
*此步骤中标红字体是需要根据你电脑的情况来进行更改的,不可无脑复制*
在https://ftp.gnu.org/gnu/grub/下载最新版本的grub_windows.zip,解压到任意一个地方,进入解压后的Grub2文件夹,在文件窗口空白处按住Shift键+鼠标右键,选择“在此处打开 Powershell/CMD/命令行提示符 窗口”(依不同电脑情况而定)。

键入命令:grub-install.exe --target=x86_64-efi --efi-directory=f: --boot-directory=f:
等一下,不要着急复制哦,你需要根据你刚刚分出的“替代U盘”的盘符,将命令参数efi-directory和boot-directory后的参数f:替换成你的盘符,例如你的“替代U盘”的盘符是H:\,那么它俩后面的参数就是h:。如果你使用的是Powershell,运行此命令会提示无法识别报错项,只需要在命令前添加.\即可,完整命令:.\grub-install.exe --target=x86_64-efi --efi-directory=f: --boot-directory=f:。
回车后会自动弹出一个CMD窗口,等待Grub2安装完成后它会自己关闭,不会有任何提示,如果你的“替代U盘”分区中有efi和grub文件夹,即证明安装成功。

五、安装前的准备
*此步骤中标红字体是需要根据你电脑的情况来进行更改的,不可无脑复制*
将你要安装的Linux的ISO镜像移至“替代U盘”分区中,并需要记下四个信息以供在命令行中使用:
“替代U盘”所在的分区号
ISO镜像文件名
Linux内核路径与ISO label名
Linux系统引导路径与Intel微码固件路径
接下来我将会带你一路获取这些信息。
5.1 “替代U盘”所在的分区号
打开Powershell(管理员),键入“diskpart”命令,进入磁盘管理命令行实用程序。

键入“list disk”,列出计算机所有物理硬盘。其中,可以根据磁盘大小来分辨出你的“替代U盘”所在的磁盘号,例如我的“替代U盘”在我512G的固态上,那么“替代U盘”的磁盘号就是1。
*注意:Windows里的磁盘号不代表Grub命令操作系统中的最终磁盘号,实际应以Grub命令操作系统中的磁盘号为准*

键入“select disk 1”,回车,将磁盘1设为选择磁盘,再键入“list partition”回车,列出该磁盘上的所有分区。同样寻找出“替代U盘”的分区,记下它的分区号。

如上图,例如我的“替代U盘”在磁盘1,分区5,那么我的“替代U盘”的分区号就是(hd1,gpt5),记下你自己的分区号。
5.2 ISO镜像文件名
记下你的镜像文件名。

5.3 Linux内核路径与ISO label名
右键装载ISO镜像文件、或是双击使用压缩程序查看其内部文件,寻找名为vmlinuz-x86_64的文件(一般它在boot文件夹中),记下它的路径。

装载ISO镜像文件,查看窗口标题栏的大写字母+数字的字符串,这就是此ISO镜像文件的label,记下它。

5.4 Linux系统引导路径与Intel微码固件路径
右键装载ISO镜像文件、或是双击使用压缩程序查看其内部文件,寻找名为initramfs-x86_64.img和intel_ucode.img的文件(一般它在boot文件夹中),记下它们的路径。

至此,你的安装准备工作已完成,将所有信息记录在纸上或手机中,重启电脑进入下一步。
六、引导系统启动
一般来说,如果你成功安装了Grub2,那么在你重启电脑后应该就能进入到Grub命令行,如果你没有进入到Grub2命令行,则需要在BIOS中将grub引导移至第一位并重启电脑,如图6.1。

如图6.2即为Grub命令行,如出现此屏幕则可继续。

接下来,我们需要编写启动配置脚本来手动引导Linux系统的启动,我建议你在编写前先使用“ls”命令查看Grub命令行中对于磁盘的编号是否与我们之前在Windows中查询的磁盘编号一致,例如图6.3,我的编号已经不一致了,在Windows中我的“替代U盘”所在的磁盘应该是磁盘1,但是Grub中显示的却是磁盘0,此时我应该使用Grub中的分区号。无需担心分区编号错乱,这是不会发生的。
*此步骤中标红字体是需要根据你电脑的情况来进行更改的,不可无脑复制*
现在,让我们开始写令人头疼的脚本吧。
> insmod ntfs //载入NTFS模块,为硬盘及相关驱动提供支持
> insmod iso9660 //载入iso9660模块,为读取我们的ISO镜像文件提供支持
> set isofile="/manjaro-kde-22.0.5-230316-linux61.iso" //设置一个名为“isofile”的变量,变量内容就是我们的ISO镜像文件名,别忘了前面的斜杠
> search --no-floppy -f --set=root $isofile //设置Grub根目录
> probe -u $root --set=pro //配置驱动
> loopback loop (hd0,gpt5)$isofile //回环设备,挂载ISO
> linux (loop)/boot/vmlinuz-x86_64 misolabel=MANJARO_KDE_2205 img_dev=/dev/disk/by-uuid/$pro img_loop=$isofile driver=nonfree //配置Linux内核
> initrd (loop)/boot/intel_ucode.img (loop)/boot/initramfs-x86_64.img //配置Linux引导路径
> boot //开始引导

在敲完“boot”并回车后,你的电脑就会黑屏并开始引导ISO镜像文件,如果你的脚本编写无误,那么屏幕上很快就会出现如图6.4滚动的系统初始化日志,如果没有的话请重启电脑,正确编写脚本以重试。

一阵激♂烈的滚屏之后应该就会进入你的Linux操作系统的预安装环境,接下来按照正常步骤安装Linux即可(图6.5)。

现在,我们之前没有分配的磁盘空间可以派上用场了,把Linux的小家安放进去吧(图6.6)。


Manjaro提供引导界面,如果你想使用Windows的话就选择Windows Boot Manager以进入Windows的引导界面。引导界面依不同Linux操作系统而不同,如有疑问请百度查询相应的教程(图6.8)。

一般来说,Linux的引导都可以与Windows Boot Manager共存,并会在其引导界面提供进入Windows Boot Manager的选项,所以建议将Linux的引导置于第一优先级。

在安装完成后我们之前创建的“替代U盘”就可以删除了,然后合并回原分区,BIOS里的引导项也会一并删除。
七、后语
按照此方案安装的Windows/Linux双系统会出现众所周知的时间不同步的问题,此问题的解决方案百度上也有很多,此处不多赘述。
好好享受你的双系统吧,再会!

.VklaTFlDTFk.
.331783-154757-201.