Пытаясь не отстать от прогресса, отслеживая последние тенденции, автор этих строк работает тем не менее на достаточно старой системе. Моя Линукс-инсталляция (основанная на Debian Sarge) была собрана то ли два, то ли три года назад и с тех пор существенных изменений не претерпела. Я ни разу не переустанавливал систему, большинство инструментов в ней были выпущены опять-таки уже несколько лет как, и лишь наиболее активно используемые приложения собираю из исходников, свежими. До недавних пор меня устраивала и функциональность, и эстетическая сторона, но, конечно, мысли о глобальном апгрейде приходят всё чаще. Собрав на прошлой неделе персоналку для родителей (о чём будет отдельный рассказ) и поставив на неё Debian Etch - который уже этой весной может перейти из разряда тестовой сборки в категорию stable - я поймал себя на откровенной зависти: увы, пора признать, что моё рабочее место устарело и я начал завидовать лоску и возможностям современных программ. Что ж, апгрейд - значит апгрейд, благо, переход на новую версию любимого Linux-дистрибутива не требует покупки многосотдолларовой лицензии, нужно лишь скачать свободно распространяемый ISO-образ. Однако начать сегодняшний разговор хотелось бы не с обновок, а с констатации парадоксального факта: чем старше становится моя система, тем чаще я испытываю за неё... гордость!
Чтобы и вы смогли разделить это ощущение, попробую вкратце обрисовать, что творилось на моём десктопе в последние четверо суток. Нет, я не фанатик и обычно выключаю компьютер на ночь, но под конец прошлой недели мне понадобилось максимально быстро скачать файл весьма солидных размеров (больше 4 гигабайт). Сказано - сделано: в консоли была поставлена многопотоковая закачка (prozilla рулит!) и машина работала без перерыва "до победного". Параллельно на ней же выполнялись прочие задачи: редактировался веб-сайт (Bluefish), писались тексты в OpenOffice.org Writer и диски в K3b, считались электронные таблицы в OpenOffice.org Calc, шёл приём и отправка корреспонденции в Evolution, общение в ICQ, Jabber и IRC через пейджеры Licq и Gaim, трудились Scribus, The GIMP и Inkscape, была скомпилирована пара программ, работал торговый терминал ММВБ и - время от времени - CounterStrike (последние две задачи решаются с помощью Wine), периодически звучала музыка и прокручивались фильмы. Да, а над всем этим великолепием парила старая добрая Mozilla (по сию пору не могу привыкнуть к Firefox), где творились вещи совсем уж невероятные. Дело в том, что я обычно открываю в браузере пару десятков "вкладок" (табов) и до последнего времени считал, что никому не может потребоваться большее их количество. И вот в эти самые четыре дня был посрамлён. Подруга, получившая должность (тссс, по секрету!) главного маркетолога-аналитика в огромном гостиничном холдинге, сделала меня что называется влёгкую: работая над очередным отчётом она загружает Мозиллу так, что линейка вкладок не помещается на экране (это на девятнадцатидюймовом-то широкоэкранном) и уходит куда-то вправо за пределы рабочего стола.
Что ж, кажется, я не забыл ничего важного и теперь попробуйте представить себя на моём месте, когда я, по прошествии четырёх суток, наконец, выключаю компьютер, чтобы дать ему отдохнуть. Выключаю, заметьте, штатным образом, никаких "ресетов" - сперва закрываю все приложения, после выхожу из Gnome, командую в консоли halt. Умная машинка затихает и в наступившей тишине по мне буквально бегут мурашки: я понимаю, что никакие нагрузки не смогли заставить мою систему ошибиться. За четверо суток разнообразного и нелёгкого труда я ни разу не снимал "подвисшую" задачу и уж тем более не перезагружался, не было ни одного критического сбоя, да и вообще ошибок, к исходу означенного срока программы запускались столь же споро, как и в начале, а своп, в который временами уходило до полугигабайта данных, "весит" свои обычные полста. Я работал и отдыхал, прерываясь на сон и еду, за десктопом менялись лица, а мой Линукс трудился без перерыва и теперь готов отработать ещё столько же без признаков утомления. Скажете, чудеса и выдумки, скажете - специально подобранное железо? Можете поверить на слово, у меня обычная самосборная персоналка, компоненты которой подбирались чаще по цене, нежели по качеству или производительности. И в ситуации, описанной выше, не выдумано ни одной минуты. Просто я знаю рецепт, который позволяет добиться тех же результатов почти на любом десктопе. Зная его, и вы сможете повторить всё то же самое на своей машине. Рецепт этот - правильная настройка Ядра.
Тот, кто приходит в Линукс с других операционных систем - будь то Microsoft Windows или Mac OS X - поначалу боится любого упоминания о Ядре. И это неудивительно, ведь для такого пользователя ядро операционки - тайна, скрытая за семью замками, святая святых, доступ к которой имеют только разработчики, а самостоятельное изменение грозит непредсказуемыми последствиями. В Линуксе всё с точностью до наоборот: если вы хотите, чтобы ваша система работала быстро и без сбоев, вам придётся своими руками настроить Ядро. Исходный код Ядра открыт и доступен всем желающим, и именно в нём заключено четыре пятых всей базовой функциональности Linux. Тонкая настройка системы под ваш микропроцессор, учёт особенностей материнской платы (системного чипсета), драйверы подавляющего большинства внешних устройств (звук, флэшки, винчестеры, сетевые карты, игровые контроллеры и т.п. и т.д.) - за всё это отвечает Ядро. Установив на свой компьютер любой дистрибутив, вы получите систему с "усреднённым" ядрышком, настроенным таким образом, чтобы гарантировать работоспособность на максимально широком спектре оборудования. Понятно, что ждать от такой системы высокой производительности и надёжности не приходится. Чтобы наделить свой десктоп этими качествами, вам рано или поздно придётся скомпилировать собственный вариант линуксового ядра, заточенный именно под ваше железо. И здесь нет обходных путей: если администратор - вы, однажды вам придётся сделать это.
После того, как начинающий пользователь Linux осознаёт необходимость компиляции Ядра, обычно наступает второй этап: становится банально страшно, хочется всё бросить. За живым примером можете заглянуть на наш форум [knoppix.ru/forum3/viewtopic.php?t=5763]. И, пожалуйста, не подумайте, что я смеюсь над новичками: каждый линуксоид однажды стоял на пороге той же самой проблемы и большинство боролись с тем же страхом. Трудно поверить, что не будучи программистом, можно своими руками скомпилировать такую махину, как ядро современной операционной системы, и при этом нигде не ошибиться! Но хорошая новость в том, что уже многие годы компиляция ядра Linux не требует от пользователя умения программировать. Вы можете не понимать ни строчки из того хитрого диалекта языка Си, на котором написано Ядро (как их не понимаю я), но при этом сгенерировать качественный и правильный код.
Весь прикладной инструментарий, необходимый для компиляции Ядра, как правило уже включён в состав большинства популярных дистрибутивов. Но, кроме компилятора и библиотек (которых вы и не заметите) вам потребуются исходные тексты самого ядра. В некоторых дистрибутивах они также имеются (ищите пакеты kernel-sources), но я предпочитаю пользоваться оригинальными исходниками с официального сервера Kernel.org - где можно выбрать ядро нужной вам версии. К примеру, исходники одной из самых свежих стабильных версий, 2.6.20, лежат в файле http://kernel.org/pub/linux/kernel/v2.6/linux-2.6.20.tar.bz2 и занимают 41 Мбайт. Скачайте (или попросите у друзей) файл на свой компьютер, распакуйте его в папку /usr/src/linux-2.6.20 и откройте терминал с правами администратора. Скомандуйте (смысл команд, если хотите, можно отыскать в файле README, прилагающемся к ядру):
cd /usr/src/linux-2.6.20
make mrproper
make menuconfig
После чего вы увидите на экране меню примерно такого вида:
Можете поздравить себя - вы только что успешно завершили подготовку исходников Ядра к настройке. Теперь начинается самое интересное. Ядро Linux можно представить в виде пёстрого лоскутного одеяла, составленного из множества небольших лоскутков. То, что вы видите перед собой, и есть полный набор таких лоскутов. Побегайте курсорными клавишами по меню, нажимайте Enter для входа в подразделы и Esc для возврата. Каждый лоскуток-фрагмент по вашему желанию может быть включён в состав Ядра (такие помечаются звёздочкой), выполнен в виде загружаемого модуля (помечены буквой "M" - они будут подгружаться во время работы системы при необходимости) или исключен из Ядра вовсе (пробел). Ваша задача - оставить в Ядре только необходимые для вашего компьютера фрагменты, отключив все лишние.
Как определить, что нужно оставить, а что исключить? Значительная часть настроек будет понятна интуитивно. Так, в списке "Processor Family" требуется выбрать к какому семейству принадлежит ваш микропроцессор, а опцию "ISA Support" включить, если на вашей машине есть ISA-слоты. Для каждой опции имеется подсказка, с которой можно свериться, когда назначение непонятно. На страничке подсказки вы найдёте и рекомендуемое значение по умолчанию - которое можно выставить, если смысл данной опции так и остался неясным. К сожалению, весь процесс конфигурации идёт на английском языке, поэтому тем, у кого трудности с техническим английским, стоит прибегнуть к помощи Google: введя в строку поиска название интересующей вас опции, а также термины "linux" и "компиляция", вы отыщете и подробное описание опции на русском, и рекомендации других пользователей.
Важная часть процесса конфигурации - подключение нужных драйверов. В секции "Device drivers" вам придётся выбрать драйверы тех устройств, которые подключены к вашему компьютеру. Это и жёсткий диск, и флэш-память, звуковая карта, сетевые адаптеры и многое другое. В определении того, какое именно железо установлено, поможет утилита lspci. Внимательно изучите её вывод и затем просто ищите те же самые идентификаторы в настройках Ядра. Завершив конфигурацию Ядра, жмите "Esc", отвечайте утвердительно на предложение сохранить настройки и продолжайте в том же терминале:
make
make modules_install install
Каждая команда вызовет на экран массу малопонятных сообщений, что продлится около часа (в зависимости от скорости вашей PC). По истечение этого времени ядро будет скомпилировано и установлено в каталог /boot (ищите файлы vmlinuz-2.6.20, config-2.6.20 и System.map-2.6.20). Вам остаётся только вписать ссылку на новое ядро в загрузчик системы: добавьте в файл /boot/grub/menu.lst новую секцию по аналогии с теми, что там уже имеются, перезагрузите компьютер и при загрузке выберите строчку с новым ядром. Если загрузка окажется прервана какой-то ошибкой, значит вам следует подкорректировать настройки вашего нового ядра - для этого опять же перезагрузитесь и войдите в систему на старом, работоспособном ядре.
Вот и всё. Время, которое вы потратите на первую в своей жизни настройку и компиляцию ядра Linux, будет сильно зависеть от вашего уровня знакомства с компьютерным "железом". Если вы понимаете, из каких компонент построена ваша машина и как они между собой взаимодействуют (хотя бы в общих чертах), вам будет намного проще. Если нет - придётся в короткое время усвоить немало новых знаний о внутренней механике персональных компьютеров. В любом случае игра стоит свеч. Во-первых, продравшись сквозь ядерные дебри один раз, вы проделаете тот же путь впоследствии значительно быстрее (Ядро одно - во всех дистрибутивах, на десктопах и серверах, на наладонниках и суперкомпьютерах). Во-вторых, только скомпилировав собственное ядро, вы получите по-настоящему производительную и стабильную операционную систему. И, поверьте, вы не устанете удивляться и гордиться этим.
Напоследок - маленький совет. Не стремитесь обновлять Ядро после выхода каждой его новой версии. Выберите один раз, тщательно настройте и оставьте в покое. Даже самые современные программы будут работать с устаревшими версиями линуксового ядра. Плюс, Linux не накапливает ошибок, поэтому способен работать годами без ухудшения производительности. Потратьте высвободившееся время на более полезные и приятные вещи - к примеру, на отдых :-) Успехов вам!
------------------------------------------------------------------------------------------------------------
Этот текст всегда доступен по адресу Knoppix.ru/290307.shtml