diff --git a/src/mkvm/configure.py b/src/mkvm/configure.py index d7ec84f..c52cd69 100644 --- a/src/mkvm/configure.py +++ b/src/mkvm/configure.py @@ -1,6 +1,7 @@ import glob import logging import os +import re import subprocess @@ -53,6 +54,27 @@ def set_hostname(mountpoint, hostname): f.write(line) +def enable_console_login(mountpoint, driver): + path = os.path.join(mountpoint, 'etc/inittab') + with open(path) as f: + lines = f.readlines() + regex = re.compile(r'^#?s0') + entry = 's0:{runlevels}:{action}:{process}' + with open(path, 'w') as f: + for line in lines: + if regex.match(line): + runlevels, action, process = line.split(':', 3)[1:] + if driver == 'virtio': + process = process.replace('ttyS0', 'hvc0') + f.write(entry.format( + runlevels=runlevels, + action=action, + process=process, + )) + else: + f.write(line) + + def run_custom_script(mountpoint, script): cmd = ['chroot', mountpoint, '/bin/sh'] env = CUSTOM_SCRIPT_ENV.copy() @@ -74,6 +96,8 @@ def configure(vm): set_timezone(vm.mountpoint, vm.timezone) if vm.fqdn: set_hostname(vm.mountpoint, vm.fqdn) + if vm.console: + enable_console_login(vm.mountpoint, vm.console) if vm.customize: run_custom_script(vm.mountpoint, vm.customize)