add 'systemctl' command and use it in postinstall
The 'systemctl' command can be used to enable, disable, or mask systemd units inside the runtime being modified. Modify runtime-postinstall.tmpl to use the 'systemctl' command. We also no longer remove quota*.service or kexec*.service, since these aren't enabled by default. And systemd-remount-api-vfs.service should work correctly now, so we can leave it alone as well.
This commit is contained in:
parent
8d49fcdc24
commit
3a75b2e07d
@ -20,18 +20,24 @@ move etc/yum.repos.d etc/anaconda.repos.d
|
|||||||
|
|
||||||
## Configure systemd to start anaconda
|
## Configure systemd to start anaconda
|
||||||
remove etc/systemd/system/default.target
|
remove etc/systemd/system/default.target
|
||||||
remove etc/systemd/system/default.target.wants/*
|
|
||||||
symlink /lib/systemd/system/anaconda.target etc/systemd/system/default.target
|
symlink /lib/systemd/system/anaconda.target etc/systemd/system/default.target
|
||||||
## remove/disable unwanted systemd services
|
|
||||||
removefrom systemd /usr/lib/systemd/system/kexec*
|
## Disable unwanted systemd services
|
||||||
removefrom systemd /usr/lib/systemd/system/local-fs.target.wants/media.mount
|
systemctl disable systemd-readahead-collect.service \
|
||||||
removefrom systemd /usr/lib/systemd/system/media.mount
|
systemd-readahead-replay.service \
|
||||||
removefrom systemd /usr/lib/systemd/system/*plymouth*
|
mdmonitor.service \
|
||||||
removefrom systemd /usr/lib/systemd/system/quota*.service
|
mdmonitor-takeover.service \
|
||||||
removefrom systemd /usr/lib/systemd/system/systemd-remount-api-vfs.service
|
lvm2-monitor.service
|
||||||
removefrom initscripts */lib/systemd/system/local-fs.target.wants/fedora-storage*.service */lib/systemd/system/basic.target.wants/*.service
|
## These services can't be disabled normally (they're linked into place in
|
||||||
removefrom lvm2 */lib/systemd/system/*
|
## /usr/lib/systemd rather than /etc/systemd), so we have to mask them.
|
||||||
removefrom mdadm */lib/systemd/system/*
|
systemctl mask fedora-configure.service fedora-loadmodules.service \
|
||||||
|
fedora-storage-init.service fedora-storage-init-late.service \
|
||||||
|
fedora-autorelabel.service fedora-autorelabel-mark.service \
|
||||||
|
fedora-wait-storage.service media.mount \
|
||||||
|
plymouth-quit.service plymouth-quit-wait.service \
|
||||||
|
plymouth-kexec.service plymouth-halt.service \
|
||||||
|
plymouth-poweroff.service plymouth-reboot.service \
|
||||||
|
plymouth-read-write.service plymouth-start.service
|
||||||
|
|
||||||
## install some basic configuration files
|
## install some basic configuration files
|
||||||
append etc/resolv.conf ""
|
append etc/resolv.conf ""
|
||||||
|
@ -531,3 +531,25 @@ class LoraxTemplateRunner(object):
|
|||||||
addrsize_data = struct.pack(">iiii", 0, int(addr, 16), 0, os.stat(src).st_size)
|
addrsize_data = struct.pack(">iiii", 0, int(addr, 16), 0, os.stat(src).st_size)
|
||||||
addrsize.write(addrsize_data)
|
addrsize.write(addrsize_data)
|
||||||
addrsize.close()
|
addrsize.close()
|
||||||
|
|
||||||
|
def systemctl(self, cmd, *units):
|
||||||
|
'''
|
||||||
|
systemctl [enable|disable|mask] UNIT [UNIT...]
|
||||||
|
Enable, disable, or mask the given systemd units.
|
||||||
|
Examples:
|
||||||
|
systemctl disable lvm2-monitor.service
|
||||||
|
systemctl mask fedora-storage-init.service fedora-configure.service
|
||||||
|
'''
|
||||||
|
if cmd not in ('enable', 'disable', 'mask'):
|
||||||
|
raise ValueError('unsupported systemctl cmd: %s' % cmd)
|
||||||
|
if not units:
|
||||||
|
logger.debug("systemctl: no units given for %s, ignoring", cmd)
|
||||||
|
return
|
||||||
|
self.mkdir("/run/systemd/system") # XXX workaround for systemctl bug
|
||||||
|
systemctl = ('systemctl', '--root', self.outroot, '--no-reload',
|
||||||
|
'--quiet', cmd)
|
||||||
|
# XXX for some reason 'systemctl enable/disable' always returns 1
|
||||||
|
try:
|
||||||
|
check_call(systemctl + units)
|
||||||
|
except CalledProcessError:
|
||||||
|
pass
|
||||||
|
Loading…
Reference in New Issue
Block a user