Documentation/packaging

From Driver Backports Wiki
(Difference between revisions)
Jump to: navigation, search
(Created page with " 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>Rel...")
 
Line 2: Line 2:
 
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.
 
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>Release types</h2>
+
<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.
 
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.

Revision as of 18:48, 17 November 2014

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.

Contents

Backports package release types

Both daily snapshots based on linux-next, and stable releases based 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.

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
Personal tools