Материал из Wiki по Linux-смартфонам от LinuxPhone.ru
Перейти к: навигация, поиск

Эта статья изначально является переводом статьи http://wiki.debian.org/DebianOnFreeRunner

Установка и использование Debian на Openmoko FreeRunner

Вы можете установить Debian на свой OpenMoko FreeRunner и использовать эту систему, чтобы полностью удовлетворить свои требования к телефону. Так, вы сможете использовать почти все доступные для Debian пакеты всего лишь одним вызовом 'apt-get install'. Это всё тот же самый функциональный дистрибутив, который вы знаете со своего компьютера или сервера.

Примечания

Этот установщик относительно новый и, возможно, содержит ошибки. Вы используете его на свой собственный страх и риск.

Если вы хотите немного больше узнать о своей новой системе Debian, вы можете читать установочный скрипт и выполнять шаги вручную. Это также позволит большую гибкость при разметке внутренней памяти, выборе пакетов и настройке.

На данный момент, только набор ПО с freesmartphone.org упаковано для Debian, то есть frameworkd и zhone. Illume будет доступен, когда выйдет следующая сборка Enlightment. Но это не значит, что вы не сможете использовать свой любимый набор ПО (например, SHR) в Debian, он просто должен быть упакован кем-то ещё.

Вы можете попробовать установку на Neo1973, но на свой страх и риск. Вам почти наверняка придётся менять параметры настройки, но вы можете найти нужные значения в официальном образе FSO для вашего устройства.

Создание резервной копии

Если у вас нет кард-ридера, чтобы сделать резервную копию вашей MicroSD-карточки, вы можете скопировать её содержимое, включая разметку диска, посредством сети. Вам нужен будет загруженный Freerunner с доступом к сети (USB, беспроводная сеть и т.п.) и *nix-машина. Убедитесь, что выключен автопереход в спящий режим.

Если вы хотите, чтобы с резервной копии можно было восстановиться позже, запустите следующее с вашего Freerunner:

dd if=/dev/mmcblk0 | ssh user@backup.server "gzip -9 | dd of=sdcard.tgz"

Это создаст сжатую копию карточки, проводя сжатие на сервере резервного копировани (при условии, что он мощнее 400MHz). Чтобы восстановиться, запустите следующее с сервера резервного копирования:

dd if=sdcard.tgz | gzip -d | ssh root@freerunner.address dd of=/dev/mmcblk0

Как всегда, дважды проверьте синтаксис для 'dd'.

Установка

Рекомендация - устанавливайте систему на карту как можно большего объема - штатная карточка у меня переполнилась после установки оболочки и локализации.

Для установки Debian на MicroSD-карту вам понадобится любой Linux, уже запущенный во внутренней памяти. Все официальные образы (2007.2, 2008.8, FSO Milestone 2) должны быть исправны. Вообще, установка была проверена только на свежем uBoot (от 2008-08-05), так что рекомендуется обновить его. Убедитесь, что ваш FreeRunner подключён к Интернет через USB либо беспроводную сеть.

Войдите в систему на вашем FreeRunner, скачайте и запустите установочный скрипт:

$ wget http://pkg-fso.alioth.debian.org/freerunner/install.sh
$ chmod +x install.sh
$ ./install.sh
Auto-Installer for Debian on the Openmoko FreeRunner (GTA02) v1.0
-----------------------------------------------------------------
Copyright 2008 Joachim Breitner <nomeata@debian.org>
Copyright 2008 Luca Capello <luca@pca.it>
This program is licensed under the terms of GNU General Public
License either version 2, or (at your option) any later version.
Usage: [variable1 variable2 ...] ./install.sh stage1 [stage2 ...]
Variables:
  HOSTNAME         the name of the machine (default to debian-gta02)
  SD_DEVICE        the character device to access the microSD card
                   (default to /dev/mmcblk0)
  SD_PART1_FS      the filesystem for the first microSD card partition,
                   i.e. the one containing the uImage.bin (default to
                   ext2, possible values are ext2/vfat)
  INST_DIR         the directory where the microSD card partitions
                   will be mounted to (default to /mnt/debian)
  INST_MIRROR      the Debian mirror used during installation, it
                   should be set to a mirror nearby that carries armel
                   binaries for unstable and experimental (default to
                   http://ftp2.de.debian.org/debian)
  APT_RECOMMENDS   control if APT should install recommends by default
                   (default to false, possible values are false/true)
  DASH_BINSH       configure dash as default /bin/sh (default to true,
                   possible values are true/false)
Stages:
  all              Runs all the stages in the following order:
                   testing time partition mount debian apt fso
                   configuration kernel unmount
  testing          Verifys that everything is in place for this
                   installer to work
  time             Fetches the current time from ntp.fu-berlin.de via rdate
  partition        Partitions and formats the microSD card found
                   in /dev/mmcblk0 (WARNING, this will destroy all the
                   data on the microSD card)
  mount            Mounts microSD card partitions under /mnt/debian
  debian           Installs a basic Debian system, including an SSH
                   server
  apt              Sets up APT repositories
  fso              Installs packages required to use the Zhone GUI
  configuration    Configures various parts of the system, such as
                   the X server
  kernel           Downloads and installs kernel image and modules
  unmount          Unmounts the Debian filesystem mounted at /mnt/debian
Unsupported or buggy stages, use at your own risk:
  uboot            Configures the U-Boot environment to boot Debian
                   (it needs to run between the debian and the unmount
                   stage)
For more information, go to http://wiki.debian.org/DebianOnFreeRunner

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

$ ./install.sh all

или, если хотите использовать зеркало,

$ INST_MIRROR=http://ftp.cc.debian.org/debian ./install.sh all

Учтите, что запуск 'all' включает в себя разметку диска, описанную выше, что уничтожит все данные на microSD-карте. Вас предупредили.

Перед установкой прочтите внимательно следующее! По-умолчанию, файловая система, создаваемая install.sh для загрузочного раздела, есть ext2, но uBoot требует, чтобы загрузочный раздел был в fat. У вас есть две возможности:

I) Изменить ваш uBoot (как описано ниже) для загрузки прямо с ext2

ИЛИ

II) Сделать, чтобы загрузочный раздел был vfat, запустив - рекомендация ведущих ФрииРунереводов

SD_PART1_FS=vfat ./install.sh all

Теперь вам не нужно возиться с изменением 'заводских' настроек U-Boot каждый раз при рестарте телефона.

А сейчас наберитесь терпения ненадолго, пока скрипт скачивает, устанавливает и настраивает всё, что нужно. Как только это пройдёт без ошибок, вам нужно будет подстроить среду uBoot.

Из-за временных ошибок (например, проблем с сетью), вы можете перезайти в установку, указав пункты, которые вы хотите запустить:

./install.sh  debian apt fso configuration kernel unmount

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

Установочный скрипт настраивает dash как оболочку по-умолчанию (т.е. /bin/sh). Если вы всё же предпочитаете bash как /bin/sh, поставьте его, запустив

DASH_BINSH=false ./install.sh all

во время установки, либо, при установленном Debian, с помощью

dpkg-reconfigure dash

На этом месте, если вы хотите запускать Debian из внутренней памяти вместо microSD-карты, смотрите /MovingToFlash (ещё не переведено)

Подстройка среды uBoot

Если вы установили Debian с vfat в качестве загрузочного раздела, вы можете использовать стандартный пункт "Boot from SD (fat+ext2)" с NAND uBoot и пропустить эту главу. Если нет, вам необходимо изменить среду uBoot. Выполнение этого вручную приветствуется, настраивайте так, как вам больше нравится. Как бы то ни было, мы предоставляем скрипт, который настраивает uBoot так, что:

  • Debian по-умолчанию загружается с MicroSD-карты с загрузочным разделом в ext2;
  • Образ, установленный во внутреннюю память, можно загрузить, войдя в меню NAND uBoot и выбрав второй пункт.

Чтобы запустить скрипт, вам нужны:

  • fso-utils, доступные из apt-источника pkg-fso, предполагаемого далее на этой странице уже установленным на вашем компьютере, не на Freerunner (Раздел "Установка приложений FSO на настольный компьютер");
  • установленный dfu-util, доступный из обычного архива Debian;
  • FreeRunner, загруженный в NOR-Flash и подключенный через USB (см. OpenMoko Wiki для более подробного описания)

Теперь вы можете настроить uBoot следующими командами, запущенными от рута:

wget http://pkg-fso.alioth.debian.org/freerunner/configure-uboot.sh
chmod +x configure-uboot.sh
./configure-uboot.sh

Вместо данного скрипта configure-uboot.sh вы также можете взять этот configure-uboot.sh, который ускорит загрузку, используя quiet-mode. Он также добавляет дополнительный параметр загрузки для загрузки без quiet-mode для нужд тестирования.

Не используйте этот скрипт с устройством, отличным от FreeRunner!

Использование вашей Debian-системы

Как только установка закончена, система Debian будет загружаться с SD-карты по-умолчанию. Чтобы загрузить вашу нормальную систему, выберите "Boot Flash" в меню загрузки. После загрузки вы должны увидеть запущенный Zhone, и (теоретически) будете способны совершать и принимать телефонные звонки, отправлять и получать SMS, иметь доступ к телефонной книге на SIM-карте и пользоваться GPS.

Не будет запущен Illume, но вы можете выдвигать (и задвигать) экранную клавиатуру кнопкой AUX. С клавиатуры вы можете запустить xterm с помощью комбинации Alt-Ctrl-x, а затем переключаться между этими двумя приложениями с помощью Alt-Tab. Начиная с этого места, нет больше ничего особенного в вашем телефоне – это Debian-система!

Некоторые идеи, которые можно осуществить:

  • /UsbKeyboard: Использовать USB-клавиатуру;
  • Монтировать ваши разделы с помощью relatime вместо noatime, если вы используете приложения вроде mutt;
  • Установить apmd. Тогда zhone будет отправлять в спящий режим ваш телефон, если вы держите кнопку питания более секунды. Если это не работает, убедитесь, что демон apmd не запущен, похоже, есть странный баг с Xorg, apmd и ядром.
  • Если у вас быстрое соединение с Интернет, "apt-get update" будет занимать приемлемое время, применяя pdiffs. Вы можете пропустить обработку pdiff следующей командой:
apt-get update -o Acquire::PDiffs=false

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

Acquire::PDiffs "false";

в файл /etc/apt/apt.conf (быть может, создав этот файл)

Некоторые полезные для FreeRunner приложения

  • fso-gpsd -- совместимый с gpsd демон. Например, для TangoGPS.
  • openmoko-panel-plugin -- для добавления информации об устройстве и некоторых возможностей по его управлению на панель XFCE или другую. Можно использовать с Matchbox.
  • pypennotes -- для записи заметок на сенсорном дисплее. Для запуска использовать файл pyPenNotes.py в командной строке.
  • remoko -- управление рабочим столом с Neo FreeRunner (не забудьте прочитать /usr/share/doc/remoko/README.Debian!).

Сообщения об ошибках

Когда что-то не работает, помогите нам, пожалуйста, проверив в первую очередь, работает ли оно с официальным образом FSO. Если нет, то это, видимо, не специфический баг Debian, что должно быть доложено на http://trac.freesmartphone.org/

Хотя некоторых пакетов ещё нет в официальном репозитории Debian, вы можете использовать баг-трекер, чтобы оповестить об ошибках, желательно с помощью программы reportbug. Мы найдём их, и пакеты, скорее всего, будут добавлены в репозиторий, а ошибки исправлены.

Когда вы отправляете отчёт об ошибке, пожалуйста:

  • Отправьте копию на pkg-fso-maint@lists.alioth.debian.org . Если вы используете программу reportbug, используйте псевдозаголовок X-Debbugs-CC;
  • Упомяните, что пакет ещё не в архиве, чтоб не было неудобств для админов багтрекера, вроде
This package is not yet in Debian but it will be soon, please see http://wiki.debian.org/pkg-fso

Известные проблемы

Ввод PIN-кода (уже исправлено)

Установка приложений FSO на настольный компьютер

Для нужд разработки вам могут понадобиться приложения FSO на настольном компьютере. Для этого добавьте следующие строки в sources.list:

deb http://pkg-fso.alioth.debian.org/debian unstable main
deb-src http://pkg-fso.alioth.debian.org/debian unstable main

И установите брелок:

apt-get update
apt-get install pkg-fso-keyring

Разрабатывайте приложения для и на Debian

Вы можете разрабатывать и тестировать приложения для Debian на своём настольном компьютере (точно так же вы можете запустить на нём Zhone, если угодно). Если приложение платформо-независимо (например, python-приложение), вы можете просто установить его на свой FreeRunner. Для зависимых от архитектуры приложений вы можете использовать qemubuilder.

Чтобы собрать приложение для armel с помощью qemubuilder, вы можете использовать эту инструкцию:

KERNEL_IMAGE=/var/cache/pbuilder/armel/vmlinuz-2.6.26-1-versatile
ARCH=armel
BASEPATH=/var/cache/pbuilder/armel/base.qemu
MEMORY_MEGS=256
MIRRORSITE=http://mirror.yandex.ru/debian/
  • Запустите qemubuilder --configfile armel-rc --create
  • Запустите qemubuilder --configfile armel-rc --login --save-after-login и подстройте источники apt (см. выше)
  • Запустите qemubuilder --configfile armel-rc --update
  • Соберите пакеты командой qemubuilder --configfile armel-rc --build имя_пакета.dsc
  • Совет: если вы скопируете armel-rc как ~/.pbuilderrc, вам не нужно будет каждый раз указывать "--build armel-rc"

Принять участие

Debian на FreeRunner сделан командой pkg-fso. Мы предоставляем специфические для телефона пакеты и создали установочный скрипт. Если у вас есть вопросы, вы можете связаться с нами:

ЧаВо

  • Во время установки "debian" что означает "E: Internal error: install" и как это исправить? Проблема должна быть связана с используемой microSD-картой, как объяснялось в обсуждении smartphones-standards. Дополнительная информация доступна в этом отчёте.
  • Если вы получаете ошибки вроде unknown type 255 при использовании SMS или адресной книги, можете добавить номер из вопроса в /var/lib/python-support/python2.5/framework/subsystems/ogsmd/gsm/const.py, строка 805, в список phonebookTupleToNumber assert ntype in ( 129, 145, 208 ), "unknown type %i" % ntype. Будет полезно, если вы выясните, что это за номер, и предложите в http://trac.freesmartphone.org/ добавить его в список.