X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=pnd%2Frun_gingerbread.sh;h=a8979e7547389ced352a3783d0f87e88f33c4e5f;hb=bc3102154962817aa975f1d8c26bc0b54b8e6cd7;hp=521dc97afc4c5e3cfc984ee397888a8b44e8ddda;hpb=941f558413e7cdaa8a566106021b81d419707cd9;p=android_pandora.git diff --git a/pnd/run_gingerbread.sh b/pnd/run_gingerbread.sh index 521dc97..a8979e7 100755 --- a/pnd/run_gingerbread.sh +++ b/pnd/run_gingerbread.sh @@ -13,6 +13,8 @@ fi root=/mnt/android mpoint_main=`pwd` kernel_ver=`uname -r` +pnd_version=4 +last_pnd_version=`cat $mpoint_main/last_pnd_version || true` exitcode=1 trap onexit INT QUIT TERM EXIT @@ -71,6 +73,12 @@ onexit() fi done + if ! pidof udevd > /dev/null; then + # don't use /etc/init.d/udev, it remounts /dev blindly + /sbin/udevd -d + /sbin/udevadm trigger + fi + if ! pidof X > /dev/null; then # need to restore SGX, X and friends rmmod bufferclass_ti omaplfb pvrsrvkm @@ -114,6 +122,10 @@ if ! test -e /dev/ashmem; then modprobe ashmem delay=0.5 fi +if ! test -e /sys/module/lowmemorykiller; then + # this one is optional + modprobe lowmemorykiller || true +fi sleep $delay if test ! -e /dev/log_events -o ! -e /dev/binder -o ! -e /dev/ashmem; then err "could not load required Android modules,\n\ @@ -121,6 +133,12 @@ perhaps you are running unsupported\nfirmware/kernel." exit 1 fi +if test "x$last_pnd_version" != "x$pnd_version"; then + echo "version changed from $last_pnd_version to $pnd_version" + rm -f rootfs.ext2 + echo "$pnd_version" > $mpoint_main/last_pnd_version +fi + if ! test -e rootfs.ext2; then if ! cp -v pandora/default_rootfs.ext2 rootfs.ext2; then err "file copy failed, not enough space?" @@ -164,9 +182,10 @@ mkdir -p $root/vendor/ # handle SGX mkdir -p $root/vendor/pvr echo "0 0 android" > $root/vendor/pvr/egl.cfg +rm -f $root/vendor/pvr/gralloc.omap3.so +sgx_kernel_loaded=false # load the right SGX driver -sgx_kernel_loaded=false if ! grep -q '1.5.15.2766' /proc/pvr/version 2> /dev/null; then echo have to change SGX kernel driver /etc/init.d/pvr-init stop || true @@ -206,6 +225,7 @@ if $sgx_kernel_loaded; then ln -fs /system/lib/$es/libGLESv1_CM_POWERVR_SGX530_121.so $root/vendor/pvr/ fi ln -fs /system/bin/$es/pvrsrvinit $root/vendor/pvr/ + ln -fs /system/lib/hw/gralloc.omap3.so.1 $root/vendor/pvr/gralloc.omap3.so ln -fs /system/lib/$es/libPVRScopeServices.so $root/vendor/pvr/ ln -fs /system/lib/$es/libglslcompiler.so $root/vendor/pvr/ ln -fs /system/lib/$es/libsrv_um.so $root/vendor/pvr/ @@ -238,18 +258,25 @@ chvt 2 & # may hang.. sleep 1 killall chvt 2> /dev/null || true ifconfig wlan0 down -set -e +killall udevd || true -cp -v /etc/pointercal $root/vendor/ cp -v /lib/modules/$kernel_ver/kernel/drivers/net/wireless/wl1251/wl1251_sdio.ko $root/vendor/ mkdir -p $root/vendor/firmware cp -v /lib/firmware/brf6300.bin $root/vendor/firmware/ +set -e +cp -v /etc/pointercal $root/vendor/ + # some cleanup rm -rf $root/acct/uid/* chroot $root /init & +# revive udev when /init is done with uevents, +# we'll need it to load firmwares and stuff +sleep 10 +/sbin/udevd -d + # wait for a message while true; do sleep 1