Uživatelské nástroje

Nástroje pro tento web

Tato dokumentace již není udržována týmem projektu Turris (přestože ji lze i nadále používat pro sdílení komunitního obsahu). Aktuální oficiální dokumentace se nachází na docs.turris.cz.

Funguje pouze na Turris 1.x

LXC kontejnery

Interní NAND paměť Turrisu nelze použít už jen vzhledem ke kapacitě, dále proto, že po opotřebení nejde vyměnit.

Je nutné použít vhodné uložiště pro kontejnery jako je např. SSD/HDD, případně USB flash.
Když není jiného zbytí, lze použít buď SD kartu (v nativním slotu pod pamětí, či v USB)
U flash disku, nebo SD karty je nutné počítat s možným brzkým opotřebením a pomalou odezvou.

Kontejnery nelze nainstalovat na uložiště ve formátu FAT. Je nutné použít například: btrfs, ext4, …

Důvody pro použití kontejnerů

Se můžete dočíst v oficiální dokumentaci.

Co bude potřeba udělat

Vzhledem k architektuře procesoru v Turrisu (1.0 a 1.1) je bohužel výběr linuxových distribucí poměrně dost omezený a to na:

  • OpenWRT,
  • Turris OS,
  • a Debian PowerPCSPE, který je poměrně experimentální.

Jak OpenWRT, tak Turris OS v kontejneru mají jistě svá využití, nicméně nejzajímavější je poslední možnost, která je rozebrána dále.

Instalace

Se můžete dočíst v oficiální dokumentaci.

Instalace Debian PowerPCSPEPort

Prvně je nutné nainstalovat tzv. debootstrap, nástroj který nainstaluje Debian do podadresáře již nainstalovaného systému. Vhodné úložiště předpokládáme, že je připojené v /mnt/disk, pokud úložiště máte připojené např. v /srv/disk, tak je nutné v dalších krocích upravit cestu.

opkg update && opkg install debootstrap

Vytvoříme složku do které nainstalujeme náš nový kontejner.

mkdir -p /mnt/disk/lxc-containers/debian1 && cd /mnt/disk/lxc-containers/debian1

Vytvoříme rootfs pro kontejner

debootstrap --include=debian-ports-archive-keyring --arch=powerpcspe sid rootfs https://deb.debian.org/debian-ports/

Nastavíme správný repositář pro balíčky:

echo "deb https://deb.debian.org/debian-ports sid main" | cat >> ./rootfs/etc/apt/sources.list

Vytvoříme konfigurační soubor pro kontejner a upravíme náležitě adresy, cesty, atp. pomocí příkazu

touch config

případně je potřeba stáhnout soubor, který je níže a umístit ho do /mnt/disk/lxc-containers/debian1/, případně můžeš použít textový editor VIM

vim ./config
config
lxc.utsname = debian1
lxc.rootfs = /mnt/disk/lxc-containers/debian1/rootfs
lxc.mount.entry=proc /proc proc nodev,noexec,nosuid 0 0
lxc.mount.entry=tmpfs /dev/shm tmpfs  defaults 0 0
lxc.pts=1024
 
# networking
lxc.network.type = veth
lxc.network.flags = up
lxc.network.link = br-lan
lxc.network.hwaddr = 00:11:22:33:44:55
lxc.network.ipv4 = 192.168.1.10/24
lxc.network.ipv4.gateway = 192.168.1.1

Nastavíme DNS server pro kontejner

vim ./rootfs/etc/resolv.conf

a upravíme adresu 127.0.0.1 na IP Turrise (výchozí 192.168.1.1)

Pokud chceme, aby byl kontejner dostupný i v administračním rozhraní LuCI, odkud se dá také ovládat

Máme dvě možnosti:

  • vytvoříme symlink
ln -s /mnt/disk/lxc-containers/debian1 /srv/lxc/debian1
  • Upravíme cestu lxc.lxcpath v souboru /etc/lxc/lxc.conf

V mém případě to vypadá následovně:

lxc.lxcpath = /mnt/disk/lxc-containers

Ruční spuštění kontejneru

Kontejner spustíme a připojíme se k jeho konzoli:

lxc-start -n debian1
lxc-attach -n debian1

… a máme hotovo.

Nyní můžeme využívat všechny dostupné Debianí balíky, které jsou dostupné. (bohužel veliké množství balíků není k dispozici, ale je to dostatečné například k nainstalování aplikace Home Assistant pomocí pip3)

Automatické spuštění kontejnerů

V souboru /etc/config/lxc-auto jen nastavíme jméno našeho kontejneru.

Podle: https://www.turris.cz/doc/cs/howto/lxc#spousteni_kontejneru_pri_startu

… a nyní to je vše :-)

Poznámky

Je možné provést debootstrap na PC a poté rootfs zkopírovat na Turris, což může být rychlejší. Zde se pracuje pouze na Turrisu kvůli jednoduchosti.

Je možné na úložišti používat btrfs, což lze využít k tomu, že jednou vytvořený kontejner může sloužit jako základ pro další, které se vytvoří instantně a šetří to místo.

Známé chyby

APT

Chyby:

E: could not load seccomp policy: Invalid argument - HttpMethod::Configuration (22: Invalid argument)
E: could not load seccomp policy: Invalid argument - HttpMethod::Configuration (22: Invalid argument)
Reading package lists... Done
E: Method http has died unexpectedly!
E: Sub-process http returned an error code (100)

Řešení:

  • Downgrade z novější verze 1.6-alpha1 na starší, ale avšak funkční verzi 1.5-beta1 a pozdržet aktualizaci balíků apt a apt-utils.
wget https://storage.bloodkings.eu/repository/debian/powerpcspe/apt_1.5~beta1_powerpcspe.deb
wget https://storage.bloodkings.eu/repository/debian/powerpcspe/apt-utils_1.5~beta1_powerpcspe.deb
dpkg -i apt_1.5~beta1_powerpcspe.deb
dpkg -i apt-utils_1.5~beta1_powerpcspe.deb
echo 'apt hold' | dpkg --set-selections
echo 'apt-utils hold' | dpkg --set-selections
  • Počkat na novou verzi APT

Repozitář změnil hodnotu

E: Repository 'http://cdn-fastly.deb.debian.org/debian sid InRelease' changed its 'Origin' value from 'Debian Ports' to 'Debian'
E: Repository 'http://cdn-fastly.deb.debian.org/debian sid InRelease' changed its 'Label' value from 'ftp.ports.debian.org' to 'Debian'
N: Repository 'http://cdn-fastly.deb.debian.org/debian sid InRelease' changed its 'Version' value from '1.0' to ''
N: This must be accepted explicitly before updates for this repository can be applied. See apt-secure(8) manpage for details.

Řešení:

Spustit

apt update

potvrdit to pomocí klávesy y a ENTER.

a je ještě nutné změnit servery v /etc/apt/sources.list na

deb http://ftp.ports.debian.org/debian-ports/ unstable main
deb http://ftp.ports.debian.org/debian-ports/ unreleased main
deb http://ftp.ports.debian.org/debian-ports/ experimental main

Autorem článku je: René Kliment

Zdroje