LINUX.ORG.RU

Сборка Embedded Linux для конкретной платы

 ,


0

3

Добрый день!

Есть у меня такая плата: CPU686E

И есть задача запустить на ней Embedded Linux. Я до этого ни разу такое не делал, поэтому прошу совета профессионалов в сборке образов Embedded Linux.

Использую я Buildroot. Я почитал кое-какие мануалы по нему (в частности сайта http://free-electrons.com) и понял общий принцип сборки, но возникли некоторые вопросы. Я собрал ядро, rootfs, загрузчик (пробовал grub, grub2). Сделал образ и залил его на CompactFlash. Но при загрузке на плате, после того как загрузчик начал загружать ядро, было выдано сообщение «out of memory». Плата имеет памяти 32М (это старая плата 2001 года). Очевидно, нужно как-то кастомизировать ядро. Этого я не понимаю как делать: в ядре куча настроек и не знаешь что можно выключить. Вообще, реально запустить linux на устройстве с таким объемом памяти? Тренировался на QEmu, там вроде загружается, но как-то через раз, главное что ядро выдает свои логи. Но если там поставить 16М памяти, то тоже будет сообщение о нехватке памяти.

Вопросы:

  • Нужно ли использовать initramfs для Embedded Linux? Там есть возможность даже встроить ее в образ ядра. Объясните, можно ли без него обойтись? Просто у меня добавляются некоторые файлы в rootfs (filesystem overlay), и когда я включаю initramfs, эти файлы добавляются и в него. А по идее, он должен быть минимальным.
  • Как можно включить поддержку виртуальной памяти? Можно ли это сделать средствами buildroot? На флэшке можно создать swap раздел. Поможет ли это в данном случае с ограниченным количеством RAM?
  • Где можно почитать про кастомизацию ядра? Именно про то, что необходимо оставить для минимальной системы.

Товарищи с опытом сборки Embedded Linux, пожалуйста подскажите что изучать еще.


Нужно ли использовать initramfs для Embedded Linux? Там есть возможность даже встроить ее в образ ядра. Объясните, можно ли без него обойтись? Просто у меня добавляются некоторые файлы в rootfs (filesystem overlay), и когда я включаю initramfs, эти файлы добавляются и в него. А по идее, он должен быть минимальным.

Можно, но не нужно. Конечно, лучше обойтись.

Как можно включить поддержку виртуальной памяти? Можно ли это сделать средствами buildroot? На флэшке можно создать swap раздел. Поможет ли это в данном случае с ограниченным количеством RAM?

У тебя уже и так должна быть поддержка виртуальной памяти. Отключить её нельзя (тем более, что если нет поддержки MMU, то линукс ты вообще не запустишь, тут тебе на помощь придёт uClinux, где поддержки виртуальной памяти нет). Можно создать swap-раздел, но это не рекомендуется, лучше просто допаять лишнюю микросхему памяти на плату.

Где можно почитать про кастомизацию ядра? Именно про то, что необходимо оставить для минимальной системы.

Для совсем минимальной системы — make tinyconfig, а потом выбрать из menuconfig только то, что нужно тебе. Почитать там же, нажимая на «h».

CYB3R ★★★★★ ()
Ответ на: комментарий от CYB3R

У него Geode 300MHz - MMU у него есть.

Ему сейчас надо урезать все ненужное, и поправить его скрипы сборки - походу он тащит в память гучу говн в initramfs

timdorohin ★★★ ()
Ответ на: комментарий от timdorohin

Я бы не советовал использовать buildroot вообще, он почти всегда будет тащить кучу лишнего.

CYB3R ★★★★★ ()

на 32M использовать initramfs идея плохая, поскольку оно у тебя выжрет часть памяти. Лучше воспользуйся схемой kernel + rootfs + overlayfs если нужна rw файловая система. Плюс в том, что всегда можно откатиться к заводским настройкам.

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

Из buildroot для начала выкинь вообще всё, чтобы условно, ядро + rootfs занимали мегабайта 3-4 в сумме. Потом по мере понимания задачи, добавляй нужное.

Dark_SavanT ★★★★★ ()
Ответ на: комментарий от CYB3R

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

Dark_SavanT ★★★★★ ()

У тебя при распаковке образа что ли такое сообщение? Я не гадалка, без логов не могу: paste.org.ru и ссылку сюда.

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

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

I-Love-Microsoft ★★★★★ ()
Последнее исправление: I-Love-Microsoft (всего исправлений: 1)
Ответ на: комментарий от Dark_SavanT

У него geode, ему не нужен современный линукс, пусть лучше возьмет ядро от rhel 6 и пляшет от туда. Заодно и по памяти уложится....

А у меня ачивка есть - запускал 4.4 на 486sx 40Mhz 12MB

timdorohin ★★★ ()

Можешь попробовать OpenWRT или LEDE собрать, там примерно то же самое, что buildroot, но на роутерах с 32 мегабайта идёт без проблем, правда mipsовых. Из уже готовых дистрибутивов можешь попробовать tinycore и alpine

Xenius ★★★★★ ()
Последнее исправление: Xenius (всего исправлений: 1)

Но при загрузке на плате, после того как загрузчик начал загружать ядро, было выдано сообщение «out of memory».

Покажи конфигурацию grub. Используется initrd, верно?

после того как загрузчик начал загружать ядро

Точно ядро, а не initramfs?

panzerito ()

Плюс за OpenWRT, это будет проще и говн там меньше.

joy4eg ★★★★★ ()
Ответ на: комментарий от joy4eg

Я бы не сказал. openwrt крайне хреново документирован внутри, в многих случаях либо читать код, либо спрашивать nbd и других в irc.

Dark_SavanT ★★★★★ ()
Ответ на: комментарий от panzerito

RHEL для разработки ещё использовать. Иначе могут быть интересные приколы.

Dark_SavanT ★★★★★ ()
Ответ на: комментарий от CYB3R

Ну зато (слава Богу) не на yocto собирал. Вот кто тащит дохера чего ненужного. А Билдрут ещё ничё так

velikS ()
Ответ на: комментарий от timdorohin

А у меня ачивка есть - запускал 4.4 на 486sx 40Mhz 12MB

вау, слава Линуксу! 12 мегабайт ОЗУ... хотя 40 МГц это норм

I-Love-Microsoft ★★★★★ ()
Ответ на: комментарий от CYB3R

Для совсем минимальной системы — make tinyconfig, а потом выбрать из menuconfig только то, что нужно тебе.

Файл bzImage получился размером всего 462К. С i386_defconfig получался 6.7М. Проблем с памятью не стало, но только не загружается даже в QEmu :-). Просто висит и все. Я зашел в xconfig и увидел что там почти все отключено. Там конечно есть подсказки почти для каждой опции, но если в этом не понимаешь, они мало чем полезны.

Вообще, если учитывать что данная плата совместима с IBM-PC, реально ли найти такой конфиг, чтобы все что нужно было включено? Мне там даже графика пока не нужна, хочу чтоб можно было общаться с платой через COM порт.

Реально ли запустить линукс на ней без знаний тонкостей ядра? (Я пока новичок в этом)

Вчера заказал Raspberry Pi. Для нее есть готовые конфиги.

silart ()
Ответ на: комментарий от CYB3R

Можно создать swap-раздел, но это не рекомендуется, лучше просто допаять лишнюю микросхему памяти на плату.

Напаять не получится. Плата такая уже есть. Я конечно понимаю, что если создать swap-раздел, флэшка быстро умрет, но если нужно на этой плате запустить приложения, потребляемая память которых будет превышать доступный объем RAM, то это может быть правильным решением. Флэшку можно заменить на новую.

Я читал, что в некоторых встраиваемых системах используется initramfs в качестве основной rootfs. При этом если еще встроить его в файл ядра, мы получаем что на флэш будет только храниться загрузчик и ядро, а rootfs будет создаваться в памяти каждый раз при загрузке. Правильно ли я понимаю этот момент?

Если нужен swap-раздел, то создавать и монтировать его придется вручную и buildroot здесь не поможет?

silart ()
Ответ на: комментарий от CYB3R

а что бы вы посоветовали использовать из таких систем?

silart ()
Ответ на: комментарий от I-Love-Microsoft

Я не гадалка, без логов не могу

Там до логов дело даже не доходило. Сразу после того как отработал загрузчик выдавалось сообщение о нехватке памяти. После вызова make tinyconfig ядро получилось размером 462К, и сообщения о нехватке памяти не стало. Но система не загрузилась - просто повисла. Логов нет. Может я неправильно сконфигурировал консоль? Я слушаю плату с помощью PuTTY через COM-порт. Grub шлет логи, а ядро нет. В настройках getty ставил порт tty1 и ttyS0. Может делаю что-то не правильно?

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

А вы не подскажете, как можно подмонтировать swap-раздел. Вообще какой порядок действий? Создаем на флэшке swap, редактируем /etc/fstab. Или нужно что-то сделать еще?

silart ()
Ответ на: комментарий от panzerito

Покажи конфигурацию grub. Используется initrd, верно?

нет, это было без initrd.

set default="0"
set timeout="5"

menuentry "Buildroot" {
	linux /boot/bzImage root=/dev/sda1 rootwait console=tty1
}
silart ()
Ответ на: комментарий от silart

mkswap + swapon, можно и без специального раздела а в файл (как в маздае)

а консоль можно включить аргументом, даже нужно - а то НИКОГДА не отладишь, может вообще rootfs отваливается а ты об этом не знаешь и дело не в памяти даже

I-Love-Microsoft ★★★★★ ()
Последнее исправление: I-Love-Microsoft (всего исправлений: 1)
Ответ на: комментарий от I-Love-Microsoft

а консоль можно включить аргументом, даже нужно

Вот мой конфиг для Grub:

set default="0"
set timeout="5"

menuentry "Buildroot" {
	linux /boot/bzImage root=/dev/sda1 rootwait console=tty1
}

Пробовал console=tty1 и console=ttyS0. Где еще можно включить консоль?

silart ()
Ответ на: комментарий от silart

Проблем с памятью не стало, но только не загружается даже в QEmu :-). Просто висит и все.
После вызова make tinyconfig ядро получилось размером 462К, и сообщения о нехватке памяти не стало. Но система не загрузилась - просто повисла. Логов нет.

На самом деле всё прекрасно загружается, только ты этого не видишь, так как поддержка консоли отключена. В полученном tinyconfig тебе нужно включить поддержку текстовой консоли и printk. После этого получишь лог загрузки ядра, который очевидно будет заканчиваться паникой «no working init found».

Я конечно понимаю, что если создать swap-раздел, флэшка быстро умрет, но если нужно на этой плате запустить приложения, потребляемая память которых будет превышать доступный объем RAM, то это может быть правильным решением. Флэшку можно заменить на новую.

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

Я читал, что в некоторых встраиваемых системах используется initramfs в качестве основной rootfs. При этом если еще встроить его в файл ядра, мы получаем что на флэш будет только храниться загрузчик и ядро, а rootfs будет создаваться в памяти каждый раз при загрузке. Правильно ли я понимаю этот момент?

Правильно. Мне самому нравится такой подход, это удобно — всего один файл. Но в данном случае это вряд ли целесообразно, так как оперативной памяти и так не хватает.

CYB3R ★★★★★ ()
Ответ на: комментарий от CYB3R

Если сделать только make tinyconfig и собрать ядро, то консоль работать не будет даже в QEmu. Я включил консоль. Сделал это так:

  • General setup/Configure standard kernel features/Enable support for printk
  • Device drivers/Charater devices:
    • Enable TTY
    • Virtual terminal
    • Support for binding and unbinding console drivers
  • Serial drivers
    • 8250/16550

После этого тест стало видно в QEmu. Но на устройстве я так и не смог добиться вывода текста через ttyS0. От чего это зависит: от ядра или от загрузчика? Я использую GRUB2 и его сообщения видны в терминале. Но после того как загрузка доходит до ядра, вывод текста пропадает. При этом видно, что загрузка идет (моргает светодиод на плате). Я отредактировал grub.cfg так:

set default="0"
set timeout="2"

serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1
terminal_input serial
terminal_output serial

menuentry "Buildroot" {
	linux /boot/bzImage root=/dev/sda1 rootwait console=tty0 console=ttyS0,115200n8
}
Но это не помогло. Вообще пока не понятно как заставить buildroot генерировать этот конфиг автоматически. В настройках есть такое поле: «builtin config», в котором я указал следующий файл:
GRUB_TIMEOUT="2"
GRUB_CMDLINE_LINUX_DEFAULT="console=tty0 console=ttyS0,115200n8"

## Serial console
GRUB_TERMINAL=serial
GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1"

ожидая, что при сборке будет сгенерирован файл grub.cfg на его основе. Но это не сработало и пришлось писать его руками.

Про конфиг груба написано здесь.

Смотрел еще файл /etc/inittab. Там есть такая строка:

...
# Put a getty on the serial port
ttyS0::respawn:/sbin/getty -L  ttyS0 115200 vt100 # GENERIC_SERIAL
...
Но ведь этот файл ядро запускает почти что в последнюю очередь.

Как думаете, за вывод в консоль отвечает ядро или загрузчик, который передает параметры ядру?

silart ()
Ответ на: комментарий от CYB3R

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

На этой плате есть разъем под CF-карту, на которую я записываю образ системы. Эта плата даже имеет BIOS, в котором я выставил загрузку с карты.

Я хочу научиться делать образы GNU Linux. А эта плата у меня уже была и я решил начать с нее. Я уже заказал Raspberry Pi на алиэкспресс.

silart ()
Ответ на: комментарий от silart

За вывод в консоль отвечает ядро, но загрузчик должен передать правильную строку kernel command line (альтернативно можно вшить её в ядро, тогда загрузчик никаких параметров не передаёт). Естественно, в ядре должен быть нужный модуль. Inittab запускает не ядро, а init, который у тебя пока не запускается. Сначала запусти ядро, а уже потом можешь думать об остальном.

CYB3R ★★★★★ ()
Последнее исправление: CYB3R (всего исправлений: 1)
Ответ на: комментарий от CYB3R

С выводом в serial console разобрался. Нужно было включить «Console on 8250/16550 and compatible serial port». Находится в разделе Serial drivers.

silart ()
Ответ на: комментарий от CYB3R

CYB3R I-Love-Microsoft

Возникла другая проблема: kernel panic. Лог здесь.

Почему-то не может монтировать рутфс:

[    2.538019] VFS: Cannot open root device "sda1" or unknown-block(0,0): error -6
[    2.545907] Please append a correct "root=" boot option; here are the available partitions:
[    2.554865] Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)
[    2.555681] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.10.4 #24
[    2.555681] Call Trace:
[    2.555681]  dump_stack+0x47/0x61
[    2.555681]  panic+0x8a/0x1b0
[    2.555681]  mount_block_root+0x189/0x211
[    2.555681]  mount_root+0x63/0x68
[    2.555681]  prepare_namespace+0x108/0x139
[    2.555681]  kernel_init_freeable+0x162/0x16f
[    2.555681]  ? rest_init+0x60/0x60
[    2.555681]  kernel_init+0x8/0xf0
[    2.555681]  ret_from_fork+0x21/0x30
[    2.555681] Kernel Offset: disabled
[    2.555681] ---[ end Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)

На флэшке единственный раздел ext2 с рутфс. Поддержка ext2 и поддержка ATA,SATA дисков включена. Но все равно не видит. После make tinyconfig я пошел другим путем: путем отключения лишнего. Взял i386_defconfig и поотключал видео, сеть, и другие тяжелые (как мне кажется) вещи, в результате получил ядро весом 2,3М. С tinyconfig, для сравнения, ядро получалось <1M. Как думаете, что еще можно включить, чтобы увиделся диск? Повторюсь, диском является CF-флэшка, которую видно в БИОСе. Как она точно подключена, не знаю. Наверное по интерфейсу ATA, так как плата старая. Пробовал включать PCMCIA, но это не помогло.

linux /boot/bzImage root=/dev/sda1 debug console=tty0 console=ttyS0,115200n8
Эти параметры передает ядру загрузчик.

И еще ворос: на этом этапе загрузки ядро уже читает файл fstab или еще нет?

silart ()
Ответ на: комментарий от silart

на этом этапе загрузки ядро уже читает файл fstab или еще нет?

А подумать?
fstab лежит на корневом разделе, а ядро его смонтировать не смогло.
В любом случае, самому ядру fstab параллелен, оно после монтирования корня запустит процесс init и на том успокоится, дальнейшая инициализация — не его проблема.

bormant ★★★★★ ()
Ответ на: комментарий от silart

unknown-block(0,0)

встает резонный вопрос, а ядро карту успело проинициализировать? Они обычно поднимаются не моментально, см. параметры ядра rootdelay=, rootwait. https://www.kernel.org/doc/Documentation/admin-guide/kernel-parameters.txt


	rootdelay=	[KNL] Delay (in seconds) to pause before attempting to
			mount the root filesystem

	rootwait	[KNL] Wait (indefinitely) for root device to show up.
			Useful for devices that are detected asynchronously
			(e.g. USB and MMC devices).

bormant ★★★★★ ()
Последнее исправление: bormant (всего исправлений: 1)
Ответ на: комментарий от bormant

а ядро карту успело проинициализировать?

Вставление задержки монтирования не помогло. Ядро не видит карту.

silart ()
Ответ на: комментарий от silart

Попробуй NFS, это проще чем пытаться плясать с флэшками. Для начала так.

I-Love-Microsoft ★★★★★ ()
Ответ на: комментарий от silart

Ты забыл включить опцию mbr partition support. И возможно поддержку ata/sata через эмуляцию scsi.

Dark_SavanT ★★★★★ ()
Последнее исправление: Dark_SavanT (всего исправлений: 1)
Ответ на: комментарий от silart

на этом этапе загрузки ядро уже читает файл fstab или еще нет?

Ещё раз: ядро этим не занимается. Ни inittab, ни fstab оно не читает.
Смотри с загруженным тяжёлым ядром, какие модули у тебя используются, прочитай, за что отвечает каждый из них, определи, какие нужны для работы твоей CF-карты и включи их в своём tinyconfig.

CYB3R ★★★★★ ()
Ответ на: комментарий от CYB3R

I-Love-Microsoft bormant

Удалось загрузить систему! :-) Для этого включил:

  • CS5510/5520 PATA support
  • CS5530 PATA support
  • CS5536 PATA support

которые находятся в ветке ATA BMDMA support. Они, как оказалось, являются частью системы на Geode GX1. Но для того, чтоб они появились в списке нужно было включить PCI.

Также нужно включить поддержку SCSI.

Но что меня смущает, так это подвисание при загрузке. Подвисание это бывает не всегда, встречается время от времени. Иной раз система загрузится почти за 3 секунды, а бывает на загрузку уходит до 20 секунд. Происходит оно всегда на строке лога:

ata2.01: failed to IDENTIFY (I/O error, err_mask=0x1)

Но после этого все равно флэшка определяется:

[    7.933741] ata2.01: failed to IDENTIFY (I/O error, err_mask=0x1)
[   12.977828] random: crng init done
[   13.564122] ata2.01: failed to IDENTIFY (I/O error, err_mask=0x1)
[   19.201371] ata2.00: CFA: TRANSCEND, 20060524, max MWDMA4
[   19.202101] ata2.00: 2030112 sectors, multi 0: LBA 
[   19.207357] ata2.00: configured for MWDMA2
[   19.213212] scsi 1:0:0:0: Direct-Access     ATA      TRANSCEND        0524 PQ: 0 ANSI: 5
[   19.233800] sd 1:0:0:0: [sda] 2030112 512-byte logical blocks: (1.04 GB/991 MiB)

Вот лог полностью: здесь.

silart ()
Ответ на: комментарий от CYB3R

ты советуешь ручками что ли rootfs делать? И что лишнего он тащит?

splinter ★★★★★ ()
Ответ на: комментарий от splinter

Зачем ручками? Скриптом. Я помню, что в своё время отказался от билдрута именно по причине невозможности собрать в нём только абсолютный минимум.

CYB3R ★★★★★ ()
Ответ на: комментарий от silart

ядро поддерживает NFS, а GRUB при этом не работает - он просто стартует ядро и всё, поддержки от него не требуется, если не ошибаюсь

I-Love-Microsoft ★★★★★ ()
Ответ на: комментарий от CYB3R

I-Love-Microsoft splinter

Здравствуйте!

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

Но есть один непонятный вопрос.

У этой платы есть флэш-диск объемом 8М. Его в биосе видно и есть возможность включить загрузку с него. Мне нужно его примонтировать к rootfs. Я выяснил, что этот флэш-диск сделан на микросхеме k9f6408u0a.

Я включил в ядре поддержку устройств mtd, после этого в логе появились строчки, что найдены устройства mtd0, mtd0ro, mtdblock0.

[    2.916213] device class 'mtd': registering
[    2.923464] device: 'mtd-1': device_add
[    2.930306] SSFDC read-only Flash Translation layer
[    2.937528] bus: 'pcmcia': add driver pcmciamtd
[    2.943842] bus: 'pci': add driver MTD PCI
[    2.950828] [nandsim] warning: read_byte: unexpected data output cycle, state is STATE_READY return 0x0
[    2.960604] [nandsim] warning: read_byte: unexpected data output cycle, state is STATE_READY return 0x0
[    2.970210] [nandsim] warning: read_byte: unexpected data output cycle, state is STATE_READY return 0x0
[    2.979818] [nandsim] warning: read_byte: unexpected data output cycle, state is STATE_READY return 0x0
[    2.989493] [nandsim] warning: read_byte: unexpected data output cycle, state is STATE_READY return 0x0
[    2.999100] [nandsim] warning: read_byte: unexpected data output cycle, state is STATE_READY return 0x0
[    3.008723] nand: device found, Manufacturer ID: 0x98, Chip ID: 0x39
[    3.015282] nand: Toshiba NAND 128MiB 1,8V 8-bit
[    3.020167] nand: 128 MiB, SLC, erase size: 16 KiB, page size: 512, OOB size: 16
[    3.029417] flash size: 128 MiB
[    3.032758] page size: 512 bytes
[    3.036182] OOB area size: 16 bytes
[    3.039917] sector size: 16 KiB
[    3.043251] pages number: 262144
[    3.046661] pages per sector: 32
[    3.050081] bus width: 8
[    3.052811] bits in sector size: 14
[    3.056572] bits in page size: 9
[    3.060000] bits in OOB size: 4
[    3.063333] flash size with OOB: 135168 KiB
[    3.067708] page address bytes: 4
[    3.071215] sector address bytes: 3
[    3.074941] options: 0x42
[    3.095548] Scanning device for bad blocks
[    3.546745] Creating 1 MTD partitions on "NAND 128MiB 1,8V 8-bit":
[    3.554334] 0x000000000000-0x000008000000 : "NAND simulator partition 0"
[    3.593601] device: 'mtd0': device_add
[    3.600469] device: 'mtd0ro': device_add
[    3.617564] ftl_cs: FTL header not found.
[    3.625145] device: '31:0': device_add
[    3.631032] device: 'mtdblock0': device_add
Однако, как можно видеть, нашелся Toshiba NAND 128MiB 1,8V 8-bit, хотя микросхема на плате производства Samsung, и объем у нее 8М, вместо 128М. Вызвал я mtdinfo /dev/mtd0, и увидел следующее:
mtd0
Name:                           NAND simulator partition 0
Type:                           nand
Eraseblock size:                16384 bytes, 16.0 KiB
Amount of eraseblocks:          8192 (134217728 bytes, 128.0 MiB)
Minimum input/output unit size: 512 bytes
Sub-page size:                  256 bytes
OOB size:                       16 bytes
Character device major/minor:   90:0
Bad blocks are allowed:         true
Device is writable:             true

Потом я вызвал

flash_erase --jffs2 /dev/mtd0 0 8192
Процесс стирания занял какое-то время. Однако если потом вызвать
mount -t jffs2 /dev/mtdblock0 /mnt
будет выдано сообщение об ошибке: mount: mounting /dev/mtdblock0 on /mnt failed: No such device

Подскажите пожалуйста: что я делаю не так и правильным ли я путем пошел?

silart ()
Ответ на: комментарий от silart

Это не настоящий MTD, а эмулируемый (нужен для дебага) модулем nandsim. Тебе, вероятно, этот модуль не нужен.

CYB3R ★★★★★ ()
Ответ на: комментарий от silart

Что если перед тем как делать в этом разделе ФС, попробовать поиграть с разделом при помощи dd? Просто записать паттерн или тупо «сырой файл» с первого блока?

I-Love-Microsoft ★★★★★ ()
Ответ на: комментарий от I-Love-Microsoft

Должен, но у тебя разве есть 128Мб RAM?

CYB3R ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.