Jump to content

    
Sign in to follow this  
stas17

Поселение на ARM ОС Linux

Recommended Posts

я явно указал:

U-Boot> setenv bootargs root=/dev/mtdblock1 rootfstype=jffs2 rw

U-Boot> saveenv

 

и получил следующее:

кучу вот таких ошибок

mtd->read(0x100 bytes from 0xbf60000) returned ECC error

uncorrectable error :

mtd->read(0x100 bytes from 0xbf80000) returned ECC error

uncorrectable error :

mtd->read(0x100 bytes from 0xbfa0000) returned ECC error

uncorrectable error :

mtd->read(0x100 bytes from 0xbfc0000) returned ECC error

uncorrectable error :

mtd->read(0x100 bytes from 0xbfe0000) returned ECC error

 

а после:

VFS: Mounted root (jffs2 filesystem) on device 31:1.

Freeing init memory: 120K

Kernel panic - not syncing: No init found. Try passing init= option to kernel.

See Linux Documentation/init.txt for guidance.

 

initrd я вроде бы включал в ядро...или что имеется в виду?

Edited by stas17

Share this post


Link to post
Share on other sites

Инит, который продолжает загрузку системы. Запускает все сервисы и т.д. Посмотрите, на вашей файловой системе есть файл /etc/init?

Share this post


Link to post
Share on other sites

Добавьте в uboot в bootargs ключ init=/bin/sh, если с этим параметром попадете в консоль, значит система, теоретически, работоспособна.

 

А по поводу посмотреть, то есть гугл, а в гугле есть такие вот ссылки https://wiki.maemo.org/Modifying_the_root_image

 

По поводу init'ов, то ядро после своей инициализации будет пытаться запустить такие вот процессы http://lxr.linux.no/linux+v2.6.37/init/main.c#L847

/sbin/init

/etc/init

/bin/init

/bin/sh

На вашей версии ядра, это может отличаться

 

 

Share this post


Link to post
Share on other sites
Извините, но как я посмотрю, если у меня файловая система одним файлом: Angstrom-x11-at91sam9m10-image-glibc-ipk-2009.X-stable-at91sam9m10g45ek.rootfs.jffs2

Элементарно- смонтируйте его в какую-нибудь папку, отредактируйте и размонтируйте.

man mount

Share this post


Link to post
Share on other sites
Элементарно- смонтируйте его в какую-нибудь папку, отредактируйте и размонтируйте.

man mount

А вот это не совсем элементарно. В сети есть информация по монтированию образов jffs и соответствующие скрипты (пользовался, работают). К стати, смотрел именно образ от Angstrom для at90sam9260.

Share this post


Link to post
Share on other sites

Наконец-то, получилось!) Проблема была решена переходом на более раннюю версию ядра (2.6.30) и в переменную окружения bootargs явно указал следующее:

'root=/dev/mtdblock0 rw rootfstype=jffs2'

раннее в этой переменной было записано:

'root=/dev/mtdblock1 rw rootfstype=jffs2'

 

При загрузке системы несколько предупреждений появляются следующего вида:

WARNING: Couldn't open directory /lib/modules/2.6.30_my_RDM: No such file or directory

и

FATAL: Could not open /lib/modules/2.6.30_my_RDM/modules.dep.temp for writing: Nor -22(irq = 1) is a ATMEL_SERIALdress, using random0x302cd

bio: create slab <bi

o such file or directoryl_usart.2: tt

Насколько я понимаю, это из-за того, что фс с linux4sam, а ядро, собранное мной; и, по-видимому, ядро на которое была рассчитана данная фс было модульным, а мое-монолитное. Тогда эти предупреждения нестрашны, или я неправильно думаю?

 

Share this post


Link to post
Share on other sites

создайте в образе файловой системы эту папку и поместите в нее драйвера

как-то так:

make modules

make modules_install

 

тут нужно разобраться с префиксами - по умолчанию установится в /lib/modules/2.6.30_my_RDM на вашей машине.

Эту папку целиком нужно скопировать в ФС для девайса

 

Share this post


Link to post
Share on other sites
Тогда эти предупреждения нестрашны, или я неправильно думаю?

абсолютно нестрашны:), просто ядро у вас имеет версию 2.6.30_my_RDM , а файловая система была собрана с другой, модули грузятся из каталога /lib/modules/`uname -r`/ вот и ворчит система :)

 

как-то так:

точно, -

make INSTALL_MOD_PATH=target_root_dir modules_install

 

так у меня же нет модулей. Что установится в эту папку командой make modules_install??

ничего полезного в таком случае:)

Share this post


Link to post
Share on other sites

А если я смонтировал ФС. Залез на нее. Создал папку /lib/modules/2.6.30_my_RDM, закинул туда все, что появляется в папке target_root_dir при выполнении команды:

make INSTALL_MOD_PATH=target_root_dir modules_install

Но изменения в ФС не сохраняются. Я монтирую ее и проверяю и вижу, что в папке modules нет папки 2.6.30_my_RDM??

Share this post


Link to post
Share on other sites

1) Возможно у вас используется файловая read-only файловая система (например cramfs или squashfs), которая извлекается из архива и помещается в ОЗУ. Т.е. она существует исключительно в ОЗУ, то все изменения которые вы делаете, они остаются в ОЗУ до следующей перезагрузки.

2) Если у вас NAND память, то после каждой операции старайтесь делать sync.

Share this post


Link to post
Share on other sites
Но изменения в ФС не сохраняются. Я монтирую ее и проверяю и вижу, что в папке modules нет папки 2.6.30_my_RDM??

 

приведите результ выполнения комманды mount

и лог загрузки ядра или dmesg

Share this post


Link to post
Share on other sites

Я ФС не на плате монтировал, а просто как отдельное устройство на виртуальной машине. Просто монтировал, сделал изменения, демонтировал, подключил еще раз и не нашел, созданную мной, папку..

Share this post


Link to post
Share on other sites

Join the conversation

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

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

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

×   Your previous content has been restored.   Clear editor

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

Sign in to follow this