This commit is contained in:
Miguel Fuertes committed 2025-09-30 18:59:40 +02:00
1 parent a4c43f4a1e
commit f5cd20b32d
8 files changed
+117 -52

No files matched your search

-1
View File
@@ -91,6 +91,5 @@ CONFIG_PACKAGE_uhttpd-mod-ubus=y
CONFIG_PACKAGE_wireguard-tools=y
# CONFIG_PER_FEED_REPO is not set
# CONFIG_TARGET_IMAGES_GZIP is not set
CONFIG_TARGET_ROOTFS_PARTSIZE=240
# CONFIG_TARGET_ROOTFS_SQUASHFS is not set
# CONFIG_PACKAGE_kmod-crypto-kpp is not set
@@ -2,10 +2,17 @@
USE_PROCD=1
START=08
NAME=msm-firmware-dumper
FLAG="/etc/msm-fw-dumped"
PROG="/usr/bin/msm-firmware-dumper"
export MSM_DUMPER_FLAG_FILE="/etc/msm-fw-dumped"
start_service() {
[ -f "$FLAG" ] && return 0
[ -x "$PROG" ] || return 0
start() {
[ -f $MSM_DUMPER_FLAG_FILE ] && exit 0
/usr/bin/msm-firmware-dumper || true
procd_open_instance
procd_set_param command "$PROG"
procd_set_param env MSM_DUMPER_FLAG_FILE="$FLAG"
procd_set_param stdout 1
procd_set_param stderr 1
procd_close_instance
}
@@ -5,15 +5,17 @@
# env var to override the MCFG relative path within modem/persist.
set -e
DEFAULT_MARKER="/etc/msm-firmware-dumped"
DEFAULT_MCFG_PATH="image/modem_pr/mcfg/configs/mcfg_sw/generic/common/default/default"
MARKER="${MSM_DUMPER_FLAG_FILE:-/etc/msm-fw-dumped}"
MARKER="${MSM_DUMPER_FLAG_FILE:-$DEFAULT_MARKER}"
[ -f "$MARKER" ] && exit 0
log() { logger -t msm-fw-dumper "$*"; }
MNT="/tmp/mnt/msmfw"
FW="/lib/firmware"
MCFG_REL="${MCFG_PATH:-}"
MCFG_REL="${MCFG_PATH:-$DEFAULT_MCFG_PATH}"
log "start (marker not present)"
@@ -24,7 +26,14 @@ mkdir -p "$MNT/modem" "$MNT/persist" "$FW/wlan/prima"
mount -t vfat -o ro,nosuid,nodev,noexec,iocharset=iso8859-1,codepage=437 /dev/mmcblk0p3 "$MNT/modem" 2>/dev/null || log "WARN: modem mount failed"
mount -t ext4 -o ro,nosuid,nodev,noexec /dev/mmcblk0p6 "$MNT/persist" 2>/dev/null || log "WARN: persist mount failed"
copy_if() { [ -f "$1" ] && cp -af "$1" "$2" && log "copied $(basename "$1")"; }
# Copy if exists!
copy_if() {
src="$1"; dst="$2"
if [ -f "$src" ]; then
cp -af "$src" "$dst" && log "copied $(basename "$src")" || return $?
fi
return 0
}
# Modem/Wi-Fi core blobs (MDT + fragments + MBA if present)
for p in "$MNT/modem"/image/wcnss.mdt "$MNT/modem"/image/wcnss.b* \
@@ -41,22 +50,17 @@ copy_if "$MNT/modem/image/wlan/prima/WCNSS_cfg.dat" "$FW/wlan/prima/WCNSS_cfg.da
copy_if "$MNT/modem/image/wlan/prima/WCNSS_qcom_cfg.ini" "$FW/wlan/prima/WCNSS_qcom_cfg.ini"
# MCFG handling:
if [ -n "$MCFG_REL" ]; then
if [ -f "$MNT/modem/$MCFG_REL" ]; then
cp -af "$MNT/modem/$MCFG_REL" "$FW/MCFG_SW.MBN" && log "MCFG from modem:$MCFG_REL"
else
log "WARN: MCFG 'path=$MCFG_REL' not found in modem/persist"
fi
fi
if [ ! -f "$FW/MCFG_SW.MBN" ] && [ -f "$MNT/modem/image/modem_pr/mcfg/configs/mcfg_sw/generic/common/default/default/mcfg_sw.mbn" ]; then
cp -af "$MNT/modem/image/modem_pr/mcfg/configs/mcfg_sw/generic/common/default/default/mcfg_sw.mbn" "$FW/MCFG_SW.MBN" && log "MCFG default copied"
if [ -f "$MNT/modem/$MCFG_REL/mcfg_sw.mbn" ]; then
cp -af "$MNT/modem/$MCFG_REL/mcfg_sw.mbn" "$FW/MCFG_SW.MBN" && log "MCFG from modem:$MCFG_REL"
else
log "WARN: MCFG 'MCFG_PATH=$MCFG_REL' not found in modem"
fi
# Honoring any user copied MCFG to /lib/firmware
[ -f "$FW/mcfg_sw.mbn" ] && ln -sf "$FW/mcfg_sw.mbn" "$FW/MCFG_SW.MBN" 2>/dev/null || true
sync
# Unmount and cleanup
umount "$MNT/modem" 2>/dev/null || true
umount "$MNT/persist" 2>/dev/null || true
+3 -1
View File
@@ -23,7 +23,9 @@ endef
define Package/$(PKG_NAME)/install
$(INSTALL_DIR) $(1)/etc
$(INSTALL_CONF) ./files/msm8916-usb-gadget.conf $(1)/etc/
$(INSTALL_BIN) ./files/msm8916-usb-gadget.sh $(1)/etc/msm8916-usb-gadget.sh
$(INSTALL_DIR) $(1)/usr/bin
$(INSTALL_BIN) ./files/msm8916-usb-gadget.sh $(1)/usr/bin/msm8916-usb-gadget
$(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_BIN) ./files/msm8916-usb-gadget.init $(1)/etc/init.d/msm8916-usb-gadget
@@ -1,15 +1,16 @@
#!/bin/sh /etc/rc.common
START=95
USE_PROCD=1
PROG="/usr/bin/msm8916-usb-gadget"
start_service() {
procd_open_instance
procd_set_param command /bin/sh /etc/msm8916-usb-gadget.sh start
procd_set_param command /bin/sh $PROG start
procd_set_param stdout 1
procd_set_param stderr 1
procd_close_instance
}
stop_service() {
/bin/sh /etc/msm8916-usb-gadget.sh stop 2>/dev/null || true
/bin/sh $PROG stop 2>/dev/null || true
}
+9 -14
View File
@@ -1,23 +1,18 @@
#
# Copyright (C) 2020-2022 HandsomeMod Project
#
# This is free software, licensed under the GNU General Public License v3.
#
#
include $(TOPDIR)/rules.mk
PKG_NAME:=rootfs-resizer
PKG_VERSION:=1
PKG_RELEASE:=1
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
include $(INCLUDE_DIR)/package.mk
define Package/$(PKG_NAME)
SECTION:=Utilities
CATEGORY:=Utilities
TITLE:=Resize Rootfs In Emmc or Sdcard (only support ext4 fs)
DEPENDS:=+resize2fs +mount-utils +e2fsprogs +tune2fs
SECTION:=Utilities
CATEGORY:=Utilities
TITLE:=Resize Rootfs (ext4 fs only)
DEPENDS:=+resize2fs +mount-utils +e2fsprogs +tune2fs
endef
define Build/Configure
@@ -26,9 +21,9 @@ endef
define Build/Compile
endef
define Package/$(PKG_NAME)/install
$(INSTALL_DIR) $(1)/etc/uci-defaults
$(INSTALL_BIN) ./files/00_rootfs_resizer $(1)/etc/uci-defaults
endef
define Package/$(PKG_NAME)/install
$(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_BIN) ./files/rootfs-resizer.init $(1)/etc/init.d/rootfs-resizer
endef
$(eval $(call BuildPackage,$(PKG_NAME)))
@@ -1,17 +0,0 @@
#!/bin/sh
#
# Copyright (c) 2020-2022 HandsomeMod Project
#
# This file is licensed under the terms of the GNU General Public
# License version 2. This program is licensed "as is" without any
# warranty of any kind, whether express or implied.
rootpart=$(findmnt -n -o SOURCE /)
mount -o ro,remount /
tune2fs -O^resize_inode ${rootpart}
fsck.ext4 -yDf ${rootpart} > /dev/null
mount -o rw,remount /
resize2fs ${rootpart} > /dev/null
apk del rootfs-resizer
reboot
@@ -0,0 +1,74 @@
#!/bin/sh /etc/rc.common
# Early ext4 rootfs resizer with flag and logs (OpenWrt rc.common)
START=01
STOP=00
NAME=rootfs-resizer
FLAG="/etc/rootfs-resizer.done"
log() { logger -t rootfs-resizer "$*"; }
get_rootdev() {
local dev
dev="$(findmnt -n -o SOURCE / 2>/dev/null || awk '$2=="/"{print $1; exit}' /proc/mounts)"
[ -n "$dev" ] || dev="$(sed -n 's/.*\broot=\([^ ]*\).*/\1/p' /proc/cmdline)"
[ "$dev" = "/dev/root" ] && dev="$(sed -n 's/.*\broot=\([^ ]*\).*/\1/p' /proc/cmdline)"
case "$dev" in
LABEL=*|UUID=*|PARTUUID=*|PARTLABEL=*)
dev="$(blkid -l -t "$dev" -o device 2>/dev/null || true)"
;;
esac
echo "$dev"
}
start() {
if [ -f "$FLAG" ]; then
log "flag present, skipping resize"
return 0
fi
log "starting early rootfs resize"
local dev rc out
dev="$(get_rootdev)"
if [ -z "$dev" ] || [ ! -b "$dev" ]; then
log "could not resolve a valid root block device; aborting"
return 0
fi
log "root device resolved: $dev"
# Remount root read-only before metadata changes/checks
log "remounting / read-only"
mount -o ro,remount / 2>/dev/null || log "WARN: remount ro failed (continuing)"
# Clear resize_inode like the working script (safe to ignore errors if not present)
log "clearing resize_inode feature if present"
out="$(tune2fs -O^resize_inode "$dev" 2>&1)"; rc=$?
echo "$out" | logger -t rootfs-resizer
[ $rc -ne 0 ] && log "tune2fs exited rc=$rc (continuing)"
# Run fsck (note: generally discouraged on mounted FS; we remounted ro)
log "running e2fsck -yDf on $dev"
out="$(e2fsck -yDf "$dev" 2>&1)"; rc=$?
echo "$out" | logger -t rootfs-resizer
[ $rc -ne 0 ] && log "e2fsck exited rc=$rc (continuing)"
# Back to read-write for online resize
log "remounting / read-write"
mount -o rw,remount / 2>/dev/null || log "WARN: remount rw failed (continuing)"
log "invoking resize2fs (online) on $dev"
out="$(resize2fs "$dev" 2>&1)"; rc=$?
echo "$out" | logger -t rootfs-resizer
if [ $rc -eq 0 ]; then
log "resize2fs succeeded on $dev"
touch "$FLAG"
sync
log "flag created at $FLAG; syncing and rebooting"
( sleep 1; reboot -f ) &
else
log "resize2fs failed rc=$rc; leaving system as-is"
fi
}