User Tools

Site Tools


cn:ccr:formazione:centos7:2018-11:avvio

Processo di avvio (esercitazione)

Parte prima (lost in the bootprocess)

Testo

Siete soli, di fronte a voi un pc, nel pc una macchina virtuale CentOS 7, contrassegnata con il nome di bootprocess. Non vi ricordate nulla di cio' che che e' accaduto prima, sapete solo una cosa: la vostra sopravvivenza e quella di tutta l'umanita' dipende dal fatto che riusciate ad avviare la VM, inserire username e password ed eseguire il login come utente root. Avete 30 minuti per completare la prova.

Traccia:

  • utilizzate i comandi di grub per capire il layout delle partizioni ed i relativi UUID e LABEL

Il comando ls mostra i device disponibili con i relativi UUID e LABEL. Nella prima partizione del primo disco si tovano il kernel e l'initramfs.

  • cercate, sempre via grub, il percorso del kernel e dell'initramfs

Eseguite il comando linux16 seguito dal percorso relativo al kernel e dal parametro root=LABEL=<label della partizione di root>. Dalla label capirete qual'e' la partizione di root.

Eseguite il comando initrd16 seguito dal percorso relativo all'initramfs

Aiutatevi con il TAB per l'autocompletamento dei comandi

  • avviate il sistema

Eseguite il comando boot per partire

  • Se il sistema non si avvia, utilizzate le modalita' di emergenza per riparare cio' che non funziona

Il sistema non vi presentera' la prompt di login. Dovrete riavviare in rescue mode (aggiungete il parametro systemd.unit=rescue.target).

Ricordate che per modificare la password di root dovete usare il boot in modalita' rd.break, montare /sysroot in write mode, eseguire un chroot su /sysroot ed eseguire il comando passwd

Parte Seconda (The Hero's Return)

Testo

Dopo l'impegnativa prova di rescue della VM, e' il momento di godersela. E allora vediamo come possiamo giocare con Dracut e GRUB2, creando initramfs, moduli e menu di avvio personalizzati.

Traccia:

  • Creare un modulo di Dracut che stampi un banner durante l'esecuzione dell'initramfs. Il testo del banner dovra' essere acquisito da un parametro passato al kernel nel menu di GRUB2

Create la directory /usr/lib/dracut/modules.d/99banner/. Provate a capire qual'e' la struttura dei file module-setup.sh dagli altri moduli presenti. In ogni caso dentro la directory /root/newmodule/ ne trovate uno gia' pronto.

  • Creare un initramfs che comprenda il modulo banner

Il comando per stampare un bannet ascii e' figlet -f /usr/share/figlet/big.flf testo_banner, provatelo sulla shell. Lo script dovra' leggere dal parametro che passerete al kernel il testo del banner. Lo trovate nella directory /root/newmodule/. Analizzatelo per capire quello che esegue e copiatelo nella directory del modulo.

Eseguite un

dracut --list-modules 

per verificare che il modulo banner sia disponibile. Create l'initramfs modificata eseguendo

dracut --add banner -f /boot/initramfs-infnbanner.img 

Verificate con il comando lsinitrd /boot/initramfs-infnbanner.img |grep -e usr/bin/figlet -e usr/share/figlet/big.flf -e 99-banner.sh che i file del nuovo modulo siano presenti.

  • Modificare il file di configurazione di GRUB2 aggiungendo una voce di menu che avvii la nuova initramfs

Nel file /etc/grub.d/40_custom create un nuovo menu aggiungendo al kernel il parametro infnbanner e rimuovendo i parametri quiet e rhgb. Avviate selezionando la nuova voce di menu.

cn/ccr/formazione/centos7/2018-11/avvio.txt · Last modified: 2018/11/27 13:23 by corosu@infn.it

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki