X-Git-Url: https://git.proxmox.com/?p=pve-kernel.git;a=blobdiff_plain;f=README;h=6495a33b3524602b5dd0772f2762a9bad36eebb9;hp=93c82017c05cd54dd75df28a90382c65d2e50622;hb=HEAD;hpb=5d6027107189cb69e7f97e38a6986784ac668142 diff --git a/README b/README index 93c8201..256cc26 100644 --- a/README +++ b/README @@ -1,9 +1,9 @@ KERNEL SOURCE: ============== -We currently use the Ubuntu kernel sources, available from: +We currently use the Ubuntu kernel sources, available from our mirror: - http://kernel.ubuntu.com/git/ubuntu/ubuntu-impish.git/ + https://git.proxmox.com/?p=mirror_ubuntu-kernels.git;a=summary Ubuntu will maintain those kernels till: @@ -24,6 +24,67 @@ Additional/Updated Modules: For licensing questions, see: http://open-zfs.org/wiki/Talk:FAQ +BUILD +===== + +As this is packaging for the Linux kernel with some extra integrations, like +ZFS, this repo cannot be handled like a plain Linux kernel git repository. + +The actual Linux kernel source lives in a git submodule. + +For a build you should init the submodules and then handle it like most our +Debian packaging builds. If unsure you can follow this: + +Installing Build-Dependencies +----------------------------- + +You can either just check the package metadata template `debian/control.in` +and install the packages listed in the `Build-Depends` section manually +(replace `debhelper-compat` with just `debhelper`) or use a more automated way +described below: + + # install base build-dependencies and helpers + apt update + apt install devscripts + + # create build-directory so that we got final packaging control files from the + # .in templates generated + make build-dir-fresh + + # install build-dependencies (replace BUILD-DIR with actual one) + mk-build-deps -ir BUILD-DIR/debian/control + + +Package Build +------------- + + # start the actual build + make deb + +For simple KConfig modifications you can adapt the list in `debian/rules` file. +For quick code changes to the actual kernel code you can do them directly in +the submodule/ubuntu-kernels directory, then re-create the build-directory, e.g.: + + make clean + # now build again, explicitly creating the build-dir isn't required anymore + # after one has the build-dependencies already installed. + make deb + + +Modify-Build-Test Cycles +------------------------ + +Ideally you avoid the need for doing a full package build and just directly +build linux from the ubuntu-kernels or the mainline (stable) repo with copying +over a build-config of a proxmox-kernel to that as .config and then using the +`make olddefconfig` target. + +If you need full package builds you can try to make changes inside the +BUILD-DIR directly and then continue build from there, e.g., using +`dpkg-buildpackage -b -uc -us --no-pre-clean`. Depending on what stage you want +to continue build you might need to touch, or remove some *.prepared files. +Just check `debian/rules` for how kernel build progress is tracked by make. + SUBMODULE ========= @@ -35,7 +96,7 @@ 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: -$ cat build/ubuntu-impish/.git +$ cat build/ubuntu-kernel/.git 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 @@ -60,18 +121,30 @@ top level meta package, depends on current default kernel series meta package. git clone git://git.proxmox.com/git/proxmox-ve.git -pve-kernel-meta ---------------- +proxmox-default-kernel +---------------------- -depends on latest kernel and header package within a certain kernel series, -e.g., pve-kernel-5.11 / pve-headers-5.11 +Depends on default kernel and header meta package, e.g., proxmox-kernel-6.2 / +proxmox-headers-6.2. git clone git://git.proxmox.com/git/pve-kernel-meta.git +proxmox-kernel-X.Y +------------------ + +Depends on the latest kernel (or header, in case of proxmox-headers-X.Y) +package within a certain series. + +e.g., proxmox-kernel-6.2 depends on proxmox-kernel-6.2.16-6-pve + +NOTE: Since Proxmox VE 8, based on Debian 12 Bookworm, the kernel ABI is bumped +with every version bump due to module signing. Since then the meta package was +pulled into the kernel repo, before that it lived in pve-kernel-meta.git. + pve-firmware ------------ -contains the firmware for all released PVE kernels. +Contains the firmware for all released PVE kernels. git clone git://git.proxmox.com/git/pve-firmware.git @@ -99,18 +172,18 @@ 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-.conf +We ship this list in /lib/modprobe.d/blacklist_proxmox-kernel-.conf The user typically edit /etc/modules to enable a specific watchdog device. 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 +image and modules, enable the 'pkg.proxmox-kernel.debug' build profile (e.g. by +exporting DEB_BUILD_PROFILES='pkg.proxmox-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 +Note: the -dbgsym package is only valid for the proxmox-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.