From aa371a2e0ce597089d3346ac0f4f2c7d7e2d30cf Mon Sep 17 00:00:00 2001 From: macmpi Date: Thu, 11 May 2023 15:04:54 +0200 Subject: [PATCH 01/10] limit search depth for apkovl file --- headless.apkovl.tar.gz | Bin 4706 -> 4713 bytes overlay/etc/local.d/headless.start | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/headless.apkovl.tar.gz b/headless.apkovl.tar.gz index 5faa7c9a570be9bb9feef0b39ee1967d474bf5b3..cbabc4249389d2a03cd31e9a3469a9b55b26105c 100644 GIT binary patch delta 4134 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 diff --git a/overlay/etc/local.d/headless.start b/overlay/etc/local.d/headless.start index 49b3fe8..1fbcbca 100755 --- a/overlay/etc/local.d/headless.start +++ b/overlay/etc/local.d/headless.start @@ -8,7 +8,7 @@ exec 1>/dev/console 2>&1 logger -st ${0##*/} "Alpine Linux headless bootstrap v$VERSION by macmpi" mkdir /tmp/.trash -ovlpath=$( find /media -type d -path '*/.*' -prune -o -type f -name *.apkovl.tar.gz -exec dirname {} \; | head -1 ) +ovlpath=$( find /media -maxdepth 2 -type d -path '*/.*' -prune -o -type f -name *.apkovl.tar.gz -exec dirname {} \; | head -1 ) ## Setup Network interfaces From 84da591fda29c8843bce2b5a396f7f7cac6b0292 Mon Sep 17 00:00:00 2001 From: macmpi Date: Thu, 11 May 2023 17:53:42 +0200 Subject: [PATCH 02/10] allow to inject custom ssh keys --- README.md | 3 ++- headless.apkovl.tar.gz | Bin 4713 -> 4796 bytes overlay/etc/local.d/headless.start | 20 ++++++++++++-------- 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 06756d0..b7873ee 100644 --- a/README.md +++ b/README.md @@ -22,6 +22,7 @@ From there, system install can be fine-tuned as usual with `setup-alpine` for in Add-on files may be added next to `headless.apkovl.tar.gz` to customise setup (sample files are provided): - `wpa_supplicant.conf` (*mandatory for wifi usecase*): define wifi SSID & password. - `interfaces` (*optional*): define network interfaces at will, if defaults DCHP-based are not suitable. +- `ssh_host_*_key*` (*optional*): provide custom ssh keys to be injected (can be stored), instead of bundled ones[^1] (not stored). - `unattended.sh` (*optional*): make custom automated deployment script to further tune & extend setup (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). @@ -32,7 +33,7 @@ With Computer set-up to share networking with USB interface as 10.42.0.1 gateway Main execution steps are logged in `/var/log/messages`. -[^1]: About bundled ssh keys: as this package is essentially intended to **quickly bootstrap** system in order to configure it, it purposely embeds [some ssh keys](https://github.com/macmpi/alpine-linux-headless-bootstrap/tree/main/overlay/etc/ssh) so that bootstrapping is as fast as possible. Those (temporary) keys are moved in /tmp, so they will **not be saved/reused** once permanent configuration is set (with or without ssh server voluntarily installed in permanent setup). +[^1]: About bundled ssh keys: as this package is essentially intended to **quickly bootstrap** system in order to configure it, it purposely embeds [some ssh keys](https://github.com/macmpi/alpine-linux-headless-bootstrap/tree/main/overlay/etc/ssh) so that bootstrapping is as fast as possible. Those (temporary) keys are moved in RAM /tmp, so they will **not be saved/reused** once permanent configuration is set (with or without ssh server voluntarily installed in permanent setup). ## How to customize further ? diff --git a/headless.apkovl.tar.gz b/headless.apkovl.tar.gz index cbabc4249389d2a03cd31e9a3469a9b55b26105c..1f03f6d43cdb4bc17849e3f3a0533089b4f18e4a 100644 GIT binary patch delta 4634 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 /etc/ssh/sshd_config AuthenticationMethods none PermitEmptyPasswords yes PermitRootLogin yes - HostKey /tmp/.trash/ssh_host_ed25519_key - HostKey /tmp/.trash/ssh_host_rsa_key EOF +# inject optional custom keys (those might be stored) +if ! install -m600 "${ovlpath}"/ssh_host_*_key* /etc/ssh/; then + echo "HostKey /tmp/.trash/ssh_host_ed25519_key" >> /etc/ssh/sshd_config + echo "HostKey /tmp/.trash/ssh_host_rsa_key" >> /etc/ssh/sshd_config +fi + cp /etc/conf.d/sshd /etc/conf.d/sshd.orig cat <<-EOF >> /etc/conf.d/sshd sshd_disable_keygen=yes From 124f39d1c8649a6177eccf9a8df6ba1188952281 Mon Sep 17 00:00:00 2001 From: macmpi Date: Thu, 11 May 2023 19:51:45 +0200 Subject: [PATCH 03/10] add few code snippets for some unattended actions --- sample_unattended.sh | 79 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) diff --git a/sample_unattended.sh b/sample_unattended.sh index 2d8844e..b0cb3bf 100644 --- a/sample_unattended.sh +++ b/sample_unattended.sh @@ -1,6 +1,85 @@ #/bin/sh +## collection of few code snippets as sample unnatteded actions some may find usefull + + +## Obvious one; reminder: is run in the background echo hello world !! sleep 60 + +######################################################## + + +## This snippet removes apkovl file on volume after initial boot +ovlpath=$( find /media -maxdepth 2 -type d -path '*/.*' -prune -o -type f -name *.apkovl.tar.gz -exec dirname {} \; | head -1 ) + +# also works in case volume is mounted read-only +grep -q "${ovlpath}.*[[:space:]]ro[[:space:],]" /proc/mounts; RO=$? +[ "$RO" -eq "0" ] && mount -o remount,rw "${ovlpath}" +rm "${ovlpath}"/*.apkovl.tar.gz +[ "$RO" -eq "0" ] && mount -o remount,ro "${ovlpath}" + +######################################################## + + +## This snippet configures Minimal diskless environment +# note: with INTERFACESOPTS=none, no networking will be setup so it won't work after reboot! +# Change it or run setup-interfaces in interractive mode afterwards (and lbu commit -d thenafter) + +logger -st ${0##*/} "Setting-up minimal environment" + +cat <<-EOF > /tmp/ANSWERFILE + # base answer file for setup-alpine script + + # Do not set keyboard layout + KEYMAPOPTS=none + + # Keep hostname + HOSTNAMEOPTS="$(hostname)" + + # Set device manager to mdev + DEVDOPTS=mdev + + # Contents of /etc/network/interfaces + INTERFACESOPTS=none + + # Set Public nameserver + DNSOPTS="-n 208.67.222.222" + + # Set timezone to UTC + TIMEZONEOPTS="UTC" + + # set http/ftp proxy + PROXYOPTS=none + + # Add first mirror (CDN) + APKREPOSOPTS="-1" + + # Do not create any user + USEROPTS=none + + # No Openssh + SSHDOPTS=none + + # Use openntpd + NTPOPTS="chrony" + + # No disk install (diskless) + DISKOPTS=none + + # Setup storage for diskless (find boot directory in /media/xxxx/apk/.boot_repository) + LBUOPTS="$( find /media -maxdepth 3 -type d -path '*/.*' -prune -o -type f -name '.boot_repository' -exec dirname {} \; | head -1 | xargs dirname )" + APKCACHEOPTS="\$LBUOPTS/cache" + + EOF + +# trick setup-alpine to pretend existing SSH connection +# and therefore keep (do not reset) network interfaces while running in background +SSH_CONNECTION="FAKE" setup-alpine -ef /tmp/ANSWERFILE +lbu commit -d + +######################################################## + + logger -st ${0##*/} "Finished unattended script" From c41be0072c0f4f6ab441ea6034145b04248a8751 Mon Sep 17 00:00:00 2001 From: macmpi Date: Thu, 11 May 2023 20:41:37 +0200 Subject: [PATCH 04/10] Add banner --- headless.apkovl.tar.gz | Bin 4796 -> 4822 bytes overlay/etc/local.d/headless.start | 8 ++++++++ 2 files changed, 8 insertions(+) diff --git a/headless.apkovl.tar.gz b/headless.apkovl.tar.gz index 1f03f6d43cdb4bc17849e3f3a0533089b4f18e4a..4c076e0d2a109934956cc81139c0e478825fc463 100644 GIT binary patch delta 4769 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 /tmp/.trash/banner + + Alpine Linux headless bootstrap v$VERSION by macmpi + + EOF + # bundled temporary keys are moved in RAM /tmp so they won't be stored # within permanent config later (new ones will then be generated) mv /etc/ssh/ssh_host_*_key* /tmp/.trash/. @@ -89,6 +96,7 @@ cat <<-EOF >> /etc/ssh/sshd_config AuthenticationMethods none PermitEmptyPasswords yes PermitRootLogin yes + Banner /tmp/.trash/banner EOF # inject optional custom keys (those might be stored) From fa083565409bba7215dfb7249a77559c33ec20ee Mon Sep 17 00:00:00 2001 From: macmpi Date: Fri, 12 May 2023 08:41:41 +0200 Subject: [PATCH 05/10] re-order ssh config code and add log info about temp key use --- headless.apkovl.tar.gz | Bin 4822 -> 4827 bytes overlay/etc/local.d/headless.start | 34 +++++++++++++++-------------- 2 files changed, 18 insertions(+), 16 deletions(-) diff --git a/headless.apkovl.tar.gz b/headless.apkovl.tar.gz index 4c076e0d2a109934956cc81139c0e478825fc463..72fd7185160840783e156183eb46692ca6426bdf 100644 GIT binary patch delta 4685 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 P^83jT-w5Oj08jt`&u&{k delta 4631 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 /etc/ssh/sshd_config + AuthenticationMethods none + PermitEmptyPasswords yes + PermitRootLogin yes + Banner /tmp/.trash/banner + EOF + +cat <<-EOF >> /etc/conf.d/sshd + sshd_disable_keygen=yes + EOF # banner file cat <<-EOF > /tmp/.trash/banner @@ -90,26 +103,15 @@ cat <<-EOF > /tmp/.trash/banner # bundled temporary keys are moved in RAM /tmp so they won't be stored # within permanent config later (new ones will then be generated) mv /etc/ssh/ssh_host_*_key* /tmp/.trash/. - -cp /etc/ssh/sshd_config /etc/ssh/sshd_config.orig -cat <<-EOF >> /etc/ssh/sshd_config - AuthenticationMethods none - PermitEmptyPasswords yes - PermitRootLogin yes - Banner /tmp/.trash/banner - EOF - # inject optional custom keys (those might be stored) if ! install -m600 "${ovlpath}"/ssh_host_*_key* /etc/ssh/; then - echo "HostKey /tmp/.trash/ssh_host_ed25519_key" >> /etc/ssh/sshd_config - echo "HostKey /tmp/.trash/ssh_host_rsa_key" >> /etc/ssh/sshd_config + logger -st ${0##*/} "Using bundled ssh keys from RAM..." + cat <<-EOF >> /etc/ssh/sshd_config + HostKey /tmp/.trash/ssh_host_ed25519_key + HostKey /tmp/.trash/ssh_host_rsa_key + EOF fi -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 ## Prep for final post-cleanup From a518b2d4213e2f2fe1a77513e584887144983d4c Mon Sep 17 00:00:00 2001 From: macmpi Date: Fri, 12 May 2023 09:26:50 +0200 Subject: [PATCH 06/10] init random generation --- headless.apkovl.tar.gz | Bin 4827 -> 4865 bytes overlay/etc/local.d/headless.start | 2 ++ 2 files changed, 2 insertions(+) diff --git a/headless.apkovl.tar.gz b/headless.apkovl.tar.gz index 72fd7185160840783e156183eb46692ca6426bdf..9fbe5503e2b0333f03f36e2de6f3241acd28ba5c 100644 GIT binary patch literal 4865 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 literal 4827 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 Date: Fri, 12 May 2023 14:04:05 +0200 Subject: [PATCH 07/10] SPDX stuff --- LICENSE.spdx | 7 +++++++ headless.apkovl.tar.gz | Bin 4865 -> 4923 bytes make.sh | 3 +++ overlay/etc/local.d/headless.start | 3 +++ overlay/etc/modprobe.d/g_ether.conf | 3 +++ overlay/etc/modules-load.d/g_ether.conf | 3 +++ sample_interfaces | 3 +++ sample_unattended.sh | 3 +++ sample_wpa_supplicant.conf | 3 +++ 9 files changed, 28 insertions(+) create mode 100644 LICENSE.spdx diff --git a/LICENSE.spdx b/LICENSE.spdx new file mode 100644 index 0000000..37c5475 --- /dev/null +++ b/LICENSE.spdx @@ -0,0 +1,7 @@ +SPDXVersion: SPDX-2.1 +DataLicense: CC0-1.0 +PackageName: alpine-linux-headless-bootstrap +PackageOriginator: macmpi +PackageHomePage: https://github.com/macmpi/alpine-linux-headless-bootstrap +PackageLicenseDeclared: MIT + diff --git a/headless.apkovl.tar.gz b/headless.apkovl.tar.gz index 9fbe5503e2b0333f03f36e2de6f3241acd28ba5c..802c8a823e0bb149568c55d08124d8a270b3dfe3 100644 GIT binary patch literal 4923 zcmV-B6U6KviwFP!000001ME6!v!hma{@VNs-0sPY&Ai9HC?30l5St_r0<^$ns*4@O zDprBx{~o07cI+N|x{|aznW{cj?_I<>+;i^P?}ecC;4gk>KxUvx@-fcv{`j~?35>!} z6sIWc3j{@Q9Qy(!e{aF=&^4`7gWwl+S+@U(?nC&0QV3@IKl?%GbXoh_o!9uf3FBW|E@XU5&!gu;vXk)97i#Pn(dFG82LH= zKLxzA|NQqlE}Qms-8iq)V0^AR_ha$+K>VW!O}%G-@;-cy|4#t3-JfQYgX|1TT%8;a z9X*V{|6H+qc6q-Y?N>`fTVAsW*+v8|pSNV<3vD1r3bBm>PggJk`P-0h*chPPgr+RuT3@*{V4&$&6Rw%Do zK}U&J7q<(&J+-%E-%*EVJTmA&_*-4>HY~fo$lhq|rSp#CXxi`VT0C+5d2?KAJ%U_z zmmRj*al?kWb!HV8*ooNd6C%WrxFs*ESP!luX0~!6tkEP!E;$dcr7OAg{6_7g4(9Qw z+qkHV8N0o^LpK+Bcdmm?&u;u{LBPRMU-vyFHCzhEc~bhD<5di+v|Adgx;rd%NjgRh zgpp`+^wjcFJ7aguT1d((v{|h^eoXkW_gj2gIJ`OOu45kYr73bjAu7XkIN@WExh^&t z8)c&HAn<$NEL}M}HPJB?pipa(9fdB}h$oozez|iO_bAoQ}(2zkwR^dJ~|G zb8kT;ZxW7NG3%9^8<$ghg+tuy^Am$u7h9`uDT3VWa>%SrdW<{VNHF*k}9<`yi&uQyl9`%7;ie&HR zhx;Y(=8MkWv+v+uH&|u3|8FM`i(2~x>_^o++;(>&Zn-B{aW75`i(A@J!ca!%EWd9i z%BtCVb#rxJf%attdBJ^-b)p!R8eI6R37n&!&-y=|6u1k`0$V76bKSYN$mfR;{RjyfFIib&Efuj z|3{$2=lK5=aPR-#n*7lNa&LOT%wEZ;YVzd$o-F*j^Z%Off9@0hx!||_2kJkG zkl6e6pFrr(@&75{cdY-*>{0*yN2T@(K#d=$VSe~dXz}cDxC~BZsT{FWM`47l!XI!Z zcA2f+lAE-;iL9Y=H^Qn@8uev}55g1>?2{}XN^wQ<1v0v6bP;VC-wpj%{$Z?Uw(IDxEzIGnF>o6^Sm zX82a=%VeyLI@RsZlDl$=ZGTgVZIUkxHNB+b)EeaotTGBu>VYeq3excCV7N3C(`=;? zc6pVI%!v!i-bROuX=d6%zoC|6^<8#6FO@P@YTWf1_!RRD za>7#79}c&usBRZUL4}qnsuQ+okmRC3*tsZN{6LB0`dG`t`38i=MEk3*-5b8NJU|F* z=5XL0^zBXK&Yay5j+AnJy>l8ptoAu`E;+7@x;@P8F)}UDYSZHj9N3asuZl8eQjD#t z%E?jIC$17Kx5aMTaEXm0Q_}o`zPC$>svQPMGEqf~e|Z)G+?`EavWg%x;`OxJcdLsR z&pX#O?y0bRf;r3$jB4ZQ5r5e?fw&=ei?gA{Qb8_H$Al9$%Lvke^+L%>S-$0lIyGB_ z_s`54nLS8o4iUu?xu}b#=*ye6Fw)l6p_!=~2aP<04UUW2oF#DK1kpfcOzZP>Ud2eu zCq&7zxe`z7HS2qXyzN^I>KfaUb+0<45NsL>rO;MMY}tAe$z3jnwi_=c4cMO~!s>Hn zCkRyO+B+oi4#jCB89U2l(x6U-8#Z7NM>A%?5mkS<*fP0n=)+Zs$e<;z3|nDWAiOLH zfzKhh42F#fiOwcQs#9r0xj_i>oLfzl_x#gpqTS-OJ`Py2YwHbpI^jg%6sJMS26H0= z=4OH6p@x>arV4GPo;^Xa)|6*WD^+*HHFa!zSCz|2YcrC>7U(W+lA|*&kIb25Abd~P z2fhIG;i$DNPxg2r@CIWJ*^s-P7?W&GO?l0qsl&P#C^ovv+f*A;wX-*>W7G@SA0gYF z^h8ae9uQ5_6!HsqjIR1gr2WRg2fu0h&F-cJkDQ{+`Q_mj?8(PZL>fv&haFOkS>>VQ z-OdZTg@Ez8cEp9VfdYFJM-HDjn?LkN^*qI>Xsk9%K^?{ZWKnFFY8SoniR6+`5y^=c z5h>$aT3#8o0q7iWbFuJlt0_R~KnVF8a@lvCYWXrcM(GmoSW3g1GYQ*dP-KGYP?_sB z1-YxPG=*&V$%$iN$7qXjoKj_joO?tb5Mj5?Yh%L-D2kR^E6aS_FBNh->^xJ_u3Lr} zG3J^~%w%+;)*J*aM@>mUyY{1?i#E zxVUuFvXT^4o^#rHvPG7Qq3|puz0putKvZMO=7$x(Y__ZXusx4xW4rKvaNuyVFOw~! z%Q~VDJ+hAiE41m=`iwz+c3G_|2#-R;zB>ibqd|T;Rv~I(G{59!#4!>?CRR7u8>eDp zVyQ2Y8sWI1chj|yyN;ZD#9TNodWxb15uH3jRe=>Po*}HDO1PdFf4ewbAPL7j+$gc0 zS4`1Z7^|Zw^(1QTuRS6X)YXwnMq?WLS}gI=I_;9w2i6DMg-$ouATb(KD^Yd=$}2m& zT$#Hp>Dq0aug#=GmfK?-aYUZ$NMr_SX-2wS=JsN7k(f3BSPkiOU$iQcfL&TzTuYWX zF5%ehorq{`2Z!hBDQ%R4vIdcdi=_TN7iM)OPpRwZh*U3ZF_?^;Q9}%3ACe zQ|g*cvwj>Q$nGamQ1wAlz55CFTs0KV+38*C=tY*0RSmltA&_FUK*gy%G3N`61CfqS z!noiUmz2-1R&b`>eM92cWdNx#l~?_unm9ft1J^%>Rb|<;hXzw>H@XtVi|8h;t3p!% z$%m&Z8Jwvy3u(XFl-9Lu$f03avzP|PBpYu<zUdCIaFHq^w4%TF?Ux~|SP zbCH2+jjv@kI?MEdVrqD;&mE1ipv~j8*-#6tb)=A9R=VZ%e6(m9#oua-dLFZkkw{ms z=EjH;4mhwM`Sre_LVOM1yRD@@y4V8Qi$ddxS!Ww)X`h7D6_1lQ{Qo(Q_za&I?)$&2 z^qlP3|J~jJKi>a-@cRz}qX~?}vB&#giX=Y2|NRv3bNjzLu6e$zKTGv3fv=cjGr1w|7) z$$n6@Ntgunzk-Tv0>F{i4SA=2_Y!%gUf!qE13#$)uLYadFS{0W3LgyWx~v|ec=6m-Y8Yn#Q*(^*&$Zu1I$ zp2=o~lzmn?ZT#JK@9FLLTl1a3uZswL1oJ%EY`&oF zDo_pDp{!FdDcYc(cS}J7Bq8`$@F@gezWU+qqJM;c$>(|2d-xLk+qYmF2L}GWM%C{zqJmv{Q0zx2j6HR@c#_DU6T28(EN%7&(F`ZJ?=g<2hw~W zeD$ZS0pVtBU@vo;=Dw(}ffs%Wym;X`O)#^Z3IFhizameIzkT!L{KSlyMf&6HC$NQ^!vNu1I$BJLQks`PUds(@TmjZ9l^NepUzWw$-2JL^g zZ*4tl8&SBg_*YCxwN29EfXzZ;X&-W{Qnis#s=T#Y4fbHBH6F(o2>(9cnK9Ua*^5fh zM)8r*vU5Fi=A7?*GdA;+<@8q09TIo+JN6H|xM1f{u*jw-HwWB4m%gcE z5X5Urcr)nRL&xsh&NF9N)rLG5E56>=4r+=XYGxF}a4K4w5Y#3xBRy_hUw3FjG;aR`e}Cz&)>Pk*3EiSB|syEUUX&5$W9$5E&#LQqi8(6#HcQ_*! zc7KXwRa2FFUU`n*XPyeSP)k%`%^zOA*E7RQC@-$rO2t28(}m7$BET>!N$id#uojPD zWmfKP1bBf5#$tthh~QXBq-5F$>RtMffF~}NJG*9{UOpw;Jl$Eejk#p}FY(Zgi!vXq zUoDK@kFl$8=Y{6ITLqsSP=Z~S(mkAWqs)yQ$)M84gv8vm60;QQz-T5%-^DjO?=bft zuxx#;O>c4B*0g-!YZ*`_{H&8milB-?P6*G4L4Xj$j0yVp{7CS)NT`~=g4~0+Zw!Yu zCdlj{Gnol?k>@Z#cHBpI#_UwblV)?iriK`>S0u)CdtR{v4@WGy>9UUz4N*u46^Lky zP}_oicAG9(FKq;LU3WBDZ|b%wWLvUOL4hdkMT!T|C%gt4iL}h9wMGEnsW@!l!$JW9 zM{8RiwhTk8dNc2Sv>DT*QERJDb-|1~p=jGyhFp^seueq4!}SJ3RQY3#-%Y z4-MTjKa~lR882dgZqNyuG9sK|s?Pv~L~Qc=8}|24bYh_pXde9y0EzubZ4745VQ==! z=i~mXPk2XbAHtRDp4WVpIrJsZt-t>mI%9V{9QDy|;JD*ad;fP1xdAm!Hiv%yXLS7i zKX>5P_TSa-|6X3U_kZV*|9k28h!{JOL8UJtRGPDof4%CxB`>0*WypgNf8b(b%le5x zOeEbxNPW&Sv@Bz#^HIe$9YL=I_eMj{nR(*5H+bQ_7&6URblq&^jmDlYys7K?eNXU* zfTrJ`G*F9^&v7sOcThfX2bY5u|IZ<}P|K6daV!2i<7)p0=Kb&X`OkUe0pLG|h%&`e z@u`q0&WS;;mLiS#`YKrY4wG3mMS*jvKMU>rb52)I<=GDZSr)amO4of5%=+69eK}ji zkywf-`$}&B-0k^){rCTl+v5LuWOx6|D}fXH!TtB&CA!e={~4rt|MgAK$>uQpZ+!Rt tcl!OI`vY_It(1&q4pwqnl`8qp_rH}^T4|+~R$BS~TcL^=Ra000nD&d~q> literal 4865 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 diff --git a/make.sh b/make.sh index 53963d4..db2052c 100755 --- a/make.sh +++ b/make.sh @@ -1,5 +1,8 @@ #!/bin/sh +# Copyright 2022 - 2023, macmpi +# SPDX-License-Identifier: MIT + chmod 600 overlay/etc/ssh/ssh_host_*_key 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/local.d/headless.start b/overlay/etc/local.d/headless.start index 3959f5e..e7c783e 100755 --- a/overlay/etc/local.d/headless.start +++ b/overlay/etc/local.d/headless.start @@ -1,5 +1,8 @@ #!/bin/sh +# Copyright 2022 - 2023, macmpi +# SPDX-License-Identifier: MIT + VERSION="0.6" # Redirect stdout and errors to console as rc.local does not log anything diff --git a/overlay/etc/modprobe.d/g_ether.conf b/overlay/etc/modprobe.d/g_ether.conf index b161bba..a3fa924 100644 --- a/overlay/etc/modprobe.d/g_ether.conf +++ b/overlay/etc/modprobe.d/g_ether.conf @@ -1,3 +1,6 @@ +# Copyright 2022 - 2023, macmpi +# SPDX-License-Identifier: MIT + # 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 index e5456e0..a9b7ea2 100644 --- a/overlay/etc/modules-load.d/g_ether.conf +++ b/overlay/etc/modules-load.d/g_ether.conf @@ -1,3 +1,6 @@ +# Copyright 2022 - 2023, macmpi +# SPDX-License-Identifier: MIT + # added to support USB-Ethernet gadget mode at boot for Pi devices # also requires dtoverlay=dwc2 is added to usercfg.txt or config.txt diff --git a/sample_interfaces b/sample_interfaces index eefd4ef..e3f9acc 100644 --- a/sample_interfaces +++ b/sample_interfaces @@ -1,3 +1,6 @@ +# Copyright 2022 - 2023, macmpi +# SPDX-License-Identifier: MIT + # Sample network interfaces file auto lo diff --git a/sample_unattended.sh b/sample_unattended.sh index b0cb3bf..58fab1b 100644 --- a/sample_unattended.sh +++ b/sample_unattended.sh @@ -1,5 +1,8 @@ #/bin/sh +# Copyright 2022 - 2023, macmpi +# SPDX-License-Identifier: MIT + ## collection of few code snippets as sample unnatteded actions some may find usefull diff --git a/sample_wpa_supplicant.conf b/sample_wpa_supplicant.conf index 021f3e4..ba349e1 100644 --- a/sample_wpa_supplicant.conf +++ b/sample_wpa_supplicant.conf @@ -1,3 +1,6 @@ +# Copyright 2022 - 2023, macmpi +# SPDX-License-Identifier: MIT + # Sample wpa_supplicant.conf country=FR From c8de3f87c2c7fae6cec68c9e0ff578d5def6e7aa Mon Sep 17 00:00:00 2001 From: macmpi Date: Fri, 12 May 2023 15:57:37 +0200 Subject: [PATCH 08/10] README polishing --- README.md | 34 ++++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index b7873ee..23476e0 100644 --- a/README.md +++ b/README.md @@ -3,40 +3,42 @@ [Alpine Linux documentation](https://docs.alpinelinux.org/user-handbook/0.1a/Installing/setup_alpine.html) assumes **initial setup** is carried-out on a system with a keyboard & display to interract with.\ However, there are many cases where one might want to deploy a headless system, only available through a network connection (ethernet, wifi or as USB ethernet gadget). -This repo provides an **overlay file** to initially boot such headless system (leveraging Alpine distro's `initramfs` feature): it enables a basic ssh server to log-into from another Computer, in order to finalize system setup. +This repo provides an **overlay file** to initially boot such headless system (leveraging Alpine distro's `initramfs` feature): it starts a basic ssh server to log-into from another Computer, in order to then perform actual system setup. ## Install procedure: Please follow [Alpine Linux Wiki](https://wiki.alpinelinux.org/wiki/Installation#Installation_Overview) to download & create installation media for the target 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)[^1] overlay file at the root of Alpine Linux boot media (or onto any custom side-media) and boot the system. - -With default network interface definitions (and SSID/pass file if using wifi), one may then access the system under `ssh` with: `ssh root@`\ +Just add [**headless.apkovl.tar.gz**](https://github.com/macmpi/alpine-linux-headless-bootstrap/raw/main/headless.apkovl.tar.gz)[^1] overlay file at the root of Alpine Linux boot media (or onto any custom side-media) and boot-up the system.\ +With default network interface definitions (and SSID/pass file if using wifi), system can then be accessed 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](https://wiki.alpinelinux.org/wiki/Alpine_setup_scripts#setup-alpine) for details). +As with Alpine Linux initial bring-up, `root` account has no password initially (change that during setup!).\ +From there, system install can be performed as usual with `setup-alpine` for instance (check [wiki](https://wiki.alpinelinux.org/wiki/Alpine_setup_scripts#setup-alpine) for details). -Add-on files may be added next to `headless.apkovl.tar.gz` to customise setup (sample files are provided): -- `wpa_supplicant.conf` (*mandatory for wifi usecase*): define wifi SSID & password. -- `interfaces` (*optional*): define network interfaces at will, if defaults DCHP-based are not suitable. -- `ssh_host_*_key*` (*optional*): provide custom ssh keys to be injected (can be stored), instead of bundled ones[^1] (not stored). -- `unattended.sh` (*optional*): make custom automated deployment script to further tune & extend setup (backgrounded). +Add-on files may be added next to `headless.apkovl.tar.gz` to customise boostrapping configuration (sample files are provided): +- `wpa_supplicant.conf`[^2] (*mandatory for wifi usecase*): define wifi SSID & password. +- `interfaces`[^2] (*optional*): define network interfaces at will, if defaults DCHP-based are not suitable. +- `ssh_host_*_key*` (*optional*): provide custom ssh keys to be injected (may be stored), instead of using bundled ones[^1] (not stored). +- `unattended.sh`[^2] (*optional*): create custom automated deployment script to further tune & extend actual setup (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). -**Goody:** seamless USB bootstrapping for PiZero devices (or similar which can support USB ethernet gadget networking):\ -Just add `dtoverlay=dwc2` in `usercfg.txt` (or `config.txt`), and plug-in USB to Computer port.\ -With Computer set-up to share networking with USB interface as 10.42.0.1 gateway, one can log into device from Computer with `ssh root@10.42.0.2` !... +**Goody:** seamless USB bootstrapping for PiZero devices (or similar supporting USB ethernet gadget networking):\ +Just add `dtoverlay=dwc2` in `usercfg.txt` (or `config.txt`), and plug-in USB cable to Computer port.\ +With Computer set-up to share networking with USB interface as 10.42.0.1 gateway, one can log into device from Computer with:\ +`ssh root@10.42.0.2` Main execution steps are logged in `/var/log/messages`. [^1]: About bundled ssh keys: as this package is essentially intended to **quickly bootstrap** system in order to configure it, it purposely embeds [some ssh keys](https://github.com/macmpi/alpine-linux-headless-bootstrap/tree/main/overlay/etc/ssh) so that bootstrapping is as fast as possible. Those (temporary) keys are moved in RAM /tmp, so they will **not be saved/reused** once permanent configuration is set (with or without ssh server voluntarily installed in permanent setup). +[^2]: 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 similar). -## How to customize further ? + +## How to customize ? 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` after changes. From 7e9185918015efe9dfd3f2cd9dc74c5a9e36a22d Mon Sep 17 00:00:00 2001 From: macmpi Date: Sat, 13 May 2023 08:30:34 +0200 Subject: [PATCH 09/10] trigger new keys generation if supplied key file is empty --- README.md | 16 +++++++--------- headless.apkovl.tar.gz | Bin 4923 -> 5059 bytes overlay/etc/local.d/headless.start | 27 ++++++++++++++++++--------- 3 files changed, 25 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index 23476e0..ff87050 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # Deploy Alpine Linux on a headless system [Alpine Linux documentation](https://docs.alpinelinux.org/user-handbook/0.1a/Installing/setup_alpine.html) assumes **initial setup** is carried-out on a system with a keyboard & display to interract with.\ -However, there are many cases where one might want to deploy a headless system, only available through a network connection (ethernet, wifi or as USB ethernet gadget). +However, in many cases one might want to deploy a headless system that is only available through a network connection (ethernet, wifi or as USB ethernet gadget). This repo provides an **overlay file** to initially boot such headless system (leveraging Alpine distro's `initramfs` feature): it starts a basic ssh server to log-into from another Computer, in order to then perform actual system setup. @@ -11,25 +11,23 @@ Please follow [Alpine Linux Wiki](https://wiki.alpinelinux.org/wiki/Installation 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)[^1] overlay file at the root of Alpine Linux boot media (or onto any custom side-media) and boot-up the system.\ -With default network interface definitions (and SSID/pass file if using wifi), system can then be accessed under `ssh` with: \ -`ssh root@`\ +With default network interface definitions (and SSID/pass file if using wifi), system can then be remotely accessed 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 during setup!).\ -From there, system install can be performed as usual with `setup-alpine` for instance (check [wiki](https://wiki.alpinelinux.org/wiki/Alpine_setup_scripts#setup-alpine) for details). +From there, actual system install can be performed as usual with `setup-alpine` for instance (check [wiki](https://wiki.alpinelinux.org/wiki/Alpine_setup_scripts#setup-alpine) for details). -Add-on files may be added next to `headless.apkovl.tar.gz` to customise boostrapping configuration (sample files are provided): +Extra files may be added next to `headless.apkovl.tar.gz` to customise boostrapping configuration (check sample files): - `wpa_supplicant.conf`[^2] (*mandatory for wifi usecase*): define wifi SSID & password. - `interfaces`[^2] (*optional*): define network interfaces at will, if defaults DCHP-based are not suitable. -- `ssh_host_*_key*` (*optional*): provide custom ssh keys to be injected (may be stored), instead of using bundled ones[^1] (not stored). +- `ssh_host_*_key*` (*optional*): provide custom ssh keys to be injected (may be stored), instead of using bundled ones[^1] (not stored). Providing an empty key file will trigger new keys generation (ssh server may take longer to start). - `unattended.sh`[^2] (*optional*): create custom automated deployment script to further tune & extend actual setup (backgrounded). **Goody:** seamless USB bootstrapping for PiZero devices (or similar supporting USB ethernet gadget networking):\ -Just add `dtoverlay=dwc2` in `usercfg.txt` (or `config.txt`), and plug-in USB cable to Computer port.\ -With Computer set-up to share networking with USB interface as 10.42.0.1 gateway, one can log into device from Computer with:\ -`ssh root@10.42.0.2` +Just add `dtoverlay=dwc2` in `usercfg.txt` (or `config.txt`), and plug USB cable into Computer port.\ +With Computer set-up to share networking with USB interface as 10.42.0.1 gateway, one can log into device from Computer with: `ssh root@10.42.0.2` Main execution steps are logged in `/var/log/messages`. diff --git a/headless.apkovl.tar.gz b/headless.apkovl.tar.gz index 802c8a823e0bb149568c55d08124d8a270b3dfe3..8d78f9fb8cb746f5136b2362b172d6e36312b075 100644 GIT binary patch delta 3800 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 diff --git a/overlay/etc/local.d/headless.start b/overlay/etc/local.d/headless.start index e7c783e..ba671c6 100755 --- a/overlay/etc/local.d/headless.start +++ b/overlay/etc/local.d/headless.start @@ -82,7 +82,7 @@ rc-service networking start ## Setup temporary SSH server (root login, no password) -## we use some bundled or optionaly provided keys to avoid generation at boot and save time +## we use some bundled or optionaly provided keys to avoid generation at startup and save time apk add openssh cp /etc/ssh/sshd_config /etc/ssh/sshd_config.orig cp /etc/conf.d/sshd /etc/conf.d/sshd.orig @@ -94,22 +94,30 @@ cat <<-EOF >> /etc/ssh/sshd_config Banner /tmp/.trash/banner EOF -cat <<-EOF >> /etc/conf.d/sshd - sshd_disable_keygen=yes - EOF - -# banner file +# Banner file cat <<-EOF > /tmp/.trash/banner Alpine Linux headless bootstrap v$VERSION by macmpi EOF -# bundled temporary keys are moved in RAM /tmp so they won't be stored +# Bundled temporary keys are moved in RAM /tmp so they won't be stored # within permanent config later (new ones will then be generated) +KEYGEN_STANCE="sshd_disable_keygen=yes" mv /etc/ssh/ssh_host_*_key* /tmp/.trash/. -# inject optional custom keys (those might be stored) -if ! install -m600 "${ovlpath}"/ssh_host_*_key* /etc/ssh/; then + +# Inject optional custom keys (those might be stored) +if install -m600 "${ovlpath}"/ssh_host_*_key* /etc/ssh/; then + # check for empty key within injected ones: generate new keys if found + if find /etc/ssh/ -maxdepth 1 -type f -name 'ssh_host_*_key*' -empty | grep -q .; then + rm /etc/ssh/ssh_host_*_key* + KEYGEN_STANCE="" + logger -st ${0##*/} "Will generate new SSH keys..." + else + chmod 644 /etc/ssh/ssh_host_*_key.pub + logger -st ${0##*/} "Using injected SSH keys..." + fi +else logger -st ${0##*/} "Using bundled ssh keys from RAM..." cat <<-EOF >> /etc/ssh/sshd_config HostKey /tmp/.trash/ssh_host_ed25519_key @@ -117,6 +125,7 @@ if ! install -m600 "${ovlpath}"/ssh_host_*_key* /etc/ssh/; then EOF fi +echo "$KEYGEN_STANCE" >> /etc/conf.d/sshd rc-service sshd start ## Prep for final post-cleanup From 6718b1c311d0c4e389e924a330f20c8502a5319d Mon Sep 17 00:00:00 2001 From: macmpi Date: Sat, 13 May 2023 09:03:08 +0200 Subject: [PATCH 10/10] bump version to 0.7 --- headless.apkovl.tar.gz | Bin 5059 -> 5058 bytes overlay/etc/local.d/headless.start | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/headless.apkovl.tar.gz b/headless.apkovl.tar.gz index 8d78f9fb8cb746f5136b2362b172d6e36312b075..97fe05d22b0cf2ee668d43883f4984adec4866da 100644 GIT binary patch literal 5058 zcmV;z6Fux7iwFP!000001ME6!v!hma{@VNs-0sPY&Ai9HC?30l5FoT51V{)bQ(f%) zB36Op{~o07cG@0$x{|aznW{cj?_I<>+;i^PFI>NM;V*t?KxUvx@-fcv%kgoI5*US{ zC{9t>7YK^rIQ9id{@#M!p=(;Z2Ei}tvTXkm-G}i1q~Oo?fA;*q?y~l^Gq3S=Wae1;i zbaXNP{&U41+2#Fqcw8+tWqHj)WET>+blH)yhp&QB=!Z7P)2mkS=2Aj->nQH@{){Aq zNa#no6n#`li#ky_F^|%`KMeGt7CL#XfQb=@1?^QL3i5LgQl9?Jy4O;63Fw zE9ktY<;5+bcSd_V_Z@X=#xsKsgtt?rZp*TpL~=*%xV{`Xj;6i7u0@06FWd7*=@BG3 zBnNDJ;D#-8>+~urFoQU%6Cy;AxFeHQr21D8(_5(!HfS6nNzTKY^_5(@UL*Hm2lIH? zZ5>p?w8POkpxZ<`Txx&Yvs>?45U{^gH+@g78!m;TJTATM`6>og+ATF%KAaZndVLNV z2qV$>?8;?Q+hcdmT4z6^Xu@+KK!MUC2MS$o5LeLYoO{}lPQm-$Tt{9k+TXZYX3-{pVb!$=Zc+-tzc;_=A;f1me%s{a&@|04er z6o!1x|DOV$?y%%VNd^xJFKgNwR8;BA>O8pR%?B26@MY!{kJ?aMm$dbgM}1(IBH26n z>3+#O`J%Iq>^r#E4R$}=|F@Hig{@@($5GZ#x5J%?TOP?()Qc0t;-+$5V<@9?rq?$U zW!7xHx;d)1hmK_kx&D2QO}y7C*-!YZ4qU?bXZ@c}3fzU}@-ADt`#=b9$*Gp&PALuv zpANFSt`?AdXv1)d+n(?U0bQjBk#Uq^<%Nq=;9PF}Cc+?KQmVM&8bxRYWFonEMc#lP%SU7ep~II#Qy&%{y$a^_@VvZ9PYpD z{|J=$9RHsJ?)~3elRtVu?oAJvSt|*Zb)LN6lZ0P){$KO`&wau_7yQ=#?_=`#K>a5X z68mNSClLB`{C^7g9qa!xd(?mLQK{VmkfR4`m><3qnmjw4lEJP_nIjJJD2$LO=)d& z(>$~EBr;M)mFkX{wX<@FU4N5_U7Rm8IZaY=YPE6%RvCrI^}rQ&1u1xV(i|F!Xtq)a ztGuqY%#I4m+J&b?*E8j$-cVCf+Rihx%gUB0tf@202_k^JdJa2Ymisc=*SO;`uo3YL zVqhui4X0aJRJUZmM}?LtDg#?INSy2;>{1jCexk&2bFL-fasz^5qPhJV6Mn z=dkad)ZILr}vWk$F zkBO3H^L;dJHmv6o(ynhYsB0`!Qr+s5La?swsXc9$#Ez{ekv!yLU^&rptpG=3O_+VY zKL`R*s7sjy927N05 z`gVcgfr6H*A`5LLUtD2tZYbBBRM#Akb4o|y~DK=_fa zPkaHW!&zxrp6u~L;59}cvLSamF(TQTn(~^zP^V2VP;7XWcBwL?a%XL2TdNnaH$s*( zsj-|wJs|43F60S!4zH>q(q5zCgV!|u_Ha}DM^4$#`Q_mjtl{AXkp^p`!%iv2tn$Ei zZFt)K=T2Adg~im=xQkN}@I%5hwW+lAM@` zNEzMI^2*2!K<9Xyi-mhzO+HHdLcrgUkqNR*Wschv zYg<-8QM6QAN#fgnxhHqS!PVEwb;l4R z#$4lxNtT4bxbHy@5nCdL+!G{d9Q$@qq7Yy4Y(DlafA-Kj7tgM~gUF}3Q!ZH`6VwQwiY82vARj_I2BtR zOT9Iz5VjMzH&qF^>&Q80%z>k#rzlDg(a9xb8CcQc1;PrdgzJg%c8gO2t#Qo7wG!+3 zy)J4CZFLscJ&BsfYmbNob+y+eqcDwiEtdFb8izRbfX&HrAmip}Bt~O$B}%qWxn*aS zEB%ngUAv3&jUIQ%a(9kGj>vNr33Wd$^-z_{+*&M>HPiY4s~~;uiDpF-utTpG*ODd9 zOE}VdJ7gJZ>228Ct_lxswokkAQDBd&MZeaM#x`2iwLIwSoB%|vI0hk)*Ui~k=G@_Y zl4W!cAAP7br5d_H22{=SNP9_AmJ1rY@IFfH$Q`eS?a_!J_OeMx0-zoH5|HdolJat* zuY>R72TdmBZd%1beqN)4i8oebiZp{#C^AMT=`hi!CA?Wwy(1wmU zW>iWilIA@RPm(8`U9~>tbb~?r~spTB6n>~MTC_E}=5vkz*Q+G>%-WL3jXMhK)BE>LkQ4d#--I1sAn zB#aAwk)(WnHT?_i92*k9E`3Obsl4hJ)x_};={w#zs4CN%J=C94t5Nr1vBaiE+Lq?EY{;QuSiP7AMkgD0Mdd2gB&d2U_&jA<3>#{~;BrG^jqB=S zF^L3J8+;?N;YFfP6jQ?+b?#`i1+Aa2&6ZkVt-TKDWu=;S&xebq*?T*MkuPJGF>BIM ztGO|vgcA-NM}BiGr~u!<_ik&cjt;g!j-t@GV%Aw2T3UvXI^ub9hyOpXBR<0?hWq|6 zD_uK#_I|f-z>n|0A3Xm-U^InekMG1NN>Rk;@4ue{-naj|*EP>~m3+j-{$u;22!Rmq z*&n~}|4IDw`HxQmUwsKXaRE0G0DJ{NvxAMihex$WjvJmWQGb$Qyw zu3t3%ljQkD8wasp|0}qcbO1Q>swN%e?_MI$^vnBns_(_M@3vsmdS%ywcHx13U6*wO zwk7D6MN?)zXg6T(K0kaA^h&=0i?Ri?GMvfBHj0Z7@Nd2gqTj=w-^1^o!oL3(6aZ$j z(67O#rUhU9fPD4UH}H?(OZM^d5!}T^cLU$~Gr-f&Htul7i0oc5Sn`c{&RV z!fjr`&okMqkh0GzyN$kk^(QchXVKw&UXKkv<@U|4YgzCgC6*FCj|fa4gCDg zALk!+H}iig-=YKXsjzb&{N~xN(s|P7+2NkU34D62Yv%gE{_rFC@85#|@emk%Lcy=^ z8eIEX1=h3P%KW~Dpsc~6vR^k{Rb{bj7jJahG!b||wdL19?LNIdzct_Sy}Ag&M=;Nm z&F1slt^#Gh9m+Zd?aX}7`SWTOYl9B2;yfV{gaR0;(Lg9n)&L^0(^U-?mZ=gGmAUhrt;l; z)OdIA`w2aJ*zDA0@o>}GWMyrKzqJmze1F=uuWz!hIEg#YPF7qm?32vXl_;gOez2kOM}JhXO5(6}ghwP$a`cih%z3ezVJ4 zq>ok+3YZHBmiOQcXJ)_oW=UH_tAk6lR;FJsZR>D15hu6A4dage$xcq#F%*o$`N7SB zu#aq0jWIOr*MRV5IOvb{{-Ccv)yMhhl1F08ciHH$py^_bRe1&e_WA#xJn#)VZZ22k<*$o5?B?3f>T z8{0zfSFw|+o^L$cVoTwQfYT(#6D1*ECNRDcEV5y-G+TH+I0kaC=_{iokEpCmx_^6F z+u8TPU9uI_2Tn`ldmU<~RLd~ESW)&u9f%D{u-!ud!D1^q7ujD?w8Ku zfnaNIg8^v$@%+7%3|CWf+p(?ZK8)C0$OI)UTxM$%MPokhm%FeNOZ?*iBM?Te*dnPR z!nZc^Dp`_NCxIXkPH$(w|2q3{`RVidhnKUnt~9-6hkWh`dJ2h|XRuvYTW?DKQI9I0 z(3B@7r4ZZnc(=|THW9yI1s_RmMk~BlgC5=8W~AO;E(rZBSGXJj3z6ogAQ0#>w0xMnJ#KsSdKKKZbs6_}?I{WnW-r=RNA z3D%7U#AwA0pb1SB3ic`KPoP2fpvZ+{UmbI`_AEvuszD~bS<)m!;dW-TvH-yQ6%0=; zO)-gRu{7@@fcFv1>Jm5E^_}0K>RWiQ7+ZC($Xquyd77@NjFl&+2PKPlGffI0RpRo5 zVmXn&Aoo(JAyyFIJ|y)_M{qaxX_&sE#zOs+#x$(qgJ6MEh6->+6v0$sGs={%*~zQK zdc(h@iMU`d_LY$<`?Uno4K`1gRB?LWFtVnwgp*~7tfN|FAnJQTZC=%~9Z|=b(y=U) zXFUk)7&zN=JZ?dsiXjtO@hN-nHIY| ziiC@7+YeWT0ci^&PPSivvy-MhT(dkh1KS6u;IRv+l=%gkGUENq zK$c>Jmh9rqEB42OduppUMB6LiD7!~ug2TLzV;|4P4R@#F^m6 zWNhdQLp(Ev&yD9}CP|eXTTG0})G&oH9~tJr5d2QV_`hy7oaW#%ZiW9k`iG<8>9EEB zW3+2H?LlN*i~ssG_y176|37Zu|36CmAK*VO;e;Lw#JAWEP@r0ow-JHEcW2ht)R`UT zB4QN8=3?28zDIQAm=u-xP19(umW1xzru4UJ@^C(O9kCHk_=Da6x!L<4#sB}Hk6Qdc zPAmIAIg2=O9NgajBccnf|Buk>{V$K84kknKzv<2WuMY;}(N9d5$6>Z>M_?s~RVi!w!7K>0Y5+dO8`&+0C80wvH$=8 literal 5059 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/dev/console 2>&1