rasberry pi zero に似た radxa zero に tileserver-gl をインストールした際の手順を記録しています。
- タイル画像を生成する時にエラーになってしまう問題ができない (2023/06)
terminate called after throwing an instance of 'std::runtime_error'
what(): Cannot read GLX extensions.
手元のハードウェアスペック/OSイメージ
- emmc 付きの 4GB RAM モデル
- たしか radxa-zero-ubuntu-focal-server-arm64-20220801-0346-mbr のイメージを利用している
tileserver-gl のインストール
-
tileserver-gl のインストール手順として3つ(docker, npm, from source)の案内があるが, npm からパッケージをインストールをしている
-
nodesource を使い、nodejs18 系をインストールしている
-
事前に環境変数
LD_PRELOAD
変数のセットしている
# ~/.bashrc
export LD_PRELOAD=/lib/aarch64-linux-gnu/libGLdispatch.so
環境変数をセットしない場合, tileserver-gl 実行時に次のエラーを得る
node:internal/modules/cjs/loader:1338
return process.dlopen(module, path.toNamespacedPath(filename));
^
Error: /lib/aarch64-linux-gnu/libGLdispatch.so.0: cannot allocate memory in static TLS block
}
Xvfb
- tileserver-gl インストール時に Xvfb (X virtual frame buffer) が一緒にインストールされている
- タイルイメージのレンダリングには仮想ディスプレイが必要
- getting-started-with-linux-cli にコマンド自体は登場している
- 事前に Xvfb (
xvfb-run
) コマンドで仮想ディスプレイを作成する必要がある - ただし,レンダリング時に GLX に関してエラーが出てしまうので, virtualgl (bumblebee) package をインストールする必要があった
$sudo apt install -y bumblebee
- 仮想ディスプレイの作成は次の要領で行う
Xvfb :1 -screen 0 1024x768x24 +extension GLX +render -noreset &
- 環境変数
DISPLAY
に仮想ディスプレイを指定する
export DISPLAY=:1
- 仮想ディスプレイのテストをするには
glxinfo
が利用できる- mesa-utils package を次の手順でインストールする
$ sudo apt install -y mesa-utils
以下のようにエラーが表示されなければ、正常に仮想ディスプレイが作られている
rock@radxa-zero:~/$ glxinfo -display :1 | head
name of display: :1
display: :1 screen: 0
direct rendering: Yes
server glx vendor string: SGI
server glx version string: 1.4
server glx extensions:
GLX_ARB_context_flush_control, GLX_ARB_create_context,
GLX_ARB_create_context_no_error, GLX_ARB_create_context_profile,
GLX_ARB_fbconfig_float, GLX_ARB_framebuffer_sRGB, GLX_ARB_multisample,
GLX_EXT_create_context_es2_profile, GLX_EXT_create_context_es_profile,
タイルイメージのレンダリングテスト
- ブラウザから
http://127.0.0.1:8080/
を開き、「Viewer」 のボタンを押下 - 地図が表示されることが期待される
$ wget https://github.com/maptiler/tileserver-gl/releases/download/v1.3.0/test_data.zip
$ unzip -q test_data.zip -d test_data
$ cd test_data
$ tileserver-gl -c config.json
現在見えている問題
- index ページでリロードすると次のエラーが表示される
- virtualgl 関係なかった?
terminate called after throwing an instance of 'std::runtime_error'
what(): Cannot read GLX extensions.
Aborted (core dumped)
-
maptiler-log.svg
などの一部の画像アセットが読み込まれない