ďťż

Blog literacki, portal erotyczny - seks i humor nie z tej ziemi


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ć.
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • qualintaka.pev.pl
  •