From ae7169e88f80ac08c9da4ec10669242eeacaaa52 Mon Sep 17 00:00:00 2001
From: Bob Mottram <bob@robotics.uk.to>
Date: Mon, 23 Nov 2015 10:33:45 +0000
Subject: [PATCH] Generic image setup

---
 man/freedombone-image.1.gz      | Bin 1644 -> 1940 bytes
 src/freedombone-image           |  10 +++++++++-
 src/freedombone-image-customise |  31 +++++++++++++++++++++++++++++++
 src/freedombone-image-make      |   2 ++
 4 files changed, 42 insertions(+), 1 deletion(-)

diff --git a/man/freedombone-image.1.gz b/man/freedombone-image.1.gz
index 4f48fa75713c1c635ceb938d4362bd49a3841cc8..4da57069f527691bdf1a2f1e139fe7e1e7b527bf 100644
GIT binary patch
literal 1940
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
aD!lcZ%#Q=fz_FKSC4U3&!Vett5C8xiz0!36

literal 1644
zcmV-y29x<8iwFQc&QewY1FcqTZ`(E${XG4O3xDYbMDpx4L7F`<=g~A+ngq48t;>di
z5-FRAM5=rwaew^|Dam$X7ubLqK_HRTeV%hJv)MZ;jSyVdxmF^THJb|>(O~>7UFioJ
ze>>VA&;WmL*Qe;#3iHa+d!{_A21$}l-_hV|^8Rd)Y#aMCr4u8V6P6fpkxQni-LYOe
zmREvGZAdEXSXD_iC#{?&yR=T!wlhBccy)a<y_oKDkUF|^%*=)Ri&9T_9?>aQ3%oUS
z*Dz}zwc&V6CEj!WMDXNfK^Hf~I5)!DcGGC@grU3jI_VODVNnT3?RGe-?1=8(N@E?J
zUQG%99`N18O}jUyyQwI&;#->q-C@0yb8irUR#eI=glXxntBCw8{_0XbJ)53<xVV{J
zTwe{6*+N<>{zVxdjdY=gs34<S7Di7`sbGd@o!N`4>1=X&Ice>libg0dR3TxvfXQ6+
zoe-QJrCS^&3E^iwhsDOFC^MzY{t)F}Ry;+igmRKqG?$K=rCVr~a$R^QD@*mg)5hQc
zJ=BO?YiFHd4RLKt>$Jv^+?mp*?X!4tfPsHn*^xM|Q>jW#b#CaBsC^omoOXT8u~oa&
z`livwkxzq*&R95{Bo`$uwMRa75h~Lbk{+aS0B}G=tfVEk5DM_4)3(0&<`r^OKwS7t
zs90tkO0r`@C!LXbVnm~3rKAeWL*a@c3N^Ian?l&ELih;-8lv&OZg|=B->~8y5%f*E
zoled{rinr^Slz%WfEc3=y$y|3h`8ziAT65o)lOpMg3T)tNegP!%bpv78uha0MoW#+
zn{hTeILt=b{{AK(*6ZW_*8!}D=cuSd&LIzW4+LshbTa%~6*nXp!`P#cd?>$NXkT%(
z9h-nN>ddG@sdPg?E*JJbJl3p0DFuBkGm(+fE}Gg%L^>;~@|%pVRT18xM1>ATa-#JU
za9rpHAa&b3Aa5f-V3YIkVI9I-^{3MFz<Av{)lb<5{Bd5EKi12bR-i7r^5c+;hoR-a
zx5t*MNRk_Et&B*CsszFsakP=a9u+>9ctkkkJ(AxY9-v4yKX|>jfr+$T-&p95MEtj#
z@$u>K;O~Ri2{b~y00!5<bg1BhJqYBujA|r-$~DQ`_JqCx&!C-%SZ>?bo@u43FKnz5
z*S#!&P(7x8eh#39#`vwPXMKF$fGO2N`Bo5<<hluN;BL8c#VV^?`DKNZ4+2}gd~V<?
z#2!@$jqY*KO%Hrb!OvWOpS*Pb-#HS1A9%42h?W8a>KenV)fcYSEAWCr=|ZvVI3L#;
z=&pLU5rr(5G2WNcAfu06_JUa%GH&U#>+BcxxfdA@Mb`7J%=?nZp%Pg<7YZSM$xRV~
z62xu8N>-HfBw&UCav&7)H-MK53S~2bJ`|DdaiA2H=OCw48*OXlEQo-`<f<zDXpjE4
zE)`p$CX+IV*$dxY<E+oE_~bF7Q1M>w5jKw57HVNKuYeg9jJcL6^M)B0cmxe&I9JPx
zLCvJSr!fAcTlT6xJv+Jma54Khh*Ztx93uzQQoC+;LU5rPH9ba(g{dcV9~HkFPclxZ
zK)5guO8JC9xhR>hV5X}8YCqw)aad-;Opoo&feGIr-B2_PTM=wl?DI0j>{XborWUOV
z2DvB}OwBu$lxA%jMb&jHovl|mo4qJhB|y{=o)v}1Wn@ify=M4|0V*m;<MRr0{9Y`H
z<C{L=Rh!^t1y!MJOMlc~>0EOp0ly}!wD4N!isKz2;QD~5V79&6Jkxeu?~p+7)oKNr
z^cL0V=I#H7#Fu)36{H(d9U%2o@bUis=nb8W-d3NpEbDL6$G7LW?0yjOMw9zFhKLIc
zTsYU*qu~(utcA}r2;MMfc43O)Myx|=trx4i^Vu0qE~nSe?#^G2zS(=09&WsaFm7wT
zs3hRIa|@q{n#pR{M!5CtT7RmW<_kWymgQV&vmI%xP+QAJ)L_z%WhEZdo$&+nJHt2i
z&gf0OGkD;9YYm**9ec2l28e9!G`L4%vFq97cJ}W2!yq}<Ilb2o*X5di$aVfRBtqlP
zYcqeJIsH?T<tDi~zZst2oFCEI<jvvu?7PFbdMsUydpSURM91&baq*j9)W;9M^3uFp
qT<Sk&+%_lozX&<g=2qD0W&G+lksn2n0b|d7CI0}0sET+j4gdg#v^KZ^

diff --git a/src/freedombone-image b/src/freedombone-image
index a34ea2a13..154548b5c 100755
--- a/src/freedombone-image
+++ b/src/freedombone-image
@@ -65,6 +65,9 @@ SSH_PUBKEY="no"
 # interactive mode
 INTERACTIVE="no"
 
+# Whether this is a generic image for mass redistribution on the interwebs
+GENERIC_IMAGE="no"
+
 while [[ $# > 1 ]]
 do
 key="$1"
@@ -130,6 +133,10 @@ case $key in
     shift
     INTERACTIVE="$1"
     ;;
+    -g|--generic)
+    shift
+    GENERIC_IMAGE="$1"
+    ;;
     *)
     # unknown option
     ;;
@@ -182,7 +189,8 @@ make $IMAGE_TYPE \
     PROJECT_NAME="$PROJECT_NAME" \
     CONFIG_FILENAME="$CONFIG_FILENAME" \
     IMAGE_SIZE="$IMAGE_SIZE" \
-    SSH_PUBKEY="$SSH_PUBKEY"
+    SSH_PUBKEY="$SSH_PUBKEY" \
+    GENERIC_IMAGE="$GENERIC_IMAGE"
 
 shopt -s nullglob
 imgfiles=(build/${PROJECT_NAME}*.img)
diff --git a/src/freedombone-image-customise b/src/freedombone-image-customise
index 8aa1eb8b7..a7d2b4a77 100755
--- a/src/freedombone-image-customise
+++ b/src/freedombone-image-customise
@@ -50,6 +50,9 @@ CONFIG_FILENAME=
 # Optional ssh public key to allow
 SSH_PUBKEY="no"
 
+# Whether this is a generic image for mass redistribution on the interwebs
+GENERIC_IMAGE="no"
+
 enable_eatmydata_override() {
     chroot $rootdir apt-get install --no-install-recommends -y eatmydata
     if [ -x $rootdir/usr/bin/eatmydata ] && \
@@ -181,6 +184,33 @@ admin_user_sudo() {
     echo "$MY_USERNAME  ALL=(ALL) ALL" >> $rootdir/etc/sudoers
 }
 
+create_generic_image() {
+    if [[ $GENERIC_IMAGE == "no" ]]; then
+		return
+	fi
+    # Don't install any configuration. This will be a base system
+    CONFIG_FILENAME=
+	# The presence of this file indicates that the initial
+	# setup has not yet been completed
+    touch $rootdir/home/$MY_USERNAME/.initial_setup
+
+   
+	cat >> /home/$MY_USERNAME/.bashrc <<EOF
+if [ -f ~/.initial_setup ]; then
+    clear
+    echo '>>> Freedombone system initial setup <<<'
+    echo ''
+    echo 'The first thing you need to do is to change your password, otherwise'
+    echo 'your system will be insecure. Your password should be at least 10'
+    echo 'characters long and contain letters and numbers. Do this now:'
+    passwd
+    sudo su
+    freedombone menuconfig
+    rm ~/.initial_setup
+fi
+EOF
+}
+
 continue_installation() {
     # If a configuration file exists then run with it
     # otherwise the interactive installer can be used
@@ -298,6 +328,7 @@ chroot "$rootdir" apt-get update
 configure_ssh
 configure_networking
 admin_user_sudo
+create_generic_image
 continue_installation
 
 cd /
diff --git a/src/freedombone-image-make b/src/freedombone-image-make
index 008205d8e..1823328d9 100755
--- a/src/freedombone-image-make
+++ b/src/freedombone-image-make
@@ -45,6 +45,7 @@ export NAMESERVER2
 export PROJECT_NAME
 export CONFIG_FILENAME
 export SSH_PUBKEY
+export GENERIC_IMAGE
 
 # Locate vmdebootstrap program fetched in Makefile
 basedir=`pwd`
@@ -144,6 +145,7 @@ sudo sed -i "s|NAMESERVER2=.*|NAMESERVER2=${NAMESERVER1}|g" $TEMP_CUSTOMISE
 sudo sed -i "s|PROJECT_NAME=.*|PROJECT_NAME=${PROJECT_NAME}|g" $TEMP_CUSTOMISE
 sudo sed -i "s|CONFIG_FILENAME=.*|CONFIG_FILENAME=${CONFIG_FILENAME}|g" $TEMP_CUSTOMISE
 sudo sed -i "s|SSH_PUBKEY=.*|SSH_PUBKEY=${SSH_PUBKEY}|g" $TEMP_CUSTOMISE
+sudo sed -i "s|GENERIC_IMAGE=.*|GENERIC_IMAGE=${GENERIC_IMAGE}|g" $TEMP_CUSTOMISE
 
 echo "starting $VMDEBOOTSTRAP"
 # Run vmdebootstrap script to create image
-- 
GitLab