使用命令行工具 hdid
可以很简单的把内存创建为虚拟磁盘:
$ hdid -nomount ram://12582912
/dev/disk6
12582912
表示磁盘扇区数,每个扇区大小是 512 字节,总共就是 6GB 大小,所以计算磁盘大小的方式是字节数除以 512。
在 磁盘管理工具
里可以看到刚才创建出来的虚拟磁盘,可以进行初始化和加载等操作,装载之后可以和普通磁盘一样使用。
也可以使用命令格式化:
$ diskutil apfs create /dev/disk6 ramdisk
Started APFS operation on disk6
Creating a new empty APFS Container
Unmounting Volumes
Switching disk6 to APFS
Creating APFS Container
Created new APFS Container disk7
Disk from APFS operation: disk7
Finished APFS operation on disk6
Started APFS operation on disk7
Preparing to add APFS Volume to APFS Container disk7
Creating APFS Volume
Created new APFS Volume disk7s1
Mounting APFS Volume
Setting volume permissions
Disk from APFS operation: disk7s1
Finished APFS operation on disk7
设置开机自动创建虚拟磁盘
- 写一个 Shell 脚本,自动执行创建虚拟磁盘、格式化为 APFS,然后创建 Xcode 的缓存目录把以上脚本内容保存到
#!/usr/bin/env bash set -e if [ -d /Volumes/ramdisk ]; then echo 'found /Volumes/ramdisk.' exit 0 fi ramdev=$(hdid -nomount ram://8388608) diskutil apfs create ${ramdev} ramdisk mkdir -p /Volumes/ramdisk/Xcode/DerivedData
/opt/local/share/libexec/mkramdisk.sh
- 再写一个 launchd 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>me.lvv.mkramdisk</string> <key>EnvironmentVariables</key> <dict> <key>PATH</key> <string>/sbin:/usr/sbin:/bin:/usr/bin</string> </dict> <key>ProgramArguments</key> <array> <string>/bin/bash</string> <string>-i</string> <string>/opt/local/share/libexec/mkramdisk.sh</string> </array> <key>RunAtLoad</key> <true/> </dict> </plist>
/Library/LaunchDaemons/me.lvv.mkramdisk.plist
,然后加载这个服务:$ sudo launchctl load -w /Library/LaunchDaemons/me.lvv.mkramdisk.plist
- 配置 Xcode 的 DerivedData 目录为虚拟磁盘:
参考资料
https://leopard-adc.pepas.com/documentation/Darwin/Reference/ManPages/man8/hdid.8.html