]> git.siccegge.de Git - forks/vmdebootstrap.git/blobdiff - vmdebootstrap
Allow builds without a tty
[forks/vmdebootstrap.git] / vmdebootstrap
index ed4904088123b3c3afdb375dd01fb71e23e22183..9247e6b9947545f1aca235a0908fc7d040b80e77 100755 (executable)
@@ -606,6 +606,17 @@ class VmDebootstrap(cliapp.Application):  # pylint: disable=too-many-public-meth
                      '%s' % os.path.join(rootdir, 'proc')])
         self.runcmd(['mount', '/sys', '-t', 'sysfs', '-obind',
                      '%s' % os.path.join(rootdir, 'sys')])
+
+        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])
@@ -732,7 +743,10 @@ append initrd=%(initrd)s root=UUID=%(uuid)s ro %(kserial)s
         self.message('Running customize script %s' % script)
         logging.info("rootdir=%s image=%s", rootdir, self.settings['image'])
         with open('/dev/tty', 'w') as tty:
-            cliapp.runcmd([script, rootdir, self.settings['image']], stdout=tty, stderr=tty)
+            try:
+                cliapp.runcmd([script, rootdir, self.settings['image']], stdout=tty, stderr=tty)
+            except IOError as e:
+                subprocess.call([script, rootdir, self.settings['image']])
 
     def create_tarball(self, rootdir):
         # Create a tarball of the disk's contents