14. ledna 2005
Bylo nebylo, na počítači jsem měl čerstvě nainstalovaný operační systém z Redmontu, Microsoft Windows XP SP1. Za normálních podmínek bych ani nepsal o tom, že jsem si k tomu chtěl nainstalovat další operační systém; to dneska dělá kdekdo. Ono to ale nakonec nedopadlo hned tak jak by každý čekal- totiž že instalace Linuxu proběhne hladce a dál není co řešit.
Když se Windows instalují, tak si podle svého naformátují disk a nějak to pak funguje. Je tady ale menší háček, ještě se k tomu dostanu. Instalace Linuxu si změní nastavení disku tak, jak se tváří BIOS, což je jakoby správně. A teď ten problém: Dnešní disky jsou tak velké, že tzv. "fyzická" struktura disku, čili počet hlav, sektorů a cylindrů už je nerelevantní, každý operační systém tak používá "logické" uspořádání, právě kvůli omezením původního CHS systému. Rozlišujeme dva základní druhy - 'LBA' - Logical Block Adressing, nejrozšířenější do poslední doby, strop tohoto systému je 128GB a počet hlav si to nastavuje nejčastěji na 255. Druhý systém, "Large" drives, překonává i omezení 128GB a (řekl bych už jenom pro srandu králíkům) taky nastavuje nějaké hodnoty CHS, v tomto případě 240 hlav.
Většinou má normální člověk, který se v tomhle zmatku nevyzná (dokud to funguje je to každýmu jedno), v BIOSu nastavený adresování sektorů disku na automatický režim. Co to ale je? Nikdo to neví přesně, každý BIOS to dělá po svém ... . Během formátování to ale Windows nějak nezajímá (lépe řečeno to totálně ignoruje) a naformátují disk právě na 240 hlav, tedy režim Large. (Windows před SP1 to zase dávaly na 255 hlav, tedy LBA). BIOS na Auto se tomu asi nějak přizpůsobí. PŘI spouštění Windows už ale není jedno, co je v BIOSu! Teď nastává něco, co nechápu - loader OS si ověřuje, jestli je BIOS na Auto režim a pokud ano, čte nastavení počtu hlav a spol z MBR (tabulky oddílů, hlavním spouštěcím záznamu disku) a to musí souhlasit s tím, jak je disk naformátován. Zatímco starší OS se řídily podle toho co bylo v BIOSu, moderní Linuxy se řídí tím, jak je disk naformátován, Windows na NT jádru potřebují pro svoje spuštění oboje! Pokud to nějak nesedí, loader hodí hlášku Operační systém nenalezen, Chyba při načítání operačního systému a nebo prostě nic.
Právě Fedora Core 2 (a pokud vím tak i nová FC3) založená na jádru 2.6 má v programu na rozdělování disku (parted) něco jako bug, a to takový, že 'opraví' a přepíše do MBR nastavení hlav na disku, podle toho, co oznámí BIOS, který si v vyžádá (chybně) defaultní nastavení disku od výrobce a to je (zase nachápu proč) 16 hlav. Teď dojde k nepříjemné situaci. Linuxu je jedno, co je v MBR za hodnoty CHS a při spouštění stejně bere v úvahu jenom to, jak je disk naformátován, takže funguje bez problémů. Windows ale zpanikaří: BIOS má Auto, Windows tedy čte hodnoty z MBR, kde je údaj "16 hlav", zatímco oddíly disku jsou ve skutečnosti 240-hlavové! To je podle loaderu tak fatální chyba, že radši ani nespustí operační systém. Originální text z bugzilly je tady, vysvětluje to myslím líp...
A to nejzajímavější: V době, kdy se mě tohle přihodilo, jsem ještě o CHS skoro nic nevěděl. Rozhodl jsem se v Linuxu si ještě potřebné věci vypálit, pak zformátovat disk a kompletně začít znova. O.K., vyzálohoval jsem, spustil instalátor Windows, smazal všechny oddíly disku a vytvořil nový. Soubory se nakopírovaly, počítač se restaroval a... opět hláška 'Chyba při načítání operačního systému'. I když byly VŠECHNY oddíly disku smazané a Windowsáckým instalátorem znovu vytvořené, pořád tam někde něco zůstalo.
V zoufalství jsem zkusil použít jeden z 'úžasných' nástrojů Microsoftu na opravu OS, jejich 'konzoli pro zotavení'. Konzole dokonce našla moje čerstvé Windowsy. Použil jsem příkazu 'fixboot' na opravu bootsektoru oddílu a poté i 'fixmbr' na opravu hlavního spouštěcího záznamu a snad i přepsání vadné CHS hodnoty. Kdepak, ani tyhle nástroje nepomohly. Jako obvykle, microsoftí funkce obnovení ze zálohy a záchrana systému fungují jenom do okamžiku, než je začnu opravdu potřebovat...
Pořádně zformátovat disk šlo až partitionmagicem z DOSu. Pak už šlo Windows nainstalovat a spustit. Konečně.
Radši jsem už ale neinstaloval Fedoru, protože jsem (správně) předpokládal, že by se celá anabáze znovu opakovala... na Internetu jsem nakonec našel co jsem hledal: Na Bugzille to v bugu 115980 podrobně vysvětlují a nejen tam; zjišťuji že jsem nebyl sám kdo měl takovéto problémy...
Řešení je prostě změnit v BIOSu adresování sektorů z Auto na to, co Windowsy použily při své instalaci, tedy na LBA nebo Large. Pak už se Windowsům ohlásí BIOS, který bude souhlasit s naformátováním oddílů a Windowsy se spustí. Dobrou noc.