Uživatelské nástroje

Nástroje pro tento web


openwrt

Toto je starší verze dokumentu!


OpenWrt

nastaveni time zone

echo "CET-1CEST-2,M3.5.0/02:00:00,M10.5.0/03:00:00" > /etc/TZ

http://wiki.openwrt.org/oldwiki/openwrtdocs/whiterussian/configuration

statistiky provozu

  • jak nahradit hotsanic? :) - pomoci iptables :-D
root@HomeRouterII:~# iptables -L INPUT -vxn
Chain INPUT (policy ACCEPT 8444 packets, 1003147 bytes)
    pkts     bytes target      prot opt  in      out       source               destination         
 1828997 189743951 ACCEPT      all  --    *        *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED 
   30524   1893399 ACCEPT      all  --   lo        *       0.0.0.0/0            0.0.0.0/0           
   10019    529628 syn_flood   tcp  --    *        *       0.0.0.0/0            0.0.0.0/0           tcp flags:0x17/0x02 
 2153813 265801766 input_rule  all  --    *        *       0.0.0.0/0            0.0.0.0/0           
 2153766 265799194 input       all  --    *        *       0.0.0.0/0            0.0.0.0/0    

iftop

  • kolik zabere? :)
  • iftop (62791), libpcap (180563), libncurses (425516), libpthread (83890)
  • celkem ~ 800K

chroot na usb (extroot)

extroot - pouzivani externiho uloziste jako korenovy adresar / (root) teorie extroot, extroot

Embeded zarizeni (SoC) vetsinou nepodporuji bootovani primo z USB (FTL flash), musi se nejprve spustit system ulozeny na flash chipu (raw flash).

Extroot lze v takovych pripadech realizovat pouze tak, ze do flash chipu se ulozi system, ktery behem startu prepne na nove externi uloziste. Je potreba pripravit image pro raw flash routeru a souborovy system na externim ulozisti.

Omezeni (upgradovani) pri pouzivani externiho uloziste

  • nesmi se pouzivat balicky kompilovane s jinou verzi uClibc nez image. Nemusi byt kompatibilni.
  • nesmi se upgradovat kernel na jinou verzi nebo z jineho build prostredi. Zpusobilo by nekompatibilitu.
  • nesmi se pouzivat balicky, ktere byly kompilovane vuci jine verzi kernelu (treba iptables)

OpenWRT od verze Attitude Adjustment se snazi detekovat takove nekonzistence a predejit problemum vypnutim bootovani z externiho zarizeni. V takovem pripade je extroot pripojen do /tmp/overlay-disabled, aby se mohl opravit. Pokud je potreba upgradovat kernel, musi se upgradovat jak na extroot, tak v image.

OpenWRT podporuje dva rezimy extroot:

  • pivot-overlay - externi uloziste tvori „prekryv“ - do puvodniho souboroveho systemu pridava/odstranuje polozky. Je vytvoren virtualni souborovy system (mini_fo), ktery se sklada z read-only casti ve flash a read-write na externim ulozisti.
  • pivot-root - pouziva se vyhradne externi uloziste

image pro raw flash

  • image se vetsinou vytvari se souborovym system squashfs (read-only) + jffs (rw), aby bylo mozne ukladat konfiguracni zmeny nebo provadet upgrade balicku.
  • v kernelu je potreba drivery:
    • kmod-usb-storage mod-usb-core kmod-usb2 - zakladni usb subsystem
    • kmod-mmc - driver pro SD/MMC karty
    • kmod-fs-ext4 - pro pouzity filesystem na externim ulozisti
  • i kdyz mame tyto drivery v jadre.. stale je potreba neco, co by v init pripojilo souborovy system na externim ulozisti bez jineho souboroveho systemu, kde by tato akce byla popsana. K tomu se pouziva modul block-mount (drive navic block-extroot, block-hotplug)
  • v image je dobre mit take nastroj e2fsprogs, pro vytvareni filesystemu na externim ulozisit (neni nutne)

Pro image si udelam vlastni build, chci tam mit jen minimum veci nezbytnych pro pro boot z externiho uloziste. Pokud bych pouzil image primo z openwrt, musel bych tam jeste doinstalovat chybejici balicky a image by byl zbytecne velky. Bude se mi take lepe udrzovat konzistence mezi externim ulozistem a image, protoze budu mit stejne buildovaci prostredi.

  • vybereme zakladni balicky plus nasledujici
block-mount kmod-usb-storage kmod-fs-ext4 mod-usb-core kmod-usb2 kmod-mmc
  • do fstab pridame (az po bootu nebo modfifikujeme cilovy fs)
config mount
        option target        /
        option device        /dev/sda1
        option fstype        ext4
        option options       rw,sync
        option enabled       1
        option enabled_fsck  0

priprava externiho uloziste (pivot-root)

  • externi uloziste se nejcasteji vytvari primo v nastarovanem OpenWrt na cilovem zarizeni.
  • nejprve se vytvori filesystem (v tomto pripade ext4 na externim zarizeni /dev/sda1)
  • v root filesystemu jsou pripojeny specialni soubory ve slozkach jako /dev /proc .., abychom nekopirovaly tyto systemove soubory, vytvari se bind souboroveho systemu do jineho adresare
  • nevim, proc se pouziva tar misto cp, mozna je to flexibilnejsi (kopirovani po siti)
mkfs.ext4 /dev/sda1
mount /dev/sda1 /mnt
mkdir /tmp/cproot
mount --bind / /tmp/cproot
tar -C /tmp/cproot -cvf - . | tar -C /mnt -xvf -
sync ; umount /mnt
umount /tmp/cproot

TIP: aby se dalo ihned rozlisit, zda nastartoval image nebo extroot je mozne ulozit do /etc/banner info o tom, ze je to z extroot :)

stary pokus

Takto jsem se znazil, jeste nez vznikla oficialni podpora pro chroot v OpenWRT. Jsou zde zajimave veci, ktere se mohou hodit jinde.

  • cil: pripravit USB disk s ext3
  • problem - jak spustit chroot pred bootem init skriptu? prej to jde jen predanim options kernelu… ale do redboot preci zasahovat nemuzu ne?
  • model A
    • instalace
      • nakopirovat obsah /dev/mtdblock3 on /overlay type jffs2 na usb
    • inicializace
mkdir /tmp/sto /tmp/new_root
mount /dev/sda1 /tmp/sto
  • vytvorime novy R/W FS zalozeny na ROM
mount -t mini_fo -o base=/rom,sto=/tmp/sto /rom /tmp/new_root
  • premountujeme adr, do ktereho se instaluji nove balicky
mount --bind /tmp/sto /overlay
  • premountujeme zakladni adresare :-D
mount --bind /tmp/new_root/etc  /etc
mount --bind /tmp/new_root/lib /lib
mount --bind /tmp/new_root/sbin /sbin
mount --bind /tmp/new_root/usr /usr
mount --bind /tmp/sto/root /root
  • slo by neco odmountovat?
  • 'nejspis je potreba ext3!! na fat mi to hazelo nejake chyby.. nejde nastavit napriklad suid bit'
  • script pro rspro :)
    • haze mi to seg.fault.. mam podezreni na FAT (misto ext3)… mozna chyba pri mountovani etc? - zkusim preskocit
mkdir /tmp/sto /tmp/new_root
mount /dev/sda1 /tmp/sto 
mount --bind /tmp/sto/chroot /jffs
mount -t mini_fo -o base=/rom,sto=/tmp/sto/chroot /rom /tmp/new_root

mount --bind /tmp/new_root/lib /lib
which 
Segmentation fault :(
  • zjednodusena verze
mkdir /tmp/new_root
mount -t mini_fo -o base=/rom,sto=/mnt/sdcard/chroot /rom /tmp/new_root
ls -l /tmp/new_root/lib/
Segmentation fault
logread -f
Jul  3 20:11:41 HomeRouterII user.alert kernel: CPU 0 Unable to handle kernel paging request at virtual address 0000008c, epc == 87b921a0, ra == 800e1afc
Jul  3 20:11:41 HomeRouterII user.warn kernel: Oops[#1]:
Jul  3 20:11:41 HomeRouterII user.warn kernel: Cpu 0
Jul  3 20:11:41 HomeRouterII user.warn kernel: $ 0   : 00000000 00000001 00000000 0000002e
Jul  3 20:11:41 HomeRouterII user.warn kernel: $ 4   : 874e6380 874e859c 873a1d90 00000009
Jul  3 20:11:41 HomeRouterII user.warn kernel: $ 8   : 8732e011 874e635b 87b3bbe0 fffffff4
Jul  3 20:11:41 HomeRouterII user.warn kernel: $12   : 00000025 00000807 00000800 00480000
Jul  3 20:11:41 HomeRouterII user.warn kernel: $16   : 874e8580 874e8590 874e6300 873a1d90
Jul  3 20:11:41 HomeRouterII user.warn kernel: $20   : 00000009 8732e012 23d0d3f8 873fa700
Jul  3 20:11:41 HomeRouterII user.warn kernel: $24   : 00482398 87b92194                  
Jul  3 20:11:41 HomeRouterII user.warn kernel: $28   : 873a0000 873a1d08 873a1d80 800e1afc
  • zajimave.. ok je: /tmp/new_root/, /tmp/new_root/etc, /tmp/new_root/usr,
  • nok je .. /tmp/new_root/rom, /tmp/new_root/bin, /tmp/new_root/lib, /tmp/new_root/usr/*/

build konkretni vereze kernel

Tweak the LINUX_VERSION variable in target/linux/ar71xx/Makefile. Supported Kernels are listed in include/kernel-version.mk

openwrt.1367744247.txt.gz · Poslední úprava: (upraveno mimo DokuWiki)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki