身边放个启动盘(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=f​​sync 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上的方式。

参考:USB flash installation medium