SPARC diskless und 4.0

Hi,

habe versucht, das 4.0 OpenBSD per netboot zu booten, und komme nicht weiter ... auf ne SparcStation 4.

Die Installation via CDROM auf die SS4 Festplatte funktioniert einwandfrei.
Die Installation via netboot auf die SS4 Festplatte geht auch (also wenn ich über Netz "bsd.rd" boote - dann komme ich ganz normal in die Installationsauswahl).

Versuche ich "bsd" zu booten, bleibt mir die Kiste nach dem (nfs) mounten von root und swap stehen, mit der letzten Meldung

"/dev/console device does not exist"

Ich habe eine BSD i386 Kiste als Server laufen.
Ich habe auf der SS4 das 4.0 installiert (ohne X), Passwörter, User und Datein in "/etc" geändert. Dann mit rsync in ein "ss4root" Verzeichnis auf dem i386 server kopiert.
Wenn ich mir das "ss4root" Verzeichnis anschaue, sehe ich, dass ich da im Unterverzeichnis "/dev" keine devices habe (is klar).

also: man diskless und google verfolgt, super, krieg ich auch hin, leider nur mit "bsd.rd".

habe dann auch mal nur das base40.tgz und etc40.tgz in "ss4root" gestellt, hängt mit derselben message...

Hat jemand eine Idee, wo ich weiter suchen kann / muss ?
(hoffe, ich muss keinen Crosscompiler anwerfen ...)

danke,

Volker
 
wahrscheinlich gibt es auf dem nfs-root kein /dev/console?
oder beim mounten von / ist irgendwas schiefgegangen.

beim bsd.rd wird root naemlich aus dem kernel in eine ramdisk geladen. (soweit ich weiss...keine ahnung.)

das ist damit ein anderes. natuerlich ist das auf dauer aber keine loesung.

edit: whoops, jetzt erst gelesen.
also... /dev muss mit auf dem root-verzeichnis sein. sonst gehts nich.
 
Last edited:
in root is das /dev Verzeichnis angelegt...
habe in der Zwischenzeit in einem Forum "http://marc.theaimsgroup.com/" in der OpenBSD-sparc Sektion das hier gefunden (war OBSD3.9):

>> Changing the two occurences of "set -A ..." in MAKEDEV to
>> "declare -a ..." and temporarily using the /etc/group file from the
>> OpenBSD tree made the script run without errors. After this procedure I
>> could log in.http://marc.theaimsgroup.com/?w=2

sieht so aus, als muss ich mich damit auseinander setzen. Ich berichte, wenn ichs geschafft hab ...
 
kurzer Update:

habe auf dem NFS Server (OpenBSD 3.9) im root/dev Verzeichnis für den netboot client (SPARC 4M) den Befehl "sudo ./MAKEDEV std" ausgeführt, welche das device "console" anlegt. Damit verschwindet der Fehler, dass das device nicht existiert. Die SPARC4 bleibt aber weiterhin hängen. Auch ein "sudo ./MAKEDEV all" hilft nicht weiter.

Wenn ich die Manuals richtig verstehe, müsste nach dem Kernel "init" geladen werden, und dann "rc" gestartet werden. Dazu habe ich in "rc" mal einen "echo *****" Befehl eingebaut, aber der erscheint nicht auf dem Terminal. Sieht also so aus, als kommt er nicht mal bis dahin. Wo finde ich die passende Info, welches Script/Prozess nach dem Kernel Boot die Laufwerke mounted (mountd wohl, denn ich habe ja die root und swap offensichtlich über NFS gemountet), und welches Script/Prozess dann als nächstes läuft ?

danke,

Volker
 
So, nach ein paar Umwegen habe ich es geschafft:

also, erstmal rtfm ! Dann das Ganze mal mit dem i386 Part unter VMWARE probiert. Aha, da geht ja alles, wie gewünscht, verstanden haben wirs auch ? Also wieder ran an die SPARC 4. Nach zwei Tagen hatte ich dann insgesamt 6 verschiedene Maschinen am Laufen ... also - geht doch !
Das ganze habe ich mal in diesen Text zusammen geschrieben:

*****************************************************

netbooting a SPARC 4 from a SuSE LINUX 9.3 system with OPENBSD 4.0:
(Alle IP Adressen und configs koennen angepasst werden, sind aus meinem Test-Labor)

in short::)
======

/etc/ethers
8:0:20:81:be:7a extfwss4carp1

/etc/bootparams
extfwss4carp1 root=marcix:/data/exports/4.0/extfwss4carp1/root \
swap=marcix:/data/exports/4.0/extfwss4carp1/swap


/etc/hosts
192.168.27.191 extfw_ss4carp1

/etc/exports

/data/exports/4.0/extfwss4carp1 extfwss4carp1(rw,sync,no_root_squash)

/tftpboot
copy the file "boot.net" from your CD to /tftpboot
>> cd /tftpboot
>> ln -s boot.net C0A81BC0.SUN4M


/data/exports/4.0/extfwss4carp1/root/etc/fstab
192.168.27.7:/data/exports/4.0/extfwss4carp1/root / nfs rw 0 0
192.168.27.7:/data/exports/4.0/extfwss4carp1/swap none swap sw,nfsmntpt=/swap

/data/exports/4.0/extfwss4carp1/root/etc/myname
extfwss4carp1.my.domain

/data/exports/4.0/extfwss4carp1/root/etc/hostname.le0

inet 192.168.27.191 255.255.255.0

start rarpd
start bootparamd
start tftpd
start nfsd


in long::D
========

rtfm(s) !

unter OpenBSD:
--> man diskless !

unter SuSE Linux:
es sind nicht immer alle services installiert, also besser mal in YAST checken, ob alle da sind, und dann an diese manual pages:
man rarpd
man bootparamd
man tftpd
man nfsd
man rpc.mountd

um /tftpboot vorzubereiten, muss bei SPARC4 Maschinen eine Umwandlung der IP Adresse in Hex vorgenommen werden. Das kann man ueber tcpdump mithoeren, die Sparc 4M fragt dann nach, welche Datei sie booten will:
>> sudo tcpdump -nettti vr0 port tftp
>> tcpdump: listening on vr0, link-type EN10MB
>> Oct 13 11:06:32.983670 8:0:20:7d:20:b5 0:b:6a:8e:31:86 0800 65:
>>192.168.27.191.16691 > 192.168.27.7.69: 23 RRQ "C0A81BC0.SUN4M"


oder aber mit diesem Kommando die IP Adresse umwandeln.
>> echo 192.168.27.192 | awk -F . '{ printf "%02X%02X%02X%02X\n", $1, $2, $3, $4 }'
Die Datei "boot.net" sollte dann ins Verzeichnis /tftpboot kopiert werden, und dort ein symbolischer link erstellt werden:
>> ln -s boot.net C0A81BC0.SUN4M

die Datei /etc/ethers erstellen, Datei siehe oben.
die Datei /etc/bootparams erstellen, Datei siehe oben.
die Datei /etc/hosts sollte mit der neuen IP Adresse versehen werden, Datei siehe oben.
die Datei /etc/exports erstellen, Datei siehe oben.

create directories for netboot SPARC:
>> mkdir -p /data/exports/4.0/extfwss4carp1
>> mkdir /data/exports/4.0/extfwss4carp1/root
>> mkdir /data/exports/4.0/extfwss4carp1/etc

ein leeres Swap File f374r 128MBytes anlegen:
>> cd /data/exports/4.0/extfwss4carp1
>> dd=128k count=1024 if=/dev/zero of=swap

und dann die Dateien (als root) base40.tgz und etc40.tgz in ihre Ziel-Verzeichnisse kopieren:
>> cd /data/exports/4.0/extfwss4carp1/root
>> tar -xvpzf base40.tgz
>> tar -xvpzf etc40.tgz


und den Kernel von der CD noch ins root Verzeichnis legen (als root):
>> cp /mnt/cdrom/4.0/sparc/bsd /data/exports/4.0/extfwss4carp1/root

jetzt ein kleiner "tricky" part: die Devices muessen erstellt werden.
Fuehrt man das direkt unter LINUX durch, wird es nachher nicht funktionieren.
Man sollte also mindestens eine SPARC Maschine mit OpenBSD 4.0 haben (Festplatte extern, oder intern kurz dran, nur Minimalsystem basei40 und etc40 installieren), dann booten, und das Verzeichnis hier mounten (als root):
>> mount -t nfs 192.168.27.7:/data/exports/4.0/extfwss4carp1/root/dev /mnt
>> cd /mnt
>> ./MAKEDEV all

und die SPARC Maschine wieder runter fahren.

Jetzt fuer die netboot Maschine die Config Files anpassen:
- hosts
- myname
- fstab
- hostname.le0


Und auf dem Linux Server den Ordner "/etc/xinetd.d/" anpassen, dass tftpd startet:
/etc/xinetd.d> cat tftp
# default: off
# description: tftp service is provided primarily for booting or when a \
# router need an upgrade. Most sites run this only on machines acting as
# "boot servers".
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -vv -s /tftpboot
disable = no
}


Jetzt die notwendigen Services auf der LINUX Maschine starten, geht ueber YAST (bei den Netzwerk services). Ich habe mir das Template fuer die init.d scripts (/etc/init.d/skeleton) angepasst, und fuer rarpd und rpc.bootparamd angepasst. Dann kann man sie in den RUNLEVELS im YAST auch sehen.

"tcpdump" wird nun gestartet, und erstnochmal sicherstellen, was die SPARC Maschine denn booten will:
>> sudo tcpdump -nettti vr0 port tftp
>> tcpdump: listening on vr0, link-type EN10MB
>> Oct 13 11:06:32.983670 8:0:20:7d:20:b5 0:b:6a:8e:31:86 0800 65:
>> 192.168.27.191.16691 > 192.168.27.7.69: 23 RRQ "C0A81BC0.SUN4M"

aha, sie requested "C0A81BC0.SUN4M", also nochmal im /tftpboot Verzeichnis checken, ob der link richtig ist !

Nochmal ein tcpdump auf dem Linux Server starten, es zeigt dann nach dem Einschalten der SPARC Maschine etwa das hier:
>> sudo tcpdump -e -vvvx -i vr0 host 192.168.27.191
23:25:33.001219 0:b:6a:8e:31:86 extfwss4carp1 ip 1514: marcix.peb.local > extfwss4carp1: (frag 48976:1480@4440+) (ttl 64, len 1500)
4500 05dc bf50 222b 4011 db7e c0a8 1b07
c0a8 1bbf a010 3fff 80a4 0011 12bf ffda
9010 3fff d007 bfd4 9610 0008 900a 207f
80a2 207f 0280 0013 80a2 2000 0280 0011
80a2 200f 1280 0010 808a e07f 1100 0923
d402​
23:25:33.001228 0:b:6a:8e:31:86 extfwss4carp1 ip 1514: marcix.peb.local > extfwss4carp1: (frag 48976:1480@5920+) (ttl 64, len 1500)
4500 05dc bf50 22e4 4011 dac5 c0a8 1b07
c0a8 1bbf d204 2010 1100 0511 7fff fc5b
9012 2218 d004 201c 4000 93b4 b010 2000
1080 0003 c024 201c b010 2001 81c7 e008
81e8 0000 9de3 bf98 1100 1986 e202 20a0
b010​
23:25:33.001233 0:b:6a:8e:31:86 extfwss4carp1 ip 934: marcix.peb.local > extfwss4carp1: (frag 48976:900@7400) (ttl 64, len 920)
4500 0398 bf50 039d 4011 fc50 c0a8 1b07
c0a8 1bbf 80a2 3fff 2280 0005 d004 2350
7fff ff7f 0100 0000 d004 2350 80a2 2000
22bf fff6 9010 3fff f004 2350 81c7 e008
81e8 0000 9de3 bf98 1100 1986 f002 20a0
a610

Beim ersten boot Vorgang wird er sich dann die SSH Keys zusammen bauen, das dauert bei mir ca 10min.

Es funktioniert alles mit dem GENERIC Kernel, man kann sich aber auch einen DISKLESS Kernel bauen
(compile dauert auf der SS4 etwa 1,5 Stunden !). Mit dmassage kann man entsprechend noch reduzieren.

Bei mir bootet die SPARC Maschine nun sauber durch. (Manchmal hat er das SWAP device nicht mounten koennen, dann hatte ich die falschen Rechte drauf. Dann mal das log auf dem Server checken:
>> sudo tail -n 50 -f /var/log/messages
ich hatte dann ein chmod 777 drauf gegeben, dann gehts.

*****************************************************
 
Back
Top