LINUX.ORG.RU

Задача сделать мультизагрузочную флешку

ОС загружатся будут через образы

пробовал через syslinux грузить с помощью memdisk

пишет что не дотаточно памяти

ОЗУ - 4гб

ISO - 600~ мб

поэтому нужен груб

и загрузка в режиме просто BIOS а не UEFI

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

Удалите syslinux, поставьте grub2, перепишите всё на grub2. Ну либо по необходимости вызывайте syslinux с раздела.

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

флешка 1

с 1 разделом

про grub4dos чтото в гугле есть про обычный нечего найти не могу

это реализовать вообще реально?

GGUseR
() автор топика

- собрать grub2 статически с поддержкой нужных модулей(гугл в помощь)
- залить в директорию на флешке(например grub2)
- прописать в syslinux строчку для загрузки. Например так:

LABEL grub2
MENU LABEL GRUB 2
kernel grub2/grub2.0

Расширение .0 - важно, по крайней мере для старый версий pxelinux

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

зачем grub4dos? Тебе же сказали - grub2.

memtest замечательно грузиться через grub2

menuentry "Memtest86" {
        linux16 /boot/memtest86-5.01.bin
}

ставится grub2 в 2 действия:

1. mount /dev/sdXN /mnt/xxx

2. grub-install --boot-directory=/mnt/xxx/boot /dev/sdX

потом в /mnt/xxx/boot/grub кладем конфиг grub.cfg

vel ★★★★★
()
Последнее исправление: vel (всего исправлений: 2)

Если тебе мультизагрузочную флешку надо, то просто монтируешь ее, ставишь граб на нее. После чего конфиг редактируешь типа:

#
# /boot/grub/grub.cfg - This is config file for GRUB2 bootloader!!!!!!!
#
# Подгружаем  нужные модули
#
insmod part_msdos
insmod part_gpt
insmod ext2
insmod iso9660
#
# Ставим корнем сменный носитель по его UUID
# C797-C48A - это uuid этой моей флешки 
#
search --no-floppy --fs-uuid --set=root C797-C48A
#
menuentry " Run Runtu" {
	set isopath="/boot/RL14041.iso"
	loopback loop ${isopath}
	linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=${isopath} quiet --
	initrd (loop)/casper/initrd.lz
}
menuentry " Run Finnix x86" {
        loopback loop /boot/finnix-111.iso
        linux (loop)/boot/x86/linux findiso=/boot/finnix-111.iso quiet
        initrd (loop)/boot/x86/initrd.xz
}
menuentry " Run Debian hd-media x86" {
        linux /boot/hd-media_d8x86/vmlinuz priority=expert
        initrd /boot/hd-media_d8x86/initrd.gz
}
#
В подобном роде все и делаешь. Проверял, все работает.

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

пробовал через syslinux грузить с помощью memdisk

пишет что не дотаточно памяти

мой 1 пост в этой теме


хз мб я просто неправильно его готовлю?

LABEL iso
    LINUX memdisk
    INITRD /iso/debian-8.1.0-amd64-CD-1.iso
    APPEND iso


пробовал разные .iso
конкретно этот 627мб ОЗУ у меня 4гб
идёт загрузка около минуты .... .. . . .. . . .. . .
........................................
................................................

и пишет что мало памяти..

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

зачем grub4dos?

я тоже незнаю - зачем он мне? я про него нечего не писал кроме того что по нему в гугле находи а по обычному грубу нет.

нужен syslinux + grub2

потомучто syslinux уменя настроенный а grub нет.

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

Ты больной? Нафейхуа в память грузить весь iso, распакуй его, тебе нужно всего на всего грузить образ ядра и initramfs, далее скрипт init в initramfs должен искать либо файлы из iso образа либо сам файл образа.

Удачи.

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

Сам ты больной!

если делать так как ты говориш они / не находят при установке системы

/ найдёт только в том случаеш если весь iso образ будет распакован в / флешки.

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

если делать так как ты говориш они / не находят при установке системы

А ты почитай документацию. Повторяю ещё раз, грузить в память весь iso образ не нужно, чтобы скрипт init в initramfs находил необходимые ему файлы нужно почитать документацию и указать соответствующие параметры ядра. Так же есть отдельный проект, в котором подготавливают отдельно образ ядра debian и initramfs, который умеет искать в корне usb накопителя iso образ. В итоге в память загружается только образ ядра и initramfs, это всего мегабайт 5, может больше, затем скрипт init находит iso образ debian, будь это netinstall, cd или dvd, монтирует его и запускается установщик.

Ссылок я тебе не дам, разбирайся сам, но ты можешь поступить любым из описанных мной 2-ух способов, ну или пытаться реализовать свой, если ты действительно больной.

найдёт только в том случаеш если весь iso образ будет распакован в / флешки.

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

Иди гугли как реализовать предложенные мной варианты и выздоравливай поскорее.

Удачи

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

если ты внимательно почитай тему то поймёш

что мне образ грузить в память не нужно - т.к не получается туда грузить - ошибку выдало что мало памяти.

поэтому изначально в теме я НЕ хотел грузить его в память

я хочу через загрузчик SYSLINUX запускать GRUB2 (не grub4dos а именно grub2) и уже через него грузить ISO образ

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

т.к не получается туда грузить - ошибку выдало что мало памяти.

Это не памяти мало, а memdisk просто не может обрабатывать образ такого большого размера.

я хочу через загрузчик SYSLINUX запускать GRUB2 (не grub4dos а именно grub2) и уже через него грузить ISO образ

Зачем использовать два загрузчика на флешке? Ставь grub2 и пиши под него конфиг с реализацией всего, что раньше грузилось через syslinux, если тебе так уж нужен именно grub2.

Повторюсь, в случае реализации предложенного мной способа запуска, а именно через образ ядра и initramfs, загрузчик не важен, можешь использовать хоть syslinux, хоть grub2, хоть grub, хоть lilo.

Загрузчик нужен всего один.

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

grub2 iso образ никуда не грузит. Он лишь создаёт петлевое устройство, которое ассоциировано с iso образом. Т.е. по сути создаётся ссылка на iso образ на флешке, что-то вроде монтирования. Далее указываются команды, что с петлевого устройства нужно загрузить образ ядра и initramfs, т.е. что-то вроде

linux (loop0)/boot/vmlinuz.img параметры
initrd (loop0)/boot/initramfs.img 
При этом образ ядра и initramfs просто загружаются в память как бы из смонтированного iso образа, далее initramfs опять таки должен уметь найти iso образ и смонтировать его. Если он это не умеет, то загрузка не произойдёт. А что бы он это умел делать нужно указывать соответствующие параметры ядру, загружаемому из iso образа. А для этого тебе нужно почитать документацию, ну или распаковать initramfs и изучить сценарий init.

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

вот по этому мне нужно загружать grub2 через syslinux

Нет, ты всё же болен. Зачем тебе на флешке 2 загрузчика?

Ставь grub2 и используй только его, конфигурацию из syslinux перепиши на использование grub2.

А так, вот тебе ссылка: http://http.us.debian.org/debian/dists/stable/main/installer-i386/current/ima...

Берёшь отсюда initrd.gz и vmlinuz, приписываешь их загрузку в syslinux, т.е. просто

LABEL Debian Installer
KERNEL vmlinuz
APPEND initrd=initrd.gz
В корень флешки копируешь свой iso образ Debian. Всё готово.

Если нужен графический установщик, то берёшь вот отсюда http://http.us.debian.org/debian/dists/stable/main/installer-i386/current/ima... указанные два файла.

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

флешка мульти загрузочная в корено это не вариант

ты же сам писал

Ты понимаешь, что это способ нужно использовать лишь в том случае, если у тебя будет один дистрибутив на флешке.

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

флешка мульти загрузочная в корено это не вариант

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

Посмотри пример с Ubuntu, там указывается параметр iso-scan, в другом LiveCD параметр findiso, вот смотри Как передать управление grub2 из syslinux? (комментарий).

Здесь также должен быть параметр, либо ты можешь модифицировать скрипт в initramfs.

В общем, я тебе дал все возможные варианты решения твоей проблемы, выбирай любой, читай по нему документацию, настраивай, что бы он подходил под твои задачи.

Удачи.

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

Только что проверил, в случае если iso образ будет лежать не в корне и установщик Debian его не найдёт будет задан вопрос делать ли полный поиск по всем поддиректориям или нет. Если тебе это подходит, то используй так.

Если нет, то распаковывай initrd.gz и изучай скрипты. Только тут уже отрабатывают скрипты Debian Installer.

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

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

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

вот сейчас попробовал через grub2/loop - с нераспакованным образом

в результате установщик не видит этот образ

похоже прийдётся всётаке ковырять initrd.

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

в результате установщик не видит этот образ

О чём я и говорил.

Нужно править вот этот скрипт: var/lib/dpkg/info/iso-scan.postinst в initramfs.

kostik87 ★★★★★
()
Последнее исправление: kostik87 (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.