blob: 36867d1b62d1a78582562e9aeaf80c3fa66cb17e [file] [log] [blame]
---
title: 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.
<h2>Backports package release types</h2>
Both daily snapshots based on [http://git.kernel.org/cgit/linux/kernel/git/next/linux-next.git linux-next], and stable releases based [http://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git Linux's stable releases] 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.
<h2>Usage guide</h2>
Building backports follows the same build mechanism as building the Linux kernel.
<pre>
# as a user
make menuconfig
make -j4
# as root
make install
# reboot and enjoy
</pre>
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.
<pre>
make help
make defconfig-help
</pre>
If you use this option just use the 'make defconf-option' in replacement for ''make menuconfig'' above. For example to compile all wifi drivers:
<pre>
# as a user
make defconfig-wifi
make -j4
# as root
make install
</pre>
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).
<h2>Cross compiling</h2>
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.
<h2>Cross compile with Freescale's LTIB</h2>
To get backports happy in LTIB, use UNSPOOF/SPOOF_PATH to switch between host and cross environment. Example <i>Build</i> 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
[[File:88x31.png‎]] - This text is licensed under a [https://creativecommons.org/licenses/by-sa/3.0/ Creative Commons Attribution-ShareAlike 3.0 Unported License].