Instalace HomeAssistant na PC bez UEFI

Po pokusech se sítí ZigBee, a zjištění, že některá cizí zařízení do sítě Lidl Home patrně nepřihlásím, jsem začal zjišťovat jiné možnosti. Jako tu možnost, která slibovala největší míru univerzálnosti, jsem vyhodnotil nasazení systému HomeAssistant (HA). Jako hlavní uzel systému HA se typicky používá RapberyPi, je ale možné i použití PC. První pokusy jsem prováděl na virtuálním stroji, a když jsem ověřil funkčnost pro svá zařízení, rozhodl jsem se HA nainstalovat na vyhrazené PC. V instrukcích k instalaci HA jsem se však dočetl, že standardní postup má jako systémový požadavek na PC jeho schopnost bootovat pomocí UEFI. Bohužel jsem si pro HA uvolnil PC, které tuto vlastnost nemá, konkrétně se jedná o DELL Optiplex 755 USFF.

DELL Optiplex 755 USFF a HA

Toto PC jsem asi před dvěma roky vyřadil z provozu u švagra (nahradil jej mladším strojem), kde sice jakš-takš pořád fungoval jako kancelářský stroj, ale přesto, Windows 10 už na něm pracovaly tak nějak na hraně, především z důvodu "nepodpory" grafického ovladače. Jinak by systém pro požadovaný účel (Word, Excel) celkem fungoval, především díky osazenému SSD a 4GB RAM. Co opravdu drhlo, to bylo prohlížení webu, a to zvlášť, pokud byla vyvinuta snaha o přehrání nějakého videa - především v režimu na celou obrazovku.

Po náhradě novým PC mi tento DELL zůstal nevyužitý, takže když jsem přemýšlel, na čem rozchodit HA, vyhodnotil jsem jej jako vhodné řešení. HA totiž nemá nijak velké nároky na výkon PC, takže ho Core2Duo CPU hravě zvládne.

Jedinou překážkou tedy bude, že toto PC nevládne bootováním v systému UEFI - nicméně po chvíli zjišťování jsem na fóru HA našel řešení.

Postup instalace HA na PC bez UEFI

Na začátek uvedu, že s ohledem na to, že v diskusi na fóru HA je uvedeno, že pro instalaci lze použít libovolný Live Linux, jsem se nejdřív pokusil o instalaci pomocí Live Ubuntu. Jenže patrně proto, že je návod z diskuse psaný dle postupu s Debianem, asi v jeho polovině (při snaze o instalaci Grub2) jsem narazil na to, že příkaz terminál odmítá provést (s hlášením že Grub2 je zastaralý...), tak jsem se rozhodl s instalací pomocí Ubuntu skončit. Stáhl jsem si tedy aktuální Live Debian (v12.5.0) a začal s celým postupem znovu.

Ještě doplním, že pro vytvoření bootovací flešky používám nástroj Ventoy, takže mám již ze dřívějška nachystanou flešku, na které mám již Ventoy nainstalovaný, a na tuto flešku pouze do patřičného místa zkopíruji ISO požadovaného OS (v tomto případě Debianu). Ventoy mi pak umožňuje mít na jedné flešce současně několik instalaček (ISO), jako Win11, Win10, Ubuntu, Zorin... záleží jen na dostupném volném místě.

Takže nyní už konečně onen postup:

Samozřejmě předpokládám PC připravené na bootování z připravené flešky. Postupy na přípravu PC (nastavení BIOSu, potřebný HW...) a USB disku vynechávám - postupy považuji za obecně známé či snadno dohledatelné jinde.

Jako první krok je třeba z připraveného USB disku (ale popř. i CD/DVD) spustit Live Debian a v něm spustit terminál. Následující kroky spočívají v postupném zadávání příkazů do okna terminálu.

Přihlášení jako uživatel root

sudo su -


Stažení a instalace Home Assistant (číslo verze - zvýrazněno - doporučuji popř. upravit dle aktuální dostupné)

curl -L https://github.com/home-assistant/operating-system/releases/download/12.1/haos_generic-x86-64-12.1.img.xz |xz -d >/dev/sda

Připojení (mount) sda1

sudo mount /dev/sda1 /mnt

Instalace grub2

sudo apt install grub2

sudo grub-install --compress=xz --root-directory=/mnt /dev/sda --force


Konfigurace souboru grub.cfg (tady poznamenám, že prvním příkazem z následujícího bloku vstupujeme do editace řádků souboru grub.cfg, takže následující tři příkazy mají poněkud jinou odezvu, než příkazy terminálu)

cat <<! | sudo dd of=/mnt/boot/grub/grub.cfg

set root=(hd0,gpt1)

configfile (hd0,gpt1)/efi/boot/grub.cfg

!

Odpojení (unmount) sda1

sudo umount /dev/sda1
exit

Nyní již stačí uzavřít terminál, vypnout PC, vyjmout boot flešku s Live Debianem a znovu zapnout PC. Pokud vše proběhlo jak se patří, měl by naběhnout HomeAssistant.

Oprava HA (nefunkční aktualizace)

Po provedení instalace na PC bez UEFI bohužel není funkční aktualizace systému. Abychom to opravili, je třeba provést editaci souboru grub.cfg. Já jsem to provedl z příkazové řádky HA pomocí editoru VI:

do příkazové řádky se dostaneme po zadání příkazu

login

editaci souboru spustíme příkazem

vi /mnt/boot/EFI/BOOT/grub.cfg

soubor se otevře, ale editace není aktivní, je třeba zadat příkaz "i" a potvrdit entrem (nyní je již editace aktivní, takže pozor, ať přepíšeme jen to, co je žádoucí)

provedeme editaci řádku, který v originále obsahuje:

load_env

na:

load_env --file (hd0,gpt1)/efi/boot/grubenv


dále provedeme editaci řádku, který v originále obsahuje:

save_env A_TRY A_OK B_TRY B_OK ORDER MACHINE_ID


na:

save_env --file (hd0,gpt1)/efi/boot/grubenv A_TRY A_OK B_TRY B_OK ORDER MACHINE_ID


opustíme editaci textu stisknutím klávesy "Esc"

uložíme soubor příkazem "ZZ" a potvrzením entrem (tím se současně vrátíme do příkazové řádky HA)

příkazovou řádku opustíme příkazem "exit"

Nyní je vhodné provést vypnutí HA (patrně by stačil restart, ale když jsem jej přes prohlížeč prováděl, změny se neprovedly, a vrátil se mi i grub.cfg do původního stavu; možná se ale spouštění přeplo do druhého slotu - HA používá pro start slot A či B, ze záložního startuje, pokud je start z hlavního neúspěšný).

Vypnutí HA

Korektní vypnutí systému se provádí následujícími příkazy:

Nejdříve odstavíme jádro HA:

core stop


...a teprve poté provedeme odstavení OS a celého PC:

host shutdown


Po provedení všech těchto operací (tj. instalace, úpravy grub.cfg, vypnutí a novém startu PC s HA) se mi HA konečně úspěšně zaktualizoval. Je ale možné, protože jsem to tak trochu prováděl nadvakrát, že může být třeba úpravu provést pro oba sloty HA, ze kterých systém startuje. Tento mechanismus přesně nechápu (tzn. jestli grub.cfg je jeden pro oba sloty), tak se na mě prosím nezlobte, pokud je to kravina.

Odkazy

Jak korektně vypnout HA (eng)
Instalace HA na x86-64 (eng)
Diskuse: Instalace HA na PC bez UEFI (eng)