X-Git-Url: https://git.grml.org/?p=grml-debootstrap.git;a=blobdiff_plain;f=grml-debootstrap;h=3e773193c970e466168167f263868b22f3342530;hp=06200d87a7ed6e4a177d577741d4790e7c9b3f95;hb=960e54dbc6f4c1b446e1df444b1b71275ee30b5e;hpb=329df0b2f15d3ddb56010205c19eae7dd0d5f015 diff --git a/grml-debootstrap b/grml-debootstrap index 06200d8..3e77319 100755 --- a/grml-debootstrap +++ b/grml-debootstrap @@ -77,9 +77,11 @@ Bootstrap options: Options for Virtual Machine deployment: - --vmfile Set up a Virtual Machine (raw format) instead of installing + --vm Set up a Virtual Machine, instead of plainly installing to a partition or directory, to be combined with --target, - like: --vmfile --target /mnt/sda1/qemu.img + like: --vm --target /dev/mapper/your-vm-disk + --vmfile Like --vm, but install into a file (raw format). + Example: --vmfile --target /mnt/sda1/qemu.img --vmsize Use specified size for size of VM file (default: 2G). Syntax as supported by qemu-img, like: --vmsize 3G @@ -93,10 +95,12 @@ Configuration options: instead of using /etc/debootstrap/packages. --nopackages Skip installation of packages defined in /etc/debootstrap/packages + --nokernel Skip installation of default kernel images. --nointerfaces Do not copy /etc/network/interfaces from host system to target system. (This option is automatically enabled when using --vmfile.) - --nokernel Skip installation of default kernel images. + --defaultinterfaces Install a default /etc/network/interfaces file (enabling + DHCP for eth0) instead of taking over config from host system. --debconf Pre-seed packages using specified pre-seed db file. --grmlrepos Enable Grml's Debian repository (deb.grml.org). --backportrepos Enable Debian's backports repository (backports.debian.org). @@ -313,7 +317,8 @@ fi [ "$_opt_iso" ] && ISO=$_opt_iso [ "$_opt_release" ] && RELEASE=$_opt_release [ "$_opt_target" ] && TARGET=$_opt_target -[ "$_opt_vmfile" ] && VIRTUAL=1 +[ "$_opt_vm" ] && VIRTUAL=1 +[ "$_opt_vmfile" ] && VMFILE=1 && VIRTUAL=1 [ "$_opt_vmsize" ] && VMSIZE=$_opt_vmsize [ "$_opt_mntpoint" ] && MNTPOINT=$_opt_mntpoint [ "$_opt_debopt" ] && DEBOOTSTRAP_OPT=$_opt_debopt @@ -332,6 +337,7 @@ fi [ "$_opt_hostname" ] && HOSTNAME=$_opt_hostname [ "$_opt_password" ] && ROOTPASSWORD=$_opt_password [ "$_opt_nopassword" ] && NOPASSWORD='yes' +[ "$_opt_defaultinterfaces" ] && DEFAULTINTERFACES="true" [ "$_opt_nointerfaces" ] && NOINTERFACES="true" [ "$_opt_nokernel" ] && NOKERNEL="true" [ "$_opt_bootappend" ] && BOOT_APPEND=$_opt_bootappend @@ -737,7 +743,9 @@ else # if not running automatic installation display configuration and prompt fo [ -n "$ARCH" ] && echo " Using arch: $ARCH" if [ -n "$VIRTUAL" ] ; then echo " Deploying as Virtual Machine." - [ -n "$VMSIZE" ] && echo " Using Virtual Disk file with size of ${VMSIZE}." + if [ -n "$VMSIZE" -a -n "$VMFILE" ]; then + echo " Using Virtual Disk file with size of ${VMSIZE}." + fi fi if [ ! -t 0 -a -z "$ROOTPASSWORD" -a -z "$NOPASSWORD" ] ; then @@ -971,18 +979,25 @@ mount_target() { # prepare VM image for usage with debootstrap {{{ prepare_vm() { if [ -z "$VIRTUAL" ] ; then - return 0 # be quite by intention + return 0 # be quiet by intention fi - if [ -b "$TARGET" ] ; then + if [ -b "$TARGET" -a -n "$VMFILE" ] ; then eerror "Error: specified virtual disk target ($TARGET) is an existing block device." eend 1 bailout 1 fi + if [ ! -b "$TARGET" -a -z "$VMFILE" ] ; then + eerror "Error: specified virtual disk target ($TARGET) does not exist yet." + eend 1 + bailout 1 + fi ORIG_TARGET="$TARGET" # store for later reuse - qemu-img create -f raw "${TARGET}" "${VMSIZE}" + if [ -n "$VMFILE" ]; then + qemu-img create -f raw "${TARGET}" "${VMSIZE}" + fi echo 4 66 | /usr/share/grml-debootstrap/bootgrub.mksh -A | dd of="$TARGET" conv=notrunc dd if=/dev/zero bs=1 conv=notrunc count=64 seek=446 of="$TARGET" if [ "$FIXED_DISK_IDENTIFIERS" = "yes" ] ; then @@ -1153,7 +1168,6 @@ preparechroot() { [ -n "$MIRROR" ] && echo "MIRROR=\"$MIRROR\"" >> $CHROOT_VARIABLES [ -n "$MKFS" ] && echo "MKFS=\"$MKFS\"" >> $CHROOT_VARIABLES [ -n "$NOPASSWORD" ] && echo "NOPASSWORD=\"true\"" >> $CHROOT_VARIABLES - [ -n "$NOINTERFACES" ] && echo "NOINTERFACES=\"true\"" >> $CHROOT_VARIABLES [ -n "$NOKERNEL" ] && echo "NOKERNEL=\"true\"" >> $CHROOT_VARIABLES [ -n "$PACKAGES" ] && echo "PACKAGES=\"$PACKAGES\"" >> $CHROOT_VARIABLES [ -n "$PRE_SCRIPTS" ] && echo "PRE_SCRIPTS=\"$PRE_SCRIPTS\"" >> $CHROOT_VARIABLES @@ -1247,8 +1261,12 @@ iface eth0 inet dhcp if [ -n "$NOINTERFACES" ] ; then einfo "Not installing /etc/network/interfaces as requested via --nointerfaces option" ; eend 0 + elif [ -n "$DEFAULT_INTERFACES" ] ; then + einfo "Installing default /etc/network/interfaces as requested via --defaultinterfaces options." + echo "$DEFAULT_INTERFACES" > "${MNTPOINT}/etc/network/interfaces" + eend $? elif [ -n "$VIRTUAL" ] ; then - einfo "Installing into Virtual Machine, installing default /etc/network/interfaces" + einfo "Setting up Virtual Machine, installing default /etc/network/interfaces" echo "$DEFAULT_INTERFACES" > "${MNTPOINT}/etc/network/interfaces" eend $? elif [ -r /etc/network/interfaces ] ; then