AOSC OS 刨坑记

Me: 请问 8102 年安装 AOSC OS 有什么要注意的吗
Jeff Bai:没什么

准备

U 盘 x2
支持 EFI 模式

  • LiveCD (我使用的是 archiso)
  • AOSC OS tarball

安装

鉴于安装 AOSC OS 的各位 Dalao 都已经玩过 Arch 之类的发行版,所以就不从头开始介绍分区那些了。

解压

挂载上硬盘分区和有 tarball 的 U 盘之后你就可以解压一把梭了。

1
tar --numeric-owner -pxf /path_to_tarball/tarball.tar.xz

注意到--numeric-owner(总是以数字代表用户/组的名称)这个参数,因为如果在解压的时候不将此参数带上的话可能出现奇怪的权限问题。

Lion:罪孽深,忘了给 wiki 加上那行参数 在 “异系统” 上解压文件,如果不用 –numeric-owner ,那么很可能会导致一些隐蔽的小问题。

1
ll /usr/lib/dbus-1.0/

可以通过查看dbus-daemon-launch-helper的权限来看是不是解压姿势正确。如果不是显示 root:dbus权限,那就说明解压方式不太对,比如下图。

什么权限,什么管理,老夫装机就是一把梭,又不是不能用!
不好意思,还真不能用.gif

Arch 里面的用户定义是 dbus:x:81:81:System Message Bus:/:/sbin/nologin而 AOSC OS 中这一数值的定义是 19。于是 AOSC OS 中的 D-Bus 后端(dbus, 19)程序,无法去执行一个属于用户组(unknown, 81)的 dbus-daemon-launch-helper,也就无法进行提权。比如多媒体按键(比如Fn+F2调整屏幕亮度等),或者修改 SDDM 壁纸等等。

Lion: 按下媒体键,X 传递给 KDE,通过 D-Bus 又传递给 Shortcut 后台,然后又通过 D-Bus 传递给 org.kde.powerdevil 对象,最后 org.kde.powerdevil 通过 D-Bus 提权,提权使用 dbus-daemon-launch-helper(利用用户组 dbus,set-uid 到用户 root)启动 D-Bus 服务单元 org.kde.powerdevil.backlighthelper.service。

解决方法在这也说一下:

  • 人生重来法:如果你时间充裕而已装信息不重要的话你可以选择重新以正确的姿势解压并替换。
  • 偷梁换柱法:直接在 AOSC OS 中chown root:dbus /usr/lib/dbus-1.0/dbus-daemon-launch-helper,但是这并不意味着只有这一个文件存在权限问题,可能再接下来的使用中你需要发现问题,并找到需要变更组权限的文件或目录然后手动设定。
  • 搁置等死法:内心毫无波动并按下了电源键。作为滚动发行版不断更新的包,新的文件会把潜在的错误的权属信息逐渐覆盖掉,甚至甚至我们以后生成 tarball 的时候可以随附 permission fixer(美好愿景)。然后你会发现有些功能突然能用了,但是这可能需要等待一到两个月时间,如果不打算长期使用的话这个时间内足以让你装个别的发行版然后恢复生产环境了。

好了,至此解压过程就结束了,因为附带一些解释,所以篇幅有点长。鉴于狮子非得科普一把Set-UID机制,所以再多罗嗦两句:

Set-UID允许用户的有效 ID 等同于执行该程序所需要的用户 ID,用户身份会被无条件设置到文件所属的用户上(如果是以 sudo 执行的话就相当于临时使用 root 权限,此时 UID=0)。

初始配置

这一部分和 wiki 没什么区别,在此抄写一遍。

1
2
mkdir /mnt/run/udev
for i in dev proc sys run/udev; do mount --rbind /$i /mnt/$i; done

rbind一下以避免偷梁换柱时的潜在错误。

一个约定俗称的规矩是 dev proc sys 这些文件夹下本身是没有内容的,通过挂载(具体可以用 findmnt命令查看一下) 。而所谓的偷梁换柱,实际上就是“我们为容器伪造一套内容,并让它直接重定向到宿主机的对应目录上。”

为了“联网”,实际上是指定nameserver,你需要将宿主的/etc/resolv.conf拷贝到容器目录中/mnt/etc/resolv.conf

1
2
chroot /mnt apt update
chroot /mnt apt install genfstab

实际有用过 Arch 的用户就会发现,怎么会有genfstab这个东西,没错,这个就是直接从 Arch 里面的arch-install-script拆出来的一个包,所以如果你的 LiveCD 是 Arch 的话那你可以直接用。但是强烈建议在生成 fastab 文件之后检查一下是否将多余的虚拟硬件也写入了,如果是可以手动删除(一般是不带 UUID 那些),这个生成配置不干净的问题可能在日后的 patch 中修复,但是手动改一下也不是难事。

1
/mnt/usr/bin/genfstab -U -p /mnt >> /mnt/etc/fstab

引导配置

随后就可以 chroot 进去乱搞(个性化设置)一通了。

1
chroot /mnt /bin/bash

如果官方源你觉得速度很慢的话可以使用apt-gen-list工具来更改(该工具的上游就是 AOSC)

1
2
3
apt-gen-list -e 10-ustc
apt update
apt full-upgrade # 但是不建议急着更新,具体原因看个性化配置说明

如果你在安装的过程中出现了 GPG 密钥认证失败的问题,请及时留意 AOSC 官方网站 页面所发出的新闻,或者入群进行反馈。

1
sh /var/ab/triggered/dracut

通过这个脚本可以初始化内存磁盘。

1
2
3
mount /dev/sda1 /efi
grub-install --target=x86_64-efi --bootloader-id=AOSC-GRUB --efi-directory=/efi
grub-mkconfig -o /boot/grub/grub.cfg

/efi 在这里需要替换成你实际上挂载的目录,如果没有 grub 请自行安装一个,或者采取别的引导办法,比如systemd-boot在此不多做介绍了。

个性化配置

添加用户等和设置时区等和其他发行版大致一致,在此就不做介绍了。

因为 AOSC OS 几乎是将所有UTF-8编码的字体文件都写入了默认配置,在locale-genapt upgrade的时候会非常缓慢和耗费计算资源,但是实际上我们需要的也就是一两个,所以需要先修改/etc/locale.gen以节约时间。通常来说保留en_US.UTF-8 UTF-8zh_CN.UTF-8 UTF-8即可。

1
localectl set-locale "LANG=zh_CN.UTF-8"

通过这一工具可以设置默认的显示语言,当然也可以直接手写配置文件/etc/locale.conf

1
hostnamectl set-hostname yourhostname

hostname 同样,也可以手写/etc/hostname

然后umount -Rreboot就可以使用了,如果是下载了不带桌面环境的安装包,则还需要自己安装一下桌面环境,并启动相应的systemd service

日常使用

挖坑中…