Darling Shell
我们计划实现一个漂亮且用户友好的 Darling GUI,但目前与 Darling 互动的主要方式是通过 Darling Shell。
基本用法
要在容器内部获取 shell,请像普通用户一样运行 darling shell
。在幕后,此命令将启动容器或连接到已经运行的容器,并在其中生成一个 shell。它还将自动加载内核模块并根据需要初始化前缀内容。
在其中,您将找到一个模拟 macOS 的环境。macOS 是类 Unix 的操作系统,因此大多数熟悉的命令都将起作用。例如,运行 ls -l /
、uname
和 sw_vers
可以探索模拟系统。Darling 预装了 macOS 发行的许多命令行工具,版本相同但较旧。Shell 本身是 Bash 版本 3.2。
容器内的文件系统布局类似于 macOS,包括顶级目录 /Applications
、/Users
和 /System
。原始的 Linux 文件系统可见为一个单独的分区,挂载在 /Volumes/SystemRoot
。在 Darling 中运行 macOS 程序时,您可能希望它们访问您的主目录中的文件;为了方便起见,您的 Darling 主目录中有一个名为 LinuxHome
的符号链接,指向您的 Linux 主目录,从容器内看。此外,Darling 主目录中的标准目录(如 Downloads
)被设置为指向您的 Linux 主目录中相应的文件夹。
运行 Linux 二进制文件
您还可以在容器内运行普通的 Linux 二进制文件。它们将不使用 Darling 的库和系统调用模拟,可能无法看到类似 macOS 的环境:
darling shell
Darling [~]$ uname
Darwin
Darling [~]$ /Volumes/SystemRoot/bin/uname
Linux
切换到 root
如果您遇到一个应用程序因为您不是 root 而退出(通常是因为它需要在您的主目录之外写入),您可以使用 fake sudo
命令。这是一个伪造的 sudo,因为它只会使 getuid()
和 geteuid()
系统调用返回 0,但不授予额外的特权。
示例
darling shell
:打开 Bash 提示符。darling shell /usr/local/bin/someapp arg
:执行带有参数的/usr/local/bin/someapp
。请注意,路径在 Darling Prefix 中进行评估。该命令通过 shell 启动(使用sh -c
)。darling ~/.darling/usr/local/bin/someapp arg
:与前一个示例等效(不使用 shell),假设前缀是~/.darling
。