编辑:我将接受自己的回答,因为它确实为我解决了一部分问题。如果有人发布更多类似--bind在Linux中的内容,我将接受该答案。
为了激发更多答案,我将用发现的内容开始回答自己的问题。
步骤1是每次引导时都安装一个ramdisk。为此,我创建了一个bash脚本,然后创建了一个启动项以在启动时调用bash脚本。
编写如下的bash脚本:
RD=ramdisk
if [ ! -e "/Volumes/$RD" ]; then
diskutil erasevolume HFS+ "$RD" `hdiutil attach -nomount`
fi
mkdir -p /Volumes/$RD/private/tmp
mkdir -p /Volumes/$RD/private/var/log
mkdir -p /Volumes/$RD/private/var/tmp
然后通过创建一个名为/Library/LaunchDaemons/com.my.ramdisk.plist的文件,将其添加到启动文件中,使其在启动时被调用,其内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.my.ramdisk</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/sbin/ramdisk.sh</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
我受困的是一种在/ tmp,/ var / log和/ var / tmp处将符号链接或挂载在ramdisk中的目录的方法。这三个目录在我的系统上都链接到/ private / tmp,/ private / var / log和/ private / var / tmp。当我将符号链接更改为指向/ Volumes / ramdisk / ...时,系统将无法启动。我期望这是因为在启动时,我的com.my.ramdisk脚本在安装ramdisk之前需要/ tmp和/ var / log。我需要一种方法,可以在root挂载之后,其他任何运行之前立即挂载ramdisk。
注意如果在临时空间中挂载/ var / log(内核,守护程序和其他重要的用户空间日志),则下次重新启动时将丢失其内容。这可能会抑制您的诊断能力。