Když jsme se nastěhovali do novostavby, začal jsem studovat a ladit tepelné čerpadlo a vlastně i celkové chování rodinného domu tak, aby život byl co nejkomfortnější a provoz co nejefektivnější nebo co nejvíce úsporný. Zjistil jsem, že běžné statistiky, které poskytuje Loxone mě omezují a to hned v několik aspektech: nelze k uloženým datům přistupovat a dále je zpracovávat, statistiky nelze formátovat a upravovat tak, aby vizuálně reflektovaly moje potřeby – například nelze spojit dvě veličiny do jednoho grafu a v neposlední řadě, častý zápis veličin SD kartě zrovna neprospívá.

Věděl jsem, že bude potřeba statistiky provozovat jinde, tedy mimo systém Loxone. Potřeba vlastního serveru byla tedy akutní. Zvažovaných možností bylo hned několik:

  • Koupit „počítač“, „server“ či využít starý laptop – toto řešení jsem zavrhl z důvodu vysokých pořizovacích a případně i provozních nákladů, i když notebook s kvalitní baterií by byl dobrou volbou do doby, než by na něm něco odešlo
  • Cloud (Azure, AWS) – toto řešení jsem zavrhl, protože se mi nechce platit € za provoz něčeho, co je na hraní a navíc jsem neměl úplně vymyšlené zabezpečení. Zatím chci in house řešení
  • Firemní datové centrum – toto jsem zavrhl ze stejných důvodů, jako Cloud.
  • Raspberry – jasná volba, levné, relativně stabilní zařízení s dostatečným výpočetním výkonem pro provoz zařízení pro sběr statistických dat. Akorát, že je stejně na prd jako Loxone miniserver, důvodem je SD karta. Kdyby odešla, určitě by mě to mrzelo o něco méně než kdyby odešla SD karta v Loxone, ale i tak – proč stavět řešení s vědomím, že to není ono.

Raspberry PI-Desktop

A pak jsem to objevil. Raspberry Pi-Desktop. Platforma je stejná – Raspberry PI 3, ale má k sobě fešnou krabičku a rozšiřující modul pro připojení mSATA disku. Plán je použít 256 GB SSD a vyrobit domácí linuxový server. A tak jsem to objednal. Kompletace je jednoduchá, stačí se podívat na následující obrázky:

Takže Raspberry je zkompletováno a to je tak asi všechno. Ze zkušeností s Raspberry vím, že systém, předinstalovaný na SD kartě musí pryč – kdo kdy viděl na serveru GUI, že? Takže je potřeba nainstalovat čistý Raspbian bez zbytečného balastu. První mé kroky tedy zákonitě vedly ke stažení image „Raspbian Stretch Lite“ a spolu s tím ještě program Etcher, který slouží k přípravě SD karty (vytvoří z image SD kartu ze které se systém nabootuje).

Zápis image na SD kartu

Jak jsem již psal, k tomu, aby bylo možné zapsat image na SD kartu je potřeba správný nástroj.Já používám Etcher, ale lze použít například i Win32 Disk Imager.

Výhodou programu Etcher je, že se jedná o grafický nástroj a je opravdu „MEGA“ jednoduchý a fungujena Mac OS, Linux a samozřejmě Windows. Další výhodu je, že umožňuje zápis na kartu přímo ze ZIP souboru. Stažený image tedy není potřeba rozbalovat.

Jak na zápis obrazu pomocí Etcher:

  1. Stáhnout a nainstalovat
  2. Připojit SD kartu pomocí čtečky karet
  3. Spustit Etcher a na disku najít soubor s Raspbian image (.img nebo .zip), který chcete na SD kartu zapsat
  4. Vyberte správnou SD kartu (na Windows musí mít přiřazeno písmeno jednotky, například D:\, pokud nemá, je třeba přidělit)
  5. Zkontrolovat nastavení a kliknout na Flash. Data se začnou zapisovat a pokud jste neměnili nastavení tak se zapsaný data i ověří

Etcher

Když je hotovo, stačí SD kartu vložit do Raspberry a připojit napájení. Jo a vy, co znáte Rraspberry tak připojení napájení nestačí. Je potřeba to ještě zapnout tlačítkem.

Prvotní konfigurace

Než bude příležitost k nějakým větším akcím, je třeba provést nějakou tu základní konfiguraci.

Hesla

Výchozí login „pi“ a výchozí heslo „raspberry

Root je ve výchozím stavu bez hesla a nelze se jím do systému přihlásit. Co doporučuji je nastavit rootu heslo:

# sudo passwd

SSH

Ve výchozím nastavení je SSH přístup zakázán. Povolit lze ssh dvěma způsoby.

sudo systemctl enable ssh
sudo systemctl start ssh

nebo pomocí příkazu # sudo raspi-config – otevře se okno s nastavením – vybrat Interfacing Options – SSH – Enable Yes – OK – Finish

Když už máte spuštěný raspi-config, doporučuji nastavit správné časové pásmo (Time Zone)

Update a upgrade systému

# sudo apt-get update
# sudo apt-get upgrade

Užitečné nástroje

# sudo apt-get install mc ccze gparted

(1) SSD jako dodatečný prostor pro data (a co systém?)

Takže, nyní je třeba si rozmyslet, co a kde se bude vlastně ukládat. na mSATA SSD disku se budou určitě ukládat veškerá data. Na SD kartě bude uložen systém a bude se z ní bootovat. Tímto rozložením vyřeším problém s četností zápisů na SD kartu, viz popisované obavy z úvodu. Ale nic není tak jednoduché, jak to vypadá.

Ze všeho nejdřív je třeba ověřit, že systém vidí vše, co vidět má, tedy SD kartu a „USB“ mSATA SSD disk.

# sudo lsblk

Měl by být vidět mSATA disk „sda“ a SD karta „mmcblk0“ která má 2 partitions „/boot“ a „/“ což je root z pohledu operačního systému. mSATA disk zatím nemá žádné partitions a proto je vypsán jen na jednom řádku jako disk.

Nejsnažší možná cesta, jak SSD využít, je použít jej jako dodatečný prostor pro data a rozšířit tak především kaapcitu standardního Raspberry Pi a odlehčit zátěži micro-SD karty. Co je pro to potřeba udělat? Vytvořit partition pro data a zformátovat SSD. Existuje řada nástrojů jak CLI tak GUI, které umožňují disk management. Já používám gparted (viz užitečné nástroje nahoře). Není součástí Raspbian distribuce, ale pokud postupujete podle návodu, už jej máte nainstalovaný.

Pokud máte nový mSATA disk, nejprve je potřeba vytvořit partition tabuku (GPT) – není důvod vytvářet archaické msdos tabulky. Následně je potřeba vytvořit partitions dle potřeby, já osobně vytvářím „ext4“ partition.

# sudo parted

ze všeho nejdřív je třeba ověřit, na jakém fyzickém disku momentálěn pracujeme. Při spuštění programu parted je vidět nápis „Using …..“ s popisem zařízení, které je právě vybráno. Mělo by být vybráno „/dev/sda“ pokud tomu tak není, vybereme SSD disk příkazem.

(parted) select /dev/sda

Jestli je váš SSD disk označen jako /dev/sda si potvrdíte příkazem lsblk viz výše.

Pro výpis informací o vybraném disku včetně jeho partitions slouží příkaz

(parted) print

Vytvoření partition pomocí mkpart

(parted) mkpart primary ext4 2048s 20GiB

Vysvětlení: ext4 = filesystem; 2048 je začátek, odkud se partition tvoží a 20GiB je velikost a tedy konec partition

Partition jsme vytvořili, předpokládám, že se jedná o partition číslo1, takže pardition se v systému bude tvářit jako „/dev/sda1“

Partition je potřeba naformátovat. Toto se už dělá mimo program parted.

# mkfs -t ext4 /dev/sda1

A když už ji máme naformátovanou, připojíme si ji k systému, při každém bootu.

#  sudo nano /etc/fstab

a na čtvrtý řádek přidáme tento řetězec:

/dev/sda1 /mnt/data ext4 defaults 0 3

což způsobí, že po každém bootu najdeme obsah partiton 1 na mSAT SSD na místě „/mnt/data“

výsledek bude vypadat nějak takto:

pi@raspberrypi:~ $ cat /media/sda1/etc/fstab
proc /proc proc defaults 0 0
PARTUUID=b7a5d7e4-01 /boot vfat defaults 0 2
PARTUUID=b7a5d7e4-02 / ext4 defaults,noatime 0 1
/dev/sda1 /mnt/data ext4 defaults 0 3
# a swapfile is not a swap partition, no line here
# use dphys-swapfile swap[on|off] for that

(2) SSD jako dodatečný prostor pro data A ROOT file system?

Netřeba malých cílů. SD kartám se prostě nedá věřit. Dobře, dá se jim věřit, do akční kamery a foťáku jsou super, ale do serveru? Proto mě napadlo, že by nebylo špatné uložit na SSD i file systém. Postup je podobný, jako v předchozí čísti návodu, jen s drobným rozšířením. Práci s programem parted již nebudu popisovat a začnu rovnou vytvářením partitions pro root file system (20GiB) a pro data (236GiB):

# sudo parted

(parted) select /dev/sda

(parted) mkpart primary ext4 2048s 20GiB

(parted) mkpart primary ext4 20GiB -1s

Nyní je třeba zkopírovat obsah micro-SD karty do SSD partition 1, která je určena pro operační systém. Prosím dávejte si pozor na názvy zařízení, používám názvy, které jsou v mém systému. Na různých systémech se názvy mohou lišit. Názvy lze ověřit pomocí parted nebo lsblk.

# sudo dd if=/dev/mmcblk0p2 of=/dev/sda1 bs=4M iflag=fullblock oflag=direct status=progress

Kopírování zabere pár minut, což je dostatek času na kafe, ale asi né dostatek času pro pauzu na oběd. Ale záleží na prioritách.

Jakmile příkaz DD doběhne, spustně opět program parted, zvolte SSD a spusťte aligncheck, což je diagnostická zálažitost, která vyšistí veškeré inkonzistence, které mohly vzniknout kopírováním a zároveň rozšíří filesystém tak, aby se mohla využít celá partition (protože jsme vytvořili novou partiton pro root filesystem větší než původní na SD kartě).

(parted) align-check optimal 1

(parted) align-check optimal 2

Jakmile align check doběhne, rebootujte Raspberry. Není to úplně nutný krok, ale zas tolik času to nezabere.

# sudo reboot

Po restartu je třeba udělat ještě pár drobných, ale podstatných změn, které řeknou boot procesu kde leží root filesystem.

Zde pozor. Změny děláte na vlastní riziko a doufám, že zatím na systému neprovozujete žádná data. Pokud by se přeci jen něco stalo, začněte od začátku tím, že pomocí programu Etcher vyrobíte novou SD kartu a nabootujete.

Boot konfigurace je uložena v souboru“/boot/cmdline.txt„, a parametr, který je třeba změnit je „root=PARTUUID=xxxxxx„. Kde na místo xxxxxx doplníte PARTUUID partition, na kterou jste nakopírovali root filesystem pomocí příkazu dd.

# sudo nano /boot/cmdline.txt

Jak UUID zjistit:

# sudo blkid

Použijte hodnotu, která je uvedena u „/dev/sda1„, a ujistěte se, že kopírujete PARTUUID, ne UUID.

Konfigurace umístění filesystému je trochu na hlavu. Myslete na to, že až provedete tyhle změny a rebootujete, živý root file systém se bude nacházet na partitinon 1 na SSD disku, nikoliv na micro-SD kartě, SD karta bude nutná jen pro zajištění samotného bootování. Vězte, že v tomto případě je micro-SD karta potřeba v zařízení, bez karty Raspberry nenaběhne.

A pokud jste si připojili svoji datovou partition (viz výše úprava /etc/fstab), měli byste po rebootu vidět toto:

# sudo lsblk

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 238.5G 0 disk
├─sda1 8:1 0 20G 0 part /
└─sda2 8:2 0 218.5G 0 part /mnt/data
mmcblk0 179:0 0 14.9G 0 disk
├─mmcblk0p1 179:1 0 43.2M 0 part /boot
└─mmcblk0p2 179:2 0 14.9G 0 part

Odkazy

 

 

 

Raspberry PI jako „server pro vizualizaci života chytrého domu“?
Štítky: