나는 Archlinux를 사용하고 있으며 요즘 시스템을 시험해보기 시작했다.
그러나 systemd가 /etc/rc.local 스크립트를로드하지 않는다는 것을 알았습니다.
Wiki 페이지에서 언급했듯이을 실행 systemctl enable rc-local.service
했지만 도움이되지 않았습니다.
내 /etc/rc.local 파일의 내용은 다음과 같습니다.
echo -n 120 > /sys/devices/platform/i8042/serio1/speed
echo -n 250 > /sys/devices/platform/i8042/serio1/sensitivity
iptables --table nat -A POSTROUTING -s 192.168.0.0/16 -j MASQUERADE
어떤 제안?
답변
아치는 실행에 필요한 서비스 단위 파일을 포함하지 않았을 수 있습니다 rc.local
.
/etc/systemd/system/rc-local.service
다음 내용 으로 파일 을 만드십시오 (내 Fedora 시스템에서 복사 한 그대로).
#이 파일은 systemd의 일부입니다. # # systemd는 무료 소프트웨어입니다. 재배포 및 / 또는 수정할 수 있습니다 # GNU GPL (GNU General Public License) 약관에 따라 # 자유 소프트웨어 재단; 라이센스 버전 2 또는 이후 버전은 # (선택 사항)로 제공됩니다. [단위] 설명 = / etc / rc.local 호환성 ConditionPathExists = / etc / rc.local [서비스] 유형 = 포킹 ExecStart = / etc / rc.local 시작 TimeoutSec = 0 StandardOutput = tty RemainAfterExit = 예 SysVStartPriority = 99
그런 다음 systemctl enable rc-local.service
루트로 실행 하여 활성화하십시오. 을 실행하여 지금 테스트하거나 실행할 수도 있습니다 systemctl start rc-local.service
.
답변
systemd 188-2에서 systemd는 [Install]
섹션이없고 rc.local 서비스를 활성화 할 수 없다는 불만을 표시 합니다. 이전 버전의 경우도있을 수 있지만 Arch devs는 최근에 systemd 만 발표 했으므로 시스템을 수정하는 것이 기본값이 될 것입니다.
이를 해결하려면 다음에 다중 사용자 대상에 대한 섹션을 추가하십시오 /etc/systemd/system/rc-local.service
.
[Unit]
Description=/etc/rc.local Compatibility
ConditionPathExists=/etc/rc.local
[Service]
Type=forking
ExecStart=/etc/rc.local start
TimeoutSec=0
StandardOutput=tty
RemainAfterExit=yes
SysVStartPriority=99
[Install]
WantedBy=multi-user.target
/etc/rc.local
스크립트를 작성하고chmod +x /etc/rc.local
답변
Pkgfile (내 시스템에서)은 다음과 같이 말합니다.
$ pkgfile --search rc-local.service
community/initscripts-systemd
이 패키지는 원하지 않는 다른 것을 설치하지만 비활성화 할 수 있습니다. 참조 :
https://wiki.archlinux.org/index.php/Systemd#The_initscripts-systemd_package
답변
rc.local을 실행 파일로 만드는 것을 잊지 마십시오. 그렇지 않으면 호환성 계층에서 실행되지 않습니다! 위의 예제에서 rc.local 파일을 실행 가능하게하기 위해 chmod a + x를 실행합니다. 다음과 같이 :
$ chmod a+X /etc/systemd/system/rc-local.service
다른 가능한 문제는 rc.local 스크립트의 위치라고 생각합니다! systemd에 호환성을 아직 추가하지 않은 경우 (내장되어 있어야하며 이미 언급 한 것으로 보입니다) 파일 위치를 다시 확인해야 할 수도 있습니다 … 내 OS에는 rc-local이 있습니다. /etc/rc.d/rc.local에서 다음을 실행했습니다.
$ sudo chmod a+x /etc/rc.d/rc.local
$ sudo systemctl restart rc-local.service
$ sudo systemctl status rc-local.service
rc-local.service - /etc/rc.d/rc.local Compatibility
Loaded: loaded (/lib/systemd/system/rc-local.service; static)
Active: active (exited) since Fri, 13 Apr 2012 14:42:39 -0600; 3s ago
Process: 2285 ExecStart=/etc/rc.d/rc.local start (code=exited, status=0/SUCCESS)
CGroup: name=systemd:/system/rc-local.service
답변
두 가지 일반적인 문제점 :
-
/etc/rc.d/rc.local
실행 파일 을 만드는 것을 잊지 마십시오 . 당신이 사용할 수있는# chmod a+rx /etc/rc.d/rc.local
실행 가능하게 만듭니다.
-
#!/bin/sh
의 첫 번째 줄에 줄 을 넣는 것을 잊지 마십시오/etc/rc.d/rc.local
. 다음과 같은 모습이 있습니다.# head -1 /etc/rc.d/rc.local #!/bin/sh # file /etc/rc.d/rc.local /etc/rc.d/rc.local: POSIX shell script, ASCII text executable
비슷한 출력을 얻지 못하면을
/etc/rc.d/rc.local
포함하는 맨 위에 줄을 추가하도록 편집 하십시오#!/bin/sh
.
답변
당신이있는 경우 /etc/rc.local
실행 파일로, 그것은에 의해 부팅 과정에서 뽑아됩니다 systemd-rc-local-generator
/ rc-local.service
.
최소한 /etc/rc.local
기본 경로가 사용되지만 배포에 의해 설정됩니다. 주로 이전 버전과의 호환성을위한 것이기 때문에 배포마다 다른 경로를 사용하고있었습니다. 예를 들어 Fedora에서 경로는 /etc/rc.d/rc.local
입니다. 다음과 같이 경로를 확인할 수 있습니다.
$ systemctl cat rc-local.service
# /usr/lib/systemd/system/rc-local.service
# ...
# This unit gets pulled automatically into multi-user.target by
# systemd-rc-local-generator if /etc/rc.d/rc.local is executable.
[Unit]
Description=/etc/rc.d/rc.local Compatibility
ConditionFileIsExecutable=/etc/rc.d/rc.local
After=network.target
[Service]
Type=forking
ExecStart=/etc/rc.d/rc.local start
TimeoutSec=0
RemainAfterExit=yes
GuessMainPID=no
이것은 잘 알려지지 않은 것 같습니다. 파일의 이전 버전을 보여주는 몇 가지 게시물이 있으며 그러한 주석은 없습니다.