Arch Linux 的基本安装

好久没写博客,最近AI浪潮,忙疯了,反而做事的效率上来了。于是开了一堆坑,比如继续写博客。

为什么是Arch?

我一直是Debian/Ubuntu的用户,以前还作为Desktop来用。这几年它们主要作为Server的OS,很好用,也不打算换。

而Arch,我主要是看中它的高度可折腾性。我希望借由Arch能够回到将Linux作为Desktop方面的生产主力的状态。

应该有好处。

这个安装笔记只是一个基本安装的记录,不仅没做到Desktop的程度,连用户都没设置。不着急,慢慢来。后面有进展我还会更新本篇。

学习资料

机器环境

我使用了VirtualBox来作为安装机器,给了2核2G,64G硬盘。

后面我再找实体机器来安装,比如一台2012年的MBA。

好了,接下来把iso文件塞进vbox,开始安装~

确认UEFI模式

ls /sys/firmware/efi/efivars

确认网络

ping bilibili.com

设置时钟

timedetectl set-ntp true
timedatectl set-timezon Asia/Shanghai
timedatectl status

设置镜像

编辑镜像列表文件

vim /etc/pacman.d/mirrorlist

通过正则替换注释掉所有镜像

:v/^\(#\|\s*$\)/ s/^/#/

然后把中科大的镜像放在最前面

Server = https://mirrors.ustc.edu.cn/archlinux/$repo/os/$arch

## Arch Linux ...
##
## ...

分区与格式化

分区

检查当前分区状况

lsblk

然后进行分区操作,一般SATA盘是sda、sdb之类,NVME盘是nvme0n1、nvme1n2之类,后面根据我的实际情况来

cfdisk /dev/sda

可以Delete原本的分区,然后在Free space上New新的分区,可以通过Type设置分区类型

  1. 第一个分区建256M,如果已经存在就别删除继续用,新建记得类型用EFI System
  2. 第二个分区用满几乎全部磁盘,留两倍内存容量给交换分区就行,类型就是默认的Linux filesystem
  3. 第三个分区给虚拟内存交换,用尽剩余的空间即可,类型选Linux swap

然后Write写入,要敲yes确认,然后Quit退出cfdisk,然后查看一下分区情况

lsblk

格式化

sda1是EFI分区,如果分区时就存在,那么不要删除也不要格式化,如果是之前新建的则要格式化

mkfs.fat -F32 /dev/sda1

格式化sda2,用Btrfs

mkfs.btrfs -L Arch /dev/sda2

格式化sda3

mkswap /dev/sda3

创建子卷,先挂载sda2到/mnt

mount -t btrfs -o compress=zstd /dev/sdxn /mnt

可以看一下挂载情况

df -h

创建两个子卷

btrfs subvolume create /mnt/@
btrfs subvolume create /mnt/@home

然后看一下子卷情况

btrfs subvolume list -p /mnt

卸载/mnt

umount /mnt

挂载分区目录,要按顺序

mount -t btrfs -o subvol=/@,compress=zstd /dev/sda2 /mnt
mkdir /mnt/home
mount -t btrfs -o subvol=/@home,compress=zstd /dev/sda2 /mnt/home
mkdir /mnt/boot
mount /dev/sda1 /mnt/boot
swapon /dev/sda3

完了可以用检查下

df -h
free -h

安装系统

安装基础包

pacstrap /mnt base base-devel linux linux-firmware btrfs-progs

处理虚拟控制台相关报错

如果上面的安装过程中有ERROR: file not found: '/etc/vconsole.conf'的错误,就需要自己创建一个/etc/vconsole.conf

echo 'KEYMAP=us' > /mnt/etc/vconsole.conf

然后重新生成initramfs 镜像,这样系统才知道我们加了这个文件

arch-chroot /mnt mkinitcpio -P

如果还提示内核模块不存在,就运行

arch-chroot /mnt pacman -Syu linux

重新按照内核,再次执行

arch-chroot /mnt mkinitcpio -P

安装必要功能软件

pacstrap /mnt networkmanager vim sudo zsh zsh-completions

生成fstab

genfstab -U /mnt > /mnt/etc/fstab
cat /mnt/etc/fstab

切换到新系统

arch-chroot /mnt

设置主机名和HOSTS

编辑主机名设置文件

vim /etc/hostname

我设置成 funcman-arch

注意主机名只能包含字母、数字、连字符(-)、点(.)和下划线(_)

设置hosts

vim /etc/hosts

我的设置

127.0.0.1   localhost.localdomain localhost
::1         localhost.localdomain localhost
127.0.1.1   funcman-arch.localdomain funcman-arch

加上的127.0.1.1虽然不是必须的,设置了可以避免一些问题

设置时区和地域

链接上时区文件即可

ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

再把时间同步到硬件

hwclock --systohc

设置Locale

打开设置文件

vim /etc/locale.gen

找到en_US.UTF-8 UTF-8zh_CN.UTF-8 UTF-8,将#注释去掉

然后执行

locale-gen
echo 'LANG=en_US.UTF-8' > /etc/locale.conf

为 root 用户设置密码

passwd root

输入两遍相同的密码

安装微码

根据你用的CPU制造商安装对应的微码

pacman -S intel-ucode #Intel
pacman -S amd-ucode #AMD

虚拟机就不用装了

安装引导程序

pacman -S grub efibootmgr os-prober
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=ARCHBOOT

编辑GRUB配置,定制一下

vim /etc/default/grub

找到GRUB_CMDLINE_LINUX_DEFAULT,做以下修改:

生成配置

grub-mkconfig -o /boot/grub/grub.cfg

结束安装

执行

exit           #退回安装环境
umount -R /mnt #卸载新分区
reboot         #重启

重启时记得移除安装介质。

暂时完事~