Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Установка Grub на USB HDD  (Прочитано 3431 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн gena95

  • Автор темы
  • Участник
  • *
  • Сообщений: 193
    • Просмотр профиля
Установка Grub на USB HDD
« : 11 Февраля 2017, 00:14:44 »
Решил я сделать себе на съемном диске раздел с образам и загрузчиком, который с них загружается.
У меня dev/sdb1 - этот вышеописанный раздел, а dev/sdb2 - для файлов.

Как я делал:
sudo mount /dev/sdb1 /mnt/USB
sudo grub-install --root-directory=/mnt/USB/ /dev/sdb
sudo touch /mnt/USB/boot/grub/grub.cfg

И в самом конфиге прописываю:
menuentry "Ubuntu" {
loopback loop /iso/ubuntu-16.04.iso
root=(loop)
linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/iso /ubuntu-15.04-desktop.iso noeject noprompt splash root=(loop)
initrd (loop)/casper/initrd.lz
}

Скопировал в папку iso образ.

В меню отображается, начинается загрузка и анимация идет вечно. Нажатие стрелочки вниз показывает вот что:
unable to open '/dev/sdb'
mount: mounting /dev/sdb1 on /cdrom failed: Device or resource busy
/init: line 7: can't open /dev/sr0: No medium found
/init: line 7: can't open /dev/sr0: No medium found
stdin: Is a directory
stdin: Not typewriter

Вот эти 6 строчек повторяются все время и система не загружается (бутлуп).
Не подскажете, что делать?
« Последнее редактирование: 11 Февраля 2017, 00:23:29 от gena95 »

Оффлайн Heider

  • Старожил
  • *
  • Сообщений: 1269
    • Просмотр профиля
Re: Установка Grub на USB HDD
« Ответ #1 : 11 Февраля 2017, 02:14:13 »
iso-scan/filename=/iso /ubuntu-15.04-desktop.iso
Зачем тут пробел? Должно быть так:
linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/iso/ubuntu-15.04-desktop.iso noeject noprompt splash root=(loop)

Оффлайн gena95

  • Автор темы
  • Участник
  • *
  • Сообщений: 193
    • Просмотр профиля
Re: Установка Grub на USB HDD
« Ответ #2 : 11 Февраля 2017, 02:41:57 »
Heider, Спасибо!

Оффлайн andytux

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 6902
    • Просмотр профиля
Re: Установка Grub на USB HDD
« Ответ #3 : 11 Февраля 2017, 07:25:35 »
Для загрузки из исо-образа использую такую ссылку
(Нажмите, чтобы показать/скрыть)
Некоторые пояснения.
Образы кладу в каталог /opt. Загрузчик ищет образ на всех устройствах. Где найдет - оттуда запустит.
Если в образе есть файл /boot/grub/loopback.cfg, то будет показано меню из этого файла. Если такого файла нет (например ubuntu 10.04), то будет запущена система с параметрами из переменной key.

Оффлайн gena95

  • Автор темы
  • Участник
  • *
  • Сообщений: 193
    • Просмотр профиля
Re: Установка Grub на USB HDD
« Ответ #4 : 11 Февраля 2017, 11:44:54 »
andytux, ух ты, очень интересное решение! Спасибо!
А как, допустим, загрузить портативную Windows 10, Вы не подскажете? А то у меня почему-то при запуске выдает ошибку ввода\вывода в BCD. Пытаюсь запустить ее вот так:
menuentry "Windows 10" {
insmod ntfs
insmod ntldr
loopback loop /Systems/Windows10PE.iso
root=(loop)
ntldr (loop)/Boot/bootmgr
}

UPD: Вот если распаковать образ в корень, то работает. Почему так?

Пользователь добавил сообщение 11 Февраля 2017, 17:10:16:
Ага, кажется понял, для bootmgr можно указать любой путь, но сам загрузчик (bootmgr) уже пытается найти папку Boot в корне диск и загрузится оттуда. Можно ли как-то указать ему, что корень находится в другой папке? Например sdb1/windows?
« Последнее редактирование: 11 Февраля 2017, 17:10:58 от gena95 »

Оффлайн andytux

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 6902
    • Просмотр профиля
Re: Установка Grub на USB HDD
« Ответ #5 : 12 Февраля 2017, 06:55:29 »
Grub2 может запустить не всякий исо-образ. В этом плане у grub4dos больше возможностей.
Цитировать
...загрузчик (bootmgr) уже пытается найти папку Boot в корне диск и загрузится оттуда. Можно ли как-то указать ему, что корень находится в другой папке?
Без хака - нельзя.
Есть такой диск - supergrub. Может загрузить все, что только возможно запустить с помощью grub2. Там много конфигов, посмотрите. Я не очень дотошно его разглядывал, но загрузки Windows из образа там не видел.
Сам supergrub запускаю так
(Нажмите, чтобы показать/скрыть)
memdisk - программа из пакета syslinux.  Условие - memdisk и iso-образ должны находиться на одном разделе.
А какой размер образа Windows10PE.iso?
Если оперативной памяти больше, чем размер образа, можно попробовать загрузить так-же, как supergrub.

Оффлайн gena95

  • Автор темы
  • Участник
  • *
  • Сообщений: 193
    • Просмотр профиля
Re: Установка Grub на USB HDD
« Ответ #6 : 12 Февраля 2017, 13:33:10 »
andytux, Решил все-таки не заморачиваться, скопировал в корень bootmgr и в папку boot wim образ.
Но столкнулся с еще одной проблемой. На одном компьютере все образы и операционки запускаются.
А ну другом - нет) Выдает ошибки.
Вот сам grub.cfg
(Нажмите, чтобы показать/скрыть)
А ошибки вот какие для каждого из меню:
Загрузка с жесткого диска:
invalid EFI file path.Windows:
файл "/boot/grub/x86_64-efi/ntfs.mod не найден.
файл "/boot/grub/x86_64-efi/ntldr.mod не найден.
Arch:
неизвестная файловая система
unaligned pointer 0xbЭde2c80
А вот различные версии ubuntu грузятся без проблем.

Так же хочу сказать, что сам grub я ставил i386, почему оно пытается загрузить x86_64-efi?) Думаю, проблема где-то в этом.
Оба ноутбука на которых производились тесты имеют одинаковую разрядность (64 бита).
На обоих ноутбуках обычный Биос, в настройках которого вообще нет настроек связанных с Uefi. Если через quemu запускать - тоже все работает.
Как такое может быть? Магия прямо.
Помогите, пожалуйста, а то что-то вообще не могу нагуглить.
« Последнее редактирование: 12 Февраля 2017, 13:55:02 от gena95 »

Оффлайн andytux

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 6902
    • Просмотр профиля
Re: Установка Grub на USB HDD
« Ответ #7 : 13 Февраля 2017, 06:20:55 »
Ничего конкретного не скажу. Мелкие придирки, в основном по синтаксису.
Цитировать
search --no-floppy --fs-uuid --set=root 9EE1-5FF1
set root=${root}
Первая команда ищет раздел с UUID=9EE1-5FF1. Если находит, переменная root получает значение этого раздела.
Это действительно раздел на съемном диске (судя по UUID - fat)?
Вторая команда вроде как себе присваивает свое значение.  По-моему не нужна.
Цитировать
--class next{
Между next и { должен быть пробел. Так во всех линках.
Цитировать
set root="(hd1)"
Не уверен, правильный синтаксис или нет. У меня были проблемы с синтаксисом команды root, когда он изменился. Сейчас точно  не помню.
Цитировать
archisobasedir=Images/ArchLinux
Перед Images должен быть /.
Не знаю, как запускается arch. По виду линка не могу понять: загружается из образа или образ распакован в каталог. Проверьте параметры загрузки для этой системы.
Цитировать
файл "/boot/grub/x86_64-efi/ntfs.mod не найден.
файл "/boot/grub/x86_64-efi/ntldr.mod не найден
Получается, что груб ищет модули в x86_64-efi. Может попробовать в команде insmod прописать полный путь до модуля.

Оффлайн gena95

  • Автор темы
  • Участник
  • *
  • Сообщений: 193
    • Просмотр профиля
Re: Установка Grub на USB HDD
« Ответ #8 : 13 Февраля 2017, 23:53:35 »
Первая команда ищет раздел с UUID=9EE1-5FF1. Если находит, переменная root получает значение этого раздела.
Это действительно раздел на съемном диске (судя по UUID - fat)?
Да, все верно, это раздел на моем сьемном hdd. Это я вначале делал через программу multisystem. Но, получается, везде где я присваивал значение переменной рут - лишние, ведь он присваивается в самом начале?
Между next и { должен быть пробел. Так во всех линках.
archisobasedir=Images/ArchLinux
О, не знал, спасибо. Странно, что оно вообще запускается)
Не знаю, как запускается arch. По виду линка не могу понять: загружается из образа или образ распакован в каталог. Проверьте параметры загрузки для этой системы.
А вот она с каталога.
Получается, что груб ищет модули в x86_64-efi. Может попробовать в команде insmod прописать полный путь до модуля.
О, спасибо, попробую)

Пользователь добавил сообщение 14 Февраля 2017, 02:30:21:
Решил проблему! Удалил папку EFI и все заработало!
Дело в том, что эта папка, скорее всего, осталась со старой установки загрузчика через программу по созданию мультибутов. Я думал, что все вычистил, но про эту папку забыл. И ноут автоматически пытался загрузится, несмотря на то, что модулей для этого не было. А на том ноуте, где все работало и без этого биос, видимо, более старый и папку не подхватывал.
Интересно, можно как установить обе сборки Grub для полной совместимости с различным железом... Наверное, это уже не относится к теме) Большое спасибо!
« Последнее редактирование: 14 Февраля 2017, 03:23:41 от gena95 »

 

Страница сгенерирована за 0.052 секунд. Запросов: 23.