abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 01:22 | IT novinky

    Do 17. června do 19:00 běží na Steamu přehlídka nadcházejících her Festival Steam Next | červen 2024 doplněná demoverzemi, přenosy a dalšími aktivitami. Demoverze lze hrát zdarma.

    Ladislav Hagara | Komentářů: 0
    včera 22:33 | IT novinky

    Apple na své vývojářské konferenci WWDC24 (Worldwide Developers Conference, keynote) představil řadu novinek: svou umělou inteligenci pojmenovanou jednoduše Apple Intelligence, iOS 18, visionOS 2, macOS Sequoia, iPadOS 18, watchOS 11, …

    Ladislav Hagara | Komentářů: 0
    včera 21:44 | Nová verze

    Vyšla nová verze XMPP (Jabber) klienta Gajim, která přidává podporu reakcí pomocí emoji (XEP-0444: Message Reactions) a citace zpráv (XEP-0461: Message Replies). Přehled dalších vylepšení je k dispozici na oficiálních stránkách.

    sonicpp | Komentářů: 0
    včera 15:00 | Nová verze

    Po po téměř roce vývoje od vydání verze 5.38 byla vydána nová stabilní verze 5.40 programovacího jazyka Perl (Wikipedie). Do vývoje se zapojilo 75 vývojářů. Změněno bylo přibližně 160 tisíc řádků v 1 500 souborech. Přehled novinek a změn v podrobném seznamu.

    Ladislav Hagara | Komentářů: 5
    včera 12:00 | Zajímavý článek

    Uroš Popović popisuje, jak si nastavit Linux na desce jako Raspberry Pi Zero, aby je šlo používat jako USB „flešku“.

    Fluttershy, yay! | Komentářů: 1
    včera 08:44 | Zajímavý software

    Andreas Kling oznámil, že jelikož už se nevěnuje nezávislému operačnímu systému SerenityOS, ale výhradně jeho webovému prohlížeči Ladybird, přičemž vyvíjí primárně na Linuxu, SerenityOS opustí a Ladybird bude nově samostatný projekt (nový web, repozitář na GitHubu).

    Fluttershy, yay! | Komentářů: 2
    včera 02:22 | Nová verze

    Po dvou měsících vývoje byla vydána nová verze 0.13.0 programovacího jazyka Zig (GitHub, Wikipedie). Přispělo 73 vývojářů. Přehled novinek v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    8.6. 17:55 | Komunita

    Na čem aktuálně pracují vývojáři GNOME a KDE? Pravidelný přehled novinek v Týden v GNOME a Týden v KDE.

    Ladislav Hagara | Komentářů: 10
    7.6. 14:55 | IT novinky

    Před 70 lety, 7. června 1954, ve věku 41 let, zemřel Alan Turing, britský matematik, logik, kryptoanalytik a zakladatel moderní informatiky.

    Ladislav Hagara | Komentářů: 26
    7.6. 11:44 | Zajímavý software

    NiceGUI umožňuje používat webový prohlížeč jako frontend pro kód v Pythonu. Zdrojové kódy jsou k dispozici na GitHubu pod licencí MIT.

    Ladislav Hagara | Komentářů: 1
    Rozcestník

    GRUB2 rescue

    6.3.2012 18:59 | Přečteno: 2675× | O linuxu | Výběrový blog

    V poslední době jsem se trochu víc zajímal o vlastnosti posledního modelu zavaděče grub označovaného jako grub2. Budu-li dále používat název grub, mám tím na mysli pokročilejšího bratříčka z rodiny a to grub2. Při experimentování se mi podařilo dostat se i do režimu grub rescue, což je režim, kdy se přihodilo něco, co se přihodit nemělo a grub neví co dál. Protože jsem hledal pomoc na internetu a k rescue režimu jsem se toho moc nedozvěděl, podělím se o poznatky, které mohou leckomu pomoci a přinést k často zatracovanému novému grubu více světla.

    Ještě si dovolím poznámku k tomu zatracování. Čím je který software primitivnější, tím je sice jednodušší jeho používání ale také jsou omezenější možnosti jeho využití a platí to i naopak. Jestliže si nový grub klade za cíl být bootovacím nástrojem, který lze použít takřka vždy a všude, pak musí poskytovat mnoho variant použití a je na uživateli, aby zvolil právě tu variantu, která řeší jeho potřebu. Aby však uživatel mohl vhodnou variantu vybrat, musí se v těchto variantách orientovat, aby věděl co dělá. To ho ovšem nutí alepoň částečně se vzdělat a orientovat i v problematice, která pro něj není v daném okamžiku zajímavá. GRUB2 není nástroj pro BFU (uvědomuji si, že pojem BFU je jako všechno na tomoto světě relativní a za hlavní kriterium osobně považuji snahu dovědět se něco víc). Mě např. překvapilo označení oddílu v konfiguračním souboru (hd0,msdos1). Co sem tahají nějaký microsoftí DOS, říkal jsem si. Až později jsem kdesi vyčetl, že existují i jiné typy dělení disku než s jakými jsem se dosud setkal a že grub tedy umí pracovat i s těmito odlišnými typy a proto je mu nutné sdělit nejen pořadové číslo oddílu, ale i jeho typ.

    Ale zpět k záchrannému rescue režimu. Jak je již široké veřejnosti celkem dobře známo, zaváděcí program se spouští z tzv. MBR (master boot record) záznamu na pevném disku, což je první sektor oddílu označeného jako bootovací, ve windowsí terminologii jako aktivní. Takový oddíl může být na disku pouze jeden, protože BIOS nabízí na výběr pouze celé bootovací zařízení, nikoli jeho jednotlivé oddíly. Pro úplnost je třeba zmínit, že to nemusí být první oddíl, jak se často domnívají uživatelé Windows a že i Windows mohou sídlit na libovolném oddílu libovolného disku a dokonce je lze i spustit – díky pane KolaLoku a díky Grube. Pro pochopení fungování zavaděče je ovšem třeba vědět, že tento MBR záznam má pouhých 512 bytů včetně tabulky primárních oddílů na disku a že zaváděcí program musí být velmi úsporný aby se tam vměstnal a proto i jednoduchý.

    Vtipné řešení grubu spočívá v tom, že při zavádění grubu do MBR si kromě vlastního jednoduchého programu nese informaci o tom, v jakém oddílu (proměnná root), v jakém adresáři (proměnná prefix) se nachází moduly rozšiřující schopnosti zavaděče včetně dalších potřebných dat. Aby si mohl tyto moduly a data dle aktuální potřeby přečíst, musí umět číst i souborový systém, na kterém jsou tyto soubory uloženy. Rekapitulací zjistíme, že existují tři podmínky, které je třeba dodržet, aby grub mohl pracovat. Jeho rozšiřující moduly se musí nacházet na tom oddíle (podmínka 1), v tom adresáři (podmínka 2) a v souborovém systému (podmínka 3), jako v okamžiku zapsání grubu do MBR. Jestliže dojde později ke změně jedné z těchto podmínek, grub přejde do záchranného (rescue) režimu a očekává, že mu někdo poradí jak dál.

    Je třeba si uvědomit, že záchranný režim slouží jen k nápravě nefunkčního grubu z důvodu porušení jedné ze tří uvedených podmínek, neslouží k nápravě nefunkčního spouštění některého z instalovaných operačních systémů. Je ale dobré si záchranný režim vyzkoušet dokud vše funguje a závada je jen záměrně simulovaná, protože bez předchozího osahání si v případě skutečných problémů se bude uživatel muset potýkat spíše s neznalostí prostředí a na vyřešení příčiny se přinejmenším nebude moci soustředit. Nejjednodušší simulací vedoucí do záchranného režimu je přejmenování cesty k adresáři s moduly grubu, defaultní cesta je /boot/grub/.

    Doporučuji nainstalovat si grub třeba na USB flash disk, získáte tak nástroj, kterým by teroreticky mělo být možné při dostatečných znalostech nabootovat téměř každý funkční systém na libovolném počítači, jehož BIOS umí bootovat z USB disku, dnes je to již zcela běžné. Stačí strčit flashku do příslušného otvoru, zjistit pod jakým názvem zařízení ji systém vidí a pak spustit grub-install. Jestliže je flashka např. pod názvem /dev/sdc1 pak stačí napsat:

    grub-install --root-directory /boot/grub /dev/sdc1

    a je to. Pak si na flashce můžete cestu /boot/grub trochu pozměnit a zkusit z flashky nabootovat.

    Záchranný režim vám neposkytne žádnou nápovědu, jak se často na webu píše. Nápovědu je třeba nejprve natáhnout do paměti jako jeden z modulů a to příkazem insmod help

    Avšak v našem případě to nebude fungovat, protože grub nemá k dispozici adresář, ve kterém své moduly očekává, protože jsme mu cestu přejmenovali. Vždy máme v rescue režimu k dispozici dva příkazy a to ls a set. Příkaz ls vám vypíše všechny detekované disky a jejich oddíly, příkaz set vypíše známé proměnné, které jsou na začátku jen dvě a to root, která identifikuje oddíl, kde grub očekává své soubory a prefix, ve které je zapsaná cesta k modulům grubu. V našem případě stačí zadat správnou cestu ve tvaru prefix=/spravna/cesta.

    V tomto okamžiku již bude grub schopen rozšiřovat své schopnosti zaváděním modulů z disku, třeba příkazem insmod help. Poté stačí napsat help a grub vám již vypíše, jaké příkazy má k dispozici. Není jich mnoho a v našem případě postačí použít příkaz normal, kterým se grub přepne do normálního interaktivního režimu a je možné začít bootovat.

    Pokud nastala chyba grubu z důvodu porušení jedné ze zbývajících dvou podmínek, pak nápravu chybného označení oddílu s moduly grubu zjednáme zadáním např. root=(hd1,msdos2) v případě, že moduly byly přesunuty na druhý oddíl druhého disku.

    Byl-li změněn souborový systém, náprava spočívá v zavedení modulu s příslušným souborovým systémem, třeba např. insmod reiserfs.

    Jak vidět, je to vlastně docela jednoduché, hlavní potíž spočívá jen v neznalosti prostředí, což je dost pochopitelné, protože podobné situace řeší běžný uživatel jednou za několik let a proto trochu nácviku předem neuškodí.

    Děkuji všem předem za případné kritické a konstruktivní připomínky, neboť nejsem děd vševěd a mýliti se je lidské. Ať vám grub bootuje jak potřebujete.

           

    Hodnocení: 100 %

            špatnédobré        

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    Komentáře

    Vložit další komentář

    6.3.2012 19:36 Pepan
    Rozbalit Rozbalit vše Re: GRUB2 rescue
    Moc díky hezky a srozumitelně napsané i pro začátečníka jako jsem já.
    6.3.2012 20:28 Aleš Kapica | skóre: 51 | blog: kenyho_stesky | Ostrava
    Rozbalit Rozbalit vše Re: GRUB2 rescue
    Možná bynebylo od věci uvést link, odkud jsi nabral rozumy.. ;-)
    6.3.2012 20:35 Aleš Kapica | skóre: 51 | blog: kenyho_stesky | Ostrava
    Rozbalit Rozbalit vše Re: GRUB2 rescue
    I když je možné, že jsi na tuhle stránku GRUB_(rescue_mode) nenatrefil.
    7.3.2012 15:02 selsky rozum | skóre: 4 | blog: Sedlakuv_blog | Praha
    Rozbalit Rozbalit vše Re: GRUB2 rescue

    To zní skoro jako obvinění z plagiátorství (pokud lze o něčem takovém ve světě open source hovořit). Informace jsem získal na různých webových stránkách, jejich adresy jsem si nepsal a poté, co jsem zjstil, že jsou tam buď neúplné nebo dokonce nepravdivé informace, zbytek jsem si doplnil vlastním experimentováním. Zejména použití helpu, které považuji za dost zásadní, není snad popsáno nikde a řada uživatelů píše, že jim help nefunguje. Přitom stačí tak málo (insmod help). Proto jsem se rozhodl napsat toto shrnutí a doplnění.

    Zmíněnou wiki stránku jsem předtím nenavštívil, není mému textu ani moc podobná. Shoduje se jen v několika bodech, ve kterých se musí shodovat všechna pojednání na stejné téma, totiž v pravdivých informacích na dané téma.

    Jsem ale vděčný za její uvedení, protože jsem tam našel to, co jsem také dosud marně hledal a to stránkování dlouhého výpisu pomocí proměnné pager.

    Závěrem si dovolím upřesnit použití proměnné pager, stačí napsat set pager=1 aby se po jedné stránce výpis zastavil. V rescue režimu ale proměnná pager nefunguje, jen v režimu normálním. A ještě upozornění na nepravdivou informaci z této wiki stránky. Nepřítomnost konfiguračního souboru grub.cfg nezpůsobí spuštění grubu v rescue režimu, grub tento soubor pro svou práci nepotřebuje, je to jen nabídka bootovacích možností na konkrétním počítači, bez které se lze obejít. Na USB klíčence, kterou lze použít k bootování různých počítačů, by to byl nesmysl.

    7.3.2012 15:30 Aleš Kapica | skóre: 51 | blog: kenyho_stesky | Ostrava
    Rozbalit Rozbalit vše Re: GRUB2 rescue
    V první chvíli mě to napadlo, ale o plagiátorství bych v tomto případě nehovořil - je to GPL. Spíš jen že by mi přišlo logické nějaký ten link přidat. Ale chápu, že pokud jsi přišel na ty věci sám metodou pokus omyl, tak to dost dobře nebylo možné.
    7.3.2012 15:38 Aleš Kapica | skóre: 51 | blog: kenyho_stesky | Ostrava
    Rozbalit Rozbalit vše Re: GRUB2 rescue
    Nepřítomnost konfiguračního souboru grub.cfg nezpůsobí spuštění grubu v rescue režimu, grub tento soubor pro svou práci nepotřebuje, je to jen nabídka bootovacích možností na konkrétním počítači, bez které se lze obejít.
    Máš pravdu za předpokladu, že ten grub má k dispozici vše potřebné pro zavedení dalších modulů. Viz kupř. grub na tom externím USB klíči. V rescue mode končí, když se k nim z nějakého důvodu nedostane. V takovém případě je pak nutno mu to říct ručně. Informace, která mu řekne kde je zbytek modulů a jak se mají zavést bývá v případě grubu instalovaného na PC právě součástí grub.conf
    7.3.2012 16:45 selsky rozum | skóre: 4 | blog: Sedlakuv_blog | Praha
    Rozbalit Rozbalit vše Re: GRUB2 rescue
    To nějak nechápu. Jak se může grub dostat k souboru grub.cfg, když se nemůže dostat ke svým modulům. Informaci o tom, kde má své moduly si zapisuje společně s vlastním program do MBR a rozhodně ji nehledá v konfiguračním souboru na disku. Můžeš uvést příklad zápisu v konfiguračním souboru, který sdělí grubu, kde má své moduly? Domnívám se, že na PC je to úplně stejné jako na USB, jen má v MBR zapsanou jinou hodnotu proměnné root.
    7.3.2012 17:11 Aleš Kapica | skóre: 51 | blog: kenyho_stesky | Ostrava
    Rozbalit Rozbalit vše Re: GRUB2 rescue

    Aby se dostal ke svým modulům, musí mít správně nastavený ten root. A to je součást toho kusu dat co je uložen v té počáteční části disku, než začne první logický oddíl.

    Uvádím ten příklad. Tohle musím provést ručo vždy když zaktualizuji balík grub-pc, protože to sám neumí nastavit. Mám totiž systém na logickém LVM diskovém oddíle, který je nad linuxovým SW raidem verze 1.2

    grub-mkimage -o /boot/grub/core.img \
                 -O i386-pc -p "(data-system)/boot/grub" \
                 biosdisk \
                 part_msdos \
                 mdraid1x \
                 lvm \
                 reiserfs \
                 minicmd ; \
    grub-setup /dev/sda; \
    grub-setup /dev/sdb
    

    Co to dělá.. Nejprve pomocí grub-mkimage vygeneruješ ten kus kódu, co se vloží do té části na začátku disku.

    • biosdisk - zajistí aby GRUB našel pevné disky
    • part_msdos - zajistí, že z nich bude schopen přečíst MS-DOS tabulku rozdělení disku
    • mdraid1x - zajistí vytvoření raidu
    • lvm - prohledá zařízení která grub našel a sestavil a pokud najde nějakou existující LVM skupinu, tak ji aktivuje.
    • V tomto okamžiku nastupuje cesta nastavená parametrem malé p. Pokud ji máš nastavenou blbě, skončíš v rescue modu. Pokud ji máš nastavenou dobře, ale máš špatný modul pro práci s FS na kterém ty soubory jsou, tak skončíš taky v rescue modu.
    • Modul minicmd je tam právě pro ten případ, že by byla blbá jen ta cesta - umožní ti ji přenastavit. Také má nějaké příkazy, které ti pomohou zjistit co je blbě. V takovém případě ti pak nezbývá než bootnout z toho USB klíče, a tenhle příkaz doplnit o chybějící moduly a spustit a znovu nainstalovat
    • Teprve teď máš splněny všechny předpoklady k tomu, aby natáhnul konfigurační soubor grub.cfg a případně další potřebné moduly. Nicméně ano, jsi již v tomto případě schopen natahovat další moduly a systém nastartovat i bez tohoto souboru.
    • Po vytvoření souboru core.img jej příkazem grub-setup zavedeš

    Nevím jak přesně vzniká ten výchozí core.img, jestli se provádí nějaká analýza při instalaci balíčku, ale vím, že při každé aktualizaci jsem to zatím musel udělat. Je to věc o níž píšu už na těch manuálových stránkách. Komunikoval jsem o tom i přímo s vývojáři grubu. No. To že v té době z svn přešli na bazaar místo na git hovoří za vše.

    Teď vyšla nějaká nová verze - nevím jestli už to nějak pořešili - to uvidím zase při aktualizaci. Ale když jsem aktualizoval naposled, tak jsem ten výše uvedený příkaz u jednoho stroje zapoměl spustit a dopadnul jsem stejně jeko dřív.

    pavlix avatar 8.3.2012 00:41 pavlix | skóre: 54 | blog: pavlix
    Rozbalit Rozbalit vše Re: GRUB2 rescue
    To zní skoro jako obvinění z plagiátorství
    To určitě ne... spíš bych to viděl na prosbu o linky, ze kterých čerpal informace kvůli možnosti dalšího studia či doplnění informací.
    (pokud lze o něčem takovém ve světě open source hovořit).
    A to je zas úplně jiné téma. V open source funguje plagiátorství úplně stejně jako všude jinde. Když vydávám něco, co je z velké části kopií jiného díla, za své, je to plagiátorství nejen v open source, ale dokonce i kdyby to bylo public domain. Ale to by bylo na dlouhou debatu vyvažování toho, co je podstatná část, a kdy se nejedná o plagiátorství, protože autor naopak něco schválně vydal pod jménem druhého, apod.
    Já už tu vlastně ani nejsem. Abclinuxu umřelo.
    gtz avatar 6.3.2012 20:40 gtz | skóre: 27 | blog: gtz | Brno
    Rozbalit Rozbalit vše Re: GRUB2 rescue
    grub-install --root-directory /boot/grub /dev/sdc1
    Root directory? a na USB flash disku? No nevím, já jsem na tyto účely používal grub4dos popř. jsem modifikoval syslinux. Grub měl celkem problém s tím, aby sám sebe napral někam na VFAT FS.
    - nejhorší jsou trpaslíci ... Ti Vám vlezou úplně všude
    6.3.2012 20:53 Aleš Kapica | skóre: 51 | blog: kenyho_stesky | Ostrava
    Rozbalit Rozbalit vše Re: GRUB2 rescue
    Je mu to jedno, za předpokladu, že je v tom kousku co se načte jako první ovladač pro příslušný fs viz GRUB (proces zavedení systému).
    6.3.2012 20:58 Aleš Kapica | skóre: 51 | blog: kenyho_stesky | Ostrava
    Rozbalit Rozbalit vše Re: GRUB2 rescue
    Jo a mimochodem - zrovna mám takovou fleshku v kapse. Stará 256MB, aby s ní nebyl problém při bootu. Už mi několikrát zachránila kůži. Na fleshce ale vůbec nemusí být vfat. Já mám na ní kupř. reiserfs.
    gtz avatar 6.3.2012 21:07 gtz | skóre: 27 | blog: gtz | Brno
    Rozbalit Rozbalit vše Re: GRUB2 rescue
    No to mně taky, ale já tam mám VFAT, protože jsem tam musel mít i rescue nástroje pro Windows svět. Takže tam mám VFAT a multiboot s grubem (Hirens + VistaPE + MiniSuse) a funguje to. No starý grub jsem párkrát nacpal na ext2/ext3 na USB HDD a občas s tím byly problémy tak jsem to nechal na VFAt a je celkem klid.
    - nejhorší jsou trpaslíci ... Ti Vám vlezou úplně všude
    pavlix avatar 7.3.2012 01:15 pavlix | skóre: 54 | blog: pavlix
    Rozbalit Rozbalit vše Re: GRUB2 rescue
    Protože jsem hledal pomoc na internetu a k rescue režimu jsem se toho moc nedozvěděl
    Zajímavé. Já jsem tu pomoc během chvilky našel a dokonce jsem se pomocí set prefix... a insmod dohrabal až do nabootování systému. Navíc mi to pomohlo o kousek víc porozumět tomu, jak grub funguje.
    Já už tu vlastně ani nejsem. Abclinuxu umřelo.
    7.3.2012 10:45 Jan
    Rozbalit Rozbalit vše Re: GRUB2 rescue
    MBR neni na zacatku aktivniho oddilu. MBR je na zacatku disku. BIOS nejprve hleda zavadec v MBR a pokud tam neni, pak teprve hleda zavadec na zacatku aktivniho oddilu. A tomu se asi rika jen BR.
    7.3.2012 14:42 selsky rozum | skóre: 4 | blog: Sedlakuv_blog | Praha
    Rozbalit Rozbalit vše Re: GRUB2 rescue
    Děkuji za upřesnění.
    9.3.2012 22:24 Ondrej 'SanTiago' Zajicek
    Rozbalit Rozbalit vše Re: GRUB2 rescue
    BIOS nejprve hleda zavadec v MBR a pokud tam neni, pak teprve hleda zavadec na zacatku aktivniho oddilu.
    Je to AFAIK trochu jinak - BIOS vzdy zavede a spusti kod z MBR, tam muze byt bud first stage regulerniho zavadece (jako GRUB) [*], nebo tam muze byt stub kod, ktery jen nacte boot record aktivniho oddilu a spusti ho. Tenhle kod se v DOSu dal obnovit (a tim napr. odinstalovat regulerni zavadec) pomoci prikazu 'fdisk /mbr'

    BIOS tedy vubec nemusi nic vedet o partition table, vzdy nacte jen prvni sektor (MBR).

    [*] zbytek regulerniho zavadece byva v 'dire' mezi MBR a prvni partition (ktera tam je z historickych duvodu pouzivani CHS v partition table).
    9.3.2012 22:42 Ondrej 'SanTiago' Zajicek
    Rozbalit Rozbalit vše Re: GRUB2 rescue
    Ted vidim nevhodnou formulaci, do te 'diry' se treba u GRUBu nevejde cely zbytek, znacna cast GRUBu a jeho modulu je tedy nekde na filesystemu. Do te 'diry' se pak nahrava ta cast, ktera rozumi partition table a filesystemu, aby mohla zavest zbytek. U GRUBu 1 se oznacuje jako stage 1.5, u GRUBu 2 se tam dava core.img .
    7.3.2012 12:47 pedro
    Rozbalit Rozbalit vše Re: GRUB2 rescue
    Pěkné. Vyšel na abc nebo jinde článek ke Grubu 2? Popravdě já pořád používám Grub 1 :-)

    Založit nové vláknoNahoru

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.