mirror of https://github.com/CIRCL/Circlean
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
99 lines
2.6 KiB
99 lines
2.6 KiB
#!/bin/bash |
|
|
|
# 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. |
|
|
|
# To make debugging easier |
|
echo "KittenGroomer: in mount_image.sh" 1>&2 |
|
|
|
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} |
|
COMMAND_OPT=${2} |
|
|
|
set -e |
|
set -x |
|
|
|
# If you use a partition... |
|
PARTITION_ROOTFS='/dev/mmcblk0p2' |
|
PARTITION_BOOT='/dev/mmcblk0p1' |
|
#PARTITION_ROOTFS='/dev/sdd2' |
|
#PARTITION_BOOT='/dev/sdd1' |
|
|
|
# If you use the img... |
|
# Double check the path and offsets as noted above! |
|
##### Debian |
|
IMAGE='2017-02-02_CIRCLean.img' |
|
OFFSET_BOOT=$((8192 * 512)) |
|
OFFSET_ROOTFS=$((137216 * 512)) |
|
|
|
CHROOT_PATH='/mnt/arm_rPi' |
|
|
|
clean(){ |
|
mv ${CHROOT_PATH}/etc/ld.so.preload_backup ${CHROOT_PATH}/etc/ld.so.preload |
|
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 |
|
echo 'You need a SD card or an image' |
|
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 |
|
|
|
mv ${CHROOT_PATH}/etc/ld.so.preload ${CHROOT_PATH}/etc/ld.so.preload_backup |
|
|
|
# To make debugging easier |
|
echo "KittenGroomer: Image mounted, executing command from mount_image.sh" 1>&2 |
|
|
|
${COMMAND} ${CHROOT_PATH} ${COMMAND_OPT}
|
|
|