ylx2016 / kernel

github action compile kernel
137 stars 59 forks source link

kernel5.14缺失xen-blkfront.ko #8

Closed myxuchangbin closed 2 years ago

myxuchangbin commented 2 years ago

自5.14版本以后initrd文件开始缺失xen-blkfront.ko驱动,这就导致在xen虚拟环境下安装kernel5.14+版本,会出现启动失败的问题 目前我知道的aws的ec2,lightsail,在直接安装的情况下都复现了这个问题。

手动解决方法:https://elrepo.org/bugs/view.php?id=1137 https://bugzilla.redhat.com/show_bug.cgi?id=2010058

大佬能否集成一下解决方法到脚本,或者可以直接修复一下内核安装文件

ylx2016 commented 2 years ago

我可以尝试处理 是centos还是debian,给我一个具体的系统版本,最后还的由你测试,我手上没xen的vps

myxuchangbin commented 2 years ago

我是在centos7下复现的

ylx2016 commented 2 years ago

还有个地址是 https://elrepo.org/bugs/view.php?id=1142 提到的解决方案都是在系统下,编译环境我不知道要怎么配置啊

ylx2016 commented 2 years ago

5.10的lts xanmod内核也不行吗 这个也不行我也没办法

myxuchangbin commented 2 years ago

我对内核编译这块不太熟,目前我的解决方法是: 1.在文件/etc/dracut.conf.d/virt-drivers.conf中添加一行:add_drivers+="xen-blkfront" 2.安装kernel 3.执行命令lsinitrd /boot/initramfs-5.15.5.img | grep -E 'xen'确认xen-blkfront驱动在initrd 4.重启,正常启动

不执行上述就会无法启动 我找到一个阿里云的文档:https://help.aliyun.com/document_detail/59360.html 大佬是否可以考虑添加到tcp.sh脚本中来修复此问题

ylx2016 commented 2 years ago

这逻辑不好弄,我没机器也没法测试,你可以自己改tcp,测试没问题了再给我改 对了,你可以提供下能正常运行的内核的config,我可以参考参数改下,或者提供RPM文件连接也行 我目前能做的是可以尝试把CONFIG_XEN_BLKDEV_BACKEND和CONFIG_XEN_BLKDEV_FRONTEND改成y编译下让你测试

myxuchangbin commented 2 years ago

config参数:

cat /boot/config-5.13.13 |grep XEN
CONFIG_XEN=y
CONFIG_XEN_PV=y
CONFIG_XEN_512GB=y
CONFIG_XEN_PV_SMP=y
CONFIG_XEN_DOM0=y
CONFIG_XEN_PVHVM=y
CONFIG_XEN_PVHVM_SMP=y
CONFIG_XEN_PVHVM_GUEST=y
CONFIG_XEN_SAVE_RESTORE=y
# CONFIG_XEN_DEBUG_FS is not set
CONFIG_XEN_PVH=y
CONFIG_PCI_XEN=y
CONFIG_KVM_XEN=y
CONFIG_NET_9P_XEN=m
CONFIG_XEN_PCIDEV_FRONTEND=m
CONFIG_XEN_BLKDEV_FRONTEND=m
CONFIG_XEN_BLKDEV_BACKEND=m
CONFIG_XEN_SCSI_FRONTEND=m
CONFIG_NETXEN_NIC=m
CONFIG_XEN_NETDEV_FRONTEND=m
CONFIG_XEN_NETDEV_BACKEND=m
CONFIG_INPUT_XEN_KBDDEV_FRONTEND=m
CONFIG_HVC_XEN=y
CONFIG_HVC_XEN_FRONTEND=y
CONFIG_TCG_XEN=m
CONFIG_XEN_WDT=m
CONFIG_DRM_XEN=y
CONFIG_DRM_XEN_FRONTEND=m
CONFIG_XEN_FBDEV_FRONTEND=m
CONFIG_SND_XEN_FRONTEND=m
# CONFIG_MMC_SDHCI_XENON is not set
CONFIG_XEN_BALLOON=y
CONFIG_XEN_BALLOON_MEMORY_HOTPLUG=y
CONFIG_XEN_MEMORY_HOTPLUG_LIMIT=512
CONFIG_XEN_SCRUB_PAGES_DEFAULT=y
CONFIG_XEN_DEV_EVTCHN=m
CONFIG_XEN_BACKEND=y
CONFIG_XENFS=m
CONFIG_XEN_COMPAT_XENFS=y
CONFIG_XEN_SYS_HYPERVISOR=y
CONFIG_XEN_XENBUS_FRONTEND=y
CONFIG_XEN_GNTDEV=m
CONFIG_XEN_GNTDEV_DMABUF=y
CONFIG_XEN_GRANT_DEV_ALLOC=m
CONFIG_XEN_GRANT_DMA_ALLOC=y
CONFIG_SWIOTLB_XEN=y
CONFIG_XEN_PCIDEV_BACKEND=y
CONFIG_XEN_PVCALLS_FRONTEND=m
CONFIG_XEN_PVCALLS_BACKEND=y
CONFIG_XEN_SCSI_BACKEND=m
CONFIG_XEN_PRIVCMD=m
CONFIG_XEN_ACPI_PROCESSOR=m
CONFIG_XEN_MCE_LOG=y
CONFIG_XEN_HAVE_PVMMU=y
CONFIG_XEN_EFI=y
CONFIG_XEN_AUTO_XLATE=y
CONFIG_XEN_ACPI=y
CONFIG_XEN_SYMS=y
CONFIG_XEN_HAVE_VPMU=y
CONFIG_XEN_FRONT_PGDIR_SHBUF=m
CONFIG_XEN_UNPOPULATED_ALLOC=y
cat /boot/config-5.15.5 |grep XEN
CONFIG_XEN=y
CONFIG_XEN_PV=y
CONFIG_XEN_512GB=y
CONFIG_XEN_PV_SMP=y
CONFIG_XEN_PV_DOM0=y
CONFIG_XEN_PVHVM=y
CONFIG_XEN_PVHVM_SMP=y
CONFIG_XEN_PVHVM_GUEST=y
CONFIG_XEN_SAVE_RESTORE=y
# CONFIG_XEN_DEBUG_FS is not set
CONFIG_XEN_PVH=y
CONFIG_XEN_DOM0=y
CONFIG_PCI_XEN=y
CONFIG_KVM_XEN=y
CONFIG_NET_9P_XEN=m
CONFIG_XEN_PCIDEV_FRONTEND=m
CONFIG_XEN_BLKDEV_FRONTEND=m
CONFIG_XEN_BLKDEV_BACKEND=m
CONFIG_XEN_SCSI_FRONTEND=m
CONFIG_NETXEN_NIC=m
CONFIG_XEN_NETDEV_FRONTEND=m
CONFIG_XEN_NETDEV_BACKEND=m
CONFIG_INPUT_XEN_KBDDEV_FRONTEND=m
CONFIG_HVC_XEN=y
CONFIG_HVC_XEN_FRONTEND=y
CONFIG_TCG_XEN=m
CONFIG_XEN_WDT=m
CONFIG_DRM_XEN=y
CONFIG_DRM_XEN_FRONTEND=m
CONFIG_XEN_FBDEV_FRONTEND=m
CONFIG_SND_XEN_FRONTEND=m
# CONFIG_MMC_SDHCI_XENON is not set
CONFIG_XEN_BALLOON=y
CONFIG_XEN_BALLOON_MEMORY_HOTPLUG=y
CONFIG_XEN_MEMORY_HOTPLUG_LIMIT=512
CONFIG_XEN_SCRUB_PAGES_DEFAULT=y
CONFIG_XEN_DEV_EVTCHN=m
CONFIG_XEN_BACKEND=y
CONFIG_XENFS=m
CONFIG_XEN_COMPAT_XENFS=y
CONFIG_XEN_SYS_HYPERVISOR=y
CONFIG_XEN_XENBUS_FRONTEND=y
CONFIG_XEN_GNTDEV=m
CONFIG_XEN_GNTDEV_DMABUF=y
CONFIG_XEN_GRANT_DEV_ALLOC=m
CONFIG_XEN_GRANT_DMA_ALLOC=y
CONFIG_SWIOTLB_XEN=y
CONFIG_XEN_PCIDEV_BACKEND=y
CONFIG_XEN_PVCALLS_FRONTEND=m
CONFIG_XEN_PVCALLS_BACKEND=y
CONFIG_XEN_SCSI_BACKEND=m
CONFIG_XEN_PRIVCMD=m
CONFIG_XEN_ACPI_PROCESSOR=m
CONFIG_XEN_MCE_LOG=y
CONFIG_XEN_HAVE_PVMMU=y
CONFIG_XEN_EFI=y
CONFIG_XEN_AUTO_XLATE=y
CONFIG_XEN_ACPI=y
CONFIG_XEN_SYMS=y
CONFIG_XEN_HAVE_VPMU=y
CONFIG_XEN_FRONT_PGDIR_SHBUF=m
CONFIG_XEN_UNPOPULATED_ALLOC=y

驱动文件:

lsinitrd /boot/initramfs-5.13.13.img | grep -E 'xen'
-rw-r--r--   1 root     root        74824 Dec  1 02:56 usr/lib/modules/5.13.13/kernel/drivers/block/xen-blkfront.ko
-rw-r--r--   1 root     root        65944 Dec  1 02:56 usr/lib/modules/5.13.13/kernel/drivers/net/xen-netfront.ko
lsinitrd /boot/initramfs-5.15.5.img | grep -E 'xen'
-rw-r--r--   1 root     root        70008 Dec  1 03:02 usr/lib/modules/5.15.5/kernel/drivers/net/xen-netfront.ko

没有问题的内核版本是<5.14,包括elrepo.org版本的同样存在这类问题,如果单独编译内核暂时解决不了的话,只有考虑修改tcp脚本来暂时缓解

ylx2016 commented 2 years ago

从参数上看没什么问题啊 5.15.5还包含了5.13的参数 我从别处找到了进展,稍后关注release的包含test的内核

ylx2016 commented 2 years ago

你可以测试这个Centos_Kernel_5.15.5_test_2021.12.01-1353里面的内核

myxuchangbin commented 2 years ago

测试了,驱动没有,启动失败了

lsinitrd /boot/initramfs-5.15.5.img | grep -E 'xen'
-rw-r--r--   1 root     root        70008 Dec  1 05:54 usr/lib/modules/5.15.5/kernel/drivers/net/xen-netfront.ko
ylx2016 commented 2 years ago

不是 Centos_Kernel_5.15.5_test_2021.12.01-1327里面的 是Centos_Kernel_5.15.5_test_2021.12.01-1353里面的 一共有两个版本,新一点的理论可以,不行的话还得找找参数

myxuchangbin commented 2 years ago

1353刚测试了2遍,xen-blkfront.ko文件依然不存在,但是系统正常启动了 另外看到 https://github.com/dracutdevs/dracut/commit/b292ce72 最新版本dracut也去修复这个问题了,不过目前大部分系统还得不到更新

ylx2016 commented 2 years ago

xen-blkfront.ko是给外挂加载用的,你当然看不到 直接编译成xen-blkfront.o ,内置了 既然能用有空我改改代码下次自动编译就按这个来 这边我就关了,有问题再回复

ylx2016 commented 2 years ago

最新Centos_Kernel_5.15.6_latest_bbr_2021.12.01-1824 已经包含 已经加入自动化

myxuchangbin commented 2 years ago

已测试xen虚拟环境下5.15.6可正常启动,感谢大佬支持!