X-Git-Url: https://git.siccegge.de//index.cgi?p=forks%2Fvmdebootstrap.git;a=blobdiff_plain;f=vmdebootstrap;h=8301bd5c6452ee333d232c412bf42e4efadebc91;hp=694d1f6d94679b96c557f7cdb33db90b6df4f963;hb=41f88537a1fd6363a0b2da9796a176f5a727e279;hpb=6e62b5502a892e4738137205cda39c61b1bf0eac diff --git a/vmdebootstrap b/vmdebootstrap index 694d1f6..8301bd5 100755 --- a/vmdebootstrap +++ b/vmdebootstrap @@ -1,6 +1,7 @@ #!/usr/bin/python # Copyright 2011-2013 Lars Wirzenius # Copyright 2012 Codethink Limited +# Copyright 2014 Neil Williams # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -26,14 +27,14 @@ import tempfile import time -__version__ = '0.3' +__version__ = '0.4' class VmDebootstrap(cliapp.Application): def add_settings(self): default_arch = subprocess.check_output( - ["dpkg", "--print-architecture"]).strip() + ["dpkg", "--print-architecture"]).strip() self.settings.boolean(['verbose'], 'report what is going on') self.settings.string(['image'], 'put created disk image in FILE', @@ -53,16 +54,13 @@ class VmDebootstrap(cliapp.Application): 'set up foreign debootstrap environment using provided program (ie binfmt handler)') self.settings.string(['variant'], 'select debootstrap variant it not using the default') - self.settings.boolean( - ['extlinux'], - 'install extlinux?', - default=True) + self.settings.boolean(['extlinux'], 'install extlinux?', default=True) self.settings.string(['tarball'], "tar up the disk's contents in FILE", metavar='FILE') self.settings.string(['mirror'], 'use MIRROR as package source (%default)', metavar='URL', - default='http://cdn.debian.net/debian/') + default='http://http.debian.net/debian/') self.settings.string(['arch'], 'architecture to use (%default)', metavar='ARCH', default=default_arch) @@ -163,6 +161,8 @@ class VmDebootstrap(cliapp.Application): if self.settings['configure-apt']: self.configure_apt(rootdir) self.customize(rootdir) + self.update_initramfs(rootdir) + if self.settings['image']: if self.settings['grub']: self.install_grub2(rootdev, rootdir) @@ -250,6 +250,12 @@ class VmDebootstrap(cliapp.Application): self.runcmd(['parted', '-s', self.settings['image'], 'set', '1', 'boot', 'on']) + def update_initramfs(self, rootdir): + cmd = os.path.join('usr', 'sbin', 'update-initramfs') + if os.path.exists(os.path.join(rootdir, cmd)): + self.message("Updating the initramfs") + self.runcmd(['chroot', rootdir, cmd, '-u']) + def install_mbr(self): if os.path.exists("/sbin/install-mbr"): self.message('Installing MBR') @@ -332,7 +338,7 @@ class VmDebootstrap(cliapp.Application): self.message('Running debootstrap second stage') self.runcmd(['chroot', rootdir, '/debootstrap/debootstrap', '--second-stage'], - env=env) + env=env) def set_hostname(self, rootdir): hostname = self.settings['hostname'] @@ -477,7 +483,7 @@ class VmDebootstrap(cliapp.Application): self.runcmd(['chroot', rootdir, 'update-grub']) self.runcmd(['chroot', rootdir, 'grub-install', install_dev]) except cliapp.AppException as e: - self.message("Failed to configure grub2. Using extlinux.") + self.message("Failed. Is grub2-common installed? Using extlinux.") self.runcmd(['umount', os.path.join(rootdir, 'sys')]) self.runcmd(['umount', os.path.join(rootdir, 'proc')]) self.runcmd(['umount', os.path.join(rootdir, 'dev')])