Цепной загрузчик GRUB2: почему это не работает?

Цепной загрузчик GRUB2: почему это не работает?

Я пытаюсь создать мультизагрузочный USB-флеш-накопитель, используя GRUB2 для последовательной загрузки различных разделов на диске. Это не работает. Яненужен совет, как создать мультизагрузочную флешку; я знаю, что есть много способов сделать это. Ятолькоинтересно выяснить, почему этот конкретный метод не работает.

Немного предыстории: у меня есть два USB-накопителя, назовем их USB1 и USB2. В настоящее время я пытаюсь установить Debian Wheezy на один из них в мультизагрузочном режиме. Теперь, если я просто скопирую iso на USB1 (/dev/sdb):

dd conv=notrunc bs=4M if=/path/to/iso of=/dev/sdb

Это создает хороший загрузочный диск, с которого я могу установить Debian. Более того, если я установлю GRUB2 на USB2, я смогу успешно выполнить цепочку загрузки USB1 с него с помощью:

search --label --set=root "Debian 7.0.0 i386 1"
chainloader +1
boot

Теперь о моей проблеме: если вместо этого я создам второй раздел на USB2 и скопирую на него образ iso:

dd conv=notrunc bs=4M if=/path/to/iso of=/dev/sdc2

Chainloading, который не работает. Он не выдает никаких сообщений об ошибках, а просто выдает мне черный экран с мигающей черточкой (не отвечает). (Я пробовал это с обоими дисками, поэтому не думаю, что виновато неисправное оборудование).

Почему это не работает? В чем разница между последовательной загрузкой другого диска и последовательной загрузкой другого раздела на том же диске, если они содержат одни и те же данные?

решение1

Прежде всего, образ диска — это не то же самое, что образ раздела. Вы пытаетесь использовать свой образ (на вид образ диска) как оба, что неправильно. Не думайте, что все в порядке, если ddнет ошибок: он с радостью сделает все, что вы ему скажете, если только не произойдет какая-то реальная ошибка ввода-вывода.

Когда вы загружаете диск последовательно, GRUB будет искать главную загрузочную запись — это своего рода вещь, которая начинает содержимое диска и содержит загрузочный код. Однако структура раздела отличается — она даже не начинается с кода; у нее есть загрузочная запись, но в каком-то другом месте. GRUB может загружать ее тоже последовательно; хотя процедура иная. Когда вы помещаете образ диска в раздел, вы не создаете ничего легко используемого, и GRUB наверняка не ожидает там MBR. Вместо этого он запускает какой-то случайный машинный код, который никогда не полезен для вашего ПК.

Чтобы это заработало, вам придется скопировать содержимое раздела Debian на этот и установить на него GRUB. Если только не будет какой-то ошибки, все должно работать безупречно. Не забудьте пересоздать свой /dev/sdc2!

Связанный контент