PEOPLE DIE IF THEY ARE KILLED! (FACT!)

archlinux

archlinux linux

Install

EFI/GPT

systemctl start sshd
passwd root

如果出现找不到分区的情况 unable to open /dev/sda1: No such file or directory

partprobe /dev/sda1
# or partprobe

分区

# lsblk 或 fdisk -l 查看当前可用的分区或磁盘

# 使用 cfdisk 分区,分两个区,一个引导分区,一个用作 LVM 的分区
# 如果是 BIOS/MBR 方式引导,不需要创建引导分区
# 如果已经有引导分区了,记下分区路径 /dev/sdxY
# 200M EFI  /dev/sda1
# 19.8G LVM  /dev/sda2
# cfdick 启动后选择 gpt
cfdisk

# 写入文件系统(格式化)
mkfs.fat -F32 /dev/sda1

# 配置 gpt,也可以用 fdisk 或 gdisk (gpt 版本 fdisk)
parted
select /dev/sda
mklable gpt

lvm 创建(如果不需要 lvm 直接正常给分区写入文件系统即可)

# 1. 创建物理卷(PV)所在的分区。2. 创建物理卷(PV)。如果你只有一个硬盘,那么你最好只创建一个分区一
# 个物理卷;如果你有多个硬盘,你可以创建多个分区,在每个分区上分别创建一个物理卷。3. 创建卷组(VG),
# 并把所有物理卷加进卷组。4. 在卷组(VG)上创建逻辑卷(LV)

lvmdiskscan

# 创建物理卷
pvcreate /dev/sda2
pvdisplay

# 创建卷组
vgcreate VolGroup00 /dev/sda2
vgdisplay

# 在卷组上创建逻辑卷
lvcreate -l +100%FREE VolGroup00 -n lvolroot
lvdisplay

# 出错后删除命令
# lvremove /dev/VolGroup00/lvolroot
# vgremove VolGroup00
# pvremove /dev/sda2

# 加载模块、并扫描与激活卷组
modprobe dm-mod
vgscan
vgchange -ay

# 写入文件系统(格式化)
mkfs.ext4 /dev/mapper/VolGroup00-lvolroot

挂载分区

mkdir -p /mnt
mkdir -p /mnt/boot
mount /dev/mapper/VolGroup00-lvolroot /mnt
mount /dev/sda1 /mnt/boot

dhcpcd

dhcpcd

wifi-menu

pacman -S netctl dialog
wifi-menu

# 如果wifi-menu无法联网,尝试下面方法
systemctl start wpa_supplicant.service
nmcli dev wifi list
nmcli device wifi connect "wifi name" password "wifi password"

iwctl

pacman -S iwd
systemctl enable iwd
systemctl start iwd
iwctl

配置国内镜像源

# 将以下国内镜像移到开头,没有就手动输入一下,遇到过有时候有,有时候没有的情况
# Server = http://mirrors.tuna.tsinghua.edu.cn/archlinux/$repo/os/$arch
# Server = http://mirrors.zju.edu.cn/archlinux/$repo/os/$arch
vim /etc/pacman.d/mirrorlist

安装系统

pacstrap /mnt base base-devel linux vim dhcpcd git

写分区表

genfstab -U /mnt >> /mnt/etc/fstab
# genfstab -L /mnt >> /mnt/etc/fstab

切换系统

arch-chroot /mnt
# 设置 root 密码
passwd root

启用 lvm 务必保证 lvm2 已安装

# 在 block 与 filesystem 这两项中间插入 lvm2
vim /etc/mkinitcpio.conf

# 修改后必须重新执行以下命令
pacman -S lvm2

英特尔 CPU 需要安装

pacman -S intel-ucode

安装 grub bootloader:

# os-prober 可用于检测现有系统
pacman -S os-prober ntfs-3g grub efibootmgr
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=grub
grub-mkconfig -o /boot/grub/grub.cfg

# or BIOS/MBR
pacman -S grub
# /dev/sdx 是硬盘,不是分区,不要带分区号
grub-install --target=i386-pc /dev/sdx
grub-mkconfig -o /boot/grub/grub.cfg

安装 openssh

pacman -S openssh
systemctl enable sshd
systemctl start ssh

新建用户,配置 sudo(方便 ssh 登录,不要直接以 root 登录)

useradd -m -G wheel zy
passwd zy
pacman -S sudo
vim /etc/sudoers  # 注释掉 %wheel 相关的行,最好不要启用 NOPASSWD

退出重启

exit
umount -R /mnt
reboot

Config

先联网

更新系统时间

timedatectl set-ntp true

设置时区

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

设置locale

cat <<'EOF' >> /etc/locale.gen
zh_CN.UTF-8 UTF-8
en_US.UTF-8 UTF-8
EOF
locale-gen

# 解决终端 unicode 提示符造成的问题
cat <<'EOF' >> /etc/locale.conf
LANG=en_US.UTF-8
LC_ALL=en_US.UTF-8
LC_CTYPE=zh_CN.UTF-8
EOF

设置主机名

echo "your-hostname" > /etc/hostname
cat <<'EOF' > /etc/hosts
127.0.0.1  localhost
::1  localhost
EOF

创建交换文件

dd if=/dev/zero of=/swapfile bs=1M count=4096 status=progress
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
echo "/swapfile none swap defaults 0 0" >> /etc/fstab

启用 dhcpcd 服务

systemctl enable dhcpcd.service

图形界面网络配置

pacman -S dialog wpa_supplicant networkmanager network-manager-applet netctl
# 桌面环境使用的是NetworkManager
sudo systemctl disable netctl
sudo systemctl enable NetworkManager

安装图形界面

# 驱动
sudo pacman -S xf86-video-intel

# 图形服务
sudo pacman -S xorg

# 桌面环境
sudo pacman -S xfce4 xfce4-goodies
# 或 sudo pacman -S plasma kde-applications

# 安装桌面管理器
sudo pacman -S sddm
sudo systemctl enable sddm

字体

# 字体,基本能解决 cjk 字体和 emoji 问题
pacman -S noto-fonts-cjk  noto-fonts-emoji
pacman -S adobe-source-code-pro-fonts

# 文鼎字体,楷书 (带有笔触) Unicode 字体 (推荐启用反锯齿)
# emacs 用的方正楷需要自行安装
pacman -S ttf-arphic-ukai

# pacman -S noto-fonts

# 查看已安装字体
fc-list
# 只显示 family 和 style
fc-list : family style

# /usr/share/fonts/ 或 ~/.local/share/fonts
copy {your font file} /usr/share/fonts/
fc-cache -vf

修正简体中文显示为异体(日文)字形

输入法 Fcitx_(简体中文)

# 安装输入法及输入法模块
pacman -S fcitx fcitx-im fcitx-configtool

# 配置输入法,点击加号,取消勾选 Only Show Current Language,搜索选择需要的输入法即可,如 wubi
fcitx-configtool

vim /etc/profile
# 在文件开头加入以下行,解决一些软件无法调出fcitx的问题
# export XMODIFIERS="@im=fcitx"
# export GTK_IM_MODULE="fcitx"
# export QT_IM_MODULE="fcitx"

如果是虚拟机安装

open-vm-tools

VMware_Tools_与_Open-VM-Tools_方案对比

窗口分辨率自动适配

sudo pacman -S open-vm-tools gtkmm gtk2 gtkmm3
sudo systemctl enable vmtoolsd.service
sudo systemctl start vmtoolsd.service
sudo systemctl enable vmware-vmblock-fuse.service
sudo systemctl start vmware-vmblock-fuse.service

# 通过 mkinitcpio.conf 加载以下模块
# MODULES="vsock vmw_vsock_vmci_transport vmw_balloon vmw_vmci vmwgfx"
sudo vim /etc/mkinitcpio.conf
mkinitcpio -p linux
sudo reboot

Fix

安装盘启动

lsblk 或 fdisk -l 查看当前可用的分区或磁盘

将系统所有分区及引导分区挂载到 /mnt

mkdir -p /mnt
mkdir -p /mnt/boot
mount /dev/mapper/VolGroup00-lvolroot /mnt
mount /dev/sda1 /mnt/boot

arch-chroot /mnt

修复相应问题

Pacman

# pacman -h

# 查询
pacman -Ss package_name

# 安装
pacman -S package_name

# !!! 永远使用该方式更新,不要进行部分更新,安装包时出现 404 就该更新了,或者安装包之前就更新
# archlinux 不支持部分更新 https://wiki.archlinux.org/title/System_maintenance#Partial_upgrades_are_unsupported
pacman -Syu

# 软件包缓存在 /var/cache/pacman/pkg/,不会自动清理,如果太多,可以删一下或用 paccache 删

# !!! 永远不要运行 pacman -Sy
# !!! 永远不要运行 pacman -Sy
# !!! 永远不要运行 pacman -Sy
# !!! 手贱部分更新后,更新系统时有冲突解决方案 --overwrite 掉冲突的项
# pacman -Syu --overwrite /usr/include/\* --overwrite /usr/lib/\* --overwrite /usr/share/locale/sr/LC_MESSAGES/libc.mo

# 删除,保留依赖
pacman -R package_name

# 删除,删除依赖
pacman -Rs package_name

# 删除,删除配置
pacman -Rn package_name

# 删除,删除依赖和配置
pacman -Rsn package_name

LVM

# 查看当前磁盘对应的物理券
lvmdiskscan

# 假设新的硬盘为 /dev/sdb

# 1. 给新硬盘分区并设置 type 为 Linux LVM,分区记为 /dev/sdb1
cfdisk /dev/sdb

# 2. 分区完后创建物理卷
pvcreate /dev/sdb1
pvdisplay

# 3. 将 /dev/sdb1 添加到卷组,vgdisplay 查看卷组名
vgextend VolGroup00 /dev/sdb1

# 4. 扩展相应的逻辑卷
lvextend -l +100%FREE /dev/mapper/VolGroup00-lvolroot

# 5. 写入文件系统使扩容生效
# ext4
resize2fs /dev/mapper/VolGroup00-lvolroot
# 如果是 xfs,使用 xfs_growfs /dev/mapper/VolGroup00-lvolroot

Doc

官方文档

输入法文档