Как я должен настроить личинку для начальной загрузки ядра Linux от жесткого диска USB?

У меня есть жесткий диск для ноутбука во внешнем корпусе, который я использую в качестве большого pendrive. Для добавленного скручивания я установил Linux на нем, таким образом, я могу загрузить любую машину со своим предпочтительным распределением (например, для восстановления данных или восстановления b0rked системы или просто использования одолженного ноутбука, не уничтожая предварительно установленный Windows).

Проблема состоит в том, что, в зависимости от аппаратной конфигурации, жесткий диск USB может быть видим под различными путями. Для конфигурации личинки я просто использую (hda0,0) поскольку это относительно устройства, личинка была запущена от. У меня есть записи UUID в /etc/fstab. Я также указываю rootwait в параметрах ядра так, чтобы это ожидало подсистемы USB для успокаивания прежде, чем попытаться смонтировать устройство.

Что я должен передать ядру как root=? В настоящее время, начальная загрузка от pendrive однажды, проверьте сообщения отладки для наблюдения что /dev/sdX устройство было присвоено Карте памяти ядром, затем перезагрузка и редактирует конфигурацию личинки. Я ничего не могу изменить на ПК помимо включения Boot from USB hard drive в BIOS и установке его к более высокому приоритету, чем внутренние жесткие диски.

Существуют различные initrd генерация сценариев, которые включают поддержку UUID в пути корневого устройства, к сожалению, хинду собственный компонент один (genkernel) не поддерживает rootwait и у меня не было удачи при попытке использовать других.

Процесс начальной загрузки идет как это (это весьма схоже в Windows):

  1. BIOS выбирает устройство загрузки и загружает то, что его MBR (который, оказывается, этап 1 личинки).
  2. Личинка загружается, это - конфигурация и файлы этапа 2 от устройства, которое это установило как root, использование (hd0) для устройства это было загружено из BIOS.
  3. Личинка загружает и запускает ядро (все еще та же нумерация, таким образом, я могу использовать (hd0,0) снова).
  4. Ядро инициализирует все встроенные устройства (rootwait это волшебно теперь).
  5. Ядро монтирует раздел, это было передано как root (это - параметр ядра, не копают параметр).
  6. init.d запускает процесс начальной загрузки пространства пользователя, включая монтирующиеся вещи от /etc/fstab.

Часть 5 является той, дающей мне проблемы.

18
19.01.2020, 04:45
3 ответа

Я думаю, что ответ должен быть должен использовать также root=LABEL=... или root=UUID=...

Но Вы указываете, что это не работает на Вас. Я предложил бы изучить, если существует некоторая проблема с действиями Вашего initrd.

6
27.01.2020, 19:46
  • 1
    у меня нет initrd, это - целая проблема. genkernel не поддерживает "rootwait" опцию, и другой не работают с хинду. –  skolima 06.10.2008, 16:29

Я мог ошибиться или возможно просто мог неправильно понять Вас, но не являюсь выбором устройства загрузки что-то, что было бы настроено от BIOS машины, которую Вы загружаете?

Я думал бы, что это будет вопрос выбора Карты памяти, которой установили бы GRUB как его загрузчик и затем выбор, какой дистрибутив Вы хотите загрузить из меню GRUB.

2
27.01.2020, 19:46

Можно использовать:

set root='(hd0,msdos5)'
2
27.01.2020, 19:46

Теги

Похожие вопросы