====== 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