Files
svr/install/arm_install.sh
T
2026-01-23 08:55:18 +01:00

123 lines
2.8 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/bash
set -euo pipefail
cleanup() {
set +e
umount -l "$MOUNT_DIR/dev" "$MOUNT_DIR/sys" "$MOUNT_DIR/proc" 2>/dev/null
umount -l "$MOUNT_DIR/boot" "$MOUNT_DIR" 2>/dev/null
[ -n "${LOOPDEV:-}" ] && losetup -d "$LOOPDEV" 2>/dev/null
}
trap cleanup EXIT
IMG_URL="https://downloads.raspberrypi.org/raspios_lite_armhf_latest"
IMG_FILE="raspios_lite.img"
COMPR_IMG="raspios_lite.img.xz"
MOUNT_DIR="/mnt/rpi"
SSH_PORT=888
WIFI_SSID="$1"
WIFI_PASS="$2"
ROOT_PASS="$3"
if [ ! -e $IMG_FILE ] ; then
if [ ! -e $COMPR_IMG ] ; then
wget -O ${COMPR_IMG} "$IMG_URL"
wget -O "${IMG_FILE}.sha256" "${IMG_URL}.sha256"
cd $(dirname "$IMG_FILE")
sha256sum -c "${COMPR_IMG}.sha256" --status
if [ $? -ne 0 ]; then
echo "SHA256 mismatch ! Aborting."
exit 1
else
echo "shasum ok"
fi
cd -
fi
unxz -f "$COMPR_IMG"
fi
apt-get install qemu-user-static binfmt-support
cp /usr/bin/qemu-arm-static $MOUNT_DIR/usr/bin/
# 2. Associer limage à un loop device
LOOPDEV=$(losetup --find --partscan --show "$IMG_FILE")
BOOTPART="${LOOPDEV}p1"
ROOTPART="${LOOPDEV}p2"
parted --script "$LOOPDEV" resizepart 2 100%
e2fsck -f -y "$ROOTPART"
resize2fs "$ROOTPART"
mkdir -p "$MOUNT_DIR"
mount "$ROOTPART" "$MOUNT_DIR"
mount "$BOOTPART" "$MOUNT_DIR/boot"
mount --bind /dev "$MOUNT_DIR/dev"
mount --bind /sys "$MOUNT_DIR/sys"
mount --bind /proc "$MOUNT_DIR/proc"
cp /etc/resolv.conf "$MOUNT_DIR/etc/"
chroot "$MOUNT_DIR" /bin/bash <<EOF
set -e
# Paquets nécessaires
apt-get update
apt-get install -y docker.io docker-compose ufw
# Dossier deb_dock
mkdir -p /root/machine
# (copie depuis lextérieur faite plus tard)
# SSH
echo "root:${ROOT_PASS}" | chpasswd
sed -i "s/^#Port.*/Port ${SSH_PORT}/" /etc/ssh/sshd_config
sed -i "s/^#PermitRootLogin.*/PermitRootLogin yes/" /etc/ssh/sshd_config
sed -i "s/^#PasswordAuthentication.*/PasswordAuthentication yes/" /etc/ssh/sshd_config
# UFW
ufw --force reset
ufw default deny incoming
ufw allow ${SSH_PORT}/tcp
ufw --force enable
# Wi-Fi
cat > /etc/wpa_supplicant/wpa_supplicant.conf <<WIFI
country=FR
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="${WIFI_SSID}"
psk="${WIFI_PASS}"
}
WIFI
# Service run_ssh
cat > /etc/systemd/system/run_ssh.service <<SERV
[Unit]
Description=Run SSH init docker
After=network.target
[Service]
ExecStart=/root/machine/deb_dock/run_ssh.sh
Restart=always
[Install]
WantedBy=multi-user.target
SERV
systemctl enable run_ssh.service
EOF
# 6. Copier deb_dock
rsync -a machine/deb_dock/ "$MOUNT_DIR/root/machine/deb_dock/"
# 7. Nettoyage
umount -l "$MOUNT_DIR/dev" "$MOUNT_DIR/sys" "$MOUNT_DIR/proc"
umount -l "$MOUNT_DIR/boot" "$MOUNT_DIR"
losetup -d "$LOOPDEV"
echo "Image prête. Écrivez-la sur SSD avec: sudo dd if=${IMG_FILE%.xz} of=/dev/sdX bs=4M status=progress"