OK, instructions below:
Prerequisites:
- Internet connected Debian 10 system
- Run all commands as root
Few things to consider before doing this:
- This is NOT supported by proxmox
- This has NOT been tested with anything other than my own PC motherboard
- This procedure is NOT official and may contain errors, I've done this by myself in an afternoon. It's not a battle tested setup guide.
- If proxmox releases a new 5.8 firmware package, use it instead. It is probably going to work better than this.
- Every new 5.8 kernel version (especially the ones containing security patches) must be recompiled with this procedure. Keep an eye on the upstream Ubuntu kernel releases to make sure you do not end up with a vulnerable kernel.
Procedure:
Create a build folder
Add proxmox no-subscription debian repository on the system
Code:
wget http://download.proxmox.com/debian/proxmox-ve-release-6.x.gpg -O /etc/apt/trusted.gpg.d/proxmox-ve-release-6.x.gpg
echo -n "deb http://download.proxmox.com/debian/pve buster pve-no-subscription" >> /etc/apt/sources.list
Add debian testing repository, specifically for the "dwarves" package and set apt to use debian stable packages by default
Code:
echo "# add testing repo for dwarves package" >> /etc/apt/sources.list
echo "deb http://deb.debian.org/debian/ bullseye main" >> /etc/apt/sources.list
echo 'APT::Default-Release "buster";' > /etc/apt/apt.conf.d/99defaultrelease
apt update
Install all required dependencies
Code:
apt install git gcc make g++ lintian python-sphinx debhelper dh-python dh-exec asciidoc-base bc bison flex libdw-dev libelf-dev libiberty-dev libnuma-dev libpve-common-perl libslang2-dev libssl-dev python-minimal lz4 rsync
Install dependencies from debian testing repository
Code:
apt install -t bullseye dwarves
Clone the proxmox kernel and the pve-firmware repository
Code:
cd /root/proxmox
git clone git://git.proxmox.com/git/pve-kernel.git && git clone git://git.proxmox.com/git/pve-firmware.git
Clone the desired Ubuntu kernel (see - https://wiki.ubuntu.com/Kernel/Dev/KernelGitGuide) as a git submodule (https://git-scm.com/book/en/v2/Git-Tools-Submodules), in this case we clone from the "groovy" release
Code:
cd /root/proxmox/pve-kernel/submodules
git submodule add git://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/groovy
Modify the Makefile variables in /root/proxmox/pve-kernel/Makefile to reflect the new Ubuntu kernel values, specifically:
- Variable KERNEL_SRC with the name Ubuntu kernel release submodule. (groovy)
- Make sure variables KERNEL_MAJ , KERNEL_MIN , KERNEL_PATCHLEVEL are the same as the Ubuntu kernel Makefile. Compare the variable values with the Makefile under /root/proxmox/pve-kernel/submodules/groovy/Makefile
- Comment out the following lines in /root/proxmox/pve-kernel/Makefile:
-
Code:
#lintian ${DST_DEB}
#lintian ${HDR_DEB}
#lintian ${LINUX_TOOLS_DEB}
-
Code:
#.PHONY: upload
#upload: ${DEBS}
# tar cf - ${DEBS}|ssh -X repoman@repo.proxmox.com -- upload --product pve,pmg --dist buster --arch ${ARCH}
=== OPTIONAL ===
I also had to remove some patch files not compatible with kernel 5.8, you can modify the code to make them work if you wish. either way, I removed the following files:
rm /root/proxmox/pve-kernel/patches/kernel/0002-*
rm /root/proxmox/pve-kernel/patches/kernel/0006-*
======
Once the above is completed, run:
Code:
cd /root/proxmox/pve-kernel
make
The compilation will take few minutes, depending on your computer performance.
Make may fail with a fwcheck error, if that happens do:
Code:
cp /root/proxmox/pve-kernel/fwlist-{KERNELVERSION}-pve /root/proxmox/pve-firmware
cd /root/proxmox/pve-firmware
make
cp /root/proxmox/pve-firmware/fwlist-{KERNELVERSION}-pve /root/proxmox/pve-kernel/fwlist-previous
cp /root/proxmox/pve-firmware/fwlist-{KERNELVERSION}-pve /root/proxmox/pve-kernel/build/fwlist-previous
Then re-run make inside the pve-kernel directory
Code:
cd /root/proxmox/pve-kernel
make
At the end of this process, you should have a seriers of .deb packages to install in your proxmox system.
The new kernel and firmware package should give you the latest IGC driver which may fix your issue (like it did with mine).