#!/bin/bash NBI=ipxe.nbi EXE=ipxe.efi # # the NBI image number # must be unique # if you build many NBI's to be served from the same server # they must differ by this value # INDEX=$RANDOM # # the URL to chainload after launch # you might want to redefine this one # URL="http://192.168.2.100/iPXE/boot.php" URL=$1 IMAGENAME="iPXE Bootstrap Image" # additional flags to pass to make OPTIONS= if [ -d "${NBI}" ] then if [ -d "${NBI}.old" ] then rm -rf "${NBI}.old" fi mv "${NBI}" "${NBI}.old" fi # # an empty kernel cache file can not hurt # mkdir -p "${NBI}/i386/x86_64" touch "${NBI}/i386/x86_64/kernelcache" # # lets make ourselves a boot script if URL is specified # and build the binary # if [ "$URL" != "" ] then SCRIPTFILE="${NBI}/embedded-ipxe-script.txt" echo "#!/ipxe" > "${SCRIPTFILE}" echo "ifopen && dhcp && chain $URL" >> "${SCRIPTFILE}" echo "shell || " >> "${SCRIPTFILE}" echo "Building with chainloading to URL $URL" make bin-x86_64-efi/ipxe.efi "EMBED=${NBI}/embedded-ipxe-script.txt" else echo "Building with no chainloading" make bin-x86_64-efi/ipxe.efi fi # copy the output to the right location cp bin-x86_64-efi/ipxe.efi ${NBI}/i386/ipxe.efi # # we place an empty disk image file # otherwhise OS X server wont be happy serving it # base64 -d > "${NBI}/NetBoot.dmg.gz" << --eof-- H4sICM2XpFQAA05ldEJvb3QuZG1nAKtgTE6QYHW2YPn39/953iM9DvpvNjNMXNJ4IZRhjSn77wrGtxf2ax8p lGD/cN6zLmauz6lvGw0FVCV1lj/etc5ZdrWSuUfMz3tFrpppP7V5jG55mN9c1/OPoXlXZOwK/dn7H+RV2Z7/ ZHP6d+z6c6fOZm0VePzoTpKExJmWxv28d88KHK440SIwb7rxQ6UzPT335ol7XS3SCf10dOuOeffjIroM63S3 rIuff+jm96+33Tl2T9ef3H/44fN/q65KVElk95fbPb9/W/jtyZiyxXVGs00mu721kJNRc9/55lqmrueje57G cldnbQzsX771b9Xeiaf/lc6q43xzp/Syydvw2XJMLBwCCg4NDIxDgvElaMHsZZn6n1OFB4d7iGQsiGdqDdoq 4z21plDX73+53vNl1/7bi1PF7AvRjfHXX1kn2NhX5OYolKUWFWfm59kqGeoZKCmk5iXnp2TmpdsqhYa46Voo 2dtx2Si6+DuHRAa4KhTkZBaXKASEOvl4Oiso6errOxYU5KTq67uEuCgE+HgGhygAzdDXd/VTUlDKKCkpsNLX Ly8v10sEqdJLzs8FKSzWDyjKL0gtKqn0ARqmC9Sgl1KSogS0BmI6inOAoimZySV2XJw22amVdkWpxfmlRcmp umn5Rdk2+iAhoAxUBURJUk52BUyG0yaxqCgRzEKogqpzLCkpykwqLUkthqsGyhQDBfPS7QwqDAxMDWz0oVyE Lmc3v8TcVCw6fBOLS1KLFJzy80sUglKT84tSFDR8nYIUrBQMNLGY45JYkohsSgqQD2EmhedUJTqCgKsjFuCE zAFrcHRM98SmEhuAagCrTy83zrF0LidKA/GAvhqc04GEUyCISMam1gmnDR76IGCBJupKlJNsIXGmj4g0cJx6 umBJF7qGWGKf0jQEtBqWmGmcrBU0XPyD490cQ+KNjYDuMKRCWg6E0iGZ2liiFZqWAx0JApS0nOSqb+yVTpQG 4gF9NbjiT8vO+qganOBp1zkPHFrggIiAq/exQLHBAxGi3uip3hmLk9L0oXwnXx909RAAzkDlGJ52NSkjLh5s SclG2BItWUkWkXVs9OGVA9i4gpziEtpVHLgzCf7Awhp0oxpGNQwPDa4oRf2gcNKohlENdNJAmwqQYH0HE0PQ 4J6XHVd2fk4lAwMDCwMDE5BiYGTACpj2YBcf7ADmbj6BgXQEECusDgztGkA3gAAkbhkt9iMLAgDyzcZIzBIA AA== --eof-- gzip -d "${NBI}/NetBoot.dmg.gz" # # cat com.appleBoot.plist # cat > "${NBI}/i386/com.appleBoot.plist" << --eof-- Kernel Flags root-dmg=file:///BaseSystem.dmg --eof-- # # cat PlatformSupport # cat > "${NBI}/i386/PlatformSupport.plist" << --eof-- SupportedBoardIds Mac-031B6874CF7F642A Mac-F2268DC8 Mac-50619A408DB004DA Mac-F2218EA9 Mac-F42D86A9 Mac-F22C8AC8 Mac-F22586C8 Mac-AFD8A9D944EA4843 Mac-942B59F58194171B Mac-F226BEC8 Mac-7DF2A3B5E5D671ED Mac-35C1E88140C3E6CF Mac-77EB7D7DAF985301 Mac-2E6FAB96566FE58C Mac-7BA5B2794B2CDB12 Mac-031AEE4D24BFF0B1 Mac-00BE6ED71E35EB86 Mac-4B7AC7E43945597E Mac-F22C89C8 Mac-F22587A1 Mac-942459F5819B171B Mac-F42388C8 Mac-F223BEC8 Mac-F4238CC8 Mac-F222BEC8 Mac-F227BEC8 Mac-F2208EC8 Mac-66F35F19FE2A0D05 Mac-F4238BC8 Mac-189A3D4F975D5FFC Mac-C08A6BB70A942AC2 Mac-8ED6AF5B48C039E1 Mac-F2238AC8 Mac-FC02E91DDD3FA6A4 Mac-6F01561E16C75D06 Mac-F60DEB81FF30ACF6 Mac-81E3E92DD6088272 Mac-F2268EC8 Mac-F22589C8 Mac-3CBD00234E554E41 Mac-F22788AA Mac-F42C86C8 Mac-F221BEC8 Mac-942C5DF58193131B Mac-F2238BAE Mac-F22C86C8 Mac-F2268CC8 Mac-F221DCC8 Mac-F2218FC8 Mac-742912EFDBEE19B3 Mac-27ADBB7B4CEE8E61 Mac-F65AE981FFA204ED Mac-F42D89C8 Mac-F22587C8 Mac-F42D89A9 Mac-F2268AC8 Mac-F42C89C8 Mac-942452F5819B1C1B Mac-F2218FA9 Mac-F42D88C8 Mac-94245B3640C91C81 Mac-F42D86C8 Mac-4BC72D62AD45599E Mac-F2268DAE Mac-2BD1B31983FE1663 Mac-7DF21CB3ED6977E5 Mac-F42C88C8 Mac-94245A3940C91C80 Mac-F42386C8 Mac-C3EC7CD22292981F Mac-942B5BF58194151B Mac-F2218EC8 SupportedModelProperties MacBookPro4,1 Macmini5,3 Macmini5,2 Macmini5,1 iMac10,1 MacPro4,1 MacBookPro5,2 iMac8,1 MacBookPro5,4 MacBookAir4,2 iMac11,1 MacBookPro7,1 iMac11,3 MacBookPro8,2 MacBookPro3,1 iMac13,2 iMac13,3 MacPro5,1 iMac9,1 Macmini3,1 iMac13,1 iMac12,2 iMac12,1 MacBook5,1 MacBook5,2 iMac11,2 MacBookPro5,1 Macmini6,1 Macmini6,2 MacBookAir4,1 MacBookPro11,3 MacBookPro11,2 MacBookPro11,1 MacBookPro6,2 MacBookPro10,2 MacBookPro10,1 MacBookPro5,5 MacBookPro9,2 iMac14,1 iMac14,3 iMac14,2 MacBookPro6,1 MacBookAir3,1 MacBookAir3,2 Macmini4,1 Xserve3,1 MacBookAir2,1 MacBookAir6,1 MacBooKAir6,2 MacBookAir6,2 MacBookPro8,1 MacBook7,1 MacBookPro8,3 iMac7,1 MacBookPro9,1 MacBook6,1 MacBookPro5,3 MacBookAir5,2 MacPro3,1 MacBookAir5,1 --eof-- # # NBImageInfo par # cat > "${NBI}/NBImageInfo.plist" << --eof-- Architectures i386 BackwardCompatible BootFile ${EXE} Description ${IMAGENAME} Index ${INDEX} IsDefault IsEnabled IsInstall Kind 1 Language Default Name ${IMAGENAME} SupportsDiskless Type HTTP imageType netboot RootPath NetBoot.dmg osVersion 1.0 DisabledMACAddresses DisabledSystemIdentifiers iMac10,1 iMac11,1 iMac11,2 iMac11,3 iMac12,1 iMac12,2 iMac13,1 iMac13,2 iMac13,3 iMac14,1 iMac14,2 iMac14,3 iMac14,4 iMac15,1 iMac7,1 iMac8,1 iMac9,1 Mac-50619A408DB004DA MacBook5,1 MacBook5,2 MacBook6,1 MacBook7,1 MacBookAir2,1 MacBookAir3,1 MacBookAir3,2 MacBookAir4,1 MacBookAir4,2 MacBookAir5,1 MacBookAir5,2 MacBookAir6,1 MacBookAir6,2 MacBookPro10,1 MacBookPro10,2 MacBookPro11,1 MacBookPro11,2 MacBookPro11,3 MacBookPro3,1 MacBookPro4,1 MacBookPro5,1 MacBookPro5,2 MacBookPro5,3 MacBookPro5,4 MacBookPro5,5 MacBookPro6,1 MacBookPro6,2 MacBookPro7,1 MacBookPro8,1 MacBookPro8,2 MacBookPro8,3 MacBookPro9,1 MacBookPro9,2 Macmini3,1 Macmini4,1 Macmini5,1 Macmini5,2 Macmini5,3 Macmini6,1 Macmini6,2 Macmini7,1 MacPro3,1 MacPro4,1 MacPro5,1 MacPro6,1 Xserve3,1 EnabledMACAddresses EnabledSystemIdentifiers --eof-- # if we have zip, lets make a zip archive to easily transfer to a server # if [ -x /usr/bin/zip ] then /usr/bin/zip -r "${NBI}.zip" "${NBI}" echo "Output packed into '${NBI}.zip'" else echo "Output is in '${NBI}'" fi # end