Funguje pouze na Turris 1.x
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, …
Se můžete dočíst v oficiální dokumentaci.
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:
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.
Se můžete dočíst v oficiální dokumentaci.
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
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)
Máme dvě možnosti:
ln -s /mnt/disk/lxc-containers/debian1 /srv/lxc/debian1
/etc/lxc/lxc.conf
V mém případě to vypadá následovně:
lxc.lxcpath = /mnt/disk/lxc-containers
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)
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
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.
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í:
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
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