Betriebssysteme > Solaris/x86 und OpenSolaris
Install-/Jumpserver für Solaris 2.4 x86
vab:
Ach Herrje, RPL...
Hast Du es mal mit rpld -a versucht?
Eventuell mußt Du dem mal mit truss oder dtrace zuschauen, was er beim Start treibt.
Das inetboot.i86pc.Solaris_2.4 sollte er dann per tftp holen. Vielleicht läßtDu den tftpd mal mit -d laufen.
Ist aber natürlich der zweite Schritt, erst muß der Client mal seine Netz-Konfig haben.
Gruß -- Volker
escimo:
Mein EDIT-Eintrag habe ich wohl vergesssen zu speichern.
Da waren die Ausgaben von RPLD dabei, warum der nicht will... :-\
Der RPL will mein Netzwerk-Interfacenamen der VM (VMWare Workstation) nicht verwenden (e1000g0)
Wenn ich rpld mit Ausgabe auf Konsole starte, "zerstückelt" RPL mir den NIC-Namen und beschwert sich dann frech, dass er /dev/e1000 - eben nicht e1000g0 - nicht findet.
Ich ergänze den Output heute abend nochmal.
EDIT
lprd kommt wohl nicht mit 64-Bit Libs zurecht?
--- Zitat ---bash-3.00# ifconfig -a
lo0: flags=2001000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL> mtu 8232 index 1
inet 127.0.0.1 netmask ff000000
e1000g0: flags=1004843<UP,BROADCAST,RUNNING,MULTICAST,DHCP,IPv4> mtu 1500 index 2
inet 192.168.1.17 netmask ffffff00 broadcast 192.168.1.255
ether 0:c:29:b8:3a:4b
bash-3.00# ls -l /dev/e1000*
lrwxrwxrwx 1 root root 32 Dec 1 2009 /dev/e1000g -> ../devices/pseudo/clone@0:e1000g
lrwxrwxrwx 1 root root 55 Dec 1 2009 /dev/e1000g0 -> ../devices/pci@0,0/pci15ad,790@11/pci15ad,750@1:e1000g0
bash-3.00# /usr/sbin/rpld -a -b 0 -d 9 -D 0
found interface = /dev/e1000
ConfigFile = /etc/rpld.conf
DebugLevel = 9
DebugDest = console
MaxClients = -1 (unlimited)
BackGround = FALSE
LogFile = /var/spool/rpld.log
StartDelay = 20
DelayGran = 2
FrameSize = 1500
Interface = /dev/e1000
Opening /dev/e
Cannot open device /dev/e
--- Ende Zitat ---
LPRD ist (nur) ein 32-Bit Binary
--- Code: ---bash-3.00# file /usr/sbin/rpld
/usr/sbin/rpld: ELF 32-bit LSB executable 80386 Version 1, dynamically linked, stripped
bash-3.00# ldd /usr/sbin/rpld
libsocket.so.1 => /lib/libsocket.so.1
libc.so.1 => /lib/libc.so.1
libnsl.so.1 => /lib/libnsl.so.1
libmp.so.2 => /lib/libmp.so.2
libmd.so.1 => /lib/libmd.so.1
libscf.so.1 => /lib/libscf.so.1
libdoor.so.1 => /lib/libdoor.so.1
libuutil.so.1 => /lib/libuutil.so.1
libgen.so.1 => /lib/libgen.so.1
libm.so.2 => /lib/libm.so.2
bash-3.00# truss /usr/sbin/rpld -a -b 0 -d 9 -D 0
execve("/usr/sbin/rpld", 0x080476A0, 0x080476C4) argc = 8
mmap(0x00000000, 4096, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANON, -1, 0) = 0xFEFF0000
resolvepath("/usr/lib/ld.so.1", "/lib/ld.so.1", 1023) = 12
resolvepath("/usr/sbin/rpld", "/usr/sbin/rpld", 1023) = 14
sysconfig(_CONFIG_PAGESIZE) = 4096
stat64("/usr/sbin/rpld", 0x08047430) = 0
open("/var/ld/ld.config", O_RDONLY) Err#2 ENOENT
stat64("/lib/libsocket.so.1", 0x08046CD0) = 0
resolvepath("/lib/libsocket.so.1", "/lib/libsocket.so.1", 1023) = 19
open("/lib/libsocket.so.1", O_RDONLY) = 3
mmap(0x00010000, 32768, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_ALIGN, 3, 0) = 0xFEFB0000
mmap(0x00010000, 114688, PROT_NONE, MAP_PRIVATE|MAP_NORESERVE|MAP_ANON|MAP_ALIGN, -1, 0) = 0xFEF90000
mmap(0xFEF90000, 43986, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_TEXT, 3, 0) = 0xFEF90000
mmap(0xFEFAB000, 2645, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_INITDATA, 3, 45056) = 0xFEFAB000
munmap(0xFEF9B000, 65536) = 0
memcntl(0xFEF90000, 12080, MC_ADVISE, MADV_WILLNEED, 0, 0) = 0
close(3) = 0
stat64("/lib/libc.so.1", 0x08046CD0) = 0
resolvepath("/lib/libc.so.1", "/lib/libc.so.1", 1023) = 14
open("/lib/libc.so.1", O_RDONLY) = 3
mmap(0xFEFB0000, 32768, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0xFEFB0000
mmap(0x00010000, 1212416, PROT_NONE, MAP_PRIVATE|MAP_NORESERVE|MAP_ANON|MAP_ALIGN, -1, 0) = 0xFEE60000
mmap(0xFEE60000, 1102437, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_TEXT, 3, 0) = 0xFEE60000
mmap(0xFEF7E000, 30183, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_INITDATA, 3, 1105920) = 0xFEF7E000
mmap(0xFEF86000, 4240, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANON, -1, 0) = 0xFEF86000
munmap(0xFEF6E000, 65536) = 0
memcntl(0xFEE60000, 124080, MC_ADVISE, MADV_WILLNEED, 0, 0) = 0
close(3) = 0
stat64("/lib/libnsl.so.1", 0x08046CD0) = 0
resolvepath("/lib/libnsl.so.1", "/lib/libnsl.so.1", 1023) = 16
open("/lib/libnsl.so.1", O_RDONLY) = 3
mmap(0xFEFB0000, 32768, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0xFEFB0000
mmap(0x00010000, 647168, PROT_NONE, MAP_PRIVATE|MAP_NORESERVE|MAP_ANON|MAP_ALIGN, -1, 0) = 0xFEDC0000
mmap(0xFEDC0000, 525537, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_TEXT, 3, 0) = 0xFEDC0000
mmap(0xFEE51000, 19877, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_INITDATA, 3, 528384) = 0xFEE51000
mmap(0xFEE56000, 30040, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANON, -1, 0) = 0xFEE56000
munmap(0xFEE41000, 65536) = 0
memcntl(0xFEDC0000, 57900, MC_ADVISE, MADV_WILLNEED, 0, 0) = 0
close(3) = 0
mmap(0x00000000, 4096, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANON, -1, 0) = 0xFEFC0000
mmap(0x00010000, 24576, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANON|MAP_ALIGN, -1, 0) = 0xFEFA0000
munmap(0xFEFB0000, 32768) = 0
getcontext(0x080472A0)
getrlimit(RLIMIT_STACK, 0x08047298) = 0
getpid() = 1254 [1253]
lwp_private(0, 1, 0xFEFA2A00) = 0x000001C3
setustack(0xFEFA2A60)
sigfillset(0xFEF85DD0) = 0
sysi86(SI86FPSTART, 0xFEF86740, 0x0000133F, 0x00001F80) = 0x00000001
sysconfig(_CONFIG_PAGESIZE) = 4096
open("/etc/rpld.conf", O_RDONLY) = 3
fstat64(3, 0x08046890) = 0
brk(0x0806A270) = 0
brk(0x0806E270) = 0
fstat64(3, 0x080467D0) = 0
ioctl(3, TCGETA, 0x08046864) Err#25 ENOTTY
read(3, " #\n # D e f a u l t ".., 8192) = 496
llseek(3, 0, SEEK_CUR) = 496
close(3) = 0
open("/dev/ip", O_RDONLY) = 3
ioctl(3, SIOCGIFNUM, 0x0804760C) = 0
ioctl(3, SIOCGIFCONF, 0x08046DF8) = 0
ioctl(3, SIOCGIFFLAGS, 0x0806A278) = 0
ioctl(3, SIOCGIFFLAGS, 0x0806A298) = 0
ioctl(1, TCGETA, 0x08046134) = 0
fstat64(1, 0x080460A0) = 0
found interface = /dev/e1000
write(1, " f o u n d i n t e r f".., 29) = 29
open("/dev/e", O_RDWR) Err#2 ENOENT
close(3) = 0
ConfigFile = /etc/rpld.conf
write(1, " C o n f i g F i l e =".., 28) = 28
DebugLevel = 9
write(1, " D e b u g L e v e l =".., 15) = 15
DebugDest = console
write(1, " D e b u g D e s t =".., 21) = 21
MaxClients = -1 (unlimited)
write(1, " M a x C l i e n t s =".., 28) = 28
BackGround = FALSE
write(1, " B a c k G r o u n d =".., 19) = 19
LogFile = /var/spool/rpld.log
write(1, " L o g F i l e =".., 33) = 33
StartDelay = 20
write(1, " S t a r t D e l a y =".., 16) = 16
DelayGran = 2
write(1, " D e l a y G r a n =".., 15) = 15
FrameSize = 1500
write(1, " F r a m e S i z e =".., 18) = 18
Interface = /dev/e1000
write(1, " I n t e r f a c e =".., 24) = 24
Opening /dev/e
write(1, " O p e n i n g / d e v".., 15) = 15
open("/dev/e", O_RDWR) Err#2 ENOENT
Cannot open device /dev/e
write(1, " C a n n o t o p e n ".., 26) = 26
_exit(-1)
--- Ende Code ---
escimo:
Mmm. Habe nochmal auf Null zurückgesetzt.
VM-Guest Solaris 10 32-Bit unter VirtualBox mit PCnet-PCI II (pcn0) als Netzwerkbrücke konfiguriert, Solaris 10 core + Anpassungen (ohne X11) installiert. SSHD konfiguriert. Alles schick.
--- Code: ---# pkginfo | grep SUNWbs
system SUNWbsr Boot Server daemons (Root)
system SUNWbsu Boot Server daemons (Usr)
# pkginfo | grep SUNWtf
system SUNWtftp Trivial File Transfer Server
system SUNWtftpr Trivial File Transfer Server (Root)
# pkginfo | grep SUNWnfs
system SUNWnfsckr Network File System (NFS) client kernel support (Root)
system SUNWnfscr Network File System (NFS) client support (Root)
system SUNWnfscu Network File System (NFS) client support (Usr)
system SUNWnfsskr Network File System (NFS) server kernel support (Root)
system SUNWnfssr Network File System (NFS) server support (Root)
system SUNWnfssu Network File System (NFS) server support (Usr)
--- Ende Code ---
Dann...
1. Volume Manager SMF Service deaktiviert
--- Code: ---# svcs -a | grep vol
disabled 15:09:11 svc:/system/filesystem/volfs:default
--- Ende Code ---
EDIT BEGIN
2. CD-Image mounten lofiadm
/!\ Das geht irgendwie nach wie vor nicht. Daher bediene ich mich aus einem selbsterstellten TGZ der Slices 0+2, welches ich nach dem Mount unter Ubuntu mittels FTP auf der Solaris 10 VM abgelegt und entpackt habe
--- Code: ---# lofiadm -a /home/sx/solaris.2.4.x86.iso
dev/lofi/1
# mount -o ro -F hsfs /dev/lofi/1 /mnt
# cd /mnt
# ls -l
total 184
-rwxr-xr-x 1 root bin 42942 Jul 22 1994 add_install_client
drwxr-xr-x 2 root other 2048 Aug 3 1994 archinfo
drwxr-xr-x 3 bin bin 2048 Aug 3 1994 auto_install_sample
-rw-r--r-- 1 root other 6999 Aug 3 1994 Copyright
drwxr-xr-x 3 root other 2048 Aug 3 1994 export
drwxr-xr-x 14 root bin 2048 Okt 18 1994 Patches
drwxr-xr-x 4 root bin 2048 Aug 3 1994 Posix.2
-rwxr-xr-x 1 root bin 12298 Jul 22 1994 rm_install_client
-rwxr-xr-x 1 root bin 6381 Jul 22 1994 setup_install_server
drwxr-xr-x 108 root other 14336 Aug 3 1994 Solaris_2.4
--- Ende Code ---
EDIT END
3. Anlage Jumpstart Verzeichnisstruktur
(i) Verzeichnisnamen "jumpstart" habe ich zugunsten "install" ersetzt
--- Code: ---# mkdir -p /export/install/{2_4,2_4_x86}
# ./setup_install_server /export/install/2_4_x86
Verifying target directory...
Copying the CD image to disk...
Install Server setup complete
--- Ende Code ---
4. Konfiguration Install-Client erzeugen
(i) Bootserver nicht nötig, da Installserver später im selben Subnetz laufen wird wie Install-Client
--- Code: ---# egrep "^(hosts)|(ethers)|(bootparams)" /etc/nsswitch.conf
hosts: files dns # Added by DHCP
ethers: files
bootparams: files
# grep scenic /etc/inet/hosts
192.168.1.35 scenic # Siemens Nixdorf Scenic Pro C5
# cat /etc/ethers
#00:A0:24:6C:63:39 scenic
0:a0:24:6c:63:39 scenic
# pwd
/export/install/2_4_x86
# ./add_install_client -s jumper:/export/install scenic i86pc
Warning: no interface configured for subnet 192.168.1.0
making /rplboot
saving original /etc/dfs/dfstab in /etc/dfs/dfstab.orig
Adding "share -F nfs -o ro,anon=0 /export/install" to /etc/dfs/dfstab
starting rpld
starting rarpd
starting bootparamd
updating /etc/bootparams
copying inetboot to /rplboot
# cat /etc/bootparams
scenic root=jumper:/export/install/2_4_x86/export/exec/kvm/i386.i86pc.Solaris_2.4 install=jumper:/export/install boottype=:in numbootfiles=3 bootfile=/rplboot/192.168.1.35.hw.com:45000 bootfile=/rplboot/192.168.1.35.glue.com:35000 bootfile=/rplboot/192.168.1.35.inetboot:8000 bootaddr=35000
--- Ende Code ---
5. NFS-Server konfigurieren (Export-Verzeichnis)
(i) Refresh nach Anpassung alternativ über "svcadm refresh network/nfs/server"
--- Code: ---# grep ^share /etc/dfs/dfstab
share -F nfs -o ro,anon=0 /export/install
# shareall
--- Ende Code ---
6. TFTP Server konfiguriert
(i) ist eigentlich nicht nötig aber der Vollständigkeit auf RPL-Rootverzeichnis gelegt
--- Code: ---# tail -2 /etc/inetd.conf
#tftp dgram udp6 wait root /usr/sbin/in.tftpd in.tftpd -s /tftpboot
tftp dgram udp6 wait root /usr/sbin/in.tftpd in.tftpd -s /rplboot
# inetconv -i /etc/inetd.conf
inetconv: Notice: Service manifest for 100235/1 already generated as /var/svc/manifest/network/rpc/100235_1-rpc_ticotsord.xml, skipped
tftp -> /var/svc/manifest/network/tftp-udp6.xml
Importing tftp-udp6.xml ...Done
# svcs -a | grep -i tftp
online 8:20:39 svc:/network/tftp/udp6:default
--- Ende Code ---
7. Services und Daemon(s) starten
--- Code: ---# svcs -a | egrep "(nfs\/server)|(tftp)|(rarp)|(bootparam)"
disabled 12:41:39 svc:/network/rpc/bootparams:default
disabled 12:41:39 svc:/network/rarp:default
online 14:31:01 svc:/network/nfs/server:default
online 14:38:54 svc:/network/tftp/udp6:default
# svcadm enable network/rpc/bootparams
# svcadm enable network/rarp
# svcs -a | egrep "(nfs\/server)|(tftp)|(rarp)|(bootparam)"
online 14:31:01 svc:/network/nfs/server:default
online 14:38:54 svc:/network/tftp/udp6:default
online 15:05:20 svc:/network/rpc/bootparams:default
online 15:05:27 svc:/network/rarp:default
# /usr/sbin/rpld -a
# echo $?
0
# reboot
<VM_REBOOT>
# ps -ef | egrep -i "(bootparam)|(rarpd)|(rpld)" | grep -v grep
root 274 1 0 15:09:18 ? 0:00 /usr/sbin/rpc.bootparamd
root 448 1 0 15:09:22 ? 0:00 /usr/sbin/in.rarpd -a
root 482 1 0 15:09:22 ? 0:00 /usr/sbin/rpld -a
# svcs -a | egrep "(nfs\/server)|(tftp)|(rarp)|(bootparam)"
online 15:09:18 svc:/network/rpc/bootparams:default
online 15:09:20 svc:/network/tftp/udp6:default
online 15:09:21 svc:/network/nfs/server:default
online 15:09:21 svc:/network/rarp:default
# grep ^share /etc/dfs/dfstab
share -F nfs -o ro,anon=0 /export/install
# share
- /export/install ro,anon=0 ""
--- Ende Code ---
vab:
Das sieht ja schon ganz nett aus. Funktioniert es nun? :-)
Zwei Anmerkungen:
* Das Kopieren von einer Slice herunter funktioniert so einfach nicht. Dazu muß man entweder eine "echte" CD mounten, oder jede Slice einzeln von der CD herunterkopieren und einzeln mounten. Dazu hab ich 2003(!) mal ein Tool geschrieben, das die Slices in Files schreibt, die dann per lofi gemountet werden können.
* Das von Dir rot markierte im Output von rpld scheint einfach ein Bug zu sein. Das Programm verkraftet nicht, daß schon der Treibername "e1000g" Ziffern enthält. Wenn Deine Karte "hme0" heißen würde, hätte es vermutlich geklappt.
Gruß -- Volker
escimo:
Hi Volker,
EDIT BEGIN
danke für deine Anmerkungen.
der Inhalt hat zumindest eine identische Größe. Vergleich der Datenmenge nach Ausführung von setup_install_server
bash-3.2# du -sh 2_4_x86 2_4_x86.backup
231M 2_4_x86 ---> lofiadm ISO Mount
231M 2_4_x86.backup ---> Entpacken aus TGZ
EDIT END
Ob es funktioniert? - Ein ganz klares NEIN.
Ich konnte zumindest in die interaktive Installation einsteigen. Weit gekommen bin ich damit nicht. Der hängt bei der Konfiguration der Devices bzw. beim Laden von Treibern ...
--- Zitat ---Boot path: /isa/elx@0,0
Boot args: /kernel/unix
Select the type of installation you want to perform:
(...)
<<< starting interactive installation >>>
Booting /kernel/unix...
SunOS Release 5.4 Vesion generic [UNIX(R) System V Release 4.0]
Copyright (c) 1983-1994, Sun Microsystems, Inc.
whoami: no domain name
/
--- Ende Zitat ---
Habe noch keine Idee warum. Gebootet habe ich mit dem Driver Update 10 (DU10) Boot-Disks. Ggf. ist beim Kopieren der S2-Slice unter Linux auch was schiefgegangen. In der VM konnte ich das bis jetzt noch nicht beheben/umgehen.
Auszug /var/spool/rpld.log ab RPL von Install-Client
--- Zitat ---FIND frame received
host is scenic
Entered clientlookup(), number of clients = 0
No clients yet, returning
There are 3 bootfiles for this client
Sending out FOUND Frame
SEND FILE REQUEST received
Entered clientlookup(), number of clients = 1
Looking for client 0 A0 24 6C 63 39
Client found
SEND FILE REQUEST received
Entered clientlookup(), number of clients = 1
Looking for client 0 A0 24 6C 63 39
Client found
SEND FILE REQUEST received
Entered clientlookup(), number of clients = 1
Looking for client 0 A0 24 6C 63 39
Client found
reading file /rplboot/192.168.1.35.hw.com, seeking to 0
SEND FILE REQUEST received
Entered clientlookup(), number of clients = 1
Looking for client 0 A0 24 6C 63 39
Client found
SEND FILE REQUEST received
(...)
Entered clientlookup(), number of clients = 1
Looking for client 0 A0 24 6C 63 39
Client found
reading file /rplboot/192.168.1.35.glue.com, seeking to 0
SEND FILE REQUEST received
(...)
Entered clientlookup(), number of clients = 1
Looking for client 0 A0 24 6C 63 39
Client found
reading file /rplboot/192.168.1.35.inetboot, seeking to 136785
SEND FILE REQUEST received
(...)
SEND FILE REQUEST received
Entered clientlookup(), number of clients = 1
Looking for client 0 A0 24 6C 63 39
Client found
reading file /rplboot/192.168.1.35.inetboot, seeking to 142657
Current file reaches eof, closing
All files downloaded, update state to ST_SEND_FINAL
SEND FILE REQUEST received
Entered clientlookup(), number of clients = 1
Looking for client 0 A0 24 6C 63 39
Client found
Invalid status 1 when SEND FILE comes in
sending down the last frame
removing client 0 A0 24 6C 63 3
--- Ende Zitat ---
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln