У меня есть жесткий диск ноутбука во внешнем корпусе, который я использую как большой Pendrive. Для дополнительного поворота я установил Linux на нем, так что я могу загрузить любую машину с моим дистрибутивом по своему выбору (например, для восстановления данных или восстановления системы b0rked или просто с помощью заимствованного ноутбука без разрушения предустановленной Windows). Проблема заключается в том, что в зависимости от конфигурации оборудования жесткий диск USB может быть виден по разным путям. Для конфигурации grub я просто использую (hda0,0)ее относительно устройства, с которого был запущен grub. У меня есть записи UUID в /etc/fstab. Я также указываю rootwaitв параметрах ядра, чтобы она ожидала, пока подсистема USB не успокоится, прежде чем пытаться подключить устройство.
Что я должен передать ядру как root=? В настоящее время загружайтесь с pendrive один раз, проверьте сообщения отладки, чтобы увидеть, какое /dev/sdXустройство было назначено ядру на USB-накопителе, затем перезагрузите и отредактируйте конфигурацию grub. Я не могу ничего изменить на ПК, кроме включения Boot from USB hard driveв BIOS и установки более высокого приоритета, чем на внутренних жестких дисках.
Существуют различные сценарии создания initrd, которые включают поддержку UUID в пути к корневому устройству, к сожалению, родной Gentoo (genkernel) не поддерживает, rootwaitи мне не повезло, пытаясь использовать другие.
Процесс загрузки происходит следующим образом ( он очень похож в Windows ):
- BIOS выбирает загрузочное устройство и загружает его MBR (который является grub stage-1).
- Grub загружает свою конфигурацию и файлы стадии 2 с устройства, которое он установил
root, используя(hd0)для устройства, с которого он был загружен BIOS. - Grub загружает и запускает ядро (все та же нумерация, поэтому я могу использовать
(hd0,0)снова). - Ядро инициализирует все встроенные устройства (
rootwaitтеперь это волшебство). - Ядро монтирует раздел, которому он был передан
root(это параметр ядра, а не параметр grub). init.dзапускает процесс загрузки пользовательского пространства, включая монтирование/etc/fstab.
Часть 5 - это то, что доставляет мне проблемы.