LINUX.ORG.RU

grub2 vs grub4dos | cureit

 ,


0

2

Доброго времени суток!

Понадобилось сделать мультизагрузочную флешку, в том числе с антивирусником. Начитавшись руководств про drub4dos, я решил сделать тоже самое родным линуксовым grub'ом. И тут обнаружилось, что в нём остутствует команда «map» и, следовательно, нельзя загрузить произвольный образ.

А целью этого процесса, собственно, была загрузка drweb cureit с iso-образа, т.к. отдавать многогиговую флешку под это 200мб недоразумение очень не хочется.

Подскажите, как можно выйти из ситуации.

----------
То, что cureit — на линуксе я знаю. Но в процессе работы он жаждет подключить /dev/sr0, а там ничего нет и подсунуть ему isoшку вместо привода я пока не смог.
----------

★★★★★

Подскажите, как можно выйти из ситуации.

Распакуйте ISO образ, положите нужные для загрузки файлы в отдельную директорию на флеш накопителе, напишите в конфиге grub по аналогии с конфигом загрузчика в iso образе cureit и текущем расположении файлов cureit конфигурацию для запуска cureit.

Либо можете попробовать вызывать ядро и initramfs с образа cureit, примерно как вот здесь:

menuentry "OpenSUSE-13.1-DVD-i586" {
        set iso=/distro/openSUSE-13.1-DVD-i586.iso
        set loader=/boot/i386/loader
        loopback loop ${iso}
        linux (loop)${loader}/linux initrd=${loader}/initrd install=hd:${iso}
        initrd (loop)${loader}/initrd
}

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

Либо можете попробовать вызывать ядро и initramfs с образа cureit, примерно как вот здесь:

Угу, примерно так и делаю. Проблема в том, что после загрузки ядра init системы пробует подмонтировать cdrom, в котором, естественно, ничего нет. Т.е. мне нужно обмануть не загрузчик, а init-скрипты. Хидеры скриптов убунтовские, я с ними не знаком и сходу прочитать не смог. Нужно заменить монтирование /dev/sr0 на монтирование /dev/sdb1 и /iso/drweb*.iso. Но как это сделать я не знаю.

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

Т.е. мне нужно обмануть не загрузчик, а init-скрипты. Хидеры скриптов убунтовские, я с ними не знаком и сходу прочитать не смог. Нужно заменить монтирование /dev/sr0 на монтирование /dev/sdb1 и /iso/drweb*.iso. Но как это сделать я не знаю.

В таком случае распаковывайте initramfs и смотрите содержимое сценария init (/sbin/init) и прочих сценариев, которые он вызывает, разбирайтесь есть ли там опция для указания iso образа или нет.

Но я бы вам всё же посоветовал распаковать iso образ и написать конфигурацию для основного загрузчика, это будет проще.

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

распаковать iso образ и написать конфигурацию для основного загрузчика, это будет проще.

А что, после распаковки init не будет пытаться подключить cdrom? будет ведь...

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

Вы текст моего сообщения весь прочитали или выборочно?

В таком случае распаковывайте initramfs и смотрите содержимое сценария init (/sbin/init) и прочих сценариев, которые он вызывает, разбирайтесь есть ли там опция для указания iso образа или нет.

Но я бы вам всё же посоветовал распаковать iso образ и написать конфигурацию для основного загрузчика, это будет проще.

Ну а по поводу этого, смотрите так же код сценария init на предмет того где он «ищет» файлы необходимые для дальнейшей загрузке, скорее всего что-то есть, ну или вы можете внести правки в init сценарий.

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

Вы текст моего сообщения весь прочитали или выборочно?

А Вы?

Нужно заменить монтирование /dev/sr0 на монтирование /dev/sdb1 и /iso/drweb*.iso. Но как это сделать я не знаю.

Могу только с 80% точностью сказать, что загрузки с iso там нет. Я прочитал почти все init-скрипты. Они не слишком просты, не слака же.

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

Могу только с 80% точностью сказать, что загрузки с iso там нет.

Ну а попробовать перенести как я сказал просто на USB Flash файлы вы не захотели?

Всё делается очень просто, у меня на USB Flash Grub-0.97.

Вот инструкция:
- скачал DrWeb Live, файл drweb-livedisk-900-cd.iso;
- скопировал на USB Flash накопитель директорию casper в /boot/drweb/;
- в menu.lst добавил соответствующую конфигурацию для запуска;

title DrWeb Live
kernel /boot/drweb/casper/vmlinuz boot=casper live-media-path=/boot/drweb/casper uuid=116D-ED1C quiet splash --
initrd /boot/drweb/casper/initrd.lz
в параметре uuid указан UUID файловой системы на USB Flash накопителе, относительно корня которой в /boot/drweb/casper находятся файлы из директории /casper с iso образа.

Значение UUID файловой системы можно посмотреть в выводе утилиты

blkid
или
ls -ls /dev/disk/by-uuid/

Всё готово, можете грузиться с USB Flash диска и выбирать загрузку DrWeb Live.

Если у вас grub2, то сами разберётесь в его синтаксисе или вообще можете использовать syslinux, только в файлах

  • txt.cfg;
  • gtk.cfg;

добавьте по аналогии с конфигурацией grub соответствующий параметр для указания uuid файловой системы на USB Flash накопителе.

Ну и установите собственно загрузчик syslinux:

syslinux -i -d syslinux /dev/sdXY
cat /usr/share/syslinux/mbr.bin > /dev/sdX
Раздел сделайте активным. Файл mbr.bin в вашем дистрибутиве может располагаться в другом месте.

Не забудьте заменить файлы

  • chain.c32;
  • gfxboot.c32;
  • vesamenu.c32;

на файлы с аналогичными именами из вашей поставки syslinux, они находятся в той же директории, что и файл mbr.bin.

Удачи.

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

Спасибо за подробнейшую инструкцию! Думаю, придётся делать примерно так. В init скриптах я нашёл опцию, отвечающую за загрузку с флешки или cd-диска. Поменяю, буду пробовать...

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