feat: deploy onto the pi and add scripts for boot
This commit is contained in:
parent
f4d95c595e
commit
16ad3c6181
13 changed files with 399 additions and 175 deletions
|
|
@ -7,7 +7,6 @@ HOSTNAME=noisebridge-pi
|
|||
WIFI_SSID=Noisebridge
|
||||
WIFI_PASSWORD=noisebridge
|
||||
PI_USERNAME=pi
|
||||
PI_PASSWORD=noisebridge
|
||||
SSH_KEY='ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIE40ISu3ydCqfdpb26JYD5cIN0Fu0id/FDS+xjB5zpqu'
|
||||
|
||||
if [[ $EUID -ne 0 ]]; then
|
||||
|
|
@ -15,14 +14,26 @@ if [[ $EUID -ne 0 ]]; then
|
|||
exit 1
|
||||
fi
|
||||
|
||||
if [[ ! -d "$BOOTFS" || ! -d "$ROOTFS" ]]; then
|
||||
echo "Expected mounted boot and root partitions." >&2
|
||||
if [[ ! -d "$BOOTFS" ]]; then
|
||||
echo "Expected mounted boot partition." >&2
|
||||
echo "Boot: $BOOTFS" >&2
|
||||
echo "Root: $ROOTFS" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
PASSWORD_HASH=$(mkpasswd -m sha-512 "$PI_PASSWORD")
|
||||
CONFIG_TXT="$BOOTFS/config.txt"
|
||||
if [[ ! -f "$CONFIG_TXT" && -f "$BOOTFS/firmware/config.txt" ]]; then
|
||||
CONFIG_TXT="$BOOTFS/firmware/config.txt"
|
||||
fi
|
||||
|
||||
if [[ ! -f "$CONFIG_TXT" ]]; then
|
||||
echo "Could not find config.txt in $BOOTFS" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
ROOTFS_READY=0
|
||||
if [[ -d "$ROOTFS" && -f "$ROOTFS/etc/shadow" ]]; then
|
||||
ROOTFS_READY=1
|
||||
fi
|
||||
|
||||
cat > "$BOOTFS/network-config" <<EOF
|
||||
network:
|
||||
|
|
@ -59,17 +70,15 @@ dsmode: local
|
|||
instance_id: ${HOSTNAME}-bootstrap-1
|
||||
EOF
|
||||
|
||||
grep -q '^enable_uart=1$' "$BOOTFS/config.txt" || printf '\nenable_uart=1\n' >> "$BOOTFS/config.txt"
|
||||
grep -q '^enable_uart=1$' "$CONFIG_TXT" || printf '\nenable_uart=1\n' >> "$CONFIG_TXT"
|
||||
: > "$BOOTFS/ssh"
|
||||
cat > "$BOOTFS/userconf.txt" <<EOF
|
||||
${PI_USERNAME}:${PASSWORD_HASH}
|
||||
EOF
|
||||
|
||||
cat > "$ROOTFS/etc/hostname" <<EOF
|
||||
if [[ "$ROOTFS_READY" -eq 1 ]]; then
|
||||
cat > "$ROOTFS/etc/hostname" <<EOF
|
||||
${HOSTNAME}
|
||||
EOF
|
||||
|
||||
cat > "$ROOTFS/etc/hosts" <<EOF
|
||||
cat > "$ROOTFS/etc/hosts" <<EOF
|
||||
127.0.0.1 localhost
|
||||
::1 localhost ip6-localhost ip6-loopback
|
||||
ff02::1 ip6-allnodes
|
||||
|
|
@ -78,13 +87,14 @@ ff02::2 ip6-allrouters
|
|||
127.0.1.1 ${HOSTNAME}
|
||||
EOF
|
||||
|
||||
mkdir -p "$ROOTFS/home/pi/.ssh"
|
||||
cat > "$ROOTFS/home/pi/.ssh/authorized_keys" <<EOF
|
||||
mkdir -p "$ROOTFS/home/pi/.ssh"
|
||||
cat > "$ROOTFS/home/pi/.ssh/authorized_keys" <<EOF
|
||||
${SSH_KEY}
|
||||
EOF
|
||||
chown -R 1000:1000 "$ROOTFS/home/pi/.ssh"
|
||||
chmod 700 "$ROOTFS/home/pi/.ssh"
|
||||
chmod 600 "$ROOTFS/home/pi/.ssh/authorized_keys"
|
||||
chown -R 1000:1000 "$ROOTFS/home/pi/.ssh"
|
||||
chmod 700 "$ROOTFS/home/pi/.ssh"
|
||||
chmod 600 "$ROOTFS/home/pi/.ssh/authorized_keys"
|
||||
fi
|
||||
|
||||
sync
|
||||
|
||||
|
|
@ -94,5 +104,7 @@ echo "- Wi-Fi: ${WIFI_SSID}"
|
|||
echo "- SSH enabled on first boot"
|
||||
echo "- Serial UART enabled"
|
||||
echo "- Username: ${PI_USERNAME}"
|
||||
echo "- Password: ${PI_PASSWORD}"
|
||||
echo "- Pi user authorized key installed"
|
||||
if [[ "$ROOTFS_READY" -ne 1 ]]; then
|
||||
echo "- Note: rootfs was not mounted; only boot partition config was updated"
|
||||
fi
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue