LINUX.ORG.RU

GRUB2 умеет передать загрузку другому загрузчику?

 , , ,


0

1

Я думал, что для этого нужен chainloader, но я, похоже, не умею им пользоваться.
На диске без таблицы разделов установлен extlinux. Нужно его запустить.
Можно ли также сделать, если это не реальный диск, а его RAW-образ? Как тогда указывать параметр root у ядра?
GRUB 1.99 это ведь GRUB2? Или у меня стоит GRUB1?

★★★★★

GRUB 1.99 это ведь GRUB2?

да.

Посмотри вот это, может поможет чем. Несколько опций по работе с образами:

menuentry "Lucid ISO" {
loopback loop (hd0,1)/boot/iso/ubuntu-10.04-desktop-i386.iso
linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/iso/ubuntu-10.04-desktop-i386.iso noprompt noeject
initrd (loop)/casper/initrd.lz
}
menuentry "Karmic 64-bit ISO" {
loopback loop (hd0,1)/boot/iso/ubuntu-9.10-desktop-amd64.iso
linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/iso/ubuntu-9.10-desktop-amd64.iso noprompt quiet splash
initrd (loop)/casper/initrd.lz
}
menuentry "Gparted Live ISO" {
loopback loop (hd0,1)/boot/iso/gparted-live-0.6.1-2.iso
linux (loop)/live/vmlinuz boot=live union=aufs noswap noprompt ip=frommedia findiso=/boot/iso/gparted-live-0.6.1-2.iso toram=filesystem.squashfs
initrd (loop)/live/initrd.img
}
menuentry "SystemRescue CD ISO" {
loopback loop (hd0,1)/boot/iso/systemrescuecd-x86-1.5.8.iso
linux (loop)/isolinux/rescue64 setkmap=us isoloop=/systemrescuecd-x86-1.5.8.iso
initrd (loop)/isolinux/initram.igz
}
menuentry "Parted Magic ISO" {
loopback loop (hd0,1)/boot/iso/pmagic-5.2.iso
linux (loop)/pmagic/bzImage iso_filename=/boot/iso/pmagic-5.2.iso boot=live load_ramdisk=1 prompt_ramdisk=0 noeject noprompt
initrd (loop)/pmagic/initramfs
}
BaBL ★★★★★
()
Ответ на: комментарий от BaBL

Тут везде загрузчиком выступает граб:

linux (loop)/...
initrd (loop)/...

А я хочу грузить своим загрузчиком.

CYB3R ★★★★★
() автор топика
Ответ на: комментарий от CYB3R

Ты последнее время задаёшь не слишком умные вопросы. Как по твоему grub2 загружает любой Windows? Ты думаешь он сам это делает? Нет, он вызывает загрузчик Windows. Если не знаешь как это делается тогда сходи в google и поищи примеры загрузки Windows через Grub2, а точнее вызова загрузчика Windows, ну или почитай документацию.

kostik87 ★★★★★
()
Ответ на: комментарий от kostik87

Я знаю. Именно поэтому я написал про chainloader.
Просто хочется работающий пример этого chainloader'а с RAW-образом.

CYB3R ★★★★★
() автор топика
Ответ на: комментарий от CYB3R

В таком случае установи grub4dos в образ floppy диска, опять же на в это образе положи конфиг для grub4dos, в котором пропиши вызов загрузчика из нужного тебе raw образа, ну либо пропиши в этом конфиге считывать конфигурационный файл из файловой системы, на которой установлен grub2, что бы иметь возможность лёгкого редактирования конфигурационного файла.

И вызывай этот образ floppy диска посредством memdisk из состава syslinux. Но учти образ грузится целиком в память, поэтому посредством memdisk загрузить raw образ из которого ты хочешь вызывать загрузчик не получится.

Если же тебе всё это не подходит, то обратись к разработчикам grub2 с просьбой портировать в код grub2 функционал из grub4dos или сам портируй оный функционал, раз не хочешь менять загрузчик.

Всё просто, удачи.

kostik87 ★★★★★
()
Последнее исправление: kostik87 (всего исправлений: 1)
Ответ на: комментарий от kostik87

Я не хочу писать код, я хочу использовать оттестированные пакеты из репозитория.

CYB3R ★★★★★
() автор топика

А никто не знает — как передать загрузку из Grub2 в Grub1? Имеется машина с несколькими HDD. На /dev/sda установлен linux и Grub2. На /dev/sdc[1-4] установлено несколько дистрибутивов, и Grub1 на /dev/sdc3 (раньше этот диск был основным и Grub1 загружал все разделы). Теперь хочу включить его в загрузочное меню Grub2, но конструкция вида:

menuentry 'Grub1 (on /dev/sdc3)' {
  set root='(hd2,1)'
  chainloader +1
}
не работает. Что самое интересное — из UEFI этот диск виден, и даёт загрузится, но это муторно слишком, тем более, что машина подопытная, и переключаться приходится довольно часто.

anonymous
()
Ответ на: комментарий от anonymous

Если sdc3, дак это hd2,3. Но вы уверены, что grub1 именно на /dev/sdc3, он ведь обычно на mbr ставится и хранит часть себя на нулевом цилиндре диска?

Если у вас grub1 на mbr диска /dev/sdc, то, вроде как-то так:

menuentry 'Grub1 (on /dev/sdc3)' {
    insmod part_msdos
    set root='(hd2)'
    drivemap -s hd0 hd2
    chainloader (hd2)+1
}

mky ★★★★★
()
Ответ на: комментарий от mky

Если sdc3, дак это hd2,3. Но вы уверены, что grub1 именно на /dev/sdc3, он ведь обычно на mbr ставится и хранит часть себя на нулевом цилиндре диска?

После переезда на другую матплату я уже ни в чём не уверен. Посмотрел gparted и fdisk — теперь какого-то рожна получается что он стал sdc4, и загрузочным, хотя по нумерации цилиндров он должен быть sdc2. А когда он был основным диском, то этот раздел именовался sda3, на нём установлена основная система, и из неё был установлен grub1.

Если у вас grub1 на mbr диска /dev/sdc, то, вроде как-то так:

К сожалению вашим рецептом воспользоваться не удалось, т.к. в моём дистрибутиве SuSE x86_64 модуль drivemap есть только для архитектуры i386. Не пойму, что теперь делать.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.