ďťż

MILO

Lemur zaprasza

MILO HOWTO

Autor: David A. Rusling
david.rusling@reo.mts.dec.com
v0.84, 6 Grudnia 1996
Wersja polska: Leszek Urbański
tygrys@fidonet.org.pl
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 standardzie ISO-8859-2. Oryginał tego dokumentu
znajduje się pod adresem ftp://gatekeeper.dec.com/pub/Digital/Linux-Alpha/Miniloader/docs.

1. Wprowadzenie


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.

1.1 Prawa autorskie


Prawa autorskie Alpha Miniloader (MILO) HOWTO: Copyright (C) 1995, 1996 David A.
Rusling.
Prawa autorskie. 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 chciałby 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.
Oświadczenie. 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.

1.2 Nowe wersje tego dokumentu


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/.

2. Co to jest MILO?


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:


PALcode,
Kod uruchamiania pamięci (buduje tablice stronicowania i włącza adresowanie
wirtualne),
Kod grafiki (emulacja BIOSu i TGA (21030)),
Kod jądra Linuxa. Na niego składa się prawdziwy kod (np. obsługa przerwań)
i pseudo-jądro,
Sterowniki urządzeń blokowych Linuxa (np. sterownik stacji dysków),
Obsługa systemu plików (ext2, MS-DOS i ISO9660),
Kod interfejsu użytkownika (MILO)
Kod interfejsu jądra (uruchamia HWRPB i mapę pamięci dla Linuxa),
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
większość 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
.gz.
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.

3. Standardowe, pre-kompilowane obrazy MILO


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/MiniloaderPodkatalog images zawiera po jednym podkatalogu na każdy system (np.
AlphaPC64), a obrazy MILO są nazywane w następujący sposób:


MILO - wykonywalny obraz MILO, może on być ładowany na wiele sposobów,
fmu.gz - Program zarządzania pamięcią flash,
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.

4. Kompilacja MILO


(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 moż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 PRZED 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.

5. Ładowanie MILO


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


5.1 Ładowanie MILO z firmware'u Windows NT ARC


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:


W menu ładowania (boot menu) wybierz ,,Supplementary menu...'' (menu
dodatkowe)
W menu ,,Supplementary menu'' wybierz opcję ,,Set up the system...''
(ustaw system)
W Setup menu wybierz ,,Manage boot selection menu...''
(menu zarządzania opcjami ładowania)
W ,,Boot selections menu'' wybierz ,,Add a boot selection''
(dodaj opcję ładowania)
Wybierz ,,Floppy Disk 0''
Wprowadź ,,linload.exe'' jako katalog i nazwę pliku ładowacza systemu
(osloader)
Odpowiedz ,,tak'' na pytanie czy system operacyjny znajduje się na tej samej
partycji co ładowacz systemu
Wprowadź ,,\'' jako katalog główny systemu operacyjnego
Zazwyczaj wpisuję ,,Linux'' jako nazwę tej opcji ładowania
Odpowiedz ,,nie'' na pytanie o inicjalizację debuggera podczas ładowania
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ś
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).
Nasiśnij ESC żeby wrócić do ,,Boot selections menu''
Wybierz ,,Setup Menu'' (lub naciśnij jeszcze raz ESC), a w nim
,,Supplementary menu'' i ,,Save Changes''
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''.

5.2 Ładowanie MILO z ,,Evaluation Board Debug Monitor''


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
napewno 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 <nazwa-obrazu-MILO>



5.3 Ładowanie MILO z ,,bezpiecznej dyskietki startowej''


Tylko AXPPCI33 napewno 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.)

5.4 Ładowanie MILO z pamięci Flash


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)


5.5 Ładowanie MILO z konsoli SRM


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 napewno posiadają konsolę SRM:


NoName (Sekcja
NoName)
AlphaPC64 (Sekcja
AlphaPC64)
EB164 (Sekcja
EB164)
PC164 (Sekcja
PC164)


5.6 Informacje o płytach głównych



AXPPCI33 (NoName)


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).

AlphaPC64 (Cabriolet)


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 zawsze 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.
(NIE fl/net boot tylko load - 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.

EB66+


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).

EB64+/Aspen Alpine


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.

Universal Desktop Box (Multia)


Jest to system bardzo kompaktowy, sprzedawany jako cały komputer, oparty na 21066.
Posiada on urządzenie graficzne TGA (21030). Chociaż można wepchnąć 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).

EB164


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).

PC164


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).

XL266


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.

Uwaga: 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ń.

Platform2000


Jest to system oparty na 233MHz 21066.

6. Interfejs użytkownika MILO


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.

6.1 Komenda ,,help''


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.


Uwaga: komenda bootopt występuje tylko w systemie AlphaPC64
(i podobnych). Odwołaj się do dokumentacji płyty, żeby dowiedzieć się, co ona
znaczy.
Urządzenia. 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.
Systemy plików. 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:


Zmienne. 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.



6.2 Ładowanie Linuxa


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
.gz.
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ąSCSIn_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



6.3 Resetowanie Linuxa


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.

6.4 Komenda ,,bootopt''


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.
0 Ładowanie Monitora Płyt Ewaluacyjnych,
1 Ł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


Uwaga: 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.

7. Używanie programu zarządzającego pamięcią flash


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>


Uwaga: 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.

7.1 Komenda ,,help''





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>


Uwaga: Komendy environment i bootopt są dostępne tylko
w płytach EB66+, AlphaPC64, EB164 i PC164 (i ich klonach).

7.2 Komenda ,,list''


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>



7.3 Komenda ,,program''


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.
Uwaga: 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.)

7.4 Komenda ,,environment''


Wybiera blok flash mający zawierać zmienne środowiskowe MILO.

7.5 Komenda ,,bootopt''


Jest to ta sama komenda, co istniejąca w MILO, zobacz sekcję (
Komenda ,,bootopt'').

7.6 Komenda ,,quit''


Jest to raczej bez znaczenia. Jedyna droga powrotna do MILO (lub czegokolwiek
innego), kiedy fmu działa, to restart systemu.

8. Ograniczenia


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/cośtam są poprawne,
jednakże są problemy, kiedy zostają zbudowane przy użyciu najnowszego gas
(assembler GNU - przyp. tłum.). Można 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.

9. Rozwiązywanie problemów


Oto kilka często spotykanych problemów razem z rozwiązaniami.
Czytanie dyskietek MS-DOS z Monitora Płyt Ewaluacyjnych.
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.
MILO wyświetla długą sekwencję znaków ,,o>'' i nie przyjmuje poleceń.
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.
MILO skarży się na zły numer magiczny obrazu jądra
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.
MILO wyświetla ,,...turning on virtual addressing and jumping to the Linux
Kernel'' i nic się nie dzieje
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ś.
MILO nie rozpoznaje dysku SCSI
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''.

10. Podziękowania


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 nie 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).

11. Od tłumacza


Jeżeli znajdziesz jakieś błędy,
daj mi znać.
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • teen-mushing.xlx.pl
  • Wątki
    Powered by wordpress | Theme: simpletex | © Lemur zaprasza