5 local _blockfuncs
='ahci_platform_get_resources|ata_scsi_ioctl|scsi_add_host|blk_cleanup_queue|register_mtd_blktrans|scsi_esp_register|register_virtio_device|usb_stor_disconnect|mmc_add_host|sdhci_add_host|scsi_add_host_with_dma|blk_mq_alloc_disk|blk_cleanup_disk'
6 local -A _hostonly_drvs
8 record_block_dev_drv
() {
10 for _mod
in $
(get_dev_module
/dev
/block
/"$1"); do
11 _hostonly_drvs
["$_mod"]="$_mod"
14 for _mod
in $
(get_blockdev_drv_through_sys
"/sys/dev/block/$1"); do
15 _hostonly_drvs
["$_mod"]="$_mod"
18 ((${#_hostonly_drvs[@]} > 0)) && return 0
22 install_block_modules_strict
() {
23 hostonly
='' instmods
"${_hostonly_drvs[@]}"
26 install_block_modules
() {
28 scsi_dh_rdac scsi_dh_emc scsi_dh_alua \
29 =drivers
/usb
/storage \
31 virtio_blk virtio_scsi
33 dracut_instmods
-o -s "${_blockfuncs}" "=drivers"
36 if [[ -z $drivers ]]; then
37 hostonly
='' instmods \
40 hostonly
=$
(optional_hostonly
) instmods \
41 ehci-hcd ehci-pci ehci-platform \
45 xhci-hcd xhci-pci xhci-plat-hcd \
47 "=drivers/tty/serial" \
48 "=drivers/input/serio" \
49 "=drivers/input/keyboard" \
51 "=drivers/pci/controller" \
53 "=drivers/usb/typec" \
58 atkbd i8042 firewire-ohci pcmcia hv-vmbus \
59 virtio virtio_ring virtio_pci pci_hyperv \
62 if [[ ${DRACUT_ARCH:-$(uname -m)} == arm* || ${DRACUT_ARCH:-$(uname -m)} == aarch64 || ${DRACUT_ARCH:-$(uname -m)} == riscv
* ]]; then
63 # arm/aarch64 specific modules
64 _blockfuncs
+='|dw_mc_probe|dw_mci_pltfm_register|nvme_init_ctrl'
72 "=drivers/hwspinlock" \
73 "=drivers/i2c/busses" \
82 "=drivers/regulator" \
88 "=drivers/usb/chipidea" \
92 "=drivers/usb/isp1760" \
96 "=drivers/scsi/hisi_sas"
99 awk -F: '/^\// {print $1}' "$srcmods/modules.dep" 2> /dev
/null | instmods
101 # if not on hostonly mode, or there are hostonly block device
102 # install block drivers
103 if ! [[ $hostonly ]] \
104 || for_each_host_dev_and_slaves_all record_block_dev_drv
; then
105 hostonly
='' instmods sg sr_mod sd_mod scsi_dh ata_piix
107 if [[ $hostonly_mode == "strict" ]]; then
108 install_block_modules_strict
110 install_block_modules
114 # if not on hostonly mode, install all known filesystems,
115 # if the required list is not set via the filesystems variable
116 if ! [[ $hostonly ]]; then
117 if [[ -z $filesystems ]]; then
118 dracut_instmods
-o -P ".*/(kernel/fs/nfs|kernel/fs/nfsd|kernel/fs/lockd)/.*" '=fs'
120 elif [[ "${host_fs_types[*]}" ]]; then
121 hostonly
='' instmods
"${host_fs_types[@]}"
124 arch
=${DRACUT_ARCH:-$(uname -m)}
126 # We don't want to play catch up with hash and encryption algorithms.
127 # To be safe, just use the hammer and include all crypto.
128 [[ $arch == x86_64
]] && arch
=x86
129 [[ $arch == s390x
]] && arch
=s390
130 [[ $arch == aarch64
]] && arch
=arm64
131 hostonly
='' instmods
"=crypto"
132 instmods
"=arch/$arch/crypto" "=drivers/crypto"
135 inst_multiple
-o "$depmodd/*.conf"
136 if [[ $hostonly ]]; then
137 inst_multiple
-H -o "$depmodconfdir/*.conf"
144 [[ -d /lib
/modprobe.d
]] && inst_multiple
-o "/lib/modprobe.d/*.conf"
145 [[ -d /usr
/lib
/modprobe.d
]] && inst_multiple
-o "/usr/lib/modprobe.d/*.conf"
146 [[ $hostonly ]] && inst_multiple
-H -o /etc
/modprobe.d
/*.conf
/etc
/modprobe.conf
147 if ! dracut_module_included
"systemd"; then
148 inst_hook cmdline
01 "$moddir/parse-kernel.sh"
150 inst_simple
"$moddir/insmodpost.sh" /sbin
/insmodpost.sh
151 inst_multiple
-o sysctl