LINUX.ORG.RU

MB 77.07 сборка-разборка

 , ,


1

3

1. Первоначальная прошивка:

#Скачиваем
wget http://module.ru/mb7707/toolchains/x86_64/arm-module-linux-gnueabi-25082014.tgz
# Модифицируем flash.sh чтобы edcltool указывал на нужный интерфейс
# Собираем програму для заливки:
git clone https://github.com/RC-MODULE/edcltool.git

Для debian/ubuntu надо lua5.1-dev, libelf-dev, autoconf, automake, build-essential

После сборки замыкаем перемычку, подымаем сетевой интерфейс, который для связи с MB77.07, запускаем ./flash.sh

После запуска можно смело логиниться, например через minicom и uart:

minicom -s
# настраиваем serial port setup
#F - Hardware Flow Control : No
#G - Software Flow Control : No
# выходим по ESC,q или meta,q
minicom -D /dev/ttyUSB0 -b 38400

2. Как смонтировать и пересобрать ubifs?

apt-get install mtd-utils
modprobe nandsim first_id_byte=0xEC second_id_byte=0xD3 third_id_byte=0x90 fourth_id_byte=0x95 cache_file=/root/nandsim-cache.bin
flash_erase /dev/mtd0 0 0
dd if=fw-debian-wheezy-3.10-ubifs-25082014/filesystem.ubifs of=/dev/mtd0 bs=2048
modprobe ubi mtd=0,2048
mkdir /mnt/ubifs
mount /dev/ubi0_0 /mnt/ubifs

mkfs.ubifs -r /mnt/ubifs -m 2048 -e 126976 -c 2047 -o ubifs.img
ubinize -o ubi.img -m 2048 -p 128KiB -s 2048 ubinize.cfg
cp ubi.img fw-debian-wheezy-3.10-ubifs-25082014/filesystem.ubifs

ubinize.cfg:

[ubifs]
mode=ubi
image=ubifs.img
vol_id=0
vol_size=200MiB
vol_type=dynamic
vol_name=rootfs
vol_flags=autoresize

Далее можно прошиться как в пункте первом, перед сборкой fs можно что-нибудь поменять.

3. Как собрать свою root fs для debian wheezy?

apt-get install debootstrap
debootstrap --verbose --foreign --arch=armel wheezy debrootfs ftp://ftp.ru.debian.org/debian
apt-get install qemu qemu-user-static
cp /usr/bin/qemu-arm-static debrootfs/usr/bin
chroot debrootfs /debootstrap/debootstrap --second-stage
chroot debrootfs /usr/bin/passwd root
mount -t proc none debrootfs/proc
mount -t sysfs none debrootfs/sys
mount -t devpts none debrootfs/dev/pts
chroot debrootfs
echo 'deb http://ftp.ru.debian.org/debian/ wheezy main contrib non-free' >> /etc/apt/sources.list
echo 'T0:23:respawn:/sbin/getty -L ttyS0 38400 vt100' >> /etc/inittab
echo -e "\nauto eth0\niface eth0 inet static\n\taddress 192.168.0.7\n\tnetmask 255.255.255.0\n\tgateway 192.168.0.1" >> /etc/network/interfaces
exit
umount debrootfs/*

Сборка файловой системы:

mkfs.ubifs -r /root/debrootfs -m 2048 -e 126976 -c 5000 -o ubifs.img
ubinize -o ubi.img -m 2048 -p 128KiB -s 2048 ubinize.cfg
cp ubi.img fw-debian-wheezy-3.10-ubifs-25082014/filesystem.ubifs

4. Сборка ядра

Собираем компрессию для ubifs, выключаем моргалку

apt-get install libncurses-dev u-boot-tools lzop
wget http://module.ru/mb7707/toolchains/x86_64/arm-module-linux-gnueabi-25082014.tgz
tar xzf arm-module-linux-gnueabi-25082014.tgz
export PATH=$PWD/arm-module-linux-gnueabi/bin:$PATH
git clone https://github.com/RC-MODULE/linux-3.10.x.git
cd linux-3.10.x/
ARCH=arm make uemd_defconfig
# Компрессия вроде как включается так:
# CONFIG_UBIFS_FS_ADVANCED_COMPR=y
# CONFIG_UBIFS_FS_LZO=y
# CONFIG_UBIFS_FS_ZLIB=y
# Выключаем назойливое моргание
# # CONFIG_LEDS_TRIGGER_HEARTBEAT is not set
ARCH=arm make menuconfig
ARCH=arm CROSS_COMPILE=arm-module-linux-gnueabi- make -j2 uImage dtbs
cp ./arch/arm/boot/dts/module-mb7707.dtb ../fw-debian-wheezy-3.10-ubifs-25082014/mb77.07.dtb
cp arch/arm/boot/uImage ../fw-debian-wheezy-3.10-ubifs-25082014/

Теперь в скрипте сборки ubifs можно запилить:

mkfs.ubifs -r /root/debrootfs -m 2048 -e 126976 -c 5000 -x favor_lzo -X 5 -o ubifs.img
ubinize -o ubi.img -m 2048 -p 128KiB -s 2048 ubinize.cfg

На всякий случай кастану ещё:

cast early_britney_fun

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

ihanick ()

На случай если пригодится, вот мои скрипты которыми варятся корневые фс raspbian и debian. Выглядит немного хакерски, но свое дело делает. Так как это не особенно документировано и не причесано, на гитхабе этого пока не лежит. Для распбиан:

#!/bin/bash -x
# $1 - proxychains 
# $2 - release (wheezy, jessie)
# $3 - passwd 
# 

PC=$1
RELEASE=$2
HOSTNAME=$3
PASSWD=$4
shift
shift
shift
shift

PKGS="$*"

config_image() {
    cat <<EOF
apt-get update
export DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true
debconf-set-selections /preseed.txt
apt-get -y --force-yes install locales tzdata
apt-get -y --force-yes install ${PKGS}
echo -e "${PASSWD}\n${PASSWD}" | passwd root
dpkg-reconfigure locales tzdata
rm /etc/apt/apt.conf.d/proxy
rm /etc/resolv.conf
rm /preseed.txt
echo $HOSTNAME > /etc/hostname
echo "127.0.0.1 $HOSTNAME localhost" > /etc/hosts
echo "T0:23:respawn:/sbin/getty -L ttyS0 38400 vt100" >> /etc/inittab
EOF
}


rm -Rf raspbian-${RELEASE}
debootstrap --foreign --variant=minbase --arch=armhf  --keyring /etc/apt/trusted.gpg  ${RELEASE} raspbian-${RELEASE} http://archive.raspbian.org/raspbian || exit 1
cp `which qemu-arm-static` ./raspbian-${RELEASE}/usr/bin/
cd raspbian-${RELEASE}
cp ../proxy ./etc/apt/apt.conf.d
cp /etc/resolv.conf ./etc/resolv.conf
cp ../preseed.txt ./ 
echo "/debootstrap/debootstrap --second-stage" | chroot .
../sources.list raspbian ${RELEASE} > etc/apt/sources.list
config_image | chroot .
sed 's/PermitRootLogin without-password/PermitRootLogin yes/' -i etc/ssh/sshd_config
cp ../interfaces ./etc/network/interfaces

exit 0

Для debian:

#!/bin/bash -x
# $1 - proxychains 
# $2 - release (wheezy, jessie)
# $3 - passwd 
# 

PC=$1
RELEASE=$2
HOSTNAME=$3
PASSWD=$4
shift
shift
shift
shift

PKGS="$*"

config_image() {
    cat <<EOF
apt-get update
export DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true
debconf-set-selections /preseed.txt
apt-get -y --force-yes install locales tzdata
apt-get -y --force-yes install ${PKGS}
echo -e "${PASSWD}\n${PASSWD}" | passwd root
dpkg-reconfigure locales tzdata
rm /etc/apt/apt.conf.d/proxy
rm /etc/resolv.conf
rm /preseed.txt
echo $HOSTNAME > /etc/hostname
echo "127.0.0.1 $HOSTNAME localhost" > /etc/hosts
echo "T0:23:respawn:/sbin/getty -L ttyS0 38400 vt100" >> /etc/inittab
EOF
}

rm -Rf debian-${RELEASE}
debootstrap --foreign --variant=minbase --arch=armel   ${RELEASE} debian-${RELEASE} http://ftp.ru.debian.org/debian/ || exit 1
cp `which qemu-arm-static` ./debian-${RELEASE}/usr/bin/
cd debian-${RELEASE}
cp ../proxy ./etc/apt/apt.conf.d
cp /etc/resolv.conf ./etc/resolv.conf
cp ../preseed.txt ./ 
echo "/debootstrap/debootstrap --second-stage" | chroot .
../sources.list debian ${RELEASE} > etc/apt/sources.list
config_image | chroot .
sed 's/PermitRootLogin without-password/PermitRootLogin yes/' -i etc/ssh/sshd_config
cp ../interfaces ./etc/network/interfaces

exit 0

В виде дополнительных пакетов я ставлю:

wget curl ifupdown isc-dhcp-client openssh-server net-tools nano madplay nmc-utils-bin nmc-utils-abs nmc-utils-doc apt-utils

nmc-utils - это утилиты для работы с nmc, чтобы они поставились надо прописать доп. репозиторий.

sources.list генерируется таким скриптом:

#!/bin/bash

debrepo() {
    cat <<EOF
#Debian official repositories
deb http://ftp.ru.debian.org/debian/ ${RELEASE} main contrib non-free"     > /etc/apt/sources.list
deb-src http://ftp.ru.debian.org/debian/ ${RELEASE} main contrib non-free" >> /etc/apt/sources.list
EOF
}

rasprepo() {
cat <<EOF
#Raspbian official repositories 
deb http://archive.raspbian.org/raspbian ${RELEASE} main contrib non-free rpi
deb-src http://archive.raspbian.org/raspbian ${RELEASE} main contrib non-free rpi
EOF
}

rcmrepo()
{
    cat <<EOF
# RC Module's repository with MB77.07 packages
deb http://www.module.ru/mb7707/ stable updates
EOF
}


DISTRO=$1 
RELEASE=$2
case $DISTRO in 
"raspbian") 
        rasprepo
        ;;
"debian")
        debrepo
        ;;
esac

rcmrepo
ncrmnt ★★★★★ ()
Последнее исправление: ncrmnt (всего исправлений: 1)
Ответ на: комментарий от ihanick

С йокто экспериментировали когда-то, надо поискать если где что осталось. Но там все просто. Собираем ФС с флагами

-O2 -mcpu=arm1176jzf-s -mfpu=vfp -mfloat-abi=hard

Дальше пакуем и запускаем. Ну либо по нфс.

ncrmnt ★★★★★ ()

Да, и образ можно делать через ubinize, не обязательно nandsim:

makeubifs.sh:

#!/bin/bash
# $1 == root fs dir 
# $2 == output dir

mkfs.ubifs -r "$1" -m 0x800 -e 0x1f000 -c 8192 -o "temp.img"
ubinize -vv -o "$2" -m 0x800 \
  -p 0x20000 -O 2048 ubinize.conf

ubinize.cfg:

[rootfs_volume]
mode=ubi
image=temp.img
vol_id=0
vol_type=dynamic
vol_name=rootfs 
vol_alignment=1
vol_flags=autoresize

ncrmnt ★★★★★ ()
Ответ на: комментарий от ncrmnt

Да, и образ можно делать через ubinize, не обязательно nandsim

nandsim я для распаковки привёл. Как я понимаю, уже готовый образ ubifs распаковать можно только залив и смонтировав на nand.

Кстати, а почему favor_lzo не используется?

ihanick ()
Ответ на: комментарий от ihanick

Емнип там FS без сжатия должна быть, ибо тратить ресурсы и без того не самого быстрого арма на сжатие/расжатие фс как-то ну совсем не весело. Никаких смертельных багов, которые бы препятствовали его использованию нет, можно попробовать.

ncrmnt ★★★★★ ()

смонтировать ubifs

Уперся и далее никак.Чего не так ?

Выполняю всё до шага mount /dev/ubi0_0 /mnt/ubifs

и получаю mount: специальное устройство /dev/ubi0_0 не существует

$ ls /dev/mtd* /dev/mtd0 /dev/mtd0ro

$ ls /dev/ubi* /dev/ubi_ctrl

$ cat /proc/mtd

dev: size erasesize name mtd0: 40000000 00020000 «NAND simulator partition 0»

edu08 ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.