Creare una partizione di ripristino su openSUSE

Mer, 11/03/2009 - 20:41

Creare una partizione di ripristino su openSUSE

Inviato da anubis 16 commenti
Introduzione
ATTENZIONE! Non sono responsabile di eventuali danni provenienti da un errato profilo di autoYaST.
ATTENZIONE! Questa guida, anche se dettagliata (lo spero), non è esattamente "facile". Se possibile, vi consiglio di provarla magari in virtuale nel caso non capiate il significato dei comandi shell che sono stati utilizzati.
Per ottenere i migliori risultati da questa guida, verrà fatto uso di chiavi GnuPG. Non è questa la guida adatta per parlarne, ma potete leggere questa breve guida http://www.gnupg.org/howtos/it/GPGMiniHowto-3.html o usare tools grafici come l'ottimo Kgpg o seahorse.
Il mio consiglio è di creare un piccola partizione di almeno 5GB in cui sistemare i nostri dati, poichè andremo ad aggiungere anche dei pacchetti personalizzati, tenete conto che la partizione dovrà contenere il DVD di installazione e i vostri pacchetti. Consiglio inoltre di formattare la partizione come EXT3.
ATTENZIONE! Questa guida considererà la partizione di ripristino come /dev/sda1 e userà la MIA chiave GPG.
Con fingerprint F1EE 8DF1 79F1 098B A008 7230 C826 53F3 B4C5 3EE8 il suo ID quindi sarà B4C53EE8.
Creare la partizione e copiare i primi dati

Fatte le nostre premesse, create la vostra partizione, e scaricate la iso del DVD della vostra versione di SUSE preferita. Per semplicità, la considererò disponibile nella vostra home, ed inoltre andremo a montare la partizione di ripristino sul punto di mount /recovery .

Procediamo quindi a copiare il contenuto del dvd sulla partizione:

su
-password di root-
mount -o loop openSUSE-11.1-DVD-i586.iso /mnt
mount /dev/sda1 /recovery
cp -R /mnt/* /recovery/

di fatto abbiamo montato la iso in /mnt , la partizione in /recovery e poi abbiamo copiato l'intero contenuto del dvd nella partizione.

Configurazione di GRUB

Adesso dobbiamo modificare il file di configurazione di grub, ovvero /boot/grub/menu.lst. Con diritti di amministratore, aprite questo file ad aggiungete le seguenti righe:

###Don't change this comment - YaST2 identifier: Original name: Vendor diagnostic###
title Ripristino Sistema
root (hd0,0)
kernel /boot/i386/loader/linux root=/dev/disk/by-id/ata-WDC_WD1600BEVT-22ZCT0_WD-WXE808J2J391-part1 splash=silent showopts vga=0x314 install=hd:///dev/sda1 autoyast=device://sda1/conf.xml language=it_IT keymap=it
initrd =/boot/i386/loader/initrd

###Don't change this comment - YaST2 identifier: Original name: Recovery###
title Ripara Sistema
root (hd0,0)
kernel /boot/i386/loader/linux root=/dev/disk/by-id/ata-WDC_WD1600BEVT-22ZCT0_WD-WXE808J2J391-part1 splash=silent showopts vga=0x314 install=hd:///dev/sda1 language=it_IT keymap=it repair=1
initrd =/boot/i386/loader/initrd

In questo modo andremo a creare in grub due nuove voci. La prima, a lavoro finito, ci permetterà di avviare l'autoinstallazione automatica tramite autoyast, (rimuovendo la parte autoyast=device://sda1/conf.xml, parte l'installazione standard come se fossimo su DVD). La seconda, invece, ci permette da subito, di avviare lo strumento di riparazione del dvd, dato che abbiamo il dvd sul nostro HD, perchè non sfruttarne tutte le potenzialità?

ATTENZIONE! La parte root=/dev/disk/by-id/ata-WDC_WD1600BEVT-22ZCT0_WD-WXE808J2J391-part1 ovviamente sarà diversa da pc a pc, e da partizione a partizione, in quanto identificata la partizione per ID. potete ottenere queste informazioni da yast --> sistema --> partizionatore

ma vediamo di spiegare queste linee:

root (hd0,0)
Grub inizia a numerare da 0, quindi hd0,0 vuol dire la prima partizione sul primo disco. hd0,1 invece sarebbe la seconda partizione sul primo disco e così via.

install=hd:///dev/sda1
Indica a linuxrc, dove cercare i file necessari per avviare il sistema di installazione

autoyast=device://sda1/conf.xml
Indica di avviare autoYaST ed il percorso del file di configurazione, da notare che "/dev" non è presente.

language=it_IT keymap=it
Permetto di selezionare lingua e mappatura della tastiera in italiano

repair=1
Indica a linuxrc di avviare lo strumento di riparazione invece di quello di installazione

per tutte le altre informazioni potete fare riferimento ai manuali di grub.

Aggiunta di pacchetti personalizzati.

Anche se tramite autoYaST è possibile aggiungere repository personalizzati disponibili in rete, io sono partito dall'idea che non sempre è disponibile la rete quindi la scelta migliore è quella di creare un repository locale con tutti i pacchetti necessari, nel caso di un netbook, magari, potreste voler inserire tutti i pacchetti dei drivers aggiuntivi. Per fare ciò avrete bisogno di installare il pacchetto createrepo ed il seguente script:

#!/bin/sh
# unpackInitrd 0.1
# uwe.gansert@suse.de
#
# usage: unpackInitrd [PATH_TO_ROOTIMAGE]

INITRD=$1 || "./initrd"

if [ ! -s $INITRD ]; then
echo "can't find $INITRD"
exit -1
fi

cp -a $INITRD /tmp/initrd.gz
gzip -dc /tmp/initrd.gz >/tmp/initrd.img
mkdir /tmp/work-initrd
cd /tmp/work-initrd
cpio -i < /tmp/initrd.img
echo "# initrd is in /tmp/work-initrd"
echo "cd /tmp/work-initrd"

Adesso che avete tutto quello che vi server procedete come segue:

1) nella cartella /recovery (dove è montata la partizione di ripristino) create la cartella updates

2) se la iso utilizzata è di suse <= 11.0 allora create il file add_on_products con il seguente contenuto:

hd:///updates?device=/dev/sda1

2a) se usate suse 11.1 create il file add_on_products.xml con questo contenuto:

http://pastebin.com/f5c6e7695

Perfetto! Adesso entrate nella cartella updates e ricreate la seguente struttura:

|-updates
| |--i586
| |--noarch
| |--x86_64

all'interno delle varie cartelle dovrete mettere i vostri rpm per architettura, ad esempio, lrpm acerfand-0.04-8.2.noarch.rpm va nella cartella noarch mentre dmidecode-2.10-6.2.i586.rpm andrà nella cartella i586. Nel caso una o più cartelle siano vuote, potete tranquillamente cancellarle.

adesso da dentro la cartella updates date il seguente comando:

$ createrepo .
ATTENZIONE! Attenzione al punto, è molto importante!

per terminare date i seguenti comandi:

ls > directory.yast
cd repodata
gpg --export --armor $KEY_ID > repomd.xml.key
gpg -b --sign --armor repomd.xml

dove al posto di $KEY_ID dovete mettere l'ID della vostra chiave gpg, nel mio caso come detto è B4C53EE8 quindi il primo comando diventerebbe gpg --export --armor B4C53EE8 > repomd.xml.key

adesso continuiamo con i seguenti comandi

cd /recovery
sha1sum add_on_products.xml > SHA1SUMS

oppure se usate la iso di suse <= 11.0

sha1sum add_on_products > SHA1SUMS
gpg --export --armor $KEY_ID > SHA1SUMS.key
gpg -b --sign --armor SHA1SUMS
ls > directory.yast

fatto questo, dobbiamo aggiungere la nostra chiave pubblica al file initrd, faremo questo grazie allo script di prima che chiameremo unpackInitrd

ammesso che lo script sia nella nostra home, daremo il seguente comando

~/unpackInitrd /recovery/boot/i386/loader/initrd
cd /tmp/work-initrd
gpg --export --armor $KEY_ID > my-key.gpg
find . | cpio -H newc -o > /tmp/initrd
gzip /tmp/initrd
mv /tmp/initrd.gz /recovery/boot/i386/loader/initrd

Ed adesso il grosso del lavoro è fatto, provate a riavviare ed a scegliere una delle due voci che abbiamo aggiunto a GRUB, con la prima in particolare, partirà il sistema di installazione e noterete che caricherà prima il repo "DVD" poi quello "updates" che abbiamo aggiunto. (consiglio di cancellare momentaneamente da grub stesso, la parte riguardante "autoyast", non essendoci ancora il profilo, ricevereste un errore).

Creare un profilo  AutoYaST.

Bene signori, adesso si potrà parlare solo a grandi linee, ognuno di voi potrà (e dovrà) personalizzare il proprio profilo.

Prima di tutto abbiamo bisogni di installare il pacchetto autoyast2, altro non sarebbe che un modulo di yast per creare in maniera assistita il vostro profilo. Una volta fatto, aprite YaST --> Varie --> Installazione automatica e create il vostro profilo, potete usare la funzione "clona" per copiare le vostre impostazioni dal vostro sistema. Vedrete anche, che è possibile importare dei file di configurazione, ripeto comunque che qui la scelta è vostra, di più non posso fare.

Per avere tutte le informazioni necessarie su come creare un profilo di autoYaST potete sempre fare riferimento a questa pagina: http://www.suse.de/~ug/

Ricordate che YaST vi permette di validare il vostro file di configurazione, quindi apprifittatene.

Una volta fatto, salvatelo in /recovery/conf.xml e godetevi la vostra autoinstallazione. Non preoccupatevi, avete sempre l'opportunita di apportare modifiche prima di far partire l'installazione vera e propria.

Fonti e risorse varie:

http://www.suse.de/~ug/
http://ugansert.blogspot.com/
http://www.suse.de/~ug/autoyast_doc/index.html

Adesso dovete solo divertirvi

Andrea il vostro Pacchettizzatore di fiducia Laughing