Open openwrt-bot opened 3 years ago
bjonglez:
Can you specify what you mean by "the superblock of which is beyond the end of the install image itself"? How do you see that, and can you reproduce with the ext4 images from https://downloads.openwrt.org/releases/21.02.0-rc1/targets/bcm27xx/bcm2709/ ?
Does the squashfs image work?
slingamn:
Thanks! I was able to reproduce this with the squashfs factory image:
using the following steps:
root@OpenWrt:~# df -Th
Filesystem Type Size Used Available Use% Mounted on
/dev/root squashfs 5.3M 5.3M 0 100% /rom
tmpfs tmpfs 431.4M 212.0K 431.2M 0% /tmp
/dev/loop0 ext4 91.7M 1.5M 83.2M 2% /overlay
overlayfs:/overlay overlay 91.7M 1.5M 83.2M 2% /
/dev/mmcblk0p1 vfat 63.9M 26.1M 37.7M 41% /boot
tmpfs tmpfs 512.0K 0 512.0K 0% /dev
root@OpenWrt:~# touch /etc/openwrt_issue_fs_3798
root@OpenWrt:~# touch /usr/bin/openwrt_issue_fs_3798
root@OpenWrt:~# find /overlay/upper/ | grep 3798
/overlay/upper/usr/bin/openwrt_issue_fs_3798
/overlay/upper/etc/openwrt_issue_fs_3798
root@OpenWrt:~# find /overlay/upper/ | grep 3798 | xargs ls -lai
49 -rw-r--r-- 1 root root 0 Apr 18 10:14 /overlay/upper/etc/openwrt_issue_fs_3798
52 -rw-r--r-- 1 root root 0 Apr 18 10:14 /overlay/upper/usr/bin/openwrt_issue_fs_3798
poweroff
the device
root@OpenWrt:~# find /overlay/upper/ | grep 3798 | xargs ls -lai
49 -rw-r--r-- 1 root root 0 Apr 18 10:14 /overlay/upper/etc/openwrt_issue_fs_3798
52 -rw-r--r-- 1 root root 0 Apr 18 10:14 /overlay/upper/usr/bin/openwrt_issue_fs_3798
What I said about the superblock is at best informed speculation :-) What I'm seeing is that the squashfs image (decompressed) is only 80881906 bytes long, but the total length of the partition table is 360447 sectors, i.e., 184548864 bytes. So there's data referenced in the partitions that is not overwritten by a factory flash. My belief is that the ext4 superblock of /overlay/upper is in this area.
Hi @aparcar,
Did you find a solution for this in the meantime? It seems to me this bug is still unfixed.
I just stumbled over your post while trying to figure out a bcm27xx sysupgrade issue and getting help with in the openwrt-devel mailing list and in the forum.
It seems to me that both have the same origin: the bcm27xx squashfs based setup seems to simply rely on the data following the squashfs to be "not a filesystem" for mount_root
, but without actually making sure that's really the case by padding the image.
mount_root
detect "not a filesystem" - instead, it did detect a f2fs but then found it broken, which made the startup after upgrade fail.Unfortunately, I got very little response in the channels I tried (openwrt-devel, forum, maybe there are better places?) so far.
Just found this suggestion which addresses the problem.
slingamn:
I'm using the image builder for 21.02.0-rc1, specifically the one targeting bcm2709.
When I flash an install image, the resulting system image references an overlay filesystem (an ext4), the superblock of which is beyond the end of the install image itself. Therefore, flashing an install image may leave files from a previous overlay filesystem in place. This is counterintuitive, because I expected that flashing the install image would leave the OS in a well-defined state.
As a workaround, I've been appending 64KB of zeroes to the end of the install image, which seems to fix the problem.
Reproduction steps:
Thanks for your time!