Для некритических систем Linux я часто перемещаю вещи как/tmp и/var/log к tmpfs, чтобы экономить на некоторой записи на диск. Я делал это в течение приблизительно одного года и если мне когда-нибудь нужны журналы через перезагрузки, я просто комментирую строку в/etc/fstab и затем начинаю отлаживать.
В любом случае я хотел бы сделать то же самое на OS X. Я видел сообщения при создании электронного диска для OS X, но я ищу более постоянное решение, которое работает над каждой начальной загрузкой. Я всегда хочу/tmp и/var/log, смонтированный в электронном диске со способностью выключить это с небольшим количеством редактирования командной строки в vi, если я имею к.
Править: Я просто собираюсь принять свой собственный ответ, поскольку он действительно решал одну часть проблемы для меня. Если кто-то отправляет что-то больше как - связывают в Linux, я приму тот ответ.
Чтобы поощрить больше ответов, я начну отвечать на свой собственный вопрос с тем, что я узнал.
Шаг 1 должен был смонтировать электронный диск при начальной загрузке каждый раз. Чтобы сделать это, я создаю сценарий удара и затем launchd запись для вызова сценария удара на начальной загрузке.
Запишите сценарий удара как это:
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
Затем обратитесь к нему начальная загрузка путем добавления его к launchd путем создания файла, названного/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. Эти три каталога являются всем symlinked в моей системе к/private/tmp,/private/var/log и/private/var/tmp. Когда я изменил символьные ссылки для указания в/Volumes/ramdisk/..., система не загрузится. Я ожидаю, что это вызвано тем, что во время начальной загрузки, что-то хочет/tmp и/var/log, ПРЕЖДЕ ЧЕМ мой com.my.ramdisk сценарий смонтирует электронный диск. Мне нужен способ смонтировать электронный диск прямо после того, как корень смонтирован, прежде чем что-либо еще будет работать.
Отметьте, Монтируете ли Вы/var/log (ядро, демон и другие критические журналы пространства пользователя) во временном пространстве, Вы потеряете его содержание в следующей перезагрузке. Это могло бы запретить Вашу способность диагностировать.
Вот сценарий для создания электронных дисков на OS X. Извините, это не отвечает на Ваш вопрос. Вы могли использовать это для создания чего-то, что работает на начальной загрузке и затем монтирует/tmp и/var/log.
#!/bin/bash
ramfs_size_mb=1024
mount_point=~/volatile
ramfs_size_sectors=$((${ramfs_size_mb}*1024*1024/512))
ramdisk_dev=`hdid -nomount ram://${ramfs_size_sectors}`
newfs_hfs -v 'Volatile' ${ramdisk_dev}
mkdir -p ${mount_point}
mount -o noatime -t hfs ${ramdisk_dev} ${mount_point}
echo "remove with:"
echo "umount ${mount_point}"
echo "diskutil eject ${ramdisk_dev}"
Из @salvatore http://pastie.textmate.org/pastes/1417478/text?key=igcxuzqqvlmlbavxooj2uw