# 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