index : archinstall32 | |
Archlinux32 installer | gitolite user |
summaryrefslogtreecommitdiff |
author | Anton Hvornum <anton@hvornum.se> | 2021-11-07 11:23:29 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-11-07 12:23:29 +0100 |
commit | 565464c72df713db7df94809a75b313aed3a7621 (patch) | |
tree | 10a16b3791ea7858cbc467ef384b3aee1bbdc52b /archinstall/lib | |
parent | c62cef3cfd876d4f6e4fbff2f92abc58d1dd045b (diff) |
-rw-r--r-- | archinstall/lib/installer.py | 2 | ||||
-rw-r--r-- | archinstall/lib/systemd.py | 17 |
diff --git a/archinstall/lib/installer.py b/archinstall/lib/installer.py index c2c30f7c..1318cb16 100644 --- a/archinstall/lib/installer.py +++ b/archinstall/lib/installer.py @@ -691,6 +691,7 @@ class Installer: return InstallationFile(self, filename, owner) def set_keyboard_language(self, language: str) -> bool: + log(f"Setting keyboard language to {language}", level=logging.INFO) if len(language.strip()): if not verify_keyboard_layout(language): self.log(f"Invalid keyboard language specified: {language}", fg="red", level=logging.ERROR) @@ -712,6 +713,7 @@ class Installer: return True def set_x11_keyboard_language(self, language: str) -> bool: + log(f"Setting x11 keyboard language to {language}", level=logging.INFO) """ A fallback function to set x11 layout specifically and separately from console layout. This isn't strictly necessary since .set_keyboard_language() does this as well. diff --git a/archinstall/lib/systemd.py b/archinstall/lib/systemd.py index a7e35839..7f732c99 100644 --- a/archinstall/lib/systemd.py +++ b/archinstall/lib/systemd.py @@ -1,4 +1,6 @@ import logging +import time +from .exceptions import SysCallError from .general import SysCommand, SysCommandWorker, locate_binary from .installer import Installer from .output import log @@ -65,8 +67,10 @@ class Boot: '-D', self.instance.target, '--timezone=off', '-b', + '--no-pager', '--machine', self.container_name ]) + # '-P' or --console=pipe could help us not having to do a bunch of os.write() calls, but instead use pipes (stdin, stdout and stderr) as usual. if not self.ready: while self.session.is_alive(): @@ -85,7 +89,14 @@ class Boot: log(args[1], level=logging.ERROR, fg='red') log(f"The error above occured in a temporary boot-up of the installation {self.instance}", level=logging.ERROR, fg="red") - SysCommand(f'machinectl shell {self.container_name} /bin/bash -c "shutdown now"') + shutdown = SysCommand(f'systemd-run --machine={self.container_name} --pty /bin/bash -c "shutdown now"') + while self.session.is_alive(): + time.sleep(0.25) + + if shutdown.exit_code == 0: + storage['active_boot'] = None + else: + raise SysCallError(f"Could not shut down temporary boot of {self.instance}", level=logging.ERROR, fg="red") def __iter__(self): if self.session: @@ -112,10 +123,10 @@ class Boot: cmd[0] = locate_binary(cmd[0]) - return SysCommand(["machinectl", "shell", self.container_name, *cmd], *args, **kwargs) + return SysCommand(["systemd-run", f"--machine={self.container_name}", "--pty", *cmd], *args, **kwargs) def SysCommandWorker(self, cmd: list, *args, **kwargs): if cmd[0][0] != '/' and cmd[0][:2] != './': cmd[0] = locate_binary(cmd[0]) - return SysCommandWorker(["machinectl", "shell", self.container_name, *cmd], *args, **kwargs) + return SysCommandWorker(["systemd-run", f"--machine={self.container_name}", "--pty", *cmd], *args, **kwargs) |