# Linux-pf

This article or section is out of date.

Reason: UKSM is no longer part of linux-pf (Discuss in Talk:Linux-pf#linux-pf does not contain TuxOnIce and UKSM anymore)

Linux-pf is a kernel package based on the stock -ARCH kernel, with the following patches applied:

- The latest Con Kolivas' -ck patchset, including BFS
- BFQ (as default I/O scheduler)
- UKSM
- AUFS3

## Installation

### From the unofficial repository

Precompiled packages (generic or CPU-family optimized) are available from the archlinuxcn unofficial repository. See Unofficial user repositories for configuration details.

After an upgrade, running `pacman -Sl repo_name` will show the packages available in the given repository. Afterwards, just install the linux-pf and linux-pf-headers packages (for generic binaries - platform-specific binaries are also available in some repositories and will be listed in the output from the aforementioned pacman command). See the #Configuration section for additional configuration steps.

### From the AUR

Install linux-pfAUR from the AUR. A long-term support version of linux-pf is available with linux-pf-ltsAUR.

### Manual compilation

There are a number of options a user is asked to choose from, should he/she select to compile from the PKGBUILD:

    ==> Hit <Y> to use your running kernel's config
        (needs IKCONFIG and IKCONFIG_PROC)
    ==> Hit <L> to run 'make localmodconfig'
    ==> Hit <N> (or just <ENTER>) to build an all-inclusive kernel like stock -ARCH
        (warning: it can take a looong time)

The <Y> option is for users who have already compiled and are running a custom kernel. The PKGBUILD reads the running kernel's configuration and uses it for the subsequent compilation. The <L> option tries some kind of autodetection of the user's hardware: it first tries to use the modprobed-db module database, then falls back to the linux kernel's `make localmodconfig` functionality. The last option is self-explanatory.

    ==> Kernel configuration options before build:
        <M> make menuconfig (console menu)
        <N> make nconfig (newer alternative to menuconfig)
        <G> make gconfig (needs gtk)
        <X> make xconfig (needs qt)
        <O> make oldconfig
        <ENTER> to skip configuration and start compiling

Choose one of these to use your favourite user interface for configuring the kernel. Note that the last option might still prompt with unresolved/new configuration options, if you have selected <Y> or <L> in the previous step.

    ==> An non-generic CPU was selected for this kernel.
    ==> Hit <G>     :  to create a generic package named linux-pf
    ==> Hit <ENTER> :  to create a package named after the selected CPU
                       (e.g. linux-pf-core2 - recommended)
    ==> This option affects ONLY the package name. Whether or not the
    ==> kernel is optimized was determined at the previous config step.

If you have selected a specific CPU optimization for your kernel in the previous step, the default action is to append the CPU to the package name. This way, a subsequent package update from the repository will pull the optimized package and not the generic one. This also will help better compatibility with 3rd party precompiled modules (e.g. nvidia-pf), which might break things if loaded on optimized linux-pf kernels.

#### Install compiled package

After the compilation finishes, an additional linux-pf-headers[-cpu] package will be created. Do not forget to install it too, if you plan on using additional modules like NVIDIA or VirtualBox.

    # pacman -U linux-pf-core2-3.3.2-1-$CPUTYPE.pkg.tar.xz linux-pf-headers-core2-3.3.2-1-$CPUTYPE.pkg.tar.xz

During the kernel installation, mkinitcpio will be called by the install script to recreate the initramfs.

Note: If you make any changes to `/etc/mkinitcpio.conf` after the installation, you must run `mkinitcpio -p linux-pf` to have the initial ramdisk recreated.

## Configuration

Then, you need to add a boot entry in boot loader configuration file[broken link: invalid section] which points to linux-pf (the following example is from one of the maintainer's boxes):

    title  Linux-pf 3.2
    root   (hd0,4)
    kernel (hd0,0)/vmlinuz-linux-pf root=/dev/disk/by-label/ROOT ro vga=0x318 lapic resume=/dev/disk/by-label/SWAP video=vesafb:ywrap,mtrr:3 fastboot quiet
    initrd (hd0,0)/initramfs-linux-pf.img

## Tips and tricks

- If you notice disk-related performance problems or occasional hiccups, it might be an I/O scheduler issue. Try a different one than the linux-pf default (BFQ) by echoing to `/sys/block/sda/queue/scheduler` cfq, noop or deadline: `# echo noop >`. Note, the aforementioned command only sets the I/O scheduler for the 1st hard drive and additional echoes will be needed if you have more. If the situation improves, then append "elevator=cfq" (or noop or deadline) to the linux-pf command line in `/boot/grub/menu.lst`, to make the change permanent.
- For people who build their own tailored kernels and compilation aborts with with an error about "missing include/config/dvb/*.h files", setting [*] Digital TV support at Device Drivers / <M> Multimedia support and leaving everything else out, creates just the necessary dvb.h, which allows the compilation to continue.

## Forum thread for linux-pf

There is a discussion thread at the BBS for reporting errors, impressions, ideas and requests.

## See also

- linux-pf mercurial repository
- Patchset homepage
- Patchset community forum
- Patchset changelog

Category:

- Kernel

Hidden categories:

- Pages or sections flagged with Template:Out of date
- Pages with broken section links