Chciałbym dowiedzieć się, jak Linux radzi sobie z oddzielnymi partycjami rozruchowymi. Tak naprawdę nie jestem zainteresowany, ale chciałbym wiedzieć, jak to działa pod maską.
Rozważ dysk twardy sda
, który ma dwie partycje sda1
i sda2
. Powiedzmy, że sda2
jest to root
partycja /
zawierająca system operacyjny Linux.
Rozumiem, że bootloader GRUB2
jest zamontowany na /boot
. Kiedy jednak katalog /boot
znajduje się na osobnej partycji sda2
, jak to się dzieje, że /
faktycznie został zamontowany?
Jak w tym przypadku przebiega interakcja między BIOS-em, głównym rekordem rozruchowym i GRUB-em (lub plikami /boot
)? Czy to tak, że dane na tym etapie /boot
nie są tak naprawdę montowane w /
systemie plików?
Uwaga: to pytanie dotyczy montażu partycji głównej, ale nie omawia osobnej partycji rozruchowej.
/boot
nie odnosi się do katalogu zamontowanego na partycji głównej?run-init
który usuwa wszystkie pliki z initramfs, a następnie chroots do głównego systemu plików.UEFI
staje się coraz bardziej popularny ;-) @strugeeNie wydaje mi się, że rozumiesz tutaj. Ze strony Wikipedii GNU GRUB :
fragment
W wersji 2 GRUB ma miejsce:
fragment
UWAGA: Kiedy zobaczysz typowe menu GRUB2, w którym wybierasz system operacyjny / jądro do uruchomienia, odwołujesz się do
/boot/grub
katalogu systemu w tym momencie.Bibliografia
źródło
Linux (jądro) nie dba o to, ile masz partycji rozruchowych. Załadowaniu jądra z dysku jest zadaniem bootloadera (np
grub
,grub2
,lilo
) oraz narzędzia te również nie dbają o liczbie miejsc jądro może być zlokalizowane. Dbają tylko o konkretną lokalizację.Na przykład moją partycją rozruchową jest
/dev/md1
lustro RAID mdadm wspierane przez partycje fizyczne/dev/sde1
i/dev/sdf1
. Mogę montować je indywidualnie, jeśli chcę i jako takie technicznie liczy się to, że mam dwie partycje rozruchowe, chociaż powinny one zawierać te same dane.Posiadanie dwóch partycji dla / boot jest dla mnie problemem związanym z dostępnością, ale mogą być równie różne partycje / boot. Następnym krokiem jest, skąd bootloader wie? Oto jak:
Jest to wyjątek od
grub2
konfiguracji i będziesz pamiętać, że jedyne różnice sąroot=hd0,1
iroot=hd1,1
które ustalają której partycji rozruchowej, która odwołuje wjazdowych.Teraz poprowadzę Cię przez but, abyś mógł zrozumieć, co się tutaj dzieje.
grub2
) Jest skonfigurowany tak, aby wiedzieć, które urządzenie i partycja zawiera twoje jądro. Grub2 uzyskuje bezpośredni dostęp do tej partycji i ładuje jądro do pamięci.Program ładujący nie obchodzi, ile masz partycji rozruchowych, zależy tylko na tym, gdzie się znajdują i musisz podać te informacje.
Jądro nie obchodzi, ile masz partycji rozruchowych, ponieważ nigdy nie musi ich widzieć (wystarczy mieć je na przykład w celu dodania nowych jąder).
źródło