#
# Sample GRUB configuration file
#

# Boot automatically after 30 secs.
set timeout=30

# By default, boot the GNU/Linux
set default=gnulinux

# Fallback to GNU/Hurd.
set fallback=gnuhurd

# For booting GNU/Linux
menuentry "GNU/Linux" --id gnulinux {
	set root=(hd0,msdos1)
	linux /vmlinuz root=/dev/sda1
	initrd /initrd.img
}

# For booting GNU/Hurd
menuentry "GNU (aka GNU/Hurd)" --id gnuhurd {
	set root=(hd0,msdos1)
	multiboot /boot/gnumach.gz root=device:hd0s1
	module /hurd/ext2fs.static ext2fs --readonly \
			--multiboot-command-line='${kernel-command-line}' \
			--host-priv-port='${host-port}' \
			--device-master-port='${device-port}' \
			--exec-server-task='${exec-task}' -T typed '${root}' \
			'$(task-create)' '$(task-resume)'
	module /lib/ld.so.1 exec /hurd/exec '$(exec-task=task-create)'
}

# For booting FreeBSD
menuentry "FreeBSD (or GNU/kFreeBSD), direct boot" {
	set root=(hd0,msdos1,bsd1)
	kfreebsd /boot/kernel/kernel
	kfreebsd_loadenv /boot/device.hints
	kfreebsd_module /boot/splash.bmp type=splash_image_data
	set kFreeBSD.vfs.root.mountfrom=ufs:ad0s1a
}

menuentry "FreeBSD (or GNU/kFreeBSD), via /boot/loader" {
	set root=(hd0,msdos1,bsd1)
	kfreebsd /boot/loader
}

# For booting NetBSD
menuentry "NetBSD" {
	set root=(hd0,netbsd1)
	knetbsd /netbsd
}

# For booting OpenBSD
menuentry "OpenBSD" {
	set root=(hd0,openbsd1)
	kopenbsd /bsd
}

# For booting Microsoft Windows
menuentry "Microsoft Windows" {
	set root=(hd0,msdos1)
	chainloader +1
}

# For booting Memtest86+
menuentry "Memtest86+" {
	set root=(hd0,1)
	linux16 /memtest86+.bin
}

# Change the colors.
menuentry "Change the colors" {
	set menu_color_normal=light-green/brown
	set menu_color_highlight=red/blue
}
