Repository 32bit  Forum
Repository 64bit  Wiki

Installare Slackware a caldo: differenze tra le versioni

Da Slacky.eu.
(Nuova pagina: == Introduzione == Più di una volta mi è capitato di dover installare Slackware su una macchina che: * non posso spengere * non ha nè monitor nè tastiera nè cdrom nè floppy ma...)
 
(Aggiornato a Slackware 12.1, spostato il Download in appendice e corretti alcuni bug)
 
(3 revisioni intermedie di 2 utenti non mostrate)
Riga 1: Riga 1:
  +
[[Category:Install_e_Upgrade]]
== Introduzione ==
== Introduzione ==
Riga 4: Riga 5:
* non posso spengere
* non posso spengere
  +
* non fa il boot da cd, floppy, usb
* non ha nè monitor nè tastiera nè cdrom nè floppy ma solo il cavo di rete
* non ha nè monitor nè tastiera nè cdrom nè floppy ma solo il cavo di rete
  +
* non sei vicino al pc (è un server e tu sei a chilometri di distanza)
  +
* in aggiunta non abbiamo una seconda partizione/disco sul sistema (oltre alla swap)
* varie ed eventuali
* varie ed eventuali
Riga 15: Riga 19:
Quando si fa il boot da cd, viene caricato in ram un piccolo filesystem (initrd) che contiene il minimo indispensabile per caricare il setup.
Quando si fa il boot da cd, viene caricato in ram un piccolo filesystem (initrd) che contiene il minimo indispensabile per caricare il setup.
Noi scaricheremo quel filesystem e lo scompatteremo in una sottodirectory principale e lo sfrutteremo in ambiente '''chroot'''. Un ambiente chrootato ci consentirà di trasformare, per una sessione, la directory il fs che abbiamo scompattato in una root directory, avendo così l'impressione di avere davanti il sistema avviato da cd.
+
Noi scaricheremo quel filesystem e lo scompatteremo in una sottodirectory della root e lo sfrutteremo in ambiente '''chroot'''.<BR>
  +
Un ambiente chrootato ci consentirà di trasformare, per una sessione, tale sottodirectory nel quale abbiamo scompattato l'initrd, in una root directory, avendo così l'impressione di avere davanti il sistema avviato da cd.
Quì tratteremo l'installazione di una slackware current, ma la stessa procedura è valida per una slackware 12. Per la 12.1 e successive dipenderà tutto da quante modifiche sostanziali verranno fatte alla distribuzione.
+
Quì tratteremo l'installazione di una slackware 12.1, ma la stessa procedura è valida per la -current, o almeno resterà valida fintanto che l'installer non subirà modifiche sostanziali alla sua struttura.
== Preparare la miniroot ==
+
Non è necessario che la distribuzione padre sia una Slackware... questo tutorial l'ho scritto mentre avevo running una SuSE 10.3
E' chiaro, come dicevo, che avremo l'IMPRESSIONE di stare davanti ad un sistema avviato da cd, ma non ci siamo in realtà . Proprio per questo dovremo fare alcune operazioni che non faremmo se facessimo partire una installazione classica.
+
== Prerequisiti ==
Cominciamo con il simulare il boot.
+
Prima di cominciare dovremo assicurarci che abbiamo running un kernel 2.6.16, in quanto le librerie della 12.1 sono compilate per NON supportare un kernel inferiore. In caso contrario procediamo quindi ad aggiornare il kernel della nostra distribuzione prima di procedere.
Scarichiamo e scompattiamo la miniroot.
+
Per effettuare questa installazione dovremo chiaramente avere il dvd di slackware o la iso del dvd o tutti i file scaricati (è sufficiente la slackware/ e la isolinux/initrd.img). Ognuno ha il suo modo di scaricare slackware.. ognuno utilizzi il suo preferito. In Appendice ne scrivo uno.
Consiglio di scaricarla da un mirror. Nella variabile SOURCE settate il vostro preferito.
+
Indipendentemente dal metodo, al termine, i nostri file dovranno trovarsi sotto /SLACK/INSTALL, quindi diamo un
  +
# mkdir -p /SLACK/INSTALL
  +
poi se li scarichiamo li mettiamo quì dentro, se invece abbiamo un dvd diamo:
  +
# mount /dev/cdrom /SLACK/INSTALL
  +
se abbiamo una iso:
  +
# mount -o loop slackware-12.1-install-dvd.iso /SLACK/INSTALL
# mkdir -p /SLACK ; cd /SLACK
 
# SOURCE=ftp://ftp.slackware.com/pub/slackware/slackware-current/
 
# wget $SOURCE/isolinux/initrd.img
 
# mv initrd.img initrd.img.gz
 
# gzip -d initrd.img.gz
 
# file initrd.img
 
initrd.img: ASCII cpio archive (SVR4 with no CRC)
 
# cpio -i < initrd.img
 
# ls
 
bin/ cdrom@ etc/ init@ lib/ mnt/ proc/ sbin/ sys/ tmp/ var/
 
boot@ dev/ floppy/ initrd.img lost+found/ nfs@ root/ scripts/ tag/ usr/
 
== Il download ==
+
== Preparare la miniroot ==
Scarichiamo la distribuzione. Quì userò wget, ma ognuno può usare quello che vuole. Non scaricherò il KDEI. A posteriori installerò quello che mi serve.
 
# rm cdrom ; mkdir cdrom ; cd cdrom/
+
E' chiaro, come dicevo, che avremo l'IMPRESSIONE di stare davanti ad un sistema avviato da cd, ma non ci siamo in realtà. Proprio per questo dovremo fare alcune operazioni che non faremmo se facessimo partire una installazione classica.
# wget $SOURCE/FILELIST.TXT
+
# wget $SOURCE/CHECKSUMS.md5
+
Cominciamo con il simulare il boot.
# cat FILELIST.TXT |grep slackware/|grep -v kdei/|sed 's|.*/slackware/||'|grep /|sed "s|^|$SOURCE/slackware/|" >urls
+
# wget -nH -x -i urls
+
Scompattiamo la miniroot.
# cd /SLACK/DOWNLOAD/cdrom/pub/Slackware_Mirror/slackware-current
+
# mkdir -p /SLACK/INSTALL ; cd /SLACK
# md5sum -c /SLACK/cdrom/CHECKSUMS.md5 2>/dev/null|grep /slackware/|grep -v OK$|more
+
# gzip -cd /SLACK/INSTALL/isolinux/initrd.img|cpio -i
# mv slackware/ /SLACK/cdrom
+
66656 blocks
  +
# ls
  +
INSTALL/ cdrom@ floppy/ lost+found/ proc/ scripts/ tmp/
  +
bin/ dev/ init@ mnt/ root/ sys/ usr/
  +
boot@ etc/ lib/ nfs@ sbin/ tag/ var/
Se volete utilizzare il dvd di slackware anzichè scaricare la current:
 
# mkdir -p /SLACK/cdrom ; cd /SLACK
 
# mount /dev/cdrom /SLACK/cdrom
 
# gzip -cd /SLACK/cdrom/isolinux/initrd.img|cpio -i
 
== Il "BOOT" ==
== Il "BOOT" ==
Riga 67: Riga 56:
/
/
$ ls
$ ls
bin/ cdrom/ etc/ init@ lib/ mnt/ proc/ sbin/ sys/ tmp/ var/
+
INSTALL boot dev floppy lib mnt proc sbin sys tmp var
boot@ dev/ floppy/ initrd.img lost+found/ nfs@ root/ scripts/ tag/ usr/
+
bin cdrom etc init lost+found nfs root scripts tag usr
  +
Per distinguere quando sono in ambiente chroot e quando sono in quello della macchina reale, utilizzerà il prompt "$" per il primo e "#" per il secondo.
Per distinguere quando sono in ambiente chroot e quando sono in quello della macchina reale, utilizzerà il prompt "$" per il primo e "#" per il secondo.
Riga 76: Riga 65:
$ . /etc/profile
$ . /etc/profile
In caso si debba reiniziare, si consiglia di ricancellare tutto all'infuori del file initrd.img e della directory cdrom per reinizializzare tutto l'ambiente allo stato originale
+
In caso si debba reiniziare, si consiglia di ricancellare tutto all'infuori della directory INSTALL per reinizializzare tutto l'ambiente allo stato originale
$ umount /proc
$ umount /proc
$ exit
$ exit
# cd /SLACK
# cd /SLACK
# rm -r bin etc init lib mnt proc sbin sys tmp var boot dev floppy lost+found/ nfs root scripts tag usr
+
# rm -r [a-z]*
# ls
# ls
cdrom initrd.img
+
INSTALL
# cpio -i < initrd.img
+
# gzip -cd /SLACK/INSTALL/isolinux/initrd.img|cpio -i
# cd /
# cd /
# chroot /SLACK /bin/sh
# chroot /SLACK /bin/sh
$ mount -t proc proc /proc
$ mount -t proc proc /proc
$ . /etc/profile
$ . /etc/profile
  +
  +
Per aprire una seconda shell in chroot non è necessario rieffettuare il mount della proc
  +
# cd /
  +
# chroot /SLACK /bin/sh
  +
$ . /etc/profile
  +
  +
così come non si deve smontare la proc uscendo dall'ambiente chroot se non alla chiusura dell'ultima sessione.
  +
$ exit
== L'installazione ==
== L'installazione ==
A questo punto l'inizializzazione è completata e siamo pronti per far partire l'installazione.
A questo punto l'inizializzazione è completata e siamo pronti per far partire l'installazione.
Come al solito, lanciamo il comando
+
Come una installazione standard, lanciamo il comando
$ setup
$ setup
Riga 100: Riga 97:
Procediamo con KEYMAP e SWAP.
Procediamo con KEYMAP e SWAP.
A seconda dei casi potrebbe comparire la schermata di scelta TARGET. In tal caso scegliamo CONTINUE senza scegliere alcuna partizione. Se invece non compare, saltiamo il passaggio.
A seconda dei casi potrebbe comparire la schermata di scelta TARGET. In tal caso scegliamo CONTINUE senza scegliere alcuna partizione. Se invece non compare, saltiamo il passaggio.
In entrambi i casi, prendiamo un'altra shell, diamo il chroot e il . /etc/profile (NON diamo il mount), e digitiamo:
+
In entrambi i casi, prendiamo un'altra shell e digitiamo:
$ touch /tmp/SeTnative
+
# touch /SLACK/tmp/SeTnative
cioè facciamo credere che abbiamo scelto e montato la partizione.
cioè facciamo credere che abbiamo scelto e montato la partizione.
Il setup installerà slackware in /mnt (ovvero /SLACK/mnt)
+
Il setup installerà slackware in /mnt (ovvero /SLACK/mnt)
Quindi andiamo avanti con SOURCE, scegliamo 5 (Install from a premounted directory) ed inseriamo /cdrom/slackware.
Quindi andiamo avanti con SOURCE, scegliamo 5 (Install from a premounted directory) ed inseriamo /cdrom/slackware.
Da quì andiamo avanti come in una installazione classica.
Da quì andiamo avanti come in una installazione classica.
Riga 111: Riga 108:
L'installazione è completa, ma dobbiamo fare ancora qualche passo che il setup non ha potuto fare.
L'installazione è completa, ma dobbiamo fare ancora qualche passo che il setup non ha potuto fare.
Possiamo uscire dal chroot dell'installer con un exit.
+
Possiamo uscire dal chroot dell'installer:
  +
  +
$ umount /proc
  +
$ exit
dovremo aggiungere la root-partition (che NON abbiamo scelto in fase di installazione) nella fstab e dobbiamo costruire il lilo.conf
dovremo aggiungere la root-partition (che NON abbiamo scelto in fase di installazione) nella fstab e dobbiamo costruire il lilo.conf
attenzione anche alla swap; molte distribuzioni vedono il disco come sda anzichè hda; nel mio caso quindi io mi ritrovo con la swap configurata in sda1 mentre slackware la vedrà come hda1.
+
attenzione anche alla swap; molte distribuzioni vedono il disco come sda anzichè hda; nel mio caso, quindi, io mi ritrovo con la swap configurata in sda1 mentre slackware la vedrà come hda1.
# vi /SLACK/mnt/etc/fstab
# vi /SLACK/mnt/etc/fstab
Riga 121: Riga 118:
# vi /SLACK/etc/lilo.conf
# vi /SLACK/etc/lilo.conf
lba32
 
boot = /dev/sda
boot = /dev/sda
prompt
prompt
Riga 128: Riga 124:
reset
reset
vga = 791
vga = 791
image = /boot/vmlinuz-huge-smp-2.6.23.16-smp
+
image = /boot/vmlinuz-huge-smp-2.6.24.5-smp
append="root=/dev/hda2"
append="root=/dev/hda2"
label = Linux
label = Linux
read-only
read-only
per ora dovremo utilizzare il kernel huge; dopo il reboot ognuno sceglierà se usare l'huge o il generic.
+
per ora dovremo utilizzare il kernel huge; dopo il reboot ognuno sceglierà se continuare ad usare l'huge o il generic.
Notare la riga boot=/dev/sda !!! non è un errore. La mia distribuzione, come tante altre recenti, vedono tutti i dischi come scsi, compresi quelli ide. In boot= dobbiamo metterci quello che vede al momento il sistema. Se il sistema invece la vede come hda, allora mettiamoci hda. Mentre per root= va messo come lo vede slackware, però va messo dentro un 'append=' altrimente non lo accetta.
+
'''Notare la riga boot=/dev/sda !!!''' non è un errore. La mia distribuzione, come tante altre recenti, vedono tutti i dischi come scsi, compresi quelli ide. In boot= dobbiamo metterci quello che vede al momento il sistema. Se il sistema invece la vede come hda, allora mettiamoci hda. Mentre per root= va messo come lo vede slackware, però va messo dentro un 'append=' altrimente non lo accetta.
== Preparazione allo scambio di distribuzione ==
== Preparazione allo scambio di distribuzione ==
Assicuriamoci di avere almeno il kernel 2.6.16, altrimenti avrete problemi durante l'installazione del bootloader e dovrete fare il boot da cd, il che vanificherebbe tutti gli sforzi.
+
Come già specificato sopra, assicuriamoci di avere almeno il kernel 2.6.16 running, altrimenti avrete problemi durante l'installazione del bootloader e dovrete fare il boot da cd, il che vanificherebbe tutti gli sforzi.
Siamo arrivati al punto più critico, cioè lo scambio di distribuzione.
Siamo arrivati al punto più critico, cioè lo scambio di distribuzione.
Dovremo spostare tutte le directory dell'attuale rootfs in una directory di appoggio, e poi tutte quelle di slackware.
+
Dovremo spostare tutte le directory dell'attuale rootfs in una directory di appoggio, e poi tutte quelle di slackware al rootfs principale.
Questa operazione ci conviene farla loggati come root. Molto probabilmente finora avete fatto queste operazioni in console grafica oppure connessi in ssh come utente e poi avete dato un su - .
+
Questa operazione ci conviene farla loggati come root. Molto probabilmente finora avete fatto queste operazioni in console grafica oppure connessi in ssh come utente e poi avete dato un su -
Nel primo caso è sufficiente dare un 'init 3' per tornare in modalità testo.
Nel primo caso è sufficiente dare un 'init 3' per tornare in modalità testo.
Nel secondo caso dobbiamo assicurarci di potersi loggare da remoto in ssh. Editiamo il file /etc/ssh/sshd_config e assicuriamoci che ci sia la riga
Nel secondo caso dobbiamo assicurarci di potersi loggare da remoto in ssh. Editiamo il file /etc/ssh/sshd_config e assicuriamoci che ci sia la riga
Riga 153: Riga 149:
ora slogghiamoci e rientriamo come root
ora slogghiamoci e rientriamo come root
Dovremo anche assicurarci che al reboot, con la slackware, possiamo rientrare come root. Con la slackware è così di default, ma una controllata non fa male. Assicuriamoci quindi che sia presente "PermitRootLogin yes" (anche commentata) in /SLACK/mnt/etc/ssh/sshd_config e che /SLACK/mnt/etc/rc.d/rc.sshd sia eseguibile.
+
Dovremo anche assicurarci che al reboot, con la slackware, possiamo rientrare come root. Con la slackware è così di default, ma una controllata non fa male. Assicuriamoci quindi che sia presente "PermitRootLogin yes" (anche commentata va bene) in /SLACK/mnt/etc/ssh/sshd_config e che /SLACK/mnt/etc/rc.d/rc.sshd sia eseguibile.
E' consigliabile, in entrambi i casi, di stoppare più applicazioni possibili (ssh escluso), perchè lentamente, durante lo scambio, comincerà a non funzionare più niente.
E' consigliabile, in entrambi i casi, di stoppare più applicazioni possibili (ssh escluso), perchè lentamente, durante lo scambio, comincerà a non funzionare più niente.
Io per esperimento non fermerò nessuna applicazione né chiuderò l'interfaccia grafica, ma tale procedura non è consigliabile.
+
Io per esperimento (riuscito) non ho fermato nessuna applicazione né chiuso l'interfaccia grafica, ma tale procedura non è consigliabile.
Riga 165: Riga 161:
Rientriamo in chroot nell'installer.
Rientriamo in chroot nell'installer.
  +
# cd /
# chroot /SLACK /bin/sh
# chroot /SLACK /bin/sh
$ . /etc/profile
$ . /etc/profile
notare che non abbiamo bisogno di rimontare la proc perchè l'abbiamo già fatto prima
+
notare che non abbiamo bisogno di rimontare la proc perchè l'abbiamo già fatto prima.
da dentro il chroot possiamo vedere la nuova installazione ma non possiamo vedere quella originale, quindi dobbiamo montare l'attuale rootpartition in una nuova directory. Anche se tale partizione è già montata, il sistema ci consentirà di rimontarla.
+
Da dentro il chroot possiamo vedere la nuova installazione ma non possiamo vedere quella originale, quindi dobbiamo montare l'attuale rootpartition in una nuova directory. Anche se tale partizione è già montata, il sistema ci consentirà di rimontarla.
$ mkdir /NEW
$ mkdir /NEW
$ mount /dev/sda2 /NEW
$ mount /dev/sda2 /NEW
a questo punto dentro /NEW rivediamo tutto il disco, come se fossimo fuori del chroot. In particolare troviamo anche la directory /NEW/SLACK/mnt, nella quale abbiamo installato la nostra slackware.
+
a questo punto dentro /NEW rivediamo tutto il disco, come se fossimo fuori del chroot, ad eccezione del fatto che la /proc, la /sys e la /dev non risultano montate.<br>
  +
In particolare troviamo anche la directory /NEW/SLACK/mnt, nella quale abbiamo installato la nostra slackware.
creiamo ora una directory dove spostare la vecchia distribuzione.
creiamo ora una directory dove spostare la vecchia distribuzione.
Riga 185: Riga 182:
cominciamo con i binari
cominciamo con i binari
$ cd /NEW
$ cd /NEW
/NEW $ mv bin VECCHIA/
+
/NEW $ mv bin VECCHIA ; mv SLACK/mnt/bin .
/NEW $ mv SLACK/mnt/bin .
 
molto probabilmente non funzionerà più la distribuzione padre. Quella chrootata funzionerà perchè ha librerie sue.
+
molto probabilmente non funzionerà più la distribuzione padre, in parte. Quella chrootata funzionerà perchè ha librerie sue.
ora spostiamo le librerie.
ora spostiamo le librerie.
/NEW $ mv lib VECCHIA/
+
/NEW $ mv lib VECCHIA ; mv SLACK/mnt/lib .
/NEW $ mv SLACK/mnt/lib .
 
Se vi capita di incartarvi perchè avete sbagliato il trasporto delle librerie, potete dare
Se vi capita di incartarvi perchè avete sbagliato il trasporto delle librerie, potete dare
Riga 198: Riga 195:
andiamo con lo spostamento gli altri binari.
andiamo con lo spostamento gli altri binari.
/NEW $ mv usr/ VECCHIA/
+
/NEW $ mv usr VECCHIA ; mv SLACK/mnt/usr .
/NEW $ mv SLACK/mnt/usr .
+
/NEW $ mv sbin VECCHIA ; mv SLACK/mnt/sbin .
/NEW $ mv sbin/ VECCHIA/
+
/NEW $ mv opt VECCHIA ; mv SLACK/mnt/opt .
/NEW $ mv SLACK/mnt/sbin/ .
 
/NEW $ mv opt/ VECCHIA/
 
/NEW $ mv SLACK/mnt/opt/ .
 
ora spostiamo la /var; questa directory contiene i log e i dati di molti servizi, quindi qualcuno di questi non funzioneranno correttamente. compreso il sistema di login.
ora spostiamo la /var; questa directory contiene i log e i dati di molti servizi, quindi qualcuno di questi non funzioneranno correttamente. compreso il sistema di login.
  +
/NEW $ mv var VECCHIA ; mv SLACK/mnt/var .
le home utente e root
le home utente e root
/NEW $ mv root/ VECCHIA/
+
/NEW $ mv root VECCHIA ; mv SLACK/mnt/root .
/NEW $ mv SLACK/mnt/root/ .
+
/NEW $ mv home VECCHIA ; mv SLACK/mnt/home .
/NEW $ mv home/ VECCHIA/
 
/NEW $ mv SLACK/mnt/home/ .
 
procediamo con altre ultime directory "standard":
procediamo con altre ultime directory "standard":
/NEW $ mv boot/ VECCHIA/
+
/NEW $ mv boot VECCHIA ; mv SLACK/mnt/boot .
/NEW $ mv SLACK/mnt/boot/ .
+
/NEW $ mv etc VECCHIA ; mv SLACK/mnt/etc .
/NEW $ mv etc/ VECCHIA/
+
/NEW $ mv tmp VECCHIA ; mv SLACK/mnt/tmp .
/NEW $ mv SLACK/mnt/etc/ .
+
/NEW $ mv mnt VECCHIA ; mv SLACK/mnt/mnt .
/NEW $ mv tmp/ VECCHIA/
+
/NEW $ mv media VECCHIA ; mv SLACK/mnt/media .
/NEW $ mv SLACK/mnt/tmp/ .
+
/NEW $ mv srv VECCHIA ; mv SLACK/mnt/srv .
/NEW $ mv mnt/ VECCHIA/
 
/NEW $ mv SLACK/mnt/mnt/ .
 
/NEW $ mv media/ VECCHIA/
 
/NEW $ mv SLACK/mnt/media/ .
 
/NEW $ mv srv/ VECCHIA/
 
/NEW $ mv SLACK/mnt/srv/ .
 
sono rimaste solo le directory speciali. Queste non le possiamo togliere come le altre perchè sono mount point e sono in uso.
sono rimaste solo le directory speciali. Queste non le possiamo togliere come le altre perchè sono mount point e sono in uso.
/NEW $ ls SLACK/mnt/
+
/NEW $ ls SLACK/mnt
README dev/ proc/ sys/
+
README dev/ proc/ sys/ lost+found/
la sys e la proc sono vuote quindi possiamo lasciarla dov'è. La proc già esiste nella distribuzione padre, mentre non è scontato che ci sia la sys. In tal caso la possiamo spostare.
+
la sys e la proc sono vuote quindi possiamo lasciarle dove sono. La proc già esiste nella distribuzione padre, mentre non è scontato che ci sia la sys. In tal caso la possiamo spostare.
/NEW $ mv SLACK/sys/ .
+
/NEW $ mv SLACK/sys .
la dev invece non è vuota e non possiamo spostarla come tutte le altre. Dovremo spostare solamente il contenuto.
la dev invece non è vuota e non possiamo spostarla come tutte le altre. Dovremo spostare solamente il contenuto.
/NEW $ mkdir VECCHIA/dev
/NEW $ mkdir VECCHIA/dev
Riga 227: Riga 225:
controllare che non siano rimasti file nascosti
controllare che non siano rimasti file nascosti
/NEW $ ls -a dev
/NEW $ ls -a dev
nel caso spostare anche quelli, poi portiamo quelli di slack
+
nel caso spostare anche quelli, poi portiamo quelli della nuova Slackware
/NEW $ mv SLACK/mnt/dev/* dev/
/NEW $ mv SLACK/mnt/dev/* dev/
e verifichiamo che pure in quella di slack non ci siano file nascosti
e verifichiamo che pure in quella di slack non ci siano file nascosti
Riga 242: Riga 240:
Se è andato tutto bene, allora diamolo senza il -t
Se è andato tutto bene, allora diamolo senza il -t
# lilo -v
# lilo -v
Boot image: /boot/vmlinuz-huge-smp-2.6.23.16-smp
+
Boot image: /boot/vmlinuz-huge-smp-2.6.24.5-smp
Added Linux *
Added Linux *
Riga 253: Riga 251:
Il mio consiglio è che se abbiamo accesso al pulsante "reset" del sistema (o ce l'ha qualcuno che possiamo chiamare per telefono) allora utiliziamo il comando
Il mio consiglio è che se abbiamo accesso al pulsante "reset" del sistema (o ce l'ha qualcuno che possiamo chiamare per telefono) allora utiliziamo il comando
# shutdown -r now
# shutdown -r now
Se abbiamo l'accesso solamente in ssh e non siamo vicini alla macchina, allora diamo
+
così se la macchina non dovesse fare lo shutdown corretto possiamo resettare brutalmente. Se invece abbiamo l'accesso solamente in ssh e non siamo vicini alla macchina, allora diamo
# sync
# sync
# sync
# sync
# reboot -f
# reboot -f
ovvero riavvia il sistema brutalmente senza fare la procedura di shutdown.
+
ovvero riavvia il sistema brutalmente senza fare la procedura di shutdown, effettuando solamente il sync dei dischi.
Riga 263: Riga 261:
Se è andato tutto a buon fine ora abbiamo la nostra nuova slackware perfettamente funzionante. L'ultima cosa che dobbiamo fare è quella di risistemare lilo per farlo puntare ad hda invece di sda:
Se è andato tutto a buon fine ora abbiamo la nostra nuova slackware perfettamente funzionante. L'ultima cosa che dobbiamo fare è quella di risistemare lilo per farlo puntare ad hda invece di sda:
# vi /SLACK/etc/lilo.conf
# vi /SLACK/etc/lilo.conf
lba32
 
boot = /dev/hda
boot = /dev/hda
prompt
+
[...]
timeout = 300
+
image = /boot/vmlinuz-huge-smp-2.6.24.5-smp
change-rules
 
reset
 
vga = 791
 
image = /boot/vmlinuz-huge-smp-2.6.23.16-smp
 
root=/dev/hda2
root=/dev/hda2
label = Linux
label = Linux
read-only
read-only
  +
se si desidera poi utilizzare il simpatico logo di slackware su lilo, allora possiamo aggiungere, in testa a lilo.conf, le righe
  +
bitmap = /boot/slack.bmp
  +
bmp-colors = 255,0,255,0,255,0
  +
bmp-table = 60,6,1,16
  +
bmp-timer = 65,27,0,255
  +
o lanciare liloconfig.
Per chi lo desidera questo è il momento di cambiare il kernel e mettere generic ricordandosi di creare l'initrd con i driver per l'ext3.
Per chi lo desidera questo è il momento di cambiare il kernel e mettere generic ricordandosi di creare l'initrd con i driver per l'ext3.
Da quì in poi potete continuare da soli.. ormai è una installazione in tutto e per tutto uguale alle altre.
Da quì in poi potete continuare da soli.. ormai è una installazione in tutto e per tutto uguale alle altre.
  +
  +
  +
  +
  +
== Appendici: scaricare slackware ==
  +
  +
Come accennavo sopra, in questo appendice presenterò uno dei tanti modi per scaricare slackware. L'utilità è soprattutto per una current.. per le -stable abbiamo già i dvd e ci è sufficiente copiarci quello sul disco.
  +
  +
Quì presenterò un metodo per scaricare la current.
  +
  +
Quì utilizzerò come sorgente slackware.com ma suggerisco vivamente di scaricarla da un mirror. Nella variabile SOURCE settate il vostro preferito.
  +
  +
# mkdir -p /SLACK/INSTALL ; cd /SLACK/INSTALL
  +
# SOURCE=ftp://ftp.slackware.com/pub/slackware/slackware-current/
  +
# wget $SOURCE/isolinux/initrd.img
  +
  +
Non scaricherò il KDEI. A posteriori preleverò solo quello che mi serve installerò quello che mi serve.
  +
  +
# rm cdrom ; mkdir cdrom ; cd cdrom/
  +
# wget $SOURCE/FILELIST.TXT
  +
# wget $SOURCE/CHECKSUMS.md5
  +
# cat FILELIST.TXT |grep slackware/|grep -v kdei/|sed 's|.*/slackware/||'|grep /|sed "s|^|$SOURCE/slackware/|" >urls
  +
# wget -nH -x -i urls
  +
# cd /SLACK/DOWNLOAD/INSTALL/pub/slackware/slackware-current
  +
# md5sum -c /SLACK/INSTALL/CHECKSUMS.md5 2>/dev/null|grep /slackware/|grep -v OK$|more
  +
# mv slackware/ /SLACK/INSTALL
  +
  +
  +
  +
[[Utente:Zerouno|Zerouno]] 22 Feb 2008

Versione attuale delle 17:09, 17 mag 2008

Indice

[modifica] Introduzione

Più di una volta mi è capitato di dover installare Slackware su una macchina che:

  • non posso spengere
  • non fa il boot da cd, floppy, usb
  • non ha nè monitor nè tastiera nè cdrom nè floppy ma solo il cavo di rete
  • non sei vicino al pc (è un server e tu sei a chilometri di distanza)
  • in aggiunta non abbiamo una seconda partizione/disco sul sistema (oltre alla swap)
  • varie ed eventuali

In questi casi sarebbe utile poter installare Slackware senza dover riavviare per fare il boot da cd.

[modifica] Preliminari

L'idea è quella di sfruttare la semplicità dell'installer di Slackware.

Quando si fa il boot da cd, viene caricato in ram un piccolo filesystem (initrd) che contiene il minimo indispensabile per caricare il setup.

Noi scaricheremo quel filesystem e lo scompatteremo in una sottodirectory della root e lo sfrutteremo in ambiente chroot.
Un ambiente chrootato ci consentirà di trasformare, per una sessione, tale sottodirectory nel quale abbiamo scompattato l'initrd, in una root directory, avendo così l'impressione di avere davanti il sistema avviato da cd.


Quì tratteremo l'installazione di una slackware 12.1, ma la stessa procedura è valida per la -current, o almeno resterà valida fintanto che l'installer non subirà modifiche sostanziali alla sua struttura.

Non è necessario che la distribuzione padre sia una Slackware... questo tutorial l'ho scritto mentre avevo running una SuSE 10.3

[modifica] Prerequisiti

Prima di cominciare dovremo assicurarci che abbiamo running un kernel 2.6.16, in quanto le librerie della 12.1 sono compilate per NON supportare un kernel inferiore. In caso contrario procediamo quindi ad aggiornare il kernel della nostra distribuzione prima di procedere.


Per effettuare questa installazione dovremo chiaramente avere il dvd di slackware o la iso del dvd o tutti i file scaricati (è sufficiente la slackware/ e la isolinux/initrd.img). Ognuno ha il suo modo di scaricare slackware.. ognuno utilizzi il suo preferito. In Appendice ne scrivo uno.

Indipendentemente dal metodo, al termine, i nostri file dovranno trovarsi sotto /SLACK/INSTALL, quindi diamo un

# mkdir -p /SLACK/INSTALL

poi se li scarichiamo li mettiamo quì dentro, se invece abbiamo un dvd diamo:

# mount /dev/cdrom /SLACK/INSTALL

se abbiamo una iso:

# mount -o loop slackware-12.1-install-dvd.iso /SLACK/INSTALL


[modifica] Preparare la miniroot

E' chiaro, come dicevo, che avremo l'IMPRESSIONE di stare davanti ad un sistema avviato da cd, ma non ci siamo in realtà. Proprio per questo dovremo fare alcune operazioni che non faremmo se facessimo partire una installazione classica.

Cominciamo con il simulare il boot.

Scompattiamo la miniroot.

# mkdir -p /SLACK/INSTALL ; cd /SLACK
# gzip -cd /SLACK/INSTALL/isolinux/initrd.img|cpio -i 
66656 blocks
# ls
INSTALL/  cdrom@  floppy/  lost+found/  proc/  scripts/  tmp/
bin/      dev/    init@    mnt/         root/  sys/      usr/
boot@     etc/    lib/     nfs@         sbin/  tag/      var/


[modifica] Il "BOOT"

A questo punto dobbiamo lavorare come se avessimo fatto il boot da cd. Per far questo utilizziamo il chroot.

# cd /
# chroot /SLACK /bin/sh
$ pwd
/
$ ls
INSTALL  boot   dev  floppy  lib         mnt  proc  sbin     sys  tmp  var
bin      cdrom  etc  init    lost+found  nfs  root  scripts  tag  usr


Per distinguere quando sono in ambiente chroot e quando sono in quello della macchina reale, utilizzerà il prompt "$" per il primo e "#" per il secondo. Montiamo il proc filesystem e carichiamo il profilo.

$ mount -t proc proc /proc
$ . /etc/profile

In caso si debba reiniziare, si consiglia di ricancellare tutto all'infuori della directory INSTALL per reinizializzare tutto l'ambiente allo stato originale

$ umount /proc
$ exit
# cd /SLACK
# rm -r [a-z]*
# ls
INSTALL
# gzip -cd /SLACK/INSTALL/isolinux/initrd.img|cpio -i
# cd /
# chroot /SLACK /bin/sh
$ mount -t proc proc /proc
$ . /etc/profile

Per aprire una seconda shell in chroot non è necessario rieffettuare il mount della proc

# cd /
# chroot /SLACK /bin/sh
$ . /etc/profile

così come non si deve smontare la proc uscendo dall'ambiente chroot se non alla chiusura dell'ultima sessione.

$ exit

[modifica] L'installazione

A questo punto l'inizializzazione è completata e siamo pronti per far partire l'installazione.

Come una installazione standard, lanciamo il comando

$ setup

Il sistema potrebbe mostrare il messaggio "NO LINUX PARTITIONS DETECTED"... ignoriamolo. Procediamo con KEYMAP e SWAP. A seconda dei casi potrebbe comparire la schermata di scelta TARGET. In tal caso scegliamo CONTINUE senza scegliere alcuna partizione. Se invece non compare, saltiamo il passaggio. In entrambi i casi, prendiamo un'altra shell e digitiamo:

# touch /SLACK/tmp/SeTnative

cioè facciamo credere che abbiamo scelto e montato la partizione. Il setup installerà slackware in /mnt (ovvero /SLACK/mnt) Quindi andiamo avanti con SOURCE, scegliamo 5 (Install from a premounted directory) ed inseriamo /cdrom/slackware. Da quì andiamo avanti come in una installazione classica. Un'attenzione particolare richiede LILO. Per ora saltiamolo. Lo configureremo a posteriori.

[modifica] Completamento installazione

L'installazione è completa, ma dobbiamo fare ancora qualche passo che il setup non ha potuto fare.

Possiamo uscire dal chroot dell'installer:

$ umount /proc
$ exit

dovremo aggiungere la root-partition (che NON abbiamo scelto in fase di installazione) nella fstab e dobbiamo costruire il lilo.conf attenzione anche alla swap; molte distribuzioni vedono il disco come sda anzichè hda; nel mio caso, quindi, io mi ritrovo con la swap configurata in sda1 mentre slackware la vedrà come hda1.

# vi /SLACK/mnt/etc/fstab
/dev/hda2        /                ext3        defaults         1   1
/dev/hda1        swap             swap        defaults         0   0
# vi /SLACK/etc/lilo.conf
boot = /dev/sda
prompt
timeout = 300
change-rules
reset
vga = 791
image = /boot/vmlinuz-huge-smp-2.6.24.5-smp
   append="root=/dev/hda2"
   label = Linux
   read-only

per ora dovremo utilizzare il kernel huge; dopo il reboot ognuno sceglierà se continuare ad usare l'huge o il generic. Notare la riga boot=/dev/sda !!! non è un errore. La mia distribuzione, come tante altre recenti, vedono tutti i dischi come scsi, compresi quelli ide. In boot= dobbiamo metterci quello che vede al momento il sistema. Se il sistema invece la vede come hda, allora mettiamoci hda. Mentre per root= va messo come lo vede slackware, però va messo dentro un 'append=' altrimente non lo accetta.

[modifica] Preparazione allo scambio di distribuzione

Come già specificato sopra, assicuriamoci di avere almeno il kernel 2.6.16 running, altrimenti avrete problemi durante l'installazione del bootloader e dovrete fare il boot da cd, il che vanificherebbe tutti gli sforzi.

Siamo arrivati al punto più critico, cioè lo scambio di distribuzione. Dovremo spostare tutte le directory dell'attuale rootfs in una directory di appoggio, e poi tutte quelle di slackware al rootfs principale.

Questa operazione ci conviene farla loggati come root. Molto probabilmente finora avete fatto queste operazioni in console grafica oppure connessi in ssh come utente e poi avete dato un su - Nel primo caso è sufficiente dare un 'init 3' per tornare in modalità testo. Nel secondo caso dobbiamo assicurarci di potersi loggare da remoto in ssh. Editiamo il file /etc/ssh/sshd_config e assicuriamoci che ci sia la riga

PermitRootLogin yes

e poi, a seconda della distribuzione, diamo uno dei seguenti comandi:

/etc/init.d/sshd reload
/etc/init.d/ssh reload
/etc/rc.d/rc.sshd restart

ora slogghiamoci e rientriamo come root

Dovremo anche assicurarci che al reboot, con la slackware, possiamo rientrare come root. Con la slackware è così di default, ma una controllata non fa male. Assicuriamoci quindi che sia presente "PermitRootLogin yes" (anche commentata va bene) in /SLACK/mnt/etc/ssh/sshd_config e che /SLACK/mnt/etc/rc.d/rc.sshd sia eseguibile.

E' consigliabile, in entrambi i casi, di stoppare più applicazioni possibili (ssh escluso), perchè lentamente, durante lo scambio, comincerà a non funzionare più niente.

Io per esperimento (riuscito) non ho fermato nessuna applicazione né chiuso l'interfaccia grafica, ma tale procedura non è consigliabile.


[modifica] Lo scambio effettivo

Ora che è tutto pronto possiamo procedere con lo scambio. Sia che stiamo in ssh, sia che stiamo in console, apriamo più shell possibili e custodiamole gelosamente e chrootiamole, perchè né durante né dopo lo scambio potremo aprirne farlo.

Rientriamo in chroot nell'installer.

# cd /
# chroot /SLACK /bin/sh
$ . /etc/profile

notare che non abbiamo bisogno di rimontare la proc perchè l'abbiamo già fatto prima.


Da dentro il chroot possiamo vedere la nuova installazione ma non possiamo vedere quella originale, quindi dobbiamo montare l'attuale rootpartition in una nuova directory. Anche se tale partizione è già montata, il sistema ci consentirà di rimontarla.

$ mkdir /NEW
$ mount /dev/sda2 /NEW


a questo punto dentro /NEW rivediamo tutto il disco, come se fossimo fuori del chroot, ad eccezione del fatto che la /proc, la /sys e la /dev non risultano montate.
In particolare troviamo anche la directory /NEW/SLACK/mnt, nella quale abbiamo installato la nostra slackware.

creiamo ora una directory dove spostare la vecchia distribuzione.

$ mkdir /NEW/VECCHIA

Sposteremo la directory un po' per volta; se siamo fortunati potremmo avere poche complicazioni; se siamo ancora più fortunati potremo cominciare a lavorare con la nostra slackware senza nemmeno dover rebootare. Questo potrebbe succedere in caso la nostra distribuzione sia sufficientemente aggiornata. Io sto utilizzando SuSE 10.3 aggiornata a pochi giorni fa, quindi le librerie sono sufficientemente nuove.

cominciamo con i binari

$ cd /NEW
/NEW $ mv bin VECCHIA ; mv SLACK/mnt/bin .

molto probabilmente non funzionerà più la distribuzione padre, in parte. Quella chrootata funzionerà perchè ha librerie sue.

ora spostiamo le librerie.

/NEW $ mv lib VECCHIA ; mv SLACK/mnt/lib .

Se vi capita di incartarvi perchè avete sbagliato il trasporto delle librerie, potete dare

/NEW $ ldconfig <posizione dove avete messo le librerie>

c'è una probabilità che il sistema ora abbia ripreso a funzionare quasi del tutto, e che non avrete più grossi problemi. In teoria ora potremmo spostare le altre directory fuori del chroot, ma io eviterei.

andiamo con lo spostamento gli altri binari.

/NEW $ mv usr  VECCHIA   ; mv SLACK/mnt/usr  .
/NEW $ mv sbin VECCHIA   ; mv SLACK/mnt/sbin .
/NEW $ mv opt  VECCHIA   ; mv SLACK/mnt/opt  .

ora spostiamo la /var; questa directory contiene i log e i dati di molti servizi, quindi qualcuno di questi non funzioneranno correttamente. compreso il sistema di login.

/NEW $ mv var VECCHIA ; mv SLACK/mnt/var .

le home utente e root

/NEW $ mv root VECCHIA ; mv SLACK/mnt/root .
/NEW $ mv home VECCHIA ; mv SLACK/mnt/home .

procediamo con altre ultime directory "standard":

/NEW $ mv boot  VECCHIA ; mv SLACK/mnt/boot  .
/NEW $ mv etc   VECCHIA ; mv SLACK/mnt/etc   .
/NEW $ mv tmp   VECCHIA ; mv SLACK/mnt/tmp   .
/NEW $ mv mnt   VECCHIA ; mv SLACK/mnt/mnt   .
/NEW $ mv media VECCHIA ; mv SLACK/mnt/media .
/NEW $ mv srv   VECCHIA ; mv SLACK/mnt/srv   .

sono rimaste solo le directory speciali. Queste non le possiamo togliere come le altre perchè sono mount point e sono in uso.

/NEW $ ls SLACK/mnt
README  dev/  proc/  sys/  lost+found/

la sys e la proc sono vuote quindi possiamo lasciarle dove sono. La proc già esiste nella distribuzione padre, mentre non è scontato che ci sia la sys. In tal caso la possiamo spostare.

/NEW $ mv SLACK/sys .

la dev invece non è vuota e non possiamo spostarla come tutte le altre. Dovremo spostare solamente il contenuto.

/NEW $ mkdir VECCHIA/dev
/NEW $ mv dev/* VECCHIA/dev/

controllare che non siano rimasti file nascosti

/NEW $ ls -a dev

nel caso spostare anche quelli, poi portiamo quelli della nuova Slackware

/NEW $ mv SLACK/mnt/dev/* dev/

e verifichiamo che pure in quella di slack non ci siano file nascosti

/NEW $ ls -a SLACK/mnt/dev/


[modifica] Il boot loader

L'ultima cosa che resta da fare è quella di lanciare il comando lilo. Possiamo lavorare fuori del chroot. Diamo prima

# lilo -v -t

per vedere come va. Se è andato tutto bene, allora diamolo senza il -t

# lilo -v
Boot image: /boot/vmlinuz-huge-smp-2.6.24.5-smp
Added Linux *

Writing boot sector.


[modifica] Il reboot

Siamo pronti per riavviare. In questo momento il sistema è un po' "confuso", in quanto si aspetta cose che non ci sono, per cui il comando 'reboot' potrebbe non funzionare. Il mio consiglio è che se abbiamo accesso al pulsante "reset" del sistema (o ce l'ha qualcuno che possiamo chiamare per telefono) allora utiliziamo il comando

# shutdown -r now

così se la macchina non dovesse fare lo shutdown corretto possiamo resettare brutalmente. Se invece abbiamo l'accesso solamente in ssh e non siamo vicini alla macchina, allora diamo

# sync
# sync
# reboot -f

ovvero riavvia il sistema brutalmente senza fare la procedura di shutdown, effettuando solamente il sync dei dischi.


[modifica] Riavvio

Se è andato tutto a buon fine ora abbiamo la nostra nuova slackware perfettamente funzionante. L'ultima cosa che dobbiamo fare è quella di risistemare lilo per farlo puntare ad hda invece di sda:

# vi /SLACK/etc/lilo.conf
boot = /dev/hda
[...]
image = /boot/vmlinuz-huge-smp-2.6.24.5-smp
   root=/dev/hda2
   label = Linux
   read-only

se si desidera poi utilizzare il simpatico logo di slackware su lilo, allora possiamo aggiungere, in testa a lilo.conf, le righe

bitmap = /boot/slack.bmp
bmp-colors = 255,0,255,0,255,0
bmp-table = 60,6,1,16
bmp-timer = 65,27,0,255

o lanciare liloconfig.

Per chi lo desidera questo è il momento di cambiare il kernel e mettere generic ricordandosi di creare l'initrd con i driver per l'ext3.

Da quì in poi potete continuare da soli.. ormai è una installazione in tutto e per tutto uguale alle altre.



[modifica] Appendici: scaricare slackware

Come accennavo sopra, in questo appendice presenterò uno dei tanti modi per scaricare slackware. L'utilità è soprattutto per una current.. per le -stable abbiamo già i dvd e ci è sufficiente copiarci quello sul disco.

Quì presenterò un metodo per scaricare la current.

Quì utilizzerò come sorgente slackware.com ma suggerisco vivamente di scaricarla da un mirror. Nella variabile SOURCE settate il vostro preferito.

# mkdir -p /SLACK/INSTALL ; cd /SLACK/INSTALL
# SOURCE=ftp://ftp.slackware.com/pub/slackware/slackware-current/
# wget $SOURCE/isolinux/initrd.img

Non scaricherò il KDEI. A posteriori preleverò solo quello che mi serve installerò quello che mi serve.

# rm cdrom ; mkdir cdrom ; cd cdrom/
# wget $SOURCE/FILELIST.TXT
# wget $SOURCE/CHECKSUMS.md5
# cat FILELIST.TXT |grep slackware/|grep -v kdei/|sed 's|.*/slackware/||'|grep /|sed "s|^|$SOURCE/slackware/|" >urls
# wget -nH -x -i urls
# cd /SLACK/DOWNLOAD/INSTALL/pub/slackware/slackware-current
# md5sum -c /SLACK/INSTALL/CHECKSUMS.md5 2>/dev/null|grep /slackware/|grep -v OK$|more
# mv slackware/ /SLACK/INSTALL


Zerouno 22 Feb 2008

Strumenti personali
Namespace

Varianti