以下安装步骤的目的是安装一个及其基本的Arch Linux
从2021年4月起,Arch Linux安装镜像中已经包含了一个官方的简易安装程序archinstall。可以支持在连接网络后进行英文交互式安装。Arch Linux - News: Installation medium with installer
ls /sys/firmware/efi/efivars
如果指令执行成功,则系统以UEFI方式启动;如果不存在,则可能为BIOS启动
#非必要步骤#
默认是qwerty-US的键盘布局,无需更换,更换不影响安装在硬盘上的系统
ls /usr/share/kbd/keymaps/**/*.map.gz | less
查看所有键盘布局,找到对应包名,如/usr/share/kbd/keymaps/i368/qwertz/de-latin1.map.gz
loadkeys de-latin1
设置布局
ls /usr/share/kbd/consolefonts/
查看所有终端字体
setfont*
设置字体,setfont指令比较复杂,我也没用过,放一个手册页
有线网络自动连接
无线网络使用 iwctl 连接
移动网络使用 mmcli 连接
timedatectl set-ntp true
timedatectl set-timezone Asia/Shanghai
一些指令参数:
set-ntp true 启动网络对时;
list-timezones 查询所有时区信息;
set-timezone 可以将时区改为任意时区,中国一般是 Asia/Shanghai ;
set-local-rtc true 使用本地时作为系统时钟时间。这是Windows默认的时间计算方式,设为true可以与Windows统一时间计算方式;也可以在Windows系统中修改注册表使Windows与Linux统一时间计算方式
status 查看当前时钟状态
reflector -c China > /etc/pacman.d/mirrorlist
使用reflector从Arch Mirror List拉取最新的镜像,镜像按速度排序。
也可以打开 /etc/pacman.d/mirrorlist 手动添加国内的镜像源。如USTC镜像:Server = https://mirrors.ustc.edu.cn/archlinux/$repo/os/$arch
一些高级磁盘可能拥有多种逻辑扇区大小,如果有需要,可以通过以下指令查看:
hdparm -I /dev/sdX | grep 'Sector size:' #sata硬盘
nvme id-ns -H /dev/nvme0n1 | grep "Relative Performance" #nvme硬盘
如果出现一个中括号说明可以改变逻辑扇区大小,如:
[ Supported: 512 4096 ]
nvme除了提示可用扇区大小外还会在每行末尾提示在对应逻辑扇区大小下磁盘表现情况如:
LBA Format 1 : Metadata Size: 0 bytes - Data Size: 4096 bytes - Relative Performance: 0x1 Better
此时,要更换逻辑扇区大小,可以使用指令:
hdparm --set-sector-size 4096 --please-destroy-my-drive /dev/sdX #sata硬盘
nvme format --lbaf=1 /dev/nvme0n1 #nvme硬盘
我习惯使用 fdisk(学的就是这个),另有 parted,需要可视界面则可使用cfdisk或gparted
fdisk -l
查看磁盘信息,用于分辨要安装的磁盘
fdisk /dev/sda
对 磁盘sda 分区(交互模式)
分区指令序列:
n -> [分区号] -> [分区起始点] -> +[磁盘大小] -> t -> [分区号] -> [标记号]
输入分区起始点时请注意对齐,即输入数字为 Sector Size(physical)/Unit 的整数倍,例:
Unit为512B的硬盘对齐4096B的物理扇区需要起始点为8的整数倍 4096/512=8
w 保存分区表并退出
标准的的GPT(仅UEFI)磁盘分区有:
标记为 1 efi 的EFI系统分区,大小最小300MiB
标记为 19 Linux Swap 的 swap 分区,大小视情况而定。非必须;如果要使用挂起到硬盘(休眠),则推荐分配与内存相同大小的swap分区;另有使用swap文件的swap方案;Linux Mint的默认swap大小为2GiB,可能使用swap文件,因为重新分区时没有看到单独的swap分区
标记为 20 Linux File System 或 23 Linux Root(x86_64) 的系统分区(根分区)
自己想的,不保证正确:对于机械硬盘,0磁道在磁盘最外围,访问速度最快。swap分区需要尽可能靠外以提高IO性能。
!:额外安装BIOS启动系统,要在磁盘前2TB内创建一个1MiB大小的标记为4 BIOS boot的分区用来安装grub
使用mkfs.xxx格式化成除swap的任何格式,swap需要 mkswap 指令:
然后 /mnt 为根,挂载对应磁盘
根分区挂载到 /mnt ,efi 挂载到 /mnt/boot ,同时使用 swapon 指令启用刚分好的swap分区
mount /dev/sda3 /mnt
mount --mkdir /dev/sda1 /mnt/boot
swapon /dev/sda2
使用 pacstrap /mnt [软件包名] 安装软件,这一步非常自由,你想装什么就装什么,Arch 不会给你任何限制。
pacstrap -K /mnt base linux linux-firmware
以上这些包会提供一个最小的Arch Linux环境。安装base包时需要添加-K参数初始化Arch Keyring
base:Arch Linux 基础套件
linux:标准Linux内核,可用linux-lts,linux-zen 或 自编译内核等替代
linux-firmware:一般驱动程序,在虚拟机、容器中运行的Linux不需要安装
其他推荐参考:
Arch live CD使用的包
应用程序列表 - Arch Linux 中文维基
建议阅读 - Arch Linux 中文维基
要考虑设备驱动、网络配置、文件管理、RAID、LVM、文本编辑、手册等:
不包含在linux-firmware包中的设备驱动,如b43-fwcutter 等
Network configuration - ArchWiki
systemd就可以管理网络,但莫得GUI,可以安装一个额外的网络管理器
pacstrap /mnt networkmanager
内置的DHCP与DNS客户端一般够用,也可额外装;ip(iproute2)包含在base中
File systems - ArchWiki (archlinux.org)
pacstrap /mnt dosfdtools
各种用户空间软件:FAT(dosfstools) exFAT(exfatprogs*) NTFS*(ntfs-3g) ext4 (e2fsprogs*)
*exfat:Linux5.4中加入支持,这个包就是被包含进内核的实现
*NTFS:Linux5.15后,Arch Linux加入ntfs3内核模块实现NTFS读写,无需安装
*e2fsprogs:被base依赖:base->coreutils->libcap->pam->krb5->libldap->e2fsprogs
LVM与RAID分区
lvm2,mdadm(软RAID) dmraid(硬RAID)
先了解软件包吧,目前没有组过RAID再看,有待扩展
文本编辑在配置Arch中占大头,文本编辑软件相当于Arch的设置
pacstrap /mnt nano vim
vim 与vi 没有关系。如果需要可以安装vi,但一般会有使用vim替代vi的配置方式
pacstrap /mnt man-db man-pages texinfo
texinfo:GNU软件除了man之外还包含info,且后者一般较详细
genfstab -U /mnt >> /mnt/etc/fstab
-U指使用UUID生成fstab
arch-chroot /mnt
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
hwclock --systohc
以上指令为将RTC设为UTC并生成对应的/etc/adjtime文件。adjtime文件存放系统时钟的初始值。也可以使用--localtime 设置RTC为本地时,与 timedatectl 的设置同步即可
编辑 /etc/locale.gen,取消注释en_US.UTF-8 UTF-8 以及zh_CN.UTF-8 UTF-8需要的本地化
之后使用 locale-gen 生成区域设置
创建 /etc/locale.conf 添加如:LANG=en_US.UTF-8 字样设置语言参数*
*在没有处理过的终端界面不要更改到zh_CN.UTF-8,在之后的
#非必要步骤# 编辑 /etc/vconsole.conf 添加如:KEYMAP=de-latinl 终端键盘布局;添加如:FONT=lat2-16
FONT_MAP=8859-2 可以设置终端字体*。
但是字体这事好像不是我现在能简介出来的,有待扩展
启用NetworkManager
systemctl enable NetworkManager.service
创建 /etc/hostname 并在其中设定本机名
#非必要步骤#
如果使用了LVM、RAID等高级硬盘技术,需要编辑 /etc/mkinitcpio.conf 并添加对应设置并运行 mkinitcpio -P。否则可能出现系统无法启动的情况,有些使用iSCSI技术的USB盘在进行外置启动时可能也需要配置此项。
对于一般的系统,这一步在安装内核时已由pacman完成配置,无需此步骤。
passwd
为root用户添加密码
Arch boot process#Boot loader - ArchWiki (archlinux.org)
安装任意一个引导工具(以下以grub为例),并设置引导。
UEFI还需要安装 efibootmgr
pacman -Syu grub efibootmgr
grub(UEFI):grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=GRUB
grub(BIOS):grub-install --target=i386-pc /dev/sdx
可添加--recheck选项验证引导安装是否存在错误
如果要创建移动启动盘(可被UEFI固件检测)
grub-install --target=x86_64 --efi-directory=/boot --removeable
如果需要安全启动,请自行参考GRUB - ArchWiki
Microcode - ArchWiki
如果安装于实体机且使用Intel或AMD的处理器,需要启用微码更新:
AMD处理器需要安装 amd-ucode
pacman -Syu amd-ucode
Intel处理器则需要安装 intel-ucode
pacman -Syu intel-ucode
grub 使用 grub-mkconfig -o /boot/grub/grub.cfg 即可生成带微码更新的默认引导设置
退出chroot环境,卸载安装区域并重启
umount -R /mnt & reboot