Arch Linux 安装配置 此记录是完全个人化的配置记录。
1. 预安装 1.1 获取安装镜像 archlinux-iso 开源镜像站-阿里云
1 2 3 4 5 6 7 Index of /archlinux/iso/ File Name File Size Date Parent directory/ - 2025.01.01/ - 2025-01-01 17:01 2025.02.01/ - 2025-02-01 16:44 2025.03.01/ - 2025-03-02 01:57 latest/ - 2025-03-02 01:57
1.2 准备安装U盘 下载U盘写入工具: balenaEtcher 并且制作好。
1.3 启动live环境 **注意:**Arch Linux 安装镜像不支持安全启动。您需要禁用安全引导 才能引导安装媒体。如果需要,可以在完成安装后设置安全启动 。
**默认:**键盘布局为US,引导模式为UEFI,网线连接的网络。
将制作好的启动盘插入Thinkpad电脑,开机按回车键,按F12,上下箭头找到U盘,回车等待系统重启引导。
选择UEFI引导,并且进入Arch iso实时环境中
设置控制台字体
检查网络
1.4 对磁盘进行分区 当Live系统识别到磁盘时,磁盘将分配给块设备,M.2 PCIE设备默认为/dev/nvme0n1
以下是使用 fdisk
对磁盘进行分区的纯文本记录,我的需求是创建 EFI 分区(512M) 、根分区(459G) 和 swap 分区(16G) 。
使用 fdisk
对磁盘分区的教程
1. 启动 fdisk 打开终端,运行以下命令启动 fdisk
(假设磁盘为 /dev/nvme0n1
):
2. 创建新的分区表 在 fdisk
中,输入 g
创建一个新的 GPT 分区表 :
1 2 Command (m for help ): g Created a new GPT disklabel (GUID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).
3. 创建 EFI 分区(512M)
输入 n
创建一个新分区:
分区号保持默认(按回车):
1 Partition number (1-128, default 1): [回车]
起始扇区保持默认(按回车):
1 First sector (2048-1000215215, default 2048): [回车]
设置分区大小为 512M
:
1 Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-1000215215, default 1000215215): +512M
设置分区类型为 EFI System
:
1 2 3 4 Command (m for help ): t Selected partition 1 Partition type (type L to list all types): 1 Changed type of partition 'Linux filesystem' to 'EFI System' .
4. 创建根分区(459G)
输入 n
创建第二个分区:
分区号保持默认(按回车):
1 Partition number (2-128, default 2): [回车]
起始扇区保持默认(按回车):
1 First sector (1050624-1000215215, default 1050624): [回车]
设置分区大小为 459G
:
1 Last sector, +/-sectors or +/-size{K,M,G,T,P} (1050624-1000215215, default 1000215215): +459G
5. 创建 swap 分区(16G)
输入 n
创建第三个分区:
分区号保持默认(按回车):
1 Partition number (3-128, default 3): [回车]
起始扇区保持默认(按回车):
1 First sector (963379200-1000215215, default 963379200): [回车]
设置分区大小为 16G
:
1 Last sector, +/-sectors or +/-size{K,M,G,T,P} (963379200-1000215215, default 1000215215): +16G
设置分区类型为 Linux swap
:
1 2 3 4 Command (m for help ): t Partition number (1-3, default 3): 3 Partition type (type L to list all types): 19 Changed type of partition 'Linux filesystem' to 'Linux swap' .
6.保存分区表
输入 p
查看分区表,确认分区设置正确:
输出示例:
1 2 3 4 Device Start End Sectors Size Type /dev/nvme0n1p1 2048 1050623 1048576 512M EFI System /dev/nvme0n1p2 1050624 963379199 962328576 459G Linux filesystem /dev/nvme0n1p3 963379200 1000215215 36836016 16G Linux swap
输入 w
保存分区表并退出:
1 2 Command (m for help ): w The partition table has been altered.
7. 格式化分区
格式化 EFI 分区为 FAT32:
1 mkfs.fat -F32 /dev/nvme0n1p1
格式化根分区为 ext4:
1 mkfs.ext4 /dev/nvme0n1p2
格式化 swap 分区并启用:
1 2 mkswap /dev/nvme0n1p3 swapon /dev/nvme0n1p3
8. 挂载分区
挂载根分区:
1 mount /dev/nvme0n1p2 /mnt
创建 EFI 分区挂载点并挂载:
1 2 mkdir /mnt/bootmount /dev/nvme0n1p1 /mnt/boot
通过以上步骤,你已经成功使用 fdisk
对磁盘进行了分区,并创建了:
EFI 分区(512M)
根分区(459G)
swap 分区(16G)
2. 安装 2.1 设置镜像源 这里选择阿里云的镜像地址:
1 echo "https://mirrors.aliyun.com/archlinux/\$repo/os/\$arch" > /etc/pacman.d/mirrorlist
2.2 安装基本软件包 使用pacstrap脚本来安装基本软件包、Linux内核和常见固件:
1 pacstrap -K /mnt base linux linux-firmware sof-firmware
3. 配置系统 3.1 配置基本系统设置 生成fstab文件:
1 genfstab -U /mnt >> /mnt/etc/fstab
3.2 Chroot 将root切换到新系统:/mnt
4. 安装必要软件包,开始配置 1 pacman -S --noconfirm vim tmux dnust libnotify tar unzip dhcpcd iproute2 git base-devel fd bat htop wget aria2 elinks xorg-server pulseaudio alsa-utils fcitx5-im fcitx5-chnese-addons terminus-font i3-wm usbutils android-tools bluez bluez-utils openssl openssh intel-ucode xorg-xinit aha sudo network-manager-applet
4.1 配置系统引导
安装systemd-boot引导
编辑系统引导配置条目:/boot/loader/loader.conf
1 2 3 4 default arch.conf timeout 0console-mode max editor no
配置文件的作用是:
直接启动默认的 Arch Linux 条目(arch.conf)。
不显示引导菜单(timeout 0)。
使用最高分辨率显示控制台(console-mode max)。
禁止用户编辑内核参数(editor no)。
编辑系统引导条目:/boot/loader/entries/arch.conf
提取/dev/nvme0n1p2的UUID:
1 blkid -o value -s UUID /dev/nvme0n1p2
提取swap交换分区的UUID
1 blkid -o value -s UUID /dev/nvme0n1p3
arch.conf:
1 2 3 4 5 6 title Arch Linux linux /vmlinuz-linux initrd /intel-ucode.img initrd /initramfs-linux.img options root=UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx rw
配置内容解析: title Arch Linux :定义引导菜单中显示的标题为 “Arch Linux”。这是用户在引导菜单中看到的条目名称。
linux /vmlinuz-linux :指定要加载的内核文件为 /vmlinuz-linux。这是 Arch Linux 默认的内核文件。
initrd /intel-ucode.img :加载 Intel 微码更新文件 /intel-ucode.img。这是为了修复 Intel CPU 的某些硬件问题或漏洞。
initrd /initramfs-linux.img :加载初始化内存盘文件 /initramfs-linux.img。这是内核启动时使用的临时文件系统,包含必要的驱动和工具。
options root=UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx rw :定义内核启动参数:
root=UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:指定根文件系统的设备 UUID。
rw:以读写模式挂载根文件系统。
配置的作用:
在引导菜单中显示一个名为 “Arch Linux” 的条目。
加载 Arch Linux 的内核 (vmlinuz-linux)。
加载 Intel 微码更新(如果使用 Intel CPU)。
加载初始化内存盘 (initramfs-linux.img)。
挂载指定 UUID 的根文件系统,并以读写模式启动。
休眠支持说明: 休眠(Hibernate)是一种电源管理功能,允许你将系统的当前状态保存到磁盘(通常是交换分区或交换文件),然后完全关闭计算机。当你重新启动系统时,系统会从磁盘恢复之前的状态,恢复到休眠前的桌面、应用程序和文件。以下是休眠支持的主要好处 :
1. 节省电力
休眠会将系统的状态保存到磁盘并完全关闭电源,因此不需要消耗任何电力。与挂起(Suspend)相比,休眠更适合长时间不使用电脑的情况。
2. 恢复工作状态
休眠后,系统会完全恢复到休眠前的状态,包括所有打开的应用程序、文件和未保存的工作。这对于需要长时间中断工作但又不想丢失进度的用户非常有用。
3. 避免数据丢失
如果电脑在挂起状态下电量耗尽(例如笔记本电脑电池没电),可能会导致数据丢失。而休眠将状态保存到磁盘,即使断电也不会丢失数据。
4. 适合多系统用户
如果你在同一台电脑上安装了多个操作系统,休眠可以避免系统状态冲突。因为休眠会将当前系统的状态完全保存到磁盘,切换系统时不会受到影响。
5. 延长硬件寿命
完全关闭电脑可以减少硬件的运行时间,从而延长硬件的使用寿命。
休眠的缺点 尽管休眠有很多优点,但也有一些潜在的缺点:
恢复时间较长
与挂起相比,休眠的恢复时间较长,因为需要从磁盘读取保存的状态。
需要足够的磁盘空间
休眠需要将内存中的数据保存到磁盘,因此需要足够的交换分区或交换文件空间(通常至少等于内存大小)。
可能遇到兼容性问题
某些硬件或驱动程序可能不完全支持休眠功能,导致休眠或恢复失败。
如何在 Arch Linux 中启用休眠 要在 Arch Linux 中启用休眠,通常需要以下步骤:
确保有足够的交换空间
配置内核参数
在引导加载程序(如 systemd-boot 或 GRUB)的配置文件中添加 resume=UUID=...
参数,指向你的交换分区或交换文件。例如:
1 options root=UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx rw resume=UUID=your-swap-partition-uuid
配置 initramfs
确保 initramfs
包含 resume
钩子。可以通过编辑 /etc/mkinitcpio.conf
并添加 resume
到 HOOKS
数组:
1 2 HOOKS=(base udev autodetect modconf block filesystems keyboard fsck resume)
然后重新生成 initramfs
:
测试休眠
使用以下命令测试休眠功能:
4.2 用户配置
修改root密码:
输入密码,回车确定,再一次输入密码,回车确定。
创建管理员用户:这里是liang(当然可以任意ID)
设置用户密码:
输入密码,回车确定,再一次输入密码,回车确定。
编辑 /etc/sudoers文件,使用直接输入斜杠搜索 /wheel 关键词注释wheel前面的#,以使配置生效。
配置解析
%wheel
:
%
表示这是一个用户组。
wheel
是用户组的名称。在 Arch Linux 和其他许多 Linux 发行版中,wheel
组通常用于管理管理员权限。
ALL=(ALL:ALL)
:
第一个 ALL
表示允许在任何主机上执行命令。
(ALL:ALL)
表示允许以任何用户和任何用户组的身份执行命令。
ALL
:表示允许执行任何命令。
作用 这行配置的作用是:
允许 wheel
用户组的所有成员使用 sudo
命令,以任何用户的身份执行任何命令。
这是 Linux 系统中常见的权限管理方式,通常用于授予管理员权限。
如何使用 将用户添加到 wheel 组 如果你希望某个用户拥有管理员权限,可以将其添加到 wheel 组。例如,将用户 t14添加到 wheel 组:
1 sudo usermod -aG wheel t14
验证用户是否在 wheel 组 使用以下命令检查用户所属的组:
输出中应包含 wheel。
测试 sudo 权限 切换到该用户,测试 sudo 是否可用:
如果配置正确,系统会提示输入用户密码,然后执行命令。
注意事项 谨慎分配权限 ALL=(ALL:ALL) ALL 允许用户执行任何命令,包括可能破坏系统的操作。因此,只应将受信任的用户添加到 wheel 组。
编辑 sudoers 文件 如果需要修改 sudoers 文件,请始终使用 visudo 命令,因为它会检查语法错误,避免配置错误导致无法使用 sudo:
限制权限 如果需要更细粒度的权限控制,可以修改配置。例如,仅允许 wheel 组执行特定命令:
1 %wheel ALL=(ALL:ALL) /usr/bin/systemctl, /usr/bin/pacman
4.3 主机名配置
4.4 hosts配置
1 2 127.0.0.1 localhost ::1 localhost
配置说明:
127.0.0.1 localhost :将 IPv4 的回环地址 127.0.0.1 映射到主机名 localhost。这是标准配置,所有系统都需要这一行。
::1 localhost :将 IPv6 的回环地址 ::1 映射到主机名 localhost。这是 IPv6 的标准配置,确保 IPv6 环境下也能正确解析 localhost。
如果您的系统有主机名(例如 archlinux),可以添加一行:
1 127.0.1.1 thinkpad.localdomain thinkpad
4.5 时区配置
查看当前时区:
1 2 3 4 5 6 7 Local time : Wed 2023-10-25 12:34:56 UTC Universal time : Wed 2023-10-25 12:34:56 UTC RTC time : Wed 2023-10-25 12:34:56 Time zone: UTC (UTC, +0000) System clock synchronized: yes NTP service: active RTC in local TZ: no
列出可用时区:
1 timedatectl list-timezones
例如,查找亚洲时区:
1 timedatectl list-timezones | grep Asia
设置时区:
1 sudo timedatectl set-timezone Asia/Shanghai
验证时区:
输出示例:
1 2 3 4 5 6 7 Local time : Wed 2023-10-25 20:34:56 CST Universal time : Wed 2023-10-25 12:34:56 UTC RTC time : Wed 2023-10-25 12:34:56 Time zone: Asia/Shanghai (CST, +0800) System clock synchronized: yes NTP service: active RTC in local TZ: no
手动创建时区链接(可选) 如果你更喜欢手动设置时区,可以通过创建符号链接来实现:
删除现有的时区链接:
创建新的时区链接。例如,设置为 Asia/Shanghai:
1 ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
同步硬件时钟(可选) 如果你的硬件时钟(RTC)使用的是 UTC 时间,可以通过以下命令确保系统时间与硬件时钟同步:
如果你的硬件时钟使用的是本地时间,可以运行:
1 sudo timedatectl set-local-rtc 1
4.6 fcitx5配置
1 2 3 4 5 GTK_IM_MODULE=fcitx QT_IM_MODULE=fcitx SDL_IM_MODULE=fcitx GLFW_IM_MODULE=ibus XMODIFIERS=@im=fcitx
配置说明:
1. GTK_IM_MODULE=fcitx
设置 GTK 应用程序(如 GNOME 应用程序、GIMP 等)使用 Fcitx 作为输入法模块。
QT_IM_MODULE=fcitx
设置 Qt 应用程序(如 KDE 应用程序、VirtualBox 等)使用 Fcitx 作为输入法模块。
3. SDL_IM_MODULE=fcitx
设置 SDL 应用程序(如游戏或多媒体应用程序)使用 Fcitx 作为输入法模块。
4. GLFW_IM_MODULE=ibus
设置 GLFW 应用程序使用 ibus 作为输入法模块。
GLFW 是一个用于 OpenGL 和 Vulkan 开发的库,通常用于图形应用程序和游戏。
5. XMODIFIERS=@im=fcitx
设置 X11 窗口系统的输入法模块为 Fcitx。
这是为了确保在 X11 环境下,Fcitx 能够正常工作。。
4.7 terminus-font配置 编辑 /etc/vconsole.conf
重新生成initramfs:
主要作用是系统启动时,字体输出优雅一点点。
4.8 locale.gen配置 编辑locale.gen(将#号删掉启用)
重新
编辑/etc/locale.conf
重启前,创建3项系统服务:
sshd 服务
iwd 无线连接工具
dhcpcd 服务
5. 用户桌面环境配置 5.1 i3窗口管理器配置 5.1.1 通过xinit启动i3 1 cp /etc/X11/xinit/xinitrc .xinitrc
编辑.xinitrc文件,在$twm &行后面新增一行添加 exec i3
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 #!/bin/sh xrdb=xrdb xinitdir=/etc/X11/xinit xclock=xclock xterm=xterm twm=twm xmodmap=xmodmap userresources=$HOME /.Xresources usermodmap=$HOME /.Xmodmap sysresources=$xinitdir /.Xresources sysmodmap=$xinitdir /.Xmodmap if [ -f $sysresources ]; then if [ -x /usr/bin/cpp ] ; then $xrdb -merge $sysresources else $xrdb -nocpp -merge $sysresources fi fi if [ -f $sysmodmap ]; then $xmodmap $sysmodmap fi if [ -f "$userresources " ]; then if [ -x /usr/bin/cpp ] ; then $xrdb -merge "$userresources " else $xrdb -nocpp -merge "$userresources " fi fi if [ -f "$usermodmap " ]; then $xmodmap "$usermodmap " fi if [ -d $xinitdir /xinitrc.d ] ; then for f in "$xinitdir /xinitrc.d" /?*.sh ; do [ -x "$f " ] && . "$f " done unset f fi $twm &exec i3
5.1.2 i3开机自动启动 编辑.bash_profile文件
1 2 3 if [[ -z $DISPLAY ]] && [[ $(tty ) == /dev/tty1 ]]; then exec startx fi
5.1.3 i3配置文件设置 编辑 ~/.config/i3/config文件
● fcitx5输入法自动启动 1 exec --no-startup-id fcitx5
● flameshot截图工具(使用PrtSc键绑定) 1 bindsym Print exec flameshot full
● 终端快捷键设置(使用kitty终端) 1 2 bindsym $mod +Return exec kitty
● 多显示器设置 1 2 3 exec --no-startup-id xrandr --output HDMI-1 --right-of eDP-1exec --no-startup-id xrandr --output HDMI-1 --right-of DP-3exec --no-startup-id xrandr --output HDMI-1 --right-of DP-4
查看当前连接的显示器 :
这条命令会列出所有连接的显示器及其名称,例如 eDP-1(内置显示器)和 HDMI-1(外接显示器)。
还有一些例外情况,只有使用到输出接口才能清楚,比如type-c 到显示屏,这个没有测试,现使用的是type-c 转HDMI的HUB设备,xrandr显示的是DP外接屏幕。
配置外接屏幕 :
将外接屏幕设置在内置屏幕的右侧:
1 xrandr --output HDMI-1 --right-of eDP-1
将外接屏幕设置在内置屏幕的左侧:
1 xrandr --output HDMI-1 --left-of eDP-1
将外接屏幕设置为主屏幕:
● nm-applet 网络管理自启动
1 exec --no-startup-id nm-applet
● dunst自启动
1 exec --no-startup-id dunst
● i3status配置
在.config目录创建 i3status目录
编辑config
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 general { output_format = "i3bar" colors = true interval = 1 } order += "tztime local" order += "battery 0" } battery 0 { format = "%status %percentage %remaining" format_down = "🔌 无电池" status_bat = "🔋" status_unk = "❓" status_chr = "⚡" status_full = "✅" path = "/sys/class/power_supply/BAT%d/uevent" low_threshold = 10 }
5.2 添加字体
添加MiSans
1 2 3 wget [https://hyperos.mi.com/font-download/MiSans.zip](https://hyperos.mi.com/font-download/MiSans.zip) unzip MiSans.zip
将字体文件移动到/usr/share/fonts
1 sudo mv MiSans/ /usr/share/fonts/
5.3 fxitx5配置 1 sudo pacman -S kwindowsystem
1 fcitx5-config-qt: error while loading shared libraries: libKF6WindowSystem.so.6: cannot open shared object file: No such file or directory
要添加拼音输入法,请按照以下步骤操作:
在屏幕右下角找到fcitx5图标(通常在系统托盘区域)
右键点击fcitx5图标,在弹出菜单中选择”Configure”(配置)
在打开的配置工具中,点击左下角的”+”按钮
在搜索框中输入”pinyin”(拼音)
从右侧列表中找到”Pinyin”并选中它
点击”Add”(添加)按钮,将其移动到左侧已启用的输入法列表中
点击”Apply”(应用)或”OK”(确定)保存设置
完成后,你就可以使用Ctrl+Space或其他配置的快捷键切换到拼音输入法了。
5.4 kitty 背景设置 配置kitty白底黑字,编辑.confing/i3/kitty.conf
保存,然后按F5,就可以使更改生效。
5.5 virtualbox虚拟机配置
添加用户到 vboxusers
组
1 sudo usermod -aG vboxusers $USER
a
:将用户追加到组,而不从其他组中移除。
G
:指定组名(这里是 vboxusers
)。
$USER
:当前用户名。
1.
配置 USB 设备权限
为了让 vboxusers
组能够访问 USB 设备,需要调整 USB 设备的权限。
创建 udev
规则文件:
1 sudo vim /etc/udev/rules.d/99-vboxusb.rules
添加以下内容:
1 SUBSYSTEM=="usb" , ENV{DEVTYPE}=="usb_device" , GROUP="vboxusers" , MODE="0664"
virtualbox-ext-oracle 7.1.6-1扩展包安装
1 2 3 git clone https://aur.archlinux.org/virtualbox-ext-oracle.git cd virtualbox-ext-oraclemakepkg -Si