Инструменты пользователя

Инструменты сайта


делаем_из_mer_удобную_рабочую_систему

Делаем из Mer удобную, рабочую систему

Ubuntu 9.04 на вашем таблете

Предисловие

Недавно выяснилось, что при загрузке спомощью chroot скорость увеличивается в 2-3 раза по сравнению с загрузкой из бутлоадера, при этом все сервисы и библиотеки остаются на месте, что делает систему почти такой же как и maemo(в скорости, аппаратной функциональности и энергосбережении), вот некоторые преимущества:

  • Увеличилась скорость работы и запуска приложений - разница времени ожидания запуска некоторых приложений в маемо и убунте составляет всего 2-4 секунды
  • Используется модуль pressure для тачскрина, что делает его таким чувствительным
  • Работает калибровка тачскрина (!!!)
  • Работают все демоны обеспечивающие максимальное сохранение энергии
  • Умный своп
  • Используется Xomap со специальными патчами, окна отрисовываются быстрее
  • Управление питанием и экраном - сон, отключение, ребут, блокировка(рычажком), подсветка(экрана и клавиатуры), сенсор света(!), светодиод(!!!)
  • Менеджер соединений из maemo :)
  • Откалибровать экран можно в маемо
  • Корректно работает HAL, что позволяет отлавливать все системные события и, в том числе, отслеживать заряд батареи
  • Sapwood-server продолжает работу, приложения maemo отображаются корректно, в том числе и controlpanel
  • Есть звук! да здравствует звук!
  • Работает переворот экрана. Полезная штука(сказано с ухмылкой)
  • Любое приложение из убунты запускается в маемо и наоборот :) Например xkill и alltray действуют даже на хилдоновские приложения
  • Запуск системы происходит в одно касание, длится около 12-15секунд, при этом убивается хилдоновский десктоп, монтируются папки и стартует lxde. Выйти обратно можно тоже одним-двумя касниями, соответственно убивается lxde, отмонтировывается убунта и запускается маемовский matchbox. Никакой перезагрузки!
  • Никаких бутменю, соответственно
  • Если вы не хотите запускать lxde-десктоп, то «ubu sudo su» в консоли, например, сделает chroot и выполнит su(короче даст рутовый убунту-терминал) а «ubu pcmanfm» запустит убунту-проводник от юзера. позже поподробней
  • Никаких проблем с клавиатурой

Предостаточно :) Поэтому все всеми руками, ногами, хвостами, ушами за запуск через chroot.

Подготовка

Сначала нам нужно установить rootfs Mer'а по этой инструкции, если вы это уже сделали - смело продолжайте


После установки Mer'a вам нужно загрузиться в него и завершить начальную установку. Когда спросят имя пользователя, обязательно введите user !!

Всегда отслеживаете, в какой оси вы работаете! Иначе снесёте половину maemo…


Теперь подоготовим Maemo к запуску убунты

Расправляемся с правами

echo "Defaults env_check+=\"HOME DISPLAY\"" > /etc/sudoers.d/01sudo
echo "Defaults env_keep+=\"HOME DISPLAY\"" >> /etc/sudoers.d/01sudo
echo "Defaults env_reset" >> /etc/sudoers.d/01sudo
echo "user ALL = NOPASSWD: ALL" >> /etc/sudoers.d/01sudo
update-sudoers

Подключаем модули

insmod /mnt/initfs/lib/modules/2.6.21-omap1/mbcache.ko
insmod /mnt/initfs/lib/modules/2.6.21-omap1/ext2.ko
insmod /mnt/initfs/lib/modules/2.6.21-omap1/jbd.ko
insmod /mnt/initfs/lib/modules/2.6.21-omap1/ext3.ko

Чистим мусор и создаём каталоги:

umount /mnt/mer
rmdir /mnt/mer
mkdir /mnt/ubu
mkdir /home/user/Ubuntu
mount /dev/mmcblk1p2 /mnt/ubu
mkdir /mnt/ubu/home/user/Maemo
mkdir /mnt/ubu/mnt/maemo
mkdir /mnt/ubu/media/mmc1
mkdir /mnt/ubu/media/mmc2
rm /mnt/ubu/mer-armel-n8x0*  

Замените mmcblk1p2 на свою партицию с Mer, обратите внимание что пользователь должен быть user, иначе решайте свои проблемы сами :)

Устанавливаем специальный пакет:

wget http://linux.kynpu.ru/ubu/easy_ubuntu.tar
wget http://linux.kynpu.ru/ubu/9menu.tar
tar xvf 9menu.tar -C /
tar xvf easy_ubuntu.tar -C /
rm easy_ubuntu.tar 9menu.tar

Что в нём содержится:

  1. qmount, qunmount, qchroot - утилиты для монтирвания и «правильного» chroot'а. Правильность заключается в том, что экспортируются все важные переменные окружения и монтируются системные каталоги , после чего происходит chroot.
  2. closechroot - «правильное» закрытие chroot'a
  3. ubu - скрипт для выполнения команд из под chroot'a без запуска чего либо другого
  4. ubu-switch - банально убиение/запуск процессов, экспорт переменных и старт команды «ubu startlxde»
  5. ярлычки для ubu-switch, closechroot, lxpanel, переключения xbindkeys и примеры использования команды ubu.

и другие полезные утилиты

После его установки нужно отредактировать конфиг /home/user/.chroot, измените mmcblk1p2 на вашу партицию с Mer.

Теперь делаем chroot, пока без иксов:

ubu su

Если выдало критическую ошибку - значит что-то вы упустили или неправильно сделали. Проверьте всё ещё раз, если ошибка останется - напишите на форум или мне лично

Все последующие пункты должны уже выполняться под chroot.

Во избежание путаницы:

rm -r /root
ln -s /home/user /root
passwd
passwd user
apt-get remove docpurge

докпург - зло.

Фан-арт:

wget http://linux.kynpu.ru/ubu/gio_bg.png
mv gio_bg.png /usr/share/backgrounds/


Репозитории

Пока русского языка в системе нет, сбросим стандартную локаль

export LC_ALL=C
export LANGUAGE=C
export LANG=C

Отредактируем /etc/apt/sources.list (командой vi), он должен выглядеть вот так:

deb http://ports.ubuntu.com jaunty main restricted universe multiverse
deb-src http://ports.ubuntu.com jaunty main restricted universe multiverse

deb http://b-man.xceleo.org/repo/ubuntu-n8x0/ alpha contrib main non-free
deb-src http://b-man.xceleo.org/repo/ubuntu-n8x0/ alpha contrib main non-free

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

Установим GPG-ключ от tspre.org:

wget http://packages.tspre.org/repo.key
apt-key add repo.key

Готово!

apt-get update
apt-get upgrade

Если потребуются пакеты из maemo - добавляйте репы из maemo, не стесняйтесь :)

Локаль

Перед тем как генерировать локаль, надо установить девайс в R&D mod(это даже полезно) по этой инструкции: R&D mod

locale-gen ru_RU.UTF-8 en_US.UTF-8

после чего в файле /etc/locale.alias меняем ISO-8859-5 и ISO-8859-1 на UTF-8, сделать это можно командами

sed -i 's/ISO-8859-1/UTF-8/g' /etc/locale.alias
sed -i 's/ISO-8859-5/UTF-8/g' /etc/locale.alias

И, наконец,

apt-get install language-pack-ru

Теперь нужно перезайти

exit
closechroot
ubu su

Если команда locale не выдаёт ошибок и везде стоит ru_RU.utf8 то значит пункт выполнили

Прощание с hildon

Лучше не делать, если не знаете чес кончится

Первая волна:

apt-get remove hildon* matchbox-keyboard

Вторая волна:

apt-get autoremove

Возвращаем то что смыло:

apt-get install clipboard-manager daemon hald-addon-bme rcrefresh waitdbus

Чистим кеш:

apt-get autoclean

После всех шагов система должна весить около 300мб, не считая /var Проверить можно командой

du -csh /*

Установка LXDE

Установим графическую оболочку и кучу полезных пакетов:

apt-get install lxde lxlauncher human-netbook-theme human-icon-theme roxterm aptitude gnome-alsamixer libgtkstylus xsession-gtkstylus moc tablet-backlight alltray midori # google-gadgets-qt bubblefishymon tea vim abiword pidgin epiphany-browser 

Всё что после # - мой выбор(моё предпочтение), удалите этот символ и скопируйте всю строку если не придумали ничего получше :) Вкратце объясню что каждый пакет делает:

  • lxde - имхо, самый подходящий для таблетов WM. Мало весит, мало жрёт, основан на GTK+, стековый, очень удобный. Огорчает отсутствие встроенной поддержки виджетов на рабочем столе, может кто-то подскажет внешнюю замену?
  • lxlauncher - панель крупных ярлычков программ вместо рабочего стола. Полезно, но неудобно(поставить, посмотреть, удалить)
  • vim - консольный текстовый редактор
  • human* - GTK+ тема, для начала сойдёт
  • roxterm - хороший, конфигурируемый терминал для замены lxterminal
  • aptitude - менеджер пакетов, работает стабильно
  • gnome-alsamixer - единственный приличный микшер, который я смог найти :( Работает. Железно.
  • libgtkstylus, xsession-gtkstylus - библиотека и скрипт, которые обеспечивают поддержку длинного тапа
  • moc - единственный нормальный консольный плеер, минимум нагрузки на проц, супер удобное управление
  • tablet-backlight - ручная регулировка подсветки
  • alltray - сворачиваем любое окно в трей
  • midori - лёгкий браузер, использует webkit engine
  • epiphany-browser - более тяжёлая замена, базируется нна mozilla/gecko движках
  • screenshot-tool - снятие скринов
  • bubblefishymon - аквариум. с рыбками и уточкой. Отличный видежет-мониторинг системы
  • google-gadgets-qt - гуглгаджеты на все случаи жизни, не тормозит и выглядит красиво. требует интернет
  • wmmixer - красивый микшер, функционала мало, зато прост в использовании

.bashrc && profile

~/.bashrc исполняется при запуске командной оболочки bash, profile используется только для интерактивных шеллов, но нам пофиг. В этих файлах мы экспортируем нужные нам переменные окружения и, в качестве примера, алиасы к некоторым командам Во избежание «weird things» удалим /etc/profile, /home/user/.profile и /home/user/.bashrc

Вот мой /etc/profile:

#!/bin/sh

cd ~

#не логируем повторяющиеся команды в .bash_history
export HISTCONTROL=ignoredups

shopt -s checkwinsize

[ -x /usr/bin/lesspipe ] && eval "$(lesspipe)"

#Заголовок
PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME}: ${PWD/$HOME/~}\007"'
export PROMPT_COMMAND

# Закомментируйте, если у вашего терминала светлый фон
BRIGHT=";1"

PS1="\[\033[0${BRIGHT}m\][\[\033[34m\]\u\[\033[0${BRIGHT}m\]|\[\033[36m\]\w\[\033[0${BRIGHT}m\]]\[\033[0m\] "
PS2="\[\033[0${BRIGHT}m\]>\[\033[0m\] "


export PS1 PS2


alias pic="gpicview $1"
alias ed="leafpad $1"
alias pl="mplayer $1"
alias ai="apt-get install $1"
alias as="apt-cache search $1"
alias ar="apt-get remove $1"
alias au="apt-get update"
alias ac="apt-get autoclean"

export PATH="$PATH:/usr/local/bin/:/usr/local/games:/usr/games"
[ "x$DISPLAY" != x ] || export DISPLAY=:0.0

export LC_ALL=ru_RU.utf8
export LANG=ru_RU.utf8
export LANGUAGE=ru_RU.utf8

export GTK_MODULES=libgtkstylus.so

export SAL_USE_VCLPLUGIN="gtk"
export OOO_FORCE_DESKTOP="gnome"
export SAL_NOOPENGL="true"
export OOO_DISABLE_RECOVERY="true"
export SAL_DISABLE_SYNCHRONOUS_PRINTER_DETECTION="true"

После чего делаем

ln -s /etc/profile /home/user/.bashrc

И чтобы нас не доставали, снимаем пароль с sudo:

rm -r /etc/sudoers.d/*
echo "user ALL = (ALL) NOPASSWD: ALL" > /etc/sudoers.d/01sudo
update-sudoers

Теперь, для получения рут прав используйте

sudo su

Или из под Maemo

ubu sudo su

Перезаходим:

exit
closechroot
ubu sudo su

Заметили? Пароль не требуется и приглашение цветное! :)

Наэкранная клавиатура

Проделайте инструкции http://n8xx.com/subject-3445-matchbox-keyboard-xbindkeys.html

в убунте и подправьте скрипт /usr/bin/ubu-switch в Maemo:

....

ubu "/etc/init.d/xbindkeys start; ubu /etc/init.d/matchbox-keyboard start"
ubu startlxde
ubu "/etc/init.d/matchbox-keyboard stop; ubu /etc/init.d/xbindkeys stop"

....

Раскладки клавиатур хранятся в /usr/share/matchbox-keyboard/ и удобны для редактирования

Клавиатура показывается/скрывается командой /bin/mkt. Это можно прописать в .xbindkeysrc (как показано ниже), например на клавишу минус.

Maemo из под убунты

Для правильного запуска приложений Maemo из убунты воспользуемся тем же методом :)

Делаем в убунте

wget http://linux.kynpu.ru/ubu/mmo.tar
tar xvf mmo.tar -C /
rm mmo.tar

Всё. Знакомые qmount, qumount, closechroot, qchroot и mmo вместо ubu. Всё делается так же.

mmo sudo su

это рутовый шелл

mmo osso-xterm

это сами знаете что

Конфигурация среды

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

openbox

Openbox - «движок» lxde. У него большой конфиг, в котором прописаны все настройки, сочетания клавиш, обработки событий

Конфиг: /home/user/.config/openbox/lxde-rc.xml

lxpanel

Возможен глюк при включении апплета volume.

Если запороли lxpanel - отредактируйте файл /user/home/.config/lxpanel/LXDE/*

lxdesktop

Он же pcmanfm в режиме демона. Ни в коем случае не ставим галку «Show Debian menu»

moc

Отличный плеер. Конфиг:

wget http://linux.kynpu.ru/ubu/moc.tar
tar xvf moc.tar -C /
rm moc.tar

Конфиг хранится в /home/user/.moc/ Куча полезной инфы, дефолтный конфиг и список действий клавиш хранятся в /usr/share/doc/moc/

gnome-alsamixer

  • PCM - Общий уровень громкости
  • HP - Громкость звука в наушниках
  • Line - Громкость звука в динамиках

Клавиатура

Впрочем, без этого пункта всёравно всё работает :) Но если мы хотим добиться максимального удобства, придётся прибегнуть к хитрости. Предпологается, что у вас есть свой конфиг xkb клавы(вы же редактировали хоть раз файл nokia_vndr/rx-44?) и вы не используете Nokia SU-8W.

Делать надо в Maemo!

cd /usr/share/X11/xkb/symbols/nokia_vndr/
rm su-8w
cp rx-44 su-8w
sed -i 's/su-8w/rx-44/g' /usr/share/X11/xkb/symbols/nokia_vndr/su-8w

Затем редактируем su-8w:

  1. Меняем местами клавиши F6 и F11 (клавиша фуллскрин)
  2. Вместо F4 пишем Menu
  3. На какую-либо клавишу(на клавиатуре, например Chr или Menu(а меню на F5, бывший Home)) вешаем Alt_L
  4. Приписываем modifier_map mod1 { Alt_R }; сами найдёте куда

делаете любые удобные изменения. Если ничего не ясно, вот мой конфиг:

http://linux.kynpu.ru/ubu/su-8w.tar

разумеется все клавиши в нём подстроены под меня

Когда закончите, сохраните и выполните

setxkbmap -model nokiasu8w -layout us -keycodes evdev

Проверим:

ubu xev

Всё ок? Возвращаем обратно:

setxkbmap -model nokiarx44 -layout us -keycodes evdev

Зачем всё это нужно? Вот зачем: при старте убунты скрипт выполняет команду setxkbmap и переключает раскладку клавиатуры. После завершения работы в убунте - возвращает раскладку обратно.

Окна можно таскать с зажатым Alt_L :) Вместо F6 роль клавиши фуллскрина играет F11

xbindkeys

Одна из самых полезных штук, позволяет назначить действие на любую клавишу или сочетание клавиш

По сути у вас уже стоит xbindkeys, он поставляется комплектом с matchbox клавиатурой

Вот к примеру мой /home/user/.xbindkeysrc:

###########################
# xbindkeys configuration #
###########################
#
# Version: 0.1.3
#
# If you edit this, do not forget to uncomment any lines that you change.
# The pound(#) symbol may be used anywhere for comments.
#
# A list of keys is in /usr/include/X11/keysym.h and in
# /usr/include/X11/keysymdef.h 
# The XK_ is not needed. 
#
# List of modifier (on my keyboard): 
#   Control, Shift, Mod1 (Alt), Mod2 (NumLock), 
#   Mod3 (CapsLock), Mod4, Mod5 (Scroll). 
#
# Another way to specifie a key is to use 'xev' and set the 
# keycode with c:nnn or the modifier with m:nnn where nnn is 
# the keycode or the state returned by xev 
#
# This file is created by xbindkey_config 
# The structure is : 
# # Remark 
# "command" 
# m:xxx + c:xxx 
# Shift+... 

#keystate_numlock = enable
#keystate_scrollock = enable
#keystate_capslock = enable

#ToggleKBD
"/usr/bin/mkt"
   F8

#XKill
"/usr/bin/xkill"
   Control+F7

#XTray
"/usr/bin/alltray"
   Control+F8

#Mixer
"/usr/bin/gnome-alsamixer"
   Control+F11

#Maemo_menu
"mmo 9menu -geometry +30+240 -label 'Maemo' -file /home/user/.maemo-menu &"
   Control+Menu

#
# End of xbindkeys configuration
  • F7 - Вызывает клавиатуру
  • Control+F7 - Вызывает xkill (убивает любое приложение)
  • Control+F8 - Вызывает alltray (сворачивает любое приложение в трей)
  • Control+F11 - Вызывает gnome-alsamixer (регулировка звука)
  • Control+Menu - Вызывает Maemo-Menu (см. ниже)

maemo-menu

Просто меню с простым конфигом. Запускается из маемо и запускает заданные приложения. Пример конфига поставляется вместе с easy-ubuntu. Лежит тут: /home/user/.maemo-menu в маемо

Запускается сочетанием клавиш Control+Menu или командой

mmo 9menu -geometry +30+240 -label 'Maemo' -file /home/user/.maemo-menu &

mplayer

В официальных репах отсутствует, придётся брать из маемо(может оно и к лучшему):

mv /etc/apt/sources.list /etc/apt/source2
echo "http://repository.maemo.org/extras-devel/ diablo free non-free" > /etc/apt/sources.list
apt-get update && apt-get install mplayer
echo "http://mirror.yandex.ru/debian sid main non-free contrib" > /etc/apt/sources.list
apt-get update && apt-get install smplayer
rm /etc/apt/source2 /etc/apt/sources.list && apt-get update

Всё. Рабочий mplayer и красивенький qt'шный smplayer :)

Tips

  • Если вы хотите узнать список всех файлов содержащихся в каком-либо пакете выполните less /var/lib/dpkg/info/<имя_пакета>.list
  • Если один пакет пытается заменить файл из другого пакета - удалите этот файл из /var/lib/dpkg/info/<имя_второго_пакета>.list и он будет заменён
  • Если какой-либо пакет не найден - возьмите его из репозитория Debian Sid
  • Для установки maxima используйте Debian Sid репозиторий
  • будет пополняться

Скриншоты

http://img.kynpu.ru/gallery.php?id=296D_4A9A7FAF
Скриншоты






©Xlab
По всем вопросам писать на форум или мне :)



P.S. Мнимый брэнд GinkOs - флешмоб, взявший начало отсюда (само название возникло вне форума, в личной переписке, первое публичное заявление - http://4pda.ru/forum/index.php?s=&showtopic=110438&view=findpost&p=2451031) знатный холиварчег тогда устроили ;)

делаем_из_mer_удобную_рабочую_систему.txt · Последние изменения: 2009/12/19 15:31 — dik