Well, this is going better than I expected. Unless someone tells me otherwise, I'm modifying the new bootenv/tinboot for the following:
1) Full NAND only (at least initially until it is stable)
2) Rhodium support only (taking out detection of other phones)
3) build.prop is now responsible for setting lcd density (currently 240 in FRX04 and makes our cmdline is redundant...)
4) Incorporating stinebd's OTA update.zip method
5) Froyo libs moved into system (see note below)
I've learned that you can't bind mount onto an initrd, so you have to use links and copy the data that way. Unfortunately, this poses a problem for our method of copying hw lib files based on the build type. For now, I am going to cook the libs into the system. This means we need to cook the libs and stuff into system for each build type (i.e. froyo, gingerbread, cynogen, etc.) that you want to try.
Here's the code I'm talking about
:
Code:
RCSCRIPT=""
RCCONFIG=""
echo "Checking for build type..."
if [ -f /system/hero.build ] ; then
echo "Hero build detected"
RCSCRIPT="hero"
RCCONFIG="hero"
ln /data/app_s /system/app
elif [ -f /system/eclairhero.build ] ; then
echo "HERO 2.1 BUILD DETECTED -- ECLAIR"
RCSCRIPT="eclairhero"
RCCONFIG="eclairhero"
mount --bind /lib/eclair/hw /system/lib/hw
elif [ -f /system/eclair.build ] ; then
echo "Eclair build detected"
RCSCRIPT="eclair"
RCCONFIG="eclair"
mount --bind /lib/eclair/hw /system/lib/hw
elif [ -f /system/froyo.build ] ; then
echo "Froyo build detected"
RCSCRIPT="froyo"
RCCONFIG="froyo"
ln -s /lib/froyo/hw /system/lib/hw
# vold: Fix sdcard device location for CDMA boards (thanks paalsteek)
if [ -d /sys/devices/platform/msm_sdcc.3 ]; then
/bin/sed -i -e 's:/devices/platform/msm_sdcc\.2:/devices/platform/msm_sdcc.3:g' /etc/vold.fstab
fi
elif [ -f /system/gingerbread.build ] ; then
echo "Gingerbread build detected"
RCSCRIPT="gingerbread"
RCCONFIG="gingerbread"
ln -s /lib/froyo/hw /system/lib/hw
# vold: Fix sdcard device location for CDMA boards (thanks paalsteek)
if [ -d /sys/devices/platform/msm_sdcc.3 ]; then
/bin/sed -i -e 's:/devices/platform/msm_sdcc\.2:/devices/platform/msm_sdcc.3:g' /etc/vold.fstab
fi
elif [ -f /system/tattoo.build ] ; then
echo "Tattoo build detected"
RCSCRIPT="tattoo"
RCCONFIG="tattoo"
elif [ -f /system/donut.build ] ; then
echo "Donut build detected"
RCSCRIPT="donut"
RCCONFIG="donut"
mount --bind /lib/donut/hw /system/lib/hw
elif [ -d /system/lib/donut ] ; then
echo "Donut build detected"
RCSCRIPT="donut"
RCCONFIG="donut"
elif [ -f /system/xrom.build ] ; then
echo "xROM build detected"
RCSCRIPT="xrom"
RCCONFIG="xrom"
elif [ -f /system/rogers.build ] ; then
echo "Rogers build detected"
RCSCRIPT="rogers"
RCCONFIG="rogers"
elif [ -f /system/cyanogen.build ] ; then
echo "cyanogen experimental detected.....eating donuts"
RCSCRIPT="cyanogen"
RCCONFIG="cyanogen"
elif [ -f /system/custom.build ] ; then
echo "Custom init.rc detected"
cp /system/sysinit.rc /build.cfg/init.sysinit.rc
RCCONFIG="hero"
RCSCRIPT="sysinit"
else
echo "Unknown Android build. Assuming Ion variant"
RCSCRIPT="ion"
RCCONFIG="ion"
# for the fake sensors library
mount /lib/hw /system/lib/hw -o loop
chmod 666 /dev/input/event0
fi
echo "using /init.$RCSCRIPT.rc as init.rc"
echo "using $card/conf/$RCCONFIG.user.conf"
cp "/init.cfg/init.$RCSCRIPT.rc" /etc/init.rc
Edit: We also need to cook the rootfs file /lib/froyo/libhardware_legacy.so into system.