Job / Praca

    NetBSD 5.0 na Netrze T1-200

    W ko?cu przysz?y! Dwie Netry T1-AC200 z allegro. Jak wida? na stronie SUN’a (lub ORACLE’a za jaki? czas :) sprz?t co kolwiek stary, ale wci?? jary. Po pierwsze 1U, po drugie niska cena (249 z? za sztuk?), po trzecie architektura SPARC, po czwarte hardcoreowy 1337 sprz?t dla geeków^W niezawodna maszyna dla administratorów. W sam raz na jeden ma?y serwis www do uzytku wewn?trznego + dodatkowa Netra do testów i poznania Solarisa. S?owo wyja?nienia odno?nie hardcorowo?ci tego sprz?tu. Nie mamy mo?liwo?ci pod??czenia monitora, klawiatury (ewentualnie USB), nie ma karty graficznej. Wszystko co dostajemy to dwa porty sieciowe, dwa konsolowe, dwa USB i jeden zewn?trzny SCSI. Na szcz??cie jest tak?e LOM czyli Lights Off Management do którego dostajemy si? poprzez port szeregowy z innego komputera specjalnym kablem RS232< ->RJ45. Kabelek ten pasuje od urz?dze? CISCO, lub mo?na go zrobi? samemu (koszt kitowej wtyczki RS232 z wyprowadzonymi kablami do zlutowania to 12 z? a schemat jest tu). Dla leniwców SUN przewidzia? promocje – 500 z? netto za oryginalny kabel ;). Generalnie pod??czenie si? do LOM to najmniejszy problem. Wystarczy jaki? komputer z terminalem. Ja wykorzysta?em NetBSD i minicoma. Ustawi?em odpowiedni port szeregowy oraz jego pr?dko?? (9600 8N1 oraz kontrola parzysto?ci) i po Initializing Modem zg?osi? si? LOM. Polecam zapoznanie si? z tym artyku?em na pocz?tek. Czas na w?a?ciwa instalacj?. Tutaj zaczynaj? si? schody. Mo?na u?y? zewn?trznego nap?du SCSI, ale akurat takiego nie posiada?em (allegro te? nie specjalnie ma takie rzeczy) pozatym przyda?by si? raz i koniec. Z zewn?trznego nap?du USB Netry niestety nie da si? wybootowa?. Pozosta?a ostatnia mo?liwo?? czyli netboot NetBSD z innej maszyny NetBSD. I tu zaczyna si? w?a?ciwa cz??? tego posta, a je?li kiedy? b?dziesz mie? przyjemno?? instalacji tego typu to zgodzisz si? ze mn? ?e T1 jest hardcoreowa :)

    Potrzeba b?dzie nam kilku rzeczy. rarpd, tftp, dhcp i bootp u?ywany z dhcp oraz nfs. Dodatkowo NetBSD/sparc64.

    Netr? pod??czamy do sieci oraz do konsoli i szukamy adresu MAC pierwszej karty sieciowej. Je?li jeste?my w ok to wydajemy polecenie banner i rezultacie dostajemy to czego szukamy:

    ok banner
    Netra T1 200 (UltraSPARC-IIe 500MHz), No Keyboard
    OpenBoot 4.0, 1024 MB memory installed, Serial #401376.
    Ethernet address 0:3:ba:6:1f:e0, Host ID: 83061fe0.

    Je?li jeste?my w lom wydajemy polecenie power-on aby przej?? do ok. Podczas startu Netry wysy?amy sygna? break (w minicomie CTRL+A F) aby maszyna nie zbootowa?a si? dalej je?li ma zainstalowany system i ostatecznie jeste?my w ok i dajemy banner. Je?li nie wiesz o czym pisz? to znaczy ?e nie odrobi?e? lekcji z akapitu powy?ej i nie przeczyta?e? o co chodzi w LOM i jego trybach pracy :)

    Chwilowo Netr? zostawiamy i zajemiemy si? ?rodowiskiem w NetBSD potrzebnym do sieciowego wybootowania NetBSD na Netrze.

    Zaczynamy od rarpd czyli reverse ARP. B?dzie on potrzebny do nadania IP na podstawie MAC którego chwil? wcze?niej zdobyli?my.

    Na NetBSD dopisujemy nast?puj?ce rzeczy do nast?puj?cych plików:

    /etc/ethers
    0:3:ba:6:1f:e0 netra

    /etc/hosts
    10.1.0.8 netra netra.

    Uruchamiamy poleceniem rarpd -a -d dzi?ki czemu rarpd nie forknie si? nam do backgroundu i b?dziemy widzie? czy co? si? z nim komunikuje. Adres IP oczywi?cie w/g w?asnych potrzeb. Mój NetBSD ma akurat 10.1.0.6 wi?c Netra b?dzie mia?a 10.1.0.8.

    Nast?pnie konfigurujemy tftp czyli Trivial File Transfer Protocol. Tutaj jest troch? zabawy.

    Tworzymy po pierwsze katalog dla plików potrzebnych do podania przez TFTP:

    mkdir /tftpboot

    Linkujemy lub kopiujemy bootloader z dystrybucji NetBSD/sparc64 zmieniaj?c nazw? na IP Netry zapisanej w hex’ie czyli szesnastkowo :) Czyli:

    Po ?ci?gni?ciu z ftp.netbsd.org/pub/NetBSD/NetBSD-5.0/sparc64/ kopiujemy bootloader do katalogu dost?pnego dla tftp:

    cp /usr/home/cancer/sun/sparc64/installation/netboot/ofwboot.net /tftpboot

    Przeliczamy wybrany IP Netry na hex u?ywaj?c np bc
    bc
    obase=16
    10
    A
    1
    1
    0
    0
    8
    8

    Czyli 10.1.0.8 = 0A108

    Linkujemy ofwboot.net jako IPHEX. Gwoli wyja?nienia – mia?em dziwne problemy z tftpd i podczas debugowania doda?em dodatkowe zera do IP w HEX dlatego s? dwa podlinkowania w moim katalogu. Ostatecznie nie wiem który zadzia?a? ale powinny obydwa :)

    ls -la /tftpboot/
    total 19240
    lrwxr-xr-x 1 root wheel 11 May 19 11:03 0A010008 -> ofwboot.net
    lrwxr-xr-x 1 root wheel 11 May 19 11:01 0A108 -> ofwboot.net
    -rw-r--r-- 1 root wheel 85249 May 19 10:15 ofwboot.net

    Kiedy mamy ju? przygotowany tftp mo?emy go uruchomi?. Tutaj nast?pi?a rzecz dziwna poniewa? whereis tftpd zwraca?o nic, a komenda tftpd oznajmia?a tftpd: Command not found mimo ?e jak wó? tftpd jest w basesystemie:

    ls -la /usr/libexec/tftpd
    -r-xr-xr-x 1 root wheel 23216 Feb 21 2008 /usr/libexec/tftpd

    tftpd uruchamiamy z inetd.conf odhashowuj?c odpowiedni? linijk?:
    tftp dgram udp wait root /usr/libexec/tftpd tftpd -l -s /tftpboot

    Musia?em lekko zmodyfikowa? daj?c pe?n? scie?k?:
    tftp dgram udp wait root /usr/libexec/tftpd /usr/libexec/tftpd -l -s /tftpboot

    Ostatecznie po którym? restarcie zadzia?a?o mimo tego ?e kiedy wida? by?o tftpd w procesach to Netra si? nie chcia?a dogada?, kiedy w procesach tftpd nie by?o (po restarcie inetd) Netra nagle zacz??a si? bootowa?. Nie wiem czy to akurat moja dolegliwo?? czy ogólnie NetBSD 4.0_STABLE. Zak?adaj?c, ?e rarpd i tftp jest ok, mo?emy wybootowa? Netr? dla testu.

    ok boot net
    Boot device: /pci@1f,0/pci@1,1/network@c,1 File and args:
    Using Onboard Transceiver - Link Up.
    18c00
    Server IP address: 10.1.0.6
    Client IP address: 10.1.0.8
    >> NetBSD/sparc64 OpenFirmware Boot, Revision 1.13
    Using Onboard Transceiver - Link Up.
    bootp: no reply
    Using BOOTPARAMS protocol: ip address: 10.1.0.8bootparamd: 'whoami' call failed
    open netbsd: Unknown error: code 60
    Failed to load 'netbsd'.
    : trying netbsd.gz...

    Najwa?niejsz? informacj? jest, ?e boot loader zosta? pomy?lnie wczytany. B??dem ?e bootp nie odpowiada nie przejmujemy si? na razie, za chwil? go ustawimy. W logach rarpd powinno by? mniej wi?cej co? takiego:

    rarpd: 00:03:ba:06:1f:e0 asked; netra replied

    Zapami?ta?! architektura sparc64 u?ywa dhcpd z bootp a nie samo bootp :) Godzina zaoszcz?dzona na bezskuteczne i dziwne skonfigurowanie bootp.

    Tworzymy konfig dhcp dla naszych potrzeb:

    /etc/dhcpd.conf
    deny unknown-clients;
    ddns-update-style none;
    allow bootp;

    subnet 10.1.0.0 netmask 255.255.255.0 {
    }

    group {
    option broadcast-address 10.1.0.255;
    option domain-name "test.net";
    option domain-name-servers 10.1.0.1;
    option routers 10.1.0.251;
    option subnet-mask 255.255.255.0;

    host netra {
    hardware ethernet 00:03:ba:06:1f:e0;
    fixed-address 10.1.0.8;
    option host-name "netra";
    filename "netbsd-INSTALL.gz";
    next-server 10.1.0.6;
    option root-path "/export/netra/root";
    }
    }

    Odpalamy dhcpd uprzednio tworz?c plik /var/db/dhcpd.leases

    touch /var/db/dhcpd.leases
    /usr/sbin/dhcpd -d -f

    dyrektywa filename mówi jaki kernel ma za?adowa? bootloader, chcemy kernel instalacyjny którego sciagamy z
    ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-5.0/sparc64/binary/kernel/netbsd-INSTALL.gz i umieszczamy tam gdzie jest root katalog w nfs czyli w /export/netra/root. Dyrektywa next-server 10.1.0.6 mówi gdzie jest serwer nfs, reszta opcji raczej jasna.

    Jeszcze Netry nie startujemy bo nie mamy skonfigurowanego NFS’a.

    Tworzymy struktur? katalogów i kopiujemy nasz instalacyjny kernel do odpowiedniego katalogu:

    mkdir -p /export/netra/root/dev
    mkdir /export/netra/usr
    mkdir /export/netra/home
    touch /export/netra/swap
    cp netbsd-INSTALL.gz /export/netra/root
    mknod /export/netra/root/dev/console c 0 0

    dodajemy wpisy do /etc/exports

    /etc/exports
    /export/netra/root -maproot=root:wheel netra
    /export/netra/swap -maproot=root:wheel netra
    /export/netra/usr -maproot=nobody:nobody netra
    /export/netra/home -maproot=nobody:nobody netra

    dodajemy do /etc/rc.conf komponenty NFSa:

    /etc/rc.conf
    rpcbind=YES
    mountd=YES
    nfsd=YES

    i startujemy go:

    /etc/rc.d/rpcbind start
    /etc/rc.d/mountd start
    /etc/rc.d/nfsd start

    Warto sprawdzi? czy wszystkie komponenty zosta?y uruchomione, aby potem nie szuka? b??du podczas bootowania. Kolejno?? uruchamiania jest do?? wa?na.

    Ok, je?li mamy wszystko. Dzia?aj?cy rarpd, tftp, dhcpd z bootp i nfsd mountd i rpcbind oraz odpowiednie prawa do wszystkiego – mo?emy spróbowa? kompletnie wybootowa? Netr?! Go!

    ok boot net
    Boot device: /pci@1f,0/pci@1,1/network@c,1 File and args:
    Using Onboard Transceiver - Link Up.
    18c00
    Server IP address: 10.1.0.6
    Client IP address: 10.1.0.8
    >> NetBSD/sparc64 OpenFirmware Boot, Revision 1.13
    Using Onboard Transceiver - Link Up.
    Using BOOTP protocol: ip address: 10.1.0.8, hostname: netra, netmask: 255.255.21
    root addr=10.1.0.6 path=/export/netra/root

    =0x8573d8
    Loading netbsd: 6935248+357272+439736 [522792+334504/

    I tu nast?puj? ju? znane komunikaty kernela. Je?li na samym pocz?tku jest:

    NetBSD 5.0 (INSTALL) #0: Mon Apr 27 08:27:44 UTC 2009

    to znaczy, ?e je?li hardware si? nie wywali to za kilka sekund uj?ymy upragnione:

    Welcome to sysinst, the NetBSD-5.0 system installation tool.

    Instalacja jest prawie taka sama jak na i386/amd64. Po ostatecznym zbootowaniu mamy gotowy system!

    uname -mrs
    NetBSD 5.0 sparc64

    Kilka uwag na koniec:

    1. Je?li podczas bootowania kernel/system nie odpowiada, mo?na wys?a? mu breaka, wtedy jednak zamiast wrzuci? nas do ok znajdziemy si? w debugerze db>. po wydaniu reboot Netra zawiesza?a si? na amen i tylko twardy reset a w?a?ciwie cold boot pomaga?. Dlatego trzeba rebootowa? z opcj? 0x4 co powoduje brak syncowania dysków i restart do lom.

    2. Chwil? przed wej?ciem do sysinstalla jest pytanie o typ klawiatury, trzeba wybrac sun-type4 a nie sun, poniewa? nie b?d? dzia?a?y kursory. Instalacja jednak jest nadal mo?liwa u?ywaj?c litera?ów jako skrótów opcji.

    3. NetBSD na architekturze sparc64 nie zbootuje si? z FFS2, dlatego chocia? / musi zosta? jako FFS1, reszta partycji mo?e by? FFS2.

    4. Zmiana kernela z INSTALL na zwyk?y oraz rozpakowanie setsów do odpowiedniego miejsca w /export/netra/ oraz drobne modyfikacje rc.conf i swapa (tych w export) przy powy?szej konfiguracji zaskutkuje stworzeniem bezdyskowej stacji roboczej. Zmiana setsów na i386 lub amd64 pozwoli uruchomi? bezdyskow? stacj? na zwyk?ym PC :)

    W razie problemów do dyspozycji macie komentarze oraz IRC – #netbsd.pl – nick cancer. Podzi?kowania dla lamy i morra za cenne wskazówki podczas uruchamiania netboota :)

    Na koniec dmesg z ?wie?o odpalonej Netry:

    Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
    2006, 2007, 2008
    The NetBSD Foundation, Inc. All rights reserved.
    Copyright (c) 1982, 1986, 1989, 1991, 1993
    The Regents of the University of California. All rights reserved.

    NetBSD 5.0 (GENERIC) #0: Mon Apr 27 08:13:38 UTC 2009
    builds@b4.netbsd.org:/home/builds/ab/netbsd-5-0-RELEASE/sparc64/200904260229Z-obj/home/builds/ab/netbsd-5-0-RELEASE/src/sys/arch/sparc64/compile/GENERIC
    total memory = 1024 MB
    avail memory = 991 MB
    timecounter: Timecounters tick every 10.000 msec
    mainbus0 (root): SUNW,UltraAX-i2 (Netra T1 200): hostid 83061fe0
    cpu0 at mainbus0: SUNW,UltraSPARC-IIe @ 500 MHz, UPA id 0
    cpu0: 32K instruction (32 b/l), 16K data (32 b/l), 1024K external (64 b/l)
    psycho0 at mainbus0
    psycho0: SUNW,sabre: impl 0, version 0: ign 7c0 bus range 0 to 2; PCI bus 0
    psycho_alloc_extent: no "available" property
    psycho_alloc_extent: no "available" property
    DVMA map: c0000000 to e0000000
    IOTSB: 11d0000 to 1250000
    pci0 at psycho0
    pci0: i/o space, memory space enabled
    ppb0 at pci0 dev 1 function 1: Sun Microsystems Simba PCI bridge (rev. 0x13)
    pci1 at ppb0 bus 1
    pci1: i/o space, memory space enabled
    ebus0 at pci1 dev 12 function 0
    ebus0: Sun Microsystems PCIO Ebus2 (US III), revision 0x01
    flashprom at ebus0 addr 0-fffff not configured
    clock0 at ebus0 addr 0-1fff: mk48t59
    ebus_attach: idprom: incomplete
    SUNW,lomh at ebus0 addr 200000-200003 ipl 42 not configured
    alipm0 at pci1 dev 3 function 0: 74KHz clock
    iic0 at alipm0: I2C bus
    spdmem0 at iic0 addr 0x54
    spdmem0: SDRAM memory, data ECC, 512MB, 133MHz (PC-1100)
    spdmem0: 13 rows, 11 cols, 1 banks, 4 banks/chip, 7.5ns cycle time
    spdmem0: tAA-tRCD-tRP-tRAS: 3-20-20-45
    spdmem0: voltage LvTTL (not 5V tolerant), refresh time 7.8us (self-refreshing)
    spdmem1 at iic0 addr 0x55
    spdmem1: SDRAM memory, data ECC, 512MB, 133MHz (PC-1100)
    spdmem1: 13 rows, 11 cols, 1 banks, 4 banks/chip, 7.5ns cycle time
    spdmem1: tAA-tRCD-tRP-tRAS: 3-20-20-45
    spdmem1: voltage LvTTL (not 5V tolerant), refresh time 7.8us (self-refreshing)
    admtemp0 at iic0 addr 0x18: ADM1021 or compatible environmental sensor
    ebus1 at pci1 dev 7 function 0
    ebus1: Acer Labs M1533 PCI-ISA Bridge, revision 0x00
    dma at ebus1 addr 0-ffff ipl 1 not configured
    power at ebus1 addr 2000-2007 ipl 37 not configured
    com0 at ebus1 addr 3f8-3ff ipl 43: ns16550a, working fifo
    com0: console
    com1 at ebus1 addr 2e8-2ef ipl 43: ns16550a, working fifo
    gem0 at pci1 dev 12 function 1: Sun Microsystems ERI Ethernet (rev. 0x01)
    gem0: interrupting at ivec 3006
    ukphy0 at gem0 phy 1: Generic IEEE 802.3u media interface
    ukphy0: OUI 0x0008bb, model 0x0002, rev. 1
    ukphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
    gem0: Ethernet address 00:03:ba:06:1f:e0, 2KB RX fifo, 2KB TX fifo
    ohci0 at pci1 dev 12 function 3: Sun Microsystems USB controller (rev. 0x01)
    ohci0: interrupting at ivec 24
    ohci0: OHCI version 1.0, legacy support
    usb0 at ohci0: USB revision 1.0
    aceride0 at pci1 dev 13 function 0
    aceride0: Acer Labs M5229 UDMA IDE Controller (rev. 0xc3)
    aceride0: bus-master DMA support present
    aceride0: primary channel configured to native-PCI mode
    aceride0: using ivec 180c for native-PCI interrupt
    atabus0 at aceride0 channel 0
    aceride0: secondary channel configured to native-PCI mode
    atabus1 at aceride0 channel 1
    gem1 at pci1 dev 5 function 1: Sun Microsystems ERI Ethernet (rev. 0x01)
    gem1: interrupting at ivec 301c
    ukphy1 at gem1 phy 1: Generic IEEE 802.3u media interface
    ukphy1: OUI 0x0008bb, model 0x0002, rev. 1
    ukphy1: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
    gem1: Ethernet address 00:03:ba:06:1f:e0, 2KB RX fifo, 2KB TX fifo
    ohci1 at pci1 dev 5 function 3: Sun Microsystems USB controller (rev. 0x01)
    ohci1: interrupting at ivec 26
    ohci1: OHCI version 1.0, legacy support
    usb1 at ohci1: USB revision 1.0
    ppb1 at pci0 dev 1 function 0: Sun Microsystems Simba PCI bridge (rev. 0x13)
    pci2 at ppb1 bus 2
    pci2: i/o space, memory space enabled
    esiop0 at pci2 dev 8 function 0: Symbios Logic 53c896 (ultra2-wide scsi)
    esiop0: using on-board RAM
    esiop0: interrupting at ivec 1820
    scsibus0 at esiop0: 16 targets, 8 luns per target
    esiop1 at pci2 dev 8 function 1: Symbios Logic 53c896 (ultra2-wide scsi)
    esiop1: using on-board RAM
    esiop1: interrupting at ivec 1820
    scsibus1 at esiop1: 16 targets, 8 luns per target
    pcons at mainbus0 not configured
    timecounter: Timecounter "clockinterrupt" frequency 100 Hz quality 0
    timecounter: Timecounter "tick-counter" frequency 500000000 Hz quality 100
    No counter-timer -- using %tick at 500MHz as system clock.
    scsibus0: waiting 2 seconds for devices to settle...
    scsibus1: waiting 2 seconds for devices to settle...
    uhub0 at usb0: Sun Microsystem OHCI root hub, class 9/0, rev 1.00/1.00, addr 1
    uhub0: 4 ports with 4 removable, self powered
    uhub1 at usb1: Sun Microsystem OHCI root hub, class 9/0, rev 1.00/1.00, addr 1
    uhub1: 4 ports with 4 removable, self powered
    sd0 at scsibus0 target 0 lun 0: disk fixed
    sd0: 17274 MB, 7508 cyl, 19 head, 248 sec, 512 bytes/sect x 35378533 sectors
    sd0: sync (25.00ns offset 31), 16-bit (80.000MB/s) transfers, tagged queueing
    Kernelized RAIDframe activated
    root on sd0a dumps on sd0b
    root file system type: ffs




    Related Posts with Thumbnails

    © odwiedź stronÄ™ http://maciejewski.org po wiÄ™cej fajnych postów!

    Add your widget here