Mam dysk twardy laptopa w zewnętrznej obudowie, której używam jako dużego pendrive. Dla dodatkowej niespodzianki zainstalowałem na nim Linuksa, dzięki czemu mogę uruchomić dowolną maszynę z moją wybraną dystrybucją (np. Do odzyskiwania danych lub naprawy uszkodzonego systemu lub po prostu za pomocą pożyczonego laptopa bez niszczenia wstępnie zainstalowanego systemu Windows). Problem polega na tym, że w zależności od konfiguracji sprzętowej dysk twardy USB może być widoczny pod różnymi ścieżkami. Do konfiguracji gruba używam po prostu, (hda0,0)
ponieważ jest to związane z urządzeniem, z którego grub został uruchomiony. Mam wpisy UUID w /etc/fstab
. Podaję również rootwait
parametry jądra, aby czekało na ustabilizowanie się podsystemu USB przed próbą zamontowania urządzenia.
Co mam przekazać jako jądro root=
? Aktualnie uruchom raz z pendrive, sprawdź komunikaty debugowania, aby zobaczyć, które /dev/sdX
urządzenie zostało przypisane do napędu USB przez jądro, a następnie uruchom ponownie i edytuj konfigurację grub. Nie mogę nic zmienić na komputerze oprócz włączenia Boot from USB hard drive
w BIOS i ustawienia wyższego priorytetu niż wewnętrzne dyski twarde.
Istnieje wiele skryptów generujących initrd, które zawierają obsługę UUID w ścieżce urządzenia root, niestety natywny Gentoo (genkernel) nie obsługuje rootwait
i nie miałem szczęścia próbować używać innych.
Proces uruchamiania przebiega w ten sposób ( jest podobny w Windows ):
- BIOS wybiera urządzenie rozruchowe i ładuje cokolwiek, co jest jego MBR (którym jest grub grub 1).
- Grub ładuje swoją konfigurację i pliki etapu 2 z urządzenia, które ustawił
root
, używając(hd0)
dla urządzenia, z którego został załadowany przez BIOS. - Grub ładuje i uruchamia jądro (wciąż ta sama numeracja, więc mogę użyć
(hd0,0)
ponownie). - Jądro inicjuje wszystkie wbudowane urządzenia (
rootwait
czy to teraz magia). - Jądro montuje partycję, w której został przekazany
root
(jest to parametr jądra, a nie parametr grub). init.d
uruchamia proces uruchamiania użytkownika, w tym montowanie elementów z/etc/fstab
.
Część 5 daje mi problemy.