Pora na zmianę głównego miejsca systemu Raspberry Pi. Wiele dobrego mogę powiedzieć o Raspberry Pi, ale na pewno nie to, że używanie kart pamięci (szczególnie przy wielu zapisach do loga, bazy danych, itp.) pozwala na bezstresową pracę. Ostatnio odzyskiwałem backup karty praktycznie co tydzień.
Jakoś tak się stało, że leżał mi mały dysk talerzowy 80GB ze starej PS3. Gdzieś, kiedyś w promocji kupiłem również aktywny hub USB. Niestety, napięcie na portach USB z Raspberry (nie chciałem modyfikować zmiennej max_usb_current) niby zasilało dysk, ale bardzo niestabilnie. Podłączyłem dysk do huba, hub do USB, podpiąłem zasilanie, ruszyło. Pierwszy sukces.
Na początku warto sprawdzić jak nasz dysk przestawia się w systemie, żeby przez przypadek nie sformatować czego, czego zdecydowanie nie chcemy 😉
sudo fdisk -l
Ok, jak widać mój dysk 80GB znalazł się pod /dev/sdb/. Pod /sda/ jest pendrive na którego zapisywane są backupy i leży część danych, na przykład z bajkami dla dzieci. Tak w sumie to warto będzie to niedługo przenieść na dysk, a backupy wypchnąć albo na FTP, albo w chmurę. Może kiedyś…
Skoro wiemy jaki dysk mamy sformatować, bierzemy się do pracy.
sudo fdisk /dev/sdb
I teraz po kolei komendy (po każdej literze Enter):
d – wyczyść dysk
n – new
p – utwórz domyślną partycję
1 – podaj numer partycji
w – zapisz zmiany
Po kolei (dinozaury może jeszcze pamiętają to wszystko ze starych komputerów, kiedy jeszcze nie było Windows i dyski trzeba było formatować z linii poleceń 😀 ):
1. Wymazaliśmy partycje z dysku, jeżeli jakieś były
2. Utworzyliśmy partycję domyślną
3. Podaliśmy dane domyślne – dla uproszczenia, oczywiście partycji można zrobić więcej, zmienić ich rozmiar…
4. Zapisaliśmy zmiany
Pora sformatować dysk.
sudo mkfs.ext4 /dev/sdb
Póżniej musimy dysk sparować z Raspberry Pi:
sudo mount /dev/sdb /mnt
I teraz sedno, synchronizacja naszej karty SD z dyskiem. rsync zachowuje wszystkie uprawnienia, restrykcje, itp.
sudo rsync -axv / /mnt
Kilka minut i mamy kopię karty na dysku.
Wypadałoby również powiadomić Raspberry Pi, że karta SD jest potrzebna tylko i wyłącznie do 'bootowania’, cały system jest już na dysku twardym.
To ważna różnica! Raspberry Pi 3 ma opcję jednorazowego przeprogramowania bitu OTP, aby bootowanie odbywało się bez użycia karty SD, ale osobiście się na to jeszcze nie zdecydowałem – po kilku tygodniach testów możliwe, że tak zrobię. Obciążenie karty SD jest jednak teraz minimalne i znacznie zwiększa bezawaryjność systemu.
Najpierw kopia
sudo cp /boot/cmdline.txt /boot/cmdline.txt.bak
I zmieniamy plik cmdline.txt
sudo nano /boot/cmdline.txt
Zmieniamy wartość przy root i dodajemy na końcu rootdelay
root=/dev/sdb i na końcu rootdelay=5
Efekt:
dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=/dev/sdb rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait rootdelay=5
sudo nano /mnt/etc/fstab
Zamieniamy wpis przy karcie SD na nasz HDD, stary komentujemy:
/dev/sdb / ext4 defaults,noatime 0 1