Temat: ExtRoot nie bootuje z USB

Witam,
Zrobiłem 3 partycje na pendrivie USB:

root@OpenWrt:/mnt# fdisk -l

Disk /dev/sda: 4011 MB, 4011491328 bytes
124 heads, 62 sectors/track, 1019 cylinders
Units = cylinders of 7688 * 512 = 3936256 bytes
Disk identifier: 0x00010943

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1          34      130665   82  Linux swap / Solaris
/dev/sda2              35         165      503564   83  Linux
/dev/sda3             166        1019     3282776   83  Linux

/dev/sda2 chciałem przeznaczyć dla /overlay.

Mój fstab:

config 'global' 'automount'
        option 'from_fstab' '1'
        option 'anon_mount' '1'

config 'global' 'autoswap'
        option 'from_fstab' '1'
        option 'anon_swap' '0'

config 'mount'
        option 'device' '/dev/sda2'
        option 'enabled' '1'
        option 'fstype' 'ext4'
        option 'is_rootfs' '1'
        option 'options' 'rw,sync'
        option 'target' '/'

config 'swap'
        option 'device' '/dev/sda1'
        option 'enabled' '1'
root@OpenWrt:/mnt# opkg list-installed
base-files - 42-r20728
block-extroot - 0.0.1-1
block-hotplug - 0.1.0-1
block-mount - 0.1.0-1
busybox - 1.15.3-2
crda - 1.1.0-2
dnsmasq - 2.52-2
dropbear - 0.52-4
e2fsprogs - 1.41.11-1
fdisk - 2.13.0.1-4
firewall - 1-10
hotplug2 - 1.0-beta-1
iptables - 1.4.6-2
iptables-mod-conntrack - 1.4.6-2
iptables-mod-nat - 1.4.6-2
iw - 0.9.19-1
kernel - 2.6.32.10-1
kmod-ath - 2.6.32.10+2010-03-24-5
kmod-ath9k - 2.6.32.10+2010-03-24-5
kmod-button-hotplug - 2.6.32.10-1
kmod-cfg80211 - 2.6.32.10+2010-03-24-5
kmod-crc-ccitt - 2.6.32.10-1
kmod-crc16 - 2.6.32.10-1
kmod-crypto-aes - 2.6.32.10-1
kmod-crypto-arc4 - 2.6.32.10-1
kmod-crypto-core - 2.6.32.10-1
kmod-fs-autofs4 - 2.6.32.10-1
kmod-fs-ext4 - 2.6.32.10-1
kmod-fs-mbcache - 2.6.32.10-1
kmod-input-core - 2.6.32.10-1
kmod-input-gpio-buttons - 2.6.32.10-1
kmod-input-polldev - 2.6.32.10-1
kmod-ipt-conntrack - 2.6.32.10-1
kmod-ipt-core - 2.6.32.10-1
kmod-ipt-nat - 2.6.32.10-1
kmod-ipt-nathelper - 2.6.32.10-1
kmod-leds-gpio - 2.6.32.10-1
kmod-mac80211 - 2.6.32.10+2010-03-24-5
kmod-nls-base - 2.6.32.10-1
kmod-ppp - 2.6.32.10-1
kmod-pppoe - 2.6.32.10-1
kmod-scsi-core - 2.6.32.10-1
kmod-tun - 2.6.32.10-1
kmod-usb-core - 2.6.32.10-1
kmod-usb-storage - 2.6.32.10-1
kmod-usb2 - 2.6.32.10-1
libblkid - 1.41.11-1
libc - 0.9.30.1-42
libext2fs - 1.41.11-1
libgcc - 4.3.3+cs-42
libiptc - 1.4.6-2
liblua - 5.1.4-6
liblzo - 2.03-3
libnl-tiny - 0.1-1
libopenssl - 0.9.8m-3
libpthread - 0.9.30.1-42
librt - 0.9.30.1-42
libuci - 12012009.5-1
libuci-lua - 12012009.5-1
libuuid - 1.41.11-1
libxtables - 1.4.6-2
lua - 5.1.4-6
luci - 0.9.0-1
luci-admin-core - 0.9.0-1
luci-admin-full - 0.9.0-1
luci-admin-mini - 0.9.0-1
luci-app-firewall - 0.9.0-1
luci-app-initmgr - 0.9.0-1
luci-cbi - 0.9.0-1
luci-core - 0.9.0-1
luci-http - 0.9.0-1
luci-i18n-english - 0.9.0-1
luci-ipkg - 0.9.0-1
luci-lmo - 0.9.0-1
luci-nixio - 0.9.0-1
luci-sgi-cgi - 0.9.0-1
luci-sys - 0.9.0-1
luci-theme-base - 0.9.0-1
luci-theme-openwrt - 0.9.0-1
luci-uci - 0.9.0-1
luci-uvl - 0.9.0-1
luci-web - 0.9.0-1
mountd - 0.1-1
mtd - 12
ntpclient - 2007_365-4
openvpn - 2.1.1-1
opkg - 513-2
ppp - 2.4.4-5
ppp-mod-pppoe - 2.4.4-5
swconfig - 5
tinyproxy - 1.8.0-1
uci - 12012009.5-1
udevtrigger - 106-1
uhttpd - 7
wireless-tools - 29-4
wpad - 20100309-1
zlib - 1.2.3-5

Kierowałem się tym poradnikiem:
http://eko.one.pl/?p=openwrt-externalroot

Po reboocie, nadal startuje ze swojej pamięci.

root@OpenWrt:~# mount
rootfs on / type rootfs (rw)
/dev/root on /rom type squashfs (ro,relatime)
proc on /proc type proc (rw,relatime)
sysfs on /sys type sysfs (rw,relatime)
tmpfs on /tmp type tmpfs (rw,nosuid,nodev,relatime,size=14744k)
tmpfs on /dev type tmpfs (rw,relatime,size=512k)
devpts on /dev/pts type devpts (rw,relatime,mode=600)
/dev/mtdblock3 on /overlay type jffs2 (rw,relatime)
mini_fo:/overlay on / type mini_fo (rw,relatime)
debugfs on /sys/kernel/debug type debugfs (rw,relatime)
none on /proc/bus/usb type usbfs (rw,relatime)
/dev/sda2 on / type ext4 (rw,sync,relatime,barrier=1,data=ordered)

Co schrzaniłem?

Backfire (10.03.1, r29592)
USB Play Online (Huawei E173) + ExtRoot + Squid + Iptables

2

Odp: ExtRoot nie bootuje z USB

Backfire czy trunk?

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

3

Odp: ExtRoot nie bootuje z USB

Backfire (10.03, r20728)

Backfire (10.03.1, r29592)
USB Play Online (Huawei E173) + ExtRoot + Squid + Iptables

4

Odp: ExtRoot nie bootuje z USB

10.03 wymagało wkompilowania block-extroot do obrazu. Inaczej nie działało. W późniejszych można było to już tylko doinstalować.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

5

Odp: ExtRoot nie bootuje z USB

Zrobiłem:

mtd -e firmware -r write obraz.bin firmware

Obraz:

http://downloads.openwrt.org/backfire/10.03.1-rc6/ar71xx/openwrt-ar71xx-tl-wr1043nd-v1-squashfs-sysupgrade.bin

Cały mój config poszedł w cholerę, ale za to ExtRoot od razu ruszył.

Jak to jest jak wgrywa się sysupgrade.bin zamiast factory.bin to też wszystko leci?

Backfire (10.03.1, r29592)
USB Play Online (Huawei E173) + ExtRoot + Squid + Iptables

6

Odp: ExtRoot nie bootuje z USB

Nie używaj mtd jak nie musisz. sysupgrade jest do tego. Domyslnie zachowuje pliki konfiguracyjne, wiec byś nie stracił tego.

Dlaczego użyłeś rc6 jak wersja finalna jest?

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

7 (edytowany przez tomason 2012-02-07 18:38:03)

Odp: ExtRoot nie bootuje z USB

Nie wiedza boli. Tylko teraz coś nakopałem.
Pobrałem http://downloads.openwrt.org/backfire/1 … pgrade.bin
... i wykonałem sysupgrade. Po około 15-20s jak było Writing firmware wywaliło mnie z puttyego.
Router włącza się, świeci się PWR i kontrolka od podłączonego przewodu do portu.
Nie działa DHCP, zresetowałem go (kilkadziesiąst s z tyłu reset) i odłączyłem od prądu. Próbowałem ręcznie ustawić sieć na 192.168.1.0/24 i atakowałem go przez ping/telnet na 192.168.1.1, ale nie działa.
Uwaliłem go na amen?

Backfire (10.03.1, r29592)
USB Play Online (Huawei E173) + ExtRoot + Squid + Iptables

8

Odp: ExtRoot nie bootuje z USB

Jeżeli się wgrał i działa to failsafe powinien odpowiadać - patrz http://eko.one.pl/?p=openwrt-failsafe

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

9 (edytowany przez tomason 2012-02-08 00:12:56)

Odp: ExtRoot nie bootuje z USB

Po podłączeniu routerka do zasilania świeci się PWR, po 3 sekundach zapalą się wszystkie, zgasną, a potem jeszcze zapalą się diody portów 4,3,2,1 i WAN.
Potem cisza. Próbowałem po podłaczeniu zasilania naciskać QSS, a także Reset, ale nie mryga żadna dioda 3 razy... no i brak połączenia z 192.168.1.1.

Jak metoda jest tutaj skuteczna bez lutowania? JTAG czy kabel szeregowy z konwerterem napięć?
Jak szeregowy to czy taki będzie dobry?
http://allegro.pl/kabel-usb-ca-42-nokia … 93528.html
Gdzieś mam też przejściówke USB na COM, ale nie wiem jakie tam napięcie może być na wyjściu.

Backfire (10.03.1, r29592)
USB Play Online (Huawei E173) + ExtRoot + Squid + Iptables

10

Odp: ExtRoot nie bootuje z USB

W 1043 jtagiem nic nie zdziałasz - zostaje kabel szeregowy. Czy w/w będzie działać - tego nie wiesz, producentów kabli jest cała masa i czasami robią jakiś coś nie wiadomo co co nie działa.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

11 (edytowany przez tomason 2012-02-08 09:47:28)

Odp: ExtRoot nie bootuje z USB

Chwilowo dorwałem drugiego WR1043ND, zanim tamtego się naprawi.

Mam USB z 3 partycjami: /dev/sda1 SWAP, /dev/sda2 ExtRoot, /dev/sda3 Squid.
Ustawiłem na JFFS-ie w fstabie, ręcznie sekcje mount /dev/sda3 /mnt/squid.
Jednak jak wystartuje ExtRoot to nie ma jej zamontowanej.

Mogę ją zamontować ręcznie:
mount -t ext4 /dev/sda3 /mnt/squid

i wtedy wygląda to tak:
/dev/sda3 on /mnt/squid type ext4 (rw,relatime,barrier=1,data=ordered)

Natomiast nie działa to poprawnie, to znaczy nie zapisuje np. katalogów w /mnt/squid i po umountowaniu całości katalogi które testowo założyłem zostają w lokalizacji /mnt/squid.

1. Dlaczego tak się dzieje?
2. Skoro konfiguracje dla SWAPu na /dev/sda1 mam na JFFS-ie w pliku fstab to czy będzie ona obowiązywać na ExtRoocie?

Backfire (10.03.1, r29592)
USB Play Online (Huawei E173) + ExtRoot + Squid + Iptables

12

Odp: ExtRoot nie bootuje z USB

Najpierw robisz extroota, później po uruchomieniu z extrotoota ponownie instalujesz block-mount/hotplug i ustawiasz montowanie następnego dysku.

Tak działa extroot - montowana jest tylko partycja na extroota, a on sam przykrywa wszystko co jest we flash, wiec zmian i pakietów dodatkowo zainstalowanych nie widać i trzeba je instalować/konfigurować jeszcze raz.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

13 (edytowany przez tomason 2012-02-08 10:18:55)

Odp: ExtRoot nie bootuje z USB

Zainstalowałem te pakiety ponownie i w etc/config/fstab:

config mount
        option target   /mnt/squid
        option device   /dev/sda3
        option fstype   ext4
        option options  rw,sync
        option enabled  1
        option enabled_fsck 0

config swap
        option device   /dev/sda1
        option enabled  1

Nie montuje po reboocie.
Czy to jest związane z tym, że to jest ten sam Pendrive co startuje z niego ExtRoot?

2.
Swoją drogą zainstalowałem squida: opkg install squid.
... niestety nie ma nigdzie /etc/init.d/squid i tym podobne.
Czy to jakiś bug?

Backfire (10.03.1, r29592)
USB Play Online (Huawei E173) + ExtRoot + Squid + Iptables

14

Odp: ExtRoot nie bootuje z USB

opkg install block-hotplug
/etc/init.d/fstab enable

jeszcze

2. Może po prostu pakiet nie ma skryptu startowego ("niedorobiony jest").

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

15

Odp: ExtRoot nie bootuje z USB

Działa OK.
Chciałem dodać autostart dla squida.

Zrobiłem

#!/bin/sh /etc/rc.common
# Copyright (C) 2006 OpenWrt.org 

START=120
boot() {
    squid        
}

Dodałem go do rc.d poprzez enable.
Niestety squid startuje za wcześnie, jeszcze zanim USB jest podmontowane. Próbowałem dać sleep 10, ale bezskutecznie.
Jak to rozwiązać?

logread
Feb  8 21:09:17 OpenWrt local4.alert squid[775]: cache_dir /mnt/squid/cache: (2) No such file or directory
Feb  8 21:09:17 OpenWrt user.info sysinit: FATAL: cache_dir /mnt/squid/cache: (2) No such file or directory
Feb  8 21:09:17 OpenWrt user.info sysinit: Squid Cache (Version 2.7.STABLE9): Terminated abnormally.
Feb  8 21:09:17 OpenWrt user.info sysinit: CPU Usage: 0.050 seconds = 0.050 user + 0.000 sys
Feb  8 21:09:17 OpenWrt user.info sysinit: Maximum Resident Size: 4624 KB
Feb  8 21:09:17 OpenWrt user.info sysinit: Page faults with physical i/o: 14
Feb  8 21:09:17 OpenWrt user.info sysinit: Aborted
Feb  8 21:09:18 OpenWrt user.info sysinit: WARNING: /lib/functions/fsck not found
Feb  8 21:09:18 OpenWrt user.info kernel: Adding 130656k swap on /dev/sda1.  Priority:-1 extents:1 across:130656k
Feb  8 21:09:19 OpenWrt user.info kernel: EXT4-fs (sda3): recovery complete
Feb  8 21:09:19 OpenWrt user.info kernel: EXT4-fs (sda3): mounted filesystem with ordered data mode
Feb  8 21:09:21 OpenWrt user.info kernel: device wlan0 entered promiscuous mode
Feb  8 21:09:21 OpenWrt user.info kernel: br-lan: port 2(wlan0) entering forwarding state
Feb  8 21:09:24 OpenWrt user.info kernel: device wlan0 left promiscuous mode
Feb  8 21:09:24 OpenWrt user.info kernel: br-lan: port 2(wlan0) entering disabled state
Feb  8 21:09:24 OpenWrt user.info kernel: device wlan0 entered promiscuous mode
Feb  8 21:09:24 OpenWrt user.info kernel: br-lan: port 2(wlan0) entering forwarding state
Backfire (10.03.1, r29592)
USB Play Online (Huawei E173) + ExtRoot + Squid + Iptables

16

Odp: ExtRoot nie bootuje z USB

Dodaj pętle sprawdzającą czy nośnik jest już zamontowany.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

17

Odp: ExtRoot nie bootuje z USB

Moja pierwsza przygoda z BASH-em.
Teoretycznie powinno działać, ale nie działa.
Testowałem na "sucho" i jest OK, ale jak dodam taki skrypcik do RC.D to router nie startuje, w sensie pewnie zawiesza się na tym skrypcie.
... dlaczego sleep 30 np. nie działa?

Czy przypadkiem USB nie są montowane dopiero po uruchomieniu skryptów z rc.d? W rc.d informacja o montowaniu jest zawsze po tym squidzie, nie ważne ile sleepa dam.

#!/bin/sh /etc/rc.common
# Copyright (C) 2006 OpenWrt.org 

START=120
boot() {
while true
do
if (mount | grep squid > /dev/null)
    then
    echo    "USB mounted properly starting SQUID"
    squid    
    break
    else
    echo    "Waiting till USB mount"
    sleep 5
fi
done        
}
Backfire (10.03.1, r29592)
USB Play Online (Huawei E173) + ExtRoot + Squid + Iptables

18

Odp: ExtRoot nie bootuje z USB

Bo nie funkcja boot tyko start. i START daj na 99.

Dyski montują się asynchronicznie.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

19

Odp: ExtRoot nie bootuje z USB

Działa wyśmienicie. Dziękuje.

Backfire (10.03.1, r29592)
USB Play Online (Huawei E173) + ExtRoot + Squid + Iptables