AVVISO: quanto segue si riferisce alla versione di CLONE denominata ISICLONE scaricabile dai nostri repository con il comando apt-get install isi-clone
CLONE
Il trasferimento di ArgoLinux da cdrom (o dall'hd attivo) a hd è basato su uno script apposito (
clone o
isiclone, la versione a cui fa riferimento questo articolo) e su un file di configurazione che descrive il partizionamento del disco di destinazione e le operazioni desiderate (nel seguito chiameremo questo file DISCO_DESCR). Nel caso più semplice, la sequenza di operazioni è la seguente:
- avviare ArgoLinux da cdrom
- # cd /etc/clone
- # cp example/DISCO_DESCR . (dove DISCO_DESCR è uno dei file di esempio disponibili nella dir example e che andrà adattato alle proprie esigenze)
- # emacs DISCO_DESCR si effettueranno le modifiche volute
- # clone DISCO_DESCR il sistema verrà trasferito su hd
Pertanto, nel caso in cui, uno dei file DISCO_DESCR di esempio facesse al proprio caso, tutta l´operazione si riduce ad un unico comando.
In realtà le cose non saranno così immediate, ma occorrera`, specie nel caso di installazione in presenza di altri sistemi operativi, ispezionare il disco rigido bersaglio, eventualmente liberare spazio, modificare il DISCO_DESCR più somigliante alle nostre necessità, tutte operazioni comunque che possono essere eseguite con semplicità.
SI FACCIA COMUNQUE MOLTA ATTENZIONE: TUTTE LE OPERAZIONI DI PARTIZIONAMENTO DI UN DISCO SONO DISTRUTTIVE
Tipologie di installazione
Le tipologie di installazione permesse da
clone sono le seguenti
- SCRATCH: ArgoLinux è l´unico sistema operativo presente, il bootstrap è eseguito da GRUB installato sull´MBR. Nel caso di installazione RAID questa è l´unica tipologia prevista.
- COMBINATA: Argolinux coesiste con altri sistemi operativi (anche precedentemente installati). Si può decidere se affidare a GRUB sia il boot che il multiboot, GRUB può anche essere omesso del tutto.
- MULTIBOOT: Argolinux coesiste con altri sistemi operativi (anche precedentemente installati). GRUB è installato in una partizione apposita come bootmanager e nella partizione corrispondente al mount point /boot come bootloader di ArgoLinux. Le funzionalità di bootmanager di GRUB dovranno/potranno poi essere ulteriormente configurate dipendentemente dai sistemi operativi che devono essere avviati; clone tenta comunque di rilevare i sistemi operativi presenti e di preparare un menu di multiboot adatto che potrà poi essere facilmente modificato.
Il file di configurazione di CLONE e l'installazione base (non RAID)
Qesto file, a cui abbiamo fatto riferimento come DISCO_DESCR, ma che può avere nome qualunque, è un normale file di testo contenente i valori delle variabili che specificano il comportamento di
clone. Nella dir /etc/clone/example troverete vari esempi. Di seguito è spiegato in dettaglio un tipico DISCO_DESCR.
Attenzione: il sistema distingue tra MAIUSCOLE e minuscole
ZAP_ALLPART=0
PARTITIONING=1
FORMATTING=1
GRUB_MODE="MULTIBOOT"
LIVE=1
Disk=/dev/ide/host0/bus0/target0/lun0
extra_disk=/disc
extra_part="/part"
DESCR="
mnt_p fmt fs dim part_n overwrite opt
/mboot 1 ext2 8 3 1
/boot 1 ext2 50 5 1
swap 1 swap 256 6 1
/ 1 reiserfs 2000 7 1
/usr 1 reiserfs 2000 8 1
/var 1 reiserfs 1000 9 1
/home 1 reiserfs fill 10 1
"
Il file qui sopra pilota una installazione
multiboot (
ecco perchè è stato incluso il punto di mount /mboot, che per una installazione normale NON deve esserci) su un disco che ospita già due sistemi operativi nelle prime due partizioni (o comunque risulta possedere due partizioni che devono essere preservate). Ma vediamo il senso delle righe per noi significative.
ZAP_ALLPART assume i valori 0 (no) oppure 1 (si), se posta a 0 le partizioni esistenti sono preservate, ArgoLinux verrà trasferito solo se sul disco è disponibile
abbastanza spazio non partizionato consecutivo, se posta a 1, tutte le partizioni esistenti saranno distrutte (
prestare quindi molta attenzione).
PARTITIONING assume i valori 0 (no) oppure 1 (si), se posta a 0 nessuna partizione descritta verrà creata, il che significa che esse devono essere già presenti sul disco; se posta a 1, saranno create le partizioni richieste.
FORMATTING assume i valori 0 (no) oppure 1 (si), ha senso solo in caso di PARTIZIONING=0, e serve ad ordinare a clone di formattare (1) o non formattare (0) le partizioni indicate utilizzando il file system desiderato.
GRUB_MODE assume i valori
MBR (default),
MULTIBOOT,
DISK,
NOGRUB.
MBR produce l´installazione di grub sull´MBR con funzionalità di bootmanager/bootloader.
MULTIBOOT produce una installazione multiboot autonoma di grub.
DISK installa grub solo con funzionalità di bootloader per il sistema linux che si va ad installare, non scrive nulla nell´MBR e quindi bisognerà disporre di un altro bootmanager per avviare il sistema (o i sistemi).
NOGRUB impedisce del tutto l´installazione di grub, in questo caso ci auguriamo sappiate come installare i necessari bootmanager e bootloader.
LIVE, normalmente posta a 1, dice che ArgoLinux verrà trasferito da cdrom o dal disco rigido attivo (duplicazione del sistema attivo su un secondo hard disk)
EXTRA_DIRS, normalmente non definita, ma utile nel caso di duplicazione dell'hd attivo nel caso in cui questo contenga sotto / anche dirs create dall'utente (quindi fuori standard) che si vuole duplicare (es. EXTRA_DIRS="/qui /quo /qua")
Disk, il nome del disco (secondo il formato /dev) così come rilevato da ArgoLinux, è chiaro che
questa informazione deve essere corretta pena il fallimento dell´installazione. Il nome /dev dei dischi presenti nella macchina può essere determinato con il seguente comando:
# ls -l /dev/hd* | grep disc
che, ad esempio, potrebbe dare il risultato seguente
lr-xr-xr-x 1 root root 32 mar 17 04:36 /dev/hda -> ide/host0/bus0/target0/lun0/disc
lr-xr-xr-x 1 root root 32 mar 17 04:36 /dev/hdc -> ide/host0/bus1/target0/lun0/disc
lr-xr-xr-x 1 root root 32 mar 17 04:36 /dev/hdd -> ide/host0/bus1/target1/lun0/disc
da cui si vede che sono presenti 3 dischi rigidi /dev/hda, /dev/hdc, /dev/hdd il cui
nome lungo è /dev/ide/host0.....
extra_disk / extra_part sono variabili ad uso interno, da lasciare quindi così come sono.
DESCR descrive la struttura effettiva dei filesystem che si vogliono creare sul disco. Si tratta di una tabella di 7 colonne il cui significato è evidentemente il seguente:
mnt_p nome del mount point: sono indispensabili perlomeno /boot, /, swap ; nel caso di una installazione multiboot è richiesto anche /mboot.
fmt se =1 la partizione verrà formattata con il file system del tipo dichiarato
fs fyle system con cui formattare la partizione
dim dimensione, in MByte, dello spazio assegnato alla partizione; per l´ultima partizione potrà essere indicato
fill che allocherà tutto lo spazio rimanente.
part_n il numero della partizione. Le partizioni
primarie sono numerate da 1 a 4, le successive saranno partizioni
logiche contenute in una partizione
estesa creata automaticamente (si ricordi che una partizione
estesa altro non è che una partizione
primaria e quindi contribuisce al numero massimo (4) di partizioni primarie ammesse per disco.
Prestare molta attenzione: la numerazione delle partizioni deve essere giusta, specie in presenza di partizioni da preservare. Per conoscere il partizionamento esistente di un disco si può usare il seguente comando:
# parted -s /dev/hd print dove /dev/hd potrebbe essere /dev/hda o, come nell'esempio, /dev/hdd.
Si ottiene qualcosa di simile a questo:
Disk geometry for /dev/ide/host0/bus1/target1/lun0/disc: 0.000-19541.320 megabytes
Disk label type: msdos
Minor Start End Type Filesystem Flags
1 0.031 13201.853 extended
5 0.062 31.376 logical ext2
6 31.408 415.744 logical reiserfs
7 415.775 800.112 logical linux-swap
8 800.143 3663.259 logical reiserfs
9 3663.290 6526.406 logical reiserfs
10 6526.437 12244.855 logical reiserfs
11 12244.887 13201.853 logical reiserfs
2 14535.374 19539.997 primary FAT lba
da cui si vede che sul disco sono presenti 3 partizioni primarie: la 1 all´inizio del disco, la 2 in fondo, la 3 invisibile in quanto trattasi della partizione estesa che contiele 5,6,7,8,9,10,11 logiche).
Nel caso mostrato, l´unico buco libero rimasto è quello tra la logica 11 e la primaria 2 (di dimensione 14535.374-13201.853=1333.521 Mb)
overwrite se =0 la partizione non viene toccata
opt le opzioni da attribuire al punto di mount, quelle, per intenderci, che ritroveremo in /etc/fstab.
Installazione di un sistema base RAID1 (mirroring)
Ecco un tipico esempio di DISCO_DESCR per un sistema raid1 (due dischi identici)
ZAP_ALLPART=1
RAID=1
PARTITIONING=1
FORMATTING=1
LIVE=1
GRUB_FLOPPY=1
Disk=/dev/ide/host2/bus0/target0/lun0
extra_disk=/disc
extra_part="/part"
RAID1=/dev/ide/host2/bus1/target0/lun0/disc
DESCR="
mnt_p fmt fs dim part_n overwrite opt
/boot 1 ext2 24 1 0 raid
swap 1 swap 512 5 1 raid
/ 1 reiserfs 4000 6 1 raid
/free 1 reiserfs 4000 7 1 raid
/home 1 reiserfs fill 8 0 raid
"
il significato delle variabili è quello precedentemente descritto con la differenza seguente:
RAID posto a 1 dice a
clone che deve prepararsi a preparare un sistema RAID
Disk è il disco principale nella solita notazione (notare
l´assenza di /disc alla fine)
RAID1 è il disco su cui si effettua il mirroring (notare
la presenza di /disc alla fine)
la configurazione raid verrà ottenuta automaticamente specificando in corrispondenza delle partizioni sottoposte a mirroring l´opzione
*raid * nell´ultima colonna della variabile DESCR.
Si possono avere contemporaneamente sia partizioni raid che partizioni non raid. Si consiglia di impostare il raid anche per la partizione di swap.
Grub
ArgoLinux utilizza GRUB sia come bootloader che come bootmanager. Chiariamo intanto il significato dei termini: il
bootloader è il programma che avvia il sistema operativo, il
bootmanager è il programma che consente all´utente di scegliere il sistema operativo da avviare. GRUB è in grado, in modo molto flessibile, di svolgere entrambe le funzioni. Su ogni disco esistono posizioni specifiche destinate ad accogliere tali programmi: si tratta del primo settore del disco, il cosiddetto
Master Boot Record o MBR e il primo settore di ogni partizione, il
Partition Boot Sector o PBS. Se GRUB viene installato sul MBR sarà in grado di avviare un s.o. linux direttamente o per tramite di un altro bootloader installato nella partizione associata al mount point /boot di quella partizione.
Se GRUB è installato solo sul PBR dovrà essere a sua volta attivato da un boot manager sul MBR.
Una descrizione dettagliata del processo di boot e dell´utilizzo di GRUB,
può essere trovata qui. GRUB è anche in grado di avviare tutti i sistemi windows lanciando (chainloader) i rispettivi bootloader che Windows stesso installa sui PBS delle rispettive partizioni.
Installazione di un sistema multiboot
Prenderemo in considerazione due tipi di scenario:
- avete a disposizione un disco non partizionato (o comunque cancellabile) e volete installare WinXP, Win98 e ArgoLinux
- avete a disposizione una macchina sul cui unico disco è installato WinXP in unica partizione che occupa tutto lo spazio disponibile.
Il primo scenario è quello semplice, potete procedere così (si suppone un disco da 20Gb):
- lanciate ArgoLinux da cdrom
- con cfdisk create 2 partizioni di tipo FAT32 della dimensione voluta, diciamo 6GB.
- Installate WinXP nella prima partizione scegliendo la formattazione con NTFS
- Installate Win98 nella seconda partizione. Attenzione, il programma di installazione di Win98 non vi permetterà di scegliere la partizione; procedendo, confermando le scelte proposte, verrà distrutta l´installazione di XP . Seguite invece la procedura seguente:
- eseguite il boot da CD scegliendo boot con supporto cdrom e poi date i seguenti comandi
- D:
- cd \WIN98
- format c: /s (il MBR verra` sovrascritto, WinXP non sarà più avviabile (poco male, tornerà ad esserlo alla fine)
- md c:\win98
- copy . c:\win98
- togliete il cdrom e riavviate il sistema, vi ritroverete al prompt di DOS C:\>
- digitate win98\setup
- rilanciate Argolinux da cdrom e, utilizzando il file DISCO_DESCR illustrato sopra, installate linux in modalità multiboot
- perfezionate il menu di grub-bootmanager in /mboot/grub/menu.lst
Il secondo scenario, invece, è più complicato perchè vi costringe ad effettuare un resize del filesystem NTFS (sempre che abbiate spazio disponibile), seguito dalla cancellazione e ricreazione della partizione NTFS
(ATTENZIONE: si tratta di due operazioni distinte). Per fare questa operazione vi servirà
prima ntfresize, un programma open source che serve a questo scopo e che funziona con qualunque versione di Linux (la versione che avrete scaricato è infatti linkata in modo statico).
poi fdisk (quello di linux). Comunque ecco le operazioni da fare:
- scaricare ntfsresize e trasferirlo su un floppy
- lanciare ArgoLinux da cdrom e spostarsi in una dir scrivibile (ad esempio # cd /etc/clone)
- copiare dal floppy il tgz di ntfsresize e scompattarlo (naturalmente, se avete già configurato Argolinux per l´accesso internet e salvato la configurazione su floppy, potrete scaricare direttamente ntfsresize con wget http://www.reteisi.org/downloads/ntfsresize-static-1.9.0.tgz)
- salvare MBR e tavola delle partizioni attuale
- # sfdisk -d /dev/hda > ./$hda.pt per salvare la tavola delle partizioni
- # dd if=/dev/hda of=hda.mbr bs=512 count=1 per salvare il MBR
- effettuare il resize del file system NTFS
- # ./ntfsresize -i /dev/hda1 (per sapere fino a che punto si può restringere la partizione NTFS posta in /dev/hda1)
- # ./ntfsresize -n -s 6G /dev/hda1 (per eseguire un test (-n) di resizing (-s) a 6 GByte)
- # ./ntfsresize -s 6G /dev/hda1 (per eseguire il resizing effettivo a 6 GByte)
- effettuare il resize della partizione (ATTENZIONE PERICOLO) utilizzando fdisk, di seguito il dialogo commentato
#fdisk /dev/hda
lancio fdisk
Command (m for help):
p visualizzo il partizionamento
Disk /dev/hda: 255 heads, 63 sectors, 2481 cylinders
Units = cylinders of 16065 * 512 bytes
Device Boot Start End Blocks Id System
/dev/hda1 * 1 2480 19920568+ 7 HPFS/NTFS
Command (m for help):
d cancello la partizione NTFS
Partition number (1-4):
1
Command (m for help):
n creo una nuova partizione
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4):
1 creo la partizione primaria n.1
First cylinder (1-2481, default 1):
1 stabilisco il cilindro di partenza UGUALE al valore precedente
Last cylinder or +size or +sizeM or +sizeK (1-2481, default 2481):
+6000M fisso la nuova dimensione
Command (m for help):
t stabilisco il tipo della partizione = 7
Partition number (1-4):
1
Hex code (type L to list codes):
7
Changed system type of partition 1 to 7 (HPFS/NTFS)
Command (m for help):
a rendo la partizione avviabile
Partition number (1-4):
1
Command (m for help):
p controllo di aver fatto la cosa giusta
Disk /dev/hda: 255 heads, 63 sectors, 2481 cylinders
Units = cylinders of 16065 * 512 bytes
Device Boot Start End Blocks Id System
/dev/hda1 * 1 765 6144831 7 HPFS/NTFS
Command (m for help):
w scrivo il nuovo partizionamento
The partition table has been altered!
- riavviare WinXP, che, se tutto è andato a buon fine, controllerà il disco, registrerà la nuova situazione e dopo un ulteriore riavvio continuerà a funzionare (se questo non succede, qualcosa è andato storto).
- riavviare Argo da cd, e usare GRUB per nascondere la partizione ntfs:
- # grub
- # hide (hd0,0) (la partizione /dev/hda1 per GRUB è (hd0,0) )
- # quit
- creare una partizione FAT32 per win98 della dimensione voluta usando, ad esempio, cfdisk
- procedere come allo scenario precedente (da punto 4 in avanti).
Operazioni post-installazione
Eseguita l´installazione, sarà necessario rivedere i menù di GRUB e controllare che tutti i sistemi operativi presenti vengano correttamente avviati.
Li trovate in
- /boot/grub/menu.lst per tutte le modalità di installazione (GRUB_MODE)
- /mboot/grub/menu.lst questo file è presente, in aggiunta all´altro solo se è stata richiesta una installazione MULTIBOOT
L´aspetto tipico di questi file è il seguente (nell´esempio /boot è in /dev/hda5 e / in /dev/hda7)
/boot/grub/menu.lst
timeout 0
il boot viene eseguito immediatamente
default 1
title Kernel 2.4.24-std on /dev/ide/host0/bus0/target0/lun0/part7
root (hd0,4)
kernel /bzImage-2.4.24-std root=/dev/ram0 boot=*/dev/ide/host0/bus0/target0/lun0/part7* rw init=/linuxrc
initrd /initrd-2.4.24-std.gz
NOTA: il dispositivo esteso /dev/ide/... può essere sostituito con quello breve, ad esempio
timeout 0
default 1
title Kernel 2.4.24-std on
/dev/hda7
root (hd0,4)
kernel /bzImage-2.4.24-std root=/dev/ram0 boot=*/dev/hda7* rw init=/linuxrc
initrd /initrd-2.4.24-std.gz
Ecco invece l´aspetto del menù multiboot che si ottiene in
*/mboot/grub/menu.lst
timeout 10
10 sec di pausa per poter scegliere
default 1
a pausa scaduta viene avviato il primo della lista
title LINUX
rootnoverify (hd0,4)
chainloader +1
tutti i sist.op. sono lanciati da un altro GRUB
title Windows 9x-0
rootnoverify=(hd0,1)
chainloader +1
title WinNT-0
rootnoverify=(hd0,0)
chainloader +1
Questo menù
deve essere modificato, nella parte relativa ai sistemi windows, nel modo seguente (ecco perchè in /etc/fstab viene incluso il mount point non standard /mboot)
...........
...........
title WINDOWS-98se il title può essere reso più significativo
hide (hd0,0)
unhide (hd0,1)
rootnoverify=(hd0,1)
chainloader +1
makeactive
title WINDOWS-XP
hide (hd0,1)
unhide (hd0,0)
rootnoverify=(hd0,0)
chainloader +1
makeactive
MKGRUB
Si tratta di una script per produrre un disco di boot. L'uso è banale:
- inserire un dischetto
- # mkgrub
il dischetto verrà formattato e vi sarà installato grub in modalità multiboot, in modo che tutti i sistemi operativi presenti su tutti gli hd possano essere avviati.
Vengono create anche voci di menù per l´installazione rapida di grub sugli MBR dei dischi rigidi presenti.