Share Pastebin
Guest
Public paste!

Woz

By: a guest | Sep 4th, 2010 | Syntax: None | Size: 17.43 KB | Hits: 51 | Expires: Never
Copy text to clipboard
  1. #!/bin/sh
  2. fail() {
  3.     /bin/echo "Failed"
  4.     /bin/echo "$1"
  5.     /bin/sync
  6.     exec /bin/sh
  7. }
  8.  
  9. #Configure Devices
  10. MAKEDEVS
  11.  
  12. mkdir -m 0755 /sys
  13. mount -t sysfs sys /sys
  14.  
  15. while [ ! -d /sys/block/mmcblk0 ] ; do
  16.     echo "Waiting for SD Card"
  17.     sleep 1
  18. done
  19.  
  20. #echo "Waiting for everything to init"
  21. #sleep 10
  22. /bin/mkdir -m 0777 /sdcard
  23. /bin/mount -t vfat -o fmask=0000,dmask=0000,utf8,rw,flush,noatime,nodiratime /dev/block/mmcblk0p1 /sdcard
  24.  
  25.     if [ -e /sdcard/androidinstall.tar.gz ] ; then
  26.         /bin/dosfsck -y /dev/block/mmcblk0p1 2>&1 1>/bootlog.txt
  27.  
  28.  
  29.         chmod 0755 /system
  30.         mkdir -m 0755 /data
  31.         chown 1000:1000 /data
  32.         mkdir -m 0755 /tmp
  33.  
  34.         sleep 1
  35.  
  36.         clear
  37.         echo
  38.         echo
  39.         echo
  40.         echo "S T A R T I N G   I N S T A L L... "
  41.         echo "+++++++++++++++++++++++++++++++++++"
  42.         sleep 1
  43.         echo
  44.         echo "Please be patient now! "
  45.         echo "First Formatting your pre-built EXT2-Partition"
  46.         echo "and mounting it..."
  47.         sleep 1
  48.         [ ! -d /sdcard/install ] || /bin/mkdir -m 0777 /sdcard/install
  49.         /bin/mke2fs -F /dev/block/mmcblk0p2 > /dev/null
  50.         mount -t ext2 /dev/block/mmcblk0p2 /sdcard/install
  51.         [ $? -eq 0 ] || fail "Failed to format"        
  52.    
  53.         clear
  54.         echo
  55.         echo
  56.         echo "Now extracting androidinstall.tar.gz "
  57.         echo "to fresh formatted EXT2-Partition..."
  58.         echo
  59.         echo
  60.         tar -xvzf /sdcard/androidinstall.tar.gz -C /sdcard/install
  61.         [ $? -eq 0 ] || fail "Failed to extract"
  62.         mv /sdcard/androidinstall.tar.gz /sdcard/androidinstall.tar.gz.installed        
  63.         umount /sdcard/install
  64.         #umount /
  65.         sleep 1
  66.     fi
  67.  umount /sdcard
  68. sleep 1
  69.  
  70. mkdir -m 0755 /afs
  71. echo mount -t ext2 rw /dev/block/mmcblk0p2 /
  72. mount -t ext2 /dev/block/mmcblk0p2 /afs
  73. sleep 1
  74. exec switch_root /afs /init
  75.  
  76. PATH=/sbin:/system/sbin:/bin:/system/bin:/system/xbin:/system/xbin/bb:/data/local/bin
  77.  
  78. /bin/echo "Rootfs loaded."
  79.  
  80. /bin/mount -t proc proc /proc
  81. /bin/mount -t sysfs sys /sys
  82.  
  83.  
  84. partition=mmcblk0p1
  85.  
  86. # Try unpartitioned card
  87. if [ ! -d /sys/block/mmcblk0/$partition ] ; then
  88.         partition=mmcblk0
  89. fi
  90.  
  91. if [ -f /sys/class/vogue_hw/gsmphone ] ; then
  92.         echo "GSM phone found"
  93. fi
  94.  
  95. #mkdir -m 0777 /sdcard
  96. #fsck already done in initrd
  97. mount -t vfat -o fmask=0000,dmask=0000,utf8,rw,flush,noatime,nodiratime /dev/block/$partition /sdcard
  98. [ $? -eq 0 ] || echo "Failed to mount the SD card."
  99.  
  100.  
  101. if [ -d /sdcard/AndroidApps ] ; then
  102.         echo Copying Applications
  103.         if [ ! -d /data/app ] ; then
  104.                 mkdir -m 0771 /data/app
  105.         fi
  106.         /bin/cp /sdcard/AndroidApps/* /data/app
  107.         chown -R 1000:1000 /data/app
  108. fi
  109.  
  110. if [ ! -d /media ] ; then
  111.         echo You have no media folder, please extract the resources to "/media" folder
  112. fi
  113.  
  114.         /bin/rm -rf /data/etc
  115.         /bin/mkdir -m 0755 /data/etc
  116.         /bin/mkdir -p -m 0700 /data/mnt/secure
  117.         /bin/mkdir -p -m 0700 /data/mnt/asec
  118.         mount --bind /data/mnt/secure /mnt/secure
  119.         mount --bind /data/mnt/asec /mnt/asec
  120.         mount /data/etc /etc
  121.         cp -a /system/etc/* /etc
  122.         cp -ar /init.etc/* /etc/
  123. dmesg > /sdcard/log.txt
  124.  
  125. LCDDENSITY=`/bin/grep -o "lcd.density=.*" /proc/cmdline | /bin/sed -e "s/.*lcd.density=//g" -e "s/ .*//g"`
  126.  
  127. if [ "$LCDDENSITY" != "" ] ; then
  128.         echo "ro.sf.lcd_density=$LCDDENSITY" >> /etc/default.prop
  129.         echo Setting ro.sf.lcd_density=$LCDDENSITY
  130. fi
  131.  
  132. if [ ! -d /shared_prefs ] ; then
  133.         mkdir -m 0770 /shared_prefs
  134. fi
  135. chmod 0770 /shared_prefs
  136. chown 1000:1000 /shared_prefs
  137.  
  138. cp /system/build.prop /tmp/build.prop
  139. KAISER=0
  140. DIAMOND=0
  141. WIFI_TI=0
  142. WIFI_BCM=0
  143. XPERIA=0
  144. ### Is this a Kaiser?
  145. if cat /proc/cpuinfo|grep -q Kaiser ; then
  146.         echo "KAISER detected"
  147.         KAISER=1
  148.         WIFI_TI=1
  149. elif cat /proc/cpuinfo|grep -q Polaris ; then
  150.         echo "POLARIS detected"
  151.         KAISER=1
  152.         WIFI_TI=1
  153. elif cat /proc/cpuinfo|grep -q Diamond ; then
  154.         echo "DIAMOND detected"
  155.         DIAMOND=1
  156.         WIFI_TI=1
  157. elif cat /proc/cpuinfo|grep -q Raphael ; then
  158.         echo "RAPHAEL detected"
  159.         DIAMOND=1
  160.         WIFI_TI=1
  161. elif cat /proc/cpuinfo|grep -q blackstone ; then
  162.         echo "BLACKSTONE detected"
  163.         DIAMOND=1
  164.         WIFI_TI=1
  165. elif cat /proc/cpuinfo|grep -q Topaz ; then
  166.         echo "TOPAZ detected"
  167.         DIAMOND=1
  168.         WIFI_TI=1
  169. elif cat /proc/cpuinfo|grep -q Kovsky ; then
  170.         echo "XPERIA detected"
  171.         XPERIA=1
  172.         WIFI_TI=1
  173. elif cat /proc/cpuinfo|grep -q Rhodium ; then
  174.         echo "RHODIUM detected"
  175.         DIAMOND=1
  176.         WIFI_BCM=1
  177. else
  178.         echo "VOGUE detected"
  179.         sed -i s/^wifi/#wifi/ /tmp/build.prop
  180. fi
  181.  
  182.  
  183.  
  184. ### Fix su on some builds...
  185. mount --bind /bin/su /system/bin/su 2> /dev/null
  186. mount --bind /bin/su /system/xbin/su 2> /dev/null
  187. mount --bind /tmp/build.prop /system/build.prop
  188.  
  189. RCSCRIPT=""
  190. RCCONFIG=""
  191.  
  192. echo "Checking for build type..."
  193. if [ -f /system/hero.build ] ; then
  194.         echo "Hero build detected"
  195.         RCSCRIPT="hero"
  196.         RCCONFIG="hero"
  197.         ln /data/app_s /system/app
  198.  
  199. elif [ -f /system/eclairhero.build ] ; then
  200.         echo "HERO 2.1 BUILD DETECTED -- ECLAIR"
  201.         RCSCRIPT="eclairhero"
  202.         RCCONFIG="eclairhero"
  203.         mount --bind /lib/eclair/hw /system/lib/hw
  204.  
  205. elif [ -f /system/eclair.build ] ; then
  206.         echo "Eclair build detected"
  207.         RCSCRIPT="eclair"
  208.         RCCONFIG="eclair"
  209.         mount --bind /lib/eclair/hw /system/lib/hw
  210.  
  211. elif [ -f /system/froyo.build ] ; then
  212.         echo "Froyo build detected"
  213.         RCSCRIPT="froyo"
  214.         RCCONFIG="froyo"
  215.         mount --bind /lib/froyo/hw /system/lib/hw
  216.  
  217.         # vold: Fix sdcard device location for CDMA boards (thanks paalsteek)
  218.         if [ -d /sys/devices/platform/msm_sdcc.3 ]; then
  219.                 /bin/sed -i -e 's:/devices/platform/msm_sdcc\.2:/devices/platform/msm_sdcc.3:g' /etc/vold.fstab
  220.         fi
  221.  
  222. elif [ -f /system/tattoo.build ] ; then
  223.         echo "Tattoo build detected"
  224.         RCSCRIPT="tattoo"
  225.         RCCONFIG="tattoo"
  226.  
  227. elif [ -f /system/donut.build ] ; then
  228.         echo "Donut build detected"
  229.         RCSCRIPT="donut"
  230.         RCCONFIG="donut"
  231.         mount --bind /lib/donut/hw /system/lib/hw
  232.  
  233. elif [ -d /system/lib/donut ] ; then
  234.         echo "Donut build detected"
  235.         RCSCRIPT="donut"
  236.         RCCONFIG="donut"
  237.  
  238. elif [ -f /system/xrom.build ] ; then
  239.         echo "xROM build detected"
  240.         RCSCRIPT="xrom"
  241.         RCCONFIG="xrom"
  242.  
  243. elif [ -f /system/rogers.build ] ; then
  244.         echo "Rogers build detected"
  245.         RCSCRIPT="rogers"
  246.         RCCONFIG="rogers"
  247.  
  248. elif [ -f /system/cyanogen.build ] ; then
  249.         echo "cyanogen experimental detected.....eating donuts"
  250.         RCSCRIPT="cyanogen"
  251.         RCCONFIG="cyanogen"
  252.  
  253. elif [ -f /system/custom.build ] ; then
  254.         echo "Custom init.rc detected"
  255.         cp /system/sysinit.rc /build.cfg/init.sysinit.rc
  256.         RCCONFIG="hero"
  257.         RCSCRIPT="sysinit"
  258.        
  259. else
  260.         echo "Unknown Android build. Assuming Ion variant"
  261.         RCSCRIPT="ion"
  262.         RCCONFIG="ion"
  263.  
  264.         # for the fake sensors library
  265.         mount /lib/hw /system/lib/hw -o loop
  266.         chmod 666 /dev/input/event0
  267.  
  268.         if [ $DIAMOND -eq 1 ] ; then
  269.                 RCCONFIG="ion.diamond"
  270.         fi
  271. fi
  272.  
  273. if [ $KAISER -eq 1 ] ; then
  274.         RCSCRIPT="$RCSCRIPT.kaiser"
  275. fi
  276.  
  277. if [ $XPERIA -eq 1 ] ; then
  278.         echo "ro.sf.hwrotation=180" >> /etc/default.prop
  279. fi
  280. echo "using /init.$RCSCRIPT.rc as init.rc"
  281. echo "using $card/conf/$RCCONFIG.user.conf"
  282.  
  283. cp "/init.cfg/init.$RCSCRIPT.rc" /etc/init.rc
  284.  
  285. #Assume this rootfs.img will be used only on "good" devices
  286. #Meaning raph/diam/blac/
  287.  
  288. # echo /dev/block/mmcblk0p2 > /sys/devices/platform/usb_mass_storage/lun0/file
  289. ifconfig usb0 192.168.20.1 up
  290. busybox telnetd -b 192.168.20.1 -l /bin/sh
  291. #chmod 4755 /bin/su
  292. #mkdir -m 0777 /smodem
  293. mknod /dev/urandom c 1 9
  294. if [ -d /dropbear/ ] ; then
  295.         echo "Starting SSH"
  296.         mknod /dev/random c 1 8
  297.        
  298.         /bin/dropbear -r /dropbear/dropbear_rsa_host_key -s
  299. fi
  300.  
  301. if [ "$WIFI_TI" = "1" ] || [ "$WIFI_BCM" = "1" ];then
  302.         if [ -e "/sdcard/modules-$(uname -r).tar.gz" ] && ! `strings /data/modules/wlan.ko 2>/dev/null | grep -q "vermagic=$(uname -r)"`; then
  303.                 echo "Installing /sdcard/modules-$(uname -r).tar.gz"
  304.                 if [ ! -d "/data/modules" ] ; then
  305.                         mkdir /data/modules
  306.                 fi
  307.                 tar xzf /sdcard/modules-$(uname -r).tar.gz -C /data/modules
  308.                 ln -s /data/modules /data/modules/`uname -r`
  309.  
  310.                 [ -f /etc/wifi/wlan.ko ] && rm /etc/wifi/wlan.ko
  311.                 cp -R /etc/wifi/* /data/modules/
  312.                 depmod
  313.         else
  314.                 echo "Modules already unpacked for this kernel version -- skipping installation of /sdcard/modules-$(uname -r).tar.gz"
  315.         fi
  316.         mount --bind /data/modules /lib/modules
  317.         mount --bind /data/modules /system/lib/modules
  318.         sed -i s/^#wifi/wifi/ /tmp/build.prop
  319. fi
  320.  
  321. if [ -f /system/eclair.build ]
  322. then
  323.         mount --bind /lib/eclair/libhardware_legacy.so /system/lib/libhardware_legacy.so
  324. elif [ -f /system/froyo.build ]
  325. then
  326.         mount --bind /lib/froyo/libhardware_legacy.so /system/lib/libhardware_legacy.so
  327. fi
  328.  
  329. if [ "$WIFI_TI" = "1" ];then
  330.         if [ "`grep -c ^wifi /tmp/build.prop`" != "2" ]; then
  331.                 echo "wifi.interface = tiwlan0" >> /tmp/build.prop
  332.                 echo "wifi.supplicant_scan_interval = 120" >> /tmp/build.prop
  333.         fi
  334. fi
  335.  
  336. if [ "$WIFI_BCM" = "1" ] ;then
  337.         if [ "`grep -c ^wifi /tmp/build.prop`" != "2" ]; then
  338.                 echo "wifi.interface = eth0" >> /tmp/build.prop
  339.                 echo "wifi.supplicant_scan_interval = 120" >> /tmp/build.prop
  340.         fi
  341.  
  342.         # fyi: firmware is loaded from /etc/wifi/bcm432x/bcm4325-rtecdc.bin, nvram from /data/wifi-nvram.txt
  343.  
  344.         mount --bind /etc/wifi/bcm432x/dhcpcd.conf /system/etc/dhcpcd/dhcpcd.conf
  345.         mount --bind /etc/wifi/bcm432x/wpa_supplicant.conf /system/etc/wifi/wpa_supplicant.conf
  346.  
  347.         # init.rc: fix wpa_supplicant service
  348.         sed -i s/-itiwlan0/-ieth0/ /etc/init.rc
  349.         sed -i s/-Dtiwlan0/-Dwext/ /etc/init.rc
  350.  
  351.         # init.rc: fix dhcpcd service, wifi.interface, and wpa_supplicant service socket
  352.         sed -i s/tiwlan0/eth0/ /etc/init.rc
  353.  
  354.         # init.rc:
  355.         sed -i s/user\ wifi/#user\ wifi/ /etc/init.rc
  356.         sed -i s/group\ wifi/#group\ wifi/ /etc/init.rc
  357.  
  358.         # extract nvram (todo: clean this up/integrate with TI calibration)
  359.         if [ ! -e /data/wifi-nvram.txt ]; then
  360.                 for SKIP in 5744 4736;do
  361.                         insmod /lib/modules/mtdchar.ko
  362.                         mknod /dev/mtd0ro c 90 1
  363.                         mkdir /lib/modules/$(uname -r)
  364.  
  365.                         dd if=/dev/mtd0ro of=/tmp/tempcal bs=8192 count=1 skip=$SKIP
  366.                         rm /dev/mtd0ro
  367.                         rmmod mtdchar
  368.                         rmdir /lib/modules/$(uname -r)
  369.                         dd if=/tmp/tempcal of=/data/wifi-nvram.txt bs=1 count=466
  370.                         rm /tmp/tempcal
  371.                
  372.                         if grep nocrc= /data/wifi-nvram.txt 2>&1 > /dev/null;then
  373.                                 break
  374.                         fi;
  375.                 done
  376.                 if [ "$SKIP" = "5744" ];then
  377.                         echo "CDMA Rhodium detected"
  378.                 fi;
  379.                 if [ "$SKIP" = "4736" ];then
  380.                         echo "GSM Rhodium detected"
  381.                 fi;
  382.  
  383.         fi
  384. fi
  385.  
  386.  
  387. if [ -f "/conf/$RCCONFIG.user.conf" ]; then
  388.         /bin/userinit.sh -c "/conf/$RCCONFIG.user.conf"
  389. else
  390.         echo "No user config files ($RCCONFIG) found on sdcard"
  391. fi
  392.  
  393. mount -tdebugfs none /dbgfs
  394. #Activate baclight control
  395. echo 3 > /sys/class/htc_hw/test
  396. #Smooth scroll
  397. echo 40 >/sys/devices/system/cpu/cpu0/cpufreq/ondemand/up_threshold
  398. #Activate full charging
  399. echo 2 > /dbgfs/htc_battery/charger_state
  400.  
  401. echo 1024 > /dbgfs/micropklt_dbg/sleep_leds
  402.  
  403. if /bin/grep -c 'physkeyboard=fuze' /proc/cmdline >/dev/null ; then
  404.         echo "USING RAPH110|FUZE LAYOUT"
  405.         cp -f /init.etc/keymaps/fuze_microp-keypad.kcm.bin /etc/keymaps/microp-keypad.kcm.bin
  406.         cp -f /init.etc/keymaps/fuze_microp-keypad.kl /etc/keymaps/microp-keypad.kl
  407.         cp -f /init.etc/keymaps/fuze_raph_navi_pad.kl /etc/keymaps/raph_navi_pad.kl
  408. elif /bin/grep -c 'physkeyboard=raph' /proc/cmdline >/dev/null ; then
  409.         echo "USING NEW RAPH LAYOUT"
  410.         cp -f /init.etc/keymaps/raphfix_microp-keypad.kcm.bin /etc/keymaps/microp-keypad.kcm.bin
  411. elif /bin/grep -c 'physkeyboard=nordic_raph' /proc/cmdline >/dev/null ; then
  412.         echo "USING NEW NORDIC RAPH LAYOUT"
  413.         cp -f /init.etc/keymaps/raphfix_microp-keypad-swedish.kcm.bin /etc/keymaps/microp-keypad.kcm.bin
  414. elif /bin/grep -c 'physkeyboard=tilt2' /proc/cmdline >/dev/null ; then
  415.         echo "USING EXPERIMENTAL TILT2 LAYOUT"
  416.         cp -f /init.etc/keymaps/tilt2_microp-keypad.kl /etc/keymaps/microp-keypad.kl
  417.         cp -f /init.etc/keymaps/tilt2_microp-keypad.kcm.bin /etc/keymaps/microp-keypad.kcm.bin
  418.         cp -f /init.etc/keymaps/tilt2_navi_pad.kl /etc/keymaps/raph_navi_pad.kl
  419. elif /bin/grep -c 'physkeyboard=rhod210' /proc/cmdline >/dev/null ; then
  420.         echo "USING EXPERIMENTAL RHOD210 LAYOUT"
  421.         cp -f /init.etc/keymaps/rhod210_microp-keypad.kl /etc/keymaps/microp-keypad.kl
  422.         cp -f /init.etc/keymaps/rhod210_microp-keypad.kcm.bin /etc/keymaps/microp-keypad.kcm.bin
  423.         cp -f /init.etc/keymaps/rhod210_navi_pad.kl /etc/keymaps/raph_navi_pad.kl
  424. elif /bin/grep -c 'physkeyboard=rhod100_de' /proc/cmdline >/dev/null ; then
  425.         echo "USING RHOD100 DE LAYOUT"
  426.         cp -f /init.etc/keymaps/rhod100_de_microp-keypad.kl /etc/keymaps/microp-keypad.kl
  427.         cp -f /init.etc/keymaps/rhod100_de_microp-keypad.kcm.bin /etc/keymaps/microp-keypad.kcm.bin
  428.         cp -f /init.etc/keymaps/rhod100_de_navi_pad.kl /etc/keymaps/raph_navi_pad.kl
  429. elif /bin/grep -c 'physkeyboard=rhod100_fr' /proc/cmdline >/dev/null ; then
  430.         echo "USING RHOD100 FR LAYOUT"
  431.         cp -f /init.etc/keymaps/rhod100_fr_microp-keypad.kl /etc/keymaps/microp-keypad.kl
  432.         cp -f /init.etc/keymaps/rhod100_fr_microp-keypad.kcm.bin /etc/keymaps/microp-keypad.kcm.bin
  433.         cp -f /init.etc/keymaps/rhod100_fr_navi_pad.kl /etc/keymaps/raph_navi_pad.kl
  434. elif /bin/grep -c 'physkeyboard=rhod100_it' /proc/cmdline >/dev/null ; then
  435.         echo "USING RHOD100 IT LAYOUT"
  436.         cp -f /init.etc/keymaps/rhod100_it_microp-keypad.kl /etc/keymaps/microp-keypad.kl
  437.         cp -f /init.etc/keymaps/rhod100_it_microp-keypad.kcm.bin /etc/keymaps/microp-keypad.kcm.bin
  438.         cp -f /init.etc/keymaps/rhod100_it_navi_pad.kl /etc/keymaps/raph_navi_pad.kl
  439. elif /bin/grep -c 'physkeyboard=rhod100_uk' /proc/cmdline >/dev/null ; then
  440.         echo "USING RHOD100 UK LAYOUT"
  441.         cp -f /init.etc/keymaps/rhod100_uk_microp-keypad.kl /etc/keymaps/microp-keypad.kl
  442.         cp -f /init.etc/keymaps/rhod100_uk_microp-keypad.kcm.bin /etc/keymaps/microp-keypad.kcm.bin
  443.         cp -f /init.etc/keymaps/rhod100_uk_navi_pad.kl /etc/keymaps/raph_navi_pad.kl
  444. elif /bin/grep -c 'physkeyboard=rhod100_nordic' /proc/cmdline >/dev/null ; then
  445.         echo "USING RHOD100 NORDIC LAYOUT"
  446.         cp -f /init.etc/keymaps/rhod100_nordic_microp-keypad.kl /etc/keymaps/microp-keypad.kl
  447.         cp -f /init.etc/keymaps/rhod100_nordic_microp-keypad.kcm.bin /etc/keymaps/microp-keypad.kcm.bin
  448.         cp -f /init.etc/keymaps/rhod100_nordic_navi_pad.kl /etc/keymaps/raph_navi_pad.kl
  449. elif /bin/grep -c 'physkeyboard=rhod400' /proc/cmdline >/dev/null ; then
  450.         echo "USING EXPERIMENTAL RHOD400 LAYOUT"
  451.         cp -f /init.etc/keymaps/rhod400_microp-keypad.kl /etc/keymaps/microp-keypad.kl
  452.         cp -f /init.etc/keymaps/rhod400_microp-keypad.kcm.bin /etc/keymaps/microp-keypad.kcm.bin
  453.         cp -f /init.etc/keymaps/rhod400_navi_pad.kl /etc/keymaps/raph_navi_pad.kl #does not exist, just following example
  454. elif /bin/grep -c 'physkeyboard=rhod500' /proc/cmdline >/dev/null ; then
  455.         echo "USING EXPERIMENTAL RHOD500 LAYOUT"
  456.         cp -f /init.etc/keymaps/rhod500_microp-keypad.kl /etc/keymaps/microp-keypad.kl
  457.         cp -f /init.etc/keymaps/rhod500_microp-keypad.kcm.bin /etc/keymaps/microp-keypad.kcm.bin
  458.         cp -f /init.etc/keymaps/rhod500_navi_pad.kl /etc/keymaps/raph_navi_pad.kl #does not exist, just following example
  459. elif /bin/grep -c 'physkeyboard=kovsq' /proc/cmdline >/dev/null ; then
  460.         echo "USING KOVSKY QWERTY LAYOUT"
  461.         cp -f /init.etc/keymaps/kovsky-qwerty.kl /etc/keymaps/microp-keypad.kl
  462.         cp -f /init.etc/keymaps/kovsky-qwerty.kcm.bin /etc/keymaps/microp-keypad.kcm.bin
  463. elif /bin/grep -c 'physkeyboard=kovsa' /proc/cmdline >/dev/null; then
  464.         echo "USING KOVSKY AZERTY LAYOUT"
  465.         cp -f /init.etc/keymaps/kovsky-azerty.kl /etc/keymaps/microp-keypad.kl
  466.         cp -f /init.etc/keymaps/kovsky-azerty.kcm.bin /etc/keymaps/microp-keypad.kcm.bin
  467. else
  468.         echo "USING OLD KEYMAP"
  469.         cp -f /init.etc/keymaps/oldqwerty_microp-keypad.kcm.bin /etc/keymaps/microp-keypad.kcm.bin
  470.         cp -f /init.etc/keymaps/oldqwerty_microp-keypad.kl /etc/keymaps/microp-keypad.kl
  471.         cp -f /init.etc/keymaps/oldqwerty_raph_navi_pad.kl /etc/keymaps/raph_navi_pad.kl
  472. fi
  473.  
  474. cp -af /init.etc/keymaps/qwerty.kcm.bin /init.etc/keymaps/qwerty.kl /etc/keymaps/
  475. mount --bind /etc/keymaps /system/usr/keychars
  476. mount --bind /etc/keymaps /system/usr/keylayout
  477.  
  478. for i in /sys/class/input/input* ; do
  479.         if [ "`cat $i/name`" = "tssc-manager" ] ; then
  480.                 touchscreendir=$i
  481.                 echo "Touchscreen device directory is $i"
  482.         fi
  483. done
  484.  
  485. if [ -f /sdcard/ts-calibration ] ; then
  486.         echo "Using Saved Touchscreen Calibration"
  487.         echo 128,128,1903,128,128,1907,1903,1907,1024,1024 > $touchscreendir/calibration_screen
  488.         cat /sdcard/ts-calibration > $touchscreendir/calibration_points
  489. else
  490.         mkdir /dev/graphics
  491.         mknod /dev/graphics/fb0 c 29 0
  492.         clear
  493.         echo; echo; echo; echo; echo; echo; echo; echo "Calibrating Touchscreen:"
  494.         echo "Click the Five Targets in order -- Top Left, Top Right, Middle, Bottom Left, Bottom Right"
  495.         echo "(Tap lightly. The screen is quite sensitive.)"
  496.         tssc-calibrate
  497.         echo 0,0,0,0,0,0,0,0,0,0 | cmp -s $touchscreendir/calibration_points # determine if calibration is still null -- means failed calibration
  498.         if [ $? -eq 0 ] ; then
  499.                 echo "Touchscreen Calibration Failed"
  500.         else
  501.                 echo "Touchscreen Calibration Successful; Saving..."
  502.                 cat $touchscreendir/calibration_points > /sdcard/ts-calibration
  503.         fi
  504. fi
  505.  
  506. mkdir /dev/msm_camera
  507. mknod /dev/msm_camera/control0 c 250 0
  508. mknod /dev/msm_camera/config0 c 250 1
  509. mknod /dev/msm_camera/frame0 c 250 2
  510. chmod a+s /bin/pppd
  511.  
  512. # Generate a "serial number" for the Android system to identify the device.
  513. # Put it in /data so it survives reboots. Won't survive a factory reset, though.       
  514. [ -f "/data/serialno" ] || echo -e `cat /dev/urandom | tr -dc 'A-Z0-9' | fold -w 12 | head -n 1` >/data/serialno
  515.        
  516.         SERIALNO=$(cat /data/serialno)
  517.         cp /proc/cmdline /tmp/cmdline
  518.         sed -i -e "s:$: androidboot.serialno=${SERIALNO}:" /tmp/cmdline
  519.         mount --bind /tmp/cmdline /proc/cmdline
  520.  
  521. exec /init.android