Bartok is a custom built dual processor server with an inexpensive 20GB IDE hard disk (for Debian GNU/Linux install) and a 136GB SCSI RAID disk (made up of 4 disks).
Debian GNU/Linux 2.2r2 was originally installed (kernel-image-2.2.18pre21) from CD-ROM (4 December 2001). The SCSI RAID disk (Adaptec 2100s) was not supported by the installed kernel thus Debian was first installed on the IDE drive. A driver for the SCSI RAID was then obtained from Adaptec (dpt_i2o.o) and installed after Debian was upgraded to unstable and running with kernel-image-2.2.19. A compile of kernel-source-2.4.16 produced a dpt_i2o.o suitable for use with kernel-image-2.4.16-686-smp. On 26 March 2003 a standard kernel-image-2.4.20-686-smp was installed to provide up to date support for USB, adding a . This was upgraded to kernel-image-2.4.25-1-686-smp on 23 March 2004. The SMP kernels supports the dual processors and 4GB high memory.
Originally there were occasional I/O errors with the dpt_i2o driver for the Adaptec. Others (e.g., Ian Millsom) reported that the driver in the earlier 2.4 kernels were buggy and indeed Ian had a 2.2.19pre17 kernel patched for the driver. However, running under kernel versions 2.4.16, 2.4.20, and 2.4.25 there have been no further problems. (The 2.4.16 kernel was compiled with options p3, high memory, and SMP and the later kernels were standard Debian kernels with SMP and HIMEM).
Original partitioning was 4GB for
/ and the rest for
/home. After a couple of years of use the 4GB for
became inadequate and things like
/usr/share started moving
to other places!
A new install was performed (24 March 2004) with the beta3 Debian Installer booting from CD-ROM. A default boot froze very quickly just after:
ENABLING IO-APIC IRQs Setting 2 in the phys_id_present_map ...changing IO-APIC physical APIC ID to 2 ... ok. ..TIMER: vector=0x31 pin1=2 pin2=0
Booting by entering
linux noapic on the
succeeded. Automatic partition of the IDE disk was then accepted.
When rebooting with Grub the boot command had to be edited to add
noapic to the end of the kernel line.
|CPU:||Dual Intel Pentium III (Coppermine) 1GHz|
|Bogomips:||2 x 2005|
|Network:||Integrated Intel PRO/100+ Intel 82559 (eepro1000)|
|140GB Adaptec 2100s RAID. 4 x Seegate Cheetah 10K 36GB|
|Video:||NVidia Riva Ultra 64|
|CDRW:||Mitsubishi CDRW 32x12x8|
|CDROM:||ATAPI-CD ROM-DRIVE-52MAX, ATAPI CD/DVD-ROM drive|
The IDE disk was originally partitioned into three: one for swap (2GB
/dev/hda3), one for
/ (4GB as /dev/hda1) and the
/home (14GB as
/dev/hda2. After a year or
two of use the
/ partition was full! Generally, use the whole
/ as is recommended by the Debian Installer.
The second install (23 March 2004) followed the standard path, but
The Adaptec PCI Ultra 160 Single Channel RAID Controller, also known as the Adaptec 2100s, was an interesting challenge as drivers for this were not available on the install media. Thus initially it was not possible to install Linux. The initial boot with Debian GNU/Linx V2.2r2 CD-ROM failed because the disks were not found!
After the Configure Keyboard step in the Debian install process there is an opportunity to Preload Essential Modules from Floppy. This allows the loading of modules that are required for particular devices that are otherwise not provided in the kernel.
So the first attempt at installing Linux obtained the appropriate
module/driver from Adaptec by downloading
from <linux.adaptec.com>. This gzipped tape archive generates
$ tar zxvf dptdriver-2.4.tgz $ cd usr/adaptec/i2o_driver/
The drivers for various versions of the kernel are then contained in dpt_i2o_prebuilt.cgz. This is a gzipped cpio archive. To extract the archive:
$ mkdir tmp $ cd tmp $ gunzip < ../dpt_i2o_prebuilt.cgz | cpio --extract
The kernel installed was 2.2.18pre21 but there is not a corresponding dpt_i2o. The 2.2.18 version had undefined symbols and the machine froze. The 2.2.19 version worked. This was then copied onto a floppy for Debian to load:
$ mount /floppy $ mkdir /floppy/boot $ cp dpt_i2o.2.2.19 /floppy/boot/dpt_i2o.o $ umount /floppy
dpt_i2o is installed you can create and initialise the
disk partitions on the RAID:
# cfdisk /dev/sda (to create a single partition perhaps) # mke2fs /dev/sda1
Later when configuring drivers and devices you can also add modules
from floppy, but they must now be in
/floppy/lib/modules/scsi/dpt_i2o.o, for example.
Now we come unstuck because we create a boot floppy yet there is no way to install the RAID driver on the kernel on this boot floppy, so next reboot the RAID is no longer available and the boot hangs with a Kernel Panic and a message about block-major-8 and not being able to mount the root fs.
It would appear that a sensible approach to building a computer with a
SCSI RAID is to install an IDE drive onto which Debian GNU/Linux is
installed. The appropriate driver for the SCIS RAID is then installed
after Debian is functioning. The driver for the SCSI RAID is
dpt_i2o.o, obtained from the
at <linux.adaptec.com>. The correct one (for kernel 2.2.19) was
copied to the appropriate modules folder after upgrading the kernel to
# mount -r /dev/fd0 /floppy # cp /floppy/boot/dpt_i2o.o /lib/modules/2.2.19/scsi # umount /floppy # depmod -a # insmod dpt_i2o
dpt_i2o.o is listed in
/lib/modules/2.2.19/modules.dep (thanks to the
depmod command) and the RAID disk is accessible. There
were some unresolved symbols but these seem not to affect the drive.
(The choice of kernel 2.2.19 was dictated by the available
kernel-images in Debian and the available drivers for specific kernels
To mount the drive add the following to
/dev/sda1 /raid ext2 defaults,errors=remount-ro 0 0
/raid and mount the RAID disk:
# mkdir /raid # mount /raid
Also add dpt_i2o to
/etc/modules so that the RAID is available
when the machine boots.
Eventually the standard package kernel-image-2.4.20-1-686-smp was installed, providing both SMP and HIMEM support.
Previous kernel compiles are outlined here.
# wajig install bin86 kernel-package kernel-source-2.4.16 debconf-utils # cd /usr/src # tar jxvf kernel-source-2.2.16.tar.bz2 # cd kernel-source-2.2.16 # cp /boot/config-2.4.16-586 .config # make menuconfig Processor Type and Features CONFIG_MPENTIUMIII=y CONFIG_HIGHMEM4G=y (originally off) CONFIG_SMP=y (already set) # make-kpkg clean # make-kpkg --append-to-version -p3hmsmp --revision dha01 --initrd kernel_image
The aim was to have:
dpt_i2oprovided by the kernel (2.4.14 on with CONFIG_SCSI_DPT_I2O=m)
- support for 2 CPUs (CONFIG_SMP=y)
- support over 1GB memory (CONFIG_HIGHMEM4G=y)
With the new kernels the initrd (initial ram disk) is the
default, so it is worth moving to this. It requires changes to your
/etc/lilo.conf to include
initrd lines. For
image=/boot/vmlinuz-2.4.16-p3hmsmp label=2.4.16-p3hmsmp read-only initrd=/boot/initrd.img-2.4.16-p3hmsmp append="noapic"
Note also that with the dual processor card in this machine (ASUS
noapic option was required, otherwise there is
a problem with running out of IRQs and the boot hangs after the
ENABLING IO-APIC IRQs Setting 2 in the phys_id_present_map ...changing IO-APIC physical ID to 2 ... ok. ..TIMER: vector=0x31 pin1=2 pin2=0
An alternative to turning APIC off is to free up the IRQs used by the
PCI IDE devices. This is only useful if either the primary or
secondary IDE is not being used (for IDE hard disks and IDE CD-ROM).
To turn it off the secondary or both IDEs in the BIOS setup, go to
Onboard PCI IDE and set it to
Primary or Disabled.
Your donation will support ongoing availability and give you access to the PDF version of this book. Desktop Survival Guides include Data Science, GNU/Linux, and MLHub. Books available on Amazon include Data Mining with Rattle and Essentials of Data Science. Popular open source software includes rattle, wajig, and mlhub. Hosted by Togaware, a pioneer of free and open source software since 1984. Copyright © 1995-2022 Graham.Williams@togaware.com Creative Commons Attribution-ShareAlike 4.0