Процесс додавання драйверу e1000 до образу RAM диску умовно можна поділити на 7 кроків:

1-й крок: Знаходимо, де знаходиться файл initrd і копіюємо його, наприклад в папку tmp, оскільки, граючись з оригіналом, можна отримати неприємні наслідки.

$ cp /boot/initrd.img-2.6.38-13-generic /tmp/ $ cd /tmp $ file initrd.img initrd.img: gzip compressed data, from Unix, last modified: Wed Feb 29 02:14:27 2012

2-й крок: Файл initrd заархівований за допомогою gunzip. Нам потрібно розархівувати його. Та перш, ніж це зробити, потрібно з файлу initrd.img створити копію з розширенням .gz : initrd.img.gz

$ mv initrd.img-2.6.38-13-generic initrd.img-2.6.38-13-generic.gz $ gzip -d initrd.img.gz

3-й крок: Наразі ми отримали бінарний файл, який нам знову необхідно розархівувати, в цей раз з допомогою cpio, та перед цим, створюємо папку, в яку ми розпакуємо файл з initrd.img:

$ mkdir /tmp/initrd $ cd /tmp/initrd $ cpio -i -d -H newc --no-absolute-filenames -F ../initrd.img-2.6.38-13-generic 56887 blocks

-i – режим розпаковування -d – дозволяє відтворити структуру каталога -H newc – визначає особливий формат, що використовується cpio архівом --no-absolute-filenames – примушує cpio розпаковувати вміст відносно того, де ми виконали команду -F – посилання на файл, з яким ми хочемо працювати

4-й крок: Копіюємо драйвер в папку /lib/modules/2.6.38-13-generic/, де зберігаються інші драйвери:

$ cp ~/e1000.ko /tmp/initrd/lib/modules/2.6.38-13-generic/

5-й крок: Архівуємо initrd в зворотньому порядку:

$ cd /tmp/initrd $ find . | cpio -o -H newc | gzip > /tmp/initrd.img

6-й крок: Копіюємо з заміною модернізований initrd.img в /boot/

$ cp /tmp/initrd.img /boot/

7-й крок: Створюємо нову конфігурацію. Для цього в у файлі grub.cfg (зазвичай знаходиться у /boot/grub або у /boot/grub2) треба знайти код, подібний до наступного:

menuentry 'Ubuntu, ядро Linux 2.6.31-11-rt' --class ubuntu—class gnu-linux—class gnu—class os { recordfail set gfxpayload=$linux_gfx_mode insmod part_gpt insmod ext2 set root='(/dev/sda,gpt2)' search—no-floppy—fs-uuid—set=root b2751497-490f-4068-a11c-3cac8dd5e613 echo 'Loading Linux 2.6.31-11-rt ...' linux /boot/vmlinuz-2.6.31-11-rt root=UUID=b2751497-490f-4068-a11c-3cac8dd5e613 ro single echo 'Loading initial ramdisk ...' initrd /boot/initrd.img-2.6.31-11-rt

У останньому рядку (initrd) слід вказати повний шлях до щойно створеного образу RAM-диску (initrd.img).

Увага: даний спосіб зміни файлу grub.cfg підходить лише для тестування, оскільки цей файл є згенерованим. Правильним місцем для додавання нових конфігурацій до GRUB2 є або файл 40_custom (з наступною генерацією grub.cfg), або custom.cfg (генерація не потрібна).

Див.також

Initrd