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_PACKAGE_wireguard-tools=y
|
||||||
# CONFIG_PER_FEED_REPO is not set
|
# CONFIG_PER_FEED_REPO is not set
|
||||||
# CONFIG_TARGET_IMAGES_GZIP is not set
|
# CONFIG_TARGET_IMAGES_GZIP is not set
|
||||||
CONFIG_TARGET_ROOTFS_PARTSIZE=240
|
|
||||||
# CONFIG_TARGET_ROOTFS_SQUASHFS is not set
|
# CONFIG_TARGET_ROOTFS_SQUASHFS is not set
|
||||||
# CONFIG_PACKAGE_kmod-crypto-kpp is not set
|
# CONFIG_PACKAGE_kmod-crypto-kpp is not set
|
||||||
@@ -2,10 +2,17 @@
|
|||||||
USE_PROCD=1
|
USE_PROCD=1
|
||||||
START=08
|
START=08
|
||||||
NAME=msm-firmware-dumper
|
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() {
|
procd_open_instance
|
||||||
[ -f $MSM_DUMPER_FLAG_FILE ] && exit 0
|
procd_set_param command "$PROG"
|
||||||
/usr/bin/msm-firmware-dumper || true
|
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.
|
# env var to override the MCFG relative path within modem/persist.
|
||||||
|
|
||||||
set -e
|
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
|
[ -f "$MARKER" ] && exit 0
|
||||||
|
|
||||||
log() { logger -t msm-fw-dumper "$*"; }
|
log() { logger -t msm-fw-dumper "$*"; }
|
||||||
|
|
||||||
MNT="/tmp/mnt/msmfw"
|
MNT="/tmp/mnt/msmfw"
|
||||||
FW="/lib/firmware"
|
FW="/lib/firmware"
|
||||||
MCFG_REL="${MCFG_PATH:-}"
|
MCFG_REL="${MCFG_PATH:-$DEFAULT_MCFG_PATH}"
|
||||||
|
|
||||||
log "start (marker not present)"
|
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 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"
|
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)
|
# Modem/Wi-Fi core blobs (MDT + fragments + MBA if present)
|
||||||
for p in "$MNT/modem"/image/wcnss.mdt "$MNT/modem"/image/wcnss.b* \
|
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"
|
copy_if "$MNT/modem/image/wlan/prima/WCNSS_qcom_cfg.ini" "$FW/wlan/prima/WCNSS_qcom_cfg.ini"
|
||||||
|
|
||||||
# MCFG handling:
|
# MCFG handling:
|
||||||
if [ -n "$MCFG_REL" ]; then
|
if [ -f "$MNT/modem/$MCFG_REL/mcfg_sw.mbn" ]; then
|
||||||
if [ -f "$MNT/modem/$MCFG_REL" ]; then
|
cp -af "$MNT/modem/$MCFG_REL/mcfg_sw.mbn" "$FW/MCFG_SW.MBN" && log "MCFG from modem:$MCFG_REL"
|
||||||
cp -af "$MNT/modem/$MCFG_REL" "$FW/MCFG_SW.MBN" && log "MCFG from modem:$MCFG_REL"
|
else
|
||||||
else
|
log "WARN: MCFG 'MCFG_PATH=$MCFG_REL' not found in modem"
|
||||||
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"
|
|
||||||
fi
|
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
|
[ -f "$FW/mcfg_sw.mbn" ] && ln -sf "$FW/mcfg_sw.mbn" "$FW/MCFG_SW.MBN" 2>/dev/null || true
|
||||||
|
|
||||||
sync
|
sync
|
||||||
|
|
||||||
|
|
||||||
# Unmount and cleanup
|
# Unmount and cleanup
|
||||||
umount "$MNT/modem" 2>/dev/null || true
|
umount "$MNT/modem" 2>/dev/null || true
|
||||||
umount "$MNT/persist" 2>/dev/null || true
|
umount "$MNT/persist" 2>/dev/null || true
|
||||||
|
|||||||
@@ -23,7 +23,9 @@ endef
|
|||||||
define Package/$(PKG_NAME)/install
|
define Package/$(PKG_NAME)/install
|
||||||
$(INSTALL_DIR) $(1)/etc
|
$(INSTALL_DIR) $(1)/etc
|
||||||
$(INSTALL_CONF) ./files/msm8916-usb-gadget.conf $(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_DIR) $(1)/etc/init.d
|
||||||
$(INSTALL_BIN) ./files/msm8916-usb-gadget.init $(1)/etc/init.d/msm8916-usb-gadget
|
$(INSTALL_BIN) ./files/msm8916-usb-gadget.init $(1)/etc/init.d/msm8916-usb-gadget
|
||||||
|
|||||||
@@ -1,15 +1,16 @@
|
|||||||
#!/bin/sh /etc/rc.common
|
#!/bin/sh /etc/rc.common
|
||||||
START=95
|
START=95
|
||||||
USE_PROCD=1
|
USE_PROCD=1
|
||||||
|
PROG="/usr/bin/msm8916-usb-gadget"
|
||||||
|
|
||||||
start_service() {
|
start_service() {
|
||||||
procd_open_instance
|
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 stdout 1
|
||||||
procd_set_param stderr 1
|
procd_set_param stderr 1
|
||||||
procd_close_instance
|
procd_close_instance
|
||||||
}
|
}
|
||||||
|
|
||||||
stop_service() {
|
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
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=rootfs-resizer
|
PKG_NAME:=rootfs-resizer
|
||||||
PKG_VERSION:=1
|
PKG_VERSION:=1
|
||||||
|
PKG_RELEASE:=1
|
||||||
|
|
||||||
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
|
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
|
||||||
|
|
||||||
include $(INCLUDE_DIR)/package.mk
|
include $(INCLUDE_DIR)/package.mk
|
||||||
|
|
||||||
define Package/$(PKG_NAME)
|
define Package/$(PKG_NAME)
|
||||||
SECTION:=Utilities
|
SECTION:=Utilities
|
||||||
CATEGORY:=Utilities
|
CATEGORY:=Utilities
|
||||||
TITLE:=Resize Rootfs In Emmc or Sdcard (only support ext4 fs)
|
TITLE:=Resize Rootfs (ext4 fs only)
|
||||||
DEPENDS:=+resize2fs +mount-utils +e2fsprogs +tune2fs
|
DEPENDS:=+resize2fs +mount-utils +e2fsprogs +tune2fs
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define Build/Configure
|
define Build/Configure
|
||||||
@@ -26,9 +21,9 @@ endef
|
|||||||
define Build/Compile
|
define Build/Compile
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define Package/$(PKG_NAME)/install
|
define Package/$(PKG_NAME)/install
|
||||||
$(INSTALL_DIR) $(1)/etc/uci-defaults
|
$(INSTALL_DIR) $(1)/etc/init.d
|
||||||
$(INSTALL_BIN) ./files/00_rootfs_resizer $(1)/etc/uci-defaults
|
$(INSTALL_BIN) ./files/rootfs-resizer.init $(1)/etc/init.d/rootfs-resizer
|
||||||
endef
|
endef
|
||||||
|
|
||||||
$(eval $(call BuildPackage,$(PKG_NAME)))
|
$(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