MILO HOWTO Autor: David A. Rusling david.rusling@reo.mts.dec.com v0.84, 6 Grudnia 1996 WWeerrssjjaa ppoollsskkaa:: LLeesszzeekk UUrrbbaańńsskkii ttyyggrryyss@@ffiiddoonneett..oorrgg..ppll v1.0, 24 Lipca 1998 Ten dokument opisuje Miniloader (Miniładowacz), program dla komputerów opartych na procesorze Alpha, który może być używany do inicjalizacji maszyny i ładowania Linuxa. Alpha Linux Miniloader (jest to jego pełna nazwa) jest też znany jako MILO. Dokument ten został napisany w stan­ dardzie ISO-8859-2. Oryginał tego dokumentu znajduje się pod adresem ftp://gatekeeper.dec.com/pub/Digital/Linux-Alpha/Miniloader/docs. ______________________________________________________________________ Table of Contents: 1. Wprowadzenie 1.1. Prawa autorskie 1.2. Nowe wersje tego dokumentu 2. Co to jest MILO? 3. Standardowe, pre-kompilowane obrazy MILO 4. Kompilacja MILO 5. Ładowanie MILO 5.1. Ładowanie MILO z firmware'u Windows NT ARC 5.2. Ładowanie MILO z ,,Evaluation Board Debug Monitor'' 5.3. Ładowanie MILO z ,,bezpiecznej dyskietki startowej'' 5.4. Ładowanie MILO z pamięci Flash 5.5. Ładowanie MILO z konsoli SRM 5.6. Informacje o płytach głównych 5.6.1. AXPPCI33 (NoName) 5.6.2. AlphaPC64 (Cabriolet) 5.6.3. EB66+ 5.6.4. EB64+/Aspen Alpine 5.6.5. Universal Desktop Box (Multia) 5.6.6. EB164 5.6.7. PC164 5.6.8. XL266 5.6.9. Platform2000 6. Interfejs użytkownika MILO 6.1. Komenda ,,help'' 6.2. Ładowanie Linuxa 6.3. Resetowanie Linuxa 6.4. Komenda ,,bootopt'' 7. Używanie programu zarządzającego pamięcią flash 7.1. Komenda ,,help'' 7.2. Komenda ,,list'' 7.3. Komenda ,,program'' 7.4. Komenda ,,environment'' 7.5. Komenda ,,bootopt'' 7.6. Komenda ,,quit'' 8. Ograniczenia 9. Rozwiązywanie problemów 10. Podziękowania 11. Od tłumacza ______________________________________________________________________ 11.. WWpprroowwaaddzzeenniiee Ten dokument opisuje Miniładowacz (Miniloader) dla Linuxa na Alphę AXP (MILO). To firmware jest używane do inicjalizacji systemów Alpha AXP, załadowania oraz startowania Linuxa i w końcu do zapewnienia kodu PAL (PALcode) dla Linuxa. 11..11.. PPrraawwaa aauuttoorrsskkiiee Prawa autorskie Alpha Miniloader (MILO) HOWTO: Copyright (C) 1995, 1996 David A. Rusling. PPrraawwaa aauuttoorrsskkiiee. Jak wszystkie Linuxowe dokumenty HOWTO, może być powielane i rozpowszechniane w całości lub w części, za pomocą każdego środka przekazu, fizycznego lub elektronicznego, jeżeli uwaga o prawach autorskich została zachowana na wszystkich kopiach. Komercyjna redystrybucja jest dozwolona i zalecana; jednakże autor _c_h_c_i_a_ł_b_y być powiadomiony o takich dystrybucjach. Możesz też przetłumaczyć to HOWTO na dowolny język, jeżeli zostawisz wypowiedź o prawach autorskich oraz oświadczenie niezmienione, oraz dodasz notatkę o tłumaczu. OOśśwwiiaaddcczzeenniiee. Próbowałem umieścić tu najpoprawniejsze i najnowsze informacje, które są mi dostępne, nie mogę jednak zagwarantować, że ich użycie nie spowoduje utraty danych lub sprzętu. NIE ZAPEWNIAM ŻADNEJ GWARANCJI dotyczącej informacji w tym HOWTO, nie mogę być więc odpowiedzialny za jakiekolwiek skutki użycia danych z niego. 11..22.. NNoowwee wweerrssjjee tteeggoo ddookkuummeennttuu Najświeższa wersja tego dokumentu znajduje się pod adresem ftp://gatekeeper.dec.com/pub/Digital/Linux-Alpha/Miniloader/docs, a David Mosberger-Tang był uprzejmy umieścić go w formacie HTML na jego znakomitej stronie o Linux-Alpha http://www.azstarnet.com/~axplinux/. 22.. CCoo ttoo jjeesstt MMIILLOO?? Na systemach PC opartych na procesorach Intel, firmware zwane BIOSem uruchamia komputer i ładuje obraz (image) do uruchomienia z bloku startowego systemu plików DOSu. Jest to mniej więcej to samo, co wykonuje MILO na systemach Alpha, jednakże istnieje kilka interesujących różnic pomiędzy BIOSem a MILO, jedną z nich jest używanie przez MILO niezmodyfikowanych standardowych sterowników urządzeń Linuxa. MILO jest firmware'em, inaczej niż LILO, który jest ładowany przez BIOS. Główne funkcjonalne części MILO to: 1. PALcode, 2. Kod uruchamiania pamięci (buduje tablice stronicowania i włącza adresowanie wirtualne), 3. Kod grafiki (emulacja BIOSu i TGA (21030)), 4. Kod jądra Linuxa. Na niego składa się prawdziwy kod (np. obsługa przerwań) i pseudo-jądro, 5. Sterowniki urządzeń blokowych Linuxa (np. sterownik stacji dysków), 6. Obsługa systemu plików (ext2, MS-DOS i ISO9660), 7. Kod interfejsu użytkownika (MILO) 8. Kod interfejsu jądra (uruchamia HWRPB i mapę pamięci dla Linuxa), 9. Kod NVRAM do zarządzania zmiennymi środowiskowymi Dalsze akapity dokładnie opisują funkcjonalne części MILO. PALcode jest cienką warstwą oprogramowania dostosowującą procesor do konkretnego systemu operacyjnego. Działa w specjalnym trybie (PALmode), który posiada kilka ograniczeń, ale używa standardowego zestawu instrukcji Alphy i tylko pięciu dodatkowych instrukcji. W ten sposób, na procesorze Alpha mogą być uruchamiane systemy tak różne, jak np. Windows NT, OpenVMS, Digital UNIX i oczywiście Linux. PALcode, którego używa MILO (i przez to sam Linux) jest, jak reszta MILO, darmowa. Pochodzi z przykładu ewaluacyjnych płyt głównych (Evaluation Boards, EB) dla Digital UNIXa. Różnice pomiędzy kodami PAL wynikają z różnic w sposobach obsługi przerwań w procesorach Alpha (płyty główne do 21066 mają inną mapę I/O niż systemy 21064+2107x (2107x to APECS, chipset do 21064 - przyp. tłum.)), oraz z liczby dostępnych płyt głównych. Żeby MILO działał poprawnie, musi znać ilość dostępnej pamięci i miejsce, w którym Linux będzie działał, musi też być w stanie przydzielić tymczasową pamięć dla sterowników urządzeń Linuxa. Kod utrzymuje mapę pamięci, która posiada rekordy dla permanentnie i tymczasowo przydzielonych stron. W czasie uruchamiania MILO dekompresuje się w poprawne miejsce pamięci fizycznej. Kiedy przekazuje kontrolę jądru Linuxa, zarezerwowywuje pamięć dla skompresowanej wersji samego siebie, kodu PAL (który jest potrzebny jądru) i trochę struktur danych. To zostawia _w_i_ę_k_s_z_o_ś_ć pamięci w systemie dla samego Linuxa. Ostatnia część kodu pamięci to ustawienie i włączenie adresowania wirtualnego w celu zapewnienia poprawnego miejsca w wirtualnej pamięci dla struktur danych, które Linux spodziewa się tam zobaczyć. MILO zawiera kod grafiki, który inicjalizuje i używa urządzenia graficznego dla systemu. Wykryje i będzie używać urządzenie VGA, jeśli takie istnieje, jeżeli nie, będzie próbował użyć urządzenia TGA (21030). Gdy i to się nie powiedzie, przyjmie, że nie istnieje urządzenie graficzne (tylko np. terminale szeregowe - przyp. tłum.). Emulacja BIOSu, którą posiadają standardowe, skompilowane obrazy MILO, to emulacja Digitala, która obsługuje większość, jeżeli nie wszystkie dostępne standardowe urządzenia graficzne. Sterowniki urządzeń Linuxa ,,żyją'' wewnątrz jądra i spodziewają się od niego konkretnych usług. Niektóre z nich są zapewniane bezpośrednio przez kod Linuxa, np. obsługa przerwań, a inne działają dzięki specjalnym procedurom wyglądającym dla sterowników jak procedury jądra. Najsilniejsza cecha MILO, to możliwość osadzenia w nim niezmienionych sterowników urządzeń Linuxa. Daje to potencjał obsługi każdego urządzenia, które obsługuje Linux. MILO zawiera wszystkie urządzenia blokowe wkompilowane w jadro, które zostaje przy nim zbudowane, a także dużo kodu urządzeń (np. ll_rw_blk()). MILO ładuje jądro Linuxa z prawdziwych systemów plików, a nie z bloków startowych i innych dziwnych miejsc. Potrafi czytać systemy plików MSDOS, EXT2 i ISO9660. Pliki spakowane gzipem są obsługiwane i rekomendowane, zwłaszcza jeżeli ładujesz system z dyskietki, co jest dosyć wolne. MILO rozpoznaje je po rozszerzeniu W MILO zawiera prosty sterownik klawiatury, który razem z równie prostym sterownikiem grafiki pozwala posiadać mu spartański interfejs użytkownika. Interfejs ten pozwala poznać systemy plików na skonfigurowanych urządzeniach, ładować Linuxa, uruchamiać programy do uaktualniania pamięci flash, oraz ustawiać zmienne środowiskowe kontrolujące ładowanie systemu. Tak jak w LILO, możesz przekazywać parametry do jądra. MILO musi powiedzieć jądru Linuxa na jakim działa systemie, ile pamięci posiada i ile z tej pamięci jest wolne. Robi to używając struktury danych HWRPB (blok parametrów restartowania sprzętu) i skojarzonych z nią opisów części pamięci. Są one umiejscawiane w odpowiednim miejscu pamięci wirtualnej zaraz przed przekazaniem kontroli jądru Linuxa. 33.. SSttaannddaarrddoowwee,, pprree--kkoommppiilloowwaannee oobbrraazzyy MMIILLOO Jeżeli będziesz chciał uruchamiać Linuxa na standardowych płytach głównych Alphy, możesz użyć pre-kompilowanych, ,,standardowych'' obrazów (images) MILO. (notka od tłumacza: radzę zabootować Alphę ze standardowych obrazów, a potem zbudować własny, gdy Linux będzie już działał) Obrazy te (razem ze źródłami i innymi ciekawymi rzeczami) znajdują się na ftp://gatekeeper.dec.com/pub/Digital/Linux- Alpha/Miniloader Podkatalog images zawiera po jednym podkatalogu na każdy system (np. AlphaPC64), a obrazy MILO są nazywane w następujący sposób: 1. MILO - wykonywalny obraz MILO, może on być ładowany na wiele sposobów, 2. fmu.gz - Program zarządzania pamięcią flash, 3. MILO.dd - Obraz dla dyskietki startowej. Powinien być zapisany programem rawrite.exe lub dd pod Linuxem. Katalog test-images zawiera, tak jak images po jednym katalogu na standardowy system. Obrazy znajdujące się w tym katalogu są raczej eksperymentalne, ale zawierają najnowsze opcje. 44.. KKoommppiillaaccjjaa MMIILLOO (Uwaga: pamiętaj, że nie możesz zbudować MILO i jądra dla Alphy na Intel'u! Musisz dysponować drugą Alphą, albo zbudować jądro po uruchomieniu Linuxa ze standardowych obrazów MILO. Na Intelu jądro nawet się nie zacznie kompilować - spróbuj zbudować jądro na Alphę na pececie - w pliku Makefile zamień ARCH=i386 na ARCH=alpha... - przyp. tłum.) MILO kompiluje się oddzielnie, nie razem z jądrem. Ponieważ MILO potrzebuje części jądra do poprawnego funkcjonowania (np. obsługi przerwań), musisz najpierw skonfigurować i skompilować jądro, odpowiadające MILO, który chcesz skompilować. Zazwyczaj znaczy to, że powinieneś kompilować jądro z tą samą wersją co MILO. A więc MILO-2.0.25.tar.gz będzie kompilować się z linux-2.0.25.tar.gz. MILO _m_o_ż_e skompilować się z nowszą wersją jądra, ale nie musi. Dodatkowo teraz, kiedy biblioteki dzielone ELF są w pełni obsługiwane, istnieją dwie wersje źródeł MILO. Żeby zbudować je w systemie ELF, musisz najpierw rozpakować standardowe źródła, a potem nałożyć łatę (patch) ELF na te źródła (musi mieć ten sam numer wersji). Przyjmę teraz, że źródła jądra oraz skompilowane obiekty (.o) znajdują się w katalogu /usr/src/linux, a jądro zostało w pełni skompilowane komendą make boot. (pamiętaj o ustawieniu ARCH=alpha w pliku Makefile jądra _P_R_Z_E_D wydaniem polecenia make (menu)(x)config!!! - przyp. tłum.) Żeby skompilować MILO, zmień katalog na zawierający źródła MILO i przywołaj make komendą: $ make KSRC=/usr/src/linux config Tak jak podczas kompilacji jądra, zadane zostanie kilka pytań. Echo output to the serial port (MINI_SERIAL_ECHO) [y] Przesyłać wyjście do portu szeregowego (MINI_SERIAL_ECHO) [y] Dobrym pomysłem jest włączenie przesyłania wiadomości printk jądra do /dev/ttyS0, jeżeli można to zrobić. Jeżeli możesz (i chcesz), napisz ,,y'', jeżeli nie, ,,n''. Wszystkie standardowe, pre-kompilowane obrazy MILO posiadają wejście/wyjście na port szeregowy COM1. Use Digital's BIOS emulation code (not free) (MINI_DIGITAL_BIOS_EMU) [y] Użyć kodu emulacji BIOSu Digitala (nie jest darmowy) (MINI_DIGITAL_BIOS_EMU) [y] Ten kod jest załączony jako biblioteka, która jest darmowa dopóki używa się jej w systemie opartym na procesorze Alpha. Źrodła nie są dostępne. Jeżeli odpowiesz n, zbudowana zostanie alternatywna darmowa emulacja BIOSu. Jej źródła są dołączone do MILO. Pamiętaj, że obecnie nie możesz wybrać emulacji Digitala w systemach ELF (biblioteka nie jest jeszcze gotowa), musisz więc odpowiedzieć ,,nie'' na to pytanie. Build PALcode from sources (Warning this is dangerous) (MINI_BUILD_PALCODE_FROM_SOURCES) [n] Zbudować PALcode ze źródeł (Uwaga to jest niebezpieczne) (MINI_BUILD_PALCODE_FROM_SOURCES) [n] Powinieneś zrobić to tylko jeżeli modyfikowałeś źródła kodu PAL, jeżeli nie, użyj standardowego, pre-kompilowanego kodu PAL dołączonego do MILO. Teraz jesteś gotowy do zbudowania obrazu MILO: $ make KSRC=/usr/src/linux Kiedy kompilacja zostanie zakończona, obraz MILO znajduje się w pliku o nazwie milo. Będzie się tam też znajdować wiele obrazów o nazwach milo.*, które powinny być zignorowane. 55.. ŁŁaaddoowwaanniiee MMIILLOO Najlepiej obsługiwany sposób ładowania MILO to ładowanie z firmware'u Windows NT ARC, ponieważ większość systemów zawiera tą metodę. Jednakże istnieje wiele różnych sposobów ładowania MILO. Może on być załadowany z: ˇ dyskietki startowej (failsafe boot block floppy), ˇ firmware'u Windows NT ARC ˇ konsoli SRM Digitala ˇ ,,Alpha Evaluation Board Debug Monitor'' - programu monitorującego płyt ewaluacyjnych, ˇ pamięci flash ROM 55..11.. ŁŁaaddoowwaanniiee MMIILLOO zz ffiirrmmwwaarree''uu WWiinnddoowwss NNTT AARRCC Większość, jeżeli nie wszystkie systemy oparte na Alfie AXP posiadają Windows NT ARC firmware i jest to preferowana metoda inicjalizowania MILO i Linuxa. Kiedy firmware Windows NT działa i posiadasz poprawny dla twojego systemu obraz MILO, metoda ta jest bardzo łatwa do używania. Windows NT ARC firmware jest środowiskiem, w którym mogą działać programy, wykonując odwołania do firmware'u w celu wykonywania różnych akcji. Windows NT OSloader jest programem, który spełnia tą funkcję. Linload.exe jest znacznie prostszym programem, który jedynie wczytuje i uruchamia MILO. Ładuje on poprawny plik z obrazem do pamięci pod adres 0x00000000 i wtedy wykonuje odwołanie PAL ,,swap-PAL'' (zamień PAL) do niego. MILO, tak jak Linux, używa innego kodu PAL niż Windows NT i dlatego musi przeprowadzić zamianę. Następnie MILO przenosi się do 0x200000 i kontynuuje resetowanie kodu PAL. Zanim dodasz opcję ładowania Linuxa, będziesz musiał skopiować linload.exe oraz MILO, którego chcesz załadować w miejsce, z którego Windows NT ARC będzie mógł go odczytać. W poniższym przykładzie przyjmuję, że ładujesz MILO z dyskietki w formacie DOS'a: 1. W menu ładowania (boot menu) wybierz ,,Supplementary menu...'' (menu dodatkowe) 2. W menu ,,Supplementary menu'' wybierz opcję ,,Set up the system...'' (ustaw system) 3. W Setup menu wybierz ,,Manage boot selection menu...'' (menu zarządzania opcjami ładowania) 4. W ,,Boot selections menu'' wybierz ,,Add a boot selection'' (dodaj opcję ładowania) 5. Wybierz ,,Floppy Disk 0'' 6. Wprowadź ,,linload.exe'' jako katalog i nazwę pliku ładowacza systemu (osloader) 7. Odpowiedz ,,tak'' na pytanie czy system operacyjny znajduje się na tej samej partycji co ładowacz systemu 8. Wprowadź ,,\fR'' jako katalog główny systemu operacyjnego 9. Zazwyczaj wpisuję ,,Linux'' jako nazwę tej opcji ładowania 10. Odpowiedz ,,nie'' na pytanie o inicjalizację debuggera podczas ładowania 11. Powinieneś wrócić do ,,Boot selections menu'', wybierz w nim opcję ,,Change a boot selection option'', a w niej opcję, którą właśnie stworzyłeś 12. Użyj strzałki w dół, aby dostać się do rekordu ,,OSLOADFILENAME'', wpisz w nim nazwę obrazu MILO, którego chcesz używać, np. ,,noname.arc, następnie naciśnij return (enter). 13. Nasiśnij ESC żeby wrócić do ,,Boot selections menu'' 14. Wybierz ,,Setup Menu'' (lub naciśnij jeszcze raz ESC), a w nim ,,Supplementary menu'' i ,,Save Changes'' 15. ESC cofnie cię do ,,Boot menu'', możesz już spróbować inicjalizować MILO. Jeżeli nie chcesz, żeby Linux był pierwszą opcją ładowania, możesz zmienić kolejność opcji w ,,Boot selections menu''. Na końcu tych czynności powinieneś otrzymać opcję ładowania wyglądającą podobnie do tej: LOADIDENTIFIER=Linux SYSTEMPARTITION=multi(0)disk(0)fdisk(0) OSLOADER=multi(0)disk(0)fdisk(0)\linload.exe OSLOADPARTITION=multi(0)disk(0)fdisk(0) OSLOADFILENAME=\noname.arc OSLOADOPTIONS= Możesz teraz uruchomić MILO (i Linuxa). Możesz załadować linload.exe i MILO bezpośrednio z systemu plików, który rozumie Windows NT, takiego jak NTFS lub DOS na twardym dysku. Linia OSLOADOPTIONS zawiera opcje, które zostaną przekazane do MILO. Jeżeli chcesz załadować Linuxa bezpośrednio z Windows NT ARC nie pauzując przy MILO, powinieneś wpisać następującą komendę w OSLOADOPTIONS: boot sda2:vmlinux.gz root=/dev/sda2 Przeczytaj rozdział ``Interfejs użytkowwnika MILO'', żeby uzyskać więcej informacji o komendach MILO. Inna (ale jest to obejście :( ) metoda ładowania MILO przez WNT ARC, to umieszczenie MILO na dyskietce MS-DOS, nazwanie go fwupdate.exe i uruchomienie opcji ,,Upgrade Firmware''. 55..22.. ŁŁaaddoowwaanniiee MMIILLOO zz ,,,,EEvvaalluuaattiioonn BBooaarrdd DDeebbuugg MMoonniittoorr'''' Płyty ewaluacyjne (i często ich klony) posiadają obsługę Monitora płyt ewaluacyjnych (Alpha Evaluation Board Debug Monitor). Przeczytaj dokumentację twojego systemu przed rozpatrywaniem użycia tej metody ładowania MILO. Następujące systemy _n_a_p_e_w_n_o obsługują Monitor: ˇ AlphaPC64 (Sekcja ``AlphaPC64'') ˇ EB64+ (Sekcja ``EB64+'') ˇ EB66+ (Sekcja ``EB66+'') ˇ EB164 (Sekcja ``EB164'') ˇ PC164 (Sekcja ``PC164'') Zanim użyjesz tej metody, pamiętaj, że wczesne wersje Monitora Ewaluacyjnego nie posiadały sterowników grafiki i klawiatury, musisz więc podłączyć inny komputer przez port szeregowy, żebyś mógł używać Monitora. Jego interfejs jest bardzo prosty, a komenda help pokazuje mnóstwo dostępnych komend. Najbardziej nas interesujące zawierają słowo boot albo load. Monitor Płyt Ewaluacyjnych może załadować obraz przez sieć (netboot) albo z dyskietki (flboot). W obu przypadkach, ustaw adres ładowania na 0x200000 (> bootadr 200000) przed uruchomieniem obrazu. Jeżeli obraz znajduje się na dyskietce (zauważ że obsługiwane są tylko dyskietki w formacie DOS), będziesz musiał wpisać następującą komendę: AlphaPC64> flboot 55..33.. ŁŁaaddoowwaanniiee MMIILLOO zz ,,,,bbeezzppiieecczznneejj ddyysskkiieettkkii ssttaarrttoowweejj'''' Tylko AXPPCI33 _n_a_p_e_w_n_o obsługuje ,,bezpieczną dyskietkę startową'' (Sekcja ``NoName''). Jeżeli nie używasz standardowego, pre-kompilowanego obrazu .dd MILO, będziesz musiał zbudować dyskietkę startową SRM. Kiedy już skompilowałeś MILO, musisz wykonać następujące komendy w Digital Unix'ie: fddisk -fmt /dev/rfd0a cat mboot bootm > /dev/rfd0a disklabel -rw rfd0a 'rx23' mboot bootm Lub w Linuxie: cat mboot bootm > /dev/fd0 Jeżeli masz standardowy obraz MILO (powiedzmy MILO.dd), możesz stworzyć dyskietkę startową, używając następującej komendy: dd if=MILO.dd of=/dev/fd0 (radzę jednak zapisywać programem rawrite.exe spod DOS'a - ale poeksperymentować z dd można - przyp. tłum.) 55..44.. ŁŁaaddoowwaanniiee MMIILLOO zz ppaammiięęccii FFllaasshh Istnieje kilka systemów, gdzie MILO może być wypalone we flash'u i ładowane bezpośrednio (a nie przez firmware Windows NT ARC): ˇ AlphaPC64 (Sekcja ``AlphaPC64'') ˇ NoName (Sekcja ``NoName'') ˇ EB66+ (Sekcja ``EB66+'') ˇ EB164 (Sekcja ``EB164'') ˇ PC164 (Sekcja ``PC164'') 55..55.. ŁŁaaddoowwaanniiee MMIILLOO zz kkoonnssoollii SSRRMM Konsola SRM (skrót od System Reference Manual, podręcznik systemowy (? - przyp. tygrys)) nie wie nic o systemach plików bądź partycjach dyskowych, oczekuje po prostu na zajęcie odpowiedniego przedziału kolejnych sektorów dysku przez drugorzędny ładowacz, zaczynając od danego offsetu. Informacja opisująca drugorzędny ładowacz (jego rozmiar i offset) znajduje się w pierwszym 512-bajtowym bloku. Żeby załadować MILO z konsoli SRM, musisz wygenerować taką strukturę w urządzeniu, do którego SRM ma dostęp (np. dyskietka). Do tego służy mboot i bootm, mboot jest pierwszym, opisującym blokiem, a bootm jest obrazem MILO zaokrąglonym do 512-bajtowego bloku. Żeby załadować MILO z urządzenia zawierającego blok startowy, zbuduj mboot oraz bootm i nagraj je na urządzenie startowe następującą komendą: $ cat mboot bootm > /dev/fd0 Możesz też ściągnąć odpowiedni plik MILO.dd i nagrać go używając RAWRITE.EXE lub dd. Kiedy już to zrobiłeś, możesz uruchomić konsolę SRM i użyć jednej z jej wielu komend do załadowania MILO. Na przykład, jeżeli chcesz załadować MILO z dyskietki startowej, powinieneś użyć następującej komendy: >>>boot dva0 (boot dva0.0.0.0.1 -flags 0) block 0 of dva0.0.0.0.1 is a valid boot block reading 621 blocks from dva0.0.0.0.1 bootstrap code read in base = 112000, image_start = 0, image_bytes = 4da00 initializing HWRPB at 2000 initializing page table at 10400 initializing machine state setting afinity to the primary CPU jumping to bootstrap code MILO Stub: V1.1 Unzipping MILO into position Allocating memory for unzip ####... Następujące systemy _n_a_p_e_w_n_o posiadają konsolę SRM: ˇ NoName (Sekcja ``NoName'') ˇ AlphaPC64 (Sekcja ``AlphaPC64'') ˇ EB164 (Sekcja ``EB164'') ˇ PC164 (Sekcja ``PC164'') 55..66.. IInnffoorrmmaaccjjee oo ppłłyyttaacchh ggłłóówwnnyycchh 55..66..11.. AAXXPPPPCCII3333 ((NNooNNaammee)) Płyta NoName może ładować MILO z firmware'u Windows NT ARC (Sekcja ``ładowanie MILO z Windows NT ARC''), z konsoli SRM (Sekcja ``Ładowanie MILO z konsoli SRM''), oraz z dyskietki startowej (Sekcja ``Ładowanie z dyskietki startowej''). Można też, używając programu zarządzającego pamięcią flash, dostarczanego z MILO, możesz po załadowaniu Miniloadera wypalić jego obraz w taką pamięć (Sekcja ``korzystanie z programu zarządzającego pamięcią flash''). Jednakże musisz pamiętać, że kiedy to zrobisz, stracisz poprzedni obraz tam zapisany, ponieważ płyta posiada miejsce tylko na jeden. Sposób, w jaki NoName uruchamia system jest kontrolowany zestawem zworek na płycie, J29 i J28. Wyglądają one następująco: 4 J29 2 x x x 6 1 x x x 5 J28 2 x x x 6 1 x x x 5 3 Dwie opcje, które nas interesują, to piny 1-3 zworki J28, które ładują konsolę/ładowacz z pamięci flash, oraz piny 1-3 zworki J29, które uruchamiają konsolę lub ładowacz z dyskietki startowej. Pierwsze załadowanie MILO musi być przeprowadzone przy użyciu drugiej opcji. Kiedy już wybierzesz ładowanie systemu z dyskietki ustawiając odpowiednią zworkę, włóż dyskietkę startową SRM zawierającą MILO do stacji i zresetuj komputer. Za parę sekund (po zgaśnięciu lampki stacji dysków) ekran powinien zrobić się biały, a MILO będzie mówił ci co się dzieje. Jeżeli interesują cię tematy techniczne, wiedz, że NoName ładuje obrazy z dyskietki pod fizyczny adres 0x104000, a obrazy z pamięci flash pod adres 0x100000. Z tego powodu PALcode MILO zaaczyna się na 0x200000. Kiedy jest już załadowany, przenosi się w poprawne miejsce (zobacz relocate.S). 55..66..22.. AAllpphhaaPPCC6644 ((CCaabbrriioolleett)) AlphaPC64 może ładować MILO z firmware'u Windows NT ARC (Sekcja ``Ładowanie z Windows NT ARC''), konsoli SRM (Sekcja ``Ładowanie MILO z konsoli SRM''), oraz z Monitora Ewaluacyjnego (Sekcja ``Ładowanie z Monitora Płyt Ewaluacyjnych''). Wszystkie te funkcję znajdują się w pamieci flash, w której znajduje się jeszcze miejsce na dodanie MILO, w celu ładowania go bezpośrednio. Można użyć programu zarządzania pamięcią flash, uruchamianego z MILO, a więc kiedy jest on uruchomiony, może być wczytany do pamięci nieulotnej (Sekcja ``używanie programu zarządzania pamięcią flash''). System obsługuje zmienne środowiskowe MILO. Można wybrać opcję ładowania (i MILO, kiedy znajduje się w pamięci flash) za pomocą kombinacji zworek i opcji inicjalizacji, która jest zapisywana w NVRAM zegara TOY. Zworka służąca do tego celu to J2, bity SP o numerach 6 i 7 mają następujące znaczenie: ˇ SP 6 powinien być zawsze wyłączony. Jeżeli nie, włączy się mini- debugger SROM, ˇ Kiedy SP 7 jest włączony, system wybiera opcję inicjalizacji umieszczoną w zegarze TOY, ˇ Przy wyłączonym SP 7 system ładuje pierwszy obraz z pamięci flash. A więc, jeżeli SP 7 jest wyłączony, ładowany będzie Monitor Płyt Ewaluacyjnych, ponieważ jest _z_a_w_s_z_e pierwszą opcją w pamięci flash. Kiedy SP 7 jest włączony, wybrany zostanie obraz z zegara TOY. Zarówno Monitor, firmware Windows NT ARC, jak i MILO obsługują wybór opcji inicjalizacyjnej, ale musisz być bardzo ostrożny używając tej metody. Nie możesz na przykład ustawić opcji inicjalizacyjnej tak, żeby następnym razem system ładował MILO, kiedy używasz Windows NT ARC, ponieważ pozwala on tylko na ustawienie Monitora Ewaluacyjnego lub NT ARC jako opcji ładowania. W celu zapisania MILO w pamięci flash za pomocą Monitora Płyt Ewaluacyjnych, będziesz potrzebował obrazu przystosowanego do tej metody ładowania. Procedura kompilacji tworzy plik MILO.rom, ale równie dobrze możesz stworzyć taki plik jedną z komend Monitora: > makerom -v -i7 -l200000 MILO -o mini.flash (napisz makerom, żeby dowiedzieć się, co znaczą poszczególne argumenty, powiem tylko, że 7 to identyfikator obrazu używany przez SROM, a -l200000 ustawia adres ładowania obrazu na 0x200000). Załaduj ten obraz do pamięci (komendą flload, netload itd. (_N_I_E fl/net boot tylko _l_o_a_d - przyp. tłum.)) pod adres 0x200000 i wypal we flash'u: AlphaPC64> flash 200000 8 (200000 to miejsce w pamięci obrazu, który ma być wypalony, a 8 to segment, w którym umieszczasz obraz. Istnieje 16 1024*64 bajtowych segmentów w pamięci flash, Debug Monitor znajduje się w segmencie pierwszym, a Windows NT ARC w czwartym). Ustaw numer obrazu, który będzie ładowany przez SROM poprzez zapisanie jego numeru w zegarze TOY. AlphaPC64> bootopt 131 (131 to trzeci obraz, 129 - pierwszy, 130 - drugi itd.) Wyłącz zasilanie, zewrzyj siódmą zworkę i włącz komputer. Powinieneś zobaczyć MILO budzącego się do życia. Jeżeli nie, wyjmij 7 zworkę i zresetuj Monitor Ewaluacyjny. 55..66..33.. EEBB6666++ EB66+, tak jak wszystkie Płyty Ewaluacyjne Alpha zbudowane przez Digitala, posiada ,,Evaluation Board Debug Monitor'', można więc uruchamiać MILO przez niego (Sekcja ``Ładowanie z Monitora Ewaluacyjnego''). Dosyć często (choć nie zawsze) płyty, które wyeluowały z EB66+, również posiadają Monitor. Zazwyczaj płyty te zawierają Windows NT ARC firmware (Sekcja ``Ładowanie przez Windows NT ARC''). Można też skorzystać z programu zarządzania pamięcią flash, kiedy MILO jest uruchomiony (Sekcja ``używanie programu zarządzającego pamięcią flash''). System ten obsługuje zmienne środowiskowe MILO. Płyta główna posiada miejsce na kilka obrazów flash, są one kontrolowane zworkami. Dwa banki zworek (J18 i J16) znajdują się na dole płyty, po środku jej szerokości (jeżeli Alpha jest na górze). Możesz wybrać pomiędzy opcjami ładowania (i MILO, jeżeli został zapisany w pamięci flash), używając kombinacji zworek i opcji inicjalizacji zapisanej w NVRAM zegara TOY. Kiedy zworka 7-8 banku J18 jest włączona, obraz ładowania jest opisany przez opcję inicjalizacyjną. Jeżeli są one wyłączone, załadowany zostanie Monitor Płyt Ewaluacyjnych. Procedura wypalania obrazu w pamięci flash przez Monitor Ewaluacyjny jest identyczna, jak w przypadku AlphaPC64 (Sekcja ``AlphaPC64''). 55..66..44.. EEBB6644++//AAssppeenn AAllppiinnee System ten jest podobny do AlphaPC64, nie posiada jednak pamięci flash do nagrania MILO. EB64+ posiada dwa ROMy, z których jeden zawiera firmware Windows NT ARC (Sekcja ``Ładowanie z firmware'u Windows NT ARC''), a drugi Monitor Płyt Ewaluacyjnych (Sekcja ``Ładowanie z Monitora Ewaluacyjnego''). Aspen Alpine posiada tylko jeden ROM - Windows NT ARC. 55..66..55.. UUnniivveerrssaall DDeesskkttoopp BBooxx ((MMuullttiiaa)) Jest to system bardzo kompaktowy, sprzedawany jako cały komputer, oparty na 21066. Posiada on urządzenie graficzne TGA (21030). Chociaż można _w_e_p_c_h_n_ą_ć do niego kartę graficzną PCI o małym rozmiarze, poczekaj lepiej na pełną obsługę TGA w XFree86. Płyta posiada firmware Windows NT ARC, z którego można ładować MILO (Sekcja (``Ładowanie z firmware'u Windows NT ARC''). 55..66..66.. EEBB116644 EB164, tak jak wszystkie płyty ewaluacyjne Digitala, posiada Monitor Płyt Ewaluacyjnych, można więc za jego pomocą łatwo ładować MILO (Sekcja ``Ładowanie z Monitora Ewaluacyjnego''). Dosyć często (choć nie zawsze) płyty, które wyeluowały z EB164, także zawierają Monitor. Zazwyczaj, płyty EB164 posiadają firmware Windows NT ARC (Sekcja ``Ładowanie z firmware'u Windows NT ARC''). Dostępna jest też konsola SRM (Sekcja ``Ładowanie MILO z konsoli SRM''). Dzięki programowi do zarządzania pamięcią flash uruchamianemu z MILO, można zapisać jego obraz w pamięci flash (kiedy MILO już działa) (Sekcja ``Używanie programu zarządzania pamięcią flash''). System obsługuje zmienne środowiskowe MILO. Płyty EB164 posiadają kilka obrazów ładujących, kontrolowanych zworkami. Dwuzworkowy bank nas interesujący to J1, znajduje się on w lewym, dolnym rogu płyty (kiedy Alpha jest na górze). Między opcjami ładowania (oraz MILO, jeżeli został zapisany w pamięci flash) możesz przełączać się używając kombinacji zworek i opcji inicjalizacyjnej, zapisanej w NVRAMie zegara TOY. Kiedy zworka SP-11 banku J1 jest zwarta, ładowany będzie obraz opisany opcją inicjalizacyjną, a jeżeli jest rozwarta, ładowany będzie Monitor Płyt Ewaluacyjnych. Wypalanie obrazu w pamięci flash przeprowadza się dokładnie tak, jak w AlphaPC64 (Sekcja ``AlphaPC64''). 55..66..77.. PPCC116644 PC164, jak wszystkie Płyty Ewaluacyjne Alpha Digitala, posiada Monitor Płyt Ewaluacyjnych, jest to więc pierwsza możliwość ładowania MILO (Sekcja ``Ładowanie z monitora ewaluacyjnego''). Dosyć często (choć nie zawsze) płyty, które wyeluowały z PC164, także posiadają Monitor. Zazwyczaj płyty te posiadają firmware Windows NT ARC (Sekcja ``Ładowanie z Windows NT ARC''). Jest też dostępna konsola SRM (Sekcja ``Ładowanie MILO z konsoli SRM''). Można również użyć programu do zarządzania pamięcią flash, uruchamianego z MILO, a więc kiedy Miniloader działa, może być zapisany w pamięci flash (Sekcja ``używanie programu zarządzającego pamięcią flash''). System obsługuje zmienne środowiskowe MILO. Systemy te posiadają kilka opcji ładowania w pamięci flash, kontrolowanych przez zworki. Główny blok zworek, J30, zawiera zworki konfiguracji systemu, oraz zworkę CF6, która, jeżeli włączona, uruchomi Monitor Ewaluacyjny. Standardowo zworka ta jest wyłączona. Wypalanie obrazu do pamięci flash za pomocą Monitora Płyt Ewaluacyjnych przeprowadza się identycznie, jak w przypadku AlphaPC64 (Sekcja ``AlphaPC64''). 55..66..88.. XXLL226666 XL266 jest jedną z płyt z rodziny systemów znanych jako Avanti. Posiada oddzielną kartę zawierającą procesor i pamięć cache, dołączaną do płyty pod prawidłowym kątem. Płyta ta może zastąpić swój odpowiednik - płytę do Pentium. Niektóre z tych systemów posiadają konsolę SRM, a inne, np. właśnie XL266 posiadają jedynie firmware Windows NT ARC (Sekcja ``Ładowanie z firmware'u Windows NT ARC''). Oto moja lista kompatybilnych systemów: ˇ AlphaStation 400 (Avanti), ˇ AlphaStation 250, ˇ AlphaStation 200 (Mustang), ˇ XL. Dostępne są dwa rodzaje, XL266 i XL233, jedyna różnica pomiędzy nimi to szybkość procesora i rozmiar cache'u. UUwwaaggaa: System którego używałem do rozwoju MILO, to XL266 i dlatego jest to jedyny system, którego działanie mogę zagwarantować. Jednakże technicznie wszystkie powyższe systemy są odpowiednikami, mają te same chipsety oraz mechanizmy obsługi przerwań. 55..66..99.. PPllaattffoorrmm22000000 Jest to system oparty na 233MHz 21066. 66.. IInntteerrffeejjss uużżyyttkkoowwnniikkaa MMIILLOO Kiedy poprawnie zainstalowałeś/załadowałeś/uruchomiłeś MILO, zobaczysz znak zachęty MILO> (od MIniLOader, Miniładowacz) wyświetlony na ekranie. Jest to bardzo prosty intefejs użytkownika, którego musisz użyć w celu uruchomienia obrazu jądra Linuxa. Wpisanie ,,help'' jest dobrym pomysłem, ponieważ wyświetla przydatny opis komend. 66..11.. KKoommeennddaa ,,,,hheellpp'''' Jest to chyba najbardziej pożyteczna komenda MILO: MILO> help MILO command summary: ls [-t fs] [dev:[dir]] - List files in directory on device boot [-t fs] [dev:file] [boot string] - Boot Linux from the specified device and file run [-t fs] dev:file - Run the standalone program dev:file show - Display all known devices and file systems set VAR VALUE - Set the variable VAR to the specified VALUE unset VAR - Delete the specified variable reset - Delete all variables print - Display current variable settings help [var] - Print this help text Devices are specified as: fd0, hda1, hda2, sda1... Use the '-t filesystem-name' option if you want to use anything but the default filesystem ('ext2'). Use the 'show' command to show known devices and filesystems. Type 'help var' for a list of variables. ------------------------------------------------------------------------------------ MILO> help Opis komend MILO: ls [-t fs] [urządzenie:[katalog]] - Lista plików w katalogu danego urządzenia boot [-t fs] [urządzenie:plik] [tekst ładowania] - Załaduj Linuxa z pliku na danym urządzeniu run [-t fs] [urządzenie:plik] - Uruchom oddzielny program z podanej ścieżki show - Pokaż wszystkie znane urządzenia i systemy plików set ZMIENNA WARTOSC - Przypisuje zmiennej ZMIENNA wartosc WARTOSC unset ZMIENNA - Kasuje podaną zmienną reset - Skasuj wszystkie zmienne print - Pokaż obecne ustawienia zmiennych help [var] - Wyświetl ten tekst pomocy Urządzenia podaje się jako: fd0, hda1, hda2, sda1... Użyj opcji ,,-t nazwa-systemu-plików'', jeżeli chcesz używać czegoś innego niż standardowy system plików (,,ext2''). Użyj komendy ,,show'', żeby wyświetlić znane urządzenia i systemy plików. Wpisz ,,help var'', żeby uzyskać listę zmiennych. UUwwaaggaa:: komenda bootopt występuje tylko w systemie AlphaPC64 (i podobnych). Odwołaj się do dokumentacji płyty, żeby dowiedzieć się, co ona znaczy. UUrrzząąddzzeenniiaa. Dopóki nie użyjesz komendy, która musi użyć urządzenia, nie będzie miała miejsca jego inicjalizacja. Pierwsze show, ls, boot lub run, zawsze spowodują inicjalizację urządzeń w MILO. Urządzenia są nazywane dokładnie w ten sam sposób, co w Linuxie. A więc, pierwszy dysk IDE będzie nazywać się ,,hda'', a pierwsza partycja ,,hda1''. Użyj komendy ,,show'', żeby wyświetlić dostępne urządzenia. SSyysstteemmyy pplliikkóóww. MILO obsługuje trzy systemy plików - MSDOS, EXT2 i ISO9660. Jeżeli urządzenie jest dostępne w systemie, można wykonać komendy ls, boot i run na obrazie zapisanym na tych systemach plików. Standardowy system MILO to EXT2, dlatego będziesz musiał powiedzieć MILO, że obecny jest inny system plików. Wszystkie komendy używające nazw plików pozwalają przekazać do nich typ systemu plików, używając opcji -t [nazwa systemu plików]. A więc jeżeli chcesz wyświetlić zawartość CD ROMu SCSI, możesz napisać: MILO> -t iso9660 scd0: ZZmmiieennnnee.. MILO posiada kilka ustawialnych zmiennych, ułatwiających proces ładowanie. Jeżeli ładujesz MILO przez Windows NT ARC, MILO używa zmiennych ustawionych przez to firmware. W niektórych systemach (np. AlphaPC64), MILO tworzy własną listę zmiennych, które nie zmieniają się przy każdym ładowaniu. Są to: MILO> help var Variables that MILO cares about: MEMORY_SIZE - System memory size in megabytes BOOT_DEV - Specifies the default boot device BOOT_FILE - Specifies the default boot file BOOT_STRING - Specifies the boot string to pass to the kernel SCSIn_HOSTID - Specifies the host id of the n-th SCSI controller. AUTOBOOT - If set, MILO attempts to boot on powerup and enters command loop only on failure. AUTOBOOT_TIMEOUT - Seconds to wait before auto-booting on powerup. ------------------------------------------------------------------------------------ MILO> help var Zmienne, na które uważa MILO: MEMORY_SIZE - Rozmiar pamięci systemu w megabajtach BOOT_DEV - Definiuje domyślne urządzenie ładowania BOOT_FILE - Definiuje domyślny plik ładowania BOOT_STRING - Definiuje tekst przekazywany do jądra podczas startu SCSIn_HOSTID - Definiuje identyfikator hosta n-tego kontrolera SCSI. AUTOBOOT - Jeżeli jest ustawiona, MILO próbuje ładować system po włączeniu zasilania i przechodzi do linii komend tylko w przypadku błedu. AUTOBOOT_TIMEOUT - Ile sekund MILO ma czekać przed autoładowaniem. 66..22.. ŁŁaaddoowwaanniiee LLiinnuuxxaa Komenda boot ładuje jądro Linuxa. Musi się ono znajdować na dysku w formacie EXT2 (SCSI, IDE lub na dyskietce), lub na kompakcie w formacie ISO9660. Obraz może być spakowany gzipem, MILO rozpozna go wtedy po rozszerzeniu Zauważ, że wersja MILO nie musi odpowiadać wersji jądra, które ładujesz. Linuxa ładuje się następującą komendą: MILO> boot [-t system-plików] urządzenie:nazwa-pliku [[opcja-ładowania] [opcja-ładowania] ...] Gdzie urządzenie jest nazwą pliku urządzenia, którego chcesz używać, a nazwa-pliku jest nazwą obrazu jądra Linuxa. Wszystkie argumenty podane po nazwie pliku są przekazywane bezpośrednio do jądra. Jeżeli instalujesz Red Hat'a, będziesz musiał podać urządzenie / i nie tylko. Powinieneś użyć komendy MILO> boot fd0:vmlinux.gz root=/dev/fd0 load_ramdisk=1 MILO będzie automatycznie zawierał urządzenia wkompilowane w twój vmlinux. Testowałem sterowniki do stacji dysków, IDE i kilka sterowników SCSI (np. NCR 810). Wszystkie działają poprawnie. Ważne jest też poprawne ustawienie identyfikatora hosta SCSI. Domyślnie MILO zainicjalizuje go na najwyższej możliwej wartości (7), co powinno działać poprawnie. Jednakże jeżeli chcesz, możesz i tak ustawić identyfikator hosta _n-tego kontrolera SCSI w systemie, ustawiając zmienną środowiskowąSCSI_n_HOSTID na odpowiednią wartość. Na przykład, żeby ustawić hostid pierwszego kontrolera na 7, powinieneś wpisać następujące polecenie w linii poleceń MILO: setenv SCSI0_HOSTID 7 66..33.. RReesseettoowwaanniiee LLiinnuuxxaa Czasami będziesz chciał przeładować działającego Linuxa komendą shutdown -r now. W takim przypadku jądro Linuxa oddaje kontrolę MILO (przez odwołanie CallPAL HALT). Z tego powodu MILO zostawia skompresowaną kopię samego siebie w pamięci i wykrywa że system jest przeładowywany, korzystając z informacji przetrzymywanych w HWRPB (Hardware Restart Parameter Block, Blok Parametrów Restartu Urządzenia). Zaczyna wtedy przeładowanie, używając dokładnie tej samej komendy, która została użyta do ładowania jądra Linuxa ostatnim razem. MILO czeka przez 30 sekund przed ponownym załadowaniem jądra, co pozwala przerwać ten proces i załadować inne jądro, w jakikolwiek sposób. 66..44.. KKoommeennddaa ,,,,bboooottoopptt'''' W systemach z pamięcią flash, takich jak AlphaPC64, EB164 i EB66+ istnieje kilka opcji ładowania. Są one zmieniane komendą bootopt. Posiada ona jeden argument, numer dziesiętny, który jest typem obrazu do załadowania po włączeniu zasilania/przeładowaniu systemu. 00 Ładowanie Monitora Płyt Ewaluacyjnych, 11 Ładowanie firmware'u Windows NT ARC. W celu ładowania MILO z pamięci flash, potrzebna jest opcja inicjalizacyjna, znacząca ,,załaduj N-ty obraz z pamięci flash''. Jako argument, musisz podać 128 + N, więc jeżeli MILO jest trzecim obrazem, użyjesz komendy MILO> bootopt 131 UUwwaaggaa:: Bądź bardzo ostrożny z tą komendą. Nigdy nie ustawiaj bootopt na 0 (Monitor Płyt Ewaluacyjnych), zamiast tego użyj zworek na płycie głównej. 77.. UUżżyywwaanniiee pprrooggrraammuu zzaarrzząąddzzaajjąącceeggoo ppaammiięęcciiąą ffllaasshh Komenda run jest używana do uruchamiania programu zarządzającego pamięcią flash (flash management utility, dalej będę nazywał go ,,fmu'' - przyp. tłum.). Zanim zaczniesz, będziesz potrzebował urządzenia dostępnego MILO i zawierającego fmu. Może on być (tak jak vmlinux) spakowany gzipem. Fmu uruchamia się następującą komendą: MILO> fd0:fmu.gz Kiedy program zostanie załadowany i zainicjalizowany, fmu poda trochę informacji o urządzeniu flash, oraz wyświetli linię poleceń. Znowu, komenda help jest bardzo użyteczna. Linux MILO Flash Management Utility V1.0 Linux MILO Flash Management Utility V1.0 Flash device is an Intel 28f008SA Urządzenie flash to Intel 28f008SA 16 segments, each of 0x10000 (65536) bytes 16 segmentów, każdy po 0x10000 (65536) bajtów Scanning Flash blocks for usage Wykrywam zajętość bloków Flash Block 12 contains environment variables Blok 12 zawiera zmienne środowiskowe FMU> FMU> UUwwaaggaa:: W systemach obsługujących zmienne środowiskowe, gdzie istnieje więcej niż jeden blok flash (np. AlphaPC64), fmu będzie szukał bloku na zmienne środowiskowe MILO. Jeżeli taki blok istnieje, fmu powie, gdzie się on znajduje. Jeśli nie, musisz użyć komendy environment, żeby ustawić blok i go zainicjalizować. W powyższym przykładzie, blok 12 zawiera zmienne środowiskowe MILO. 77..11.. KKoommeennddaa ,,,,hheellpp'''' FMU> help FMU command summary: list - List the contents of flash program - Program an image into flash quit - Quit environment - Set which block should contain the environment variables bootopt num - Select firmware type to use on next power up help - Print this help text FMU> ------------------------------------------------------------------------------------ FMU> help Opis komend FMU: list - Wyświetl zawartość pamięci flash program - Zapisz obraz w pamięci flash quit - Zakończ program environment - Ustaw blok, który powinien zawierać zmienne środowiskowe bootopt numer - Wybierz typ firmware'u do użycia przy następnym uruchomieniu help - Wyświetl ten tekst pomocy FMU> UUwwaaggaa:: Komendy environment i bootopt są dostępne tylko w płytach EB66+, AlphaPC64, EB164 i PC164 (i ich klonach). 77..22.. KKoommeennddaa ,,,,lliisstt'''' Komenda ,,list'' pokazuje zawartość pamięci flash. Jeżeli istnieje więcej niż jeden blok, pokazana jest zawartość każdego. W poniższym przykładzie możesz zobaczyć, że Windows NT ARC używa blok 4-7 i blok 15. FMU> list Flash block: 0:DBM 1:DBM 2:DBM 3:WNT 4:WNT 5:WNT 6:WNT 7:WNT 8:MILO 9:MILO 10:MILO 11:MILO 12:MILO 13:U 14:U 15:WNT Listing flash Images Flash image starting at block 0: Firmware Id: 0 (Alpha Evaluation Board Debug Monitor) Image size is 191248 bytes (3 blocks) Executing at 0x300000 Flash image starting at block 3: Firmware Id: 1 (Windows NT ARC) Image size is 277664 bytes (5 blocks) Executing at 0x300000 Flash image starting at block 8: Firmware Id: 7 (MILO/Linux) Image size is 217896 bytes (4 blocks) Executing at 0x200000 FMU> ------------------------------------------------------------------------------------ FMU> list Bloki Flash: 0:DBM 1:DBM 2:DBM 3:WNT 4:WNT 5:WNT 6:WNT 7:WNT 8:MILO 9:MILO 10:MILO 11:MILO 12:MILO 13:U 14:U 15:WNT Wyświetlam Obrazy Flash Obraz Flash (początek - blok 0) Firmware Id: 0 (Alpha Evaluation Board Debug Monitor) Rozmiar obrazu: 191248 bajtów (3 bloki) Wykonuje się na 0x300000 Obraz Flash (początek - blok 3) Firmware Id: 1 (Windows NT ARC) Rozmiar obrazu: 277664 bajtów (5 bloków) Wykonuje się na 0x300000 Obraz Flash (początek - blok 8) Firmware Id: 7 (MILO/Linux) Rozmiar obrazu: 217896 bajtów (4 bloki) Wykonuje się na 0x200000 FMU> 77..33.. KKoommeennddaa ,,,,pprrooggrraamm'''' Fmu zawiera skompresowaną kopię obrazu flash MILO. Komenda ,,program'' pozwala zapisać ten obraz w pamięci flash. Komenda ta pozwoli ci wycofać się, ale zanim ją uruchomisz, powinieneś użyć komendy ,,list'', żeby zobaczyć gdzie nagrać MILO. Jeżeli MILO znajduje się już w pamięci flash, fmu zapyta się, czy go skasować. FMU> program Image is: Firmware Id: 7 (MILO/Linux) Image size is 217896 bytes (4 blocks) Executing at 0x200000 Found existing image at block 8 Overwrite existing image? (N/y)? y Do you really want to do this (y/N)? y Deleting blocks ready to program: 8 9 10 11 Programming image into flash Scanning Flash blocks for usage FMU> ------------------------------------------------------------------------------------ FMU> program Obraz: Firmware Id: 7 (MILO/Linux) Rozmiar obrazu: 217896 bajtów (4 bloki) Wykonuje się na 0x200000 Znaleziono istniejący obraz w bloku 8 Nadpisać istniejący obraz? (N/y)? y Czy napewno chcesz to zrobić? (y/N)? y Kasowanie bloków do programowania: 8 9 10 11 Programowanie obrazu do pamięci flash Szukanie zajętych bloków Flash FMU> Poczekaj, aż proces zostanie zakończony przed wyłączeniem systemu. UUwwaaggaa:: Nie mogę wyrazić dostatecznie mocno, jak musisz być ostrożny, żeby nie nadpisać istniejącego obrazu flash, który może być ci potrzebny, lub nie zniszczyć swojej płyty głównej. Dobrą zasadą jest niekasowanie Monitora Ewaluacyjnego. (!!! - przyp. tłum.) 77..44.. KKoommeennddaa ,,,,eennvviirroonnmmeenntt'''' Wybiera blok flash mający zawierać zmienne środowiskowe MILO. 77..55.. KKoommeennddaa ,,,,bboooottoopptt'''' Jest to ta sama komenda, co istniejąca w MILO, zobacz sekcję (``Komenda ,,bootopt''''). 77..66.. KKoommeennddaa ,,,,qquuiitt'''' Jest to raczej bez znaczenia. Jedyna droga powrotna do MILO (lub czegokolwiek innego), kiedy fmu działa, to restart systemu. 88.. OOggrraanniicczzeenniiaa Niestety, świat nie jest doskonały, jest więc jak zawsze parę ograniczeń, o których powinieneś wiedzieć. MILO nie jest przeznaczony do ładowania systemów operacyjnych innych niż Linux, jednakże może ładować obrazy łączone do działania w tym samym miejscu pamięci co Linux (czyli 0xFFFFFC0000310000). W ten sposób może działać fmu. Źródła kodu PAL załączone w miniboot/palcode/_c_o_ś_t_a_m są poprawne, jednakże są problemy, kiedy zostają zbudowane przy użyciu najnowszego gas (assembler GNU - przyp. tłum.). _M_o_ż_n_a kompilować je, używając bardzo starego gas'a załączonego w oprogramowanu do Płyt Ewaluacyjnych Alpha (i w ten sposób zostały zbudowane). Próbuję namówić kogoś, żeby naprawił nowy gas. Obecnie jednak, jako obejście, umieściłem pre- kompilowany kod PAL dla obsługiwanych płyt, a David Mosberger-Tang umieścił naprawiony gas na swoim serwerze ftp. 99.. RRoozzwwiiąązzyywwaanniiee pprroobblleemmóóww Oto kilka często spotykanych problemów razem z rozwiązaniami. CCzzyyttaanniiee ddyysskkiieetteekk MMSS--DDOOSS zz MMoonniittoorraa PPłłyytt EEwwaalluuaaccyyjjnnyycchh.. Niektóre starsze wersje Monitora Płyt Ewaluacyjnych (przed 2.0) miały problemy z odczytywaniem dyskietek w formacie DOS zapisanych pod Linuxem. Zazwyczaj Monitor może wczytać kilka pierwszych sektorów, ale po chwili wchodzi w nieskończoną pętlę błędów o złych sektorach. Istnieje też pewna niekompatybilność między formatem DOS oczekiwanym przez Monitor Ewaluacyjny, a Linuxową implementacją DOSFS. Żeby skrócić tą długą historię: jeżeli napotkasz ten problem, spróbuj użyć DOS'a do zapisania dyskietki. Na przykład jeżeli nie ładuje się plik MILO.cab, użyj komputera z DOSem - włóż dyskietkę i napisz: copy a:MILO.cab c: copy c:MILO.cab a: del c:MILO.cab Spróbuj ponownie wystartować MILO z tej dyskietki. Powinno to rozwiązać problem. MMIILLOO wwyyśśwwiieettllaa ddłłuuggąą sseekkwweennccjjęę zznnaakkóóww ,,,,oo>>'''' ii nniiee pprrzzyyjjmmuujjee ppoolleecceeńń.. Dzieje się to zazwyczaj kiedy MILO został skompilowany z portem COM1 jako drugorzędnym urządzeniem konsoli. W takim przypadku, MILO kopiuje wyjście na port COM1 i akceptuje wejście również z tego portu. Jest to świetne do wykrywania błędów, ale nie tak świetne jeżeli masz podłączone coś innego niż terminal. Jeżeli to się dzieje, odłącz lub wyłącz to urządzenie, do chwili uruchomienia jądra Linuxa. Kiedy Linux działa, wszystko będzie działało tak jak powinno. MMIILLOO sskkaarrżżyy ssiięę nnaa zzłłyy nnuummeerr mmaaggiicczznnyy oobbrraazzuu jjąąddrraa Starsze wersje MILO nie obsługiwały formatu binarnego ELF, nie mogły więc rozpoznać obrazu ELF. Jeżeli napotkasz ten problem, ściągnij najnowszą wersję MILO. Wszystkie wersje po 2.0.20 obsługują ELF. Z drugiej strony, może to być wina zniszczonego obrazu. Powinieneś też pamiętać, że MILO sam nie rozpoznaje jeszcze obrazów skompresowanych GZIP'em - musisz dodać rozszerzenie ,,.gz'' do nazwy pliku. MMIILLOO wwyyśśwwiieettllaa ,,,,......ttuurrnniinngg oonn vviirrttuuaall aaddddrreessssiinngg aanndd jjuummppiinngg ttoo tthhee LLiinnuuxx KKeerrnneell'''' ii nniicc ssiięę nniiee ddzziieejjee Oczywisty problem, to to, że jądro jest źle skompilowane, albo skompilowane na inny system Alpha. Inny to kompilacja jądra na urządzenie VGA, kiedy płyta posiada TGA (Zlxp) (lub odwrotnie). Dobrze jest wbudować w jądro wyjście na COM1 i podłączyć terminal, lub spróbować użyć jądro z dystrybucji Linuxa, którą zainstalowałeś. MMIILLOO nniiee rroozzppoozznnaajjee ddyysskkuu SSCCSSII Standardowe obrazy MILO posiadają wszystkie stabilne (dla Alphy) sterowniki urządzeń (na razie są to NCR 810, QLOGIC ISP, Buslogic i Adaptec 2940/3940) (uwaga - jest to stare HOWTO, a więc dużo się zmieniło - przyp. tłum.). Jeżeli twoja karta nie jest dołączona, może to znaczyć, że sterownik dla Alphy nie jest jeszcze stabilny. Spróbuj użyć najnowszych obrazów MILO. Możesz dowiedzieć się, jakie urządzenia SCSI zostały wkompilowane w obraz MILO, używając komendy ,,show''. 1100.. PPooddzziięękkoowwaanniiaa Chciałbym podziękować: ˇ Eric'owi Rasmussen'owi i Eillen Samberg - autorom PALcode, ˇ Jim'owi Paradis'owi za sterownik klawiatury i oryginalny interfejs MILO, ˇ Jay'owi Estabrook'owi za jego pomoc i poprawki, ˇ David'owi Mosberger-Tang'owi za darmowy kod emulacji BIOS'u i jego pomoc, ˇ i jako ostatniemu (ale _n_i_e najmniej ważnemu) Linus'owi Torvalds'owi za kod zegara i jądro Linuxa. Jest jeszcze kilka rzeczy, które powinny być zrobione, więc jeżeli chcesz coś dodać, daj mi znać (david.rusling@reo.mts.dec.com), żebyśmy nie duplikowali swoich wysiłków. Na końcu, duże ,,dziękuję'' dla Digitala, za produkowanie tak świetnego procesora (i płacenie mi za to). 1111.. OOdd ttłłuummaacczzaa Jeżeli znajdziesz jakieś błędy, daj mi znać.