Allow elements to add drivers to dracut
It is reasonable that elements may need to include additional kernel modules in a dracut ramdisk. This is done with the --add-drivers option to dracut, but previously the value passed was hard-coded. This change allows an element to put a file containing its desired drivers in a dracut-drivers.d directory, and the list there will be added to the list of drivers added. This functions in essentially the same way as the binary-deps.d directory that already exists for including additional executables in a ramdisk. Change-Id: Ie892b908d36c175a469f7cde7dd803ad4b1942b6
This commit is contained in:
parent
a341ca84e7
commit
6377c723aa
@ -6,3 +6,15 @@ Build Dracut-based ramdisks
|
|||||||
This is an alternative to the `ramdisk` element that uses
|
This is an alternative to the `ramdisk` element that uses
|
||||||
Dracut to provide the base system functionality instead of
|
Dracut to provide the base system functionality instead of
|
||||||
Busybox.
|
Busybox.
|
||||||
|
|
||||||
|
For elements that need additional drivers in the ramdisk image,
|
||||||
|
a dracut-drivers.d feature is included that works in a similar
|
||||||
|
fashion to the binary-deps.d feature. The element needing to
|
||||||
|
add drivers should create a dracut-drivers.d directory and
|
||||||
|
populate it with a single file listing all of the kernel modules
|
||||||
|
it needs added to the ramdisk. Comments are not supported in this
|
||||||
|
file. Note that these modules must be installed in the chroot first.
|
||||||
|
|
||||||
|
By default, the virtio, virtio_net, and virtio_blk modules are
|
||||||
|
included so that ramdisks are able to function properly in a
|
||||||
|
virtualized environment.
|
||||||
|
3
elements/dracut-ramdisk/dracut-drivers.d/base-drivers
Normal file
3
elements/dracut-ramdisk/dracut-drivers.d/base-drivers
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
virtio
|
||||||
|
virtio_net
|
||||||
|
virtio_blk
|
29
elements/dracut-ramdisk/post-install.d/01-ensure-drivers
Executable file
29
elements/dracut-ramdisk/post-install.d/01-ensure-drivers
Executable file
@ -0,0 +1,29 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -eu
|
||||||
|
set -o pipefail
|
||||||
|
|
||||||
|
if [ ${DIB_DEBUG_TRACE:-1} -gt 0 ]; then
|
||||||
|
set -x
|
||||||
|
fi
|
||||||
|
|
||||||
|
TARGET_DIR="/tmp/in_target.d/"
|
||||||
|
|
||||||
|
EXTRA_DRIVERS=
|
||||||
|
|
||||||
|
for _FILE in $(ls ${TARGET_DIR}/dracut-drivers.d/) ; do
|
||||||
|
_FILE="${TARGET_DIR}/dracut-drivers.d/${_FILE}"
|
||||||
|
if [ -s $_FILE ]; then
|
||||||
|
for _LINE in $(cat $_FILE) ; do
|
||||||
|
EXTRA_DRIVERS="${EXTRA_DRIVERS} $_LINE"
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ "$EXTRA_DRIVERS" = "" ]; then
|
||||||
|
echo "No extra drivers found"
|
||||||
|
else
|
||||||
|
DRIVERS_OUTPUT="/etc/dib_dracut_drivers"
|
||||||
|
echo "Creating extra drivers record at: ${DRIVERS_OUTPUT}"
|
||||||
|
echo "$EXTRA_DRIVERS" >${DRIVERS_OUTPUT}
|
||||||
|
fi
|
@ -66,7 +66,7 @@ dracut -N \
|
|||||||
--kernel-cmdline "rd.shell rd.debug rd.neednet=1 rd.driver.pre=ahci" \
|
--kernel-cmdline "rd.shell rd.debug rd.neednet=1 rd.driver.pre=ahci" \
|
||||||
--include "$TMP_MOUNT_PATH/" / \
|
--include "$TMP_MOUNT_PATH/" / \
|
||||||
--kver "${KERNEL_VERSION}" \
|
--kver "${KERNEL_VERSION}" \
|
||||||
--add-drivers "virtio virtio_net virtio_blk" \
|
--add-drivers "$(cat /etc/dib_dracut_drivers)" \
|
||||||
-o "dash plymouth" \
|
-o "dash plymouth" \
|
||||||
/tmp/ramdisk
|
/tmp/ramdisk
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user