I just upgrade to Slackware 12.1, everything went smooth until the reboot, I noticed that my hard drive device changed from /dev/sda to /dev/hda, at first I thought it must have been due to a wrong or missing module setup on the init ram disk (initrd), but no matter how many combinations I tried, it was the same.
My hard drive is a Seagate Momentus 5400.3 ST960815A, and my controller an Intel Corporation 82801FBM (ICH6M) SATA Controller (rev 03). The problem with it as /dev/hda instead of /dev/sda is that DMA and fast modes are disabled, and it’s barely impossible to work that slow.
After googleing a while and asking on IRC, it seems that the generic-smp kernel that ships with Slackware Linux 12.1 is build to first probe for ide before loading libata, my hardware is capable of running as that, so libata never kicks in. The way to avoid this is to use the boot parameter hda=noprobe, it can be added to lilo.conf (append=”hda=noprobe”).
After that (and changing hda back to sda in my initrd and fstab) it worked with DMA support, and let me tell you, the difference is huge!
But I wasn’t happy yet, my cdrom/dvd was still as /dev/hdc and without DMA or possibilities to enable it (if hdparm -d 1 /dev/hdc works for you then you don’t need this), so i did the same, added hdc=noprobe to the kernel prompt but this time it didn’t work. Watching DVDs without DMA is awful, you have to synchronize your eye blinks with the gaps in the playback, and that’s not an easy task…
Later I found out that there’s a parameter to enable the use of libata with atapi devices: libata.atapi_enabled=1, now my dvd device has DMA enabled and changed from /dev/hdc to /dev/sr0, no need to modify any script (besides lilo.conf) since /dev/cdrom will point to it.
My /etc/lilo.conf is:
image = /boot/vmlinuz
root = /dev/sda3
label = Linux
initrd = /boot/initrd.gz
append = “hda=noprobe hdc=noprobe libata.atapi_enabled=1″
read-only
Ready to roll!!, simple he? no kernel compilation and just a simple initrd (only ext3fs modules) also don’t forget to set a suitable advanced power management values (hdparm -B 240 /dev/sda) to avoid disk tear and wear and to get libdvdcss, Slacky has a nice version.

Yea i took the hard way out on my D630, recompiled the kernel and simply removed the IDE drivers outright since the lappy is all SATA.
[...] Nos últimos dias após um “chmod -R 444” como root na pasta raiz do sistema, tive de reinstalar novamente o Slackware, mas com o drive de DVD não funcionando, tive que apelar pra bootar por imagem ISO, mas o problema é que a imagem do 12.0 acabou se perdendo por corrupçao da particão, e tive de usar o 12.1 e estando decidido a arrumar o problema sem ter que recompilar o Kernel, procurei e acabei encontrando uma soluçao no Slackware Users Group – Brazil e também no blog do Manuel F. Argüelles A.. [...]
nice tip p4c0, it worked to me as well.
notice that i’ve made 11 installations on AMD machines and none of these things was made; nforce series, are nice.
Yo man
This was awsome
Great tip I’m a real Slacker from South Africa and this realy helped me
Thank you
Hey I have a problem with such solution:
my lilo.conf is:
image = /boot/vmlinuz
root = /dev/sda3
label = Linux
initrd = /boot/initrd.gz
append = “hda=noprobe hdc=noprobe libata.atapi_enabled=1″
read-only
but when executing lilo error occurs:
Fatal: Illegal ‘root=’ specification: /dev/sda3
Any suggestions?
Thanks,
crg
Hello corrigan,
The example is not meant to be used “as it”, you need to modify it to suit your hardware and partitions, for example in my case I have a windows partition on sda1, swap partition on sda2 and my root (linux /) partition is on sda3.
Good Luck
I use your solution and its works perfectly.
Thanks a lot !
PC40,
This is my first attempt with slackware and its really slow. I think your solution might help fix it. I am able to understand the whole article except for changing hda to sda in initrd. How do i do that
Thanks in advance
Hello Zixi,
First you need to be sure that you have sata drives, you can be sure by doing
#lspci
if you see something like SATA Controller you can continue, if not take a look at hdparm, a quick lock in google will tell you how to improve your system speed for non-sata drives, for example: http://www.linuxdevcenter.com/pub/a/linux/2000/06/29/hdparm.html
If you boot as normal all your system will be hdaX, but when you boot with append = “hda=noprobe hdc=noprobe libata.atapi_enabled=1″ it will be sdaX, so you need to take care of this for lilo.conf and fstab.
At lilo promp add hda=noprobe hdc=noprobe libata.atapi_enabled=1 and boot (just to try), it’s more likely that you will end up with a maintenance console in where you can mount your (new) sdaX root partition, chroot into it and modify fstab, lilo and recreate initrd (if needed). If no, you can boot with the slackware cd, mount your root partition and do the changes.
Good Luck
P4C0,
That did it. I made the changes you mentioned, got a maintenance window upon reboot. followed rest of the steps and it works now.
Thanks for your help.
Just installed Slackware 12.1 on a HP Proliant ML110. The 250GB sata hard drive is seen as hda.
lspci shows:
00:1f.2 IDE interface: Intel Corporation 82801IR/IO/IH (ICH9R/DO/DH) 4 port SATA IDE Controller (rev 02)
?? Is this a sata or ide controller ??
After opening the case the hard drive is a Seagate Baracuda SATA 250 GB. But can this controller be told to see the drive as sda instead of hda?
Currently it is dead slow (hdparm tell me it is doing 1 MB/sec).
Any advice welkom..
Hello Collette,
Yes that looks like SATA controller, did you try following the post? it shows more or less how to make it sda instead of hda..
good luck
I did a complete re-install from the dvd with hda=noprobe hdc=noprobe libata.atapi_enabled=1.
The hard drive shows up as sda and the dvd as sr. The complete install only took 15 minutes. Configurated lilo also with append hda=noprobe….
After reboot the system sees the drive as sda. The speed change is huge. According to hdparm (with -Tt /dev/sda) the speed is > 90 MB/sec (it whas 1 MB/sec).
So the solution here works perfectly, thanks a lot.