2020-05-23 06:39:54 +08:00
|
|
|
#!/bin/sh
|
2019-11-02 16:46:17 +08:00
|
|
|
# This script produces the nbd kernel module to use on run farm nodes.
|
2020-05-23 06:39:54 +08:00
|
|
|
set -ex
|
2019-11-02 16:46:17 +08:00
|
|
|
|
|
|
|
# deps
|
2022-03-20 04:58:30 +08:00
|
|
|
sudo yum -y install rpm-build xmlto asciidoc hmaccalc newt-devel pesign elfutils-devel binutils-devel audit-libs-devel numactl-devel pciutils-devel python-docutils python-devel "perl(ExtUtils::Embed)" bison java-devel ncurses-devel
|
2019-11-02 16:46:17 +08:00
|
|
|
|
|
|
|
# update this as FPGA Dev AMI updates
|
2020-05-23 06:39:54 +08:00
|
|
|
KSRC='3.10.0-957.5.1.el7'
|
2019-11-02 16:46:17 +08:00
|
|
|
|
|
|
|
# other vars
|
2020-05-23 06:39:54 +08:00
|
|
|
TARGET=x86_64
|
2022-02-15 10:35:27 +08:00
|
|
|
DISTSITE='http://mirror.nsc.liu.se/centos-store/7.6.1810'
|
2019-11-02 16:46:17 +08:00
|
|
|
|
|
|
|
GENERICBUILDDIR=$(pwd)/build
|
|
|
|
NBDBUILDDIR=$GENERICBUILDDIR/nbdbuild
|
2020-05-23 06:39:54 +08:00
|
|
|
OUTPUTFILE=$GENERICBUILDDIR/nbd.ko
|
2019-11-02 16:46:17 +08:00
|
|
|
|
2020-05-23 06:39:54 +08:00
|
|
|
rm -rf -- "$NBDBUILDDIR" "$OUTPUTFILE"
|
2019-11-02 16:46:17 +08:00
|
|
|
|
2020-05-23 06:39:54 +08:00
|
|
|
# fetch and unpack source RPM
|
|
|
|
rpm -i --verbose --define="_topdir $NBDBUILDDIR" \
|
|
|
|
"${DISTSITE}/updates/Source/SPackages/kernel-${KSRC}.src.rpm"
|
2019-11-02 16:46:17 +08:00
|
|
|
|
2020-05-23 06:39:54 +08:00
|
|
|
# run %prep stage
|
|
|
|
cd "${NBDBUILDDIR}/SPECS"
|
|
|
|
rpmbuild --define="_topdir $NBDBUILDDIR" -bp --target="$TARGET" kernel.spec
|
2019-11-02 16:46:17 +08:00
|
|
|
|
2020-05-23 06:39:54 +08:00
|
|
|
cd "${NBDBUILDDIR}/BUILD/kernel-${KSRC}/linux-${KSRC}.${TARGET}"
|
2019-11-02 16:46:17 +08:00
|
|
|
|
2020-05-23 06:39:54 +08:00
|
|
|
# acquire Module.symvers from kernel-devel binary package;
|
|
|
|
# this enables proper symbol versioning (modversions) without requiring
|
|
|
|
# a full kernel build
|
|
|
|
rpm2cpio "${DISTSITE}/updates/${TARGET}/Packages/kernel-devel-${KSRC}.${TARGET}.rpm" |
|
|
|
|
cpio -iv --to-stdout "./usr/src/kernels/${KSRC}.${TARGET}/Module.symvers" > Module.symvers
|
2019-11-02 16:46:17 +08:00
|
|
|
|
|
|
|
# this file is not kept up to date and does not compile, need to patch it
|
2020-05-23 06:39:54 +08:00
|
|
|
sed -i 's/REQ_TYPE_SPECIAL/REQ_TYPE_DRV_PRIV/g' drivers/block/nbd.c
|
2019-11-02 16:46:17 +08:00
|
|
|
|
2020-05-25 07:46:04 +08:00
|
|
|
# use non-debug kernel config
|
|
|
|
(
|
|
|
|
export LC_ALL='' LC_COLLATE=C
|
|
|
|
for KCFG in configs/kernel-*-"$TARGET".config ; do break ; done
|
|
|
|
test -r "$KCFG"
|
|
|
|
|
|
|
|
# turn on NBD in the config
|
|
|
|
sed 's/# CONFIG_BLK_DEV_NBD is not set/CONFIG_BLK_DEV_NBD=m/g' "$KCFG" > .config
|
|
|
|
)
|
2019-11-02 16:46:17 +08:00
|
|
|
|
2020-05-23 06:39:54 +08:00
|
|
|
make olddefconfig
|
|
|
|
make prepare
|
|
|
|
make modules_prepare
|
|
|
|
make M=drivers/block nbd.ko
|
2019-11-02 16:46:17 +08:00
|
|
|
|
2020-05-23 06:39:54 +08:00
|
|
|
KMOD=drivers/block/nbd.ko
|
|
|
|
|
|
|
|
modinfo "$KMOD"
|
|
|
|
modprobe --dump-modversions "$KMOD" | grep -F module_layout
|
|
|
|
cp "$KMOD" "$OUTPUTFILE"
|