237 USER_GROUPS=( cdrom sudo adm ) |
247 USER_GROUPS=( cdrom sudo adm ) |
238 |
248 |
239 ## Misc |
249 ## Misc |
240 PACKAGE_INCLUDES=( sudo screen vim ) |
250 PACKAGE_INCLUDES=( sudo screen vim ) |
241 PRESEED_LATE_COMMANDS=( ) |
251 PRESEED_LATE_COMMANDS=( ) |
|
252 PRESEED_LATE_COMMANDS_END=( ) |
242 PRESEED_INCLUDES=( 'passwords.cfg' 'host.cfg' ) |
253 PRESEED_INCLUDES=( 'passwords.cfg' 'host.cfg' ) |
|
254 |
|
255 function preseed_late_commands () { |
|
256 PRESEED_LATE_COMMANDS=( "${PRESEED_LATE_COMMANDS[@]:-}" "$@" ) |
|
257 } |
|
258 |
|
259 # XXX: ordering? |
|
260 function preseed_late_commands_end () { |
|
261 PRESEED_LATE_COMMANDS_END=( "${PRESEED_LATE_COMMANDS_END[@]:-}" "$@" ) |
|
262 } |
243 |
263 |
244 |
264 |
245 ### Extra |
265 ### Extra |
246 ## Puppet |
266 ## Puppet |
247 if [ $opt_puppet ]; then |
267 if [ $opt_puppet ]; then |
256 # XXX: we use files in preseed/files/..., should modularize those |
276 # XXX: we use files in preseed/files/..., should modularize those |
257 |
277 |
258 PUPPET_MASTER="${opt_puppet_master}" |
278 PUPPET_MASTER="${opt_puppet_master}" |
259 |
279 |
260 PACKAGE_INCLUDES=( ${PACKAGE_INCLUDES[@]} ${PUPPET_PACKAGES[@]} ) |
280 PACKAGE_INCLUDES=( ${PACKAGE_INCLUDES[@]} ${PUPPET_PACKAGES[@]} ) |
261 PRESEED_LATE_COMMANDS=( "${PRESEED_LATE_COMMANDS[@]:-}" "${PUPPET_COMMANDS[@]:-}" ) |
281 |
262 fi |
282 [ "${PUPPET_COMMANDS[@]:-}" ] && preseed_late_commands "${PUPPET_COMMANDS[@]}" |
|
283 fi |
|
284 |
|
285 ## Configure GRUB, via preseed/files: /etc/default/grub |
|
286 # Kernel commandline/grub terminal |
|
287 # The last console=... for kernel is used as /dev/console, i.e. init output |
|
288 |
|
289 if [ $SERIAL_CONSOLE ]; then |
|
290 BOOT_KERNEL_CONSOLE="console=${SERIAL_CONSOLE} console=tty0" |
|
291 BOOT_GRUB_TERMINAL="console serial" |
|
292 |
|
293 # re-generate grub.cfg |
|
294 preseed_late_commands_end "in-target update-grub" |
|
295 |
|
296 # Configure /etc/inittab for serial console |
|
297 preseed_late_commands "in-target sed -i 's/#T0/T0/' /etc/inittab" |
|
298 else |
|
299 BOOT_KERNEL_CONSOLE="" |
|
300 BOOT_GRUB_TERMINAL="console" |
|
301 fi |
|
302 |
|
303 # Kernel boot args (overrides those generated by installer) - default boot option uses args + args_default |
|
304 BOOT_KERNEL_ARGS_DEFAULT="quiet" |
|
305 BOOT_KERNEL_ARGS="${BOOT_KERNEL_CONSOLE}" |
|
306 |
263 |
307 |
264 ### Installer setup |
308 ### Installer setup |
265 ## Installation image |
309 ## Installation image |
266 # Original Debian Installer image (iso) |
310 # Original Debian Installer image (iso) |
267 INSTALLER_NAME="debian-6.0.3-amd64" |
311 INSTALLER_NAME="debian-6.0.3-amd64" |
298 |
342 |
299 # Checksum of target preseed.cfg |
343 # Checksum of target preseed.cfg |
300 PRESEED_CHECKSUM= # set later |
344 PRESEED_CHECKSUM= # set later |
301 |
345 |
302 ## Configs |
346 ## Configs |
|
347 |
|
348 # template source |
303 CONF_FILES_SOURCE='preseed/files' |
349 CONF_FILES_SOURCE='preseed/files' |
|
350 |
|
351 # template output into install tree |
304 CONF_FILES_TARGET_NAME='preseed-files' |
352 CONF_FILES_TARGET_NAME='preseed-files' |
305 CONF_FILES_TARGET="${INSTALL_TREE}/${CONF_FILES_TARGET_NAME}" |
353 CONF_FILES_TARGET="${INSTALL_TREE}/${CONF_FILES_TARGET_NAME}" |
|
354 |
|
355 # paths within installer runtime |
306 CONF_FILES_CP_SRC="${PRESEED_MOUNT}/${CONF_FILES_TARGET_NAME}" |
356 CONF_FILES_CP_SRC="${PRESEED_MOUNT}/${CONF_FILES_TARGET_NAME}" |
307 CONF_FILES_CP_DST='/target' |
357 CONF_FILES_CP_DST='/target' |
308 |
358 |
309 PRESEED_LATE_COMMANDS=( "${PRESEED_LATE_COMMANDS[@]:-}" \ |
359 # copy at end of install |
310 "cp -rd -- ${CONF_FILES_CP_SRC}/* ${CONF_FILES_CP_DST}" \ |
360 preseed_late_commands "cp -rd -- ${CONF_FILES_CP_SRC}/* ${CONF_FILES_CP_DST}" |
311 ) |
|
312 |
|
313 |
361 |
314 # Additional files to copy |
362 # Additional files to copy |
315 PRESEED_INCLUDE_FILES=( $(for preseed in ${PRESEED_INCLUDES[@]}; do echo "${PRESEED_SOURCE_DIR}/${preseed}"; done) ) |
363 PRESEED_INCLUDE_FILES=( $(for preseed in ${PRESEED_INCLUDES[@]}; do echo "${PRESEED_SOURCE_DIR}/${preseed}"; done) ) |
316 #PRESEED_INCLUDE_FILES=("preseed/passwords.cfg" "preseed/host.cfg") |
364 #PRESEED_INCLUDE_FILES=("preseed/passwords.cfg" "preseed/host.cfg") |
317 |
365 |
318 # preseed.cfg 'includes' line |
366 # preseed.cfg 'includes' line |
319 PRESEED_INCLUDE=${PRESEED_INCLUDES[@]} |
367 PRESEED_INCLUDE=${PRESEED_INCLUDES[@]} |
320 |
368 |
321 # preseed command execution |
369 # preseed command execution |
322 PRESEED_LATE_COMMAND=$(for cmd in "${PRESEED_LATE_COMMANDS[@]}"; do if [ "$cmd" ]; then echo -n "$cmd;" $'\\\n '; fi; done; echo true) |
370 PRESEED_LATE_COMMAND=$(for cmd in "${PRESEED_LATE_COMMANDS[@]}" "${PRESEED_LATE_COMMANDS_END[@]:-}"; do if [ "$cmd" ]; then echo -n "$cmd;" $'\\\n '; fi; done; echo true) |
323 |
371 |
324 |
372 |
325 ## Isolinux |
373 ## Isolinux |
326 # Source for install tree isolinux file |
374 # Source for install tree isolinux file |
327 PRESEED_ISOLINUX="${PRESEED_SOURCE_DIR}/isolinux.cfg" |
375 PRESEED_ISOLINUX="${PRESEED_SOURCE_DIR}/isolinux.cfg" |
328 |
376 |
329 # XXX: automagics? :) |
377 # Automagics for serial boot :) |
330 # virt-install assumes we have an X $DISPLAY if given --vnc |
378 # virt-install assumes we have an X $DISPLAY if given --vnc |
331 # but we also want to enable the serial console... |
379 # but we also want to enable the serial console... |
332 # d-i automagically configures the serial boot/login console, but only if the installer is run under serial... |
380 # d-i automagically configures the serial boot/login console, but only if the installer is run under serial... |
333 # we want to have both :( |
381 # we want to have both :( |
334 if [ $DISPLAY ]; then |
382 if [ ${DISPLAY:-} ]; then |
335 INSTALL_BOOT_CONSOLE="" |
383 INSTALL_BOOT_CONSOLE="" |
336 else |
384 else |
337 INSTALL_BOOT_CONSOLE="console=ttyS0" |
385 INSTALL_BOOT_CONSOLE="console=ttyS0" |
338 fi |
386 fi |
339 |
387 |
340 # installer boot args |
388 # isolinux installer boot args |
341 INSTALL_BOOT_ARGS="auto=true priority=critical preseed/file=${PRESEED_MOUNT}/${PRESEED_NAME} preseed/file/checksum=${PRESEED_CHECKSUM} -- quiet ${INSTALL_BOOT_CONSOLE}" |
389 INSTALL_BOOT_ARGS="auto=true priority=critical preseed/file=${PRESEED_MOUNT}/${PRESEED_NAME} preseed/file/checksum=${PRESEED_CHECKSUM} -- ${INSTALL_BOOT_CONSOLE} quiet" |
342 |
|
343 |
|
344 |
390 |
345 ### External progs |
391 ### External progs |
346 ## Bootable .iso for Debian isolinux-based installer CDs |
392 ## Bootable .iso for Debian isolinux-based installer CDs |
347 GENISOIMAGE=/usr/bin/genisoimage |
393 GENISOIMAGE=/usr/bin/genisoimage |
348 GENISOIMAGE_OPTS="-r -J -no-emul-boot -boot-load-size 4 -boot-info-table -b isolinux/isolinux.bin -c isolinux/boot.cat" |
394 GENISOIMAGE_OPTS="-r -J -no-emul-boot -boot-load-size 4 -boot-info-table -b isolinux/isolinux.bin -c isolinux/boot.cat" |