⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 create_firmware.sh

📁 TViX firmware creation tool.
💻 SH
字号:
#! /bin/bash# create_firmware.sh by BadEIP.## The script will create a directory in the current working directory named mnt, where one of the# JFFS2 filesystems contained in the firmware will be mounted.# This directory can then be manually- or automatically patched. # To perform an automatic creation of the firmware, put a directory named root_6500 in your $PATH# # usage:# create_firmware.sh /path/to/firmware.fwp## This script only supports the Tvix M-6500 platform, as firmware for all other Tvix-architectures# can easily be generated manually with TvixFWFIRMWARE=$PWD/$1TVIXFW=`which tvixfw`OPENTVIX_ROOT=$PWD/rootSUDO=sudoMTD="/dev/mtdblock0"MNT_DIR="./mnt"JFFS2_MNT="./mnt/jffs2"ROMFS_MNT="./mnt/romfs"DUMP_DIR=`basename $FIRMWARE.dump`JFFS2_FILE="$DUMP_DIR/jffs2.apps"ROMFS_FILE="$DUMP_DIR/romfs.rootfs"about(){   clear   echo "=================================================================================="   echo " This is as a supplement to TvixFW (available from http://binary-art.net) to ease "   echo " creation of Tvix M-6500 firmware."   echo "=================================================================================="   echo}check_args(){   if [ -z $FIRMWARE ]; then      echo "usage: create_firmware <firmware.fwp> <root_directory>"       exit 1    fi   if [ -z $OPENTVIX_ROOT ]; then      OPENTVIX_ROOT=root      echo $OPENTVIX_ROOT      if [ ! -d $OPENTVIX_ROOT ]; then         echo "usage: create_firmware <firmware.fwp> <root_directory>"          exit 1      fi   fi   echo "Source firmware: $FIRMWARE"   echo "root directory: $OPENTVIX_ROOT"}locate_tvixfw(){   if [ -z $TVIXFW ]; then      if [ -f ./bin/tvixfw ]; then         TVIXFW=./bin/tvixfw      else         echo "Error, unable to locate the tvixfw binary in your \$PATH"         exit 1      fi   fi}init(){   if [ "$(id -u)" == "0" ]; then      unset SUDO   else      echo -n "Sudo "   fi   $SUDO rm -rvf $MNT_DIR 2>&1 >/dev/null   mkdir -p $JFFS2_MNT   mkdir -p $ROMFS_MNT   $SUDO umount $MNT_DIR 2>/dev/null   $SUDO umount $JFFS2_MNT 2>/dev/null   $SUDO umount $ROMFS_MNT 2>/dev/null   echo}load_modules(){   $SUDO modprobe mtd   $SUDO modprobe jffs2   $SUDO modprobe mtdram total_size=65536 erase_size=512   $SUDO modprobe mtdchar   $SUDO modprobe mtdblock}dump_filesystems(){   $TVIXFW --dump $FIRMWARE 2>/dev/null}extract_jffs2_apps(){   $SUDO dd if=/dev/zero bs=10240 count=6536 of=$MTD 2>/dev/null &&   $SUDO dd if=$JFFS2_FILE of=$MTD 2>/dev/null   $SUDO mount -t jffs2 $MTD $JFFS2_MNT || exit 1   echo "jffs2 image mounted"}create_busybox_links(){   cd $MNT_DIR/jffs2/tvix/opentvix/usr/bin/ || echo "can't cd to dest dir":wq      echo "creating busybox symlinks.."   for sym in \addgroup adduser ar arping ash awk basename bunzip2 bzcat cat catv chattr chgrp chmod chown chroot chrt \chvt cksum clear cmp cp cpio crond crontab cut date dc dd deallocvt delgroup deluser df dhcprelay diff dirname \dmesg dnsd dos2unix du dumpkmap dumpleases echo egrep eject env ether-wake expr false fdflush fdformat fgrep find \fold free freeramdisk fsck fuser getopt getty grep gunzip gzip halt hdparm head hexdump hostid hostname hwclock \id ifconfig ifdown ifup inetd init insmod install ip ipaddr ipcrm ipcs iplink iproute iprule iptunnel kill killall \killall5 klogd last length less linux32 linux64 linuxrc ln loadfont loadkmap logger login logname losetup ls lsattr \lsmod lzmacat makedevs md5sum mdev mesg mkdir mkfifo mknod mkswap mktemp modprobe more mount mountpoint mt mv \nameif netstat nice nohup nslookup od openvt passwd patch pidof ping pipe_progress pivot_root poweroff printenv \printf ps pwd rdate readlink readprofile realpath reboot renice reset resize rm rmdir rmmod route run-parts runlevel \sed seq setarch setconsole setkeycodes setlogcons setsid sh sha1sum sleep sort start-stop-daemon strings stty su \sulogin swapoff swapon switch_root sync sysctl syslogd tail tar taskset tee telnet test tftp time top touch tr \traceroute true tty udhcpc udhcpd umount uname uniq unix2dos unlzma unzip uptime usleep uudecode uuencode vconfig \vi vlock watch watchdog wc wget which who whoami xargs yes zcat   do      $SUDO ln -sv ../../busybox $sym   done   cd -}modify_jffs2_apps(){   #$SUDO ./bin/patch_main $MNT_DIR/jffs2/tvix/main   echo "Installing badeip OpenTViX base."   echo "Press enter to continue"   read foo   $SUDO cp -vrf $MNT_DIR/jffs2/tvix/main $MNT_DIR/jffs2/tvix/main.dvico &&   $SUDO cp -vrf $OPENTVIX_ROOT/* $MNT_DIR/jffs2/tvix/    create_busybox_links   echo      echo "you can now modify the contents of the $MNT_DIR directory."   echo "!!! copy main.dvico binary?? !!!"   echo "-- press enter to continue --"   read foo   echo "generating jffs2 image.."   #$SUDO mkfs.jffs2 --eraseblock=$((0x2000)) --pagesize=4096 --root=$JFFS2_MNT -o $JFFS2_FILE   $SUDO mkfs.jffs2 -n --eraseblock=128KiB --root=$JFFS2_MNT -o $JFFS2_FILE   $SUDO umount $JFFS2_MNT}create_firmware(){   $TVIXFW --create $DUMP_DIR/fwp.header}main(){   rm -rf root   svn checkout http://svn.xp-dev.com/svn/badeip-opentvix-root   cp -r badeip-opentvix-root/trunk/root/ .   rm -rf badeip-opentvix-root   find root -name .svn | xargs rm -rf   cd firmware   about   check_args   locate_tvixfw   init   load_modules   dump_filesystems   extract_jffs2_apps   modify_jffs2_apps   create_firmware}main

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -