从Manjaro共存安装CachyOS
前几天看到Steam系统调查里CachyOS居然占了8%,Manjaro只有可怜的1.5%,于是一时兴起,想尝试一下。 但是有不想完全卸载Manjaro,于是开始研究怎么直接在现有的系统上安装cachyos,就有了这篇。
弯路
- 尝试使用Manjaro的pacman,但是manjaro的pacman不认识cachyos特有的arch(x86_64_v3)导致安装失败
准备
需要用到的软件
fuseiso用来挂载安装镜像squashfuse用来挂载安装镜像里的squashfs压缩文件系统systemd-nspawn用来启动livecd容器(其实并非启动)arch-install-scriptsarch-chroot脚本
最后还需要一个CachyOS的安装镜像,直接从官网下载即可。
准备文件系统
我使用的是btrfs,所以多个Linux发行版共存非常简单,只需使用btrfs提供的SubVolume功能隔离即可。
参考Manjaro的布局,创建以下子卷:
| Path | Description | 挂载点 |
|---|---|---|
| @cachyos | CachyOS的root文件系统 | / |
| @cachyos/cache | 缓存 | /var/cache |
| @cachyos/log | 日志 | /var/log |
| @cachyos/home | 用户数据 | /home |
Manjaro的root文件系统子卷是/@,但是创建子卷需要在/下操作,所以需要先挂载的btrfs真正的root:
# 创建一个目录用来挂载sudo mkdir /mnt/fsroot# 这里开始需要把 /dev/nvme0n1p2 改为你自己的分区设备# 可以使用 df 命令查看,挂载点为 / 的那个设备就是sudo mount /dev/nvme0n1p2 /mnt/fsroot创建子卷:
sudo btrfs subvolume create /mnt/fsroot/@cachyossudo btrfs subvolume create /mnt/fsroot/@cachyos/cachesudo btrfs subvolume create /mnt/fsroot/@cachyos/logsudo btrfs subvolume create /mnt/fsroot/@cachyos/home创建完毕,卸载掉btrfs的root:
sudo umount /mnt/fsroot然后把新的子卷挂载上来,并cd进去,为等一下装系统做准备:
sudo mount -o subvol=@cachyos /dev/nvme0n1p2 /mnt/fsrootcd /mnt/fsroot创建目录并挂载:
sudo mkdir -p var/log var/cache home boot/efisudo mount -o subvol=/@cachyos/log /dev/nvme0n1p2 var/logsudo mount -o subvol=/@cachyos/cache /dev/nvme0n1p2 var/cachesudo mount -o subvol=/@cachyos/home /dev/nvme0n1p2 home# 将/dev/nvme0n1p1替换为你的EFI分区设备sudo mount /dev/nvme0n1p1 boot/efi安装系统
准备容器
首先挂载安装镜像:
(提一嘴:虽然fuseiso本身不需要root,但是我们还是放在root下,因为不使用root挂载会导致后面systemd-nspawn容器无法读取。之后的squashfuse同理。)
(从这里开始有大量sudo,建议直接切换到root用户下执行(前提是你要确保你知道自己在干什么,否则我还是建议你老老实实sudo))
sudo mkdir /tmp/cachyisosudo fuseiso /path/to/cachyos.iso如果挂载成功,你应该可以在里面找到一个*.sfs文件,这个就是压缩过后的livecd镜像。
> sudo fd '\.sfs$' /tmp/cachyiso/tmp/cachyiso/arch/x86_64/airootfs.sfs接下来使用squashfuse挂载它:
sudo mkdir /tmp/cachylivesudo squashfuse /tmp/cachyiso/arch/x86_64/airootfs.sfs /tmp/cachylive
# sudo ls /tmp/cachylive# 能看到一个正常的rootfs结构就算成功了# 示例:usr bin dev etc lib lib64 media mnt opt root run sbin sys var接下来我们需要创建一个pacman配置文件,直接放在root用户够得到的地方即可,基础配置从/tmp/cachylive/etc/pacman.conf复制过来,然后稍作改动:
--- a/tmp/cachylive/etc/pacman.conf+++ b/pacman.conf@@ -13,7 +13,7 @@ #DBPath = /var/lib/pacman/ #CacheDir = /var/cache/pacman/pkg/ #LogFile = /var/log/pacman.log-#GPGDir = /etc/pacman.d/gnupg/+GPGDir = /mnt/etc/pacman.d/gnupg/ #HookDir = /etc/pacman.d/hooks/ HoldPkg = pacman glibc #XferCommand = /usr/bin/curl -L -C - -f -o %o %u
@@ -72,7 +73,22 @@ LocalFileSigLevel = Optional
[cachyos] SigLevel = Optional TrustAll-Include = /etc/pacman.d/cachyos-mirrorlist+Server = https://mirrors.ustc.edu.cn/cachyos/repo/$arch/$repo++[cachyos-v3]+Server = https://mirrors.ustc.edu.cn/cachyos/repo/$arch_v3/$repo++[cachyos-core-v3]+Server = https://mirrors.ustc.edu.cn/cachyos/repo/$arch_v3/$repo++[cachyos-extra-v3]+Server = https://mirrors.ustc.edu.cn/cachyos/repo/$arch_v3/$repo
# The testing repositories are disabled by default. To enable, uncomment the # repo name header and Include lines. You can add preferred servers immediately解释一下两处改动:
GPGDir用来配置pacman的gpg数据目录,由于我们使用的是容器和squashfuse,因此/etc/pacman.d并不像真实的livecd里一样可以修改。这里把它配置到新系统的目录下确保不会报错。- 这里配置的是中科大的镜像以及
x86_64_v3优化的仓库,如果你是x86_64_v4兼容的设备,可以把所有v3改为v4。
这里的配置文件是临时给pacstrap用的,因此不会保存到新系统。
容器 启动!
把下面的/root/pacman.conf替换为上一步创建的文件路径,然后启动!容器:
sudo systemd-nspawn \ -D /tmp/cachylive \ --bind /mnt/fsroot:/mnt \ --bind-ro /etc/resolv.conf \ --bind-ro /root/pacman.conf:/etc/pacman.conf \ /usr/bin/bash进入容器后,接下来的流程就很接近正常arch的安装流程了
也可以把neovim换成你顺手的文本编辑器
pacstrap -K /mnt base base-devel cachyos-keyring archlinux-keyring cachyos-mirrorlist cachyos-v3-mirrorlist cachyos-v4-mirrorlist neovimgenfstab -U /mnt >> /mnt/etc/fstab
arch-chroot /mntuseradd -G wheel myuserpasswd myuserpasswd root# 去掉%wheel开头的行以允许sudonvim /etc/sudoers这里直接退回到宿主机使用arch-chroot进去安装好的rootfs。
arch-chroot /mnt/fsroottip: 按两下Ctrl+]接p即可发送关机指令,按三下Ctrl+]可强制Kill容器。
修改pacman配置文件 /etc/pacman.conf,增加下面几行(根据情况选择是否替换v3为v4)
[cachyos]Server = https://mirrors.ustc.edu.cn/cachyos/repo/$arch/$repo
[cachyos-v3]Server = https://mirrors.ustc.edu.cn/cachyos/repo/$arch_v3/$repo
[cachyos-core-v3]Server = https://mirrors.ustc.edu.cn/cachyos/repo/$arch_v3/$repo
[cachyos-extra-v3]Server = https://mirrors.ustc.edu.cn/cachyos/repo/$arch_v3/$repo(省略中间配置主机名、多用户、locale、时区等步骤)
安装paru, kernel和grub
sudo pacman -S paruparu -S cachyos-grub-theme grub-hook grub-btrfs-support grub efibootmgr linux-firmwareparu -S intel-ucode # 或者如果你是amd就用amd-ucodeparu -S linux-cachyos# 或者linux-cachyos-bore,不确定就不用改打开/etc/default/grub,作以下更改:
-- GRUB_DISTRIBUTOR="Arch"++ GRUB_DISTRIBUTOR="CachyOS"
-- #GRUB_THEME="/path/to/gfxtheme"++ GRUB_THEME="/usr/share/grub/themes/cachyos/theme.txt"
-- #GRUB_DISABLE_OS_PROBER=false++ GRUB_DISABLE_OS_PROBER=false安装grub:
grub-install --efi-directory=/boot/efi --boot-directory=/boot安装KDE(或者你喜欢的其他DE/WM)(或者不装也可以)
paru -S kittyparu -S plasma差不多安装完了,可以重启了。重启之后进入系统就可以安装你想要的其他软件了。不过别忘了安装cachyos包哦。
虽然本篇是安装CachyOS的记录,但是理论上也适用于其他Arch系的发行版。
本文由 kirisauce 原创,采用 CC BY 4.0 许可协议
原文链接:https://kirisauce.netlify.app/blog/linux/install-cachyos-from-other-distro/