#!/bin/bash build() { local filter local -A blockdevs # pata, sata, scsi, nvme for filter in 'scsi/.*ata' '/(block|scsi|fusion|nvme)/' 'ata/[ps]ata_' \ 'ata/(ahci|pdc_adma|ata_piix|ata_generic)'; do add_checked_modules "$filter" && blockdevs['sd_mod']=1 done # usb if add_checked_modules -f '(_cs|sl811_hcd|isp116x_hcd)' '/usb/host'; then blockdevs+=(['usb_storage?']=1 ['sd_mod?']=1 ['sr_mod?']=1) add_checked_modules '/drivers/usb/storage/' fi # firewire if add_checked_modules '/drivers/firewire/'; then blockdevs+=(['firewire-sbp2?']=1 ['sd_mod?']=1 ['sr_mod?']=1) fi # mmc if add_checked_modules '/(mmc|tifm_)'; then blockdevs+=(['mmc_block?']=1) fi # virtio if add_checked_modules 'virtio'; then blockdevs['virtio_blk?']=1 fi map add_module "${!blockdevs[@]}" } help() { cat <<HELPEOF This hook loads the necessary modules for most block devices using pata, sata, scsi, firewire, usb, or mmc. Detection will take place at runtime. To minimize the modules in the image, add the autodetect hook too. HELPEOF } # vim: set ft=sh ts=4 sw=4 et: