1#!/bin/bash 2 3set -e 4 5MODULE_PLAYGROUND=$1 6ROOTFS=$2 7CONFIG_H=$3 8 9feature_enabled() { 10 local feature=$1 11 grep KMOD_FEATURES $CONFIG_H | head -n 1 | grep -q \+$feature 12} 13 14declare -A map 15map=( 16 ["test-depmod/search-order-simple/lib/modules/4.4.4/kernel/crypto/"]="mod-simple.ko" 17 ["test-depmod/search-order-simple/lib/modules/4.4.4/updates/"]="mod-simple.ko" 18 ["test-depmod/search-order-same-prefix/lib/modules/4.4.4/foo/"]="mod-simple.ko" 19 ["test-depmod/search-order-same-prefix/lib/modules/4.4.4/foobar/"]="mod-simple.ko" 20 ["test-depmod/detect-loop/lib/modules/4.4.4/kernel/mod-loop-a.ko"]="mod-loop-a.ko" 21 ["test-depmod/detect-loop/lib/modules/4.4.4/kernel/mod-loop-b.ko"]="mod-loop-b.ko" 22 ["test-depmod/detect-loop/lib/modules/4.4.4/kernel/mod-loop-c.ko"]="mod-loop-c.ko" 23 ["test-depmod/detect-loop/lib/modules/4.4.4/kernel/mod-loop-d.ko"]="mod-loop-d.ko" 24 ["test-depmod/detect-loop/lib/modules/4.4.4/kernel/mod-loop-e.ko"]="mod-loop-e.ko" 25 ["test-depmod/detect-loop/lib/modules/4.4.4/kernel/mod-loop-f.ko"]="mod-loop-f.ko" 26 ["test-depmod/detect-loop/lib/modules/4.4.4/kernel/mod-loop-g.ko"]="mod-loop-g.ko" 27 ["test-depmod/detect-loop/lib/modules/4.4.4/kernel/mod-loop-h.ko"]="mod-loop-h.ko" 28 ["test-depmod/detect-loop/lib/modules/4.4.4/kernel/mod-loop-i.ko"]="mod-loop-i.ko" 29 ["test-depmod/detect-loop/lib/modules/4.4.4/kernel/mod-loop-j.ko"]="mod-loop-j.ko" 30 ["test-depmod/detect-loop/lib/modules/4.4.4/kernel/mod-loop-k.ko"]="mod-loop-k.ko" 31 ["test-depmod/search-order-external-first/lib/modules/4.4.4/foo/"]="mod-simple.ko" 32 ["test-depmod/search-order-external-first/lib/modules/4.4.4/foobar/"]="mod-simple.ko" 33 ["test-depmod/search-order-external-first/lib/modules/external/"]="mod-simple.ko" 34 ["test-depmod/search-order-external-last/lib/modules/4.4.4/foo/"]="mod-simple.ko" 35 ["test-depmod/search-order-external-last/lib/modules/4.4.4/foobar/"]="mod-simple.ko" 36 ["test-depmod/search-order-external-last/lib/modules/external/"]="mod-simple.ko" 37 ["test-depmod/search-order-override/lib/modules/4.4.4/foo/"]="mod-simple.ko" 38 ["test-depmod/search-order-override/lib/modules/4.4.4/override/"]="mod-simple.ko" 39 ["test-dependencies/lib/modules/4.0.20-kmod/kernel/fs/foo/"]="mod-foo-b.ko" 40 ["test-dependencies/lib/modules/4.0.20-kmod/kernel/"]="mod-foo-c.ko" 41 ["test-dependencies/lib/modules/4.0.20-kmod/kernel/lib/"]="mod-foo-a.ko" 42 ["test-dependencies/lib/modules/4.0.20-kmod/kernel/fs/"]="mod-foo.ko" 43 ["test-init/"]="mod-simple.ko" 44 ["test-remove/"]="mod-simple.ko" 45 ["test-modprobe/show-depends/lib/modules/4.4.4/kernel/mod-loop-a.ko"]="mod-loop-a.ko" 46 ["test-modprobe/show-depends/lib/modules/4.4.4/kernel/mod-loop-b.ko"]="mod-loop-b.ko" 47 ["test-modprobe/show-depends/lib/modules/4.4.4/kernel/mod-simple.ko"]="mod-simple.ko" 48 ["test-modprobe/show-exports/mod-loop-a.ko"]="mod-loop-a.ko" 49 ["test-modprobe/softdep-loop/lib/modules/4.4.4/kernel/mod-loop-a.ko"]="mod-loop-a.ko" 50 ["test-modprobe/softdep-loop/lib/modules/4.4.4/kernel/mod-loop-b.ko"]="mod-loop-b.ko" 51 ["test-modprobe/install-cmd-loop/lib/modules/4.4.4/kernel/mod-loop-a.ko"]="mod-loop-a.ko" 52 ["test-modprobe/install-cmd-loop/lib/modules/4.4.4/kernel/mod-loop-b.ko"]="mod-loop-b.ko" 53 ["test-modprobe/force/lib/modules/4.4.4/kernel/"]="mod-simple.ko" 54 ["test-modprobe/oldkernel/lib/modules/3.3.3/kernel/"]="mod-simple.ko" 55 ["test-modprobe/oldkernel-force/lib/modules/3.3.3/kernel/"]="mod-simple.ko" 56 ["test-modprobe/alias-to-none/lib/modules/4.4.4/kernel/"]="mod-simple.ko" 57 ["test-modprobe/module-param-kcmdline/lib/modules/4.4.4/kernel/"]="mod-simple.ko" 58 ["test-modprobe/external/lib/modules/external/"]="mod-simple.ko" 59 ["test-depmod/modules-order-compressed/lib/modules/4.4.4/kernel/drivers/block/cciss.ko"]="mod-fake-cciss.ko" 60 ["test-depmod/modules-order-compressed/lib/modules/4.4.4/kernel/drivers/scsi/hpsa.ko"]="mod-fake-hpsa.ko" 61 ["test-depmod/modules-order-compressed/lib/modules/4.4.4/kernel/drivers/scsi/scsi_mod.ko"]="mod-fake-scsi-mod.ko" 62 ["test-modinfo/mod-simple-i386.ko"]="mod-simple-i386.ko" 63 ["test-modinfo/mod-simple-x86_64.ko"]="mod-simple-x86_64.ko" 64 ["test-modinfo/mod-simple-sparc64.ko"]="mod-simple-sparc64.ko" 65 ["test-modinfo/mod-simple-sha1.ko"]="mod-simple.ko" 66 ["test-modinfo/mod-simple-sha256.ko"]="mod-simple.ko" 67 ["test-modinfo/mod-simple-pkcs7.ko"]="mod-simple.ko" 68 ["test-modinfo/external/lib/modules/external/mod-simple.ko"]="mod-simple.ko" 69 ["test-tools/insert/lib/modules/4.4.4/kernel/"]="mod-simple.ko" 70 ["test-tools/remove/lib/modules/4.4.4/kernel/"]="mod-simple.ko" 71) 72 73gzip_array=( 74 "test-depmod/modules-order-compressed/lib/modules/4.4.4/kernel/drivers/block/cciss.ko" 75 ) 76 77xz_array=( 78 "test-depmod/modules-order-compressed/lib/modules/4.4.4/kernel/drivers/scsi/scsi_mod.ko" 79 ) 80 81zstd_array=( 82 "test-depmod/modules-order-compressed/lib/modules/4.4.4/kernel/drivers/scsi/hpsa.ko" 83 ) 84 85attach_sha256_array=( 86 "test-modinfo/mod-simple-sha256.ko" 87 ) 88 89attach_sha1_array=( 90 "test-modinfo/mod-simple-sha1.ko" 91 ) 92 93attach_pkcs7_array=( 94 "test-modinfo/mod-simple-pkcs7.ko" 95 ) 96 97for k in "${!map[@]}"; do 98 dst=${ROOTFS}/$k 99 src=${MODULE_PLAYGROUND}/${map[$k]} 100 101 if [[ $dst = */ ]]; then 102 install -d "$dst" 103 install -t "$dst" "$src" 104 else 105 install -D "$src" "$dst" 106 fi 107done 108 109# start poking the final rootfs... 110 111# compress modules with each format if feature is enabled 112if feature_enabled ZLIB; then 113 for m in "${gzip_array[@]}"; do 114 gzip "$ROOTFS/$m" 115 done 116fi 117 118if feature_enabled XZ; then 119 for m in "${xz_array[@]}"; do 120 xz "$ROOTFS/$m" 121 done 122fi 123 124if feature_enabled ZSTD; then 125 for m in "${zstd_array[@]}"; do 126 zstd --rm $ROOTFS/$m 127 done 128fi 129 130for m in "${attach_sha1_array[@]}"; do 131 cat "${MODULE_PLAYGROUND}/dummy.sha1" >>"${ROOTFS}/$m" 132done 133 134for m in "${attach_sha256_array[@]}"; do 135 cat "${MODULE_PLAYGROUND}/dummy.sha256" >>"${ROOTFS}/$m" 136done 137 138for m in "${attach_pkcs7_array[@]}"; do 139 cat "${MODULE_PLAYGROUND}/dummy.pkcs7" >>"${ROOTFS}/$m" 140done 141