身边放个启动盘(Live USB)总是令人安心,出了问题至少可以救援,也可以比较方便得帮人安装Arch。
我身边呢,也的确一直放着我的启动盘,一个只有3.7个G的小家伙,陪伴了我很久的时间,也不知道用它装过几次Arch了。但是突然基础物理实验要用U盘(还非要fat32格式的,我手头只有ntfs, exfat, ext4格式的),所以只好把它格式化为fat32了。
当然啦,其实一直很想试试Arch的最小化安装,从xfce4到i3折腾。之前其实还拿这个3.7G的U盘装过Arch, 用i3作为桌面,但是还是太大了,以失败告终。
结果物理实验没有用到U盘,所以正好开启新一轮的尝试,打算打造一个功能齐全的无桌面环境的Arch使用(这是之后我的blog的一个系列,名字暂时还没想好(tty求生?))
回到正题,还是希望身边放一个启动盘,但是手头只剩下一个32g的平时用来当正常U盘用的U盘了,所以就安在它身上了。其实在Archwiki上有怎么把启动盘安装在一个分区而其他分区正常使用的方法,一方面中文版本的翻译又落后了,另一方面有同学竟然看了那篇文章还不会,那我正好水文分享一下怎么在一个分区上制作Arch启动盘。
简单制作一个普通的启动盘
准备一个U盘,你甚至不需要分区和格式化它,因为dd
命令会完全改变这个U盘
dd bs=4M if= path/to/ archlinux- version -x86_64.iso of=/dev/ sdx conv=fsync oflag=direct status=progress
这样,我们就能得到一个启动盘了,不过尽管Arch Linux Installer USB drive只用了不到1个G的空间,但是这个U盘的其他空间都用不了了,所以如果想要使用这种方便快捷的方式,那就准备一个小一点的U盘吧。
在分区上创建启动盘
This method is more complicated than writing the image directly with
dd
, but it does keep the flash drive usable for data storage (that is, the ISO is installed in a specific partition within the already partitioned device without altering other partitions). ——ArchWiki
Wiki说很难,但其实也蛮简单的,一步步按照Wiki来就行。
分区
一般不可能手头正好有一个U盘有一个大小和格式都合适的分区吧,所以还是重新分过。(注意,不要把日常使用的数据分区分成许多个,至少要留下一个较大的分区来存储比较大的文件)
只要有一个分区是fat32就行了,大小1个G就可以,archiso大小是807.3 MiB(2022.3.1的数据),启动盘的制作几乎就是把iso里的文件拷贝过去,所以大小基本也是一样的,所以1个G基本够了。
这里还要设置一个卷标,后面要用的,全英文别带特殊符号(如果不设置的话也行,先看完这篇文章就知道了)
下面以/dev/sdX
盘的/dev/sdXn
分区为例
创建
先下载好Archiso, 然后挂载要制作的对应U盘分区,把Archiso解压到其中
mount /dev/sdXn /mnt # 不知道那个的fdisk -l 查看一下
bsdtar -x -f archlinux-version-x86_64.iso -C /mnt # 解压
启动配置
显然不可能直接解压到对应分区就好了,还有修改启动参数使其正常启动。
需要在一下文件修改:
BIOS boot:
/mnt/syslinux/archiso_sys-linux.cfg
UEFI boot:
/mnt/loader/entries/01-archiso-x86_64-linux.conf
/mnt/loader/entries/02-archiso-x86_64-speech-linux.conf
/mnt/loader/entries/03-archiso-x86_64-ram-linux.conf
具体修改,就是把以上文件中的archisolabel=ARCH_*YYYYMM*
改为你自己的卷标或者UUID,就是改成:
archisolabel=YOUR-LABEL # 使用label,前提是前面设置了卷标
# 或者
archisodevice=/dev/disk/by-uuid/YOUR-UUID # 使用uuid
可以用这个命令查看label和uuid,注意千万别改错了
blkid /dev/sdXn # 查看卷标和UUID
结束
umonut /mnt
syslinux --directory syslinux --install /dev/sdXn # 得先安装syslinux和mtolls包
dd bs=440 count=1 conv=notrunc if=/usr/lib/syslinux/bios/mbr.bin of=/dev/sdX # 如果U盘是mbr分区表
dd bs=440 count=1 conv=notrunc if=/usr/lib/syslinux/bios/gptmbr.bin of=/dev/sdX # 如果U盘是gpt分区表
要我说,这比安装Arch简单多了,而Wiki的说法是Arch的安装很简单的。
祝大家使用愉快,这里只讲述了Linux下的方法,Wiki上还提供了Windows, Mac甚至Android上的方式。