Důležitá je možnost vzdáleného přístupu, připojení a správy více zařízení prostřednictvím jediného účtu. Pokud jde o krok dále, možnost kompletně aktualizovat zařízení na dálku je dalším způsobem, jak mohou správci systému snížit námahu a minimalizovat bolesti hlavy.
UpdateHub je řešení s otevřeným zdrojovým kódem, které umožňuje provádět kompletní aktualizace zařízení, včetně firmwaru a bootloaderů, na dálku. Jeho cílem je usnadnit provádění aktualizací zařízení a snížit přepracování a rizika, ať už aktualizujete tisíce zařízení nebo spravujete malá nasazení. UpdateHub zpracovává všechny aspekty aktualizací OTA (over-the-air), včetně integrity a autenticity balíčků, zatímco vy se staráte o svou další práci.
Další zdroje pro Linux
- Cheat pro příkazy Linuxu
- Cheat sheet pro pokročilé příkazy systému Linux
- Bezplatný online kurz:Technický přehled RHEL
- Síťový cheat pro Linux
- Cheat sheet SELinux
- Cheat pro běžné příkazy pro Linux
- Co jsou kontejnery systému Linux?
- Naše nejnovější články o Linuxu
Cílem tohoto podrobného průvodce aktualizací UpdateHub je pomoci vám začít s tímto profesionálním nástrojem. Existují dvě možnosti serveru UpdateHub:UpdateHub Cloud a UpdateHub Community Edition (UpdateHub CE), server s plně otevřeným zdrojovým kódem (distribuovaný pod licencí MIT), který využívá tento tutoriál.
Zkontrolujte požadavky
Nejprve se ujistěte, že vaše linuxová distribuce nainstalovala všechny potřebné balíčky pro vytvoření obrazu pomocí projektu Yocto.
Potřebujete také následující hardware:
- Cíl je vývojové zařízení. Tento výukový program používá Raspberry Pi 3 Model B+, ale můžete také použít Raspberry Pi 3, Model B nebo Model B+.
- Hostitel je počítač, na kterém vytvoříte obraz pomocí projektu Yocto. Tento tutoriál používá Yocto 3.1 Dunfell.
Chcete-li spustit UpdateHub CE, musíte mít na hostiteli nainstalovaný Docker. Pokud jej nemáte, přečtěte si pokyny pro orientaci a nastavení Dockeru.
Tento výukový program používá k usnadnění procesu repo nástroj společnosti Google, protože vyžaduje více úložišť. Další informace o repo najdete v průvodci nastavením vývoje Androidu.
V distribucích Debian a Ubuntu nainstalujte repo pomocí:
sudo apt install repo
Pokud používáte jinou distribuci Linuxu, stáhněte si přímo repo a nastavte své distro pomocí:
mkdir ~/bin
curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
PATH=${PATH}:~/bin
Nakonec potřebujete připojení k síti přes DHCP nebo musíte vědět, jak změnit adresu internetového protokolu (IP) nebo vytvořit vrstvu projektu Yocto, která tuto konfiguraci zvládne.
Připravte své prostředí na sestavení
UpdateHub poskytuje úložiště se souborem manifestu používaným nástrojem repo, což usnadňuje správu více vrstev.
Stáhněte si zdrojový kód vytvořením adresáře a načtením potřebných vrstev Yocto Project:
mkdir updatehub-platform
cd updatehub-platform
repo init -u https://github.com/UpdateHub/updatehub-yocto-project-reference-platform.git -b dunfell
repo sync
Po repo sync
příkaz dokončí, uvidíte všechny potřebné vrstvy v sources
adresář.
Platforma UpdateHub poskytuje podporu pro více podporovaných zařízení. Během nastavení prostředí Yocto Project se vás zeptá, zda chcete přijmout licenční smlouvu s koncovým uživatelem (EULA) meta-freescale
vrstva; to není pro tento projekt nutné.
Načtěte prostředí projektu Yocto:
MACHINE="raspberrypi3" source ./setup-environment build
Všimněte si, že tento příkaz je platný pouze pro relaci terminálu, kde jste načetli prostředí. Pokud používáte nový terminál, budete muset prostředí načíst znovu. Nebudete však muset znovu konfigurovat počítač, protože obsah konfigurace je uložen v conf/local.conf
soubor.
Spustit UpdateHub CE
S nainstalovaným Dockerem si stáhněte obraz Dockeru a spusťte server na portu 8080:
docker run -d -p 8080:8080 updatehub/updatehub-ce:latest
Přístup k řídicímu panelu UpdateHub CE prostřednictvím hostitelské IP adresy a portu 8080 (http://IP_ADDRESS:8080
). IP hostitele v příkladu je 192.168.15.50, takže by to bylo http://192.168.15.50:8080
.
Použijte výchozí hodnotu admin
zadejte přihlašovací jméno a heslo a klikněte na Přihlásit .
Musíte nakonfigurovat UPDATEHUB_SERVER_URL
použít adresu UpdateHub CE, protože zařízení potřebuje znát IP adresu serveru. Ve výchozím nastavení meta-updatehub
vrstva používá adresu UpdateHub Cloud v proměnné URL serveru.
Měli byste vidět hlavní rozhraní UpdateHub CE:
Nakonfigurujte prostředí pro generování obrázku
Dalším krokem je vygenerování obrazu Linuxu, který bude zařízení používat. Nejprve však musíte nastavit některé proměnné v conf/local.conf
soubor:
UPDATEHUB_SERVER_URL = "http://IP_ADDRESS:8080"
UPDATEHUB_PACKAGE_VERSION_SUFFIX = "-test-image-1"
ENABLE_UART = "1"
UPDATEHUB_POLLING_INTERVAL = "1m"
Přechod řádek po řádku ve výše uvedeném kódu:
UPDATEHUB_SERVER_URL
obsahuje IP adresu, na které běží UpdateHub CE.UPDATEHUB_PACKAGE_VERSION_SUFFIX
přidává příponu ve verzi obrázku. To je užitečné pro umístění čísla verze a jeho zvýšení pro každý nový obrázek. Tato proměnná budeVERSION_ID
, který se skládá zDISTRO_VERSION
(popsáno v dokumentech) plusUPDATEHUB_PACKAGE_VERSION_SUFFIX
. Můžete si to ověřit v/etc/os-release
soubor v cíli.ENABLE_UART
:Existuje několik způsobů přístupu k cílovému zařízení, například pomocí sériové konzole nebo připojení klávesnice a monitoru. Tato proměnná umožňuje přístup k sériové konzole na Raspberry Pi pomocí sériových portů dostupných v hlavičce GPIO.UPDATEHUB_POLLING_INTERVAL
:Ve výchozím nastavení probíhá komunikace mezi agentem UpdateHub a serverem každých 24 hodin. Pomocí této proměnné můžete nastavit nový čas konzultace v délce 1 minuty.
Tento výukový program používá Minicom ke spojení s cílem; pokud chcete, můžete se dozvědět více o použití sériového připojení v Raspberry Pi.
Vygenerujte obrázek
Nyní, když je prostředí Yocto Project připraveno, zkompilujte obraz pomocí nástroje BitBake pro provádění úloh spuštěním:
bitbake updatehub-image-base
Generování obrazu může chvíli trvat, v závislosti na hostitelském počítači. Pokud je to poprvé, co vytváříte obrázek pro raspberrypi3
v pobočce Dunfell společnosti Yocto stáhne BitBake celý zdrojový kód, takže rychlost stahování ovlivní dobu, kterou zabere vygenerování obrázku.
Jakmile je obrázek zkompilován, přejděte na build/tmp/deploy/images/raspberrypi3/
hostitelský adresář a ověřte soubor s obrázkem, updatehub-image-minimal-raspberrypi3.wic.gz
, je tam.
Vložte SD kartu do Raspberry Pi a zkontrolujte její název spuštěním dmesg
. Poté nahrajte obrázek na SD kartu pomocí následujícího příkazu, ale nezapomeňte změnit /dev/sdX
na název vaší SD karty:
zcat updatehub-image-base-raspberrypi3.wic.gz | sudo dd of=/dev/sdX
Vložte SD kartu se snímkem do cílového zařízení pro připojení k Raspberry Pi. Obraz má síť nakonfigurovanou pro získání IP adresy pomocí DHCP. Ke konzoli přistupujte pomocí uživatelského root
a ponechte heslo prázdné.
Potvrďte verzi obrázku běžícího na cíli pomocí cat /etc/os-release
.
Vygenerujte aktualizační balíček
Vaše zařízení by mělo fungovat a fungovat správně, ale k vytvoření aktualizačního balíčku je třeba přidat funkci. Tím se vytvoří obrázek pro aktualizaci cíle. Následující příklad přidává podporu pro SSH server na cíli a vytváří aktualizační balíček pro instalaci této funkce.
Přidejte podporu pro server OpenSSH přidáním následujícího řádku do build/conf/local.conf
soubor:
IMAGE_FEATURES += "ssh-server-openssh"
Aby bylo jasné, že aktualizovaný obrázek bude mít jinou verzi, vložte příponu -test-image-2
v UPDATEHUB_PACKAGE_VERSION_SUFFIX
proměnná:
UPDATEHUB_PACKAGE_VERSION_SUFFIX = "-test-image-2"
Uložte soubor a spusťte:
bitbake updatehub-image-base -c uhuarchive
Tento příkaz vygeneruje soubor s .uhupkg
extension, formát používaný UpdateHub k aktualizaci systému. Vygenerovaný soubor bude ve stejném adresáři jako obrázky, tmp/deploy/images/raspberrypi3
; v tomto příkladu je to updatehub-image-base-raspberrypi3.uhupkg
.
Zkontrolujte své zařízení
Chcete-li získat přístup k řídicímu panelu UpdateHub CE, klikněte na Zařízení kartu a zjistěte, zda je vaše zařízení uvedeno:
Odeslat aktualizační balíček
Aktualizujte Balíčky řídicího panelu Hub CE karta zobrazuje seznam dostupných balíčků, ale zatím žádné nemáte. Chcete-li přidat balíček, klikněte na Nahrát balíček a vyberte updatehub-image-minimal-raspberrypi3.uhupkg
soubor. V tomto příkladu je v tmp/deploy/images/raspberrypi3/directory
. Zobrazí se obrazovka s podrobnostmi o balíčku. Toto ukazuje proces přidávání aktualizačního balíčku na řídicí panel:
Vytvořte vydání
S rozpoznáním zařízení a odesláním paketu na server můžete vytvořit zavedení, což je v podstatě plán nasazení. Přejděte na Vydání a klikněte na Vytvořit zavedení . Vyberte verzi balíčku, kterou chcete při upgradu použít. Tento příklad obsahuje pouze balíček z předchozího kroku s verzí 20.04-test-image-2
. Vyberte tuto verzi a ujistěte se, že obsahuje seznam zařízení, která budou aktualizována.
Dříve jste konfigurovali bitovou kopii běžící na cíli tak, aby každou minutu prováděla aktualizační dotaz na serveru UpdateHub, takže do jedné minuty od vytvoření zavedení se spustí proces aktualizace. Chcete-li sledovat stav aktualizace, zkontrolujte Vydání kartu.
Po dokončení procesu upgradu se cíl automaticky restartuje. Nový obraz se spustí a automaticky se na serveru zeptá na aktualizace. Server odpoví, že nemá žádné aktualizace a ukončí cyklus aktualizace.
Když se ve stavu zobrazí updated
, spusťte níže uvedený příkaz na hostiteli pro přístup k cíli přes SSH:
ssh root@IP_DO_TARGET
Není vyžadováno žádné heslo; stačí stisknout Enter a budete v cílové konzoli. Verzi si můžete zkontrolovat v /etc/os-release
soubor k potvrzení.
Blahopřejeme! Hotovo!
Nyní máte přístup k profesionálnímu nástroji pro vzdálenou aktualizaci vašich zařízení. V tomto tutoriálu bylo použito Raspberry Pi 3 s Yocto Project verze Dunfell 3.1.2, ale jsou podporována i další zařízení a verze.
Pokud máte nějaké dotazy ohledně integrace vašeho zařízení, obraťte se na tým vývojářů prostřednictvím Gitter nebo e-mailem na [email protected].
Tento článek je založen na UpdateHub:Odesílání aktualizací OTA pomocí projektu Yocto na blogu UpdateHub.