# also update proxmox-ve/changelog if you change KERNEL_VER or KREL
KERNEL_VER=4.10.17
-PKGREL=18
+PKGREL=23
# also include firmware of previous version into
# the fw package: fwlist-2.6.32-PREV-pve
-KREL=1
+KREL=3
-KERNEL_SRC=ubuntu-zesty
-KERNEL_SRC_SUBMODULE=submodules/ubuntu-zesty
+KERNEL_SRC=ubuntu-artful
+KERNEL_SRC_SUBMODULE=submodules/ubuntu-artful
EXTRAVERSION=-${KREL}-pve
KVNAME=${KERNEL_VER}${EXTRAVERSION}
KERNEL_CFG_ORG=config-${KERNEL_VER}.org
-E1000EDIR=e1000e-3.3.5.3
+E1000EDIR=e1000e-3.3.5.10
E1000ESRC=${E1000EDIR}.tar.gz
-IGBDIR=igb-5.3.5.4
+IGBDIR=igb-5.3.5.10
IGBSRC=${IGBDIR}.tar.gz
-IXGBEDIR=ixgbe-5.0.4
+IXGBEDIR=ixgbe-5.2.3
IXGBESRC=${IXGBEDIR}.tar.gz
SPLDIR=pkg-spl
-SPLSRC=submodules/zfs/pkg-spl.tar.gz
+SPLSRC=submodules/spl-module
ZFSDIR=pkg-zfs
-ZFSSRC=submodules/zfs/pkg-zfs.tar.gz
+ZFSSRC=submodules/zfs-module
ZFS_KO=zfs.ko
ZFS_KO_REST=zavl.ko znvpair.ko zunicode.ko zcommon.ko zpios.ko
ZFS_MODULES=$(ZFS_KO) $(ZFS_KO_REST)
VIRTUALHDRPACKAGE=pve-headers
VIRTUAL_HDR_DEB=${VIRTUALHDRPACKAGE}_${RELEASE}-${PKGREL}_all.deb
-LINUX_TOOLS_PKG=linux-tools-4.10
+LINUX_TOOLS_PKG=linux-tools-4.13
LINUX_TOOLS_DEB=${LINUX_TOOLS_PKG}_${KERNEL_VER}-${PKGREL}_${ARCH}.deb
DEBS=${DST_DEB} ${HDR_DEB} ${PVE_DEB} ${VIRTUAL_HDR_DEB} ${LINUX_TOOLS_DEB}
-all: check_gcc ${DEBS}
+all: check_gcc deb
+deb: ${DEBS}
pve: $(PVE_DEB)
${PVE_DEB}: proxmox-ve/control proxmox-ve/postinst ${PVE_RELEASE_KEYS}
echo 9 > linux-tools/debian/compat
cp changelog.Debian linux-tools/debian/changelog
cp copyright linux-tools/debian
- mkdir -p linux-tools/debian/linux-tools-4.10/usr/bin
- install -m 0755 ${KERNEL_SRC}/tools/perf/perf linux-tools/debian/linux-tools-4.10/usr/bin/perf_4.10
+ mkdir -p linux-tools/debian/linux-tools-4.13/usr/bin
+ install -m 0755 ${KERNEL_SRC}/tools/perf/perf linux-tools/debian/linux-tools-4.13/usr/bin/perf_4.13
cd linux-tools; for i in ${LINUX_TOOLS_DH_LIST}; do dh_$$i; done
lintian ${LINUX_TOOLS_DEB}
fwcheck: fwlist-${KVNAME} fwlist-previous
@echo "checking fwlist for changes since last built firmware package.."
@echo "if this check fails, add fwlist-${KVNAME} to the pve-firmware repository and upload a new firmware package together with the ${KVNAME} kernel"
- bash -c "diff -up -N <(sort fwlist-previous | uniq) <(sort fwlist-${KVNAME} | uniq) > fwlist.diff"
- rm fwlist.diff
+ sort fwlist-previous | uniq > fwlist-previous.sorted
+ sort fwlist-${KVNAME} | uniq > fwlist-${KVNAME}.sorted
+ diff -up -N fwlist-previous.sorted fwlist-${KVNAME}.sorted > fwlist.diff
+ rm fwlist.diff fwlist-previous.sorted fwlist-${KVNAME}.sorted
@echo "done, no need to rebuild pve-firmware"
rm -rf ${KERNEL_SRC}
cp -a ${KERNEL_SRC_SUBMODULE} ${KERNEL_SRC}
cat ${KERNEL_SRC}/debian.master/config/config.common.ubuntu ${KERNEL_SRC}/debian.master/config/${ARCH}/config.common.${ARCH} ${KERNEL_SRC}/debian.master/config/${ARCH}/config.flavour.generic > ${KERNEL_CFG_ORG}
- cd ${KERNEL_SRC}; patch -p1 < ../uname-version-timestamp.patch
- cd ${KERNEL_SRC}; patch -p1 <../bridge-patch.diff
- #cd ${KERNEL_SRC}; patch -p1 <../bridge-forward-ipv6-neighbor-solicitation.patch
- #cd ${KERNEL_SRC}; patch -p1 <../add-empty-ndo_poll_controller-to-veth.patch
- cd ${KERNEL_SRC}; patch -p1 <../override_for_missing_acs_capabilities.patch
- #cd ${KERNEL_SRC}; patch -p1 <../vhost-net-extend-device-allocation-to-vmalloc.patch
- cd ${KERNEL_SRC}; patch -p1 < ../kvm-dynamic-halt-polling-disable-default.patch
- cd ${KERNEL_SRC}; patch -p1 < ../cgroup-cpuset-add-cpuset.remap_cpus.patch
- cd ${KERNEL_SRC}; patch -p1 < ../0001-netfilter-nft_set_rbtree-handle-re-addition-element-.patch # DoS from within (unpriv) containers
- cd ${KERNEL_SRC}; patch -p1 < ../CVE-2017-1000364-mm-mmap.c-do-not-blow-on-PROT_NONE-MAP_FIXED-holes-i.patch
- cd ${KERNEL_SRC}; patch -p1 < ../CVE-2017-1000364-mm-mmap.c-expand_downwards-don-t-require-the-gap-if-.patch
- cd ${KERNEL_SRC}; patch -p1 < ../CVE-2017-1000365-fs-exec.c-account-for-argv-envp-pointers.patch
- cd ${KERNEL_SRC}; patch -p1 < ../CVE-2017-10810-drm-virtio-don-t-leak-bo-on-drm_gem_object_init-fail.patch
- cd ${KERNEL_SRC}; patch -p1 < ../CVE-2017-7482-rxrpc-Fix-several-cases-where-a-padded-len-isn-t-che.patch
+ cd ${KERNEL_SRC}; for patch in ../patches/kernel/*.patch; do patch --verbose -p1 < $${patch}; done
sed -i ${KERNEL_SRC}/Makefile -e 's/^EXTRAVERSION.*$$/EXTRAVERSION=${EXTRAVERSION}/'
touch $@
rm -rf ${E1000EDIR}
tar xf ${E1000ESRC}
[ ! -e /lib/modules/${KVNAME}/build ] || (echo "please remove /lib/modules/${KVNAME}/build" && false)
- cd ${E1000EDIR}; patch -p1 < ../intel-module-gcc6-compat.patch
- cd ${E1000EDIR}; patch -p1 < ../e1000e_4.10_compat.patch
- cd ${E1000EDIR}; patch -p1 < ../e1000e_4.10_max-mtu.patch
+ cd ${E1000EDIR}; patch -p1 < ../patches/intel/intel-module-gcc6-compat.patch
+ cd ${E1000EDIR}; patch -p1 < ../patches/intel/e1000e/e1000e_4.10_max-mtu.patch
cd ${E1000EDIR}/src; make BUILD_KERNEL=${KVNAME} KSRC=${TOP}/${KERNEL_SRC}
cp ${E1000EDIR}/src/e1000e.ko e1000e.ko
rm -rf ${IGBDIR}
tar xf ${IGBSRC}
[ ! -e /lib/modules/${KVNAME}/build ] || (echo "please remove /lib/modules/${KVNAME}/build" && false)
- cd ${IGBDIR}; patch -p1 < ../intel-module-gcc6-compat.patch
- cd ${IGBDIR}; patch -p1 < ../igb_4.9_compat.patch
- cd ${IGBDIR}; patch -p1 < ../igb_4.10_compat.patch
- cd ${IGBDIR}; patch -p1 < ../igb_4.10_max-mtu.patch
+ cd ${IGBDIR}; patch -p1 < ../patches/intel/igb/igb_4.10_max-mtu.patch
+ cd ${IGBDIR}; patch -p1 < ../patches/intel/igb/igb_4.12_compat.patch
cd ${IGBDIR}/src; make BUILD_KERNEL=${KVNAME} KSRC=${TOP}/${KERNEL_SRC}
cp ${IGBDIR}/src/igb.ko igb.ko
rm -rf ${IXGBEDIR}
tar xf ${IXGBESRC}
[ ! -e /lib/modules/${KVNAME}/build ] || (echo "please remove /lib/modules/${KVNAME}/build" && false)
- cd ${IXGBEDIR}; patch -p1 < ../ixgbe_4.10_compat.patch
- cd ${IXGBEDIR}; patch -p1 < ../ixgbe_4.10_max-mtu.patch
+ cd ${IXGBEDIR}; patch -p1 < ../patches/intel/ixgbe/ixgbe_4.13_compat.patch
cd ${IXGBEDIR}/src; make CFLAGS_EXTRA="-DIXGBE_NO_LRO" BUILD_KERNEL=${KVNAME} KSRC=${TOP}/${KERNEL_SRC}
cp ${IXGBEDIR}/src/ixgbe.ko ixgbe.ko
$(SPL_KO_REST): $(SPL_KO)
$(SPL_KO): .compile_mark ${SPLSRC}
rm -rf ${SPLDIR}
- tar xf ${SPLSRC}
+ rsync -ra ${SPLSRC}/ ${SPLDIR}
[ ! -e /lib/modules/${KVNAME}/build ] || (echo "please remove /lib/modules/${KVNAME}/build" && false)
cd ${SPLDIR}; ./autogen.sh
cd ${SPLDIR}; ./configure --with-config=kernel --with-linux=${TOP}/${KERNEL_SRC} --with-linux-obj=${TOP}/${KERNEL_SRC}
$(ZFS_KO_REST): $(ZFS_KO)
$(ZFS_KO): .compile_mark ${ZFSSRC}
rm -rf ${ZFSDIR}
- tar xf ${ZFSSRC}
+ rsync -ra ${ZFSSRC}/ ${ZFSDIR}
[ ! -e /lib/modules/${KVNAME}/build ] || (echo "please remove /lib/modules/${KVNAME}/build" && false)
cd ${ZFSDIR}; ./autogen.sh
cd ${ZFSDIR}; ./configure --with-spl=${TOP}/${SPLDIR} --with-spl-obj=${TOP}/${SPLDIR} --with-config=kernel --with-linux=${TOP}/${KERNEL_SRC} --with-linux-obj=${TOP}/${KERNEL_SRC}
# make sure submodules were initialized
.PHONY: submodules
-submodules ${SPLSRC} ${ZFSSRC}:
+submodules:
test -f "${KERNEL_SRC_SUBMODULE}/README" || git submodule update --init
+ test -f "${ZFSSRC}/debian/changelog" || git submodule update --init
+ test -f "${SPLSRC}/debian/changelog" || git submodule update --init
.PHONY: clean