모든 장치를 사용할 수있을 때까지 "천천히"부팅하십시오.


1

OS X을 서버로 사용하고 있습니다. Server.app 이메일 호스팅을 제공하는 4.0 / etc.

내가 가지고있는이 기계에 붙어있다. PROMISE Pegasus R2 RAID 드라이브 에 탑재 된 /Volumes/RAID6-11TB, 그리고 나 기본 서비스 저장 위치를 ​​변경했습니다. 그래서 Server.app 데이터는 RAID 드라이브에 위치하게됩니다. (중복성을 위해 Backblaze는 내 소중한 이메일을 백업 할 수 있습니다. /Library ).

문제는 컴퓨터를 재부팅 할 때 Server.app가 제대로 시작되지 않기 때문입니다. 어떤 것 부팅 프로세스 중 빈 디렉토리 만들기 /Volumes/RAID6-11TB/Library/Server/Web/Data/Sites/Default/NetBoot. RAID 어레이가 나중에 자동으로 마운트되면 기본 마운트 포인트가 이미 있으므로 마운트됩니다. /Volumes/RAID6-11TV 1, 전혀 좋지 않다.

재부팅을 수정하여 다음 중 하나를 수행 할 수있는 방법이 있습니까?

  1. Server.app RAID 디스크가 준비 될 때까지 실행되지 않습니다.
  2. RAID 디스크가 준비 될 때까지 실행을 끝내지 않도록 OS 부팅을 지연 하시겠습니까?

(1)에 대해서는 편집했습니다. /Library/LaunchDaemons/com.apple.serverd.plist 추가하려면 대기열 디렉토리 키,하지만 그 효과가없는 것, 그리고 WatchPaths 그것은 잘못된 의미론을 가지고있는 것처럼 들리므로, 나는 그것을 시도하는 것을 조심스럽게 생각합니다.

(2)에 관해서는, 싱글 유저 모드로 부팅하면 Command+S 부팅하는 동안) 기다림 ...까지 모든 메시지가 완료되었습니다. 그때 히트 Ctrl+D 부팅을 계속하려면, /Volumes/RAID6-11TB 의도 한대로 제대로 장착됩니다.

그러나 정전 후 (예 : 정전 후) 자동 재부팅에는 도움이되지 않습니다. (좋아, "적절한"답변은 배터리 백업이므로 컴퓨터는 재부팅되지 않지만 지금은 무시해 보겠습니다 ...)

이 작업을 수행 할 수있는 방법이 있습니까?


netboot에 nfs 또는 http를 사용합니까?
klanomath

@ klanomath 나는 넷북을 전혀 사용하지 않고 AFAICT는 넷북을 사용할 수 없도록했습니다. Server.app그래서 왜 처음에 그 디렉토리를 만들려고하는지 모르겠다.
jonp

답변:


1

그것은 귀하의 작품을 gumming 그 신비한 폴더를 만드는 Server.app이야.

서버가 부팅 될 때 Server.app을 시작하지 못하게 한 다음 cronjob 시작하다 그것은 .sh 스크립트를 통해.

스크립트는 다음과 같이되어야합니다.

#!/bin/bash
/Applications/Server.app

그 사람이 한 링크에서 말했듯이, crontab 엔트리는

@reboot sleep 60 && my_script.sh

Server.app가 팝업되고 그 폴더가 생성되기 전에 RAID를 적절하게 마운트 할 충분한 시간을 주어야합니다.


1

@zomgdavidbowie와의 차이점을 나누었습니다. 새 스크립트를 만들었습니다. /usr/local/bin/start-server-app:

#!/bin/sh

sleep 120

exec /Library/PrivilegedHelperTools/com.apple.serverd

나는 그 다음 편집했다. /Library/LaunchDaemons/com.apple.serverd.plist 모든 인스턴스를 /Library/PrivilegedHelperTools/com.apple.serverd/usr/local/bin/start-server-app:

<?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.apple.serverd</string>
    <key>MachServices</key>
    <dict>
        <key>com.apple.serverd</key>
        <true/>
    </dict>
    <key>OnDemand</key>
    <false/>
    <key>Program</key>
    <string>/Library/PrivilegedHelperTools/com.apple.serverd</string>
    <key>ProgramArguments</key>
    <array>
        <string>/Library/PrivilegedHelperTools/com.apple.serverd</string>
    </array>
</dict>
</plist>

이 기능을 사용하면 기본 실행 메커니즘을 사용하지 않고도 크론 (8), 여전히 com.apple.serverd 외부 드라이브가 마운트 될 때까지 호출.


0

어때 그냥 기다리는 대신 다음과 같이하십시오.

#!/bin/sh

if [[ ! -e /Volumes/<volname ]]; then
sleep 60
else
exec /Library/PrivilegedHelperTools/com.apple.serverd
fi
exit 0

이 경우 볼륨이 존재하는지 확인하고, 그렇지 않으면 60 초 동안 기다리십시오. 그렇다면 서버 응용 프로그램을 시작하십시오.


좋은 경험, 내 경험에 볼륨이 있지만 시작할 때 바로 사용할 수 있으므로 sleep 어쨌든 맞을거야.
jonp

@jonp 알고 계십니까? /Library/LaunchDaemons/com.apple.serverd.plist Sever.app가 업데이트되면 작성됩니다.
Kemo

예, 다음을 덮어 씁니다. Server.app 업데이트됩니다. Server.app가 업데이트 될 때 쉽게 대체 할 수 있도록 백업 복사본을 보관하십시오.
jonp
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.