On 09/13/2011 03:00 PM, Emmanuel Kasper wrote:
I tried booting the NetBSD kernel with grub2, and it works (tm)#To add IN /etc/grub.d/40_custom #Boot netbsd from First DOS partition menuentry "NetBSD on sda1" { insmod ufs2 set root=(hd0,msdos1) multiboot /netbsd } Remarks: * boot parameters like -s are ignored
This comes from the fact that GRUB (Legacy) passed the booted file as first argument of the multiboot command-line whereas GRUB 2 doesn't, see for instance http://lists.gnu.org/archive/html/grub-devel/2010-01/msg00146.html. The NetBSD kernel assumes the behavior of GRUB Legacy and drops the first argument. So you should use: multiboot /netbsd /netbsd -s
* grub2 does not need to know about labels, it needs the MS DOS NetBSD partition and seems to be fine with that.
It's true when the booted kernel is on a partition (a:) that starts at the same sector as an MS-DOS partition, which is often the case. But GRUB (2) is also able to access partitions in a NetBSD disklabel (provided that you load the appropriate module: insmod part_bsd).
* grub2 also has a knetbsd option to boot a NetBSD kernel, which loads the kernel fine, but might pass wrong argument, as the kernel does not find the rootfs and /sbin/init.
Right, I remember facing the same issue. The option -r of the knetbsd command lets you specify the root device (e.g., -r wd0a), but, ideally, this should not be needed. Grégoire
