import time
-__version__ = '0.6'
+__version__ = '0.7'
# pylint: disable=invalid-name
if self.settings['mbr'] or self.settings['extlinux']:
self.install_mbr()
(rootdev, bootdev, swapdev) = self.setup_kpartx()
- if self.settings['swap']:
+ if self.settings['swap'] > 0:
self.message("Creating swap space")
self.runcmd(['mkswap', swapdev])
self.mkfs(rootdev, fstype=roottype)
if self.settings['owner']:
self.chown()
- except BaseException, e:
+ except BaseException as e:
self.message('EEEK! Something bad happened...')
if rootdir:
db_log = os.path.join(rootdir, 'debootstrap', 'debootstrap.log')
bootsize = 0
extent = '100%'
swap = 256 * 1024 * 1024
- if self.settings['swap']:
+ if self.settings['swap'] > 0:
if self.settings['swap'] > swap:
swap = self.settings['swap']
else:
'mkpart', 'primary', '0%', extent])
self.runcmd(['parted', '-s', self.settings['image'],
'set', '1', 'boot', 'on'])
- if self.settings['swap']:
+ if self.settings['swap'] > 0:
logging.debug("Creating swap partition")
self.runcmd(['parted', '-s', self.settings['image'],
'mkpart', 'primary', 'linux-swap', extent, '100%'])
bootindex = None
swapindex = None
out = self.runcmd(['kpartx', '-avs', self.settings['image']])
- if self.settings['bootsize'] and self.settings['swap']:
+ if self.settings['bootsize'] and self.settings['swap'] > 0:
bootindex = 0
rootindex = 1
swapindex = 2
bootindex = 0
rootindex = 1
parts = 2
- elif self.settings['swap']:
+ elif self.settings['swap'] > 0:
rootindex = 0
swapindex = 1
parts = 2
for line in out.splitlines()
if line.startswith('add map ')]
if len(devices) != parts:
- msg = 'Surprising number of partitions'
+ msg = 'Surprising number of partitions - check output of losetup -a'
+ logging.debug("%s" % self.runcmd(['losetup', '-a']))
logging.debug("%s: devices=%s parts=%s", msg, devices, parts)
raise cliapp.AppException(msg)
root = '/dev/mapper/%s' % devices[rootindex]
if self.settings['bootsize']:
boot = '/dev/mapper/%s' % devices[bootindex]
- if self.settings['swap']:
+ if self.settings['swap'] > 0:
swap = '/dev/mapper/%s' % devices[swapindex]
return root, boot, swap
include.append('acpid')
if self.settings['grub']:
- include.append('grub2')
+ include.append('grub-pc')
if not self.settings['no-kernel']:
if self.settings['arch'] == 'i386':
kernel_arch = '486'
+ elif self.settings['arch'] == 'armhf':
+ kernel_arch = 'armmp'
else:
kernel_arch = self.settings['arch']
kernel_image = 'linux-image-%s' % kernel_arch
f.write('%s / %s errors=remount-ro 0 1\n' % (rootdevstr, roottype))
if bootdevstr:
f.write('%s /boot %s errors=remount-ro 0 2\n' % (bootdevstr, boottype))
- if self.settings['swap']:
+ if self.settings['swap'] > 0:
f.write("/dev/sda3 swap swap defaults 0 0\n")
- elif self.settings['swap']:
+ elif self.settings['swap'] > 0:
f.write("/dev/sda2 swap swap defaults 0 0\n")
def install_debs(self, rootdir):
with open(inittab, 'a') as f:
f.write('\nS0:23:respawn:%s\n' % serial_command)
+ def _grub_serial_console(self, rootdir):
+ cmdline = 'GRUB_CMDLINE_LINUX_DEFAULT="console=tty0 console=tty1 console=ttyS0,38400n8"'
+ terminal = 'GRUB_TERMINAL="serial gfxterm"'
+ command = 'GRUB_SERIAL_COMMAND="serial --speed=38400 --unit=0 --parity=no --stop=1"'
+ grub_cfg = os.path.join(rootdir, 'etc', 'default', 'grub')
+ logging.debug("Allowing serial output in grub config %s", grub_cfg)
+ with open(grub_cfg, 'a+') as cfg:
+ cfg.write("# %s serial support\n" % os.path.basename(__file__))
+ cfg.write("%s\n" % cmdline)
+ cfg.write("%s\n" % terminal)
+ cfg.write("%s\n" % command)
+
def install_grub2(self, rootdev, rootdir):
self.message("Configuring grub2")
# rely on kpartx using consistent naming to map loop0p1 to loop0
'%s' % os.path.join(rootdir, 'proc')])
self.runcmd(['mount', '/sys', '-t', 'sysfs', '-obind',
'%s' % os.path.join(rootdir, 'sys')])
+ if self.settings['serial-console']:
+ self._grub_serial_console(rootdir)
- cmdline = 'GRUB_CMDLINE_LINUX_DEFAULT="console=tty0 console=tty1 console=ttyS0,38400n8"'
- terminal = 'GRUB_TERMINAL="serial gfxterm"'
- command = 'GRUB_SERIAL_COMMAND="serial --speed=38400 --unit=0 --parity=no --stop=1"'
- grub_cfg = os.path.join(rootdir, 'etc', 'default', 'grub')
- logging.debug("Allowing serial output in grub config %s", grub_cfg)
- with open(grub_cfg, 'a+') as cfg:
- cfg.write("# %s serial support\n" % os.path.basename(__file__))
- cfg.write("%s\n" % cmdline)
- cfg.write("%s\n" % terminal)
- cfg.write("%s\n" % command)
try:
self.runcmd(['chroot', rootdir, 'update-grub'])
self.runcmd(['chroot', rootdir, 'grub-install', install_dev])