Sự khác biệt giữa chạy startx
và bắt đầu trình quản lý hiển thị của bạn là sudo service (display_manager) start
gì? Hai sự kiện khác nhau xảy ra, vì vậy tôi tò mò muốn biết sự khác biệt đằng sau hậu trường.
Sự khác biệt giữa chạy startx
và bắt đầu trình quản lý hiển thị của bạn là sudo service (display_manager) start
gì? Hai sự kiện khác nhau xảy ra, vì vậy tôi tò mò muốn biết sự khác biệt đằng sau hậu trường.
Câu trả lời:
Giao diện người dùng đồ họa trên các hệ thống Unix truyền thống, cũng như hầu hết các hệ thống Unix hiện đại khác ngoài Mac OS X, được xây dựng trên Hệ thống X Window . Một thành phần, máy chủ X, giao tiếp với phần cứng (thiết bị ngoại vi hiển thị và đầu vào) và cung cấp các nguyên hàm cơ bản để hiển thị các cửa sổ và định tuyến đầu vào của người dùng. Các chương trình khác, được cho là máy khách X, hiển thị các cửa sổ và lắng nghe ý kiến của người dùng bằng cách liên lạc với máy chủ X.
Để nói chuyện với phần cứng, máy chủ X có thể yêu cầu các đặc quyền đặc biệt; ví dụ, trên một số hệ thống, máy chủ X là setuid root. Các hệ thống gần đây cố gắng tránh việc máy chủ X chạy bằng root để cải thiện bảo mật. Tùy thuộc vào hệ thống, việc chạy máy chủ X trên bảng điều khiển hệ thống có thể bị hạn chế ở một số người dùng nhất định hoặc người dùng có quyền truy cập vật lý vào bảng điều khiển.
Máy chủ X không làm gì khác ngoài việc hiển thị một mẫu nền được mã hóa cứng và con trỏ chuột. Để làm bất cứ điều gì hữu ích, một số khách hàng cần được bắt đầu, thường bao gồm một trình quản lý cửa sổ .
Cách thông thường để chạy phiên GUI là chạy chương trình quản lý phiên, đảm nhiệm việc khởi chạy tất cả các máy khách mong muốn (trình quản lý cửa sổ, tiện ích máy tính để bàn, trình quản lý bảng tạm, chương trình được khôi phục từ phiên trước của người dùng, v.v.). Trình quản lý phiên cần được khởi động sau máy chủ X vì nó sẽ tương tác với nó. Mỗi môi trường máy tính để bàn đi kèm với trình quản lý phiên riêng của nó; bất kỳ trình quản lý cửa sổ nào cũng có thể được sử dụng như một trình quản lý phiên và trong một tình huống khó khăn, một thiết bị đầu cuối chạy shell có thể được xem như một trình quản lý phiên tối giản - điều quan trọng là người dùng có một số cách để khởi chạy các chương trình họ muốn chạy.
Có hai cách truyền thống để khởi chạy phiên GUI:
xinit
lệnh. Lệnh này khởi động máy chủ X, sau đó khởi động trình quản lý phiên và chờ trình quản lý phiên thoát; sau đó nó giết chết máy chủ X. Theo cách này, phía máy khách của phiên và máy chủ X có cùng thời gian tồn tại. Các startx
chương trình là một wrapper quanh nhỏ xinit
.Một cách khác để thấy điều này là để có phiên đăng nhập đồ họa, cần có giao diện đồ họa và người dùng cần đăng nhập. Hai bước này có thể được thực hiện theo thứ tự: đăng nhập rồi khởi động GUI ( startx
phương thức), hoặc khởi động GUI sau đó đăng nhập (phương thức trình quản lý hiển thị).
Các thiết lập khác là không phổ biến nhưng có thể. Ví dụ: trong thiết lập kiosk, tập lệnh khởi động hệ thống khởi động máy chủ X và máy khách toàn màn hình. Trong thiết lập autologin, trình quản lý hiển thị chạy trình quản lý phiên cho người dùng mặc định khi khởi động.
startx
và là xinit
gì?
Nói chung, một hệ thống unix yêu cầu root để khởi động X (hoặc trình quản lý hiển thị, chạy trong X).
Nếu không có trình quản lý hiển thị, nếu root khởi động X thì người dùng hiện tại của phiên X là root.
Với trình quản lý hiển thị, root bắt đầu X và trình quản lý hiển thị, nhưng sau đó cho phép người dùng khác bắt đầu các phiên trong môi trường đó. Điều này có nghĩa là mặc dù đã root để khởi động X, người dùng "bình thường" giờ đây có thể kiểm soát và chạy tất cả các quy trình một cách an toàn.
Root, tuy nhiên, vẫn "sở hữu" phiên X. Trừ khi bạn đã cấp quyền cho người dùng (bằng cách thêm người dùng đó vào nhóm thích hợp) để thực hiện những việc quan trọng lớn như Tắt máy hoặc Khởi động lại, người dùng không thể dừng X. Chỉ có root mới có thể làm điều đó. Điều đó đôi khi quan trọng trên hệ thống nhiều người dùng, nơi bạn không muốn người dùng đột nhiên quyết định khởi động lại máy, phá hủy các phiên khác trong quy trình.
sudo service mdm stop
để dừng trình quản lý hiển thị. Có cách nào để tôi chấm dứt X không? Nhân tiện, tôi không phải root để bắt đầu X. Có phải đó không phải là một yêu cầu nữa để được root để bắt đầu X?
startx
.