FAQ

UltraLinux FAQ

Version: 2.29
Last Update: October 12, 2003
Authors: Jim Mintha and Pieter Krul

Copyright Notice: 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.

Table of Contents

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

This FAQ provides comprehensive information about running Linux on SPARC and UltraSPARC hardware. It covers installation, configuration, troubleshooting, and optimization of Linux on Sun hardware platforms.

↑ Back to Table of Contents

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.

↑ Back to Table of Contents

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, the name on the website was changed 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.

↑ Back to Table of Contents

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.

↑ Back to Table of Contents

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. Although 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 6.

↑ Back to Table of Contents

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.

↑ Back to Table of Contents

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.

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

↑ Back to Table of Contents

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

Dave works for Red Hat now.

↑ Back to Table of Contents

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.

↑ Back to Table of Contents

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.

↑ Back to Table of Contents

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.

↑ Back to Table of Contents

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.

↑ Back to Table of Contents

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.

↑ Back to Table of Contents

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.

↑ Back to Table of Contents

15. I heard that UltraLinux is faster than 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 benchmark results.

Larry McVoy (lm@neteng.engr.sgi.com) explained the main reasons that Linux is faster than commercial Unices:

  1. Better system call design: 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.
  2. Instruction and cache optimization: Linux kernel hackers count instructions and cache misses and eliminate them. When each “feature” is added into a kernel, people will do gross measurement to show that it made no difference. Linux is far ahead of the rest of the world in that Linus and the other senior kernel folks do not kid themselves that a cache miss here and there doesn’t matter.
  3. Fresh redesign: Linux is a redesign. Many ideas have been rethought using current thinking. All other Unix implementations 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.

↑ Back to Table of Contents

Section 2: Hardware

1. What machines WILL currently run UltraLinux?

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

Sun4c architecture:

  • 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)

Note: There are some kernel related memory management problems with sun4c. This is being worked on.

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 MHz)
  • SPARCstation/server 10 (with most MBUS processor cards)
  • SPARCstation/server 20 (with most MBUS processor cards)
  • JavaStation 1
  • JavaStation 10
  • JavaStation E
  • JavaEngine 1

Note: 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.

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, CP1500
  • UltraSPARC PCI based workstations: Ultra30, UltraAXe, UltraAXi, UltraAXmp, Ultra5, Ultra10, Ultra60, Ultra80, SunBlade 100, SunBlade 1000
  • UltraSPARC PCI based servers: Netra X1, Netra T series, Fire V100, Fire V120, Enterprise 250, 450

↑ Back to Table of Contents

2. What additional hardware is supported?

Sun workstations and servers up until the Ultra-2 use internally the SBUS, Ultra-5 and later use (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 (requires OBP firmware for booting):

  • NCR53c8xx
  • Adaptec SCSI
  • Qlogic/ISP

Network cards:

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

Note: The sun4c platform has problems with QuadEthernet cards due to firmware problems. Only the Ethernet part on combined SCSI/HME PCI cards can be used.

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, 24-bit)

OEM framebuffers:

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

Storage:

  • All tape drives and changers
  • StorEdge T3

Miscellaneous:

  • Serial console
  • CS4231 based audio
  • Floppy drive (booting from floppy might not work on certain sparc64 based machines)

↑ Back to Table of Contents

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:

  • 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.

↑ Back to Table of Contents

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.

↑ Back to Table of Contents

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 680×0 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.

↑ Back to Table of Contents

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.

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.

↑ Back to Table of Contents

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 FAQs.

↑ Back to Table of Contents

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.

↑ Back to Table of Contents

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.

↑ Back to Table of Contents

10. How can I make my JavaStation/Engine 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 are several projects about Linux on Sun JavaStations, for example Linux on the Sun JavaStation NC HOWTO and The unofficial Javastation documentation project.

↑ Back to Table of Contents

11. How can I make my Netra X1 / Txx 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.

↑ Back to Table of Contents

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.

↑ Back to Table of Contents

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. There 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.

↑ Back to Table of Contents

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 audio devices you can visit the Linux/SPARC audio subsystem information page.

↑ Back to Table of Contents

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.

↑ Back to Table of Contents

Section 3: Distributions

1. What distributions are available for UltraLinux?

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

  • Aurora SPARC Linux
  • Debian GNU/Linux
  • Gentoo Linux
  • Kondara MNU/Linux (Japanese language, based on Red Hat’s Raw Hide)
  • Linux-Mandrake
  • PLD GNU/Linux
  • Red Hat Linux
  • Rock Linux
  • Splack Linux
  • SuSE Linux
  • UltraPenguin
  • Vine Linux (Japanese language, based on Red Hat Linux)

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

↑ Back to Table of Contents

2. Aurora SPARC Linux

A new initiative to build a distribution based on the recent sources of new Red Hat releases 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

↑ Back to Table of Contents

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. The Debian SPARC port was included as of version 2.1 (slink).

Unlike for instance Red Hat, Debian does not produce their own CDs, but instead builds ISO images which are distributed to CD vendors.

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 security updates can be found at http://security.debian.org.

↑ Back to Table of Contents

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 and 64-bit SPARC.

↑ Back to Table of Contents

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.

↑ Back to Table of Contents

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.

↑ Back to Table of Contents

7. Red Hat Linux

Red Hat, Inc. has been releasing versions of its 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 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.

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

↑ Back to Table of Contents

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 officially 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.

↑ Back to Table of Contents

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.

↑ Back to Table of Contents

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 announced 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.x 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.

↑ Back to Table of Contents

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 elf2aout program to convert the kernel at the end.

↑ Back to Table of Contents

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

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.

↑ Back to Table of Contents

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.

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.
  • 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

↑ Back to Table of Contents

4. Why does “make” complain about a non-existent sparc64-linux-gcc?

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

↑ Back to Table of Contents

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

As of kernel version 2.2.5 UltraLinux (sparc and sparc64) is completely supported, although there are issues for older SPARC hardware with the newer 2.4.x kernels.

↑ Back to Table of Contents

6. Where can I find the most recent kernel?

The most recent kernel versions 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.

Another option is, since the SPARC development tree is synchronized with the Linus tree, to download the latest version from http://www.kernel.org or one of its mirrors. You can find all versions of the linux kernel there, including development versions.

↑ Back to Table of Contents

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.

↑ Back to Table of Contents

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

↑ Back to Table of Contents

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.

Of course there are various ways of doing this, but this way works best. See also the questions about SILO in the section Booting of this FAQ.

↑ Back to Table of Contents

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 will inflate it. This is also the reason it is useless to compress it if the kernel is too big.

The alternatives are:

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

↑ Back to Table of Contents

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).

↑ Back to Table of Contents

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.

↑ Back to Table of Contents

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 in the util-linux package. They used to be part of the SysVinit package.

↑ Back to Table of Contents

14. What do I need to get networking running?

This is what should be done once logged in to the UltraLinux machine as root:

Note: 137.82.51.3 is the IP address of the UltraLinux machine named dodo, and 137.82.51.254 is the gateway to the internet

Add the loopback interface:

# ifconfig lo 127.0.0.1

Add a route to it:

# route add -net 127.0.0.0

Add the ethernet interface and address:

# ifconfig eth0 137.82.51.3 broadcast 137.82.51.255 netmask 255.255.255.0

Add a route to it:

# route add -net 137.82.51.0 netmask 255.255.255.0

Add a route to the outside world:

# route add default gw 137.82.51.254 metric 1

Give the machine a name:

# hostname dodo

↑ Back to Table of Contents

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:

ypserver NIS.SERVER.IP.ADDRESS
ypserver 137.81.56.22

Edit /etc/nsswitch.conf to make sure that the correct services will query NIS (ie passwd, hosts, groups). Example:

passwd:     files nis
group:      files nis

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

↑ Back to Table of Contents

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

You need the following:

An X11r6 ‘tree’ mounted under /usr/local. Mount it like:

# mount -t nfs 137.82.51.1:/share/sunos/local /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

↑ Back to Table of Contents

Section 5: Booting

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

Sun SPARC based machines have an OpenBoot PROM which takes control of the computer when you turn it on. This is 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, this will 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 its 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.

↑ Back to Table of Contents

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

↑ Back to Table of Contents

3. How can I see all the PROM parameters?

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

↑ Back to Table of Contents

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.

↑ Back to Table of Contents

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.

↑ Back to Table of Contents

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).

↑ Back to Table of Contents

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.

↑ Back to Table of Contents

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 each parameter.

↑ Back to Table of Contents

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

The basic idea is this:

  1. Add an entry for the new machine to the ARP/RARP cache.
  2. Set up a TFTP server where the bootimage can be transferred from.
  3. Set up a file server where you can install the software from (NFS, FTP etc).
  4. 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.

↑ Back to Table of Contents

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 you 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 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
or
# /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:

# /sbin/rarp -s  phoenix   08:00:20:1f:cd:8e
# /sbin/arp -s 137.82.51.3 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 that the machine is listed in the /etc/hosts file.

↑ Back to Table of Contents

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).

↑ Back to Table of Contents

12. My ethernet address shows 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.

↑ Back to Table of Contents

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

Please see the previous question.

↑ Back to Table of Contents

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.

Please note that if you use rarpd under Linux that this server also will try to provide a boot image from the /tftpboot directory.

↑ Back to Table of Contents

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 its 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.

An example of converting the IP address 172.28.230.104:

172 = AC
 28 = 1C
230 = E6
104 = 68

When put together, this will result into AC1CE668, which will become the name of the symbolic link. If the architecture of the client is not sun4u (UltraSPARC), you will have to add the system’s 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).

Copy the appropriate bootfile for the client’s 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.

↑ Back to Table of Contents

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.

↑ Back to Table of Contents

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.

↑ Back to Table of Contents

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>/.

↑ Back to Table of Contents

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.

↑ Back to Table of Contents

20. Booting over the network: “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. So if your IP address is 137.82.51.4 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 what is happening on the network. Please see “Booting over the network still doesn’t work”.

↑ Back to Table of Contents

21. Booting over the network: “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. 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.

↑ Back to Table of Contents

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:

# 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.

↑ Back to Table of Contents

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).

Scroll to Top