mercoledì 22 luglio 2009

[Linux]Come creare un Pen Drive USB bootabile con opensuse 11.0 e 11.1

Creare un Pen Drive bootabile con openSUSE Linux 11.0 o 11.1 è relativamente facile, tuttavia è necessario armarsi di pazienza. Vi parlo di questo sistema operativo perché e quello con cui sono più pratico. Questo strumento vi sarà particolarmente utile per installare il systema operativo su un netbook o su notebook senza usare il Cd di installazione.

Cosa occorre:
  • un Pen Drive da 2 gb (oppure un adattatore usb per sd card etc... ect...);
  • una copia di openSUSE 11.0 o 11.1 live ottenibile da questo link (potete scegliere l'ambiente desktop che più vi aggrada GNOME o KDE);
  • Pazienza e buona volontà.
Adesso è importate seguire tutte i passi con calma e freddezza.

E' necessario preparare il pen drive con un filesystem FAT32 attraverso una formattazione da windows o attraverso programmi appositi, qualora il supporto sia molto grande potete anche procedere con una partizione.

A questo punto è necessario inserire il vostro pen drive nella porta usb del vostro pc ma prima accertatevi di aver installato sul vostro sistema linux "syslinux" per verificare digitate dal vostro terminale:
sudo zypper in syslinux
digitate la password di root e il gioco è fatto se syslinux è istallato ve lo dirà altrimenti lo installerà. A questo punto da utente root da terminale digitate:
syslinux /dev/sdc1
dove /dev/sdc1 è la partizione del pen drive. Adesso per procedere nel nostro lavoro è necessario creare alcune cartelle quindi:
mkdir -p /work/unpacked
quindi portarsi nella cartella work per non incorrere in problemi:
cd work
Sempre con i privilegi di utente root è necessario creare altre cartelle:
mkdir /mnt/iso
mkdir /mnt/squash
Adesso è importante seguire tutti i passi con molta attenzione, notate bene che è possibile copiare il codice direttamente dai box. E' necessario, pertanto, procedere al montaggio quindi:
mount -o loop openSUSE-11.0-GNOME-LiveCD-i386.iso /mnt/iso/
Non c'è da preoccuparsi, io uso l'ambiente grafico GNOME quindi di riflesso ho usato quello, tuttavia la procedura è la stessa per KDE4. Adesso è necessario portarsi nella cartella unpacked quindi:
cd unpacked
A questo punto è necessario spacchettare il pacchetto initrd attraverso il seguente comando:
gzip -dc /mnt/iso/boot/i386/loader/initrd | cpio -i
Subito dopo andramo a montare nella cartella /mnt/squash il file read-only attraverso il seguente comando:
mount -o loop /mnt/iso/openSUSE-*read-only.* /mnt/squash/
Adesso bisogna copiare i file necessari per il funzionamento attraverso la seguente sintassi:
cp /mnt/squash/lib/modules/*/kernel/fs/nls/nls_cp437.ko lib/modules/*/kernel/fs/nls/
cp /mnt/squash/lib/modules/*/kernel/fs/nls/nls_iso8859-1.ko lib/modules/*/kernel/fs/nls/
cp -r /mnt/squash/lib/modules/*/kernel/fs/vfat lib/modules/*/kernel/fs/
cp -r /mnt/squash/lib/modules/*/kernel/fs/fat lib/modules/*/kernel/fs/
Adesso è necessario editare il file include attraverso l'editor che vi aggrada di più nel mio caso gedit quindi lo invoco da terminale eseguendo questo comando:
gedit include
L'editing del file include è importantissima dato che se fosse lasciato così com'è una volta inserito il pen drive il computer andrebbe a leggere il cd, di conseguenza non trovandolo vi annullerebbe l'installazione, mentre con la modifica che si apporterà non vi saranno problemi. A questo punto quindi è necessario cercare funzione definita come funcion CDDevice e sostituirla con il codice di seguito riportato:
function CDDevice {
# /.../
# changed this function so that it finds config.isoclient on vfat disks, e.g. USB drives
# ----
find /lib/modules/*/kernel/fs/nls/nls* -exec insmod {} \; # needed for vfat filesystem
find /lib/modules/*/kernel/fs/*fat/*.ko -exec insmod {} \; # needed for vfat filesystem
insmod /lib/modules/*/kernel/drivers/usb/storage/usb-storage.ko # needed for USB
sleep 5 # fixme; do this in a proper way
cddevs=`/usr/sbin/hwinfo --disk | grep sd | grep "Device File:" | cut -f2 -d: | cut -f2 -d " "` # looks for disks instead of CDs
echo cddevs $cddevs
for i in $cddevs;do
i=$i"1" # fixme; looks on the first partition only
echo i $i
if [ -b $i ];then
test -z $cddev && cddev=$i || cddev=$cddev:$i
echo cddev $cddev
fi
done
if [ -z $cddev ]; then
systemException \
“Failed to detect CD drive !” \
“reboot”
fi
}

Adesso salvare i cambiamenti e chiudere il vostro editor. Una volta arrivati qui siamo ad un ottimo punto vicini alla fine, quindi è necessario provvedere alla creazione del pacchetto initrd che chiameremo initrdud attraverso il seguente comando:
find . | cpio -o -H newc | gzip -9 > ../initrdud
Bene, è il momento di tornare al nostro pen drive che il sistema di solito monta su /media/disk, ma state attenti perché, a seconda che vi siano altri supporti di memoria usb, potrebbe essere anche /media/disk-1. Quindi, detto questo, andiamo a copiare i file sul nostro supporto di memoria; adesso è il momento del contenuto della cartella /mnt/iso, quindi digitiamo nel terminale la seguente sintassi:
cp -r /mnt/iso/* /media/disk/
Adesso è necessario copiare il contenuto di /boot/i386/loader/attrvareso la sintassi riportata sotto
cp -r /mnt/iso/boot/i386/loader/* /media/disk/
Ora è necessario rinominare il file isolinux.cfg in syslinux.cfg operando questo comando:
mv /media/disk/isolinux.cfg /media/disk/syslinux.cfg
Possiamo copiare adesso il nostro initrdud attraverso la seguente sintassi:
cp ../initrdud /media/disk/
A questo punto è necessario editare il file syslinux.cfg rinominato prima attraverso il nostro editor:
gedit syslinux.cfg
andiamo a sostituire la seguente riga:
append initrd=initrd ramdisk_size=512000 ramdisk_blocksize=4096 splash=silent showopts
con questa:
append initrd=initrdud kiwidebug=1 ramdisk_size=512000 ramdisk_blocksize=4096 splash=silent showopts
A questo punto smontare il supporto di memoria usb ed è fatta.
N.B. Per quanto concerne openSUSE 11.1 il procedimento è lo stesso solo dovete ricordarvi di modificare il seguente file config.gnome.isolinux oppure config.kde.isolinux in config.isolinux attraverso il seguente comando:
mv /media/disk/config.gnome.isolinux /media/disk/config.isolinux
Riguardo questo ultimo passaggio ho lasciato anche un post nel blog di uno dei miei mentori da cui ho preso spunto facendo alcune variazioni per rendere tutto più semplice.

Una semplice nota qualora vogliate copiare direttamente il codice basta cliccare sul pulsantino view plain dove apparirà il codice corretto.
Ti è piaciuto l’articolo? Clicca su OK!

Puoi votare altri articoli anche in questa pagina.

4 commenti:

  1. Ciao, premetto di usare abitualmente un'altra distribuzione, quindi correggimi se sbaglio; sul sito di OpenSuse c'è un howto che spiega come fare la stessa cosa (installare opensuse da penna usb), ma la procedura mi sembra molto più semplice....
    http://en.opensuse.org/SuSE_install_from_USB_drive

    Ciao ciao, buona giornata!

    RispondiElimina
  2. Sinceramente non so se è più semplice, in ogni caso vi sono diversi metodi tutti quanti validi tra cui scegliere.

    ciao e grazie per il post

    RispondiElimina
  3. Salve! Grazie per le informazioni che condividi. Pensi che mutatis mutandis la cosa possa funzionare anche per altre immagini di cd?

    RispondiElimina
  4. Grazie per aver partecipato al blog,

    dipende: con openSUSE sono riuscito a farlo funzionare fino alla 11.1; con la nuova release non saprei perchè non ho ancora provato.
    Per quanto concerne altre distro ho provato solo con ubuntu e non ci sono riuscito in ogni caso a breve proverò altre: quelle famose famose intendo.
    Se riuscirò pubblicherò il procedimento da seguire sul blog.

    RispondiElimina

I commenti prima della pubblicazione saranno controllati e se reputati offensivi o con contenuto scurrile e ineducato non saranno pubblicati.
Qualora non vediate subito il vostro post pubblicato, non disperate perché probabilmente non sono al computer o perché non corrispondono ai canoni della decenza nel senso che sono scurrili, ineducati, offensivi o contenenti riferimenti o immagini pedo-pornografiche o pornografiche.

I commenti Anonimi non saranno più accettati

ciao