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ż rootwaitparametry 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/sdXurzą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 drivew 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 rootwaiti 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 (
rootwaitczy to teraz magia). - Jądro montuje partycję, w której został przekazany
root(jest to parametr jądra, a nie parametr grub). init.duruchamia proces uruchamiania użytkownika, w tym montowanie elementów z/etc/fstab.
Część 5 daje mi problemy.