26

Odp: Zbrakło 300kB

Nie, nie ma.

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

27

Odp: Zbrakło 300kB

@secam7 - ale kernel jest jest za rootfs, pomiędzy rootfs_data i trzeba byłby jakoś poprzesuwać obszary pamięci. Twoja metoda też dobra, ale w powodów w/w wymienionych nie bawię się w to.

# cat /proc/mtd
dev:    size   erasesize  name
mtd0: 00020000 00010000 "u-boot"
mtd1: 0010e254 00010000 "kernel"
mtd2: 00ec1dac 00010000 "rootfs"
mtd3: 00c40000 00010000 "rootfs_data"
mtd4: 00010000 00010000 "art"
mtd5: 00fd0000 00010000 "firmware"

PS. Hipotetycznie - mtd0-mdt5 to jest logiczny podział, czy też można manipulować ich wielkością? Np. więcej dać do mtd3, a zabrać odpwiednio z mdt2?

Ja widzę podział tak:
mdt0 - lepiej nie ruszać - bootloader
mod1 - mtd3 - czy ilości tych obszarów można zmieniać? Załóżmy, że skompilowałem sobie mały kernel, resztę chce oddać na roofs i rootfs_data - mogę tak zrobić?
mod4 - rozumiem, że to dane dla radio i lepiej nie ruszać
mtd5 - co to?

28

Odp: Zbrakło 300kB

W openwrt rootfs leży bezpośrednio za kernelem, a rootfs_data za rootfs, on się tworzy automatycznie. Więc nie masz skąd zabrać. Chyba że faktycznie skompilujesz mniejszy kernel wtedy wszystko się przesunie.

mtd5 - to cały obszar 1,2,3, czyli to to aktualizujesz podczas wgrywania oprogramowania.

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

29

Odp: Zbrakło 300kB

To może inaczej zapytam - pamięć flash/nand to ciągły kawałek pamięci (jest też kontroler który w razie awarii danej komórki pamięci emuluje ciągłość pamięci, ale z punktu widzenia systemu jest to ciągły kawałem pamięci).

Skąd kernel wie gdzie się zaczyna mdt1, mdt2, mtd3 itd?  Rozumiem, że bootloader jest na samym początku adresacji pamięci (jest wywoływany zaraz po włączaniu napięcia) , a cała reszta?  Skąd bootloadre oraz kernel wiedzą, gdzie leży jądro i systemy plików w pamięci.

Gdzie się tworzy podział na mtd'y? Bo to jest logiczny podział, nie fizyczny, jest tylko 1 kostka pamięci flash.  I czy można ręcznie zmienić logiczny podział pamięci?

30

Odp: Zbrakło 300kB

Przez zwykłe znaczniki na końcach obrazów. Przeanalizuj sobie kod źródłowy kenrnela w zakresie podziału pamięci w tplinku to będziesz wiedział.

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

31

Odp: Zbrakło 300kB

smile z analizą kodu jądra będzie trudno

Ale poruszyłeś ważny temat - obecnie nie mam czasu na zabawy sprzętem, ale cały wątek powstał po to, aby mdt3 zastąpić innym obrazem.

Czy wobec tego, że mój spreparowany obraz mtd3 jest mniejszy od obecnie zajmowanej przestrzeni, czy to nie wykrzaczy się?  Spreparować tak obraz overlay'a aby pasował co do bita do mtd3 jest dla mnie technicznie trudną rzeczą (jeśli w ogóle możliwe).  Dlatego pytam, czy po ewentualnym wgraniu nowego obrazu taki znacznik jest w obrazie jffs2, czy system sam go tworzy? A jeśli utworzy to będzie niezagospodarowane miejsce pomiędzy mtd3, a mtd4, tak?

32

Odp: Zbrakło 300kB

Robi to sterownik mtd w momencie kiedy rootfs_data nie znajdzie. W sumie ktoś już pisał - kompletnie nie wiem po co to robisz. Jak potrzebujesz coś dodatkowego to wkompiluj sobie w squashfs - on jest lepiej kompresowany. A tak to siedzisz już nad tym któryś dzień. No chyba że dla sportu to robisz, bo nic innego lepszego nie masz do roboty...

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

33

Odp: Zbrakło 300kB

To ja pisałem i zdania nie zmieniłem.

34

Odp: Zbrakło 300kB

W sumie to czasowo siedzę na tym mało, bardziej rozciągnięte w czasie z powodu braku czasu, wolę spędzić czas z dziećmi smile
Poza tym robię to dla sportu, bo jak pisałem - mogę w 2 min zrobić extroota....

Wracając do tematu, mam mały offtopic - jak zamontować obraz jffs2?

root@OpenWrt:/mnt/sda1/root/flash# dd if=/dev/mtdblock5 of=mtd3-rootfs_jffs2
16000+0 records in
16000+0 records out

root@OpenWrt:/mnt/sda1/root/flash# ls -lh
drwxrwxrwx    1 root     root           0 Nov  7 10:50 a
-rwxrwxrwx    1 root     root      128.0K Nov  7 10:44 mtd0-uboot
-rwxrwxrwx    1 root     root      950.0K Nov  7 10:44 mtd1-kernel
-rwxrwxrwx    1 root     root        6.9M Nov  7 10:44 mtd2-rootfs_squasfs
-rwxrwxrwx    1 root     root        2.9M Nov  7 10:43 mtd3-rootfs_jffs2
-rwxrwxrwx    1 root     root       64.0K Nov  7 10:44 mtd4-art
-rwxrwxrwx    1 root     root        7.8M Nov  7 10:43 mtd5-firmware

Chcą zamontować przez loopa mtd2 - wychodzi. Chcę mtd3 - nie idzie hmm

root@OpenWrt:/mnt/sda1/root/flash# mount -t jffs2 mtd3-rootfs_jffs2 a
mount: mounting /dev/loop0 on a failed: Invalid argument

Próbuję inaczej

root@OpenWrt:/mnt/sda1/root/flash# ls -l /dev/loop*
crw-r--r--    1 root     root       10, 237 Nov  7 15:02 /dev/loop-control
brw-r--r--    1 root     root        7,   0 Nov  7 15:02 /dev/loop0
brw-r--r--    1 root     root        7,   1 Nov  7 15:02 /dev/loop1
brw-r--r--    1 root     root        7,   2 Nov  7 15:02 /dev/loop2
brw-r--r--    1 root     root        7,   3 Nov  7 15:02 /dev/loop3
brw-r--r--    1 root     root        7,   4 Nov  7 15:02 /dev/loop4
brw-r--r--    1 root     root        7,   5 Nov  7 15:02 /dev/loop5
brw-r--r--    1 root     root        7,   6 Nov  7 15:02 /dev/loop6
brw-r--r--    1 root     root        7,   7 Nov  7 15:02 /dev/loop7

root@OpenWrt:/mnt/sda1/root/flash# losetup /dev/loop0 mtd3-rootfs_jffs2

root@OpenWrt:/mnt/sda1/root/flash# losetup -av
/dev/loop0: [2049]:1086 (/mnt/sda1/root/flash/mtd3-rootfs_jffs2)

root@OpenWrt:/mnt/sda1/root/flash# mount -t jffs2 /dev/loop0 a
mount: mounting /dev/loop0 on a failed: Invalid argument

Gdzieś znalazłem, że żeby sprawdzić czy początek pliku jest dobry i taki jest.

root@OpenWrt:/mnt/sda1/root/flash# hexdump mtd3-rootfs_jffs2  -n 4 -e '4/1 "%02x"'
19852003

Pomysły mi się skończyły - jak pod-montować obraz jffs2?

Wersja AA:
OpenWrt Attitude Adjustment 12.09.1 (r41182)
Build time: 2014-06-14 13:26 CEST

35

Odp: Zbrakło 300kB

Spróbuj http://www.plugcomputer.org/plugforum/i … 419#msg419

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

36 (edytowany przez oneiro 2014-11-07 21:21:58)

Odp: Zbrakło 300kB

Znalazłem już to wcześniej, ale w OpenWRT nie mogę znaleźć pakietu do zainstalowania  hmm
W normalnym (tj nie okrojonym) na pewno by się to udało...

sudo apt-get install mtd-tools
sudo modprobe -v mtd
sudo modprobe -v jffs2
sudo modprobe -v mtdram total_size=256000 erase_size=256
sudo modprobe -v mtdchar
sudo modprobe -v mtdblock

EDIT:  Znalazłem instrukcję, działa pod OpenWRT
http://www.gentoo-wiki.info/JFFS2/Mounting

root@OpenWrt:/# cat /proc/mtd
dev:    size   erasesize  name
mtd0: 00020000 00010000 "u-boot"
mtd1: 000ed800 00010000 "kernel"
mtd2: 006e2800 00010000 "rootfs"
mtd3: 002e0000 00010000 "rootfs_data"
mtd4: 00010000 00010000 "art"
mtd5: 007d0000 00010000 "firmware"
mtd6: 002df000 00001000 "/dev/loop0"
root@OpenWrt:/# df -h
Filesystem                Size      Used Available Use% Mounted on
rootfs                    2.9M      2.7M    200.0K  93% /
/dev/root                 4.0M      4.0M         0 100% /rom
tmpfs                    14.3M    704.0K     13.6M   5% /tmp
tmpfs                   512.0K         0    512.0K   0% /dev
/dev/mtdblock3            2.9M      2.7M    200.0K  93% /overlay
overlayfs:/overlay        2.9M      2.7M    200.0K  93% /
/dev/sda1                27.9G     14.2G     13.7G  51% /mnt/sda1
/dev/mtdblock6            2.9M      1.3M      1.5M  47% /mnt/sda1/root/flash/a
root@OpenWrt:/#