Ключевые слова:palm, pocketpc, pda, linux, qt, (найти похожие документы)
From: realloc <realloc@realloc.spb.ru.>
Newsgroups: http://realloc.spb.ru
Date: Mon, 12 Jun 2005 18:21:07 +0000 (UTC)
Subject: Установка pocketWorkstation на Sharp Zaurus SL-6000L
Оригинал: http://realloc.spb.ru/docs/sl6kdeb.html
Здесь речь пойдёт об установке на Sharp Zaurus SL-6000L Debian
GNU/Linux в версии от pocketworkstation.org. Документ этот пишется для
сбора в одном известном мне месте информации по вопросу тонкостей,
касающихся именно этой связки. Если у вас появились свежие мысли по
этому поводу, или вы нашли какую-то неточность - буду рад общению.
Первоначально слизано с http://digilander.libero.it/c700/ с
поправками для моей модели и переводом на русский + внесение
собственного опыта.
Идея pocketWorkstation достаточно проста - Запустить на Zaurus
полноценный Debian в chroot. Из этого вытекает возможность
пользоваться большим количеством софта, привычного по десктопу.
Недостатком можно считать большее потребление ресурсов и гораздо
меньшую ориентированность приложений на наладонное использование.
Автором предлагаеться использовать не стандартные Xы для интерфейса, а
достаточно оригинальное сочетание их Xvnc и fbvnc. Т.е. VNC сервера и
клиента на одной машине. При кажущейся бесполезности подход весьма
эффективен, т.к. позволяет использовать различные разрешения и
масштабировать изображение, да ещё и с antialiasing'ом. Всякие мелкие
приятности в виде возможности оставить иксовые приложения работать в
бэкграунде и на время запустить Кутопию, он-скрин клавиатурку,
регуляторы и переворачивалки с масштабированием я не упоминаю :)
Все инструкции предполагают использование дефолтного рома от Sharp.
Что нам потребуется:
* Zaurus SL-6000
* Карта памяти. В моём случае 1Gb SD
* Начальный образ системы большой или [http://pocketworkstation.org/files/zaurus-debian-base-v0.17.tgz маленький]]
* fbvnc c поддержкой SL-6000
Подготвка QTopia
Нам потребуется какой-нибудь терминальчик, и немного текстового
редактора. Для этих целей вполне подойдёт QKonsole. Для любителей есть
ещё MC.
По умолчанию в SharpROM /bin/sh указывает на /bin/ash. Надо исправить
это досадное недоразумение. Запускаем консольку.
bash-2.05$ su
# mount -o rw,remount /dev/root /
# rm /bin/sh
# ln -s /bin/bash /bin/sh
Т.к. нашу SD мы будем держать в ext2, то надо внести изменения в
/etc/fstab. Опция noauto указана не случайно. Монтирование произойдёт
автоматически через sdcontrol после подгрузки модуля для SD карточек.
/dev/mmcda1 /usr/mnt.rom/card ext2 rw,noatime,noauto 0 0
По некоторым сведениям в SD модуле от шарпа есть бага, которая вешает
устройство при большой нагрузке в асинхронном режиме. Так что если это
наблюдается, то надо сделать так:
/dev/mmcda1 /usr/mnt.rom/card ext2 rw,noatime,sync,noauto 0 0
Таким образом мы сможем пожертвовать скоростью в пользу стабильности.
Paolo Sarpi предлагает так же поправить /etc/sdcontrol:
--------BEGIN SNIP--------
FSTYPE="-t ext2"
FATOPTS="-o noatime,quiet,umask=000,iocharset=utf8"
EXT2OPTS="-o noatime"
--------ENDOF SNIP--------
--------BEGIN SNIP--------
case "$ACTION" in
'insert')
# mount $FSTYPE $FATOPTS $DEVICE $MOUNT_POINT
mount $FSTYPE $EXT2OPTS $DEVICE $MOUNT_POINT
MOUNT_RES = `mount | grep $DEVICE`
if [ "$MOUNT_RES" = "" ]; then
mount $FSTYPE $DEVICE $MOUNT_POINT
fi
--------ENDOF SNIP--------
Подготовка карточки
Если имеется в наличии кардридер, то лучше всё это делать с
настольной машинки. Нам надо отформатировать карточку в ext2.
# mke2fs /dev/mmcda1
И после этого распаковать на неё образ системы. (большой или
маленький). Распаковывать можно в поддиректорию, однако мне больше
нравится когда корень карточки есть корень системы. Ибо есть надежда
на монтирование его как / :)
Настройка системы
Прежде чем двигаться дальше обратимся к памяти, которой всегда не
хватает. Мы можем обойти эту проблему создав swap файл нанашей SD.
Создавать мы его будем на 64 мегабайта. Пропишем активацию свопа в
rc.local.
swapon /mnt/card/.swap
exit 0
И теперь добавляем его на 5 runlevel.
# dd if=/dev/zero of=.swap bs=1024 count=65535
# ln -s /etc/rc.d/rc.local /etc/rc.d/rc5.d/S80local
Что бы добавить скрипты запуска Debian в chroot и сделать последние
штрихи в нашем окружении, надо запустить INSTALL.d/postinst.sh. В моём
случае: /mnt/card/NSTALL.d/postinst.sh.
На все вопросы, кроме предложения запуска Xvnc и fbvnc (последние два
вопроса) отвечаем утвердительно. Теперь пришло время подменить
умолчанные Xvnc и fbvnc на более продвинутые. Брать из
http://pocketworkstation.org/files/ Качаем Xvnc-xf4vnc-4.3.0.104-kw1-arm.gz
и fbvnc-arm-experimental-2004-08-03.gz, распаковываем, переименовываем.
Xf4vnc кладём в /mnt/card/usr/bin , делаем там же на неё симлинк Xvnc.
fbvnc отправляется в /mnt/card/usr/local/bin
Далее идём подгонять под себя скрипты. Новая версия fbvnc (мы её уже
установили) поддерживает обмен с Xvnc через shared memory, что
значительно быстрее, чем гонять данные через loopback. Если хочется
это использовать, то:
--------BEGIN SNIP--------
if [ -z "$1" ]; then
fbvnc -shared 127.0.0.1:1
else
fbvnc -shared "$@"
fi
--------ENDOF SNIP--------
Правим /etc/debroot.conf по своему вкусу.
DEBROOT=/usr/mnt.rom/card
DEB_RUN_VNCSERVER=1
DEB_RUN_FBVNC=1
DEB_ZAPM_PROXY=1
DEB_RUN_ZAPMD=1
Осталось поправить разрешение будущего десктопа. Идём в
/mnt/card/usr/local/bin/zvncserver и правим
Xvnc -geometry 480x640 -depth 16 -pixelformat RGB565
Там же убираем ненужное нам при открытии новой сессии. Например кучку
терминалов. И добавляем смену фона на более приличный.
# autohide mouse pointer
unclutter &
# wait for icewm to finish initializing - FIXME
sleep 10
# set background color
xsetroot -solid 'black'
Настройка Debian
Внимательно посмотрев на нашу свежеустановленную систему мы заметим
несколько интересных моментов, которые то же надо исправить. Для
начала обратим внимание что у нас нету /etc/mtab
# ln -s /proc/mounts /etc/mtab
Так же надо заметить что у мы понятия не имеем о том, что такое модули
ядра и что с ними делать. Нам надо скопировать модули из базовой
системы в наше окружение. Делать мы это будем через cru - скрипт,
позволяющий выполнять команды вне chroot.
# cru cp -R /lib/modules.rom/2.4.18-rmk7-pxa3-embedix /mnt/card/lib/modules/
И теперь установим то,чем модулями манипулировать.
# apt-get install modutils module-init-tools
В первом приближении это всё. У нас получилась вполне рабочая Debian
GNU/Linux система, которая помещается в кармане (кто сказал что карман
должен быть маленьким?):)