Posts

NetBSD/amd64-current上でIntel Quick Sync Videoを使ってみる

この記事は、 NetBSD Advent Calendar 2018の10日目の記事です。 はじめに IntelのCPUに内蔵されているGPUには、Intel Quick Sync Video (QSV)というビデオのデコードとエンコードをする仕組みが入っています。 今回は、KabylakeなIntel Core i7なチップの搭載されているHP Spectre x360 ae019TUで、NetBSD/amd64 8.99.27上で、 H.264のビデオのデコードとエンコードをQSVでさせてみました。 エンコードには、pkgsrc/multimedia/ffmpeg4を使い、 デコードには、pkgsrc/multimedia/mpvを使います。 比較のためにfmpeg4でCPUを使ってH.264を利用しますが、 これには本来はライセンスが必要なはずです。 CPUを使ってH.264のデコード/エンコードをしてはいけないと思います。 Intel QSVを使用する準備 NetBSDでIntel QSVを使うためには、pkgsrc/multimedia/libva (VA API)を使うのが一番良いようです。 Intel Media SDKはもしNetBSDで使えたとしても相当苦労するのが明らかですし、 VDPAUは、2015年以降のコミットは2018年11月の2件のみです。 NetBSD/amd64 8.99.27で必要なものをpkgsrcからインストールします。 pkgsrc/multimedia/ffmpeg4も pkgsrc/multimedia/mpvもNetBSD/amd64 8.99.27ではpkgsrc/multimedia/libva に依存するのが既定値になっています。 本当に自分の環境でlibvaサポートが有効になるかを確認したい場合にが、 make show-optionsの出力にvaapiが含まれているかを確認すれば良いでしょう。 libvaからIntel QSVを使うには、pkgsrc/multimedia/intel-vaapi-driverが必要です。 また、libvaの動作確認をするには、pkgsrc/multimedia/libva-utilsがあると良いです。 # cd /usr/pkgsrc/multimedia/ffmp…

Amazon Web Service EC2のa1インスタンスでNetBSD/aarch64を動かしてみる

Image
この記事は、 NetBSD Advent Calendar 2018の9日目の記事です。 はじめにport-armメーリングリストに、 jmcneill@さんが、 NetBSD on AWS EC2 ARM instances と言う投稿をされました。 AmazonがAmazon Web Service (AWS) EC2にa1インスタンスという64ビットARM (aarch64)を追加していますが、 その上でNetBSD/evbarm64が動くという話です。 今回は、jmcneill@さんが、用意してくれたAMIを使って、a1.middleインスタンス を作り、pkgsrcを使ってみました。 AWS EC2 a1とは AWS EC2 a1は、Amazonの独自に開発した64ビットARM CPUである AWS Gravitation Processorで動くインスタンスのようです。 jmcneill@さんが、 us-east-1(N. Virginia)にAMIを用意してくれていますので、 us-east-1であれば何の苦もなくインスタンスを用意できるはずです。 今回は、a1.middleインスタンスを使ってみますが、これはCPU: 1基、RAM: 2GiBの インスタンスです。最大構成のa1.4xlargeですと、CPU: 16基、RAM: 32 GiBです。 a1.middleインスタンスを用意する a1インスタンスだからと言って、特に特別なことはありません。 普通にAWSのインスタンスを作成していきます。 まずは、Community版のAMIで、ami-0c7624c662581e8faを検索して 選択します。ログイン用のssh鍵も生成し、ダウンロードしておきます。

次には、EBSディスクを割り当ててインスタンスを起動させます。
a1.middleインスタンスへログインする ログインについては、NetBSD Wikiの記事に書かれている通りです。 生成したssh鍵の秘密鍵をダウンロードしてあると思います。それを使って、以下のようにログインします。 $ chmod 600 a1-privatekey.pem $ ssh -i a1-privatekey.pem root@aws-hostname-address a1.middleインスタンスの初期…

pkgsrcでのクロスコンパイル方法 2018年版

この記事は、 NetBSD Advent Calendar 2018の8日目の記事です。 はじめにpkgsrcには、今目の前にあるマシンとは違うアーキテクチャーの マシンで動くNetBSDのためのバイナリーパッケージを作る仕組みがあります。 基本的には、 pkgsrc/doc/HOWTO-use-crosscompile にあるようにすれば良い訳ですが、実際にやってみた経験のある方は 多くはないかもしれません。 今回はNetBSD/amd64 8.99.25で、 NetBSD/evbearmv7hf-el用 8.99.25のバイナリーパッケージを作成してみます。 クロスツールチェインを用意する NetBSDはクロスビルドをするためのツールチェインを簡単に作ることができます。 具体的には、以下のようにします。 $ cd /usr/src $ ./build.sh -U -T /usr/world/9/earmv7hf-el/tools -O /usr/world/9/earmv7hf-el/obj -D /usr/world/9/earmv7hf-el/destdir tools $ ./build.sh -U -T /usr/world/9/earmv7hf-el/tools -O /usr/world/9/earmv7hf-el/obj -D /usr/world/9/earmv7hf-el/destdir build これで、/usr/world/9/earmv7hf-el/tools以下にクロスコンパイラーなどが、 /usr/world/9/earmv7hf-el/destdir以下にユーザーランドが用意されます。 このクロスコンパイラーなどを使い、このユーザーランドにパッケージをインストールしつつ パッケージをビルドしていくことになります。 /etc/mk.confの設定pkgsrcの設定は、NetBSDがホストのであって別段bootstrap pkgsrcを 実行していない場合は、/etc/mk.confに設定を書くことになります。 ここでは、以下のように実行した場合にevbearmv7hf-el用に クロスビルドするようにしてみます。 $ cd /usr/pkgsrc/www/http-parser $ make USE_CROSS…

pkgsrcでGo言語で書かれたソフトウェアをパッケージにする方法

この記事は、NetBSD Advent Calendar 2018の7日目の記事です。 はじめにpkgsrcのパッケージは、オフラインでビルドできることが求められています。 ですので、ビルドの準備段階や最中に依存するソースコードをダウンロードするのは 避けなくてはいけません。 今日はGo言語で書かれたソフトウエアであるHugo と言うスタティックサイトジェネレーターを例にして、Go言語で書かれたソフトウエアの場合の buildlinkの仕組みを体験してみたいと思います。 依存するソフトウエアの準備方法pkgsrcでは、configureステージ(典型的には GNU autoconfのconfigureスクリプトを実行する段階で、ビルドの1つ前の段階)の前に WRKSRC(デフォルトではそのパッケージのディレクトリー内にwork ディレクトリー)以下に、依存するパッケージのヘッダーファイルやライブラリファイルを用意して おきます。 このような処理をする場合には、例えば以下のように パッケージのMakefileから buildlink3.mkファイルをインクルードしておきます。 (snip) .include "../../devel/go-locker/buildlink3.mk" .include "../../www/go-toml-burntsushi/buildlink3.mk" .include "../../www/go-urlesc/buildlink3.mk" .include "../../devel/go-purell/buildlink3.mk" .include "../../textproc/go-chroma/buildlink3.mk" (snip) ヘッダーファイルやライブラリーファイルをWRKSRC以下に配置すると 書きましたが、Go言語の場合には、ちょっと事情が異なり、ソースコードとスタティックライブラリーが 配置されます)。 実際に依存先のソースコードとスタティックライブラリーが格納されるのは、 work/.buildlink/gopkgディレクトリー以下です。 pkgsrc/www/hugoの場合の中身を少し確認してみ…

NetBSD/amd64-current on HP Spectre x360 ae019TU (デスクトップ環境構築編)

Image
この記事は、NetBSD Advent Calendar 2018の6日目の記事です。 前回の補足前回のインストール編で 書き忘れていた点が2点ありました。 最近のNetBSD/amd64-currentだと、acpibat(4)の認識のところで止まってしまいます。ですので、boot -cで起動させて、disable acpibatを入力してやるか、事前に/boot.cfgファイルを書き換えて、userconf disable acpibatを足しておく必要があります。附属の可視光/赤外線用のビデオカメラの認識の際にカーネルパニックします。PR kern/53734が正しいかは分かりませんが、uvideo(4)を無効にするか、このPRのパッチを当てておく必要があります。はじめに 前回インストールしたNetBSD/amd64 8.99.26では、以下の機能が使えます。 オーディオ出力Synaptics製タッチパッドmicroSDカードリーダー無線LANNVMe SSDストレージIntel製内蔵GPUによるアクセラレーションUSB Aコネクター経由でのUSB 3デバイスの利用 以下の機能は、パッチを当てれば使えます。 タッチスクリーンのペンによる操作 以下の機能は使えません。 内蔵の可視光/赤外線のウェブカメラタッチスクリーンの指による操作指紋認証USB Type-Cコネクター経由でのUSB 3デバイスの利用ディスプレイの輝度調整ACPIで電源を切る(shutdown -p nowが働かない)ACPIで内蔵バッテリーのステータスを取得するハードウェアボタンによるオーディオ音量調整 細かい所は不便ですが、生活するのに困るほどではありません。 ここでは、快適にFirefoxウェブブラウザー(pkgsrc/www/firefox)で ウェブブラウジングができるようにする、Blender(pkgsrc/graphics/blender)で3Dモデリングができるまでを説明して行きます。 必要なパッケージのインストール 快適なX Window Systemの環境を容用意するには、残念ながらxsrcから 生成されたXでは不十分なことは前回も触れました。 ここでは、pkgsrcでも不十分ですので、lpkgsrc-wip も利用します。 pkgsrc-wipは、pkgsrc…

NetBSD/amd64-current on HP Spectre x360 ae019TU (インストール編)

この記事は、 NetBSD Advent Calendar 2018の5日目の記事です。 はじめに 2018年7月のJapan NetBSD Users' GroupのBoFの際には、いろいろ動かないものばかり だったのだが、2018年12月現在では、HP Spectre x360 13-inch ae019TUも多くの 機能がちゃんと動くようになっている。 今日から2日間は、HP Spectre x360 13-inch ae019TUで、快適にNetBSDデスクトップを 使用する方法について書いていきたい。 ちなみにこの記事は、おおしまさんのU-EFI bootで起動するNetBSD USBメモリを作ってみるの記事を 読んだ方にはほぼ不要だと思います。 NetBSDのインストール このマシンには、当然のようにDVDドライブなどは内蔵されていない。 それにUEFIな環境で使用したい。 と言うことで、今日の時点で最新なNetBSD-8.99.26-amd64-uefi-install.img.gz をnycdn.NetBSD.orgから ディスクイメージをダウンロードして USBスティックに書き込み、インストールに使用することにする。 NetBSDの環境があれば、そこでddコマンドで書き込むのが良いのだが、 今回は、Windows 10 Proの環境で書き込んでみた。rawrite32.exeを使う。 rawrite32.exeは、a href="https://www.netbsd.org/~martin/rawrite32/"> lNetBSD.orgにあるmartin@のウェブページからダウンロードすることができる。 ちなみに、既にGPTなパーティショニングがされていると、rawrite32.exeでは どうやってもエラーになってディスクイメージを書き込めないことがある。 どうにかしたいのだが、何も行動できていない。 実際のインストールは、インストーラーであるsysinstは使用しなかった。 おそらくsysinstは、GPTパーティショニングな環境へのインストールに まだ対応していないのではないかと思う。これについても何もできていない。 今回は、sysinstが起動したら、すぐにCtrl-Cを押して シェルに移行し、そこ…

pkgsrc/security/acmeshでLet's EncryptのTLS/SSL証明書を使う

この記事は、NetBSD Advent Calendar 2018の4日目の記事です。 自分のウェブサイトをLet's EncryptでTLS/SSL化したいと思っていて、 過去にはpkgsrc/security/py-certbotを試すために pkgsrc/sysutils/py-psutilのNetBSDへの移植に 取り組んだこともあったのだが、なかなか継続的に利用し続けるのは大変だった。 NetBSD blogの Using acme.sh for Let's Encrypt certificates on pkgsrc.org servers を読んで、acme.sh を試したいと思ったのだが、そもそもpkgsrcには収録されていないし、DNSによる認証は ちょっと遠慮したいので、そのまま適用はできないでいた。 やっと重い腰を上げてpkgsrcに追加して設定した話を書きたい。 ちなみに、ワイルドカード証明書が発行できるようになっているが、今回はワイルドカード証明書 は発行を受けない。 インストール インストールは、pkgsrc/security/acmeshを使えば良い。 # cd /usr/pkgsrc/security/acmesh # make install 以上のように実行すれば良い。このようにインストールすると、 ▽usおそらくHTTPでの認証で ウェブサーバーをインストールしないでもTLS/SSL証明書を発行できるように pkgsrc/net/socatもインストールされる。 今回はsocatは使わないがインストールされてしまう。 TLS/SSL証明書の発行を受ける TLS/SSL証明書の発行を受けようというサーバーのホスト名はwww.example.com であることにしよう。 このFQDNでアクセスできるようにDNSを設定しておくのが必要なのは言うまでもない。 私は、このサーバーでpkgsrc/www/nginx-develをhttpdとして 使用する予定なので、TLS/SSL証明書の発行を受ける際にも、これを使用することにする。 以下のようにインストールし、設定しておく。 # cd /usr/pkgsrc/www/nginx-devel # make install # vi /usr/pkg/etc…