Vlastní Grub boot menu na USB disku

Vlastní Grub boot menu na USB disku
« kdy: 27. 06. 2023, 20:17:14 »
Zdravím a prosím o pomoc s nastavením grub boot menu pro batocera.linux (retro herní distribuci postavené na syslinuxu). Předem se omlouvám, že něco nepopíšu úplně správně, v linuxu jsem začátečník.
Mám Batocera.linux na externím USB disku. Na systémovém disku PC jsou Windows 10. Potřeboval bych na tom externím disku s Batocera.linuxem aktivovat grub boot menu, které by mělo dvě položky:
1. boot Windows 10 z lokálního disku (výchozí položka)
2. boot Batocera.linux z tohoto externího disku
(timeout 4 sekundy na automatický výběr výchozí položky menu)

Aktuálně mám nastaveno pořadí bootování tak, že se nějdřív použije USB disk (Batocera) a když není připojený, nastartuje se ze systémového disku SSD NVME (Windows 10). Zádrhel je v tom, že mi děti zapomínají Batocera.linux disk z USB odpojit po vypnutí. Já občas potřebuju toto PC zapnout na dálku a používat vzáleně Windows, což ale neproběhne, když tam zůstane připojený ten USB disk. A otočit pořadí bootování a vysvětlit dětem, že musí hned po startu PC mačkat F12 a z nabídky vybrat bootování z USB (když je tam asi 5 položek), zní snadněji než to ve skutečnosti je. :(
Jde i nainstalovat grub boot menu na systémový disk přes Grub2Win. Tomuto bych se ale chtěl vyhnout, mám obavu, že se mi to nepovede a protože na tom systémovém disku mám spoustu dat, SW a nastavení, zálohovat to by bylo na půl dne. Navíc je tady pořád ten problém s Windows, které se cizím boot managerům brání a věčně je buď přepisují, nebo mění pořadí bootování v BIOSu. Vlastní zkušenost. >:(
Přece jenom - je tam linux, je tam grub, mohlo by to jít?
Moje poznatky z chování Batocera.linux boot:
Když při startu podržím Esc, naskočí grub boot menu z položkami
Batocera (normal)
Batocera (verbose)
Z toho jsem vyrozuměl, že je tam grub "kompatibilní" se SecureBootem
V Batocera linuxu je v cestě /etc/grub.d symlink na /usr/libexec/libostree/grub2-15_ostree
Soubor grub2-15_ostree přidám do přílohy, pokud by někdo dokázal poradit, co tam dopsat/změnit, aby se to chovalo jak potřebuju.
Ptal jsem se na něco podobného na redditu, ale nic pořádného mi neporadili.


Re:Vlastní Grub boot menu na USB disku
« Odpověď #1 kdy: 27. 06. 2023, 22:08:09 »
Tak buď tam je grub nebo je tam syslinux. Oba jsou to bootloadery a ty nemůžou fungovat souběžně.
Soubor /boot/syslinux/syslinux.cfg tam máš? co v něm je?

Re:Vlastní Grub boot menu na USB disku
« Odpověď #2 kdy: 27. 06. 2023, 22:56:16 »
Tak buď tam je grub nebo je tam syslinux. Oba jsou to bootloadery a ty nemůžou fungovat souběžně.
Soubor /boot/syslinux/syslinux.cfg tam máš? co v něm je?

Asi chyba začátečníka, ale slovo grub2 se v tom konfiguráku grub2-15_ostree vyskytuje celkem často, proto jsem vydedukoval, že to bude asi grub.  V cestě /boot/syslinux/syslinux.cfg nic není, ale v cestě /boot/boot/syslinux/syslinux.cfg je to už zajímavější, jsou tam v podstatě ty položky z boot menu - přidávám do přílohy.

Wolda

  • **
  • 79
  • http://honza.ucw.cz
    • Zobrazit profil
    • E-mail
Re:Vlastní Grub boot menu na USB disku
« Odpověď #3 kdy: 27. 06. 2023, 23:25:12 »
Zkusil bych ten syslinux obohatit o "chainload" toho lokalniho disku, postup je cca vysvetleny napr. zde: https://wiki.archlinux.org/title/syslinux#Chainloading_a_disk's_MBR

Re:Vlastní Grub boot menu na USB disku
« Odpověď #4 kdy: 27. 06. 2023, 23:59:36 »
Bych ten konfigurák zkusil upravit třeba nějak takto:

UI menu.c32

DEFAULT windows
TIMEOUT 40
TOTALTIMEOUT 300

MENU CLEAR
MENU TITLE Boot Menu

LABEL batocera
        MENU LABEL Batocera.linux (^normal)
        LINUX /boot/linux
        APPEND label=BATOCERA console=tty3 quiet loglevel=0 vt.global_cursor_default=0 mitigations=off
        INITRD /boot/initrd.gz

LABEL verbose
        MENU lABEL Batocera.linux (^verbose)
        LINUX /boot/linux
        APPEND label=BATOCERA vt.global_cursor_default=0
        INITRD /boot/initrd.gz

LABEL windows
        MENU LABEL Windows 10
        COM32 chain.c32
        APPEND hd0 1

LABEL reboot
        MENU LABEL Reboot
        COM32 reboot.c32


Ten původní si rači zazálohuj. Taky se mrkni na https://wiki.syslinux.org/wiki/index.php?title=Menu


k3dAR

  • *****
  • 3 193
  • porad nemam telo, ale uz mam hlavu... nobody
    • Zobrazit profil
    • E-mail
Re:Vlastní Grub boot menu na USB disku
« Odpověď #5 kdy: 28. 06. 2023, 05:21:24 »
nezkoumal sem Batocera, ale obecne "ted" bejva u live syslinux kterej se pouzije pri startu v Legacy/BIOS rezimu, a Grub2 kterej se pouzije pri startu v UEFI rezimu, tim ze pri startu kdyz zmacnknes ESC a vidis nabidku Grubu predpokladam startujes v UEFI rezimu, takze neres upravu syslinux.cfg ale upravu grub.cfg, take ti (asi) nepomuze chainload na mbr windows, protoze to by bylo prave pri startu v Legacy a ne z UEFI...

nepouzivam Windows, ale zkusil bych tohle (do souboru co je tam uveden, na ten ostree bych nesahal to je neco jineho)

Re:Vlastní Grub boot menu na USB disku
« Odpověď #6 kdy: 28. 06. 2023, 08:49:25 »
Možná jsem úplně mimo, ale co zkusit při běhu toho Batocera spustit "update-grub", což by mělo rozeznat že tam někde jsou i ty Windows a přidat je do nabídky.
A pak jen editovat pořadí. Na to je pak třeba hezký GUI nástroj "Grub Customizer".

Re:Vlastní Grub boot menu na USB disku
« Odpověď #7 kdy: 28. 06. 2023, 12:27:03 »
@luksus
změna /boot/boot/syslinux/syslinux.cfg nemá na nic vliv - jak psal @k3dAR, opravdu to startuje v UEFI, toto bude asi pro LEGACY/BIOS.

Po nastartování se objeví cesta /boot/EFI/BOOT/ ve které je i syslinux.cfg (cesta ani soubor tam není, pokud neběží systém). Editovat v této cestě syslinux.cfg ale nejde.

@k3dAR Přidal jsem soubor /etc/grub.d/40_custom s obsahem podle wiki.gentoo.org, ale ani to nemá na nic vliv. Asi by to chtělo nějaký grub-update příkaz, ten ale v systému není.

@TechnikTom příkaz update-grub ani nic podobného tam není, ani nic, co by začínalo slovem grub.


Re:Vlastní Grub boot menu na USB disku
« Odpověď #8 kdy: 28. 06. 2023, 14:54:57 »
update-grub v Gentoo není, menu se přegeneruje pomocí
Kód: [Vybrat]
grub-mkconfig -o /boot/grub/grub.cfg
což je shellový skript, který asi někde najdete, ale jak to bude přesně s tím UEFI na USB, to nevím
« Poslední změna: 28. 06. 2023, 14:56:41 od Jan Fikar »

Bugsa

  • ***
  • 142
    • Zobrazit profil
    • E-mail
Re:Vlastní Grub boot menu na USB disku
« Odpověď #9 kdy: 28. 06. 2023, 14:58:23 »
Zkus rEFind
« Poslední změna: 28. 06. 2023, 15:00:53 od Bugsa »

_Jenda

  • *****
  • 1 638
    • Zobrazit profil
    • https://jenda.hrach.eu/
    • E-mail
Re:Vlastní Grub boot menu na USB disku
« Odpověď #10 kdy: 28. 06. 2023, 22:41:32 »
Asi bych jako první zkusil jestli to najde Windows když se nainstaluje os-prober a přegeneruje grub.cfg (update-grub nebo ten mkconfig jak posílal Jan Fikar).

Pokud ne tak je potřeba napsat chainloader položku do /etc/grub.d/40_custom, jak vypadá si musíš najít, a pak to tam přidáš a přegeneruješ zase grub.cfg.

Pak se snad Windows objeví v menu a půjdou spustit.

Pak je chceš udělat default, což se dělá na běžných distribucích v /etc/default/grub (GRUB_DEFAULT=číslo).

Pokud to nějak nepůjde, krajní možnost je upravit vygenerovaný konfigurák ručně (např. přesunout záznam pro windows na první místo) a zakázat jeho přepisování.

k3dAR

  • *****
  • 3 193
  • porad nemam telo, ale uz mam hlavu... nobody
    • Zobrazit profil
    • E-mail
Re:Vlastní Grub boot menu na USB disku
« Odpověď #11 kdy: 29. 06. 2023, 00:14:58 »
@k3dAR Přidal jsem soubor /etc/grub.d/40_custom s obsahem podle wiki.gentoo.org, ale ani to nemá na nic vliv. Asi by to chtělo nějaký grub-update příkaz, ten ale v systému není.
stahl sem Batocera img, sice mi v UEFI rezimu ve virtualu nesel nahodit, proc sem nezkoumal, nicmene kdyz se do nej podival, tak na prvnim oddilu (z ktereho bootuje) nevidim Grub, ale syslinux jak pro legacy tak pro UEFI, takze zpet k uprave syslinux.cfg :-) akorat ze je tam 4x tak asi v kazdem zmen nazev stavajici "Batocera.linux (^normal)" polozky na jinej at poznas kterej syslinux.cfg to u tebe pri bootu pouziva, a do nej pak laborovat...
/EFI/syslinux.cfg
/EFI/BOOT/syslinux.cfg
/boot/syslinux.cfg
/boot/syslinux/syslinux.cfg

EDIT: "akorat" teda koukam ze syslinux pri UEFI NEumoznuje chain na Window (resp. obecne jinej) EFI zavadec... ses si jistej (kdyz uz i to zes mel Grub padlo :) ze startujes v UEFI rezimu??
« Poslední změna: 29. 06. 2023, 00:20:00 od k3dAR »

Re:Vlastní Grub boot menu na USB disku
« Odpověď #12 kdy: 29. 06. 2023, 09:15:09 »
Díky chlapi, jdu to zkusit. V UEFI to jede určitě, ten desktop umí všechno buď jenom v UEFI (i boot z disků přes boot menu BIOSu) nebo jenom Legacy  - nutná uživatelská změna nastavení v BIOSu a restart). Windows určitě startují v UEFI.
« Poslední změna: 29. 06. 2023, 09:20:36 od ric_cz »

Re:Vlastní Grub boot menu na USB disku
« Odpověď #13 kdy: 30. 06. 2023, 20:48:42 »
V praxi používam jeden z platených boot manažérov pre multiboot Windows 8.1, 10, 11 a Linux. Tento boot manažér má verziu len pre UEFI, t.j. ak ju použijem, môžem prepínať medzi OS, ktoré podporujú UEFI - Windows 8.1/10/11 a Linux.
Táto verzia boot manažéru ma vyslovene upozorňuje na možnosť straty dát alebo poškodenia partície pokiaľ vo Window 10/11 nevypnem Fast startup.
Keď na to zabudnem, tak sa po reštarte v UEFI prepne zavádzanie na posledný Windows a obíde sa tak boot manažér. Čo síce vyzerá v pohode, no boot manažér mi okrem prepínania sa medzi viacerými OS poskytuje zároveň možnosť skrývať partície, kde sú ostatné OS, prípadne skrýva partície kam nemá mať daný OS vôbec prístup.
Fast startup sa vo Windowse dá ľahko vypnúť, stačí si vyhľadať "disable Windows 10 fast startup".

Kôli bezpečnosti pre nainštalované OS inštalujem nový OS na osobitný SSD/M2 disk, následne jeho partíciu spolu s EFI partíciou prekopírujem pomocou programov typu Partition manager resp. Partition Wizard na cieľový SSD/M2 disk k ostatným OS.

VŽDY následne spustím z USB program typu EFI manager resp. UEFI manager, pomocou ktorého spárujem GPT partície EFI boot entry s partíciami kde je samotný OS.  T.j. ak mám na SSD/M2 disku 3 GPT primary partície s tromi OS, tak tam musím mať aj 3 EFI boot entry partície, cez ktoré sa dané OS spúšťajú (boot manažér spúšťa OS práve z EFI pratícii).


jjrsk

  • *****
  • 785
    • Zobrazit profil
Re:Vlastní Grub boot menu na USB disku
« Odpověď #14 kdy: 03. 07. 2023, 17:01:48 »
... udelej si jeden boot loader (tzn ten grub2) dej ho na disk a co nastartuje vyberes v nem, ne zmenou poradi. Grub umi i ssh server, takze to muzes na dalku zmenit.

Co se widli tyce, to ze system umi efi jeste neznamena, ze widle startuji v efi rezimu. Je to takovy hod minci, podle toho jak se rozhodnou pri instalaci. Ale to je pri vejs uvedenym reseni uplne jedno, grub je umi nastartovat v obou variantach (a pri trose znalosti, navic muze na disku byt oboji - EFI i MBR loader).

Co je dobry podniknout, je znicit vypnout a zdemolovat vsechny windowsi (automaticky) opravy disku, protoze to vzdy vede maximalne k nenavratnym skodam.