Uživatelské nástroje

Nástroje pro tento web


Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Obě strany předchozí revize Předchozí verze
cs:howto:turris_os_build [2018/06/07 13:33]
kkoci [Vlastní kompilace Turris OS]
cs:howto:turris_os_build [2018/09/05 17:40] (aktuální)
jschlehofer Docker v tuto chvíli není podporovaný.
Řádek 21: Řádek 21:
 Nejlepším způsobem jak zajistit hladký průběh kompilace je použít totožné Nejlepším způsobem jak zajistit hladký průběh kompilace je použít totožné
 prostředí jako v produkci. Nejlépe pak nasazením tohoto prostředí do kontejneru, prostředí jako v produkci. Nejlépe pak nasazením tohoto prostředí do kontejneru,
-což také umožní oddělení hlavního systému od systému pro kompilaci. ​Jsou +což také umožní oddělení hlavního systému od systému pro kompilaci. ​V tuto chvíli je pouze jedna varianta ​jak toto učinit ​to pomocí nástroje Vagrant.
-podporovány dvě varianty ​jak toto učinit, buďto pomocí nástroje Vagrant ​a nebo +
-pomocí Dockeru.+
  
 ==== Vagrant ==== ==== Vagrant ====
Řádek 66: Řádek 64:
 synchronizován s repositářem v hostitelském systému, je v systému dostupný v cestě synchronizován s repositářem v hostitelském systému, je v systému dostupný v cestě
 ''/​openwrt''​. ''/​openwrt''​.
- 
-==== Docker ==== 
- 
-Docker je oproti nástroji Vagrant více rozšířený a tak je možné že již na vašem 
-systému je nainstalovaný a nastavený. Soubory potřebné k vytvoření Docker 
-kontejnerů se nacházejí v naklonovaném repositáři Turris OS v adresáři '​Docker'​. 
-Obsahem jsou dva skripty a to ''​build-all''​ a ''​run''​ a především soubory 
-popisující Docker kontejnery. 
- 
-Prvním krokem je vytvoření kontejnerů. Skript ''​build-all''​ obsahuje pět řádek 
-volajících ''​docker'',​ které postupně vytvoří pět kontejnerů. Jejich jména a 
-význam je následující:​ 
- 
- * //base// - Základní systém obsahující všechny závislosti potřebné pro sestavení Turris OS. Do adresáře '/​home/​build/​openwrt'​ jsou naklonovány zdrojové kódy a to v nejnovější verzi z větvě `test` (větev na které probíhá vývoj). ​ 
- * //​omnia-toolchain//​ - Vyžaduje a vychází z //base//. Je v něm nastavena konfigurace pro Turris Omnia a obsahuje zkompilovaný toolchain. Balíčky ale nejsou zkompilovány. Toto se může hodit pokud je nutné nestavit pouze jeden balíček, nikoli celý systém. 
- * //omnia// - Vyžaduje a vychází z //​omnia-toolchain//​. V tomto kontejneru je sestaven základní systém, systém pro Turris Omnia a kompilace při malé změně by tak měla být rychlá. Ale ani v tomto kontejneru nejsou zkompilovány všechny balíčku (to by vyžadovalo velké množství času). 
- * //​turris-toolchain//​ - Vyžaduje a vychází z //base//. Je v něm nastavena konfigurace pro Turris 1.x a je v něm zkompilovaný toolchain. Balíčky ale nejsou zkompilovány. Toto se může hodit pokud je nutné sestavit pouze jeden balíček, nikoli celý systém. 
- * //turris// - Vyžaduje a vychází z //​turris-toolchain//​. V tomto kontejneru je sestaven základní systém pro Turris 1.x a kompilace při malé změně by tak měla být rychlá. Ale ani v tomto případě nejsou zkompilovány všechny balíčky (to by vyžadovalo velké množství času). 
- 
-Pokud chcete ušetřit čas a místo tak můžete odstranit řádky pro vámi necílenou 
-platformu. Následně spusťte skript ''​build-all''​. Tento proces může trvat i 
-hodiny, záleží na výkonu hardwaru na kterém kompilace běží a na tom které 
-kontejnery vytváříte. ​ 
- 
-Poté co jsou kontejnery vytvořeny, tak je do nich možné přistoupit pomocí skriptu 
-''​run''​. Tento skript jako první argument očekává volitelně jméno kontejneru (tedy 
-např. ​ ''​./​run omnia''​). Pokud není žádný argument předán, tak se pokusí 
-připojit do kontejneru //​omnia-toolchain//​. 
- 
-<WRAP important>​ 
-Pozor, v případě Dockeru, po ukončení kontejneru jsou všechny změny zahozeny, pokud nenastavíte jinak. 
-Také na rozdíl od nástroje Vagrant nepracuje Docker s originálním vámi naklonovaným repositářem. ​ 
-</​WRAP>​ 
- 
-V následujících sekcích rozlišujte který kontejner jste se rozhodli použít. V 
-případě //base// musíte provést celý postup jak je popsán. V případě ostatních 
-Docker kontejnerů není nutné dělat update feedů a nastavení konfigurace,​ můžete se 
-rovnou přesunout na kompilaci. V takovém případě také není doporučeno používat 
-''​compile_fw''​ skript, protože jako první krok provádí čištění repositáře. 
  
 ==== Nastavení prostředí bez kontejnerů ==== ==== Nastavení prostředí bez kontejnerů ====
  
-Pokud na vašem systému nemůžete nebo nechcete používat prostředí Vagrant ​či +Pokud na vašem systému nemůžete nebo nechcete používat prostředí Vagrant je možné nainstalovat závislosti kompilace systému přímo do hostitelského
-Docker, ​je možné nainstalovat závislosti kompilace systému přímo do hostitelského+
 systému. Tyto závislosti lze nalézt v inicializačním skriptu systému. Tyto závislosti lze nalézt v inicializačním skriptu
 ''​vagrant/​vagrant_bootstrap.sh'',​ který se spouští po prvním spuštění prostředí ''​vagrant/​vagrant_bootstrap.sh'',​ který se spouští po prvním spuštění prostředí
Řádek 144: Řádek 102:
 Pokud narazíte na problém při sestavování tak můžete zkusit snížit hodnotu argumentu ''​-j''​ nebo ji nastavit na ''​-j1''​ pro vypnutí paralelního sestavování. Tyto problémy jsou způsobené souběhem balíčků při sestavování a obtížně objevitelnými chybějícími závislostmi. Pokud narazíte na problém při sestavování tak můžete zkusit snížit hodnotu argumentu ''​-j''​ nebo ji nastavit na ''​-j1''​ pro vypnutí paralelního sestavování. Tyto problémy jsou způsobené souběhem balíčků při sestavování a obtížně objevitelnými chybějícími závislostmi.
 </​WRAP>​ </​WRAP>​
-===== Řešení problémů ===== 
- 
-==== Nedostatek místa při vytváření Docker kontejneru ==== 
- 
-Docker kontejnery zabírají řádově desítky gigabajtů. Pokud jejich vytváření 
-selhalo s hláškou o nedostatku místa, tak v prvním kroku je třeba zkontrolovat 
-zdali vám skutečně nedošlo místo a případně ho uvolnit. Pokud, ale místa máte 
-dostatek, pak je nutné upravit konfiguraci Docker daemonu a to pomocí těchto 
-voleb ''​%%--%%storage-opt dm.basesize=40G %%--%%storage-opt dm.loopmetadatasize=10G''​. 
-Výsledná spouštěcí řádka by tak měla vypadat například takto: 
- 
- dockerd -H fd:// --storage-opt dm.basesize=40G --storage-opt dm.loopmetadatasize=10G 
- 
-Po této úpravě je nutné Docker daemon restartovat a odstranit všechny doposud 
-vygenerované soubory tak aby se změna aplikovala. Přesná cesta souborů je dána 
-vaším systémem, ale obecně se užívá ''/​var/​lib/​docker''​. 
-