changes
This commit is contained in:
1 parent
a4c43f4a1e
commit
f5cd20b32d
8 files changed
+117
-52
No files matched your search
@@ -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
|
||||
|
||||
@@ -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
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
Reference in new issue
Block a user