Ключевые слова:opie, pda, linux, (найти похожие документы)
From: Shaman007 <http://www.digitalhardcore.us>
Date: Mon, 12 Nov 2006 18:21:07 +0000 (UTC)
Subject: Использование Linux на iPaq
Оригинал: http://www.digitalhardcore.us/?page_id=38
iPaq Linux HOWTO
Цель этого документа - описать простые пути решения основных задач
использования КПК, если на нем стоит ОС Linux. Я буду пополнять его
по мере возможности, находжения ошибок, решения или не решения новых
задач.
Зачем все это
Хороший вопрос - а зачем использовать Linux на КПК? Для себя я отвечаю
на него так: КПК для меня давно вышел за рамки "читалки книг и PIM'a",
коим был черно-белый Palm Zire с 2мя мегабайтами памяти, мне нужна еще
и нормальная работа с Сетью. Не только HTTP, а возможность
использовать ssh, nmap, ping и whois. Так же, мне нужна полноценная
многозадачность, да и от читалки книг и PIM'a я не хочу отказываться.
А WinCE несколько поднадоел своей ограниченностью. Конечно, работает
еще не все, но, мне кажется, исправление достдных оплошностей,
описаных тут дело месяцев или недель. Я буду пополнять это документ
тем, что мне еще удалось сделать и, также жду комментариев и советов.
Что у меня есть
* iPaq 2210 (64RAM, 32ROM, BT, 240 *320, USB-cradle)
* Compaq Foldable Keyboard
* Mobidick Bluetooth Dongle
* 1G Sandisk SD
Чего хочу от КПК
Тут перечислены задачи, большую часть из них я уже победил, которые
должен решать мой наладонник.
* Установка Linux и загрузка из WinCE
* Проверка работы железа
* USB networking
* Bluetooth networking
* Bluetooth mobile networking
* Обновление программного обеспечения
* Русификация интерфейса и ввода
* Просмотр Интернета
* Jabber, ICQ, IRC
* Чтение книг
* PIM
* Linux as Bootloader (LAB)
* Музыка, фильмы
* Редактирование MS Word и MS Exel
Если кому интересно, вот wallpaper, для WinCE он тоже вполне
годится.
Установка
Все началось почти год назад, когда я купил свой iPaq, который сменил
Tungsten E. Покупал я его с надеждой поставить туда Linux, так как
будучи на стенде Familiar на LinuxTAG 2004 я видел много iPaq'ов с
Linux'ами, а вот на Palm его было установить без шансов. Правда, в
тогдашнем состоянии порта Familiar на 2200, пользоваться им было
совcем не возможно: ядро, конечно, работало, а вот BT, тачпад, и,
самое главное, управление питанием - нет. Но я подписался на
рассылку и следил за новостями, пробовал билды и, наконец,
понял,что с выходом v0.83 (на момент поста он уже почти совсем
релиз, кажется, индекс RC2) дела с портом обстоят просто замечательно!
И 9 марта 2006 года решил полностью перейти на Linux.
Первый мой опыт был неудачен, я прочитал
http://www.handhelds.org/moin/moin.cgi/HpIpaqH2200SDBoot , скачал
OPIE образ с http://familiar.handhelds.org/snapshots/v0.8.3/RC2/unsorted/ и не
смог его загрузить. В рассылке мне объяснили, что с теми образами
имеются проблемы, поэтому правильно использовать вот этот образ, а
потом обновить его через feed.
Правильная (то есть та, которая сработала у меня, я считаю, что у вас
на компьютере Linux и буду приводить только значимые команды)
процедура такая:
1. Скачиваем указанный выше образ
2. Распаковывыем его куда-то на локальный диск (/home/ipaq)
3. Переходим в папку /home/ipaq/boot и копируем его на какую-нибудь
CF или SD/MMC
4. Создаем startup.txt следующего содержания, означающего, что
загружаться мы будем с 1го раздела SD (а для CF root=/dev/hda1):
set KERNEL zImage
set MTYPE 341
set CMDLINE "root=/dev/mmcblk0p1 noinitrd cachepolicy=writeback"
bootlinux
5. Кладем туда же haret.exe и wrap-haret.exe
6. Вставляем карточку в iPaq и переносим все это на iPaq File Store.
Оттуда они не будут исчезать при перезагрузках.
7. Далее, размонтируем карточку (у меня /dev/sde, у вас не знаю,
посмотрите fdisk -l), отформатируем ее на ext2, смонтируем, зальем
образ, отмонтируем:
#umount /dev/sde1
#fdisk /dev/sde
На вопросы: n (новый раздел), p (primary), 1(первый), w (выйти и
записать).
# mkfs.ext2 /dev/sde1
#mount /dev/sde1 /media/sde1
#cd /meda/sde1
#tar jxpcvf
#umount /dev/sde1
8. Вставляем карточку, запускаем whrap-haret.exe и минут через
несколько нам будет предложено ввести пароль рута и информацию о
пользователе. В первом приближении, установка завершена.
Здесь необходимо сделать два очень важных замечания:
1. после перезагрузки у нас опять буде WinCE в состоянии
перенесенного HardReset'a. Со сбитыми часами и дурацкой процедурой
обучения "долгому клику".
2. нельзя просто так ребутить Linux, так как это портит его файловую
систему. Только через init 6 или init 0 и если есть такая оказия,
очень советую слить содержимое карточки в хорошее место, прогнать
fsck и проинспектировать fost+found.
Железо и первичная настройка
Память
Первое, что нас должно интересовать, это память. Считаем, что ROM для
нас (пока) недоступен. В WinCE память делиться на 2 части, одна под
storage, одна под RAM, а карты памяти используются, так сказать,
сбоку. В Linux все как в большом компьютере: у меня 64МБ RAM и 1ГБ
"дискового" пространства на SD. 64 МБ - это не много и если мы выйдем
за их предела, то ничего хорошего из этого не выйдет. Я предлагаю
решать вопрос при помощи использования swap файла, и здесь опять есть
важные замечания:
1. Память медленная, поэтому делать swap большим смысла мало
2. Память не такая надежная, как дисковая в плане циклов
чтения-записи, а swap это будет делать интенсивно. Поэтому, лучше
использовать для него дешевый маленький CF, который потом можно
выкинуть, либо IBM Microdrive, который сейчас сложно добыть. Лично
я собираюсь просто не перегружать память многими приложениями,
чтобы он использовался не очень часто.
3. Swap использовать все-таки стоит, так как 1-2 мегабайта редко
используемых приложений на него таки будут сброшены.
Создадим 32МБ из консоли iPaq:
#touch /swap
#dd if=/dev/zero of=/swap bs=1M count=32
#mkswap /swap
#vi /etc/fstab
/swap none swap sw 0 0
#swapon -a
Теперь можно спокойнее работать с тяжелыми приложениями и
контролировать его работу через /proc/meminfo.
Клавиатура
Далее, с чем мне захотелось работать, была клавиатура. Vi не очень
удобен с виртуальной, которая отнимает пол консоли, поэтому, я купил
Compaq Foldable Keyboard. Работой с такими клавиатурами занимается
демон kbdd, конфигурационный файл которого /etc/kbdd.conf. Мне нужно
было просто раскомментировать строчки:
port: /dev/tts/0
type: foldable
Но перезапуск демона ничего не дал. Порывшись в Google, я нашел,
что по умолчанию порт /dev/tts/0 используется как консоль и задается
это последней строчкой /etc/inittab. Закомментируем ее:
#S:2345:respawn: /sbin/getty 115200 tts/0 vt100
После перезагрузки все, как говорится, работает.
Управление питанием
В настоящее время управление питанием полностью поддерживается,
однако, в примеденной мной ссылке на образ, отсуствует модуль
battery.ko, поэтому не доступен регистр состояния батарее. Управление
обеспечивает демон APM apmd, именно его вызов (apmd -suspend)
производится при нажатии кнопки Power. По какой-то причине, экран не
очищается при входе в sleep и изображение видно еще 2-3 секунды, но
это нормально. Часы во время "сна" продолжают идти.
Раньше зарядка батареи под Linux была проблематична, так как ток
контроллируется программно и пока не появился драйвер, батарейка
заряжалась до бесконечности и портилась.
В настоящее время не реализована поддержка смена частоты в зависимости
от загрузки процессора (хотя она есть в ядре), но это будет исправлено
в ближайшее время.
USB Networking
Следующая по важности задача - работа с сетью. На iPaq работает SSH,
грех не пользоваться нормальной консолью и scp. Нам понадобится крэдл
или USB-кабель. В качестве документации по этому вопросу нужно
использовать http://www.handhelds.org/moin/moin.cgi/UsbNet,
однако, там пропущен очень важный шаг: чтобы хостовый компьютер
распознал iPaq как сетевую карту usb0, перед подключением необходимо
загрузить модуль g_ether на стороне iPaq. А вот далее все становиться
довольно просто:
* ipaq # modprobe g_ether
* host # modprobe cdc_subset
* host # modprobe usbnet
* host # ifconfig usb0 192.168.0.200
* ipaq # ifconfig usb0 192.168.0.202
Теперь дадим iPaq'у прямой доступ в сеть
* host # echo `1' > /proc/sys/net/ipv4/ip_forward
* host # iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.202/32 -j MASQUERADE
* ipaq # route add default gw 192.168.0.200 usb0
Конечно, на хосте надо корректно завести настройки интерфейса usb0,
подгрузку модулей и настройку межсетевого эктана, чтобы в дальнейшем
обходиться только ifup usb0. На iPaq интерфейс определяется в
/etc/network/interfaces:
iface usb0 inet static
address 192.168.0.202
netmask 255.255.255.0
network 192.168.0.0
gateway 192.168.0.0
(todo: маршрутизация тоже где-то есть. а вот где?)
Bluetooth networking
По опыту общения с WinCE, задача выхода в интернет с КПК через
Bluetooth на большом компьютере казалась мне довольно трудной, причем
как раз со стороны КПК, так как такие простые настройки, как IP и
маску для разных вариантов соединения Microsoft умудрились запихать в
десяток малопонятных менюшечек. В Linux'e все оказалось крайне просто.
Считаем, что у вас достаточно современный дистрибутив и просто
воткнутый в USB Bluetooth dongle плднимает все нужные модули, а так же
команда /etc/init.d/bluetooth start срабатывает без ошибок, а если
нажать на иконку BT на iPaq, то большой компьютер виден (запомним его
адрес!).
Все, что нужно знать, описано в этом документе. Итак, надо
выполнить:
modprobe bnep на обоих хостах.
pand -listen -role GN на большом компьютере.
pand -connect host_bluetooth_addres на iPaq.
ifconfig bnep0 10.0.0.1 на большом компьютере.
ifconfig bnep0 10.0.0.1 на iPaq.
при помощи ping проверяем, что все работает именно так, как было задумано.
Русификация интерфейса
Для управления пакетами в Familiar есть довольно неплохой менеджер
ipkg, который поддерживает зависимости и репозитории. Им очень просто
пользоваться, во многом он похож на apt-get.
Для того, чтобы заработал русский интерфейс, необходимо:
1. Подключить ru-locale ветку feed. Для этого в надо создать файл
/etc/ipkg/ru-locale.conf с единственной строчкой "src/gz locale
http://familiar.handhelds.org/releases/v0.8.3/feed/locale/ru/"
2. Установить пакеты локализации для приложений. Для этого надо
просто запустить ipkg update, после чего отфильтровать из всех
доступных пакетов относящихся к локализации locale-ru: ipkg
list|grep locale-ru. Далее установить понравившиеся: ipkg install
package_name-locale-ru.
3. Скопировать TTF шрифты Microsoft'a в /usr/share/fonts/ttf/.
4. Установить пакеты, относящиеся к Glibc, обеспечивающие поддержку
различных кодировок. Без этого не будет работать, например,
нормальное отображение страниц в разных кодировок в браузере.
Опять же, надо отфильтровать все пакеты glibc и gconv, содержащие
unicode, koi, CP1251 и ru-ru, после чего установить их.
Русский ввод
Для ввода русского текста с экрана необходима русская раскладка
клавиатуры. Самая лучшая из встреченных мной вот эта:
iPaq Russian keyboard
http://whitenoise.ssrlab.com/pda/xkbd/xkbd-ru-en-123_0.1.1.tar.gz
Она создана пользователем white_noise LOR'a. Вот локальная
копия. Есть еще не такая красивая клавиатура.
Как организовать многоязычный ввод с внешней клавиатуры, я пока не
понял. Есть еще одна проблема: gpe-soundbite перехватывал а,п и р как
хоткеи, и еще что-то перехватывает ч. Как это победить - надо еще
выяснить.
Приложения
Приложения доступны через Feed и устанавливаются командой вида:
ipkg install package_name
Одно из самых интересных свойств порта Linux то, что многие desktop
приложение портированы. Я запускал Firefox, evince, Abiword, но
пользоваться ими не советую, так как они не ориентированы на мобильное
рзрешение экрана. Поэтому, придется озадачиться подбором хорошо
портированных и заточеных приложений:
1. Instant Messaging: GAIM. Я использую его с Jabber и JIT
транспортом для ICQ, нет проблем с русским, входит в начальную
поставку и, вообще, отличен. GAIM
2. Web: Dillo2. Необходимо установить из Feed. Нет проблем с русским,
написан на С с 0, оптимизирован под низкие разрешения. Dillo 2
3. Сеть: wget, nmap, ncftp, whois, ping присутствуют в feed. Особенно
приятно наличие nmap.
4. Консоль: я установил Midnight Commanger и Nano, так как ими иногда
бывает удобно плользоваться по SSH.
5. PIM: стандартные приложения GPE для контактов, дел, встреч и учета
рабочего времени. Функционально они превосходят все, что мне было
известно в WinCE. Могут синхронизироваться с Evolution (и,
кажется, с Kontact и MS Exchange, но пока я этим не занимался).
Примечательно, что базы они хранят в sqlite, так, что я не вижу
вообще связанных с ними проблем, так как при случае все можно
решить скриптами. PIM
6. Для просмотр фотографий так же лучше всего пользоваться встроеным
в GPE приложением. Gallery
7. Каналы новостей можно просматривать встроеной версией Plucker. Не
фонтан и надо найти RSS-ориентированую замену.
8. Для остальных описаных задач я пока ищу решение и приложение. Как
найду - обновлю этот список.
Благодарности
В первую очередь всем, кто помогал мне в рассылке H2200-port.