User Tools

Site Tools



Installing Sabayon

  • The most recent live cds use an older i915 driver that causes an unrecoverable black screen when booting in any mode. Add nomodeset to the kernel boot line.
  • Be sure to install using ethernet, since there are no wireless drivers out of the box on 13.08.


Install a kernel >= 3.11.6 and make sure CONFIG_IWLMVM is enabled. the iwlwifi module should be automatically loaded and wifi just works.


Mostly just works.

There are two physical sound cards, both driven by the snd-hda-intel driver. The HDMI card is always detected first, and the analog (speakers and headphones) second. Reorder these to make the analog the default by /etc/modprobe.d/alsa.conf to contain the following

options snd-hda-intel index=1,0

KDE defaults to letting the multimedia volume keys (Fn+F1/F2/F3) control the HDMI card by default. Switch this to the analog card by opening KMix and setting Settings→Select Master Channel…→Built-in Audio Analog Stereo.

If there's no sound when logging into plasma (the volume icon has a red cross through it, and the kde settings shows no devices), make sure pulseaudio user daemon is running, and if not start it one-time with pulseaudio -D,


After installing and upgrading to latest i915 driver, remove nomodeset from the kernel boot options. This will enable screen brightness control and fix sleep/resume.

Install bumblebee and enable the service to use optimus. Run programs using optirun to enable the discrete graphics card.

Nice feature, the screen brightness can be turned all the way down to zero, which turns the screen and backlight off.


Because of the high resolution, text will be very small by default. Change the DPI size in KDE to make all KDE applications well-behaved (konsole, plasma).

Still working on fixing non-KDE programs such as chrome.


* Enable the bluetooth

systemctl enable bluetooth
systemctl start bluetooth

* Use bluetoothctl to enable the controller, scan and pair with devices, and connect

# Start the shell
bluetoothctl -a
# Turn on the controller
power on
agent on
# Scan for devices
scan on
# List available devices
# Pair with a device
pair $mac
# Connect to the device
connect $mac

The error message:

Nov 24 12:33:22 dbus[1878]: [system] Rejected send message, 1 matched rules; type="method_call", sender=":1.81" (uid=0 pid=10758 comm="/usr/libexec/bluetooth/bluetoothd --noplugin=sap ") interface="org.bluez.MediaEndpoint1" member="SelectConfiguration" error name="(unset)" requested_reply="0" destination=":1.49" (uid=10001 pid=2994 comm="/usr/bin/pulseaudio --start ")
Nov 24 12:33:22 bluetoothd[10758]: Endpoint replied with an error: org.freedesktop.DBus.Error.AccessDenied

is fixed by amending /etc/dbus-1/system.d/bluetooth.conf to match:

  <policy user="root">
    <allow own="org.bluez"/>
    <!-- Add this line below -->
    <allow send_type="method_call"/>
    <allow send_destination="org.bluez"/>
    <allow send_interface="org.bluez.Agent"/>
    <allow send_interface="org.bluez.HandsfreeAgent"/>
    <allow send_interface="org.bluez.MediaEndpoint"/>
    <allow send_interface="org.bluez.MediaPlayer"/>
    <allow send_interface="org.bluez.Watcher"/>
    <allow send_interface="org.bluez.ThermometerWatcher"/>

(Info taken from:

Set the preference for certain types of audio (e.g. Music) to route through the bluetooth device when present using the Multimedia applet in KDE's control centre.

Touch screen

Out of the box, single touch input works but no gestures. This means you can touch to click, and drag to select. No scrolling, or pinch-to-zoom.

Install and run touchegg to get multitouch gestures. touchegg, touchegg-gui (configuration tool), and dependencies (utouch-{evemu,frame,grail,geis}) are in the sihnon portage overlay and community entropy repo.


Just works.

Flashing BIOS

Taken from Arch Wiki

  • Download the latest freedos version
  • Flash it to the USB stick with dd
  • Mount and copy in the BIOS executable from Dell website
  • Reboot into freedos, select the no drivers option (the default option leads to exceptions and the flash failing)
    • It might also be necessary to disable Intel VTx, not confirmed; don't forget to re-enable after

ZFS root

  • Prepare the partition table manually
    1. BIOS boot for grub/mbr, 1M
    2. ext2 for /boot, 1G
    3. vfat for /efi, 1G
    4. zfs partition
    5. ext4 temporary filesystem for / during install
  • Install sabayon to the ext4 partition at the end, but don't auto reboot at the end
  • Create the zpool with zpool create rpool /dev/disk/by-id/wwn-*-part4
  • Create the root, root/home and root/var filesystems within, with encrytion
  • Set root filesystem to not be mountable automatically with zfs set canmount=off rpool/root
  • Set the mountpoints for each filesystem:
    zfs set mountpoint=/ rpool/root
    zfs set mountpoint=/var rpool/root/var
    zfs set mountpoint=/home rpool/root/home
  • Mount the filesystems to arbitrary locations with:
    mkdir /mnt/sysimage
    mount -o zfsutil -t zfs rpool/root /mnt/sysimage/root
    mount -o zfsutil -t zfs rpool/root/home /mnt/sysimage/root/home
    mount -o zfsutil -t zfs rpool/rootvar /mnt/sysimage/root/var
  • Rsync the contents into the ZFS root:
    mkdir /mnt/temproot
    mount /dev/sda5 /mnt/temproot
    rsync -a /mnt/temproot/ /mnt/sysimage/
  • Prepare dracut for zfs root booting:
    add_dracutmodules+="dracut-systemd systemd systemd-initrd zfs"
  • Chroot into the zfs root filesystem and rebuild the initramfs:
    dracut -f /boot/initramfs-genkernel-5.4.0-sabayon 5.4.0-sabayon
  • Remove the temporary partition
  • Add a swap partition at the very end of the disk
  • Extend the zfs partition to fill the remaining space
  • Reboot and pray

Kernel package installations run sabayon-dract –rebuild x.y, which invokes dracut with a bunch of module omissions including all the systemd ones needed for ZFS to work. Therefore whenever upgrading the kernel, be sure to run dracut -f /boot/initramfs-genkernel-x86_64-$(uname -r) $(uname -r).

Grub 2.02-r3 ships a version of grub2-probe which can't handle ZFS properly. This means the generated grub config file will contain root=ZFS=/root instead of root=ZFS=rpool/root which breaks root filesystem mounting. After installing grub or any kernel package, fix grub,cfg before rebooting.


Failure to boot from ZFS root

Errors on startup about system not having been booted with systemd. This is a problem with the dracut initrd.

Manual boot:

  • Edit grub kernel commandline to add rd.break=pre-mount and remove quiet splash
  • At the prompt, run:
    zpool import rpool
    zfs load-key rpool/root
    # Enter encryption passphrase
    mount -t zfs -o zfsutil rpool/root /sysroot
    mount -t zfs -o zfsutil rpool/root/home /sysroot/home
    mount -t zfs -o zfsutil rpool/root/var /sysroot/var
    mount -t zfs -o zfsutil rpool/root/docker /sysroot/var/lib/docker
  • After boot, regenerate the initrd
    dracut -f /boot/initramfs-genkernel-5.4.0-sabayon 5.4.0-sabayon

Known issues:

  • Infinite loop of something complaining about system not having been booted with systemd, dbus error: Initramfs was built without systemd support, and needs rebuilding
  • Error that \'rpool/root\' contains invalid characters and is not a valid filesystem name: /usr/lib/dracut/modules.d/90zfs/ contains errant single quotes, which need to be removed. Rebuild the initrd afterwards:
    # This:
                                    ask_for_password \
                                            --tries 5 \
                                            --prompt "Encrypted ZFS password for ${ENCRYPTIONROOT}: " \
                                            --cmd "zfs load-key '${ENCRYPTIONROOT}'"
    # Should be:
                                    ask_for_password \
                                            --tries 5 \
                                            --prompt "Encrypted ZFS password for ${ENCRYPTIONROOT}: " \
                                            --cmd "zfs load-key ${ENCRYPTIONROOT}"

NetworkManager not authorized to control networking

  • Ensure interactive user is a member of the network group (logout and in again)
  • Ensure polkit permits netdev group to control networkmanager (changes take immediate effect):
    polkit.addRule(function(action, subject) {
        if ("org.freedesktop.NetworkManager.") == 0 && subject.isInGroup("network")) {
            return polkit.Result.YES;
dell_xps_15_9530.txt · Last modified: 2021/08/27 07:40 by ben