1. Вступление
2. Пароли
3. Инсталляция
4. Ядро
5. Опции ядра
6. Администрирование
7. Файловая система
8. Настройка сети
9. Заключение
Я надеюсь, что данный текст послужит толковой инструкцией для начинающих овладевать премудростями OS Linux.
А была ли жизнь до консоли?
Давным-давно не было персональных компьютеров. А были большие машины, на которых работали одновременно десятки людей. У каждой машины были терминалы, которые ставились на тогда еще 25-пиновые COM-порты. Передача данных через такой порт была крайне медленной, а потому о графической среде просто не знали. Как не знали о манипуляторе "мышь". На каждого пользователя был один текстовой дисплей и одна клавиатура. Часто пользователи находились в разных концах страны. Но как-то работать все-таки было надо, и для этого были созданы правила:
- Каждый пользователь, независимо от своего родного языка, географического местоположения и ширины канала связи, должен иметь все (ну или почти все) возможности, которые предоставляет компьютер.
- Каждый пользователь должен тратить минимальное время на выяснение где находится и как называется та или иная программа. При этом у него не должно возникать необходимости общения с другими пользователями.
- Каждый пользователь не должен иметь возможность совершения противоправных действий.
- Админ (здесь он называется root) это тоже пользователь, а потому все вышеперечисленное относится и к нему, т.е. он должен иметь возможность для любого конфигурирования компьютера из любой точки земного шара (понятно, при наличии в этой точке доступа к сети) на практически любом канале связи.
"И стала консоль..." Пожалуй, этими словами можно начинать любую книгу о UNIX, ведь идеологически UNIX и консоль неразделимы. А что можно сделать с любой консоли? Прочесть, удалить и запустить файл или директорию. Вот из этого минимума и складывается практически вся работа. Но столь небольшое количество возможностей легко позволяет выполнить все требования.
Итак, самое главное, что должен знать любой человек при начале работы с UNIX (или его клоном), это организация его файловой системы. Она строится независимо от любых физических устройств, как-то винчестеров, сменных дисков, сетевых устройств и др. В ней все представляется файлами и каталогами. И все файлы и каталоги лежат на своих местах. В Linux (в других клонах это может незначительно различаться, но здесь и далее я буду давать примеры только из Linux) есть корневой каталог, который обозначается /. В нем расположены каталоги первого уровня.
/bin - каталог исполняемых файлов и ярлыков к ним
/sbin - то же самое, только исполнять эти файлы имеет право только root
/root - домашний каталог root'а
/home - там расположены домашние каталоги других пользователей
/boot - каталог в котором расположены файлы, необходимые для загрузки
/mnt - каталог подмонтированных устройств (об этом позже)
/usr - второй уровень иерархии
/tmp - всякий мусор
/lib - разделяемые библиотеки
/var - изменяемые переменные (всякий мусор, только в отличие от /tmp, принадлежащий root'у)
Набор системных директорий:
/dev - директория устройств
/proc - директория файловой системы proc
/etc - директория для файлов конфигурации
Если вы знаете, что где лежит, то вы можете этим спокойно управлять. Например, моя видеокарта Riva TNT2 находится в директории /dev и называется /dev/nvidia1.
"Стой, кто идет! Моя будет стрелять!"
При входе система задаст вам несколько вопросов. Будьте внимательны, от ответов на них зависит ваша дальнейшая судьба. Вот эти вопросы
login:
password:
Чтобы бесконечно долго не пытаться отгадать правильные ответы, следует попросить подсказки у рута (root'а). Кстати, попытки отгадать правильные ответы для других людей вообще-то противозаконны.
И вы попадаете в систему. Началом является ваш домашний каталог, который называется
/home/name
иногда
/home/group/name
Если вы зашли в графическом режиме, то к вашим услугам рабочий стол X Window (не путать с известным плагиаторским названием). Если нет, то консольное приглашение или shell (названий у нее много, но сейчас популярен bash - Borne Again SHell). Поскольку консоль важнее, то сначала о ней.
Работа в конcольном режиме
Базовый набор команд состоит из:
cd <директория> Сменить текущую директорию на
требуемую, двумя точками обозначается
директория нижнего уровня, одной -
текущая
ls <директория> Просмотреть список файлов, по
умолчанию выбирается текущая
cp <файл> <файл> Копировать файл
rm <файл> Удалить файл
mv <файл> <файл> Переместить файл
mkdir <директория> Создать директорию
pwd Указать текущую директорию
Причем писать название команды до конца не обязательно, достаточно нажать клавишу <Tab> и shell допишет название сам. Если этого не произошло, это означает, что есть более чем одна команда с таким началом. Нажмите <Tab> еще раз и увидите весь этот список. Если дважды нажать <Tab> в начале строки, то увидите список всех команд, правда shell сначала поинтересуется, работать ли ему. Ведь список такой большой, а shell программа ленивая.
Прочтя этот список, многие захотят испытать ту или иную команду. Но не все команды предназначены для простых смертных, и они у вас не запустятся. Те, которые запустятся, могут не заработать, поскольку у них недостаточно информации для работы. Чтобы узнать все требования выбранной команды есть команда man, это сокращение от manual. Из ее названия понятно, что она возвращает описания команды. Наберите man <команда> и получите ответы на все вопросы. Но команда man имеет более широкое применение, нежели простое описание команд, она говорит также и о системных вызовах и многом другом, что может потребоваться уже программисту. Существуют man-страницы и на русском языке, также можно найти практически все man-страницы в интеренете на сайте www.linuxdocs.ru.
Например:
rm -r Удаление файлов и директорий
rm -f Удаление без глупых вопросов
Те, кто работал с DOS (я вообще то с ним имел дело всего пару раз), легко привыкнут набирать команды с клавиатуры. Однако разница не только в названиях отдельных команд. Самая главная разница заключается в том, что shell, вообще-то, не всегда интересуется названием вашего текущего каталога. Часто это название приходится ему напоминать. Например, при запуске исполняемого файла. Если просто набрать abvgd, то shell поищет в каталоге /sbin, затем в /bin, затем в /usr/sbin, заглянет в /usr/bin, может еще куда, затем плюнет на это дело и выругается. Надо набрать ./abvgd (обратите внимание на точку перед слэшем).
Другой серьезной разницей являются имена файлов. Здесь различаются строчные и прописные буквы, запрещен пробел, а перед названием директории стоит не обратный слэш , а прямой /. Здесь также разрешены длинные имена файлов, до 256 символов, и отсутствует ограничение на длину полного имени (это имя файла вместе с именами всех директорий).
Скучающие по Norton Commander могут набрать mc, и, о чудо, увидеть пару голубых панелей. А на них кучу файлов с непонятными атрибутами. Если название файла начинается с точки, то это скрытый файл, то же самое относится и к директориям. Если перед названием стоит *, то файл исполняемый (звездочка не входит в название, это атрибут). После названия файла или директории идут имя владельца, имя группы владельца и атрибуты (это 3 восьмизначные цифры). Атрибуты регулируют права чтения, записи и исполнения и меняются командой chmod <файл> <новые параметры> (это сокращение от change mode). Для директории исполнение означает получение списка ее содержимого, а чтение - открытие. Каждая цифра получается как "чтение"*4+"запись"*2+"исполнение", каждый параметр принимает значение 0 или 1. Первая цифра означает права владельца, вторая его группы, третья - прочие. Атрибут 666 означает права на чтение и запись для всех, но запрет на исполнение. root имеет неограниченные права.
В аргументах большинства команд входящие в название файлов буквы и цифры можно заменять специальными символами - $ (заменитель одного любого символа), * (заменитель любого количества любых символов), {1-3} (заменитель обозначенных символов). Будьте осторожны с употреблением этих символов!
Примечание: несколько лет тому назад на моего научного руководителя (он в тот момент был root'ом) в Университете нашло непонятное забвение, и он в каталоге /mnt кафедрального сервера набрал следующую команду:
rm -rf *
После этого 3 диска стали девственно чистыми. Самым страшным итогом этого происшествия стала гибель архивов порнухи двух групп. А это 17 человек!
Помимо обычных файлов в каталоге могут быть еще и линки (link). Если вам знакомо такое понятие как ярлык (а кому оно сейчас не знакомо), то линк - это обобщение ярлыка. Обобщение это состоит в том, что если ярлыки служат для удобства пользователей, то линки могут использоваться еще и программами. Существует два типа линков - мягкие (soft) и жесткие (hard). Жесткие линки неотличимы самого файла, и любое изменение жесткого линка эквивалентно изменению файла. Нельзя удалить файл, если на него указывает хоть один жесткий линк. Мягкие ссылки больше похожи на ярлыки, поскольку их можно оставлять везде, тогда как для жестких есть ограничения. Жесткий линк получается командой ln <файл>, а мягкий ln -s <файл>. Если файл открыт программой, то это эквивалентно наличию жесткого линка.
Windows - операционная система многозадачная, это означает, что она работает и глючит одновременно. (Когда я набирал предыдущую фразу в Word'е, у него перекосило шрифты.) Для UNIX мультизадачность означает немного другое. Вы можете запустить несколько процессов, переключаться между ними, менять приоритеты, и многое другое. Если процесс не понравится, его можно убить, только надо иметь в виду, что у каждого процесса имеется владелец. И ему могут не понравиться ваши действия. А поскольку простой пользователь может убивать только свои процессы, то всеобщим убийцей является root. Получить список процессов можно командой ps.
Для организации многозадачности в UNIX предусмотрено 2 режима foreground и background. Отличаются они тем, что foreground работает с клавиатурой, в то время как background доступа к ней не имеет. Командами для доступа к этим режимам являются fg и bg с номером процесса. Если у вас открыта только одна консоль (а не 2 или 3), то бэкграундные процессы посылают свой вывод только на нее. Выглядит это жутковато, мало кто способен разобраться в мешанине букв, цифр и других символов. Но есть масса облегчителей (я не придумал это слово, а прочел на банке с соком) работы, например команды < и >. Это команды ввода/вывода в файл. С их помощью вы можете отправить вывод в файл (например, на другую консоль или иное устройство). Команда служит для отправления вывода одного процесса на вход другого. Если после команды стоит символ &, то она автоматически исполняется в бэкграунде.
Для управления процессами также служит команда kill, особенно полезно знать ее версию killall. Применение этой команды root'ом может привести к немедленной перезагрузке. Она посылает системные вызовы процессам, сам вызов определяется ключом, который пишется между командой и номером процесса.
Тупоконечники против остроконечников, зенитчики против спартачей, поклонники Intel против сторонников AMD - это противостояние вечно. Есть оно и среди пользователей Linux. Это вечное противоборство текстовых редакторов vi и emacs. Многие, поработав с Word, удивляются, как можно готовить тексты без графического режима. "Можно!" - отвечают им и те и другие. Это мощнейшие из известных мне текстовых редакторов, во много раз превосходящие Office XP по возможностям. И не просто отвечают, а пишут книги о любимом редакторе, и разгромные статьи о противном. Количество ругани, выплеснутой в этом противостоянии, явно превосходит новомодное выяснение "кто тут производительнее". Редактор emacs имеет собственный язык программирования elisp, умеет работать с TeX, HTML и другими языками подготовки текста. Насчет HTML я не знаю, но ничего лучше для TeX просто не существует. Широко известен (и много лет развивается) макропакет для emacs, который представляет собой личного психотерапевта. Редактор vi не имеет собственного языка программирования, но система его команд способна подключать компиляторы C/C++, Java, FORTRAN, Perl и многое другое, даже с синтаксической подсветкой. Я не могу описать все возможности этих языков, это тема для нескольких отдельных книг, благо они написаны. Недавно появился emacs и для Windows.
Отгремевшая же недавно Великая Броузерная Война никак не задела пользователей Linux. Microsoft не удосужился сделать текстовую версию своего IE с открытыми кодами. А создатели lynx удосужились! Ходить по сети можно и в текстовом режиме. Есть версия для Windows по адресу http://jim.spath.com/lynx_win32/. Или можно посмотреть под виндами, как выглядит паутина для юниксовой консоли, просто зайдя в Библиотеку Мошкова http://lib.ru. А когда зайдете, то помимо художественной и не очень литературы найдете там лучшую подборку книг по UNIX.
"Папа, я, когда вырасту, тоже стану рутом!"
Когда-то установка Linux была значительной проблемой, до того неприятной (особенно для новичков), что в одном форуме кто-то написал "надо чтобы перед установкой Linux проверял, есть ли на диске Windows, и если есть, то брал конфигурацию железа с нее". Последние версии ставятся проще, чем Windows 98. Устанавливать его можно с дискового раздела, по сети, по ftp, но я всегда пользовался только установкой с загрузочного CD-ROM, оставив первые варианты экстремалам. Выбор самого дистрибутива дело очень личное и может повлиять на всю вашу последующую жизнь. Каждый дистрибутив имеет свои особенности и недостатки. Для меня существенным недостатком является английский язык, поскольку я предпочитаю не приспосабливаться к компьютеру, а приспосабливать его под себя. Еще большим недостатком я считаю заботу обо мне со стороны неназываемой фирмы, в виде сокрытия настроек и информации. С другой стороны большим удобством является, когда приложение при удалении само вычищает диск от продуктов своей жизнедеятельности. Таким образом, я и связался с ASPLinux. Это совместимая с Red Hat Linux русская версия с некоторыми оригинальными добавлениями, вроде дополнительного загрузчика ASPloader. Также совместимость означает наличие в ASPLinux программы управления пакетами RPM (Redhat Packet Manager).
Предполагается, что вы приобрели лицензионную версию (например, купили в ларьке у метро или скачали из Интернета)! Затем принесли домой, и поставили диск в лоток. Перезагрузились и увидели много строчек на английском, в которых предлагается выбрать вариант установки. Самый простой - это установка в графическом режиме. Выберите язык, клавиатуру и мышь (они, в отличие от языка, сразу определяются правильно). Опция "Эмулировать 3х кнопочную мышь" не приведет к появлению третьей кнопки, но позволит интерпретировать одновременное нажатие на обе как нажатие на третью.
Затем вам предложат выбор варианта установки, советую выбрать "Выборочно". Другие варианты хуже установки Windows XP, та хоть диск без предупреждения не форматирует. После это можете разбить диск программами DiskDruid или fdisk (не путать с fdisk для DOS или Windows, это все разные программы). Если у вас достаточно большой диск, то советую в начале диска сделать небольшой раздел, примерно 20MB, который обозначить /boot. Это полезно, поскольку не каждый загрузчик умеет работать с большими дисками, да и соображения безопасности тоже не будут лишними. Основной раздел следует маркировать как /. Затем идет выбор файловой системы. Основная файловая система Linux называется Ext2fs, дополнительно можно использовать FAT и многие другие. Если вы не хотите отказываться то Windows, то можно использовать раздел FAT даже для постановки системы. Это лишит вас некоторых дополнительных возможностей, например системы привилегий для Ext2fs. В Linux для размещения данных подкачки используется специальный раздел с файловой системой Swapfs. Этот раздел рекомендуется сделать примерно в полтора раза больше оперативной памяти. После установки эти разделы будут автоматически смонтированы. Здесь же делаются первоначальные установки RAID.
Если еще не решились полностью разметить весь диск под ext2fs, а из сентиментальных соображений оставить какую-либо другую операционную систему, то следующим этапом идет конфигурирование системного загрузчика lilo (LInux LOader). Lilo можно ставить либо в MBR (Master Boot Record), либо в первый раздел диска. Советую использовать второй вариант, если вы сделали к тому моменту раздел /boot, как я писал выше. Тут же предлагается создать системную дискету. Не отказывайтесь!
Начальная конфигурация сети проходит в том случае, если у вас есть сетевые устройства. Настройка их достаточно стандартна, вам предлагается выбрать IP-адрес, маску, адрес сети и широковещательный адрес в первой панели. И имя компьютера, адреса шлюза и серверов DNS во второй, для каждого из интерфейсов. Также для каждого интерфейса имеется две кнопки "Использовать DHCP" и "Активизировать при загрузке". DHCP нужно оставить только если ваша сеть его использует. Активизация интерфейса при загрузке означает, что его не нужно будет каждый раз включать вручную (некоторым это нравится).
Введите пароль для рута, введите пользователей. Настоятельно советую не использовать возможности рута постоянно, поскольку они не безграничны. Если вы снесете себе всю систему, то погибнет и рут. Заведите хоть одного простого юзера. И ни в коем случае не отключайте "shadow passwords" и "MD5 cryptography"!
Выбор установки - это выбор пакетов. Они распределены по группам, каждая из которых имеет достаточно красноречивое название. Кстати, правильный выбор необходимых пакетов ДЕЙСТВИТЕЛЬНО позволяет сэкономить место на диске. Если ваши требования ограничиваются только сервером сети, то следует подумать "А нужна ли мне графическая оболочка?". В этом случае, как правило, не нужна. С другой стороны средства кластеризации явно лишние для 99.9% всех компьютеров, особенно если на них нет сети. Но, по крайней мере, на один компьютер в локальной сети нужно установить Kernel Development и Development. Это потребуется при окончательном конфигурировании.
После выбора пакетов вам предложат сконфигурировать графическую оболочку. Выбор конфигурации в стандартном дистрибутиве небольшой, позднее придется ее перестроить, но об этом потом. А сейчас выберете графическую карту из списка доступных, не обольщайтесь его размером, в действительности там немного изначально сконфигурированных серверов. Если у вас не Savage или Rage, а что-нибудь посовременней, то выбор практически не отличается от стандартного SVGA. Выберите объем графической памяти. Кнопку "Проверить" нажимать не рекомендуется. Поскольку сама графическая среда полностью не загружена и не отконфигурирована, то эффект может быть абсолютно неожиданный, даже если все установки верны.
Некоторое время будут копироваться пакеты, затем компьютер перезагрузится. И у вас есть свой домашний пингвин! Он еще молод и необразован, а потому вам придется приложить к этому некоторые усилия. Только не пугайтесь, для доведения до ума Windows приходится работать вдвое больше. Сначала ищешь возможность включить настройку, и только затем начинаешь ее крутить.
Ядреная бомба
Первое, что следует сделать, это перекомпилировать ядро. Тут требуется знать точную конфигурацию вашего компьютера, очень желательно иметь свежие драйвера. Последнее требование возникает из-за чрезвычайно быстрого прогресса в графике и звуке. Драйвера для видеокарт nVIDIA можно найти на их сайте. Много различных драйверов для других продуктов пишется простыми энтузиастами, большая их коллекция расположена по адресу http://www.linux.org. Немного в стороне этого стоят "мягкие" модемы. Эти дешевые уроды построены на принципе, что все должен делать центральный процессор. Другим следствием их дешевизны является экономия на программистах, для некоторых моделей (особенно OEM) крайне сложно достать драйвера даже для Windows. Внешние модемы драйвера вообще не требуют. Часто бывает полезно скачать последнюю версию ядра с официального сайта http://www.kernel.org.
Скачивая новое ядро, всегда следует помнить о соглашении нумерации, которое используется разработчиками. Каждое ядро (кроме самых первых) имеет номер из 3 (трех) частей.
Первая часть - число (не цифра!) 2, оно означает, что ядро может быть модульным и не-i386-совместимым. Все современные ядра такие.
Второе число - это номер версии, четные числа обозначают стабильные и рабочие ядра, нечетные - это разрабатываемые версии. Нечетные версии не следует ставить для рабочих компьютеров.
Третье и последнее число - это номер релиза версии. Для четных (стабильных) версий оно связано с количеством встроенных драйверов. Для нечетных - со степенью их стабильности и работоспособности. Так, что не следует брать самое последнее ядро. Например версию 2.5.10 (последняя не момент написания) следует брать только для из-за поддержки USB 2.0, записи на NTFS, или обладателям процессоров AMD Hammer. Но простым ядром дело не всегда заканчивается, к ядру часто идут дополнительные патчи сторонних разработчиков с разнообразными драйверами устройств, неподдерживаемых стандартным ядром. Иногда имеет смысл установить и их. Но это уже для специалистов, новичкам с этим связываться не следует.
Когда скачаете новое ядро (предположим, версии 2.4.4), поместите его каталог linux-2.4.4 в каталог /usr/src, а затем ОБЯЗАТЕЛЬНО сделайте символический линк:
ln -s /usr/src/linux-2.4.4 /usr/src/linux
Если вы не сделаете этого, то модули правильно не установятся. Зайдите в директорию /usr/src/linux и выполните одну из команд make config, make menuconfig или make xconfig. Команда make config морально устарела и полностью заменяема последними двумя. Первые две работают в текстовом режиме на обычной консоли, третья, более удобная, требует графической оболочки. Хотя результат работы всех трех одинаков.
Вам предложат набор всевозможных опций, которые можно включить в ядро. Я буду описывать их лишь в приложении к конкретным задачам, которые ставятся перед обычным компьютером на процессоре Intel или AMD. Обладателям других процессоров вряд ли требуются мои пояснения.
Самое главное, что следует помнить при выборе компонент ядра это то, что не все они приводят к работоспособности ядра на вашем компьютере. Часто они приводят к тому, что он после установки нового ядра просто не запустится. В большинстве пунктов имеется три варианта ответа Y, M, N. Если с Y и N все ясно, то M означает не "may be", а "module". Ядерный модуль это подгружаемая часть ядра, он запускается только в том случае, когда требуется его присутствие. Некоторые драйвера, например поставляемые производителем, являются модулями изначально и не могут быть вкомпилированны собственно в ядро. Другие, например драйвер корневого диска, не должны выбираться как модуль ни в коем случае.
Code maturity level options. На уровень завершенности кода обращать внимание не следует, поскольку большинство компонентов ядра относятся к категории "бета" уже много лет. Ответ "да" на единственный вопрос Prompt for development and/or incomplete code/driver.
Processor type and features определяет тип процессора. Для правильных ответов следует знать, какой у вас процессор. Я полагаю, что это вы знаете. Тогда сообщите об этом ядру. В Processor family выберите свой процессор, правда, учтите, что ядро для Athlon не будет работать на 386ом процессоре. Math emulation предназначено для процессоров 386 и 486sx без математического сопроцессора и бессмысленно для любого другого. MTRR support включает дополнительные регистры памяти для процессоров семейства Pentium, практически обязательно. SMP support обязательно для включения на многопроцессорных машинах, если же у вас только один процессор, то второй при включении SMP не появится.
Loadable module support включает поддержку загружаемых модулей. Отказываться имеет смысл только для ядер бездисковых компьютеров. В противном случае отвечайте Yes на все вопросы.
General setup. Следующее по значимости меню после Processor type. Network support, PCI support, Kernel support for ELF binaries, Kernel support for MISC binaries, System V IPC, BSD Process Accounting, PCI bridge optimization и Sysctl support обязательны всегда! Все это необходимо для простой работы программ. Поддержка сети необходима, поскольку многие программы, например графическая оболочка X Window или консоль, открывают виртуальные сетевые соединения даже в отсутствии локальной сети или модема. Шина PCI встречается на 99.9% всех компьютеров, даже если на них нет ее слотов. Поддержка исполняемых файлов в формате ELF позволяет запускать программы. А MISC означает возможность запуска большинства эмуляторов и виртуальной машины Java. Кстати этот пункт полностью содержит последующий Kernel support for JAVA binaries, который в скором времени исчезнет. Пункты Kernel support for a.out binaries и Backward-compatible /proc/pci предназначены для программной совместимости и, на сегодня устарели. Пункты Parallel port support и PC-style hardware необходимы для работы параллельного порта. Support foreign hardware предназначен не для компьютеров "желтой сборки", а просто подключает некоторые варианты устаревших параллельных портов, сегодня не нужен. Пункты для APM/ACPI будут полезны большинству современных машин. Если ваша материнская плата имеет биос с поддержкой APM, то следует ответить Yes на вопросы Advanced Power Management BIOS support, Enable APM at boot time, Power off on shutdown. Так же для управления APM служат опции Ignore USER SUSPEND (полезно ответить No), Enable console blanking using APM (обычно ответ No, ответ Yes только для некоторых моделей laptop). Так же устаревшими являются PCI quirks, которые позволяют устранять некоторые ошибки реализации шины PCI на некоторых чипсетах. Несколько последующих опций снова предназначены для APM, а опция RTC stores time in GMT позволяет выставлять каждому пользователю собственное время.
Plug and Play support нужен практически всегда. В то время как PnP on ISA bus и Auto-Probe for parallel port вполне можно сделать модулями.
Block devices это также нужная и полезная вещь, даже если на вашем компьютере их нет. Главное требование здесь: ВСЕ установки загрузочного и корневого дисков (или иных загрузочных устройств) не должны быть модульными. Если вы умудритесь нарушить это правило, то просто не сможете загрузиться. Название опций Normal PC floppy disk support (очень приятно, что его можно отключить), Enhanced IDE/MFM/RLL disk/cdrom/floppy support, Include IDE/ATA-2 DISK support, Include IDE/ATAPI CD-ROM support, Include IDE/ATAPI TAPE support, Include IDE/ATAPI FLOPPY support (последнее предназначено для ZIP и магнитооптики) понятно. Опция SCSI emulation необходима для CD-R и CD-RW устройств, а так же для некоторых устаревших моделей 4х CD-ROM. Несколько настроек DMA выведены сюда из-за ошибок реализаций на старых чипсетах, это Generic PCI IDE chipset support, Generic PCI bus-master DMA support, на новых моделях включайте спокойно. Опция Use old disk-only driver on primary interface также устарела. Boot off-board chipsets first support включайте только в том случае, когда твердо знаете, что делаете. А Loopback device support необходим всегда. Network block device support это редко встречающийся случай сетевых устройств. RAM disk support необходим для файловой системы /proc. А Initial RAM disk (initrd) support это виртуальное устройство, пожалуй, основной задачей которого являются заделывание дыр загрузочных дисков. Multiple device driver support служит для создания программного RAID-контроллера, т.е. на мой взгляд для ненужного развлечения программистов. Опции XT hard drive support и Parallel port IDE support дают последний шанс динозаврам от дискостроения.
Networking options представляют собой самую запутанную часть ядра. Фактически к ним так же относится и несколько последующих разделов. Обязательно, даже при отсутствии сети и модема, следует включать (и не модулем) Packet socket, Kernel/User netlink socket, Routing messages, Network firewalls, Socket filtering, Unix domain sockets, TCP/IP networking. А так же для работы в сети IP, вам потребуются IP Multicasting, IP Firewalling, IP Virtual hosting и IP Accounting. Опция IP Forwarding/Gatewaying необходима для роутера, но КРАЙНЕ ВРЕДНА для файервалла. Следующий большой набор опций, название которых начинается с IP, представляет собой огромный простор для творчества. Их вполне можно сделать модулями, а потом развлекаться уже с работающим компьютером. После "новой" опции The IPv6 protocol (она уже более 10 лет как "новая", и еще лет 10 такой будет), которую можно ставить по желанию, поскольку она ни на что не влияет, идут разнообразные не-TCP/IP протоколы. Их вполне можно включать модулями, если в вашей сети эти протоколы поддерживаются. Опасной тут является только опция Fast switching, включение ее может повлечь спонтанное отключение остальных сетевых опций.
QoS and/or fair queuering (система очередей для сетевых протоколов и сокетов) абсолютно необходима для компьютеров, работающих в кластере, бывает очень полезна для маршрутизатора, моста или роутера большой (>200 комп.) сети. В остальных 99.9% случаях только тормозит работу сети. Кстати владельцам Windows XP (Home и Pro) на заметку: этот протокол там ВКЛЮЧЕН, резервирует 20% трафика (Владельцы медленных модемов, привет!) и не отключается даже после удаления этого протокола.
SCSI support необходимы для SCSI устройств (это очевидно) и для пишущих IDE CD-R и CD-RW (очевидно не всегда). Счастливые владельцы SCSI устройств как правило сами знают, что следует включить. А обладатели "писАлок" как правило - нет. (Нечего хихикать, это я про себя тоже.) Им следует включить SCSI support, SCSI CD-ROM support и SCSI generic support.
SCSI low-level drivers для работы IDE CD-RW не нужны, остальное по необходимости.
Network device support не требуется, если вы не имеете ни сетевых устройств (адаптеров, модемов и т.д.), ни желания их подключать. Например, вы входите в секту, запрещающую использование Интернета, или просто страдаете тяжелой формой вирусофобии, в связи, с чем у вас нет ни сети, ни дисковода, а есть веселая колония антивирусов (штук 10-20). Остальным следует найти свою сетевую карту или драйвер PPP для модема, и установить их. Разъяснения требуют только некоторые опции. Dummy net driver support это пустое устройство необходимое для работы PPP. EQL support позволяет нескольким модемам работать как один (этакий модемный RAID). Ethertab network tab программный контроллер Ethernet'а, иногда бывает полезен. Keepalive and linefill требуется для устаревшего протокола SLIP. А Traffic Shaper позволяет ограничить трафик младшему брату, не используя неудобный QoS.
Amateur Radio AX.25 level 2 protocol используется для передачи данных по каналам любительского радио. Для работы требуется не сетевая карта, а любительский радиопередатчик. Только один мой знакомый, страстный радиолюбитель, его использует.
IrDA subsystem support требуется для работы устройств связи через инфракрасный порт. Можно включить модулями, а потом выяснить что требуется для вашего ИК-порта, а что нет.
Infrared-port device drivers представляет собой конкретный набор драйверов для этих устройств. Требуется только знать матчасть.
ISDN subsystem. С ней я ни разу "в живую" не встречался, подсказать ничего не могу.
Old CD-ROM drivers (not SCSI, not IDE). Название говорит само за себя.
Character devices это, на мой взгляд, самая интересная часть. Собранная здесь коллекция впечатляет: от программного терминала до синтезатора речи. Необходимейшей вещью здесь является Virtual terminal. Если вы не включите его, то у компьютера не будут работать устройства ввода и вывода, как то клавиатура, мышь, монитор, и т.д, и т.п. Для работы последовательных портов и модемов (в т.ч. внутренних) необходимы Standard/generic (dumb) serial support, Support for console on serial port. Остальные опции включаемые через Extended dumb serial driver support сегодня требуются обычно только для внутренних модемов (им следует включить Support special multiport boards), а в неумелых руках могут быть небезопасны. А для параллельного порта и принтера на нем требуются Parallel printer support и Support IEEE1284 status readback. Очень полезными являются Unix98 PTY support (поддержка виртуальных терминалов в SysV стиле), Mouse support (not serial mouse), /dev/nvram support и Enhanced Real Time Clock (вообще-то для многопроцессорных машин это просто необходимо). Включение Watchdog Timer Support позволит вам использовать устройства аварийного отключения и аппаратные средства безопасности (они конфигурируются далее). Остальные опции это специфические драйверы к довольно редким устройствам.
Mice переводится как "мыши".
Watchdog Cards позволяют вам нажимать на кнопку Reset, даже когда вас нет рядом с этой кнопкой.
Video for Linux, очень странная опция. Всегда ставьте SVGA support, остальное скачивается с сайта производителя и ставится модулем, даже если вашей карты нет в списке. Хотя есть самодельные драйвера для Radeon которые можно вкомпилировать непосредственно в ядро.
Joystick support первая, полностью игровая опцию в ядре. Будем надеяться, что не последняя.
Ftape, the floppy tape device support. Когда-то не было не только рабочего стола с иконками, но и винчестеров. Это опция из тех времен.
Filesystems имеет такие же требования, что и Block Devices, т.е. корневая и загрузочная файловые системы, а так же файловая система /proc, ОБЯЗАТЕЛЬНО должны быть включены в ядро. Остальное можно сделать при желании модулем. Quota support включает поддержку квот, что очень полезно для дискриминации женщин, расовых и сексуальных меньшинств, а так же младших братьев. Kernel automounter support включает систему автоматического монтирования съемных носителей (подробнее в следующей главе). Здесь обычно требуются следующие файловые системы семейства FAT MSDOS fs support, UMSDOS: Unix-like filesystem on top of standard и VFAT (Windows 95) fs support. Система NTFS так же поддерживается, чтение налажено нормально на ядрах серии 2.4, а вот с записью пока проблемы. Хотя иногда работает. Системы для CD-ROM это ISO 9660 filesystem и Microsoft Joliet CD-ROM extentions, их вполне можно сделать модулями если они НЕ предназначены для CD-R/CD-RW устройств. По поводу /proc filesystem и Second extended fs смотри выше. (Подсказка: название second extended имеет основная файловая система Linux.) Если вам требуется (обычно требуется) поддержка псевдотерминалов стандарта Unix98, то включите /dev/pts filesystem for Unix98 PTYs. Остальные файловые системы можно включать, если есть необходимость, но они встречаются очень редко, как правило на очень больших или на очень старых машинах.
Network filesystems требуются для работы с каталогами на удаленных компьютерах. NFS filesystem это стандартная сетевая файловая система, она распространена в сети UNIX и имеет гораздо больше возможностей, чем аналоги от Microsoft (например, монтирование по Интернету и система шифрования). Root filesystem on NFS требуется для бездисковых рабочих станций, остальным не требуется. SMB filesystem это сетевая файловая система для Microsoft Workgroups. А SMB Win95 bug work-around требуется для корректной работы Самбы с Windows 95. NCP filesystem - стандартная файловая система для Novell NetWare. А Coda filesystem это преемник NFS, который пока встречается редко.
Partition Types служат для взаимодействия с дисками неродных для Linux'а файловых систем, и в общем случае включения не требуют.
Native language support служит для работы с файлами и директориями, в названии которых имеются неанглийские буквы. Вам потребуются Codepage 437 (US, Canada), Codepage 866 (Cyrillic/Russian) для разделов FAT/NTFS и NLS ISO 8859-1 (Latin 1), NLS KOI8-R (Russian) для разделов Ext2fs.
Console drivers. VGA text console и Support for frame buffer devices не требуется только если вы даже в мыслях не собираетесь устанавливать на ваш компьютер монитор. Остальные опции служат для развлечения уставших от работы глаз. Попробуйте, может понравиться.
Sound. Звук, и этим все сказано. Если вашей карточки здесь нет, то либо стоит поискать в Интернете, либо скачать более новую версию ядра.
Kernel hacking. Тоже говорящее название. Позволяет вытворять практически немыслимы штуки с ядром. Например, правильно выключить "мертвую" систему. Но эти функции работают с любого эккаунта, а не только от root'а. Так что включать полезно и интересно, но число доморощенных хацкеров младшего школьного возраста вырастает больше любого приличия.
Прим: Обратите особое внимание, что в некоторых местах (General setup и др.) есть пункты, которые предлагают скомпилировать ядро для конкретного компьютера или процессора. Перед выбором этих пунктов следует обязательно убедиться, что у вас именно ЭТОТ компьютер. (Учтите, что эти компьютеры большая редкость в домашних условиях!) Если вы ошибетесь, и скомпилируете ядро для другой системы, оно с 99.99999% вероятностью работать на вашей не будет!
На чипсеты, упомянутые в настройках, такие жесткие ограничения не распространяются. Как правило, это либо чипсеты для не-х86 процессоров, либо старые чипсеты для процессоров 486 и Pentium, имеющие ошибки реализации.
Я собирался коротко рассказать о настройках ядра Linux, не получилось. Теперь коротко расскажу о его компиляции и установке. Компиляция производится командами:
make dep
make clean
make zdisk или make zlilo или make bzImage
Первый вариант требуется для установки на загрузочную дискету, второй для установки через lilo, третий для ручной установки. Рекомендую третий вариант. В последнем случае, откомпилированное ядро вручную копируется в директорию /boot, а затем настраивается загрузчик. Для lilo требуется добавить строку в файл /etc/lilo.conf с положением и названием ядра (подробности ниже). И запустить загрузчик командой lilo. Настоятельно советую не стирать старое ядро, а оставить его в качестве еще одного варианта загрузки.
После этого устанавливаются модули командами:
make modules
make modules_install
Перезагрузитесь и работайте. Если сможете.
Consortium Deamonicum
Я где-то читал, что администрирование UNIX - это на 60% знание конфигурационных файлов в /etc, на 20% - логов в /tmp и /var, на 10% файловой системы /proc, и только уделяется 10% остальным корневым каталогам. Пожалуй, это действительно так. Ведь в каталоге /etc находятся практически все управляющие файлы вашей системы. Если здесь я буду указывать файл shadow, то следует понимать, что он имеет полное название /etc/shadow. А если rc.d/rc1 - то /etc/rc.d/rc1. Управление Windows сводится, согласно их "frendly" и "easy-to-use", к постановке галок и нажатиям кнопок, а сам интерфейс подобен наколотым в разных местах пометочным листам. Если вам вдруг, захочется заглянуть поглубже, то, скорее всего, это не удастся, а если вы вдруг запортите один из листочков, то придется "переустанавливать систему". Управление Linux и UNIX аналогично тетради, которая всегда лежит в одном и том же месте и заполнена страничками-файлами. Для того чтобы получить полный доступ к возможностям системы достаточно прочесть эту тетрадь. Для облечения чтения этой тетради, на ее полях написаны примечания и комментарии. Если вдруг испортите одну из страничек, то просто создайте новую.
Администрирование UNIX системы сводится к нескольким основным моментам - это обеспечение нормального функционирования системы, работы пользователей и работы сетевых служб, а также установка новых программ и патчей. Обеспечение работы пользователей на сегодняшний день почти полностью автоматизировано специальными программами, например adduser.
Не рекомендуется менять эти настройки вручную через простой текстовый редактор, поскольку он может поменять не то, что нужно (например, маску доступа), а как раз то, что необходимо, вы забудете изменить.
Система предоставляет удобный интерфейс, который позволяет создать пользователя (в этом работа администратора сравнима с божественной), убить (а в этом с работой киллера), закрыть доступ к системе в течение определенного времени (это уже работа тюремного надзирателя), а также сделать массу неприятных для них штук. А потому пароль рута - это самая желаемая цель любого хакера. Следует очень внимательно оберегать этот секрет, не доверяя никому. (Автор и его друзья, в бытность юзерами, 4 раза по разным причинам угадывали пароли админов.)
Для обеспечения достаточной безопасности существует система теневых паролей. Они находятся в файле shadow, доступ к которому имеет только root. Каждый раз, когда кто-либо вводит логин и пароль, активируется механизм PAM (Pluggable Authentication Modules). Он разработан в связи с тем, что многим программам требуется авторизация пользователя, как например login, ftp, telnet и др. После получения пароля, модуль PAM, который имеет приоритет root'а, выполняет его шифрование, а затем сравнивает с зашифрованным значением из файла shadow. Это шифрование одностороннее, т.е. зная шифр нельзя узнать пароль, по крайней мере, в ближайшие 10000000 лет. Однако существует механизм позволяющий подобрать пароль при известном шифре (например, программой crack) с помощью простого перебора, если доступен файл shadow. Для защиты от таких взломов, shadow имеет владельца root, и маску доступа 600.
Другим механизмом защиты от пользователей реализованным в adduser, является система дисковых квот. Каждый юзер любит набить свой каталог всяким хламом, игрушками и порнухой. Если диск переполняется, то могут случатся самые неожиданные вещи, вроде полного отказа системы. А потому следует устанавливать квоты таким образом, чтобы в полностью заполненном состоянии оставалось не менее 20% свободного места. Имеется 2 вида квот - мягкие и жесткие. Нарушение жестких квот невозможно, тогда как при нарушении мягкой квоты пользователю выдается предупреждение о том, что через определенный промежуток времени следует освободить незаконно занимаемое дисковое пространство. По истечении этого срока пользователь просто не может зайти в систему, а админ получает сообщение о превышение мягкой квоты пользователем lamer.
Админ должен защищаться и сам. Существует несколько простых методов безопасности, которые должен выполнять любой root. Во-первых, никогда не следует заходить в систему под логином root. Для того, чтобы нормально работать как root, существует простая программка su (SuperUser). Если в shell ввести su, а затем пароль root'а, то можно получить все необходимые возможности. Никогда не следует отходить от открытого компьютера, не забывайте про logout. Пользоваться su следует очень осторожно, только по необходимости, затем немедленно logout. Пароль админа должен быть уникальный (шедевры вроде kozlik4 оставьте при себе), и нигде более не употребляться и не записываться.
Не менее серьезную дыру в безопасности представляют собой альтернативные загрузочные устройства, как-то флоппик и привод CD-ROM. Для простой работы они обычно не нужны, а потому их очень полезно отключить. Не следует в этом деле доверяться паролю на биосе, поскольку большинство материнских плат, помимо паролей для administrator и user, имеет еще и пароль для manufacturer (который, понятно, не меняется). Пускай юзеры пользуются новейшим достижением компьютерной мысли, более известным как локальная сеть.
Я малость отвлекся на больную тему всех админов, но продолжу. В директории /etc находится большое количество разнообразных файлов, а не только shadow. Есть там и развлекательные вещи. К таким несерьезным (но очень интересным) настройкам относятся issue и motd. В issue приглашение, которое выводится перед login. В серьезных системах это обычно ее описание, или, проще говоря, самореклама местного админа, для остальных - сообщение вроде "Заходи тихо, проси мало, уходи быстро". Файл motd содержит сообщения, которые в произвольном порядке получает пользователь сразу после входа в систему. В Windows есть аналогичное Tip of day, или "Сообщение дня", как правило, глупое и скучное. А в файл motd можно сунуть все что угодно, а не только приторную радость операционной системы от вашего присутствия, например полторы сотни коротких анекдотов или законы Мерфи. Мне даже известен один слабо одомашненный компьютер, который виртуозно ругался матом. Если вы только начинаете знакомиться с системой, то сначала следует "поменять мебель", т.е. motd или issue.
В конце предыдущего раздела я обещал подробно рассказать о конфигурации загрузчика lilo. Он управляется конфигурационным файлом lilo.conf. Поскольку lilo умеет загружать не только Linux, но и другие операционные системы вроде Windows, DOS, OS/2 и т.д., то его конфигурация должна учитывать и их особенности. Файл lilo.conf имеет заголовок, который описывает общую работу загрузчика и секции по каждой операционной системе.
#Файл lilo.conf
#Заголовок
#
#Положение загрузчика, в данном случае в начале диска
boot=/dev/hda1
#Положение корневой файловой системы (не путать с администратором)
root=/dev/hda2
#map-файл, создается автоматически
map=/boot/map
#Графический режим загрузки
vga=normal
#Задержка для выбора
delay=30
#Секции
#Linux
image=/boot/bzImage-2.4.4
label=linux-2.4.4
#Не забудьте указать следующую строку
read-only
#Команда, подаваемая ядру Linux
append="ether=10,300,eth0"
#Windows, содержит указатель на загрузчик и таблицу разделов
other=/dev/hda3
table=/dev/hda
label=win
#Old Linux kernel
image=/boot/oldkernel
label=oldkernel
read-only
append="ether=10,300,eth0"
После того, как вы внесли какие-нибудь изменения в lilo.conf, следует их активизировать, запустив загрузчик командой lilo или /sbin/lilo. В команде,подаваемой ядру, обычно содержится информация об активных сетевых интерфейсах. Обратите особое внимание, на то что в этой строке запрещены пробелы. Если в ней присутствует пробел, то ядро воспримет это как следующую строку!
Ядро приводит к запуску основного процесса системы init - это предок всех процессов, остальные процессы являются его потомками. Каждый процесс имеет свой номер и приоритет, номер init - 1 (один). Но сам по себе init конечно не знает, какие процессы ему следует запустить. Для этого служит группа файлов (понятно, в каталоге /etc). Основной файл этой группы называется inittab, и он определяет уровни выполнения. Каждая строка в этом файле имеет вид
id:runlevel:action:process
А все строки, начинающиеся с #, считаются комментариями. (Короткое замечание о комментариях. Они так обозначаются практически везде, это не C. Всегда читайте комментарии, в них часто написано гораздо больше полезного и интересного, чем в мануалах. Всегда когда меняете какой-либо параметр, сначала закомментируйте старое значение, а потом пишите новое.)
Теперь подробнее о inittab
- id - Параметр строки, каждая строка должна иметь уникальный id.
- runlevel - Уровни исполнения, обозначаются числом от 0 до 6.
- action - Действие выполнения, различаются множественные и однократные.
- process - Имя запускаемого процесса.
Иногда требуется, чтобы уже работающая система перечитала inittab без перезгрузки. Выполните команду kill -HUP 1. init также управляет выключением и перезагрузкой системы. Значения runlevel отвечают следующему
0 - Выключение системы.
1 - Однопользовательский режим.
2-4 - Различные режимы нормальной работы.
5 - Загрузка с графической средой.
6 - Перезагрузка.
Когда init запускается, он ищет в inittab строку, которая определяет уровень загрузки по умолчанию
id:5:initdefault:
В данном случае, это загрузка с графической оболочкой. Для работающей системы параметр initdefault меняется командой telinit. Менять остальные параметры сценариев загрузки требуется редко, и для этого надо знать язык программирования shell.
В средневековье была наука под названием "демонология". Предметом ее изучения была связь демонов с человеком, поскольку тогда считалось, что человек не может познать связь демонов между собой. Но работа с Linux вынуждает заниматься именно этим. Демоны существуют в каждом компьютере, на котором стоит операционная система семейства UNIX. (Windows демоны переименованы в сервисы, т.е. в слуг или рабов, однако называть всех демонов слугами неправильно, есть огромное количество диких демонов.) Демоны запускаются процессом init и живут до того, как их не прикончит Бог (root) или плановый Армагеддон (shutdown). Демоны управляют практически всем в системе, и внутренними ресурсами и сетевыми соединениями. Запускаясь, демон сообщает об этом, также он сообщает, удалось ли это ему. Кстати, это противоречит спецификациям Microsoft pc99 и pc2001, согласно которым, человек не должен знать, какие сервисы в данный момент находятся в системе. Вот и думай после этого, кто демон, а кто слуга. Я приведу сокращенный список домашних (т.е. несетевых) демонов, а потом опишу некоторые подробнее.
crond |
Большой Демон Времени. Выполняет периодические команды. |
anacrond |
Малый Демон Времени. |
atd |
Демон Часов, выполняет однократные команды, заданные на определенное время. |
gpm |
Демон Консольной Мыши. Вообще говоря, не нужен, поскольку мышь в X Windows работает без некого, а в "чистой" консоли мышь пользуются крайне редко. |
kerneld |
Демон Ядра. |
moduled |
Демон Модулей Ядра. |
syslogd |
Демон-Архивариус. Записывает все что происходит, необходим для работы. |
lpd |
Демон Печати, управляет принтерами. |
pcmciad |
Демон PCMCIA-устройств. |
dbflush |
Демон Синхронизации Файловой Системы. |
autofsd |
Демон Монтирования Файловых Систем. |
Для удобства восприятия и удовлетворения идеологии устройства в UNIX передаются файлами. Это так называемые специальные файлы, или файлы устройств. Каждый файл имеет описание, и если обычный файл помещает его в заголовке, то файл устройства прячет его в драйвере. Существует соглашение, что все используемые файлы устройств находятся в каталоге /dev. Их там очень много, это произошло не потому, что у вашего компьютера так много устройств, а для того, чтобы пользователю не приходилось их добавлять самостоятельно. Непосредственно работать с файлами устройств приходится крайне редко, а если и приходится, то работа эта полностью автоматизирована. Полезно пожалуй знать что для этого существуют скрипты /dev/MAKEDEV и /dev/MAKEDEV.local. Однако довольно часто приходится обращаться к этим устройствам, а потому полезно знать как расшифровываются их названия. Я приведу несколько примеров по которым легко это понять
/dev/hda |
IDE Primary Master |
/dev/hdb |
IDE Primary Slave |
/dev/hdc |
IDE Secondary Master |
/dev/hda1 |
Первый раздел на hda |
/dev/cdrom |
обычно мягкий линк на обнаруженный CD-ROM |
/dev/fd0 |
первый дисковод |
/dev/ttyS0 |
COM1 |
/dev/ttyS1 |
COM2 |
/dev/ps2mouse |
обычно мышь PS/2 |
/dev/nv |
видеокарта nVIDIA |
/dev/nvidia1 |
видеокарта nVIDIA в понимании nVIDIA |
/dev/modem |
обычно мягкий линк на порт модема (не рекомендуется) |
и т.д. Список очень большой. Все устройства делятся на 2 типа - блочные и символьные. Чтение/запись на блочные устройства может проводиться блоками через буфер, в то время как символьные работают только напрямую. Пример блочного устройства - винчестер, дисковод. А символьные устройства это мышь, клавиатура и видеокарта. Ошибка, которую совершают большинство перешедших с Windows, это работа с блочным устройством напрямую. Заметьте, что это не ошибка для системы, такая работа тоже возможна, но результат может здорово отличаться от ожидаемого. Например, команда
cp /home/newbieroot/myfile /dev/hdb1
с привилегиями root'а запросто уничтожит файловую систему на первом разделе диска hdb (или диска d: в DOS), поскольку скопирует файл myfile в устройство /dev/hdb1 ПОСИМВОЛЬНО, начиная с первого сектора!
Дальше >>