diff --git a/README.md b/README.md index 7576bff..3293add 100644 --- a/README.md +++ b/README.md @@ -27,8 +27,8 @@ To pase the configuration to the program use this syntax: #echo "n" # ├── Overwrite device before copying echo "test12345" # | The user password echo "test12345" # | The root password - echo "example-host" # | The hostname - echo "y" # | Copy wifi configurations to target system + echo "example-host" # | The hostname + echo "y" # | Setup Wifi on target system )| sudo bash ./sd_setup.sh ``` diff --git a/chroot-to-pi.sh b/chroot-to-pi.sh new file mode 100644 index 0000000..859e350 --- /dev/null +++ b/chroot-to-pi.sh @@ -0,0 +1,69 @@ +#!/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 + +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,}