Table of Contents
La chiavetta magica
Come creare una chiavetta USB per avviare il PC con GNU/Linux, senza installarlo su hard disk. Al termine della procedura la chiavetta non conterrà una live ma un'installazione. La chiavetta sarà considerato come un hard disk esterno.
Installare su memoria USB è una procedura un po' lenta, perciò, dopo la prima chiavetta, se ne può creare un'immagine di back up da cui poter produrre più velocemente altre chiavette senza ripetere tutta l'installazione.
ATTENZIONE: seguire le istruzioni coscienti del fatto che potrebbero contenre errori o omissioni. Nel caso in cui trovate un errore siete pregati di segnalarmelo…
GPT
Prima di iniziare bisogna scoprire se il proprio computer di avvia in modalità UEFI oppure BIOS (Legacy). Nel primo caso, si dovrà usare una tabella delle partizioni GPT, nel secondo caso di tipo MBR (msdos).
Come creare la chiavetta
- scegliere una distribuzione a proprio piacere (debian, mint, ubuntu,…)
- scaricare il live cd di installazione
- usare una chiavetta USB vuota da almeno 16 GB. NOTA: evitare chiavette U3!
- inserire la chiavetta e verificare il nome con cui è stata riconosciuta dal tuo sistema operativo Linux (sdc?) usando il comando
dmesg
- assicurarsi che la chiavetta non sia stata montata automaticamente
mount
- in caso contrario va smontata, ma senza espellerla, cioè senza eliminare il file /dev/…
- per poter ripristinare una chiavetta al suo stato originale, si può eseguire un backup della tabella delle partizioni
sfdisk -d /dev/sdc > sfdisk-udb.txt; fdisk -l /dev/sdc > fdisk-usb.txt
- GPT
sgdisk -p /dev/sdc > sgdisk-usb.txt
- È inutile ora eseguire un back up dell'identificatore UUID. Meglio farlo dopo
l'installazione di Linux, dato che sarebbe modificato durante l'installazione.
Partizioni
- le partizioni della chiavetta possono essere create usando gparted oppure parted
BIOS con MBR
- gparted: creare 2 partizioni delle seguenti dimensioni (o superiori):
- EXT4 9.24 GB
- SWAP 1 GB
- e le seguenti etichette:
- sdc1 radiceusb
- sdc2 swapp
- parted: codice per chiavetta di 16GB
parted /dev/sdc rm 1; parted /dev/sdc mkpart primary ext4 2048 19374078 ; parted /dev/sdc mkpart primary linux-swap 19374079 21374807 ;
- per mettere le etichette
e2label /dev/sdc1 radic-usb;
- per modificare un UUID e per verificare il valore
tune2fs -L etichetta -U c100d5a2-f162-11cf-9ece-0020afc76f16 /dev/sdxx
mkswap -U d2b005a2-f162-11cf-9ece-0020afc76f96 /dev/sdxx
ls -l /dev/disk/by-uuid
in chroot? swapon -U d2b9d5a2-f162-11cf-9ece-0020afc76f96
- a volte le chiavette usate per live hanno errori nella signature, come se ci fosse un CD ISO 9660
wipefs -n /dev/sdc
wipefs -o ........
UEFI con GPT
Nei nuovi computer si possono installare dei sistemi operativi che si avviano in modo diverso dal passato. Le principali differenze sono visibili entrando nella configurazione segreta della scheda madre, premendo un tasto speciale, non appena si preme “Power”
Ad esempio:
- nella configurazione si può trovare scritto
- “boot UEFI”, oppure “boot legacy”
- “secure boot” (da disattivare, se possibile!)
- “enable boot from usb”
UEFI richiede di creare partizioni GPT invece che MBR. UEFI richiede di creare una partizione di 512 MB (fat32)
- quindi se vuoi creare partizioni usando una tabella tipo GPT devi iniziare la procedura con il comando
parted /dev/sdc mklabel gpt
- poi devi creare tre partizioni: una partizione FAT32 per contenere il firmware EFI, una EXT4 e una swap
- parted: codice per chiavetta di 16GB
parted /dev/sdc rm 1; parted /dev/sdc mkpart primary fat32 2048 1050623 ; parted /dev/sdc mkpart primary ext4 1050624 20424602 ; parted /dev/sdc mkpart primary linux-swap 20424602 22425330 ;
Installazione
Il sistema operativo si installa grazie ad un cd (.iso) da scaricare dal sito della distribuzione preferita.
Spesso, invece di masterizzare un CD, si copia il file .iso in una chiavetta USB con questo comando: (quindi serve una seconda chiavetta USB da almeno 4 GB)
dd if=file.iso of=/dev/sdx bs=4M conv=fsync
- (riavviare il pc con la chiavetta USB da 4GB inserita)
- Il CD di installazione si potrebbe avviare in modalità BIOS oppure UEFI, a seconda delle impostazioni del proprio computer. Qui si vedono due esempi di programma di installazione per Debian GNU/Linux. (Su Ubuntu la differenza non viene visualizzata in modo così chiaro).
Attenzione, se il tuo hard disk contiene una pre-esistente partizione swap, devi impedire al programma di installazione di usarla
GRUB
Come detto il tuo computer potrebbe essere configurato in due diverse modalità di caricamento del sistema operativo
BIOS
UEFI
Se hai avviato Ubuntu Live CD e vuoi sapere se è stato avviato in BIOS mode oppure in UEFI mode, basta aprire un terminale e scrivere questo comando:
efibootmgr
Se produce errore, sei nel caso di BIOS mode
Al termine viene installato anche GRUB. Anche GRUB è installato in modo diverso in UEFI mode. Dovrebbe essere installato sempre sulla chiavetta, non sul disco fisso
SE PER ERRORE VENISSE INSTALLATO SUL DISCO FISSO, la chiavetta non si avvierà su un altro pc.
- (riavviare il pc) provare ad avviare un ALTRO pc con la chiavetta
- configurare la scheda di rete e …
- installare nella chiavetta tutti i pacchetti necessari (dia, libreoffice, evince, g++, openjdk-17-jdk)
fstab
Ho trovato molto utile editare il file /etc/fstab in questo modo per
- avere meno tentativi di accesso alla memoria usb (perché è lenta)
- velocizzare firefox
- (ricordarsi di sostituire le 'x')
Aprire firefox e digitare il seguente comando:
about:cache
Modificare /etc/fstab aggiungendo queste righe
none /home/nomeutente/.mozilla/firefox/xxxxxxxxxx.default/Cache tmpfs defaults 0 0
- oppure vedere anche questi tutorial
- oppure vedere anche questi pacchetti
- eatmydata
- unburden-home-dir
Come fare un back up della chiavetta
- (per ext2) comando per salvare ogni partizione in un file compresso
partimage -z 1 save /dev/sdc3 ./file3
- (per ext4) in alternativa
partclone.ext4 --clone --source /dev/sdx1 --output file-immagine
Ricordarsi che Linux assegna ad ogni partizione un UUID (si trova nel file /etc/fstab ), quindi è necessario copiare a parte anche questo file
- creare delle partizioni con il giusto UUID nelle chiavette degli studenti
ls -l /dev/disk/by-uuid
Come clonare la chiavetta per tutti gli alunni
- eseguire i precedenti punti per creare le partizioni
- eseguire l'installazione del nuovo sistema e fare il backup completo come descritto nel precedente paragrafo
- dopo aver ottenuto la prima chiavetta è possibile generare tutte le altre come cloni, usando partimage oppure partclone per ripristinare tutte le partizioni
partimage -z 1 restore /dev/sdxx ./filex
partclone.ext4 --restore --source file-immagine --output /dev/sdx1
Ora attenzione ai valori UUID della chiavetta originale (già analizzati in fstab)
tune2fs -L etichetta -U c1b9d5a2-f162-11cf-9ece-0020afc76f16 /dev/sdxx
Manca ancora il boot manager (grub2), vedere paragrafo successivo
Come rendere una chiavetta clonata avviabile (installare grub con chroot)
- Il proprio sistema deve essere a 64 bit, come quello nella chiavetta appena creata, cioè si deve usare una distribuzione con la stessa architettura del sistema da ripristinare (x86_64). Puoi usare questo comando per scoprire la tua architettura:
uname -a
inserire la chiavetta e verificare il nome con cui è stata riconosciuta (sdc?)
dmesg
- assicurarsi che non sia montata
mount
- ricordarsi in quale partizione si trova installata (sdc1? sdc2?) la radice del file sistem /
Preparazione per chroot:
mount /dev/sdc2 /mnt
for i in /dev /dev/pts /proc /sys /sys/firmware/efi/efivars /run; do mount --bind $i /mnt$i; done;
chroot /mnt
SE HAI UN SISTEMA EFI DEVI LEGGERE PRIMA QUI
EFI
nel caso GPT e UEFI boot si deve installare un ulteriore pacchetto
grub-efi efibootmgr grub-efi-amd64-signed
anche il mount è diverso, in chroot è necessario montare una ulteriore partizione:
mount /dev/sdc2 /mnt ; mount /dev/sdc1 /mnt/boot/efi
grub-setup /dev/sdc
exit
for i in /sys/firmware/efi/efivars /run /sys /proc /dev/pts /dev; do umount /mnt$i; done; sleep 1; umount /mnt
- verificare che la chiavetta funzioni avviandoci un computer
for i in /dev /dev/pts /proc /sys /sys/firmware/efi/efivars /run ; do mount -B $i /mnt$i; done;
chroot /mnt
efibootmgr (QUESTO COMANDO NON DEVE DARE ERRORE)
update-grub; grub-install /dev/sdc; update-grub