获取我的IP

我的公网 IP 地址是:

嵌入的 iframe

四个月前,我在我的笔记本上安装了Debian12,但是他的软件包实在太老,而且过于臃肿(kde组件满齐的),最重要的是竟然窗口预览默认是有bug的,需要手动安装pipewire包,作为一个已经发布很久并且以稳定著称的系统,真是令人哭笑不得。

最近学校机器人训练时间略有空余,抽出时间来研究了下archlinux。

无U盘安装系统

学校没有u盘,不能使用常规的方式安装iso。

不过这也好弄。首先得确认自己的机子是UEFI启动并且安全启动已关闭。接着从磁盘中分配一个不足8G的Fat32分区。将iso镜像文件中的所有文件复制到这个盘中,使用Diskgenius更改UEFI启动项,添加上刚才复制的文件中EFI文件夹下的引导文件,重启进入启动选项,即可进入arch安装镜像。

个人需要使用timeshift备份/,所以打算使用btrfs分区,为了以后的休眠,swap分区也要搞上。

Tips:安装系统前记得备份旧的EFI引导盘。

于是我借用的这位大佬的博客(没有完全借鉴,我将我用到的部分复制了过来)。

https://sspai.com/post/78916

我使用的是 gdisk 来进行硬盘分区,你也可以使用其他的分区工具。对于支持 UEFI 的机器,/boot/boot/EFI 目录必须挂载到单独的 FAT32 分区,一般 boot 分区只需要几百兆大小。swap 可以为单独的分区或者是交换文件,一般而言使用交换文件配置要更为灵活,但是在 btrfs 分区上使用交换文件需要一些额外设置,而且休眠到交换文件也需要额外设置,所以为了方便起见,我直接划分了一个交换分区,至于交换空间的大小,若是想要休眠到硬盘,一般而言需要交换空间不小于机器物理内存的容量,对于小内存的机器,最好是两倍物理内存的容量,若是机器内存比较大,交换空间小于物理内存容量也是可行的,只是需要一些额外设置,我的电脑只有 8G 内存,保险起见我直接分了 16G 交换分区。剩余的空间我全给了主分区,将来格式化成 btrfs 文件系统。

接下来是格式化分区,分区设备名称不同的机器可能会不同,请自行修改:

mkfs.fat -F 32 /dev/sda1    # 格式化 boot 分区
mkswap /dev/sda2    # 格式化 swap 分区
mkfs.btrfs /dev/sda3    # 格式化主分区

然后是挂载分区,btrfs 分区的挂载比较复杂,首先挂载整个 btrfs 分区到 /mnt,这样才可以创建子卷:

mount /dev/sda3 /mnt    # 挂载分区
# 创建子卷
btrfs subvolume create /mnt/@
btrfs subvolume create /mnt/@home
btrfs subvolume create /mnt/@log
btrfs subvolume create /mnt/@pkg
umount /dev/sda3    # 卸载分区

关于子卷的划分,我打算使用 Timeshift 来管理快照,而 Timeshift 只支持 Ubuntu 类型的子卷布局,也就是根目录挂载在 @ 子卷上,/home 目录挂载在 @home 子卷上;另外我还打算使用 grub-btrfs 来为快照自动创建 grub 目录,grub-btrfs 要求 /var/log 挂载在单独的子卷上;还有 @pkg 子卷挂载在 /var/cache/pacman/pkg 目录下,这个目录下保存的是下载的软件包缓存,也没什么保存快照的必要,所以也单独划分了个子卷。

接下来就是挂载子卷了,使用 subvol 挂载选项来指定挂载的子卷:

# 挂载根目录
mount /dev/sda3 /mnt -o subvol=@,noatime,discard=async,compress=zstd
# 挂载家目录
mkdir /mnt/home
mount /dev/sda3 /mnt/home -o subvol=@home,noatime,discard=async,compress=zstd
# 挂载 /var/log 目录
mkdir -p /mnt/var/log
mount /dev/sda3 /mnt/var/log -o subvol=@log,noatime,discard=async,compress=zstd
# 挂载 /var/cache/pacman/pkg 目录
mkdir -p /mnt/var/cache/pacman/pkg
mount /dev/sda3 /mnt/var/cache/pacman/pkg -o subvol=@pkg,noatime,discard=async,compress=zstd

除了 subvol 选项用来指定挂载的子卷,我还添加了其他的挂载选项用于优化 btrfs 文件系统的性能:noatime 选项可以降低数据读取和写入的访问时间;discard=async 选项可以在闲时释放磁盘中未使用的区块,也就是 TRIM,另外也可以不添加这个选项,而是在系统安装完成后启用 fstrim.timer 服务从而定时执行 TRIM,可以根据自己的喜好选择;compress 选项可以在数据写入前进行压缩,减少磁盘的写入量,增加磁盘寿命,在某些场景下还能优化一些性能,支持的压缩算法有 zliblzozstdzstd 算法是最快的。关于更多的挂载选项,可以看这里。在系统安装完成后也可以编辑 /etc/fstab 文件修改挂载选项。

因为 /var/log/var/cache/pacman/pkg 在将来并不会被保存快照,也可以选择为这两个目录禁用写时复制:

chattr +C /mnt/var/log
chattr +C /mnt/var/cache/pacman/pkg

接下来挂载其他分区:

# 挂载 boot 分区
mkdir /mnt/boot
mount /dev/sda1 /mnt/boot
# 启用 swap 分区
swapon /dev/sda2

接下来便可以继续接下来的安装步骤了。

这一步做好后,我转而使用archinstall脚本安装arch。

其他步骤都和常规一样的,只需要在选择磁盘分区时候,选择第三个分区方式(选择后会让你打一个路径的那个),输入/mnt即可。

剩下的主要是桌面环境这些,我个人选择的是kde,音频和网络啥的也都一起安装了。第一次不知道什么原因grub安装失败了,导致boot出问题,没办法只好格式化掉了,第二次我懒得尝试grub了,就使用了默认的systemdboot。

致此,应该就完成了安装。

基本配置

终于成功进入了系统,突然发现Windows引导没了,这才想起我好像格式化掉了boot(EFI)。当时我没有做EFI备份,windows引导就这样丢了😂。

不过也有抢救办法,搞个大白菜PE u盘,进PE桌面上就有个引导修复,修复完成后进window的diskgenius更改下启动顺序,就修好了。

后面简单配置了下默认windows启动和引导等待5秒,关于引导的部分就差不多了。

接着就是一些踩坑和闭坑了。

首先推荐设置pacman的国内镜像并添加cn源(cn源中有一些其他源没有的包,比如yay)。

我第一步便安装中文字体,并在设置中切换到了中文,安装上了fcitx5。

Tips:如果遇到部分软件中文显示日文字体,根据你的字体arch wiki添加下 /.fonts/xxx/xxx.conf

把字体的中文优先级提前到日文前。

接着由于cn源的原因,所以可以直接pacman -Sy yay。yay也很快装好了。

接着我安装了一些基础软件:edge,clash-verge-rev,timeshift等等。并立刻进行了系统的快照。

接着是N卡和I卡的驱动,我使用的是pacman中的闭源驱动560+,并安装了intel的一个包用来监视igpu占用率,经过一次重启,nvidia-smi和intel的监视器就都搞好了。个人体验而言,在wayland下,桌面和软件几乎没啥撕裂,画面也很流畅,比debian体验好!

我们机器人的程序是exe格式的,于是我尝试在linux下执行win的软件,wine的兼容性实在不敢使用,于是下载了个Steam,配置好proton后在库中添加非steam软件,选择exe文件,确认后再界面中找到那个“游戏”的设置,在属性-兼容中强开proton就好了。兼容性还是蛮好的!

关于discovery商店加载不出来,是少了几个包,简单搜索一下后安装就好了,注意检查kde6下安装的包应该是qt6版本的。

其他都是些小问题,根据自己的喜好配置就好了。