Raspberry PI + USB HDD = maitinimo bėdos

Jau antrą kartą šiais metais ir nežinia kelintą kartą per visą avietės naudojimo istoriją griūna SD kortelė. Tiesa pati pirmoji naudota, kuri, jei nemaišau buvo 2GB microSD įdėta į perėjimą, veikė pakankamai patikimai kol nebuvau priverstas pakeisti į kažką talpesnio.

Toliau sekė bent keleta 4GB kortelių, vieną iš jų (paskutinioji) buvo Kingston gamintojo.

Taigi nusipirkau vos ne pirmą pasitaikiusią, pigiausia (~11€) USB dėžutę 2.5″ SATA diskui, susikuriu boot ir root particijas (taip kaip nurodyta daryti šviežiai diegiant Archlinux’ą į avietę). Ištraukiu SD kortelę, pajungiu HDD ir… diskas nesisuka, pasirodo per silpnas maitinimas. Maitinimas HP 1A pakrovėjas. Greitai pasikuičiu stalčiuje ir randu HTC pakrovėją. Ant jo taip pat rašo 1A.

Prie HTC pakrovėjo jungiu USB dėžutės vieną iš USB (dėžutė turi dvi USB jungtis, kad būtų galima iškarto pajungti į dvi USB jungtis, tam, kad diskui užtektu srovės iš USB jungčių). Kitą jungiu į avietės USB. Pačią aveitę užmaitinu nuo HP pakrovėjo.

Viskas startuoja, bet pala… OS nesikrauna. Greitas pagooglinimas ir paaiškėja, kad kompiuteris moka startuoti tik iš SD kortelės. Taigi SD kortelė grįžta į savo vietą, bet prieš tai atsidarau boot particijoje esančią bylą /boot/cmdline.txt ir joje paredaguoju root reikšmę. Rezultate turiu tokią eilutę:

[dinux@alarmpi ~]$ cat /boot/cmdline.txt
root=/dev/sda2 rw rootwait console=ttyAMA0,115200 console=tty1 selinux=0 plymouth.enable=0 smsc95xx.turbo_mode=N dwc_otg.lpm_enable=0 kgdboc=ttyAMA0,115200 elevator=noop init=/usr/bin/init

Vėl jungiu. Viskas veikia, OS kraunasi. Krovimasis žymiai spartesnis nei iš SD kortelės.

Džiaugiuosi situacija gal vieną dieną.. avietė pakimba, na gal kas nutiko…, perkraunu, dar po dienos ar dviejų vėl kabo. Patikrinu log’us, matau:

usb 1-1.3: device descriptor read/64, error -71

Googlinu. Kažko labai naudingo nerandu. Nusprendžiu, kad gal tai dėl maitinimo trūkumo. Sukeičiu pakrovėjus. Dabar HP maitina diską, HTC kompiuterį. Panašu, kad bėda dingo. Bet mintis, kad viskas veikia “ant ribos” ir nelabai tvarkingai (du pakrovėjai) neduoda ramybės.

Ieškau pas kinus galingesnio maitinimo, galvoju gal vis dėlto pajungti taip vadinama industrinį 5V maitinimą, bet paskui netyčia aptinku 3.1A USB pakrovėją su dviem jungtim. Nuotraukoje parodytos dvi USB jungtis, prie vienos parašyta 2.1A prie kitos 1A. Realybėj nusipirkus šį pakrovėją šių užrašų nėra.

HDD jungiu į tą USB kur puslapyje parašyta 2.1A, avietę prie 1A.

Dabar jau sistema veikia kažkiek laiko ir galima teigti, kad viskas tikrai gerai, jokių lūžimų, jokių klaidų loguose.

RaspberryPi ir laikrodis

Raspberry Pi (visi modeliai) neturi RTC laikrodžio, t.y. perkrovus, išjungus-įjungus laikrodis nusimuš. Problemą galima spręsti su papildomu RTC priedu jungiamu prie GPIO, bet jei kompiuteris, kaip pas mane, visada pajungtas prie interneto šią bėdą labai greitai ir lengvai galima išspręsti.

Viskas galioja ir bet kokiam kitam nešiojamam/staliniam kompiuteriui su Archlinux distribucija.

Pirmiausia įjungiam sinchronizaciją su NTP serveriu:

sudo timedatectl set-ntp true

Nustatome teisinga laiko juostą. Lietuvos atveju:

sudo timedatectl set-timezone Europe/Vilnius

Jei vis dėlto gyvenat (naudojat) ne lietuvišką laiko juostą, juostų sąrašą galima išsikviesti:

sudo timedatectl list-timezones

Taigi po šių veiksmų jau turime tvarkinga laikrodį, kuris po persikrovimo susisinchronizuos ir “avietė” gyvens tuo pačiu laiku kaip ir jūs.

[dinux@alarmpi ~]$ sudo timedatectl status
      Local time: Pn 2015-12-11 20:20:11 EET
  Universal time: Pn 2015-12-11 18:20:11 UTC
        RTC time: n/a
       Time zone: Europe/Vilnius (EET, +0200)
 Network time on: yes
NTP synchronized: yes
 RTC in local TZ: no

Viskas atrodo smagiai veikia, bet žiūrint temperatūros namuose grafiką (Apie tai rašiau čia: Protingas namas. 1 Dalis. Temperatūra. tik naujiena tokia, kad dabar viskas saugoma mariaDB (mySQL) bazėje) visos temperatūros vėluoja dviem valandomis. Laikas bazėje atsiranda rašant į lauką CURRENT_TIMESTAMP pagalba.

MariaDB (mySQL) serverio laiko juosta galima pamatyti SQL komanda:

SELECT @@global.time_zone;

Mano atveju rezultatas buvo SYSTEM. Iš aukščiau esančio statuso matosi, kad kompiuterio laikas šiai dienai (žiemos laikas) atsilieka dviem valandomis (UTC laiko juosta).

DB serverio laiką galima nustatyti SQL komanda:

SET GLOBAL time_zone = 'Europe/Vilnius';

Bet štai staigmena:

Unknown or incorrect time zone

Pasirodo mysql bazėje nėra įkeltų laiko juostų duomenų. Windows OS vartotojai turėtu iš serverio puslapyje pasiieškoti SQL bylos laiko juostom susiimportuoti, bet pastaroji netinka Linux, BSD ir panašioms operacinėms. Linux operacinėje visas laiko juostas iš sistemos į DB reikia kopijuoti mysql_tzinfo_to_sql programos pagalba.

mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -uroot -p mysql

Jūsų bus paprašytas DB serverio administratoriaus slaptažodis. Po visko dar kartą bandom nustatyti laiko juostą:

SET GLOBAL time_zone = 'Europe/Vilnius';

Komanda suveikė sėkmingai. Dabar visi laikai stojo į savo vietas. Jau visi padaryti bazės įrašai pasislinko dvejomis valandomis į priekį ir prisivijo dabartinį laiką.

By continuing to use the site, you agree to the use of cookies. more information

The cookie settings on this website are set to "allow cookies" to give you the best browsing experience possible. If you continue to use this website without changing your cookie settings or you click "Accept" below then you are consenting to this.

Close