{ }
menu zespół linki Logowanie
Stabilny hosting
BSDGuru zawdzięcza
firmie Datanet.pl
Hosting BSDGuru.org - DataNet.pl

Uruchamianie systemu

Proces uruchamiania systemu operacyjnego.

Wprowadzenie


Proces uruchamiania komputera oraz wgrywania systemu operacyjnego jest nazywany procesem bootstrap lub po prostu bootowaniem. Uruchamianie FreeBSD charakteryzuje się bardzo dużą elastycznością i konfigurowalnością. Pozwala na przykład wybrać, który system operacyjny chcemy uruchomić, jeśli mamy kilka. Umożliwia nawet wybór wersji tego samego systemu, lub zadecydowanie, które jądro systemu uruchomić.

Ten rozdział omawia szczegółowo opcje konfiguracji, a także sposoby personalizowania procesu uruchamiania systemu FreeBSD. Włącza się na to wszystko, co ma miejsce przed uruchomieniem jądra systemu, wykrywanie urządzeń, uruchomienie init(8). Jeśli nie jesteś do końca pewien kiedy to się dzieje, to wiedz, że gdy kolor tekstu zmienia się z jasnej bieli na szary.

Po przeczytaniu tego rozdziału, powinieneś wiedzieć:

  • Jakie występują oraz jak ze sobą współgrają elementy procesów uruchamiania FreeBSD.
  • Jakie opcje uruchamiania FreeBSD można ustawić.

Tylko x86 Ten rozdział opisuje tylko proces uruchamiania systemu FreeBSD pracujących na architekturach Intel x86.

Problem z uruchomieniem

Włączenie komputera i wystartowanie systemu operacyjnego ukazuje interesujący problem. Z definicji, komputer nie wie jak co zrobić, dopóki nie jest wystartowany system operacyjny. Włącza się w to oczywiście uruchamianie programów z dysku. Więc jeśli komputer nie może włączać programów z dysku bez systemu operacyjnego, a programy systemu operacyjnego są na dysku, jak system w ogóle startuje?

We wczesnych latach komputeryzacji, termin "bootstrap" był używany do określania mechanizmów uruchamiających system operacyjny. Termin ten, w drodze ewolucji, został skrócony do "booting".

Na sprzęcie typu x86, to właśnie BIOS ( Basic Input Output System - Podstawowy System Wejścia Wyjścia ) odpowiedzialny jest za uruchamianie systemu operacyjnego. Aby to zrobić, BIOS sprawdza MBR (Master Boot Record) dysków. BIOS jest umiejętny na tyle, że potrafi załadować i uruchomić zawartość MBR. Następnie, wystartowane przez MBR, uruchamiane są pozostałem mechanizmy startu systemu.

Jeśli dysponujesz tylko jednym systemem operacyjnym na Twoim dysku, standartowy MBR wystarczy. MBR szuka pierwszej uruchamialnej partycji na dysku, wtedy uruchamia kod zawarty na tej partycji, aby załadować zalążek systemu operacyjnego.

Jeśli masz kilka systemów operacyjnych na Swoich dyskach, możesz zainstalować inny MBR, taki który wyświetli listę dostępnych systemów operacyjnych, a następnie pozwoli dokonać pomiędzy nimi wyboru. FreeBSD może zostać zainstalowany właśnie z takim MBR. Dostarczyciele innych systemów operacyjnych często oferują alternatywne MBR.

Proces uruchamiania FreeBSD podzielony jest na 3 części. Pierwszą z nich jest uruchomienie MBR, który wie tyle, jak wprowadzić komputer w specyficzny stan i uruchomić kolejny, drugi etap uruchamiania. Ten kolejny etap zdolny jest zrobić troszkę więcej, przed uruchomieniem trzeciego etapu. Ostatni, trzeci etap ładowania systemu operacyjnego, zakańcza całą procedurę. Całe zadanie uruchamiania systemu podzielone jest na trzy części, ponieważ standarty komputerów osobistych nakładają ograniczenia na rozmiary programów uruchamialnych w części pierwszej oraz drugiej. Połączenie przez FreeBSD tych czynności pozwala uzyskać bardziej elastyczne wgrywanie systemu.

Gdy zostanie uruchomione jądro systemu, to rozpoczyna ono wykrywać urządzenia oraz próbuje je uruchomić. Gdy proces uruchamiania jądra jest już skończony, jądro przekazuje kontrolę procesowi init(8), który upewnia się, że dyski są w dobrym stanie. Następnie init(8) uruchamia konfigurację użytkownika, która montuje twarde dyski, ustawia konfigurację kart sieciowych, by móc komunikować się z siecią, następnie startuje generalnie wszystkie procesy które są uruchamiane przy starcie FreeBSD.

MBR oraz etapy startu I, II, III.

MBR, /boot/boot0


MBR FreeBSD jest umiejscowiony w /boot/boot0. To jest kopia prawdziwego MBR, ponieważ ten, musi znajdować się w specjalnej części dysku twardego, poza obszarem partycji FreeBSD.

boot0 jest bardzo prosty, ponieważ program rezydujący w MBR może mieć tylko 512 bajtów. Jeśli zainstalowałeś MBR z FreeBSD, masz kilka systemów operacyjnych, wówczas zobaczysz podobne ujęcie podczas uruchamiania systemu operacyjnego.

Przykład - boot0
F1 DOS
F2 FreeBSD
F3 Linux
F4 ???
F5 Drive 1

Default: F2 (domyślna opcja)

Niektóre systemy operacyjne znane są z tego, że nadpisują MBR. Systemem takim jest na przykład Windows 95. Jeśli takie wydarzenie ma miejsce, lub chcemy zamienić istniejący MBR na MBR FreeBSD, możemy użyć poniższej komendy.

# fdisk -B -b /boot/boot0 device

Gdzie device jest to dysk z którego uruchamiasz system, jak na przykład ad0 jest pierwszym dyskiem IDE, a ad2 pierwszym dyskiem IDE, na drugim kontrolerze. da0 jest pierwszym dyskiem SCSI itd.

Jeśli jesteś użytkownikiem Linuxa, wolisz używać LILO do kontrolowania procesu uruchamiania, możesz wyedytować plik
/etc/lilo.conf. Istnieje możliwość zadeklarowania "Pozostaw MBR bez zmian" ["Leave the MBR untouched"] podczas procesu instalacji systemu. Jeśli tak zadeklarowaliśmy, możemy uruchomić linuxa, na następnie wyedytować /etc/lilo.conf dodając:

other=/dev/hdXY
table=/dev/hdb
loader=/boot/chain.b
label=FreeBSD

Umożliwi to uruchamianie zarówno tak Linuxa, jak i FreeBSD przez LILO. W naszym przykładzie używamy XY, by określić numer napędu oraz partycji. Jeśli używasz napędu SCSI, zapewne będziesz chciał zmienić /dev/hdXY na /dev/sdXY, gdzie symbole XY mają takie samo znaczenie.

Opcja loader=/boot/chain.b może zostać pominięta, jeśli masz oba systemy operacyjne na tym samym napędzie. Można teraz uruchomić /sbin/lilo -v by zapisać zmiany, powinno być to weryfikowane z komunikatami wyświetlającymi się na ekranie.

Etap I, /boot/boot1, etap II, /boot/boot2


Rozmyślnie elementy I i II etapu są częściami tego samego programu, na tej samej części dysku. Ponieważ przestrzeń jest ograniczona, został podzielony na 2 części, ale będziesz je zawsze instalował razem.

Elementy I i II etapu można odnaleźć w boot-sektorze uruchamianej partycji, czyli tam, gdzie boot0 lub jakiekolwiek inne programy MBR oczekują, by znaleźć program, który będzie kontynuował proces uruchamiania. Pliki w katalogu /boot są jedynie kopiami tych prawdziwych, najdujących się poza partycjami FreeBSD.

boot1 jest bardzo prosty. Może być maksymalnie 512 bajtowego rozmiaru, a wie tylko o disklabel'u (etykiecie dysku, gdzie składowane są informacje dotyczące partycji) oraz jak odnaleźć i uruchomić boot2.

boot2 jest już bardziej wyrafinowany i potrafi zrozumieć system plików FreeBSD na tyle, by umieć znaleźć na nim odpowiednie pliki oraz wyświetlić menu do wyboru jądra systemu lub programu ładującego.

Podczas gdy program ładujący - loader, jest jeszcze bardziej rozbudowany i dostarcza łatwej do użycia konfiguracji uruchamiania systemu, boot2 zwykle uruchamia loadera, wcześniej bezpośrednio uruchamiając jądro.

   Przykład. boot2 zrzut ekranu
    >> FreeBSD/i386 BOOT
    Default: 0:ad(0,a)/kernel
    boot:

Jeśli kiedykolwiek będziesz potrzebował zastąpić boot1 i boo2, użyj disklabel(8).


FreeBSD# disklabel -B diskslice



Gdzie diskslice to dysk oraz partycja z której uruchamiasz system, przykładowo ad0s1 to pierwsza partycja, pierwszego dysku IDE.

Niebezpiecznie dedykowany tryb: Jeśli użyjesz tylko nazwy dysku, jak na przykład ad0, w programie disklabel, utworzysz niebezpiecznie dedykowany dysk, bez partycji. To jest zapewne nie to co chciałeś zrobić, więc upewnij się, sprawdź podwójnie składnię komendy disklabel(8), zanim naciśniesz Enter.

Etap III, /boot/loader.


Loader jest ostatnią częścią trójelementowego procesu uruchamiania. Jest on już zlokalizowany w systemie plików, zwykle w /boot/loader.

Program ładujący Loader jest postrzegany jako przyjazne dla użytkownika narzędzie, posiadające dużą ilość wbudowanych funkcji, wsparte przez wbudowany interpreter z dość złożoną składnią.

Działanie loadera.


Podczas inicjalizacji, loader będzie usiłował wykryć konsolę oraz dyski, aby dowiedzieć się z jakiego dysku odbywa się uruchamianie. Ustawi wtedy odpowiednie zmienne, następnie uruchamiany jest program interpretujący, gdzie rozpoznawane są już komendy użytkownika (pochodzące ze skryptów, bądź interaktywne).

Następnie loader czyta /boot/loader.rc, który domyślnie czyta
/boot/defaults/loader.conf, ustawiając poprawne domyślne ustawienia, następnie czyta /boot/loader.conf aby podmienić domyślne zmienne zmiennymi lokalnymi. loader.rc działa właśnie na tych zmiennych, ładując wyselekcjonowane moduły oraz jądro.

Wreszcie, w domyślnej konfiguracji, loader czeka 10 sekund na naciśnięcie klawisza. Następnie uruchamia jądro, jeśli żaden klawisz nie został naciśnięty. Jeśli czas odliczania zostanie przerwany, użytkownik zostanie zaznajomiony ze znakiem zachęty, gdzie można wydawać loaderowi proste w użyciu komendy. Można na przykład dostrajać zmienne, wyładować wszystkie załadowane moduły jądra, załadować moduły, w końcu uruchomić komputer, bądź uruchomić ponownie.

Komendy wbudowane w loadera


Poniżej najpowszechniej używane komendy loadera. Jeśli chciałbyś zobaczyć kompletną listę funkcji, proszę zobacz stronę man dot. loader(8).

autoboot sekundy

Zamierza uruchomić jądro w dany czas, o ile nie zostanie to przerwane. Wyświetla odliczanie. Domyślny czas to 10 sekund.

boot [-opcje] [nazwa jądra]

Niezwłocznie uruchamia jądro z danymi opcjami, jeśli takie są, z jądrem o danej nazwie, jeśli takie istnieje.

boot-conf

Idzie poprzez taką samą automatyczną konfigurację modułów bazując na zmiennych, jak to miało miejsce przy uruchamianiu. To ma sens jedynie, jeśli wcześniej zostanie użyta komenda unload. Następnie zmienia się zmienne, najczęściej jednak jądro.

© tłumaczenia Alex

mlodszy, czw., 24/04/2008 - 14:45