xref: /aosp_15_r20/external/kmod/testsuite/setup-rootfs.sh (revision cc4ad7da8cefe208cb129ac2aa9a357c7c72deb2)
1*cc4ad7daSAndroid Build Coastguard Worker#!/bin/bash
2*cc4ad7daSAndroid Build Coastguard Worker
3*cc4ad7daSAndroid Build Coastguard Workerset -e
4*cc4ad7daSAndroid Build Coastguard Worker
5*cc4ad7daSAndroid Build Coastguard WorkerROOTFS_PRISTINE=$1
6*cc4ad7daSAndroid Build Coastguard WorkerROOTFS=$2
7*cc4ad7daSAndroid Build Coastguard WorkerMODULE_PLAYGROUND=$3
8*cc4ad7daSAndroid Build Coastguard WorkerCONFIG_H=$4
9*cc4ad7daSAndroid Build Coastguard WorkerSYSCONFDIR=$5
10*cc4ad7daSAndroid Build Coastguard Worker
11*cc4ad7daSAndroid Build Coastguard Worker# create rootfs from rootfs-pristine
12*cc4ad7daSAndroid Build Coastguard Worker
13*cc4ad7daSAndroid Build Coastguard Workercreate_rootfs() {
14*cc4ad7daSAndroid Build Coastguard Worker	rm -rf "$ROOTFS"
15*cc4ad7daSAndroid Build Coastguard Worker	mkdir -p $(dirname "$ROOTFS")
16*cc4ad7daSAndroid Build Coastguard Worker	cp -r "$ROOTFS_PRISTINE" "$ROOTFS"
17*cc4ad7daSAndroid Build Coastguard Worker	find "$ROOTFS" -type d -exec chmod +w {} \;
18*cc4ad7daSAndroid Build Coastguard Worker	find "$ROOTFS" -type f -name .gitignore -exec rm -f {} \;
19*cc4ad7daSAndroid Build Coastguard Worker	if [ "$MODULE_DIRECTORY" != "/lib/modules" ] ; then
20*cc4ad7daSAndroid Build Coastguard Worker		sed -i -e "s|/lib/modules|$MODULE_DIRECTORY|g" $(find "$ROOTFS" -name \*.txt -o -name \*.conf -o -name \*.dep)
21*cc4ad7daSAndroid Build Coastguard Worker		sed -i -e "s|$MODULE_DIRECTORY/external|/lib/modules/external|g" $(find "$ROOTFS" -name \*.txt -o -name \*.conf -o -name \*.dep)
22*cc4ad7daSAndroid Build Coastguard Worker		for i in "$ROOTFS"/*/lib/modules/* "$ROOTFS"/*/*/lib/modules/* ; do
23*cc4ad7daSAndroid Build Coastguard Worker			version="$(basename $i)"
24*cc4ad7daSAndroid Build Coastguard Worker			[ $version != 'external' ] || continue
25*cc4ad7daSAndroid Build Coastguard Worker			mod="$(dirname $i)"
26*cc4ad7daSAndroid Build Coastguard Worker			lib="$(dirname $mod)"
27*cc4ad7daSAndroid Build Coastguard Worker			up="$(dirname $lib)$MODULE_DIRECTORY"
28*cc4ad7daSAndroid Build Coastguard Worker			mkdir -p "$up"
29*cc4ad7daSAndroid Build Coastguard Worker			mv "$i" "$up"
30*cc4ad7daSAndroid Build Coastguard Worker		done
31*cc4ad7daSAndroid Build Coastguard Worker	fi
32*cc4ad7daSAndroid Build Coastguard Worker
33*cc4ad7daSAndroid Build Coastguard Worker	if [ "$SYSCONFDIR" != "/etc" ]; then
34*cc4ad7daSAndroid Build Coastguard Worker		find "$ROOTFS" -type d -name etc -printf "%h\n" | while read -r e; do
35*cc4ad7daSAndroid Build Coastguard Worker			mkdir -p "$(dirname $e/$SYSCONFDIR)"
36*cc4ad7daSAndroid Build Coastguard Worker			mv $e/{etc,$SYSCONFDIR}
37*cc4ad7daSAndroid Build Coastguard Worker		done
38*cc4ad7daSAndroid Build Coastguard Worker	fi
39*cc4ad7daSAndroid Build Coastguard Worker}
40*cc4ad7daSAndroid Build Coastguard Worker
41*cc4ad7daSAndroid Build Coastguard Workerfeature_enabled() {
42*cc4ad7daSAndroid Build Coastguard Worker	local feature=$1
43*cc4ad7daSAndroid Build Coastguard Worker	grep KMOD_FEATURES  $CONFIG_H | head -n 1 | grep -q \+$feature
44*cc4ad7daSAndroid Build Coastguard Worker}
45*cc4ad7daSAndroid Build Coastguard Worker
46*cc4ad7daSAndroid Build Coastguard Workerdeclare -A map
47*cc4ad7daSAndroid Build Coastguard Workermap=(
48*cc4ad7daSAndroid Build Coastguard Worker    ["test-depmod/search-order-simple$MODULE_DIRECTORY/4.4.4/kernel/crypto/"]="mod-simple.ko"
49*cc4ad7daSAndroid Build Coastguard Worker    ["test-depmod/search-order-simple$MODULE_DIRECTORY/4.4.4/updates/"]="mod-simple.ko"
50*cc4ad7daSAndroid Build Coastguard Worker    ["test-depmod/search-order-same-prefix$MODULE_DIRECTORY/4.4.4/foo/"]="mod-simple.ko"
51*cc4ad7daSAndroid Build Coastguard Worker    ["test-depmod/search-order-same-prefix$MODULE_DIRECTORY/4.4.4/foobar/"]="mod-simple.ko"
52*cc4ad7daSAndroid Build Coastguard Worker    ["test-depmod/detect-loop$MODULE_DIRECTORY/4.4.4/kernel/mod-loop-a.ko"]="mod-loop-a.ko"
53*cc4ad7daSAndroid Build Coastguard Worker    ["test-depmod/detect-loop$MODULE_DIRECTORY/4.4.4/kernel/mod-loop-b.ko"]="mod-loop-b.ko"
54*cc4ad7daSAndroid Build Coastguard Worker    ["test-depmod/detect-loop$MODULE_DIRECTORY/4.4.4/kernel/mod-loop-c.ko"]="mod-loop-c.ko"
55*cc4ad7daSAndroid Build Coastguard Worker    ["test-depmod/detect-loop$MODULE_DIRECTORY/4.4.4/kernel/mod-loop-d.ko"]="mod-loop-d.ko"
56*cc4ad7daSAndroid Build Coastguard Worker    ["test-depmod/detect-loop$MODULE_DIRECTORY/4.4.4/kernel/mod-loop-e.ko"]="mod-loop-e.ko"
57*cc4ad7daSAndroid Build Coastguard Worker    ["test-depmod/detect-loop$MODULE_DIRECTORY/4.4.4/kernel/mod-loop-f.ko"]="mod-loop-f.ko"
58*cc4ad7daSAndroid Build Coastguard Worker    ["test-depmod/detect-loop$MODULE_DIRECTORY/4.4.4/kernel/mod-loop-g.ko"]="mod-loop-g.ko"
59*cc4ad7daSAndroid Build Coastguard Worker    ["test-depmod/detect-loop$MODULE_DIRECTORY/4.4.4/kernel/mod-loop-h.ko"]="mod-loop-h.ko"
60*cc4ad7daSAndroid Build Coastguard Worker    ["test-depmod/detect-loop$MODULE_DIRECTORY/4.4.4/kernel/mod-loop-i.ko"]="mod-loop-i.ko"
61*cc4ad7daSAndroid Build Coastguard Worker    ["test-depmod/detect-loop$MODULE_DIRECTORY/4.4.4/kernel/mod-loop-j.ko"]="mod-loop-j.ko"
62*cc4ad7daSAndroid Build Coastguard Worker    ["test-depmod/detect-loop$MODULE_DIRECTORY/4.4.4/kernel/mod-loop-k.ko"]="mod-loop-k.ko"
63*cc4ad7daSAndroid Build Coastguard Worker    ["test-depmod/search-order-external-first$MODULE_DIRECTORY/4.4.4/foo/"]="mod-simple.ko"
64*cc4ad7daSAndroid Build Coastguard Worker    ["test-depmod/search-order-external-first$MODULE_DIRECTORY/4.4.4/foobar/"]="mod-simple.ko"
65*cc4ad7daSAndroid Build Coastguard Worker    ["test-depmod/search-order-external-first/lib/modules/external/"]="mod-simple.ko"
66*cc4ad7daSAndroid Build Coastguard Worker    ["test-depmod/search-order-external-last$MODULE_DIRECTORY/4.4.4/foo/"]="mod-simple.ko"
67*cc4ad7daSAndroid Build Coastguard Worker    ["test-depmod/search-order-external-last$MODULE_DIRECTORY/4.4.4/foobar/"]="mod-simple.ko"
68*cc4ad7daSAndroid Build Coastguard Worker    ["test-depmod/search-order-external-last/lib/modules/external/"]="mod-simple.ko"
69*cc4ad7daSAndroid Build Coastguard Worker    ["test-depmod/search-order-override$MODULE_DIRECTORY/4.4.4/foo/"]="mod-simple.ko"
70*cc4ad7daSAndroid Build Coastguard Worker    ["test-depmod/search-order-override$MODULE_DIRECTORY/4.4.4/override/"]="mod-simple.ko"
71*cc4ad7daSAndroid Build Coastguard Worker    ["test-dependencies$MODULE_DIRECTORY/4.0.20-kmod/kernel/fs/foo/"]="mod-foo-b.ko"
72*cc4ad7daSAndroid Build Coastguard Worker    ["test-dependencies$MODULE_DIRECTORY/4.0.20-kmod/kernel/"]="mod-foo-c.ko"
73*cc4ad7daSAndroid Build Coastguard Worker    ["test-dependencies$MODULE_DIRECTORY/4.0.20-kmod/kernel/lib/"]="mod-foo-a.ko"
74*cc4ad7daSAndroid Build Coastguard Worker    ["test-dependencies$MODULE_DIRECTORY/4.0.20-kmod/kernel/fs/"]="mod-foo.ko"
75*cc4ad7daSAndroid Build Coastguard Worker    ["test-init/"]="mod-simple.ko"
76*cc4ad7daSAndroid Build Coastguard Worker    ["test-remove/"]="mod-simple.ko"
77*cc4ad7daSAndroid Build Coastguard Worker    ["test-modprobe/show-depends$MODULE_DIRECTORY/4.4.4/kernel/mod-loop-a.ko"]="mod-loop-a.ko"
78*cc4ad7daSAndroid Build Coastguard Worker    ["test-modprobe/show-depends$MODULE_DIRECTORY/4.4.4/kernel/mod-loop-b.ko"]="mod-loop-b.ko"
79*cc4ad7daSAndroid Build Coastguard Worker    ["test-modprobe/show-depends$MODULE_DIRECTORY/4.4.4/kernel/mod-simple.ko"]="mod-simple.ko"
80*cc4ad7daSAndroid Build Coastguard Worker    ["test-modprobe/show-exports/mod-loop-a.ko"]="mod-loop-a.ko"
81*cc4ad7daSAndroid Build Coastguard Worker    ["test-modprobe/softdep-loop$MODULE_DIRECTORY/4.4.4/kernel/mod-loop-a.ko"]="mod-loop-a.ko"
82*cc4ad7daSAndroid Build Coastguard Worker    ["test-modprobe/softdep-loop$MODULE_DIRECTORY/4.4.4/kernel/mod-loop-b.ko"]="mod-loop-b.ko"
83*cc4ad7daSAndroid Build Coastguard Worker    ["test-modprobe/install-cmd-loop$MODULE_DIRECTORY/4.4.4/kernel/mod-loop-a.ko"]="mod-loop-a.ko"
84*cc4ad7daSAndroid Build Coastguard Worker    ["test-modprobe/install-cmd-loop$MODULE_DIRECTORY/4.4.4/kernel/mod-loop-b.ko"]="mod-loop-b.ko"
85*cc4ad7daSAndroid Build Coastguard Worker    ["test-modprobe/force$MODULE_DIRECTORY/4.4.4/kernel/"]="mod-simple.ko"
86*cc4ad7daSAndroid Build Coastguard Worker    ["test-modprobe/oldkernel$MODULE_DIRECTORY/3.3.3/kernel/"]="mod-simple.ko"
87*cc4ad7daSAndroid Build Coastguard Worker    ["test-modprobe/oldkernel-force$MODULE_DIRECTORY/3.3.3/kernel/"]="mod-simple.ko"
88*cc4ad7daSAndroid Build Coastguard Worker    ["test-modprobe/alias-to-none$MODULE_DIRECTORY/4.4.4/kernel/"]="mod-simple.ko"
89*cc4ad7daSAndroid Build Coastguard Worker    ["test-modprobe/module-param-kcmdline$MODULE_DIRECTORY/4.4.4/kernel/"]="mod-simple.ko"
90*cc4ad7daSAndroid Build Coastguard Worker    ["test-modprobe/external/lib/modules/external/"]="mod-simple.ko"
91*cc4ad7daSAndroid Build Coastguard Worker    ["test-modprobe/module-from-abspath/home/foo/"]="mod-simple.ko"
92*cc4ad7daSAndroid Build Coastguard Worker    ["test-modprobe/module-from-relpath/home/foo/"]="mod-simple.ko"
93*cc4ad7daSAndroid Build Coastguard Worker    ["test-depmod/modules-order-compressed$MODULE_DIRECTORY/4.4.4/kernel/drivers/block/cciss.ko"]="mod-fake-cciss.ko"
94*cc4ad7daSAndroid Build Coastguard Worker    ["test-depmod/modules-order-compressed$MODULE_DIRECTORY/4.4.4/kernel/drivers/scsi/hpsa.ko"]="mod-fake-hpsa.ko"
95*cc4ad7daSAndroid Build Coastguard Worker    ["test-depmod/modules-order-compressed$MODULE_DIRECTORY/4.4.4/kernel/drivers/scsi/scsi_mod.ko"]="mod-fake-scsi-mod.ko"
96*cc4ad7daSAndroid Build Coastguard Worker    ["test-depmod/modules-outdir$MODULE_DIRECTORY/4.4.4/kernel/drivers/block/cciss.ko"]="mod-fake-cciss.ko"
97*cc4ad7daSAndroid Build Coastguard Worker    ["test-depmod/modules-outdir$MODULE_DIRECTORY/4.4.4/kernel/drivers/scsi/hpsa.ko"]="mod-fake-hpsa.ko"
98*cc4ad7daSAndroid Build Coastguard Worker    ["test-depmod/modules-outdir$MODULE_DIRECTORY/4.4.4/kernel/drivers/scsi/scsi_mod.ko"]="mod-fake-scsi-mod.ko"
99*cc4ad7daSAndroid Build Coastguard Worker    ["test-modinfo/mod-simple-i386.ko"]="mod-simple-i386.ko"
100*cc4ad7daSAndroid Build Coastguard Worker    ["test-modinfo/mod-simple-x86_64.ko"]="mod-simple-x86_64.ko"
101*cc4ad7daSAndroid Build Coastguard Worker    ["test-modinfo/mod-simple-sparc64.ko"]="mod-simple-sparc64.ko"
102*cc4ad7daSAndroid Build Coastguard Worker    ["test-modinfo/mod-simple-sha1.ko"]="mod-simple.ko"
103*cc4ad7daSAndroid Build Coastguard Worker    ["test-modinfo/mod-simple-sha256.ko"]="mod-simple.ko"
104*cc4ad7daSAndroid Build Coastguard Worker    ["test-modinfo/mod-simple-pkcs7.ko"]="mod-simple.ko"
105*cc4ad7daSAndroid Build Coastguard Worker    ["test-modinfo/external/lib/modules/external/mod-simple.ko"]="mod-simple.ko"
106*cc4ad7daSAndroid Build Coastguard Worker)
107*cc4ad7daSAndroid Build Coastguard Worker
108*cc4ad7daSAndroid Build Coastguard Workergzip_array=(
109*cc4ad7daSAndroid Build Coastguard Worker    "test-depmod/modules-order-compressed$MODULE_DIRECTORY/4.4.4/kernel/drivers/block/cciss.ko"
110*cc4ad7daSAndroid Build Coastguard Worker    )
111*cc4ad7daSAndroid Build Coastguard Worker
112*cc4ad7daSAndroid Build Coastguard Workerxz_array=(
113*cc4ad7daSAndroid Build Coastguard Worker    "test-depmod/modules-order-compressed$MODULE_DIRECTORY/4.4.4/kernel/drivers/scsi/scsi_mod.ko"
114*cc4ad7daSAndroid Build Coastguard Worker    )
115*cc4ad7daSAndroid Build Coastguard Worker
116*cc4ad7daSAndroid Build Coastguard Workerzstd_array=(
117*cc4ad7daSAndroid Build Coastguard Worker    "test-depmod/modules-order-compressed$MODULE_DIRECTORY/4.4.4/kernel/drivers/scsi/hpsa.ko"
118*cc4ad7daSAndroid Build Coastguard Worker    )
119*cc4ad7daSAndroid Build Coastguard Worker
120*cc4ad7daSAndroid Build Coastguard Workerattach_sha256_array=(
121*cc4ad7daSAndroid Build Coastguard Worker    "test-modinfo/mod-simple-sha256.ko"
122*cc4ad7daSAndroid Build Coastguard Worker    )
123*cc4ad7daSAndroid Build Coastguard Worker
124*cc4ad7daSAndroid Build Coastguard Workerattach_sha1_array=(
125*cc4ad7daSAndroid Build Coastguard Worker    "test-modinfo/mod-simple-sha1.ko"
126*cc4ad7daSAndroid Build Coastguard Worker    )
127*cc4ad7daSAndroid Build Coastguard Worker
128*cc4ad7daSAndroid Build Coastguard Workerattach_pkcs7_array=(
129*cc4ad7daSAndroid Build Coastguard Worker    "test-modinfo/mod-simple-pkcs7.ko"
130*cc4ad7daSAndroid Build Coastguard Worker    )
131*cc4ad7daSAndroid Build Coastguard Worker
132*cc4ad7daSAndroid Build Coastguard Workercreate_rootfs
133*cc4ad7daSAndroid Build Coastguard Worker
134*cc4ad7daSAndroid Build Coastguard Workerfor k in "${!map[@]}"; do
135*cc4ad7daSAndroid Build Coastguard Worker    dst=${ROOTFS}/$k
136*cc4ad7daSAndroid Build Coastguard Worker    src=${MODULE_PLAYGROUND}/${map[$k]}
137*cc4ad7daSAndroid Build Coastguard Worker
138*cc4ad7daSAndroid Build Coastguard Worker    if [[ $dst = */ ]]; then
139*cc4ad7daSAndroid Build Coastguard Worker        install -d "$dst"
140*cc4ad7daSAndroid Build Coastguard Worker        install -t "$dst" "$src"
141*cc4ad7daSAndroid Build Coastguard Worker    else
142*cc4ad7daSAndroid Build Coastguard Worker        install -D "$src" "$dst"
143*cc4ad7daSAndroid Build Coastguard Worker    fi
144*cc4ad7daSAndroid Build Coastguard Workerdone
145*cc4ad7daSAndroid Build Coastguard Worker
146*cc4ad7daSAndroid Build Coastguard Worker# start poking the final rootfs...
147*cc4ad7daSAndroid Build Coastguard Worker
148*cc4ad7daSAndroid Build Coastguard Worker# compress modules with each format if feature is enabled
149*cc4ad7daSAndroid Build Coastguard Workerif feature_enabled ZLIB; then
150*cc4ad7daSAndroid Build Coastguard Worker	for m in "${gzip_array[@]}"; do
151*cc4ad7daSAndroid Build Coastguard Worker	    gzip "$ROOTFS/$m"
152*cc4ad7daSAndroid Build Coastguard Worker	done
153*cc4ad7daSAndroid Build Coastguard Workerfi
154*cc4ad7daSAndroid Build Coastguard Worker
155*cc4ad7daSAndroid Build Coastguard Workerif feature_enabled XZ; then
156*cc4ad7daSAndroid Build Coastguard Worker	for m in "${xz_array[@]}"; do
157*cc4ad7daSAndroid Build Coastguard Worker	    xz "$ROOTFS/$m"
158*cc4ad7daSAndroid Build Coastguard Worker	done
159*cc4ad7daSAndroid Build Coastguard Workerfi
160*cc4ad7daSAndroid Build Coastguard Worker
161*cc4ad7daSAndroid Build Coastguard Workerif feature_enabled ZSTD; then
162*cc4ad7daSAndroid Build Coastguard Worker	for m in "${zstd_array[@]}"; do
163*cc4ad7daSAndroid Build Coastguard Worker	    zstd --rm $ROOTFS/$m
164*cc4ad7daSAndroid Build Coastguard Worker	done
165*cc4ad7daSAndroid Build Coastguard Workerfi
166*cc4ad7daSAndroid Build Coastguard Worker
167*cc4ad7daSAndroid Build Coastguard Workerfor m in "${attach_sha1_array[@]}"; do
168*cc4ad7daSAndroid Build Coastguard Worker    cat "${MODULE_PLAYGROUND}/dummy.sha1" >>"${ROOTFS}/$m"
169*cc4ad7daSAndroid Build Coastguard Workerdone
170*cc4ad7daSAndroid Build Coastguard Worker
171*cc4ad7daSAndroid Build Coastguard Workerfor m in "${attach_sha256_array[@]}"; do
172*cc4ad7daSAndroid Build Coastguard Worker    cat "${MODULE_PLAYGROUND}/dummy.sha256" >>"${ROOTFS}/$m"
173*cc4ad7daSAndroid Build Coastguard Workerdone
174*cc4ad7daSAndroid Build Coastguard Worker
175*cc4ad7daSAndroid Build Coastguard Workerfor m in "${attach_pkcs7_array[@]}"; do
176*cc4ad7daSAndroid Build Coastguard Worker    cat "${MODULE_PLAYGROUND}/dummy.pkcs7" >>"${ROOTFS}/$m"
177*cc4ad7daSAndroid Build Coastguard Workerdone
178*cc4ad7daSAndroid Build Coastguard Worker
179*cc4ad7daSAndroid Build Coastguard Workertouch testsuite/stamp-rootfs
180