openwrt
Rozdíly
Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
| Obě strany předchozí revizePředchozí verzeNásledující verze | Předchozí verze | ||
| openwrt [2013/05/05 11:26] – [priprava externiho uloziste (pivot-root)] djbuldog | openwrt [2025/08/28 10:09] (aktuální) – upraveno mimo DokuWiki 127.0.0.1 | ||
|---|---|---|---|
| Řádek 1: | Řádek 1: | ||
| - | ====== | + | ====== |
| ===== nastaveni time zone ===== | ===== nastaveni time zone ===== | ||
| Řádek 36: | Řádek 36: | ||
| * celkem ~ 800K | * celkem ~ 800K | ||
| - | ===== chroot | + | ===== Generovani NetFlow |
| + | * zkousel jsem generovat NetFlow pomoci fprobe/ | ||
| + | * dnes jsem videl v akci router board 750 GL s Atheros AR7242 400MHz a 64 MB RAM, CPU bylo kolem 20% pri nf9, rikaji tomu traffic-flow | ||
| + | * fprobe ma nejaky special modul pro cteni paketu z jadra, ale neumi nf9 a pry obsahuje hodne chyb | ||
| + | * nadeje vkladam do ipt-netflow projektu :) pry je hodne rychly :) | ||
| - | **extroot** - pouzivani externiho uloziste jako korenovy adresar / (root) [[http:// | ||
| - | |||
| - | Embeded zarizeni ([[http:// | ||
| - | |||
| - | 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 / | ||
| - | |||
| - | OpenWRT podporuje dva rezimy extroot: | ||
| - | * **pivot-overlay** - externi uloziste tvori " | ||
| - | * **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, | ||
| - | * v image je dobre mit take nastroj **e2fsprogs**, | ||
| - | |||
| - | 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 | ||
| - | option fstype | ||
| - | option options | ||
| - | option enabled | ||
| - | option enabled_fsck | ||
| - | </ | ||
| - | |||
| - | ==== 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 :) | ||
| - | **TIP**: online zalohu root (ro+sd) lze provest takto: | ||
| - | < | ||
| - | mount --bind / /tmp/xxx | ||
| - | ssh gate "tar -C /tmp/xxx -cvf - ." > / | ||
| - | </ | ||
| - | ==== 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 | ||
| - | * [[http:// | ||
| - | * 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 / | ||
| - | * inicializace | ||
| - | |||
| - | < | ||
| - | mkdir /tmp/sto / | ||
| - | mount /dev/sda1 /tmp/sto | ||
| - | </ | ||
| - | |||
| - | * vytvorime novy R/W FS zalozeny na ROM | ||
| - | |||
| - | < | ||
| - | mount -t mini_fo -o base=/ | ||
| - | </ | ||
| - | |||
| - | * premountujeme adr, do ktereho se instaluji nove balicky | ||
| - | |||
| - | < | ||
| - | mount --bind /tmp/sto /overlay | ||
| - | </ | ||
| - | |||
| - | * premountujeme zakladni adresare :-D | ||
| - | |||
| - | < | ||
| - | mount --bind / | ||
| - | mount --bind / | ||
| - | mount --bind / | ||
| - | mount --bind / | ||
| - | mount --bind / | ||
| - | </ | ||
| - | |||
| - | * slo by neco odmountovat? | ||
| - | * ''' | ||
| - | * script pro rspro :) | ||
| - | * haze mi to seg.fault.. mam podezreni na FAT (misto ext3)... mozna chyba pri mountovani etc? - zkusim preskocit | ||
| - | |||
| - | < | ||
| - | mkdir /tmp/sto / | ||
| - | mount /dev/sda1 / | ||
| - | mount --bind / | ||
| - | mount -t mini_fo -o base=/ | ||
| - | |||
| - | mount --bind / | ||
| - | which | ||
| - | Segmentation fault :( | ||
| - | </ | ||
| - | |||
| - | * zjednodusena verze | ||
| - | |||
| - | < | ||
| - | mkdir / | ||
| - | mount -t mini_fo -o base=/ | ||
| - | ls -l / | ||
| - | 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: / | ||
| - | * nok je .. / | ||
| ===== build konkretni vereze kernel ===== | ===== build konkretni vereze kernel ===== | ||
| Tweak the LINUX_VERSION variable in target/ | Tweak the LINUX_VERSION variable in target/ | ||
| Supported Kernels are listed in include/ | Supported Kernels are listed in include/ | ||
| * https:// | * https:// | ||
openwrt.1367746006.txt.gz · Poslední úprava: (upraveno mimo DokuWiki)
