Jump to content

Progetto osx netboot senza usare osx server


Aigors
 Share

11 posts in this topic

Recommended Posts

Ciao, come sapete e' possibile fare il boot da rete con un vero macintosh, in particolare e' possibile operare in 2 modi diversi, il primo e' fare un immagine di installazione in modo da installare il sistema operativo su un mac, l'altro, e' fare i modo che un mac senza disco faccia il boot da rete e operi come fosse un terminale collegato ad un server centrale.

Entrambe le modalita' sono supportate dalla parte server di mac osx, la mia idea e' di fare le stesse cose ma senza usare la parte server che e' a pagamento dall apple store.

Ho pero' alcune lacune, nello specifico non conosco la sequenza di boot nei dettagli, ho trovato un documento che spiega come avviene il boot da rete di un vero mac, ma questa usa un protocollo proprietario apple che si chiama bsdp e che essendo proprietario apple non e' possibile implementare su sistemi operativi come per esempio linux, poi, trafficando noi con hardware non apple, sarebbe del tutto inutile poiche tale protocollo e' implementato direttamente nel firmware originale apple.

Il mio scopo, per ora, sarebbe quello di implementare un server di installazione remota per hackintosh al fine di evitare l'uso di una chiavetta usb e di avere a disposizione un osx funzionante sia virtualizzato che vero, quindi mi e' venuto in mente di provare ad implementare tale funzionalita' usando strumenti standard come pxe che e' l'acronimo di Preboot Xecution Environement, tale parte la conosco abbastanza bene avendola gia' implementata per diversi altri sistemi operativi e su una nas per esempio ( synology ) quindi quello non e' un problema.

Il problema sta nel fatto che non ho trovato uno straccio di documentazione che sia esaustiva di come avviene il boot da rete di un vero mac, sapendolo potrei tentare di emularlo usando appunto pxe per spedirgli via tftp i file che vuole.

Se qualcuno ha informazioni piu' aggiornate delle mie, qui sto, ovviamente se volete altre info in proposito, sono a vostra disposizione.

Scambiandoci idee con un altro utente, e' venuto fuori anche il possibile utilizzo attraverso iSCSI ma questo diverrebbe piu' complicato essendo il software iSCSi un software a pagamento, ma potrebbe esserci una soluzione, il kernel di apple e' un bsd di cui sono disponibili i sorgenti, in freebsd e' gia' implementato l iSCSi, quindi avendo i necessari skills, si potrebbe tentare un porting da freebsd al kernel di apple, ma ovviamente non essendo io un kernel programmer, a dire il vero non sono nemmeno un programmatore, questa parte e' fuori dalla mia portata.

Io l'ho buttata li.

 

Vantaggi, pensate ad una rete dove si usano terminali senza dischi rigidi ma solo con una scheda di rete, accentri le infomazioni e' risparmi sul costo degli stessi.

Svantaggi, complessita' del sistema, bisogno di avere qualcuno pratico che sappia gestirla.

Grazie molte :-) 

 

 

 

Link to comment
Share on other sites

Sarebbe interessante capire dove sia residente l'altra metà del "protocollo proprietario" che possa inviare in rete un seganle correttamente codificato.

In genere in protocolo di trasferimneto si basa sulla presenza in entrambi i terminalì.

 

Se da una parte in rete sono posizionati i server Apple, sul nostro Pc non abbiamo un software o dati che possano essere ascoltati dai server Mac.

 

Diverso invece dovrebbe essere per un Mac vero e proprio che non avendo un Bios (inteso in senso tradizionale) con la dovuta scelta di tasti inoltrerebbe in rete la richiesta del caso.

 

Naturalmente il mio è un ragionamento da profano giusto per stimolare la discussione che sembra abbastanza intrigante. :drool:

Link to comment
Share on other sites

cerchero' di essere più' chiaro, dunque, la cosa funziona più o meno in quesito modo, quando setti un mac per fare da server questo fa' partire 4 servizi fondamentali, un dhcp, che altri non e' che un servizio che sta in ascolto su tutta la rete e che distribuisce indirizzi ip a fronte di una richiesta fatta da qualsiasi entità lo richieda, poi c'e' un altro servizio che si chiama tftp che altri non e' che un servizio di file transfer "triviale" che a fronte di una richiesta specifica spedisce un file specifico, poi, c'e' la parte specifica di apple ossia bsdp Boot Service Discovery Protocol ed infine l nfs ossia il network file system che altri non e' che un protocollo standard che ti permette di montare un pezzo di file system esportato di un server, su una macchina remota.

Di tutti questi pezzi l'unico proprietario e' il BSDP che pero' nel nostro caso non ci serve visto che tale funzionalità' sarebbe emulata dal pxe opportunamente configurato.

Quindi, proprio la parte proprietaria non ci serve per i nostri scopi se usiamo un hackintosh, non solo, gli altri 3 servizi ossia dhcp nfs e tftp sono servizi standard che si possono implementare  su osx senza che si debba usare software proprietario apple.

la richiesta BSDP e' propria del firmware apple che non ci serve nel nostro caso.

Link to comment
Share on other sites

Aigors, on 19 Feb 2014 - 10:11 PM, said:

 sarebbe emulata dal pxe opportunamente configurato.

-----------------------------------------------

Scusa la mia ignoranza, ma  come lo configuri senza un minimo di software residente da qualche parte sul PC?

Cattura.jpg

Link to comment
Share on other sites

quale pc? il pxe serve proprio a questo, fare il boot da rete senza null'altro, il pxe sul computer che deve fare il boot, gia' c'e', basta quello, il resto dei pezzi li pesca via rete, ma qui e' l'inghippo, settare il tutto in modo che si peschi le robe via rete, monti l'immagine via nfs, successivamente far partire il setup.

Link to comment
Share on other sites

....... il resto dei pezzi li pesca via rete, ma qui e' l'inghippo, settare il tutto in modo che si peschi le robe via rete, monti l'immagine via nfs, successivamente far partire il setup.

Perfetto, questo si era capito, ma devi arrivare all'immagine prima....
Allora ti rifaccio la domanda, il boot da lan (pxe) è presente da una vita nelle opzioni anche in quelli parecchio datati, mi è capitato diverse volte di dargli la priorità (per curiosità) ma non ha mai "pescato" niente.Questo fantomatico "settaggio" come e da dove lo imposti, dal Bios??
...non ho visto parametri da impostare.
Link to comment
Share on other sites

Ciao! vedo che mi sono spiegato male, quindi cerchero' di illustrare come funziona un generico processo di boot da rete.

Per effettuare un boot da rete occorrono 2 macchine, una denominata "server" a cui spetta il compito di fornire tutti pezzi da caricare, ed una client che e' quella che effettua il boot da rete.

La macchina server mette a disposizione 2 servizi, un dhcp che ha il compito di fornire sia l'indirizzi ip sia altre informazioni che vedremo in seguito, sia il tftp.

Che cosa e' un tftp? tftp e' un acronimo che significa trivial file transfer protocol che sostanzialmente significa trasferire un file in maniera triviale.

Il noto protocollo tfp e' un servizio che si avvale del tcp/ip che e' un protocollo orientato alla connessione, cosa significa? che fa' del suo meglio per assicurarsi che il trasferimento sia andato a buon fine e che tutti i pezzi del file siano arrivati nel loro preciso ordine, per fare questo usa alcuni controlli insiti nel protocollo stesso come per esempio i squence number, ossia genera dei numeri in sequenza che appiccica al pacchetto che spedisce,chi riceve controlla che il numero sia in sequenza rispetto al precedente e se non lo e' richiede quello specifico pacchetto, capite da voi che cio' comporta un carico di lavoro in piu' alle macchine, oggi trascurabile, ma agli albori era importante.

Per ovviare a questo si sono inventati appunto il tftp che essendo di tipo triviale usa un protocollo che si chiama udp che e' semplicissimo, spedisco e basta, non mi accerto se dall altra parte siano arrivati tutti i pezzi e se siano nella giusta sequenza, la correttezza e' lasciata a chi implementa questo tipo di file transfer, e' per questo che di norma un tftp non dovrebbe avvenire tra subnet diverse proprio perche' essendoci dei router in mezzo, potrebbe avere dei problemi.

Dopo questa piccola digressione ( lo so non e' il massimo del tecnicismo ma in questo contesto ho voluto privilegiare la comprensione ), torniamo a noi.

Quindi abbiamo il dhcp e il tftp, come agiscono questi 2 signori? 

questo e' piu' o meno lo schema.

Quando una macchina inizia il boot da rete, spedisce una richiesta denominata dhcp-req in cui sostanzialmente chiede: chi gentilmente mi dice che parametri di rete devo usare? nella richiesta c'e' anche un altro campo che dice che tipo di richiesta e', nel nostro caso tale richiesta ha l'etichetta di pxe e chiede tra le altre cose, il file che devo caricare tramite il tftp visto in precedenza.

Quindi, dhcp-req con il tag pxe, il server guarda nella sua configurazione, scopre che in caso di richieste con tag pxe deve anche spedire due altri parametri, l'indirizzo del tftp ed il file che la macchina deve caricarsi in memoria per dare il via al boot vero e proprio.

Ricapitolando:

Client ----->dhcp-req-tagged-pxe 

Server <----dhcp-req-tagged-pxe 

Server ----> dhcp-offer con i seguenti dati: indirizzo ip,netmask,default gateway,dns,server tftp, nome file da caricare tramite tftp.

Il client riceve questa offerta, analizza i parametri, setta ip,netmask,mask,dns,gateway, e richiede tramite tftp-get il file che ho precdentemente settato nel dhcp server che nel nostro caso si chiama pxelinux.0 e viene dritto dal progetto syslinux.

Una volta che il pxelinux.o e' nella macchina client, viene eseguito e chiede altre cose che dipendono dai file di configurazione che risiedono sul server.

Tutta sta pappardella per dire cosa? che il client non sa cosa deve caricare ne cosa chiedere, lo capisce dalla configurazione del dhcp server che comprende anche il server tfpd e il relativo bootloader,

Se non e' chiaro, vedo di chiarificarlo :D  

Link to comment
Share on other sites

quella e' la seconda parte del problema, ovviamente il sistema operativo che intendi installare deve avere i driver di quella scheda di rete, credimi, funziona e la struttura vmware che gestisco e' li a dimostrarlo :D 

comunque prima che si avvii un qualche sistema operativo, la scheda di rete funziona perche' viene vista in maniera nativa dal bootloader presente nel firmware della scheda di rete.

Link to comment
Share on other sites

Mmmhh! Diffido molto dei test su Vm..cmq è interessante vedere come gli utenti di questo forum si siano scapicollati ad entrare nel merito della questione  :D ...mah!

Se vuoi fare della prove su macchina reale basta che fai un fischio e mi dici quello  che devo fare

Link to comment
Share on other sites

Non e' un problema di prove :D quelle sono in grado di farle sia su VM che su hardware fisico, a casa ho 3 macchine, il problema e' di informazioni, trovarle prima e capirle poi ;-) 

Io invece non diffido affatto dei test su VM, certo, non puoi farci test prestazionali, ma puoi crearti un ambiente complesso e farci esperimenti o solo per scriverti come diamine metterlo in piedi, per esempio prima di implementare xendesktop qui al lavoro l'ho fatto a casa in modo da avere ben chiaro come funzionava e cosa comportava il tutto.

La virtualizzazione m'ha aperto un mondo e mi ha permesso di fare parecchia esperienza.

 

Be' puo anche darsi che la mia idea non interessi nessuno :D 


A casa ho virtualizzato un cluster vmware composto da 2 nodi esx un  vcenter e una macchina che mi faceva da db server ( sql microsoft), e' stato lungo ma entusiasmante.

Edited by Aigors
  • Like 1
Link to comment
Share on other sites

 Share

×
×
  • Create New...