View RSS Feed

James' openSUSE Bash Scripting (and other things) Blog - Your Comments are Welcome!

systemd and using the after.local script in openSUSE 12.1/12.2/12.3

Rating: 3 votes, 5.00 average.
I have found out that in openSUSE 12.1/12.2 and now 12.3, some startup scripts do not operate due to the usage of systemd. systemd really speeds up system startup by running the many startup processes in parallel and avoids the usage of shell scripts altogether. That is is good for speed, but not good if you are in need of running something in openSUSE as root when the system is restarted. In my case I was trying to run some VirtualBox mount commands in a VM running openSUSE 12.1/12.2/12.3 and could not get them to work properly. I nominally just add these commands to the /etc/init.d/after.local bash script, but in openSUSE 12.1/12.2/12.3 I found out that by default, after.local is not being run anymore. First off I have a procedure to make /etc/init.d/after.local run as normal, at least it seemed normal AND, I found out that you can instead just use /etc/init.d/boot.local as if it was after.local and it works just as before.

Now, since I figured out how to make after.local work, lets see how that is done.

1. We need to create the text file after-local.service (shown below) in the folder /usr/lib/systemd/system as root (Alt-F2):

Code:
kdesu kwrite /usr/lib/systemd/system/after-local.service
OR

Code:
gnomesu gedit /usr/lib/systemd/system/after-local.service
This is what you put into this file and save it:

Code:
#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU General Public License as published by
#  the Free Software Foundation; either version 2 of the License, or
#  (at your option) any later version.

[Unit]
Description=/etc/init.d/after.local Compatibility
ConditionFileIsExecutable=/etc/init.d/after.local

[Service]
Type=oneshot
ExecStart=/etc/init.d/after.local
TimeoutSec=0
StandardOutput=tty
RemainAfterExit=yes
SysVStartPriority=99

[Install]
WantedBy=multi-user.target
2. Next, we need to add the after-local.service to systemd. Open up a terminal session and run the following command:

Code:
sudo systemctl enable /usr/lib/systemd/system/after-local.service
3. Finally, you need to edit the file /etc/init.d/after.local as root and add in the stuff you want to run as root when you startup openSUSE (Alt-F2):

Code:
kdesu kwrite /etc/init.d/after.local
OR

Code:
gnomesu gedit /etc/init.d/after.local
The commands shown here assume you are using KDE, which is the default in openSUSE. Please let me know if you have any questions about using this procedure. I have a script called sasi that can install the after-local file and enable it all for you automatically. Open up a terminal session (in openSUSE 12.1) and run the following command (You can copy and paste it in if you like):

Code:
wget -nc http://paste.opensuse.org/view/download/33889052 -O ~/bin/make-after-local ; chmod +x ~/bin/make-after-local ; make-after-local
You must enter the root user password once for the process to complete. This does not actually put anything into the after.local script, which you must do if you have something you want to run on your system startup as root.

If the after.local bash script does not exist, it will now be created for you with this new make-after-local bash script. This script has even been tested with Fedora 16, which also uses systemd and it created the after.local bash script and activated it for you, ready to use.

On openSUSE, as long as the after.local script exists, the make-after-local bash script will not over write it, but indicate the file was not written, which is OK.

This documentaion has been updated to place the after.local.service file in the folder /usr/lib/systemd/system to be inline with the locations used for service files in openSUSE 12.3.

For more help in using systemd, please look here: SysdCmd - systemd Command Help/Config Editor - Blogs - openSUSE Forums

For help with Grub 2 and your Bootup Process: GNU Grub2 Command Listing Helper with --help & Input - Blogs - openSUSE Forums

For Help with Loading Application from Terminal using Zypper: Zypper Command - Zypper Package Management Menu System

For help with Samba, Have a look here: S.A.C.T. - Samba Automated Configuration Tool - Version 1.06 - Blogs - openSUSE Forums

For help in creating a Live USB to Boot openSUSE: S.C.L.U. - SuSE Create Live USB - Version 1.00 - Blogs - openSUSE Forums

Want to compile your own kernel, Have a look here: openSUSE and Installing New Linux Kernel Versions - Blogs - openSUSE Forums

For Help in Editing any System File: SYSEdit - System File Editor

Thank You,

Blogs: asroot : Bash : Packet Filter : C.F.U. : DKMS : Grub 2 & Run Level 3 : GPU's : fewrup : F.S.M. : H.I. : nVIDIA : LNVHW : N.S.F. : S.A.K.C.
MMCHECK S.A.S.I. : S.A.N.D.I. : S.G.T.B. : S.K.I.M. : S.L.A.V.E. : S.L.R.C. : S.T.A.R.T. : S.U.F.F. : UTC or GMT Time : YaST Power

Submit "systemd and using the after.local script in openSUSE 12.1/12.2/12.3" to Digg Submit "systemd and using the after.local script in openSUSE 12.1/12.2/12.3" to del.icio.us Submit "systemd and using the after.local script in openSUSE 12.1/12.2/12.3" to StumbleUpon Submit "systemd and using the after.local script in openSUSE 12.1/12.2/12.3" to Google Submit "systemd and using the after.local script in openSUSE 12.1/12.2/12.3" to Facebook Submit "systemd and using the after.local script in openSUSE 12.1/12.2/12.3" to Twitter

Updated 28-Jul-2013 at 15:26 by jdmcdaniel3

Categories
openSUSE Software

Comments

Page 2 of 2 FirstFirst 12
  1. promeneur's Avatar
    hello i test 13.1b1

    i follow you procedure (i didn't use the script) to create and run a service to execute after.local

    with yast tool i can see that the service is well created in "enable,active" state
    but
    when pc starts the after.local script is not executed

    local script contains commands to suspend all usb devices

    with powertop i can see the usb devices are not suspended

    if i execute manualy after.local
    then
    with powertop i can see all the usb devices are suspended

    thanks
  2. marinz's Avatar
    [QUOTE=promeneur;bt923]hello i test 13.1b1

    i follow you procedure (i didn't use the script) to create and run a service to execute after.local

    with yast tool i can see that the service is well created in "enable,active" state
    but
    when pc starts the after.local script is not executed

    local script contains commands to suspend all usb devices

    with powertop i can see the usb devices are not suspended

    if i execute manualy after.local
    then
    with powertop i can see all the usb devices are suspended

    thanks[/QUOTE]

    same problem here, opensuse 13.2. Any solutions ?
Page 2 of 2 FirstFirst 12