Lý do để chuyển từ khởi động sang systemd?


28

Thay đổi lớn hơn đi kèm với Ubuntu 15.04 là việc chuyển đổi từ khởi động sang systemd làm mặc định để quản lý khởi động và khởi động dịch vụ hệ thống.

Bất cứ ai cũng có thể giải thích thỏa đáng cho người dùng không có kỹ thuật như thế nào và nếu điều này ảnh hưởng đến chúng tôi? Và tại sao nó quan trọng?

Câu trả lời:


29

Người dùng Layman không nên nhận thấy bất kỳ thay đổi nào, theo thiết kế. Đó là một hệ thống init, không phải thứ mà người dùng thường tương tác. Nó sẽ thay thế hoàn toàn chức năng được cung cấp bởi Upstart Hayand và thực hiện thêm một số điều khác, nhưng lần duy nhất một người dùng không có kỹ thuật sẽ thấy điều này là khi nó gặp trục trặc.

Người dùng, sysadins và nhà phát triển đã tích cực sử dụng và phát triển cho Upstart là những người cần giải quyết mọi thứ. Có một tài liệu di chuyển trên Ubuntu Wiki để giúp các nhà phát triển chuyển đổi các tập lệnh init của họ, nhưng người dùng và hệ thống có thể tiếp tục sử dụng Upstart bằng cách gắn bó với 14.04 (được hỗ trợ cho đến năm 2019).

Lý do và lý do thay đổi thực sự không phải từ phía Ubuntu. Canonical đã đủ hạnh phúc với Upstart (dự án của họ) nhưng nhiều người dùng Debian muốn chuyển sang một công cụ init hiện đại để có được sự tương tranh tốt hơn khi khởi động và chức năng giám sát tốt hơn trên tất cả các dịch vụ.

Điều đó có nghĩa là một cuộc chiến giữa các lựa chọn khác nhau (các lý do) và systemd cuối cùng đã giành chiến thắng.

Canonical đã đi cùng với Debian vì nó dễ nhất và có lẽ là tốt nhất. Họ có thể bỏ một dự án và không chiến đấu ngược dòng. Nó cũng đưa chúng ta phù hợp với các bản phân phối khác (Red Hat, Fedora, v.v.), những người cũng đang chuyển sang systemd. Tập trung hơn và ít trùng lặp nỗ lực.

tl; dr Đối với một người không có kỹ thuật, điều này hoàn toàn không ảnh hưởng đến bạn. Đối với Ubuntu, điều đó có nghĩa là ít công việc hơn và hệ thống init tốt hơn.


18

Bất cứ ai cũng có thể giải thích thỏa đáng cho người dùng không có kỹ thuật như thế nào và nếu điều này ảnh hưởng đến chúng tôi?

Về lý thuyết, điều này không ảnh hưởng đến người dùng cuối phi kỹ thuật, những người không tham gia vào quá khứ nghiêm trọng về cách thức hoạt động của hệ thống. Trong thực tế, có rất nhiều thứ bạn sẽ thấy.

Đây là một danh sách không đầy đủ:

  • Nếu bạn có phần mềm bổ trợ sử dụng các tệp định nghĩa công việc mới bắt đầu để bắt đầu chương trình, chúng sẽ ngừng hoạt động. Bạn sẽ phải cài đặt (và có thể viết nhưng thông thường hơn là chỉ tắt nick người khác đã viết) các tệp đơn vị dịch vụ systemd . Ví dụ: https://askubfox.com/questions/613785
  • Các giả định thiết kế khác nhau của các nhà phát triển systemd về những thứ như quản lý năng lượng dẫn đến các mặc định có mâu thuẫn với những gì bạn có thể đã trở nên quen thuộc. Các nhà phát triển systemd có những ý tưởng rất rõ ràng về những gì sẽ xảy ra để đáp ứng với các công tắc nắp trên máy tính xách tay , ví dụ.
  • Nếu bạn đang sử dụng trình điều khiển hiển thị độc quyền của nvidia, thì có nhiều quyết định thiết kế khác nhau trong systemd có ảnh hưởng đến bạn. Ví dụ: https://askubfox.com/questions/613773
  • Nó không thực sự phù hợp khi xuất phát, vì người dùng Ubuntu đã có một trang thủ công nói với họ điều này trong một số năm nay, nhưng tôi đề cập đến nó cho những người dùng không phải Ubuntu có thể đọc được điều này: Những người dùng hệ điều hành Linux khác đến từ Hệ thống 5 init+ rcbị cắn bởi thực tế là systemd chỉ tương thích ngược với System 5 rc. Giống như mới bắt đầu, và thực sự là hầu hết các hệ thống khác, nó tuyên bố và cung cấp, không tương thích ngược với Hệ thống 5 initvà tệp cấu hình của nó /etc/inittab.

    Vì vậy, những người đã nghe theo lời khuyên từ 30 năm trước, những người khuyên rằng "Chà, bạn chỉ cần chỉnh sửa nó thành /etc/inittab", hoặc những người sử dụng phần mềm tuân theo lời khuyên đó giờ đây có phần mềm không khởi động tại bootstrap. Ví dụ: https://unix.stackexchange.com/a/196197/5132

  • Bạn không thể chuyển sang chế độ một người dùng thông qua shutdownlệnh systemd , như bạn có thể làm với các shutdownlệnh trước đó . Ngoài thực tế là nó được gọi là chế độ cứu hộ trong thuật ngữ hệ thống, chế độ cứu hộ không được coi là trạng thái tắt trong thế giới quan hệ thống. Nó được coi là một trạng thái chạy . shutdown nowsẽ tắt nguồn máy. Đó là systemctl rescueđể đạt đến chế độ người dùng đơn trong thế giới systemd. Đọc thêm: https://unix.stackexchange.com/a/196471/5132
  • Thêm vào chủ đề cuối cùng đó: Nếu bạn chưa vứt bỏ ý tưởng về các cấp độ chạy , bây giờ là thời gian để làm điều đó. Đọc thêm: https://unix.stackexchange.com/a/196014/5132
  • Bạn sẽ phải cẩn thận khi làm theo lời khuyên chung về systemd được tìm thấy bởi trình duyệt WWW ngẫu nhiên, bởi vì bạn "biết" rằng "bây giờ tất cả đều là systemd". Bạn sẽ thấy mọi người nói về việc chạy các lệnh với --usertùy chọn systemctl. Điều đó không áp dụng cho Ubuntu (chưa). upstart và systemd khác nhau đáng kể trong lĩnh vực này và Ubuntu phiên bản 15 vẫn sử dụng init khởi động mỗi phiên thay vì một phiên bản systemd cho mỗi người dùng . Vì vậy , ví dụ https://superuser.com/a/860598/38062 sẽ không được áp dụng. ☺

6

Như những người khác đã lưu ý ở đây, về lý thuyết, điều này không ảnh hưởng đến người dùng cuối phi kỹ thuật - và về lý thuyết không có sự khác biệt giữa lý thuyết và thực tiễn nhưng trong thực tế thì có.

Làm rõ

Tôi nghĩ rằng vài điều được đăng ở đây cần một số làm rõ:

Đó là một hệ thống init, không phải thứ mà người dùng thường tương tác.

Đó là trường hợp với SysV init và với Upstart nhưng nó không còn là trường hợp với systemd nữa. Nó thực hiện rất nhiều thứ mà người dùng thường tương tác với:


Nó sẽ thay thế hoàn toàn chức năng được cung cấp bởi Upstart Tập và làm thêm một vài điều

Hai điều cần làm rõ - đầu tiên về việc thay thế hoàn toàn Upstart:

Không có tập lệnh init SysV

Một trong những vấn đề mà mọi người gặp phải với systemd là nó không chạy các tập lệnh init SysV. Vì vậy, có một ví dụ rằng nó không thay thế hoàn toàn chức năng được cung cấp bởi Upstart.

Đây là điều mà chúng tôi có thể dựa vào hơn 30 năm và theo truyền thống, bạn đã viết các tập lệnh init SysV để có tính di động tối đa mà không cần lặp lại (bằng cách viết nhiều phiên bản của cùng một tập lệnh), không còn như vậy nữa.

Đây không phải là vấn đề khi chỉ sử dụng các gói từ kho chính thức bởi vì có lẽ tất cả các gói đã từng sử dụng tập lệnh SysV init hoặc Upstart sẽ cần phải viết lại tập lệnh của chúng trước khi chúng được đóng gói.

Nó sẽ chỉ là vấn đề đối với những người tình cờ sử dụng bất kỳ phần mềm tùy chỉnh hoặc bên thứ ba nào có tập lệnh init của họ được viết cho SysV init hoặc Upstart và những người đó sẽ cần các tập lệnh init được viết lại trước khi nâng cấp lên hệ thống với systemd (hoặc get cài đặt mới bắt đầu, cũng là một tùy chọn hoặc di chuyển sang hệ thống không sử dụng systemd).

Có systemd-sysv-tạo được cho là tự động dịch các tập lệnh init SysV sang tập lệnh systemd nhưng có một số lỗi và một danh sách dài các không tương thích rõ ràng .

Bây giờ, làm rõ thứ hai - về vài điều thêm:

Vài điều thêm

Những "điều bổ sung" mà systemd sẽ trình bày - theo A Phối cảnh cho systemd - Điều gì đã đạt được và Điều gì nói dối trước bài thuyết trình của Lennart Poettering vào năm 2014 tại Gnome.asia - như sau:

  • hệ thống init
  • ghi nhật ký
  • quản lý đăng nhập
  • quản lý thiết bị
  • quản lý tập tin tạm thời và không ổn định
  • đăng ký định dạng nhị phân
  • lưu / khôi phục đèn nền
  • lưu / khôi phục rfkill
  • khởi động
  • đọc
  • thiết lập lưu trữ được mã hóa
  • Phát hiện phân vùng EFI / GPT
  • đăng ký máy ảo / container
  • quản lý container
  • quản lý tên máy chủ
  • quản lý địa phương
  • quản lý thời gian
  • quản lý hạt giống ngẫu nhiên
  • quản lý biến sysctl
  • quản lý điều khiển
  • hướng nội
  • khám phá tự động
  • cắm và chơi
  • quản lý mạng
  • systemd-mạngd
  • Bộ đệm DNS
  • phản hồi mDNS
  • Phản hồi LLMNR
  • Xác minh DNSSEC
  • IPC trong nhân
  • xe buýt
  • xe buýt
  • đồng bộ hóa thời gian với NTP
  • systemd-timesyncd
  • tích hợp với container
  • hộp cát của dịch vụ
  • hộp cát của ứng dụng
  • Định dạng hình ảnh hệ điều hành
  • Định dạng hình ảnh container
  • Định dạng hình ảnh ứng dụng
  • GPT với tính năng tự động phát hiện
  • Hệ thống không quốc tịch
  • hệ thống tức thời
  • khôi phục cài đặt gốc
  • khởi tạo và cập nhật nút
  • tích hợp với đám mây
  • quản lý dịch vụ trên các nút
  • Hình ảnh hệ điều hành có thể kiểm chứng tất cả các cách để chương trình cơ sở
  • Đang tải khởi động
  • Xây dựng hệ điều hành thế hệ tiếp theo của Internet Thống nhất sự khác biệt vô nghĩa giữa các bản phân phối

Vì vậy, quay trở lại: "Đó là một hệ thống init, không phải thứ mà người dùng thường tương tác." - phải chỉ ra rằng hệ thống init chỉ là một mục trong danh sách đó.


Và cuối cùng, điều cuối cùng tôi muốn bình luận:

[T] anh ta chỉ có thời gian một người dùng không có kỹ thuật sẽ thấy điều này là khi nó gặp trục trặc.

Ôi, thật là nhẹ nhõm. :)

Thay đổi

Những thay đổi đáng chú ý nhất đối với người dùng cuối (trừ chính tập lệnh) đang bắt đầu và dừng dịch vụ và sử dụng các lệnh như:

mà không còn làm việc như mong đợi. Ví dụ: nohuplà lệnh POSIX để đảm bảo rằng quy trình tiếp tục chạy sau khi bạn đăng xuất khỏi phiên của mình. Nó không còn hoạt động trên systemd. Ngoài ra, các chương trình như screentmuxcần phải được gọi theo một cách đặc biệt hoặc nếu không các quy trình mà bạn chạy với chúng sẽ bị giết (trong khi không làm cho các quy trình đó bị giết thường là lý do chính của việc chạy màn hình hoặc tmux ở vị trí đầu tiên).

Đây không phải là một lỗi, nó là một sự lựa chọn thiết kế, vì vậy nó không có khả năng được sửa chữa trong tương lai. Đây là những gì Lennart Poettering đã nói về vấn đề này:

Theo quan điểm của tôi, UNIX thực sự khá lạ khi nó mặc định cho phép mã người dùng tùy ý ở xung quanh không bị hạn chế sau khi đăng xuất. Hiện nay, nó đã được thảo luận từ lâu trong số nhiều người dùng HĐH, rằng điều này có thể xảy ra nhưng chắc chắn không phải là mặc định, nhưng cho đến nay, không ai dám lật công tắc để chuyển nó từ mặc định sang tùy chọn. Không dọn dẹp các phiên của người dùng sau khi đăng xuất không chỉ xấu xí và có phần hack mà còn là một vấn đề bảo mật. systemd 230 cuối cùng đã tắt công tắc và cuối cùng theo mặc định sẽ dọn sạch mọi thứ một cách chính xác khi người dùng đăng xuất.

Để biết thêm thông tin xem:

Đang chạy screen

  • mới bắt đầu: screen
  • hệ thống: systemd-run --user --scope screen

(Lưu ý: hành vi "khởi động" ở trên thực sự là bất cứ điều gì ngoại trừ systemd, đây không phải là bắt đầu cụ thể)

Bắt đầu công việc:

  • mới bắt đầu: start foo
  • hệ thống: systemctl start foo

Dừng công việc foo:

  • mới bắt đầu: stop foo
  • hệ thống: systemctl stop foo

Khởi động lại công việc:

  • mới bắt đầu: restart foo
  • hệ thống: systemctl restart foo

Liệt kê các công việc với trạng thái của chúng:

  • mới bắt đầu: initctl list
  • hệ thống: systemctl status

(Xem câu trả lời của tôi về Ưu / nhược điểm của Upstart và systemd là gì để biết thêm chi tiết nằm ngoài phạm vi của câu hỏi này.)

Nhật ký

Ngoài ra còn có một sự khác biệt lớn trong việc xử lý các bản ghi vì trái với truyền thống Unix, các bản ghi của systemd được lưu trữ trong các tệp nhị phân ở định dạng tùy chỉnh, vì vậy thay vì:

cat /var/log/upstart/foo.log
tail -f /var/log/upstart/foo.log

bạn cần sử dụng các lệnh đặc biệt để truy cập nhật ký của mình:

sudo journalctl -u foo
sudo journalctl -u foo -f

Tranh cãi

Việc giới thiệu systemd trước tiên cho Debian và sau đó là Ubuntu không phải là không có tranh cãi và sự phản đối lớn như bất kỳ ai đã viết một trong những bài viết sau:

Vị trí Debian chính thức trên systemd và kết quả tranh cãi đã dẫn đến tuyên bố Exodus vào năm 2014 và kết thúc bằng sự từ chức của Ian Jackson .

Các sáng kiến ​​của Freedom Freedom , Without-Systemd.org Systemd-Free.org đã ra đời, với rất nhiều cuộc thảo luận về Hacker News .

đọc thêm


Bạn đang đưa câu trả lời của tôi vào một bối cảnh khác. Systemd không chỉ một hệ thống init nhưng câu hỏi này là về sự khởi đầu → systemd và quyết định đó ... Không phải "Tất cả những thứ mà systemd thay thế là gì?"
Oli
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.