Jump to content

jffs2.img czym to ugryźć?


Guest hosunio

Recommended Posts

Może zamontować pod linuxem do mtd?

 

Załadować moduły:

modprobe jffs2

modprobe mtdram total_size=59024

modprobe mtdchar

modprobe mtdblock

 

Potem via dd wpisać do mtd0

dd if=plik_jffs2 of=/dev/mtd0

 

Na koniec zamontować:

mount -t jffs2 /dev/mtdblock0 /mount_point

 

Link to comment
Share on other sites

Guest hosunio

Dzięki @matzg, z pluginów to raczej nici ale można by z tego image zapożyczyć obsługę kart wifi z RT2870.

Pewnie jeszcze parę rzeczy by się znalazło.
Link to comment
Share on other sites

  • 5 months later...

Stary wątek, ale problem podobny, więc może jednak się podepnę...

 

Ogólnie, to chciałbym wypakować pliki z rootfs.img z Gratelii. Można załadować do NAND, odpalić z innego źródła, podmontować NAND w systemie i skopiować. Ale wolałbym uniknąć uniknąć tego pierwszego.

 

Procedura wydawało mi się, że jest prosta, znaleziona wielokrotnie w sieci i bardzo podobna do tej podanej przez tuxa w drugim poście tego wątku:

mknod /dev/mtdblock0 b 31 0
modprobe mtdblock
modprobe mtdram total_size=65536 erase_size=256
modprobe jffs2
dd if=rootfs.img of=/tmp/mtdblock0
mkdir /media/gratelia
mount -t jffs2 /dev/mtdblock0 /media/gratelia

 

Wszystko niby działa, ale próba podmontowania kończy się komunikatem:

mount: montowanie /dev/mtdblock0 w /media/gratelia nie powiodło się: Operacja nie obsługiwana

 

Jakieś sugestie?

 

Link to comment
Share on other sites

Nie wyważałem otwartych drzwi, aczkolwiek myślę, że alternatywny sposób:

 

#!/bin/bash
mknod /tmp/mtdblock0 b 31 0
losetup /dev/loop0 /home/nbox/nand/rootfs.img
modprobe mtdblock
modprobe block2mtd
echo "/dev/loop0,128KiB" > /sys/module/block2mtd/parameters/block2mtd
modprobe jffs2
mount -t jffs2 /tmp/mtdblock0 /home/nbox/rootfs

Link to comment
Share on other sites

Fedora nie ma w standardzie.

 

Dokompilowałem już wcześniej wszystko zgodnie z instrukcją podaną przez info pod tym linkiem, poza CONFIG_MTD_PARITIONS, bo nie widzę tego w .config.

 

W /var/log/messages mam mnóstwo linii podobnych do tej:

 

Sep 24 09:19:10 compaq-fedora kernel: [ 2971.823745] jffs2: Empty flash at 0x027a7ffc ends at 0x027a8000
Sep 24 09:19:10 compaq-fedora kernel: [ 2971.823746] jffs2: CLEANMARKER node found at 0x027a8000, not first node in block (0x027a0000)

 

To co na razie udało mi się znaleźć w tym temacie, to że chodzi o strukturę NANDa w porównaniu z tą w pliku img. Że niby nie są zgodne. W moim przypadku to emulowany NAND i nie wiem jak sprawdzić/zmienić jego strukturę i jaka powinna być.

Link to comment
Share on other sites

Mogę się mylić, a co dalej to niechciałbym Cię wprowadzić w błąd, ale to wygląda mi to na różny rozmiar bloku obrazu niż rzeczywisty rozmiar bloku w systemie.

Zwróć uwagę na na ten wpis: CLEANMARKER node found at 0x027a8000, not first node in block (0x027a0000).

Może należy odczekać dłuższy czas na zamontowanie?

Link to comment
Share on other sites

Dzięki Panowie za pomoc ... i sorry za zawracania głowy. W końcu działa. A cały problem był zdaje się zawarty w jednej linijce w logu:

 

Sep 23 13:27:52 compaq-fedora kernel: [  699.786546] SELinux: (dev jffs2, type jffs2) has no xattr support

 

Sam nie wiem, czemu jeszcze nie wyłączyłem SELinuksa...

 

@tux: total_size wystarczy, że jest większe niż rozmiar rootfs.img (sprawdzałem różne wartości), erase_size raczej powinno być 128 - takie jest domyślne, więc przestałem ustawiać.

 

Ponieważ działa, to może dla innych (znaczy się: dla siebie, jak znowu zapomnę jak to zrobiłem :P) mała instrukcja. Na Fedorze bez kompilacji jajka się nie obejdzie. Jeżeli dojdę do tego jak to zrobić szybciej to napiszę. Opcje jakie powinny być przy konfiguracji kernela, pewnie z nadmiarem ale już nie mam nerwów sprawdzać, co da się wyłączyć:

 

Aktualizacja: Opcje poniżej są niewystarczające. Działa kiedy jajko jest skompilowane z wszystkim co jest w zakładkach związanych z MTD i JFFS2 (jak w Ubuntu na starcie). Jeżeli uda mi się ustalić czego brakuje, to dopiszę...

 

- MTD

 

CONFIG_MTD=m
CONFIG_MTD_CMDLINE_PARTS=m
CONFIG_MTD_BLKDEVS=m
CONFIG_MTD_BLOCK=m
CONFIG_MTD_MAP_BANK_WIDTH_1=y
CONFIG_MTD_MAP_BANK_WIDTH_2=y
CONFIG_MTD_MAP_BANK_WIDTH_4=y
CONFIG_MTD_CFI_I1=y
CONFIG_MTD_CFI_I2=y
CONFIG_MTD_MTDRAM=m
CONFIG_MTDRAM_TOTAL_SIZE=4096
CONFIG_MTDRAM_ERASE_SIZE=128
CONFIG_MTD_BLOCK2MTD=m
CONFIG_MTD_NAND_ECC=m
CONFIG_MTD_NAND_ECC_SMC=y
CONFIG_MTD_NAND=m
CONFIG_MTD_NAND_BCH=m
CONFIG_MTD_NAND_ECC_BCH=y
CONFIG_MTD_NAND_IDS=m
CONFIG_MTD_NAND_NANDSIM=m
CONFIG_MTD_NAND_PLATFORM=m
CONFIG_MTD_UBI=m
CONFIG_MTD_UBI_WL_THRESHOLD=4096
CONFIG_MTD_UBI_BEB_LIMIT=20

 

- JFFS2

 

CONFIG_JFFS2_FS=m
CONFIG_JFFS2_FS_DEBUG=0
CONFIG_JFFS2_FS_WRITEBUFFER=y
CONFIG_JFFS2_FS_WBUF_VERIFY=y
CONFIG_JFFS2_SUMMARY=y
CONFIG_JFFS2_FS_XATTR=y
CONFIG_JFFS2_FS_POSIX_ACL=y
CONFIG_JFFS2_FS_SECURITY=y
CONFIG_JFFS2_COMPRESSION_OPTIONS=y
CONFIG_JFFS2_ZLIB=y
CONFIG_JFFS2_LZO=y
CONFIG_JFFS2_CMODE_NONE=y

 

Jak widać jest tam też CONFIG_JFFS2_FS_XATTR=y...

 

Potem jak wszyscy wiedzą: make all, make install modules_install, reboot. A potem:

 

- ładujemy obsługę urządzeń Memory Technology Device (MTD)

# modprobe -v mtdblock

- emulujemy naszego NANDa/NORa w pamięci, co powoduje powstanie 3 urządzeń w systemie

# modprobe -v mtdram total_size=65536
# ls /dev | grep mtd
mtd0
mtd0ro
mtdblock0
# cat /proc/mtd
dev:    size   erasesize  name
mtd0: 04000000 00020000 "mtdram test device"

- ładujemy obsługę systemu plików JFFS2

# modprobe -v jffs2

- zostało załadować obraz do emulowanej pamięci flash

# dd if=rootfs.img of=/dev/mtd0

- i podmontować

# mount -t jffs2 /dev/mtdblock0 /media/gratelia

 

Jak zainstalujemy mtd-utils to ładowanie do flasha można zrobić również tak:

# flash_erase /dev/mtd0 0 0
# nandwrite /dev/mtd0 rootfs.img

 

PS. A potem aktualizujemy Fedorę łącznie z kernelem i od nowa :P

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...