<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Программирование для мобильных устройств &#187; Embedded Linux</title>
	<atom:link href="http://mobile-developer.ru/category/embedded-linux/feed/" rel="self" type="application/rss+xml" />
	<link>http://mobile-developer.ru</link>
	<description>Программирование для мобильных устройств. Разработка для Windows Mobile, Windows CE, Embedded Linux, Google Android, iPhone, Palm webOS и др. Все о программировании для мобильных телефонов, смартфонов, КПК и других мобильных устройств. Статьи, новости, руководства, видео уроки.</description>
	<lastBuildDate>Sun, 05 Sep 2010 20:40:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Hello World для Sony PlayStation Portable (Linux)</title>
		<link>http://mobile-developer.ru/embedded-linux/hello-world-dlya-sony-playstation-portable-linux/</link>
		<comments>http://mobile-developer.ru/embedded-linux/hello-world-dlya-sony-playstation-portable-linux/#comments</comments>
		<pubDate>Tue, 14 Jul 2009 20:25:02 +0000</pubDate>
		<dc:creator>T-Rex</dc:creator>
				<category><![CDATA[Embedded Linux]]></category>
		<category><![CDATA[Game Development]]></category>
		<category><![CDATA[Mobile Games]]></category>

		<guid isPermaLink="false">http://mobile-developer.ru/?p=796</guid>
		<description><![CDATA[Сегодня у нас статья Егора Баранова о разработке для Sony PlayStation Portable. Больше полугода назад у меня появилась игровая консоль Sony Playstation Portable (или просто PSP). Надо сказать, что игры на ней отменные, консоль можно взять в любую поездку и приятно скоротать время в дороге. Как разработчику мне всегда было интересно, как же писать приложения [...]<p>Post from: <a href="http://mobile-developer.ru">Mobile-Developer.ru</a><br/><br/><a href="http://mobile-developer.ru/embedded-linux/hello-world-dlya-sony-playstation-portable-linux/">Hello World для Sony PlayStation Portable (Linux)</a></p>
]]></description>
			<content:encoded><![CDATA[<a class="google_buzz"  
href="http://www.google.com/reader/link?url=http://mobile-developer.ru/embedded-linux/hello-world-dlya-sony-playstation-portable-linux/&title=Hello+World+для+Sony+PlayStation+Portable+(Linux)&srcURL=http://mobile-developer.ru" target="_blank" rel="nofollow"><img
src="http://mobile-developer.ru/wp-content/plugins/google-buzz-button-for-wordpress/images/google-buzz.png" alt="Google Buzz" /></a><p>Сегодня у нас статья <noindex><a rel="nofollow" href="http://mobile-developer.ru/goto/http://goganchic.habrahabr.ru/"  target="_blank">Егора Баранова</a></noindex> о разработке для Sony PlayStation Portable.</p>
<p>Больше полугода назад у меня появилась игровая консоль Sony Playstation Portable (или просто PSP). Надо сказать, что игры на ней отменные, консоль можно взять в любую поездку и приятно скоротать время в дороге. Как разработчику мне всегда было интересно, как же писать приложения для PSP, я видел множество свободнораспространяющихся приложений, таких как PSP WiFile Transfer, Bookr и даже порты OpenSource игр, например OpenTTD, а недавно у меня появилось немного свободного времени, чтобы заняться вопросом разработки для PSP более подробно, поэтому я поискал информацию по данному вопросу и, как оказалось, программировать для PSP не так уж и сложно.</p>
<p><span id="more-796"></span>Итак, в данной статье мы рассмотрим настройку среды разработки для PSP на языках программирования Си и Си++ и написание простейшей классической программы Hello world.</p>
<p>Что же мы имеем изначально:</p>
<ol>
<li>дистрибутив Ubuntu 9.04</li>
<li>доступ в интернет (придется скачивать исходные коды библиотек, необходимых для разработки PSP программ)</li>
<li>свободное время порядка 3 — 4 часов (библиотеки собираются из исходных кодов, поэтому компиляция занимает несколько часов)</li>
</ol>
<p>Первое что нам потребуется — установить subversion:</p>
<p><strong>sudo aptitude install subversion</strong></p>
<p>Теперь можно получить последние исходные коды psptoolchain (кросскомпилятора для PSP)</p>
<p><strong>svn co svn://svn.ps2dev.org/psp/trunk/psptoolchain</strong></p>
<p>В полученной папке есть readme файл для всех и специально для дистрибутива Ubuntu (замечу, что psptoolchain можно собрать в любом linux дистрибутиве, а так же cygwin-е). В readme файле для дистрибутива Ubuntu написано что для сборки psptoolchain необходимо удовлетворить зависимости с помощью следующей команды:</p>
<p><strong>sudo apt-get install build-essential autoconf automake bison flex \</strong></p>
<p><strong>libncurses5-dev libreadline-dev libusb-dev texinfo libgmp3-dev \</strong></p>
<p><strong>libmpfr-dev subversion gcc-4.2</strong></p>
<p>что мы и сделаем. После этого нам нужно определить несколько переменных окружения. Добавим следующие строки в файл ~/.bashrc:</p>
<p><strong>export PSPDEV=&#8221;/usr/local/pspdev&#8221;</strong></p>
<p><strong>export PSPSDK=&#8221;$PSPDEV/psp/sdk&#8221;</strong></p>
<p><strong>export PATH=&#8221;$PATH:$PSPDEV/bin:$PSPSDK/bin&#8221;</strong></p>
<p>и выполним команду:</p>
<p><strong>source ~/.bashrc</strong></p>
<p>Теперь можно приступить непосредственно к сборке среды разработки:</p>
<p><strong>cd psptoolchain</strong></p>
<p><strong>sudo ./toolchain-sudo.sh</strong></p>
<p>После этого необходимо получить дополнительные библиотеки для разработки (zlib, SDL и т.п.). Для этого сначала получим набор скриптов из SVN с помощью следующей команды:</p>
<p><strong>svn co svn://svn.ps2dev.org/psp/trunk/psplibraries psplibraries</strong></p>
<p>К сожалению в скриптах установки дополнительных библиотек есть ошибка, для того чтобы ее исправить необходимо сделать следующее: открваем файл psplibraries/scripts/003-freetype.sh и заменяем его содержимое на следующий текст:</p>
<pre class="brush: jscript;">
#!/bin/sh
# freetype.sh by Dan Peori (danpeori@oopo.net)
## Download the latest source code.

if test ! -d &quot;freetype&quot;; then
svn checkout svn://svn.ps2dev.org/psp/trunk/freetype || { exit 1; }
else
svn update freetype || { exit 1; }
fi

## Enter the source directory.
cd freetype || { exit 1; }
cd builds/unix
automake --add-missing
cd ../..

## Bootstrap the source.
sh autogen.sh || { exit 1; }

## Configure the build.
LDFLAGS=&quot;-L$(psp-config --pspsdk-path)/lib -lc -lpspuser&quot; ./configure --host psp --prefix=$(psp-config --psp-prefix) || { exit 1; }

## Compile and install.
make clean &amp;&amp; make -j2 &amp;&amp; make install &amp;&amp; make clean || { exit 1; }
</pre>
<p>После этого установим одну зависимость:</p>
<p><strong>sudo aptitude install libtool</strong></p>
<p>и запускаем компиляцию библиотек:</p>
<p><strong>sudo ./libraries-sudo.sh</strong></p>
<p><span>После данных махинаций мы имеем кросскомпилятор и набор библиотек для разработки программ для PSP на Си и Си++. Давайте напишем нашу первую программу.</span></p>
<pre class="brush: cpp;">
#include &lt;pspkernel.h&gt;
#include &lt;pspdebug.h&gt;

PSP_MODULE_INFO(&quot;Hello World&quot;, 0, 1, 1);
#define printf pspDebugScreenPrintf

/* Exit callback */
int exit_callback(int arg1, int arg2, void *common) {
    sceKernelExitGame();
    return 0;
}

/* Callback thread */
int CallbackThread(SceSize args, void *argp) {
    int cbid;
    cbid = sceKernelCreateCallback(&quot;Exit Callback&quot;, exit_callback, NULL);
    sceKernelRegisterExitCallback(cbid);
    sceKernelSleepThreadCB();
    return 0;
}

/* Sets up the callback thread and returns its thread id */
int SetupCallbacks(void) {
    int thid = 0;
    thid = sceKernelCreateThread(&quot;update_thread&quot;, CallbackThread, 0x11, 0xFA0, 0, 0);
    if(thid &gt;= 0) {
        sceKernelStartThread(thid, 0, 0);
    }
    return thid;
}

int main() {
    pspDebugScreenInit();
    SetupCallbacks();
    printf(&quot;Hello World&quot;);
    sceKernelSleepThread();
    return 0;
}
</pre>
<p>Итак, с помощью макроса PSP_MODULE_INFO мы определяем задаем информацию о нашей программе и ее версии, далее опредяем несколько стандартных callback-ов и соотвественно главную функцию нашей программы main — которая устанавливает заданные нами callback-и и печатает на экране заветную строку «Hello world».</p>
<p>Теперь напишем Makefile для того чтобы собрать наш код.</p>
<pre class="brush: jscript;">
TARGET = hello
OBJS = main.o
CFLAGS = -O2 -G0 -Wall
CXXFLAGS = $(CFLAGS) -fno-exceptions -fno-rtti
ASFLAGS = $(CFLAGS)
EXTRA_TARGETS = EBOOT.PBP
PSP_EBOOT_TITLE = Hello world
PSPSDK=$(shell psp-config --pspsdk-path)
include $(PSPSDK)/lib/build.mak
</pre>
<p>Скомпилируем нашу программу командой make. Полученный файл EBOOT.PBP поместим на консоль в папку psp/game/hello. Вот и все. В следующей статье мы рассмотрим, как контролировать нажатия клавиш.</p>
<p><a href="http://mobile-developer.ru/?p=796&#038;preview=true" >Оригинал статьи</a>.</p>
<p>Post from: <a href="http://mobile-developer.ru" >Mobile-Developer.ru</a><br/><br/><a href="http://mobile-developer.ru/embedded-linux/hello-world-dlya-sony-playstation-portable-linux/" >Hello World для Sony PlayStation Portable (Linux)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://mobile-developer.ru/embedded-linux/hello-world-dlya-sony-playstation-portable-linux/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Maemo 5 Beta SDK Released</title>
		<link>http://mobile-developer.ru/embedded-linux/maemo-5-beta-sdk-released/</link>
		<comments>http://mobile-developer.ru/embedded-linux/maemo-5-beta-sdk-released/#comments</comments>
		<pubDate>Thu, 30 Apr 2009 13:36:31 +0000</pubDate>
		<dc:creator>T-Rex</dc:creator>
				<category><![CDATA[Embedded Linux]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[SDK]]></category>
		<category><![CDATA[Maemo]]></category>

		<guid isPermaLink="false">http://mobile-developer.ru/?p=717</guid>
		<description><![CDATA[И вот, вышла новая версия Maemo SDK. В этом релизе: Поддержка OMAP3. Поддержка HSPA. Поддержка камер высокого разрешения. Аппаратное ускорение вывода графики. SDK включает упрощенную реализацию рабочего стола и меню приложений. Режим редактирования рабочего стола включен чтобы облегчить управление приложениями и тестирование виджетов. В комплект включена предварительная версия документации для разработчиков. Post from: Mobile-Developer.ruMaemo 5 [...]<p>Post from: <a href="http://mobile-developer.ru">Mobile-Developer.ru</a><br/><br/><a href="http://mobile-developer.ru/embedded-linux/maemo-5-beta-sdk-released/">Maemo 5 Beta SDK Released</a></p>
]]></description>
			<content:encoded><![CDATA[<a class="google_buzz"  
href="http://www.google.com/reader/link?url=http://mobile-developer.ru/embedded-linux/maemo-5-beta-sdk-released/&title=Maemo+5+Beta+SDK+Released&srcURL=http://mobile-developer.ru" target="_blank" rel="nofollow"><img
src="http://mobile-developer.ru/wp-content/plugins/google-buzz-button-for-wordpress/images/google-buzz.png" alt="Google Buzz" /></a><p style="margin-bottom: 0in;">И вот, вышла новая версия Maemo SDK. В этом релизе:</p>
<ul>
<li>Поддержка <noindex><a rel="nofollow" href="http://mobile-developer.ru/goto/http://en.wikipedia.org/wiki/OMAP3#OMAP3"  target="_blank">OMAP3</a></noindex>.</li>
<li>Поддержка <noindex><a rel="nofollow" href="http://mobile-developer.ru/goto/http://en.wikipedia.org/wiki/High_Speed_Packet_Access"  target="_blank">HSPA</a></noindex>.</li>
<li>Поддержка камер высокого разрешения.</li>
<li>Аппаратное ускорение вывода графики.</li>
</ul>
<p>SDK включает упрощенную реализацию рабочего стола и меню приложений. Режим редактирования рабочего стола включен чтобы облегчить управление приложениями и тестирование виджетов.</p>
<p>В комплект включена предварительная версия <noindex><a rel="nofollow" href="http://mobile-developer.ru/goto/http://maemo.org/development/sdks/maemo_5_beta_docs/"  target="_blank">документации для разработчиков</a></noindex>.</p>
<p><a href="http://mobile-developer.ru/wp-content/uploads/2009/04/maemo5-sdk-beta.png" ><img class="alignnone size-full wp-image-718" title="maemo5-sdk-beta" src="http://mobile-developer.ru/wp-content/uploads/2009/04/maemo5-sdk-beta.png" alt="maemo5-sdk-beta" width="641" height="384" /></a></p>
<p>Post from: <a href="http://mobile-developer.ru" >Mobile-Developer.ru</a><br/><br/><a href="http://mobile-developer.ru/embedded-linux/maemo-5-beta-sdk-released/" >Maemo 5 Beta SDK Released</a></p>
]]></content:encoded>
			<wfw:commentRss>http://mobile-developer.ru/embedded-linux/maemo-5-beta-sdk-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Установка Ubuntu Jaunty на Nokia N800/N810</title>
		<link>http://mobile-developer.ru/embedded-linux/ustanovka-ubuntu-jaunty-na-nokia-n800n810/</link>
		<comments>http://mobile-developer.ru/embedded-linux/ustanovka-ubuntu-jaunty-na-nokia-n800n810/#comments</comments>
		<pubDate>Mon, 16 Mar 2009 23:20:33 +0000</pubDate>
		<dc:creator>T-Rex</dc:creator>
				<category><![CDATA[Embedded Linux]]></category>

		<guid isPermaLink="false">http://mobile-developer.ru/?p=563</guid>
		<description><![CDATA[Дмитрий Халин любезно предоставил нам руководство по установке Ubuntu Jaunty на Nokia N800/N810. Вступление Предлагаю вашему вниманию перевод этой инструкции по установке Ubuntu Jaunty на Nokia N800/N810. Что работает: Dsme Hal (частично) Screen diming Xserver-xorg Простые эффекты Compiz Управление питанием Usbnet emergency talend Powersave Bluetooth Right click Беспроводная сеть keymapping (аппаратные клавиши и виртуальная клавиатура) [...]<p>Post from: <a href="http://mobile-developer.ru">Mobile-Developer.ru</a><br/><br/><a href="http://mobile-developer.ru/embedded-linux/ustanovka-ubuntu-jaunty-na-nokia-n800n810/">Установка Ubuntu Jaunty на Nokia N800/N810</a></p>
]]></description>
			<content:encoded><![CDATA[<a class="google_buzz"  
href="http://www.google.com/reader/link?url=http://mobile-developer.ru/embedded-linux/ustanovka-ubuntu-jaunty-na-nokia-n800n810/&title=Установка+Ubuntu+Jaunty+на+Nokia+N800/N810&srcURL=http://mobile-developer.ru" target="_blank" rel="nofollow"><img
src="http://mobile-developer.ru/wp-content/plugins/google-buzz-button-for-wordpress/images/google-buzz.png" alt="Google Buzz" /></a><p><noindex><a rel="nofollow" href="http://mobile-developer.ru/goto/http://dr1v3.habrahabr.ru/" >Дмитрий Халин</a></noindex> любезно предоставил нам руководство по установке Ubuntu Jaunty на Nokia N800/N810.</p>
<h4>Вступление</h4>
<p>Предлагаю вашему вниманию перевод <noindex><a rel="nofollow" href="http://mobile-developer.ru/goto/http://www.internettablettalk.com/forums/showthread.php?t=25975" >этой</a></noindex> инструкции по установке <strong>Ubuntu Jaunty</strong> на <strong>Nokia N800/N810</strong>.<br />
Что работает:</p>
<ul>
<li>Dsme</li>
<li>Hal (частично)</li>
<li>Screen diming</li>
<li>Xserver-xorg</li>
<li>Простые эффекты Compiz</li>
<li>Управление питанием</li>
<li>Usbnet emergency talend</li>
<li>Powersave</li>
<li>Bluetooth</li>
<li>Right click</li>
<li>Беспроводная сеть</li>
<li>keymapping (аппаратные клавиши и виртуальная клавиатура)</li>
</ul>
<p><a href="http://mobile-developer.ru/wp-content/uploads/2009/03/ubuntu-on-nokia-n800.jpg" ><img src="http://mobile-developer.ru/wp-content/uploads/2009/03/ubuntu-on-nokia-n800.jpg" alt="Ubuntu Jaunty на Nokia N800/N810" title="Ubuntu Jaunty на Nokia N800/N810" width="600" height="360" class="aligncenter size-full wp-image-566" /></a><br />
Подробности под катом.<br />
Что не работает:</p>
<ul>
<li>Usplash (не запускается, возможно наше ядро его не поддерживает?)</li>
<li>Звук (закрытый исходный код)</li>
</ul>
<p><span id="more-563"></span><br />
Установочный процесс потребует наличия следующего:</p>
<ul>
<li>easyroot / rootsh / becomeroot</li>
<li>debootstrap</li>
<li>базовые знания командной строки</li>
<li>e2fsprogs</li>
<li>2-4Гб карта mmc — 4 Гб+ если вы планируете установить ubuntu-desktop.</li>
<li>Bootmenu form deblet</li>
<li>binutils</li>
</ul>
<h4>Шаг первый: подготовка карты памяти</h4>
<p>Для этого выполним следующее в терминале под root&#8217;ом (Я использую 4GB mmc с 356мб fat16 разделом и 3.6гб для linux83 — нашим корневым разделом)</p>
<pre class="brush: jscript;">
umount /dev/mmcblk0p1
sfdisk -uM /dev/mmcblk0
356,6
,,L
,,
,,
</pre>
<h4>Шаг второй: форматирование разделов</h4>
<pre class="brush: jscript;">
umount /dev/mmcblk0p1
mkdosfs /dev/mmcblk0p1
mkfs.ext3 /dev/mmcblk0p2
</pre>
<h4>Шаг третий: переход в свежеустанавливаемую систему</h4>
<p>Создадим директорию, куда будем устанавливать систему:</p>
<pre class="brush: jscript;">
mkdir -p /mnt/jaunty
</pre>
<p>Далее скачаем скрипт <noindex><a rel="nofollow" href="http://mobile-developer.ru/goto/http://www.internettablettalk.com/forums/attachment.php?s=b12cfb27ec51cd35fe0e167b9b58f50f&amp;attachmentid=2990&amp;d=1231087448" >bootstrap-script.tar.gz</a></noindex>, уберем симлинк</p>
<pre class="brush: jscript;">
rm -f /usr/share/debootstrap/scripts/jaunty
</pre>
<p>и распакуем наш скрипт в <code>/usr/share/debootstrap/scripts</code> под пользователем root.</p>
<p>Далее мы должны добавить md5sum в наш /bin каталог для правильной работы debootstrap. Скачаем <noindex><a rel="nofollow" href="http://mobile-developer.ru/goto/http://www.internettablettalk.com/forums/attachment.php?s=b12cfb27ec51cd35fe0e167b9b58f50f&amp;attachmentid=3015&amp;d=1231986639" >md5sum</a></noindex> и распакуем в /bin под пользователем root.</p>
<p>Далее смонтируем наш ubuntu раздел в /mnt/jaunty и начнём установку(это может занять много времени):</p>
<pre class="brush: jscript;">
insmod /mnt/initfs/lib/modules/`uname -r`/mbcache.ko
insmod /mnt/initfs/lib/modules/`uname -r`/ext2.ko
insmod /mnt/initfs/lib/modules/`uname -r`/jbd.ko
insmod /mnt/initfs/lib/modules/`uname -r`/ext3.ko
mount /dev/mmcblk0p2 /mnt/jaunty -o noatime
debootstrap --include=&quot;language-pack-en,language-pack-en-base,dmsetup,cryptsetup,hashalot,nano,sudo&quot; --components=main,multiverse,universe,restricted --verbose --arch=armel jaunty /mnt/jaunty http://ports.ubuntu.com/ /usr/share/debootstrap/scripts/jaunty
</pre>
<p>И, наконец, chroot&#8217;имся в установленную систему и создаём устройства консоли:</p>
<pre class="brush: jscript;">
mount /proc /mnt/jaunty/proc
mount /sys /mnt/jaunty/sys
chroot /mnt/jaunty
cd /dev; /sbin/MAKEDEV fb0 fb1 fb2 fb3 fb4 fb5 fb6 fb7
exit
</pre>
<h4>Шаг четвертый: подготовка базовой системы к загрузке</h4>
<p>Примонтируем нужные каталоги:</p>
<pre class="brush: jscript;">
mount /dev /mnt/jaunty/dev
mount /dev/pts /mnt/jaunty/dev/pts
mount /tmp /mnt/jaunty/tmp
chroot /mnt/jaunty
export LC_ALL=C
</pre>
<p>Добавим пароль пользователя root:</p>
<pre class="brush: jscript;">
passwd root
</pre>
<p>Настроим репозиторий, изменив файл /etc/apt/sorces.lst:</p>
<pre class="brush: jscript;">
#Ubuntu jaunty alpha
deb http://ports.ubuntu.com jaunty main restricted universe multiverse
deb-src http://ports.ubuntu.com jaunty main restricted universe multiverse

#Mer alpha
deb http://repository.mer.tspre.org/ alpha contrib main non-free
deb-src http://repository.mer.tspre.org/ alpha contrib main non-free

#Deblet sid
deb http://packages.tspre.org/ sid main contrib non-free
deb-src http://packages.tspre.org/ sid main contrib non-free

#Ubuntu N8x0
deb http://www.bman.maemobox.org/repository alpha contrib main non-free
deb-src http://www.bman.maemobox.org/repository alpha contrib main non-free
</pre>
<h5>Далее настроим apt-get:</h5>
<pre class="brush: jscript;">
touch /etc/apt/preferences
</pre>
<p>Добавим следующее в /etc/apt/preferences:</p>
<pre class="brush: jscript;">
Package: *
Pin: release a=jaunty
Pin-Priority: 900

Package: *
Pin: release a=alpha
Pin-Priority: 340

Package: *
Pin: release a=sid
Pin-Priority: 300
</pre>
<h5>Установим базовую систему:</h5>
<pre class="brush: jscript;">
wget http://packages.tspre.org/repo.key
apt-key add repo.key
apt-get update
apt-get -t alpha install cx3110x-module cx3110x-umac-module ke-recv-l10n-public kernel-diablo-modules-fbcon kernel-diablo mce-dummy nokia-n8x0-firmware nokia-tablets-pointercal omap-fb-console omap-fb-tools usbnet-emergency-telnetd utelnetd xresponse-visualize tablet-wireless xserver-xorg-video-omapfb synaptic aptitude console-tools
apt-get install ubuntu-rescue-menu ubuntu-omap-fb-splash nit-bootmenu-compat
apt-get install xserver-xorg-input-tslib=0.0.5-1mer7
apt-get remove xserver-xorg-input-all xserver-xorg-input-synaptics
</pre>
<p>Установим файл <noindex><a rel="nofollow" href="http://mobile-developer.ru/goto/http://www.internettablettalk.com/forums/attachment.php?s=b12cfb27ec51cd35fe0e167b9b58f50f&amp;attachmentid=3008&amp;d=1231608511" >boottime.kmap.gz</a></noindex> для работы клавиатуры:</p>
<pre class="brush: jscript;">
cp /path/to/boottime.kmap.gz /mnt/jaunty/etc/
</pre>
<p>Далее отредактируем ряд файлов:<br />
<strong>/etc/X11/xorg.conf</strong></p>
<pre class="brush: jscript;">
# xorg.conf (X.Org X Window System server configuration file)
#
# This file was generated by dexconf, the Debian X Configuration tool, using
# values from the debconf database.
#
# Edit this file with caution, and see the xorg.conf manual page.
# (Type &quot;man xorg.conf&quot; at the shell prompt.)
#
# This file is automatically updated on xserver-xorg package upgrades *only*
# if it has not been modified since the last upgrade of the xserver-xorg
# package.
#
# If you have edited this file but would like it to be automatically updated
# again, run the following command:
# sudo dpkg-reconfigure -phigh xserver-xorg

Section &quot;InputDevice&quot;
Identifier &quot;Generic Keyboard&quot;
Driver &quot;kbd&quot;
Option &quot;XkbRules&quot; &quot;xorg&quot;
Option &quot;XkbModel&quot; &quot;pc104&quot;
Option &quot;XkbLayout&quot; &quot;us&quot;
EndSection

Section &quot;InputDevice&quot;
Identifier &quot;tslib&quot;
Driver &quot;tslib&quot;
Option &quot;ScreenNumber&quot; &quot;0&quot;
Option &quot;Width&quot; &quot;800&quot;
Option &quot;Height&quot; &quot;480&quot;
Option &quot;Rotate&quot; &quot;NONE&quot;
Option &quot;TslibDevice&quot; &quot;/dev/input/event3&quot;
Option &quot;CorePointer&quot;
EndSection

Section &quot;Device&quot;
Identifier &quot;Configured Video Device&quot;
# Option &quot;UseFBDev&quot; &quot;true&quot;
Driver &quot;omapfb&quot;
Option &quot;fb&quot; &quot;/dev/fb0&quot;
EndSection

Section &quot;Monitor&quot;
Identifier &quot;Configured Monitor&quot;
EndSection

Section &quot;Screen&quot;
Identifier &quot;Default Screen&quot;
Monitor &quot;Configured Monitor&quot;
EndSection
</pre>
<p><strong>/etc/rc.local</strong></p>
<pre class="brush: jscript;">
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will &quot;exit 0&quot; on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
/sbin/fb_update_mode auto
exit 0
</pre>
<p><strong>/etc/fstab</strong></p>
<pre class="brush: jscript;">
rootfs / rootfs defaults,errors=remount-ro,noatime,nodiratime 0 1
proc /proc proc defaults 0 0
/dev/mtdblock4 /mnt/rootfs jffs2 defaults 0 0
/dev/mmcblk0p1 swap swap defaults 0 0
/dev/mmcblk1p1 /media/mmc1 vfat defaults 0 0
</pre>
<p>/<strong>etc/X11/Xwrapper.config</strong></p>
<pre class="brush: jscript;">
# Xwrapper.config (Debian X Window System server wrapper configuration file)
#
# This file was generated by the post-installation script of the x11-common
# package using values from the debconf database.
#
# See the Xwrapper.config(5) manual page for more information.
#
# This file is automatically updated on upgrades of the x11-common package
# *only* if it has not been modified since the last upgrade of that package.
#
# If you have edited this file but would like it to be automatically updated
# again, run the following command as root:
# dpkg-reconfigure x11-common
allowed_users=anybody
nice_value=-1
</pre>
<p>В файле <strong>/etc/init.d/hwclock.sh</strong> <code>HWCLOCKPARS=</code> изменим на <code>HWCLOCKPARS="--directisa"</code> и добавим это в <strong>/etc/default/rcS</strong>:</p>
<pre class="brush: jscript;">
echo 'HWCLOCKPARS=--directisa' &lt;&lt; /etc/default/rcS
</pre>
<p>Уменьшим время загрузки:</p>
<pre class="brush: jscript;">
apt-get install insserv
echo 'CONCURRENCY=shell' &lt;&lt; /etc/default/rcS
</pre>
<p>Если вы не заинтересованы в установке ubuntu-desktop то можете выполнить следующее и сразу перейти к шагу 7.</p>
<pre class="brush: jscript;">
exit
exit
umount /mnt/jaunty/dev/pts
umount /mnt/jaunty/dev
umount /mnt/jaunty/proc
umount /mnt/jaunty/sys
umount /mnt/jaunty/tmp
fuser -m /mnt/jaunty -k
umount /mnt/jaunty
</pre>
<h4>Шаг пятый: установка ubuntu-desktop</h4>
<p>Выполните следующее в терминале, это может занять несколько часов:</p>
<pre class="brush: jscript;">
apt-get install ubuntu-desktop matchbox-keyboard
apt-get clean
</pre>
<p>Поправим файл <strong>/etc/gdm/gdm.conf-costom</strong> для автоматического логина:</p>
<pre class="brush: jscript;">
[daemon]
# Automatic login, if true the first attached screen will automatically logged
# in as user as set with AutomaticLogin key.
AutomaticLoginEnable=true
AutomaticLogin=user
</pre>
<h4>Шаг шестой: активация файла подкачки</h4>
<p>Выполним следующее в терминале:</p>
<pre class="brush: jscript;">
mkswap /dev/mmcblk1p3
</pre>
<p>Добавим в <strong>/etc/fstab</strong> следующую строку:</p>
<pre class="brush: jscript;">
/dev/mmcblk1p3 swap swap defaults 0 0
</pre>
<h4>Шаг седьмой: создание меню загрузки</h4>
<p>Создайте файл <strong>/etc/bootmenu.d/ubuntu.item</strong> и добавьте туда следующее(в случае раздела Ubuntu в /dev/mmcblk0p2):</p>
<pre class="brush: jscript;">
ITEM_NAME=&quot;Ubuntu on mmcblk0p2&quot;
ITEM_ID=&quot;Ubuntu on mmcblk0p2&quot;
ITEM_DEVICE=&quot;mmcblk0p2&quot;
ITEM_MODULES=&quot;mbcache jbd ext3&quot;
ITEM_FSTYPE=&quot;ext3&quot;
ITEM_FSOPTIONS=&quot;noatime,ro&quot;
ITEM_LINUXRC=&quot;linuxrc&quot;
</pre>
<p>И выполните следующую команду в терминале:</p>
<pre class="brush: jscript;">
refresh_bootmenu.d
</pre>
<p><strong>Всё, теперь у вас есть установленная система Ubuntu Jaunty!</strong><br />
Скриншоты можно посмотреть <noindex><a rel="nofollow" href="http://mobile-developer.ru/goto/http://www.bman.maemobox.org/projects/ubuntu-n8x0/screenshots/gallery.html" >здесь</a></noindex>.</p>
<p><noindex><a rel="nofollow" href="http://mobile-developer.ru/goto/http://habrahabr.ru/blogs/ubuntu/54487/" >Оригинал статьи находится здесь</a></noindex>.</p>
<p>Post from: <a href="http://mobile-developer.ru" >Mobile-Developer.ru</a><br/><br/><a href="http://mobile-developer.ru/embedded-linux/ustanovka-ubuntu-jaunty-na-nokia-n800n810/" >Установка Ubuntu Jaunty на Nokia N800/N810</a></p>
]]></content:encoded>
			<wfw:commentRss>http://mobile-developer.ru/embedded-linux/ustanovka-ubuntu-jaunty-na-nokia-n800n810/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Вышел Maemo 5 alpha SDK</title>
		<link>http://mobile-developer.ru/embedded-linux/vyshel-maemo-5-alpha-sdk/</link>
		<comments>http://mobile-developer.ru/embedded-linux/vyshel-maemo-5-alpha-sdk/#comments</comments>
		<pubDate>Mon, 02 Mar 2009 16:26:39 +0000</pubDate>
		<dc:creator>T-Rex</dc:creator>
				<category><![CDATA[Embedded Linux]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Maemo]]></category>

		<guid isPermaLink="false">http://mobile-developer.ru/?p=523</guid>
		<description><![CDATA[Сегодня компания Nokia аноносировала Maemo 5 alpha SDK с новой UI-библиотекой и API для разработки приложений. разработчики теперь могут использовать аппаратное 3D ускорение для приложений с WVGA разрешением. Т.к. SDK находится в стадии Alpha-тестирования, то возможны изменения в API, но разработчики, которые хотят ознакомиться с возможностями или начать портирование приложений для платформы Maemo уже могут [...]<p>Post from: <a href="http://mobile-developer.ru">Mobile-Developer.ru</a><br/><br/><a href="http://mobile-developer.ru/embedded-linux/vyshel-maemo-5-alpha-sdk/">Вышел Maemo 5 alpha SDK</a></p>
]]></description>
			<content:encoded><![CDATA[<a class="google_buzz"  
href="http://www.google.com/reader/link?url=http://mobile-developer.ru/embedded-linux/vyshel-maemo-5-alpha-sdk/&title=Вышел+Maemo+5+alpha+SDK&srcURL=http://mobile-developer.ru" target="_blank" rel="nofollow"><img
src="http://mobile-developer.ru/wp-content/plugins/google-buzz-button-for-wordpress/images/google-buzz.png" alt="Google Buzz" /></a><p>Сегодня компания Nokia аноносировала <noindex><a rel="nofollow" href="http://mobile-developer.ru/goto/http://maemo.org/development/sdks/maemo5_alpha_sdk/" title="Maemo 5 Alpha SDK"  target="_blank">Maemo 5 alpha SDK</a></noindex> с новой UI-библиотекой и API для разработки приложений. разработчики теперь могут использовать аппаратное 3D ускорение для приложений с WVGA разрешением.</p>
<p><a href="http://mobile-developer.ru/wp-content/uploads/2009/03/maemo5_alpha__sdk_desktop.png" ><img class="alignnone size-full wp-image-524" title="Maemo 5 Alpha Desktop" src="http://mobile-developer.ru/wp-content/uploads/2009/03/maemo5_alpha__sdk_desktop.png" alt="Рабочий стол в Maemo 5 alpha" width="600" height="360" /></a></p>
<p>Т.к. SDK находится в стадии Alpha-тестирования, то возможны изменения в API, но разработчики, которые хотят ознакомиться с возможностями или начать портирование приложений для платформы Maemo уже могут начать его использование.</p>
<p><span id="more-523"></span>В SDK есть поддержка:</p>
<ul>
<li> Location API</li>
<li> City Information</li>
<li> Time management.</li>
<li> Vibra service.</li>
<li> Device orientation.</li>
</ul>
<p>Остальные программные интерфейсы остались те же что и в Maemo 4 SDK, но для них были выполнены доработки.</p>
<p>Более детально об изменениях в новой версии можно узнать, ознакомившись с <noindex><a rel="nofollow" href="http://mobile-developer.ru/goto/http://maemo.org/development/sdks/maemo5_alpha_release_notes/" title="Maemo 5 alpha SDK Release Notes" >Maemo 5 SDK Release Notes</a></noindex>.</p>
<p><noindex><a rel="nofollow" href="http://mobile-developer.ru/goto/http://maemo.org/development/sdks/maemo5_alpha_overview/" title="Обзор изменений в UI в Maemo 5"  target="_blank">Узнать больше об изменениях в UI для Maemo 5</a></noindex>.</p>
<p><a href="http://mobile-developer.ru/wp-content/uploads/2009/03/maemo5_alpha_sdk_sampleapplication.png" ><img class="alignnone size-full wp-image-526" title="Maemo 5 - Пример приложения из SDK" src="http://mobile-developer.ru/wp-content/uploads/2009/03/maemo5_alpha_sdk_sampleapplication.png" alt="MaemoPad - Пример из SDK" width="600" height="364" /></a></p>
<p><noindex><a rel="nofollow" href="http://mobile-developer.ru/goto/http://repository.maemo.org/pool/maemo5.0alpha/free/" title="Maemo 5 alpha SDK Source Code Repository"  target="_blank">Скачать исходный код Maemo 5 alpha SDK</a></noindex>.</p>
<p>Post from: <a href="http://mobile-developer.ru" >Mobile-Developer.ru</a><br/><br/><a href="http://mobile-developer.ru/embedded-linux/vyshel-maemo-5-alpha-sdk/" >Вышел Maemo 5 alpha SDK</a></p>
]]></content:encoded>
			<wfw:commentRss>http://mobile-developer.ru/embedded-linux/vyshel-maemo-5-alpha-sdk/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>KaeilOS &#8211; новый Linux дистрибутив для мобильных устройств</title>
		<link>http://mobile-developer.ru/embedded-linux/kaeilos-novyj-linux-distributiv-dlya-mobilnyx-ustrojstv/</link>
		<comments>http://mobile-developer.ru/embedded-linux/kaeilos-novyj-linux-distributiv-dlya-mobilnyx-ustrojstv/#comments</comments>
		<pubDate>Fri, 27 Feb 2009 09:56:12 +0000</pubDate>
		<dc:creator>T-Rex</dc:creator>
				<category><![CDATA[Embedded Linux]]></category>
		<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://mobile-developer.ru/?p=500</guid>
		<description><![CDATA[Koan Software начала свободное распространения Linux дистрибутива KaeilOS4.0, ориентированного для использования на встраиваемой технике, мобильных устройствах, КПК и телефонах. ОС базируется на real-time расширениях к Linux ядру RTAI, адаптируется как для обычных ПК, так и для устройств с ограниченными ресурсами, поддерживает широкий спектр процессоров, совместимых с x86 и ARM, поддерживает установку на телефон OpenMoko FreeRunner [...]<p>Post from: <a href="http://mobile-developer.ru">Mobile-Developer.ru</a><br/><br/><a href="http://mobile-developer.ru/embedded-linux/kaeilos-novyj-linux-distributiv-dlya-mobilnyx-ustrojstv/">KaeilOS &#8211; новый Linux дистрибутив для мобильных устройств</a></p>
]]></description>
			<content:encoded><![CDATA[<a class="google_buzz"  
href="http://www.google.com/reader/link?url=http://mobile-developer.ru/embedded-linux/kaeilos-novyj-linux-distributiv-dlya-mobilnyx-ustrojstv/&title=KaeilOS+&#8211;+новый+Linux+дистрибутив+для+мобильных+устройств&srcURL=http://mobile-developer.ru" target="_blank" rel="nofollow"><img
src="http://mobile-developer.ru/wp-content/plugins/google-buzz-button-for-wordpress/images/google-buzz.png" alt="Google Buzz" /></a><p><strong>Koan Software</strong> начала свободное распространения Linux дистрибутива <strong>KaeilOS4.0</strong>, ориентированного для использования на встраиваемой технике, мобильных устройствах, КПК и телефонах. ОС базируется на real-time расширениях к <strong>Linux</strong> ядру <strong>RTAI</strong>, адаптируется как для обычных ПК, так и для устройств с ограниченными ресурсами, поддерживает широкий спектр процессоров, совместимых с x86 и ARM, поддерживает установку на телефон <strong>OpenMoko FreeRunner</strong> и планшетный ПК <strong>Nokia N800/N810</strong>.</p>
<p><a href="http://mobile-developer.ru/wp-content/uploads/2009/02/kaeilos.jpg" ><img class="aligncenter size-full wp-image-501" title="KaeilOS" src="http://mobile-developer.ru/wp-content/uploads/2009/02/kaeilos.jpg" alt="KaeilOS" width="400" height="300" /></a></p>
<p>Судя по описанию на сайте, дистрибутив базируется на <strong>OpenEmbedded</strong>, о котором я писал в <noindex><a href="http://mobile-developer.ru/goto/http://http://mobile-developer.ru/embedded-linux/sobiraem-sobstvennyj-distributiv-embedded-linux-na-baze-openembedded/" title="Собираем собственный дистрибутив Embedded Linux на базе OpenEmbedded"  target="_blank">одном из предыдущих постов</a></noindex>.</p>
<p>Распространяется <strong>KaeilOS</strong> по лицензии <strong>MIT License.</strong></p>
<h5>Полезные ссылки</h5>
<ul>
<li><noindex><a rel="nofollow" href="http://mobile-developer.ru/goto/http://www.kaeilos.com/" title="KaeliOS - Embedded Linux"  target="_blank">Сайт KaeilOS</a></noindex>.</li>
<li><noindex><a rel="nofollow" href="http://mobile-developer.ru/goto/http://www.kaeilos.com/?q=board-support-packages-bsp" title="KaeilOS - Поддерживаемые платформы"  target="_blank">Список платформ, поддерживаемых KaeilOS</a></noindex>.</li>
<li><noindex><a rel="nofollow" href="http://mobile-developer.ru/goto/http://www.kaeilos.com/?q=download" title="Скачать KaeisOS"  target="_blank">Скачать KaeisOS</a></noindex>.</li>
</ul>
<p>По материалам <noindex><a rel="nofollow" href="http://mobile-developer.ru/goto/http://habrahabr.ru/blogs/linux/53047/"  target="_blank">этого</a></noindex> поста на хабре.</p>
<p>Post from: <a href="http://mobile-developer.ru" >Mobile-Developer.ru</a><br/><br/><a href="http://mobile-developer.ru/embedded-linux/kaeilos-novyj-linux-distributiv-dlya-mobilnyx-ustrojstv/" >KaeilOS &#8211; новый Linux дистрибутив для мобильных устройств</a></p>
<p style="text-align: center;"><script type="text/javascript"><!--
google_ad_client = "pub-5188470588945412";
/* 468x60 - mobile-developer.ru */
google_ad_slot = "3657023452";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>]]></content:encoded>
			<wfw:commentRss>http://mobile-developer.ru/embedded-linux/kaeilos-novyj-linux-distributiv-dlya-mobilnyx-ustrojstv/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hewlett-Packard выпускает собственную версию Ubuntu Linux для нетбуков</title>
		<link>http://mobile-developer.ru/embedded-linux/hewlett-packard-vypuskaet-sobstvennuyu-versiyu-ubuntu-linux-dlya-netbukov/</link>
		<comments>http://mobile-developer.ru/embedded-linux/hewlett-packard-vypuskaet-sobstvennuyu-versiyu-ubuntu-linux-dlya-netbukov/#comments</comments>
		<pubDate>Thu, 05 Feb 2009 17:21:09 +0000</pubDate>
		<dc:creator>T-Rex</dc:creator>
				<category><![CDATA[Embedded Linux]]></category>
		<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://mobile-developer.ru/?p=427</guid>
		<description><![CDATA[Компания Hewlett-Packard выпустила версию Ubuntu Linux для своих нетбуков HP Mini 1000 Mi Edition. Система основана на Ubuntu 8.04 Hardy Heron и позволяет запускать все стандартные приложения, включая Firefox, Thunderbird, Sunbird, Pidgin и OpenOffice. Система отличается от десктопной версии Ubuntu графическим интерфейсом. Например, сразу после загрузки системы появляется такое такое окно с основными ярлыками и [...]<p>Post from: <a href="http://mobile-developer.ru">Mobile-Developer.ru</a><br/><br/><a href="http://mobile-developer.ru/embedded-linux/hewlett-packard-vypuskaet-sobstvennuyu-versiyu-ubuntu-linux-dlya-netbukov/">Hewlett-Packard выпускает собственную версию Ubuntu Linux для нетбуков</a></p>
]]></description>
			<content:encoded><![CDATA[<a class="google_buzz"  
href="http://www.google.com/reader/link?url=http://mobile-developer.ru/embedded-linux/hewlett-packard-vypuskaet-sobstvennuyu-versiyu-ubuntu-linux-dlya-netbukov/&title=Hewlett-Packard+выпускает+собственную+версию+Ubuntu+Linux+для+нетбуков&srcURL=http://mobile-developer.ru" target="_blank" rel="nofollow"><img
src="http://mobile-developer.ru/wp-content/plugins/google-buzz-button-for-wordpress/images/google-buzz.png" alt="Google Buzz" /></a><p>Компания Hewlett-Packard выпустила версию Ubuntu Linux для своих нетбуков <noindex><a rel="nofollow" href="http://mobile-developer.ru/goto/http://www.hp.com/united-states/campaigns/mini1000/hpmini1000_mie.html" title="HP Mini 1000 Mi Edition"  target="_blank">HP Mini 1000 Mi Edition</a></noindex>.</p>
<p>Система основана на Ubuntu 8.04 Hardy Heron и позволяет запускать все стандартные приложения, включая Firefox, Thunderbird, Sunbird, Pidgin и OpenOffice.</p>
<p>Система отличается от десктопной версии Ubuntu графическим интерфейсом. Например, сразу после загрузки системы появляется такое такое окно с основными ярлыками и строкой поиска в интернете.</p>
<p><a href="http://mobile-developer.ru/wp-content/uploads/2009/02/hp-mi-home-screen.jpg" ><img class="alignnone size-full wp-image-428" title="HP Mini 1000 Mi Edition Home Screen" src="http://mobile-developer.ru/wp-content/uploads/2009/02/hp-mi-home-screen.jpg" alt="HP Mini 1000 Mi Edition Home Screen" width="550" height="322" /></a></p>
<p>Есть подозрения, что система основывается на Ubuntu Mobile and Embedded (UME) с графическим интерфейсом на основе Hildon.</p>
<p><span id="more-427"></span>Если нажать на кнопку “Start New Program”, то появится менеджер, в котором программы разбиты на тематические категории по вкладкам (Internet, Media, Utilities, Work, Play, All tabs).</p>
<p><a href="http://mobile-developer.ru/wp-content/uploads/2009/02/hp-mi-programs.jpg" ><img class="alignnone size-full wp-image-429" title="HP Mini 1000 Mi Edition Programs" src="http://mobile-developer.ru/wp-content/uploads/2009/02/hp-mi-programs.jpg" alt="HP Mini 1000 Mi Edition Programs" width="550" height="322" /></a></p>
<p>HP также внедрила в систему собственный медиаплеер HP MediaStyle, похожий на Apple FrontRow.</p>
<p><a href="http://mobile-developer.ru/wp-content/uploads/2009/02/hp-mi-media1.jpg" ><img class="alignnone size-full wp-image-430" title="HP Mini 1000 Mi Edition Media" src="http://mobile-developer.ru/wp-content/uploads/2009/02/hp-mi-media1.jpg" alt="HP Mini 1000 Mi Edition Media" width="550" height="322" /></a></p>
<p>Поговаривают что ОС от HP можно ставить и на другие нетбуки и даже не на нетбуки.</p>
<p>Чем мне как разработчику может быть интересна эта система: если в ней графический интерфейс построен на основе GNOME или Hildon, тогда существует возможность очень удобной разработки ПО для этих устройств на С++ с библиотекой wxWidgets (почитать об этом можно, например, <noindex><a rel="nofollow" href="http://mobile-developer.ru/goto/http://wxwidgets.blogspot.com/2007/11/hildonizing-wxgtk.html" title="Разработка ПО для нетбуков с UME на wxWidgets"  target="_blank">здесь</a></noindex>) а учитывая возможность установки ОС от HP и на десктопные машины, потенциальный рынок сбыта ПО для этой ОС возрастает просто в разы.</p>
<p>Post from: <a href="http://mobile-developer.ru" >Mobile-Developer.ru</a><br/><br/><a href="http://mobile-developer.ru/embedded-linux/hewlett-packard-vypuskaet-sobstvennuyu-versiyu-ubuntu-linux-dlya-netbukov/" >Hewlett-Packard выпускает собственную версию Ubuntu Linux для нетбуков</a></p>
]]></content:encoded>
			<wfw:commentRss>http://mobile-developer.ru/embedded-linux/hewlett-packard-vypuskaet-sobstvennuyu-versiyu-ubuntu-linux-dlya-netbukov/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Собираем собственный дистрибутив Embedded Linux на базе OpenEmbedded</title>
		<link>http://mobile-developer.ru/embedded-linux/sobiraem-sobstvennyj-distributiv-embedded-linux-na-baze-openembedded/</link>
		<comments>http://mobile-developer.ru/embedded-linux/sobiraem-sobstvennyj-distributiv-embedded-linux-na-baze-openembedded/#comments</comments>
		<pubDate>Thu, 08 Jan 2009 19:06:32 +0000</pubDate>
		<dc:creator>T-Rex</dc:creator>
				<category><![CDATA[Embedded Linux]]></category>

		<guid isPermaLink="false">http://mobile-developer.ru/?p=370</guid>
		<description><![CDATA[Администратор сайта OpenEmbedded.ru любезно предоставил интереснейшую статью о том, как собрать свой собственный дистрибутив Embedded Linux на базе OpenEmbedded. Судя по качеству материала, проект OpenEmbedded.ru может быть очень интересен разработчикам, использующим Embedded Linux для построения решений. Статья под катом, читаем! Практически у всех программистов первой программой была Hello, world! Она говорила &#8211; Здравствуй, мир! и [...]<p>Post from: <a href="http://mobile-developer.ru">Mobile-Developer.ru</a><br/><br/><a href="http://mobile-developer.ru/embedded-linux/sobiraem-sobstvennyj-distributiv-embedded-linux-na-baze-openembedded/">Собираем собственный дистрибутив Embedded Linux на базе OpenEmbedded</a></p>
]]></description>
			<content:encoded><![CDATA[<a class="google_buzz"  
href="http://www.google.com/reader/link?url=http://mobile-developer.ru/embedded-linux/sobiraem-sobstvennyj-distributiv-embedded-linux-na-baze-openembedded/&title=Собираем+собственный+дистрибутив+Embedded+Linux+на+базе+OpenEmbedded&srcURL=http://mobile-developer.ru" target="_blank" rel="nofollow"><img
src="http://mobile-developer.ru/wp-content/plugins/google-buzz-button-for-wordpress/images/google-buzz.png" alt="Google Buzz" /></a><p>Администратор сайта <noindex><a rel="nofollow" href="http://mobile-developer.ru/goto/http://openembedded.ru" title="Embedded Linux по-русски"  target="_blank">OpenEmbedded.ru</a></noindex> любезно предоставил интереснейшую статью о том, как собрать свой собственный дистрибутив Embedded Linux на базе <strong>OpenEmbedded</strong>. Судя по качеству материала, проект <noindex><a rel="nofollow" href="http://mobile-developer.ru/goto/http://openembedded.ru" title="Embedded Linux по-русски"  target="_blank">OpenEmbedded.ru</a></noindex> может быть очень интересен разработчикам, использующим <strong>Embedded Linux</strong> для построения решений. Статья под катом, читаем!<br />
<span id="more-370"></span><br />
Практически у всех программистов первой программой была Hello, world! Она говорила &#8211; <strong>Здравствуй, мир!</strong> и завершалась. Первый дистрибутив на базе OpenEmbedded будет делать то же самое. Но для этого придется немного попотеть, потребуется следующее:</p>
<ul>
<li>Компьютер с установленным дистрибутивом Linux Ubuntu.</li>
<li>Желание установить и умение читать.</li>
<li>Интернет канал, желательно безлимитный.</li>
</ul>
<p>Если у вас есть все требуемое, запускайте терминал. Для начала запустим установку необходимых программного обеспечения:</p>
<pre class="brush: cpp;">
sudo apt-get install make gcc g++ ccache sed wget cvs \
subversion git-core git coreutils unzip texi2html texinfo \
libsdl1.2-dev docbook-utils gawk python-pysqlite2 \
diffstat help2man libxml2-utils xmlto \
python-psyco
</pre>
<p>В случае если у вас достаточно быстрый интернет, то установка займет где-то полчаса. Если же нет, то это отнимет больше времеи.</p>
<p>Как только все программы установятся, cоздаем каталог для опытов и переходим в нее:</p>
<pre class="brush: cpp;">
exit
mkdir -p ~/stuff/build/conf
cd ~/stuff
</pre>
<p>Далее установливаем bitbake. Для этого с сайта <noindex><a rel="nofollow" href="http://mobile-developer.ru/goto/http://developer.berlios.de/projects/bitbake/" onclick="javascript:pageTracker._trackPageview ('/outbound/developer.berlios.de');" >bitbake</a></noindex> скачиваем и распаковываем последний релиз:</p>
<pre class="brush: cpp;">
wget http://download.berlios.de/bitbake/bitbake-1.8.12.tar.gz
tar -xzvf bitbake-1.8.12.tar.gz
mv bitbake-1.8.12 bitbake
</pre>
<p>Следующим шагом идет получение репозитория OpenEmbedded. Для его получения запускаем:</p>
<pre class="brush: cpp;">
git clone git://git.openembedded.net/openembedded
</pre>
<p>Если вдруг доступен только http (злые админы закрыли интернеты) то пробуем получить его через http:</p>
<pre class="brush: cpp;">
git clone http://repo.or.cz/r/openembedded.git
</pre>
<p><strong>Note:</strong></p>
<blockquote><p>В дальнейшем для обновления репозитария будет достаточно перейти в каталог <strong>stuff/openembedded</strong>:</p></blockquote>
<pre class="brush: cpp;">
cd ~/stuff/openembedded
git pull
</pre>
<p>Учтите, репозиторий довольно большой, так что качается довольно долго. Когда он скачается, необходимо создать конфигурационный файл сборки. Воспользуемся примером из репозитория:</p>
<pre class="brush: cpp;">
cd ~/stuff/
cp openembedded/conf/local.conf.sample build/conf/local.conf
</pre>
<p>Далее откройте файл в редакторе и измените значения следующих переменных:</p>
<pre class="brush: cpp;">
BBFILES = &quot;${HOME}/stuff/openembedded/packages/*/*.bb&quot;
DL_DIR = &quot;${HOME}/stuff/sources&quot;
DISTRO = &quot;angstrom-2008.1&quot;
MACHINE = &quot;x86&quot;
</pre>
<p>А в конце файла удалите строку:</p>
<pre class="brush: cpp;">
REMOVE_THIS_LINE
</pre>
<p>сохраните файл.<br />
Теперь необходимо настроить окружение. Сначала указываем где у нас находится bitbake</p>
<pre class="brush: cpp;">
export PATH=${PATH}:${HOME}/stuff/bitbake/bin
</pre>
<p>затем указываем bitbake где искать репозиторий и файл конфигурации</p>
<pre class="brush: cpp;">
export BBPATH=${HOME}/stuff/build:${HOME}/stuff/openembedded
</pre>
<p>И наконец запускаем сборку hello world:</p>
<pre class="brush: cpp;">
bitbake helloworld-image
</pre>
<p>Если в результате запуска появилось нечто такое:</p>
<pre class="brush: cpp;">
NOTE: Handling BitBake files: / (6291/6291) [100 %]
NOTE: Parsing finished. 6027 cached, 0 parsed, 264 skipped, 0 masked.
NOTE: build 200812252310: started

OE Build Configuration:
BB_VERSION        = &quot;1.8.10&quot;
METADATA_BRANCH   = &quot;org.openembedded.dev&quot;
METADATA_REVISION = &quot;5b1ed09b1ab1a60a28a76e4658bc9957cd361b5d&quot;
TARGET_ARCH       = &quot;i486&quot;
TARGET_OS         = &quot;linux&quot;
MACHINE           = &quot;x86&quot;
DISTRO            = &quot;angstrom&quot;
DISTRO_VERSION    = &quot;2008.1-test-20081225&quot;
TARGET_FPU        = &quot;&quot;

NOTE: Resolving any missing task queue dependencies
NOTE: Preparing runqueue
NOTE: Executing runqueue
</pre>
<p>то можете себя поздравить, bitbake и openembedded установленны правильно. Вам осталось подождать пока bitbake соберет все что необходимо.</p>
<p>Итак, сборка helloworld-image завершена. В результате при помощи OpenEmbedded был собран helloworld и создан образ корневой файловой системы вместе с ним. Осталось только все это запустить, это довольно просто. Для начала устанавливаем Virtual Box:</p>
<pre class="brush: cpp;">
sudo apt-get install virtualbox
</pre>
<p>Затем потребуется собрать модуль для virtualbox (возможно, вам не потребуется собирать модуль, так-как в исходных кодах он стал устанавливаться недавно)</p>
<pre class="brush: cpp;">
sudo apt-get install module-assistant
sudo m-a prepare
sudo m-a a-i virtualbox-ose
</pre>
<p>и загрузить его</p>
<pre class="brush: cpp;">
sudo modprobe vboxdrv
</pre>
<p><strong>Note</strong></p>
<blockquote><p>Команда <strong>sudo m-a a-i virtualbox-ose</strong> может сообщить об неудачном завершении. Но на самом деле все что необходимо она выполнила. Если при этом у вас команда <strong>sudo modprobe vboxdrv</strong> не вывела никаких ошибок при выполнении, то значит все в порядке.</p></blockquote>
<p>Затем добавляем его в автозагрузку. Для этого открываем /etc/modules и добавляем туда:</p>
<pre class="brush: cpp;">
vboxdrv
</pre>
<p>после чего сохраняем. Теперь при каждой загрузке этот модуль будет подгружаться сам. Осталось добавить себя в группу пользователей vboxusers, чтобы можно было работать с Virtualbox:</p>
<pre class="brush: cpp;">
sudo adduser [your username] vboxusers
</pre>
<p><strong>Note</strong></p>
<blockquote><p>Для вступления в силу изменений потребуется завершить сеанс и войти заново.</p></blockquote>
<p>Теперь пробуем запустить Virtualbox (у меня находится в разделе стандартные). Если вы увидите нечто такое:</p>
<p><img class="alignnone size-full wp-image-371" title="OpenEmbedded в VirtualBox" src="http://mobile-developer.ru/wp-content/uploads/2009/01/openembedded-in-virtualbox-1.png" alt="OpenEmbedded в VirtualBox" width="619" height="514" /></p>
<p>то значит, что virtualbox работаем и можно приступать к созданию виртуальной машины, если нет то необходимо разобраться, что у вас не так.</p>
<p>Для создания новой виртуальной машины нажимаем <strong>создать</strong>, далее в качестве имени вводим <strong>openembedded</strong> (на самом деле имя может быть любым, главное чтобы оно не содержало пробелов), в тип ОС указываем <strong>Linux 2.6</strong>, жмем <strong>далее</strong> до запроса о виртуальном диске. Тут так же жмем <strong>далее</strong>, когда выскакивает предупреждение о том, что у нас нет дисков, нажимайте <strong>продолжить</strong> пока они не потребуются. После этого выведется итог, там жмем <strong>готово</strong>.<br />
В списках виртуальных машин должна появиться машина <strong>openembedded</strong>. Выделяем ее и жмем <strong>свойства</strong>, там выбираем пункт <strong>Общие</strong> и переключаемся с закладки <strong>Основные</strong> на закладку <strong>Дополнительно</strong>. Там меняем порядок загрузки таким образом, чтобы <strong>Сеть</strong> была включена и была в списке первой. Если что-то не понятно сверьтесь:</p>
<p><img class="alignnone size-full wp-image-372" title="openembedded-create-virtualbox-machine" src="http://mobile-developer.ru/wp-content/uploads/2009/01/openembedded-create-virtualbox-machine.png" alt="openembedded-create-virtualbox-machine" width="597" height="425" /></p>
<p>Если вы выполнили все верно, то виртуальная машина настроена. Теперь необходимо добавить загрузчик, собрать ядро, установить и настроить NFS сервер. Начем с загрузчика.</p>
<p>В качестве загрузчика будет использоваться pxelinux из состава syslinux. Устанавливаем его:</p>
<pre class="brush: cpp;">
sudo apt-get install syslinux
</pre>
<p>Нужный нам файл <strong>pxelinux.0</strong> находится в каталоге <strong>/usr/lib/syslinux</strong>. Для его установки переходим в каталог <strong>~/.VirtualBox</strong>, создаем  нем каталог <strong>TFTP</strong> и копируем туда <strong>pxelinux.0</strong>:</p>
<pre class="brush: cpp;">
cd ~/.VirtualBox
mkdir TFTP
cp /usr/lib/syslinux/pxelinux.0 TFTP/openembedded.pxe
</pre>
<p><strong>Note</strong></p>
<blockquote><p>Такое странное имя выбрано не спроста. Если вы вспомните называлась виртуальная машина, то заметите что оно совпадает с ее именем. Это необходимо из-за того что VirtualBox обладает встроенными средствами автоконфигурации и загрузки по сети. Для того чтобы он нашел загрузчик, он должен называться <strong>имя машины.pxe</strong>.</p></blockquote>
<p>Теперь можно попробовать включить виртуальную машину. Выберите ее в списке и нажмите <strong>старт</strong>. Если в результате вывелось что-то похожее</p>
<p><img class="alignnone size-medium wp-image-373" title="OpenEmbedded в VirtualBox" src="http://mobile-developer.ru/wp-content/uploads/2009/01/openembedded-in-virtualbox-console-screenshot-300x199.png" alt="OpenEmbedded в VirtualBox" width="300" height="199" /></p>
<p>значит VirtualBox нашел загрузчик и передал ему управление. Выключаем вируальную машину и переходим к сборке ядра. Для этого потребуется изменить локальную конфигурацию и один из файлов репозитория. Начнем с файла локальной конфигурации <strong>local.conf</strong>. Добавляем в него строку следующего вида:</p>
<pre class="brush: cpp;">
FILESPATH =. &quot;${TOPDIR}/conf/packages/${PN}/${MACHINE}:&quot;
</pre>
<p>Затем изменяем файл <strong>base.bbclass</strong>. Он находится в каталоге <strong>~/stuff/openembedded/classes</strong>. Открывываем его, ищем строку начинающуюся с:</p>
<pre class="brush: cpp;">
FILESPATH
</pre>
<p>удаляем.</p>
<p><strong>Note</strong></p>
<blockquote><p>Эти действия необходимы для того чтобы конфигурация ядра бралась не из репозитория, а из определенного конфигурацией каталога.</p></blockquote>
<p>Создаем каталог в котором будет находится файл конфигурации ядра:</p>
<pre class="brush: cpp;">
mkdir -p ~/stuff/build/conf/packages/linux/x86
</pre>
<p>Выкачиваем его:</p>
<pre class="brush: cpp;">
cd ~/stuff/build/conf/packages/linux/x86
wget http://openembedded.ru/wp-content/uploads/2009/01/defconfig
</pre>
<p>Далее собираем ядро. Для этого переходим в каталог <strong>~/stuff/build</strong> и запускаем сборку ядра:</p>
<pre class="brush: cpp;">
cd ~/stuff/build
export BBPATH=&quot;$HOME/stuff/build:$HOME/stuff/openembedded&quot;
bitbake virtual/kernel
</pre>
<p>Сборка займет где-то полчаса-час в зависимости от мощности вашего компьютера. После ее завершения потребуется скопировать ядро в каталог <strong>~/.VirtualBox/TFT</strong>, чтобы его смог найти загрузчик. Далее настроить загрузчик, так чтобы он грузил ядро и настроить NFS сервер, чтобы ядро смогло подключить корневую файловую систему. Начнем с ядра.</p>
<p>Ядро находится в каталоге <strong>~/stuff/build/tmp/deploy/glibc/images/x86</strong> и называется <strong>bzImage-x86.bin</strong>. Копируем его в <strong>~/.VirtualBox/TFTP</strong>:</p>
<pre class="brush: cpp;">
cd ~/.VirtualBox/TFTP
cp ~/stuff/build/tmp/deploy/glibc/images/x86/bzImage-x86.bin bzImage
</pre>
<p>Переходим к настройке загрузчика. Создаем каталог <strong>pxelinux.cfg</strong> (в нем загрузчик ищет файлы конфигурации):</p>
<pre class="brush: cpp;">
mkdir ~/.VirtualBox/TFTP/pxelinux.cfg
cd ~/.VirtualBox/TFTP/pxelinux.cfg
</pre>
<p>Далее создаем файл конфигурации <strong>default</strong> следующего содержания:</p>
<pre class="brush: cpp;">
prompt 0
default linux
timeout 5

label linux
kernel bzImage
append ip=dhcp root=/dev/nfs nfsroot=192.168.1.100:/var/lib/nfsroot
</pre>
<p>При этом:</p>
<ul>
<li><strong>192.168.1.100</strong> это ваш ip адрес (который настроен на вашем компьютере автоматически или в ручную)</li>
<li><strong>/var/lib/nfsroot</strong> указывает где находится необходимая нам корневая файловая система.</li>
</ul>
<p>Если вы сейчас попробуете загрузить виртуальную машину, то загрузчик найдет ядро и загрузит его. Ядро запустится, но не найдет корневую файловую систему и перейдет в <strong>kernel panic</strong>. Чтобы избежать этого необходимо установить и настроить nfs сервер.<br />
Для установки запускаем команду:</p>
<pre class="brush: cpp;">
sudo apt-get install nfs-kernel-server
</pre>
<p>затем настраиваем экспорт каталога, где будет находиться корневая файловая система,  в <strong>/etc/exports</strong>. Для этого в файл <strong>exports</strong> требуется добавить строку следующего вида:</p>
<pre class="brush: cpp;">
/var/lib/nfsroot        *(ro,insecure,all_squash,no_subtree_check)
</pre>
<p>В качестве каталога для корневой файловой системы я выбрал <strong>/var/lib/nfsroot</strong>. Его требуется создать и распаковать туда корневую файловую систему. Сделать это можно следующим образом:</p>
<pre class="brush: cpp;">
sudo mkdir /var/lib/nfsroot
cd /var/lib/nfsroot
sudo tar -xvf ~/stuff/build/tmp/deploy/glibc/images/x86/helloworld-image-x86.tar
</pre>
<p>В результате каталог <strong>/var/lib/nfsroot</strong> будет содержать корневую файловую систему. Проверить все ли в порядке можно при помощи следующей команды:</p>
<pre class="brush: cpp;">
$ ls -l
итого 4
drwxr-xr-x 2 root root   17 Дек 31 00:50 bin
drwxr-xr-x 2 root root 4096 Дек 31 00:50 dev
drwxr-xr-x 3 root root   42 Дек 31 00:50 etc
drwxr-xr-x 4 root root   26 Дек 31 00:50 usr
</pre>
<p>Если вы получили аналогичный вывод значит все в порядке.<br />
Запускаем nfs сервер:</p>
<pre class="brush: cpp;">
sudo /etc/init.d/nfs-kernel-server start
</pre>
<p>Теперь сновая запускаем виртуальную машину. После того как она включится, должен будет запустится загрузчик, затем он запустит ядро, а ядро подключит по nfs корневую файловую систему и запустит /bin/init который является символической ссылкой на программу helloworld. И в результате вы должны увидеть вот такую картину:</p>
<p><img class="alignnone size-medium wp-image-374" title="OpenEmbedded в VirtualBox - Hello World" src="http://mobile-developer.ru/wp-content/uploads/2009/01/openembedded-in-virtualbox-helloworld-300x199.png" alt="OpenEmbedded в VirtualBox - Hello World" width="300" height="199" /></p>
<p>Если вы ее видите, то поздравляю вас. Вы собрали первый дистрибутив на базе OpenEmbedded!<br />
А в следующий раз я расскажу как собрать систему состояющую не только из helloworld.</p>
<p>PS: Оригинальные версии использованных материалов: <noindex><a rel="nofollow" href="http://mobile-developer.ru/goto/http://openembedded.ru/2008/12/25/zdravstvuj-mir/"  target="_blank">Здравствуй, Мир! Сборка</a></noindex>, <noindex><a rel="nofollow" href="http://mobile-developer.ru/goto/http://openembedded.ru/2009/01/07/zapusk/"  target="_blank">Здравствуй, Мир! Запуск</a></noindex>.</p>
<p>PPS: <strong>defconfig</strong> файл можно скачать еще <a href="http://mobile-developer.ru/wp-content/uploads/2009/01/defconfig" title="defconfig для OpenEmbedded"  target="_blank">здесь</a>.</p>
<p>Post from: <a href="http://mobile-developer.ru" >Mobile-Developer.ru</a><br/><br/><a href="http://mobile-developer.ru/embedded-linux/sobiraem-sobstvennyj-distributiv-embedded-linux-na-baze-openembedded/" >Собираем собственный дистрибутив Embedded Linux на базе OpenEmbedded</a></p>
]]></content:encoded>
			<wfw:commentRss>http://mobile-developer.ru/embedded-linux/sobiraem-sobstvennyj-distributiv-embedded-linux-na-baze-openembedded/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
