The OpenNET Project / Index page

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

Добавление драйвера в образ сетевой установки (PXE) CentOS 5.X
Бывают ситуации, когда самый простой способ поставить систему на машину - с
использование PXE сервера и FTP/HTTP/NFS.
В случае, если в загрузочном образе для PXE отсутствует необходимый драйвер для
сетевой карты или SCSI придется его
добавлять вручную, пересобирая рамдиск. 

В данном примере будем добавлять драйвер atl1 в образ Centos 5.3. 
Далее приведен краткий список шагов и команд.

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

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

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

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

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

   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).

3. Распаковываем рамдиск и добавляем туда модуль: 
   $ 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

4. Теперь надо добавить информацию о модуле в файлы 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 "

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

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

6. Правим конфигурацию pxelinux, подкладываем в папку с образами новый рамдиск и ставим систему. 
 
08.07.2009 , Автор: Victor Leschuk
Ключи: pxe, centos, redhat, linux, boot, ramdisk, initrd / Лицензия: CC-BY
Раздел:    Корень / Администратору / Система / Загрузка, однопользовательский режим

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




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

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