NetBSD2とNetBSD3の違い

NetBSD3.0(BETA)になると、いろいろセキュリティ関係がきつめの 設定になっていて、NetBSD2.0の感覚でいると困ったことがいろいろ起こる。

XEN0/XENU/MAKEDEV

3.0では標準でXEN0,XENUのバイナリーが配布バイナリに含まれているので、 別のところからとってくる必要がない。また、MAKEDEVにも標準でxenが含まれているので、 手作業でデバイスを作成する必要がない。
要するに、Howto.htmlに書かれているとおりにすれば動く。

telnetd

inetdから呼び出される telnetd の標準のオプションが、-a valid になっていて、このままだと、TeraTermからだと loginできない。 後で対策を考えることにして、とりあえず、試験中は -a none で動かす。

FreeBSDとNetBSDの違い

pf

NetBSDではパケットフィルタが、pfかipfilterが標準。
どちらも、FreeBSDにもポートされてはいるのだが(pfは5.x以降)、ipfwは使えない。 pf だと、ipfw では外付けの nat 機能がはじめから埋め込まれている。

sendmail

pkgsrcからsendmailを入れると、no-profit の警告がでる。
あれっ? ライセンス形態が変わったのかと戸惑う。

セットアップ

仮想ディスク

Howtoには、パーティションを一つ割り当てるように書かれているか、 vnconfig を使って、ファイルを仮想ディスクとして割り当てることにする。

# dd if=/dev/zero of=xenu30 bs=8225280 count=60
# vnconfig vnd0 xenu30
# disklabel -e -I vnd0
# mount /dev/vnd0a /b
... NetBSD3.0(BETA)のバイナリイメージを /b 以下に書き込む
/etc/fstabの内容
/dev/xbd0a / ffs rw 1 1
kernfs /kern kernfs rw
procfs /proc procfs rw,noauto
/etc/rc.confの内容
(前半は省略)
# If this is not set to YES, the system will drop into single-user mode.
#
rc_configured=YES

# Add local overrides below
#
hostname="xenu30.hamaint.co.jp"
net_interfaces="xennet0"
ifconfig_xennet0="inet 192.168.0.2/30"
defaultroute="192.168.0.1"

xennet0は、POINTTOPOINTの設定にした方がいいのかも知れない。

/etc/localtime

 ls -l /etc/localtime
lrwxr-xr-x  1 root  wheel  25 May  1 21:06 /etc/localtime -> /usr/share/zoneinfo/Japan

grub-install

マニュアルの通り

/grub/menu.lst

default=0
timeout=10
serial --unit=0 --speed=115200 --word=8 --parity=no --stop=1
terminal --timeout=10 serial console
title Xen 2.0 / NetBSD (hda0, serial)
  root(hd0,0)
  kernel (hd0,a)/xen.gz dom0_mem=131072 com1=115200,8n1
  module (hd0,a)/netbsd-XEN0 root=/dev/hda1 ro console=ttyS0
title Xen 2.0 / NetBSD (hda0, vga)
  root(hd0,0)
  kernel (hd0,a)/xen.gz dom0_mem=196608
  module (hd0,a)/netbsd-XEN0 root=/dev/hda1 ro console=tty0
title NetBSD 3.0-BETA
  root (hd0,a)
  kernel --type=netbsd /netbsd-GENERIC
# grub-install --no-floppy wd0d

/netbsd と実際に起動した kernelを同じにしておかないと、netstat コマンドなどが 正常に動作しないようだ。

ちなみに FreeBSDをロードしたい場合は、kernelに/boot/loaderを指定する(らしい)

# sample
title FreeBSD
  root  (hd0,0,a)
  kernel /boot/loader

/etc/xen

XENUの設定ファイルは、基本的にはサンプルのまま
ハードディスクイメージに vnd0d を使うところだけ違う

/etc/xen/xenu1

(省略)
% xm create xenu1

/etc/xen/scripts/vif-bridge

Howto.htmlのサンプル通りで基本的によいのだが、実行フラグを付けるのを 忘れないように。

xenuのdmesg


NetBSD 3.0_BETA (XENU) #2: Fri Apr  8 17:56:35 CEST 2005
        bouyer@pop.lip6.fr:/local/pop1/bouyer/tmp/i386/obj/local/pop1/bouyer/net
bsd-3/src/sys/arch/i386/compile/XENU
total memory = 124 MB
avail memory = 121 MB
mainbus0 (root)
cpu0 at mainbus0: (uniprocessor)
cpu0: Intel Celeron (Mendocino) (686-class), 501.15 MHz, id 0x665
cpu0: features 183fbff
cpu0: features 183fbff
cpu0: features 183fbff
cpu0: I-cache 16 KB 32B/line 4-way, D-cache 16 KB 32B/line 4-way
cpu0: L2 cache 128 KB 32B/line 4-way
cpu0: ITLB 32 4 KB entries 4-way, 2 4 MB entries fully associative
cpu0: DTLB 64 4 KB entries 4-way, 8 4 MB entries 4-way
cpu0: 8 page colors
hypervisor0 at mainbus0
debug events interrupting at irq 0
misdirect events interrupting at irq 1
Domain controller: using irq 2
xencons0 at hypervisor0: Xen Virtual Console Driver
xencons0: console major 143, unit 0
Initialising Xen virtual ethernet frontend driver.
npx0 at hypervisor0: using exception 16
xennet0 at hypervisor0: Xen Virtual Network Interface
Xen clock: using irq 3
xennet0: using irq 4
xennet0: MAC address aa:00:00:50:02:f0
raidattach: Asked for 8 units
Kernelized RAIDframe activated
crypto: assign driver 0, flags 2
crypto: driver 0 registers alg 1 flags 0 maxoplen 0
crypto: driver 0 registers alg 2 flags 0 maxoplen 0
crypto: driver 0 registers alg 3 flags 0 maxoplen 0
crypto: driver 0 registers alg 4 flags 0 maxoplen 0
crypto: driver 0 registers alg 5 flags 0 maxoplen 0
crypto: driver 0 registers alg 17 flags 0 maxoplen 0
crypto: driver 0 registers alg 6 flags 0 maxoplen 0
crypto: driver 0 registers alg 7 flags 0 maxoplen 0
crypto: driver 0 registers alg 15 flags 0 maxoplen 0
crypto: driver 0 registers alg 8 flags 0 maxoplen 0
crypto: driver 0 registers alg 16 flags 0 maxoplen 0
crypto: driver 0 registers alg 9 flags 0 maxoplen 0
crypto: driver 0 registers alg 10 flags 0 maxoplen 0
crypto: driver 0 registers alg 13 flags 0 maxoplen 0
crypto: driver 0 registers alg 14 flags 0 maxoplen 0
crypto: driver 0 registers alg 11 flags 0 maxoplen 0
crypto: driver 0 registers alg 18 flags 0 maxoplen 0
xbd: using irq 5
xbd0 at hypervisor0: Xen Virtual Block Device 470 MB
Searching for RAID components...
boot device: xbd0
root on xbd0a dumps on xbd0b
mountroot: trying smbfs...
mountroot: trying coda...
mountroot: trying msdos...
mountroot: trying cd9660...
mountroot: trying ntfs...
mountroot: trying nfs...
mountroot: trying lfs...
mountroot: trying ext2fs...
mountroot: trying ffs...
root file system type: ffs
init: copying out path `/sbin/init' 11
xenu30: {6}

4つの非特権OSを動かしたところ

katsura@bsd5[1]_% xm list
Name              Id  Mem(MB)  CPU  State  Time(s)  Console
Domain-0           0      159    0  r----    148.5
xenu2              1       47    0  -b---     21.7    9601
xenu3              6       47    0  -b---     15.8    9606
xenu4              4       47    0  -b---     19.0    9604
xenu5              7       47    0  -b---     16.1    9607
katsura@bsd5[2]_% ifconfig -a
tlp0: flags=8843 mtu 1500
        address: 00:90:cc:37:99:30
        media: Ethernet autoselect (100baseTX full-duplex)
        status: active
        inet 192.47.37.15 netmask 0xffffff80 broadcast 192.47.37.127
lo0: flags=8009 mtu 33192
        inet 127.0.0.1 netmask 0xff000000
pflog0: flags=0 mtu 33192
xvif1.0: flags=8863 mtu 1500
        address: aa:00:00:51:02:f0
        inet 192.168.0.5 netmask 0xfffffffc broadcast 192.168.0.7
xvif4.0: flags=8863 mtu 1500
        address: aa:00:00:51:04:f0
        inet 192.168.0.13 netmask 0xfffffffc broadcast 192.168.0.15
xvif6.0: flags=8863 mtu 1500
        address: aa:00:00:51:03:f0
        inet 192.168.0.9 netmask 0xfffffffc broadcast 192.168.0.11
xvif7.0: flags=8863 mtu 1500
        address: aa:00:00:51:05:f0
        inet 192.168.0.17 netmask 0xfffffffc broadcast 192.168.0.19