1

Temat: Zbrakło 300kB

Witam,

Czy jffs2 jest skompresowany?  Mount pokazuje:

/dev/mtdblock3 /overlay jffs2 rw,noatime 0 0

Jeśli nie jest, czy można to włączyć/prze konwertować?  CHodzi mi o kompresję w loci.

PS. Wiem, extroot istnieje, ale może można inaczej?

Pozdrawiam, Krzysiek

2

Odp: Zbrakło 300kB

W pewnym stopniu się kompresuje.

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

3

Odp: Zbrakło 300kB

a jak mogę sprawdzić jaki jest ustawiony stopień kompresji i czy można go zmienić?

4

Odp: Zbrakło 300kB

Nie ma czegoś takiego i nie możesz sprawdzić.

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

5 (edytowany przez oneiro 2014-10-30 21:26:07)

Odp: Zbrakło 300kB

a jakbym /dev/mtdblock3 skopiował do pliku, rozpakował gdzieś i ponownie utworzył obraz jffs2 z maksymalną kompresją i zapisał do /dev/mtdblock3 to czy takie coś zadziała (zakładam, że uzyskam większą kompresję)

edit: w sumie wystarczy skopiować pliki z /overlay

6

Odp: Zbrakło 300kB

Nie ma czegoś takiego jak "maksymalna kompresja". Jakaś jest i tyle, nie masz wpływu na to.

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

7

Odp: Zbrakło 300kB

jest, cytat z man mkfs.jffs2:

-m, --compression-mode=MODE
               Set  the  default compression mode. The default mode is priority
               which tries the compressors in a predefinied order  and  chooses
               the  first successful one. The alternatives are: none (mkfs will
               not compress) and size (mkfs will try all compressor and chooses
               the one which have the smallest result).

        -x, --disable-compressor=NAME
               Disable  a  compressor.  Use  -L to see the list of the avaiable
               compressors and their default states.

        -X, --enable-compressor=NAME
               Enable a compressor. Use -L to see the list of the avaiable com‐
               pressors and their default states.

        -y, --compressor-priority=PRIORITY:NAME
               Set  the priority of a compressor. Use -L to see the list of the
               avaiable compressors and their default priority.  Priorities are
               used by priority compression mode.

        -L, --list-compressors
               Show the list of the avaiable compressors and their states.

Z tego co rozumiem to wpływ ma opcja "-m" z opcją small, co ważne mogę wybrać metodę

8

Odp: Zbrakło 300kB

Tyle że nie masz mkfs.jffs2 standardowo dostępnego bezpośrednio w openwrt.

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

9 (edytowany przez oneiro 2014-10-30 22:22:38)

Odp: Zbrakło 300kB

root@OpenWrt:/overlay/# opkg find *jffs2*
mtd-utils-jffs2dump - 1.4.5-1 - jffs2dump package from mtd-utils
mtd-utils-mkfs.jffs2 - 1.4.5-1 - mkfs.jffs2 package from mtd-utils

Stan przed próbą utworzenia zbioru....

EDIT:

Po instalacji:

#mkdir /mnt/sda1/root
#cp -r /overlay/ /mnt/sda1/root/

#df -h
Filesystem                Size      Used Available Use% Mounted on
/dev/mtdblock3            2.9M      2.3M    584.0K  80% /overlay
# du -sh /mnt/sda1/root/overlay/
4.8M    /mnt/sda1/root/overlay/

Różnica jest, takę JFFS2 jest skompresowany

Po akcjach mam:

root@OpenWrt:/mnt/sda1/root# mkfs.jffs2 -L
mkfs.jffs2: error!:
      zlib priority:80 enabled
      lzma priority:70 enabled
     rtime priority:50 enabled

root@OpenWrt:/mnt/sda1/root# time mkfs.jffs2 -r overlay -X zlib -m size -e 64 -n -p -o out2.jffs2
real    1m 1.91s
user    0m 37.72s
sys     0m 2.09s

root@OpenWrt:/mnt/sda1/root# time mkfs.jffs2 -r overlay -X lzma -m size -e 64 -n -p -o out3.jffs2
real    1m 7.24s
user    0m 37.70s
sys     0m 2.15s
root@OpenWrt:/mnt/sda1/root# time mkfs.jffs2 -r overlay -X rtime -m size -e 64 -n -p -o out4.jffs2
real    1m 7.00s
user    0m 38.02s
sys     0m 1.78s


root@OpenWrt:/mnt/sda1/root# ls -l
-rwxrwxrwx    1 root     root       2097152 Oct 30 22:10 out2.jffs2
-rwxrwxrwx    1 root     root       2097152 Oct 30 22:12 out3.jffs2
-rwxrwxrwx    1 root     root       2097152 Oct 30 22:14 out4.jffs2
drwxrwxrwx    1 root     root           488 Oct 30 21:50 overlay

Hmmm, żadnej różnicy w wielkości pliku w zależności o metody kompresji.

root@OpenWrt:/mnt/sda1/root# time mkfs.jffs2 -r overlay -e 64 -n -p -o out5.jffs2
real    0m 36.05s
user    0m 3.88s
sys     0m 2.22s

root@OpenWrt:/mnt/sda1/root# ls -lh
-rwxrwxrwx    1 root     root        2.0M Oct 30 22:10 out2.jffs2
-rwxrwxrwx    1 root     root        2.0M Oct 30 22:12 out3.jffs2
-rwxrwxrwx    1 root     root        2.0M Oct 30 22:14 out4.jffs2
-rwxrwxrwx    1 root     root        2.3M Oct 30 22:16 out5.jffs2
drwxrwxrwx    1 root     root         488 Oct 30 21:50 overlay

Czyli jednak kompresja coś daje, w moim przypadku 0,3 MB smile



A jak zastąpić jednym z moich plików wynikowych mówj overlay (w teorii nie powinno się nic zminieć) - jest to możliwe z poziomu systemu, czy przez bootloadr, ewentualnie odmontować zminieć i podmontować - ale jak?

10

Odp: Zbrakło 300kB

Myślę, że jakiś potencjał w metodzie jest:

root@OpenWrt:/mnt/sda1/root# dd if=/dev/mtdblock3 of=oryginal
5888+0 records in
5888+0 records out

root@OpenWrt:/mnt/sda1/root# ls -lh
-rwxrwxrwx    1 root     root        2.9M Oct 30 22:41 oryginal
-rwxrwxrwx    1 root     root        2.0M Oct 30 22:10 out2.jffs2
-rwxrwxrwx    1 root     root        2.0M Oct 30 22:12 out3.jffs2
-rwxrwxrwx    1 root     root        2.0M Oct 30 22:14 out4.jffs2
-rwxrwxrwx    1 root     root        2.3M Oct 30 22:16 out5.jffs2
drwxrwxrwx    1 root     root         488 Oct 30 21:50 overlay

11

Odp: Zbrakło 300kB

Naprawdę nikt nie potrafi mi pomóc i wytłumaczyć jak wrzucić utworzony obraz overlay'a JFFS2 do /dev/mtdblock3 na działającym (lub nie) OpenWrt?

12

Odp: Zbrakło 300kB

Uruchom router w failsafe, nie podmontuje on wtedy overlay i wgraj mu to co zrobiłeś. O ile zadziała.

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

13

Odp: Zbrakło 300kB

A ja skromnie zapytam... po co takie kombinacje-akrobacje? Nie łatwiej skompilować obrazu bez niepotrzebnych rzeczy?

14

Odp: Zbrakło 300kB

@Cezary - rozumiem o co Ci chodzi, ale pozostaje sposób wgrania obrazu do /dev/mtdblock3 - będąc w trybie failsafe mam użyć dd, mtd czy też innego narzędzia?

@pepe2k - mogę, ale na lapku mam windorsa, dla mnie za dużo zabawy, a chcę tylko wgrać pakiet php5-cgi i brakuje mi kilkuset kB.  Wiem, że mogę to zrobić także extrootem, ale wybrałem tą metodą w ramach nauki smile

15

Odp: Zbrakło 300kB

oneiro napisał/a:

@pepe2k - mogę, ale na lapku mam windorsa, dla mnie za dużo zabawy, a chcę tylko wgrać pakiet php5-cgi i brakuje mi kilkuset kB.  Wiem, że mogę to zrobić także extrootem, ale wybrałem tą metodą w ramach nauki smile

A co to za router?

16

Odp: Zbrakło 300kB

A czym chcesz. dd lub mtd, choć pewnie i tak się zbuntuje ze wgrywasz coś mniejszego nic partycja ma.

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

17

Odp: Zbrakło 300kB

@pepe2k - TL-WR1043ND v1 (mogę powiedzieć, że od zakupu ~2 lata temu wg półkowych cen w MM jego wartość wzrosła, na półkach też v1 smile )

@Cezary - dlatego przed wgraniem dodam co trzeba, rozmiar się zwiększy, ale to już po weekndzie. Wybiorę dd, bo wydaje się łatwiejsze, z mtd nie miałem w zasadzie do czynienia. Swoją drogą dlaczego miałby się zbuntować? Zajrzałem do podręcznik i za bardzo nie rozuemim tych parametrów, pomożesz w wytłumaczeniu:

man mkfs.jffs2:

-p, --pad[=SIZE]
               Pad output to SIZE bytes with 0xFF.  If SIZE is  not  specified,
               the output is padded to the end of the final erase block.
    -s, --pagesize=SIZE
               Use page size SIZE.  The default is 4 KiB.   This  size  is  the
               maximum size of a data node.
        -c, --cleanmarker=SIZE
               Write ´CLEANMARKER´ nodes with the size  specified.  It  is  not
               normally appropriate to specify a size other than the default 12
               bytes.

        -n, --no-cleanmarkers
               Do not write ´CLEANMARKER´ nodes to the beginning of each  erase
               block.  This  option can be useful for creating JFFS2 images for
               use on NAND flash, and for creating images which are to be  used
               on a variety of hardware with differing eraseblock sizes.
        -l, --little-endian
               Create a little-endian JFFS2 image.  Default is to make an image
               with the same endianness as the host.

        -b, --big-endian
               Create  a  big-endian  JFFS2 image.  Default is to make an image
               with the same endianness as the host.

18

Odp: Zbrakło 300kB

Ale czego nie rozumiesz? Bo chyba nie chcesz przetłumaczonego manuala?

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

19

Odp: Zbrakło 300kB

W zasadzie opcji p, l i b.

20

Odp: Zbrakło 300kB

Uzupełnienie bloku do pełnej wartości (domyślnie 4k) samymi ff, budowanie obrazu dla procesorów w architekturze little-endian / big-endian. I teraz pytanie: wiesz oczywiście czy 1043 jest mips-el czy mips-be? smile

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

21

Odp: Zbrakło 300kB

nie wiem smile a gdzie to mogę sprawdzić?

22

Odp: Zbrakło 300kB

Np. tutaj: https://dev.openwrt.org/wiki/platforms

23

Odp: Zbrakło 300kB

Dzięki za link, czyli opcja "big" (cokolwiek ta architektura znaczy).

24

Odp: Zbrakło 300kB

oneiro napisał/a:

Dzięki za link, czyli opcja "big" (cokolwiek ta architektura znaczy).

Cóż za ignorancja i lenistwo... http://pl.wikipedia.org/wiki/Kolejno%C5 … ajt%C3%B3w

25

Odp: Zbrakło 300kB

Mam Huawei E960, ma tylko 4MB flash i działa pod Openwrt, tyle że by działał kernel musi być spakowany gzip'em.
Różnica pomiędzy gzip i lzma to właśnie 300kB. Z Gargoyle właściwie przy kompilacji nic się nie da wyrzucić i byłem,
gdzie byłem, czyli w D.. Teraz pytanie: gdzie w plikach Makefile Gargoyle jest mkfs.jffs2 , coby opcje (kompresji) zmienić?