Hlavní navigace

Desktop na SPARCstation4

26. 4. 2004
Doba čtení: 10 minut

Sdílet

Hneď na úvod musím oznámiť, že nie som Linux guru, ale obyčajná lama aká rastie všade okolo. Záhadným spôsobom sa mi nedávno podarilo nainštalovať Debian/Linux na dosť exotický hardware - Sun SPARCstation4. Tento článok popisuje niektoré pozoruhodné okamihy tohoto mystéria.

Linux pre architektúru UltraSPARC

Linux je pre UltraSPARC architektúru portovaný už niekoľko rokov (približne od roku 1994). Rok nato vydal RedHat distribúciu pre túto architektúru. Touto prácou sa zaoberá (nielen) združenie UltraSPARC Linux. Medzi distribúcie portované na architektúru UltraSPARC patria Debian 3.0, Mandrake 7.0, SuSe 7.3, RockLinux 1.7, RedHat 6.2, Slackware (SPLACK) 7.1, Gentoo a Caldera 2.2. Jadro je vydávané v štyroch binárnych obrazoch, 32 a 64bitové a každé ešte s podporou alebo bez podpory SMP.

Pre zavedenie sa namiesto LILO používa SILO, ktoré väčšinou nie je potrebné po úprave konfiguračného súboru spúšťať. Pre zavádzanie pomocou TFTP sa používa TILO. Pre 32bitové aplikácie a jadrá stačí gcc, podľa báji a povestí kolujúcich po nete by od verzie 3 malo byť schopné skompilovať aj 64bitové jadro. Ak tak nie je (mne to chvíľu išlo na Gentoo), stále môžete použiť egcs64.

Pre nekompatibilitu architektúr nie sú aplikácie z architektúry Intel (little-endian) prenositeľné pod SPARC (big-endian) a musia sa kompilovať. Pre uľahčenie práce na kritickom hardware je časť portovania venovaná spúšťaniu knižníc zo SunOS.

Hardware

Železom, určeným pre budúci desktop, sa stala pracovná stanica triedy SPARCstation4, model sun4m. K dispozícii bolo 6 staníc tohto typu, avšak len dve z nich získali poctu stať sa budúcim Linux-boxom. Dôvod je jednoduchý: k dispozícii boli len dva monitory s 13W3 konektorom pre framebuffer stanice. A desktop sa robí trochu moc zložito bez monitoru a ešte horšie sa potom na ňom pracuje. Nádoba, do ktorej sú SPARC-y sun4m montované, sa volá pizza-box. Keď si povieme, čo všetko taká workstation obsahuje, zistíme, že to úplne stačí:

  1. základná doska s SBUS zbernicou

    • 5 slotov na RAM (v našom prípade 5×32MB = 160MB RAM, čo nie je až také zlé),
    • 110MHz 32bitový microSPARC II procesor (podľa všetkého obsahuje dve ALU),
    • 10Mbit sunLANCE ethernet s RJ45 konektorom,
    • 8bit TCX framebuffer, 13W3 konektor,
    • konektor pre pripojenie externej SCSI CD-ROM mechaniky (alebo iného SCSI zariadenia),
    • openBoot PROM,
    • radič FDD,
  2. 50W zdroj,
  3. 1GB SCSI hard disk QUANTUM Fireball (+ SCSI kábel s pozíciou pre jedno zariadenie, pravdepodobne sa dá aplikovať aj viac SCSI zariadení).

Keďže do pizza-boxu sa dá namontovať viac typov SPARCstation, ktoré môžu byť vybavené aj vstavanou CD-ROM mechanikou, disketovou mechanikou, ďalšími diskami, ostala asi 1/3 priestoru prázdna. Pokiaľ som si dobre všimol, základná doska SS4 je vybavená dvoma rozhraniami pre pripojenie ďalších SCSI zariadení (z dokumentácie nie je jasné, aké ďalšie adaptéry sú potrebné, a pochybujem, že sa dajú bežne kúpiť v hypermarkete).

Ak ste niekedy mali dočinenia so starším dlho nepoužívaným zariadením, viete, že pred pripojením napájania je potrebné dôkladne všetko vyčistiť (prach, pavučiny, osie hniezda). Ja som použil namiesto vysávača svoje vlastné pľúca (dopované nikotínom). Ak je vo vašom Sune dlho nepoužívaná CD-ROM mechanika, najlepšie je ju rozmontovať (do rozumnej hĺbky; skrutky, ktoré vám potom zostanú navyše, určite niekde použijete) a vyčistiť každú časť.

Bootovanie a základný systém

Za starých dobrých čias sa na diskoch nachádzal Solaris v.2.5. Verím, že existuje cesta, ako použiť pre zavedenie inštalačného obrazu do pamäte existujúci systém, ale to naráža na určité obmedzenia:

  • nikto nevie, aké sú na pôvodný systém užívateľské/ro­otovské heslá,
  • nikto nevie, ako sa pôvodný Solaris vyrovná s Y2K,
  • mám dôvod domievať sa, že určitú časť adresárovej štruktúry si stanice ťahali zo serveru,
  • nezistil som, ako to urobiť (niečo obdobné loadlin.exe z DOSu).

(Pozn. red: Big Admin Spousta by to určitě zvlád ;) –Johanka)

Preto zostáva jedinou možnosťou zaviesť inštalačný obraz z iného média, buď z CD-ROM, alebo zo siete, prípadne z disketovej jednotky. Namiesto CMOS/BIOS ROM známych z PC existuje v oldies mašinách takzvaný PROM command monitor.

OpenBoot PROM

Namiesto farebného BIOSu, kde si vystačíte s kurzorovými klávesami a Enter-om, v PROM sa zvykne vsetko krásne linux/unixovsky písať. Stanice (hlavne staršie) vyrábané firmami Sun, SGI, IBM používajú niektorý klon PROM monitoru. Sun používa openBoot. Aby bolo jasné, openBoot je firmware, teda softvér, ktorý je napálený v EPROM alebo v podobnom čipe a zavádza sa pri zapnutí počítača. Elegantnou vecou openBootu je virtuálny filesystem, v ktorom sú v štruktúre podobnej adresárom zapísané zariadenia pripojené alebo obsiahnuté v SBUS zbernici. Príkazy sú krátke a prehľadné, príkaz help, prípadne help meno_sekcie vám poskytne viac informácií. Kombináciou Stop-A zastavíte prebiehajúci proces (napríklad autoboot).

V PROM monitore fungujú klasické príkazy cd, ls a pod, ktorými môžete prechádzať hardvér v stanici:

ok ok cd /SBUS
ok ls
ffd50f08 power-management@3,a000000
ffd4ac54 SUNW,tcx@2,800000
ffd48ff8 ledma@4,8400010
ffd48f6c SUNW,bpp@4,c800000
ffd45e78 espdma@4,8400000
ok cd .. 

Bootovanie v openBoot sa nastavuje pomocou premenných alebo priamych príkazov:

ok boot disk
ok boot cdrom
ok boot net
ok printenv
ok setenv autoboot true
ok setenv boot-device net disk 

Častokrát sa stáva, že openBoot odmietne bootovať z CD-ROM alebo z disketovej jednotky, pričom médium je úplne bez chyby a na iných strojoch funguje. Neviem, ako to robia skutoční hardvéroví kúzelníci, ja som zariadenia na zbernici zobúdzal pomocou openBoot príkazmi ako cd alebo ls. Potom sa podarilo nabootovať CD alebo net. Botoovať z diskety som neskúšal, pretože:

  • nové mechaniky nie sú podporované, aj keď konektor na základnej doske je kompatibilný s dnešnými 3,5“,
  • staré sa tažko zháňajú,
  • v dokumentácii k SS4 je zmienka o tom, že bootovanie z diskety nie je podporované.

(Pozn. red.: a já se před dvěma lety divila, proč mi to z diskety nebootuje :) –Johanka)

Tieto nedostatky nám však neprekážajú, pretože máme k dispozícii alternatívne metódy.

Bootovanie z CD-ROM

Bootovať z CD dokáže (dúfam) každý, preto uvediem len niekoľko krátkych poznámok:

  1. Musíte CD-ROM mechaniku mať, ak nie je vstavaná, musíte použiť externú. Vtedy máte tri možnosti: kúpiť SCSI externú mechaniku, požičať si ju od niekoho, alebo ju niekde ukradnúť. Voľba b je asi najvhodnejšia, nezaťažíte si svedomie a máte dobrý dôvod nadviazať sociálne väzby.
  2. Staršie mechaniky vykazujú tendenciu „vaňovej krivky“, t.j. po dostatočne dlhom čase sa odoberajú k predkom.
  3. Staršie mechaniky akosi nedôverujú médiám, ktoré sú napálené rýchlosťou > 1–2× a odmietajú z nich bootovať. Preto radím byť radšej trpezlivý. Pravdepodobne je to náhoda, avšak táto pravdepodobnosť P sa u mňa (po asi dvadsiatke pokusov, zahŕňajúc Gentoo, Debian, MDK, SPLACK, IRIX a Solaris) limitne blíži k 1.
  4. Na SCSI CD-ROM sa pomocou jumperov nastavuje target ID. Je to číslo, ktoré označuje pozíciu na zbernici. Niektoré inteligentnejšie zbernice si zariadenia targetujú samé, väčšinou je však aspoň CD-ROM potrebné targetovať ručne. To, ako obsadzujú zariadenia SCSI zbernicu, zistíte v openBoot príkazom
ok probe-scsi-all 

Mali by ste začuť s ničím nezameniteľný zvuk štartujúceho Migu spolu s výpisom informácií o všetkých SCSI zariadeniach (ten by ste mali pre zmenu vidieť).

V mojom prípade som externú CD-ROM mechaniku k dispozícii mal a prirodzene som z nej aj inštaloval. Bootovanie z openBoot:

ok boot cdrom 

Bootovanie zo siete

Pre bootovanie zo siete potrebujeme poznať ethernetovú adresu sieťovej karty, MAC adresu. Tá sa zobrazuje v každom slušnom PROM monitore hneď na začiatku. SPARC stanice majú zabudovanú podporu bootovania po sieti pomocou ARP//RARP paketov. Ak ste si nevšimli MAC adresu pri štarte stanice, nevadí, napíšte do openBoot príkaz

ok .enet-addr
8:0:20:7d:aa:6b 

Pre bootovanie SS4 po sieti sa používajú tri daemony:

  • DHCP, ktorý priradí IP adresu,
  • RARP, ktorý zabezpečí prácu s ARP/RARP paketmi na základe IP adresy a vyvolá TFTP klienta,
  • TFTP, ktorý prenesie linuxový obraz na stanicu.

DHCP

Konfiguračný súbor DHCP serveru sa nachádza v /etc/dhcp. Pre nabootovanie stanice stačí takýto krátky záznam:

# nano -w /etc/dhcp/dhcpd.conf;
ddns-update-style none;
default-lease-time 600;
max-lease-time 7200;
log-facility local7;

subnet 192.168.0.0 netmask 255.255.255.0 {
  range 192.168.0.180 192.168.0.182;
  option routers 192.168.0.1;
}
host horus {
  filename "debian-sun4cdm.img";
  hardware ethernet 08:00:20:7d:aa:6b;
  fixed-address horus;
} 

Potom je potrebné vytvoriť záznam v /etc/hosts:

# nano /etc/hosts
127.0.0.1       localhost
192.168.0.171   kali
192.168.0.180   indigo
#192.168.0.181   ultra
192.168.0.181   horus 

a reštartovať/spustiť službu:

# /etc/init.d/dhcp restart 

RARP

Dlho mi bootovanie zo siete nešlo, aj keď som všetko urobil podľa manuálu. OpenBoot neustále vypisoval hlášku Timeout wainting for ARP/RARP packet. Chyba bola v tom, že som RARP server vôbec nepoužil. Server beží na jadre 2.4.24, kde nie je podpora RARP zahrnutá, ale používa sa externý program rarpd. Ten sa konfiguruje súborom /etc/ethers.

# nano -w /etc/ethers
08:00:20:7D:AA:6B               192.168.0.181 

Tento súbor zaisťuje sekundárny preklad MAC adresy na IP adresu. Prečo, to sa mi nepodarilo zistiť a ani som sa potom o to moc nezaujímal, keď to začalo fungovať, ako má. Som ten typ človeka s mottom: Kým to funguje, tak sa v tom nevŕtaj.

V starších jadrách je potrebné podporu RARP zapnúť v jadre, prípadne skompilovať ju ako modul. Ak sa kompilovať nechystáte, skúste použiť lsmod rarp.

Po nakonfigurovaní /etc/ethers spustíme rarp daemon:

# /etc/init.d/rarpd start 

TFTP

TFTP (Trivial Transfer Protocol) zabezpečí prenos img súboru s linuxovým obrazom do inštalovanej stanice. Tu je tiež jedna zvláštna špecialitka: SPARC stanice musia mať img súbor nazvaný v tvare hex-IP.architektúra. To sa dá urobiť aj na Xcalc, ale dá sa to zistiť aj metódou pokus-omyl. Stačí čítať logy. Opíšem postup, ktorý som použil ja:

# nano /etc/conf.d/in.tftp
INTFTPD_PATH="/tftpboot"     #adresár s obrazmi
INTFTPD_OPTS="-l -v -s ${INTFTPD_PATH}"

# chmod -cR 777 /tftpboot 

aby sa dal adresár aj obrazy URČITE prečítať aj napriek Murphymu. Do tohoto adresára si stiahnite obrazy pre tftpboot:

  1. http://http.us­.debian.org/…/sun4cdm/­tftpboot.img
  2. http://http.us­.debian.org/…/sun4u/tf­tpboot.img

Obidva, aj keď sú odlíšené architektúrou, obsahujú aj 32, aj 64bitové jadro. Tým si zabezpečujú vzájomnú prenositeľnosť.

# mv /tftpboot/tftpboot.img /tftpboot/debian-sun4cdm.img
# /etc/init.d/in.tftpd start 

Potom v openboot stanice napíšte

ok boot net
Boot device: /iommu/sbus/ledma@4,8400010/le@4,8c00000 File and args: 

A … Nič sa nedeje! Pozrieme si systémový log:

# cat /var/log/syslog|more
..
Apr 14 13:59:13 kali in.tftpd[25586]: RRQ from 192.168.0.181 filename 9EC1CEB5.SUN4M
.. 

Systém sa nám snaží povedať, že TFTP klient (SS4) požaduje súbor 9EC1CEB5.SUN4M, ktorý prirodzene nemáme, čo musíme okamžite korigovať.

# cp /tftpboot/debian-sun4cdm.img /tftpboot/9EC1CEB5.SUN4M
# chmod -c 777 /tftpboot/9EC1CEB5.SUN4M

# /etc/init.d/in.tftpd restart
# nano /etc/dhcp/dhcpd.conf
..
host horus {
#  filename "debian-sun4cdm.img";
#  nie je isté, či má nejaký význam,
#  prenos image zabezpečuje RARP a TFTP
  hardware ethernet 08:00:20:7d:aa:6b;
  fixed-address horus;

}
#/etc/init.d/dhcp restart 

Opäť v openBoot zadáme boot net. Tentoraz vypíše niečo, čo nás zohreje pri srdiečku:

ok boot net
Boot device: /iommu/sbus/ledma@4,8400010/le@4,8c00000 File and args:
41130 

Práve sa do pamäte stanice zavádza linuxový obraz a privíta nás modrá obrazovka inštalátoru.

Partície

Počas inštalačného procesu je potrebné vytvoriť partície, minimálne pre koreňový priečinok a pre swap. Niektorým Sunom takáto geometria nestačí a pre kosher chovanie je potrebné vytvoriť tretiu partíciu typu Whole disk (celý disk). V programe fdisk (súčasť inštalátora) odporúčam postupovať takto:

  1. Odstrániť všetky existujúce partície,
  2. Vytvoriť primárnu partíciu č. 3 s plným rozsahom (u mňa 0–2374). fdisk ju automaticky označí ako typ Whole disk.
  3. Vytvoriť ostatné partície.

Mali by sme získať takúto partition table:

/dev/sda1   Linux        swap      swap   80 MB
/dev/sda2   Linux        native    /      902 MB
/dev/sda3   Whole disk

Tým, že túto tretiu virtuálnu partíciu vytvoríte, nič nepokazíte a aspoň kvôli tomu nebudete musieť opakovať inštaláciu, ak systém z disku nenabootuje. Mne sa to stalo, preto to odporúčam. Navyše partíciu typu Whole disk používa aj Solaris, čím sa stáva nevyhnutnosťou na mašinách, kde z nostalgie rastie aj Solaris.

Čo sa týka veľkosti partícií, swap v našom prípade by mal mať aspoň 160 MB, keďže máme malý disk, radšej dáme 80 MB. Môžete vymeniť disk v SS4 za väčší, ale potom vám openBoot nenatiahne image do pamäte, pretože staršie verzie tohoto PROM monitoru nebootujú (aspoň na SS4) z diskov väčších ako 1 GB a na pridávanie ďalších zariadení nie sú vytvorené predpoklady (na strane SS4, nie u mňa).

CS24_early

Inštalácia základného systému

Pokračujte ďalej inštalačným programom systémom kurzorové klávesy + Enter. Po jeho ukončení budete vyzvaní k reštartu a potom by mal disk nabootovať nový systém.

Nabudúce si ukážeme upgrade systému na testing z ftp serveru a nainštalujeme a nakonfigurujeme XFree86 (s jedným-dvoma prekvapeniami) + KDE 3.1.5.

Byl pro vás článek přínosný?