Molte sono le volte che abbiamo dovuto riparare un sistema da un LiveCD, e ad un certo punto del processo ci siamo trovati privi di uno strumento e quando vogliamo installarlo, il sistema operativo LiveCD ci dice che ha esaurito lo spazio e aglio e acqua (per affanculo e tenere duro).
Facciamolo. Useremo il file SystemRescueCD, che offre un ambiente basato su Gentoo abbastanza completo.
Nel nostro esempio (installando un Linux da zero seguendo il libro Linux From Scratch) ci mancano i programmi Bison e Makeinfo, quindi creeremo una nuova immagine ISO di questo disco ma con i nuovi strumenti.
Sebbene venga utilizzato un gestore di pacchetti (come apt-get di Debian), invece di scaricare i pacchetti, il codice sorgente viene scaricato per compilarlo sulla macchina.
Per il processo avrai bisogno di una partizione Linux (ext4 per esempio) con almeno 1.5G libero, sebbene se ne consiglia di più. Se non vuoi armeggiare con le tue partizioni, usa una macchina virtuale. Naturalmente, è consigliabile che la partizione abbia diversi gigabyte poiché durante i processi di compilazione, installazione, sincronizzazione dei repository ... è necessario spazio temporaneo; Consiglio di utilizzare una partizione di swap 8G + 2G (con 4G + 1G dovrebbe essere sufficiente, ma così ci assicuriamo, se manca RAM / swap il processo sarà ancora più lento).
Supponendo che tu abbia creato una macchina virtuale con un disco 10G, lo avvii dicendogli di avviarsi dal SystemRescueCd appena scaricato. Una volta dentro partiamo con fdisk (se hai avviato la sessione grafica puoi farlo con gparted, ma lo scopo di questo post è insegnare l'uso degli strumenti di base). fdisk è un comando interattivo:
- con l'opzione "n" creiamo una nuova partizione
- con l'opzione "t" cambiamo il tipo di filesystem che andrà nella partizione
- con l'opzione «w» scriviamo sul disco
- con l'opzione «q» usciamo senza scrivere le modifiche
Quando usiamo l'opzione "n" ci darà diverse opzioni, useremo sempre il default, tranne quando impostiamo l'ultimo settore nella prima partizione, che dovremo scrivere "+ 8G", indicando così al programma che vogliamo che la nostra partizione occupi 8 GB.
Quando creiamo la seconda partizione useremo le opzioni predefinite poiché il resto dello spazio sarà occupato. Inoltre, per dire a fdisk che la seconda partizione sarà di tipo swap, usa l'opzione "t" (il codice esadecimale per lo swap è 82). L'interfaccia è simile a questa:
Comando% fdisk / dev / sda (m per aiuto):
Una volta fatto tutto, usiamo l'opzione "w" per scrivere le modifiche su disco ed uscire.
Ora è il momento di formattare le partizioni. Inizieremo con lo scambio per utilizzarlo immediatamente:
% mkswap / dev / sda2% swapon / dev / sda2
Abbiamo già formattato la partizione di swap e con il comando swapon abbiamo iniziato a usarlo. Ora formattiamo la prima partizione in ext4:
% mkfs.ext4 /dev/sda1
Possiamo iniziare a seguire i passaggi descritti in http://www.sysresccd.org/Sysresccd-manual-en_How_to_personalize_SystemRescueCd, qui li traduco / descrivo con la strana annotazione.
Montiamo la partizione al suo posto (il LiveCD viene già preparato con una cartella / mnt / custom dove deve essere montata la partizione in cui faremo le opportune modifiche). Anche dopo il montaggio dovremo estrarre i file dal disco, questo si ottiene con uno script già preparato. Lo script impiegherà un po 'di tempo (poiché scarica centinaia di megabyte di memoria), se vuoi controllare che funzioni effettivamente, vai su un altro terminale (con Alt + F4 per esempio) e fai un df -h.
% mount / dev / sda2 / mnt / custom% / usr / sbin / sysresccd-custom estrazione
Se ora navighi all'interno di / mnt / custom / customcd, vedrai diverse cartelle. In / mnt / custom / customcd / files viene trovato il filesystem di root. Ora è il momento di eseguire il chroot del futuro nuovo sistema. Qui metto i comandi, per maggiori informazioni su chroot puoi vedere questo tutorial l'ho scritto un mese fa
% mount -o bind / proc / mnt / custom / customcd / files / proc% mount -o bind / dev / mnt / custom / customcd / files / dev% mount -o bind / sys / mnt / custom / customcd / files / sys% chroot / mnt / custom / customcd / files / bin / bash # gcc-config $ (gcc-config -c)
Siamo già nel sistema chroot, che sarà il sistema LiveCD una volta avviato. Installeremo i pacchetti mancanti (bison e texinfo) usando il comando emergere (chi gestisce il pacco di facchinaggio da gentoo).
Per prima cosa sincronizziamo il portage tree (l'equivalente di apt-get update)
# emerge-webrsync
NOTA: usiamo questo comando al posto di "emerge –sync" perché è più veloce, poiché scarica un pacchetto tar dal web. Questo passaggio è necessario, perché se non esegui l'emergenza, emergerà automaticamente –sync, rallentandolo.
Dopo aver sincronizzato il portage tree possiamo procedere all'installazione dei pacchetti:
# emerge sys-devel / bison # emerge sys-devel / texinfo
Lasciamo chroot:# exit
Smontiamo "/ proc" in modo che i nuovi pacchetti installati siano archiviati in squashfs. Smontiamo anche "/ dev" e "/ sys" in modo da non dimenticarli in seguito
% umount /mnt/custom/customcd/files/proc
% umount /mnt/custom/customcd/files/dev
% umount /mnt/custom/customcd/files/sys
Dato che abbiamo già preparato il nuovo file system squash, lo creiamo con il seguente comando
% /usr/sbin/sysresccd-custom squashfs
Se vogliamo aggiungere un file nell'immagine ISO ma vogliamo che sia fuori da squashfs, dobbiamo metterlo nella cartella «/ mnt / custom / customcd / isoroot»
% cp -a my-files /mnt/custom/customcd/isoroot
Il momento glorioso è arrivato, ora possiamo generare la nuova immagine ISO con il nostro sistema personalizzato!
% /usr/sbin/sysresccd-custom isogen my_srcd
"My_srcd" è il nome che diamo al volume, puoi chiamarlo come vuoi. L'immagine viene salvata in «/ mnt / custom / customcd / isofile», inoltre viene generato anche un file .md5 🙂
Se stai lavorando su un disco virtuale, resta il passaggio cruciale: estrai l'immagine ISO del sistema virtuale. Ci sono diversi modi per farlo, ne spiegherò uno semplice (in VirtualBox) per evitare di dover installare "guest additions" o qualcosa del genere.
Useremo il client per ottenere il file tramite un tunnel ssh. Per fare ciò, dobbiamo prima configurare il sistema guest con una password di root. Il server ssh si avvia automaticamente, lo riavviamo comunque per ogni evenienza.
% passwd
% /etc/init.d/sshd restart
Dobbiamo configurare il port forwarding della macchina virtuale. In VirtualBox è fatto come segue:
- Accedi alla configurazione della macchina virtuale
- Nella sezione di rete hai già configurato un adattatore in NAT
- Cerca l'opzione di port forwarding
- Aggiungi una nuova regola, con gli unici parametri "porta host" e "porta ospite"
- host = 3022 e guest = 22
Con questo abbiamo ottenuto che la porta 3022 del nostro PC sia la 22 della macchina virtuale. Avviamo il client Filezilla:
- Nel parametro server scriviamo: sftp: // localhost
- Nel parametro username scriviamo: root
- Nel parametro password mettiamo quello che usiamo in «passwd»
- Nel parametro port scriviamo: 3022
- Fare clic su «Connessione rapida»
Se tutto è andato bene, a sinistra possiamo navigare sul nostro PC ea destra nella macchina virtuale. Basta accedere (nella macchina virtuale) alla cartella «/ mnt / custom / customcd / isofile» e trascinare l'immagine ISO nella posizione che vogliamo sul nostro PC.
!! Congratulazioni !! Se tutto è andato bene, hai la tua immagine ISO pronta con un SystemRescueCD personalizzato e pronta per l'avvio da un CD, USB ...
Che buona guida, un po 'complicata ma molto utile.
Buon contributo.
Poi con un po 'più di tempo, e senza tanto fastidio agli occhi, lo leggerò a fondo. Sembra molto utile e interessante.
Ciao woqer, ottimo post!
Sono stato con LFS da alcuni anni e ho creato il mio iso che può servirti, ha tutto il necessario per compilare poiché è un LFS. 😀 Spero che ti sia utile
http://vegnux.org.ve/files/isos/neonatox-06.2rc6.linux-i686-xfce4.iso