This is based on a post I made on the Qubes OS forums. However, as I am unable to update the original after a certain time, I wanted to post a solved method for getting the kinks out of setup.
This was tested on Qubes 4.1.2 and is also known to work on Fedora, which dom0 is based on, by default in Qubes.
Remarks
- Requires disabling Secure Boot in the BIOS
- Requires setting time and date in BIOS to match UTC/GMT
If there is something missing from the section below, it is assumed to be working:
State During and Immediately After Installation
- Screen tearing/slow display refresh rate (depends on how “busy” the window manager is) (see fix below)
- Brightness hotkeys not working (see fix below)
- Suspend/resume completely broken (does not come back from apparent low-power state and must be power-cycled) (see fix below)
- Terrible battery life (see improvement below)
Fixes
Screen tearing
From dom0:
sudo qubes-dom0-update
sudo qubes-dom0-update kernel-latest
Brightness Keys, Suspend/Resume, Battery Life
From dom0 - feel free to use nano
, if preferred:
sudo vim /etc/default/grub
Add the following to the end of
- Add
mem_sleep_default=deep
(fixes issues with suspend/resume) - Add
module_blacklist=hid_sensor_hub
(fixes issue with brightness keys) - Add
nvme.noacpi=1
(improves battery life and power consumption)
Your /etc/default/grub
file should resemble the following:
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=false
GRUB_TERMINAL_OUTPUT="gfxterm"
GRUB_CMDLINE_LINUX="rd.luks.uuid=luks-6868706d-c28d-4871-9cd4-03b156ca9a4f rd.lvm.lv=qubes_dom0/root rd.lvm.lv=qubes_dom0/swap plymouth.ignore-serial-consoles rd.driver.pre=btrfs rhgb quiet"
GRUB_DISABLE_RECOVERY="true"
GRUB_THEME="/boot/grub2/themes/qubes/theme.txt"
GRUB_CMDLINE_XEN_DEFAULT="console=none dom0_mem=min:1024M dom0_mem=max:4096M ucode=scan smt=off gnttab_max_frames=2048 gnttab_max_maptrack_frames=4096"
GRUB_DISABLE_OS_PROBER="true"
GRUB_CMDLINE_LINUX="$GRUB_CMDLINE_LINUX rd.qubes.hide_all_usb mem_sleep_default=deep module_blacklist=hid_sensor_hub nvme.noacpi=1"
- Apply the GRUB config changes (from dom0):
Note, the path below will change in Qubes 4.2 (which is not yet a stable release as of this post)
sudo grub2-mkconfig -o /boot/efi/EFI/qubes/grub.cfg
sudo dracut -f
- Reboot
- Verify the arg shows up and is applied (from dom0):
sudo cat /etc/proc/
placeholder root=/dev/mapper/qubes_dom0-root ro rd.luks.uuid=luks-39f8de13-ee6d-46fb-9f15-975f32c850c8 rd.lvm.lv=qubes_dom0/root rd.lvm.lv=qubes_dom0/swap plymouth.ignore-serial-consoles rd.driver.pre=btrfs rhgb quiet rd.qubes.hide_all_usb mem_sleep_default=deep
- Done