ΠΡΠ»Π°Π΄ΠΎΡΠ½ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ
ΠΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΡΡΡΡ Ρ ΡΠΈΠΌΠ²ΠΎΠ»Π°ΠΌΠΈ ΠΎΡΠ»Π°Π΄ΠΊΠΈ. ( Ρ ΠΎΠΏΡΠΈΠ΅ΠΉ gcc -g).
ΠΡΠΈ ΠΎΡΠ»Π°Π΄ΠΊΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈΠ»ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ Ρ ΠΎΡΠ»Π°Π΄ΠΎΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ΅ΠΉ, ΠΎΡΠ»Π°Π΄ΡΠΈΠΊ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π°Π΄ΡΠ΅ΡΠ° Π² ΠΏΠ°ΠΌΡΡΠΈ, Π½ΠΎ ΠΈ ΠΈΠΌΠ΅Π½Π° Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ .
ΠΠ΄Π½Π°ΠΊΠΎ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΠΎΡΠ»Π°Π΄ΠΊΠΈ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅Ρ ΡΠ°Π·ΠΌΠ΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈΠ»ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ. ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ΅ ΠΎΡΠ»Π°Π΄ΠΎΡΠ½ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², Π²Π·Π³Π»ΡΠ½Π΅ΠΌ Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ:
ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠ° bash, ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ Ρ ΠΎΡΠ»Π°Π΄ΠΎΡΠ½ΡΠΌΠΈ ΡΠΈΠΌΠ²ΠΎΠ»Π°ΠΌΠΈ: 1200 KB
ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠ° bash, ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ Π±Π΅Π· ΠΎΡΠ»Π°Π΄ΠΎΡΠ½ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ²: 480 KB
ΡΠ°ΠΉΠ»Ρ glibc ΠΈ gcc (/lib ΠΈ /usr/lib) Ρ ΠΎΡΠ»Π°Π΄ΠΎΡΠ½ΡΠΌΠΈ ΡΠΈΠΌΠ²ΠΎΠ»Π°ΠΌΠΈ: 87 MB
ΡΠ°ΠΉΠ»Ρ glibc ΠΈ gcc ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ Π±Π΅Π· ΠΎΡΠ»Π°Π΄ΠΎΡΠ½ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ²: 16 MB
Π Π°Π·ΠΌΠ΅ΡΡ ΠΌΠΎΠ³ΡΡ ΡΠ°Π·Π»ΠΈΡΠ°ΡΡΡΡ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° Π‘ΠΈ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ. ΠΡΠΈ ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ Ρ ΠΎΡΠ»Π°Π΄ΠΎΡΠ½ΡΠΌΠΈ ΡΠΈΠΌΠ²ΠΎΠ»Π°ΠΌΠΈ ΠΈ Π±Π΅Π· Π½ΠΈΡ , ΡΠ°Π·Π½ΠΈΡΠ° ΡΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ 2 β 5 ΡΠ°Π·.
Π’Π°ΠΊ ΠΊΠ°ΠΊ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΠΎΡΠ»Π°Π΄ΡΠΈΠΊ, ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΡΡΠΈΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡΡ Π΄ΠΈΡΠΊΠΎΠ²ΠΎΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ.
ΠΠ»Ρ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΠΎΡΠ»Π°Π΄ΠΊΠΈ ΠΈΠ· Π±ΠΈΠ½Π°ΡΠ½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° (ΡΠ°ΠΉΠ» a.out ΠΈΠ»ΠΈ Π±ΠΈΠ½Π°ΡΠ½ΡΠΉ ΡΠ°ΠΉΠ» ELF), Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ strip βstrip-debug filename. ΠΠΎΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Π° * Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ² (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, strip βstrip-debug $LFS/static/bin/*).
ΠΠ»Ρ ΡΠ΄ΠΎΠ±ΡΡΠ²Π°, Π² Π³Π»Π°Π²Π΅ 9 ΠΎΠΏΠΈΡΠ°Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°, ΡΠ΄Π°Π»ΡΡΡΠ°Ρ ΠΎΡΠ»Π°Π΄ΠΎΡΠ½ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΡΠΎ Π²ΡΠ΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ ΡΠΈΡΡΠ΅ΠΌΡ. ΠΠ»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠ²Π΅Π΄Π΅Π½ΠΈΠΉ ΠΏΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ, ΡΠΌ. ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ: http://hints.linuxfromscratch.org/hints/optimization.txt.
ΠΡ ΠΎΠ΄ Π² ΡΡΠ΅Π΄Ρ chroot
ΠΠ»Ρ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΠΈΠ½ΡΡΠ°Π»Π»ΡΡΠΈΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²ΠΎΠΉΡΠΈ Π² ΡΡΠ΅Π΄Ρ chroot. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π²ΠΎΠΉΠ΄ΠΈΡΠ΅ Π² ΡΠΈΡΡΠ΅ΠΌΡ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ root, Ρ.ΠΊ. ΡΠΎΠ»ΡΠΊΠΎ root ΠΎΠ½ ΠΈΠΌΠ΅Π΅Ρ ΠΏΡΠ°Π²ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ chroot.
ΠΠΎΡΠ»Π΅ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π° Π² ΡΠ΅ΠΆΠΈΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ root, Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π΄Π»Ρ Π²Ρ ΠΎΠ΄Π° Π² ΡΡΠ΅Π΄Ρ chroot:
chroot $LFS /static/bin/env -i \
HOME=/root TERM=$TERM PS1='\u:\w\$ ' \
PATH=/bin:/usr/bin:/sbin:/usr/sbin:/static/bin \
/static/bin/bash βlogin
ΠΠΎΠΌΠ°Π½Π΄Π° env Ρ ΠΎΠΏΡΠΈΠ΅ΠΉ -i ΠΎΡΠΈΡΡΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π²ΡΠ΅Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΡΠ΅Π΄Ρ chroot. ΠΠ°ΡΠ΅ΠΌ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ HOME, TERM, PS1 ΠΈ PATH Π±ΡΠ΄ΡΡ Π·Π°Π΄Π°Π½Ρ. ΠΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ TERM=$TERM ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ TERM Π΄Π»Ρ ΡΡΠ΅Π΄Ρ chroot ΡΠ°Π²Π½ΡΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΡ TERM Π²Π½Π΅ ΡΡΠΎΠΉ ΡΡΠ΅Π΄Ρ; ΡΡΠ° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠ° Π΄Π»Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ΡΠΈΠΏΠ° vim ΠΈ less. ΠΡΠ»ΠΈ Π²Ρ Π½ΡΠΆΠ΄Π°Π΅ΡΠ΅ΡΡ Π² Π΄ΡΡΠ³ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ , Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ CFLAGS ΠΈΠ»ΠΈ CXXFLAGS, ΡΠ°ΠΌΠΎΠ΅ Π²ΡΠ΅ΠΌΡ Π·Π°Π΄Π°ΡΡ ΠΈΡ ΡΠ½ΠΎΠ²Π°.
ΠΡΠ½ΡΠ½Π΅ Π½Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ LFS, Ρ.ΠΊ. Π²ΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π² ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ LFS (ΡΠΎ, ΡΡΠΎ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠ° ΡΡΠΈΡΠ°Π΅Ρ / , Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ /mnt/lfs).
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π²ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, Π½Π°ΡΠΈΠ½Π°Ρ Ρ Π΄Π°Π½Π½ΠΎΠΉ Π³Π»Π°Π²Ρ, ΡΠ»Π΅Π΄ΡΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΈΠ· ΡΡΠ΅Π΄Ρ chroot. ΠΡΠ»ΠΈ ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΏΡΠΈΡΠΈΠ½Π΅ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΊΠ° ΡΠΈΡΡΠ΅ΠΌΡ) Π²Ρ Π²ΡΡΠ»ΠΈ ΠΈΠ· ΡΡΠΎΠΉ ΡΡΠ΅Π΄Ρ, ΠΏΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ Π²ΠΎΠ·ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡ ΠΈΠ½ΡΡΠ°Π»Π»ΡΡΠΈΡ, Π·Π°Π½ΠΎΠ²ΠΎ Π²ΠΎΠΉΠ΄ΠΈΡΠ΅ Π² Π½Π΅Π΅ ΠΈ ΠΌΠΎΠ½ΡΠΈΡΡΠΉΡΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ²ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ proc (ΡΠΌ. Π΄Π°Π»Π΅Π΅).
ΠΠ°ΠΌΠ΅ΡΡΡΠ΅, ΡΡΠΎ ΠΏΡΠΈΠ³Π»Π°ΡΠ΅Π½ΠΈΠ΅ bash Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ: Β«I have no name!Β» ΠΡΠΎ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ, Ρ.ΠΊ. ΠΏΠ°ΠΊΠ΅Ρ Glibc Π΅ΡΠ΅ Π½Π΅ Π±ΡΠ» ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½.
ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΡΠ°Π²
ΠΠ΅ΡΠ²ΠΎΠ΅ ΡΡΠΎ ΠΌΡ ΡΠ΄Π΅Π»Π°Π΅ΠΌ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ root β ΠΏΠ΅ΡΠ΅Π΄Π°Π΄ΠΈΠΌ ΠΏΡΠ°Π²Π° ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΉ, ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΡ Π² ΠΠ»Π°Π²Π΅ 5, ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ root. ΠΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ, Ρ.ΠΊ. ΠΊΠΎΠ³Π΄Π° Π² Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΌ ΠΌΡ ΠΎΡΡΠ°Π²ΠΈΠΌ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ /static Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ, ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠΊΠ°Π·Π°ΡΡΡΡ Π²Π»Π°Π΄Π΅Π»ΡΡΠ΅ΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠΎ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ ΡΡΡΠ»ΠΊΠ°ΠΌΠΈ, Π° ΡΡΠΎ Π½Π΅ ΡΠ°ΠΌΠ°Ρ Π»ΡΡΡΠ°Ρ ΠΈΠ΄Π΅Ρ.
ΠΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ ΠΏΡΠ°Π² Π½Π° Π²ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΡΡΠ»ΠΎΠΊ:
chown -R 0:0 /static
ΠΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Β«0:0Β» Π²ΠΌΠ΅ΡΡΠΎ Β«root:rootΒ», Ρ.ΠΊ. ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠ° Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΡΠ΅Π·ΠΎΠ»ΡΠ²ΠΈΡΠΎΠ²Π°ΡΡ ΠΈΠΌΡ Β«rootΒ», Ρ.ΠΊ. ΠΏΠ°ΠΊΠ΅Ρ glibc Π΅ΡΠ΅ Π½Π΅ Π±ΡΠ» ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½.
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΉ
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΡΡΡΡΠΊΡΡΡΡ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ LFS. ΠΠ°ΡΠ½Π΅ΠΌ Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π±ΠΎΠ»Π΅Π΅ ΠΈΠ»ΠΈ ΠΌΠ΅Π½Π΅Π΅ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ³ΠΎ Π΄Π΅ΡΠ΅Π²Π° Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄:
mkdir -p /{bin,boot,dev/pts,etc/opt,home,lib,mnt,proc} &&
mkdir -p /{root,sbin,tmp,usr/local,var,opt} &&
for dirname in /usr /usr/local
do
mkdir $dirname/{bin,etc,include,lib,sbin,share,src}
ln -s share/{man,doc,info} $dirname
mkdir $dirname/share/{dict,doc,info,locale,man}
mkdir $dirname/share/{nls,misc,terminfo,zoneinfo}
mkdir $dirname/share/man/man{1,2,3,4,5,6,7,8}
done &&
mkdir /var/{lock,log,mail,run,spool} &&
mkdir -p /var/{tmp,opt,cache,lib/misc,local} &&
mkdir /opt/{bin,doc,include,info} &&
mkdir -p /opt/{lib,man/man{1,2,3,4,5,6,7,8}} &&
ln -s ../var/tmp /usr
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ ΡΠΎΠ·Π΄Π°ΡΡΡΡ Ρ ΠΏΡΠ°Π²Π°ΠΌΠΈ Π΄ΠΎΡΡΡΠΏΠ° 755, ΠΎΠ΄Π½Π°ΠΊΠΎ ΡΡΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π½Π΅ Π΄Π»Ρ Π²ΡΠ΅Ρ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΉ. ΠΡ ΡΠ΄Π΅Π»Π°Π΅ΠΌ Π΄Π²Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ: Π΄Π»Ρ Π΄ΠΎΠΌΠ°ΡΠ½Π΅Π³ΠΎ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π° root ΠΈ Π΄Π»Ρ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π° Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ².
chmod 0750 /root &&
chmod 1777 /tmp /var/tmp
ΠΠ΅ΡΠ²ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ, ΡΡΠΎ Π½Π΅ Π²ΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΠΈΠΌΠ΅ΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ /root directory β Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΎΠ±ΡΡΠ½ΡΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΠΎ ΡΠ²ΠΎΠΈΠΌ Π΄ΠΎΠΌΠ°ΡΠ½ΠΈΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠΌ. ΠΡΠΎΡΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π΅Ρ Π»ΡΠ±ΠΎΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΏΡΠ°Π²ΠΎ Π½Π° Π·Π°ΠΏΠΈΡΡ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ /tmp ΠΈ /var/tmp, ΠΎΠ΄Π½Π°ΠΊΠΎ Π½Π΅ ΡΠ°Π·ΡΠ΅ΡΠ°Π΅Ρ ΡΠ΄Π°Π»ΡΡΡ ΠΈΠ· Π½ΠΈΡ ΡΠ°ΠΉΠ»Ρ Π΄ΡΡΠ³ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ. Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΡΡΠΆΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ Β«sticky bitΒ» β Π½Π°ΠΈΠ²ΡΡΡΠΈΠΉ Π΄Π²ΠΎΠΈΡΠ½ΡΠΉ Π·Π½Π°ΠΊ Π² Π΄Π²ΠΎΠΈΡΠ½ΠΎΠΉ ΠΌΠ°ΡΠΊΠ΅ 1777.
ΠΡΠ°ΠΊ, ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΡΠΈΡΠ΅ tar-Π°ΡΡ ΠΈΠ²Ρ ΠΈΡΡ ΠΎΠ΄Π½ΡΡ ΠΊΠΎΠ΄ΠΎΠ² ΠΏΠ°ΠΊΠ΅ΡΠΎΠ², Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΡ ΠΏΠΎ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡΠΌ ΠΠ»Π°Π²Ρ 3, Π² Π½Π΅ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΉ ΠΏΠΎΠ΄ΠΊΠ°ΡΠ°Π»ΠΎΠ³ Π² /usr/src.
Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ FHS
ΠΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΉ ΠΌΡ ΠΎΡΠ½ΠΎΠ²ΡΠ²Π°Π»ΠΈΡΡ Π½Π° ΡΡΠ°Π½Π΄Π°ΡΡΠ΅ FHS (ΡΠΌ. http://www.pathname.com/fhs/). ΠΠΎΠΌΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°Π½Π½ΡΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠ² Π΄Π°Π½Π½ΡΠΉ ΡΡΠ°Π½Π΄Π°ΡΡ ΡΡΠ°Π²ΠΈΡ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ΠΌ Π½Π°Π»ΠΈΡΠΈΠ΅ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠ² /usr/local/games ΠΈ /usr/share/games, Π½ΠΎ, ΠΏΠΎ Π½Π°ΡΠ΅ΠΌΡ ΠΌΠ½Π΅Π½ΠΈΡ, Π΄Π»Ρ Π±Π°Π·ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ ΠΎΠ½ΠΈ Π½Π΅ Π½ΡΠΆΠ½Ρ. ΠΠ΄Π½Π°ΠΊΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΌΠ΅Π»ΠΎ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΡΠ²ΠΎΡ ΡΠΈΡΡΠ΅ΠΌΡ ΠΊ ΠΏΠΎΠ»Π½ΠΎΠΌΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΡ Ρ FHS. Π§ΡΠΎ ΠΊΠ°ΡΠ°Π΅ΡΡΡ ΡΡΡΡΠΊΡΡΡΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π° /usr/local/share, ΡΡΠ°Π½Π΄Π°ΡΡ FHS ΡΡΡΠΎΠ³ΠΎ Π½Π΅ ΠΎΠ³ΠΎΠ²Π°ΡΠΈΠ²Π°Π΅Ρ Π΅Π³ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅, ΡΠ°ΠΊ ΡΡΠΎ ΠΌΡ ΡΠ΅ΡΠΈΠ»ΠΈ ΡΠΎΠ·Π΄Π°ΡΡ Π² Π½Π΅ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅, ΠΏΠΎ Π½Π°ΡΠ΅ΠΌΡ ΡΠ±Π΅ΠΆΠ΄Π΅Π½ΠΈΡ, ΠΏΠΎΠ΄ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΈ.
ΠΠΎΠ½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ proc
ΠΠ»Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠ°ΠΉΠ»ΠΎΠ²ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ proc Π² ΡΡΠ΅Π΄Π΅ chroot. Π’Π°ΠΊ ΠΊΠ°ΠΊ ΡΠ°ΠΉΠ»ΠΎΠ²Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΌΠΎΠ½ΡΠΈΡΠΎΠ²Π°Π½Π° ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ³ΠΎΠ΄Π½ΠΎ ΡΠ°Π· ΠΈ Π² ΠΊΠ°ΠΊΠΈΡ ΡΠ³ΠΎΠ΄Π½ΠΎ ΠΌΠ΅ΡΡΠ°Ρ , ΠΏΡΠΎΠ±Π»Π΅ΠΌ Ρ ΡΠ΅ΠΌ, ΡΡΠΎ ΡΠ°ΠΉΠ»ΠΎΠ²Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° proc ΡΠΆΠ΅ ΠΌΠΎΠ½ΡΠΈΡΠΎΠ²Π°Π½Π° Π² Π²Π°ΡΠ΅ΠΌ Π±Π°Π·ΠΎΠ²ΠΎΠΌ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Π΅, Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡΡ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ. Π’Π΅ΠΌ Π±ΠΎΠ»Π΅Π΅, ΡΡΠΎ proc β Π²ΠΈΡΡΡΠ°Π»ΡΠ½Π°Ρ ΡΠ°ΠΉΠ»ΠΎΠ²Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ°.
ΠΠ»Ρ ΠΌΠΎΠ½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ proc Π² /proc, Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅:
mount proc /proc -t proc
ΠΠ΅ΡΠΎΡΡΠ½ΠΎ, ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ mount Π±ΡΠ΄ΡΡ Π²ΡΠ²Π΅Π΄Π΅Π½Ρ Π½Π° ΡΠΊΡΠ°Π½:
warning: can't open /etc/fstab: No such file or directory
not enough memory
ΠΠ΅ ΠΎΠ±ΡΠ°ΡΠ°ΠΉΡΠ΅ Π½Π° Π½ΠΈΡ ΠΎΡΠΎΠ±ΠΎΠ³ΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΡ β Π½Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ Π½Π΅ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π°, ΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°ΠΉΠ»Ρ ΠΎΡΡΡΡΡΡΠ²ΡΡΡ. Π‘Π°ΠΌΠΎ ΠΌΠΎΠ½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΎ, ΠΈ Π½Π° Π΄Π°Π½Π½ΠΎΠΌ ΡΡΠ°ΠΏΠ΅ Π½Π°ΠΌ Π±ΠΎΠ»ΡΡΠ΅ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ.