Ник:
Пароль:

Контакты

E-mail: info@starterkit.ru
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
Телеграм: t.me/starterkit_ru

Способы оплаты

User Info


Добро пожаловать,
Guest

Регистрация или входРегистрация или вход
Потеряли пароль?Потеряли пароль?

Ник:
Пароль:

ПользователейПользователей:3
Поисковых ботовПоисковых ботов:2
ГостейГостей:1

ОбновитьПодробнееВсегоВсего:6
Форум » starterkit.ru » Embedded Linux
Unable to allocate RAM for process text/data
sekil
Добавлено 15.10.2012 17:01
0
Сообщение: 1
sekil
0

Пункты: 2027
Регистрация: 30.08.2012
Подскажите:
Запустил на плате
Код
busybox tcpsvd -vE 0.0.0.0 21 ftpd -w /test

При передаче файлов больше 30 мегабайт (на плате 32mb sdram) вываливается ошибка:
Код
Unable to allocate RAM for process text/data

После этого linux продолжает работать...
Top после ошибки:
Код
Mem: 25052K used, 5552K free, 0K shrd, 104K buff, 21388K cached

Я так понял это происходит когда вся память уходит под кеш...

Как исправить?
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 15.10.2012 19:09 Сообщение: 2
sasamy
4.71

Пункты: 83564
Регистрация: 14.08.2009
крневая ФС не в RAM случайно ? покажите выхлоп команды mount
Спуститься к концу Подняться к началу
Персональная информация
sekil
Добавлено 15.10.2012 19:45 Сообщение: 3
sekil
0

Пункты: 2027
Регистрация: 30.08.2012
Код
rootfs on / type rootfs (rw)
/dev/mmcblk0p1 on / type ext2 (rw,sync,relatime,barrier=1,data=writeback)
proc on /proc type proc (rw,relatime)
sysfs on /sys type sysfs (rw,relatime)
none on /dev/pts type devpts (rw,relatime,mode=600,ptmxmode=000)


Линукс грузится, монтирует initramfs, затем командой switch_root меняется initramfs на новый root на SD карте
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 15.10.2012 19:53 Редактировалось 15.10.2012 19:53 Сообщение: 4
sasamy
4.71

Пункты: 83564
Регистрация: 14.08.2009
Цитата

Я так понял это происходит когда вся память уходит под кеш...


дело точно не в этом, по-моему даже в windows научились сейчас делать как в Linux - вся свободная память отводится под буфры и кеши и совобождается по первому запросу.

Цитата

Линукс грузится, монтирует initramfs, затем командой switch_root меняется initramfs на новый root на SD карте


зачем такие выкрутасы на плате где заранее известно на каком носителе находится корневая ФС и какие нужны драйверы ?
Спуститься к концу Подняться к началу
Персональная информация
sekil
Добавлено 15.10.2012 20:05 Редактировалось 15.10.2012 20:11 Сообщение: 5
sekil
0

Пункты: 2027
Регистрация: 30.08.2012
Потому что в uboot для моего проца нет поддержки SD, usb и тп.
Как ее туда запихнуть я не особо понимаю...

Проверил еще один момент:
Скомпилил линукс без переключения рута. Примонтировал SD и также попробовал по фтп закинуть тот же файл - результат тот же...

Может просто проблема в ftpd в busybox..

P.S. wget качает безпроблем любые файлы..
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 15.10.2012 20:43 Редактировалось 15.10.2012 20:54 Сообщение: 6
sasamy
4.71

Пункты: 83564
Регистрация: 14.08.2009
Цитата

-w /test


а что вы ожидали если копируете в корень который в рам ?
mount /dev/mmcblk0p1 /test
и пробуйте запускать после этого
busybox tcpsvd -vE 0.0.0.0 21 ftpd -w /test

PS только я все равно не понял - зачем промежуточная initramfs если
Цитата

Потому что в uboot для моего проца нет поддержки SD, usb и тп.


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

PPS последний раз несколько лет назад когда мне нужны были такие выкрутасы - пользовался pivot_root
Спуститься к концу Подняться к началу
Персональная информация
sekil
Добавлено 15.10.2012 20:59 Редактировалось 15.10.2012 21:00 Сообщение: 7
sekil
0

Пункты: 2027
Регистрация: 30.08.2012
Ды нее..
/test это на карте памяти папка созданная отдельно. У меня один раздел на карте памяти и я его и под рут и для копирования файлов использую...
Я ж пробовал без рута на карте (рут в initramfs), монтировал /dev/mmcblk0p1 в папку /mnt и пробовал запускать tftp - тоже самое..

Uboot грузит ядро по tftp с роутера..

Да и до сих пор понять не могу..
Да, есть у меня драйвер SD в ядре, но вот как ядру указать чтоб монтировал рут раздел на SD карте? я пробовал указывать root=/dev/mmcblk0p1 - ноль эмоций - все равно монтирует initramfs.
Может надо ядро собрать без initramfs опции, иль что включить надо?

PPS Начитался - везде пишут switch_root....
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 15.10.2012 21:05 Редактировалось 15.10.2012 21:18 Сообщение: 8
sasamy
4.71

Пункты: 83564
Регистрация: 14.08.2009
Цитата

пробовал указывать root=/dev/mmcblk0p1 - ноль эмоций - все равно монтирует initramfs.


у initramfs приоритет перед любыми опциями ядра - если ядро ее находит то грузит в первую очередь initramfs

Цитата

Может надо ядро собрать без initramfs опции


да, тогда корневая фс будет выбрана исходя из того что передано через командную строку

Цитата

PPS Начитался - везде пишут switch_root


судя по мануалу - switch_root удобней
Спуститься к концу Подняться к началу
Персональная информация
sekil
Добавлено 15.10.2012 21:27 Сообщение: 9
sekil
0

Пункты: 2027
Регистрация: 30.08.2012
Кароче ))
Собрал ядро без initramfs, указал root=/dev/mmcblk0p1 init=/bin/init
Все загрузилось замечательно и busybox запустился...
Решило мою вторую проблему - скорость работы сети - стала в разы больше :) Теперь хоть копирует по tftp 1мб (а до этого 20 кб/c) в сек)))

Но вот ftpd (busybox) по ходу косячный... вылетает все равно.. смотрел исходники его.. там что то понаделали в связи с отсутствием MMU.. даж толком понять не смог... Вылетает то после того как полностью я передал файл..
И самое интересное что файл то передается полностью и лежит в папке /test
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Embedded Linux