Pasa 0 2 сентября, 2009 Опубликовано 2 сентября, 2009 · Жалоба Прошу помощи, так как практически не знаком с линуксом а на других форумах народ молчит категорически. Сгенерил ядро и rootfs для AT91SAM9260. Прошил в датафлэш Bootstrap и Uboot. С помощью Uboot гружу по сети ядро и rootfs. Все загружается и стартует. Вся эта кухня крутится в озу.Стоит задача хранить логи. Остановился на jffs2 для датафлэш. Сгенерил пробную jffs2 и упаковал в файл-имидж. На RedHat попробовал: mkdir mnt modprobe mtdram total_size=24576 erase_size=128 modprobe mtdblock dd if=image.jffs2 of=/dev/mtdblock0 mount -t jffs2 /dev/mtdblock0 mnt Все работает. Вопрос такой: если я прошью файл-имидж(image.jffs2) в датафлэш по конкретному адресу, то как объяснить ядру, что мол там-то и там-то находится jffs2 и нужно ее подмонтировать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mdmitry 0 2 сентября, 2009 Опубликовано 2 сентября, 2009 · Жалоба Посмотрите примеры rootfs, идущие к evaluation kit AT91SAM9260-EK (Они есть на сайте atmel.). Там /tmp на RAMDISK. Скорость записи в память небольшая, проблем не будет? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sasamy 0 2 сентября, 2009 Опубликовано 2 сентября, 2009 (изменено) · Жалоба Вопрос такой: если я прошью файл-имидж(image.jffs2) в датафлэш по конкретному адресу, то как объяснить ядру, что мол там-то и там-то находится jffs2 и нужно ее подмонтировать? Нужно указать геометрию разделов ядру и работать как с обычными дисками. Самое простое - через параметры загрузки ядру указать, у меня например так mtdparts=spi0.0-AT45DB321x:0x1080(mbs),-(kernel). Это кстати давно обсуждалось на форуме где все молчат :) и если использовать в качестве корневой фс раздел то нужно блочное устройство и указывать и тип фс, например root=/dev/mtdblock1 rootfstype=jffs2 если для логов использовать - то можно просто подмонтировать нужный раздел в нужную директорию, еще сейчас многие используют различные варианты unionfs которая позволяет сделать прозрачной запись на две фс одна из которых в ro а друга в rw смонтирована. Изменено 2 сентября, 2009 пользователем sasamy Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Pasa 0 2 сентября, 2009 Опубликовано 2 сентября, 2009 · Жалоба Спасибо за подсказку... Посмотрите примеры rootfs, идущие к evaluation kit AT91SAM9260-EK (Они есть на сайте atmel.). Там /tmp на RAMDISK. Скорость записи в память небольшая, проблем не будет? К скорости записи требований нет... http://www.atmel.com/dyn/resources/prod_do...CDROM_image.zip - примеры rootfs тут искать...я правильно понял? Нужно указать геометрию разделов ядру и работать как с обычными дисками. Самое простое - через параметры загрузки ядру указать, у меня например так mtdparts=spi0.0-AT45DB321x:0x1080(mbs),-(kernel). Это кстати давно обсуждалось на форуме где все молчат :) и если использовать в качестве корневой фс раздел то нужно блочное устройство и указывать и тип фс, например root=/dev/mtdblock1 rootfstype=jffs2 если для логов использовать - то можно просто подмонтировать нужный раздел в нужную директорию, еще сейчас многие используют различные варианты unionfs которая позволяет сделать прозрачной запись на две фс одна из которых в ro а друга в rw смонтирована. Планируется использовать только для логов. А rootfs пусть остается в озу... Я просто не знаю как объяснить ядру все это. Где лежат эти параметры загрузки ядра, что каждый из них означает, как их можно видоизменить....ищу инфу и не могу найти описания всей этой кухни...Может плохо или не там ищу...если можно - киньте ссылку....буду очень благодарен...уж очень тяжко как-то идет освоение линукса... :smile3046: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sasamy 0 2 сентября, 2009 Опубликовано 2 сентября, 2009 · Жалоба Планируется использовать только для логов. А rootfs пусть остается в озу... Я просто не знаю как объяснить ядру все это. # pwd /home/sasa/sam9work/linux-2.6.30.4 # grep "*" -m 14 drivers/mtd/cmdlinepart.c /* * Read flash partition table from command line * * Copyright 2002 SYSGO Real-Time Solutions GmbH * * The format for the command line is as follows: * * mtdparts=<mtddef>[;<mtddef] * <mtddef> := <mtd-id>:<partdef>[,<partdef>] * where <mtd-id> is the name from the "cat /proc/mtd" command * <partdef> := <size>[@offset][<name>][ro][lk] * <mtd-id> := unique name used in mapping driver/device (mtd->name) * <size> := standard linux memsize OR "-" to denote all remaining space * <name> := '(' NAME ')' что касается параметров ядра в конфиге # grep "MTD" .config | grep -v "is not set" CONFIG_MTD=y CONFIG_MTD_PARTITIONS=y CONFIG_MTD_CMDLINE_PARTS=y CONFIG_MTD_CHAR=y CONFIG_MTD_BLKDEVS=y CONFIG_MTD_BLOCK=y 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 # Self-contained MTD device drivers CONFIG_MTD_DATAFLASH=y CONFIG_MTD_DATAFLASH_WRITE_VERIFY=y # grep "JFFS2" .config | grep -v "is not set" CONFIG_JFFS2_FS=y CONFIG_JFFS2_FS_DEBUG=0 CONFIG_JFFS2_FS_WRITEBUFFER=y CONFIG_JFFS2_ZLIB=y CONFIG_JFFS2_RTIME=y Для примера # grep "CONFIG_CMDLINE" .config CONFIG_CMDLINE="mem=32M rootwait root=/dev/mmcblk0p1 mtdparts=spi0.0-AT45DB321x:0x10800@0x40f800(log)" это означает что я хочу увидеть раздел в 64 кб (0х10800 / 0x420 = 0x40 = 64 - обращаю внимание - блоки в dataflash 1056 = 0x420 байт) в самом конце моей dataflash 0x420000 - 0x10800 = 0x40f800, все что до этого адреса меня не интересует - там например uboot и ядро. Корневая фс у меня на sd карте - мне так удобней :) Грузимся U-Boot> tftpboot 21000000 zlinux macb0: link up, 100Mbps full-duplex (lpa: 0xffff) Using macb0 device TFTP from server 192.168.0.2; our IP address is 192.168.0.136 Filename 'zlinux'. Load address: 0x21000000 Loading: ################################################################# ############################## done Bytes transferred = 1382892 (1519ec hex) U-Boot> bootm 21000000 ## Booting kernel from Legacy Image at 21000000 ... Image Name: linux-2.6 Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 1382828 Bytes = 1.3 MB Load Address: 20008000 Entry Point: 20008000 Verifying Checksum ... OK Loading Kernel Image ... OK OK Starting kernel ... .... дальше не все интересно - буду писать только то на что обратить внимание Kernel command line: mem=32M rootwait root=/dev/mmcblk0p1 mtdparts=spi0.0-AT45DB321x:0x10800@0x40f800(log) отлично - командная строка на месте - никто ее не поменял (например uboot) atmel_spi atmel_spi.0: Atmel SPI Controller at 0xfffc8000 (irq 12) mtd_dataflash spi0.0: AT45DB321x (4224 KBytes) pagesize 528 bytes (OTP) 1 cmdlinepart partitions found on MTD device spi0.0-AT45DB321x Creating 1 MTD partitions on "spi0.0-AT45DB321x": 0x00000040f800-0x000000420000 : "log" вот и наш раздел. Логинимся, смотрим где наш раздел в устройсвах # ls -l /dev | grep mtd crw-rw---- 1 root root 90, 0 Dec 31 17:00 mtd0 crw-rw---- 1 root root 90, 1 Dec 31 17:00 mtd0ro brw-rw---- 1 root root 31, 0 Dec 31 17:00 mtdblock0 На месте, у меня файлы устройств создаются автоматом потому что использую mdev из состава busybox. Создались два char device - один rw другой ro и блочное устройство. Создаем пустую фс # ls -l /tmp # # echo "sasa" > /tmp/sasa # ls -l /tmp -rw-r--r-- 1 root root 5 Dec 31 17:01 sasa # mkfs.jffs2 -d /tmp -l -p -e 0x2100 -v -n -o /root/img.jffs2 / f 0644 5 ( 73) 0:0 sasa Compression mode: priority Compressors: none compr: 1 blocks (5) decompr: 0 blocks lzo (prio:80) - compr: 0 blocks (0/0) decompr: 0 blocks zlib (prio:60) + compr: 0 blocks (0/0) decompr: 0 blocks rtime (prio:50) + compr: 0 blocks (0/0) decompr: 0 blocks Compression errors: 0 # cp /root/img.jffs2 /dev/mtd0 # # ls -l /mnt # mount -t jffs2 /dev/mtdblock0 /mnt JFFS2 write-buffering enabled buffer (528) erasesize (8448) # ls -l /mnt -rw-r--r-- 1 root root 5 Dec 31 17:04 sasa # cat /mnt/sasa sasa # echo "pasa" > /mnt/pasa # ls -l /mnt -rw-r--r-- 1 root root 5 Dec 31 17:07 pasa -rw-r--r-- 1 root root 5 Dec 31 17:04 sasa # umount /mnt # mount -t jffs2 /dev/mtdblock0 /mnt JFFS2 write-buffering enabled buffer (528) erasesize (8448) Empty flash at 0x00000078 ends at 0x00000210 # ls -l /mnt -rw-r--r-- 1 root root 5 Dec 31 17:07 pasa -rw-r--r-- 1 root root 5 Dec 31 17:04 sasa # # df -h Filesystem Size Used Available Use% Mounted on /dev/root 3.7G 311.4M 3.2G 9% / mdev 14.5M 0 14.5M 0% /dev /dev/mtdblock0 64.0K 24.0K 40.0K 38% /mnt В какой из загрузочных скриптов добавить mount -t jffs2 /dev/mtdblock0 /mnt думаю сами разберетесь :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Pasa 0 3 сентября, 2009 Опубликовано 3 сентября, 2009 · Жалоба Спасибо огромное! Утром начну штудировать! Хоть не все сразу понятно, но надеюсь разобраться. Еще раз спасибо за такой подробный ответ! :a14: :08: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Pasa 0 28 сентября, 2009 Опубликовано 28 сентября, 2009 (изменено) · Жалоба Попробовал....ничего не получилось...не создается партиция на датафлэш.... Чувствую, что все решается очень просто....Не нужно корневая фс....нужно просто на датафлэш создать партицию и подмонтировать ее как диск... Может кто новичку в линуксе по шагам подробно расписать как это сделать? :( конфиг ядра брал как указано.... Изменено 28 сентября, 2009 пользователем Pasa Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mdmitry 0 29 сентября, 2009 Опубликовано 29 сентября, 2009 · Жалоба Попробовал....ничего не получилось...не создается партиция на датафлэш.... Чувствую, что все решается очень просто....Не нужно корневая фс....нужно просто на датафлэш создать партицию и подмонтировать ее как диск... Может кто новичку в линуксе по шагам подробно расписать как это сделать? :( конфиг ядра брал как указано.... В dataflash раздел не создадите. Почитайте как сделать раздел с JFFS, как его поддерживать (MTD) и читать-писать. Далее как его паковать. Есть скрипты в интернете для монтирования образов.Мне пришлось из любопытства разворачивать образ dataflash с JFFS. Хотел посмотреть rootfs от Atmel и Angstrom Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Pasa 0 29 сентября, 2009 Опубликовано 29 сентября, 2009 · Жалоба Пробовал два варианта: В ядре: CONFIG_CMDLINE="root=/dev/ram0 rw initrd=0x23100000,0x500000 console=ttyS0,115200 mem=64M mtdparts=spi0.0-AT45DB321D:0x10800@0x100000(log)" (как было подсказано выше - создаем партицию в датафлэш по адресу 0x100000) SAM-BAой предварительно прошиваю img.jffs2(файл-образ ) в датафлэш по адресу 0x100000 После загрузки: mknod mtdblock0 b 31 0 (появляется mtdblock0) mount -t jffs2 /dev/mtdblock0 /mnt (получаемв ответ Invalid argument) Второй вариант: В ядре: CONFIG_CMDLINE="root=/dev/ram0 rw initrd=0x23100000,0x500000 console=ttyS0,115200 mem=64M mtdparts=spi0.0-AT45DB321D:0x10800@0x100000(log)" После загрузки: mknod mtdblock0 b 31 0 (появляется mtdblock0) cp /home/img.jffs2 /dev/mtdblock0 (img.jffs2 грузится вместе с корневой фс, лежит в папке home) mount -t jffs2 /dev/mtdblock0 /mnt (получаемв ответ Invalid argument) Что делаю не так? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sasamy 0 29 сентября, 2009 Опубликовано 29 сентября, 2009 (изменено) · Жалоба Что делаю не так? Не видится dataflash потому что я забыл сказать что нужно отключить в ядре MMC_AT91 или поправить файл board-sam9260ek.c на предмет таблицы spi-устройств, например у меня так /* * SPI devices. */ static struct spi_board_info ek_spi_devices[] = { { /* DataFlash chip */ .modalias = "mtd_dataflash", .chip_select = 0, .max_speed_hz = 15 * 1000 * 1000, .bus_num = 0, }, }; потому что в ядреном варианте есть такой момент /* * SPI devices. */ static struct spi_board_info ek_spi_devices[] = { #if !defined(CONFIG_MMC_AT91) ..... и наша dataflash в таблицу spi-устройств не попадает. Почему в "стандартном" ваарианте mmc и dataflash взаимоисключающие устройства я не знаю, после правки ничего подозрительного не наблюдал. Кпроме этого вы все же проигнорировали мои предупреждения:) 1 Размер блока в dataflash 1056 байт - размер раздела должен быть кратен ему, иначе он будет доступен только в режиме чтения (0x100000 не делится нацело на 0x420) 2 Вместо блочного устройства при копировании cp /home/img.jffs2 /dev/mtdblock0 нужно использовать символьное устройство /dev/mtd0, то что у вас прошло копирование без ошибок говорит лишь о том что реально раздел не существует и создание файла устройств через mknod ничего не решает и при копировании он был замещен файлом img.jffs2. PS Не уверен все же что нужно делать размер раздела кратным 1056 байт, возможно достаточно кратным pagesize 528 bytes я делал кратным 1056, что автоматически означает и кратность 528, так что если это критично - можно попробовать. Изменено 29 сентября, 2009 пользователем sasamy Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Pasa 0 30 сентября, 2009 Опубликовано 30 сентября, 2009 · Жалоба to sasamy !!!!!! ВСЕ!!!!! УРААААААААААААААААА!!!!! ЗАРАБОТАЛО!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ОГРОМНОЕ!!!! ОГРОМНОЕ!!!! ОГРОМНОЕ!!! СПАСИБО!!!! ВСЕ МОНТИРУЕТСЯ!!!! ПИШЕТСЯ!!!!! СТИРАЕТСЯ!!!! КОНЕЦ МУЧЕНИЯМ!!!! Извините за эмоции....не могу сдержаться...уж очень мне этот результат был нужен и важен. Все...платформа есть...можно спокойно начать изучать программирование для линукса и писать само приложение. Главное что лопату смастерил с Вашей помощью!!! А канаву копать - теперь все от меня зависит. Главное успеть к сроку....а то все время отпущенное на программирование ушло на создание инструмента, а не на сам продукт. Хотя должен признать, что время не пропало впустую. Полгода назад я впервые "взял в руки" линукс и смотрел на эту штуку не понимая с какой стороны подступиться....был не просто полный ноль....а скажем даже "глубокий минус". Надеюсь со временем смогу гораздо глубже разобраться во всей этой кухне. Еще раз ОГРОМНОЕ СПАСИБО!!! На дворе светает...надо поспать....Днем проведу эксперименты более полно, и отпишусь здесь. Есть кое-какие вопросы....но это чуть позже. Главное - лед тронулся!!! Еще раз СПАСИБО!!! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Pasa 0 7 октября, 2009 Опубликовано 7 октября, 2009 (изменено) · Жалоба Некоторые итоги.... Все работает если делаю вот так: в ядре поправил как указано выше(в структуре для SPI оставил только DataFlash и убрал условную компиляцию) CONFIG_CMDLINE="root=/dev/ram0 rw initrd=0x23100000,0x500000 console=ttyS0,115200 mem=64M mtdparts=spi0.0-AT45DB321D:0x305700@0x108000(log)" После загрузки ядра и rootfs уже в консоли: cp /home/image.jffs2 /dev/mtd0 mount -t jffs2 /dev/mtdblock0 /mmm (папку /mmm естественно сделал заранее) В ответ: JFFS2 write-buffering enabled buffer (528) erasesize (8448) И все работает на ура.... Но Иногда, не могу определить в каких случаях, после повторения этих же операций в такой же последовательности на чинаются чудеса. # cp /home/image.jffs2 /dev/mtd0 # mount -t jffs2 /dev/mtdblock0 /mmm JFFS2 write-buffering enabled buffer (528) erasesize (8448) jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00008400: 0x0012 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00008404: 0xf014 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00008408: 0xf014 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0000840c: 0xf014 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00008410: 0xf014 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00008414: 0xf014 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00008418: 0xf014 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0000841c: 0xf014 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00008420: 0x00a0 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00008424: 0x0100 instead Further such events for this erase block will not be printed jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0000a500: 0x4a44 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0000a504: 0xe3f8 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0000a508: 0x4a40 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0000a50c: 0xe410 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0000a510: 0x6f64 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0000a514: 0xe42c instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0000a518: 0xe43c instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0000a51c: 0x01e8 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0000a520: 0x3780 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0000a524: 0xe454 instead Further such events for this erase block will not be printed jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0000c600: 0x2000 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0000c604: 0x3022 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0000c608: 0x3008 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0000c60c: 0x3000 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0000c610: 0x2000 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0000c614: 0x200c instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0000c61c: 0xd004 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0000c620: 0x4ef0 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0000c624: 0x57a7 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0000c62c: 0xd004 instead Further such events for this erase block will not be printed jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0000e700: 0xa001 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0000e704: 0x0006 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0000e708: 0xb001 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0000e70c: 0xb001 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0000e710: 0x1004 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0000e714: 0xe00f instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0000e718: 0xf030 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0000e71c: 0x300b instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0000e720: 0x0023 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0000e724: 0x0006 instead Further such events for this erase block will not be printed jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00010800: 0x1d5b instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00010808: 0x000c instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0001080c: 0x0007 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00010810: 0x0390 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00010814: 0x1b66 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00010818: 0x00a4 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0001081c: 0x1cbf instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00010820: 0x200c instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00010824: 0x700b instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00010828: 0x20a4 instead Further such events for this erase block will not be printed jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00012904: 0x0310 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00012908: 0x8010 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0001290c: 0x4ef0 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00012910: 0xa001 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00012914: 0x9002 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00012918: 0x5003 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0001291c: 0x7000 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00012920: 0x27fc instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00012924: 0x41b4 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00012928: 0xb068 instead Further such events for this erase block will not be printed Old JFFS2 bitmask found at 0x000146a4 You cannot use older JFFS2 filesystems with newer kernels jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00014a00: 0x3010 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00014a04: 0x4006 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00014a08: 0x7223 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00014a0c: 0x5007 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00014a10: 0x001d instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00014a14: 0xc00d instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00014a18: 0x1010 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00014a1c: 0x200f instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00014a20: 0x300e instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00014a24: 0xc000 instead Further such events for this erase block will not be printed jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00016b00: 0x4ef0 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00016b04: 0x5000 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00016b08: 0x0e11 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00016b0c: 0x0002 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00016b10: 0x1005 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00016b14: 0xffcd instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00016b18: 0x7000 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00016b1c: 0x6005 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00016b20: 0xb007 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00016b24: 0x9009 instead Further such events for this erase block will not be printed jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00018c00: 0x7004 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00018c04: 0x6004 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00018c08: 0x5000 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00018c0c: 0xffef instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00018c10: 0x3040 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00018c18: 0x2004 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00018c1c: 0x3008 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00018c20: 0x2014 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00018c24: 0x2008 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00018c28: 0x2001 instead Further such events for this erase block will not be printed jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0001ad04: 0xc001 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0001ad08: 0x1068 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0001ad0c: 0x000c instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0001ad10: 0x1102 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0001ad14: 0xd014 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0001ad18: 0x1402 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0001ad1c: 0xc0ff instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0001ad20: 0xe000 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0001ad24: 0x1d03 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0001ad28: 0xc004 instead Further such events for this erase block will not be printed jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0001ce00: 0x3000 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0001ce04: 0x2000 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0001ce08: 0x1001 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0001ce0c: 0x2030 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0001ce10: 0x30ff instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0001ce14: 0x0009 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0001ce18: 0xfff6 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0001ce1c: 0xf004 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0001ce20: 0x4ef0 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0001ce24: 0xd054 instead Further such events for this erase block will not be printed jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0001ef00: 0x700b instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0001ef04: 0x7003 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0001ef08: 0x1000 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0001ef0c: 0x0019 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0001ef10: 0x2028 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0001ef18: 0x2001 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0001ef1c: 0x0008 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0001ef20: 0x3001 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0001ef24: 0x9028 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0001ef28: 0xba13 instead Further such events for this erase block will not be printed jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00021000: 0x206c instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00021004: 0x6000 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00021008: 0x6402 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0002100c: 0x41ac instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00021014: 0x500c instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00021018: 0xc000 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0002101c: 0x5000 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00021020: 0x0002 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00021024: 0x500c instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00021028: 0xcdb6 instead Further such events for this erase block will not be printed jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00023100: 0x0002 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00023104: 0x3010 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00023108: 0x3000 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00023114: 0xdc02 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00023118: 0x80f0 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0002311c: 0x2404 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00023120: 0x2410 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00023124: 0x241c instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00023128: 0x4070 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0002312c: 0x4108 instead Further such events for this erase block will not be printed jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00025200: 0x201c instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00025204: 0x100c instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00025208: 0x3000 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0002520c: 0x0004 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00025210: 0x3000 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00025214: 0x3001 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0002521c: 0x300c instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00025220: 0x9001 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00025224: 0xa008 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00025228: 0x002e instead Further such events for this erase block will not be printed Empty flash at 0x00026244 ends at 0x00026248 Empty flash at 0x00026258 ends at 0x00026260 Empty flash at 0x00026268 ends at 0x00026270 jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00027300: 0x622d instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00027308: 0x414e instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0002730c: 0x3120 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00027310: 0x2042 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00027314: 0x5633 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00027318: 0x622d instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00027320: 0x414e instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00027324: 0x3120 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00027328: 0x2042 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0002732c: 0x5638 instead Further such events for this erase block will not be printed jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00029400: 0x4920 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00029404: 0x7265 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00029408: 0x206c instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0002940c: 0x736d instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00029410: 0x7548 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00029414: 0x206e instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00029418: 0x6574 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0002941c: 0x6361 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00029420: 0x5320 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00029424: 0x6c63 instead Further such events for this erase block will not be printed Empty flash at 0x0002b230 ends at 0x0002b238 Empty flash at 0x0002b23c ends at 0x0002b240 Empty flash at 0x0002b278 ends at 0x0002b2bc jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0002b514: 0xebcc instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0002b518: 0x006e instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0002b51c: 0x0100 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0002b520: 0x0001 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0002b524: 0x1000 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0002b52c: 0xebe0 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0002b530: 0x0064 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0002b534: 0x0100 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0002b538: 0x0002 instead jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0002b53c: 0x1000 instead Further such events for this erase block will not be printed Empty flash at 0x0002bbf0 ends at 0x0002bbf4 Empty flash at 0x0002c010 ends at 0x0002c014 # Если после этого передернуть питание, то оказывается, что Bootstrap, Uboot стерты....и мы выскакиваем в ROMboot Не могу понять в чем дело.... Ну вот....опять заработало....мда....тут есть какая-то тайна.... Продолжим исследования... Изменено 7 октября, 2009 пользователем Pasa Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sasamy 0 10 октября, 2009 Опубликовано 10 октября, 2009 (изменено) · Жалоба Некоторые итоги.... Иногда, не могу определить в каких случаях, после повторения этих же операций в такой же последовательности на чинаются чудеса. # cp /home/image.jffs2 /dev/mtd0 Имхо - это из-за кривого драйвера atmel_spi, лучше не использовать для записи cp, вместо этого попробовать flashcp из состава mtd-utils. #flashcp -v /home/image.jffs2 /dev/mtd0 Изменено 10 октября, 2009 пользователем sasamy Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
1891ВМ12Я 0 11 октября, 2009 Опубликовано 11 октября, 2009 · Жалоба Уважаемый господин Pasa! Нельзя ли длинные логи размещать в виде ссылки на http://pastebin.com или подобные ресурсы? ;) Есть вопрос, навеянный этой темой, возможно пригодится многим... Можно ли сделать корневую файловую систему доступной только для чтения, но чтобы если какие-либо программы захотели что-то записать в корневую - они писали только в ОЗУ? т.е. чтобы не маралась флэшка, и в то же время программы, которым приспичит, могли записать что-то как бы в КФС, но изменения бы пропали после перезагрузки? "различные варианты unionfs" - это то что надо, да? Просто помнится, есть такие программы, которые что-то пишут и отказываются корректно работать если у них это не получается... У кого-нибудь есть опыт/статистика по подобным программам? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sasamy 0 11 октября, 2009 Опубликовано 11 октября, 2009 · Жалоба Можно ли сделать корневую файловую систему доступной только для чтения, но чтобы если какие-либо программы захотели что-то записать в корневую - они писали только в ОЗУ? т.е. чтобы не маралась флэшка, и в то же время программы, которым приспичит, могли записать что-то как бы в КФС, но изменения бы пропали после перезагрузки? "различные варианты unionfs" - это то что надо, да? Да запросто :) помоему на нетбуках с linux так и делают чтобы не насиловать ssd диски. Загружают initrd/initramfs, там монтируют основной раздел в read only, создают в озу tmpfs с правами read-write, объединяют их при помощи unionfs и делают pivot_root. При этом запись прозрачно производится на носитель который смонтирован с правами на запись (в данном случае ram). Помоему сейчас более популярна aufs (Another Union File System). Сам не пользовался но думаю никаких проблем не будет найти пошаговое руководство в гугле. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться