Boot Ubuntu from FCoE in a HPE ProLiant BL460c Gen10
I have an HPE Proliant BL460c Gen10 Server that I want to install it Ubuntu. The server only has Fabric FCoE to an external SAN. When I boot from an HPE Ubuntu 20.04 ISO then the HDD is not recognized, but I then install there on the install media the package fcoe-utils
(apt install fcoe-utils
). Later, I configure in /etc/fcoe/
the config files for eno3
and eno4
disabling the DCB_REQUIRED
option and all worked OK. Installed the system there on the multipath disc created.
Now the server boot the UEFI Ubuntu entry, but the initramfs does not recognise the hard disk, because the FCoE is not configured inside initramfs. What can I do?
Testing I entered with a live system with chroot on the Ubuntu installed (after configured again the FCoE), installed Dracut (because I see that it has a fcoe specific module), but when I tried to boot again... the interface never get the AUTO_VLAN config, but on live system works great.
- Configure FCoE on live server install environment
- Install server and at the end not restart, got to the shell
- Chroot inside /target
mount -t proc none /target/proc
mount -t sysfs none /target/sys
chroot /target
- Install base dependencies:
apt install dracut dracut-network fcoe-utils
- Edit
/usr/lib/dracut/modules.d/95fcoe/fcoe-up.sh
Add below variable definition (line 20)
if [ "$netif" == "eth2" ]
then
netif="eno3"
elif [ "$netif" == "eth3" ]
then
netif="eno4"
fi
This is because on boot dracut get the network interfaces as ethX, but at same time the kernel rename the interfaces to enoX, so not found it.
- Edit
/usr/lib/dracut/modules.d/90lvm/64-lvm.rules
Add this on top of RUN lvm_scan sentences
RUN+="/sbin/initqueue --settled --onetime --unique /sbin/kpartx -u /dev/mapper/mpatha"
- Download & Install sg3-utils version > focal_version deb
http://mirrors.kernel.org/ubuntu/pool/main/s/sg3-utils/sg3-utils-udev_1.45-1ubuntu1_all.deb
apt install ./<downloaded_file>
This is because the focal version has a hard dependency of initramfs-tools that dont work with dracut.
- Execute dracut
dracut -m "fcoe fcoe-uefi multipath lvm bash network base" --add-drivers "dm_service_time bnx2fc cnic uio fcoe libfcoe libfc mac_hid hid_generic usbhid hid 8021q garp mrp stp llc bonding cfg80211 dm_multipath scsi_dh_rdac scsi_dh_emc scsi_dh_alua intel_rapl_msr intel_rapl_common ipmi_ssif isst_if_common nfit x86_pkg_temp_thermal intel_powerclamp coretemp kvm_intel kvm joydev input_leds rapl intel_cstate hpilo hpwdt mei_me mei ioatdma ipmi_si dca ipmi_devintf ipmi_msghandler acpi_tad mac_hid acpi_power_meter sch_fq_codel ip_tables x_tables autofs4 overlay nls_utf8 isofs raid10 raid456 async_raid6_recov async_memcpy async_pq async_xor async_tx xor raid6_pq raid1 raid0 multipath linear hid_generic crct10dif_pclmul crc32_pclmul ghash_clmulni_intel aesni_intel qla2xxx crypto_simd mgag200 cryptd drm_vram_helper glue_helper i2c_algo_bit ttm nvme_fc bnx2x nvme_fabrics drm_kms_helper nvme_core syscopyarea sysfillrect scsi_transport_fc sysimgblt usbhid fb_sys_fops mdio libcrc32c hid drm lpc_ich wmi usb_storage" --fstab --force --kver 5.4.0-77-generic
-
Get info from dracut output about fcoe
-
For example:
dracut: fcoe=eno3:nodcb:fabric
fcoe=eno4:nodcb:fabric
ifname=eno3:aa:bb:cc:dd:ee:fe
ifname=eno4:aa:bb:cc:dd:ee:ff
Remove dracut:
and put in one line all the config to the kernel line boot on grub.cfg.
- Modify grub.cfg and put the new reference to the iniramfs created
- Unmount all and reset