Click on our Sponsors to help Support SunWorld

Sparking up Linux

Getting Linux up and running on your Sun machine

By John Little

SunWorld
August  1998
[Next story]
[Table of Contents]
[Search]
Sun's Site

Abstract
Following on from Rick Cook's January SunWorld article, "Linux lines up for the enterprise," this first of two parts focuses on Linux download and installation issues for SPARC machines. For those of you living on the bleeding edge, John will cover UltraSPARC and other advanced topics next month. (3,500 words, including one sidebar on using serial console devices)


Mail this
article to
a friend
The world is starting to realize that Linux is no longer just for PC users. Intel is betting on Linux to help boost its server sales. Oracle and Informix are porting their databases to the OS. Even Sun is interested -- as evidenced by a recent pledge to help the folks at Red Hat with their port to the UltraSPARC.

Even if Linux is being taken seriously as a server operating system, it's still generally thought of as an Intel platform. However, thanks to a small, dedicated band of developers, a SPARC version of Linux has, in fact, been available for several years now. The first bundled CD-ROM distribution came out with Red Hat 4.0 in the fall of 1996. Since then, work has continued steadily, with improvements, fixes, and developments coming out on a regular basis. A solid connection with the x86 development effort -- and the active involvement of Linus Torvalds himself with the Intel, Alpha, and SPARC ports -- means that the SPARC code tracks the changes and innovations in the main kernel and remains recognizably Linux, despite the differences in architectures.

And now, with Sun's recent Linux conversion, SPARC ports of Linux should move a lot more quickly and smoothly, says Red Hat Marketing Director Lisa Sullivan. "In the past," she notes, "we've had some issues with the SPARC version of Linux. With Sun's help, we will be able to make sure that Sun's versions stay in line with our other versions [i.e., Intel and Alpha]."

Spotlight on Linux
  • How to put Linux on your SPARC
  • Interview with Linux creator, Linus Torvalds
  • Linux vs. NT. vs. Solaris
  • Red Hat fixes Linux/SPARC bug
  • Why Intel and Sun love Linux
  • Reader Survey: How do you like your open source?
  • Linux on SPARC: A Unix by any other name
    From the perspective of a SunOS or Solaris user, how does Linux for SPARC fit into the scheme of things?

    Strictly speaking, Linux isn't Unix. It's a Unix-like OS. And since the code is based on neither BSD (Berkeley Software Distribution) or SVR4 (System V Release 4), it tends to defy classification. On the one hand, loadable kernel modules, a /proc filesystem, and an /etc/rc.d directory structure create a more than passing resemblance to Solaris. On the other, features like the /dev directory structure and the BSD-style printer daemon are more reminiscent of the SunOS. To add to the confusion, SPARC-based Linux occasionally shows its PC heritage with programs such as fdisk (a disk partitioning utility). Its nonconformist background is evident in the incorporation of novel features such as virtual consoles and mouse-based cut and paste outside of the X Window System. While this diversity is one of the true strengths of Linux, it can also be a little intimidating to the newcomer.

    Red Hat 4.2
    Three complete, working releases of Linux for SPARC are currently available -- though at the time of writing, only one is readily available on CD-ROM. This release, version 4.2 from Red Hat Software, provides support for Sun4C and Sun4M architecture desktop systems (to find out what architecture you have, type uname -m) and is the one I will refer to for the bulk of this article. It's worth noting that several non-desktop machines, such as the 4/600 series, will also run 4.2 when using the on-board SCSI, but there's no support for VersaModule Eurocard (VME)-based devices in this release, so VME-bus machines aren't included in Red Hat's official support list.

    If you purchased Red Hat Linux 5.1 for SPARC on CD recently, you should probably read my article on the Sun4C bug.


    Red Hat Linux for SPARC

    The standard boxed release of Red Hat Linux 4.2 for SPARC comes with two CD-ROMs (one a bootable install CD, the other containing complete source code), a 250-page, soft-cover user's guide, and a limited (30-day) support agreement.

    If you decide to go out shopping for SPARC-based Linux, though, keep an eye out for Red Hat's Summer '97 4.2 PowerTools compilation set. With SPARC, Intel, and Alpha distributions as well as extra bundled applications, all on six CDs, this release gets my vote for the Linux bargain of the decade.

    UltraPenguin
    A separate release for the Sun4U Ultra-1 and Ultra-2 desktop systems has also been available via the Net since July of last year. With the unlikely name UltraPenguin, this version has a true 64-bit kernel with full support for 32-bit binaries. Unfortunately, it has never been distributed on bootable CD-ROM media.

    UltraPenguin 1.0.9
    In the up-and-coming department, a new version of UltraPenguin -- providing integrated support for Sun4C, Sun4M, and Sun4U machines -- is now in late beta. In addition to Ultra-1 and Ultra-2 systems, this version also has support for the newer, PCI-based machines, including the Ultra-5. It isn't available on CD-ROM yet, but this version is rumored to be the one Red Hat will use for its next (5.1) release of Linux for SPARC.

    CD-ROM installs
    There are three basic methods of booting your system into the actual install program: CD-ROM, floppy, or the network. If you purchase the CD-ROM distribution, a simple boot cdrom command is obviously the most straightforward. However, most people who are trying Linux for the first time download it from the Net, in which case they must use one of the other methods.

    Floppy boot
    Booting from a floppy isn't familiar to most Sun users, but it can be useful when you're trying to boot a system that isn't connected to a network and doesn't have a Sun-compatible CD-ROM drive attached. Making boot floppies is quite simple. The boot images are available both on the CD-ROM distributions and on the FTP sites under the directory redhat-4.2/sparc/images (see Resources, below, for FTP site URLs). You can create boot floppies under SunOS, Solaris, Linux, or even DOS. The main requirement is that you have a known good, formatted diskette before you start. Use dd to transfer the boot image file onto the diskette, followed by bfd() or boot floppy, depending upon the PROM revision of your SPARC. One word of warning here: the earlier 4.0 and 4.1 releases from Red Hat had problems with the floppy image, causing machines with pre-2.0 boot PROMs to fail with a read error message. So always make sure you download the latest diskette boot image from the 4.2 tree.

    With both the CD-ROM and floppy boots, the first message you see will be Uncompressing image, demonstrating yet another Linux foible: the compressed kernel. Although originally developed to save precious space on boot floppies, this peculiarity has been carried over into mainstream Linux. Even in cases such as a CD-ROM distribution, where space isn't such an issue, compressed kernels have become the norm. Your system will still boot (and boot a smidgen faster at that) if the kernel image isn't compressed.

    Network boot
    Configuring a second machine on your network as a boot server for SPARC-based Linux is also quite simple. This machine needs only enough free space for a single network boot image -- about 2.5 megabytes (MB) -- and, as the target system uses it only once (at installation boot time), it doesn't need to be permanently dedicated to the task. Be careful though: If you already have diskless or AutoClient systems on your network, it's best to use the existing boot server for SPARC-based Linux too -- otherwise your existing clients may hang. Suns expect the machine that answers the initial RARP (Reverse Address Resolution Protocol) broadcast to be able to serve the kernel boot-file, too. Setting up an additional boot server on a busy production network in these circumstances will probably earn you a pink slip just as soon as one of the original clients tries to reboot.

    The setup for network booting will look very familiar. The configuration of the tftp daemon in /etc/inetd.conf and the creation of a tftpboot directory (if one doesn't already exist) are all exactly the same as under Solaris. The Linux tftpboot image file is placed in the tftpboot directory and the standard link is created between it and a filename with the format <HEX-IP-ADDRESS>.<ARCH>. One difference here is that the Linux kernel is architecture-independent between Sun4C and Sun4M machines, so there is only one tftpboot.img file supplied with Red Hat 4.2. In the case of a SPARCstation-2 client, with an IP address of 172.17.172.51, the link would look like this:

    AC11AC33.SUN4C  ->  tftpboot.img
    

    And for a Classic with the IP address, 172.17.172.58:

    AC11AC3A.SUN4M  ->  tftpboot.img
    

    If you're not sure which architecture your client machine has, you can create both Sun4C and Sun4M links. Be sure your client system's Ethernet address and hostname are in the ethers map too, otherwise its initial RARP request will fail (ARP/RARP timeout). After these preparations, booting is a simple matter, using ble() or boot net (again, depending upon the PROM revision of your machine).

    Whether booting from CD-ROM, floppy, or the network, the initial stages are the same. The console will switch to inverse video and a color bitmap of Tux the penguin (the Linux mascot) will appear before kernel messages begin to scroll down the screen. Among other differences, note that the Linux messages identify whether your SCSI devices are SCSI-I or SCSI-II compliant.

    Serial console devices
    Serial terminals can be a little confusing to us Sun users, as we expect them to "just work." The two situations that require a little extra attention when using Linux on SPARC are (1) installations using a serial terminal and (2) the conversion of a working machine from a graphics to a serial console. In both cases, SPARC-based Linux needs to be told specifically which physical device is to be utilized as the console.

    For an install using a serial terminal, you need to specify the extra argument, serial, at boot time. Thus, a boot from CD-ROM would be

    ok    boot cdrom linux serial
    

    During the boot sequence, you'll notice that a message specifying a change to serial-console mode is displayed. From that point on, the rest of the install will be tailored to a serial terminal console device (releases of Red Hat previous to 4.2 didn't have this feature).

    The biggest differences are a lack of color and a lack of virtual console devices. Despite not being able to make use of virtual consoles, you can get an interactive shell at any time using Control-Z. To get back into the install program where you left off, simply type exit to the shell.

    For information on converting a bitmap-console machine to a serial console, see the Serial console sidebar.

    PROM monitor boot commands
    boot xxxx linux Normal boot.
    boot xxxx linux serial Console on Port-A/B.
    boot xxxx linux single Single user.
    boot xxxx linux single serial Single user, serial console.
    boot floppy linux rescue Minimum shell from floppy.
    boot floppy linux rescue serial Minimum shell, serial console.
    boot xxxx linux root=/dev/sda1 Force root mount on first partition of first SCSI disk.
    boot xxxx linux init=/bin/sh Force system to ignore rc.d/init.d and drop directly into shell.
    Ensuring reliable reboots (NVRAM settings)
    setenv sunmon-compat? false Force system to reset to Forth mode.
    setenv boot-file linux Ensure the system boots the Linux kernel.
    setenv auto-boot? true Ensure that the system will reboot when unattended.

    Install basics: Before you start
    How much disk space will you need to install Linux on SPARC?

    The smallest useful installation (the base package plus networking) is lightweight -- 35 MB or so -- which means it's quite possible to use an old 105-MB disk for a quick and easy trial installation. A compact, usable, desktop configuration can be squeezed onto a 207-MB disk without too much trouble Table 2, "Install sizes and times" for more information on install times and space requirements).

    Virtual consoles
    Linux supports virtual console devices. If you're using the normal bitmapped Sun screen and keyboard you can access these alternate displays by holding down the Alt key and selecting the screen using F1 through F6. Under the Red Hat install program, the virtual consoles are dedicated to specific tasks.


    Red Hat Linux for SPARC
    installation dialog box

    In normal operation, outside of the install program, each virtual console will provide a login prompt and will also display console stderr messages.

    Navigation
    Most install screens use Tab to move between items and Enter to select. Highlighting the Cancel button will usually allow you to return to the previous step. The keyboard arrow keys work in multichoice menus, too.

    The Shell
    The default shell under Linux is bash, the Bourne-again shell. While history and command substitution are similar in most respects to the csh, variables are set and for-while loops are defined using Bourne shell syntax. Bash uses the GNU readline library to provide extensive command-line editing capability combined with history (use the arrow keys to move around in history and edit individual command lines).

    The Install program
    The install program itself will look vaguely familiar, in that it is a cursor-based, menu-driven program, with a package selection section and a horizontal bar graph to indicate install progress. The most noticeable difference between the Linux install and the Solaris version is that Linux uses color.

    If you didn't boot from CD-ROM, one of the first choices you must make is which media type you intend to install from. In this respect Red Hat Linux is very versatile. Starting from a floppy or network boot, it is possible to install in three ways: from a package tree on a local CD-ROM or hard disk, via NFS (Network File System), or even via FTP from behind a firewall. This last option makes it feasible to use the Red Hat FTP site (or one of the mirrors) as the install source. In practice, however, the probability of dropped connections or timeouts makes this much too unreliable (unless you happen to have a very fast Internet connection and know of an under-used mirror site). FTP is still a valid option where the install packages are on a remote system and cannot be exported via NFS, though.

    fdisk
    The next task after choosing the install source is to choose and partition a target disk. As mentioned earlier, the Linux fdisk program is useful only as a partitioner, so any disk you want to use must already have been formatted.

    The fdisk utility can sometimes be a little temperamental. When it doesn't find anything recognizable as a valid label at start-up, it will usually exit without warning on receipt of any command other than s (create Sun label). Entering s as the very first command will ensure that a compatible label is written to the disk, which you can then edit to your own requirements.

    In Sun tradition (and unlike other Linuxes), SPARC-based Linux requires that slice 3 of the partition table be the whole disk. The default label written by the s command will have slices 1 and 2 defined in addition to this. Slice 2 will be a 50-MB swap partition and slice 1 will be a single filesystem using the rest of the available space. As 50 MB of swap is more than generous for most user configurations, you might want to consider reducing this amount -- by as much as half if you're doing a trial installation on a small disk.

    The install program requires that some swap is configured. Upon exiting the fdisk utility it will ask for confirmation before initializing and bringing the specified partition into use.

    Package selection
    The package selection section is quite straightforward, with one exception (in revision 4.2, anyway). The Install Everything option is, illogically, out of sight at the very bottom of the selection menu at start-up. Red Hat Software has otherwise put together a very serviceable set of package groupings to make installation as simple as possible for the widest possible user base. If you don't like the provided groupings, it is also relatively easy to go into a submenu and select individual packages yourself.

    However, a definite shortcoming of the package selection process is that it doesn't check available disk space before starting off the actual install. This can lead to frustrating, last-minute failures toward the end of the install process, as the disk becomes full. Check the table below for approximate sizes and install times for major package groupings. If in doubt, install a minimal system and use Red Hat's package manager, rpm (or glint, the GUI version) to add new packages as you need them.

    Install sizes and times

      Mini     Server     Wkstn     Full     Full with  
      PowerTools  
    Base (selected by default) X X X X X
    C, C++   X X X X
    Development Libraries     X X X
    Printer Support   X X X X
    NFS, networked workstation,
    dial-up, DOS connection
    X X X X X
    anonymous FTP, Web, news   X X X X
    X, multimedia, Java     X X X
    TeX, Emacs       X X
    PowerTools         X
    Approx Install Minutes 10 15 25 60 85
    Approx Install MB 35 50 150 440 560
    Note: All times are approximate, using a SPARCstation-2
    class machine and a Sun x4 CD-ROM drive.

    Finishing the install
    After the successful addition of the selected packages, the install program will prompt for basic information about system configuration. Two specific areas are a little confusing to the novice.

    The first comes up during timezone selection. The first choice on the menu is Hardware clock set to GMT. Unless you actually live on the Greenwich meridian (or enjoy fiddling with timezone settings) I'd advise leaving this box unchecked. Do select your timezone, though. This is also one of the sections where those rarely-used page-up and page-down keys can save lots of time and effort (the timezone list is quite long).

    The last and most important configuration section is perhaps the most confusing. This deals with the installation of the bootblock on your Linux disk. It might seem that the installation of a bootblock would be so basic as to be mandatory, but it isn't. Linux has the capability to share a disk with another OS, and the boot manager (in the x86 distribution this is called LILO, for Linux Loader; under SPARC, it's called SILO) is capable of booting other operating systems too. So, you're given the choice of bypassing this step or adding extra configuration parameters.

    Unless you're already a SILO expert, when prompted with:

    Would you like to install or configure the SILO bootloader on your system?
    

    You should select Yes and then leave the next section, configuration parameters, blank. This will install the default bootblock onto your disk.

    So far, I've covered the installation process for SPARC-based Linux 4.2 on Sun4C and Sun4M architecture machines. Next month I'll delve into kernel upgrades, installs on the Ultra, running applications in emulation mode, and setting up SPARC-based Linux X terminals.


    Click on our Sponsors to help Support SunWorld


    Resources

    Linux for SPARC resources Linux applications and utilities Other Linux resources

    About the author
    John Little is an Englishman living in Japan and working for an American company (he frequently uses these facts when attempting to excuse his grammar and spelling). He worked for Sun Microsystems for nine years. Reach John at john.little@sunworld.com.

    What did you think of this article?
    -Very worth reading
    -Worth reading
    -Not worth reading
    -Too long
    -Just right
    -Too short
    -Too technical
    -Just right
    -Not technical enough
     
     
     
        

    SunWorld
    [Table of Contents]
    Sun's Site
    [Search]
    Feedback
    [Next story]
    Sun's Site

    [(c) Copyright  Web Publishing Inc., and IDG Communication company]

    If you have technical problems with this magazine, contact webmaster@sunworld.com

    URL: http://www.sunworld.com/swol-08-1998/swol-08-linuxsparc.html
    Last modified:

    SidebarBack to story

    Using serial console devices

    We've already covered booting into the install program using a terminal attached to one of the serial ports rather than a bitmapped display. This section contains some essential information for machines initially installed using a bitmapped display, but now configured in headless server mode.

    setconsole
    If you still have access to the Sun keyboard and display, or if the machine is still running and you can log into it across the network, this is relatively simple. The setconsole script provided by Red Hat will modify the /etc/inittab file and the /dev links to point at the specified device. To specify serial port-A as the console device, use:

    setconsole ttya
    

    To reset things back to using the Sun frame buffer and keyboard:

    setconsole video
    

    Reboot the system in its new configuration.

    If you're changing from a graphics to a serial console, you'll notice the following message during the boot:

    gpm: is your kernel compiled with CONFIG_SELECTION on?
    

    This is from the General Purpose Mouse server (the program that provides cut and paste in virtual console windows) expressing its surprise at not being able to access a mouse. If you intend to make the serial console permanent, you might also want to modify /etc/rc.d/init.d/gpm to inhibit start-up of this program.

    Manual conversion
    An unconverted, headless system requires more work. Attach your serial console and force Linux to boot into a shell (instead of running init) using the following boot syntax:

    ok    boot linux init=/bin/bash
    

    You might see the error message from the shell, too many arguments (which it's safe to ignore) and then you'll find yourself at a shell prompt. At this point, only the root filesystem is mounted, and read-only at that, so you'll need to do a little preparatory work before starting on the actual configuration change.

    /sbin/fsck /
    /sbin/mount -n -o remount /
    TERM=vt102; export TERM
    

    The fsck command requires no explanation. The mount line remounts the root filesystem read/write, without updating /etc/mtab (-n), and the last line sets the terminal to a recognizable type (the vt102 might need to be changed to suit your actual terminal or emulator's characteristics).

    Following this set-up work, you can now vi the /etc/inittab file to reflect the new status of your machine as a serial-console, headless server. Because the serial terminal will not support virtual consoles, the getty processes for them (lines 2 through 6, below) must be disabled. Also, because the default mingetty (minimal getty) doesn't handle disparate terminal types or line speeds, the new specifier for your serial terminal should specify the standard getty program as the one to use.

    The changes to /etc/inittab are shown below.

    Original lines from /etc/inittab

    # Run gettys in standard runlevels
    1:12345:respawn:/sbin/mingetty tty1
    2:2345:respawn:/sbin/mingetty tty2
    3:2345:respawn:/sbin/mingetty tty3
    4:2345:respawn:/sbin/mingetty tty4
    5:2345:respawn:/sbin/mingetty tty5
    6:2345:respawn:/sbin/mingetty tty6
    

    Replacement lines in /etc/inittab

    # Run gettys in standard runlevels
    ##1:12345:respawn:/sbin/mingetty tty1
    ##2:2345:respawn:/sbin/mingetty tty2
    ##3:2345:respawn:/sbin/mingetty tty3
    ##4:2345:respawn:/sbin/mingetty tty4
    ##5:2345:respawn:/sbin/mingetty tty5
    ##6:2345:respawn:/sbin/mingetty tty6
    
    #
    # Serial console, 9600 baud on Port-A.
    #
    1:12345:respawn:/sbin/getty ttyS0 DT9600 vt102
    

    In addition to this, links need to be made in the /dev directory to make sure that the console points at the A-port.

    cd /dev
    rm console
    rm systty
    
    ln -s ttyS0 console
    ln -s ttyS0 systty
    

    You must also add the port name ttyS0 into the /etc/securetty file to allow root logins on that device.

    SidebarBack to story