Posted on 10-20-2015 12:37 PM
So I created a new Netboot image with AutoCasperNBI with a 10.10.5 base with 9.81 casper imaging.
I made sure to set modified rc.netboot file was checked.
Booted to it and did a mount in terminal and it shows - /dev/disk0s2 on /private/var/netboot
Any ideas would be great - could love not having to make a ram disk.
Solved! Go to Solution.
Posted on 10-20-2015 03:04 PM
Posted on 10-20-2015 12:57 PM
Here is a copy of my current rc.netboot file -
#!/bin/sh
##
# Copyright 2002-2009 Apple Inc.
#
# This script configures NetBoot
##
. /etc/rc.common
#
# This script has been modified to support diskless or RAM disk netboot
#
# Revised: July 14th, 2011
# Revised by: Richard Glaser
#
# For more information or give feedback or file bugs...
# See web site...
#
# http://www.macos.utah.edu/documentation/administration/setup_netboot_service_on_mac_os_x_10.6.x_client.html
#
#
# Define: NETBOOT_SHADOW
#
# Purpose:
# To change the behavior of the system when choosing a netboot shadow
# to use.
#
# Values:
# -NETWORK- Try to use the network for the shadow file, if
# that fails, use the local drive
# -NETWORK_ONLY- Only use the network, fail if not available
# -LOCAL- Use the local drive for the shadow file, if that
# fails, use the network
# -LOCAL_ONLY- Only use the local drive for the shadow, fail if
# not available
NETBOOT_MOUNT=/var/netboot
# Change to "-LOCAL_ONLY-" to use RAM Disk instead of network
NETBOOT_SHADOW=-LOCAL_ONLY-
# NETBOOT_SHADOW=${NETBOOT_SHADOW:-NETWORK-}
# There is a bug in the default variable assignment, it loses the the beginning "-"
# So, it never correctly assigns the variable or branch in the case statement in the
# do_start() sub-routine and always gets assigned to the "* )" branch.
Failed()
{
echo rc.netboot: $1
echo rc.netboot: $1 > /dev/console
sleep 5
exit 1
}
common_start()
{
netboot_dir=$1
netboot_shadow=$2
if [ "${netboot_dir}" = "" ] ; then
Failed "netboot_dir is empty"
fi
if [ "${netboot_shadow}" = "" ] ; then
Failed "netboot_shadow is empty"
fi
netboot_shadow="${netboot_dir}/${netboot_shadow}"
if ! mkdir -p "${netboot_dir}" ; then
Failed "create ${netboot_dir} failed"
fi
chmod 700 "${netboot_dir}"
mount -u -o ro /
root_device=$(mount | sed -n 's:/dev/(.*) on / .*:1:p')
case "${root_device}" in
vn*)
if ! touch "${netboot_shadow}" ; then
Failed "create ${netboot_shadow} failed"
fi
chmod 600 "${netboot_shadow}"
if ! /usr/libexec/vndevice shadow "/dev/r${root_device}" "${netboot_shadow}" ; then
Failed "vndevice shadow failed"
fi
;;
"")
Failed "root device unknown"
;;
*)
if ! touch "${netboot_shadow}" ; then
Failed "failed to create shadow ${netboot_shadow}"
fi
chmod 600 "${netboot_shadow}"
if ! /usr/bin/nbdst -recycle "${root_device}" "${netboot_shadow}" ; then
Failed "nbdst failed"
fi
;;
esac
}
local_mount()
{
# 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
#
# mount -t "${fstype}" -o nosuid,nodev "/dev/${devname}" "${NETBOOT_MOUNT}" 2>&1
# if [ $? -ne 0 ]; then
# echo "mount of ${devname} failed"
# return 1
# fi
volinfo=`autodiskmount -F 2>/dev/null`
RAMDisk "${NETBOOT_MOUNT}"
common_start "${NETBOOT_MOUNT}/.com.apple.NetBootX" shadowfile
return 0
}
#
# Create a RAM disk with same perms as mountpoint
#
RAMDisk()
{
mntpt=$1
rdsize=2097152 #1GB ((1*1024^3)/512)=2097152, 2GB=((2*1024^3)/512)=4194304
echo "Creating RAM Disk for $mntpt"
dev=`hdik -drivekey system-image=yes -nomount ram://$rdsize`
if [ $? -eq 0 ] ; then
newfs_hfs $dev
# save & restore fs permissions covered by the mount
eval `/usr/bin/stat -s $mntpt`
mount -t hfs -o union -o nobrowse $dev $mntpt
chown $st_uid:$st_gid $mntpt
chmod $st_mode $mntpt
chflags hidden $mntpt
fi
}
network_mount()
{
mount_from=$(ipconfig netbootoption shadow_mount_path 2>&1)
if [ $? -ne 0 ]; then
echo "no network shadow mount path available"
return 1
fi
shadow_path=$(ipconfig netbootoption shadow_file_path 2>&1)
if [ $? -ne 0 ]; then
echo "no network shadow file path available"
return 1
fi
case "${mount_from}" in
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}" -o nobrowse "${mount_from}" "${NETBOOT_MOUNT}"
if [ $? -ne 0 ]; then
echo "mount -t ${fstype} -o nobrowse ${mount_from} ${NETBOOT_MOUNT} failed"
return 1
fi
common_start "${NETBOOT_MOUNT}" "${shadow_path}"
return 0
}
do_start()
{
case "${NETBOOT_SHADOW}" in
-LOCAL_ONLY- )
err=$(local_mount)
if [ $? -ne 0 ]; then
Failed "${err}"
fi
;;
-LOCAL- )
err=$(local_mount)
if [ $? -ne 0 ]; then
err=$(network_mount)
if [ $? -ne 0 ]; then
Failed "Could not find a local or network drive"
fi
fi
;;
-NETWORK_ONLY-)
err=$(network_mount)
if [ $? -ne 0 ]; then
Failed "${err}"
fi
;;
* )
err=$(network_mount)
if [ $? -ne 0 ]; then
err=$(local_mount)
if [ $? -ne 0 ]; then
Failed "Could not find a network or local drive"
fi
fi
;;
esac
}
do_init()
{
# attach the shadow file to the root disk image
do_start
# make sure the root filesystem is clean
fsck -p || fsck -fy || Failed "Could not clean root filesystem"
# make it writable
mount -uw /
# adjust /private/var/vm to point to the writable area (if not diskless)
swapdir=/private/var/vm
mounted_from=$(mount | sed -n 's:(.*) on .*/var/netboot.*:1:p')
case "${mounted_from}" in
/dev/*)
netboot_dir="${NETBOOT_MOUNT}/.com.apple.NetBootX"
if [ -d "${netboot_dir}" ]; then
rm -rf "${swapdir}"
ln -s "${netboot_dir}" "${swapdir}"
fi
;;
*)
;;
esac
# set the ComputerName based on what the NetBoot server told us it was
machine_name=$(ipconfig netbootoption machine_name 2>&1)
if [ $? -ne 0 ]; then
echo "no machine name option available"
else
echo "Setting ComputerName to ${machine_name}"
scutil --set ComputerName "${machine_name}"
fi
}
if [ $# -lt 1 ] ; then
exit 0
fi
command=$1
shift
case "${command}" in
init)
do_init $@
;;
esac
##
# Exit
##
exit 0
Posted on 10-20-2015 01:16 PM
Posted on 10-20-2015 01:30 PM
@bentoms That is the rc.netboot that is in my current netboot image but its still not booting diskless.
Casper imaging does block copy - eases the drive then installs the OS??
nitializing Imaging Process...
Mounting CasperJDS-XXXXXXXXX..
Mounting https://CasperJDS-XXXXX/CasperShareDAV/...
Preparing disk for block copy...
Performing Block Copy of osx_10.10.5_10.19.15_test.dmg...
Cleaning up after block copy...
Erasing Macintosh HD...
Installing osx_10.10.5_10.19.15.dmg...
Setting computer name to "C02N94P0G3QH"...
Creating /private/etc/jamf.conf...
Creating /usr/local/bin/jamf...
Creating jamfHelper...
Ensuring Apple's Setup Assistant does not appear...
Creating First Run Enroll Script...
Adding line for binding XXXXXX AD Bind...
Creating First Run Post Install Script...
Adding line to Fix ByHost Files...
Ensuring system files are hidden...
Unmounting Distribution Point...
Blessing System...
Posted on 10-20-2015 02:36 PM
Posted on 10-20-2015 03:01 PM
@bentoms we are using an Ubuntu JDS - says the script is for OS X only
Posted on 10-20-2015 03:04 PM
Posted on 10-20-2015 03:08 PM
Just found this - Yep. I will give it a try
https://jamfnation.jamfsoftware.com/discussion.html?id=10819#responseChild61698
Posted on 10-20-2015 03:39 PM
@bwiessne the JDS needs an AFP share for imaging.
Posted on 10-20-2015 03:41 PM
@bentoms Sorry to bug you. Any ideas?
Thanks in advance.
Posted on 10-20-2015 03:43 PM
@bwiessne erm? About what? For JDS imaging AFP is needed. Those links I posted & the search show JAMFs method to create an AFP share.
Once done it should work.
Posted on 10-20-2015 03:52 PM
@bentoms - No idea why it posted my original post twice? Was not me!