Difference between pages "ZFS as Root Filesystem" and "GNOME First Steps"

From Funtoo
(Difference between pages)
Jump to navigation Jump to search
m (Use Install/PortageTree template.)
 
 
Line 1: Line 1:
== Introduction ==
=== What is GNOME? ===


This tutorial will show you how to install Funtoo on ZFS (rootfs). This tutorial is meant to be an "overlay" over the [[Funtoo_Linux_Installation|Regular Funtoo Installation]]. Follow the normal installation and only use this guide for steps 2, 3, and 8.
"GNOME 3 is an easy and elegant way to use your computer. It is designed to put you in control and bring freedom to everybody. GNOME 3 is developed by the GNOME community, a diverse, international group of contributors that is supported by an independent, non-profit foundation." — [http://gnome.org GNOME]


=== Introduction to ZFS ===
=== Prerequisites ===  


Since ZFS is a new technology for Linux, it can be helpful to understand some of its benefits, particularly in comparison to BTRFS, another popular next-generation Linux filesystem:
==== From a Clean Install ====


* On Linux, the ZFS code can be updated independently of the kernel to obtain the latest fixes. btrfs is exclusive to Linux and you need to build the latest kernel sources to get the latest fixes.
Ensure that the [[X Window System]] is installed.


* ZFS is supported on multiple platforms. The platforms with the best support are Solaris, FreeBSD and Linux. Other platforms with varying degrees of support are NetBSD, Mac OS X and Windows. btrfs is exclusive to Linux.
=== Preparing to emerge ===


* ZFS has the Adaptive Replacement Cache replacement algorithm while btrfs uses the Linux kernel's Last Recently Used replacement algorithm. The former often has an overwhelmingly superior hit rate, which means fewer disk accesses.
To get your system ready to emerge gnome, first set your system flavor to desktop, and enable the gnome profile mix-in. To accomplish this, do the following:
{{console|recipe=setup,setup-light|desc=Set profile|body=
# ##i##eselect profile set-flavor funtoo/1.0/linux-gnu/flavor/desktop
# ##i##eselect profile add funtoo/1.0/linux-gnu/mix-ins/gnome
}}


* ZFS has the ZFS Intent Log and SLOG devices, which accelerates small synchronous write performance.
By enabling the gnome mix-in, various USE and other settings will be optimized to provide you with a pain-free GNOME installation experience.


* ZFS handles internal fragmentation gracefully, such that you can fill it until 100%. Internal fragmentation in btrfs can make btrfs think it is full at 10%. Btrfs has no automatic rebalancing code, so it requires a manual rebalance to correct it.
=== Emerging ===


* ZFS has raidz, which is like RAID 5/6 (or a hypothetical RAID 7 that supports 3 parity disks), except it does not suffer from the RAID write hole issue thanks to its use of CoW and a variable stripe size. btrfs gained integrated RAID 5/6 functionality in Linux 3.9. However, its implementation uses a stripe cache that can only partially mitigate the effect of the RAID write hole.
You are provided with two packages that will pull in this desktop environment:


* ZFS send/receive implementation supports incremental update when doing backups. btrfs' send/receive implementation requires sending the entire snapshot.
* ''gnome''


* ZFS supports data deduplication, which is a memory hog and only works well for specialized workloads. btrfs has no equivalent.
{{fancynote|This is the "whole shabang" - pulls in a range of applications made for the gnome desktop environment including a few games, an archive manager, a system monitor, a web browser, a terminal, etc.}}


* ZFS datasets have a hierarchical namespace while btrfs subvolumes have a flat namespace.
* ''gnome-light''


* ZFS has the ability to create virtual block devices called zvols in its namespace. btrfs has no equivalent and must rely on the loop device for this functionality, which is cumbersome.
{{fancynote|As the name implies, this pulls in the base minimal you need to get a functioning GNOME Desktop Environment.}}


The only area where btrfs is ahead of ZFS is in the area of small file
==== GNOME 3.14 from a clean install ====
efficiency. btrfs supports a feature called block suballocation, which
enables it to store small files far more efficiently than ZFS. It is
possible to use another filesystem (e.g. reiserfs) on top of a ZFS zvol
to obtain similar benefits (with arguably better data integrity) when
dealing with many small files (e.g. the portage tree).


For a quick tour of ZFS and have a big picture of its common operations you can consult the page [[ZFS Fun]].
===== gnome =====


=== Disclaimers ===
To emerge ''gnome'' run the following command


{{fancywarning|This guide is a work in progress. Expect some quirks.}}
{{console|desc=Emerging GNOME|body=
{{fancyimportant|'''Since ZFS was really designed for 64 bit systems, we are only recommending and supporting 64 bit platforms and installations. We will not be supporting 32 bit platforms'''!}}
# ##i## emerge gnome
== Downloading the ISO (With ZFS) ==
}}
In order for us to install Funtoo on ZFS, you will need an environment that already provides the ZFS tools. Therefore we will download a customized version of System Rescue CD with ZFS included.


<pre>
===== gnome-light =====
Name: sysresccd-4.2.0_zfs_0.6.2.iso  (545 MB)
Release Date: 2014-02-25
md5sum 01f4e6929247d54db77ab7be4d156d85
</pre>


To emerge ''gnome-light'' run the following command


'''[http://ftp.osuosl.org/pub/funtoo/distfiles/sysresccd/ Download System Rescue CD with ZFS]'''<br />
{{console|recipe=setup-light|desc=Emerging a minimal GNOME environment (alternative)|body=
# ##i## emerge gnome-light
}}


== Creating a bootable USB from ISO (From a Linux Environment) ==
==== Upgrading from GNOME 3.12 ====
After you download the iso, you can do the following steps to create a bootable USB:


<console>
To update either ''gnome'' or ''gnome-light'' run the following command:
Make a temporary directory
# ##i##mkdir /tmp/loop


Mount the iso
{{console|body=
# ##i##mount -o ro,loop /root/sysresccd-4.2.0_zfs_0.6.2.iso /tmp/loop
# ##i## emerge -vauDN world
 
}}
Run the usb installer
=== Subsystems ===
# ##i##/tmp/loop/usb_inst.sh
</console>
 
That should be all you need to do to get your flash drive working.
 
== Booting the ISO ==
 
{{fancywarning|'''When booting into the ISO, Make sure that you select the "Alternate 64 bit kernel (altker64)". The ZFS modules have been built specifically for this kernel rather than the standard kernel. If you select a different kernel, you will get a fail to load module stack error message.'''}}


== Creating partitions ==
==== Bluetooth ====
There are two ways to partition your disk: You can use your entire drive and let ZFS automatically partition it for you, or you can do it manually.


We will be showing you how to partition it '''manually''' because if you partition it manually you get to create your own layout, you get to have your own separate /boot partition (Which is nice since not every bootloader supports booting from ZFS pools), and you get to boot into RAID10, RAID5 (RAIDZ) pools and any other layouts due to you having a separate /boot partition.
For bluetooth support, ensure that:


==== gdisk (GPT Style) ====
# Bluetooth support is enabled in your kernel (using modules is fine).
# Your bluetooth hardware is turned on.
# Add the <code>bluetooth</code> startup script to the default runlevel, and start it.


'''A Fresh Start''':
This can be done as follows:
 
First lets make sure that the disk is completely wiped from any previous disk labels and partitions.
We will also assume that <tt>/dev/sda</tt> is the target drive.<br />


<console>
<console>
# ##i##sgdisk -Z /dev/sda
# ##i##rc-update add bluetooth default
# ##i##rc
</console>
</console>


{{fancywarning|This is a destructive operation and the program will not ask you for confirmation! Make sure you really don't want anything on this disk.}}
Once this is done, you should now be able to navigate to ''Settings'' -> ''Bluetooth'' and turn bluetooth on. The icon next to devices should now animate and you should be able to discover and add devices such as keyboards.


Now that we have a clean drive, we will create the new layout.
{{Note|1=
Additional kernel drivers may need to be enabled for certain input devices. For example, for the bluetooth Apple Magic Trackpad, the following option must be enabled in your kernel:


First open up the application:
{{kernelop|title=Device Drivers,HID support,HID bus support,Special HID drivers|desc=
<M> Apple Magic Mouse/Trackpad multi-touch support
}}}}


<console>
==== Printing ====
# ##i##gdisk /dev/sda
</console>


'''Create Partition 1''' (boot):
To enable printing support, add <code>cupsd</code> to the default runlevel:
<console>
Command: ##i##n ↵
Partition Number: ##i##↵
First sector: ##i##↵
Last sector: ##i##+250M ↵
Hex Code: ##i##↵
</console>
 
'''Create Partition 2''' (BIOS Boot Partition):
<console>Command: ##i##n ↵
Partition Number: ##i##↵
First sector: ##i##↵
Last sector: ##i##+32M ↵
Hex Code: ##i##EF02 ↵
</console>
 
'''Create Partition 3''' (ZFS):
<console>Command: ##i##n ↵
Partition Number: ##i##↵
First sector: ##i##↵
Last sector: ##i##↵
Hex Code: ##i##bf00 ↵
 
Command: ##i##p ↵
 
Number  Start (sector)    End (sector)  Size      Code  Name
  1            2048          514047  250.0 MiB  8300  Linux filesystem
  2          514048          579583  32.0 MiB    EF02  BIOS boot partition
  3          579584      1953525134  931.2 GiB  BF00  Solaris root
 
Command: ##i##w ↵
</console>
 
 
=== Format your /boot partition ===


<console>
<console>
# ##i##mkfs.ext2 -m 1 /dev/sda1
# ##i##rc-update add cupsd default
# ##i##rc
</console>
</console>


=== Create the zpool ===
You should now be able to navigate to ''Settings'' -> ''Printers'' and add printers to your system, and print.
We will first create the pool. The pool will be named  <code>tank</code>. Feel free to name your pool as you want.  We will use <code>ashift=12</code> option  which is used for a hard drives with a 4096 sector size.
<console># ##i##  zpool create -f -o ashift=12 -o cachefile=/tmp/zpool.cache -O normalization=formD -m none -R /mnt/funtoo tank /dev/sda3 </console>


=== Create the zfs datasets ===
==== Scanning ====
We will now create some datasets. For this installation, we will create a small but future proof amount of datasets. We will have a dataset for the OS (/), and your swap. We will also show you how to create some optional datasets as examples ones: <code>/home</code>,  <code>/usr/src</code>, and <code>/usr/portage</code>. 


<console>
To enable scanning support, add your user account to the <code>lp</code> group. This will allow your user to access the USB scanner.
Create some empty containers for organization purposes, and make the dataset that will hold /
# ##i##zfs create -p tank/funtoo
# ##i##zfs create -o mountpoint=/ tank/funtoo/root


Optional, but recommended datasets: /home
Then, <code>emerge xsane</code>, and run it. It should be able to access your scanner.
# ##i##zfs create -o mountpoint=/home tank/funtoo/home


Optional datasets: /usr/src, /usr/portage/{distfiles,packages}
=== Finishing Touches ===
# ##i##zfs create -o mountpoint=/usr/src tank/funtoo/src
# ##i##zfs create -o mountpoint=/usr/portage -o compression=off tank/funtoo/portage
# ##i##zfs create -o mountpoint=/usr/portage/distfiles tank/funtoo/portage/distfiles
# ##i##zfs create -o mountpoint=/usr/portage/packages tank/funtoo/portage/packages
</console>


== Installing Funtoo ==
==== X ====


=== Pre-Chroot ===
===== Setting up xdm (GUI log-in) =====


<console>
Typically, you will want to use <code>gdm</code>, the GNOME display manager, to log in to GNOME. This will allow you to log in graphically, rather than using the text console.
Go into the directory that you will chroot into
# ##i##cd /mnt/funtoo


Make a boot folder and mount your boot drive
To enable gdm, edit <code>/etc/conf.d/xdm</code> and set <code>DISPLAYMANAGER</code> to <code>gdm</code> instead of <code>xdm</code>. Then, perform the following steps to add <code>xdm</code> to the default runlevel, and have it start automatically from now on when your system starts:
# ##i##mkdir boot
# ##i##mount /dev/sda1 boot
</console>


[[Funtoo_Linux_Installation|Now download and extract the Funtoo stage3 ...]]
{{Note|Funtoo's <code>/etc/init.d/xdm</code> initscript has been modified to start the requisite services <code>dbus</code>, <code>openrc-settingsd</code> and <code>consolekit</code> prior to starting <code>gdm</code>.}}


Once you've extracted the stage3, do a few more preparations and chroot into your new funtoo environment:
{{console|recipe=setup|desc=Enable the GNOME display manager|body=
 
# ##i## rc-update add xdm default
<console>
Bind the kernel related directories
# ##i##mount -t proc none proc
# ##i##mount --rbind /dev dev
# ##i##mount --rbind /sys sys
 
Copy network settings
# ##i##cp -f /etc/resolv.conf etc
 
Make the zfs folder in 'etc' and copy your zpool.cache
# ##i##mkdir etc/zfs
# ##i##cp /etc/zfs/zpool.cache etc/zfs
 
Chroot into Funtoo
# ##i##env -i HOME=/root TERM=$TERM chroot . bash -l
</console>
 
{{:Install/PortageTree}}
 
=== Add filesystems to /etc/fstab ===
 
Before we continue to compile and or install our kernel in the next step, we will edit the <code>/etc/fstab</code> file because if we decide to install our kernel through portage, portage will need to know where our <code>/boot</code> is, so that it can place the files in there.
 
Edit <code>/etc/fstab</code>:
 
{{file|name=/etc/fstab|desc= |body=
# <fs>                  <mountpoint>    <type>          <opts>          <dump/pass>
 
/dev/sda1              /boot          ext2            defaults        0 2
}}
}}


== Kernel Configuration ==
Then, if you want to start it now do:
...wip


== Installing the ZFS userspace tools and kernel modules ==
{{console|body=
Emerge {{Package|sys-fs/zfs}}. This package will bring in {{Package|sys-kernel/spl}}, and {{Package|sys-fs/zfs-kmod}} as its dependencies:
# ##i##rc
 
<console>
# ##i##emerge zfs
</console>
 
Check to make sure that the zfs tools are working. The <code>zpool.cache</code> file that you copied before should be displayed.
 
<console>
# ##i##zpool status
# ##i##zfs list
</console>
 
If everything worked, continue.
 
== Create the initramfs ==
=== genkernel ===
Install genkernel and run it:
<console>
# ##i##emerge genkernel
 
You only need to add --luks if you used encryption
# ##i##genkernel --zfs --luks initramfs
</console>
 
== Installing & Configuring the Bootloader ==
 
=== GRUB 2  ===
<console>
# ##i##emerge grub
</console>
 
Now install grub to the drive itself (not a partition):
<console>
# ##i##grub-install /dev/sda
</console>
 
=== boot-update ===
boot-update comes as a dependency of grub2, so if you already installed grub, it's already on your system!
 
==== Genkernel ====
If your using genkernel you must add 'real_root=ZFS=<root>' and 'dozfs' to your params.
Example entry for <code>/etc/boot.conf</code>:
 
{{file|name=/etc/boot.conf|desc= |body=
"Funtoo ZFS" {
        kernel kernel[-v]
        initrd initramfs-genkernel-x86_64[-v]
        params real_root=ZFS=tank/funtoo/root
        params += dozfs=force
}
}}
}}


After editing /etc/boot.conf, you just need to run boot-update to update grub.cfg
But you should reboot to avoid having an open login terminal.


<console>
===== Setting up xinitrc (text log-in) =====
###i## boot-update
</console>


== Final configuration ==
Adding the following to your <code>~/.xinitrc</code> file is sufficient:
=== Add the zfs tools to openrc ===
<console># ##i##rc-update add zfs boot</console>


=== Clean up and reboot ===
<pre>
We are almost done, we are just going to clean up, '''set our root password''', and unmount whatever we mounted and get out.
# Fix Missing Applications in Gnome
export XDG_MENU_PREFIX=gnome-


<console>
# Properly Launch the Desired X Session
Delete the stage3 tarball that you downloaded earlier so it doesn't take up space.
exec ck-launch-session gnome-session
# ##i##cd /
</pre>
# ##i##rm stage3-latest.tar.xz


Set your root password
Additionaly, if you need support for different input sources, there is no longer a need to configure IBus or SCIM in your <code>.xinitrc</code> file as GNOME uses IBus natively. Simply configure it in the Control Center under Region & Language.
# ##i##passwd
>> Enter your password, you won't see what you are writing (for security reasons), but it is there!


Get out of the chroot environment
=== Automatically Starting Applications at Login ===
# ##i##exit


Unmount all the kernel filesystem stuff and boot (if you have a separate /boot)
When using an old-fashioned <code>.xinitrc</code>, starting up applications when X starts is relatively easy. When using GDM, this can still be accomplished, by using the <code>~/.xprofile</code> file. Here's my sample <code>.xprofile</code> to start <code>xflux</code> to dim the screen at night:
# ##i##umount -l proc dev sys boot


Turn off the swap
<pre>
# ##i##swapoff /dev/zvol/tank/swap
xflux -z 87107
</pre>


Export the zpool
{{Note|Remember to add a <code>&</code> at the end of any command that doesn't return to the shell prompt after running.}}
# ##i##cd /
# ##i##zpool export tank


Reboot
=== games ===
# ##i##reboot
Gnome has several games that can be added on to your install.  By default most games are not included in gnome's emerge.
</console>


{{fancyimportant|'''Don't forget to set your root password as stated above before exiting chroot and rebooting. If you don't set the root password, you won't be able to log into your new system.'''}}
Users wishing to play games need to be added to the games group:
{{console|body=###i## gpasswd -a $USER games}}


and that should be enough to get your system to boot on ZFS.
game list:
;gnome-sudoku
;gnome-mastermind
;gnome-nibbles
;gnome-robots
;gnome-chess
;gnome-hearts
;gnome-mahjongg
;gnome-mines
;gnome-klotski
;gnome-tetravex


== After reboot ==
game system emulators:


=== Forgot to reset password? ===
;gnomeboyadvance
==== System Rescue CD ====
;gnome-mud
If you aren't using bliss-initramfs, then you can reboot back into your sysresccd and reset through there by mounting your drive, chrooting, and then typing passwd.


Example:
=== Significant Known Issues (Workarounds Available) ===
<console>
# ##i##zpool import -f -R /mnt/funtoo tank
# ##i##chroot /mnt/funtoo bash -l
# ##i##passwd
# ##i##exit
# ##i##zpool export -f tank
# ##i##reboot
</console>
 
=== Create initial ZFS Snapshot ===
Continue to set up anything you need in terms of /etc configurations. Once you have everything the way you like it, take a snapshot of your system. You will be using this snapshot to revert back to this state if anything ever happens to your system down the road. The snapshots are cheap, and almost instant.
 
To take the snapshot of your system, type the following:
<console># ##i##zfs snapshot -r tank@install</console>
 
To see if your snapshot was taken, type:
<console># ##i##zfs list -t snapshot</console>
 
If your machine ever fails and you need to get back to this state, just type (This will only revert your / dataset while keeping the rest of your data intact):
<console># ##i##zfs rollback tank/funtoo/root@install</console>
 
{{fancyimportant|'''For a detailed overview, presentation of ZFS' capabilities, as well as usage examples, please refer to the [[ZFS_Fun|ZFS Fun]] page.'''}}
 
== Troubleshooting ==
 
=== Starting from scratch ===
If your installation has gotten screwed up for whatever reason and you need a fresh restart, you can do the following from sysresccd to start fresh:
 
<console>
Destroy the pool and any snapshots and datasets it has
# ##i##zpool destroy -R -f tank
 
This deletes the files from /dev/sda1 so that even after we zap, recreating the drive in the exact sector
position and size will not give us access to the old files in this partition.
# ##i##mkfs.ext2 /dev/sda1
# ##i##sgdisk -Z /dev/sda
</console>


Now start the guide again :).
[https://bugs.funtoo.org/browse/FL-1678 FL-1678]: Bluetooth interface gives wrong pairing key


[[Category:HOWTO]]
[https://bugs.funtoo.org/browse/FL-1687 FL-1687]: Wallpaper corruption when resuming from suspend
[[Category:Filesystems]]
[[Category:Featured]]
[[Category:Install]]


__NOTITLE__
[[Category:Desktop]]
[[Category:First Steps]]
[[Category:Official Documentation]]

Revision as of 17:45, February 22, 2015

What is GNOME?

"GNOME 3 is an easy and elegant way to use your computer. It is designed to put you in control and bring freedom to everybody. GNOME 3 is developed by the GNOME community, a diverse, international group of contributors that is supported by an independent, non-profit foundation." — GNOME

Prerequisites

From a Clean Install

Ensure that the X Window System is installed.

Preparing to emerge

To get your system ready to emerge gnome, first set your system flavor to desktop, and enable the gnome profile mix-in. To accomplish this, do the following:

root # eselect profile set-flavor funtoo/1.0/linux-gnu/flavor/desktop
root # eselect profile add funtoo/1.0/linux-gnu/mix-ins/gnome

Console: Set profile

By enabling the gnome mix-in, various USE and other settings will be optimized to provide you with a pain-free GNOME installation experience.

Emerging

You are provided with two packages that will pull in this desktop environment:

  • gnome
   Note

This is the "whole shabang" - pulls in a range of applications made for the gnome desktop environment including a few games, an archive manager, a system monitor, a web browser, a terminal, etc.

  • gnome-light
   Note

As the name implies, this pulls in the base minimal you need to get a functioning GNOME Desktop Environment.

GNOME 3.14 from a clean install

gnome

To emerge gnome run the following command

root #  emerge gnome

Console: Emerging GNOME

gnome-light

To emerge gnome-light run the following command

root #  emerge gnome-light

Console: Emerging a minimal GNOME environment (alternative)

Upgrading from GNOME 3.12

To update either gnome or gnome-light run the following command:

root #  emerge -vauDN world

Subsystems

Bluetooth

For bluetooth support, ensure that:

  1. Bluetooth support is enabled in your kernel (using modules is fine).
  2. Your bluetooth hardware is turned on.
  3. Add the bluetooth startup script to the default runlevel, and start it.

This can be done as follows:

root # rc-update add bluetooth default
root # rc

Once this is done, you should now be able to navigate to Settings -> Bluetooth and turn bluetooth on. The icon next to devices should now animate and you should be able to discover and add devices such as keyboards.

   Note

Additional kernel drivers may need to be enabled for certain input devices. For example, for the bluetooth Apple Magic Trackpad, the following option must be enabled in your kernel:

Under Device Drivers-->HID support-->HID bus support-->Special HID drivers:

<M> Apple Magic Mouse/Trackpad multi-touch support

Printing

To enable printing support, add cupsd to the default runlevel:

root # rc-update add cupsd default
root # rc

You should now be able to navigate to Settings -> Printers and add printers to your system, and print.

Scanning

To enable scanning support, add your user account to the lp group. This will allow your user to access the USB scanner.

Then, emerge xsane, and run it. It should be able to access your scanner.

Finishing Touches

X

Setting up xdm (GUI log-in)

Typically, you will want to use gdm, the GNOME display manager, to log in to GNOME. This will allow you to log in graphically, rather than using the text console.

To enable gdm, edit /etc/conf.d/xdm and set DISPLAYMANAGER to gdm instead of xdm. Then, perform the following steps to add xdm to the default runlevel, and have it start automatically from now on when your system starts:

   Note

Funtoo's /etc/init.d/xdm initscript has been modified to start the requisite services dbus, openrc-settingsd and consolekit prior to starting gdm.

root #  rc-update add xdm default

Console: Enable the GNOME display manager

Then, if you want to start it now do:

root # rc

But you should reboot to avoid having an open login terminal.

Setting up xinitrc (text log-in)

Adding the following to your ~/.xinitrc file is sufficient:

# Fix Missing Applications in Gnome
export XDG_MENU_PREFIX=gnome-

# Properly Launch the Desired X Session
exec ck-launch-session gnome-session

Additionaly, if you need support for different input sources, there is no longer a need to configure IBus or SCIM in your .xinitrc file as GNOME uses IBus natively. Simply configure it in the Control Center under Region & Language.

Automatically Starting Applications at Login

When using an old-fashioned .xinitrc, starting up applications when X starts is relatively easy. When using GDM, this can still be accomplished, by using the ~/.xprofile file. Here's my sample .xprofile to start xflux to dim the screen at night:

xflux -z 87107
   Note

Remember to add a & at the end of any command that doesn't return to the shell prompt after running.

games

Gnome has several games that can be added on to your install. By default most games are not included in gnome's emerge.

Users wishing to play games need to be added to the games group:

root # gpasswd -a $USER games

game list:

gnome-sudoku
gnome-mastermind
gnome-nibbles
gnome-robots
gnome-chess
gnome-hearts
gnome-mahjongg
gnome-mines
gnome-klotski
gnome-tetravex

game system emulators:

gnomeboyadvance
gnome-mud

Significant Known Issues (Workarounds Available)

FL-1678: Bluetooth interface gives wrong pairing key

FL-1687: Wallpaper corruption when resuming from suspend