The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Модификация стандартного установщика debian - добавление нового модуля в ядро (debian install initrd boot)


<< Предыдущая ИНДЕКС Исправить src / Печать Следующая >>
Ключевые слова: debian, install, initrd, boot,  (найти похожие документы)
From: Scoch <skapetr@yandex.ru.> Newsgroups: email Date: Mon, 10 Jul 2008 14:31:37 +0000 (UTC) Subject: Модификация стандартного установщика debian - добавление нового модуля в ядро Задача: не все имеющееся оборудование поддерживается стандартным установщиком Debian - для некоторых новых устройств необходима компиляция и подключение доплнительных модулей ядра , исходные тексты которых находятся на сайте производителя оборудования. Необходимо включить модули неподдерживаемых устройств в сам установщик во избежании ручного ковыряния с ядром на стадии установки. 1. Получение и сборка исходных текстов модуля ядра В данном примере будет рассмотрено включение в установщик модуля igb , обеспечивающего работу новых серверных сетевых карт от Intel. Исходные тексты берем с Intel.com. На этапе сборки модуля возник ряд проблем связанных с необходимостью вновь собранного ядра а не заголовков. Сборку будем производить на виртуальной машине. Установщик Debian GNU/Linux 4.0 r3 "Etch" использует ядро 2.6.18-6-486-di , поэтому сборку необходимо производить на ядре 2.6.18-6-486 (ставится по умолчанию на виртуальную машину). Для сборки также будут нужны следующие пакеты со своими зависимостями linux-source-2.6.18 gcc make libc6-dev Собираем ядро с использованием make oldconfig Распаковываем исходники модуля, переходим в ./src , после сборки необходимый нам файл igb.ko переносим с виртуальной машины Результат - собранный модуль необходимой версии ядра и архитектуры 2. Создание пакета для установки модуля Инсталлятор Debian использует пакеты deb и udeb. Подготовим каталог для сборки из него пакета. Управляющие скрипты deb - пакетов располагаются в подкаталоге ./DEBIAN и должны иметь атрибут исполнения (+х). В нашем конкретном случае достаточно 2х управляющих скриптов control и postinstall control основной управляющий скрипт любого deb - пакета cat newpackage/DEBIAN/control Package: igb-additional-module-2.6.18-6-486-di - имя будущего пакета Version: 1.44etch3 - версия пакета Section: debian-installer - секция Priority: standard - важность Architecture: i386 - архитектура Depend: kernel-image (=2.6.18-6-486-di) - зависимости Provides: igb-kernel-module - доп инфо Maintainer: Petr Skachkov <skapetr@yandex.ru.> - доп инфо Description: Additional kernel module for new intel network adapters - доп инфо postinstall - как следует из назвнаия - действия после установки содержимого пакета cat newpackage/DEBIAN/postinstall #! /bin/sh /sbin/depmod -A Помимо каталога с управляющими скриптами пакет содержит сам устанавливаемый модуль с указанием полного пути от корневого каталога ./lib ./lib/modules ./lib/modules/2.6.18-6-486 ./lib/modules/2.6.18-6-486/kernel ./lib/modules/2.6.18-6-486/kernel/net ./lib/modules/2.6.18-6-486/kernel/net/igb ./lib/modules/2.6.18-6-486/kernel/net/igb/igb.ko После проделанных действий можно собрать пакет командой dpkg-deb -D -b newpackage /home/scoch/Desktop/ -D вывод отладочных сообщений -b пакет бинарный Результат работы данной команды - сборка пакета вида igb-additional-module-2.6.18-6-486-di_1.44etch3_i386.deb Так как установщик на первой стадии использует пакеты udeb - переимиенуем наш пакет - сменим расширение на udeb (если следовать Debian wiki - то пакеты .udeb это вид deb пакетов используемых только в установшике Debian, а расширение разработчики сменили из за "..несоответствия политике Debian";. Также отличием является отсутствие документации и некоторых других компонентов стандартного deb пакета) Результат: пакет вида igb-additional-module-2.6.18-6-486-di_1.44etch3_i386.udeb , готовый для добавления в стандартный установщик 3. Модификация инсталера - добавление пакета Адрес статьи взятой за основу http://wiki.debian.org/DebianInstaller/Modify/CD Подготавливаем рабочий каталог mkdir loopdir # каталог для монтирования iso-образа mount -o loop installer.iso loopdir # монтируем образ через loopback mkdir cd # рабочий каталог для нового образа rsync -a -H --exclude=TRANS.TBL loopdir/ cd #копирование смонтированного iso umount loopdir # отмонтируем исходный образ Копируем наш модуль по пути ./cd/pool/main/l/linux-kernel-di-i386-2.6/ по этому пути в установщике лежат пакеты со всеми используемыми при установке модулями ядра В рабочем каталоге создаем файл config следующего содердания cat ./cd/config Dir { ArchiveDir "/home/scoch/cd"; OverrideDir "indices"; CacheDir "indices"; }; TreeDefault { Directory "pool/"; }; BinDirectory "pool/main" { Packages "dists/etch/main/debian-installer/binary-i386/Packages"; BinOverride "override"; ExtraOverride "override.extra"; }; Default { Packages { Extensions ".udeb"; }; }; Данный конфигурационный файл будет необходим для обновления файлов репозитория пакетов, которые использует в работе установщик. Также нам будут необходимы подкаталоги indices и indices/override Обновим файлы репозитория командой apt-ftparchive generate config Результат данной команды - изменение в каталоге ./dists/etch/main/debian-installer/binary-i386/ файлов Packages и Packages.gz - теперь в них внесен наш пакет. Перед началом инсталляции установщик также проверяет контрольные суммы файлов, входящих в него, и если ему что то не нравится - прекращает свою работу и ругается. Поэтому перед сборкой нового установщика нам нужно внести новые контрольные суммы в файл md5sum.txt в корне рабочего каталога. Так как по умолчанию md5sum.txt имеет атрибуты 444 (только чтение) - то перед редактированием надо дать разрешение на запись chmod 777 md5sum.txt После этого получаем новые контрольные суммы для измененных и добавленных файлов и вносим их в md5sum.txt. Затем этого снова меняем атрибуты файла на 444 md5sum ./dists/etch/main/debian-installer/binary-i386/Packages md5sum ./dists/etch/main/debian-installer/binary-i386/Packages.gz md5sum ./cd/pool/main/l/linux-kernel-di-i386-2.6/igb-additional-module-2.6.18-6-486-di_1.44etch3_i386.udeb Результат: готовый рабочий каталог нового инсталлера 4. Создание iso - образа, проверка работы Загрузочный образ инсталлятора создаем используя mkisofs с кучей параметров. Пишем его чем-нибудь на болванку. mkisofs -o test.iso -r -J -no-emul-boot -boot-load-size 4 -boot-info-table \ -b isolinux/isolinux.bin -c isolinux/boot.cat ./cd Для проверки работы нового инсталлятора запускаем установку с полученного диска и смотрим через виртуальную консоль наличие нашего модуля. # ls /lib/modules/2.6.18-6-486/kernel/net/igb/ igb.ko # modprobe igb # lsmod | grep igb igb.ko

<< Предыдущая ИНДЕКС Исправить src / Печать Следующая >>

Обсуждение [ RSS ]
  • 1.1, pavlinux (ok), 18:46, 10/07/2008 [ответить]  
  • +/
    Из серии, "Как установить колёса, если вы уже завели двигатель".

     
     
  • 2.4, pavlinux (ok), 23:25, 10/07/2008 [^] [^^] [^^^] [ответить]  
  • +/
    О чём это я,... А! О том, что можно скомпильнуть только модуль, и грузить с флешки/флопа/DVD

     
     
  • 3.5, prapor (??), 23:54, 10/07/2008 [^] [^^] [^^^] [ответить]  
  • +/
    Угу. Особенно когда установка происходит через нечто типа HP BladeCenter.
     
  • 3.6, polkan (?), 02:59, 11/07/2008 [^] [^^] [^^^] [ответить]  
  • +/
    по моему смысл статьи много шире... таким образом можно ведь заточить ядро для работы в конторе или на специализированных АРМ, и уже спокойно посылать эникейщика сетапить по народу "чоб усе стояло как у молодого"
     

  • 1.2, Serega (??), 18:56, 10/07/2008 [ответить]  
  • +/
    отличная статья, спасибо!
     
  • 1.3, Аноним (3), 19:50, 10/07/2008 [ответить]  
  • +/
    Супер, спасибо за перевод.
     
  • 1.7, random73 (?), 11:37, 12/11/2008 [ответить]  
  • +/
    Люди при установке самой системы можно подгрузить модуль и зашить его в загрузку, (у меня так САС контроллер был зашит на раздел VAR,но к сожелению потерял инструкцию и не могу найти её) если у кого есть подобная поделитесь плз
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Спонсоры:
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2022 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру