Re: Usuwanie sektora rozruchowego

Autor: Michal Kawecki <kkwinto_at_o2.px>
Data: Thu 12 Jun 2008 - 09:28:08 MET DST
Message-ID: <r30292ozibxg$.dlg@kwinto.prv>
Content-Type: text/plain; charset="iso-8859-2"

Dnia Thu, 12 Jun 2008 08:21:24 +0200, Wojciech "Spook" Sura napisał(a):

> Michal Kawecki wrote:
>>> Moim problemem nie jest przenumerowanie kanałów dysków tylko
>>> usunięcie danych dotyczących bootowania z MBR dysku.
>>
>> Twoim problemem jest to co napisałem. Ale skoro wolisz zaklinać
>> rzeczywistość, to miłej zabawy.
>
> Ja nie chcę zaklinać rzeczywistości. Wygląda natomiast na to, że się bardzo
> paskudnie nie rozumiemy: półtora miesiąca temu miałem zainstalowanego XPka,
> Vistę i Mandrivę, miałem podłączony ten dysk 250 i wszystko działało
> poprawnie.

Może miałeś wówczas wszystkie kody i pliki startowe zapisane na tym
urządzeniu, które BIOS uważał za bootujące. Zauważ, że bootmanagery o
których mówimy (XP, Visty, GRUB), potrafią uruchamiać system także z
innego fizycznego napędu, jeśli tylko podstawimy im właściwe ścieżki lub
chociaż obraz sektora MBR z innego napędu celem załadowania zapisanego w
nim, innego bootmanagera.
 
>> BIOS czyta sektor MBR z napędu ustawionego w nim jako urządzenie
>> bootujące i uruchamia znajdujący się tam prosty programik.
>
> Zgaduję, że jeśli nie znajdzie go na pierwszym dysku twardym, to szuka na
> kolejnym aż do skutku (albo do wyświetlenia informacji, że brakuje
> bootowalnego dysku), prawda? W BIOSie nie mam możliwości ustalenia, który
> dysk twardy jest bootowalny, tylko "Hard disk".

W sumie to już ściśle zależy od algorytmu zaimplementowanego w BIOS-ie.
Z reguły szuka on kolejno najpierw na napędzie ustawionym jako
bootujący, a potem od razu na następnych zdefiniowanych urządzeniach
(nośniki wymienne, LAN etc.), pomijając szukanie na pozostałych dyskach
twardych.

>> Tenże
>> programik odczytuje bootsektor partycji zaznaczonej jako aktywna z
>
> Proszę o doprecyzowanie, co oznacza "aktywna". Jeśli to samo, co pod Windows
> XP ("Ustaw partycję jako aktywną"), to mój problem polega na tym, że mam
> dwie różne partycje aktywne na dwóch różnych [fizycznie] dyskach - z której
> zatem korzysta BIOS? Jeśli nie chodzi o to samo, to już nie wiem o co chodzi
> :)

Każdy napęd może mieć jedną ze swoich partycji ustawioną jako aktywną.
To chyba logiczne - traktuj dysk twardy z partycjami jako samodzielną
jednostkę, która po przełożeniu do innej maszyny musi umieć wystartować
system.
 
>> napędu wskazanego przez BIOS jako bootujący i uruchamia znajdujący
>> się w nim loader systemu operacyjnego. Tenże loader wyświetla menu
>> startowe Windows, a po podjęciu decyzji przez użytkownika co
>> uruchamiać, ładuje pliki systemowe wybranego systemu z uprzednio
>> zdefiniowanej ścieżki i przekazuje im kontrolę nad dalszym jego
>> uruchamianiem.
>
> Jasne.
>
>> Nie ma tu miejsca na żadne magiczne sztuczki uprawniane przez
>> instalatora Visty ani też przez Ghosta.
>
> Nie napisałem, że Ghost uprawia magiczne sztuczki. Po prostu wygląda na to,
> że podczas odtwarzania partycji z Vistą odtworzył również bootsektor albo
> MBR dysku na którym znajduje się partycja z Vistą - i dlatego wszystko
> zaczęło działać w miarę poprawnie.

To znaczy, że BIOS dalej czyta z nieprawidłowego napędu. Różnica jest
taka, że teraz programik który stamtąd jest ładowany do pamięci w jakiś
sposób znajduje sobie swoje środowisko startowe na innych napędach.
Jeżeli szuka go na przykład na napędzie x, to Ghost pewnie pomógł mu
zapisując coś do MBR na tymże napędzie. Innymi słowy, proponuję po
prostu przejrzeć jakimś hexedytorem zawartość MBR na każdym z dysków
sprawdzając istniejące kody startowe, obejrzeć ich tabele partycji,
zaznaczyć która partycja gdzie jest aktywna, i rozpisać sobie łańcuszek
prowadzący do uruchomienia systemu. Można sobie pomóc zapisując kolejno
w MBR-ach dysków jakieś inne kody startowe potrafiące się komunikować z
użytkownikiem (np. Ranish, Lilo, cokolwiek co wyświetla informację o
sobie na ekranie) i w ten sposób kolejno dochodzić ogniw łańcuszka.

Ale tak jak napisałem na początku, źródło problemu IMO tkwi w źle
napisanym BIOS-ie.

>> Pierwszy programik odtwarzasz poleceniem fixmbr, drugi - fixboot (XP)
>> lub bcdedit (Vista). GRUB może zostać zainstalowany i tu, i tam,
>> zależnie od potrzeb i konceptu.
>
> W jaki sposób pod Vistą wskazać, na której partycji chcę odtworzyć
> bootloader? Używałem narzędzia bootrec, ma ono jednak bardzo ograniczone
> opcje.

Zrobisz to przy pomocy systemowego polecenia bcdedit. Doradzam jednak
inny program, prostszy w obsłudze - EasyBCD. Można nim zmienić wszystkie
ustawienia bootmanagera Visty oraz XP, w tym także ich położenie.

Pamiętaj tylko, że problem z którym walczysz najpewniej dotyczy MBR
dysku, a nie windowsowego bootmanagera vel loadera systemu, który
znajduje się gdzie indziej.
 
>> Jak z tego widać, to czy usuniesz czy też pozostawisz dane bootowania
>> w MBR jakiegoś napędu nie ma zupełnie nic wspólnego z decyzjami
>> podejmowanymi przez BIOS.
>
> No zaraz! Jeśli wywalę dane bootowania z pierwszego dysku jaki znajdzie
> BIOS, to będzie on ich szukał na kolejnym [dysku fizycznym]. Jeśli
> pozostawię, to będzie czytał właśnie z niego - popraw mnie, proszę, jeśli
> się mylę.

Żaden z BIOS-ów z którymi miałem styczność tak nie robił. Jeśli w MBR
wskazanego dysku nie było prawidłowego kodu startowego, i nie było też
innych zdefiniowanych urządzeń startowych, to po prostu wyświetlany był
komunikat "non-system disk or disk error".
http://www.duxcw.com/faq/win/nosys.htm

-- 
M.   [Windows - Shell/User MVP]
/odpowiadając na priv zmień px na pl/
https://mvp.support.microsoft.com/profile/Michal.Kawecki
Received on Thu Jun 12 09:35:04 2008

To archiwum zostało wygenerowane przez hypermail 2.1.8 : Thu 12 Jun 2008 - 09:42:01 MET DST