mini2440 кросс компиляция gentoo rootfs

mini2440 кросс компиляция gentoo rootfs

Сообщение setar » 28 июл 2010, 15:41

Для сборки своей файловой системы для mini2440 на базе генту линукса нам потребуется специальным образом подготовленный хостовый линукс (x86 или x86_64).
В идеале это должен быть многопроцессорный сервер, но технически это будет работать и на виртуалке под эмуляцией (разумеется на порядок медленнее).

Вообще существует несколько вариантов сборки системы под себя, они отличаются кросс сборкой и нативной сборкой.

Кросс сборка это когда физически для компиляции используется процессор другой архитектуры ( под arm компилим на x86 или x86_64)

Нативная сборка это когда физически над компиляцией трудится сам mini2440 (файловая система при этом может быть по сети или SD)

По понятным причинам нативная сборка самая медленная, я её отбросил сразу же.
С другой стороны скорость нативной сборки сопоставима с кросс компиляцией из под одно-ядерного линукса x86 запущенного в виртуалке - поэтому кой чего не очень большое можно собирать и на mini2440 это тема другой статьи

Кросс сборка в свою очередь бывает выполненной посредством кросс компиляторов и сборкой из под эмулятора процессора.

Сборка кросс компиляторами самая быстрая но систему на ней полноценную собрать - ещё та задача для продвинутых программистов разработчиков. Дело в том что в состав системы входит много пакетов которые в процессе сборки выполняют серию тестов запуском только что собранного кода. По понятным причинам мы выполнить такие тесты не можем - бинарник под другой проц. Есть методы обхода этого ограничения, но всегда это уникальный подход, отдельные патчи и много много потраченного времени. Есть и другого рода сложности вроде фиксированных в коде путей линковки библиотек - получается arm бинарник с библиотеками x86... В общем это путь для супер продвинутых разработчиков.

Кросс сборка эмуляторами существуют программы которые позволяют эмулировать нужный нам процессор или даже таргет систему, например qemu

Эмуляция процессора qemu-{архитектура} дает возможность запускать бинарники другой архитектуры находясь в хостовой системе непосредственно.
Этот путь я избрал для сборки своей системы, он позволяет получить особенности таргет архитектуры процессора без привязки к аппаратной части и что самое главное - использовать ВСЕ ядра (аппаратные) для сборки.

Эмуляция устройства qemu-system-{таргет устройство}
Позволяет запустить виртуальную машину эмулирующую требуемую платформу.
Этот путь хорош тем что позволяет работать в рамках органичений присутствующих в системе (объемы RAM NAND, порты).
Позволяет запустить загрузчик и проверить его работу, влить kernel и т.д. НО автоматически получаем все прелести ограничений при сборке, это сильно замедляет процесс.


Начну пожалуй с описания эмуляции устройства:
Эмуляция mini2440 через qemu
работать я буду в каталоге /tftproot хостовой системы, хотя это не принципиально

качаем патченый под mini2440 вариант qemu
# cd /tftproot
# git clone git://repo.or.cz/qemu/mini2440.git qemu_src

конфигирим и устанавливаем
# cd qemu_src
# ./configure —prefix=/tftproot/qemu --target-list=arm-softmmu
# make -j3
# make install

каталог /tftproot/qemu теперь содержит необходимые бинарники для запуска

для подключения виртуальной mini2440 нам потребуется бридж интерфейс
! обращаю внимание что перенастройка сети должна вестись с локальной консоли хост системы !
вносим правки в /etc/conf.d/net

# mcedit /etc/conf.d/net
Код: Выделить всё
bridge_br0="eth0"
config_eth0=( "null" )
config_br0=( "dhcp" )
dhcpcd_br0="-t 10"
RC_NEED_br0="net.eth0"
brctl_br0=( "setfd 0" "sethello 1" "stp off" )

# cd /etc/init.d && ln -s net.lo net.br0
# rc-update add net.br0 default
# /etc/init.d/net.eth0 stop && /etc/init.d/net.br0 start && /etc/init.d/net.eth0 start

нужен вспомогательный скрипт подъёма интерфейса эмулятора mini2440
# mkdir -p /tftproot/etc/ && mcedit /tftproot/etc/qemu-ifup
Код: Выделить всё
#!/bin/sh
modprobe tun
ifconfig $1 0.0.0.0 promisc up
brctl addif br0 $1

# chmod og+x /tftproot/etc/qemu-ifup


ну и главный скрипт запуска эмулятора
Код: Выделить всё
#!/bin/bash
base="/tftproot"

echo Starting in $base

name_nand="$base/mini2440_nand.bin"
name_snapshots="$base/mini2440_snapshots.img"
kernel="$base/uImage"
ifup="$base/etc/qemu-ifup"

if [ ! -f "$name_nand" ]; then
        echo $0 : creating NAND empty image : "$name_nand"
        dd if=/dev/zero of="$name_nand" bs=528 count=131072
fi
if [ ! -f "$name_snapshots" ]; then
        echo $0 : creating empty snapshot image : "$name_snapshots"
        qemu-img create "$name_snapshots" 100MB
fi


cmd="/tftproot/qemu/qemu-system-arm \
        -M mini2440 $* \
        -drive file=$name_snapshots,snapshot=on \
        -serial stdio \
        -kernel ${kernel} \
        -mtdblock "$name_nand" \
        -show-cursor \
        -usb -usbdevice keyboard -usbdevice mouse \
        -net nic,vlan=0 \
        -net tap,vlan=0,ifname=tap0,script=${ifup} \
        -monitor telnet::5555,server,nowait"

cd $base
echo $cmd
$cmd


особенности:
u-boot.bin должен быть без поддержки LCD (без сплеш патча)
и обязательно ! Лежать в каталоге ./mini2440

после запуска виртуалки работа как с обычной бордой:
MINI2440 # nand scrub
MINI2440 # nand createbbt
MINI2440 # mtdparts
MINI2440 # dynpart
MINI2440 # dynenv set u-boot_env
MINI2440 # saveenv

MINI2440 # setenv ipaddr 192.168.1.130
MINI2440 # setenv serverip 192.168.1.205
MINI2440 # setenv bootargs console=ttySAC0,115200 noinitrd init=/sbin/init mini2440=3tbc nfsroot=192.168.1.205:/tftproot/rootfs root=/dev/nfs rw ip=192.168.1.130
MINI2440 # setenv bootcmd 'tftpboot 32000000 uImage ; bootm'
MINI2440 # saveenv
MINI2440 # nand erase kernel
MINI2440 # tftpboot 0x32000000 uImage
MINI2440 # nand write.e 0x32000000 kernel
MINI2440 # reset



Сборка в эмуляции через qemu
ну и самая интересная часть моей статьи - как я делаю сборку сам :)

статья про такую сборку есть в документации gentoo (английский)

нужно подготовить ядро для того чтобы оно распознавало иной формат бинарников (опция CONFIG_BINFMT_MISC=m или CONFIG_BINFMT_MISC=y при сборке ядра системы). В сборке Calculate Linux Roboforum Build места разработчика это уже включено.

собираем обработчик кода arm (! статическая сборка обязательна для чрута)
# USE=static emerge -b1 app-emulation/qemu-user

регистрируем обработчик в ядре (вынес в тег код потому что сложная строка)
Код: Выделить всё
# echo ':arm:M::\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x28\x00:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff:/usr/bin/qemu-arm:' > /proc/sys/fs/binfmt_misc/register

проверяем
# cat /proc/sys/fs/binfmt_misc/arm

берём последний стейдж arm gentoo линукса и разворачиваем его для работы (ищем здесь ссылку http://mirror.yandex.ru/gentoo-distfile ... 3-armv4tl/)
# wget http://mirror.yandex.ru/gentoo-distfile ... 18.tar.bz2
# mkdir /tftproot/rootfs
# tar -xvjpf stage3-armv4tl-20100718.tar.bz2 -C /tftproot/rootfs

подправим правила сборки

# mcedit /tftproot/rootfs/etc/make.conf
Код: Выделить всё
ARCH=arm                                                                                                                                                                                                 
                                                                                                                                                                                                         
CFLAGS="-Os -pipe -march=armv4t -mtune=arm920t"                                                                                                                                     
CXXFLAGS="${CFLAGS}"                                                                                                                                                                                     
CHOST="armv4tl-softfloat-linux-gnueabi"                                                                                                                                                                   
                                                                                                                                                                                                         
                                                                                                                                                                                                         
                                                                                                                                                                                                         
ACCEPT_KEYWORDS="arm ~arm"                                                                                                                                                                               
USE="${ARCH} zlib bindist make-symlinks minimal"                                                                                                                                                         
                                                                                                                                                                                                         
VIDEO_CARDS="fbdev dummy"                                                                                                                                                                                 
INPUT_DEVICES="evdev keyboard mouse tslib"                                                                                                                                                               
LINGUAS="ru"                                                                                                                                                                                             
                                                                                                                                                                                                         
FEATURES="buildpkg getbinpkg noman noinfo nodoc ccache"                                                                                                                                                             
MAKEOPTS="-j9"                                                                                                                                                                                                                                                                                                                                                                                                   
   
PORTAGE_BINHOST="http://projects.roboforum.ru/mini2440/gentoo/packages"
                                                                                                                                                                                                       
PKGDIR=/packages/                                                                                                                                                                                                                                                                                                                                                                                     
                                                                                                                                                                                                         
PORTDIR="/usr/portage"                                                                                                                                                                                   
DISTDIR="/usr/portage/distfiles"                                                                                                                                                                         
#PORTDIR_OVERLAY="/usr/local/portage/layman/embedded-cross /usr/local/portage"


установим обработчик qemu-arm на таргет систему (при переносе на железку mini2440 его нужно будет удалить)
# cp /usr/bin/qemu-arm /tftproot/rootfs/usr/bin/qemu-arm

и скопируем минимально необходимые библиотеки для обработчика в хост систему
# mkdir -p /usr/gnemul/qemu-arm
# cp -a /tftproot/rootfs/lib/ /usr/gnemul/qemu-arm

подготовим каталоги
# cd /tftproot/rootfs
# mkdir -p usr/portage
# mkdir -p packages
# mkdir -p proc
# mkdir -p sys
# mkdir -p dev
# mkdir -p /var/run

подготовка системных каталогов для чрута
# mount --bind /usr/portage usr/portage
# mount --bind /proc proc
# mount --bind /sys sys

после выхода не забудте
# umount usr/portage
# umount sys
# umount proc

ну и погнали !

# chroot . /bin/busybox mdev -s
# chroot . /bin/bash --login

:Yahoo!:
визуально ничего не изменилось но попробуйте набрать uname -a и вот оно чудо:
amper / # uname -a
Linux amper 2.6.24-gentoo-r8 #1 SMP Wed Apr 8 01:21:51 MSD 2009 armv5tel GNU/Linux

возьмите за правило всегда после чрута выполнять команду
amper / # env-update && source /etc/profile
это позволит избежать неприятных вещей с переменными окружения

возможно вам потребуется поставить переменные прокси сервера и DNS
amper / # echo "nameserver 192.168.0.30" >/etc/resolv.conf
amper / # export ftp_proxy=http://192.168.0.30:3128
amper / # export http_proxy=http://192.168.0.30:3128


ну а делее фантазия Ваша, работаем в генту линуксе

я начал с пересборки тулчейна:

amper / # emerge --synс
amper / # emerge -v1 ccache
amper / # ccache -M 2G
amper / # emerge -v1 binutils gcc glibc

сборка binutils gcc заняля около 4 часов на 8 ядерном сервере,
glibc на момент написания пока собирается :)
именно поэтому рекомендую пользоваться уже собранными мной бинарниками!


Все пакеты которые я успел собрать лежат тут, они же будут пытаться подтягиваться
при вышеуказанном конфиге в бинарном виде (для экономии Вашего времени сборки)
http://projects.roboforum.ru/mini2440/gentoo/packages/

Добавлено спустя 31 минуту 55 секунд:
:) пример насколько это "тяжкая задача"

Код: Выделить всё

  1  [||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||98.1%]     Tasks: 300 total, 8 running
  2  [||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||96.8%]     Load average: 4.70 6.23 5.34
  3  [||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||99.4%]     Uptime: 41 days, 01:50:21
  4  [||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||94.2%]
  5  [||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||96.8%]
  6  [||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||98.1%]
  7  [||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||94.2%]
  8  [||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||98.7%]
  Mem[|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||     2480/3953MB]
  Swp[||||||||||||||||||||||||||||||||||                                              1498/4102MB]

  PID USER     PRI  NI  VIRT   RES   SHR S CPU% MEM%   TIME+  Command                                                                                                                                     
6107 root      20   0  141M 16816  4152 R 64.0  0.4  0:01.04 /usr/bin/qemu-arm /usr/libexec/gcc/armv4tl-softfloat-linux-gnueabi/4.4.4/cc1 -fpreprocessed /var/tmp/ccache/mkdirat.tmp.amper.6045.i -quiet
6117 root      20   0  140M 12664  3396 R 45.0  0.3  0:00.75 /usr/bin/qemu-arm /usr/libexec/gcc/armv4tl-softfloat-linux-gnueabi/4.4.4/cc1 -fpreprocessed /var/tmp/ccache/open64.tmp.amper.6053.i -quiet -
6115 root      20   0  140M 12424  3392 R 37.0  0.3  0:00.70 /usr/bin/qemu-arm /usr/libexec/gcc/armv4tl-softfloat-linux-gnueabi/4.4.4/cc1 -fpreprocessed /var/tmp/ccache/openat.tmp.amper.6057.i -quiet -
6126 root      20   0  140M 12172  3380 R 37.0  0.3  0:00.63 /usr/bin/qemu-arm /usr/libexec/gcc/armv4tl-softfloat-linux-gnueabi/4.4.4/cc1 -fpreprocessed /var/tmp/ccache/openat64.tmp.amper.6061.i -quiet
5944 root      20   0  132M  8020  1480 R 12.0  0.2  0:11.93 /usr/bin/qemu-arm /usr/bin/make -j9 subdir=io -C io ..=../ subdir_lib
6148 root      20   0  129M  4284  1460 S  5.0  0.1  0:00.12 /usr/bin/qemu-arm /usr/armv4tl-softfloat-linux-gnueabi/gcc-bin/4.4.4/armv4tl-softfloat-linux-gnueabi-gcc -c -std=gnu99 -fgnu89-inline -O2 -W
6109 root      20   0  129M  4300  1464 S  4.0  0.1  0:00.12 /usr/bin/qemu-arm /usr/armv4tl-softfloat-linux-gnueabi/gcc-bin/4.4.4/armv4tl-softfloat-linux-gnueabi-gcc -c -std=gnu99 -fgnu89-inline -O2 -W
6144 root      20   0  129M  4320  1480 S  4.0  0.1  0:00.19 /usr/bin/qemu-arm /usr/armv4tl-softfloat-linux-gnueabi/gcc-bin/4.4.4/armv4tl-softfloat-linux-gnueabi-gcc -c -I../include -I/var/tmp/portage/
6128 root      20   0  129M  4908  1784 S  3.0  0.1  0:00.10 /usr/bin/qemu-arm /bin/sh -c (echo '#define SYSCALL_NAME access'; \  echo '#define SYSCALL_NARGS 2'; \  echo '#define SYSCALL_SYMBOL __acces
30606 root      20   0 17116  2688  1168 R  1.0  0.1  0:20.19 htop
22459 root      20   0  156M 35496  3692 S  1.0  0.9  2:26.96 /usr/bin/qemu-arm /usr/bin/python2.6 /usr/bin/emerge -v1 binutils gcc glibc
6129 root      20   0  129M  4300  1464 S  1.0  0.1  0:00.12 /usr/bin/qemu-arm /usr/armv4tl-softfloat-linux-gnueabi/gcc-bin/4.4.4/armv4tl-softfloat-linux-gnueabi-gcc -c -std=gnu99 -fgnu89-inline -O2 -W
6045 root      20   0  125M  3376  1084 S  0.0  0.1  0:00.04 /usr/bin/qemu-arm /usr/lib/ccache/bin/armv4tl-softfloat-linux-gnueabi-gcc ../sysdeps/unix/sysv/linux/mkdirat.c -c -std=gnu99 -fgnu89-inline
Аватара пользователя
setar
Site Admin
 
Сообщения: 10989
Зарегистрирован: 04 окт 2004, 12:58
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко

Re: mini2440 кросс компиляция gentoo rootfs

Сообщение serg_io » 30 июл 2010, 13:04

Подскажите, в чем прелесть этого gentoo linux? Есть смысл ее использовать для Embedded? Каков минимальный размер rootfs, без Х?
serg_io
 
Сообщения: 25
Зарегистрирован: 07 июл 2010, 17:06

Re: mini2440 кросс компиляция gentoo rootfs

Сообщение setar » 30 июл 2010, 13:27

прелесть заключается в том что этот линукс является source based
и систему можно собрать ровно настолько оптимально сколько это требуется
пример: я не планирую вообще использовать в системе ipv6
выключаю флагом в профиле системы (USE="-ipv6") и пересобираю подверженые изменению пакеты с учетом всех зависимостей
emerge -uDNav system

Всё - система чиста от поддержки ipv6. И так с любой опцией.
На выходе получаем на 100% требуемую нам систему, ничего лишнего.
+ всякие вкусности рекурсивных проверок зависимостей и чистка ненужных библиотек и файлов в системе.

Про минимальную файловую систему вопрос не корректный - смотря что считать "минимумом"
в теоритическом минимуме размер одинаков для всех линуксов = размер busybox+baselayout ~1МБ
но я подозреваю такая система не совсем интересна? хотя и полноценно работать будет.
мой стейдж с компиляторами sshd и набором всяких полезных программок порядка 100МБ
Аватара пользователя
setar
Site Admin
 
Сообщения: 10989
Зарегистрирован: 04 окт 2004, 12:58
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко

Re: mini2440 кросс компиляция gentoo rootfs

Сообщение serg_io » 30 июл 2010, 14:13

Я собственно спросил про размер именно для того что-бы понять можно ли создать именно то, что мне нужно. А мне как раз нужна система минимального размера, или точнее мне мало что нужно. ftp+ssh+busybox и отдельно Qtopia + мое ПО.
Сам использую busybox для этих целей. Наверное попробую и Gentoo в минимальной конфигурации.
Еще интересует время загрузки, до появления консоли без графики при минимальной количестве демонов (FTP+SSH).
И напоследок вопрос философского характера: а неужели так нужно иметь одновременно так много всяких библиотек и программ на mini2440? Сорри за оффтоп.
serg_io
 
Сообщения: 25
Зарегистрирован: 07 июл 2010, 17:06

Re: mini2440 кросс компиляция gentoo rootfs

Сообщение Palachzzz » 30 июл 2010, 14:22

Обнаруженна папка kernels)))
Palachzzz
 
Сообщения: 73
Зарегистрирован: 13 июн 2010, 13:34
Skype: Z_Z_Z-77
прог. языки: С++, Delphi
ФИО: Павел Новиков

Re: mini2440 кросс компиляция gentoo rootfs

Сообщение setar » 30 июл 2010, 14:45

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

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

сколько нужно одновременно иметь библиотек и программ решает разработчик (Вы)
например собираем любой пакет для работы с текстом - с базовыми настройками он хочет подсистему документации (+ man ), найтив лэнгвич (+nls это целая цепочка пакетов), подсистему работы с мышкой и т.д.
при попытке сбора по умолчанию получим цепочку из десятка библиотек и программ вспомогательных
отключив не нужные нам флаги мы собираем только то что нам действительно нужно :)
в этом и есть сила генту

Добавлено спустя 1 минуту 48 секунд:
Palachzzz писал(а):Обнаруженна папка kernels)))

я там вообще выложил полный комплект с описанием
http://projects.roboforum.ru/mini2440/

Добавлено спустя 13 минут 13 секунд:
забыл сказать что в системе портов генту есть прекрасные инструменты для удаления не нужных Вам пакетов
поэтому стейдж на 100МБ он нужен для утобной пересборке его самого в сторону уменьшения:

просмотр установленных пакетов
# eix -I

удаление ненужных пакетов
# emerge -Cav mc syslog-ng

и чистка освободившихся библиотек
# emerge --depclean -av

если вас "смущает" какой то файл или каталог можно посмотреть чей он
# qfile /usr/share/man
(так я убирал документацию - смотрел чьё там ещё лежит и пересобирал соответствующие пакеты с фичами noman noinfo nodoc )


все настройки профиля сборки делаются флагами USE="" и FEATURES="" в /etc/make.conf
в юзы ставим нужные (или не нужные с "-") нам флаги : USE="-ipv6 -cups samba"
удобная прога для редактирования флагов c их описанием # ufed

фичи меняют обычно редко - это опции самого установщика пакетов
например
FEATURES="buildpkg noman noinfo nodoc getbinpkg"
buildpkg - оставляем собранные пакеты с бинарном виде (каталог задается PKGDIR=/packages/)
getbinpkg - пытаемся сначала посмотреть наличие уже собраных пакетов по расположению PORTAGE_BINHOST="http://projects.roboforum.ru/mini2440/gentoo/packages"
Аватара пользователя
setar
Site Admin
 
Сообщения: 10989
Зарегистрирован: 04 окт 2004, 12:58
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко

Re: mini2440 кросс компиляция gentoo rootfs

Сообщение serg_io » 30 июл 2010, 18:08

Видимо интересная вещь, жаль только с кросскомпиляцией проблемы. Попробую на досуге поковырять. А зачем toolchain/libc пересобирать?
serg_io
 
Сообщения: 25
Зарегистрирован: 07 июл 2010, 17:06

Re: mini2440 кросс компиляция gentoo rootfs

Сообщение setar » 31 июл 2010, 03:30

что значит с кросскомпиляцией проблемы?

пересборка тулчейна это процесс бутстрапа или шнуровки
в стейдже от которого я отталкивался тулчейн собран под абстрактный ARM,
желательно ео пересобрать под конкретный процессор, чтобы либы на которые будут опираться в дальнейшем ВСЕ программы
содержали оптимальный набор инструкций для таргет процессора.

традиционно пример:
по опыту из взрослых вычислительных кластеров: если сравнить софт который занимается расчётами на кластере из коммерческой поставки например RedHat (из rpm пакета) и сравнить его производительность с ним же пересобранным из исходных кодов с использованием оптимальным для процессора набором инструкций, то можем получить выигрыш до 15-20% производительности в пользу самосборного.
Я с коллегами был очень удивлен и озадачен этим и для анализа причин была произведена декомпиляция бинарников с подсчётом кол-ва инструкций процессора по классам sse sse2 ssse3 sse4_1
В итоге оказалось что пакеты из дистрибутива x86_64 для совместимости собраны вообще без поддержки инструкций sse4_1 и их применение на новых ксеонах дало значительное увеличение производительности.

Именно поэтому набор ключей компиляции крайне важен в устойчивости и производительности сборки.
8)
кстати стейдж весь скомпилирован без с флага -fomit-frame-pointer : коллеги разработчики ядра рекомендовали убрать как потенциально приводящий к нестабильности некоторых пакетов на ARM.
из статьи сейчас его уберу
Аватара пользователя
setar
Site Admin
 
Сообщения: 10989
Зарегистрирован: 04 окт 2004, 12:58
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко

Re: mini2440 кросс компиляция gentoo rootfs

Сообщение Palachzzz » 31 июл 2010, 20:53

в стейдже нет файла /etc/resolv.conf
а в /etc/conf.d/net : config_eth0=( "noop" )
заменил на dhcp - не работает (не установлен dhcp клиент?)
пришлось в ручную.. так что толку от предустановленного sshd как понимаете - 0, т.к. сеть не работает изначально)
хм.. запустил emerge --sync
в итоге вывалился с ошибкой - не хватает места в /tmp/.<абракадабра>:
Код: Выделить всё
mini2440 etc # df -h
Файловая система      Разм  Исп  Дост  Исп% смонтирована на
rootfs                1,1G  596M  383M  61% /
/dev/root             1,1G  596M  383M  61% /
rc-svcdir             1,0M   36K  988K   4% /lib/rc/init.d
shm                    30M     0   30M   0% /dev/shm


также eix -I
выдает неведомое количество установленных пакетов.
Palachzzz
 
Сообщения: 73
Зарегистрирован: 13 июн 2010, 13:34
Skype: Z_Z_Z-77
прог. языки: С++, Delphi
ФИО: Павел Новиков

Re: mini2440 кросс компиляция gentoo rootfs

Сообщение setar » 31 июл 2010, 22:56

resolv.conf убран умышленно, ровно как и конфигурация eth0 отключена
резолв - чтобы самостоятельно добавляли свои сервера
А вот насчёт сети вы не правы - она работает изначально, ещё до запуска корня, из параметров ядра ip=
именно поэтому отключено оно в инитах
я сам тестирую по NFS корню и управляю SSH

eix -I и должен выдавать большое число пакетов - их там столько установлено, я не ставил задачу собрать минимальную систему, это полнофункциональный базовый текстовый корень, тот что по классификации называют stage3

Вы не указали куда вы хотите синхрануть порты - держать их на embedded очень не разумно, они большие и нужны только при пересборке
папка /usr/portage должна быть либо на SD либо на NFS
Аватара пользователя
setar
Site Admin
 
Сообщения: 10989
Зарегистрирован: 04 окт 2004, 12:58
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко

Re: mini2440 кросс компиляция gentoo rootfs

Сообщение Palachzzz » 01 авг 2010, 00:31

У меня все на SD карточке, первый раздел FAT32 (260 Мб) с ядрами (разные, если надо поменять, просто надо переименовать его), и еще 3 раздела ext3, на двух (по 1 Гб) разные rootfs (debian и gentoo, для смены надо переписать в u-boot-е раздел rootfs), третий (1,5 Гб) в резерве пока.

И еще непонятный трабл, уж не знаю то ли из за корявой сборки ядра(ядро свое, в ядре с репо нет поддержки ext3), то ли rootfs.. в общем в /dev есть mmcblk0, но почему то нет mmcblk0p1, mmcblk0p2, mmcblk0p3, mmcblk0p4 (разделы)

C eix разобрался))
eix -I (параметр i (большое) а не L (маленькое))
Palachzzz
 
Сообщения: 73
Зарегистрирован: 13 июн 2010, 13:34
Skype: Z_Z_Z-77
прог. языки: С++, Delphi
ФИО: Павел Новиков

Re: mini2440 кросс компиляция gentoo rootfs

Сообщение setar » 01 авг 2010, 02:24

все правильно в ядре с диска, да и с repo.or.cz по умолчанию отключена поддержка ext3
/usr/portage лучше смонтировать на большой раздел

Добавлено спустя 1 час 5 минут 3 секунды:
для того чтобы видились все разделы mtd вам нужно решить как поддерживать /dev
есть варианты стаический , devtmpfs, udev
статический самый простой и самый не правильный - у нас просто на уровне файловой системы собраны ноды на девайсы (mknod)
можно посмотреть устойства в ядре и руками сделать на них ссылки из /dev (смотреть вроде в /proc/devices)

второй вариант - собрать ядро с поддержкой devtmpfs - оно будет само создавать ноды при появлении новых устройств в /proc/devices

ну и третий вариант - udev (в моем стейдже это # rc-update add udev system )
автосоздание нод девайсов по правилам (/etc/udev.d)

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

http://projects.roboforum.ru/mini2440/k ... oforum_T35
Аватара пользователя
setar
Site Admin
 
Сообщения: 10989
Зарегистрирован: 04 окт 2004, 12:58
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко


Вернуться в mini2440

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4