Перейти к содержанию
    

Добрый день коллеги.

Имеется плата 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?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

после ввода root получаю символ "#", казалось бы можно вводить команды, но банальная LS не работает.

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

эти командочки лежат, из которого собирается образ, который Вы прошиваете в флэш, ls --help пробовали?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да они формируются как симлинки на бизибокс.

Вот что хелп выдает:

# 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 не видит файлов меня и смущает :05:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

# ls -l
total 0
#

 

Т.е. вроди как все хорошо, только ниодного файла не выводится. Вот почему LS не видит файлов меня и смущает :05:

 

А Вы на всяк случай попробуйте

ls /

или

ls /bin

а то вдруг Вы случайно в /root заскочили,- а там пусто ;)

 

а по второй проблеме - делайте readonly rootfs рамдиском/инитрамфс, темп/лог итд каталоги монтируйте как tmpfs, а конфиги подключайте как mtd раздел с jffs2

и тогда не будет у Вас проблем с некоректным выключением железки без предупреждения :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а то вдруг Вы случайно в /root заскочили,- а там пусто wink.gif

Действительно был в пустой директории. Я ожидал что по умолчанию в корневой раздел попаду. :yeah:

 

а по второй проблеме - делайте readonly rootfs рамдиском/инитрамфс, темп/лог итд каталоги монтируйте как tmpfs, а конфиги подключайте как mtd раздел с jffs2

и тогда не будет у Вас проблем с некоректным выключением железки без предупреждения sm.gif

Спасибо буду курить доки как это сделать.

А если я допустим создам раздел по указанному выше рецепту... после аварийного выключения питания как я понимаю все равно будут ошибки только в пользовательских файлах или логах?

 

Еще в догонку хотел спросить. После компиляции Buildroot (тулчейн и ФС) как правильно удалять сборку корневухи не удаляя при этом скомпиленные объектники?

make clean удалит все полностью..

Я попробовал грохнуть содержимое директорий /output/target и /output/images после чего у меня make вываливается с ошибкой.

 

Спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А если я допустим создам раздел по указанному выше рецепту... после аварийного выключения питания как я понимаю все равно будут ошибки только в пользовательских файлах или логах?

да, именно так, и еще гляньте на cramfs , эт тоже вариант

Еще в догонку хотел спросить. После компиляции Buildroot (тулчейн и ФС) как правильно удалять сборку корневухи не удаляя при этом скомпиленные объектники?

make clean удалит все полностью..

Я попробовал грохнуть содержимое директорий /output/target и /output/images после чего у меня make вываливается с ошибкой.

Спасибо.

просто удалите output/build/

или make proftpd-clean для клина и деинсталяции конкретного пакета

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

просто удалите output/build/

или make proftpd-clean для клина и деинсталяции конкретного пакета

Если я не удалю раздел /output/target, то по идее в новый образ rootfs.jffs2 попадут пакеты с предыдущего когфига, которые в новом я мог исключить.

Пробовал удалить все каталоги в output кроме toolchain, после чего у меня Buildroot перестал собираться..

 

Как правильно "очищать" Buildroot чтобы не перекомпилировать toolchain каждый раз и по возможности пакеты с предыдущей сборки?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

сколько не боролся с такой проблемой к сожалению, только через make clean + make menuconfig + make busybox-menuconfig + make, так собирает все правильно. если другие манипуляции проводить, то или криво собирает или не выкидывает пакеты с проэкта =(

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

еще можно попробовать удалить output/build/.root & /output/target , сделать для каждого пакета клин и пускать сборку,

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Как правильно "очищать" Buildroot чтобы не перекомпилировать toolchain каждый раз и по возможности пакеты с предыдущей сборки?

 

ЕМНИП, make clean

Можно еще сказать make distclean. Но тогда надо забекапить все закачанные при сборке исходники (а то будет качать по новой, если не найдет), почистить, а потом их снова подложить.

А toolchain собрать один раз, положить сбоку. И казать buildroot, что будем пользовать внешний toolchain.

Ну и посмотреть на сами скрипты buildroot-а на предмет их правильности, особенно где clean и distclean - там тоже косяки могут быть.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ЕМНИП, make clean

Можно еще сказать make distclean. Но тогда надо забекапить все закачанные при сборке исходники (а то будет качать по новой, если не найдет), почистить, а потом их снова подложить.

А toolchain собрать один раз, положить сбоку. И казать buildroot, что будем пользовать внешний toolchain.

Ну и посмотреть на сами скрипты buildroot-а на предмет их правильности, особенно где clean и distclean - там тоже косяки могут быть.

действительно, екстернал это как вариант, но его нужно совсем сбоку:) положить дабы не потереть при клине

 

а еще можно глянуть в сторону http://old.nabble.com/new-way-to-rebuld-ju...td30195561.html

там правда более поздний буилдрут используется, но идею можно захватить

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Кстати хорошая идея его родной тулчейн положить отдельно и указать как внешний.

Пробовал в качестве внешнего указывать crosstoll-NG, которым пользуюсь для сборки ядра. Но в нем по умолчанию конфиг для uclibc неполный и некоторые компоненты с Buildroot не собираются:(

 

сколько не боролся с такой проблемой к сожалению, только через make clean + make menuconfig + make busybox-menuconfig + make, так собирает все правильно. если другие манипуляции проводить, то или криво собирает или не выкидывает пакеты с проэкта =(

Это правда. В файле TODO так и написано, что в будущем есть план сделать слежение за пакетами которые уже в /target лежат и выкидывать ненужные, но пока это не работает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

да, еще можете собрать openwrt, у него после сборки можно найти SDK, в котором есть тулчейн и библы

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

да, еще можете собрать openwrt, у него после сборки можно найти SDK, в котором есть тулчейн и библы

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

При пересборке некоторых пакетов иногда нужно пересобирать тулчейн.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

При пересборке некоторых пакетов иногда нужно пересобирать тулчейн.

 

Интересно - зачем :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...