Linux xd 5.10.0-16-amd64 #1 SMP Debian 5.10.127-1 (2022-06-30) x86_64 GNU/Linux
2022-07-20 수정
이런 문제가 가끔 발생합니다. 현재 Xen을 시작하고 initramfs에 로그인할 때 많은 어려움을 겪고 있습니다.
Wiki에서는 썸 드라이브나 루트 디렉터리를 마운트할 것을 권장합니다( mount -o remount,rw/root ).
분명히 디스크가 보이지 않습니다. 전체 구성 파일과 dmesg 등은 Xen 목록에서 찾을 수 있습니다.
https://lists.xenproject.org/archives/html/xen-users/2022-07/threads.html#00041
https://lists.xenproject.org/archives/html/xen-users/2022-07/msg00057.html
내 debian11 에는 xen-hypervisor-4.14-amd64
, xen-hypervisor-common
및xen-system-amd64
xen-utils-4.14
그런데 Xen을 시작할 수 없습니다. 도와주세요.
이론적으로 Xen을 설치한 후https://wiki.debian.org/Xen, 그냥 실행해야 합니다:
dpkg-divert --divert /etc/grub.d/08_linux_xen --rename /etc/grub.d/20_linux_xen
update-grub
불행하게도 boot break와 grub 메일링 리스트에서는 작년 3월과 4월 사이에 이 문제에 대해 매우 심도 있게 논의했습니다. 명백히 multiboot2는 이 문제를 해결하지 못할 것입니다:
https://www.mail-archive.com/[이메일 보호됨]/msg32020.html
분명히 모든 것이 잘못되었습니다 initrd
. Xen을 설치한 후 다시 빌드해야 합니까 initrd
? 어떻게 해야 합니까?
도움이 필요해요. 아직 미정인가요? 사용할 수 있는 해결 방법이 있습니까(Xen에서 부분적으로 부팅하고 프롬프트에서 Xen이 작동하는 데 필요한 나머지를 수동으로 로드)? 어떻게 진행해야 하나요? grub, debian xen 패키지 및 Xen에 요청/오류로 등록해 보겠습니다. 수행할 작업에 대한 더 많은 아이디어가 있습니까?
grub 메일링 리스트에 대한 토론에서는 다음과 같이 지적합니다.
https://wiki.debian.org/DebianInstaller/NetbootFirmware#The_Solution:_Add_Firmware_to_Initramfs
매우 복잡하고 위험해 보이는데...이게 앞으로 나아갈 방향인가요?
Xen에 필요한 기능을 지원할 수 있도록 grub2를 패치한 사람이 있습니까?
참고: 저는 Eve가 아닌 순수 Xen을 사용하고 있습니다.
/etc/default/grub
문서 내용:
# 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
문서 내용:
#
# 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' {
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 ###
답변1
불행하게도 Xen은 이 하드웨어와 호환되지 않습니다.
추적성을 위해 xen-devel에서 이에 대해 논의합니다.
https://xen.markmail.org/message/7jgv47pk5rsea4ef?q=+list:com%2Exensource%2Elists%2Exen-devel&page=6
펌웨어는 16비트보다 더 넓은 세그먼트 번호를 가지고 있으며 NVME는 부팅 중에 이를 호출하는데 이것이 근본적인 문제입니다.
Xen은 아직 이러한 유형의 하드웨어와 호환되지 않습니다.
xen-devel에 보고된 바와 같이, 선량한 사람이 이 새로운 기능(아마도 새로운 슈퍼콜 sun 기능)을 구현하는 것이 항상 가능합니다. 아니면 모든 하드웨어가 이를 실현할 만큼 충분히 발전했을 수도 있습니다.
불행히도 Xen이 해당 하드웨어와 호환되지 않기 때문에 사람들의 조언을 따르고 Quemu가 있는 KVM으로 이동할 것입니다.
나는 또한 Acer에게 16이지만 PCI 펌웨어 업데이트에 대해 물었습니다.