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: persistently: <pre> sudo vi /etc/tmpfiles.d/set_IO_scheduler.conf </pre> #* And add the following: <pre> w /sys/block/sda/queue/scheduler echo "w /sys/block/sdX/queue/scheduler - - - - bfq bfq" > /etc/tmpfiles.d/set_IO_scheduler.conf </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