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

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

  • Некоторые основные вопросы о безопасности ядра Linux
  • Является ли отключенная опция ядра эквивалентной, не загружая соответствующий модуль?
  • Поиск списка модулей, которые используются во время загрузки
  • Влияние UEFI & SecureBoot, насколько серьезным?
  • Что делает «make install» в Makefile, который поставляется с ядром?
  • Почему мой лимит на ЦП не проверяется через группы
  • Невозможно выполнить загрузку с помощью встроенного ядра
  • Ядерная паника? После увеличения объема бара
  • Как обновить ядро ​​со всеми зависимостями в Debian?
  • Переменные области планировщика Pthread?
  • Увеличить ограничение размера FIFO
  • Interesting Posts

    Linux не распознает окна при установке

    Возврат перенаправления и вывода строки и понимания

    Можно ли предоставить кеширование предпочтений файловой системе?

    Файл GRUB не читается правильно

    Добавление переменной в разные строки файла в bash

    Как создать OTP-коды в автономном режиме с помощью ключа безопасности в Debian?

    Использование памяти в Linux?

    У меня есть Debian на моем сервере. Должен ли я использовать версию программного обеспечения Centos или Ubuntu, которую мне нужно установить?

    openbox – Как переключить пользователя без выхода из системы?

    Установка дистрибутива Linux на PogoplugPro

    Зачем нам так много пакетов эмуляторов терминалов и каково их использование?

    Установка нового устройства воспроизведения звука по умолчанию для ALSA в .asoundrc

    Что такое IFS в контексте цикла?

    Команда запуска и остановки команды в терминале на клавиатуре (горячая клавиша) сокращает нажатие клавиши?

    Отображение комментариев использования в функциях, предназначенных для интерактивного использования

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