LXF143:Linux Training

Материал из Linuxformat.

Перейти к: навигация, поиск
Тре­нин­ги Linux


Тренинги Linux от Майка Сондерса

Содержание

Mайк Сондерс ведет Тре­нин­ги Linux

Часть 3: От ап­па­ра­ту­ры и за­груз­ки пе­ре­хо­дим к ка­та­ло­гам фай­ло­вой сис­те­мы, раз­де­лам и раз­де­ляе­мым биб­лио­те­кам. И – да: в кон­це вас ждет тест!

От­га­дай­те, сколь­ко фай­лов ока­жет­ся на же­ст­ком дис­ке по­сле уста­нов­ки Debian 6 с од­но­го ком­пакт-дис­ка? По­ду­май­те – мы по­до­ж­дем. А от­вет та­кой: 82698. Ве­рит­ся с тру­дом, и та­ким ко­ли­че­­ст­вом фай­лов невоз­мож­но управ­лять, но, к сча­стью, в ка­та­ло­гах фай­ло­вой сис­те­мы Linux эта мас­са фай­лов рас­по­ла­га­ет­ся весь­ма ком­форт­но, и у ка­ж­до­го фай­ла есть осмыс­лен­ное ме­сто для жизни. Ка­ко­ва за­да­ча ка­ж­до­го от­дель­но­го фай­ла, слиш­ком под­роб­но знать не обя­за­тель­но, но рас­по­ло­жение фай­ла оп­ре­де­ля­ет его об­щее на­зна­чение в гло­баль­ном уст­рой­ст­ве сис­те­мы.

На дан­ном уро­ке мы рас­смот­рим, как уст­рое­на фай­ло­вая сис­те­ма Linux, как раз­бить же­ст­кий диск на раз­де­лы и из­менить кон­фи­гу­ра­цию за­груз­чи­ка Grub. Мы так­же уви­дим, как раз­де­ляе­мые биб­лио­те­ки по­вы­ша­ют безо­пас­ность и эко­но­мят ме­сто на же­ст­ком дис­ке. Как и в дру­гих стать­ях этой се­рии, неко­то­рые ка­та­ло­ги и ко­ман­ды мо­гут раз­ли­чать­ся в за­ви­си­мо­сти от ис­поль­зуе­мо­го ди­ст­ри­бу­ти­ва. Од­на­ко для обу­чения мы ре­ко­мен­ду­ем ди­ст­ри­бу­тив, со­от­вет­ст­вую­щий про­мыш­лен­но­му стан­дар­ту, та­кой как Debian, ко­то­рым мы и поль­зо­ва­лись при на­пи­сании этой ста­тьи. Ус­та­но­вить его мож­но с LXFDVD.

Раз­дел 1: Фай­ло­вая сис­те­ма Linux

Для на­ча­ла раз­бе­рем­ся, как уста­нов­ка Linux рас­по­ла­га­ет­ся на же­ст­ком дис­ке. В про­ти­во­по­лож­ность Windows, где есть раз­лич­ные «стар­то­вые точ­ки», или бу­к­вы дис­ка, для ка­ж­до­го уст­рой­ст­ва, в Linux для все­го есть толь­ко один ис­точник – нечто вро­де «Боль­шо­го Взры­ва» дан­ных. Это /, или корневой ка­та­лог (root), ко­то­рый не сле­ду­ет пу­тать с поль­зо­ва­те­лем root, ад­минист­ра­то­ром сис­те­мы. Все осталь­ные ка­та­ло­ги, та­кие как /home/username, ваш до­машний ка­та­лог, от­ветв­ля­ют­ся от него. Дру­ги­ми сло­ва­ми, корневой ка­та­лог – это ка­та­лог верхнего уров­ня, и все осталь­ные ка­та­ло­ги в сис­те­ме яв­ля­ют­ся его под­ка­та­ло­га­ми. Вот ка­кие ка­та­ло­ги вы най­де­те в корневом:

  • /bin Со­дер­жит дво­ич­ные фай­лы, пред­став­ляю­щие со­бой ис­пол­няе­мые про­грам­мы. Это важней­шие сис­тем­ные ути­ли­ты, та­кие как ls, df, rm и т. д. Здесь долж­ны на­хо­дить­ся все фай­лы, необ­хо­ди­мые для за­груз­ки сис­те­мы и ис­прав­ления непо­ла­док, в то вре­мя как ка­та­лог /usr/bin име­ет дру­гое на­зна­чение – ка­кое, мы ско­ро уви­дим.
  • /boot Здесь на­хо­дит­ся файл об­раза яд­ра (vmlinuzz оз­на­ча­ет, что файл сжат); это про­грам­ма, за­гру­жае­мая и ис­пол­няе­мая за­груз­чи­ком. Здесь так­же на­хо­дит­ся об­раз RAM-дис­ка (initrd), ко­то­рый пре­достав­ля­ет яд­ру минималь­ную фай­ло­вую сис­те­му и на­бор драй­ве­ров для за­пуска сис­те­мы. Во мно­гих ди­ст­ри­бу­ти­вах здесь же си­дит файл config с на­строй­ка­ми ком­пи­ля­ции яд­ра, а так­же под­ка­та­лог grub с кон­фи­гу­ра­ци­ей за­груз­чи­ка.
  • /dev Фай­лы уст­ройств. К боль­шин­ст­ву уст­ройств в Linux мож­но об­ра­щать­ся так, как ес­ли бы они бы­ли фай­ла­ми, счи­ты­вая и за­пи­сы­вая в них бай­ты. За­гляните в пер­вую часть этой се­рии, что­бы уз­нать под­робнее о /dev.
  • /etc Пре­иму­ще­ст­вен­но фай­лы на­строй­ки в тек­сто­вом фор­ма­те, хо­тя есть и ис­клю­чения. За­гру­зоч­ные скрип­ты (см. вто­рую часть этой се­рии) так­же на­хо­дят­ся здесь. Здесь на­хо­дят­ся сис­тем­ные кон­фи­гу­ра­ци­он­ные фай­лы для та­ких про­грамм как Apache; кон­фи­гу­ра­ция на­столь­ных про­грамм обыч­но на­хо­дит­ся в ка­та­­ло­ге home.
  • /home Здесь обыч­но на­хо­дят­ся до­машние ка­та­ло­ги (home). У ка­ж­до­го поль­зо­ва­те­ля здесь есть ка­та­лог с пер­со­наль­ны­ми фай­ла­ми и на­строй­ка­ми.
  • initrd.img Сим­во­ли­че­­ская ссыл­ка (это не на­стоя­щий файл – боль­ше по­хо­же на яр­лык в Windows) на вы­ше­упо­мя­ну­тый RAM-диск в /boot. Пол­ный путь, на ко­то­рый она ссы­ла­ет­ся, мож­но по­смот­реть ко­ман­дой ls -l.
  • /lib Раз­де­ляе­мые биб­лио­те­ки; под­робнее о них см. во врез­ке «Что та­кое раз­де­ляе­мые биб­лио­те­ки?» далее. Как и в ка­та­ло­ге /bin, здесь на­хо­дят­ся важней­шие биб­лио­те­ки, необ­хо­ди­мые для за­груз­ки и за­пуска сис­те­мы на ба­зо­вом уровне. В ка­та­ло­ге /lib так­же на­хо­дят­ся мо­ду­ли яд­ра (см. пер­вую часть этой се­рии уроков).
  • /lost+found Ес­ли во вре­мя круп­ной опе­ра­ции за­пи­си дан­ных на диск па­да­ет сис­те­ма или от­клю­ча­ет­ся элек­три­че­­ст­во, и при сле­дую­щем за­пуске сис­те­ма вы­пол­ня­ет про­вер­ку дис­ка (fsck), фраг­мен­ты час­тич­но уте­рян­ных фай­лов по­ме­ща­ют­ся сюда.
  • /media При под­клю­чении внешнего дис­ка, скажем, USB-брел­ка, про­ис­хо­дит ав­то­ма­ти­че­­ское мон­ти­ро­вание, и в этом ка­та­ло­ге по­яв­ля­ет­ся под­ка­та­лог с со­дер­жи­мым это­го дис­ка.
  • /mnt Не­мно­го по­хож на /media, за ис­клю­чением то­го, что обыч­но ис­поль­зу­ет­ся для смон­ти­ро­ван­ных вруч­ную дол­го­вре­мен­ных хранилищ дан­ных, вклю­чая же­ст­кие и се­те­вые дис­ки.
  • /opt До­полнитель­ное ПО. Этот ка­та­лог ис­поль­зу­ет­ся очень ред­ко, но в неко­то­рых ди­ст­ри­бу­ти­вах и па­ке­тах вы най­де­те здесь боль­шие па­ке­ты вро­де KDE и OpenOffice.org. Это по­зво­ля­ет хранить все в од­ном мес­те и, сле­до­ва­тель­но, бо­лее удоб­но уда­лять или об­нов­лять ПО по­ми­мо менед­же­ра па­ке­тов.
  • /proc Доступ к ин­фор­ма­ции о про­цес­сах. Здесь мож­но уви­деть ка­ж­дый про­цесс (вы­пол­няю­щую­ся за­да­чу) в сис­те­ме, что и под­дер­жи­ва­ет фи­ло­со­фию Unix «всё яв­ля­ет­ся фай­лом».
  • /root Пер­со­наль­ные фай­лы су­пер­поль­зо­ва­те­ля, он же – root. Мно­гие ад­минист­ра­то­ры хра­нят здесь ре­зерв­ные ко­пии фай­лов на­строй­ки. В мно­го­поль­зо­ва­тель­ских сис­те­мах жизнен­но важ­но, что­бы у обыч­ных поль­зо­ва­те­лей не бы­ло сю­да досту­па.
  • /sbin Как и в ка­та­ло­ге /bin, здесь на­хо­дят­ся дво­ич­ные ис­пол­няе­мые фай­лы, но доступ к ним разрешен толь­ко су­пер­поль­зо­ва­телю. Это про­грам­мы, ко­то­рые не долж­ны за­пускать обыч­ные поль­зо­ва­те­ли: ути­ли­ты на­строй­ки се­ти, фор­ма­ти­ро­вания раз­де­лов и т. д.
  • /selinux Ме­сто для фай­лов, ис­поль­зуе­мых сре­дой SecurityEnhanced Linux.
  • /srv Этот ка­та­лог пред­на­зна­чен для дан­ных, об­слу­жи­вае­мых сис­те­мой (на­при­мер, web-сер­ве­ром). Од­на­ко боль­шин­ст­во про­грамм вме­сто него поль­зу­ют­ся /var.
  • /sys Не­что вро­де осов­ре­менен­но­го ва­ри­ан­та /dev с до­полнительны­ми воз­мож­но­стя­ми. Здесь мож­но по­лу­чить ин­фор­ма­цию об уст­рой­ст­вах и яд­ре, но для обыч­ных за­дач ад­минист­ра­то­ра этот ка­та­лог не так ва­жен.
  • /tmp Вре­мен­ные фай­лы. В этот ка­та­лог мо­жет за­пи­сы­вать дан­ные лю­бая про­грам­ма, и вы уви­ди­те здесь слу­чай­ные фай­лы фо­но­вых сер­ви­сов, web-брау­зе­ров и т. д. В боль­шин­ст­ве ди­ст­ри­бу­ти­вов он очи­ща­ет­ся при за­груз­ке.
  • /usr Это дру­гой мир. /usr со­дер­жит соб­ст­вен­ные вер­сии ка­та­ло­гов bin, sbin и lib, но они пред­на­зна­че­ны для при­ло­жений, су­ще­ст­вую­щих вне ба­зо­вой сис­те­мы. Все жизнен­но важ­ное для за­пуска сис­те­мы долж­но на­хо­дить­ся в /bin, /sbin и /lib, а необя­за­тель­ные про­грам­мы вро­де Firefox и Emacs долж­ны жить здесь. И на то есть вес­кая при­чи­на: раз­мес­тив ба­зо­вую сис­те­му на од­ном раз­де­ле (/), а до­полнитель­ные про­грам­мы на дру­гом (/usr), сис­те­му мож­но сде­лать бо­лее гиб­кой. /usr, на­при­мер, мож­но мон­ти­ро­вать че­рез сеть. Здесь так­же по­ме­щен ка­та­лог /usr/local, где обыч­но на­хо­дят­ся про­грам­мы, ко­то­рые вы ком­пи­ли­руе­те са­ми, что­бы их не ви­дел менед­жер па­ке­тов.
  • /var Здесь на­хо­дят­ся фай­лы, ко­то­рые час­то ме­ня­ют­ся. Дру­ги­ми сло­ва­ми, это фай­лы, в ко­то­рые час­то за­пи­сы­ва­ют­ся дан­ные – системные журна­лы, ба­зы дан­ных и фай­лы поч­то­вых кли­ен­тов. В боль­шин­ст­ве ди­ст­ри­бу­ти­вов здесь так­же раз­ме­ща­ет­ся ко­рень до­ку­мен­та Apache (/var/www). На мощ­ных сер­ве­рах, ко­то­рые ­пишут дан­ные интенсивно, он час­то выносит­ся в особый раз­де­л с на­строй­ка­ми фай­ло­вой сис­те­мы, повышающими скоро­сть.
  • vmlinuz Сим­во­ли­че­­ская ссыл­ка на файл об­раза яд­ра в /boot.

В за­ви­си­мо­сти от ди­ст­ри­бу­ти­ва вы мо­же­те най­ти в ка­та­ло­ге root и другие файлы. Од­на­ко боль­шин­ст­во ди­ст­ри­бу­ти­вов ста­ра­ют­ся сле­до­вать по­ло­жениям стан­дар­та Filesystem Hierarchy Standard (FHS). Это по­пыт­ка унифи­ци­ро­вать ка­та­ло­ги фай­ло­вой сис­те­мы ме­ж­ду раз­лич­ны­ми ди­ст­ри­бу­ти­ва­ми. Вы смо­же­те по­гру­зить­ся глуб­же в /var, /usr и дру­гие ка­та­ло­ги, за­гля­нув на спра­воч­ную страницу ие­хар­хии ка­та­ло­гов в тер­ми­на­ле ко­ман­дой man hier.

Что та­кое раз­де­ляе­мые биб­лио­те­ки?

Биб­лио­те­ка – это фраг­мент ко­да, ко­то­рый не яв­ля­ет­ся ис­пол­няе­мым, но мо­жет ис­поль­зо­вать­ся дру­ги­ми про­грам­ма­ми. На­при­мер, пусть вы создае­те про­грам­му, ко­то­рая долж­на бу­дет раз­би­рать XML-файл, но не хо­ти­те пи­сать XML-пар­сер. Вме­сто это­го вы мо­же­те восполь­зо­вать­ся libxml, биб­лио­те­кой для об­ра­бот­ки XML, ко­то­рую уже на­пи­са­ли дру­гие. В обыч­ной уста­нов­ке Linux есть сотни та­ких биб­лио­тек, вклю­чаю­щих биб­лио­те­ки для ба­зо­вых функ­ций C (libc) и гра­фи­че­­ские ин­тер­фей­сы (libgtk, libqt).

Биб­лио­те­ки мож­но свя­зать с про­грам­мой ста­ти­че­­ски, «за­шив» в окон­ча­тель­ную вер­сию ис­пол­няе­мо­го фай­ла, но обыч­но это раз­де­ляе­мые фай­лы в ка­та­ло­гах /lib, /usr/lib и /usr/local/lib с .so в имени фай­ла, что оз­на­ча­ет «раз­де­ляе­мый объ­ект» [shared object]. Бла­го­да­ря это­му несколь­ко про­грамм мо­гут од­но­вре­мен­но поль­зо­вать­ся од­ной и той же биб­лио­те­кой, и ес­ли в ней об­на­ру­жит­ся уяз­ви­мость, доста­точ­но ис­пра­вить ее толь­ко один раз. С раз­де­ляе­мы­ми биб­лио­те­ка­ми умень­ша­ют­ся раз­ме­ры ис­пол­няе­мых фай­лов, эко­но­мя дис­ко­вое про­стран­ст­во. Ко­ман­дой ldd мож­но уз­нать, ка­кие биб­лио­те­ки ис­поль­зу­ют­ся про­грам­мой. На­при­мер, ldd /usr/bin/gedit вы­во­дит спи­сок биб­лио­тек, вклю­чаю­щих:

libgtk-x11-2.0.so.0 => /usr/lib/libgtk-x11-2.0.so.0 (0xb7476000)

Gedit за­ви­сит от GTK, по­это­му ему нуж­на libgtk-x11, и спра­ва вы ви­ди­те ме­сто­по­ло­жение этой биб­лио­те­ки в сис­те­ме. Но что оп­ре­де­ля­ет рас­по­ло­жение биб­лио­тек? От­вет – файл /etc/ld.so.conf, ко­то­рый ссы­ла­ет­ся на фай­лы в /etc/ld.so.conf.d. Эти фай­лы со­дер­жат тек­сто­вые стро­ки с рас­по­ло­жением биб­лио­тек в фай­ло­вой сис­те­ме, та­кие как /usr/local/lib. Ес­ли вы уста­нав­ли­ва­ли биб­лио­те­ки ку­да-ли­бо, мо­же­те до­ба­вить но­вые фай­лы с их рас­по­ло­жения­ми, но по­сле это­го за­пусти­те ldconfig (от имени root) что­бы об­но­вить кэш, ис­поль­зуе­мый за­груз­чи­ком про­грамм.

Иногда бы­ва­ет нуж­но за­пустить про­грам­му, ис­поль­зую­щую биб­лио­те­ку с нестан­дарт­ным рас­по­ло­жением. Для это­го восполь­уй­тесь пе­ре­мен­ной LD_LIBRARY_PATH. На­при­мер, сле­дую­щая ко­ман­да за­пустит ис­пол­няе­мый файл myprog из те­ку­ще­го ка­та­ло­га и на вре­мя до­ба­вит mylibs к спи­ску стан­дарт­ных пу­тей к биб­лио­те­кам:

LD_LIBRARY_PATH=/path/to/mylibs ./myprog.

Так во мно­гих иг­рах свя­зы­ва­ют­ся биб­лио­те­ки от­дель­но от ис­пол­няе­мо­го фай­ла без его на­ли­чия.

Раз­дел 2: Схе­мы раз­биения дис­ка на раз­де­лы

Раз­биение дис­ка на раз­де­лы – од­на из тех за­дач, за ко­то­рые при­хо­дит­ся брать­ся нечас­то, но ко­то­рые име­ют да­ле­ко иду­щие по­след­ст­вия. Ес­ли непра­виль­но вы­де­лить ме­сто для ка­ко­го-то раз­де­ла, неприятности вам обес­пе­чены. Осо­бен­но­сти раз­биения дис­ка на раз­де­лы за­ви­сят от уста­нов­щи­ка ва­ше­го ди­ст­ри­бу­ти­ва, и мы не бу­дем пе­ре­чис­лять здесь все воз­мож­ные ва­ри­ан­ты. Вме­сто это­го восполь­зу­ем­ся ути­ли­той раз­биения дис­ка на раз­де­лы, ко­то­рая есть во всех ди­ст­ри­бу­ти­вах, и рас­смот­рим неко­то­рые схе­мы раз­биения дис­ка.

От­крой­те тер­ми­нал, пе­ре­клю­чи­тесь на поль­зо­ва­те­ля root и вве­ди­те ко­ман­ду:

fdisk /dev/sda

За­мените sda уст­рой­ст­­вом, со­от­вет­ст­­вую­щим ва­ше­му дис­ку. (На ком­пь­ю­те­рах с одним же­ст­ким дис­ком это sda, а ес­ли Linux за­гру­жа­ет­ся со вто­ро­го дис­ка – sdb. Для ве­р­ности за­гляните в вы­вод dmesg.) fdisk — про­стая команд­ная ути­ли­та раз­биения дис­ка. Как и Vi, вы­гля­дит она ас­ке­тич­но, но уме­ет все. Вве­ди­те p, и вы уви­ди­те спи­сок раз­де­лов дис­ка как на эк­ран­ном сним­ке ниже. Вве­дя m, вы по­лу­чи­те спи­сок доступ­ных команд: раз­де­лы мож­но уда­лять (d), соз­да­вать но­вые (n), со­хра­нять из­менения на диск (w) и т. д.

Это мощ­ная ути­ли­та, но она пред­по­ла­га­ет в вас знание то­го, что вы де­лае­те, и опе­кать вас не бу­дет. fdisk так­же не фор­ма­ти­ру­ет раз­де­лы – им про­сто да­ется но­мер ти­па. Для фор­ма­ти­ро­вания раз­дела на­бе­ри­те mkfs и на­жми­те Tab, что­бы про­смот­реть ва­ри­ан­ты за­вер­шения ко­ман­ды. Вы уви­ди­те, что есть ко­ман­ды для фор­ма­ти­ро­вания раз­де­лов в тра­ди­ци­он­ных Linux-фор­ма­тах (та­ких как mkfs.ext4), в фор­ма­те Windows FAT32 (mkfs.vfat) и дру­гих.

На­ря­ду с раз­де­ла­ми фай­ло­вой сис­те­мы су­ще­ст­ву­ет еще раз­дел под­кач­ки (swap). Он ис­поль­зу­ет­ся для ор­ганиза­ции вир­ту­аль­ной па­мя­ти. Дру­ги­ми сло­ва­ми, когда про­грам­ма боль­ше не по­ме­ща­ет­ся в мик­ро­схе­мах опе­ра­тив­ной па­мя­ти, по­то­му что па­мять съе­ли дру­гие про­грам­мы, яд­ро мо­жет вы­теснить эту про­грам­му в раз­дел под­кач­ки, за­пи­сав со­дер­жи­мое па­мя­ти в ви­де дан­ных на этот раз­дел. Когда про­грам­ма сно­ва ста­но­вит­ся ак­тив­ной, она воз­вра­ща­ет­ся с дис­ка на­зад в опе­ра­тив­ную па­мять.

Вол­шеб­ной фор­му­лы точ­но­го рас­че­та раз­ме­ра раз­де­ла под­кач­ки не су­ще­ст­ву­ет, но ад­минист­ра­то­ры со­ве­ту­ют уста­нав­ли­вать его в раз­ме­ре вдвое боль­ше объ­е­ма опе­ра­тив­ной па­мя­ти, но не свы­ше 2 ГБ. От­фор­ма­ти­ро­вать раз­дел под­кач­ки мож­но ко­ман­дой mkswap с уст­рой­ст­вом в ка­че­­ст­ве па­ра­мет­ра (на­при­мер, /dev/sda5), а ак­ти­ви­ро­вать – ко­ман­дой swapon с уст­рой­ст­вом в ка­че­­ст­ве па­ра­мет­ра. В качестве раз­де­ла под­кач­ки мож­но так­же ис­поль­зо­вать один файл – бо­лее под­роб­ную ин­фор­ма­цию ищи­те на man-стра-ницах команд mkswap и swapon.

Схе­мы раз­биения дис­ка на раз­де­лы

У боль­шин­ст­ва ди­ст­ри­бу­ти­вов свои гра­фи­че­ские ути­ли­ты для раз­бие­ния дис­ка, но вер­ная fdisk най­дет­ся вез­де.

Итак, как раз­бить диск на раз­де­лы? Есть три об­щих под­хо­да:

  1. Все в од­ном. Наличествует один боль­шой раз­дел с фай­ла­ми опе­ра­ци­он­ной сис­те­мы, до­машними ка­та­ло­га­ми, вре­мен­ны­ми фай­ла­ми, дан­ны­ми сер­ве­ров и все­ми осталь­ны­ми фай­ла­ми. Иногда это не са­мый эф­фек­тив­ный под­ход, но он са­мый про­стой, и у всех ка­та­ло­гов рав­ные воз­мож­но­сти по ис­поль­зо­ванию дис­ко­во­го про­стран­ст­ва. Во мно­гих на­столь­ных ди­ст­ри­бу­ти­вах (на самом деле только в Ubuntu и его производных и это плохой подход) этот под­ход ис­поль­зу­ет­ся по умол­чанию.
  2. Раз­де­ля­ем корневой раз­дел и home. Чуть бо­лее слож­ная схе­ма, в ко­то­рой ка­та­лог /home раз­ме­ща­ет­ся в соб­ст­вен­ном раз­де­ле, от­дель­но от корнево­го раз­де­ла (/). Боль­шое пре­иму­ще­ст­во это­го под­хо­да в том, что мож­но об­нов­лять, пе­реуста­нав­ли­вать и ме­нять ди­ст­ри­бу­ти­вы, при необ­хо­ди­мо­сти пол­но­стью унич­то­жая все фай­лы опе­ра­ци­он­ной сис­те­мы при со­хра­нении пер­со­наль­ных дан­ных и на­строе­к в /home нетро­ну­ты­ми. Бо­лее под­роб­но о пре­иму­ще­ст­вах обособ­ления ка­та­ло­га /home смот­ри­те в учебнике про Grub в этом жур­на­ле.
  3. Раз­де­лы для все­го. При ра­бо­те на кри­ти­че­­ски важ­ном ком­пь­ю­те­ре, вро­де от­кры­то­го из­вне web-сер­ве­ра с круг­ло­су­точ­ным ре­жи­мом, вы мо­же­те при­менить несколь­ко весь­ма эф­фек­тив­ных схем раз­биения. На­при­мер, пусть у ва­ше­го ком­пь­ю­те­ра два же­ст­ких дис­ка: мед­лен­ный и бы­ст­рый. Ес­ли вы ра­бо­тае­те на бой­ком поч­то­вом сер­ве­ре, мо­же­те по­мес­тить корневой ка­та­лог на мед­лен­ный диск: ведь он ис­поль­зу­ет­ся толь­ко при за­груз­ке сис­те­мы. А /var/spool луч­ше по­мес­тить на бы­ст­рый диск, так как ка­ж­дую ми­ну­ту с ним про­из­во­дят­ся сотни опе­ра­ций чтения и за­пи­си.

Эта гиб­кость в раз­биении дис­ка на раз­де­лы – боль­шое пре­иму­ще­ст­во Linux и Unix, и поль­за от это­го все бо­лее и бо­лее воз­рас­та­ет. Возь­мем, на­при­мер, са­мые со­вре­мен­ные бы­ст­рые дис­ки SSD: ка­та­лог /home мож­но раз­мес­тить на обыч­ном же­ст­ком дис­ке, обес­пе­чив се­бе боль­шой объ­ем про­стран­ст­ва по низ­кой цене, а ка­та­лог root — на SSD, и сис­те­ма бу­дет за­гру­жать­ся и вы­пол­нять про­грам­мы со ско­ро­стью све­та.

Раз­дел 3: На­строй­ка за­груз­чи­ка

Скорая помощь

Не хо­ти­те, что­бы дру­гие поль­зо­ва­те­ли залезали в на­строй­ки Grub во вре­мя за­груз­ки? За­щи­ти­те их па­ро­лем, и толь­ко вы смо­же­те их ме­нять – как это сде­лать, мож­но уз­нать из он­лайн-до­ку­мен­та­ции Grub по ссыл­ке http://www.gnu.org/software/grub/manual/grub.html#Security.

Для за­груз­ки яд­ра и стар­та все­го про­цес­са за­груз­ки сис­те­мы поч­ти во всех ди­ст­ри­бу­ти­вах ныне ис­поль­зу­ет­ся Grub 2 (пол­но­стью – Grand Unified Bootloader). В пре­ды­ду­щей ста­тье мы по­зна­ко­ми­лись с са­мим Grub и с тем, как из­менить из него па­ра­мет­ры за­груз­ки. Но эти из­менения вре­мен­ные. Ес­ли что-то нуж­но ме­нять ка­ж­дый раз, то пре­ры­вание ка­ж­дой за­груз­ки мо­жет обер­нуть­ся на­стоя­щей го­лов­ной бо­лью. Ре­шение – из­менить файл /etc/default/grub.

Во­об­ще-то это не файл на­строй­ки Grub – тот на­зы­ва­ет­ся /boot/grub/grub.cfg и ав­то­ма­ти­че­­ски соз­да­ет­ся скрип­та­ми по­сле об­нов­ления яд­ра, по­это­му из­ме­нять его вруч­ную не сле­ду­ет. В боль­шин­ст­ве слу­ча­ев тре­бу­ет­ся до­ба­вить тот или иной па­ра­метр к стро­ке за­груз­ки яд­ра, что­бы от­клю­чить оп­ре­де­лен­ное уст­рой­ст­во или за­гру­зить­ся в оп­ре­де­лен­ном ре­жи­ме. Сде­лать это мож­но, от­крыв файл /etc/default/grub в тек­сто­вом ре­дак­то­ре от имени поль­зо­ва­те­ля root и взгля­нув на сле­дую­щую стро­ку:

GRUB_CMDLINE_LINUX_DEFAULT=”quiet”

Она со­дер­жит па­ра­мет­ры по умол­ча­нию, ко­то­рые пе­ре­да­ют­ся яд­ру Linux. До­бавь­те в двой­ные ка­выч­ки по­сле quiet не­об­хо­ди­мые оп­ции, раз­де­ляя их про­бе­ла­ми. Сде­лав это, вы­пол­ни­те ко­ман­ду:

/usr/sbin/update-grub

Она об­но­вит /boot/grub/grub.cfg, до­ба­вив в не­го но­вые па­рамет­ры.

Стар и груб

Ес­ли у вас бо­лее ста­рый ди­ст­ри­бу­тив с Grub 1, на­строй­ка бу­дет не­сколь­ко иной. У вас бу­дет файл /boot/grub/menu.lst с за­пи­ся­ми на­по­до­бие

title Fedora Core (2.6.20-1.2952.fc6)
root (hd0,0)
kernel /vmlinuz-2.6.20-1.2952.fc6 ro root=/dev/md2 rhgb quiet
initrd /initrd-2.6.20-1.2952.fc6.img

Здесь мож­но до­ба­вить оп­ции пря­мо в ко­нец стро­ки kernel, со­хра­нить файл и пе­ре­за­гру­зить ком­пь­ю­тер, что­бы из­ме­не­ния всту­пи­ли в си­лу. Ес­ли Grub ис­пор­тит­ся или его уда­лит дру­гой загруз­чик, вы смо­же­те пе­ре­ус­та­но­вить его, вы­пол­нив сле­дую­щую ко­ман­ду от име­ни root:

grub-install /dev/sda

За­мените sda на sdb, ес­ли хо­ти­те уста­но­вить его на вто­рой же­ст­кий диск. Эта ко­ман­да за­пи­сы­ва­ет на­чаль­ную часть Grub в пер­вые 512 байт же­ст­ко­го дис­ка, так­же из­вест­ных как глав­ная за­гру­зоч­ная запись (MBR). Об­ра­ти­те внимание, что Grub не обя­за­тель­но уста­нав­ли­вать в MBR; его мож­но уста­но­вить в су­пер­блок (пер­вый сек­тор) раз­де­ла, по­зво­ляя основ­но­му за­груз­чи­ку в MBR под­гру­зить до­черний за­груз­чик. Впро­чем, ско­рее все­го, эти све­дения вы­хо­дят за рам­ки LPI 101, и вы вряд ли с ними столкнетесь; но знать об этом сто­ит.

На­конец, хо­тя Grub ис­поль­зу­ет­ся в по­дав­ляю­щем боль­шин­ст­ве ди­ст­ри­бу­ти­вов, все же есть и такие, в ко­то­рых еще засиделся бо­лее ста­рый за­груз­чик LILO – Linux Loader [За­груз­чик Linux]. Его файл на­строй­ки – /etc/lilo.conf, и по­сле лю­бо­го из­менения фай­ла нуж­но за­пустить /sbin/lilo, что­бы об­но­вить на­строй­ки в за­гру­зоч­ном сек­то­ре.

Вол­шеб­ст­во /etc/fstab

Скорая помощь

Точ­ка мон­ти­ро­ва­ния – ме­сто со­еди­не­ния раз­де­ла с фай­ло­вой сис­те­мой. Пред­по­ло­жим, на­при­мер, что раз­дел /dev/sdb2 бу­дет ис­поль­зо­вать­ся для до­маш­них ка­та­ло­гов. В этом слу­чае его точ­ка мон­ти­ро­ва­ния – /home. Про­сто!

По­зна­ко­мив­шись со схе­ма­ми раз­бие­ния дис­ка на раз­де­лы и уз­нав, как соз­да­вать раз­де­лы с по­мо­щью ко­манд fdisk и mkfs, вы, воз­мож­но, за­ин­те­ре­со­ва­лись, как это уст­рое­но в ра­бо­чей сис­те­ме Linux. Во гла­ве данной схе­мы сто­ит файл /etc/fstab, тек­сто­вый файл, где описана связь раз­де­лов с точ­ка­ми мон­ти­ро­ва­ния. За­гля­ни­те в этот файл, и вы уви­ди­те не­сколь­ко строк наподобие такой:

UUID=cb300f2c-6baf-4d3e-85d2-9c965f6327a0 / ext3 errors=remount-ro 0 1

Стро­ка со­сто­ит из пя­ти по­лей. Пер­вое по­ле – уст­рой­ст­во, за­даваемое в ви­де /dev/sda1-type или в бо­лее со­вре­мен­ном фор­ма­те иден­ти­фи­ка­то­ра UUID (это уни­каль­ный иден­ти­фи­ка­тор уст­рой­ст­ва; его мож­но до­быть ко­ман­дой blkid). За­тем ука­за­на точ­ка мон­ти­ро­ва­ния – в дан­ном слу­чае это кор­не­вой ка­та­лог. За ней сле­ду­ют тип фай­ло­вой сис­те­мы и оп­ции мон­ти­ро­ва­ния.

При­ве­ден­ные здесь па­ра­мет­ры оз­на­ча­ют, что ес­ли при мон­ти­ро­ва­нии дис­ка за­гру­зоч­ны­ми скрип­та­ми воз­ни­ка­ют ошиб­ки, его нуж­но пе­ре­мон­ти­ро­вать в ре­жи­ме толь­ко для чте­ния, что­бы опе­ра­ции за­пи­си не при­чи­ни­ли даль­ней­ше­го ущер­ба. Спи­ски дос­туп­ных оп­ций для ка­ж­до­го ти­па фай­ло­вой сис­те­мы име­ют­ся на man-стра­ни­це ко­ман­ды mount. По­след­ние чи­сло­вые па­ра­мет­ры свя­за­ны с про­вер­ка­ми фай­ло­вой сис­те­мы, и из­ме­нять их зна­че­ния по умол­ча­нию не нуж­но.

Вы мо­же­те до­ба­вить свои точ­ки мон­ти­ро­ва­ния в /etc/fstab в тек­сто­вом ре­дак­то­ре, но уч­ти­те, что в не­ко­то­рых ди­ст­ри­бу­ти­вах файл ав­то­ма­ти­че­ски пе­ре­за­пи­сы­ва­ет­ся, по­это­му обя­за­тель­но со­хра­ни­те ис­ход­ную ко­пию.

Про­верь­те се­бя!

При про­дви­же­нии по этой се­рии уро­ков вы, воз­мож­но, хо­ти­те по­пут­но про­ве­рять свои зна­ния. В кон­це кон­цов, ес­ли по­сле на­ше­го рас­ста­ва­ния вы на­пра­ви­тесь на пол­но­цен­ную сер­ти­фи­ка­цию LPI, вы долж­ны уметь поль­зо­вать­ся зна­ния­ми на ле­ту, не за­гля­ды­вая в ру­ко­во­дства. В кон­це се­рии мы под­го­то­вим для вас пол­ный спи­сок при­мер­ных во­про­сов, а по­ка вот не­сколь­ко за­дач и во­про­сов по ма­те­риа­лам прой­ден­ных на­ми трех раз­де­лов:

  1. Где на­хо­дят­ся об­раз яд­ра и фай­лы RAM-дис­ка?
  2. Объ­яс­ни­те от­ли­чия в на­зна­че­нии ка­та­ло­гов /lib, /usr/lib и /usr/local/lib.
  3. Рас­ска­жи­те о воз­мож­ных схе­мах раз­бие­ния дис­ка на раз­де­лы в Linux. По­че­му сто­ит раз­ме­щать ка­та­лог /home на от­дель­ном раз­де­ле?
  4. Опи­ши­те про­цесс до­бав­ле­ния но­вых ка­та­ло­гов с биб­лио­те­ка­ми в сис­те­му.

По­про­буй­те от­ве­тить на эти во­про­сы, не об­ра­ща­ясь за подсказками к со­от­вет­ст­вую­щим раз­де­лам. Ес­ли вы со­мне­вае­тесь, не вол­нуй­тесь – про­сто вер­ни­тесь и про­чти­те их сно­ва. Луч­ший спо­соб ус­во­ить полученные зна­ния – взять их на во­о­ру­же­ние и по­уп­раж­нять­ся на соб­ст­вен­ном ком­пь­ю­те­ре (или на ка­ком-ни­будь ди­ст­ри­бу­ти­ве в VirtualBox, что­бы не под­вер­гать опас­но­сти свою сис­те­му).

Личные инструменты
  • Купить электронную версию
  • Подписаться на бумажную версию