PAGINA PRINCIPALE

Revisione 2006.04.15. Originale aggiornato: http://www.insulae.net/doc/knoppix.poor.it.php


Knoppix da disco fisso — installazione del povero

2004.12.01

Occorrente
Preparazione del disco
Preparazione della partizione di Knoppix
Un condensato di teoria
Preparazione della partizione di avvio e installazione di LILO
Cambiare versione di LILO
Configurazione di Knoppix e creazione della persistent home
Conclusione
Dubbi
Cronologia

Avendo un disco da 1,2 GB lì a poltrire, mi sono proposto di tentare una "installazione del povero" di Knoppix. Si tratta di copiare il contenuto del CD-ROM su disco fisso in modo che Knoppix si carichi in RAM dal disco come avviene di norma da CD, combinando la maggior velocità del disco fisso con l'autoconfigurazione che permette di usare il sistema così preparato su diverse macchine — a differenza dell'installazione, che prepara il sistema operativo per una specifica macchina (1).

In breve, far funzionare il contenuto del CD da disco fisso.

Soddisfatto del misfatto, ho scritto questa guida per mostrare a un ipotetico principiante, che voglia come primo approccio qualcosa di facile e insieme utilizzabile, le operazioni da compiere per far funzionare da disco, o altro dispositivo avviabile, la distribuzione Knoppix 3.6. In linea di principio le informazioni possono essere adattate ad altre versioni o a qualsiasi distribuzione di Linux che si carichi da CD-ROM per essere eseguita nella RAM.

È persino possibile che per aggiornare il disco a una più recente versione di Knoppix basti sostituire il file KNOPPIX/KNOPPIX (e il kernel, se la nuova versione ne usa necessariamente uno diverso da quello della vecchia).

Occorrente

Un sistema Linux per eseguire le operazioni. Potrebbe ad esempio essere una versione di Knoppix già disponibile su CD-ROM, mentre se si inizia da zero si può scaricare il dischetto di tomsrtbt da www.toms.net/rb e, seguendo le istruzioni, in pochi minuti e senza patemi disporre di una fiammante minidistribuzione Linux (una conoscenza di base dell'ambiente Unix e dei principali comandi è fortemente consigliata). Tutti i comandi sotto descritti sono stati digitati da tomsrtbt.
Ci si assicuri di impostare nel BIOS l'avvio del sistema dalla periferica, dischetto o CD-ROM, relativa al sistema scelto.

L'immagine ISO, o il CD-ROM, della versione di Knoppix che si intende far caricare da disco.

Ovviamente, un hard disk libero di almeno 1,2 GByte. Anche meno, calcolando lo spazio con cura.

Preparazione del disco

Usando tomsrtbt, sul disco hda creo quattro partizioni:

# fdisk /dev/hda
Disk dev/hda: 64 heads, 63 sectors, 621 cylinders
Units = cylinders of 4032 * 512 bytes

P    Device  B  Start  End  Blocks   Id System
1 /dev/hda1  *      1    6   12064+  83 Linux         - partizione di avvio (boot)
2 /dev/hda2         7  413  850512   83 Linux         - partizione del file KNOPPIX
3 /dev/hda3       414  544  264096   82 Linux swap    - partizione di swap
4 /dev/hda4       545  621  155232   83 Linux         - home

riservando 10 MB alla partizione di avvio, 800 MB a quella destinata a ospitare l'immagine di Knoppix, 256 MB alla partizione di swap e i restanti 150 MB alla persistent home dell'utente e ai file di configurazione.

Circa il partizionamento del disco ospite, sono possibili molte scelte.
Per abbondare in prudenza ho tenuto separate le partizioni di avvio e di Knoppix, ma potrebbero coincidere. In generale, una piccola partizione di avvio, separata da quella in cui risiede il sistema, è necessaria per vecchie versioni del BIOS che non permettono di avviare una partizione che si estenda oltre il cilindro 1024: ma la partizione di Knoppix non supera il cilindro 413.
Alla partizione di swap ho riservato 256 MB, il doppio della RAM del computer su cui intendevo usarlo, ed anche circa il doppio della dimensione del disco RAM specificata nella configurazione di LILO.
Lo spazio restante è destinato a ospitare i file di configurazione e la directory dell'utente knoppix, cui corrisponde la sessione di KDE predefinita, che non possono risiedere nella partizione d'avvio perché Knoppix prende il controllo esclusivo della partizione da cui si avvia (2). Si può scegliere di tenere i file di configurazione e la home in due partizioni separate o in una sola, e di scrivere il contenuto della home nell'intera partizione o in un file immagine, che può anche risiedere in una partizione FAT32. Per la discussione delle possibili combinazioni fra queste scelte e delle conseguenze che ne derivano, anche in relazione ai bachi di alcune versioni di Knoppix, rimando alla pagina Web citata nella nota (3).

Formatto hda1, hda2 e hda4 come ext2 e hda3 come swap:

# mke2fs -c /dev/hda1
# mke2fs -c /dev/hda2
# mke2fs -c /dev/hda4

# mkswap -c /dev/hda3

I filesystem ext2 preparati sulle partizioni hda[124] contengono directory lost+found che possono essere cancellate.

Il comando swapon per attivare lo swap è compreso nelle operazioni compiute dagli script di inizializzazione di Knoppix.

Preparazione della partizione di Knoppix

Ho scaricato con Windows l'immagine ISO di Knoppix 3.6 (impiegando quasi una giornata con l'ADSL) su un disco montato poi con tomsrtbt come hdc1, e ne ho verificato l'impronta MD5:

/mnt/hdc1/Knoppix 3.6# more KNOPPIX_V3.6-2004-08-16-EN.iso.md5
5bc8e9fee2a8be0b7180fcf3e49b5386 *KNOPPIX_V3.6-2004-08-16-EN.iso

/mnt/hdc1/Knoppix 3.6# md5sum KNOPPIX_V3.6-2004-08-16-EN.iso
5bc8e9fee2a8be0b7180fcf3e49b5386  KNOPPIX_V3.6-2004-08-16-EN.iso

Monto l'immagine (notare l'opzione -o loop per montare un file) come filesystem sotto /mnt/iso:

# mkdir /mnt/iso
# mount -t iso9660 -o loop /mnt/hdc1/"Knoppix 3.6"/KNOPPIX_V3.6-2004-08-16-EN.iso /mnt/iso

copiandone il contenuto su hda2, mantenendo attributi e permessi dei file:

# cp -afr /mnt/iso/* /mnt/hda2

Disponendo invece del CD-ROM di Knoppix, se ne copia semplicemente il contenuto in hda2.

Ripulisco la directory dai file non essenziali (ad esempio la directory boot e i file autorun.* per avviare da CD-ROM, ormai inutili), ottenendo

# ls -alR /mnt/hda2
total 17
drwxr-xr-x   4 root     root         4096 Dec  5 17:55 .
drwxr-xr-x   5 505      100           160 Dec  5 19:07 ..
dr-xr-xr-x   2 root     root         4096 Dec  4 17:44 Demos
dr-xr-xr-x   3 root     root         4096 Dec  5 05:28 KNOPPIX
-r--r--r--   1 root     root          315 Dec  5 17:55 index.html

/mnt/hda2/Demos:
total 3124
dr-xr-xr-x   2 root     root         4096 Dec  4 17:44 .
drwxr-xr-x   4 root     root         4096 Dec  5 17:55 ..
-r--r--r--   1 root     root           55 Feb 20  2004 .directory
-r--r--r--   1 root     root         6421 May 14  2002 OpenSourceSong-LICENSE.txt
-r--r--r--   1 root     root          323 Aug 13  2001 OpenSourceSong-README.txt
-r--r--r--   1 root     root      3170106 Oct  4  2002 OpenSourceSong.ogg

/mnt/hda2/KNOPPIX:
total 709524
dr-xr-xr-x   3 root     root         4096 Dec  5 05:28 .
drwxr-xr-x   4 root     root         4096 Dec  5 17:55 ..
-r--r--r--   1 root     root     725253780 Aug 22 19:22 KNOPPIX
-r--r--r--   1 root     root        10130 May  9  2004 KNOPPIX-FAQ-EN.txt
-r--r--r--   1 root     root        10577 May  9  2004 KNOPPIX-FAQ-ES.txt
-r--r--r--   1 root     root        12056 May  9  2004 KNOPPIX-FAQ-FR.txt
-r--r--r--   1 root     root        11852 May  9  2004 KNOPPIX-FAQ-IT.txt
-r--r--r--   1 root     root         9733 May  9  2004 KNOPPIX-FAQ-NL.txt
-r--r--r--   1 root     root        11352 May  9  2004 KNOPPIX-FAQ.txt
-r--r--r--   1 root     root        18487 Oct  3  2003 LICENSE.txt
-r--r--r--   1 root     root         2207 Apr 27  2004 README_Security.txt
-rw-r--r--   1 root     root       338276 Dec  5 05:26 background.png
dr-xr-xr-x   2 root     root         4096 Aug 22 04:08 images
-r--r--r--   1 root     root         8634 Aug 22 04:06 index.html
-r--r--r--   1 root     root        10573 Aug 22 04:06 index_dk.html
-r--r--r--   1 root     root         8171 Aug 22 04:06 index_en.html
-r--r--r--   1 root     root        11835 Aug 22 04:06 index_es.html
-r--r--r--   1 root     root         9617 Aug 22 04:06 index_fr.html
-r--r--r--   1 root     root        10390 Aug 22 04:06 index_it.html
-r--r--r--   1 root     root        10580 Aug 22 04:06 index_jp.html
-r--r--r--   1 root     root        10437 Aug 22 04:06 index_nl.html
-r--r--r--   1 root     root        13131 Aug 22 04:06 index_ru.html
-r--r--r--   1 root     root         9946 Aug 21 06:25 knoppix-cheatcodes.txt
-r--r--r--   1 root     root           15 Aug 22 04:35 knoppix-version
-r--r--r--   1 root     root         2680 Aug 22 21:00 md5sums

/mnt/hda2/KNOPPIX/images:
total 216
dr-xr-xr-x   2 root     root         4096 Aug 22 04:08 .
dr-xr-xr-x   3 root     root         4096 Dec  5 05:28 ..
-r--r--r--   1 root     root         6148 Aug  4 10:01 .DS_Store
-r--r--r--   1 root     root       172842 Aug 22 02:56 knoppix-header.gif
-r--r--r--   1 root     root        15227 Aug 22 03:40 knoppix-logo.gif
-r--r--r--   1 root     root          934 Aug 22 02:46 sidefill.gif
-r--r--r--   1 root     root         2464 Aug 22 03:30 topleft.gif

Aggiustamenti. All'avvio di KDE, Knoppix cerca nella partizione hda2 un file index.html da aprire nel browser Konqueror. Se necessario, modifico index.html in modo che carichi in un frame la pagina introduttiva KNOPPIX/index_it.html:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">

<html>

<head>

<title>KNOPPIX 3.6</title>

</head>

<frameset rows="100%,*" framespacing=0 border=0>

<frame src="KNOPPIX/index_it.html" frameborder=0 scrolling="auto" noresize="noresize">

</frameset>

</html>

All'avvio, Knoppix carica come sfondo l'immagine background.png e poi lo sfondo configurato dall'utente per KDE. Perché i due sfondi coincidano, converto lo sfondo default_blue.jpg da me scelto in una immagine PNG che salvo come background.png in /mnt/hda2/KNOPPIX.

Un condensato di teoria

Ricavato da The Linux Bootdisk HOWTO, vedi note a fondo pagina.

La procedura d'avvio di un PC inizia con l'esecuzione di un programma dalla ROM, il BIOS, che carica il contenuto del settore 0 del cilindro 0 del disco d'avvio e tenta di eseguirlo. Detto settore d'avvio principale o Master Boot Record (MBR) può contenere l'inizio del kernel di un sistema operativo o un programma detto boot loader che individua il kernel, lo carica e lo esegue, oppure rimandare ad altri boot loader installati nel primo settore di altre partizioni. Un comune boot loader per i sistemi Linux è LILO.

Il kernel inizializza i gestori (driver) dei dispositivi e i propri dati interni, quindi legge, da una posizione interna alla propria immagine detta ramdisk word, dove e come trovare il filesystem da montare come directory radice (root filesystem). Se non lo trova, si arresta.

Caricato e montato il filesystem radice, appare un messaggio tipo  VFS: mounted root (ext2) readonly.

In certe situazioni, per ragioni di spazio e velocità, il kernel carica il filesystem radice in un disco RAM o ramdisk, una porzione di memoria RAM che emula un disco, da un file compresso.

Il filesystem radice caricato contiene il necessario per continuare la procedura d'avvio. Dal percorso /bin o /sbin, il kernel lancia il programma init, che cerca alla riga sysinit nel proprio file di configurazione /etc/inittab il nome di uno script che monta i dispositivi — tra cui eventuali immagini di filesystem che espandano quello appena caricato — abilita lo swap e imposta altri servizi di base necessari al sistema, quindi torna a init che entra nel runlevel stabilito alla riga initdefault di inittab. La riga indica un programma, di solito getty, che si occupa delle comunicazioni fra tastiera e schermo e invoca il programma login per gestire l'accesso al sistema.

In una distribuzione standard il kernel corrisponde di solito al file vmlinuz, e il filesystem radice è contenuto in miniroot.gz.

Knoppix 3.6 permette di scegliere tra i kernel 2.4 e 2.6, corrispondenti ai file linux24 e linux26, che creano un disco RAM in cui caricare il filesystem radice contenuto rispettivamente nei file compressi minirt24.gz e minirt26.gz, la cui procedura di init espande il filesystem con il contenuto dell'immagine KNOPPIX/KNOPPIX, situata nella partizione passata da LILO al kernel come parametro, che contiene il resto del sistema.

Preparazione della partizione di avvio e installazione di LILO

Ora occorre installare LILO per poter avviare la partizione di boot hda1.
Consultata la ponderosa documentazione su LILO e la sua configurazione, monto /dev/hda1 come /mnt/hda1 e vi copio i file linux24, linux26, minirt24.gz, minirt26.gz presi dall'immagine ISO.

Creo sotto /mnt/hda1 una directory etc e vi pongo il seguente file lilo.conf,

boot=/dev/hda
map=/boot/map
install=/boot/boot.b
read-only
prompt
timeout=50
default=knoppix
single-key
message=/boot/message

image=/linux24
  label=knoppix
  alias=1
  initrd=/minirt24.gz
  append="fromhd=/dev/hda2 ramdisk_size=100000 init=/etc/init home=/dev/hda4 myconf=/dev/hda4 apm=power-off lang=it"
  root=/dev/hda2
  read-only

image=/linux26
  label=knoppix26
  alias=2
  initrd=/minirt26.gz
  append="fromhd=/dev/hda2 ramdisk_size=100000 init=/etc/init home=/dev/hda4 myconf=/dev/hda4 apm=power-off lang=it"
  root=/dev/hda2
  read-only

compilato ricalcando il file di configurazione del boot loader isolinux presente nell'immagine ISO, per permettere all'utente di scegliere se avviare Knoppix con il kernel 2.4 o 2.6. Questo file è letto all'installazione di LILO e ad ogni avvio del sistema.

boot=/dev/hda indica a LILO di installarsi nel settore d'avvio principale (Master Boot Record, MBR) del disco. Indicando una partizione, ad esempio boot=/dev/hda1, LILO si installerebbe nel primo settore di quella partizione.
install=/boot/boot.b specifica il file che il comando lilo copia sul settore d'avvio, il binario vero e proprio del boot loader.
message=/boot/message indica a LILO il percorso del file con il messaggio da visualizzare all'avvio,
map=/boot/map dove creare il file map.
prompt stabilisce di attendere per 5 secondi (timeout=50) che l'utente scelga quale sistema avviare, scrivendone il nome label e premendo Invio o premendo il tasto alias, prima di avviare quello predefinito (default=knoppix);
single-key permette di avviare le immagini premendo i tasti indicati da alias nelle relative sezioni.

Ogni sezione image=kernel corrisponde a un kernel da avviare, passandogli parametri nelle stringhe append. La voce initrd specifica il percorso del filesystem d'avvio da caricare in memoria, root il dispositivo da montare come radice, label e alias la stringa da scrivere o il tasto da premere per selezionare quel kernel.

Tramite append, nel nostro caso LILO passa al kernel i seguenti parametri:
ramdisk_size=100000 con le dimensioni in byte del disco RAM da creare (valore copiato dalla configurazione di isolinux);
apm=power-off (Advanced Power Management) per spegnere automaticamente il computer in uscita da Knoppix (idem);
init=/etc/init che indica dove cercare, nel filesystem radice estratto dal file specificato dalla direttiva initrd, la posizione del programma init che deve proseguire l'inizializzazione del sistema;
fromhd=/dev/hda, che indica in quale partizione cercare l'immagine KNOPPIX/KNOPPIX per espandere il filesystem;
home=/dev/hda4 che indica la partizione in cui trovare la directory persistente dell'utente, successivamente creata;
myconf=/dev/hda4 che indica la partizione in cui risiederanno i file di configurazione creati da Knoppix su richiesta dell'utente;
lang=it che indica di usare la lingua italiana.

Dato che lilo.conf contiene un riferimento a /dev/hda, sotto /mnt/hda1 creo una directory dev e vi copio quanto segue dalla /dev del ramdisk di tomsrtbt,

# cp -dpR /dev/console /mnt/hda1/dev
# cp -dpR /dev/kmem /mnt/hda1/dev
# cp -dpR /dev/mem /mnt/hda1/dev
# cp -dpR /dev/null /mnt/hda1/dev
# cp -dpR /dev/ram0 /mnt/hda1/dev
# cp -dpR /dev/tty[0-6] /mnt/hda1/dev
# cp -dpR /dev/fd[01]* /mnt/hda1/dev
# cp -dpR /dev/hda* /mnt/hda1/dev
# cp -dpR /dev/hdb* /mnt/hda1/dev
# cp -dpR /dev/hdc* /mnt/hda1/dev
# cp -dpR /dev/hdd* /mnt/hda1/dev

(melius abundare quam deficere) con le opzioni, suggerite dalla documentazione,

-d, --no-dereference
Copy symbolic links as symbolic links rather than copying the files that they point to, and preserve hard link relationships between source files in the copies.

-p, --preserve
Preserve the original files’ owner, group, permissions, and timestamps.

-R, --recursive
Copy directories recursively. Distinto da -r, Copy directories recursively, copying all non-directories as if they were regular files.

Creo sotto /mnt/hda1 una directory boot e vi pongo il file boot.b. Poiché installerò LILO da tomsrtbt, e le versioni di LILO e boot.b devono corrispondere, copio quest'ultimo dal dischetto di tomsrtbt /mnt/fd0:

# cp -afr /mnt/fd0/boot.b /mnt/hda1/boot

La versione di LILO di tomsrtbt richiede, prima dell'installazione, la presenza nella cartella indicata in lilo.conf del suo boot.b, da cui copiare il codice del boot loader nel settore d'avvio. Con altre versioni il comando lilo crea boot.b automaticamente, oppure installa direttamente il boot loader nell'MBR senza creare boot.b.

Pongo in /mnt/hda1/boot un file message simile al seguente, contenente il messaggio che LILO dovrà visualizzare all'avvio, prima di caricare il kernel:

===========================================

          Knoppix From Hard Disk
          ----------------------

                2004.12.01

===========================================

     Boot:

[1]  knoppix     boot Knoppix with Linux kernel 2.4
[2]  knoppix26   boot Knoppix with Linux kernel 2.6

     or press ENTER for default (1)

Se il primo carattere corrisponde all'esadecimale FF (che non so come scrivere nel file) prima di mostrare il messaggio si cancella lo schermo.

Il file /mnt/hda1/boot/map citato in lilo.conf e sotto elencato, verrà creato da LILO mentre si installa.

A questo punto ho la seguente struttura:

# ls -alR /mnt/hda1
total 4000
drwxr-xr-x   5 root     root         1024 Dec  4 17:47 .
drwxr-xr-x   5 505      100           160 Dec  5 19:07 ..
drwxr-xr-x   2 root     root         1024 Dec  5 19:21 boot
drwxr-xr-x   2 root     root         1024 Nov 22 15:39 dev
drwxr-xr-x   2 root     root         1024 Nov 22 15:57 etc
-r--r--r--   1 root     root      1018412 Aug 22 05:22 linux24
-r--r--r--   1 root     root      1458194 Nov 18 17:19 linux26
-r--r--r--   1 root     root       799962 Aug 22 05:22 minirt24.gz
-r--r--r--   1 root     root       789544 Nov 18 17:19 minirt26.gz

/mnt/hda1/boot:
total 56
drwxr-xr-x   2 root     root         1024 Dec  5 19:21 .
drwxr-xr-x   5 root     root         1024 Dec  4 17:47 ..
-rw-r--r--   1 root     root          512 Nov 22 15:59 boot.0300
-rwxr-xr-x   1 root     root         4536 Nov 25 21:03 boot.b
-rw-------   1 root     root        46592 Nov 27 19:24 map
-rwxr-xr-x   1 root     root          352 Nov 22 14:39 message

/mnt/hda1/dev:
total 2
drwxr-xr-x   2 root     root         1024 Nov 22 15:39 .
drwxr-xr-x   5 root     root         1024 Dec  4 17:47 ..
crwxr-xr-x   1 505      100        4,   0 Nov 22 14:17 console
brwxr-xr-x   1 505      100        2,   0 May 12  2001 fd0
brwxr-xr-x   1 505      100        2,  28 May 12  2001 fd0H1440
brwxr-xr-x   1 505      100        2,  40 May 12  2001 fd0h1440
brwxr-xr-x   1 505      100        2,  60 May 12  2001 fd0u1722
brwxr-xr-x   1 505      100        2,   1 May 12  2001 fd1
brwxr-xr-x   1 505      100        2,  29 May 12  2001 fd1H1440
brwxr-xr-x   1 505      100        2,  41 May 12  2001 fd1h1440
brwxr-xr-x   1 505      100        2,  61 May 12  2001 fd1u1722
brwxr-xr-x   1 505      100        3,   0 May 12  2001 hda
brwxr-xr-x   1 505      100        3,   1 May 12  2001 hda1
brwxr-xr-x   1 505      100        3,   2 May 12  2001 hda2
brwxr-xr-x   1 505      100        3,   3 May 12  2001 hda3
brwxr-xr-x   1 505      100        3,   4 May 12  2001 hda4
brwxr-xr-x   1 505      100        3,   5 May 12  2001 hda5
brwxr-xr-x   1 505      100        3,   6 May 12  2001 hda6
brwxr-xr-x   1 505      100        3,   7 May 12  2001 hda7
brwxr-xr-x   1 505      100        3,   8 May 12  2001 hda8
brwxr-xr-x   1 505      100        3,  64 May 12  2001 hdb
brwxr-xr-x   1 505      100        3,  65 May 12  2001 hdb1
brwxr-xr-x   1 505      100        3,  66 May 12  2001 hdb2
brwxr-xr-x   1 505      100        3,  67 May 12  2001 hdb3
brwxr-xr-x   1 505      100        3,  68 May 12  2001 hdb4
brwxr-xr-x   1 505      100        3,  69 May 12  2001 hdb5
brwxr-xr-x   1 505      100        3,  70 May 12  2001 hdb6
brwxr-xr-x   1 505      100        3,  71 May 12  2001 hdb7
brwxr-xr-x   1 505      100        3,  72 May 12  2001 hdb8
brwxr-xr-x   1 505      100       22,   0 May 12  2001 hdc
brwxr-xr-x   1 505      100       22,   1 May 12  2001 hdc1
brwxr-xr-x   1 505      100       22,   2 May 12  2001 hdc2
brwxr-xr-x   1 505      100       22,   3 May 12  2001 hdc3
brwxr-xr-x   1 505      100       22,   4 May 12  2001 hdc4
brwxr-xr-x   1 505      100       22,   5 May 12  2001 hdc5
brwxr-xr-x   1 505      100       22,   6 May 12  2001 hdc6
brwxr-xr-x   1 505      100       22,   7 May 12  2001 hdc7
brwxr-xr-x   1 505      100       22,   8 May 12  2001 hdc8
brwxr-xr-x   1 505      100       22,  64 May 12  2001 hdd
brwxr-xr-x   1 505      100       22,  65 May 12  2001 hdd1
brwxr-xr-x   1 505      100       22,  66 May 12  2001 hdd2
brwxr-xr-x   1 505      100       22,  67 May 12  2001 hdd3
brwxr-xr-x   1 505      100       22,  68 May 12  2001 hdd4
brwxr-xr-x   1 505      100       22,  69 May 12  2001 hdd5
brwxr-xr-x   1 505      100       22,  70 May 12  2001 hdd6
brwxr-xr-x   1 505      100       22,  71 May 12  2001 hdd7
brwxr-xr-x   1 505      100       22,  72 May 12  2001 hdd8
crwxr-xr-x   1 505      100        1,   2 May 12  2001 kmem
crwxr-xr-x   1 505      100        1,   1 May 12  2001 mem
crwxr-xr-x   1 505      100        1,   3 May 12  2001 null
brwxr-xr-x   1 505      100        1,   1 May 12  2001 ram
brwxr-xr-x   1 505      100        1,   0 May 12  2001 ram0
brwxr-xr-x   1 505      100        1,   1 May 12  2001 ram1
brwxr-xr-x   1 505      100        1,   2 May 12  2001 ram2
brwxr-xr-x   1 505      100        1,   3 May 12  2001 ram3
brwxr-xr-x   1 505      100        1,   4 May 12  2001 ram4
brwxr-xr-x   1 505      100        1,   5 May 12  2001 ram5
crwxr-xr-x   1 505      100        4,   0 May 12  2001 tty0
crw--w--w-   1 root     root       4,   1 Nov 22 15:35 tty1
crw--w--w-   1 root     root       4,   2 Nov 22 15:01 tty2
crw--w--w-   1 root     root       4,   3 Nov 22 14:56 tty3
crw--w--w-   1 root     root       4,   4 Nov 22 14:17 tty4
crwxr-xr-x   1 505      100        4,   5 Nov 22 14:17 tty5
crwxr-xr-x   1 505      100        4,   6 May 12  2001 tty6

/mnt/hda1/etc:
total 3
drwxr-xr-x   2 root     root         1024 Nov 22 15:57 .
drwxr-xr-x   5 root     root         1024 Dec  4 17:47 ..
-rwxr-xr-x   1 root     root          558 Nov 24 21:49 lilo.conf

Si installa infine LILO con il comando

# lilo -r /mnt/hda1

con l'opzione -r in modo che cerchi lilo.conf sotto /mnt/hda1/etc e i percorsi in lilo.conf siano relativi a /dev/hda1.

LILO risponde

Added knoppix (alias 1) *
Added knoppix26 (alias 2)

creando map e boot.0300 sotto /mnt/hda1/boot.

Ad ogni successiva modifica di lilo.conf, del kernel o del file message occorrerà disinstallare LILO,

# lilo -r /mnt/hda1 -U /dev/hda

e reinstallarlo,

# lilo - r /mnt/hda1

per fargli aggiornare il file map.

Inserito finalmente il disco come primario master in una macchina adatta (*), si può assaporare l'incomparabile soddisfazione di assistere alla schermata con il proprio messaggio, che fa tanto hacker, seguita dalle righe multicolori in rapida successione di Knoppix che si avvia e si configura.

Il risultato di tutta questa fatica è una Knoppix veloce e adatta all'impiego in ambiti produttivi.

Nota. Il LILO installato è la versione minimale di tomsrtbt, che non ha nulla a che vedere con Knoppix ma, a parte il problema descritto nella nota (*), funziona ugualmente.

Cambiare versione di LILO

2006.04.15. Ho provato a installare un'altra versione di LILO per vedere se il problema del mancato avvio del disco persiste anche con una versione diversa.

Come primo problema, non trovavo una distribuzione live che insieme all'eseguibile LILO fornisse il corrispondente boot.b. Avevo letto che tale file dev'essere presente all'atto dell'installazione, altrove che viene creato quando si lancia il comando lilo, perciò ho provato a vedere cosa succede senza di esso.

Presumendo che LILO vada disinstallato usando la stessa versione che l'ha installato, ho disinstallato LILO con tomsrtbt:

# mkdir /mnt/hda1
# mount /dev/hda1 /mnt/hda1
# lilo -r /mnt/hda1 -U /dev/hda

quindi ho rinominato boot.b in una copia di riserva,

# cd /mnt/hda1/boot
# mv boot.b backup.boot.b

e ho provato a reinstallare LILO,

# lilo - r /mnt/hda1

ottenendo il messaggio d'errore

open /boot/boot.b
  No such file or directory

Quindi, il LILO di tomsrtbt vuole il suo boot.b presente nella directory indicata in lilo.conf.

D'altra parte, con SystemRescueCD il comando lilo installa direttamente il boot loader nel settore d'avvio senza creare boot.b né richiederne la presenza.

Riavvio da SystemRescueCD e lancio di nuovo il comando per installare LILO, sempre senza boot.b:

# mkdir /mnt/hda1
# mount -t ext2 /dev/hda1 /mnt/hda1
# lilo - r /mnt/hda1

(Notare che in SystemRescueCD, diversamente che in tomsrtbt, il comando mount vuole esplicitamente dichiarato il tipo di filesystem). Il sistema operativo dà inquietanti messaggi circa la struttura di /dev, che essendo copiata dal dischetto di tomsrtbt può esser diversa da come l'aspetta, quindi annuncia la creazione degli alias. L'installazione di LILO è riuscita.

Riavviando dal disco fisso, il nuovo LILO usa un proprio menu d'avvio interattivo, con le opzioni specificate in lilo.conf.

Al termine di questa prova, poiché il nuovo LILO non cambia nulla circa l'avvio del disco, lo disinstallo e reinstallo quello di tomsrtbt, riportandomi alla situazione precedente.

Configurazione di Knoppix e creazione della persistent home

Come ogni sistema Linux, Knoppix è personalizzabile secondo le preferenze dell'utente, che può ad esempio scegliere lo sfondo o dare all'interfaccia grafica KDE un aspetto simile a quello di Windows 98, per gli abitudinari.

In questa guida abbiamo riservato la partizione /dev/hda4 per i file di configurazione knoppix.sh e configs.tbz, creati e aggiornati da Knoppix scegliendo Save Knoppix configuration dal menu KNOPPIX - Configure di KDE e specificando hda4 come partizione di destinazione.

Scegliendo Create a persistent KNOPPIX home directory si salva la directory dell'utente cui corrisponde la sessione di KDE nel file knoppix.img, che viene creato in hda4 e verrà aggiornato automaticamente ad ogni uscita. A questo file di dimensione fissa ho assegnato in fase di creazione 100 MB (4) su circa 150 disponibili, per lasciare un po' di spazio ai file di configurazione e ad eventuali altri file. Si può accedere al contenuto della directory montando knoppix.img, che contiene un filesystem ext2, in tomsrtbt o altro sistema Linux:

# mkdir /mnt/hda4
# mkdir /mnt/home
# mount /dev/hda4 /mnt/hda4
# mount -o loop /mnt/hda4/knoppix.img /mnt/home
# cd /mnt/home
# ls -al

e così via.

Conclusione

Non pretendo di aver detto tutto, e poi questa è una delle mie prime prove non banali. Alcune delle cose descritte le ho provate, altre soltanto lette e riportate come le ho capite. Per esempio la sezione Un condensato di teoria è interamente basata su letture piuttosto che esperimenti, e i condensati sono spesso imprecisi. Errori, inesattezze e approssimazioni possono perciò annidarsi a molteplici livelli. Chi ne notasse, o volesse aggiungere osservazioni o precisazioni, è benvenuto.

Cronologia

2006.04.15 Aggiunte alcune note su come cambiare la versione di LILO installata.
2005.07.05 Qualche piccola aggiunta alla sezione dubbi.
2005.05.05 Aggiunta la cronologia.
2005.04.26 Qualche aggiustamento del testo in occasione della traduzione in inglese.
2004.12.01 Stesura originale.

Dubbi

Come si fa a inserire all'inizio del file message il carattere che ripulisce lo schermo? Ho provato inutilmente tomshexd.

Il contenuto di KNOPPIX/KNOPPIX espande il filesystem radice inizialmente caricato nel ramdisk, o ricrea da capo nel ramdisk un nuovo filesystem?
R. Ho letto in qualche posto che crea un nuovo ramdisk – immagino sovrascrivendo il vecchio, e immagino anche che il kernel del sistema espanso possa anche differire da quello usato per l'avvio.

Detto file KNOPPIX che formato ha? sotto che forma contiene un file system? Non sono riuscito a montarlo così com'è.
R. È un filesystem compresso in un file che si comprime e decomprime con una apposita utility. Si veda Remastering Knoppix sul sito.

La partizione di swap è effettivamente utilizzata? Non vedo alcuna menzione a uno swapon tra le righe visualizzate all'avvio.

Come mai l'euro è così forte rispetto al dollaro, e così debole rispetto alla lira?


* Sul Pentium II 266 MHz con cui navigo, su cui intendevo usarlo, non vuol saperne di avviarsi per ragioni tutto sommato oscure. Lo stesso succede con un AMD K2 450.

All'avvio, appare il frustrante messaggio

Disco non di avvio - Sostituire il disco e premere un tasto

e dalla schermata del BIOS il disco non viene riconosciuto, neppure con l'autodetect. Parrebbe un problema hardware, ma

– su tante prove effettuate, per due volte il disco si è avviato;
– tomsrtbt vede, monta e legge il disco normalmente anche su questa macchina;
– usato in precedenza come secondario master con un'unica partizione FAT32, con Windows 98 su primario master, il disco non ha mai dato problemi;
– su un altro computer, un Pentium III 800 MHz, il disco è riconosciuto e avviato regolarmente e il sistema funziona, escludendo che il problema dipenda da errori nelle operazioni sopra illustrate.

Ogni suggerimento o spiegazione del mistero saranno benvenuti.

Ipotizzando che il mancato avvio del disco su tutte le macchine potesse imputarsi alla versione ridotta di LILO fornita da tomsrtbt, ho provato a installare la versione di SystemRescueCD, senza alcun cambiamento.

1. "how to put a Knoppix distribution onto a hard drive or a Compact Flash IDE drive without actually installing it. (The knoppix.net HowTo page uses the term "HD Based" to contrast this scenario with an "HD install"). A drive with such a "non-installed" OS is used just like a "live CD", with the drive serving in lieu of the CDROM. This allows the CDROM drive to be used for other things, and is typically faster and quieter than using the CDROM.
[...] Why not just do a normal hard drive installation? [...] one of the beauties of Knoppix is that it represents a complex unit that can be upgraded enmasse, with all local customization kept completely separate (not intermixed with the "installed" files). [...] there is an opportunity to adjust the default boot options to your liking, so you don't have to type in your desired kernel boot options every time you start Knoppix.
— Terry Gray, Running KNOPPIX from HD or CF Without Actually Installing it!

2. "Knoppix will take exclusive control of the partition it boots from, so saving configs to it or using it for your home directory will not work." — Terry Gray, Running KNOPPIX from HD or CF Without Actually Installing it!

3. "I chose to have a separate dedicated partition for the persistent home feature of Knoppix, rather than use the facility to create a loopback file for HOME that shares an existing partition. This makes it easier for me to deal with expanding the HOME partition if needed later, or to access HOME files in other contexts than the running Knoppix system. On the other hand, if you use the "knoppix.img" loopback file to save the HOME files in, you can use a single partition to share both it and the saved configuration files, knoppix.sh and configs.tbz." — Terry Gray, Running KNOPPIX from HD or CF Without Actually Installing it!

4. Inizialmente avevo assegnato a knoppix.img 140 MB, ma configs.tbz cresce in fretta e salvare nuove configurazioni è presto divenuto impossibile. Per conservare la configurazione, ho spostato lo knoppix.img esistente in un'altra partizione e in hda4 ne ho creato uno nuovo di 100 MB copiandovi, dopo aver montato entrambi, il contenuto del vecchio.

Riferimenti

Georg O'Keefe, From Power Up To Bash Prompt

Terry Gray, Running KNOPPIX from HD or CF Without Actually Installing it!

Tom Fawcett, The Linux Bootdisk HOWTO. 3. Bootdisks and the boot process


Autore: Gatto Selvaggio. L'autore si riserva ogni diritto applicabile. L'uso da parte di terzi è soggetto a una licenza Creative Commons. Per usi non contemplati da tale licenza, compreso l'uso commerciale, o in caso di dubbi, si prega di attenersi al precetto "chiedete e vi sarà dato".

2732 visite dal 21 aprile 2005

PAGINA PRINCIPALE