本文记录安装 archlinux 的过程,由于安装过程中所见皆是英文,过程记录不自禁也半洋半中,还请读者谅解。

test if your conputer is supported by linux

Run the ubuntu live CD to test.

make a start disk

Advice ventoy.

begin installing

Set your BIOS to boot from your start disk. For nvidia GPU owner, you need to set nomodeset for booting options.

mannual install

network config

Of course, the first thing you should do when you start arch install is to configure network.

For myself, I choose to connect to Tsinghua Secure WIFI.

connect to normal wifi

use iwctl to start. use station {iw dev} get-network. then you see the wifis that you can connect. use station {iw dev} connect {ssid} to connect. then enter your password.

use ping baidu.com or ping google.com to test if you have Internet Connection.

connect to college network

for wifi

use iwctl to start and station {iw dev} get-network to confirm your target ssid. edit config file by vim network_config:

network={
    ssid="{wifi name}"
    key_mgmt=WPA-EAP
    eap=PEAP
    identity="{user name}"
    password="{password}"
    phase2="auth=MSCHAPV2"
}

start connection

ip link set wlan0 up
wpa_supplicant -i {iw dev} -c {path to your config} -B
dhcpcd {iw dev}

you can test your connnection now.

for wire connection(never test this method before)
network={
    key_mgmt=IEEE8021X
    eap=PEAP
    identity="{user name}@login.tsinghua.edu.cn"
    password="{password}"
    phase2="auth=MSCHAPV2"
    eapol_flags=0
}

接下来同样,但是之前的 iw dev 部分需要替换成有线控制的器件名,可以使用 ip addr show 查看.

wpa_supplicant -i {iw dev} -D wired -c {path to your config} -B

创建分区以及文件系统

使用 cfdisk 这是一个现代的 fdisk 替代品,可以方便使用。

创建之后,lsblk 用于查看分区情况,之后使用 mkfs.{filesystem type you want}

这里我使用 mkfs.btrfs,因为我听说它的性能很棒,并且原生支持创建系统还原点。

挂载系统分区

配置 btrfs

格式化为 btrfs
mkfs.btrfs -f /dev/nvme0n1p3
mount /dev/nvme0n1p3 /mnt
创建所需子卷

Do not create .snapshots subvolume, because snapper will generate it.

btrfs subvolume create /mnt/@
btrfs subvolume create /mnt/@home
btrfs subvolume create /mnt/@var
# btrfs subvolume create /mnt/@.snapshots
umount /mnt
挂载子卷
mount -o compress=zstd,subvol=@ /dev/nvme0n1p3 /mnt
# mkdir -p /mnt/{home,var,.snapshots}
mkdir -p /mnt/{home,var}
mount -o compress=zstd,subvol=@home /dev/nvme0n1p3 /mnt/home
mount -o compress=zstd,subvol=@var /dev/nvme0n1p3 /mnt/var
# mount -o compress=zstd,subvol=@.snapshots /dev/nvme0n1p3 /mnt/.snapshots
安装工具包
pacstrap -i /mnt base
生成分区表
genfstab -U -p /mnt >> /mnt/etc/fstab
cat /mnt/etc/fstab

对我来说情况有些复杂,因为我原本就有一个用于 window 的分区。

我将 / 挂载到 /mnt,/home 挂载到 /mnt/home,efi 分区挂载到 /mnt/boot/efi.

当然,如果这里没有你需要的目录,你就创建一个。

进入待安装环境

arch-chroot /mnt

开始安装

设置 root 密码

passwd

添加用户

useradd -m -g users -G wheel fateone & passwd fateone

安装必要包

Set pacman mirror vim /etc/pacman.d/mirrorslist

Add Server = https://mirrors.tuna.tsinghua.edu.cn/archlinux/$repo/os/$arch

pacman -S base-devel dosfstools grub efibootmgr gnome gnome-tweaks mtools neovim networkmanager openssh os-prober sudo linux linux-headers linux-firmware

Run lspci to see what gpu you have.

For nvidia pacman -S nvidia nvidia-utils For amd pacman -S mesa lib32-mesa vulkan-radeon lib32-vulkan-radeon libva-mesa-driver mesa-vdpau For intel iGPU pacman -S mesa lib32-mesa vulkan-intel lib32-vulkan-intel intel-media-driver

config firmware mkinitcpio -p linux

配置语言

set language nvim /etc/locale.gen to uncomment “en_US UTF8”

locale-gen

设置时区

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

配置 grub

install grub grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=Arch --recheck

boot 失败解决方案

grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=Arch --recheck

/boot/efi/EFI/Archlinux/grubx64.efi复制到 /boot/efi/EFI/BOOT/BOOTx64.EFI

防止 grub 字体出现问题 cp /usr/share/locale/en\@quot/LC_MESSAGES/grub.mo /boot/grub/locale/en.mo

用于检测双系统,可以从 arch boot windows nvim /etc/default/grub to set GRUB_DISABLE_OS_PROBER=false

生成 grub 配置,这一步会设置 grub 启动项 grub-mkconfig -o /boot/grub/grub.cfg

启用 sshd NetworkManager gdm systemctl enable sshd NetworkManager gdm

之后就可以 exit chroot 环境,exit之后reboot

配置 snapper

pacman -S snapper
snapper -c root create-config /

然后可以编辑配置文件

nvim /etc/snapper/configs/root

# 建议
# SUBVOLUME="/"
# ALLOW_USERS="fateone"
systemctl enable --now snapper-timeline.timer # 自动快照
systemctl enable --now snapper-cleanup.timer # 自动清理
systemctl enable --now snapper-boot.timer # 开机关机自动快照

前面的设置中我们自己设置了 /@.snapshots 子卷,并且进行了挂载,但其实我们无需管理这些,snapper 会自动管理。因此这里可以

# sudo umount /.snapshots
# sudo btrfs subvolume delete -id {} / # 删除 /@.snapshots 子卷
sudo snapper -c root create-config /
sudo snapper -c home create-config /home

配置 zram (optional)

pacman -S zram-generator

编辑配置文件

# /etc/systemd/zram-generator.conf
[zram0]
zram-size = ram
compression-algorithm = zstd
systemctl daemon-reexec
systemctl start /dev/zram0
swapon --show
sudo systemctl enable systemd-zram-setup@zram0.service

auto install

Install by archintall command.

post install prepare

gnome extension suppport

refer edge 收藏夹

browser connector[https://gitlab.gnome.org/GNOME/gnome-browser-connector] can use paru install gnome connector

input panel[https://extensions.gnome.org/extension/261/kimpanel] app indicator[https://extensions.gnome.org/extension/615/appindicator-support]

input method

use fcitx5

sudo pacman -S fcitx5 fcitx5-gtk fcitx5-qt fcitx5-chinese-addons fcitx5-configtool
sudo pacman -S fcitx5-im fcitx5-mozc fcitx5-pinyin-zhwiki

config refer zhihu

sudo vi /etc/environmenet

#添加如下内容,并确保有关于fcitx的配置只有这俩有
#配置的具体意义,移步他的文章查阅

XMODIFIERS=@im=fcitx
QT_IM_MODULE=fcitx
vi ~/.gtkrc-2.0
#添加如下内容
gtk-im-module="fcitx"
vi .config/gtk-3.0/settings.ini
# 在[Settings]下添加
gtk-im-module=fcitx
gsettings set org.gnome.settings-daemon.plugins.xsettings overrides "{'Gtk/IMModule':<'fcitx'>}"