pkvlm-create
changeset 16 d74646c0b5dd
parent 15 e3893b949972
child 18 65301be81959
equal deleted inserted replaced
15:e3893b949972 16:d74646c0b5dd
   138 define_opt  bridge      br-lan
   138 define_opt  bridge      br-lan
   139 define_opt  dns_domain  paivola.fi
   139 define_opt  dns_domain  paivola.fi
   140 define_opt  ip          
   140 define_opt  ip          
   141 define_opt  puppet      
   141 define_opt  puppet      
   142 define_opt  puppet_master   puppet
   142 define_opt  puppet_master   puppet
       
   143 define_opt  serial_console
   143 
   144 
   144 log_info "Processing ${#@} parameters:"
   145 log_info "Processing ${#@} parameters:"
   145 for param in "$@"; do
   146 for param in "$@"; do
   146     name=${param%=*}
   147     name=${param%=*}
   147     value=${param##*=}
   148     value=${param##*=}
   180 DISK_NAME=$opt_disk_lv
   181 DISK_NAME=$opt_disk_lv
   181 
   182 
   182 # Path to disk block device
   183 # Path to disk block device
   183 DISK_PATH=/dev/mapper/${DISK_VG}-${DISK_NAME}
   184 DISK_PATH=/dev/mapper/${DISK_VG}-${DISK_NAME}
   184 GUEST_DISK_BUS=$opt_disk_bus
   185 GUEST_DISK_BUS=$opt_disk_bus
       
   186 
       
   187 ## Serial
       
   188 # Serial console?
       
   189 # XXX: hardcoded as ttyS0
       
   190 case x"$opt_serial_console" in
       
   191 #    xtty*)  SERIAL_CONSOLE="$opt_serial_console" ;;
       
   192     x)       SERIAL_CONSOLE=     ;;
       
   193     x*)     SERIAL_CONSOLE="ttyS0" ;;
       
   194 esac
   185 
   195 
   186 ### Preseed content
   196 ### Preseed content
   187 GUEST_DISK=$opt_guest_disk
   197 GUEST_DISK=$opt_guest_disk
   188 
   198 
   189 ## Network
   199 ## Network
   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"
   379     CPUs:       $GUEST_VCPUS
   425     CPUs:       $GUEST_VCPUS
   380     RAM:        $GUEST_RAM
   426     RAM:        $GUEST_RAM
   381     OS:         $GUEST_OS_VARIANT
   427     OS:         $GUEST_OS_VARIANT
   382 
   428 
   383     Disk:       $GUEST_DISK
   429     Disk:       $GUEST_DISK
       
   430 
       
   431 Boot:
       
   432     Serial console: $SERIAL_CONSOLE
       
   433     Grub terminal:  $BOOT_GRUB_TERMINAL
       
   434     Kernel args:    $BOOT_KERNEL_ARGS ($BOOT_KERNEL_ARGS_DEFAULT)
   384 
   435 
   385 Disk:
   436 Disk:
   386     Method:     LVM
   437     Method:     LVM
   387     Size:       $DISK_SIZE
   438     Size:       $DISK_SIZE
   388     LVM:
   439     LVM:
   507             --ram $(expand_MB $GUEST_RAM) --vcpus $GUEST_VCPUS \
   558             --ram $(expand_MB $GUEST_RAM) --vcpus $GUEST_VCPUS \
   508             --cdrom "$INSTALL_ISO" \
   559             --cdrom "$INSTALL_ISO" \
   509             --os-variant $GUEST_OS_VARIANT \
   560             --os-variant $GUEST_OS_VARIANT \
   510             --disk path=$DISK_PATH,bus=$GUEST_DISK_BUS \
   561             --disk path=$DISK_PATH,bus=$GUEST_DISK_BUS \
   511             --network bridge:$NET_BRIDGE \
   562             --network bridge:$NET_BRIDGE \
   512             --vnc \
       
   513             --virt-type $LIBVIRT_TYPE \
   563             --virt-type $LIBVIRT_TYPE \
   514             --accelerate --hvm \
   564             --accelerate --hvm \
       
   565             --vnc \
   515             --serial pty
   566             --serial pty
   516 fi
   567 fi
   517 
   568