Table of Contents

1. 记录一次安装Arch-Linux的个人流程

1.2. efi分区扩容

因为在Windows下,默认 EFI分区 大小是100MiB (询问过AI,GPT的大概意思是说因为MS的EFI策略比较精简,做了大量的耦合,所以默认EFI大小容量就可以缩到特别小)

但是当如果EFI大小容量过小的话,就基本是不够的。然后弄过(B)oot(L)ooder比如grub、比如OC之类的,就会有一些 EFI大小容量不够的错误提示

比如如果容量不够,就会在 grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=grub 这一步就会出现 grub error: no left space to create a directory的错误,从而导致引导不了ArchLinux系统,从而导致系统的确是安装在硬盘上了,但就是进不去,因为没有“钥匙”,装了也是白装,下一次进系统还是Windows

如果是 重装Windows系统Windows还没有安装好 那么

# 创建一个1000M的EFI分区,用来保存接下来的grub-install文件
diskpart
list disk
select disk X  # X是你的目标磁盘编号
create partition efi size=1000
format fs=fat32 quick  

如果是 已安装好Windows系统Windows已经安装好,ArchLinux发行版还没有安装好 那么

# 创建一个1000M的EFI分区,用来保存接下来的grub-install文件
# administrator打开cmd  
diskpart

list disk

select disk <分出1024MiB的那个disk的编号>

list partition

create partition efi

format quick fs = fat32

# 创建挂载点别名P
assign letter = P

exit  

1.3. 下载镜像

我们到这里 archlinux.org/download 下载 torrent 每月更新的种子文件

我推荐的是使用 bitComet比特彗星 来下载 (在Windows下,可以通过chocolatey software的 choco install bitComet) 来安装

同时,记得每个月的月初时,个人建议最好下载完毕后,后台挂一会bitComet,毕竟P2P模式人人为我我为人人。不过难免有坏人bad guy,但那可能应该是做种子那方的维护者需要考虑的事情了

然后刻盘,我推荐用 rufus 3.2 比较早期的版本(反正我个人的经验是不要用 rufus 4.0 之上的版本),可以刻录iso

找个新U盘,我个人使用的是 2018年后生产的笔记本 这时基本上都具备了 UEFI启动方式 所以我个人使用的是 GPT、而非MBR 同时记得要选用 dd模式 来刻录

然后到windows的 磁盘管理 (使用Win+X弹出菜单来选择磁盘管理) 我们一定要保证分出来的区域,在 [windows磁盘管理] 中,看上去的颜色是 [黑色] 的才行

然后分区分个大概100来G吧,基本上就足够了。(您要分得小一点也可以的,但最起码保证有30G的空间就足够了)

然后插U盘,插上就行了,这时在windows上 肯定是识别不出来的里面有什么文件

别管,我们 按住Shift,然后用鼠标点击Windows的重启 然后就会进入到 Windows疑难杂症 那里,然后选择 进入固件设置

然后在固件设置里,您自己寻找 使用U盘 启动的方式,就可以 进入archiso

1.4. archiso过程记录

1.4.1. 联网iwctl

# 进入interactive界面
iwctl

# 查看笔记本的网卡(wlan0)
device list

# 让笔记本网卡(wlan0)扫描附近网络
station wlan0 scan

# 让笔记本网卡(wlan0)获取附近网络
station wlan0 get-networks

# 联网
station wlan0 connect 网络

# 退出iwctl
exit    

1.4.2. 同步系统时间

  # 设置系统时间
timedatectl set-ntp true

1.4.3. fdisk分区

# 查看硬盘分区情况(这是我个人的笔记本唯一的一个固态硬盘: /dev/sda)
lsblk

# 查看硬盘信息
# 我这里的情况是,我不一定能保证您的 [磁盘名称] 也是不是这样,如果不确定的话,请到一步一步跟着视频教程来 https://www.bilibili.com/video/BV1ag411K725
# + ESP分区: /dev/sda4
# + 135GiB空间主分区: /dev/sda8
fdisk -l

# 然后进行初始化
# 这一步就 [相当于是将windows磁盘管理的⚫黑色分区,初始化为windows磁盘管理的🔵蓝色分区,我自己就是大致描述,希望您能理解到那个意思就行]
fdisk /dev/sda
# Press n    # n 就是 n键,用来创建(n)ew partition
# Press RET  # RET 就是 Enter键,用来执行到下一步
# Press RET  # RET 就是 Enter键,用来执行到下一步
# Press RET  # RET 就是 Enter键,用来执行到下一步
# Press w    # w 就是 w键,用来保存(w)rite

# 然后给此分区加上签名,有ext4、zfs、btrfs等等
# 我个人只推荐使用 ext4 而不建议在非商业发行版上使用 btrfs (原因是非商业版的btrfs炸了没得修,个人不会修btrfs就这样)
# /dev/sda8 是我的135GiB空间主分区,我不一定能保证您的 [磁盘名称] 也是不是这样,如果不确定的话,请到一步一步跟着视频教程来 https://www.bilibili.com/video/BV1ag411K725
mkfs.ext4 /dev/sda8

1.4.4. 挂载分区

名词 名词解释
挂载mount 在一颗B+文件树里面,将两个树节点连接起来的意思 我自己就是大致描述,希望您能理解到那个意思就行
挂载分区 将存放操作系统的磁盘,放在想要放的位置路径空间上 我自己就是大致描述,希望您能理解到那个意思就行
# 我不一定能保证您的 [磁盘名称] 也是不是这样,如果不确定的话,请到一步一步跟着视频教程来 https://www.bilibili.com/video/BV1ag411K725  
# 我不一定能保证您的 [磁盘名称] 也是不是这样,如果不确定的话,请到一步一步跟着视频教程来 https://www.bilibili.com/video/BV1ag411K725
# 我不一定能保证您的 [磁盘名称] 也是不是这样,如果不确定的话,请到一步一步跟着视频教程来 https://www.bilibili.com/video/BV1ag411K725

# 挂载主分区           (我的笔记本是/dev/sda8)到/mnt
mount /dev/sda8 /mnt

# 挂载EFI System分区   (我的笔记本是/dev/sda4)到/mnt/boot	(UEFI启动)
mkdir /mnt/boot
mount /dev/sda4 /mnt/boot	# 正是由于这里,所以会遇到后面的ESP大小容量不够导致的一个小问题: grub error: no left space to create a directory.

1.4.5. 设置镜像源mirrorlist

# 使用vim打开mirrorlist
vim /etc/pacman.d/mirrorlist

# 并添加服务器镜像
Server = https://mirrors.ustc.edu.cn/archlinux/$repo/os/$arch  # 中科大
Server = https://mirrors.bfsu.edu.cn/archlinux/$repo/os/$arch  # 北京外国语大学(广度优先搜索大学,梗来自清华源4月1日愚人节)

1.4.6. pacstrap安装必要的软件

# 作用: 让 pacstrap装修师傅 对着 /mnt 这个新家,进行装修(安装软件)
# 内核: linux-lts(稳定版)
pacstrap /mnt base base-devel linux-lts linux-firmware dhcpcd

1.4.7. 生成fstab

# 生成fstab
genfstab -L /mnt >> /mnt/etc/fstab

# 查看(我的笔记本)情况
# /dev/sda8   =>   /	   btrfs
# /dev/sda4   =>   /boot   vfat
cat /mnt/etc/fstab

1.4.8. 搬家arch-chroot

# 作用: 把自己搬进了毛胚房新家(此时的/mnt新家,还是刚装修完,装修师傅没有打扫卫生,自己的行李还没放置进去)
arch-chroot /mnt

# 效果
# root@archiso ~#   会改成   [root@archiso /]#

1.4.9. 设置系统时区时间

# 设置时间区域为亚洲/上海(Asia/Shanghai)
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

1.4.10. 同步时间为硬件时间

# hwclock  
hwclock --systohc

1.4.11. 安装一些软件

# vim在快速编辑一些文件还是很有用武之地的,还是十分推荐安装vim.....
pacman -S vim dialog wpa_supplicant ntfs-3g networkmanager netctl

1.4.12. 设置本机环境

# 设置语言
# #en_US.UTF-8 UTF-8   改成   en_US.UTF-8 UTF-8
# #zh_CN.UTF-8 UTF-8   改成   zh_CN.UTF-8 UTF-8
# #zh_TW.UTF-8 UTF-8   改成   zh_TW.UTF-8 UTF-8
# #zh_HK.UTF-8 UTF-8   改成   zh_HK.UTF-8 UTF-8
vim /etc/locale.gen

# 生成语言项
locale-gen

# 设置系统环境语言
# 添加 LANG=en_US.UTF-8
vim /etc/locale.conf

# 设置主机名( 主机名 要记住)
# 添加 kle(或者你自己设置一个名称,比如我这里设置kle,后面就要用到kle)
vim /etc/hostname

# 激活主机名
# 127.0.0.1 localhost
# ::1 localhost
# 127.0.1.1 kle.localdomain kle  (kle是我自己的 [主机名])
vim /etc/hosts

# 设置root密码
passwd

1.4.13. 设置(B)oot(L)oader

# 不弄会怎样?那就没有 “钥匙”
# 导致导致系统的确是安装在硬盘上了,但就是进不去,因为没有 “钥匙”
# 装了也是白装,下一次进系统还是Windows (即使您进入了bios固件设置,仍然只会找到windows的引导文件)
# bootloader作用: 通过BL这类程序,来让硬件驱动软件起来,让软件跑起来(这里的软件指的是操作系统)

# 安装os-prober,为了安装让archlinux与windows10双系统共存
# 与时俱进: 好像说不用装这个了,但为了以防万一还是装上吧!
pacman -S os-prober ntfs-3g
pacman -S grub efibootmgr

# 使用grub,从而在/boot下,生成名为grub的引导文件
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=grub

# grub-mkconfig 输出生成grub配置文件(此时环境: U盘里面,所以应该是只有 [archlinux] 该 “软件” (这里的软件指的是操作系统))
cd /boot && mkdir grub
cd ../
grub-mkconfig -o /boot/grub/grub.cfg

1.4.14. 准备拔U盘

exit
# 效果
# [root@archiso /]#   会改成   root@archiso ~#

# 重启,黑屏了就拔u盘,防止二次进入archiso(这得看主板那时的设置)  
reboot

# 备注
# + 如果您出先了 "watchdog did not stop" 的提示,最好等待个10来分钟左右,不要拔U盘,等待了10分钟之后直接硬件关机然后再拔U盘不然装不上的,如果出现了并强行拔下来的话需要重装从这句话之上面的每一步。
# + 反正我自己2024年4月份安装的时候,在我自己这台笔记本上是这样的
# + 但是现在2024年10月1日的镜像不用等了,直接当电脑黑屏就能直接拔U盘了。

# OK
# + 如果您拔了U盘之后,一般来说就会进入到 [全新安装好的ArchLinux了]
# + 然后我们在tty上登陆
# + 输入 "root" 字符
# + 输入 "您刚刚您自己设置过的密码" (密码不会回显的)

1.5. 已安装好archlinux后的本机设置

1.5.1. 联网

# 网络连接
# 首先,无论有线无线网络连接,都必须先开启服务
systemctl enable NetworkManager
systemctl start NetworkManager

# 如果机器是有线网线连接: 就已经连上网了
# 如果机器是无线连接: 必须进行下面的步骤

# 无线联网(如果是有线的话,在开启上面的服务后就可以直接联网了)
nmcli dev wifi list
nmcli dev wifi connect "网络名" password "密码"

1.5.2. 设置SWAP交换分区

# 设置SWAP分区
# 有人评价说,对于SWAP分区大小的最佳选择,是 [SWAP大小 🟰 真实内存大小 ➗ 2],不过个人认为见仁见智,我个人笔记本内存共有8G,仅设置了2G的SWAP分区

# 这里在 "/" 目录下,设置了2G(2048M)大小的SWAP分区
dd if=/dev/zero of=/swapfile bs=1M count=2048 status=progress
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile

# 手搓一下fstab,来开启SWAP
vim /etc/fstab

# 使用vim来添加下面的文本
/swapfile     none    swap      defaults                0 0

1.5.3. 创建日常使用的用户,而不是root用户

# 我的日用用户名是: kle
useradd -m -G wheel kle

# 然后第1次输入 日用用户名的密码
# 然后第2次输入 日用用户名的密码
passwd 日用用户名

# 安装sudo
pacman -S sudo

# 编辑器设置,将vi映射成了vim,同时也是为了用visudo
# 如果不想映射的话,执行 sudo vim /etc/sudoers 也是可以的
ln -s /usr/bin/vim /usr/bin/vi

# 编辑进行下面的修改
visudo
#%wheel ALL=(ALL:ALL) ALL   改成   %wheel ALL=(ALL:ALL) ALL

# 切换到日用用户名,并且通过su,来给予root权限 (我自己的日用用户名是: kle)
su kle  

1.5.4. 安装桌面环境DE

# 开启一些可用仓库源
# #[multilib]                         改成   [multilib]
# #include=/etc/pacman.d/mirrorlist   改成   include=/etc/pacman.d/mirrorlist
#                                     改成   [archlinuxcn]					
#                                     改成   Server = https://repo.archlinuxcn.org/$arch
sudo vim /etc/pacman.conf

# 强制开滚,保持与镜像源的同步
sudo pacman -Syy

# archlinuxcn的密钥环
# + 好像是因为人手不够,删除了一个master key
# + 导致fc教授的可信程度设置到marginal trust导致的
# + 现在手动要信任sudo pacman -Syy后存在机器本地的fc教授farseerfc的密钥
sudo pacman-key --lsign-key "farseerfc@archlinux.org"
# 这一步的钩子函数运行时间,较长,因为它要给所有本地的包加上刚导入的fc教授的签名,静静等待就好。
sudo pacman -S archlinuxcn-keyring

# 显卡驱动
# 推荐资料: https://wiki.archlinuxcn.org/wiki/Xorg#%E5%AE%89%E8%A3%85
# + 比如在我个人的笔记本上,不要安装这个xf86-intel-video,否则将会导致sddm登录界面花屏闪烁
# + 导致永远无法通过sddm切换其余的桌面环境(但是盲输密码是可以登录KDE plasma on Wayland的)
# + 不安装xf86-video-intel时,会默认使用自带的Xorg的modesetting。
# + mesa是OpenGL此驱动
sudo pacman -S mesa

# 安装界面美观、且配置现代的KDE(同时使用SDDM桌面管理器)
sudo pacman -S xorg plasma kde-applications sddm network-manager-applet
# + 然后一直RET(Enter)下去就行了,按个大概10来次都确定就行了
# + 因为 https://www.bilibili.com/video/BV1ag411K725 视频教程也是全部确定的



# 在约半小时后的下载并安装完毕之后,打开桌面管理器sddm
sudo sytemctl enable sddm

# 关闭一些服务
sudo systemctl disable netctl

# 开启网络服务,从而可以在下一次的每次进系统都能使用联网功能
sudo systemctl enable NetworkManager  

1.5.5. 安装中文字体

# 安装中文字体
sudo pacman -S wqy-microhei wqy-microhei-lite wqy-bitmapfont wqy-zenhei ttf-arphic-ukai ttf-arphic-uming adobe-source-han-sans-cn-fonts noto-fonts-cjk

1.5.6. 重新设置本机语言

# 重新设置本机语言
sudo vim /etc/locale.conf
# #LANG=en_US.UTF-8   改成   LANG=zh_CN.UTF-8

1.5.7. 太美丽啦KDE

sudo reboot

1.6. 一些也许有用的软件

1.6.1. 中文输入法fcitx5

# 安装fcitx5全家桶
# + fcitx5-im  本体
# + fcitx5-chinese-addons 输入中文附加项
# + fcitx5-material-color Material主题色  
sudo pacman -S fcitx5-im fcitx5-chinese-addons fcitx5-material-color

# 在相应的图形环境之下的软件的IM软件,均可使用fcitx5全家桶。比如我想在spectacle(KDE的截图工具,属于QT_IM_MODULE)输入中文,于是就设置QT_IM_MODULE=fcitx
#       改成      GTK_IM_MODULE=fcitx
#       改成      QT_IM_MODULE=fcitx
#       改成      XMODIFIERS=@im=fcitx
#       改成      SDL_IM_MODULE=fcitx
sudo vim /etc/environment

# 在KDE下,需要到 [系统设置 > 键盘 > 虚拟键盘 > 选择 "Fcitx5" (而不是 "Fcitx5 Wayland启动器(实.."))]
# 从而来让KDE桌面环境,识别出fcitx5。从而自己在send-key时,能发C-SPC到KDE on Wayland上,进行切换输入法  

1.6.2. 电池充电阈值(可选)

# 电池充电阈值
# + 此功能的开启,不依赖任何系统,具体需要看厂商的硬件支持
# + 可到笔记本的相应门户网站上查询手册查看是否有这一功能
# + 比如早期一点点的一些TP笔记本,支持充电到60%或充电到80%这2个固定的值
# + 比如一些ASUS笔记本,支持60%到100%的80个固定的值(这我自己真的没想到支持怎么这么好?)

# 安装电池充电阈值
sudo pacman -S tlp

# 停止现有的电池充电阈值服务
sudo systemctl disable tlp
sudo systemctl stop tlp

# 我自己这里是当充电少于75%就开始充电,充电到80%就停下。
sudo vim /etc/tlp.conf
# #START_CHARGE_THRESH_BAT0=75   改成   START_CHARGE_THRESH_BAT0=75
# #STOP_CHARGE_THRESH_BAT0=80    改成   STOP_CHARGE_THRESH_BAT0=80

# 开启最新的电池充电阈值服务
sudo systemctl enable tlp  

1.6.3. X与Wayland(可选)

桌面服务器(桌面协议) 据我个人所知的DE 据我个人所知的WM
X 最稳定的桌面服务器,2024年有开发者 Enrico Weigelt 一人之力提交数占到了 83% i3wm、dwm, etc.
Wayland 流行度很高的桌面服务器,说是Wayland重新实现并抽象了X桌面协议,并实现了X没有的功能比如 “倍数缩放” Hyprland、NIRI, etc.
XWayland X 与 Wayland 之间的桥梁,从而在Wayland下运行只遵循X桌面协议的软件,比如 alacritty N/A

所以,要在Wayland下运行只遵循X桌面协议的软件,比如在Wayland下运行alacritty的话,就需要这样

# 要在Wayland下运行只遵循X桌面协议的软件,比如在Wayland下运行alacritty的话,就需要这样  
sudo vim /etc/environment

# alacritty
#      改成      WINIT_UNIX_BACKEND=x11 alacritty

# kitty
#      改成      WINIT_UNIX_BACKEND=x11 kitty  

1.6.4. 字体补丁(可选)

这里的字体补丁,专门指为 Nerd Font 字体打上 fontforge 补丁,fontforge脚本(字体补丁),的实现来自于 nf字体作者: ryanoasis

我自己使用的是,从nf字体作者ryanoasis的仓库翻出来的一个字体,是 SourceCodePro字体 + NF图标 后的字体

# 安装fontforge
sudo pacman -S fontforge  

# 下载字体(原始名称: 'Sauce Code Pro Semibold Nerd Font Complete Mono.ttf')
# https://github.com/colfwe/dotfiles/tree/main/res/fonts(仓库地址)

# 下载fontforge脚本(字体补丁)
# https://github.com/ryanoasis/nerd-fonts?tab=readme-ov-file#font-patcher(仓库地址的archive此处)

# 打字体补丁(补丁后的名称: SauceCodeProNerdFontCompleteMonoNerdFont-SemiBold.ttf)
# fontforge --script ./font-patcher --complete 'Sauce Code Pro Semibold Nerd Font Complete Mono.ttf'

# 安装字体
mkdir -p ~/.local/share/fonts/
mv SauceCodeProNerdFontCompleteMonoNerdFont-SemiBold.ttf ~/.local/share/fonts/
sudo fc-cache -f

1.6.5. 包降级软件(可选)

提供命令行TUI界面,用来进行在某次pacman -Syu后,降级某个特定软件包

# 提供命令行TUI界面,用来进行在某次pacman -Syu后,降级某个特定软件包
sudo pacman -S downgrade

Created: 2025-03-17 一 15:12

Validate