X
Forum

Forum

Raspberry PI4 nad S...
 
Notifications
Clear all

Raspberry PI4 nad SSD

6 Posts
3 Users
2 Reactions
2,176 Views
msk
 msk
(@dusanmsk)
Member
Joined: 8 years ago
Posts: 1918
Topic starter  

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.


   
budulinek and L reacted
Quote
Topic Tags
 L
(@l)
Famed Member Admin
Joined: 10 years ago
Posts: 3134
 

nechces to hodit do wiki? pokud chces, tak to tak prekopiruju ja


   
ReplyQuote
msk
 msk
(@dusanmsk)
Member
Joined: 8 years ago
Posts: 1918
Topic starter  

Nechcem, varim obed 🙂 Ak mas cas daj to tam pls. 


   
ReplyQuote
 L
(@l)
Famed Member Admin
Joined: 10 years ago
Posts: 3134

   
ReplyQuote
(@budulinek)
Reputable Member
Joined: 8 years ago
Posts: 355
 
Posted by: @dusanmsk

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.

Někdy stačí aktualizovat FW řadiče.

Mám tento řadič

https://www.aliexpress.com/item/4000333423401.html

Hlásí se mi jako JMicron:

Bus 002 Device 002: ID 152d:0578 JMicron Technology Corp. / JMicron USA Technology Corp. JMS567 SATA 6Gb/s bridge

Sice se tváří jako JMS567, ale bude to JMS578 (viz  ID 152d:0578).

Z Ali přišel s FW verze 4.0.7, v logu se mi objevovaly chyby, které popisoval Dušan (i když rychlost byla OK). Po aktualizaci na 4.1.4 vše bez problémů, UAS chyby se v logu už neobjevují. Nástroj pro aktualizaci FW najdete tady:

https://wiki.odroid.com/odroid-xu4/software/jms578_fw_update

Použijte standard firmware (bin-16028_jms578_std_v00.04.01.04_self_power_odd_20190611.zip)


   
ReplyQuote
(@budulinek)
Reputable Member
Joined: 8 years ago
Posts: 355
 

Oprava:

Tak aktualizace FW nestačila. Po čas se chyby UAS začaly znovu objevovat. Pomohly až ty quirks a přepnutí do mass_storage.


   
ReplyQuote
Share: