Uruchamianie z zewnętrznego dysku USB / napędu?

44

Wiem, że nie jest możliwe bezpośrednie uruchomienie z zewnętrznej pamięci USB / napędu, ale zamiast tego musisz uruchomić z karty SD, a wtedy urządzenie zewnętrzne może przejąć kontrolę. Jaki jest najłatwiejszy i preferowany sposób skonfigurowania tego, dlatego uruchom komputer z karty SD, a następnie pozwól, aby urządzenie zewnętrzne przejęło kontrolę?

stefan.at.wpf
źródło

Odpowiedzi:

37

Jeśli masz istniejący system operacyjny działający na Pi, najpierw warto wiedzieć, czy urządzenie USB jest obsługiwane. Możesz to zrobić, montując go normalnie:

mount /dev/sda1 /mnt 

Jeśli to się nie powiedzie, nie będziesz mógł użyć urządzenia USB jako partycji głównej bez włączenia modułów jądra. W tym celu może być konieczne skompilowanie własnego jądra.

Jeśli suces, to powinien działać dobrze z pewnymi poprawkami parametrów rozruchowych, których używa Pi:

Na istniejącym obrazie otwórz cmdline.txt, który można znaleźć na partycji rozruchowej, i wprowadź następujące wiersze:

dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 
root=/dev/sda1 rootfstype=ext4 rootwait text

Wszystko, co musisz wtedy zrobić, to flashować ten obraz na kartę SD i uruchomić Pi. Jeśli wszystko jest w porządku, /dev/sda1powinna być lokalizacja dysku USB podczas rozruchu Pi, a zatem powinna próbować użyć tej lokalizacji jako root. Ten rootwaitparametr jest ważny, ponieważ spowoduje zawieszenie procesu rozruchu do momentu rozpoznania dysku USB. Bez tego Pi może narzekać, że lokalizacja nie istnieje.

Sugeruję skopiowanie partycji głównej z istniejącego obrazu Raspberry Pi na dysk USB i użycie jej do rozruchu.

Daj mi znać, jeśli potrzebujesz dodatkowych informacji.

Jivings
źródło
+1 Świetna odpowiedź. Nie powinno console=...już tam być?
Alex Chamberlain
2
Czy możesz także używać UUID w wierszu poleceń?
Alex Chamberlain
Tak, podałem cały plik i gdzie mówisz o korzystaniu z UUID?
Jivings
3
Dziękuję bardzo Jivings, „sflashowałem” oficjalny obraz na moją pamięć USB, następnie skopiowałem zawartość z partycji FAT na kartę SD i dostosowałem cmdline.txt. W moim przypadku partycją główną jest wtedy / dev / sda2, ponieważ / dev / sda1 jest (nieużywaną) partycją rozruchową na pamięci USB. W moim przypadku nie potrzebowałem rootwaita, ale dobrze jest znać ten parametr!
stefan.at.wpf
@ stefan.at.wpf (i Jivings) Możesz użyć identyfikatora UUID zamiast /dev/sdx- przynajmniej w /etc/fstab/- wtedy nie ma znaczenia, czy xzmiany.
Alex Chamberlain
4

Najłatwiejszym sposobem skonfigurowania tego jest użycie BerryBoot . Obsługuje instalację do lub z jednego lub więcej obrazów na pamięci USB (lub na samej karcie SD) od razu po wyjęciu z pudełka poprzez ładny interfejs GUI.

Aby to skonfigurować, wystarczy skopiować ~ 70 MB plików instalacyjnych na kartę SD w formacie FAT32, włożyć ją do urządzenia i uruchomić. Ma nawet listę wstępnie skonfigurowanych obrazów, które może automatycznie pobrać i zainstalować za pośrednictwem połączenia Ethernet lub Wi-Fi.

Następnie wybierz system operacyjny, który chcesz domyślnie uruchomić z dostępnych obrazów, a jeśli chcesz dodać nowe obrazy lub zmienić domyślny w późniejszym terminie, po prostu naciśnij Enter podczas procesu rozruchu, aby zmienić konfigurację!

Nathan Dunn
źródło
przenieść obraz na kartę SD? Myślałem, że chcemy zainstalować go na pamięci USB?
Suhaib,
Jak stwierdził OP, nie można uruchomić bezpośrednio z pamięci USB na Raspberry Pi - Potrzebujesz karty SD z zainstalowanym bootloaderem, który może przekazać proces na inne urządzenie po włączeniu zasilania.
Nathan Dunn
2

ok, aby wyjaśnić -

w odpowiedzi na odpowiedź @Jivings -

Istnieje kilka sposobów odwoływania się do dysku w fstab. Używanie / dev / sdXX może nie zawsze być bezpieczne, ponieważ kolejność pojawiania się dysków scsi może nie być gwarantowana.

Nie wiem, czy konfiguracja rozruchowa rozumie tylko podstawowe etykiety urządzeń. „root = / dev / sda1” jest jednak abstrakcją, więc teoretycznie root = LABEL = TEST może działać. Muszę to zbadać.

Przepraszam, jeśli nie jestem bardzo jasny. Oczywiście mam pewne umiejętności w wyjaśnianiu Linuksa nowym ludziom.

Nox
źródło
1
Jivings: czy możesz wyjaśnić niektóre parametry w przykładzie linii poleceń dla nas, nubies? Dzięki.
Michael Moriarty
Nigdy nie wspominał o fstab. Docelowa nazwa urządzenia / partycji jest parametrem jądra. Wierzę, że inne konwencje nazewnictwa, takie jak UUID, są możliwe w nowoczesnych jądrach, szczególnie jeśli mają moduły initrd / initramfs.
jiggunjer