Мне нужно применить патч к ядру, и я приступил к сборке ядра. Сначала я получил исходные данные и зависимости для сборки с помощью
# apt-get source linux-image-`uname -r`
# apt-get build-dep linux-image-`uname -r`
. Заходя в исходный каталог, я применил свой патч, а затем взял текущую конфигурацию ядра и выполнил сборку с помощью
# cp -vi /boot/config-`uname -r` .config
# make-kpkg --initrd --append-to-version=-test kernel-image kernel-headers
. Наконец, я установил только что построенное ядро из DEB, созданных в ../
# dpkg -i linux-image-3.13.11.4-test_3.13.11.4-test-10.00.Custom_i386.deb
# dpkg -i linux-headers-3.13.11.4-test_3.13.11.4-test-10.00.Custom_i386.deb
. При перезагрузке я нашел свое ядро в меню Grub, но, пытаясь его загрузить, я закончил с
Gave up waiting for root device
...
ALERT! /dev/disk/by-uuid/[my-correct-disk-uuid-here] does not exist.
В появившемся приглашении BusyBox я попытался заглянуть в / dev /, и там нет дисководов, что указывает на то, что модуль ядра для моего контроллера дисков не был загружен (его нет в / proc / modules) , Как это может быть, хотя, когда я использовал ту же версию ядра, на которой я работаю, я набираю это - и с той же конфигурацией ? Сборка ядер - это не то, чем я занимаюсь ежедневно или для удовольствия, поэтому я был бы признателен за любую помощь в этом.
Редактировать: Я должен добавить, что я пытался использовать синтаксис / dev / sd ** для root=
в командной строке Grub, с тем же результатом. Так что это не значит, что поиск UUID завершается неудачно; контроллер диска даже не существует. В случае необходимости, это Thinkpad X32 с чипсетом Intel 855PM (PATA HDD).
Теперь, из-за ошибки UUID я чувствую, что необходимо проверить информацию в/etc/fstab, потому что это - то, откуда информация о файловой системе (UUID) смонтирована.
Первый, загрузитесь в более старое ядро или сессию живого диска.
Выполняют следующую команду для нахождения UUID для корневого раздела.
sudo blkid -o list
вывод должен быть подобен этому примеру:
/dev/sda1 ext4 home / bac7229a-e019-5679-931d-5e14f15ff4bc
/dev/sda2 ntfs c (not mounted) 40Ajghyr-65uB-EA5C-7y8y9t6g54j5
/dev/sda3 ext4 (not mounted) 640565a9-310b-5d6r-8d8v7-e887do893f80
/dev/sda5 ext4 (not mounted) e777547b-3a3a-7tgd-9a12-2769wsrbd92
/dev/sda6 swap <swap> d72b694e-4976-3333-hso5-7894e6s9d2
Теперь, используйте 'нано', 'vi', 'gedit', 'коврик для мыши' или независимо от того, что Ваш любимый текстовый редактор должен отредактировать или подтвердить перечисленный UUID для Вашего корневого раздела в/etc/fstab. Для этого примера я буду использовать нано:
sudo nano /etc/fstab
Теперь, согласно нашей информации, наша/etc/fstab информация должна выглядеть примерно так, предполагая использование незашифрованной, единственной установки раздела, смонтированной в "/":
# / was on /dev/sda1 during installation
UUID=bac7229a-e019-5679-931d-5e14f15ff4bc / ext4 errors=remount-ro 0 1
# swap was on /dev/sda6 during installation
UUID=d72b694e-4976-3333-hso5-7894e6s9d2 none swap sw 0 0
, Если информация в/etc/fstab была неправильной и Вы обновили эту информацию соответственно, все, что необходимо сделать, теперь перезагрузка , потому что/etc/fstab загружается личинка сообщения и непосредственно не связан с конфигурацией initrd.img.
(Система считает информацию в/etc/fstab и автоматически загрузит корректные разделы оттуда)
<час>, Если это не решает Вашу проблему или если информация в/etc/fstab точна, Вы, возможно, должны работать:
sudo update-initramfs -v -c -k all
можно хотеть заменить "всеми" с определенной версией ядра, если Вы не хотите обновлять все существующие изображения initrd (этот способ, которым можно обновить просто изображение, которое не загрузится). Посмотрите здесь для большего количества информации: https://stackoverflow.com/questions/9645073/how-to-make-an-initrd-img-in-ubuntu
, Если все подходит, не забывает работать:
sudo update-grub2
перед перезагрузкой.
отправьте любые ошибки.