Posts

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…