Posts

Showing posts from December, 2016

NetBSD上のFirefoxからVMware ESXi 6.0u2または6.5のウェブクライアントを使う

この記事は、NetBSD Advent Calendar 2016の12日目の記事です。 Qiita上で代わりに投稿できるのを見付けてしまったので、勝手に投稿します。 すみません。 はじめに 普通は、NetBSD/amd64-currentをラップトップで使っているのですが、 pkgsrcの検証等のために、それ以外の環境も必要です。 386またはamd64については、VMware ESXiを使って仮想マシンを動かしています。 今は、先日インストールしたVMware ESXi 6.5を使っています。 VMware ESXi 6.0u2以降は、Windowsで動く管理コンソールソフトウェアである VMware vSphere Clientではなく、ウェブクライアントが無料で 使えるようになりました。 ですが、NetBSD/amd64-currentで動くFirefox (pkgsrc/www/firefox)では、 コンソールウィンドウで無限にキーリピートされてしまい、 まともに操作できませんでした。 ですので、インストールはVMware vSphere Clientでしなくてはいけませんでした。 ですが、VMware ESXi 6.5からは、どうやらVMware vSphere Clientが 提供されなくなってしまいました。 どうにかして、キーリピートの問題を解決しなくてはいけなくなりました。 キーリピートを調整する設定を追加してみる これまで、この問題についてGoogleで検索したことさえなかったので 検索してみました。すると、 Repeated characters when typing in remote console (196) と言う同じような問題を解決するためのサポート記事が見付かりました。 ですが、ウェブクライアント用の内容ではないように見えます。 ですが、まずは試してみました。 仮想マシンは終了させておきます。 Edit→VM Options→Advanced→Configuration Parameters→Edit Configuration... を選択し、keyboard.typematicMinDelayの行を追加し、 2000000 (2秒を意味する)に設定しました。 その上で、仮想マシンを起動してみましたが、 効果はありま…

The pkgsrc guideをEPUB3の電子書籍にしてみる

この記事は、NetBSD Advent Calendar 2016の20日目の記事です。 はじめにThe pkgsrc guideを スマートフォンでオフラインで読みたいと思っていました。 今回は、The pkgsrc guideをEPUB3形式に変換することで、 スマートフォン上でも快適に読めるようにしました。 The pkgsrc guideはどのように書かれているのか The pkgsrc guideは、pkgsrc/doc/guide/files以下にXMLファイル として管理されています。pkgsrc.xmlと言うファイルを見ると、 最初に以下のように書かれています。 <!DOCTYPE book PUBLIC "-//NetBSD//DTD DocBook XML V4.5-Based DocBook Extension//EN" [ DocBook XML 4.5と規格に沿って書かれていると言うことのようです。 DocBook XMLのファイルを、www.NetBSD.org の仕組みと同じものを利用して、HTML等に変換しています。 DocBook XSL 1.79.1には、DocBook XMLをEPUB3に変換するスタイルシートが 含まれています。 しかし、pkgsrc/textproc/docbook-xslでは、 DocBook XMLをEPUB3に変換するのに必要なファイルはインストールされません。 pkgsrcはpkgsrc-2016Q4ブランチに向けてフリーズ中で変更はできませんので、 今回はpkgsrcの枠組みの外でEPUB3形式のファイルを作成してみたいと思います。 XSLTプロセッサーとしては、pkgsrc/textproc/libxsltに 含まれているxsltprocコマンドを使用します。 バラバラになっているXMLファイルを1つにまとめる The pkgsrc guideは、複数のXMLファイルに分かれています。 最初にこれを1つにまとめないといけません。 $ ls -F files CVS/ creating.xml getting.xml pkgsrc.xml Makefile debug.xml…

NetBSD/amd64を使っているマシンのCPUのマイクロコードをアップデートする

この記事は、NetBSD Advent Calendar 2016の18日目の記事です。 はじめに これまで、購入したマシンは、WindowsなりmacOSなりはすぐに消してしまっている ので、BIOS的なもののアップデートもしていませんでした。 BIOS的なものくらいは、起動可能なUSBメモリー用のイメージ等で配布して欲しいものです。 昔はフロッピーディスクで起動させて更新したこともあった気がします。 ああ言うオペレーティングシステムによらない更新が望ましい気がします。 IntelのCPUは、マイクロコードをロードすることができます。 この作業は、NetBSDでも、pkgsrc/sysutils/intel-microcode-netbsdで実施する ことができます。 これまで一度も試したことがありませんでしたが、常用のラップトップである 東芝dynabook R63/PSで試してみました。 pkgsrc/sysutils/intel-microcode-netbsdをインストールする 2016年12月18日現在のintel-microcode-netbsdのバージョンは、20161104です。 以下のようにインストールします。 $ cd /usr/pkgsrc/sysutils/intel-microcode-netbsd $ make install $ make clean-depends clean /usr/pkg/share/examples/rc.d/intel-microcodeと言う起動スクリプト もインストールされます。 以下のようにして、インストールし、再起動時に実行されるように設定します。 # cp /usr/pkg/share/examples/rc.d/intel-microcode /etc/rc.d # echo "microcode=YES" >> /etc/rc.conf ロードしてみる ロードする前には、現在の状況を確認しておきましょう。 # cpuctl identify 0 のように実行して、最終行に表示されるのが、マイクロコードのリビジョンです。 cpu0: highest basic info 00000014 cpu0: highest extended info 80…

VMwareの仮想マシンでNetBSDとopen-vm-toolsを使ってみる

この記事は、NetBSD Advent Calendar 2016の17日目の記事です。 はじめに VMware Workstation PlayerやVMware ESXiを使って、 いろいろなオペレーティングシステムを試すことができるのはありがたいです。 NetBSDには、OpenBSDに由来するvmt(4)というデバイスドライバーがあって、 電源関連の処理とホストへのIPアドレスの報告、ホストとゲストの時刻の同期を してくれます。 open-vm-toolsはvmt(4)の機能に加えて、以下のようなことができます。 複数のIPアドレスをホストに報告できますVMware Workstation Playerの場合に、ホストとゲスト間でテキストの コピー・アンド・ペーストができます共有フォルダー機能が使用できます もしかしたら、ドラッグ・アンド・ドロップもできるかもしれませんが、 それを実現するためのゲストであるNetBSDの要件が良く分かりません。 と言いますか、基本的には、vmt(4)で十分です。 私のように 、事情があってVMware toolsかopen-vm-toolsを 使わないといけない人向けかもしれません。 open-vm-toolsのインストール 2016年12月17日現在、pkgsrcには、pkgsrc/sysutils/open-vm-toolsとして 10.0.7が収録されています。HGFS FUSE (共有フォルダー関係) は、pho@さんが NetBSD側も含め有効にしてくださいました。ありがとうございます。 インストールは、以下のようにします。 $ cd /usr/pkgsrc/sysutils/open-vm-tools $ make install $ make clean-depends clean ホストとゲスト間でのテキストのコピー・アンド・ペーストをしたい場合には、 x11オプションを有効にするのを忘れないでください。標準では有効になっています。 手元には、最新版である10.1.0のアップデートを持っていますので、 この記事を投稿した後にコミットしておきます。 open-vm-toolsの使い方 実際に、各機能ごとに、使用方法を説明します。 基本的には、NetBSDでの場合に限定されるような内容ではないと思…

NetBSDでディジタルカメラのRAWデータを扱ってみる

この記事は、NetBSD Advent Calendar 2016の16日目の記事です。 はじめに 個人的には、あまり写真を撮ることには興味がないのですが、画像ファイルの扱いには興味があります。 最近の良いディジタルカメラでは、RAW形式で写真を取り、撮影後にソフトウェアで コントラストや色調などを調整し現像するようです。 このRAW形式は、基本的にはディジタルカメラを製造する各社の独自の フォーマットのようです。 私はそんな高級なディジタルカメラは持っていませんので、 今回は、ウェブで公開されているRAW形式の画像ファイルをNetBSDで扱ってみました。 今回試したRAW形式の画像ファイルは、インプレスのやじうまPC Watchの記事のものを使用しました。 darktableを使ってみる 最初に、pkgsrc/graphics/darktableを使ってみることにします。 ですが、2016年12月17日現在のpkgsrc/graphics/darktableは、 NetBSD/amd64 7.99.51では、darktableのソースコードに誤りがあるために ビルドできません。 この記事を書き終えましたら、最新版(2.2.0rc3)にアップデートしておきますので、 そちらをお試しください。 インストールは以下の通りです。 $ cd /usr/pkgsrc/graphics/darktable $ make install 上述したウェブページにあるRAW形式の画像ファイルのうち、 PanasonicのディジタルカメラのRAW形式である拡張子がrw2であるファイルは、 darktableでは扱えない機種のディジタルカメラの生成したもののようです。 Panasonic DMC-GM1Sという機種のようです。 ホワイトバランスが読み込めないとのエラーでdarktableの機能は試せませんでした。 上述したウェブページには一つだけ、Canon性のディジタルカメラで撮った 拡張子がcr2のものがあります。これについては、無事に現像できました。 UFRawを使ってみる 他にもRAW形式の画像ファイルを扱うものと言うと、UFRawが思い付きます。 pkgsrcでは、pkgsrc/graphics/gimp-ufrawから使用することが できます。gimp-u…

NetBSDでMTPデバイスをマウントしてみる

この記事は、NetBSD Advent Calendar 2016の13日目の記事です。 はじめに6日目の記事で、 gphoto2を使って、NetBSDからMTPデバイスの中身を普通のディスクにコピーしてくることは できるようになりました。 しかし、やはりmtools的な操作では使い勝手が良くありません。 動作確認のとれたgphotos2を使ったFUSEモジュールであるpkgsrc/filesystems/fuse-gphotosを試してみました。 fuse-gphotofsのインストール gphotofsは、既にpkgsrcに取り込まれていました。 ですので、以下のように簡単にインストールすることができます。 $ cd /usr/pkgsrc/filesystems/fuse=gphotofs $ make install $ make clean-depends clean 準備はできました。 マウントしてみよう NetBSD/amd64 7.99.51では、特にエラーもなく pkgsrc/filesystems/fuse-gphotofsはインストールできました。 実際にマウントしてみます。 6日目の記事の反省を踏まえ、Xperia Z Ultraはロック状態ではない状態に しておきます。 /usr/pkg/share/doc/fuse-gphotofs/READMEによると、 マウントは以下のように実行すれば良いようです。 # gphotofs /mnt/usbssd 複数のMTPデバイスをつないでいる場合が不安になりますが、 今は1つしかデバイスがないので試せていません。 無事にマウントできると以下のようになります。 $ mount $ mount (snip) /dev/puffs on /mnt/usbssd type puffs|refuse:gphotofs (nodev, nosuid) 写真をImageMagickのdisplayコマンドで表示してみます。 $ ll /mnt/usbssd/store_00010001/DCIM/100ANDRO/DSC_0001.JPG -rw-r--r-- 1 root wheel 1576203 Oct 27 06:15 /mnt/usbssd/store_00010001/DC…

NetBSDの新しいOSSを使ってみる

この記事は、NetBSD Advent Calendar 2016の9日目の記事です。 どうも忙しくていけません…。 はじめに pkgsrc/www/firefoxは先日までpkgsrc/audio/pulseaudioに依存していましたが、 それはOSS (Open Sound System)サポートでは、一つのプログラムが オーディオデバイスを占有してしまい、複数のプログラムからオーディオ出力 できないためでした。 (今は、pkgsrc-currentのpkgsrc/www/firefoxは、pkgsrc/audio/alsa-lib経由で OSSとpulseaudioを選べるようになっています。) 最近の nat@のオーディオサブシステムの変更によって、一つのプログラムが オーディオデバイスを占有することはなくなったようですので、試してみました。 カーネルをビルドする NetBSD/amd64-currentで試してみようと思います。 そのためには、カーネルのソースツリーを最新にして、ビルドし直す必要があります。 NetBSD-currentを追い掛けている方には、当たり前の内容ですが、 簡単に書いておきます。 詳細は、Tracking NetBSD-current を参照してください。 カーネルモジュールだけ作っても良いのですが、ここではユーザーランド全体を更新してしまいます。 $ cd /usr/src $ cvs update -dP $ ./build.sh -U -O /usr/world/7.99/amd64/obj -T /usr/world/7.99/amd64/tools -D /usr/world/7.99/amd64/destdir -u -j4 tools $ ./build.sh -U -O /usr/world/7.99/amd64/obj -T /usr/world/7.99/amd64/tools -D /usr/world/7.99/amd64/destdir -u -j4 kernel=GENERIC $ ./build.sh -U -O /usr/world/7.99/amd64/obj -T /usr/world/7.99/amd64/tools -D /usr/world/7.99/amd64/destdir…

NetBSDでAndroidスマートフォンのBluetoothテザリングを利用する

この記事は、NetBSD Advent Calendar 2016の7日目の記事です。 現実に戻って来るのが遅くなったので、日付を大幅に越えてしまいました…。
はじめに Andoridなスマートフォンには、Bluetoothテザリングと言う機能があります。 私の使っているXperia Z Ultraでは、Wi-Fiで接続されている時に、 Bluetoothテザリングすると、Wi-FiからBluetoothへの変換器のように 動作します。 これを、NetBSDからやってみます。
Bluetooth PAN 前述したBluetoothでのテザリングは、Androidなスマートフォンが NAP (Network Access Point)として動作していると言うことになります。
NetBSDで、Bluetooth PANを扱う際に必要なのは、btpand(8): Bluetooth PAN daemonです。 基本的には、btpand(8)のマニュアルページに書かれているようにやれば良いはずです。
まず、Bluetooth PANで使うネットワークインターフェイスを用意します。 仮想Ethernetデバイスであるtap(4)を使います。 自分の使っているカーネルがtap(4)を有効にしているかカーネル設定ファイルで 確認しておきましょう。 おそらく多くの人が使っているであろうGENERICカーネルには、 標準で含まれています。
pseudo-device tap がカーネル設定ファイルに含まれていれば大丈夫です。 続いて、tap0ネットワークインターフェイスは、btpand(8)が自動的に 作成してくれますので、心配いりません。
Bluetoothデバイスを用意しておく必要もあります。 普通のラップトップには、Bluetoothレシーバーが 内蔵されているのではないかと思うのですが、 私の使っている東芝dynabook R63/PSには、ACPIの先につながっているようで、 NetBSD/amd64 7.99.43からは使えません。 ですので、今回は、プラネックスコミュニケーションズのBT-Micro3E1Xという USB接続のBluetooth 3.0+EDRなレシーバーを接続してみます。 以下のように認識されます。
ubt0 at uhub0 por…

NetBSDからMTPデバイスを使う

この記事は、NetBSD Advent Calendar 2016の6日目の記事です。 はじめに AndroidなスマートフォンはMTP (Media Transfer Protocol) で 内蔵ストレージや挿し込まれたmicroSDカード等の中身をPCから見ることができます。 私の使っているXperia Z Ultraで言うと、どうやら内蔵ストレージは MTPでしか見ることができないようです。 と言うことで、NetBSDな常用ラップトップから、Xperia X Ultraの内蔵ストレージと microSDカードの中身を扱う方法を書いてみます。 libmtpを使う 一番簡単なのは、昔のMS-DOSのFAT領域を扱うmtoolsのような仕組みを使う方法です。 このようなツールは、一つは、pkgsrc/devel/libmtpで提供されています。 Xperia Z UltraをMTPモードに設定して、NetBSD/amd64なラップトップに接続してみます。 カーネル的にはデバイスドライバーはありませんので、ugen(4)として認識されます。 ugen0 at uhub0 port 5 ugen0: Sony C6833, rev 2.00/2.32, addr 11 libmtpをインストールして、Xperia Z Ultraが認識されるか試してみます。 $ cd /usr/pkgsrc/devel/libmtp $ make install $ mtp-detect libmtp version: 1.1.12 Listing raw device(s) Device 0 (VID=0fce and PID=019c) is a SONY Xperia Z Ultra MTP (ID3). Found 1 device(s): SONY: Xperia Z Ultra MTP (ID3) (0fce:019c) @ bus 0, dev 16 Attempting to connect device(s) Android device detected, assigning default bug flags Error 1: Get Storage information failed. USB low-level info: I…

Chromium browserをNetBSDで使う計画の経過報告

Image
日付が変わってしまいましたが、NetBSD Advent Calendar2016の2日目の記事です。 はじめに Chromium browserは、Google Chromeのopen source版のような位置付けのウェブブラウザーです。 WebkitのforkであるBlinkというレンダリングエンジンを搭載しており、私の愛用しているFirefoxよりも軽快に動作すると言う話です。 これまでの経緯 Chromium browserについては、2016年7月頃にバージョン51をNetBSD/amd64 currentで動かそうと試みていました。 しかし、以下の理由で積極的には使用できない状態でした。 PR kern/49691に該当してしまい、頻繁にkernel panicを引き起こしてしまう。Googleアカウントによるサインインができず、ブックマークの同期等ができない。 しかし、2016年11月8日にchristos@がhttp://mail-index.netbsd.org/source-changes/2016/11/08/msg078942.htmlでPR kern/49691で提案されていた修正をコミットしたので、安心してChromiumを試すことができるようになりました。 今回の取り組み Chromium 51は、FreeBSD Portsのパッチをベースに、NetBSD向けに修正して行く形で進めました。 今回も、Chromium 54に対するFreeBSD向けのパッチをベースにしました。 ですが、公式なFreeBSD Portsのツリーには収録されていませんでしたので、https://github.com/gliaskos/freebsd-chromiumにあるパッチをベースにしました。 ですがこのパッチは、*BSD向けとしてFreeBSDのみに該当するような内容を含めている箇所が数多くありました。 NetBSDとFreeBSDは、同じと考えられない部分も多いですので、ここでされているような対処は行き過ぎだと考えています。 ですので、NetBSDで動かす際には、なるべくFreeBSDでも動くと考えられるようにしつつ、NetBSDに対応するように変更しました。 最終的には、FreeBSDの環境でも試すべきですが、そこまではできていません。 …