7.3. Forberede det virtuelle kjernefilsystemer

Applikasjoner som kjører i brukerområdet bruker forskjellige filsystemer opprettet av kjernen for å kommunisere med selve kjernen. Disse filsystemene er virtuelle: ingen diskplass brukes til dem. Innholdet i disse filsystemene ligger i minnet. Disse filsystemene må monteres i $LFS katalogtreet slik at applikasjonene kan finne dem i chroot miljøet.

Begynn med å lage mappene som disse virtuelle filsystemene vil være montert på:

mkdir -pv $LFS/{dev,proc,sys,run}

7.3.1. Montering og fylling av /dev

Under en normal oppstart av et LFS systemet vil kjernen automatisk montere devtmpfs filsystemet på /dev mappen; kjernen oppretter enhetsnoder på det virtuelle filsystemet under oppstartsprosessen, eller når en enhet først oppdages eller åpnes. Udev nissen kan endre eierskapet eller tillatelsene til enhetsnodene opprettet av kjernen, og lage nye enhetsnoder eller symbolkoblinger for å lette arbeidet til distro vedlikeholdere og systemadministratorer. (Se Section 9.3.2.2, “Oppretting av enhetsnode” for detaljer.) Hvis vertskjernen støtter devtmpfs, kan vi enkelt montere en devtmpfs$LFS/dev og stole på at kjernen fyller den.

Men noen vertskjerner mangler devtmpfs støtte; disse vertsdistroene bruker forskjellige metoder for å lage innholdet i /dev. Så den eneste verts-agnostiske måten å fylle $LFS/dev mappen er ved å bind-montere vertssystemets /dev mappe. En bind-montering er en spesiell type montering som lager et mappeundertre eller en fil synlig på et annet sted. Bruk følgende kommando for å gjøre dette.

mount -v --bind /dev $LFS/dev

7.3.2. Montering av det virtuelle kjernefilsystemer

Monter nå de gjenværende virtuelle kjernefilsystemene:

mount -vt devpts devpts -o gid=5,mode=0620 $LFS/dev/pts
mount -vt proc proc $LFS/proc
mount -vt sysfs sysfs $LFS/sys
mount -vt tmpfs tmpfs $LFS/run

Betydningen av monteringsalternativene for devpts:

gid=5

Dette sikrer at alle devpts opprettede enhetsnoder eies av gruppe ID 5. Dette er IDen vi skal bruke senere for tty gruppen. Vi bruker gruppe-ID i stedet for et navn, siden vertssystemet kan bruke en annen ID for sitt tty gruppen.

mode=0620

Dette sikrer at alle devpts opprettede enhetsnoder har modus 0620 (bruker lesbar og skrivbar, gruppeskrivbar). Sammen med alternativet ovenfor, sikrer dette at devpts vil opprette enhetsnoder som oppfylle kravene til grantpt(), som betyr Glibc pt_chown hjelper binær (som ikke er installert som standard) ikke er nødvendig.

I noen vertssystemer, /dev/shm er en symbolsk lenke til en mappe, vanligvis /run/shm. /run tmpfs ble montert ovenfor, så i dette tilfellet er det bare en mappe som må opprettes med de riktige tillatelsene.

I andre vertssystemer /dev/shm er et monteringspunkt for en tmpfs. I så fall vil monteringen av /dev ovenfor bare opprette /dev/shm i chroot miljøet som en mappe. I denne situasjonen monterer vi eksplisitt en tmpfs:

if [ -h $LFS/dev/shm ]; then
  install -v -d -m 1777 $LFS$(realpath /dev/shm)
else
  mount -vt tmpfs -o nosuid,nodev tmpfs $LFS/dev/shm
fi