# 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-10
## 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创建方式,修改部分内容
---
# 前言
本次安装是在一块1TB SATA3 接口的SSD硬盘独立安装,WIN11是在另一块硬盘,计划单独为ARCH分配1个EFI分区,1个BTRFS分区,与WIN11隔离
安装方式为使用手动分区,然后使用ARCHINSTALL进行安装
本文使用archlinux官方镜像,如果使用其他镜像,可能有部分命令无法运行
---
# 一、安装前准备
## 1.下载ISO
在[官方页面](https://archlinux.org/download/)找一个镜像站下载最新的ISO文件
使用[ventoy](https://www.ventoy.net/cn/download.html )创建启动U盘,并把ISO文件复制到U盘
## 2.用USB启动
前2步没什么好说的......安装系统的常规操作
# 二、开始安装
## 1.检查是否是UEFI启动
```bash
efivars --list
```
如果命令结果显示了内容且没有报告错误,则系统是以 UEFI 模式引导,那么就可以继续往下看,
否则就不是UEFI引导,本文不适合非UEFI引导的安装,如果强行按照本文继续安装,发生任何损失本人概不负责
## 2.检查网络
本文不包括无线连接的内容,如有需要,请参考官方安装教程
```bash
ping -c3 baidu.com
```
---
如果启动模式和网络都没有问题,那么就可以开始安装了
---
## 3.更新系统时间
```bash
timedatectl set-ntp true
```
## 4.更新mirrorlist
```bash
# 备份原镜像源
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 后台服务,避免系统自动覆盖我们刚刚配置好的国内镜像源,保证安装速度稳定。
```bash
systemctl stop reflector
```
## 5.硬盘分区
**这是比较重要的部分**
首先,查看硬盘设备
```bash
lsblk -f
```
以我本人为例
只列出了本次安装需要用到的分区,与安装无关的硬盘就不列出来了
|硬盘|分区|格式|
|--|--|--|
|sdb | sdb1 | vfat(EFI分区, archlinux官方推荐limine引导大小为4G) |
|sdb|sdb2|btrfs(硬盘剩余大小)
注意,这里要谨慎操作,我安装的时候就把U盘给格了...幸好不影响安装
### (1)清空硬盘
这一步是可选的,如果你和我一样,在单独的一块硬盘安装linux,可以这么操作
**如果你是在某个硬盘其中的一个分区安装,那么千万不要执行这个命令**
```bash
作用:彻底清除硬盘的所有分区表,恢复到完全空白状态。
sgdisk --zap-all /dev/sdb
```
### (2)分区
关于cfdisk或者其他分区工具,请自行查找使用方法,这里只是简单的单硬盘分一个区
**如果你是在某个硬盘其中的一个分区安装,那么千万不要加 -z 参数**
```bash
作用:忽略任何残留分区信息,从 0 开始创建新的 GPT 分区。
cfdisk -z /dev/sdb
```
进入界面后,选择 gpt 分区表类型,回车确认;
选中空闲空间,选择 New 新建分区:
分区大小输入:4G
选中该 4G 分区,选择 Type,设置类型为 EFI System (注意如果你使用其他分区工具,也一定要设置这个分区为EFI SYSTEM,不然ARCHINSTALL会找不到BOOT,导致无法安装)
剩下全部空闲空间,再次选择 New 新建第二个分区,默认占用全部剩余空间即可,不用改类型(默认 Linux filesystem 就行);
选择 Write,输入 yes 确认写入分区表;
选择 Quit 退出分区工具。
### (3)格式化
```bash
mkfs.fat -F32 /dev/sdb1
mkfs.btrfs -f /dev/sdb2
```
## 6.BTRFS创建子卷并挂载
### (1)挂载btrfs分区
```bash
mount /dev/sdb2 /mnt
```
### (2)创建子卷
我的个人习惯创建子卷,可以根据你自己的需要增加和减少子卷
```bash
btrfs su cr /mnt/@ // 挂载到 root,必需
btrfs su cr /mnt/@home // home ,可选
btrfs su cr /mnt/@var // 创建一个var,这个目录不必进行快照
btrfs su cr /mnt/@snapshots // 快照文件, 可选
btrfs su cr /mnt/@swap // 交换文件放在这个目录
```
创建完成后查检一下,注意查看@子卷的编号,通常是256 ,如果要设置默认子卷,需要记住这个数字
```bash
btrfs su li /mnt
```
如果一切正常,那就开始挂载子卷吧
### (3)挂载子卷
首先先取消(1)部分对btrfs分区的挂载
```bash
umount /mnt
```
```bash
# 1. 挂载根子卷
mount -t btrfs -o defaults,noatime,compress=zstd:3,space_cache=v2,subvol=@ /dev/sdb2 /mnt
# 2. 创建并挂载其他子卷
mkdir -pv /mnt/{boot,home,var,.snapshots,swap}
mount -o noatime,compress=zstd:3,subvol=@home /dev/sdb2 /mnt/home
mount -o noatime,subvol=@var /dev/sdb2 /mnt/var
mount -o noatime,subvol=@snapshots /dev/sdb2 /mnt/.snapshots
mount -o noatime,subvol=@swap /dev/sdb2 /mnt/swap
# 3. 关键:禁用特定目录的 CoW (必须在写入任何文件前)
chattr +C /mnt/var
chattr +C /mnt/swap
# 4. 创建交换文件 (Btrfs 专用命令)
btrfs filesystem mkswapfile -s 8g /mnt/swap/swapfile
swapon /mnt/swap/swapfile
# 5. 挂载 EFI
mount /dev/sdb1 /mnt/boot
```
## 7.安装基本系统
这时,硬盘已经装备就绪,现在开始使用archinstall安装系统
首先更新一下archinstall,保证这是最新版
```bash
pacman -Sy archinstall
```
然后运行
```bash
archinstall
```
进入archinstall界面
核心配置项目 (必看)
|选项|设置|备注|
|--|--|--|
|Disk configuration| Pre-mounted configuration | 输入/mnt 回车 |
|Bootloader|Limine (或按需选择)| 如果选择limine,安装后需要手动运行efibootmgr添加引导记录|
|Profile|Minimal| 我在这里不安装任何桌面,因为我计划使用DMS,同时也可以避免在这里安装显卡驱动,我的1080TI显卡只能安装580XX版本|
|Audio|Pipewire|现代 Wayland 系统的标准配置,比 PulseAudio 更纯净|
|Kernels|linux-zen (或 linux)|linux 最稳定,linux-zen 对游戏响应略好|
|Network configuration|networkmanager||
其他选项
|选项|备注|
|--|--|
|Additional packages| 进入选择页面后输入 "/包名"搜索要额外安装的包,回车,在要安装的包上按空格进行选择,然后继续"/包名",建议:linux-zen-headers,btrfs-progs,neovim,git,intel-ucode,base-devel,curl,wget|
|Locales|默认|
|User configuration|设置ROOT密码和创建用户|
|Timezone|Asia/Shanghai|
各项都配置好后,检查一下,如果没有问题,选择Insttall ,等待安装结束
不要重启, 选择chroot 进入新系统
## 11.Limine 引导(ArchWiki 官方版,UEFI + Btrfs)
```bash
# 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. 编辑配置文件,加入windows引导
nvim /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
/Windows
protocol: efi
# 使用 guid(参数) 来锁定另一块硬盘的分区
# blkid /dev/sda1 # 假设 Windows 在 sda1,请根据实际修改
path: guid(这里替换成刚才查到的UUID):/EFI/Microsoft/Boot/bootmgfw.efi
把 UUID=... 替换成你 btrfs 根分区 /dev/sdb2 的 UUID(blkid /dev/sdb2 查看)
```
# 三、安装完成重启
```bvash
exit
swapoff /mnt/swap/swapfile
umount -R /mnt
reboot
```
双系统时间问题
百度:Windows 系统使用 UTC
```bash
timedatectl set-ntp true
```
---
设置archlinuxcn
```bash
nvim /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
```bash
pacman -Sy archlinuxcn-keyring
```
---
安装paru,管理AUR软件 ,也可以用yay ,我个人比较喜欢paru,因为它是用rust写的,仅此而已,反正我是~~不喜欢python~~ :(
```bash
pacman -S paru
```
修改一下paru配置文件,具体项目根据自己需求设置
```bash
nvim /etc/paru.conf
```
这是我的paru配置文件
>[options]
>PgpFetch
>Devel
>Provides
>DevelSuffixes = -git -cvs -svn -bzr -darcs -always -hg -fossil
>BottomUp
>RemoveMake
>SudoLoop = true
>CleanAfter
AUR编译优化
```bash
nvim /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
paru -S nvidia-580xx-dkms nvidia-580xx-utils
```
```bash
curl -fsSL https://install.danklinux.com | sh
```
```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
```