| --- | 
 | 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]. |