Giter VIP home page Giter VIP logo

grml-debootstrap's People

Contributors

adrelanos avatar anarcat avatar cranvil avatar crisidev avatar danwin avatar evgeni avatar formorer avatar gavinpacini avatar gebi avatar grosa1 avatar hartwork avatar jkirk avatar mika avatar mrud avatar paulmenzel avatar sts avatar suntong avatar zeha avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

grml-debootstrap's Issues

Git HEAD: Claims to be the version installed system-wide (rather than the version in Git)

Rather than obtaining its version from debian/changelog, grml-debootstrap currently introduces itself to the user as the version installed system-wide, while being potentially different code.

How the current code works:

$ fgrep -w VERSION grml-debootstrap
VERSION="$(dpkg-query --show --showformat='${Version}' "$PN")"
VERSION="${VERSION:-unknown}"
  einfo "$PN - version $VERSION"
   einfo "$PN [${VERSION}] - Please recheck configuration before execution:"

An idea, for how it could work instead:

  • Check for a folder "$(dirname $(which "$0")")/.git"
  • If found, ask for dpkg-parsechangelog | sed -e '/^Version: / !d' -e 's|^Version: ||'
  • Else, use dpkg-query --show --showformat='${Version}' "grml-debootstrap" as done at the moment

What do you think?

support LVM in VM installations

LVM usage within the VMs is a nice use case (thanks for the suggestion, @mrud), we should either default to LVM or at least support it as an option when installing VMs.

Images created with --release stable won't boot.

On a standard (no grml-debootstrap involved in creation) wheezy system, file exists:

/boot/grub/video.lst

On a standard (no grml-debootstrap involved in creation) jessie system, file exists:

/boot/grub/i386-pc/video.lst

While attempting to build a vmimage with grml-debootstrap using --release stable on Debian wheezy, I am seeing this in the log.

+ chroot /mnt/debootstrap.22326 update-grub
Generating grub.cfg ...
cat: /boot/grub/video.lst: No such file or directory
done

I think there is an issue with the following code block.

https://github.com/grml/grml-debootstrap/blob/master/grml-debootstrap#L1081

  case "$RELEASE" in
    lenny|squeeze|wheezy)
      cp "${MNTPOINT}"/usr/lib/grub/i386-pc/* "${MNTPOINT}/boot/grub/"
      ;;
    *)
      cp -a "${MNTPOINT}"/usr/lib/grub/i386-pc "${MNTPOINT}/boot/grub/"
      ;;
  esac

When someone uses --release stable then the "lenny|squeeze|wheezy" code path won't match. Therefore the "*)" code path will be used. Resulting in using the wrong path. (Confirmed this by looking into the image.) Therefore the image will not be bootable. This worked in earlier versions of grml-debootstrap.

Using stable as codename is not supported as per grml-debootstrap man page. So you could say, it's not a bug.

So in case you don't want to support stable as codename...

Could you perhaps break the build when using codename stable or testing? Do you want a pull request for this?

Please support --vm (with and) without installing Grub (for pygrub Xen): Add --no-grub?

The current stages order of

  • ..
  • execute_pre_scripts
  • chrootscript
  • execute_post_scripts
  • ..
  • finalize_vm -- installation of GRUB -- no script stages after
  • ..

require a wrapper around grml-debootstrap adding something like a post-post script execution stage for people who want to uninstall GRUB, be it for

  • a) installing a different bootloader or
  • b) no bootloader at all.

including need to set up and tear down a full chroot with mounts once again for apt-get remove .... Not too much fun.

(My case is with pygrub: no bootloader but a manual GRUB config file that (frustratingly limited parser of) pygrub is analyzing to boot a PV Xen guest. Having GRUB installed in the guest means that any call to update-grub later can turn the Xen guest unbootable since grub.cfg turns into something that pygrub cannot parse, rather easily. So to not have GRUB around when bootstrapping is done is what I am aiming for.)

Instead of installing and then uninstalling GRUB again, not installing it in the first place would be cool and save the ugly stunts needed on user end for uninstalling GRUB as of today.

What do you think?

strange update-locale error

*** update-locale: Error: invalid locale settings:  LANGUAGE=en_US:en LANG=en_US.UTF-8

This happed when using --debopt to install grub-pc (#40) and locales (#47), i.e. --debopt "--verbose --include=grub-pc,locales".

tester@debian:~$ pp
+ export http_proxy=http://192.168.2.100:3142
+ http_proxy=http://192.168.2.100:3142
+ set +x
tester@debian:~$ sudo -E bash -x \
>    grml-debootstrap \
>          --debug \
>          --verbose \
>          --arch i386 \
>          --filesystem ext4 \
>          --force \
>          --hostname host \
>          --mirror http://ftp.us.debian.org/debian \
>          --keep_src_list \
>          --password changeme \
>          --release wheezy \
>          --verbose \
>          --vmfile \
>          --vmsize "$VMSIZE" \
>          --target "./test.raw" \
>          --debopt "--verbose --include=grub-pc,locales" \
>          --nopackages
+ set -o pipefail
+ '[' -n '' ']'
+ REPORT_TRAP_ERR=no
+ '[' -n '' ']'
+ FAIL_TRAP_ERR=no
+ trap error_handler ERR
+ export -f error_handler
++ basename grml-debootstrap
+ PN=grml-debootstrap
++ dpkg-query --show '--showformat=${Version}' grml-debootstrap
+ VERSION=0.67
+ VERSION=0.67
+ MNTPOINT=/mnt/debootstrap.3127
+ '[' -n '' ']'
+ CHROOT_SCRIPTS=yes
+ '[' -n '' ']'
+ CONFFILES=/etc/debootstrap
+ '[' -n '' ']'
+ DEBCONF=yes                                                                                                                                                                       
+ '[' -n '' ']'
+ DEBIAN_FRONTEND=noninteractive
+ '[' -n '' ']'
+ DEBOOTSTRAP=debootstrap
+ '[' -n '' ']'
+ DEFAULT_LOCALES=en_US.UTF-8
+ '[' -n '' ']'
+ DEFAULT_LANGUAGE=en_US:en
+ '[' -n '' ']'
+ EXTRAPACKAGES=yes
+ '[' -n '' ']'
+ FALLBACK_MIRROR=http://http.debian.net/debian
+ '[' -n '' ']'
+ FORCE=
+ '[' -n debian ']'
+ '[' -n '' ']'
+ INITRD=yes
+ '[' -n '' ']'
+ INSTALL_NOTES=/etc/debootstrap/install_notes
+ '[' -n '' ']'
+ LOCALES=yes
+ '[' -n '' ']'
+ MIRROR=http://http.debian.net/debian
+ '[' -n '' ']'
+ MKFS=mkfs.ext4
+ '[' -n '' ']'
+ PACKAGES=yes
+ '[' -n '' ']'
+ PRE_SCRIPTS=yes
+ '[' -n '' ']'
+ RECONFIGURE=console-data
+ '[' -n '' ']'
+ RELEASE=wheezy
+ '[' -n '' ']'
+ RM_APTCACHE=yes
+ '[' -n '' ']'
+ SCRIPTS=yes
+ '[' -n '' ']'
+ SECURE=yes
+ '[' -n '' ']'
+ TIMEZONE=Europe/Vienna
+ '[' -n '' ']'
+ TUNE2FS='tune2fs -c0 -i0'
+ '[' -n '' ']'
+ UPGRADE_SYSTEM=yes
+ '[' -n '' ']'
+ VMSIZE=2G
+ '[' -n '' ']'
+ FIXED_DISK_IDENTIFIERS=no
+ export LANG=C
+ LANG=C
+ export LC_ALL=C
+ LC_ALL=C
+ INTERACTIVE=
+ '[' --debug = -h ']'
+ '[' --debug = -help ']'
+ '[' --debug = --help ']'
+ GOOD=''
+ WARN=''
+ BAD=''
+ NORMAL=''
+ HILITE=''
+ BRACKET=''
+ trap bailout HUP INT QUIT TERM
+ check4progs debootstrap
+ trap error_handler ERR
+ local RC=
+ for arg in '$*'
+ which debootstrap
+ '[' -n '' ']'
+ '[' -r /etc/debootstrap/config ']'
+ . /etc/debootstrap/config
+ '[' -r ./cmdlineopts.clp ']'
+ '[' -r /usr/share/grml-debootstrap/functions/cmdlineopts.clp ']'
+ . /usr/share/grml-debootstrap/functions/cmdlineopts.clp
++ CMDLINE_OPTS=mirror:,iso:,release:,target:,mntpoint:,debopt:,defaultinterfaces,interactive,nodebootstrap,nointerfaces,nokernel,nopackages,filesystem:,config:,confdir:,packages:,chroot-scripts:,scripts:,pre-scripts:,debconf:,vm,vmfile,vmsize:,keep_src_list,hostname:,password:,nopassword,grmlrepos,backportrepos,bootappend:,grub:,arch:,insecure,verbose,help,version,force,debug
+++ getopt --name grml-debootstrap -o +m:i:r:t:p:c:d:vhV --long mirror:,iso:,release:,target:,mntpoint:,debopt:,defaultinterfaces,interactive,nodebootstrap,nointerfaces,nokernel,nopackages,filesystem:,config:,confdir:,packages:,chroot-scripts:,scripts:,pre-scripts:,debconf:,vm,vmfile,vmsize:,keep_src_list,hostname:,password:,nopassword,grmlrepos,backportrepos,bootappend:,grub:,arch:,insecure,verbose,help,version,force,debug -- --debug --verbose --arch i386 --filesystem ext4 --force --hostname host --mirror http://ftp.us.debian.org/debian --keep_src_list --password changeme --release wheezy --verbose --vmfile --vmsize '' --target ./test.raw --debopt '--verbose --include=grub-pc,locales' --nopackages
++ _opt_temp=' --debug --verbose --arch '\''i386'\'' --filesystem '\''ext4'\'' --force --hostname '\''host'\'' --mirror '\''http://ftp.us.debian.org/debian'\'' --keep_src_list --password '\''changeme'\'' --release '\''wheezy'\'' --verbose --vmfile --vmsize '\'''\'' --target '\''./test.raw'\'' --debopt '\''--verbose --include=grub-pc,locales'\'' --nopackages --'
++ '[' 0 '!=' 0 ']'
++ eval set -- ' --debug --verbose --arch '\''i386'\'' --filesystem '\''ext4'\'' --force --hostname '\''host'\'' --mirror '\''http://ftp.us.debian.org/debian'\'' --keep_src_list --password '\''changeme'\'' --release '\''wheezy'\'' --verbose --vmfile --vmsize '\'''\'' --target '\''./test.raw'\'' --debopt '\''--verbose --include=grub-pc,locales'\'' --nopackages --'
+++ set -- --debug --verbose --arch i386 --filesystem ext4 --force --hostname host --mirror http://ftp.us.debian.org/debian --keep_src_list --password changeme --release wheezy --verbose --vmfile --vmsize '' --target ./test.raw --debopt '--verbose --include=grub-pc,locales' --nopackages --
++ :
++ case "$1" in
++ _opt_debug=T
++ shift
++ :
++ case "$1" in
++ '[' '' ']'
++ _opt_verbose=1
++ shift
++ :
++ case "$1" in
++ shift
++ _opt_arch=i386
++ shift
++ :
++ case "$1" in
++ shift
++ _opt_filesystem=ext4
++ shift
++ :
++ case "$1" in
++ _opt_force=T
++ shift
++ :
++ case "$1" in
++ shift
++ _opt_hostname=host
++ shift
++ :
++ case "$1" in
++ shift
++ _opt_mirror=http://ftp.us.debian.org/debian
++ shift
++ :
++ case "$1" in
++ _opt_keep_src_list=T
++ shift
++ :
++ case "$1" in
++ shift
++ _opt_password=changeme
++ shift
++ :
++ case "$1" in
++ shift
++ _opt_release=wheezy
++ shift
++ :
++ case "$1" in
++ '[' 1 ']'
+++ expr 1 + 1
++ _opt_verbose=2
++ shift
++ :
++ case "$1" in
++ _opt_vmfile=T
++ shift
++ :
++ case "$1" in
++ shift
++ _opt_vmsize=
++ shift
++ :
++ case "$1" in
++ shift
++ _opt_target=./test.raw
++ shift
++ :
++ case "$1" in
++ shift
++ _opt_debopt='--verbose --include=grub-pc,locales'
++ shift
++ :
++ case "$1" in
++ _opt_nopackages=T
++ shift
++ :
++ case "$1" in
++ shift
++ break
+ '[' '' ']'
+ '[' http://ftp.us.debian.org/debian ']'
+ MIRROR=http://ftp.us.debian.org/debian
+ '[' '' ']'
+ '[' wheezy ']'
+ RELEASE=wheezy
+ '[' ./test.raw ']'
+ TARGET=./test.raw
+ '[' '' ']'
+ '[' T ']'
+ VMFILE=1
+ VIRTUAL=1
+ '[' '' ']'
+ '[' '' ']'
+ '[' '--verbose --include=grub-pc,locales' ']'
+ DEBOOTSTRAP_OPT='--verbose --include=grub-pc,locales'
+ '[' '' ']'
+ '[' '' ']'
+ '[' ext4 ']'
+ MKFS=mkfs.ext4
+ '[' '' ']'
+ '[' T ']'
+ PACKAGES=
+ '[' '' ']'
+ '[' '' ']'
+ '[' '' ']'
+ '[' '' ']'
+ '[' T ']'
+ KEEP_SRC_LIST=yes
+ '[' '' ']'
+ '[' '' ']'
+ '[' host ']'
+ HOSTNAME=host
+ '[' changeme ']'
+ ROOTPASSWORD=changeme
+ '[' '' ']'
+ '[' '' ']'
+ '[' '' ']'
+ '[' '' ']'
+ '[' '' ']'
+ '[' '' ']'
+ '[' i386 ']'
+ ARCH=i386
+ '[' '' ']'
+ '[' T ']'
+ FORCE=T
+ '[' 2 ']'
+ VERBOSE=-v
+ '[' T ']'
+ DEBUG=true
+ '[' true = true ']'
+ set -x
+ '[' '' ']'
+ '[' '' ']'
+ check4root
+ trap error_handler ERR
++ id -u
+ '[' 0 '!=' 0 ']'
+ '[' -n 1 ']'
+ check4progs kpartx mksh parted qemu-img
+ trap error_handler ERR
+ local RC=
+ for arg in '$*'
+ which kpartx
+ for arg in '$*'
+ which mksh
+ for arg in '$*'
+ which parted
+ for arg in '$*'
+ which qemu-img
+ '[' -n '' ']'
+ '[' -n '' ']'
+ '[' -n '' ']'
+ grep -q '^hd'
+ echo ''
+ '[' -z ./test.raw -o -n '' ']'
+ '[' -n i386 ']'
+ ARCHCMD='--arch i386'
+ ARCHINFO=' (i386)'
++ uname -m
+ CURRENT_ARCH=i686
+ '[' i686 '!=' x86_64 ']'
+ '[' i386 = amd64 ']'
+ checkconfiguration
+ trap error_handler ERR
+ '[' -n '' ']'
+ '[' -n '' ']'
+ einfo 'grml-debootstrap [0.67] - Please recheck configuration before execution:'
+ trap error_handler ERR
+ einfon 'grml-debootstrap [0.67] - Please recheck configuration before execution:\n'
+ trap error_handler ERR
+ '[' '' '!=' yes ']'
+ '[' '' = ebegin ']'
+ printf ' * grml-debootstrap [0.67] - Please recheck configuration before execution:\n'
 * grml-debootstrap [0.67] - Please recheck configuration before execution:
+ LAST_E_CMD=einfon
+ return 0
+ return 0
+ echo

+ echo '   Target:          ./test.raw'
   Target:          ./test.raw
+ case "$MNTPOINT" in
+ '[' -n 1 ']'
+ echo '   Install grub:    yes'
   Install grub:    yes
+ '[' -n wheezy ']'
+ echo '   Using release:   wheezy'
   Using release:   wheezy
+ '[' -n host ']'
+ echo '   Using hostname:  host'
   Using hostname:  host
+ '[' -n http://ftp.us.debian.org/debian ']'
+ echo '   Using mirror:    http://ftp.us.debian.org/debian'
   Using mirror:    http://ftp.us.debian.org/debian
+ '[' -n '' ']'
+ '[' -n i386 ']'
+ echo '   Using arch:      i386'
   Using arch:      i386
+ '[' -n 1 ']'
+ echo '   Deploying as Virtual Machine.'
   Deploying as Virtual Machine.
+ '[' -n 2G -a -n 1 ']'
+ echo '   Using Virtual Disk file with size of 2G.'
   Using Virtual Disk file with size of 2G.
+ '[' '!' -t 0 -a -z changeme -a -z '' ']'
+ echo

+ echo '   Important! Continuing will delete all data from ./test.raw!'
   Important! Continuing will delete all data from ./test.raw!
+ '[' -n T ']'
+ einfo 'Skip user acknowledgement as requested via --force option.'
+ trap error_handler ERR
+ einfon 'Skip user acknowledgement as requested via --force option.\n'
+ trap error_handler ERR
+ '[' '' '!=' yes ']'
+ '[' einfon = ebegin ']'
+ printf ' * Skip user acknowledgement as requested via --force option.\n'
 * Skip user acknowledgement as requested via --force option.
+ LAST_E_CMD=einfon
+ return 0
+ return 0
+ '[' -n ./test.raw ']'
+ SHORT_TARGET=test.raw
+ '[' -z '' ']'
+ STAGES=/var/cache/grml-debootstrap/stages_test.raw
+ '[' -d /var/cache/grml-debootstrap/stages_test.raw ']'
+ mkdir -p /var/cache/grml-debootstrap/stages_test.raw
+ '[' -r /var/cache/grml-debootstrap/stages_test.raw/grml-debootstrap ']'
+ PARTITION=
+ DIRECTORY=
+ '[' -b ./test.raw ']'
+ '[' -n 1 ']'
+ PARTITION=1
+ '[' -n '' ']'
+ ISODIR=
+ ISODIR=
+ '[' -n '' ']'
+ for i in prepare_vm mkfs tunefs mount_target debootstrap_system preparechroot execute_pre_scripts chrootscript execute_scripts umount_chroot finalize_vm fscktool
+ stage prepare_vm
+ trap error_handler ERR
+ '[' -n '' ']'
+ grep -q done /var/cache/grml-debootstrap/stages_test.raw/prepare_vm
+ prepare_vm
+ trap error_handler ERR
+ '[' -z 1 ']'
+ '[' -b ./test.raw -a -n 1 ']'
+ '[' '!' -b ./test.raw -a -z 1 ']'
+ ORIG_TARGET=./test.raw
+ '[' -n 1 ']'
+ qemu-img create -f raw ./test.raw 2G
Formatting './test.raw', fmt=raw size=2147483648 
+ dd of=./test.raw conv=notrunc
+ /usr/share/grml-debootstrap/bootgrub.mksh -A
+ echo 4 66
0 @0x168: 63 @4 (0x4)
 - 0x168: 32 (0x20) @ 4 (0x4)
 - 0x16A: 31 (0x1F) @ 36 (0x24)
using 2 blocks, 4 bytes (146 free)
using sectors of 2^9 = 512 bytes
1+0 records in
1+0 records out
512 bytes (512 B) copied, 0.0161063 s, 31.8 kB/s
+ dd if=/dev/zero bs=1 conv=notrunc count=64 seek=446 of=./test.raw
64+0 records in
64+0 records out
64 bytes (64 B) copied, 0.0012685 s, 50.5 kB/s
+ '[' no = yes ']'
+ parted -s ./test.raw 'mkpart primary ext4 2M -1'
+ kpartx -av ./test.raw
+ grep -q device-mapper /proc/misc
+ losetup -f
++ kpartx -av ./test.raw
+ DEVINFO='add map loop0p1 (254:0): 0 4190208 linear /dev/loop0 4096'
+ '[' -z 'add map loop0p1 (254:0): 0 4190208 linear /dev/loop0 4096' ']'
++ sed 's/.* linear //; s/ [[:digit:]]*//'
++ echo add map loop0p1 '(254:0):' 0 4190208 linear /dev/loop0 4096
+ LOOP=/dev/loop0
++ sed -e 's/.* (\(.*:.*\)).*/\1/'
++ echo 'add map loop0p1 (254:0): 0 4190208 linear /dev/loop0 4096'
+ BLOCKDEV=254:0
++ sed 's/ .*//'
++ echo loop0p1 '(254:0):' 0 4190208 linear /dev/loop0 4096
+ LOOP_PART=loop0p1
+ export TARGET=/dev/mapper/loop0p1
+ TARGET=/dev/mapper/loop0p1
+ blockdev --rereadpt /dev/loop0
BLKRRPART: Invalid argument
+ '[' -z /dev/mapper/loop0p1 ']'
+ stage prepare_vm done
+ trap error_handler ERR
+ '[' -n done ']'
+ echo done
+ return 0
+ rm -f /var/cache/grml-debootstrap/stages_test.raw/prepare_vm
+ for i in prepare_vm mkfs tunefs mount_target debootstrap_system preparechroot execute_pre_scripts chrootscript execute_scripts umount_chroot finalize_vm fscktool
+ stage mkfs
+ trap error_handler ERR
+ '[' -n '' ']'
+ grep -q done /var/cache/grml-debootstrap/stages_test.raw/mkfs
+ mkfs
+ trap error_handler ERR
+ '[' -n '' ']'
+ grep -q /dev/mapper/loop0p1 /proc/mounts
+ '[' -n mkfs.ext4 ']'
+ einfo 'Running mkfs.ext4 on /dev/mapper/loop0p1'
+ trap error_handler ERR
+ einfon 'Running mkfs.ext4 on /dev/mapper/loop0p1\n'
+ trap error_handler ERR
+ '[' '' '!=' yes ']'
+ '[' einfon = ebegin ']'
+ printf ' * Running mkfs.ext4 on /dev/mapper/loop0p1\n'
 * Running mkfs.ext4 on /dev/mapper/loop0p1
+ LAST_E_CMD=einfon
+ return 0
+ return 0
+ mkfs.ext4 /dev/mapper/loop0p1
mke2fs 1.42.5 (29-Jul-2012)
Discarding device blocks: done                            
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
131072 inodes, 523776 blocks
26188 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=536870912
16 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done 

+ RC=0
+ '[' no = yes ']'
+ grep -q /dev/md
+ echo /dev/mapper/loop0p1
+ '[' -n 1 ']'
+ sleep 2
++ blkid -o udev /dev/mapper/loop0p1
+ eval ID_FS_UUID=6ffa2a7e-8b59-4e10-a5b7-5b8fe002a04f ID_FS_UUID_ENC=6ffa2a7e-8b59-4e10-a5b7-5b8fe002a04f ID_FS_TYPE=ext4
++ ID_FS_UUID=6ffa2a7e-8b59-4e10-a5b7-5b8fe002a04f
++ ID_FS_UUID_ENC=6ffa2a7e-8b59-4e10-a5b7-5b8fe002a04f
++ ID_FS_TYPE=ext4
+ '[' -n 6ffa2a7e-8b59-4e10-a5b7-5b8fe002a04f ']'
+ TARGET_UUID=6ffa2a7e-8b59-4e10-a5b7-5b8fe002a04f
+ eend 0
+ trap error_handler ERR
+ local retval=0
+ shift
+ '[' 0 -gt 0 ']'
+ return 0
+ stage mkfs done
+ trap error_handler ERR
+ '[' -n done ']'
+ echo done
+ return 0
+ rm -f /var/cache/grml-debootstrap/stages_test.raw/mkfs
+ for i in prepare_vm mkfs tunefs mount_target debootstrap_system preparechroot execute_pre_scripts chrootscript execute_scripts umount_chroot finalize_vm fscktool
+ stage tunefs
+ trap error_handler ERR
+ '[' -n '' ']'
+ grep -q done /var/cache/grml-debootstrap/stages_test.raw/tunefs
+ tunefs
+ trap error_handler ERR
+ '[' -n 'tune2fs -c0 -i0' ']'
+ grep -q mkfs.ext
+ echo mkfs.ext4
+ einfo 'Disabling automatic filesystem check on /dev/mapper/loop0p1 via tune2fs'
+ trap error_handler ERR
+ einfon 'Disabling automatic filesystem check on /dev/mapper/loop0p1 via tune2fs\n'
+ trap error_handler ERR
+ '[' '' '!=' yes ']'
+ '[' einfon = ebegin ']'
+ printf ' * Disabling automatic filesystem check on /dev/mapper/loop0p1 via tune2fs\n'
 * Disabling automatic filesystem check on /dev/mapper/loop0p1 via tune2fs
+ LAST_E_CMD=einfon
+ return 0
+ return 0
+ tune2fs -c0 -i0 /dev/mapper/loop0p1
tune2fs 1.42.5 (29-Jul-2012)
Setting maximal mount count to -1
Setting interval between checks to 0 seconds
+ eend 0
+ trap error_handler ERR
+ local retval=0
+ shift
+ '[' 0 -gt 0 ']'
+ return 0
+ stage tunefs done
+ trap error_handler ERR
+ '[' -n done ']'
+ echo done
+ return 0
+ rm -f /var/cache/grml-debootstrap/stages_test.raw/tunefs
+ for i in prepare_vm mkfs tunefs mount_target debootstrap_system preparechroot execute_pre_scripts chrootscript execute_scripts umount_chroot finalize_vm fscktool
+ stage mount_target
+ trap error_handler ERR
+ '[' -n '' ']'
+ grep -q done /var/cache/grml-debootstrap/stages_test.raw/mount_target
+ mount_target
+ trap error_handler ERR
+ '[' -n '' ']'
+ grep -q /dev/mapper/loop0p1 /proc/mounts
+ '[' -d /mnt/debootstrap.3127 ']'
+ '[' -n 1 ']'
+ einfo 'Mounting /dev/mapper/loop0p1 to /mnt/debootstrap.3127'
+ trap error_handler ERR
+ einfon 'Mounting /dev/mapper/loop0p1 to /mnt/debootstrap.3127\n'
+ trap error_handler ERR
+ '[' '' '!=' yes ']'
+ '[' einfon = ebegin ']'
+ printf ' * Mounting /dev/mapper/loop0p1 to /mnt/debootstrap.3127\n'
 * Mounting /dev/mapper/loop0p1 to /mnt/debootstrap.3127
+ LAST_E_CMD=einfon
+ return 0
+ return 0
+ mkdir -p /mnt/debootstrap.3127
+ mount -o rw,suid,dev /dev/mapper/loop0p1 /mnt/debootstrap.3127
+ eend 0
+ trap error_handler ERR
+ local retval=0
+ shift
+ '[' 0 -gt 0 ']'
+ return 0
+ '[' -n '' ']'
+ stage mount_target done
+ trap error_handler ERR
+ '[' -n done ']'
+ echo done
+ return 0
+ rm -f /var/cache/grml-debootstrap/stages_test.raw/mount_target
+ for i in prepare_vm mkfs tunefs mount_target debootstrap_system preparechroot execute_pre_scripts chrootscript execute_scripts umount_chroot finalize_vm fscktool
+ stage debootstrap_system
+ trap error_handler ERR
+ '[' -n '' ']'
+ grep -q done /var/cache/grml-debootstrap/stages_test.raw/debootstrap_system
+ debootstrap_system
+ trap error_handler ERR
+ '[' '' ']'
+ grep -q /mnt/debootstrap.3127 /proc/mounts
+ :
+ '[' -n '' ']'
+ einfo 'Running debootstrap --verbose --include=grub-pc,locales for release wheezy (i386) using http://ftp.us.debian.org/debian'
+ trap error_handler ERR
+ einfon 'Running debootstrap --verbose --include=grub-pc,locales for release wheezy (i386) using http://ftp.us.debian.org/debian\n'
+ trap error_handler ERR
+ '[' '' '!=' yes ']'
+ '[' einfon = ebegin ']'
+ printf ' * Running debootstrap --verbose --include=grub-pc,locales for release wheezy (i386) using http://ftp.us.debian.org/debian\n'
 * Running debootstrap --verbose --include=grub-pc,locales for release wheezy (i386) using http://ftp.us.debian.org/debian
+ LAST_E_CMD=einfon
+ return 0
+ return 0
+ einfo 'Executing: debootstrap --arch i386  --verbose --include=grub-pc,locales wheezy /mnt/debootstrap.3127 http://ftp.us.debian.org/debian'
+ trap error_handler ERR
+ einfon 'Executing: debootstrap --arch i386  --verbose --include=grub-pc,locales wheezy /mnt/debootstrap.3127 http://ftp.us.debian.org/debian\n'
+ trap error_handler ERR
+ '[' '' '!=' yes ']'
+ '[' einfon = ebegin ']'
+ printf ' * Executing: debootstrap --arch i386  --verbose --include=grub-pc,locales wheezy /mnt/debootstrap.3127 http://ftp.us.debian.org/debian\n'
 * Executing: debootstrap --arch i386  --verbose --include=grub-pc,locales wheezy /mnt/debootstrap.3127 http://ftp.us.debian.org/debian
+ LAST_E_CMD=einfon
+ return 0
+ return 0
+ debootstrap --arch i386 --verbose --include=grub-pc,locales wheezy /mnt/debootstrap.3127 http://ftp.us.debian.org/debian
I: Retrieving Release
I: Retrieving Release.gpg
I: Checking Release signature
I: Valid Release signature (key id ED6D65271AACF0FF15D123036FB2A1C265FFB764)
I: Retrieving Packages
I: Validating Packages
I: Resolving dependencies of required packages...
I: Resolving dependencies of base packages...
I: Found additional required dependencies: insserv libbz2-1.0 libdb5.1 libsemanage-common libsemanage1 libslang2 libustr-1.0-1 
I: Found additional base dependencies: dmsetup gettext-base grub-common grub-pc-bin grub2-common libasprintf0c2 libdevmapper1.02.1 libept1.4.12 libfreetype6 libfuse2 libgcrypt11 libgnutls26 libgpg-error0 libidn11 libnfnetlink0 libp11-kit0 libsqlite3-0 libtasn1-3 libxapian22 ucf 
I: Checking component main on http://ftp.us.debian.org/debian...
I: Retrieving libacl1
I: Validating libacl1
I: Retrieving adduser
I: Validating adduser
I: Retrieving apt
I: Validating apt
I: Retrieving apt-utils
I: Validating apt-utils
I: Retrieving libapt-inst1.5
I: Validating libapt-inst1.5
I: Retrieving libapt-pkg4.12
I: Validating libapt-pkg4.12
I: Retrieving aptitude
I: Validating aptitude
I: Retrieving aptitude-common
I: Validating aptitude-common
I: Retrieving libattr1
I: Validating libattr1
I: Retrieving base-files
I: Validating base-files
I: Retrieving base-passwd
I: Validating base-passwd
I: Retrieving bash
I: Validating bash
I: Retrieving libboost-iostreams1.49.0
I: Validating libboost-iostreams1.49.0
I: Retrieving bsdmainutils
I: Validating bsdmainutils
I: Retrieving libbz2-1.0
I: Validating libbz2-1.0
I: Retrieving coreutils
I: Validating coreutils
I: Retrieving cpio
I: Validating cpio
I: Retrieving cron
I: Validating cron
I: Retrieving libcwidget3
I: Validating libcwidget3
I: Retrieving dash
I: Validating dash
I: Retrieving libdb5.1
I: Validating libdb5.1
I: Retrieving debconf
I: Validating debconf
I: Retrieving debconf-i18n
I: Validating debconf-i18n
I: Retrieving debian-archive-keyring
I: Validating debian-archive-keyring
I: Retrieving debianutils
I: Validating debianutils
I: Retrieving diffutils
I: Validating diffutils
I: Retrieving dmidecode
I: Validating dmidecode
I: Retrieving dpkg
I: Validating dpkg
I: Retrieving e2fslibs
I: Validating e2fslibs
I: Retrieving e2fsprogs
I: Validating e2fsprogs
I: Retrieving libcomerr2
I: Validating libcomerr2
I: Retrieving libss2
I: Validating libss2
I: Retrieving libc-bin
I: Validating libc-bin
I: Retrieving libc6
I: Validating libc6
I: Retrieving locales
I: Validating locales
I: Retrieving multiarch-support
I: Validating multiarch-support
I: Retrieving findutils
I: Validating findutils
I: Retrieving libfreetype6
I: Validating libfreetype6
I: Retrieving libfuse2
I: Validating libfuse2
I: Retrieving gcc-4.7-base
I: Validating gcc-4.7-base
I: Retrieving libgcc1
I: Validating libgcc1
I: Retrieving libstdc++6
I: Validating libstdc++6
I: Retrieving libgdbm3
I: Validating libgdbm3
I: Retrieving gettext-base
I: Validating gettext-base
I: Retrieving libasprintf0c2
I: Validating libasprintf0c2
I: Retrieving gnupg
I: Validating gnupg
I: Retrieving gpgv
I: Validating gpgv
I: Retrieving libgnutls26
I: Validating libgnutls26
I: Retrieving grep
I: Validating grep
I: Retrieving groff-base
I: Validating groff-base
I: Retrieving grub-common
I: Validating grub-common
I: Retrieving grub-pc
I: Validating grub-pc
I: Retrieving grub-pc-bin
I: Validating grub-pc-bin
I: Retrieving grub2-common
I: Validating grub2-common
I: Retrieving gzip
I: Validating gzip
I: Retrieving hostname
I: Validating hostname
I: Retrieving ifupdown
I: Validating ifupdown
I: Retrieving insserv
I: Validating insserv
I: Retrieving iproute
I: Validating iproute
I: Retrieving iptables
I: Validating iptables
I: Retrieving iputils-ping
I: Validating iputils-ping
I: Retrieving isc-dhcp-client
I: Validating isc-dhcp-client
I: Retrieving isc-dhcp-common
I: Validating isc-dhcp-common
I: Retrieving kmod
I: Validating kmod
I: Retrieving libkmod2
I: Validating libkmod2
I: Retrieving libept1.4.12
I: Validating libept1.4.12
I: Retrieving libgcrypt11
I: Validating libgcrypt11
I: Retrieving libgpg-error0
I: Validating libgpg-error0
I: Retrieving libidn11
I: Validating libidn11
I: Retrieving liblocale-gettext-perl
I: Validating liblocale-gettext-perl
I: Retrieving libnfnetlink0
I: Validating libnfnetlink0
I: Retrieving libpipeline1
I: Validating libpipeline1
I: Retrieving libselinux1
I: Validating libselinux1
I: Retrieving libsemanage-common
I: Validating libsemanage-common
I: Retrieving libsemanage1
I: Validating libsemanage1
I: Retrieving libsepol1
I: Validating libsepol1
I: Retrieving libsigc++-2.0-0c2a
I: Validating libsigc++-2.0-0c2a
I: Retrieving libtasn1-3
I: Validating libtasn1-3
I: Retrieving libtext-charwidth-perl
I: Validating libtext-charwidth-perl
I: Retrieving libtext-iconv-perl
I: Validating libtext-iconv-perl
I: Retrieving libtext-wrapi18n-perl
I: Validating libtext-wrapi18n-perl
I: Retrieving libusb-0.1-4
I: Validating libusb-0.1-4
I: Retrieving logrotate
I: Validating logrotate
I: Retrieving lsb-base
I: Validating lsb-base
I: Retrieving dmsetup
I: Validating dmsetup
I: Retrieving libdevmapper1.02.1
I: Validating libdevmapper1.02.1
I: Retrieving man-db
I: Validating man-db
I: Retrieving manpages
I: Validating manpages
I: Retrieving mawk
I: Validating mawk
I: Retrieving nano
I: Validating nano
I: Retrieving libncurses5
I: Validating libncurses5
I: Retrieving libncursesw5
I: Validating libncursesw5
I: Retrieving libtinfo5
I: Validating libtinfo5
I: Retrieving ncurses-base
I: Validating ncurses-base
I: Retrieving ncurses-bin
I: Validating ncurses-bin
I: Retrieving net-tools
I: Validating net-tools
I: Retrieving netbase
I: Validating netbase
I: Retrieving netcat-traditional
I: Validating netcat-traditional
I: Retrieving libnewt0.52
I: Validating libnewt0.52
I: Retrieving whiptail
I: Validating whiptail
I: Retrieving libssl1.0.0
I: Validating libssl1.0.0
I: Retrieving libp11-kit0
I: Validating libp11-kit0
I: Retrieving libpam-modules
I: Validating libpam-modules
I: Retrieving libpam-modules-bin
I: Validating libpam-modules-bin
I: Retrieving libpam-runtime
I: Validating libpam-runtime
I: Retrieving libpam0g
I: Validating libpam0g
I: Retrieving perl-base
I: Validating perl-base
I: Retrieving libpopt0
I: Validating libpopt0
I: Retrieving libprocps0
I: Validating libprocps0
I: Retrieving procps
I: Validating procps
I: Retrieving libreadline6
I: Validating libreadline6
I: Retrieving readline-common
I: Validating readline-common
I: Retrieving rsyslog
I: Validating rsyslog
I: Retrieving sed
I: Validating sed
I: Retrieving sensible-utils
I: Validating sensible-utils
I: Retrieving login
I: Validating login
I: Retrieving passwd
I: Validating passwd
I: Retrieving libslang2
I: Validating libslang2
I: Retrieving libsqlite3-0
I: Validating libsqlite3-0
I: Retrieving initscripts
I: Validating initscripts
I: Retrieving sysv-rc
I: Validating sysv-rc
I: Retrieving sysvinit
I: Validating sysvinit
I: Retrieving sysvinit-utils
I: Validating sysvinit-utils
I: Retrieving tar
I: Validating tar
I: Retrieving tasksel
I: Validating tasksel
I: Retrieving tasksel-data
I: Validating tasksel-data
I: Retrieving info
I: Validating info
I: Retrieving install-info
I: Validating install-info
I: Retrieving traceroute
I: Validating traceroute
I: Retrieving tzdata
I: Validating tzdata
I: Retrieving ucf
I: Validating ucf
I: Retrieving libudev0
I: Validating libudev0
I: Retrieving udev
I: Validating udev
I: Retrieving libustr-1.0-1
I: Validating libustr-1.0-1
I: Retrieving bsdutils
I: Validating bsdutils
I: Retrieving libblkid1
I: Validating libblkid1
I: Retrieving libmount1
I: Validating libmount1
I: Retrieving libuuid1
I: Validating libuuid1
I: Retrieving mount
I: Validating mount
I: Retrieving util-linux
I: Validating util-linux
I: Retrieving vim-common
I: Validating vim-common
I: Retrieving vim-tiny
I: Validating vim-tiny
I: Retrieving wget
I: Validating wget
I: Retrieving libxapian22
I: Validating libxapian22
I: Retrieving liblzma5
I: Validating liblzma5
I: Retrieving xz-utils
I: Validating xz-utils
I: Retrieving zlib1g
I: Validating zlib1g
I: Chosen extractor for .deb packages: dpkg-deb
I: Extracting libacl1...
I: Extracting libattr1...
I: Extracting base-files...
I: Extracting base-passwd...
I: Extracting bash...
I: Extracting libbz2-1.0...
I: Extracting coreutils...
I: Extracting dash...
I: Extracting libdb5.1...
I: Extracting debconf...
I: Extracting debconf-i18n...
I: Extracting debianutils...
I: Extracting diffutils...
I: Extracting dpkg...
I: Extracting e2fslibs...
I: Extracting e2fsprogs...
I: Extracting libcomerr2...
I: Extracting libss2...
I: Extracting libc-bin...
I: Extracting libc6...
I: Extracting multiarch-support...
I: Extracting findutils...
I: Extracting gcc-4.7-base...
I: Extracting libgcc1...
I: Extracting grep...
I: Extracting gzip...
I: Extracting hostname...
I: Extracting insserv...
I: Extracting liblocale-gettext-perl...
I: Extracting libselinux1...
I: Extracting libsemanage-common...
I: Extracting libsemanage1...
I: Extracting libsepol1...
I: Extracting libtext-charwidth-perl...
I: Extracting libtext-iconv-perl...
I: Extracting libtext-wrapi18n-perl...
I: Extracting lsb-base...
I: Extracting mawk...
I: Extracting libncurses5...
I: Extracting libtinfo5...
I: Extracting ncurses-base...
I: Extracting ncurses-bin...
I: Extracting libpam-modules...
I: Extracting libpam-modules-bin...
I: Extracting libpam-runtime...
I: Extracting libpam0g...
I: Extracting perl-base...
I: Extracting sed...
I: Extracting sensible-utils...
I: Extracting login...
I: Extracting passwd...
I: Extracting libslang2...
I: Extracting initscripts...
I: Extracting sysv-rc...
I: Extracting sysvinit...
I: Extracting sysvinit-utils...
I: Extracting tar...
I: Extracting tzdata...
I: Extracting libustr-1.0-1...
I: Extracting bsdutils...
I: Extracting libblkid1...
I: Extracting libmount1...
I: Extracting libuuid1...
I: Extracting mount...
I: Extracting util-linux...
I: Extracting liblzma5...
I: Extracting xz-utils...
I: Extracting zlib1g...
I: Installing core packages...
I: Unpacking required packages...
I: Unpacking libacl1:i386...
I: Unpacking libattr1:i386...
I: Unpacking base-files...
I: Unpacking base-passwd...
I: Unpacking bash...
I: Unpacking libbz2-1.0:i386...
I: Unpacking coreutils...
I: Unpacking dash...
I: Unpacking libdb5.1:i386...
I: Unpacking debconf...
I: Unpacking debconf-i18n...
I: Unpacking debianutils...
I: Unpacking diffutils...
I: Unpacking dpkg...
I: Unpacking e2fslibs:i386...
I: Unpacking e2fsprogs...
I: Unpacking libcomerr2:i386...
I: Unpacking libss2:i386...
I: Unpacking libc-bin...
I: Unpacking libc6:i386...
I: Unpacking multiarch-support...
I: Unpacking findutils...
I: Unpacking gcc-4.7-base:i386...
I: Unpacking libgcc1:i386...
I: Unpacking grep...
I: Unpacking gzip...
I: Unpacking hostname...
I: Unpacking insserv...
I: Unpacking liblocale-gettext-perl...
I: Unpacking libselinux1:i386...
I: Unpacking libsemanage-common...
I: Unpacking libsemanage1:i386...
I: Unpacking libsepol1:i386...
I: Unpacking libtext-charwidth-perl...
I: Unpacking libtext-iconv-perl...
I: Unpacking libtext-wrapi18n-perl...
I: Unpacking lsb-base...
I: Unpacking mawk...
I: Unpacking libncurses5:i386...
I: Unpacking libtinfo5:i386...
I: Unpacking ncurses-base...
I: Unpacking ncurses-bin...
I: Unpacking libpam-modules:i386...
I: Unpacking libpam-modules-bin...
I: Unpacking libpam-runtime...
I: Unpacking libpam0g:i386...
I: Unpacking perl-base...
I: Unpacking sed...
I: Unpacking sensible-utils...
I: Unpacking login...
I: Unpacking passwd...
I: Unpacking libslang2:i386...
I: Unpacking initscripts...
I: Unpacking sysv-rc...
I: Unpacking sysvinit...
I: Unpacking sysvinit-utils...
I: Unpacking tar...
I: Unpacking tzdata...
I: Unpacking libustr-1.0-1:i386...
I: Unpacking bsdutils...
I: Unpacking libblkid1:i386...
I: Unpacking libmount1...
I: Unpacking libuuid1:i386...
I: Unpacking mount...
I: Unpacking util-linux...
I: Unpacking liblzma5:i386...
I: Unpacking xz-utils...
I: Unpacking zlib1g:i386...
I: Configuring required packages...
I: Configuring lsb-base...
I: Configuring ncurses-base...
I: Configuring sensible-utils...
I: Configuring libsemanage-common...
I: Configuring gcc-4.7-base:i386...
I: Configuring libc-bin...
I: Configuring libc6:i386...
I: Configuring debianutils...
I: Configuring bsdutils...
I: Configuring tar...
I: Configuring base-passwd...
I: Configuring mawk...
I: Configuring hostname...
I: Configuring insserv...
I: Configuring multiarch-support...
I: Configuring libselinux1:i386...
I: Configuring libustr-1.0-1:i386...
I: Configuring libsepol1:i386...
I: Configuring zlib1g:i386...
I: Configuring libgcc1:i386...
I: Configuring base-files...
I: Configuring libattr1:i386...
I: Configuring e2fslibs:i386...
I: Configuring libcomerr2:i386...
I: Configuring libacl1:i386...
I: Configuring libslang2:i386...
I: Configuring libss2:i386...
I: Configuring liblzma5:i386...
I: Configuring libdb5.1:i386...
I: Configuring libbz2-1.0:i386...
I: Configuring libtinfo5:i386...
I: Configuring sysvinit-utils...
I: Configuring ncurses-bin...
I: Configuring libsemanage1:i386...
I: Configuring libncurses5:i386...
I: Configuring xz-utils...
I: Configuring dpkg...
I: Configuring dash...
I: Configuring coreutils...
I: Configuring perl-base...
I: Configuring diffutils...
I: Configuring libtext-iconv-perl...
I: Configuring sed...
I: Configuring grep...
I: Configuring findutils...
I: Configuring gzip...
I: Configuring liblocale-gettext-perl...
I: Configuring bash...
I: Configuring libtext-charwidth-perl...
I: Configuring libtext-wrapi18n-perl...
I: Configuring debconf...
I: Configuring libpam0g:i386...
I: Configuring sysv-rc...
I: Configuring tzdata...
I: Configuring debconf-i18n...
I: Configuring libpam-modules-bin...
I: Configuring libpam-modules:i386...
I: Configuring passwd...
I: Configuring libpam-runtime...
I: Configuring login...
I: Configuring libuuid1:i386...
I: Configuring libblkid1:i386...
I: Configuring libmount1...
I: Configuring mount...
I: Configuring initscripts...
I: Configuring util-linux...
I: Configuring sysvinit...
I: Configuring e2fsprogs...
I: Unpacking the base system...
I: Unpacking adduser...
I: Unpacking apt...
I: Unpacking apt-utils...
I: Unpacking libapt-inst1.5:i386...
I: Unpacking libapt-pkg4.12:i386...
I: Unpacking aptitude...
I: Unpacking aptitude-common...
I: Unpacking libboost-iostreams1.49.0...
I: Unpacking bsdmainutils...
I: Unpacking cpio...
I: Unpacking cron...
I: Unpacking libcwidget3...
I: Unpacking debian-archive-keyring...
I: Unpacking dmidecode...
I: Unpacking locales...
I: Unpacking libfreetype6:i386...
I: Unpacking libfuse2:i386...
I: Unpacking libstdc++6:i386...
I: Unpacking libgdbm3:i386...
I: Unpacking gettext-base...
I: Unpacking libasprintf0c2:i386...
I: Unpacking gnupg...
I: Unpacking gpgv...
I: Unpacking libgnutls26:i386...
I: Unpacking groff-base...
I: Unpacking grub-common...
I: Unpacking grub-pc...
I: Unpacking grub-pc-bin...
I: Unpacking grub2-common...
I: Unpacking ifupdown...
I: Unpacking iproute...
I: Unpacking iptables...
I: Unpacking iputils-ping...
I: Unpacking isc-dhcp-client...
I: Unpacking isc-dhcp-common...
I: Unpacking kmod...
I: Unpacking libkmod2:i386...
I: Unpacking libept1.4.12...
I: Unpacking libgcrypt11:i386...
I: Unpacking libgpg-error0:i386...
I: Unpacking libidn11:i386...
I: Unpacking libnfnetlink0...
I: Unpacking libpipeline1:i386...
I: Unpacking libsigc++-2.0-0c2a:i386...
I: Unpacking libtasn1-3:i386...
I: Unpacking libusb-0.1-4:i386...
I: Unpacking logrotate...
I: Unpacking dmsetup...
I: Unpacking libdevmapper1.02.1:i386...
I: Unpacking man-db...
I: Unpacking manpages...
I: Unpacking nano...
I: Unpacking libncursesw5:i386...
I: Unpacking net-tools...
I: Unpacking netbase...
I: Unpacking netcat-traditional...
I: Unpacking libnewt0.52...
I: Unpacking whiptail...
I: Unpacking libssl1.0.0:i386...
I: Unpacking libp11-kit0:i386...
I: Unpacking libpopt0:i386...
I: Unpacking libprocps0:i386...
I: Unpacking procps...
I: Unpacking libreadline6:i386...
I: Unpacking readline-common...
I: Unpacking rsyslog...
I: Unpacking libsqlite3-0:i386...
I: Unpacking tasksel...
I: Unpacking tasksel-data...
I: Unpacking info...
I: Unpacking install-info...
I: Unpacking traceroute...
I: Unpacking ucf...
I: Unpacking libudev0:i386...
I: Unpacking udev...
I: Unpacking vim-common...
I: Unpacking vim-tiny...
I: Unpacking wget...
I: Unpacking libxapian22...
I: Configuring the base system...
I: Configuring libfreetype6:i386...
I: Configuring gpgv...
I: Configuring libssl1.0.0:i386...
I: Configuring libgdbm3:i386...
I: Configuring isc-dhcp-common...
I: Configuring libtasn1-3:i386...
I: Configuring libfuse2:i386...
I: Configuring libpopt0:i386...
I: Configuring libusb-0.1-4:i386...
I: Configuring libgpg-error0:i386...
I: Configuring ucf...
I: Configuring install-info...
I: Configuring vim-common...
I: Configuring libprocps0:i386...
I: Configuring netbase...
I: Configuring dmidecode...
I: Configuring libudev0:i386...
I: Configuring libkmod2:i386...
I: Configuring adduser...
I: Configuring locales...
I: Configuring traceroute...
I: Configuring manpages...
I: Configuring libsqlite3-0:i386...
I: Configuring iproute...
I: Configuring libidn11:i386...
I: Configuring libnewt0.52...
I: Configuring net-tools...
I: Configuring libpipeline1:i386...
I: Configuring bsdmainutils...
I: Configuring netcat-traditional...
I: Configuring debian-archive-keyring...
I: Configuring libncursesw5:i386...
I: Configuring info...
I: Configuring iputils-ping...
I: Configuring aptitude-common...
I: Configuring cron...
I: Configuring nano...
I: Configuring libp11-kit0:i386...
I: Configuring rsyslog...
I: Configuring cpio...
I: Configuring libstdc++6:i386...
I: Configuring isc-dhcp-client...
I: Configuring vim-tiny...
I: Configuring readline-common...
I: Configuring libnfnetlink0...
I: Configuring libasprintf0c2:i386...
I: Configuring gettext-base...
I: Configuring libgcrypt11:i386...
I: Configuring procps...
I: Configuring libxapian22...
I: Configuring whiptail...
I: Configuring ifupdown...
I: Configuring kmod...
I: Configuring libapt-pkg4.12:i386...
I: Configuring libept1.4.12...
I: Configuring libapt-inst1.5:i386...
I: Configuring libreadline6:i386...
I: Configuring logrotate...
I: Configuring libboost-iostreams1.49.0...
I: Configuring groff-base...
I: Configuring gnupg...
I: Configuring libsigc++-2.0-0c2a:i386...
I: Configuring libgnutls26:i386...
I: Configuring apt-utils...
I: Configuring udev...
I: Configuring iptables...
I: Configuring man-db...
I: Configuring apt...
I: Configuring wget...
I: Configuring libcwidget3...
I: Configuring aptitude...
I: Configuring tasksel...
I: Configuring tasksel-data...
I: Configuring libdevmapper1.02.1:i386...
I: Configuring dmsetup...
I: Configuring grub-common...
I: Configuring grub-pc-bin...
I: Configuring grub2-common...
I: Configuring grub-pc...
I: Base system installed successfully.
+ RC=0
+ '[' 0 -ne 0 ']'
+ eend 0
+ trap error_handler ERR
+ local retval=0
+ shift
+ '[' 0 -gt 0 ']'
+ return 0
+ stage debootstrap_system done
+ trap error_handler ERR
+ '[' -n done ']'
+ echo done
+ return 0
+ rm -f /var/cache/grml-debootstrap/stages_test.raw/debootstrap_system
+ for i in prepare_vm mkfs tunefs mount_target debootstrap_system preparechroot execute_pre_scripts chrootscript execute_scripts umount_chroot finalize_vm fscktool
+ stage preparechroot
+ trap error_handler ERR
+ '[' -n '' ']'
+ grep -q done /var/cache/grml-debootstrap/stages_test.raw/preparechroot
+ preparechroot
+ trap error_handler ERR
+ einfo 'Preparing chroot system'
+ trap error_handler ERR
+ einfon 'Preparing chroot system\n'
+ trap error_handler ERR
+ '[' '' '!=' yes ']'
+ '[' einfon = ebegin ']'
+ printf ' * Preparing chroot system\n'
 * Preparing chroot system
+ LAST_E_CMD=einfon
+ return 0
+ return 0
+ CHROOT_VARIABLES=/var/cache/grml-debootstrap/variables_test.raw
+ touch /var/cache/grml-debootstrap/variables_test.raw
+ chmod 600 /var/cache/grml-debootstrap/variables_test.raw
+ echo '# Configuration of grml-debootstrap'
+ '[' -n i386 ']'
+ echo 'ARCH="i386"'
+ '[' -n '' ']'
+ '[' -n yes ']'
+ echo 'CHROOT_SCRIPTS="yes"'
+ '[' -n /etc/debootstrap ']'
+ echo 'CONFFILES="/etc/debootstrap"'
+ '[' -n yes ']'
+ echo 'DEBCONF="yes"'
+ '[' -n noninteractive ']'
+ echo 'DEBIAN_FRONTEND="noninteractive"'
+ '[' -n debootstrap ']'
+ echo 'DEBOOTSTRAP="debootstrap"'
+ '[' -n en_US.UTF-8 ']'
+ echo 'DEFAULT_LOCALES="en_US.UTF-8"'
+ '[' -n en_US:en ']'
+ echo 'DEFAULT_LANGUAGE="en_US:en"'
+ '[' -n yes ']'
+ echo 'EXTRAPACKAGES="yes"'
+ '[' -n http://http.debian.net/debian ']'
+ echo 'FALLBACK_MIRROR="http://http.debian.net/debian"'
+ '[' -n T ']'
+ echo 'FORCE="T"'
+ '[' -n '' ']'
+ '[' -n '' ']'
+ '[' -n host ']'
+ echo 'HOSTNAME="host"'
+ '[' -n yes ']'
+ echo 'INITRD="yes"'
+ '[' -n /etc/debootstrap/install_notes ']'
+ echo 'INSTALL_NOTES="/etc/debootstrap/install_notes"'
+ '[' -n '' ']'
+ '[' -n '' ']'
+ '[' -n yes ']'
+ echo 'KEEP_SRC_LIST="yes"'
+ '[' -n yes ']'
+ echo 'LOCALES="yes"'
+ '[' -n http://ftp.us.debian.org/debian ']'
+ echo 'MIRROR="http://ftp.us.debian.org/debian"'
+ '[' -n mkfs.ext4 ']'
+ echo 'MKFS="mkfs.ext4"'
+ '[' -n '' ']'
+ '[' -n '' ']'
+ '[' -n '' ']'
+ '[' -n yes ']'
+ echo 'PRE_SCRIPTS="yes"'
+ '[' -n console-data ']'
+ echo 'RECONFIGURE="console-data"'
+ '[' -n wheezy ']'
+ echo 'RELEASE="wheezy"'
+ '[' -n yes ']'
+ echo 'RM_APTCACHE="yes"'
+ '[' -n changeme ']'
+ echo 'ROOTPASSWORD="changeme"'
+ '[' -n yes ']'
+ echo 'SCRIPTS="yes"'
+ '[' -n yes ']'
+ echo 'SECURE="yes"'
+ '[' -n '' ']'
+ '[' -n /dev/mapper/loop0p1 ']'
+ echo 'TARGET="/dev/mapper/loop0p1"'
+ '[' -n yes ']'
+ echo 'UPGRADE_SYSTEM="yes"'
+ '[' -n 6ffa2a7e-8b59-4e10-a5b7-5b8fe002a04f ']'
+ echo 'TARGET_UUID="6ffa2a7e-8b59-4e10-a5b7-5b8fe002a04f"'
+ '[' -n Europe/Vienna ']'
+ echo 'TIMEZONE="Europe/Vienna"'
+ '[' -n 'tune2fs -c0 -i0' ']'
+ echo 'TUNE2FS="tune2fs -c0 -i0"'
+ '[' -n 2G ']'
+ echo 'VMSIZE="2G"'
+ '[' -n no ']'
+ echo 'REPORT_TRAP_ERR="no"'
+ '[' -n no ']'
+ echo 'FAIL_TRAP_ERR="no"'
+ cp -v /etc/debootstrap/chroot-script /mnt/debootstrap.3127/bin/chroot-script
`/etc/debootstrap/chroot-script' -> `/mnt/debootstrap.3127/bin/chroot-script'
+ chmod 755 /mnt/debootstrap.3127/bin/chroot-script
+ '[' -d /mnt/debootstrap.3127/etc/debootstrap/ ']'
+ mkdir /mnt/debootstrap.3127/etc/debootstrap/
+ cp -v /etc/debootstrap/config /mnt/debootstrap.3127/etc/debootstrap/
`/etc/debootstrap/config' -> `/mnt/debootstrap.3127/etc/debootstrap/config'
+ sed -i 's#RELEASE=.*#RELEASE="wheezy"#' /mnt/debootstrap.3127/etc/debootstrap/config
+ sed -i 's#TARGET=.*#TARGET="/dev/mapper/loop0p1"#' /mnt/debootstrap.3127/etc/debootstrap/config
+ sed -i 's#GRUB=.*#GRUB=""#' /mnt/debootstrap.3127/etc/debootstrap/config
+ '[' -n /etc/debootstrap/install_notes ']'
+ '[' -r /etc/debootstrap/install_notes ']'
+ cp -v /etc/debootstrap/packages /mnt/debootstrap.3127/etc/debootstrap/packages
`/etc/debootstrap/packages' -> `/mnt/debootstrap.3127/etc/debootstrap/packages'
+ _opt_debconf=/etc/debootstrap/debconf-selections
+ '[' -f /etc/debootstrap/debconf-selections -a yes = yes ']'
+ _opt_chroot_scripts=/etc/debootstrap/chroot-scripts/
+ '[' -d /etc/debootstrap/chroot-scripts/ -a yes = yes ']'
+ cp -v /var/cache/grml-debootstrap/variables_test.raw /mnt/debootstrap.3127/etc/debootstrap/variables
`/var/cache/grml-debootstrap/variables_test.raw' -> `/mnt/debootstrap.3127/etc/debootstrap/variables'
+ cp -v -a -L /etc/debootstrap/extrapackages/ /mnt/debootstrap.3127/etc/debootstrap/
`/etc/debootstrap/extrapackages/' -> `/mnt/debootstrap.3127/etc/debootstrap/extrapackages'
+ '[' -f /mnt/debootstrap.3127/etc/resolv.conf ']'
+ '[' -f /mnt/debootstrap.3127/etc/hosts ']'
+ '[' -n yes ']'
+ cp -v /etc/debootstrap/locale.gen /mnt/debootstrap.3127/etc/locale.gen
`/etc/debootstrap/locale.gen' -> `/mnt/debootstrap.3127/etc/locale.gen'
+ cd /mnt/debootstrap.3127/dev
+ tar zxf /etc/debootstrap/devices.tar.gz
+ '[' -d /etc/debootstrap/bin ']'
+ '[' -d /etc/debootstrap/boot ']'
+ '[' -d /etc/debootstrap/etc ']'
+ '[' -d /etc/debootstrap/sbin ']'
+ '[' -d /etc/debootstrap/share ']'
+ '[' -d /etc/debootstrap/usr ']'
+ '[' -d /etc/debootstrap/var ']'
+ DEFAULT_INTERFACES='# /etc/network/interfaces - generated by grml-debootstrap

# Include files from /etc/network/interfaces.d when using
# ifupdown v0.7.44 or newer:
#source-directory /etc/network/interfaces.d

auto lo
iface lo inet loopback

allow-hotplug eth0
iface eth0 inet dhcp
'
+ '[' -n '' ']'
+ '[' -n '# /etc/network/interfaces - generated by grml-debootstrap

# Include files from /etc/network/interfaces.d when using
# ifupdown v0.7.44 or newer:
#source-directory /etc/network/interfaces.d

auto lo
iface lo inet loopback

allow-hotplug eth0
iface eth0 inet dhcp
' ']'
+ einfo 'Installing default /etc/network/interfaces as requested via --defaultinterfaces options.'
+ trap error_handler ERR
+ einfon 'Installing default /etc/network/interfaces as requested via --defaultinterfaces options.\n'
+ trap error_handler ERR
+ '[' '' '!=' yes ']'
+ '[' einfon = ebegin ']'
+ printf ' * Installing default /etc/network/interfaces as requested via --defaultinterfaces options.\n'
 * Installing default /etc/network/interfaces as requested via --defaultinterfaces options.
+ LAST_E_CMD=einfon
+ return 0
+ return 0
+ echo '# /etc/network/interfaces - generated by grml-debootstrap

# Include files from /etc/network/interfaces.d when using
# ifupdown v0.7.44 or newer:
#source-directory /etc/network/interfaces.d

auto lo
iface lo inet loopback

allow-hotplug eth0
iface eth0 inet dhcp
'
+ eend 0
+ trap error_handler ERR
+ local retval=0
+ shift
+ '[' 0 -gt 0 ']'
+ return 0
+ '[' -r /etc/network/interfaces.examples -a '!' -r /mnt/debootstrap.3127/etc/network/interfaces.examples ']'
+ eend 0
+ trap error_handler ERR
+ local retval=0
+ shift
+ '[' 0 -gt 0 ']'
+ return 0
+ stage preparechroot done
+ trap error_handler ERR
+ '[' -n done ']'
+ echo done
+ return 0
+ rm -f /var/cache/grml-debootstrap/stages_test.raw/preparechroot
+ for i in prepare_vm mkfs tunefs mount_target debootstrap_system preparechroot execute_pre_scripts chrootscript execute_scripts umount_chroot finalize_vm fscktool
+ stage execute_pre_scripts
+ trap error_handler ERR
+ '[' -n '' ']'
+ grep -q done /var/cache/grml-debootstrap/stages_test.raw/execute_pre_scripts
+ execute_pre_scripts
+ trap error_handler ERR
+ export MNTPOINT
+ '[' -d '' ']'
+ '[' yes = yes ']'
+ '[' -d '' ']'
+ pre_scripts=/etc/debootstrap/pre-scripts/
+ for script in '${pre_scripts}/*'
+ '[' -x '/etc/debootstrap/pre-scripts//*' ']'
+ stage execute_pre_scripts done
+ trap error_handler ERR
+ '[' -n done ']'
+ echo done
+ return 0
+ rm -f /var/cache/grml-debootstrap/stages_test.raw/execute_pre_scripts
+ for i in prepare_vm mkfs tunefs mount_target debootstrap_system preparechroot execute_pre_scripts chrootscript execute_scripts umount_chroot finalize_vm fscktool
+ stage chrootscript
+ trap error_handler ERR
+ '[' -n '' ']'
+ grep -q done /var/cache/grml-debootstrap/stages_test.raw/chrootscript
+ chrootscript
+ trap error_handler ERR
+ '[' -r /mnt/debootstrap.3127/bin/chroot-script ']'
+ '[' -x /mnt/debootstrap.3127/bin/chroot-script ']'
+ einfo 'Executing chroot-script now'
+ trap error_handler ERR
+ einfon 'Executing chroot-script now\n'
+ trap error_handler ERR
+ '[' '' '!=' yes ']'
+ '[' einfon = ebegin ']'
+ printf ' * Executing chroot-script now\n'
 * Executing chroot-script now
+ LAST_E_CMD=einfon
+ return 0
+ return 0
+ mount --bind /dev /mnt/debootstrap.3127/dev
+ '[' true = true ']'
+ chroot /mnt/debootstrap.3127 /bin/bash -x /bin/chroot-script
+ . /etc/debootstrap/config
+ . /etc/debootstrap/variables
++ ARCH=i386
++ CHROOT_SCRIPTS=yes
++ CONFFILES=/etc/debootstrap
++ DEBCONF=yes
++ DEBIAN_FRONTEND=noninteractive
++ DEBOOTSTRAP=debootstrap
++ DEFAULT_LOCALES=en_US.UTF-8
++ DEFAULT_LANGUAGE=en_US:en
++ EXTRAPACKAGES=yes
++ FALLBACK_MIRROR=http://http.debian.net/debian
++ FORCE=T
++ HOSTNAME=host
++ INITRD=yes
++ INSTALL_NOTES=/etc/debootstrap/install_notes
++ KEEP_SRC_LIST=yes
++ LOCALES=yes
++ MIRROR=http://ftp.us.debian.org/debian
++ MKFS=mkfs.ext4
++ PRE_SCRIPTS=yes
++ RECONFIGURE=console-data
++ RELEASE=wheezy
++ RM_APTCACHE=yes
++ ROOTPASSWORD=changeme
++ SCRIPTS=yes
++ SECURE=yes
++ TARGET=/dev/mapper/loop0p1
++ UPGRADE_SYSTEM=yes
++ TARGET_UUID=6ffa2a7e-8b59-4e10-a5b7-5b8fe002a04f
++ TIMEZONE=Europe/Vienna
++ TUNE2FS='tune2fs -c0 -i0'
++ VMSIZE=2G
++ REPORT_TRAP_ERR=no
++ FAIL_TRAP_ERR=no
+ '[' -r /proc/1 ']'
+ mount -t proc none /proc
+ '[' -x /usr/bin/aptitude ']'
+ APTUPDATE='aptitude update '
+ '[' -n '' ']'
+ APTINSTALL='aptitude -y --without-recommends install '
+ APTUPGRADE='aptitude -y safe-upgrade '
+ '[' -z '' ']'
+ STAGES=/etc/debootstrap/stages
+ '[' -d /etc/debootstrap/stages ']'
+ mkdir -p /etc/debootstrap/stages
+ trap signal_handler HUP INT QUIT TERM
+ install_policy_rcd
+ '[' -r /usr/sbin/policy-rc.d ']'
+ export POLICYRCD=1
+ POLICYRCD=1
+ cat
+ chmod 775 /usr/sbin/policy-rc.d
+ for i in chrootmirror grmlrepos backportrepos kernelimg_conf kernel packages extrapackages reconfigure hosts default_locales timezone fstab hostname initrd grub_install passwords custom_scripts upgrade_system remove_apt_cache services remove_chrootmirror
+ stage chrootmirror
+ '[' -n '' ']'
+ grep -q done /etc/debootstrap/stages/chrootmirror
+ echo '   Executing stage chrootmirror'
   Executing stage chrootmirror
+ return 0
+ chrootmirror
+ '[' -n yes ']'
+ echo 'KEEP_SRC_LIST has been set, skipping chrootmirror stage.'
KEEP_SRC_LIST has been set, skipping chrootmirror stage.
+ return
+ stage chrootmirror done
+ '[' -n done ']'
+ echo done
+ return 0
+ for i in chrootmirror grmlrepos backportrepos kernelimg_conf kernel packages extrapackages reconfigure hosts default_locales timezone fstab hostname initrd grub_install passwords custom_scripts upgrade_system remove_apt_cache services remove_chrootmirror
+ stage grmlrepos
+ '[' -n '' ']'
+ grep -q done /etc/debootstrap/stages/grmlrepos
+ echo '   Executing stage grmlrepos'
   Executing stage grmlrepos
+ return 0
+ grmlrepos
+ '[' -n '' ']'
+ stage grmlrepos done
+ '[' -n done ']'
+ echo done
+ return 0
+ for i in chrootmirror grmlrepos backportrepos kernelimg_conf kernel packages extrapackages reconfigure hosts default_locales timezone fstab hostname initrd grub_install passwords custom_scripts upgrade_system remove_apt_cache services remove_chrootmirror
+ stage backportrepos
+ '[' -n '' ']'
+ grep -q done /etc/debootstrap/stages/backportrepos
+ echo '   Executing stage backportrepos'
   Executing stage backportrepos
+ return 0
+ backportrepos
+ '[' -n '' ']'
+ stage backportrepos done
+ '[' -n done ']'
+ echo done
+ return 0
+ for i in chrootmirror grmlrepos backportrepos kernelimg_conf kernel packages extrapackages reconfigure hosts default_locales timezone fstab hostname initrd grub_install passwords custom_scripts upgrade_system remove_apt_cache services remove_chrootmirror
+ stage kernelimg_conf
+ '[' -n '' ']'
+ grep -q done /etc/debootstrap/stages/kernelimg_conf
+ echo '   Executing stage kernelimg_conf'
   Executing stage kernelimg_conf
+ return 0
+ kernelimg_conf
+ '[' -r /etc/kernel-img.conf ']'
+ echo 'Setting up /etc/kernel-img.conf'
Setting up /etc/kernel-img.conf
+ cat
+ stage kernelimg_conf done
+ '[' -n done ']'
+ echo done
+ return 0
+ for i in chrootmirror grmlrepos backportrepos kernelimg_conf kernel packages extrapackages reconfigure hosts default_locales timezone fstab hostname initrd grub_install passwords custom_scripts upgrade_system remove_apt_cache services remove_chrootmirror
+ stage kernel
+ '[' -n '' ']'
+ grep -q done /etc/debootstrap/stages/kernel
+ echo '   Executing stage kernel'
   Executing stage kernel
+ return 0
+ kernel
+ '[' -n '' ']'
+ aptitude update
Get: 1 http://ftp.us.debian.org wheezy Release.gpg [1655 B]
Get: 2 http://ftp.us.debian.org wheezy Release [168 kB]
Get: 3 http://ftp.us.debian.org wheezy/main i386 Packages [5858 kB]
Get: 4 http://ftp.us.debian.org wheezy/main Translation-en [3846 kB]
Fetched 9874 kB in 4s (2236 kB/s)                           

++ get_kernel_version
++ '[' -n '' ']'
++ local KARCH
++ case "$ARCH" in
++ case "$RELEASE" in
++ KARCH=686
++ for KPREFIX in '""' '"2.6-"'
++ package_exists linux-image-686
+++ apt-cache show linux-image-686
++ output='Package: linux-image-686
Source: linux-latest (46)
Version: 3.2+46
Installed-Size: 36
Maintainer: Debian Kernel Team <[email protected]>
Architecture: i386
Depends: linux-image-686-pae, debconf (>= 0.5) | debconf-2.0
Description-en: Linux for modern PCs (dummy package)
 This is a dummy transitional package.  It can be safely removed.
Description-md5: 2fa509fac372c32c093ad624ef0c2ea0
Section: oldlibs
Priority: extra
Filename: pool/main/l/linux-latest/linux-image-686_3.2+46_i386.deb
Size: 7986
MD5sum: b18d0d10411c7a966ceb8f9a36b1a22e
SHA1: 01c7e9a87b080dabb04658751686903bc20ca1d1
SHA256: 94f8494d7a526ed7d35b57b659418ba44b2b165e642e4b524d4fd8ae5c18716f'
++ '[' -n 'Package: linux-image-686
Source: linux-latest (46)
Version: 3.2+46
Installed-Size: 36
Maintainer: Debian Kernel Team <[email protected]>
Architecture: i386
Depends: linux-image-686-pae, debconf (>= 0.5) | debconf-2.0
Description-en: Linux for modern PCs (dummy package)
 This is a dummy transitional package.  It can be safely removed.
Description-md5: 2fa509fac372c32c093ad624ef0c2ea0
Section: oldlibs
Priority: extra
Filename: pool/main/l/linux-latest/linux-image-686_3.2+46_i386.deb
Size: 7986
MD5sum: b18d0d10411c7a966ceb8f9a36b1a22e
SHA1: 01c7e9a87b080dabb04658751686903bc20ca1d1
SHA256: 94f8494d7a526ed7d35b57b659418ba44b2b165e642e4b524d4fd8ae5c18716f' ']'
++ return 0
++ echo 686
++ return 0
+ KVER=686
+ '[' -n 686 ']'
+ KERNELPACKAGES='linux-image-686 linux-headers-686 busybox firmware-linux-free firmware-linux'
+ DEBIAN_FRONTEND=noninteractive
+ aptitude -y --without-recommends install linux-image-686 linux-headers-686 busybox firmware-linux-free firmware-linux
Couldn't find package "linux-headers-686".  However, the following
packages contain "linux-headers-686" in their name:
  linux-headers-686-pae 
No candidate version found for firmware-linux
Couldn't find package "linux-headers-686".  However, the following
packages contain "linux-headers-686" in their name:
  linux-headers-686-pae 
No candidate version found for firmware-linux
The following NEW packages will be installed:
  busybox firmware-linux-free initramfs-tools{a} klibc-utils{a} libklibc{a} libuuid-perl{a} linux-base{a} linux-image-3.2.0-4-686-pae{a} linux-image-686 linux-image-686-pae 
The following packages are RECOMMENDED but will NOT be installed:
  libc6-i686 
0 packages upgraded, 10 newly installed, 0 to remove and 0 not upgraded.
Need to get 23.8 MB of archives. After unpacking 81.8 MB will be used.
Get: 1 http://ftp.us.debian.org/debian/ wheezy/main libuuid-perl i386 0.02-5 [9742 B]
Get: 2 http://ftp.us.debian.org/debian/ wheezy/main linux-base all 3.5 [34.3 kB]
Get: 3 http://ftp.us.debian.org/debian/ wheezy/main libklibc i386 2.0.1-3.1 [58.5 kB]
Get: 4 http://ftp.us.debian.org/debian/ wheezy/main klibc-utils i386 2.0.1-3.1 [189 kB]
Get: 5 http://ftp.us.debian.org/debian/ wheezy/main initramfs-tools all 0.109.1 [91.3 kB]
Get: 6 http://ftp.us.debian.org/debian/ wheezy/main linux-image-3.2.0-4-686-pae i386 3.2.63-2 [22.9 MB]
Get: 7 http://ftp.us.debian.org/debian/ wheezy/main busybox i386 1:1.20.0-7 [441 kB]                                                                                                
Get: 8 http://ftp.us.debian.org/debian/ wheezy/main firmware-linux-free all 3.2 [20.7 kB]                                                                                           
Get: 9 http://ftp.us.debian.org/debian/ wheezy/main linux-image-686-pae i386 3.2+46 [5814 B]                                                                                        
Get: 10 http://ftp.us.debian.org/debian/ wheezy/main linux-image-686 i386 3.2+46 [7986 B]                                                                                           
Fetched 23.8 MB in 14s (1680 kB/s)                                                                                                                                                  
Preconfiguring packages ...
Can not write log, openpty() failed (/dev/pts not mounted?)
Selecting previously unselected package libuuid-perl.
(Reading database ... 10358 files and directories currently installed.)
Unpacking libuuid-perl (from .../libuuid-perl_0.02-5_i386.deb) ...
Selecting previously unselected package linux-base.
Unpacking linux-base (from .../linux-base_3.5_all.deb) ...
Selecting previously unselected package libklibc.
Unpacking libklibc (from .../libklibc_2.0.1-3.1_i386.deb) ...
Selecting previously unselected package klibc-utils.
Unpacking klibc-utils (from .../klibc-utils_2.0.1-3.1_i386.deb) ...
Selecting previously unselected package initramfs-tools.
Unpacking initramfs-tools (from .../initramfs-tools_0.109.1_all.deb) ...
Selecting previously unselected package linux-image-3.2.0-4-686-pae.
Unpacking linux-image-3.2.0-4-686-pae (from .../linux-image-3.2.0-4-686-pae_3.2.63-2_i386.deb) ...
Selecting previously unselected package busybox.
Unpacking busybox (from .../busybox_1%3a1.20.0-7_i386.deb) ...
Selecting previously unselected package firmware-linux-free.
Unpacking firmware-linux-free (from .../firmware-linux-free_3.2_all.deb) ...
Selecting previously unselected package linux-image-686-pae.
Unpacking linux-image-686-pae (from .../linux-image-686-pae_3.2+46_i386.deb) ...
Selecting previously unselected package linux-image-686.
Unpacking linux-image-686 (from .../linux-image-686_3.2+46_i386.deb) ...
Processing triggers for man-db ...
Can not write log, openpty() failed (/dev/pts not mounted?)
Setting up libuuid-perl (0.02-5) ...
Setting up linux-base (3.5) ...
Setting up libklibc (2.0.1-3.1) ...
Setting up klibc-utils (2.0.1-3.1) ...
Setting up initramfs-tools (0.109.1) ...
update-initramfs: deferring update (trigger activated)
Setting up linux-image-3.2.0-4-686-pae (3.2.63-2) ...
Running depmod.
Examining /etc/kernel/postinst.d.
run-parts: executing /etc/kernel/postinst.d/initramfs-tools 3.2.0-4-686-pae /boot/vmlinuz-3.2.0-4-686-pae
update-initramfs: Generating /boot/initrd.img-3.2.0-4-686-pae
run-parts: executing /etc/kernel/postinst.d/zz-update-grub 3.2.0-4-686-pae /boot/vmlinuz-3.2.0-4-686-pae
Generating grub.cfg ...
cat: /boot/grub/video.lst: No such file or directory
Found linux image: /boot/vmlinuz-3.2.0-4-686-pae
Found initrd image: /boot/initrd.img-3.2.0-4-686-pae
/usr/sbin/grub-probe: error: cannot find a GRUB drive for /dev/mapper/loop0p1.  Check your device.map.
/usr/sbin/grub-probe: error: cannot find a GRUB drive for /dev/mapper/loop0p1.  Check your device.map.
done
Setting up busybox (1:1.20.0-7) ...
Setting up firmware-linux-free (3.2) ...
update-initramfs: deferring update (trigger activated)
Setting up linux-image-686-pae (3.2+46) ...
Setting up linux-image-686 (3.2+46) ...
Processing triggers for initramfs-tools ...
update-initramfs: Generating /boot/initrd.img-3.2.0-4-686-pae

+ stage kernel done
+ '[' -n done ']'
+ echo done
+ return 0
+ for i in chrootmirror grmlrepos backportrepos kernelimg_conf kernel packages extrapackages reconfigure hosts default_locales timezone fstab hostname initrd grub_install passwords custom_scripts upgrade_system remove_apt_cache services remove_chrootmirror
+ stage packages
+ '[' -n '' ']'
+ grep -q done /etc/debootstrap/stages/packages
+ echo '   Executing stage packages'
   Executing stage packages
+ return 0
+ packages
+ '[' -f /etc/debootstrap/debconf-selections ']'
+ '[' '' = yes ']'
+ stage packages done
+ '[' -n done ']'
+ echo done
+ return 0
+ for i in chrootmirror grmlrepos backportrepos kernelimg_conf kernel packages extrapackages reconfigure hosts default_locales timezone fstab hostname initrd grub_install passwords custom_scripts upgrade_system remove_apt_cache services remove_chrootmirror
+ stage extrapackages
+ '[' -n '' ']'
+ grep -q done /etc/debootstrap/stages/extrapackages
+ echo '   Executing stage extrapackages'
   Executing stage extrapackages
+ return 0
+ extrapackages
+ '[' yes = yes ']'
++ find /etc/debootstrap/extrapackages -type f -name '*.deb'
+ PACKAGELIST=
+ '[' -n '' ']'
+ stage extrapackages done
+ '[' -n done ']'
+ echo done
+ return 0
+ for i in chrootmirror grmlrepos backportrepos kernelimg_conf kernel packages extrapackages reconfigure hosts default_locales timezone fstab hostname initrd grub_install passwords custom_scripts upgrade_system remove_apt_cache services remove_chrootmirror
+ stage reconfigure
+ '[' -n '' ']'
+ grep -q done /etc/debootstrap/stages/reconfigure
+ echo '   Executing stage reconfigure'
   Executing stage reconfigure
+ return 0
+ reconfigure
+ '[' -n console-data ']'
+ for package in '$RECONFIGURE'
+ grep -q '^ii'
+ dpkg --list console-data
+ stage reconfigure done
+ '[' -n done ']'
+ echo done
+ return 0
+ for i in chrootmirror grmlrepos backportrepos kernelimg_conf kernel packages extrapackages reconfigure hosts default_locales timezone fstab hostname initrd grub_install passwords custom_scripts upgrade_system remove_apt_cache services remove_chrootmirror
+ stage hosts
+ '[' -n '' ']'
+ grep -q done /etc/debootstrap/stages/hosts
+ echo '   Executing stage hosts'
   Executing stage hosts
+ return 0
+ hosts
+ '[' -f /etc/hosts ']'
+ sed -i 's#127.0.0.1 .*#127.0.0.1       localhost  host#' /etc/hosts
+ '[' -n host ']'
+ sed -i s/grml/host/g /etc/hosts
+ stage hosts done
+ '[' -n done ']'
+ echo done
+ return 0
+ for i in chrootmirror grmlrepos backportrepos kernelimg_conf kernel packages extrapackages reconfigure hosts default_locales timezone fstab hostname initrd grub_install passwords custom_scripts upgrade_system remove_apt_cache services remove_chrootmirror
+ stage default_locales
+ '[' -n '' ']'
+ grep -q done /etc/debootstrap/stages/default_locales
+ echo '   Executing stage default_locales'
   Executing stage default_locales
+ return 0
+ default_locales
+ '[' -n en_US.UTF-8 ']'
+ '[' -x /usr/sbin/update-locale ']'
+ /usr/sbin/update-locale LANGUAGE=en_US:en LANG=en_US.UTF-8
*** update-locale: Error: invalid locale settings:  LANGUAGE=en_US:en LANG=en_US.UTF-8
+ exit 1
+ RC=1
+ umount /mnt/debootstrap.3127/dev
+ eend 1
+ trap error_handler ERR
+ local retval=1
+ shift
+ '[' 1 -gt 0 ']'
+ printf ' -> Failed (rc=1)\n'
 -> Failed (rc=1)
+ return 1
+ grep -q GRML_CHROOT_SCRIPT_MARKER /mnt/debootstrap.3127/bin/chroot-script
+ einfo 'Removing chroot-script again'
+ trap error_handler ERR
+ einfon 'Removing chroot-script again\n'
+ trap error_handler ERR
+ '[' '' '!=' yes ']'
+ '[' einfon = ebegin ']'
+ printf ' * Removing chroot-script again\n'
 * Removing chroot-script again
+ LAST_E_CMD=einfon
+ return 0
+ return 0
+ rm -f /mnt/debootstrap.3127/bin/chroot-script
+ eend 0
+ trap error_handler ERR
+ local retval=0
+ shift
+ '[' 0 -gt 0 ']'
+ return 0
+ stage chrootscript done
+ trap error_handler ERR
+ '[' -n done ']'
+ echo done
+ return 0
+ rm -f /var/cache/grml-debootstrap/stages_test.raw/chrootscript
+ for i in prepare_vm mkfs tunefs mount_target debootstrap_system preparechroot execute_pre_scripts chrootscript execute_scripts umount_chroot finalize_vm fscktool
+ stage execute_scripts
+ trap error_handler ERR
+ '[' -n '' ']'
+ grep -q done /var/cache/grml-debootstrap/stages_test.raw/execute_scripts
+ execute_scripts
+ trap error_handler ERR
+ export MNTPOINT
+ '[' -d '' ']'
+ '[' yes = yes ']'
+ '[' -d '' ']'
+ scripts=/etc/debootstrap/scripts/
+ for script in '${scripts}/*'
+ '[' -x '/etc/debootstrap/scripts//*' ']'
+ stage execute_scripts done
+ trap error_handler ERR
+ '[' -n done ']'
+ echo done
+ return 0
+ rm -f /var/cache/grml-debootstrap/stages_test.raw/execute_scripts
+ for i in prepare_vm mkfs tunefs mount_target debootstrap_system preparechroot execute_pre_scripts chrootscript execute_scripts umount_chroot finalize_vm fscktool
+ stage umount_chroot
+ trap error_handler ERR
+ '[' -n '' ']'
+ grep -q done /var/cache/grml-debootstrap/stages_test.raw/umount_chroot
+ umount_chroot
+ trap error_handler ERR
+ '[' -n /etc/debootstrap/install_notes ']'
+ '[' -r /mnt/debootstrap.3127//etc/debootstrap/install_notes ']'
+ '[' -n '' ']'
+ grep -q /mnt/debootstrap.3127 /proc/mounts
+ '[' -n 1 ']'
+ einfo 'Unmount /mnt/debootstrap.3127'
+ trap error_handler ERR
+ einfon 'Unmount /mnt/debootstrap.3127\n'
+ trap error_handler ERR
+ '[' '' '!=' yes ']'
+ '[' einfon = ebegin ']'
+ printf ' * Unmount /mnt/debootstrap.3127\n'
 * Unmount /mnt/debootstrap.3127
+ LAST_E_CMD=einfon
+ return 0
+ return 0
+ umount /mnt/debootstrap.3127
umount: /mnt/debootstrap.3127: device is busy.
        (In some cases useful info about processes that use
         the device is found by lsof(8) or fuser(1))
+ eend 1
+ trap error_handler ERR
+ local retval=1
+ shift
+ '[' 1 -gt 0 ']'
+ printf ' -> Failed (rc=1)\n'
 -> Failed (rc=1)
+ return 1
+ bailout 2 umount_chroot
+ trap error_handler ERR
+ cleanup
+ trap error_handler ERR
+ '[' -n /var/cache/grml-debootstrap/variables_test.raw ']'
+ einfo 'Removing /var/cache/grml-debootstrap/variables_test.raw'
+ trap error_handler ERR
+ einfon 'Removing /var/cache/grml-debootstrap/variables_test.raw\n'
+ trap error_handler ERR
+ '[' '' '!=' yes ']'
+ '[' einfon = ebegin ']'
+ printf ' * Removing /var/cache/grml-debootstrap/variables_test.raw\n'
 * Removing /var/cache/grml-debootstrap/variables_test.raw
+ LAST_E_CMD=einfon
+ return 0
+ return 0
+ rm /var/cache/grml-debootstrap/variables_test.raw
+ eend 0
+ trap error_handler ERR
+ local retval=0
+ shift
+ '[' 0 -gt 0 ']'
+ return 0
+ '[' -n /var/cache/grml-debootstrap/stages_test.raw ']'
+ einfo 'Removing /var/cache/grml-debootstrap/stages_test.raw'
+ trap error_handler ERR
+ einfon 'Removing /var/cache/grml-debootstrap/stages_test.raw\n'
+ trap error_handler ERR
+ '[' '' '!=' yes ']'
+ '[' einfon = ebegin ']'
+ printf ' * Removing /var/cache/grml-debootstrap/stages_test.raw\n'
 * Removing /var/cache/grml-debootstrap/stages_test.raw
+ LAST_E_CMD=einfon
+ return 0
+ return 0
+ rmdir /var/cache/grml-debootstrap/stages_test.raw
+ eend 0
+ trap error_handler ERR
+ local retval=0
+ shift
+ '[' 0 -gt 0 ']'
+ return 0
+ grep -q '/mnt/debootstrap\.'
+ echo /mnt/debootstrap.3127
+ rmdir /mnt/debootstrap.3127
++ error_handler
++ last_exit_code=1
++ last_bash_command='rmdir "$MNTPOINT" 2> /dev/null'
++ '[' no = yes ']'
++ '[' '!' no = yes ']'
++ return
+ '[' -n /mnt/debootstrap.3127 ']'
+ grep -q /mnt/debootstrap.3127 /proc/mounts
+ '[' -x /mnt/debootstrap.3127/etc/init.d/ssh ']'
+ '[' -x /mnt/debootstrap.3127/etc/init.d/mdadm ']'
+ '[' -x /mnt/debootstrap.3127/bin/umount ']'
+ chroot /mnt/debootstrap.3127 umount -a
+ for ARG in /sys /proc /proc /dev /dev
+ '[' -x /mnt/debootstrap.3127/bin/umount ']'
+ chroot /mnt/debootstrap.3127 umount /sys
++ error_handler
++ last_exit_code=1
++ last_bash_command='chroot "$MNTPOINT" umount $ARG > /dev/null 2>&1'
++ '[' no = yes ']'
++ '[' '!' no = yes ']'
++ return
+ umount /mnt/debootstrap.3127//sys
++ error_handler
++ last_exit_code=1
++ last_bash_command='umount "$MNTPOINT"/$ARG > /dev/null 2>&1'
++ '[' no = yes ']'
++ '[' '!' no = yes ']'
++ return
+ for ARG in /sys /proc /proc /dev /dev
+ '[' -x /mnt/debootstrap.3127/bin/umount ']'
+ chroot /mnt/debootstrap.3127 umount /proc
+ umount /mnt/debootstrap.3127//proc
++ error_handler
++ last_exit_code=1
++ last_bash_command='umount "$MNTPOINT"/$ARG > /dev/null 2>&1'
++ '[' no = yes ']'
++ '[' '!' no = yes ']'
++ return
+ for ARG in /sys /proc /proc /dev /dev
+ '[' -x /mnt/debootstrap.3127/bin/umount ']'
+ chroot /mnt/debootstrap.3127 umount /proc
++ error_handler
++ last_exit_code=1
++ last_bash_command='chroot "$MNTPOINT" umount $ARG > /dev/null 2>&1'
++ '[' no = yes ']'
++ '[' '!' no = yes ']'
++ return
+ umount /mnt/debootstrap.3127//proc
++ error_handler
++ last_exit_code=1
++ last_bash_command='umount "$MNTPOINT"/$ARG > /dev/null 2>&1'
++ '[' no = yes ']'
++ '[' '!' no = yes ']'
++ return
+ for ARG in /sys /proc /proc /dev /dev
+ '[' -x /mnt/debootstrap.3127/bin/umount ']'
+ chroot /mnt/debootstrap.3127 umount /dev
++ error_handler
++ last_exit_code=1
++ last_bash_command='chroot "$MNTPOINT" umount $ARG > /dev/null 2>&1'
++ '[' no = yes ']'
++ '[' '!' no = yes ']'
++ return
+ umount /mnt/debootstrap.3127//dev
++ error_handler
++ last_exit_code=1
++ last_bash_command='umount "$MNTPOINT"/$ARG > /dev/null 2>&1'
++ '[' no = yes ']'
++ '[' '!' no = yes ']'
++ return
+ for ARG in /sys /proc /proc /dev /dev
+ '[' -x /mnt/debootstrap.3127/bin/umount ']'
+ chroot /mnt/debootstrap.3127 umount /dev
++ error_handler
++ last_exit_code=1
++ last_bash_command='chroot "$MNTPOINT" umount $ARG > /dev/null 2>&1'
++ '[' no = yes ']'
++ '[' '!' no = yes ']'
++ return
+ umount /mnt/debootstrap.3127//dev
++ error_handler
++ last_exit_code=1
++ last_bash_command='umount "$MNTPOINT"/$ARG > /dev/null 2>&1'
++ '[' no = yes ']'
++ '[' '!' no = yes ']'
++ return
+ '[' -n '' ']'
+ '[' -n '' ']'
+ einfo 'Unmounting /mnt/debootstrap.3127'
+ trap error_handler ERR
+ einfon 'Unmounting /mnt/debootstrap.3127\n'
+ trap error_handler ERR
+ '[' '' '!=' yes ']'
+ '[' einfon = ebegin ']'
+ printf ' * Unmounting /mnt/debootstrap.3127\n'
 * Unmounting /mnt/debootstrap.3127
+ LAST_E_CMD=einfon
+ return 0
+ return 0
+ umount /mnt/debootstrap.3127
+ eend 0
+ trap error_handler ERR
+ local retval=0
+ shift
+ '[' 0 -gt 0 ']'
+ return 0
+ '[' -n /var/cache/grml-debootstrap/stages_test.raw ']'
+ echo -n 'Removing stages directory /var/cache/grml-debootstrap/stages_test.raw: '
Removing stages directory /var/cache/grml-debootstrap/stages_test.raw: + rm -rf /var/cache/grml-debootstrap/stages_test.raw
+ echo done
done
+ grep -q '/mnt/debootstrap\.'
+ echo /mnt/debootstrap.3127
+ einfo 'Removing directory /mnt/debootstrap.3127'
+ trap error_handler ERR
+ einfon 'Removing directory /mnt/debootstrap.3127\n'
+ trap error_handler ERR
+ '[' '' '!=' yes ']'
+ '[' einfon = ebegin ']'
+ printf ' * Removing directory /mnt/debootstrap.3127\n'
 * Removing directory /mnt/debootstrap.3127
+ LAST_E_CMD=einfon
+ return 0
+ return 0
+ rmdir /mnt/debootstrap.3127
+ eend 0
+ trap error_handler ERR
+ local retval=0
+ shift
+ '[' 0 -gt 0 ']'
+ return 0
+ '[' -n ./test.raw ']'
+ einfo 'Removing loopback mount of file ./test.raw.'
+ trap error_handler ERR
+ einfon 'Removing loopback mount of file ./test.raw.\n'
+ trap error_handler ERR
+ '[' '' '!=' yes ']'
+ '[' einfon = ebegin ']'
+ printf ' * Removing loopback mount of file ./test.raw.\n'
 * Removing loopback mount of file ./test.raw.
+ LAST_E_CMD=einfon
+ return 0
+ return 0
+ kpartx -d ./test.raw
loop deleted : /dev/loop0
+ eend 0
+ trap error_handler ERR
+ local retval=0
+ shift
+ '[' 0 -gt 0 ']'
+ return 0
+ '[' -n 2 ']'
+ EXIT=2
+ '[' -n umount_chroot ']'
+ einfo 'Notice: remove /var/cache/grml-debootstrap/stages_test.raw/umount_chroot to reexecute the stage'
+ trap error_handler ERR
+ einfon 'Notice: remove /var/cache/grml-debootstrap/stages_test.raw/umount_chroot to reexecute the stage\n'
+ trap error_handler ERR
+ '[' '' '!=' yes ']'
+ '[' einfon = ebegin ']'
+ printf ' * Notice: remove /var/cache/grml-debootstrap/stages_test.raw/umount_chroot to reexecute the stage\n'
 * Notice: remove /var/cache/grml-debootstrap/stages_test.raw/umount_chroot to reexecute the stage
+ LAST_E_CMD=einfon
+ return 0
+ return 0
+ exit 2
tester@debian:~$ 

Git HEAD: Host's hostname leaks into system being installed

Even without custom pre/chroot/post scripts, there are places where the host's hostname (i.e. the one of the machine executing grml-deboostrap) leaks into the system being installed. The consequences are:

  • A "broken" postfix setup
  • Information disclosure

These are step to reproduce on the shell:

$ sudo grml-debootstrap --hostname hostname-leak-demo --vmfile --target hostname-leak-demo.img --password .... --release wheezy

$ mkdir hostname-leak-demo.d
$ sudo kpartx -a -p p hostname-leak-demo.img
$ mount /dev/mapper/loop1p1 hostname-leak-demo.d
$ sudo mount /dev/mapper/loop........p1 hostname-leak-demo.d

$ sudo chroot hostname-leak-demo.d /bin/fgrep -Rl "$(hostname)" /etc/ 2>/dev/null
/etc/aliases.db
/etc/lvm/backup/hidden1
/etc/lvm/backup/hidden2
/etc/ssh/ssh_host_rsa_key.pub
/etc/ssh/ssh_host_ecdsa_key.pub
/etc/ssh/ssh_host_dsa_key.pub
/etc/postfix/main.cf

I'm currently experimenting with a workaround. The idea is to add a script /usr/local/sbin/hostname with content

#! /bin/bash
cat /etc/hostname

It does seem to help for postfix, but it's not waterproof, e.g. SSH public keys keep leaking.

PS: I'm running grep inside the chroot since absolute symlinks go to the host system, otherwise.

hard drive serial of build machine leaks into image in /boot/grub/device.map

inside a booted VM, created by grml-debootstrap:

cat /boot/grub/device.map
(hd0)   /dev/disk/by-id/ata-VBOX_HARDDISK_VB3680cb3a-83f0b2f8

on my build machine that was used to create the image:

sudo hdparm -i /dev/sda | grep SerialNo
 Model=VBOX HARDDISK, FwRev=1.0, SerialNo=VB3680cb3a-83f0b2f8

on a different VBox machine:

sudo hdparm -i /dev/sda | grep SerialNo
 Model=VBOX HARDDISK, FwRev=1.0, SerialNo=VB00cebe4d-00d96c5a

Conclusion:
hard drive serial of build machine leaks into image in /boot/grub/device.map


I tested mounting the image, deleting /boot/grub/device.map, unmounted the image - system still bootable.


What should we do? I think shipping the existing /boot/grub/device.map isn't helpful, since it will be erroneous once the image gets booted, it might even be counter productive.

Should we delete /boot/grub/device.map at the end of the build process?

Should we ship a fixed /boot/grub/device.map? Any idea how a valid one would look like?

Git HEAD: Lack of user input escaping / use of $!`"\ in passwords

Introduction

I am feeding generated passwords to grml-debootstrap's --password parameter. Passwords including special characters. I noticed an error

unexpected EOF while looking for matching ``'

flying by the other day and traced it back to the occurrance of a single backtick in the generated password. That made me have a closer look. I found that when grml-debootstrap is writing file /var/cache/grml-debootstrap/variables_... for later evaluation, it is not escaping variable content (i.e. user input):

:
[ -n "$ROOTPASSWORD" ] && echo "ROOTPASSWORD=\"$ROOTPASSWORD\"" >> "$CHROOT_VARIABLES"
[ -n "$SCRIPTS" ] && echo "SCRIPTS=\"$SCRIPTS\"" >> "$CHROOT_VARIABLES"
:

Problem in detail

To see a troublesome password in action try this:

# ROOTPASSWORD='foo`bar'

# echo "${ROOTPASSWORD}"
foo`bar

# eval "ROOTPASSWORD=\"$ROOTPASSWORD\""
bash: unexpected EOF while looking for matching ``'
bash: syntax error: unexpected end of file

With the current code, I expect (at least) these characters to be trouble:

  • $ dollar
  • ! exclamation mark
  • backtick
  • " double quote
  • \ backslash

About a fix

The fix I have in mind is made of two parts:

  • Switch to single ticks which changes the set of troublesome characters to just ' (single quote)
  • escape all single quotes in the variable content properly (details follow)

The first alone would make

echo "ROOTPASSWORD='$ROOTPASSWORD'"

which is broken:

# ROOTPASSWORD=single\'single

# eval "ROOTPASSWORD='$ROOTPASSWORD'"
bash: unexpected EOF while looking for matching `''
bash: syntax error: unexpected end of file

For escaping, note that double quotes can be escaped in double quoted string ..

# eval 'echo "\""'
"

but single quotes cannot (.. be escaped in a single quoted string):

# eval "echo '\''"
bash: unexpected EOF while looking for matching `''
bash: syntax error: unexpected end of file

I believe the proper way to escape (single quotes inside a single quoted string) is to replace ' by '\'' (single quote, backslash, single quote, single quote), i.e. ending the open quote, write an escape single quote, and open a new quoted string.
Here is a demo using Bash's own substitutions (i.e. with no forking):

# APOS=zero\'one\\\'two\\\\\'three

# echo $APOS
zero'one\'two\\'three

# eval "echo '${APOS//\'/\'\\\'\'}'"
zero'one\'two\\'three

I am happy to help out with a patch if you agree this is the way to go.

Best, Sebastian

Consider renaming --scripts to --post-scripts (for consistency)

Right now we have

--pre-scripts
--chroot-scripts
--scripts

With --scripts renamed to --post-scripts that would make

--pre-scripts
--chroot-scripts
--post-scripts

which I consider more consistent and easier to remember.
It would save wondering, at what stage --scripts script are run.

--scripts should be marked deprecated before hard removal/rename, of course.

Git HEAD: SSH server process on host system stopped (rather than that inside the chroot)

Hello!

A friend of mine ran into a situation where grml-debootstrap killed the SSH server of the host system. @ZaphodB and I had a closer look at the code now. It seems that grml-debooststrap is stopping init scripts at two places: The services stage in file chroot-script

services() {
  for service in ssh mdadm mdadm-raid ; do
    if [ -x /etc/init.d/"$service" ] ; then
      /etc/init.d/"$service" stop || true
    fi
  done
}

and the cleanup function in file grml-deboostrap:

# make sure $TARGET is not mounted when exiting grml-debootstrap
if [ -n "$MNTPOINT" ] ; then
  if grep -q "$MNTPOINT" /proc/mounts ; then
    # make sure nothing is left inside chroot so we can unmount it
    [ -x "$MNTPOINT"/etc/init.d/ssh ] && "$MNTPOINT"/etc/init.d/ssh stop
    [ -x "$MNTPOINT"/etc/init.d/mdadm ] && "$MNTPOINT"/etc/init.d/mdadm stop
    ...

Now the latter is interesting.
With init script /etc/init.d/ssh (at least of Debian wheezy) command stop results in execution of

start-stop-daemon --stop --quiet --oknodo --pidfile /var/run/sshd.pid

with /var/run/sshd.pid being the host's file (since it was not run by/inside a chroot).
Essentially, /etc/init.d/ssh stop must not be called from outside the chroot.

We ran into this just once. It seems that cleanup needs to have been called from bailout (i.e. after some error) for this to trigger.

We are hoping for a soon fix. Thanks!

Git HEAD: --nopackages breaks GRUB installation (VM mode (--vm/--vmfile))

I'm trying to install Debian jessie but the resulting image won't boot.
One reason seem to be the failure to install GRUB:

# sudo grml-debootstrap --vmfile --vmsize 5g --verbose --hostname machine-1 --release jessie --target ./machine-1.hdd --grub ./machine-1.hdd --password .... --nopackages --filesystem ext4
[..]
Installing grub on ./machine-1.hdd:
Installing for i386-pc platform.
grub-install: error: cannot find a GRUB drive for ./machine-1.hdd.  Check your device.map.
Adjusting grub configuration for use on ./machine-1.hdd.
[..]

I thought it could be need for an absolute path, but same issue again:

[..]
Installing grub on /some/path/machine-1.hdd:
Installing for i386-pc platform.
grub-install: error: cannot find a GRUB drive for /some/path/machine-1.hdd.  Check your device.map.
Adjusting grub configuration for use on /some/path/machine-1.hdd.
[..]

This is code from Git HEAD running on top of Debian wheezy. Any ideas? Does it work for you?

Make VM host name accessible to pre-scripts, too

Currently, pre-scripts get ${MNTPOINT} passed from the environment only.
When reading ${MNTPOINT}/etc/hostname at that stage, the host name found is the host's host name, not the VM's one.
So it does currently not seem possible to have a pre-script do things depending on the VM host name.
The chroot- and post-script execution do not have that issue.

For pre-scripts, I would ask to

  • export ${HOSTNAME} (under that or another name) or
  • write the VM host name into ${MNTPOINT}/etc/hostname before script execution.

What do you think?

better error handling

grml-debootstrap often uses uses tools such as cp without checking their exit codes.

Would you be interested to get an early trap ERR, that checks for unexpected non-zero exit codes? In the few cases where we expect non-zero exit codes, those need to be overrules, but overall, I believe we could make grml-debootstrap more bug free.

Alternatively, we could add a lot more eend $?'s.

What do you think?

kernel package detection function broke in Debian jessie on i386

The kernel package detection function get_kernel_version() in chroot-script broke in Debian jessie for i386 (!) arch builds.

Variable KERNELPACKAGES gets set to

KERNELPACKAGES='linux-image-686 linux-headers-686 busybox firmware-linux-free firmware-linux'

But the package linux-image-686 no longer exists in jessie:
https://packages.debian.org/jessie/linux-image-686

Hence kernel installation fails and image will not be bootable. (#30 is a different issue.)

The package linux-image-686 only exists in wheezy:
https://packages.debian.org/wheezy/linux-image-686

I don't know if there is a replacement for linux-image-686.

What does exist in wheezy as well as in jessie is linux-image-486as well as linux-image-686-pae:

supplying packages list by command line or env var rather than packages file

I find the need for the packages file not so pretty. Could you provide an option please for a command line or environment variable that contains a space (or w/e) delimited list of packages?

Any idea how that could be implemented? It's non obvious to me, because a the packages file is copied into the chroot.

I may or may not be able to provide a pull request for adding that option.

run through shellcheck

shellcheck is an online service and Libre Software (downloadable) that detects problems with sh/bash scripts. Also available in Debian jessie and sid.

Even though there are a few false positives, please run your shell scripts through shellcheck. I think a few suggestions, especially related to quotes, are justified.

debian / grmldebootstrap - different locale; LANGUAGE environment variable empty

On my host system installed using Debian stable CD (wheezy).

$ locale
LANG=en_US.UTF-8
LANGUAGE=en_US:en
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

LANGUAGE=en_US:en is set.

$ cat /etc/default/locale
#  File generated by update-locale
LANG="en_US.UTF-8"
LANGUAGE="en_US:en"

/etc/locale.gen contains only.

en_US.UTF-8 UTF-8

(Rest are just comments.)




In a Debian wheezy VM created using grml-debootstrap.

$ locale
LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

LANGUAGE= is empty.

/etc/locale.gen
grml-debootstrap uses a different one (https://github.com/grml/grml-debootstrap/blob/master/locale.gen).

Also /etc/default/locale differs.

$ cat /etc/default/locale
#  File generated by update-locale
#LANG=en_US.UTF-8



This is a problem, because after upgrading to jessie, when running.

sudo apt-get install --reinstall x11-common

I am getting.

perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE = (unset),
    LC_ALL = (unset),
    LANG = "en_US.UTF-8"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").



Should we modify /etc/locale.gen (https://github.com/grml/grml-debootstrap/blob/master/locale.gen) to contain only en_US.UTF-8 UTF-8? Or how else can we move grml-debootstrap closer to Debian default, so the LANGUAGE environment variable will be set to LANGUAGE=en_US:en by default?

Git HEAD: Fails to unmount due to child mount leftovers

This is what I see each time in the output:

# sudo grml-debootstrap --vmfile --vmsize 5g --verbose --hostname machine-1 --release jessie --target ./machine-1.hdd --grub ./machine-1.hdd --password .... --nopackages --filesystem ext4
[..]
 * Removing chroot-script again
 * Unmount /mnt/debootstrap.1457
umount: /mnt/debootstrap.1457: device is busy.
        (In some cases useful info about processes that use
         the device is found by lsof(8) or fuser(1))
 -> Failed (rc=1)
[..]

Use $DPKG_OPTIONS everywhere for apt-get/aptitude

In File:
https://github.com/grml/grml-debootstrap/blob/master/chroot-script

Could you consider please, searching for apt-get and aptitude and add $DPKG_OPTIONS everywhere?

For example apt-get --force-yes -y upgrade issues network activity, so having $DPKG_OPTIONS around for setting higher timeouts would be helpful. This also goes for apt-get update.

Not sure if $DPKG_OPTIONS is useful for apt-get clean as well, but extra apt options do not hurt and we don't know what options apt gets in future. So adding $DPKG_OPTIONS there wouldn't hurt either.

debian jessie based VM build does not boot [grub bug] - error: file '/grub/i386-pc/normal.mod' not found.

Build using host operating system: Debian stable.

grml-debootstrap version: 0.65 (installed from Debian jessie) (no modifications)

Using my usual grml-debootstrap test config:
https://github.com/adrelanos/grml-debootstraptest/blob/master/createimg1

The image doesn't boot. Stops before grub boot menu.

0AAD Loading ..............................................
error: file '/grub/i386-pc/normal.mod' not found.
Entering rescue mode...
grub rescue > _

Can you re-produce this? Do jessie based VM builds work for you? Can you fix this please? Or could you report a bug against grub please if that is a new bug in grub?

Git HEAD: Does not respect GRUB_DISABLE_LINUX_UUID=true

Hi!
The current code of grml-debootstrap patches grub.cfg for some distributions, including wheezy:

  case "$RELEASE" in
    lenny|squeeze|wheezy)
      einfo "Adjusting grub.cfg for successful boot sequence."
      sed -i "s;root=[^ ]\+;root=UUID=$TARGET_UUID;" "${MNTPOINT}"/boot/grub/grub.cfg
      ;;
  esac

Now with booting a wheezy PV Xen using pygrub, I write

GRUB_DISABLE_LINUX_UUID=true

into /etc/default/grub and run update-grub afterwards as part of a chroot schript, since pygrub (of wheezy, too) does not support UUID magic, unfortunately.

Now the problem is that grml-debootstrap weaves UUIDs back in by itself, even if previous update-grub pruduced results considered sane with respect to that scenario.

So for that patching code, it would be cool to have

  • support for GRUB_DISABLE_LINUX_UUID=true and/or
  • a switch to disable patching of grub.cfg

Git HEAD: Could use better distinction between --vmfile and --vm

My current understanding from code is that

  • --vmfile, works with a regular file whereas --vm works with a block devices
  • --vmfile calls qemu-img create, --vm does not

Looking at the current user docs I find...

Output of --help

      --vm               Set up a Virtual Machine, instead of plainly installing
                         to a partition or directory, to be combined with --target,
                         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

Issues:

  • For --vmfile, "into a file" should be "into a regular file", maybe
  • For --vmfile, there is no mention of qemu-img create being run

Man page "grml-debootstrap"

*--vm*::

    Set up a Virtual Machine on an existing block device, which will be
    partitioned.
    This allows deployment of a Virtual Machine. The options needs to be
    combined with the --target option.
    Usage example: --vm --target /dev/mapper/your-vm-disk

*--vmfile*::

    Set up a Virtual Machine instead of installing to a partition or directory.
    This allows deployment of a Virtual Machine. The options needs to be
    combined with the --target option.
    Usage example: --vmfile --target /mnt/sda1/qemu.img

Issues:

  • For --vmfile, there is no mention of regular file
  • For --vmfile, there is no mention of qemu-img create being run

report race condition bug upstream

From
https://github.com/grml/grml-debootstrap/blob/master/grml-debootstrap#L938

# give the system 2 seconds, otherwise we might run into
# race conditions :-/
sleep 2

Is there an upstream bug report about this? Could you report that one please?

I tried reporting an eventually similar/related bug a while ago:
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=734794

Without much success.

In meanwhile things got worse. Now I need to sleep 2 before and after using kpartx.

Perhaps you have better chances of getting through?

Git HEAD: Not mounting /dev/pts?

During execution I noticed this line:

E: Can not write log (Is /dev/pts mounted?) - posix_openpt (2: No such file or directory)

Are you not mounting /dev/pts on purpose?

Creating partition fails depending on prior block device content

I am passing LVM volumes for installation to grml-debootstrap. Previously, these LVM volumes were created using calls to lvcreate containing --zero n. It turned out, that triggers a bug in grml-debootstrap.
With --zero n, the new LVM volume may contains bytes from the past, not just in general, but in the first 1024 bytes, too. In my case, they contained fractions of a GPT partition table.

The related code in grml-debootstrap is this:

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
  [..]
fi
parted -s "${TARGET}" 'mkpart primary ext4 2M -1'

[..]

DEVINFO=$(kpartx -asv "$TARGET") # 'add map loop1p1 (253:0): 0 6289408 linear /dev/loop1 2048'
if [ -z "${DEVINFO}" ] ; then
  eerror "Error setting up loopback device." ; eend 1
  bailout 1
fi

bootgrub.mksh does some magic, part of that is reverted to zero, a new partition is created, and the partition block device is activated. Of those steps, the first two are not waterproof.
For certain prior content, parted will error out saying

Warning: /dev/foo contains GPT signatures, indicating that it has a GPT table.  However, it does not have a valid fake msdos partition table, as it should.  Perhaps it was corrupted -- possibly by a program that doesn't understand GPT partition tables.  Or perhaps you deleted the GPT table, and are now using an msdos partition table.  Is this a GPT partition table?
Error: Invalid argument during seek for read on /dev/foo

but the return code is not checked so execution fails later, when kpartx is called and its output is inspected. kpartx itself wrote to stderr:

  Warning: Disk has a valid GPT signature but invalid PMBR.
  Assuming this disk is *not* a GPT disk anymore.
  Use gpt kernel option to override.  Use GNU Parted to correct disk.

The whole output of grml-debootstrap is this

 * Reading specified config file /etc/.................
 * grml-debootstrap [0.69.1] - Please recheck configuration before execution:

   Target:          /dev/foo
   Install grub:    yes
   Using release:   jessie
   Using hostname:  foo
   Using mirror:    ...........
   Using arch:      amd64
   Deploying as Virtual Machine.

   Important! Continuing will delete all data from /dev/foo!
 * Skip user acknowledgement as requested via --force option.
0 @0x168: 63 @4 (0x4)
 - 0x168: 32 (0x20) @ 4 (0x4)
 - 0x16A: 31 (0x1F) @ 36 (0x24)
using 2 blocks, 4 bytes (146 free)
using sectors of 2^9 = 512 bytes
1+0 records in
1+0 records out
512 bytes (512 B) copied, 0.0350562 s, 14.6 kB/s
64+0 records in
64+0 records out
64 bytes (64 B) copied, 0.00644675 s, 9.9 kB/s
Warning: /dev/dm-3 contains GPT signatures, indicating that it has a GPT table.  However, it does not have a valid fake msdos partition table, as it should.  Perhaps it was corrupted -- possibly by a program that doesn't understand GPT partition tables.  Or perhaps you deleted the GPT table, and are now using an msdos partition table.  Is this a GPT partition table?
Error: Invalid argument during seek for read on /dev/dm-3
  Warning: Disk has a valid GPT signature but invalid PMBR.
  Assuming this disk is *not* a GPT disk anymore.
  Use gpt kernel option to override.  Use GNU Parted to correct disk.
 * Error setting up loopback device.
 -> Failed (rc=1)
 * Removing /var/cache/grml-debootstrap/stages_foo
 * Removing loopback mount of file /dev/foo.
  Warning: Disk has a valid GPT signature but invalid PMBR.
  Assuming this disk is *not* a GPT disk anymore.
  Use gpt kernel option to override.  Use GNU Parted to correct disk.

(While saying 0.69.1, the issue is not specific to that version.)

A disk trouble2g triggering that trouble can be created easily using

truncate --size $((2 * 1024**3 + 1024**2)) trouble2g
parted -s trouble2g mklabel gpt
truncate --size $((2 * 1024**3)) trouble2g

The idea is to produce GPT leftovers that point to a backup (at the last 512 bytes) outside of the device. That makes parted fail with "Invalid argument during seek".

Using bzip2 and base64, I can actually paste the whole disk inline in just 2213 bytes:

$ cat trouble2g.bz2.base64
QlpoOTFBWSZTWd5UiVUAAATf+/jAVAIAlGMg1hQAgAACUQAIEAAbQgIQoQIBAAmgAJKM2oAAA0A0
00AxqAilJiaAGgAA0AaNPkYSW5Na+igAqqJVOu3gSKgAqqJPGyEFAVVEkgIgBAFVRLI9QGAjQhvk
947gspSH70ObI6F6/TKBAegPPZkqSL4rNILhFABVUT9Z1mly/zFBWSZTWQ4J4t8BX45AAMAAAAgg
ADCATUZCoCWpCoCXMUFZJlNZDgni3wFfjkAAwAAACCAAMIBNRkKgJakKgJcxQVkmU1kOCeLfAV+O
QADAAAAIIAAwgE1GQqAlqQqAlzFBWSZTWQ4J4t8BX45AAMAAAAggADCATUZCoCWpCoCXMUFZJlNZ
Dgni3wFfjkAAwAAACCAAMIBNRkKgJakKgJcxQVkmU1kOCeLfAV+OQADAAAAIIAAwgE1GQqAlqQqA
lzFBWSZTWQ4J4t8BX45AAMAAAAggADCATUZCoCWpCoCXMUFZJlNZDgni3wFfjkAAwAAACCAAMIBN
RkKgJakKgJcxQVkmU1kOCeLfAV+OQADAAAAIIAAwgE1GQqAlqQqAlzFBWSZTWQ4J4t8BX45AAMAA
AAggADCATUZCoCWpCoCXMUFZJlNZDgni3wFfjkAAwAAACCAAMIBNRkKgJakKgJcxQVkmU1kOCeLf
AV+OQADAAAAIIAAwgE1GQqAlqQqAlzFBWSZTWQ4J4t8BX45AAMAAAAggADCATUZCoCWpCoCXMUFZ
JlNZDgni3wFfjkAAwAAACCAAMIBNRkKgJakKgJcxQVkmU1kOCeLfAV+OQADAAAAIIAAwgE1GQqAl
qQqAlzFBWSZTWQ4J4t8BX45AAMAAAAggADCATUZCoCWpCoCXMUFZJlNZDgni3wFfjkAAwAAACCAA
MIBNRkKgJakKgJcxQVkmU1kOCeLfAV+OQADAAAAIIAAwgE1GQqAlqQqAlzFBWSZTWQ4J4t8BX45A
AMAAAAggADCATUZCoCWpCoCXMUFZJlNZDgni3wFfjkAAwAAACCAAMIBNRkKgJakKgJcxQVkmU1kO
CeLfAV+OQADAAAAIIAAwgE1GQqAlqQqAlzFBWSZTWQ4J4t8BX45AAMAAAAggADCATUZCoCWpCoCX
MUFZJlNZDgni3wFfjkAAwAAACCAAMIBNRkKgJakKgJcxQVkmU1kOCeLfAV+OQADAAAAIIAAwgE1G
QqAlqQqAlzFBWSZTWQ4J4t8BX45AAMAAAAggADCATUZCoCWpCoCXMUFZJlNZDgni3wFfjkAAwAAA
CCAAMIBNRkKgJakKgJcxQVkmU1kOCeLfAV+OQADAAAAIIAAwgE1GQqAlqQqAlzFBWSZTWQ4J4t8B
X45AAMAAAAggADCATUZCoCWpCoCXMUFZJlNZDgni3wFfjkAAwAAACCAAMIBNRkKgJakKgJcxQVkm
U1kOCeLfAV+OQADAAAAIIAAwgE1GQqAlqQqAlzFBWSZTWQ4J4t8BX45AAMAAAAggADCATUZCoCWp
CoCXMUFZJlNZDgni3wFfjkAAwAAACCAAMIBNRkKgJakKgJcxQVkmU1kOCeLfAV+OQADAAAAIIAAw
gE1GQqAlqQqAlzFBWSZTWQ4J4t8BX45AAMAAAAggADCATUZCoCWpCoCXMUFZJlNZDgni3wFfjkAA
wAAACCAAMIBNRkKgJakKgJcxQVkmU1kOCeLfAV+OQADAAAAIIAAwgE1GQqAlqQqAlzFBWSZTWQ4J
4t8BX45AAMAAAAggADCATUZCoCWpCoCXMUFZJlNZDgni3wFfjkAAwAAACCAAMIBNRkKgJakKgJcx
QVkmU1kOCeLfAV+OQADAAAAIIAAwgE1GQqAlqQqAlzFBWSZTWQ4J4t8BX45AAMAAAAggADCATUZC
oCWpCoCXMUFZJlNZDgni3wFfjkAAwAAACCAAMIBNRkKgJakKgJcxQVkmU1kOCeLfAV+OQADAAAAI
IAAwgE1GQqAlqQqAlzFBWSZTWQ4J4t8BX45AAMAAAAggADCATUZCoCWpCoCXMUFZJlNZDgni3wFf
jkAAwAAACCAAMIBNRkKgJakKgJcxQVkmU1kOCeLfAV+OQADAAAAIIAAwgE1GQqAlqQqAlzFBWSZT
WWJrqtsBFLBgAMAAAAEACCAAMMwFKaYFIkNiCkSHi7kinChIMdFvrQA=

Unpacked, expect to see this:

# base64 -d < trouble2g.bz2.base64 | bzip2 -d | hexdump -C
00000000  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
000001c0  01 00 ee fe ff ff 01 00  00 00 ff 07 40 00 00 00  |............@...|
000001d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 55 aa  |..............U.|
00000200  45 46 49 20 50 41 52 54  00 00 01 00 5c 00 00 00  |EFI PART....\...|
00000210  7d ad 67 e5 00 00 00 00  01 00 00 00 00 00 00 00  |}.g.............|
00000220  ff 07 40 00 00 00 00 00  22 00 00 00 00 00 00 00  |..@.....".......|
00000230  de 07 40 00 00 00 00 00  d9 82 ae 93 08 3c 37 4f  |..@..........<7O|
00000240  b0 24 d7 3a 9a b5 fe 5a  02 00 00 00 00 00 00 00  |.$.:...Z........|
00000250  80 00 00 00 80 00 00 00  86 d2 54 ab 00 00 00 00  |..........T.....|
00000260  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
80000000

To fix the issue I suggest to

  • a) resolve bootgrub.mksh and use regular tools like parted to create a clean partition table, or
  • b) zero the first 1024 bytes and the last 512 bytes of the device before calling bootgrub.mksh, or
  • c) both of these.

PS: I would be interested why bootgrub.mksh is currently used.

security issue - use full fingerprint instead of short gpg ids

Code in question:
https://github.com/grml/grml-debootstrap/blob/master/chroot-script#L157

# make sure we have the keys available for aptitude
gpg --keyserver subkeys.pgp.net --recv-keys F61E2E7CECDEA787
gpg --export F61E2E7CECDEA787 | apt-key add - || true # not yet sure
# why it's necessary, sometimes we get an error even though it works [mika]

Short gpg id's are bad:
http://www.asheesh.org/note/debian/short-key-ids-are-bad-news.html

To make it worse, there is another bug gpg --recv-keys truncates requests:
http://bugs.g10code.com/gnupg/issue1340

Better use the full 40 digits everywhere.

Git HEAD: Output contains "BLKRRPART: Invalid argument"

I'm on Debian wheezy and just updated my installation to the Git HEAD version to check if the situation has changed. These are my commands:

# git clone -o github-readonly https://github.com/grml/grml-debootstrap.git
# cd grml-debootstrap
# debuild
# sudo dpkg -i ../grml-debootstrap_0.67_all.deb
# sudo grml-debootstrap --vmfile --vmsize 5g --verbose --hostname machine-1 --release jessie --target ./machine-1.hdd --grub ./machine-1.hdd --password .... --nopackages --filesystem ext4
 * grml-debootstrap [0.67] - Please recheck configuration before execution:

   Target:          ./machine-1.hdd
   Install grub:    yes
   Using release:   jessie
   Using hostname:  machine-1
   Using mirror:    http://http.debian.net/debian
   Using arch:      amd64
   Deploying as Virtual Machine.
   Using Virtual Disk file with size of 5g.

   Important! Continuing will delete all data from ./machine-1.hdd!

 * Is this ok for you? [y/N] y
Formatting './machine-1.hdd', fmt=raw size=5368709120 
0 @0x168: 63 @4 (0x4)
 - 0x168: 32 (0x20) @ 4 (0x4)
 - 0x16A: 31 (0x1F) @ 36 (0x24)
using 2 blocks, 4 bytes (146 free)
using sectors of 2^9 = 512 bytes
1+0 records in
1+0 records out
512 bytes (512 B) copied, 0.0311318 s, 16.4 kB/s
64+0 records in
64+0 records out
64 bytes (64 B) copied, 0.000105311 s, 608 kB/s
BLKRRPART: Invalid argument
 * Running mkfs.ext4  on /dev/mapper/loop0p1
[..]

I suppose, "BLKRRPART: Invalid argument" is not expected?

image building on jessie failing

Version:

dpkg -l | grep grml-debootstrap
ii  grml-debootstrap                      0.66                              all          wrapper around debootstrap for installing pure Debian

Full log:

user@debian:~$ sudo bash -x grml-debootstrap \
>    --arch i386 \
>    --filesystem ext4 \
>    --force \
>    --hostname host \
>    --mirror http://ftp.us.debian.org/debian \
>    --keep_src_list \
>    --password changeme \
>    --release jessie \
>    --verbose \
>    --debug \
>    --vmfile \
>    --vmsize 1G \
>    --config /etc/debootstrap/config \
>    --target ./test.img
++ basename grml-debootstrap
+ PN=grml-debootstrap
++ dpkg-query --show '--showformat=${Version}' grml-debootstrap
+ VERSION=0.66
+ VERSION=0.66
+ MNTPOINT=/mnt/debootstrap.1838
+ '[' -n '' ']'
+ CHROOT_SCRIPTS=yes
+ '[' -n '' ']'
+ CONFFILES=/etc/debootstrap
+ '[' -n '' ']'
+ DEBCONF=yes
+ '[' -n '' ']'
+ DEBIAN_FRONTEND=noninteractive
+ '[' -n '' ']'
+ DEBOOTSTRAP=debootstrap
+ '[' -n '' ']'
+ DEFAULT_LOCALES=en_US.UTF-8
+ '[' -n '' ']'
+ DEFAULT_LANGUAGE=en_US:en
+ '[' -n '' ']'
+ EXTRAPACKAGES=yes
+ '[' -n '' ']'
+ FALLBACK_MIRROR=http://http.debian.net/debian
+ '[' -n '' ']'
+ FORCE=
+ '[' -n debian ']'
+ '[' -n '' ']'
+ INITRD=yes
+ '[' -n '' ']'
+ INSTALL_NOTES=/etc/debootstrap/install_notes
+ '[' -n '' ']'
+ LOCALES=yes
+ '[' -n '' ']'
+ MIRROR=http://http.debian.net/debian
+ '[' -n '' ']'
+ MKFS=mkfs.ext4
+ '[' -n '' ']'
+ PACKAGES=yes
+ '[' -n '' ']'
+ PRE_SCRIPTS=yes
+ '[' -n '' ']'
+ RECONFIGURE=console-data
+ '[' -n '' ']'
+ RELEASE=wheezy
+ '[' -n '' ']'
+ RM_APTCACHE=yes
+ '[' -n '' ']'
+ SCRIPTS=yes
+ '[' -n '' ']'
+ SECURE=yes
+ '[' -n '' ']'
+ TIMEZONE=Europe/Vienna
+ '[' -n '' ']'
+ TUNE2FS='tune2fs -c0 -i0'
+ '[' -n '' ']'
+ UPGRADE_SYSTEM=yes
+ '[' -n '' ']'
+ VMSIZE=2G
+ '[' -n '' ']'
+ FIXED_DISK_IDENTIFIERS=no
+ export LANG=C
+ LANG=C
+ export LC_ALL=C
+ LC_ALL=C
+ INTERACTIVE=
+ '[' --arch = -h ']'
+ '[' --arch = -help ']'
+ '[' --arch = --help ']'
+ GOOD=''
+ WARN=''
+ BAD=''
+ NORMAL=''
+ HILITE=''
+ BRACKET=''
+ trap bailout HUP INT QUIT TERM
+ check4progs debootstrap
+ local RC=
+ for arg in '$*'
+ which debootstrap
+ '[' -n '' ']'
+ '[' -r /etc/debootstrap/config ']'
+ . /etc/debootstrap/config
+ '[' -r ./cmdlineopts.clp ']'
+ '[' -r /usr/share/grml-debootstrap/functions/cmdlineopts.clp ']'
+ . /usr/share/grml-debootstrap/functions/cmdlineopts.clp
++ CMDLINE_OPTS=mirror:,iso:,release:,target:,mntpoint:,debopt:,defaultinterfaces,interactive,nodebootstrap,nointerfaces,nokernel,nopackages,filesystem:,config:,confdir:,packages:,chroot-scripts:,scripts:,pre-scripts:,debconf:,vm,vmfile,vmsize:,keep_src_list,hostname:,password:,nopassword,grmlrepos,backportrepos,bootappend:,grub:,arch:,insecure,verbose,help,version,force,debug
+++ getopt --name grml-debootstrap -o +m:i:r:t:p:c:d:vhV --long mirror:,iso:,release:,target:,mntpoint:,debopt:,defaultinterfaces,interactive,nodebootstrap,nointerfaces,nokernel,nopackages,filesystem:,config:,confdir:,packages:,chroot-scripts:,scripts:,pre-scripts:,debconf:,vm,vmfile,vmsize:,keep_src_list,hostname:,password:,nopassword,grmlrepos,backportrepos,bootappend:,grub:,arch:,insecure,verbose,help,version,force,debug -- --arch i386 --filesystem ext4 --force --hostname host --mirror http://ftp.us.debian.org/debian --keep_src_list --password changeme --release jessie --verbose --debug --vmfile --vmsize 1G --config /etc/debootstrap/config --target ./test.img
++ _opt_temp=' --arch '\''i386'\'' --filesystem '\''ext4'\'' --force --hostname '\''host'\'' --mirror '\''http://ftp.us.debian.org/debian'\'' --keep_src_list --password '\''changeme'\'' --release '\''jessie'\'' --verbose --debug --vmfile --vmsize '\''1G'\'' --config '\''/etc/debootstrap/config'\'' --target '\''./test.img'\'' --'
++ '[' 0 '!=' 0 ']'
++ eval set -- ' --arch '\''i386'\'' --filesystem '\''ext4'\'' --force --hostname '\''host'\'' --mirror '\''http://ftp.us.debian.org/debian'\'' --keep_src_list --password '\''changeme'\'' --release '\''jessie'\'' --verbose --debug --vmfile --vmsize '\''1G'\'' --config '\''/etc/debootstrap/config'\'' --target '\''./test.img'\'' --'
+++ set -- --arch i386 --filesystem ext4 --force --hostname host --mirror http://ftp.us.debian.org/debian --keep_src_list --password changeme --release jessie --verbose --debug --vmfile --vmsize 1G --config /etc/debootstrap/config --target ./test.img --
++ :
++ case "$1" in
++ shift
++ _opt_arch=i386
++ shift
++ :
++ case "$1" in
++ shift
++ _opt_filesystem=ext4
++ shift
++ :
++ case "$1" in
++ _opt_force=T
++ shift
++ :
++ case "$1" in
++ shift
++ _opt_hostname=host
++ shift
++ :
++ case "$1" in
++ shift
++ _opt_mirror=http://ftp.us.debian.org/debian
++ shift
++ :
++ case "$1" in
++ _opt_keep_src_list=T
++ shift
++ :
++ case "$1" in
++ shift
++ _opt_password=changeme
++ shift
++ :
++ case "$1" in
++ shift
++ _opt_release=jessie
++ shift
++ :
++ case "$1" in
++ '[' '' ']'
++ _opt_verbose=1
++ shift
++ :
++ case "$1" in
++ _opt_debug=T
++ shift
++ :
++ case "$1" in
++ _opt_vmfile=T
++ shift
++ :
++ case "$1" in
++ shift
++ _opt_vmsize=1G
++ shift
++ :
++ case "$1" in
++ shift
++ _opt_config=/etc/debootstrap/config
++ shift
++ :
++ case "$1" in
++ shift
++ _opt_target=./test.img
++ shift
++ :
++ case "$1" in
++ shift
++ break
+ '[' '' ']'
+ '[' http://ftp.us.debian.org/debian ']'
+ MIRROR=http://ftp.us.debian.org/debian
+ '[' '' ']'
+ '[' jessie ']'
+ RELEASE=jessie
+ '[' ./test.img ']'
+ TARGET=./test.img
+ '[' '' ']'
+ '[' T ']'
+ VMFILE=1
+ VIRTUAL=1
+ '[' 1G ']'
+ VMSIZE=1G
+ '[' '' ']'
+ '[' '' ']'
+ '[' '' ']'
+ '[' /etc/debootstrap/config ']'
+ CONFIGFILE=/etc/debootstrap/config
+ '[' ext4 ']'
+ MKFS=mkfs.ext4
+ '[' '' ']'
+ '[' '' ']'
+ '[' '' ']'
+ '[' '' ']'
+ '[' '' ']'
+ '[' '' ']'
+ '[' T ']'
+ KEEP_SRC_LIST=yes
+ '[' '' ']'
+ '[' '' ']'
+ '[' host ']'
+ HOSTNAME=host
+ '[' changeme ']'
+ ROOTPASSWORD=changeme
+ '[' '' ']'
+ '[' '' ']'
+ '[' '' ']'
+ '[' '' ']'
+ '[' '' ']'
+ '[' '' ']'
+ '[' i386 ']'
+ ARCH=i386
+ '[' '' ']'
+ '[' T ']'
+ FORCE=T
+ '[' 1 ']'
+ VERBOSE=-v
+ '[' T ']'
+ DEBUG=true
+ '[' true = true ']'
+ set -x
+ '[' '' ']'
+ '[' '' ']'
+ check4root
++ id -u
+ '[' 0 '!=' 0 ']'
+ '[' -n 1 ']'
+ check4progs kpartx mksh parted qemu-img
+ local RC=
+ for arg in '$*'
+ which kpartx
+ for arg in '$*'
+ which mksh
+ for arg in '$*'
+ which parted
+ for arg in '$*'
+ which qemu-img
+ '[' -n '' ']'
+ '[' -n /etc/debootstrap/config ']'
+ einfo 'Reading specified config file /etc/debootstrap/config.'
+ einfon 'Reading specified config file /etc/debootstrap/config.\n'
+ '[' '' '!=' yes ']'
+ '[' '' = ebegin ']'
+ printf ' * Reading specified config file /etc/debootstrap/config.\n'
 * Reading specified config file /etc/debootstrap/config.
+ LAST_E_CMD=einfon
+ return 0
+ return 0
+ . /etc/debootstrap/config
+ '[' -n '' ']'
+ grep -q '^hd'
+ echo ''
+ '[' -z ./test.img -o -n '' ']'
+ '[' -n i386 ']'
+ ARCHCMD='--arch i386'
+ ARCHINFO=' (i386)'
++ uname -m
+ CURRENT_ARCH=x86_64
+ '[' x86_64 '!=' x86_64 ']'
+ checkconfiguration
+ '[' -n '' ']'
+ '[' -n '' ']'
+ einfo 'grml-debootstrap [0.66] - Please recheck configuration before execution:'
+ einfon 'grml-debootstrap [0.66] - Please recheck configuration before execution:\n'
+ '[' '' '!=' yes ']'
+ '[' einfon = ebegin ']'
+ printf ' * grml-debootstrap [0.66] - Please recheck configuration before execution:\n'
 * grml-debootstrap [0.66] - Please recheck configuration before execution:
+ LAST_E_CMD=einfon
+ return 0
+ return 0
+ echo

+ echo '   Target:          ./test.img'
   Target:          ./test.img
+ case "$MNTPOINT" in
+ '[' -n 1 ']'
+ echo '   Install grub:    yes'
   Install grub:    yes
+ '[' -n jessie ']'
+ echo '   Using release:   jessie'
   Using release:   jessie
+ '[' -n host ']'
+ echo '   Using hostname:  host'
   Using hostname:  host
+ '[' -n http://ftp.us.debian.org/debian ']'
+ echo '   Using mirror:    http://ftp.us.debian.org/debian'
   Using mirror:    http://ftp.us.debian.org/debian
+ '[' -n '' ']'
+ '[' -n i386 ']'
+ echo '   Using arch:      i386'
   Using arch:      i386
+ '[' -n 1 ']'
+ echo '   Deploying as Virtual Machine.'
   Deploying as Virtual Machine.
+ '[' -n 1G -a -n 1 ']'
+ echo '   Using Virtual Disk file with size of 1G.'
   Using Virtual Disk file with size of 1G.
+ '[' '!' -t 0 -a -z changeme -a -z '' ']'
+ echo

+ echo '   Important! Continuing will delete all data from ./test.img!'
   Important! Continuing will delete all data from ./test.img!
+ '[' -n T ']'
+ einfo 'Skip user acknowledgement as requested via --force option.'
+ einfon 'Skip user acknowledgement as requested via --force option.\n'
+ '[' '' '!=' yes ']'
+ '[' einfon = ebegin ']'
+ printf ' * Skip user acknowledgement as requested via --force option.\n'
 * Skip user acknowledgement as requested via --force option.
+ LAST_E_CMD=einfon
+ return 0
+ return 0
+ '[' -n ./test.img ']'
+ SHORT_TARGET=test.img
+ '[' -z '' ']'
+ STAGES=/var/cache/grml-debootstrap/stages_test.img
+ '[' -d /var/cache/grml-debootstrap/stages_test.img ']'
+ mkdir -p /var/cache/grml-debootstrap/stages_test.img
+ '[' -r /var/cache/grml-debootstrap/stages_test.img/grml-debootstrap ']'
+ PARTITION=
+ DIRECTORY=
+ '[' -b ./test.img ']'
+ '[' -n 1 ']'
+ PARTITION=1
+ '[' -n '' ']'
+ ISODIR=
+ ISODIR=
+ '[' -n '' ']'
+ for i in prepare_vm mkfs tunefs mount_target debootstrap_system preparechroot execute_pre_scripts chrootscript execute_scripts umount_chroot finalize_vm fscktool
+ stage prepare_vm
+ '[' -n '' ']'
+ grep -q done /var/cache/grml-debootstrap/stages_test.img/prepare_vm
+ prepare_vm
+ '[' -z 1 ']'
+ '[' -b ./test.img -a -n 1 ']'
+ '[' '!' -b ./test.img -a -z 1 ']'
+ ORIG_TARGET=./test.img
+ '[' -n 1 ']'
+ qemu-img create -f raw ./test.img 1G
Formatting './test.img', fmt=raw size=1073741824 
+ dd of=./test.img conv=notrunc
+ /usr/share/grml-debootstrap/bootgrub.mksh -A
+ echo 4 66
0 @0x168: 63 @4 (0x4)
 - 0x168: 32 (0x20) @ 4 (0x4)
 - 0x16A: 31 (0x1F) @ 36 (0x24)
using 2 blocks, 4 bytes (146 free)
using sectors of 2^9 = 512 bytes
1+0 records in
1+0 records out
512 bytes (512 B) copied, 0.0182895 s, 28.0 kB/s
+ dd if=/dev/zero bs=1 conv=notrunc count=64 seek=446 of=./test.img
64+0 records in
64+0 records out
64 bytes (64 B) copied, 0.000309106 s, 207 kB/s
+ '[' no = yes ']'
+ parted -s ./test.img 'mkpart primary ext4 2M -1'
+ kpartx -av ./test.img
+ grep -q device-mapper /proc/misc
+ losetup -f
++ kpartx -av ./test.img
+ DEVINFO='add map loop0p1 (254:0): 0 2091008 linear /dev/loop0 4096'
+ '[' -z 'add map loop0p1 (254:0): 0 2091008 linear /dev/loop0 4096' ']'
++ sed 's/.* linear //; s/ [[:digit:]]*//'
++ echo add map loop0p1 '(254:0):' 0 2091008 linear /dev/loop0 4096
+ LOOP=/dev/loop0
++ sed -e 's/.* (\(.*:.*\)).*/\1/'
++ echo 'add map loop0p1 (254:0): 0 2091008 linear /dev/loop0 4096'
+ BLOCKDEV=254:0
++ sed 's/ .*//'
++ echo loop0p1 '(254:0):' 0 2091008 linear /dev/loop0 4096
+ LOOP_PART=loop0p1
+ export TARGET=/dev/mapper/loop0p1
+ TARGET=/dev/mapper/loop0p1
+ blockdev --rereadpt /dev/loop0
BLKRRPART: Invalid argument
+ '[' -z /dev/mapper/loop0p1 ']'
+ stage prepare_vm done
+ '[' -n done ']'
+ echo done
+ return 0
+ rm -f /var/cache/grml-debootstrap/stages_test.img/prepare_vm
+ for i in prepare_vm mkfs tunefs mount_target debootstrap_system preparechroot execute_pre_scripts chrootscript execute_scripts umount_chroot finalize_vm fscktool
+ stage mkfs
+ '[' -n '' ']'
+ grep -q done /var/cache/grml-debootstrap/stages_test.img/mkfs
+ mkfs
+ '[' -n '' ']'
+ grep -q /dev/mapper/loop0p1 /proc/mounts
+ '[' -n mkfs.ext4 ']'
+ einfo 'Running mkfs.ext4 on /dev/mapper/loop0p1'
+ einfon 'Running mkfs.ext4 on /dev/mapper/loop0p1\n'
+ '[' '' '!=' yes ']'
+ '[' einfon = ebegin ']'
+ printf ' * Running mkfs.ext4 on /dev/mapper/loop0p1\n'
 * Running mkfs.ext4 on /dev/mapper/loop0p1
+ LAST_E_CMD=einfon
+ return 0
+ return 0
+ mkfs.ext4 /dev/mapper/loop0p1
mke2fs 1.42.12 (29-Aug-2014)
The file /dev/mapper/loop0p1 does not exist and no size was specified.
+ RC=1
+ '[' no = yes ']'
+ grep -q /dev/md
+ echo /dev/mapper/loop0p1
+ '[' -n 1 ']'
+ sleep 2
++ blkid -o udev /dev/mapper/loop0p1
+ eval
+ '[' -n '' ']'
+ TARGET_UUID=
+ eend 1
+ local retval=1
+ shift
+ '[' 1 -gt 0 ']'
+ printf ' -> Failed (rc=1)\n'
 -> Failed (rc=1)
+ return 1
+ bailout 2 mkfs
+ cleanup
+ '[' -n '' ']'
+ '[' -n /var/cache/grml-debootstrap/stages_test.img ']'
+ einfo 'Removing /var/cache/grml-debootstrap/stages_test.img'
+ einfon 'Removing /var/cache/grml-debootstrap/stages_test.img\n'
+ '[' '' '!=' yes ']'
+ '[' einfon = ebegin ']'
+ printf ' * Removing /var/cache/grml-debootstrap/stages_test.img\n'
 * Removing /var/cache/grml-debootstrap/stages_test.img
+ LAST_E_CMD=einfon
+ return 0
+ return 0
+ rmdir /var/cache/grml-debootstrap/stages_test.img
+ eend 0
+ local retval=0
+ shift
+ '[' 0 -gt 0 ']'
+ return 0
+ grep -q '/mnt/debootstrap\.'
+ echo /mnt/debootstrap.1838
+ rmdir /mnt/debootstrap.1838
+ '[' -n /mnt/debootstrap.1838 ']'
+ grep -q /mnt/debootstrap.1838 /proc/mounts
+ '[' -n ./test.img ']'
+ einfo 'Removing loopback mount of file ./test.img.'
+ einfon 'Removing loopback mount of file ./test.img.\n'
+ '[' '' '!=' yes ']'
+ '[' einfon = ebegin ']'
+ printf ' * Removing loopback mount of file ./test.img.\n'
 * Removing loopback mount of file ./test.img.
+ LAST_E_CMD=einfon
+ return 0
+ return 0
+ kpartx -d ./test.img
loop deleted : /dev/loop0
+ eend 0
+ local retval=0
+ shift
+ '[' 0 -gt 0 ']'
+ return 0
+ '[' -n 2 ']'
+ EXIT=2
+ '[' -n mkfs ']'
+ einfo 'Notice: remove /var/cache/grml-debootstrap/stages_test.img/mkfs to reexecute the stage'
+ einfon 'Notice: remove /var/cache/grml-debootstrap/stages_test.img/mkfs to reexecute the stage\n'
+ '[' '' '!=' yes ']'
+ '[' einfon = ebegin ']'
+ printf ' * Notice: remove /var/cache/grml-debootstrap/stages_test.img/mkfs to reexecute the stage\n'
 * Notice: remove /var/cache/grml-debootstrap/stages_test.img/mkfs to reexecute the stage
+ LAST_E_CMD=einfon
+ return 0
+ return 0
+ exit 2
user@debian:~$ 

CVE-2015-1378 / Git HEAD: Issues with sourcing cmdlineopts.clp from current working directory

The current code is sourcing cmdlineopts.clp from the directory that grml-debootstrap is executed from:

...
# cmdline handling {{{
# source external command line parameter-processing script
if [ -r ./cmdlineopts.clp ] ; then
   . ./cmdlineopts.clp
elif [ -r /usr/share/grml-debootstrap/functions/cmdlineopts.clp ] ; then
   . /usr/share/grml-debootstrap/functions/cmdlineopts.clp
else
   eerror "Error: cmdline function file not found, exiting."
   eend 1
   bailout 1
fi
...

To demonstrate it:

$ echo "echo Hello; exit 123" > cmdlineopts.clp 
$ sudo grml-debootstrap ; echo $?
Hello
123

Before sourcing that file, grml-debootstrap should check if the current working directory is writable to non-root users and deny sourcing if so.

Prevent script type mix-up damage by checking for use of "MNTPOINT"

Somewhat related to #52, consider the consequences of the user mixing up --(pre-)scripts with --chroot-scripts. The scripts are run as root, so e.g. applying the chroot script on the outside production system by mistake could result in serious damage.

I would like to propose checking these scripts for MNTPOINT, $MNTPOINT, ${MNTPOINT} rather early in the process. For grml-debootstrap to continue operation, chroot script must contain matches while pre and post scripts must not.

What do you think?

grub root=/dev/mapper/loop0p1

I'm running grml-debootstrap as follows:

RELEASE=jessie

sudo http_proxy=http://localhost:3142/ \
     grml-debootstrap \
     --release $RELEASE \
     --hostname machinekit \
     --bootappend "xeno_hal.smi=1 lapic=notscdeadline hpet=disable i915.i915_enable_rc6=0 i915.powersave=0 intel_idle.max_cstate=1 processor.max_cstate=1 isolcpus=1 idle=poll" \
     --mirror http://ftp.de.debian.org/debian \
     --vmfile --target machinekit-$RELEASE.img \
     --vmsize 4G \
     --scripts $RELEASE/scripts \
     --chroot-scripts $RELEASE/chroot-scripts \
     --force \
     --password mk \
     --nokernel \
     --defaultinterfaces

When I boot the image in qemu, there is root=/dev/mapper/loop0p1 and the kernel does not boot
20150530-001

When I set root=/dev/sda1 during grub boot, the kernel boots, when I run sudo update-grub inside the qemu instance, the entry becomes root=UUID=... and the image boots.

Git HEAD: Leaves (or leaks) folder /etc/debootstrap/ to resulting system

Looking at the code confirms all these files have been copied by grml-debootstrap. It seems they never get cleaned up. It would be cool to have a switch to toggle removal or to have them removed by default.
Depending on the content the files and the person you hand the machine over to, this may include leaking information.

# find /etc/debootstrap/ | sort
/etc/debootstrap/
/etc/debootstrap/chroot-scripts
/etc/debootstrap/chroot-scripts/foo.sh
/etc/debootstrap/chroot-scripts/bar.sh
/etc/debootstrap/config
/etc/debootstrap/extrapackages
/etc/debootstrap/packages
/etc/debootstrap/stages
/etc/debootstrap/stages/backportrepos
/etc/debootstrap/stages/chrootmirror
/etc/debootstrap/stages/custom_scripts
/etc/debootstrap/stages/default_locales
/etc/debootstrap/stages/extrapackages
/etc/debootstrap/stages/fstab
/etc/debootstrap/stages/grmlrepos
/etc/debootstrap/stages/grub_install
/etc/debootstrap/stages/hostname
/etc/debootstrap/stages/hosts
/etc/debootstrap/stages/initrd
/etc/debootstrap/stages/kernel
/etc/debootstrap/stages/kernelimg_conf
/etc/debootstrap/stages/packages
/etc/debootstrap/stages/passwords
/etc/debootstrap/stages/reconfigure
/etc/debootstrap/stages/remove_apt_cache
/etc/debootstrap/stages/remove_chrootmirror
/etc/debootstrap/stages/services
/etc/debootstrap/stages/timezone
/etc/debootstrap/stages/upgrade_system

Provide tests

We should provide a decent test suite so we can verify that all the supported releases and features are actually known to be working.

--nopackages clashes with update-locale?

When using --nopackages, update-locale will not be executed.

Warning: update-locale executable not available (no locales package installed?)

I am wondering if this is surprising and should be considered a bug?

(The image build failing is unrelated, related to --nopackages though, that is #40.)

Full log:

tester@debian:~$ pp
+ export http_proxy=http://192.168.2.100:3142
+ http_proxy=http://192.168.2.100:3142
+ set +x
tester@debian:~$ sudo -E bash -x \
>    grml-debootstrap \
>          --debug \
>          --verbose \
>          --debopt --verbose \
>          --arch i386 \
>          --filesystem ext4 \
>          --force \
>          --hostname host \
>          --mirror http://ftp.us.debian.org/debian \
>          --keep_src_list \
>          --password changeme \
>          --release jessie \
>          --verbose \
>          --vmfile \
>          --vmsize "$VMSIZE" \
>          --nopackages \
>          --target "./test.raw"
+ set -o pipefail
+ '[' -n '' ']'
+ REPORT_TRAP_ERR=no
+ '[' -n '' ']'
+ FAIL_TRAP_ERR=no
+ trap error_handler ERR
+ export -f error_handler
++ basename grml-debootstrap
+ PN=grml-debootstrap
++ dpkg-query --show '--showformat=${Version}' grml-debootstrap
+ VERSION=0.67
+ VERSION=0.67
+ MNTPOINT=/mnt/debootstrap.20268
+ '[' -n '' ']'
+ CHROOT_SCRIPTS=yes
+ '[' -n '' ']'
+ CONFFILES=/etc/debootstrap
+ '[' -n '' ']'
+ DEBCONF=yes                                                                                                                                                                       
+ '[' -n '' ']'
+ DEBIAN_FRONTEND=noninteractive
+ '[' -n '' ']'
+ DEBOOTSTRAP=debootstrap
+ '[' -n '' ']'
+ DEFAULT_LOCALES=en_US.UTF-8
+ '[' -n '' ']'
+ DEFAULT_LANGUAGE=en_US:en
+ '[' -n '' ']'
+ EXTRAPACKAGES=yes
+ '[' -n '' ']'
+ FALLBACK_MIRROR=http://http.debian.net/debian
+ '[' -n '' ']'
+ FORCE=
+ '[' -n debian ']'
+ '[' -n '' ']'
+ INITRD=yes
+ '[' -n '' ']'
+ INSTALL_NOTES=/etc/debootstrap/install_notes
+ '[' -n '' ']'
+ LOCALES=yes
+ '[' -n '' ']'
+ MIRROR=http://http.debian.net/debian
+ '[' -n '' ']'
+ MKFS=mkfs.ext4
+ '[' -n '' ']'
+ PACKAGES=yes
+ '[' -n '' ']'
+ PRE_SCRIPTS=yes
+ '[' -n '' ']'
+ RECONFIGURE=console-data
+ '[' -n '' ']'
+ RELEASE=wheezy
+ '[' -n '' ']'
+ RM_APTCACHE=yes
+ '[' -n '' ']'
+ SCRIPTS=yes
+ '[' -n '' ']'
+ SECURE=yes
+ '[' -n '' ']'
+ TIMEZONE=Europe/Vienna
+ '[' -n '' ']'
+ TUNE2FS='tune2fs -c0 -i0'
+ '[' -n '' ']'
+ UPGRADE_SYSTEM=yes
+ '[' -n '' ']'
+ VMSIZE=2G
+ '[' -n '' ']'
+ FIXED_DISK_IDENTIFIERS=no
+ export LANG=C
+ LANG=C
+ export LC_ALL=C
+ LC_ALL=C
+ INTERACTIVE=
+ '[' --debug = -h ']'
+ '[' --debug = -help ']'
+ '[' --debug = --help ']'
+ GOOD=''
+ WARN=''
+ BAD=''
+ NORMAL=''
+ HILITE=''
+ BRACKET=''
+ trap bailout HUP INT QUIT TERM
+ check4progs debootstrap
+ trap error_handler ERR
+ local RC=
+ for arg in '$*'
+ which debootstrap
+ '[' -n '' ']'
+ '[' -r /etc/debootstrap/config ']'
+ . /etc/debootstrap/config
+ '[' -r ./cmdlineopts.clp ']'
+ '[' -r /usr/share/grml-debootstrap/functions/cmdlineopts.clp ']'
+ . /usr/share/grml-debootstrap/functions/cmdlineopts.clp
++ CMDLINE_OPTS=mirror:,iso:,release:,target:,mntpoint:,debopt:,defaultinterfaces,interactive,nodebootstrap,nointerfaces,nokernel,nopackages,filesystem:,config:,confdir:,packages:,chroot-scripts:,scripts:,pre-scripts:,debconf:,vm,vmfile,vmsize:,keep_src_list,hostname:,password:,nopassword,grmlrepos,backportrepos,bootappend:,grub:,arch:,insecure,verbose,help,version,force,debug
+++ getopt --name grml-debootstrap -o +m:i:r:t:p:c:d:vhV --long mirror:,iso:,release:,target:,mntpoint:,debopt:,defaultinterfaces,interactive,nodebootstrap,nointerfaces,nokernel,nopackages,filesystem:,config:,confdir:,packages:,chroot-scripts:,scripts:,pre-scripts:,debconf:,vm,vmfile,vmsize:,keep_src_list,hostname:,password:,nopassword,grmlrepos,backportrepos,bootappend:,grub:,arch:,insecure,verbose,help,version,force,debug -- --debug --verbose --debopt --verbose --arch i386 --filesystem ext4 --force --hostname host --mirror http://ftp.us.debian.org/debian --keep_src_list --password changeme --release jessie --verbose --vmfile --vmsize '' --nopackages --target ./test.raw
++ _opt_temp=' --debug --verbose --debopt '\''--verbose'\'' --arch '\''i386'\'' --filesystem '\''ext4'\'' --force --hostname '\''host'\'' --mirror '\''http://ftp.us.debian.org/debian'\'' --keep_src_list --password '\''changeme'\'' --release '\''jessie'\'' --verbose --vmfile --vmsize '\'''\'' --nopackages --target '\''./test.raw'\'' --'
++ '[' 0 '!=' 0 ']'
++ eval set -- ' --debug --verbose --debopt '\''--verbose'\'' --arch '\''i386'\'' --filesystem '\''ext4'\'' --force --hostname '\''host'\'' --mirror '\''http://ftp.us.debian.org/debian'\'' --keep_src_list --password '\''changeme'\'' --release '\''jessie'\'' --verbose --vmfile --vmsize '\'''\'' --nopackages --target '\''./test.raw'\'' --'
+++ set -- --debug --verbose --debopt --verbose --arch i386 --filesystem ext4 --force --hostname host --mirror http://ftp.us.debian.org/debian --keep_src_list --password changeme --release jessie --verbose --vmfile --vmsize '' --nopackages --target ./test.raw --
++ :
++ case "$1" in
++ _opt_debug=T
++ shift
++ :
++ case "$1" in
++ '[' '' ']'
++ _opt_verbose=1
++ shift
++ :
++ case "$1" in
++ shift
++ _opt_debopt=--verbose
++ shift
++ :
++ case "$1" in
++ shift
++ _opt_arch=i386
++ shift
++ :
++ case "$1" in
++ shift
++ _opt_filesystem=ext4
++ shift
++ :
++ case "$1" in
++ _opt_force=T
++ shift
++ :
++ case "$1" in
++ shift
++ _opt_hostname=host
++ shift
++ :
++ case "$1" in
++ shift
++ _opt_mirror=http://ftp.us.debian.org/debian
++ shift
++ :
++ case "$1" in
++ _opt_keep_src_list=T
++ shift
++ :
++ case "$1" in
++ shift
++ _opt_password=changeme
++ shift
++ :
++ case "$1" in
++ shift
++ _opt_release=jessie
++ shift
++ :
++ case "$1" in
++ '[' 1 ']'
+++ expr 1 + 1
++ _opt_verbose=2
++ shift
++ :
++ case "$1" in
++ _opt_vmfile=T
++ shift
++ :
++ case "$1" in
++ shift
++ _opt_vmsize=
++ shift
++ :
++ case "$1" in
++ _opt_nopackages=T
++ shift
++ :
++ case "$1" in
++ shift
++ _opt_target=./test.raw
++ shift
++ :
++ case "$1" in
++ shift
++ break
+ '[' '' ']'
+ '[' http://ftp.us.debian.org/debian ']'
+ MIRROR=http://ftp.us.debian.org/debian
+ '[' '' ']'
+ '[' jessie ']'
+ RELEASE=jessie
+ '[' ./test.raw ']'
+ TARGET=./test.raw
+ '[' '' ']'
+ '[' T ']'
+ VMFILE=1
+ VIRTUAL=1
+ '[' '' ']'
+ '[' '' ']'
+ '[' --verbose ']'
+ DEBOOTSTRAP_OPT=--verbose
+ '[' '' ']'
+ '[' '' ']'
+ '[' ext4 ']'
+ MKFS=mkfs.ext4
+ '[' '' ']'
+ '[' T ']'
+ PACKAGES=
+ '[' '' ']'
+ '[' '' ']'
+ '[' '' ']'
+ '[' '' ']'
+ '[' T ']'
+ KEEP_SRC_LIST=yes
+ '[' '' ']'
+ '[' '' ']'
+ '[' host ']'
+ HOSTNAME=host
+ '[' changeme ']'
+ ROOTPASSWORD=changeme
+ '[' '' ']'
+ '[' '' ']'
+ '[' '' ']'
+ '[' '' ']'
+ '[' '' ']'
+ '[' '' ']'
+ '[' i386 ']'
+ ARCH=i386
+ '[' '' ']'
+ '[' T ']'
+ FORCE=T
+ '[' 2 ']'
+ VERBOSE=-v
+ '[' T ']'
+ DEBUG=true
+ '[' true = true ']'
+ set -x
+ '[' '' ']'
+ '[' '' ']'
+ check4root
+ trap error_handler ERR
++ id -u
+ '[' 0 '!=' 0 ']'
+ '[' -n 1 ']'
+ check4progs kpartx mksh parted qemu-img
+ trap error_handler ERR
+ local RC=
+ for arg in '$*'
+ which kpartx
+ for arg in '$*'
+ which mksh
+ for arg in '$*'
+ which parted
+ for arg in '$*'
+ which qemu-img
+ '[' -n '' ']'
+ '[' -n '' ']'
+ '[' -n '' ']'
+ grep -q '^hd'
+ echo ''
+ '[' -z ./test.raw -o -n '' ']'
+ '[' -n i386 ']'
+ ARCHCMD='--arch i386'
+ ARCHINFO=' (i386)'
++ uname -m
+ CURRENT_ARCH=i686
+ '[' i686 '!=' x86_64 ']'
+ '[' i386 = amd64 ']'
+ checkconfiguration
+ trap error_handler ERR
+ '[' -n '' ']'
+ '[' -n '' ']'
+ einfo 'grml-debootstrap [0.67] - Please recheck configuration before execution:'
+ trap error_handler ERR
+ einfon 'grml-debootstrap [0.67] - Please recheck configuration before execution:\n'
+ trap error_handler ERR
+ '[' '' '!=' yes ']'
+ '[' '' = ebegin ']'
+ printf ' * grml-debootstrap [0.67] - Please recheck configuration before execution:\n'
 * grml-debootstrap [0.67] - Please recheck configuration before execution:
+ LAST_E_CMD=einfon
+ return 0
+ return 0
+ echo

+ echo '   Target:          ./test.raw'
   Target:          ./test.raw
+ case "$MNTPOINT" in
+ '[' -n 1 ']'
+ echo '   Install grub:    yes'
   Install grub:    yes
+ '[' -n jessie ']'
+ echo '   Using release:   jessie'
   Using release:   jessie
+ '[' -n host ']'
+ echo '   Using hostname:  host'
   Using hostname:  host
+ '[' -n http://ftp.us.debian.org/debian ']'
+ echo '   Using mirror:    http://ftp.us.debian.org/debian'
   Using mirror:    http://ftp.us.debian.org/debian
+ '[' -n '' ']'
+ '[' -n i386 ']'
+ echo '   Using arch:      i386'
   Using arch:      i386
+ '[' -n 1 ']'
+ echo '   Deploying as Virtual Machine.'
   Deploying as Virtual Machine.
+ '[' -n 2G -a -n 1 ']'
+ echo '   Using Virtual Disk file with size of 2G.'
   Using Virtual Disk file with size of 2G.
+ '[' '!' -t 0 -a -z changeme -a -z '' ']'
+ echo

+ echo '   Important! Continuing will delete all data from ./test.raw!'
   Important! Continuing will delete all data from ./test.raw!
+ '[' -n T ']'
+ einfo 'Skip user acknowledgement as requested via --force option.'
+ trap error_handler ERR
+ einfon 'Skip user acknowledgement as requested via --force option.\n'
+ trap error_handler ERR
+ '[' '' '!=' yes ']'
+ '[' einfon = ebegin ']'
+ printf ' * Skip user acknowledgement as requested via --force option.\n'
 * Skip user acknowledgement as requested via --force option.
+ LAST_E_CMD=einfon
+ return 0
+ return 0
+ '[' -n ./test.raw ']'
+ SHORT_TARGET=test.raw
+ '[' -z '' ']'
+ STAGES=/var/cache/grml-debootstrap/stages_test.raw
+ '[' -d /var/cache/grml-debootstrap/stages_test.raw ']'
+ mkdir -p /var/cache/grml-debootstrap/stages_test.raw
+ '[' -r /var/cache/grml-debootstrap/stages_test.raw/grml-debootstrap ']'
+ PARTITION=
+ DIRECTORY=
+ '[' -b ./test.raw ']'
+ '[' -n 1 ']'
+ PARTITION=1
+ '[' -n '' ']'
+ ISODIR=
+ ISODIR=
+ '[' -n '' ']'
+ for i in prepare_vm mkfs tunefs mount_target debootstrap_system preparechroot execute_pre_scripts chrootscript execute_scripts umount_chroot finalize_vm fscktool
+ stage prepare_vm
+ trap error_handler ERR
+ '[' -n '' ']'
+ grep -q done /var/cache/grml-debootstrap/stages_test.raw/prepare_vm
+ prepare_vm
+ trap error_handler ERR
+ '[' -z 1 ']'
+ '[' -b ./test.raw -a -n 1 ']'
+ '[' '!' -b ./test.raw -a -z 1 ']'
+ ORIG_TARGET=./test.raw
+ '[' -n 1 ']'
+ qemu-img create -f raw ./test.raw 2G
Formatting './test.raw', fmt=raw size=2147483648 
+ dd of=./test.raw conv=notrunc
+ /usr/share/grml-debootstrap/bootgrub.mksh -A
+ echo 4 66
0 @0x168: 63 @4 (0x4)
 - 0x168: 32 (0x20) @ 4 (0x4)
 - 0x16A: 31 (0x1F) @ 36 (0x24)
using 2 blocks, 4 bytes (146 free)
using sectors of 2^9 = 512 bytes
1+0 records in
1+0 records out
512 bytes (512 B) copied, 0.0226153 s, 22.6 kB/s
+ dd if=/dev/zero bs=1 conv=notrunc count=64 seek=446 of=./test.raw
64+0 records in
64+0 records out
64 bytes (64 B) copied, 0.000133818 s, 478 kB/s
+ '[' no = yes ']'
+ parted -s ./test.raw 'mkpart primary ext4 2M -1'
+ kpartx -av ./test.raw
+ grep -q device-mapper /proc/misc
+ losetup -f
++ kpartx -av ./test.raw
+ DEVINFO='add map loop2p1 (254:2): 0 4190208 linear /dev/loop2 4096'
+ '[' -z 'add map loop2p1 (254:2): 0 4190208 linear /dev/loop2 4096' ']'
++ sed 's/.* linear //; s/ [[:digit:]]*//'
++ echo add map loop2p1 '(254:2):' 0 4190208 linear /dev/loop2 4096
+ LOOP=/dev/loop2
++ sed -e 's/.* (\(.*:.*\)).*/\1/'
++ echo 'add map loop2p1 (254:2): 0 4190208 linear /dev/loop2 4096'
+ BLOCKDEV=254:2
++ sed 's/ .*//'
++ echo loop2p1 '(254:2):' 0 4190208 linear /dev/loop2 4096
+ LOOP_PART=loop2p1
+ export TARGET=/dev/mapper/loop2p1
+ TARGET=/dev/mapper/loop2p1
+ blockdev --rereadpt /dev/loop2
BLKRRPART: Invalid argument
+ '[' -z /dev/mapper/loop2p1 ']'
+ stage prepare_vm done
+ trap error_handler ERR
+ '[' -n done ']'
+ echo done
+ return 0
+ rm -f /var/cache/grml-debootstrap/stages_test.raw/prepare_vm
+ for i in prepare_vm mkfs tunefs mount_target debootstrap_system preparechroot execute_pre_scripts chrootscript execute_scripts umount_chroot finalize_vm fscktool
+ stage mkfs
+ trap error_handler ERR
+ '[' -n '' ']'
+ grep -q done /var/cache/grml-debootstrap/stages_test.raw/mkfs
+ mkfs
+ trap error_handler ERR
+ '[' -n '' ']'
+ grep -q /dev/mapper/loop2p1 /proc/mounts
+ '[' -n mkfs.ext4 ']'
+ einfo 'Running mkfs.ext4 on /dev/mapper/loop2p1'
+ trap error_handler ERR
+ einfon 'Running mkfs.ext4 on /dev/mapper/loop2p1\n'
+ trap error_handler ERR
+ '[' '' '!=' yes ']'
+ '[' einfon = ebegin ']'
+ printf ' * Running mkfs.ext4 on /dev/mapper/loop2p1\n'
 * Running mkfs.ext4 on /dev/mapper/loop2p1
+ LAST_E_CMD=einfon
+ return 0
+ return 0
+ mkfs.ext4 /dev/mapper/loop2p1
mke2fs 1.42.5 (29-Jul-2012)
Discarding device blocks: done                            
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
131072 inodes, 523776 blocks
26188 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=536870912
16 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done 

+ RC=0
+ '[' no = yes ']'
+ grep -q /dev/md
+ echo /dev/mapper/loop2p1
+ '[' -n 1 ']'
+ sleep 2
++ blkid -o udev /dev/mapper/loop2p1
+ eval ID_FS_UUID=641db42e-4a84-42eb-9df2-432a29f87a52 ID_FS_UUID_ENC=641db42e-4a84-42eb-9df2-432a29f87a52 ID_FS_TYPE=ext4
++ ID_FS_UUID=641db42e-4a84-42eb-9df2-432a29f87a52
++ ID_FS_UUID_ENC=641db42e-4a84-42eb-9df2-432a29f87a52
++ ID_FS_TYPE=ext4
+ '[' -n 641db42e-4a84-42eb-9df2-432a29f87a52 ']'
+ TARGET_UUID=641db42e-4a84-42eb-9df2-432a29f87a52
+ eend 0
+ trap error_handler ERR
+ local retval=0
+ shift
+ '[' 0 -gt 0 ']'
+ return 0
+ stage mkfs done
+ trap error_handler ERR
+ '[' -n done ']'
+ echo done
+ return 0
+ rm -f /var/cache/grml-debootstrap/stages_test.raw/mkfs
+ for i in prepare_vm mkfs tunefs mount_target debootstrap_system preparechroot execute_pre_scripts chrootscript execute_scripts umount_chroot finalize_vm fscktool
+ stage tunefs
+ trap error_handler ERR
+ '[' -n '' ']'
+ grep -q done /var/cache/grml-debootstrap/stages_test.raw/tunefs
+ tunefs
+ trap error_handler ERR
+ '[' -n 'tune2fs -c0 -i0' ']'
+ grep -q mkfs.ext
+ echo mkfs.ext4
+ einfo 'Disabling automatic filesystem check on /dev/mapper/loop2p1 via tune2fs'
+ trap error_handler ERR
+ einfon 'Disabling automatic filesystem check on /dev/mapper/loop2p1 via tune2fs\n'
+ trap error_handler ERR
+ '[' '' '!=' yes ']'
+ '[' einfon = ebegin ']'
+ printf ' * Disabling automatic filesystem check on /dev/mapper/loop2p1 via tune2fs\n'
 * Disabling automatic filesystem check on /dev/mapper/loop2p1 via tune2fs
+ LAST_E_CMD=einfon
+ return 0
+ return 0
+ tune2fs -c0 -i0 /dev/mapper/loop2p1
tune2fs 1.42.5 (29-Jul-2012)
Setting maximal mount count to -1
Setting interval between checks to 0 seconds
+ eend 0
+ trap error_handler ERR
+ local retval=0
+ shift
+ '[' 0 -gt 0 ']'
+ return 0
+ stage tunefs done
+ trap error_handler ERR
+ '[' -n done ']'
+ echo done
+ return 0
+ rm -f /var/cache/grml-debootstrap/stages_test.raw/tunefs
+ for i in prepare_vm mkfs tunefs mount_target debootstrap_system preparechroot execute_pre_scripts chrootscript execute_scripts umount_chroot finalize_vm fscktool
+ stage mount_target
+ trap error_handler ERR
+ '[' -n '' ']'
+ grep -q done /var/cache/grml-debootstrap/stages_test.raw/mount_target
+ mount_target
+ trap error_handler ERR
+ '[' -n '' ']'
+ grep -q /dev/mapper/loop2p1 /proc/mounts
+ '[' -d /mnt/debootstrap.20268 ']'
+ '[' -n 1 ']'
+ einfo 'Mounting /dev/mapper/loop2p1 to /mnt/debootstrap.20268'
+ trap error_handler ERR
+ einfon 'Mounting /dev/mapper/loop2p1 to /mnt/debootstrap.20268\n'
+ trap error_handler ERR
+ '[' '' '!=' yes ']'
+ '[' einfon = ebegin ']'
+ printf ' * Mounting /dev/mapper/loop2p1 to /mnt/debootstrap.20268\n'
 * Mounting /dev/mapper/loop2p1 to /mnt/debootstrap.20268
+ LAST_E_CMD=einfon
+ return 0
+ return 0
+ mkdir -p /mnt/debootstrap.20268
+ mount -o rw,suid,dev /dev/mapper/loop2p1 /mnt/debootstrap.20268
+ eend 0
+ trap error_handler ERR
+ local retval=0
+ shift
+ '[' 0 -gt 0 ']'
+ return 0
+ '[' -n '' ']'
+ stage mount_target done
+ trap error_handler ERR
+ '[' -n done ']'
+ echo done
+ return 0
+ rm -f /var/cache/grml-debootstrap/stages_test.raw/mount_target
+ for i in prepare_vm mkfs tunefs mount_target debootstrap_system preparechroot execute_pre_scripts chrootscript execute_scripts umount_chroot finalize_vm fscktool
+ stage debootstrap_system
+ trap error_handler ERR
+ '[' -n '' ']'
+ grep -q done /var/cache/grml-debootstrap/stages_test.raw/debootstrap_system
+ debootstrap_system
+ trap error_handler ERR
+ '[' '' ']'
+ grep -q /mnt/debootstrap.20268 /proc/mounts
+ :
+ '[' -n '' ']'
+ einfo 'Running debootstrap --verbose for release jessie (i386) using http://ftp.us.debian.org/debian'
+ trap error_handler ERR
+ einfon 'Running debootstrap --verbose for release jessie (i386) using http://ftp.us.debian.org/debian\n'
+ trap error_handler ERR
+ '[' '' '!=' yes ']'
+ '[' einfon = ebegin ']'
+ printf ' * Running debootstrap --verbose for release jessie (i386) using http://ftp.us.debian.org/debian\n'
 * Running debootstrap --verbose for release jessie (i386) using http://ftp.us.debian.org/debian
+ LAST_E_CMD=einfon
+ return 0
+ return 0
+ einfo 'Executing: debootstrap --arch i386  --verbose jessie /mnt/debootstrap.20268 http://ftp.us.debian.org/debian'
+ trap error_handler ERR
+ einfon 'Executing: debootstrap --arch i386  --verbose jessie /mnt/debootstrap.20268 http://ftp.us.debian.org/debian\n'
+ trap error_handler ERR
+ '[' '' '!=' yes ']'
+ '[' einfon = ebegin ']'
+ printf ' * Executing: debootstrap --arch i386  --verbose jessie /mnt/debootstrap.20268 http://ftp.us.debian.org/debian\n'
 * Executing: debootstrap --arch i386  --verbose jessie /mnt/debootstrap.20268 http://ftp.us.debian.org/debian
+ LAST_E_CMD=einfon
+ return 0
+ return 0
+ debootstrap --arch i386 --verbose jessie /mnt/debootstrap.20268 http://ftp.us.debian.org/debian
I: Retrieving Release
I: Retrieving Release.gpg
I: Checking Release signature
I: Valid Release signature (key id A1BD8E9D78F7FE5C3E65D8AF8B48AD6246925553)
I: Retrieving Packages
I: Validating Packages
I: Resolving dependencies of required packages...
I: Resolving dependencies of base packages...
I: Found additional required dependencies: acl adduser dmsetup insserv libaudit-common libaudit1 libbz2-1.0 libcap2 libcap2-bin libcryptsetup4 libdb5.3 libdebconfclient0 libdevmapper1.02.1 libgcrypt20 libgpg-error0 libkmod2 libncursesw5 libprocps3 libsemanage-common libsemanage1 libslang2 libsystemd0 libudev1 libustr-1.0-1 procps systemd systemd-sysv udev 
I: Found additional base dependencies: libdns-export100 libffi6 libgmp10 libgnutls-deb0-28 libgnutls-openssl27 libhogweed2 libicu52 libidn11 libirs-export91 libisc-export95 libisccfg-export90 libmnl0 libnetfilter-acct1 libnettle4 libnfnetlink0 libp11-kit0 libpsl0 libtasn1-6 
I: Checking component main on http://ftp.us.debian.org/debian...
I: Retrieving acl
I: Validating acl
I: Retrieving libacl1
I: Validating libacl1
I: Retrieving adduser
I: Validating adduser
I: Retrieving apt
I: Validating apt
I: Retrieving apt-utils
I: Validating apt-utils
I: Retrieving libapt-inst1.5
I: Validating libapt-inst1.5
I: Retrieving libapt-pkg4.12
I: Validating libapt-pkg4.12
I: Retrieving libattr1
I: Validating libattr1
I: Retrieving libaudit-common
I: Validating libaudit-common
I: Retrieving libaudit1
I: Validating libaudit1
I: Retrieving base-files
I: Validating base-files
I: Retrieving base-passwd
I: Validating base-passwd
I: Retrieving bash
I: Validating bash
I: Retrieving libdns-export100
I: Validating libdns-export100
I: Retrieving libirs-export91
I: Validating libirs-export91
I: Retrieving libisc-export95
I: Validating libisc-export95
I: Retrieving libisccfg-export90
I: Validating libisccfg-export90
I: Retrieving libboost-iostreams1.55.0
I: Validating libboost-iostreams1.55.0
I: Retrieving bsdmainutils
I: Validating bsdmainutils
I: Retrieving libbz2-1.0
I: Validating libbz2-1.0
I: Retrieving libdebconfclient0
I: Validating libdebconfclient0
I: Retrieving coreutils
I: Validating coreutils
I: Retrieving cpio
I: Validating cpio
I: Retrieving cron
I: Validating cron
I: Retrieving libcryptsetup4
I: Validating libcryptsetup4
I: Retrieving dash
I: Validating dash
I: Retrieving libdb5.3
I: Validating libdb5.3
I: Retrieving debconf
I: Validating debconf
I: Retrieving debconf-i18n
I: Validating debconf-i18n
I: Retrieving debian-archive-keyring
I: Validating debian-archive-keyring
I: Retrieving debianutils
I: Validating debianutils
I: Retrieving diffutils
I: Validating diffutils
I: Retrieving dmidecode
I: Validating dmidecode
I: Retrieving dpkg
I: Validating dpkg
I: Retrieving e2fslibs
I: Validating e2fslibs
I: Retrieving e2fsprogs
I: Validating e2fsprogs
I: Retrieving libcomerr2
I: Validating libcomerr2
I: Retrieving libss2
I: Validating libss2
I: Retrieving findutils
I: Validating findutils
I: Retrieving gcc-4.8-base
I: Validating gcc-4.8-base
I: Retrieving gcc-4.9-base
I: Validating gcc-4.9-base
I: Retrieving libgcc1
I: Validating libgcc1
I: Retrieving libstdc++6
I: Validating libstdc++6
I: Retrieving libgdbm3
I: Validating libgdbm3
I: Retrieving libc-bin
I: Validating libc-bin
I: Retrieving libc6
I: Validating libc6
I: Retrieving multiarch-support
I: Validating multiarch-support
I: Retrieving libgmp10
I: Validating libgmp10
I: Retrieving gnupg
I: Validating gnupg
I: Retrieving gpgv
I: Validating gpgv
I: Retrieving libgnutls-deb0-28
I: Validating libgnutls-deb0-28
I: Retrieving libgnutls-openssl27
I: Validating libgnutls-openssl27
I: Retrieving grep
I: Validating grep
I: Retrieving groff-base
I: Validating groff-base
I: Retrieving gzip
I: Validating gzip
I: Retrieving hostname
I: Validating hostname
I: Retrieving libicu52
I: Validating libicu52
I: Retrieving ifupdown
I: Validating ifupdown
I: Retrieving init
I: Validating init
I: Retrieving init-system-helpers
I: Validating init-system-helpers
I: Retrieving insserv
I: Validating insserv
I: Retrieving iproute2
I: Validating iproute2
I: Retrieving iptables
I: Validating iptables
I: Retrieving libxtables10
I: Validating libxtables10
I: Retrieving iputils-ping
I: Validating iputils-ping
I: Retrieving isc-dhcp-client
I: Validating isc-dhcp-client
I: Retrieving isc-dhcp-common
I: Validating isc-dhcp-common
I: Retrieving libjson-c2
I: Validating libjson-c2
I: Retrieving kmod
I: Validating kmod
I: Retrieving libkmod2
I: Validating libkmod2
I: Retrieving less
I: Validating less
I: Retrieving libcap2
I: Validating libcap2
I: Retrieving libcap2-bin
I: Validating libcap2-bin
I: Retrieving libestr0
I: Validating libestr0
I: Retrieving libffi6
I: Validating libffi6
I: Retrieving libgcrypt20
I: Validating libgcrypt20
I: Retrieving libgpg-error0
I: Validating libgpg-error0
I: Retrieving libidn11
I: Validating libidn11
I: Retrieving liblocale-gettext-perl
I: Validating liblocale-gettext-perl
I: Retrieving liblogging-stdlog0
I: Validating liblogging-stdlog0
I: Retrieving liblognorm1
I: Validating liblognorm1
I: Retrieving libmnl0
I: Validating libmnl0
I: Retrieving libnetfilter-acct1
I: Validating libnetfilter-acct1
I: Retrieving libnfnetlink0
I: Validating libnfnetlink0
I: Retrieving libpipeline1
I: Validating libpipeline1
I: Retrieving libpsl0
I: Validating libpsl0
I: Retrieving libselinux1
I: Validating libselinux1
I: Retrieving libsemanage-common
I: Validating libsemanage-common
I: Retrieving libsemanage1
I: Validating libsemanage1
I: Retrieving libsepol1
I: Validating libsepol1
I: Retrieving libsigc++-2.0-0c2a
I: Validating libsigc++-2.0-0c2a
I: Retrieving libtasn1-6
I: Validating libtasn1-6
I: Retrieving libtext-charwidth-perl
I: Validating libtext-charwidth-perl
I: Retrieving libtext-iconv-perl
I: Validating libtext-iconv-perl
I: Retrieving libtext-wrapi18n-perl
I: Validating libtext-wrapi18n-perl
I: Retrieving libusb-0.1-4
I: Validating libusb-0.1-4
I: Retrieving logrotate
I: Validating logrotate
I: Retrieving lsb-base
I: Validating lsb-base
I: Retrieving dmsetup
I: Validating dmsetup
I: Retrieving libdevmapper1.02.1
I: Validating libdevmapper1.02.1
I: Retrieving man-db
I: Validating man-db
I: Retrieving manpages
I: Validating manpages
I: Retrieving mawk
I: Validating mawk
I: Retrieving nano
I: Validating nano
I: Retrieving libncurses5
I: Validating libncurses5
I: Retrieving libncursesw5
I: Validating libncursesw5
I: Retrieving libtinfo5
I: Validating libtinfo5
I: Retrieving ncurses-base
I: Validating ncurses-base
I: Retrieving ncurses-bin
I: Validating ncurses-bin
I: Retrieving net-tools
I: Validating net-tools
I: Retrieving netbase
I: Validating netbase
I: Retrieving netcat-traditional
I: Validating netcat-traditional
I: Retrieving libhogweed2
I: Validating libhogweed2
I: Retrieving libnettle4
I: Validating libnettle4
I: Retrieving libnewt0.52
I: Validating libnewt0.52
I: Retrieving whiptail
I: Validating whiptail
I: Retrieving nfacct
I: Validating nfacct
I: Retrieving libssl1.0.0
I: Validating libssl1.0.0
I: Retrieving libp11-kit0
I: Validating libp11-kit0
I: Retrieving libpam-modules
I: Validating libpam-modules
I: Retrieving libpam-modules-bin
I: Validating libpam-modules-bin
I: Retrieving libpam-runtime
I: Validating libpam-runtime
I: Retrieving libpam0g
I: Validating libpam0g
I: Retrieving libpcre3
I: Validating libpcre3
I: Retrieving perl-base
I: Validating perl-base
I: Retrieving libpopt0
I: Validating libpopt0
I: Retrieving libprocps3
I: Validating libprocps3
I: Retrieving procps
I: Validating procps
I: Retrieving libreadline6
I: Validating libreadline6
I: Retrieving readline-common
I: Validating readline-common
I: Retrieving rsyslog
I: Validating rsyslog
I: Retrieving sed
I: Validating sed
I: Retrieving sensible-utils
I: Validating sensible-utils
I: Retrieving login
I: Validating login
I: Retrieving passwd
I: Validating passwd
I: Retrieving libslang2
I: Validating libslang2
I: Retrieving startpar
I: Validating startpar
I: Retrieving libsystemd0
I: Validating libsystemd0
I: Retrieving libudev1
I: Validating libudev1
I: Retrieving systemd
I: Validating systemd
I: Retrieving systemd-sysv
I: Validating systemd-sysv
I: Retrieving udev
I: Validating udev
I: Retrieving initscripts
I: Validating initscripts
I: Retrieving sysv-rc
I: Validating sysv-rc
I: Retrieving sysvinit-utils
I: Validating sysvinit-utils
I: Retrieving tar
I: Validating tar
I: Retrieving tasksel
I: Validating tasksel
I: Retrieving tasksel-data
I: Validating tasksel-data
I: Retrieving traceroute
I: Validating traceroute
I: Retrieving tzdata
I: Validating tzdata
I: Retrieving libustr-1.0-1
I: Validating libustr-1.0-1
I: Retrieving bsdutils
I: Validating bsdutils
I: Retrieving libblkid1
I: Validating libblkid1
I: Retrieving libmount1
I: Validating libmount1
I: Retrieving libsmartcols1
I: Validating libsmartcols1
I: Retrieving libuuid1
I: Validating libuuid1
I: Retrieving mount
I: Validating mount
I: Retrieving util-linux
I: Validating util-linux
I: Retrieving vim-common
I: Validating vim-common
I: Retrieving vim-tiny
I: Validating vim-tiny
I: Retrieving wget
I: Validating wget
I: Retrieving liblzma5
I: Validating liblzma5
I: Retrieving zlib1g
I: Validating zlib1g
I: Chosen extractor for .deb packages: dpkg-deb
I: Extracting acl...
I: Extracting libacl1...
I: Extracting adduser...
I: Extracting libattr1...
I: Extracting libaudit-common...
I: Extracting libaudit1...
I: Extracting base-files...
I: Extracting base-passwd...
I: Extracting bash...
I: Extracting libbz2-1.0...
I: Extracting libdebconfclient0...
I: Extracting coreutils...
I: Extracting libcryptsetup4...
I: Extracting dash...
I: Extracting libdb5.3...
I: Extracting debconf...
I: Extracting debconf-i18n...
I: Extracting debianutils...
I: Extracting diffutils...
I: Extracting dpkg...
I: Extracting e2fslibs...
I: Extracting e2fsprogs...
I: Extracting libcomerr2...
I: Extracting libss2...
I: Extracting findutils...
I: Extracting gcc-4.8-base...
I: Extracting gcc-4.9-base...
I: Extracting libgcc1...
I: Extracting libc-bin...
I: Extracting libc6...
I: Extracting multiarch-support...
I: Extracting grep...
I: Extracting gzip...
I: Extracting hostname...
I: Extracting init...
I: Extracting insserv...
I: Extracting libkmod2...
I: Extracting libcap2...
I: Extracting libcap2-bin...
I: Extracting libgcrypt20...
I: Extracting libgpg-error0...
I: Extracting liblocale-gettext-perl...
I: Extracting libselinux1...
I: Extracting libsemanage-common...
I: Extracting libsemanage1...
I: Extracting libsepol1...
I: Extracting libtext-charwidth-perl...
I: Extracting libtext-iconv-perl...
I: Extracting libtext-wrapi18n-perl...
I: Extracting lsb-base...
I: Extracting dmsetup...
I: Extracting libdevmapper1.02.1...
I: Extracting mawk...
I: Extracting libncurses5...
I: Extracting libncursesw5...
I: Extracting libtinfo5...
I: Extracting ncurses-base...
I: Extracting ncurses-bin...
I: Extracting libpam-modules...
I: Extracting libpam-modules-bin...
I: Extracting libpam-runtime...
I: Extracting libpam0g...
I: Extracting libpcre3...
I: Extracting perl-base...
I: Extracting libprocps3...
I: Extracting procps...
I: Extracting sed...
I: Extracting sensible-utils...
I: Extracting login...
I: Extracting passwd...
I: Extracting libslang2...
I: Extracting startpar...
I: Extracting libsystemd0...
I: Extracting libudev1...
I: Extracting systemd...
I: Extracting systemd-sysv...
I: Extracting udev...
I: Extracting initscripts...
I: Extracting sysv-rc...
I: Extracting sysvinit-utils...
I: Extracting tar...
I: Extracting tzdata...
I: Extracting libustr-1.0-1...
I: Extracting bsdutils...
I: Extracting libblkid1...
I: Extracting libmount1...
I: Extracting libsmartcols1...
I: Extracting libuuid1...
I: Extracting mount...
I: Extracting util-linux...
I: Extracting liblzma5...
I: Extracting zlib1g...
I: Installing core packages...
I: Unpacking required packages...
I: Unpacking acl...
I: Unpacking libacl1:i386...
I: Unpacking adduser...
I: Unpacking libattr1:i386...
I: Unpacking libaudit-common...
I: Unpacking libaudit1:i386...
I: Unpacking base-files...
I: Unpacking base-passwd...
I: Unpacking bash...
I: Unpacking libbz2-1.0:i386...
I: Unpacking libdebconfclient0:i386...
I: Unpacking coreutils...
I: Unpacking libcryptsetup4:i386...
I: Unpacking dash...
I: Unpacking libdb5.3:i386...
I: Unpacking debconf...
I: Unpacking debconf-i18n...
I: Unpacking debianutils...
I: Unpacking diffutils...
I: Unpacking dpkg...
I: Unpacking e2fslibs:i386...
I: Unpacking e2fsprogs...
I: Unpacking libcomerr2:i386...
I: Unpacking libss2:i386...
I: Unpacking findutils...
I: Unpacking gcc-4.8-base:i386...
I: Unpacking gcc-4.9-base:i386...
I: Unpacking libgcc1:i386...
I: Unpacking libc-bin...
I: Unpacking libc6:i386...
I: Unpacking multiarch-support...
I: Unpacking grep...
I: Unpacking gzip...
I: Unpacking hostname...
I: Unpacking init...
I: Unpacking insserv...
I: Unpacking libkmod2:i386...
I: Unpacking libcap2:i386...
I: Unpacking libcap2-bin...
I: Unpacking libgcrypt20:i386...
I: Unpacking libgpg-error0:i386...
I: Unpacking liblocale-gettext-perl...
I: Unpacking libselinux1:i386...
I: Unpacking libsemanage-common...
I: Unpacking libsemanage1:i386...
I: Unpacking libsepol1:i386...
I: Unpacking libtext-charwidth-perl...
I: Unpacking libtext-iconv-perl...
I: Unpacking libtext-wrapi18n-perl...
I: Unpacking lsb-base...
I: Unpacking dmsetup...
I: Unpacking libdevmapper1.02.1:i386...
I: Unpacking mawk...
I: Unpacking libncurses5:i386...
I: Unpacking libncursesw5:i386...
I: Unpacking libtinfo5:i386...
I: Unpacking ncurses-base...
I: Unpacking ncurses-bin...
I: Unpacking libpam-modules:i386...
I: Unpacking libpam-modules-bin...
I: Unpacking libpam-runtime...
I: Unpacking libpam0g:i386...
I: Unpacking libpcre3:i386...
I: Unpacking perl-base...
I: Unpacking libprocps3:i386...
I: Unpacking procps...
I: Unpacking sed...
I: Unpacking sensible-utils...
I: Unpacking login...
I: Unpacking passwd...
I: Unpacking libslang2:i386...
I: Unpacking startpar...
I: Unpacking libsystemd0:i386...
I: Unpacking libudev1:i386...
I: Unpacking systemd...
I: Unpacking systemd-sysv...
I: Unpacking udev...
I: Unpacking initscripts...
I: Unpacking sysv-rc...
I: Unpacking sysvinit-utils...
I: Unpacking tar...
I: Unpacking tzdata...
I: Unpacking libustr-1.0-1:i386...
I: Unpacking bsdutils...
I: Unpacking libblkid1:i386...
I: Unpacking libmount1:i386...
I: Unpacking libsmartcols1:i386...
I: Unpacking libuuid1:i386...
I: Unpacking mount...
I: Unpacking util-linux...
I: Unpacking liblzma5:i386...
I: Unpacking zlib1g:i386...
I: Configuring required packages...
I: Configuring gcc-4.8-base:i386...
I: Configuring lsb-base...
I: Configuring sensible-utils...
I: Configuring ncurses-base...
I: Configuring libsemanage-common...
I: Configuring gcc-4.9-base:i386...
I: Configuring libaudit-common...
I: Configuring libc6:i386...
I: Configuring startpar...
I: Configuring diffutils...
I: Configuring insserv...
I: Configuring findutils...
I: Configuring debianutils...
I: Configuring hostname...
I: Configuring multiarch-support...
I: Configuring mawk...
I: Configuring libprocps3:i386...
I: Configuring libpcre3:i386...
I: Configuring libbz2-1.0:i386...
I: Configuring libkmod2:i386...
I: Configuring libgpg-error0:i386...
I: Configuring base-files...
I: Configuring libdebconfclient0:i386...
I: Configuring libselinux1:i386...
I: Configuring libcomerr2:i386...
I: Configuring libslang2:i386...
I: Configuring libsepol1:i386...
I: Configuring libgcc1:i386...
I: Configuring libustr-1.0-1:i386...
I: Configuring libsmartcols1:i386...
I: Configuring libaudit1:i386...
I: Configuring libtinfo5:i386...
I: Configuring libudev1:i386...
I: Configuring libattr1:i386...
I: Configuring libss2:i386...
I: Configuring liblzma5:i386...
I: Configuring base-passwd...
I: Configuring e2fslibs:i386...
I: Configuring libgcrypt20:i386...
I: Configuring libncursesw5:i386...
I: Configuring libuuid1:i386...
I: Configuring libdb5.3:i386...
I: Configuring zlib1g:i386...
I: Configuring libcap2:i386...
I: Configuring libsystemd0:i386...
I: Configuring libdevmapper1.02.1:i386...
I: Configuring libblkid1:i386...
I: Configuring libc-bin...
I: Configuring libsemanage1:i386...
I: Configuring sysvinit-utils...
I: Configuring libmount1:i386...
I: Configuring libacl1:i386...
I: Configuring ncurses-bin...
I: Configuring acl...
I: Configuring libcryptsetup4:i386...
I: Configuring libncurses5:i386...
I: Configuring libcap2-bin...
I: Configuring bsdutils...
I: Configuring mount...
I: Configuring coreutils...
I: Configuring tar...
I: Configuring dpkg...
I: Configuring sed...
I: Configuring perl-base...
I: Configuring grep...
I: Configuring debconf...
I: Configuring tzdata...
I: Configuring gzip...
I: Configuring dash...
I: Configuring libtext-iconv-perl...
I: Configuring sysv-rc...
I: Configuring liblocale-gettext-perl...
I: Configuring libtext-charwidth-perl...
I: Configuring libpam0g:i386...
I: Configuring initscripts...
I: Configuring util-linux...
I: Configuring libpam-modules-bin...
I: Configuring bash...
I: Configuring e2fsprogs...
I: Configuring procps...
I: Configuring libtext-wrapi18n-perl...
I: Configuring dmsetup...
I: Configuring libpam-modules:i386...
I: Configuring libpam-runtime...
I: Configuring debconf-i18n...
I: Configuring passwd...
I: Configuring login...
I: Configuring adduser...
I: Configuring udev...
I: Configuring systemd...
I: Configuring systemd-sysv...
I: Configuring init...
I: Configuring libc-bin...
I: Unpacking the base system...
I: Unpacking apt...
I: Unpacking apt-utils...
I: Unpacking libapt-inst1.5:i386...
I: Unpacking libapt-pkg4.12:i386...
I: Unpacking libdns-export100...
I: Unpacking libirs-export91...
I: Unpacking libisc-export95...
I: Unpacking libisccfg-export90...
I: Unpacking libboost-iostreams1.55.0:i386...
I: Unpacking bsdmainutils...
I: Unpacking cpio...
I: Unpacking cron...
I: Unpacking debian-archive-keyring...
I: Unpacking dmidecode...
I: Unpacking libstdc++6:i386...
I: Unpacking libgdbm3:i386...
I: Unpacking libgmp10:i386...
I: Unpacking gnupg...
I: Unpacking gpgv...
I: Unpacking libgnutls-deb0-28:i386...
I: Unpacking libgnutls-openssl27:i386...
I: Unpacking groff-base...
I: Unpacking libicu52:i386...
I: Unpacking ifupdown...
I: Unpacking init-system-helpers...
I: Unpacking iproute2...
I: Unpacking iptables...
I: Unpacking libxtables10...
I: Unpacking iputils-ping...
I: Unpacking isc-dhcp-client...
I: Unpacking isc-dhcp-common...
I: Unpacking libjson-c2:i386...
I: Unpacking kmod...
I: Unpacking less...
I: Unpacking libestr0...
I: Unpacking libffi6:i386...
I: Unpacking libidn11:i386...
I: Unpacking liblogging-stdlog0:i386...
I: Unpacking liblognorm1:i386...
I: Unpacking libmnl0:i386...
I: Unpacking libnetfilter-acct1:i386...
I: Unpacking libnfnetlink0:i386...
I: Unpacking libpipeline1:i386...
I: Unpacking libpsl0:i386...
I: Unpacking libsigc++-2.0-0c2a:i386...
I: Unpacking libtasn1-6:i386...
I: Unpacking libusb-0.1-4:i386...
I: Unpacking logrotate...
I: Unpacking man-db...
I: Unpacking manpages...
I: Unpacking nano...
I: Unpacking net-tools...
I: Unpacking netbase...
I: Unpacking netcat-traditional...
I: Unpacking libhogweed2:i386...
I: Unpacking libnettle4:i386...
I: Unpacking libnewt0.52:i386...
I: Unpacking whiptail...
I: Unpacking nfacct...
I: Unpacking libssl1.0.0:i386...
I: Unpacking libp11-kit0:i386...
I: Unpacking libpopt0:i386...
I: Unpacking libreadline6:i386...
I: Unpacking readline-common...
I: Unpacking rsyslog...
I: Unpacking tasksel...
I: Unpacking tasksel-data...
I: Unpacking traceroute...
I: Unpacking vim-common...
I: Unpacking vim-tiny...
I: Unpacking wget...
I: Configuring the base system...
I: Configuring readline-common...
I: Configuring libgdbm3:i386...
I: Configuring manpages...
I: Configuring libxtables10...
I: Configuring cpio...
I: Configuring libpopt0:i386...
I: Configuring kmod...
I: Configuring libestr0...
I: Configuring less...
I: Configuring libssl1.0.0:i386...
I: Configuring dmidecode...
I: Configuring gpgv...
I: Configuring liblogging-stdlog0:i386...
I: Configuring netcat-traditional...
I: Configuring libpipeline1:i386...
I: Configuring iproute2...
I: Configuring libtasn1-6:i386...
I: Configuring nano...
I: Configuring libgmp10:i386...
I: Configuring libisc-export95...
I: Configuring init-system-helpers...
I: Configuring libnettle4:i386...
I: Configuring debian-archive-keyring...
I: Configuring vim-common...
I: Configuring libnfnetlink0:i386...
I: Configuring libstdc++6:i386...
I: Configuring libffi6:i386...
I: Configuring libnewt0.52:i386...
I: Configuring bsdmainutils...
I: Configuring net-tools...
I: Configuring cron...
I: Configuring libmnl0:i386...
I: Configuring libapt-pkg4.12:i386...
I: Configuring libusb-0.1-4:i386...
I: Configuring traceroute...
I: Configuring logrotate...
I: Configuring libidn11:i386...
I: Configuring libreadline6:i386...
I: Configuring libjson-c2:i386...
I: Configuring libicu52:i386...
I: Configuring netbase...
I: Configuring vim-tiny...
I: Configuring libhogweed2:i386...
I: Configuring ifupdown...
I: Configuring libisccfg-export90...
I: Configuring libsigc++-2.0-0c2a:i386...
I: Configuring groff-base...
I: Configuring liblognorm1:i386...
I: Configuring whiptail...
I: Configuring gnupg...
I: Configuring libpsl0:i386...
I: Configuring libboost-iostreams1.55.0:i386...
I: Configuring libdns-export100...
I: Configuring iptables...
I: Configuring libapt-inst1.5:i386...
I: Configuring libp11-kit0:i386...
I: Configuring libgnutls-deb0-28:i386...
I: Configuring wget...
I: Configuring apt...
I: Configuring man-db...
I: Configuring libnetfilter-acct1:i386...
I: Configuring rsyslog...
I: Configuring nfacct...
I: Configuring apt-utils...
I: Configuring libirs-export91...
I: Configuring libgnutls-openssl27:i386...
I: Configuring iputils-ping...
I: Configuring isc-dhcp-common...
I: Configuring isc-dhcp-client...
I: Configuring tasksel...
I: Configuring tasksel-data...
I: Configuring libc-bin...
I: Base system installed successfully.
+ RC=0
+ '[' 0 -ne 0 ']'
+ eend 0
+ trap error_handler ERR
+ local retval=0
+ shift
+ '[' 0 -gt 0 ']'
+ return 0
+ stage debootstrap_system done
+ trap error_handler ERR
+ '[' -n done ']'
+ echo done
+ return 0
+ rm -f /var/cache/grml-debootstrap/stages_test.raw/debootstrap_system
+ for i in prepare_vm mkfs tunefs mount_target debootstrap_system preparechroot execute_pre_scripts chrootscript execute_scripts umount_chroot finalize_vm fscktool
+ stage preparechroot
+ trap error_handler ERR
+ '[' -n '' ']'
+ grep -q done /var/cache/grml-debootstrap/stages_test.raw/preparechroot
+ preparechroot
+ trap error_handler ERR
+ einfo 'Preparing chroot system'
+ trap error_handler ERR
+ einfon 'Preparing chroot system\n'
+ trap error_handler ERR
+ '[' '' '!=' yes ']'
+ '[' einfon = ebegin ']'
+ printf ' * Preparing chroot system\n'
 * Preparing chroot system
+ LAST_E_CMD=einfon
+ return 0
+ return 0
+ CHROOT_VARIABLES=/var/cache/grml-debootstrap/variables_test.raw
+ touch /var/cache/grml-debootstrap/variables_test.raw
+ chmod 600 /var/cache/grml-debootstrap/variables_test.raw
+ echo '# Configuration of grml-debootstrap'
+ '[' -n i386 ']'
+ echo 'ARCH="i386"'
+ '[' -n '' ']'
+ '[' -n yes ']'
+ echo 'CHROOT_SCRIPTS="yes"'
+ '[' -n /etc/debootstrap ']'
+ echo 'CONFFILES="/etc/debootstrap"'
+ '[' -n yes ']'
+ echo 'DEBCONF="yes"'
+ '[' -n noninteractive ']'
+ echo 'DEBIAN_FRONTEND="noninteractive"'
+ '[' -n debootstrap ']'
+ echo 'DEBOOTSTRAP="debootstrap"'
+ '[' -n en_US.UTF-8 ']'
+ echo 'DEFAULT_LOCALES="en_US.UTF-8"'
+ '[' -n en_US:en ']'
+ echo 'DEFAULT_LANGUAGE="en_US:en"'
+ '[' -n yes ']'
+ echo 'EXTRAPACKAGES="yes"'
+ '[' -n http://http.debian.net/debian ']'
+ echo 'FALLBACK_MIRROR="http://http.debian.net/debian"'
+ '[' -n T ']'
+ echo 'FORCE="T"'
+ '[' -n '' ']'
+ '[' -n '' ']'
+ '[' -n host ']'
+ echo 'HOSTNAME="host"'
+ '[' -n yes ']'
+ echo 'INITRD="yes"'
+ '[' -n /etc/debootstrap/install_notes ']'
+ echo 'INSTALL_NOTES="/etc/debootstrap/install_notes"'
+ '[' -n '' ']'
+ '[' -n '' ']'
+ '[' -n yes ']'
+ echo 'KEEP_SRC_LIST="yes"'
+ '[' -n yes ']'
+ echo 'LOCALES="yes"'
+ '[' -n http://ftp.us.debian.org/debian ']'
+ echo 'MIRROR="http://ftp.us.debian.org/debian"'
+ '[' -n mkfs.ext4 ']'
+ echo 'MKFS="mkfs.ext4"'
+ '[' -n '' ']'
+ '[' -n '' ']'
+ '[' -n '' ']'
+ '[' -n yes ']'
+ echo 'PRE_SCRIPTS="yes"'
+ '[' -n console-data ']'
+ echo 'RECONFIGURE="console-data"'
+ '[' -n jessie ']'
+ echo 'RELEASE="jessie"'
+ '[' -n yes ']'
+ echo 'RM_APTCACHE="yes"'
+ '[' -n changeme ']'
+ echo 'ROOTPASSWORD="changeme"'
+ '[' -n yes ']'
+ echo 'SCRIPTS="yes"'
+ '[' -n yes ']'
+ echo 'SECURE="yes"'
+ '[' -n '' ']'
+ '[' -n /dev/mapper/loop2p1 ']'
+ echo 'TARGET="/dev/mapper/loop2p1"'
+ '[' -n yes ']'
+ echo 'UPGRADE_SYSTEM="yes"'
+ '[' -n 641db42e-4a84-42eb-9df2-432a29f87a52 ']'
+ echo 'TARGET_UUID="641db42e-4a84-42eb-9df2-432a29f87a52"'
+ '[' -n Europe/Vienna ']'
+ echo 'TIMEZONE="Europe/Vienna"'
+ '[' -n 'tune2fs -c0 -i0' ']'
+ echo 'TUNE2FS="tune2fs -c0 -i0"'
+ '[' -n 2G ']'
+ echo 'VMSIZE="2G"'
+ '[' -n no ']'
+ echo 'REPORT_TRAP_ERR="no"'
+ '[' -n no ']'
+ echo 'FAIL_TRAP_ERR="no"'
+ cp -v /etc/debootstrap/chroot-script /mnt/debootstrap.20268/bin/chroot-script
`/etc/debootstrap/chroot-script' -> `/mnt/debootstrap.20268/bin/chroot-script'
+ chmod 755 /mnt/debootstrap.20268/bin/chroot-script
+ '[' -d /mnt/debootstrap.20268/etc/debootstrap/ ']'
+ mkdir /mnt/debootstrap.20268/etc/debootstrap/
+ cp -v /etc/debootstrap/config /mnt/debootstrap.20268/etc/debootstrap/
`/etc/debootstrap/config' -> `/mnt/debootstrap.20268/etc/debootstrap/config'
+ sed -i 's#RELEASE=.*#RELEASE="jessie"#' /mnt/debootstrap.20268/etc/debootstrap/config
+ sed -i 's#TARGET=.*#TARGET="/dev/mapper/loop2p1"#' /mnt/debootstrap.20268/etc/debootstrap/config
+ sed -i 's#GRUB=.*#GRUB=""#' /mnt/debootstrap.20268/etc/debootstrap/config
+ '[' -n /etc/debootstrap/install_notes ']'
+ '[' -r /etc/debootstrap/install_notes ']'
+ cp -v /etc/debootstrap/packages /mnt/debootstrap.20268/etc/debootstrap/packages
`/etc/debootstrap/packages' -> `/mnt/debootstrap.20268/etc/debootstrap/packages'
+ _opt_debconf=/etc/debootstrap/debconf-selections
+ '[' -f /etc/debootstrap/debconf-selections -a yes = yes ']'
+ _opt_chroot_scripts=/etc/debootstrap/chroot-scripts/
+ '[' -d /etc/debootstrap/chroot-scripts/ -a yes = yes ']'
+ cp -v /var/cache/grml-debootstrap/variables_test.raw /mnt/debootstrap.20268/etc/debootstrap/variables
`/var/cache/grml-debootstrap/variables_test.raw' -> `/mnt/debootstrap.20268/etc/debootstrap/variables'
+ cp -v -a -L /etc/debootstrap/extrapackages/ /mnt/debootstrap.20268/etc/debootstrap/
`/etc/debootstrap/extrapackages/' -> `/mnt/debootstrap.20268/etc/debootstrap/extrapackages'
+ '[' -f /mnt/debootstrap.20268/etc/resolv.conf ']'
+ '[' -f /mnt/debootstrap.20268/etc/hosts ']'
+ '[' -n yes ']'
+ cp -v /etc/debootstrap/locale.gen /mnt/debootstrap.20268/etc/locale.gen
`/etc/debootstrap/locale.gen' -> `/mnt/debootstrap.20268/etc/locale.gen'
+ cd /mnt/debootstrap.20268/dev
+ tar zxf /etc/debootstrap/devices.tar.gz
+ '[' -d /etc/debootstrap/bin ']'
+ '[' -d /etc/debootstrap/boot ']'
+ '[' -d /etc/debootstrap/etc ']'
+ cp -v -a -L /etc/debootstrap/etc/apt /mnt/debootstrap.20268/etc/
`/etc/debootstrap/etc/apt/sources.list' -> `/mnt/debootstrap.20268/etc/apt/sources.list'
+ '[' -d /etc/debootstrap/sbin ']'
+ '[' -d /etc/debootstrap/share ']'
+ '[' -d /etc/debootstrap/usr ']'
+ '[' -d /etc/debootstrap/var ']'
+ DEFAULT_INTERFACES='# /etc/network/interfaces - generated by grml-debootstrap

# Include files from /etc/network/interfaces.d when using
# ifupdown v0.7.44 or newer:
#source-directory /etc/network/interfaces.d

auto lo
iface lo inet loopback

allow-hotplug eth0
iface eth0 inet dhcp
'
+ '[' -n '' ']'
+ '[' -n '# /etc/network/interfaces - generated by grml-debootstrap

# Include files from /etc/network/interfaces.d when using
# ifupdown v0.7.44 or newer:
#source-directory /etc/network/interfaces.d

auto lo
iface lo inet loopback

allow-hotplug eth0
iface eth0 inet dhcp
' ']'
+ einfo 'Installing default /etc/network/interfaces as requested via --defaultinterfaces options.'
+ trap error_handler ERR
+ einfon 'Installing default /etc/network/interfaces as requested via --defaultinterfaces options.\n'
+ trap error_handler ERR
+ '[' '' '!=' yes ']'
+ '[' einfon = ebegin ']'
+ printf ' * Installing default /etc/network/interfaces as requested via --defaultinterfaces options.\n'
 * Installing default /etc/network/interfaces as requested via --defaultinterfaces options.
+ LAST_E_CMD=einfon
+ return 0
+ return 0
+ echo '# /etc/network/interfaces - generated by grml-debootstrap

# Include files from /etc/network/interfaces.d when using
# ifupdown v0.7.44 or newer:
#source-directory /etc/network/interfaces.d

auto lo
iface lo inet loopback

allow-hotplug eth0
iface eth0 inet dhcp
'
+ eend 0
+ trap error_handler ERR
+ local retval=0
+ shift
+ '[' 0 -gt 0 ']'
+ return 0
+ '[' -r /etc/network/interfaces.examples -a '!' -r /mnt/debootstrap.20268/etc/network/interfaces.examples ']'
+ eend 0
+ trap error_handler ERR
+ local retval=0
+ shift
+ '[' 0 -gt 0 ']'
+ return 0
+ stage preparechroot done
+ trap error_handler ERR
+ '[' -n done ']'
+ echo done
+ return 0
+ rm -f /var/cache/grml-debootstrap/stages_test.raw/preparechroot
+ for i in prepare_vm mkfs tunefs mount_target debootstrap_system preparechroot execute_pre_scripts chrootscript execute_scripts umount_chroot finalize_vm fscktool
+ stage execute_pre_scripts
+ trap error_handler ERR
+ '[' -n '' ']'
+ grep -q done /var/cache/grml-debootstrap/stages_test.raw/execute_pre_scripts
+ execute_pre_scripts
+ trap error_handler ERR
+ export MNTPOINT
+ '[' -d '' ']'
+ '[' yes = yes ']'
+ '[' -d '' ']'
+ pre_scripts=/etc/debootstrap/pre-scripts/
+ for script in '${pre_scripts}/*'
+ '[' -x '/etc/debootstrap/pre-scripts//*' ']'
+ stage execute_pre_scripts done
+ trap error_handler ERR
+ '[' -n done ']'
+ echo done
+ return 0
+ rm -f /var/cache/grml-debootstrap/stages_test.raw/execute_pre_scripts
+ for i in prepare_vm mkfs tunefs mount_target debootstrap_system preparechroot execute_pre_scripts chrootscript execute_scripts umount_chroot finalize_vm fscktool
+ stage chrootscript
+ trap error_handler ERR
+ '[' -n '' ']'
+ grep -q done /var/cache/grml-debootstrap/stages_test.raw/chrootscript
+ chrootscript
+ trap error_handler ERR
+ '[' -r /mnt/debootstrap.20268/bin/chroot-script ']'
+ '[' -x /mnt/debootstrap.20268/bin/chroot-script ']'
+ einfo 'Executing chroot-script now'
+ trap error_handler ERR
+ einfon 'Executing chroot-script now\n'
+ trap error_handler ERR
+ '[' '' '!=' yes ']'
+ '[' einfon = ebegin ']'
+ printf ' * Executing chroot-script now\n'
 * Executing chroot-script now
+ LAST_E_CMD=einfon
+ return 0
+ return 0
+ mount --bind /dev /mnt/debootstrap.20268/dev
+ '[' true = true ']'
+ chroot /mnt/debootstrap.20268 /bin/bash -x /bin/chroot-script
+ . /etc/debootstrap/config
+ . /etc/debootstrap/variables
++ ARCH=i386
++ CHROOT_SCRIPTS=yes
++ CONFFILES=/etc/debootstrap
++ DEBCONF=yes
++ DEBIAN_FRONTEND=noninteractive
++ DEBOOTSTRAP=debootstrap
++ DEFAULT_LOCALES=en_US.UTF-8
++ DEFAULT_LANGUAGE=en_US:en
++ EXTRAPACKAGES=yes
++ FALLBACK_MIRROR=http://http.debian.net/debian
++ FORCE=T
++ HOSTNAME=host
++ INITRD=yes
++ INSTALL_NOTES=/etc/debootstrap/install_notes
++ KEEP_SRC_LIST=yes
++ LOCALES=yes
++ MIRROR=http://ftp.us.debian.org/debian
++ MKFS=mkfs.ext4
++ PRE_SCRIPTS=yes
++ RECONFIGURE=console-data
++ RELEASE=jessie
++ RM_APTCACHE=yes
++ ROOTPASSWORD=changeme
++ SCRIPTS=yes
++ SECURE=yes
++ TARGET=/dev/mapper/loop2p1
++ UPGRADE_SYSTEM=yes
++ TARGET_UUID=641db42e-4a84-42eb-9df2-432a29f87a52
++ TIMEZONE=Europe/Vienna
++ TUNE2FS='tune2fs -c0 -i0'
++ VMSIZE=2G
++ REPORT_TRAP_ERR=no
++ FAIL_TRAP_ERR=no
+ '[' -r /proc/1 ']'
+ mount -t proc none /proc
+ '[' -x /usr/bin/aptitude ']'
+ APTINSTALL='apt-get --force-yes -y --no-install-recommends install '
+ APTUPDATE='apt-get update '
+ APTUPGRADE='apt-get --force-yes -y upgrade '
+ '[' -z '' ']'
+ STAGES=/etc/debootstrap/stages
+ '[' -d /etc/debootstrap/stages ']'
+ mkdir -p /etc/debootstrap/stages
+ trap signal_handler HUP INT QUIT TERM
+ install_policy_rcd
+ '[' -r /usr/sbin/policy-rc.d ']'
+ export POLICYRCD=1
+ POLICYRCD=1
+ cat
+ chmod 775 /usr/sbin/policy-rc.d
+ for i in chrootmirror grmlrepos backportrepos kernelimg_conf kernel packages extrapackages reconfigure hosts default_locales timezone fstab hostname initrd grub_install passwords custom_scripts upgrade_system remove_apt_cache services remove_chrootmirror
+ stage chrootmirror
+ '[' -n '' ']'
+ grep -q done /etc/debootstrap/stages/chrootmirror
+ echo '   Executing stage chrootmirror'
   Executing stage chrootmirror
+ return 0
+ chrootmirror
+ '[' -n yes ']'
+ echo 'KEEP_SRC_LIST has been set, skipping chrootmirror stage.'
KEEP_SRC_LIST has been set, skipping chrootmirror stage.
+ return
+ stage chrootmirror done
+ '[' -n done ']'
+ echo done
+ return 0
+ for i in chrootmirror grmlrepos backportrepos kernelimg_conf kernel packages extrapackages reconfigure hosts default_locales timezone fstab hostname initrd grub_install passwords custom_scripts upgrade_system remove_apt_cache services remove_chrootmirror
+ stage grmlrepos
+ '[' -n '' ']'
+ grep -q done /etc/debootstrap/stages/grmlrepos
+ echo '   Executing stage grmlrepos'
   Executing stage grmlrepos
+ return 0
+ grmlrepos
+ '[' -n '' ']'
+ stage grmlrepos done
+ '[' -n done ']'
+ echo done
+ return 0
+ for i in chrootmirror grmlrepos backportrepos kernelimg_conf kernel packages extrapackages reconfigure hosts default_locales timezone fstab hostname initrd grub_install passwords custom_scripts upgrade_system remove_apt_cache services remove_chrootmirror
+ stage backportrepos
+ '[' -n '' ']'
+ grep -q done /etc/debootstrap/stages/backportrepos
+ echo '   Executing stage backportrepos'
   Executing stage backportrepos
+ return 0
+ backportrepos
+ '[' -n '' ']'
+ stage backportrepos done
+ '[' -n done ']'
+ echo done
+ return 0
+ for i in chrootmirror grmlrepos backportrepos kernelimg_conf kernel packages extrapackages reconfigure hosts default_locales timezone fstab hostname initrd grub_install passwords custom_scripts upgrade_system remove_apt_cache services remove_chrootmirror
+ stage kernelimg_conf
+ '[' -n '' ']'
+ grep -q done /etc/debootstrap/stages/kernelimg_conf
+ echo '   Executing stage kernelimg_conf'
   Executing stage kernelimg_conf
+ return 0
+ kernelimg_conf
+ '[' -r /etc/kernel-img.conf ']'
+ echo 'Setting up /etc/kernel-img.conf'
Setting up /etc/kernel-img.conf
+ cat
+ stage kernelimg_conf done
+ '[' -n done ']'
+ echo done
+ return 0
+ for i in chrootmirror grmlrepos backportrepos kernelimg_conf kernel packages extrapackages reconfigure hosts default_locales timezone fstab hostname initrd grub_install passwords custom_scripts upgrade_system remove_apt_cache services remove_chrootmirror
+ stage kernel
+ '[' -n '' ']'
+ grep -q done /etc/debootstrap/stages/kernel
+ echo '   Executing stage kernel'
   Executing stage kernel
+ return 0
+ kernel
+ '[' -n '' ']'
+ apt-get update
Get:1 http://snapshot.debian.org wheezy/updates InRelease [103 kB]
E: Release file for http://snapshot.debian.org/archive/debian-security/20141107T214701Z/dists/wheezy/updates/InRelease is expired (invalid since 27d 3h 51min 37s). Updates for this repository will not be applied.
++ get_kernel_version
++ '[' -n '' ']'
++ local KARCH
++ case "$ARCH" in
++ case "$RELEASE" in
++ KARCH=686-pae
++ for KPREFIX in '""' '"2.6-"'
++ package_exists linux-image-686-pae
+++ apt-cache show linux-image-686-pae
++ output=
++ '[' -n '' ']'
++ return 1
++ for KPREFIX in '""' '"2.6-"'
++ package_exists linux-image-2.6-686-pae
+++ apt-cache show linux-image-2.6-686-pae
++ output=
++ '[' -n '' ']'
++ return 1
+ KVER=
+ '[' -n '' ']'
+ echo 'Warning: Could not find a kernel for your system. Your system won'\''t be able to boot itself!'
Warning: Could not find a kernel for your system. Your system won't be able to boot itself!
+ stage kernel done
+ '[' -n done ']'
+ echo done
+ return 0
+ for i in chrootmirror grmlrepos backportrepos kernelimg_conf kernel packages extrapackages reconfigure hosts default_locales timezone fstab hostname initrd grub_install passwords custom_scripts upgrade_system remove_apt_cache services remove_chrootmirror
+ stage packages
+ '[' -n '' ']'
+ grep -q done /etc/debootstrap/stages/packages
+ echo '   Executing stage packages'
   Executing stage packages
+ return 0
+ packages
+ '[' -f /etc/debootstrap/debconf-selections ']'
+ '[' '' = yes ']'
+ stage packages done
+ '[' -n done ']'
+ echo done
+ return 0
+ for i in chrootmirror grmlrepos backportrepos kernelimg_conf kernel packages extrapackages reconfigure hosts default_locales timezone fstab hostname initrd grub_install passwords custom_scripts upgrade_system remove_apt_cache services remove_chrootmirror
+ stage extrapackages
+ '[' -n '' ']'
+ grep -q done /etc/debootstrap/stages/extrapackages
+ echo '   Executing stage extrapackages'
   Executing stage extrapackages
+ return 0
+ extrapackages
+ '[' yes = yes ']'
++ find /etc/debootstrap/extrapackages -type f -name '*.deb'
+ PACKAGELIST=
+ '[' -n '' ']'
+ stage extrapackages done
+ '[' -n done ']'
+ echo done
+ return 0
+ for i in chrootmirror grmlrepos backportrepos kernelimg_conf kernel packages extrapackages reconfigure hosts default_locales timezone fstab hostname initrd grub_install passwords custom_scripts upgrade_system remove_apt_cache services remove_chrootmirror
+ stage reconfigure
+ '[' -n '' ']'
+ grep -q done /etc/debootstrap/stages/reconfigure
+ echo '   Executing stage reconfigure'
   Executing stage reconfigure
+ return 0
+ reconfigure
+ '[' -n console-data ']'
+ for package in '$RECONFIGURE'
+ grep -q '^ii'
+ dpkg --list console-data
+ stage reconfigure done
+ '[' -n done ']'
+ echo done
+ return 0
+ for i in chrootmirror grmlrepos backportrepos kernelimg_conf kernel packages extrapackages reconfigure hosts default_locales timezone fstab hostname initrd grub_install passwords custom_scripts upgrade_system remove_apt_cache services remove_chrootmirror
+ stage hosts
+ '[' -n '' ']'
+ grep -q done /etc/debootstrap/stages/hosts
+ echo '   Executing stage hosts'
   Executing stage hosts
+ return 0
+ hosts
+ '[' -f /etc/hosts ']'
+ sed -i 's#127.0.0.1 .*#127.0.0.1       localhost  host#' /etc/hosts
+ '[' -n host ']'
+ sed -i s/grml/host/g /etc/hosts
+ stage hosts done
+ '[' -n done ']'
+ echo done
+ return 0
+ for i in chrootmirror grmlrepos backportrepos kernelimg_conf kernel packages extrapackages reconfigure hosts default_locales timezone fstab hostname initrd grub_install passwords custom_scripts upgrade_system remove_apt_cache services remove_chrootmirror
+ stage default_locales
+ '[' -n '' ']'
+ grep -q done /etc/debootstrap/stages/default_locales
+ echo '   Executing stage default_locales'
   Executing stage default_locales
+ return 0
+ default_locales
+ '[' -n en_US.UTF-8 ']'
+ '[' -x /usr/sbin/update-locale ']'
+ echo 'Warning: update-locale executable not available (no locales package installed?)'
Warning: update-locale executable not available (no locales package installed?)
+ echo 'Ignoring request to run update-locale for en_US.UTF-8 therefore'
Ignoring request to run update-locale for en_US.UTF-8 therefore
+ return 0
+ stage default_locales done
+ '[' -n done ']'
+ echo done
+ return 0
+ for i in chrootmirror grmlrepos backportrepos kernelimg_conf kernel packages extrapackages reconfigure hosts default_locales timezone fstab hostname initrd grub_install passwords custom_scripts upgrade_system remove_apt_cache services remove_chrootmirror
+ stage timezone
+ '[' -n '' ']'
+ grep -q done /etc/debootstrap/stages/timezone
+ echo '   Executing stage timezone'
   Executing stage timezone
+ return 0
+ timezone
+ '[' -n Europe/Vienna ']'
+ echo 'Adjusting /etc/localtime'
Adjusting /etc/localtime
+ ln -sf /usr/share/zoneinfo/Europe/Vienna /etc/localtime
+ stage timezone done
+ '[' -n done ']'
+ echo done
+ return 0
+ for i in chrootmirror grmlrepos backportrepos kernelimg_conf kernel packages extrapackages reconfigure hosts default_locales timezone fstab hostname initrd grub_install passwords custom_scripts upgrade_system remove_apt_cache services remove_chrootmirror
+ stage fstab
+ '[' -n '' ']'
+ grep -q done /etc/debootstrap/stages/fstab
+ echo '   Executing stage fstab'
   Executing stage fstab
+ return 0
+ fstab
+ '[' '!' -f /etc/fstab ']'
+ grep -q UNCONFIGURED /etc/fstab
+ createfstab
+ echo 'Setting up /etc/fstab'
Setting up /etc/fstab
+ '[' -n 641db42e-4a84-42eb-9df2-432a29f87a52 ']'
+ echo '/dev/disk/by-uuid/641db42e-4a84-42eb-9df2-432a29f87a52 /  auto    defaults,errors=remount-ro 0   1'
+ cat
+ stage fstab done
+ '[' -n done ']'
+ echo done
+ return 0
+ for i in chrootmirror grmlrepos backportrepos kernelimg_conf kernel packages extrapackages reconfigure hosts default_locales timezone fstab hostname initrd grub_install passwords custom_scripts upgrade_system remove_apt_cache services remove_chrootmirror
+ stage hostname
+ '[' -n '' ']'
+ grep -q done /etc/debootstrap/stages/hostname
+ echo '   Executing stage hostname'
   Executing stage hostname
+ return 0
+ hostname
+ '[' -n host ']'
+ echo 'Setting hostname to host.'
Setting hostname to host.
+ echo host
+ '[' -r /etc/postfix/main.cf ']'
+ '[' -r /etc/mailname ']'
+ stage hostname done
+ '[' -n done ']'
+ echo done
+ return 0
+ for i in chrootmirror grmlrepos backportrepos kernelimg_conf kernel packages extrapackages reconfigure hosts default_locales timezone fstab hostname initrd grub_install passwords custom_scripts upgrade_system remove_apt_cache services remove_chrootmirror
+ stage initrd
+ '[' -n '' ']'
+ grep -q done /etc/debootstrap/stages/initrd
+ echo '   Executing stage initrd'
   Executing stage initrd
+ return 0
+ initrd
++ head -1
++ ls -1 '/boot/vmlinuz-*'
+ KERNELIMG=
+ '[' -z '' ']'
+ echo 'No kernel image found, skipping initrd stuff.'
No kernel image found, skipping initrd stuff.
+ return
+ stage initrd done
+ '[' -n done ']'
+ echo done
+ return 0
+ for i in chrootmirror grmlrepos backportrepos kernelimg_conf kernel packages extrapackages reconfigure hosts default_locales timezone fstab hostname initrd grub_install passwords custom_scripts upgrade_system remove_apt_cache services remove_chrootmirror
+ stage grub_install
+ '[' -n '' ']'
+ grep -q done /etc/debootstrap/stages/grub_install
+ echo '   Executing stage grub_install'
   Executing stage grub_install
+ return 0
+ grub_install
+ '[' -z '' ']'
+ echo 'Notice: $GRUB not defined, will not install grub inside chroot at this stage.'
Notice: $GRUB not defined, will not install grub inside chroot at this stage.
+ return 0
+ stage grub_install done
+ '[' -n done ']'
+ echo done
+ return 0
+ for i in chrootmirror grmlrepos backportrepos kernelimg_conf kernel packages extrapackages reconfigure hosts default_locales timezone fstab hostname initrd grub_install passwords custom_scripts upgrade_system remove_apt_cache services remove_chrootmirror
+ stage passwords
+ '[' -n '' ']'
+ grep -q done /etc/debootstrap/stages/passwords
+ echo '   Executing stage passwords'
   Executing stage passwords
+ return 0
+ passwords
+ '[' -n '' ']'
+ echo 'Activating shadow passwords.'
Activating shadow passwords.
+ shadowconfig on
Shadow passwords are now on.
+ CHPASSWD_OPTION=
+ grep -q -- -m,
+ chpasswd --help
+ CHPASSWD_OPTION=-m
+ '[' -n changeme ']'
+ chpasswd -m
+ echo root:changeme
+ export ROOTPASSWORD=
+ ROOTPASSWORD=
+ stage passwords done
+ '[' -n done ']'
+ echo done
+ return 0
+ for i in chrootmirror grmlrepos backportrepos kernelimg_conf kernel packages extrapackages reconfigure hosts default_locales timezone fstab hostname initrd grub_install passwords custom_scripts upgrade_system remove_apt_cache services remove_chrootmirror
+ stage custom_scripts
+ '[' -n '' ']'
+ grep -q done /etc/debootstrap/stages/custom_scripts
+ echo '   Executing stage custom_scripts'
   Executing stage custom_scripts
+ return 0
+ custom_scripts
+ '[' -d /etc/debootstrap/chroot-scripts/ ']'
+ return 0
+ stage custom_scripts done
+ '[' -n done ']'
+ echo done
+ return 0
+ for i in chrootmirror grmlrepos backportrepos kernelimg_conf kernel packages extrapackages reconfigure hosts default_locales timezone fstab hostname initrd grub_install passwords custom_scripts upgrade_system remove_apt_cache services remove_chrootmirror
+ stage upgrade_system
+ '[' -n '' ']'
+ grep -q done /etc/debootstrap/stages/upgrade_system
+ echo '   Executing stage upgrade_system'
   Executing stage upgrade_system
+ return 0
+ upgrade_system
+ '[' yes = yes ']'
+ echo 'Running update + upgrade'
Running update + upgrade
+ apt-get update
Get:1 http://snapshot.debian.org wheezy/updates InRelease [103 kB]
E: Release file for http://snapshot.debian.org/archive/debian-security/20141107T214701Z/dists/wheezy/updates/InRelease is expired (invalid since 27d 3h 51min 37s). Updates for this repository will not be applied.
+ DEBIAN_FRONTEND=noninteractive
+ apt-get --force-yes -y upgrade
Reading package lists... Done
Building dependency tree... Done
Calculating upgrade... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
+ stage upgrade_system done
+ '[' -n done ']'
+ echo done
+ return 0
+ for i in chrootmirror grmlrepos backportrepos kernelimg_conf kernel packages extrapackages reconfigure hosts default_locales timezone fstab hostname initrd grub_install passwords custom_scripts upgrade_system remove_apt_cache services remove_chrootmirror
+ stage remove_apt_cache
+ '[' -n '' ']'
+ grep -q done /etc/debootstrap/stages/remove_apt_cache
+ echo '   Executing stage remove_apt_cache'
   Executing stage remove_apt_cache
+ return 0
+ remove_apt_cache
+ '[' yes = yes ']'
+ echo 'Cleaning apt cache.'
Cleaning apt cache.
+ apt-get clean
+ stage remove_apt_cache done
+ '[' -n done ']'
+ echo done
+ return 0
+ for i in chrootmirror grmlrepos backportrepos kernelimg_conf kernel packages extrapackages reconfigure hosts default_locales timezone fstab hostname initrd grub_install passwords custom_scripts upgrade_system remove_apt_cache services remove_chrootmirror
+ stage services
+ '[' -n '' ']'
+ grep -q done /etc/debootstrap/stages/services
+ echo '   Executing stage services'
   Executing stage services
+ return 0
+ services
+ for service in ssh mdadm mdadm-raid
+ '[' -x /etc/init.d/ssh ']'
+ for service in ssh mdadm mdadm-raid
+ '[' -x /etc/init.d/mdadm ']'
+ for service in ssh mdadm mdadm-raid
+ '[' -x /etc/init.d/mdadm-raid ']'
+ stage services done
+ '[' -n done ']'
+ echo done
+ return 0
+ for i in chrootmirror grmlrepos backportrepos kernelimg_conf kernel packages extrapackages reconfigure hosts default_locales timezone fstab hostname initrd grub_install passwords custom_scripts upgrade_system remove_apt_cache services remove_chrootmirror
+ stage remove_chrootmirror
+ '[' -n '' ']'
+ grep -q done /etc/debootstrap/stages/remove_chrootmirror
+ echo '   Executing stage remove_chrootmirror'
   Executing stage remove_chrootmirror
+ return 0
+ remove_chrootmirror
+ '[' -n yes ']'
+ echo 'KEEP_SRC_LIST has been set, skipping remove_chrootmirror stage.'
KEEP_SRC_LIST has been set, skipping remove_chrootmirror stage.
+ return
+ stage remove_chrootmirror done
+ '[' -n done ']'
+ echo done
+ return 0
+ finalize
+ rm -f /etc/debootstrap/variables
+ '[' -n 1 ']'
+ rm -f /usr/sbin/policy-rc.d
+ umount /proc
+ echo 'Finished chroot installation, exiting.'
Finished chroot installation, exiting.
+ exit 0
+ RC=0
+ umount /mnt/debootstrap.20268/dev
+ eend 0
+ trap error_handler ERR
+ local retval=0
+ shift
+ '[' 0 -gt 0 ']'
+ return 0
+ grep -q GRML_CHROOT_SCRIPT_MARKER /mnt/debootstrap.20268/bin/chroot-script
+ einfo 'Removing chroot-script again'
+ trap error_handler ERR
+ einfon 'Removing chroot-script again\n'
+ trap error_handler ERR
+ '[' '' '!=' yes ']'
+ '[' einfon = ebegin ']'
+ printf ' * Removing chroot-script again\n'
 * Removing chroot-script again
+ LAST_E_CMD=einfon
+ return 0
+ return 0
+ rm -f /mnt/debootstrap.20268/bin/chroot-script
+ eend 0
+ trap error_handler ERR
+ local retval=0
+ shift
+ '[' 0 -gt 0 ']'
+ return 0
+ stage chrootscript done
+ trap error_handler ERR
+ '[' -n done ']'
+ echo done
+ return 0
+ rm -f /var/cache/grml-debootstrap/stages_test.raw/chrootscript
+ for i in prepare_vm mkfs tunefs mount_target debootstrap_system preparechroot execute_pre_scripts chrootscript execute_scripts umount_chroot finalize_vm fscktool
+ stage execute_scripts
+ trap error_handler ERR
+ '[' -n '' ']'
+ grep -q done /var/cache/grml-debootstrap/stages_test.raw/execute_scripts
+ execute_scripts
+ trap error_handler ERR
+ export MNTPOINT
+ '[' -d '' ']'
+ '[' yes = yes ']'
+ '[' -d '' ']'
+ scripts=/etc/debootstrap/scripts/
+ for script in '${scripts}/*'
+ '[' -x '/etc/debootstrap/scripts//*' ']'
+ stage execute_scripts done
+ trap error_handler ERR
+ '[' -n done ']'
+ echo done
+ return 0
+ rm -f /var/cache/grml-debootstrap/stages_test.raw/execute_scripts
+ for i in prepare_vm mkfs tunefs mount_target debootstrap_system preparechroot execute_pre_scripts chrootscript execute_scripts umount_chroot finalize_vm fscktool
+ stage umount_chroot
+ trap error_handler ERR
+ '[' -n '' ']'
+ grep -q done /var/cache/grml-debootstrap/stages_test.raw/umount_chroot
+ umount_chroot
+ trap error_handler ERR
+ '[' -n /etc/debootstrap/install_notes ']'
+ '[' -r /mnt/debootstrap.20268//etc/debootstrap/install_notes ']'
+ '[' -n '' ']'
+ grep -q /mnt/debootstrap.20268 /proc/mounts
+ '[' -n 1 ']'
+ einfo 'Unmount /mnt/debootstrap.20268'
+ trap error_handler ERR
+ einfon 'Unmount /mnt/debootstrap.20268\n'
+ trap error_handler ERR
+ '[' '' '!=' yes ']'
+ '[' einfon = ebegin ']'
+ printf ' * Unmount /mnt/debootstrap.20268\n'
 * Unmount /mnt/debootstrap.20268
+ LAST_E_CMD=einfon
+ return 0
+ return 0
+ umount /mnt/debootstrap.20268
+ eend 0
+ trap error_handler ERR
+ local retval=0
+ shift
+ '[' 0 -gt 0 ']'
+ return 0
+ stage umount_chroot done
+ trap error_handler ERR
+ '[' -n done ']'
+ echo done
+ return 0
+ rm -f /var/cache/grml-debootstrap/stages_test.raw/umount_chroot
+ for i in prepare_vm mkfs tunefs mount_target debootstrap_system preparechroot execute_pre_scripts chrootscript execute_scripts umount_chroot finalize_vm fscktool
+ stage finalize_vm
+ trap error_handler ERR
+ '[' -n '' ']'
+ grep -q done /var/cache/grml-debootstrap/stages_test.raw/finalize_vm
+ finalize_vm
+ trap error_handler ERR
+ '[' -z 1 ']'
+ mount /dev/mapper/loop2p1 /mnt/debootstrap.20268
+ einfo 'Installing Grub as bootloader.'
+ trap error_handler ERR
+ einfon 'Installing Grub as bootloader.\n'
+ trap error_handler ERR
+ '[' '' '!=' yes ']'
+ '[' einfon = ebegin ']'
+ printf ' * Installing Grub as bootloader.\n'
 * Installing Grub as bootloader.
+ LAST_E_CMD=einfon
+ return 0
+ return 0
+ mount -t proc none /mnt/debootstrap.20268/proc
+ mount -t sysfs none /mnt/debootstrap.20268/sys
+ mount --bind /dev /mnt/debootstrap.20268/dev
+ mkdir -p /mnt/debootstrap.20268/boot/grub
+ '[' -d /mnt/debootstrap.20268/usr/lib/grub/i386-pc/ ']'
+ eerror 'Error: grub not installed inside Virtual Machine. Can not install bootloader.'
+ trap error_handler ERR
+ '[' '' '!=' yes ']'
+ '[' einfon = ebegin ']'
+ printf ' * Error: grub not installed inside Virtual Machine. Can not install bootloader.\n'
 * Error: grub not installed inside Virtual Machine. Can not install bootloader.
+ LAST_E_CMD=eerror
+ return 0
+ eend 1
+ trap error_handler ERR
+ local retval=1
+ shift
+ '[' 1 -gt 0 ']'
+ printf ' -> Failed (rc=1)\n'
 -> Failed (rc=1)
+ return 1
+ bailout 1
+ trap error_handler ERR
+ cleanup
+ trap error_handler ERR
+ '[' -n /var/cache/grml-debootstrap/variables_test.raw ']'
+ einfo 'Removing /var/cache/grml-debootstrap/variables_test.raw'
+ trap error_handler ERR
+ einfon 'Removing /var/cache/grml-debootstrap/variables_test.raw\n'
+ trap error_handler ERR
+ '[' '' '!=' yes ']'
+ '[' eerror = ebegin ']'
+ printf ' * Removing /var/cache/grml-debootstrap/variables_test.raw\n'
 * Removing /var/cache/grml-debootstrap/variables_test.raw
+ LAST_E_CMD=einfon
+ return 0
+ return 0
+ rm /var/cache/grml-debootstrap/variables_test.raw
+ eend 0
+ trap error_handler ERR
+ local retval=0
+ shift
+ '[' 0 -gt 0 ']'
+ return 0
+ '[' -n /var/cache/grml-debootstrap/stages_test.raw ']'
+ einfo 'Removing /var/cache/grml-debootstrap/stages_test.raw'
+ trap error_handler ERR
+ einfon 'Removing /var/cache/grml-debootstrap/stages_test.raw\n'
+ trap error_handler ERR
+ '[' '' '!=' yes ']'
+ '[' einfon = ebegin ']'
+ printf ' * Removing /var/cache/grml-debootstrap/stages_test.raw\n'
 * Removing /var/cache/grml-debootstrap/stages_test.raw
+ LAST_E_CMD=einfon
+ return 0
+ return 0
+ rmdir /var/cache/grml-debootstrap/stages_test.raw
+ eend 0
+ trap error_handler ERR
+ local retval=0
+ shift
+ '[' 0 -gt 0 ']'
+ return 0
+ grep -q '/mnt/debootstrap\.'
+ echo /mnt/debootstrap.20268
+ rmdir /mnt/debootstrap.20268
+ '[' -n /mnt/debootstrap.20268 ']'
+ grep -q /mnt/debootstrap.20268 /proc/mounts
+ '[' -x /mnt/debootstrap.20268/etc/init.d/ssh ']'
+ '[' -x /mnt/debootstrap.20268/etc/init.d/mdadm ']'
+ '[' -x /mnt/debootstrap.20268/bin/umount ']'
+ chroot /mnt/debootstrap.20268 umount -a
+ for ARG in /sys /proc /proc /dev /dev
+ '[' -x /mnt/debootstrap.20268/bin/umount ']'
+ chroot /mnt/debootstrap.20268 umount /sys
+ umount /mnt/debootstrap.20268//sys
+ for ARG in /sys /proc /proc /dev /dev
+ '[' -x /mnt/debootstrap.20268/bin/umount ']'
+ chroot /mnt/debootstrap.20268 umount /proc
+ umount /mnt/debootstrap.20268//proc
+ for ARG in /sys /proc /proc /dev /dev
+ '[' -x /mnt/debootstrap.20268/bin/umount ']'
+ chroot /mnt/debootstrap.20268 umount /proc
+ umount /mnt/debootstrap.20268//proc
+ for ARG in /sys /proc /proc /dev /dev
+ '[' -x /mnt/debootstrap.20268/bin/umount ']'
+ chroot /mnt/debootstrap.20268 umount /dev
+ umount /mnt/debootstrap.20268//dev
+ for ARG in /sys /proc /proc /dev /dev
+ '[' -x /mnt/debootstrap.20268/bin/umount ']'
+ chroot /mnt/debootstrap.20268 umount /dev
+ umount /mnt/debootstrap.20268//dev
+ '[' -n '' ']'
+ '[' -n '' ']'
+ einfo 'Unmounting /mnt/debootstrap.20268'
+ trap error_handler ERR
+ einfon 'Unmounting /mnt/debootstrap.20268\n'
+ trap error_handler ERR
+ '[' '' '!=' yes ']'
+ '[' einfon = ebegin ']'
+ printf ' * Unmounting /mnt/debootstrap.20268\n'
 * Unmounting /mnt/debootstrap.20268
+ LAST_E_CMD=einfon
+ return 0
+ return 0
+ umount /mnt/debootstrap.20268
+ eend 0
+ trap error_handler ERR
+ local retval=0
+ shift
+ '[' 0 -gt 0 ']'
+ return 0
+ '[' -n /var/cache/grml-debootstrap/stages_test.raw ']'
+ echo -n 'Removing stages directory /var/cache/grml-debootstrap/stages_test.raw: '
Removing stages directory /var/cache/grml-debootstrap/stages_test.raw: + rm -rf /var/cache/grml-debootstrap/stages_test.raw
+ echo done
done
+ grep -q '/mnt/debootstrap\.'
+ echo /mnt/debootstrap.20268
+ einfo 'Removing directory /mnt/debootstrap.20268'
+ trap error_handler ERR
+ einfon 'Removing directory /mnt/debootstrap.20268\n'
+ trap error_handler ERR
+ '[' '' '!=' yes ']'
+ '[' einfon = ebegin ']'
+ printf ' * Removing directory /mnt/debootstrap.20268\n'
 * Removing directory /mnt/debootstrap.20268
+ LAST_E_CMD=einfon
+ return 0
+ return 0
+ rmdir /mnt/debootstrap.20268
+ eend 0
+ trap error_handler ERR
+ local retval=0
+ shift
+ '[' 0 -gt 0 ']'
+ return 0
+ '[' -n ./test.raw ']'
+ einfo 'Removing loopback mount of file ./test.raw.'
+ trap error_handler ERR
+ einfon 'Removing loopback mount of file ./test.raw.\n'
+ trap error_handler ERR
+ '[' '' '!=' yes ']'
+ '[' einfon = ebegin ']'
+ printf ' * Removing loopback mount of file ./test.raw.\n'
 * Removing loopback mount of file ./test.raw.
+ LAST_E_CMD=einfon
+ return 0
+ return 0
+ kpartx -d ./test.raw
loop deleted : /dev/loop2
+ eend 0
+ trap error_handler ERR
+ local retval=0
+ shift
+ '[' 0 -gt 0 ']'
+ return 0
+ '[' -n 1 ']'
+ EXIT=1
+ '[' -n '' ']'
+ exit 1
tester@debian:~$ 

Git HEAD: Please make grml-debootstrap more friendly to install on non-Debian distributions

Background

Please make grml-debootstrap more friendly to build and install on non-Debian distributions. For instance, both Fedora and Gentoo do have all dependencies (including debootstrap) and could use a grml-debootstrap package.

Changes needed

./Makefile

  • Move /usr/share/xml/docbook/stylesheet/nwalsh/manpages/docbook.xsl to a variable so that it can be overridden using make DOCBOOK_XML=... all or so
  • Move the steps from debian/rules targets install (and in part binary-indep) to a new target install in the master Makefile:
    • dh_installdirs ...
    • install -m ... debian/grml-debootstrap/...
    • dh_installdocs TODO THANKS
    • dh_installman grml-debootstrap.8
    • (if built, maybe install the sexy HTML documentation, too)

./grml-deboostrap

  • Replace hardcoded grub-mkimage by something customizable. In some distros it is called grub2-mkimage.

update zsh-completion

The file zsh-completion doesn't provide all the features we have nowadays, we should also make sure the file is working out-of-the-box (at least as far as possible) on plain Debian.

Git HEAD: Potential issues with "apt-get --force-yes ..."

Hi!

I found that the chroot script of grml-deboostrap may call apt-get --force-yes ...
as of https://github.com/grml/grml-debootstrap/blob/master/chroot-script#L31
if /usr/bin/aptitude is missing inside the chroot.

Since debootstrap itself seems to install aptitude (I checked for wheezy, only) this may not be much of a practical problem right now.
Nevertheless, I am worried that --force-yes may lead to installation of packages that fail GPG verification checks, in some weird scenarios already or in in new scenarios in the future.

The man page of apt-get says

--force-yes
           Force yes; this is a dangerous option that will cause apt to continue without
           prompting if it is doing something potentially harmful. It should not be used
           except in very special situations.
           Using force-yes can potentially destroy your system!

I would therefore suggest removing the --force-yes parameter.

What do you think?

Git HEAD: VM mode leaves *p1 device behind (despite success)

# touch demo.hdd

# truncate --size $((2 * 1024**3)) demo.hdd

# LOOP_DEVICE="$(sudo losetup --show -f demo.hdd)"

# echo $LOOP_DEVICE
/dev/loop1

# sudo dmsetup create demo-disk --table "0 $(sudo blockdev --getsz ${LOOP_DEVICE}) linear ${LOOP_DEVICE} 0"

# find /dev/mapper/ | fgrep demo-disk
/dev/mapper/demo-disk

# sudo grml-debootstrap --hostname demo --vm --target /dev/mapper/demo-disk --password .... --release jessie --force &> demo.log ; echo $?
0

# find /dev/mapper/ | fgrep demo-disk
/dev/mapper/demo-diskp1 <-----
/dev/mapper/demo-disk

My understanding is that kpartx does not clean up devices using another partition delimiter ...

$ find /dev/mapper/ | fgrep demo-disk
/dev/mapper/demo-diskp1
/dev/mapper/demo-disk

#  sudo kpartx -d /dev/mapper/demo-disk ; echo $?
0

#  find /dev/mapper/ | fgrep demo-disk
/dev/mapper/demo-diskp1
/dev/mapper/demo-disk

and that p is not the default, so -p p would be needed to have it removed.
That leaves the question, what created the *p1 device in the first place, if all calls to kpartx -a lack -p p. Any ideas?

PS: This is grml-debootstrap off Git being run on Debian wheezy.
PPS: I observed this with LVM volumes first. It's not limited to linear device mapper targets.

update TODO file :)

The TODO file is quite outdated, so we should make sure it lists only recent issues (remove stuff that has been implemented or is known to work, get rid of stuff nobody cared about,...).

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.