Testers wanted: Squashfs
make sure you read and understand what we expect from testers
So what now?
Goal: make recalbox like a firmware, make updates much faster, make recalbox more robust
Archs: Pi3 only for now. x86_64 should come shortly
A squashfs file is like a read only image file that can be mounted like any device. Part of it is in memory.
Steps to update and test - Pi3 only for now
- Update to the mentionned branch (i mean do update, not juste change the update type)
- Once the update is done:
mount -o remount, rw /boot echo "boot=squashfs" >> /boot/recalbox-boot.conf /recalbox/scripts/upgrade/recalbox-upgrade.sh upgrade && reboot
From here, Recalbox will download a squashfs, copy it on first reboot with the usual upgrade progress bar, and transparently finish the update on the following reboot.
To make sure everything happened as expected :
dmesg | grep irfsshould be quite self explanatory
mount | grep overlayshould return a single line
Expected test cases
There are many cases that need to be tested, here are a few independant scenarios :
- your Recalbox still boots with NOOBS
- you have a USB key/hard drive
- you upgraded from a 4.0.x version to 4.1 (or later)
- you installed Recalbox with the .img
Please report your environment as I need to make sure all cases are covered, and mostly that the update doesn't break anything.
@substring Ok so here is my result.
- Starting from 17.11.02 stable. Download of update from branch: OK
- Auto upgrade after reboot: OK
- recalbox-boot.conf trick and command-line download of update: OK
- Auto upgrade after reboot with "upgrading the squashfs" message: OK
- Final reboot: OK, Recalbox works as expected.
# dmesg | grep irfs [ 1.605723] (RECALBOX-irfs) Starting new boot log [ 1.619000] (RECALBOX-irfs) Mounted: /dev/mmcblk0p2 as root source, booting to default [ 1.621327] (RECALBOX-irfs) UPGRADE: found /new_root/defaultroot/recalbox.squashfs.upgrade [ 1.622274] (RECALBOX-irfs) Checking kernels ... [ 1.623184] (RECALBOX-irfs) Couldn't find a squashfs file, or squashfs boot is not set, defaulting to SD [ 1.624108] (RECALBOX-irfs) Kernels OK (zImage and zImage.sd) ! Continuing ... [ 1.624185] (RECALBOX-irfs) Trying to use root from: [ 1.625080] (RECALBOX-irfs) Couldn't mount a squashfs [ 1.625144] (RECALBOX-irfs) Remounting to the default root device
So there is an issue somewhere.
For information, here is my
# more /boot/recalbox-boot.conf sharedevice=NETWORK sharenetwork_smb1=ROMS@192.168.1.94:Jeux/Recalbox/roms:username=recalbox,password=@@@@@@ sharenetwork_smb2=SAVES@192.168.1.94:Jeux/Recalbox/saves:username=recalbox,password=@@@@@@ boot=squashfs
@oyyodams can you get
@substring I have no boot.log file.
# df Filesystem 1K-blocks Used Available Use% Mounted on none 242132 0 242132 0% /dev /dev/mmcblk0p2 1874516 1240820 535137 70% / tmpfs 246692 0 246692 0% /dev/shm tmpfs 246692 20 246672 0% /tmp tmpfs 246692 2992 243700 1% /var tmpfs 246692 92 246600 0% /run /dev/mmcblk0p1 64511 11817 52694 18% /boot /dev/mmcblk0p3 13257232 913612 11647148 7% /recalbox/share
Out of curiosity: Does this squashfs feature will work somehow like a switch firmware in the future, having 2 "base images" and booting the newest one or the backup if the user wants to change it? Example:
SWDEP_02# show bootvar Image Filename Version Date Status ----- --------- --------- --------------------- ----------- 1 image-1 126.96.36.199 09-Mar-2017 13:23:09 Active* 2 image-2 188.8.131.52 01-Sep-2010 15:26:19 Not active "*" designates that the image was selected for the next boot