Jffs2 чем открывать в окнах

Обновлено: 21.11.2024

В большинстве встроенных устройств в качестве носителя данных используется флэш-память. Кроме того, размер и время загрузки очень важны для многих продуктов бытовой электроники. Поэтому часто используются специальные файловые системы с различными функциями, такими как улучшенное сжатие или возможность выполнять файлы непосредственно из флэш-памяти.

Обратите внимание, что флэш-память может управляться системой Memory Technology Devices (MTD) Linux. Дополнительную информацию см. в FAQ по MTD/Flash. Большинство упомянутых здесь файловых систем построены поверх системы MTD.

Система несортированных блочных образов (UBI) в ядре Linux управляет несколькими логическими томами на одном флэш-устройстве. Он обеспечивает отображение логических блоков на блоки физического стирания через уровень MTD. UBI обеспечивает гибкую концепцию разделения, которая позволяет выравнивать износ всего флэш-устройства.

Для получения дополнительной информации см. страницу UBI или UBI FAX and Howto.

Разметка

Для ядра требуется по крайней мере одна "корневая" файловая система, на которую могут быть смонтированы другие файловые системы. Во невстроенных системах часто используется только одна файловая система. Однако, чтобы оптимизировать ограниченные ресурсы (флеш-память, ОЗУ, скорость процессора, время загрузки), многие встраиваемые системы разбивают файловую систему на отдельные части и помещают каждую часть в отдельный раздел (часто в разные виды хранилища).

Например, разработчик может пожелать взять все доступные только для чтения файлы системы и поместить их в сжатую файловую систему только для чтения во флэш-памяти. Это займет наименьшее количество места на флэш-памяти за счет некоторой производительности во время чтения (для распаковки).

В другой конфигурации исполняемые файлы могут храниться на флэш-памяти в несжатом виде, чтобы их можно было запускать на месте, что экономит оперативную память и время загрузки (с возможным небольшим снижением производительности).

Для записываемых данных, если данные не должны быть постоянными, иногда используется электронный диск. В зависимости от потребностей в производительности и ограничений ОЗУ данные файла могут быть сжаты или нет.

Не существует единого стандарта чередования частей файловой системы, доступных только для чтения и для чтения и записи. Это сильно зависит от набора встроенных приложений, используемых в проекте.

eMMC и UFS

По мере увеличения объема флэш-памяти множество факторов вызвало переход от использования необработанной памяти NAND к упакованной флэш-памяти NAND с блочной адресацией для встраиваемых устройств. Это чипы, которые содержат встроенное программное обеспечение для приема запросов блочного ввода-вывода, подобных вращающимся носителям данных (старые жесткие диски), и выполнения их. Это включает в себя сопоставление запросов на чтение и запись с областями флэш-памяти NAND в микросхеме и управление флэш-памятью NAND, чтобы попытаться оптимизировать ее для обеспечения правильности и долговечности флэш-памяти. Флэш-память NAND необходимо перезаписывать большими блоками (блоками стирания), которые во много раз превышают размер отдельных блоков файловой системы. Поэтому метод сопоставления, перераспределения и сбора мусора при выделении блоков в системе весьма важен.

Вот некоторые файловые системы, разработанные и/или широко используемые во встроенных устройствах, отсортированные в алфавитном порядке:

Btrfs

    — это новая файловая система с копированием при записи, которая впервые появилась в ядре в версии 2.6.29-rc1 и была объединена в версии 2.6.30.
  • По состоянию на апрель 2011 года Btrfs еще не поддерживается многими популярными инструментами файловой системы Linux, такими как gparted.
  • Btrfs была принята в качестве файловой системы платформы MeeGo.

CramFS

    - Сжатая файловая система только для чтения для Linux. Максимальный размер CRAMFS составляет 256 МБ.
    • «Линейные Cramfs» — это название специальной функции для использования несжатых файлов в линейном блочном макете с файловой системой Cramfs. Это полезно для хранения файлов, которые можно выполнять на месте. Дополнительную информацию о Linear Cramfs см. в приложении XIP
    • .
      (запись в Википедии) — файловая система для Linux, разработанная Samsung.

    ИнитRAMFS

    ПРЕДСТАВЛЯЕМ INITRAMFS, НОВУЮ МОДЕЛЬ ДЛЯ НАЧАЛЬНЫХ RAM-ДИСКОВ В этой четкой технической статье рассказывается об initramfs, функции Linux 2.6, которая позволяет исходной корневой файловой системе и программе инициализации находиться в кэше памяти ядра, а не на виртуальном диске (как в случае файловые системы initrd). Автор говорит, что по сравнению с initrd, intramfs может увеличить гибкость времени загрузки, эффективность использования памяти и простоту. Одна особенно интересная особенность для разработчиков встраиваемых систем Linux заключается в том, что относительно простые глубоко встраиваемые системы могут использовать initramfs в качестве единственной файловой системы.

    Вот хорошая статья о том, как собрать initramfs:

    Для получения дополнительной информации см.: Documentation/early-userspace/README

    JFFS2

      - Journalling Flash File System, версия 2. Это наиболее часто используемая файловая система flash.
      • Максимальный размер JFFS2 – 128 МБ. есть несколько патчей Алексея Королева для улучшения JFFS2
        • Смотрите презентацию нашивок Алексея по адресу:

        Журнал файловой системы

        LogFS — это масштабируемая файловая система на флэш-памяти, предназначенная для замены JFFS2 в большинстве случаев.

        К сожалению, в настоящее время он кажется заброшенным.

        Подробности см. в LogFS.

        Из-за нехватки места на встроенных устройствах во время разработки обычно используется сетевая файловая система в качестве корневой файловой системы для цели. Это позволяет цели иметь очень большую область, где полноразмерные двоичные файлы и множество инструментов разработки могут быть размещены во время разработки. Одним из недостатков этого подхода является необходимость повторной настройки системы с использованием локальных файловых систем (и, скорее всего, повторного тестирования) для поставки конечного продукта в какой-то момент цикла разработки.

        Клиент NFS может быть встроен в ядро ​​Linux, а ядро ​​может быть настроено на использование NFS в качестве корневой файловой системы. Для этого требуется поддержка сети и механизмов для указания IP-адреса цели и пути к файловой системе на хосте NFS. Кроме того, хост должен быть настроен для запуска сервера NFS. Часто хост также предоставляет требуемый адрес и информацию о пути к целевой плате, запустив DHCP-сервер.

        Дополнительную информацию о монтировании корневой файловой системы NFS с помощью ядра см. в файле Documentation/nfsroot.txt в исходном коде ядра Linux.

        ПРАМФС

        Специальная файловая система постоянного/защищенного ОЗУ (PRAMFS) — это полнофункциональная файловая система для чтения и записи, разработанная для работы с быстрой памятью ввода-вывода. Если память энергонезависима, файловая система будет постоянной. Кроме того, он поддерживает выполнение на месте.

        Информацию о спецификации PRAMFS можно найти в спецификации Pram Fs

        Ромбы

        СквошFS

        Squash Fs — это сжатая файловая система только для чтения для Linux. Эта файловая система имеет лучшее сжатие, чем JFFS2 или CRAMFS. Проведя долгое время вне основного ядра, Squashfs наконец были объединены и выпущены с ядром 2.6.29.

        Можно настроить степень сжатия при запуске mksquashfs. Параметр -b позволяет указать размер блока. Меньший размер блока обычно дает меньшее сжатие, а больший параметр -b дает большее сжатие. Однако в этом есть обратная сторона. Данные считываются из флэш-памяти с помощью блоков. Таким образом, если вы используете размер блока 128 КБ, а вам нужна страница размером 4 КБ, сжатый эквивалент 128 КБ данных будет считываться с флэш-памяти. Поскольку 128 КБ включает 32 страницы, это приведет к чтению 32 страниц в буферный кеш, хотя в момент чтения вам нужна только одна. Часто потребуются и другие 31 страница, но в противном случае вы тратите некоторое время на чтение и распаковку неиспользуемых данных. Также вы получили ненужные данные в буферном кеше (возможно, системе даже пришлось выкинуть из кеша используемые страницы, чтобы освободить место для этих 31 страницы).

        В приведенной ниже таблице дается представление о степени сжатия, достигаемой блоками разного размера. Входными данными была корневая файловая система встроенного устройства.

        Презентация Филипа Лугера о Squash FS на ELC Europe 2008: слайды и видео.

        УБИФС

        UBIFS – это файловая система на основе флэш-памяти, реализованная поверх интерфейса Unsorted Block Images (UBI).

        У него хорошая производительность по сравнению с Jffs2 и yaffs.

        Дополнительную информацию см. на странице UBIFS.

        ЯФФС2

          - Еще одна файловая система флэш-памяти — файловая система, разработанная специально для флэш-памяти NAND.

        YAFFS2 — это простое, портативное, надежное и автономное решение. Он широко используется во встроенных ОС, отличных от Linux, а также может использоваться автономно без ОС, например. в загрузчиках. При использовании с Linux он может использовать MTD или собственный флэш-драйвер. Точно так же он может использовать VFS или собственный слой posix. Он имеет лог-структуру и является однопоточным. Он не выполняет само сжатие — либо сжимайте сами данные, либо используйте squashfs поверх YAFFS2.

        YAFFS2 предназначена для быстрой загрузки (поскольку FS с лог-структурой, которая должна сканировать флэш-память, может). Он использует контрольные точки, поэтому, если раздел был размонтирован правильно, нет необходимости повторно сканировать флэш-память при включении питания. Все функции FS настраиваются, поэтому вы можете компрометировать такие вещи, как максимальный размер файла/раздела, размер блока флэш-памяти, степень детализации файлов и т. д. Данные записываются прямо во флэш-память, за исключением кэширования, чтобы обеспечить эффективное использование блоков. YAFFS2 обычно использует OOB флэш-памяти для своих метаданных, что позволяет ускорить загрузку, поскольку для сканирования флэш-памяти необходимо прочитать только OOB. Он может хранить свои метаданные в области главной страницы за счет некоторой скорости.

        Несмотря на то, что Linux используется в реальных продуктах с 2004 года, он еще не стал основным продуктом.

          • Презентация YAFFS2 Вуки на ELC Europe 2007: yaffs.pdf
          • Презентация CELF Jamboree 17, сравнивающая YAFFS и JFFS2 на 2.6.10: celf_flash.pdf

          YAFFS2 находится под лицензией GPL, но также доступен на условиях двойного лицензирования для использования в несвободных контекстах от Aleph One Ltd.

          Корневая файловая система монтируется ядром с помощью параметра командной строки ядра. Другие файловые системы монтируются из пользовательского пространства, обычно с помощью сценариев инициализации или программы инициализации с помощью команды 'mount'.

          Ниже приведены примеры командных строк, используемых для монтирования корневой файловой системы в Linux:

          • Использовать первый раздел на первом жестком диске IDE:
            • root=/dev/hda1
            • root=/dev/sda1
            • Использовать корневую файловую систему NFS (конфигурация ядра должна поддерживать это)
              • root=/dev/nfs

              (Обычно вам нужно добавить некоторые другие аргументы, чтобы убедиться, что IP-адрес ядра настроен, или указать путь NFS хоста.)

              • Использовать раздел флэш-устройства 2:
                • root=/dev/mtdblock2

                Монтирование образа JFFS2 на ПК с помощью mtdram

                Поскольку невозможно использовать петлевое устройство для монтирования образов JFFS2, вместо него необходимо использовать mtdram. Обычно для работы необходимы три модуля:

                • mtdram: Предоставляет раздел MTD в ОЗУ. Размер можно определить с помощью параметра total_size в килобайтах.
                • mtdblock: это создаст блочное устройство для доступа к разделу.
                • jffs2: поскольку JFFS2 обычно не используется в качестве файловой системы на ПК, поддержку необходимо загружать вручную.

                В зависимости от конечного порядка байтов может потребоваться преобразование файла изображения в исходный порядок байтов для ПК. Для архивирования можно использовать jffs2dump из инструментов MTD.

                Окончательное изображение можно скопировать на блочное устройство с помощью dd.

                Монтаж выполняется обычным способом.

                Монтирование образа UBI на ПК с помощью nandsim

                Сначала создайте смоделированное устройство NAND (это 256 МБ, размер страницы 2048). _id_byte= соответствует байтам идентификатора, отправленным обратно из NAND.

                Проверьте, было ли оно создано.

                Затем подключите его к устройству mtd.

                Мне пришлось отсоединить его перед форматированием.

                Если при вводе этого шага ubidetach произойдет сбой, просто перейдите к следующему шагу, чтобы отформатировать устройство mtd.

                Создайте целевой каталог и смонтируйте устройство.

                Характеристики карты MMC/sdcard

                MMC и SD-карты — это флэш-устройства, которые представляют собой блочный интерфейс для своего хост-компьютера. Часто эти устройства используются во встроенных устройствах и имеют характеристики, настроенные для блочного доступа с использованием файловой системы FAT. Но они представлены в виде «черных ящиков», с внутренней логикой и алгоритмами, которые не доступны главному компьютеру.

                Выполняется определенная работа по исследованию этих атрибутов и адаптации Linux для более эффективного использования этих устройств.

                АБИСС

                Система планирования ввода-вывода Active Block — это файловая система, предназначенная для обеспечения функций ввода-вывода файловой системы в реальном времени.

                Многоуровневые файловые системы

                Многоуровневые файловые системы позволяют монтировать носители только для чтения, сохраняя при этом возможность записи на них. По крайней мере, часть записи окажется где-то еще, что прозрачно обрабатывается многоуровневой файловой системой. Он существует уже довольно давно, и ниже приведены несколько примеров файловых систем, которые уже готовы к использованию в (встроенных) системах Linux.

                ЮнионФС

                Иногда удобно иметь возможность накладывать файловые системы друг на друга. Например, во встраиваемых продуктах может быть полезно использовать сжатую файловую систему только для чтения, смонтированную «под» файловой системой для чтения/записи. Это создает видимость полной файловой системы для чтения и записи, сохраняя при этом экономию пространства сжатой файловой системы для тех файлов, которые не изменятся в течение срока службы продукта.

                UnionFS — это проект по созданию такой системы (предоставление «объединения» нескольких файловых систем).

                mini_fo

                minifo = файловая система наложения mini fanout.

                По-видимому, это больше не поддерживается. Последняя информация относится к 2005 году.

                Инструменты для измерения эффективности

                Для очень простого измерения производительности диска можно использовать 'dd'. Следующее записывает файл 2G со всеми нулями в файловую систему, затем очищает кэш страниц и считывает файл обратно:

                • dd if=/dev/zero of=test bs=1048576 count=2048
                • синхронизировать
                • sudo echo 3 >/proc/sys/vm/drop_caches
                • dd if=test of=/dev/null bs=1048576

                Вы также можете использовать IOZone для измерения производительности файловой системы Linux.

                Некоторые тестовые системы, которые обычно используются с Linux для настольных ПК,

                Сравнение файловых систем флэш-памяти

                Встроенные тесты Cogent (2013 г.)

                В этом разделе есть ссылки на эталонные тесты, информацию о тестировании и настройке.

                  документ
                  • Содержит методологию тестирования и результаты (производительность и надежность) для настройки различных файловых систем (btrfs, ext3 и f2fs) на разных флэш-носителях.

                  Тесты Free Electros (2011 г.)

                  В 2011 году CE Linux Forum заключил контракт с Free Electrons на систематическое тестирование нескольких файловых систем флэш-памяти на нескольких версиях ядра.

                  Не удается открыть файл JFFS2? Ты не единственный. С подобными проблемами ежедневно сталкиваются тысячи пользователей. Ниже вы найдете советы о том, как открыть файлы JFFS2, а также список программ, поддерживающих файлы JFFS2.

                  Расширение файла JFFS2

                  Имя файла Формат журнала Flash, система 2, образ диска
                  Разработчик файла Различные разработчики Linux
                  Категория файлов Файлы образов дисков

                  Файл JFFS2 поддерживается в 2 операционных системах. В зависимости от вашей операционной системы вам может потребоваться различное программное обеспечение для обработки файлов JFFS2. Ниже приводится сводка количества программ, которые поддерживают и открывают файл JFFS2 на каждой системной платформе.

                  Операционные системы

                  Что такое файл JFFS2?

                  Файл JFFS2 относится к категории файлов образов дисков. Он был разработан различными разработчиками Linux. Кроме того, категория «Файлы образа диска» содержит 203 других файла. Журналирование Flash Format System 2 Disk Image поддерживается 2 операционными системами. Эти системы состоят из Linux, Windows, хотя иногда она может быть найдена в другой системе, она будет нефункциональна. Основной программой, поддерживающей этот формат, являются операционные системы Linux. Это было создано различными разработчиками Linux. Этот тип файла также может быть открыт 1 другими программами. Программы Software Update Tool LR также будут обрабатывать файл, если программа операционной системы Linux не выполняет свою роль.

                  Как открыть файл JFFS2?

                  Часто повторяющаяся проблема с образом диска Journalling Flash Format System 2 заключается в том, что JFFS2 не связан с правильным программным файлом. Это заставляет файл JFFS2 открываться системными приложениями, не предназначенными для этой цели, или отображать сообщение о том, что связанная программа отсутствует. Эту проблему можно легко решить.

                  Первое, что вам нужно сделать, это просто дважды щелкнуть значок файла JFFS2, который вы хотите открыть. Если в операционной системе есть соответствующее приложение для его поддержки, а также существует связь между файлом и программой, файл следует открыть.

                  Шаг 1. Установите операционные системы Linux

                  Часто упускают из виду проблему, связанную с тем, что на компьютере должна быть установлена ​​операционная система Linux. Для этого введите в системный поисковик название операционной системы Linux. При отсутствии соответствующей программы ее установка в подавляющем большинстве случаев решит проблему. Далее в этой статье вы найдете список программ, которые могут открывать файлы JFFS2.

                  Программы для открытия файла JFFS2

                  Не забывайте загружать программы, поддерживающие файлы JFFS2, только из проверенных и безопасных источников. Мы предлагаем использовать сайты разработчиков программного обеспечения.

                  Инструмент обновления программного обеспечения LR

                  Операционные системы Linux
                  Шаг 2. Создайте ассоциацию операционных систем Linux с файлами JFFS2

                  Однако может случиться так, что само приложение не вызывает открытие файла JFFS2 в приложении операционной системы Linux, но вы можете установить его вручную. Эта опция доступна на уровне свойств конкретного файла, доступного в контекстном меню. Отображаемое окно будет содержать информацию о программе, которая поддерживает этот тип файла. С помощью кнопки «Изменить» мы можем выбрать нужную программу. Может случиться так, что в следующем окне не будет подходящей программы - впрочем, это можно исправить опцией "Обзор", где следует вручную указать местонахождение программы. Установка флажка «Всегда использовать выбранную программу .» навсегда свяжет файл JFFS2 с программой операционной системы Linux.

                  Шаг 3. Обновите операционные системы Linux до последней версии

                  Если, несмотря на связь программы операционной системы Linux с файлом образа диска Journalling Flash Format System 2, файл по-прежнему не открывается, проверьте версию программы и, возможно, обновите ее до последней версии. Некоторые приложения позволяют обновляться на программном уровне, а для других необходимо скачать установщик со страницы Различные разработчики Linux и установить.

                  Шаг 4. Проверьте наличие следующих проблем с файлом JFFS2

                  Если вышеуказанные шаги не помогли, вы можете предположить, что сам файл неверен. Проблемы с файлами можно разделить на следующие:

                  Файл JFFS2 пуст или неполный.

                  Затрагиваемый файл может иметь размер 0 КБ или меньше ожидаемого. Это предполагает усечение содержимого файла JFFS2 при загрузке или копировании.Повторная загрузка файла должна устранить проблему.

                  Файл JFFS2 заражен

                  Наиболее распространенной причиной здесь являются компьютерные вирусы. Быстрая проверка на вирусы с помощью современной антивирусной программы должна развеять любые сомнения. Некоторые поставщики антивирусов также предоставляют бесплатные онлайн-сканеры. Для достижения наилучших результатов мы будем сканировать всю операционную систему, а не только наш файл JFFS2. В результате сканирования иногда не удается восстановить файлы JFFS2, которые удаляются, если есть резервная копия этого файла, то после восстановления его также необходимо сканировать.

                  Неверная версия файла

                  Старая версия файла JFFS2 не всегда может поддерживаться последней версией программного обеспечения. Эти проблемы известны, и их часто очень легко исправить с помощью веб-сайта разработчиков программного обеспечения.

                  Файл недействителен

                  Причин может быть много. В зависимости от типа файла его необходимо восстановить соответствующим образом. Иногда в самой программе есть опции для восстановления самого популярного повреждения файла JFFS2. Проще всего восстановить файл из резервной копии, если она есть, или обратиться к различным разработчикам Linux

                  Файл JFFS2 можно зашифровать

                  Также программа может сигнализировать о факте шифрования. Зашифрованные файлы JFFS2 могут использоваться устройством, на котором они были зашифрованы, на любом другом устройстве требуется наличие соответствующего криптографического ключа и расшифровка файла перед его восстановлением.

                  У вас ограниченный доступ к файлу

                  Некоторые системные каталоги исключены из модификации. Эти каталоги защищены от записи, и решить эту проблему очень сложно. Если возможно, вы можете попытаться переместить файл JFFS2 в другое место.

                  Файл JFFS2 используется

                  Эта проблема обычно затрагивает более сложные файлы. В этом случае файл JFFS2 блокируется первым приложением, открывшим его. Просто закройте ненужные программы. Если ошибка сохраняется после закрытия других программ, подождите некоторое время. Однако некоторые фоновые программы могут блокировать файл JFFS2 во время сканирования. Если и это не помогло, перезагрузите устройство.

                  Двоичный образ JFFS2 можно смонтировать на ПК с Linux без флэш-накопителя. Это может быть полезно для проверки содержимого образа, внесения необходимых изменений и создания нового изображения в любом формате. Когда образ JFFS2 копируется непосредственно из раздела флэш-памяти JFFS2, результирующий образ имеет размер исходного раздела, независимо от того, сколько места фактически используется для хранения. Монтирование файловой системы и использование утилиты mkfs.jffs2 для создания нового образа приведет к созданию образа JFFS2 без пустых узлов. Это также можно использовать для создания нескольких изображений для вспышек с разными характеристиками, такими как размер стираемого блока. На этой странице описываются два разных метода подключения образов JFFS2 на ПК с Linux.

                  Монтирование образов JFFS2 с использованием ОЗУ

                  Один из методов монтирования образов JFFS2 использует модуль mtdram для эмуляции устройства MTD с использованием системной оперативной памяти. Это хорошо работает для образов JFFS2 размером менее примерно 32 МБ, но не работает для изображений большего размера, поскольку требует выделения большого объема системной оперативной памяти. Основные этапы этого процесса следующие:

                  1. Загрузить модули mtdram и mtdblock.
                  2. Используйте команду dd, чтобы скопировать образ JFFS2 в /dev/mtdblock0 .
                  3. Смонтировать /dev/mtdblock0 как файловую систему JFFS2.

                  Чтобы упростить этот процесс, EMAC создал сценарий, который использует образ JFFS2, точку монтирования и размер стираемого блока образа в качестве параметров. Размер блока стирания по умолчанию для этого сценария составляет 128 КиБ, что является правильным значением для большинства флэш-памяти NOR, используемых в продуктах EMAC, и некоторых флэш-памятей NAND. Размер блока стирания можно определить по содержимому /proc/mtd системы, из которой образ был скопирован или для которой был создан. Например, если значение параметра «erasesize» равно 00040000 , размер блока стирания для устройства составляет 256 КиБ (0x40000 = 262144 байта, 262144/1024 = 256 КиБ). Сценарий jffs2_mount_mtdram.sh показан ниже.

                  Чтобы смонтировать образ с размером блока стирания 256 КиБ с именем rootfs.jffs2 в /mnt/jffs2 с помощью jffs2_mount_mtdram.sh, запустите скрипт, как показано ниже:

                  После этого содержимое образа должно быть доступно в /mnt/jffs2 .

                  Монтирование образов JFFS2 с помощью Loop Device

                  Второй метод подключения образов JFFS2 использует петлевое устройство. Этот метод подходит для больших образов, которые не могут быть успешно смонтированы с помощью подхода mtdram. Процесс требует следующих шагов:

                  У меня есть файловая система, которую я пытаюсь поместить в раздел флэш-памяти mtd3. Сначала я загружаюсь с помощью uboot, а затем запускаю sdboot для загрузки с SD-карты, как показано ниже:

                  Теперь у меня есть работающая система Linux.

                  Итак, почему это отображается:

                  nandwrite: ошибка!: Входной файл не помещается на устройство

                  Вы можете увидеть мои переменные среды в первой строке, я предоставил достаточно места в 4 МБ, так почему изображение размером 3513340 байт (3,35 МБ) не помещается на устройстве? И откуда это

                  размер устройства 393216 байт идет?

                  Дополнительная информация

                  mtdinfo:

                  разделы

                  также видно, что:

                  Система

                  petalinux работает на ARM cortex A9

                  Partition in Configuration Tool Это инструмент для настройки, который я использую перед созданием image.ub. Посмотрите размер файла jffs2, который больше фактического размера файла rootfs.jffs2.

                  /sys/класс/mtd

                  Драйверы

                  драйверы mmc

                  Решение

                  Я решил эту проблему, используя инструмент настройки и сделав следующие выборы, которые не были выбраны ранее.

                  Я не знаю, на что способен ваш инструмент создания разделов флэш-памяти, но вы можете сделать это вручную. Также обратите внимание, что в нем упоминается таблица разделов флэш-памяти , но для устройств mtd такой вещи не существует — размеры разделов определяются ядром, а не хранятся на устройстве.

                  В /sys/class/mtd определенно ничего нет. Если вы опубликуете вывод lsmod , я смогу сказать, какой драйвер вы используете, и посмотреть mtd->name .

                  1 Ответ 1

                  Во-первых, я не думаю, что переменная окружения mtdparts передает какую-либо значимую информацию о фактических размерах разделов. Предполагается, что mtdparts является параметром загрузки ядра, а не переменной окружения. Возможно, PetaLinux помещает эти значения в среду во время загрузки. Однако даже тогда он оказывается в неправильном формате. Чтобы увидеть параметры загрузки ядра, вы можете выполнить команду cat /proc/cmdline .

                  Чтобы узнать размеры разделов, которые пытается создать ядро, вы можете посмотреть в /proc/mtd в соответствии с вашим другим вопросом. Чтобы узнать размер фактического созданного блочного устройства (в байтах), вы можете выполнить команду blockdev --getsize64 /dev/mtd3 (требуются привилегии root). Все идет хорошо, они должны совпадать!

                  Теперь, предполагая, что размер раздела слишком мал, вы захотите увеличить размер раздела (это то, о чем говорит другой вопрос!). Указание параметра mtdparts во время загрузки — правильный способ сделать это. Из drivers/mtd/cmdlinepart.c в исходном коде ядра (обратите внимание, что он предлагает немного больше информации, чем почти идентичный фрагмент из drivers/mtd/Kconfig, который использовался ранее), это правильная спецификация формата:

                  Что именно подразумевается под стандартным linux memsize, неясно. Documentation/kernel-parameters.txt содержит следующий абзац:

                  Это ожидаемое использование прописных букв, но то, указывает ли строчная буква k, используемая в примере, на ту же или другую степень, что и K, не упоминается (лучше игнорировать это и использовать прописные буквы, судя по всему).

                  Из вашего вопроса часть mtdparts=mtdparts= кажется неправильной. Обычно для переменной среды имя переменной вообще не является частью значения переменной. Также 0 не кажется допустимым mtd-id .

                  Все остальное для ваших данных mtdparts выглядит нормально. Размер раздела должен быть тщательно выбран, чтобы он совпадал с размером блоков стирания, но, похоже, это так, учитывая размер блока стирания 64 КБ в /proc/mtd для вашего другого вопроса.

                  Поиск правильного mtd-id

                  Похоже, нет способа определить это в работающей системе. Хотя различную информацию об устройствах mtd можно найти в /sys/class/mtd , в настоящее время эта информация недоступна. Команда mtdinfo, кажется, не делает ничего, кроме чтения и форматирования этой информации, так что это тоже не очень полезно

                  Однако, учитывая используемый драйвер, это можно выяснить, просмотрев исходный код ядра. Чтобы получить это, вы можете проверить последнее стабильное исходное дерево с помощью:

                  Или вы можете предпочесть использовать код из вашего дистрибутива для используемой версии ядра. Обратите внимание, что на самом устройстве, скорее всего, не хватит места для загрузки ~ 1,4 ГБ. Из корня исходного дерева следующая команда показывает хороший кусок мест, где установлено значение mtd->name (обратите внимание, что код не должен использовать имя mtd для структуры, но обычно так и будет) :

                  В большинстве случаев это либо жестко закодировано в драйвере, либо информация содержится в файле .dts. Это также показывает, что драйвер, который мы ищем, скорее всего, находится в папке drivers/mtd. Копаем дальше, используя такие команды:

                  показывает, что драйвер mtd — m25p80. Это для различных флэш-устройств, которые взаимодействуют через SPI (это объясняет, почему поиск материалов, связанных с PCI, не помог).Глядя на исходный файл drivers/mtd/devices/m25p80.c , мы видим, что mtd->name задано в следующем фрагменте:

                  К сожалению, этот драйвер не использует ни одного конкретного имени, скорее имена определены в другом месте и зависят от используемого оборудования. Копнув дальше, мы видим, что данные представляют собой структуру flash_platform_data. Ища его определение, мы получаем этот комментарий в include/linux/spi/flash.h:

                  Похоже, что mtd-id относится к плате, а не к самой флэш-памяти. Дает использование этой структуры, -A 2 печатает 2 строки после совпадения и показывает большинство используемых имен:

                  Имена файлов также отражают названия досок, так что, надеюсь, там есть и ваша. Довольно часто в качестве mtd-id используется m25p80, так что, вероятно, это так.

                  В противном случае другая ветвь фрагмента кода отслеживает обратно к init_name устройства, хотя я не знаю, как это найти ( dmesg ?).

                  Предполагая, что m25p80 — это mtd-id , параметр ядра должен быть:

                  Все, что нужно сделать, это перенастроить U Boot, добавив это в параметр bootargs. Перезагрузитесь и, надеюсь, у вас должны быть размеры разделов, которые вам нужны.

                  Читайте также: