====== Linux Embedded Development Environment ======
* https://lede-project.org/
* LEDE používá [[https://en.wikipedia.org/wiki/UBIFS|ubifs]], OpenWRT ještě starší jffs2
* LEDE používá aktuální kernel 4.4, OpenWRT 3.3
===== Postup sestavení =====
* stažení zdrojáků
git clone https://git.lede-project.org/source.git
* stažení dostupných balíčků
scripts/feeds update
* volání update stáhne nejnovější verze balíčků.
* je dobré si zapsat konkrétní git verze, aby šlo prostředí znovu sestavit,
for i in .git/refs/heads/* feeds/*/.git/refs/heads/*; do echo -e -n "$i:\t"; cat $i; done
* přidání požadovaných balíčků do menuconfig (je tam velká flash, můžeme si dovolit)
* tento krok lze pro základní image přeskočit
scripts/feeds install ...
* konfigurace
* ''make menuconfig''
* výběr plaftormy
* podle cílového zařízení se vybírá Target System, Subtarget, Profile
* lze využít [[https://lede-project.org/toh/start|LEDE Table of Hardware]]
* výběr formátu image
* ramdisk je potřeba pro boot po síti
* squashfs je ideální pro zápis do NAND
* výběr požadovaných balíčků
* sestavení
* ''make'', případně ''make -j4'' pro rychlejší kompilaci na více jádrech
* výsledné soubory jsou ve složce //bin/targets////
* při zavolání ''make'' se postupně volají následující cíle
make[1] world
make[2] target/compile
make[2] diffconfig
make[2] package/cleanup
make[2] package/compile
make[2] package/install
make[3] package/preconfig
make[2] target/install
make[2] package/index
make[2] checksum
==== Překompilování balíčku ====
* pokud potřebujeme znovu sestavit jeden balíček, stačí provést
make package/feeds/telephony/asterisk-11.x/compile // alternativně make package/asterisk-11.x/compile
make package/install
make package/index
===== Uživatelský feed =====
* pokud chceme přidat nějaký vlastní balíček, lze jej nakopírovat do nějakého feedu
* lepší je ale založit nový feed, aby fungovalo všechno standardní cestou
* do souboru feeds.conf.default přidat
src-link custompkgs /home/djbuldog/Projekty/embedded/custompkgs
* feed se vytvoří po zavolání ''scripts/feeds update custompkgs''
===== Uživatelské soubory =====
* někdy chceme modifikovat soubory přímo v img. Například nastavit jinou IP adresu, SSH klíče, ...
* máme několik možností
- /files [[https://wiki.openwrt.org/doc/howto/obtain.firmware.generate#files_variable|1]]
* vytvořím složku files v build top adresáři
* všechny soubory a podadresáře se přidají do img při ''make''
* složka může být vytvořena i jinde a předána proměnou ''FILES=mojefiles/'' při volání ''make''
- úprava souborů v balíčcích
* implicitní konfigurační soubory jsou buď v
* base-files balíčku,
* defconfig profilu zařízení
* nebo v individuálních balíčcích
* například ''/etc/config/network'' je v ''/package/base-files/files/etc/config'' a pro mnoho zařízení také v profilu zařízení, které přepisuje base-files balíček. Například ''/target/linux/ar71xx/base-files/etc/defconfig/wndr3700/network''
- modifikace rootfs těsně před vytvořením img
* cesta je napříkald ''build_dir/target-mips_r2_uClibc-0.9.33.2/root-ar71xx/etc/config/network''
* rebuild img spustíme přes ''make target/install''