I attempted this because I wanted to run btrfs’s timeshift as a backup / snapshot solution, and use other tools of btrfs. If you want btrfs timeshift with yunohost on a RPi, you’re probably better off running ubuntu’s image for Raspberry Pi and then installing yunohost on top. [Edit: maybe don’t do this, see wbk’s comment below] (Or check the second to last paragraph for what might be the right way to approach this if you are considering btrfs)
I think the development of a method to run btrfs on YNH could help make installs more resilient and easier for when people like me mess up their installs. An image or even just a script would be really cool.
Anyways, after flashing the raspberry pi image (buster 4.1.7.2) for YNH I followed this guide: Raspbian and btrfs
The one caveat here:
After a kernel update, you will need to run mkinitramfs again. Probably it’s the best to only do manual kernel updates (even as security updates) as otherwise your Raspi will not boot again.
The real solution to that is here:
https://raspberrypi.stackexchange.com/questions/92557/how-can-i-use-an-init-ramdisk-initramfs-on-boot-up-raspberry-pi/92558#92558
You could somewhat protect yourself against this more easily by running the following as a root cronjob:
apt -y update
apt -y upgrade
mkinitramfs -o /boot/initramfs-btrfs.gz
But if you manually or automatically updated and your kernel updated and you didn’t run mkinitramfs or the cronjob for mkinitramfs didn’t run before you rebooted, your Pi might not boot.
Alternate method of auto-updating that could be adapted to include mkinitramfs: github (sorry, I’m limited to 5 links) .com/YunoHost-Apps/unattended_upgrades_ynh/blob/master/README.md#configuration
Anyways, after I had btrfs I tried running timeshift (in btrfs mode):
root@yunohost:~# timeshift --create
Using system disk as snapshot device for creating snapshots in BTRFS mode
/dev/mmcblk0p2 is mounted at: /mnt/timeshift/backup, options: rw,relatime,ssd,space_cache,subvolid=5,subvol=/
E: The system partition has an unsupported subvolume layout. Only ubuntu-type layouts with @ and @home subvolumes are currently supported.
This linked to from the issue here may be the solution to that, but update-grub doesn’t exist so that final command didn’t work and I never ended up able to boot from the “/@” btrfs subvolume snapshot.
Lastly, MySQL wouldn’t run, and gave the following errors:
Journalctl
journalctl
-- Logs begin at Sun 2021-12-19 06:56:00 GMT, end at Sun 2021-12-19 08:50:01 GMT. --
Dec 19 08:24:29 mysqld[6929]: 2021-12-19 8:24:29 0 [Note] /usr/sbin/mysqld (mysqld 10.3.31-MariaDB-0+deb10u1) starting as process 6929 ...
Dec 19 08:24:29 mysqld[6929]: 2021-12-19 8:24:29 0 [Note] InnoDB: Using Linux native AIO
Dec 19 08:24:29 mysqld[6929]: 2021-12-19 8:24:29 0 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
Dec 19 08:24:29 mysqld[6929]: 2021-12-19 8:24:29 0 [Note] InnoDB: Uses event mutexes
Dec 19 08:24:29 mysqld[6929]: 2021-12-19 8:24:29 0 [Note] InnoDB: Compressed tables use zlib 1.2.11
Dec 19 08:24:29 mysqld[6929]: 2021-12-19 8:24:29 0 [Note] InnoDB: Number of pools: 1
Dec 19 08:24:29 mysqld[6929]: 2021-12-19 8:24:29 0 [Note] InnoDB: Using generic crc32 instructions
Dec 19 08:24:29 mysqld[6929]: 2021-12-19 8:24:29 0 [Note] InnoDB: Initializing buffer pool, total size = 128M, instances = 1, chunk size = 128M
Dec 19 08:24:29 mysqld[6929]: 2021-12-19 8:24:29 0 [Note] InnoDB: Completed initialization of buffer pool
Dec 19 08:24:29 mysqld[6929]: 2021-12-19 8:24:29 0 [Note] InnoDB: If the mysqld execution user is authorized, page cleaner thread priority can be changed. See the man page of setpriority().
Dec 19 08:24:29 mysqld[6929]: 2021-12-19 8:24:29 0 [ERROR] InnoDB: Space ID in fsp header is 37903, but in the page header it is 0.
Dec 19 08:24:29 mysqld[6929]: 2021-12-19 8:24:29 0 [Note] InnoDB: A bad Space ID was found in datafile: ./ibdata1, Space ID:4294967295, Flags: 1024
Dec 19 08:24:29 mysqld[6929]: 2021-12-19 8:24:29 0 [ERROR] InnoDB: Corrupted page [page id: space=4294967295, page number=0] of datafile './ibdata1' could not be found in the doublewrite buffer.
Dec 19 08:24:29 mysqld[6929]: 2021-12-19 8:24:29 0 [ERROR] InnoDB: Plugin initialization aborted with error Data structure corruption
Dec 19 08:24:29 mysqld[6929]: 2021-12-19 8:24:29 0 [Note] InnoDB: Starting shutdown...
Dec 19 08:24:30 mysqld[6929]: 2021-12-19 8:24:30 0 [ERROR] Plugin 'InnoDB' init function returned error.
Dec 19 08:24:30 mysqld[6929]: 2021-12-19 8:24:30 0 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
Dec 19 08:24:30 mysqld[6929]: 2021-12-19 8:24:30 0 [Note] Plugin 'FEEDBACK' is disabled.
Dec 19 08:24:30 mysqld[6929]: 2021-12-19 8:24:30 0 [ERROR] Could not open mysql.plugin table. Some plugins may be not loaded
Dec 19 08:24:30 mysqld[6929]: 2021-12-19 8:24:30 0 [ERROR] Unknown/unsupported storage engine: innodb
Dec 19 08:24:30 mysqld[6929]: 2021-12-19 8:24:30 0 [ERROR] Aborting
Dec 19 08:24:31 systemd[1]: mariadb.service: Main process exited, code=exited, status=1/FAILURE
Dec 19 08:24:31 systemd[1]: mariadb.service: Failed with result 'exit-code'.
Dec 19 08:24:31 systemd[1]: Failed to start MariaDB 10.3.31 database server.
Dec 19 08:24:31 systemd[1]: Starting MariaDB 10.3.31 database server...
Dec 19 08:24:31 mysqld[6996]: 2021-12-19 8:24:31 0 [Warning] option 'table_open_cache': unsigned value 4 adjusted to 10
Dec 19 08:24:31 mysqld[6996]: 2021-12-19 8:24:31 0 [Note] /usr/sbin/mysqld (mysqld 10.3.31-MariaDB-0+deb10u1) starting as process 6996 ...
Dec 19 08:24:31 mysqld[6996]: 2021-12-19 8:24:31 0 [Note] InnoDB: Using Linux native AIO
Dec 19 08:24:31 mysqld[6996]: 2021-12-19 8:24:31 0 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
Dec 19 08:24:31 mysqld[6996]: 2021-12-19 8:24:31 0 [Note] InnoDB: Uses event mutexes
Dec 19 08:24:31 mysqld[6996]: 2021-12-19 8:24:31 0 [Note] InnoDB: Compressed tables use zlib 1.2.11
Dec 19 08:24:31 mysqld[6996]: 2021-12-19 8:24:31 0 [Note] InnoDB: Number of pools: 1
Dec 19 08:24:31 mysqld[6996]: 2021-12-19 8:24:31 0 [Note] InnoDB: Using generic crc32 instructions
Dec 19 08:24:31 mysqld[6996]: 2021-12-19 8:24:31 0 [Note] InnoDB: Initializing buffer pool, total size = 128M, instances = 1, chunk size = 128M
Dec 19 08:24:31 mysqld[6996]: 2021-12-19 8:24:31 0 [Note] InnoDB: Completed initialization of buffer pool
Dec 19 08:24:31 mysqld[6996]: 2021-12-19 8:24:31 0 [Note] InnoDB: If the mysqld execution user is authorized, page cleaner thread priority can be changed. See the man page of setpriority().
Dec 19 08:24:31 mysqld[6996]: 2021-12-19 8:24:31 0 [ERROR] InnoDB: Space ID in fsp header is 37903, but in the page header it is 0.
Dec 19 08:24:31 mysqld[6996]: 2021-12-19 8:24:31 0 [Note] InnoDB: A bad Space ID was found in datafile: ./ibdata1, Space ID:4294967295, Flags: 1024
Dec 19 08:24:31 mysqld[6996]: 2021-12-19 8:24:31 0 [ERROR] InnoDB: Corrupted page [page id: space=4294967295, page number=0] of datafile './ibdata1' could not be found in the doublewrite buffer.
Dec 19 08:24:31 mysqld[6996]: 2021-12-19 8:24:31 0 [ERROR] InnoDB: Plugin initialization aborted with error Data structure corruption
Dec 19 08:24:32 mysqld[6996]: 2021-12-19 8:24:32 0 [Note] InnoDB: Starting shutdown...
Dec 19 08:24:33 mysqld[6996]: 2021-12-19 8:24:33 0 [ERROR] Plugin 'InnoDB' init function returned error.
Dec 19 08:24:33 mysqld[6996]: 2021-12-19 8:24:33 0 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
Dec 19 08:24:33 mysqld[6996]: 2021-12-19 8:24:33 0 [Note] Plugin 'FEEDBACK' is disabled.
Dec 19 08:24:33 mysqld[6996]: 2021-12-19 8:24:33 0 [ERROR] Could not open mysql.plugin table. Some plugins may be not loaded
Dec 19 08:24:33 mysqld[6996]: 2021-12-19 8:24:33 0 [ERROR] Unknown/unsupported storage engine: innodb
Dec 19 08:24:33 mysqld[6996]: 2021-12-19 8:24:33 0 [ERROR] Aborting
Dec 19 08:24:33 systemd[1]: mariadb.service: Main process exited, code=exited, status=1/FAILURE
Dec 19 08:24:33 systemd[1]: mariadb.service: Failed with result 'exit-code'.
Dec 19 08:24:33 systemd[1]: Failed to start MariaDB 10.3.31 database server.
/var/log/mysql/error.log
2021-12-19 6:50:58 0 [ERROR] InnoDB: Plugin initialization aborted with error Data structure corruption
2021-12-19 6:50:58 0 [Note] InnoDB: Starting shutdown...
2021-12-19 6:50:59 0 [ERROR] Plugin 'InnoDB' init function returned error.
2021-12-19 6:50:59 0 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
2021-12-19 6:50:59 0 [Note] Plugin 'FEEDBACK' is disabled.
2021-12-19 6:50:59 0 [ERROR] Could not open mysql.plugin table. Some plugins may be not loaded
2021-12-19 6:50:59 0 [ERROR] Unknown/unsupported storage engine: InnoDB
2021-12-19 6:50:59 0 [ERROR] Aborting
2021-12-19 6:55:14 0 [Note] InnoDB: Using Linux native AIO
2021-12-19 6:55:14 0 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
2021-12-19 6:55:14 0 [Note] InnoDB: Uses event mutexes
2021-12-19 6:55:14 0 [Note] InnoDB: Compressed tables use zlib 1.2.11
2021-12-19 6:55:14 0 [Note] InnoDB: Number of pools: 1
2021-12-19 6:55:14 0 [Note] InnoDB: Using generic crc32 instructions
2021-12-19 6:55:15 0 [Note] InnoDB: Initializing buffer pool, total size = 128M, instances = 1, chunk size = 128M
2021-12-19 6:55:15 0 [Note] InnoDB: Completed initialization of buffer pool
2021-12-19 6:55:15 0 [Note] InnoDB: If the mysqld execution user is authorized, page cleaner thread priority can be changed. See the man page of setpriority().
2021-12-19 6:55:15 0 [Note] InnoDB: Header page consists of zero bytes in datafile: ./ibdata1, Space ID:0, Flags: 0
2021-12-19 6:55:15 0 [ERROR] InnoDB: Corrupted page [page id: space=0, page number=0] of datafile './ibdata1' could not be found in the doublewrite buffer.
2021-12-19 6:55:15 0 [ERROR] InnoDB: Plugin initialization aborted with error Data structure corruption
2021-12-19 6:55:15 0 [Note] InnoDB: Starting shutdown...
2021-12-19 6:55:16 0 [ERROR] Plugin 'InnoDB' init function returned error.
2021-12-19 6:55:16 0 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
2021-12-19 6:55:16 0 [Note] Plugin 'FEEDBACK' is disabled.
2021-12-19 6:55:16 0 [ERROR] Could not open mysql.plugin table. Some plugins may be not loaded
2021-12-19 6:55:16 0 [ERROR] Unknown/unsupported storage engine: InnoDB
2021-12-19 6:55:16 0 [ERROR] Aborting
2021-12-19 6:56:16 0 [Note] InnoDB: Using Linux native AIO
2021-12-19 6:56:16 0 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
2021-12-19 6:56:16 0 [Note] InnoDB: Uses event mutexes
2021-12-19 6:56:16 0 [Note] InnoDB: Compressed tables use zlib 1.2.11
2021-12-19 6:56:16 0 [Note] InnoDB: Number of pools: 1
2021-12-19 6:56:16 0 [Note] InnoDB: Using generic crc32 instructions
2021-12-19 6:56:16 0 [Note] InnoDB: Initializing buffer pool, total size = 128M, instances = 1, chunk size = 128M
2021-12-19 6:56:16 0 [Note] InnoDB: Completed initialization of buffer pool
2021-12-19 6:56:16 0 [Note] InnoDB: If the mysqld execution user is authorized, page cleaner thread priority can be changed. See the man page of setpriority().
2021-12-19 6:56:16 0 [ERROR] InnoDB: Space ID in fsp header is 37903, but in the page header it is 0.
2021-12-19 6:56:16 0 [Note] InnoDB: A bad Space ID was found in datafile: ./ibdata1, Space ID:4294967295, Flags: 1024
2021-12-19 6:56:16 0 [ERROR] InnoDB: Corrupted page [page id: space=4294967295, page number=0] of datafile './ibdata1' could not be found in the doublewrite buffer.
2021-12-19 6:56:16 0 [ERROR] InnoDB: Plugin initialization aborted with error Data structure corruption
2021-12-19 6:56:17 0 [Note] InnoDB: Starting shutdown...
2021-12-19 6:56:18 0 [ERROR] Plugin 'InnoDB' init function returned error.
2021-12-19 6:56:18 0 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
2021-12-19 6:56:18 0 [Note] Plugin 'FEEDBACK' is disabled.
2021-12-19 6:56:18 0 [ERROR] Could not open mysql.plugin table. Some plugins may be not loaded
2021-12-19 6:56:18 0 [ERROR] Unknown/unsupported storage engine: InnoDB
2021-12-19 6:56:18 0 [ERROR] Aborting
I don’t know what to do about that, I decided that was too many issues for me and I was concerned my mkinitramfs might not update so I got spooked away from the install I did. 12b says that this might be the right way to run btrfs and timeshift, because there would exist a redundant ext4 filesystem in case of issues. I’m not sure if MySQL would still break.
Thanks to user 12b and tituspijean in the matrix support room.