Re: Installing amd64 on Adaptec 2015S (SmartRAID V) with dpt_i2o
Lennart Sorensen wrote:
On Fri, Sep 02, 2005 at 11:56:54AM -0700, Neil Gunton wrote:
Thanks Kevin, I had not seriously considered this option yet, in part
because this is a tightly packed 1U case, with no space for an IDE drive
inside. So I guess I could try an external USB drive enclosure - would that
work? Is USB generally well supported for installing and booting up off of
No it isn't. It seems no one has even quite agreed what the boot
protocol should be for usb drives, since there seems to be no standard
for doing bios disk calls for usb drives.
Actually, I think I may have a 2.5" external drive enclosure sitting around
in one of my drawers, with a 20GB hard drive from my old laptop. If I
remember correctly, it has two USB connectors, because it gets all its
power from USB and so needs two ports. Should that work for installing?
I doubt you would be able to boot from it after installing to it (if it
even recognizes it as a disk in the installer).
I'm sorry about not following up on this sooner, I have been out of action for the last few
days due to a broken arm. I was returning from a mountain bike ride in the hills outside of
Corvallis (Oregon) at dusk last Saturday when I went head first over the handlebars. Ironically I
had gone for the ride to celebrate finally getting Debian amd64 to boot successfully by itself on
the new server! Nothing much else computer-wise has happened since.
I'll try (typing one handed here) to summarise how I finally got this working:
To recap, with the 2015S, the Debian amd64 netinst CD currently fails to see any drives, but it does
give the clue that the driver it wants is dpt_i2o. Apparently this driver is not enabled in Debian
amd64 because it a) does not work under 64 bit and b) is apparently being deprecated by the
community in favor of i2o_block. However i2o_block was not available in the netinst either.
I found that CentOS 4.1 x86_64 does install "out of the box" - they have a good 64-bit version with
more drivers and better ability to select modules manually at install time:
It will say you have no disks at first, but it will give you the opportunity to select a driver, and
i2o_block appears to make it work. Your drives will appear under /dev/i2o/hda rather than /dev/sda
etc. For more info on i2o_block see:
Two things struck me here: First, really I wanted to run Debian, not a RHE-based distro. Second, I
really wanted to have "real" scsi disks rather than i2o block devices if I could. I had also heard
an anecdotal story from someone that they got block transfer errors under load from i2o_block with
the 2015S, so I wanted to use Adaptec's "official" driver if possible.
I tried rolling a custom Debian kernel and netinst CD from CentOS, but after many tries I was unable
to get this to boot. It always panicked at some point, so I gave up on that route. Apparently there
is quite a lot more to "rolling your own" netinst cd than simply replacing the vmlinuz an initrd -
on a side note, is anybody aware of a howto on making a custom netinst cd?
Someone also suggested installing onto a temporary IDE disk and then rolling a custom kernel from
there and copying the system over, but I found that even this didn't work since my network driver
(tg3) didn't seem to be present in the 2.6.8 kernel.
In the meantime, I had been in touch with Mark Salyzyn of Adaptec (email@example.com), who
maintains the dpt_i2o driver. He sent me a version that he said should work under 64-bit. He said
that the "community" appeared to be deprecating dpt_i2o in favor of i2o_block, if only because there
were always questions about why we would have two different drivers for the same device.
Nevertheless as outlined above I was interested in getting dpt_i2o working if I could.
In a nutshell, Mark's 64-bit dpt_i2o *does* indeed work - I can forward his email with the dpt_i2o
source tarball to anyone who wants it, though you are probably better off going directly to Mark for
the latest update. As for why they don't simply put this up on their website, Mark said:
"As for making the driver 'more available' it is a victim of Technical
Support policy. They don't like to put up untested products. However,
they do have a private ftp used for customers to slip them such updated
contents. I will (or should I perish, firstname.lastname@example.org) remain the
best means of getting the latest driver, but I assure you that sooner or
later you will see this, or a more advanced, version of the driver
showing on the web site once someone does some testing."
Anyway, step-by-step here's what got it all working for me (as far as I can remember):
1. Install CentOS onto one partition of your system, using i2o_block. I put it way up on
/dev/i2o/hda10, the lower partitions being reserved for my future Debian installation. So the idea
is that you partition the disks under the CentOS install, but only use one of them for now - and not
one that will be needed for a debian "system" partition. I have 4 x 74 GB scsi drives in RAID10, so
I have about 136GB available and decided to go for this:
/dev/i2o/hda1 100MB /boot (debian)
/dev/i2o/hda2 2GB swap (common)
/dev/i2o/hda4 20GB / (debian)
/dev/i2o/hda5 1GB /home (debian)
/dev/i2o/hda6 6GB /var (debian)
/dev/i2o/hda7 2GB /tmp (debian)
/dev/i2o/hda8 20GB /mysql (debian)
/dev/i2o/hda9 60GB /pics (debian)
/dev/i2o/hda10 25GB / (CentOS)
Obviously your requirements will differ, but point is that you stick CentOS way at the end on a
single partition, since it won't be permanent. In any case, you should be able to install CentOS and
have a minimal system working under i2o_block.
You will have to do one extra step to get the bootloader installed. Since CentOS is based on RedHat
Enterprise, you can follow this page to get grub on there:
2. Get Debian kernel source, I found the current version Mark sent won't compile with 2.6.13, so the
latest kernel it seems to currently be ok with is 126.96.36.199. I also found that kernels from
kernel.org do not have all the patches that the debian source does.
3. Unpack the dpt_i2o tarball and copy the files into drivers/scsi under the kernel source dir. You
should see that you're overwriting the existing dpt_i2o files.
4. Edit drivers/scsi/Kconfig. Look for 'config SCSI_DPT_I2O' in drivers/scsi/Kconfig, and a few
lines down it has "depends on !64BIT && SCSI && PCI". Change that to "depends on SCSI && PCI", in
other words take out the condition that disables dpt_i2o under 64 bit.
5. make menuconfig, and select dpt_i2o as built-in (not module) under low level scsi device drivers.
Disable i2o_block driver. Also, IMPORTANT - disable devfs - this prevents booting for some reason
(it won't recognize your partitions as being valid when you boot, even though you build in ext3 etc
- so just *deselect* devfs altogether).
6. Build the new 64-bit debian kernel (still under CentOS).
7. Format your Debian partitions, and use debootstrap to install Debian into the Debian root:
In section C.4.3, use http://amd64.debian.net/debian as the final param for the install.
In C.4.4.1, use /dev/sda etc in the fstab, since you have dpt_i2o.
8. After the debootstrap install, you should be able to copy the files from the root partition into
the various "real" partitions you made for debian, e.g. /var.
9. Install the new custom debian kernel in the debian /boot partition as e.g. vmlinuz-2.6.12 If
you built-in everything needed (i.e. no modules for your hardware drivers) then you won't need to
mess with any initrd image. Also remember to copy the /lib/modules/2.6.12 dir over to the debian
10. You probably already have grub on the system after CentOS, so you could boot and press c to go
to the grub shell, then select your kernel manually:
grub> root (hd0,0)
grub> kernel /vmlinuz-2.6.12 root=/dev/sda4
See http://www.troubleshooters.com/linux/grub/grub.htm for more useful info on grub shell.
11. Once you have successfully booted into Debian, you can run
to install grub using your Debian boot partition. You can then make a /boot/grub/menu.lst file:
title Debian Linux 2.6.2 amd64
kernel /vmlinuz-2.6.12 root=/dev/sda3
That should do it! Easy, eh? ;-)
I tried to remember everything I did, but I may have missed something. Thanks again for all the help
and tips from members of this list.