Linux for Computational Science Software Development
Maintained by David E. Bernholdt, <bernholdtde@ornl.gov>
$Date: 2001/03/21 16:16:33 $
Disclaimer: This information is provided as-is.
I make absolutely no guarantees about its accuracy or suitablility.
Note: In the Linux world, URLs change frequently and I don't have
enough time to keep up with all of the changes. If you find a link
on this page that is not working, please accept my apologies and try checking
one of the myriad search engines available these days using the title I
give. Thanks.
Contents
Background
My foray into Linux originally
began in about 1995. I started traveling a lot more for work,
and also wanted to be able to telecommute more easily. I am not
a big fan of Windows, and am very comfortable in a unix environment --
especially for software development. So I installed Linux on my
laptop and my home desktop machine, and used both installations
extensively. The need to consolidate a web service from several
different (shared) servers to a single box I could personally afford
lead to another Linux installation. And most recently, when I
moved to Oak Ridge National Laboratory, I decided to go with a Linux
system as my primary desktop as well as putting it on my new
laptop.
I think Linux, together with the Open Source concept and the
general ethos of freely available software has been a tremendous boon
to the computing world. The quality and usability of the
majority of free software I have used rivals anything I've encountered
from commercial vendors.
There's nothing terribly novel about my installations, but since I
have from time to time turned to the 'net for help with some
problem/question I was having and found people quite helpful, I
thought I might make a small contribution to the public good by
providing pointers to info I've found helpful and some notes on things
that weren't well documented. I try to catalog the major
hardware on which I'm running Linux because when I'm purchasing
something, it gives me a lot more confident if I can look on the 'net
and that others are already using it under Linux. As Linux evolves
and improves, this is less and less an issue, but I still check. I
hope you find some of it useful.
Choice of Linux Distributions
I started out with Slackware,
3.1 and it served me well for several years. I never updated my
installations, so when I began to realize that my setup was becoming
too old to take advantage of some of the newest software, installing
from scratch was clearly the way to go (with an additional push from
the fact that I was replacing disk drives on both my laptop and home
machines). This time around it seemed pretty clear that RedHat was among the most widely used
and mature distributions. In addition, it was being used by
others at NPAC and our Systems Group was considering formal support
for it within the Center.
So I installed RedHat 6.0 and was very impressed by how much easier
it was to install and configure than my first Linux installation in
1996. In fact, having just installed Windows98 on my dekstop,
that RedHat 6.0 was very nearly as easy to install and configure!
Since then, I've been making more of an effort to keep my
installations reasonably current, and I've added a number of new
machines to the stable. At the moment, RedHat 7.2 is the flavor
of the day.
Hardware Environment(s)
I'm running Linux on a bunch of machines these days...
Hardware highlights...
-
Purchased in 2001 with RedHat 7.1 pre-installed
-
2 x 1.5 GHz Xeon
-
512 MB RAM
-
2x40 GB hard disk
-
1/4" Travan-5 tape drive (SCSI)
- Built-in Intel AC'97 sound card
-
nVidia GeForce2 GTS video card
-
Integrated 3Com 3C905C Fast EtherLink XL 10/100 PCI card
Even though I planned to re-install this machine with RH7.2 as soon as
I got it, I decided to order the pre-loaded Linux version to show Dell
that their customers are interested. It was probably a mistake. The
configurations available with Linux were much more constrained than
those available with Windows, even though I'm sure that in almost all
cases, the hardware would have worked. For example: I had to order
the tape drive separately and install it myself; they wouldn't ship a
CD-RW/DVD combo unit with the Linux version; they wouldn't ship a
two-headed video display card (something I've been interested in
experimenting with). Oh well, I've got it and it works, and I'm happy
with the machine (though still annoyed at Dell). I did install RH 7.2
as soon as I got it. Then I re-installed Dell's RPMs for the video
card.
Hardware highlights...
-
Purchased in 2001 with Windows NT pre-installed
-
1.3 GHz Pentium 4
-
1 GB RAM
-
? GB IDE hard disk
- Dell PERC 3\DC SCSI RAID controller
- Dell PowerVault 2115 w/ 6 x 18 GB RAID-5 + 1 x 36 GB solo SCSI
disks
- Adaptec 7892A SCSI controller
-
HP SureStore DAT 40x6 SCSI tape unit w/ built-in changer
- Built-in ? sound card
-
nVidia GeForce2 GTS video card
-
Integrated 3Com 3C905C Fast EtherLink XL 10/100 PCI card
- APC Smart-UPS 1400 uninterruptible power supply
Being unfamiliar with setting up RAIDs, we first went through
everything in Windows to make sure the hardware was all functioning.
Then we did it in Linux. Everything worked fine. Well, almost
everything. We had a lot of trouble getting the changer function of
the DAT drive to be recognized by the SCSI subsystem. After much
wailing, email with Dell engineers, and 'net research, we determined
that the PERC RAID controller was intended only for use with disks and
it couldn't deal with a second logical device on the same physical
unit. So we purchased and installed a separate SCSI card for the tape
drive. We finally got this to work, but only by forcibly adding the
changer to the SCSI configuration -- it is not picked up by the
boot-time probe of the SCSI bus. But it does work. The solo 36 GB
drive came from a colleague who had inadvertently ordered the drive
with the wrong connector and found it easier to donate it to us than
go through ours and the vendor's merchanside return procedures. We
plugged it into the PowerVault, configured it as a separate RAID group
(the PERC controller can handle 2, I believe), and it just
worked. Thanks Bill!
Hardware highlights...
-
Purchased in 2000 with Windows 98 pre-installed
-
500 MHz Pentium III
-
128 MB RAM
-
13.3" TFT LCD panel display driven by NeoMagic MagicGraph 256AV (1024x768)
-
12 GB hard disk
-
Built-in V.90 Lucent WinModem
-
Built-in Cirrus Logic CS 4614/22/24 CrystalClear SoundFusion
Audio Accelerator
-
IrDA & USB ports
-
External floppy drive (can be installed in UltraBase)
-
CD-ROM drive in UltraBase
-
Megahertz XJ10BC PCMCIA ethernet card
-
Cisco Aironet 340 PCMCIA wireless LAN (802.11b) card
The video card was recognized by the RedHat 6.2 installer, but there
were problems with the resulting setup. Fortunately,
Xconfigurator got it working right away. The modem is one that Lucent
has released a (binary-only) Linux
driver for. I downloaded and installed it, and it seems
to work fine, though I have not tested it extensively. The
sound card is supported by ALSA, which is pretty easy to
configure and install. The toughest thing to figure out is what
to add to your /etc/conf.modules. This is what
I used: # ALSA native device support
alias char-major-116 snd
options snd
snd_major=116 snd_cards_limit=1
alias snd-card-0
snd-card-cs461x
# OSS/Free setup
alias char-major-14 soundcore
alias sound-slot-0
snd-card-0
alias sound-service-0-0 snd-mixer-oss
alias sound-service-0-1 snd-seq-oss
alias
sound-service-0-3 snd-pcm-oss
alias sound-service-0-8
snd-seq-oss
alias sound-service-0-12 snd-pcm-oss
One thing I dislike about RedHat is that they've broken the
simple and very effective "schemes" system in the pcmcia-cs
package. Strangely, I have yet to find anything on the web
that deals with how to effectively use RedHat's normal mechanisms to
deal with a highly network-mobile system. So I quickly went for
the solution of installing the standard pcmcia-cs distribution to
replace RedHat's version. It so happens that the easiest way to
get the drivers for
the wireless LAN card was also to get the latest pcmcia-cs
distribution, adding to the motivation. Initially I had
lots of problems getting things to work properly with different
schemes -- if I even tried to ping the IP address I had
assigned to the interface, it would not work. After some
experimentation, it seems like any IP address you use in a
network scheme must appear in /etc/hosts. I don't yet
understand why this should be, but from practical experience it
works. These days I'm working with some packages that expect to
be able to use rsh, and certain things have to be reconfigured if the
hosts IP or name changes. To try to combat this, I've assigned my
usual work IP address and name to the dummy0 device (following
advice in the help pages for that section of Linuxconf -- advice
I wish was expanded upon somewhere). This seems to help in
some ways, but is not the whole answer. I'm still working on
it. Incidentally, the Cisco Aironet 340 wireless card is
apparently the same as the Aironet 4800B, which is what you may see
some of the drivers & related web pages refer to.
I have not tried to get the IrDA or USB ports working
yet. I also need to understand what I can and can't do with
APM on this box. Other web pages on the 570 and other
ThinkPads suggest that I should probably tweak the kernel
configuration a bit and recompile. For the time being
I have avoided any possible problems by simply not even trying to
suspend or hibernate the system -- I just shut it down and boot
it up as required. One of these days...
Hardware highlights...
-
Purchased in 2000 with Windows NT pre-installed
-
2x800 MHz Pentium III
-
512 MB RAM
-
2x18 GB hard disk
-
1/4" Travan-5 tape drive (SCSI)
-
Built-in Cirrus Logic CS 4614/22/24 CrystalClear SoundFusion
Audio Accelerator
-
Diamond Viper 770D video card
-
Integrated 3Com 3C920 Fast EtherLink XL 10/100 PCI card
This pretty much "just worked" when I originally installed RH6.2, and
when I installed RH 7.2 (clean install, not upgrade), it was even
smoother. One interesting feature is that the video card identifies
itself as an nVidia Riva TnT2 rather than a Diamond Viper. I haven't
actually cracked the case to look at the card, but I'm inclined to
think that Dell shipped this machine with the wrong card (their own
configuration documents list the Viper) and I never noticed. The
nVidia driver seems to work fine, so I guess I don't care too much.
Old No-Name Machine (csir.org server)
Hardware highlights...
-
133 MHz Pentium
-
128 MB RAM
-
~2 GB hard disk
-
ethernet card
This is a machine NPAC had "lying around" (it was too old and feeble for
anyone to really want it) which I setup as the server for a small web information
service I run. I wiped the previous Windows NT installation and installed
RedHat 6.2 as the sole operating system. It all just works, and I
don't have to worry about it much. When I left Syracuse, I purchased
it and brought it with me.
Hardware highlights...
-
Purchased in 1996 with Windows95 pre-installed
-
120 MHz Pentium
-
800x600 TFT LED panel driven by C&T 65550
-
Built-in V.34 modem
-
Interchangable 3.5" floppy and CD-ROM drives; floppy also works when installed
in a separate case, which is plugged into an external connector on the
500CDT.
-
Primary hard disk is 1.38 GB
-
Megahertz XJ10BC PCMCIA ethernet card
The original hard disk on this machine was only 1.38 GB, too small
to partition for both Windows and Linux and have any room to do work in
either. So I bought a second disk and did separate installations.
Physically swapping drives is a bit more bother than dual boot, but the
extra space has been worth it. When I upgraded to 4 GB disks, I maintained
the two disk setup.
Slackware 3.0 successfully installed from the CD-ROM accompanying the
aforementioned book. But as I already knew, Slackware 3.1 was required
to properly support many features of the 500 CDT (XFree86 3.2 for the display,
and a current version of PCMCIA support being the main things). The 3.0
installation with the addition of pcmcia 2.9, allowed me to get the ethernet
going well enough to allow downloading the Slackware 3.1 distribution via
ethernet directly onto my hard disk.
I couldn't get the built-in modem to work until I paid some attention
to IRQ assignments. According to the BIOS setup program, my machine was
setup as follows (presumably the factory defaults):
-
Serial port (COM1 = /dev/cua0): IRQ 4
-
Modem (COM2 = /dev/cua1): IRQ 3
-
Sound board: IRQ 5
-
Parallel port: IRQ 7
Once I reserved all of these IRQs in /etc/pcmcia/config.opt, my ethernet
PCMCIA card ended up on IRQ 9 instead of IRQ 3 and both it and the modem
were happy.
Useful resources for this installation:
-
Linux on Toshiba Tecra
Series Laptops. Just about everything that applies to the 7xx models
also applies to the 500CDT. If you have a Toshiba Tecra, you definitely
need this web site!
-
apmd-2.4 changes to
prevent Ethernet hangup. It is not clear to me if this is limited to
the Toshiba or more general, but a lot of people (including me) have observed
the system to hang when trying to do a resume. This version of apmd arranges
for the PCMCIA cards to be deconfigured and powered down before a suspend,
then restored following a resume. I think that more recent distributions
of apmd may well include these patches.
-
Linux
PCMCIA Information Page , especially the PCMCIA HOWTO, section
4.2 "How can I have separate device setups for home and work?"
This works great, and I have used it frequently in my travels.
-
The Linux
Laptop Home Page. Includes pointers to power management information,
etc.
-
X-Windows &
Linux on Notebook Computers. I looked at this stuff when I was choosing
a laptop, but found enough information elsewhere when it came time to setup
mine.
This machine upgraded to RH 6.2 with little problem, but when I left Syracuse,
I bought this machine from them to keep at home and use as my primary Windows
box so I didn't have to keep switching OSes on the other one. Consequently,
the Linux installation on this one doesn't get much exercise, and I probably
won't upgrade it any further.
Gateway2000 P5-133 (retired home desktop)
Hardware highlights...
-
Purchased in 1996 with Windows 3.1 pre-installed
-
133 MHz Pentium
-
128 MB RAM
-
ATI CT Mach64 (2 MB DRAM) (original)
-
USR ?model? 56k V.90 modem (replaced original Gateway/USR 28.8k)
-
Sound Blaster 16 sound card (original)
-
Western Digital Caviar 31600 1.6 GB 11 ms EIDE hard disk (original)
-
Seagate 8 GB EIDE hard disk (added)
-
?model? ?speed?x CD-ROM (replaced original Wearnes CDD-620)
-
3.5" floppy
-
3Com 3C509 PCI 100-base-T ethernet adapter
This machine used to have Windows 3.11 and Slackware 3.1 on it. At
about the same time I decided to upgrade to Windows98 and RedHat6.0, my
main disk (1.6 GB) started going south. So I bought a new, larger
disk to hold both new installations and installed them from scratch.
All the instructions tell you you should install Windows first, then
Linux on a dual-boot machine. But if I devoted half of the disk to
Windows, I wanted to make sure I would still be able to boot Linux too
(BIOS will only look at the first 1024 cylinders for boot sectors).
So before I started the Windows installation, I booted Linux from floppy
and created a 24 MB Linux partition as the very first one on the drive
(for RedHat's /boot). This insured that both the Linux and
Windows master boot records would appear early enough in the disk to be
accessible to BIOS. I'm not entirely sure if this is absolutely necessary,
but it works.
This machine is now running RedHat 6.2 It installed easily, straight
out of the box, and I think everything is working fine. It does masquerading
for my home network, which includes the Toshiba laptop, an ethernet print
server feeding two printers, my wife's old laptop, and sometimes one or
both of our work laptops.
Other Linux-Related Information...
-
Instructions on creating a custom boot disk
for Slackware 3.1 (may or may not apply to other distributions & releases)
-
I used to use AFS (Andrew File System)
on Linux (Slackware 3.1) to access the CVS repository for the NWChem software
package which I contribute to. This worked very well. See the
Linux
AFS FAQ for more information. More recently my colleagues at
PNNL have been able to arrange things so that outsiders can access the
CVS repository using CVS's client-server capability with an SSH connection
between them. For my application, this is faster than using AFS,
and easier to use so I've pretty much stopped using AFS.
-
A few years ago I changed to a new ISP. While my Windows 95/98 machines
were able to login easily, every time I tried it under Linux I would be
disconnected a few seconds after making the PPP connection. It took
me a while to figure out that this was my first exposure to PAP authentication.
Once I told PPP to use PAP everything worked like a charm (easily done
with linuxconf). Here are some indications your ISP is using PAP:
-
Standard Linux PPP connections are disconnected almost immediately, while
Windows connections succeed.
-
Your ISP never sends a plain text "login" prompt (check with minicom)
-
In Windows, turn on logging on the "Network--Dial-Up Adapter" control panel.
After making a connection, look at the file C:\Windows/ppplog.txt and see
it if doing PAP authentication (Windows DUN automatically tries this first,
then falls back to the traditional prompted login/password approach.)
Chemistry Software for
Linux
Linux-Based Compute Servers for Computational
Chemistry
I am, admittedly, most interested in Linux as a software development platform,
but many people are using Linux PCs for chemistry applications. Here
are some links I've come across to interesting uses of Linux systems in
chemistry, including Beowulf systems ("supercomputers" built from clusters
of Linux boxes) and sites that are developing these ideas for application
to chemistry.