Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Linux From ScratchΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 13

Автор Gerard Beekmans

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ всС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, начиная с Π΄Π°Π½Π½ΠΎΠΉ Π³Π»Π°Π²Ρ‹, слСдуСт Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΈΠ· срСды 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


НС ΠΎΠ±Ρ€Π°Ρ‰Π°ΠΉΡ‚Π΅ Π½Π° Π½ΠΈΡ… особого внимания – наша систСма ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π½Π΅ установлСна, ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚. Π‘Π°ΠΌΠΎ ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ, ΠΈ Π½Π° Π΄Π°Π½Π½ΠΎΠΌ этапС Π½Π°ΠΌ большС Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ трСбуСтся.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ символичСской ссылки mtab

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ шаг – созданиС символичСской ссылки /etc/mtab Π½Π° /proc/mounts. Для этого Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅:

ln -sf /proc/mounts /etc/mtab


Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ этой символичСской ссылки ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΏΡ€ΠΈ ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ / Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для чтСния, ΠΊΠΎΠ³Π΄Π° информация Π² /etc/mtab устарСла. БимволичСская ссылка Π½Π° /proc/mounts позволяСт всСгда ΠΈΠΌΠ΅Ρ‚ΡŒ ΡΠ²Π΅ΠΆΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… устройствах.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: ИспользованиС Π΄Π°Π½Π½ΠΎΠΉ символичСской ссылки ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π² ядро вашСй систСмы встроСна ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы proc. Данная ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° встроСна ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, Π½Π΅ удаляйтС Π΅Π΅, Ссли Π²Ρ‹ Π½Π΅ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹ Π² своих дСйствиях, Ρ‚.ΠΊ. мноТСство Π΄Ρ€ΡƒΠ³ΠΈΡ… Π²Π΅Ρ‰Π΅ΠΉ ΠΊΡ€ΠΎΠΌΠ΅ символичСской ссылки /etc/mtab зависят ΠΎΡ‚ Π½Π΅Π΅. Π’ΠΊΡ€Π°Ρ‚Ρ†Π΅, ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы proc Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° Π² ядрС.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ символичСских ссылок bash ΠΈ sh

НСкоторыС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΡ€ΠΈ компиляции ΠΏΡ€ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ ссылки Π½Π° ΠΏΠΎΠΊΠ° Π½Π΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Для прСдотвращСния связанных с этим ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, создадим символичСскиС ссылки /bin/bash ΠΈ /bin/sh, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ bash, ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ с использованиСм статичСских ссылок.

Для создания символичСских ссылок /bin/bash ΠΈ /bin/sh, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅:

ln -s /static/bin/bash /bin/bash &&

ln -s bash /bin/sh

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ² passwd ΠΈ group

Для возмоТности Π²Ρ…ΠΎΠ΄Π° Π² систСму ΠΏΠΎΠ΄ ΡƒΡ‡Π΅Ρ‚Π½ΠΎΠΉ записью root ΠΈ для распознавания ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΎΠΉ ΠΈΠΌΠ΅Π½ΠΈ Β«rootΒ», Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ записи Π² Ρ„Π°ΠΉΠ»Π°Ρ… /etc/passwd ΠΈ /etc/group.

Для создания Ρ„Π°ΠΉΠ»Π° /etc/passwd, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅:

echo Β«root:x:0:0:root:/root:/bin/bashΒ» > /etc/passwd


ΠŸΠ°Ρ€ΠΎΠ»ΡŒ для root ( "x" всСго лишь ΠΌΠ΅Ρ‚ΠΊΠ° заполнСния) Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π΄Π°Π½ ΠΏΠΎΠ·ΠΆΠ΅.

Для создания Ρ„Π°ΠΉΠ»Π° /etc/group, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅:

cat > /etc/group << Β«EOFΒ»

root:x:0:

bin:x:1:

sys:x:2:

kmem:x:3:

tty:x:4:

tape:x:5:

daemon:x:6:

floppy:x:7:

disk:x:8:

lp:x:9:

dialout:x:10:

audio:x:11:

EOF


Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹Π΅ Π³Ρ€ΡƒΠΏΠΏΡ‹ Π½Π΅ относятся Π½ΠΈ ΠΊ ΠΊΠ°ΠΊΠΎΠΌΡƒ стандарту – ΠΈΡ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ скрипт MAKEDEV, см. слСд. ΡΠ΅ΠΊΡ†ΠΈΡŽ. Помимо Π³Ρ€ΡƒΠΏΠΏΡ‹ Β«rootΒ», стандарт LSB Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅Ρ‚ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π³Ρ€ΡƒΠΏΠΏΡ‹ Β«binΒ», с GID <ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π³Ρ€ΡƒΠΏΠΏΡ‹> Ρ€Π°Π²Π½Ρ‹ΠΌ 1. ВсС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ названия Π³Ρ€ΡƒΠΏΠΏ ΠΈ ΠΈΡ… GID ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ΡΡ Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎ, Ρ‚.ΠΊ. Π³Ρ€Π°ΠΌΠΎΡ‚Π½ΠΎ написанныС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π΅ зависят ΠΎΡ‚ Π½ΠΎΠΌΠ΅Ρ€ΠΎΠ² GID, Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π³Ρ€ΡƒΠΏΠΏΡ‹.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ устройств (Makedev-1.7)

ΠŸΡ€ΠΈΠ±Π»ΠΈΠ·ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ врСмя компиляции: 0.07 SBU НСобходимоС дисковоС пространство: 50 KB


Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ² устройств

ΠŸΡ€ΠΈΠΌΠΈΡ‚Π΅ ΠΊ свСдСнию, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ распаковкС Π°Ρ€Ρ…ΠΈΠ²Π° MAKEDEV-1.7.bz2 Π½Π΅ создаСтся дирСктория для ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π°, Ρ‚.ΠΊ. Π°Ρ€Ρ…ΠΈΠ² содСрТит Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ„Π°ΠΉΠ» скрипта.

ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΠΌ созданиС Ρ„Π°ΠΉΠ»ΠΎΠ² устройств ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ:

cp MAKEDEV-1.7 /dev/MAKEDEV && cd /dev && chmod 754 MAKEDEV


Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ захотят сразу ΠΆΠ΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ устройств ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ:

./MAKEDEV -v generic


Однако, Ссли Π²Ρ‹ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ devpts, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅:

./MAKEDEV -v generic-nopty


Если Π²Ρ‹ Π½Π΅ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹ Π² своих дСйствиях, для создания всСх Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… устройств Π»ΡƒΡ‡ΡˆΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ./MAKEDEV -v generic. Π’ случаС, Ссли Π²Ρ‹ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹, Ρ‡Ρ‚ΠΎ ΡΠΎΠ±ΠΈΡ€Π°Π΅Ρ‚Π΅ΡΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ devpts, вторая ΠΊΠΎΠΌΠ°Π½Π΄Π° пропускаСт созданиС Π½Π΅Π½ΡƒΠΆΠ½Ρ‹Ρ… устройств.

MAKEDEV создаСт устройства с hda[1-20] ΠΏΠΎ hdh[1-20] ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ дисковых ΡƒΠ·Π»ΠΎΠ², ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΈΠΌΠ΅ΠΉΡ‚Π΅ Π²Π²ΠΈΠ΄Ρƒ, Ρ‡Ρ‚ΠΎ ΠΈΠ·-Π·Π° ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ ядра Π½Π° максимальноС количСство Ρ€Π°Π·Π΄Π΅Π»ΠΎΠ² ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ· Π½ΠΈΡ… Π±ΡƒΠ΄ΡƒΡ‚ нСдоступны.

ПояснСния команд

./MAKEDEV -v generic: Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° создаСт ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ΅ количСство Ρ„Π°ΠΉΠ»ΠΎΠ² устройств. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ, это всС, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ. Однако сущСствуСт Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ спСцифичСскиС Ρ„Π°ΠΉΠ»Ρ‹ для Π²Π°ΡˆΠΈΡ… Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹Ρ… устройств ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚. Π˜Ρ… ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ ./MAKEDEV -v <устройство>. ΠžΠΏΡ†ΠΈΡ generic-nopty Π² создаСт, Π² основном, Ρ‚Π΅ ΠΆΠ΅ устройства, Ρ‡Ρ‚ΠΎ ΠΈ опция generic, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‚Π΅Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹ ΠΏΡ€ΠΈ использовании devpts.

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ΅ MAKEDEV

ПослСдняя ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°: вСрсия 1.5.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

MAKEDEV

Описания

MAKEDEV

MAKEDEV – скрипт, ΡΠΎΠ·Π΄Π°ΡŽΡ‰ΠΈΠΉ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ статичСскиС связи с устройствами, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‰ΠΈΠΌΠΈΡΡ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ /dev. Π”Π΅Ρ‚Π°Π»ΡŒΠ½Π°Ρ информация ΠΎ связях с устройствами ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π°ΠΉΠ΄Π΅Π½Π° Π² Π΄Π΅Ρ€Π΅Π²Π΅ исходных ΠΊΠΎΠ΄ΠΎΠ² ядра Linux Π² Documentation/devices.txt.

Зависимости MAKEDEV

ПослСдняя ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°: вСрсия 1.5.

Bash: sh Fileutils: chmod, chown, cp, ln, mknod, mv, rm Grep: grep Sh-utils: expr, id

Установка Linux-2.4.19

ΠŸΡ€ΠΈΠ±Π»ΠΈΠ·ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ врСмя компиляции: 0.02 НСобходимоС мСсто Π½Π° дискС: 142 MB


Установка Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² ядра

На Π΄Π°Π½Π½ΠΎΠΌ этапС ΠΌΡ‹ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ядро – ΠΌΡ‹ сдСлаСм это послС установки всСх ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ². Однако, Π² связи с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² ядра, ΠΌΡ‹ распакуСм ядро, настроим Π΅Π³ΠΎ ΠΈ скопируСм Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ Ρ‚ΡƒΠ΄Π°, Π³Π΄Π΅ ΠΈΡ… Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΡΠΊΠ°Ρ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ ΠΏΡ€ΠΈ компиляции.

Π‘ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅ΠΌ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ ядра, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹:

ln -s /static/bin/pwd /bin/pwd && make mrproper && make include/linux/version.h && make symlinks && mkdir /usr/include/asm && cp include/asm/* /usr/include/asm && cp -R include/asm-generic /usr/include && cp -R include/linux /usr/include && touch /usr/include/linux/autoconf.h && rm /bin/pwd