Miroslav Lachman wrote:
3 slice. Jelikoz je to na gmirroru, tak je to gm0s1, gm0s2, gm0s3
Na kazde je pak BSD label
gm0s1a /  (root)
gm0s2a  alternativni root
gm0s3b swap
gmos3d /var a /home

Predstava byla takova, ze na s1a a s2a bude vzdy system + baliky, pri
upgrade se udela upgrade na neaktivnim oddilu a pak se na nej rebootne.

Pokud se neco nezmenilo (aniz jsem si vsiml), tak "bootovani z gmirroru" funguje ve skutecnosti "nahodou".

Jak sam rikas "je to na mirroru" - takze abyses dostal ke slice a partition, nejprve musis projit pres uroven "gmirror".

Jenze ani BIOS ani FreeBSDacky stage 1 loader gmirror neumi. To, ze ti to s MBR nabootuje je dano "nahodou" - tech par klicovych sektoru, je nakonec na fyzickem disku stastne zapsane na stejnem miste jako kdyby tam zadny gmirror nebyl.

S GPT uz to nefunguje, protoze ona "stastna nahoda" plati jen pro nekolik malo prvnich sektoru a GPT ma sve informace ulozene nejen na zacatku, ale take na konci disku - a konec uz pro toho, kdo o gmirroru nevi, nesedi.

Uvedomuju si, ze mluvim o uplne jinem problemu, nez na ktery jsi se ptal a nechystam se te presvedcovat at to takhle nedelas - jen upozornuju, ze to co mas je vlastne "spinava konfigurace" a musis na to pamatovat pri priadnych budoucich zmenach (zrovna napriklad kdybys jednou chtel prejit na GPT).

Ja osobne jsem to resival tak, ze 'boot svazek' nebyl na mirroru, ale proste tam byly dva fyzicke svazky, kazdy na jednom disku. Zbytek uz byl stejny jako to mas ty - jeden aktivni, druhy neaktivni ...

OK, dost odpovedi na nepolozene otazky a vratime se k te polozene.

Otazka pak je - co tedy ovlivni boot manager?

Mozna bude jednodussi, kdyz, co mozna strucne, popisu jak takovy boot vlastne vypada. Pro jednoduchost se budu venovat pouze klasickemu BIOSu a nikoliv UEFI firmware.

1. BIOS nainicializuje zakladni desku s prislusenstvim a pristoupi k bootovani operacniho systemu - z jakeho zarizeni se pokusi system nabootovat je zalezitosti konfigurace BIOSu. Pro jednoduchost budeme vybranemu bootovacimu zarizeni rikat systemovy disk.

2. BIOS precte obsah prvniho sektoru systemoveho disku, okontroluje, ze na pozicich 510 a 511 jsou hodnoty 55h a AAh (takzvana "boot signature", znamka toho, ze obsah sektoru je platny), placne ho do pameti a preda rizeni programovemu kodu na zacatku sektoru. A co se bude dit dal je uz zalezitosti toho kodu.

Uz jen FreeBSD dava na vyber dve varianty co do tohoto sektoru dat. "Klasicky" a FreeBSD interaktivni. V trifazovem bootovani, ktere je pro FreeBSD typicke, je toto faze 1.

3a. klasicky kod prohrabe partition table, ktera je v tom sektoru taky, najde prvni aktivni partition, z ni precte precte prvni sektor, okontroluje, ze je platny, flakne ho do pameti a preda mu rizeni

3b. Interaktivni, z partition table a dalsich kofniguracnich informaci, ktere ma v sektoru ulozene vytvori "seznam kandidatu", necha z nich uzivatele vybrat (to je ten Fn... prompt), z vybraneho oddilu precte precte prvni sektor, okontroluje, ze je platny, flakne ho do pameti a preda mu rizeni.

Pokud se systemovy disk jmenuje ada0, pak jednotlive partition jsou s1..s4 a mluvime tedy o precteni prvniho sektoru z, napriklad, ada0s1

4. V pripade, ze partition vybrana (v 3a nebo 3b) je FreeBSD, pak ma na zacatku BSDLABEL - a jeji soucasti je znovu kod, ktery se po jeho umisteni do pameti spusti udela velmi podobnou vec co kod z MBR. Kod tabulku, ktera oddil dale deli (oddily oznacene pismenky - a,b,c,d,...) a vybere, ktera z nich bude bootovaci. Tady se na zadne "active" nehraje, tenhle kod si "konfiguraci" precte v souboru /boot.config, krome toho je interaktivni (FreeBSD/x86 boot) takze ho muze ovlivnit i uzivatel. Vysledkem rozhodovaciho procesu je "co a odkud natahnout dal".

To o cem ted mluvim je "faze 2".

Natahnout se da ledacos z ledakdes, obvykle to ale je /boot/loader z oddllu 'a'. A pote co se natahne mu je predano rizeni. Tim vstupujeme do faze 3.

5. Loader za pouziti informaci v /boot/loader.conf a pripadne take dalsich vcetne interaktivniho vstupu uzivatele (menu a/nebo prompt) rozhodne co natahne a odkud. Typicky /boot/kernel/kernel - ten se natahne a preda se mu rizeni, cimz je okonceno zavadeni systemu a zacina jeho vlastni beh.

Dobu kdy bezel kod 'loader' hovorime o fazi 3.

No a to je ze zakladu vsechno. Ano, da se to komplikovat - napriklad vynechavat faze (fyzicky disk muze rovnou zacinat BSDLabel a nemit vubec zadnou MBR a navic nemusi natahnout /boot/loader ale klidne rovnou /boot/kernel/kernel) ale ja myslim, ze to je komlikovay dost i bez toho ;-)

Ted bys uz mel tusit jak se v jednotlivych fazich vybira "kudy dal" a jak teda dosahnout toho, co potrebujes.

A kdyz ne, tak se doptas ;-)

Dan
--
FreeBSD mailing list ([email protected])
http://www.freebsd.cz/listserv/listinfo/users-l

Odpovedet emailem