Образ сетевой установки PXE

В варианте, если в загрузочном образе для PXE отсутствует необходимый драйвер для сетевой карты или SCSI необходимо его добавлять вручную, перепаковав загрузочный образ. В данном примере описано добавление драйвера atl1 (Atheros) в образ Centos 5.3. Дальше приведен краткий список шагов и команд.

Определение нужного устройства

Загружаемся с PXE и видим, что не обнаружилась сетевая карта.

Берем образ (Образ — визуальный образ, зрительный образ, изображение) любой Linux системы, поместимся с него и смотрим вывод lspci.
В нашем случае сетевой карточкой оказалось механизм 1969:1048 — сетевая карточка Atheros.

Читайте также:  Какой Linux выбрать для слабых ноутбуков?

Драйвер для этого устройства — atl1e.

Собираем часть под то ядро

Собираем на какой-либо машине модуль под то ядро, которое присутствует в образе.

Разузнать версию, не загружаясь, можно например так:

dd if=vmlinuz bs=512 count=1|xxd

В моем случае это 2.6.18-128.el5 x86_64. На монтировочной машине пакет gcc должен быть той же версии, которой собиралось ядро (здесь это gcc-4.1). Берется модуль примерно так:

# cd /usr/src/kernels/2.6.18-128.el5-x86_64/
# make modules M=/usr/src/atl1-1.2.40.2-1.nodist.rf/
...
LD [M] /usr/src/atl1-1.2.40.2-1.nodist.rf/atl1.ko

Тут /usr/src/atl1-1.2.40.2-1.nodist.rf — директория с исходными кодами модуля,
а /usr/src/kernels/2.6.18-128.el5-x86_64/ — с отправными кодами ядра (необходимо
поставить соответствующий пакет kernel-devel).

Или можно закачать rpm-пакет, вынуть с него уже скомпилированный модуль.
Как распаковать rpm-пакет, можно почитать этую статью.

Читайте также:  Получить дату из unix-timestamp в Linux

Распаковываем рамдиск

Распаковываем рамдиск и добавляем туда модуль:

$ mkdir unpack
$ cd $_
$ gunzip < /var/lib/tftpboot/centos53/initrd.img | cpio -i --make-directories
$ cd modules
$ mkdir tmp
$ cd $_
$ gunzip < ../modules.cgz|cpio -i --make-directories
$ cd 2.6.18-128.el5/x86_64/
$ cp /path/to/atl1.ko .
$ cd ../../../
$ mv modules.cgz ~/modules.cgz.saved
$ find ./tmp/2.6.18-128.el5/ -print | cpio -o -Hnewc|gzip -c9 > modules.cgz
$ rm -rf ./tmp

Дополняем информацию о модуле в файлы

Теперь надо добавить информацию о модуле в файлы modules.alias и module-info:

$/sbin/modinfo /path/to/atl1.ko |grep alias
alias: pci:v00001969d00001048sv*sd*bc*sc*i*

$ echo $(/sbin/modinfo /path/to/atl1.ko |grep alias) atl1 >> modules.alias

Назначаем информацию о модуле в файл module-info, чтобы потом можно было
подгрузить драйвер из меню. Дополняем следующие строчки:

atl1
eth
"Atheros L1 Gigabit Ethernet Driver "

Запаковываем рамдиск

$ cd ..
$ find . -print | cpio -o -Hnewc|gzip -c9 > ../initrd_updated.img

Верховодим конфигурацию pxelinux

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

Читайте также:  10 причин выбрать Linux вместо Windows