Apple Event: May 7th at 7 am PT

Looks like no one’s replied in a while. To start the conversation again, simply ask a new question.

Migrate Away From Server NetInstall

Hi all,


I'm trying to move away from the now discontinued MacOS Server NetInstall service, and I'm following the guide in the Apple MacOS Server Service Migration Guide v1.2 (Page 18), but nothing seems to happen.


It's on macOS 10.13.6.


Has anyone successfully followed these steps?


It is essentially a series of Terminal commands which I have run (the document breaks the commands across new lines, so you have to be careful of additional unwanted whitespace that is therefore added), and I can see the various LaunchDaemon plists and directories that the process creates and enables, but nothing happens. I must admit I don't actually know if the plists have actually been enabled or not, would anyone be able to confirm for me please? There are no errors generated when running the 'enable' commands, but I'm not sure if that has happened or not.


This is the bootps.plist:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">

<plist version="1.0">

<dict>

<key>Disabled</key>

<true/>

<key>Label</key>

<string>com.apple.bootpd</string>

<key>ProgramArguments</key>

<array>

<string>/usr/libexec/bootpd</string>

</array>

<key>inetdCompatibility</key>

<dict>

<key>Wait</key>

<true/>

</dict>

<key>Sockets</key>

<dict>

<key>Listeners</key>

<dict>

<key>SockServiceName</key>

<string>bootps</string>

<key>SockType</key>

<string>dgram</string>

<key>SockFamily</key>

<string>IPv4</string>

</dict>

</dict>

</dict>

</plist>


This is the tftp.plist:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">

<plist version="1.0">

<dict>

<key>Disabled</key>

<true/>

<key>Label</key>

<string>com.apple.tftpd</string>

<key>ProgramArguments</key>

<array>

<string>/usr/libexec/tftpd</string>

<string>-i</string>

<string>/private/tftpboot</string>

</array>

<key>inetdCompatibility</key>

<dict>

<key>Wait</key>

<true/>

</dict>

<key>InitGroups</key>

<true/>

<key>Sockets</key>

<dict>

<key>Listeners</key>

<dict>

<key>SockServiceName</key>

<string>tftp</string>

<key>SockType</key>

<string>dgram</string>

</dict>

</dict>

</dict>

</plist>


The HTTP 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>Disabled</key>

<true/>

<key>Label</key>

<string>org.apache.httpd</string>

<key>EnvironmentVariables</key>

<dict>

<key>XPC_SERVICES_UNAVAILABLE</key>

<string>1</string>

</dict>

<key>ProgramArguments</key>

<array>

<string>/usr/sbin/httpd-wrapper</string>

<string>-D</string>

<string>FOREGROUND</string>

</array>

<key>OnDemand</key>

<false/>

</dict>

</plist>


And finally the NFS plist:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">

<plist version="1.0">

<dict>

<key>KeepAlive</key>

<dict>

<key>PathState</key>

<dict>

<key>/etc/exports</key>

<true/>

</dict>

</dict>

<key>Label</key>

<string>com.apple.nfsd</string>

<key>ProgramArguments</key>

<array>

<string>/sbin/nfsd</string>

</array>

</dict>

</plist>


I'm sorry if none of those plist files are actually relevant, I don't really know my way specifically around a plist file so I'm not sure of what's what.


Thank you very much!

Posted on Oct 3, 2018 2:00 AM

Reply

Similar questions

16 replies

Oct 9, 2018 9:10 AM in response to John Lockwood

Hi John,


Thank you for giving me some options. I'm not personally familiar with the netstat command, but I've attached the results. The second BOOTP doesn't seem to be running, but that one wasn't running for me when I checked with Server.app running either.


I achieved the exact same results with the Server.app NetInstall running, and after following the steps in the migration guide, so it seems to be behaving exactly as it should be except for the fact that none of the installers are visible in Startup Disk.


When I ran your -F commands, it said that the service is already loaded, so everything seems to be doing what it's meant to.

User uploaded file

Oct 10, 2018 3:04 AM in response to Sammington

Interestingly my Server is currently not running port 68. I presume this is activated when needed.


The only other things I can think of right now are :-


  1. MacBook Pro 2018 laptops will not see any NetBoot servers because this model does not support NetBooting
  2. If the 'server' has more than one network interface it may not be talking NetBoot on the correct interface


With regards to which interface NetBoot is active on you need to look at the contents of the /etc/bootpd.plist file. The easiest way to do this is via Terminal.app and typing


more /etc/bootpd.plist


The section you need to look for will look like the following.


<key>netboot_enabled</key>

<array>

<string>en5</string>

</array>


You need to make sure the right network interface is listed. It can be set to work on multiple interfaces. Mine has en5 because I am using a ThunderBolt Ethernet adapter, the built-in Ethernet on a Mac mini would be en0, on a Mac Pro it might be en0 or en1, on an older MacBook Pro with built-in Ethernet it would be en0 on a newer MacBook Pro without built-in Ethernet it might be en1. You can find out which it is by running Network Utility, going to the Info tab and selecting the appropriate interface and see which it is.

Oct 3, 2018 3:15 AM in response to Sammington

I am not sure what you are trying to achieve.


If you are wanting to host NetInstall images on a Mac not running Server.app and in effect make it a NetBoot/NetInstall server then it seems according to that Apple document you merely need to turn on the matching launchdaemons, the ones you listed the contents of. To do this you use the commands listed in the Apple document like -


sudo launchctl load -w /System/Library/LaunchDaemons/ com.apple.nfsd.plist


What are these images used for?

Oct 3, 2018 3:24 AM in response to John Lockwood

Hi John,


Thank you for your message. These images are used for testing. I have installers for all OS' from 10.6 to 10.13, as well as bootable OS' from 10.9-10.13; these are all currently hosted within the NetInstall section of the MacOS Server app, but Apple is discontinuing this service so I am following their guide to use the built in services instead.


As you have pointed out, I have run all of the commands listed and absolutely nothing has happened, those images are not visible on the network, hence my original question. The plists I included are all from after I ran those terminal commands.

Oct 10, 2018 5:08 AM in response to Sammington

Thanks that helps me understand better.


The plists look pretty much the same as a High Sierra Mac running Server.app with NetInstall active. So I think the plists are fine.


I did a launchctl list and these services are not listed even on the above mentioned Server.app Mac.


You can do the following to see if the services are listening for network connections.


TFTP -

netstat -na | grep \*.69

NFS -

netstat -na | grep \*.2049

BOOTP -

netstat -na | grep \*.67

BOOTP -

netstat -na | grep \*.68


The above are all listening on my Server.app machine and not on a standard Mac client.


The commands like sudo launchctl load -w /System/Library/LaunchDaemons/ com.apple.nfsd.plist in theory modify the plist to enable it and then load it. You could try sudo launchctl load -F /System/Library/LaunchDaemons/ com.apple.nfsd.plist which merely forces the loading of the plist and hence service. The -F option is not saved between reboots but might show if it will work.

Oct 10, 2018 3:06 AM in response to John Lockwood

Before disabling the Server.app I am seeing netboot_enabled on en0 which is correct as this is a hardwired Mac Mini, but after disabling the Server.app and following the migration process, I am only seeing netboot_disabled.


This might be pointing us in the right direction, what do I need to do to get that file listed as enabled again?

Thank you for your help so far.

Oct 10, 2018 4:04 AM in response to Sammington

Edit the /etc/bootpd.plist file in Terminal, I use vi so the command would be -


sudo vi /etc/bootpd.plist


Go down to the section containing netboot_disabled a quick tip would be to type


/netboot


followed by return and this will search forwards to find netboot


Then edit it to replace the <key>netboot_disabled</key> that I am presuming you currently have with the following -


<key>netboot_enabled</key>

<array>

<string>en0</string>

</array>

Oct 10, 2018 5:41 AM in response to John Lockwood

Sorry, perhaps I was unclear with that description. I am indeed ensuring that it is enabled and the array is set to the correct interface:


<key>netboot_enabled</key>

<array>

<string>en0</string>

</array>


Unfortunately there is no change after a reboot, all of the services say they are running, this plist says netboot is enabled, but nothing shows up when searching Startup disks like it does when the server is activated.


Thanks John.

Oct 10, 2018 5:52 AM in response to Sammington

Is the client Mac a new MacBook Pro 2018?

Is your network part of a larger corporate/education network? If so it might be divided in to separate subnets. NetBoot does not work between different subnets/VLANs without a lot of hard work.


Try having a client Mac already running and go to Startup Disk. See if Startup Disk in System Preferences lists any NetBoot drives.


I presume the NetBoot images are in /Library/NetBoot as normal.

Oct 10, 2018 5:57 AM in response to John Lockwood

The client Mac is 2013 MacBook Pro, also tested on a 2010 Mac Pro and a 2015 MacBook Pro.

We are a closed single network, not connecting to any others and not split in any way.


When I check on all of those devices, nothing is listed under Startup Disk (except the local HDD of course).


Yes all of the .nbi files are in /Library/NetBoot/NetBootSP0

Oct 10, 2018 6:53 AM in response to Sammington

I am stumped then.


Perhaps look at alternatives. There is DeployStudio for Mac, NetSUS from JAMF https://github.com/jamf/NetSUS, BSDpy https://github.com/bruienne/bsdpy or CloneDeploy http://clonedeploy.org/ and I am sure there are a few others.


DeployStudio being that it runs on Macs uses the same bootpd and NetBoot and /Library/NetBoot as regular Apple NetRestore/NetInstall. It might however automatically configure and turn things on for you in case this is the problem.

Oct 12, 2018 8:39 AM in response to Sammington

Just thought of one more thing for you to try/check.


Each NetBoot image has a configuration file which is a plist file, this amongst other things defines whether it is enabled for NFS access which is what you want for this purpose.


I would have a look at them to see if there is anything obviously wrong. If it is not enabled for NFS it will likely not show up.


See /Library/NetBoot/NetBootSP0/<nameofimage>.nbi/NBImageinfo.plist


It is also possible to define lists restricting which Mac models or Ethernet MAC addresses are allowed to access that image.

Migrate Away From Server NetInstall

Welcome to Apple Support Community
A forum where Apple customers help each other with their products. Get started with your Apple ID.