|
@@ -0,0 +1,72 @@
|
|
|
|
+#!/bin/bash
|
|
|
|
+
|
|
|
|
+# This script allows you to chroot ("work on")
|
|
|
|
+# the raspbian sd card as if it's the raspberry pi
|
|
|
|
+# on your Ubuntu desktop/laptop
|
|
|
|
+# just much faster and more convenient
|
|
|
|
+
|
|
|
|
+# credits: https://gist.github.com/jkullick/9b02c2061fbdf4a6c4e8a78f1312a689
|
|
|
|
+
|
|
|
|
+# make sure you have issued
|
|
|
|
+# (sudo) apt install qemu qemu-user-static binfmt-support
|
|
|
|
+
|
|
|
|
+# Write the raspbian image onto the sd card,
|
|
|
|
+# boot the pi with the card once
|
|
|
|
+# so it expands the fs automatically
|
|
|
|
+# then plug back to your laptop/desktop
|
|
|
|
+# and chroot to it with this script.
|
|
|
|
+
|
|
|
|
+# Invoke:
|
|
|
|
+# (sudo) ./chroot-to-pi.sh /dev/sdb
|
|
|
|
+# assuming /dev/sdb is your sd-card
|
|
|
|
+# if you don't know, when you plug the card in, type:
|
|
|
|
+# dmesg | tail -n30
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+# Note: If you have an image file instead of the sd card,
|
|
|
|
+# you will need to issue
|
|
|
|
+# (sudo) apt install kpartx
|
|
|
|
+# (sudo) kpartx -v -a 2017-11-29-raspbian-stretch-lite.img
|
|
|
|
+# then
|
|
|
|
+# (sudo) ./chroot-to-pi.sh /dev/mapper/loop0p
|
|
|
|
+# With the vanilla image, you have very little space to work on
|
|
|
|
+# I have not figured out a reliable way to resize it
|
|
|
|
+# Something like this should work, but it didn't in my experience
|
|
|
|
+# https://gist.github.com/htruong/0271d84ae81ee1d301293d126a5ad716
|
|
|
|
+# so it's better just to let the pi resize the partitions
|
|
|
|
+
|
|
|
|
+# check if package is not installed
|
|
|
|
+if [ $(dpkg-query -W -f='${Status}' qemu-user-static 2>/dev/null | grep -c "ok installed") -eq 0 ];
|
|
|
|
+
|
|
|
|
+mkdir -p /mnt/raspbian
|
|
|
|
+
|
|
|
|
+# mount partition
|
|
|
|
+mount -o rw ${1}2 /mnt/raspbian
|
|
|
|
+mount -o rw ${1}1 /mnt/raspbian/boot
|
|
|
|
+
|
|
|
|
+# mount binds
|
|
|
|
+mount --bind /dev /mnt/raspbian/dev/
|
|
|
|
+mount --bind /sys /mnt/raspbian/sys/
|
|
|
|
+mount --bind /proc /mnt/raspbian/proc/
|
|
|
|
+mount --bind /dev/pts /mnt/raspbian/dev/pts
|
|
|
|
+
|
|
|
|
+# ld.so.preload fix
|
|
|
|
+sed -i 's/^/#CHROOT /g' /mnt/raspbian/etc/ld.so.preload
|
|
|
|
+
|
|
|
|
+# copy qemu binary
|
|
|
|
+cp /usr/bin/qemu-arm-static /mnt/raspbian/usr/bin/
|
|
|
|
+
|
|
|
|
+echo "You will be transferred to the bash shell now."
|
|
|
|
+echo "Issue 'exit' when you are done."
|
|
|
|
+echo "Issue 'su pi' if you need to work as the user pi."
|
|
|
|
+
|
|
|
|
+# chroot to raspbian
|
|
|
|
+chroot /mnt/raspbian /bin/bash
|
|
|
|
+
|
|
|
|
+# ----------------------------
|
|
|
|
+# Clean up
|
|
|
|
+# revert ld.so.preload fix
|
|
|
|
+sed -i 's/^#CHROOT //g' /mnt/raspbian/etc/ld.so.preload
|
|
|
|
+
|
|
|
|
+# unmount everything
|
|
|
|
+umount /mnt/raspbian/{dev/pts,dev,sys,proc,boot,}
|