insmod part_msdos insmod part_bsd insmod part_gpt # check for symlinks to boot pair if [ -f (xen/xvda,msdos1)/vmlinuz ] ; then set root=(xen/xvda,msdos1) set dev=xvda1 echo 'got msdos1, fire missle' else if [ -f (xen/xvda)/vmlinuz ] ; then set root=(xen/xvda) set dev=xvda echo 'got flat device, fire missle' else echo "continuing, looking for legacy or grub2" fi fi if [ $root != 'memdisk' ]; then insmod xzio insmod gzio insmod btrfs insmod ext2 echo 'Loading Linux ...' # set fallback kernel append string set btcmd="ro noresume selinux=0 console=hvc0 nopti" # two ways to get from user: via xl cfg (extra) or via grubenv file # allow cmdline from userspace if [ -z ${xen_cmdline} ] ; then if [ -f "($root)/boot/grub/.xenpv" ] ; then echo 'grab cmdline from file' load_env -f "($root)/boot/grub/.xenpv" fi linux /vmlinuz root=/dev/$dev $btcmd else echo 'grab cmdline from env via xenstore utils' linux /vmlinuz ${xen_cmdline} fi echo 'Loading initial ramdisk ...' initrd /initrd.img boot fi # legacy grub in flat device if [ -f (xen/xvda)/boot/grub/menu.lst ] ; then set root=(xen/xvda) echo "got legacy config in flat device" legacy_configfile /boot/grub/menu.lst fi # legacy grub in single partition if [ -f (xen/xvda,msdos1)/boot/grub/menu.lst ] ; then set root=(xen/xvda,msdos1) echo "got legacy config in msdos1" legacy_configfile /boot/grub/menu.lst fi # look for grub2 config in flat device for maindir in / boot/ ; do for subdir in grub2 grub; do if [ -f "(xen/xvda)/$maindir/$subdir/grub.cfg" ]; then set root=(xen/xvda) echo "got grub.cfg grub2 in flat device" configfile /$maindir/$subdir/grub.cfg fi if [ -f "(xen/xvdc)/$maindir/$subdir/grub.cfg" ]; then set root=(xen/xvdc) echo "got grub.cfg grub2 in flat device" configfile /$maindir/$subdir/grub.cfg fi done done # look for grub2 config for part in msdos1 gpt1 bsd1 ; do for maindir in / boot/ ; do for subdir in grub2 grub; do if [ -f "(xen/xvdb,$part)/$maindir/$subdir/grub.cfg" ]; then set root=(xen/xvdb,$part) echo "got grub.cfg grub2 in $part" configfile /$maindir/$subdir/grub.cfg fi done done done # look for grub2 config for part in msdos1 gpt1 bsd1 msdos2 gpt2 bsd2; do for maindir in / boot/ ; do for subdir in grub grub2; do if [ -f "(xen/xvda,$part)/$maindir/$subdir/grub.cfg" ]; then set root=(xen/xvda,$part) echo "got grub.cfg grub2 in $part" configfile /$maindir/$subdir/grub.cfg fi done done done # legacy grub with separate /boot for part in msdos1 msdos2 msdos3;do if [ -f "(xen/xvda,$part)/grub/menu.lst" ] ; then set root=(xen/xvda,$part) echo 'echo got legacy grub config in $part' legacy_configfile /grub/menu.lst fi done set root=(xen/xvda) legacy_configfile /boot/grub/menu.lst # giving up, drop to a shell