Как я должен настроить личинку для начальной загрузки ядра 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](http://en.wikipedia.org/wiki/Windows_Vista_startup_process)):

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

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

 

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

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

 

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

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

 

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

```
set root='(hd0,msdos5)'

```