Lab Install of Fedora 9

May 22, 2008

Fedora 9 was released last week. Our lab’s servers and workstations all run varying versions of Fedora or CentOS, the RHEL-clone server distribution. In preparation for the release of F9, we had decided to replace some aging 32-bit workstations. The new workstations all have Intel Q9300 CPUs, four gigs of RAM, NVidia 9600GT video cards, and a pair of 250GB SATA drives. The 250GB drives are kind of overkill — we do most of the heavy work on our servers and clusters these days — but hard drives are cheap.

When configuring new computers, we usually keep a log in a notebook. This time, I decided to add the log here. Hopefully others performing a clean installation of F9 in a science/programming environment may find it useful.

Clean Install Procedure

The install procedure, guided by Fedora’s Anaconda, is as trouble-free as it was in recent Fedoras. On one older machine, we had trouble booting from the Fedora DVD (in particular, a crc error when loading the kernel and initrd). This was remedied by using another DVD burn of the install disc, but burned at a slower speed. The first burn just wasn’t entirely reliable.

Our dual SATA drivers were partitioned using a custom layout. In our case, we created identical software RAID partitions on each disc: 4 gig for swap, 1 gig for /boot, with / getting the remainder. /boot needs to be partitioned as RAID-1, but swap and / were partitioned as RAID-0 for maximum speed. If a disk fails, it’s not a big deal for us: all of our important data and home directories are on a RAID-5 fileserver. After the RAID, the only time consuming thing in the initial setup is specifying the network info, which includes our static IP addresses.

Our packages to install are in the default “Office and Productivity” section and the “Software Development” section. The most important part of this log is the following list of packages added for our customized install, the first batch of which are on the DVD:

  • emacs – it’s surprising that vi is installed by default, but emacs is not
  • openbabel – a chemistry utility in the science and engineering subsection
  • all optional packages in the graphics subsection – imagemagick is particularly important
  • k3b – the best CD/DVD burner to be found for linux
  • lynx – the classic text-only web browser
  • the fedora packager subsection
  • gnuchess – how can other games be installed, but not chess?!
  • memtest86+ – useful for hardware troubleshooting
  • the system tools subsection
  • the legacy software compatibility subsection
  • tcsh – most of our lab uses this shell! this should be installed by default
  • gnome-netstatus – a useful widget
  • thunderbird – a couple members of our lab use this for reading mail
  • the authoring and publishing subsection – mostly for the TexLive packages

Things to do at Firstboot

After the 1300+ packages finish installing, a couple things (such as NIS logins) are configured on firstboot. Logging in as root, we need to configure two additional repositories: livna and adobe-linux. Then, we install additional packages from the Fedora repository via yum:

  • xpdf – lightweight, fast, and useful pdf viewer
  • xdvik – amazingly, xdvi is not distributed with F9’s TexLive packages
  • autofs – this is needed to mount our /home directories, and is surprisngly omitted from the F9 DVD
  • openmpi and openmpi-devel – parallel (MPI) compilers
  • scipy – a suite of modules for doing science with Python
  • PyX – a nifty module for drawing graphics with Python and LaTeX
  • grace – the best 2D graphing program for GNU/linux
  • readahead – a small package which helps cache files to speed the boot process

Lastly, the media packages, (mostly) from livna and adobe-linux:

  • nspluginwrapper.i386 and alsa-lib.i386 – needed for getting i386 (32-bit) Flash to work with x86_64 (64-bit) Firefox. alsa-lib is needed for sound.
  • flash-plugin – flash itself, via the adobe-linux repository
  • mplayer – for playing movies and mp3s, via livna
  • lame – a mp3 encoder/decoder
  • libdvdcss – a DVD decoder
  • amarok-extras-nonfree – more plugins for Amarok, an alternative to mplayer (will install h.264 support as a dependency)

While using yum to install all these packages, many dependencies will also be installed. This is normal.

Services

Now that autofs and other packages have been installed, the default services need to be configured at System>Administration>Services.
The following are switched to disabled:

NetworkManager – a new service being pushed by Fedora, but it overrode our static IPs with DHCP IPs
bluetooth – not needed on workstations
ip6tables – we don’t use IPv6
isdn – we don’t use ISDN

The following are switched to enabled (all these are needed for our lab’s local network):

autofs – automounting remote nfs shares
netfs – needed for autofs and other remote mounting
network – replaces NetworkManager
ypbind – NIS client

Additionally, smartd and lm_sensors may be enabled if you plan on carefully monitoring your hardware.

NVidia 3D Drivers and Fedora 9’s X.org

One thing I haven’t mentioned yet is the NVidia 3D video driver. Fedora 9 includes a pre-release version of X.org, and NVidia’s proprietary, closed-source drivers have not yet been updated to support it. Even the supposed -ignoreABI and Disable “glx” workarounds completely fail. The solution is to downgrade some key X.org packages to the Fedora 8 versions. A minimal downgrade can be successful by only changing five packages. However, depending on your own particular hardware and software configuration, more packages may have to be downgraded. Here’s the procedure:

  1. Get the following files:

    xorg-x11-drv-keyboard-1.2.2-2.fc8.x86_64.rpm
    xorg-x11-drv-mouse-1.2.3-1.fc8.x86_64.rpm
    xorg-x11-drv-nv-2.1.6-1.fc8.x86_64.rpm
    xorg-x11-server-utils-7.3-2.fc8.x86_64.rpm
    xorg-x11-server-Xorg-1.3.0.0-44.fc8.x86_64.rpm

    http://wuarchive.wustl.edu/pub/fedora8.64/Packages/
    http://wuarchive.wustl.edu/pub/linux/distributions/fedora/updates/8/x86_64/

    Other packages some people may need include xorg-x11-drv-void, xorg-x11-drv-vesa, xorg-x11-drv-evdev, xorg-x11-drv-fbdev, xorg-x11-drv-vmmouse, and xorg-x11-xkb-utils.

  2. Install, with
    rpm -Uvh --oldpackage --replacefiles --replacepkgs --nodeps xorg*
    
  3. Get the nvidia driver from Livna:
    yum install xorg-x11-drv-nvidia-173.08-1.lvn9.x86_64
    

    NOTE: that exact version is important. The 173.08-2-lv9.x86_64 package (note the -2 instead of the -1) was found to fail on our workstations. If you do not see the -1 version as an option and do not want to download and install it by hand, try installing the “yum-allowdowngrade” package and then seeing if the older version shows up.
    xorg-x11-drv-nvidia will also want to install the following, as dependencies:

    kmod-nvidia, xorg-x11-drv-nvidia-libs, akmod-nvidia, livna-config-display, kmodtool, kernel-devel, akmods

    Make sure the kmod-nvidia, xorg-x11-drv-nvidia-libs, and akmod-nvidia versions match the xorg-x11-drv-nvidia version (-1 instead of -2). The kernel-devel rpm that is installed will typically be the newest one, which will not match a non-updated Fedora 9 kernel. Now would be a good time to do a

    yum update kernel*

    as well.

  4. Finally, add the line:
    exclude=xorg-x11*
    

    to the end of /etc/yum.conf so that the next time you upgrade anything it doesn’t replace all the F8 files with F9 ones.

  5. Reboot; the nvidia driver should get built during the boot sequence. Might require two reboots for this, or manually restarting
    service nvidia restart
    

emacs and Firefox 3 tweaks

There are a few other tweaks a fresh install of F9 needs. In particular, emacs defaults to courer 12, which is a bit larger than needed. To have it default to courier 10, add the following to your .emacs file:

(custom-set-faces
  ;; custom-set-faces was added by Custom.
  ;; If you edit it by hand, you could mess it up, so be careful.
  ;; Your init file should contain only one such instance.
  ;; If there is more than one, they won't work right.
 '(default ((t (:stipple nil :background "#ffffff" :foreground "#000000" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :height 122 :width normal :family "adobe-courier")))))

Also, the Firefox 3 beta 5 address bar may be particularly ugly to people accusomted to the cleaner Firefox 2 interface. Much of the previous style can be restored by modifying some settings in “about:config”:

  1. In the address bar, type “about:config” and hit enter.
  2. Accept the “void your warranty” warning
  3. Filter for “urlbar”
  4. Double click on browser.urlbar.autoFill
  5. Double click on browser.urlbar.matchOnlyTyped
  6. Double click on browser.urlbar.maxRichResults and changed the number from 12 to something more tolerable, like 2 or 3.

Now the address bar should behave a little more like Firefox 2.


It’s the little things.

April 1, 2008

The Usenet, once the dominant form of internet communication, has been rendered largely irrelevant by the World Wide Web. Yet, it can still be a great source of information: some technical groups (such as comp.lang.fortran) have an impressively high signal to noise ratio.

It was a search for esoteric Emacs knowledge that sent me to gnu.emacs.help. Emacs has a nice syntax highlighting ability which makes source code more readable, by associating color with functionality. I wanted intrinsic procedures such as “mod” or “exp” to highlight in a different color than executable constructs such as “if … then” statements. Fortran mode in Emacs does this by default, but F90 mode does not. Here’s an example:

Fortran mode

if (mod(k,10).eq.0) then
things to do
endif

F90 mode

if (mod(k,10).eq.0) then
things to do
endif

It’s a small difference, but in complicated code with many different procedures or constructs, it makes life much easier on my eyes. It wasn’t clear from the Emacs source how to make F90 mode match Fortran mode.

Luckily, Glenn Morris, the maintainer of the fortran.el and f90.el filters, reads gnu.emacs.help and was able to give me a fix:

I don’t really know why it is like it is, but it is. Anyway, add to~/.emacs:

(eval-after-load "f90"
  '(progn
     (setq f90-font-lock-keywords-3
      (append f90-font-lock-keywords-2
          (list
           f90-keywords-level-3-re
           f90-operators-re
           (list f90-procedures-re '(1 font-lock-builtin-face keep))
           "\\"))
      f90-font-lock-keywords-4 (append f90-font-lock-keywords-3
          (list f90-hpf-keywords-re)))))

It works — my Fortran 90 looks good again. So many parentheses! The recently deceased Arthur C. Clarke may have imagined that most people would categorize Emacs Lisp scripting as magic.