OpenBSD Amigán

Már régóta fúrja az oldalam, hogy van OpenBSD Amigára, de eddig valahogy nem nagyon bírtam magam rávenni, hogy nekiessek és kipróbáljam. Na, de majd most. Megfelelő hardware (A4000/040) híján csak emulátorból.

Annyit tudni kell róla, hogy az utolsó OpenBSD, ami támogatta az Amigát, az a 2002-es 3.2, azaz idestova 17 éves; nem egy mai darab. Az AmiNet-en fent van ugyan egy csomagban az összes set, meg a kernel, de ezzel nem megyünk semmire, mert hiányoznak belőle a tool-ok, amikkel bármit is lehetne kezdeni velük Amigán - különösen a loadbsd, az mindenképpen kell...
Ennek megfelelően le kellene rántani egy mirrorból az egészet:

mkdir /tmp/OpenBSD-3.2-Amiga
cd /tmp/OpenBSD-3.2-Amiga
mkdir tools
cd tools
wget http://ftp.nluug.nl/OpenBSD/3.2/amiga/tools/device-streams.tgz 
wget http://ftp.nluug.nl/OpenBSD/3.2/amiga/tools/devtostream
wget http://ftp.nluug.nl/OpenBSD/3.2/amiga/tools/loadbsd
wget http://ftp.nluug.nl/OpenBSD/3.2/amiga/tools/rdbinfo
wget http://ftp.nluug.nl/OpenBSD/3.2/amiga/tools/streamtodev
wget http://ftp.nluug.nl/OpenBSD/3.2/amiga/tools/xdevtostream
wget http://ftp.nluug.nl/OpenBSD/3.2/amiga/tools/xstreamtodev
cd ..
wget http://ftp.nluug.nl/OpenBSD/3.2/amiga/CKSUM
wget http://ftp.nluug.nl/OpenBSD/3.2/amiga/INSTALL.amiga
wget http://ftp.nluug.nl/OpenBSD/3.2/amiga/MD5
wget http://ftp.nluug.nl/OpenBSD/3.2/amiga/base32.tgz
wget http://ftp.nluug.nl/OpenBSD/3.2/amiga/bsd
wget http://ftp.nluug.nl/OpenBSD/3.2/amiga/bsd.rd
wget http://ftp.nluug.nl/OpenBSD/3.2/amiga/comp32.tgz
wget http://ftp.nluug.nl/OpenBSD/3.2/amiga/etc32.tgz
wget http://ftp.nluug.nl/OpenBSD/3.2/amiga/game32.tgz
wget http://ftp.nluug.nl/OpenBSD/3.2/amiga/index.txt
wget http://ftp.nluug.nl/OpenBSD/3.2/amiga/man32.tgz
wget http://ftp.nluug.nl/OpenBSD/3.2/amiga/miniroot32.fs
wget http://ftp.nluug.nl/OpenBSD/3.2/amiga/misc32.tgz
wget http://ftp.nluug.nl/OpenBSD/3.2/amiga/xbase32.tgz
wget http://ftp.nluug.nl/OpenBSD/3.2/amiga/xfont32.tgz
wget http://ftp.nluug.nl/OpenBSD/3.2/amiga/xserv32.tgz
wget http://ftp.nluug.nl/OpenBSD/3.2/amiga/xshare32.tgz

Namármost, ebből lehetne ugyan ISO-t is készíteni, de az OpenBSD utána nem fogja megtalálni az IDE portra aggatott CD meghajtót, miközben az Amiga maga látja és olvassa. Persze ez lehet az emulátor sara is. Ha valaki mégis képet csinálna belőle:

mkisofs -l -J -R -V OpenBSD-3.2-Amiga -input-charset iso8859-1 -o OpenBSD-3.2-Amiga.iso OpenBSD-3.2-Amiga

No, akkor lőjük fel az emulátort, össze a környezetet és le bilgécet. Az sose árt.

Kezdetnek a quick configurationban mondjuk neki, hogy A4000/040, aztán lehet finomhangolni. Annyit tudni kell, hogy bár a manual azt állítja, hogy a 060-as AGA gépek támogatva vannak, ha 060-as CPU-t állítunk be, akkor a loadbsd után csak egy darab kernel panicot fogunk kapni. Most vagy a manual hazudik, vagy az emulátornak van valami gyíkja. Mindenesetre a következő összeállítással működött (MMU/FPU musthave):

Utána rakjuk össze a memóriát. Itt is fontos, hogy vagy az alaplapi FastRAM-ot használjuk, vagy a Z3-ast, ha mind a kettő van, akkor a loadbsd beszól, hogy a címtér kissé inkonzisztens, kissé fragmentált, aztán visszaadja a promptot. Tehát vagy egyik vagy másik:

Aztán, most össze kéne állítani egy mini AmigaOS környezetet, ahol majd a merevlemezeket lehet partícionálni (HDInstTools-szal), meg scripteket írni, stb. Ezt én összeraktam - megspórolom annak, aki szintén szeretne ezzel szívni (bár alig hiszem, hogy lesz ilyen) - elérhető itt: http://oscomp.hu/depot/HDInstTools_v6.9.adf
Ezt kéne felbootolni:

Most következnek a merevlemezek; igen, többen lesznek, mert mint kitárgyaltuk, az OpenBSD nem látja a CD-t. Namármost, a WinUAE lehetővé teszi, hogy egy könyvtárat felcsatoljunk, mintha egy merevlemez partíciója lenne, csak az OpenBSD ezt sem látja. Nem tudom, hogy miért, talán az emulátor SCSI-ként csatolja őket, az OpenBSD meg csak az IDE eszközöket látja (csak akkor meg nem értem, hogy a CD-t miért nem látja, de mindegy...). Ennek megfelelően a cél merevlemez mellett kell még egy "bridge" merevlemez is, ami egy az emulátor IDE portjára aggatott HDF-ben van.

Tehát menjünk be a merevlemezekhez és adjunk hozzá egy hardfile-t. Ha feljön az ablak, akkor lent, a "Create" gomb mellett írjuk be a méretét (400 MB elég lesz), majd bökjünk rá a gombra. Ekkor feldob egy fájlválasztó-dialógust és megadhatjuk neki, hogy hova kérjük; ezt be is rakja felül a path-ba. A vezérlőt föltétlen állítsuk át az UAE sajátjáról az A600/A1200/A4000 IDE vezérlőjére. Bökjünk rá a "Full drive/RDB mode" gombra. Aki akarja, a "Device"-ot is kitöltheti. Ezzel készen is vagyunk.

No, akkor ugyanezt mégegyszer, csak most elég lesz 128 MB is, valamint a "HD Controller"-ben a unit legyen "1".

Jöhet a külső könyvtár, azt csak meg kell adni neki, meg nem ártana beírni neki valami device, ill. volume nevet is.

Ha mindent jól csináltunk, nagyjából így fog kinézni a dolog:

Bootoljunk be.
Felkelés után nyissuk ki a floppy-t és indítsuk el a HDInstTools-t.

Bökjünk a második lemezre és mondjuk neki, hogy "Partition drive..." Kapunk egy partíciólistát, ami egyelőre üres, de adjunk hozzá egy partíciót, majd szerkesszük. A fájlrendszer legyen FFS (az igazából mindegy, hogy IFS, meg cache van-e), a többit ne piszkáljuk, kivéve a "MaxTransfer"-t: ez 0x1FE00 legyen, mert ez adja meg, hogy egyszerre mekkora mennyiségű adatot ránthat be a merevlemezről és mivel az ATA szabványú meghajtók parancsainak szektorszámlálója 8-bites - azaz max. 255 lehet - így maximum 255 blokkot tud egyszerre olvastatni. (255*512=0x1fe00)

Ha megvagyunk az összelövéssel, okézzuk le, majd a partíciólistát is, aztán mondjuk, hogy mentse ki a lemezre a változtatásokat. Aztán rebootot kér.
Ha bebootolt, indítsuk el megint a HDInstTools-t és a második diszkre kérjünk formatot. Csak egy partíciója van, legyen FFS, majd quickformat.

Na, jöhet a másik merevlemez. A manual két partíciót ír elő, egyet a root-nak, egyet a swap-nek. Csakhogy ez így nem lesz jó, mert az Amiga nem fogja tudni felbootolni így az OpenBSD-t, tehát kelleni fog egy harmadik partíció is, ami normál, bootolható AmigaDOS partíció.

Tehát, először adjunk hozzá egy partíciót, a "File System" legyen "Custom", a "DOSType" pedig "NBR\7". Az "Automount" és a "Bootable" legyen kikapcsolva. A méret mindegy, de legalább 250 MB kell. A boot partíciónak elég kb. 4 MB, a swap-nek meg 64 MB, így ez kb. 330 MB lett.
Az OpenBSD a "Mask", ill. "MaxTransfer" értékeket nem használja, tehát mindegy. A "Reserved" viszont nulla legyen.

Jöhet a második partíció a swap-nek. Ahogy mondtam: a méret 64 MB, a "DOSType" itt "NBS\1", a többi nem változik.

Most jön a boot partíció. Ez megkaphatja a maradék helyet, a fájlrendszer valamilyen FFS legyen, továbbá legyen bootolható és automountos is. Mivel ezt a partíciót az Amiga fogja kezelni, így itt be kell állítani a "MaxTransfer"-t is. (0x1FE00)


Utána okézzuk le a partíciós listát, majd ismét mentsük ki a változtatásokat. Aztán reboot.
Utána ismét elindítjuk a HDInstTools-t és formázzuk meg az első lemez 3. partícióját.

Már majdnem megvagyunk az előkészületekkel, csak az utolsó simítások vannak még hátra. Először is, mivel szeretnénk, ha bootolható lenne a rendszer, át kéne másolni egy-két dolgot a boot-partícióra, meg megírni az indítóscriptet (S:startup-sequence), meg a telepítőt is át kell másolni arra a lemezre, amit látni is fog az OpenBSD. Tehát nyissunk egy shell-t, mégpedig úgy, hogy jobb Amiga + E, vagy a menüben "execute" és írjuk be: newcli.

Először is, csináljuk meg az indítót (itt most a DH2: a boot partíció, de ez mindenkinek úgy, hogy a layoutot kialakította, ld. a partícionálóban.)

makedir dh2:S
ed dh2:S/startup-sequence

Ekkor elindul az ed és írjuk be az indítóscript egyetlen sorát

loadbsd bsd

majd mentsük ki.

Mint korábban látszott, a host rendszer könyvtárát én OBSDD: kötetnévvel csatoltam fel, tehát onnan kell másolni. Először a boot-partícióra a loadbsd tool-t, meg a kernelt (bsd):

copy obsdd:bsd dh2:
copy obsdd:tools/loadbsd dh2:

Utána jöhet a telepítőkészlet a másik merevlemezre (IDH0:):

copy obsdd: idh0: all noreq

Ha ez megvan, akkor lehet indítani a BSD-t.
Az OpenBSD két kernelt ad, az egyik a RAM disk-es, a másik a fájlrendszeres. A telepített majd természetesen a fájlrendszeressel kel fel, de nekünk most a RAM disk-es kell, tehát:

idh0:tools/loadbsd idh0:bsd.rd

És indul a rendszer. (Egyébként az speciel mindegy, hogy a betöltést a hardfile-os lemezről, vagy a csatolt könyvtárból végezzük el, mert azt még az Amiga csinálja, de utána a csatolt könyvtár eltűnik a süllyesztőbe.)

Oké, tehát elindult az OpenBSD, kérdi, hogy mi legyen, mondjuk neki, hogy telepíteni szeretnénk, azaz "i". Kérdi a terminál típusát (jó a VT220), aztán lehet neki mondani, hogy, igen, telepítsünk ("y"), a cél lemez pedig az sd0, utána "done", az sd1-et ne rondítsa össze. Miután leokéztuk ("y"), megformázza a partíciókat.

Namármost, a manual azt állítja, hogy csak akkor van minden rendben, ha csak annyi errort kapunk, hogy

newfs: ioctl (WDINFO): Invalid argument
newfs: /dev/rsd0a: can't rewrite disk label

Csakhogy ez nem igaz, a képen is látszik, hogy kaptunk olyan errort is, hogy:

ide: unhandled SCSI command 35
ide: request sense 04 -> 05 20

Nem tudom, hogy ezt mi okozza, de ugyanolyan harmless, mint a másik message; a formázás sikeres volt.

No, ezután kéri a hostnevet, a root jelszót, majd megkérdi, hogy konfigjuk-e a hálózatot (most ne: "n"), utána végre rátér, hogy honnan is akarunk települni: disk-ről, azaz "d" és sd1, annak is a d slice-ja. Utána azt kérdi meg, hogy a forráslemezen mi a relatív útvonal a set-ekhez. Mivel a gyökérbe hánytuk ki, így "/".

Ezután felkínálja a lehetséges set-eket. Mondjuk neki, hogy "all", majd "done". Aztán hajrá. ("y")


Elszuttyog egy jó darabig, majd kéri az időzónát: "Europe/Budapest"
Utána lehet halt-olni a rendszert.

Megállás után lehet kiebrudalni a floppy-t, majd reboot.
Felkel az OpenBSD és miután legenerálta magának a vackait (jó sokáig tart), megkapjuk a promptot és lehet birtokba venni a rendszert.

Hát úgy nagyjából ennyi volna az OpenBSD telepítése Amigára. Most egyelőre ennyi elég volt, olyanokkal nem foglalkoztam, mint hálózat, vagy RTG kártya (ill. azt kipróbáltam, a Picasso II-t felismeri a rendszer és használja is), vagy az X11 összelövése, majd egy másik blogposztban, ha épp jut erre a marhaságra idő, meg energia.

A telepítős merevlemezről lehet gyalulni minden vackot (szigorúan AmigaDOS alól, mert az OpenBSD csak olvasni tudja az AmigaDOS lemezeket)

delete idh0:#? all noreq

mert amíg nincs network, továbbra is ez lesz a bridge a host rendszer könyvtára és az OpenBSD között. Felcsatolni egyébként így lehet (mármint OpenBSD alatt):

mount -o ro /dev/sd1d /mnt

No, akkor most egyelőre tényleg ennyi. Remélem volt, aki jól szórakozott.

Hozzászólások

"Kezdőtől nem rossz..." - és fogott egy szívószálat: fasza cucc, és jó leírás, de az emu kicsit tehetségpótlás, mert a loadbsd valahogy bugos (legalábbis a NetBSD-hez adott, de kétlem h. ehhez valaki hozzányúlt az elmúlt sok évben), és emuban sokkal nagyobb eséllyel működik mint igazi vason (valszeg valami memória-kinullázás hiányzik belőle). Nekem az Amiga 1200-n van NetBSD 7.1, ami legalább relatív recent és nem 17 éves. Amúgy a telepítés módja min. 85%-ban ugyanaz amit leírtál. Bár már azt is meg kéne frissíteni, de azon van X11 meg minden, és még a Free Pascalt is portoltam rá... :P

-=- Mire a programozó: "Na és szerintetek ki csinálta a káoszt?" -=-

Tudom hogy tudod, de nem kell annak 040-es A4000 hogy menjen, elindul egy 020/030-as bármin is, csak MMU legyen. Amúgy az OpenBSD oldala azt írja, hogy kb. egy őscsótány NetBSD portból vették az Amiga port kódját, szóval ennyi erővel a NetBSD-vel is szívhatnál, az legalább használható mai napig valamire, pl. valami terminálnak (up to date SSH kliens, meg HTTPS-t tudó curl/wget, SSL-t is bíró IRC kliens, stb?).

(És ha már ott vagyunk, az oldalon rögtön egy ordas baromság is szerepel, miszerint mivel az 500/600/1000 gépekhez nincs turbókártya ezért nem futtatható ezeken. Megkockáztatom, hogy ez már akkor sem volt igaz, mikor azt valaki odaírta. Nem mintha számítana, nyilván.)

-=- Mire a programozó: "Na és szerintetek ki csinálta a káoszt?" -=-

Igen, tudom, hogy a minimum az 32-bites 680x0 + MMU + FPU, de nem is azt mondtam, hogy nem megy rajtuk, hanem azt, hogy megfelelő hardware híján csináltam így; 040-nél gyengébb CPU-n már sajtreszelős a dolog, olyan lassú...még 040 alatt sem volt Ferrari. 060 alatt talán már oké lenne, de azzal csak kernel panic-ot kaptam. Nem tudom, hogy az emulátor hibája-e, vagy az OpenBSD-é.
Azt tudom, hogy a NetBSD megy Amigán, de nekem konkrétan ez a halott port fúrta az oldalamat, hogy vajon megy-e és hogyan.

Nagyon köszönöm ezt a leírást hétvégén lesz mit csinálnom:D!

Egy nap 24 óra, plusz az éjszaka!