Linux (kernel) không quan tâm bạn có bao nhiêu phân vùng khởi động. Tải hạt nhân từ đĩa là công việc của bộ nạp khởi động (ví dụ grub
, grub2
, lilo
) và những công cụ này cũng không quan tâm đến số lượng các địa điểm một hạt nhân có thể được bố trí. Họ chỉ quan tâm đến vị trí cụ thể.
Ví dụ, phân vùng khởi động của tôi là /dev/md1
gương RAID mdadm được hỗ trợ bởi các phân vùng vật lý /dev/sde1
và /dev/sdf1
. Tôi có thể gắn kết chúng riêng lẻ nếu tôi muốn và vì thế về mặt kỹ thuật này được tính là có hai phân vùng khởi động, mặc dù chúng nên chứa cùng một dữ liệu.
Có hai phân vùng cho / boot đối với tôi là một vấn đề khả dụng, nhưng chúng có thể khác nhau / phân vùng khởi động. Bước tiếp theo là làm thế nào để bộ nạp khởi động biết? Đây là cách thực hiện:
menuentry 'Linux 3.10.17 (sde) kernel-3.10.17-g' {
root=hd0,1
linux /boot/kernel-3.10.17-g domdadm dolvm root=/dev/md3
initrd /boot/initrd-3.10.17-g
}
menuentry 'Linux 3.10.17 (sdf) kernel-3.10.17-g' {
root=hd1,1
linux /boot/kernel-3.10.17-g domdadm dolvm root=/dev/md3
initrd /boot/initrd-3.10.17-g
}
Đây là một đoạn trích từ một grub2
cấu hình và bạn sẽ lưu ý rằng sự khác biệt duy nhất là root=hd0,1
và root=hd1,1
thiết lập phân vùng khởi động nào mà tham chiếu.
Bây giờ để đi bộ bạn mặc dù một khởi động để bạn có thể hiểu những gì đang xảy ra ở đây.
- BIOS đọc MBR từ ổ đĩa khởi động và nhảy đến bộ tải khởi động
- Bộ tải khởi động (ví dụ
grub2
) được cấu hình để biết thiết bị và phân vùng nào chứa kernel của bạn. Grub2 truy cập phân vùng này trực tiếp và tải kernel của bạn vào bộ nhớ.
- Bộ tải khởi động của bạn sau đó nhảy vào kernel và kernel khởi động máy của bạn.
Bộ tải khởi động không quan tâm bạn có bao nhiêu phân vùng khởi động, nó chỉ quan tâm đến vị trí của chúng và bạn phải cho nó biết thông tin đó.
Hạt nhân không quan tâm bạn có bao nhiêu phân vùng khởi động, bởi vì nó không bao giờ cần phải xem chúng (bạn chỉ cần có sẵn nó để thêm hạt nhân mới chẳng hạn).
/boot
không đề cập đến một thư mục được gắn trên phân vùng gốc?