#!/bin/bash # see http://wiki.meego.com/ARM/N900/Install/chroot NEWDIRS="/usr/lib/dri \ /usr/lib/mesa \ /usr/lib/pvr-omap4-es2.x \ /usr/lib/xorg/modules/drivers \ /usr/lib/xorg/modules/multimedia \ /usr/lib/xorg/modules/extensions \ /usr/lib/xorg/modules/input \ /usr/share/pvr-omap4-data \ /usr/share/sgx-lib \ /usr/share/tiwlan-wl1271-dkms \ " GRAPHICS_LIBS="\ /usr/lib/dri/dummy_drv_video.so \ /usr/lib/dri/mga_dri.so \ /usr/lib/dri/swrast_dri.so /usr/lib/dri/tdfx_dri.so \ /usr/bin/eglinfo \ /usr/bin/pvrsrvinit \ /usr/bin/xmultiegltest \ /usr/bin/xdriinfo \ /usr/lib/libEGL.so.1 \ /usr/lib/libEGL.so.1.1.16.3758 \ /usr/lib/libIMGegl.so \ /usr/lib/libIMGegl.so.1.1.16.3758 \ /usr/lib/libPVRScopeServices.so \ /usr/lib/libPVRScopeServices.so.1.1.16.3758 \ /usr/lib/libpvr2d.so \ /usr/lib/libpvr2d.so.1.1.16.3758 \ /usr/lib/libpvrPVR2D_DRIWSEGL.so \ /usr/lib/libpvrPVR2D_DRIWSEGL.so.1.1.16.3758 \ /usr/lib/libGL.so \ /usr/lib/libGLES_CM.so \ /usr/lib/libGLES_CM.so.1 \ /usr/lib/libGLES_CM.so.1.1.16.3758 \ /usr/lib/libGLESv1_CM.so \ /usr/lib/libGLESv1_CM.so.1 \ /usr/lib/libGLESv2.so.1.1.16.3758 \ /usr/lib/libGLESv2.so.2 \ /usr/lib/libGLEW.so.1.5.2 \ /usr/lib/libGLU.a \ /usr/lib/libGLU.so \ /usr/lib/libGLU.so.1 \ /usr/lib/libGLU.so.1.3.070900 \ /usr/lib/mesa/libGL.so \ /usr/lib/mesa/libGL.so.1 \ /usr/lib/mesa/libGL.so.1.2 \ /usr/lib/pvr-omap4-es2.x/libEGL.so.1.1.16.3758 \ /usr/lib/pvr-omap4-es2.x/libGLES_CM.so.1.1.16.3758 \ /usr/lib/pvr-omap4-es2.x/libGLESv2.so.1.1.16.3758 \ /usr/lib/pvr-omap4-es2.x/libIMGegl.so.1.1.16.3758 \ /usr/lib/pvr-omap4-es2.x/libOpenVG.so.1.1.16.3758 \ /usr/lib/pvr-omap4-es2.x/libOpenVGU.so.1.1.16.3758 \ /usr/lib/pvr-omap4-es2.x/libPVRScopeServices.so.1.1.16.3758 \ /usr/lib/pvr-omap4-es2.x/libglslcompiler.so.1.1.16.3758 \ /usr/lib/pvr-omap4-es2.x/libpvr2d.so.1.1.16.3758 \ /usr/lib/pvr-omap4-es2.x/libpvrPVR2D_DRIWSEGL.so.1.1.16.3758 \ /usr/lib/pvr-omap4-es2.x/libsrv_init.so.1.1.16.3758 \ /usr/lib/pvr-omap4-es2.x/libsrv_um.so.1.1.16.3758 \ /usr/lib/pvr-omap4-es2.x/libusc.so.1.1.16.3758 \ /usr/lib/libutouch-grail.so.1 /usr/lib/libutouch-grail.so.1.0.0 /usr/lib/xorg/modules/drivers/pvr_drv.so \ /usr/share/X11/xorg.conf.d/99-pvr.conf \ /usr/share/pvr-omap4-data/glsltest1_fragshaderA.txt \ /usr/share/pvr-omap4-data/glsltest1_fragshaderB.txt \ /usr/share/pvr-omap4-data/glsltest1_vertshader.txt \ /usr/share/sgx-lib/glsltest1_fragshaderA.txt \ /usr/share/sgx-lib/glsltest1_fragshaderB.txt \ /usr/share/sgx-lib/glsltest1_vertshader.txt \ /usr/lib/xorg/modules/extensions/libdri2.so \ /usr/lib/pkgconfig/dri.pc \ " # /usr/lib/xorg/modules/extensions/libglx.so or no? WLAN_LIBS="\ /etc/init.d/tiwlan-wl1271-dkms \ /usr/bin/tiwlan_loader_wl1271 \ /usr/share/tiwlan-wl1271-dkms/postinst" MISC_LIBS="\ /usr/lib/xorg/modules/libexa.so /usr/lib/xorg/modules/libfb.so /usr/lib/xorg/modules/libfbdevhw.so /usr/lib/xorg/modules/libint10.so /usr/lib/xorg/modules/libshadow.so /usr/lib/xorg/modules/libshadowfb.so /usr/lib/xorg/modules/libvbe.so /usr/lib/xorg/modules/libvgahw.so /usr/lib/xorg/modules/libwfb.so /usr/lib/xorg/modules/libxaa.so /usr/lib/xorg/modules/libxf8_16bpp.so /usr/lib/xorg/modules/drivers/apm_drv.so /usr/lib/xorg/modules/drivers/ark_drv.so /usr/lib/xorg/modules/drivers/ati_drv.so /usr/lib/xorg/modules/drivers/chips_drv.so /usr/lib/xorg/modules/drivers/cirrus_alpine.so /usr/lib/xorg/modules/drivers/cirrus_drv.so /usr/lib/xorg/modules/drivers/cirrus_laguna.so /usr/lib/xorg/modules/drivers/fbdev_drv.so /usr/lib/xorg/modules/drivers/i128_drv.so /usr/lib/xorg/modules/drivers/i740_drv.so /usr/lib/xorg/modules/drivers/mach64_drv.so /usr/lib/xorg/modules/drivers/mga_drv.so /usr/lib/xorg/modules/drivers/neomagic_drv.so /usr/lib/xorg/modules/drivers/nv_drv.so /usr/lib/xorg/modules/drivers/pvr_drv.so /usr/lib/xorg/modules/drivers/r128_drv.so /usr/lib/xorg/modules/drivers/radeon_drv.so /usr/lib/xorg/modules/drivers/rendition_drv.so /usr/lib/xorg/modules/drivers/s3_drv.so /usr/lib/xorg/modules/drivers/s3virge_drv.so /usr/lib/xorg/modules/drivers/savage_drv.so /usr/lib/xorg/modules/drivers/siliconmotion_drv.so /usr/lib/xorg/modules/drivers/sis_drv.so /usr/lib/xorg/modules/drivers/sisusb_drv.so /usr/lib/xorg/modules/drivers/tdfx_drv.so /usr/lib/xorg/modules/drivers/trident_drv.so /usr/lib/xorg/modules/drivers/tseng_drv.so /usr/lib/xorg/modules/drivers/vesa_drv.so /usr/lib/xorg/modules/drivers/voodoo_drv.so /usr/lib/xorg/modules/extensions/libglx.so /usr/lib/xorg/modules/extensions/libdri2.so /usr/lib/xorg/modules/input/evdev_drv.so /usr/lib/xorg/modules/multimedia/bt829_drv.so /usr/lib/xorg/modules/multimedia/fi1236_drv.so /usr/lib/xorg/modules/multimedia/msp3430_drv.so /usr/lib/xorg/modules/multimedia/tda8425_drv.so /usr/lib/xorg/modules/multimedia/tda9850_drv.so /usr/lib/xorg/modules/multimedia/tda9885_drv.so /usr/lib/xorg/modules/multimedia/theatre200_drv.so /usr/lib/xorg/modules/multimedia/theatre_detect_drv.so /usr/lib/xorg/modules/multimedia/theatre_drv.so /usr/lib/xorg/modules/multimedia/uda1380_drv.so" # ### Prepare and mount the image ### # MEEGO_IMAGE=$1 # MEEGO_IMAGE_OFFSET=$2 # MEEGO_ROOT=/mnt/meego_root MEEGO_DEV=/dev/sda1 MEEGO_ROOT=/media/meego_usb mkdir -p ${MEEGO_ROOT} # We can't loop mount directly if image requires offset # mount -o loop ${MEEGO_IMAGE} ${MEEGO_ROOT} mount -t ext4 ${MEEGO_DEV} ${MEEGO_ROOT} # TODO This can fail if /dev/loop0 already exists #losetup /dev/loop0 ${MEEGO_IMAGE} -o ${MEEGO_IMAGE_OFFSET} # mount /dev/loop0 ${MEEGO_ROOT} ### Mount system directories ### echo "Mounting system directories inside the chroot environment..." mount -o bind /proc ${MEEGO_ROOT}/proc mount -o bind /sys ${MEEGO_ROOT}/sys mount -o bind /dev ${MEEGO_ROOT}/dev mount -o bind /dev/pts ${MEEGO_ROOT}/dev/pts/ # mount -o bind /var/lib/dbus/ ${MEEGO_ROOT}/var/lib/dbus/ #MeeGo couldn't find Dbus; maybe it wanted /var/run/dbus instead? -- AC # mount -o bind /var/run ${MEEGO_ROOT}/var/run #mount -o bind /var/run/dbus/ ${MEEGO_ROOT}/var/run/dbus/ ##try bind-mounting all of /var/run instead mount -o bind /var/run ${MEEGO_ROOT}/var/run mount -o bind /usr/share/fonts ${MEEGO_ROOT}/usr/share/fonts mount -o bind /tmp ${MEEGO_ROOT}/tmp mount -o bind /home ${MEEGO_ROOT}/home ### Setup ### rm -f ${MEEGO_ROOT}/etc/resolv.conf cp -p /etc/resolv.conf ${MEEGO_ROOT}/etc/resolv.conf cp -p /etc/hosts ${MEEGO_ROOT}/etc/hosts cp -p /etc/init/omap-pvr-setup.conf ${MEEGO_ROOT}/etc cp -p /etc/init/tiwlan-wl1271-dkms.conf ${MEEGO_ROOT}/etc rm -f ${MEEGO_ROOT}/etc/mtab ln -s /proc/mounts ${MEEGO_ROOT}/etc/mtab # copies above for these files go wrong, so perform by hand # lrwxrwxrwx 1 root root 16 Oct 7 2010 /usr/lib/libGLEW.so.1.5 -> libGLEW.so.1.5.2 # lrwxrwxrwx 1 root root 24 Apr 21 10:28 /usr/lib/libGLESv2.so -> libGLESv2.so.1.1.16.3758 # lrwxrwxrwx 1 root root 21 Apr 21 10:27 /usr/lib/libEGL.so -> libEGL.so.1.1.16.3758 rm /usr/lib/libGLEW.so.1.5 /usr/lib/libGLESv2.so /usr/lib/libEGL.so ln -s /usr/lib/libGLEW.so.1.5.2 /usr/lib/libGLEW.so.1.5 ln -s /usr/lib/libGLESv2.so.1.1.16.3758 /usr/lib/libGLESv2.so ln -s /usr/lib/libEGL.so.1.1.16.3758 /usr/lib/libEGL.so # Prepare .bashrc for setupping chroot environment grep -q -s MeeGo ${MEEGO_ROOT}/root/.bashrc if [ "$?" -ne "0" ]; then echo "# MeeGo" >> ${MEEGO_ROOT}/root/.bashrc echo "source /tmp/session_bus_address.user" >> ${MEEGO_ROOT}/root/.bashrc # Change the prompt - this is optional # echo "export PS1=MeeGo-chroot:\\\w\\\\\$" >> ${MEEGO_ROOT}/root/.bashrc fi # Setup .bashrc for cases when sudo is used # grep -q -s MeeGo ${MEEGO_ROOT}/home/alison/.bashrc # if [ "$?" -ne "0" ]; then # echo "# MeeGo" >> ${MEEGO_ROOT}/home/user/.bashrc # echo "source /tmp/session_bus_address.user" >> ${MEEGO_ROOT}/home/user/.bashrc # Change the prompt - this is optional # echo "export PS1=MeeGo-chroot:\\\w\\\\\$" >> ${MEEGO_ROOT}/home/user/.bashrc # fi # Copy libraries from host for newdir in ${NEWDIRS}; do mkdir -p ${MEEGO_ROOT}/${newdir} done for lib in ${GRAPHICS_LIBS}; do # cp ${lib} ${MEEGO_ROOT}/usr/lib/ cp ${lib} ${MEEGO_ROOT}/${lib} done for lib in ${WLAN_LIBS}; do # cp ${lib} ${MEEGO_ROOT}/usr/lib/ cp ${lib} ${MEEGO_ROOT}/${lib} done for lib in ${MISC_LIBS}; do # cp ${lib} ${MEEGO_ROOT}/usr/lib/ cp ${lib} ${MEEGO_ROOT}/${lib} done # Copy pulseaudio files from host cp -rfp /usr/lib/libpulse* ${MEEGO_ROOT}/usr/lib/ # Copy udev files cp -rfp /lib/udev/rules.d ${MEEGO_ROOT}/lib/udev/rules.d ### Start your engines ### echo "kill -TERM gdm-binary and gdm-simple-slave, then startx." echo "Ready for 'sudo chroot ${MEEGO_ROOT} /bin/bash'." echo "run 'startx&'. You will be changed to vt8 (probably) and see an xterm." echo "Ctl-alt-F2 to change back. $DISPLAY should be automatically set to :0.0." echo "Run xhost+ at xterm." echo "Run xdriinfo, xmultiegltest, eglinfo and binaries" echo "in /opt/GFX_Linux_SDK for diagnostics. glxgears and glxinfo" echo "should not be present." # # chroot ${MEEGO_ROOT} /bin/bash # don't forget to run ldconfig # end