- Current version: 3.2.7-1
Linux-pf is a kernel package based on the stock -ARCH kernel, patched with a row of significant patches:
- The latest Con Kolivas' -ck patchset, including BFS
- BFQ (as default I/O scheduler)
The reference PKGBUILD can be found at the AUR linux-pf page and at the bitbucket.org mercurial repository. Precompiled packages, generic and CPU-family optimized are usually uploaded at the pfkernel unofficial repository within 6 hours of the AUR update for x86_64 and 2 days for i686. Append the following to
/etc/pacman.conf to activate the pfkernel repo:
[pfkernel] # Generic and optimized binaries of the ARCH kernel patched with BFS, TuxOnIce, BFQ, IMQ, Aufs3 # linux-pf, kernel26-pf, gdm-old, nvidia-pf, nvidia-96xx, xchat-greek, arora-git Server = http://dl.dropbox.com/u/11734958/$arch
Running pacman -Syyl pfkernel will update all repos and show the available packages of pfkernel.
There's 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.
==> Hit <ENTER>: to create a package named linux-pf regardless of the CPU selected in config (recommended) ==> Hit <P> : to create a package named after the selected CPU (e.g. linux-pf-core2 - for advanced users)
If you have selected a specific CPU optimization for your kernel in the previous step, choosing <P> here will 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.
After the compilation finishes, an additional linux-pf-headers package will be created. Don't forget to install it too, if you plan on using additional modules like nvidia or virtualbox. During the kernel installation, mkinitcpio will be called to create the initramfs.
If you plan on using TuxOnIce for hibernation, make sure you have added the necessary modules to the MODULES array of
/etc/mkinitcpio.conf and at least the resume hook to the HOOKS array:
MODULES="... lzo tuxonice_compress tuxonice_swap tuxonice_userui ..." HOOKS="... sata userui resume filesystems ..."
In the example above, TuxOnIce is setup to use a swap partition as the suspended image allocator. The resume hook must be placed before filesystems. Also, a progress indicator is requested with userui. Please read the TuxOnIce wiki page for more detailed information.
/etc/hibernate/tuxonice.confuntil it gets fixed. This workaround has been confirmed to work, adding only 1-2 seconds of delay to hibernation.
Tweaks / Tips
- If you notice disk-related performance problems or occational hickups, 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/schedulercfq, noop or deadline: echo bfq >| /sys/block/sda/queue/scheduler. Note, the aforementioned command only sets the I/O scheduler for the 1st hard drive and additional echos 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 <M> at DVB for Linux at Device Drivers/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's a discussion thread at the BBS for reporting errors, impressions, ideas and requests.