Używam Archlinuxa i zacząłem próbować systemd w tych dniach.
Odkryłem jednak, że systemd nie ładuje mojego skryptu /etc/rc.local.
Jak wspomniano na stronie Wiki, uruchomiłem systemctl enable rc-local.service
, ale to nie pomogło.
Zawartość mojego pliku /etc/rc.local to:
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
Jakieś sugestie?
arch-linux
Felix Yan
źródło
źródło
/etc/systemd/system/multi-user.target.wants/rc-local.service
i/lib/systemd/system/rc-local.service
systemctl enable rc-local.service
. Jeśli nadal masz problemy, opublikuj wyniksystemctl status rc-local.service
.multi-user.target.wants
jest dokładnie tym, co umożliwia .W przypadku systemd 188-2 systemd narzeka na brak
[Install]
sekcji i jako taki nie może włączyć usługi rc.local. Możliwe, że tak było w przypadku wcześniejszych wersji, ale ponieważ Arch Devs niedawno ogłosił, że systemd stanie się domyślnym, naprawiam mój system.Aby to naprawić, po prostu dodaj sekcję dla celu dla wielu użytkowników w
/etc/systemd/system/rc-local.service
:Utwórz
/etc/rc.local
skrypt i wykonaj go za pomocąchmod +x /etc/rc.local
źródło
rc-local.service
nigdy nie była usługą, która była włączana za pośrednictwem,systemctl enable
ale od 2011 r. Jest usługą włączaną automatycznie przez generator . Jednak Arch Linux, jak wyjaśniono na stronie unix.stackexchange.com/a/471871/5132 , nie włącza opcji kompatybilności wstecznej w systemie, które zapewniają generator w pierwszej kolejności.Pkgfile (w moim systemie) mówi:
Ten pakiet instaluje inne rzeczy, których możesz nie chcieć, ale możesz je wyłączyć. Zobacz także: https://wiki.archlinux.org/index.php/Systemd#The_initscripts-systemd_package
źródło
Nie zapomnij, aby plik rc.local był wykonywalny - inaczej warstwa zgodności go nie uruchomi! W powyższych przykładach, które są wymienione - uruchomiłbyś chmod a + x, aby plik rc.local był wykonywalny. Następująco:
Myślę, że innym możliwym problemem jest lokalizacja twojego skryptu rc.local! Jeśli nie dodałeś jeszcze kompatybilności do systemd (która powinna być wbudowana - i wydaje się, że była wcześniej wspomniana, że już istnieje), może być konieczne dwukrotne sprawdzenie lokalizacji plików ... W moim systemie operacyjnym mam rc-local w /etc/rc.d/rc.local, więc uruchomiłem następujące:
źródło
systemd
plik usługi był wykonywalny, jak pokazano w pierwszym fragmencie kodu. Również w Arch Linux ścieżka do pliku jest/etc/rc.local
- być może zawartośćsystemd
pliku usługi jest nieprawidłowa.Dwie wspólne gotcha:
Nie zapomnij zrobić
/etc/rc.d/rc.local
pliku wykonywalnego. Możesz użyćaby był wykonywalny.
Nie zapomnij umieścić
#!/bin/sh
linii w pierwszej linii/etc/rc.d/rc.local
. Oto jak powinno wyglądać:Jeśli nie otrzymujesz podobnych wyników, edytuj,
/etc/rc.d/rc.local
aby dodać wiersz na samej górze zawierający just#!/bin/sh
.źródło
Jeśli masz
/etc/rc.local
plik wykonywalny, zostanie on pobrany do procesu rozruchu przezsystemd-rc-local-generator
/rc-local.service
.Przynajmniej
/etc/rc.local
jest domyślną ścieżką, której używa, ale jest to ustalane przez rozkład. Ponieważ chodzi głównie o kompatybilność wsteczną, a różne dystrybucje używały różnych ścieżek. Np. W Fedorze ścieżka jest/etc/rc.d/rc.local
. Możesz sprawdzić ścieżkę w następujący sposób:Wydaje się, że nie jest to zbyt dobrze znane. Istnieje kilka postów, które pokazują poprzednią wersję pliku, która nie ma takiego komentarza.
źródło