Журнал LinuxFormat - перейти на главную

LXF142:LT1

Материал из Linuxformat
Версия от 08:19, 22 мая 2012; Crazy Rebel (обсуждение | вклад)

(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск
Тре­нин­ги Linux Учебники


Содержание

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

Часть 1: Ище­те ра­бо­ту, свя­зан­ную с Linux? Са­ди­тесь за пер­вую пар­ту и впи­ты­вай­те ин­фор­ма­цию, не­об­хо­ди­мую для по­лу­че­ния сер­ти­фи­ка­та LPI. Те­ма уро­ка – же­ле­зо.

Как про­де­мон­ст­ри­ро­вать, что вы хо­ро­шо знае­те Linux? Дру­зей и род­ных убе­дить нетруд­но: най­ди­те ко­го-нибудь с ком­пь­ю­те­ром под Linux, вы­полните па­ру хит­ро­ум­ных дей­ст­вий в команд­ной стро­ке, и они незамедлительно ре­шат, что вы – это го­ло­ва. Но ра­бо­то­да­те­ли не столь до­вер­чи­вы. По ре­зю­ме, со­про­во­ди­тель­но­му пись­му или ин­тер­вью они не обя­за­тель­но со­чтут, что у вас в моз­гу есть по­лез­ная ин­фор­ма­ция по управ­лению па­ке­та­ми, про­цес­сом за­груз­ки Linux и т. д. Им нуж­ны вес­кие сви­де­тель­ст­ва.

Сер­ти­фи­ци­ро­ван = воо­ру­жен

К сча­стью, в ми­ре Linux для это­го есть пре­крас­ная схе­ма – сер­ти­фи­ка­ция LPI. LPI – со­кра­щение от “Linux Professional Institute (Про­фес­сио­наль­ный ин­сти­тут Linux)”; это неком­мер­че­­ская ор­ганиза­ция, ор­ганизо­вы­ваю­щая эк­за­ме­ны на ква­ли­фи­ка­цию для тех, кто ра­бо­та­ет с Linux. Су­ще­ст­ву­ет три уров­ня сер­ти­фи­ка­ции; пер­вый из них ох­ва­ты­ва­ет об­щее сис­тем­ное ад­минист­ри­ро­вание, вклю­чая на­строй­ку ап­па­рат­ной час­ти, ра­бо­ту в команд­ной стро­ке, управ­ление про­цес­са­ми и ра­бо­ту с па­ке­та­ми.

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

Век жи­ви — век учись

Здесь так­же сто­ит от­ме­тить, что LPI ста­ра­ет­ся фор­ми­ро­вать учеб­ные ма­те­риа­лы на осно­ве кон­сер­ва­тив­ных, су­ще­ст­вую­щих дол­гое вре­мя ди­ст­ри­бу­ти­вов, ко­то­рые не со­тря­са­ет ре­во­лю­ция ка­ж­дые шесть ме­ся­цев. Хо­ро­ший при­мер – Red Hat Enterprise Linux (RHEL), но он неде­шев, по­это­му восполь­зу­ем­ся CentOS – сво­бод­ной сбор­кой RHEL; это пре­крас­ная осно­ва для обу­чения. Еще один от­лич­ный ва­ри­ант – Debian, ко­то­рый ста­ра­ет­ся при­дер­жи­вать­ся стан­дар­тов и оста­ет­ся ста­биль­ным мно­гие го­ды. Здесь мы восполь­зу­ем­ся CentOS 5.5.

Итак, хватить болтать – при­сту­пим! На дан­ном уро­ке мы займемся ап­па­рат­ной час­тью, и я рас­ска­жу, как уз­нать, что за устрой­ст­ва есть в сис­те­ме, как вклю­чить/от­клю­чить драй­ве­ры, и т. д.

Раз­дел 1: По­лу­ча­ем спи­сок уст­ройств

Ком­пь­ю­те­ры – да­же сей­час – уст­рой­ст­ва очень слож­ные; сна­ру­жи они ста­ра­ют­ся вы­гля­деть со­вре­мен­но, но внут­ри все еще пря­чут­ся ар­те­фак­ты из вось­ми­де­ся­тых. К сча­стью, в от­кры­тых сис­те­мах, по­доб­ных Linux, есть все необ­хо­ди­мые ин­ст­ру­мен­ты для по­лу­чения под­роб­ной ин­фор­ма­ции о внут­ренних и пе­ри­фе­рий­ных уст­рой­ст­вах. Начнем с ка­та­ло­гов /proc и /sys. Это не на­стоя­щие, «ма­те­ри­аль­ные» ка­та­ло­ги, как ваш ка­та­лог home, а вир­ту­аль­ные, соз­дан­ные ядром и со­дер­жа­щие ин­фор­ма­цию о за­пу­щен­ных про­цес­сах и ап­па­рат­ных уст­рой­ст­вах. За­чем они нуж­ны? Ну, /proc пре­достав­ля­ет ин­фор­ма­цию пре­иму­ще­ст­вен­но о про­цес­сах (то есть про­грам­мах, вы­пол­няю­щих­ся в сис­те­ме), а /sys — об ап­па­рат­ных уст­рой­ст­вах. Но кое-где они пе­ре­се­ка­ют­ся.

Болт­ли­вый lscpi

Боль­шин­ст­во внут­ренних уст­ройств ком­пь­ю­те­ра под­клю­че­но к сис­те­ме пе­ре­да­чи дан­ных, ко­то­рая на­зы­ва­ет­ся ши­ной PCI. В ста­рых ди­ст­ри­бу­ти­вах ин­фор­ма­цию об уст­рой­ст­вах мож­но по­лу­чить ко­ман­дой cat /proc/pci, но в бо­лее но­вых это­т фай­л отсутствует. Вме­сто него мож­но за­гля­нуть в /sys/bus/pci/devices – впро­чем, знай­те, что эта ин­фор­ма­ция не пред­на­зна­че­на для нас, про­стых смерт­ных. Мы луч­ше об­ра­тим­ся к ко­ман­де /sbin/lspci

От­крой­те тер­ми­нал, вы­брав пункт ме­ню Applications > Accessories > Terminal (При­ло­жения > Стан­дарт­ные > Тер­ми­нал), и пе­ре­клю­чи­тесь на поль­зо­ва­те­ля root (ад­минист­ра­тор) ко­ман­дой su. За­тем вы­полните при­ве­ден­ную вы­ше ко­ман­ду – и по­лу­чи­те спи­сок всех уст­ройств на шине PCI, как по­ка­за­но на ри­сун­ке спра­ва.

Вы долж­ны уви­деть свою ви­део­кар­ту, Ethernet-адап­тер и про­чие уст­рой­ст­ва. Для по­лу­чения бо­лее под­роб­ной ин­фор­ма­ции до­бавь­те к ко­ман­де ключ –vv (де­фис v v), и вы­ве­дет­ся ин­фор­ма­ция о пре­ры­ваниях или пор­тах вво­да/вы­во­да. Для но­вич­ков в ми­ре ком­пь­ю­тер­но­го обо­ру­до­вания: пре­ры­вания – по су­ти, спо­соб, с по­мо­щью ко­то­ро­го уст­рой­ст­во про­сит про­цес­сор об­слу­жить его; на­при­мер, зву­ко­вая кар­та со­об­ща­ет сис­те­ме, что она за­вер­ши­ла некую опе­ра­цию. А пор­ты вво­да/вы­во­да пред­на­зна­че­ны для пе­ре­да­чи дан­ных к уст­рой­ст­ву и от него.

Чис­ло пре­ры­ваний (IRQ) у ком­пь­ю­те­ра ог­раниче­но. Когда у боль­шин­ст­ва ком­пь­ю­те­ров бы­ли толь­ко монитор и кла­виа­ту­ра, пре­ры­ваний вполне хва­та­ло; се­го­дня это­го ма­ло. Сле­до­ва­тель­но, пре­ры­вания мож­но раз­де­лить ме­ж­ду уст­рой­ст­ва­ми. Вам не при­дет­ся во­зить­ся с пре­ры­вания­ми и пор­та­ми вво­да/вы­во­да – эти вре­ме­на, к сча­стью, дав­но про­шли – но вы всегда мо­же­те по­лу­чить де­таль­ный спи­сок ис­поль­зуе­мых ре­сур­сов по все ­той же ко­ман­де lspci -vv. У ко­ман­ды lspci есть и дру­гие оп­ции, и о них мо­жно уз­нать бо­лее под­роб­но на man-странице ко­ман­ды (man lspci).

Раз­дел 2: Мо­ду­ли драй­ве­ров

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

Мо­ду­ли яд­ра на­хо­дят­ся в ка­та­ло­ге /lib/modules/<kernelversion>/kernel. Это фай­лы KO, и, как вы уви­ди­те, они раз­би­ты по ка­та­ло­гам: для зву­ко­вой сис­те­мы, фай­ло­вой сис­те­мы (fs) и т. д. Зай­дя в под­ка­та­лог Drivers, вы уви­ди­те до­полнитель­ные ка­те­го­рии мо­ду­лей. Важ­но раз­ли­чать па­рал­лель­ные и по­сле­до­ва­тель­ные уст­рой­ст­­ва. В пе­рвых дан­ные пе­ре­сы­ла­ют­ся боль­ши­ми пор­ция­ми, как у же­ст­ких дис­­ков, тогда как вто­рые – к ним от­но­сят­ся мышь или по­сле­до­ва­тель­ные пор­ты – пе­ре­сы­ла­ют байт или око­ло то­го в единицу вре­мени.

Яд­ро Linux – ум­ное, и оно мо­жет за­гру­жать мо­ду­ли при об­на­ру­жении оп­ре­де­лен­ных уст­ройств. На са­мом де­ле, оно мо­жет за­гру­жать мо­ду­ли по тре­бо­ванию при под­клю­чении USB-уст­ройств – но к USB мы пе­рей­дем чуть поз­же. А по­ка зай­мем­ся управ­лением мо­ду­ля­ми. Что­бы по­лу­чить спи­сок всех мо­ду­лей, за­гру­жен­ных в дан­ный мо­мент ядром, вы­полните та­кую ко­ман­ду под поль­зо­ва­те­лем root:

lsmod

Уч­ти­те, что в неко­то­рых ди­ст­ри­бу­ти­вах, на­при­мер, CentOS, мо­жет возник­нуть необ­хо­ди­мость пред­ва­рить ко­ман­ду пре­фик­сом /sbin/, т. е. указывать полный путь к команде /sbin/lsmod. По­ка­зан­ный спи­сок бу­дет сво­им для ка­ж­дой сис­те­мы, в за­ви­си­мо­сти от уста­нов­лен­ных уст­ройств.

Ты зна­ешь мое имя

На­звания ря­да мо­ду­лей, та­кие как cdrom и battery, го­во­рят са­ми за се­бя. Для неко­то­рых мо­ду­лей в пра­вом столб­це бу­дет по­ка­зан спи­сок ис­поль­зую­щих их мо­ду­лей (Used By). Это ана­лог за­ви­си­мо­стей из ми­ра управ­ления па­ке­та­ми: он оп­ре­де­ля­ет, ка­кие мо­ду­ли необ­хо­ди­мо за­гру­зить за­ранее пе­ред вы­зо­вом дан­но­го модуля.

А мо­ду­ли с за­га­доч­ны­ми име­на­ми? Что имен­но они де­ла­ют? Здесь на сце­ну вы­хо­дит ко­ман­да modinfo. На­при­мер, чем по жизни занима­ет­ся мо­дуль dm_mod – де­ло тем­ное; но, за­пустив ко­ман­ду

/sbin/modinfo dm_mod

мы по­лу­чим мас­су ин­фор­ма­ции – по боль­шей час­ти техниче­­ской, но в стро­ке «Опи­сание» (Description) ко­рот­ко по­яс­ня­ет­ся, что де­ла­ет мо­дуль. К со­жа­лению, не у всех мо­ду­лей в этой стро­ке есть что-то по­лез­ное, но по­пы­тать­ся сто­ит.

Как я уже го­во­рил, мно­гие мо­ду­ли за­гру­жа­ют­ся ядром ав­то­ма­ти­че­­ски. Мо­дуль мож­но за­гру­зить и при­ну­ди­тель­но, ко­ман­дой modprobe. Эта ути­лит­ка от­ве­ча­ет и за за­груз­ку, и за вы­груз­ку мо­ду­лей из яд­ра, и это очень удоб­ный спо­соб вклю­чать или от­клю­чать тот или иной функ­цио­нал яд­ра на ле­ту. На­при­мер, в на­шем спи­ске мо­ду­лей мы ви­дим lp, parport и parport_pc. Они пред­на­зна­че­ны для прин­те­ров, под­клю­чен­ных к па­рал­лель­но­му пор­ту, ко­то­рым ныне ед­ва ли кто-то поль­зу­ет­ся – от­клю­чи­те этот функ­цио­нал, что­бы ос­во­бо­дить не­мно­го па­мя­ти, ко­ман­дой:

/sbin/modprobe -r lp parport_pc parport

Но в ка­ком по­ряд­ке их пе­ре­чис­лять? Это мож­но оп­ре­де­лить по упо­мя­ну­то­му вы­ше по­лю Used By, по­мес­тив мо­дуль, от ко­то­ро­го за­ви­сят пер­вые два, в конец ко­ман­ды. Ита­к, вы­грузим мо­дуль прин­те­ра lp, за­тем драй­вер па­рал­лель­но­го пор­та ПК parport_pc, и, на­конец, об­щий драй­вер па­рал­лель­но­го пор­та parport.

Ко­па­ем глуб­же

Точ­но так же эти мо­ду­ли мож­но вер­нуть, ко­ман­дой modprobe без па­ра­мет­ров (без фла­га -r). Бла­го­да­ря сис­те­ме за­ви­си­мо­стей нуж­но ука­зать толь­ко пер­вый мо­дуль из спи­ска, а modprobe до­ба­вит ос­таль­ное:

/sbin/modprobe lp

Эта ко­ман­да так­же за­гру­зит parport_pc и parport, в чем мы смо­жем убе­дить­ся, вы­полнив ко­ман­ду lsmod.

Хо­тя Linux обыч­но с боль­шим ап­лом­бом об­ра­ба­ты­ва­ет мо­ду­ли ав­то­ма­ти­че­­ски, иногда по­лез­но немно­го по­уча­ст­во­вать в про­цес­се вруч­ную. Тут нам по­мо­жет файл /etc/modprobe.conf. Пер­вые свер­ху – алиа­сы, со­кра­щения для спи­ска мо­ду­лей. На­при­мер, вы за­хо­те­ли вклю­чать и от­клю­чать зву­ко­вую кар­ту вруч­ную, но вам лень за­по­ми­нать, ка­кой мо­дуль она ис­поль­зу­ет. То­гда до­бавь­те та­кую стро­ку с алиа­сом (alias):

alias sound snd-ens1371

Те­перь мож­но про­сто вве­сти ко­ман­ду modprobe sound, и зву­ко­вая кар­та за­ра­бо­та­ет, не бе­ря в го­ло­ву на­звание кон­крет­но­го драй­ве­ра. По та­кой схе­ме мож­но унифи­ци­ро­вать ко­ман­ды, ис­поль­зуе­мые на раз­ных ком­пь­ю­те­рах. Так­же есть ко­ман­да options, ко­то­рой мож­но пе­ре­дать па­ра­мет­ры на­стро­йки мо­ду­ля. Уз­нать, ка­кие оп­ции доступ­ны для кон­крет­но­го мо­ду­ля, поможет ко­ман­да modinfo (как в про­шлый раз): най­ди­те в ее вы­во­де раз­де­лы parm.

На­при­мер, ско­ман­до­вав modinfo snd-intel8x0, мы уви­дим на­бор раз­де­лов parm с доступ­ны­ми оп­ция­ми для мо­ду­ля этой зву­ко­вой кар­ты. Один из них – index. В фай­ле /etc/modprobe.conf в на­шей CentOS на VirtualBox он вы­гля­дит так:

options snd-intel8x0 index=0

Поль­зо­ва­тель­ские ко­ман­ды

На­конец, у нас есть ко­ман­ды install и remove. Они об­ла­да­ют ре­аль­ной мо­щью – с ними вы мо­же­те за­ме­нять одни ко­ман­ды дру­ги­ми. На­при­мер, в на­шей CentOS на VirtualBox мы ви­дим:

remove snd-intel8x0 { /usr/bin/alsactl store 0…

Пол­но­стью стро­ка го­раз­до длиннее, но по су­ти она оз­на­ча­ет: «Когда поль­зо­ва­тель или сис­те­ма вы­пол­ня­ет ко­ман­ду modprobe -r snd-intel8x0, вы­полнить вме­сто нее дру­гую ко­ман­ду, на­чи­наю­щую­ся с alsactl, ути­ли­ты управ­ления гром­ко­стью». Так мож­но вы­полнять опе­ра­ции очи­ст­ки и вхо­да в сис­те­му пе­ред фак­ти­че­­ским уда­лением мо­ду­ля.

Что­бы пол­но­стью за­пре­тить за­груз­ку мо­ду­ля, про­сто соз­дай­те для него али­ас off в /etc/modprobe.conf:

alias parport off

Эта ко­ман­да за­пре­тит все по­сле­дую­щие за­груз­ки мо­ду­ля и, сле­до­ва­тель­но, со­от­вет­ст­вую­ще­го ап­прат­но­го уст­рой­ст­ва.

Что та­кое /dev?

Од­на из основ­ных кон­цеп­ций Unix, а сле­до­ва­тель­но, и Linux, со­сто­ит в том, что всё на све­те – это файл. Не толь­ко до­ку­мен­ты и изо­бра­жения, но и уст­рой­ст­ва. По­на­ча­лу это оза­да­чи­ва­ет: ну как пред­ста­вить уст­рой­ст­во в ви­де фай­ла? Но на фун­да­мен­таль­ном уровне тут есть смысл. Файл – это нечто для счи­ты­вания и за­пи­си дан­ных. То же вер­но для фи­зи­че­­ско­­го уст­рой­ст­ва, та­ко­го как же­ст­кий диск: с него мож­но счи­ты­вать бай­ты дан­ных, и на него мож­но их за­пи­сы­вать. Од­на­ко су­ще­ст­ву­ют уст­рой­ст­ва (на­при­мер, генера­то­ры слу­чай­ных чи­сел), обыч­но ра­бо­таю­щие толь­ко в од­ном на­прав­лении – счи­ты­вать с них мож­но, а за­пи­сы­вать на них нель­зя.

Ка­та­лог /dev со­дер­жит уз­лы уст­ройств [device nodes] – фай­лы, пред­став­ляю­щие уст­рой­ст­ва. На­при­мер, /dev/dvd – это ваш при­вод DVD-ROM. С дис­ком в при­во­де мож­но на­брать cat /dev/dvd, и он скинет дво­ич­ные дан­ные на тер­ми­нал. Фай­лы уст­ройств соз­да­ют­ся ядром ав­то­ма­ти­че­­ски, и неко­то­рые из них рас­по­ла­га­ют­ся в под­ка­та­ло­гах, та­ких как snd (зву­ко­вые кар­ты/пла­ты), input (мышь) и т. д. Есть уст­рой­ст­во /dev/null, ко­то­рое про­сто по­жи­ра­ет дан­ные и унич­то­жа­ет их – им мож­но восполь­зо­вать­ся для пе­ре­на­прав­ления вы­во­да ко­ман­ды в нику­да, что­бы он не ото­бра­жал­ся на эк­ране. Су­ще­ст­ву­ет уст­рой­ст­во /dev/mem, это уст­рой­ст­во для опе­ра­тив­ной па­мя­ти ком­пь­ю­те­ра. Ко­ман­да strings /dev/mem | less – пре­крас­ный спо­соб уви­деть, чем сей­час за­би­ты мик­ро­схе­мы ва­ше­го ОЗУ.

Что та­кое HAL, udev, D-Bus?

Ок­ру­же­ние ра­бо­че­го сто­ла, та­кое как Gnome или KDE, аб­ст­ра­ги­ру­ет­ся от под­роб­но­стей управ­ле­ния уст­рой­ст­ва­ми. Ну зачем опыт­ным про­грам­ми­стам Gnome, ра­бо­таю­щим над при­ло­же­ни­ем для управ­ле­ния фо­то­гра­фия­ми, пи­сать код, ко­то­рый от­пра­вит не­сколь­ко байт по USB-ка­бе­лю в ка­ме­ру? Они желают, что­бы это дей­ст­вие об­ра­бо­та­ла ОС. В этом есть смысл, и это по­зво­ля­ет за­пус­кать Gnome в дру­гих ОС. Эта аб­ст­рак­ция рань­ше пре­дос­тав­ля­лась де­мо­ном HAL (слой ап­па­рат­ной аб­ст­рак­ции), но по­том его за­ме­нил udev, фо­но­вый про­цесс, ко­то­рый соз­да­ет фай­лы уст­ройств в /dev и взаи­мо­дей­ст­ву­ет с уст­рой­ст­ва­ми.

Как про­грам­мы взаи­мо­дей­ст­ву­ют с udev? В ос­нов­ном че­рез D-Bus, сис­те­му меж­про­цесс­ной ком­му­ни­ка­ции (IPC): че­рез нее про­грам­мы мо­гут от­прав­лять со­об­ще­ния друг дру­гу. На­при­мер, ра­бо­чий стол мо­жет по­про­сить D-Bus со­об­щить ему о под­клю­че­нии но­вых уст­ройств. Ко­гда поль­зо­ва­тель встав­ля­ет уст­рой­ст­во, D-Bus уз­на­ет об этом от udev и за­тем ин­фор­ми­ру­ет ра­бо­чий стол, и тот мо­жет от­крыть диа­ло­го­вое ок­но или за­пус­тить при­ло­же­ние.

Раз­дел 3: Пе­ри­фе­рий­ные уст­рой­ст­ва USB

Ес­ли бы эта ста­тья пи­са­лась в се­ре­дине де­вя­но­стых, нам бы при­шлось вклю­чать длин­ные раз­де­лы с опи­санием раз­лич­ных пор­тов на задней стен­ке сис­тем­но­го бло­ка. PS/2, AUX, по­сле­до­ва­тель­ный порт, па­рал­лель­ный порт… поч­ти для ка­ж­до­го уст­рой­ст­ва тре­бо­вал­ся соб­ст­вен­ный разъ­ем, и все бы­ло неве­ро­ят­но за­пу­та­но. К сча­стью, бла­го­да­ря USB (Universal Serial Bus – универ­саль­ная по­сле­до­ва­тель­ная ши­на) се­го­дня все го­раз­до про­ще – поч­ти на ка­ж­дом на­столь­ном ком­пь­ю­те­ре, вы­пу­щен­ном в по­следние де­сять лет, есть по крайней ме­ре один USB-порт. Спе­ци­фи­ка­ция то­же не сто­ит на мес­те: USB 2.0 и 3.0 на­ра­щи­ва­ют ско­ро­сти, что­бы кон­ку­ри­ро­вать с дру­ги­ми сис­те­ма­ми под­клю­чения – например, FireWire.

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

ls + usb = lsusb

В Linux пре­крас­ная под­держ­ка USB, и есть мно­же­ст­во ути­лит, по­мо­гаю­щих ад­минист­ра­то­ру по­нять, что тво­рит­ся «за ку­ли­са­ми». Пре­ж­де все­го, так как USB-кон­трол­лер обыч­но на­хо­дит­ся на шине USB, ин­фор­ма­цию о нем мож­но по­лу­чить с по­мо­щью на­шей вер­ной ко­ман­ды lspci:

/sbin/lspci | grep -i usb

Здесь мы бе­рем вы­вод ко­ман­ды lspci и пе­ре­на­прав­ля­ем его ути­ли­те grep, что­бы най­ти все вхо­ж­дения сло­ва “USB” в верхнем или нижнем ре­ги­ст­ре. Не пу­гай­тесь, ес­ли вам не зна­ко­мы пе­ре­на­прав­ление и grep – мы по­го­во­рим о команд­ной стро­ке на дальней­ших уро­ках. Сей­час доста­точ­но знать, что эта ко­ман­да фильт­ру­ет вы­вод lspci, вы­де­ляя толь­ко стро­ки с ин­фор­ма­ци­ей о USB.

По­сле вы­полнения ко­ман­ды на эк­ране поя­вят­ся несколь­ко строк, со­об­щаю­щих тип и из­го­то­ви­те­ля ва­ше­го кон­трол­ле­ра USB. Это мо­жет немно­го сби­вать с тол­ку, но су­ще­ст­ву­ет два ти­па стан­дарт­ных кон­трол­ле­ров для USB 1: UHCI и OHCI. USB 2.0 со­от­вет­ст­ву­ет кон­трол­лер ти­па EHCI, ко­то­рый на­хо­дит­ся над одним из пе­ре­чис­лен­ных в ие­рар­хии. Вам нече­го бес­по­ко­ить­ся об этих раз­ли­чи­ях – яд­ро об­ра­ба­ты­ва­ет их са­мо­стоя­тель­но, но знай­те, что в ми­ре USB есть неболь­шое раз­де­ление.


Су­ще­ст­ву­ет ко­ман­да, по­доб­ная lspci, ко­то­рая вы­во­дит спи­сок всех уст­ройств, под­клю­чен­ных к на­ше­му USB-кон­трол­ле­ру:

/sbin/lsusb

Са­ма по се­бе эта ко­ман­да мно­го ин­фор­ма­ции не да­ет – толь­ко спи­сок но­ме­ров пор­тов и их по­ло­жение на шине USB. Вы­вод ко­ман­ды мож­но сде­лать чуть бо­лее осмыс­лен­ным, до­ба­вив ключ -t, тогда спи­сок уст­ройств при­мет дре­во­вид­ный фор­мат, и вы смо­же­те уви­деть, ка­кое уст­рой­ст­во к ка­ко­му под­клю­че­но. А до­ба­вив ключ -v, мы по­лу­чим го­раз­до бо­лее под­роб­ный ре­зуль­тат, как по­ка­за­но на ри­сун­ке справа.

По­смот­ри­те на ре­зуль­тат, и вы уви­ди­те ин­фор­ма­цию и о USB-кон­трол­ле­ре, и об уст­рой­ст­вах, под­клю­чен­ных к ком­пь­ю­те­ру. Ес­ли вас тянет на при­клю­чения, зай­ди­те в ка­та­лог /sys/bus/usb/devices, и уви­ди­те для ка­ж­до­го уст­рой­ст­ва ка­та­лог, в ко­то­ром на­хо­дят­ся фай­лы, со­дер­жа­щие на­име­но­вание про­из­во­ди­те­ля, ско­рость, мак­си­маль­ное энер­го­по­треб­ление и т. д.

Как уже го­во­ри­лось, мо­ду­ли яд­ра – тра­ди­ци­он­ный спо­соб под­держ­ки уст­ройств ядром Linux. Это вер­но и для USB. На­при­мер, по­про­буй­те вы­полнить сле­дую­щую ко­ман­ду:

/sbin/lsmod | grep hci

На на­шем ком­пь­ю­те­ре она по­ка­зы­ва­ет, что яд­ро за­гру­зи­ло мо­дуль для кон­трол­ле­ра OHC и мо­дуль для под­держ­ки EHCI USB 2.0.

Dmesg со­об­ща­ет

Хо­ро­ший спо­соб оп­ре­де­лить, как яд­ро рас­по­зна­ет USB-уст­рой­ст­во – ко­ман­да dmesg. Она вы­да­ет спи­сок со­об­щений, сгенери­ро­ван­ных ядром с на­ча­ла за­груз­ки сис­те­мы. За­пусти­те dmesg, под­клю­чи­те USB-уст­рой­ст­во, по­до­ж­ди­те па­ру се­кунд, что­бы уст­рой­ст­во рас­по­зна­лось, и сно­ва за­пусти­те dmesg, от­ме­тив раз­ли­чия. В кон­це вы­во­да dmesg поя­вят­ся дополнительные со­об­щения, оз­на­чаю­щие, что яд­ро (бу­дем на­де­ять­ся) рас­по­зна­ло уст­рой­ст­во и ак­ти­ви­ро­ва­ло его.

За­груз­ка без «же­ле­за»

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

Вол­шеб­ст­во это­го ме­то­да за­клю­ча­ет­ся в PXE (Preboot Execution Environment – сре­да вы­полнения пе­ред за­груз­кой). Это оп­ре­де­лен­ная про­шив­ка на ком­пь­ю­те­ре, ко­то­рая сканиру­ет сеть в по­ис­ках NBP (Network Bootstrap Program – про­грам­ма на­чаль­ной за­груз­ки по се­ти), ко­то­рую она за­тем за­гру­жа­ет и ис­пол­ня­ет. Для ра­бо­ты этой схе­мы в се­ти долж­ны функ­циониро­вать DHCP- и TFTP-сер­ве­ры; на TFTP-сер­ве­ре долж­ны на­хо­дить­ся под­хо­дя­щие за­гру­зоч­ные фай­лы ди­ст­ри­бу­ти­ва.

Ес­ли в ва­шей BIOS отсутствует под­дер­жка PXE, сущест­вует дру­гая воз­мож­ность – за­груз­ка че­рез USB. С USB-флэш­ки вы мож­ете за­пустить за­ча­точ­ную вер­сию Linux, ко­то­рая за­тем скачает бо­лее со­лид­ную вер­сию из Интернета. Под­роб­ное ру­ко­во­дство вы най­де­те на сай­те жур­на­ла, род­ст­вен­но­го нашему – PC Plus http://tinyurl.com/linpxeboot.

Персональные инструменты
купить
подписаться
Яндекс.Метрика