CFA LogoCFA Logo Computer
Новости Статьи Магазин Драйвера Контакты
Новости
RSS канал новостей
В конце марта компания ASRock анонсировала фирменную линейку графических ускорителей Phantom Gaming. ...
Компания Huawei продолжает заниматься расширением фирменной линейки смартфонов Y Series. Очередное ...
Компания Antec в своем очередном пресс-релизе анонсировала поставки фирменной серии блоков питания ...
Компания Thermalright отчиталась о готовности нового высокопроизводительного процессорного кулера ...
Компания Biostar сообщает в официальном пресс-релизе о готовности флагманской материнской платы ...
Самое интересное
Программаторы 25 SPI FLASH Адаптеры Optibay HDD Caddy Драйвера nVidia GeForce Драйвера AMD Radeon HD Игры на DVD Сравнение видеокарт Сравнение процессоров

АРХИВ СТАТЕЙ ЖУРНАЛА «МОЙ КОМПЬЮТЕР» ЗА 2003 ГОД

Что нам стоит *NIX построить?

Александр ЖАБОТИНСКИЙ alex-zh-03@mail.ru

Продолжение, начало см. в МК № 38 (261).
Есть у Linux один серьезный недостаток, из-за которого она не может полностью занять рынок домашних систем — слишком большой потенциал клонирования. Посмотрите, что на сегодняшний день можно увидеть на рынке — SuSe, RedHat, Mandrake, Debian. И это самые известные, самые распространенные, те, для которых должно быть море софта. Да, софта море — в архивах с исходными текстами и rpm-пакетах. Из исходников неопытному юзеру установить программу будет непросто, а rpm, например, от RedHat к Mandrake может не подойти. У Debian вообще свой формат пакетов. Вот если был бы один супер-дистрибутивчик… Но его нет и, думаю, долго не будет. Лучше мы закомпилим сейчас еще один клон :-). Итак, читайте продолжение статьи о построении системы Linux: «*NIXострой: добавь клон в семейство систем Linux».

Архитектура систем

Так как проект LFS создан затем, чтобы прояснить принцип работы системы Linux, прежде, чем мы приступим к завершающей стадии построения системы, позвольте обратить ваше внимание на архитектуру системы Linux и на ее отличия от Windows. Давайте вспомним историю систем Microsoft.

А начнем мы с этапа продвижения ею ОС MS-DOS 3.0. Эта операционная система была консольной, т.е. все команды вводились с помощью командной строки. Пользователь этой системы видел строку приглашения, где должен был ввести команду для выполнения какой-либо операции. Каждая последующая версия этой системы, вплоть до 6.22, отличалась в основном комплектацией программ и улучшениями управления при работе с базовой и виртуальной памятью. Графического интерфейса и многозадачности у этой системы не было (впервые графический интерфейс — Graphics User Interface, GUI — появился у системы MacOS, разработанной Apple в 1983). ОС Microsoft Windows 1.0 увидела свет в 1985 году. Это была своего рода надстройка над MS-DOS. Она постепенно наращивала свою функциональность, вплоть до Windows 3.11, но DOS оставалась неотъемлемой частью системы. Когда появилась Windows 95, а особенно ее последующая версия OSR2, DOS отошел на задний план, 95 могла обходиться и без него. Да, он был в системе, но только как среда для выполнения «старых» программ. Графическая оболочка стала неотъемлемой частью новых ОС от Microsoft.

В то же время UNIX и его клоны были и остаются по сей день консольными. У них есть GUI, причем не один, но в отличие от Windows, они могут обходиться и без него. Так же, как и Windows, *NIX многозадачны.

Основой ОС Linux является ядро системы (kernel). Что же это такое? Все мы знаем, что когда система работает, каждую секунду выполняются определенные задачи. Причем этих задач немало. Ядро, по сути, «планирует» их работу, создавая процессы, выделяя под каждый определенную долю времени работы процессора и назначая приоритетность. А чем же тогда отличаются программы от этих процессов? Да в принципе ничем, вот только они выполняются не постоянно, а только по желанию пользователя. При запуске пользовательского приложения мы создаем задачу, а ядро выделяет под выполнение этой задачи часть ресурсов процессора и определенные устройства компьютера. Если процессор перегружен системными процессами, приложение пользователя будет работать медленно. В ядро Linux также входят драйвера различных устройств и файловых систем. Если ядро обходится без включения определенного драйвера, то устройство (файловая система), зависящие от этого драйвера, работать не будут.

Следующей по важности элемент в системе —интерпретатор команд или оболочка (shell). Если ядро мы отнесем на уровень система-аппаратная часть (см. Рис. 1), то оболочка попадет на уровень пользователь-система. С помощью оболочки пользователь общается с операционной системой, т.е. когда он набирает в командной строке команду pwd, то интерпретатор переводит ее в формат, понятный системе, а та его обрабатывает и выдает результат на экран. Как и графических интерфейсов (оболочек), оболочек для UNIX тоже немало. Из них наиболее известны C shell (csh), Korn shell (ksh), Bourne shell (sh) и расширенная sh —Bourne Again shell (bash). Синтаксис этих оболочек похож, но все же они существенно отличаются. В системах BSD чаще всего используется csh, в Linux — bash (В прошлой статье мы устанавливали bash-2.05b). Ничто не мешает установить в систему несколько оболочек.

Рис. 1.

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

И наконец, графическая оболочка, о которой я говорил выше. В *NIX-системах она является надстройкой над ядром. Как и консольная оболочка, графическая несет в себе тот же принцип, вот только пользователь общается с «окошками», а не с командной строкой. На сегодня самые распространенные —KDE, Gnome, CDE, OpenWindows, HP-VUE. Есть и другие, многие из них бесплатны, однако есть и коммерческие. Программы, предназначенные для графических оболочек, в консоли работать не будут. Правда, можно встретить консольные программы, для которых написан GUI-вариант (например, mplayer). Такие GUI-варианты часто называются фронт-эндами к консольным приложениям.

Теперь обратимся к Windows (Рис. 2). Если Linux представляет собой конструктор, то Windows — это, то, что особо не разберешь. Тут ядро тесно связано с оболочкой (файл explorer.exe), которая в свою очередь связана с набором файлов и библиотек, формирующих графический интерфейс системы. Неотъемлемой частью Windows являются системные приложения. Сюда же системный реестр, файлы конфигураций. Если же посмотреть на архитектуру ОС с точки файловой системы, то Linux по умолчанию использует 3 раздела диска: системный, файл подкачки (swap), файлы пользователя (обычно /usr). В Windows все находится на одном разделе. Если полетит система, то получить доступ к пользовательским файлам будет непросто, переустановка же может убить ценную информацию вообще. А чтобы полетела система, достаточно удалить какую-нибудь «ненужную» библиотеку или заменить ее более свежей версией из состава другой операционной системы семейства Windows. Файлы пользователя тоже несколько отличаются. В Виндах это в основном документы, а в Линуксе также и программы. Если файлы пользователя Windows можно перенести на другой раздел, то устанавливать программы не в Program Files не стоит — не факт, что они заработают после переустановки системы. Впрочем, в файловой системе Linux тоже есть свои недостатки — тот же файл подкачки. Если я захочу увеличить его размер, мне что, переразбивать винчестер? Из этого следует вывод — универсальных ОС не бывает.

Рис. 2.

Вход в chroot

Но вернемся к нашей системе. Прошлый сеанс мы завершили установкой bash. Полагаю, остальные программы вы тоже установили. Давайте разберемся, что мы такого сделали. Мы установили состав программ, описанный в главе II книги Linux From Scratch. Для окончательной доводки системы надо зайти в ее среду разработки, вот только сделать это можно, только находясь под правами root. Откройте терминал и наберите:

Что мы видим? Обычное терминальное приглашение, только с использованием программ, установленных в $LFS/static. Руководствуясь книгой, создайте структуру директорий LFS. Следующий этап — монтирование proc (mount proc /proc –t proc). Поясняю, что это такое. Файловая система (ФС) proc — область памяти, куда ядро монтирует файлы и каталоги, необходимые для выполнения процессов. В Linux proc также содержит последнюю информацию о работе системы. В принципе, proc можно и не монтировать, но предположим, системе нужно получить информацию из mtab, в котором содержится информация о текущем состоянии ФС. Если создать ссылку /etc/mtab на /proc/mount, то при запросе в mtab мы получим последнюю информацию из proc, а не устаревшую из mtab. Описание создания символических ссылок bash и sh найдете в книге. Там же описан процесс создания файлов passwd и group. Кстати, в passwd содержатся учетные записи пользователей системы и сведения о том, какие оболочки они используют. Далее по книге установите устройства и программы для окончательной системы LFS. Читайте комментарии, соблюдая очередность инсталляции, опять же по книге. После установки последней программы и перед установкой LFS-Bootscripts следует сменить:

Ранее мы вводили похожую команду, разница в том, что мы сменим старые значения PATH, где была указана директория /static. Если все программы успешно установились, $LFS/static можно смело удалять. После установки LFS-Bootscripts идет настройка раскладки клавиатуры, создание log-файлов utmp, wtmp, btmp (ведутся для записи информации о логинах и последней загрузке системы) и установка пароля root.

Конфигурация загрузочных скриптов

Процесс загрузки в *NIX осуществляется последовательным запуском RC-сценариев (находятся в /etc/rc.d). Линки на эти RC-сценарии содержатся в каталоге /etc и носят имена rc*.d, где * — число, определяющее последовательность загрузки (от 0 до 6). В каждой папке /etc/rc.d/rc*.d находятся символьные ссылки. Как видите (Рис. 3), имя ссылки имеет вид $**name. $ принимает вид S или K. S соответствует запуску процесса, а K — его остановке. Символы ** принимают значение цифр в диапазоне от 00 до 99, которые соответствуют порядку загрузки скриптов. Если ссылки имеют одинаковый порядковый номер, первенство загрузки определяется по имени. Настройку скриптов setclock, loadkeys, sysklogd, localnet и network проведете, пользуясь LFS-BOOK. По завершению следует создать файлы /etc/hosts и /etc/fstab (последний отвечает за автоматическое монтирование файловых систем). Чтобы сделать это корректно, воспользуйтесь книгой, посмотрите примеры в установленных Linux-дистрибутивах. В журнале «Мой Компьютер» не раз писали, как это сделать.

Рис. 3.

Установка ядра

Самым сложным моментом сборки системы будет конфигурация и сборка ядра. Его исходники, как я говорил раньше, можно не скачивать, их можно взять из установленного дистрибутива (обычно /usr/src/linux-*.*). Однако можно скачать и последнюю версию на ftp.kernel.org (лично я этого делать не советую). Комментарии по сборке описаны в Linux Kernel HOWTO Брайана Варда (Brian Ward) —http://www.mgul.ac.ru/~t-alex/Linux/Kernel-HOWTO/Kernel-HOWTO.htm. Конфигурация ядра осуществляется командами make config, make menuconfig (Рис. 4), make xconfig.

Рис. 4.

XConfig предназначена для графической оболочки. Config и menuconfig — консольные. Из консольных menuconfig — самый удобный, при неверном выборе он позволяет вернуться назад. Конфигурацию ядра можно сохранить в виде файла, аналогично можно загрузить уже существующие, «заводские» настройки (обычно такой файл называется .config). Вся процедура конфигурирования — это последовательность ответов на соответствующие пункты. Обычно вариантов ответа три: Y (да), N (нет), M (собрать в виде модуля). В виде модуля — значит, в виде отдельного файла, не прикрепляя к ядру. Не советую удалять те пункты, о предназначении которых вам ничего не известно. Также не следует убирать пункты, относящиеся к сетевым настройкам. Дело в том, что многие программы используют локальные сетевые соединения и «без сети» работать не будут. Будьте внимательны! Ядро содержит драйверы устройств компьютера (звуковая карта, видеокарта, дисководы и т.п.) — если вы не знаете, какое оборудование у вас установлено, соберите устройство в виде модуля. После конфигурации команда make dep проверит зависимости, make bzImage соберет ядро, make modules && make modules_install — соберет и установит модули. После компиляции необходимо скопировать файлы ядра (bzImage и System.map) в каталог /boot, при этом bzImage можно назвать как угодно, например, linux-2.4mylfs (так модно). Далее выходим из сеанса chroot в базовую систему —logout. Теперь копируем файл ядра из $LFS/boot в каталог /boot (cp $LFS/boot/linux-2.4mylfs /boot) и добавляем новый пункт в меню lilo. Чтобы добавить систему в загрузчик, нужно отредактировать /etc/lilo.conf. Открываем его и в конце дописываем:

После завершения редактирования обновляем загрузчик, пишем lilo –v (учтите, данная команда перепишет загрузочный сектор, даже если там установлен NTLoader), демонтируем файловые системы: umount $LFS/{proc,usr,home} && umount $LFS. После перезагрузки (shutdown –r now) наслаждаемся своим детищем. Если система не загружается, проследите, на каком этапе происходит сбой: было ли меню в загрузке, загрузилось ли ядро (если загрузилось, то на каком этапе произошла остановка), проверьте Bootscripts, fstab, passwd и, наконец, установлена ли bash.

Если все пройдет нормально и система загрузится, качайте дополнительный софт (например, удобный файловый менеджер Midnight Commander http://www.ibiblio.org/pub/Linux/utils/file/managers/mc/mc-4.6.0.tar.gz) и устанавливайте на вашу собственную систему. Герард Бикманс (автор LFS-Book) советует зайти на http://hints.linuxfromscratch.org/hints.shtml, где описаны всевозможные способы улучшения системы. Если вы не хотите случайно потерять то, что накомпилено непосильным трудом :-), можно забэкапить раздел с LFS программой типа PARAGON Drive Backup (http://www.paragon.ru/rus/n_db.htm).

Что дальше?

Ищите применение вашей системы. Благодаря ее малому размеру (который можно сделать еще меньше), установив Apache, можно сделать сервер, не забивая винт ненужным софтом. Только запомните, что ваша система пока никак не защищена. Посетите http://www.mgul.ac.ru/~t-alex/Linux/linux_home.htm, тут вы найдете немало полезной информации относящейся к ОС Linux. Просмотрите документацию по разработке программ для нее. Пробуйте, расширяйте, совершенствуйте.

До новых встреч!

Рекомендуем ещё прочитать:






Данную страницу никто не комментировал. Вы можете стать первым.

Ваше имя:
Ваша почта:

RSS
Комментарий:
Введите символы или вычислите пример: *
captcha
Обновить





Хостинг на серверах в Украине, США и Германии. © sector.biz.ua 2006-2015 design by Vadim Popov