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
Å 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, nye filer vil ende opp med tillatelsesmodus 644 og mapper med modus 755).
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 Section 8.36, “Bash-5.2.32” 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