Blog (29)
Komentarze (1k)
Recenzje (0)

Zabawy z MBR - Instalacja Windows Server 2012 z Linuksa, na serwerze bez dostępu do BIOS'u, napędu CD ani USB

@okokokZabawy z MBR - Instalacja Windows Server 2012 z Linuksa, na serwerze bez dostępu do BIOS'u, napędu CD ani USB13.12.2013 20:37

Kolega załapał się ostatnio na testy serwerów dedykowanych z nowym panele administracyjnym w homecloud.pl. Dzięki temu ja również miałem okazje zobaczyć ten panel i pobawić się serwerem :)

Są to serwery firmy Supermicro, ale panel jest wykonany przez home i wyszło im to świetnie! Home zawarło w nim kilka fajnych funkcji, takich jak uruchomienie serwera z obrazu ISO umieszczonego na zewnętrznym serwerze HTTP lub wybranego z listy preinstalowanych. Dostępny jest też bardzo fajny obraz rescue bazujący na Debianie, dzięki czemu, w razie awarii mamy pełny dostęp do dysku serwera i możemy naprawić znajdujący się na nim system.

Standardowy panel Supermicro też pozwala uruchomić serwer z obrazu ISO, jednak przekierowanie realizowane jest tylko i wyłącznie z komputera na którym uruchomiona jest konsola. W przypadku wolnego łącza, idzie to jak krew z nosa i powoduje (zbędne?) wkurzanie się na Jave w której napisana jest konsola.

Home rozwiązało to przy pomocy serwera PXE - serwer (klienta) podczas uruchamiania się odpytuje dostępne w sieci serwery DHCP o swoją konfiguracje. Serwer DHCP w odpowiedzi przesyła adres serwera TFTP oraz nazwę pliku znajdującego się na tym serwerze. Dedyk (serwer klienta) pobiera z tego serwera (home) plik (w przypadku homecloud jest to gPXE) a następnie go uruchamia. gPXE to kolejny agent PXE, ale ma on więcej funkcji niż ten wgrany na stałe w ROM karty sieciowej - tutaj najważniejsza jest obsługa HTTP. Dalej już właśnie po HTTP pobierany jest bootloader który pozwala na start z ISO czyli GRUB, kolejno właściwy obraz ISO i dopiero uruchamiany jest system operacyjny.

Niestety z tym rozwiązaniem jest jeden problem - po zbootowaniu nie jest możliwy dostęp do CD-ROMU, a niektóre systemy tego wymagają. Problem nie występuje z obrazami typu netinstall, do korzystania z których namawia nas panel, jednak niektóre systemy - tutaj Windows Server nie posiadają obrazów tego typu i wysypują się zaraz po starcie :(

W tym wpisie przedstawię jak udało mi się na tym serwerze zainstalować Windows Server 2012 korzystając z Debiana 7 oraz GRUB'a. Dostęp do BIOS'u serwera był zablokowany na hasło. Podłączenie napędu CD, albo pendrive także nie wchodziło w grę bez interwencji kogoś w serwerowni.

***

1. Zainstalowałem na serwerze Debiana 7 korzystając z dostępnego w panelu instalatora. System został zainstalowany tylko na pierwszym dysku, bez konfiguracji RAID'u.

2. Po instalacji wyzerowałem MBR na drugim dysku:

dd if=/dev/zero of=/dev/sdb bs=512 count=1

3. Utworzyłem na drugim dysku 1 partycje o rozmiarze 1GB i następnie sformatowałem ją w systemie plików NTFS (pod Debianem konieczna jest do tego instalacja pakietu ntfs-3g).

apt-get update
apt-get install ntfs-3g
cfdisk /dev/sdb
mkfs -t ntfs /dev/sdb1

4. Przymontowałem uprzednio pobrany obraz ISO Windows Server 2012 oraz partycje /dev/sdb1.

mkdir /mnt/cd /mnt/sdb1
mount -t udf /root/plyta.iso /mnt/cd
mount -r ntfs-3g /dev/sdb1 /mnt/sdb1

Płyty instalacyjne nowych Windowsów są sformatowane w nowszym formacie - UDF - ISO 13346, a nie typowym ISO 9960. Po przymontowaniu płyty w standardowy sposób (mount -t iso9660) zobaczymy tylko 1 plik z informacją nt. formatu płyty.

5. Przekopiowałem pliki z obrazu płyty na partycje sdb1:

cp -rv /mnt/cd/* /mnt/sdb1/

***

MBR to kod znajdujący się na samym początku dysku twardego, jeszcze przed partycjami, a dokładniej w pierwszym sektorze. Składa z 512 bajtów i określa rozmiar i pierwsze sektory 4 partycji podstawowych (tablica partycji znajdująca się na końcu) oraz zawiera kod rozruchowy (446 bajtów na samym początku). Kod rozruchowy wykonywany jest podczas startu komputera i to za jego pomocą ładowany jest system operacyjny.

VBR to kod znajdujący się na początku partycji. Również składa się z 512 bajtów. Pierwsza część NTFS VBR - 84 bajty, zawiera informacje specyficzne dla partycji - rozmiar sektora, ilość sektorów na klaster i ścieżkę, ilość głowic, sektorów, klastrów, identyfikator partycji itp. Po zmianie dokonanej w tej części NTFS VBR, partycja staje się niemożliwa do przymnotowania. W dalszej części znajduje się kod uruchamiający, podobny do tego z MBR.

Obecnie możliwe jest zawarcie kodu startowego w sektorze VBR partycji a następnie ustawienie dla tej partycji flagi boot (Windowsowe określenie to partycja aktywna), co spowoduje wykonywanie kodu z sektora VBR partycji podczas startu komputera. Wykorzystuje się to zamiast umieszczania kodu bezpośrednio w MBR.

Domyślnie po rekordzie VBR NTFS'a na partycji znajduje się jeszcze 14 wolnych sektorów. Właściwy system plików zaczyna się od 16 sektora. W tej wolnej części, jeśli partycja jest bootowalna, umieszcza się dalszą część kodu rozruchowego.

Tak właśnie jest z pendrive instalacyjnym Windowsa. Po skopiowaniu plików na pierwszą partycje pendrive z ustawioną flagą boot, uruchamia się program bootsect.exe znajdujący się na płycie, podając nazwę partycji na której ma być zapisany kod startowy. Na Linuksie nie jest to jednak możliwe, tak więc musiałem znaleźć inne wyjście.

Duuuuuużo więcej informacji nt. MBR'u, VBR'u i Assemblera można znaleźć na tej stronie: http://thestarman.pcministry.com/asm/mbr/index.html. Tutaj znajduje się opis rekordu VBR dla partycji NTFS: http://thestarman.pcministry.com/asm/mbr/NTFSBR.htm, a tutaj VBR wraz z kodem startowym dla Windows Vista: http://thestarman.pcministry.com/asm/mbr/VistaVBR.htm.

***

6. Na wszelki wypadek wykonałem kopię zapasową rekordu MBR dla drugiego dysku oraz VBR wraz z 14 kolejnymi pustymi sektorami dla pierwszej partycji tego dysku do plików w katalogu domowym:

dd if=/dev/sdb of=/root/mbr.bin bs=512 count=1
dd if=/dev/sdb1 of=/root/vbr.bin bs=512 count=15

7. Przy pomocy edytora heksadecymalnego dla Windowsa (HxD) wykonałem kopię sektora VBR oraz kolejnych sektorów w których znajdował się kod startowy z pendrive instalacyjnego Windowsa 8 do pliku i załadowałem go na serwer, a następnie nadpisałem tym plikiem sektor VBR i kolejne na partycji, ponownie nadpisałem konfigurację partycji znajdującą się w pierwszych 84 bajtach z kopii oryginalnego VBR (po poprzednim nadpisaniu została tam ta dla mojego pendrive) i sprawdziłem czy możliwe jest przymontowanie partycji:

dd if=/root/vbr_pendrive.bin of=/dev/sdb1 bs=512 count=15
dd if=/root/vbr.bin of=/dev/sdb1 bs=84 count=15
mount -t ntfs-3g /dev/sdb1 /mnt/sdb1 -- zadziałało :)

8. Teraz gdyby serwer nie miał założonego hasła na BIOS i ekran wyboru urządzeń (nie wiem jak to się dokładnie nazywa, chodzi mi o opcje boot device w trakcie startu komputera), możliwy byłby start komputera z tego dysku i instalacja systemu.

Musiałem więc dopisać do pliku konfiguracyjnego GRUB'a - Linuksowego bootloadera, odpowiednią opcje, tak aby mógł on uruchomić system z drugiego dysku.

Konfig GRUB'a w Debianie 7 znajduje się w /boot/grub/grub.cfg, jednak twórcy dystrybucji nie zalecają jego edycji i proponują dodawać nowe opcje do jakiegoś folderu w /etc a następnie skłądać to wszystkiego w grub.cfg przy pomocy jakiegoś polecenia. That's the proper way, ale ja po prostu dopisałem poniższy fragment do pliku, w sekcji 40_custom:

menuentry 'Instalator Windowsa' {
	set root='(hd1,msdos1)'
	chainloader +1
}

Dyski (w drugiej linijce) numerowane są od 0, więc hd1 to drugi dysk twardy, a hd0 to ten pierwszy na którym postawiłem Debiana. Partycje numerowane są już od 1, więc chodzi tutaj o pierwszą partycje drugiego dysku.

Po aktualizacji kernela pod Debianem, przestanie to, co prawda działać, ale było to i tak chwilowe rozwiązanie.

Pomocna była jeszcze zmiana czasu po jakim automatycznie wybierana jest pierwsza pozycja w menu (czyli Debian) i ładowany jest ten system. Domyślnie to 5 sekund. Odpowiada za to opcja:

set timeout=50 -- tutaj zamieniłem na 50 sekund

9. Po restarcie, na liście systemów w GRUB'ie znajdował się już odpowiedni wpis, ale nie mogłem się do niego dostać strzałkami. Serwery Supermicro mają z tym jakiś problem. Wygooglałem rozwiązanie polegające na zmianie ustawień konsoli w panelu Supermicro do którego nie miałem dostępu. Pomogło wywołanie z menu konsoli jViewer (której niestety home nie udało się unicestwić bo jest za bardzo powiązana ze sprzętem) polecenia: Options -> Keyboard Mouse Hotplug.

10. Dalej było już prosto - Windows zainstalował się jak z płyty.

(tak wiem że jest po polsku a tłumaczenie jest brzydkie, ale kolega wrzucił na serwer właśnie ten obraz)

11. Właśnie wtedy dotarło do mnie że wystarczyło nadpisać cały 2 dysk obrazem ISO:

dd if=/root/plyta.iso of=/dev/sdb

Jednak robiąc partycje instalacyjną prawidłowym sposobem dowiedziałem się czegoś na temat MBR i VBR więc i tak wrzucam ten wpis.

***

Do doebugowania bardzo pomocne było polecenie hd, dostępne domyślnie w Debianie. hd czyli hexdump wyświetla pliki i strumienie binarne w postaci heksadecymalnej i ASCII, podobnie jak typowe windowsowe hexedytory (choć to pewnie jest odwrotnie i hd był pierwszy).

Aby wyświetlić rekord MBR zapisany w pliku, a właściwie to jakikolwiek plik binarny w programie hd, wpisujemy:

hd /root/mbr_sdb.bin

A, żeby odczytać MBR bezpośrednio z dysku:

dd if=/dev/sdb bs=512 count=1 | hd
Szanowna Użytkowniczko! Szanowny Użytkowniku!
×
Aby dalej móc dostarczać coraz lepsze materiały redakcyjne i udostępniać coraz lepsze usługi, potrzebujemy zgody na dopasowanie treści marketingowych do Twojego zachowania. Twoje dane są u nas bezpieczne, a zgodę możesz wycofać w każdej chwili na podstronie polityka prywatności.

Kliknij "PRZECHODZĘ DO SERWISU" lub na symbol "X" w górnym rogu tej planszy, jeżeli zgadzasz się na przetwarzanie przez Wirtualną Polskę i naszych Zaufanych Partnerów Twoich danych osobowych, zbieranych w ramach korzystania przez Ciebie z usług, portali i serwisów internetowych Wirtualnej Polski (w tym danych zapisywanych w plikach cookies) w celach marketingowych realizowanych na zlecenie naszych Zaufanych Partnerów. Jeśli nie zgadzasz się na przetwarzanie Twoich danych osobowych skorzystaj z ustawień w polityce prywatności. Zgoda jest dobrowolna i możesz ją w dowolnym momencie wycofać zmieniając ustawienia w polityce prywatności (w której znajdziesz odpowiedzi na wszystkie pytania związane z przetwarzaniem Twoich danych osobowych).

Od 25 maja 2018 roku obowiązuje Rozporządzenie Parlamentu Europejskiego i Rady (UE) 2016/679 (określane jako "RODO"). W związku z tym chcielibyśmy poinformować o przetwarzaniu Twoich danych oraz zasadach, na jakich odbywa się to po dniu 25 maja 2018 roku.

Kto będzie administratorem Twoich danych?

Administratorami Twoich danych będzie Wirtualna Polska Media Spółka Akcyjna z siedzibą w Warszawie, oraz pozostałe spółki z grupy Wirtualna Polska, jak również nasi Zaufani Partnerzy, z którymi stale współpracujemy. Szczegółowe informacje dotyczące administratorów znajdują się w polityce prywatności.

O jakich danych mówimy?

Chodzi o dane osobowe, które są zbierane w ramach korzystania przez Ciebie z naszych usług, portali i serwisów internetowych udostępnianych przez Wirtualną Polskę, w tym zapisywanych w plikach cookies, które są instalowane na naszych stronach przez Wirtualną Polskę oraz naszych Zaufanych Partnerów.

Dlaczego chcemy przetwarzać Twoje dane?

Przetwarzamy je dostarczać coraz lepsze materiały redakcyjne, dopasować ich tematykę do Twoich zainteresowań, tworzyć portale i serwisy internetowe, z których będziesz korzystać z przyjemnością, zapewniać większe bezpieczeństwo usług, udoskonalać nasze usługi i maksymalnie dopasować je do Twoich zainteresowań, pokazywać reklamy dopasowane do Twoich potrzeb. Szczegółowe informacje dotyczące celów przetwarzania Twoich danych znajdują się w polityce prywatności.

Komu możemy przekazać dane?

Twoje dane możemy przekazywać podmiotom przetwarzającym je na nasze zlecenie oraz podmiotom uprawnionym do uzyskania danych na podstawie obowiązującego prawa – oczywiście tylko, gdy wystąpią z żądaniem w oparciu o stosowną podstawę prawną.

Jakie masz prawa w stosunku do Twoich danych?

Masz prawo żądania dostępu, sprostowania, usunięcia lub ograniczenia przetwarzania danych. Możesz wycofać zgodę na przetwarzanie, zgłosić sprzeciw oraz skorzystać z innych praw wymienionych szczegółowo w polityce prywatności.

Jakie są podstawy prawne przetwarzania Twoich danych?

Podstawą prawną przetwarzania Twoich danych w celu świadczenia usług jest niezbędność do wykonania umów o ich świadczenie (tymi umowami są zazwyczaj regulaminy). Podstawą prawną przetwarzania danych w celu pomiarów statystycznych i marketingu własnego administratorów jest tzw. uzasadniony interes administratora. Przetwarzanie Twoich danych w celach marketingowych realizowanych przez Wirtualną Polskę na zlecenie Zaufanych Partnerów i bezpośrednio przez Zaufanych Partnerów będzie odbywać się na podstawie Twojej dobrowolnej zgody.