Linux: Fedora 8 on a Dell Inspiron 530

Contents

Introduction

Note: This document has become partially obsolete due to the migration to Fedora 11.

This page contains a detailed description of the installation and customisation of Fedora 8 ("F8") on a Dell Inspiron 530 desktop computer. Since I have installed Fedora on various computers and a number of times now, this document summarises the main steps. - Please note that this document has been "anonymised" in a few places; in particular public IP addresses have been replaced by XXX or YYY.

Hardware

My Dell Inspiron 530 Desktop was delivered in early 2008. At that time, it was the "lightest" version that was available in the minitower case. The machine is equipped with an Intel E4500 Core Duo 2.20 GHz processor with 800 MHz FSB, 3 GB RAM, 320 GB Seagate ST3320620AS harddisk (SATA 3.0 Gb/s, cache 16 MBytes, 7200 rpm), a DVD burner HL-DT-ST Model DVD+-RW GSA-H73N (HLDS Inc.), a Teac 19-in-1 media card reader and Intel 3100 onboard graphics. And since I frequently need to display several windows side by side, I went for the Dell E228WFP 22" widescreen display.

First impressions

The Inspiron comes in a friendly-coloured, white tower housing with aluminium-coloured front panel. In contrast to the Dell business PCs such as the Optiplex, the Inspiron is not built for quick replacement of parts, so you still need a screwdriver to add a card or other parts. However, its inside is rather roomy. Four USB connectors on the back allow for keyboard, mouse, USB scanner and the backup harddisk - all else has to be connected via the media bay at the front.

A nice feature is the relatively low power consumption: When logged into X-Windows and idle, the computer consumes about 50 W and the flatscreen 27 W. In suspend mode this is reduced to 2.2 and 0.5 W, respectively, and if the machine is switched off the consumption of the PC goes down to 1.5 W.

This is a rather silent machine - no comparison to my previously used PC, a rather noisy Dell Optiplex 240. Yet ... it is still not as silent as I would like, so I will probably put the harddisk on silentblocks.

Caveats

The Motherboard in the minitower housing provides only four slots for extension cards: two conventional PCI and two PCI Express. With an additional network card (this machine is the router for our home network) and an Adaptec SCSI card (for the tape drive), the two "old-style" PCI slots are already taken.

The machine does not have any legacy printer or serial ports. I knew this beforehand, so I equipped my good old HP LaserJet 5MP printer (which does not have USB) with a second-hand JetDirect print server. An additional advantage of this configuration is that the printer can now be located anywhere in the house, far away from the computer - and without that ugly thick printer cable.

As for the serial ports, I'm missing this possibility indeed a bit since I use a conventional modem for faxing. However, I do not need to send faxes often - and then, I can use an USB-to-serial adapter.

Linux Installation and Setup

Microsoft Windows

The computer was delivered with a license for Microsoft Windows Vista Home Premium. Since the terms and conditions of the license agreement were not acceptable for me, I did not accept it. Actually, there is no "decline" button, so all that you can do is to power down the computer "the hard way".

Of course I requested a reimbursement of the Windows license fee from Dell. It took several months, at least five different calls and letters (in three different languages) to various departments, but finally Dell insisted that I could not return the software separately since it was considered part of the delivery. Draw your own conclusions ...

Then I installed Linux.

Fedora 32-bit or 64-bit?

At the time of this writing, I have two Linux distributions that I like a lot: For standalone computers and laptops, I use Ubuntu Linux. For "more complicated" installations and lots of customisation, I use Fedora Linux with the KDE desktop.

Since the machine was going to be my primary computer and router for the home network, I installed a second network card and booted from the Fedora 64-bit Installation DVD. Installing FC8 64bit did not work seamlessly. Both the x86_64 Install DVD and the x86_64 KDE Live DVD had problems upon boot, leading to, uhm, "encouraging" messages like this is not a software problem! I had to boot with acpi=off until the SATA disk was recognised correctly and even after a full install I still ran into minor problems.

Since this is my "production system", I decided not to take risks and switched back to the 32-bit version. From that point onwards, everything went smoothly.

Installing Fedora 8

The actual installation was performed as described below. It may be that the following text bores you since the installation is so easy: apart from the router setup, there is almost no particular tweaking to be done. ;-)

Boot the 32-bit KDE live system. I prefer this one over the DVD version, since it is a smaller download, it fits on a CD, and it has already most applications that I need. The "fine-tuning" is done below.

Once the system is up, select "installation to harddisk".

Among others, you will be asked to partition the harddisk. Switching from a 40-GB Harddisk to 320 GB gives quite a new feeling about "disk space", so I partitioned as shown in the list below (update 2009-02: The table now reflects a changed partition size and arrangement, which turned out to be more practical. The Linux system partitions are still huge and could be half of the indicated size ;-)

Caveat: Do not format any vfat partitions at this stage. I believe that the formatter for vfat is missing on the live CD, thus the installation will abort at this point. Wait until the base install is completed (see below), then format these partitions.

Partition Type Filesystem Label mount point Comment
/dev/sda1 primary vfat DellUtility /mnt/dell Dell Utilities from factory install, left unchanged
/dev/sda2 primary 20 GB ext3 F8 / This is the root filesystem of F8 32-bit.
/dev/sda3 primary 20 GB ext3 F8-64 /mnt/F8-64 This was Fedora 8 64-bit. Will be used when updating the system
/dev/sda4 extended       This holds the following partitions.
/dev/sda5 logical 100 GB ext3 home /home This is huge, but I frequently work on huge data files
/dev/sda6 logical 100 GB ext3 share /mnt/share Local NFS export. Music, images, downloaded stuff, etc
/dev/sda7 logical 5 GB swap swap swap Swap space
/dev/sda8 logical 60 GB ext3 vbox /mnt/vbox VirtualBox files

Once the base system is installed, I modify the package selections to suit my needs. While I am very much in favour of Fedora's policy of using only Open Source Software, the real world still needs some workarounds: I cannot watch videos on DVD, or listen to music files in the car without using some proprietary or otherwise "sensitive" code. Most of this material is available from rpm.livna.org, so enable the LIVNA repository:

rpm -ivh http://rpm.livna.org/livna-release-8.rpm
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-livna

In the next step, clean up and removed un-used stuff:

yum remove koffice* kaffeine-libs kaffeine kdeaccessibility kdegames xmms xmms-mp3 xmms-faad2 totem

... then update the complete system and install more packages:

yum install vim wget
yum update                                                      # this may take a while! 
yum install unison gftp bluefish firefox tidy  \                # web-related stuff
bitstream-vera-fonts liberation-fonts \                         # fonts
java-*-icedtea java-*-icedtea-plugin \                          # free Java
compat-libstdc++-33 compat-libstdc++-296 \                      # backward compatitibility libs
ImageMagick gimp xfig perl-Image-ExifTool xsane-gimp gthumb \   # image manipulation and scanning
lyx tetex-tex4ht xpdf glabels gnuplot gnumeric mc \             # aka productivity
easytag jpilot gpsbabel perl-XML-DOM \                          # Palm-, gps- and XML-related
gutenprint-cups gutenprint-foomatic gutenprint-plugin           # printer filters
bogofilter kdirstat yum-utils aspell-de aspell-fr subversion \  # Utilities
openoffice.org-writer openoffice.org-calc openoffice.org-impress openoffice.org-graphicfilter \
openoffice.org-math openoffice.org-langpack-fr openoffice.org-langpack-de  # guess what

If the system is used as primary server in our home network, I provide a DHCP server, and a local news server (for the detailed setup, see below):

yum install leafnode dhcp

Backup is done to tape (using my backup2tape script), so:

yum install star mt-st sharutils

Now for the multimedia stuff. I could not get mplayer to play DVDs, so I reverted to totem, which anyway worked nicely for me since Fedora Core 6:

yum remove mplayer mplayer-gui mplayerplug-in mencoder
yum install amarok amarok-extras-nonfree gstreamer-plugins-ugly gstreamer-ffmpeg vorbis-tools\
xine-lib-extras-nonfree lame totem-xine totem-xine-plparser mozilla-totem-xine \
libdvdcss libdvdnav xvidcore transcode madplay k3b-extras-nonfree mozilla-vlc

Codecs are from the mplayer repositories (of course, the date code may change):

wget http://www.mplayerhq.hu/MPlayer/releases/codecs/all-20071007.tar.bz2
mkdir -p /usr/lib/codecs
tar -jxvf all-20071007.tar.bz2 --strip-components 1 -C /usr/lib/codecs/

Using Fedora's "Install Packages" software, I deselect Games and install Development Tools.

Fine-tuning Fedora

While the system is updating (or afterwards), I edit some of the system files:

In the bootloader configuration file /boot/grub/grub.conf, I insert vga=791 and remove the splash screen and rhgb stuff.

In /etc/rsyslog.conf, the most important events shall be logged to console 9 and 10:

*.info;mail.none;cron.none          /dev/tty9
kern.warn,*.err;authpriv.none      /dev/tty10

Besides using the firewall, I use the /etc/hosts.allow and /etc/hosts.deny pair to restrict access to the system. Access will be granted when a (daemon,client) pair matches an entry in the /etc/hosts.allow file. The file allows login on all services via the local network and ssh from my workplace:

ALL: LOCAL 192.168.XXX.
sshd: YYY.YYY.

Furthermore, access will be denied when a (daemon,client) pair matches an entry in the /etc/hosts.deny file. Since I do not allow any access to the machine except for the entries in the /etc/hosts.allow file, it is enough to state ALL: ALL (to be on the safe side and prevent logging myself out, I use ALL: ALL EXCEPT LOCAL here ;-). A special treatment is reserved for those who try ssh connects:

sshd: ALL EXCEPT LOCAL : rfc931 : spawn (/usr/sbin/safe_finger -l @%h | mail -s %d-%h root) & \
                         : twist /bin/echo "Access prohibited by system administration. Go away."
ALL: ALL EXCEPT LOCAL

Of course, sshd is set up rather restrictive; some key entries in /etc/ssh/sshd_config are:

Protocol 2
PermitRootLogin no
PermitEmptyPasswords no
PasswordAuthentication yes

Services

By default, Fedora activates a number of services that I do not need or want. For a completely installed desktop machine, the following one-liner (in bash) will deactivate all the services that I do not need:

for i in NetworkManager NetworkManagerDispatcher atd bluetooth capi dhcrelay dund \
fedora-live firstboot ip6tables irda isdn ldap lirc lisa lm_sensors mdmonitor multipathd \
netconsole netplugd nscd pand psacct rdisc rpcsvcgssd saslauthd sendmail smolt \
wpa_supplicant xfs ypbind yum-updatesd ; do
/sbin/chkconfig $i off ; done

Note that for a stationary machine, I always enable the service network (so that I can use a remote login via ssh), but disable NetworkManager and NetworkManagerDispatcher since they only activate the network connection once the user is logged in. Exactly the opposite is applied on a laptop; here I usually do not need remote login but I want the network to come up only when I log in.

Here is the list of running services:

#  /sbin/chkconfig --list|grep ":on"
ConsoleKit      0:off   1:off   2:on    3:on    4:on    5:on    6:off
acpid           0:off   1:off   2:on    3:on    4:on    5:on    6:off
anacron         0:off   1:off   2:on    3:on    4:on    5:on    6:off
auditd          0:off   1:off   2:on    3:on    4:on    5:on    6:off
avahi-daemon    0:off   1:off   2:off   3:on    4:on    5:on    6:off
cpuspeed        0:off   1:on    2:on    3:on    4:on    5:on    6:off
crond           0:off   1:off   2:on    3:on    4:on    5:on    6:off
cups            0:off   1:off   2:on    3:on    4:on    5:on    6:off
dhcpd           0:off   1:off   2:on    3:on    4:on    5:on    6:off
gpm             0:off   1:off   2:on    3:on    4:on    5:off   6:off
haldaemon       0:off   1:off   2:off   3:on    4:on    5:on    6:off
iptables        0:off   1:off   2:on    3:on    4:on    5:on    6:off
irqbalance      0:off   1:off   2:off   3:on    4:on    5:on    6:off
kudzu           0:off   1:off   2:off   3:on    4:on    5:on    6:off
messagebus      0:off   1:off   2:on    3:on    4:on    5:on    6:off
microcode_ctl   0:off   1:off   2:on    3:on    4:on    5:on    6:off
nasd            0:off   1:off   2:off   3:off   4:off   5:on    6:off
netfs           0:off   1:off   2:off   3:on    4:on    5:on    6:off
network         0:off   1:off   2:off   3:on    4:on    5:on    6:off
nfs             0:off   1:off   2:off   3:on    4:on    5:on    6:off
nfslock         0:off   1:off   2:off   3:on    4:on    5:on    6:off
ntpd            0:off   1:off   2:off   3:off   4:off   5:on    6:off
restorecond     0:off   1:off   2:on    3:on    4:on    5:on    6:off
rpcbind         0:off   1:off   2:on    3:on    4:on    5:on    6:off
rpcgssd         0:off   1:off   2:off   3:on    4:on    5:on    6:off
rpcidmapd       0:off   1:off   2:off   3:on    4:on    5:on    6:off
rsyslog         0:off   1:off   2:on    3:on    4:on    5:on    6:off
setroubleshoot  0:off   1:off   2:off   3:on    4:on    5:on    6:off
smartd          0:off   1:off   2:off   3:on    4:on    5:on    6:off
sshd            0:off   1:off   2:off   3:on    4:on    5:on    6:off
udev-post       0:off   1:off   2:off   3:on    4:on    5:on    6:off
xinetd          0:off   1:off   2:off   3:on    4:on    5:on    6:off

If you want a list of all services that are available but disabled, use the following command:

/sbin/chkconfig --list|grep ':off' | grep -v ":on"

Hardware issues

Adaptec SCSI card

After adding am Adaptec 2940 SCSI card, edit /etc/modprobe.conf and add the following line:

alias scsi_hostadapter aic7xxx

Palm Synchronisation

Since an update of Fedora Core 6, I had severe trouble syncronising with my Palm Z22. A workaround was posted on bugzilla.redhat.com:

Create a file /etc/udev/rules.d/60-pilot.rules with the following content:

BUS=="usb", SYSFS{product}=="Palm Handheld*|Handspring*",\
KERNEL=="ttyUSB*", NAME="ttyUSB%n", SYMLINK="pilot", GROUP="uucp", MODE="0666"

Create a file /etc/security/console.perms.d/60-pilot.perms with the following content:

<ttyUSB>=/dev/ttyUSB*
<console>  0660 <ttyUSB> 0660 root.uucp

Update: Something else is broken since a recent kernel update to 2.6.23 ... I have to run /sbin/modprobe visor every time before connecting the Palm to the computer :-( A potential workaround is described on Harald Hoyer's pages.

Networking

Configuring the router

The only part of the installation that was really tricky was the router. Fedora has changed the setup from FC6 to F8, and there is a new utility provided to assist you in setting up a firewall. Use this tool only for a first setup: The result is NOT suitable to setup a router, since name resolution does not work.

Start the network configuration tool system-config-network and make sure the two network cards are assigned to the correct interfaces. On my computer, eth0 came up as the on-board interface (which is connected to the internal network), and eth1 was the add-on card that connects to the cable modem. This is exactly what I wanted and I activated the binding of the interface names to the MAC addresses.

In /etc/modprobe.conf, make sure the module for both network cards are present:

alias eth0 e1000e
alias eth1 pcnet32

In /etc/sysconfig/network, verify:

NETWORKING=yes
HOSTNAME=XXX.localnet
NETWORKING_IPV6=no # I do not need nor use this

In /etc/sysctl.conf:

net.ipv4.ip_forward = 1     # this is a router!
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 1
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1

... and here is /etc/sysconfig/iptables:

*mangle
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A PREROUTING -i eth0 -j MARK --set-mark 0x9
COMMIT
*nat
:PREROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -m mark --mark 0x9 -j MASQUERADE
COMMIT
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT  # This is key for name resolution
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -i eth0 -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT

DHCP Server

If you have not already done so, install the DHCP server:

yum install dhcp

Make sure the dhcpd service is running in runlevel 3, 4 and 5. You can usually disable dhcrelay (which is, for some reason, installed together with dhcpd).

In /etc/sysconfig/dhcpd, bind the DHCP server to the internal network card:

DHCPDARGS=eth0

This is the content of the DHCP server configuration file /etc/dhcpd.conf (the actual numbers have been hidden):

authoritative;
ddns-update-style none;

log-facility local7;
default-lease-time 60000;
max-lease-time 604800;
option domain-name-servers XX.XX.XX.XX, YY.YY.YY.YY;     # my ISP's DNS
option routers             192.168.XXX.XXX;
option broadcast-address   192.168.XXX.255;

subnet 192.168.XXX.0 netmask 255.255.255.0 {
        ddns-updates on;
        range                   192.168.XXX.205 192.168.XXX.229;
        range dynamic-bootp     192.168.XXX.230 192.168.XXX.250;
        option nis-domain       "localnet";
        option domain-name      "localnet";
        use-host-decl-names     on;
}

Packages not provided in the Fedora repositories

A number of applications that I use are not available in the Fedora repositories, for various reasons. Generally, I download all such "non-packaged" software into /usr/local/src, follow the instructions in the README and INSTALL files and install into the /usr/local/ tree. - Compiling and installation of a number of packages may require the installation of development headers and tools. I recommend to install the full set of development packages.

pdftk

The PDF toolkit. It provides most of the functional properties of Adobe Acrobat but is free software, and runs under Linux. Instead of compiling from scratch, I used the Fedora 7 rpm:

wget ftp://rpmfind.net/linux/fedora/extras/development/i386/pdftk-1.41-5.fc7.i386.rpm
yum --nogpgcheck localinstall pdftk-1.41-5.fc7.i386.rpm

tex2pdf

A very useful script to create PDF documents from LyX and LaTeX files. Instructions on configuring Lyx to use tex2pdf are given in the accompanying README file.

wget http://download.berlios.de/tex2pdf/tex2pdf-3.2a.tar.gz
tar xvzf tex2pdf-3.2a.tar.gz
chmod +rx tex2pdf-3.2a/tex2pdf
cp tex2pdf-3.2a/tex2pdf /usr/local/bin/

sitecopy

A very useful tool for the synchronisation of websites, available from http://www.lyra.org/sitecopy. If you run the GUI in English only, you can omit localisation:

./configure --disable-nls

krecord

My preferred application for audio recording is good old krecord - not to be confused with the krec tool that comes by default with a recent KDE desktop. Indeed all recent distributions seem to lack krecord, so get it e.g. from linux.bytesex.org. Using a Fedora system, you will need to run the following:

yum install kdebase-devel libXmu-devel
cd /usr/lib/qt-3.3/lib/
ln -s libqt-mt.so libqt.so

The symlinking is required since otherwise you will get an error of the linker. - With that, you can build and install krecord:

cd /usr/local/src
wget http://dl.bytesex.org/releases/krecord/krecord-1.16.tar.gz
tar xvzf krecord-1.16.tar.gz
export QTDIR=/usr/lib/qt-3.3/
export KDEDIR=/usr/
make
su -c 'make install'

eagle

A PCB layout editor.

wget ftp://ftp.cadsoft.de/eagle/program/4.16r2/eagle-lin-eng-4.16r2-1.i586.rpm
yum --nogpgcheck localinstall eagle-lin-eng-4.16r2-1.i586.rpm

After installation, you have to launch eagle once as root to activate the license. Just select "run as freeware"; you do not need to create the directories.

Acrobat Reader

"The" PDF reader. Download Acrobat Reader from Adobe, then run:

yum --nogpgcheck localinstall AdobeReader_enu-8.1.1-1.i486.rpm

Flash plugin

The Flash plugin is needed to display animations on many websites. Download from the Adobe website and install are straightforward:

rpm -ivh http://linuxdownload.adobe.com/adobe-release/adobe-release-i386-1.0-1.noarch.rpm
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-adobe-linux
yum install flash-plugin libflashsupport

Google Earth

Download from the Google Earth website, then run:

yum --nogpgcheck localinstall ...

MS Core Fonts

Please refer to the instructions in the Unofficial Fedora FAQ.

Virtualisation

VirtualBox

I still use two particular applications that still are available only for Microsoft Windows systems. Although a dual-boot system is easy to set up, I see no point in rebooting the computer just for a single application, so I am using virtualisation. Essentially, this allows to run one OS, such as Microsoft Windows, as "guest" inside another OS, the "host" - in my case Fedora 8. For details, please refer to my GPS software page.

Links