vermin.eu.org

Specjalista IT na tru^Hopie

Entries Comments



Category: boot


grub i numeracja dysków [problem]

3 September, 2006 (08:03) | boot, debian(ized), linux | By: vermin

Mam na dysku laptopa kilka systemów - ze 3 XPki (każdy z innej domeny), Vistę i oczywiśce (last but not least) - Debiana. Miałem tych systemów o dwa więcej - wszystko było ładnie, wszystko było poustawiane. Wstawał boot loader visty z którego wybierałem starszego windowsa , a potem opcja linux i odpalał mi się grub. (Tak - mam 3 boot loadery.) Problem jednak z tym, że ten boot manager po porządkach na dysku zaczął mieć grobowe problemy.

Otóż po wyrzuceniu jednego ze zbędnych systemów na dysku zostało mi nieprzydzielone do niczego miejsce (reserved for future use). Niby żaden problem, ale dla GRUBa jednak jest. Otóż partycje linuxa znajdują się ZA tym wolnym miejscem. Oznacza to, że linux widzi patycję /boot jako /dev/sda9. Problem jest w tym, że dla GRUBa ta sama partycja oznaczana jest jako (hd0,8). No i teraz nie mogę tak ściągnąć boot sectora, żeby automatycznie mi się załadowało boot menu. Jeśli ściągnę tak jak powinienem, z /dev/sda9, to on po załadowaniu się się widzi… 10, czyli /. Jeśli ściągnę z /dev/sda8 - to nic się nie stanie, bo tam jest swap.

Nie mogę w żaden sposób, nie zmieniając kolejności partycji powiedzieć mu jak ma się ładować, nie pisząc ręcznie komend. Oczywiście, wystarczyłoby to wolne miejsce oznaczyć jako partycję i grubowi zacznie się wszystko zgadzać, niemniej to nie jest rozwiązanie na miarę geek’a, nieprawdaż? Any hints?

podział dysku na partycje

4 April, 2006 (13:59) | boot, debian(ized), linux | By: vermin

Temat bootloadera już został z GRUBsza omówiony, ale warto wspomnieć o kroku, który zazwyczaj robi się wcześniej - czyli o podziale na partycje. W zasadzie, jak już wspomniałem w jednej z poprzednich wypowiedzi, partycja boot powinna być utworzona osobno. Taka instalacja w zasadzie sprawdzi się jako instalacja na komputer z jednym użytkownikiem przy jednym dysku. Już posiadając dwa dyski warto zastanowić się gdzie podpiąć drugi z nich (poza oczywistym punktem montowania w /mnt), żeby struktura systemu była przejrzysta a jednocześnie posiadane zasoby były w pełni wykorzystywane. Nawet wtedy warto jednak wydzielić pewne partycje, mogące w wypadku udanego wejścia na system, pomóc w eskalacji przywilejów lub też, ze względu na rodzaj przechowywanych danych zwiększyć wydajność. Szczególnie jednak warto przemyśleć to w sytuacji stawiania serwera, który chodzi 24/7 i w przypadku którego zmiany nie są tak proste jak w wypadku stacji roboczej.

W Debianie warto wyróżnić następujące partycje:
/tmp, zawierający pliki i katalogi tymczasowe,
/usr, zawierający aplikacje użytkowe,
/home, zawierający katalogi domowe użytkowników systemowych, a także kilku innych (by default samba, squid, …)
/boot (o której już wspominałem)
/var, ale w wypadku tej partycji warto zejść do poziomu szczegółów:
/var/mail, przechowujący pocztę, jeśli nie jest przechowywana w bazie danych,
/var/lib, przechowujący dane programów (chociaż nie wiedzieć czemu niektóre z nich potrafią znaleźć się w /var/cache/…)
/var/log, zawierający domyślnie logi systemu, daemonów, etc.
/var/backup, zawierający i będący domyślną lokalizacją kopii bezpieczeństwa,
/var/cache, zawierający pliki tymczasowe, będące w obróbce przez działający proces, (chociaż tu także znajdują się wszystkie pliki ściągane przez apt’a - w związku z czym katalog warto czyścić raz na jakiś czas, bo potrafi mocno puchnąć…).
W szczególnych wypadkach, można odwołać się do katalogu /opt, do którego powinny instalowane aplikacje nie mieszczące się wprost w polityce działania systemu lub też instalowane w kontekście per user a nie per system. Ponadto warto zainteresować się dyskożernymi aplikacjami, takimi jak chociażby squid, (który ma swoje opisy czasów dostępu) czy też bazy danych (store i logi). Dla nich warto wydzielić oddzielne partycje ze względu na specyficzne parametry montowania albo też możliwość rozbudowy macierzy o kolejne dyski w miarę wzrastającego zapotrzebowania na pamięć dyskową.
Po tych wszystkich operacjach w roocie (/) pozostanie już tylko /bin, /sbin, /lib na które nie jest potrzebne zbyt wiele miejsca - około 100 MB zazwyczaj powinno wystarczyć.

Warto przyjrzeć się partycji swap - w szczególności, jeśli posiadamy kilka dysków. Warto ją rozmieścić nie tylko na kilku dyskach (no, chyba, że mamy macierz z paskowaniem, np. raid 0), ale także zawrzeć go w tej części dysku, gdzie dane czytane są szybciej - czyli dalej od osi dysku (gdzie to jest to oczywiste dla dysków jednotalerzowych), co wynika z gęstości upakowania sektórów w różnych strefach dysku. Rozmiar partycji swap zazwyczaj przyjmuje się jako 1,5 - 2 razy wielkość pamięci fizycznej, chociaż w szczególnych przypadkach, może przydać się sporo więcej - ale admini takich aplikacji zazwyczaj swoje zapotrzebowania zgłaszają wcześniej…

Jak zmierzyć przewidywaną objętość partycji, tam, gdzie nie możemy sensownie estymować wykorzystania? Cóż - najlepsza metoda to metoda empiryczna. Uruchomić instalację, włączyć poziom komunikatów na krytyczny, żeby było szybko, zainstalować wymagane pakiety, (najlepiej z pewnym nadmiarem), a następnie du -hs, niczym stara cyganka, prawdę powie.

O parametrach montowania i samym montowaniu partycji - wkrótce.

bootowanie linuxa z nt loadera

2 November, 2005 (13:58) | boot, debian(ized), linux | By: vermin

Na stacji roboczej na której rządzą windowsy i to one są tam zazwyczaj przeinstalowywane postanowiłem w ramach alternatywy zainstalować system debiano-podobny, czyli ubuntu breezy badger z października 2005. Ponieważ jak zazwyczaj to bywa przy reinstalacjach Windowsa nadpisuje się MBR (i to niekoniecznie za pomocą fixmbr), więc musiałbym cały czas odtwarzać pierwotną zawartość sektora z grubem. Wolałem więc skorzystać z możliwości NT Loader’a i spod niego uruchamiać linuxa.
Do tego potrzebny był mi sektor startowy partycji, na której podczas instalacji zainstalowałem grub’a, czyli jakieś /dev/hdax. Oczywiście w przypadku podziału dysku na / oraz /boot to właśnie ta ostatnia jest interesująca. Dlaczego był mi potrzebny? Ponieważ 512 bajtowy master boot record ma w sobie przede wszystkim 446 bajtowy programik bootstrap pozwalający na uruchomienie właściwego boot loadera. Dzięki temu uruchomienie spod NT Loadera bootstrapu linuxowego powoduje uruchomienie grub’a i możliwość bootowania linuxa. Co ciekawe, możemy ponownie wrócić do bootowania Windowsa, jeśli zmienimy plany.
Jak zdobyć te upragnione 512 bajtów? Najprościej użyć jakiejś dystybucji live albo trybu naprawczego instalatora. Po zbootowaniu systemu wystarczy użyć dd if=/dev/hdax of=plik.bin count=1 bs=512. W ten sposób dostaniemy 512 bajtowy plik.bin zawierający zawartość MBR. Żeby sprawdzić, czy plik jest poprawny możemy go obejrzeć hexdumpem i sprawdzić, czy ostatnie dwa bajty zawierają sygnaturę 0×55AA.
Teraz pozostaje już tylko przegrać plik.bin na partycję windowsową a w ukrytym, systemowym pliku %SYSTEMDRIVE%\boot.ini umieścić linię x:\plik.bin=”Linux”.
Warto dodać, że niestety każda zmiana w grubie (np. dodanie nowego jądra), wymaga utworzenia nowego plik.bin
A już na sam koniec wspomnę tylko, że dzięki dd można utworzyć backup zwykłego sektora startowego i w razie potrzeby, zamieniając wartościami wejście z wyjściem (if i of), odtworzyć uszkodzony boot sector. A także backup dysku, a także…

upiększając gruba

29 October, 2005 (15:06) | boot, debian(ized) | By: vermin

Grub (GRand Unified Bootloader) to przemiły boot manager, mający tyle opcji w porównaniu z lilo, że przydałby się na jego temat oddzielny artykuł, (który może popełnię kiedyś), jednak standardowo jest on dość brzydki. Na szczęście istnieje możliwość upiększenia tego potworka poprzez dodanie grafik.
Przede wszystkim warto zainstalować zestaw teł do gruba (pakiet grub-splashimages) albo stworzyć samemu grafiki o wymiarach 640×480, 14 kolorach, w formacie xpm (XPixMap). Jeśli nie możemy zapisać tego obrazka w formacie xpm, to narzędzie convert z pakietu imagemagick poradzi sobie z tym znakomicie. Stworzone tło w debianie wrzucamy do /boot/grub/splashimages/ (a przynajmniej tam rozpakowuje się paczka zawierające debianowe tła).
Pozostaje nam juz tylko skonfigurować gruba, tak, aby wyświetlał przy starcie jeden z obrazków - wystarczy dodać do pliku /boot/grub/grub.conf odpowiednią linijkę, na przykład:

splashimage=(hdx,y)/grub/splashimages/gentleblue.xpm.gz

x to numer dysku a y numer partycji. Odpowiednie wartości możemy znaleźć wykonując polecenie fdisk -l, (pamiętając, że dyski liczymy od 0 a partycje od 1) lub też sprawdzając w grub.conf właśnie, w sekcji poświęconej startowi naszego systemu :)

Dlaczego linuxa powinno się instalować na kilku partycjach, czyli o problemach z GRUB

17 October, 2005 (12:38) | boot, linux | By: vermin

Każdy linux podczas swojego procesu instalacji ma moment, kiedy pyta się o wybór partycji, na której zamierzamy go umieścić. Ponieważ zazwyczaj na komputerze rezyduje kilka systemów (linuxów, windowsów czy innych *BSD), to trzeba ponadto (w którymś z następnych etapów instalacji), wyposażyć się w jakiegoś boot managera. Przy okazji nie polecam korzystania z różnorodnych wizardów dokonujących autopartycjonowania - niestety taki wizard potrafi skasować wszystkie już istniejące na komputerze partycje…
Standardowa struktura katalogów (vide man hier) zawiera określoną strukturę - /usr zawierający aplikacje, /home gdzie trzymane są dane użytkowników, /var gdzie trzymane są dane programów oraz logi, etc… (gdzie trzymane są pliki konfiguracyjne ;-) ) Oczywiście ciężko podczas instalacji stwierdzić ile to wszystko zajmie miejsca, więc można wybrać najprostszą opcję - wskazać partycję, usadowić tam katalog główny “/” i voila, wszystkie podkatalogi umieszczą się pod spodem, struktura będzie jak najbardziej dynamiczna, bo określona ilość wolnego miejsca będzie przyznana pomiędzy wszystkie pliki… W czym więc problem?
No i okazuje się, że problem potrafi się pojawić. Niestety nawet nowoczesne systemy plików, z journalingiem, danymi nadmiarowymi i innymi bajerami potrafią podczas któregoś tam twardego wyłączenia ‘nie trafić’ z danymi, lub też je zagubić. Taka właśnie sytuacja mnie dotknęła ostatnio, kiedy dość głęboko tuningowałem system, wrzucając nowe moduły z różnymi parametrami, co powodowało zamrożenie systemu dające możliwość jedynie twardego restartu systemu. Pierwszym popełnionym błędem było nie poprawianie systemu plików po każdym padzie (fsck nie startował automatycznie). Kilka padów systemu i coś zaczęło się sypać z tuningowanymi modułami. Natychmiast przywróciłem pierwotne wersje systemu (moduły, etc), zrobiłem restart… i mój boot manager grub powiedział mi bye, wieszając się w fazie 1.5 i plując numerami błędów. W głowie połączyły się wszystkie przesłanki i już wiedziałem. Grub nie mógł wczytać danych z pliku /boot/grub/grub.conf. Oczywiście procedura naprawcza jest prosta - albo odpalić jakiś system potrafiący naprawić partycję linuxową, albo odtworzyć mbr odpalić dowolny inny system.
I tu niestety nauczka dla posiadaczy laptopów lub nowoczesnych dysków - WXP SP1 nie widzi dysków SATA. Zresztą nie wiem, czy WXP SP2 je widzi, nie testowałem. Z kontrolerami ICH6 problemy mają jądra linuxowe sprzed 2.6.11.10… A i te nie wszystkie działały poprawnie. W ten sposób ilość opcji zdecydowanie mi się zawężyła - na szczęście udało mi się znaleźć knoppixa u jednego ze znajomych3.8.1, odpalić go… i zobaczyć, że system plików padł całkowicie :(
Przechodząc do wniosków - gdybym miał partycję /boot zainstalowaną osobno (i montowaną najlepiej z opcją ro), to grub nie miałby problemu ze startem komputera (i oszczędzeniem mi czasu, bo knoppixa miałem na dysku windows…). Gdybym miał np. /etc na osobnej partycji, to konfiguracja pewnie by mi została… albo dane… albo inne ustawienia… A tak, nie backupowany (bo jeszcze nie dopieszczony) system padł i spowodował kolejne żmudne godziny stawiania i konfiguracji :|