Darling Shell

我们计划实现一个漂亮且用户友好的 Darling GUI,但目前与 Darling 互动的主要方式是通过 Darling Shell。

基本用法

要在容器内部获取 shell,请像普通用户一样运行 darling shell。在幕后,此命令将启动容器或连接到已经运行的容器,并在其中生成一个 shell。它还将自动加载内核模块并根据需要初始化前缀内容。

在其中,您将找到一个模拟 macOS 的环境。macOS 是类 Unix 的操作系统,因此大多数熟悉的命令都将起作用。例如,运行 ls -l /unamesw_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 的环境:

  1. darling shell
  2. Darling [~]$ uname
  3. Darwin
  4. Darling [~]$ /Volumes/SystemRoot/bin/uname
  5. 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