Hãy nói Fedora và Ubuntu?
Cả hai đều là hệ điều hành hiện nay.
Điều gì xảy ra trong hệ điều hành systemd
cơ chế tự nhiên
Systemd sử dụng các loại đơn vị. .mount
tập tin đơn vị hướng dẫn nó để gắn kết khối lượng. .swap
tập tin đơn vị hướng dẫn nó nói với kernel về phân vùng trao đổi. ( .service
các tệp đơn vị hướng dẫn nó cách chạy các dịch vụ. V.v.) Đây là các cơ chế hệ thống gốc. Để ban hành chúng, systemd tự loại bỏ các tiến trình con thực hiện các cuộc gọi hệ thống có liên quan.
Nếu bạn sử dụng systemctl
lệnh (với --all
) trên một hệ điều hành systemd như vậy, nó sẽ cho bạn biết về các .swap
đơn vị được tải . Ví dụ:
dev-đĩa-by \ x2dpartuuid-40549710 \ x2d05.swap được tải hoạt động / dev / đĩa / by-partuuid / 40549710-05
dev
dev-sda5.swap đã tải hoạt động / dev / sda5
Nó cũng sẽ cho bạn biết về các .mount
đơn vị.
Một quản trị hệ thống có thể thực sự viết như .swap
file đơn vị bằng tay, cũng giống như xe có thể viết .service
, .socket
và các file đơn vị khác bằng tay. Bản thân systemd chỉ tìm các tệp đơn vị trong hệ thống tệp. Họ là cơ chế bản địa của nó.
Người ta thậm chí có thể lấy systemd để cho bạn thấy những gì trong các tệp đơn vị này và nơi có thể tìm thấy chúng trong hệ thống tệp:
$ systemctl cat dev-đĩa-by \\ x2duuid-1bb589e8 \\ x2d929f \\ x2d4041 \\ x2d81f4 \\ x2dff2b339b4e2a.swap
# /run/systemd/generator/dev-disk-by\x2duuid-1bb589e8\x2d929f\x2d4041\x2d81f4\x2dff2b339b4e2a.swap
# Tự động được tạo bởi systemd-fstab-tạo
[Đơn vị]
SourcePath = / etc / fstab
Tài liệu = man: fstab (5) man: systemd-fstab-tạo (8)
[Hoán đổi]
Cái gì = / dev / đĩa / by-uuid / 1bb589e8-929f-4041-81f4-ff2b339b4e2a
Tùy chọn = sw
$
tập tin đơn vị được tạo tự động
Người ta có thể viết chúng bằng tay. Tuy nhiên, thông thường các tệp đơn vị .mount
và như vậy .swap
được tạo tự động bởi các chương trình được gọi là trình tạo . Hai máy phát điện như vậy là systemd-fstab-generator
và systemd-gpt-auto-generator
. Cả hai đều chạy sớm trong quá trình bootstrap và đáp ứng với một systemctl daemon-reload
lệnh và (như bạn có thể thấy ở trên), chúng tạo ra toàn bộ tải các tệp đơn vị vào thư mục con không có giấy tờ /run/systemd/
. Bản thân systemd chỉ sử dụng các tệp đơn vị được tạo .
Trình tạo trước đây đọc /etc/fstab
, nhận ra một số phần mở rộng systemd cho định dạng tệp đó. Như tôi đã chỉ ra trong một bình luận câu trả lời, theo truyền thống phân vùng swap có loại gắn kết của sw
và đó là cách người ta sẽ thấy rằng hệ điều hành khác nhận hồ sơ trao đổi trong bảng này. Nhưng phần mềm Linux đã thay thế việc nhận ra loại VFS thay thế, tìm kiếm swap
loại VFS. systemd-fstab-generator
không phải là ngoại lệ ở đây, và đó là cách nó diễn giải /etc/fstab
khi chuyển đổi nó thành các cơ chế riêng.
Trình tạo sau xử lý bảng phân vùng EFI nằm trên cùng một đĩa chứa Phân vùng hệ thống EFI, tìm kiếm các mục trong bảng phân vùng EFI có nhiều loại phân vùng GUID nổi tiếng khác nhau . Một trong những GUID đó là GUID thông thường được gán cho các phân vùng trao đổi Linux; và nếu systemd-gpt-auto-generator
tìm thấy một phân vùng có GUID đó (thỏa mãn các tiêu chí được đưa ra trong tài liệu hệ thống), nó sẽ tạo một .swap
đơn vị cho nó; không /etc/fstab
tham gia ở tất cả .
Tất nhiên, quá trình này có rất nhiều tác dụng phụ. Ví dụ: vì /etc/fstab
không có khóa chính cho bảng, các bản ghi có thể có các trường "spec" và "file" trùng lặp (tức là "what" và "where"). Tuy nhiên, trong cơ chế systemd gốc, trường "file" (tức là "where") là một khóa duy nhất cho .mount
các đơn vị, được nhúng vào tên đơn vị. Không có hai .mount
đơn vị có thể chia sẻ nó. Đối với .swap
các đơn vị, trường "spec" (tức là "cái gì") là khóa duy nhất cho các đơn vị. Không có hai .swap
đơn vị có thể chia sẻ điều đó. Vì vậy, không phải tất cả các bản ghi /etc/fstab
đều có thể chuyển đổi thành các cơ chế gốc và sẽ hoạt động, đặc biệt nếu mọi người thực hiện những việc như liệt kê cùng một điểm gắn kết cho hai mục đích khác nhau hoặc liệt kê cùng một phân vùng trao đổi theo hai cách khác nhau.
Tương tự, vì nó đã được dịch /etc/fstab
sang cơ chế riêng và cơ chế riêng của systemd có các cách khác để kích hoạt các đơn vị , nên hành vi này rất khác so với các hệ điều hành không có hệ thống. Theo .mount
mặc định, một đơn vị sẽ được kích hoạt tự độngsystemd-udevd
, ngay cả sau khi bootstrap, đáp ứng với sự xuất hiện của thiết bị lưu trữ được gắn. Hoặc nó có thể được liệt kê dưới dạng một Wants=
hoặc Requires=
một số .service
hoặc .socket
đơn vị, có nghĩa là nó sẽ được kích hoạt lại. Thậm chí còn có RequiresMountsFor=
.
chương trình cài đặt và cách systemd
Theo truyền thống, các chương trình cài đặt hệ điều hành và quản trị viên hệ thống sau đó cấu hình lại hệ thống, có sw
các mục nhập bằng văn bản /etc/fstab
. Và đó là cách bản địa .mount
và .swap
các đơn vị cuối cùng được tạo tự động. Tiện ích cài đặt / cấu hình "biết" nơi đặt tệp hoán đổi, bởi vì trong giao diện người dùng của nó, quản trị viên hệ thống đã đưa ra một số lựa chọn và viết một /etc/fstab
để khớp. Đôi khi sự lựa chọn đó là tôi cần bạn tạo cho tôi một phân vùng trao đổi như là một phần của cài đặt. ; đôi khi chỉ cần sử dụng phân vùng trao đổi mà bạn đã tìm thấy trên đĩa. (trình cài đặt nhìn vào các loại phân vùng, quá).
Nhưng những người làm hệ thống có ý tưởng về các hệ điều hành tự động cấu hình từ một /etc
cây trống rỗng , được gọi là hệ thống không trạng thái , và đó là những cơ chế như trình tạo đọc bảng phân vùng EFI. Trong kế hoạch của người dùng hệ thống, không có /etc/fstab
, và thực sự không có dữ liệu cấu hình liên tục nào /etc
cả, và tất cả những thứ này được suy luận từ nội dung của bảng phân vùng trên đĩa , ở mọi bootstrap và mọi lúc systemctl daemon-reload
. Ngày nay họ đang quảng bá các chương trình cài đặt hệ điều hành hơn là không viết/etc/fstab
.
Trong sơ đồ truyền thống, tất nhiên bạn thực sự có thể có mỗi hệ điều hành có phân vùng trao đổi riêng của nó và không để chúng chạm vào các phân vùng trao đổi của nhau. Và thực sự nếu bạn đang sử dụng chế độ ngủ đông để phân vùng thông qua phân vùng trao đổi và hy vọng có thể đa khởi động sang hệ điều hành khác trong khi ngủ đông ( đó là một ý tưởng rất tồi vì rất dễ gây ra hỏng hóc hệ thống tệp theo cách này ) cần thiết.
Trong sơ đồ systemd, ngay cả khi hệ điều hành chưa được như người hệ thống dự tính và "không trạng thái", các máy phát điện nói trên vẫn chạy; và do đó, tất cả các phân vùng trao đổi (trên đĩa gốc / đĩa gốc) với loại phân vùng cần thiết sẽ được tự động sử dụng bởi tất cả các hệ điều hành systemd. Vì họ sẽ chia sẻ tất cả các phân vùng trao đổi được phát hiện tự động, nên người ta thực sự không cần tạo một phân vùng trao đổi cho mỗi hệ điều hành được cài đặt.
đọc thêm