OpenBSD kasutamine Sparc64 platvormil

Allikas: Kuutõrvaja

Sissejuhatus

Üks populaarne platvorm, kus OpenBSD tarkvara töötab on 32 ja 64 bit Sun Sparc riistvara, nt

  • Enterprise E250 - vanema põlvkonna UltraSparc II protsessoreid kasutav arvuti
  • Fujitsu Siemens PRIMEPOWER450 - uuema põlvkonna SPARC64 V protsessoreid kasutav arvuti

Populaarsusest annab tunnistust nt asjaolu, et Sparc platvormile on ports kollektsioonis enam-vähem sama palju tarkvara kui i386 või amd64 jaoks. Kusjuures, enne OpenBSD loomist töötas OpenBSD projekti eestvedaja Theo de Raadt muu hulgas NetBSD meeskonnas Sparc arhitektuuriga.

Käesolev tekst on koostatud Fujitsu Siemens PRIMEPOWER450 arvuti kasutamise näitel, aga põhimõtteliselt toimub protseduur sarnaselt ka teistel Sparc arvutitel. Töötav Sparc64 arvuti ütleb enda arhitektuuri kohta nii

 # uname -a
 OpenBSD fuji.avalik 4.5 GENERIC.MP#634 sparc64

Alates versioonist 4.3 (1. mai 2008) on sparc arhitektuuril olemas mitme protsessori tugi.

Üks oluline erinevus i386 või amd64 ja sparc platvormi kasutamisel on, et olles süsteemiga üle konsooli ühenduses (nt tavaline serial konsool, XSCF haldusliidese vahendusel), saab arvuti tegevust kontrollida juba enne bootloaderi käivitamist nn firmware promptist ehk OpenPROM'ist, mis näeb välja selline

 {0} ok

Nt saab firmware promptis öelda, milliselt võrgukaardilt või kõvakettalt süsteem alglaaditakse.

Eesmärk

Käesoleva teksti eesmärgiks on

  • paigaldada ilma lokaalset füüsilist konsooli (monitori ja klaviatuuri) kasutamata võrgust dual-boot Solaris/OpenBSD arvutile OpenBSD operatsioonisüsteemi osa
  • tutvustada, kuidas sellise arvuti OpenBSD osa kasutada

Eeldame, et alguspunktiks on arvuti ühel kõvakettal töötav Solaris operatsioonisüsteem juba olemas. Kuigi OpenBSD seisukohast ei ole Solarise oluline, võib olla tarvis nt sõltuvalt riistavaralise XSCF kaughaldusliidese seadistuste olekust tarvis seal teha muudatusi ning seda on tõenäoliselt kõige otsekohesem sooritada Solarisest.

Riistvara ettevalmistamine

Eeldame, et Fujitsu Siemens PRIMEPOWER450 arvutil on olemas

  • XSCF kaughaldusliides - mis muu hulgas võimaldab lülitada arvuti toidet sisse ja välja veebipõhise liidese kaudu ning üle etherneti pöörduda nt telneti või ssh abil arvuti konsooli poole (sh firmware prompti)
  • vähemalt kaks füüsilist kõvaketast, kusjuures ühele ja on teada millisele kõvakettale on paigaldatud Solaris operatsioonisüsteem ning riistvarale spetsiifilised nn madmin utiliidid XSCF seadistamisks
  • vähemalt üks operatsioonisüsteemi jaoks kasutada olev etherneti võrgukaart ning on teada selle MAC aadress

Kui XSCF kaudu ei ole võimalik nt telnet abil arvuti konsoolile jõuda peaks esmalt kasutama teksti Fujitsu Siemens PRIMEPOWER450 ja sellise võimaluse tekitama. Vastasel korral ei ole võimalik arvutisse operatsioonisüsteemi üle võrgu paigaldada.

Operatsioonisüsteemi paigalduskeskkonna ettevalmistamine

Üldiselt toimub operatsioonisüsteemi paigaldamine sellise järgnevusena

  • arvuti lahendab rarpd abil endale võrgust oma mac aadressi järgi ip aadressi
  • kopeerib võrgust TFTP serverilt bootloaderi
  • saab võrgust rpc.bootparamd serverilt teada bsd.rd installerit sisaldava tuuma asukoha (millisel NFS serveril ja kus seal serveri failisüsteemis)
  • kopeeritakse nfs serverilt installerit sisaldav tuum, arvuti algaaditakse ja kävitub installer
  • jätkub tavaline operatsioonisüsteemi paigaldamise protseduur, kus kasutatakse failikomplektide võrgust kopeerimist
  • paigaldamise lõpul süsteem alglaaditakse ja saab hakata arvutit tavapäraselt kasutama

Niisiis, seoses võrgust paigaldamise eripäradega tuleb ettevalmistada viie teenuse kasutamise võimalused, mis vastavad eelmises punktis esitatud tegevuste järgnevusele

  • rarpd server - arvuti saab teada oma ip aadressi
  • tftpd server - kopeeritakse bootloader ofwboot.net
  • rpc.bootparamd server - arvuti saab teada nfs serveri andmed
  • nfsd server - kopeeritakse installerit sisaldav tuum bsd.rd
  • ftpd server - kopeeritakse operatsioonisüsteemi tarkvara failikomplektide kujul (ingl. k. install sets)

rarpd serveri ettevalmistamine

rarpd ülesandeks kuulata võrgus broadcast aadressile saadetud RARP protokolli pakette ning vastata oma /etc/ethers failis asuva andmebaasi alusel mac aadressile vastava ip aadressiga. Kuna rarpd töötab suheliselt madalas kihis, siis ei kuula ta konkreetsel tcp ega udp pordil.

rarpd seadistusfailis /etc/ethers peab sisalduma paigaldatava arvuti MAC aadressi ja nime vaheline seos

 # cat /etc/ethers                                                                                                                 
 0:e0:0:c4:e1:36 fuji

ning failis /etc/hosts selle nime ja ip aadressi vaheline seos

 # cat /etc/hosts
 ...
 10.0.6.170 fuji

rarpd käivitamiseks sobib öelda

 # rarpd -d em0

kus

  • -d - deemon jääb tööle esiplaanis
  • em0 - deemon kuulab pöördumisi seadmel em0

tftpd serveri ettevalmistamine

TFTP serveri ülesandeks on võimaldada kliendil lihtsa protokolli abil kopeerida andmeid üle võrgu, kusjuures autentimist ei toimu. TFTP server asub ise pordil 69/udp, kuid andmevahetuse pidamiseks lepivad osalised kokku ja kasutavad mingit muud juhuslikult valitud vaba porti tftp serveris üle udp andmevahetuseks.

TFTP serveri juurkataloog asub tavaliselt kataloogis /tftpboot, sinna tuleb antud juhul kopeerida bootloader ofwboot.net

 # mkdir /tftpboot
 # cd /tftpboot
 # ftp http://ftp.aso.ee/pub/OpenBSD/4.5/sparc64/ofwboot.net

Bootloaderit aga küsib paigaldatav arvuti tftp serverilt oma ip aadressist tuletatud nime järgi. Selle nime saab tuletada ip aadressist nt käsuga

 # echo 10.0.6.170 | awk -F . '{ printf "%02X%02X%02X%02X\n", $1, $2, $3 ,$4}'
 0A0006AA

kusjuures, mõnel juhul tuleb lisada sellele nimele veel järele nö laiendiks arhitektuuri nimi, nt 0A0006AA.SUN4

Alternatiiviks on bootloaderi nime kuulata võrgust peale käsu 'boot net1' andmist, antud juhul on näha, et see on tõepoolest 0A0006AA

 # tcpdump -nttti em0 host 10.0.6.170
 ...
 000081 00:e0:00:c4:e1:36 > 00:04:23:09:14:30, ethertype IPv4 (0x0800), \
   length 60: 10.0.6.170.39011 > 10.0.6.1.69:  17 RRQ "0A0006AA" octet

ning TFTP saab seadistada käima nt Inet superserverist, eemaldades kommentaari faili /etc/inetd.conf sellise rea eest

 tftp     dgram udp   wait  root  /usr/libexec/tftpd   tftpd -s /tftpboot

ning käivitada inetd öeldes

 # inetd

rpc.bootparamd serveri ettevalmistamine

rpc.bootparamd ülesandeks on küsijale vastata tema bootimist puudutavate andmetega, teenus tundub töötavat juhuslikul udp pordil, mille suudab klient kindlaks teha ja seda seejärel andmevahetuseks kasutada.

rpc.bootparamd seadistusfailis /etc/bootparams peab sisalduma nt selline rida

 fuji root=10.0.6.1:/var/nfs/root

kus

  • fuji - arvuti nimi, mille kohta järgnevad sissekanded käivad
  • 10.0.6.1 - nfs serveri aadress
  • /var/nfs/root - kataloog, kus asub installeriga tuum bsd.rd

rpc.bootparamd käivitamiseks tuleb öelda, -d jätab serveri tööle esiplaanil

 # rpc.bootparamd -d

nfsd serveri ettevalmistamine

NFS serveri tööd juhib seadistusfail /etc/exports, mille sisu võiks olla nt selline

 # cat /etc/exports
 /var/nfs/root -maproot=root -alldirs fuji

kus

  • /var/nfs/root - milline kataloog välja jagatakse
  • fuji - millisele arvutile on kõnealune kataloog kasutada

Esmalt tuleb moodustada kataloog /var/nfs/root ning seejärel kopeerida sinna bsd.rd tuum ning moodustada link nimega bsd

 # mkdir /var/nfs/root
 # ftp http://ftp.aso.ee/pub/OpenBSD/4.5/sparc64/bsd.rd
 # cd /var/nfs/root
 # ln -s bsd.rd bsd

Käivitamiseks sobib öelda

 # /usr/sbin/portmap
 # echo -n >/var/db/mountdtab
 # /sbin/mountd
 # /sbin/nfsd -tun 4

Selleks, et NFS server käivituks arvuti alglaadimise käigus tuleb kasutada /etc/rc.conf.local failis direktiive

 portmap=YES
 nfs_server=YES

ftpd serveri ettevalmistamine

Sobib ka ise ettevalmistada lokaalne ftp server või kui paigaldamise ajal on kasutada rahuldava kiirusega võrguühendus, siis kasutada mõnda avalikku OpenBSD tarkvara peeglit. Paigaldamise etapis küll reeglina kõneldakse ftp serverist, kuid tehniliselt st installeri seisukohalt võib see samahästi olla ka http server.

Operatsioonisüsteemi paigaldamine võrgust

Kuna Sparc arvutitel reeglina puudub videokaart, pehmeketta seade ning CD seade, siis on kõige otsekohesem operatsioonisüsteemi paigaldamiseks alustada tegevust arvuti konsoolilt (nt üle XSCF kaughaldusliidese telnetiga) nn OpenPROMi firmware promptist

 {0} ok

Töötavast Solarisest saab sinna öeldes

 # shutdown -y -g 0 -i 0

kus

  • -y - vastata küsimustele automaatselt jaatavalt
  • -g 0 - shutdown protseduuriga alustatakse kohe
  • -i 0 - arvuti viiakse nn firmware prompti

Seejärel tuleb arvuti bootida võrgust üle selle võrgukaardi, millest on ligipääsetavad ettevalmistatud rarpd, tftpd, rpc.bootparamd ja nfsd teenused, nt

 {0} ok boot net1
 Resetting ... 
   
 Sep 20 13:52:31 EEST 2009 XSCF:I::[02030100] Start reset sequence
 Sep 20 13:52:32 EEST 2009 XSCF:I::[02030200] Reset released...
 
 Sep 20 10:52:35 GMT 2009 PowerOn SelfTest start
 POST:Testing Flash/SRAM
 POST:Testing SC
 POST:Testing XSCF
 POST:Banner
 POST:FATAL check
 POST:Testing Timer1
 POST:Testing Tick
 POST:Testing MMU
 POST:Testing CPU Type
 POST:Testing DTAG
 POST:Memory Probe
 POST:Testing Memory
 POST:Testing Softint
 POST:Testing U2P
 POST:Testing Slave Device
 POST:Testing Master Device
 POST:System Configure
 POST:OBP Start
 Fujitsu Siemens PRIMEPOWER450 4x SPARC64 V, Keyboard Present
 OpenBoot 3.17.1-1, 16384 MB memory installed
 Ethernet address 0:e0:0:c4:e1:36, Host ID: 80f3e136.
 XSCF Version: 4.8.1

Esmalt teeb arvuti kindlaks RARP protokolli kasutades oma ip aadressi, võrgus toimub selline liiklus

 510694 00:e0:00:c4:e1:36 > ff:ff:ff:ff:ff:ff, ethertype Reverse ARP (0x8035), \
   length 60: rarp who-is 00:e0:00:c4:e1:36 tell 00:e0:00:c4:e1:36
 000144 00:04:23:09:14:30 > 00:e0:00:c4:e1:36, ethertype Reverse ARP (0x8035), \
   length 42: rarp reply 00:e0:00:c4:e1:36 at 10.0.6.170

kust on näha, et 00:e0:00:c4:e1:36 mac aadressil asuv sparc64 esitab RARP päringu ja saab vastuseks teada, et tema ip aadress on 10.0.6.170.

Edasi, arusaamatul põhjusel teab paigaldatav arvuti seejärel, millisel aadressil asuva tftpd serveri poole pöörduda, saates paketi

 000081 00:e0:00:c4:e1:36 > 00:04:23:09:14:30, ethertype IPv4 (0x0800), \
   length 60: 10.0.6.170.39011 > 10.0.6.1.69:  17 RRQ "0A0006AA" octet

Kui bootloader õnnestub võrgust leida ja üle tftp ära kopeerida ning kasutada, siis annab sellest tunnistust selline väljund konsoolil

 Executing last command: boot net1
 Boot device: /pci@83,2000/FJSV,pwga@1  File and args: 
 10400 >> OpenBSD BOOT 1.3

Seejärel saab arvuti rcp.bootparamd serverilt teada millise aadressiga nfs serverilt ja millisest kataloogist sellel serveril kopeerida tuum

 Trying bsd...
 Using BOOTPARAMS protocol: ip address: 10.0.6.170, hostname: fuji
 root addr=10.0.6.1 path=/var/nfs/root

Kui tuuma kopeerimine õnnestub, siis alglaaditakse bsd.rd tuumaga arvuti ja käivitub OpenBSD installer

 Booting /pci@83,2000/FJSV,pwga@1/bsd
 3313048@0x1000000+4712@0x1328d98+3252440@0x1800000+941864@0x1b1a0d8 
 symbols @ 0xfea98240 65 start=0x1000000
 console is /pci@83,4000/isa@7/su@0,3f8
 Copyright (c) 1982, 1986, 1989, 1991, 1993
         The Regents of the University of California.  All rights reserved.
 Copyright (c) 1995-2009 OpenBSD. All rights reserved.  http://www.OpenBSD.org
 
 OpenBSD 4.5 (RAMDISK) #564: Sat Feb 28 18:22:09 MST 2009
     deraadt@sparc64.openbsd.org:/usr/src/sys/arch/sparc64/compile/RAMDISK
 real mem = 17179869184 (16384MB)
 avail mem = 16817946624 (16038MB)
 mainbus0 at root: Fujitsu Siemens PRIMEPOWER450 4x SPARC64 V
 cpu0 at mainbus0: FJSV,SPARC64-V (rev 5.0) @ 1869 MHz
 cpu0: physical 128K instruction (64 b/l), 128K data (64 b/l), 3072K external (64 b/l)
 ..
 bootpath: /pci@83,2000/FJSV,pwga@1,0
 root on rd0a swap on rd0b dump on rd0b
 erase ^?, werase ^W, kill ^U, intr ^C, status ^T
 (I)nstall, (U)pgrade or (S)hell?

Tulemuseks on mälukettalt rd0a iseseisvalt töötav arvuti, millel ei ole enam sidet tftp, nfs ega muude alglaadimist abistanud teenustega võrgust, edasi järgneb OpenBSD paigaldus suhteliselt tavapärasel moel; ainult tuleb jälgida, et kuna on tegemist dual-boot keskkonnaga, siis OpenBSD failisüsteemid moodustada sobivale kõvakettale.

Kui mingil põhjusel on tarvis installerit katkestada, siis saab seda teha valides Ctrl-C ning seejärel prmoptist öeldes

 # install

Operatsioonisüsteemi kasutamine

Pakettide paigaldamisel tuleb tarkvara kopeerida sparc64 arhitektuurile, nt

 export PKG_PATH=ftp://ftp.aso.ee/pub/OpenBSD/4.5/packages/sparc64/

OpenBSD promptist halt ütlemisel jõuab arvuti firmware prompti

 # halt
 ...
 
 {0} ok

ja konsoolilt saab firmware promptis seejärel edasi toimetada, nt operatsioonisüsteemi uuesti alglaadida.

Sparc64 riistvara kirjeldus

Top pilt illustreerib, et süsteemi protsessorid on bsd.mp tuumaga kasutusele võetud ning erinevalt i386 ja amd64 arhitektuurist ei ole sparc64 all probleeme mõneteistkümne GB mälu kasutuselevõtmisega

Sparc64-openbsd-1.gif

Süsteemi /var/run/dmesg.boot asub aadressil Fail:Dmesg.boot-PRIMEPOWER450-4.5.log.

Platvormi üldised omadused

 # sysctl hw
 hw.machine=sparc64
 hw.model=FJSV,SPARC64-V (rev 5.0) @ 1869 MHz
 hw.ncpu=4
 hw.byteorder=4321
 hw.pagesize=8192
 hw.disknames=sd0,sd1,sd2,sd3,cd0
 hw.diskcount=5
 hw.cpuspeed=1869
 hw.vendor=Fujitsu
 hw.product=FJSV,GPUZC-M
 hw.physmem=17179869184
 hw.usermem=17179852800

Võrguseadmed

Reeglina on Sparc arvutitel vähemalt üks hme (Sun Happy Meal 10/100 Ethernet device) võrguseade

 # ifconfig hme 
 hme0: flags=8822<BROADCAST,NOTRAILERS,SIMPLEX,MULTICAST> mtu 1500
         lladdr 00:e0:00:c4:e1:36
         priority: 0
         media: Ethernet autoselect

Kettaseadmed

Konkreetse kõvaketta omadusi saab küsida OpenBSD käsurealt bioctl utiliidiga

 # bioctl sd2
 sd2: <FUJITSU, MAP3147NC, 3701>, serial UP58PxxxxD4K

Üldiselt on huvitav võrrelda kuidas esitavad samade plokkseadmete ja vastavate kontrollerite riistavara kohta andmeid OpenBSD ja Solaris

OpenBSD

 mpi0 at pci0 dev 2 function 1 "Symbios Logic 53c1030" rev 0x07: ivec 0xe0
 scsibus0 at mpi0: 16 targets, initiator 7
 sd0 at scsibus0 targ 0 lun 0: <FUJITSU, MAP3147NC, 3701> SCSI3 0/direct fixed
 sd0: 140201MB, 512 bytes/sec, 287132440 sec total
 sd1 at scsibus0 targ 1 lun 0: <FUJITSU, MAW3147NC, 3701> SCSI3 0/direct fixed
 sd1: 140201MB, 512 bytes/sec, 287132440 sec total
 mpi0: target 0 Sync at 160MHz width 16bit offset 127 QAS 1 DT 1 IU 1
 mpi0: target 1 Sync at 160MHz width 16bit offset 127 QAS 1 DT 1 IU 1
 
 mpi1 at pci0 dev 2 function 0 "Symbios Logic 53c1030" rev 0x07: ivec 0xe6
 scsibus1 at mpi1: 16 targets, initiator 7
 sd2 at scsibus1 targ 0 lun 0: <FUJITSU, MAP3147NC, 3701> SCSI3 0/direct fixed
 sd2: 140201MB, 512 bytes/sec, 287132440 sec total
 sd3 at scsibus1 targ 1 lun 0: <FUJITSU, MAW3147NC, 3701> SCSI3 0/direct fixed
 sd3: 140201MB, 512 bytes/sec, 287132440 sec total
 mpi1: target 0 Sync at 160MHz width 16bit offset 127 QAS 1 DT 1 IU 1
 mpi1: target 1 Sync at 160MHz width 16bit offset 127 QAS 1 DT 1 IU 1

Solaris

 AVAILABLE DISK SELECTIONS:
      0. c0t0d0 <FUJITSU-MAP3147NC-3701 cyl 38343 alt 2 hd 8 sec 936>
         /pci@83,4000/FJSV,ulsa@2,1/sd@0,0
      1. c0t1d0 <FUJITSU-MAW3147NC-3701 cyl 38343 alt 2 hd 8 sec 936>
         /pci@83,4000/FJSV,ulsa@2,1/sd@1,0
 
      2. c1t0d0 <FUJITSU-MAP3147NC-3701 cyl 38343 alt 2 hd 8 sec 936>
         /pci@83,4000/FJSV,ulsa@2/sd@0,0
      3. c1t1d0 <FUJITSU-MAW3147NC-3701 cyl 38343 alt 2 hd 8 sec 936>
         /pci@83,4000/FJSV,ulsa@2/sd@1,0

Erinevate operatsioonisüsteemide all paistvate plokkseadmete kokkuviimiseks sobib kontrollida nt seadme 512 baidi kontrollsummasid

OpenBSD

 openbsd # dd if=/dev/sd0c of=/tmp/sd0c.512 bs=512 count=1  
 openbsd # md5 /tmp/sd0c.512
 47f32ec024a01981a7d4405c1d3627f2

Solaris

 solaris # dd if=/dev/dsk/c0t0d0s2 of=/tmp/c0t0d0s2.512 bs=512 count=1  
 solaris # digest -a md5 /tmp/c0t0d0s2.512
 47f32ec024a01981a7d4405c1d3627f2

OpenPROM seadistamine

OpenPROMi saab OpenBSD operatsioonisüsteemi keskkonnast ümber seadistada utiliidiga eeprom. Nt saab arvutilt küsida seadmepuud, sarnaselt kui Solaris operatsioonisüsteemi puhul

 # eeprom -p

Solaris/OpenBSD dual-boot

Erinevalt i386 ja amd64 platvormist ei leia Sparc platvormil kasutust GRUB alglaadur, millega erinevaid arvutisse paigaldatud operatsioonisüsteeme käivitada. Üheks võimaluseks valida erinevatele kõvaketastele paigaldatud operatsioonisüsteemide vahel on käivitada firmware promptis operatsioonisüsteem sobivalt kõvakettalt (disk1, disk2, disk3 jne) öeldes nt

 {0} ok boot disk2

Kõige seadmete, sh kõvaketaste nimekirja näeb küsides

 {0} ok devalias

Märkused

  • OpenBSD võrgust paigaldamise protseduuri esimeste sammudega kaasnevast andmevahetusest saab parema ülevaate nt salvestades kogu andmevahetuse ja seda seejärel nö offline'is uurides, nt Wireshark programmi abil.
  • Kasutaja peab ise otsustama, kas peale süsteemi käivitamist on turvakaalutlustel otstarbeks nt füüsiliselt kaughaldusliidesele vastav etheneti kaabel arvutilt eemaldada või ei ole see vajalik.
  • Tõenäoliselt saab edukalt kasutada XSCF haldusliidese asemel ka tavalist serial konsooli.
  • Vaikimisi on kõigil sama Sparc arvuti füüsilistel võrguseadmetel üks ja sama MAC aadress.

Kasulikud lisamaterjalid