Montare un disco RAM all'avvio, ma sembra essere smontato automaticamente

1

Ho scritto un semplice script che monta un disco ram:

%> cat /System/Library/LaunchDaemons/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>Ramdisk</string>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/local/bin/setup_run_shm</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>UserName</key>
    <string>root</string>
</dict>
</plist>

Ma quando ho effettuato l'accesso, il disco è sparito. Sembra che il disco sia smontato. Non sono davvero sicuro del perché. Secondo /tmp/log.1 non ci sono errori.

P.S ha allegato lo script setup_run_shm:

%> cat /usr/local/bin/setup_run_shm
#!/bin/bash

exec &> /tmp/log.1
date
set -x

size=$(( 1024*1024*8 ))
path=/run/shm/
name="SHM"

if mount | grep -q '/run/shm'; then
    echo RAM disk already exist.
    echo 'Eject the disk and try again. (e.g hdiutil eject /dev/diskX)'
    exit
fi

disk=$(hdiutil attach -nomount ram://"$size")
echo Attached RAM disk $disk

newfs_hfs -v "$name" $disk
echo Formatted RAM disk with name $name

mount -t hfs $disk "$path"
echo Mounted ram disk of size $size to $path
    
posta daisy 05.01.2015 - 15:25
fonte

1 risposta

1

Non sono sicuro che questa sia davvero una risposta alla tua domanda, ma questo Applescript funziona per me, funziona come un'app.

set RAMDisk to "RAM_Disk" as text
tell application "Finder"
    if not {exists disk RAMDisk} then
        set VolumeName to RAMDisk
        set SizeInMB to 1024
        set NumSectors to ((2 * 1024 * SizeInMB))
        set DeviceName to do shell script "hdid -nomount ram://" & NumSectors
        do shell script "diskutil eraseVolume 'HFS+' '" & VolumeName & "' " & DeviceName
        do shell script "SetFile -a V /Volumes/" & VolumeName       
    end if  
end tell

È necessario che gli Strumenti della riga di comando dello sviluppatore siano installati per essere eseguiti, ma chiederà & auto-installa se non presente.

    
risposta data 05.01.2015 - 17:47
fonte

Leggi altre domande sui tag