Два компилятора одной и той же версии ядра: одна загружается, одна не может найти корневое устройство

У меня есть два компилятора той же версии ядра (4.0.5 + gentoo patch). Один ботинок, правильно, но не хватает нескольких флагов CONFIG ядра.

Добавление этих флагов и запуск make all && make install дает мне «неспособность найти корневое устройство / dev / sda4».

У меня есть болотный стандарт /etc/fstab :

 /dev/sda1 /boot ext2 noauto,noatime,discard 0 2 /dev/sda4 / ext4 noatime,discard 0 1 /dev/sda3 none swap sw 0 0 /dev/cdrom /mnt/cdrom auto noauto,ro 0 0 /dev/fd0 /mnt/floppy auto noauto 0 0 

Проверка прекрасного Googles предполагает, что это связано с некоторой конфигурацией в initramfs, которая … интересна (и трудно отлаживать, насколько я могу судить!).

Я использую Grub 1 со следующей конфигурацией:

 title Gentoo Linux 4.0.5 - no docker, has X. root (hd0,0) kernel /boot/vmlinuz-4.0.5-gentoo-x root=/dev/sda4 rootfstype=ext4 initrd /boot/initramfs-genkernel-x86_64-4.0.5-gentoo title Gentoo Linux 4.0.5 - latest build. root (hd0,0) kernel /boot/vmlinuz-4.0.5-gentoo root=/dev/sda4 rootfstype=ext4 initrd /boot/initramfs-genkernel-x86_64-4.0.5-gentoo 

Обратите внимание, что первая запись – это сборка загрузки, а вторая – сборка без загрузки.

Мое подозрение в том, что ядро ​​+ initramfs имеет требование бинарного сопоставления, а новая сборка изменяет бинарные местоположения, в результате чего прошивка может быть выгружена.

Если у кого-то есть ссылки на авторитетную документацию по взаимодействию с ядрами / initramfs / root или авторитетный ответ, который будет оценен.

Edit: потратив некоторое время на изучение этого, получается, что UUID=<uuid> тоже не помогает. Тем не менее, похоже, что при дисфункциональной загрузке в оболочку initramfs демонстрируется, что /dev/sda<1-4> не существует (это то, что я пытаюсь найти). Хммм.

One Solution collect form web for “Два компилятора одной и той же версии ядра: одна загружается, одна не может найти корневое устройство”

Кажется, вы используете одни и те же initramf для обоих ядер. Initramfs содержит модули ядра, которые могут потребоваться загрузить оттуда, и в зависимости от различий в конфигурации ядра это может быть или не быть проблемой.

Как правило, я считаю, что два ядра «совместимы», только если они были созданы в одном исходном дереве, а модули не были перекомпилированы во второй компиляции ядра. Таким образом, включение дополнительного модуля (который не приводит к перекомпиляции существующих модулей) приводит к «совместимому» ядру, тогда как изменение флага CONFIG, из-за которого происходит перекомпилирование существующих модулей, приводит к «несовместимому» ядру. Смешивание модулей между несовместимыми ядрами может быть проблемой. Поэтому вам необходимо сгенерировать новые initramfs для несовместимых изменений конфигурации ядра. Кроме того, наличие двух несовместимых ядер с одной и той же строкой версии, установленной на одном компьютере, может дать вам проблемы, поскольку /lib/modules/<version> будет единственным местом для модулей обоих ядер, но вы можете модули только одного из них есть … Вы можете добавить строку в корневой EXTRAVERSION= Makefile дерева ядра после EXTRAVERSION= чтобы сделать вашу версию версии ядра уникальной.

  • Повторное включение консоли после завершения работы ядра, если в Uboot установлен режим молчания?
  • Поиск исходного источника ядра
  • Как диагностировать проблемы с производительностью ЦП?
  • Как понять вывод modinfo?
  • check-config в ядре Linux 3.19.0, настроенном под Ubuntu 15.04 x86-64
  • В котором поток блокирует команды выдачи драйверов для блокировки устройства?
  • Как работать с закрытыми исходными модулями при настройке новой сборки ядра
  • Как выбрать тег последней версии не-неустойчивой / выпускной версии?
  • Как скачать полную патч-серию из лоскутного одеяла?
  • Могу ли я маскировать ядро ​​uevent?
  • Идентификатор пользователя в модуле ядра
  • Interesting Posts

    отправить json через rsyslog в elasticsearch

    Как прочитать таблицу разделов in-memory (kernel) / dev / sda?

    Источник «gsed: не может читать: нет такого файла или каталога»?

    Отображение супер ключей для управления без Xmodmap

    apt-get ошибка установки программного обеспечения на Parrot OS

    Возможно ли повлиять на поведение всех команд vim в обычном режиме?

    Сервер Debian не отображается в списке DHCP на маршрутизаторе

    linuxbrew не может найти команду `erl` (Erlang), когда я пытаюсь установить` Elixir` на openSUSE Tumbleweed

    Три монитора на двух видеокартах (NVIDIA и RADEON)

    Slackware, установка Flash и Chrome

    Экран переключения окон не работает с пользовательским ключом команды

    Уведомление Gnome 3 не отображается. Пока vlc запущен

    Как установить umask для системного пользователя?

    Прочитайте все в буфере трубы, не дожидаясь

    Почему Linux NFS-сервер реализован в ядре в отличие от пользовательского пространства?

    Linux и Unix - лучшая ОС в мире.