Both snapper and read-only-root-fs have been released for a while, so I finally resumed work on this ticket. However I realized that just using a writable place for grubenv alone doesn't help: The Btrfs header section is *only* written when using the default file name (i.e. '-' or '/boot/grub2/grubenv'). When using another file name the variables will end up in that file instead, making an interaction between GRUB and the system impossible (the file's values would always win). This seems easy to resolve though. My idea would be to link '/boot/grub2/grubenv' to '/boot/writable/grubenv' on read-only root file systems instead. The package 'read-only-root-fs' would have to create an empty grubenv file using `grub2-editenv create`, move it to '/boot/writable' and create the link in its %post script. If this works it would also mostly solve bug 1156441, as the file *is* writable and the 'env_block' can be written on first use then.