]>
Commit | Line | Data |
---|---|---|
95d2dabc | 1 | #!/bin/bash |
95d2dabc | 2 | |
8bcfd683 | 3 | # called by dracut |
95d2dabc | 4 | installkernel() { |
f4ad2e5c KS |
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' |
6 | ||
a73ba9a8 HW |
7 | find_kernel_modules_external () { |
8 | local _OLDIFS | |
9 | local external_pattern="^/" | |
10 | ||
11 | [[ -f "$srcmods/modules.dep" ]] || return 0 | |
12 | ||
13 | _OLDIFS=$IFS | |
14 | IFS=: | |
15 | while read a rest; do | |
16 | [[ $a =~ $external_pattern ]] || continue | |
17 | printf "%s\n" "$a" | |
18 | done < "$srcmods/modules.dep" | |
19 | IFS=$_OLDIFS | |
20 | } | |
f4ad2e5c KS |
21 | |
22 | is_block_dev() { | |
23 | [ -e /sys/dev/block/$1 ] && return 0 | |
24 | return 1 | |
25 | } | |
26 | ||
27 | install_block_modules () { | |
28 | hostonly='' instmods sr_mod sd_mod scsi_dh ata_piix | |
29 | instmods \ | |
30 | scsi_dh_rdac scsi_dh_emc scsi_dh_alua \ | |
31 | =ide nvme vmd nfit \ | |
32 | virtio_blk | |
33 | ||
34 | dracut_instmods -o -s "${_blockfuncs}" "=drivers" | |
35 | } | |
8bc04b98 | 36 | |
794b2d2c | 37 | if [[ -z $drivers ]]; then |
28609baf | 38 | hostonly='' instmods \ |
f4ad2e5c | 39 | hid_generic unix \ |
8d9ab275 | 40 | ehci-hcd ehci-pci ehci-platform \ |
28609baf HH |
41 | ohci-hcd ohci-pci \ |
42 | uhci-hcd \ | |
6bc2096c | 43 | xhci-hcd xhci-pci xhci-plat-hcd \ |
a0c915b1 | 44 | "=drivers/pinctrl" \ |
432647c2 KS |
45 | ${NULL} |
46 | ||
47 | hostonly=$(optional_hostonly) instmods \ | |
180e9d78 | 48 | "=drivers/hid" \ |
c1699b59 | 49 | "=drivers/tty/serial" \ |
180e9d78 | 50 | "=drivers/input/serio" \ |
6bc2096c | 51 | "=drivers/input/keyboard" \ |
8d9ab275 | 52 | "=drivers/usb/storage" \ |
48723f28 | 53 | "=drivers/pci/host" \ |
f2d33a7f | 54 | "=drivers/pci/controller" \ |
8d9ab275 HH |
55 | ${NULL} |
56 | ||
57 | instmods \ | |
f4ad2e5c | 58 | yenta_socket \ |
6bc2096c | 59 | atkbd i8042 usbhid firewire-ohci pcmcia hv-vmbus \ |
f4ad2e5c KS |
60 | virtio virtio_ring virtio_pci virtio_scsi \ |
61 | "=drivers/pcmcia" | |
cbc21754 | 62 | |
a0120420 | 63 | if [[ "${DRACUT_ARCH:-$(uname -m)}" == arm* || "${DRACUT_ARCH:-$(uname -m)}" == aarch64 ]]; then |
917e1b6b | 64 | # arm/aarch64 specific modules |
f496af50 | 65 | _blockfuncs+='|dw_mc_probe|dw_mci_pltfm_register' |
b96ea1e1 | 66 | instmods \ |
2602a74e | 67 | "=drivers/clk" \ |
917e1b6b | 68 | "=drivers/dma" \ |
39018c93 | 69 | "=drivers/extcon" \ |
a0c915b1 | 70 | "=drivers/gpio" \ |
82651e9e | 71 | "=drivers/hwspinlock" \ |
b96ea1e1 | 72 | "=drivers/i2c/busses" \ |
39018c93 | 73 | "=drivers/mfd" \ |
f8e0c7cc | 74 | "=drivers/mmc/core" \ |
e752d42d PR |
75 | "=drivers/phy" \ |
76 | "=drivers/power" \ | |
b96ea1e1 | 77 | "=drivers/regulator" \ |
82651e9e | 78 | "=drivers/rpmsg" \ |
b96ea1e1 | 79 | "=drivers/rtc" \ |
39018c93 | 80 | "=drivers/soc" \ |
0c5e5f27 PR |
81 | "=drivers/usb/chipidea" \ |
82 | "=drivers/usb/dwc2" \ | |
83 | "=drivers/usb/dwc3" \ | |
b96ea1e1 | 84 | "=drivers/usb/host" \ |
82651e9e | 85 | "=drivers/usb/misc" \ |
0c5e5f27 | 86 | "=drivers/usb/musb" \ |
b96ea1e1 | 87 | "=drivers/usb/phy" \ |
a73ba9a8 | 88 | "=drivers/scsi/hisi_sas" \ |
b96ea1e1 | 89 | ${NULL} |
cbc21754 HH |
90 | fi |
91 | ||
a73ba9a8 HW |
92 | find_kernel_modules_external | instmods |
93 | ||
f4ad2e5c KS |
94 | if ! [[ $hostonly ]] || for_each_host_dev_and_slaves is_block_dev; then |
95 | install_block_modules | |
96 | fi | |
97 | ||
95d2dabc HH |
98 | # if not on hostonly mode, install all known filesystems, |
99 | # if the required list is not set via the filesystems variable | |
100 | if ! [[ $hostonly ]]; then | |
101 | if [[ -z $filesystems ]]; then | |
8d9ab275 | 102 | dracut_instmods -o -P ".*/(kernel/fs/nfs|kernel/fs/nfsd|kernel/fs/lockd)/.*" '=fs' |
95d2dabc | 103 | fi |
3bd3ef58 | 104 | elif [[ "${host_fs_types[*]}" ]]; then |
794b2d2c | 105 | hostonly='' instmods "${host_fs_types[@]}" |
95d2dabc | 106 | fi |
343b7d74 | 107 | fi |
c9e5b753 | 108 | : |
b6e244f7 HH |
109 | } |
110 | ||
8bcfd683 | 111 | # called by dracut |
b6e244f7 | 112 | install() { |
af119460 | 113 | inst_multiple -o /lib/modprobe.d/*.conf |
5a575820 | 114 | [[ $hostonly ]] && inst_multiple -H -o /etc/modprobe.d/*.conf /etc/modprobe.conf |
6ae68b46 HH |
115 | if ! dracut_module_included "systemd"; then |
116 | inst_hook cmdline 01 "$moddir/parse-kernel.sh" | |
117 | fi | |
b6e244f7 | 118 | inst_simple "$moddir/insmodpost.sh" /sbin/insmodpost.sh |
95d2dabc | 119 | } |