roboforum.ru

Технический форум по робототехнике.

Установка Debian на mini2440

Установка Debian на mini2440

Palachzzz » 12 авг 2010, 13:57

Рассмотрим установку Debian с нуля,
считаем что ядро у вас есть, и вы знаете как его пересобрать с случае необходимости.
Так же необходимо определится в методе загрузки mini2440 - SD карта, NFS, NAND
Я буду рассматривать загрузку с SD, загрузка с NFS еще проще, рассматривать не буду, как залить в NAND можно прочитать здесь:
mini2440 подготовка и размещение rootfs
Так же считаем что u-boot уже установлен.
Mini2440 подключена COM и Ethernet-портом к компьютеру (сети).
В качестве desktop linux я использую Calculate Linux Roboforum Build в виртуалке.

Для начала необходимо установить в x86 линукс утилиту debootstrap (Как написанно в дэбиановской вики debootstrap это утилита для установки базовой системы Debian из под другой (не обязательно Debian) ОС)
#emerge -v debootstrap
создаем временную директорию для установки:
#mkdir debroot
#cd debroot
#debootstrap --arch=armel --foreign lenny lenny/ http://ftp.ru.debian.org/debian/

параметры:
--arch=armel - архитектура
lenny - версия Debian (squeeze-нестабильная, lenny - последняя стабильная)
lenny/ - директория установки
http://ftp.ru.debian.org/debian/ - зеркало с которого устанавливать, полный список здесь: http://www.debian.org/mirror/list
так же можно установить Emdebian (специальная версия для embedded, облегченная) тогда команда установки будет выглядеть так:
#debootstrap --arch=armel --foreign lenny grip/ http://www.emdebian.org/grip/
Считается что Emdebian grip совместим с обычным Debian, но в репозитарии Emdebian намного меньше пакетов, и как выяснилось не все из них совместимы с Debian пакетами, версии пакетов тоже разные.

Продолжим, после окончания работы debootstrap (процедура не самая быстрая, зависит от скорости интернет), в нашем каталоге debroot появится каталог lenny (squeeze) в котором будет минимальная система debian.
Заходим в каталог, и упаковываем его:
#cd lenny
#tar jcpf ../lenny.tar.bz2 *

Каталогом выше появился файл lenny.tar.bz2, копируем его на подготовленный раздел карты (или в директорию NFS)
(предполагается что у вас на карте минимум 2 раздела, первый для ядра, второй для rootfs, можно третий для SWAP)
#cd ..
#mkfs.ext3 /dev/sdb2
#mount /dev/sdb2 /mnt/mmc0
#cp lenny.tar.bz2 /mnt/mmc0/
#cd /mnt/mmc0/
#sync
#tar xvpf lenny.tar.bz2
#rm lenny.tar.bz2
#sync

Далее с правами рута выполняем:
#rm dev/console
#echo "proc /proc proc none 0 0" >>etc/fstab
#echo "mini2440" >etc/hostname
#mknod dev/console c 5 1
#mknod dev/ttySAC0 c 204 64
#sync
#cd ..


Не забываем скинуть модули ядра туда же:
из директории исходников ядра
#CROSS_COMPILE=armv4tl-softfloat-linux-gnueabi- ARCH=arm make INSTALL_MOD_PATH=/mnt/mmc0/ modules_install
#sync

#umount /mnt/mmc0
Вставляем карту в mini2440, включаем, прерываем загрузку u-boot.
MINI2440 # setenv bootargs console=ttySAC0,115200 noinitrd root=/dev/mmcblk0p2 rootwait=4 rw ip=dhcp mini2440=3tbc init=/bin/sh
MINI2440 # saveenv
MINI2440 # boot
Загружаемся........
[color=#0040FF]VFS: Mounted root (ext3 filesystem) on device 179:1.
Freeing init memory: 132K
sh-3.2#

Это был первый этап, далее начинается второй этап:
# mount /proc /proc -t proc
# export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
# /debootstrap/debootstrap --second-stage

Процедура долгая...Идем пить пиво с друзьями....
/////версия squeeze на данном этапе у меня вывалилась с нежеланием устанавливать libc6
После установки выполняем:
#sh-3.2# echo s3c2410_serial0 >>etc/securetty
#sh-3.2# printf "T0:2345:respawn:/sbin/getty -L s3c2410_serial0 115200 vt100\n" >>etc/inittab
#sh-3.2# printf "auto eth0\niface eth0 inet dhcp\n" >>etc/network/interfaces
#sh-3.2# echo 'deb http://ftp.ru.debian.org/debian/ lenny main' >>etc/apt/sources.list
#sh-3.2#echo ttySAC0 >>etc/securetty
#sh-3.2#printf "T1:123:respawn:/sbin/getty 115200 ttySAC0\n" >>etc/inittab

Перезагружаемся..
Прерываем загрузку в u-boot
MINI2440 # setenv bootargs console=ttySAC0,115200 noinitrd root=/dev/mmcblk0p2 rootwait=4 rw ip=dhcp mini2440=3tbc
MINI2440 # saveenv
MINI2440 # boot

В строке загрузки убрали init=/bin/sh

Все!
После загрузки у вас будет минимальная версия Debian, можно пилить дальше..
Начните с настройки сети, интернета, и команды apt-get update, и установки udev.

******************************************************************
Выкладываю stage lenny:
-минимальная система debian, полученная с помощью debootstrap.
-установлены: udev, sshd, ftpd.
-цветная подсветка консоли.
-пароль для root: debian

http://projects.roboforum.ru/mini2440/debian/stages/stage-lenny-20100819.tar.bz2
P.S. Спасибо setar за предоставленное место :)
Последний раз редактировалось Palachzzz 19 авг 2010, 16:12, всего редактировалось 10 раз(а).

Re: Установка Debian на mini2440

setar » 12 авг 2010, 16:43

#tar jcf ../lenny.tar.bz2 *
нужен флаг p (preserve attributs)

в bootargs хорошо бы добавить параметр mini2440=3tbc
3 = 3.5" T35
t = точскрин
b = подсветка дисплея (backlight)
c = CMOS камера (опционально)

на SD лучше использовать EXT2
ибо при ext3 1/4 часть производительности канала SD (~1.5 MB/c) будет занято журналированием операций IO
не говоря уже о том что флешка трется интенсивнее.
А по хорошему там бы использовать raiserfs - она более правильно работает с блоками
блоки нужно брать такие:
mkreiserfs -b 4096 -t 512 /dev/mmcblk0

Re: Установка Debian на mini2440

Palachzzz » 12 авг 2010, 18:18

Исправил (согласно рекомендациям), дополнил (установка модулей), reizerFS оставим на чуть попозже )

Re: Установка Debian на mini2440

Palachzzz » 12 авг 2010, 22:42

При использовании ext2 после загрузки постоянно сыпется ошибка
EXT2-fs error (device mmcblk0p4): ext2_lookup: deleted inode referenced: 64181
Также при загрузке:
EXT2-fs error (device mmcblk0p4): ext2_lookup: deleted inode referenced: 45883
EXT2-fs error (device mmcblk0p4): ext2_lookup: deleted inode referenced: 45883
Cannot initialize /etc/mtab. failed!
bootclean: Failure cleaning /var/run. failed!
Failure initializing /etc/network/run/ifstate failed!
ifup: failed to open statefile /etc/network/run/ifstate: Input/output error
failed.
start-stop-daemon: open pidfile /var/run/rsyslogd.pid: Input/output error (Input/output error)
failed!
start-stop-daemon: open pidfile /var/run/crond.pid: Input/output error (Input/output error)
failed!

Раньше такого не было, изменилось только тип ФС (с ext3 на ext2) и флаг p в tar jcf ../lenny.tar.bz2 *

Re: Установка Debian на mini2440

setar » 12 авг 2010, 23:49

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

немного поясню что происходит с флагом -p
если запаковывать систему без него то все файлы будут принадлежать руту и иметь атрибуты доступа как в папке с которой мы всё пакуем. Обычно это не существенно для свеженькой системы в которой не было специальных заплаток по безопасности, вроде файлов конфигураций сервисов не принадлежащих руту а пользователю сервиса. Замечание я написал для общего понимания процесса переноса корня файловой системы, когда той же командой будут пользоваться на уже настронной системе (например перенос с nfs на SD) - там это будет очень важно.

а вот насчёт монтирования ext3 как ext2 без переформатирования я не уверен, нужно почитать.
вполне возможно данные журналов ext3 воспринимаются как расширенные атрибуты ext2

Добавлено спустя 8 минут 21 секунду:
вот такой заплаткой я тоже пользовался
printf "T0:2345:respawn:/sbin/getty -L s3c2410_serial0 115200 vt100\n" >>etc/inittab
, но вероятно нужно не добавлять терминал 0 а заменить консоль на S0 ?
я могу ошибаться, и это особенность дебиана, нужно протестировать
замена из командной строки что то типа
# cp /etc/inittab /etc/inittab.old && cat /etc/inittab.old | sed 's/ttySAC0/s3c2410_serial0/g' > /etc/inittab

Re: Установка Debian на mini2440

Palachzzz » 12 авг 2010, 23:49

Я переформатировал флешку в ext2 и установил все заново

Re: Установка Debian на mini2440

setar » 13 авг 2010, 00:04

тогда странно, а можно выложить lenny.tar.bz2 тот что с флагом p
tar cjpf ../lenny.tar.bz2 *

Добавлено спустя 9 минут 45 секунд:
кстати я ядро держу в NAND - меняется оно редко

Добавлено спустя 3 минуты 59 секунд:
:) и кстати нужно стейдж дебиановский выложить для последователей

Re: Установка Debian на mini2440

Palachzzz » 13 авг 2010, 00:30

# cp /etc/inittab /etc/inittab.old && cat /etc/inittab.old | sed 's/ttySAC0/s3c2410_serial0/g' > /etc/inittab

как я понимаю эта строка заменит в /etc/inittab все ttySAC0 на s3c2410_serial0?
Если да, то это ничего не даст:
Код: Выделить всёРазвернуть
#cat /etc/inittab
# /etc/inittab: init(8) configuration.
# $Id: inittab,v 1.91 2002/01/25 13:35:21 miquels Exp $

# The default runlevel.
id:2:initdefault:

# Boot-time system configuration/initialization script.
# This is run first except when booting in emergency (-b) mode.
si::sysinit:/etc/init.d/rcS

# What to do in single-user mode.
~~:S:wait:/sbin/sulogin

# /etc/init.d executes the S and K scripts upon change
# of runlevel.
#
# Runlevel 0 is halt.
# Runlevel 1 is single-user.
# Runlevels 2-5 are multi-user.
# Runlevel 6 is reboot.

l0:0:wait:/etc/init.d/rc 0
l1:1:wait:/etc/init.d/rc 1
l2:2:wait:/etc/init.d/rc 2
l3:3:wait:/etc/init.d/rc 3
l4:4:wait:/etc/init.d/rc 4
l5:5:wait:/etc/init.d/rc 5
l6:6:wait:/etc/init.d/rc 6
# Normally not reached, but fallthrough in case of emergency.
z6:6:respawn:/sbin/sulogin

# What to do when CTRL-ALT-DEL is pressed.
ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now

# Action on special keypress (ALT-UpArrow).
#kb::kbrequest:/bin/echo "Keyboard Request--edit /etc/inittab to let this work."

# What to do when the power fails/returns.
pf::powerwait:/etc/init.d/powerfail start
pn::powerfailnow:/etc/init.d/powerfail now
po::powerokwait:/etc/init.d/powerfail stop

# /sbin/getty invocations for the runlevels.
#
# The "id" field MUST be the same as the last
# characters of the device (after "tty").
#
# Format:
#  <id>:<runlevels>:<action>:<process>
#
# Note that on most Debian systems tty7 is used by the X Window System,
# so if you want to add more getty's go ahead but skip tty7 if you run X.
#
1:2345:respawn:/sbin/getty 38400 tty1
2:23:respawn:/sbin/getty 38400 tty2
3:23:respawn:/sbin/getty 38400 tty3
4:23:respawn:/sbin/getty 38400 tty4
5:23:respawn:/sbin/getty 38400 tty5
6:23:respawn:/sbin/getty 38400 tty6

# Example how to put a getty on a serial line (for a terminal)
#
#T0:23:respawn:/sbin/getty -L ttyS0 9600 vt100
#T1:23:respawn:/sbin/getty -L ttyS1 9600 vt100

# Example how to put a getty on a modem line.
#
#T3:23:respawn:/sbin/mgetty -x0 -s 57600 ttyS3

В стандартном inittab нет ttySAC0, точнее есть, но закомментирован.
Могу лишь добавить почему приходится добавлять и ttySAC0 и s3c2410_serial0.
При создании FS мы сделали нод ttySAC0 и сначала будет работать с ним.
А потом при установке udev ttySAC0 исчезнет и появятся s3c2410_serial0, s3c2410_serial1, s3c2410_serial2

Ядро только 2 дня назад пришлось пересобирать из-за inotify) и так постояннно)

и кстати нужно стейдж дебиановский выложить для последователей

пока у меня есть недостейдж (сегодня сделанный), в котором еще почти ничего не работает кроме консоли.
и есть перестейдж, в котором явный перебор (sshd, proftpd, куча либов которые притянулись при настройке 3G, mjpg-streamer.. )
так что надо что то довести до нормального вида)
тогда странно, а можно выложить lenny.tar.bz2 тот что с флагом p
tar cjpf ../lenny.tar.bz2 *

lenny.tar.bz2

Re: Установка Debian на mini2440

Palachzzz » 16 авг 2010, 11:01

В общем, проблема именно в ext2, исправил мануал.. использовать нужно ext3.

Re: Установка Debian на mini2440

setar » 16 авг 2010, 11:04

что то не так делаете :)
как же иначе все линуксы работали ДО выхода ext3 ?
появится времячко - сам проверю

Re: Установка Debian на mini2440

Palachzzz » 19 авг 2010, 14:48

Выложил стейдж.

Re: Установка Debian на mini2440

Tsi329 » 10 фев 2011, 02:10

Palachzzz, всё сделал, всё работает. Спасибо огромное.

Поставил пакеты:
- apt-get install mc (а как же без midnight commander-а? Через ssh putty он точь-в-точь как настоящий)
- wireless-tools (программы для wifi)
- ser2net (для расшаривания ком-порта по сетке. Суть мою уловили уже?)
- minicom (терминал, для того чтобы тестить связь с платой исполителя)
- moon-buggy (just for fun)
- wget (качалка с инета)
- udhcpc (DHCP)
- usbutils (в первую очередь для lsusb)
- bzip2 (распаковывать .tar.bz2)
- gcc (компилятор)
- build-essential (для работы make и остального)

Debian пашет всем доволен. Но столкнулся с вопросом, который меня остановил:
как правильно установить и настроить wifi-брелок TL-WN321G?
- ядро собирал сам, так как стандартное не держит ни одну ФС, а уменя ext3 на SD флешке
- распаковал linux-usb-wifi_linux-2.6.32.2_20100728.tgz в корень
- scan-wifi видит соседскую сетку каждый раз, а мой роутер 1 раз из 3-х. Почему?
- start-wifi подключает к wifi-роутеру, однако скорость подключения просто плачевная - 2-3 кб/с.
- всё утилиты пакета linux-usb-wifi_linux-2.6.32.2_20100728.tgz жалуются, что не могут загрузить
модуль ath9k_htc. Как я понимаю модуль не стандартный и ставится на ядро патчем compat-wireless-2.6.tar.bz2
Кто-нибудь знает как?
- iwconfig заставить работать не удалось.

Мой главный вопрос: Как заставить работать TL-WN321G под Debian?
P.S. Есть ли у кого ядро на которое не ругается тот же scan-wifi? Нужна поддержка ext3 и сдравого смысла ;)
P.P.S. Есть ли под debian MJPG-Streamer?
Последний раз редактировалось Tsi329 15 фев 2011, 10:14, всего редактировалось 2 раз(а).

Re: Установка Debian на mini2440

Klets » 11 фев 2011, 21:26

Доброго времени суток,
просьба помочь, дошел до второго этапа установки:

# mount /proc /proc -t proc
mount: only root can do that

sudo нет. Запускаю команду через su:
# su -c "mount /proc /proc -t proc"

после чего:
sh-3.2# /debootstrap/debootstrap --second-stage
W: Failure trying to run: mount -t proc proc /proc

Что я делаю не так?

Re: Установка Debian на mini2440

Tsi329 » 15 фев 2011, 10:14

О, великий setar, приди и спаси наши заблудшие души.

Re: Установка Debian на mini2440

setar » 15 фев 2011, 23:14

Klets писал(а):Доброго времени суток,
просьба помочь, дошел до второго этапа установки:

# mount /proc /proc -t proc
mount: only root can do that

sudo нет. Запускаю команду через su:
# su -c "mount /proc /proc -t proc"

после чего:
sh-3.2# /debootstrap/debootstrap --second-stage
W: Failure trying to run: mount -t proc proc /proc

Что я делаю не так?

нельзя монтировать то что там и так уже есть
/proc автоматом создается и монтируется при запуске ядра,
его можно лишь сбиндить (продублировать) в другом месте
mount -o bind /proc /куда_то_в_другое_место/proc


Rambler\'s Top100 Mail.ru counter