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

📄 lrk-extract

📁 ROM programming of HTC mobile devices
💻
字号:
#!/bin/bash##  Linux Rom Kitchen Extract script##  Copyright (C) 2007-2008 Pau Oliva Fora - <pof@eslack.org>##  This program is free software; you can redistribute it and/or modify it#  under the terms of the GNU General Public License as published by the#  Free Software Foundation; either version 3 of the License, or (at your#  opinion) any later version. See <http://www.gnu.org/licenses/gpl.html>#TOOLS="/usr/share/LinuxRomKitchen/"CURRENTDIR=`pwd`if ! [ -f $HOME/.lrk/NBSPLITOPTS ]; then	echo "-kaiser" > $HOME/.lrk/NBSPLITOPTSfiNBSPLITOPTS=`cat ~/.lrk/NBSPLITOPTS`if [ -z $1 ]; then	echo "USAGE: lrk-extract <OS.nb> [Part01.raw] [Part02.raw]"	exit 1fi# check that no SYS & ROM exist in CURRENTDIRif [ -d SYS ]; then	echo "ERROR: SYS folder already exists in $CURRENTDIR"	exit 1fiif [ -d ROM ]; then	echo "ERROR: ROM folder already exists in $CURRENTDIR"	exit 1fiecho "Preparing..."rm -rf ~/.lrk/Temp/ 2>/dev/nullmkdir -p ~/.lrk/Temp/cp $1 ~/.lrk/Temp/OS.nbif [ $? != 0 ]; then	echo "ERROR: Can't copy $1"	exit 1ficd ~/.lrk/Tempif ! [ -z $2 ]; then	cp $2 ~/.lrk/xip.bin	cp $3 ~/.lrk/imgfs.binelse	if [ $NBSPLITOPTS != "-athena" ]; then		nbsplit $NBSPLITOPTS ./OS.nb |tee log.dump		if [ $? != 0 ]; then			echo "ERROR: NBSplit failed, check that nbplit options are correct in kitchen preferences"			exit 1		fi	else		cp ./OS.nb ./OS.nb.payload	fi	ImgfsFromNb OS.nb.payload imgfs.bin >> log.dumpfiwine $TOOLS/ImgfsToDump.exe imgfs.bin >> log.dumpmv dump dump_imgfsif [ $? != 0 ]; then	echo "ERROR: can't create imgfs dump"	exit 1fiif [ -z $2 ]; then	wine $TOOLS/RomMaster.exe -x -w 5 -b 0x320000 OS.nb.payload -o xip.bin	if ! [ -e xip.bin ]; then		wine $TOOLS/RomMaster.exe -x -w 5 -b 0x310000 OS.nb.payload -o xip.bin	fifimkdir XIPwine $TOOLS/dumprom.exe xip.bin -5 -d XIPmv dump dump_xipif [ $? != 0 ]; then	echo "ERROR: can't create XIP dump"	exit 1ficd XIP#Access is Denied workaroundfind ../dump_xip/ -type d |xargs -n 1 basename |xargs -n 1 rm 2>/dev/nullmv * ../dump_xip/cd ..rm -rf XIP### CopyROMXIPcp -R dump_xip/* dump_imgfs/ 2>/dev/nullmkdir ROMmv OS.nb ROM/mv dump_xip XIPmv XIP ROM/if [ $? != 0 ]; then	echo "ERROR: can't copy ROM XIP"	exit 1fi# extracting registry hivesecho "Extracting registry hives"cd dump_imgfsrm -rf ~/.lrk/reg/ 2>/dev/nullmkdir -p ~/.lrk/reg/export _FLATRELEASEDIR=.wine $TOOLS/rgucomp.exe -nologo -o default.hv > ~/.lrk/reg/default.txtwine $TOOLS/rgucomp.exe -nologo -o user.hv > ~/.lrk/reg/user.txtwine $TOOLS/rgucomp.exe -nologo -o boot.hv > ~/.lrk/reg/boot.txtdos2unix ~/.lrk/reg/*dos2unix ~/.lrk/reg/*# BuildOSecho "Building OS packages in SYS folder, please wait"echo "[Core OS]" > ~/.lrk/rominfo.txtecho "  Windows Mobile-based Pocket PCs" >> ~/.lrk/rominfo.txtecho >> ~/.lrk/rominfo.txtecho "[Missing Files]" >> ~/.lrk/rominfo.txtfor f in `ls *.dsm` ; do	dsminfo $f > $f.dsminfo	len=`cat $f.dsminfo |wc -l`	PKGNAME=`cat $f.dsminfo |head -n 1 |cut -f 2 -d " "`	#echo "Processing $PKGNAME - $f"	mkdir -p "../SYS/$PKGNAME"	if [ $len -gt 50 ]; then		sleep 1 # to avoid cat broken pipe	fi	for i in `seq 2 $len`; do		file=`cat $f.dsminfo |head -n $i |tail -n 1`		mv "$file" "../SYS/$PKGNAME/" 2>/dev/null		if [ $? != 0 ]; then			echo "  $PKGNAME: $file" >> ~/.lrk/rominfo.txt		fi	done	mv $f "../SYS/$PKGNAME/"	rm $f.dsminfodone# special packagesmv .ROM ../SYS/mv .VM ../SYS/if [ $? != 0 ]; then	echo "ERROR: ROM package creation failed"	exit 1ficd ..# generating rom infoecho >> ~/.lrk/rominfo.txtecho "Generating rom info, please wait"echo "[Versions]" >> ~/.lrk/rominfo.txt### find romversion in provxml fileOEMVERSIONFILE=`find ./SYS/OEM* -iname "mxipupdate_OEMVERSION*"`ROMVERSION=`cat $OEMVERSIONFILE |grep -i ROMVersion |sed -e 's/.*value="//g' |cut -f 1 -d '"' |head -n 1`if ! [ -z $ROMVERSION ]; then	echo "  ROM:   $ROMVERSION" >> ~/.lrk/rominfo.txtfifor f  in `find ./SYS/ -iname "*.dsm" |grep -v OEM |grep -v NetCF` ; do dsminfo $f -v |grep PackageVersion |grep -v "0.0.0.0" |sed -e "s/PackageVersion/  SYS/g"; done |sort -u >> ~/.lrk/rominfo.txtfor f  in `find ./SYS/NetCF/ -iname "*.dsm"` ; do dsminfo $f -v |grep PackageVersion |grep -v "0.0.0.0" |sed -e "s/PackageVersion/  NET/g"; done |sort -u >> ~/.lrk/rominfo.txtfor f  in `find ./SYS/OEM*/ -iname "*.dsm"` ; do dsminfo $f -v |grep PackageVersion |grep -v "0.0.0.0" |sed -e "s/PackageVersion/  OEM/g"; done |sort -u >> ~/.lrk/rominfo.txtecho >> ~/.lrk/rominfo.txtecho "[Language]" >> ~/.lrk/rominfo.txtLANG=`ls ./SYS/ |grep "_Lang_....$" |rev |cut -c 1-4 |rev |sort -u`case $LANG in	"0409") LANG="$LANG - WWE English (United States)" ;;	"0804") LANG="$LANG - CHS Chinese Simplified" ;;	"0404") LANG="$LANG - CHT Chinese Traditional" ;;	"0405") LANG="$LANG - CSY Czech" ;;	"0406") LANG="$LANG - DAN Danish" ;;	"0413") LANG="$LANG - NLD Dutch" ;;	"0409") LANG="$LANG - USA English" ;;	"0407") LANG="$LANG - GER German" ;;	"0408") LANG="$LANG - ELL Greek" ;;	"040b") LANG="$LANG - FIN Finnish" ;;	"040c") LANG="$LANG - FRA French" ;;	"040e") LANG="$LANG - HUN Hungarian" ;;	"0410") LANG="$LANG - ITA Italian" ;;	"0411") LANG="$LANG - JPN Japanese" ;;	"0412") LANG="$LANG - KOR Korean" ;;	"0414") LANG="$LANG - NOR Norwegian" ;;	"0415") LANG="$LANG - PLK Polish" ;;	"0416") LANG="$LANG - PTB Portuguese Brazil" ;;	"0816") LANG="$LANG - PTG Portuguese Portugal" ;;	"0418") LANG="$LANG - ROM Romanian" ;;	"0419") LANG="$LANG - RUS Russian" ;;	"041b") LANG="$LANG - SKY Slovak" ;;	"0c0a") LANG="$LANG - ESN Spanish" ;;	"041d") LANG="$LANG - SVE Swedish" ;;	"041f") LANG="$LANG - TRK Turkish" ;;esacecho "  $LANG"  >> ~/.lrk/rominfo.txtecho >> ~/.lrk/rominfo.txtecho "[DPI]" >> ~/.lrk/rominfo.txtDPI=`ls ./SYS/ |grep DPI |grep -vi res |rev |cut -f 1 -d "_" |rev |sort -u`echo "  $DPI"  >> ~/.lrk/rominfo.txtecho "Cleaning up..."mv SYS ROM "$CURRENTDIR"cd "$CURRENTDIR"rm -rf ~/.lrk/Temp/ 2>/dev/null# convert initflashfiles to textINFF=`find ${CURRENTDIR}/SYS/OEM* -iname "initflashfiles.dat"`if [ -z $INFF ]; then	echo "ERROR: Initflashfiles not found"	exit 1fiiconv -f utf16 -t iso-8859-15 $INFF > ~/.lrk/initflashfiles.txtecho "Done!"

⌨️ 快捷键说明

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