Uloženie konfigurácie Grubu do EFI partície

Uloženie konfigurácie Grubu do EFI partície
« kdy: 31. 08. 2023, 21:02:49 »
Zdravím vospolok,

Úvod do problému:
Pôsobím ako učiteľ na nemenovanej strednej škole. V rámci výuky OS mám učebňu v ktorej sa nachádza 15ks PC vyhradených na funkciu server. Rôzne ročníky a zamerania sa tu striedajú a v rámci výuky inštalujú a spravujú rôzne OS (linux, win) Za tým účelom si každý odkusne malú časť disku na svoju partíciu. Ako primárny boot manažer je použirý grub. Ten obsahuje x odkazov na boot jednotlivých linuxov + jeden na boot ostatných windows inštalácií.
Pri každom linuxovom odkze by som chcel aby v odkaze figurovalo meno a trieda aby sa vedelo ktorý odkaz komu patrí.
Pri windows to dosahujem pomocou programu bcdedit kde to po inštalácii príslušný človek raz zedituje a zostane niekde v konfigurácii win boot manažera zapamätané.

Iná situácia je pri inštalácii linuxu. Grub si do (hd0,gpt1)/efi/debian uloží len 3 riadkový grub.cfg a zvyšok uloží na /boot/grub/grub.cfg
Ak potom užívatel prepíše tento konfiguračný súbor je síce vidno jeho meno v úvodnej tabuľke bootovacích možností. Problém nastane ak sa nainštalujú napríklad ďalšie dve linux inštalácie. Každá vygeneruje svoj vlastný konfiguračný súbor, ktorý síce obsahuje aj predošlé inštalácie ale samozrejme tam nevloží identifikáciu.

Otázka: Ako čo najednoduchšie dosiahnuť aby sa komplet konfigurácia ukladala iba do (hd0,gpt1)/efi/debian/grub.cfg? Tu by si ju užívateľ zeditoval a odložil. Po inštalácii nového systému by sa nové menuitem prekopírovali do odloženej kópie a tá by sa prehlásila za nový platný konfiguračný súbor.
Prípadne navrhnite iný jednoduchý spôsob ako manažovať bootovacie odkazy vrátane identifikácie (napr menom partície)
Malo by sa to dať urobiť čo najjednoduchšie za pomoci balíkov základného systému debian.

Minulý rok to bolo pomerne peklo. Mal som zo začiatku 2 x linux a 2 x win. V prebehu školského roka pribudli ďalšie dva linuxy. Čo spôsobilo chaos v bootovaní. pre veľký úspech tento rok plánujem prevádzkovať asi 10 x linux a 5 x win inštalovaných postupne v priebehu školského roka podľa potreby výuky.
Dik za nasmerovanie.
« Poslední změna: 31. 08. 2023, 21:17:28 od Petr Krčmář »


alex6bbc

  • *****
  • 1 673
    • Zobrazit profil
    • E-mail
Re:Uloženie konfigurácie Grubu do EFI partície
« Odpověď #1 kdy: 31. 08. 2023, 21:48:37 »
nebudu radit technicky, ale co si najit zaky co pomuzou se systemem. instalace, cistky, devops, s tim, ze jim vykecate lepsi znamku v cestine, dejepisu.

alex6bbc

  • *****
  • 1 673
    • Zobrazit profil
    • E-mail
Re:Uloženie konfigurácie Grubu do EFI partície
« Odpověď #2 kdy: 31. 08. 2023, 21:54:12 »
spravne reseni je mit jeden linux vsude a jen se starat o uzivatelske ucty studentu.

pak lze lehce mazat studenty a ucty, active directory, kerberos, nis, cokoliv.


Re:Uloženie konfigurácie Grubu do EFI partície
« Odpověď #3 kdy: 01. 09. 2023, 00:09:06 »
Ani jedno riešenie nie je v tejto situácii prijatelné. Nepotrebujem aby mi žiaci pomáhali spravovať sieťový server školy. Samozrejme taký máme a s jeho správou nie je žiadny problém. Každý žiak má na ňom konto, môže si urobiť web stránku je tam samba doménový radič, ssh, dns s vlastnou domenou a verejnou IP, ...
Učebňa o ktorej píšem obsahuje 30 počítačov (15 sú v úlohe servera, 15 v úlohe klienta) Točí sa tu týždenne dajme tomu  100 ľudí. V rámci ich odbornej prípravy majú počas školského roka za úlohu nainštalovať a spravovať nejaký sieťový operačný systém (debian, win2023). Problémom je aby si každý z nich vedel nabootovať ten svoj linuxový systém a to aj potom čo iný žiak na danom počítači doinštaluje ďalší. Teda aby prvá voľba hovorila toto je debian Jožka Mrkvičku a druhá voľba je debian Janka Hraška.

_Jenda

  • *****
  • 1 606
    • Zobrazit profil
    • https://jenda.hrach.eu/
    • E-mail
Re:Uloženie konfigurácie Grubu do EFI partície
« Odpověď #4 kdy: 01. 09. 2023, 01:55:56 »
Asi bych na to šel tak, že bych ty žákovské Debiany vůbec nenechal sahat do konfigurace na EFI oddílu (IMHO se to zařídí tak, že když se GRUB při instalaci ptá, na který disk se má nainstalovat, tak řekneš, že na žádný), jenom ať se vygeneruje konfiguace do /boot/grub/grub.cfg. Následně bych si udělal ručně menu na tom EFI oddílu a tam si žák přidá svoji položku, která nasourcuje to /boot/grub/grub.cfg daného Debianu.

Další možnost je dát jim patchnutý os-prober/skript v /etc/grub.d co hledá ty jiné Debiany, který do menu položky uvede hostname, aby si poznali co je co. Ale tohle (i současné řešení) podle mě musí strašně narážet na to, že to jeden z žáků rozbije a pak je celý stroj nebootovatelný.

A osobně mi teda přijde divné „sedět u serveru fyzicky“ a nechal bych je nainstalovat virtuál (kdekoli) a pak ho spravovat po síti, tak jako se to dneska normálně na světě dělá. Navíc jim může běžet pořád a ne jenom když si na tom jednom konkrétním počítači zrovna ten jeden systém nabootují (to jako můžou pracovat jen při hodině a třeba domácí úkoly nemají?).
« Poslední změna: 01. 09. 2023, 01:58:43 od _Jenda »


Re:Uloženie konfigurácie Grubu do EFI partície
« Odpověď #5 kdy: 01. 09. 2023, 09:51:29 »
Ani jedno riešenie nie je v tejto situácii prijatelné. Nepotrebujem aby mi žiaci pomáhali spravovať sieťový server školy. Samozrejme taký máme a s jeho správou nie je žiadny problém. Každý žiak má na ňom konto, môže si urobiť web stránku je tam samba doménový radič, ssh, dns s vlastnou domenou a verejnou IP, ...
Učebňa o ktorej píšem obsahuje 30 počítačov (15 sú v úlohe servera, 15 v úlohe klienta) Točí sa tu týždenne dajme tomu  100 ľudí. V rámci ich odbornej prípravy majú počas školského roka za úlohu nainštalovať a spravovať nejaký sieťový operačný systém (debian, win2023). Problémom je aby si každý z nich vedel nabootovať ten svoj linuxový systém a to aj potom čo iný žiak na danom počítači doinštaluje ďalší. Teda aby prvá voľba hovorila toto je debian Jožka Mrkvičku a druhá voľba je debian Janka Hraška.
Musia mať k dispozícií fyzický server? Nebolo by jednoduchšie riešenie vytvoriť si virtuálne stroje a každý si spustí len ten svoj?

Re:Uloženie konfigurácie Grubu do EFI partície
« Odpověď #6 kdy: 01. 09. 2023, 11:23:51 »
Nemusia, ale:
  • Sme stredná škola a nie Amazon. Virtuálky na tých strojoch bežia tragicky sú to mašiny 10rokov staré so 4GiB.
  • Tento rok mám prvý krát učiť v novom zameraní aj virtualizáciu. MŠ doporučuje VMware. To ich mám rovno učiť virtualizáciu na druhú? (VMware virtuálne a v ňom virtualne OS)
  • Učebňa má celkovo 30 mašín. Každý žiak má vlastné pracovisko kde má vlastný server a vlastného klienta. Akú sieť tam vyprodukuje záleží len na jeho schopnostiach
  • Príde mi to celkom edukatívne keď na jednom stroji vidí študent že naprv ho mám len pre seba (windows), potom z neho urobím vec ktorá obsluhuje klientov (windows server/ linuxserver). Nakoniec z neho urobím hypervisor (VMware) a prevádzkujem na ňom iné OS (koľko utiahne) Že je to výkonovo ledva ledva nevadí. Učíme princípy. (Škola má aj výkonnejšie mašiny ale tam sa učí to čo to potrebuje - programovanie, grafika, CAD..)
Jenda:
  • Debian inštalátor sa nepýta kam sa má grub inštalovať. Bootuje sa z USB klúča cez EFI, aby som to mohol nasekať na veľa partícií
  • Že sa to rozbije a grub nenabehne je normal a posádka je na to vyškolená. Nabootuje cez bios a EFI. Toto sa stane vždy po inštalácii windovsu. Grub ide preč. Alebo aj keď si win zmyslí že bootmanažer treba opraviť.
  • upraviť script je pre mňa posledná cesta. Programoval som vo všeličom ale shell skripty to neboli
  • domace úlohy v tomto prípade sú scifi. Jednak by to niektorý ani nemali na čom robiť. Doma nemajú ani tablet, len hladkací telefón. Druhá vec že drtivá väčšina pracuje štýlom opakujte po učiteli. Pomer je asi 9:1. Teda z desiatich študentov jeden má o vec záujem a venuje sa IT aj doma. Ostatný sem chodia len preto že to majú blízko, alebo sem chodí kamarát, alebo počuli že v IT sa dobre zarába a predstavujú si že IT je browsovanie
  • Trvale bežiace virtuálky časom budú. Mám tu aj mašinu ktorú volám čierna krava. Je to malý IBM blade z roku 2012 na ktorom je win2008, VMware, 16 vitruálnych win7 a 16 virtuálnych AIX. Je to tu vypnuté od roku 2018 (alebo možno aj dlhšie). Zatial sa zoznamujeme ale musí sa to upratať mimo učebne. V tom hukote sa nedá ani učiť, ani vydržať 8 hodín

_Jenda

  • *****
  • 1 606
    • Zobrazit profil
    • https://jenda.hrach.eu/
    • E-mail
Re:Uloženie konfigurácie Grubu do EFI partície
« Odpověď #7 kdy: 01. 09. 2023, 22:23:21 »
  • Debian inštalátor sa nepýta kam sa má grub inštalovať. Bootuje sa z USB klúča cez EFI, aby som to mohol nasekať na veľa partícií
To jsem nečekal (osobně debianí instalátor nepoužívám a instaluju přes debootstrap -- což si teda myslím že by pro studenty mělo mnohem větší edukační hodnotu, alespoň mně tohle před 15 lety když jsem začínal s Linuxem strašně pomohlo, protože jsem pochopil, jak věci sakra fungují), každopádně tak si udělej třeba PXE image kterej ten grub.cfg na EFI oddíle obnoví a vlastně tam rovnou může to menu se jmény studentů (podle /etc/hostname nebo username nebo whatever).

Re:Uloženie konfigurácie Grubu do EFI partície
« Odpověď #8 kdy: 02. 09. 2023, 11:46:00 »
Ak by to niekoho zaujímalo - výsledok výskumu a final riešenie ktoré sa mi vidí vyhovujúce.

uprava origo súboru (hd0,gpt1)/efi/debian/grub.cfg
Kód: [Vybrat]
search.fs_uuid c7addd3a-2070-401f-93b3-ffbc8facd1f9 root hd0,gpt2
set prefix=($root)'/boot/grub'
#configfile $prefix/grub.cfg
configfile (hd0,gpt1)/efi/debian/base.cfg
Ako base.cfg sa sem nakopíruje to čo inštalátor uložil do /boot/grub/grub.cfg
Z tohoto súboru sa vystrihne časť ktorá definuje bootovacie položky a uloží sa do súboru (hd0,gpt1)/efi/debian/custom.cfg
Tu si študent doplní svoje identifikačné údaje
Kód: [Vybrat]
menuentry 'Debian GNU/Linux 4R IST Janko Hrasko' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-c7addd3a-2070-401f-93b3-ffbc8facd1f9' {
        load_video
        insmod gzio
        if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
        insmod part_gpt
        insmod ext2
        set root='hd0,gpt2'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt2 --hint-efi=hd0,gpt2 --hint-baremetal=ahci0,gpt2  c7addd3a-2070-401f-93b3-ffbc8facd1f9
        else
          search --no-floppy --fs-uuid --set=root c7addd3a-2070-401f-93b3-ffbc8facd1f9
        fi
        echo    'Loading Linux 6.1.0-11-amd64 ...'
        linux   /boot/vmlinuz-6.1.0-11-amd64 root=UUID=c7addd3a-2070-401f-93b3-ffbc8facd1f9 ro  quiet
        echo    'Loading initial ramdisk ...'
        initrd  /boot/initrd.img-6.1.0-11-amd64
}
Pri ďalšej inštalácii je to ešte jednoduchšie. Stačí upraviť originál grub.cfg na UEFI aby použil base.cfg a do custom.cfg pridať nové menu entry z novej inštalácie a zadať si tam svoju identifikáciu.

Prax onedlho ukáže ako je to životaschopné

RDa

  • *****
  • 2 742
    • Zobrazit profil
    • E-mail
Re:Uloženie konfigurácie Grubu do EFI partície
« Odpověď #9 kdy: 02. 09. 2023, 12:24:31 »
Jako ciste reseni by bylo pouzivat bud virtualizaci - kazda trida dostane sadu virtualnich disku a nic jineho v te dobe dostupno nebude. Druha varianta je pouzit iSCSI a napodobne nasdilet v jedne dobe jenom jednu sadu ulozist.

Se divim ze vam tech N instalaci na kazdem kompu jeste nejaky nemehlo studak nerozbil. Nejde prece jenom o bootloader, ale i o manazovani sdileneho disku..

Poor man solution bude pouziti SATA suplicku a kazda trida bude mit svoji "satnu", policku se svyma diskama. At uz po predesle instalaci, nebo vytrimovane a pripravene na novou aktivitu.

Re:Uloženie konfigurácie Grubu do EFI partície
« Odpověď #10 kdy: 02. 09. 2023, 13:02:33 »
Ohľadom virtuálizácie. Ako si predstavujete virtuálne inštalovanie VMware? Už som tu to písal virtualizácia2? Napríklad klientov si inštalujú ako virtuálku. Inštaláciu klientskej mašiny im nenechám šahať a tak si každý spraví vlatného virtuálneho klienta. Tam si robí čo chce. Keď príde na prezentáciu úloh, často počúvam - mne sa to vymazalo. Plus ďalšie problémy výkonového charakteru.

Nie ani najväčie nemehlo mi to nerozbil, tak že by to nešlo opraviť. Zmazať súbor z disku dokáže kde jaký trulo, ale s partícou je to už horšie. Polovica ani netuší čo to vlastne je. Tí čo vedia zvyčajne nemajú potrebu škodiť. Je ale pravda že pri každej inštalácii striehem jak jastrab čo kto robí. Bežne je že si zoberie celý zvyšok disku (hlavne pri win ištalácii sa to stáva lebo veď predsa to poznám, tak nepočúvam čo učiteľ hovorí a chovám sa ako doma). Ale to sa dá napraviť s malou časovou stratou. Alebo si zle nastavia alebo zabudnú root či admin heslá. To už mám tiež vychytané.

Šuplík si neviem predstaviť. K školkým veciam sa chovajú ako k handre. Príklad - rozborka a zborka PC. Študent si nesie rozobrané komponenty nahádzané na hromade. Druhý do neho z radosťou drgne. HDD letí dva metre po zemi - Učiteľ ziskal hodnotnú učebnú pomocku - vizuálne môže ukazovať ako vyzerá HDD vo vnútri.


_Jenda

  • *****
  • 1 606
    • Zobrazit profil
    • https://jenda.hrach.eu/
    • E-mail
Re:Uloženie konfigurácie Grubu do EFI partície
« Odpověď #11 kdy: 02. 09. 2023, 14:50:34 »
Tu si študent doplní svoje identifikačné údaje
Kód: [Vybrat]
menuentry 'Debian GNU/Linux 4R IST Janko Hrasko' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-c7addd3a-2070-401f-93b3-ffbc8facd1f9' {
        echo    'Loading Linux 6.1.0-11-amd64 ...'
        linux   /boot/vmlinuz-6.1.0-11-amd64 root=UUID=c7addd3a-2070-401f-93b3-ffbc8facd1f9 ro  quiet
        echo    'Loading initial ramdisk ...'
        initrd  /boot/initrd.img-6.1.0-11-amd64
}
Co se stane při aktualizaci až se kernel bude jmenovat 6.1.0-12-amd64? Tam dej alespoň ten symlink co to dělá /vmlinuz - ten vždy ukazuje na poslední…

Re:Uloženie konfigurácie Grubu do EFI partície
« Odpověď #12 kdy: 02. 09. 2023, 19:52:22 »
Dobre píšeš. Pripomienka akceptovaná.
custom menuentry sa bude editovať na tento tvar. (Odskúšané - funguje to)
Kód: [Vybrat]
        echo    'Loading Linux 6.1.0-11-amd64 ...'
        linux   /vmlinuz root=UUID=c7addd3a-2070-401f-93b3-ffbc8facd1f9 ro  quiet
        echo    'Loading initial ramdisk ...'
        initrd  /initrd.img

Životnosť systému je síce presne jeden školký rok (možno v budúcnosti aj viac), ale mám tam jedno cvičenie na aktualizáciu balíkov a stať sa to môže. Debian to má poriešené spustením aktualizácie grub inštalácie,  ale mne to rozbije bootovanie a toto minimalizuje potrebné zmeny opäť na editáciu jedného riadka.
« Poslední změna: 02. 09. 2023, 19:58:13 od peterple »