пятница, 6 апреля 2012 г.

Linux и KTLX800/pITX

История
Участвуя в разработке встраиваемой системы, столкнулся с одноплатным компьютером KTLX800/pITX.

Для решения поставленной задачи было решено использовать ОС Linux. Естественно встал вопрос - какой дистрибутив выбрать?

По характеристикам одноплатный компьютер оказался достаточно мощным: процессор AMD Geode LX800 на 500 МГц в комплектации с оперативной памятью 1 Гб. В качестве устройства хранения используется MicroSD карточка. Все это значительно расширило круг возможных претендентов.

Требования
Для обеспечения работы конечного ПО (написанного на C++) и удобства его сборки, репозиторий дистрибутива должен иметь пакеты:
1. Boost
2. CMake
3. openssh-server

Сервер openssh нужен для настройки конечной системы, т.к. наличие монитора не предполагается.

Кроме того должна быть возможность установки не Live версии дистрибутива на сборочный сервер.

Damn Small Linux
Скачал на сайте DSL iso образ с syslinux загрузчиком.
Установил на MicroSD по инструкции (вариант Current ISO + Syslinux):
http://www.damnsmalllinux.org/wiki/index.php/Install_to_USB_From_within_Linux

После установки загрузка с карточки прошла успешно, даже запустились Иксы.

Репозиторий DSL:
http://distro.ibiblio.org/damnsmall/mydsl

В репозитории не оказалось Boost и CMake.

Кроме того установить DSL на MicroSD карточку в варианте hd install не удалось.
Пробовал по этой инструкции:
http://www.damnsmalllinux.org/wiki/index.php/Installing_to_the_Hard_Disk

В результате, я получил Live версию Linux, модифицировать которую весьма трудоемко. От дистрибутива DSL пришлось отказаться.

Knoppix
Скачал iso образ с последней версией.

Установил на MicroSD Live версию с помощью программы flash-knoppix.
На одноплатном компьютере Knoppix с карточки стартанул.

Попробовал установить полноценную версию на MicroSD командой
0wn

Не получилось:
No usable partition found

В результате, как и с DSL, получил Live версию. Правда все необходимые пакеты в Knoppix дистрибутиве есть.

Ubuntu 10.04 LTS Server
Скачал iso образ Ubuntu Server.
Сделал загрузочный flash диск с помощью UNetbootin.

Если в качестве файловой системы на flash диске использовать vfat, необходимо проследить чтобы все пути были корректны. Дело в том, что vfat не поддерживает символьные ссылки. Вместо них создаются пустые файлы.
Для корректной установки системы необходимо скопировать на место таких файлов каталоги на которые они должны указывать (кроме корневой ссылки ubuntu).

В процессе установки с flash диска, подготовленного UNetbootin не обнаружился cdrom:
No common CD-ROM drive was detected

Для решения этой проблемы необходимо:

1. По Alt+F2 переключиться на консоль
2. Смонтировать установочный flash диск в /cdrom:
mount -t vfat /dev/sda1 /cdrom
3. Переключится по Alt+F1
4. Указать device file:
/cdrom

Попробовал произвести установку на MicroSD, загрузившись с flash диска на самом одноплатном компьютере.
Установка закончилась с ошибкой:
base-installer: error: exiting on error base-installer/no_codename

Загрузившись с виртуальной машины удалось выполнить установку на MicroSD.
В качестве загрузчика установился Grub.

На одноплатном компьютере Grub успешно стартанул, но ядро загрузить не смог.
Причем никаких ошибок не выводилось - компьютер уходил в перезагрузку.

Вместо Grub установил Syslinux (вариант Manual Install):
https://wiki.archlinux.org/index.php/Syslinux

Теперь при загрузке ядра получил сообщение:
This kernel requires the following features not present on th CPU:
pae
Unable to boot - please use a kernel appropriate for your CPU

Оказывается в Ubuntu Server по умолчанию идет PAE ядро. Процессор AMD Geode LX800 этот режим работы не поддерживает. Поэтому ядро и не загружалось.

С помощью chroot на уже установленную систему на MicroSD поставил обычное generic ядро. Чтобы Syslinux загрузил это ядро необходимо поправить файл:
/boot/extlinux/extlinux.conf

После этого система успешно стартанула.

Весь дистрибутив Ubuntu Server занял порядка 600 Мб. По скорости работы замечаний не возникло. Необходимые пакеты в репозитории Ubuntu есть. В результате было решено остановится на этом варианте.

Замечания
1. Дистрибутив Damn Small Linux не поддерживается с 2008 года.
Поэтому для новых проектов рациональнее использовать альтернативные легковесные дистрибутивы, например Tiny Core Linux:
http://distro.ibiblio.org/tinycorelinux/welcome.html

2. Почему не использовались такие популярные дистрибутивы как Debian, Arch Linux или Gentoo?
Думаю, они отлично подошли бы для решения поставленной задачи. Но до их рассмотрения дело не дошло - дистрибутив был найден.

Ссылки
http://us.kontron.com/products/boards+and+mezzanines/embedded+sbc/pitx+25+sbc/ktlx800pitx.html - информация по KTLX800/pITX на сайте производителя
http://www.damnsmalllinux.org - дистрибутив Damn Small Linux
http://www.knoppix.com - дистрибутив Knoppix
http://www.wp-schulz.de - кастомизация Live версии Knoppix
http://releases.ubuntu.com/lucid - дистрибутив Ubuntu 10.04 LTS Server
http://unetbootin.sourceforge.net - программа для создания загрузочных flash дисков

Комментариев нет:

Отправить комментарий