Class: Yast::SystemdClass
- Inherits:
-
Module
- Object
- Module
- Yast::SystemdClass
- Defined in:
- ../../src/modules/Systemd.rb
Instance Method Summary (collapse)
-
- (Fixnum) DefaultRunlevel
Get the default runlevel for systemd.
-
- (Object) Installed
Check whether the systemd package is installed.
- - (Object) main
-
- (Object) Running
Check whether systemd init is currently running.
-
- (Boolean) SetDefaultRunlevel(selected_runlevel)
Set default runlevel for systemd (assumes systemd is installed).
Instance Method Details
- (Fixnum) DefaultRunlevel
Get the default runlevel for systemd
98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 |
# File '../../src/modules/Systemd.rb', line 98 def DefaultRunlevel target = Convert.to_string( SCR.Read(path(".target.symlink"), @default_target_symlink) ) Builtins.y2milestone("Default symlink points to: %1", target) if target == nil Builtins.y2error( "Cannot read symlink target of %1", @default_target_symlink ) return nil end # check runlevel<number>.target runlevel = Builtins.regexpsub(target, "/runlevel([0-6]).target$", "\\1") if runlevel != nil ret = Builtins.tointeger(runlevel) Builtins.y2milestone("Default runlevel: %1", ret) return ret end # check runlevel specified by a symbolic name # (this is written in systemd documentation how to change the default, # YaST should also support this style in case users do a manual change) runlevel_name = Builtins.regexpsub(target, "/([^/]*).target$", "\\1") if runlevel_name != nil Builtins.y2milestone( "Detected default runlevel name: %1", runlevel_name ) mapping = { "poweroff" => 0, "rescue" => 1, # this is ambiguous, runlevels 2 and 4 also point to multi-user # assume runlevel 3 in this case (the most probable) "multi-user" => 3, "graphical" => 5, "reboot" => 6 } ret = Ops.get(mapping, runlevel_name) Builtins.y2milestone("Default runlevel: %1", ret) return ret end Builtins.y2error("Cannot determine the default runlevel") nil end |
- (Object) Installed
Check whether the systemd package is installed
49 50 51 52 |
# File '../../src/modules/Systemd.rb', line 49 def Installed # check for systemd executable Ops.greater_or_equal(SCR.Read(path(".target.size"), @systemd_path), 0) end |
- (Object) main
36 37 38 39 40 41 42 43 44 45 46 |
# File '../../src/modules/Systemd.rb', line 36 def main Yast.import "FileUtils" @systemd_path = "/bin/systemd" @default_target_symlink = "/etc/systemd/system/default.target" @systemd_targets_dir = "/usr/lib/systemd/system" @systemd_mountdir = "/sys/fs/cgroup/systemd" textdomain "base" end |
- (Object) Running
Check whether systemd init is currently running
56 57 58 |
# File '../../src/modules/Systemd.rb', line 56 def Running FileUtils.IsDirectory(@systemd_mountdir) == true end |
- (Boolean) SetDefaultRunlevel(selected_runlevel)
Set default runlevel for systemd (assumes systemd is installed)
63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 |
# File '../../src/modules/Systemd.rb', line 63 def SetDefaultRunlevel(selected_runlevel) if selected_runlevel == nil || Ops.less_than(selected_runlevel, 0) || Ops.greater_than(selected_runlevel, 6) Builtins.y2error( "Invalid default runlevel (must be in range 0..6): %1", selected_runlevel ) return false end Builtins.y2milestone( "Setting systemd default runlevel: %1", selected_runlevel ) # create symbolic link, -f to rewrite the current link (if exists) command = Builtins.sformat( "/bin/ln -s -f %1/runlevel%2.target %3", @systemd_targets_dir, selected_runlevel, @default_target_symlink ) Builtins.y2milestone("Executing: %1", command) res = Convert.to_integer(SCR.Execute(path(".target.bash"), command)) Builtins.y2debug("Result: %1", res) ret = res == 0 Builtins.y2milestone("Default runlevel set: %1", ret) ret end |