Як змінити рівень запуску на systemd?


27

Досить просто, я намагаюся змінити рівень пробігу. Все, що я знаходжу в Інтернеті, вказує мені на файл, розташований у:

/etc/init/rc-sysinit.conf

Тут я спробував змінити "DEFAULT_RUNLEVEL" на 3 або щось інше, і це не має ніякого значення (початкове значення було 2, яке теж мало особливого сенсу). Незважаючи ні на що, моя машина завантажується повністю і коли я перевіряю команду runlevel, я кожного разу бачу результат "N 5".

Як змінити рівень пробігу? Я вважаю за краще не перекривати це через ґрунт чи інший механізм вирішення проблеми. І я не шукаю, як конкретно відключити X.

Всі вказівки, які я знаходив в Інтернеті, були трохи старі, чи щось змінилося з 16.04?


Отже, ви хочете змінити його вручну після завантаження або автоматично завантажувати його на інший пробіг щоразу?
Командир байтів

автоматично кожного разу. Він був налаштований на робочий стіл ubuntu, але тепер я хочу опустити рівень запуску і поставити його кудись кудись.
гномив

Власне, чому ви хочете змінити рівень запуску? Ви хочете завантажуватися лише до термінального інтерфейсу замість завантаження робочого столу? У цьому випадку слід замінити стандартні цільові завантаження systemd під час завантаження та додати параметр ядра «текст».
Командир байт

4
Можливо, тому що з 15.10 Ubuntu використовує systemdзамість upstartцього файлу, про який ви говорите upstart. Якщо ви прочитаєте ще старіші статті, ви знайдете способи і для старого init. Але за допомогою systemd, ви можете просто перемикатися між графічним інтерфейсом і текстовим режимом за допомогою sudo systemctl start graphical.targetі sudo systemctl start multi-user.target.
Командир байт

5
Для всіх рецензентів Це дійсне питання! Там IS спосіб змінити рівень (чи ні це називається «рівень виконання» або «цілі») з використаннямsystemctl isolate
Рон

Відповіді:


50

Ubuntu 16.04 використовує systemd замість init і, отже, поняття runlevelsзамінено терміном targets. Тож дійсно існує картування між рівнем на основі init та цільовими системами:

   Mapping between runlevels and systemd targets
   ┌─────────┬───────────────────┐
   │Runlevel │ Target            │
   ├─────────┼───────────────────┤
   │0        │ poweroff.target   │
   ├─────────┼───────────────────┤
   │1        │ rescue.target     │
   ├─────────┼───────────────────┤
   │2, 3, 4  │ multi-user.target │
   ├─────────┼───────────────────┤
   │5        │ graphical.target  │
   ├─────────┼───────────────────┤
   │6        │ reboot.target     │
   └─────────┴───────────────────┘

Тепер, щоб просто змінити "рівні запуску" в 16.04, ви можете використовувати, наприклад:

sudo systemctl isolate multi-user.target

Щоб зробити це "рівнем запуску" за замовчуванням, ви можете використовувати:

sudo systemctl enable multi-user.target
sudo systemctl set-default multi-user.target

З man systemctl

   isolate NAME
       Start the unit specified on the command line and its dependencies and stop all others. If
       a unit name with no extension is given, an extension of ".target" will be assumed.

       This is similar to changing the runlevel in a traditional init system. The isolate command
       will immediately stop processes that are not enabled in the new unit, possibly including
       the graphical environment or terminal you are currently using

Також подивіться, man systemd.specialщоб дізнатися більше про цілі в systemd.


Здравствуйте, ваша реакція чудова: я зробив це для того, щоб встановити офіційний драйвер Nvidia, але тепер на моєму екрані не видно нічого, крім синього. Як я можу це виправити? Заздалегідь дякую за допомогу.
Рафаель Тебнер

Увійдіть у режим відновлення з Grub, а потім як кореневе повернення до попереднього рівня запуску.
LottaLava

так. Я просто збирався коментувати, як хлопці, які дають ці надзвичайно приємні команди переходу від завантаження гуї до текстового режиму, зовсім не переймаються тим, як нам розповісти про те, як повернутися з текстового завантаження до завантаження Gui.
nyxee

Отже, лише зауважу, що я працюю sudo systemctl set-default multi-user.targetв режимі GUI, під час перезавантаження я отримав порожній екран, що було хорошим знаком того, що графічний інтерфейс не вдалося завантажити, тому я натиснув, Ctrl-Alt-F3щоб увійти до Runlevel 3, зробив все, що мені потрібно (встановив NVIDIA- CUDA), запустіть sudo systemctl set-default graphical.targetі поверніться на екран входу в графічний інтерфейс. Але я зараз не ввійшов. Це правильний спосіб повернутися до попереднього рівня ?
nyxee

2
@nyxee - Так, sudo systemctl set-default graphical.targetце правильний спосіб повернутися до середовища робочого інтерфейсу GUI. Помилка входу в систему звучить не пов'язано з переключенням між рівнем запуску - це більше схоже на проблему циклу завантаження nVidia . Щоб впевнитись у цьому, поверніться до рівня 3, видаліть драйвери nVidia та Cuda, встановіть драйвер nVidia з репо, встановіть за замовчуванням runlevel 5 (graphical.target), після чого перезавантажте і подивіться, чи зможете ви увійти.
Енді Турфер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.