Câu trả lời:
Khi bộ tải khởi động gọi kernel, nó sẽ truyền cho nó một tham số được gọi root
. Vì vậy, khi kernel khởi tạo xong, nó sẽ tiếp tục bằng cách gắn phân vùng gốc đã cho vào /
và sau đó gọi /sbin/init
(trừ khi điều này bị ghi đè bởi các tham số khác).
Sau đó, init
quá trình bắt đầu phần còn lại của hệ thống bằng cách tải tất cả các dịch vụ được xác định sẽ được bắt đầu trong runlevel mặc định của bạn.
Tùy thuộc vào cấu hình của bạn và trên hệ thống init mà bạn sử dụng, có thể có nhiều bước khác giữa các bước mà tôi đã đề cập. Hiện tại các hệ thống init phổ biến nhất trên Linux là SysVInit (hệ thống truyền thống), Upstart và Systemd. Bạn có thể tìm thêm chi tiết về quá trình khởi động trong bài viết trên wikipedia này .
Đây là một ví dụ đơn giản về cấu hình Grub của tôi. Phần quan trọng để trả lời câu hỏi của bạn là ở dòng thứ hai đến dòng cuối cùng, có một root=/dev/sda3
:
menuentry 'Gentoo GNU/Linux' --class gentoo --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-40864544-2d0f-471a-ab67-edd7e4754dae' {
set root='hd0,msdos1'
echo 'Loading Linux 3.12.6-gentoo-c2 ...'
linux /kernel-3.12.6-gentoo-c2 root=/dev/sda3 ro
}
Trong nhiều cấu hình, hạt nhân gắn kết /
ở chế độ chỉ đọc và tất cả các tùy chọn còn lại được đặt thành mặc định. Trong /etc/fstab
bạn có thể chỉ định các tham số hệ thống tệp mà sau đó sẽ được áp dụng sau khi init kết thúc nó.
Một mục nhập fstab
là cần thiết, nếu bạn muốn chỉ định một số tùy chọn gắn kết không mặc định. Tuy nhiên, ngày nay với systemd
, một thiết bị kernel chính xác và fstype trong fstab
là không cần thiết. Bạn có thể thay thế mục gốc bằng một cái gì đó như:
#UUID=8f74237d-b689-4beb-9d1f-f60b426c9969 / ext4 rw,relatime,data=ordered 0 1
dummy / auto rw,relatime,data=ordered,debug 0 1
và các tùy chọn gắn kết vẫn được systemd vinh danh.
Bạn có thể sử dụng bất kỳ tên thiết bị xấu nào, ví dụ: /dev/sdz1
ngoại trừ UUID xấu. Với một UUID xấu, thông báo sẽ được in khi khởi động: Failed to start Remount Root and Kernel File Systems
nhưng dù sao thì hệ thống cũng khởi động.
init
quá trình sau đó gắn kết mọi thứ/etc/fstab
theo các tham số ở đó, thường có nghĩa là gắn lại phân vùng gốc đọc-ghi.