главная пошаговое создание livecd что такое linux ISO образы
Операционная система с графическим интерфейсом
На главнуюКонтактыКарта сайта
Полезное


 

ДОБРО ПОЖАЛОВАТЬ


Техника создания собственного LiveCD

В Linux это, действительно, не просто возможно, но и действительно просто. Порядок действий примерно следующий: создать в разделе HDD систему "приемлемых" размеров. Исходный дистрибутив значения не имеет: лишь бы у вас было адекватное представление о его организации и способе конфигурации. Под "приемлемым" размером понимается объём, который в компрессированном виде ещё можно разместить на CD; исправить конфигурационные скрипты системы таким образом, чтобы они учитывали запуск с CD; написать собственные скрипты инициализации и автоконфигурации системы; создать initrd - стартовую файловую систему, единственное назначение которой - подготовка в памяти "целевой" файловой системы и запуск собственного скрипта инициализации; компрессировать систему в виде одного или нескольких файлов; используя замечательный пакет Питера Анвина isolinux, записать LiveCD.

Я понимаю, что для не знакомого с программированием всё вышесказанное звучит, как насмешка. Но, во-первых, действительно предполагается некоторый уровень подготовки, а, во-вторых, в вашем распоряжении десятки уже существующих LiveCD: как говорилось когда-то в одной телепередаче, "делай, как мы, делай лучше нас".

С учётом вышесказанного вы, наверное, согласитесь, что 7 Кбайт скриптов инициализации и 9 Кбайт скриптов автоконфигурации - не могут считаться слишком сложной задачей. Пожалуй, достижение упомянутого адекватного представления об организации и конфигурации системы - существенно сложнее. Особенно для приверженцев прекомпилированных дистрибутивов. А для подробного описания собственно создания LiveCD достаточно было бы одной статьи.

Автоконфигурация системы

Архитектура ядра Linux как бы предполагает возможность получения всей имеющейся информации об обнаруженных аппаратных ресурсах. Собственно, почему "как бы"? Именно так и было задумано. А стремительно набравшая популярность за последний год система devfs дополняет список возможностей, предоставляемых ядром. Так, все CD-приводы можно обнаружить одной командой:
$ find /dev/cdroms/ -name "cdrom?"

А на наличие usb-mouse укажет обнаружение слова "Mouse" в выводе команды:
$ cat /proc/bus/pci/devices

Для обнаружения PCI-устройств (практически для всех, кроме usb и psaux) используется приблизительно та же логика. Вывод команды
$ cat /proc/bus/pci/devices

предоставляет нам список всех обнаруженных PCI-устройств, а файл /lib/modules/2.4.21/modules.pcimap - список атрибутов всех доступных модулей. Знать нужно только то, что описание каждого устройства в /proc/bus/pci/devices содержит идентификаторы производителя (vendor id) и конкретного продукта (device id), а среди атрибутов каждого модуля имеется список аналогичных идентификаторов устройств, данным модулем поддерживаемых. Дальше - совсем просто: перебирая модули в каталогах /lib/modules/2.4.21/kernel/sound/pci и /lib/modules/2.4.21/kernel/drivers/net/, командой modprobe загружаем только те, в списке поддерживаемых устройств которых обнаружены vendor id и device id устройств, фигурирующих в /proc/bus/pci/devices.

Для звуковой карты успешность загрузки нужного модуля проверяется по наличию /proc/asound/card0 (ещё раз воспользовались помощью devfs), а для сетевой - по наличию слова "eth0" в файле /proc/net/dev. Осталось только выполнить конфигурирование той и другой.

Автоконфигурация X-Window

Что касается видеоподсистемы, то X-Window сама разберётся, какой драйвер (модуль) нужно загрузить. Кажется странным, что система, поддерживающая практически все современные видеокарты без каких-либо "драйверов от производителя" не может автоконфигурироваться. Однако, это так. Не удивительно, что о "русской" раскладке клавиатуры позаботиться нужно самому, а вот почему автоконфигурация Х-сервера не включает ни одного видеорежима - остаётся загадкой.

Вставить в XF86Config недостающую строку вида:
Modes "1024x768"

несложно, но есть и реальные трудности. Прежде всего, они связаны с тем, что Х-сервер почему-то полагает, что все мониторы выдают так называемый EDID - блок информации, позволяющий корректно определить допустимые видеорежимы. "Свежо предание...", но мониторов, не выдающих этот самый EDID пока что более, чем достаточно. Нет EDID - нет описания монитора - не стартует Х-сервер. Генерирует ли монитор EDID и "пропускает" ли его драйвер видеокарты, можно узнать, набрав в консольном режиме ddcprobe, и если необходимых данных нет, то придётся, опять же - самому, позаботиться о наличии в XF86Config параметров HorizSync и VertRefresh, благо предположить их значения (в том случае, если отсутствует документация на монитор) не сложно.

USB - история

Ещё одно устройство, использование которого может потребовать каких-то "ручных" операций - флэш модуль памяти, подключаемый, как usb-устройство. Само-то подключение проблем не вызывает, а вот "пресловутое" монтирование... Всё дело в том, что флэш модуль может быть отформатирован, как единое устройство (a la floppy) или предварительно разбит на разделы (a la HDD). В первом случае он будет "виден" в Linux, как /dev/sda, а во втором - как один или несколько разделов /dev/sdaN, где N - номер раздела. Всё новые "флэшки", которые мне приходилось видеть, были отформатированы, как единое устройство с файловой системой FAT, что, однако, не означает невозможности второго варианта. Так вот файл /etc/fstab, который определяет способ монтирования, написан, исходя из предположения, что "флэшка" отформатирована как дискета. Что, в свою очередь, означает, что флэш-модуль, разбитый на разделы fdisk'ом, монтировать придётся вручную или изменив файл /etc/fstab. Уж простите за такое неудобство: Window'98, вон, вообще для работы с флэш-модулем драйвер какой-то требует, а XP, кроме своих собственных файловых систем, никаких других "не понимает", а живут же...