recipes-core/base-files/base-files/dot.profile
==========================================================
export LC_ALL=ja_JP.UTF-8
export GTK_IM_MODULE="uim"
export XMODIFIERS="@im=uim-anthy"
if [ -n "$DISPLAY" ] ; then
if [ -f /usr/bin/uim-xim ]; then
uim-xim &
fi
if [ -f /usr/bin/uim-toolbar-gtk-systray ]; then
uim-toolbar-gtk-systray &
fi
if [ -f /usr/bin/setxkbdmap ]; then
setxkbmap -layout jp
fi
xset -dpms
xset s 0
else
export DISPLAY=:0.0
fi
==========================================================
/home/root/.profile は、SATO DESKTOPの起動時にも読み込まれているため、その読み込みのタイミング
で、uimの起動を行っています。
通常のloginと区別するために、DISPLAY環境変数の設定の有無で判別するという、多少泥臭い方法にて
実装しています。
なお、本ファイルは最終的に/home/root/.profileとなりますが、そのままのファイル名で作成すると
見落とす可能性があるため、dot.profileという名称でレシピに含め、do_install時に正規の名称でコピー
を行う処理をbbappendで実行しています。
yakuhito
2018/5/14 (月) 15:55
バージョン2.2限定となりますが、これから複数回に分けて解説します。
以前紹介した
http://mickey-happygolucky.hatenablog.com/entry/2017/09/17/053500
のサイトを参考に、電源投入で立ち上がった際に、すぐに日本語入力が可能な変更をYocto2.2上で構築可能なことを
確認しております。
なお、Yocto2.3以降のバージョンにおいて、入力切替(直接入力ーひらがなーカタカター全角英数、ローマ字入力ーかな入力ー...)
のツールバーが表示できなくなってしまう現象が発生しており、2.3以降は解決後に記載します。
yakuhito
2018/5/14 (月) 16:37
1)必要なレイヤー、レシピ
日本語入力を実現するのに必要なパッケージを生成するためのレシピは、YoctoProjectからリリースされているpokyには
含まれていません。
今回の実装では、Yocto2.2(morty)の例となります。
1.poky の取得
git clone -b morty git://git.yoctoproject.org/poky.git
2. meta-oe の取得
git clone -b morty git://git.openembedded.org/meta-openembedded
3. uimの新しいレシピの取得
ブランチ morty で取得したmeta-openembedded/meta-oe/recipes-supports/uim 以下のレシピは、
uim-anthyが生成できない問題点があり、前コメントで紹介した修正済のレシピを使用するため、
別の場所に対応したmeta-openembeddedのダウンロードを行います。
今回の動作確認では以下のものを使用しています。
git clone -b rocko git://git.openembedded.org/meta-openembedded
4.新規にレイヤーを作成
ダウンロードしたrocko版のmeta-openembedded/meta-oe の recipes-supports/uim 以下を保存するため
レイヤーを新規に作成します。
uimのレシピですが、mortyでもrockoでもバージョンそのものは変更が無いため、新規作成レイヤーの
PRIORITYは、meta-oeの6よりも大きな値を設定します。
弊社では以下のような構成のレイヤーを作成しております。
meta-lineo-before-rocko/
|-- COPYING.MIT
|-- README
|-- conf
| `-- layer.conf
`-- recipes-support
`-- uim
|-- uim
| |-- 0001-Add-support-for-aarch64.patch
| |-- 0001-fix-bug-for-cross-compile.patch
| `-- uim-module-manager.patch
`-- uim_1.8.6.bb
作成したレイヤーをbuild対象とするため、bitbake-layers add-layer を使用して conf/bblayers.conf に追加します。
yakuhito
2018/5/14 (月) 17:30
2) 必要なパッケージを追加した新規イメージレシピの作成
本例は、core-image-satoをベースとした新規イメージレシピを作成する手順となります。
1. レシピの保存ディレクトリを作成する
生成したレイヤー内に、recipes-core/images ディレクトリを作成する。
2. core-image-satoをベースとして新規イメージレシピを作成する
core-image-sato.bbappendを作成して、その中でIMAGE_INSTALL_appendで追記しても
同じ結果となりますが、bbappendとした場合、core-iamge-satoのオリジナルを再度作ろうと
した場合は、bbappendを無効とする必要があります。
弊社では以下の内容にて、新規イメージレシピを作成しております。
======================================================
require recipes-sato/images/core-image-sato.bb
IMAGE_LINGUAS = "ja-jp en-us en-gb"
IMAGE_INSTALL_append = " uim-xim uim-utils uim-common uim-gtk2.0 uim-gtk3 uim-anthy setxkbmap"
======================================================
yakuhito
2018/5/14 (月) 18:01
3) softoware keyboardを表示させる
Yocto Projectから配布されているpokyのリファレンスボードbeagle boneでcore-image-satoを実行した場合、
matchbox-keyboardが自動起動となりませんでした。
原因を探っていくと、/etc/formfactor/config の HAVE_KEYBOARD の値が1になっている
場合には、matchbox-keyboardがインストールされていても起動されないことが判明しました。
poky/meta-yocto-bsp/recipes-bsp/formfactor/formfactor/beaglebone/machconfig の中で、HAVE_KEYBOARD=1
が設定されていたため、以下のファイルツリーを新規レイヤに追加しています。
==========================================================
recipes-bsp/
`-- formfactor
|-- formfactor
| `-- beaglebone
| `-- machconfig
`-- formfactor_0.0.bbappend
==========================================================
recipes-bsp/formfactor/formfactor/beaglebone/machconfig
==========================================================
HAVE_TOUCHSCREEN=0
HAVE_KEYBOARD=0
==========================================================
ecipes-bsp/formfactor/formfactor_0.0.bbappend
==========================================================
FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
==========================================================
yakuhito
2018/5/14 (月) 18:20
4) uim起動スクリプトの作成
システム起動時にuimを自動起動を行うスマートな方法は他にもあると考えられますが、
今回は、/home/root/.profile の中で起動を行う処理を追加しています。
==========================================================
recipes-core/
`-- base-files
|-- base-files
| `-- dot.profile
`-- base-files_3.0.14.bbappend
==========================================================
recipes-core/base-files/base-files/dot.profile
==========================================================
export LC_ALL=ja_JP.UTF-8
export GTK_IM_MODULE="uim"
export XMODIFIERS="@im=uim-anthy"
if [ -n "$DISPLAY" ] ; then
if [ -f /usr/bin/uim-xim ]; then
uim-xim &
fi
if [ -f /usr/bin/uim-toolbar-gtk-systray ]; then
uim-toolbar-gtk-systray &
fi
if [ -f /usr/bin/setxkbdmap ]; then
setxkbmap -layout jp
fi
xset -dpms
xset s 0
else
export DISPLAY=:0.0
fi
==========================================================
/home/root/.profile は、SATO DESKTOPの起動時にも読み込まれているため、その読み込みのタイミング
で、uimの起動を行っています。
通常のloginと区別するために、DISPLAY環境変数の設定の有無で判別するという、多少泥臭い方法にて
実装しています。
なお、本ファイルは最終的に/home/root/.profileとなりますが、そのままのファイル名で作成すると
見落とす可能性があるため、dot.profileという名称でレシピに含め、do_install時に正規の名称でコピー
を行う処理をbbappendで実行しています。
recipes-core/base-files/base-files_3.0.14.bbappend
==========================================================
FILESEXTRAPATHS_prepend := "${THISDIR}/${BPN}:"
SRC_URI += " \
file://dot.profile \
"
do_install_append() {
install -m 0644 ${WORKDIR}/dot.profile ${D}/home/root/.profile
}
==========================================================