From 831ebbb94e941dad422ccd31d36e4c551946a925 Mon Sep 17 00:00:00 2001 From: Anton Hvornum Date: Tue, 21 Nov 2023 17:20:54 +0100 Subject: [PATCH] Added a --skip-ntp parameter to deal with #2144 --- archinstall/__init__.py | 1 + archinstall/lib/installer.py | 22 ++++++++++++++++------ 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/archinstall/__init__.py b/archinstall/__init__.py index 67230c7138..a77de737ec 100644 --- a/archinstall/__init__.py +++ b/archinstall/__init__.py @@ -77,6 +77,7 @@ def define_arguments(): parser.add_argument("-v", "--version", action="version", version="%(prog)s " + __version__) parser.add_argument("--config", nargs="?", help="JSON configuration file or URL") parser.add_argument("--creds", nargs="?", help="JSON credentials configuration file") + parser.add_argument("--skip-ntp", nargs="?", help="Disables NTP checks during instalation") parser.add_argument("--silent", action="store_true", help="WARNING: Disables all prompts for input and confirmation. If no configuration is provided, this is ignored") parser.add_argument("--dry-run", "--dry_run", action="store_true", diff --git a/archinstall/lib/installer.py b/archinstall/lib/installer.py index e2ca5e2bfd..f58d9a864b 100644 --- a/archinstall/lib/installer.py +++ b/archinstall/lib/installer.py @@ -130,13 +130,23 @@ def _verify_service_stop(self): One such service is "reflector.service" which updates /etc/pacman.d/mirrorlist We need to wait for it before we continue since we opted in to use a custom mirror/region. """ - info('Waiting for time sync (systemd-timesyncd.service) to complete.') - while True: - time_val = SysCommand('timedatectl show --property=NTPSynchronized --value').decode() - if time_val and time_val.strip() == 'yes': - break - time.sleep(1) + if not storage['arguments'].get('skip_ntp', False): + info('Waiting for time sync (timedatectl show) to complete.') + + _started_wait = time.time() + _notified = False + while True: + if not _notified and time.time() - _started_wait > 5: + _notified = True + warn("Time syncronization not completing, while you wait - check the docs for workarounds: https://archinstall.readthedocs.io/") + + time_val = SysCommand('timedatectl show --property=NTPSynchronized --value').decode() + if time_val and time_val.strip() == 'yes': + break + time.sleep(1) + else: + info('Skipping waiting for automatic time sync (this can cause issues if time it out of sync during installation)') info('Waiting for automatic mirror selection (reflector) to complete.') while self._service_state('reflector') not in ('dead', 'failed', 'exited'):