Raspberry PI4 nad SSD

Raspberry PI4 nad SSD

Categories
You are here:
< Zpět

Ciel:

RPi4 s root filesystemom na ssd (boot bohuzial zostava na sdkarte, rpi4 zatial nepodporuje usb boot).

Dovod:

Pretoze sdkarty stoja za hovno. Su pomale, neznesu vela zapisov a v rpi tak nejak chcipaju. A hlavne – za cenu industrial SLC sd karty o kapacite 4-8 GB ma clovek 240 GB SSD co je tak 20x rychlejsie a netrpi tolko na zapisy.

Potrebujeme:

  • RPi4
  • sd kartu (4-8 GB staci)
  • usb3 ssd (ja som kupil 240 GB za 1000 Kc)

Postup:

Pomocou balena etcher alebo podobneho toolu zapiseme raspbian buster na sdkartu. V pripade ze instalujeme bez monitora/klavesnice pripojenej k RPi, po dokonceni zapisu kartu znovu pripojime a na boot fat32 particii vytvorime prazdny subor s menom ‘ssh’.

Nabootujeme RPi, prihlasime sa ako pi:raspberry. Kto ide na remote, zisti si z dhcp serveru adresu rpi a pouzije ssh. Kto ide napriamo a nefunguje mu hdmi, skusi hdmi_safe = 1 a hdmi_force_hotplug = 1 v /boot/config.txt (ide to editovat aj na windows, je to fat particia), pripadne sa pohra z rozliseniami. Osobne som chcel pouzit rpi4 ako nahradu mojho htpc, ale zda sa, ze s hdmi ma furu problemov, takze na to kaslem.

Switchneme sa na root-a a nainstalujeme par zakladnych toolov. Ja ako shell multiplexer rad pouzivam byobu (hint: F2 novy shell, alt+sipka vpravo/vlavo prepinanie medzi shellmi, CTRL+A D detach shellu)

sudo -i
apt-get install byobu tree

Odzalohujeme dolezite subory pre pripad ze sa nieco pokazi. V pripade problemu zalohy obnovime kludne aj v pc s windows (boot particia je fat32).

 

cd /boot

cp cmdline.txt cmdline.txt.orig

cp config.txt config.txt.orig

cd /

Pripojime ssd do usb3 portu a overime ci je jeho vyrobca (resp. vyrobca usb->sata redukcie) kokot lempl. Obvykle je.

(ssd sa objavi zvacsa ako /dev/sda, budem teda pracovat s tymto device)

 

dd if=/dev/sda of=/dev/null bs=1M count=100

Pokial to dobehne v rozumne kratkom case (~1 sekunda), tak zopakujeme s count=4096.

Pokial oba prikazy ukazali prenosovu rychlost pre SSD obvyklu (stovky MB/s), mame stastie na SSD. V opacnom pripade pozrieme cez dmesg ci v logu nie su podozrive hlasky, napr. [sda] tag#29 uas_eh_abort_handler 0 uas-tag 9 inflight: CMD OUT. Ak tam su, je potrebne ssd prepnut z uas modu do mass_storage. Pomocou lsusb najdeme ssd a zapiseme si jeho id-cka:

 

lsusb

Bus 002 Device 002: ID 125f:a88a A-DATA Technology Co., Ltd.

Odzalohujeme /boot/cmdline.txt

cp /boot/cmdline.txt /boot/cmdline.txt.orig

A pridame ssd quirks:

echo “usb-storage.quirks=125f:a88a:u $(cat /boot/cmdline.txt)” > /boot/cmdline.txt

reboot

Overime ssd:

dd if=/dev/sda of=/dev/null bs=1M count=100

dd if=/dev/sda of=/dev/null bs=1M count=4000

dmesg

Vytvorime na ssd novu partition table a filesystem(y). 240 GB je velkost mojho ssd.

parted /dev/sda

mklabel gpt

mkpart ext4 1M 240G

quit

Kto by chcel pouzit ext4 len pre rootfs a na zvysok pouzit btrfs, vytvori:

 

parted /dev/sda

mklabel gpt

mkpart ext4 1M 20G

mkpart btrfs 20G 240G

quit

Kto by chcel bootovat rovno z btrfs, da sa cerpat z https://hackmd.io . Dolezite je vytvorit initramdisk s modulom pre btrfs a nezabudnut ze prestane fungovat PARTUID a zacne fungovat UUID.

Vytvorime root filesystem na ssd a prenesieme tam root filesystem z sdkarty:

 

mkfs.ext4 -L ssd_root /dev/sda1

mkdir /mnt/ssd

mount /dev/sda1 /mnt/ssd

rsync -axHW / /mnt/ssd

Upravime fstab na ssd tak aby jeho root ukazoval na spravny disk:

tree /dev/disk

by-partuuid

│   ├── 07565edf-87bc-4f17-b64a-11ba06a84a11 -> ../../sda2

│   ├── 6c586e13-01 -> ../../mmcblk0p1

│   ├── 6c586e13-02 -> ../../mmcblk0p2

│   └── cf9604cf-30cc-4c38-be7f-34de07bd4747 -> ../../sda1

nano /mnt/ssd/etc/fstab

PARTUUID=cf9604cf-30cc-4c38-be7f-34de07bd4747 /               ext4    defaults,noatime  0     1

 

A upravime cmdline aby kernel vedel kde ma root fs:

nano /boot/cmdline.txt

usb-storage.quirks=125f:a88a:u console=serial0,115200 console=tty1 root=PARTUUID=cf9604cf-30cc-4c38-be7f-34de07bd4747 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait

A skusime ci to nabehne:

reboot

 

Pokial ano, overime pomocou mount ci / je /dev/sda1. Pokial ano, mame (skoro) hotovo. Pokial nie, prepiseme cmdline.txt a config.txt na karte zalohami a ideme odznova.

Osobne este upravujem mount /boot, aby sa mountoval readonly. Je to FAT32 a ta nema rada ked je natvrdo unmountnuta (resp. som sa stretol s tym ze niektore verzie ubootu z takto natvrdo unmountnutej particie nenabotovali a clovek mal na stole tehlicku). Mozno si s tym RPi firmware vie poradit, ale skusenosti z inych dosiek ma nutia byt opatrny.

nano /etc/fstab

PARTUUID=XXXYYYZZZ  /boot     vfat    ro,defaults          0       2

reboot

Nezabudnut ze pokial bude treba robit nejake zasahy do /boot, treba ju predtym mountnut ako rw:

mount -o remount,rw /boot

 

A to je vsetko, mame rpi4 co bezi zo ssd (ale bohuzial zatial stale bootuje z sdkarty).

 

V dalsom pokracovani na rpi prehodim vsetok bordel co mam okolo loxone, takze primarne grafanu a zigbee.

Zdroj: https://www.vodnici.net/community/diy-navody-loxone-arduino/raspberry-pi4-nad-ssd/#post-20835

Pomohl Vám náš blog? Chcete nás podpořit? I málo udělá radost 😉
Table of Contents

Leave a Reply

Your email address will not be published. Required fields are marked *