Runlevel 'S' trên Debian / Ubuntu để làm gì


8

Theo Wikipedia , 'S' được coi là một runlevel tiêu chuẩn: "Chế độ một người dùng". Nhưng nếu tôi không nhầm, chế độ Một người dùng trên Debian là Runlevel 1. Một bài viết về Debian tôi thấy có tuyên bố, đó là 'S' là một runlevel "mà hệ thống sử dụng trên đường này đến một runlevel khác". Hấp dẫn...

Trên thực tế, tôi đã luôn bỏ qua runlevel này cho đến nay, nhưng hôm nay tôi đã chơi xung quanh với Firestarter (vâng, thực sự, một tường lửa người dùng cuối) chỉ vì tôi tò mò, quy tắc tường lửa nào sẽ tạo ra. Nhưng sau đó tôi nhận thấy rằng nó tạo ra một hook hook trong /etc/rcS.d, và tôi tự hỏi, liệu kịch bản tường lửa của tôi cũng có thể có điều đó không?

Cập nhật

Bây giờ tôi thậm chí còn quan tâm hơn đến việc biết nó thực sự là gì trên Debian / Ubuntu , bởi vì gói Shorewall (là gói "Debianized" mạnh mẽ) cũng tạo ra móc khởi động (chỉ!) Của nó trong RCS.d!

Câu trả lời:


3

Tôi nhìn vào các đường băng theo cách này:

 S - true single user mode usually drops you into a minimal root shell
 1 - Administrative mode, you get a standard login request before access
 2 - Multi-user without TCP/IP networking -- could use serial ports for other logins
 3 - Multi-user with TCP/IP networking and text 
 4 - To be determined by the system owner
 5 - Multi-User with TCP/IP networking and graphic console 
 6 - reboot
 0 - shutdown and power down

Do đó, tường lửa thực sự cần thiết nếu TCP / IP hoạt động và điều đó thường chỉ xảy ra trong Trạng thái ban đầu 3.


1
Toàn bộ khái niệm runlevel này là một điều di sản từ quá khứ. Ngày nay, nó thường là chế độ người dùng đơn (để bảo trì) và một số chế độ bình thường khác (như 2 hoặc 5 tùy thuộc vào bản phân phối) được sử dụng. Tôi không thực sự thấy một trường hợp sử dụng cho bất cứ điều gì khác.
cstamas

Trên thực tế còn tệ hơn nữa, các bản phân phối mới nhất đang loại bỏ các cấp độ chạy cùng nhau (hiện đang được hỗ trợ là vấn đề di sản) và sẽ chuyển sang các tiểu bang có tên phụ thuộc theo chúng (xem Fedora 15).
mdpc

3

Tất cả những điều trên dường như làm tròn một câu trả lời trực tiếp cho câu hỏi được hỏi.

Từ tất cả những gì tôi có thể tìm thấy, các rcS.dtập lệnh được triển khai như là Sviết tắt của " khởi động " chứ không phải " độc thân ".

Tất cả đều chạy trong khi khởi động. Nếu sau đó bạn muốn sử dụng chạy cấp 1, các tập lệnh rc1.dđang chạy (có thể khá trống, với tất cả các công việc chúng tôi vừa làm rcS)

Quan trọng hơn, các rcStập lệnh được chạy trên đường rc3- vì vậy, hệ thống sẽ tự đặt mình ở chế độ một người dùng một cách hiệu quả, sau đó suy nghĩ lại và quyết định những gì nó THỰC SỰ nên làm. Rất khó hiểu và chủ yếu là tài liệu xấu.

Bằng chứng, nếu bạn kiểm tra /etc/inittab, bạn tìm thấy:

 # Boot-time system configuration/initialization script.<br>
 # This is run first except when booting in emergency (-b) mode.
si::sysinit:/etc/init.d/rcS

theo sau bởi nhiều dòng giống như:

l3:3:wait:/etc/init.d/rc 3

1

Runlevel 1 còn được gọi là runlevel s.

Trong các hệ thống dựa trên Debian, đây là chế độ một người dùng / tối thiểu . Xem Debian Runlevel :

Runlevel là một chữ số từ 0 đến 6 hoặc chữ S. Runlevels 0, 6 và S được dành riêng cho tắt máy, khởi động lại và chế độ người dùng đơn tương ứng.


0

S là cho chế độ người dùng duy nhất.

http://wiki.debian.org/RunLevel


Vì vậy, nếu một tập lệnh chỉ có một móc khởi động trong runlevel S (ví dụ như Shorewall) và tôi khởi động để runlevel '2', trình tự khởi động có bắt đầu tập lệnh không?
Chris Lercher

Trong Linux, nếu trạng thái mặc định của bạn (như được mô tả trong / etc / inittab) là N thì không giống như UNIX, chỉ các mục 'S' trong /etc/rc.d/rcN.d (vị trí này có thể thay đổi tùy theo phân phối Linux) được thực thi trong khi khởi động, không có thư mục init nào khác sẽ được sử dụng.
mdpc

Bạn thường đặt runlevel mặc định của bạn trong inittab. Các số tăng dần. Vì vậy, ví dụ của bạn, nếu init của bạn chỉ được cấu hình trong S giống với runlevel 1. Khi khởi động, hệ thống của bạn sẽ bắt đầu ở runlevel 1 và tăng chạy tất cả các script init cho cấp đó, sau đó tăng runlevel và lặp lại cho đến khi được đến runlevel mặc định được chỉ định trong inittab. Đây là hai. Vì vậy, bất cứ điều gì đã được cấu hình để bật trong 1 hoặc 2 sẽ được bật.
dmourati

1
Xin lưu ý rằng câu hỏi của tôi là dành riêng cho Debian / Ubuntu! Tôi chỉ thử cách sau: Tôi đặt một tập lệnh đơn giản vào /etc/rcS.d/etc/rc2.dmỗi tập viết một tin nhắn ngắn (có dấu thời gian) vào một logfile. Kết quả: Sau khi khởi động, tôi có một thông điệp tường trình cho RCS và 5 giây sau đó là thông báo nhật ký cho RC2.
Chris Lercher

Để thay đổi runlevel mặc định, hệ thống sẽ khởi động vào, sửa đổi biến DEFAULT_RUNLEVEL trong tệp /etc/init/rc-sysinit.conf. Ví dụ: để làm cho hệ thống khởi động theo mặc định thành chế độ người dùng đơn, hãy đặt: env DEFAULT_RUNLEVEL = 1
dmourati

0

Ngoài câu trả lời được cung cấp bởi mdpc, Trong khi chạy cấp 1, không có trình nền (dịch vụ) nào được bắt đầu.

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.