====== Instalace HomeRouterIII ======
* kompletni postup, jak jsem instaloval HomeRouterIII podle HomeRouterII
* cilem bylo postup zdokumentovat (spojit vsechny poznamky), aktualizovat router ([[rspro|Router Station Pro]]) na novejsi verze programu a pokusit zprovoznit oba DVB-T tunery (jeden se kousal, jeden se neinicializoval)
* zalozeno na stabilnim OpenWRT Attitude_Adjustment
* [[svn://svn.openwrt.org/openwrt/branches/attitude_adjustment]], svn revize 36547
* [[svn://svn.openwrt.org/openwrt/branches/packages_12.09]], svn revize 36547
* [[http://svn.luci.subsignal.org/luci/tags/0.11.1/contrib/package]], svn revize 9813
* [[http://x-wrt.googlecode.com/svn/trunk/package]], svn revize 4987
===== Zakladni image =====
* stazeni zakladnich zdrojaku a aktualizace sablon balicku
svn co svn://svn.openwrt.org/openwrt/branches/attitude_adjustment
cd attitude_adjustment
scripts/feeds update
* pridani pozadovnych balicku do menuconfig (prehlednejsi nez tam narvat vsechny pomoci parametru -a)
* seznam balicku jsem vygeneroval pomoci vypisu balicku v HomeRouterII prikazem:
scripts/feeds install `ssh gate opkg list_installed | cut -d " " -f 1 | tr "\n" " "`
''aiccu aircrack-ng base-files block-extroot block-hotplug block-mount busybox crda dnsmasq dropbear dsniff e2fsprogs ettercap firewall fprobe getstream-poempel hotplug2 iftop ip ip6tables iperf iptables iptables-mod-conntrack iptables-mod-nat iw kernel kismet-server kmod-button-hotplug kmod-cfg80211 kmod-crc-ccitt kmod-crc-itu-t kmod-crc7 kmod-crypto-aes kmod-crypto-arc4 kmod-crypto-core kmod-crypto-sha1 kmod-dvb-core kmod-dvb-siano-usb kmod-dvb-usb kmod-dvb-usb-af9015 kmod-fs-ext3 kmod-fs-vfat kmod-gre kmod-i2c-core kmod-input-core kmod-input-gpio-buttons kmod-input-polldev kmod-ip6tables kmod-ipt-conntrack kmod-ipt-core kmod-ipt-nat kmod-ipt-nathelper kmod-iptunnel4 kmod-ipv6 kmod-leds-gpio kmod-mac80211 kmod-madwifi kmod-mppe kmod-nls-base kmod-nls-cp437 kmod-nls-iso8859-1 kmod-ppp kmod-scsi-core kmod-sit kmod-spi-gpio-old kmod-tun kmod-usb-core kmod-usb-ohci kmod-usb-printer kmod-usb-serial kmod-usb-storage kmod-usb2 libblkid libc libcharset libdnet libevent libexpat libext2fs libffi libgcc libgdbm libiconv libiptc libltdl libncurses libnet0 libnet1 libnids libnl-tiny libopenssl libpcap libpcre libpthread librt libsqlite3 libuci libuuid libxtables lighttpd lighttpd-mod-access lighttpd-mod-alias lighttpd-mod-auth lighttpd-mod-cgi lighttpd-mod-fastcgi lighttpd-mod-redirect lighttpd-mod-simple-vhost n2n nmap nprobe ntpclient opkg php5 php5-cgi php5-fastcgi php5-mod-openssl php5-mod-session php5-mod-xml ppp pptp python python-expat python-mini python-sqlite3 radvd swconfig tcpdump tvheadend uci uclibcxx udevtrigger wireless-tools wget wol wpad-mini zlib''
* vyber balicku pres ''make menuconfig''
* do image jsem dal naproste minimum (aby fungoval [[openwrt_extroot|extroot]] a aby sel router v nouzi i trochu pouzit), zbytek je formou balicku. Image bude ve flash routeru, ostatni balicky budou na SD karte pomoci [[openwrt_extroot|extroot]].
* do image jsem pridal nasledujici balicky:
''kmod-usb-storage libc opkg kmod-usb-core libpthread ubus busybox kmod-lib-crc-ccitt kmod-ipt-conntrack kmod-lib-crc16 base-files libcom_err netifd kmod-usb-ohci libblkid ubusd block-mount kmod-usb2 libuci libip4tc uci kmod-fs-ext4 dropbear kmod-crypto-aes kmod-crypto-core libgcc libuuid libubox libjson kmod-usb-serial swap-utils libblobmsg-json iptables hotplug2 kmod-ipt-nathelper jshn kmod-ipt-core e2fsprogs libubus libxtables libext2fs kernel libnl-tiny blkid kmod-nls-base''
* nasledne klasicky kompilace pomoci ''make''
==== Modifikace rootfs ====
* po kompilaci jsem jeste musel upravit fstab (''build_dir/target-mips_r2_uClibc-0.9.33.2/root-ar71xx/etc/config/fstab''), aby obsahoval extroot na SD karte:
config mount
option target /
option device /dev/sda1
option fstype ext4
option options rw
option enabled 1
option enabled_fsck 0
**TIP:** bacha - u SD karty nesmi byt options sync, jinak je ukladani na kartu pekelne pomale!!
* krome fstab jsem take pridal ''authorized_keys'', ''passwd'', ''system'', ''timeserver'', ..
* ''/etc/dropbear/authorized_keys'' musí být ''chmod 600''
* ''/etc/dropbear/'' musí být ''chmod 0700''
* klíč doporučuji RSA, u DSA je nejspíš povolena jen délka 1024
* při změně výběru balíčků a překompilování se rootfs složka přepíše, proto je vhodné modifikované soubory zálohovat bokem. Vykopíroval jsem je do samostatné složky s názvem ''modifikace_dev_rootfs''
* úpravy cílového rootfs se do image promítnou pomoci ''make target/install''
==== Nahrání do zařízení ====
* nahrani image do routeru
* do upload rezimu (reboot, drzet tlacitko reset dokud nezacne odpovidat na ping na 192.168.1.20)
* pouzil jsem image s r/w souborovym systemem jffs2 (squashfs fungoval taky, ale nejak neukladal zmeny konfigurace na rootfsdata jffs2)
tftp 192.168.1.20
binary
trace
put openwrt-ar71xx-generic-ubnt-rspro-jffs-factory.bin
* image se nahral za cca 1.6s, pak probehl automaticky restart, po restartu zacal router odpovidat na 192.168.1.1 (na teto IP router nabehne po vytazeni SD karty)
===== Příprava SD karty =====
* kartu jsem pripravoval primo v routeru, zastrcil jsem ji tam az kdyz byl nastartovany
* kartu to detekovalo az tak po 30s po vlozeni
* na karte jsem vytvoril ext4 filesystem a zkopiroval cely rootfs image
* UPDATE: prý je lepší používat F2FS
mkfs.ext4 /dev/sda1
mkdir /tmp/newroot
mkdir /tmp/currroot
mount --bind / /tmp/currroot
mount /dev/sda1 /tmp/newroot/
tar -C /tmp/currroot -cvf - . | tar -C /tmp/newroot -xvf -
sync
* upravil jsem banner, abych rozlisil system z image a SD karty
echo "This OS is runned from extroot" >> /tmp/newroot/etc/banner
* na kartě jsem postupně vytvořil konfiguraci celého systému
* přidal pomocné skripty do /bin: set_radio, aircrack_gen, sigmon, ...
* přidal webové stránky routeru
* konfigurační soubory pro: dvb, samba, lighttpd, ...
* rootfs na sd kartě se časem mění podle potřeb, je vhodné ho průběžně zálohovat
===== Přidání balíčku =====
Zde budu uvádět balíčky, které jsem byl nucen dokompilovat, protože chybí. Automaticky je přidávám do seznamu balíčku základního image. Obecný postup přidání si ukážeme na příkladu s wget.
scripts/feeds install wget
make menuconfig
make package/wget/compile
make package/wget/install
make package/index
opkg update
opkg install wget
===== Poznámky =====
* držet si celý build tree
* občas je potřeba nějakou novou funkci (php, python, ...)
* a není nic horšího než zjistit, že build tree není k dispozici a že balíček není jak vytvořit
* nový tvheadend (současný má časté memory problémy)
* jelikož router aktivně používám, bylo by dobré si nový systém nejprve vyzkoušet :)
* v router station pro je bootloader RedBoot
* našel jsem radu, jak spustit kernel z tftp (místo flash)
* https://www.enimihil.net/redboot-tftp-boot-routerstation-pro
* takže.. vytáhl bych asi sd kartu, dal bych tam úplně čistou
* spustil bych si na svém stroji ten tftp server... s novým kernelem...,
* spustil by se kernel a v něm bych pokračoval s výrobou sd karty :)
* když by to bylo všechno ok.. tak bych to pak smahl na flash ... jinak triviální revert: vyměnit karty a reboot
* https://lede-project.org/docs/user-guide/extroot_configuration