0

I've been working on a Yocto project(Kirkstone branch) which is enhanced with meta-intel. The build produces several artifacts including a bootable ISO file, a kernel file, and multiple initramfs files. When I boot the ISO file in a VirtualBox VM, it performs as expected - successfully live booting, installing, and recognizing the /dev/sda. A grub menu is also provided during the VM boot, offering options for live booting and installation. The ISO file contains various components such as bzImage, efi.img, initrd, rootfs.img, startup.nsh, and the EFI and isolinux directories.

The issue arises when I attempt to boot the build over iPXE. I pass the kernel (bzImage) and initramfs (core-image-full-cmdline-intel-corei7-64.cpio.gz) files to an HP Server with a Xeon processor for live booting, and while it boots successfully, no disks are visible under the /dev directory. Running commands such as lsblk yield no results, and fdisk -l only shows entries like ram0, ram1, etc., up to ram8. Notably, I cannot use ISO, hddimg, or any other format to boot over iPXE.

For the installation process to begin on the server from the live boot environment, the presence of /dev/sdX or /dev/nvme* is crucial. I suspect that the issue may be related to filesystem drivers not loading correctly.

Here is my redacted local.conf content, which successfully boots the ISO on VirtualBox:

IMAGE_TYPEDEP_wic = "ext4"
INITRD_IMAGE_LIVE="core-image-minimal-initramfs"
LABELS_LIVE = "boot install"
EFI_PROVIDER = "grub-efi" 
do_image_wic[depends] += "${INITRD_IMAGE_LIVE}:do_image_complete"
do_rootfs[depends] += "virtual/kernel:do_deploy"
IMAGE_BOOT_FILES:append = "\
      ${KERNEL_IMAGETYPE} \
      microcode.cpio \
      ${IMGDEPLOYDIR}/${IMAGE_BASENAME}-${MACHINE}.ext4;rootfs.img \
      ${@bb.utils.contains('EFI_PROVIDER', 'grub-efi', 'grub-efi-bootx64.efi;EFI/BOOT/bootx64.efi', '', d)} \
      ${@bb.utils.contains('EFI_PROVIDER', 'grub-efi', '${IMAGE_ROOTFS}/boot/EFI/BOOT/grub.cfg;EFI/BOOT/grub.cfg', '', d)} \
      ${@bb.utils.contains('EFI_PROVIDER', 'systemd-boot', 'systemd-bootx64.efi;EFI/BOOT/bootx64.efi', '', d)} \
      ${@bb.utils.contains('EFI_PROVIDER', 'systemd-boot', '${IMAGE_ROOTFS}/boot/loader/loader.conf;loader/loader.conf ', '', d)} \
      ${@bb.utils.contains('EFI_PROVIDER', 'systemd-boot', '${IMAGE_ROOTFS}/boot/loader/entries/boot.conf;loader/entries/boot.conf', '', d)} "

INIT_MANAGER = "systemd"
VIRTUAL-RUNTIME_init_manager = "systemd"
DISTRO_FEATURES_BACKFILL_CONSIDERED = "sysvinit"
MACHINE_FEATURES_NATIVE:append = " efi"
MACHINE_FEATURES:append = " efi"
MACHINE_FEATURES:append = " pcbios util-linux-blkid"
IMAGE_INSTALL:append = " grub grub-efi grub-bootconf"
CORE_IMAGE_EXTRA_INSTALL:append = " kernel-modules"

My bblayers.conf is below:

# POKY_BBLAYERS_CONF_VERSION is increased each time build/conf/bblayers.conf
# changes incompatibly
POKY_BBLAYERS_CONF_VERSION = "2"

BBPATH = "${TOPDIR}"
BBFILES ?= ""

BBLAYERS ?= " \
  /home/poky/meta \
  /home/poky/meta-poky \
  /home/poky/meta-yocto-bsp \
  /home/poky/meta-openembedded/meta-oe \
  /home/poky/meta-openembedded/meta-python \
  /home/poky/meta-openembedded/meta-networking \
  /home/poky/meta-openembedded/meta-filesystems \
  /home/poky/meta-openembedded/meta-perl \
  /home/poky/meta-selinux \
  /home/poky/meta-virtualization \
  /home/poky/meta-intel \
  "

and my boot.ipxe file looks like this:

# Fetch the kernel
kernel ${base}/bzImage root=/dev/nfs initrd=core-image-full-cmdline-intel-corei7-64.cpio.gz
initrd ${base}/core-image-full-cmdline-intel-corei7-64.cpio.gz
imgargs bzImage LABEL=boot rootwait console=ttyS0,115200 console=tty0
boot || goto failed
goto start

The goal here is to identify the best method to install the Yocto build on the server while it is live booted using initramfs and bzImage. I'm seeking guidance on how to ensure that all necessary drivers are added to the kernel(bzImage and initramfs)

Nauman Shakir
  • 135
  • 1
  • 3
  • 15
  • 1
    You first need to find which is the disk technology of your HP server, then check its support in your kernel configuration. What is the disk technology of your HP server, arn't they behind a kind of specific hardware RAID controller or the like? If yes, find which linux configuration key may be responsible of this device support, for example by browsing https://www.kernelconfig.io with the name of your disk control chip, and grep this key in your effective linux configuration (`zgrep XXX /proc/config.gz`). – A. Loiseau Jul 14 '23 at 18:27

1 Answers1

0

The issue was related to RAID drivers not getting included in the kernel. I enabled CONFIG_SCSI_SMARTPQI and CONFIG_SCSI_HPSA kernel menuconfig and it worked.

Nauman Shakir
  • 135
  • 1
  • 3
  • 15