2014-03-27 00:02:48 +01:00
|
|
|
#!/bin/bash
|
|
|
|
|
2016-12-29 02:20:39 +01:00
|
|
|
# This script will mount a given image or sd card in loop mode.
|
|
|
|
# Make sure to change the path and offsets for the image you use. You can get
|
|
|
|
# the correct offsets using `file $PATH_TO_IMAGE` or fdisk.
|
|
|
|
# If you want to mount an SD card, unset $IMAGE.
|
|
|
|
|
2015-10-09 18:22:55 +02:00
|
|
|
# To make debugging easier
|
|
|
|
echo "KittenGroomer: in mount_image.sh" 1>&2
|
|
|
|
|
2014-03-27 00:02:48 +01:00
|
|
|
if [ "$(id -u)" != "0" ]; then
|
|
|
|
echo "This script must be run as root" 1>&2
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
ls /usr/bin/qemu*arm*
|
|
|
|
if [ -z $? ]; then
|
|
|
|
echo "You need qemu user static binaries." 1>&2
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
if [ -z "$1" ]; then
|
|
|
|
echo "Please tell me what do to after mounting everything..."
|
|
|
|
exit
|
|
|
|
fi
|
|
|
|
COMMAND=${1}
|
2015-10-09 21:22:20 +02:00
|
|
|
COMMAND_OPT=${2}
|
2014-03-27 00:02:48 +01:00
|
|
|
|
|
|
|
set -e
|
|
|
|
set -x
|
|
|
|
|
|
|
|
# If you use a partition...
|
2015-11-06 17:40:33 +01:00
|
|
|
PARTITION_ROOTFS='/dev/mmcblk0p2'
|
|
|
|
PARTITION_BOOT='/dev/mmcblk0p1'
|
|
|
|
#PARTITION_ROOTFS='/dev/sdd2'
|
|
|
|
#PARTITION_BOOT='/dev/sdd1'
|
2014-03-27 00:02:48 +01:00
|
|
|
|
2016-12-29 02:20:39 +01:00
|
|
|
# If you use the img...
|
|
|
|
# Double check the path and offsets as noted above!
|
2014-03-27 00:02:48 +01:00
|
|
|
##### Debian
|
2017-02-28 11:18:52 +01:00
|
|
|
IMAGE='2017-02-02_CIRCLean.img'
|
2014-03-27 00:02:48 +01:00
|
|
|
OFFSET_BOOT=$((8192 * 512))
|
2017-02-28 11:18:52 +01:00
|
|
|
OFFSET_ROOTFS=$((137216 * 512))
|
2014-03-27 00:02:48 +01:00
|
|
|
|
|
|
|
CHROOT_PATH='/mnt/arm_rPi'
|
|
|
|
|
|
|
|
clean(){
|
2016-12-29 02:20:39 +01:00
|
|
|
mv ${CHROOT_PATH}/etc/ld.so.preload_backup ${CHROOT_PATH}/etc/ld.so.preload
|
2014-03-27 00:02:48 +01:00
|
|
|
rm ${CHROOT_PATH}/etc/resolv.conf
|
|
|
|
rm ${CHROOT_PATH}/usr/bin/qemu*arm*
|
|
|
|
|
|
|
|
umount ${CHROOT_PATH}/dev/pts
|
|
|
|
#umount ${CHROOT_PATH}/dev/shm
|
|
|
|
umount ${CHROOT_PATH}/dev
|
|
|
|
umount ${CHROOT_PATH}/run
|
|
|
|
umount ${CHROOT_PATH}/proc
|
|
|
|
umount ${CHROOT_PATH}/sys
|
|
|
|
umount ${CHROOT_PATH}/tmp
|
|
|
|
umount ${CHROOT_PATH}/boot
|
|
|
|
umount ${CHROOT_PATH}
|
|
|
|
|
|
|
|
rm -rf ${CHROOT_PATH}
|
|
|
|
}
|
|
|
|
|
|
|
|
trap clean EXIT TERM INT
|
|
|
|
|
|
|
|
# enforce the CPU in order to have the armv6 instructions set (and compile working packages...)
|
|
|
|
export QEMU_CPU=arm1176
|
|
|
|
#export QEMU_STRACE=1
|
|
|
|
|
|
|
|
mkdir -p ${CHROOT_PATH}
|
|
|
|
|
|
|
|
if [ ! -z ${IMAGE} ]; then
|
|
|
|
mount -o loop,offset=${OFFSET_ROOTFS} ${IMAGE} ${CHROOT_PATH}
|
|
|
|
mount -o loop,offset=${OFFSET_BOOT} ${IMAGE} ${CHROOT_PATH}/boot
|
|
|
|
elif [ -a ${PARTITION_ROOTFS} ]; then
|
|
|
|
mount ${PARTITION_ROOTFS} ${CHROOT_PATH}
|
|
|
|
mount ${PARTITION_BOOT} ${CHROOT_PATH}/boot
|
|
|
|
else
|
2016-12-29 02:20:39 +01:00
|
|
|
echo 'You need a SD card or an image'
|
2014-03-27 00:02:48 +01:00
|
|
|
exit
|
|
|
|
fi
|
|
|
|
|
|
|
|
cp /usr/bin/qemu*arm* ${CHROOT_PATH}/usr/bin/
|
|
|
|
|
|
|
|
mount -o bind /run ${CHROOT_PATH}/run
|
|
|
|
mount -o bind /dev ${CHROOT_PATH}/dev
|
|
|
|
mount -t devpts pts ${CHROOT_PATH}/dev/pts
|
|
|
|
#mount -o bind /dev/shm ${CHROOT_PATH}/dev/shm
|
|
|
|
mount -t proc none ${CHROOT_PATH}/proc
|
|
|
|
mount -t sysfs none ${CHROOT_PATH}/sys
|
|
|
|
mount -o bind /tmp ${CHROOT_PATH}/tmp
|
|
|
|
|
|
|
|
cp -pf /etc/resolv.conf ${CHROOT_PATH}/etc
|
|
|
|
|
2016-12-29 02:20:39 +01:00
|
|
|
mv ${CHROOT_PATH}/etc/ld.so.preload ${CHROOT_PATH}/etc/ld.so.preload_backup
|
2014-03-27 00:02:48 +01:00
|
|
|
|
2015-10-09 18:22:55 +02:00
|
|
|
# To make debugging easier
|
|
|
|
echo "KittenGroomer: Image mounted, executing command from mount_image.sh" 1>&2
|
|
|
|
|
2015-10-09 21:22:20 +02:00
|
|
|
${COMMAND} ${CHROOT_PATH} ${COMMAND_OPT}
|