21.4 ArchLinux 兼容层(基于 ArchLinux bootstrap)

注意

现在的兼容层构建完成 chroot 后看似卡住,其实是 bash 一行完全无显示,正常输入仍能使用。

测试换 zsh 仍无效,TTY 报错 linux: jid 0 pid 1154 (bash): linux_ioctl_fallback fd=0, cmd=0x802c542a ('T',42) is not implemented

视频教程:07-FreeBSD-ArchLinux 兼容层脚本使用说明

注意

ArchLinux 兼容层看上去占用略大于 Ubuntu 兼容层是因为正在运行的谷歌 Chrome 浏览器。

构建基本系统

处理所需服务项

Linux 服务项

dbus

通常桌面已经配置此项,若你没有安装 dbus,请自行安装。

调整 Linux 兼容层默认内核版本

对于滚动发行版,Linux 兼容层默认内核通常较低。直接构建的话,Arch 兼容层会在 chroot 的时候报错 FATAL: kernel too old。需要把 Linux 兼容层的内核版本改为 6.12.20(或其他较高版本)才可以。

  • 查看当前设置的内核版本:

注意

你必须先启动 linux 服务才能查看当前的 Linux 内核版本。

处理自举系统

挂载文件系统

nullfs_load="YES" 写入 /boot/loader.conf(如需立刻生效,可使用 kldload nullfs)。

将以下行 加入 /etc/fstab

加入后的 /etc/fstab 示例(请勿复制粘贴此处代码):

警告

请勿看串行,抄了上面的实例,否则你将需要进入急救模式!

检查挂载有无报错:

基本配置

初始化 pacman 密匙环

换源

由于新安装的 Arch 没有任何文本管理器,所以我们需要在 FreeBSD 中编辑相关文件:

启用 DisableSandbox

我们需要为 pacman 启用 DisableSandbox,否则会报错 error: restricting filesystem access failed because landlock is not supported by the kernel!,因为 FreeBSD 未实现此沙箱。

检查是否启用成功:

然后安装一些基本软件:

参考文献

  • pacman.conf(5) 指出“在 Linux 系统上,禁用为下载文件进程应用默认的 sandbox。当因当前 Linux 内核不支持该特性而导致下载文件时出现 landlock 相关失败时,这会很有用。”

archlinuxcn 源配置

导入密钥:

技巧

==> Locally signing trusted keys in keyring... 这一步可能需要十分钟或更长时间。请耐心等待。

由于 yay 及类似安装 aur 的软件均禁止直接 root,故需要在 chroot 中创建一个普通权限的用户(经测试 FreeBSD 中原有的普通用户不可用):

编辑 sudo 配置文件(若有红色警告请无视之):

# %wheel ALL=(ALL) ALL 前面的 # 删掉。 将 # %sudo ALL=(ALL:ALL) ALL 前面的 # 删掉。

卸载 fakeroot 更改为 fakeroot-tcp,否则无法使用 aur:

该 Bug 见 https://archlinuxarm.org/forum/viewtopic.php?t=14466

注意,如果为 test 设置了密码但是仍然提示密码错误,你需要新开一个终端,输入 reboot 重启 FreeBSD 然后再继续操作。

区域设置

提示:如果不设置则无法在 ArchLinux 的图形化程序中使用中文输入法。

编辑 /etc/locale.gen,把 zh_CN.UTF-8 UTF-8 前面的注释 # 删掉。

重新生成区域文件:

Shell 脚本

脚本内容如下:

参考文献

最后更新于

这有帮助吗?