253 lines
		
	
	
		
			8.6 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			253 lines
		
	
	
		
			8.6 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/bin/sh
 | |
| # Quick and dirty NAND init by Rajko
 | |
| # modified by rafpigna to add ext data mount
 | |
| # modified to increase speed and I/O
 | |
| # modified to support some configs on boot
 | |
| # 20 jan 2011
 | |
| # 
 | |
| # please if you use my work, send me a line
 | |
| # and write my name somewhere
 | |
| # v2 - 1 Feb 2011
 | |
| #
 | |
| # modified to add a2sd support from Dark Tremor
 | |
| # so that the phone doesn't boot loop and users 
 | |
| # can change on the fly
 | |
| # 22 Fen 2010 - arif-ali
 | |
| 
 | |
| fail() {
 | |
|     echo "Failed"
 | |
|     echo "$1"
 | |
|     exec /bin/sh
 | |
| }
 | |
| 
 | |
| exec_init() {
 | |
|     # cleanup
 | |
| 	umount /system
 | |
| 	umount /data
 | |
| 	sleep 1
 | |
| 	umount /bootsdcard
 | |
| 	rmdir /bootsdcard
 | |
|     # execute android init 
 | |
|     exec /init.android
 | |
| }
 | |
| 
 | |
| echo "Booting linux from NAND partitions"
 | |
| 
 | |
| mount -t proc proc /proc
 | |
| mount -t sysfs sys /sys
 | |
| mkdir -m 0777 /dev/block
 | |
| mknod -m 0666 /dev/block/mmcblk0 b 179 0
 | |
| mknod -m 0666 /dev/block/mmcblk0p1 b 179 1
 | |
| mknod -m 0666 /dev/block/mmcblk0p2 b 179 2
 | |
| # wait for sdcard
 | |
| while [ ! -b /dev/block/mmcblk0 ]; do
 | |
| 	sleep 1
 | |
| done
 | |
| sleep 2
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| #Configure Devices
 | |
| MAKEDEVS
 | |
| 
 | |
| PATH=/sbin:/bin:/system/sbin:/system/bin:/system/xbin:/system/xbin/bb:/data/local/bin
 | |
| 
 | |
| 
 | |
| echo "Mounting debugfs"
 | |
| mount -t debugfs none /dbgfs
 | |
| echo "Activating backlight control..."
 | |
| echo 3 > /sys/class/htc_hw/test
 | |
| echo "Enabling smooth scrolling..."
 | |
| echo 40 > /sys/devices/system/cpu/cpu0/cpufreq/ondemand/up_threshold
 | |
| echo "Activating full charging..."
 | |
| echo 2 > /dbgfs/htc_battery/charger_state
 | |
| echo 1024 > /dbgfs/micropklt_dbg/sleep_leds
 | |
| echo "+++++++ Tweaking MMC read-ahead by Rafpigna +++++++"
 | |
| mmcfolder="/sys/devices/platform/msm_sdcc.2/mmc_host/mmc1"
 | |
| cd $mmcfolder
 | |
| folderlist=`ls -1`
 | |
| mmcresult=`echo $folderlist | grep -o '\bmmc1:\w*' | sed 's/mmc1://'`
 | |
| echo 32 > /sys/devices/platform/msm_sdcc.2/mmc_host/mmc1/mmc1:$mmcresult/block/mmcblk0/queue/read_ahead_kb
 | |
| echo "+++++++ Auto-off keyled backlight by Rafpigna +++++++"
 | |
| echo 0 > /sys/devices/platform/btn_backlight_manager/auto_off
 | |
| 
 | |
| 
 | |
| ####################################################
 | |
| ###### configs  on boot ############################
 | |
| ###### idea by Dandiest, modified by me (rafpigna) #
 | |
| ####################################################
 | |
| 
 | |
| #first, mount sd card
 | |
| # assume single partition, if found partition 1 use that	
 | |
| echo "+++++++ STARTING UPDATE SCRIPT +++++++"
 | |
| echo "+++++++ MOUNTING SD CARD +++++++"
 | |
| sdcard_partition=mmcblk0
 | |
| [ -d /sys/block/mmcblk0/mmcblk0p1 ] && sdcard_partition=mmcblk0p1
 | |
| # run fsck
 | |
| # dosfsck -y /dev/block/$sdcard_partition
 | |
| # mount sdcard
 | |
| mkdir -m 0700 /bootsdcard
 | |
| mount -t vfat -o fmask=0111,dmask=0000,rw,utf8,noatime,nodiratime /dev/block/$sdcard_partition /bootsdcard || bootsdcard=0
 | |
| sleep 1
 | |
| if [ $bootsdcard -eq 0 ]; then
 | |
|     # cleanup
 | |
|     rmdir /bootsdcard
 | |
|     rm -f /dev/block/mmcblk0
 | |
|     rm -f /dev/block/mmcblk0p1
 | |
|     rm -f /dev/block/mmcblk0p2
 | |
|     # run init
 | |
|     exec_init
 | |
| fi
 | |
| 
 | |
| # prepare
 | |
| data_dir=/bootsdcard
 | |
| init_log=/bootsdcard/init.log
 | |
| update_dir=/bootsdcard/updates
 | |
| 
 | |
| # clear previous init.log
 | |
| if [ -f $init_log ]; then
 | |
|     rm -f $init_log
 | |
| fi
 | |
| 
 | |
|   echo "+++++++ READING CONFIG FILE +++++++"
 | |
| # read config file
 | |
| config_file=$data_dir/config.txt
 | |
| if [ -f $config_file ]; then
 | |
|     config=`awk -v RS='\r\n' -v ORS=' ' 1 $config_file`
 | |
|     gps_zone=`echo $config | grep -o '\bgps_zone=\w*' | sed 's/gps_zone=//'`
 | |
|     ppp_mode=`echo $config | grep -o '\bppp_mode=\w*' | sed 's/ppp_mode=//'`
 | |
|     sd_boost=`echo $config | grep -o '\bsd_boost=\w*' | sed 's/sd_boost=//'`
 | |
|     a2sd_mode=`echo $config | grep -o '\ba2sd_mode=\w*' | sed 's/a2sd_mode=//'`
 | |
| fi
 | |
| 
 | |
| #write the values to logfile to have possibility to check if they are right
 | |
|   echo "gps_zone" >> $init_log
 | |
|   echo $gps_zone >> $init_log
 | |
|   echo "ppp_mode" >> $init_log
 | |
|   echo $ppp_mode >> $init_log
 | |
|   echo "sd_boost" >> $init_log
 | |
|   echo $sd_boost >> $init_log
 | |
|   echo "a2sd_mode" >> $init_log
 | |
|   echo $a2sd_mode >> $init_log
 | |
| 
 | |
| 
 | |
| # load default value
 | |
| [ -z $ppp_mode ] && ppp_mode=0
 | |
| [ -z $sd_boost ] && sd_boost=0
 | |
| [ -z $a2sd_mode ] && a2sd_mode="dalvik"
 | |
| [ -z $gps_zone ] && gps_zone="us"
 | |
| 
 | |
|   echo "+++++++ MOUNTING MTD SYSTEM +++++++"
 | |
| # define partitions
 | |
| system_partition=`grep system /proc/mtd | cut -d: -f1 | sed 's/mtd/mtdblock/'`
 | |
| mount -t yaffs2 -o rw /dev/block/$system_partition /system >> $init_log
 | |
| data_partition=`grep userdata /proc/mtd | cut -d: -f1 | sed 's/mtd/mtdblock/'`
 | |
| mount -t yaffs2 -o rw /dev/block/$data_partition /data >> $init_log
 | |
|   echo "+++++++ MOUNTED MTD SYSTEM +++++++" >> $init_log
 | |
| 
 | |
| 
 | |
| #20 jan 2011
 | |
| #ext3 can be mounted as ext4 with that option improving performances without major drawbacks
 | |
| #reference: https://wiki.archlinux.org/index.php/Ext4#Mounting_ext3_Partitions_as_ext4_Without_Converting
 | |
| 
 | |
| #if second partition exists, mount it as data. if not exists, uncomment line in init.rc to mount data on yaffs
 | |
| #also init.rc must be changed to mount /data on nand userdata if ext partition does not exists
 | |
| if [ -d /sys/block/mmcblk0/mmcblk0p2 ] ; then
 | |
|     echo "Ext partition found. Mounting data on EXT"
 | |
|     echo "Ext partition found. Mounting data on EXT" >> $init_log
 | |
| 
 | |
|     # Added by arif-ali
 | |
|     # set a2sd mode
 | |
|     if [ "$a2sd_mode" == "a2sd" ]; then
 | |
| 	echo "+++++++ a2sd ACTVATED +++++++" >> $init_log
 | |
| 	echo "+++++++ a2sd ACTVATED +++++++"
 | |
| 	rm -rf /data/.noa2sd
 | |
|         rm -rf /data/.dalvikcache
 | |
|     elif [ "$a2sd_mode" == "dalvik" ]; then
 | |
| 	echo "+++++++ dalvik a2sd ACTVATED +++++++" >> $init_log
 | |
| 	echo "+++++++ dalvik a2sd ACTVATED +++++++"
 | |
|         rm -rf /data/.noa2sd
 | |
| 	touch /data/.dalvikcache
 | |
|     elif [ "$a2sd_mode" == "data" ]; then
 | |
|   	echo "+++++++ data a2sd ACTVATED +++++++" >> $init_log
 | |
| 	echo "+++++++ data a2sd ACTVATED +++++++"
 | |
|         rm -rf /data/.noa2sd
 | |
| 	touch /data/.dalvikcache
 | |
| 	touch /data/.datasd
 | |
|     elif [ "$a2sd_mode" == "none" ]; then
 | |
|         touch /data/.noa2sd
 | |
|   	echo "+++++++ a2sd DEACTVATED - running from NAND +++++++" >> $init_log
 | |
| 	echo "+++++++ a2sd DEACTVATED - running from NAND +++++++"
 | |
|     else
 | |
|         echo "+++++++ Default a2sd ACTVATED +++++++" >> $init_log
 | |
|         echo "+++++++ Default a2sd ACTVATED +++++++"
 | |
|         rm -rf /data/.noa2sd
 | |
|         rm -rf /data/.datasd
 | |
|         touch /data/.dalvikcache
 | |
|     fi
 | |
| 
 | |
|     # Added by rafpigna
 | |
| #    if [ $sd_boost -eq 1 ] ; then
 | |
| #	echo "+++++++ SD BOOST ACTIVE +++++++"
 | |
| #	echo "+++++++ SD BOOST ACTIVE +++++++" >> $init_log
 | |
| #	/bin/tune2fs -O ^has_journal /dev/block/mmcblk0p2 >> $init_log
 | |
| #	e2fsck -y -v -f /dev/block/mmcblk0p2 >> $init_log
 | |
| #	/bin/tune2fs -O ^huge_file /dev/block/mmcblk0p2	>> $init_log
 | |
| #	e2fsck -y -v -f /dev/block/mmcblk0p2 >> $init_log
 | |
| #	/bin/tune2fs -l /dev/block/mmcblk0p2 >> $init_log
 | |
| #    else
 | |
| #	echo "+++++++ SD BOOST NOT ACTIVE +++++++"
 | |
| #	echo "+++++++ SD BOOST NOT ACTIVE +++++++" >> $init_log
 | |
| #	/bin/tune2fs -O has_journal /dev/block/mmcblk0p2 >> $init_log 
 | |
| #	e2fsck -y -v -f /dev/block/mmcblk0p2 >> $init_log
 | |
| #	/bin/tune2fs -O huge_file /dev/block/mmcblk0p2	>> $init_log
 | |
| #	e2fsck -y -v -f /dev/block/mmcblk0p2 >> $init_log
 | |
| #	/bin/tune2fs -l /dev/block/mmcblk0p2 >> $init_log
 | |
| #    fi
 | |
| 
 | |
|     echo "+++++++ MOUNTED DATA ON EXT +++++++"
 | |
|     echo "+++++++ MOUNTED DATA ON EXT +++++++" >> $init_log
 | |
| else
 | |
|     echo "Ext partition not found. disabling a2sd"
 | |
|     echo "Ext partition not found. disabling a2sd" >> $init_log
 | |
|     sed -i 's|#mount yaffs2 mtd@userdata /data nosuid nodev noatime nodiratime|mount yaffs2 mtd@userdata /data nosuid nodev noatime nodiratime|' /init.rc
 | |
|     echo "+++++++ MOUNTED DATA ON NAND +++++++" >> $init_log
 | |
|     echo "+++++++ MOUNTED DATA ON NAND +++++++"
 | |
| fi
 | |
| 
 | |
| # set gps zone
 | |
| if [ "$gps_zone" != "" ]; then
 | |
|     current_gps_zone=`awk -F"=" '/NTP_SERVER/ {print $2}' /system/etc/gps.conf`
 | |
|     [ "$gps_zone.pool.ntp.org" != "$current_gps_zone" ] && sed -i "s/$current_gps_zone/$gps_zone.pool.ntp.org/g" /system/etc/gps.conf
 | |
|     echo "+++++++ GPS ZONE CHANGED +++++++" >> $init_log
 | |
|     echo "+++++++ GPS ZONE CHANGED +++++++"
 | |
| fi
 | |
| 
 | |
| # set ppp or rmnet
 | |
| if [ $ppp_mode -eq 1 ] ; then
 | |
|   sed -i 's/nand_init .*/nand_init /' /init.rc 
 | |
|   #sed -i 's|insmod /system/lib/modules/msm_rmnet.ko|#insmod /system/lib/modules/msm_rmnet.ko|' /system/etc/init.d/01modules
 | |
|   touch /system/ppp
 | |
|   echo "+++++++ PPP MODE ACTIVATED +++++++" >> $init_log
 | |
|   echo "+++++++ PPP MODE ACTIVATED +++++++"
 | |
| else
 | |
|   sed -i 's/nand_init .*/nand_init rmnet_mode /' /init.rc
 | |
|   #sed -i 's|#insmod /system/lib/modules/msm_rmnet.ko|insmod /system/lib/modules/msm_rmnet.ko|' /system/etc/init.d/01modules    
 | |
| echo "+++++++ RMNET MODE ACTIVATED +++++++"
 | |
| echo "+++++++ RMNET MODE ACTIVATED +++++++" >> $init_log
 | |
|   rm -rf /system/ppp
 | |
| fi
 | |
| 
 | |
| ####################################################
 | |
| ###### configs  on boot ############################
 | |
| ###### idea by Dandiest, modified by me (rafpigna) #
 | |
| ####################################################
 | |
| ###################### END #########################
 | |
| 
 | |
| ######################################################
 | |
| # boot into Android
 | |
| # init shell finally done
 | |
| ######################################################
 | |
| exec_init
 |