Система не завантажилася з systemd як init system (PID 1). Не може працювати


143

Я намагаюся дотримуватися процесу встановлення Redis, як це обговорюється в цій статті про цифровий океан, у WSL. Встановлена ​​версія Ubuntu - Ubuntu 18.04.

Все в установці redis добре, але коли я спробував запустити це, sudo systemctl start redisя отримав це повідомлення.

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

Будь-яка ідея щодо того, що з цим робити?


1
Дотримуйтесь цього методу github.com/Microsoft/WSL/issues/365
Biswapriyo

Відповіді:


254

Натомість використовуйте: sudo service redis-server start

У мене була та ж проблема, зупинка / запуск інших служб з Ubuntu на WSL. Це спрацювало, де systemctl ні.

І можна обгрунтовано задуматися, "звідки ви дізнаєтесь, що ім'я послуги було" redis-server "?" Ви можете побачити їх за допомогоюservice --status-all


Так .. Я теж використовую це з моменту написання проблеми, і цей із коментаря також має коментар, який допомагає
Fil

Чудово, велике спасибі. Це працює для більшості служб, які були встановлені в середовищі WSL, хоча ми не можемо використовувати systemctl для запуску | зупинки | перезапуску служб.
Баю Двіян Сатрія

1
Враховуючи, що це найвища оцінка, було б приємно побачити трохи більше інформації, що тут відбувається. На моє розуміння service, це абстракція, яка може повернутися або до init.d( sysv init), або до systemdякої, як випливає з питання, не працює. serverfault.com/questions/867322/…
fraleone

1
fraleone, оскільки це була моя відповідь, я спробую вирішити вашу проблему. Щоб бути зрозумілим, питання полягало в помилці при спробі запустити Redis (зокрема на WSL), де використання загальної команди запуску, задокументованої в іншому місці, systemctl start redisне працювало для OP. Це не працювало і для мене. Я знайшов цю альтернативу ( redis-server start) і прийшов сюди, щоб запропонувати її як відповідь. Я рада, що це допомогло іншим. Але я не був / не можу пояснити, "що тут відбувається", або чому це протиставляє ваші очікування. Не соромтеся детальніше розробляти, оскільки ви можете знайти більше, а можливо, знайдуть інші.
charlie arehart

14

Замість використання sudo systemctl start redis використовуйте: sudo /etc/init.d/redis start

станом на зараз ми не систематизували WSL


1
Чи знаєте ви, чи доступна вона на WLS 2?
thanos

1
Після швидкого пошуку WSL2 не завантажується з systemd. Тут є обхідний шлях, який я не перевіряв. github.com/microsoft/WSL/issues/994#issuecomment-502055417
Байрон Гаврас,

7

Якщо ви використовуєте Docker, ви можете спробувати зображення, в якому Ubuntu з системою D вже активна за допомогою цієї команди:

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

Тоді вам просто потрібно запустити:

docker exec -it redis /bin/bash

і там ви можете просто встановити Redis, запустити його, перезапустити або що завгодно.


Docker не працює в WSL.
Aditya T

2
@Aditya Це робиться у WLS 2
thanos.a

5

У мене виникла проблема із запуском WSL 2

рішенням стала команда

 $ sudo dockerd

якщо після цього у вас все ще є проблема з дозволом, запустіть команду:

 $ sudo usermod -aG docker your-user

1
вам також доведеться запустити дистрибутив. Отже, у мене є 2 термінали, один запускає докер, а другий використовую для своєї роботи
Светослав Марінов,

3

Я намагався запустити Docker в Ubuntu та WSL.

Це спрацювало для мене,

sudo service docker start


0

Це спрацювало для мене (за допомогою WSL)

sudo /etc/init.d/redis start

(для будь-якої іншої служби перевірте назви файлів у папці init.d)


0

використовуйте цю команду для запуску кожної служби, просто напишіть службу імен, наприклад:

для xrdp :

sudo /etc/init.d/xrdp start

для redis :

sudo /etc/init.d/redis start

(для будь-якої іншої служби перевірте назви файлів у папці init.d)


-1

Я зіткнувся з тією ж проблемою! ps --no-headers -o comm 1 Після запуску цього в терміналі система поверне або systemd, або init

якщо він повертає 'init', тоді команда 'systemctl' не працюватиме для вашої системи


Не могли б Ви докладніше докладніше розказати свою відповідь?
jpnadas

для того, щоб запускати і керувати вашим процесом mongod, ви б використовували вбудовану в вашу систему операційну систему init. Останні версії Linux, як правило, використовують systemd (який використовує команду systemctl), тоді як старші версії Linux, як правило, використовують System V init (що використовує службову команду). Якщо ваша система використовує systemd , команда така: mongod ', і якщо він використовує System V Init, то команда: -' sudo service mongod start '
RoninS28
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.