Làm cách nào để thay đổi runlevel trên systemd?


27

Khá đơn giản, tôi đang cố gắng thay đổi runlevel. Tất cả mọi thứ tôi tìm thấy trực tuyến đều chỉ cho tôi tập tin nằm trong:

/etc/init/rc-sysinit.conf

Ở đây tôi đã thử thay đổi "DEFAULT_RUNLEVEL" thành 3 hoặc bất cứ điều gì khác và nó không có gì khác biệt (giá trị ban đầu là 2 cũng không có ý nghĩa gì nhiều). Không có vấn đề gì, máy của tôi khởi động đầy đủ và khi tôi kiểm tra lệnh runlevel, tôi thấy "N 5" là kết quả mỗi lần.

Làm thế nào để tôi thay đổi runlevel? Tôi thà không ghi đè nó thông qua grub hoặc một số cơ chế giải pháp khác. Và tôi không tìm cách vô hiệu hóa X cụ thể.

Tất cả các hướng dẫn tôi tìm thấy trên mạng đã hơi cũ, có gì thay đổi với 16.04 không?


Vì vậy, bạn có muốn thay đổi nó bằng tay sau khi khởi động hoặc tự động khởi động sang một runlevel khác nhau mỗi lần?
Chỉ huy Byte

tự động mọi lúc. Nó đã được thiết lập với máy tính để bàn Ubuntu, nhưng bây giờ tôi muốn hạ runlevel và đặt nó ở một góc nào đó.
viết

Trên thực tế, tại sao bạn muốn thay đổi runlevel? Bạn chỉ muốn khởi động vào giao diện đầu cuối thay vì tải máy tính để bàn? Trong trường hợp đó, thay vào đó, bạn nên sửa đổi tải hệ thống đích tiêu chuẩn khi khởi động và thêm tùy chọn nhân "văn bản".
Chỉ huy Byte

4
Có lẽ bởi vì kể từ ngày 15.10, Ubuntu sử dụng systemdthay vì upstartvà tập tin mà bạn đang nói đến là dành cho upstart. Nếu bạn đọc những bài báo cũ hơn, bạn cũng sẽ tìm ra cách cho cái cũ init. Nhưng với systemd, bạn có thể chỉ cần chuyển đổi giữa GUI và chế độ văn bản bằng cách sử dụng sudo systemctl start graphical.targetsudo systemctl start multi-user.target.
Chỉ huy Byte

5
Đối với tất cả những người đánh giá Đây là một câu hỏi hợp lệ! Có một cách để thay đổi runlevel (đã hoặc chưa nó được gọi là "runlevel" hay "mục tiêu") sử dụngsystemctl isolate
Ron

Câu trả lời:


50

Ubuntu 16.04 sử dụng systemd thay vì init và do đó khái niệm runlevelsnày được thay thế bằng thuật ngữ này targets. Vì vậy, thực sự có một ánh xạ giữa các đường chạy dựa trên init và các mục tiêu dựa trên systemd:

   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     │
   └─────────┴───────────────────┘

Bây giờ, để chỉ thay đổi "đường băng" trong 16.04, bạn có thể sử dụng ví dụ:

sudo systemctl isolate multi-user.target

Để biến điều này thành "runlevel" mặc định, bạn có thể sử dụng:

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

Từ 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

Cũng có một cái nhìn man systemd.specialđể biết thêm về các mục tiêu trong systemd.


HI @Ron phản hồi của bạn rất tuyệt Tôi đã làm điều đó để cài đặt trình điều khiển chính thức của Nvidia nhưng bây giờ màn hình của tôi không hiển thị gì ngoài màn hình màu xanh. Làm thế nào tôi có thể sửa lỗi này ? Cảm ơn trước sự giúp đỡ của bạn.
Raphael Teubner

Nhập vào chế độ phục hồi từ Grub, sau đó khi root hoàn nguyên về runlevel trước đó.
LottaLava

vâng Tôi vừa mới nhận xét về cách các chàng trai đưa ra những mệnh lệnh cực kỳ hay ho này từ gui boot sang chế độ văn bản, không quan tâm đến việc nói với chúng tôi về cách quay lại từ boot-boot sang gui boot.
nyxee

Vì vậy, chỉ cần lưu ý, tôi chạy sudo systemctl set-default multi-user.targetở chế độ GUI, khi khởi động lại, tôi có một màn hình trống, đó là một dấu hiệu tốt cho thấy GUI không khởi động được, vì vậy tôi đã nhấn Ctrl-Alt-F3để vào Runlevel 3, đã làm những gì tôi cần (đã cài đặt NVIDIA- CUDA), chạy sudo systemctl set-default graphical.targetvà trở lại màn hình đăng nhập GUI. Nhưng, bây giờ tôi đã không đăng nhập được. Đó có phải là cách chính xác để trở lại runlevel trước đó không?
nyxee

2
@nyxee - Có, sudo systemctl set-default graphical.targetlà cách chính xác để trở lại môi trường máy tính để bàn GUI. Lỗi đăng nhập của bạn nghe có vẻ không liên quan đến việc chuyển đổi giữa các runlevels - nghe có vẻ giống như sự cố vòng lặp khởi động nVidia . Để tìm hiểu chắc chắn, hãy quay xuống runlevel 3, xóa trình điều khiển nVidia và Cuda, cài đặt trình điều khiển nVidia từ repo, đặt mặc định thành runlevel 5 (Graphics.target), sau đó khởi động lại và xem bạn có thể đăng nhập không.
Andy Turfer
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.