123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- #!/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,}
|