(→Chrooting into a loopback image) |
|||
| Line 53: | Line 53: | ||
mount -t tmpfs tmpfs ${MEEGO_ROOT}/tmp | mount -t tmpfs tmpfs ${MEEGO_ROOT}/tmp | ||
| - | mount -t tmpfs tmpfs ${MEEGO_ROOT}/var/run | + | mount -t tmpfs tmpfs ${MEEGO_ROOT}/var/run |
### Setup ### | ### Setup ### | ||
| Line 68: | Line 68: | ||
echo "export PS1=MeeGo-chroot:\\\w\\\\\$" >> ${MEEGO_ROOT}/root/.bashrc | echo "export PS1=MeeGo-chroot:\\\w\\\\\$" >> ${MEEGO_ROOT}/root/.bashrc | ||
fi | fi | ||
| + | |||
| + | # Copy graphics libraries from host | ||
| + | GRAPHICS_LIBS="\ | ||
| + | /usr/lib/libIMGegl.so \ | ||
| + | /usr/lib/libglslcompiler.so \ | ||
| + | /usr/lib/libpvrPVR2D_DRI2WSEGL.so \ | ||
| + | /usr/lib/libsrv_um.so \ | ||
| + | /usr/lib/libOpenVGU.so \ | ||
| + | /usr/lib/libpvrPVR2D_BLITWSEGL.so \ | ||
| + | /usr/lib/libpvrPVR2D_FRONTWSEGL.so \ | ||
| + | /usr/lib/libpvrPVR2D_FLIPWSEGL.so \ | ||
| + | /usr/lib/libpvrPVR2D_X11WSEGL.so \ | ||
| + | /usr/lib/libOpenVG.so \ | ||
| + | /usr/lib/libEGL.so \ | ||
| + | /usr/lib/libPVRScopeServices.so \ | ||
| + | /usr/lib/libpvr2d.so \ | ||
| + | /usr/lib/libGLESv2.so" | ||
| + | |||
| + | for lib in ${GRAPHICS_LIBS}; do | ||
| + | cp ${lib} ${MEEGO_ROOT}/usr/lib/ | ||
| + | done | ||
### Start your engines ### | ### Start your engines ### | ||
Under construction
Problem with chroot installation is finding space for it. SD card and Mydocs would have plenty of space but they use FAT32 so it can't be used directly. Solution is to mount loopback images. Easies way to get started is to use a prebuilt loopback image.
If a prebuilt loopback image is not yet available, you can create it from a provided tar ball.
Create 2GB image file
dd if=/dev/zero of=/home/user/MyDocs/meego-image bs=1024 count=2097152
Create filesystem on image file
mkfs.ext3 /home/user/MyDocs/meego-image
Create mount point and loopback mount the image
export MEEGO_ROOT="/mnt/meego_root" mkdir $MEEGO_ROOT mount -o loop /home/user/MyDocs/meego-image $MEEGO_ROOT
Unpack Meego rootfs image there. You might get an error about invalid tar magic. There's some problem between GNU tar and Busybox tar. Solution is to install GNU tar from Maemo Extras (package name is tar-gnu)
tar xzf <meego-image> -C $MEEGO_ROOT
Umount the image
umount $MEEGO_ROOT
You now have a loopback image ready to be chrooted into
Using a script to chroot into an image makes the process faster and safer.
Copy the code below to a meego_chroot.sh script and remember to chmod +x it.
Usage: ./meego_chroot.sh <path_to_meego-arm-n900-loop.img>
You may always execute the commands below manually if you like. Changing the prompt is optional and you only need to do it once per image.
#!/bin/sh
### Prepare and mount the image ###
MEEGO_IMAGE=$1
MEEGO_ROOT=/mnt/meego_root
mkdir -p ${MEEGO_ROOT}
mount -o loop ${MEEGO_IMAGE} ${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/
mount -o bind /usr/share/fonts ${MEEGO_ROOT}/usr/share/fonts
mount -t tmpfs tmpfs ${MEEGO_ROOT}/tmp
mount -t tmpfs tmpfs ${MEEGO_ROOT}/var/run
### Setup ###
rm -f ${MEEGO_ROOT}/etc/resolv.conf
cp /etc/resolv.conf ${MEEGO_ROOT}/etc/resolv.conf
rm -f ${MEEGO_ROOT}/etc/mtab
ln -s /proc/mounts ${MEEGO_ROOT}/etc/mtab
# Change the prompt - this is optional
# make sure this is added only once
grep -q -s MeeGo ${MEEGO_ROOT}/root/.bashrc
if [ "$?" -ne "0" ]; then
echo "export PS1=MeeGo-chroot:\\\w\\\\\$" >> ${MEEGO_ROOT}/root/.bashrc
fi
# Copy graphics libraries from host
GRAPHICS_LIBS="\
/usr/lib/libIMGegl.so \
/usr/lib/libglslcompiler.so \
/usr/lib/libpvrPVR2D_DRI2WSEGL.so \
/usr/lib/libsrv_um.so \
/usr/lib/libOpenVGU.so \
/usr/lib/libpvrPVR2D_BLITWSEGL.so \
/usr/lib/libpvrPVR2D_FRONTWSEGL.so \
/usr/lib/libpvrPVR2D_FLIPWSEGL.so \
/usr/lib/libpvrPVR2D_X11WSEGL.so \
/usr/lib/libOpenVG.so \
/usr/lib/libEGL.so \
/usr/lib/libPVRScopeServices.so \
/usr/lib/libpvr2d.so \
/usr/lib/libGLESv2.so"
for lib in ${GRAPHICS_LIBS}; do
cp ${lib} ${MEEGO_ROOT}/usr/lib/
done
### Start your engines ###
echo -e "chrooting to ${MEEGO_ROOT}...\n"
cd ${MEEGO_ROOT}
chroot ${MEEGO_ROOT} /bin/bash
### Cleanup ###
echo "Cleaning mounts..."
cd ~
umount ${MEEGO_ROOT}/dev/pts
umount ${MEEGO_ROOT}/dev
umount ${MEEGO_ROOT}/sys
umount ${MEEGO_ROOT}/proc
umount ${MEEGO_ROOT}/var/lib/dbus/
umount ${MEEGO_ROOT}/usr/share/fonts
umount ${MEEGO_ROOT}/tmp
umount ${MEEGO_ROOT}/var/run
umount ${MEEGO_ROOT}
echo