diff --git a/bsp-files/kickstarts/functions.sh b/bsp-files/kickstarts/functions.sh index 0dbdfa12..ebbbe29f 100644 --- a/bsp-files/kickstarts/functions.sh +++ b/bsp-files/kickstarts/functions.sh @@ -73,5 +73,29 @@ function get_http_port() echo \$(cat /proc/cmdline |xargs -n1 echo |grep '^inst.repo=' | sed -r 's#^[^/]*://[^/]*:([0-9]*)/.*#\1#') } +get_disk_dev() +{ + local disk + # Detect HDD + for blk_dev in vda vdb sda sdb dda ddb hda hdb; do + if [ -d /sys/block/\$blk_dev ]; then + disk=\$(ls -l /sys/block/\$blk_dev | grep -v usb | head -n1 | sed 's/^.*\([vsdh]d[a-z]\+\).*$/\1/'); + if [ -n \$disk ]; then + echo \$disk + return + fi + fi + done + for blk_dev in nvme0n1 nvme1n1; do + if [ -d /sys/block/\$blk_dev ]; then + disk=\$(ls -l /sys/block/\$blk_dev | grep -v usb | head -n1 | sed 's/^.*\(nvme[01]n1\).*$/\1/'); + if [ -n \$disk ]; then + echo \$disk + return + fi + fi + done +} + END_FUNCTIONS diff --git a/bsp-files/kickstarts/pre_common_head.cfg b/bsp-files/kickstarts/pre_common_head.cfg index 88edab48..01db59bf 100644 --- a/bsp-files/kickstarts/pre_common_head.cfg +++ b/bsp-files/kickstarts/pre_common_head.cfg @@ -36,6 +36,10 @@ else append="$append tboot=false" fi +if [ -z "$boot_device" ]; then + boot_device=$(get_disk_dev) +fi + boot_device_arg= if [ -n "$boot_device" ] ; then boot_device_arg="--boot-drive=$(get_by_path $boot_device)" diff --git a/bsp-files/kickstarts/pre_disk_setup_common.cfg b/bsp-files/kickstarts/pre_disk_setup_common.cfg index 1b3965c2..c7a6d863 100644 --- a/bsp-files/kickstarts/pre_disk_setup_common.cfg +++ b/bsp-files/kickstarts/pre_disk_setup_common.cfg @@ -10,33 +10,11 @@ set -- `cat /proc/cmdline` for I in $*; do case "$I" in *=*) eval $I 2>/dev/null;; esac; done -# Find either the ISO or USB device first chopping off partition -ISO_DEV=`readlink /dev/disk/by-label/oe_iso_boot` -sdev=`echo $ISO_DEV | sed -e 's/.$//'` -if [ -e /dev/disk/by-label/$sdev ] ; then - ISO_DEV=$sdev +if [ -z "$boot_device" ]; then + boot_device=$(get_disk_dev) fi -USB_DEV=`readlink /dev/disk/by-label/wr_usb_boot` -sdev=`echo $USB_DEV | sed -e 's/.$//'` -if [ -e /dev/disk/by-label/$sdev ] ; then - USB_DEV=$sdev -fi - -# Temporary, until lab pxelinux.cfg files are updated to specify install devices -if [ -z "$rootfs_device" -o -z "$boot_device" ] -then - INST_HDD="" - # Prefer a vd* device if this is kvm/qemu - for e in vda vdb sda sdb nvme0n1; do - if [ -e /dev/$e -a "$ISO_DEV" != "../../$e" -a "$USB_DEV" != "../../$e" ] ; then - INST_HDD=$e - break - fi - done - - # Set variables to $INST_HDD if not set - rootfs_device=${rootfs_device:-$INST_HDD} - boot_device=${boot_device:-$INST_HDD} +if [ -z "$rootfs_device" ]; then + rootfs_device=$(get_disk_dev) fi # Convert to by-path