Posts

Showing posts from 2017

2017年の25日間のまとめ

この記事は、 NetBSD Advent Calendat 2017 の25日目の記事です。 もうすっかり遅くなりましたが、勝手にまとめを書きます。 まとめ 自分の書いた記事は、とりあえず置いておいて、 簡単に振り返っておきたいと思います。 1日目は、furandon_pigさんの記事です。 /usr/share/examples/asmディレクトリー内にアセンブリ言語での Hello, World!を皮切りに、各アーキテクチャー向けの アセンブリプログラミングについて紹介していただきました。 2日目もfurandon_pigさんの記事です。 キングジムPomera DM20の内部ストレージをsd(4)として見てみる話を紹介して いただきました。 3日目は、ebijunさんの記事です。 Open Source Conferenceに1年間を通じて参加するのに合わせて、 Raspberry Pi向けのSDカードイメージファイルを作成され、 動作確認をされた話をご紹介いただきました。 7日目は、furandon_pigさんの記事です。 NetBSDでのnilfsというログ構造化ファイルのサポートについて ご紹介いただきました。 14日目は、jr9qnjさんの記事です。 Raspberry PiSCSIデバイスにするRaSCSIについて、 X68000の実機に接続し、NetBSD/x68kで使えるように された功績をご紹介いただきました。 ぜひNetBSD-currentに入れて欲しいです。 16日目は、nullnilakiさんの記事です。 bintime_add(9)をコメントアウトするところから始め、 カーネル内のタイマーについてご紹介いただきました。 19日目は、tisiharaさんの記事です。 pkg_rolling-replaceを使って便利にpkgsrcからインストールした パッケージをアップデートする方法をご紹介いただきました。 20日目は、610tさんの記事です。 SUNXIカーネルを、NanoPi NEO2で動かすと、現状どのようになるかを ご紹介いただきました。 早く本格的にNanoPi NEO2がサポートされると嬉しいですね。 21日目は、oshimyjaさんの記事です。 NetBSD/amd64でのUEFIブートについてご紹介…

2018年に実現して欲しいことを夢想してみる

この記事は、NetBSD Advent Calendar 2017の23日目の記事です。 代わりに投稿できるようになっているので、勝手に投稿してしまいます。 すみません。 間に合っていませんが… 2018年に実現して欲しいこと 一ユーザーとして、あったらうれしいものを挙げておきます。 NetBSDAmazon Web Service EC2のElastic Network Adaptorのサポート (FreeBSDで言うena(4))Microsoft Hyper-Vサポート (第1世代の仮想マシン、第2世代の仮想マシン)UEFIでの光学ディスクからの起動ができるようにもっと多くのArmのボードでfdt(4))対応が進むことMicroBlazeやNios2、RISC-VのようなFPGAに実装されるCPUへの移植qemuのエミュレートする各種ボードへの移植UEFIでのブートがもっと多くのマシンでできるように(少なくとも私の常用するdynabook R63/PSは駄目なので…)VMware Workstation Playerの共有フォルダーをマウントできるようにVirtualBoxの共有フォルダーをマウントできるようにcramfsをマウントできるようにfdt(4)をMIPSにもNFS 4/4.1対応ugen(4)が常に使えるようにevdevの追加VirtualBoxをNetBSD上で動かせるようにアイソクロナス転送をehci/xhciで可能にする 私はカーネルのこととかは分かりませんが、来年は良く勉強して上述の うち1つでも自分でできればと思ってはいます。 pkgsrcGNU Hurdへの移植ia16クロスツールチェーンのパッケージの作成The pkgsrc guideのEPUB3版を用意するpkg-vulnerabilitiesの効率的な作成を補助するツールを作成するopenSUSE 42.3ベースのcompat_linux用パッケージを作成するRump kernelの活用ができないかRust for earmChromiumウェブブラウザーの移植mingw64に移植Widevine CDMをwww/firefoxで使えるようにするinput/fcitxのアップデートとmozcを使えるように どこまでできるか分かりませんが、進めていきたいと思います。

Cubieboard2でpkgsrcの開発をする際に気を付けていること

この記事は、NetBSD Advent Calendar 2017の24日目の記事です。 代わりに投稿できるようになっているので、勝手に投稿してしまいます。 もう25日ですし。 はじめに ArmアーキテクチャーのNetBSD用のパッケージをpkgsrcで作ることが あります。 大抵のArmのCPUの載ったボードは、SDカードやmicroSDカードを ルートファイルシステムにしています。 SDカード等には、ウェアレベリングの機能などありませんから、 何かを長時間ビルドすると、書き込み回数が多くて、壊れてしまいます。 今回は、いつもビルドに使っているCubieborad2の場合に、この問題に 対処すべくやっていることを書いておきます。 スワップ領域の問題 スワップ領域は、ダウンロードして来たarmv7.imgにも設定 されていますが、非常に小さく役に立ちません。 Cubieboard2ですと、SATAの端子があって、SATAのSSDやHDDを接続できますので、 そちらのファイルシステム内に、スワップ領域を作っておきます。 # dd if=/dev/zero of=/home/ryoon/swapfile bs=1m count=4096 # chmod 600 /home/ryoon/swapfile # swapctl -a -p 0 /home/ryoon/swapfile その上で、従来のmicroSDカード上のスワップを無効にし、 これを常に使うようにしてしまいます。/etc/fstab以下のように 置き換えます。 /home/ryoon/swapfile none swap sw 0 0 一時ファイルの置き場所をSSD/HDDにする これは、TMP環境変数を定義し直すのでも良いのかもしれませんが、 /tmpにSSD/HDDのパーティションの1つを割り当ててしまいます。 以下のように/etc/fstabを変更します。 /dev/wd0e sw,log 1 1 その上で、マシンをリブートさせます。 mount -aで良いように思われるかもしれませんが、 既にディレクトリーやUNIXドメインソケット等が作成されているかもしれませんので、 再起動をお勧めします。 まとめ 簡単ですが、pkgsrcの開発をする際に、SDカード等を破損させないために 私がし…

NetBSDマシンをソフトウェアトークンとして使いqiitaに二段階認証でログインできるようにする

この記事は、NetBSD Advent Calendar 2017の12日目の記事です。 すっかり遅くなっていますが、代わりに投稿できるようになっていたので、 勝手に投稿してしまいます。 あまりNetBSDにもpkgsrcにも直接関係ないような気もしますが…。 はじめに Two Factor Authenticationは、二段階認証と日本語訳されているようです。 qiitaでも、この二段階認証を使ってログインできるようになっています。 普通は、Google Authenticatorのようなスマートフォンで使用できる ソフトウェアを使って、二段階認証のワンタイムパスワードを 生成すると思います。 しかし、pkgsrcにもsecurity/2faと言う パッケージで、コマンドラインのプログラムが用意されています。 これは、https://github.com/rsc/2fa で公開されているものをパッケージにしたものです。 Go言語で書かれています。 これを使ってqiitaにログインしてみました。 2faコマンドのインストール Goコンパイラーが動くアーキテクチャーである必要があります。 私はNetBSD/amd64を使っているので、無事にビルドできました。 以下のように操作します。 $ cd /usr/pkgsrc/security/2fa $ make install これで/usr/pkg/bin/2faというコマンドがインストールされました。 二段階認証を設定する 二段階認証の設定ページより、QRコードの代わりに、テキストでキーを表示させます、 ここでは、abc123と表示されたと仮定します。 $ 2fa -add qiita 2fa key for qiita: abc123 これで、準備は整いました。 初回のワンタイムパスワードを生成してみます。 ここで、qiitaは時間ベースのワンタイムパスワード(TOTP)を受け付けて くれるようです。 $ 2fa qiita 123456 これで、123456と言うワンタイムパスワードが得られました。 これを、qiitaのページに入力します。 二段階認証でログインする 一度ログアウトして、二段階認証を使ってログインしてみます。 ユーザーIDとパスワードを入力した後、ワンタイムパスワードが求められる…

NanoPi NEOでNetBSDを使ってみる

Image
この記事は、NetBSD Advent Calendar 2017の11日目の記事です。 すっかり遅くなっていますが、代わりに投稿できるようになっていたので、 勝手に投稿してしまいます。 とは言っても、小ネタですが…。 はじめにオープンソースカンファレンス2017 Chibaに行った際に、えびはらさんに、 NanoPi NEOを紹介いただきました。 Allwinner H3と言うsun8iアーキテクチャーのArm Cortex-A7の4コアのCPUと、 512MBのメインメモリーを搭載しています。 ビデオ出力はありません。シリアルコンソールでの接続になります。 また、Gigabit EthernetとUSB 2.0のポートを1つずつ持っています。 私は、秋月電子通商 のウェブサイトで購入しました。 microSDカードを準備する lNetBSD/evbearmv7hf-elのSUNXIカーネルが使用できます。 NetBSD/evbarm on Allwinner Technology SoCsにある通りですが、 まずはhttp://nycdn.netbsd.org/pub/NetBSD-daily/HEAD/から、 evbarm-earmv7hf/binary/gzimg/armv7.img.gzをダウンロードします。 次に、これを2GB以上のmicroSDカードに書き込みます。 以下のように実行します。 # gzcat armv7.img.gz | dd of=/dev/ld0d bs=1m AllwinnerのSoCを搭載したマシンで起動させるには、u-bootを使用する必要 があります。 以下のようにして、u-bootのバイナリーを作成します。 $ cd /usr/pkgsrc/sysutils/u-boot-nanopi-neo $ make install これで、/usr/pkg/share/u-boot/nanopi-neo/u-boot-sunxi-with-spl.bin にu-bootのバイナリーが作成できました。 このu-bootバイナリーをmicroSDカードに書き込みます。 以下のように操作します。 # dd if=/usr/pkg/share/u-boot/nanopi-neo/u-boot-sunxi-with-s…

pkgsrcでRELROを有効にしてビルドしてみる

この記事は、NetBSD Advent Calendar 2017のすっかり遅くなった18日目の記事です。 はじめに pkgsrcはmk.confファイルに設定しておくことで、 挙動を変更することができます。 その中に、以前より試してみたかったオプションが3つあります。 PKGSRC_USE_RELROPKGSRC_MKPIEPKGSRC_MKREPRO の3つです。 その中でも、PKGSRC_MKREPROに一番興味があったのですが、 どうやら今は循環依存になってしまい、リーフパッケージでないと ビルドできない状態のようです。 今回は、PKGSRC_USE_RELROを有効にして、自分のいつも使っている パッケージをビルドして使ってみました。 RELROとは何か RELROは、RElocation Read-Onlyの略だそうです。 私はセキュリティー機能の専門家ではないので、詳しく説明はできませんが、 メモリーの一部の領域を読み出し専用にして、メモリーの破壊を防止する ことで、安全性を高める手法と理解しています。 設定方法mk.confに設定できる内容は、pkgsrc/mk/defaults/mk.conf に既定値が設定されており、コメントも付記されています。 RELROについては、以下のように記載されています。 PKGSRC_USE_RELRO?= no # Link with RELRO by default (on supported platforms). This makes the # exploitation of some security vulnerabilities more difficult in some cases. # Possible values: # no: Do not pass any flags for RELRO # partial: Pass -Wl,-z,relro # full: Pass -Wl,-z,relro -Wl,-z,now # # Keywords: relro のように記載されています。この内容は、任意のパッケージのディレクトリーで 以下のように実行することで読むこともできます。 $ make help topic=relro …

Hyper-V第1世代の仮想マシンでレガシーネットワークアダプターが使えるようになった

この記事は、NetBSD Advent Calendar 2017のすっかり遅くなった17日目の記事です。 はじめにPR kern/49323という2014年10月に send-prして何もできないままになっていた、Hyper-V第1世代の仮想マシンで レガシーネットワークアダプターが使えない問題が、2017年11月にnakayama@さん によって修正されました。 これによって、100 Mbpsではありますが、支障なくネットワーク接続できるように なったので、私は大変喜んでいます。 nakayama@さんありがとうございます。 Hyper-VとBSD 私は大変喜んではいるのですが、Hyper-Vのサポートについては、 FreeBSDやOpenBSDでは既に準仮想化デバイスも含め、 順調にサポートが進んでいるようです。 私も仕事でHyper-Vを使わないといけない場合には、 FreeBSD/amd64を使っています。 でも、Hyper-V第2世代仮想マシンは、FreeBSD/amd64 11.1のISOイメージを 起動させることはできませんでした。 NetBSDと言うと、Google Summer of Codeで課題になったことはあったようですが、 進まなかったのか、結果がsrcツリーにcommitされてはいません。 いつものように、世界で自分しか困っていないパターンなのかもしれません…。 Hyper-V仮想マシンの様子 Hyper-V第1世代の仮想マシンを用意し、ネットワークアダプターを削除して、 レガシーネットワークアダプターを追加するだけです。 acpicpu0の後で、fd0を初期化する辺りで なかなか進まず、気分的にあきらめそうになりますが、 我慢して待ては進みます。 カーネルのブートメッセージは以下のようになります。 Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 The NetBSD Foundation, Inc. All rights reserved. Copyright (c…

NetBSDでWacom Intuos 2ペンタブレットを使う

この記事は、NetBSD Advent Calendar 2017のすっかり遅くなった15日目の記事です。 はじめに Wacom Intuos 2 A4 XD-0912-Uと言うペンタブレットを入手した。 残念ながら絵心はないのだが、NetBSDで使えないのはもったいないので、 使えるようにしてみた。 XD-0912-Uは、A4サイズのペンタブレットで、ペンは傾きも検出できるもので、 売られていた当時は、旗艦モデルだったような気がする。 ただし、今はWindows 7までしか対応しておらず、Windows 10では使用できないので Windowsでは使用は難しいかもしれない。 NetBSDのペンタブレットサポートを考える ペンタブレットは、マウスとは違い、絶対的な位置情報を発信する必要がある。 NetBSDの既存の仕組みを見てみると、絶対的な位置情報を扱うものとして、 uts(4)というUSB接続タッチパネルの仕組みがあるが、 ペンタブレットをフル活用するには、筆圧、ペンの傾きをサポートする必要がある。 wsmouse(4)の仕組みも、筆圧やペンの傾きの情報を扱えるようには 設計されていないようだ。 と言うことで、uhid(4)を使っている既存の仕組みを改造してサポートする のが現実的だ。 デバイスの初期化はNetBSDカーネルで行い、 OpenBSD用のX windows systemであるXenocaraに含まれている xf86-input-usbtabletを改造して、 対応することにした。 NetBSDカーネルでの初期化 初期化は、基本的には既存のWacom製のペンタブレットと同じで、インターフェイスに 0x0202というデータを送ることで初期化できる。 Wacom Intuos 2は、0x0202による初期化をしないと、相対的な位置情報を USBマウスのように発信してくる。 USBマウスとして動かなくなったら正しく初期化できたと分かる。 uhid(4)の出力を解析する LinuxのWacom用のデバイスドライバーに関連する資料などを 見ながら、実際にペンを動かして確認してみることにする。 $ cat /dev/uhid0 | od -x のように実行した上で、ペンタブレット上でペンを動かして出力される データを確認して行く。 ですが、結局はデー…

NetBSD/evbearmでfdt(4)対応した環境を試してみる

この記事は、NetBSD Advent Calendar 2017のすっかり遅くなった13日目の記事です。 はじめに 最近、NetBSD/armでは、fdt(4)に対応するのが進んでいる。 fdtとはFlattened Device Treeの略で、dtbファイルを用意しておけば、 各機種ごとにカーネルを用意しなくても、NetBSD/i386やNetBSD/amd64における GENERICカーネルのようなものを用意できるもののようだ。 fdt(4)に対応すると、カーネルのブートメッセージがどのように変化するか 自分で確認しておきたかったので、今回試してみた。 今回使用した機種は、Cubieboard2というAllwinner A20というSoCを搭載した ものです。これはsun7iという名前で呼ばれているアーキテクチャーである。 これは、SATAでHDDやSSDを接続できるため、pkgsrc/www/firefoxをビルド するのに使用していた。 今は、pkgsrc/lang/rustがNetBSD/armではビルドできないので お休み中である、 fdt(4)に対応する前のCUBIEBOARDカーネルのカーネルのブートメッセージは、 えびはらさんが https://github.com/ebijun/NetBSD/blob/master/allwinner/dmesgに 掲載してくれている。 どのカーネルを使用すれば良いか GENERICカーネル的なものを作成できると書いたが、 現状ではAllwinnerのsun?iアーキテクチャーのSoCを使った機種は、 SUNXIカーネルを使うことになっているようだ。 ディスクイメージファイルを生成する Cubieboard2に対しては、NetBSD/evbearmv7hf-elが リトルエンディアンでは最適なアーキテクチャーだと考えられる。 NetBSD-currentのソースコードが/usr/srcに、 X window systemのソースコードが/usr/xsrcに それぞれ配置されているとすると、 以下のようにして、ディスクイメージファイルの生成まで一括して 実行することができる。 $ cd /usr/src $ ./build.sh -U -O /usr/world/8.99/evbearmv7hf…

Slack代替のMattermostをNetBSD/amd64で使う(セットアップ編)

NetBSD Advent Calendar 2017の10日目の記事です。 はじめに 前回は、Slack代替のチャットプラットフォームである Mattermostの配布用アーカイブファイルを作成するところまでを説明した。 今回は、その配布用アーカイブファイルを使って、インストールし、 日本語のメッセージを全文検索できるようにするまでを説明する。 データベースサーバーの選択とインストール Mattermostは、MySQLとPostgreSQLをバックエンドのデータベースサーバーとして 選択することができる。 しかし、日本語の全文検索が簡単にできるようになるのは、MySQL 5.7を使用 した場合のみである。 MySQL 5.7で新たに搭載された ngram full-text parserを使用するのである。 pkgsrcでは、MySQL 5.7.20を簡単に導入することができる。 以下のように実行すれば良い。 # cd /usr/pkgsrc/databases/mysql57-server # make install # cp /usr/pkg/share/examples/rc.d/mysqld /etc/rc.d # echo "mysqld=YES" >> /etc/rc.conf MySQL 5.7の下準備 MySQL 5.7では、データベースサーバーの初回起動時に、一時パスワードを 提示されるようになっている。 # vi /usr/pkg/etc/my.cnf [mysqld] ngram_token_size=2 # /etc/rc.d/mysqld start Initializing MySQL database system tables. 2017-12-09T05:44:23.256256Z 0 [Warning] Changed limits: max_open_files: 3404 (requested 5000) 2017-12-09T05:44:23.258372Z 0 [Warning] Changed limits: table_open_cache: 1621 (requested 2000) 2017-12-09T05:44:23.260654Z 0 [Warning] …

Slack代替のMattermostをNetBSD/amd64で使う(ビルド編)

NetBSD Advent Calendar 2017の9日目の記事です。 はじめにMattermostと言う チャットプラットフォームがある。これのCommunity Editionは LDAP認証機能がないなどちょっと使いにくい部分はあるのだが、 Linuxでは良い感じに動くのを確認していた。 日本語ユーザーインターフェイスもベータ扱いではあるが、 ほぼ翻訳できていると思う。 Mattermostは、サーバーはGo言語で書かれており、 ビルドにはnode.jsも必要となる。 どちらもGo 1.8以降、node.js 8以降が必要で、 例えばDebian GNU/Linux 9で動かそうとすると、 標準のパッケージマネジメントシステムに収録されている Goとnode.jsはこれよりずっと古いので、ディストリビューションのリポジトリー 以外から新しいバージョンをインストールしなくてはいけない。 その点、pkgsrcであれば、Goは新しいし、node,jsも新しいものを選べる。 また、Mattermostの開発環境には、dockerが必要なように思われるかもしれないが、 別になくてもちゃんと動かすことができる。 以下では、NetBSD/amd64 current上でMattermostのサーバーと ウェブアプリケーションをビルドするまでを紹介する。 実際に動かすまでは、次回に紹介したい。 ビルドに必要なツールを用意する サーバーはGo言語で書かれているため、 pkgsrc/lang/goを インストールする。 以下のように操作すれば良い。 # cd /usr/pkgsrc/lang/go # make install この記事を書いている時点では、go-1.9.2というパッケージがインストールされる。 ウェブアプリケーションは、node.jsでビルドするため、以下のように最新のnode.jsを インストールしておく。 # cd /usr/pkgsrc/lang/nodejs # make install この記事を書いている時点では、nodejs-9.2.0nb1というパッケージがインストールされる。 ウェブアプリケーションのビルドの途中で、node.jsのmozjpegモジュールを インストールすることになる。 このモジュールは、Linuxであ…

NetBSD/amd64 8.0_BETAをConoHa VPSにインストールする

Image
NetBSD Advent Calendar 2017の8日目の記事です。 はじめに 2015年5月17日以前にConoHaにアカウントを作っていたので、 新しくなったConoHaのVPSを試していなかった。 NetBSDに関しては、NetBSD/amd64 7.1のテンプレートが用意されているようだ。 しかし、NetBSD 8.0_BETAが試せるので、NetBSD/amd64 8.0_BETAを インストールしたいと言うのが人情だと思う。 ConoHa VPSではOpenStackをインフラストラクチャーとして使用しているとのことで、 OpenStack APIを使用することができる。 こう書くと便利なようだが、OpenStack APIを使わないとISOイメージの持ち込みも できないので、逆に不便な気もする。 多数の仮想マシンを展開する場合には、何でもAPIで実行できるのは意味が あると思うのだが、今回はAPIが必要でないものにはAPIを使用しないようにする。 手順を想定する 仮想マシンでないハードウェアにインストールする場合と変わることはないと 思うが、以下のような順序でインストールすることにする。 ISOイメージを用意するISOイメージをマウントするISOイメージから起動させるインストールするシャットダウンするISOイメージをアンマウントする起動させるOpenStack APIを調べてみる それぞれのステップに必要なAPIや操作を調べてみる。 ISOイメージを用意する ISOイメージダウンロードが使用できる。 http等で拡張子.isoのISOイメージファイルのみダウンロードできるとのこと。 ISOイメージをマウントする ISOイメージの挿入(mount) が使用できる。 仮想マシンが停止中のみマウント可能であるとのこと。 ISOイメージから起動させる 仮想マシンの起動は、コントロールパネルのウェブページから可能である。 APIでもできるだろうが、ウェブページからできるので、APIは使用しない。 インストールする インストールは、APIの関係するものではないので、APIは使用しない。 シャットダウンする 仮想マシンのシャットダウンは、NetBSDでshutdown -p nowを 実行すれば良いはずなので、APIは使用しない。 ISOイメージをアン…

安価なPostScriptレーザープリンターLexmark MS312dnをNetBSDから使う(lpd(8)編)

NetBSD Advent Calendar 2017の6日目の記事です。 はじめに 最近は安価にレーザープリンターを購入できるが、さすがにPostScriptレーザープリンターは、なかなか安くは購入できない。 NTT-X Storeで安価にPostScript白黒レーザープリンターであるLexmark MS312dnが8,800円(税込)で購入できた。 ちなみに、これを書いている時点で在庫は残り3台である。 NetBSDからこのレーザープリンターを使ってみた。 lpd(8)を使った場合について書く。 いずれCUPSを使った場合について書きたい。 lpd(8)とlp(1)の使い方 NetBSDに限らず、lpd(8)lp(1)を使う話になってしまうかもしれない。 lpd(8)で印刷する対象として登録する lpd(8)の設定ファイルは、 printcap(5)であり、 編集すべきファイルは、/etc/printcapである。 Lexmark社のウェブサイトから、Lexmark-ADS-PPD-Files.tar.Zをダウンロードし、 展開した内容のうち、 Lexmark_MS310_Series.ppdを、 /opt/share/print/Lexmark_MS310_Series.ppdのように配置しておく。 その上で、/etc/printcapに、以下のように追加する。 lp|lmprinter:\ :lp=:sh:sd=/var/spool/lpd/lp:\ :rm=lmprinter:\ :lf=/var/log/lpd-errs:mx#0:\ :af=/opt/share/print/Lexmark_MS310_Series.ppd: ここで、lmprinterはネットワーク接続されたLexmark MS312dnのホスト名である。 我が家では、 pkgsrc/net/isc-dhcpd4 とNetBSD/amd64 7のbaseに収録されているbindで dynamic DNSを設定しているのだが、Lexmark MS312dnにはうまくホスト名を割り当て できなかった。 そのため、固定でIPv4のアドレスを割り当ててある。 lpd(8)を起動する lpd(8)をデーモンとして…

NetBSD/i386用のRust言語のブートストラップキットを作成する

NetBSD Advent Calendar 2017の5日目の記事です。 はじめに 新しいMozilla Firefoxのビルドには、Rustプログラミング言語のコンパイラーであるrustcと、パッケージ管理プログラムのcargoが必要となっている。 jakllschさんがNetBSD/amd64には移植してくれているので、RustのアップストリームがNetBSD/amd64 7向けのブートストラップキットはビルドしてくれている。 だが、NetBSD/i386 7向けがないと、Mozilla FirefoxをNetBSD/i386でビルドできない。 私はhttps://deuterium.ryoon.net/pub/rust/でnetBSD/i386 7用のブートストラップキット を公開しているが、信頼できるか分からない人の作ったコンパイラーなど使うべきではない。 ここにブートストラップキットの作り方を書いておくので、自分のためのブートストラップキットを作って使って欲しい。 # RustのアップストリームにどうやってNetBSD/i386用をビルドしてもらうように交渉すれば良いのか…。 NetBSD/amd64の環境を用意する NetBSD/amd64 7.0以降の環境を用意する。Rustのアップストリームのビルドしているブートストラップキットが動けばNetBSD/amd64のバージョンは問わない。 ここでは、NetBSD/amd64 7.1の環境があったので、それを使用することにした。 ところで、原理的にはNetBSD/amd64である必要もない。 ある程度POSIX準拠なオペレーティングシステムで、Rustがサポートしブートストラップキットを提供しているアーキテクチャーであれば良い。 次に説明するNetBSD/i386のクロスツールチェインはそこでビルドできるはずである。 NetBSD/i386 7用のクロスツールチェインとユーザーランドをビルドする NetBSDはクロスツールチェインを簡単に生成でき、クロスコンパイルをする準備が簡単にできるのが良い所である。 まず、以下のように実行してクロスコンパイラーなどのツールチェインを作成する。 これは、NetBSD/i386のユーザーランドをビルドするのに使用するだけでなく、Rustブートストラップキットを…

bta2dpd(8)を使って、NetBSDでBluetoothヘッドフォンを使う

NetBSD Advent Calendar 2017の4日目の記事です。 English version is here.はじめに Bluetoothでオーディオを再生するには、以前はbtsco(4)しかなく、 ubt(4)でbtsco(4)を使おうとすると、USBアイソクロナス転送が必要で、 NetBSDのechi(4)やxhci(4)ではアイソクロナス転送はサポートされて いないので、btsco(4)ではBluetoothのオーディオデバイスでは オーディオの録音、再生ができなかった。 しばらく前に、bta2dpd(8)と言うのがnat@によってNetBSD-currentに追加された。 これがxhci(4)で使えるのかが、ずっと気になっていた。 やっと、Jabra MOVE Wireless で試してみた。 結果としては、ubt(4)につないだJabra MOVE Wirelessで再生できた。 Bluetoothの基本的な設定 ペアリングやプロファイルの選択は、btsco(4)の場合と同じであった。 以下のようにすれば良い。 まずは、Bluetooth接続に必要なデーモン等を起動しておく。 以下のように追加する。 # vi /etc/rc.conf bluetooth=YES # /etc/rc.d/bluetooth start configuring Bluetooth controllers: ubt0. starting Bluetooth Link Key/PIN Code manager starting Bluetooth Service Discovery server もし、継続的に使用しないのであれば、以下のようにしても良い。 # /etc/rc.d/bluetooth onestart configuring Bluetooth controllers: ubt0. starting Bluetooth Link Key/PIN Code manager starting Bluetooth Service Discovery server ワイヤレスヘッドフォンをペアリング待ちにした上で、以下のように実行し、 ワイヤレスヘッドフォンのアドレスを取得する。 $ btconfig ubt0 inquiry Device…

How to use bta2dpd(8) with Bluetooth headphone under NetBSD-current

Introduction When USB Bluetooth dongle (ubt(4)) is used, classic Bluetooth SCO Audio (btsco(4)) requires USB isochronous transfer and ehci(4) and xhci(4) of NetBSD-current does not support USB isochronous transfer mode, So I cannot use btsco(4) to play audio under NetBSD-current. Some time ago, bta2dpd(8) was imported to NetBSD-current by nat@. I had not tested bta2dpd(8) and I should test bta2dp(8) with Jabra MOVE Wireless. As a result, I can play audio with ubt(4) and Javra MOVE Wireless. Basic Bluetooth settings How to pairing and selecting profile is as same as btsco(4). Please perform the following steps. At first, run daemon/service for Bluetooth. Please perform the following steps. # vi /etc/rc.conf bluetooth=YES # /etc/rc.d/bluetooth start configuring Bluetooth controllers: ubt0. starting Bluetooth Link Key/PIN Code manager starting Bluetooth Service Discovery server If your Bluetooth connection is temporary, you can perform the following steps instead. # /etc/rc.d/blue…

Facebook Live用のビデオ配信アプライアンス

Facebookはほとんど使わないのだが、 最近はFacebook Liveというリアルタイムビデオ配信の仕組みがあるらしい。 eWeekの記事を見ていたら、 Wowza Launches Professional Streaming Appliance for Facebook Liveという記事が目についた。 Facebook Live専用のビデオ配信用アプライアンスWowza ClearCasterというのが発売されたとのこと。 ビデオ撮影する機器さえ持っていないので、自分が使うことはなさそうだが、技術的には気になる。

archive.orgでMIT Pressの昔の書籍を借りられるようになった

Free: You Can Now Read Classic Books by MIT Press on Archive.orgで知ったのだが、https://archive.org/details/mitpressで、MIT Pressの昔の書籍を借りて読むことができるようになっている。 archive.orgのアカウントで、14日間を期限に貸し出ししてもらえるもの(貸し出しできる最大数が決まっている)と、自由に閲覧できるものがあるようだ。 A FORTRAN Coloring Bookは、貸し出し制限はないようだ。 Landmarks in American civil engineeringは、最大5冊まで貸し出ししてもらえるようだ。 A FORTRAN Coloring Bookを読んでみたが、もちろん古いFORTRANの構文を説明している書籍なのだが、ほぼ全てイラストで解説されていておもしろい。これのCOBOL版があったら読みたい。FORTRANは、Fortran 77を使っていたことがあるので、あまり新しい発見がなかったので。 Landmarks in American civil engineeringは、アメリカの著名な土木構築物の写真を白黒ではあるが見ることができておもしろかった。

GCCの定義済みマクロを一覧する方法

pkgsrcの作業をしていると、そのアーキテクチャーでのCの定義済みマクロ(predefined macros)を一覧したい場合がある。 その方法をいつも検索して調べていたのだが、最近はいつも見ているウェブページではないウェブページがGoogleの検索結果の上位に来ていて、 本当にこれで良かったか不安になってしまうので、ここに書いておく。 http://mkosaki.blog46.fc2.com/blog-entry-232.htmlをいつも参照していていたはずである。 ここでは、 $ cpp -dM /dev/null と言うのが挙げられているが、私は以下のように読み替えている。 $ gcc -E -dM -xc /dev/null | less

Google Fuchsiaのカーネルの名称変更

Google Fuchsiaというオペレーティングシステムが開発中であるが、そのカーネルであるMagentaがZirconと名称変更されたようだ。 結構頻繁にコミットされているようなので、追い掛けてみたいが…

Ubuntu Linux 17.04でCaps LockキーをCtrlキーにする設定

Ubuntu 16.04 CapsLockをControlに置換する方法が、17.04にも当てはまった。 /etc/default/keyboardというファイルにある XKBOPTIONS=""のようになっている行を、 XKBOPTIONS="ctrl:nocaps"のように書き替えて再起動すれば良い。 少なくともNetBSDだと/etc/defaultsディレクトリーのファイルは 直接編集はせずに、 /etcディレクトリーの同じファイル名のファイルを編集して 設定を上書きするのだが、Ubuntu Linux 17.04ののkeyboard(5) man pageによると、 これは直接修正するもののようだ。 /etc/default/keyboardファイルは、コンソールとX Window Systemの 両方に効果を持つファイルとのことだが、 X Window Systemでだけ有効になれば良いのであれば、ログアウトしてログインし直せば良いようにも見える。

Microsoft Officeの32ビット版と64ビット版が共存できるか?

Microsoft Office 2010の32ビット版と64ビット版が同時にインストールできるかと言うと、同時にインストールすることはできないのだが、根拠がいつもどこにあったのか忘れてしまうので、ここに書いておく。 Compatibility Between the 32-bit and 64-bit Versions of Office 2010に、FAQの節があって、Can I install 64-bit and 32-bit versions of Microsoft Office side-by-side?という質問に対してNo.と回答されている。

Ubuntu Linux 17.04を使い始めた理由

Windowsマシンでないとできないと思っていたことのうち、 以下は、Ubuntu Linux 17.04とそれにデフォルトでインストールされている Firefox 55.0.2 (Mozilla Firefox for Ubuntu canonical-1.0)で可能であった。 Netflixのストリーミングビデオの視聴 Amazon.co.jp Prime Videoのストリーミングビデオの視聴 Adobe Flash Playerによる放送大学の学生向けストリーミングビデオ/ラジオの視聴 いつの間にかLinuxも便利になったものだ。

古くからのConoHa VPSユーザーなのだが

ConoHa VPSにアカウントを作ったのは、どうやら2013年7月21日だったらしい。 そして、2015年5月17日以前にアカウントを作った人は、ConoHaカードによるクーポンチャージを使用できないらしい。 この古いアカウントから新しいアカウントへの変換方法を探していたのだが、どうやらそういう経路はないっぽい。 なので、新しくアカウントを作るしかないようだ。古いアカウントだと古いタイプの仮想マシンしか作れないのだが、 さすがに今から新設したら迷惑だろう。 と言うか、ConoHaカードを使う必要があるので、新しいアカウントを作る以外の方法はないだろう。

DragonFly BSD 4.8.1のリリース

すっかり前になってしまったが、2017年8月2日にDragonFly BSD 4.8.1がリリースされていた。 まだ手元で動かしてはいないのだが、変更点のうち気になったものを書いておく。 http://lists.dragonflybsd.org/pipermail/commits/2017-August/626150.htmlの抜粋である。 i915向けのDRMKMSサポートが、Linux 4.7.10ベースになったカーネルにNXビットサポートが追加されたPTHREAD_STACK_MINの値が変更されたワールドとカーネルが確実にCロケールでビルドされるようになったFreeBSDからvirtio_scsi(4)デバイスドライバーが移植されたem(4)デバイスドライバーで、MSIがデフォルトで有効になった Linux 4.7.10ベースのDRMKMSサポートはうらやましい。

Debian Linux/amd64 9.1をUSBメモリーにインストールし、カスタマイズされたLinuxカーネルを使う

普段は、NetBSD/amd64-currentを使用しているのだが、WindowsかLinuxでしか動かないデバイスを使ってみたり、どういう挙動をしているのか確認する際には、Linuxを一時的に起動させたい。 その際には、printkをいくつも追加してビルドしたLinuxカーネルで起動させたい。 USBメモリーまたはUSB HDDにDebian Linuxをインストールする NetBSDだと、build.sh live-imageで、そのままgzcatとddコマンドで書き込めるXも含まれた環境のイメージファイルが作れるので、あるマシンで一時的にNetBSDを起動させようと言う場合には、非常に助かっている。 同じようにLinuxでもライブイメージを探してみたのだが、カーネルをISO 9660イメージの中に含めていて置き換えが難しいものしか見つからない。 確かにあっても、ルートディスクデバイスを決め打ちするので、あまり汎用性はないかもしれないが…。 Debian Linux/amd64 9.1を以下のような手順でインストールすれば、1台目のUSBメモリーやUSB HDDでどのマシンでも起動できるので、書いておく。 Debian Linux/amd64 9.1のライブイメージをダウンロードする(今回はXFCE版を使用した)ダウンロードしたイメージファイルをDVD-Rに書き込むDebian Linux/amd64 9.1をインストールしたいUSBメモリーやUSB HDDをマシンにつなぐ書き込んだDVD-RからDebian Graphical Installerを起動させる(USB接続のDVD-ROMドライブで良い)USBメモリーやUSB HDDにインストールするDVD-Rをドライブから抜き、あるいは、DVD-Rドライブを外して、USBメモリーまたはUSB HDDから起動させる USBメモリーにダウンロードしたイメージファイルをddコマンドで書き込んでインストールする方が速いし楽なのだが、そうすると、grub.cfgを後で手修正しないといけないので、DVD-Rにしておくのがお勧めである。 Linuxカーネルをビルドする Debian Linux 9.1では、linux-packageというパッケージはなくなっているようだが、それを使ったウェブページばかり検索されてくる…

NetBSDでwpa_supplicantを使ってWEPでWi-Fi接続する場合

NetBSDでWEPでWi-Fi接続する場合には、ifconfig(8)コマンドを使えば簡単なのだが、 wpa_supplicantを使っても接続してみたい。 まず、ifconfig(8)を使った場合を書いておく。run(4)なWi-Fiアダプターを使う場合である。 # ifconfig run0 ssid [SSID名] nwkey [パスフレーズ] # dhcpcd run0 同じことをwpa_supplicantを使って設定する場合を書いておく。 $ cat ~/wpa_supplicant.conf ctrl_interface=/var/run/wpa_supplicant ctrl_interface_group=wheel network={ ssid="[SSID名]" scan_ssid=1 key_mgmt=NONE # WEP wep_tx_keyidx=0 wep_key0="[パスフレーズ]" } # wpa_supplicant -d -i run0 -c ~/wpa_supplicant.conf # dhcpcd run0 今さらWEPもないはずなのだが、必要な時はあるので、書いておいた。