#!/bin/bash
set -x -e
KERNELVERSION=5.10.92
KERNEL=linux-$KERNELVERSION
CONFIG=/boot/config-5.10.0-11-*
AUFS=aufs5-standalone
CHECKOUT=origin/aufs5.10.82

apt update
apt install --yes git
apt build-dep linux
apt source linux
#wget https://cdn.kernel.org/pub/linux/kernel/v5.x/$KERNEL.tar.xz
#tar -xf $KERNEL.tar.xz

cd $KERNEL
rm -Rf $AUFS
git clone https://github.com/sfjro/$AUFS
cd $AUFS
git checkout $CHECKOUT
cd ..

cp -aR $AUFS/fs .
cp -a $AUFS/include/uapi/linux/aufs_type.h include/uapi/linux

patch -p1 < $AUFS/aufs5-kbuild.patch
patch -p1 < $AUFS/aufs5-base.patch
patch -p1 < $AUFS/aufs5-mmap.patch
patch -p1 < $AUFS/aufs5-standalone.patch
patch -p1 < $AUFS/aufs5-loopback.patch
patch -p1 < $AUFS/vfs-ino.patch
patch -p1 < $AUFS/tmpfs-idr.patch

cat $CONFIG | sed -r "s/CONFIG_SYSTEM_TRUSTED_KEYS/#CONFIG_SYSTEM_TRUSTED_KEYS/" >.config

echo "CONFIG_AUFS_FS=m
# CONFIG_AUFS_BRANCH_MAX_127 is not set
# CONFIG_AUFS_BRANCH_MAX_511 is not set
# CONFIG_AUFS_BRANCH_MAX_1023 is not set
CONFIG_AUFS_BRANCH_MAX_32767=y
CONFIG_AUFS_SBILIST=y
# CONFIG_AUFS_HNOTIFY is not set
CONFIG_AUFS_EXPORT=y
CONFIG_AUFS_INO_T_64=y
CONFIG_AUFS_XATTR=y
# CONFIG_AUFS_FHSM is not set
# CONFIG_AUFS_RDU is not set
CONFIG_AUFS_DIRREN=y
CONFIG_AUFS_SHWH=y
CONFIG_AUFS_BR_RAMFS=y
CONFIG_AUFS_BR_FUSE=y
CONFIG_AUFS_POLL=y
CONFIG_AUFS_BR_HFSPLUS=y
CONFIG_AUFS_BDEV_LOOP=y
# CONFIG_AUFS_DEBUG is not set" >>.config

make olddefconfig
make -j8 modules
make -j8 bzImage
make modules_install INSTALL_MOD_STRIP=1

TMP=/aaa-kernel
mkdir -p $TMP/usr/lib/modules
cp -aR /usr/lib/modules/$KERNELVERSION $TMP/usr/lib/modules
rm -f $TMP/usr/lib/modules/$KERNELVERSION/{build,source}
mkdir -p $TMP/boot
cp arch/x86/boot/bzImage $TMP/boot/vmlinuz-$KERNELVERSION
cd $TMP
tar -c * | gzip -f >/$KERNEL.tar.gz
