X
Další sraz v hospodě bude 22.10. v Líšeňském pivovaru. Kdo máte zájem, přihlašte se prosím na fóru, ať vím kolik míst rezervovat. Díky
Raspberry PI4 nad SSD

Raspberry PI4 nad SSD

How Can We Help?

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 *