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

У меня есть два компилятора той же версии ядра (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> не существует (это то, что я пытаюсь найти). Хммм.

  • Переполнение FIFO FlexCan
  • Как определить, какой модуль повреждает ядро?
  • Поддержка SDcard в Linux для устройства чтения карт памяти ENE Flash UB6250 (найдено на Acer Aspire One 522)
  • Где установлен исходный код ядра RHEL7?
  • Почему ядро ​​не запускает init?
  • switch_root с systemd: «Слишком много уровней символических ссылок»
  • Запуск программы сборки в виде кольца 0
  • перезагрузка с одноразовыми параметрами ядра
  • One Solution collect form web for “Два компилятора одной и той же версии ядра: одна загружается, одна не может найти корневое устройство”

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

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

    Interesting Posts

    Перенос виртуальной машины Virtualbox в физическую систему с двойной загрузкой

    Изменить размер домашнего каталога XFS в LVM

    Стирание жесткого диска, переписывание только заголовков, это безопасно?

    Простаивание процессора велико, но процессы изо всех сил стараются не отставать, как если бы процессор находился под большой нагрузкой

    Конфигурация шлюза не работает

    Как можно переопределить bash Ctrl + C, чтобы быть более похожим на рыбу

    MAC не соответствует IP-адресу в таблице `arp`: как устранить неполадки?

    Поместите две команды после ||

    Как изменить приглашение в Linux?

    Восстановить скрипт os-prober в файле /etc/grub.d

    Линии фильтра, содержащие фиксированное число экземпляров шаблона

    Как отключить однопользовательский режим на удаленной машине?

    Как найти файл в Unix с помощью команды find?

    Непоследовательные результаты команды du

    Как определить, действительно ли я нахожусь в символической ссылке из командной строки?

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