Автор Тема: Как установить .iso через GRUB2 не распаковывая?  (Прочитано 12520 раз)

Оффлайн ElectronicSuperSonic

  • Начинающий
  • *
  • Сообщений: 16
http://ru.stackoverflow.com/questions/426350/Как-установить-altlinux-7-0-5-из-iso-при-помощи-grub2

Что надо написать в конфиг grub2, чтобы загрузился дистрибутив AltLinux 7.0.5 ?

Понятно, что нужно указать loop для grub2:

menuentry "AltLinux 7.0.5"{
        insmod loopback
#       search --set --fs-uuid b316cbc2-4695-480c-b9b9-a555350d458a
        set isodir=/iso
        set isofile=${isodir}/altlinux-7.0.5-school-master-x86_64-ru-install-dvd5.iso
        loopback loop (${root})${isofile}
        linux (loop)/syslinux/alt0/vmlinuz automatic=method:disk,disk:sda,partition:sda1,directory:${isodir}
        initrd (loop)/syslinux/alt0/full.cz
}

Непонятно, какие параметры передавать в строке параметров ядра, так как для этого надо знать, как собирался full.cz от altlinux и какие параметры он понимает.

вот такие же вопросы, только они там не отвечены:
  http://otvet.mail.ru/question/69169909
  https://www.linux.org.ru/forum/linux-install/5934581

Нашел две ссылки (обе устаревшие):
http://www.altlinux.org/Installer/common/propagator
http://www.altlinux.org/Make-initrd-propagator
устаревшие они потому, что в новых ядрах вместо aufs используется скорее всего overlayfs.
В первой ссылке нет примера метода для загрузки из .iso-файла.

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

в syslinux/isolinux.cfg образа altlinux-7.0.5-school-master-x86_64-ru-install-dvd5.iso параметры такие:
label linux
    append initrd=alt0/full.cz changedisk ramdisk_size=183968 lang=ru_RU splash noeject xdriver=auto quiet=1 showopts
label failsafe
    append initrd=alt0/full.cz changedisk ramdisk_size=183968 lang=ru_RU  showopts noapic pci=nomsi noeject acpi=off noload=ahci nomodeset nopat
label live
  append initrd=alt0/full.cz live lowmem fastboot splash stagename=live quiet=1 showopts

строчки конфигурации в altlinux-7.0.5-simply-x86_64-install-dvd5.iso такие:
label linux
    append initrd=alt0/full.cz changedisk ramdisk_size=183210 lang=ru_RU splash noeject quiet=1 showopts
label failsafe
    append initrd=alt0/full.cz changedisk ramdisk_size=183210 lang=ru_RU  showopts noapic pci=nomsi noeject acpi=off noload=ahci nomodeset
label rescue
  append initrd=alt0/full.cz live ramdisk_size=102568 fastboot stagename=rescue showopts
label live
  append initrd=alt0/full.cz live lowmem fastboot splash stagename=live quiet=1 showopts
« Последнее редактирование: 10.06.2015 13:39:33 от ElectronicSuperSonic »

Оффлайн ElectronicSuperSonic

  • Начинающий
  • *
  • Сообщений: 16
Такая загрузка точно возможна в
  Ubuntu - http://manpages.ubuntu.com/manpages/hardy/man7/casper.7.html
  Debian - http://grml.org/online-docs/live-initramfs.en.7.html
  Fedora - http://unix.stackexchange.com/questions/184695/where-isoboot-boot-isolinux-iso-scan-filename-parameters-are-documented

Обнаружил совершенно замечательный список параметров под все дистрибутивы (кроме AltLinux, естественно):
https://wiki.archlinux.org/index.php/Multiboot_USB_drive

Нашел исходники пакета propagator
http://git.altlinux.org/gears/p/propagator.git?p=propagator.git;a=tree;h=refs/heads/sisyphus;hb=sisyphus
дальше фантазия не идёт.

То-ли попробовать примонтировать .iso-файл как loop при помощи lomount (или nfsmount ?) перед тем, как указывать его как директорию на диске, то-ли что-то ещё думать...

Если почитать вики с магеи:
https://wiki.mageia.org/en/Stage_One_install
то вроде бы указывать точное имя .iso файла не нужно (и монтировать его специально - тоже).

А вот тут:
http://members.shaw.ca/mandrake/drakx/AutoInstall-10.0.3.html#Disk
пишут, что указывать имя .iso-файла нужно.

Как затестить - понятно:
qemu-system-x86_64 -enable-kvm -drive file=/dev/sda,if=virtio,readonly,index=0,cache=none

Загружается ядро, full.cz, отображается консольный диалог выбора метода установки, потом диска, потом раздела, потом пути.
Если всё указать вручную (но мы же вписывали параметр!), то выдаётся сообщение о нехватке памяти.
(это на реальном железе. На виртуалке не может найти hdd после выбора метода установки)

Сообщение такое:
Error
Could not load program into memory
OK


А что конкретно писать в конфиг пока неясно.
« Последнее редактирование: 28.05.2015 01:21:33 от ElectronicSuperSonic »

Оффлайн ch-v-v

  • Давно тут
  • **
  • Сообщений: 28
Сообщение такое:
Error
Could not load program into memory
OK


Необходимо указать  размер виртуального диска в памяти.
Что то вроде этого
ramdisk_size=851968
Этот размер должен быть не менее загрузочного имиджа (altinst, live или rescue)
Запустить live диск -- получается, но установка идет только с костылями.

Оффлайн Антон Мидюков

  • alt linux team
  • ***
  • Сообщений: 5 183
  • antohami@
Приведите, пожалуйста, ваш конфиг, по которому вам удалось загрузить альт с ISO через grub2

Оффлайн ch-v-v

  • Давно тут
  • **
  • Сообщений: 28
menuentry "altlinux-p7-icewm-20130428-i586" --class gnu-linux --class gnu --class os {

        set gfxpayload=keep
insmod gzio
insmod part_msdos
insmod ext2
insmod xfs
loopback loop (hd0,msdos1)/altlinux-p7-icewm-20130428-i586.iso
set root=(loop)
echo 'Loading Linux  ...'
linux (loop)/syslinux/alt0/vmlinuz  live fastboot ramdisk_size=293285 stagename=live automatic=method:disk,disk:sdb,partition:sdb1,directory:/altlinux-p7-icewm-20130428-i586.iso lang=ru_RU splash=silent splashcount=17 showopts  panic=30  splash
echo 'Loading initial ramdisk ...'
initrd (loop)/syslinux/alt0/full.cz
}
Образ староват, но думаю это не принципиально.
На что обратите внимание.
- имя образа. в данном случае stagename=live. Есть не во всех исошника. Можно открыть исо Arc-ом и посмотреть.
- размер ramdisk_size=293285 не менее файла образа
- пути (disk:sdb,partition:sdb1) ядру я указал абсолютные. На моем ноуте они почему то меняются от загруски к загрузке. Можно указать UUID или метку диска, но я сейчас не помню как :-)

Вообще то я параметры подсматривал в самом исошнике. Если темже Arc-ом посмотреть образ то там можно найти файл isolinux.cfg. От него и плясать.
p.s. Такую задачу пытался решить больше года. Хотелось иметь универсальную флешку с набором образов. Не форматить ее каждый раз. Полностью решить не удалось. Завтра найду свои заметки и выложу здесь если это будет интересно :-)

Оффлайн berkut_174

  • Мастер
  • ***
  • Сообщений: 7 144
    • Email
Можно указать UUID или метку диска, но я сейчас не помню как
http://forum.altlinux.org/index.php?topic=11667.0
blkid
Сноси Винду, переходи на Линукс ! :)

Оффлайн ElectronicSuperSonic

  • Начинающий
  • *
  • Сообщений: 16
Запустить live диск -- получается, но установка идет только с костылями.

мне непонятно:
1) что такое live-диск (altlinux-7.0.5-school-master-x86_64-ru-install-dvd5.iso или какой-то отдельный ?)
2) какие именно "костыли" имеются в виду во фразе про установку

на странице
http://en.altlinux.org/Rescue#Download
предлагают попробовать такой образ:
http://nightly.altlinux.org/sisyphus/tested/regular-rescue-latest-x86_64.iso

export isodir=iso/AltRescue20150609
export isofile=regular-rescue-latest-x86_64.iso
mkdir -p /boot/$isodir && cd /boot/$isodir
wget -c http://nightly.altlinux.org/sisyphus/tested/$isofile

Если тем же Arc-ом посмотреть образ то там можно найти файл isolinux.cfg.

Что такое Arc я не знаю, но .iso-шник можно примонтировать после выполнения losetup и найти файл isolinux.cfg

export isodev=`losetup --find --show --read-only /boot/$isodir/$isofile` && echo $isodev
mkdir -p /mnt/iso
mount $isodev /mnt/iso
cd /mnt/iso
# grep -E '(append)|(^label)' syslinux/isolinux.cfg
cd ~
umoung /mnt/iso
losetup -d $isodev

Строчки такие:
label rescue
  append initrd=alt0/full.cz fastboot live showopts automatic=method:cdrom ramdisk_size=253525 stagename=rescue
label rescue_session
  append initrd=alt0/full.cz fastboot live showopts automatic=method:cdrom ramdisk_size=253525 stagename=rescue live_rw
label rescue_forensic
  append initrd=alt0/full.cz fastboot live showopts automatic=method:cdrom ramdisk_size=253525 stagename=rescue max_loop=16 forensic hash=0fe4ae68f34d02ac8f747dd6acb5fa863c41e02e599ba94cc4cc38a212991a85
label rescue_remote
  append initrd=alt0/full.cz fastboot live showopts automatic=method:cdrom ramdisk_size=253525 stagename=rescue quiet ip=dhcp port=22 rootpw=AUTO
label mediachk
  append initrd=alt0/full.cz live quiet lowmem automatic=method:cdrom mediacheck=1 stagename=mediacheck
label hdt
  append quiet
label memtest
label sda
label sdb

http://forum.altlinux.org/index.php?topic=11667.0
blkid

kernel (hd0,1)/alt0/vmlinuz live lowmem lang=ru_RU automatic=method:disk,uuid:4E30-081F fastboot splash stagename=live quiet=1 showopts
initrd (hd0,1)/alt0/full.cz

По этой ссылке мне непонятно, почему в параметре uuid указано только 8 цифробукв и знак минус посередине.
мне казалось, что uuid длиннее.

есть бага
https://bugzilla.altlinux.org/show_bug.cgi?format=multiple&id=15561
там говорится, что
Цитировать
> uuid, хм, странный.
Да, fat. у флешек такие вроде вечно, короткие..
> что на него показывает blkid -s UUID ?
/dev/sdc1: UUID="4824-271E"

Мне непонятно, где задокументированы параметры, передаваемые скриптам в initramfs из isolinux.cfg

видно, что файл rescue (имя которого передаётся в ключе stagename) занимает значительную часть .iso-образа:
# du --block-size=1 rescue
259608576   rescue
# du --block-size=1 /boot/$isodir/$isofile
347422720   /boot/iso/AltRescue20150609/regular-rescue-latest-x86_64.iso

видно, что кроме этого там ещё есть
stagename=mediacheck
# du --block-size=1 mediacheck
 11538432   mediacheck

размер ramdisk_size расчитан как-то так:
253525 = 259608576/1024 + 1

live
ramdisk_size=253525
stagename=rescue
automatic=method:cdrom
max_loop=16

fastboot
showopts
forensic

https://www.google.com/search?q=live+ramdisk_size+stagename+automatic+max_loop+fastboot+showopts+forensic
нет таких слов...

Если последние 4 слова запроса убрать, то ищется такая статья:
http://www.altlinux.org/InstallFlash
Интересное в нёй:
Цитировать
Флешка при загрузке может определиться, и не как sda (вот ещё почему для USB-загрузки лучше как можно меньше модулей пропагатору подсовывать),
тогда пропагатор будет спрашивать, что за девайс мы хотим грузить.
Надо или там, в пропагаторе, выбрать правильное устройство, или учесть это в этом файле.

http://heap.altlinux.org/alt-docs/modules/install_desktop/index.html
здесь описано, как должна выглядеть установка
важно видеть, какие шаги ожидать - тем, кто никогда альт линукс не видел (мне, например)!


Использовал я такую строчку:
linux (loop)/syslinux/alt0/vmlinuz ramdisk_size=253525 automatic=method:disk,label:BOOT,directory:/iso/AltRescue20150609/regular-rescue-latest-x86_64.iso live stagename=rescue fastboot max_loop=16

и было мне выдано сообщение (при тестировании в виртуалке):
dump
panic
mount_root
prepare_namespace
kernel_init_freeable
do_early_param
rest_init
kernel_init
ret_from_form
rest_init
---[ end Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(1,0)

это потому, что при запуске виртуалки надо давать памяти побольше, ключ -m
qemu-system-x86_64 -m 4G -enable-kvm -drive file=/dev/sda,if=virtio,readonly,index=0,cache=none
а не 512 мегабайт по-умолчанию

После этого был выведен синий экран с интерфейсом надписью "Welcome to ALT Linux", и выдано сообщение:
Error
No disk drive found.
OK

вписал вместо label:BOOT
uuid:17d1673a-1d37-4234-9ae9-da9da41b6e69
эффект такой же

Если нажать Alt-F3, то пишет
AUTOMATIC MODE: got 3 params
  got 7 args
spawning a shell
AUTOMATIC: parameter disk for method means returning Hard disk
checking for /sys/module/usb_storage directory
...
unsetting automatic

но я-то устанавливаю не с USB, а с настоящего HDD (ну, в варианте виртуалки - с /dev/vda)!
Может поэтому диск не находится?

такая фраза есть в баге
https://bugs.mageia.org/show_bug.cgi?id=15848
и больше особо нигде не ищется

То есть, диск не ищется ни по метке, ни по uuid, ни по имени (disk:vda,partition:vda1) - это в qemu

На реальном железе диск нашелся по uuid и по имени, мне удалось загрузить инсталлятор.
Но от ссылок на документацию не отказываюсь, готов их прочитать и переписать себе на память.

Дальше возникла следующая проблема - http://forum.altlinux.org/index.php/topic,32812.msg256305.html#msg256305

Завтра найду свои заметки и выложу здесь если это будет интересно :-)

Интересно.
« Последнее редактирование: 09.06.2015 11:27:04 от ElectronicSuperSonic »

Оффлайн ch-v-v

  • Давно тут
  • **
  • Сообщений: 28
Заранее прошу меня извинить за непрофесианолизм. Но я не программист, многие приемы получены методом «тыка» и у профи будут вызывать усмешку и критику. Например, так
Цитировать
mount $isodev /mnt/iso
монтировать iso я не умею (хотя уже попробовал, получилось :-)).
Цитировать
На реальном железе диск нашелся по uuid и по имени, мне удалось загрузить инсталлятор.
ElectronicSuperSonic – исходя из того, что запустить iso с флешки у Вас получилось, я вряд ли смогу что то добавить.
Разве что, несколько уточнений.

Запуском в виртуальной машине таким методом я не разбирался за ненадобностью. Как я понимаю, все приличные виртуалки могут грузится с iso. По-крайней мере VirtualBox умеет.

Цитировать
1) что такое live-диск (altlinux-7.0.5-school-master-x86_64-ru-install-dvd5.iso или какой-то отдельный ?)
Я имел  ввиду любой образ с параметром загрузки ядра «live».
linux (loop)/syslinux/alt0/vmlinuz  live..... Формулировки хромают :)

Цитировать
Что такое Arc я не знаю, но .iso-шник можно примонтировать после выполнения losetup и найти файл isolinux.cfg
Arс – оЧепятка.  Ark – архиватор, который у меня всегда под рукой.
С его помощью я выдергиваю параметры ramdisk_size=253525 и stagename=rescue.
Также проверяю наличие файла загрузочного образа. Я сталкивался с altinst, live и rescue.

Я так понял, что необходимо внимательно следить за тремя параметрами
  • -ramdisk_size=
  • -stagename=
  • -automatic=
Проверять имена, пути и размер.

Цитировать
Завтра найду свои заметки и выложу здесь если это будет интересно
К сожалению заметки где-то потерял. По памяти вспоминаю, что хорошо грузились образы «simply», «starterkits»
да и вообще «легкие» типа «icewm». У starterkits есть особенность. Не любит флешки отформатированные в ntfs (Вопрос к разработчикам —«не могу загрузить ntfs modul», это что-то религиозное?).
Большие (3-4GBt) образы часто выдавали сообщение примерно следующее -- не могу загрузиться с loop device.

У меня была идея здалать тестовую таблицу с указанием какой iso можно загрузить, с какого можно систему инсталлировать. Но – потерял …:(((
Буду признателен тому кто расскажет о своих экспериментах.

Цитировать
Дальше возникла следующая проблема - http://forum.altlinux.org/index.php/topic,32812.msg256305.html#msg256305
Возможно это не о том, но при запуске образа altinst или скрипта «установить на диск» на 4-ом шаге у меня возникает следующая ошибка:
Critical
reboot, then continue instsllation.

Если в ядру передать параметр lang=ru_RU, то сообщение становится чуть понятнее
Критическая ошибка
Невозможно пересчитать таблицу разделов.
Перегрузите и начните инсталляцию заново.
Похоже проблема в том, что мешает флешка.

В некоторых случаях удается обойти проблему. Но даже не костылями, а скорее пинком.
Алгоритм примерно следующий.

После загрузки live, (не важно live или altinst)  и начала сценария инсталляции выдернуть флешку. (Именно выдернуть, не umount. Тупо из разъема. )
На 4-ом этапе убедится что флешки в списке устройств нет.
Надстроить разделы (Не нажимать кнопу "далее").
перейти на вторую виртуальную консоль (ctrl+alt+F2)
Убедится,  что в корне есть каталог image
смонтировать флешку  (что то вроде mount /dev/sdXX /mnt...)
смонтировать iso-образ в каталог /image (важно, отсюда будут копироваться файлы) и проверить (ls image) каталог.
Вернуться – (ctrl+alt+F7)
Продолжить инсталляцию.

Работает не всегда.
http://ftp.altlinux.ru/pub/distributions/ALTLinux/p7/images/starterkits/altlinux-p7-icewm-20150312-i586.iso – не заработал. Скрипт виснет или не запускается.
Хотя найденная на моем диске версия от 2013 года (altlinux-p7-icewm-20130428-i586.iso) работает.
Интересно, как подсказать инсталлятору/пропагатору, что не нужно флешку трогать?
Хотя это наверное уже другая тема.

« Последнее редактирование: 09.06.2015 19:15:47 от ch-v-v »

Оффлайн ElectronicSuperSonic

  • Начинающий
  • *
  • Сообщений: 16
Интересно, как подсказать инсталлятору/пропагатору, что не нужно флешку трогать?

Я с самого начала писал, что флешки у меня нет от слова "вообще". Я записываю .iso файл на раздел HDD (туда же где конфиг grub), настраиваю конфиг grub, а потом запускаю iso-шник. Поэтому раздел у меня ищется правильно (на реальном железе) и проблема какая-то другая - внутри инсталлятора.
« Последнее редактирование: 09.06.2015 20:24:42 от ElectronicSuperSonic »

Оффлайн ch-v-v

  • Давно тут
  • **
  • Сообщений: 28
Попробуйте
http://ftp.altlinux.ru/pub/distributions/ALTLinux/p7/images/simply/altlinux-7.0.5-simply-i586-live-dvd5.iso
с таким конфигом
menuentry "altlinux-7.0.5-simply-i586-live-dvd5.iso" --class gnu-linux --class gnu --class os {

        set gfxpayload=keep
insmod gzio
insmod part_msdos
insmod ext2
insmod xfs
loopback loop (hd0,msdos1)/altlinux-7.0.5-simply-i586-live-dvd5.iso
set root=(loop)
echo 'Loading Linux  ...'
linux (loop)/syslinux/alt0/vmlinuz  fastboot live  ramdisk_size=872448 showopts automatic=method:disk,label:ALT-FAT,directory:/altlinux-7.0.5-simply-i586-live-dvd5.iso stagename=live vga=0x314  lang=ru_RU

echo 'Loading initial ramdisk ...'
initrd (loop)/syslinux/alt0/full.cz
}

Оффлайн ElectronicSuperSonic

  • Начинающий
  • *
  • Сообщений: 16
Попробуйте simply с таким конфигом

Вы показываете, как загружать live-образ. Для меня это пройденный этап, я успешно загружаю и live и инсталлятор.
Теперь надо сделать, чтобы инсталлятор пропускал через шаг 4/12 (разметка диска).

в Вашем конфиге мне не ясно, зачем нужны строчки
set root=(loop)
insmod xfs
про последнюю можно придумать, просто лично мне наверное не нужно. А про set root=(loop) - непонятно.

В simple linux есть один предварительный экран, где отображаются разделы и показывается три варианта действий.
После выбора варианта "вручную" не работает так же, как и на дистрибутиве master.
« Последнее редактирование: 10.06.2015 13:39:23 от ElectronicSuperSonic »

Оффлайн ch-v-v

  • Давно тут
  • **
  • Сообщений: 28
в Вашем конфиге мне не ясно, зачем нужны строчки
set root=(loop)
insmod xfs
Вторая -- атавизм. Экспериментов было много. Ставил с разделов с разными fs,  куски конфига гуляют между собой.
Первая -- указатель корневого устройства. После этого должно работать без указания (loop) в параметрах ядра.
Примерно так
...
set root=(loop)
linux /syslinux/alt0/vmlinuz  fastboot live  ramdisk_size=872448 showopts automatic=method:disk,label:ALT,directory:/altlinux-7.0.5-simply-i586-live-dvd5.iso stagename=live vga=0x314  lang=ru_RU
initrd /syslinux/alt0/full.cz
}
Но у меня случались какие-то непонятные збои, поэтому (loop) леплю, на всякий случай, везде.

Оффлайн ch-v-v

  • Давно тут
  • **
  • Сообщений: 28
Образ altlinux-7.0.5-simply-i586-live-dvd5.iso
Случайно осталась флешка в разъеме. На 4-ом шаге установки успешно получаю сообщение об ошибке.
Завершаю сценарий,  выдергиваю флешку, запускаю сценарий livecd-install повторно.
Список устройств (там же, на 4-ом шаге) тот же, хотя флешку я уже выдернул.
Исходя из -
http://forum.altlinux.org/index.php/topic,32812.msg256330.html#msg256330
Цитировать
Она называется alterator-vm. Пробуйте гуглить.
Эти действия выполняет  alterator-vm.
Кто-нибудь знает, где эта зараза хранит список устройств?

Оффлайн ch-v-v

  • Давно тут
  • **
  • Сообщений: 28
Эти действия выполняет  alterator-vm.
Кто-нибудь знает, где эта зараза хранит список устройств?
Никаких идей?

Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 246
  • Учиться .... Телепатами не рождаются, ими ....
    • Email
Он вроде нигде не хранит, он к каким-то системным службам обращается, типа lvm2