I finally got past the boot problems with my hard drive by changing a setting in the BIOS. Now I'd like to set the rest of the system up.
I have 5 hard drives I'm putting in an old server case. The smallest of these was set up on the motherboard IDE1 connection, the remaining 4 are on 2 PCI cards (RocketRaid). I understand this card isn't supported for RAID in the 2.6 kernel, and that's fine, I want them as separate drives.
I want to boot from the smallest drive. I got fed up with trying to get things to work when all drives were installed, so I set it up with the smallest, got it to boot, and then plugged in 1 of the drives on the PCI card.
For some reason, this messes up everything. Arch sees the PCI cards as primary over the motherboard connection, and from adding and subtracting drives to those PCI cards, it is not consistent as to which is drive1, 2, etc.
Even though it changes things, it still wants grub to say
root (hd0,0); if I change this, I get file not found errors
But no matter what I've done with the kernel line, I get a kernel panic, or something with a line that says something about passing an init somewhere.
I'd be more specific, but I think I fried my brain working on this today..... I had to stop before I drop kicked the machine....
Why would the PCI card take precedence over the motherboard IDE connection, and is there any way to prevent this?
FYI, I had this running under a 2.4 kernel, using RAID on the extra drives so I could recover some data, and didn't have this problem then.
First, get some sleep. Somehow that does wonders quite often.
If you get a kernel panic then your Grub config is (mostly) alright, at least you know which hd it is (except if you also installed Grub on one of the other drives and that one is run).
The question is how far you come in the boot process. What is the last line? Something like "cannot mount root filesystem" or something about not finding init? Also search for interesting messages in the bootup text, like which hd's are detected and what names they get.
Booting from a liveCD to see how all the hd's are named may be helpful too (preferably one with the same kernel version, or at least 2.6).
Giving more detailed info about your hardware may help too (drivers can also be found here, if they aren't already in the default kernel).
Ok, here's my step-by-step. At this point I'm just guessing as to what to change, so if anyone can point out my setup error I'd appreciate it.
The machine is a home-built on an AOpen AK77-600N motherboard. Radeon 7000 graphics card, AMD processor, no over-clocking. On-board NIC and sound, but a Soundblaster24 live installed too. SCSI card for the Sony tape drive. I think 128M memory. 2-Highpoint cards previously used for RAID on a 2.4 kernel, I don't care about RAID here and would just like to use them as straight IDE cards.
1. Plug boot drive into motherboard IDE. Plug 4 other drives into Highpoint cards.
2. Install Arch from CD. Check /dev before typing /arch/setup. disc4 is .../ide/host0/bus0/target0/lun0. Highpoint cards show up as host2 and host4, but for whatever reason contain discs0, 1, 2, and 3
3. Autoprepare disc4; /dev/discs/disc4/disc
I decided to autoprepare so I didn't introduce any possible errors from my end.
4. Can't set mountpoints on other drives; says they are already prepared by autoprepare.
5. Go to partition hard drives. disc4 is the system drive, leave that alone, check the other 3, all are ok as is.
6. Try to set mountpoints on other drives, same complaint as above, leave this to later
7. Select all base packages
8. Install all base packages
9. Install 2.6 kernel for SCSI (tape drive is SCSI)
10. Configure system. In rc.conf, add module 8139too, set eth0 addresses, set default gateway address
11. Configure system. In menu.lst, it is already set up as:
kernel vmlinuz26 root=/dev/discs/disc4/part3 ro
Don't change anything here.
12. Install Grub bootloader to /dev/discs/disc4/disc
14. Grub splash screen comes up, counts down,
Booting 'Arch Linux [/boot/vmlinuz25]'
Filesystem is reiserfs, partition type 0x83
kernel /vmlinuz26 root=/dev/discs/disc4/part3 ro
Error 15: File not found
Press any key to continue.....
You said you wanted to boot from the smallest drive connected to the mobo, that is hd(0,0).
Anyway, I don't know what the default is in Arch, nor what the autothing is or does, but I'd expect the kernel to be in /boot/, so something like /boot/vmlinuz26 or whatever, not plainly the filename.
Try something like the following in the grub config:
title=try 1 kernel (hd4,0)/boot/vmlinuz26 root=/dev/discs/disc4/part3 ro
I tried /boot/vmlinuz etc; no change.
So I changed root (hd4,0) to root (hd0,0)
This booted up fine - but I hadn't been able to get it to work before, and I realized that I had been using udev, and so the kernel line ended with
So I added this to see what happens; it went through grub and started booting, but when it gets to activating the swap file, it fails, it mounts root RO, then says Checking Filesystems, and gives me this error:
fsck.ext3: no such file or directory while trying to open /dev/discs/disc4/part3
The superblock could not be read.... (Then there's info on running disk checking)
/boot is set up as ext2
/ is set up as reiser
Any ideas about what is going on?
No, and I've no idea what your setup is. Just organize your drive and partition info, and then adjust the config so that it should work, instead of this seemingly trial and error method.
Ok, but if I knew how to get it to work, I wouldn't be here.
The setup info is as I have described above. If there's particular information that would be helpful that I haven't already posted, please let me know and I will post it.
Since it works until I put in the devfs=nomount, it "should work".
If anyone has any ideas other than trial and error, believe me, I'm listening. I've wasted literally hours trying to get this to work, and now it has stumped someone more experienced as well!
Anybody else have any ideas?????? Should I put this question in another forum?
ok, so everything works until you switch from devfs to udev?
it's most likely due to naming....
/dev/discs/discX/partY (e.g. disc2/part3) is devfs's naming scheme
/dev/hdXY (e.g. hda3) is udev's naming scheme for ide drives
/dev/sdXY (e.g. sdb2) is udev's naming scheme for scsi and sata drives...
So just adjust everything as appropriate for udev until switching to udev
Since it works until I put in the devfs=nomount, it "should work".
I missed that from your other post, sorry. I assumed that you wanted to use devfs, because of the naming stuff. Now it's easy to fix, just do what Phrakture said.
The adjustments to be made - in fstab? I played with putting that into udev format but got a kernel panic, so I'm going to go over my work again....
I'd read that sometimes that kernel panic happens due to a timing issue in udev, but I put some sleeps in rc.sysinit as was recommended (this was in an ubuntu forum, where they use init.d) but that didn't solve the kernel panic issue.
Where does this .../lun0/target0 naming come from, and how is that related to all of this? I thought that was somehow devfs.
From what came before I've got it up now using devfs, so I can take my time playing with it to get udev up and running.
I finally got back to this, and think it's solved. I found the clues to the correct entries are in dmesg after a successful devfs boot.
I changed the kernel line in /boot/grub/menu.lst from
kernel /vmlinuz26 root=/dev/discs/disc4/part3 ro vga=773
/vmlinux26 root=/dev/hda3 devfs=nomount ro vga=773
Although devfs has it at disc4, classic naming (udev?) has it at hda
This got me to the point where swap wouldn't load.
I then edited the bottom portion of /etc/fstab from:
/dev/discs/disc4/part2 swap swap defaults 0 0
/dev/discs/disc4/part3 / reiserfs defaults 0 0
/dev/discs/disc0/part1 /data1 reiserfs defaults 0 0
/dev/discs/disc1/part1 /data2 reiserfs defaults 0 0
/dev/discs/disc2/part1 /data4 reiserfs defaults 0 0
/dev/discs/disc3/part1 /data3 reiserfs defaults 0 0
/dev/discs/disc4/part1 /boot ext2 defaults 0 1
/dev/discs/disc4/part5 /opt reiserfs defaults 0 0
/dev/discs/disc4/part6 /var reiserfs defaults 0 0
/dev/discs/disc4/part7 /home reiserfs defaults 0 0
/dev/discs/disc4/part8 /junk reiserfs defaults 0 0
/dev/hda2 swap swap defaults 0 0
/dev/hda3 / reiserfs defaults 0 0
/dev/hde1 /data1 reiserfs defaults 0 0
/dev/hdg1 /data2 reiserfs defaults 0 0
/dev/hdi1 /data4 reiserfs defaults 0 0
/dev/hdk1 /data3 reiserfs defaults 0 0
/dev/hda1 /boot ext2 defaults 0 1
/dev/hda5 /opt reiserfs defaults 0 0
/dev/hda6 /var reiserfs defaults 0 0
/dev/hda7 /home reiserfs defaults 0 0
/dev/hda8 /junk reiserfs defaults 0 0
While I had the hard drive names, I guessed as to which was e,g,i and k; they're all reiserfs and it worked, so either I guessed correctly or it didn't matter. There was no data on these drives, so it probably just didn't matter.
With this setup, the system boots without any drive problems.