systemctl enable rc-local.service error

/*******************************************************************************
 *                 systemctl enable rc-local.service error
 * 说明:
 *     在YOCTO中使能rc.local发现无法enable;
 *
 *                                          2019-6-10 深圳 宝安西乡 曾剑锋
 ******************************************************************************/

一、Error
    root@zengjf:/etc/systemd/system# systemctl enable rc-local.service
    The unit files have no installation config (WantedBy, RequiredBy, Also, Alias
    settings in the [Install] section, and DefaultInstance for template units).
    This means they are not meant to be enabled using systemctl.
    Possible reasons for having this kind of units are:
    1) A unit may be statically enabled by being symlinked from another unit's
       .wants/ or .requires/ directory.
    2) A unit's purpose may be to act as a helper for some other unit which has
       a requirement dependency on it.
    3) A unit may be started when needed via activation (socket, path, timer,
       D-Bus, udev, scripted systemctl call, ...).
    4) In case of template units, the unit is meant to be enabled with some
       instance name specified.

二、错误原因
    1. 无Install字段;
    2. 添加Install字段:
        root@zengjf:/lib/systemd/system# cat rc-local.service
        #  SPDX-License-Identifier: LGPL-2.1+
        #
        #  This file is part of systemd.
        #
        #  systemd is free software; you can redistribute it and/or modify it
        #  under the terms of the GNU Lesser General Public License as published by
        #  the Free Software Foundation; either version 2.1 of the License, or
        #  (at your option) any later version.
        
        # This unit gets pulled automatically into multi-user.target by
        # systemd-rc-local-generator if /etc/rc.local is executable.
        [Unit]
        Description=/etc/rc.local Compatibility
        Documentation=man:systemd-rc-local-generator(8)
        ConditionFileIsExecutable=/etc/rc.local
        After=network.target
        
        [Service]
        Type=forking
        ExecStart=/etc/rc.local start
        TimeoutSec=0
        RemainAfterExit=yes
        GuessMainPID=no
        
        [Install]
        WantedBy=multi-user.target
    3. 重新enable:
        root@zengjf:/etc/systemd/system# systemctl enable rc-local.service
        Created symlink /etc/systemd/system/multi-user.target.wants/rc-local.service → /lib/systemd/system/rc-local.service.
    4. 查看生成文件:
        root@zengjf:/etc/systemd/system/multi-user.target.wants# ls -al rc-local.service 
        lrwxrwxrwx 1 root root 36 Apr 19 20:00 rc-local.service -> /lib/systemd/system/rc-local.service
        root@zengjf:/etc/systemd/system/multi-user.target.wants#
    5. 创建/etc/rc.local,并赋予执行权限;
        root@zengjf:~# cat /etc/rc.local
        #!/bin/sh -e
        #
        # rc.local
        #
        
        echo "-------------------------------" >> /etc/zengjf
        echo rc.local >> /etc/zengjf
        echo "-------------------------------" >> /etc/zengjf
        
        exit 0
    6. 重启查看输出;
        root@zengjf:~# cat /etc/zengjf
        -------------------------------
        rc.local
        -------------------------------

 

posted on 2019-06-10 12:22  zengjf  阅读(2363)  评论(0编辑  收藏  举报

导航