Running recent Nevada builds on a VIA EPIA system

At home I use a VIA EPIA system to serve NFS for my other systems. Since I didn't want another noisy system near my desk, I chose a fanless 600 MHz VIA C3 motherboard. This system has been happily running Nevada (and Solaris 10 before that) for quite some time. As it was running an ancient build (snv_48), I decided to upgrade it to some more recent bits.

While trying to install build 71 some weeks ago, I ran into 6591195 segvn_init() may return before checking HAT_SHARED_REGIONS support where the system paniced with the message "No shared region support on x86 ". Luckily the fix for that went into snv_72, so when snv_73 became available I had another go. This time the system got a little further before it fell over:

init(1M) exited on fatal signal 9: restarting automatically
init(1M) exited on fatal signal 9: restarting automatically
init(1M) exited on fatal signal 9: restarting automatically

Some searching turned up 6572151 snv boot failure since snv_66 which is a dup of 6332924 snv_24 /usr/ccs/bin/as adds new HWCAP tags to previously untagged object. The problem is that libc.so is now built with HWCAP tags that specify that SSE is required while it is not required per se (if SSE is available it will be used, otherwise it will not be used).

However, since the tag says that SSE is required, a system without SSE support will no longer work. The first consumer of libc.so after boot is /sbin/init. It will fail because libc.so requires SSE, die a horrible death and get restarted (and restarted, and restarted, ...). Running isainfo on my EPIA system shows that it indeed does not have the SSE capability:

 $ isainfo -v
32-bit i386 applications
        ahf mmx cx8 tsc fpu 
CR 6332924 is currently in the 'Fix in progress' state so there is no build which includes the fix yet. There is a workaround though: elfedit(1). As the name suggests elfedit can be used to edit ELF files, and that is what I did. By removing the SSE HWCAP tag from libc.so, I was able the get my EPIA to work with build 73.

Here is what I did to make it work: since we obviously can't easily update libc.so on the DVD, I used LiveUpgrade to create a second boot environment for build 73:

# lucreate -c nv_48 -n nv_73 -m /:/dev/dsk/c0d0s3:ufs
# luupgrade -n nv_73 -u -s /mnt   # DVD mounted on /mnt

Next, I mounted the build 73 BE to access the build 73 copy of /lib/libc.so

# lumount -n nv_73

elfedit is available from snv_75 onwards so I copied libc.so to another system running a recent nightly build to remove the SSE tag:

$ file /tmp/libc.so 
/tmp/libc.so:   ELF 32-bit LSB dynamic lib 80386 Version 1 [SSE CX8 FPU], dynami
cally linked, not stripped, no debugging information available
$ elfedit -e 'cap:hw1 -and -cmp sse' /tmp/libc.so
$ file /tmp/libc.so 
/tmp/libc.so:   ELF 32-bit LSB dynamic lib 80386 Version 1 [CX8 FPU], dynamicall
y linked, not stripped, no debugging information available

I copied the modified libc.so back and activated the nv_73 boot environment:

# luumount nv_73
# luactivate nv_73
# init 6

Success!

(Ali Bahrami, I owe you a beer!)

Comments:

Yep... I just tried snv_72 and got the horrible

init(1M) exited on fatal signal 9: restarting automatically

over and over and over again. This is on an Athlon ThunderBird. They broke Solaris but good this time around, which is unusual.

Posted by UX-admin on September 24, 2007 at 02:57 AM CEST #

Post a Comment:
Comments are closed for this entry.
About

menno

Search

Categories
Archives
« April 2014
SunMonTueWedThuFriSat
  
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
   
       
Today
News

No bookmarks in folder

Blogroll

No bookmarks in folder