mieki256's diary



2017/10/26(木) [n年前の日記]

#1 [raspberrypi][golang] Raspberry Pi Zero WにSDL2 + golang + go-sdl2をインストール

以下のページで、golang(Go言語)から SDL2 を扱える、go-sdl2 なるライブラリがあると知ったわけで。

_Golang と SDL2 でゲームを作る - KaoriYa

これを動かしてみて、すんなり動くようであれば、少なくともSDL2はちゃんとビルドされてることが分かるかもしれないなと。

ということで、Raspberry Pi Zero W + raspbian stretch 上でインストールを試みたり。

前提条件。libSDL2*.soの在り処。 :

標準状態というか、公式リポジトリから libsdl2-dev をインストールすると…。
  • /usr/include/SDL2/ 以下に *.h が、
  • /usr/lib/arm-linux-gnueabihf/ 以下に libSDL2*.so が、
それぞれ入ってる状態になる。

_Debian -- stretch の libsdl2-dev パッケージに関する詳細
_Debian -- パッケージのファイル一覧: libsdl2-dev/stretch/armhf
$ cd /usr/lib/arm-linux-gnueabihf/
$ ll *SDL2*
lrwxrwxrwx 1 root root      20 12月 28  2016 libSDL2-2.0.so -> libSDL2-2.0.so.0.4.1
lrwxrwxrwx 1 root root      20 12月 28  2016 libSDL2-2.0.so.0 -> libSDL2-2.0.so.0.4.1
-rw-r--r-- 1 root root 1019424 12月 28  2016 libSDL2-2.0.so.0.4.1
-rw-r--r-- 1 root root 1512430 12月 28  2016 libSDL2.a
lrwxrwxrwx 1 root root      20 12月 28  2016 libSDL2.so -> libSDL2-2.0.so.0.4.1
lrwxrwxrwx 1 root root      26  1月 27  2016 libSDL2_image-2.0.so -> libSDL2_image-2.0.so.0.0.1
lrwxrwxrwx 1 root root      26  1月 27  2016 libSDL2_image-2.0.so.0 -> libSDL2_image-2.0.so.0.0.1
-rw-r--r-- 1 root root   67316  1月 27  2016 libSDL2_image-2.0.so.0.0.1
-rw-r--r-- 1 root root   83874  1月 27  2016 libSDL2_image.a
lrwxrwxrwx 1 root root      26  1月 27  2016 libSDL2_image.so -> libSDL2_image-2.0.so.0.0.1
lrwxrwxrwx 1 root root      26  2月  2  2016 libSDL2_mixer-2.0.so -> libSDL2_mixer-2.0.so.0.0.1
lrwxrwxrwx 1 root root      26  2月  2  2016 libSDL2_mixer-2.0.so.0 -> libSDL2_mixer-2.0.so.0.0.1
-rw-r--r-- 1 root root  168932  2月  2  2016 libSDL2_mixer-2.0.so.0.0.1
-rw-r--r-- 1 root root  221600  2月  2  2016 libSDL2_mixer.a
lrwxrwxrwx 1 root root      26  2月  2  2016 libSDL2_mixer.so -> libSDL2_mixer-2.0.so.0.0.1
lrwxrwxrwx 1 root root      24  2月  2  2016 libSDL2_net-2.0.so -> libSDL2_net-2.0.so.0.0.1
lrwxrwxrwx 1 root root      24  2月  2  2016 libSDL2_net-2.0.so.0 -> libSDL2_net-2.0.so.0.0.1
-rw-r--r-- 1 root root   13828  2月  2  2016 libSDL2_net-2.0.so.0.0.1
-rw-r--r-- 1 root root   14674  2月  2  2016 libSDL2_net.a
lrwxrwxrwx 1 root root      24  2月  2  2016 libSDL2_net.so -> libSDL2_net-2.0.so.0.0.1
-rw-r--r-- 1 root root  220602 12月 28  2016 libSDL2_test.a
lrwxrwxrwx 1 root root      20  2月  8  2016 libSDL2_ttf-2.0.so -> libSDL2_ttf-2.0.so.0
lrwxrwxrwx 1 root root      25  2月  8  2016 libSDL2_ttf-2.0.so.0 -> libSDL2_ttf-2.0.so.0.14.0
-rw-r--r-- 1 root root   26124  2月  8  2016 libSDL2_ttf-2.0.so.0.14.0
-rw-r--r-- 1 root root   23446  2月  8  2016 libSDL2_ttf.a
lrwxrwxrwx 1 root root      25  2月  8  2016 libSDL2_ttf.so -> libSDL2_ttf-2.0.so.0.14.0
-rw-r--r-- 1 root root     936 12月 28  2016 libSDL2main.a

独自にビルドした *.so を使うということは、上記の場所ではなく、別の場所にある *.so を呼び出せるようにする、ということ。

SDL2のビルドに必要なパッケージをインストール。 :

以下を参考にしてSDL2をビルドする。

_Golang と SDL2 でゲームを作る - KaoriYa
_Hardware Accelerated SDL 2 on Raspberry Pi | Life, The Universe and ... Everything!

公式リポジトリ版の libsdl2-dev をアンインストール。
sudo apt-get remove -y --force-yes libsdl2-dev
sudo apt-get autoremove -y

SDL2のビルドに必要になりそうなパッケージをインストール。
sudo apt install build-essential libfreeimage-dev libopenal-dev libpango1.0-dev libsndfile1-dev libudev-dev libasound2-dev libjpeg-dev libtiff5-dev libwebp-dev libaudio-dev libdbus-1-dev automake libfontconfig-dev qt5-default mercurial libtool libxrandr-dev libxcursor-dev libxi-dev libxinerama-dev libxss-dev libesd0-dev freeglut3-dev libmodplug-dev libsmpeg-dev libmpg123-dev

また、以下を眺めて、必要になりそうなパッケージがあったら追加インストールする。

_Debian -- stretch の libsdl2-dev パッケージに関する詳細
_Debian -- stretch の libsdl2-image-2.0-0 パッケージに関する詳細 _Debian -- stretch の libsdl2-ttf-2.0-0 パッケージに関する詳細

SDL2のソースを取得。 :

mkdir ~/sdl2
cd ~/sdl2

wget https://www.libsdl.org/release/SDL2-2.0.7.tar.gz
wget https://www.libsdl.org/projects/SDL_image/release/SDL2_image-2.0.2.tar.gz
wget https://www.libsdl.org/projects/smpeg/release/smpeg2-2.0.0.tar.gz
wget https://www.libsdl.org/projects/SDL_mixer/release/SDL2_mixer-2.0.2.tar.gz
wget https://www.libsdl.org/projects/SDL_net/release/SDL2_net-2.0.1.tar.gz
wget https://www.libsdl.org/projects/SDL_ttf/release/SDL2_ttf-2.0.14.tar.gz

_Simple DirectMedia Layer - SDL version 2.0.7 (stable)
_SDL_image 2.0
_smpeg2
_SDL_mixer 2.0
_SDL_net 2.0
_SDL_ttf 2.0

SDL2をビルド。 :

SDL2のソースを解凍して、configure して、make して、sudo make install する。
tar zxvf SDL2-2.0.7.tar.gz
cd SDL2-2.0.7
mkdir build
cd build

configure は、以下のようなオプションをつけるらしいけど…。
../configure --disable-pulseaudio --disable-esd --disable-video-mir --disable-video-wayland --disable-video-x11 --disable-video-opengl

Pi2 の場合は、configure に「--host=armv7l-raspberry-linux-gnueabihf」を追加するらしい。

Pi1 や Zero は…。巷のページを見ると何もつけなくてもいいのかな。どうなんだろ。「SDL 2.0.4 は --host=arm-raspberry-linux-gnueabihf を指定しろ」と書いてある事例も見かけたけど…。

_PiLove - LOVE on RaspberryPI

とりあえず指定しておくか…。
../configure --host=arm-raspberry-linux-gnueabihf --disable-pulseaudio --disable-esd --disable-video-mir --disable-video-wayland --disable-video-x11 --disable-video-opengl

configure をすると、最後のあたりで以下のような表示になった。
SDL2 Configure Summary:
Building Shared Libraries
Building Static Libraries
Enabled modules : atomic audio video render events joystick haptic power filesystem threads timers file loadso cpuinfo assembly
Assembly Math   :
Audio drivers   : disk dummy oss alsa(dynamic) nas(dynamic)
Video drivers   : dummy rpi opengl_es1 opengl_es2 vulkan
Input drivers   : linuxev linuxkd
Using libsamplerate : NO
Using libudev       : YES
Using dbus          : NO
Using ime           : YES
Using ibus          : NO
Using fcitx         : NO
Video drivers に、rpi とか opengl_es2 があるから…これで合ってるのかな…?

makeしてインストールする。
make
sudo make install
  • /usr/local/include/SDL2/ 以下に *.h が、
  • /usr/local/lib/ 以下に libSDL2*.so が、
それぞれコピーされた。

他のSDL2関係もビルド。 :

SDL2_image, smpeg2. SDL2_mixer, SDL2_ttf もビルドする。
tar zxvf SDL2_image-2.0.2.tar.gz
cd SDL2_image-2.0.2 && mkdir build && cd build
../configure --host=arm-raspberry-linux-gnueabihf
make
sudo make install

インストール時、以下のようなメッセージが表示された。
----------------------------------------------------------------------
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 ibtool,
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.
----------------------------------------------------------------------
「/usr/local/lib にインストールされたよ」と言ってるのだな…。

smpeg2をビルドしてインストール。
tar zxvf smpeg2-2.0.0.tar.gz
cd smpeg2-2.0.0 && mkdir build && cd build
../configure --host=arm-raspberry-linux-gnueabihf
make

エラーが出る。
$ make
/bin/bash ./libtool  --tag=CXX   --mode=compile g++ -DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE_URL=\"\" -DPACKAGE=\"smpeg2\" -DVERSION=\"2.0.0\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DLT_OBJDIR=\".libs/\" -I. -I..     -g -O2 -D_REENTRANT -I/usr/local/include/SDL2 -I/opt/vc/include -I/opt/vc/include/interface/vcos/pthreads -I/opt/vc/include/interface/vmcs_host/linux -DTHREADED_AUDIO -DNDEBUG -Wall -I.. -DNOCONTROLS -I.. -I../audio -I../video -fno-exceptions -fno-rtti -MT hufftable.lo -MD -MP -MF .deps/hufftable.Tpo -c -o hufftable.lo `test -f 'audio/hufftable.cpp' || echo '../'`audio/hufftable.cpp
libtool: compile:  g++ -DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE_URL=\"\" -DPACKAGE=\"smpeg2\" -DVERSION=\"2.0.0\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DLT_OBJDIR=\".libs/\" -I. -I.. -g -O2 -D_REENTRANT -I/usr/local/include/SDL2 -I/opt/vc/include -I/opt/vc/include/interface/vcos/pthreads -I/opt/vc/include/interface/vmcs_host/linux -DTHREADED_AUDIO -DNDEBUG -Wall -I.. -DNOCONTROLS -I.. -I../audio -I../video -fno-exceptions -fno-rtti -MT hufftable.lo -MD -MP -MF .deps/hufftable.Tpo -c ../audio/hufftable.cpp  -fPIC -DPIC -o .libs/hufftable.o
../audio/hufftable.cpp:587:1: error: narrowing conversion of ‘-1’ from ‘int’ to ‘unsigned int’ inside { } [-Wnarrowing]
};
^
../audio/hufftable.cpp:587:1: error: narrowing conversion of ‘-1’ from ‘int’ to ‘unsigned int’ inside { } [-Wnarrowing]
../audio/hufftable.cpp:587:1: error: narrowing conversion of ‘-1’ from ‘int’ to ‘unsigned int’ inside { } [-Wnarrowing]
../audio/hufftable.cpp:587:1: error: narrowing conversion of ‘-1’ from ‘int’ to ‘unsigned int’ inside { } [-Wnarrowing]
../audio/hufftable.cpp:587:1: error: narrowing conversion of ‘-1’ from ‘int’ to ‘unsigned int’ inside { } [-Wnarrowing]
../audio/hufftable.cpp:587:1: error: narrowing conversion of ‘-1’ from ‘int’ to ‘unsigned int’ inside { } [-Wnarrowing]
Makefile:778: ターゲット 'hufftable.lo' のレシピで失敗しました
make: *** [hufftable.lo] エラー 1

解決策を探したら、以下に、参考になりそうな patch があった。

_FS#51926 : [smpeg][smpeg2] Build failed with gcc 6

参考にして以下のように修正。
--- smpeg2-2.0.0/audio/hufftable.cpp.orig	2017-10-26 05:31:28.825871428 +0900
+++ smpeg2-2.0.0/audio/hufftable.cpp	2017-10-26 05:35:28.618167063 +0900
@@ -9,6 +9,7 @@
 #include "config.h"
 #endif
 
+#include <climits>
 #include "MPEGaudio.h"
 
 static const unsigned int
@@ -550,11 +551,11 @@ htd33[ 31][2]={{ 16,  1},{  8,  1},{  4,
 
 const HUFFMANCODETABLE MPEGaudio::ht[HTN]=
 {
-  { 0, 0-1, 0-1, 0,  0, htd33},
+  { 0, UINT_MAX, UINT_MAX, 0,  0, htd33},
   { 1, 2-1, 2-1, 0,  7,htd01},
   { 2, 3-1, 3-1, 0, 17,htd02},
   { 3, 3-1, 3-1, 0, 17,htd03},
-  { 4, 0-1, 0-1, 0,  0, htd33},
+  { 4, UINT_MAX, UINT_MAX, 0,  0, htd33},
   { 5, 4-1, 4-1, 0, 31,htd05},
   { 6, 4-1, 4-1, 0, 31,htd06},
   { 7, 6-1, 6-1, 0, 71,htd07},
@@ -564,7 +565,7 @@ const HUFFMANCODETABLE MPEGaudio::ht[HTN
   {11, 8-1, 8-1, 0,127,htd11},
   {12, 8-1, 8-1, 0,127,htd12},
   {13,16-1,16-1, 0,511,htd13},
-  {14, 0-1, 0-1, 0,  0, htd33},
+  {14, UINT_MAX, UINT_MAX, 0,  0, htd33},
   {15,16-1,16-1, 0,511,htd15},
   {16,16-1,16-1, 1,511,htd16},
   {17,16-1,16-1, 2,511,htd16},
  • #include "MPEGaudio.h" の前に、#include <climits> を追加。
  • 「0-1」と書かれてる部分を、「UINT_MAX」で置き換え。

なんでエラーが出るのかなと思ったら、Debian stretch (raspbian stretch)は gcc6 が標準になったらしい。そのせいでエラーが出るっぽい。

_第5章 stretch で注意すべき点
_2016年6月28日 Debian 9 "Stretch"のコンパイラはGCC 6オンリーで:Linux Daily Topics|gihyo.jp … 技術評論社

引き続き make とインストール。
make
sudo make install
今度は通った。

SDL2_mixer をビルドしてインストール。
cd ~/sdl2
tar zxvf SDL2_mixer-2.0.2.tar.gz
cd SDL2_mixer-2.0.2 && mkdir build && cd build
../configure --host=arm-raspberry-linux-gnueabihf
make
sudo make install

SDL2_net をビルドしてインストール。
cd ~/sdl2
tar zxvf SDL2_net-2.0.1.tar.gz
cd SDL2_net-2.0.1 && mkdir build && cd build
../configure --host=arm-raspberry-linux-gnueabihf
make
sudo make install

SDL2_ttf もビルドしてインストールするのだけど、少し修正。OpenGLを使わないように修正してからビルドするのだとか。
cd ~/sdl2
tar zxvf SDL2_ttf-2.0.14.tar.gz
cd SDL2_ttf-2.0.14 && mkdir build && cd build
sed -i -e 's/have_opengl=yes/have_opengl=no/' ../configure
../configure --host=arm-raspberry-linux-gnueabihf
make
sudo make install

共有ライブラリを探す順番を変更。 :

SDL2をビルドして共有ライブラリファイルを作ったわけだけど、公式リポジトリ版のファイルが使われてしまったら困るわけで。

_Raspberry Piに最新版の各種ツール・言語・ライブラリをインストールする - Qiita

/etc/ld.so.conf を修正して、一番最初の行に /usr/local/lib を追加。これで、「最初に /usr/local/lib 以下から探すように」と設定できるはず。

キャッシュを更新。
sudo ldconfig

順番を確認。
$ ldconfig -p | grep SDL
        libSDL2_ttf-2.0.so.0 (libc6,hard-float) => /usr/local/lib/libSDL2_ttf-2.0.so.0
        libSDL2_ttf-2.0.so.0 (libc6,hard-float) => /usr/lib/arm-linux-gnueabihf/libSDL2_ttf-2.0.so.0
        libSDL2_net-2.0.so.0 (libc6,hard-float) => /usr/lib/arm-linux-gnueabihf/libSDL2_net-2.0.so.0
        libSDL2_mixer-2.0.so.0 (libc6,hard-float) => /usr/local/lib/libSDL2_mixer-2.0.so.0
        libSDL2_image-2.0.so.0 (libc6,hard-float) => /usr/local/lib/libSDL2_image-2.0.so.0
        libSDL2-2.0.so.0 (libc6,hard-float) => /usr/local/lib/libSDL2-2.0.so.0
        libSDL2-2.0.so.0 (libc6,hard-float) => /usr/lib/arm-linux-gnueabihf/libSDL2-2.0.so.0
        libSDL_ttf-2.0.so.0 (libc6,hard-float) => /usr/lib/arm-linux-gnueabihf/libSDL_ttf-2.0.so.0
        libSDL_mixer-1.2.so.0 (libc6,hard-float) => /usr/lib/arm-linux-gnueabihf/libSDL_mixer-1.2.so.0
        libSDL_image-1.2.so.0 (libc6,hard-float) => /usr/lib/arm-linux-gnueabihf/libSDL_image-1.2.so.0
        libSDL-1.2.so.0 (libc6,hard-float) => /usr/lib/arm-linux-gnueabihf/libSDL-1.2.so.0
/usr/local/lib 以下の *.so のほうが先に表示されてる、ように見えるので、コレで大丈夫なのではないかな…。たぶん。おそらく。自信無し。

SDL2のバージョンを確認してみる。
$ sdl2-config --version
2.0.7
公式リポジトリの libsdl2-dev をインストールした場合は 2.0.5 と表示されるはずなので、今回ビルドしたSDL2が使われている、のだと思う。

golangをインストール。 :

SDL2 が本当にビルドできているのか確認するために、go-sdl2 を動かしてみたい。そのためには、golang(Go言語) をインストールしないといけない。ということで、インストールしてみる。

環境は、Raspberry Pi Zero W + raspbian stretch。

_Raspberry PiでGo言語を動かす | Golang | kosakalab

golang の最新版を探す。以下から入手できる。

_Downloads - The Go Programming Language

golang 現行版 1.9.1 の ARMv6版は、
https://storage.googleapis.com/golang/go1.9.1.linux-armv6l.tar.gz
にあるらしい。ディレクトリを作ってダウンロード。
mkdir ~/golang
cd ~/golang
wget https://storage.googleapis.com/golang/go1.9.1.linux-armv6l.tar.gz

解凍する。
sudo tar -C /usr/local -xzf go1.9.1.linux-armv6l.tar.gz
/usr/local 以下に、go というディレクトリが作られる。はず。

/usr/local/go/bin に PATH を通す。また、環境変数 GOPATH も指定しておく。GOPATH の場所は…。今回は ~/go というディレクトリにしておく。
vi ~/.profile
# どこかに追加
export PATH=$PATH:/usr/local/go/bin
export GOPATH=$HOME/go

ログアウトして再度ログイン。これでgoが呼びされるようになってるはず。

golangの動作確認。 :

go のバージョンを確認。
$ go version
go version go1.9.1 linux/arm
インストールされてるっぽい。

巷のサンプル等を打ち込んで動作確認。

_GolangでHello World! - Qiita

go run hello.go
go build hello.go
動いてるっぽい。

go-sdl2をインストール。 :

go-sdl2は以下で公開されてる。

_veandco/go-sdl2: SDL2 binding for Go

goを使ってインストール。~/go/以下にインストールされるはず。
go get -v github.com/veandco/go-sdl2/sdl
go get -v github.com/veandco/go-sdl2/mix
go get -v github.com/veandco/go-sdl2/img
go get -v github.com/veandco/go-sdl2/ttf
あるいは以下。
go get -v github.com/veandco/go-sdl2/{sdl,mix,img,ttf}

随分時間がかかったけどインストールできたっぽい。たぶん。

go-sdl2の動作確認。 :

以下の記事の最後のほうで紹介されてるソースを、 gosdl2hello.go というファイル名で保存して実行。

_Golang と SDL2 でゲームを作る ・ KaoriYa
go run gosdl2hello.go

赤い四角が表示されて、一定時間が経過したら自動で終了した。

ということは、go-sdl2 もインストールできてるし、ビルドしたSDL2も動いてる、ということだろうか。すると、gosu がおかしいのか…?

gopherrunを試しに動かしたり。 :

以下で公開されてる gopherrun を動かしてみたり。

_koron/gopherrun
_Golang と SDL2 でゲームを作る ・ KaoriYa
go get -v -u -d github.com/koron/gopherrun
cd ~/go/src/github.com/koron/gopherrun
go build
./gopherrun

go build の段階でエラーが出た。どうも、go-sdl2 の構成が昔と今とでは変わってるっぽい。

game.go と gopherrun.go の最初のほうの、sdl_image や sdl_mixer を指定してるあたりを以下のように修正。
import (
        "log"

        "github.com/veandco/go-sdl2/sdl"
        "github.com/veandco/go-sdl2/img"
        "github.com/veandco/go-sdl2/mix"
)
import (
        "math/rand"
        "github.com/veandco/go-sdl2/sdl"
        "github.com/veandco/go-sdl2/mix"
        "golang.org/x/image/math/fixed"
)
これで go build が通るようになった。

go build で作成された、実行形式のファイル、./gopherrun を実行。

ゲーム画面っぽい画面がちゃんと出た。スペースキーでジャンプ。ESCキーで終了(のはず)。

ただ、不具合らしきもの出てる…。
  • 音楽だかSEだかが鳴らない…。コンソールには、「ALSA lib pcm.c: ???? :(snd_pcm_recover) underrun occurred」てなメッセージが残っている。
  • 処理が遅い…。かなりガクガクしてる…。まあ、遅いのは Raspberry Pi Zero で動かしてるから、かもしれず。
  • ESCキーを押すと終了するはずが、画面は消えても処理が戻ってこない。キーボードからの入力ができなくなる。Ctrl + C も受け付けない。

とはいえ、画面が出たのはありがたい。

画面が出た・画像が表示されたということは、SDL2関係はビルドできてる可能性が高いのだろう。となると、やはり gosu がおかしい…。

#2 [raspberrypi][linux] Raspberry Pi Zero W上にtmuxをインストールしてみたり

Pi Zero W に putty からアクセスした際に、何かの処理をしながら別の何かを確認したい、てな時があるわけで。たしかそういう時に使える、複数の画面を表示できるユーティリティがあったような…。GNU screen みたいな…。

ググってみて思い出した。tmux だ。

_tmuxを使い始めたので基本的な機能の使い方とかを整理してみた - 完熟トマト
_tmuxの使い方 - Qiita
_第127回 ターミナルマルチプレクサ tmuxを使ってみよう:Ubuntu Weekly Recipe|gihyo.jp … 技術評論社
_達人に学ぶ.tmux.confの基本設定 - Qiita
_tmuxが快適、かつ .tmux.conf の設定 - Qiita

ということで、Pi Zero W 上でインストール。
sudo apt install tmux
解説ページを見ながら設定していこう…。

以上、1 日分です。

過去ログ表示

Prev - 2017/10 - Next
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project