Zprovoznění Raspberry Pi na SSD disku (i usb flash disku)
Po zhruba čtvrt roce začalo moje Raspberry Pi 3 s SD kartou Sandisk Ultra UHS-I vykazovat chyby I/O, což bylo o dost dříve než jsem očekával. Na hlavní vině možná bude (domácí okrajové) používání Raspberry Pi i jako MySQL serveru - to není příliš doporučováno vzhledem k častému zápisu do úložiště. Jako nápravu jsem zvažoval nákup nové SD karty, ale představa obměny každý čtvrt rok se mě opravdu nelíbila. Proto jsem se uchýlil k provozu Raspberry Pi z SSD disku a překvapivě to není vůbec nic složitého...
Měl jsem k dispozici levný rámeček (HDD enclosure) na 2.5" SATA disk z Číny a zakoupil k němu SSD disk Kingston SSDNow UV400 s kapacitou 120GB. Nejvíce jsem se obával, zda originální napájecí zdroj Raspberry toto rozšíření utáhne z interního USB bez přídavného napájení (FYI - SSD má spotřebu tak o 60-80% nižší než klasický HDD). Naštěstí se ukázalo že ano, ovšem na ostatních portech toho už pak moc nezprovozníte - v mém případě nechtěla pak fungovat ani klávesnice...
1.) Nový postup
1.) Provedeme instalaci Raspbianu na SSD disk (sda1=boot, sda2=root) v externím USB rámečku
dd bs=4M if=2019-07-10-raspbian-buster.img of=/dev/sda conv=fsync
2.) Připojíme k Raspberry bez SD karty a necháme nabootovat (ověřeno s Ubuntu Mate)
2.) Starší postup
1.) Provedeme instalaci Raspbianu na SD kartu (sda1=boot, sda2=root)
dd bs=4M if=2019-07-10-raspbian-buster.img of=/dev/sda conv=fsync
2.) Provedeme instalaci Raspbianu na SSD disk (sdb)
dd bs=4M if=2019-07-10-raspbian-buster.img of=/dev/sdb conv=fsync
3.) Nabootujeme z SD karty a necháme SSD disk připojen
4.) Na SSD a SD disku upravíme /boot/cmdline.txt root hodnotu takto:
root=/dev/sda2
5.) A ještě na SSD upravíme /etc/fstab takto:
/dev/sda1 /boot vfat defaults 0 2
/dev/sda2 / ext4 defaults,noatime 0 1
6.) Dále na SSD do souboru /boot/config.txt přidáme
program_usb_boot_timeout=1
7.) Na SD kartu přidat do souboru /boot/config.txt toto:
program_usb_boot_mode=1
8.) Restart
3.) Nejstarší postup
Postup lze shrnout takto - image s Raspbianem obsahuje dva oddíly, jeden hodně malý FAT16, který obsahuje konfigurační soubory a druhý EXT4 se samotným Raspbianem.
Ten první se musí překopírovat na libovolnou SD kartu s oddílem FAT16 - 64MB a upravit v něm soubor cmdline.txt pro bootování (zavádění) systému z SSD disku - stačí přepsat jednu hodnotu takto:
root=/dev/sda2
Ten druhý se bude kopírovat již na SSD disk, který musí mít vytvořen jeden oddíl FAT16 - 16MB a pak libovolně velký pro systém Raspbian, minimálně však 8GB. Po překopírování už zbývá pouze připojit SSD k Raspberry Pi a nabootovat...
Klonování na SSD (/dev/sdf) pomocí příkazu dd z image:
dd if=raspbian-full.img of=/dev/sdf bs=64K conv=noerror,sync status=progress
PS: Uvedený postup by měl fungovat pro jakýkoliv externí USB disk (flash disk, klasický HDD atd.) připojený k Raspberry Pi.