6.6. Opprette essensielle filer og symlinker

Noen programmer bruker faste koblinger til programmer som ikke eksisterer ennå. For å tilfredsstille disse programmene, oppretter du en rekke symbolske lenker som vil bli erstattet av ekte filer i løpet av dette kapitlet etter at programvaren er installert:

ln -sv /tools/bin/{bash,cat,chmod,dd,echo,ln,mkdir,pwd,rm,stty,touch} /bin
ln -sv /tools/bin/{env,install,perl,printf} /usr/bin
ln -sv /tools/lib/libgcc_s.so{,.1} /usr/lib
ln -sv /tools/lib/libstdc++.{a,so{,.6}} /usr/lib

ln -sv bash /bin/sh

Formålet med hver lenke:

/bin/bash
   Mange bash skripter spesifiserer /bin/bash.

/bin/cat
  Dette stinavnet er hardkodet i Glibcs konfigurasjonsskript.

/bin/dd
  Stien til dd blir hardkodet i verktøyet /usr/bin/libtool.

/bin/echo
  Dette for å tilfredsstille en av testene i Glibcs testsuite, som forventer /bin/echo.

/usr/bin/env
  Dette stinavnet er hardkodet i noen pakkers oppbyggingsprosedyrer.

/usr/bin/install
  Stien til install vil bli hardkodet inn i filen /usr/lib/bash/Makefile.inc.

/bin/ln
  Stien til ln vil bli hardkodet inn i /usr/lib/perl5/5.30.1/<target-triplet>/Config_heavy.pl filen.

/bin/pwd
  Noen konfigurasjonsskripter, spesielt Glibc, har dette stinavnet hardkodet.

/bin/rm
  Stien til rm vil bli hardkodet inn i /usr/lib/perl5/5.30.1/<target-triplet>/Config_heavy.pl filen.

/bin/stty
  Dette stinavnet er hardkodet til Expect, derfor er det nødvendig for Binutils og GCC-testsuiter.

/usr/bin/perl
  Mange Perl skripter hardkoder denne stien til perl programmet.

/usr/lib/libgcc_s.so{,.1}
  Glibc trenger dette for at pthreads biblioteket skal fungere.

/usr/lib/libstdc++{,.6}
  Dette trengs av flere tester i Glibcs testsuite, så vel som for C++ støtte i GMP.

/bin/sh
  Mange skall skript hardkoder /bin/sh.

Historisk sett opprettholder Linux en liste over monterte filsystemer i filen /etc/mtab. Moderne kjerner vedlikeholder denne listen internt og eksponerer den for brukeren via /proc filsystemet. For å tilfredsstille verktøy som forventer tilstedeværelsen av /etc/mtab, oppretter du følgende symbolsk lenke:

ln -sv /proc/self/mounts /etc/mtab

For at bruker root skal kunne logge på og for at navnet "root" skal gjenkjennes, må det være relevante oppføringer i /etc/passwd og /etc/group filene.

Opprett /etc/passwd filen ved å kjøre følgende kommando:

cat > /etc/passwd << "EOF"
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/dev/null:/bin/false
daemon:x:6:6:Daemon User:/dev/null:/bin/false
messagebus:x:18:18:D-Bus Message Daemon User:/var/run/dbus:/bin/false
nobody:x:99:99:Unprivileged User:/dev/null:/bin/false
EOF

Det faktiske passordet for root (“x” som brukes her er bare en plassholder) vil bli satt senere.

Opprett /etc/group filen ved å kjøre følgende kommando:

cat > /etc/group << "EOF"
root:x:0:
bin:x:1:daemon
sys:x:2:
kmem:x:3:
tape:x:4:
tty:x:5:
daemon:x:6:
floppy:x:7:
disk:x:8:
lp:x:9:
dialout:x:10:
audio:x:11:
video:x:12:
utmp:x:13:
usb:x:14:
cdrom:x:15:
adm:x:16:
messagebus:x:18:
input:x:24:
mail:x:34:
kvm:x:61:
wheel:x:97:
nogroup:x:99:
users:x:999:
EOF

De opprettede gruppene er ikke en del av noen standard, de er grupper som delvis avgjøres av kravene til Udev konfigurasjonen i dette kapittelet, og delvis etter en vanlig konvensjon satt av en rekke eksisterende Linux-distribusjoner. I tillegg er noen testsuiter avhengige av bestemte brukere eller grupper. Linux Standard Base (LSB, tilgjengelig på http://www.linuxbase.org) anbefaler bare at foruten gruppen root med en gruppe-ID (GID) på 0, er en gruppe bin med en GID på 1 til stede. Alle andre gruppenavn og GID-er kan fritt velges av systemadministratoren siden velskrevne programmer ikke er avhengig av GID-nummer, men heller bruker gruppens navn.

For å fjerne “I have no name!”, start et nytt skall. Siden en full Glibc ble installert i kapittel 5 og /etc/passwd og /etc/group filene er opprettet, vil brukernavn og gruppe navnoppløsning nå fungere:

exec /tools/bin/bash --login +h

Legg merke til bruken av +h direktivet. Dette forteller bash om ikke å bruke sin interne sti hashing. Uten dette direktivet, ville bash huske stiene til binærene den har utført. For å sikre bruk av de nylig kompilerte binærene så snart de er installert, vil +h direktivet bli brukt i løpet av dette kapitlet.

Påloggings-, agetty- og init-programmene (og andre) bruker en rekke loggfiler for å registrere informasjon, for eksempel hvem som var logget inn i systemet og når. Disse programmene vil imidlertid ikke skrive til loggfilene hvis de ikke allerede eksisterer. Initialiser loggfilene og gi dem riktige tillatelser:

touch /var/log/{btmp,lastlog,faillog,wtmp}
chgrp -v utmp /var/log/lastlog
chmod -v 664 /var/log/lastlog
chmod -v 600 /var/log/btmp

Filen /var/log/wtmp registrerer alle pålogginger og utlogginger. Filen /var/log/lastlog registrerer når hver bruker sist logget inn. /var/log/faillog registrerer mislykkede påloggingsforsøk. Filen /var/log/btmp registrerer de ugyldige påloggingsforsøkene.

Filen /run/utmp registrerer brukerne som for øyeblikket er logget inn. Denne filen opprettes dynamisk i oppstartsskriptene.

Forrige Hjem Neste