Continue on the last blog, the Solaris PowerPC kernel boot-up on EFIKA, both as usual and unusual, on Dec 4th 2006.
As usual, which we expect due to the facts that the ODW and EFIKA use the same firmware, and it is industry standard (
IEEE1275) used widely in Sun SPARC systems and Apple PowerPC systems. It is a very nice solution to provide binary compabilities for different hardware configuration. As ODW is the target machine for Solaris PowerPC development, we are not surprising at all to see the kernel bootup without problem.
As unusual, even with the same firmware in EFIKA as in ODW, there are differences in hardware, which means the firmware implementation is not the same on these two board, even they all both have the standard interfaces. Yet the differences are well addressed by the firmwares and they are transparent to the kernel. An os kernel (or a kernel loader) that is developed on top of it is BINARY portable. Please note, it is not just portable in source level or just application binary compatible.
Here is the boot log from serial port:
[07:25 PM] :~$ date
Mon Dec 4 19:25:30 CST 2006
[07:25 PM] :~$ tip -115200 /dev/ttya
connected
EFIKA 5K2 Boot Strap [RELEASE BUILD] (c) 2002-2006 bplan GmbH (BUILD 20061101134
833)
Running on CPU PVR: 0x80822014
Running on system SVR: 0x80110022
BIOS Code position: 0xFFF040D0
Setup System Config... Done.
Setup Memory Config... Done.
Setup PCI... Done.
Setup ATA... Done.
Setup USB... Done.
Setup ETH... Done.
Testing 08000000 Bytes, Pass: 00000000 Failed: 00000000
RAM TEST (fill random)... Done.
cpu0: PowerPC,G2 CPUClock 396 Mhz BUSClock 132 Mhz (Version 0x8082,0x2014)
Welcome to SmartFirmware(tm) for bplan EFIKA5K2
Version 1.3 (20061107101950)
SmartFirmware(tm) Copyright 1996-2001 by CodeGen, Inc.
All Rights Reserved.
Pegasos BIOS Extensions Copyright 2001-2006 by bplan GmbH.
All Rights Reserved.
ok ls
openprom
aliases
options
packages
chosen
memory@0
cpus
rtas
failsafe
builtin@F0000000
pci@80000000
ok printenv
Variable Value (Default Value)
------------------------------------------------------------------------------
ac-back-behaviour on ()
security-password ********
security-#badlogins ()
security-mode ()
fcode-debug? false (false)
load-base 0x00400000 (0x00400000)
virt-size -1 (-1)
virt-base -1 (-1)
real-size 0x00400000 (0x00400000)
real-base 0x00000000 (0x00000000)
real-mode? true (true)
little-endian? false (false)
inverse-video? false (false)
oem-banner This space for rent. (This space for rent.)
oem-banner? false (false)
oem-logo? false (false)
screen-#rows 24 (24)
screen-#columns 80 (80)
output-device screen (screen)
input-device keyboard (keyboard)
use-nvramrc? true (true)
nvramrc
1: devalias eth /builtin/ethernet
2: probe-all install-console banner
client-ip ()
server-ip ()
secondary-diag? false (false)
use-argv[0]? false (false)
usb-enable? true (true)
fb-mode 0x0x0 (0x0x0)
diag-switch? false (false)
diag-file diag (diag)
diag-device eth (eth)
boot-protocol dhcp (dhcp)
boot-device eth (eth)
boot-file os_image (os_image)
boot-command boot (boot)
auto-boot-timeout 5000 (5000)
auto-boot? false (false)
ok setenv client-ip 192.168.1.15
client-ip = 192.168.1.15
ok setenv server-ip 192.168.1.13
server-ip = 192.168.1.13ok printenv
Variable Value (Default Value)
------------------------------------------------------------------------------
ac-back-behaviour on ()
security-password ********
security-#badlogins ()
security-mode ()
fcode-debug? false (false)
load-base 0x00400000 (0x00400000)
virt-size -1 (-1)
virt-base -1 (-1)
real-size 0x00400000 (0x00400000)
real-base 0x00000000 (0x00000000)
real-mode? true (true)
little-endian? false (false)
inverse-video? false (false)
oem-banner This space for rent. (This space for rent.)
oem-banner? false (false)
oem-logo? false (false)
screen-#rows 24 (24)
screen-#columns 80 (80)
output-device screen (screen)
input-device keyboard (keyboard)
use-nvramrc? true (true)
nvramrc
1: devalias eth /builtin/ethernet
2: probe-all install-console banner
client-ip 192.168.1.15 ()
server-ip 192.168.1.13 ()
secondary-diag? false (false)
use-argv[0]? false (false)
usb-enable? true (true)
fb-mode 0x0x0 (0x0x0)
diag-switch? false (false)
diag-file diag (diag)
diag-device eth (eth)
boot-protocol dhcp (dhcp)
boot-device eth (eth)
boot-file os_image (os_image)
boot-command boot (boot)
auto-boot-timeout 5000 (5000)
auto-boot? false (false)
ok boot eth:192.168.1.13,inetboot
RR
boot: OpenSolaris on PowerPC Boot Interface.
OpenSolaris on PowerPC from Sun Labs and the Blastwave Community!memlistpage = 186a000
scratchmemp = 186b000
Physmem avail:
addr = 0x0:0x1801000, size = 0x0:0x67ff000
Virtmem avail:
addr = 0x0:0x0, size = 0x0:0x8000000
Phys installed:
addr = 0x0:0x0, size = 0x0:0x8000000
bootpath: 0x1863800 /builtin@F0000000/ethernet@F0003000:192.168.1.13,inetboot
bootargs: 0x1863900 -v
filename: 0x1868938
kernname: 0x18448d0 ppc/unix
boot: bsys_printf is at offset 0x38 instead of 60
boot: this will likely make old kernels die without printing a message.
Physinstalled: addr = 0x0:0x0, size = 0x0:0x8000000
Physfree: addr = 0x0:0x1801000, size = 0x0:0x67ff000
Virtfree: addr = 0x0:0x0, size = 0x0:0x8000000
device path '/builtin@F0000000/ethernet@F0003000:192.168.1.13,inetboot'
client path '/builtin@F0000000/ethernet@F0003000'
Now mounting root fs on device /builtin@F0000000/ethernet@F0003000:192.168.1.13,
Using RARP/BOOTPARAMS...
Internet address is: 192.168.1.15
Internet address (via rarp) is: 192.168.1.15
hostname: efika.yan.hom
domainname: yan.hom
Found 192.168.1.13 @ 0:16:41:17:97:2c
root server: (192.168.1.13)
root directory: /export/home/yanyh/bootbase/nfsroot
root fs mounted on device /builtin@F0000000/ethernet@F0003000:192.168.1.13,inetboot
standalone = `ppc/unix', args = `-v'
boot: cannot open ppc/unix
Enter filename [ppc/unix]: /platform/ppc/kernel/unix
trying '/platform/ppc/kernel/unix'
Boot file (/platform/ppc/kernel/unix) opened!
fd = 1
calling readelf, elfheader is:
e_ident 0x7f454c46, 0x1020100, 0x0, 0x0
e_machine 0x14
e_entry 0x22a9010
e_shoff 0x355578
e_shnentsize 40
e_shnum 10
e_shstrndx 9
Entry point: 22a9010
lseek: args = 1 34 0
Size: Doing header 0x0
phdr
p_offset = 10000, p_vaddr = 2000000
p_memsz = ba6304, p_filesz = 3410c0
seeking to 0x10000
0x3410c0+allocating memory: 2000000 ba6304 0
reading 0x3410c0 bytes into 0x2000000
\