blob: 219590fca0fc733a239a9c606544c4366795b95c [file] [log] [blame]
Austin Schuhab8c0c52020-02-22 13:42:37 -08001#!/bin/bash
2
3set -xe
4
5IMAGE="2020-02-13-raspbian-buster-lite.img"
Austin Schuhe6965982020-02-26 23:12:05 -08006BOOT_PARTITION="2020-02-13-raspbian-buster-lite.img.boot_partition"
Austin Schuhab8c0c52020-02-22 13:42:37 -08007PARTITION="2020-02-13-raspbian-buster-lite.img.partition"
8HOSTNAME="pi-8971-1"
9
10function target() {
11 HOME=/root/ USER=root sudo proot -0 -q qemu-arm-static -w / -r "${PARTITION}" "$@"
12}
13
14function user_pi_target() {
15 USER=root sudo proot -0 -q qemu-arm-static -w / -r "${PARTITION}" sudo -h 127.0.0.1 -u pi "$@"
16}
17
Austin Schuh90c82782020-02-26 19:54:51 -080018
Austin Schuhab8c0c52020-02-22 13:42:37 -080019mkdir -p "${PARTITION}"
Austin Schuhe6965982020-02-26 23:12:05 -080020mkdir -p "${BOOT_PARTITION}"
21
22if mount | grep "${BOOT_PARTITION}" >/dev/null ;
23then
24 echo "Already mounted"
25else
26 OFFSET="$(fdisk -lu "${IMAGE}" | grep "${IMAGE}1" | awk '{print 512*$2}')"
27 sudo mount -o loop,offset=${OFFSET} "${IMAGE}" "${BOOT_PARTITION}"
28fi
29
30# Enable the camera on boot.
31if ! grep "start_x=1" "${BOOT_PARTITION}/config.txt"; then
32 echo "start_x=1" | sudo tee -a "${BOOT_PARTITION}/config.txt"
33fi
34if ! grep "gpu_mem=128" "${BOOT_PARTITION}/config.txt"; then
35 echo "gpu_mem=128" | sudo tee -a "${BOOT_PARTITION}/config.txt"
36fi
37
38sudo umount "${BOOT_PARTITION}"
39rmdir "${BOOT_PARTITION}"
Austin Schuhab8c0c52020-02-22 13:42:37 -080040
41if mount | grep "${PARTITION}" >/dev/null ;
42then
43 echo "Already mounted"
44else
Austin Schuh90c82782020-02-26 19:54:51 -080045 OFFSET="$(fdisk -lu "${IMAGE}" | grep "${IMAGE}2" | awk '{print 512*$2}')"
46
47 if [[ "$(stat -c %s "${IMAGE}")" == 1849688064 ]]; then
48 echo "Growing image"
49 dd if=/dev/zero bs=1M count=1024 >> "${IMAGE}"
50 START="$(fdisk -lu "${IMAGE}" | grep "${IMAGE}2" | awk '{print $2}')"
51
52 sed -e 's/\s*\([\+0-9a-zA-Z]*\).*/\1/' << EOF | fdisk "${IMAGE}"
53 d # remove old partition
54 2
55 n # new partition
56 p # primary partition
57 2 # partion number 2
58 532480 # start where the old one starts
59 # To the end
60 p # print the in-memory partition table
61 w # Flush
62 q # and we're done
63EOF
64
65 sudo losetup -o "${OFFSET}" -f "${IMAGE}"
66 LOOPBACK="$(sudo losetup --list | grep "${IMAGE}" | awk '{print $1}')"
67 sudo e2fsck -f "${LOOPBACK}"
68 sudo resize2fs "${LOOPBACK}"
69 sudo losetup -d "${LOOPBACK}"
70 fi
71
Austin Schuhab8c0c52020-02-22 13:42:37 -080072 echo "Mounting"
73 sudo mount -o loop,offset=${OFFSET} "${IMAGE}" "${PARTITION}"
74fi
75
76sudo cp target_configure.sh "${PARTITION}/tmp/"
77sudo cp dhcpcd.conf "${PARTITION}/tmp/dhcpcd.conf"
78sudo cp change_hostname.sh "${PARTITION}/tmp/change_hostname.sh"
James Kuszmaul2d8fa2a2020-03-01 13:51:50 -080079sudo cp frc971.service "${PARTITION}/etc/systemd/system/frc971.service"
Austin Schuhab8c0c52020-02-22 13:42:37 -080080
81target /bin/mkdir -p /home/pi/.ssh/
82cat ~/.ssh/id_rsa.pub | target tee /home/pi/.ssh/authorized_keys
83
84target /bin/bash /tmp/target_configure.sh
85
86# Run a prompt as root inside the target to poke around and check things.
87target /bin/bash --rcfile /root/.bashrc
88
89sudo umount "${PARTITION}"
90rmdir "${PARTITION}"