Привет, уважаемый читатель!
Задача была простая и конкретная: RAM-диск на 200 мегабайт (лично я использую его для временных загрузок, 200 мегабайт вполне хватает), путь /Volumes/RAM Disk, создаётся автоматически при входе в систему. Без стороннего софта (а такой, поверьте, есть, и есть даже платный). Без GUI. Включил ноутбук — и он уже есть. Выключил — всё пропало. Как и должно быть.
Создание RAM-диска
RAM-диск в macOS — это обычный disk image, только живущий в памяти. Делается штатной утилитой hdiutil.
200 мегабайт считаются не в мегабайтах, а в секторах:
- 512 байт на сектор
- 200 × 2048 = 409600
Команда создания:
diskutil erasevolume HFS+ "RAM Disk" \
$(hdiutil attach -nomount ram://409600)
После этого в /Volumes появляется RAM Disk.
Файловая система — HFS+.
APFS здесь не нужен: лишний оверхед и странности для RAM.
Автосоздание при входе в систему
Каталог LaunchAgents
mkdir -p ~/Library/LaunchAgents
plist-файл
nano ~/Library/LaunchAgents/com.user.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.user.ramdisk</string>
<key>ProgramArguments</key>
<array>
<string>/bin/bash</string>
<string>-c</string>
<string>
diskutil erasevolume HFS+ "RAM Disk" $(hdiutil attach -nomount ram://409600)
</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
Загрузка без перезагрузки
launchctl load ~/Library/LaunchAgents/com.user.ramdisk.plist
Проверка:
ls /Volumes
Ограничения
- данные не сохраняются
- диск исчезает при logout / reboot / crash
- размер фиксированный
- APFS не использовать
Удаление
launchctl unload ~/Library/LaunchAgents/com.user.ramdisk.plist
rm ~/Library/LaunchAgents/com.user.ramdisk.plist
diskutil unmount "/Volumes/RAM Disk"
