Multiboot Flash Grub2

Zkušenosti, tipy a zlepšováky, které jsou příliš malé pro článek na webu.
Nehledejte zde odpovědi na obecné dotazy.
Zamčeno
Zpráva
Autor
Uživatelský avatar
Ventero1
Příspěvky: 2763
Registrován: 31 říj 2016, 14:17
Bydliště: Sokolov, Olomouc

Multiboot Flash Grub2

#1 Příspěvek od Ventero1 »

Je spousta programů, které uživatelsky příjemně vytvářejí multiboot flashky i v Linuxu a tak se může zdát tento návod zbytečný.

Např. YUMI, MultiSystem, XBoot, Sardu, MultiBootUSB Easy2Boot, WinSetupFromUSB a jistě další ...

Bohužel některé z nich tvoří boot flash na bázi zavaděče Syslinux či Grub4Dos, které EFI nepodporují a nebo používají k bootování celých ISO obrazů, např dle mě nejjednodušší a nejelegantnější YUMI-UEFI-0.0.0.5.exe
https://www.pendrivelinux.com/yumi-mult ... b-creator/
, což nefunguje na všech strojích. Uněkterých strojů dojde v jedné z prvotních fází k odpojení loop obrazu disku a načtení OS dále nepokračuje.

Takto jsem dopadl hned napoprvé (mám ve zvyku se nespoléhat na programy, protože na foŕech je plno vláken, kdy jakoukoliv aplikací vytvořená flash někomu na něčem nefungovala), když jsem si ISO multiboot flash vytvořil podle návodu, zde:
https://ubuntuforums.org/showthread.php?t=2276498 a zde:
https://www.pendrivelinux.com/boot-mult ... ing-linux/
a pokus s YUMI mi pouze dokázal, že chyba není na mé straně.

A proto bylo třeba toto obejít, aby bylo docíleno maximální funkčnosti, spolehlivosti a univerzálnosti.

Mé prvotní pokusy pro elegantní a úsporné řešení s hostitelským instalátorem a hostující bází s úpravou initrd, mezi bratrskými OS (Mint, Lubuntu, Xubuntu), dopadly tak, že se mi po dlouhém a úmorném trápení podařilo korektně najet Live, ale instalace hostujících OS buď havarovala nebo nainstalovaný OS nefungoval správně.Tak mě napadlo, že budu muset opravdu vše rozdělit do samostatných složek.

Program SARDU
http://www.sarducd.it/
, který používá kombinaci Syslinux a Grub2 a EFI podporuje, který je i pro Linux, tyto ISO sice rozbalí do adresářů, jenže po naběhnutí systému (zkoušena opět bratrská kombinace Lubuntu, Mint, Xubuntu) se však neobjevila možnost instalace. Toto se sice dalo obejít tím, že v Lubuntu byla možnost instalace v menu a u Mintu či xubuntu jsem v terminálu použil příkaz ubiquity . Jenže třeba u Mintu instalátor havaroval.

Nicméně konfigurační zápis, který Sardu používá mě dokázal to, co jsem si myslel od začátku, že nakonec není třeba modifikovat initrd, ale že lze potřebné parametry předat ze zavaděče. Pak už zbylo jen koumání, proč v Mintu havaroval instalátor a co je to, co potřebuje mít za každou cenu v rootu instalačního média, aby instalace proběhla v pořádku.

===============================================================================

I. Základ je správná příprava flashky. Tedy naformátování na FAT32 a instalace zavaděče Grub2. Tento návod se osvědčil. Připojíme tedy flashku do PC.

1. Formát USB-flash s použitím jednoho oddílu:

Otevřít terminál a zadat sudo su a zadat heslo
zadat fdisk -l (zjistit označení flashky, kterou chceme upravovat)
V případě, že se flashka po zasunutí automaticky připojuje,
nejprve odpojit: umount /dev/sdx1 (nahradit x písmenem zvolené flashky)
zadat fdisk /dev/sdx (nahradit x písmenem zvolené flashky)
zadat d (odstranění existujícího oddílu)
zadat n (tvorba nového oddílu)
zadat p (pro primární oddíl)
zadat 1 (tvorba prvního oddílu)
Enter (použití prvního cylindru)
Enter (použití výchozí hodnoty posledního cylinderu)
zadat a (označí oddíl aktivním)
zadat 1 (označí první aktivní oddíl jako spouštěcí)
zadat t (definice typu oddílu)
zadat c (použití fat32)
zadat w (zapsání změn a zavření aplikace fdisk)

2. Tvroba souborového systému fat32:

umount /dev/sdx1 (odpojení oddílu) - pro jistotu, nejspíš už podruhé být nemusí
mkfs.vfat -F 32 -n MULTIBOOT /dev/sdx1 (zformátuje oddíl na fat32)

3. Instalace Grub2 na flash:

Poznámka:
Pro starší verze grubu se používá --root-directory=/mnt/USB
Současnější verze používají --boot-directory=/mnt/USB/boot

mkdir /mnt/USB (vytvoří adresář USB ve složce mnt jako montovací bod)
mount /dev/sdx1 /mnt/USB (x nahradit písmenem zvolené flashky - namontuje flashku)
grub-install --force --no-floppy --boot-directory=/mnt/USB/boot /dev/sdx (x nahradit písmenem zvolené flashky - instaluje Grub2)

Oddíl znovu odpojit umount /dev/sdx1

-------------------------------------------------------------------------------------------------------------------------------------

II. Doplnění konfiguračního souboru pro Grub2 a zkouška

Do složky /boot/grub na flashce přidat soubor grub.cfg - vytvořit tedy v daném umístění prázdný soubor s tímto jménem a vložit do něj tento zápis:

Kód: Vybrat vše

if loadfont /boot/grub/font.pf2 ; then
	set gfxmode=auto
	insmod efi_gop
	insmod efi_uga
	insmod gfxterm
	terminal_output gfxterm
fi

set lang=cs_CZ
set menu_color_normal=cyan/black
set menu_color_highlight=yellow/black
set color_normal=cyan/black

menuentry "Nastroje" {
	configfile /boot/grub/nastroje.cfg
}

menuentry "Parted Magic" {
	set gfxpayload=auto
	linux	/Linux/pmagic/bzImage  edd=off load_ramdisk=1 prompt_ramdisk=0 rw vga=normal loglevel=9 max_loop=256 vmalloc=288MiB directory=/Linux keymap=cz cs_CZ
	initrd	/Linux/pmagic/initrd.img
}

menuentry "Mint 17.3 xfce 32bit" {
	set gfxpayload=keep
	linux	/min1732x/casper/vmlinuz  file=/cdrom/min1732x/preseed/linuxmint.seed boot=casper cdrom-detect/try-usb=true ignore_uuid live-media-path=/min1732x/casper/ locale=cs_CZ console-setup/layoutcode=cz
	initrd	/min1732x/casper/initrd.lz
}

menuentry "Mint 17.3 xfce 64bit" {
	set gfxpayload=keep
	linux	/min1764x/casper/vmlinuz  file=/cdrom/min1764x/preseed/linuxmint.seed boot=casper cdrom-detect/try-usb=true ignore_uuid live-media-path=/min1764x/casper/ locale=cs_CZ console-setup/layoutcode=cz
	initrd	/min1764x/casper/initrd.lz
}

menuentry "Xubuntu 14.04 32bit" {
	set gfxpayload=keep
	linux	/xub1432/casper/vmlinuz  file=/cdrom/xub1432/preseed/xubuntu.seed boot=casper cdrom-detect/try-usb=true ignore_uuid live-media-path=/xub1432/casper/ locale=cs_CZ console-setup/layoutcode=cz
	initrd	/xub1432/casper/initrd.lz
}

menuentry "Xubuntu 14.04 64bit" {
	set gfxpayload=keep
	linux	/xub1464/casper/vmlinuz  file=/cdrom/xub1464/preseed/xubuntu.seed boot=casper cdrom-detect/try-usb=true ignore_uuid live-media-path=/xub1464/casper/ locale=cs_CZ console-setup/layoutcode=cz
	initrd	/xub1464/casper/initrd.lz
}

menuentry "Lubuntu 14.04 32bit" {
	set gfxpayload=keep
	linux	/lub1432/casper/vmlinuz  file=/cdrom/lub1432/preseed/lubuntu.seed boot=casper cdrom-detect/try-usb=true ignore_uuid live-media-path=/lub1432/casper/ locale=cs_CZ console-setup/layoutcode=cz
	initrd	/lub1432/casper/initrd.lz
}
-------------------------------------------------------------------------------------------------------------------------------------

Restartovat PC a vyzkoušet, zda flash bootuje v případě BIOS/Legacy stroje. Pro EFI není třeba zkoušet, tam to po doplnění potřebných souborů a složek fungovat bude.

-------------------------------------------------------------------------------------------------------------------------------------

III. Přidání distribucí a nástrojů

Vytvořit na flashce vedle složky /boot (v root flashky) složky pro vybrané distribuce - v mém případě:

lub1432 - doporučuji Lubuntu 14.04.3 i386, tedy 32bit verze
xub1464 - Xubuntu 14.04.01 64bit verze
xub1432 - Xubuntu 14.04.01 32bit verze
min1764x - Linux Mint 17.3 xfce 64bit
min1732x - Linux Mint 17.3 xfce 32bit
Linux - složka pro různé záchranné minidistra, memtest a další nástroje


Stáhnout obrazy vybraných distribucí a rozbalit je do příslušných adresářů na flashce.

Nyní se bude pracovat i se skrytými složkami, takže je třeba zapnout jejich zobrazování, pracujeme-li i nadále v Linuxu.

Doplnit adresář /boot/grub o adresář x86_64-efi a soubory efi.img , font.pf2 . Tyto lze získat z rozbalené distribuce Xubuntu 64bit nebo Mint 64bit. Prostě tam doplnit vše co tam ještě není a obsahuje to ve stejném umístění jakákoliv distribuce. Takto je možno i aktualizovat složky modulů i386-pc a x86_64-efi. Stejným způsobem lze získat i složku EFI, která se zkopíruje opět do root flashky. V této složce je podsložka BOOT a v ní soubory bootx64.efi a grubx64.efi - což jsou zavaděče Grub2 pro UEFI. Tyto 2 soubory ještě doplníme o 32bit zavaděč pro UEFI bootia32.efi popř. grubia32.efi a fallback.efi. Tyto jsou obsaženy třeba v distribuci MX16.1, která vychází z Antixu. Ten je stejně jako Ubuntu a spol. postaven na Debianu a výchozí prostředí má XFCE. Důvodem volby této distribuce může být např. absence systemd, kterýžto dělá síťařům vrásky navíc.

Nakonec je třeba ještě v root flash vytvořit složku /.disk a do ní vložit soubor cd_type a info.
Tyto zkopírujeme ze složky .disk pro Linux Mint, neboť ten na to má při instalaci nároky.
Nově nakopírovaný soubor /.disk/info potom otevřít a změnit zápis na „Linux” popř. jiný univerzální.
Nezkoušel jsem, ale myslím, že je možné tyto soubory získat i z jiné distribuce a nebo rovnou vytvořit.
Obsah souboru /.disk/info viz výše a obsah /.disk/cd_type je tento: full_cd/single

-------------------------------------------------------------------------------------------------------------------------------------

Při přidání každé další distribuce (může být na jiné bázi) je třeba se podívat na původní zápis a syntaxi a dle toho upravit konečný zápis v grub.cfg

Nakonec se může vymazat v adresářích jednotlivých dister, co tam už není třeba, když se chce šetřit místem:

složky pics, isolinux a install

a všechny samostatné soubory: README.diskdefines, autorun.inf, md5sum.txt a wubi.exe, které už není léta podporované.

-------------------------------------------------------------------------------------------------------------------------------------

Konfigurační soubor pro nástroje - příklad nastroje.cfg:

Kód: Vybrat vše

if loadfont /boot/grub/font.pf2 ; then
	set gfxmode=auto
	insmod efi_gop
	insmod efi_uga
	insmod gfxterm
	terminal_output gfxterm
fi

set lang=cs_CZ
set menu_color_normal=cyan/black
set menu_color_highlight=yellow/black
set color_normal=cyan/black

menuentry "Puppy Tahr Lxde - nopae" {
	search --set=root --file /Linux/LxPupTahr/vmlinuz
	linux	/Linux/LxPupTahr/vmlinuz  psubdir=Linux/LxPupTahr pkeys=cz
	initrd	/Linux/LxPupTahr/initrd.gz
}

menuentry "Parted Magic 2013" {
	set gfxpayload=auto
	search --set=root --file /Linux/pmagic/bzImage
	linux	/Linux/pmagic/bzImage  edd=on rw vmalloc=384MiB directory=/Linux keymap=cz cs_CZ
	initrd	/Linux/pmagic/initrd.img
}

menuentry "OS a instalace" {
	configfile /boot/grub/system.cfg
}

menuentry "Memory test" {
	linux16	/Linux/mt86plus
}

menuentry "NT Password Changer 2011" {
	search --set=root --file /Linux/chntpw
	set opt=vga=1
	clear
	echo Press ENTER to boot, or give linux kernel boot options first if needed.
	echo Some that I have to use once in a while:
	echo boot: nousb     - to turn off USB if not used and it causes problems
	echo boot: irqpoll   - if some drivers hang with irq problem messages
	echo boot: vga=ask   - if you have problems with the videomode
	echo boot: nodrivers - skip automatic disk driver loading
	echo
	set -n opt=boot:
	linux	/Linux/chntpw $opt
	initrd	/Linux/chntpw.gz
}

menuentry "EaseUs Disc Copy" {
	search --set=root --file /Linux/EaseusDC/bzImage
	linux16 /Linux/EaseusDC/bzImage  root=/dev/ram0 rw
	initrd16 /Linux/EaseusDC/initrd.img
}

menuentry "EaseUs ToDo Backup" {
	search --set=root --file /Linux/EaseusTB/bzImage
	linux	/Linux/EaseusTB/bzImage  root=/dev/ram0 rw
	initrd	/Linux/EaseusTB/initrd.img
}

menuentry "Seagate DiscWizard (skip error ALT+T+O+K)" {
	search --set=root --file /Linux/SeagatDW
	linux16	/Linux/SeagatDW  vga=788 rw ramdisk_size=32768 acpi=off quiet noapic mbrcrcs on
	initrd16 /Linux/SeagatDW.gz
}

menuentry "PLoP Boot Manager" {
	linux16	/Linux/plpbt.bin
}

menuentry "Smart Boot Manager" {
	linux16	/Linux/memdisk
	initrd16 /Linux/sbm.bin
}

menuentry "Free DOS" {
	linux16	/Linux/memdisk raw
	initrd16 /Linux/freedos.img
}

menuentry "Grub4Dos" {
	linux16	/boot/grub/grub.exe --config-file=/boot/grub/menu.lst
}
P.S. Ne všechno samazřejmě bude fungovat pod EFI ...
Zvuky jsou mantrami a myšlenky moudrostí, prostě proto, že se mohou objevovat ...

Daisyler
Příspěvky: 4
Registrován: 14 kvě 2019, 10:36
Bydliště: Sri Lanka
Kontaktovat uživatele:

Multiboot Flash Grub2

#2 Příspěvek od Daisyler »

Hi I have a problem with adding a Windows OS image for Grub 2 for multiboot pendrive below I am presenting a current post - please help. The idea is to create a single Grub2 menu for both Efi and Uefi I have a problem with adding a Windows OS image for Grub 2 for multiboot pendrive below I am presenting a current post - please help. The idea is to create a single Grub2 menu for both Efi and Uefi

Uživatelský avatar
Ventero1
Příspěvky: 2763
Registrován: 31 říj 2016, 14:17
Bydliště: Sokolov, Olomouc

Re: Multiboot Flash Grub2

#3 Příspěvek od Ventero1 »

Yes, this is problem. Adding image WinPE maybe. But for instalation image is it possible only with other tools - mount this in before created ram disk - memdisk ...

https://askubuntu.com/questions/367011/ ... from-grub2
Zvuky jsou mantrami a myšlenky moudrostí, prostě proto, že se mohou objevovat ...

Zamčeno