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 for å 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 pålogget som bruker lfs
,
eller når du bytter til lfs
bruker
med en su kommando med
«-
» alternativet, det
første skallet er et login
skall som leser /etc/profile
til 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 et 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.
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 sin
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 tilgjengelig
uten å huske en tidligere versjon av det samme programmet
levert av vertsdistroen, i /usr/bin
eller /bin
.
umask
022
Innstilling av umask som vi allerede har forklart i Seksjon 2.6, «Stille inn $LFS variabelen og Umask»
LFS=/mnt/lfs
LFS
variabelen skal settes til det
valgte monteringenspunktet.
LC_ALL=POSIX
LC_ALL
variabelen styrer
lokaliseringen av visse programmer, slik at meldingene deres
fllger konvensjonene i et spesifisert land. Innstillingen
LC_ALL
til «POSIX» eller
«C» (de
to er likeverdige) sikrer at alt fungerer som forventet i
chroot miljlet.
LFS_TGT=$(uname
-m)-lfs-linux-gnu
The LFS_TGT
variabel setter en
ikkestandard, men kompatibel maskinbeskrivelse 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 Verktøykjedens tekniske
merknader.
PATH=/usr/bin
Mange moderne Linux distribusjoner har slått sammen
/bin
og /usr/bin
. Når dette er tilfelle, standard
PATH
variabel burde settes til
/usr/bin/
for Kapittel 6
miljøet. Når dette ikke er tilfelle, legger følgende linje
/bin
til stien.
if [ ! -L /bin ];
then PATH=/bin:$PATH; fi
Hvis /bin
ikke er en 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, for å gjøre dem synlige innenfor eventuelle underskall, eksporterer vi dem.
Flere kommersielle distribusjoner legger til en ikke dokumentert
instansiering av /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 tilstedeværelse av /etc/bash.bashrc
og flytt den hvis den er
tilstede Som root
bruker, kjør:
[ ! -e /etc/bash.bashrc ] || mv -v /etc/bash.bashrc /etc/bash.bashrc.NOUSE
Når lfs
brukeren ikke lenger er
nødvendig (i begynnelsen av
Kapittel 7), kan du trygt gjenopprette /etc/bash.bashrc
(hvis ønsket).
Legg merke til at LFS Bash pakken vi bygger i Seksjon 8.36, «Bash-5.2.37» ikke er
konfigurert til å laste eller kjøre /etc/bash.bashrc
, så denne filen er ubrukelig på
et fullført LFS system.
For mange moderne systemer med flere prosessorer (eller kjerner) kan
kompileringstiden for en pakke reduseres ved å utføre en "parallell
make" ved å fortelle make programmet hvor mange prosessorer som er
tilgjengelige via et kommandolinjealternativ eller en miljøvariabel.
For eksempel en Intel Core i9-13900K-prosessor har 8 P (ytelse)
kjerner og 16 E (effektivitet) kjerner, og en P-kjerne kan kjøre to
tråder samtidig så hver P-kjerne er modellert som to logiske kjerner
av Linuxkjernen. Som et resultat er det totalt 32 logiske kjerner. En
åpenbar måte å bruke alle disse logiske kjernene er å tillate
make å gjøre opptil 32
byggejobber. Dette kan gjøres ved å sende -j32
alternativet til make:
make -j32
Eller angi MAKEFLAGS
miljøvariabel og dens
innhold vil automatisk bli brukt av make som kommandolinjealternativer:
export MAKEFLAGS=-j32
Aldri send en -j
alternativ
uten nummer til make
eller angi et slikt alternativ i MAKEFLAGS
. Å gjøre det vil tillate make å skape uendelige
byggejobber og forårsake problemer med systemstabilitet.
For å bruke alle logiske kjerner som er tilgjengelige for å bygge
pakker i Kapittel 5 og
Kapittel 6,
sett MAKEFLAGS
nå i .bashrc
:
cat >> ~/.bashrc << "EOF"
export MAKEFLAGS=-j$(nproc)
EOF
Erstatt $(nproc)
med
antallet logiske kjerner du vil bruke hvis du ikke vil bruke alle de
logiske kjernene.
Til slutt, å ha miljøet fullt forberedt for å bygge midlertidige verktøy, tving bash skallet å lese den nye brukerprofilen:
source ~/.bash_profile