Come fa uno sviluppatore a creare un ambiente per hackerare un sistema operativo come Linux, Plan9 o BSD?

4

Ho sempre trovato scoraggiante e confuso il modo in cui un hacker del sistema operativo imposta il proprio flusso di lavoro. Come sviluppatore web, trovo facile impostare un flusso di lavoro perché i siti Web vengono eseguiti su server e pertanto il mio sistema operativo non viene mai toccato. Ma un programmatore del sistema operativo, come lo fai? Ti sviluppi su una macchina e poi in qualche modo trasferisci il codice sull'altra macchina? Ti sviluppi sul sistema operativo che stai sviluppando, quell'ultima opzione sembra piena di paradossi? Quindi come lo fai?

P.S.

La mia domanda Quora simile non ha ancora risposta a questa domanda ...

    
posta Victor S 18.10.2011 - 15:00
fonte

5 risposte

7

Non ho mai spiato su Plan 9, ma per i SO di tipo Unix (Linux, BSD), ho appena installato un sistema con il kernel su cui voglio hackerare, installare il toolchain del compilatore (non molto difficile nella maggior parte dei moderni Distribuzioni Linux) e inizia a costruire kernel.

Se sto scherzando con il kernel stesso, configuro i menu di setup di avvio (grub o qualunque cosa io stia usando) per avere un'opzione extra per i miei kernel di sviluppo, e riavvio nel kernel in fase di sviluppo.

Per l'hacking dell'hardware è un po 'più semplice, dato che di solito lavoro con moduli caricabili e quindi posso semplicemente caricare e scaricare il modulo che sto sviluppando.

Il debugging non è la cosa più semplice del mondo quando si lavora sul kernel, ma è quando si impara a leggere i file di log del sistema.

    
risposta data 18.10.2011 - 15:14
fonte
8

Da quando le macchine virtuali come VMWare, KVM / Qemu o Virtualbox sono ampiamente disponibili (e liberamente per la maggior parte), il lavoro è diventato molto più semplice.

Prima di ciò, i boot manager come GRUB o LILO permettevano il controllo su quali binari avviare (permettendoti di mantenere almeno un SO 'stabile' sulla tua macchina).

Immagino che prima dovresti dedicare un'intera macchina ai tuoi sviluppi.

    
risposta data 18.10.2011 - 15:33
fonte
6

Anche se non lo faccio personalmente, sembra che ciò che avrebbe più senso è usare una macchina virtuale (come VM Player ). Ciò consentirebbe di apportare modifiche immediatamente e quindi avviare la VM e caricarla per vederle quasi immediatamente invece di dover passare attraverso l'intero processo di metterla su una macchina separata.

    
risposta data 18.10.2011 - 15:05
fonte
0

Il modo tradizionale di fare hacking di basso livello - presumo che stiamo parlando di driver di dispositivi simili - era di avere 2 sistemi collegati da un cavo di debug. Questo approccio è ancora utilizzato a vari livelli quando si sviluppano sistemi embedded, sebbene l'emulazione e la virtualizzazione rendano questo approccio ampiamente di nicchia.

L'approccio debug-cable significa che la macchina di controllo può ispezionare la memoria / i registri sullo slave anche se il sistema operativo è in uno stato inutilizzabile, in alcune circostanze è molto utile. Il debugging JTAG può portarti ancora più lontano, ma io sto scivolando fuori tema nei sistemi embedded.

    
risposta data 18.10.2011 - 17:51
fonte
0

Il modo più semplice e veloce per farlo oggigiorno è usare una macchina virtuale. Per quanto riguarda il Piano 9, anche se può essere installato su QEMU , la sua natura distribuita può solo essere esposti utilizzando un server client (computer con capacità di calcolo e spazio su disco limitato) server (server CPU multicore, file server di capacità elevata, ecc.).

    
risposta data 18.10.2011 - 20:51
fonte

Leggi altre domande sui tag