Czym jest LinuxBios?
Linux umieszczony w kości BIOS'u.
LinuxBIOS zastępuje normalny BIOS w komputerach PC, Alpha i innych.
Umieszcza się go w specjalnych kościach Disk-on-Chip, które wkłada się
w miejsce zwykłej kości BIOS. Linux instalowany w kości zawiera jądro
ze specjalnymi patchami.
Linux, który potrafi bootować komputer.
Oprócz lekko zmienionego linuxowego jądra LinuxBIOS zawiera
dodatkowy kod konfigurujący sprzęt. Jest tam ok. 500 lini asemblera i
ok. 5000 lini C. Kod ten inicjalizuje sprzęt, aby Linux mógł przejąć
kontrolę.
Początek
Do czego potrzebny jest LinuxBIOS?
Po co powstał LinuxBIOS?
Pomysł narodził się w Los Alamos National Laboratories. Są tam
rozwiajane nowe technologie. W LANL powstała broń atomowa. Do badań
potrzebna jest olbrzymia moc obliczeniowa, którą dostarczają
superkomputery lub komputery węzłowe(ang. cluster nodes). Klastry
są to komputery, na ogół bez klawiatury, myszy a nawet dysku, które
połączone w sieć dostarczają bardzo dużą moc obliczeniową. W LANL
występują nawet 1024-komputerowe klastry. Komputery węzłowe ze względu
na cenę są dość często zwykłymi pecetami. Niestety oryginalne BIOS'y
zawierają wiele błędów. Aby zainstalować nowy BIOS albo nawet zmienić
ustawienia w starym trzeba chodzić z monitorem i klawiaturą od klastra
do klastra. Zajmuje to bardzo wiele czasu.
Zmniejsza koszty serwisowania komputerów węzłowych (ang. cluster
nodes).
BIOS do bootowania systemu używa urządzeń, na których nie można
polegać: dysków twardych, stacji dyskietek itp. Ponadto BIOS nie
obsługuje niestandardowych urządzeń, utrudniając pracę eksperymentalną.
LinuxBIOS umożliwia bootowanie przez sieć, dzięki czemu klaster może
składać się tylko z procesora, płyty głównej i pamięci. Przez sieć
można zmienić ustawienia BIOS'a, a nawet zainstalować nową wersję
LinuxBIOS'a.
Zmniejsza czas bootowania.
Dzięki pominięciu jednego kroku, czas bootowania skraca się nawet do
trzech sekund.
Początek
Jak działa LinuxBIOS?
Przejście w tryb chroniony (ang. protected mode).
Zajmuje 17 instrukcji asemblera. Po koleji: skacze do 0xffff0 -
początek BIOS'a. Wyłącza przerwania, ustawia rejestry segmentów kodu i
danych na odpowiednie wartości. Ładuje wskaźnik Globalnej Tablicy
Deskryptorów. Włącza ochronę pamięci. Dokonuje ostatecznych ustawień
trybu chronionego.
Po tych 17 instrucjakch jesteśmy w trybie chronionym, możemy adresować
4 GB pamięci, i działamy jako Pentium a nie 8086.
Konfiguracja DRAM'u.
Najtrudniejsza część konfiguracji. Nie dysponujemy w tym miejscu żadną
pamięcią, więc kod nadal musi być w asemblerze. Zależy dość mocno od
płyty głównej. Kod ma od 79 do 280 lini.
Przejście do C.
Reszta LinuxBIOS'a jest napisana w C, więc trzeba ustawić stos i
wywołać funkcję, ustawiającą resztę sprzętu.
Konfiguracja płyty głównej.
Trzeba w podstawowym stopniu skonfigurować płytę główną. Linux
przed kompilacją jest konfigurowany na danym sprzęcie, dzięki czemu w
dużym stopniu sam może skonfigurować płytę główną. Pewne rzeczy muszą
jednak zostać zrobione:
- włączenie cache'owania, bez tego jądro będzie się rozpakowywać
kilka
minut
- włączenie pamięci FLASH
- zresetowanie stanu klawiatury
- początek inicjalizacji szyny PCI(resztę zrobi Linux)
Inicjalizacja płyty głównej zajmuje ok 330 lini kodu w C.
Rozpakowanie jądra.
Jest to standardowa procedura. Kod w dużej mierze pochodzi z
jądra Linuxa. Potrzebne są jednak drobne zmiany.
Skok do jądra.
Skaczemy bezpośrednio do początku kodu jądra. W normalnej sytuacji
skacze się najpierw do funkcji rozpakowującej dalszą część jądra. My
mamy już to zasobą, więc skaczemy od razu do funkcji startup_32.
Początek
Nowe możliwości.
Kontrola procesu bootowania.
Bootowanie przez sieć.
Klater może połączyć się z demonem DHCP na innym komputerze, a tamten
może nakazać bootowanie za pomocą LOBOS innego jądra Linuxa.
Bootowanie bezdyskietkowe klastrów(komputerów węzłowych).
Nie trzeba używać żadnych ruchomych urządzeń (CD-ROM, dyskietki). Można
przez sieć kontrolować proces bootowania. Dzięki temu wiemy co się
popsuło.
Serwisowanie klastrów.
Możliwa jest nie tylko zmiana ustawień na wszystkich komputerach w
sieci, ale nawet zdalna zmiana jądra na inne.
Początek
Instalacja LinuxBIOS'a.
Przygotowania.
- Trzeba sprawdzic, czy LinuxBIOS obsluguje naszą płytę główną.
Przede wszystkim musi mieć wyjmowalną kość BIOS.
- Zaopatrzyć się w Disk-on-Chip
Disk-on-Chip to kości pamięci, które zachowują się jak małe dyski
twarde. Mogą zawierać standardowego Linuxa. LinuxBIOS używa DoC do
przechowywania kodu bootującego i opcjonalnie system plików /root.
Możliwe jest stworzenie pełnowartościowej maszyny bez dysku twardego.
- Wskazane jest posiadanie Zero Insertion Force.
ZIF jest to gniazdo na nowy BIOS lub DoC. Ułatwia ono wymianę jednej
kości na drugą. Proces instalacji wymaga zamiany kości z włączonym
komputerem.
Pozostałe czynności:
- Instalacja Linuxa z obsługą kości DoC na docelowej maszynie.
- Zaopatrzyć się w kod źródłowy LinuxBIOS'a.
- Nałożyć odpowiednie łaty na jądro i skompilować je.
- Skonfigurować dla naszej płyty głównej i zbudować kod do
bootowania LinuxBIOS'a.
- Zaopatrzyć się w Memory Technology Devices i zbudować
narzędzie
"erase".
- Wyjąć stary BIOS z gniazda (z włączonym komputerem) i włożyć
DoC
w jego miejsce.
- Nagrać obraz LinuxBIOS'a, zawierający kod boot'ujący i jądro,
na
DoC.
- Wcisnąć Reset, aby wystartować z nowym LinuxBIOS'em.
Dokładny
opis procesu instalacji.
Powrót do strony głównej prezentacji