|
Linux + Buildroot, Проблемы с файловой системой |
|
|
|
Dec 23 2010, 10:51
|
Местный
  
Группа: Свой
Сообщений: 276
Регистрация: 22-09-05
Из: Kiev
Пользователь №: 8 818

|
Добрый день коллеги. Имеется плата SK-AT91SAM9XE512-S3E, собраное ядро Linux. Buildroot собирался на базе конфига с сайта: http://dmilvdv.narod.ru/AT91SAM9260/index.htmlКонфиг busybox по умолчанию, версия 1.17.4. После загрузки выводится приглашение Код Welcome to Buildroot buildroot login: после ввода root получаю символ "#", казалось бы можно вводить команды, но банальная LS не работает. После нажатия ENTER получаю новый символ решетки.. Думал что с busybox проблемы, но ведь init то отрабатывает нормально... Ниже инфа по busybox: Код # busybox BusyBox v1.17.4 (2010-12-23 12:24:48 MSK) multi-call binary. Copyright (C) 1998-2009 Erik Andersen, Rob Landley, Denys Vlasenko and others. Licensed under GPLv2. See source distribution for full notice.
age: busybox [function] [arguments]... or: function [arguments]...
BusyBox is a multi-call binary that combines many common Unix utilities into a single executable. Most people will create a link to busybox for each function they wish to use and BusyBox will act like whatever it was invoked as.
Currently defined functions: [, [[, addgroup, adduser, ar, arping, ash, awk, basename, bunzip2, bzcat, cat, catv, chattr, chgrp, chmod, chown, chroot, chrt, chvt, cksum, clear, cmp, cp, cpio, crond, crontab, cut, date, dc, dd, deallocvt, delgroup, deluser, devmem, df, diff, dirname, dmesg, dnsd, dnsdomainname, dos2unix, du, dumpkmap, echo, egrep, eject, env, ether-wake, expr, false, fdflush, fdformat, fgrep, find, fold, free, freeramdisk, fsck, fuser, getopt, getty, grep, gunzip, gzip, halt, hdparm, head, hexdump, hostid, hostname, hwclock, id, ifconfig, ifdown, ifup, inetd, init, insmod, install, ip, ipaddr, ipcrm, ipcs, iplink, iproute, iprule, iptunnel, kill, killall, killall5, klogd, last, length, less, linux32, linux64, linuxrc, ln, loadfont, loadkmap, logger, login, logname, losetup, ls, lsattr, lsmod, lspci, lsusb, lzcat, lzma, makedevs, md5sum, mdev, mesg, microcom, mkdir, mkfifo, mknod, mkswap, mktemp, modprobe, more, mount, mountpoint, mt, mv, nameif, netstat, nice, nohup, nslookup, od, openvt, passwd, patch, pidof, ping, pipe_progress, pivot_root, poweroff, printenv, printf, ps, pwd, rdate, readlink, readprofile, realpath, reboot, renice, reset, resize, rm, rmdir, rmmod, route, run-parts, runlevel, sed, seq, setarch, setconsole, setkeycodes, setlogcons, setsid, sh, sha1sum, sha256sum, sha512sum, sleep, sort, start-stop-daemon, strings, stty, su, sulogin, swapoff, swapon, switch_root, sync, sysctl, syslogd, tail, tar, tee, telnet, test, tftp, time, top, touch, tr, traceroute, true, tty, udhcpc, umount, uname, uniq, unix2dos, unlzma, unxz, unzip, uptime, usleep, uudecode, uuencode, vconfig, vi, vlock, watch, watchdog, wc, wget, which, who, whoami, xargs, xz, xzcat, yes, zcat И еще вопрос. После первой прошивки rootfs.jffs2 в NAND первый запуск проходит без ошибок. А после первой хардварной перезагрузки, появляются дефекты файловой системы. Выводится следующее: Код Empty flash at 0x01227854 ends at 0x01228000 Empty flash at 0x01230804 ends at 0x01231000 VFS: Mounted root (jffs2 filesystem) on device 31:0. Freeing init memory: 124K ... ... JFFS2 notice: (360) check_node_data: wrong data CRC in data node at 0x012307b8: read 0x186b259f, calculated 0xef3d92a5. ... Welcome to Buildroot buildroot login: Подскажите плиз как решить первую и вторую проблемы. По поводу дефекта ФС. Исправит ли ситуацию переход на YAFFS2?
|
|
|
|
2 страниц
1 2 >
|
 |
Ответов
(1 - 14)
|
Dec 23 2010, 11:44
|

Профессионал
    
Группа: Участник
Сообщений: 1 179
Регистрация: 15-09-04
Из: 141070 г. Королев МО, улица Горького 39-121
Пользователь №: 661

|
Цитата(JeDay @ Dec 23 2010, 16:51)  после ввода root получаю символ "#", казалось бы можно вводить команды, но банальная LS не работает. Она у Вас есть, те когда Вы собираете образ файловой системы, должен формироваться каталог где у Вас эти командочки лежат, из которого собирается образ, который Вы прошиваете в флэш, ls --help пробовали?
|
|
|
|
|
Dec 23 2010, 11:55
|
Местный
  
Группа: Свой
Сообщений: 276
Регистрация: 22-09-05
Из: Kiev
Пользователь №: 8 818

|
Да они формируются как симлинки на бизибокс. Вот что хелп выдает: Код # ls --help BusyBox v1.17.4 (2010-12-23 12:24:48 MSK) multi-call binary.
Usage: ls [-1AacCdeFilnpLRrSsTtuvwxXhk] [FILE]...
List directory contents
Options: -1 List in a single column -A Don't list . and .. -a Don't hide entries starting with . -C List by columns -c With -l: sort by ctime --color[={always,never,auto}] Control coloring -d List directory entries instead of contents -e List full date and time -F Append indicator (one of */=@|) to entries -i List inode numbers -l Long listing format -n List numeric UIDs and GIDs instead of names -p Append indicator (one of /=@|) to entries -L List entries pointed to by symlinks -R Recurse -r Sort in reverse order -S Sort by file size -s List the size of each file, in blocks -T N Assume tabstop every N columns -t With -l: sort by modification time -u With -l: sort by access time -v Sort by version -w N Assume the terminal is N columns wide -x List by lines -X Sort by extension -h List sizes in human readable format (1K 243M 2G)
# ls -l total 0 # Т.е. вроди как все хорошо, только ниодного файла не выводится. Вот почему LS не видит файлов меня и смущает
|
|
|
|
|
Dec 23 2010, 12:32
|

Местный
  
Группа: Свой
Сообщений: 208
Регистрация: 6-10-05
Из: Ukraine, Kiev
Пользователь №: 9 300

|
Цитата(JeDay @ Dec 23 2010, 16:55)  Код # ls -l total 0 # Т.е. вроди как все хорошо, только ниодного файла не выводится. Вот почему LS не видит файлов меня и смущает  А Вы на всяк случай попробуйте Код ls / или Код ls /bin а то вдруг Вы случайно в /root заскочили,- а там пусто  а по второй проблеме - делайте readonly rootfs рамдиском/инитрамфс, темп/лог итд каталоги монтируйте как tmpfs, а конфиги подключайте как mtd раздел с jffs2 и тогда не будет у Вас проблем с некоректным выключением железки без предупреждения
|
|
|
|
|
Dec 24 2010, 07:28
|
Местный
  
Группа: Свой
Сообщений: 276
Регистрация: 22-09-05
Из: Kiev
Пользователь №: 8 818

|
Цитата а то вдруг Вы случайно в /root заскочили,- а там пусто wink.gif Действительно был в пустой директории. Я ожидал что по умолчанию в корневой раздел попаду. Цитата а по второй проблеме - делайте readonly rootfs рамдиском/инитрамфс, темп/лог итд каталоги монтируйте как tmpfs, а конфиги подключайте как mtd раздел с jffs2 и тогда не будет у Вас проблем с некоректным выключением железки без предупреждения sm.gif Спасибо буду курить доки как это сделать. А если я допустим создам раздел по указанному выше рецепту... после аварийного выключения питания как я понимаю все равно будут ошибки только в пользовательских файлах или логах? Еще в догонку хотел спросить. После компиляции Buildroot (тулчейн и ФС) как правильно удалять сборку корневухи не удаляя при этом скомпиленные объектники? make clean удалит все полностью.. Я попробовал грохнуть содержимое директорий /output/target и /output/images после чего у меня make вываливается с ошибкой. Спасибо.
|
|
|
|
|
Dec 24 2010, 12:43
|

Местный
  
Группа: Свой
Сообщений: 208
Регистрация: 6-10-05
Из: Ukraine, Kiev
Пользователь №: 9 300

|
Цитата(JeDay @ Dec 24 2010, 12:28)  А если я допустим создам раздел по указанному выше рецепту... после аварийного выключения питания как я понимаю все равно будут ошибки только в пользовательских файлах или логах? да, именно так, и еще гляньте на cramfs , эт тоже вариант Цитата Еще в догонку хотел спросить. После компиляции Buildroot (тулчейн и ФС) как правильно удалять сборку корневухи не удаляя при этом скомпиленные объектники? make clean удалит все полностью.. Я попробовал грохнуть содержимое директорий /output/target и /output/images после чего у меня make вываливается с ошибкой. Спасибо. просто удалите output/build/или make proftpd-clean для клина и деинсталяции конкретного пакета
|
|
|
|
|
Dec 26 2010, 08:03
|
Местный
  
Группа: Свой
Сообщений: 276
Регистрация: 22-09-05
Из: Kiev
Пользователь №: 8 818

|
Цитата просто удалите output/build/ или make proftpd-clean для клина и деинсталяции конкретного пакета Если я не удалю раздел /output/target, то по идее в новый образ rootfs.jffs2 попадут пакеты с предыдущего когфига, которые в новом я мог исключить. Пробовал удалить все каталоги в output кроме toolchain, после чего у меня Buildroot перестал собираться.. Как правильно "очищать" Buildroot чтобы не перекомпилировать toolchain каждый раз и по возможности пакеты с предыдущей сборки?
|
|
|
|
|
Dec 27 2010, 06:22
|
Участник

Группа: Участник
Сообщений: 53
Регистрация: 24-06-07
Из: ukraine
Пользователь №: 28 658

|
сколько не боролся с такой проблемой к сожалению, только через make clean + make menuconfig + make busybox-menuconfig + make, так собирает все правильно. если другие манипуляции проводить, то или криво собирает или не выкидывает пакеты с проэкта =(
|
|
|
|
|
Dec 27 2010, 08:22
|
Знающий
   
Группа: Свой
Сообщений: 726
Регистрация: 14-09-06
Из: Москва
Пользователь №: 20 394

|
Цитата(JeDay @ Dec 26 2010, 14:03)  Как правильно "очищать" Buildroot чтобы не перекомпилировать toolchain каждый раз и по возможности пакеты с предыдущей сборки? ЕМНИП, make clean Можно еще сказать make distclean. Но тогда надо забекапить все закачанные при сборке исходники (а то будет качать по новой, если не найдет), почистить, а потом их снова подложить. А toolchain собрать один раз, положить сбоку. И казать buildroot, что будем пользовать внешний toolchain. Ну и посмотреть на сами скрипты buildroot-а на предмет их правильности, особенно где clean и distclean - там тоже косяки могут быть.
|
|
|
|
|
Dec 27 2010, 10:36
|

Местный
  
Группа: Свой
Сообщений: 208
Регистрация: 6-10-05
Из: Ukraine, Kiev
Пользователь №: 9 300

|
Цитата(faa @ Dec 27 2010, 13:22)  ЕМНИП, make clean Можно еще сказать make distclean. Но тогда надо забекапить все закачанные при сборке исходники (а то будет качать по новой, если не найдет), почистить, а потом их снова подложить. А toolchain собрать один раз, положить сбоку. И казать buildroot, что будем пользовать внешний toolchain. Ну и посмотреть на сами скрипты buildroot-а на предмет их правильности, особенно где clean и distclean - там тоже косяки могут быть. действительно, екстернал это как вариант, но его нужно совсем сбоку  положить дабы не потереть при клине а еще можно глянуть в сторону http://old.nabble.com/new-way-to-rebuld-ju...td30195561.htmlтам правда более поздний буилдрут используется, но идею можно захватить
|
|
|
|
|
Dec 27 2010, 10:43
|
Местный
  
Группа: Свой
Сообщений: 276
Регистрация: 22-09-05
Из: Kiev
Пользователь №: 8 818

|
Кстати хорошая идея его родной тулчейн положить отдельно и указать как внешний. Пробовал в качестве внешнего указывать crosstoll-NG, которым пользуюсь для сборки ядра. Но в нем по умолчанию конфиг для uclibc неполный и некоторые компоненты с Buildroot не собираются  Цитата сколько не боролся с такой проблемой к сожалению, только через make clean + make menuconfig + make busybox-menuconfig + make, так собирает все правильно. если другие манипуляции проводить, то или криво собирает или не выкидывает пакеты с проэкта =( Это правда. В файле TODO так и написано, что в будущем есть план сделать слежение за пакетами которые уже в /target лежат и выкидывать ненужные, но пока это не работает.
|
|
|
|
|
Dec 30 2010, 05:19
|
Участник

Группа: Участник
Сообщений: 53
Регистрация: 24-06-07
Из: ukraine
Пользователь №: 28 658

|
Цитата(S_agent @ Dec 27 2010, 17:09)  да, еще можете собрать openwrt, у него после сборки можно найти SDK, в котором есть тулчейн и библы и его можно подключить в билдрут как экстернал, или использовать родную сборку рута от опенврт при нужности со своими правками При пересборке некоторых пакетов иногда нужно пересобирать тулчейн.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|