{"id":383,"date":"2013-03-02T23:40:12","date_gmt":"2013-03-02T21:40:12","guid":{"rendered":"http:\/\/osxadmin.cz\/?p=383"},"modified":"2021-01-21T20:31:59","modified_gmt":"2021-01-21T18:31:59","slug":"bootujeme-mac-ze-site-netboot","status":"publish","type":"post","link":"https:\/\/macadmin.cz\/?p=383","title":{"rendered":"NetBoot: Startujeme Mac ze s\u00edt\u011b"},"content":{"rendered":"<p><a href=\"https:\/\/macadmin.cz\/wp-content\/uploads\/NetBoot.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignleft wp-image-387 size-full\" src=\"https:\/\/macadmin.cz\/wp-content\/uploads\/NetBoot.png\" alt=\"NetBoot\" width=\"128\" height=\"128\"><\/a>P\u0159edstavte si n\u00e1sleduj\u00edc\u00ed situaci. M\u00e1te v\u011bt\u0161\u00ed mno\u017estv\u00ed stoln\u00edch Mac\u016f a pot\u0159ebujete na v\u0161echny nainstalovat n\u011bjak\u00fd software. Po jednom? To by bylo na dlouhou. Co takhle p\u0159ipravit jednu v\u00fdchoz\u00ed podobu syst\u00e9mu a tu snadno rozdistribuovat na v\u0161echny po\u010d\u00edta\u010de. Apple-way je v tomto p\u0159\u00edpad\u011b slu\u017eba NetBoot (nyn\u00ed p\u0159ejmenovan\u00e1 na NetInstall). V s\u00e9rii n\u011bkolika blogpost\u016f rozeberu jednotliv\u00e9 \u010d\u00e1sti cel\u00e9ho procesu &#8211; boot se ze s\u00edt\u011b, p\u0159\u00edprava image, NetBoot server.<\/p>\n<h2>Co se d\u011bje kdy\u017e startuje Mac?<\/h2>\n<p>Je\u0161t\u011b ne\u017e se pod\u00edv\u00e1me na samotn\u00fd NetBoot, je dobr\u00e9 zn\u00e1t bootovac\u00ed proces Macu.<\/p>\n<ol>\n<li>POST (Power-On Self-Test)<br \/>\nPo stisknut\u00ed tla\u010d\u00edtka power Mac provede n\u011bkolik test\u016f hardware. Pokud nebyl p\u0159ed vypnut\u00edm zvuk ztlumen na nulu (hodnota je ulo\u017eena v prom\u011bnn\u00e9 SystemAudioVolume uvnit\u0159 NVRAM), ozve se jabka\u0159\u016fm dob\u0159e zn\u00e1m\u00fd zvuk. Pro trochu nostalgie p\u011bkn\u00e9 video s historick\u00fdmi zvuky \u00fasp\u011b\u0161n\u00e9ho POSTu.&nbsp;V hor\u0161\u00edm p\u0159\u00edpad\u011b Mac za\u010dne p\u00edpat, co\u017e m\u016f\u017ee znamenat mimo jin\u00e9 \u0161patnou RAMku. V\u00edce v <a href=\"http:\/\/support.apple.com\/kb\/HT1547\">apple support \u010dl\u00e1nku<\/a>.<br \/>\n<!--more--><\/li>\n<li>Po \u00fasp\u011b\u0161n\u00e9 POSTu p\u0159evezme kontrolu nad HW <a href=\"http:\/\/support.apple.com\/kb\/ht1471\">firmware<\/a> (BootROM).<br \/>\nV podstat\u011b jde o mal\u00fd opera\u010dn\u00ed syst\u00e9m, jen\u017e m\u00e1 za \u00fakol naj\u00edt bootloader soubor a nat\u00e1hnout ho do opera\u010dn\u00ed pam\u011bti.&nbsp;&nbsp;<\/p>\n<p>Firmware se neprve pod\u00edv\u00e1 do <a href=\"http:\/\/support.apple.com\/kb\/ht1379\">NVRAM<\/a> pam\u011bti.<\/p>\n<pre class=\"brush: bash; gutter: false; first-line: 1; highlight: []; html-script: false\">HungryHippo.local 20:14:19&gt;&gt; nvram -p | egrep \"(efi-boot-device|efi-boot-device-data)\"\nefi-boot-device\t&lt;array&gt;&lt;dict&gt;&lt;key&gt;IOMatch&lt;\/key&gt;&lt;dict&gt;&lt;key&gt;IOProviderClass&lt;\/key&gt;&lt;string&gt;IOMedia&lt;\/string&gt;&lt;key&gt;IOPropertyMatch&lt;\/key&gt;&lt;dict&gt;&lt;key&gt;UUID&lt;\/key&gt;&lt;string&gt;000064B1-7A58-0000-2D6E-0000C5400000&lt;\/string&gt;&lt;\/dict&gt;&lt;\/dict&gt;&lt;key&gt;BLLastBSDName&lt;\/key&gt;&lt;string&gt;disk0s2&lt;\/string&gt;&lt;\/dict&gt;&lt;\/array&gt;\nefi-boot-device-data\t%02%01%0c%00%d0A%03%0a%00%00%00%00%01%01%06%00%02%1f%03%12%0a%00%00%00%00%00%00%00%04%01*%00%02%00%00%00(@%06%00%00%00%00%00(%b8%ca%1a%00%00%00%00%b1d%00%00Xz%00%00-n%00%00%c5@%00%00%02%02%7f%ff%04%00\n<\/pre>\n<p>V prom\u011bnn\u00fdch efi-boot-device a efi-boot-device-data je ulo\u017eeno defaultn\u00ed za\u0159\u00edzen\u00ed, ze kter\u00e9ho m\u00e1 Mac bootovat. Pokud toto za\u0159\u00edzen\u00ed Mac p\u0159i startu nenajde (odpojen\u00fd disk, nedostupn\u00fd NetBoot server), pokus\u00ed se naj\u00edt bootloader jinde (lok\u00e1ln\u00ed disk, extern\u00ed disk, dvd). Defaultn\u00ed zdroj pro bootv\u00e1n\u00ed se vyb\u00edr\u00e1 bu\u010f v p\u0159edvolb\u00e1ch syst\u00e9mu (Startup Disk) nebo pomoc\u00ed p\u0159\u00edkazu <code>bless<\/code>.<\/p>\n<p>P\u0159i spu\u0161t\u011bn\u00ed Macu lze startovac\u00ed proces ovlivnit <a href=\"http:\/\/support.apple.com\/kb\/ht1533\">kombinacemi stisknut\u00fdch kl\u00e1ves<\/a>. Nap\u0159. alt (\u2325) d\u00e1v\u00e1 na v\u00fdb\u011br seznam bootovateln\u00fdch za\u0159\u00edzen\u00ed, p\u00edsmeno C znamen\u00e1 boot z optick\u00e9ho disku.<\/p>\n<p>Bootuje-li syst\u00e9m z HFS+ odd\u00edlu, najde si v jeho hlavi\u010dce bootblok (v\u00edce informac\u00ed o HFS+ v t\u00e9to <a href=\"http:\/\/dubeiko.com\/development\/FileSystems\/HFSPLUS\/tn1150.html\">tech note<\/a>). Bootblok obsahuje odkaz na bootlader, kter\u00fd ve v\u011bt\u0161in\u011b p\u0159\u00edpad\u016f najdeme ve filesyst\u00e9mu na cest\u011b: <code>\/System\/Library\/CoreServices\/boot.efi<\/code><\/li>\n<li>Bootloader startuje kernel.<br \/>\n= <code>\/mach_kernel<\/code> + n\u011bkolik \u017eivotn\u011b d\u016fle\u017eit\u00fdch .kext modul\u016f. V praxi jsou tyto komponenty slinkovan\u00e9 do jednoho souboru <code>\/System\/Library\/Caches\/com.apple.kext.caches\/Startup\/kernelcache<\/code>. Syst\u00e9m pak startuje rychleji, proto\u017ee linkov\u00e1n\u00ed nemus\u00ed poka\u017ed\u00e9 \u0159e\u0161it.&nbsp;<\/li>\n<li>J\u00e1dro syst\u00e9mu spou\u0161t\u00ed p\u00e1na d\u00e9mon\u016f &#8211; <code>launchd<\/code><br \/>\nPopis launchd, loginwindow a n\u00e1sledn\u00e9ho p\u0159ihl\u00e1\u0161en\u00ed u\u017eivatele zde nen\u00ed p\u0159\u00edli\u0161 relevantn\u00ed.<\/li>\n<\/ol>\n<h2>Start ze s\u00edt\u011b<\/h2>\n<p>U Macu p\u0159ipojen\u00e9ho ethernet kabelem (wi-fi nen\u00ed podporov\u00e1na), je mo\u017en\u00e9 iniciovat start ze s\u00edt\u011b n\u00e1sleduj\u00edc\u00edmi zp\u016fsoby.<\/p>\n<ol>\n<li>Firmware najde v NVRAM IP adresu NetBoot serveru.&nbsp;\n<pre class=\"brush: bash; gutter: false; first-line: 1; highlight: []; html-script: false\">HungryHippo.local 20:15:06&gt;&gt; nvram -p | egrep \"(efi-boot-device|efi-boot-device-data)\"\nefi-boot-device\t&amp;lt;array&amp;gt;&amp;lt;dict&amp;gt;&amp;lt;key&amp;gt;IOMatch&amp;lt;\/key&amp;gt;&amp;lt;dict&amp;gt;&amp;lt;key&amp;gt;BSD Name&amp;lt;\/key&amp;gt;&amp;lt;string&amp;gt;en0&amp;lt;\/string&amp;gt;&amp;lt;key&amp;gt;IOProviderClass&amp;lt;\/key&amp;gt;&amp;lt;string&amp;gt;IONetworkInterface&amp;lt;\/string&amp;gt;&amp;lt;\/dict&amp;gt;&amp;lt;key&amp;gt;BLMACAddress&amp;lt;\/key&amp;gt;&amp;lt;data&amp;gt;cFaBwix7&amp;lt;\/data&amp;gt;&amp;lt;\/dict&amp;gt;&amp;lt;dict&amp;gt;&amp;lt;key&amp;gt;IOEFIDevicePathType&amp;lt;\/key&amp;gt;&amp;lt;string&amp;gt;MessagingIPv4&amp;lt;\/string&amp;gt;&amp;lt;key&amp;gt;RemoteIpAddress&amp;lt;\/key&amp;gt;&amp;lt;string&amp;gt;192.168.0.211&amp;lt;\/string&amp;gt;&amp;lt;\/dict&amp;gt;&amp;lt;\/array&amp;gt;\nefi-boot-device-data\t%02%01%0c%00%d0A%03%0a%00%00%00%00%01%01%06%00%01%1c%01%01%06%00%00%00%03%0b%%00pV%81%c2,{%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%03%0c%13%00%00%00%00%00%c0%a8%00%d3%00%00%00%00%00%00%00%7f%ff%04%00<\/pre>\n<p>Tuto informaci p\u0159ed vypnut\u00edm po\u010d\u00edta\u010de n\u011bkdo dodal pomoc\u00ed Starup Disk panelu nebo p\u0159\u00edkazu <code>bless<\/code>.<\/li>\n<li>\n<ul>\n<li>U\u017eivatel p\u0159i startu podr\u017e\u00ed alt (\u2325) a vybere jeden z nab\u00edzen\u00fdch image na objeven\u00e9m NetBoot serveru.<\/li>\n<li>U\u017eivatel p\u0159i startu podr\u017e\u00ed kl\u00e1vesu N nebo kombinaci command (\u2318) + N pro start z NetBoot serveru.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<h2>Jak to funguje<\/h2>\n<ol>\n<li>Klient si vy\u017e\u00e1d\u00e1 IP adresu (DHCP, UDP port 67). Bez funk\u010dn\u00edho DHCP to nefunguje!<\/li>\n<li>Klient po\u0161le po\u017eadavek na boot ze s\u00edt\u011b pomoc\u00ed BSPD protokolu (Boot Service Discovery Protocol, UDP port 67)<\/li>\n<li>NetBoot Server za\u0161le klientovi protokolem TFTP (UDP port 69) bootloader a p\u0159ipraven\u00fd kernel (kernelcache)<\/li>\n<li>N\u00e1sleduj\u00edc\u00ed d\u011bj z\u00e1le\u017e\u00ed na typu NetBoot image.<\/li>\n<\/ol>\n<h2>NetInstall<\/h2>\n<p>Po s\u00edti se nastartuje do instal\u00e1toru OS X. Instalace funguje naprosto identicky jako u lok\u00e1ln\u00edho instala\u010dn\u00edho m\u00e9dia (flashka, dvd). NetInstall image m\u016f\u017ee nav\u00edc obsahovat administr\u00e1torem p\u0159idan\u00e9 instala\u010dn\u00ed bal\u00ed\u010dky a prov\u00e1d\u011bt n\u011bkter\u00e9 dal\u0161\u00ed akce. O tom p\u0159\u00ed\u0161t\u011b v postu zam\u011b\u0159en\u00e9m na vytv\u00e1\u0159en\u00ed image v System Image Utility.<\/p>\n<h2>NetRestore<\/h2>\n<p>Velmi minim\u00e1ln\u00ed podoba opera\u010dn\u00edho syst\u00e9mu, jej\u00ed\u017e jedin\u00fdm \u00fakolem je zkop\u00edrovat p\u0159ipraven\u00fd image na lok\u00e1ln\u00ed disk. Klonov\u00e1n\u00ed obrazu disku prov\u00e1d\u00ed ASR = Apple Software Restore. Zdrojov\u00fd image m\u016f\u017ee b\u00fdt dodan\u00fd t\u0159emi zp\u016fsoby.<\/p>\n<ul>\n<li>Unicastem z NetBoot serveru (NFS nebo HTTP)<\/li>\n<li>Unicastem z HTTP serveru<\/li>\n<li>Multicast streamem, kter\u00fd pos\u00edl\u00e1 <code>asr<\/code><\/li>\n<\/ul>\n<p>NetRestore vyd\u00e1 na n\u011bkolik samotn\u00fdch blogpost\u016f, proto si jej nech\u00e1m na pozd\u011bji.<\/p>\n<h2>NetBoot<\/h2>\n<p>Mac bootuje do read-only image p\u0159ipojen\u00e9ho po s\u00edti. Ve\u0161ker\u00e9 zm\u011bny dat syst\u00e9m zapisuje do tzv. shadow souboru nach\u00e1zj\u00edc\u00edho se bu\u010f na lok\u00e1ln\u00edm disku nebo na NetBoot serveru (diskless re\u017eim). U\u017eivatel nem\u016f\u017ee v syst\u00e9mu prov\u00e9st \u017e\u00e1dn\u00e9 permanentn\u00ed zm\u011bny. Pokud mu maj\u00ed n\u011bjak\u00e1 data z\u016fstat zachov\u00e1na, mus\u00ed je ulo\u017eit na lok\u00e1ln\u00ed m\u00e9dium nebo s\u00ed\u0165ov\u00fd share.<\/p>\n<h2>Dal\u0161\u00ed \u010dten\u00ed<\/h2>\n<p>Kn\u00ed\u017eky <a href=\"http:\/\/www.peachpit.com\/store\/apple-training-series-mac-os-x-deployment-v10.6-a-guide-9780321635310\">10.6 Deployment<\/a> a <a href=\"http:\/\/www.peachpit.com\/store\/apple-pro-training-series-os-x-server-essentials-using-9780321887337\">10.8 Server Essentials<\/a><br \/>\n<a href=\"http:\/\/en.wikipedia.org\/wiki\/NetBoot\">\u010cl\u00e1nek<\/a> na Wikipedii<br \/>\n<a href=\"https:\/\/docs.math.osu.edu\/linux\/how-tos\/bsdp_with_isc_dhcp\/\">NetBoot Server na Linuxu<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>P\u0159edstavte si n\u00e1sleduj\u00edc\u00ed situaci. M\u00e1te v\u011bt\u0161\u00ed mno\u017estv\u00ed stoln\u00edch Mac\u016f a pot\u0159ebujete na v\u0161echny nainstalovat n\u011bjak\u00fd software. Po jednom? To by bylo na dlouhou. Co takhle p\u0159ipravit jednu v\u00fdchoz\u00ed podobu syst\u00e9mu a tu snadno rozdistribuovat na v\u0161echny po\u010d\u00edta\u010de. Apple-way je v tomto p\u0159\u00edpad\u011b slu\u017eba NetBoot (nyn\u00ed p\u0159ejmenovan\u00e1 na NetInstall). V s\u00e9rii n\u011bkolika blogpost\u016f rozeberu jednotliv\u00e9 \u010d\u00e1sti &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/macadmin.cz\/?p=383\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;NetBoot: Startujeme Mac ze s\u00edt\u011b&#8221;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0,"footnotes":""},"categories":[17,4],"tags":[18,19,6],"class_list":["post-383","post","type-post","status-publish","format-standard","hentry","category-deployment","category-macos","tag-deployment-2","tag-netboot","tag-osx-2"],"_links":{"self":[{"href":"https:\/\/macadmin.cz\/index.php?rest_route=\/wp\/v2\/posts\/383","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/macadmin.cz\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/macadmin.cz\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/macadmin.cz\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/macadmin.cz\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=383"}],"version-history":[{"count":26,"href":"https:\/\/macadmin.cz\/index.php?rest_route=\/wp\/v2\/posts\/383\/revisions"}],"predecessor-version":[{"id":1160,"href":"https:\/\/macadmin.cz\/index.php?rest_route=\/wp\/v2\/posts\/383\/revisions\/1160"}],"wp:attachment":[{"href":"https:\/\/macadmin.cz\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=383"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/macadmin.cz\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=383"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/macadmin.cz\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=383"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}