「 linux 」一覧

MobaXterm が便利


SSHのクライアントとしては Tera Term を愛用しているのですが、とあることから MobaXterm というソフトを知ったので試してみました。これが便利でしばらく使ってみようと思います。

なにが良いかといいますと、これ単体で Xサーバーが内蔵されており、 OpenGL のアプリケーションも動作させることができた点にあります。このときの様子を撮影してみたので貼ってみました。
mobaxterm_opengl

これは Windows10 上で別PCに Ubuntu 16.04 LTS をインストールしたターゲットに接続して、試してみたときのものとなります。OpenGL アプリとして定番のものを動かしてみました。また OpenGL ES2.0 のアプリも動かしてみました。
どちらも動いていることが確認できます。

1つ残念な点は OpenGL は LLVMpipe によるソフトウェア実装が動いている点ですが・・・動くだけマシといったところですね。

この MobaXterm で設定で OpenGL のハードウェアアクセラレート ON というのが見当たったのですが、有効にしてみたところ妙な挙動になってしまいました。以下のように一見動きそうな感じなのですが、実際に動かすとフリーズしたかのごとく重い動作になってしまい・・・使えませんでした。

mobaxterm-opengl_2

他にもこのMobaXtermのよいところは、ホームディレクトリがすでに sftp で見えているため、ドラッグアンドドロップでファイルをやりとりできるところがあります。今までは別ソフト使っていたりしたのでこの1つに集約することができそうです。


VisualStudio 2015 で Linux アプリの開発&デバッグ その2


前回は単独のプロジェクトでソースコードも1つだったので、
今回はスタティックライブラリを使用しての複数のソースコードで動作を試してみたい思います。

準備

前回はソースコード単独でビルドできる状態だったので、実行体の生成のため gcc を呼び出すコードを書いていました。
今回からは複数のコードやライブラリのリンクと言ったことも考慮するためにこの部分を make コマンドを実行するように変更しました。
これにより Makefile さえエディットすれば、ソースコードの変更に対応できるようになります。注意点としては VisualStudio でのプロジェクトへのソースコードの追加と、Makefile の中身は同期されないので、手動(もしくは他の手段で)同期をとる必要があるかもしれません。ただ大事なのは Makefile なのでこちらをエディットすることを守ればなんとかなりそうです。

具体的にはプロジェクトのプロパティで Build Command Line を以下のように変更しました。(実際にはこれを1行で記入してください)
vs2015-target-linux-use-staticlib-0

またプロジェクトに登録したファイルの転送は考えたくなかったので、Linux で Samba を導入し、共有フォルダに VisualStudio のプロジェクトを作るようにしています。

続いてスタティックライブラリの準備にとりかかります。
続きを読む


SELinux 有効時の Samba 設定


久しぶりに Samba をインストールしてLinux-Windows間ファイル共有をしようとしたら、ユーザーホームが表示されるものの中にアクセスできないという症状に遭遇しました。

横着して? SElinux をそのまま有効状態にしていたのが原因でしたが、
せっかくなので無効化せずに、見えるように設定してみました。

root 権限で以下のコマンドを実行します。


VisualStudio 2015 で Linux アプリの開発&デバッグ


VisualStudio 2015 で別PCで動いている Linux 環境でのアプリ開発およびデバッグということができるかを試してみました。

必要なものは以下の通りです。

  • Linux環境の別ターゲット
  • VisualStudio 2015 を ”Visual C++ Android 開発”付きでインストール

ここでは VisualStudio 2015 Professional, Windows10 Pro (x64) で確認しています。
vs2015-target-linux-11

セットアップ

最低限の必要なものは準備が終わっているものとして、環境構築の説明をしていきます。

Linux側の準備

ここでは少し古いですが CentOS 6.5 の環境があったのでこれで説明します。
Samba を用いて Linux-Windows のファイル共有ができるように設定しておきます。
またコードのコンパイルを Linux で行うために、コンパイラなどのツールチェインをインストールしておきます。

Windows側の準備

Visual Studio GDB Debugger 」という拡張プラグインをインストールします。
これは以下のページからダウンロードすることができます。
https://visualstudiogallery.msdn.microsoft.com/35dbae07-8c1a-4f9d-94b7-bac16cad9c01
VisualStudioGDB.vsix というファイルがダウンロードされるので、ダブルクリックでインストールを行います。
(本プラグインは Microsoft のデジタル署名がついているようでした)

このプラグインが Plink を使うようなので、Putty のページからファイルを取得してきます。
Putty のページ: http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html

インストールしてしまっても良さそうですが、開発環境に tortoise Git も入っており、こちらが標準で使っている TortoisePlink でないものを設定済みだったりするとかち合うため、安全を考えて zip アーカイブを取得することにします。

そして、これを適当なところに展開します。ここでは C:\tools\putty に展開しました

続きを読む


Ubuntu で DirectFB が試せないかテストしてみました。


DirectFB なるものの存在を今更知ったので動くか確認してみました。(ほんとに今更・・・)

必要なもののインストール

設定

.directfbrc という設定ファイルに以下の内容を記述します. こうしないとエラーが起こってしまいました。
こうしておくと X11 の上で動作させることが出来ました。

サンプルコード

StackOverflow かどこかで公開されていたコードを試してみました。 続きを読む


Linux でも使える Git の GUIクライアント


git 操作はコンソールで行うのが一番確実で柔軟に対応できるのですが、GUIがあっても損ではないので調べてみました。ただ実用的に使えるかどうかまでは調べていませんのでご注意ください。

Gitk
本家定番のツール。これで出来ないこともないけれど他のツールのほうが優れているならそちらを使用したい。

GitForce
WindowsとLinuxに対してツールを提供している。
ぱっと見たところログのグラフが無いようなのでつらいかも。

QGit
2007年で開発停止。スクリーンショットを見る限りでは普通。

git-cola
Windows, Mac, Linux(archlinux,debian,fedora,gentoo,ubuntu,opensuse) と対応範囲が広い。Pythonで実装されている模様。
スクリーンショットを見る限りこれは検討するに値しそう。

tig
text mode interface for git ということらしい。GUIではないけれど、git のコマンドラインラッパーということで。
単純なコマンドたたきはつらいが、これなら使える気にさせてくれるかも。

Giggle
開発が停止している模様.こちらもログの描画はそれなりに出来る模様。

git-cola を試してみる

インストール

Fedora23 で試したときには以下のコマンドを実行しました。

起動

git-cola とタイプすれば起動します。即座にはコードのコミットを行うモードとなっているようです。

コミット要約のテキストボックスと、コミット詳細のそれぞれのメッセージを入力する部分が独立しているので、コミットメッセージの書き方をある程度整えることが出来そうです。
またこの画面でメニューから項目を選ぶことでリポジトリ操作が可能なようになっていました。

git-cola-1

グラフィカルな履歴を見る場合には、メニューから “View/DAG” と選択します。
コマンドラインで直接 git-dag とタイプしても起動できるようです。

git-cola-2
複数のブランチを集約してグラフ化する方法はちょっと見つけられませんでした。
コミットログの確認の部分がやりにくいため、自分のスタイルには合わなさそうでした。ただログを確認せずガンガン進むような人は扱いやすいのかもしれません。

tig を試してみる

tig: text mode interface for git を試してみます。
最初の感想としてはこれは常用アリかなと思っています。CUIだけどマウス操作もちょっとできたりして驚きです。

インストール

Fedora23 で試したときには以下のコマンドを実行しました。

起動

実行するには tig とタイプします。デフォルトではカレントブランチの情報しか出ないため、すべてを表示するには “–all” オプションを使用します。

起動すると以下のようになります。コミットログを確認するモードで立ち上がりました。

git-tig-1

ブランチへの派生グラフがスラッシュ、バックスラッシュを使わない描画のためか、自分には割とこれが見やすかったりします。

git らしくコミットのフェーズがステージング、コミットと分かれた方法になっています。
ステータスビュー(“S”)に切り替えた後、コミット対象を”u” で選んで、”C”(Shift+s) でコミットメッセージ入力となります。

これらのヘルプを確認するには、”h” となっています。

git-tig-2
いくつか機能としては足りていない部分があり、たとえばブランチの切り替えはこのツールでは見当たらない感じだったので、git コマンドを操作することになりそうです。
ただ設定ファイル(.tigrc) で拡張コマンドを定義できたりデフォルトの設定を変えたりと柔軟なことが出来そうだったので、カスタマイズをちゃんと行えば出来る範囲は広がっていくものと思われます。

その他

カーソルキーではビューの移動になってしまい、スクロール関連に戸惑いました。
アクティブのビューでのページスクロールは PageUp/Down で、1行単位での行スクロールは、”j”, “k” となっています。
git add -p のように部分的な変更をステージングへ登録する際にはこれも使用することになります。行を選択して “u” で、その部分をステージング登録できます。
これは git add -p を直接実行するよりは使い勝手がよいと感じています。

git-tig-3

まとめ

とりあえず gitk を卒業して tig で Linux での git 生活を始めてみようと思います。


DRM/KMS についてメモ


以下のメモは概要把握としては間違っていないようには心がけたつもりですが、
間違っている可能性が大いにありますので、鵜呑みにしないようご注意ください。

DRI, DRM, KMS の目的

昔は Xサーバーが描画を一手に引き受けていたため、描画に関するコードが X依存になってしまっていた。OpenGL など最近のグラフィックスを描画使用したいケースで問題になってしまう。また Xorg の設計が古くて現状耐えられない状況にきていたりもするようで。

LibDRM

DRMカーネルモジュールはユーザー空間に危険な(不安定な)APIを公開しているので、
アプリが直接この DRMのモジュールを使うべきではない。その代わりに libDRM が提供されているので、アプリはこちらを使用する。この libDRM は Xからも使用される。

DRM (DRMcore)

カーネルモジュールです。これはすべてのカードに適用されるモジュールです。
このモジュールがロードされるとカード固有の DRM ヘルパモジュールが動きだして、
機能ポインタのセットを含めた状態でシステムに登録される。
これにより /dev/dri/card0 などのデバイスファイルが作成・登録される

KMS (Kernel Mode Setting)

ユーザースペースではなくカーネル空間側でディスプレイの解像度・色深度を設定するモジュールです。他の利点としてシステムは素早くグラフィックスの機能を使用可能になったり、ちらつきの問題改善などがあるらしい。

DRM/KMS

これらをまとめて DRM/KMS という表記をしている模様。つまり KMS をサポートしたドライバがあるなら libDRM を直接叩いて描画コードを作れば、X11(Xorg) なしでも画面描画が可能になりそうな感じです。Xサーバーの実装さえ、この libDRM 経由っぽいですし。

これらの関係らをブロック的に表すとこういうことだろうかと思います。
libdrmkms


Linux で BonCasLink のクライアント側を実現


前回は BonCasLink のサーバー側の話だったので、今回は逆のクライアントをLinuxでやるお話です。Linuxで録画用のプログラムは recpt1 が標準的なようなのでこれについては既に使えている前提でここでは話を進めていきます。

必要なもの

  • PT3などLinuxでの録画環境が構築された環境
  • BonCasLinkのサーバーが動作している他PC

インストール

BCASに関しての部分をフックするようなプログラムを作成してくれた方がいるのでその成果物である b25-remote を使わせてもらいます。これは Rec10 というプロジェクトのサブプロジェクトという位置づけのようです。

まずはこの Rec10 のコードを取得してきます。こちらは現在 bitbucket 上にあるようです。

取得してきたコードの中に b25-remote というフォルダがあり、この中にソースコードが収められているのでライブラリを以下のようにして作成します。

これでインストールまで完了です。ここで出来る成果物のうち使うのは b25-client.so がキーとなります。

使い方

以下の環境変数を設定します。

  • LD_PRELOAD=”b25-client.so のフルパス”
  • B25_SERVER_IP=BonCasLinkのサーバーが動いているPCのアドレス
  • B25_SERVER_PORT=BonCasLinkのサーバーが動いているPCのポート番号

これらを設定した状態で、 recpt1 を –b25 オプション付きで動かして、うまく動作すれば(映像が見れるようであれば)OKだと思います。

参考

https://osdn.jp/projects/rec10/scm/svn/blobs/head/b25-remote/Readme.txt
のドキュメントを参考にしました。


Debian Jessie で RADEON のドライバを入れる


標準インストールで xfce が入った状態だったので気にもしていなかったのですが、glxinfo を実行してみたらレンダラが llvmpipe になっており、ドライバがちゃんと入っていないことに気づきました。

ちょっともったいないので RADEON 用のドライバを入れることにしました。KernelModeSetting のためにはファームを入れろ、と起動時のログにも出ているのを今更ながら発見しました。

まず DRIモジュールとファームウェアバイナリを入れるために、/etc/apt/sources.list を編集します。contrib, non-free がデフォルトのものに追加されたような感じになります。

編集したら更新してから、パッケージを入れます。

あとは再起動後に有効になっていると思います。glxinfo などで llvmpipe ではなく、今回インストールしたドライバが使用されているかと思います。

OpenGL バージョンは 3.3、 OpenGL ES は 3.0 あたりになりそうです。ハードウェアとしては 4.0 もいけるはずなのですが、オープンソースドライバですし仕方ないことなのかもしれません。

glxinfoなど

glxinfo は mesa-utils パッケージにあるようです。

ソフトウェアレンダラだとこのように表示されます。llvmpipe は従来と比べると出来の良いレンダラで割とまともに動作します。


PowerVR SGX*** のカーネルドライバのソースコード


結構触っていない期間が長くなってしまいましたが MIPS Creator CI20 の最近の様子はどうだろうと思って調べてみました。http://elinux.org/MIPS_Creator_CI20 にアクセスしてみたら、実は既にこのボードって3世代くらいになっているようです。形的には最新の世代の正方形に近いものがいいなぁと思ってます。しかし未だに日本の発売はなさそうで、残念。

今の最新では Debian 8 の環境開発が進んでいるようで、SGXドライバが使えないという話は昔の話となりつつあるような感じです。そして自分が使っていたシステムイメージなどは CI20_Distros_Legacy のページに行ってしまっていました。
そしてこのページには Debian 8 Jessie 部分で、”Graphics acceleration will not work (the powervr drivers currently don’t work with xorg 1.16).” なんて記載が残ってました。現行のページでは release note にもそんな話は見当たらないので、そこそこ使えたりするんじゃないでしょうか。そのうち時間できたら試してみるかもしれません。

その一方で驚いたのが CI20_Dev_Zone のページです。こちらは通常は覗くことがないかもしれません。自分もたまたま発見したのですが、このページの後半で Linux Kernel のビルドに関しての説明があるあたりで驚きました。
 それが “Building GPU Kernel Module from sources” という部分です。 PowerVR の SGX のドライバは今まではバイナリ提供でソース類を明かさなかったのですが、コレを見るとカーネル部分のドライバソースも公開されているようです。これらに関してはこちらの CI20-SGX_kernel_moduleのページのようです。ここでは 3.0.8 でも 3.18 カーネルでも対応してるっぽいです。

 ちょっと興味があったので中身を開けてみたら、 pvrsrv のソースっぽいものがあったり、各PowerVR のチップ(sgx530, sgx535, sgx543, sgx544, sgx540)といったもののレジスタのヘッダがあったりととてもおもしろい気がします。このあたりのチップは他の組込ボードでも使われているケースがあるので、割と使えるものな気がしています。

OpenGL も動くグラフィックスドライバがソースコード付きの公開というのは自分は初めて見た気がします。これはとても興味深いですね。(ただしOpenGLの解釈部分などはここじゃないようですが)