[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Boot into Xen on debian11



Hi Bruno,

On 2022-07-19 15:42, Bruno wrote:
Hello.

Is there a way to boot into Xen on debian11 installing Xen the way documented, please?

Multiboot2 is not doing the trick with initrd. Is there a workaround or a way to?

Do we need a patch to grub to make Xen usable on this scenario? Does anyone boot into Xen? On debian? Debian11, please?

Debian 11 should work out of the box.

I have posted it on stackexchange:

https://unix.stackexchange.com/q/710400/375983

Linux xd 5.10.0-16-amd64 #1 SMP Debian 5.10.127-1 (2022-06-30) x86_64 GNU/Linux

On my debian11, I have installed xen-hypervisor-4.14-amd64, xen-hypervisor-common, xen-system-amd64, and xen-utils-4.14

Is xen-utils-common installed? I would expect it to be, but worth checking.

But I cannot boot into Xen, please help.

What do you mean by that? Does it crash, reboot, blank screen, something else?

Theoretically, after installing Xen, according to https://wiki.debian.org/Xen , I should only run:

dpkg-divert --divert /etc/grub.d/08_linux_xen --rename /etc/grub.d/20_linux_xen

update-grub

According to the Wiki, that step is only for Wheezy / Squeeze and is not required for Debian 11. I'd undo that, and re-run update-grub.

Unfortunately, boot breaks and grub mailing list had a very deep debate on it last March-April - apparently multiboot2 will NOT do the trick:

https://www.mail-archive.com/grub-devel@xxxxxxx/msg32020.html

I need some help, please. Is this inconclusive? Is there a work-around I could use (some partial boot on Xen and manually loading on the prompt the rest of what is needed for Xen to work)? How should I proceed? I will try to register this on grub, debian xen packages and Xen as requests/bugs - any further ideas on actions, please?

It should just work, if you provide more information on what you are seeing, it should be possible to resolve.

The discussion on grub mailing list points to this:

https://wiki.debian.org/DebianInstaller/NetbootFirmware#The_Solution:_Add_Firmware_to_Initramfs

This seems very complicated and risky... is this the way forward?

Did anyone patch grub2 to be able to support what's needed for Xen, please?

There's no need.

Note: I'm using pure Xen, NOT Eve.

/etc/default/grub file contents:

# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.
# For full documentation of the options in this file, see:
#   info -f grub -n 'Simple configuration'

GRUB_DEFAULT=0
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet"
GRUB_CMDLINE_LINUX=""

# Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel that obtains # the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)
#GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"

# Uncomment to disable graphical terminal (grub-pc only)
#GRUB_TERMINAL=console

# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
#GRUB_GFXMODE=640x480

# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
#GRUB_DISABLE_LINUX_UUID=true

# Uncomment to disable generation of recovery mode menu entries
#GRUB_DISABLE_RECOVERY="true"

# Uncomment to get a beep at grub start
#GRUB_INIT_TUNE="480 440 1"

/boot/grub/grub.cfg file contents:

#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by grub-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub
#

### BEGIN /etc/grub.d/00_header ###
if [ -s $prefix/grubenv ]; then
set have_grubenv=true
load_env
fi
if [ "${next_entry}" ] ; then
set default="${next_entry}"
set next_entry=
save_env next_entry
set boot_once=true
else
set default="Debian GNU/Linux, with Xen hypervisor"
fi

if [ x"${feature_menuentry_id}" = xy ]; then
menuentry_id_option="--id"
else
menuentry_id_option=""
fi

export menuentry_id_option

if [ "${prev_saved_entry}" ]; then
set saved_entry="${prev_saved_entry}"
save_env saved_entry
set prev_saved_entry=
save_env prev_saved_entry
set boot_once=true
fi

function savedefault {
if [ -z "${boot_once}" ]; then
saved_entry="${chosen}"
save_env saved_entry
fi
}
function load_video {
if [ x$feature_all_video_module = xy ]; then
insmod all_video
else
insmod efi_gop
insmod efi_uga
insmod ieee1275_fb
insmod vbe
insmod vga
insmod video_bochs
insmod video_cirrus
fi
}

if [ x$feature_default_font_path = xy ] ; then
font=unicode
else
insmod part_gpt
insmod ext2
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root  0123abcd
else
search --no-floppy --fs-uuid --set=root 0123abcd
fi
font="/usr/share/grub/unicode.pf2"
fi

if loadfont $font ; then
set gfxmode=auto
load_video
insmod gfxterm
set locale_dir=$prefix/locale
set lang=en_GB
insmod gettext
fi
terminal_output gfxterm
if [ "${recordfail}" = 1 ] ; then
set timeout=30
else
if [ x$feature_timeout_style = xy ] ; then
set timeout_style=menu
set timeout=5
# Fallback normal timeout code in case the timeout_style feature is
# unavailable.
else
set timeout=5
fi
fi
### END /etc/grub.d/00_header ###

### BEGIN /etc/grub.d/05_debian_theme ###
insmod part_gpt
insmod ext2
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root  0123abcd
else
search --no-floppy --fs-uuid --set=root 0123abcd
fi
insmod png
if background_image /usr/share/desktop-base/homeworld-theme/grub/grub-4x3.png; then
set color_normal=white/black
set color_highlight=black/white
else
set menu_color_normal=cyan/blue
set menu_color_highlight=white/blue
fi
### END /etc/grub.d/05_debian_theme ###

### BEGIN /etc/grub.d/08_linux_xen ###
menuentry 'Debian GNU/Linux, with Xen hypervisor' --class debian --class gnu-linux --class gnu --class os --class xen $menuentry_id_option 'xen-gnulinux-simple-0123abcd' {

So the menu entry is created - can you see it in the grub menu?

insmod part_gpt
insmod ext2
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root  0123abcd
else
search --no-floppy --fs-uuid --set=root 0123abcd
fi
echo    'Loading Xen 4.14-amd64 ...'
if [ "$grub_platform" = "pc" -o "$grub_platform" = "" ]; then
xen_rm_opts=
else
xen_rm_opts="no-real-mode edd=off"
fi
multiboot2  /xen-4.14-amd64.gz placeholder   ${xen_rm_opts}
echo    'Loading Linux 5.10.0-16-amd64 ...'
module2 /vmlinuz-5.10.0-16-amd64 placeholder root=UUID=0123abcd ro quiet
echo    'Loading initial ramdisk ...'
module2 --nounzip   /initrd.img-5.10.0-16-amd64
}
submenu 'Advanced options for Debian GNU/Linux (with Xen hypervisor)' $menuentry_id_option 'gnulinux-advanced-0123abcd' { submenu 'Xen hypervisor, version 4.14-amd64' $menuentry_id_option 'xen-hypervisor-4.14-amd64-0123abcd' { menuentry 'Debian GNU/Linux, with Xen 4.14-amd64 and Linux 5.10.0-16-amd64' --class debian --class gnu-linux --class gnu --class os --class xen $menuentry_id_option 'xen-gnulinux-5.10.0-16-amd64-advanced-0123abcd' {
insmod part_gpt
insmod ext2
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root  0123abcd
else
search --no-floppy --fs-uuid --set=root 0123abcd
fi
echo    'Loading Xen 4.14-amd64 ...'
if [ "$grub_platform" = "pc" -o "$grub_platform" = "" ]; then
xen_rm_opts=
else
xen_rm_opts="no-real-mode edd=off"
fi
multiboot2  /xen-4.14-amd64.gz placeholder   ${xen_rm_opts}
echo    'Loading Linux 5.10.0-16-amd64 ...'
module2 /vmlinuz-5.10.0-16-amd64 placeholder root=UUID=0123abcd ro quiet
echo    'Loading initial ramdisk ...'
module2 --nounzip   /initrd.img-5.10.0-16-amd64
}
menuentry 'Debian GNU/Linux, with Xen 4.14-amd64 and Linux 5.10.0-16-amd64 (recovery mode)' --class debian --class gnu-linux --class gnu --class os --class xen $menuentry_id_option 'xen-gnulinux-5.10.0-16-amd64-recovery-0123abcd' {
insmod part_gpt
insmod ext2
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root  0123abcd
else
search --no-floppy --fs-uuid --set=root 0123abcd
fi
echo    'Loading Xen 4.14-amd64 ...'
if [ "$grub_platform" = "pc" -o "$grub_platform" = "" ]; then
xen_rm_opts=
else
xen_rm_opts="no-real-mode edd=off"
fi
multiboot2  /xen-4.14-amd64.gz placeholder  ${xen_rm_opts}
echo    'Loading Linux 5.10.0-16-amd64 ...'
module2 /vmlinuz-5.10.0-16-amd64 placeholder root=UUID=0123abcd ro single
echo    'Loading initial ramdisk ...'
module2 --nounzip   /initrd.img-5.10.0-16-amd64
}
}
submenu 'Xen hypervisor, version 4.14-amd64.efi' $menuentry_id_option 'xen-hypervisor-4.14-amd64.efi-0123abcd' { menuentry 'Debian GNU/Linux, with Xen 4.14-amd64.efi and Linux 5.10.0-16-amd64' --class debian --class gnu-linux --class gnu --class os --class xen $menuentry_id_option 'xen-gnulinux-5.10.0-16-amd64-advanced-0123abcd' {
insmod part_gpt
insmod ext2
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root  0123abcd
else
search --no-floppy --fs-uuid --set=root 0123abcd
fi
echo    'Loading Xen 4.14-amd64.efi ...'
if [ "$grub_platform" = "pc" -o "$grub_platform" = "" ]; then
xen_rm_opts=
else
xen_rm_opts="no-real-mode edd=off"
fi
multiboot2  /xen-4.14-amd64.efi placeholder   ${xen_rm_opts}
echo    'Loading Linux 5.10.0-16-amd64 ...'
module2 /vmlinuz-5.10.0-16-amd64 placeholder root=UUID=0123abcd ro quiet
echo    'Loading initial ramdisk ...'
module2 --nounzip   /initrd.img-5.10.0-16-amd64
}
menuentry 'Debian GNU/Linux, with Xen 4.14-amd64.efi and Linux 5.10.0-16-amd64 (recovery mode)' --class debian --class gnu-linux --class gnu --class os --class xen $menuentry_id_option 'xen-gnulinux-5.10.0-16-amd64-recovery-0123abcd' {
insmod part_gpt
insmod ext2
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root  0123abcd
else
search --no-floppy --fs-uuid --set=root 0123abcd
fi
echo    'Loading Xen 4.14-amd64.efi ...'
if [ "$grub_platform" = "pc" -o "$grub_platform" = "" ]; then
xen_rm_opts=
else
xen_rm_opts="no-real-mode edd=off"
fi
multiboot2  /xen-4.14-amd64.efi placeholder  ${xen_rm_opts}
echo    'Loading Linux 5.10.0-16-amd64 ...'
module2 /vmlinuz-5.10.0-16-amd64 placeholder root=UUID=0123abcd ro single
echo    'Loading initial ramdisk ...'
module2 --nounzip   /initrd.img-5.10.0-16-amd64
}
}
}

### END /etc/grub.d/08_linux_xen ###

### BEGIN /etc/grub.d/10_linux ###
function gfxmode {
set gfxpayload="${1}"
}
set linux_gfx_mode=
export linux_gfx_mode
menuentry 'Debian GNU/Linux' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-0123abcd' {
load_video
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_gpt
insmod ext2
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root  0123abcd
else
search --no-floppy --fs-uuid --set=root 0123abcd
fi
echo    'Loading Linux 5.10.0-16-amd64 ...'
linux   /vmlinuz-5.10.0-16-amd64 root=UUID=0123abcd ro  quiet
echo    'Loading initial ramdisk ...'
initrd  /initrd.img-5.10.0-16-amd64
}
submenu 'Advanced options for Debian GNU/Linux' $menuentry_id_option 'gnulinux-advanced-0123abcd' { menuentry 'Debian GNU/Linux, with Linux 5.10.0-16-amd64' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.10.0-16-amd64-advanced-0123abcd' {
load_video
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_gpt
insmod ext2
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root  0123abcd
else
search --no-floppy --fs-uuid --set=root 0123abcd
fi
echo    'Loading Linux 5.10.0-16-amd64 ...'
linux   /vmlinuz-5.10.0-16-amd64 root=UUID=0123abcd ro  quiet
echo    'Loading initial ramdisk ...'
initrd  /initrd.img-5.10.0-16-amd64
}
menuentry 'Debian GNU/Linux, with Linux 5.10.0-16-amd64 (recovery mode)' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.10.0-16-amd64-recovery-0123abcd' {
load_video
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_gpt
insmod ext2
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root  0123abcd
else
search --no-floppy --fs-uuid --set=root 0123abcd
fi
echo    'Loading Linux 5.10.0-16-amd64 ...'
linux   /vmlinuz-5.10.0-16-amd64 root=UUID=0123abcd ro single
echo    'Loading initial ramdisk ...'
initrd  /initrd.img-5.10.0-16-amd64
}
}

### END /etc/grub.d/10_linux ###

### BEGIN /etc/grub.d/30_os-prober ###
### END /etc/grub.d/30_os-prober ###

### BEGIN /etc/grub.d/30_uefi-firmware ###
menuentry 'System setup' $menuentry_id_option 'uefi-firmware' {
fwsetup
}
### END /etc/grub.d/30_uefi-firmware ###

### BEGIN /etc/grub.d/40_custom ###
# This file provides an easy way to add custom menu entries. Simply type the # menu entries you want to add after this comment. Be careful not to change
# the 'exec tail' line above.
### END /etc/grub.d/40_custom ###

### BEGIN /etc/grub.d/41_custom ###
if [ -f  ${config_directory}/custom.cfg ]; then
source ${config_directory}/custom.cfg
elif [ -z "${config_directory}" -a -f  $prefix/custom.cfg ]; then
source $prefix/custom.cfg;
fi
### END /etc/grub.d/41_custom ###

Regards,

Leigh.



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.