本気でタッチスクリーンを使うための設定()
最近、Raspberry Pi を 2 台使って、イーサネットフレームのキャプチャのプログラムを作って遊んでいますが、ssh でネットワーク越しに動作テストを行うと、わけのわからないことになります。つまり、ネットワークを流れるパケットの表示のためのパケットがネットワークに流れ、その表示のためのパケットがさらに....
1台のRaspberry Pi (B+) は棚の上、もう1台 (2B) もキーボードを接続できるような場所にはありません。そこで公式7インチタッチスクリーンディスプレイを付けた1台に、ちゃんと設定した matchbox-keyboard で仮想キーボードを使えるようにして、twofing を使って二本指タップで右クリックできるように設定しました。これでキーボードなしでどんなコマンドも入力できます。
ビルドと設定に使った環境は、Raspberri Pi3 に対応した Raspbian Jessie の新バージョン、 2016-02-26-raspbian-jessie をRaspberry Pi2 にインストールして行いました。
matchbox-keyboard のビルドとインストール
タッチスクリーン用の仮想キーボードをインストールします。 raspbian で apt-get install できる matchbox-keyboard は古くてキーボードのレイアウトが使いにくくて気に入りません。 またターミナルを開いてコマンドを操作する場合はパイプやリダイレクトのために記号や数字、カーソルキーの入力が必要です。 結局、github から新しい matchbox-keyboard をフォークして、自分で日本語配列キーボード用のレイアウトを追加して github に push しておきました。 Raspberry Pi2 上で実行しています。
ビルドとインストールは次の7行のコマンドを実行するだけです。私自身の記録用にコマンドの実行結果をほとんどすべて記載していて記事としては長いですが、やっていることは7行だけです。
git clone https://github.com/jun-mizutani/matchbox-keyboard.git sudo apt-get install libfakekey-dev libpng-dev libxft-dev autoconf libtool -y cd matchbox-keyboard ./autogen.sh make sudo make install sudo ldconfig
ソースを取得
元のソースは https://github.com/mwilliams03/matchbox-keyboard ですが、フォークして日本語キーボード用のレイアウトを追加したものを、https://github.com/jun-mizutani/matchbox-keyboard に置きました。 適当なディレクトリで git コマンドを使ってダウンロードします。
pi@raspi_jessie:~ $ git clone https://github.com/jun-mizutani/matchbox-keyboard.git
Cloning into 'matchbox-keyboard'...
remote: Counting objects: 958, done.
remote: Total 958 (delta 0), reused 0 (delta 0), pack-reused 958
Receiving objects: 100% (958/958), 255.22 KiB | 342.00 KiB/s, done.
Resolving deltas: 100% (737/737), done.
Checking connectivity... done.
ビルドに必要なパッケージのインストール
$ sudo apt-get install libfakekey-dev libpng-dev libxft-dev autoconf libtool -y
autogen.sh の実行
ディレクトリを matchbox-keyboard に移動して、そこで autogen.sh を実行します。
pi@raspi_jessie:~ $ cd matchbox-keyboard pi@raspi_jessie:~/matchbox-keyboard $ ./autogen.sh autoreconf: Entering directory `.' autoreconf: configure.ac: not using Gettext autoreconf: running: aclocal autoreconf: configure.ac: tracing autoreconf: running: libtoolize --copy libtoolize: putting auxiliary files in `.'. libtoolize: copying file `./ltmain.sh' libtoolize: Consider adding `AC_CONFIG_MACRO_DIR([m4])' to configure.ac and libtoolize: rerunning libtoolize, to keep the correct libtool macros in-tree. libtoolize: Consider adding `-I m4' to ACLOCAL_AMFLAGS in Makefile.am. autoreconf: running: /usr/bin/autoconf autoreconf: running: /usr/bin/autoheader autoreconf: running: automake --add-missing --copy --no-force configure.ac:11: installing './compile' configure.ac:13: installing './config.guess' configure.ac:13: installing './config.sub' configure.ac:5: installing './install-sh' configure.ac:5: installing './missing' applet/Makefile.am:4: warning: source file '$(top_srcdir)/gtk-im/im-protocol.c' is in a subdirectory, applet/Makefile.am:4: but option 'subdir-objects' is disabled automake: warning: possible forward-incompatibility. automake: At least a source file is in a subdirectory, but the 'subdir-objects' automake: automake option hasn't been enabled. For now, the corresponding output automake: object file(s) will be placed in the top-level directory. However, automake: this behaviour will change in future Automake versions: they will automake: unconditionally cause object files to be placed in the same subdirectory automake: of the corresponding sources. automake: You are advised to start using 'subdir-objects' option throughout your automake: project, to avoid future incompatibilities. applet/Makefile.am: installing './depcomp' examples/Makefile.am:3: warning: 'INCLUDES' is the old name for 'AM_CPPFLAGS' (or '*_CPPFLAGS') layouts/Makefile.am:64: warning: '%'-style pattern rules are a GNU make extension layouts/Makefile.am:71: warning: '%'-style pattern rules are a GNU make extension layouts/Makefile.am:78: warning: keyboardsdir multiply defined in condition TRUE ... layouts/Makefile.am:1: ... 'keyboardsdir' previously defined here src/Makefile.am:24: warning: 'INCLUDES' is the old name for 'AM_CPPFLAGS' (or '*_CPPFLAGS') autoreconf: Leaving directory `.' configure: WARNING: unrecognized options: --enable-maintainer-mode checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for a thread-safe mkdir -p... /bin/mkdir -p checking for gawk... no checking for mawk... mawk checking whether make sets $(MAKE)... yes checking whether make supports nested variables... yes checking whether make supports nested variables... (cached) yes checking for style of include used by make... GNU checking for gcc... gcc checking whether the C compiler works... yes checking for C compiler default output file name... a.out checking for suffix of executables... checking whether we are cross compiling... no checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether gcc accepts -g... yes checking for gcc option to accept ISO C89... none needed checking whether gcc understands -c and -o together... yes checking dependency style of gcc... gcc3 checking how to run the C preprocessor... gcc -E checking for grep that handles long lines and -e... /bin/grep checking for egrep... /bin/grep -E checking for ANSI C header files... yes checking for sys/types.h... yes checking for sys/stat.h... yes checking for stdlib.h... yes checking for string.h... yes checking for memory.h... yes checking for strings.h... yes checking for inttypes.h... yes checking for stdint.h... yes checking for unistd.h... yes checking minix/config.h usability... no checking minix/config.h presence... no checking for minix/config.h... no checking whether it is safe to define __EXTENSIONS__... yes checking build system type... armv7l-unknown-linux-gnueabihf checking host system type... armv7l-unknown-linux-gnueabihf checking how to print strings... printf checking for a sed that does not truncate output... /bin/sed checking for fgrep... /bin/grep -F checking for ld used by gcc... /usr/bin/ld checking if the linker (/usr/bin/ld) is GNU ld... yes checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B checking the name lister (/usr/bin/nm -B) interface... BSD nm checking whether ln -s works... yes checking the maximum length of command line arguments... 1572864 checking whether the shell understands some XSI constructs... yes checking whether the shell understands "+="... yes checking how to convert armv7l-unknown-linux-gnueabihf file names to armv7l-unknown-linux-gnueabihf format... func_convert_file_noop checking how to convert armv7l-unknown-linux-gnueabihf file names to toolchain format... func_convert_file_noop checking for /usr/bin/ld option to reload object files... -r checking for objdump... objdump checking how to recognize dependent libraries... pass_all checking for dlltool... no checking how to associate runtime and link libraries... printf %s\n checking for ar... ar checking for archiver @FILE support... @ checking for strip... strip checking for ranlib... ranlib checking command to parse /usr/bin/nm -B output from gcc object... ok checking for sysroot... no checking for mt... mt checking if mt is a manifest tool... no checking for dlfcn.h... yes checking for objdir... .libs checking if gcc supports -fno-rtti -fno-exceptions... no checking for gcc option to produce PIC... -fPIC -DPIC checking if gcc PIC flag -fPIC -DPIC works... yes checking if gcc static flag -static works... yes checking if gcc supports -c -o file.o... yes checking if gcc supports -c -o file.o... (cached) yes checking whether the gcc linker (/usr/bin/ld) supports shared libraries... yes checking whether -lc should be explicitly linked in... no checking dynamic linker characteristics... GNU/Linux ld.so checking how to hardcode library paths into programs... immediate checking whether stripping libraries is possible... yes checking if libtool supports shared libraries... yes checking whether to build shared libraries... yes checking whether to build static libraries... no checking for gcc... (cached) gcc checking whether we are using the GNU C compiler... (cached) yes checking whether gcc accepts -g... (cached) yes checking for gcc option to accept ISO C89... (cached) none needed checking whether gcc understands -c and -o together... (cached) yes checking dependency style of gcc... (cached) gcc3 checking for dirent.h that defines DIR... yes checking for library containing opendir... none required checking for ANSI C header files... (cached) yes checking for an ANSI C-conforming const... yes checking for pid_t... yes checking whether time.h and sys/time.h may both be included... yes checking for size_t... yes checking for working alloca.h... yes checking for alloca... yes checking whether closedir returns void... no checking vfork.h usability... no checking vfork.h presence... no checking for vfork.h... no checking for fork... yes checking for vfork... yes checking for working fork... yes checking for working vfork... (cached) yes checking sys/select.h usability... yes checking sys/select.h presence... yes checking for sys/select.h... yes checking sys/socket.h usability... yes checking sys/socket.h presence... yes checking for sys/socket.h... yes checking types of arguments for select... int,fd_set *,struct timeval * checking return type of signal handlers... void checking whether lstat correctly handles trailing slash... yes checking whether stat accepts an empty string... no checking for pkg-config... /usr/bin/pkg-config checking pkg-config is at least version 0.9.0... yes checking for FAKEKEY... yes checking for XFT... yes checking expat.h usability... yes checking expat.h presence... yes checking for expat.h... yes checking for XML_ParserCreate... yes checking for PNG... yes checking that generated files are newer than configure... done configure: creating ./config.status config.status: creating Makefile config.status: creating src/Makefile config.status: creating src/libmatchbox-keyboard.pc config.status: creating layouts/Makefile config.status: creating examples/Makefile config.status: creating gtk-im/Makefile config.status: creating applet/Makefile config.status: creating config.h config.status: executing depfiles commands config.status: executing libtool commands configure: WARNING: unrecognized options: --enable-maintainer-mode Matchbox-keyboard 0.2 ========================= prefix: /usr/local source code location: . compiler: gcc Building with Debug: no Building with Cairo: no Building Gtk widget: no Building Examples: no Building GTK+ Input Method: no Building panel applet: no
ビルド
make コマンドを実行すると、コンパイルが始まります。 コンパイル時間を計測するため time コマンドを使っていますが、「make」だけでも大丈夫です。 色々と警告が表示されますが、致命的なものはないので無視します。
pi@raspi_jessie:~/matchbox-keyboard $ time make
make all-recursive
make[1]: Entering directory '/home/pi/matchbox-keyboard'
Making all in src
make[2]: Entering directory '/home/pi/matchbox-keyboard/src'
make all-am
make[3]: Entering directory '/home/pi/matchbox-keyboard/src'
CC libmatchbox_keyboard_la-libmatchbox-keyboard.lo
libmatchbox-keyboard.c: In function 'mb_keyboard_destroy':
libmatchbox-keyboard.c:64:3: warning: implicit declaration of function 'mb_kbd_destroy' [-Wimplicit-function-declaration]
mb_kbd_destroy (kb);
^
CC libmatchbox_keyboard_la-matchbox-keyboard.lo
CC libmatchbox_keyboard_la-matchbox-keyboard-layout.lo
CC libmatchbox_keyboard_la-matchbox-keyboard-row.lo
CC libmatchbox_keyboard_la-matchbox-keyboard-key.lo
CC libmatchbox_keyboard_la-matchbox-keyboard-ui.lo
matchbox-keyboard-ui.c: In function 'mb_kbd_ui_resources_create':
matchbox-keyboard-ui.c:661:9: warning: variable 'atom_NET_WM_WINDOW_TYPE_DOCK' set but not used [-Wunused-but-set-variable]
atom_NET_WM_WINDOW_TYPE_DOCK,
^
matchbox-keyboard-ui.c: In function 'mb_kbd_ui_resize':
matchbox-keyboard-ui.c:932:21: warning: variable 'width_diff' set but not used [-Wunused-but-set-variable]
int width_diff, height_diff;
^
matchbox-keyboard-ui.c: In function 'mb_kbd_ui_handle_widget_xevent':
matchbox-keyboard-ui.c:1255:21: warning: implicit declaration of function 'mb_kbd_key_get_action_type' [-Wimplicit-function-declaration]
mb_kbd_key_get_action_type (key, MBKeyboardKeyStateNormal)
^
matchbox-keyboard-ui.c: In function 'mb_kbd_ui_unrealize':
matchbox-keyboard-ui.c:1455:3: warning: implicit declaration of function 'mb_kbd_ui_xft_destroy' [-Wimplicit-function-declaration]
MB_KBD_UI_BACKEND_DESTROY_FUNC (ui);
^
CC libmatchbox_keyboard_la-config-parser.lo
config-parser.c: In function 'mb_kbd_config_load':
config-parser.c:701:17: warning: 'state' may be used uninitialized in this function [-Wmaybe-uninitialized]
if (!state->keyboard->is_widget)
^
CC libmatchbox_keyboard_la-util-list.lo
CC libmatchbox_keyboard_la-util.lo
util.c: In function 'util_utf8_char_cnt':
util.c:105:15: warning: variable 'mask' set but not used [-Wunused-but-set-variable]
int mask, len, result = 0;
^
CC libmatchbox_keyboard_la-matchbox-keyboard-ui-xft-backend.lo
CC libmatchbox_keyboard_la-matchbox-keyboard-image.lo
CCLD libmatchbox-keyboard.la
CC main.o
main.c: In function ‘mb_kbd_event_loop’:
main.c:168:19: warning: implicit declaration of function ‘mb_kbd_ui_handle_configure’ [-Wimplicit-function-declaration]
mb_kbd_ui_handle_configure(ui,
^
main.c:173:17: warning: implicit declaration of function ‘mb_kbd_ui_update_display_size’ [-Wimplicit-function-declaration]
mb_kbd_ui_update_display_size(ui);
^
main.c:86:20: warning: variable ‘press_y’ set but not used [-Wunused-but-set-variable]
int press_x = 0, press_y = 0;
^
main.c:86:7: warning: variable ‘press_x’ set but not used [-Wunused-but-set-variable]
int press_x = 0, press_y = 0;
^
main.c: In function ‘main’:
main.c:281:3: warning: implicit declaration of function ‘mb_kbd_destroy’ [-Wimplicit-function-declaration]
mb_kbd_destroy (kb);
^
CC matchbox-keyboard-layout.o
CC matchbox-keyboard-xembed.o
CC matchbox-keyboard-remote.o
CCLD matchbox-keyboard
make[3]: Leaving directory '/home/pi/matchbox-keyboard/src'
make[2]: Leaving directory '/home/pi/matchbox-keyboard/src'
Making all in layouts
make[2]: Entering directory '/home/pi/matchbox-keyboard/layouts'
sed \
-e 's,@datadir\@,/usr/local/share/matchbox-keyboard,g' \
-e 's,@prefix\@,/usr/local,g' \
-e 's,@version\@,0.2,g' \
base-fragment-fi_FI.xml.in > base-fragment-fi_FI.xml.tmp
cp base-fragment-fi_FI.xml.tmp base-fragment-fi_FI.xml
sed \
-e 's,@datadir\@,/usr/local/share/matchbox-keyboard,g' \
-e 's,@prefix\@,/usr/local,g' \
-e 's,@version\@,0.2,g' \
base-fragment-tr_TR.xml.in > base-fragment-tr_TR.xml.tmp
cp base-fragment-tr_TR.xml.tmp base-fragment-tr_TR.xml
rm base-fragment-fi_FI.xml.tmp base-fragment-tr_TR.xml.tmp
make[2]: Leaving directory '/home/pi/matchbox-keyboard/layouts'
make[2]: Entering directory '/home/pi/matchbox-keyboard'
make[2]: Leaving directory '/home/pi/matchbox-keyboard'
make[1]: Leaving directory '/home/pi/matchbox-keyboard'
real 0m46.552s
user 0m33.820s
sys 0m2.960s
インストール
次のように実行すると /usr/local 以下にインストールされます。Debian のパッケージ管理外にインストールされるため、パッケージ管理のジャマにはなりません。
pi@raspi_jessie:~/matchbox-keyboard $ sudo make install
sudo: unable to resolve host raspi_jessie
Making install in src
make[1]: Entering directory '/home/pi/matchbox-keyboard/src'
make install-am
make[2]: Entering directory '/home/pi/matchbox-keyboard/src'
make[3]: Entering directory '/home/pi/matchbox-keyboard/src'
/bin/mkdir -p '/usr/local/lib'
/bin/bash ../libtool --mode=install /usr/bin/install -c libmatchbox-keyboard.la '/usr/local/lib'
libtool: install: /usr/bin/install -c .libs/libmatchbox-keyboard.so.0.0.0 /usr/local/lib/libmatchbox-keyboard.so.0.0.0
libtool: install: (cd /usr/local/lib && { ln -s -f libmatchbox-keyboard.so.0.0.0 libmatchbox-keyboard.so.0 || { rm -f libmatchbox-keyboard.so.0 && ln -s libmatchbox-keyboard.so.0.0.0 libmatchbox-keyboard.so.0; }; })
libtool: install: (cd /usr/local/lib && { ln -s -f libmatchbox-keyboard.so.0.0.0 libmatchbox-keyboard.so || { rm -f libmatchbox-keyboard.so && ln -s libmatchbox-keyboard.so.0.0.0 libmatchbox-keyboard.so; }; })
libtool: install: /usr/bin/install -c .libs/libmatchbox-keyboard.lai /usr/local/lib/libmatchbox-keyboard.la
libtool: finish: PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/sbin" ldconfig -n /usr/local/lib
----------------------------------------------------------------------
Libraries have been installed in:
/usr/local/lib
If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
- add LIBDIR to the `LD_LIBRARY_PATH' environment variable
during execution
- add LIBDIR to the `LD_RUN_PATH' environment variable
during linking
- use the `-Wl,-rpath -Wl,LIBDIR' linker flag
- have your system administrator add LIBDIR to `/etc/ld.so.conf'
See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
/bin/mkdir -p '/usr/local/bin'
/bin/bash ../libtool --mode=install /usr/bin/install -c matchbox-keyboard '/usr/local/bin'
libtool: install: /usr/bin/install -c .libs/matchbox-keyboard /usr/local/bin/matchbox-keyboard
/bin/mkdir -p '/usr/local/include/libmatchbox-keyboard'
/usr/bin/install -c -m 644 libmatchbox-keyboard.h mb-gtk-keyboard.h '/usr/local/include/libmatchbox-keyboard'
/bin/mkdir -p '/usr/local/lib/pkgconfig'
/usr/bin/install -c -m 644 libmatchbox-keyboard.pc '/usr/local/lib/pkgconfig'
make[3]: Leaving directory '/home/pi/matchbox-keyboard/src'
make[2]: Leaving directory '/home/pi/matchbox-keyboard/src'
make[1]: Leaving directory '/home/pi/matchbox-keyboard/src'
Making install in layouts
make[1]: Entering directory '/home/pi/matchbox-keyboard/layouts'
make[2]: Entering directory '/home/pi/matchbox-keyboard/layouts'
make[2]: Nothing to be done for 'install-exec-am'.
/bin/mkdir -p '/usr/local/share/matchbox-keyboard'
/usr/bin/install -c -m 644 base-fragment.xml base-fragment-ja_JP.xml base-fragment-en_US.xml base-fragment-ar_EG.xml base-fragment-ca_ES.xml base-fragment-es_ES.xml base-fragment-ru_RU.xml base-fragment-cs_CZ.xml base-fragment-da_DK.xml base-fragment-de_DE.xml base-fragment-el_GR.xml base-fragment-et_EE.xml base-fragment-fi_FI.xml base-fragment-fr_FR.xml base-fragment-it_IT.xml base-fragment-lv_LV.xml base-fragment-nb_NO.xml base-fragment-nl_NL.xml base-fragment-pl_PL.xml base-fragment-pt_PT.xml base-fragment-sk_SK.xml base-fragment-sl_SI.xml base-fragment-sv_SE.xml base-fragment-tr_TR.xml internet-fragment.xml keyboard.xml keyboard-jp.xml keyboard-lq1.xml keyboard-symbol.xml keyboard-numpad-extended.xml keyboard-numpad-small.xml keyboard-internet.xml keyboard-extended.xml arrow.png arrows.png alt.png esc.png ctrl.png return.png shift.png '/usr/local/share/matchbox-keyboard'
/usr/bin/install -c -m 644 shift_2.png shift_3.png shift_caps.png super_0.png sub_0.png super_1.png sub_1.png super_2.png sub_2.png super_3.png sub_3.png super_4.png sub_4.png super_5.png sub_5.png super_6.png sub_6.png super_7.png sub_7.png super_8.png sub_8.png super_9.png sub_9.png super_plus.png sub_plus.png super_minus.png sub_minus.png delta_cap.png degree.png key-backspace.png key-down.png key-up.png key-left.png key-right.png key-tab.png '/usr/local/share/matchbox-keyboard'
/bin/mkdir -p '/usr/local/share/matchbox-keyboard'
/usr/bin/install -c -m 644 base-fragment.xml base-fragment-ja_JP.xml base-fragment-en_US.xml base-fragment-ar_EG.xml base-fragment-ca_ES.xml base-fragment-es_ES.xml base-fragment-ru_RU.xml base-fragment-cs_CZ.xml base-fragment-da_DK.xml base-fragment-de_DE.xml base-fragment-el_GR.xml base-fragment-et_EE.xml base-fragment-fi_FI.xml base-fragment-fr_FR.xml base-fragment-it_IT.xml base-fragment-lv_LV.xml base-fragment-nb_NO.xml base-fragment-nl_NL.xml base-fragment-pl_PL.xml base-fragment-pt_PT.xml base-fragment-sk_SK.xml base-fragment-sl_SI.xml base-fragment-sv_SE.xml base-fragment-tr_TR.xml internet-fragment.xml keyboard.xml keyboard-jp.xml keyboard-lq1.xml keyboard-symbol.xml keyboard-numpad-extended.xml keyboard-numpad-small.xml keyboard-internet.xml keyboard-extended.xml '/usr/local/share/matchbox-keyboard'
make[2]: Leaving directory '/home/pi/matchbox-keyboard/layouts'
make[1]: Leaving directory '/home/pi/matchbox-keyboard/layouts'
make[1]: Entering directory '/home/pi/matchbox-keyboard'
make[2]: Entering directory '/home/pi/matchbox-keyboard'
make[2]: Nothing to be done for 'install-exec-am'.
/bin/mkdir -p '/usr/local/share/applications/inputmethods'
/usr/bin/install -c -m 644 matchbox-keyboard.desktop '/usr/local/share/applications/inputmethods'
/bin/mkdir -p '/usr/local/share/pixmaps/'
/usr/bin/install -c -m 644 matchbox-keyboard.png '/usr/local/share/pixmaps/'
make[2]: Leaving directory '/home/pi/matchbox-keyboard'
make[1]: Leaving directory '/home/pi/matchbox-keyboard'
ライブラリ (libmatchbox-keyboard.so.0.0.0) もインストールされるので ldcofig を実行しておきます。
sudo ldconfig
インストールされたファイル
上記のように /usr/local にインストールした場合、「/usr/local/share/matchbox-keyboard/」にはキーボードのいくつかのレイアウトはインストールされます。 「keyboard-ZZZ.xml」の 「ZZZ」にあたる部分を「matchbox-keyboard ZZZ」のように指定することで仮想キーボードのレイアウトを指定できます。赤字になっているファイルが日本語配列のキーボード用に追加したファイルです。 キーの配置は base-fragment-ja_JP.xml で設定しています。気に入らないところがあれば修正してください。
pi@raspi_jessie:/usr/local/bin/ $ ls -l matchbox-keyboard -rwxr-xr-x 1 root staff 100344 Mar 13 23:37 matchbox-keyboard pi@raspi_jessie:/usr/local/lib $ ls -l -rwxr-xr-x 1 root staff 1092 Mar 13 23:37 libmatchbox-keyboard.la lrwxrwxrwx 1 root staff 29 Mar 13 23:37 libmatchbox-keyboard.so -> libmatchbox-keyboard.so.0.0.0 lrwxrwxrwx 1 root staff 29 Mar 13 23:37 libmatchbox-keyboard.so.0 -> libmatchbox-keyboard.so.0.0.0 -rwxr-xr-x 1 root staff 315528 Mar 13 23:37 libmatchbox-keyboard.so.0.0.0 pi@raspi_jessie:~ $ ls -l /usr/local/share/matchbox-keyboard/ total 400 -rw-r--r-- 1 root staff 203 Mar 13 23:37 alt.png -rw-r--r-- 1 root staff 155 Mar 13 23:37 arrow.png -rw-r--r-- 1 root staff 211 Mar 13 23:37 arrows.png -rw-r--r-- 1 root staff 4070 Mar 13 23:37 base-fragment-ar_EG.xml -rw-r--r-- 1 root staff 4782 Mar 13 23:37 base-fragment-ca_ES.xml -rw-r--r-- 1 root staff 4785 Mar 13 23:37 base-fragment-cs_CZ.xml -rw-r--r-- 1 root staff 4581 Mar 13 23:37 base-fragment-da_DK.xml -rw-r--r-- 1 root staff 4413 Mar 13 23:37 base-fragment-de_DE.xml -rw-r--r-- 1 root staff 3997 Mar 13 23:37 base-fragment-el_GR.xml -rw-r--r-- 1 root staff 3724 Mar 13 23:37 base-fragment-en_US.xml -rw-r--r-- 1 root staff 4782 Mar 13 23:37 base-fragment-es_ES.xml -rw-r--r-- 1 root staff 4626 Mar 13 23:37 base-fragment-et_EE.xml -rw-r--r-- 1 root staff 4509 Mar 13 23:37 base-fragment-fi_FI.xml -rw-r--r-- 1 root staff 4334 Mar 13 23:37 base-fragment-fr_FR.xml -rw-r--r-- 1 root staff 4480 Mar 13 23:37 base-fragment-it_IT.xml -rw-r--r-- 1 root staff 7426 Mar 13 23:37 base-fragment-ja_JP.xml -rw-r--r-- 1 root staff 4896 Mar 13 23:37 base-fragment-lv_LV.xml -rw-r--r-- 1 root staff 4386 Mar 13 23:37 base-fragment-nb_NO.xml -rw-r--r-- 1 root staff 4186 Mar 13 23:37 base-fragment-nl_NL.xml -rw-r--r-- 1 root staff 4485 Mar 13 23:37 base-fragment-pl_PL.xml -rw-r--r-- 1 root staff 4276 Mar 13 23:37 base-fragment-pt_PT.xml -rw-r--r-- 1 root staff 4381 Mar 13 23:37 base-fragment-ru_RU.xml -rw-r--r-- 1 root staff 5515 Mar 13 23:37 base-fragment-sk_SK.xml -rw-r--r-- 1 root staff 5189 Mar 13 23:37 base-fragment-sl_SI.xml -rw-r--r-- 1 root staff 4381 Mar 13 23:37 base-fragment-sv_SE.xml -rw-r--r-- 1 root staff 4906 Mar 13 23:37 base-fragment-tr_TR.xml -rw-r--r-- 1 root staff 3641 Mar 13 23:37 base-fragment.xml -rw-r--r-- 1 root staff 201 Mar 13 23:37 ctrl.png -rw-r--r-- 1 root staff 149 Mar 13 23:37 degree.png -rw-r--r-- 1 root staff 234 Mar 13 23:37 delta_cap.png -rw-r--r-- 1 root staff 206 Mar 13 23:37 esc.png -rw-r--r-- 1 root staff 1246 Mar 13 23:37 internet-fragment.xml -rw-r--r-- 1 root staff 464 Mar 13 23:37 key-backspace.png -rw-r--r-- 1 root staff 6507 Mar 13 23:37 keyboard-extended.xml -rw-r--r-- 1 root staff 319 Mar 13 23:37 keyboard-internet.xml -rw-r--r-- 1 root staff 235 Mar 13 23:37 keyboard-jp.xml -rw-r--r-- 1 root staff 13873 Mar 13 23:37 keyboard-lq1.xml -rw-r--r-- 1 root staff 4815 Mar 13 23:37 keyboard-numpad-extended.xml -rw-r--r-- 1 root staff 1095 Mar 13 23:37 keyboard-numpad-small.xml -rw-r--r-- 1 root staff 2222 Mar 13 23:37 keyboard-symbol.xml -rw-r--r-- 1 root staff 229 Mar 13 23:37 keyboard.xml -rw-r--r-- 1 root staff 194 Mar 13 23:37 key-down.png -rw-r--r-- 1 root staff 206 Mar 13 23:37 key-left.png -rw-r--r-- 1 root staff 205 Mar 13 23:37 key-right.png -rw-r--r-- 1 root staff 247 Mar 13 23:37 key-tab.png -rw-r--r-- 1 root staff 202 Mar 13 23:37 key-up.png -rw-r--r-- 1 root staff 160 Mar 13 23:37 return.png -rw-r--r-- 1 root staff 177 Mar 13 23:37 shift_2.png -rw-r--r-- 1 root staff 176 Mar 13 23:37 shift_3.png -rw-r--r-- 1 root staff 180 Mar 13 23:37 shift_caps.png -rw-r--r-- 1 root staff 158 Mar 13 23:37 shift.png -rw-r--r-- 1 root staff 148 Mar 13 23:37 sub_0.png -rw-r--r-- 1 root staff 140 Mar 13 23:37 sub_1.png -rw-r--r-- 1 root staff 147 Mar 13 23:37 sub_2.png -rw-r--r-- 1 root staff 148 Mar 13 23:37 sub_3.png -rw-r--r-- 1 root staff 143 Mar 13 23:37 sub_4.png -rw-r--r-- 1 root staff 145 Mar 13 23:37 sub_5.png -rw-r--r-- 1 root staff 147 Mar 13 23:37 sub_6.png -rw-r--r-- 1 root staff 145 Mar 13 23:37 sub_7.png -rw-r--r-- 1 root staff 147 Mar 13 23:37 sub_8.png -rw-r--r-- 1 root staff 150 Mar 13 23:37 sub_9.png -rw-r--r-- 1 root staff 137 Mar 13 23:37 sub_minus.png -rw-r--r-- 1 root staff 138 Mar 13 23:37 sub_plus.png -rw-r--r-- 1 root staff 146 Mar 13 23:37 super_0.png -rw-r--r-- 1 root staff 140 Mar 13 23:37 super_1.png -rw-r--r-- 1 root staff 143 Mar 13 23:37 super_2.png -rw-r--r-- 1 root staff 142 Mar 13 23:37 super_3.png -rw-r--r-- 1 root staff 143 Mar 13 23:37 super_4.png -rw-r--r-- 1 root staff 143 Mar 13 23:37 super_5.png -rw-r--r-- 1 root staff 145 Mar 13 23:37 super_6.png -rw-r--r-- 1 root staff 142 Mar 13 23:37 super_7.png -rw-r--r-- 1 root staff 141 Mar 13 23:37 super_8.png -rw-r--r-- 1 root staff 145 Mar 13 23:37 super_9.png -rw-r--r-- 1 root staff 135 Mar 13 23:37 super_minus.png -rw-r--r-- 1 root staff 141 Mar 13 23:37 super_plus.png
スクリーンショット
日本語キーボード配列は「matchbox-keyboard jp」のように、レイアウトとして「jp」をコマンドに引数として追加します。 そのままでは画面の横いっぱいに表示されて大きすぎるので、サイズを指定するほうが良いでしょう。ウィンドウのリサイズをすると自動的にキーのサイズも拡大縮小しますが、次のように60%か70%のサイズが使いやすいと思います。 ssh でネットワーク越しに X のアプリケーションを実行する場合には、表示するディスプレイを指定する必要があるので、「DISPLAY=:0.0」を前につけて実行します。 Raspberry Piに付けたキーボードから実行する場合には必要ありません。上の行では 70%のサイズで表示し、下の行では60%のサイズを指定しています。
DISPLAY=:0.0 matchbox-keyboard -s 70 jp DISPLAY=:0.0 matchbox-keyboard -s 60 jp
キーボードのスクリーンショットを実寸で示します。スペースは右下の赤い矢印キーの左のキーです。
シフトキーを押した状態です。記号の位置は日本語キーボードに合わせています。
ウィンドウのアイコンをクリックするか、タイトルバーを右クリックするとウィンドウマネージャの機能として、ウィンドウサイズの変更やタイトルバーを隠すことができます。 ウィンドウサイズを変更するとキーボードも自動的に拡大/縮小できます。邪魔になる場合は小さくすることもできます。 iPhone や iPad 用のタッチペンも使えます。
設定
仮想キーボードを実行するコマンドを打つためにキーボードを接続するわけにはいきません。メニューから実行/終了できるようにします。
実行用のスクリプト
「matchbox-keyboard」という名前のプロセスが起動していなければ、 日本語配列でmatchbox-keyboard を 60% のサイズで起動します。起動済みの場合は matchbox-keyboard という名前のプロセスを終了させるシェルスクリプトです。
#!/bin/sh PID=`pidof matchbox-keyboard` if [ ! -e $PID ]; then killall matchbox-keyboard else matchbox-keyboard -s 60 jp & fi
ここでは nano を使って、/usr/local/bin に toggle_mkb.sh というファイル名で登録することにします。 上の内容を入力したら、コントロールキーを押しながら O (オー) を押して、「return」キーを押すと保存されます。 コントロールキーを押しながら X を押して nano を終了します。
sudo nano /usr/local/bin/toggle_mkb.sh
メニューに設定
すでに make install でメニューに登録されていますが、内容を修正します。
次のファイルを修正します。
sudo nano /usr/local/share/applications/inputmethods/matchbox-keyboard.desktop
赤字が修正する部分です。メニューで実行するファイルを作成したシェルスクリプトに変更します。
[Desktop Entry]
Name=Keyboard
Comment=Virtual Keyboard
Exec=toggle_mkb.sh
Type=Application
Icon=matchbox-keyboard.png
Categories=Panel;Utility;MB
X-MB-INPUT-MECHANSIM=True
上記のように「nano」で編集する場合は入力後に、コントロールキーを押しながら O (オー) を押して、保存を選択して「return」キーを押します。 コントロールキーを押しながら X を押して終了します。
メニューの「Keyboard」を選ぶと 仮想キーボードが表示され、再度選ぶと終了します。
問題点
matchbox-keyboard を Raspberry Pi2 で使うと CPU の使用率が25%から下がらなくなる場合があります。これは Raspberry Pi2の4コアのCPUの内の1つが100%になるためです。原因は デスクトップモードで動作するファイルマネージャの pcmanfm がCPUを100%使ってしまうためです。pcmanfm の古いバージョン(0.9.10-3)では起こらないようです。
「matchbox-keyboard jp」のように日本語配列を指定するとCPU の使用率の問題は起きていません。 matchbox-keyboard のデフォルト配列のデータで起こる問題のようです。(2016/03/18 更新)
twofing のビルドとインストール
Raspberry Pi の公式7インチタッチスクリーンディスプレイで OSのバージョンを Jessie にアップデートすると、スクリーンの長押しでマウスの右クリックとすることが出来なくなっています。 Raspberry Pi 公式フォーラムでの議論 で Raspberry Pi のタッチスクリーンの右クリックは twofing で実現できることが見つかりました。
ソースの取得
twofing-0.1.2.tar.gz を 作者のサイト からダウンロードします。
pi@raspi_jessie:~ $ curl -O https://plippo.de/dwl/twofing/twofing-0.1.2.tar.gz
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 17727 100 17727 0 0 12878 0 0:00:01 0:00:01 --:--:-- 12892
ダウンロードしたファイルを確認します。
pi@raspi_jessie:~ $ ls -lt twofing-0.1.2.tar.gz
-rw-r--r-- 1 pi pi 17727 Mar 14 01:22 twofing-0.1.2.tar.gz
ビルドに必要なパッケージのインストール
pi@raspi_jessie:~ $ sudo apt-get install libxtst-dev libxrandr-dev
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
libpthread-stubs0-dev libx11-dev libx11-doc libxau-dev libxcb1-dev
libxdmcp-dev libxext-dev libxfixes-dev libxi-dev libxrender-dev
x11proto-core-dev x11proto-fixes-dev x11proto-input-dev x11proto-kb-dev
x11proto-randr-dev x11proto-record-dev x11proto-render-dev x11proto-xext-dev
xorg-sgml-doctools xtrans-dev
Suggested packages:
libxcb-doc libxext-doc
The following NEW packages will be installed:
libpthread-stubs0-dev libx11-dev libx11-doc libxau-dev libxcb1-dev
libxdmcp-dev libxext-dev libxfixes-dev libxi-dev libxrandr-dev
libxrender-dev libxtst-dev x11proto-core-dev x11proto-fixes-dev
x11proto-input-dev x11proto-kb-dev x11proto-randr-dev x11proto-record-dev
x11proto-render-dev x11proto-xext-dev xorg-sgml-doctools xtrans-dev
0 upgraded, 22 newly installed, 0 to remove and 0 not upgraded.
Need to get 4974 kB of archives.
After this operation, 19.2 MB of additional disk space will be used.
Do you want to continue? [Y/n]
略
ソースの展開
ファイルを展開して、twofing-0.1.2 ディレクトリに移動します。
pi@raspi_jessie:~ $ tar zxf twofing-0.1.2.tar.gz pi@raspi_jessie:~ $ cd twofing-0.1.2/
ビルド
ビルドは make を実行するだけです。 Raspberry Pi2 ならば 10 秒弱で終了します。
pi@raspi_jessie:~/twofing-0.1.2 $ make
gcc -c -Wall -O2 twofingemu.c
gcc -c -Wall -O2 gestures.c
gcc -c -Wall -O2 easing.c
gcc -o twofing twofingemu.o gestures.o easing.o -lm -lpthread -lXtst -lXrandr -lX11 -lXi
できた twofing を確認します。
pi@raspi_jessie:~/twofing-0.1.2 $ ls -l twofing
-rwxr-xr-x 1 pi pi 34340 Mar 14 01:25 twofing
デバイスの修正
twofing-0.1.2に入っている「70-touchscreen-egalax.rules」は Raspberry Pi の公式7インチタッチスクリーンディスプレイとは違うデバイスなので、公式7インチタッチスクリーンディスプレイ用に「70-touchscreen-raspi.rules」を作ります。公式7インチタッチスクリーンの入力は「/dev/twofingtouch」から取得できるようになります。
sudo nano /etc/udev/rules.d/70-touchscreen-raspi.rules
ファイルは次の内容にして、保存します。
SUBSYSTEM=="input", ATTRS{name}=="FT5406 memory based driver", ENV{DEVNAME}=="*event*", SYMLINK+="twofingtouch" ,RUN+="/bin/chmod a+r /dev/twofingtouch"
インストール
ビルドしてできた twofing を /usr/local/bin にコピーします。 /usr/local/bin はDebian のパッケージ管理の範囲外なのでパッケージ管理の障害にはなりません。
pi@raspi_jessie:~/twofing-0.1.2 $ sudo cp twofing /usr/local/bin
実行
pi@raspi_jessie:~/twofing-0.1.2 $ DISPLAY=:0.0 ./twofing
使い方
二本の指でタップすると右クリックとして動作します。カーソル位置は二本の指の中央です。 二本の指をドラッグするとスクロールとなります。ズームや回転もアプリケーションにより動作するようです。
メニューに設定
Main Menu Editorを使って、matchbox-keyboard をメニューに登録します。メニューの「Preferences」または「設定」から「Mein Menu Editor」を選択します。
メニューの「Accessories」に仮想キーボードの項目を追加することにします。左のリストから「Accessories」を選んで「New Item」ボタンを押します。
左の一番下にある「Computer」を選んで、右側のパネルから usr/local/bin と順にダブルクリックして開いて行って、最後に twofing を選んで「OK」を押します。
Command に /usr/local/bin/twofing という文字列が入ります。ここに直接入力してもかまいません。
中央の列に TwoFing という項目が現れます。「OK」ボタンを押してください。
メニューから twofing を選べるようになります。
以上でキーボードもマウスも接続しないで、ラズベリーパイ公式7インチタッチスクリーンディスプレイだけで一通りの操作ができるようになりました。バックライトが消灯すると消費電力も少なくて済むので、ラズベリーパイをサーバとして使う場合でもタッチスクリーンはおススメです。
2016-02-26-raspbian-jessie のインストール
今回も 2016-02-26-raspbian-jessie をディスクイメージからクリーンインストールする手順を紹介します。 インストール作業を行うSD カードはデータがすべて初期化されるので、新しいカードやデータが不要で消去してもいい SD カードを使って下さい。
いつものように MacBook Pro17(MacOSX 10.11.2) でインストール作業した記録です。 MacOS X ではデバイス名の指定方法が異なるだけで、Linuxと同じく dd コマンドを使ってSDカードに ディスクイメージを書き込みます。 以下の例は、私のMacBookでの例です。今回の作業では SDカード が /dev/disk4 で認識されています。適宜読み替えてください。
dd コマンドのデバイスの指定を間違えると最悪ハードディスクがすべて消えるなどの悲惨な結果が待っています。十分に注意して行なってください。
$ uname -rsv
Darwin 15.2.0 Darwin Kernel Version 15.2.0: Fri Nov 13 19:56:56 PST 2015;
root:xnu-3248.20.55~2/RELEASE_X86_64
ダウンロードしたディスクイメージは以下のサイズです。
$ ls -lt
-rw-r--r-- 1 jun staff 1397330339 3 1 01:15 2016-02-26-raspbian-jessie.zip
イメージのハッシュ(SHA-1 Checksum)が公式サイトにある 4a841dffd02197548bf2329b90a0a44eeeebb4ab であることを確認します。
$ shasum 2016-02-26-raspbian-jessie.zip
4a841dffd02197548bf2329b90a0a44eeeebb4ab 2016-02-26-raspbian-jessie.zip
いつものようにMacBook Pro17 にUSB接続のmicroSDカードリーダを接続して、デバイスを確認後、SDカードをアンマウントします。
$ df -k
Filesystem 1024-blocks Used Available Capacity iused ifree %iused Mounted on
略
/dev/disk4s1 61384 20312 41072 34% 512 0 100% /Volumes/boot
SDカードは /dev/disk4s1 と認識されていました。SDカードに見えているパーティションをアンマウントします。
$ diskutil unmount /dev/disk4s1
Volume boot on disk4s1 unmounted
zipファイルを展開します。
$ unzip 2016-02-26-raspbian-jessie.zip
Archive: 2016-02-26-raspbian-jessie.zip
inflating: 2016-02-26-raspbian-jessie.img
展開したファイルを確認します。
$ ls -l 2016-02-26-raspbian-jessie.*
-rw-r--r-- 1 jun staff 4029677568 2 26 11:21 2016-02-26-raspbian-jessie.img
-rw-r--r-- 1 jun staff 1397330339 3 1 01:15 2016-02-26-raspbian-jessie.zip
SDカードに書き込みます。 今回は /dev/rdisk4 に書いています。
$ sudo time dd bs=1m if=2016-02-26-raspbian-jessie.img of=/dev/rdisk4
3843+0 records in
3843+0 records out
4029677568 bytes transferred in 369.484404 secs (10906218 bytes/sec)
373.24 real 0.01 user 2.75 sys
ブート領域のファイルを確認します。
$ cd /Volumes/boot $ ls -l -rwxrwxrwx 1 jun staff 18693 8 21 2015 COPYING.linux -rwxrwxrwx 1 jun staff 1494 11 18 16:01 LICENCE.broadcom -rwxrwxrwx 1 jun staff 18974 2 26 02:20 LICENSE.oracle -rwxrwxrwx 1 jun staff 11120 2 25 23:22 bcm2708-rpi-b-plus.dtb -rwxrwxrwx 1 jun staff 10841 2 25 23:22 bcm2708-rpi-b.dtb -rwxrwxrwx 1 jun staff 10871 2 25 23:22 bcm2708-rpi-cm.dtb -rwxrwxrwx 1 jun staff 12108 2 25 23:22 bcm2709-rpi-2-b.dtb -rwxrwxrwx 1 jun staff 12575 2 25 23:22 bcm2710-rpi-3-b.dtb -rwxrwxrwx 1 jun staff 17920 2 9 13:32 bootcode.bin -rwxrwxrwx 1 jun staff 136 2 26 01:04 cmdline.txt -rwxrwxrwx 1 jun staff 1635 2 26 01:04 config.txt -rwxrwxrwx 1 jun staff 6481 2 25 23:22 fixup.dat -rwxrwxrwx 1 jun staff 2505 2 25 23:22 fixup_cd.dat -rwxrwxrwx 1 jun staff 9722 2 25 23:22 fixup_db.dat -rwxrwxrwx 1 jun staff 9724 2 25 23:22 fixup_x.dat -rwxrwxrwx 1 jun staff 103 2 26 02:20 issue.txt -rwxrwxrwx 1 jun staff 3963140 2 25 23:22 kernel.img -rwxrwxrwx 1 jun staff 4046732 2 25 23:22 kernel7.img drwxrwxrwx 1 jun staff 8192 2 26 02:20 overlays -rwxrwxrwx 1 jun staff 2739672 2 25 23:22 start.elf -rwxrwxrwx 1 jun staff 612472 2 25 23:22 start_cd.elf -rwxrwxrwx 1 jun staff 4888200 2 25 23:22 start_db.elf -rwxrwxrwx 1 jun staff 3840328 2 25 23:22 start_x.elf
overlays というディレクトリも見てみましょう。
$ cd overlays/ $ ls -l README pitft28-capacitive-overlay.dtb ads7846-overlay.dtb pitft28-resistive-overlay.dtb at86rf233-overlay.dtb pps-gpio-overlay.dtb bmp085_i2c-sensor-overlay.dtb pwm-2chan-overlay.dtb dht11-overlay.dtb pwm-overlay.dtb enc28j60-overlay.dtb raspidac3-overlay.dtb gpio-ir-overlay.dtb rpi-backlight-overlay.dtb gpio-poweroff-overlay.dtb rpi-dac-overlay.dtb hifiberry-amp-overlay.dtb rpi-display-overlay.dtb hifiberry-dac-overlay.dtb rpi-ft5406-overlay.dtb hifiberry-dacplus-overlay.dtb rpi-proto-overlay.dtb hifiberry-digi-overlay.dtb rpi-sense-overlay.dtb hy28a-overlay.dtb sdhost-overlay.dtb hy28b-overlay.dtb sdio-overlay.dtb i2c-gpio-overlay.dtb smi-dev-overlay.dtb i2c-rtc-overlay.dtb smi-nand-overlay.dtb i2s-mmap-overlay.dtb smi-overlay.dtb iqaudio-dac-overlay.dtb spi-bcm2708-overlay.dtb iqaudio-dacplus-overlay.dtb spi-bcm2835-overlay.dtb lirc-rpi-overlay.dtb spi-dma-overlay.dtb mcp2515-can0-overlay.dtb tinylcd35-overlay.dtb mcp2515-can1-overlay.dtb uart1-overlay.dtb mmc-overlay.dtb vc4-kms-v3d-overlay.dtb mz61581-overlay.dtb vga666-overlay.dtb piscreen-overlay.dtb w1-gpio-overlay.dtb piscreen2r-overlay.dtb w1-gpio-pullup-overlay.dtb
Raspberry Pi で動かすため、Mac から SDカードをアンマウントして取り出します。
$ df -k Filesystem 1024-blocks Used Available Capacity iused ifree %iused Mounted on 略 /dev/disk4s1 61384 20344 41040 34% 512 0 100% /Volumes/boot $ diskutil unmount /dev/disk4s1 Volume boot on disk4s1 unmounted
Raspbian Jessie で起動
2016-02-26-raspbian-jessie ではイメージを書き込んだ SDカードで起動すると、そのままデスクトップが表示されて、ログインすることもなく、すぐに使用することができます。
ターミナルを開いてカーネルのバージョンを確認してみます。
$ uname -a
Linux raspberrypi 4.1.18-v7+ #846 SMP Thu Feb 25 14:22:53 GMT 2016 armv7l GNU/Linux
raspi-config による初期設定は自動的に実行されません。 SDカードは容量にかかわらず、書き込んだイメージのサイズになっています。
$ df -k
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/root 3743376 3416328 117180 97% /
devtmpfs 469708 0 469708 0% /dev
tmpfs 474028 0 474028 0% /dev/shm
tmpfs 474028 6456 467572 2% /run
tmpfs 5120 4 5116 1% /run/lock
tmpfs 474028 0 474028 0% /sys/fs/cgroup
/dev/mmcblk0p1 61384 20376 41008 34% /boot
tmpfs 94808 0 94808 0% /run/user/1000
上のようにパーティションは4GBとなっていて、あまり空きはありません。Expand Filesystem を実行するとSDカード全体を使うようになります。
raspi-config による初期設定
これまでと同じ raspi-config も使用できますが、 デスクトップのメニューからも GUI で設定できます。「Expand Filesystem」ボタンを押して、 再起動するとSDカード全体を使うようになります。
$ df -k
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/root 14983848 3494804 10825024 25% /
devtmpfs 469708 0 469708 0% /dev
tmpfs 474028 0 474028 0% /dev/shm
tmpfs 474028 6752 467276 2% /run
tmpfs 5120 4 5116 1% /run/lock
tmpfs 474028 0 474028 0% /sys/fs/cgroup
/dev/mmcblk0p1 61384 20376 41008 34% /boot
tmpfs 94808 0 94808 0% /run/user/1000