From 292f29ed8dfe8e2b1db571e005138de7f348c8a3 Mon Sep 17 00:00:00 2001 From: macmpi Date: Sat, 9 Jul 2022 14:34:58 +0200 Subject: [PATCH] Initial commit --- README.md | 46 ++++++++- headless.apkovl.tar.gz | Bin 0 -> 6400 bytes make.sh | 4 + overlay/etc/.default_boot_services | 0 overlay/etc/local.d/headless.start | 124 +++++++++++++++++++++++ overlay/etc/modprobe.d/g_ether.conf | 3 + overlay/etc/modules-load.d/g_ether.conf | 6 ++ overlay/etc/runlevels/default/local | 1 + overlay/etc/ssh/ssh_host_dsa_key | 21 ++++ overlay/etc/ssh/ssh_host_dsa_key.pub | 1 + overlay/etc/ssh/ssh_host_ecdsa_key | 9 ++ overlay/etc/ssh/ssh_host_ecdsa_key.pub | 1 + overlay/etc/ssh/ssh_host_ed25519_key | 7 ++ overlay/etc/ssh/ssh_host_ed25519_key.pub | 1 + overlay/etc/ssh/ssh_host_rsa_key | 38 +++++++ overlay/etc/ssh/ssh_host_rsa_key.pub | 1 + sample_interfaces | 19 ++++ sample_unattended.sh | 6 ++ sample_wpa_supplicant.conf | 8 ++ 19 files changed, 294 insertions(+), 2 deletions(-) create mode 100644 headless.apkovl.tar.gz create mode 100755 make.sh create mode 100644 overlay/etc/.default_boot_services create mode 100755 overlay/etc/local.d/headless.start create mode 100644 overlay/etc/modprobe.d/g_ether.conf create mode 100644 overlay/etc/modules-load.d/g_ether.conf create mode 120000 overlay/etc/runlevels/default/local create mode 100644 overlay/etc/ssh/ssh_host_dsa_key create mode 100644 overlay/etc/ssh/ssh_host_dsa_key.pub create mode 100644 overlay/etc/ssh/ssh_host_ecdsa_key create mode 100644 overlay/etc/ssh/ssh_host_ecdsa_key.pub create mode 100644 overlay/etc/ssh/ssh_host_ed25519_key create mode 100644 overlay/etc/ssh/ssh_host_ed25519_key.pub create mode 100644 overlay/etc/ssh/ssh_host_rsa_key create mode 100644 overlay/etc/ssh/ssh_host_rsa_key.pub create mode 100644 sample_interfaces create mode 100644 sample_unattended.sh create mode 100644 sample_wpa_supplicant.conf diff --git a/README.md b/README.md index 71dd2ac..18d6ce5 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,44 @@ -# alpine-linux-headless-bootstrap -Headless Alpine Linux deployment scripts +# Deploy Alpine Linux on a headless box + +The [Alpine Linux documentation](https://docs.alpinelinux.org/user-handbook/0.1a/Installing/setup_alpine.html) assumes one can interract with system directly with a keyboard & display.\ +However, there are many cases where one might want to deploy a headless system, only available via a network connection (ethernet, wifi or as USB ethernet gadget). + +This repo provides an overaly file headless system can boot with (leveraging Alpine distro's `initramfs` feature): it enables basic ssh server to log-into from another Computer in order to finalize system set-up. + + +## Install procedure: +Please follow [Alpine Linux Wiki](https://wiki.alpinelinux.org/wiki/Installation#Installation_Overview) to download & create installation media for chosen platform.\ +Tools provided here can be used on any plaform for any install modes (diskless, data disk, system disk). + +Just add [**headless.apkovl.tar.gz**](https://github.com/macmpi/alpine-linux-headless-bootstrap/raw/main/headless.apkovl.tar.gz) overlay file at the root of Alpine Linux boot media (or onto any writeable side-media) and boot the box ! + +With default network interface definitions (and optional wifi SSID/pass file), one may then access the system under `ssh` with:\ +`ssh root@` (system IP address may be determined with any IP scanning tools such as `nmap`). + +As with Alpine Linux initial bring-up, `root` account has no password initially (change that after setup!).\ +From there, system install can be fine-tuned as usual with `setup-alpine` for instance (check wiki for details). + + +Optional files can be added next to `headless.apkovl.tar.gz` to customise setup (sample files are provided): +- `wpa_supplicant.conf`: define wifi SSID & password (mandatory for wifi usecase). +- `interfaces`: define network interfaces at will, if [defaults](https://github.com/macmpi/alpine-linux-headless-bootstrap/blob/main/overlay/etc/local.d/headless.start#L26-L64) (DCHP-based) are not suitable. +- `unattended.sh`: make custom automated deployment script to further tune setup automatically (backgrounded). + +*Note:* these files are linux text files: Windows/macOS users need to use text editors supporting linux text line-ending (such as [notepad++](https://notepad-plus-plus.org/), BBEdit or any other). + +Main steps are logged in `/var/log/messages`. + + +## How to customize further ? +This repository may be forked/cloned/downloaded.\ +Main script file is [`headless.start`](https://github.com/macmpi/alpine-linux-headless-bootstrap/blob/main/overlay/etc/local.d/headless.start).\ +Execute `./make.sh` to rebuild `headless.apkovl.tar.gz`. + +*Side note:* one nicety for bootstrapping PiZero devices or similar which can support USB ethernet gadget networking.\ +Just add `dtoverlay=dwc2` in `config.txt`, and plug-in USB to Computer port.\ +With Computer set-up to share networking with USB interface, device will appear at 10.42.0.2 onto Computer's subnet to log into !... + + +## Credits +Thanks for the original instructions & scripts from @sodface and @davidmytton. + diff --git a/headless.apkovl.tar.gz b/headless.apkovl.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..f180b023db51cf935f18d033083ea11ed6c74437 GIT binary patch literal 6400 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 ObMRj^+I`mmcmM!1Xry5P literal 0 HcmV?d00001 diff --git a/make.sh b/make.sh new file mode 100755 index 0000000..1db0cc9 --- /dev/null +++ b/make.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +chmod +x overlay/etc/local.d/headless.start +tar czvf headless.apkovl.tar.gz -C overlay etc --owner=0 --group=0 diff --git a/overlay/etc/.default_boot_services b/overlay/etc/.default_boot_services new file mode 100644 index 0000000..e69de29 diff --git a/overlay/etc/local.d/headless.start b/overlay/etc/local.d/headless.start new file mode 100755 index 0000000..efbab99 --- /dev/null +++ b/overlay/etc/local.d/headless.start @@ -0,0 +1,124 @@ +#!/bin/sh + +# Redirect stdout and errors to console as rc.local does not log anything +exec 1>/dev/console 2>&1 + +mkdir /tmp/.trash +ovlpath=$( find /media -type f -name *.apkovl.tar.gz -exec dirname {} \; | head -1 ) + + +## Setup Network interfaces +if [ -f "${ovlpath}/wpa_supplicant.conf" ]; then + logger -st ${0##*/} "Wifi setup found !" + apk add wpa_supplicant + cp "${ovlpath}/wpa_supplicant.conf" /etc/wpa_supplicant/wpa_supplicant.conf + rc-service wpa_supplicant start +else + logger -st ${0##*/} "Wifi setup not found !" +fi + +if ! cp "${ovlpath}/interfaces" /etc/network/interfaces; then + # set default interfaces if not specified by interface file on boot storage + logger -st ${0##*/} "No interfaces file supplied, building default interfaces..." + for dev in $(ls /sys/class/net) + do + case ${dev%%[0-9]*} in + lo) + cat <<-EOF >> /etc/network/interfaces + auto $dev + iface $dev inet loopback + + EOF + ;; + eth) + cat <<-EOF >> /etc/network/interfaces + auto $dev + iface $dev inet dhcp + hostname localhost + + EOF + ;; + wlan) + [ -f /etc/wpa_supplicant/wpa_supplicant.conf ] && cat <<-EOF >> /etc/network/interfaces + auto $dev + iface $dev inet dhcp + hostname localhost + + EOF + ;; + usb) + cat <<-EOF >> /etc/network/interfaces + auto $dev + iface $dev inet static + address 10.42.0.2/24 + gateway 10.42.0.1 + hostname localhost + + EOF + + cat <<-EOF > /etc/resolv.conf + nameserver 208.67.222.222 + nameserver 208.67.220.220 + + EOF + ;; + esac + done +fi + +echo "Using following network interfaces:" +cat /etc/network/interfaces + +rc-service networking start + + +## Setup temporary SSH server (root login, no password) +## we use some bundled keys to avoid generation at boot and save time +## bundled temporary keys are moved in /tmp so they won't be stored +## within permanent config later (new ones will then be generated) +apk add openssh + +mv /etc/ssh/ssh_host_* /tmp/.trash/. + +cp /etc/ssh/sshd_config /etc/ssh/sshd_config.orig +cat <<-EOF >> /etc/ssh/sshd_config + AuthenticationMethods none + PermitEmptyPasswords yes + PermitRootLogin yes + HostKey /tmp/.trash/ssh_host_dsa_key + HostKey /tmp/.trash/ssh_host_ecdsa_key + HostKey /tmp/.trash/ssh_host_ed25519_key + HostKey /tmp/.trash/ssh_host_rsa_key + EOF + +cp /etc/conf.d/sshd /etc/conf.d/sshd.orig +cat <<-EOF >> /etc/conf.d/sshd + sshd_disable_keygen=yes + EOF + +rc-service sshd start + +if [ -f "${ovlpath}/unattended.sh" ]; then + install -m755 "${ovlpath}/unattended.sh" /tmp/unattended.sh + /tmp/unattended.sh >/dev/console 2>&1 & + logger -st ${0##*/} "/tmp/unattended.sh script launched in the background with PID $!" +fi + + +## Prep for final post-cleanup +cat <<-EOF > /tmp/.trash/post-cleanup + #!/bin/sh + logger -st ${0##*/} "Cleaning-up..." + mv /etc/ssh/sshd_config.orig /etc/ssh/sshd_config + mv /etc/conf.d/sshd.orig /etc/conf.d/sshd + rm /etc/modules-load.d/g_ether.conf + rm /etc/modprobe.d/g_ether.conf + rc-update del local default + rm /etc/local.d/headless.start + + logger -st ${0##*/} "Done !!" + EOF + +chmod +x /tmp/.trash/post-cleanup +exec /tmp/.trash/post-cleanup + diff --git a/overlay/etc/modprobe.d/g_ether.conf b/overlay/etc/modprobe.d/g_ether.conf new file mode 100644 index 0000000..b161bba --- /dev/null +++ b/overlay/etc/modprobe.d/g_ether.conf @@ -0,0 +1,3 @@ +# added to support USB-Ethernet gadget mode at boot for Pi devices + +options g_ether dev_addr=ea:64:2f:e8:19:94 host_addr=f6:67:ce:b3:c0:ea diff --git a/overlay/etc/modules-load.d/g_ether.conf b/overlay/etc/modules-load.d/g_ether.conf new file mode 100644 index 0000000..e5456e0 --- /dev/null +++ b/overlay/etc/modules-load.d/g_ether.conf @@ -0,0 +1,6 @@ +# added to support USB-Ethernet gadget mode at boot for Pi devices +# also requires dtoverlay=dwc2 is added to usercfg.txt or config.txt + +dwc2 +g_ether + diff --git a/overlay/etc/runlevels/default/local b/overlay/etc/runlevels/default/local new file mode 120000 index 0000000..ddda14b --- /dev/null +++ b/overlay/etc/runlevels/default/local @@ -0,0 +1 @@ +/etc/init.d/local \ No newline at end of file diff --git a/overlay/etc/ssh/ssh_host_dsa_key b/overlay/etc/ssh/ssh_host_dsa_key new file mode 100644 index 0000000..dfc83c8 --- /dev/null +++ b/overlay/etc/ssh/ssh_host_dsa_key @@ -0,0 +1,21 @@ +-----BEGIN OPENSSH PRIVATE KEY----- +b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABsQAAAAdzc2gtZH +NzAAAAgQDHKXTtPOsM86zrYXbYx4JpmRlxIipjm1H2ce8YyTWJj3es/rjMXN3bB3LOuXWB +20XzwU8Z/cIOyhzWixsucU60bmiP7y+lR1m9bqYD+GftcmJJD4A5kpz1laivGqRNhpfYrN +TAe7+jGNi7xh80O91L3ScCQArZJdhhNAa9HosV/QAAABUAlZem7iptLcndvpXz3Gj1MXYY +bN0AAACASzMGzrARwRQB1KPxjrwVXVoPi5QGH3bnziaWMiKXxVu2br5lkqu57unXUHX1ec +r3emUbghGQdQmk8ERnxYokbKHihsHoYBY4GYPRuz6WI52PcHFwaw2ceLjCASEJVgzNdn/K +PNS1Qx68XvTwt7+F1ZlRKnG2aIZA+PqpeUCU/IcAAACAdb1dRX6MNPoim9e4JIRVc8QZXs +UNJt0BhzHMMLRBokuqHEsEdOm7sw2uKyh7NlmmbaLH2AcI9B1+XeeK4lxsZpy+D2F1fwV9 +X2aQ27oa2p7U/mNmTdKySYuYauLJCZQrfkDcAXi9QWkJzloy/PsRnftCUUj2jM9AAPbEy5 +gz5TMAAAHoLcg8tS3IPLUAAAAHc3NoLWRzcwAAAIEAxyl07TzrDPOs62F22MeCaZkZcSIq +Y5tR9nHvGMk1iY93rP64zFzd2wdyzrl1gdtF88FPGf3CDsoc1osbLnFOtG5oj+8vpUdZvW +6mA/hn7XJiSQ+AOZKc9ZWorxqkTYaX2KzUwHu/oxjYu8YfNDvdS90nAkAK2SXYYTQGvR6L +Ff0AAAAVAJWXpu4qbS3J3b6V89xo9TF2GGzdAAAAgEszBs6wEcEUAdSj8Y68FV1aD4uUBh +92584mljIil8Vbtm6+ZZKrue7p11B19XnK93plG4IRkHUJpPBEZ8WKJGyh4obB6GAWOBmD +0bs+liOdj3BxcGsNnHi4wgEhCVYMzXZ/yjzUtUMevF708Le/hdWZUSpxtmiGQPj6qXlAlP +yHAAAAgHW9XUV+jDT6IpvXuCSEVXPEGV7FDSbdAYcxzDC0QaJLqhxLBHTpu7MNrisoezZZ +pm2ix9gHCPQdfl3niuJcbGacvg9hdX8FfV9mkNu6Gtqe1P5jZk3SskmLmGriyQmUK35A3A +F4vUFpCc5aMvz7EZ37QlFI9ozPQAD2xMuYM+UzAAAAFBiKoHh90r3tzH+wk9EBRTiMCE3d +AAAADnJvb3RAbG9jYWxob3N0AQIDBAU= +-----END OPENSSH PRIVATE KEY----- diff --git a/overlay/etc/ssh/ssh_host_dsa_key.pub b/overlay/etc/ssh/ssh_host_dsa_key.pub new file mode 100644 index 0000000..c06d183 --- /dev/null +++ b/overlay/etc/ssh/ssh_host_dsa_key.pub @@ -0,0 +1 @@ +ssh-dss AAAAB3NzaC1kc3MAAACBAMcpdO086wzzrOthdtjHgmmZGXEiKmObUfZx7xjJNYmPd6z+uMxc3dsHcs65dYHbRfPBTxn9wg7KHNaLGy5xTrRuaI/vL6VHWb1upgP4Z+1yYkkPgDmSnPWVqK8apE2Gl9is1MB7v6MY2LvGHzQ73UvdJwJACtkl2GE0Br0eixX9AAAAFQCVl6buKm0tyd2+lfPcaPUxdhhs3QAAAIBLMwbOsBHBFAHUo/GOvBVdWg+LlAYfdufOJpYyIpfFW7ZuvmWSq7nu6ddQdfV5yvd6ZRuCEZB1CaTwRGfFiiRsoeKGwehgFjgZg9G7PpYjnY9wcXBrDZx4uMIBIQlWDM12f8o81LVDHrxe9PC3v4XVmVEqcbZohkD4+ql5QJT8hwAAAIB1vV1Ffow0+iKb17gkhFVzxBlexQ0m3QGHMcwwtEGiS6ocSwR06buzDa4rKHs2WaZtosfYBwj0HX5d54riXGxmnL4PYXV/BX1fZpDbuhrantT+Y2ZN0rJJi5hq4skJlCt+QNwBeL1BaQnOWjL8+xGd+0JRSPaMz0AA9sTLmDPlMw== root@localhost diff --git a/overlay/etc/ssh/ssh_host_ecdsa_key b/overlay/etc/ssh/ssh_host_ecdsa_key new file mode 100644 index 0000000..46075c8 --- /dev/null +++ b/overlay/etc/ssh/ssh_host_ecdsa_key @@ -0,0 +1,9 @@ +-----BEGIN OPENSSH PRIVATE KEY----- +b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAaAAAABNlY2RzYS +1zaGEyLW5pc3RwMjU2AAAACG5pc3RwMjU2AAAAQQQAo6TcIAgnFGCX0HJbqFtwEa/H+NQ1 +gQpZf9+gKJcWCNIGkGdSgerERbqx3anjEDKvwzlPrwSaaF0gMSRg/2yfAAAAqLTc/Ou03P +zrAAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBACjpNwgCCcUYJfQ +cluoW3ARr8f41DWBCll/36AolxYI0gaQZ1KB6sRFurHdqeMQMq/DOU+vBJpoXSAxJGD/bJ +8AAAAhAJ2Ka8kkJQcRGROSTPW+PBY6hM8K3CUhZsN34HMHVXxTAAAADnJvb3RAbG9jYWxo +b3N0AQ== +-----END OPENSSH PRIVATE KEY----- diff --git a/overlay/etc/ssh/ssh_host_ecdsa_key.pub b/overlay/etc/ssh/ssh_host_ecdsa_key.pub new file mode 100644 index 0000000..a378fe2 --- /dev/null +++ b/overlay/etc/ssh/ssh_host_ecdsa_key.pub @@ -0,0 +1 @@ +ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBACjpNwgCCcUYJfQcluoW3ARr8f41DWBCll/36AolxYI0gaQZ1KB6sRFurHdqeMQMq/DOU+vBJpoXSAxJGD/bJ8= root@localhost diff --git a/overlay/etc/ssh/ssh_host_ed25519_key b/overlay/etc/ssh/ssh_host_ed25519_key new file mode 100644 index 0000000..c459d37 --- /dev/null +++ b/overlay/etc/ssh/ssh_host_ed25519_key @@ -0,0 +1,7 @@ +-----BEGIN OPENSSH PRIVATE KEY----- +b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW +QyNTUxOQAAACCF1PEIbFPSWF5xRx3uqY+AcSgwKn3t8S/jLV3unTJWLgAAAJjeHXU03h11 +NAAAAAtzc2gtZWQyNTUxOQAAACCF1PEIbFPSWF5xRx3uqY+AcSgwKn3t8S/jLV3unTJWLg +AAAEBf0MGN5wVf2zA5llczr1s/rZQZgxEC45vUpqMkBGSkW4XU8QhsU9JYXnFHHe6pj4Bx +KDAqfe3xL+MtXe6dMlYuAAAADnJvb3RAbG9jYWxob3N0AQIDBAUGBw== +-----END OPENSSH PRIVATE KEY----- diff --git a/overlay/etc/ssh/ssh_host_ed25519_key.pub b/overlay/etc/ssh/ssh_host_ed25519_key.pub new file mode 100644 index 0000000..ef5bfb0 --- /dev/null +++ b/overlay/etc/ssh/ssh_host_ed25519_key.pub @@ -0,0 +1 @@ +ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIXU8QhsU9JYXnFHHe6pj4BxKDAqfe3xL+MtXe6dMlYu root@localhost diff --git a/overlay/etc/ssh/ssh_host_rsa_key b/overlay/etc/ssh/ssh_host_rsa_key new file mode 100644 index 0000000..7b6624a --- /dev/null +++ b/overlay/etc/ssh/ssh_host_rsa_key @@ -0,0 +1,38 @@ +-----BEGIN OPENSSH PRIVATE KEY----- +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 +-----END OPENSSH PRIVATE KEY----- diff --git a/overlay/etc/ssh/ssh_host_rsa_key.pub b/overlay/etc/ssh/ssh_host_rsa_key.pub new file mode 100644 index 0000000..1b0d9d7 --- /dev/null +++ b/overlay/etc/ssh/ssh_host_rsa_key.pub @@ -0,0 +1 @@ +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDS3eKGoDAB5ZuVtj17zzmwl8MLQSjVshc4ZoF9JGdpEtT6UPV5SG0RFW7j11n6knJPFlZ59druNTy6eBPGTS7E5tofZAuNzD5mpbkcPK6xiGOkhIlYghCnDeKKZzbyZ5aXE91wTVhaCuy5fVV4uY3Q3n9Ew5Wrpb8Ty7lj+zbo9qeMZMLwEKABoATQfrdzD4/NmiMMAWgpeEcghFUt2x3oLn4nsFPxV/m8uwHZ1jzglhIuae89cWAu2xnqgncwUehEXIRJdnwMFJN7xqdZj96KCkAdAVFe9FsLZy1XXII90yOvA2IqFqDabhWPMQ4gypgxdITm+LqgYYyukj8eD47nf3ROXR7MjIzJ/xrRBymu0v8FUkRC2oMjY4c4gCoDFK6bbZp9h6VxydC2ohr+BEVTsZ4BPW7UlycuBQl+N3LQ618Yag7eEJ3l6tGInE2X15ptvNOAsYDtpaH0FQ+EV77VHmPrDksz1xc5UU4tUIQZ9Kp19VqTSNgSN4oICnmJQCE= root@localhost diff --git a/sample_interfaces b/sample_interfaces new file mode 100644 index 0000000..eefd4ef --- /dev/null +++ b/sample_interfaces @@ -0,0 +1,19 @@ +# Sample network interfaces file + +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet dhcp + hostname localhost + +auto wlan0 +iface wlan0 inet dhcp + hostname localhost + +auto usb0 +iface usb0 inet static + address 10.42.0.2/24 + gateway 10.42.0.1 + hostname localhost + diff --git a/sample_unattended.sh b/sample_unattended.sh new file mode 100644 index 0000000..2d8844e --- /dev/null +++ b/sample_unattended.sh @@ -0,0 +1,6 @@ +#/bin/sh + +echo hello world !! +sleep 60 +logger -st ${0##*/} "Finished unattended script" + diff --git a/sample_wpa_supplicant.conf b/sample_wpa_supplicant.conf new file mode 100644 index 0000000..021f3e4 --- /dev/null +++ b/sample_wpa_supplicant.conf @@ -0,0 +1,8 @@ +# Sample wpa_supplicant.conf +country=FR + +network={ + key_mgmt=WPA-PSK + ssid="mySSID" + psk="myPassPhrase" +}