Creazione Directories
Prevedendo di dover entrare in chroot più volte ed in tempi diversi, dal momento che l'iter di costruzione del sistema definitivo mi appariva abbastanza lungo, ho realizzato un piccolo script per reimpostare i mount corretti prima di dare il comando chroot.
#!/bin/bash mount -v --bind /dev $LFS/dev mount -vt devpts devpts $LFS/dev/pts -o gid=5,mode=620 mount -vt proc proc $LFS/proc mount -vt sysfs sysfs $LFS/sysHo chiamato questo script prechr e l'ho reso eseguibile cambiandone i permessi con:
chmod +x prechrquindi ad ogni nuova sessione di lavoro (quando trovo il tempo e ne ho voglia), da amministratore, comincio il lavoro nel modo seguente:
mount |grep lfs
./prechr
chroot "$LFS" /tools/bin/env -i \ HOME=/root \ TERM="$TERM" \ PS1='\u:\w\$ ' \ PATH=/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin \ /tools/bin/bash --login +h
A questo punto, dopo essersi posizionati in chroot, occorre preparare alcune strutture nel file-system LFS. Bisogna creare un albero di directory standard inserendo uno ad uno i seguenti comandi:
mkdir -pv /{bin,boot,etc/{opt,sysconfig},home,lib,mnt,opt,run} mkdir -pv /{media/{floppy,cdrom},sbin,srv,var} install -dv -m 0750 /root install -dv -m 1777 /tmp /var/tmp mkdir -pv /usr/{,local/}{bin,include,lib,sbin,src} mkdir -pv /usr/{,local/}share/{doc,info,locale,man} mkdir -v /usr/{,local/}share/{misc,terminfo,zoneinfo} mkdir -pv /usr/{,local/}share/man/man{1..8}
Le directory vengono create con il permesso predefinito 755, ma in qualche caso ciò deve essere modificato. Nei comandi precedenti vengono fatti due cambiamenti: uno alla directory home dell'utente root e un altro alle directory per i file temporanei.
Il primo cambiamento di modalità assicura che non tutti possano entrare nella directory /root, la stessa cosa che un utente normale avrebbe fatto con la propria home directory. Il secondo cambio di modalità assicura che tutti gli utenti possano scrivere nelle directory /tmp e /var/tmp, ma non possano rimuovere da queste i file di altri utenti. Quest'ultima operazione è proibita dal cosiddetto sticky bit, il bit più alto nella maschera 1777.
Poi diamo ancora il seguente comando:
for dir in /usr /usr/local; do ln -sv share/{man,doc,info} $dir done case $(uname -m) in x86_64) ln -sv lib /lib64 && ln -sv lib /usr/lib64 && ln -sv lib /usr/local/lib64 ;; esac
E concludiamo con i seguenti:
mkdir -v /var/{log,mail,spool} ln -sv /run /var/run ln -sv /run/lock /var/lock mkdir -pv /var/{opt,cache,lib/{misc,locate},local}
Nota sulla conformità a FHS
L'albero delle directory si basa sul Filesystem Hierarchy Standard, consultabile su FHS.
Oltre alla gerarchia FHS abbiamo creato dei link simbolici di compatibilitlà per le directory man, doc, info
, poiché molti pacchetti cercano ancora di installare la loro documentazione in /usr/<directory>
o /usr/local/<directory>
invece che in /usr/share/<directory>
o /usr/local/share/<directory>
.
FHS non obbliga ad una precisa struttura della sottodirectory /usr/local/share
, quindi abbiamo creato solo le directory strettamente necessarie. Tuttavia si è liberi di creare queste directory se si preferisce conformarsi più strettamente allo standard FHS.
Un punto importante dell'umana saggezza sta nella giusta proporzione in cui dedichiamo la nostra attenzione, parte al presente, parte al futuro, affinché l'uno non ci guasti l'altro. Molti vivono troppo nel presente: le persone leggere; altri troppo nell'avvenire: i pavidi e gli ansiosi. Raramente uno saprà tenere il giusto mezzo.
Arthur Schopenhauer