Repository 32bit  Forum
Repository 64bit  Wiki

Installare Slackware a caldo: differenze tra le versioni

Da Slacky.eu.
m
Riga 212: Riga 212:
le home utente e root
le home utente e root
/NEW $ mv root/ VECCHIA/
+
/NEW $ mv root/ VECCHIA/
/NEW $ mv SLACK/mnt/root/ .
+
/NEW $ mv SLACK/mnt/root/ .
/NEW $ mv home/ VECCHIA/
+
/NEW $ mv home/ VECCHIA/
/NEW $ mv SLACK/mnt/home/ .
+
/NEW $ mv SLACK/mnt/home/ .
procediamo con altre ultime directory "standard":
procediamo con altre ultime directory "standard":
Riga 235: Riga 235:
README dev/ proc/ sys/
README dev/ proc/ sys/
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.

Versione delle 23:19, 15 mag 2008

Indice

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 solo il cavo di rete
  • varie ed eventuali

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

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 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.


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.

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.


Scarichiamo e scompattiamo la miniroot.

Consiglio di scaricarla da un mirror. Nella variabile SOURCE settate il vostro preferito.

# 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

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/
# 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/cdrom/pub/Slackware_Mirror/slackware-current
# md5sum -c /SLACK/cdrom/CHECKSUMS.md5 2>/dev/null|grep /slackware/|grep -v OK$|more
# mv slackware/ /SLACK/cdrom

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"

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
bin/   cdrom/  etc/     init@       lib/         mnt/  proc/  sbin/     sys/  tmp/  var/
boot@  dev/    floppy/  initrd.img  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 del file initrd.img e della directory cdrom per reinizializzare tutto l'ambiente allo stato originale

$ umount /proc
$ exit
# cd /SLACK
# rm -r bin etc init lib mnt proc sbin sys tmp var boot dev floppy lost+found/ nfs root scripts tag usr
# ls
cdrom  initrd.img
# cpio -i < initrd.img
# cd /
# chroot /SLACK /bin/sh
$ mount -t proc proc /proc
$ . /etc/profile

L'installazione

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

Come al solito, 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, diamo il chroot e il . /etc/profile (NON diamo il mount), e digitiamo:

$ touch /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.

Completamento installazione

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.

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
lba32
boot = /dev/sda
prompt
timeout = 300
change-rules
reset
vga = 791
image = /boot/vmlinuz-huge-smp-2.6.23.16-smp
   append="root=/dev/hda2"
   label = Linux
   read-only

per ora dovremo utilizzare il kernel huge; dopo il reboot ognuno sceglierà se 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.

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.

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.

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) 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 non fermerò nessuna applicazione né chiuderò l'interfaccia grafica, ma tale procedura non è consigliabile.


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.

# 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. 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/
/NEW $ mv SLACK/mnt/bin .

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

ora spostiamo le librerie.

/NEW $ mv lib VECCHIA/
/NEW $ 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/
/NEW $ mv SLACK/mnt/usr .
/NEW $ mv sbin/ VECCHIA/
/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.

le home utente e root

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

procediamo con altre ultime directory "standard":

/NEW $ mv boot/ VECCHIA/
/NEW $ mv SLACK/mnt/boot/ .
/NEW $ mv etc/ VECCHIA/
/NEW $ mv SLACK/mnt/etc/ .
/NEW $ mv tmp/ VECCHIA/
/NEW $ mv SLACK/mnt/tmp/ .
/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.

/NEW $ ls SLACK/mnt/
README  dev/  proc/  sys/

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 di slack

/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/


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.23.16-smp
Added Linux *

Writing boot sector.


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

Se 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.


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
lba32
boot = /dev/hda
prompt
timeout = 300
change-rules
reset
vga = 791
image = /boot/vmlinuz-huge-smp-2.6.23.16-smp
   root=/dev/hda2
   label = Linux
   read-only

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.

Strumenti personali
Namespace

Varianti