View previous topic :: View next topic |
Author |
Message |
Frautoincnam Guru
Joined: 19 May 2017 Posts: 331
|
Posted: Sun Dec 30, 2018 10:38 pm Post subject: [solved] grub legacy, grub2, soft raid, boot error |
|
|
Hi,
On my home server, without UEFI, I have 3 Sata HD : sda, sdb, sdc
sda and sdb are partitionned identicaly, ann all partions are associated in a soft raid 1 as :
sda1 + sdb1 => /dev/md1 => /boot
sda2 + sdb2 => /dev/md2 => /
sda3 + sdb3 => /dev/md3 => swap
sda4 + sdb4 => extended
sda5 + sdb5 => /dev/md5 => /tmp
sda6 + sdb6 => /dev/md6 => /home
sda7 + sdb7 => /dev/md7 => /var
sda8 + sdb8 => /dev/md8 => /other
sdc (sd1,sdc2) is only for backup
I use Grub legacy, installed in /dev/sda AND /dev/sdb with :
Code: | # grub --no-floppy
grub> find /grub/stage1
(hd0,0)
(hd1,0)
grub> device (hd0) /dev/sda
grub> root (hd0,0)
grub> setup (hd0)
grub> device (hd0) /dev/sdb
grub> root (hd0,0)
grub> setup (hd0)
grub> quit |
and a grub.conf like :
Code: | title Gentoo
root (hd0,0)
kernel /boot/kernel root=/dev/md2 |
And ALL works fine.
Now, I've bought 2 SSD (sdd, sde), to use in soft raid 1 too, put all (except /other), so I partitionned them and associated partions like :
sdd1 + sde1 => /dev/md11 => /boot
sdd2 + sde2 => /dev/md12 => /
sdd3 + sde3 => /dev/md13 => swap
sdd4 + sde4 => extended
sdd5 + sde5 => /dev/md15 => /tmp
sdd6 + sde6 => /dev/md16 => /home
sdd7 + sde7 => /dev/md17 => /var
The ony difference is that md12 is EXT4 and md2 is EXT3, but I do have EXT4 in my kernel :
Code: | # grep EXT4 /usr/src/linux/.config
CONFIG_EXT4_FS=y
CONFIG_EXT4_FS_POSIX_ACL=y
CONFIG_EXT4_FS_SECURITY=y
# CONFIG_EXT4_ENCRYPTION is not set
# CONFIG_EXT4_DEBUG is not set |
I won't remove sda and sdb. I'll juste resize /dev/md8 to use all the space, when I'll be able to use my SSDs.
My BIOS doesn't permit me to select drive to boot, so for the moment, I have to use boot loader on sda/sdb.
I tried a lot of configurations, and even added Grub2, to try to chainload, but never get something else than :
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)
I added sdd/sde to device.map :
# cat /boot/grub/device.map
Code: | (hd0) /dev/sda
(hd1) /dev/sdb
(hd2) /dev/sdc
(hd3) /dev/sdd
(hd4) /dev/sde |
I put grub on sdd/sde the same way with :
Code: | grub> find /grub/stage1
(hd0,0)
(hd1,0)
(hd3,0)
(hd4,0)
grub> device (hd3) /dev/sdd
grub> root (hd3,0)
grub> setup (hd3)
grub> device (hd3) /dev/sde
grub> root (hd3,0)
grub> setup (hd3)
grub> quit |
(tried too with hd0 instead of hd3)
I added
Code: | title Gentoo SSD
root (hd3,0)
kernel /boot/kernel root=/dev/md12 |
to grub.conf (tried with hd0 too)
Tried to Chainload grub2 with :
Code: | title GRUB2 Chainload HD0
root (hd0,0)
kernel /boot/grub/i386-pc/core.img
boot
title GRUB2 Chainload HD3
root (hd3,0)
kernel /boot/grub/i386-pc/core.img
boot |
Grub2 is installed with grub-install --grub-setup=/bin/true /dev/sda, like suggested in https://wiki.gentoo.org/wiki/GRUB2_Migration#Installing_and_configuring_GRUB2
I tried a lot of things (too much), and I'm now totally lost.
The only thing I didn't (and won't) try is to replace Grub legacy with Grub2. Too much afraid by not being able to boot at all.
I'd prefer to not use Grub2, but if I have to do it, I will.
Maybe I have others informations to give for you to try to help me.
PS : sorry for my not really good english
Edit :
to be complete, I have to add :
1) os-prober/grub2-mkconfig doesn't find boot on SSDs. I just get :
Code: | # LC_ALL=C grub2-mkconfig -o grub.cfg
Generating grub configuration file ...
Found linux image: /boot/kernel-4.14.83-gentoo
Found linux image: /boot/kernel-4.14.52-gentoo
Found memtest image: /boot/memtest86plus/memtest.bin
Found memtest image: /boot/memtest86plus/memtest
done |
2) Chainloading works. I can start my system on HDs raid with Grub legacy => Grub2
3) I modifyed /etc/grub.d/40_custom :
Code: | menuentry 'Gentoo SSD' --class gentoo --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-d47e8faa-3b7e-405d-bc8c-a2d418846bee' {
load_video
insmod gzio
insmod part_msdos
insmod part_msdos
insmod diskfilter
insmod mdraid09
insmod ext2
set root='mduuid/e4d1401a6e79b1cd58f2f8e7254eabdb'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint='mduuid/e4d1401a-6e79-b1cd-58f2-f8e7254eabdb' 2c41c099-b22e-47c9-a43a-8cb90fce1265
else
search --no-floppy --fs-uuid --set=root 2c41c099-b22e-47c9-a43a-8cb90fce1265
fi
echo 'Chargement de Linux 4.14.83-gentoo...'
linux /kernel-4.14.83-gentoo root=/dev/md12 ro |
4) I tried to chroot in my SSDs raid, generate grub.cfg (It doesn't find HDs boot), but chainloading to it doesn't work(always the same Kernel Panic). But I don't know Grub2 very well. That's possible I don't do what is needed.
5) SDDs raids works fine, even I can't boot on it.
6) I don't use initramfs. My kernel is compiled by myself, no genkernel.
7) bootinfoscript
I can't understand why Grub legacy on sda/sdb can't boot my system on md12. If it could, I would never need Grub2.
Last edited by Frautoincnam on Mon Jan 07, 2019 3:51 am; edited 1 time in total |
|
Back to top |
|
|
ribx Apprentice
Joined: 20 Nov 2003 Posts: 219 Location: germany
|
Posted: Mon Jan 07, 2019 1:19 am Post subject: |
|
|
I didn't use grub1 for quite some time and I think never on a RAID without a initram. I don't even understand how that will work. Who knows what /dev/md2 is? Is that name defined in the partition? Or is it chance, that the kernel and grub use the same name?
You can use the initramfs provided by genkernel easily with your own kernel. I do this for years. Just do
Code: |
# genkernel initramfs
|
after building a new kernel, thats it.
Also, I kind of tricked grub-mkconfig by creating some links:
Code: |
# ls -l /boot/*99*
lrwxrwxrwx 1 root root 13 2016-12-20 12:41 /boot/initramfs-9999.img -> initramfs
lrwxrwxrwx 1 root root 7 2016-04-24 16:20 /boot/vmlinuz-9999 -> vmlinuz
|
That way I don't have to update the grub config after a update of the kernel and can still use grub-mkconfig to recreate it whenever I need to.
Honestly I think your setup is way too complicated. Did you ever thought about using btrfs as the "raid" provider? You could have everything in a big partition and then use supvolumes and set soft quotas where you need them (e.g. for /var/log). Only swap needs to be its own partition. That way you could utilize your disk space much better. btrfs support raid1 and you could even change it later to raid5 or raid1 with 3 mirrors or what ever you which to. And you will have snapshot support (Check out snapper for snapshots).
Backing up btrfs (also with snapshots, extended attributes and ACLs) is also quite easy. _________________ The adopt an unanswered post initiative |
|
Back to top |
|
|
Frautoincnam Guru
Joined: 19 May 2017 Posts: 331
|
Posted: Mon Jan 07, 2019 3:51 am Post subject: |
|
|
In fact, I just forgot to set my partitions to type FD (Raid auto detect). |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|