#!/usr/bin/python
-# Copyright 2011 Lars Wirzenius
+# Copyright 2011, 2012 Lars Wirzenius
+# Copyright 2012 Codethink Limited
#
# 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
'install package in DEB file onto system '
'(not from mirror)',
metavar='DEB')
+ self.settings.boolean(['no-kernel'], 'do not install a linux package')
self.settings.boolean(['enable-dhcp'], 'enable DHCP on eth0')
self.settings.string(['root-password'], 'set root password',
metavar='PASSWORD')
self.create_users(rootdir)
self.remove_udev_persistent_rules(rootdir)
self.setup_networking(rootdir)
- self.install_extlinux(rootdev, rootdir)
self.customize(rootdir)
+ self.install_extlinux(rootdev, rootdir)
except BaseException, e:
self.message('EEEK! Something bad happened...')
self.cleanup_system()
self.cleanup_system()
def message(self, msg):
+ logging.info(msg)
if self.settings['verbose']:
print msg
def debootstrap(self, rootdir):
self.message('Debootstrapping')
- if self.settings['arch'] == 'i386':
- kernel_arch = '686'
- else:
- kernel_arch = self.settings['arch']
- kernel_image = 'linux-image-2.6-%s' % kernel_arch
+ include = self.settings['package']
+
+ if not self.settings['no-kernel']:
+ if self.settings['arch'] == 'i386':
+ kernel_arch = '686'
+ else:
+ kernel_arch = self.settings['arch']
+ kernel_image = 'linux-image-2.6-%s' % kernel_arch
+ include.append(kernel_image)
- include = [kernel_image] + self.settings['package']
if self.settings['sudo'] and 'sudo' not in include:
include.append('sudo')
self.runcmd(['chroot', rootdir, 'passwd', '-l', 'root'])
else:
self.message('Give root an empty password')
- self.runcmd(['chroot', rootdir, 'passwd', '-d', 'root'])
+ self.delete_password(rootdir, 'root')
def create_users(self, rootdir):
def create_user(user):
self.set_password(rootdir, user, password)
else:
create_user(userpass)
+ self.delete_password(rootdir, userpass)
def set_password(self, rootdir, user, password):
encrypted = crypt.crypt(password, '..')
self.runcmd(['chroot', rootdir, 'usermod', '-p', encrypted, user])
+ def delete_password(self, rootdir, user):
+ self.runcmd(['chroot', rootdir, 'passwd', '-d', user])
+
def remove_udev_persistent_rules(self, rootdir):
self.message('Removing udev persistent cd and net rules')
for x in ['70-persistent-cd.rules', '70-persistent-net.rules']:
script = self.settings['customize']
if script:
self.message('Running customize script %s' % script)
- self.runcmd([script, rootdir])
+ with open('/dev/tty', 'w') as tty:
+ cliapp.runcmd([script, rootdir], stdout=tty, stderr=tty)
if __name__ == '__main__':