diff options
author | Konstantin Ryabitsev <konstantin@linuxfoundation.org> | 2024-10-08 15:24:36 -0400 |
---|---|---|
committer | Konstantin Ryabitsev <konstantin@linuxfoundation.org> | 2024-10-08 15:24:36 -0400 |
commit | f3216be1efae259f0551c744f03f7195640573e5 (patch) | |
tree | 5d97f6604a3f16ad1d5439126665f0ff12bed59c /source/documentation/packaging.rst | |
parent | 96836ca0c23f0f5eb766cfe0a39a72a3bc216f2a (diff) | |
download | backports-master.tar.gz |
Signed-off-by: Konstantin Ryabitsev <konstantin@linuxfoundation.org>
Diffstat (limited to 'source/documentation/packaging.rst')
-rw-r--r-- | source/documentation/packaging.rst | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/source/documentation/packaging.rst b/source/documentation/packaging.rst new file mode 100644 index 0000000..2f3921e --- /dev/null +++ b/source/documentation/packaging.rst @@ -0,0 +1,99 @@ +Documentation/packaging +======================= + +The backports project makes release of two types of **packages** which +provides device drivers from future versions of Linux usable on older +Linux kernel releases. + +Backports package release types +------------------------------- + +Both daily snapshots based on `linux-next +<http://git.kernel.org/cgit/linux/kernel/git/next/linux-next.git>`__, +and stable releases based `Linux's stable releases +<http://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git>`__ +are provided. Always use the latest *stable* available release unless +you need a feature / fix only currently available on the linux-next +based release. A backports-3.x release means device drivers from the +Linux v3.x release have been taken, backported and made available for +you to use on any kernel version prior to the release version. + +Usage guide +----------- + +Building backports follows the same build mechanism as building the +Linux kernel:: + + # as a user + make menuconfig + make -j4 + # as root + make install + # reboot and enjoy + +Its understood users may not know how to configure the backports +package, just like they may not know how to configure the Linux kernel, +so a short cut is provided with default configuration files that can be +used to only build their drivers / subsystems of interest. You can also +just query the regular help menu:: + + make help + make defconfig-help + +If you use this option just use the 'make defconf-option' in replacement +for *make menuconfig* above. For example to compile all wifi drivers:: + + # as a user + make defconfig-wifi + make -j4 + # as root + make install + +Note that there are only default configuration files written for a few +drivers while the project actually backports a lot of device drivers, +the reason we have default configuration files for a few drivers is +simply because developer have provided a default config options for +them. What we really need is a 'make localmodconfig' support but that +will take a while given that it involves mapping older kernel configs to +newer kernel configs (which likely would be welcomed upstream as well). + +Cross compiling +--------------- + +To cross compile:: + + set -a + CROSS_COMPILE=${CROSS_COMPILE} + ARCH=${TARGET_CPU} + KLIB_BUILD=${DEV_PATH}/${LINUX_DIR} + KLIB=${TARGET_ROOT_ON_HOST} + set +a + make oldconfig # menuconfig worked here too + make + make install + +The 'make install' target isn't currently sane for cross-builds due to +the bacport_firmware_install script not respecting prefixes. For now you +can comment out that script few others like initrd updates, from being +run out of the Makefiles. + +Cross compile with Freescale's LTIB +----------------------------------- + +To get backports happy in LTIB, use UNSPOOF/SPOOF_PATH to switch between +host and cross environment. Example Build section in backports.spec:: + + %Build + export PATH=$UNSPOOF_PATH + + make menuconfig prefix=%{_prefix} \ + CROSS_COMPILE=${TOOLCHAIN_PATH}/bin/${TOOLCHAIN_PREFIX} \ + ARCH=$LINTARCH KLIB=${TOP}/rootfs/lib/modules/%{kversion} \ + KLIB_BUILD=${TOP}/rpm/BUILD/linux + + export PATH=$SPOOF_PATH + + make prefix=%{_prefix} \ + CROSS_COMPILE=${TOOLCHAIN_PATH}/bin/${TOOLCHAIN_PREFIX} \ + ARCH=$LINTARCH KLIB=${TOP}/rootfs/lib/modules/%{kversion} \ + KLIB_BUILD=${TOP}/rpm/BUILD/linux |