On 09/01/2015 09:16, Vittorio G (VittGam) wrote: > Hi, > > What is the reason has this been rejected? Do I need to change > something? > > Thanks, Vittorio > > Il 28.12.2014 13:34 Vittorio G (VittGam) ha scritto: >> The mkhootoofw.sh is a shell script, because official factory >> images are shell scripts by themselves, and it made more sense to >> me to just use a shell script on the build host to put the pieces >> for the factory image file together, rather than reimplement the >> wheel in C. >> >> The hootoo_mtd_writer is a stripped-down and modified version of >> mtd that includes support for flashing at an offset in the MTD. >> This is needed for the HooToo, because the only usable partition >> for factory flashing is the one labeled "ALL", and we don't want >> to flash the u-boot, u-boot-env and factory partitions too... >> >> The hootoo_mtd_writer binary has been compiled using the >> toolchain contained in the GPL tarball provided by HooToo. (It >> seems to me from some tests that this is the only way to get >> executables running on the stock kernel...) >> >> In order to update the firmware from the web interface you need >> to put a FAT-formatted pendrive in the router USB port, since >> the original firmware needs this as temporary storage, because >> the RAM is quite bloated. Then you upload the OpenWrt factory >> image generated by mkhootoofw.sh, and the script kills unneeded >> services and partitions to free up RAM, backs up the original >> firmware on the pendrive, extracts the hootoo_mtd_writer and the >> sysupgrade image, flashes the sysupgrade image and then reboots. >> >> I've tested the resulting image on the factory firmware, and it >> successfully installed OpenWrt on my HT-TM02. >> >> Signed-off-by: Vittorio Gambaletta <open...@vittgam.net> >> >> --- a/target/linux/ramips/image/Makefile +++ >> b/target/linux/ramips/image/Makefile @@ -317,6 +317,15 @@ fi >> endef >> >> +# Build HooToo factory images +define >> BuildFirmware/HooToo8M/squashfs + $(call >> BuildFirmware/Default8M/$(1),$(1),$(2),$(3)) + [ -e "$(call >> sysupname,$(1),$(2))" ] && \ + $(SCRIPT_DIR)/download.pl >> "$(DL_DIR)" "hootoo_mtd_writer" >> "3d72349cbb1d8e96086a084a6940304d" >> "https://github.com/VittGam/hootoo_mtd_writer/releases/download/1.0/" >> >> && \ >> + mkhootoofw.sh "$(DL_DIR)/hootoo_mtd_writer" "$(call >> sysupname,$(1),$(2))" "$(call imgname,$(1),$(2))-factory.bin" >> +endef +BuildFirmware/HooToo8M/initramfs=$(call >> BuildFirmware/OF/initramfs,$(1),$(2),$(3)) +
this bit is really bad. you cannot install a binary from a random source and use that to flash the unit. the tool needs to be compiled during the build process >> # # RT288X Profiles # @@ -480,7 +489,7 @@ endef >> Image/Build/Profile/HLKRM04=$(call >> BuildFirmware/HLKRM04/$(1),$(1),hlk-rm04,HLKRM04,HLK-RM02) >> >> -Image/Build/Profile/HT-TM02=$(call >> BuildFirmware/Default8M/$(1),$(1),ht-tm02,HT-TM02) >> +Image/Build/Profile/HT-TM02=$(call >> BuildFirmware/HooToo8M/$(1),$(1),ht-tm02,HT-TM02) >> >> Image/Build/Profile/M3=$(call >> BuildFirmware/Poray4M/$(1),$(1),m3,M3) >> >> --- a/tools/firmware-utils/Makefile +++ >> b/tools/firmware-utils/Makefile @@ -76,6 +76,7 @@ >> >> define Host/Install $(INSTALL_BIN) $(HOST_BUILD_DIR)/bin/* >> $(STAGING_DIR_HOST)/bin/ + $(INSTALL_BIN) src/mkhootoofw.sh >> $(STAGING_DIR_HOST)/bin/ endef >> >> $(eval $(call HostBuild)) --- /dev/null +++ >> b/tools/firmware-utils/src/mkhootoofw.sh @@ -0,0 +1,88 @@ >> +#!/bin/sh +# +# HooToo Factory Firmware Generator for OpenWrt +# >> Copyright (C) 2014 Vittorio Gambaletta <open...@vittgam.net> +# >> +# This is free software, licensed under the GNU General Public >> License v2. +# See /LICENSE for more information. +# +# Sources >> for the hootoo_mtd_writer utility, which must be compiled with >> the GPL +# toolchain provided by HooToo for it to work on the >> factory kernel, can be +# found at: >> https://github.com/VittGam/hootoo_mtd_writer +# +# Usage: >> mkhootoofw.sh path-to-hootoo_mtd_writer >> path-to-openwrt-sysupgrade.bin path-to-openwrt-factory.bin +# + >> +# Write the shellscript stub +cat > "${3}.tmp" <<'EOF' +SKIP=57 >> + +echo "Checking firmware checksum..." +[ "$CRCSUM" != "`sed >> '1,3d' "$0" | cksum | sed -e 's/ /Z/' -e 's/ /Z/' | cut -dZ -f1`" >> ] && { + echo "Firmware checksum error!" + exit 1 +} +echo >> "Firmware checksum OK" + +echo "Killing unneeded services..." >> +killall -9 fileserv ioos upnpd led_control owndns ownhttp >> vstddns udhcpc udhcpd udevd minidlna smbd nmbd +sleep 1 + +echo >> "Unmounting unneeded mounts..." +umount /etc +umount /boot/tmp >> +umount /usr/local/samba/var +umount /opt +umount /var + +echo >> "Backing up original firmware..." >> +BKPDIRBASE="/data/UsbDisk1/Volume1/OpenWrt-HooToo-Backup-`sed >> 's/:/-/g' < /sys/class/net/ra0/address`-" +BKPDIRNUM=1 >> +BKPDIR="${BKPDIRBASE}${BKPDIRNUM}" +while [ -e "$BKPDIR" ]; do + >> BKPDIRNUM=$((${BKPDIRNUM}+1)) + >> BKPDIR="${BKPDIRBASE}${BKPDIRNUM}" +done +echo "Backup directory: >> ${BKPDIR}" + +mkdir "$BKPDIR" +cp /dev/mtdblock* "${BKPDIR}/" || >> { + echo "Backup failed!" + exit 1 +} +sync && echo 3 > >> /proc/sys/vm/drop_caches +echo "Backup OK" + +echo "Extracting >> OpenWrt firmware..." +tail -n +$SKIP "$0" | tar xv -C /tmp/ || { >> + echo "Extraction of firmware failed!" + exit 1 +} +chmod >> +x /tmp/hootoo_mtd_writer +sync && echo 3 > >> /proc/sys/vm/drop_caches + +echo "Writing OpenWrt firmware..." >> +cd /tmp/ +/tmp/hootoo_mtd_writer /tmp/openwrt.bin ALL 327680 1 >> + +echo "Upgrade not successful (reboot by hootoo_mtd_writer not >> happened)..." +exit 1 +END_OF_STUB +EOF + +# Create and append >> tar archive containing hootoo_mtd_writer and sysupgrade image to >> the factory image file +mkdir "${3}-tmpdir" +cp "$1" >> "${3}-tmpdir/hootoo_mtd_writer" +cp "$2" >> "${3}-tmpdir/openwrt.bin" +tar cv -C "${3}-tmpdir/" >> hootoo_mtd_writer openwrt.bin >> "${3}.tmp" +rm -rf >> "${3}-tmpdir" + +# Generate the final factory image file along >> with the checksum +echo '#!/bin/sh' > "$3" +echo '# OpenWrt >> factory installation for HooToo HT-TM02' >> "$3" +echo -n >> 'CRCSUM=' >> "$3" +cksum < "${3}.tmp" | sed -e 's/ /Z/' -e 's/ >> /Z/' | cut -dZ -f1 >> "$3" +cat "${3}.tmp" >> "$3" +rm >> "${3}.tmp" + +exit 0 >> _______________________________________________ openwrt-devel >> mailing list openwrt-devel@lists.openwrt.org >> https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel > _______________________________________________ openwrt-devel > mailing list openwrt-devel@lists.openwrt.org > https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel > _______________________________________________ openwrt-devel mailing list openwrt-devel@lists.openwrt.org https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel