For the complete documentation index, see llms.txt. This page is also available as Markdown.

20.10 故障排除与未竟事宜

本节汇总 Linux 兼容层常见问题及解决方法。

Linux 兼容层的声音

chroot 进入的 Linux 兼容层内部如无声音输出,通常须在 FreeBSD 中直接运行 Linux 程序,而非使用 chroot。

Ubuntu 兼容层:

编辑 /compat/ubuntu/etc/asound.conf 文件,写入以下两行,请注意区分英文感叹号 ! 与数字 1

pcm.!sysdefault pcm.plug:oss
pcm.!default pcm.sysdefault

在 FreeBSD 的命令行运行软件(基于 Ubuntu 兼容层)

直接从 FreeBSD 命令行运行软件而无需 chroot 的方法:

方式一

# sysctl compat.linux.emul_path=/compat/ubuntu # 立即生效
# echo compat.linux.emul_path=/compat/ubuntu >> /etc/sysctl.conf # 持久化

方式二

警告

此操作将移动并替换 ld-linux-x86-64.so.2,可能导致 Ubuntu 兼容层无法正常启动或运行。执行前请确保已备份相关文件,并充分了解该操作的影响。该操作不可逆,请谨慎操作。

# mv /compat/ubuntu/lib64/ld-linux-x86-64.so.2  /compat/ubuntu/lib64/ld-linux-x86-64.so.2.back
# ln -s /compat/ubuntu/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 /compat/ubuntu/lib64/ld-linux-x86-64.so.2

无需 chroot,可直接在终端运行 Linux 程序(仅部分程序),需指定绝对路径。

Arch 和 openSUSE 兼容层仅需方式一,无需方式二。

参考文献

以普通用户权限运行 QQ

兼容层的用户与 FreeBSD 用户存在 UID 映射关系。

假设在 FreeBSD 的普通用户名是 ykla,UID 是 1001(正常情况下默认为 1001):

警告

在 Arch 中创建用户 ykla 后,此用户无法用于 yay 安装软件,仍然需要使用 Shell 脚本默认创建的 test 用户。

从图标启动程序

  • 编辑 QQ.desktop 文件,写入以下内容(以 Ubuntu 兼容层为例):

  • 编辑 Chrome.desktop 文件,写入以下内容(以 Ubuntu 兼容层为例):

授予上述文件可执行权限后,文件将显示为正常的图标样式,点击即可启动对应软件。

运行 Chrome(以 Ubuntu 兼容层为例)

下载 Chrome:

安装 Chrome:

启动 Chrome:

Linux 兼容层网络(Linux QQ 无网络)

本机同时有以太网卡 em0 和无线网卡 wlan0,但实际使用 wlan0 时,Linux 兼容层可能无法正常联网。FreeBSD 的 em0 对应兼容层的 eth0,wlan0 对应 eth1,依此类推。Linux 兼容层无法自动检测哪个接口有网络,且默认使用 eth0。

使用 wlan0 而未使用 em0 时,需要为 em0 分配一个未使用的 IP:

  • 临时设置(重启失效):# ifconfig em0 192.168.11.1

  • 永久性设置:即在 FreeBSD /etc/rc.conf 文件中加入(不影响该网卡正常运行):

以上 192.168.11.1 为未使用的 IP,可自行设置为其他值。

中文输入法

/home 路径下的 .profile 文件放置于兼容层的 / 目录下:

如果遇到类似“sh: warning: setlocale: LC_ALL: cannot change locale (zh_CN.UTF-8)”的错误,应安装缺失的语言包,退出兼容层后重新进入即可。其他系统可搜索相似的包,例如 Rocky Linux 兼容层,应该安装 glibc-locale-sourceglibc-langpack-zh

sysctl 变量

可以列出常用变量。

使用命令行下载软件时提示 403 Forbidden

国内某些镜像站可能出于流量限制等原因,只允许通过指定包管理器获取软件包。使用其他方式拉取时将提示“403 Forbidden”(禁止访问)。

这通常通过限制包管理器的 UA(User-Agent)实现。此时,最简便的方法是更换无限制的镜像站,如 TUNA/USTC Mirror。

systemd 与 Wine

systemd 不可用,但可使用 service xxx start 命令替代。

此外,曾尝试使用 https://github.com/zq1997/deepin-wine 源以安装 deepin-qq、deepin-wechat 等软件,但均提示“段错误”。所有 Wine 程序均无法正常运行。如果读者能解决这个问题,请提出 issue 或者 PR。

最后更新于