セキュリティキャンプ 2017 ドキュメント file:///usr/local/Github/NetBSD/Guide/_build/singleh...

1. RaspberryPIでNetBSDを使ってみる

1.1. 特徴

NetBSDをRaspberryPIで利用するために、ディスクイメージを用意しました。 Xが動いて、ご家庭のテレビでmikutterが動きます。 うまく動いたら、動いた記念写真をツイートだ! fossil(http://www.fossil-scm.org/)も入れてあります。家庭内Webサーバとかチケットシステムとかwikiサーバになるんで ないかい。

1.2. 準備するもの

RaspberryPI本体 HDMI入力のあるテレビ/ディスプレイ USBキーボード USBマウス 有線ネットワーク

1.3. 起動ディスクの作成

ディスクイメージのダウンロード

earmv6hf # ftp http://cdn.netbsd.org/pub/NetBSD/misc/jun/raspberry-pi/ 2016-11-12-earmv6hf/2016-11-12--raspi-earmv6hf.img.gz

2GB以上のSDカードを準備します。 ダウンロードしたディスクイメージを、SDカード上で展開します。

disklabel sd0 ..... 必ずインストールするSDカードか確認してください。 gunzip < 2016-11-12-netbsd-raspi-earmv6hf.img.gz.gz|dd of=/dev/rsd0d bs=1m

1.4. Cubieboard2,BananaPI用イメージ

Cubieboard2,BananaPI用のイメージが、 http://cdn.netbsd.org/pub/NetBSD/misc/jun/allwinner/ 以下にありま す。 同じ手順で起動できます。

1.5. ODROID-C1用イメージ

ODROID-C1用のイメージが、 http://cdn.netbsd.org/pub/NetBSD/misc/jun/odroid_c1/ 以下にあります。 同じ手順 で起動できます。

1.6. RaspberryPIの起動

1. HDMIケーブル/USBキーボード/USBマウス/有線ネットワークをRPIにさします。 2. 電源を入れてRPIを起動します。 3. 少し待つと、HDMIからNetBSDの起動メッセージが表示されます。 4. メモリカードの容量にあわせたサイズまでルートパーティションを自動調整します。(現在、RPI2では自動調整プログラム の起動が失敗します) 5. 容量調整後に再起動します。再起動した後は、起動プロセスが最後まで進み、ログインできる状態になります。 6. 起動しない場合、まず基板上のLEDを確認してください。

赤いランプのみ点灯している場合 OSを正しく読み込めていません。 少なくともMSDOS領域に各種ファームウェアファイルが見えていることを確認する。 SDカードの接触不良の可能性があるので、SDカードを挿しなおしてみる。 ファームウェアが古いため起動しない 緑のランプも点灯している場合 OSは起動しているのに画面をHDMIに表示できていません。

1 / 48 2017/07/17 13:04 セキュリティキャンプ 2017 ドキュメント file:///usr/local/Github/NetBSD/Guide/_build/singleh...

HDMIケーブルを差した状態で電源ケーブルを抜き差しして、HDMIディスプレイに何か表示するか確認する。 HDMIケーブル自体の接触不良。ケーブルを何度か差し直してください。 電源アダプタ容量には、少なくとも800mA程度の容量を持つアダプタを使ってみてください。スマートフォン用のア ダプタならまず大丈夫です。起動途中で画面が一瞬消えたり、負荷をかけるといきなり再起動したりする場合は、電 源やUSBケーブルを気にしてみてください。

1.7. ログイン

rootでログインできます。rootアカウントではリモートからログインすることはできません。

login: root

startxでicewmが立ち上がります。

# startx

1.8. mikutterを使ってみよう

xtermからdilloとmikutterを起動します。

# dillo & # mikutter &

しばらく待ちます。 mikutterの認証画面がうまく出たら、httpsからはじまるURLをクリックするとdilloが起動します。 twitterのIDとパスワードを入力すると、pin番号が表示されます。pin番号をmikutterの認証画面に入力します。 しばらくすると、mikutterの画面が表示されます。表示されるはずです。落ちてしまう場合は時計が合っているか確認し てください。 漢字は[半角/全角]キーを入力すると漢字モードに切り替わります。anthyです。 青い鳩を消したいとき:mikutterのプラグインを試してみる

% touch ~/.mikutter/plugin/display_requirements.rb

すると、鳩が消えます。 mikutterはプラグインを組み込むことで、機能を追加できる自由度の高いtwitterクライアントで す。プラグインに関しては、「mikutterの薄い本 プラグイン」で検索してみてください。

1.9. fossilを使ってみよう

fossilは、Wiki/チケット管理システム/HTTPサーバ機能を持つ、コンパクトなソースコード管理システムです。fossilバイナリひ とつと、リポジトリファイルひとつにすべての情報が集約されています。ちょっとしたメモをまとめたりToDoリストを簡単に 管理できます。

% fossil help Usage: fossil help COMMAND Common COMMANDs: (use "fossil help -a|--all" for a complete list) add changes finfo merge revert tag addremove clean gdiff mv rm timeline all clone help open settings ui annotate commit import pull sqlite3 undo bisect diff info push stash update branch export init rebuild status version cat extras ls remote-url sync % fossil init sample-repo project-id: bcf0e5038ff422da876b55ef07bc8fa5eded5f55 server-id: 5b21bd9f4de6877668f0b9d90b3cff9baecea0f4 admin-user: jun (initial password is "f73efb") % ls -l total 116 -rw-r--r-- 1 jun users 58368 Nov 14 18:34 sample-repo % fossil server sample-repo -P 12345 & ブラウザでポート12345にアクセスし、fossil initを実行した時のユーザとパスワードでログインします。

1.10. キーマップの設定を変更する

2 / 48 2017/07/17 13:04 セキュリティキャンプ 2017 ドキュメント file:///usr/local/Github/NetBSD/Guide/_build/singleh...

ログインした状態でのキーマップは/etc/wscons.confで設定します。

encoding jp.swapctrlcaps .... 日本語キーボード,CtrlとCAPSを入れ替える。

Xでのキーマップは.xinitrcで設定します。

setxkbmap -model jp106 jp -option ctrl:swapcap

1.11. コンパイル済パッケージをインストールする

コンパイルしたパッケージを以下のURLに用意しました。

% cat /etc/pkg_install.conf

PKG_PATH=http://cdn.netbsd.org/pub/NetBSD/misc/jun/raspberry-pi/earmv6hf/2016-11-12

パッケージのインストール

pkg_addコマンドで、あらかじめコンパイル済みのパッケージをインストールします。関連するパッケージも自動的 にインストールします。

# pkg_add zsh

パッケージの一覧

pkg_infoコマンドで、インストールされているパッケージの一覧を表示します。

# pkg_info

パッケージの削除

# pkg_delete パッケージ名

1.12. /usr/pkgsrcを使ってみよう

たとえばwordpressをコンパイル/インストールする時には、以下の手順で行います。

# cd /usr/ # ls /usr/ ... 上書きしてしまわないか確認 # ftp http://cdn.netbsd.org/pub/pkgsrc/current/pkgsrc.tar.gz # tar tzvf pkgsrc.tar.gz |head ... アーカイブの内容確認 # tar xzvf pkgsrc.tar.gz # ls /usr/pkgsrc # cd /usr/pkgsrc/www/php-ja-wordpress # make package-install

# cd /usr/pkgsrc # cvs update -PAd

1.13. パッケージ管理

pkg_chk コマンドを使って、インストールしたパッケージを管理してみましょう。あらかじめpkgsrcの内容を更新し ておきます。どこからパッケージファイルを取得するかは、/etc/pkg_install.confのPKG_PATHに書いておきます。

# pkg_info ... インストールしているパッケージ名と概要を出力します。 # pkg_chk -g ... 使っているパッケージの一覧を/usr/pkgsrc/pkgchk.confに作ってくれます。 # pkg_chk -un ... パッケージをアップデートします。(nオプション付きなので実行はしません) # pkg_chk -u ... パッケージをアップデートします。

1.14. ユーザー作成

# useradd -m jun

3 / 48 2017/07/17 13:04 セキュリティキャンプ 2017 ドキュメント file:///usr/local/Github/NetBSD/Guide/_build/singleh...

# passwd jun

root権限で作業するユーザーの場合: # useradd -m jun -G wheel

# passwd jun

1.15. サービス起動方法

/etc/rc.d以下にスクリプトがあります。dhcpクライアント(dhcpcd)を起動してみます。

テスト起動: /etc/rc.d/dhcpcd onestart テスト停止: /etc/rc.d/dhcpcd onestop

正しく動作することが確認できたら/etc/rc.confに以下のとおり指定します。 dhcpcd=YES

/etc/rc.confでYESに指定したサービスは、マシン起動時に同時に起動します。

起動: /etc/rc.d/dhcpcd start 停止: /etc/rc.d/dhcpcd stop 再起動: /etc/rc.d/dhcpcd restart

1.16. vndconfigでイメージ編集

NetBSDの場合、vndconfigコマンドでイメージファイルの内容を参照できます。

# gunzip 2016-11-12-netbsd-raspi-earmv6hf.img.gz # vndconfig vnd0 2016-11-12-netbsd-raspi-earmv6hf.img # vndconfig -l vnd0: /usr (/dev/wd0e) inode 53375639 # disklabel vnd0 : 8 partitions: # size offset fstype [fsize bsize cpg/sgs] a: 3428352 385024 4.2BSD 0 0 0 # (Cyl. 188 - 1861) b: 262144 122880 swap # (Cyl. 60 - 187) : 3690496 122880 unused 0 0 # (Cyl. 60 - 1861) d: 3813376 0 unused 0 0 # (Cyl. 0 - 1861) e: 114688 8192 MSDOS # (Cyl. 4 - 59) # mount_msdos /dev/vnd0e /mnt # ls /mnt LICENCE.broadcom cmdline.txt fixup_cd.dat start.elf bootcode.bin fixup.dat kernel.img start_cd.elf # cat /mnt/cmdline.txt root=ld0a console=fb #fb=1280x1024 # to select a mode, otherwise try EDID #fb=disable # to disable fb completely

# umount /mnt # vndconfig -u vnd0

1.17. HDMIじゃなくシリアルコンソールで使うには

MSDOS領域にある設定ファイルcmdline.txtの内容を変更してください。

https://raw.github.com/Evilpaul/RPi-config/master/config.txt

fb=1280x1024 # to select a mode, otherwise try EDID fb=disable # to disable fb completely

4 / 48 2017/07/17 13:04 セキュリティキャンプ 2017 ドキュメント file:///usr/local/Github/NetBSD/Guide/_build/singleh...

1.18. 起動ディスクを変えるには

MSDOS領域にある設定ファイルcmdline.txtの内容を変更してください。

root=sd0a console=fb ←ld0をsd0にするとUSB接続したディスクから起動します

1.19. 最小構成のディスクイメージ

NetBSD-currentのディスクイメージに関しては、以下の場所にあります。日付の部分は適宜読み替えてください。

# ftp://nyftp.netbsd.org/pub/NetBSD-daily/HEAD/201502042230Z/evbarm-earmv6hf/binary/gzimg/rpi_inst.bin.gz # gunzip < rpi_inst.bin.gz |dd of=/dev/rsd3d bs=1m .... sd3にコピー。

RaspberryPIにsdカードを差して、起動すると、# プロンプトが表示されます。 # sysinst .... NetBSDのインストールプログラムが起動します。

1.20. X11のインストール

rpi.bin.gzからインストールした場合、Xは含まれていません。追加したい場合は、

ftp://nyftp.netbsd.org/pub/NetBSD-daily/HEAD/201310161210Z/evbarm-earmv6hf/binary/sets/ 以下にあるtarファイルを 展開します。tarで展開するときにpオプションをつけて、必要な権限が保たれるようにしてください。

tar xzpvf xbase.tar.gz -C / .... pをつける

1.21. クロスビルドの方法

ソースファイル展開 ./build.sh -U -m evbarm -a earmv6hf release earm{v[4567],}{hf,}{eb} earmv4hf http://mail-index.netbsd.org/tech-kern/2013/11/12/msg015933.html

acorn26 armv2 acorn32 armv3 armv4 (strongarm) cats shark netwinder armv4 (strongarm) iyonix armv5 hpcarm armv4 (strongarm) armv5. zaurus armv5 evbarm armv5/6/7

1.22. 外付けUSB端子

NetBSDで利用できるUSBデバイスは利用できる(はずです)。電源の制約があるので、十分に電源を供給できる外付 けUSBハブ経由で接続したほうが良いです。動作しているRPIにUSBデバイスを挿すと、電源の関係でRPIが再起動し てしまう場合があります。その場合、電源を増強する基板を利用する方法もあります。

1.23. 外付けSSD

コンパイルには、サンディスク X110 Series SSD 64GB(読込 505MB/s、書込 445MB/s) SD6SB1M-064G-1022I を外付けディスクケース経由で使っています。NFSが使える環境なら、NFSを使い、pkgsrcの展開をNFSサーバ側で 実行する方法もあります。RPIにSSDを接続した場合、OSの種類と関係なく、RPI基板の個体差により、SSDが壊れる 場合があるので十分注意してください。

1.24. 液晶ディスプレイ

液晶キット( http://www.aitendo.com/page/28 )で表示できています。

aitendoの液晶キットはモデルチェンジした新型になっています。 On-Lap 1302でHDMI出力を確認できました。 HDMI-VGA変 換ケーブルを利用する場合、MSDOS領域にある設定ファイルcmdline.txtで解像度を指定してください。

5 / 48 2017/07/17 13:04 セキュリティキャンプ 2017 ドキュメント file:///usr/local/Github/NetBSD/Guide/_build/singleh...

https://twitter.com/oshimyja/status/399577939575963648 とりあえずうちの1024x768の液晶の場合、 hdmi_group=2 hdmi_mode=16 の2行をconfig.txtに書いただけ。なんと単純。disable_borderはあってもな

1.25. inode

inodeが足りない場合は、ファイルシステムを作り直してください。

# newfs -n 500000 -b 4096 /dev/rvnd0a

1.26. bytebench

おおしまさん(@oshimyja)がbytebenchの結果を測定してくれました。

https://twitter.com/oshimyja/status/400306733035184129/photo/1 https://twitter.com/oshimyja/status /400303304573341696/photo/1

1.27. 壁紙

おおしまさん(@oshimyja)ありがとうございます。

http://www.yagoto-urayama.jp/~oshimaya/netbsd/Proudly/2013/

1.28. パーティションサイズをSDカードに合わせる

2GB以上のSDカードを利用している場合、パーティションサイズをSDカードに合わせることができます。この手順はカード の内容が消えてしまう可能性もあるため、重要なデータはバックアップをとるようにしてください。 手順は、http://wiki.netbsd.org/ports/evbarm/raspberry_pi/ のGrowing the root file-systemにあります。

1.28.1. シングルユーザでの起動

1. /etc/rc.confのrc_configured=YESをNOにして起動します。 2. 戻すときはmount / ;vi /etc/rc.conf でNOをYESに変更してrebootします。

1.29. 参考URL

http://wiki.netbsd.org/ports/evbarm/raspberry_pi/ NetBSD Guide http://www.netbsd.org/docs/guide/en/ NetBSD/RPiで遊ぶ(SDカードへの書き込み回数を気にしつつ) http://hachulog.blogspot.jp/2013/03/netbsdrpisd.html http://www.raspberrypi.org/phpBB3/viewforum.php?f=86 NetBSDフォーラム http://www.raspberrypi.org/phpBB3/viewforum.php?f=82 日本語フォーラム 2. RaspberryPIのNetBSDイメージ2017進捗どうですか

2.1. RaspberryPIのNetBSDイメージについて

今年もオープンソースカンファレンスごとにRaspberryPI用のNetBSDイメージを作って配布しています。 この一年、どんなこ とがあったのか表にしてまとめてみました。

年月 NetBSD mikutter mlterm OpenSSL ネタ OSC URL 2016/1 7.99.25 3.3.3 3.6.1 CVE-2016-0777: get rid of OSC浜名湖 http://mail-index.netbsd.org roaming /port-arm/2016/01/22 /msg003635.html 2016/2 7.99.26 3.3.7 3.6.3 1.0.1r BIND-9.10.3-P3 OSC東京春 http://mail-index.netbsd.org /port-arm/2016/02/24 /msg003689.html

6 / 48 2017/07/17 13:04 セキュリティキャンプ 2017 ドキュメント file:///usr/local/Github/NetBSD/Guide/_build/singleh...

2016/3 7.99.26 3.3.8 1.0.1s AsiaBSDCon http://mail-index.netbsd.org /port-arm/2016/03/10 /msg003709.html 2016/5 7.99.29 3.7.0 1.0.1t RPI3サポート/merge nick-nhusb OSC群馬 http://mail-index.netbsd.org tree /port-arm/2016/05/07 /msg003771.html 2016/6 7.99.29 3.3.9 freetype2ディレクトリ変更 OSC名古屋 http://mail-index.netbsd.org /port-arm/2016/05/25 /msg003797.html 7.99.30 3.4.0 GCC5.4.0 security.pax.mprotect OSC北海道 http://mail-index.netbsd.org /port-arm/2016/06/13 /msg003821.html 7.99.31 RPI3 http://mail-index.netbsd.org machdep.cpu.frequency.current /port-arm/2016/06/17 = 1200 /msg003833.html 2016/7 7.99.32 3.4.1 3.7.1 git-base-2.9.0 perl-5.24 OSC沖縄 http://mail-index.netbsd.org /port-arm/2016/06/29 /msg003846.html 2016/8 7.99.34 SA 2016-006: Race condition in OSC京都 http://mail-index.netbsd.org mail.local(8) /port-arm/2016/07/27 /msg003884.html 2016/9 7.99.36 3.4.2 OSuC金沢 http://mail-index.netbsd.org /port-arm/2016/08/23 /msg003918.html 7.99.38 3.4.3 3.7.2 git-base-2.10.0 OSC島根 http://mail-index.netbsd.org /port-arm/2016/09/22 /msg003920.html 7.99.39 OSC長岡 http://mail-index.netbsd.org /port-arm/2016/09/29 /msg003921.html 2016/11 7.99.41 3.4.6 1.0.2j RPI2 Ver1.2サポート OSC東京秋 http://mail-index.netbsd.org libssl.12/libcrypt.12 /port-arm/2016/11/02 NetBSD2017-SA01 /msg003954.html 7.99.42 BIND-9.10.4-P4 Raspberrypi- KOF2016 http://mail-index.netbsd.org userland-2016-1101 /port-arm/2016/11/10 /msg003958.html 7.99.42 3.4.7 NTP-4.2.8p9 OSC広島 http://mail-index.netbsd.org /port-arm/2016/11/23 /msg003970.html 2016/12 7.99.44 3.4.8 CWE-120 libc git-base-2.11.0 BIG RPI Jam http://mail-index.netbsd.org /port-arm/2016/12/10 /msg004002.html 2017/1 7.99.59 3.5.1 HardwareRNG BIND-9.10.4-P5 OSC大阪 http://mail-index.netbsd.org raspberrypi-userland-20170109 /port-arm/2017/01/25 /msg004087.html 2017/2 7.99.59 3.5.2 3.8.0 1.0.2k OSC浜名湖 https://github.com/ebijun /osc-demo/blob/master /2017/OSC2017hamanako.txt 2017/3 7.99.64 3.5.3 tcpdump-4.9.0 BIND-9.10.4-P6 OSC東京春 http://mail-index.netbsd.org postfix-3.1.4 NetBSD-SA02 /netbsd-advocacy/2017/03 git-base-2.12.0 /13/msg000728.html 2017/4 7.99.69 3.5.7 NetBSD7.1 ruby-2.3 OSuC川越 http://mail-index.netbsd.org /port-arm/2017/04/14 /msg004130.html 2017/5 7.99.72(→7.99.75) 3.8.1 BIND-9.10.4-P8 fossil-2.2 OSC名古屋 http://mail-index.netbsd.org git-base-2.13.0 /port-arm/2017/05/24 /msg004150.html

7 / 48 2017/07/17 13:04 セキュリティキャンプ 2017 ドキュメント file:///usr/local/Github/NetBSD/Guide/_build/singleh...

2017/6/17 8.99.1 3.5.8 perl-5.26 /VEXPRESS_A15 OSC沖縄 http://mail-index.netbsd.org カーネルからの起動 (BIND- /port-arm/2017/06/12 9.10.5-P1) /msg004179.html 2017/7/08 8.99.1 RPI3起動タイミング修正 JNUG2017 http://mail-index.netbsd.org microSD認識エラー修正 /port-arm/2017/07/07 BIND-9.10.5-P2 /msg004286.html

OSCはほぼ毎月のように日本各地で行われています。 前に、OpenBSDのTheoさんに、自分のノートPCのアップデートをどの くらいの周期でやってるのかきいてみました。 2週間くらいごとかなと答えてくれて、ああだいたいそんなものなのかと思って いました。

NetBSDのイメージを配るとしたとき、どのくらいの周期でアップデートしていけばいいのでしょうか? イメージを配る理由 は、何かソフトウェアが新しくなって新しい機能が入ったとか、ハードウェアのサポート種類が増えたとか、ソフトウェアの脆 弱性が出たとか、 理由はいくつかあると思いますが、試しにずっと更新して配りつづけることにしてみました。

イメージのサイズは2GBにしてみました。ダウンロードにかかる時間とか考えると、これ以上でっかくすると使ってもらえませ ん。 2GBのカードのサイズはこんくらいにすればいいよとFreeBSDのワーナーさんに教えてもらってずっとそのサイズにしてい ましたが、 手狭になったので増やしました。

イメージに入れるソフトを何にするか考えたんですが、mikutterとmltermにしてみました。RubyのGUI環境+ネットワーク認 証を使うソフトと、 基本的なターミナルソフトで、sixelグラフィックも表示できるのでおもしろそうです。

作り方は https://github.com/ebijun/NetBSD/blob/master/Guide/RPI/RPIImage.rst

みたいに作って、あらかじめ作っておいたパッケージを組み込んで動作テストをします。mikutterで「あひる焼き」とつぶやい て返事が帰ってくれば ネットワーク認証と画面表示とRubyまわりと漢字入力がうまくいっています。

2.2. 新しいハードウェア対応

RPI3とRPI2 Ver1.2が出ています。RPI3はカーネルに一行パッチをあてないと、クロックアップできません。 このあたりの対応 コードはNickさんが試しています。RPI2 Ver1.2はファームをあげると動きます。

2.3. ソフトウェア配布方法

NetBSDの ftpサイトは CDN対応のところからダウンロードできるようになりました。漫喫でも楽勝です。 - http://cdn.netbsd.org/ - http://nycdn.netbsd.org/

2.4. OSCでやっているデモ

RaspberryPIっぽいなにかということで、omxplayerを使ってcrontabで動画を流すデモと、XM6iで NetBSD/x68kを動かすデモ をやっていました。

2.5. security.pax.mprotect.enabled

man security man paxctl -a |grep pax If application failed, such as omxplayer. try to test sysctl -w security.pax.mprotect.enabled=0

2.6. On-Lapディスプレイ問題

On-LapのディスプレイでうまくXが表示できていません。→これなおってるかも。 - HDMI Display failure on X ,On-Lap 2501M (reported from @matoken)

https://twitter.com/matoken/status/702656906251210753

2.7. GPIOのドキュメント

GPIOの使い方をまとめてくれた方が。

8 / 48 2017/07/17 13:04 セキュリティキャンプ 2017 ドキュメント file:///usr/local/Github/NetBSD/Guide/_build/singleh...

NetBSD GPIO DOC by Marina Brown https://github.com/catskillmarina/netbsd-gpio-doc/blob/master/README.md

2.8. ご注文はなんとかですか(弱点)

RPI3のBTと無線はつかえませんか? ラズビアンでは動くんですが 7.0版はないんですか

2.9. まとめ

OSCごとにイメージをつくっていると、だいたいBINDとOpenSSLの脆弱性に対応できていい感じです。なんでOSCの直前にな ると脆弱性がみつかるんでしょうか。 たまにBSD自体の10年もののバグとかも発掘されて楽しいです。 リリース間隔があけば あくほど、ひとりで対応できる作業量を越えてしまう気がするので、いまんとここれでいいのかほんとうに。 3. RaspberryPIでNetBSDを使ってみる(イメージ作成)

3.1. Raspberry PIのイメージをつくろう

Raspberry PIで動くイメージファイルの作り方を説明します。

3.2. ISOイメージ取得

NetBSDのISOイメージをダウンロードします。 ダウンロードには、以下のRubyスクリプトを使っています。

https://github.com/ebijun/NetBSD/blob/master/RPI/RPIimage/Image/NewestISO

編集するところ:ftpサーバを選ぶ

FTP="nyftp.netbsd.org" #FTP="ftp.jp.netbsd.org" #FTP="ftp7.jp.netbsd.org"

編集するところ: アーキテクチャ選択

#ARCH="earmv7hf" ARCH="earmv6hf" #ARCH="earm"

コマンドを実行すると、指定したftpサーバが持っている最新のイメージをダウンロードするためのスクリプトを生成します。

$ ./NewestISO ftp ftp://nyftp.netbsd.org/pub/NetBSD-daily/HEAD/201511241720Z/images/NetBSD-7.99.21-evbarm-earmv6hf.iso mv NetBSD-7.99.21-evbarm-earmv6hf.iso ./NetBSD-7.99.21-evbarm-earmv6hf-201511241720Z.iso

コマンドの出力結果をshに渡すとダウンロードを実行します。

$ ./NewestISO |sh

ダウンロードがうまくいくと、以下のようなisoイメージをダウンロードできます。

NetBSD-7.99.21-evbarm-earmv6hf-201511241720Z.iso

3.3. イメージ作成用Makefile

イメージファイルを作るためにMakefileを作っています。

https://github.com/ebijun/NetBSD/blob/master/RPI/RPIimage/Image/Makefile

編集するところ: イメージファイルの置き場所とかを指定します。

ARCH=earmv6hf

9 / 48 2017/07/17 13:04 セキュリティキャンプ 2017 ドキュメント file:///usr/local/Github/NetBSD/Guide/_build/singleh...

#ARCH=earmhf #ARCH=earm PKG_PATH=ftp://ftp.netbsd.org/pub/NetBSD/misc/jun/raspberry-pi/${ARCH}/2015-11-14/ # iso file information IMAGE=/usr/release/images/NetBSD-7.99.21-evbarm-${ARCH}-201511091610Z.iso PKGSRC=../../../pkgsrc/pkgsrc-2015Q3.tar.gz

make を実行するとイメージファイルができます。 make releaseを実行すると、初期設定ファイル等をコピーします。 make pkgを実行すると、パッケージをインストールするための準備ができます。

# make # make release # make pkg

./Copy を実行して、パッケージをSDカードにコピーします。

https://github.com/ebijun/NetBSD/blob/master/RPI/RPIimage/Image/Copy より: DEVICE=rsd2d

#BOARD=raspi-earm BOARD=raspi-earmv6hf #BOARD=raspi-earmv7hf

COMPRESS=-z SUFFIX=.gz #COMPRESS=

#DATE=`date +%Y-%m-%d` #DATE=2015-11-10

progress $COMPRESS -f ${DATE}-netbsd-${BOARD}.img${SUFFIX} dd of=/dev/${DEVICE} bs=4m

3.4. RPIでパッケージのインストール

RPI2にSDカードをさして、ブートするか確認します。rootでログインして、必要なパッケージをインストールします。

cd Package edit Install ./Install

インストールが終わったら再起動して、fontconfigを実行しておきます。 RPIに差し替えて起動して、dmesgを出力しておきま す。

# dmesg > dmesg ...RPIの場合 # dmesg > dmesg7 ...RPI2の場合

イメージをSDカードから書き戻すためのスクリプトを実行します。

https://github.com/ebijun/NetBSD/blob/master/RPI/RPIimage/Image/03_back

tmp日付ディレクトリにRPI,RPI2のdmesgとpkginfoができます。

一時起動時にできたログファイルを消して、配布用イメージを作ります。

make logclean make release

./Copy (https://github.com/ebijun/NetBSD/blob/master/RPI/RPIimage/Image/Copy)を実行して、できたイメージをSDカード に書き戻します。RPIにさして起動して、自動リサイズが正しく起動するか確認します。

rootでログインします。startxを実行します。mikutterを起動します。認証し、何かツィートしてみます。 あひる焼きを含む文 章をツィートして、何か返事があればできあがりです。

http://movapic.com/ebijun/pic/5287850

3.5. できたことを知らせる

10 / 48 2017/07/17 13:04 セキュリティキャンプ 2017 ドキュメント file:///usr/local/Github/NetBSD/Guide/_build/singleh...

port-armメーリングリストにリリースメールを書きます。mail-indexに載ったらURLをツィートします。

https://github.com/ebijun/NetBSD/blob/master/RPI/RPIimage/README に書いて、 http://mail-index.netbsd.org/port-arm/2015/11/11/msg003550.html

dmesg/pkginfoを書きます。

https://github.com/ebijun/NetBSD/blob/master/dmesg/earmv6hf/RPI https://github.com/ebijun/NetBSD/blob/master/dmesg/earmv6hf/RPI2 https://github.com/ebijun/NetBSD/blob/master/RPI/RPIimage/pkgsrc/pkginfo

RPIのフォーラムにも投げます。

https://www.raspberrypi.org/forums/viewforum.php?f=86

2015年に作ったRPIイメージ一覧 2015/2/7 http://mail-index.netbsd.org/port-arm/2015/02/04/msg002833.html 2015/2/28 http://mail-index.netbsd.org/port-arm/2015/02/26/msg002883.html 2015/3/13 http://mail-index.netbsd.org/port-arm/2015/03/10/msg002918.html 2015/4/19 http://mail-index.netbsd.org/port-arm/2015/04/19/msg003100.html 2015/5/23 http://mail-index.netbsd.org/port-arm/2015/05/21/msg003185.html 2015/6/13 http://mail-index.netbsd.org/port-arm/2015/06/06/msg003243.html 2015/6/30 http://mail-index.netbsd.org/port-arm/2015/06/30/msg003266.html (7.0RC1) 2015/7/4 http://mail-index.netbsd.org/port-arm/2015/07/02/msg003268.html 2015/7/30 http://mail-index.netbsd.org/port-arm/2015/07/31/msg003351.html (7.0RC2) 2015/8/8 http://mail-index.netbsd.org/port-arm/2015/08/06/msg003389.html 2015/8/19 http://mail-index.netbsd.org/port-arm/2015/08/19/msg003428.html 2015/8/22 http://mail-index.netbsd.org/port-arm/2015/08/20/msg003430.html 2015/9/5 http://mail-index.netbsd.org/port-arm/2015/09/03/msg003439.html 2015/9/19 http://mail-index.netbsd.org/port-arm/2015/09/14/msg003467.html 2015/9/28 http://mail-index.netbsd.org/port-arm/2015/09/29/msg003496.html (7.0) 2015/10/3 http://mail-index.netbsd.org/port-arm/2015/09/30/msg003497.html 2015/10/25 http://mail-index.netbsd.org/port-arm/2015/10/20/msg003534.html 2015/11/7 http://mail-index.netbsd.org/port-arm/2015/11/04/msg003546.html 2015/11/14 http://mail-index.netbsd.org/port-arm/2015/11/11/msg003550.html 2015/12/27 http://mail-index.netbsd.org/port-arm/2015/12/27/msg003586.html 4. RaspberryPIでNetBSDを使ってみる(omxplayerとか)

4.1. omxplayer

RaspberryPIにはGPUが載っていて、動画再生ソフトのomxplayer(https://github.com/popcornmix/omxplayer)をNetBSDでも 使うことができます。 pkgsrc/multimedia/omxplayer です。

# pkg_add omxplayer

4.2. youtube-dlのインストール

youtube-dl(http://rg3.github.io/youtube-dl/)もインストールしてみましょう。 pkgsrc/net/youtube-dl です。

# pkg_add youtube-dl

4.3. youtube-dlとomxplayerで動画再生

youtube-dl経由でダウンロードしたビデオをomxplayerで再生してみます。 スペースキーで一時停止、qで終了します。

# youtube-dl https://www.youtube.com/watch?v=wG8ZCC8IwvM # omxplayer *.mp4

11 / 48 2017/07/17 13:04 セキュリティキャンプ 2017 ドキュメント file:///usr/local/Github/NetBSD/Guide/_build/singleh...

4.4. livestreamerをインストールしてみる

ストリームを再生するためのコマンドラインユーティリティ livestreamer(http://livestreamer.tanuki.se/)をインストールして みましょう。 pkgsrc/wip/livestreamerにもありますが、Pythonのpip経由をつかってみます。

# pkg_add py27-pip # pip2.7 install livestreamer

4.5. livestreamer経由のストリーム再生

youtubeのビデオを、livestreamer経由でストリーム再生してみましょう。コマンドラインでプレーヤーと再生品質を指定し て、livestreamerを起動します。crontabで起動するようにすると、定期的にビデオ再生をするシステムを簡単に作ることがで きます。

# livestreamer --player omxplayer --fifo --yes-run-as-root https://www.youtube.com/watch?v=wG8ZCC8IwvM --default-stream best

5. RaspberryPIでNetBSDを使ってみる(Xfceとか)

5.1. startxと.xinitrc

コマンドプロンプトからstartxコマンドを実行すると、icewmが起動するように なっています。

# startx

このイメージの/root/.xinitrcは以下のURLにあります。

https://github.com/ebijun/NetBSD/blob/master/RPI/RPIimage/root/.xinitrc

順番にざっとみてみましょう。 このあたりで、日本語キーボードに設定しています。 オプションにctrl:swapcapsと指定する と、コントロールキーとCAPSキーを入れ替えます。

#set keyboard layout #setxkbmap -layout jp -option ctrl:swapcaps setxkbmap -model jp106 jp

次に、日本語入力の設定です。uim経由で入力できるように、環境変数XMODIFIERSを 設定します。uimの設定を細かく指定し たい時は、uim-pref-gtkというアプリケーションを 起動して変更します。

uim-xim & # To select input method via uim-pref-gtk userinterface. # uim-pref-gtk export XMODIFIERS=@im=uim

もし、デスクトップ環境としてxfce4を使うときにはコメントアウトしてあるstartxfce4の #をはずせば、ここでXfce4を起動で きます。ディスク容量の関係でXfceをイメージには入れて いないので、この後追加してみましょう。

#to install: pkg_add xfce4 #startxfce4;exit

icewmを使うときにはこのまま進みます。背景の色はxsetrootで決められます。 バックグラウンドでの画像表示はxsetbgを使っ ていますが、icewmの設定ファイルでも 指定できます。

xsetroot -bg black -grey #kterm -geometry 80x25+0+0 -fk k14 -fn a14 -fr r14 -km euc& xsetbg NetBSD.png

mikutterを使いはじめるとき、twitterの認証画面をWebブラウザで表示します。 デフォルトのブラウザをdilloに指定しておく と、クリックしただけでdilloが 起動します。

#for mikutter , click and start browser. export BROWSER=dillo

あとは、icewmが入っていればicewmを。なければtwmを起動します。

12 / 48 2017/07/17 13:04 セキュリティキャンプ 2017 ドキュメント file:///usr/local/Github/NetBSD/Guide/_build/singleh...

xterm -geometry 80x25+0+0 &

if [ -f /usr/pkg/bin/icewm ]; then icewm else twm fi

5.2. Xfce4をインストールする

pkg_addコマンドでXfce4をインストールしてみましょう。正常に終わればXfce4がインストールできています。

pkg_add xfce4

.xinitrcでコメントアウトされていたstartxfce4の行の#をはずして、startxコマンドを 実行してみましょう。画面が真っ黒に なってびびりますが、そのまま待っているとねずみちゃんの ような何かが表示されます。

5.3. Firefoxもインストールしてみる

うまくいったらfirefoxもインストールしてみましょう。正常に終わればfirefoxがインストールできています。

pkg_add firefox pkg_add firefox-l10n

5.4. コンパイル済みパッケージのありか

このイメージではpkg_addコマンドでコンパイル済みパッケージをインストールできるようにしています。 コンパイル済みイ メージの場所は、/etc/pkg_install.confに書いてあります。 そこにはftp://ftp.netbsd.org/pub/NetBSD/misc/jun/raspberry-pi /earmv6hf/2015-11-26/ のようなURLがかいてあります。自分でコンパイルしたパッケージを使う場合は、この部分を書き換え て みてください。 6. BSDライセンス

BSDは、Berkeley Software Distibutionの略称です。

1. http://ja.wikipedia.org/wiki/BSD 2. /usr/src/share/misc/bsd-family-tree

6.1. BSDライセンスとNetBSD

NetBSDのソースコードは、自由に配布したり売ることができます。 NetBSDのソースコードから作ったバイナリを 売ることもできます。バイナリのソースコードを公開する義務はありません。

6.2. 2 条項 BSD ライセンス

http://www.jp.NetBSD.org/ja/about/redistribution.html

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

6.3. 2条項BSDライセンス(訳)

http://www.jp.NetBSD.org/ja/about/redistribution.html

ソースおよびバイナリー形式の再配布および使用を、変更の有無にかかわらず、 以下の条件を満たす場合に認める:

13 / 48 2017/07/17 13:04 セキュリティキャンプ 2017 ドキュメント file:///usr/local/Github/NetBSD/Guide/_build/singleh...

1. ソースコードの再配布においては、上記の著作権表示、この条件の列挙、下記の注意書きを残すこと。 2. バイナリー形式の再配布においては、上記の著作権表示、この条件の列挙、下記の注意書きを、 配布物に附属 した文書および/または他のものに再現させること。

このライセンスの前には著作権表示そのものが付きます。この後には注意書きが付き、このソフトウェアに関して問 題が生じても、作者は責任を負わないと述べます。 7. NetBSD

NetBSDは1個のソースツリーをコンパイルすることで実行イメージを作ることができます。

7.1. ソースコードから作る

tar 形式のファイルをダウンロード&展開し、build.shというスクリプトでコンパイルすると、NetBSDの実行イメー ジができます。

このtarファイルの中には、これまでNetBSDがサポートしてきた50種類以上のハードウェアと、無数の周辺機器の仕 様が含まれています。しかもコンパイルすると、実際にハードウェア上でNetBSDが動作します。

NetBSDのコンパイルはNetBSDでも、NetBSDではないOSでも、どのハードウェアでも、ほぼ同じ手順でコンパイル できます。(できるはずです)

# ftp ftp://ftp.NetBSD.org/pub/NetBSD/NetBSD-current/tar_files/src.tar.gz # tar xzvf src.tar.gz # ./build.sh -U -m i386 release .... -U:root以外で作成,この場合i386向け

7.2. Xを含んだシステムを作る

# ftp ftp://ftp.NetBSD.org/pub/NetBSD/NetBSD-current/tar_files/xsrc.tar.gz # tar xzvf xsrc.tar.gz # cd src # ./build.sh -u -U -m i386 -x -X ../xsrc release ... -u:更新,-xX Xも作る

7.3. CD-ROMイメージを作る

# ./build.sh -m i386 iso-image ... CD-ROMイメージ作成

8. pkgsrc - ソースコードからソフトウェアを作る

世界中にあるいろいろなプログラムをコンパイル・インストールする手順は、プログラムごとにまちまちです。世界中のプログ ラムを、すべて同じ手順でコンパイルして、インストールするためには、どのような枠組みがあればよいでしょうか?

ソースコードからプログラムをコンパイル・インストールする時、NetBSDでは主に、pkgsrcを利用します。pkgsrcでは、 13000種類以上のプログラムについて、コンパイル手順を分野ごとにまとめて、収集しています。

pkgsrcの役割を挙げてみます。

1. 適切なサイトからソースコードをダウンロード展開する。 2. 適切なオプションをつけて、コンパイルする。 3. インストールする。 4. コンパイルした結果からパッケージを作る。 5. 他のマシンにパッケージをインストールする。

それではpkgsrcを実際に使ってみましょう。pkgsrc.tar.gzというファイルを展開して利用します。ここでは、すぐれ たtwitterクライアントであるmikutterをインストールします。makeコマンドを実行すると、関連するソフトウェア をインストールします。

# cd /usr # ftp://ftp.NetBSD.org/pub/NetBSD/NetBSD-current/tar_files/pkgsrc.tar.gz # tar xzvf pkgsrc.tar.gz (cd /usr/pkgsrc/bootstrap;./bootstrap) .. NetBSD以外のOSで実行する # cd /usr/pkgsrc/net/mikutter

14 / 48 2017/07/17 13:04 セキュリティキャンプ 2017 ドキュメント file:///usr/local/Github/NetBSD/Guide/_build/singleh...

# make package-install

pkgsrc.tar.gz ファイルの中には、12000種類以上のソフトウエアをコンパイルし、インストールする方法が含まれています。しかもコンパイルすると

8.1. gitをインストールしてみる

# cd /usr/pkgsrc/devel/git-base # make install # which git /usr/pkg/bin/git

8.2. baserCMSをインストールしてみる

典型的なCMSは、この手順でインストールできます。

# cd /usr/pkgsrc/www/ap-php ... php54+apache # make package-install .... 関連するソフトウェアが全部コンパイル・インストール # vi /usr/pkg/etc/httpd/httpd.conf LoadModule php5_module lib/httpd/mod_php5.so AddHandler application/x-httpd-php .php

# cd /usr/pkgsrc/converters/php-mbstring # make package-install

# vi /usr/pkg/etc/php.ini extension=mbstring.so

baserCMSはMySQLをインストールしなくても利用できますが、利用する場合 # cd /usr/pkgsrc/databases/php-mysql ... php+mysqlインストール # vi /usr/pkg/etc/php.ini extension=mysql.so

# vi /usr/pkg/etc/httpd/httpd.conf DirectoryIndex index.php index.html

# vi /etc/rc.conf apache=YES # cp /usr/pkg/share/examples/rc.d/apache/etc/rc.d/apache # /etc/rc.d/apache start

basercms.netからzipファイルをダウンロード # cd /usr/pkg/share/httpd/htdocs # unzip basercms-2.1.2.zip # chown -R www.www basercms # http://localhost/basercms 管理者のアカウントとパスワードがメールで飛んでくる!!

pkgsrcを使う場合: # cd /usr/pkgsrc/www/php-basercms # make package-install

8.2.1. SSL設定

証明書のファイルを指定して、httpd.confのコメントを外して、apacheを再起動します。

/usr/pkg/etc/httpd/httpd-ssl.conf SSLCertificateFile SSLCertificateKeyFile SSLCertificateChainFile

/usr/pkg/etc/httpd/httpd.conf Include etc/httpd/httpd-ssl.conf ... コメントはずす

8.2.2. 日本語Wordpress

# cd /usr/pkgsrc/www/php-ja-wordpress

15 / 48 2017/07/17 13:04 セキュリティキャンプ 2017 ドキュメント file:///usr/local/Github/NetBSD/Guide/_build/singleh...

# make package-install

8.3. LibreOfficeを動かしてみる

LibreOffice5をインストールしてみましょう。

# cd /usr/pkgsrc/misc/libreoffice # make package-install : 9時間くらいかかります。 # which soffice /usr/pkg/bin/soffice

8.4. インストールするソフトウェアのライセンスを意識する

あるソフトウェアのソースコードをどのように取り扱えばいいのかは、ソフトウェアに含まれるライセンスに書かれています。 GNUやBSDやMITやApacheなど有名なライセンスもあれば、有名なライセンスを少しだけ入れ替えて、目的にあったライセン スに作り替えたものなど、まちまちです。 pkgsrcでは、pkgsrcに含まれるソフトウェアのライセンスを収集しています。実際 に見てみましょう。

% cd /usr/pkgsrc/licenses ... ライセンス条項が集まっている % ls |wc -l 228 % ls |head 2-clause-bsd 3proxy-0.5-license CVS acm-license adobe-acrobat-license adobe-flashsupport-license amap-license amaya-license amazon-software-license amiwm-license :

特定のライセンスを持つソフトウェアのインストールを許可するかどうかは、 /etc/mk.conf ファイルで定義します。 星の数ほ どあるソフトウェアのライセンスを受け入れるかどうかを、自分で決めることができます。

% grep ACCEPTABLE /etc/mk.conf |head ACCEPTABLE_LICENSES+= ruby-license ACCEPTABLE_LICENSES+= xv-license ACCEPTABLE_LICENSES+= mplayer-codec-license ACCEPTABLE_LICENSES+= flash-license ACCEPTABLE_LICENSES+= adobe-acrobat-license ACCEPTABLE_LICENSES+= adobe-flashsupport-license ACCEPTABLE_LICENSES+= skype-license ACCEPTABLE_LICENSES+= lha-license ACCEPTABLE_LICENSES+= opera-eula ACCEPTABLE_LICENSES+= lame-license

8.5. pkgsrc/packages

コンパイルしたパッケージは、pkgsrc/packages以下に生成されます。

% cd /usr/pkgsrc/packages/All/ % ls *.tgz |head GConf-2.32.4nb7.tgz GConf-ui-2.32.4nb11.tgz ORBit2-2.14.19nb4.tgz SDL-1.2.15nb7.tgz SDL_mixer-1.2.12nb5.tgz acroread9-jpnfont-9.1.tgz : # pkg_add gedit-2.30.4nb17.tgz ... インストール # pkg_info ... 一覧表示 # pkg_del gedit ... 削除

16 / 48 2017/07/17 13:04 セキュリティキャンプ 2017 ドキュメント file:///usr/local/Github/NetBSD/Guide/_build/singleh...

8.6. pkgsrcに何か追加したい

# cd /usr/pkgsrc/pkgtools/url2pkg # make package-install # cd /usr/pkgsrc/ジャンル/名前 # url2pkg ダウンロードURL Makefileとかができる

8.7. /usr/pkgsrc以下のメンテナンス

# cd /usr/pkgsrc/pkgtools/lintpkgsrc # make package-install # cd /usr/pkgsrc;cvs update -PAd ... /usr/pkgsrcを最新にする # lintpkgsrc -pr .... 古くなったバイナリパッケージを消す # lintpkgsrc -or .... 古くなったソースファイルを消す # lintpkgsrc -mr .... ソースファイルのチェックサムが/usr/pkgsrcと合っているか

8.8. pkgsrcの更新

pkg_chkを使う方法

# cd /usr/pkgsrc/pkgtools/pkg_chk # make package-install # cd /usr/pkgsrc # cvs update -PAd # pkg_chk -u .... 古いパッケージをコンパイルして更新する

pkg_rolling-replaceを使う方法:依存関係に従って更新する

# cd /usr/pkgsrc/pkgtools/pkg_rolling-replace # make package-install # cd /usr/pkgsrc # cvs update -PAd # pkg_rolling-replace -u

8.9. ソースコードの更新

http://cvsweb.NetBSD.org/ # cd src # cvs update -PAd ... 最新に更新 # cvs update -Pd -r netbsd-7 ... NetBSD7.0 # cd pkgsrc # cvs update -PAd ... 最新に更新 # cvs update -Pd -r pkgsrc-2015Q3 ... 2015Q3に更新

8.10. バグレポート・追加差分

http://www.NetBSD.org → Support →Report a bug / Query bug database. 9. NetBSDとブース展示

日本NetBSDユーザーグループは、日本各地のオープンソースイベントに参加し、ブース出展とセミナー枠を利用し て、NetBSD関連の情報をまとめています。オープンソースカンファレンスへの積極的な参加が認められ、2014年2 月に「第1回OSCアワード」を受賞しています。

9.1. ブース出展

オープンソース関連のイベントでは、たいてい幅1.8m程度の長机と椅子二つ程度のブースを出展します。各地域でのイベント 開催に合わせて、最新の活動成果を展示しようとします。

17 / 48 2017/07/17 13:04 セキュリティキャンプ 2017 ドキュメント file:///usr/local/Github/NetBSD/Guide/_build/singleh...

9.2. セミナー枠

セミナー枠では、NetBSDに関する情報を紙にまとめて配布して、出版物でカバーできないような情報をイベント毎にまとめて います。開催地にある電子部品店・コンピュータショップ・古書店・クラフトビールバー等、生活に必要な情報もまとめていま す。

9.3. シール関連まとめ

NetBSDブースでは、NetBSDのシールや、NetBSDがサポートしている・サポートしようとしている・みんなが好きで利用して いるソフトウェアに関連したシールを持ち寄って配っています。 OSの展示は単調になりがちで、OS開発やNetBSDについて通 りすがりの数秒で理解してもらうのは不可能でしたが、シールなら数秒で何かわかってもらえます。 かさばらないので、誰に も受け取ってもらいやすく、優れたデザインのシールに人気が出ると、ブース全体に活気が生まれて、思いもよらない進展を呼 ぶことがあります。

みくったーシールずかん http://togetter.com/li/566230 らこらこシール作成の記録 http://togetter.com/li/554138 10. NetBSDのご紹介

10.1. こういうOSが欲しい

世界中にあるコンピュータ、昔の計算機から最近のパソコン、組み込み系まで、身の回りで目についたすべてのコン ピュータで動くOSは、どのようなものでしょうか?コンピュータに接続できる機器もたくさんあります。手持ちの 周辺機器を全部利用できるOSを考えてみましょう。これまでに利用したことのあるソフトウェアすべてを動かすこ とのできるOSはどのようなものであればよいでしょうか?ソースコードを自由に読んだり、書いたり、引用した り、配布したり、売ったり買ったりできるOSを、世界中の人々と共同で作るためにはどのような枠組みがあればよ いでしょうか?

10.2. NetBSD

NetBSDは、4.3/4.4BSD&386BSDベースのOSです。 プロジェクトは1993年3月21日から開始していて、現在も活発 に開発が進んでいます。 60種類以上のハードウェアを、単一ソースツリーでサポートしています。

ハードウェア依存/非依存部分を分離しており、IPv6をはじめとする最新のネットワークプロトコルをサポートして います。 ソースコードは、商用ルータ・プリンタ・家電製品・ゲーム機など、幅広い機器に組み込まれています。 OSとして組み込まれることもあれば、ネットワーク機能など、一部のコードが取り込まれることもあります。

NetBSDのウエブサイトは、http://www.NetBSD.org/ です。

NetBSD全般に関するガイドは、http://www.NetBSD.org/docs/guide/en/ にあります。

10.3. BSDライセンス

10.3.1. 2 条項 BSD ライセンス

http://www.jp.NetBSD.org/ja/about/redistribution.html

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

10.3.2. 2条項BSDライセンス(訳)

http://www.jp.NetBSD.org/ja/about/redistribution.html

ソースおよびバイナリー形式の再配布および使用を、変更の有無にかかわらず、 以下の条件を満たす場合に認める:

1. ソースコードの再配布においては、上記の著作権表示、この条件の列挙、下記の注意書きを残すこと。

18 / 48 2017/07/17 13:04 セキュリティキャンプ 2017 ドキュメント file:///usr/local/Github/NetBSD/Guide/_build/singleh...

2. バイナリー形式の再配布においては、上記の著作権表示、この条件の列挙、下記の注意書きを、 配布物に附属 した文書および/または他のものに再現させること。

このライセンスの前には著作権表示そのものが付きます。この後には注意書きが付き、このソフトウェアに関して問 題が生じても、作者は責任を負わないと述べます。

10.3.3. BSDライセンスとNetBSD

NetBSDのソースコードを自由に売ることができます。 NetBSDのソースコードから作ったバイナリを売ることもで きます。バイナリのソースコードを公開する義務はありません。

10.3.4. ライセンス条項が異なるソースを分離する

NetBSDの配布物には、2 条項 BSD ライセンスのソースコードで書かれているソフトウェアと、そうでないソフト ウェアが含まれています。NetBSDでは、ライセンス条項が違うソースコードをディレクトリごとに分けて管理して います。

% ls /usr/src/external/ CVS atheros gpl2 intel-fw-eula mit Makefile broadcom gpl3 intel-fw-public public-domain README bsd historical lgpl2 realtek apache2 cddl ibm-public lgpl3 zlib

10.4. 単一ソースツリー

NetBSDは、単一ソースツリーで15種類のCPUアーキテクチャと58種類以上のプラットホームで動きます。

% ls /usr/src/sys/arch CVS bebox hp300 m68k pmax sun3 Makefile cats hp700 mac68k sun68k README cesfic hpc macppc prep usermode acorn26 cobalt hpcarm mips rs6000 vax acorn32 dreamcast hpcmips mipsco sandpoint x68k algor emips hpcsh mmeye sbmips x86 alpha epoc32 hppa mvme68k sgimips xen amd64 evbarm i386 mvmeppc sh3 zaurus amiga evbmips ia64 netwinder sh5 amigappc evbppc ibmnws news68k shark arc evbsh3 iyonix newsmips arm evbsh5 landisk next68k sparc64 atari ews4800mips luna68k ofppc sun2

10.5. ソースコードからNetBSDをコンパイルする

ソースコードからNetBSDのインストールCDをコンパイルしてみましょう。

10.5.1. ダウンロード

ソースコードをダウンロードします。

% ftp ftp://ftp.jp.NetBSD.org/pub/NetBSD/NetBSD-current/tar_files/src.tar.gz

10.5.2. 展開

ソースコードを展開します。

% tar xvzf src.tar.gz

10.5.3. コンパイル

ここではbuild.shを利用して、i386用のバイナリを作ってみます。

-U

19 / 48 2017/07/17 13:04 セキュリティキャンプ 2017 ドキュメント file:///usr/local/Github/NetBSD/Guide/_build/singleh...

スーパーユーザー以外の権限でコンパイルするときに指定します。

-m 機種種類

どの機種向けの実行ファイルを作るのか指定します。

% cd src % ./build.sh -U -m i386 release : ===> Successful make release ===> build.sh ended: Tue Jul 2 15:37:03 JST 2013 ===> Summary of results: build.sh command: ./build.sh -U -m i386 release build.sh started: Tue Jul 2 17:38:40 JST 2013 NetBSD version: 6.99.22 MACHINE: i386 MACHINE_ARCH: i386 Build platform: 2.6.32-358.11.1.el6.centos.plus.x86_64 x86_64 HOST_SH: /bin/sh No $TOOLDIR/bin/nbmake, needs building. Bootstrapping nbmake MAKECONF file: /etc/mk.conf (File not found) TOOLDIR path: /home/jun/NetBSD/src/obj/tooldir.Linux-2.6.32-358.11.1.el6.centos.plus.x86_64-x86_64 DESTDIR path: /home/jun/NetBSD/src/obj/destdir.i386 RELEASEDIR path: /home/jun/NetBSD/src/obj/releasedir Created /home/jun/NetBSD/src/obj/tooldir.Linux-2.6.32-358.11.1.el6.centos.plus.x86_64-x86_64/bin/nbmake Updated makewrapper: /home/jun/NetBSD/src/obj/tooldir.Linux-2.6.32-358.11.1.el6.centos.plus.x86_64-x86_64/bin/nbmake-i386 Successful make release build.sh ended: Tue Jul 2 19:37:03 JST 2013 ===> .

コンパイルが正常に終了しました。NetBSD/i386のファイルができています。

% ls /home/jun/NetBSD/src/obj/releasedir/i386 INSTALL.html INSTALL.more INSTALL.ps INSTALL.txt binary installation $ ls /home/jun/NetBSD/src/obj/releasedir/i386/binary/sets/ MD5 etc.tgz kern-XEN3PAE_DOM0.tgz man.tgz text.tgz SHA512 games.tgz kern-XEN3PAE_DOMU.tgz misc.tgz base.tgz kern-GENERIC.tgz kern-XEN3_DOM0.tgz modules.tgz comp.tgz kern-MONOLITHIC.tgz kern-XEN3_DOMU.tgz tests.tgz

次に、OSのCD-ROMイメージを作ってみましょう。

% ./build.sh -U -m i386 iso-image : RELEASEDIR path: /home/jun/NetBSD/src/obj/releasedir : Successful make iso-image

正常に終了すると、NetBSD/i386のCD-ROMイメージができています。このイメージは、VirtualBoxなどでも利用できます。

$ ls /home/jun/NetBSD/src/obj/releasedir/images/ NetBSD-6.99.22-i386.iso ..... CDROMイメージができました!

次に、USBメモリに書き込むとブートするインストールイメージを作ってみましょう。

% ./build.sh -U -m i386 install-image RELEASEDIR path: /home/jun/NetBSD/src/obj/releasedir : Successful make install-image $ ls /home/jun/NetBSD/src/obj/releasedir/images/ MD5 NetBSD-6.99.22-i386-install.img.gz NetBSD-6.99.22-i386.iso SHA512 ...... USBメモリにコピーするとインストールできるイメージができました!

次に、USBメモリに書き込むとそのまま使えるLiveイメージを作ってみましょう。

% ./build.sh -U -m i386 live-image RELEASEDIR path: /home/jun/NetBSD/src/obj/releasedir $ ls /home/jun/NetBSD/src/obj/releasedir/images/ MD5

20 / 48 2017/07/17 13:04 セキュリティキャンプ 2017 ドキュメント file:///usr/local/Github/NetBSD/Guide/_build/singleh...

NetBSD-6.99.22-i386-install.img.gz NetBSD-6.99.22-i386-live-sd0root.img.gz ... liveイメージができました! NetBSD-6.99.22-i386-live-wd0root.img.gz NetBSD-6.99.22-i386.iso SHA512

10.6. X11も作ってみる

X11を含んだ形のCD-ROMイメージを作ってみましょう。

% cd .. % ls src src.tar.gz % ftp ftp://ftp.jp.NetBSD.org/pub/NetBSD/NetBSD-current/tar_files/xsrc.tar.gz % tar xzvf xsrc.tar.gz % ls src src.tar.gz xsrc xsrc.tar.gz % cd src % ./build.sh -U -u -X ../xsrc -x -m i386 release -u オプション: 初期化しない -X [パス名] : Xを作る。パス名を指定しない場合/usr/xsrc

Xのコンパイルができました。X関連のtgzファイルができています。

% $ ls /home/jun/NetBSD/src/obj/releasedir/i386/binary/sets MD5 games.tgz kern-XEN3_DOM0.tgz tests.tgz xfont.tgz SHA512 kern-GENERIC.tgz kern-XEN3_DOMU.tgz text.tgz xserver.tgz base.tgz kern-MONOLITHIC.tgz man.tgz xbase.tgz comp.tgz kern-XEN3PAE_DOM0.tgz misc.tgz xcomp.tgz etc.tgz kern-XEN3PAE_DOMU.tgz modules.tgz xetc.tgz

Xを含むCD-ROM/起動イメージを作ってみましょう。

% ./build.sh -U -u -m i386 iso-image % ./build.sh -U -u -m i386 install-image % ./build.sh -U -u -m i386 live-image % ls ls /home/jun/NetBSD/src/obj/releasedir/images/ MD5 NetBSD-6.99.22-i386-install.img.gz NetBSD-6.99.22-i386-live-sd0root.img.gz NetBSD-6.99.22-i386-live-wd0root.img.gz NetBSD-6.99.22-i386.iso SHA512

10.7. X Window システムの初期設定

X Windowシステムも含めてインストールした場合、以下の手順で設定ファイルを作ります。

% su root .... root権限で実行します。 # X -configure .... /root/xorg.conf.new ができます。 # mv /root/xorg.conf.new /etc/X11/xorg.conf % startx .... twmの画面が出てくれば成功です!twm!twm! % xeyes & .... 浮動小数点チェック:ちゃんと目が回るかな?

10.7.1. .xinitrc のコピー

cp /etc/X11/xinit/xinitrc ~/.xinitrc

10.7.2. キーボードレイアウトの変更

コンソール画面ではwsconsを利用して、キーボードレイアウトを変更します。

% more /etc/wscons.conf : # Select a kernel builtin keyboard map by uncommenting the following line and

21 / 48 2017/07/17 13:04 セキュリティキャンプ 2017 ドキュメント file:///usr/local/Github/NetBSD/Guide/_build/singleh...

# altering the country code to your requirements # (choose from user, us, uk, be, cz, dk, nl, fi, fr, de, gr, hu, it, jp, no, # pl, pt, ru, es, sv, sf, sg, ua) # See wsconsctl(8), pckbd(4), ukbd(4) etc. for more details. #encoding us.swapctrlcaps encoding jp.swapctrlcaps .... この行を追加します

X Window システムでは、setxkbmapコマンドを利用して、レイアウトを切り替えます。

setxkbmap -model jp106 jp -option ctrl:swapcap

10.7.3. 外部ディスプレイへの出力切り替え

外部ディスプレイへの出力は、xrandrコマンドで行います。xrandrを実行すると、X画面が表示されますが、色がお かしい場合、コンソールを一度、X以外に切り替えてからX画面に戻ると正しく表示されます。うまく切り替わらない 場合は、/etc/rc.confに、wscons=YESが指定してあるか確認してください。

% grep wscons /etc/rc.conf wscons=YES % xrandr --auto ... 外部ディスプレイ端子に出力されます。 Control+Alt+F4 を押して、コンソール画面に切り替えます。 Control+Alt+F5 を押して、X画面に戻ります。

10.8. ネットワーク設定

10.8.1. DHCPでつないでみる

# dhcpcd ale0

10.8.2. 無線LANの設定(WEP)

# ifconfig ath0 up # ifconfig ath0 ssid "SSIDをここに書く" nwkey "WEPキーをここに書く"

10.8.3. 無線LANの設定(WPA-PSK)

% cat wpa.conf ctrl_interface=/var/run/wpa_supplicant

ctrl_interface_group=wheel

network={ ssid="SSIDをここに書く" scan_ssid=1 key_mgmt=WPA-PSK psk="pskをここに書く" } # /usr/sbin/wpa_supplicant -B -i athn0 -c wpa.conf # dhcpcd athn0

10.9. rc.d

# ls /etc/rc.d DAEMON downinterfaces ldpd perusertmp savecore DISKS envsys local screenblank LOGIN fccache lpd pf_boot securelevel NETWORKING fsck lvm pflogd sshd RCS fsck_root makemandb postfix staticroute SERVERS ftp_proxy mdnsd powerd swap1 accounting ftpd mixerctl ppp swap2 altqd gpio mopd pwcheck sysctl amd hostapd motd quota sysdb

22 / 48 2017/07/17 13:04 セキュリティキャンプ 2017 ドキュメント file:///usr/local/Github/NetBSD/Guide/_build/singleh...

apmd httpd mountall racoon syslogd bluetooth identd mountcritlocal raidframe timed bootconf.sh ifwatchd mountcritremote raidframeparity tpctl bootparams inetd mountd random_seed ttys ccd moused rarpd cgd ipfs mrouted rbootd virecover cleartmp ipmon named rndctl wdogctl cron ipnat ndbootd root wpa_supplicant dbus ipsec network route6d wscons devpubd irdaattach newsyslog routed wsmoused dhclient iscsi_target nfsd rpcbind xdm dhcpcd isdnd nfslocking rtadvd xfs dhcpd isibootd rtclocaltime ypbind dhcrelay kdc ntpd rtsold yppasswdd dmesg ldconfig ntpdate rwho ypserv # cat /etc/rc.conf : wscons=YES rtclocaltime=YES hostname=yourhostname.example.com ip6mode=autohost rtsol=YES sshd=YES powerd=YES dbus=YES

10.9.1. httpdの起動方法

NetBSDには、標準でbozohttpdというhttpdプログラムが含まれています。以下の手順で起動できます。

# cat > /var/www/index.html << EOF test page test EOF # /etc/rc.d/httpd onestart # grep httpd /etc/rc.conf httpd=YES # /etc/rc.d/httpd start # /etc/rc.d/httpd stop

10.10. Tier I/II/III

10.10.1. Tier I

Tier I: Focus — support is part of NetBSD’s strategy Port CPU Machines Latest Release amd64 x86_64 64-bit x86-family machines 6.1 with AMD and Intel CPUs evbarm arm ARM evaluation boards 6.1 evbmips mips MIPS-based evaluation 6.1 boards evbppc powerpc PowerPC-based evaluation 6.1 boards hpcarm arm StrongARM based Windows 6.1 CE PDA machines i386 i386 32-bit x86-family generic 6.1 machines (“PC clones”) sparc64 sparc Sun UltraSPARC (64-bit) 6.1 xen i386 x86_64 Xen Virtual Machine Monitor 6.1

10.10.2. Tier II

23 / 48 2017/07/17 13:04 セキュリティキャンプ 2017 ドキュメント file:///usr/local/Github/NetBSD/Guide/_build/singleh...

Tier II: Organic — evolving at its own pace Port CPU Machines Latest Release acorn26 arm Acorn Archimedes, A-series 6.1 and R-series systems acorn32 arm Acorn RiscPC/A7000/NC and 6.1 compatibles algor mips Algorithmics MIPS 6.1 evaluation boards alpha alpha Digital Alpha (64-bit) 6.1 amiga m68k Commodore Amiga, 6.1 MacroSystem DraCo amigappc powerpc PowerPC-based Amiga 6.1 boards arc mips Machines following the 6.1 Advanced RISC Computing spec atari m68k Atari TT030, Falcon, Hades 6.1 bebox powerpc Be Inc’s BeBox 6.1 cats arm Chalice Technology’s Strong 6.1 Arm evaluation board cesfic m68k CES’s FIC8234 VME 6.1 processor board cobalt mips Cobalt Networks’ 6.1 Microservers dreamcast sh3 Sega Dreamcast game 6.1 console emips mips Machines based on 6.1 “Extensible MIPS” evbsh3 sh3 Evaluation boards with 6.1 Renesas (Hitachi) Super-H SH3 and SH4 CPUs ews4800mips mips NEC’s MIPS based EWS4800 6.1 hp300 m68k Hewlett-Packard 9000/300 6.1 and 400 series hp700 hppa Hewlett-Packard 9000/700 6.1 series hpcmips mips MIPS based Windows CE 6.1 PDA machines hpcsh sh3 Renesas (Hitachi) SH3 and 6.1 SH4 based Windows CE PDA machines ia64 itanium Itanium family of processors none ibmnws powerpc IBM Network Station Series 6.1 1000 iyonix arm Iyonix ARM pc 6.1 landisk sh3 SH4 based NAS appliances 6.1 by I-O DATA luna68k m68k OMRON Tateisi Electronics’ 6.1 LUNA series mac68k m68k Apple Macintosh 6.1 macppc powerpc Apple Power Macintosh and 6.1 clones mipsco mips Mips family of workstations 6.1 and servers mmeye sh3 Brains’ mmEye Multi Media 6.1 Server

24 / 48 2017/07/17 13:04 セキュリティキャンプ 2017 ドキュメント file:///usr/local/Github/NetBSD/Guide/_build/singleh...

mvme68k m68k Motorola MVME 68k SBCs 6.1 mvmeppc powerpc Motorola MVME PowerPC 6.1 SBCs netwinder arm StrongARM based 6.1 NetWinder machines news68k m68k Sony’s m68k based “NET 6.1 WORK STATION” series newsmips mips Sony’s MIPS based “NET 6.1 WORK STATION” series next68k m68k NeXT 68k ‘black’ hardware 6.1 ofppc powerpc Generic OpenFirmware 6.1 compliant PowerPC machines pmax mips Digital MIPS-based 6.1 and DECsystems prep powerpc PReP (PowerPC Reference 6.1 Platform) and CHRP machines rs6000 powerpc MCA-based IBM RS/6000 6.1 workstations sandpoint powerpc Motorola Sandpoint 6.1 reference platform sbmips mips Broadcom SiByte evaluation 6.1 boards sgimips mips Silicon Graphics’ MIPS-based 6.1 workstations shark arm Digital DNARD (“shark”) 6.1 sparc sparc Sun SPARC (32-bit) 6.1 sun2 m68k Sun 2 6.1 sun3 m68k Sun 3 and 3x 6.1 vax vax Digital VAX 6.1 x68k m68k Sharp X680x0 series 6.1 zaurus arm Sharp C7x0/C860/C1000 6.1 /C3x00 series PDA

10.10.3. Tier III: Life Support — severely incapacitated or broken

TierIII状態のPortはありません。

10.11. サポートしているCPU

Ports by CPU architecture CPU Tier(s) Port(s) alpha II alpha arm I, II acorn26 acorn32 cats evbarm hpcarm iyonix netwinder shark zaurus hppa II hp700 i386 I i386 xen m68010 II sun2 m68k II amiga atari cesfic hp300 luna68k mac68k mvme68k news68k next68k sun3 x68k mipseb I, II emips evbmips ews4800mips mipsco newsmips sbmips sgimips

25 / 48 2017/07/17 13:04 セキュリティキャンプ 2017 ドキュメント file:///usr/local/Github/NetBSD/Guide/_build/singleh...

mipsel I, II algor arc cobalt evbmips hpcmips pmax sbmips powerpc I, II amigappc bebox evbppc ibmnws macppc mvmeppc ofppc prep rs6000 sandpoint sh3eb II evbsh3 mmeye sh3el II dreamcast evbsh3 landisk hpcsh sparc II sparc sparc64 I sparc64 (Can also run sparc binaries) vax II vax x86_64 I amd64 (Can also run i386 binaries), xen

10.12. NetBSDを使ってみる

10.12.1. daily-snapshot

ftp://nyftp.netbsd.org/pub/NetBSD-daily/ 以下には、 毎日コンパイルされているNetBSDの動作イメージがあります。 ミラー サイトは、http://nycdn.netbsd.org/pub/NetBSD-daily/ にあります。

ftp://nyftp.netbsd.org/pub/NetBSD-daily/ の一覧 名前 サイズ 最終更新日時 HEAD 2013年07月10日 01時00分00秒 ファイル:README 1 KB 2012年11月21日 00時00分00秒 netbsd-5 2013年07月10日 01時00分00秒 netbsd-5-1 2013年07月05日 01時00分00秒 netbsd-5-2 2013年07月01日 01時00分00秒 netbsd-6 2013年07月04日 01時00分00秒 netbsd-6-0 2013年07月03日 01時00分00秒 ftp://nyftp.netbsd.org/pub/NetBSD-daily/HEAD の一覧 名前 サイズ 最終更新日時 201307060520Z 2013年07月06日 18時13分00秒 201307070030Z 2013年07月07日 12時23分00秒 201307071220Z 2013年07月08日 00時24分00秒 201307080020Z 2013年07月08日 12時17分00秒 201307081220Z 2013年07月09日 00時15分00秒 201307090630Z 2013年07月09日 18時29分00秒

10.12.2. PCでどの程度起動するか確認する

ftp://nyftp.netbsd.org/pub/NetBSD-daily/HEAD/201307080020Z/images/NetBSD-6.99.23-amd64-install.img.gz

10.12.3. RPIでどの程度起動するか確認する

ftp://nyftp.netbsd.org/pub/NetBSD-daily/HEAD/201307080020Z/evbarm/binary/gzimg/rpi.img.gz ftp://nyftp.netbsd.org/pub/NetBSD-daily/HEAD/201307080020Z/evbarm/binary/gzimg/rpi_inst.img.gz

10.12.4. ておくれイメージ

筒井さんが配布しているNetBSD/i386,amd64,WZero3で動作する イメージファイルがあります。 NetBSDの設定例としても優 れているので、一読をおすすめします。

http://www.ceres.dti.ne.jp/tsutsui/netbsd/liveimage ...i386/amd64 http://www.ceres.dti.ne.jp/tsutsui/netbsd/liveimage/wzero3.html ..WZero3

http://www.youtube.com/watch?v=Jl0BZVfVSLs ... WZero3起動動画

26 / 48 2017/07/17 13:04 セキュリティキャンプ 2017 ドキュメント file:///usr/local/Github/NetBSD/Guide/_build/singleh...

http://www.slideshare.net/tsutsuii/netbsdcrossliveimage http://www.ceres.dti.ne.jp/tsutsui/osc12do/NetBSD-cross-liveimage.html

10.12.5. RaspberryPI用NetBSDイメージ

RaspberryPI用NetBSDイメージを配布しています。SDカードにコピーして、RaspberryPIから起動すると動作します。

ftp://ftp.netbsd.org/pub/NetBSD/misc/jun/raspberry-pi/ ftp://ftp.netbsd.org/pub/NetBSD/misc/jun/raspberry-pi/README-RPI.pdf

10.12.6. ドリームキャスト版CD

http://ftp.netbsd.org/pub/NetBSD/misc/tsutsui/dreamcast/ dreamcastbootcd-20101010.tar.gz

1. CD-R付きNetBSDマシンで展開します。 CD-R入れる2. 3. makeすると、バイナリをダウンロードしてブートCDが焼ける 4. dreamcastに入れるとNetBSDが起動します。

10.12.7. X68030エミュレータ XM6i

Windows/NetBSD/CentOS上で動くX68000エミュレータです。

NetBSD/x68kがブートします http://xm6i.org/ OSC広島で祭り 21世紀のX68→実機デバッグ&エミュレータデバッグ CPU内部の挙動を細かく観測できる ATCエントリが見える

10.12.8. WindowsCE向けNetBSD

MIPS系CPU搭載 NEC MobileGear SHARP Tellios SH系CPU搭載 HP Jornadaシリーズ SEGA DreamCast ARM系CPU搭載 Compaq iPAQ HP Jornadaシリーズ WZero3

10.12.8.1. ブートまでの流れ

コンパクトフラッシュを2分割します WindowsCEの領域 NetBSD/hpcmipsの領域 WindowsCE上のブートローダからブート メモリ空間を取れるだけ確保する カーネルファイルをメモリ空間に送り込んで NetBSDを起動します

10.12.8.2. NetBSD/hpcsh

SH搭載WindowsCEマシン向け HP Jornada680 690 620LX 日立ペルソナ HPW50 230 (NetBSD/sh3+NetBSD/hpcmips)/2+α 従来の開発ノウハウとソフトウェア資産 NetBSD/hpcmipsとのソース共有化 NetBSD/Dreamcast互換

27 / 48 2017/07/17 13:04 セキュリティキャンプ 2017 ドキュメント file:///usr/local/Github/NetBSD/Guide/_build/singleh...

10.12.8.3. NetBSD/hpcarm

StrongArm搭載WindowsCEマシン向け SA-1100/1110対応 HP Jornada720 WZero3 Compaq iPAQ hpcファミリー中最速

10.12.8.4. NetBSD/evbarm

RPI Gumstix Netwalker (KOBO)

10.13. 新しく移植するときには

1. まず、機種に依存しない部品を組み合わせます CPU..バス.. 2. 次に機種依存部分だけを追加します 3. 足りない部分を作りこみます 4. 自分で自分をコンパイルして、配布できる状態にします 5. pkgsrcにあるソフトウェアを実際に動かしてみます 6. 何か目的を持った配布イメージを配ってみます

twitterクライアント,Webサーバ....

10.14. 移植成果をNetBSDに組み込む

カーネル部分を移植する セルフコンパイルでスナップショット作成 パッケージソフトウェアセットを作る ドキュメント整備 Web・マニュアル・FAQ インストーラを作る メーリングリストを作る

10.14.1. プログラミング以外にすること

Port登録 NetBSD/???? 部分 Webページ作成 バグレポートデータベース作成 GNATS マニュアル作成 インストールマニュアル・マニュアル・FAQ メーリングリスト作成 ニュースとして報告

10.14.2. アーキテクチャに共通する部分

Package system バス USB、CardBus デバイスドライバ オーディオフレームワーク OSエミュレーション バスサポート

10.14.3. 仮想デバイス

Concatenated disk driver Memory disk driver RAIDframe disk

28 / 48 2017/07/17 13:04 セキュリティキャンプ 2017 ドキュメント file:///usr/local/Github/NetBSD/Guide/_build/singleh...

Random device Vnode disk

10.14.4. 物理デバイス

オーディオデバイス WSCONS - ワークステーションコンソール wsdisplay wskbd wsmouse

10.14.5. 4.4BSD由来の機能

nullfs – loopbackマウント unionfs – ファイルシステムを重ねる lfs – 高速書き込み性能 NFS – NFSv3 NFSoverTCP IP virtual hosting

10.14.6. NetBSD独自の改良

NFS – WebNFS NFS over IPv6 UVM virtual memory system UBC unified buffer cache system Cardbus Wscons USB ver2.0 64bit clean Wireless networking http://www.NetBSD.org/about/features.html ZFS? Google Summer of Code

10.14.7. 2038年問題

1970/1/19 0:0:0 GMTからの経過秒数 2^31-1=2147483647 2,147,483,648秒以上を表示できるか 対応済み:date -r 2147483648 Tue Jan 19 12:14:08 JST 2038 未対応:date -r 2147483648 Tue Jan 19 12:14:07 JST 2038

10.15. NetBSD:カーネル

機種に依存する部分 i386/MIPS/SH/68000… デバイスに依存する部分 PCIバス/ISAバス/PCMCIA… その他 メモリ管理

10.15.1. 新しいマシンをサポートするには

搭載CPUがサポートされているか? 搭載バスがサポートされているか? 搭載デバイスがサポートされているか? 共有部分はすべてで共有できる サポートされていない部分だけを作り、CVSツリーに追加する

10.16. NetBSDのリリース

リリース版 2.0 3.0 4.0 5.0......

29 / 48 2017/07/17 13:04 セキュリティキャンプ 2017 ドキュメント file:///usr/local/Github/NetBSD/Guide/_build/singleh...

マイナーリリース 2.1.. 3.1... パッチリリース 2.1.1... 3.1.1... 開発版 2.99 3.99 4.99 5.99... カーネルAPIの変更があるとき 2.99.1...

10.16.1. NetBSD開発ロードマップ

NetBSD release announcements NetBSD 0.8 20 Apr 1993 NetBSD 0.9 23 Aug 1993 NetBSD 1.0 26 Oct 1994 NetBSD 1.1 26 Nov 1995 NetBSD 1.2 04 Oct 1996 NetBSD 1.2.1 20 May 1997 NetBSD 1.3 04 Jan 1998 NetBSD 1.3.1 09 Mar 1998 NetBSD 1.3.2 29 May 1998 NetBSD 1.3.3 23 Dec 1998 NetBSD 1.4 12 May 1999 NetBSD 1.4.1 26 Aug 1999 NetBSD 1.4.2 19 Mar 2000 NetBSD 1.4.3 25 Nov 2000 NetBSD 1.5 06 Dec 2000 NetBSD 1.5.1 11 Jul 2001 NetBSD 1.5.2 13 Sep 2001 NetBSD 1.5.3 22 July 2002 NetBSD 1.6 14 Sep 2002 NetBSD 1.6.1 21 Apr 2003 NetBSD 1.6.2 01 Mar 2004 NetBSD 2.0 09 Dec 2004 NetBSD 2.0.2 14 Apr 2005 NetBSD 2.0.3 31 Oct 2005 NetBSD 2.1 02 Nov 2005 NetBSD 3.0 23 Dec 2005 NetBSD 3.0.1 24 July 2006 NetBSD 3.0.2 04 Nov 2006 NetBSD 3.1 04 Nov 2006 NetBSD 4.0 19 Dec 2007 NetBSD 4.0.1 14 Oct 2008 NetBSD 5.0 29 Apr 2009 NetBSD 5.0.1 02 Aug 2009 NetBSD 5.0.2 12 Feb 2010 NetBSD 5.1 19 Nov 2010 NetBSD 5.1.2 02 Feb 2012 NetBSD 5.2 03 Dec 2012 NetBSD 6.0 17 Oct 2012 NetBSD 6.0.1 26 Dec 2012 NetBSD 6.0.2 18 May 2013 NetBSD 6.1 18 May 2013

30 / 48 2017/07/17 13:04 セキュリティキャンプ 2017 ドキュメント file:///usr/local/Github/NetBSD/Guide/_build/singleh...

10.16.2. Automated Testing Framework

http://www-soc.lip6.fr/~bouyer/NetBSD-tests/xen/ に、i386/amd64に関する自動テストレポートがあります。

# cd /usr/tests; # atf-run | atf-report

10.17. 組織構成

Core 5人 テクニカルマネージメント Port maintainer 28人 各実装に関する担当者 Developer CVS/WWW/FTP等開発資産に書き込みできる アクティブなのは160人

10.17.1. NetBSD Foundation,Inc

デラウェア州の法人組織 サーバマシンを所有 お金と寄付を管理 NetBSDの版権を管理 http://www.NetBSD.org/foundation/

10.17.2. developer

直接ソースを変更できる CVS/FTP/WWWサーバの内容 世界中で160人 GNATSでバグ管理 cvsweb.netbsd.org 日本人22人 http://www.NetBSD.org/people/developers.html

10.17.3. NetBSD開発者世界分布図

10.17.4. NetBSD開発者分布図

10.17.5. Developerになるには(1)

PGP/GnuPGの鍵を作る fingerprint印刷 gpg –fingerprint [email protected] fingerprint交換 他のDeveloperとfingerprint印刷を交換 本人確認 公的証明書を見せあって本人確認

10.17.6. Developerになるには(2)

相手の鍵を取り込んで、fingerprint照合 gpg-email-confirm [email protected].. ランダムな文字列を送る メールを暗号化して送り返してもらう 送った文字列とメールアドレスを照合する 鍵にサインしてもらって送り返してもらう Developerサイン入り自分の鍵ができる 自分の鍵束にimport pgp.mit.eduにサイン入り自分の鍵を登録する

10.17.7. 世界中で打ち合わせをする時間

May 21 03:00 PM -0700 America/Los_Angeles

31 / 48 2017/07/17 13:04 セキュリティキャンプ 2017 ドキュメント file:///usr/local/Github/NetBSD/Guide/_build/singleh...

May 21 06:00 PM -0400 America/New_York May 21 11:00 PM +0100 Europe/London May 22 00:00 AM +0200 Europe/Berlin May 22 01:00 AM +0300 Europe/Helsinki May 22 07:00 AM +0900 Asia/Tokyo May 22 08:00 AM +1000 Australia/Melbourne

10.17.8. Port-maintainer

移植責任者 57種類のうち15種類以上は日本人が担当 日本人担当ハードウェア15/56 NetBSD動作マシン@日本

10.17.9. 日本からの貢献

国産ハードウェアサポート ゲーム機・携帯情報端末サポート IPv6/ IPSEC Pkgsrc CardBusサポート MIPS/SH/m68K NetBSD書籍が世界一多く出版される developer22人

10.18. クロス開発環境

NetBSD/i386でクロスコンパイル build.sh –m hpcmips

Pkgsrc/cross以下に各種パッケージ Windows環境でクロスコンパイル Cygwinなど Linux上でクロスコンパイル FreeBSD上でクロスコンパイル distcc - コンパイルだけ速いマシンで pkgsrcをクロスコンパイル pkgsrcのcrossbuildでググる! http://www.lins.jp/~obata/diary/200803242.html クロス用toolsを作る

10.18.1. バイナリ互換性を利用する

Cobalt Qube2でhpcmipsバイナリ作成 MIPSでendian little =mipsel同士なら動く ユーザランドはほとんどそのまま動く パッケージも共通化 NetBSD/{pmax,cobalt,arc,hpcmips}で共通 数GBある各種アプリケーション群を共通にする

10.18.2. エミュレーション環境

Linuxエミュレーション i386以外のバイナリも動くようにする FreeBSD Windows2000/XP PECOFF Win32アプリケーションをそのまま動かす ゲーム/WINE

Unixware

32 / 48 2017/07/17 13:04 セキュリティキャンプ 2017 ドキュメント file:///usr/local/Github/NetBSD/Guide/_build/singleh...

10.19. NetBSD開発者情報

ftp/WWW/CVS/SUPサーバ http://www.jp.NetBSD.org/ja/JP/sites.html 開発環境設定方法 http://www.NetBSD.org/developers/ http://releng.NetBSD.org

10.19.1. ソースコード取得方法

ftp Cvs cvsup Sup Anonymous CVS rsync

10.20. www.netbsd.org 翻訳

現在 www.netbsd.org上のCVSリポジトリ 削除→各国のwwwサーバ 各国の翻訳 ドイツ語 韓国語 ポーランド語 フランス語 緊急度の高い情報を正確に広報する 古いドキュメントでもあった方がいいか そ もそも英語のドキュメントは正確か

10.21. まとめ

NetBSDはいろんなハードで動きます 自作ソフトをいろんなCPUで試せます 最初から移植を考えて設計されています 試作機に移植する工数が最小ですみます 自分の専門分野だけを組み込めます 自由に利用可能で再配布可能なOSです 移植するとIPv6マシンに変貌 さまざまなCPU向けIPv6スタックがあります 愛着あるハードウェアが生き返ります 最新のネットワークコードが利用できます もしかしたらリサイクル団体なんでしょうか? 11. pkgsrcでソフトウェアをインストールする

pkgsrcを利用すると、さまざまなソフトウェアをコンパイル、インストールすることができます。

1. まずOSをインストールします 2. pkgsrc.tar.gzを展開します 3. 必要なパッケージをコンパイル、インストールします

,icewm,kterm,anthy-elisp,ja-less libreoffice4,firefox,gimp ...

11.1. pkgsrcをダウンロード

pkgsrcのWebサイトはhttp://www.pkgsrc.org/です。pkgsrcは、一年に4回定期的にリリースされます。

% ftp ftp://ftp.pkgsrc.org/pub/pkgsrc/ pkgsrc-2012Q4 pkgsrc-2013Q1 pkgsrc-2013Q2 : % ftp ftp://ftp.pkgsrc.org/pub/pkgsrc/stable/pkgsrc.tar.gz 日本のミラーの場合:

33 / 48 2017/07/17 13:04 セキュリティキャンプ 2017 ドキュメント file:///usr/local/Github/NetBSD/Guide/_build/singleh...

% ftp ftp://ftp7.jp.NetBSD.org/pub/pkgsrc/stable/pkgsrc.tar.gz

/usr/pkgsrcにダウンロードしたtar ファイルを展開してみましょう。

% su # tar xzvf pkgsrc.tar.gz -C /usr ... /usr以下に展開します。 # ls /usr/pkgsrc CVS comms finance math pkglocate wip Makefile converters fonts mbone pkgtools wip-jp README cross games meta-pkgs print wm archivers databases geography misc regress www audio devel graphics mk security x11 benchmarks distfiles ham multimedia shells biology doc inputmethod net sysutils bootstrap editors lang news templates cad licenses packages textproc chat filesystems mail parallel time

ソフトウェアをコンパイルしてインストールする枠組みが、/usr/pkgsrc/ジャンル/ソフトウェア名 以下にあります。 LibreOfficeをコンパイルして、インストールしたいときには、次のようにコマンドを実行します。

# cd /usr/pkgsrc/misc/libreoffice4 # make package-install

うまくコンパイルしてインストールできると、LibreOfficeを実行出来ます。

% soffice

11.2. pkgsrcを使ってみる

「RaspberryPIでmikutterというtwitterクライアントを使いたい」場合を考えてみます。 インストールできそうなソフトウェア は、/usr/pkgsrc/ジャンル名/ 以下にディレクトリがあります。 ここに使いたいソフトウェアがあれば、コンパイルしてインス トールできるかもしれません。

% ls /usr/pkgsrc/* |grep mikutter mikutter .... pkgsrcにmikutterがある! % cd /usr/pkgsrc/*/mikutter .... ジャンルはわからないけど移動 % pwd /usr/pkgsrc/net/mikutter .... "net" の下にあった % ls CVS DESCR Makefile PLIST distinfo files % cat DESCR .... ソフトウェアの説明 Mikutter is a Twitter client aim for endsville Twitter client For all of Miku-aholics and Twitter-holics. % cat Makefile # $NetBSD: Makefile,v 1.68 2013/06/23 01:09:43 tsutsui Exp $ #

DISTNAME= mikutter.0.2.2.1264 ... mikutterのバージョンとか PKGNAME= ${RUBY_PKGPREFIX}-${DISTNAME:S/./-/} CATEGORIES= net MASTER_SITES= http://mikutter.hachune.net/bin/ ... 配布サイト

MAINTAINER= [email protected] ... このパッケージを管理している人 HOMEPAGE= http://mikutter.hachune.net/ ... ソフトウェアのホームページ COMMENT= Simple, powerful, and moeful twitter client .. 一行説明 LICENSE= gnu-gpl-v3 AND cc-by-sa-v3.0 ... ソフトウェアのライセンス

RUBY_VERSION_SUPPORTED= 193

.include "../../lang/ruby/rubyversion.mk"

DEPENDS+= xdg-utils-[0-9]*:../../misc/xdg-utils ... 依存しているソフトウェア DEPENDS+= ${RUBY_PKGPREFIX}-hmac>=0.4.0:../../security/ruby-hmac : % cat PLIST ... インストールするファイルの一覧です @comment $NetBSD: PLIST,v 1.23 2013/05/15 11:24:14 obache Exp $ bin/mikutter ... /usr/pkg/bin/mikutterにインストールされます share/applications/mikutter.desktop

34 / 48 2017/07/17 13:04 セキュリティキャンプ 2017 ドキュメント file:///usr/local/Github/NetBSD/Guide/_build/singleh...

share/doc/mikutter/README share/mikutter/core/boot/check_config_permission.rb share/mikutter/core/boot/load_plugin.rb share/mikutter/core/boot/mainloop.rb share/mikutter/core/boot/option.rb

% distinfo .... ダウンロードするファイルの一覧とチェックサム $NetBSD: distinfo,v 1.60 2013/06/16 08:58:06 obache Exp $

SHA1 (mikutter.0.2.2.1264.tar.gz) = f93757ca51f3fe9f555df32c86c2ed7021992887 RMD160 (mikutter.0.2.2.1264.tar.gz) = bd3f4a49eb8d96a225b4cc704115995fe390e42a Size (mikutter.0.2.2.1264.tar.gz) = 2318031 bytes

mikutterと、mikutterをインストールするために必要なソフトウェアをインストールoします。

% su # cd /usr/pkgsrc/net/mikutter # make package-install

11.2.1. RaspberryPIで使いそうなソフトを一気にインストールする

/usr/pkgsrc/ジャンル名を眺めて、使いそうなソフトウェアをリストアップします。

% cat List kterm tcsh vlgothic-ttf icewm xli mikutter uim fossil sudo scmgit-base zsh dillo

簡単なシェルスクリプトを作って、実行します。コンパイルがうまく進めば、必要なソフトウェアがすべてソースコードからコ ンパイル・インストールされた状態になります。

% cat Package for i in `cat List` do cd /usr/pkgsrc/*/$i make package-install done % su # sh Package # pkg_info .... インストールされたパッケージの一覧を表示します。

11.3. デスクトップ環境を作ってみる

11.3.1. デスクトップ環境の設定:Xfceの場合

# cd /usr/pkgsrc/meta-pkgs/xfce4 # make package-install # pkg_info |wc .... 110個程度の関連パッケージがインストールされます % rehash .... ログインシェルがcshの場合に必要です % startxfce4 .... 英語版の環境が立ち上がります % setenv LANG ja_JP.UTF-8 .... ログインシェルがcshの場合 % export LANG=ja_JP.UTF-8 .... ログインシェルがshの場合 % startxfce4 .... 日本語版の環境が立ち上がります

11.3.2. デスクトップ環境の設定:gnomeの場合

35 / 48 2017/07/17 13:04 セキュリティキャンプ 2017 ドキュメント file:///usr/local/Github/NetBSD/Guide/_build/singleh...

# cd /usr/pkgsrc/meta-pkgs/desctop-gnome # make package-install # gnome-session

11.3.3. デスクトップ環境の設定: deforaos-desktopの場合

RPIなどでは、/etc/mk.confに以下の行を追加します。 PKG_OPTIONS.deforaos-terminal=embedded

# cd /usr/pkgsrc/meta-pkgs/deforaos-desktop # make package-install

11.3.4. ウィンドウマネージャの設定:icewmの場合

# cd /usr/pkgsrc/wm/icewm # make package-install # which icewm /usr/pkg/bin/icewm % cd % ls .xinitrc ...... xinitrcがあるかどうか確認します。 もし.xinitrcがない場合、以下の手順でコピーします。 cp /etc/X11/xinit/xinitrc -/.xinitrc ... XXX:上書きしないよう気をつけて! % vi .xinitrc ..... 最後の5行を書き換えます。 twm & xclock -geometry 50x50-1+1 & /usr/X11R7/bin/xterm -geometry 80x50+494+51 & /usr/X11R7/bin/xterm -geometry 80x20+494-0 & exec /usr/X11R7/bin/xterm -geometry 80x66+0+0 -name login ↓ xclock -geometry 50x50-1+1 & /usr/X11R7/bin/xterm -geometry 80x50+494+51 & /usr/X11R7/bin/xterm -geometry 80x20+494-0 & /usr/X11R7/bin/xterm -geometry 80x66+0+0 & icewm % startx ..... icewmが起動します。 % cp -r /usr/pkg/share/icewm -/.icewm .... メニューをカスタマイズ % vi -/.icewm/menu prog Kterm Kterm kterm -fk k14 -fn a14 -fr r14 -km euc prog SeaMonkey seamonkey seamonkey prog Mikutter mikutter miutter separator prog Shotwell shotwell shotwell prog GtkPod gtkpod gtkpod prog Fossil fossil fossil server /usr/local/fossil/my-repo separator prog OpenOffice soffice soffice prog Acroread acroread9 acroread9 separator menuprog Gnome folder icewm-menu-gnome1 --list menuprog Gnome folder icewm-menu-gnome2 --list menuprog KDE folder icewm-menu-gnome --list menufile Emulators folder programs ... 階層構造 menufile Games folder games % vi -/.icewm/programs ... .icewmで指定した階層構造 # This is an example for IceWM's toolbar definition file. # # Place your variants in /usr/pkg/etc/icewm or in $HOME/.icewm # since modifications to this file will be discarded when you # (re)install icewm. # prog Xnp2 xnp2 xnp2 prog XM6i xm6i xm6i prog Minux Minux Minux % vi -/.icewm/preferences : # Desktop background image # DesktopBackgroundImage="" .... 壁紙のイメージをここで設定できます。

36 / 48 2017/07/17 13:04 セキュリティキャンプ 2017 ドキュメント file:///usr/local/Github/NetBSD/Guide/_build/singleh...

11.3.5. ウィンドウマネージャの設定:jwmの場合

# cd /usr/pkgsrc/wm/jwm # make package-install

11.4. 漢字変換&emacs

11.4.1. mozcを利用する場合

% cd /usr/pkgsrc/inputmethod/ibus-mozc # make package-install

漢字変換に必要な環境変数を.xinitrc等で設定します。

export LANG=ja_JP.eucJP export GTK_IM_MODULE="ibus" export XMODIFIERS="@im=ibus" export QT_IM_MODULE="ibus" ibus-daemon --xim &

emacsを利用する場合は、mozc-elispパッケージをインストールします。

% cd /usr/pkgsrc/inputmethod/mozc-elisp # make package-install

11.4.2. anthyを利用する場合

# cd /usr/pkgsrc/inputmethod/anthy # make package-install # cd /usr/pkgsrc/inputmethod/uim # make package-install

.xinitrcに以下の行を追加します。

export GTK_IM_MODULE=uim export LANG=ja_JP.eucJP export XMODIFIERS=@im=uim export QT_IM_MODULE="uim" uim-xim &

emacsを利用する場合は、anthy-elispパッケージをインストールします。

% cd /usr/pkgsrc/inputmethod/anthy-elisp # make package-install

.emacs に、以下の記述を追加します。

(set-language-environment "Japanese") (set-default-coding-systems 'utf-8) (set-language-environment "Japanese") (load-library "anthy") (setq default-input-method "japanese-anthy") ; (define-obsolete-variable-alias 'last-command-char 'last-command-event "at least 19.34")

11.5. 壁紙

# cd /usr/pkgsrc/graphics/xli # make package-install

.xinitrcに以下の行を追加して、壁紙画像を表示するプログラムを起動します。

例)

37 / 48 2017/07/17 13:04 セキュリティキャンプ 2017 ドキュメント file:///usr/local/Github/NetBSD/Guide/_build/singleh...

xsetbg -/Desktop/penguindrum_wp1_1s.jpg

11.6. ソフトウェアのコンパイル/インストール

11.6.1. gedit

% cd /usr/pkgsrc/editors/gedit # make package-install

11.6.2. firefox

% cd /usr/pkgsrc/www/firefox # make package-install % cd /usr/pkgsrc/www/firefox-l10n # make package-install # grep flashsupport /etc/mk.conf ACCEPTABLE_LICENSES+= adobe-flashsupport-license # cd /usr/pkgsrc/multimedia/adobe-flash-plugin11 # make package-install

11.6.3. LibreOffice

# grep libreoffice4 /etc/mk.conf # cd /usr/pkgsrc/misc/libreoffice4 # make package-install % /usr/pkg/bin/soffice

11.6.4. LaTeX

# cd /usr/pkgsrc/print/ja-ptex # make package-install

11.7. CMSを使ってみる

11.7.1. drupal

# cd /usr/pkgsrc/www/drupal7 # make package-install

11.7.2. wordpress

# cd /usr/pkgsrc/www/php-ja-wordpress # make package-install # cd /usr/pkgsrc/archivers/php-zlib # make package-install .... zip形式のテーマをインストールする時に必要 AddHandler application/x-httpd-php .php

11.8. fossilを使ってみる

# cd /usr/pkgsrc/devel/fossil # make package-install % ls /usr/pkg/bin/fossil % fossil help Usage: fossil help COMMAND Common COMMANDs: (use "fossil help --all" for a complete list) add changes finfo merge revert tag addremove clean gdiff mv rm timeline all clone help open settings ui

38 / 48 2017/07/17 13:04 セキュリティキャンプ 2017 ドキュメント file:///usr/local/Github/NetBSD/Guide/_build/singleh...

annotate commit import pull sqlite3 undo bisect diff info push stash update branch export init rebuild status version cat extras ls remote-url sync This is fossil version 1.25 [d2e07756d9] 2013-02-16 00:04:35 UTC % fossil init my-repo fossil init my-repo project-id: fdd587ee44f524d432186fe6a1dc379c51b26c1d server-id: 7873c960d27f3b0ef2d7da2294bfc6eb092dc61e admin-user: jun (initial password is "bb4867") % fossil server my-repo & .... ブラウザでポート8080にアクセスするとGUI画面が表示されます。

11.9. Gitのインストール

# cd /usr/pkgsrc/devel/git-base # make package-install % ls -l /usr/pkg/bin/git

11.10. エミュレータでNetBSD

11.10.1. Qemu

# cd /usr/pkgsrc/emulators/qemu # make package-install # qemu-img create -f qed NetBSD-sparc.qed 500M ... qedが動くかチェック # qemu-system-sparc -M SS-20 -m 64 -kernel netbsd-GENERIC -hda my-sun4c-disk.img -hdb miniroot.fs -nographic -cdrom NetBSD-6.99.17-sparc # qemu-system-sparc -M SS-20 -m 64 -kernel netbsd-sd -hda my-sun4c-disk.img -nographic -net nic -net user -redir tcp:2222::22

11.10.2. Gxemul

# /usr/pkgsrc/emulators/gxemul # make package-install # gxemul -e mobilepro770 -M 128 -I 800000000 -d Z50.img -d c:/usr/release/images/NetBSD-6.99.14-hpcmips.iso netbsd-install

# gxemul -e jornada680 -M 128 -I 800000000 -d c:/usr/release/iso/NetBSD-5.1.2-hpcmips.iso /mnt/netbsd

11.11. Package - /usr/pkgsrc

簡単にソフトウェアをコンパイル・インストール 1997年8月開始 201?-Q[1-4] もうすぐ準備 41種類のジャンル 9963種類以上のソフトウェア Make installでソフトウェアのインストール

11.12. 各CPUアーキテクチャ間で共通

mipsel –mips endian little arc – MIPSで動くNTマシン cobalt – Cobalt Qube1/2 pmax – DEC station hpcmips – MIPS搭載WinCE

11.13. /usr/pkgsrc/emulators

gxemul mips (pmax,hpcmips) dreamcast NetBSD/vax

39 / 48 2017/07/17 13:04 セキュリティキャンプ 2017 ドキュメント file:///usr/local/Github/NetBSD/Guide/_build/singleh...

tme sun2,sun3,SPARCstation 2 QEMU PC USBデバッグ

11.14. Packagesジャンル一覧

The NetBSD Packages Collection x11 Packages to support the X window system archivers Archivers audio Audio tools benchmarks Benchmarking tools biology Software for the biological sciences cad CAD tools chat Communication programs comms Communication utilities converters Document format and character code converters cross Cross-platform development utilities databases Databases devel Development utilities editors Editors emulators Emulators for other operating systems filesystems File systems and file system related packages finance Monetary financial and related applications fonts Fonts games Games geography Software for geographical-related uses graphics Graphics tools and libraries ham Wireless communication tools and applications inputmethod Input method tools and libraries lang Programming languages mail Electronic mail utilities math Mathematics mbone Multi-cast backBone applications meta-pkgs Collections of other packages misc Miscellaneous utilities multimedia Multimedia utilities net Networking tools news Network news parallel Applications dealing with parallelism in computing pkgtools Tools for use in the packages collection print Desktop publishing security Security tools shells Shells sysutils System utilities textproc Text processing utilities (does not include desktop publishing) time Clocks calendars daily planners and other time related applications wm X11 window managers configuration tools and themes www Packages related to the World Wide Web

11.15. 目的別

40 / 48 2017/07/17 13:04 セキュリティキャンプ 2017 ドキュメント file:///usr/local/Github/NetBSD/Guide/_build/singleh...

デスクトップ向け 組み込み向け pkgsrc/meta-pkgにいくつかある

11.16. Package対応プラットフォーム

NetBSD1. NetBSD1. 2. Solaris / SmartOS / illumos Linux3. Linux3. Darwin (Mac OS X)4. Darwin (Mac OS X)4. FreeBSD5. FreeBSD5. Open BSD6. OpenBSD6. IRIX7. IRIX7. AIX8. AIX8. DragonFlyBSD9. DragonFlyBSD9. OSF/110. OSF/110. HP-UX11. HP-UX11. QN X12. QNX12. Haiku13. Haiku13. MirBSD14. MirBSD14. Minix315. Minix315. Cygwin16. Cygwin16. GN U/kFreeBSD17. GNU/kFreeBSD17. 18. SCO OpenServer 5

11.17. NetBSD以外でpkgsrc

# tar xzvf pkgsrc.tgz # cd pkgsrc/bootstrap # ./bootstrap

11.18. Packageとライセンスの取扱い

個々のパッケージごとにLICENSE定義 受け入れられるライセンスを制御したい ツールとライブラリのライセンスが違う ツールがGPL,ライブラリがLGPL GPLv2とv3が混在する例 rubyとreadline6 GPL2とGPL2 or laterの区別 GPL3とリンクできるかできないか http://d.hatena.ne.jp/obache/20090922/

11.19. バイナリ互換性を利用する

Cobalt Qube2でhpcmipsバイナリ作成 MIPSでendian little =mipsel同士なら動く ユーザランドはほとんどそのまま動く パッケージも共通化 NetBSD/{pmax,cobalt,arc,hpcmips}で共通 数GBある各種アプリケーション群を共通にする

11.20. pkgsrcを更新する

まず/usr/pkgsrcを更新し、次に、必要なソフトウェアを再コンパイルします。cvsで、/usr/pkgsrcを更新します。

# cd /usr/pkgsrc # cvs update -PAd ... 最新版に上げる # cvs update -Pdr pkgsrc-2013Q2 ... 2013Q2に上げる

更新が必要なソフトウェアを更新します。pkg_chkコマンド、またはpkg_rolling-replaceコマンドで更新します。

# pkg_chk -u

41 / 48 2017/07/17 13:04 セキュリティキャンプ 2017 ドキュメント file:///usr/local/Github/NetBSD/Guide/_build/singleh...

# /usr/pkg/sbin/pkg_chk -u -b -n -P /usr/local/src/NetBSD/pkgsrc-2013Q2/packages/All # /usr/pkg/sbin/pkg_chk -u -b -P /usr/local/src/NetBSD/pkgsrc-2013Q2/packages/All

# cd /usr/pkgsrc/pkgtools/pkg_rolling-replace # make package-install # /usr/pkg/bin/pkg_rolling-replace

11.21. このドキュメント

以下のURLからこのドキュメントのソースコードをダウンロードできます。 ドキュメントはpy-sphinxを利用しています。

https://github.com/ebijun/NetBSD/tree/master/Guide

フォーマット: /usr/pkgsrc/textproc/py-sphinx 編集: /usr/pkgsrc/editors/gedit PDFチェック: /usr/pkgsrc/pring/evince bccksで豆本にしたい 12. KOBOでNetBSDを動かしてみる

12.1. 目標

KOBOでNetBSDを動かしてみます。 KOBOにシリアルポート経由で接続します。 バイナリイメージで試せるようにします。 RPI向けイメージと同じイメージで起動します。

12.2. できることとできないこと

NetBSDが起動します。 外部から電源を供給できるUSBハブ経由で接続したUSB機器を利用できるはずです。 電子インクは利用できません。

12.3. 準備するもの

KOBO 2GB 以上のmicro SDカード2枚 シリアル接続ケーブル KOBOとシリアルを接続するジャンパ線

秋月:FTDI 3.3V http://akizukidenshi.com/catalo TXD: 橙色 RXD: 黄色 GND: 黒色

12.4. microSDカードの設定

kobo touchには、内蔵microSDスロットと、脇部分にあるmicroSDスロットがあります。内蔵microSDスロットに ubootイメージを書き込んだmicroSDを挿します。

脇部分にあるmicroSDスロットには、RPI用に作ったイメージを挿します。 元から刺さっていたmicroSDは大事に保管しておき ます。 もしNetBSD起動に飽きた時でも、本来の電子図書として楽しく使えます。 KOBOではmicroSDに書き込んだPDFファイ ルも読めるので、 PDFビューワとしても便利です。

12.5. シリアルケーブル

まず裏蓋を開けます。右下の部分にTX,RXと書いた基盤の穴があります。

ここにシリアルポートを接続します。

42 / 48 2017/07/17 13:04 セキュリティキャンプ 2017 ドキュメント file:///usr/local/Github/NetBSD/Guide/_build/singleh...

12.6. uboot

KOBO用ubootイメージは以下の場所にもあります。

http://rappappararin.blogspot.jp/2012/09/kobou-boot.html http://rappappararin.blogspot.jp/2012/09/kobonetbsd.html https://docs.google.com/open?id=0B-K-8275486qNDk2VFVKS3ZaOHc

以下のコマンドでカーネルをロードして起動します。

mmcinfo 1 fatload mmc 1 0x70800000 kobo.bin go 0x70800000

または、環境変数に引数を設定しておきます。

BR-1A # setenv bootcmd_netbsd 'mmcinfo 1;fatload mmc 1 0x70100000 kobo.bin; go 0x70100000' BR-1A # setenv bootcmd 'run bootcmd_netbsd' BR-1A # saveenv

13. WZERO3でNetBSDを使ってみる

13.1. NetBSD/hpcarm 6.1 W-ZERO3 ておくれLive Image

筒井さんによる、ておくれイメージのページも見てください。 http://www.ceres.dti.ne.jp/tsutsui/netbsd/liveimage/wzero3.html

13.2. 用意するもの

1. WZERO3本体 WS003SH/WS004SH/WS007SH/WS011SH/WS020SH 2. ディスクイメージコピー用NetBSDマシン USBカードリーダ3. 4. NetBSDインストール用メモリカード

WS003SH/004SH/007SH MiniSDカードが必要です。MicroSDカードとMiniSDカードアダプタを組み合わせても利用できます。 2G以上のSDHCカー ドを使う場合は、SDHCドライバをインストールするために、2G以下のSDカードが必要です。 WS011SH/WS020SH 2G以上のMicroSDカード

13.3. SDカード用デバイスドライバのインストール

WS003SH,WS004SH,WS007SHで、2G以上のSDHCカードを利用するためにはSDカード用デバイスドライバをインストールしま す。

SDHCドライバ http://w-zero3.org/?%A5%B7%A5%B9%A5%C6%A5%E0%B4%D8%B7%B8#wf87e46c

13.4. インストール

ダウンロードしたSDHCドライバを、2GB以下のMicro/MiniSDカードにコピーします。コピーしたカードをWZERO のカードスロットに差します。

13.5. デバイスドライバのインストール

WZERO3を起動し、ファイルエクスプローラ→mini/microSDカード→コピーしたSDHCドライバをクリック→インス トールする場所 デバイスを選んでインストール→再起動 OKを選択→メニューバー右上のXをクリックすると再起動 が始まります。

43 / 48 2017/07/17 13:04 セキュリティキャンプ 2017 ドキュメント file:///usr/local/Github/NetBSD/Guide/_build/singleh...

13.6. NetBSDディスクイメージのダウンロード

NetBSD7.99.4インストール済みのディスクイメージファイルを作りました。

ftp://ftp.netbsd.org/pub/NetBSD/misc/jun/hpcarm/2015-01-24-netbsd-hpcarm.img.gz

13.7. ディスクイメージをコンパクトフラッシュにコピーする

NetBSDをインストールするMini/MicroSDカードをUSBカードアダプタ経由でNetBSDマシンにつなぎます。

# dmesg .... sd3に2GBのMicroSDカードがつながっています。 sd3 at scsibus0 target 0 lun 3: disk removable sd3: fabricating a geometry sd3: 1947 MB, 1947 cyl, 64 head, 32 sec, 512 bytes/sect x 3987456 sectors sd3: fabricating a geometry # disklabel sd3 ... sd3のパーティションを確認します。 : 5 partitions: # size offset fstype fsize bsize cpg/sgs d: 3987456 0 unused 0 0 # (Cyl. 0 - 1946) e: 3987209 247 MSDOS # (Cyl. 0*- 1946) ... NetBSDではdパーティションがディスク全体になります。 # gunzip < 2014-12-06-netbsd6-hpcarm.img.gz |dd of=/dev/rsd3d bs=1m USBカードリーダーを差し直します。 # disklabel sd3 # size offset fstype fsize bsize cpg/sgs a: 2947392 393216 4.2BSD 2048 16384 0 # (Cyl. 97*- 828*) b: 526016 3340608 swap # (Cyl. 828*- 958*) c: 3473408 393216 unused 0 0 # (Cyl. 97*- 958*) d: 3964928 0 unused 0 0 # (Cyl. 0 - 983*) e: 393184 32 MSDOS # (Cyl. 0*- 97*)

13.8. NetBSDの起動

13.9. hpcboot起動

ファイルエクスプローラ→hpcboot.exe を起動すると、ブートローダhpcbootが起動します。

13.10. hpcboot内で機種とカーネルを指定

1. mini/microSDカード→カード種別を指定します。 2. netbsd→呼び出すカーネルを指定します。 3. Sharp W-ZERO3(WS004SH)→機種名をプルダウンメニューから選択します。

13.11. NetBSD起動

Bootボタンを押すと、本当に起動していいか確認メニューが現れます。NetBSDを起動すると、WZERO3のメモリ上 にセーブしていたデータは消えてしまうので、必要ならバックアップをとっておいてください。

13.12. ログイン

root でログインできます。

login: root

13.13. X起動

startxコマンドを実行すると、Xサーバが起動します。

# startx

44 / 48 2017/07/17 13:04 セキュリティキャンプ 2017 ドキュメント file:///usr/local/Github/NetBSD/Guide/_build/singleh...

13.14. 無線LAN (WS003SH/004SH)

NetBSD起動前にWindowsMobile上で有効(無線LAN LED点灯状態)にしておきます。 「スタート」→「設定」→ 「ユーティリティ」→「無線ON/OFF」→「内蔵ワイアレスLANを停止」チェックをはずす→MACアドレスが表示さ れるか確認する [http://www.nazgul.ch/upgt/upgt-firmware-1.1.tar.gz]をダウンロードします。

% tar xzpvf upgt-firmware-1.1.tar.gz : % ls -l total 68 -rw-r--r-- 1 root wheel 23 Dec 23 2008 Makefile -rw-r--r-- 1 root wheel 28976 Dec 23 2008 upgt-gw3887 -rw-r--r-- 1 root wheel 372 Dec 23 2008 upgt-info # dmesg ... MicroSDカードをUSBカードアダプタ経由でNetBSDマシンにつなぎます。 : sd3 at scsibus0 target 0 lun 3: disk removable sd3: fabricating a geometry sd3: 1947 MB, 1947 cyl, 64 head, 32 sec, 512 bytes/sect x 3987456 sectors sd3: fabricating a geometry # fsck /dev/sd3a ... sd3にメディアがつながっている場合 # mount /dev/sd3a /mnt ... /mntにマウントする。 無線LANのファームウェアをコピーします。 # cp upgt-gw3887 /mnt/libdata/firmware/upgt/upgt-gw3887

13.15. 参考リンク

より詳細な説明は、以下のリンクを参考にしてください。

http://www.ceres.dti.ne.jp/tsutsui/netbsd/liveimage/wzero3.html http://ftp.netbsd.org/pub/NetBSD/misc/tsutsui/wzero3/ http://ftp.netbsd.org/pub/NetBSD/misc/tsutsui/wzero3/README.ja NetBSD Guide [http://www.NetBSD.org/docs/guide/download/netbsd-en.pdf.gz Pkgsrc Guide [http://www.NetBSD.org/docs/pkgsrc/pkgsrc.pdf http://www.amazon.co.jp/dp/B000L81AAU/ 日本NetBSDユーザーグループ http://www.jp.NetBSD.org/ 14. NetBSD/hpcmipsを使ってみる

14.1. 特徴

NetBSD/hpcmipsを利用するために、ディスクイメージを用意しました。 NetBSDでmatt-nb... がマージされたあと、hpcmipsは不安定です。 NetBSD7に向けて、バイナリイメージで試せるようにします。 RPI向けイメージと同じバイナリを作ってみます。

14.2. 準備するもの

NetBSD/hpcmipsをサポートしているマシン (NEC mobilegear,sigmarion) 2GB コンパクトフラッシュ SigmarionII:FOMA接続ケーブル+USB ネットワークアダプタ PCMCIAネットワークカード (カードバス対応でないもの)

14.3. 起動ディスクの作成

ディスクイメージのダウンロード

# ftp ftp://ftp.netbsd.org/pub/NetBSD/misc/jun/hpcmips/ 2013-08-23-netbsd-hpcmips.img.gz

2GB以上のコンパクトフラッシュを準備します。 ダウンロードしたディスクイメージを、コンパクトフラッシュ上で展開します。

disklabel sd0 ..... 必ずインストールするSDカードか確認してください。

45 / 48 2017/07/17 13:04 セキュリティキャンプ 2017 ドキュメント file:///usr/local/Github/NetBSD/Guide/_build/singleh...

gunzip < 2013-08-23-netbsd-hpcmips.img.gz|dd of=/dev/rsd0d bs=1m

14.4. NetBSD/hpcmipsの起動

1. コンパクトフラッシュをWindowsCE機に挿して起動します。 2. CF上に見えるhpcboot.exeを実行します。 3. メニューでカーネルを指定して起動します。 4. 少し待つと、NetBSDの起動メッセージが表示されます。

14.5. ログイン

rootでログインできます。

login: root

15. NetBSD/x68k

「動かしたいアプリが自分の持ってるコンピュータで動かない場合、たとえばAndroid用出てるけどiOS用はない、みたいのは 今でも理解してもらえると思うけど、どうしても動かしたい+ソースはある→移植するぜ、ってやっちゃったのがNetBSD/x68k でした。」 [18]

15.1. X68K関連発表

X680x0 でもユーザストリームがしたい! OSC2014広 http://www.pastel-flower.jp/-isaki/NetBSD/osc14hi/ 島 NetBSD/x68k 近況 OSC2014広 http://www.pastel-flower.jp/-isaki/NetBSD/osc14hi/ 島 NetBSD/x68k 近況 OSC2013広 http://www.pastel-flower.jp/-isaki/NetBSD/osc13hi/ 島 (XM6iによる?)NetBSD/m68k FPE の実装 OSC2013広 http://www.pastel-flower.jp/-isaki/NetBSD/osc13hi/ 島 NetBSD/x68kとXM6i 追いかけっこ開発 OSC2012広 http://xm6i.org/event/osc2012hi 島 OSC展示に見るNetBSD6.0新機能 OSC2012広 http://www.slideshare.net/tsutsuii/osc-netbsd-60 島 NetBSD/x68k近況 OSC2012愛 http://xm6i.org/event/osc2012eh/page1.html 媛 XM6iのご紹介 OSC2011広 http://xm6i.org/event/osc2011hi 島

15.2. OSCとX68K展示

46 / 48 2017/07/17 13:04 セキュリティキャンプ 2017 ドキュメント file:///usr/local/Github/NetBSD/Guide/_build/singleh...

OSC2015広島 2015/9/19 X68030/X68060/XM6i(Win10/RPI2/Win7) OSC2015京都 2015/8/7 XM6i-earmv6hf初展示 OSC2014広島 2014/9/20 Neptune-X Nereid 060turbo Xellent30 XM6i OSC2013広島 2013/10/6 Neptune-X Nereid 060turbo Xellent30 XM6i OSC2012広島 2012/10/20 Neptune-X Nereid 060turbo Xellent30 XM6i OSC2011広島 2011/10/1 Neptune-X Nereid 060turbo XM6i OSC2011神戸 2011/4/16 TT030 X68K OSC2010東京秋 2010/9 XM6i 初展示 /10-11 OSC2007東京秋 2007/10/5-6 Nereid オープンソース祭り2001 2001/2 X68030 みのうらさんの? [6] /10-11

15.3. NetBSDでXM6iを動かしてみる。

NetBSD/amd64を用意し、その上でXM6iを動かしてみます。

15.4. 必要なパッケージのインストール

XM6iを動かすために必要なパッケージをインストールしておきます。 wxGTK30-3.0.2nb6が必要です。(nb8では起動しません)

# cd /usr/pkgsrc/x11/wxGTK30 # make package-install

15.5. XM6iのダウンロード

XM6iをダウンロードして、展開します。

47 / 48 2017/07/17 13:04 セキュリティキャンプ 2017 ドキュメント file:///usr/local/Github/NetBSD/Guide/_build/singleh...

# mkdir -p /usr/local/XM6i # cd /usr/local/XM6i # http://xm6i.org/download.html # tar xzvf XM6i-0.55-netbsd7.0-i386-amd64-2016Q2.tar.gz

15.6. 参考資料

[1] Neptune-X http://www.amy.hi-ho.ne.jp/shimada/neptune/ [2] Nereid http://xps.jp/ [3] 060turboの世界 http://homepage2.nifty.com/m_kamada/docs/060turbo.htm [4] Xellent30 関連 http://retropc.net/x68000/software/hardware/xellent30/ [5] X68000 LIBRARY http://retropc.net/x68000/ [6] オープンソースまつり2001 in 秋葉原 http://www.cqpub.co.jp/interface/column/ShowandNews/010211/010211.htm [7] XM6i http://xm6i.org/ [8] xkeropi http://www.asahi-net.or.jp/-aw9k-nnk/keropi/ [9] XM6i/TypeG勉強会 http://xm6i.org/event/meeting1/ [10] NetBSD/x68k開発用 X68030 ブートストラップ起動動作仕様 http://togetter.com/li/410617 [11] 21世紀のX68000まとめ http://togetter.com/li/195551 [12] X68/040turbo―A Story of Making“After X68030 ,ソフトバンククリエイティブ,1994 [13] NetBSD/X68k (X68k Programming Series),ソフトバンククリエイティブ,1995 [14] 究極!!X68000エミュレータ,秀和システム,2001 [15] Inside X68000,ソフトバンククリエイティブ,1992 [16] X68000テクニカルデータブック,アスキー,1987 [17] Outside X68000,ソフトバンククリエィティブ,1993 [18] https://twitter.com/masaru0714/status/506653219687120896

48 / 48 2017/07/17 13:04