NetBSD on FreeBSD
今まで快調に動いていた、Windows10 Home Editionで、通知領域に通知が来た。 普段はうざいので、余り確認しないのだけど、たまたま見たら、エラーログが一杯 溜まっているよ。解決したいなら、ここ押せワンワンと言ってきた。
MSは人を犬並みに扱うんだな。まあ、御主人様には素直に従っておきましょ。 ボタンを押したら、今実行してますバーがツーと伸びて、はい終了しました、ですって。 この件でご意見が有ったらどうぞって言われた。
勝手にログを消して、証拠隠滅してご意見を求めるとは、ユーザーを馬鹿にしてんのか?
とは言え、ユーザーであるオイラーもWindowsに関しては、薄ら馬鹿。この際だから 知恵をつけ時ましょ。
エラーログは、Linuxみたいにジャーナルファイルになってて、editorで開いて 簡単に見る事は出来ないようだ。unix文化を逸脱してんな。
で、専用アプリでログを閲覧すると言う、豪華仕様のようだ。
レッツ! Windows 7 - システム編 「イベントビューアー」を活用する エラーログを、イベントと言い換える巧みさには、我ながら舌を巻くぞ。まあ、エラーは 楽しいお祭りと言えなくもないか。
今度、祭りが行われた、とことん参加して、堪能してやろう。
gauche 0.9.5
とうとう我慢出来なくて、FreeBSD 11-REPEASEを入れてしまった。scheme系は、gambit-cの 予定だったけど、いろいろなお供を連れてくるので敬遠。
ならば、gaucheだと思って入れてみると、警告メッセージが出てきた。このパッケージは 誰もメンテナンスしていないので、やがて消されるであろう。我と思わん方は、メンテナに 名乗り出られよ。絶賛募集中なんですな。
ならば、本家を訪ねてみるか。行ったら、何年かぶりに新しいのが出てた。これはもう、 野良ビルドしろって事ね。どうせやるなら、多数CPUの威力を実感してみよう。 いわゆる並列ビルドね。参考までに、i386な7機のFreeBSDでの結果も載せておく。
gmake real 3m0.683s user 2m53.595s sys 0m6.604s
gmake -j 2 real 1m59.250s user 3m34.029s sys 0m8.891s
gmake -j 4 real 2m0.835s user 3m40.827s sys 0m9.356s
gmake (@ i386) real 6m50.28s user 4m31.79s sys 2m14.50s
並列度が2でも4でも変わらない。2CPUを積んでて、論理CPUは4になるんだけど、 仕事の割り振りに手間取っているんで、並列度が2ぐらいが適当と思われる。 まあ、仕事の内容によるんだろうけどね。
今回のgaucheは開発のし易さにも目が注がれているっぽい。折角入れたんだから、 大いに使ってみるかな。repl回りが充実してる。
gosh> ,h You're in REPL (read-eval-print-loop) of Gauche shell. Type a Scheme expression to evaluate. A word preceeded with comma has special meaning. Type ,help <cmd> to see the detailed help for <cmd>. Commands can be abbreviated as far as it is not ambiguous. ,apropos|a Show the names of global bindings that match the regexp. ,cd Change the current directory. ,describe|d Describe the object. ,help|h Show the help message of the command. ,history Show REPL history. ,info|doc Show info document for an entry of NAME. ,pwd Print working directory. ,sh Run command via shell. ,source Show source code of the procedure if it's available. ,use|u Use the specified module. Same as (use module option ...).
ちょっと実験した。infoが引けるのは有り難いぞ。
gosh> ,d 1234 1234 is an instance of class <integer> (#x4d2, ~ 1.2Ki, #\Ӓ as char, 1970-01-01T00:20:34Z as unix-time) gosh> ,info car -- Function: car pair -- Function: cdr pair [R7RS] Returns car and cdr of PAIR, respectively. gosh> ,a cons %tree-map-check-consistency (gauche) acons (gauche) cons (scheme) cons* (gauche) consume-trailing-whitespaces (gauche) define-constant (gauche) lcons (gauche) lcons* (gauche)
bhyve
技評のWebページにFreeBSD四方山話が載ってて、毎週楽しく読んでますよ。 ここで、BSD界隈の話を収集してる。だって、最近はBSD関係の雑誌はぱたっと発行され なくなっちゃったからねぇ。
FreeBSD11.0を入れたんで、何か面白い事をしよう。 ふと思い出したのは、仮想PCをFreeBSDの中に作るってやつ。 そんなの、qemuだろう。車輪の再発明だ そうですよ。
OpenBSD 6.0-RELEASEをbhyveにインストール
どうせやるなら、Ubuntu on Windows に対抗すべきだろうな。
man on NetBSD on FreeBSD
にしましょ。だって、NetBSDのmanを引くと、includeに対するlibraryの案内が出て来るって 言う、捨てが居たい機能が有るから。
だったら、普通にインストールしといたらいいじゃん。それをやると色々なパッケージも 入れたくなっちゃうのよね。所が、最近はパッケージも場所を喰うみたいで、色々な サイトで公開されなくなった。唯一頑張っている所は、 こちらだけって ような、寂しい状況になってます。そして、こことてamd64版は置いてない。
最初なんで、技評のページの通りにやってみる。但しオイラーはzfsを使っていないんで、 HOME-dirの下にNB7ってdirを作り、そこに仮想PC名がやはり、NB7としたNetBSDを 入れる事にした。
仮想PCのメモリーは256Mも有れば十分、仮想HDDも1Gと言うミニミニサイズです。 なお、NIC名はem0ってなってたので、そのように設定した。
起動用スクリプトは下記。不要なマシンが有ったら除去。カーネルをロードして起動。 マシンの設定情報で、マシンを構成。マシンが落ちたら、マシンの除去。
sudo bhyvectl --destroy --vm=NB7; printf "knetbsd -h -r cd0a (hd0,netbsd1)/netbsd\nboot\n" | sudo grub-bhyve -m /home/sakae/NB7/netbsd-7.0-device.map -M 256M NB7; sudo bhyve -W -c 1 -m 256M -H -P -A -l com1,stdio \ -s 0:0,hostbridge \ -s 1:0,lpc \ -s 2:0,virtio-net,tap0 \ -s 3:0,virtio-blk,/home/sakae/NB7/netbsd.img NB7; sudo bhyvectl --destroy --vm=NB7
出来上がったVMを走らせてみた。
: boot device: <unknown> root device: use one of: ld0[a-p] ddb halt reboot root device: ld0a dump device (default ld0b): file system (default generic): root on ld0a dumps on ld0b root file system type: ffs init path (default /sbin/init): : NetBSD/amd64 (nb7.localdomain) (console) login: sakae Password: Oct 21 13:43:05 nb7 login: sakae on tty console Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 The NetBSD Foundation, Inc. All rights reserved. Copyright (c) 1982, 1986, 1989, 1991, 1993 The Regents of the University of California. All rights reserved. NetBSD 7.0 (GENERIC.201509250726Z) Welcome to NetBSD! nb7$ df Filesystem 512-blocks Used Avail %Cap Mounted on /dev/ld0a 1909582 1334668 479436 73% / kernfs 2 2 0 100% /kern ptyfs 2 2 0 100% /dev/pts procfs 8 8 0 100% /proc tmpfs 130872 0 130872 0% /var/shm
NetBSDのインストールで齟齬が有ったみたい。起動の途中で、kernelが見つけられずに 質問が出てきたので、適当に答えると、ログイン出来たよ。
参考のため、grubがどんな風に認識してるか見ておく。
[sakae@fb11 ~/NB7]$ sudo grub-bhyve -m /home/sakae/NB7/netbsd-7.0-device.map -M 256M NB7 : grub> ls (hd0) (hd0,msdos1) (hd0,netbsd4) (hd0,netbsd1) (host) grub> ls (hd0) Device hd0: No known filesystem detected - Total size 2097152 sectors grub> ls (hd0,msdos1) Partition hd0,msdos1: Filesystem type ufs2 - Last modification time 2016-10-21 05:50:25 Friday, UUID 5804670f1cd95dff - Partition start at 63 - Total size 2097089 sectors grub> ls (hd0,netbsd4) Partition hd0,netbsd4: No known filesystem detected - Partition start at 0 - Total size 2097152 sectors grub> ls (hd0,netbsd1) Partition hd0,netbsd1: Filesystem type ufs2 - Last modification time 2016-10-21 05:50:25 Friday, UUID 5804670f1cd95dff - Partition start at 63 - Total size 2030112 sectors grub> ls (hd0,netbsd1)/ etc/ kern/ proc/ dev/ cdrom/ var/ boot stand/ netbsd altroot/ bin/ lib/ libdata / libexec/ mnt/ rescue/ root/ sbin/ tmp/ usr/ home/ boot.cfg
そして、こちらは、NetBSDの中でのDISK情報。
nb7$ disklabel ld0 # /dev/rld0d: : 16 partitions: # size offset fstype [fsize bsize cpg/sgs] a: 2030112 63 4.2BSD 1024 8192 0 # (Cyl. 0*- 1007*) c: 2097089 63 unused 0 0 # (Cyl. 0*- 1040*) d: 2097152 0 unused 0 0 # (Cyl. 0 - 1040*)
御覧の通り、SWAPもケチって、作っていないと言う、いい加減さです。こういう イリーガルな事をするから、罰が当たったんだろうな。まあ、余り使う事も無いから これでいいだろう。ちなみに、起動さえしてしまえば、ISOファイルは不要なので、 捨ててしまっても大丈夫。
下記、参考までに7機に入れたNetBSDのマップ。上のやつとさほど変わらんなあ。
nb7$ disklabel wd0 # /dev/rwd0d: : 16 partitions: # size offset fstype [fsize bsize cpg/sgs] a: 8388545 63 4.2BSD 2048 16384 0 # (Cyl. 0*- 8322*) c: 8388545 63 unused 0 0 # (Cyl. 0*- 8322*) d: 8388608 0 unused 0 0 # (Cyl. 0 - 8322*)
nb7$ ifconfig -a vioif0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500 address: 00:a0:98:e0:d6:f3 inet xxx.xxx.xxx.xx3 netmask 0xffffff00 broadcast zzz.zzz.zzz.255 lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 33648 inet 127.0.0.1 netmask 0xff000000 inet6 ::1 prefixlen 128 inet6 fe80::1%lo0 prefixlen 64 scopeid 0x2
NICはブリッジを経由してtap0に結び付き、それがNetBSD上からは、viof0って名前で 参照出来る。IPアドレスは伏字にしちゃったけど、VMWAREが提供してるDHCPサーバーから ちゃんと取得してくれている。
----yyy.yyyy.yyy.yyy PING Statistics---- 21 packets transmitted, 21 packets received, 0.0% packet loss round-trip min/avg/max/stddev = 0.306100/0.971519/2.251300/0.384703 ms
親のFreeBSDにpingしてみると、約1msで接続出来ていた。
NetBSDはデフォで、postfixが動いているけど、必要ないのでNOって言って止めて おいた。これでマニュアルを見るには、十分な環境が出来上がったな。
dateが狂っていたので、下記の処置を実施
vi /etc/rc.conf rtclocaltime=YES ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
こうして出来上がったVMの動きの状況をモニターしてみた。
[sakae@fb11 ~]$ sudo bhyvectl --vm=NB7 --get-stats vcpu0 stats: number of times hlt was intercepted 30383 number of times %cr access was intercepted 4 number of times rdmsr was intercepted 16 number of times wrmsr was intercepted 16 number of monitor trap exits 0 number of times pause was intercepted 164249 vm exits due to interrupt window opening 285 vm exits due to nmi window opening 0 number of times in/out was intercepted 1243090 number of times cpuid was intercepted 4617 vm exits due to nested page fault 64456 vm exits for instruction emulation 365706 number of vm exits for unknown reason 0 number of times astpending at exit 1656 number of times idle requested at exit 0 number of vm exits handled in userspace 1867884 number of times rendezvous pending at exit 0 number of vm exits due to exceptions 0 vcpu total runtime 59934821919 number of ticks vcpu was idle 333847 number of NMIs delivered to vcpu 0 number of ExtINTs delivered to vcpu 0 EOI without any in-service interrupt 1420 error interrupts generated by vlapic 0 timer interrupts generated by vlapic 31123 corrected machine check interrupts generated by vlapic 0 lvts triggered[0] 0 : lvts triggered[6] 0 ipis sent to vcpu[0] 0 : ipis sent to vcpu[15] 0 Resident memory 206348288 Wired memory 0 Number of vpid invalidations saved 267 Number of vpid invalidations done 7983 vcpu migration across host cpus 8250 total number of vm exits 1880378 vm exits due to external interrupt 7555
bhyveはFreeBSDで絶賛展開中だけど、それを後押しするportsも色々出てきている。 これから成長が楽しみですよ。
[sakae@fb11 /usr/ports]$ make search key=bhyve | grep Port: Port: bhyve-firmware-1.0 Port: bhyve-rc-3 Port: cbsd-11.0.3 Port: chyves-0.2.0 Port: grub2-bhyve-0.40 Port: iohyve-0.7.6_1 Port: uefi-edk2-bhyve-20160704_1 Port: uefi-edk2-bhyve-csm-20160704_1 Port: vm-bhyve-1.1.5