| 
									
										
										
										
											2017-03-15 16:43:11 +03:00
										 |  |  | KERNEL SOURCE: | 
					
						
							|  |  |  | ============== | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | We currently use the Ubuntu kernel sources, available from: | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-11 17:05:50 +03:00
										 |  |  |  http://kernel.ubuntu.com/git/ubuntu/ubuntu-jammy.git/ | 
					
						
							| 
									
										
										
										
											2017-03-15 16:43:11 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | Ubuntu will maintain those kernels till: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |  https://wiki.ubuntu.com/Kernel/Dev/ExtendedStable | 
					
						
							| 
									
										
										
										
											2021-09-28 08:08:46 +03:00
										 |  |  |  or | 
					
						
							|  |  |  |  https://pve.proxmox.com/pve-docs/chapter-pve-faq.html#faq-support-table | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |  whatever happens to be earlier. | 
					
						
							| 
									
										
										
										
											2017-03-15 16:43:11 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Additional/Updated Modules: | 
					
						
							|  |  |  | --------------------------- | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | - include native OpenZFS filesystem kernel modules for Linux | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   * https://github.com/zfsonlinux/ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   For licensing questions, see: http://open-zfs.org/wiki/Talk:FAQ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-10-23 17:06:44 +03:00
										 |  |  | SUBMODULE | 
					
						
							|  |  |  | ========= | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | We track the current upstream repository as submodule. Besides obvious | 
					
						
							|  |  |  | advantages over tracking binary tar archives this also has some implications. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | For building the submodule directory gets copied into build/ and a few patches | 
					
						
							|  |  |  | get applied with the `patch` tool. From a git point-of-view, the copied | 
					
						
							|  |  |  | directory remains clean even with extra patches applied since it does not | 
					
						
							|  |  |  | contain a .git directory, but a reference to the (still pristine) submodule: | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-11 17:05:50 +03:00
										 |  |  | $ cat build/ubuntu-jammy/.git | 
					
						
							| 
									
										
										
										
											2018-10-23 17:06:44 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | If you mistakenly cloned the upstream repo as "normal" clone (not via the | 
					
						
							|  |  |  | submodule mechanics) this means that you have a real .git directory with its | 
					
						
							|  |  |  | independent objects and tracking info when copying for building, thus git | 
					
						
							|  |  |  | operates on the copied directory - and "sees" that it was dirtied by `patch`, | 
					
						
							|  |  |  | and thus the kernel buildsystem sees this too and will add a '+' to the version | 
					
						
							|  |  |  | as a result. This changes the output directories for modules and other build | 
					
						
							|  |  |  | artefacts and let's then the build fail on packaging. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | So always ensure that you really checked it out as submodule, not as full | 
					
						
							|  |  |  | "normal" clone. You can also explicitly set the LOCALVERSION variable to | 
					
						
							|  |  |  | undefined with: `export LOCALVERSION= but that should only be done for test | 
					
						
							|  |  |  | builds. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-05 17:42:44 +03:00
										 |  |  | RELATED PACKAGES: | 
					
						
							|  |  |  | ================= | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | proxmox-ve | 
					
						
							|  |  |  | ---------- | 
					
						
							| 
									
										
										
										
											2017-03-15 16:43:11 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-05 17:42:44 +03:00
										 |  |  | top level meta package, depends on current default kernel series meta package. | 
					
						
							| 
									
										
										
										
											2017-03-15 16:43:11 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-05 17:42:44 +03:00
										 |  |  | git clone git://git.proxmox.com/git/proxmox-ve.git | 
					
						
							| 
									
										
										
										
											2017-03-15 16:43:11 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-05 17:42:44 +03:00
										 |  |  | pve-kernel-meta | 
					
						
							|  |  |  | --------------- | 
					
						
							| 
									
										
										
										
											2017-03-15 16:43:11 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-05 17:42:44 +03:00
										 |  |  | depends on latest kernel and header package within a certain kernel series, | 
					
						
							| 
									
										
										
										
											2022-01-11 17:05:50 +03:00
										 |  |  | e.g., pve-kernel-5.15 / pve-headers-5.15 | 
					
						
							| 
									
										
										
										
											2017-03-15 16:43:11 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-05 17:42:44 +03:00
										 |  |  | git clone git://git.proxmox.com/git/pve-kernel-meta.git | 
					
						
							| 
									
										
										
										
											2017-03-15 16:43:11 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-05 17:42:44 +03:00
										 |  |  | pve-firmware | 
					
						
							|  |  |  | ------------ | 
					
						
							| 
									
										
										
										
											2017-03-15 16:43:11 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-05 17:42:44 +03:00
										 |  |  | contains the firmware for all released PVE kernels. | 
					
						
							| 
									
										
										
										
											2017-03-15 16:43:11 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-05 17:42:44 +03:00
										 |  |  | git clone git://git.proxmox.com/git/pve-firmware.git | 
					
						
							| 
									
										
										
										
											2017-03-15 16:43:11 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-05 17:42:44 +03:00
										 |  |  | NOTES: | 
					
						
							|  |  |  | ====== | 
					
						
							| 
									
										
										
										
											2017-03-15 16:43:11 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-08-10 14:24:30 +03:00
										 |  |  | ABI versions, package versions and package name: | 
					
						
							|  |  |  | ------------------------------------------------ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | We follow debian's versioning w.r.t ABI changes: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | https://kernel-team.pages.debian.net/kernel-handbook/ch-versions.html | 
					
						
							|  |  |  | https://wiki.debian.org/DebianKernelABIChanges | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The debian/rules file has a target comparing the build kernel's ABI against the | 
					
						
							|  |  |  | version stored in the repository and indicates when an ABI bump is necessary. | 
					
						
							|  |  |  | An ABI bump within one upstream version consists of incrementing the KREL | 
					
						
							|  |  |  | variable in the Makefile, rebuilding the packages and running 'make abiupdate' | 
					
						
							|  |  |  | (the 'abiupdate' target in 'Makefile' contains the steps for consistently | 
					
						
							|  |  |  | updating the repository). | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-15 16:43:11 +03:00
										 |  |  | Watchdog blacklist | 
					
						
							|  |  |  | ------------------ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | By default, all watchdog modules are black-listed because it is totally undefined | 
					
						
							|  |  |  | which device is actually used for /dev/watchdog. | 
					
						
							|  |  |  | We ship this list in /lib/modprobe.d/blacklist_pve-kernel-<VERSION>.conf | 
					
						
							|  |  |  | The user typically edit /etc/modules to enable a specific watchdog device. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-21 15:10:41 +03:00
										 |  |  | Debug kernel and modules | 
					
						
							|  |  |  | ------------------------ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | In order to build a -dbgsym package containing an unstripped copy of the kernel | 
					
						
							|  |  |  | image and modules, enable the 'pkg.pve-kernel.debug' build profile (e.g. by | 
					
						
							|  |  |  | exporting DEB_BUILD_PROFILES='pkg.pve-kernel.debug'). The resulting package can | 
					
						
							|  |  |  | be used together with 'crash'/'kdump-tools' to debug kernel crashes. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Note: the -dbgsym package is only valid for the pve-kernel packages produced by | 
					
						
							|  |  |  | the same build. A kernel/module from a different build will likely not match, | 
					
						
							|  |  |  | even if both builds are of the same kernel and package version. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-15 16:43:11 +03:00
										 |  |  | Additional information | 
					
						
							|  |  |  | ---------------------- | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | We use the default configuration provided by Ubuntu, and apply | 
					
						
							| 
									
										
										
										
											2018-03-05 17:42:44 +03:00
										 |  |  | the following modifications: | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-08-22 11:27:55 +03:00
										 |  |  | NOTE: For the exact and current list see debian/rules (PVE_CONFIG_OPTS) | 
					
						
							| 
									
										
										
										
											2018-03-05 17:42:44 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | - enable INTEL_MEI_WDT=m (to allow disabling via patch) | 
					
						
							| 
									
										
										
										
											2017-03-15 16:43:11 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-05 17:42:44 +03:00
										 |  |  | - disable CONFIG_SND_PCM_OSS (enabled by default in Ubuntu, not needed) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | - switch CONFIG_TRANSPARENT_HUGEPAGE to MADVISE from ALWAYS | 
					
						
							| 
									
										
										
										
											2017-03-15 16:43:11 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | - enable CONFIG_CEPH_FS=m (request from user) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | - enable common CONFIG_BLK_DEV_XXX to avoid hardware detection | 
					
						
							| 
									
										
										
										
											2018-08-10 14:24:29 +03:00
										 |  |  |   problems (udev, update-initramfs have serious problems without that) | 
					
						
							| 
									
										
										
										
											2017-03-15 16:43:11 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  |   	 CONFIG_BLK_DEV_SD=y | 
					
						
							|  |  |  |   	 CONFIG_BLK_DEV_SR=y | 
					
						
							|  |  |  |   	 CONFIG_BLK_DEV_DM=y | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | - compile NBD and RBD modules | 
					
						
							|  |  |  | 	 CONFIG_BLK_DEV_NBD=m | 
					
						
							|  |  |  | 	 CONFIG_BLK_DEV_RBD=m | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-08-22 11:27:55 +03:00
										 |  |  | - enable IBM JFS file system as module | 
					
						
							| 
									
										
										
										
											2021-09-28 08:08:46 +03:00
										 |  |  |   requested by users (bug #64) | 
					
						
							| 
									
										
										
										
											2017-03-15 16:43:11 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-08-22 11:27:55 +03:00
										 |  |  | - enable apple HFS and HFSPLUS as module | 
					
						
							| 
									
										
										
										
											2021-09-28 08:08:46 +03:00
										 |  |  |   requested by users | 
					
						
							| 
									
										
										
										
											2017-03-15 16:43:11 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | - enable CONFIG_BCACHE=m (requested by user) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | - enable CONFIG_BRIDGE=y | 
					
						
							| 
									
										
										
										
											2021-09-28 08:08:46 +03:00
										 |  |  |   to avoid warnings on boot, e.g. that net.bridge.bridge-nf-call-iptables is an unknown key | 
					
						
							| 
									
										
										
										
											2017-03-15 16:43:11 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | - enable CONFIG_DEFAULT_SECURITY_APPARMOR | 
					
						
							|  |  |  |   We need this for lxc | 
					
						
							| 
									
										
										
										
											2018-03-05 17:42:44 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-15 16:43:11 +03:00
										 |  |  | - set CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y | 
					
						
							|  |  |  |   because if not set, it can give some dynamic memory or cpu frequencies  | 
					
						
							|  |  |  |   change, and vms can crash (mainly windows guest). | 
					
						
							|  |  |  |   see http://forum.proxmox.com/threads/18238-Windows-7-x64-VMs-crashing-randomly-during-process-termination?p=93273#post93273 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | - use 'deadline' as default scheduler | 
					
						
							| 
									
										
										
										
											2021-09-28 08:08:46 +03:00
										 |  |  |   This is the suggested setting for KVM. We also measure bad fsync performance with ext4 and cfq. | 
					
						
							| 
									
										
										
										
											2017-03-15 16:43:11 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | - disable CONFIG_INPUT_EVBUG | 
					
						
							| 
									
										
										
										
											2021-09-28 08:08:46 +03:00
										 |  |  |   Module evbug is not blacklisted on debian, so we simply disable it to avoid | 
					
						
							|  |  |  |   key-event logs (which is a big security problem) | 
					
						
							| 
									
										
										
										
											2017-03-15 16:43:11 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-05 17:42:44 +03:00
										 |  |  | - enable CONFIG_MODVERSIONS (needed for ABI tracking) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | - switch default UNWINDER to FRAME_POINTER | 
					
						
							|  |  |  |   the recently introduced ORC_UNWINDER is not 100% stable yet, especially in combination with ZFS | 
					
						
							| 
									
										
										
										
											2017-03-15 16:43:11 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-05 17:42:44 +03:00
										 |  |  | - enable CONFIG_PAGE_TABLE_ISOLATION (Meltdown mitigation) |