Support #620
Updated by Daniel Curtis over 9 years ago
{{>toc}}
This is a guide for installing the Linux-ck kernel on Arch linux.
h2. Prepare the Environment
* Make sure the system is up to date:
<pre>
sudo pacman -Syu
</pre>
h2. Install Linux-ck from Repo-ck
* Edit the pacman.conf:
<pre>
vi /etc/pacman.conf
</pre>
#* And add the following to the end of the file:
<pre>
[repo-ck]
Server = http://repo-ck.com/$arch
Server = http://repo-ck.com/$arch
Server = http://repo-ck.com/$arch
Server = http://repo-ck.com/$arch
Server = http://repo-ck.com/$arch
</pre>
* Now repo key needs to be received and locally signed:
<pre>
pacman-key -r 5EE46C4C
pacman-key --lsign-key 5EE46C4C
</pre>
* Refresh the repo metadata:
<pre>
pacman -Sy
</pre>
* (Optional) Identify the CPU:
<pre>
gcc -c -Q -march=native --help=target | grep march
</pre>
* Install the generic Linux-ck kernel:
<pre>
pacman -S linux-ck-generic
</pre>
#* (Optional) Or install the CPU specific kernel:
<pre>
pacman -S linux-ck-kx
</pre>
* Install the generic Linux-ck kernel headers:
<pre>
pacman -S linux-ck-generic-headers
</pre>
#* (Optional) Or install the CPU specific kernel:
<pre>
pacman -S linux-ck-kx
</pre>
h3. Install nVidia driver
* Install the generic Linux-ck nVidia driver:
<pre>
pacman -S nvidia-304xx-ck-generic
</pre>
#* (Optional) Or install the CPU specific nVidia driver:
<pre>
pacman -S nvidia-304xx-ck-kx
</pre>
h3. Install VirtualBox host driver:
* Install the generic Linux-ck VirtualBox host driver:
<pre>
pacman -S virtualbox-ck-host-modules-generic
</pre>
#* (Optional) Or install the CPU specific VirtualBox host driver:
<pre>
pacman -S virtualbox-ck-host-modules-kx
</pre>
* Update the grub config:
<pre>
grub-mkconfig -o /boot/grub/grub.cfg
</pre>
h2. Install Linux-ck from the AUR
h3. Install yaourt
* Download the packages for yaourt:
<pre>
cd /tmp
wget https://aur.archlinux.org/packages/pa/package-query/package-query.tar.gz && wget https://aur.archlinux.org/packages/ya/yaourt/yaourt.tar.gz
tar xzf package-query.tar.gz
tar xzf yaourt.tar.gz
</pre>
#* Install package-query:
<pre>
cd package-query
makepkg -csi
</pre>
#* Install yaourt
<pre>
cd ../yaourt
makepkg -csi
</pre>
h3. Receive PGP keys
* Receive Linus Torvalds' PGP key:
<pre>
gpg --recv-keys 79BE3E4300411886
</pre>
#* Then utimately trust the key:
<pre>
trust
5
y
quit
</pre>
* Receive Greg Kroah-Hartman's PGP key:
<pre>
gpg --recv-keys 38DBBDC86092693E
</pre>
#* Then ultimately trust the key:
<pre>
trust
5
y
quit
</pre>
h3. Install Linux-ck kernel
* Install the linux-ck package from the AUR:
<pre>
yaourt linux-ck
</pre>
#* (Optional) Install the linux-ck-headers package:
<pre>
yaourt linux-ck-headers
</pre>
* Edit the @PKGBUILD@ file and add the following:
<pre>
_BFQ_enable_="y"
</pre>
* Update the grub config:
<pre>
grub-mkconfig -o /boot/grub/grub.cfg
</pre>
h3. Install Linux-ck nVidia driver
* (Optional) Install the linux-ck nvidia package:
<pre>
yaourt nvidia-304xx-ck
</pre>
h3. Install Linux-ck VirtualBox host driver
* (Optional) Install the linux-ck virtualbox host modules:
<pre>
yaourt virtualbox-ck-host-modules
</pre>
h2. Enable Budget Fair Queueing (BFQ) I/O Scheduling
* Check which I/O scheduler is in use:
<pre>
cat /sys/block/sda/queue/scheduler
</pre>
#* _Example output:_
<pre>
noop deadline [cfq] bfq
</pre>
* Enable BFQ on @/dev/sda@ without rebooting:
<pre>
echo bfq > /sys/block/sda/queue/scheduler
</pre>
* Check which I/O scheduler is in use:
<pre>
cat /sys/block/sda/queue/scheduler
</pre>
#* _Example output:_
<pre>
noop deadline cfq [bfq]
</pre>
* Use BFQ on /dev/sda at boot persistently, create the set_IO_scheduler.conf file:
<pre>
sudo vi /etc/tmpfiles.d/set_IO_scheduler.conf
</pre>
#* And add the following:
<pre>
w /sys/block/sda/queue/scheduler - - - - bfq
</pre>
h3. BFQ Script
I had problems getting the tmpfiles.d configuration to work properly on systemd 219, so I created a script to easily enable BFQ on /dev/sda.
* Create the enable-bfq.sh script:
<pre>
sudo nano /usr/local/sbin/enable-bfq.sh
</pre>
#* And add the following:
<pre>
#!/bin/sh
## Script to enable BFQ on /dev/sda
echo bfq > /sys/block/sda/queue/scheduler
</pre>
* Make it executable:
<pre>
sudo chmod +x /usr/local/sbin/enable-bfq.sh
</pre>
h2. Resources
* https://wiki.archlinux.org/index.php/Kernels
* https://wiki.archlinux.org/index.php/Linux-ck
* https://wiki.archlinux.org/index.php/Repo-ck
* https://wiki.archlinux.org/index.php/Linux-ck#How_to_enable_the_BFQ_I.2FO_Scheduler