NetBSD 1.6リリースのポイント

以下のテキストは、執筆時当時の情報を元に書いたものであり、 現在の情勢にそぐわないことを含む場合があるので注意されたい。 また、テキストは最終提出原稿で校正を経る前のものなので、実際にUNIXUSER 本誌に記載されたものとは異なる。誤字脱字等そのままである。

致命的な誤り以外は加筆修正等は行なわないので情報の鮮度に気をつけつつ 利用して欲しい。

目次


======================================================================
  NetBSD 1.6 リリース
======================================================================

2002年9月14日、待ちに待った NetBSD 1.6 がリリースされた。
保守リリースとしての 1.5.3 は7月に出ていたものの、メジャーリリースとして
は約2年ぶりのリリースとなる。この世界で2年といえば一昔以上の感があるが、
それを実感するのに十分なほど1.5から1.6への変更点は多い。主要変更点の一覧
は NetBSD-1.6 配付ディレクトリの CHANGES ファイル、あるいは
http://www.jp.netbsd.org/ja/ja/Releases/formal-1.6/NetBSD-1.6.html
などで得ることができる。
そのなかでもシステムを利用する上でとくに有益だと思う点をピックアップして
みた。

■
■ AGP対応!
■

FreeBSDでは一足先に対応していたAGP(Accelerated Graphics Port)ドライバが
NetBSDにも取り込まれた。これによって、たとえば i810, i815 系チップセット
を持つマシンなどでも X を利用できるようになった。同時に NetBSD 1.6では、
i386 port に含まれるXが XFree86 4.2.0 となったので、上記のようなマシンで
もすぐにXを利用できる。

去年の話になるが、筆者の大学の学生が所有していているVAIOノートにNetBSDを
入れたがっていたのだが、i815EMなのであきらめていた。それがめでたく今回の
AGP対応によってNetBSDユーザとなることができ、非常に喜んでいた。


■
■システム管理ツール sushi
■

メニュー選択方式のシステム管理ツール sushi(8) が追加された。キャラクタベー
スの画面構成と、キーボードでの操作のものだが起動画面がなかなか工夫されて
いる【画面 い】。

-----【画面 い】------------------------------------------------------
 %image sushi.png
----------------------------------------------------------------------

メニュー階層は【図 ろ】のようになっていて、これを見ればどのようなものが
あるか想像がつくだろう。
-----【図 ろ】--------------------------------------------------------
+-Software Installation and Maintenance
| +-Install New Binary Packages
| +-Install New Packages from source
| +-Remove Installed Packages
| +-List Installed packages
|
+-System Maintenance
| +-Edit startup configuration
| +-Edit inetd.conf
| +-Change your default mailer (mailer.conf)
| +-Edit usermgmt.conf
| +-Edit daily.conf
| +-Edit weekly.conf
| +-Edit security.conf
| +-Edit NetBSD kernel parameters (sysctls)
| +-Edit /etc/localtime (timezone)
|
+-Security and Users
| +-List users on this system
| +-Add a new user to the system
| +-Delete a user on the system
| +-Disable a user on the system
|
+-Processes and Daemons
| +-Show configured and running daemons
| +-Show all daemons
| +-Start configured daemons
| +-Start any daemon
| +-Stop configured daemons
| +-Stop any daemon
| +-Restart configured daemons
| +-Restart any daemon
| +-BLANK
| +-Show top 15 processes by cpu usage
| +-Show top 15 processes by memory usage
| +-Show top 15 processes by cpu time
|
+-Network related configuration
| +-Show or configure network adapters
| | +-List all network adapters
| | +-Configure a network adapter
| |
| +-Modify the hosts file
| | +-Add an IPV4 host entry
| | +-Add an IPV6 host entry
| | +-Modify an IPV4 host entry
| | +-Modify an IPV6 host entry
| | +-Delete host entries
| |
| +-Show or configure basic routing
| | +-Display the IPV4 routing table
| | +-Modify the IPV4 default route
| |
| +-Modify this machine's hostname
| |
| +-Modify NFS exported filesystems
| | +-Un-export currently exported filesystems
| | +-Add or change exported filesystems
| |
| +-Setup or Configure NIS/YP
|   +-Modify the domainname
|   +-Initialize this machine as a YP/NIS client
|   +-Initialize this machine as a YP/NIS slave
|   +-Initialize this machine as a YP/NIS master
|
|
+-Using sushi (information only)
| +-Programming menus in Sushi
|   +-The basics of making new Sushi Menus
|   +-The index file API
|   +-The form creation API
|   +-The script API
|   +-The exec API
|   +-The help file API
|   +-Alternate languages for Sushi
|   +-How searchpaths work in Sushi
|
+-Sushi utilities (logging/scripting)
  +-Toggle scripting of all commands
  +-Toggle logging of all commands
----------------------------------------------------------------------

コマンドライン操作に慣れているユーザならメニューベースの管理ツールに魅力
を感じないかもしれないが、sushiのおもしろいのは管理メニューで操作してい
るときに、どのスクリプトをバックエンドとして呼んでいるかを表示してくれる
点だろう。起動されたスクリプトをあとで見るとかなり参考になる。
/usr/share/sushi にメニュー定義や、スクリプトファイルなど関連するファイ
ルがインストールされている。


■
■ /etcディレクトリのアップデート支援ツール etcupdate
■

継続的に NetBSD を利用しているときに、/etc ディレクトリの内容をOSの新し
い機構に合わせていくのはなかなか骨の折れる作業である。これを支援してくれ
るツール etcupdate が追加された。/etc という貴重なディレクトリの更新作業
なのでもちろん一気に自動的にアップデートするようなことはせず、更新の必要
なファイルに対して

	1. 現在のファイルと新しいファイルの差分(unified diff)をページャ
	   で表示
	2. 差分を読み終わったら、取るべきアクションを選択するメニューを
	   表示【実効例 は】
	3. 選んだアクションを実行

----[実効例 は]-------------------------------------------------------
File: /etc/defaults/security.conf (modified)

Please select one of the following operations:

  d  Don't install the new file
  i  Install the new file (overwrites your modifications!)
  m  Merge the currently installed and new files
  s  Show the differences between the currently installed and new files
  v  Show the new file

What do you want to do? [Leave it for later] 
----------------------------------------------------------------------

というステップを繰り返す。アクションの部分で、m(マージ)を選択するとさら
に、差異のある部分全てに対して、新旧どちらの方を採用するか、またはそれら
をその場で修正したものを採用するかなどを選べるようになっている。

なお、更新のベースとして /usr/src/etc を要求するので、OSのアップグレード
をソースからのビルドで行なっている場合を想定している。別の場所にソースを
展開している場合は

	# etcupdate -s /some/where/src/etc

のように -s オプションで変更できる。また、バイナリディストリビューション
を利用する場合は、

	# mkdir /tmp/temproot
	# cd /tmp/temproot
	# tar xpzf /some/where/etc.tgz
	# etcupdate -b /tmp/temproot

のように -b オプションでその利用を指示できる。これらを含めて詳細は、
etcupdate(8) マニュアルページに書かれている。

■
■セキュリティ関連
■

2002年の初夏は重大なセキュリティホールが立て続けに発見された。とくに、
libc DNS リゾルバのバッファオーバーラン[NetBSD-SA2002-006]は厄介で、影響
範囲を調べるくらいならフルビルドしなおしたほうが早いとも言える深刻な問題
だった。NetBSD-1.6はもちろんこの修正が入っているので、古いNetBSDのまま使っ
ている場合はこれを機にアップグレードすると良いだろう。ただし、自前でコン
パイルしたstatic linkされたバイナリにセキュリティホールが残っている場合
もあるので、それらについては各自の責任で対処する必要がある。

また、同時期にOpenSSHの脆弱性(NetBSD-SA2002-004)も発覚したが、NetBSD-1.6
では OpenSSH 3.4 ベースのものに更新され、この問題は解決済みである。

 ●/var/chroot ディレクトリ

  セキュリティまわりの修正に関連して、システム全体の安全性を向上する意味
  で、デーモンをchroot環境で起動するためのディレクトリ /var/chroot が用
  意された。

	- /var/chroot/named
	  named(8)を起動するためのディレクトリ

	- /var/chroot/ntpd
	  ntpd(8)を起動するためのディレクトリ

	- /var/chroot/sshd
	  sshd(8)を起動するためのディレクトリ

  これらのうち named, ntpd については、/etc/rc.conf で、それぞれ
  named_chrootdir, ntpd_chrootdir 変数の値を上記ディレクトリ名にセットし
  ていた場合に利用されるようになる。

  ●SSH関連ディレクトリの変更

  従来 ssh のシステムワイドの設定を持つ定義ファイル群は /etc ディレクト
  リに置かれていたが、これらが /etc/ssh ディレクトリに移動された。同時に、
  設定ファイルが以下のように名前変更された。

	 sshd.conf → sshd_config
	 ssh.conf  → ssh_config

  ●追加されたユーザとグループ

  上記に関連して、【表に、表ほ】のユーザとグループが追加された。
----[表 に]-----------------------------------------------------------
	追加されたグループ
named:*:14:		named(8)の特権分離用
ntpd:*:15:		ntpd(8)の特権分離用
sshd:*:16:		sshd(8)の特権分離用
smmsp:*:17:		sendmail(8)の特権分離用
----[表 ほ]-----------------------------------------------------------
	追加されたユーザ
named:*:14:14::0:0:& pseudo-user:/var/chroot/named:/sbin/nologin
ntpd:*:15:15::0:0:& pseudo-user:/var/chroot/ntpd:/sbin/nologin
sshd:*:16:16::0:0:& pseudo-user:/var/chroot/sshd:/sbin/nologin
smmsp:*:17:17::0:0:Sendmail Message Submission Program:/nonexistent:/sbin/nolog
----------------------------------------------------------------------

  ソースを利用したビルドインストールや、etcupdateコマンドを利用する場合
  にはこれらのグループも追加しておく必要がある。とくに、ssh関連のユーザ
  とchrootディレクトリの変更はうっかりすると、アップグレード作業後にsshd
  が上がらずリモートから手が出せなくなってしまうことがあるので注意して欲
  しい。

  ●passwd.conf - md5なども選択可能に

  基本ログイン時のユーザ認証に用いるパスワードの暗号化方式を選択できるよ
  うになった。ローカルユーザのパスワード、およびNISパスワードについてそ
  れぞれ独立に方式を選べる。方式は、 old, newsalt,, md5,
  blowfish, のいずれかである。これは様々なシステムが混在するネッ
  トワークでNIS運用するときなどに非常に有用で、NISでは "old" (DES)を利用
  する一方、ローカルユーザには md5 を利用するといったことも可能である。
  既存のパスワードには影響を与えない。詳細は passwd.conf(5) を参照された
  い。

■
■カーネル関連の変更点
■

使用効率の向上に寄与する大きな変更点を挙げてみた。

  ●UBC(Unified Buffer Cache)

  メモリをバッファに効率的に利用でき、システム全体のレスポンスが
  向上した。

  ●Linuxバイナリエミュレーションの改良

  あらたに、arm, alpha, m68k, powerpc のportでも利用できるようになった。
  対応linuxカーネルバージョンも 2.4.18 になった。また、sysctl(8)を利用し
  てカーネル変数 emul.linux.kern.{osname,osrelease,osversion} を変更する
  ことでlinuxカーネルバージョンをセットできるようになった。

  ●userconf

  カーネル内蔵のデバイス設定マネージャ userconf(4) が追加された。
  カーネルコンフィギュレーションに

	options	USERCONF

  を追加すると有効になる。有効化されたカーネルをインストールしたら、ブー
  トローダのプロンプトで -c オプションを与えるとデバイス設定マネージャの
  プロンプトが現れる【註: へ】。
----[註 へ]-----------------------------------------------------------
筆者はVMware2環境に NetBSD-1.6 をインストールしたのだが、VMwareエミュレー
ションのNICを、NetBSD-1.6に新たに追加されたpcnデバイスで認識するとVMware 
がクラッシュしてしまうという問題が発生した。結局VMware内のEthernetを外し
てインストールに成功し、あとでpcnデバイスを外した(leデバイスで認識される)。
INSTALLカーネルにも USERCONF オプションが入っていればもうすこし楽だった
かもしれない。
----------------------------------------------------------------------

  ●pty数をsysctlで変更可能

  従来 pty(仮想端末)の数はカーネルコンパイル時に静的に決めるものだったが、
  これを sysctl でカーネル変数 kern.maxptys をセットすることで随時変更で
  きるようになった。ただし対応するデバイスも MAKEDEV で作成しておく必要
  がある。

  ●カーネル内 pppoe フルサポート

  PPP over Ethernet がカーネルに追加された。ユーザランドPPPoEよりも小さ
  いオーバーヘッドで通信できる。

  ●その他のパフォーマンス向上

  NEW_PIPEによってパイプ処理のパフォーマンスが改善された。また、
  ffs_dirpref() によってディレクトリ処理が高速化された。

■
■その他
■

その他、管理者もしくは利用者の観点から見て有用と思えるものを紹介しよう。

  ●サードパーティパッケージの更新

  NetBSD基本システムに含まれるサードパーティパッケージ各種が更新された
  【表 と】。

-----[表 と]------------------------------------------------------------
	【NetBSD-1.6基本システムに含まれるサードパーティパッケージ】
- amd 6.0.6 
- BIND 8.3.3 
- binutils 2.11.2 
- bzip2 1.0.2 
- cvs 1.11 
- dhcp 3.0.1rc9 
- file 3.38 
- gcc 2.95.3 
- groff 1.16.1 
- Heimdal 0.4e 
- IPfilter 3.4.27 
- kerberos4 1.1 
- ksh from pdksh 5.2.14p2 
- less 374 
- nvi 1.79 
- OpenSSH 3.4 
- OpenSSL 0.9.6g 
- Postfix 1.1.11 
- ppp 2.4.0 
- routed 2.24 
- sendmail 8.11.6 
- tcpdump 3.7.1 
- XFree86 4.2.0 (i386 port のみ) 
----------------------------------------------------------------------

  ●citrus locale インポート

  Citrusプロジェクトのxpg4dlツリーがインポートされた。これにより多くの言
  語のエンコーディングを利用できるようになった。

  ●ファイルサイズ単位オプションで -m, -g オプション利用可

  mount_mfs, du, df, dd, などで、ファイルサイズを表示する単位を変えるオ
  プションとして-m(MegaByte) -g(GigaByte) が追加された。

  ●vipw の -d オプション

  vipwで、パスワードファイルの存在するディレクトリを -d オプションで指定
  できるようになった。たとえば、httpdをchroot jailの中で起動しているよう
  な場合に、chroot環境内部のユーザデータベースを対話的に変更したいような
  ときに非常に作業しやすくなった。

  ●stat(1)コマンド

  stat(2)システムコールで得られる情報を表示するstat(1)コマンドが追加され
  た。プログラミングをする場合などにも重宝するだろう。

  ●pgrep, pkillコマンド

  走行中のプロセスの名前を検索対象として、指定したパターンにマッチするプ
  ロセスのPIDを出力する pgrep(1) コマンド、そのPIDにシグナルを送信する
  pkill(1) コマンドが追加された。Solaris に存在する同名のコマンドとほぼ
  同じ働きをするので既に馴染のある人もいるだろう。

  ●最大パーティション数を16個に拡張 (i386 port)

  これまで a〜h の8個が最大だったパーティション数が16個に拡大された。1台
  のHDDに他のBSDやLinuxを入れている場合に、それらのOSのデータ領域を
  NetBSDで mount するためにdisklabel(8)を書こうとしてもパーティション数
  が足りないと感じた人はいるだろう。数字の上では2倍だが、a〜eの5パーティ
  ション程度はOSインストールに消費してしまうので、自由な割り当てとしては
  残り3個が、11個と3倍以上になったと言えよう。ちなみに、拡張されたiパー
  ティション以降を利用する場合は、disklabelエディタで、パーティションの
  サイズとオフセットを追加するだけでなく、パーティション数を示す数字もイ
  ンクリメントする必要があるので注意が必要だr。たとえば、disklabel -e し
  た場合、「8 partitions」となっている部分を増やしたパーティションを含む
  数値に変えないと反映されない。

↓★ここの数字★
9 partitions:
#        size    offset fstype  [fsize bsize cpg/sgs]
 a:   2097585        63 4.2BSD   1024  8192    86   # (Cyl.    0*- 2080)
 b:    524160   2097648   swap                      # (Cyl. 2081 - 2600)
 c:  62910477        63 unused      0     0         # (Cyl.    0*- 62411*)
 d: 160836480         0 unused      0     0         # (Cyl.    0 - 159559)
 e:  60288732   2621808 4.2BSD   1024  8192    86   # (Cyl. 2601 - 62411*)
 i:  97916175  62910540 4.2BSD   1024  8192    86   # (Cyl. 62411*- 159550*)

  この例の場合 i パーティションは9番目なのでパーティション数も9以上に書
  き換える。


  ●ifwatchd

  ネットワークインターフェースの up/down に反応して指定したスクリプトを
  起動する ifwatchd(8) が追加された。pppoe(4) が利用している。

  ●USB 2.0

  試験的だが USB 2.0 コントローラのドライバ ehci(4) が追加された。

  ●WEP対応

  WEP暗号がifconfig(8)とawi(4)ドライバーでサポートされた。

  ●802.1Q VLAN

  802.1Q のVLAN(仮想LAN)がサポートされた。

  ●通常ファイル内のファイルシステムイメージの操作性強化

  指定したディレクトリツリーから、ファイルシステムイメージファイルを作成
  する makefs(8) コマンドが追加された(現状ffsのみ対応)。また、dump(8),
  dumpfs(8), fsck_ffs(8), fsirand(8), newfs(8), tunefs(8) 各コマンドにファ
  イルシステムイメージを操作対象とするためのオプション -F が追加された。
  これらを組み合わせて利用することで、任意のサイズのファイルシステムを手
  軽に作成できる。

%%%% だめだ…、リストまとめるのむっちゃ時間かかりそうです……。
%%%%  ●新たに対応したデバイスなど
%%%%
%%%%
%%%%Audio driver EigerLabs PCMCIA, Trident 4D WAVE, CS4281, Yamaha DS-1
%%%%	     ESS Maestro-2/3, Allegro-1
%%%%
%%%%SCSI driver Initio INIC-940/950 PCI SCSI, Tekram DC-395U/UW/F, DC-315/U
%%%%
%%%%...... i386だけでも、i386/INSTALL.txt "Supported devices" が309行あ
%%%%	   りますからねぇ…


■
■Try NetBSD!
■

i386 port の話をすれば、今回のAGP対応とXFree86 4.2.0の採用によってかなり
多くのマシンが「すぐにNetBSDを動かせる」状態になり、ぐぐっと身近になって
来たと言えるのではないだろうか。さらに NetBSD-1.6 のパッケージコレクショ
ンには KDE3 や OpenOffice.org も含まれているので、デスクトップ利用にも大
きく活躍するだろう。


yuuji@example.org
Fingerprint16 = FF F9 FF CC E0 FE 5C F7 19 97 28 24 EC 5D 39 BA
HIROSE Yuuji - ASTROLOGY / BIKE / EPO / GUEST BOOK / YaTeX [Tweet]