-
-
Save bilson/5dcd925949627ebf7b6d253bea41196d to your computer and use it in GitHub Desktop.
Chroot to pi sd card
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/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 | |
| # 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 so it expands the fs, then plug back to your laptop/desktop | |
| # and chroot to it with this script | |
| # Invoke: | |
| # (sudo) ./chroot-to-pi.sh /dev/sdb | |
| # 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 | |
| # Note that 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 | |
| # 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/^/#/g' /mnt/raspbian/etc/ld.so.preload | |
| # copy qemu binary | |
| cp /usr/bin/qemu-arm-static /mnt/raspbian/usr/bin/ | |
| # chroot to raspbian | |
| chroot /mnt/raspbian /bin/bash | |
| # You will be taken to the bash command line now | |
| # So do whatever you need to do | |
| # and issue | |
| # exit | |
| # when you're done | |
| # revert ld.so.preload fix | |
| sed -i 's/^#//g' /mnt/raspbian/etc/ld.so.preload | |
| # unmount everything | |
| umount /mnt/raspbian/{dev/pts,dev,sys,proc,boot,} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment