Фэндом


Neo FreeRunnner - свободный мобильный телефон, официальный дистрибутив которого носит имя OpenMoko.

Кроме того, что это хороший телефон, Neo FreeRunner также и хороший карманный компьютер, а также отличная платформа разработчика. Как и iPAQ H3650, он может быть использован для установки Inferno.

Кто-то уже запускал Inferno на OpenMoko, и его код доступен в рамках проекта inferno-openmoko. Однако, он также сделал множество других изменений, превратив свой проект в отдельную inferno-ветку.

Я попробую объяснить как запустить текущую официальную версию Inferno на OpenMoko, воспользовавшись плодами работы, проделанной в рамках проекта inferno-openmoko. Все нижеперечисленное было проделано в ОС Linux.

Мы начнем с установки базовых инструментов:

  • dfu-util позволяет перезаписывать NAND-память FreeRunner из образов на вашем компьютере используя USB-кабель;
  • mkfs.jffs2 создает на разделе файловую систему JFFS2, используемую OpenMoko;
  • Mntjffs.sh позволяет монтировать JFFS2-образы.
$ cd /usr/sbin 
$ wget ftp://sources.redhat.com/pub/jffs2/mkfs.jffs2 
$ wget http://downloads.openmoko.org/distro/testing/dfu-util 
$ wget http://wiki.openmoko.org/images/8/82/Mntjffs.sh
$ chmod +x dfu-util mkfs.jffs2 Mntjffs.sh

После этого мы должны собрать окружение для кросскомпиляции Inferno для ARM-процессоров. Если вы используете x86-систему, проект Qt Extended предоставляет уже готовое к работе окружение сборки ARM920T, которое, помимо прочего, включает и X11-библиотеки.

$ cd / 
$ wget http://qtextended.org/downloads/toolchains/arm920t-eabi.tgz 
$ tar xzf ARM920T-eabi.tgz 
$ rm -f ARM920T-eabi.tgz 
$ ln -s /opt/toolchains/arm920t-eabi/bin/arm-linux-gcc /usr/bin/arm-gcc

Теперь скачаем последнюю версию из репозитория Subversion.

$ cd /usr 
$ hg clone https://inferno-os.googlecode.com/hg/ inferno
$ find /usr/inferno -name .hg -exec rm -rf {} \;

В OpenMoko, приложения запускаются с правами root, поэтому мы должны добавить домашний каталог root в Inferno.

$ cd /usr/inferno
$ cp -r /usr/inferno/usr/inferno /usr/inferno/usr/root
> /usr/inferno/usr/root/keyring/default

Некоторые шрифты распрстраняются только в составе коммерческой версии Inferno, вы должны посетить сайт Vita Nuova, скачать последнюю версию Inferno, распаковать архив и скопировать содержимое кататалога fonts в /usr/inferno/fonts.

Отредактируйте файл /usr/inferno/mkconfig изменив значение переменных SYSHOST и OBJTYPE как показано ниже.

SYSHOST = Linux 
OBJTYPE = arm

Виртуальная клавиатура - необходимый элемент компьютера без физической клавиатуры. Стандартная экранная клавиатура Inferno слишком мала для экрана Neo FreeRunner, поэтому мы изменим ее так, чтобы она занимала всю ширину экрана (480 пикселей).

Отредактируйте файл /usr/inferno/appl/wm/keyboard.b, заменив строку:

KEYSIZE: con 13;

Строкой:

KEYSIZE: con 31;

По умолчанию виртуальной клавиатуры нет в меню запуска приложений, поэтому мы должны ее туда добавить.

Отредактируйте файл /usr/inferno/lib/wmsetup и добавьте следующиую строку в нужное меню.

menu Keyboard {wmrun wm/keyboard}

Среди многих других вещей, в рамках проекта inferno-openmoko была проделана отличная работа по портированию Inferno на Neo FreeRunner. Вместо того, чтобы повторять эту работу мы возьмем необходимый код из этого проекта.

$ curl http://inferno-openmoko.googlecode.com/svn-history/r5/trunk/emu/Linux/asm-arm.S > /usr/inferno/emu/Linux/asm-arm.S
$ curl http://inferno-openmoko.googlecode.com/svn-history/r5/trunk/emu/port/win-x11a.c > /usr/inferno/emu/port/win-x11a.c

Теперь вы можете начать компиляцию Inferno, которая займет несколько минут.

mk install 
mk clean

Скачайте дистрибутив OpenMoko:

  • uImage - это ядро OpenMoko,
  • u-boot - загрузчик FreeRunner,
  • Om2008.9.splash.gz - изображение, показываемое при загрузке FreeRunner,
  • fso-image-om-gta02.jffs2 - дистрибутив OpenMoko, содержащий графическое окружение,
$ mkdir /root/om
$ cd /root/om
$ wget --glob=on ftp://downloads.openmoko.org/distro/unstable/NeoFreerunner/uImage-2.6.28-*.bin
$ wget --glob=on ftp://downloads.openmoko.org/distro/unstable/NeoFreerunner/u-boot-gta02v5*.bin
$ wget http://downloads.openmoko.org/distro/releases/Om2008.9/Om2008.9.splash.gz
$ wget http://downloads.openmoko.org/distro/unstable/NeoFreerunner/fso-image-om-gta02.jffs2
$ mkdir /root/om/ro
$ Mntjffs.sh /root/om/fso-image-om-gta02.jffs2 /root/om/ro
$ cp -r /root/om/ro /root/om/rw
$ umount /root/om/ro
$ rmmod block2mtd jffs2 mtdblock
$ rm -rf /root/om/fso-image-om-gta02.jffs2 /root/om/ro cp -r /usr/inferno /root/om/rw/usr/inferno

Мы изменим Xsession так, чтобы вмето стандартного графического окружения во время загрузки запускалась Inferno.

$ chmod -x /root/om/rw/etc/X11/Xsession.d/*
$ > /root/om/rw/etc/X11/Xsession.d/inferno
$ chmod +x /root/om/rw/etc/X11/Xsession.d/inferno

Отредактируйте /root/om/rw/etc/X11/Xsession.d/inferno как показано ниже:

#!/bin/sh
/usr/inferno/Linux/arm/bin/emu -g 480x640 -r /usr/inferno wm/wm

Теперь мы можем создать образ rootfs.jffs2 в каталоге /root/om/rw.

$ mkfs.jffs2 --pad=0x700000 -o /root/om/rootfs.jffs2 -e 0x20000 --pagesize=0x100 -n -d /root/om/rw

Подключите Neo FreeRunner к своему компьютеру используя USB-кабель, затем загрузитесь с NOR-памяти путем одновременного нажатия кнопки "To" и кнопки включения. Вы имеете 30 секунд чтобы начать процесс перепрошивки перед тем как Neo FreeRunner выключится.

$ dfu-util -a splash -R -D /root/om/Om2008.9.splash.gz
$ dfu-util -a u-boot -R -D /root/om/u-boot-gta02v5*.bin
$ dfu-util -a kernel -R -D /root/om/uImage-2.6.28-*.bin
$ dfu-util -a rootfs -R -D /root/om/rootfs.jffs2

После завершения прошивки можете включить ваш Neo FreeRunner. Первый запуск OpenMoko может занять несколько минут. В конце, вместо графического окружения, будет запущена Inferno.

Обнаружено использование расширения AdBlock.


Викия — это свободный ресурс, который существует и развивается за счёт рекламы. Для блокирующих рекламу пользователей мы предоставляем модифицированную версию сайта.

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

Также на Фэндоме

Случайная вики