Tracking issues for our Grml releases
grml / grml-debootstrap Goto Github PK
View Code? Open in Web Editor NEWwrapper around debootstrap
wrapper around debootstrap
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.
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 notLooking at the current user docs I find...
--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:
--vmfile
, "into a file" should be "into a regular file", maybe--vmfile
, there is no mention of qemu-img create
being run*--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:
--vmfile
, there is no mention of regular file--vmfile
, there is no mention of qemu-img create
being runVersion:
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:~$
When using --nopackages
https://github.com/grml/grml-debootstrap/blob/master/grml-debootstrap#L1222
# package selection:
cp $VERBOSE "${_opt_packages:-$CONFFILES/packages}" \
"${MNTPOINT}"/etc/debootstrap/packages
It should do a check beforehand
if [ "$PACKAGES" = 'yes' ] ; then
Not so important at the moment, but it will be more important once a solution for #22 has been found.
Looks easy. If you wish I can provide a pull request.
Dedicated ticket, originating from #40 (comment) and #40 (comment) .
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!
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?
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:
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.
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.
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.
Thanks!
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?
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-486
as well as linux-image-686-pae
:
acpi-support-base shouldn't be installed with systems running systemd according to https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=783247 - we should think about dropping it from the default package list. I'm unsure yet though what to do about systems without systemd and how to handle that then. Maybe by supporting packages.$release or so?
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.
/usr/share/xml/docbook/stylesheet/nwalsh/manpages/docbook.xsl
to a variable so that it can be overridden using make DOCBOOK_XML=... all
or sodebian/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
grub-mkimage
by something customizable. In some distros it is called grub2-mkimage
.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:
"$(dirname $(which "$0")")/.git"
dpkg-parsechangelog | sed -e '/^Version: / !d' -e 's|^Version: ||'
dpkg-query --show --showformat='${Version}' "grml-debootstrap"
as done at the momentWhat do you think?
Hi!
It seems version 0.68 has been released but the release page does not list a 0.68 release. By mistake, I suppose?
Best, Sebastian
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.
*** 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:~$
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:~$
Hello!
I noticed that in VM mode, command grub-mkimage
is called but
Is that on purpose?
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
The current stages order of
execute_pre_scripts
chrootscript
execute_post_scripts
finalize_vm
-- installation of GRUB -- no script stages afterrequire a wrapper around grml-debootstrap adding something like a post-post script execution stage for people who want to uninstall GRUB, be it for
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?
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?
We should provide a decent test suite so we can verify that all the supported releases and features are actually known to be working.
# 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.
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,...).
grml-deboostrap is currently re-writing 5 bytes of the MBR tp achieve a fixed disk ID:
https://github.com/grml/grml-debootstrap/blob/master/grml-debootstrap#L1039
Looking at the modern MBR layout I would expect it to write (either 6 bytes or) 4 bytes.
Compare with this output:
$ sudo fdisk -l /dev/loop0 | fgrep "Disk identifier"
Disk identifier: 0xdeadbeaf
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"
:
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"
double quote\
backslashThe fix I have in mind is made of two parts:
'
(single quote)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
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?
Commit 7fc0e06 added a binary file packer/fake-uname.so
. By mistake I suppose? I propose to remove it for transparency reasons and to reduce the risk of a user using that binary rather than its own.
# sudo grml-debootstrap --verbose --release wheezy --target /dev/loop0 --grub
/dev/loop0 --nopackages
[..]
Target: /dev/loop0
Install grub: /dev/loop0
[...]
blockdev: cannot open /dev/loop: No such file or directory
[..]
Network interfaces in VM should listen to DHCP by default. We should make sure it's automatically enabled at least for eth0 (don't think there's a better way than just hardcoding it in /etc/network/interfaces). Thanks for mentioning, @zeha.
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.
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?
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
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.
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
GRUB_DISABLE_LINUX_UUID=true
and/orgrub.cfg
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.
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?
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?
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
bootgrub.mksh
and use regular tools like parted to create a clean partition table, orbootgrub.mksh
, orPS: I would be interested why bootgrub.mksh
is currently used.
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?
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
${HOSTNAME}
(under that or another name) or${MNTPOINT}/etc/hostname
before script execution.What do you think?
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.
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?
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?
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?
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)
[..]
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.
Related to this bug in grub-install: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=783740 .
With grml-debootstrap, it looks like this:
[..]
Executing stage grub_install
Installing grub on /dev/foo/bar:
Installing for i386-pc platform.
grub-install: error: disk `lvmid/I5GpDx-OoGE-BrAT-ik3g-ClI4-WT9H-YcTq5q/v7P1XE-ERW2-gIFB-oeut-4QNb-TgCg-yWeOmd' not found.
[..]
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.