Назад | Перейти на главную страницу

Как создать программу установки Debian netinst с сетевым драйвером стороннего производителя?

Я хочу установить Debian на машину, но ядро ​​и модули в модуле squeeze netinst не поддерживают сетевой драйвер. Я могу создать модуль ядра, который работает, но:

  1. Как мне получить те же заголовки ядра, что и в установщике debian, чтобы я мог собрать совместимый модуль?
  2. Как мне сообщить установщику об этом модуле в автоматическом режиме?

В настоящее время я использую образ hd-media, поэтому у меня есть USB-накопитель с файловой системой FAT16 и образ установщика .iso. Итак, после сборки модуля довольно просто поместить его на этот диск, но как тогда мне заставить программу установки Debian загрузить его автоматически?

Это проще всего, если использовать метод установки hd-media что должно быть загружено из неизвестного места на FTP-серверах debian. Это дает вам установочный носитель, представляющий собой файловую систему FAT16, которую легче изменить, чем ISO.

Syslinux запускается из этой файловой системы FAT16 и распаковывает из нее initrd.gz, что позволяет вам запустить установщик Debian. На первых нескольких шагах процесса установки выполняется сканирование жестких дисков в поисках того, которое содержит соответствующий .iso, и после его обнаружения установка продолжается в обычном режиме.

Модули ядра могут быть построены на основе заголовков ядра в основном репозитории Squeeze.

Один из способов включения пользовательских драйверов - это изменить файл initrd.gz, который становится корневой файловой системой для установщика. Хотя это немного неудобно.

Более простой способ - поместить настраиваемый модуль ядра в файловую систему FAT16, а затем использовать предварительный посев чтобы установщик запускал сценарий на ранней стадии процесса установки, который копирует модуль ядра из файловой системы FAT16 (которая будет смонтирована в / hd-media) в корневую файловую систему (виртуальный диск, созданный из initrd.gz). Например, я использовал это в preseed.cfg:

d-i preseed/early_command string /hd-media/early_command

И создал сценарий early_command на установочном носителе:

#!/bin/sh
kernelmoddir="/lib/modules/2.6.32-5-amd64/updates"
mkdir "$kernelmoddir"
cp /hd-media/tg3.ko "${kernelmoddir}/tg3.ko"