Difference between revisions of "Linux-pf"

From ArchWiki
Jump to: navigation, search
(Installation)
m
(36 intermediate revisions by 4 users not shown)
Line 1: Line 1:
[[Category:Kernel (English)]]
+
[[Category:Kernel]]
{{i18n|Linux-pf}}
 
 
 
 
{{Article summary start}}
 
{{Article summary start}}
 
{{Article summary text|'''Linux-pf and linux-pf-headers'''}}
 
{{Article summary text|'''Linux-pf and linux-pf-headers'''}}
* Current version: '''3.2.7-1'''
+
* Current version: '''3.7.4-2'''
* Kernel version: '''3.2.11'''
+
* Kernel version: ''3.7.4
 +
(check the [https://aur.archlinux.org/packages.php?ID=50956 AUR linux-pf page] for actual latest versions)
  
 
{{Article summary heading|Related}}
 
{{Article summary heading|Related}}
{{Article summary wiki|Tuxonice}}
+
{{Article summary text|}}
 
[https://bitbucket.org/nous/linux-pf/ linux-pf mercurial repository]
 
[https://bitbucket.org/nous/linux-pf/ linux-pf mercurial repository]
  
Line 14: Line 13:
  
 
[http://pf.natalenko.name/ Patchset homepage]
 
[http://pf.natalenko.name/ Patchset homepage]
 +
 +
[http://pf.natalenko.name/forum Patchset community forum]
  
 
[http://freecode.com/projects/pf-kernel Patchset changelog]
 
[http://freecode.com/projects/pf-kernel Patchset changelog]
 +
 +
[[Tuxonice]]
 
{{Article summary end}}
 
{{Article summary end}}
  
Line 21: Line 24:
 
* [http://ck-hack.blogspot.com/ The latest Con Kolivas' -ck patchset, including BFS]
 
* [http://ck-hack.blogspot.com/ The latest Con Kolivas' -ck patchset, including BFS]
 
* [[TuxOnIce]]
 
* [[TuxOnIce]]
* [http://algo.ing.unimo.it/people/paolo/disk_sched/ BFQ (as default I/O scheduler)]
+
* [http://algo.ing.unimo.it/people/paolo/disk_sched/ BFQ] (as default I/O scheduler)
 +
* [http://kerneldedup.org/projects/uksm/ UKSM]
 
* [http://aufs.sourceforge.net/ AUFS3]
 
* [http://aufs.sourceforge.net/ AUFS3]
* [http://www.linuximq.net/ LinuxIMQ]
 
  
The reference PKGBUILD can be found at the [https://aur.archlinux.org/packages.php?ID=50956 AUR linux-pf page] and at the [https://bitbucket.org/nous/linux-pf bitbucket.org mercurial repository]. Precompiled packages, generic and CPU-family optimized are uploaded at the [http://dl.dropbox.com/u/11734958/index.html pfkernel unofficial repository], usually within 6 hours of the AUR update for x86_64 and 2 days for i686. Append the following to {{ic|/etc/pacman.conf}} to activate the pfkernel repo:
+
== Installation ==
 +
The reference PKGBUILD can be found at the [https://aur.archlinux.org/packages.php?ID=50956 AUR linux-pf page] and at the [https://bitbucket.org/nous/linux-pf bitbucket.org mercurial repository].  
 +
 
 +
=== From the unofficial repository (recommended) ===
 +
Precompiled packages, generic and CPU-family optimized are uploaded at the [http://dl.dropbox.com/u/11734958/index.html pfkernel unofficial repository], usually within 6 hours of the AUR update for x86_64 and 12 hours for i686. Append the following to {{ic|/etc/pacman.conf}} to activate the pfkernel repo:
 
:{{bc|<nowiki>
 
:{{bc|<nowiki>
 
[pfkernel]
 
[pfkernel]
Line 32: Line 39:
 
Server = http://dl.dropbox.com/u/11734958/$arch
 
Server = http://dl.dropbox.com/u/11734958/$arch
 
</nowiki>}}
 
</nowiki>}}
Running '''''pacman -Syyl pfkernel''''' will update all repos and show the available packages from pfkernel.
+
Running '''''pacman -Syyl pfkernel''''' will update all repos and show the available packages from pfkernel. Afterwards, installing linux-pf is as trivial as running '''''pacman -S linux-pf linux-pf-headers''''', but additional configuration steps must be performed; see the [[Linux-pf#Installation|Installation section]] below.
  
== Compilation ==
+
=== Manual compilation ===
 
There's a number of options a user is asked to choose from, should he/she select to compile from the PKGBUILD:
 
There's a number of options a user is asked to choose from, should he/she select to compile from the PKGBUILD:
 
::{{bc|<nowiki>
 
::{{bc|<nowiki>
Line 58: Line 65:
  
 
::{{bc|<nowiki>
 
::{{bc|<nowiki>
==> Hit <ENTER>: to create a package named linux-pf
+
==> An non-generic CPU was selected for this kernel.
            regardless of the CPU selected in config (recommended)
+
==> Hit <G>     : to create a generic package named linux-pf
==> Hit <P>   : to create a package named after the selected CPU
+
==> Hit <ENTER> : to create a package named after the selected CPU
            (e.g. linux-pf-core2 - for advanced users)
+
                  (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.
 
</nowiki>}}
 
</nowiki>}}
If you have selected a specific CPU optimization for your kernel in the previous step, choosing <nowiki><P></nowiki> 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.
+
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.
 
 
== Installation ==
 
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 intend to use TuxOnIce for hibernation, make sure you have added the necessary modules to the MODULES array of {{ic|/etc/mkinitcpio.conf}} and at least the ''resume'' hook to the HOOKS array:
+
==== Install compiled package ====
 +
After the compilation finishes, an additional ''linux-pf-headers[-cpu]'' package will be created. Don't forget to install it too, if you plan on using additional modules like [[nvidia]] or [[virtualbox]].
 
{{bc|<nowiki>
 
{{bc|<nowiki>
MODULES="... lzo tuxonice_compress tuxonice_swap tuxonice_userui ..."
+
$ sudo pacman -U linux-pf-core2-3.3.2-1-x86_64.pkg.tar.xz linux-pf-headers-core2-3.3.2-1-x86_64.pkg.tar.xz
HOOKS="... sata userui resume filesystems ..."
 
 
</nowiki>}}
 
</nowiki>}}
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.
+
During the kernel installation, [[mkinitcpio]] will be called by the install script to recreate the initramfs.
 +
{{Note|If you make any changes to {{ic|/etc/mkinitcpio.conf}} after the installation, you must run '''''mkinitcpio -p linux-pf''''' to have the initial ramdisk recreated.}}
  
You need to add a boot entry in {{ic|/boot/grub/menu.lst}} (or {{ic|/boot/grub/grub.cfg}}) which points to linux-pf (the following example is from one of the maintainer's boxes):
+
== Configuration ==
 +
Then, you need to add a boot entry in [[Boot Loader#Configuration files|boot loader configuration file]] which points to linux-pf (the following example is from one of the maintainer's boxes):
 
{{bc|<nowiki>
 
{{bc|<nowiki>
 
title  Linux-pf 3.2
 
title  Linux-pf 3.2
Line 82: Line 90:
 
initrd (hd0,0)/initramfs-linux-pf.img
 
initrd (hd0,0)/initramfs-linux-pf.img
 
</nowiki>}}
 
</nowiki>}}
 +
 +
If you intend to use TuxOnIce for hibernation, make sure you have added the necessary modules to the MODULES array of {{ic|/etc/mkinitcpio.conf}} and at least the ''resume'' hook to the HOOKS array:
 +
{{bc|<nowiki>
 +
MODULES="... lzo tuxonice_compress tuxonice_swap tuxonice_userui ..."
 +
HOOKS="... sata userui resume filesystems ..."
 +
</nowiki>}}
 +
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.
  
 
Last, you must choose whether you want to suspend using [[pm-utils]] or the [[Suspending_to_Disk_with_hibernate-script#Tuxonice_method|hibernate-script]]. Please, refer to the respective wiki pages for more details. [[TuxOnIce]] offers the option for a text mode or an even nicer [[fbsplash|framebuffer splash]] progress indicator.
 
Last, you must choose whether you want to suspend using [[pm-utils]] or the [[Suspending_to_Disk_with_hibernate-script#Tuxonice_method|hibernate-script]]. Please, refer to the respective wiki pages for more details. [[TuxOnIce]] offers the option for a text mode or an even nicer [[fbsplash|framebuffer splash]] progress indicator.
 
{{Note|Due to a bug in TuxOnIce, introduced in the days of kernel26-pf 2.6.39-pf4, hibernating with LZO compression corrupts the snapshotted image and resuming fails in decompression. The bug was recently acknowledged by the TuxOnIce author, who suggested adding "'''''ProcSetting no_multithreaded_io 1'''''" to {{ic|/etc/hibernate/tuxonice.conf}} until it gets fixed. This workaround has been confirmed to work, adding only 1-2 seconds of delay to hibernation.}}
 
  
 
== Tweaks / Tips ==
 
== 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 {{ic|/sys/block/sda/queue/scheduler}} ''cfq'', ''noop'' or ''deadline'': '''''echo noop >| /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 {{ic|/boot/grub/menu.lst}}, to make the change permanent.
+
* 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 {{ic|/sys/block/sda/queue/scheduler}} ''cfq'', ''noop'' or ''deadline'': '''''echo noop >| /sys/block/sda/queue/scheduler'''''. 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 {{ic|/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.
 
* 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 ==
 
== Forum thread for linux-pf ==
 
There's a [https://bbs.archlinux.org/viewtopic.php?id=103462 discussion thread] at the BBS for reporting errors, impressions, ideas and requests.
 
There's a [https://bbs.archlinux.org/viewtopic.php?id=103462 discussion thread] at the BBS for reporting errors, impressions, ideas and requests.

Revision as of 13:05, 4 February 2013

Template:Article summary start Template:Article summary text

  • Current version: 3.7.4-2
  • Kernel version: 3.7.4

(check the AUR linux-pf page for actual latest versions)

Template:Article summary heading Template:Article summary text linux-pf mercurial repository

AUR linux-pf page

Patchset homepage

Patchset community forum

Patchset changelog

Tuxonice Template:Article summary end

Linux-pf is a kernel package based on the stock -ARCH kernel, patched with a row of significant patches:

Installation

The reference PKGBUILD can be found at the AUR linux-pf page and at the bitbucket.org mercurial repository.

From the unofficial repository (recommended)

Precompiled packages, generic and CPU-family optimized are uploaded at the pfkernel unofficial repository, usually within 6 hours of the AUR update for x86_64 and 12 hours 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 from pfkernel. Afterwards, installing linux-pf is as trivial as running pacman -S linux-pf linux-pf-headers, but additional configuration steps must be performed; see the Installation section below.

Manual compilation

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.

==> 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. Don't forget to install it too, if you plan on using additional modules like nvidia or virtualbox.

$ sudo pacman -U linux-pf-core2-3.3.2-1-x86_64.pkg.tar.xz linux-pf-headers-core2-3.3.2-1-x86_64.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 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

If you intend to use 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.

Last, you must choose whether you want to suspend using pm-utils or the hibernate-script. Please, refer to the respective wiki pages for more details. TuxOnIce offers the option for a text mode or an even nicer framebuffer splash progress indicator.

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/scheduler cfq, noop or deadline: echo noop >| /sys/block/sda/queue/scheduler. 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 <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.