TTY prepare works
Get current IP address
ip a
Change root password
passwd root
Change sshd config
vim /etc/ssh/sshd_config
Restart ssh service
systemctl restart sshd
SSH to archlinux live iso
ssh root@192.168.123.100
Bootstrap System
Disable reflector service
sudo systemctl stop reflector.service
vim /etc/pacman.conf
-----
[options]
Color
ParallelDownload = 5
[multilib]
Include = /etc/pacman.d/mirrorlist
# Add CN source
[archlinuxcn]
Server = https://mirrors.bfsu.edu.cn/archlinuxcn/ $arch
-----
vim /etc/pacman.d/mirrorlist
-----
Server = https://mirrors.bfsu.edu.cn/archlinux/ $repo /os/ $arch
Server = https://mirrors.tuna.tsinghua.edu.cn/archlinux/ $repo /os/ $arch
-----
Partitions
wipefs --all /dev/nvme0n1
With gdisk
# list paritions
lsblk
# create patitions
gdisk /dev/nvme0n1
# create efi partition
# n
# size: +1G
# hexcode or guid: ef00
# create btfs partition
# n
# size: <enter>
# hexcode or guide: <enter>
# write partitions
# w
# confir,: Y
# verify new partitions
lsblk
# format paritions
mkfs.fat -F32 /dev/nvme0n1p1
mkfs.btrfs /dev/nvme0n1p2
mkfs.fat -F32 /dev/nvme0n1p1
Create sub-volumes
mount /dev/nvme0n1p2 /mnt
cd /mnt
btrfs subvolume create @
btrfs subvolume create @home
cd
umount /mnt
mount -o noatime,space_cache=v2,compress=zstd,ssd,discard=async,subvol=@ /dev/nvme0n1p2 /mnt
mkdir /mnt/{boot,home}
mount -o noatime,space_cache=v2,compress=zstd,ssd,discard=async,subvol=@home /dev/nvme0n1p2 /mnt/home/
mount /dev/nvme0n1p1 /mnt/boot
System install
Install base system
# install base packages
pacstrap /mnt sudo base linux linux-firmware linux-headers
pacstrap /mnt git vim amd-ucode gvfs btrfs-progs
pacstrap /mnt networkmanager openssh usbutils terminus-font os-prober neovim make gcc
# generate fstab
genfstab -U /mnt >> /mnt/etc/fstab
arch-chroot /mnt
vim /etc/mkinitcpio.conf
-----
...
MODULES = ( btrfs )
...
-----
mkinitcpio -p linux
Set timezone
sudo ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
sudo timedatectl set-ntp true
sudo hwclock --systohc
Set locale
vim /etc/locale.gen
-----
en_US.UTF-8 UTF-8
zh_CN.UTF-8 UTF-8
-----
locale-gen
echo 'LANG=en_US.UTF-8' > /etc/locale.conf
Set hostname
echo "archlinux" > /etc/hostname
echo "127.0.0.1 localhost" >> /etc/hosts
echo "::1 localhost" >> /etc/hosts
echo "127.0.0.1 archlinux.localdomain archlinux" >> /etc/hosts
Create default user
useradd -m -g users -G wheel -s /bin/bash suling
passwd suling
echo 'suling ALL=(ALL) NOPASSWD: ALL' > /etc/sudoers.d/suling
chmod 440 /etc/sudoers.d/suling
Enable default services
sudo systemctl enable NetworkManager
sudo systemctl enable sshd
sudo systemctl enable cronie.service
Install boot manager
Install packages
pacman -S grub efibootmgr os-prober
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=ARCH
Config files
vim /etc/default/grub
-----
...
GRUB_DEFAULT = 0
GRUB_TIMEOUT = 3
GRUB_DISTRIBUTOR = "Arch"
GRUB_CMDLINE_LINUX_DEFAULT = "loglevel=3 quiet nowatchdog"
GRUB_CMDLINE_LINUX = ""
GRUB_DISABLE_OS_PROBER = false
...
-----
Generate grub config
grub-mkconfig -o /boot/grub/grub.cfg
vim /etc/pacman.conf
-----
...
[options]
Color
ParallelDownload = 5
[multilib]
Include = /etc/pacman.d/mirrorlist
# Add CN source
[archlinuxcn]
Server = https://mirrors.ustc.edu.cn/archlinuxcn/ $arch
...
-----
vim /etc/pacman.d/mirrorlist
-----
Server = https://mirrors.bfsu.edu.cn/archlinux/ $repo /os/ $arch
Server = https://mirrors.tuna.tsinghua.edu.cn/archlinux/ $repo /os/ $arch
...
-----
sudo pacman -Syu
sudo pacman -Sy pacman-contrib archlinuxcn-keyring
sudo pacman-key --lsign farseerfc@archlinux.org
Unmount partition
exit
umount -R /mnt
reboot
Post installation
Paru configs
vim /etc/paru.conf
-----
...
BottomUp
SkipReview
-----
Makepkg configs
vim /etc/makepkg.conf
-----
...
MAKEFLAGS = "-j8"
...
-----
Install KDE-Plasma
sudo pacman -S plasma-meta konsole dolphin yakuake okular gwenview spectacle kdeconnect sshfs ark tela-icon-theme-git
sudo systemctl enable sddm
sudo systemctl start sddm
Install nesserary packages
sudo pacman -S vim xdg-utils xdg-user-dirs openssh cronie base-devel gcc make cmake paru
sudo pacman -S xorg xorg-xkill xorg-xset xorg-xinput xorg-xsetroot xorg-xset xclip
sudo systemctl enable sshd --now
sudo systemctl enable cronie --now
Network
sudo pacman -S net-tools iputils inetutils dnsutils wpa_supplicant bridge-utils lsof
sudo systemctl enable NetworkManager --now
Bluetooth
# Load the `btusb` kernel module
sudo modprobe btusb
lsmod | grep btusb
# auto load module at boot
echo "btusb" | sudo tee /etc/modules-load.d/bluetooth.conf
sudo pacman -S bluez bluez-utils blueman blueberry
sudo systemctl enable bluetooth --now
# Load kernel modules at boot
sudo modprobe i2c-dev bluetooth
echo "i2c-dev btusb" | sudo tee /etc/modules-load.d/peripherals.conf
Install fonts
sudo pacman -S adobe-source-han-serif-cn-fonts wqy-zenhei adobe-source-han-sans-cn-fonts adobe-source-han-serif-cn-fonts noto-fonts-cjk ttf-iosevka-nerd
fc-cache -vf
AMD GPU
# Install AMDGPU driver packages
sudo pacman -S xf86-video-amdgpu vulkan-radeon libva-mesa-driver mesa-vdpau
# Set kernel module parameters
sudo vim /etc/modprobe.d/amdgpu.conf
-----
options amdgpu si_support= 1
options amdgpu cik_support= 1
-----
sudo vim /etc/modprobe.d/radeon.conf
-----
options radeon si_support= 0
options radeon cik_support= 0
-----
# Load GPU module in mkinitcpio
sudo vim /etc/mkinitcpio.conf
-----
MODULES = ( amdgpu radeon btrfs )
-----
sudo mkinitcpio -p linux
# Configure Xorg server
sudo vim /etc/X11/xorg.conf.d/20-amdgpu.conf
-----
Section "OutputClass"
Identifier "AMD"
MatchDriver "amdgpu"
Driver "amdgpu"
EndSection
-----
# Reboot
reboot
Useful packages
# Fcitx5
sudo pacman -Sy fcitx5-im fcitx5-chinese-addons fcitx5-rime rime-ice
# System utils
paru -Sy wget curl tmux zsh git unzip fish tree nano htop zip p7zip jq htop neofetch nvtop npm smbclient
# User utils
paru -Sy aria2-fast xdotool ffmpeg q-dns nali-go-bin eza bat proxmox-backup-client timeshift-autosnap timeshift-autosnap cifs-utils debtap n-m3u8dl-re-bin nali-go-bin proxmox-backup-client v2raya dust yt-dlp mtr tssh
# Desktop applications
## Base
paru -Sy barrier gparted visual-studio-code-bin google-chrome obsidian tela-icon-theme-git kwalletmanager filezilla qbittorrent typora-free-bin libreoffice-fresh-zh-cn libreoffice-fresh mouse-actions-gui-bin realvnc-vnc-viewer localsend
## Communication
paru -Sy telegram-desktop linuxqq-nt-bwrap wechat-universal-bwrap
## Video/Audio/Images
paru -Sy splayer-bin vlc upscayl-bin losslesscut-bin obs-studio