FS#4890 - mkinitcpio : MODULES doesn't seem to override HOOKS option

Attached to Project: Arch Linux
Opened by Anonymous Submitter - Tuesday, 27 June 2006, 21:23 GMT
Last edited by Tobias Powalowski (tpowa) - Sunday, 02 July 2006, 07:27 GMT
Task Type Support Request
Category System
Status Closed
Assigned To Aaron Griffin (phrakture)
Architecture not specified
Severity Medium
Priority Normal
Reported Version 0.7.2 Gimmick
Due in Version Undecided
Due Date Undecided
Percent Complete 100%
Votes 0
Private No

Details

Hi,

I recently upgraded my system to the new current, using the cpio initrd option.

I think my system is a bit unusual - my two ATA100 HDDs, in a Linux Software RAID1 array, are attached to an off-board, Silicon Image /CMD680 PCI IDE controller. My CDROM/RW drive is attached to my on-board PIIX4 IDE controller, only capable of ATA33.

I boot off of the off-board controller, and once Linux starts, have those drives as operating as /dev/hda and /dev/hdc. The CDROM/RW drive operates as /dev/hde. To have Linux allocate these device names, I've needed to ensure that the "siimage" module or built in kernel device driver is loaded / run before the PIIX4 driver.

In the past, I've acheived this by not building the PIIX module into the kernel, or by using the ide=reverse kernel option, or, in recent times, configured initrd to load the "siimage" module only to get the system booted, with the "piix" module being loaded later in the boot process.

The problem I'm having with the new cpio system is that I don't seem to be able to force the siimage module to be loaded before the piix module. This results in the CDROM/RW drive being assigned /dev/hda, and my HDDs being assigned /dev/hdc and /dev/hde, which then prevents the RAID1 array that is my root partition from starting. I've tried a number of things to override or resolve this :

- added "siimage" by itself to the MODULES line
- added "siimage ide_disk" to the MODULES line
- tried leaving the MODULES line empty, and adding the "ide=reverse" option on the kernel command line
- left MODULES empty, and specified the md0 component devices as /dev/hdc and /dev/hde, with the hope that the md* UUID entries in /etc/mdadm.conf would resolve the different device names

Unfortunately none of these options worked.

One thought I've had is that the "autodetect" option I have in the HOOKS line might be causing the MODULES line to be ignored. From the comment near the MODULES line, it seems that it could be possible for me to remove the autodetect option, and then specify all the modules required for my system to run in the MODULES line. If my understanding is correct, then that could be a work around for my problem. However, I'd find it really convenient if I could leave the autodetect option in place, and just specify the load order for one of the autodetected modules, in my case the "siimage" module.

For reference, here is what I have as my HOOKS line :

--
HOOKS="base udev autodetect ide raid filesystems"
--

Here is what I have as the grub kernel boot options :

--
# (0) Arch Linux
title Arch Linux
root (hd0,1)
kernel /boot/vmlinuz26 root=/dev/md0 ro md=0,/dev/hda2,/dev/hdc2 elevator=cfq lapic nmi_watchdog=1
initrd /boot/kernel26.img
--

Is this a bug, or is the MODULES option something I have misunderstood ?

Thanks,
Mark.
This task depends upon

Closed by  Aaron Griffin (phrakture)
Tuesday, 01 August 2006, 02:03 GMT
Reason for closing:  Not a bug
Comment by Tobias Powalowski (tpowa) - Tuesday, 27 June 2006, 21:36 GMT
if you need persistent names of devices add a udev rule for it to the image
Comment by Anonymous Submitter - Wednesday, 28 June 2006, 09:34 GMT
Hi Tobias,

Thanks for the tip. Do you have any pointers or examples of persistent names for hard drives ? I've failed at getting ethernet interface renaming to work via udev, although I have managed to setup some rules to create device files for my USB and PS2 keyboard, so it seems I'm half competent :-)

Also, would the file I need to modify be the /etc/udev/rules.d/udev.rules file ? I don't fully understand how the cpio initd image system works, however when I run mkinitcpio -v, it seems to be copying the listed files from the normal file system into the image, and it lists that it is copying /etc/udev/rules.d/udev.rules. Is my understanding correct ?

I'm happy to write up something for the wiki on how to do this once I've been successful.

Thanks,
Mark.
Comment by Anonymous Submitter - Thursday, 29 June 2006, 09:46 GMT
Think I might have just found out why I've been having trouble - I've been modifying the mkinitcpio-kernel26.conf file in /boot, not the /etc/mkinitcpio.conf file, yet not specifying it as a parameter to the mkinitcpio utility. Doh!
Comment by Aaron Griffin (phrakture) - Monday, 17 July 2006, 08:35 GMT
If this is no longer an issue, I will close this bug. Mark?
Comment by Anonymous Submitter - Friday, 21 July 2006, 23:07 GMT
Hi Aaron,

Yes, it's not an issue anymore, adding the "siimage" entry by itself to the MODULES line made my drives appear as /dev/hda and /dev/hdc. I've found out that /etc/mkinitcpio.conf is the file I should have been modifiying. I got a bit confused by the wiki page on mkinitcpio, have edited that which would hopefully make it a bit clearer which *cpio.conf file is used for which kernel image.

Thanks,
Mark.

Loading...