# archlinux
**Repository Path**: kimux/archlinux
## Basic Information
- **Project Name**: archlinux
- **Description**: archlinux安装 + 配置文件
- **Primary Language**: Rust
- **License**: 0BSD
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2021-12-18
- **Last Updated**: 2026-05-01
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
@[TOC](单EFI分区Archlinux + Windows 10 双启动安装记录)
---
2025.1.19 , 修改部分内容
2024.1.11,增加部分安装后的设置内容,修改部分BUG
2024.1.10, 修改EFI分区挂载点
2024.1.1 ,修改部分内容
2023.1.29 , 更新部分内容,加入了fcitx5安装
2023.2.1,换了块硬盘,测试了一下全新安装,半个小时完成,发现并修改一处错误
2023.2.2 , 修改部分内容
2023.2.9 , 最后加入hyprland桌面环境的安装过程链接
2023.2.28,修复了桌面安装的链接
2023.3.5,修改swapfile创建方式,修改部分内容
---
# 前言
机器老了,Gentoo编译不动了,寻思着换个系统吧,不折腾了
这次要对Archlinux下手了,在这里记录一下安装过程,可能有人需要,但是这不是教程,只能作为参考
关于Archlinux就不多说了,不知道的人也没必要看这个
其实安装Archlinux和Gentoo比较起来还是非常简单的...这两个系统难在安装后的配置... :)
2024.1.1,目前使用archinstall还是挺方便的,但是我没弄明白怎么在安装的时候使用WIN10的EFI分区,所以还是按照传统方式安装
想到哪写到哪,可能有不少遗漏的地方,没事的时候就多翻翻archlinux wiki
本文使用archlinux官方镜像,如果使用其他镜像,可能有部分命令无法运行
---
# 一、安装前准备
## 1.下载ISO
在[官方页面](https://archlinux.org/download/)找一个镜像站下载最新的ISO文件
使用[ventoy](https://www.ventoy.net/cn/download.html )创建启动U盘,并把ISO文件复制到U盘
## 2.用USB启动
前2步没什么好说的......安装系统的常规操作
# 二、开始安装
## 1.检查是否是UEFI启动
```matlab
# efivars --list
```
如果命令结果显示了内容且没有报告错误,则系统是以 UEFI 模式引导,那么就可以继续往下看,
否则就不是UEFI引导,本文不适合非UEFI引导的安装,如果强行按照本文继续安装,发生任何损失本人概不负责
## 2.检查网络
本文不包括无线连接的内容,如有需要,请参考官方安装教程
```matlab
# ping -c3 baidu.com
```
---
如果启动模式和网络都没有问题,那么就可以开始安装了
---
## 3.更新系统时间
```matlab
# timedatectl set-ntp true
```
## 4.更新mirrorlist
```matlab
# 备份原镜像源
cp /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.bak
# 筛选国内高质量HTTPS镜像,取前10按速度排序保存
-c China:仅中国大陆镜像
-p https:只保留 HTTPS 协议
--delay 3:超时 3 秒丢弃慢速节点
--completion-percent 95:同步完整度≥95%
--latest 10:只保留测速最优前 10 个
--sort score:按镜像稳定性 + 速度综合评分排序
--save:直接覆盖写入镜像配置文件
reflector -c China -p https --delay 3 --completion-percent 95 --latest 10 --sort score --save /etc/pacman.d/mirrorlist
# 校验是否生效
head /etc/pacman.d/mirrorlist
```
然后停止 reflector 后台服务,避免系统自动覆盖我们刚刚配置好的国内镜像源,保证安装速度稳定。
```matlab
# systemctl stop reflector
```
## 5.硬盘分区
**这是比较重要的部分**
首先,查看硬盘设备
```matlab
# lsblk -f
```
以我本人为例
只列出了本次安装需要用到的分区,与安装无关的硬盘就不列出来了
|硬盘|分区|格式|
|--|--|--|
|sdb | sdb1 | vfat(EFI分区, archlinux官方推荐limine引导大小为4G) |
|sdb|sdb2|btrfs(硬盘剩余大小)
注意,这里要谨慎操作,我安装的时候就把U盘给格了...幸好不影响安装
### (1)清空硬盘
这一步是可选的,如果你和我一样,在单独的一块硬盘安装linux,可以这么操作
**如果你是在某个硬盘其中的一个分区安装,那么千万不要执行这个命令**
```matlab
作用:彻底清除硬盘的所有分区表,恢复到完全空白状态。
# sgdisk --zap-all /dev/sdb
```
### (2)分区
关于cfdisk或者其他分区工具,请自行查找使用方法,这里只是简单的单硬盘分一个区
**如果你是在某个硬盘其中的一个分区安装,那么千万不要加 -z 参数**
```matlab
作用:忽略任何残留分区信息,从 0 开始创建新的 GPT 分区。
# cfdisk -z /dev/sdb
```
进入界面后,选择 gpt 分区表类型,回车确认;
选中空闲空间,选择 New 新建分区:
分区大小输入:4G
选中该 4G 分区,选择 Type,设置类型为 EFI System
剩下全部空闲空间,再次选择 New 新建第二个分区,默认占用全部剩余空间即可,不用改类型(默认 Linux filesystem 就行);
选择 Write,输入 yes 确认写入分区表;
选择 Quit 退出分区工具。
### (3)格式化
```matlab
# mkfs.fat -F32 /dev/sdb1
# mkfs.btrfs -f /dev/sdb2
```
## 6.BTRFS创建子卷并挂载
### (1)挂载btrfs分区
```matlab
# mount /dev/sdb2 /mnt
```
### (2)创建子卷
我的个人习惯创建子卷,可以根据你自己的需要增加和减少子卷
```matlab
# btrfs su cr /mnt/@ // 挂载到 root,必需
# btrfs su cr /mnt/@home // home ,可选
# btrfs su cr /mnt/@pkg // 放置pacman -S 安装软件是下载的文件 , 可选
# btrfs su cr /mnt/@log // log 文件, 可选
# btrfs su cr /mnt/@snapshots // 快照文件, 可选
# btrfs su cr /mnt/@swap
```
创建完成后查检一下
```matlab
# btrfs su li /mnt
```
创建swapfile
```matlab
# btrfs filesystem mkswapfile -s 8g /mnt/@swap/swapfile
```
如果一切正常,那就开始挂载子卷吧
### (3)挂载子卷
首先先取消(1)部分对btrfs分区的挂载
```matlab
# umount /mnt
```
挂载根目录子卷
(这是SSD硬盘的参数,如果是机械硬盘,有些参数不太合适,请自行查询挂载参数)
```matlab
# mount -t btrfs -o defaults,noatime,compress=zstd,space_cache=v2,discard=async,subvol=@ /dev/sdb2 /mnt
```
创建其他子卷的挂载目录
```matlab
# mkdir -pv /mnt/{boot,home,var/log,var/cache/pacman/pkg,.snapshots,swap}
```
挂载其他子卷
其实 pkg 文件是不需要 compress 的,但是据我目前所知, btrfs是不支持子卷单独使用不同挂载参数...
```matlab
# mount -o subvol=@home /dev/sdb2 /mnt/home
# mount -o subvol=@pkg /dev/sdb2 /mnt/var/cache/pacman/pkg
# mount -o subvol=@log /dev/sdb2 /mnt/var/log
# mount -o subvol=@snapshots /dev/sdb2 /mnt/.snapshots
# mount -o subvol=@swap /dev/sdb2 /mnt/swap
# 挂载 EFI 引导分区
# mount /dev/sdb1 /mnt/boot
```
## 7.安装基本系统
本人系统CPU:INTEL ,显卡:NVIDIA ,使用ZEN内核和NVIDIA-DKMS驱动
这里就不介绍默认内核了
```matlab
# pacstrap -K /mnt base base-devel linux-zen linux-zen-headers linux-firmware intel-ucode texinfo git helix mtools dosfstools btrfs-progs pacman-contrib sudo networkmanager
```
## 8.生成FSTAB
```matlab
# genfstab -U /mnt >> /mnt/etc/fstab
```
检查一下并添加swapfile
```matlab
# vim /mnt/etc/fstab
```
```bash
#在最后一行加入
/swap/swapfile none swap defaults 0 0
#保存退出
```
验证
```bash
swapon -a
swapon --show
```
看到 swapfile 即成功。
## 9.chroot
```matlab
# arch-chroot /mnt
```
我个人使用helix作为默认编辑器
```matlab
# ln -s /usr/lib/helix/hx /usr/bin/hx
```
## 10.本地化的一些工作
### (1)时区
```matlab
timedatectl set-timezone Asia/Shanghai
```
### (2)locale
```matlab
# hx /etc/locale.gen
```
>搜索en_US和zh_CN
>取消下面两行的注释
>en_US.UTF-8 UTF-8
>zh_CN.UTF-8 UTF-8
>保存退出
```matlab
# locale-gen
```
### (3)LANG
不建议设为zh_CN
```matlab
localectl set-locale LANG=en_US.UTF-8
```
### (4)主机名
```matlab
hostnamectl set-hostname arch
```
## 11.Limine 引导(ArchWiki 官方版,UEFI + Btrfs)
```matlab
pacman -S limine efibootmgr
```
```matlab
# 1. 在 ESP 中创建目录
mkdir -p /boot/EFI/limine
# 复制 Limine UEFI 引导文件到 ESP,和官方例句完全一致
cp /usr/share/limine/BOOTX64.EFI /boot/EFI/limine/
# 3. 创建 UEFI 启动项(efibootmgr)
efibootmgr \
--create \
--disk /dev/sdb \
--part 1 \
--label "Arch Linux Limine Boot Loader" \
--loader '\EFI\limine\BOOTX64.EFI' \
--unicode
# 4. 编辑配置文件
hx /boot/EFI/limine/limine.conf
timeout: 5
/Arch Linux (Zen)
protocol: linux
path: boot():/vmlinuz-linux-zen
cmdline: root=UUID=替换为你的Btrfs根分区UUID rw rootflags=subvol=@ intel_ucode
module_path: boot():/intel-ucode.img
module_path: boot():/initramfs-linux-zen.img
把 UUID=... 替换成你 btrfs 根分区 /dev/sdb2 的 UUID(blkid /dev/sdb2 查看)
```
## 15.收尾工作
### (1)root密码
```matlab
# passwd
```
### (2) 创建用户并设置密码
```matlab
# useradd -m -G wheel 用户名
# passwd 用户名
```
### (3) 启用 networkmanager管理网络
```matlab
# systemctl enable NetworkManager
```
# 三、安装完成重启
```matlab
# exit
# swapoff /mnt/swap/swapfile
# umount -R /mnt
# reboot
```
# 四、重启后的一些设置
先用root登录
设置一下sudo
```matlab
# EDITOR=hx visudo
```
找到下面一行,取消注释
>%wheel ALL=(ALL:ALL) ALL
双系统时间问题
百度:Windows 系统使用 UTC
```matlab
# timedatectl set-ntp true
```
---
双启动引导
```matlab
hx /boot/EFI/limine/limine.conf
```
添加WINDOWS引导
```matlab
/Windows
protocol: efi
path: boot():/EFI/Microsoft/Boot/bootmgfw.efi
```
---
设置archlinuxcn
```matlab
# hx /etc/pacman.conf
```
取消Color和ParallelDownloads = 5 两行的注释,添加一行ILoveCandy(下载包时使用吃豆人动画)
>Color
>ParallelDownloads = 5
>ILoveCandy
在文件最后加入archlinuxcn仓库
[全部仓库地址在这里](https://github.com/archlinuxcn/mirrorlist-repo)
>[archlinuxcn]
>Server = https://mirrors.bfsu.edu.cn/archlinuxcn/$arch
```matlab
# pacman -Sy archlinuxcn-keyring
```
---
安装rust,本人正在学习rust中~
先退出root,用自己的账号登录
```matlab
$ sudo pacman -S rustup
```
配置rustup使用国内境像,编辑.bashrc,如果后期使用zsh,则在.zshrc中添加下面两行
```matlab
$ hx ~/.bashrc
```
>export RUSTUP_DIST_SERVER="https://rsproxy.cn"
>export RUSTUP_UPDATE_ROOT="https://rsproxy.cn/rustup"
```matlab
$ source ~/.bashrc
```
创建cargo文件夹,新建config文件,加入下面的内容
```matlab
$ mkdir -v ~/.cargo
$ hx ~/.cargo/config.toml
```
>[source.crates-io]
replace-with = 'rsproxy-sparse'
[source.rsproxy]
registry = "https://rsproxy.cn/crates.io-index"
[source.rsproxy-sparse]
registry = "sparse+https://rsproxy.cn/index/"
[registries.rsproxy]
index = "https://rsproxy.cn/crates.io-index"
[net]
git-fetch-with-cli = true
使用rustup安装rust的稳定版,如果想用beta或者nightly,就把stable改为beta或者nightly
```matlab
$ rustup default stable
```
安装paru,管理AUR软件 ,也可以用yay ,我个人比较喜欢paru,因为它是用rust写的,仅此而已,反正我是~~不喜欢python~~ :(
```matlab
$ sudo pacman -S paru
```
修改一下paru配置文件,具体项目根据自己需求设置
```matlab
$ sudo hx /etc/paru.conf
```
这是我的paru配置文件
>[options]
>PgpFetch
>Devel
>Provides
>DevelSuffixes = -git -cvs -svn -bzr -darcs -always -hg -fossil
>BottomUp
>RemoveMake
>SudoLoop = true
>CleanAfter
AUR编译优化
```matlab
$ sudo hx /etc/makepkg.conf
```
>CFLAGS="-march=native -O2 ..." # 先将 -march 和 -mtune 删除,再添加 -march=native
MAKEFLAGS="-j$(nproc)" # 不要忘记去掉“#”,多核处理器可以启用并行编译,缩短编译时间
BUILDDIR=/tmp/makepkg # 去掉“#”,使用内存文件系统进行编译
COMPRESSZST=(zstd -c -z -q --threads=0 -) # 在压缩时使用多个 CPU 核心
注意:
在 tmpfs 中构建大型软件包时可能会内存不足。
tmpfs 目录挂载时不能使用 noexec 选项,否则编译命令无法执行。
在 tmpfs 中编译的文件重启后会消失,设置 PKGDEST 选项可以将构建结果保存到其它目录。
OK,基本系统安装完毕
# 五 安装桌面
```bash
```
```matlab
$ sudo pacman -S noto-fonts-cjk ttf-firacode-nerd ttf-hack-nerd
```
打开字体引擎
```matlab
$ sudo vi /etc/profile.d/freetype2.sh
取消最后一行的注释
```
安装输入法
```matlab
$ sudo pacman -S fcitx5-im fcitx5-chinese-addons
```
编辑环境变量,这些环境变量在启动Hyprland的时候生效
```matlab
$ hx .config/hypr/UserConfigs/ENVariables.conf
```
加入下面的内容
>env = LANG,zh_CN.UTF-8
>env = INPUT_METHOD,fcitx
>#env = GTK_IM_MODULE,fcitx #这一行注释掉
>env = QT_IM_MODULE,fcitx
>env = XMODIFIERS,@im=fcitx
>env = SDL_IM_MODULE,fcitx
>env = GLFW_IM_MODULE,ibus
设置开机启动fcitx5