UltraLinux Home
Bring your penguin into the Sun
Frequently Asked Questions Web Links Mailing Lists UltraLinux People
About Linux About UltraLinux Distributions News and Announcements About Linux
Version: 2.29
Last Update: October 12, 2003

Section 1: General

Section 2: Hardware

Section 3: Distributions

Section 4: Building

Section 5: Booting

Section 6: Running

Section 1: General

1. About the UltraLinux FAQ.

The entire contents of this document are copyright 1995 - 2000 by Jim Mintha and Pieter Krul, all rights reserved.

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with no Invariant Sections, with no Front-Cover Texts and with no Back-Cover Texts.
A copy of the license can be found at http://www.ultralinux.org/fdl.txt and at http://www.gnu.org/copyleft/fdl.txt.

2. What is the history/design/philosophy of UltraLinux ?

See The UltraLinux paper from the 1997 Uselinux conference by David Miller and Miguel de Icaza, which gives an overview from the start of the project up to the first Linux distribution with SPARC support, Red Hat Linux 4.0.

3. What is up with all the names (Ultra, SPARC, S/Linux) ?

A bit of history. In the beginning the port was called SparcLinux. Unfortunately the owners of the SPARC trademark (SPARC International) felt that this was not a valid use of their trademark and that customers might feel that SPARC Intl. was sponsoring or endorsing the product in some way. So, in order not to get sued I changed the name on the web site to S/Linux. When David Miller, Jakub Jelinek and Eddie C. Dost began to develop the 64-bit port for the UltraSPARC machines, they used the term UltraLinux. It made the most sense to call the project as a whole UltraLinux.

4. Why are there two ports for the SPARC, 32- and 64-bit ?

Originally the port was done to 32-bit SPARC machines. Later a kernel was developed to exploit the 64-bit features of Sun's newer UltraSPARC chips. Under Linux, the 32-bit SPARC architecture is known as "sparc", and the 64-bit as "sparc64". The architecture dependent parts for the sparc64 were included in the Linux kernel tree as of version 2.2.5

5. Is everything 64-bit on sparc64, and can I compile 64-bit applications ?

The kernel and kernel modules are 64-bit on sparc64, userland is still 32-bit, and in fact the same as on sparc32. The conversion between native 32- and 64-bit function calls is being done via the kernel. Allthough you can compile a kernel with egcs64, you can't really use this compiler for building 64-bit userland binaries. See also "Why can't I compile certain software on my sparc64 ?" in Section 9.

6. When will it be done ?

Done implies that there is no more work to do. In that sense it will never be done. There will always be more features to add, machines to support, and better performance to be had. On the other hand, things work quite well right now. There are a number of distributions available now.

7. I'm having a problem with .... What should I do ?

The best thing to do when you find a problem is to send a message to one of the mailing lists. All of the developers read the lists and possibly someone else can help you. David (and the other developers) are too busy to answer every email that gets sent to them.
For more information about the available mailing lists, see http://www.ultralinux.org/lists.html

The SPARC-HOWTO also provides more information on Linux on SPARC.

8. Does David Miller work on UltraLinux full-time ?

Dave works for Red Hat now.

9. Will UltraLinux run regular Linux (Intel) binaries ?

No. Among other things (such as completely different processors), Intel machines are little-endian and SPARC machines are big-endian.

10. Will UltraLinux run SunOS/Solaris binaries ?

Yes, there is SunOS emulation, you will require the shared libraries from SunOS (See the related question in the Running section). Solaris as well as NetBSD/OpenBSD support is being worked on. Miguel on the Solaris emulation:

Solaris emulation is not yet finished, but will let you run small Solaris programs (Solaris Netscape does not work for example). You need the ibcs2 package, compile it, create the devices with the script on the package and insert the module. You may need Solaris shared libraries and configuration files. Make sure you host your Solaris stuff under /usr/gnemul/solaris
With later 2.2.x kernels and higher on sparc64, you have the option to choose Solaris Binary Emulation (CONFIG_SOLARIS_EMUL), which will produce a kernel module called solaris.o
See the question in the Running section for more details.

11. How good is the SunOS/Solaris emulation ?

From Miguel:

Mhm, this one is hard to tell. I can tell you that achieving 100% SunOS binary compatibility is not possible without making UltraLinux incompatible with the other ports. We have a pretty good SunOS emulation that should be able to run most SunOS programs though.

12. What kind of file systems does UltraLinux use ?

The native file system for UltraLinux is ext2fs. The later 2.0.x kernels can read UFS (standard Sun) file systems. The 2.2.x kernels can read and write UFS partitions, which makes it easy to share information with Solaris systems.

13. Can I share a swap partition between SunOS/Solaris and UltraLinux ?

It should not be a problem at all. The only prerequisite is that you run "mkswap /dev/sda1" on that partition in your startup scripts on the Linux installation. This is because SunOS uses the swap as just a raw device and doesn't have magic numbers etc. like Linux does. So if you didn't do the mkswap then SunOS would spam all the control information and Linux wouldn't be able to use the swap partition anymore. SunOS doesn't care what is on there.

14. Can I use the Logical Volume Manager (LVM) on UltraLinux ?

At this time, the Sistina LVM for Linux doesn't work out of the box on UltraLinux. Most major distributions (Debian, SuSE) support Sistina's LVM however in their latest and/or development releases.

If you are going to use LVM, beware that LVM starts writing at the very start of the disk device and will overwrite the Sun disk label. This could result in not being able to boot anymore from that disk. The LVM partition should start at cylinder 1 or higher, allowing the Sun disklabel, also an essential part for SILO, to be spared.

Probably another good idea is to take a good look at LVM's lvmcreate_initrd. This should allow you to initialize LVM before all filesystems are mounted. You might have to change the initial ramdisk size to 8kB, which can be done by adding append = "ramdisk_size=8192" to /etc/silo.conf, setting this from the boot: prompt, or when configuring your kernel.

15. I heard that UltraLinux is faster then SunOS/Solaris. Is this true ?

Faster is a very relative term. UltraLinux takes a smaller amount of memory to start up, so for machines with a small amount of memory it will tend to seem faster. For most low level kernel functions UltraLinux is faster as you can see from these benchmark results:

                    L M B E N C H  1 . 0   S U M M A R Y

            Processor, Processes - times in microseconds
Host                 OS  Mhz    Null    Null  Simple /bin/sh Mmap 2-proc 8-proc
                             Syscall Process Process Process  lat  ctxsw  ctxsw
--------- ------------- ---- ------- ------- ------- ------- ---- ------ ------
trombetas  Linux 2.0.27   50      10    4.8K   59.3K    159K  182     58     77
shakedown   SunOS 5.5.1   49      34   36.0K  158.9K    290K  471    163    201
geneva.ru     SunOS 5.5   50      31   33.7K  148.2K    274K  596    174    205
negro.rut SunOS 4.1.3_U   49     124   18.3K   63.9K    110K  470    152    262

            *Local* Communication latencies in microseconds
Host                 OS  Pipe       UDP    RPC/     TCP    RPC/
                                            UDP             TCP
--------- ------------- ------- ------- ------- ------- -------
trombetas  Linux 2.0.27     209     972    1608    1183    2160
shakedown   SunOS 5.5.1     556    1646    2125    1423    2518
geneva.ru     SunOS 5.5     530    1563    2080    1354    2398
negro.rut SunOS 4.1.3_U     890    1375    2287    1573    2804

            *Local* Communication bandwidths in megabytes/second
Host                 OS Pipe  TCP  File   Mmap  Bcopy  Bcopy  Mem   Mem
                                  reread reread (libc) (hand) read write
--------- ------------- ---- ---- ------ ------ ------ ------ ---- -----
trombetas  Linux 2.0.27    9  7.3   16.9   24.3     19     25   40    37
shakedown   SunOS 5.5.1    7  6.9   18.0   19.6     18     24   40    36
geneva.ru     SunOS 5.5    8  7.0   12.6   19.5     18     18   40    36
negro.rut SunOS 4.1.3_U    4  2.0   19.5    8.2     18     24   41    36

            Memory latencies in nanoseconds
            (WARNING - may not be correct, check graphs)
Host                 OS   Mhz  L1 $   L2 $    Main mem    TLB    Guesses
--------- -------------   ---  ----   ----    --------    ---    -------
trombetas  Linux 2.0.27    49    20    172         180     -1    No L2 cache?
shakedown   SunOS 5.5.1    49    20    175         182    600    No L2 cache?
geneva.ru     SunOS 5.5    49     -      -           -      -    Bad mhz?
negro.rut SunOS 4.1.3_U    49    20    175         183    659    No L2 cache?
Also lm@neteng.engr.sgi.com (Larry McVoy) wrote:
OK, I think I can handle this. Tell your friend that I used to work at SunSoft, in the kernel group, I did posix, ufs clustering, the sun source mgmt system, started 100baseT, architected the cluster product line (from which came vlans which I invented), etc. I think my credentials are probably enough to impress a sys admin :-)
The main reasons that Linux is faster than commercial Unices:

  • the system call entry is a better design. All Unix systems other than Linux use the design done by Bell Labs 20 years ago and the Linux design is simply lighter - it approaches a procedure call in cost. The complaint is always that Linux can't possibly be supporting all the features, such as restartable system calls, if it is that fast. Those claims turn out to be false - Linux supports the same features, including security, as any commercial Unix. It's just designed better. And commercial Unices are starting to pick up the ideas.
  • Linux kernel hacks count instructions and cache misses and eliminate them. This is a biggy. When each "feature" is added into a kernel, people will do gross measurement to show that it made no difference. And each feature doesn't make a measurable difference - one or two more cache misses in a code path won't show up. But do that a 100 times and all the "features" taken together start to hurt. Linux is far ahead of the rest of the world, including NT, in that Linus and the other senior kernel folks do not kid themselves that a cache miss here and there doesn't matter. I frequently see the Linux development effort keep working at it until the feature they are working on can not go faster because it is running at hardware speeds - there is no more room for optimization. Contrast that with the commercial approach of "well, it didn't slow down for me" and you can start to see how things get out of hand. Kudos to Linus, David and Alan for being the smartest coders in this regard. I'd like to be that good.
  • Linux is a redesign. Many ideas have been rethought using current thinking. All other Unix implementations (exceptions are things like QNX - which also performs at Linux like speeds and has also been shown to be posix/xpg4 etc compliant) are basically the same under the covers. It isn't surprising that fresh minds can do better - one would hope that we have learned something in 20 years.

Section 2: Hardware

1. What machines WILL currently run UltraLinux ?

Supported by the 32-bit UltraLinux project (sparc):

  • Sun4c architecture(1):
    • SPARCstation SLC (4/20)
    • SPARCstation ELC (4/25)
    • SPARCstation IPC (4/40)
    • SPARCstation IPX (4/50)
    • SPARCstation/server 1 (4/60)
    • SPARCstation/server 1+ (4/65)
    • SPARCstation/server 2 (4/75)

  • Sun4d architecture:
    • SparcCenter 2000

  • Sun4m architecture:
    • SPARCclassic
    • SPARCstation LC (4/15)
    • SPARCstation LX (4/30)
    • SPARCstation 4
    • SPARCstation/server 5 (70, 85, 110, and 170(2) MHz)
    • SPARCstation/server 10 (with most MBUS processor cards)
    • SPARCstation/server 20 (with most MBUS processor cards)
    • JavaStation 1(3)
    • JavaStation 10(3)
    • JavaStation E(3)
    • JavaEngine 1(3)
(1) There are some kernel related memory management problems with sun4c. This is being worked on.
(2) The 170MHz SPARC 5 (Also known as the TurboSPARC) is only supported in the newer kernel releases. There is not much active development, and UltraLinux on this processor is not very stable.
(3) See the related question further in this section.

  • The following MBUS modules are known to work:
    • SuperSPARC Model 20, 30, 40, 402, 41, 412, 51, 512, 514, 52, 54, 61, 612, 71, 712, 81
    • All HyperSPARC modules
    • Cypress modules
Supported by the 64-bit UltraLinux project (sparc64):

  • Sun4u architecture:
    • UltraSPARC Sbus based workstations: Ultra1, Ultra2, Ultra1 Creator, Ultra2 Creator
    • UltraSPARC Sbus based servers: Netra i, Enterprise 1, 2, 150
    • UltraSPARC Sbus based large servers: Enterprise 3000, 3500, 4000, 4500, 5000, 6000, 6500, 10000
    • UltraSPARC PCI based board computers: SPARCengine CP1400(1,3), CP1500(1)
    • UltraSPARC PCI based workstations: Ultra30, UltraAXe, UltraAXi, UltraAXmp, Ultra5, Ultra10, Ultra60, Ultra80, SunBlade 100, SunBlade 1000
    • UltraSPARC PCI based servers: Netra X1(2), Netra T series(3), Fire V100, Fire V120, Enterprise 250, 450
(1) These boards are known to work without any modifications, see also (3)
(2) Currently completely supported except the embedded network interfaces.
(3) Eric Brower has written a Sun Microsystems CP1400/CP1500/Netra-T1 Platform Support Document.

2. What additional hardware is supported ?

Sun workstations and servers up and untill the Ultra-2 uses internally the SBUS, Ultra-5 and later uses (normal) PCI.

Currently the following SPARC hardware is supported:

  • SCSI:
    • Sun/PTI Qlogic SCSi cards
    • SCSI/Ethernet Sbus expansion cards
    • SCSI CD-ROM drives
    • SCSI Tape drives

  • 3rd party SCSI(1):
    • NCR53c8xx
    • Adaptec SCSI
    • Qlogic/ISP

  • Network cards:
    • ATM Fore SBA-200 (Sbus)
    • Myricom Gigabit Ethernet (Sbus)
    • Onboard SunLance
    • Sun QuadEthernet(2)
    • Sunswift Happy Meal SCSI/Ethernet(3)
    • Several Linux supported PCI based ethernet cards.

  • Framebuffers:
    • MG1/MG2 - bwtwo (monochrome)
    • CG3 - cgthree (8-bit)
    • GX, GX+, TGX and TGX+ - cgsix (8-bit)
    • SX - cgfourteen (8 and 24-bit)
    • TCX - SS4 and SS5 (resp. 8-bit and 24-bit, AFX bus)
    • LEO - ZX/TurboZX (24-bit)
    • FFB/FFB2 - Creator/Creator3D (24-bit)
    • PGX - ATI Rage Pro (8-bit)
    • PGX24 - ATI Mach64 (8 and 24-bit)
    • AFB - Elite3D (accelerated only(4), 24-bit)

    • OEM framebuffers:
      • cgRDI (cgthree, 8-bit)
      • Raptor GFX (8-bit and 24-bit)

  • Storage:
    • All tape drives and changers
    • StorEdge T3(5)

  • Miscellaneous:
    • serial console
    • CS4231 based audio
    • Floppy drive(6)
(1) Booting from these cards requires OBP firmware.
(2) The sun4c platform has problems with these card due to firmware problems.
(3) Only the Ethernet part on combined SCSI/HME PCI cards can be used. Devices are recognized by the OBP, but not by the kernel.
(4) Use the Xsun24 X server with the "-noFFB" option to disable acceleration, or if you have the Solaris driver, see the related question in Section "Running".
(5) See http://open-projects.linuxcare.com/t3 for more driver information.
(6) Booting from floppy might not work on certain sparc64 based machines.

3. What machines do not YET run UltraLinux ?

These machines are not yet supported, either due to lack of time, lack of access to test machines, or simply because they're very new. It is expected that they will be supported in the near future, especially the Sparcbook 3:

  • Solbourne clones
  • Tadpole SPARCbooks
The older SPARCbooks (1,2) have very different hardware and are likely to be difficult to support. The newer 3 and up ones are much more standard. The Tadpole Sparcbook 3 is now supported to the point where it will run X in the vger CVS tree, and soon in 2.3 kernels. A way to run Linux on a TadPole SPARCbook 3GX is described in the SparcBook F.A.Q., by Hugo van der Kooij.

4. What Sun machines will NEVER run UltraLinux ?

The Sun i386 which is based on the Intel 80386, and not on a SPARC chip, can't run UltraLinux nor Linux/Intel.

If you are interested in running something other than SunOS on these machines you should take a look at the NetBSD project which also does support some of them.

5. Can Linux work on a Sun3 ?

The Sun 3 (or for that matter the really old Sun 2 and Sun 1) machines (such as Sun 3/50, Sun 3/60) are based on the Motorola 680x0 processor, as opposed to the SPARC processor.
There is experimental support for Sun3 series of workstations in later Linux/m68k kernels.

There is a port for the Sun 3/50, 3/60, 3/1xx (except 110) and 3/2xx machines, which can be found at The Linux/sun3 homepage
There is a mailing list for Linux/Sun3, which you can subscribe to by sending an email with "subscribe" in the body to: sun3-list-request@redhat.com . Can Linux work with a Sun4 (such as 4/330) ? There are quite a few differences with the Sun4 machines vs. the Sun4cdmu types, such as MMU, ethernet chip, disk controller and graphics cards. In more recent kernels, there is limited support for sun4 (only 4/300 series).

There has been a mailing list set up for people who are interested in the Sun4 port. This list does not seem to exist anymore, but Red Hat does have the intention to restore the mailing list archive in the near future.

6. Where can I find more information on older Sun hardware ?

Gregory Leblanc, James Birdsall and others started a project to resurrect the Sun Hardware Reference, to describe all Sun hardware, old and new. The new Sun Hardware Reference project can be found at http://sun-ref.sunhelp.org.

James Birdsall's original Sun Hardware Reference, which describes Sun hardware up to the year 1995 is also available at http://sun-ref.sunhelp.org.

http://www.obsolyte.com also has practical information about older Sun hardware.

The FAQABOSS, the Frequently Asked Questions About Buying an Old (Used) Sun System is also a must to read if you wish to get an (Ultra)SPARC machine, or if you would like to learn more about which part is compatible with what machine.

7. Where can I find out lots more information about Sun stuff ?

http://www.sunhelp.org has a fairly comprehensive list of resources for Sun related things including a list of FAQ's.

8. Can I use every Weitek POWER uP chip ?

The chips with at least revision code 9518 or later are known to work perfectly, lower revisions do not. This code can be found in the lower right hand corner if you look at the top of the chip. The bottom line reads eg. "Weitek 9518-T", with 9518 being the revision number. A close-up picture of this chip can be found at the Auxio hardware archive, with thanks to Tad Bilby.

9. Can I use ISA/PCI cards from my PC on my (Ultra)SPARC machine ?

This depends on your system. If your system is Sbus based, the answer is no. The same for ISA cards. On PCI based systems however your card can work if there is driver support within Linux. Known to work are PCI SCSI cards, PCI TV cards, PCI video cards, PCI (Fast)EtherNet cards.

10. How can I make my JavaStation/Engine to work ?

You will need a very recent 32-bit Linux kernel compiled on a SPARC machine with several options enabled in order to get the JavaStation/Engine to boot. There several projects about Linux on Sun JavaStation's, for example Linux on the Sun JavaStation NC HOWTO and The unofficial Javastation documentation project.

11. How can I make my Netra X1 / Txx to work ?

The Netra X1 and T series are supported in very recent kernels.
You can install Linux either via the serial port, or from CD-ROM. For the serial ports on the X1, you should use the combined RJ45 console/LOM port (ttya, the upper one). Please note that the cables you use for the serial ports on the X1 do not have to be null-modem cables.
If you would like to install Linux via a network, you should probably use an external interface which you can connect to the USB port.
For more information about Linux on the X1, please see Sparc Netra X1 Linux, a document written by Joseph N. Wilson.
For more information about Linux on the T1, please see Eric Brower's Sun Microsystems CP1400/CP1500/Netra-T1 Platform Support Document.

12. How can I make a Linux X-Terminal from my old SPARCstation ?

You can try the SLXT package for the SPARC, available from http://www.pucebaboon.com/SLXT. The package is still actively being developed, although slowly.

A description and references on how to use a Sun3/50 as a Linux X-Terminal can be found at http://www.bitlink.cx/Library/sunxterm.html.

13. Can I use the ISDN capabilities of my SPARCstation ?

Unfortunately no. Several SPARCstation models, such as the SPARCstation 10, 20, LX and Voyager, use an Sbus based DBRI chip (Dual Basic Rate ISDN), often combined with an audio part either onboard or in a Sun SpeakerBox. The audio part works under Linux, but the ISDN part has not been completed. The are no drivers known for other Sbus based ISDN cards. Probably the best what can be done is to connect an external ISDN terminal adapter to a serial port.

14. Is there support for audio on my SPARC ?

Yes, there is (experimental) support for audio in recent kernels. For a complete list of supported audiodevices you can visit the Linux/SPARC audio subsystem information page.

15. Can I select the internal speaker or line-out for audio ?

You can use the program audioctl for that. Audioctl is a utility for displaying or setting various audio system driver variables on SPARC systems, and can be used to display or change the settings for audio parameters like volume, sampling rate and output device. It ships with most distributions, but the original sourcecode for Linux can be downloaded from ftp://ftp.dementia.org/pub/linux/sparc/audio.

Section 3: Distributions

1. What distributions are available for UltraLinux ?

The following distributions are known at this moment (in alphabetical order):

TurboLinux has included a developer version for SPARC in their WorkStation Pro 6.1 release.

For more information about the available mailing lists for these distributions, please see http://www.ultralinux.org/lists.html.

2. Aurora SPARC Linux

A new initiative to build a distribution based on the recent sources of new Red Hat releases has started in October 2001 under the name of the Aurora SPARC Project, and released version 1.0 (Ansel), based on Red Hat Linux 7.3 in the year 2003. Intentions are to base the next release on Red Hat 9.x

The Aurora SPARC project homepage can be found at http://auroralinux.org See also the mailing lists and list archives at http://lists.linuxpower.org/mailman/listinfo.

3. Debian GNU/Linux

Debian GNU/Linux is the result of a volunteer effort to create a free, high-quality Unix-compatible operating system, complete with a suite of applications.

Debian was created by Ian Murdock in 1993, initially under the sponsorship of the Free Software Foundation's GNU project. Today, Debian's developers think of it as a direct descendent of the GNU project. The Debian SPARC port was included as of version 2.1 (slink).

Unlike for instance Red Hat, Debian does not produce their own CD's, but instead builds ISO images which are distributed to CD vendors like Cheap*Bytes, LinuxMall or
For a list of vendors, visit http://www.debian.org/CD/vendors

What the latest version is of Debian GNU/Linux can be seen at http://www.debian.org/releases. All Debian versions have codenames like Red Hat has, to be able to keep stable versions apart from the unstable. All about the Debian codenames can be found at http://www.debian.org/doc/FAQ/ch-ftparchives.html.

ISO CD images of Debian GNU/Linux can be downloaded from http://cdimage.debian.org.

You can also download Debian via anonymous FTP from ftp.debian.org.

For more information and documentation about Debian for SPARC, see the Debian SPARC Port, or Debian SPARC 64 Port pages.

Debian SPARC Errata contains a list of well-known problems with Debian SPARC, and also includes the status and errata of sparc64.

Debian security updates can be found at http://security.debian.org.

4. Gentoo Linux

Gentoo Linux started making Linux distributions somewhere around the year 1999, and supports the 32-bit and 64-bit SPARC based machines.

You can download their latest bootable ISO images.
For 32-bit SPARC at http://cvs.gentoo.org/~weeve/iso/1.4_rc4/gentoo-sparc-1.4_rc4.iso.bz2
For 64-bt SPARC at http://cvs.gentoo.org/~jmorgan/iso/gentoo-sparc64-1.4_rc4A.iso.bz2.
In addition, Jack Morgan has put some of his configuration files here.
The Gentoo Sparc/Sparc64 Linux Installation Guide can be found here.

5. Linux-Mandrake

Linux-Mandrake is a Linux distribution, being produced and published by MandrakeSoft S.A., located in Paris, France.

You can download bootable ISO images of Linux-Mandrake Corporate Server for SPARC and UltraSPARC via anonymous FTP. A list of FTP servers can be found at http://www.linux-mandrake.com/en/ftp.php3.

6. PLD GNU/Linux

PLD Linux is a distribution mainly made in Poland, and are currently preparing to release their first distribution, which contains a version for SPARC.
The distribution can be downloaded from ftp://ftp.pld.org.pl/PLD-1.0/sparc. ISO 9660 cd images are not present at this time.

7. Red Hat Linux

Red Hat, Inc. has been releasing versions of it's distribution for SPARC since 1996 and was the first company to have a SPARC version. The latest version of Red Hat Linux for SPARC was 6.2 (Zoot).

Red Hat has so far released the following versions for SPARC:

  • Red Hat 3.0.4 (beta for 4.0) (Rembrandt)
  • Red Hat 4.0 (Colgate)
  • Red Hat 4.1 (Vanderbilt)
  • Red Hat 4.2 (Biltmore)
  • Red Hat 5.1 (Manhattan)
  • Red Hat 5.2 (Apollo)
  • Red Hat 6.1 (Cartman)
  • Red Hat 6.2 (Zoot)
As you can see, there is a sort of "tradition" in not releasing x.0 versions for SPARC. However, Red Hat will not release new "official" versions for SPARC. Their "Raw Hide", the development version of Red Hat Linux, is available for SPARC, but hasn't been updated recently.

You can download the older 6.2 version via anonymous FTP from ftp://ftp.redhat.com/pub/redhat/redhat-6.2/sparc/, and as ISO CD image (English only) at ftp://ftp.redhat.com/pub/redhat/redhat-6.2-en/iso/sparc
A list of mirror sites can be found at http://www.redhat.com/mirror.html.
Raw Hide can be downloaded from for instance Rpmfind.Net.

Various errata and fixes for the Red Hat Linux distribution are listed at http://www.redhat.com/support/errata

8. Splack Linux

Slackware Linux, started by Patrick Volkerding, was one of the first Linux distributions available, since April of 1993.

An experimental version for the SPARC processor was put on the Slackware FTP server in December 2000, but Slackware has not officialy released any distribution for the SPARC.
Splack is a volunteer effort set up to continue work on the now defunct Slackware Sparc port, and claims to be 100% Slackware compliant.
More information about Splack can be found at http://www.splack.org.

9. SuSE Linux

SuSE Linux AG is a European company that exists since 1992, and has released the SPARC version of their distribution since SuSE Linux 7.0.
The latest version is 7.3, and will probably be the last since SuSE dropped support for Sun hardware.

Five ISO-images containing the US-version of SuSE Linux for SPARC can be downloaded via anonymous FTP from ftp://ftp.suse.com/pub/suse/sparc.

10. UltraPenguin

This is the original port to the sparc64 machines, based on the 32-bit Red Hat Linux distribution. David Miller and Jakub Jelinek annouced April 27th, 1999, that they had stopped general maintenance of UltraPenguin. One of the reasons for this was that as most of the differences between the Red Hat 5. distribution and UltraPenguin 1.1.9 had been merged into Red Hat 6.0, it was just duplicated work for them.

Several mirrors still have a copy of the UltraPenguin distributions available, for instance at rpmfind.net.
If you want to learn more about Linux on UltraSPARC machines, there is a mailing list. Send a message to Majordomo@vger.kernel.org
The message doesn't need a subject just a line like: subscribe ultralinux your_email@your.domain

Section 4: Building

1. What operating systems can I use to build a kernel ?

Except Linux itself, the only guaranteed environment is SunOS 4.1.x where x>3. It is possible to build it under Solaris using the same tools, and Pete Zaitcev's (zaitcev@metabyte.com) elf2aout program to convert the kernel at the end.

2. What tools do I need to compile an UltraLinux kernel from SunOS ?

You will need the following tools in order to compile the kernel. Make sure they are in your path ahead of the SunOS versions.

  • GNU binutils
  • GCC 2.6.3 (later versions will most likely work, but 2.6.3 definitely does work)
  • GNU bash (having it in /bin is the easiest)
  • GNU make
You can find these tools for Sun Solaris 2.3 and up at http://www.ibiblio.org/pub/solaris/sparc

Please note that for the newer kernels you will need GCC version 2.7.x, or EGCS 1.0.3 and up. See also the GCC Home Page.

3. What tools do I need to compile a new kernel on an UltraSPARC ?

In order to produce a 64-bit kernel for an UltraSPARC based machine (sparc64), you will need an appropriate compiler and libraries. In this case that's egcs64, the Experimental GNU Compiler System for sparc64. If you are not using any distribution, the best thing to do next to build it from the sources (see the GCC homepage) is extract the 64-bit EGCS or GCC for sparc64from one.

As Jakub states, the 64-bit support in gcc is complicated:

egcs64 (which is a snapshot of egcs 1.0.x CVS) supports 64-bit -mno-fpu only
	(= kernel)
gcc 2.95.x doesn't support sparc 64-bit
gcc 2.96-RH should support both 64-bit kernel (-mno-fpu) and userland (ie.
	floating point too. There is one known miscompilation of kernel
	currently though, see earlier mail on this list about a fix. The
	fix is not packaged yet).
gcc 3.0.x is untested for sparc 64-bit, but basically could do -mno-fpu
	(kernel), provided it is tested and possible bugs are fixed
gcc 3.1 (ie. current CVS) should support sparc 64-bit, both kernel and
	userland, but any testing helps obviously

4. Why does the program "make" complain about a non-existent sparc64-linux-gcc ?

You will need egcs64 or GCC 3.x. Please see the question above.

5. Can a just grab the latest Linux source tree and compile it ?

As of kernel version 2.2.5 UltraLinux (sparc and sparc64) is completely supported, allthough there are issues for older SPARC hardware with the newer 2.4.x kernels. If you need earlier kernel versions you can get some precompiled versions from ftp://ftp.auxio.org/pub/vger/Sparc/kernel/v2.0

6. Where can I find the most recent kernel anyway ?

The most recent kernelversions are being kept at BitKeeper. You will need the Bitkeeper software to obtain the most recent kernel, which can be found at http://www.bitkeeper.com. The BK Linux FAQ provides good information on BK usage, how to work with it, and how you can get to the Linux kernel sources.
An other option is, since the SPARC development tree is synchronised with the Linus tree, to download the latest version from http://www.kernel.org or one of it's mirrors. You can find all versions of the linux kernel there, including development versions.

7. When I configure the kernel what options should I choose ?

The default configuration has already been set to provide maximal compatibility for all sparc and sparc64 machines. The default options are stored in arch/sparc[64]/defconfig.

8. How do I compile the kernel for UltraLinux ?

Compile the kernel in the normal way (Follow the instructions in /usr/src/linux/README), but at the end, instead of make zImage or make zlilo, you should do

   # make vmlinux
   # make modules
   # make modules_install

9. What should I do after a new kernel has been compiled ?

A few simple steps after the compiling of the kernel, the modules, and the installation of the modules:

  1. Copy linux/System.map to your bootfile directory (eg. /boot), and rename this file to System.map-<kernel-version>.
  2. Copy linux/vmlinux to your bootfile directory, and rename this file to vmlinux-<kernel-version>.
  3. Edit /etc/silo.conf, and add your new kernel to this file.
  4. Reboot your machine.
Ofcourse there are various ways of doing this, but this way works best for me. See also the questions about SILO in the section Booting of this FAQ.

10. Do I need to compress the kernel ?

There are no size limitations on the SPARC architecture so you don't need to compress (gzip or bzip2) the kernel. It will save you some space at the cost of a slightly longer bootup. The slower SPARC machines do not really like the compressed images (zImage, bzImage).

This is partially true, as there is a size limit: it is about 2.6MB
In case vmlinux is already smaller than 2.6MB, it only saves some meager KB on your disk, at the expense of a longer startup-time, quite some for slower systems.
If SILO detects a compressed file, it wil infloat it. This is also the reason it is useless to compress it if the kernel is too big.
The alternatives are:

  1. Use (more) modules instead of built-in if possible.
  2. strip(1) the kernel image.

11. What do I need to put in the root directory ?

(This is still a bit sketchy...)

In the directory that you exported the kernel from, you need to create the directories: etc/ lib/ bin/ tmp/ dev/ sbin/ proc/ usr/ var/
You will need to create all the devices in dev/. The MAKEDEV script will do this (although it seems to want to be run on a Linux machine which might create a chicken and egg problem.

Then, check out the UltraLinux archives in: ftp://ftp.auxio.org/pub/vger/Sparc and grab anything that looks interesting to you. Unpack these from the root or your exported directory (they should fill up your usr/ sbin/ and etc/ directories.

12. What is this RPM stuff people keep talking about ?

RPM is a software packaging tool, originally pushed by the Red Hat GNU/Linux people. It can be used to build and install software packages. See http://www.rpm.org, or the RPM Documentation Project at http://www.rpmdp.org.

If you need to get a statically linked RPM binary (so you can unpack the latest version of RPM which itself is an RPM file) you can find it at ftp://ftp.rpm.org/pub/rpm/dist

13. How do I set up init ?

The best thing to do is grab SysVinit, for example from http://www.ibiblio.org/pub/Linux/system/daemons/init

Commands such as shutdown and halt can be found at ftp://ftp.kernel.org/pub/linux/utils/util-linux. They used to be part of the SysVinit package.

14. What do I need to get networking running ?

This is what I do once I have logged in to the UltraLinux machine as root:
Notes: is the IP address of the UltraLinux machine named dodo is our gateway to the internet

o Add the loopback interface:

   # ifconfig lo
o Add a route to it
   # route add -net
o Add the ethernet interface and address:
   # ifconfig eth0 broadcast netmask
o Add a route to it
   # route add -net netmask
o Add a route to the outside world
   # route add default gw metric 1
o Give my machine a name
   # hostname dodo

15. How do I get YP (NIS) working ?

If you are running a recent distribution then NIS support is compiled into the libc library. To enable it:

  • Set the domainname for your NIS domain:
    # domainname physics.ucla
  • Edit /etc/yp.conf with the line:
  • Edit /etc/nsswitch.conf to make sure that the correct services will query NIS (ie passwd, hosts, groups) E.g.:
    passwd:     files nis
    group: files nis

NOTE: Always use yppasswd instead of passwd when changing your passwd or else a little feature will happen... your local passwd file will be appended with the NIS passwd...

16. What do I need to do to get X11r6 running ?

You need the following:

  • An X11r6 'tree' mounted under /usr/local. I use the tree from SunOS and mount it like:
       # mount -t nfs /usr/local
  • Create the devices that X11 needs:
       # mknod /dev/kbd c 11 0
       # mknod /dev/sunmouse c 10 6
       # mknod /dev/fb0 c 29 0
  • Create a symbolic link from /dev/sunmouse to /dev/mouse.
  • Create links from your graphics card (you only need the relevant one, but having all doesn't hurt.
       # ln -s /dev/fb0 /dev/cgsix0
       # ln -s /dev/fb0 /dev/bwtwo0
       # ln -s /dev/fb0 /dev/cgthree0
  • Start the X server (-ac turns off access control)
       $ Xsun -ac

Section 5: Booting

1. What is a boot prompt, and how can I get to it ?

Sun *SPARC based machines have a OpenBoot PROM which takes control of the computer when you turn it on. This is sort of similar to the BIOS in a PC computer, except that the Sun boot PROMs have a built in Forth interpreter which lets you do quite a number of things with the computer without/before booting an operating system, such as listening to the network, looking at the scsi bus, testing memory, setting the default boot device and setting other parameters.

In order to get to the OpenBoot PROM command line (we'll call it the boot prompt (ok) from here), you need to hold down the Stop key (or L1 key on older type 4 keyboards) and simultaneously press the A key. This will bring you to the prompt (usually ok but see the next question). If there is an operating system running on the system, will this be suspended if you use this key combination. To resume where you were type go .

Normally you would hold Stop-A while the machine is checking it's memory before boot time, or by typing halt from the SILO boot prompt if SILO is already installed.
If you want to see or change a number of settings, you can also use the program eeprom from a running system. It is included with Solaris and most major UltraLinux distributions. Jakub Jelinek has made the Linux version, included in his prtconf package. This package can be obtained from distribution sources, or alternatively from ftp://ftp.auxio.org/pub/linux/SOURCES.

2. Why can't I see "ok" at the boot prompt ?

Older Sun machines default to the > prompt. You can change this to the new command mode by typing the letter n, which will give the ok prompt. If you want to make this permanent type:

   ok setenv sunmon-compat? false

3. How can I see all the PROM parameters ?

From the ok prompt, type printenv, or use eeprom from a shell.

4. What other commands are available at the boot prompt ?

The OpenBoot Command reference at docs.sun.com provides detailed information. Here's a small list of handy commands:

   help           Display command line help
   banner         Display power-on banner
   module-info    Display CPU speed (OpenBoot 2.x)
   .speed         Display CPU and bus speeds (OpenBoot 3.x)
   .version       Display version of the Boot PROM
   .enet-addr     Display ethernet address
   watch-net      Monitor network connection
   test-net       Test the onboard network interface
   devalias       Display all current device aliases
   probe-scsi     Identify the devices attached to the onboard SCSI bus
   probe-scsi-all Identify the devices attached to all SCSI busses
   show-disks     Display device paths of installed SCSI disks
   show-displays  Display device paths of installed display devices
   show-sbus      Display a list of probed SBus devices
Examples for commands such as boot and setenv can be found throughout this FAQ.

5. How can I boot directly from the floppy/CD-ROM/Tape Drive ?

At the boot prompt (ok) you can type the command boot, followed by the device that you want to boot from. Examples:

   ok boot floppy    Boot from the floppy disk
   ok boot fd(0,0,0) Boot from the floppy disk
   ok boot cdrom     Boot from the CD-ROM
   ok boot sd(0,6,2) Boot from the CD-ROM
   ok boot tape      Boot from the tape device
   ok boot sd(0,4,0) Boot from the tape device
   ok boot disk      Boot from the hard drive
   ok boot disk2     Boot from the hard drive with SCSI ID: 2
   ok boot sd(0,2,0) Boot from the hard drive with SCSI ID: 2
   ok boot sd(0,1,3) Boot from the 4th partition of SCSI ID: 1
Some older proms do not understand some of the "short" device aliases (i.e. cdrom), and you will need to use the longer explicit form.

6. How can I eject my floppy disk or CD ?

Besides running the command eject floppy, or eject cdrom from a shell, you can also run this from the boot prompt (ok).

7. How can I set it to automatically boot from a different device ?

With older PROM versions you can change the boot device by altering the boot-from parameter from the boot (ok) prompt:

   ok setenv boot-from disk2     to boot from SCSI ID: 2 by default
   ok setenv boot-from sd(0,2,0) to boot from SCSI ID: 2 by default
   ok setenv boot-from disk3:a   to boot from SCSI ID: 3 partition 0 or a
Set the boot-device parameter on newer systems, for example:
   ok setenv boot-device disk2 cdrom net
to let the system boot from the second disk, if that fails the CDROM, then the network device, and so on. You can also see and modify these parameters from a running system by using the eeprom command. See also the question "What is a boot prompt, and how can I get to it ?".

8. How can I unset a PROM parameter ?

Use set-default followed by the variable name:

At the boot prompt (ok) you can type for example:

   ok set-default boot-file
With the command printenv you can also see what all the default settings are for what parameter.

9. How can I install UltraLinux software from the network ?

The basic idea is this:

  • Add an entry for the new machine to the ARP/RARP cache.
  • Set up a TFTP server where the bootimage can be transferred from.
  • Set up a file server where you can install the software from (NFS, FTP etc).
  • Boot the machine and install the software.
Most distributions allow the client to boot via either an NFS mounted root, or a network-loaded ramdisk where the root filesystem is being loaded in memory. Be sure that server and client are allowed access to the services that are needed when your system is using tcp-wrappers. See also the manual page for hosts_access(5).

10. How do I set up RARP so I can boot my Sun via the network ?

This will depend on what type of machine you want to set up as a RARP server. First of all you will need to obtain the hardware ethernet address, which you can find on your screen when your start the machine. An example:

   SPARCSTATION 5, No Keyboard
   ROM Rev. 2.15 Pilot, 64 MB memory installed, Serial #1234567.
   Ethernet address 8:0:20:1f:cd:8e, Host ID: 12345a9b.
So we now know that 8:0:20:1f:cd:8e is our hardware ethernet address.

Under Solaris and newer 2.4 Linux kernels, you will need to make sure that the hardware ethernet address for the UltraLinux machine is in the ethers ethers database (either /etc/ethers or via NIS/NIS+), and that it is listed in the hosts database. If so, simply start the RARP daemon:

   # /usr/sbin/in.rarpd -a
   # /usr/sbin/rarpd
If you want to use a machine running older Linux versions (< 2.2.3), without a RARP daemon, you will need to populate the kernel's RARP table.

You might need to use the `arp` command in addition to the `rarp` command. Linux used to use a single rarp/arp cache in which case you used the `arp` command, but it uses separate commands so just a `rarp` should be sufficient.

   # /sbin/rarp -s  phoenix   08:00:20:1f:cd:8e
   # /sbin/arp -s 08:00:20:1f:cd:8e
You might also need to use the hardware address with or without the padded 0's. For example if the hardware address is: 8:0:20:1a:15:9e you might also want to try 08:00:20:1a:15:9e Also ensure yourself that the machine is listed in the /etc/hosts file.

11. ARP/RARP do not seem to be working on my boot server?

If you have no support for RARP in your 2.2.x Linux kernel, you will either have to compile it in, or build it as a loadable kernel module which is called rarp.o. If you use a Linux distribution on your server, you can try

   # modprobe rarp
The RARP kernel-module is included with most distributions by default.

On 2.4.x kernels you will need the RARP daemon (rarpd).

12. My ethernet address is shown as "ff:ff:ff:ff.." and my machine can't boot from the network.

You probably have a hardware problem and will need to replace the NVRAM.
For more information visit Mark Henderson's SUN NVRAM/hostid FAQ.

13. I have a dead/corrupted/password protected NVRAM chip.

Please see the previous question.

14. How do I set up a tftp server to boot from ?

Under SunOS/Solaris you need to uncomment the line in your /etc/inetd.conf file that refers to tftpboot. It should look like

tftp dgram udp wait root /usr/sbin/in.tftpd in.tftpd -s /tftpboot
If necessary, restart the inetd process. You can change /tftpboot to a directory where you want to put the UltraLinux bootimage.

Under Linux, tftp does not need the "-s" options. The line in /etc/inetd.conf should look something like this:

tftp   dgram   udp     wait    root    /usr/sbin/tcpd  in.tftpd
After this, you will probably have to create a directory /tftpboot on your server, where you can place the boot image and a required symbolic link. (See the next question)

Please note that if you use rarpd under Linux that this server also will try to provide a boot image from the /tftpboot directory. See also the manual page for rarpd(1).

15. What boot image will the client ask from the network ?

When the client tries to boot from the network, it will ask for a file with a special name that the boot image should have. The file name is determined by the IP address of the client, and by it's architecture on non-sun4u based systems.

This is normally done by placing the appropriate boot image in the directory /tftpboot on the server, and then create a symbolic link with the special file name that points to the boot image.

To find the name for the link you will have to convert the four numbers between the dots of the decimal IP-address into hexadecimal. You should then put the hexadecimal figures together.

Besides calculating the numbers by hand or using a battery feeded calculator, you have several ways of converting the IP address: addr, which is included in the Bind (the name server) package, the program bc, the converter from the package ghex, and of course from the OpenBoot PROM of your machine.
An example of converting the IP address

   172 = AC
    28 = 1C
   230 = E6
   104 = 68
With the addr utility:
   $ addr -p
   Input: ""
   Network: [af2 len4] ac 1c e6 68
   Presentation: ""
From the OpenBoot PROM:
   ok d# 172 .
   ok d# 28 .
   ok d# 230 .
   ok d# 104 .
When put together, this will result into AC1CE668, what will become the name of the symbolic link. If the architecture of the client is not sun4u (UltraSPARC), you will have to add the systems' architecture name to the symbolic link, where our example would become AC1CE668.SUN4M for a SPARCstation 5 (sun4m).

Finally, you will have to decide what file to point the symbolic link to. Most distributions support two ways of booting from the network:

  • Booting a kernel with an NFS-mounted root filesystem.
  • Booting from a network-loaded ramdisk (mostly called tftpboot.img).
Bootimages can be found in respectively images for Red Hat and Mandrake, and dists/<release>/main/disks-sparc/sun4xx for Debian.

Distribution sun4cdm sun4dm-pci sun4u
Red Hat images/tftp32.img images/tftp32.img images/tftp64.img
Mandrake images/tftprd32.img images/tftprd32.img images/tftprd64.img
Debian sun4cdm/tftpboot.img sun4dm-pci/tftpboot.img sun4u/tftpboot.img

Copy the appropriate bootfile for the clients' architecture to /tftpboot on the server, and create the symbolic link. For the example client above, the following would be needed on the server for a Red Hat system:

   # cp /mnt/cdrom/images/tftp32.img /tftpboot
   # cd /tftpboot
   # ln -s tftpboot.img AC1CE668.SUN4M
You will also need to ensure that the directory with the Linux installation software or filesystem tree is being exported via NFS and that your UltraLinux machine will be able to mount it.

16. Is there an easy way to set up the network boot image structure ?

Yes, you can use the tftptool utility, written in Python, that comes with the Red Hat distribution. It will ask you for information about your client, and then installs the appropriate image and creates a symbolic link with the special name for your client. The tftptool is located in the utils directory of the Red Hat distribution as of version 6.1. You can also download this tool via one of the many Red Hat mirrors.

17. Running a tftp boot server doesn't seem to work ?

First go to /tmp on your TFTP server, and try to get the bootimage via localhost:

   $ tftp localhost
   tftp> get AC1CE668.SUN4M
   Received 1905590 bytes in 8.3 seconds
If this works, you might want to check for obvious reasons why it does not work, such as a firewall, wrong or bad cabling etc..

Older tftp daemons for Linux only accepted requests for absolute filenames (i.e. it had to start with a '/') which isn't what the Sun requests. If the method above does not work, please upgrade your tftp server software to a more recent version.

18. By using what commands can I boot UltraLinux from the network ?

From the boot prompt (ok), type the following for an NFS mounted root:

   ok boot net linux nfsroot=nfs.server.ip.address:/exported/path
and the following for the network-loaded ramdisk:
   ok boot net
Where nfs.server.ip.address is the IP address of the machine that is providing the RARP and tftpboot services, and exporting the directory /exported/path (or whatever you called it). When no arguments for the exported path are given, the Linux kernel will expect the NFS root path to be /tftpboot/<client.ip.address>/.

19. My Sun doesn't seem to understand the 'boot net' command.

Older Sun's default to the 'old command mode' when you are in the boot prom. If you get the prompt > instead of ok then type n to get the new prompt.

20. Booting over the network responds: "receive failed: The file just loaded does not appear to be executable".

Upon booting, Sun machines look for a file with the name which is the hexadecimal representation of their IP address, followed by the machine architecture if . So if your IP address is then it will try to load the file called 89523304.SUN4M (see the question above for information on what file the client asks for on the network.) If you are unsure what it is trying to load try looking at wat is happening on the network. Please see "Booting over the network still doesn't work".

21. Booting over the network responds: "is not executable", or: "not in correct format!".

Nowadays, if you have compiled the kernel sources under Solaris or Linux, the newly built kernel will be in the ELF (Executable and Linking Format) binary format. The PROM however will only boot the image served from the network if the image is in a.out (Assembler Output) binary format, which is the original executable format for UNIX.

To convert the format from ELF into a.out you can use the program elftoaout. Besides with several distributions, you can find the elftoaout utility at ftp://ultra.linux.cz/OS/Linux/Sparc/local/elftoaout or ftp://ftp.auxio.org/pub/vger/Sparc/tools If you are unsure of what type of file you have, use the command file on the kernel image.

Be certain that if the kernel is compressed (vmlinuz name) you uncompress it first before using the elftoaout program. It might be necessary to add a .gz suffix to the filename. Again, be sure what type of file you have by using the file command.

Another thing to try: (this is untested, and may not even be relevant any more!)

If you build an UltraLinux kernel on a SunOS system then you will find that a SLC will refuse to net-boot it directly. It will say "not executable" or something like that.

Just change the 4th byte of the file to a control-g (ascii 7) to fix it. You can use emacs and ^Q^G to insert the control-g

22. Booting over the network still doesn't work...

The easiest way to debug network problems is to look at what is happening on the network. There is a program snoop that will display traffic on the network. Something like: (as root)

   # snoop dragon
where dragon is your UltraLinux machine. If you have a machine running Solaris this command is part of the operating system.
There is also a program called tcpdump that could prove useful. It is available via ftp.ee.lbl.gov, and is also included in many distributions.

23. How can I connect a machine for an installation via a serial cable ?

Essentially, if there is no keyboard plugged in when the Sun has booted, it will use the serial interface (port A), By default it is set to 9600bps 8,n,1 You can force the serial console from the boot (ok) prompt:

   ok setenv input-device ttya
   ok setenv output-device ttya
On the other (PC?) side running any terminal emulator will work (kermit, minicom, seyon).

This will require a serial null-modem cable. A good explanation and examples of null-modem cables can be found at Lammert Bies' Interfacing pages. A cable with "handshaking" is recommended.

Sun specific serial port pinouts and cabling information can be found at Stokely's Unix Serial Port Resources.

24. Why does the system respond "Inconsistent console" when using a serial console ?

You might want to check the null-modem cable from the console to the machine. See also the question above.

25. When using a serial console, the installation stops after booting from the network ?

Try the argument "serial":

   ok boot net linux serial nfsroot=nfs.server.ip.address:/exported/path
for an NFS-mounted root filesystem, or:
   ok boot net serial
if you are booting from a network-loaded ramdisk (eg. tftpboot.img).

26. Why can't my sparc64 boot from floppy ?

Due to a bug in the firmware of some Ultra based machines, booting from the floppy drive does not work yet. In this case, you should boot from either the CD-rom drive, of from the network.

27. Why can't my Ultra5/10 boot when I have more than 512 MB of memory installed ?

Linux does not support more than 512 MB of memory in the 2.2.x kernels on Ultra5 and 10 machines. If you have more than 512 MB of physical memory installed, you really should use a 2.4.x kernel (or remove memory boards).

28. Why does the system respond "Wrong label" when I reboot it after installation ?

The system needs a Sun disklabel to find it's partition information. This information is stored in the first block of the drive. If your bootdrive doesn't contain such a disklabel, you will have to create it using fdisk. Within fdisk, you have the command s, which can be used to build a new Sun disklabel for your drive.

29. Why does the system respond "Could not find /vmlinux.." when I reboot it after installation ?

Older machines can only boot properly when the boot image and configuration file are located within the first GB, and sometimes within the first 2 GB of it's boot disk. If you want to use a large disk (>2GB) it is generally a good idea to create a separate /boot partition under the 1GB border where the boot images and configuration files can be placed. /etc/silo.conf should also be located under the this border, so either create the root directory under the 1 GB border, or put silo.conf in the /boot directory, and create a symbolic link from /boot/silo.conf to /etc/silo.conf. This does not apply to sparc64, since they can read far beyond this limit.

30. Fdisk dies with a segfault during partitioning.

You need to zero the first 5k of the disk (e.g. with dd), if the disk doesn't contain a Sun disklabel. fdisk could not recover from random bits in the disklabel area, but if there were a load of zeros it would get it and create a label. Newer versions of fdisk will complain about the lack of a Sun disklabel, and will create a disklabel for you.

31. Why does the system respond "Bad Magic Number in Disk Label" after replacing a (boot) HDD ?

You will have to run fdisk under Linux or format under SunOS first. This will write out a magic number as part of the partition table.
Use one of the methods to boot as described above to be able to run fdisk or format.

32. The PROM refuses to recognize my disk.

Possible solution (given in the Sun hardware reference) is to disable "synchronous negotiation initiation" from the disk (by closing a jumper). Apparently the PROM gets confused if the disk initiates the negotiation.

33. The kernel is panicking, or refuses to boot.

Make sure that you have don't have IPX packets enabled in the kernel configuration.

Disable 802/IPX protocols from your kernel, if you have those enabled. This would mean taking away the loadable kernel module from /lib/modules or building a new kernel if they are compiled in.

34. Why does the system respond "the file just loaded doesn't appear to be executable" after installing SILO ?

The SPARC machines do not really have the concept of a Master Boot Record like on a PC. You can boot from any sector of the disk with a SPARC. When you install SILO on /dev/sda (block 0), you must request the PROM to boot from a partition that starts at 0. The default installation FAQs advises users to create /dev/sda1 starting from block 1. Therefore the partition on boot line must be the partition that spans the whole disk (i.e. from block 0) and not /dev/sda1. If your "whole disk" partition is /dev/sda3 you can boot with "boot /sbus/esp/sd@3,0:c" (assuming target 3 for sda) on v2 PROMs. I believe it would be "boot sd(0,0,2)" on v0 proms.

35. Do I need to run silo every time I change my silo.conf ?

No. SILO understands ext2 filesystems and can therefore read the file silo.conf itself during startup to find out where the kernel you want to boot is. This is different than LILO which does not know how to read filesystems and must hardcode physical disk offsets into the map loader. That is why LILO must always be reinstalled when lilo.conf changes.

36. SILO doesn't time out before booting the kernel.

When you need to press enter, or enter a kernel-label each time to get the machine to boot, you can try the following at the boot prompt (ok):

   ok setenv boot-file linux
   ok setenv auto-boot? true
This will set the default bootimage to be "linux".

37. I've changed silo.conf, rebooted, and the system now responds: "boot: ..wrong syntax..".

These are messages from SILO to say that you've done something wrong in silo.conf. SILO mostly tells you what to do in such a case.
If you're not succeeding, you can still boot from disk with the following command at the boot prompt (ok):

   ok boot disk /boot/kernel_name
or one of the other boot-methods described above.

38. I'm still having lots of problems with SILO.

Best advice is to get the latest version of SILO and try that.
You can get it from http://www.sparc-boot.org or from . http://www.nl.ultralinux.org/silo.

39. Why does my machine only boot properly when I hard-boot it ?

Older PROMS do not reset the machine on soft boots. You can also type reset at the boot prompt (ok) instead of turning off the machine.

You might also want to do the following command at the boot (ok) prompt:

   ok setenv sunmon-compat? false
This will cause old proms to come up in the new command mode, and will allow the kernel to call the "reset" command properly for automatic reboots.

40. How can I boot from a mirrored RAID disk?

Make sure that the boot partition has been duplicated on both disks, and that SILO has been installed on both "whole disk" partitions (/dev/sdn3).

On some systems RAID autodetection does not work properly when using a software RAID. In that case, append lines for your setup to /etc/silo.conf like the following example:

More information about setting up software RAID devices can be found at RAID and Data Protection Solutions for Linux.
Section 6: Running

1. Is there an emergency boot disk anywhere ?

Karel van Houten (K.H.C.vanHouten@psi.research.kpn.com) has created a root/boot floppy disk set for sparc32 a while ago, which can be used as a rescue system when your real root disk is unbootable, a tryout system to see how UltraLinux works on your hardware, or (with lots of manual operation) to install a basic system on your hard disk.


  • Disk repair tools
  • FS restore tools, including rpm
  • Networking commands to restore lost files over the network
  • Uses multiple VT's
  • Automatically detects serial consoles

It is available at: ftp://ftp.auxio.org/pub/vger/Sparc/rescue

Booting a rescue image for sparc64 can only be done from a local cdrom, or from the network. See "Why can't I boot from floppy on my sparc64" in the section above.

2. Why can't I compile certain software on my sparc64 ?

Certain code in your software believes that you are working on a 64-bit system, and will attempt to build 64-bit userland binaries. Upon linking it turns out that you have a 32-bit userland, and it fails. SSH for one is known to do this. An example:

    checking whether the C compiler (gcc -O2 -m64 -mcpu=ultrasparc ) works... no
    configure: error: installation or configuration problem: C compiler cannot create executables.
To 'fool' the software, you can use sparc32 to create a sparc32 environment:
   $ uname -m
   $ sparc32 /bin/bash
   $ uname -m
You can put sparc32 in front of your command line:
   $ sparc32 rpm -ba somepkg.spec
The sparc32 program can be obtained by installing the sparc32 RPM from the Red Hat distribution. Alternatively you can download the source code at ftp://ftp.auxio.org/pub/linux/SOURCES.

3. How can I create a bootable CD ?

There are a few ways to create a bootable CD for SPARC.

The old way was to use mkisofs together with SILO (Sparc Improved Boot Loader). That is, if the version of SILO was lower than 0.8.7. This worked by making an ISO image with the help of mkisofs, and then mount that ISO file via a loopback device. After that, SILO was run on the ISO filesystem in order to make the image bootable.

SILO 0.8.7 and up do not longer support creating bootable CDs, and instead you only need to use a patched version of mkisofs.
Matt Housh wrote a tutorial on How To Create a Bootable Red Hat Linux 6.1 CD For a SPARC. There is also a CDROM.HOWTO included with the SILO package which explains in detail how to create bootable CDs for SPARC. SILO can be obtained via http://www.sparc-boot.org.

4. How do I find out kernel state information ?

The following key combinations are active while UltraLinux is running:

Control-ScrollLock - A listing of the current processes.
RightShift-ScrollLock - Memory Management information.
RightAltGraph-ScrollLock - SPARC Register Dump.

5. How do I set up SunOS/Solaris emulation ?

If the SunOS binary needs any shared libraries or other files they need to placed under the following directories:


NOTE: Do not just mount your SunOS or Solaris root directory at the above directories. The system will then find the wrong /dev directory and you will have problems. UltraLinux uses different major/minor numbers than SunOS and Solaris.

For emulation purposes the system will consider these the root directory. So it will look for SunOS shared libraries in /usr/gnemul/sunos/usr/lib, and Solaris /etc files will go in /usr/gnemul/solaris/etc

Do not ever put a Solaris or SunOS shared lib or configuration files in /etc or /usr/lib, use the places we have provided for it.

For SunOS/Solaris emulation you will need (at a minimum):

  • /usr/gnemul/<sunos or solaris>/
    • etc/ld.so.cache
    • usr/lib/ld.so
    • usr/lib/libdl.so.*
    • usr/lib/libc*so*
    • any other libraries the binary dynamically links with (use the "ldd" command to check)
For Solaris emulation on non-sparc64, you will also need the iBCS package.

On sparc64 machines you can select CONFIG_SOLARIS_EMUL when configuring the kernel, which by default produces a loadable module called solaris.o. You will still need to set the directory structure up as described above, because the module expects this. The IBCS package is not needed when you use this kernel module.

6. Why do I get: "crt0: no /dev/zero" when running a SunOS program ?

See the question above about setting up SunOS emulation. You do not want to mount the SunOS root directory in /usr/gnenul/sunos. If you'll do this, the system will find the SunOS /dev directory which will not work.

7. Running a SunOS executable gives: "ld.so not found"

If the SunOS binary is dynamically linked then you will need the SunOS shared libraries. Copy from SunOS /usr/lib/ld.so, /usr/lib/lib*.so.* and /etc/ld.so.cache onto your UltraLinux /usr/gnemul/sunos/usr/lib and /usr/gnemul/sunos/etc directories.

8. How can I mount my Sun UFS partition read/write ?

This is possible as of the 2.2.x series of Linux kernels. First of all you will need CONFIG_UFS_FS and CONFIG_UFS_FS_WRITE enabled in your Linux kernel. CONFIG_UFS_FS can also be compiled as a loadable kernel module. If you want to mount an UFS partition, your will need to specify the ufstype, in our case sun:

   # mount -t ufs -o ufstype=sun /dev/sdn8 /mnt
This will mount the under SunOS created partition with the "usr" label of your nth disk to /mnt.
Please read Documentation/filesystems/ufs.txt for further reference, and note that UFS write support is being considered as experimental.

9. Is it possible to run Netscape ?

Yes, the SunOS version of Netscape will run if you set up the correct SunOS emulation files (see the question above). You will probably also need the SunOS version that supports DNS.
As of Netscape 4, there is a native Linux/SPARC version available. These versions are not available anymore via Netscape's ftp sites, but can be obtained as *.rpm files from Red Hat, or via Debian's source packages.
There is always the possibility of using Mozilla, Galeon, the GNOME Web browser based on Gecko (the Mozilla rendering engine), or the commercial Opera.

10. Why won't my older program run under newer distributions ?

Red Hat 5.x and 6.0 and later Debian distributions are libc6 (a.k.a. GNU Libc 2 or glibc2) based. This is a new version of the standard C library which is incompatible with the libc5 that for instance Red Hat 4.2 was based on. You will need to recompile your program, or get an updated package.

11. The serial ports don't seem to work well.

Most Sun machines (with the exception of the newer Ultra machines) do not have a very good serial controller chip. The maximum DTE rate is 38400 bps. On older machines (SPARC 1 or less) this is even difficult to maintain.

There is a hack to get the serial ports to do 76.8kb/s but this is a very non-standard rate.

There should be no problems with the UltraSPARC models, as the internal serial controller is capable of speeds well over 460kb/s.

12. Setserial reports "unknown UART", or "Cannot get serial info: Invalid argument".

There is no reason to use setserial on SPARC machines. If you want to set the baudbase, just use the setup from your terminal, set jumpers, or set it in your software (minicom/pppd/chat..).

13. Why do init and getty keep complaining when there is no keyboard or monitor connected ?

This can happen if you wanted to run your machine "headless" for instance, and removed the keyboard after the initial installation of the software. If this occurs your will have to edit /etc/inittab, and disable the getty's for the console (tty1, tty2, etc.) This can be done by removing the lines, placing a comment (#), or changing respawn into off. Please don't forget to read the next question.

14. Why don't I get a login screen when a serial terminal is attached ?

In order to get a login screen, getty should be told that there is a terminal attached to the serial port. What getty does is first open tty lines, print a login prompt and get the username, and finally initiate a login process for the user. Because the tty line is serial, change the line in /etc/inittab that reads

   1:2345:respawn:/sbin/mingetty tty1
   to eg.:
   1:2345:respawn:/sbin/getty ttyS0 9600 vt100
Add that line when there is no entry yet for tty1. Please note that the cua device is obsolete, and should only be used with Linux 2.0.x

15. Why can't I login as "root" on my headless machine ?

You will have to add the name of the devicefile of the serial port that you use to login as "root" to /etc/securetty. This can be cuan for systems that run Linux 2.0.x, and ttySn for Linux 2.2.x and above, where n is the portnumber.

16. How can I send the "Stop-A" key combination from a serial terminal ?

The Stop-A combination is nothing more than sending a break signal over the serial line. In the Keyboard Set-up menu of your terminal, or terminal emulator, you can send a break which will halt your machine. You can also try to turn the terminal off and on.

17. After booting the Red Hat release, the "Stop-A" key combination doesn't work.

This is a configurable option since the Red Hat 6.1 release. You can enable or disable the Stop-A key combination by setting MAGIC_SYSRQ to yes or no in /etc/sysconfig/init, or by setting kernel.stop-a = 1 in /etc/sysctl.conf. Details about it can be found in /usr/doc/initscripts*/sysconfig.txt. For production machines, you way want to leave the Stop-A combination disabled.

From the SILO prompt at boot time, you can enter "halt", which will give you the boot ok prompt.

18. The parallel port doesn't work and I get an "Operation not supported by device".

Go into drivers/sbus/char/bpp.c in your kernel source tree, find the bpp_regs structure, and change all of the field declarations to include __volatile__ at the beginning. Recompile the kernel, install it and reboot.

19. After booting the Red Hat version, networking doesn't work.

You probably have pcmcia support enabled. Try:

   # rm -f /etc/sysconfig/pcmcia
Then reboot or run:
   # /etc/rc.d/init.d/network stop
   # /etc/rc.d/init.d/network start
This problem has been fixed in later versions of Red Hat Linux.

20. Why do all the network interfaces have the same hardware ethernet address ?

This is a Sun feature. By default, all additional network interfaces take the ethernet address of the embedded network interface. This behaviour can be changed by typing the following at the boot prompt (ok):

   ok setenv local-mac-address?=true
You can also try to use /sbin/ifconfig for changing the address.

21. How can I force my network interface to a certain speed ?

You can use ethtool for this. It is a small utility for examining and tuning your ethernet-based network interface. ethtool is part of most distributions, but in case you need the sources you can download it from http://sourceforge.net/projects/gkernel.

22. Why doesn't HTTPD start correctly on my machine ?

To solve the httpd not starting problem, you need to edit /etc/hosts and remove everything after "localhost" on that line. It has probably put your full hostname there, and that's wrong. Just remove that part ,and *leave* the line after it. Then you can start httpd.

23. How can I use multiple video cards ?

This works almost the same as under Solaris. From the command line you can use the following:

   $ startx -- -dev /dev/fb0 -dev /dev/fb1
This should work for Xsun and Xsun24.

24. Why does the X server report: "Fatal server error: ..." ?

Make sure you have write access to /dev/kbd, /dev/fb and /dev/sunmouse.

There should be a symbolic link from /dev/sunmouse to /dev/mouse for most distributions, and make sure that in /etc/X11/XF86Config, in the Pointer section, the Device is set to /dev/mouse.

Also make sure that /usr/bin/X11/X is linked to the proper suid root binary (Xwrapper, Xsun, Xsun24 or Xsunmono). If you are using Xwrapper, then Xsun etc. should not be setuid root.

25. Why doesn't XFree86 version 4.0x work on my UltraSPARC ?

You should use the XSun or Xsun24 server from XFree86 version 3.3.6, or use XFree86 version 4.1 and later for if you wish to use PCI cards. XFree86 version 4.0x works only for Sbus and UPA based cards.

26. How can I get the mouse to work properly with XFree86 version 4.x ?

You should use "BusMouse" as protocol, e.g.:

    Section "InputDevice"
        Identifier  "Mouse0"
        Driver      "mouse"
        Option      "Protocol" "busmouse"
        Option      "Device" "/dev/mouse"
Please note that /dev/mouse is a symbolic link, and probably points to /dev/sunmouse.

27. How can I change the default resolution?

The kernel parameter video can be used.
You can append a line, similar to the following, to /etc/silo.conf.
For the ATI Mach 64 (Ultra5, Blade 100 etc):

Ofcouse it's possible to try things first on the SILO prompt: boot: linux video=atyfb:800x600@60

28. How can I get XFree86 to use the acceleration functions of my Elite3D ?

You will have to load the special microcode, which is part of the Elite3D driver from your Solaris installation, onto your card. From within Linux this can be done with afbinit. afbinit is for example included with Debian GNU Linux, Slackware Linux and Splack Linux. The source of afbinit for Linux was on vger.samba.org, but has been removed from that server when the kernel sources were moved to bkbits.net.
Copy the microcode file /usr/lib/afb.ucode from Solaris to your Linux system. Now run afbinit and specify the Elite3D device where to load the microcode on to. Start Xsun24 (without the "-noFFB" option).

29. Why doesn't xviddetect work properly on by Sbus/UPA based (Ultra)SPARC ?

This is because xviddetect uses PCI bus data to detect any cards, hence you cannot use it (yet).

30. Why does the X server report "Permission denied" upon restarting X ?

Type the following from your home-directory:

   $ rm -rf .Xauth* .xauth .ICE*
Then log out and back in, and try to start it again.

31. Why do I see snow when the TCX framebuffer is being accessed ?

Try commenting out the following in drivers/video/tcxfb.c

   #if 0
       if (prom_getbool (fb->prom_node, "hw-cursor")) {
       fb->setcursor = tcx_setcursor;
       fb->setcursormap = tcx_setcursormap;
       fb->setcurshape = tcx_setcurshape;
After this change you should rebuild the kernel, install it, and reboot.

32. Xscreensaver and xlock give a white background instead of black.

This is known to possibly be caused by the Window Manager you use.

For xscreensaver, open the file /usr/X11R6/lib/X11/app-defaults/XScreenSaver in an editor, search for the line that reads

   *installColormap:    True
and set it the last part to False. Also try adding the following line
   *visualID:           PseudoColor

For xlock, open the file /usr/X11R6/lib/X11/app-defaults/XLock in an editor, search for the line that reads

   XLock.install:       on
and set the last part to off. If the line does not exist in the file, you should add it.

33. X doesn't work anymore after upgrading from kernel 2.0.x to 2.2.x

You are probably use a machine with a BWtwo framebuffer. The BWtwo driver has been broken in version 2.0.37 and early 2.2.x versions of the Linux kernel. There seem to be two remedies:

  • Boot the older kernel that worked.
  • Use Derrick J. Brashear's solution:
    Edit linux/drivers/video/bwtwofb.c, find the line which reads
    fb->physbase = phys;
    and make it read:
    fb->physbase = __get_phys(fb->sbdp->sbus_vaddrs[0]);
    Rebuild and install the new kernel, and reboot.

34. How can I stop the system starting X every time after booting ?

Starting X directly after the system has booted can be a problem on slower SPARC machines without enough memory. By editing the file /etc/inittab, this behaviour can be stopped.
Boot Linux into single-user-mode by entering linux s or linux single at the SILO prompt. Change the line in /etc/inittab that reads

See the manual page for inittab(5) for more details of this file.

35. X runs very slow on my older machine, what can I do ?

Older machines such as the SPARCstation IPX or SPARCstation 1+ can have some trouble with the large size of window managers like GNOME and KDE. If you really want or need a window manager, you can try to install a lightweight window manager. A few examples are BlackBox, WindowMaker and the OpenLook Window Manager (olwm, olvwm), also known as OpenWindows, which can also be found in the Debian distribution. You can also try to start Enlightenment from your $HOME/.xinitrc file.

36. I have heard that I can change the OEM logo on my machine.

The OEM logo is, when enabled, the picture you can see in the upper left corner on the white screen when you have just turned on your machine and it's checking memory, before loading a kernel. When disabled, you can see a Sun logo, and hardware information. Under Linux, you can change this into a logo of your choice by following Bert de Bruijn's Openprom oem-logo creation instructions.

Originally written by Jim Mintha (jim@ic.uva.nl). Maintained by Pieter Krul (pkrul@ultralinux.nl)