4.4. Sette opp miljøet

Sett opp et godt arbeidsmiljø ved å lage to nye oppstartsfiler for bash skallet. Mens du er logget inn som bruker lfs, utsted følgende kommando å lage en ny .bash_profile:

cat > ~/.bash_profile << "EOF"
exec env -i HOME=$HOME TERM=$TERM PS1='\u:\w\$ ' /bin/bash
EOF

Når du er logget på som bruker lfs, det første skallet er vanligvis et login skall som leser filen /etc/profile fra verten (som sannsynligvis inneholder noen innstillinger og miljøvariabler) og deretter .bash_profile. exec env -i.../bin/bash kommandoen i .bash_profile filen erstatter det kjørende skallet med et nytt med et helt tomt miljø, bortsett fra HOME, TERM, og PS1 variabler. Dette sikrer at ingen uønskede og potensielt farlige miljøvariabler fra vertssystemet lekker inn i byggemiljøet. Teknikken som brukes her oppnår målet om å sikre et rent miljø.

Den nye instansen av skallet er et non-login skall, som ikke leser, og utfører, innholdet i /etc/profile eller .bash_profile filer, men heller leser og kjører .bashrc filen istedet. Opprett .bashrc filen nå:

cat > ~/.bashrc << "EOF"
set +h
umask 022
LFS=/mnt/lfs
LC_ALL=POSIX
LFS_TGT=$(uname -m)-lfs-linux-gnu
PATH=/usr/bin
if [ ! -L /bin ]; then PATH=/bin:$PATH; fi
PATH=$LFS/tools/bin:$PATH
CONFIG_SITE=$LFS/usr/share/config.site
export LFS LC_ALL LFS_TGT PATH CONFIG_SITE
EOF

Betydningen av innstillingene i .bashrc

set +h

set +h kommandoen slår av bash's hashfunksjon. Hashing er vanligvis en nyttig funksjon—bash bruker en hashtabell for å huske banen til kjørbare filer for å unngå å søke i PATH gang på gang for å finne den samme kjørbare filen. Imidlertid bør de nye verktøyene brukes så snart de er installert. Ved å slå av hashfunksjonen, vil skallet alltid søke PATH når et program kjøres. Som sådan vil skallet finne de nylig kompilerte verktøyene i $LFS/tools/bin så snart de er det tilgjengelig uten å huske en tidligere versjon av det samme programmet levert av vertsdistroen, i /usr/bin eller /bin.

umask 022

Å sette brukerfilopprettingsmasken (umask) til 022 sikrer at nye opprettede filer og mapper bare kan skrives av eieren, men er lesbar og kjørbar av alle (forutsatt at standardmoduser brukes av open(2) systemkall, vil nye filer ende opp med tillatelse modus 644 og mapper med modus 755).

LFS=/mnt/lfs

LFS variabelen skal settes til det valgte monteringens punkt.

LC_ALL=POSIX

LC_ALL variabel styrer lokaliseringen av visse programmer, slik at meldingene deres følger konvensjonene i et spesifisert land. Innstillingen LC_ALL til POSIX eller C (de to er likeverdige) sikrer at alt fungerer som forventet i chroot miljøet.

LFS_TGT=(uname -m)-lfs-linux-gnu

LFS_TGT variabel setter en ikkestandard, men kompatibel maskin beskrivelse for bruk når du bygger vår krysskompiler og linker og når du krysskompiler vår midlertidige verktøykjede. Mer informasjon finnes i Toolchain Technical Notes.

PATH=/usr/bin

Mange moderne Linux distribusjoner har slått sammen /bin og /usr/bin. Når dette er tilfelle, standard PATH variabel må settes bare til /usr/bin/ for Kapittel 6 miljøet. Når dette ikke er tilfelle, legger følgende linje til /bin til stien.

if [ ! -L /bin ]; then PATH=/bin:$PATH; fi

Hvis /bin er ikke et symbolsk lenke, så må den legges til PATH variabelen.

PATH=$LFS/tools/bin:$PATH

Ved å putte $LFS/tools/bin foran standard PATH, krysskompilatoren installert i begynnelsen av Kapittel 5 blir plukket opp av skallet umiddelbart etter installasjonen. Dette, kombinert med å slå av hashing, begrenser risikoen for at kompilatoren fra verten brukes i stedet for krysskompilator.

CONFIG_SITE=$LFS/usr/share/config.site

I Kapittel 5 og Kapittel 6, hvis denne variabelen ikke er satt, configure skriptet kan forsøke å laste inn konfigurasjonselementer som er spesifikke for enkelte distribusjoner fra /usr/share/config.site på vertssystemet. Overstyr det for å forhindre potensiell forurensning fra verten.

export ...

Mens kommandoene ovenfor har satt noen variabler, i rekkefølge for å gjøre dem synlige innenfor eventuelle underskall, eksporterer vi dem.

[Important]

Important

Flere kommersielle distribusjoner legger til en ikke dokumentert instansiering of /etc/bash.bashrc til initialisering av bash. Denne filen har potensial til å endre lfs brukerens miljø på måter som kan påvirke byggingen av kritiske LFS pakker. For å sikre at lfs brukerens miljø er rent, sjekk for nærvær av /etc/bash.bashrc og flytt den ut av veienh vis den er tilstede. Som root bruker, kjør:

[ ! -e /etc/bash.bashrc ] || mv -v /etc/bash.bashrc /etc/bash.bashrc.NOUSE

Etter at bruken av lfs brukeren er ferdig i begynnelsen av Chapter 7, du kan gjenopprette /etc/bash.bashrc (hvis ønsket).

Legg merke til at LFS Bash pakken vi vil bygge i Section 8.34, “Bash-5.1.16” ikke er konfigurert til å laste eller kjøre /etc/bash.bashrc, så denne filen er ubrukelig på et fullført LFS system.

Til slutt, å ha miljøet fullt forberedt for å bygge midlertidige verktøy, hente den nettopp opprettede brukerprofilen:

source ~/.bash_profile