Robię projekt na moim Raspberry Pi, w którym próbuję mieć moją partycję root na dysku USB. Właściwie wiele napędów kciukowych. Więc wszystko, co muszę zrobić, aby przejść z jednego miejsca pracy do drugiego, to podłączyć nowy USB i zrestartować komputer.
Ale tak naprawdę może to działać tylko wtedy, gdy partycja rozruchowa rzadko się zmienia i nie wie dużo więcej o partycji głównej niż o tym, jak uruchomić system operacyjny.
Czy to może zadziałać? Czy partycje rozruchowe dbają tylko o kilka prostych elementów katalogu głównego, które można łatwo utrzymać dla wszystkich tak samo, czy te dwie ewoluują razem i zaplątują się?
Korzystam z Raspian i zamierzam mieć dla niego wiele wersji systemu root, z których wszystkie będą używane (jedna na raz) przy tym samym rozruchu.
źródło
Odpowiedzi:
Tak, o ile mi wiadomo, jest to całkowicie możliwe!
Jeśli znalazłem samouczek, ale niestety nie jest on w języku angielskim, więc postaram się wyjaśnić procedurę własnymi słowami.
Zrestartuj Pi, gdy jedynym dyskiem zewnętrznym jest pamięć USB (w ten sposób unikamy posiadania różnych numerów dysków przy każdym uruchomieniu, ponieważ unikalne identyfikatory dysków nie są możliwe, jeśli chcesz zamienić pamięć USB później).
Uzyskaj numer napędu przez
sudo blkid
. Nie powinno być tylko jeden, który wygląda tak:/dev/sda1
.Za pomocą polecenia
mount
możemy sprawdzić, czy został on automatycznie zamontowany. Jeśli nie ma go na liście, przejdź do następnego kroku. Jeśli tak, uruchomsudo umount /dev/sda1
(popraw różne numery, jeśli nie są takie same), aby odmontować pamięć USB.Następnie chcemy sformatować pamięć USB, aby mieć odpowiedni system plików dla partycji głównej Debiana, co jest preferowane
ext4
. Można to zrobić za pomocą komendy:sudo mkfs.ext4 /dev/sda1
.Następnie musimy (ponownie) zamontować pamięć USB w tymczasowej lokalizacji, aby skopiować partycję root z karty SD. Robimy to za pomocą polecenia:
sudo mount /dev/sda1 /mnt
. (Jeśli polecenie narzeka, że/mnt
nie istnieje, utwórz folder o tej nazwie, uruchamiając:sudo mkdir /mnt
i spróbuj ponownie.Teraz nadszedł czas, aby skopiować wszystkie dane z partycji root przez pierwsze przełączenie na górę katalogu z:
cd /
a następnie uruchomić ten Tar-polecenia:sudo tar cf - * --exclude /mnt/* | ( cd /mnt; sudo tar xfp -)
. To chyba nie jest najbardziej kompaktowe rozwiązanie, ale działało dla mnie. Pamiętaj, że może to chwilę potrwać, w zależności od szybkości karty SD i napędu USB.Następnie musimy zmienić,
/etc/fstab
który zawiera dyski, które mają zostać zamontowane podczas uruchamiania poprzez uruchomieniesudo nano /mnt/etc/fstab
. ( Zauważ, że jest to na pamięci USB, ponieważ dodaliśmy/mnt
. ) Musisz zmienić odpowiednie linie, aby wyglądały tak:Na koniec musimy powiedzieć partycji rozruchowej na karcie SD, aby uruchomiła się z dysku USB. Ale po pierwsze to chyba dobry pomysł, aby zrobić kopię zapasową pliku, który mamy zamiar zmienić teraz, zanim popełnić na uczynienie przełącznik, uruchamiając:
sudo cp /boot/cmdline.txt /boot/cmdline.txt.save
.Uruchom,
sudo nano /boot/cmdline.txt
aby wejść wnano
celu zmiany parametrów rozruchowych na pierwszej partycji karty SD. Zasadniczo musimy zmienić wpis dla partycji root na dysk USB. W samouczku można to wprowadzić (1 linia):Możesz przeczytać, co oznaczają te parametry tutaj .
Teraz zapisz i wyjdź,
nano
a przy następnym restarcie Raspberry Pi powinien uruchomić się z pamięci USB, ale oczywiście karta SD jest nadal wymagana, jak już wspomniałeś.Tak długo, jak dysk USB jest jedynym dyskiem (oprócz karty SD) podczas uruchamiania, powinno to działać. Musisz mieć to trochę dynamiczne i nie widzę innego sposobu na odniesienie się do napędu niż używanie
/dev/diskX
.Edycja: Zapomniałem wspomnieć, że musisz zduplikować dysk USB po zakończeniu lub wykonać te same kroki z innymi instalacjami na innych dyskach. Jeśli wersja Raspian wraz z zainstalowanymi pakietami jest taka sama, nie widzę powodu, dla którego to nie powinno działać.
/boot
Partycja jest dość prosty, a linia wspominałem w 9. jest w zasadzie wszystko, co robi. Musi tylko przekazać go właściwej partycji z odpowiednim systemem plików i powinien działać.Mam nadzieję, że ci to pomogło.
Dla osób niemieckojęzycznych link źródłowy zostawiam tutaj: Źródło .
źródło