System nie został uruchomiony z systemd jako systemem inicjującym (PID 1). Nie mogę operować

143

Próbuję postępować zgodnie z procesem instalacji Redis omówionym w tym artykule na temat cyfrowego oceanu w WSL. Zainstalowana wersja Ubuntu to Ubuntu 18.04.

Wszystko w instalacji Redis jest w porządku, ale kiedy próbowałem to uruchomić sudo systemctl start redis, otrzymałem ten komunikat.

System has not been booted with systemd as init system (PID 1). Can't operate.

Masz pomysł, co mam z tym zrobić?

Fil
źródło
1
Postępuj zgodnie z tą metodą github.com/Microsoft/WSL/issues/365
Biswapriyo

Odpowiedzi:

254

Zamiast tego użyj: sudo service redis-server start

Miałem ten sam problem, zatrzymując / uruchamiając inne usługi z poziomu Ubuntu na WSL. To zadziałało, podczas gdy systemctl nie.

I można by się zastanawiać, „skąd możesz wiedzieć, że nazwa usługi to„ redis-server ”? Możesz je zobaczyć za pomocąservice --status-all

Charlie Arehart
źródło
Tak .. ja też tego używam odkąd napisałem problem, ten z komentarza też ma komentarz, który pomaga
Fil
Świetnie Dziękuję Ci bardzo. Działa to dla większości usług, które zostały zainstalowane w środowisku WSL, podczas gdy nie możemy użyć systemctl do uruchomienia | zatrzymania | ponownego uruchomienia usług.
Bayu Dwiyan Satria
1
Biorąc pod uwagę, że jest to najwyżej oceniana odpowiedź, byłoby miło zobaczyć trochę więcej informacji, co się tutaj dzieje. W moim rozumieniu servicejest to abstrakcja i może powrócić do init.d( sysv init) lub systemdktóra, jak sugeruje pytanie, nie działa. serverfault.com/questions/867322/…
fraleone
1
fraleone, skoro to była moja odpowiedź, spróbuję rozwiązać twój problem. Żeby było jasne, pytanie dotyczyło błędu podczas próby uruchomienia Redis (szczególnie na WSL), gdzie użycie wspólnego polecenia startu udokumentowanego w innym miejscu systemctl start redisnie działało dla OP. Na mnie też nie działało. Znalazłem tę alternatywę ( redis-server start) i przyszedłem tutaj, aby zaoferować ją jako odpowiedź. Cieszę się, że pomogło to innym. Ale nie byłem / nie jestem w stanie wyjaśnić „co się tutaj dzieje” lub dlaczego jest to sprzeczne z Twoimi oczekiwaniami. Nie krępuj się rozwinąć, ponieważ możesz znaleźć więcej, a może inni to zrobią.
charlie arehart
14

Zamiast używać sudo systemctl start redis użyj: sudo /etc/init.d/redis start

w tej chwili nie mamy systemd w WSL

Byron Gavras
źródło
1
Czy wiesz, czy jest dostępny w WLS 2?
thanos
1
Z szybkiego wyszukiwania WSL2 nie jest uruchamiany przez systemd. Istnieje jednak obejście tego problemu, którego nie testowałem. github.com/microsoft/WSL/issues/994#issuecomment-502055417
Byron Gavras
7

Jeśli używasz Dockera, możesz wypróbować obraz, na którym jest już aktywny system Ubuntu z Systemem D za pomocą tego polecenia:

docker run -d --name redis --privileged -v /sys/fs/cgroup:/sys/fs/cgroup:ro jrei/systemd-ubuntu:18.04

Następnie wystarczy uruchomić:

docker exec -it redis /bin/bash

i tam możesz po prostu zainstalować Redis, uruchomić go, ponownie uruchomić lub cokolwiek potrzebujesz.

Carlos Saltos
źródło
Docker nie będzie działać w WSL.
Aditya T
2
@Aditya Robi to w WLS 2
thanos.a
5

Miałem ten problem z uruchomieniem WSL 2

rozwiązaniem było polecenie

 $ sudo dockerd

jeśli po tym nadal masz problem z uprawnieniami, uruchom polecenie:

 $ sudo usermod -aG docker your-user
Felipe Augusto
źródło
1
musiałbyś także uruchomić dystrybucję. Więc mam 2 terminale, jeden obsługuje docker, a drugi używam do mojej pracy
Svetoslav Marinov
3

Próbowałem uruchomić Dockera w ramach ubuntu i WSL.

To zadziałało dla mnie,

sudo service docker start

Sangeetha
źródło
0

To zadziałało dla mnie (używając WSL)

sudo /etc/init.d/redis start

(w przypadku każdej innej usługi sprawdź folder init.d pod kątem nazw plików)

Daniel Assayag
źródło
0

użyj tego polecenia do uruchomienia każdej usługi, po prostu napisz usługę nazw, na przykład:

dla xrdp :

sudo /etc/init.d/xrdp start

dla redis :

sudo /etc/init.d/redis start

(w przypadku każdej innej usługi sprawdź folder init.d pod kątem nazw plików)

mamal
źródło
-1

Napotkałem ten sam problem! ps --no-headers -o comm 1 Po uruchomieniu tego w terminalu, system zwróci systemd lub init

jeśli zwróci „init”, to polecenie „systemctl” nie będzie działać dla twojego systemu

RoninS28
źródło
Czy mógłbyś wyjaśnić nieco więcej swojej odpowiedzi?
jpnadas
Aby uruchomić i zarządzać procesem mongod, używałbyś wbudowanego w system operacyjny systemu init. Najnowsze wersje Linuksa zwykle używają systemd (który używa polecenia systemctl), podczas gdy starsze wersje Linuksa zwykle używają init System V (który używa polecenia service) Jeśli twój system używa systemd , polecenie to: - 'sudo systemctl start mongod 'i jeśli używa System V Init, to polecenie brzmi: -' sudo service mongod start '
RoninS28