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

LXF169:Linux – что это?

Материал из Linuxformat
(Различия между версиями)
Перейти к: навигация, поиск
(Но­вые оп­ции)
(Но­вые оп­ции)
Строка 62: Строка 62:
  
 
Все они де­ла­ют при­мер­но од­но и то же – за­пуска­ют за­да­чи, необ­хо­ди­мые, что­бы за­ра­бо­та­ла ОС. От­ли­ча­ют­ся толь­ко ме­то­ды. Ос­нов­ное раз­ли­чие в том, что SysVinit по­сле­до­ва­тель­на: ка­ж­дый сле­дую­щий сер­вис до­жи­да­ет­ся за­вер­шения за­пуска пре­ды­ду­ще­го. Мед­лен­но за­пускае­мый сер­вис тор­мо­зит все осталь­ные. Upstart и systemd за­пуска­ют сер­ви­сы па­рал­лель­но, из­бе­гая по­доб­ных уз­ких мест. Конеч­но, есть те, кто счи­та­ет, что Linux на­столь­ко ста­би­лен, что вре­мя за­груз­ки не столь важ­но – ес­ли вы вме­сто вы­клю­чения ма­ши­ны мо­же­те уй­ти в спя­щий ре­жим, пе­ре­за­груз­ка ста­но­вит­ся весь­ма ред­ким слу­ча­ем.
 
Все они де­ла­ют при­мер­но од­но и то же – за­пуска­ют за­да­чи, необ­хо­ди­мые, что­бы за­ра­бо­та­ла ОС. От­ли­ча­ют­ся толь­ко ме­то­ды. Ос­нов­ное раз­ли­чие в том, что SysVinit по­сле­до­ва­тель­на: ка­ж­дый сле­дую­щий сер­вис до­жи­да­ет­ся за­вер­шения за­пуска пре­ды­ду­ще­го. Мед­лен­но за­пускае­мый сер­вис тор­мо­зит все осталь­ные. Upstart и systemd за­пуска­ют сер­ви­сы па­рал­лель­но, из­бе­гая по­доб­ных уз­ких мест. Конеч­но, есть те, кто счи­та­ет, что Linux на­столь­ко ста­би­лен, что вре­мя за­груз­ки не столь важ­но – ес­ли вы вме­сто вы­клю­чения ма­ши­ны мо­же­те уй­ти в спя­щий ре­жим, пе­ре­за­груз­ка ста­но­вит­ся весь­ма ред­ким слу­ча­ем.
[[Файл:LXF145.iview.stall_alph_fmt.png | right|thumb|200px|> Прости, Ричард, но мы не будем все время говорить «GNU слэш».]]
+
[[Файл:LXF145.iview.stall_alph_fmt2.png | right|thumb|200px|> Прости, Ричард, но мы не будем все время говорить «GNU слэш».]]
 
> Уб­рав за­став­ку, вы уви­ди­те про­цесс за­груз­ки во всей кра­се, в том чис­ле и со­стоя­ние за­пус­кае­мых про­цес­сов.
 
> Уб­рав за­став­ку, вы уви­ди­те про­цесс за­груз­ки во всей кра­се, в том чис­ле и со­стоя­ние за­пус­кае­мых про­цес­сов.
  

Версия 09:15, 14 ноября 2018

Содержание

Linux – что это?

Нейл Бот­вик ко­па­ет­ся в луч­шей в ми­­ре опе­ра­ци­он­ной сис­те­ме, вы­яс­няя, что же за­став­ля­ет ее ра­бо­тать.

Сло­во «Linux» — од­но из са­мых час­то встре­чаю­щих­ся в этом жур­на­ле, но что оно оз­на­ча­ет? Оно оз­на­ча­ет раз­ное для раз­ных лю­дей — от пу­ри­стов, для ко­то­рых это в пер­вую оче­редь яд­ро, до сто­ронников GNU, ко­то­рые счи­та­ют его ча­стью GNU/Linux, и но­вых поль­зо­ва­те­лей, по­ла­гаю­щих, что это вто­рое на­звание Ubuntu. На са­мом де­ле Linux — все это сра­зу, а выбор за­ви­сит от ва­шей точ­ки зрения. Стро­го го­во­ря, тер­мин “Linux”, ис­поль­зуе­мый от­дель­но, от­но­сит­ся к яд­ру опе­ра­ци­он­ной сис­те­мы, а GNU/Linux — это вся опе­ра­ци­он­ная сис­те­ма, объ­е­ди­няю­щая яд­ро Linux и ин­ст­ру­мен­ты GNU; од­но бу­дет со­вер­шен­но бес­по­лез­но без дру­го­го (или ка­кой-ли­бо его аль­тер­на­ти­вы).

Ес­ли до­ба­вить сю­да еще и при­ло­жения, и неко­то­рые ин­ст­ру­мен­ты, по­зво­ляю­щие управ­лять всем этим в це­лом, вы по­лу­чи­те ди­ст­ри­бу­тив, на­при­мер, Ubuntu.

За дол­гие го­ды мы рас­ска­за­ли прак­ти­че­­ски обо всех от­дель­но взя­тых ком­понен­тах, со­став­ляю­щих опе­ра­ци­он­ную сис­те­му, из­вест­ную нам как Linux, но они не ра­бо­та­ют по от­дель­но­сти – они долж­ны объ­е­ди­нять­ся вме­сте, и здесь мы по­пы­та­ем­ся объ­яснить, как из час­тей скла­ды­ва­ет­ся це­лое и что эти час­ти де­ла­ют.

Что та­кое ОС?

Что та­кое ди­ст­ри­бу­тив?

336980.png

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

Ди­ст­ри­бу­тив Linux – это спо­соб рас­про­странения осно­ван­ной на Linux опе­ра­ци­он­ной сис­те­мы и со­пут­ст­вую­щих про­грамм. В са­мом на­ча­ле это бы­ли про­сто фай­лы, необходимые для ОС, плюс спо­соб их уста­нов­ки на ком­пь­ю­тер. По­сте­пен­но ди­ст­ри­бу­ти­ву на­ча­ли тре­бо­вать­ся менед­же­ры па­ке­тов, ин­ст­ру­мен­ты об­нов­ления, на­строй­ка GUI и мно­же­ст­во иных удобств. Тем не менее, при появившихся дру­же­лю­бии к поль­зо­ва­те­лю и внешнем лоске (или не появившихся, ес­ли ваш дистрибутив – Gentoo) все ди­ст­ри­бу­ти­вы по-прежнему пред­став­ля­ют со­бой Linux.

Яд­ро

Нерв­ный центр в серд­цевине ва­шей опе­ра­ци­он­ной сис­те­мы Linux.

Яд­ро — это бью­щее­ся серд­це сис­те­мы, но что оно та­кое? Яд­ро — это про­грамм­ный ин­тер­фейс к обо­ру­до­ванию ком­пь­ю­те­ра. Оно об­ща­ет­ся с CPU, па­мя­тью и про­чи­ми уст­рой­ст­ва­ми от имени лю­бой про­грам­мы, уста­нов­лен­ной на ком­пь­ю­те­ре. И как та­ко­вое, яв­ля­ет­ся са­мым низ­ко­уровневым ком­понен­том сре­ди про­грамм — и са­мым важ­ным. Ес­ли в яд­ре есть про­бле­ма, эта про­бле­ма от­ра­жа­ет­ся на лю­бой про­грам­ме, ра­бо­таю­щей на ком­пь­ю­те­ре.

Яд­ро Linux мо­но­лит­но, т. е. все основ­ные сер­ви­сы ОС ра­бо­та­ют в нем. Аль­тер­на­тив­ный под­ход – мик­ро­яд­ро, где боль­шая часть ра­бо­ты де­ла­ет­ся внешними про­цес­са­ми, а яд­ро занима­ет­ся все­го лишь ко­ор­диниро­ванием.

Чис­то мо­но­лит­ное яд­ро непло­хо ра­бо­та­ло рань­ше, когда поль­зо­ва­те­ли ком­пи­ли­ро­ва­ли яд­ро под свое обо­ру­до­вание; но сей­час та­кое ко­ли­че­­ст­во ком­би­на­ций обо­ру­до­вания, что встраи­вание их всех в яд­ро при­ве­дет к по­яв­лению неподъемного фай­ла. По­это­му яд­ро Linux ста­ло мо­дуль­ным: клю­че­вые функ­ции на­хо­дят­ся в фай­ле яд­ра (его мож­но уви­деть в /boot как vmlinuz-version), а оп­цио­наль­ные драй­ве­ры встрое­ны в ви­де от­дель­ных мо­ду­лей в /lib/modules (фай­лы .ko в этой ди­рек­то­рии).

На­при­мер, 64-бит­ное яд­ро Ubuntu 12.10 име­ет раз­мер 5 MБ, и есть еще 3700 мо­ду­лей, занимаю­щих бо­лее 100 MБ. На кон­крет­ной ма­шине нуж­на толь­ко часть из них, и бы­ло бы су­щим бе­зу­ми­ем пы­тать­ся за­гру­зить их все с основ­ным ядром. Вме­сто это­го яд­ро оп­ре­де­ля­ет ис­поль­зуе­мое обо­ру­до­вание и за­гру­жа­ет со­от­вет­ст­вую­щие мо­ду­ли, ко­то­рые ста­но­вят­ся ча­стью яд­ра в па­мя­ти, так что в за­гру­жен­ном ви­де оно по-прежнему оста­ет­ся мо­но­лит­ным, да­же когда рас­пре­де­ля­ет­ся по ты­ся­чам фай­лов. Это по­зво­ля­ет сис­те­ме реа­ги­ро­вать на из­менение обо­ру­до­вания. Ес­ли под­клю­чить уст­рой­ст­во USB, за­гру­зят­ся мо­дуль usb-storage и мо­дуль фай­ло­вой сис­те­мы, необ­хо­ди­мый для то­го, что­бы его под­мон­ти­ро­вать. Вот по­че­му при до­бав­лении обо­ру­до­вания так ред­ко при­хо­дит­ся уста­нав­ли­вать но­вые драй­ве­ры: все они уже есть, и про­сто ждут, когда вы ку­пи­те и под­клю­чи­те но­вые иг­руш­ки. Ком­пь­ю­те­ры, ра­бо­таю­щие на спе­циа­ли­зи­ро­ван­ном обо­ру­до­вании, ко­то­рое не из­ме­ня­ет­ся, на­при­мер, сер­ве­ры, обыч­но име­ют яд­ро с уже ском­пи­ли­ро­ван­ны­ми необ­хо­ди­мы­ми драй­ве­ра­ми и от­клю­чен­ной за­груз­кой мо­ду­лей, что до­бав­ля­ет неболь­шую до­лю безо­пас­но­сти.

Ес­ли вы ком­пи­ли­руе­те свое яд­ро, хо­ро­шо бы взять за пра­ви­ло встраи­вать в него драй­ве­ры для тех уст­ройств, ко­то­рые всегда ис­поль­зу­ют­ся, на­при­мер, для се­те­во­го ин­тер­фей­са и фай­ло­вых сис­тем же­ст­ко­го дис­ка, а для все­го осталь­но­го соз­дать мо­ду­ли.

И еще мо­ду­ли

Ог­ром­ное ко­ли­че­­ст­во мо­ду­лей, боль­шин­ст­во из ко­то­рых – драй­ве­ры уст­ройств, ста­ло од­ной из силь­ных сто­рон Linux: по умол­чанию под­дер­жа­но столь­ко уст­ройств, что драй­ве­ры ка­чать и уста­нав­ли­вать от­ку­да-то еще со­вер­шен­но неза­чем. Но неко­то­рые уст­рой­ст­ва по­ка не ох­ва­че­ны встро­ен­ны­ми в яд­ро мо­ду­ля­ми, обыч­но по при­чине то­го, что код еще очень нов или его ли­цен­зия не по­зво­ля­ет вклю­чать его в яд­ро (да, ZFS, это про те­бя).

Са­мый из­вест­ный при­мер – драй­ве­ры для карт Nvidia. Обыч­но име­нуе­мые сто­ронними мо­ду­ля­ми, хо­тя Ubuntu так­же ис­поль­зу­ет тер­мин «ог­раничен­ные драй­ве­ры», они уста­нав­ли­ва­ют­ся из ва­ше­го менед­же­ра па­ке­тов, ес­ли их под­дер­жи­ва­ет ваш ди­ст­ри­бу­тив. В ином слу­чае их при­дет­ся ком­пи­ли­ро­вать из ис­ходника, что нуж­но бу­дет про­де­лы­вать ре­гу­ляр­но, при ка­ж­дом об­нов­лении яд­ра, по­сколь­ку они при­вя­за­ны к яд­ру, для ко­то­ро­го ком­пи­ли­ро­ва­лись.

Пред­принима­лись некие по­пыт­ки ав­то­ма­ти­зи­ро­вать этот про­цесс, на­при­мер, DKMS (Dynamic Kernel Module Support – ди­на­ми­че­­ская под­держ­ка мо­ду­лей яд­ра), когда при уста­нов­ке яд­ра ав­то­ма­ти­че­­ски пе­ре­ком­пи­ли­ру­ют­ся все сто­ронние мо­ду­ли, де­лая про­цесс об­нов­ления яд­ра поч­ти та­ким же без­бо­лезнен­ным, как про­цесс об­нов­ления поль­зо­ва­тель­ских при­ло­жений.

Го­во­ря о яд­ре, обя­за­тель­но жонг­ли­ру­ют та­ки­ми по­ня­тия­ми, как «об­ласть яд­ра» и «поль­зо­ва­тель­ская об­ласть». Об­ласть яд­ра – это па­мять, доступ к ко­то­рой есть толь­ко у яд­ра; ни од­на поль­зо­ва­тель­ская про­грам­ма (то есть нечто по­ми­мо яд­ра и его мо­ду­лей) не мо­жет ниче­го здесь за­пи­сы­вать, по­это­му сто­рон­няя про­грам­ма не мо­жет по­вре­дить ра­бо­те яд­ра. А поль­зо­ва­тель­ская об­ласть – это об­ласть, доступ к ко­то­рой мо­жет по­лу­чить лю­бая про­грам­ма с со­от­вет­ст­вую­щи­ми при­ви­ле­гия­ми. Это спо­соб­ст­ву­ет ста­биль­но­сти и безо­пас­но­сти Linux, по­сколь­ку ни од­на про­грам­ма, да­же ра­бо­таю­щая от имени су­пер­поль­зо­ва­те­ля-root, не мо­жет на­пря­мую раз­ру­шить яд­ро.

По­ря­док за­груз­ки

Та­ин­ст­вен­ное че­ре­дование вспы­шек и зву­ков при за­пуске.

Боль­шин­ст­во ди­ст­ри­бу­ти­вов при за­груз­ке сра­зу прикрываются за­став­кой, и мы не мо­жем на­блю­дать за про­ис­хо­дя­щим. А про­ис­хо­дит-то мно­го че­го — как до по­яв­ления за­став­ки, так и по­сле. Пер­вым за­гру­жа­ет­ся BIOS с ма­те­рин­ской пла­ты. Она ищет уст­рой­ст­во за­груз­ки и за­гру­жа­ет с него код.

Ес­ли же­ст­кий диск ис­поль­зу­ет тра­ди­ци­он­ную сис­те­му де­ления на раз­де­лы DOS, она со­дер­жит­ся в Master Boot Record (MBR) дис­ка – все­го 512 байт. 64 бай­та ис­поль­зу­ют­ся для хранения таб­ли­цы раз­де­лов для дис­ка (вот по­че­му доступ­ны толь­ко че­ты­ре пер­вич­ных раз­де­ла), а осталь­ные 446 байт оста­ют­ся для ко­да про­грам­мы-за­груз­чи­ка (обыч­но это Grub). В 446 байт осо­бо мно­го функ­ций не впих­нуть, по­это­му все, что де­ла­ет этот код – за­гру­жа­ет оста­ток за­гру­зоч­но­го ко­да от­ку­да-то еще с дис­ка, из того мес­та, которое уста­нав­ли­вае­тся при за­дании ко­да MBR за­груз­чи­ком.

В по­ис­ках спи­ска оп­ций за­груз­ки за­груз­чик счи­ты­ва­ет свой файл кон­фи­гу­ра­ции – обыч­но это /boot/grub2/grub.cfg – и ли­бо ото­бра­жа­ет ме­ню, ли­бо пе­ре­хо­дит пря­ми­ком к за­груз­ке по умол­чанию. На дан­ной ста­дии Linux никак не за­дей­ст­во­ван: ра­бо­та­ет толь­ко код за­груз­чи­ка. Файл кон­фи­гу­ра­ции вы­да­ет за­груз­чи­ку адрес яд­ра Linux и всех необ­хо­ди­мых фай­лов initramfs, а так­же лю­бые дру­гие на­строй­ки, та­кие, как раз­дел root и то, на­до ли скры­вать это все за за­став­кой. Для же­лаю­щих ви­деть, что про­ис­хо­дит на­чи­ная с это­го мо­мен­та и даль­ше, в боль­шин­ст­ве ди­ст­ри­бу­ти­вов за­став­ку мож­но убрать, на­жав кноп­ку Е для ре­дак­ти­ро­вания пунк­тов ме­ню Grub, уда­лив оп­ции за­став­ки и за­глу­шения зву­ков и на­жав F10 для про­дол­жения за­груз­ки.

За­чем ну­жен ramdisk?

Боль­шин­ст­во ди­ст­ри­бу­ти­вов ис­поль­зу­ют файл initramfs – глав­ным об­ра­зом, по той при­чине, что оп­ре­де­лен­ные драй­ве­ры, в ча­ст­но­сти, нуж­ные для за­груз­ки дис­ка (на­при­мер, кон­трол­ле­ры SATA и код фай­ло­вой сис­те­мы), на­до за­гру­жать вме­сте с ядром. Для обыч­но­го ди­ст­ри­бу­ти­ва встраи­вание всех воз­мож­ных оп­ций в яд­ро раз­ду­ет его на­столь­ко, что оно ока­жет­ся нера­бо­то­спо­соб­ным, по­это­му все встраи­ва­ет­ся в ви­де мо­ду­лей, и те, что нуж­ны для за­груз­ки, вклю­ча­ют­ся в initramfs. Это тип ramdisk’а, за­гру­жае­мо­го про­грам­мой за­груз­ки вме­сте с ядром (ис­поль­зуя про­це­ду­ру BIOS, что­бы счи­тать его с дис­ка), со­дер­жа­щий все фай­лы, необ­хо­ди­мые для то­го, что­бы под­мон­ти­ро­вать раз­дел root. Здесь по­мо­га­ет функ­ция рас­по­зна­вания ядром уст­ройств, ре­шая, ка­кие мо­ду­ли за­гру­жать, и за­тем управ­ление пе­ре­да­ет­ся же­ст­ко­му дис­ку. Так­же initramfs ис­поль­зу­ет­ся для вывода на экран за­ста­вок, по­это­му они и по­яв­ля­ют­ся в са­мом на­ча­ле про­цес­са за­груз­ки.

По­сле мон­ти­ро­вания раз­де­ла root, на­пря­мую или че­рез initramfs, все­рь­ез за­пуска­ет­ся по­сле­до­ва­тель­ность инициа­ли­за­ции. Тра­ди­ци­он­но она на­чи­на­ет­ся с за­пуска /sbin/init, ко­то­рая за­тем за­пуска­ет все осталь­ное, под кон­тро­лем /etc/inittab, и от­ве­ча­ет за спи­сок со­об­щений при за­пуске сер­ви­сов, ко­то­рые вы ви­ди­те на кон­со­ли, ес­ли у вас нет за­став­ки. Так­же это по­зво­ля­ет уви­деть, в ка­ком мес­те про­цесс за­груз­ки под­вис или за­нял боль­ше по­ло­жен­но­го вре­мени, ес­ли у вас возник­ли та­кие про­бле­мы.

Но­вые оп­ции

Вре­мя идет, и все эти сис­те­мы под­вер­га­ют­ся из­менениям. На са­мом по­следнем обо­ру­до­вании BIOS за­ме­ня­ет­ся на UEFI, хо­тя ес­ли вы уста­но­ви­ли про­грам­му за­груз­ки, разницы вы не по­чув­ст­вуе­те. Есть так­же по­пыт­ки за­менить тра­ди­ци­он­ную сис­те­му SysVinit, ко­то­рая су­ще­ст­ву­ет уже мно­го лет. Ubuntu ввел Upstart, а Red Hat и Fedora пред­по­чи­та­ют systemd.

Все они де­ла­ют при­мер­но од­но и то же – за­пуска­ют за­да­чи, необ­хо­ди­мые, что­бы за­ра­бо­та­ла ОС. От­ли­ча­ют­ся толь­ко ме­то­ды. Ос­нов­ное раз­ли­чие в том, что SysVinit по­сле­до­ва­тель­на: ка­ж­дый сле­дую­щий сер­вис до­жи­да­ет­ся за­вер­шения за­пуска пре­ды­ду­ще­го. Мед­лен­но за­пускае­мый сер­вис тор­мо­зит все осталь­ные. Upstart и systemd за­пуска­ют сер­ви­сы па­рал­лель­но, из­бе­гая по­доб­ных уз­ких мест. Конеч­но, есть те, кто счи­та­ет, что Linux на­столь­ко ста­би­лен, что вре­мя за­груз­ки не столь важ­но – ес­ли вы вме­сто вы­клю­чения ма­ши­ны мо­же­те уй­ти в спя­щий ре­жим, пе­ре­за­груз­ка ста­но­вит­ся весь­ма ред­ким слу­ча­ем.

(thumbnail)
> Прости, Ричард, но мы не будем все время говорить «GNU слэш».

> Уб­рав за­став­ку, вы уви­ди­те про­цесс за­груз­ки во всей кра­се, в том чис­ле и со­стоя­ние за­пус­кае­мых про­цес­сов.


Биб­лио­те­ки

Ло­ги­ка раз­де­ления функ­ций ме­ж­ду про­грам­ма­ми.

Linux ис­поль­зу­ет биб­лио­те­ки, что­бы раз­де­лить код ме­ж­ду при­ло­жения­ми. Ес­ли некая про­грам­ма foo ис­поль­зу­ет функ­ции, по­лез­ные для ко­го-то еще, она по­ме­ща­ет их в биб­лио­те­ку — на­зо­вем ее libfoo. И ес­ли дру­гой про­грам­ме, на­зо­вем ее хо­тя бы bar, пона­добится та же функ­ция, она все­го лишь об­ра­тит­ся к биб­лио­те­ке libfoo, не изо­бре­тая ве­ло­си­пед за­но­во.

Это оз­на­ча­ет, что на ва­шем ком­пь­ю­те­ре име­ет­ся все­го од­на ко­пия ко­да функ­ции; ес­ли ка­кой-то про­ект об­на­ру­жит в ней ошиб­ку, та бу­дет ис­прав­ле­на вез­де. Здесь так­же возника­ет по­ня­тие за­ви­си­мо­стей: и foo, и bar за­ви­сят от libfoo и бес­по­лез­ны без нее. Это при­во­дит к фе­но­ме­ну «ада за­ви­си­мо­стей», когда по­пыт­ка уста­но­вить про­грам­му за­верша­ет­ся ошиб­кой и спи­ском недостающих за­ви­си­мо­стей, а по­пыт­ка уста­но­вить их при­тя­ги­ва­ет еще боль­ше за­ви­си­мо­стей. В на­ши дни это ско­рее непри­ят­ное воспо­ми­нание, по­сколь­ку ре­по­зи­то­рии ди­ст­ри­бу­ти­вов ста­ли бо­лее все­сто­ронними, а менед­же­ры па­ке­тов луч­ше справ­ля­ют­ся с сор­ти­ров­кой.

Ес­ли вы ра­бо­тае­те со сво­им менед­же­ром па­ке­тов и ре­по­зи­то­рия­ми, то обо всех за­ви­си­мо­стях по­за­бо­тят­ся, и вам да­же не при­дет­ся о них ду­мать. По­про­буй­те уста­но­вить па­кет somerandom.deb или somerandom.rpm, ска­чан­ный с некое­го сай­та – на­зо­вем его www.somerandomsite.com; и вы вмиг пой­ме­те, по­че­му сто­ит все пе­ре­ва­лить на менед­жер па­ке­тов. Од­но из пред­ла­гае­мых ре­шений – ста­ти­че­­ская ком­пи­ля­ция про­грамм. Это оз­на­ча­ет, что вме­сто ди­на­ми­че­­ских ссы­лок на код в libfoo и под­груз­ке при необ­хо­ди­мо­сти во вре­мя ра­бо­ты, и foo и bar вклю­ча­ли бы код в свои ис­пол­няе­мые про­грам­мы. Тогда ка­ж­дый файл про­грам­мы станет от­дель­ным объ­ек­том, без вся­ких за­ви­си­мо­стей; но он будет на­мно­го объемнее, и ес­ли в ко­де libfoo об­на­ру­жит­ся ошиб­ка или брешь в сис­те­ме безо­пас­но­сти, и foo, и bar при­дет­ся пе­ре­ком­пи­ли­ро­вать и за­но­во вклю­чать в па­ке­ты ва­ше­го ди­ст­ри­бу­ти­ва, что­бы ис­пра­вить си­туа­цию. На невстраи­вае­мых уст­рой­ст­вах пред­по­чи­та­ют при­ме­нять ди­на­ми­че­­ские ссыл­ки, а вот в initramfs, вы­зы­вае­мом во вре­мя за­груз­ки, удоб­ны ста­тические: тогда не надо вклю­чать биб­лио­те­ки в об­раз ramdisk. Лю­бо­пы­ст­вую­щие мо­гут узнать, на ка­кие биб­лио­те­ки ссы­ла­ет­ся про­грам­ма – ко­ман­дой ldd.

ldd /usr/bin/someprogram

по­ка­жет все биб­лио­те­ки, нуж­ные про­грам­ме, и биб­лио­те­ки, нуж­ные этим биб­лио­те­кам, и т. д., по­ка вы не до­бе­ре­тесь до libc – пра­де­душ­ки биб­лио­тек Linux.

Менед­же­ры па­ке­тов

Замечатель­ная гиб­кость ди­ст­ри­бу­ти­вов Linux оз­на­ча­ет, что боль­шин­ст­во эле­мен­тов мож­но из­менить. При­ло­жения по умол­чанию, ра­бо­чие сто­лы, да­же яд­ро мож­но по­ме­нять, так что луч­ше все­го счи­тать ди­ст­ри­бу­тив Linux – ка­кой-нибудь Fedora или Ubuntu – все­го лишь стар­то­вой точ­кой для ин­ди­ви­ду­аль­ной на­строй­ки.

Но есть од­на вещь, не так лег­ко под­даю­щая­ся из­менениям, а имен­но – менед­жер па­ке­тов: един­ст­вен­ный спо­соб его сменить – это взять дру­гой ди­ст­ри­бу­тив. По­про­буй­те, на­при­мер, сравнить Yast от SUSE с Synaptic в Debian, и вы уди­ви­тесь, до ка­кой сте­пени столь важ­ный ин­ст­ру­мент мо­жет из­менить ваш опыт ра­бо­ты в Linux.

Гра­фи­ка

Как ва­ше­му Linux уда­ет­ся столь класс­но вы­гля­деть.

Стан­дарт­ной осно­вой для гра­фи­че­­ско­­го ин­тер­фей­са яв­ля­ет­ся X Window System. Вся­кие KDE и Gnome обес­пе­чи­ва­ют ин­тер­фейс поль­зо­ва­те­ля и внеш­нюю при­вле­ка­тель­ность, но имен­но че­рез Х они об­ща­ют­ся с обо­ру­до­ванием. Дол­гие го­ды Х тре­бо­вал мас­су мис­ти­че­­ских оп­ций на­строй­ки и тре­бо­вал на­ли­чия длин­но­го фай­ла кон­фи­гу­ра­ции, со­дер­жа­ще­го та­кие ве­щи, как мо­де­лай­ны, за­даю­щие час­то­ту пик­се­ли­за­ции и син­хрониза­ции.

Ныне боль­шин­ст­во сис­тем об­хо­дят­ся без вся­ких фай­лов на­строй­ки. Со­лид­ные улуч­шения в рас­по­зна­вании обо­ру­до­вания оз­на­ча­ют, что сис­те­ма с од­ной ви­део­кар­той и одним дис­пле­ем бу­дет «про­сто ра­бо­тать». Воз­мож­но, по­на­до­бят­ся до­полнитель­ные драй­ве­ры для 3D-уско­рения, ес­ли вы, на­при­мер, ис­поль­зуе­те кар­ту Nvidia, но в ином слу­чае вы про­сто за­гру­жае­те ком­пь­ю­тер и принимае­тесь щел­кать мы­шью. Х по­стро­ен на ар­хи­тек­ту­ре кли­ент/сер­вер: сам по се­бе он ра­бо­та­ет как сер­вер, под­дер­жи­вая ото­бра­жение; за­тем кли­ент­ская про­грам­ма об­ща­ет­ся с сер­ве­ром, со­об­щая ему, что и где изо­бра­зить.

Унас­ле­до­ван­ные функ­ции

Воз­мож­но, это по­ка­жет­ся чрез­мер­ным усложнением, но он ис­поль­зу­ет локаль­ные со­ке­ты для об­щения кли­ен­та с сер­ве­ром, так что про­из­во­ди­тель­но­сти уда­ра не на­но­сит. Яв­ное пре­иму­ще­ст­во это­го ме­то­да – то, что кли­ен­ту и сер­ве­ру не обя­за­тель­но на­хо­дить­ся на од­ном и том же ком­пь­ю­те­ре. Вы мо­же­те со­единить­ся с дру­гим ком­пь­ю­те­ром че­рез SSH, и при усло­вии, что на­строй­ка это по­зво­ля­ет, за­пустить про­грам­му на уда­лен­ном ком­пь­ю­те­ре и за­ста­вить его GUI ото­бра­жать­ся на локаль­ном эк­ране. Это от­ли­ча­ет­ся от VNC, по­то­му что толь­ко ок­но од­но­го при­ло­жения мо­жет ото­бра­жать­ся локаль­но, и оно по­яв­ля­ет­ся толь­ко локаль­но – не на уда­лен­ном ком­пь­ю­те­ре. Со­единение VNC зеркаль­но ото­бра­жа­ет весь ра­бо­чий стол на обо­их ком­пь­ю­те­рах, по­это­му пред­принима­ют­ся ша­ги для раз­ра­бот­ки бо­лее про­стых ме­то­дов ра­бо­ты с гра­фи­че­­ским дис­пле­ем. Са­мый про­дви­ну­тый – Wayland. Wayland ис­поль­зу­ет со­вер­шен­но дру­гой под­ход; в нем не толь­ко нет ста­рой на­строй­ки кли­ент/сер­вер, но к то­му же рен­де­ринг окон и дру­гих эле­мен­тов дис­плея пе­ре­дан кли­ент­ским при­ло­жениям, обыч­но OpenGL или Cairo. Это уп­ро­ща­ет Wayland; X со­дер­жит боль­шое ко­ли­че­­ст­во на­сле­дуе­мо­го ко­да рен­де­рин­га, ко­то­рый тре­бу­ет­ся спе­ци­фи­ка­ция­ми Х, но при этом никогда не ис­поль­зу­ет­ся. Пе­ре­да­вая управ­ление кли­ен­там, Wayland мо­жет стать бо­лее лег­ким, бо­лее эф­фек­тив­ным и за­щи­щен­ным. Это так­же оз­на­ча­ет, что гра­фи­че­­ские про­грам­мы, с ко­то­ры­ми вы ра­бо­тае­те, име­ют боль­ше кон­тро­ля над спо­со­бом ото­бра­жения GUI.

> Ин­ст­ру­мен­ты KDE вро­де на­стройщика мо­ни­то­ра по­мо­га­ют в та­ких си­туа­ци­ях, как подключение вто­ро­го мо­ни­то­ра, но для един­ст­вен­но­го дис­плея Х во­об­ще не на­до на­страи­вать.

Скромные труженики – де­мо­ны

От­клю­чив за­став­ку, ко­то­рую боль­шин­ст­во ди­ст­ри­бу­ти­вов ис­поль­зу­ют для со­кры­тия со­об­щений о за­груз­ке, вы уви­ди­те эк­ран, за­полнен­ный со­об­щения­ми о за­пускае­мых сер­ви­сах. Что это за сер­ви­сы, и все ли они нуж­ны? Сер­ви­сы – это про­грам­мы, ра­бо­таю­щие в фо­но­вом ре­жи­ме; они-то и де­ла­ют ком­пь­ю­тер ра­бо­то­спо­соб­ным. Одни ра­бо­та­ют с се­тью, дру­гие – с оп­ре­де­лением и на­строй­кой обо­ру­до­вания, но боль­шин­ст­во – это тра­ди­ци­он­ные про­грамм­ные сер­ви­сы, или де­мо­ны, ко­то­рые при необ­хо­ди­мо­сти пре­достав­ля­ют функ­ции дру­гим про­грам­мам. От­ве­том на вто­рую часть во­про­са, ско­рее все­го, бу­дет «нет». Не­ко­то­рые из этих сер­ви­сов ис­поль­зу­ют­ся поч­ти все­ми сис­те­ма­ми, на­при­мер, де­мон syslog, ко­то­рый пи­шет ин­фор­ма­цию в сис­тем­ные жур­на­лы; но дру­гие мо­гут быть не нуж­ны со­всем. За­чем вам за­пускать CUPS, сис­те­му пе­ча­ти, ес­ли у вас нет прин­те­ра? Ана­ло­гич­но, мо­жет быть не ну­жен сер­вер ба­зы дан­ных MySQL, или де­мон SSH, ес­ли у вас все­го один ком­пь­ю­тер в се­ти. Так что, по­тра­тив на экс­пе­ри­мен­ты где-то пол­ча­са, вы смо­же­те вы­кро­ить па­ру се­кунд вре­мени за­груз­ки.

Мож­но сэ­ко­но­мить ре­сур­сы, не за­пуская ненуж­ные сер­ви­сы; од­на­ко, бу­ду­чи од­на­ж­ды за­гру­же­ны, эти де­мо­ны поч­ти не по­треб­ля­ют сис­тем­ных ре­сур­сов, и ес­ли их не вы­зы­вать, то да­же тре­буе­мая им па­мять от­да­ет­ся дру­гим про­грам­мам,. Так что про­сто от­клю­чи­те сер­ви­сы, ко­то­рые, по ва­ше­му мнению, вам никогда не по­на­до­бят­ся. Ес­ли они тер­пе­ли­во при­слу­ши­ва­ют­ся к се­те­во­му пор­ту или со­ке­ту, ра­бо­та ва­ших кли­ент­ских про­грамм станет чуть эф­фек­тивнее. Про­грам­мам нет ну­ж­ды вклю­чать или за­гру­жать код для от­кры­тия или за­кры­тия лог-фай­лов, или за­пи­си в них – они про­сто вы­зы­ва­ют функ­цию syslog() с тек­стом для жур­на­ла, а об осталь­ном за­бо­тит­ся де­мон. Syslog яв­ля­ет­ся важ­ным сер­ви­сом – ес­ли поя­ви­лись про­бле­мы, имен­но сю­да сто­ит за­гля­нуть в пер­вую оче­редь, по­сколь­ку боль­шин­ст­во про­грамм от­прав­ля­ют со­об­щения об ошиб­ках в сис­тем­ный жур­нал (обыч­но в /var/log/messages).

По­че­му фо­но­вые про­грам­мы наз­вали де­мо­на­ми? Объ­яснений несколь­ко – я пред­по­чи­таю такое: в гре­че­­ской ми­фо­ло­гии так з­ва­лись соз­дания, ре­шав­шие за­да­чи, с ко­то­ры­ми не хо­те­ли во­зить­ся бо­ги.

Сеть

Как ваш ком­пь­ю­тер об­ща­ет­ся с дру­ги­ми.

Ра­бо­та в се­ти крайне важ­на для Linux. Да­же на от­дель­ной ма­шине без со­единения с локаль­ной се­тью, не го­во­ря уж о со­единении с Ин­тернет, се­те­вая ра­бо­та все же ис­поль­зу­ет­ся. Мно­гие сер­ви­сы ра­бо­та­ют по мо­де­ли кли­ент/сер­вер, где сер­вер ра­бо­та­ет в фоне, ожи­дая ин­ст­рук­ций от дру­гих про­грамм. Да­же та­кая важ­ная шту­ка, как сис­тем­ный ре­ги­ст­ра­тор (system logger), ра­бо­та­ет в ка­че­­ст­ве се­те­во­го сер­ви­са, раз­ре­шая дру­гим про­грам­мам пи­сать в лог-фай­лы. Гра­фи­че­­ская сис­те­ма Х то­же яв­ля­ет­ся се­те­вой, где Х-сер­вер ра­бо­та­ет с ра­бо­чим сто­лом и про­грам­ма­ми, со­об­щая, что им на­до ото­бра­зить. Вот по­че­му так про­сто за­пустить Х-про­грам­мы на уда­лен­ном ра­бо­чем сто­ле — с точ­ки зрения ра­бо­ты сис­те­мы это не очень от­ли­ча­ет­ся от локаль­но­го от­кры­тия ок­на.

За­пуск ifconfig всегда бу­дет ото­бра­жать по крайней ме­ре один ин­тер­фейс под на­званием Io, с ад­ре­сом 127.0.0.1 – он ис­поль­зу­ет­ся ком­пь­ю­те­ром для об­щения с са­мим со­бой, что для ком­пь­ю­те­ров вполне нор­маль­но (в от­ли­чие от лю­дей). Ос­таль­ная, и боль­шая, до­ля се­те­вой ра­бо­ты осно­ва­на на TCP/IP, ли­бо в про­вод­ном Ethernet, ли­бо в бес­про­вод­ном со­единении; но ис­поль­зу­ют­ся и дру­гие ти­пы се­тей. Все ди­ст­ри­бу­ти­вы и ра­бо­чие сто­лы вклю­ча­ют хо­ро­шие ин­ст­ру­мен­ты для на­строй­ки и ра­бо­ты в се­тях TCP/IP, от вез­де­су­ще­го NetworkManager до ин­ди­ви­ду­аль­ных ин­ст­ру­мен­тов, та­ких, как ин­ст­ру­мент на­строй­ки се­ти Gnome или Yast от OpenSUSE.

Сре­ди недавних до­полнений к се­те­вой ра­бо­те – тех­но­ло­гии 3G и PAN (Personal Area Network), та­кие, как Bluetooth. Ис­поль­зо­вать 3G-мо­де­м обыч­но про­сто, или через NetworkManager, или через сред­ст­ва на­строй­ки PPP-со­единения ва­ше­го ра­бо­че­го сто­ла. Да, 3G-мо­де­мы и прав­да ра­бо­та­ют, как мо­де­мы, со скрип­та­ми на­бо­ра но­ме­ра и про­чим, но без ши­пения и попис­ки­вания, обыч­но со­про­во­ж­даю­щих со­единение (юным чи­та­те­лям по­следнее пред­ло­жение ниче­го не ска­жет). Боль­шая часть про­блем с 3G возника­ют из-за по­пы­ток на­стро­ить их в об­лас­ти со сла­бым сиг­на­лом, а не из-за под­держ­ки обо­ру­до­вания или ПО в Linux, как я недав­но вновь убе­дил­ся.

Ко­ро­лев­ский про­то­кол

Все боль­шую важ­ность при­об­ре­та­ет Bluetooth, по ме­ре рас­про­странения мо­биль­ных уст­ройств и роста чис­ла уст­ройств вво­да и вы­во­да, при­ме­няю­щих его. Вы­иг­ры­ва­ют от это­го не толь­ко хозяева те­ле­фо­нов и план­шетников: мышь и на­ушники Bluetooth рас­ши­рят воз­мож­но­сти но­ут­бу­ка, когда вы си­ди­те за сто­лом, не за­став­ляя ниче­го под­клю­чать к нему пе­ред на­ча­лом ра­бо­ты. PulseAudio (см. раз­дел про звук) де­ла­ет это еще про­ще, по­сколь­ку уме­ет пе­ре­клю­чать­ся ме­ж­ду рас­по­знан­ны­ми уст­рой­ст­ва­ми.

Хранение

Хранение дан­ных на же­ст­ком дис­ке мо­жет со­сто­ять из несколь­ких уровней. Все фи­зи­че­­ское хранение (в от­ли­чие от се­те­во­го хранения) в Linux вра­ща­ет­ся во­круг блоч­ных уст­ройств, име­нуе­мых так по­то­му, что дис­ки хра­нят дан­ные в бло­ках. Блоч­ные уст­рой­ст­ва ти­па /dev/sda1 дей­ст­ви­тель­но име­ют де­ло с бло­ка­ми, фи­зи­че­­ски­­ми об­лас­тя­ми на дис­ке, и их ско­п­ления­ми в ка­че­­ст­ве раз­де­ла дис­ка. По­верх все­го это­го на­хо­дит­ся фай­ло­вая сис­те­ма, то есть спо­соб хранения дан­ных в ра­зум­ной струк­ту­ре ди­рек­то­рий и фай­лов, со­дер­жа­щих как дан­ные, так и ме­та­дан­ные.

В чем их разница? Ска­жем, вы со­хра­няе­те файл с текстом. Дан­ные в этом фай­ле – текст, но у фай­ла есть дру­гие ат­ри­бу­ты: вла­де­лец, вре­мя соз­дания, вре­мя по­следнего из­менения, вре­мя по­следнего про­смот­ра и кто имел пра­во из­ме­нять или про­смат­ри­вать файл. Эту ин­фор­ма­цию вы уви­ди­те, при­ме­нив к фай­лу ls -l или про­ве­рив его свой­ст­ва в менед­же­ре фай­лов, и она со­хра­ня­ет­ся фай­ло­вой сис­те­мой. Стан­дарт­ная ис­поль­зуе­мая се­го­дня фай­ло­вая сис­те­ма – ext4, но есть и аль­тер­на­ти­вы: ext3, ReiserFS, XFS, JFS и, конеч­но, FAT и NTFS из ми­ра Windows.

Дру­гие Linux’ы

Все, о чем мы го­во­ри­ли, от­но­сит­ся к Linux, ра­бо­таю­ще­му на на­столь­ном ком­пь­ю­те­ре, но­ут­бу­ке или сер­ве­ре – тра­ди­ци­он­ном ком­пь­ю­тер­ном обо­ру­до­вании, ес­ли угод­но, но есть и иные сре­ды, где при­ме­ня­ет­ся Linux. Мно­гие встраи­вае­мые уст­рой­ст­ва, от ро­уте­ров до PVR и при­ста­вок, ра­бо­та­ют на Linux, и во мно­гом он схож с Linux, ко­то­рый мы зна­ем и лю­бим. Ес­ли ваш ро­утер раз­ре­ша­ет доступ SSH, вы бу­де­те чув­ст­во­вать се­бя, как до­ма, как толь­ко вой­де­те.

Есть еще один класс уст­ройств, ко­то­рый в по­следние го­ды об­рел ог­ром­ную по­пу­ляр­ность, и на ко­то­ром ра­бо­та­ет со­всем дру­гой Linux. Не­труд­но до­га­дать­ся, что речь идет о смарт­фо­нах и их план­шет­ных ро­ди­чах, ра­бо­таю­щих на Android. Android – тоже Linux, он ис­поль­зу­ет яд­ро Linux, но это не GNU/Linux. Яд­ро мо­жет быть осно­ва­но на том же са­мом ис­ход­ном ко­де, но все, что ра­бо­та­ет на нем, со­вер­шен­но дру­гое. Прин­ци­пы в неко­то­ром смыс­ле схо­жи, но реа­ли­за­ция их иная – хо­тя, по­пав в обо­лоч­ку на сво­ем те­ле­фоне, вы уви­ди­те зна­ко­мые ин­ст­ру­мен­ты команд­ной стро­ки.

Ра­бо­чие сто­лы

Gnome, KDE, Cinnamon, Unity – мы зо­вем их ин­тер­фей­сом поль­зо­ва­те­ля.

Ес­ли са­мым нижнем уровнем сис­те­мы счи­тать яд­ро, то са­мый выс­ший — это ин­тер­фейс поль­зо­ва­те­ля. Все осталь­ное, от яд­ра до драй­ве­ров и ин­тер­фей­сов обо­ру­до­вания, бес­по­лез­но, ес­ли вы не мо­же­те ис­поль­зо­вать ком­пь­ю­тер. Обыч­но это оз­на­ча­ет гра­фи­че­­ский ра­бо­чий стол, и здесь мы стал­ки­ва­ем­ся с дру­ги­ми уров­ня­ми. Х (или, воз­мож­но, Wayland в бу­ду­щем) про­сто обес­пе­чи­ва­ют чис­тый холст. Вам нуж­но нечто, пре­достав­ляю­щее все пре­лес­ти окон­но­го ин­тер­фей­са, иногда менед­жер окон.

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

Под­бор­ки про­грамм

Сре­да ра­бо­че­го сто­ла – это про­сто в боль­шей или мень­шей сте­пени ин­тег­ри­ро­ван­ная под­бор­ка ути­лит для обес­пе­чения функ­ций, необ­хо­ди­мых для функ­циониро­вания ра­бо­чего сто­ла. За­пуск про­грамм, манипу­ля­ции с их ок­на­ми, от­сле­жи­вание про­ис­хо­дя­ще­го и вклю­чение про­грамм для об­щения друг с дру­гом – все это функ­ции ра­бо­чего сто­ла, но все же в серд­це­вине их на­хо­дит­ся менед­жер окон – KWin для KDE и Metacity в Gnome, ес­ли на­звать толь­ко два. От­ли­ча­ет менед­жер окон от ра­бо­че­го сто­ла уро­вень ин­те­гра­ции. Это осо­бен­но оче­вид­но в KDE, где все ра­бо­та­ет во­круг об­щей серд­це­ви­ны, и про­грам­мы не толь­ко об­ща­ют­ся друг с дру­гом, но эк­зем­п­ляр од­ной про­грам­мы мо­жет быть встро­ен в ок­но дру­гой.

И хо­тя ис­поль­зо­вать KWin в Gnome осо­бо­го смыс­ла нет, вы, воз­мож­но, за­хо­ти­те по­про­бо­вать один из бо­лее уз­ких менед­же­ров окон, пред­ла­гаю­щих боль­ший кон­троль за ра­бо­той с ок­на­ми или при­ме­няю­щих дру­гие ме­то­ды их ото­бра­жения. Сущест­вуют менед­же­ры окон мо­за­ич­но­го ти­па, на­при­мер, awesome и xmonad – они ав­то­ма­ти­че­­ски из­ме­ня­ют раз­мер окон, что­бы все уме­сти­лось на эк­ране (в KDE есть соб­ст­вен­ная та­кая оп­ция). Есть так­же менед­же­ры окон, соз­дан­ные для управ­ления без мы­ши, и минималь­ные менед­же­ры окон, по­лез­ные для спе­ци­фич­ных сис­тем, за­пускаю­щих од­ну про­грам­му в пол­но­эк­ран­ном ре­жи­ме и не одоб­ряю­щих за­гро­мо­ж­дения про­стран­ст­ва вид­же­та­ми.

Звук

Не­когда мучитель­ная те­ма.

Зву­ко­вая сис­те­ма Linux пре­тер­пе­ла мно­же­ст­во из­менений. Дол­гие го­ды у нас бы­ла OSS (Open Sound System), до по­яв­ления ALSA (Advanced Linux Sound Architecture). ALSA по-прежнему с на­ми, но те­перь есть еще PulseAudio и Jack.

ALSA под­дер­жи­ва­ет несколь­ко зву­ко­вых карт (ка­ж­дая из них мо­жет иметь мно­го­чис­лен­ные вхо­ды и вы­хо­ды) и пре­достав­ля­ет под­держ­ку ап­па­рат­но­го мик­ши­ро­вания, ес­ли оно предусмотрено обо­ру­до­ванием, и про­грамм­ное мик­ши­ро­вание, ес­ли нет. Тогда уст­ра­ня­ет­ся потребность в зву­ко­вых менед­же­рах, некогда обес­пе­чивавших в KDE и Gnome воз­мож­но­сть воспро­из­ве­дения зву­ка бо­лее чем одним при­ло­жением од­но­вре­мен­но. ALSA ра­бо­та­ет на низ­ком уровне, бли­же к обо­ру­до­ванию, по­это­му да­ет низ­кую ла­тент­ность. Сей­час под­дер­жи­ва­ет­ся масса устройств, и по­сле уста­нов­ки ди­ст­ри­бу­ти­ва звук дол­жен за­ра­бо­тать при пер­вой же за­груз­ке. ALSA – ком­би­на­ция ко­да яд­ра и при­ло­жений поль­зо­ва­тель­ской об­лас­ти. Она так­же пре­достав­ля­ет API, что­бы дру­гие про­грам­мы мог­ли на­пря­мую управ­лять ей; так, в сре­ду ра­бо­че­го сто­ла вклю­че­ны кноп­ки управ­ления мик­ше­ром.

Дея­тель­ность PulseAudio

PulseAudio – бо­лее но­вая ау­дио­сре­да, но это не за­ме­на ALSA. Она рас­по­ла­га­ет­ся по­верх ау­дио­сис­те­мы яд­ра, пре­достав­ляя бо­лее вы­со­кий уро­вень управ­ления, и ра­бо­та­ет как сер­вер, принимая ин­фор­ма­цию из ис­ход­ных ис­точников и пе­ре­на­прав­ляя ее на при­емник (устройство вы­во­да ре­зуль­та­та или про­грам­му для за­пи­си). Во мно­гих слу­ча­ях за­пи­сь осуществ­ля­ет ALSA, и ис­точ­ником то­же мо­жет быть драй­вер ALSA – для при­ло­жений, не под­дер­жи­ва­ющих PulseAudio на­пря­мую. Та­ким об­ра­зом, при­ло­жение мо­ж­ет на­прав­лять ре­зуль­тат на уст­рой­ст­во ALSA, ко­то­рое пе­ре­хва­тит по­ток и от­правит его че­рез PulseAudio на­зад в ALSA. Не­уди­ви­тель­но, что PulseAudio счи­та­ется чрез­мер­но слож­ным. Хо­ро­шая на­строй­ка долж­на сде­лать все эти ухищ­рения невидимы­ми для поль­зо­ва­те­ля, и имен­но та­ко­ва сей­час си­туа­ция с уста­новкой ди­ст­ри­бу­ти­вов и PulseAudio, так что в основ­ном ALSA по-прежнему «ра­бо­та­ет», но с луч­шей под­держ­кой мно­го­чис­лен­ных уст­ройств. ALSA под­дер­жи­ва­ет несколь­ко уст­ройств вы­во­да, но по умол­чанию у нее гло­баль­ные на­строй­ки. PulseAudio по­зво­ля­ет на­прав­лять му­зы­ку че­рез на­ушники, ис­поль­зуя для звон­ков VOIP на­ушники Bluetooth, и обес­пе­чи­ва­ет менее слож­ное, но столь же по­лез­ное раз­де­ление – скажем, неза­ви­си­мые на­строй­ки гром­ко­сти для при­ло­жений. PulseAudio хо­ро­шо ра­бо­та­ет в се­ти; через него мож­но по­ис­кать дру­гие сер­ве­ры PulseAudio и воспро­из­во­дить ау­дио че­рез их мик­ро­фо­ны – от­лич­но для по­то­ков му­зы­ки в ва­шем до­ме.

Для про­фес­сио­наль­ных ау­дио­при­ло­жений есть зву­ко­вой сер­вер JACK (Jack Audio Connection Kit). Его силь­ная сто­ро­на – обес­пе­чение со­единений с низ­кой ла­тент­но­стью в ре­аль­ном вре­мени ме­ж­ду при­ло­жения­ми для ау­дио- и MIDI-дан­ных. Для обыч­но­го на­столь­но­го при­менения он ну­жен раз­ве что юным му­зы­кан­там.

Пе­чать

CUPS и драй­ве­ры принтеров.

Хо­тя от­кры­тый код по­ощ­ря­ет вы­бор, и, сле­до­ва­тель­но, на­ли­чие несколь­ких про­грамм, ко­то­рые де­ла­ют од­но и то же, но немно­го по-раз­но­му, все же есть об­лас­ти, где вне кон­ку­рен­ции ока­зы­ва­ет­ся од­на про­грам­ма. X.org ис­поль­зу­ет­ся по­все­ме­ст­но для гра­фи­че­­ско­­го ото­бра­жения, а в об­лас­ти пе­чати то же по­ло­жение занима­ет CUPS.

Ес­ли к ва­ше­му ком­пь­ю­те­ру с Linux под­сое­динен прин­тер, вам нуж­ны две ве­щи: CUPS и драй­ве­ры для ва­ше­го прин­те­ра. Во мно­гих слу­ча­ях они идут вме­сте. CUPS – это сер­вер, ко­то­рый ра­бо­та­ет в фо­но­вом ре­жи­ме, ожи­дая за­про­сов на пе­чать. Прак­ти­че­­ски лю­бая про­грам­ма, ко­то­рая занима­ет­ся пе­ча­тью, распозна­ет Internet Printing Protocol (IPP), на ко­то­ром го­во­рит CUPS. На­жми­те Print в сво­ем тек­сто­вом ре­дак­то­ре или брау­зе­ре, и поя­вит­ся ок­но, ко­то­рое по­ка­жет ваш прин­тер, или, ес­ли у вас их несколь­ко, пред­ло­жит вы­брать один из них.

При­ло­жению про­сто нуж­но от­пра­вить дан­ные для пе­ча­ти, обыч­но в ви­де PostScript, на CUPS, ко­то­рый и сде­ла­ет все осталь­ное – да­же по­до­ж­дет, по­ка вы вклю­чи­те прин­тер. CUPS не нуж­но да­же ра­бо­тать на том же ком­пь­ю­те­ре – это се­те­вой сер­вис, а прин­тер от од­но­го ком­пь­ю­те­ра дол­жен быть досту­пен всем в той же се­ти. CUPS бес­по­ле­зен без драй­ве­ров, объ­яс­няю­щих ему, как об­щать­ся с прин­те­ром. По умол­чанию он вклю­ча­ет мас­су драй­ве­ров, и еще боль­ше ста­нет доступ­но при уста­нов­ке па­ке­та драй­ве­ров gutenprint (на­столь­ко, что ваш ди­ст­ри­бу­тив мог бы и уста­но­вить этот па­кет по умол­чанию). HP так­же пре­достав­ля­ет па­кет драй­ве­ров (в том чис­ле и для сканера) под на­званием hplip, ко­то­рый вам по­на­до­бит­ся, ес­ли вы ис­поль­зуе­те их про­дук­цию.

Од­на­ко неко­то­рые из­го­то­ви­те­ли прин­те­ров на­стаи­ва­ют на том, что­бы пре­достав­лять соб­ст­вен­ные драй­ве­ры, а не вклю­чать их в CUPS – обыч­но это обу­слов­ле­но ли­цен­зи­он­ны­ми со­об­ра­жения­ми. Тогда вам следует по­рыс­кать по сай­ту про­из­во­ди­те­ля ва­ше­го прин­те­ра, найти па­ке­т драй­ве­ров, под­хо­дя­щий для ва­шей сис­те­мы, и уста­но­вить его от­дель­но. По­сле это­го драй­ве­ры долж­ны поя­вить­ся в CUPS и в ин­ст­ру­мен­те на­строй­ки прин­те­ра ва­ше­го ди­ст­ри­бу­ти­ва. Дру­гой ва­ри­ант – до по­куп­ки прин­те­ра поискать на linuxprinting.org бо­лее про­све­щен­но­го про­из­во­ди­те­ля. |

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