Преглед на файлове

Debian only image creation

Bob Mottram преди 9 години
родител
ревизия
bb8b0c9c2d
променени са 4 файла, в които са добавени 281 реда и са изтрити 265 реда
  1. BIN
      man/freedombone-image.1.gz
  2. 178
    170
      src/freedombone-image
  3. 60
    54
      src/freedombone-image-customise
  4. 43
    41
      src/freedombone-image-make

BIN
man/freedombone-image.1.gz Целия файл


+ 178
- 170
src/freedombone-image Целия файл

@@ -97,6 +97,9 @@ ONION_ONLY="no"
97 97
 #MIRROR='http://httpredir.debian.org/debian'
98 98
 MIRROR='http://ftp.de.debian.org/debian'
99 99
 
100
+# Whether to only install debian but nothing else
101
+DEBIAN_INSTALL_ONLY='no'
102
+
100 103
 mesh_router_setup_script() {
101 104
     # create a setup script for a mesh router
102 105
     mesh_script_filename=$1
@@ -122,115 +125,119 @@ mesh_router_setup_script() {
122 125
 
123 126
 while [[ $# > 1 ]]
124 127
 do
125
-	key="$1"
126
-
127
-	case $key in
128
-		-h|--help)
129
-			show_help
130
-			;;
131
-		-c|--config)
132
-			shift
133
-			CONFIG_FILENAME="$1"
134
-			if [ ! -f $CONFIG_FILENAME ]; then
135
-				echo $"Config file $CONFIG_FILENAME not found"
136
-				exit 3
137
-			fi
138
-			DEFAULT_DOMAIN_NAME=$(cat $CONFIG_FILENAME | grep 'DEFAULT_DOMAIN_NAME' | awk -F '=' '{print $2}')
139
-			;;
140
-		-t|--target|--board)
141
-			shift
142
-			IMAGE_TYPE="$1"
143
-			;;
144
-		-u|--user|--username)
145
-			shift
146
-			USERNAME="$1"
147
-			;;
148
-		-p|--password)
149
-			shift
150
-			PASSWORD="$1"
151
-			if [ ${#PASSWORD} -lt $MINIMUM_PASSWORD_LENGTH ]; then
152
-				echo $"Your password chould contain at least ${MINIMUM_PASSWORD_LENGTH} characters"
153
-				exit 3628
154
-			fi
155
-			;;
156
-		--sshkey|--sshpubkey|--pubkey)
157
-			shift
158
-			SSH_PUBKEY="$1"
159
-			;;
160
-		-s|--size)
161
-			shift
162
-			IMAGE_SIZE="$1"
163
-			;;
164
-		# Box static IP address on the LAN
165
-		--ip)
166
-			shift
167
-			BOX_IP_ADDRESS="$1"
168
-			;;
169
-		# Router IP address on the LAN
170
-		--iprouter)
171
-			shift
172
-			ROUTER_IP_ADDRESS="$1"
173
-			;;
174
-		# nameserver 1
175
-		--ns1|--nameserver1)
176
-			shift
177
-			NAMESERVER1="$1"
178
-			;;
179
-		# nameserver 2
180
-		--ns2|--nameserver2)
181
-			shift
182
-			NAMESERVER2="$1"
183
-			;;
184
-		-i|--interactive)
185
-			shift
186
-			INTERACTIVE="$1"
187
-			;;
188
-		-g|--generic)
189
-			shift
190
-			GENERIC_IMAGE="$1"
191
-			;;
192
-		--minimal)
193
-			shift
194
-			MINIMAL_INSTALL="$1"
195
-			;;
196
-		--ssh|--sshport)
197
-			shift
198
-			SSH_PORT="$1"
199
-			;;
200
-		-v|--variant)
201
-			shift
202
-			VARIANT="$1"
203
-			;;
204
-		-o|--onion)
205
-			shift
206
-			ONION_ONLY="$1"
207
-			;;
208
-		-r|--repo|--repository)
209
-			shift
210
-			PROJECT_REPO="$1"
211
-			;;
212
-		-m|--mirror)
213
-			shift
214
-			MIRROR="$1"
215
-			;;
216
-		*)
217
-			# unknown option
218
-			;;
219
-	esac
220
-	shift
128
+    key="$1"
129
+
130
+    case $key in
131
+        -h|--help)
132
+            show_help
133
+            ;;
134
+        -c|--config)
135
+            shift
136
+            CONFIG_FILENAME="$1"
137
+            if [ ! -f $CONFIG_FILENAME ]; then
138
+                echo $"Config file $CONFIG_FILENAME not found"
139
+                exit 3
140
+            fi
141
+            DEFAULT_DOMAIN_NAME=$(cat $CONFIG_FILENAME | grep 'DEFAULT_DOMAIN_NAME' | awk -F '=' '{print $2}')
142
+            ;;
143
+        -t|--target|--board)
144
+            shift
145
+            IMAGE_TYPE="$1"
146
+            ;;
147
+        -u|--user|--username)
148
+            shift
149
+            USERNAME="$1"
150
+            ;;
151
+        -p|--password)
152
+            shift
153
+            PASSWORD="$1"
154
+            if [ ${#PASSWORD} -lt $MINIMUM_PASSWORD_LENGTH ]; then
155
+                echo $"Your password chould contain at least ${MINIMUM_PASSWORD_LENGTH} characters"
156
+                exit 3628
157
+            fi
158
+            ;;
159
+        --sshkey|--sshpubkey|--pubkey)
160
+            shift
161
+            SSH_PUBKEY="$1"
162
+            ;;
163
+        -s|--size)
164
+            shift
165
+            IMAGE_SIZE="$1"
166
+            ;;
167
+        # Box static IP address on the LAN
168
+        --ip)
169
+            shift
170
+            BOX_IP_ADDRESS="$1"
171
+            ;;
172
+        # Router IP address on the LAN
173
+        --iprouter)
174
+            shift
175
+            ROUTER_IP_ADDRESS="$1"
176
+            ;;
177
+        # nameserver 1
178
+        --ns1|--nameserver1)
179
+            shift
180
+            NAMESERVER1="$1"
181
+            ;;
182
+        # nameserver 2
183
+        --ns2|--nameserver2)
184
+            shift
185
+            NAMESERVER2="$1"
186
+            ;;
187
+        -i|--interactive)
188
+            shift
189
+            INTERACTIVE="$1"
190
+            ;;
191
+        -g|--generic)
192
+            shift
193
+            GENERIC_IMAGE="$1"
194
+            ;;
195
+        --minimal)
196
+            shift
197
+            MINIMAL_INSTALL="$1"
198
+            ;;
199
+        --ssh|--sshport)
200
+            shift
201
+            SSH_PORT="$1"
202
+            ;;
203
+        -v|--variant)
204
+            shift
205
+            VARIANT="$1"
206
+            ;;
207
+        -o|--onion)
208
+            shift
209
+            ONION_ONLY="$1"
210
+            ;;
211
+        -r|--repo|--repository)
212
+            shift
213
+            PROJECT_REPO="$1"
214
+            ;;
215
+        -m|--mirror)
216
+            shift
217
+            MIRROR="$1"
218
+            ;;
219
+        --debianonly|--basic|--minimal)
220
+            shift
221
+            DEBIAN_INSTALL_ONLY="$1"
222
+            ;;
223
+        *)
224
+            # unknown option
225
+            ;;
226
+    esac
227
+    shift
221 228
 done
222 229
 
223 230
 if [[ $INTERACTIVE == "yes" || $INTERACTIVE == "y" || $INTERACTIVE == "Yes" ]]; then
224
-	${PROJECT_NAME}-config --minimal "$MINIMAL_INSTALL"
225
-	if [ -f freedombone.cfg ]; then
226
-		CONFIG_FILENAME=freedombone.cfg
227
-		DEFAULT_DOMAIN_NAME=$(cat $CONFIG_FILENAME | grep 'DEFAULT_DOMAIN_NAME' | awk -F '=' '{print $2}')
228
-	fi
231
+    ${PROJECT_NAME}-config --minimal "$MINIMAL_INSTALL"
232
+    if [ -f freedombone.cfg ]; then
233
+        CONFIG_FILENAME=freedombone.cfg
234
+        DEFAULT_DOMAIN_NAME=$(cat $CONFIG_FILENAME | grep 'DEFAULT_DOMAIN_NAME' | awk -F '=' '{print $2}')
235
+    fi
229 236
 fi
230 237
 
231 238
 if [[ $GENERIC_IMAGE == "yes" ]]; then
232
-	USERNAME=$GENERIC_IMAGE_USERNAME
233
-	PASSWORD=$GENERIC_IMAGE_PASSWORD
239
+    USERNAME=$GENERIC_IMAGE_USERNAME
240
+    PASSWORD=$GENERIC_IMAGE_PASSWORD
234 241
 fi
235 242
 
236 243
 # If this is a mesh variant then create an appropriate script
@@ -241,45 +248,45 @@ fi
241 248
 #fi
242 249
 
243 250
 if [ ! $PASSWORD ]; then
244
-	# generate a random password
245
-	PASSWORD="$(openssl rand -base64 10 | cut -c1-8)"
251
+    # generate a random password
252
+    PASSWORD="$(openssl rand -base64 10 | cut -c1-8)"
246 253
 fi
247 254
 
248 255
 # Move any existing images into a build subdirectory
249 256
 image_types=( xz img sig vdi qcow2 )
250 257
 for im in "${image_types[@]}"
251 258
 do
252
-	no_of_files=$(ls -afq ${CURR_DIR}/${PROJECT_NAME}*.${im} | wc -l)
253
-	if (( no_of_files > 0 )); then
254
-		if [ ! -d ${CURR_DIR}/build ]; then
255
-			mkdir ${CURR_DIR}/build
256
-		fi
257
-		mv -f ${CURR_DIR}/${PROJECT_NAME}*.${im} ${CURR_DIR}/build
258
-	fi
259
+    no_of_files=$(ls -afq ${CURR_DIR}/${PROJECT_NAME}*.${im} | wc -l)
260
+    if (( no_of_files > 0 )); then
261
+        if [ ! -d ${CURR_DIR}/build ]; then
262
+            mkdir ${CURR_DIR}/build
263
+        fi
264
+        mv -f ${CURR_DIR}/${PROJECT_NAME}*.${im} ${CURR_DIR}/build
265
+    fi
259 266
 done
260 267
 
261 268
 # Delete anything which didn't move
262 269
 for im in "${image_types[@]}"
263 270
 do
264
-	no_of_files=$(ls -afq ${CURR_DIR}/${PROJECT_NAME}*.${im} | wc -l)
265
-	if (( no_of_files > 0 )); then
266
-		rm -f ${CURR_DIR}/${PROJECT_NAME}*.${im}
267
-	fi
271
+    no_of_files=$(ls -afq ${CURR_DIR}/${PROJECT_NAME}*.${im} | wc -l)
272
+    if (( no_of_files > 0 )); then
273
+        rm -f ${CURR_DIR}/${PROJECT_NAME}*.${im}
274
+    fi
268 275
 done
269 276
 
270 277
 # Remove any existing login credentials file
271 278
 if [ -f ${CURR_DIR}/${PROJECT_NAME}_login_credentials.txt ]; then
272
-	rm ${CURR_DIR}/${PROJECT_NAME}_login_credentials.txt
279
+    rm ${CURR_DIR}/${PROJECT_NAME}_login_credentials.txt
273 280
 fi
274 281
 
275 282
 if [ -d $TEMPBUILD_DIR ]; then
276
-	rm -rf $TEMPBUILD_DIR
283
+    rm -rf $TEMPBUILD_DIR
277 284
 fi
278 285
 mkdir -p $TEMPBUILD_DIR
279 286
 if [ -f /usr/local/bin/$MAKEFILE ]; then
280
-	cp /usr/local/bin/$MAKEFILE $TEMPBUILD_DIR/Makefile
287
+    cp /usr/local/bin/$MAKEFILE $TEMPBUILD_DIR/Makefile
281 288
 else
282
-	cp /usr/bin/$MAKEFILE $TEMPBUILD_DIR/Makefile
289
+    cp /usr/bin/$MAKEFILE $TEMPBUILD_DIR/Makefile
283 290
 fi
284 291
 
285 292
 cp -r /etc/${PROJECT_NAME}/* $TEMPBUILD_DIR
@@ -288,63 +295,64 @@ chown -R $CURR_USER:$CURR_USER $TEMPBUILD_DIR
288 295
 cd $TEMPBUILD_DIR
289 296
 
290 297
 if [[ $MINIMAL_INSTALL == "yes" ]]; then
291
-	IMAGE_NAME='min'
298
+    IMAGE_NAME='min'
292 299
 fi
293 300
 
294 301
 if [[ $ONION_ONLY != "no" ]]; then
295
-	IMAGE_NAME='onion'
302
+    IMAGE_NAME='onion'
296 303
 fi
297 304
 
298 305
 cd $TEMPBUILD_DIR
299 306
 make $IMAGE_TYPE \
300
-	 USERNAME="$USERNAME" \
301
-	 PASSWORD="$PASSWORD" \
302
-	 ROUTER_IP_ADDRESS="$ROUTER_IP_ADDRESS" \
303
-	 BOX_IP_ADDRESS="$BOX_IP_ADDRESS" \
304
-	 NAMESERVER1="$NAMESERVER1" \
305
-	 NAMESERVER2="$NAMESERVER2" \
306
-	 PROJECT_NAME="$PROJECT_NAME" \
307
-	 CONFIG_FILENAME="$CONFIG_FILENAME" \
308
-	 IMAGE_SIZE="$IMAGE_SIZE" \
309
-	 SSH_PUBKEY="$SSH_PUBKEY" \
310
-	 GENERIC_IMAGE="$GENERIC_IMAGE" \
311
-	 MINIMAL_INSTALL="$MINIMAL_INSTALL" \
312
-	 SSH_PORT="$SSH_PORT" \
313
-	 ONION_ONLY="$ONION_ONLY" \
314
-	 IMAGE_NAME="$IMAGE_NAME" \
315
-	 PROJECT_REPO="$PROJECT_REPO" \
316
-	 MIRROR="$MIRROR" \
317
-	 BUILD_MIRROR="$MIRROR"
307
+     USERNAME="$USERNAME" \
308
+     PASSWORD="$PASSWORD" \
309
+     ROUTER_IP_ADDRESS="$ROUTER_IP_ADDRESS" \
310
+     BOX_IP_ADDRESS="$BOX_IP_ADDRESS" \
311
+     NAMESERVER1="$NAMESERVER1" \
312
+     NAMESERVER2="$NAMESERVER2" \
313
+     PROJECT_NAME="$PROJECT_NAME" \
314
+     CONFIG_FILENAME="$CONFIG_FILENAME" \
315
+     IMAGE_SIZE="$IMAGE_SIZE" \
316
+     SSH_PUBKEY="$SSH_PUBKEY" \
317
+     GENERIC_IMAGE="$GENERIC_IMAGE" \
318
+     MINIMAL_INSTALL="$MINIMAL_INSTALL" \
319
+     SSH_PORT="$SSH_PORT" \
320
+     ONION_ONLY="$ONION_ONLY" \
321
+     IMAGE_NAME="$IMAGE_NAME" \
322
+     PROJECT_REPO="$PROJECT_REPO" \
323
+     MIRROR="$MIRROR" \
324
+     BUILD_MIRROR="$MIRROR" \
325
+     DEBIAN_INSTALL_ONLY="$DEBIAN_INSTALL_ONLY"
318 326
 
319 327
 if [ ! "$?" = "0" ]; then
320
-	echo $'Build failed'
321
-	rm -rf $TEMPBUILD_DIR
322
-	exit 1
328
+    echo $'Build failed'
329
+    rm -rf $TEMPBUILD_DIR
330
+    exit 1
323 331
 fi
324 332
 
325 333
 EXPECTED_EXTENSION='xz'
326 334
 if [[ $IMAGE_TYPE == "qemu"* ]]; then
327
-	EXPECTED_EXTENSION='qcow2'
335
+    EXPECTED_EXTENSION='qcow2'
328 336
 fi
329 337
 if [[ $IMAGE_TYPE == "virtualbox"* ]]; then
330
-	EXPECTED_EXTENSION='vdi'
338
+    EXPECTED_EXTENSION='vdi'
331 339
 fi
332 340
 
333 341
 shopt -s nullglob
334 342
 imgfiles=(build/${PROJECT_NAME}*.${EXPECTED_EXTENSION})
335 343
 if [ ${#imgfiles[@]} -eq 0 ]; then
336
-	echo $'Image was not created'
337
-	rm -rf $TEMPBUILD_DIR
338
-	exit 2
344
+    echo $'Image was not created'
345
+    rm -rf $TEMPBUILD_DIR
346
+    exit 2
339 347
 fi
340 348
 
341 349
 # Move images from temporary directory to the current directory
342 350
 for im in "${image_types[@]}"
343 351
 do
344
-	no_of_files=$(ls -afq build/${PROJECT_NAME}*.${im} | wc -l)
345
-	if (( no_of_files > 0 )); then
346
-		mv build/${PROJECT_NAME}*.${im} ${CURR_DIR}/
347
-	fi
352
+    no_of_files=$(ls -afq build/${PROJECT_NAME}*.${im} | wc -l)
353
+    if (( no_of_files > 0 )); then
354
+        mv build/${PROJECT_NAME}*.${im} ${CURR_DIR}/
355
+    fi
348 356
 done
349 357
 
350 358
 # Remove the temporary directory
@@ -359,32 +367,32 @@ Image was created.
359 367
 You will be able to log into it with:
360 368
 "
361 369
 if [[ $IMAGE_TYPE != "virtualbox"* && $IMAGE_TYPE != "qemu"* ]]; then
362
-	echo $"    ssh $USERNAME@$DEFAULT_DOMAIN_NAME -p $SSH_PORT
370
+    echo $"    ssh $USERNAME@$DEFAULT_DOMAIN_NAME -p $SSH_PORT
363 371
 
364 372
     Password: $PASSWORD
365 373
 "
366 374
 else
367
-	if [[ $IMAGE_TYPE != "qemu"* ]]; then
368
-		echo $"    Username: $USERNAME
375
+    if [[ $IMAGE_TYPE != "qemu"* ]]; then
376
+        echo $"    Username: $USERNAME
369 377
     Password: $PASSWORD
370 378
 "
371
-	else
372
-		if [[ $IMAGE_TYPE != "qemu-x86_64"* && $IMAGE_TYPE != "qemu-amd64"* ]]; then
373
-			echo "qemu-system-i386 -m ${VM_MEMORY} $(ls ${PROJECT_NAME}*.qcow2)"
374
-		else
375
-			echo "qemu-system-x86_64 -m ${VM_MEMORY} $(ls ${PROJECT_NAME}*.qcow2)"
376
-		fi
377
-		echo $"
379
+    else
380
+        if [[ $IMAGE_TYPE != "qemu-x86_64"* && $IMAGE_TYPE != "qemu-amd64"* ]]; then
381
+            echo "qemu-system-i386 -m ${VM_MEMORY} $(ls ${PROJECT_NAME}*.qcow2)"
382
+        else
383
+            echo "qemu-system-x86_64 -m ${VM_MEMORY} $(ls ${PROJECT_NAME}*.qcow2)"
384
+        fi
385
+        echo $"
378 386
     Username: $USERNAME
379 387
     Password: $PASSWORD
380 388
 "
381
-	fi
389
+    fi
382 390
 fi
383 391
 ls -lh ${PROJECT_NAME}*.img ${PROJECT_NAME}*.sig ${PROJECT_NAME}*.xz ${PROJECT_NAME}*.vdi ${PROJECT_NAME}*.qcow2
384 392
 
385 393
 # Remove the mesh script after use
386 394
 if [[ $VARIANT == "mesh"* ]]; then
387
-	rm -f $CONFIG_FILENAME
395
+    rm -f $CONFIG_FILENAME
388 396
 fi
389 397
 
390 398
 # record the default login credentials for later use
@@ -393,12 +401,12 @@ Password: $PASSWORD" > ${CURR_DIR}/${PROJECT_NAME}_login_credentials.txt
393 401
 chmod 600 ${CURR_DIR}/${PROJECT_NAME}_login_credentials.txt
394 402
 
395 403
 if [[ $IMAGE_TYPE != "virtualbox"* && $IMAGE_TYPE != "qemu"* ]]; then
396
-	echo ''
397
-	echo $'You can copy the image to a microSD card with:'
398
-	echo ''
399
-	echo "    unxz -k ${PROJECT_NAME}*.img.xz"
400
-	echo "    sudo dd bs=1M if=${PROJECT_NAME}*.img of=/dev/sdX conv=fdatasync"
401
-	echo ''
404
+    echo ''
405
+    echo $'You can copy the image to a microSD card with:'
406
+    echo ''
407
+    echo "    unxz -k ${PROJECT_NAME}*.img.xz"
408
+    echo "    sudo dd bs=1M if=${PROJECT_NAME}*.img of=/dev/sdX conv=fdatasync"
409
+    echo ''
402 410
 fi
403 411
 
404 412
 exit 0

+ 60
- 54
src/freedombone-image-customise Целия файл

@@ -75,15 +75,18 @@ TRACKER_PORT=6969
75 75
 # Whether sites are accessible only within a Tor browser
76 76
 ONION_ONLY="no"
77 77
 
78
+# Whether to only install debian and nothing else
79
+DEBIAN_INSTALL_ONLY="no"
80
+
78 81
 WIFI_INTERFACE='wlan0'
79 82
 
80 83
 enable_eatmydata_override() {
81 84
     chroot $rootdir apt-get install --no-install-recommends -y eatmydata
82 85
     if [ -x $rootdir/usr/bin/eatmydata ] && \
83
-        [ ! -f $rootdir/etc/apt/apt.conf.d/95debian-edu-install-dpkg-eatmydata ]; then
86
+           [ ! -f $rootdir/etc/apt/apt.conf.d/95debian-edu-install-dpkg-eatmydata ]; then
84 87
         echo $"info: Adding apt config to call dpkg via eatmydata"
85 88
         printf "#!/bin/sh\nexec eatmydata dpkg \"\$@\"\n" \
86
-            > $rootdir/var/tmp/dpkg-eatmydata
89
+               > $rootdir/var/tmp/dpkg-eatmydata
87 90
         chmod 755 $rootdir/var/tmp/dpkg-eatmydata
88 91
         cat > $rootdir/etc/apt/apt.conf.d/95debian-edu-install-dpkg-eatmydata <<EOF
89 92
 Dir::Bin::dpkg "/var/tmp/dpkg-eatmydata";
@@ -96,7 +99,7 @@ EOF
96 99
 disable_eatmydata_override() {
97 100
     for override in \
98 101
         /etc/apt/apt.conf.d/95debian-edu-install-dpkg-eatmydata \
99
-        /var/tmp/dpkg-eatmydata ; do
102
+            /var/tmp/dpkg-eatmydata ; do
100 103
         echo $"info: Removing apt config to call dpkg via eatmydata"
101 104
         if [ -f $rootdir$override ] ; then
102 105
             rm -f $rootdir$override
@@ -136,27 +139,27 @@ iface eth0 inet static
136 139
     netmask 255.255.255.0
137 140
     gateway $ROUTER_IP_ADDRESS
138 141
     dns-nameservers $NAMESERVER1 $NAMESERVER2
139
-# Example to keep MAC address between reboots
140
-#hwaddress ether B5:A2:BE:3F:1A:FE
141
-
142
-# The secondary network interface
143
-#auto eth1
144
-#iface eth1 inet dhcp
145
-
146
-# WiFi Example
147
-#auto wlan0
148
-#iface wlan0 inet dhcp
149
-#    wpa-ssid \"essid\"
150
-#    wpa-psk  \"password\"
151
-
152
-# Ethernet/RNDIS gadget (g_ether)
153
-# ... or on host side, usbnet and random hwaddr
154
-# Note on some boards, usb0 is automaticly setup with an init script
155
-#iface usb0 inet static
156
-#    address 192.168.7.2
157
-#    netmask 255.255.255.0
158
-#    network 192.168.7.0
159
-#    gateway 192.168.7.1" > $rootdir/etc/network/interfaces
142
+        # Example to keep MAC address between reboots
143
+        #hwaddress ether B5:A2:BE:3F:1A:FE
144
+
145
+        # The secondary network interface
146
+        #auto eth1
147
+        #iface eth1 inet dhcp
148
+
149
+        # WiFi Example
150
+        #auto wlan0
151
+        #iface wlan0 inet dhcp
152
+        #    wpa-ssid \"essid\"
153
+        #    wpa-psk  \"password\"
154
+
155
+        # Ethernet/RNDIS gadget (g_ether)
156
+        # ... or on host side, usbnet and random hwaddr
157
+        # Note on some boards, usb0 is automaticly setup with an init script
158
+        #iface usb0 inet static
159
+        #    address 192.168.7.2
160
+        #    netmask 255.255.255.0
161
+        #    network 192.168.7.0
162
+        #    gateway 192.168.7.1" > $rootdir/etc/network/interfaces
160 163
 
161 164
         hexarray=( 1 2 3 4 5 6 7 8 9 0 a b c d e f )
162 165
         a=${hexarray[$RANDOM%16]}${hexarray[$RANDOM%16]}
@@ -211,6 +214,9 @@ admin_user_sudo() {
211 214
 }
212 215
 
213 216
 create_generic_image() {
217
+    if [[ $DEBIAN_INSTALL_ONLY != "no" ]]; then
218
+        return
219
+    fi  
214 220
     if [[ $GENERIC_IMAGE == "no" ]]; then
215 221
         return
216 222
     fi
@@ -380,35 +386,35 @@ atheros_wifi() {
380 386
 
381 387
 
382 388
 initialise_mesh() {
383
-    if [[ $VARIANT != "mesh" ]]; then
389
+    if [[ $VARIANT != "mesh" || $DEBIAN_INSTALL_ONLY != "no" ]]; then
384 390
         return
385 391
     fi
386 392
     freedombone-mesh-install -f firewall -r "${rootdir}"
387
-	freedombone-mesh-install -f avahi -r "${rootdir}"
388
-	freedombone-mesh-install -f batman -r "${rootdir}"
389
-	freedombone-mesh-install -f tox_node -r "${rootdir}"
390
-	freedombone-mesh-install -f tox_client -r "${rootdir}"
391
-	freedombone-mesh-install -f zeronet -r "${rootdir}"
392
-
393
-	MESH_SERVICE='mesh-setup.service'
394
-	MESH_SETUP_DAEMON=$rootdir/etc/systemd/system/$MESH_SERVICE
395
-
396
-	echo '[Unit]' > $MESH_SETUP_DAEMON
397
-	echo 'Description=Initial mesh router configuration' >> $MESH_SETUP_DAEMON
398
-	echo 'After=syslog.target' >> $MESH_SETUP_DAEMON
399
-	echo 'After=network.target' >> $MESH_SETUP_DAEMON
400
-	echo '[Service]' >> $MESH_SETUP_DAEMON
401
-	echo 'Type=simple' >> $MESH_SETUP_DAEMON
402
-	echo 'User=root' >> $MESH_SETUP_DAEMON
403
-	echo 'Group=root' >> $MESH_SETUP_DAEMON
404
-	echo 'WorkingDirectory=/root' >> $MESH_SETUP_DAEMON
405
-	echo "ExecStart=/usr/local/bin/${PROJECT_NAME}-image-mesh > /var/log/mesh-setup.log" >> $MESH_SETUP_DAEMON
406
-	echo '' >> $MESH_SETUP_DAEMON
407
-	echo 'TimeoutSec=99999' >> $MESH_SETUP_DAEMON
408
-	echo '' >> $MESH_SETUP_DAEMON
409
-	echo '[Install]' >> $MESH_SETUP_DAEMON
410
-	echo 'WantedBy=multi-user.target' >> $MESH_SETUP_DAEMON
411
-	chroot "$rootdir" systemctl enable $MESH_SERVICE
393
+    freedombone-mesh-install -f avahi -r "${rootdir}"
394
+    freedombone-mesh-install -f batman -r "${rootdir}"
395
+    freedombone-mesh-install -f tox_node -r "${rootdir}"
396
+    freedombone-mesh-install -f tox_client -r "${rootdir}"
397
+    freedombone-mesh-install -f zeronet -r "${rootdir}"
398
+
399
+    MESH_SERVICE='mesh-setup.service'
400
+    MESH_SETUP_DAEMON=$rootdir/etc/systemd/system/$MESH_SERVICE
401
+
402
+    echo '[Unit]' > $MESH_SETUP_DAEMON
403
+    echo 'Description=Initial mesh router configuration' >> $MESH_SETUP_DAEMON
404
+    echo 'After=syslog.target' >> $MESH_SETUP_DAEMON
405
+    echo 'After=network.target' >> $MESH_SETUP_DAEMON
406
+    echo '[Service]' >> $MESH_SETUP_DAEMON
407
+    echo 'Type=simple' >> $MESH_SETUP_DAEMON
408
+    echo 'User=root' >> $MESH_SETUP_DAEMON
409
+    echo 'Group=root' >> $MESH_SETUP_DAEMON
410
+    echo 'WorkingDirectory=/root' >> $MESH_SETUP_DAEMON
411
+    echo "ExecStart=/usr/local/bin/${PROJECT_NAME}-image-mesh > /var/log/mesh-setup.log" >> $MESH_SETUP_DAEMON
412
+    echo '' >> $MESH_SETUP_DAEMON
413
+    echo 'TimeoutSec=99999' >> $MESH_SETUP_DAEMON
414
+    echo '' >> $MESH_SETUP_DAEMON
415
+    echo '[Install]' >> $MESH_SETUP_DAEMON
416
+    echo 'WantedBy=multi-user.target' >> $MESH_SETUP_DAEMON
417
+    chroot "$rootdir" systemctl enable $MESH_SERVICE
412 418
 }
413 419
 
414 420
 # Set to true/false to control if eatmydata is used during build
@@ -502,17 +508,17 @@ fi
502 508
 case "$MACHINE" in
503 509
     beaglebone)
504 510
         dd if=$rootdir/usr/lib/u-boot/am335x_boneblack/MLO of="$image" \
505
-		   count=1 seek=1 conv=notrunc bs=128k
511
+           count=1 seek=1 conv=notrunc bs=128k
506 512
         dd if=$rootdir/usr/lib/u-boot/am335x_boneblack/u-boot.img of="$image" \
507
-		   count=2 seek=1 conv=notrunc bs=384k
513
+           count=2 seek=1 conv=notrunc bs=384k
508 514
         ;;
509 515
     cubieboard2)
510 516
         dd if=$rootdir/usr/lib/u-boot/Cubieboard2/u-boot-sunxi-with-spl.bin of="$image" \
511
-		   seek=8 conv=notrunc bs=1k
517
+           seek=8 conv=notrunc bs=1k
512 518
         ;;
513 519
     a20-olinuxino-lime)
514 520
         dd if=$rootdir/usr/lib/u-boot/A20-OLinuXino-Lime/u-boot-sunxi-with-spl.bin \
515
-		   of="$image" seek=8 conv=notrunc bs=1k
521
+           of="$image" seek=8 conv=notrunc bs=1k
516 522
         ;;
517 523
 esac
518 524
 

+ 43
- 41
src/freedombone-image-make Целия файл

@@ -55,6 +55,7 @@ export MINIMAL_INSTALL
55 55
 export SSH_PORT
56 56
 export ONION_ONLY
57 57
 export PROJECT_REPO
58
+export DEBIAN_INSTALL_ONLY
58 59
 
59 60
 # Locate vmdebootstrap program fetched in Makefile
60 61
 basedir=`pwd`
@@ -83,8 +84,8 @@ echo Building $MACHINE $PROJECT_NAME for $ARCHITECTURE.
83 84
 
84 85
 case "$MACHINE" in
85 86
     beaglebone)
86
-    extra_pkgs="$beaglebone_pkgs"
87
-    extra_opts="\
87
+		extra_pkgs="$beaglebone_pkgs"
88
+		extra_opts="\
88 89
  --variant minbase \
89 90
  --bootoffset=2mib \
90 91
  --bootsize 128M \
@@ -94,10 +95,10 @@ case "$MACHINE" in
94 95
  --foreign /usr/bin/qemu-arm-static \
95 96
  --roottype btrfs \
96 97
 "
97
-    ;;
98
+		;;
98 99
     cubietruck | a20-olinuxino-lime | a20-olinuxino-lime2 | a20-olinuxino-micro | cubieboard2)
99
-       extra_pkgs="$a20_pkgs"
100
-       extra_opts="\
100
+		extra_pkgs="$a20_pkgs"
101
+		extra_opts="\
101 102
  --variant minbase \
102 103
  --bootoffset=1mib \
103 104
  --bootsize 128M \
@@ -107,19 +108,19 @@ case "$MACHINE" in
107 108
  --foreign /usr/bin/qemu-arm-static \
108 109
  --roottype btrfs \
109 110
 "
110
-       ;;
111
+		;;
111 112
     virtualbox)
112
-    extra_opts="\
113
+		extra_opts="\
113 114
  --grub \
114 115
  --roottype btrfs \
115 116
 "   ;;
116 117
     qemu)
117
-    extra_opts="\
118
+		extra_opts="\
118 119
  --grub \
119 120
  --roottype btrfs \
120 121
 "   ;;
121
-    all)
122
-    extra_opts="\
122
+	all)
123
+		extra_opts="\
123 124
  --grub \
124 125
  --roottype btrfs \
125 126
 "   ;;
@@ -128,32 +129,32 @@ esac
128 129
 # allow for lots of extra fun customization options.
129 130
 for customization in $CUSTOMIZATIONS
130 131
 do
131
-    case "$customization" in
132
-        development)
133
-            extra_pkgs="$extra_pkgs $dev_pkgs"
134
-            ;;
135
-    esac
132
+	case "$customization" in
133
+		development)
134
+			extra_pkgs="$extra_pkgs $dev_pkgs"
135
+			;;
136
+	esac
136 137
 done
137 138
 
138 139
 for p in $base_pkgs $extra_pkgs; do
139
-    pkgopts="$pkgopts --package $p"
140
+	pkgopts="$pkgopts --package $p"
140 141
 done
141 142
 
142 143
 # Make sure file is owned by current user, not root
143 144
 touch $(dirname $IMAGE)/${PROJECT_NAME}.log
144 145
 
145 146
 if [ -x vendor/vmdebootstrap/vmdebootstrap ] ; then
146
-    VMDEBOOTSTRAP=vendor/vmdebootstrap/vmdebootstrap
147
+	VMDEBOOTSTRAP=vendor/vmdebootstrap/vmdebootstrap
147 148
 else
148
-    VMDEBOOTSTRAP=vmdebootstrap
149
+	VMDEBOOTSTRAP=vmdebootstrap
149 150
 fi
150 151
 
151 152
 echo $'Making customised customisation script'
152 153
 TEMP_CUSTOMISE=/etc/${PROJECT_NAME}/image-customise
153 154
 if [ -f /usr/local/bin/${PROJECT_NAME}-image-customise ]; then
154
-    sudo cp /usr/local/bin/${PROJECT_NAME}-image-customise $TEMP_CUSTOMISE
155
+	sudo cp /usr/local/bin/${PROJECT_NAME}-image-customise $TEMP_CUSTOMISE
155 156
 else
156
-    sudo cp /usr/bin/${PROJECT_NAME}-image-customise $TEMP_CUSTOMISE
157
+	sudo cp /usr/bin/${PROJECT_NAME}-image-customise $TEMP_CUSTOMISE
157 158
 fi
158 159
 sudo sed -i "s|MY_USERNAME=.*|MY_USERNAME=${MY_USERNAME}|g" $TEMP_CUSTOMISE
159 160
 sudo sed -i "s|MY_PASSWORD=.*|MY_PASSWORD=${MY_PASSWORD}|g" $TEMP_CUSTOMISE
@@ -169,31 +170,32 @@ sudo sed -i "s|MINIMAL_INSTALL=.*|MINIMAL_INSTALL=\"${MINIMAL_INSTALL}\"|g" $TEM
169 170
 sudo sed -i "s|SSH_PORT=.*|SSH_PORT=\"${SSH_PORT}\"|g" $TEMP_CUSTOMISE
170 171
 sudo sed -i "s|ONION_ONLY=.*|ONION_ONLY=\"${ONION_ONLY}\"|g" $TEMP_CUSTOMISE
171 172
 sudo sed -i "s|PROJECT_REPO=.*|PROJECT_REPO=\"${PROJECT_REPO}\"|g" $TEMP_CUSTOMISE
173
+sudo sed -i "s|DEBIAN_INSTALL_ONLY=.*|DEBIAN_INSTALL_ONLY=\"${DEBIAN_INSTALL_ONLY}\"|g" $TEMP_CUSTOMISE
172 174
 
173 175
 echo $"starting $VMDEBOOTSTRAP"
174 176
 # Run vmdebootstrap script to create image
175 177
 sudo -H \
176
-    SUITE="$SUITE" \
177
-    MIRROR="$MIRROR" \
178
-    BUILD_MIRROR="$BUILD_MIRROR"\
179
-    MACHINE="$MACHINE" \
180
-    ARCHITECTURE="$ARCHITECTURE" \
181
-    SOURCE="$SOURCE" \
182
-    CUSTOM_SETUP="$CUSTOM_SETUP" \
183
-    $VMDEBOOTSTRAP \
184
-    --log $(dirname $IMAGE)/${PROJECT_NAME}.log \
185
-    --log-level debug \
186
-    --size $IMAGE_SIZE \
187
-    --image $IMAGE.img \
188
-    --hostname ${PROJECT_NAME} \
189
-    --verbose \
190
-    --mirror $BUILD_MIRROR \
191
-    --customize "$TEMP_CUSTOMISE" \
192
-    --lock-root-password \
193
-    --arch $ARCHITECTURE \
194
-    --distribution $SUITE \
195
-    $extra_opts \
196
-    $pkgopts
178
+	 SUITE="$SUITE" \
179
+	 MIRROR="$MIRROR" \
180
+	 BUILD_MIRROR="$BUILD_MIRROR"\
181
+	 MACHINE="$MACHINE" \
182
+	 ARCHITECTURE="$ARCHITECTURE" \
183
+	 SOURCE="$SOURCE" \
184
+	 CUSTOM_SETUP="$CUSTOM_SETUP" \
185
+	 $VMDEBOOTSTRAP \
186
+	 --log $(dirname $IMAGE)/${PROJECT_NAME}.log \
187
+	 --log-level debug \
188
+	 --size $IMAGE_SIZE \
189
+	 --image $IMAGE.img \
190
+	 --hostname ${PROJECT_NAME} \
191
+	 --verbose \
192
+	 --mirror $BUILD_MIRROR \
193
+	 --customize "$TEMP_CUSTOMISE" \
194
+	 --lock-root-password \
195
+	 --arch $ARCHITECTURE \
196
+	 --distribution $SUITE \
197
+	 $extra_opts \
198
+	 $pkgopts
197 199
 
198 200
 echo $'Removing customised customisation script'
199 201
 sudo shred -zu $TEMP_CUSTOMISE