カテゴリー別アーカイブ: プログラミング

Erlangのビルドツール rebar3

Erlangのビルドツールとしてrebar3を使うことにしました。Debianパッケージになっているのは一つ古いrebar2のようですので、Get Startedにあるようにgithubから拾って来ます。

$ git clone https://github.com/erlang/rebar3.git
$ cd rebar3
$ ./bootstrap
$ ./rebar3 local install
...
$ vi .bash_profile
...
export PATH=$PATH:~/.cache/rebar3/bin
$ source .bash_profile

これで~/.cache/rebar3以下にインストールされたrebar3が使えるようになります。ちなみにrebarはリーバーと読むようです (鉄筋という意味だとか)。

Raspberry Pi 3でErlang

Raspberry Pi 3にErlangを入れてみました。ウェブではソースからインストールする情報が見つかりますが、面倒なのでErlang Solutionsが公開しているdebパッケージをインストールします。

$ wget https://packages.erlang-solutions.com/erlang-solutions_1.0_all.deb
$ sudo dpkg -i erlang-solutions_1.0_all.deb

Debianのコードネームを求められるので、jessieと入力します。するとapt lineが追加されますので、いつも通りにapt-getしましょう。なお、Erlang Solutionsからはerlangパッケージとesl-erlangパッケージの二つがリリースされていますが、今回は前者を入れてみます。

$ sudo apt-get update
$ sudo apt-get install erlang
...
$ erl
Erlang/OTP 18 [erts-7.3] [source] [smp:4:4] [async-threads:10] [kernel-poll:false]

Eshell V7.3  (abort with ^G)
1>

50個近いパッケージが芋蔓式にインストールされました。erlを起動してみると、ちゃんと4コア認識されていることが確認できます。素晴らしい。

Parallellaでクラスタリング その6 NFSv4対応

従来の設定のままでも特に問題はないのですが、Parallellaの新しいファームウェアがNFSv4に対応しましたので、ファーム更新のついでに設定し直しました。

まずNFSサーバとなる母艦の設定です。これまでは/etc/exportsでファイルシステムを直接指定していましたが、NFSv4らしく、マウントポイントを/var/exportsの下に集めることにします。キモは/etc/fstabファイルですね。設定したらexportfsコマンドで設定を確認しておきましょう。

# mkdir -p /var/exports/parallella
# chown -R nobody:nogroup /var/exports
# vi /etc/fstab
...
/home/USERNAME/parallella    /var/exports/parallella    none    bind    0    0

# vi /etc/exports
...
/var/exports                   192.168.100.0/24(rw,sync,fsid=0,crossmnt,no_subtree_check)
/var/exports/parallella        192.168.100.0/24(rw,sync,no_subtree_check)

# /etc/init.d/nfs-kernel-server restart
# exportfs
/var/exports    192.168.100.0/24
/var/exports/parallella
                192.168.100.0/24

ここでは書きませんでしたが、/etc/imapd.confの設定, ACLの設定も忘れずに。

続きを読む

Jetson TX1 カバー

Jetson TX1 自作アクリルカバー

これまでJetson TX1開発者キットを購入時に入れられていた帯電防止の袋に入れて保管していたのですが、使う度に出し入れするのが面倒になってきました。配線したのをイチイチ差したり抜いたりするのも手間ですし。

Jetson TX1には底板が標準で付けられていますので、追加でホコリ除けのカバーを取り付けることにしました。開発者キットの基板はMini-ITX規格に準拠しているようです。Mini-ITX規格について検索してみたところ、ネジ穴位置を画像で公開しているサイトを発見。こちらを参考にさせて頂きました。

Mini-ITX規格自体は170mm四方ですが、カバーが同じサイズでは基板ギリギリになってしまいますので、カバーのサイズは180mm四方にしました。ネジはM3のミリネジでよいようです。

具体的なネジ穴の位置はアクリル板の加工精度の都合で、Mini-ITX規格に厳密に従った位置になっていません。ネジ穴はM3 = 3.2mmなので、この遊びで吸収してくれることを期待します。

  • 左上: 左から11mm, 上から15mm
  • 左下: 左から11mm, 下から10mm
  • 右下: 右から11.5mm, 下から10mm
  • 右上: 右から11.5mm, 上から38mm

アクリル板の材質は、帯電せずホコリの吸着を防ぐ制電アクリルにしました。厚さは3mmで十分でしょう。端面はカットしたままでも実用上は問題ないと思いますが、見た目重視な場合は磨き処理一択です。

続きを読む

JetPack for L4Tセットアップ 成功編

今回もJetson TX1の開発環境のセットアップです。

開発ホストとしてのUbuntuのセットアップが完了しましたので、次はいよいよJetPack for L4Tをインストールします。手順は失敗編とまったく同じですので再掲しません。

開発ボードをForce Recoveryモードで起動してUSBで認識させた後にも、失敗編のようにストールすることなくインストールが進みます。開発ボードのOS書き換えが済むと、開発ボードのUbuntuが自動起動します。また、起動後はubuntuユーザで自動ログインするようになっています。

ホストの方では、サンプルコードのクロスコンパイルが行われ、問題なくコンパイルできればビルドされたバイナリが開発ボードにコピーされます。XTermが閉じてインストーラに戻ればセットアップ完了となります。

開発ボードの方では、3D処理のサンプルアプリが自動起動するようです。これは閉じてしまって構わないと思います。

OS書き換え前の初回起動時にはドライバのインストールを手動で行う必要がありましたが、JetPackからのOS書き換え後は手動でドライバをインストールする必要はないようです。また、ホームディレクトリを開いてみると、色々と新しくディレクトリが生成されているのが確認できると思います。

JetPack for L4Tセットアップ ホスト編

引き続き、Jetson TX1の開発環境を構築します。

前回のセットアップではホストとしてVMWare上のUbuntuを用意しましたが、どうもVMWareやVirtualBox等の仮想環境上のUbuntuからのOSの書き換えがうまく動作しないことが判明しました。そこで、開発PCにSSDを増設して、この上にUbuntuをインストールし、デュアルブートできるようにしました。

今回増設したSSDは安い120GBのものです。BIOSでSATA2を有効にしてBIOSが認識できるようにし、DVDに焼いたUbuntu 14.04のインストールディスクをドライブに挿入して起動してUbuntuをインストールします。/dev/sdaはメインの開発環境であるDebianが入っているのでそのままにし、今回追加した/dev/sdb全体を/dev/sdb1としてUbuntuに割り当てました。SSDなので例によってswap領域は用意せず、無効にしてあります。

インストール完了後にPCを再起動したところ、grubが追加したSSDを認識できずにgrub rescue画面になってしまいましたが、

grub rescue> set prefix=(hd0,msdos1)/boot/grub
grub rescue> insmod normal
grub rescue> normal

で/dev/sda1の/boot/grubにあるnormalモジュールを読み込んで、通常のgrub画面の表示に成功しました。ここからDebianを起動し、

$ sudo cfdisk /dev/sdb

してみたところ、Ubuntuをインストールした/dev/sdb1パーティションにbootフラグが立っていません。bootフラグを立ててWrite→Quitした後に、念のためにupdate-grubを実行してgrubを再インストールして再起動したところ、ようやくUbuntuが起動できました。

2016/04/21追記: ストレージがSSDですので、Debianの時と同じく/etc/fstabのマウントオプションにnoatimeしておきます。fstrimは/etc/cron.weekly/fstrimから呼び出されるようなので、Debianのように手動で設定してやる必要はありません 。ただし、特定のメーカ以外のSSDの場合、このファイルでfstrim-allコマンドへの--no-model-checkオプション追加が必要です。詳細は/sbin/fstrim-allを読んでみて下さい。

JetPack for L4Tセットアップ 失敗編

前回に引き続きJetson TX1の開発環境のセットアップを行います。

2016/04/20追記: この記事を作成しながらセットアップを進めていたところ、仮想環境からのOSの入れ替えは失敗することが分かりました。Nvidiaとしても仮想環境上のUbuntuはサポート外で、デュアルブート等のネイティブ起動を推奨のようです。以下、記録として残しておきますが、参考にする際はご注意下さい。

開発用ホストとして、Ubuntu 14.04 64bit環境をVMWare上に構築します。後述しますが、JetPack for L4Tのインストールに16GBほど必要です。最近のLinuxのインストールは本当に簡単でいいですね。インストールが完了したら、例によってibus-skkとlv, tmuxをインストールしておきます。また、SSDなのでswapは無効にしました。

次に開発環境を用意します。NVIDIAにJetsonのポータルがありますので、まずはそこにアクセスします。並んでいるアイコンのうち左端にあるのがREGISTERですので、ここをクリックして開発者登録します。必要な情報を入力してsubmitすると、登録確認のメールが届きますので、URLをクリックすると登録が完了します。パスワードの変更(設定)を求められるので、次の画面で設定します。

パスワードの設定が完了すると、開発者サイトにログインした状態になります。ダウンロードページに移動し、JetPack for L4Tの最新版(現時点では2.1)をダウンロードします。ダウンロードしたらインストールしましょう。ここでは /opt/nvidia にインストールします。

$ sudo mkdir /opt/nvidia
$ sudo chown ユーザ名:グループ名 /opt/nvidia
$ mv JetPack-L4T-2.1-linux-x64.run /opt/nvidia
$ cd /opt/nvidia
$ chmod +x JetPack-L4T-2.1-linux-x64.run
$ ./JetPack-L4T-2.1-linux-x64.run

途中でTK1かTX1かの選択が出ますので、TX1を選択します。認証ダイアログが出たらパスワードを入力します。パッケージの選択では、Standardのままで問題ないと思います。この標準インストールの場合、ストレージに16GBほどの空きが必要になります。Agreementにチェックを入れ、先に進むとインストールが開始されます。

ウィンドウを消すなとか色々言われますが、普通にインストールしていけば大丈夫です。インストールが完了すると、ネットワーク構成を確認されます。ホストのUbuntu, Jetson TX1ともにネットワーク接続している方を選択し、ネットワークI/Fにeth0を選択し、先に進めます。すると開発ボードをForce Recoveryモードにせよ、とのダイアログが表示されますので、

  1. 開発ボードの電源を切り、ACアダプタも抜く
  2. 開発ボード側のmicroUSBポートとホストを付属のUSBケーブルで接続
  3. 開発ボードにAC電源を接続し、電源ボタン(S4)を押下
  4. すかさずForce Recoveryボタン(S3)を押しっぱなし
  5. リセットボタン(S1)を押して数秒待ってからForce Recoveryボタンを離す

という手順で開発ボードをForce Recoveryモードに移行させます。うまくいけばホスト側にNVidiaのデバイスが現れます。確認のためにホスト側のターミナルでlsusbコマンドを実行すると

$ lsusb
Bus 001 Device 002: ID 0955:7721 NVidia Corp.
...

のような行が表示されるはずです。開発ボードが認識されたら、ダイアログでエンターを押すとセットアップが開始されます。が、この直後、"Post Installation" 画面でセットアップがストールします。参りました。記事冒頭で追記した通り、VMWare等の仮想環境からではOSの入れ替えに失敗するようです。後日、デュアルブート環境を作成して再チャレンジします。

 

NVIDIA Jetson TX1

仕事で使うかもしれないので、NVIDIA Jetson TX1を入手しました。

開発ボードの他にアンテナ2本、ACアダプタ、USBケーブル、USBアダプタ、ジャンパーピンがそれぞれ1つずつ付属しています。使い方は簡単で、アンテナ刺してHDMI刺してキーボード刺してLANケーブル刺して電源刺して電源入れて、でOK。Ubuntu 14.04が起動します。と、これだけではアレなのでもう少し。

初回起動時はコンソールで起動します。設定済みのアカウント ubuntu/ubuntu でログインすると、ドライバのインストールが指示されるので、

$ cd NVIDIA-INSTALLER
$ ./installer.sh

して再起動しますと、見慣れたUbuntu 14.04のXというかUnityが起動します。日本語環境の設定や使い慣れたツールをインストールしておきましょう。私はuniverseを有効にしてlvとibus-skk, tmuxをインストールしておきました。HHKBでibus-skkを使う場合は、キーボードレイアウトをusに変更しておきましょう。

なお、常温で普通の使い方をしている限りでは、ボードに付属のファンは回らないようです。

2016/04/21追記: ここで開発ボード上のUbuntu環境をセットアップしても、後ほどJetPack for L4Tのインストールで上書きされます。ここでは雰囲気を味わう程度にして、ガリガリとカスタマイスしない方が無難です。

USB 3.0 ポート増設

USB 3.0対応の機器が増えてきましたので、ポートを増設しました。背面の拡張スロットだけでは不便ですので、空いているフロントの3.5インチベイにもポートを出します。SATA電源ケーブルが足りない予感がしたので、分岐ケーブルも購入しておきます。

T5500のサービスマニュアルを見ながらフロントパネルを外してUSBパネルを設置し、PCIeスロットにボードを差してSATA電源を接続し、フロントパネルのケーブルと接続したらOKです。もともと3.5インチベイに付いていたネジとUSBパネルに付いてきたネジとが噛み合わず、微妙な固定になってしまったのは気にしない方向で。

蓋を閉めて電源を入れ直し、dmesgにxhci関連のログが出ていれば認識されていると思います。lspciでもRenesasのUSB 3.0ボードが表示されるはずです。