Блог GrubLoader
/ram-диск-в-macos-15-без-стороннего-софта

RAM-диск в macOS 15 без стороннего софта

Привет, уважаемый читатель!

Задача была простая и конкретная: 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"