diff --git a/src/modules/openrccfg/main.py b/src/modules/openrccfg/main.py index 724b02c3f..9dc6bf1ff 100644 --- a/src/modules/openrccfg/main.py +++ b/src/modules/openrccfg/main.py @@ -27,22 +27,25 @@ from os.path import exists, join class OpenrcController: - """This is the service controller + """This is the openrc service controller """ def __init__(self): self.root = libcalamares.globalstorage.value('rootMountPoint') self.services = libcalamares.job.configuration.get('services', []) + self.initdDir = libcalamares.job.configuration['initdDir'] + self.runlevelsDir = libcalamares.job.configuration['runlevelsDir'] def update(self, state): - """Update init scripts + """call rc-update for each service listed """ for svc in self.services[state]: - if exists(self.root + "/etc/init.d/" + svc["name"]): - target_env_call( - ["rc-update", state, svc["name"], svc["runlevel"]] - ) + if exists(self.root + self.initdDir + "/" + svc["name"]): + if exists(self.root + self.runlevelsDir + "/" + svc["runlevel"]): + target_env_call( + ["rc-update", state, svc["name"], svc["runlevel"]] + ) def run(self): """Run the controller diff --git a/src/modules/openrccfg/openrccfg.conf b/src/modules/openrccfg/openrccfg.conf index e10da15ce..efd56bc14 100644 --- a/src/modules/openrccfg/openrccfg.conf +++ b/src/modules/openrccfg/openrccfg.conf @@ -1,8 +1,39 @@ +# operccfg +# openrc services module to set service runlevels via rc-update in the chroot +# +# format of the conf +### +# services: +# add: +# - name: foo1 +# runlevel: default +# - name: foo2 +# runlevel: nonetwork +# del: +# - name: foo3 +# runlevel: default +# +# initdDir: /etc/init.d +# +# runlevelsDir: /etc/runlevels +#### +# add: list of services and their runlevels to add +# del: list of services and their runlevels to delete +# name: the service name +# runlevel: can hold any runlevel present on the target system +# initdDir: holds the openrc service directory location +# runlevelsDir: holds the runlevels directory location +# +# handle del with care and only use it if absolutely necessary +# if a service is listed in the conf but is not present/detected on the target system, +# or a runlevel does not exist, it will be ignored and skipped +# --- services: add: - name: "NetworkManager" runlevel: "default" -# del: -# - name: "hwclock" -# runlevel: "boot" + +initdDir: /etc/init.d + +runlevelsDir: /etc/runlevels