记一次在U盘上安装Manjaro
前情提要
由于在我的笔记本上WIndwos和别的系统水火不容(启动到Windows,GRUB的引导项就会被删除),于是我把2020-04-01装的Windows格掉,装了Arch。但Windows在某些时候又是刚需,我手头正好有个SanDisk CZ880。于是我在CZ880上部署了WTG,还挺流畅的,插在USB2.0的口上也能很好地运行。
前天,我试着在CZ880剩下的1GB的分区里安装Manjaro,可能是配置有问题,没启动起来,还顺便把Windows的引导一块弄没了(没错,是我格式化的),不慌,还有备用的MBR引导。昨天,我又试着在880的MBR引导扇区里安装wee63,操作有误,把MBR引导也弄挂了。既然挂了那我就想办法修复吧,但在微PE下,系统分区和EFI分区由于玄学原因只能同时挂载一个,试着修复MBR引导,又提示BCD配置有误,我干脆直接备份好数据之后格了盘。
正文
128GB的U盘我平时根本用不到,我又打起了在880上安装“随身”操作系统的打算,这次我选择了Manjaro。为什么不是Debian,Ubuntu,抑或是Arch呢?因为我感觉大版本更新很麻烦,Arch的滚动更新就很对我胃口。而Arch更新得实在是太勤了,快到了令人担心的地步,所以我选择了更新速度稍慢的Manjaro。
开始操作
我的“野心”很大,我想让Manjaro同时兼容UEFI启动和legecy启动。我不喜欢MBR分区表,因为“引导扇区”“扩展分区”等概念着实是令人头疼。但又没法往GPT分区表里写MBR的引导扇区数据,也就是说在legecy模式下无法启动。这时候我在Archwiki里看到了这样一段内容。
BIOS/GPT配置中,必须使用 BIOS 启动分区。GRUB将core.img嵌入到这个分区。
安装 GRUB 前,在一个没有文件系统的磁盘上,创建一个1兆字节(使用 fdisk 或 gdisk 和参数+1M)的分区,将分区类型设置为 GUID 21686148-6449-6E6F-744E-656564454649。
这个分区可以处于磁盘的前 2TB 空间中的任意位置,但需要在安装 GRUB 之前创建好。分区建立好后,按下面的命令安装启动管理器。
第一个分区之前的空间也可以用作 BIOS 启动分区,但是这会违反 GPT 对齐规范。因为这个分区不会经常访问,所以性能的影响很小,只不过有些分区工具会发出警告。可以在 fdisk 或 gdisk 中创建一个从 34 扇区开始,一直到 2047扇区的分区,然后按照上述方式设置类型。为了让其它分区对齐,可以最后再创建此分区。
照我的理解,是可以用一个1MB大小的分区代替MBR的引导扇区,来达到引导系统的目的。fdisk我还是不会操作,于是我使用了cfdisk来代替。
设备 | 起点 | 末尾 | 扇区 | 大小 | 类型 |
---|---|---|---|---|---|
/dev/sda1 | 2048 | 616447 | 614400 | 300M | Microsoft 基本数据 |
/dev/sda2 | 616448 | 618495 | 2048 | 1M | BIOS 启动 |
/dev/sda3 | 618496 | 67727359 | 67108864 | 32G | Linux 文件系统 |
/dev/sda4 | 67727360 | 6115967 | 8388608 | 4G | Linux swap |
/dev/sda5 | 76115968 | 250085342 | 173969375 | 83G | Microsoft 基本数据 |
Markdown的表格真难排,以上是我目前的分区表。
分区
ls一下/dev,看看自己要分区的设备叫什么,在这里我要操作的设备(CZ880)的目录为/dev/sda
,于是我输入命令sudo cfdisk /dev/sda
,cfdisk的界面随即显示了出来。在创建分区的时候创建一个300MB左右的分区,将分区类型改为“EFI”;再创建一个1MB大小的分区,在“类型”里将分区类型改为“BIOS启动”即可。选择“写入”,输入“yes”,再选择“退出”,分区步骤就算结束了。
安装系统
略。
安装引导器(GRUB2)
接下来我先安装UEFI引导,我们需要执行这样一条命令。
sudo grub-install --target=x86_64-efi --removable --efi-directory=<你的EFI分区目录> --boot-directory=<你所安装完成的新系统的boot目录>
接着安装legecy引导,还是一条命令,不要担心架构的问题,照样能引导。
sudo grub-install --target=i386-pc /dev/<你所要安装到的块设备的名称,我安装的时候为sda1>
以上两条命令请根据自己的实际情况修改。
稳妥起见,chroot到安装目录的根目录,执行这样一条命令以生成GRUB配置文件。
grub-mkconfig -o /boot/grub/grub.cfg
这样操作完之后,应该就没有什么问题了,重启试试看吧。
我的使用情况
我先尝试使用legecy方式启动,除了GRUB加载时间较长,引导菜单操作起来怪怪的之外没有什么问题。我又试着通过UEFI方式引导,也成功地启动了,大成功。我尚未测试在另一台设备上引导这个系统,可能会有问题。
后记
写得比较乱,作参考用的。这里还是推荐遇到什么问题就翻翻Archwiki,大多数问题你都能得到解答(类似于systemd怎么用)。