further kernel config checks, related to #65

This commit is contained in:
erpalma
2018-11-06 11:06:03 +01:00
parent c1f5f95c37
commit 76e097663c

View File

@@ -5,6 +5,7 @@ import configparser
import dbus import dbus
import glob import glob
import os import os
import re
import struct import struct
import subprocess import subprocess
import sys import sys
@@ -15,6 +16,7 @@ from errno import EACCES, EPERM
from gi.repository import GLib from gi.repository import GLib
from mmio import MMIO, MMIOError from mmio import MMIO, MMIOError
from multiprocessing import cpu_count from multiprocessing import cpu_count
from platform import uname
from threading import Event, Thread from threading import Event, Thread
DEFAULT_SYSFS_POWER_PATH = '/sys/class/power_supply/AC*/online' DEFAULT_SYSFS_POWER_PATH = '/sys/class/power_supply/AC*/online'
@@ -450,13 +452,36 @@ def power_thread(config, regs, exit_event):
exit_event.wait(wait_t) exit_event.wait(wait_t)
def main(): def check_kernel():
global args
if os.geteuid() != 0: if os.geteuid() != 0:
print('[E] No root no party. Try again with sudo.') print('[E] No root no party. Try again with sudo.')
sys.exit(1) sys.exit(1)
kernel_config = None
try:
with open(os.path.join('/boot', 'config-{:s}'.format(uname()[2]))) as f:
kernel_config = f.read()
except IOError:
try:
with open(os.path.join('/proc', 'config.gz')) as f:
kernel_config = f.read()
except IOError:
pass
if kernel_config is None:
print('[W] Unable to obtain and validate kernel config.')
elif not re.search('CONFIG_DEVMEM=y', kernel_config):
print('[E] Bad kernel config: you need CONFIG_DEVMEM=y.')
sys.exit(1)
elif not re.search('CONFIG_X86_MSR=(y|m)', kernel_config):
print('[E] Bad kernel config: you need CONFIG_X86_MSR builtin or as module.')
sys.exit(1)
def main():
global args
check_kernel()
parser = argparse.ArgumentParser() parser = argparse.ArgumentParser()
parser.add_argument('--debug', action='store_true', help='add some debug info and additional checks') parser.add_argument('--debug', action='store_true', help='add some debug info and additional checks')
parser.add_argument('--config', default='/etc/lenovo_fix.conf', help='override default config file path') parser.add_argument('--config', default='/etc/lenovo_fix.conf', help='override default config file path')