]> git.saurik.com Git - apple/launchd.git/blobdiff - launchd/src/rc.netboot
launchd-328.tar.gz
[apple/launchd.git] / launchd / src / rc.netboot
index 6eab9ab70a305037b2893c8403664e50f9431bc5..654ce4966a6c4c2a238f62a6021874453164b3be 100644 (file)
@@ -1,6 +1,6 @@
 #!/bin/sh
 ##
-# Copyright 2002 Apple Computer, Inc.
+# Copyright 2002-2009 Apple Inc.
 #
 # This script configures NetBoot
 ##
@@ -27,6 +27,8 @@ NETBOOT_SHADOW=${NETBOOT_SHADOW:-NETWORK-}
 Failed()
 {
        echo rc.netboot: $1
+       echo rc.netboot: $1 > /dev/console
+       sleep 5
        exit 1
 }
 
@@ -74,11 +76,24 @@ common_start()
 
 local_mount()
 {
-    volinfo=`autodiskmount -F 2>/dev/null`
-    if [ $? -ne 0 ]; then
-       echo "autodiskmount -F found no local drives"
-       return 1
-    fi
+    tries=0
+    limit=11
+    while [ $tries -lt $limit ]; do
+       tries=$(( tries + 1 ))
+       volinfo=`autodiskmount -F 2>/dev/null`
+       if [ $? -ne 0 ]; then
+           if [ $tries -lt $limit ]; then
+               echo "Waiting for local drives..."
+               echo "Waiting for local drives (retry ${tries}/$(( limit - 1 )))..." > /dev/console
+               sleep 5
+           else
+               echo "autodiskmount -F found no local drives"
+               return 1
+           fi
+       else
+           tries=$limit
+       fi
+    done
     set ${volinfo}
     devname=$1
     fstype=$2
@@ -105,15 +120,19 @@ network_mount()
        return 1
     fi
     case "${mount_from}" in
-       afp:*) fstype=afp;;
+       afp:*)
+               fstype=afp
+               kextutil -v 0 /System/Library/Filesystems/AppleShare/asp_tcp.kext
+               kextutil -v 0 /System/Library/Filesystems/AppleShare/afpfs.kext
+               ;;
        nfs:*) fstype=nfs;;
        *) echo "unknown network filesystem mount from ${mount_from}"
           return 1
           ;;
     esac
-    mount -t "${fstype}" "${mount_from}" "${NETBOOT_MOUNT}"
+    mount -t "${fstype}" -o nobrowse "${mount_from}" "${NETBOOT_MOUNT}"
     if [ $? -ne 0 ]; then
-       echo "mount -t ${fstype} ${mount_from} ${NETBOOT_MOUNT} failed"
+       echo "mount -t ${fstype} -o nobrowse ${mount_from} ${NETBOOT_MOUNT} failed"
        return 1
     fi
     common_start "${NETBOOT_MOUNT}" "${shadow_path}"