Главная
Блог разработчиков phpBB
 
+ 17 предустановленных модов
+ SEO-оптимизация форума
+ авторизация через соц. сети
+ защита от спама

Установка Mono 3 на SoC семейства Allwiner A10/A20, на примере Cubieboard2

Anna | 17.06.2014 | нет комментариев
Здравствуйте,

В данной статье собрана информация из различных источников, по переводу плат семейства Cubieboard из категории непотребной игрушки. В отладочную площадку для продвинутого C# разработчика.

Это Linux, Это Hardcore детки

Что нам необходимо, SD карта, размером не менее 2 GB.
И собственно само перепрофилируемое устройство, в моем случае это Cubieboard2

Сперва необходима теснее установленная на Nand и работающая система. В моем случае это был lubuntu-server-13.08-v1.06. Так как оттуда потребуется один небольшой, но дюже значимый файл. Огромнее данная система никак не применяется.
Если хотите написать что то типа «Hello C# world on Linux», то этого вам довольно, так как в состав данной системы входит пакет на основе mono версии 2.10.8.1. К сожалению в данной версии есть несколько неприятных багов, которые не разрешают сделать что то больше серьёзное.
А кто говорил что будет легко, это… Собственно что то я теснее повторяюсь.

Следственно продолжаем.
Вот тут: https://romanrm.net/a10/debian скачиваем инсталляшку для вашего SoC’a.
Отчего эту? Потому что это одна из немногих, где система установлена по нужному минимуму, без кучи изначально непотребных пакетов.

Распаковываем и записываем её на SD карту.
Под Linux это дозволено сделать одной командой: bzip2 -dc a20-debian-server-2gb*.bz2 > /dev/sdX
Где /dev/sdX путь к вашей SD карте.

Под Windows распаковать дозволено скажем при помощи 7Zip, а записать на SD карту при помощиwin32diskimager.

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

Необходимо иметь локальный доступ к устройству, скажем монитор клава, либо я воспользовался адаптером USB-UART TTL 3.3V, параметры 115200/8/N/1. Так как сеть в данный момент еще не работает.
Входим в систему имя/пароль: root/password

Монтируем нашу Nand и копируем оттуда тот самый небольшой, но дюже значимый файлик.

cp /boot/script.bin /boot/script.bak
mount /dev/nanda /mnt
cp /mnt/script.bin /boot/
umount /dev/nanda
sync

Дабы не искать всякий раз устройство по необхватной домашней сети, так как в устройствах собранных на A20, разработчики не удосужились присвоить устройству ликвидный MAC адрес, и позже всякой перезагрузки он генерируется нечаянно, соответственно DHCP сервер назначает иной IP.

Прописываем ему в файлик /etc/network/interfaces следующее:

auto lo
iface lo inet loopback

auto eth0
# for DHCP
#iface eth0 inet dhcp
# hwaddress ether c0:b0:c0:a8:1:f5

# Static IP
iface eth0 inet static
 hwaddress ether c0:bo:c0:a8:1:17
 address 192.168.1.23
 network 192.168.1.0
 netmask 255.255.255.0
 broadcast 192.168.1.255
 gateway 192.168.1.1
 nameserver 192.168.1.1

Генерируем новые ключи для SSH сервера, изменяем пароль root’a

rm /etc/ssh/ssh_host_*
dpkg-reconfigure openssh-server
passwd
reboot

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

Обновляем систему до актуального состояния, устанавливаем локали и время

apt-get update
aptitude dist-upgrade
dpkg-reconfigure locales
dpkg-reconfigure tzdata

Если вы используете SD карту размером больше 2GB, то имеет толк расширить раздел с данными на всю карту.
Делается это дальнейшим образом, на примере теснее переразмеченного диска:

root@debian:/dev# fdisk /dev/mmcblk0

Command (m for help): p

Disk /dev/mmcblk0: 8018 MB, 8018460672 bytes
4 heads, 16 sectors/track, 244704 cylinders, total 15661056 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000cb560

        Device Boot      Start         End      Blocks   Id  System
/dev/mmcblk0p1            2048      127071       62512    e  W95 FAT16 (LBA)
/dev/mmcblk0p2          131072    15661055     7764992   83  Linux

глядим где у нас размещен 2 раздел. Значимо сберечь исходный адрес. В моем случае это был 131072.

удаляем раздел с данными, не пугайтесь мы их не удаляем физически, даже если в данный момент что то пойдет не так. Ничего ужасного не случится. Так как данные на диск еще не записаны.

Command (m for help): d
Partition number (1-4): 2

Создаем новейший раздел

Command (m for help): n
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): p
Partition number (1-4, default 2):
Using default value 2
First sector (127072-15661055, default 127072):

Вот тут значимо не ошибиться и не согласиться с значениями по умолчанию, а ввести ранее записанное значение первого сектора раздела.

First sector (127072-15661055, default 127072): 131072
Last sector,  sectors or  size{K,M,G} (131072-15661055, default 15661055):
Using default value 15661055

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

Command (m for help): p

Disk /dev/mmcblk0: 8018 MB, 8018460672 bytes
4 heads, 16 sectors/track, 244704 cylinders, total 15661056 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000cb560

        Device Boot      Start         End      Blocks   Id  System
/dev/mmcblk0p1            2048      127071       62512    e  W95 FAT16 (LBA)
/dev/mmcblk0p2          131072    15661055     7764992   83  Linux

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.

Сейчас нужно собственно известить системе, что она может применять все свободное пространство под раздел
resize2fs /dev/mmcblk0p2
И проверяем

root@debian:~# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/root       7.3G  746M  6.3G  11% /
....skip....

Уф, сейчас начинается самое увлекательное.
Так как для armv7l отсутствует формальный порт, по крайней при попытке установить, уведомляет, что mono-runtime отсутствует в списке доступных пакетов. Нам нужна экспериментальная версия.

Для начала нам необходимо перевести систему с стабильной ветки wheezy на sid experimental.
Приводим файл /etc/apt/sources.list к дальнейшему виду

deb ftp://ftp.debian.org/debian experimental main
deb ftp://ftp.debian.org/debian sid main contrib non-free

Дальше все стандартно

apt-get update
apt-get dist-upgrade
reboot

Ну и собственно из за чего затевался каждый данный сыр-бор

root@debian:~#apt-get -t experimental install mono-devel
....skip....
root@debian:~# uname -a
Linux debian 3.4.79-r0-s20-rm2  #54 SMP Tue Feb 18 01:09:07 YEKT 2014 armv7l GNU/Linux
root@debian:~t# mono -V
Mono JIT compiler version 3.2.8 (Debian 3.2.8 dfsg-4)
Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com
        TLS:           __thread
        SIGSEGV:       normal
        Notifications: epoll
        Architecture:  armel,vfp hard
        Disabled:      none
        Misc:          softdebug
        LLVM:          supported, not enabled.
        GC:            sgen
Источник: programmingmaster.ru
Оставить комментарий
Форум phpBB, русская поддержка форума phpBB
Рейтинг@Mail.ru 2008 - 2017 © BB3x.ru - русская поддержка форума phpBB