Compare commits

...

2 commits

Author SHA1 Message Date
Roman Artiukhin
da5d6f8bf3 hiby: r1_patcher: add hotplug support
Change-Id: I8b82842f26ac6444b32e166308b7c5deb17fab7a
2026-01-20 09:27:03 +02:00
Roman Artiukhin
b25f59a98a hiby: r1_patcher: fix possible boot hang and flash failures
- Sort image parts for deterministic results.
- Ensure bootloader.r1 is correctly named and has +x permissions.

Change-Id: I391c935d75e5079010fc91d3614d9221d34e4c6b
2026-01-20 09:27:02 +02:00

View file

@ -1,5 +1,8 @@
#!/bin/bash
#Prerequisites:
#sudo apt update && sudo apt install -y p7zip-full squashfs-tools genisoimage coreutils
if [[ $# -ne 2 ]]; then
echo 'usage: ./r1_patcher.sh r1.upt bootloader.r1' >&2
exit 1
@ -48,20 +51,59 @@ unsquashfs -f -d $workingdir_in/rootfs/extracted $workingdir_in/rootfs/rootfs.sq
################################################################################
# copy 'bootloader'
cp $2 $workingdir_in/rootfs/extracted/usr/bin/
cp "$2" "$workingdir_in/rootfs/extracted/usr/bin/bootloader.r1"
chmod 0755 "$workingdir_in/rootfs/extracted/usr/bin/bootloader.r1"
# copy modified 'hibyplayer.sh' script
cp hiby_player.sh $workingdir_in/rootfs/extracted/usr/bin/
chmod 0755 $workingdir_in/rootfs/extracted/usr/bin/hiby_player.sh
################################################################################
### Rockbox Hotplug Logic
################################################################################
# 1. Create hotplug helper script
cat << 'EOF' > $workingdir_in/rootfs/extracted/usr/bin/rb_hotplug.sh
#!/bin/sh
MNT_SD="/data/mnt/sd_0"
MNT_USB="/data/mnt/usb"
case "$MDEV" in
mmcblk*) MNT="$MNT_SD" ;;
sd*) MNT="$MNT_USB" ;;
*) exit 0 ;;
esac
case "$ACTION" in
add|"")
mkdir -p "$MNT"
mount -t auto -o flush,noatime "/dev/$MDEV" "$MNT"
;;
remove)
umount -l "$MNT"
;;
esac
EOF
chmod 0755 $workingdir_in/rootfs/extracted/usr/bin/rb_hotplug.sh
# 2. Check mdev.conf and append rules only if missing
MDEV_CONF="$workingdir_in/rootfs/extracted/etc/mdev.conf"
if ! grep -q "mmcblk" "$MDEV_CONF"; then
echo "mmcblk[0-9]p[0-9] 0:0 660 */usr/bin/rb_hotplug.sh" >> "$MDEV_CONF"
fi
if ! grep -q "sd\[a-z\]" "$MDEV_CONF"; then
echo "sd[a-z][0-9] 0:0 660 */usr/bin/rb_hotplug.sh" >> "$MDEV_CONF"
fi
################################################################################
### rebuild
################################################################################
mkdir "$workingdir_out/image_contents"
mkdir "$workingdir_out/image_contents/ota_v0"
mkdir -p "$workingdir_out/image_contents/ota_v0"
mksquashfs $workingdir_in/rootfs/extracted $workingdir_out/rootfs.squashfs -comp lzo
mksquashfs $workingdir_in/rootfs/extracted $workingdir_out/rootfs.squashfs -comp lzo -all-root
cd "$workingdir_out/image_contents/ota_v0"
@ -74,12 +116,11 @@ md5=$rootfs_md5
ota_md5_rootfs="ota_md5_rootfs.squashfs.$md5"
parts=`find . -name 'rootfs.squashfs.*'`
for part in $parts; do
md5next=($(md5sum $part))
echo $md5next >> $ota_md5_rootfs
mv $part "$part.$md5"
md5=$md5next
for part in $(ls rootfs.squashfs.[0-9]* | sort); do
md5next=($(md5sum $part))
echo $md5next >> $ota_md5_rootfs
mv $part "$part.$md5"
md5=$md5next
done
# xImage
@ -91,12 +132,11 @@ md5=$ximage_md5
ota_md5_xImage="ota_md5_xImage.$md5"
parts=`find . -name 'xImage.*'`
for part in $parts; do
md5next=($(md5sum $part))
echo $md5next >> $ota_md5_xImage
mv $part "$part.$md5"
md5=$md5next
for part in $(ls xImage.[0-9]* | sort); do
md5next=($(md5sum $part))
echo $md5next >> $ota_md5_xImage
mv $part "$part.$md5"
md5=$md5next
done
# ota_update.in