Додавання драйверу до образу RAM диску

Матеріал з Вікіпідручника
Перейти до навігації Перейти до пошуку

Процесс додавання драйверу 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 -F ../initrd.img-2.6.38-13-generic—no-absolute-filenames
  56887 blocks
  -i – “копія в”
  -d – дозволяє відтворити структуру каталога
  -H newc – визначає особливий формат, що використовується cpio архівом
  -F – посилання на файл, з яким ми хочемо працювати—no-absolute-filenames – примушує cpio розпаковувати вміст відносно того, де ми виконали команду
  • 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-2.6.38-13-generic /boot/
  • 7-й крок:

Створюємо нову конфігурацію. Для цього в папці grub.cfg треба знайти такий код:

   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
   }

Змінюємо назву конфігурації Ubuntu, с Linux 2.6.31-11-rt (режим восстановления), наприклад на myconfig і вказуємо шлях нового initrd замість старого.

Див.також[ред.]

Initrd