[hwclock] Be more lenient.
Patch by Gabriel C. (@abucodonosor). - use libcalamares functions - no need to copy /etc/adjtime over we can run hwclock in chroot since we have /proc , /sys , /dev , /run/* already bind mounted. - added RTC and ISA probing methode ( see issue #873) - we probe default from /dev/rtc* , - fall back to ISA - still doesn't work we just print a BIOS/Kernel BUG message and continue - NOTE: issue #873 is about broken ArchLinux kernel config but there are HP boxes with real RTC problems no matter what kernel config is used so let us be nice and don't error out.. FIXES #873
This commit is contained in:
parent
0116465303
commit
afbdcc3782
@ -5,7 +5,8 @@
|
||||
#
|
||||
# Copyright 2014 - 2015, Philip Müller <philm@manjaro.org>
|
||||
# Copyright 2014, Teo Mrnjavac <teo@kde.org>
|
||||
# Copyright 2017. Alf Gaida <agaida@siduction.org>
|
||||
# Copyright 2017, Alf Gaida <agaida@siduction.org>
|
||||
# Copyright 2017, Gabriel Craciunescu <crazy@frugalware.org>
|
||||
#
|
||||
# Calamares is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
@ -20,26 +21,33 @@
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with Calamares. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
import subprocess
|
||||
import shutil
|
||||
|
||||
import libcalamares
|
||||
|
||||
|
||||
def run():
|
||||
"""
|
||||
Set hardware clock.
|
||||
"""
|
||||
hwclock_rtc = ["hwclock", "--systohc", "--utc"]
|
||||
hwclock_isa = ["hwclock", "--systohc", "--utc", "--directisa"]
|
||||
is_broken_rtc = False
|
||||
is_broken_isa = False
|
||||
|
||||
root_mount_point = libcalamares.globalstorage.value("rootMountPoint")
|
||||
try:
|
||||
subprocess.check_call(["hwclock", "--systohc", "--utc"])
|
||||
except subprocess.CalledProcessError as e:
|
||||
return (
|
||||
"Cannot set hardware clock.",
|
||||
"hwclock terminated with exit code {}.".format(e.returncode)
|
||||
)
|
||||
|
||||
shutil.copy2("/etc/adjtime", "{!s}/etc/".format(root_mount_point))
|
||||
ret = libcalamares.utils.target_env_call(hwclock_rtc)
|
||||
if ret != 0:
|
||||
is_broken_rtc = True
|
||||
libcalamares.utils.debug("Hwclock returned error code {}".format(ret))
|
||||
libcalamares.utils.debug(" .. RTC method failed, trying ISA bus method.")
|
||||
else:
|
||||
libcalamares.utils.debug("Hwclock set using RTC method.")
|
||||
if is_broken_rtc:
|
||||
ret = libcalamares.utils.target_env_call(hwclock_isa)
|
||||
if ret != 0:
|
||||
is_broken_isa = True
|
||||
libcalamares.utils.debug("Hwclock returned error code {}".format(ret))
|
||||
libcalamares.utils.debug(" .. ISA bus method failed.")
|
||||
else:
|
||||
libcalamares.utils.debug("Hwclock set using ISA bus methode.")
|
||||
if is_broken_rtc and is_broken_isa:
|
||||
libcalamares.utils.debug("BIOS or Kernel BUG: Setting hwclock failed.")
|
||||
|
||||
return None
|
||||
|
Loading…
Reference in New Issue
Block a user