# FreeBSD ハンドブック

### FreeBSD ドキュメンテーションプロジェクト

Copyright © 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The FreeBSD Documentation Project

FreeBSD へようこそ! このハンドブックは FreeBSD 7.3-RELEASE と FreeBSD 8.1-RELEASE のインストールおよび、日常での使い方について記述したものです。 本ハンドブックは改編作業中であり、 さまざまな人々が編集に携わっています。 いま存在するセクションの中には情報が古くなってしまったため、 更新作業の必要があるものも含まれています。 もし、このハンドブックを編集するプロジェクトに協力したいとお考えなら、 FreeBSD documentation project メーリングリスト まで電子メールを(英語で)送ってください。 この文書の最新バージョンは、いつでも 日本国内版の FreeBSD ウェブサイト および FreeBSD ウェブサイト から入手できます (この文書の以前のバージョンは http://docs.FreeBSD.org/doc/ から入手できます)。 また、他のさまざまな文書形式、圧縮形式のものが FreeBSD FTP サーバ や数多くの ミラーサイト からダウンロードできます。 このハンドブックの書籍版 (英語版) は、 FreeBSD Mall から購入できます。 また、ハンドブックの検索 を行なうこともできます。

FreeBSD ハンドブック日本語版の作成は FreeBSD 日本語ドキュメンテーションプロジェクト (FreeBSD doc-jp) がおこなっています。 ハンドブックの日本語訳に関することは FreeBSD 日本語ドキュメンテーションプロジェクト `<doc-jp@jp.FreeBSD.org>` において日本語で議論されています。

文書の日本語訳に関するお問い合わせや、 文書の原文に関する問い合わせをしたいが英語が得意でないという方は FreeBSD 日本語ドキュメンテーションプロジェクト `<doc-jp@jp.FreeBSD.org>` まで、日本語でコメントをお寄せください。

Redistribution and use in source (SGML DocBook) and 'compiled' forms (SGML, HTML, PDF, PostScript, RTF and so forth) with or without modification, are permitted provided that the following conditions are met:

1. Redistributions of source code (SGML DocBook) must retain the above copyright notice, this list of conditions and the following disclaimer as the first lines of this file unmodified.

2. Redistributions in compiled form (transformed to other DTDs, converted to PDF, PostScript, RTF and other formats) 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.

> Important: THIS DOCUMENTATION IS PROVIDED BY THE FREEBSD DOCUMENTATION PROJECT "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FREEBSD DOCUMENTATION PROJECT BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS DOCUMENTATION, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

FreeBSD は The FreeBSD Foundation の登録商標です。

3Com および HomeConnect は 3Com Corporation の登録商標です。

3ware および Escalade は 3ware Inc. の登録商標です。

ARM は ARM Limited の登録商標です。

Adaptec は Adaptec, Inc. の登録商標です。

Adobe, Acrobat, Acrobat Reader および PostScript は アメリカ合衆国および/またはその他の国の Adobe Systems Incorporated の登録商標または商標です。

Apple, FireWire, Mac, Macintosh, Mac OS, Quicktime および TrueType は Apple Computer, Inc. の商標で、 アメリカ合衆国およびその他の国で登録されています。

Corel および WordPerfect は カナダ、アメリカ合衆国および/またはその他の国における Corel Corporation および/またはその関連会社の商標または登録商標です。

Sound Blaster は アメリカ合衆国および/またはその他の国における Creative Technology Ltd. の商標です。

CVSup は John D. Polstra の登録商標です。

Heidelberg, Helvetica, Palatino, and Times Roman はアメリカ合衆国およびその他の国における Heidelberger Druckmaschinen AG の登録商標または商標です。

IBM, AIX, EtherJet, Netfinity, OS/2, PowerPC, PS/2, S/390 および ThinkPad は アメリカ合衆国および/またはその他の国における International Business Machines Corporation の商標です。

IEEE, POSIX および 802 は アメリカ合衆国における Institute of Electrical and Electronics Engineers, Inc. の登録商標です。

Intel, Celeron, EtherExpress, i386, i486, Itanium, Pentium および Xeon はアメリカ合衆国およびその他の国における Intel Corporation またはその関連会社の商標または登録商標です。

Intuit および Quicken は アメリカ合衆国およびその他の国における Intuit Inc. またはその関連会社の 登録商標です。

Linux は Linus Torvalds の登録商標です。

LSI Logic, AcceleRAID, eXtremeRAID, MegaRAID および Mylex は LSI Logic Corp. の商標または登録商標です。

M-Systems および DiskOnChip は M-Systems Flash Disk Pioneers, Ltd. の商標または登録商標です。

Macromedia, Flash および Shockwave は アメリカ合衆国および/またはその他の国における Macromedia, Inc. の商標または登録商標です。

Microsoft, IntelliMouse, MS-DOS, Outlook, Windows, Windows Media および Windows NT は アメリカ合衆国および/またはその他の国における Microsoft Corporation の登録商標または商標です。

Netscape および the Netscape Navigator は アメリカ合衆国およびその他の国における Netscape Communications Corporation の登録商標です。

GateD および NextHop は アメリカ合衆国およびその他の国における NextHop の登録商標および商標です。

Motif, OSF/1 および UNIX は アメリカ合衆国およびその他の国における The Open Group の登録商標で、 IT DialTone および The Open Group は同じく商標です。

Oracle は Oracle Corporation の登録商標です。

PowerQuest および PartitionMagic は アメリカ合衆国およびその他の国における PowerQuest Corporation の登録商標です。

RealNetworks, RealPlayer および RealAudio は RealNetworks, Inc. の登録商標です。

Red Hat, RPM は アメリカ合衆国およびその他の国における Red Hat, Inc. の商標または登録商標です。

SAP, R/3 および mySAP は ドイツおよび世界中のいくつもの国における SAP AG の登録商標です。

Sun, Sun Microsystems, Java, Java Virtual Machine, JavaServer Pages, JDK, JSP, JVM, Netra, Solaris, StarOffice, Sun Blade, Sun Enterprise, Sun Fire, SunOS および Ultra は アメリカ合衆国およびその他の国における Sun Microsystems, Inc. の 商標または登録商標です。

Symantec および Ghost は アメリカ合衆国およびその他の国における Symantec Corporation の 登録商標です。

MATLAB は The MathWorks, Inc. の登録商標です。

SpeedTouch は Thomson の商標です。

U.S. Robotics および Sportster は U.S. Robotics Corporation の登録商標です。

VMware は VMware, Inc. の商標です。

Waterloo Maple および Maple は Waterloo Maple Inc. の商標または登録商標です。

Mathematica は Wolfram Research, Inc. の登録商標です。

XFree86 は The XFree86 Project, Inc. の商標です。

Ogg Vorbis および Xiph.Org は Xiph.Org の商標です。

製造者および販売者が製品を区別するのに 用いている表示の多くは、商標とされています。 この文書に登場する表示のうち FreeBSD Project がその商標を確認しているものには、その表示に続いて “™” または “®” 記号がおかれています。

[ 分割版 / 単一版 ]

List of Tables
15-1. 物理ディスクへの名前付け

List of Examples
4-1. 手動で package をダウンロードしてローカルからインストールする
12-1. `boot0` のスクリーンショット
12-2. `boot2` のスクリーンショット
12-3. `/etc/ttys` の insecure コンソール
13-1. adduser の設定の変更
13-2. rmuser による対話的なアカウントの削除
13-3. スーパユーザによる対話的な chpass
13-4. 通常のユーザによる対話的な chpass
13-5. passwd
15-1. ssh 越しの `dump` の利用
15-2. `RSH` を設定した ssh 越しの `dump` を利用
15-3. ブートフロッピーを作成するスクリプト
15-4. FreeBSD 4.X での vnconfig を用いた既存のファイルシステムイメージのマウント
15-5. `vnconfig` を用いたファイルベースディスクの新規作成
15-6. FreeBSD 5.X での `mdconfig` を用いた既存のファイルシステムイメージのマウント
15-7. `mdconfig` を用いたファイルシステムイメージの新規作成
15-8. `mdmfs` を用いたファイルベースディスクの設定とマウント
15-9. FreeBSD 4.X での md メモリディスク
15-10. `mdconfig` を用いたメモリベースディスクの新規作成
15-11. `mdmfs` を用いたメモリベースディスクの新規作成
20-1. sendmail アクセスデータベースの設定
20-2. メールエイリアス
20-3. 仮想ドメインメール対応表の例
21-1. 出張所 LAN または 家庭 LAN
21-2. 本社 LAN や他の LAN
A-1. -CURRENT (ls(1)) をちょっと確認してみます。
A-2. SSH を使って `src/` ツリーをチェックアウトしてみます。
A-3. ls(1) のバージョンを 6-STABLE ブランチから調べてみます。
A-4. ls(1) の変更点のリストを (Unified diff で) 作ってみます。
A-5. 他のどんなモジュールの名前が 使われているか検索してみます。

# 前書き

## 想定している読者

最初の部分は FreeBSD を使い始めた人向けで、FreeBSD のインストールの 過程を手引きし、UNIX® の基礎となっている概念や慣習を丁寧に紹介します。 この部分に取り組むために必要なのは、探究心と、紹介された新たな概念を 理解する能力だけです。

その次の、ハンドブックのはるかに大きな部分では、FreeBSD システム 管理者が興味を抱くあらゆる種類の話題が分かりやすく言及されています。 一部の章は、その章の前に読んでおくべきことが推奨されており、各章の 始めの概要で述べられています。

さらなる情報源の一覧は、Appendix B をご覧ください。

## 第 1 版からの変更

第 2 版は、FreeBSD ドキュメンテーションプロジェクトの献身的な メンバーによる 2 年以上に渡る作業の頂点に立つものです。 この新たな版における主な変更は、次のようなものです。

- 完備した索引が追加されました。

- ASCII キャラクタによる図はすべて画像に置き換えられました (訳注: 日本語版は作業中です)。

- 各章に、章に記載されている内容と、読者に期待される予備知識が すぐに分かるように、一定の内容の概要が付け加えられました。

- 内容は、“始めに”、“システム管理”、 “付録” の 3 つの論理的な部分に再構成されました。

- Chapter 2 (“FreeBSD のインストール ”) は新規ユーザーが文章の内容を理解しやすいように多くの スクリーンショットを入れて完全に書き直されました (訳注: 日本語版は作業中です)。

- Chapter 3 (“UNIX の基礎知識 ”) には、 プロセス、デーモン、シグナルに関する情報が追加されました。

- Chapter 4 (“アプリケーションのインストール”) には、バイナリパッケージの管理に関する情報が追加されました。

- Chapter 5 (“The X Window System”) は、 XFree86™ 4.X 上で KDE や GNOME のような近代的な デスクトップテクノロジーを利用することに力点をおいて、 完全に書き直されました。

- Chapter 12 (“FreeBSD の起動プロセス”) が拡張されました。

- Chapter 15 (“ストレージ”) は、 “ディスク” と “バックアップ” の 2 つの 章に分かれていたものをまとめて書き直されました。私たちは、 この話題は 1 つの章にまとめて示した方が分かりやすいと感じています。 RAID (ハードウェアとソフトウェアの両方) に関する節も追加されました。

- Chapter 18 (“シリアル通信”) は FreeBSD 4.X/5.X 向けに一から再構成されました。

- Chapter 19 (“PPP と SLIP”) は大幅に更新されました。

- Chapter 21 (“高度なネットワーク”) に、多くの新しい節が追加されました。

- Chapter 20 (“電子メール”) に、 sendmail の設定についてより多くの 情報が加えられました。

- Chapter 10 (“Linux バイナリ互換機能”) には、Oracle® や SAP® R/3® のインストール情報が加えられました (訳注: 日本語版は作業中です)。

- この第 2 版では、以下の新たな話題が扱われています。

  - 設定とチューニング (Chapter 11)

  - マルチメディア (Chapter 7)

## この文書の構成

この文書は 3 部構成になっています。 第 1 部導入では、FreeBSD のインストールと 基本的な使い方を扱います。各章は順に読むことを想定していますが、 馴染み深い話題を扱った章は飛ばしてもよいでしょう。 第 2 部システム管理は、より上級の FreeBSD ユーザの関心をひく話題を広く扱っています。 各章の始めにはその章が何を扱っていて、 読者にどんな予備知識が期待されるかを簡潔に述べた概要がおかれています。 これは、その章に関心のない読者がそこを飛ばして興味のある章を 見つけられるようにするためです。 第 3 部は参考情報からなる付録です。

Chapter 1, はじめに

  新規ユーザに FreeBSD を紹介します。ここでは、FreeBSD プロジェクトの歴史、目標と開発モデルについて述べています。

Chapter 2, インストール

  インストール過程を一通りユーザに案内しています。 また、シリアルコンソール経由でのインストールのような 高度な話題もいくらか扱っています。

Chapter 3, UNIX の基礎知識

  FreeBSD オペレーティングシステムの基本的なコマンドや 機能を扱っています。Linux やその他の UNIX 風のものに馴染んでいたら、 この章を飛ばしても構わないでしょう。

Chapter 4, アプリケーションのインストール

  FreeBSD の革新的な “Ports Collection” および 標準的なバイナリパッケージによるサードパーティアプリケーションの インストールについて説明しています。

Chapter 5, X Window System

  X Window System 全般と、特に FreeBSD 上での XFree86 の利用について述べています。 また、KDE や GNOME のような 一般的なデスクトップ環境にも触れています。

Chapter 11, 設定とチューニング

  システム管理者が FreeBSD システムを調整して最適な性能を 引き出すのに利用できるパラメータについて述べています。また、 FreeBSD で利用されている様な設定ファイルと そのありかも解説しています。

Chapter 12, 起動プロセス

  FreeBSD の起動プロセスを解説し、このプロセスを 設定オプションで制御する方法を説明しています。

Chapter 13, ユーザと基本的なアカウン トの管理

  ユーザアカウントの生成、操作について述べています。また、 ユーザーに課すことができる資源の制限や その他のアカウント管理作業について議論しています。

Chapter 8, FreeBSD カーネルのコンフィグレーション

  どのような場合に新たにカーネルを構成する必要があるかを説明し、 カスタムカーネルのコンフィグレーション、構築、 インストールについて詳しく説明しています。

Chapter 14, セキュリティ

  FreeBSD システムを安全に保つために役立つ Kerberos, IPsec, OpenSSH, ネットワークファイアウォールといった 利用可能な様々なツールについて説明しています。

Chapter 9, プリンタの利用

  FreeBSD におけるプリンタの取り扱いを説明しています。たとえば、 バナーページ、プリンターの課金、初期設定といったことです。

Chapter 15, ストレージ

  FreeBSD でストレージメディアやファイルシステムを どう扱うかを説明しています。対象は、物理ディスク、RAID アレイ、 光学およびテープメディア、メモリベースのディスク、 ネットワークファイルシステムなどです。

Chapter 16, 地域化

  FreeBSD を英語以外の言語で使う方法を説明しています。 システムとアプリケーション両方のレベルの地域化を扱っています。

Chapter 6, デスクトップアプリケーション

  Web ブラウザや生産性向上ツールのような 一般的なデスクトップアプリケーションをいくつか挙げ、 FreeBSD におけるインストール方法を説明しています。

Chapter 7, マルチメディア

  システムを音声やビデオ再生に対応させるためにどう設定するかを 説明します。また、音声やビデオアプリケーションも例示しています。

Chapter 18, シリアル通信

  FreeBSD システムに端末やモデムを、 ダイヤルインまたはダイヤルアウト用に接続する方法を説明しています。

Chapter 19, PPP と SLIP

  FreeBSD で、PPP, SLIP や PPP over Ethernet を使って リモートシステムに接続する方法を説明しています。

Chapter 21, 高度なネットワーク

  LAN 上の他のコンピュータとインターネット接続の共有、 ネットワークファイルシステムの利用、NIS 経由のアカウント情報の共有、 ドメインネームサーバの設定等々、 ネットワークに関する様々な話題を取り扱っています。

Chapter 20, 電子メール

  電子メールサーバの構成要素をそれぞれ説明し、 最もよく使われているメールサーバソフトウェアである sendmail について、 単純な設定をとりあげています。

Chapter 17, 開発の最前線

  FreeBSD-STABLE, FreeBSD-CURRENT と FreeBSD のリリースの 違いを説明します。どんなユーザにとって開発システムを追随するのが 有用かを述べ、その方法の概要をまとめています。

Chapter 10, Linux バイナリ互換機能

  FreeBSD の Linux バイナリ互換機能を説明しています。また、 Oracle, SAP R/3, Mathematica® といった人気の高い Linux アプリケーションのインストールを詳しく説明しています。

Appendix A, FreeBSD の入手方法

  FreeBSD を収録した CDROM や DVD の様々な入手先や、 FreeBSD をダウンロードしてインストールできるインターネット上の サイトを挙げています。

Appendix B, 参考図書

  この文書は、もっと詳しい説明が欲しくなるかもしれない さまざまな題目について触れています。参考図書には、このハンドブックで 参照している、多くの素晴らしい本が挙げられています。

Appendix C, インターネット上のリソース

  FreeBSD ユーザが FreeBSD について質問したり、技術的な 議論に参加できる、多くの公開された場について説明しています。

Appendix D, PGP 公開鍵

  多くの FreeBSD 開発者の PGP fingerprint を載せています。

## この文書で用いられている表記法

一貫して読みやすい文章を提供するために、この文書全体では以下の 表記法が用いられています。

### 書体による表記

イタリック体

  イタリック体 のフォントは、ファイル名、URL, 強調表現、技術用語の最初の使用を表すのに使われています。

`等幅`

  `等幅`フォントは、エラーメッセージ、 コマンド、環境変数、ports の名称、ホスト名、ユーザ名、 グループ名、デバイスの名称、変数、 コードの断片を表すのに使われています。

太字

  太字のフォントは、 アプリケーション、コマンド、キーを表すのに使われています。

### ユーザー入力

文章の他の部分と区別するため、キーは太字で 示されています。同時に押すことを意図したキーの組み合わせは、キーの間に ``+`' を入れて表されます。たとえば

Ctrl+Alt+Del

は、ユーザーが Ctrl, Alt それから Del キーを同時に 押すことを意図しています。

順に押すことを意図したキーは、カンマで区切って表されます。 たとえば

Ctrl+X, Ctrl+S

は、ユーザーが Ctrl キーと X キーを同時に押してから、 Ctrl キーと S キーを同時に押すことを 意図しています。

### 例

`E:\>` で始まる例は、MS-DOS® コマンドを表しています。特に注釈がなければ、それらのコマンドは最近の Microsoft® Windows® の “コマンドプロンプト” 環境でも 実行できます。

    E:\> tools\fdimage floppies\kern.flp A:

`#` で始まる例は、FreeBSD 上でスーパーユーザ権限で 実行しなければならないコマンドを示しています。そのコマンドを入力するには、 `root` としてログインするか、 通常のアカウントでログインして、スーパーユーザ権限を取得するために su(1) を使います。

    # dd if=kern.flp of=/dev/fd0

`%` で始まる例は、通常のユーザアカウントで実行するべき コマンドを示しています。特に断りのない限り、環境変数の設定やその 他のシェルコマンドには C シェルの文法が使われています。

    % top

## 謝辞

あなたが手にしている文書は、 世界中の何百人もの人々の努力の賜物です。 誤字脱字の修正を送ったのか、文章を丸々投稿したのかによらず、 すべての貢献が役に立ちました。

多くの会社が、 著者らを雇用してフルタイムでこの文書に取り掛かれるようにしたり、 出版費用を出したりして、この文書を作り上げるのを援助してくれました。 特に、BSDi (その後 Wind River Systems に買収されました) は、フルタイムでこの文書の改善作業をするように FreeBSD ドキュメンテーションプロジェクトのメンバーを雇用し、それが 2000 年 3 月の最初の出版 (ISBN 1-57176-241-8) につながりました。 その後、Wind River Systems は、印刷出力の仕組みを整備し、 章を追加するために著者を何名か追加で雇用してくれました。この作業は、 2001 年 11 月の第 2 版の 出版 (ISBN 1-57176-303-1) に結実しました。

# I. 導入

FreeBSD ハンドブックの第 1 部はユーザと FreeBSD が初めての管理者向けです。各章の内容は以下のとおりです。

- FreeBSD の紹介

- インストールの手順の解説

- UNIX の基礎

- FreeBSD で利用できる豊富なサードパーティ製のアプリケーションの インストール方法

- UNIX におけるウィンドウシステム X、 およびクリエイティブなデスクトップ環境の設定の詳細の紹介

このハンドブックでは頻繁にページを飛すことなく前から後へと スムーズに読み進めるように、 後方への参照を極力抑えるようにしています。

# Chapter 1. はじめに

改訂: Jim Mock.

## 1.1. この章では

FreeBSD に興味を持っていただきありがとうございます! この章では FreeBSD の歴史、目標、開発モデルなど、 FreeBSD プロジェクトに関するさまざまな事柄を扱います。

この章に書かれている話題は、次のようなものです。

- FreeBSD とその他のオペレーティングシステムとの違い

- FreeBSD プロジェクトの歴史

- FreeBSD プロジェクトの目標

- FreeBSD オープンソース開発モデルの基本的な考え方

- そして、“FreeBSD” という名前の由来について

## 1.2. FreeBSD へようこそ!

FreeBSD は、4.4BSD-Lite から派生したオペレーティングシステムで、 Intel (x86 および Itanium®), AMD64, Alpha™, Sun UltraSPARC® コンピュータに対応しています。 他のアーキテクチャに対する移植も進行中です。 FreeBSD の歴史や、 現在のリリースについても読むことができます。 プロジェクトへの何らかの貢献 (ソースコード、ハードウェア、 資金の提供など) について興味があれば、 FreeBSD への貢献をご覧ください。

### 1.2.1. FreeBSD で何ができるの?

FreeBSD には多くの注目すべき機能があります。 例を挙げれば以下のようになります:

- 優先度を動的に調節する機能を備えることで アプリケーションとユーザとの間で円滑かつ公平な コンピュータ資源共有を実現し、 特に高い負荷にも耐えることができる堅牢さを備えた プリエンプティブマルチタスキング。

- 多くの人々が 1 つの FreeBSD システムをさまざまな目的で同時に使うことを可能にする マルチユーザ機能。 これは例えば、プリンタやテープデバイスといったシステムの周辺機器が、 そのシステムを利用する全てのユーザだけでなく ネットワーク経由においても自然な形で共有され、 さらに重要なシステム資源の使い過ぎを防ぐために 個々の資源に対する制限がユーザ単位、 グループ単位で設定できる、というようなことを意味しています。

- SCTP や DHCP, NFS, NIS, PPP, SLIP, IPsec, IPv6 といった業界標準規格のサポートを含んだ堅固な TCP/IP ネットワーキング。 これによって、FreeBSD マシンが商用サーバと同じように相互に運用でき、 NFS (リモートファイルアクセス) や、 電子メールサービスのような極めて重要な機能を提供します。 また、WWW や FTP, ルーティング、ファイアウォール (セキュリティ) サービスを用いてインターネットと接続できます。

- アプリケーション (あるいはユーザ) がお互いに干渉できない ようにするメモリ保護機能。 アプリケーションがクラッシュしても、 どのような場合でも他のアプリケーションには影響を与えません。

- FreeBSD は 32ビット のオペレーティングシステム (Alpha 版、Itanium 版、AMD64 版および UltraSPARC 版は 64 ビット) であり、 最初からそのようにこつこつと設計されました。

- 業界標準である X Window システム (X11R7) は、普通の VGA カードやモニタでグラフィカルユーザインタフェース (GUI) を提供し、すべてのソースコードも一緒に提供されます。

- Linux や SCO, SVR4, BSDI, NetBSD 用に作られた多くのプログラムとの バイナリ互換性。

- 何千ものすぐに実行可能な アプリケーションが FreeBSD の ports や packages コレクションで利用可能です。 ここに用意されているものはネットを探し回る必要がありません

- インターネット上で入手可能な、 移植が容易な 何千ものアプリケーションを追加できます。FreeBSD は最も評判のよい商用の UNIX システムとソースコードレベルで互換性があります。 このため、ほとんどのアプリケーションは、 もしあったとしてもほんの少しの変更でコンパイルすることができます。

- デマンドページング仮想メモリ とそれに “付随の VM/buffer キャッシュ” の設計は、 多くのメモリを要求するアプリケーションに対して 効率よくメモリを与えるようにする一方で、 他のユーザに対しても対話的な応答を維持します。

- 複数の CPU を搭載したマシンにおける SMP 機能のサポート。

- 完全な C や C++, Fortran の開発ツール。進んだ研究や開発のための多くの他の言語も ports や packages コレクションで提供されています。

- システム全体のソースコード が提供されているので、 要求に合わせて環境を最大限に適合させることができます。 真のオープンシステムが利用できるのですから、 所有権のある解決方法に締めつけられ、 ベンダのなすがままになる必要はありません。

- 膨大な量の オンラインドキュメント。

- もう書ききれません!

FreeBSD はカリフォルニア大学バークレイ校の Computer Systems Research Group (CSRG) による 4.4BSD-Lite リリースを基にしており、 BSD システムの開発の優れた伝統を守り続けています。 CSRG による素晴らしい活動に加えて、 FreeBSD プロジェクトは何千時間もの時間を注ぎ込んで、 実際の使用の場において最大の性能と信頼性を 発揮するためにシステムのチューニングをおこなっています。 多くの大企業が PC オペレーティングシステムの分野で 実現しようと奮闘しているそのような機能や性能、信頼性を FreeBSD は今すぐ提供できます!

あなたの思いつく限りのアプリケーションは、何でも FreeBSD で実行できます。ソフトウェア開発からファクトリオートメーション、 在庫制御から遠く離れた人工衛星のアンテナの方向調整まで; 商用 UNIX 製品でできることは、FreeBSD でも十分にできるのです! また、FreeBSD は世界中の研究センターや大学によって開発される 文字通り何千もの高品質で、たいていはほとんど無料で利用できる アプリケーションによる恩恵を得ることができます。 商用のアプリケーションも提供されており、 日々増え続けています。

FreeBSD のソースコードは広く提供されているので、 システムも特別なアプリケーションやプロジェクトに合わせて、 いくらでもカスタマイズすることができます。 これは有名な商業ベンダから出ているほとんどのオペレーティング システムでは不可能なことです。以下に現在 FreeBSD を 使っている人々のアプリケーションの例をいくつか上げます:

- インターネットサービス: FreeBSD に組み込まれている 頑強な TCP/IP ネットワーキング機能は次のようなさまざまな インターネットサービスの理想的なプラットフォームになります:

  - FTP サーバ

  - World Wide Web サーバ (標準、もしくは安全な [SSL])

  - IPv4 および IPv6 ルーティング

  - ファイアウォールと NAT (“IP マスカレード”) ゲートウェイ

  - 電子メールサーバ

  - USENET ニュースおよび電子掲示板システム

  - さらにいろいろ…

  FreeBSD を利用すれば、小規模で安価な 386 クラスの PC でも気軽に導入することができますし、 事業の成長に合わせてアップグレードした 4 つの Xeon プロセッサと RAID ストレージデバイスを備えたシステムでも、 全くそのまま使うことができるのです。

- 教育: あなたは、計算機科学または関連分野の工学を専攻する学生さんですか? オペレーティングシステムやコンピュータアーキテクチャ、 ネットワークについて学習するなら、 実際に FreeBSD のソースコードを読んで、 それがどのように動作するのかを学ぶのが一番よい方法です。 また、無料で利用できる CAD や数学、 グラフィックデザインのパッケージがいくつもあるので、 コンピュータに関わる主要な目的が、 他のことをすることにある方にも、 大いに役立ちます。

- 研究: システム全体のソースコードが利用できるため、 FreeBSD はオペレーティングシステムの研究だけでなく、 計算機科学の他の部門においても優れたプラットフォームです。 自由に利用できる FreeBSD の特長は、オープンフォーラムで 議論される特別なライセンスの同意や制限について心配することなく、 離れたグループでもアイディアや開発の共有による共同研究を可能にします。

- ネットワーキング: 新しいルータが必要? ネームサーバ (DNS) は? 内部のネットワークを人々から守るファイアウォールは? FreeBSD はすみに眠っている使われていない 386 や 486 の PC を簡単に 洗練されたパケットフィルタリング機能を持つ高級なルータに 変えることができます。

- X Window ワークステーション: 自由に利用できる X11 サーバを使うことによって、 安価な X 端末として FreeBSD を使うこともできます。 X 端末とは違って FreeBSD は多くのアプリケーションをローカルに走らせることもでき、 中心のサーバの負荷を軽減することも可能です。 FreeBSD は“ディスクレス”でもブート可能であり、 個々のワークステーションを安価で、 容易に管理することさえ可能にします。

- ソフトウェア開発: 基本的な FreeBSD システムには、有名な GNU の C/C++ コンパイラやデバッガを含んだ完全な開発ツールがついてきます。

FreeBSD は、ソースとバイナリの両方とも、CD-ROM または anonymous FTP で入手可能です。 詳しくは Appendix A をご覧ください。

### 1.2.2. FreeBSD はどこに使われていますか?

FreeBSD は、以下に代表されるような世界最大クラスの IT 会社のデバイスおよび製品のプラットフォームとして利用されています。

- Apple

- Cisco

- Juniper

- NetApp

FreeBSD は、以下のサイトに代表されるような、 インターネット上で最大クラスのサイトでも利用されています。

- Yahoo!

- Yandex

- Apache

- Rambler

- Sina

- Pair Networks

- Sony Japan

- Netcraft

- NetEase

- Weathernews

- TELEHOUSE America

- Experts Exchange

また、この他にもあります。

## 1.3. FreeBSD プロジェクトについて

以下の節では簡単な歴史やプロジェクトの目標、 開発モデルなど、普段は表にでない話題を提供しています。

### 1.3.1. FreeBSD 小史

寄稿: Jordan Hubbard.

FreeBSD プロジェクトは 1993 年の始めに “Unofficial 386BSD Patchkit” の最後の 3 人のまとめ役によって、部分的に patchkit から派生する形で開始されました。ここでの 3 人のまとめ役というのは、Nate Williams と、Rod Grimes と、私 (Jordan K. Hubbard) です。

私たちのもともとの目標は、patchkit という仕組みではもう十分に解決できなくなってしまった 386BSD の数多くの問題を修正するための、386BSD の暫定的なスナップショットを作成することでした。 こういった経緯を経ているので、 このプロジェクトの初期の頃の名前が “ 386BSD 0.5 ” や “386BSD 暫定版 (Interim)” であったということを覚えている人もいるでしょう。

386BSD は、Bill Jolitz が (訳注: バークレイ Net/2 テープを基に) 作成したオペレーティングシステムです。当時の 386BSD は、ほぼ一年にわたって放っておかれていた (訳注: 作者がバグの報告を受けても何もしなかった) というひどい状況に苦しんでいました。 作者の代わりに問題を修正し続けていた patchkit は日を追うごとに不快なまでに膨張してしまっていました。 このような状況に対して、このままではいけない、 何か行動を起こさなければ、 ということで異議を唱えるものは私たちのなかにはいませんでした。 そして私たちは挑戦することを決断し、 暫定的な “クリーンアップ” スナップショットを作成することで Bill を手助けしようと決めたのです。しかし、 この計画は唐突に終了してしまいました。Bill Jolitz が、 このプロジェクトに対する受け入れ支持を取り下げることを突然決意し、 なおかつこのプロジェクトの代わりに何をするのかを一切言明しなかったのです。

たとえ Bill が支持してくれないとしても、 われわれの目標には依然として やる価値があると決心するのにさしたる時間はかかりませんでした。 そこで David Greenman が考案した名称 “FreeBSD” を私たちのプロジェクトの名前に採用し、 新たなスタートを切りました。 この時点でのプロジェクトの初期目標は、すでにこのシステム (訳注: 386BSD + Patchkit) を使っていた利用者たちと相談して決められました。 プロジェクトが実現に向けて軌道に乗ってきたことが明確になった時点で、 私は Walnut Creek CDROM 社に連絡してみました。CD-ROM を使って FreeBSD を配布することによって、 インターネットに容易に接続できない多くの人々が FreeBSD を簡単に入手できるようになると考えたからです。Walnut Creek CDROM 社は FreeBSD を CD で配布するというアイデアを採用してくれたばかりか、 作業するためのマシンと高速なインターネット回線を私たちのプロジェクトに提供してくれました。 当時は海のものとも山のものともわからなかった私たちのプロジェクトに対して、Walnut Creek CDROM 社が信じられないほどの信頼を寄せてくれたおかげで、 FreeBSD は短期間のうちにここまで大きく成長したのです。

CD-ROM による最初の配布 (そしてネットでの、 ベータ版ではない最初の一般向け配布) は FreeBSD 1.0 で、1993 年 12 月に公開されました。これはカリフォルニア大学バークレイ校の 4.3BSD-Lite (“Net/2”) を基とし、386BSD や Free Software Foundation からも多くの部分を取り入れたものです。 これは初めて公開したものとしては十分に成功しました。続けて 1994 年 5 月に FreeBSD 1.1 を公開し、 非常に大きな成功を収めました。

この時期、 あまり予想していなかった嵐が遠くから接近してきていました。 バークレイ Net/2 テープの法的な位置づけについて、Novell 社とカリフォルニア大学バークレイ校との間の長期にわたる 法廷論争において和解が成立したのです。和解の内容は、Net/2 のかなりの部分が “権利つき (encumbered)” コードであり、それは Novell 社の所有物である、 というバークレイ校側が譲歩したものでした。なお、Novell 社はこれらの権利を裁判が始まる少し前に AT&T 社から買収していました。 和解における譲歩の見返りにバークレイ校が得たのは、 4.4BSD-Lite が最終的に発表された時点で、 4.4BSD-Lite は権利つきではないと公式に宣言されること、 そしてすべての既存の Net/2 の利用者が 4.4BSD-Lite の利用へと移行することが強く奨励されること、という Novell 社からの “ありがたき天からの恵み” でした (訳注: 4.4BSD-Lite はその後 Novell 社のチェックを受けてから公開された)。FreeBSD も Net/2 を利用していましたから、1994 年の 7 月の終わりまでに Net/2 ベースの FreeBSD の出荷を停止するように言われました。ただし、 このときの合意によって、 私たちは締め切りまでに一回だけ最後の公開をすることを許されました。 そしてそれは FreeBSD 1.1.5.1 となりました。

それから FreeBSD プロジェクトは、まっさらでかなり不完全な 4.4BSD-Lite を基に、文字どおり一から再度作り直すという、 難しくて大変な作業の準備を始めました。“Lite” バージョンは、部分的には本当に軽くて、中身がなかったのです。 起動し、 動作できるシステムを実際に作り上げるために必要となるプログラムコードのかなりの部分がバークレイ校の CSRG (訳注: BSDを作っているグループ) によって (いろいろな法的要求のせいで) 削除されてしまっていたということと、4.4BSD の Intel アーキテクチャ対応が元々かなり不完全であったということがその理由です。 この移行作業は結局 1994 年の 11 月までかかりました。 そしてその時点で FreeBSD 2.0 をネットと CD-ROM (12 月末ごろ) を通じて公開しました。これは、 かなり粗削りなところが残っていたにもかかわらず、 かなりの成功を収めました。そしてその後に、より信頼性が高く、 そしてインストールが簡単になった FreeBSD 2.0.5 が 1995 年の 6 月に公開されました。

私たちは 1996 年の 8 月に FreeBSD 2.1.5 を公開しました。 この出来が非常に良く、特に業務で運用しているサイトや ISP での人気が高かったので、私たちは 2.1-STABLE 開発分流から更に公開をおこなうことにメリットがあると考えました。 それが FreeBSD 2.1.7.1 で、2.1-STABLE 開発分流の最後を締めくくるものとして、 1997 年の 2月に公開されました。2.1-STABLE 開発分流 (RELENG_2_1_0) は現在、 保守のみをおこなう状態になっており、今後は、 セキュリティの改善や他の何か重要なバグフィックスのみがおこなわれるでしょう。

FreeBSD 2.2 の開発は、RELENG_2_2 開発ブランチとして、 開発の本流 (“-CURRENT”) から 1996 年 11 月に分岐し、そして 1997 年 4 月に最初のリリース (2.2.1) が行なわれました。2.2 開発ブランチからは、さらに 97 年の夏と秋にリリースが行なわれ、 98 年 11 月に 2.2 開発ブランチの最終リリース (2.2.8) が行なわれています。1998 年 10 月に FreeBSD 3.0 最初の公式リリースが行なわれ、 2.2 開発ブランチは開発の終了を迎えることになりました。

1999 年 1 月 20 日には、FreeBSD の開発ツリーが 4.0-CURRENT と 3.X-STABLE の各ブランチに再び分岐しました。 3.X-STABLE からは 3.1 が 1999 年 2 月 15 日に、 3.2 が 1999 年 5 月 15 日に、 3.3 が 1999 年 9 月 16 日に、 3.4 が 1999 年 12 月 20 日に、 そして 3.5 が 2000 年 6 月 24 日にリリースされました。 3.5 はリリースの数日後、Kerberos に対するセキュリティ上の修正を組み込むために小規模な更新がなされ、 3.5.1 になりました。3.5.1 は、この 3.X ブランチにおける最終リリースになる予定です。

2000 年 3 月 13 日に 4.X-STABLE ブランチが作成されました。 このブランチからはこれまでいくつものリリースが公開されています。 2000 年 3 月に初めて 4.0-RELEASE が公開され、 最終版の 4.11-RELEASE は 2005 年 1 月 に公開されました。

長い間延期されていた 5.0-RELEASE は、2003 年 1 月 19 日にアナウンスされました。これは 3 年近くにわたる作業の集大成であり、 このリリースより、FreeBSD は先進的なマルチプロセッサとアプリケーションスレッドに対応し、 また、UltraSPARC と `ia64` プラットフォームへの対応も始まりました。 これに続いて 5.1 が 2003 年 6 月に公開されています。 -CURRENT ブランチからの最後の 5.X リリースは 5.2.1-RELEASE で、 2004 年 2 月に公開されました。

2004 年 8 月に RELENG_5 ブランチが作成され、続いて 5.3-RELEASE が 5-STABLE ブランチからのリリースの始まりを飾りました。 最新の 5.5-RELEASE は 2006 年 5 月に公開されました。 今後 RELENG_5 ブランチからのリリースは行われません。

2005 年 7 月に RELENG_6 ブランチが作成され、 6.X ブランチの最初のリリースである 6.0-RELEASE は 2005 年 11 月に公開されました。 最新の 6.4-RELEASE は 2008 年 11 月に公開されました。 今後 RELENG_6 ブランチからのリリースは行われません。

2007 年 10 月に RELENG_7 ブランチが作成され、 このブランチの最初のリリースである 7.0-RELEASE は 2008 年 2 月に公開されました。 このブランチからの最新の 7.3-RELEASE は March 2010 に公開されました。 RELENG_7 ブランチからのリリースは、引き続き行われる予定です。

2009 年 8 月に RELENG_8 ブランチが作成され、 8.X ブランチの最初のリリースである 8.0-RELEASE は Jul 2010 に公開されました。

長期的な開発プロジェクトは 9.X-CURRENT 開発ブランチ (トランク) で続けられ、 9.X のスナップショットリリースが収録された CD-ROM (もちろん、ネットワーク上でも) は、開発の進行状況に応じて スナップショットサーバ より継続して入手できます。

### 1.3.2. FreeBSD プロジェクトの目標

寄稿: Jordan Hubbard.

FreeBSD プロジェクトの目的は、いかなる用途にも使用でき、 何ら制限のないソフトウェアを供給することです。 私たちの多くは、 コード (そしてプロジェクト) に対してかなりの投資をしてきており、 これからも多少の無駄はあっても投資を続けて行くつもりです。ただ、 他の人達にも同じような負担をするように主張しているわけではありません。 FreeBSD に興味を持っている一人の残らず全ての人々に、 目的を限定しないでコードを提供すること。これが、 私たちの最初のそして最大の “任務” であると信じています。そうすれば、コードは可能な限り広く使われ、 最大の恩恵をもたらすことができるでしょう。これが、 私たちが熱烈に支持しているフリーソフトウェアの最も基本的な目的であると、 私は信じています。

私たちのソースツリーに含まれるソースのうち、 GNU 一般公有使用許諾 (GPL) または GNU ライブラリ一般公有使用許諾 (LGPL) に従っているものについては、多少制限が課せられています。ただし、 ソースコードへのアクセスの保証という、 一般の制限とはいわば逆の制限 (訳注1) です。 GPL ソフトウェアの商利用には、そのライセンスにある 複雑な側面が影響してくることがあります。 ですから私たちは、そうすることが合理的であると判断されたときには、 より制限の少ない、BSD 著作権表示を採用しているソフトウェアを選択するようにしています。

(訳注1) GPL では、「ソースコードを実際に受け取るか、 あるいは、希望しさえすればそれを入手することが可能であること」 を求めています。

### 1.3.3. FreeBSD の開発モデル

寄稿: 浅見 賢.

FreeBSD の開発は非常に開かれた、柔軟性のあるプロセスです。 貢献者リスト を見ていただければわかるとおり、 FreeBSD は文字通り世界中の何百という人々の努力によって開発されています。 FreeBSD の開発環境は、 この何百という開発者がインターネット経由で共同作業できるようになっているのです。 新しい開発者はいつでも大歓迎ですので、FreeBSD technical discussions メーリングリスト にメールを送ってください。 FreeBSD announcements メーリングリスト もありますので、他の FreeBSD ユーザに自分のやっていることを宣伝したい時にはどうぞ使ってください。

あと、FreeBSD プロジェクトとその開発プロセスについて、 どなたにも知っていていただきたいのは以下のようなことです。

SVN と CVS リポジトリ

  長年にわたり FreeBSD のソースツリーは CVS (Concurrent Versions System) によってメンテナンスされてきました。 CVS はソースコード管理用のフリーソフトウェアで、 FreeBSD のリリースにも含まれています。 2008 年 6 月、プロジェクトはソースコード管理のシステムを SVN (Subversion) に移行しました。 ソースツリーの急速な増加や、 これまでに蓄積された膨大な量の履歴によって、 CVS の持つ技術的な限界が明かになってきたためです。 メインリポジトリは SVN によって管理されますが、 SVN リポジトリにおける変更点は CVS に反映されるので、 CVSup や csup といった CVS のクライアントツールはこれまで通り正常に動きます。 現在はベースシステムのみが SVN を採用し、 ドキュメント、World Wide Web および Ports リポジトリは、 これまでと同じく CVS によって管理されています。 FreeBSD の メインリポジトリは米国カリフォルニア州のサンタクララ市に存在し、 そこから世界中のたくさんのミラーサイトにコピーされています。 -CURRENT と -STABLE が含まれている SVN ツリーそのものは、 あなたのマシンにも簡単に取ってくることができます。 これについては ソースツリーの同期の章をご覧ください。

ソースツリー管理者

  コミッター (committers) は CVS ツリーへの書き込み権限を持っている人、 FreeBSD のソースに変更を加えることができる人です (CVS でリポジトリに変更を加えるには cvs(1) `commit` というコマンドを使うので、 これらの人々は英語では “committers” と呼ばれます)。 開発者にコードを送って見てもらうのに一番いい方法は send-pr(1) コマンドを使うことです。 もし、何か問題があって `send-pr` が使えないなら FreeBSD committer's メーリングリスト にメールを送っていただいても構いません。

FreeBSD コアチーム

  FreeBSD コアチーム は FreeBSD プロジェクトが会社だとすると取締役会にあたるものです。 コアチームとして一番重要な役割は FreeBSD プロジェクトが全体としてよい方向に向かっていることを確認することです。 責任感あふれる開発者を上記のソースツリー管理者として招くこと、 また仕事上の都合などでコアチームをやめた人たちの後任を見つけることもコアチームの役割です。 現在のコアチームは FreeBSD 開発者 (committer) の中から 2008 年 7 月に選挙によって選出されました。 コアチームを選出するための選挙は、2 年ごとに行なわれています。

  コアチームのうち何人かは特定の担当分野を持っており、 システムのうち一部に特に重点をおいて面倒を見ています。 FreeBSD 開発者と担当分野の完全なリストは コントリビュータのリストをご覧ください。

  > Note: 忘れてほしくないのは、 コアチームのほとんどは FreeBSD に対してボランティアの立場であり、 FreeBSD プロジェクトからは何ら金銭的な支援を受けていない、 ということです。ですから、 ここでの“責任”は “保証されたサポート”ではありません。 そういう意味で、上記の“取締役会” という例えはあまりよくないかもしれません。むしろ、FreeBSD のために人生を棒に振ってしまった人の集まりといった方が正しいかも…。

その他のコントリビュータ

  最後になりますが、 もっとも重要で多数をしめる開発者はフィードバックやバグフィクスをどんどん送ってくれるユーザ自身です。 FreeBSD の開発に関わっていきたいという人は、 議論の場である FreeBSD technical discussions メーリングリスト に参加するとよいでしょう。 FreeBSD 関連メーリングリストに関する詳細は、 Appendix C をご覧ください。

  FreeBSD への貢献者リスト は日に日に長くなっています。 あなたも今日、何か送ることからはじめてみませんか?

  もちろん FreeBSD に貢献するには、 コードを書くほかにもいろいろな方法があります。 助けが求められている分野については、 FreeBSD プロジェクトのウェブサイトをご覧ください。

ひとことで言うと、FreeBSD の開発組織はゆるやかな同心円状になっています。 ともすると中央集権的に見えがちなこの組織は、 FreeBSD のユーザがきちんと管理されたコードベースを 容易に追いかけられるようにデザインされているもので、 貢献したいという人を締め出す意図は全くありません! 私たちの目標は安定したオペレーティングシステムと 簡単にインストールして使うことのできる アプリケーションを提供することです。 この方法は、それを達成するために非常にうまくはたらきます。

これから FreeBSD の開発にたずさわろうという人に、 私たちが望むことはただ一つです。 FreeBSD の成功を継続的なものにするために、 現在の開発者と同じような情熱を持って接してください!

### 1.3.4. 現在のリリースについて

FreeBSD は自由に利用でき、 Intel i386™, i486™, Pentium®, Pentium Pro, Celeron®, Pentium II, Pentium III, Pentium 4 (とその互換品), Xeon™, DEC Alpha Sun UltraSPARC ベースのコンピュータで動作する、 4.4BSD-Lite ベースの全ソースつきのリリースです。 これはもともとカリフォルニア大学バークレイ校 CSRG グループのソフトウェアがベースとなっており、NetBSD, OpenBSD, 386BSD, そして Free Software Foundation の ソフトウェアなどにより拡張されています。

1994 年末の FreeBSD 2.0 のリリースからみると、FreeBSD は性能、 機能、安定性の面で劇的に改善されました。 もっとも大きな変化は仮想メモリシステムに おける改良で、 統合化された VM/file バッファキャッシュを用いることで性能を向上させながらも FreeBSD のメモリの使用量を減らすことができたことです。そのおかげで、最低 5 MB メモリという制約上でも動作するようになりました。 その他の拡張としては、NIS のクライアントとサーバの完全なサポート、 トランザクション TCP のサポート、ダイヤルオンデマンド PPP, 統合された DHCP のサポート、改良された SCSI サブシステム、 ISDN, ATM, FDDI, Fast Ethernet や Gigabit Ethernet (1000 Mbit) アダプタへの対応、最新の Adaptec コントローラ対応の改良や、 数百件におよぶバグの修正などがあります。

FreeBSD では基本配布セットに加え、 移植されたソフトウェア集として数千の人気の高いプログラムを提供しています。 この文書を印刷している時点で 20,000 以上の ports (移植ソフトウェア) が存在します。 ports には http (WWW) サーバから、ゲーム、言語、 エディタまでありとあらゆるものが含まれています。 ports はオリジナルソースに対する “差分”という形で表現されており、 Ports Collection 全体でも 417 MB 程度にしかなりません。 こうすることで ports の更新を容易にし、昔の 1.0 Ports Collection が要求したディスクスペースよりも少なくて済むようになります。 ports をコンパイルするには、 インストールしたいと思っているプログラムのディレクトリに移動し、 `make install` とすると、 あとはすべてシステムがやってくれます。 どの ports もオリジナルの配布セットを動的に CD-ROM や近くの FTP サーバから取ってくるので、 ディスクは構築したいと思っている ports の分だけを準備しておけば十分です。 ほとんどの ports は、すでにコンパイルされた状態で “package” として提供されており、 ソースコードからコンパイルしたくない場合、これを使うと (`pkg_add` というコマンドで) 簡単にインストールできます。 package と ports に関する詳細は、 Chapter 4 をご覧ください。

最近の FreeBSD マシンであれば、 `/usr/share/doc` というディレクトリに、インストールの手順や FreeBSD を利用する上で有用なドキュメントがたくさんあります。 これらのローカルにインストールされたドキュメントは、HTML ブラウザを使って、以下の URL から 参照することができます。

FreeBSD ハンドブック (英文オリジナル)

  `/usr/share/doc/handbook/index.html`

FreeBSD に関する FAQ

  `/usr/share/doc/faq/index.html`

また、 http://www.FreeBSD.org/ にはマスタ (かなり頻繁に更新されます) がありますので、 こちらも参照してください。

# Chapter 2. FreeBSDのインストール

改訂: Jim Mock `<jim@FreeBSD.org>`, 2000 年 1 月.

## 2.1. この章では

この章では, あなたのシステムに FreeBSD をインストールする方法について説明しています. FreeBSD は, CD-ROM, フロッピーディスク, 磁気テープ, MS-DOS パーティション, (モデムや LAN を経由できるなら) anonymous FTP や NFS を通じてインストールすることができます.

どのインストール方法を利用する場合も, まず 次のセクションで説明する インストールディスクの作成から始める必要があります. あなたが今すぐにインストールするつもりがなくとも, このディスクでコンピュータを起動すれば, あなたのハードウェアを FreeBSD で利用する上で重要な情報を得ることができます. また, その情報はどのインストール方法が利用できるのかについての判断材料にもなりますし, さらに, 後々起こるかも知れない問題を解決する手がかりにもなるでしょう.

もし anonymous FTP を使用してインストールすることを考えているなら, 必要な作業はインストールフロッピーを用意することだけです. インストールプログラムは自動的に, 他に必要なものを用意してくれます.

FreeBSD の入手に関する詳しい情報は, 付録の FreeBSD の入手方法 をご覧ください.

さて, これまでの説明では, まだ具体的に何をすれば良いのかはっきりしないと思います. 続いて, 次のインストールガイドへ進んでください.

## 2.2. インストールガイド

この節では FreeBSD のインストールの準備から, 実際にインストールするところまでをひととおり解説しています. もし, 何か足りないな, と思われる部分に気付かれましたら, FreeBSD documentation project メーリングリスト まで電子メールでお知らせください.

> 訳注: FreeBSD documentation project メーリングリスト へのメールは英語でお願いします. 日本語訳に関するお問い合わせや, 英語でのやりとりが不安な方は 日本語ドキュメンテーションプロジェクト `<doc-jp@jp.FreeBSD.org>` まで日本語でお問い合わせください.

### 2.2.1. インストールの準備

FreeBSD をインストールするには, その前にさまざまな準備作業が必要になります. これから, それぞれのインストール方法に対して どのような下準備が必要かを説明します.

まず最初に, あなたの使っているハードウェアが FreeBSD でサポートされているかどうか確認しなければなりません. これには, サポートされている設定一覧 の節が便利です. ;-) SCSI コントローラやイーサネットアダプタ, サウンドカード等, あなたのマシンが装備している“拡張カード”のリストを作っておくと良いでしょう. このリストには割り込み番号 (IRQ) や IO ポートのアドレスといった, 拡張カードの設定に関する内容も書いておきます.

#### 2.2.1.1. インストールフロッピーの作成

何枚かのフロッピーディスクを用意します. これらのディスクは あなたのコンピュータを起動して, インストーラを起動するのに使用します. この手順は, あなたのシステムが CDROM からの起動をサポートしていて, CDROM からインストールを行う場合には必要ありません. もしそうでなければ, 起動用のフロッピーが必要です.

> Note: あなたのシステムが CDROM からの起動をサポートしているかどうかわからない場合は, 試してみてください. 普通にドライブに CDROM を入れてシステムを再起動します. その際, システムがハードディスクよりも先に CDROM から起動を試みるように, BIOS の設定を変更する必要が あるかも知れません.

> Tip: もしあなたが CDROM を持っていても, ファイルをダウンロードすることには意味があります. それは, CD がリリースされた後に FreeBSD のインストーラのバグが見つかった場合, FTP サイトのイメージは速やかに修正されるからです. 当たり前のことですが, プレスされた後の CD が修正されることはありません.

1. 起動フロッピーイメージの入手

   イメージは `.flp` という拡張子のファイルです. FreeBSD の CD-ROM を持っている場合は, `floppies` サブディレクトリの中にあります. また, FreeBSD の FTP サイトの floppies ディレクトリおよび, そのミラーサイトからイメージをダウンロードすることも可能です.

   ファイルの名前は (時々) FreeBSD のリリースによって, またインストールを行うアーキテクチャによっても異なります. FTP サイトにあるインストール用起動ディスクのイメージに関する説明において, あなたが必要とするファイルに関する最新の情報が提供されています.

2. フロッピーディスクの準備

   ダウンロードしたイメージファイル一つに対して, 欠陥の無いフロッピーディスクを一枚用意する必要があります. 欠陥が無いことを確認する簡単な方法は, ディスクをフォーマットしてみることです. フォーマット済みで販売されているフロッピーディスクを信頼してはいけません.

   > Important: FreeBSD をインストールしようとした時に, インストーラがクラッシュもしくはフリーズしてしまったり, 不正な振る舞いをする場合にまず疑わなければならないのは, 起動フロッピーです. 別のディスクにイメージファイルを書き込んで, もう一度試してみてください.

3. イメージファイルのフロッピーディスクへの書き込み

   `kern.flp` というイメージファイルは, ディスクにコピーする通常ファイルではありません. これらはディスク全体の内容を含んだイメージファイルです.

   したがって, DOS の `copy` のような コマンドを使用してファイルを書き込むことはできません. これには, イメージを直接ディスクに書き込む特別なツールを使用する必要があります.

   もし DOS が動いているコンピュータ上でフロッピーを作成する場合は, わたしたちが提供する `fdimage` というツールを使用します.

   `E:` にある CD-ROM を利用して起動フロッピーを作成するには, 次のようにします.

       E:\> tools\fdimage floppies\kern.flp A:

   これをそれぞれの `.flp` ファイルに対して 毎回新しいフロッピーディスクに入れ換えながら繰り返します. コマンドは `.flp` の存在する場所に応じて調整してください. もし CD-ROM を持っていない場合には, FreeBSD の FTP サイトの `tools` ディレクトリから `fdimage` をダウンロードすることができます.

   (他の FreeBSD システムなどの) UNIX システム上で 起動フロッピーに書き込む場合は, dd(1) コマンドが利用できます. FreeBSD 上でなら, コマンドの実行は次のようになるでしょう.

       # dd if=kern.flp of=/dev/rfd0

   FreeBSD 上で `/dev/rfd0` は 一台目のフロッピーディスク (`A:` ドライブ) を表し, `/dev/rfd1` は同様に, 二台目のフロッピーディスク (`B:` ドライブ) を表します. 他の異なる UNIX システムでは, フロッピーディスクのデバイスに 違う名前が使われているかも知れません. 必要に応じて, それぞれのシステムに付属する文書を参照する必要があるでしょう.

#### 2.2.1.2. CDROM からインストールする前に

あなたの CDROM ドライブが FreeBSD でサポートされない型である場合は, MS-DOS パーティションのセクションをご覧ください.

BSDi の FreeBSD CD-ROM からインストールする場合は, 準備作業のすべてを行なう必要はありません (その他の CDROM でもそうだと思いますが, わたしたちはその CDROM の構成を知りませんので, 確実にそうかどうかはわかりません). Walnut Creek の CD-ROM に収録されている `install.bat` で直接 FreeBSD を起動することもできますし, `makeflp.bat` で起動フロッピーディスクをつくることも可能です.

CD が El Torrito 規格の起動をサポートしていて, あなたのシステムが CDROM から直接起動する機能をサポートしているなら (多くの古いシステムは サポートしていません), 単に FreeBSD の CD の一枚目をドライブに CD を入れてシステムを再起動してください. すると CD から直接起動して, インストールメニューが表示されます.

MS-DOS パーティションからインストールするつもりでいて, CD ドライブにアクセス可能なドライバが組み込まれているなら, CDROM に入っている install.bat スクリプトを起動してください. これは, DOS から直接 FreeBSD のインストールへと進みます.

> Note: これは本当の DOS から行なわなければいけません (たとえば DOS モードで起動するなど). Windows の DOS プロンプトからでは駄目です.

(DOS から) 最も簡単なインタフェースを使うには, `view` と入力してください. すると DOS メニューユーティリティが起動し, 可能なすべてのインストール方法の選択ができるようになります.

UNIX システム上で起動フロッピーを作成する場合は, このガイドのインストールフロッピーの作成のセクションを参照してください.

DOS から, もしくはフロッピーディスクからの起動が完了したら, インストールプログラムでインストールメディアとして CDROM を選択することができるようになっているはずです. すべての配布ファイルは, CDROM から読み込まれますので, 他の種類のインストールメディアは不要です.

システムのインストールがすべて終わって (ハードディスクから) 再起動したら, 次のように入力することで, いつでも CDROM をマウントすることができます:

    # mount /cdrom

CD をドライブから取り出す前にはまず, 必ずアンマウントする必要があります. アンマウントは次のコマンドで行なうことができます.

    # umount /cdrom

単純にドライブから取り出さないように!

> Note: インストールに入る前に CD-ROM をドライブに入れておいて, インストールフロッピーディスクが立ち上がるときに CD-ROM を見つけられるようにしておくようにしましょう. CD-ROM をデフォルトでシステムにつけ加えたい場合も CD-ROM を入れておきます (インストールメディアとして実際に CDROM を選択しない場合も同様).

おわりに, あなたのマシンの CD-ROM を直接使って, FTP 経由で別のマシンに FreeBSD をインストールさせたいとします. やり方は簡単です. あなたのマシンのインストールが終了した後に, `vipw` コマンドを使って, passwd ファイルに以下の行を追加します.

    ftp:*:99:99::0:0:FTP:/cdrom:/nonexistent

こうするとあなたのマシンにネットワーク接続できる人 (そして, login 許可を持っている人) は, メディアタイプとして FTP を選択できるように なります. 具体的には, FTP サイトの選択メニューから ``Other'' を選択して, `ftp://`あなたのマシンのアドレス`` を入力します.

> Note: もしインストールの途中であなたのシステムの anonymous FTP を有効にしたなら, 上の設定はインストーラが自動的に 行います.

#### 2.2.1.3. フロッピーディスクからのインストールの前に

あなたがフロッピーディスクからのインストールをしなくては ならない場合 (私たちはこの方法を とらない ことを強く提案します), その理由はハードウェアがサポートされてなかったためか, 単にいばらの道を通ることを楽しんでいるからでしょうが, インストール用の フロッピーディスクを用意する必要があります.

最低でも `bin` (基本配布ファイル) ディレクトリ内のすべてのファイル を入れられるだけの 1.44 メガバイトか 1.2 メガバイトのフロッピーディスク が必要です. これらのフロッピーディスクを DOS で作成している場合は, フロッピーディスクは「MS-DOS の FORMAT コマンドでフォーマット」 されなくてはなりません. Windows をお使いの場合は, Windowsのエクスプローラを使用してディスクを 初期化してください. (`A:` ドライブを 右クリックして, "フォーマット"を選択します).

工場での初期化済みディスクを「信用しないでください」. 念のためにあなた 自身でフォーマットし直してください. ユーザからのトラブル報告の多くは ちゃんと初期化されていないディスクを 使用していたことが原因となっています. 私が特にフォーマットし直してくださいと述べているのも, この理由からです.

他の FreeBSD マシンでフロッピーディスクを作成している場合, フォーマットすることは悪いことではありません. いちいち DOS ファイルシステムのフロッピーディスクを作成する必要は ありませんので, `disklabel` コマンドと `newfs` コマンドを使って, 次のような手順で (3.5 インチ 1.44 メガバイトディスク用の) UFS ファイルシステムを 作成することもできます.

    # fdformat -f 1440 fd0.1440
    # disklabel -w -r fd0.1440 floppy3
    # newfs -t 2 -u 18 -l 1 -i 65536 /dev/rfd0

> Note: 5.25 インチの 1.2 メガバイトディスクの場合は "fd0.1200" と "floppy5" にしてください

これで他のファイルシステムと同様に mount して書き込むことができます.

フォーマットされたフロッピーディスクを用意したら, それらにファイル をコピーしなくてはなりません. 配布ファイルはいくつかのかたまり にわかれていて, これらのかたまり五つで一般的な 1.44 メガバイトの フロッピーディスクに収まるようになっています. フロッピーディスクに 入るだけファイルを入れていって, 配布ファイルをすべてコピーしてください. それぞれの配布ファイルはサブディレクトリに コピーする必要があります. たとえば, `a:\bin\bin.aa`や, `a:\bin\bin.ab`のようになります.

インストールメディアの選択場面になったら, “Floppy” を選択して, 残りの指定をやってください.

#### 2.2.1.4. ハードディスクの MS-DOS パーティションからインストールする前に

ハードディスクの MS-DOS パーティションからインストールするときは, まずファイルを `c:\freebsd` にコピーします. CD-ROM にあるディレクトリ構造を反映してコピーしなくてはなりません. そこで, DOS の `xcopy` コマンドの使用をおすすめします. たとえば, FreeBSD の最低限のインストールをするには, このような手順で コピーします.

    C:\> md c:\FreeBSD
    C:\> xcopy e:\bin c:\FreeBSD\bin\ /s
    C:\> xcopy e:\manpages c:\FreeBSD\manpages\ /s

ここで, `C:` ドライブには十分なディスクスペースが残っており, CD-ROM は `E:` ドライブに接続されているものとします.

CDROM ドライブを持っていない場合, ftp.FreeBSD.org から配布ファイル (DISTS) をダウンロードすることができます. それぞれの配布ファイル (DISTS) は, それぞれ独自の ディレクトリに入っています; たとえば, bin 配布ファイルは 8.1/bin ディレクトリにあります.

MS-DOS からたくさんの配布ファイル (DISTS) をインストールしたい (そしてディスクの余裕がある) 場合は, それぞれ `c:\freebsd` ディレクトリにコピーします -- `BIN` 配布ファイルは, 最低限必要なものです.

#### 2.2.1.5. QIC/SCSI テープからのインストールの前に

テープからのインストールは, おそらく FTP を利用したオンライン インストールか, CD-ROM を利用したインストールができない場合の, もっとも簡単な方法でしょう. インストールプログラムは, 以下のような コマンドを使用して, 単純に配布ファイルがテープ上に tar されていることを 期待しています.

    # cd /freebsd/distdir
    # tar cvf /dev/rwt0 dist1 ... dist2

インストールに入る前に, テンポラリ (一時使用) ディレクトリに 十分なディスクスペースを確保して, 作成したテープのすべての ファイルを格納できることを確認してください (テンポラリディレクトリは 自分で選ぶことができます). テープの特性上, ランダムにアクセスするこ とができませんので, 一時的に極めて大量の容量を必要とします. テープに準備しただけの量のディスクスペースを 一時的に使用することに 留意してください.

> Note: インストールに入るときは, 起動フロッピーディスク から立ち上げる 前 にテープをドライブに入れておかなくてはなりません. さもないとインストール時のデバイス検出のときにテープを 見つけられません.

#### 2.2.1.6. ネットワーク経由のインストールの前に

三つの物理的な接続形態で, ネットワーク経由のインストールを おこなうことができます. シリアルポート (SLIP もしくは PPP), パラレルポート (PLIP (laplink ケーブル使用)), またはイーサネット (標準的なイーサネットコントローラ (いくつかの PCMCIA カードにも対応)) を使用することができます.

SLIP のサポートはまだまだ原始的とも呼べる方法なので, ラップトップと 他のコンピュータをシリアルケーブルで接続するといった具合いに, 直接接続してなくてはいけません. SLIP インストールは, ダイヤル機能を 持っていませんので, インストールするためには直接接続しなくてはなりません. PPP インストールではダイヤルアップ接続が可能ですので, できれば PPP 接続の 方を選択しましょう.

もしもあなたがモデムを使用しているなら, あなたに残された選択肢は ほぼ間違いなく PPP インストールでしょう. インストール時に必要になりますので, サービスプロバイダ (ISP) に関する情報を用意しておきましょう.

PPP ダイヤルの際は, とてもシンプルな端末エミュレーターで 作業することになります. もし ISP に接続するのに PAP や CHAP を用いるなら (言い換えると, もしあなたが Windows で ISP に接続する時に スクリプトを使用していないのであれば), `dial` と ppp のプロンプトに対して入力 するだけでいいです. しかしそれ以外の場合は, お手持ちのモデムで ISP にダイヤルするための``ATコマンド''の使い方を 知っておく必要があります. これ以上の情報については, handbook や FAQ のユーザー PPP エントリーを参照してください. 問題が起きた場合には, `set log local ...` コマンドを用いてログを画面に吐くこともできます.

FreeBSD (2.0R 以降) の動いている別のマシンと直接接続が可能でしたら, “laplink” パラレルポートケーブルで接続することを考えてみましょう. パラレルポート経由のデータ転送スピードは, シリアルラインでの 一般的なスピード (最高 50kbit/sec) よりもずっと高速ですので, 高速にインストールすることができます.

最後になりますが, ネットワークインストールのうちでもっとも高速なものとしては イーサネットアダプタを使用するのがあげられます. FreeBSD ではきわめて多くの PC イーサネットカードをサポートしています. サポートされている カードの表 (と, 必要な設定) は, サポートされているハードウェア に書いてあります. サポートされている PCMCIA カードを使っている場合には, ラップトップの電源を 入れる「前」に差し込んでおくことにも注意してください. 残念ながら今の FreeBSD は, インストール時の活線挿抜には対応していません.

ネットワークでの IP アドレス, あなたのアドレスクラスに対応した ネットマスク, マシン名を知っておくことも必要です. PPP 接続を利用したインストールを行いたいけれども固定 IP アドレスを持っていないという場合は, ISP が自動的に IP アドレスを割り当てます. ネットワーク管理者の方に たずねればどんな値を使ったらよいかを教えてくれるでしょう. もしも他のホストを IP アドレスではなくて名前で引きたい場合, ネームサーバとゲートウェイ のアドレスも知らなくてはなりません (PPP をご使用の場合は, プロバイダの IP アドレスになります). HTTP proxy (下記参照) 経由で FTP インストールを行いたい場合は, proxy サーバのアドレスも必要になります. これらのうちのすべて, またはいくつかを 知らない場合は, イーサネット経由でのインストールを始める前に「まず」 ネットワーク管理者に相談してください.

##### 2.2.1.6.1. NFS インストールのための下準備

NFS インストールはまったく単純明解です. FreeBSD の配布ファイルを サーバの好きな場所にコピーしておいて, メディア選択で NFS を選択します.

もしサーバが “privileged (特権) ポート” へのアクセスのみをサポート している場合, (Sun ワークステーションの標準ではこうなっています) インストールを進める前に Options メニューを選択して, ``privileged port'' オプションを選択してください.

イーサネットカードの性能が悪くて, 転送速度が遅くて困っている場合も, 適当な Options を選択するとよいでしょう.

NFS 経由でインストールするためには, サブディレクトリも 含めたマウントにサーバが対応している必要があります. たとえば, FreeBSD 8.1 の配布ファイルが `ziggy:/usr/archive/stuff/FreeBSD` にあるとすると, マシン `ziggy` では `/usr` や `/usr/archive/stuff` だけではなく, `/usr/archive/stuff/FreeBSD` の直接マウントが可能に なっていなければなりません.

FreeBSD の `/etc/exports` ファイルでは, このことは `-alldirs` オプションによって制御されています. 他の NFS サーバの場合だとまた話が違ってくるかもしれません. もしもサーバから “permission denied” というメッセージが 返ってくるようでしたら, サブディレクトリマウントをちゃんと 有効にできていないことが考えられます.

##### 2.2.1.6.2. FTP インストールのための下準備

FTP 経由のインストールは, FreeBSD 8.1 の最新バージョンを ミラーしているどのサイトからでも可能です. 世界中の妥当な FTP サイトの 選択肢をメニューに並べておきました.

このメニューに出ていない他の FTP サイトからインストール する場合や, ネームサーバの設定に問題が生じた場合は, メニューでサイト ``Other'' を選ぶところで, お好みの URL でサイトを指定することができます. URL として直接 IP アドレスで指定してもよく, 直接指定した場合はネームサーバ がなくても FTP インストールが可能になります. たとえば, 以下のようにします.

    ftp://209.55.82.20/pub/FreeBSD/8.1-RELEASE

FTP 経由のインストールを行う場合, active, passive, HTTP proxy 経由の三種類のモードが利用できます.

FTP Active

  すべての FTP 転送の際に “Active” モードを使用します. ファイアウォール内部のマシンではうまく動きませんが, passive モードをサポートしていない古い FTP サーバでも 動作します. passive モードでの FTP 転送 (こちらが デフォルトです) が失敗した場合は, active を使ってください.

FTP Passive

  すべての FTP 転送の際に “Passive” モードを使用します. このモードを使用することで, ランダムポートアクセスインを 許さないファイアウォールを 越えることができるようになります.

HTTP proxy 経由の FTP

  この方法では, (ウェブブラウザと同様に) HTTP プロトコルを使って proxy サーバに接続し, FTP の操作を実現します. proxy サーバは FTP 要求を (訳注: HTTP から FTP に) 変換して FTP サーバに送るため, ファイアウォールが FTP 接続を禁止していても, HTTP proxy サーバが提供されていれば ファイアウォールを超えた FTP 接続を行なうことが可能です. この方法を用いる場合は, FTP サーバの他に proxy サーバを指定する必要があります.

> Note: FTP proxy には HTTP proxy タイプでないものもありますが, そういったタイプは非常にまれです. どちらであるかわからないような場合は大抵, 上で述べている HTTP proxy タイプであると考えて良いでしょう.

通常 proxy FTP サーバに対しては, ユーザ名の一部として “@” 記号に続いて実際に接続したいサーバの名称を与える必要が あります. そうすると proxy サーバは本当のサーバの「ふり」 をするようになります. たとえば: `ftp.FreeBSD.org` から ポート番号 1234 で要求を待つ proxy FTP サーバ `foo.bar.com` を使って インストールしたいとします.

この場合では, 「オプション」メニューで FTP username を ftp@ftp.FreeBSD.org, パスワードとして自分の電子メールアドレス を指定します. インストールメディアとして FTP (または proxy サーバがサポートしていれば passive FTP), URL を以下のようにします: `ftp://foo.bar.com:1234/pub/FreeBSD`

`ftp.FreeBSD.org` の `/pub/FreeBSD` に対する FTP 要求については `foo.bar.com` が代理で処理をおこなうことになり, むこう のマシンからインストールすることができます (インストール時 の要求により `ftp.FreeBSD.org` からファイルをもってきます).

#### 2.2.1.7. BIOS によるドライブの番号付けの確認

BIOS の, ケーブルのつなぎ直しを必要としない番号の 付け替え機能を利用している場合は, 混乱しないように, まずはじめに Section 15.1 を読んでください.

### 2.2.2. FreeBSD のインストール

ここまでのインストールの準備段階を状況に応じて完全に行うと, FreeBSDをインストールする準備が整います.

何かうまくいかなかった場合は, あなたが使おうとしている インストールメディアのことが書いてある箇所まで戻って もう一度読むとよいでしょう. おそらく最初読んだときに 見落していた, 有効なヒントがあるものと思います. ハードウェアの問題が出てきたとか, FreeBSD がまったく 立ち上がらない場合は, boot フロッピーディスクに提供されている Hardware Guide を読んで, 何か解決方法はないか探してください.

FreeBSD の起動フロッピーディスクには, インストールをおこなうために 必要と思われるすべてのオンラインドキュメントを用意してあります. もしもそのドキュメントがお望みのものでないようでしたら, 私たちはあなたが何にもっとも困っているのかを知りたいと思います. コメントを FreeBSD documentation project メーリングリスト にお送りください. FreeBSD のインストールプログラム (sysinstall) を, うっとうしい “step-by-step” ガイドなしに, プログラム自身で使用方法がわかるようにするのが最終目標です. 目標達成までには時間がかかりそうですが, ともかくそれが 目標なのであります :-)

閑話休題. ここに, “典型的なインストールの手順” を まとめてみましたので, お役にたてるものと思います.

1. `kern.flp` を書き込んだフロッピーで 起動します. その後, 指示に従ってこれを取り出し, `mfsroot.flp` を書き込んだフロッピーを ドライブに入れ return キーを叩きます. ハードウェアの性能に よりますが, 起動には 30秒から 3分かかります. 起動したら 初期選択画面が出てくるでしょう. もしも `kern.flp` からまったく起動 しなかったり, どこかの段階で起動が止まってしまった 場合は, ハードウェアガイド の Q&A を読んで, 理由を探ってみます.

2. F1 キーを叩きます. メニューシステムとインストールプログラム 全般に対しての使い方が表示されます. このメニューシステムを 使ったことがない場合は, 徹底的に読んでください.

3. Options を選択し, 他に必要な特別な選択を おこないます.

4. 典型的なインストールでおまかせしたいか, それぞれの段階をいちいちコントロールしたいか (可能であれば適切なデフォルトを使用して) 簡単にさっさと 済ませたいかによってそれぞれ, Standard, Custom, または Express を選択してください. FreeBSD を初めて使う方には, Standard を一番におすすめします.

5. final configuration メニューからは, メニュー形式のさらに 進んだ設定をおこなうことができます. ネットワーク周りの 設定は, 特に CD-ROM / テープ / フロッピーディスクから インストールして, まだネットワーク設定をおこなっていない 人にとっては特に重要でしょう. インストールの時点できちんと 設定しておけば, ハードディスクからシステムを立ち上げ直した 時点でネットワーク接続ができるようになっていることでしょう.

## 2.3. サポートされているハードウェア

現在 FreeBSD は, ISA, VLB, EISA, PCI バスを搭載した, 386SX から Pentium クラス までのさまざまな種類の PC で動作します (386SX はおすすめではありません). IDE, ESDIドライブや, さまざまな SCSI コントローラ, ネットワークカードや シリアルカードにも対応しています. FreeBSD は IBM のマイクロチャネル (MCA) バスもまたサポートしています.

FreeBSD を走らせるには, 最低 8メガバイトの RAM が推奨されます. あなたのハードウェアによっては, それより少ないメモリでは 問題が発生する可能性があるため, 16メガバイトの RAM を推奨します.

以下のリストは, 現在 FreeBSD で動作が確認されているハードウェアの リストです. 他のハードウェアでも問題なく動いていると思いますが, 私たちのところには情報は入ってきていません.

### 2.3.1. ディスクコントローラ

- WD1003 (あらゆる MFM/RLL)

- WD1007 (あらゆる IDE/ESDI)

- IDE

- ATA

- Adaptec 社製 1535 ISA SCSI コントローラ

- Adaptec 社製 154X シリーズ ISA SCSI コントローラ

- Adaptec 社製 174X シリーズ EISA SCSI コントローラ (スタンダード, エンハンスドモード)

- Adaptec 社製 274X/284X/2920C/294X/2950/3940/3950 (Narrow/Wide/Twin) シリーズ EISA/VLB/PCI SCSI コントローラ

- Adaptec 社製 AIC-7850, AIC-7860, AIC-7880, AIC-789X オンボード SCSI コントローラ

- Adaptec 社製 1510 シリーズ ISA SCSI コントローラ (起動デバイスとしては使用できません)

- Adaptec 社製 152X シリーズ ISA SCSI コントローラ

- AHA-152X および SoundBlaster SCSI カードなどの Adaptec 社製 AIC-6260 および AIC-6360 を使用したボード.

- AdvanSys 社製 SCSI コントローラ (全てのモデル).

- BT-948, BT-958, BT-9580 などの BusLogic 社製 MultiMaster “W” シリーズホストアダプタ.

- BT-946C, BT-956C, BT-956CD, BT-445C, BT-747C, BT-757C, BT-757CD, BT-545C, BT-540CF などの BusLogic 社製 MultiMaster “C” シリーズホストアダプタ.

- BT-445S, BT-747S, BT-747D, BT-757S, BT-757D, BT-545S, BT-542D, BT-742A, BT-542B などの BusLogic 社製 MultiMaster “S” シリーズホストアダプタ.

- BT-742A, BT-542B などの BusLogic 社製 MultiMaster “A” シリーズホストアダプタ.

- BusLogic 社製 MultiMaster の完全なクローンである AMI 社製 FastDisk コントローラもサポートされます.

  > Note: BusLogic/Mylex 社製 “Flashpoint” アダプタはまだサポートされていません.

- DPT 社製 SmartCACHE Plus, SmartCACHE III, SmartRAID III, SmartCACHE IV, および SmartRAID IV SCSI/RAID コントローラ. DPT 社製 SmartRAID/CACHE V はまだサポートされていません. DPT 社製 PM3754U2-16M SCSI RAID コントローラは サポートされています.

- Compaq 社製 Intelligent Disk Array コントローラ: IDA, IDA-2, IAES, SMART, SMART-2/E, Smart-2/P, SMART-2SL, Integrated Array, および Smart Arrays 3200, 3100ES, 221, 4200, 4200, 4250ES.

- ASUS 社製 SC-200, Data Technology 社製 DTC3130 (およびその変種すべて), Diamond 社製 FirePort (すべて), NCR 社製のカード (すべて), SymBios 社製のカード (すべて), Tekram 社製 DC390W, 390U, および 390F, それに Tyan 社製 S1365 などの SymBios 社(旧 NCR 社)製 53C810, 53C810a, 53C815, 53C820, 53C825a, 53C860, 53C875, 53C875j, 53C885, および 53C896 PCI SCSI コントローラ

- QLogic 社製 1020, 1040, 1040B, および 2100 など SCSI および Fibre Channel アダプタ

- DTC 社製 3290 EISA SCSI コントローラの 1542 エミュレーションモード

サポートされている SCSI コントローラのすべてで, ハードディスク, 光ディスク, テープドライブ (DAT および 8mm Exabyte を含む), メディアチェンジャ, プロセッサターゲットデバイスおよび CD-ROM といった SCSI-I, SCSI-II 周辺機器が利用可能です. CDROM コマンドをサポートする WORM デバイスは, CDROM ドライバを使用することで読み込みアクセスのみサポートされます. WORM/CD-R/CD-RW への書き込みは Ports ツリーにある cdrecord によってサポートされます.

現在, 次にあげるタイプの CD-ROM ドライブがサポートされてます.

- `cd` - SCSI インタフェース (ProAudio Spectrum および SoundBlaster SCSI を含む)

- `matcd` - 松下 / Panasonic (Creative SoundBlaster) 独自のインタフェース (562/563 モデル)

- `scd` - ソニー 独自のインタフェース (全モデル)

- `acd` - ATAPI IDE インタフェース

以下のドライバは従来の SCSI サブシステムでサポートされていたものですが, 新しい CAM SCSI サブシステムではまだサポートされていません:

- NCR5380/NCR53400 (“ProAudio Spectrum”) SCSI コントローラ

- UltraStor 社製 14F, 24F, および 34F SCSI コントローラ

- Seagate 社製 ST01/02 SCSI コントローラ

- Future Domain 社製 8XX/950 シリーズ SCSI コントローラ

- WD7000 SCSI コントローラ

  > Note: UltraStor 社製ドライバについては, 現在新しい CAM フレームワークへ移植作業中のものがあります. しかし, いつ完成するか, そもそも完成するのかどうか, わかりません.

次のドライバは保守されていないので動作しないかもしれません:

- フロッピーテープ インタフェース (Colorado/Mountain/Insight)

- `mcd` - Mitsumi 独自の CD-ROM インタフェース (全モデル)

### 2.3.2. ネットワークカード

- Adaptec 社製 AIC-6195 Fast Ethernet コントローラチップを使用した Fast Ethernet アダプタ:

  - Adaptec 社製 Duralink PCI Fast Ethernet アダプタ

  - ANA-62011 64-bit シングルポート 10/100baseTX アダプタ

  - ANA-62022 64-bit デュアルポート 10/100baseTX アダプタ

  - ANA-62044 64-bit 4 ポート 10/100baseTX アダプタ

  - ANA-69011 32-bit シングルポート 10/100baseTX アダプタ

  - ANA-62020 64-bit シングルポート 100baseFX アダプタ

- Allied-Telesys 社製 AT1700 および RE2000 カード

- Alteon Networks 社製 PCI ギガビット Ethernet NIC など Tigon 1 および Tigon 2 チップセットを使用した ギガビットイーサネットカード. 他に Alteon 社製 AceNIC (Tigon 1 および 2), 3Com 社製 3c985-SX (Tigon 1 および 2), Netgear 社製 GA620 (Tigon 2), Silicon Graphics 社製 ギガビット Ethernet, DEC/Compaq 社製 EtherWORKS 1000, NEC 社製 ギガビット Ethernet

- AMD 社製 PCnet/PCI (79c970 および 53c974 または 79c974)

- RealTek 社製 8129/8139 を使用した Fast Ethernet NIC

  - Allied-Telesys 社製 AT2550

  - Allied-Telesys 社製 AT2500TX

  - Genius 社製 GF100TXR (RTL8139)

  - NDC Communications 社製 NE100TX-E

  - OvisLink 社製 LEF-8129TX

  - OvisLink 社製 LEF-8139TX

  - Netronix Inc. 社製 EA-1210 NetEther 10/100

  - KTX-9130TX 10/100 Fast Ethernet

  - Accton 社製 “Cheetah” EN1207D (MPX 5030/5038; RealTek 8139 クローン?)

  - SMC 社製 EZ Card 10/100 PCI 1211-TX

- LinkSys 社製 EtherFast LNE100TX, NetGear 社製 FA310-TX Rev. D1, Matrox 社製 FastNIC 10/100, Kingston 社製 KNE110TX など Lite-On 社製 98713, 98713A, 98715 および 98725 を使用した Fast Ethernet NIC.

- NDC Communications 社製 SFA100A (98713A), CNet 社製 Pro120A (98713 または 98713A), CNet 社製 Pro120B (98715), SVEC 社製 PN102TX (98713) など Macronix 社製 98713, 98713A, 98715, 98715A および 98725 を使用した Fast Ethernet NIC.

- LinkSys 社製 EtherFast LNE100TX version 2 など Macronix/Lite-On 社製 PNIC II LC82C115 を使用した Fast Ethernet NIC

- Trendware 社製 TE100-PCIE など Winbond 社製 W89C840F を使用した Fast Ethernet NIC

- Hawking Technologies 社製 PN102TX および D-Link 社製 DFE-530TX など, VIA Technologies 社製 VT3043 “Rhine I” および VT86C100A “Rhine II” を使用した Fast Ethernet NIC

- Silicon Integrated Systems 社製 SiS 900 および SiS 7016 を使用した PCI fast Ethernet NIC

- D-Link 社製 DFE-550TX など Sundance Technologies 社製 ST201 を使用した PCI fast ethernet NIC

- SysKonnect 社製 SK-984x を使用した PCI ギガビット Ethernet カード. SK-9841 1000baseLX (シングルモード Fiber, シングルポート), SK-9842 1000baseSX (マルチモード Fiber, シングルポート), SK-9843 1000baseLX (シングルモード Fiber, デュアルポート) および SK-9844 1000baseSX (マルチモード Fiber, デュアルポート) など.

- Compaq 社製 Netelligent 10, 10/100, 10/100 Proliant, 10/100 デュアルポート, 10/100 TX Embedded UTP, 10 T PCI UTP/Coax および 10/100 TX UTP, Compaq 社製 NetFlex 3P, 3P Integrated および 3P w/BNC, Olicom 社製 OC-2135/2138, OC-2325, OC-2326 10/100 TX UTP および Racore 社製 8165 10/100baseTX and 8148 10baseT/100baseTX/100baseFX multi-personality カード など Texas Instruments 社製 ThunderLAN を使用した PCI NIC

- ADMtek 社製 AL981 および AN985 ベースの PCI Fast Ethernet NIC

- Alfa Inc. 社製 GFC2204 および CNet 社製 Pro110B など ASIX Electronics 社製 AX88140A を使用した PCI NIC

- DEC 社製 EtherWORKS III NIC (DE203, DE204 および DE205)

- DEC 社製 EtherWORKS II NICs (DE200, DE201, DE202 および DE422)

- DEC 社製 DC21040, DC21041 または DC21140 ベースの NIC (SMC 社製 Etherpower 8432T, DE245 およびその他のもの)

- DEC 社製 FDDI (DEFPA/DEFEA) NIC

- Efficient 社製 ENI-155p ATM PCI

- FORE 社製 PCA-200E ATM PCI

- 富士通 社製 MB86960A/MB86965A

- HP 社製 PC Lan+ カード (モデルナンバー: 27247B および 27252A)

- Intel 社製 EtherExpress ISA (ドライバが不安定なため推奨しません)

- Intel 社製 EtherExpress Pro/10

- Intel 社製 EtherExpress Pro/100B PCI Fast Ethernet

- Isolan 社製 AT 4141-0 (16 ビット)

- Isolink 社製 4110 (8 ビット)

- Novell 社製 NE1000, NE2000 および NE2100 Ethernet インタフェース

- RealTek 社製 8029, NetVin 社製 5000, Winbond 社製 W89C940, Surecom 社製 NE-34, VIA 社製 VT86C926 など NE2000 をエミュレートする PCI ネットワークカード.

- 3Com 社製 3C501, 3C503 Etherlink II, 3C505 Etherlink/+, 3C507 Etherlink 16/TP, 3C509, 3C579, 3C589 (PCMCIA), 3C590/592/595/900/905/905B/905C PCI および EISA (Fast) Etherlink III / (Fast) Etherlink XL, 3C980/3C980B Fast Etherlink XL サーバ アダプタ, 3CSOHO100-TX OfficeConnect アダプタ

- 東芝 Ethernet カード

- IBM 社および National Semiconductor 社製 PCMCIA Ethernet カードもサポートされています.

### 2.3.3. USB 接続の周辺機器

様々な USB 接続の周辺機器がサポートされています. このリストに機種名は書かれていません. しかしいくつかの例外はありますが, ここに書かれている種類のほとんどすべてのデバイスが サポートされます.

- USB キーボード

- USB マウス

- USB プリンタ および USB - パラレル プリンタ変換ケーブル

- USB ハブ

マザーボードのチップセット:

- ALi 社製 Aladdin-V

- Intel 社製 82371SB (PIIX3) および 82371AB および EB (PIIX4) チップセット

- NEC 社製 uPD 9210 ホストコントローラ

- VIA 社製 83C572 USB ホストコントローラ

  およびその他の UHCI または OHCI に準拠した マザーボードのチップセット (現在使用できないものは知られていません).

PCI プラグイン USB ホストコントローラ

- ADS Electronics 社製 PCI プラグインカード (2 ポート)

- Entrega PCI プラグインカード (4 ポート)

動作が報告されている個々の USB デバイス:

- Agiler マウス 29UO

- Andromeda ハブ

- Apple iMac マウスおよびキーボード

- ATen パラレルプリンタアダプタ

- Belkin F4U002 パラレルプリンタアダプタ および Belkin 社製 マウス

- マウスポートが付属した BTC 社製 BTC7935 キーボード

- Cherry G81-3504

- Chic マウス

- Cypress マウス

- Entrega USB - パラレル プリンタアダプタ

- Genius 社製 Niche マウス

- Iomega 社製 USB Zip 100 MB

- Kensington 社製 Mouse-in-a-Box

- Logitech 社製 M2452 キーボード

- Logitech 社製 ホイールマウス (3 ボタン)

- Logitech 社製 PS/2 / USB マウス (3 ボタン)

- MacAlly 社製マウス (3 ボタン)

- MacAlly 社製 self-powered ハブ (4 ポート)

- Microsoft 社製 Intellimouse (3 ボタン)

- Microsoft 社製キーボード

- NEC 社製ハブ

- Trust Ami マウス (3 ボタン)

### 2.3.4. ISDN (European DSS1 [Q.921/Q.931] プロトコル)

- Asuscom 社製 I-IN100-ST-DV (実験的なドライバ, おそらく動作します)

- Asuscom 社製 ISDNlink 128K

- AVM A1

- AVM Fritz!Card classic

- AVM Fritz!Card PCI

- AVM Fritz!Card PCMCIA (現在は FreeBSD 3.x のみ)

- AVM Fritz!Card PnP (現在は FreeBSD 3.x のみ)

- Creatix ISDN-S0/8

- Creatix ISDN-S0/16

- Creatix ISDN-S0 PnP

- Dr.Neuhaus Niccy 1008

- Dr.Neuhaus Niccy 1016

- Dr.Neuhaus Niccy GO@ (ISA PnP)

- Dynalink 社製 IS64PH (保守されていません)

- ELSA 社製 1000pro ISA

- ELSA 社製 1000pro PCI

- ELSA 社製 PCC-16

- ITK ix1 micro (現在は FreeBSD 3.x のみ)

- ITK ix1 micro V.3 (現在は FreeBSD 3.x のみ)

- Sagem Cybermod (ISA PnP, おそらく動作します)

- Sedlbauer Win Speed

- Siemens I-Surf 2.0

- Stollman Tina-pp (開発途中)

- Teles 社製 S0/8

- Teles 社製 S0/16

- Teles 社製 S0/16.3 (16.3c などの “c” バージョンはサポートされません!)

- Teles 社製 S0 PnP (実験的なドライバ, おそらく動作します)

- 3Com/USRobotics 社製 Sportster ISDN TA 内蔵 (non-PnP バージョン)

### 2.3.5. サウンドデバイス

次のサウンドカードおよびコーデックがサポートされます ('実験的なドライバ' と書かれているものをサポートしているのは, FreeBSD-CURRENT のみであり, 不安定かもしれません):

- 16550 UART (Midi) (実験的なドライバ, ヒントファイル中にトリックが必要です)

- Advance 社製 Asound 100, 110 および Logic ALS120

- Aureal 社製 Vortex1/Vortex2 および Vortex Advantage ベースのサウンドコーデックは サードパーティのドライバ でサポートされます

- Creative Labs 社製 SB16, SB32, SB AWE64 (Gold を含む), Vibra16, SB PCI (実験的なドライバ), SB Live! (実験的なドライバ) およびほとんどの SoundBlaster 互換のカード

- Creative Labs 社製 SB MIDI ポート (実験的なドライバ), SB OPL3 シンセサイザ (実験的なドライバ)

- Crystal Semiconductor 社製 CS461x/462x オーディオアクセラレータ, CS461x MIDI ポートのサポートは実験的なものです

- Crystal Semiconductor 社製 CS428x オーディオコントローラ

- CS4237, CS4236, CS4232, CS4231 (ISA)

- ENSONIQ AudioPCI ES1370/1371

- ESS 社製 ES1868, ES1869, ES1879, ES1888

- Gravis 社製 UltraSound PnP, MAX

- NeoMagic 社製 256AV/ZX (PCI)

- OPTi931 (ISA)

- OSS-互換シーケンサ (Midi) (実験的なドライバ)

- Trident 社製 4DWave DX/NX (PCI)

- ヤマハ OPL-SAx (ISA)

### 2.3.6. その他のデバイス

- AST 4 ポート シリアルカード (シェアード IRQ 使用)

- ARNET 8 ポート シリアルカード (シェアード IRQ 使用)

- ARNET (現在は Digiboard) 570/i high-speed 同期シリアルカード

- Boca BB1004 4 ポート シリアルカード (モデムはサポートしません)

- BOCA IOAT66 6 ポート シリアルカード (モデムをサポート)

- Boca BB1008 8 ポート シリアルカード (モデムはサポートしません)

- Boca BB2016 16 ポート シリアルカード (モデムをサポート)

- Cyclades Cyclom-y シリアルボード

- Moxa SmartIO CI-104J 4 ポート シリアルカード

- STB 4 ポート カード (シェアード IRQ 使用)

- SDL Communications RISCom/8 シリアルボード

- SDL Communications RISCom/N2 and N2pci high-speed 同期シリアルボード

- Specialix SI/XIO/SX マルチポート シリアルカード, SIHOST2.x より古いものおよび “拡張” (transputer ベース, aka JET) ホストカード どちらもサポートされます: ISA, EISA および PCI

- Stallion マルチポート シリアルボード: EasyIO, EasyConnection 8/32 & 8/64, オンボード 4/16 および Brumby

- Adlib, SoundBlaster, SoundBlaster Pro, ProAudioSpectrum, Gravis UltraSound および Roland MPU-401 サウンドカード

- Connectix QuickCam

- Matrox Meteor Video フレームグラバー

- Creative Labs Video Spigot フレームグラバー

- Cortex1 フレームグラバー

- Brooktree BT848 チップ および BT878 チップベースのフレームグラバー

- HP4020, HP6020, Philips CDD2000/CDD2660 および Plasmon CD-R ドライブ

- バスマウス

- PS/2 マウス

- 標準的な PC ジョイスティック

- X-10 power コントローラ

- GPIB および Transputer ドライブ

- Genius および Mustek ハンドスキャナ

- Floppy テープドライブ (いくつかのより古いモデルのみ, ドライバは不完全です)

- Lucent Technologies 社製 WaveLAN/IEEE 802.11 PCMCIA および ISA standard speed (2Mbps) および turbo speed (6Mbps) ワイヤレス ネットワークアダプタ および同様に動作するもの (NCR WaveLAN/IEEE 802.11, Cabletron RoamAbout 802.11 DS)

  > Note: これらのアダプタの ISA バージョンは, 実際には PCMCIA カードと ISA - PCMCIA ブリッジカードを組み合わせたものなので, どちらのデバイスも同じドライバで動作します.

## 2.4. トラブルシューティング

この節では基本的なインストールの際の, 報告された標準的な問題に対するトラブルシューティングのための情報が 書いてあります. また, FreeBSD と MS-DOS のデュアルブートを行う際の いくつかの質問と回答も書いてあります.

### 2.4.1. なにかおかしいときには何をすればよいでしょうか

PC アーキテクチャの様々な制限により, 100% 確実に原因を突き止めることは不可能ですが, いくつか失敗した時に できることがあります.

サポートされているハードウェア を調べて, あなたのハードウェアがサポートされているかどうか 確認してください.

もしあなたのハードウェアがサポートされているにもかかわらず, 動作しなかったり他の問題点がある時は, コンピュータをリセットして, ビジュアルカーネルコンフィギュレーション オプションを与えているときにはそれを選択してください. ここで設定することで, あなたのハードウェアを通過するようにしたり, システムに対して情報を与えたりすることができます. 起動ディスクのカーネルは, ほとんどのハードウェアデバイスの IRQ, IO アドレス, DMA チャンネルは出荷されたままの状態であるとして 設定されています. もしハードウェアの設定が変更されていると, コンフィギュレーションエディタを使用してこれらの値を設定しなければ なりません.

存在しないデバイスを認識してしまうことにより, その後実際に存在するデバイスの認識を失敗してしまうことがあります. このような場合は, 衝突しているドライバを無効にします.

> Warningスクリーン (`sc0`) などのインストールに必要なドライバを無効にしないでください. もし, コンフィギュレーションエディタを終了したあと, インストーラが動かなくなったり, 不思議な失敗をする場合は, 削除したり変更したりしてはいけないものを, 削除あるいは変更してしまった可能性があります. 再起動してやり直してください.

コンフィギュレーションモードでは, 次のことができます:

- カーネルにインストールされているドライバの一覧表示.

- システムに存在しないドライバの変更.

- デバイスドライバが使用する IRQ, DRQ および IO ポートアドレスの変更.

カーネルをハードウェアの設定にあわせた後, `Q` と叩くことで, 新しい設定で起動します. インストールが終了すると, コンフィギュレーションモードで変更した 設定は保存されますので, 毎回起動するたびに設定する必要はありません. また, カスタムカーネル を作りたくなるかもしれません.

### 2.4.2. X サーバーの設定

ここはダミー

### 2.4.3. MS-DOS ユーザの質問と回答

多くのユーザは, FreeBSD を MS-DOS が入っている PC にインストールしようとするでしょう. このようなシステムへの FreeBSD のインストールに関して, よく聞かれる質問が以下にあります.

2.4.3.1. 助けて! FreeBSD をインストールする容量がありません! まずはじめに, すべてを消去しなければいけないのですか?
2.4.3.2. FreeBSD から 圧縮された MS-DOS のファイルシステムを利用することができますか?
2.4.3.3. 拡張 MS-DOS パーティションをマウントすることができますか?

2.4.3.1. 助けて! FreeBSD をインストールする容量がありません! まずはじめに, すべてを消去しなければいけないのですか?

あなたのマシンではすでに MS-DOS が動いていて, FreeBSD をインストールする容量がないとしても, すべての望みがなくなったわけではありません. FreeBSD CDROM や 様々な FreeBSD の FTP サイトの `tools` ディレクトリにある FIPS ユーティリティを使うことができます.

FIPS を使用することで, すでにある MS-DOS パーティションを, もともとの内容を保存したままのパーティションと, 何も入っていない FreeBSD をインストールすることのできる パーティションの二つに分割することができます. まず, Windows のデフラグ (DEFRAG) ユーティリティ (エクスプローラ上で ハードドライブを右クリックして, デフラグ (DEFRAG) を選択) か, ノートンディスクツールを使用して, 指示に従ってデフラグメントを行ってください. その後, 再起動して, 新しい空いているスライスに, FreeBSD をインストールすることができます. あなたが行うインストール方法では, どの程度の空き容量が必要なのかということについては, Distributions メニューを見てください.

また, PowerQuest 社の Partition Magic という, とても便利な製品があります. このアプリケーションは, FIPS よりも優れた機能をもっており, あなたが (わたしのように) 良くオペレーティングシステムを追加したり, 削除したりしようとしているのであれば, 強く推奨します. しかし, このアプリケーションは, お金がかかりますし, あなたが FreeBSD を一度インストールして, そのまま使用しようと考えているのであれば, FIPS が最も良いでしょう.

2.4.3.2. FreeBSD から 圧縮された MS-DOS のファイルシステムを利用することができますか?

できません. Stacker(tm) や DoubleSpace(tm) などのユーティリティを使用している場合は, FreeBSD からは圧縮していない部分しか扱うことができません. 残りのファイルシステムは, 一つの巨大なファイル (Stack された, または Double Space されたファイル) として見えるでしょう. このファイルを削除しないでください. さもないと強く後悔するでしょう!

別の圧縮されていない標準 MS-DOS パーティションを作成して, MS-DOS と FreeBSD との間のやりとりに使うのがよいでしょう.

2.4.3.3. 拡張 MS-DOS パーティションをマウントすることができますか?

できます. DOS 拡張パーティションは FreeBSD では, `D:` ドライブは `/dev/da0s5`, `E:` ドライブは `/dev/da0s6` などといったように, その他のスライスの終わりに配置されます. これはもちろん, 拡張パーティションが SCSI のドライブ 0 にある場合の例です. IDE ドライブでは, `da` の代わりに, 4.0-RELEASE およびそれ以降の場合は `ad` を, それ以前のバージョンでは `wd` を使用してください. それ以外の点では, 拡張パーティションをマウントする際も, 他の DOS ドライブをマウントするときと同様に, 以下のようにします:

    # mount -t msdos /dev/ad0s5 /dos_d

# Chapter 3. Unix の基礎知識

改訂Chris Shumway.

訳: 中井 幸博 `<nakai@mlab.t.u-tokyo.ac.jp>`, 1996 年 10 月 12 日.

## 3.1. この章では

改訂: Chris Shumway `<cshumway@osd.bsdi.com>`, 2000 年 3 月 10 日.

この章では FreeBSD オペレーティングシステムの基本的なコマンドと機能について記述しています。 ここに書かれてあることのほとんどは、 どんな Unix オペレーティングシステムにもあてはまります。 この章に書いてあることに馴染みがあるなら、 この章は気軽に流し読みしてください。 あなたが FreeBSD の初心者なら、 何か質問する前にこの章を読んでおいた方がきっといいはずです。

この章を読んで分かることは、次のようなことです。

- Unix のファイルの許可属性の仕組み

- プロセス、デーモンとシグナルとはなにか

- シェルとはなにか。 また、デフォルトのログイン環境を変える方法

- テキストエディタの基本的な使い方

- さらに詳しい情報を得るためのマニュアルページの読み方

- FreeBSD の “仮想コンソール” の使い方

## 3.2. 許可属性

FreeBSD は BSD Unix の直系の子孫であり、 いくつかの鍵となる Unix 思想にもとづいています。 まず最も際だった特徴として最初に言えるのは、FreeBSD がマルチユーザのオペレーティングシステムだということです。 FreeBSD は同時に働いている複数のユーザすべてを、 完全に分離したタスク上で処理する能力を持っています。 また FreeBSD は、ハードウェアデバイス、周辺装置、メモリ、 CPU 時間等への要求を、各ユーザが平等に利用できるように適切に共有し、 管理する役割を担っています。

システムがマルチユーザをサポートしているため、 システムが管理する資源はすべて、 誰がその資源を読み・書き・実行できるかを支配する、 一組の許可属性を持っています。 これらの許可属性は 3 つの部分からなる 2 桁の 8 進数の形で格納されています。 それはそのファイルの所有者(owner)に対するもの、 そのファイルが所属するグループ(group)に対するもの、 その他(others)に対するものの 3 つです。 これを数字を使って表現すると、次のようになります。

値 | 許可属性 | ディレクトリの表示
--- | --- | ---
0 | 読み込み不可、書き込み不可、実行不可 | `---`
1 | 読み込み不可、書き込み不可、実行可能 | `--x`
2 | 読み込み不可、書き込み可能、実行不可 | `-w-`
3 | 読み込み不可、書き込み可能、実行可能 | `-wx`
4 | 読み込み可能、書き込み不可、実行不可 | `r--`
5 | 読み込み可能、書き込み不可、実行可能 | `r-x`
6 | 読み込み可能、書き込み可能、実行不可 | `rw-`
7 | 読み込み可能、書き込み可能、実行可能 | `rwx`

ls(1) に対してコマンドライン引数 `-l` を使うと、 詳細なディレクトリリストを見ることができ、 ファイルの所有者、グループ、その他への許可属性を示す欄があるのがわかります。 次に示すのは、`ls -l` の最初の部分だけ抜き出したものです。

    -rw-r--r--

最初の(一番左の)文字は、それが 普通のファイルなのか、ディレクトリなのか、 キャラクタ型のデバイス特殊ファイルなのか、 ソケットなのか、 その他の特殊な疑似ファイルデバイスなのかといった種類を示す特別な文字です。 この場合、`-` という文字は、 普通のファイルであることを示します。 この例でその次に来る `rw-` と書かれた 3 文字は、 そのファイルの所有者に許可を与えるものです。 その次の `r--` の 3 文字は、 そのファイルが所属しているグループに許可を与えます。 最後の `r--` の 3 文字は、 システムに存在するその他のユーザに許可を与えます。 “-” は許可が与えられていないことを示します。 このファイルの例では、ファイルの所有者はこのファイルを読み書きでき、 ファイルの所属しているグループに属するユーザはファイルを読むことだけでき、 そのどちらでもないユーザは、 このファイルを読むだけできるように許可属性が与えられています。 上の表によれば、このファイルに与えられた許可属性は `644` となります。 ここで各数字は、このファイルの許可属性の 3 つの部分を表しています。

ファイルについてはここまでの説明で十分です。 しかし、 デバイスの場合の許可属性はどのようにコントロールされているのでしょうか? FreeBSD は、大部分のハードウェアをファイルとして取り扱います。 そのため、プログラムからは普通のファイルとまったく同じようにオープンし、 データの読み書きができるようになっています。 これらのデバイス特殊ファイルは `/dev` ディレクトリに収められています。

ディレクトリもまた、ファイルと同様に扱われます。 それは読み込み/書き込み/実行の許可属性を持ちます。 ディレクトリの実行ビットはファイルのそれとは少し違った意味を持ちます。 ディレクトリが実行可能になっているとき、 そのディレクトリに移動することができます。 つまり、そのディレクトリに “cd” することが可能です。 また、実行可能属性がついているディレクトリでは、 名前が分かっているファイルにアクセスすることもできます (もちろんそのファイル自体の許可属性によります)。

特に、ディレクトリの中の一覧を表示するには、 そのディレクトリに読み込み属性が設定されていなければなりません。 一方、名前が分かっているファイルを削除するには、 そのファイルが含まれているディレクトリに 書き込み属性と実行属性 の両方が必要です。

この他にも許可属性ビットはありますが、いずれも setuid バイナリや sticky ディレクトリなどといった特殊な状況で使われます。 ファイルの許可属性そのものについて、 また、それらの設定のしかたに関する詳しい情報は、 chmod(1) マニュアルページを参照してください。

## 3.3. ディレクトリ構造

FreeBSD のディレクトリ構造は、 システム全体を理解するに当たって重要です。 把握しておくべき最も重要なものは、“/” ディレクトリです。 このディレクトリは起動時に一番最初にマウントされ、 オペレーティングシステムをマルチユーザで動作させるために 必要な基本システムが含まれています。 また、ルートディレクトリには、 他のファイルシステムをマウントするためのマウントポイントも含まれます。

マウントポイントとはルートファイルシステムに存在する、 追加のファイルシステムと接続するためのディレクトリのことです。 標準的なマウントポイントには `/usr`, `/var`, `/mnt`, `/cdrom` があります。 通常これらのディレクトリについては、 `/etc/fstab` というファイル中のエントリが参照されます。 `/etc/fstab` はさまざまなファイルシステムとマウントポイントの表であり、 システムが参照します。 `/etc/fstab` に書かれたファイルシステムは `noauto` オプションが指定されていなければ、 起動時に rc(8) スクリプトによって自動的にマウントされます。 `/etc/fstab` ファイルの書式やオプションに関しての詳細は fstab(5) をご覧ください。

ファイルシステム構造を網羅した説明は hier(7) に書かれています。 ここでは、もっともよく使われるディレクトリについて簡単に 見るだけで十分でしょう。

ディレクトリ | 説明
--- | ---
`/` | ファイルシステムのルートディレクトリ
`/bin/` | シングルユーザ環境とマルチユーザ環境の両方で重要な ユーザユーティリティ
`/boot/` | オペレーティングシステムの起動時に使われるプログラムと設定ファイル
`/boot/defaults/` | デフォルトの起動設定ファイル; loader.conf(5) 参照
`/dev/` | デバイスノード; intro(4) 参照
`/etc/` | システム設定ファイルとスクリプト
`/etc/defaults/` | デフォルトのシステム設定ファイル; rc(8) 参照
`/etc/mail/` | sendmail(8) のようなメール転送エージェントの設定ファイル
`/etc/namedb/` | `named` 設定ファイル; named(8) 参照
`/etc/periodic/` | cron(8) 経由で毎日・毎週・毎月実行されるスクリプト; periodic(8) 参照
`/etc/ppp/` | `ppp` 設定ファイル; ppp(8) 参照
`/mnt/` | システム管理者が一時的なマウントポイントとしてよく使う 空のディレクトリ
`/proc/` | プロセスファイルシステム; procfs(5) と mount_procfs(8) 参照
`/root/` | `root` アカウントのホームディレクトリ
`/sbin/` | シングルユーザ環境とマルチユーザ環境の両方で重要な システムプログラムと管理ユーティリティ
`/stand/` | スタンドアロン環境で使われるプログラム
`/tmp/` | 一時的なファイル、mfs(8) メモリファイルシステムであることが多い (普通 `/tmp` の内容はシステムの再起動で失われる)
`/usr/` | 大部分のユーザユーティリティとアプリケーション
`/usr/bin/` | よく使うユーティリティとプログラミングツールとアプリケーション
`/usr/include/` | C の標準ヘッダファイル
`/usr/lib/` | ライブラリ
`/usr/libdata/` | いろいろなユーティリティのデータファイル
`/usr/libexec/` | システムデーモンとシステムユーティリティ (他のプログラムから実行される)
`/usr/local/` | ローカルのプログラムやライブラリなど。 FreeBSD ports 構成のデフォルトインストール先としても使われます。 `/usr/local` 内では、 hier(7) に書かれている `/usr` のための一般構造が使われます。 例外は man ディレクトリで、 `/usr/local/share` の下ではなく `/usr/local` の下に直接置かれ、 ports 関係文書は `share/doc/`port`` にあります。
`/usr/obj/` | `/usr/src` ツリーのビルドで作られる アーキテクチャ依存のターゲットツリー
`/usr/ports` | FreeBSD ports 集 (インストールしなくてもよい)。
`/usr/sbin/` | (ユーザが実行する)システムデーモンとシステムユーティリティ
`/usr/share/` | アーキテクチャに依存しないファイル
`/usr/src/` | BSD のソースファイルまたはローカルのソースファイル、 あるいは両方
`/usr/X11R6/` | X11R6 のプログラム、ライブラリなど(インストールしなくてもよい)
`/var/` | ログ・一時的なファイル・スプールファイルなどいろいろな用途
`/var/log/` | いろいろなシステムログファイル
`/var/mail/` | ユーザのメールボックスファイル
`/var/spool/` | プリンタとメールシステムのスプールディレクトリなどなど
`/var/tmp/` | システムが再起動しても消えない一時的なファイル
`/var/yp` | NIS のマップ

## 3.4. ファイルシステムのマウントとアンマウント

ファイルシステムは `/` をルート (根) とする木構造として考えると視覚的に理解しやすいでしょう。 ルートディレクトリにある `/dev` や `/usr`、 その他のディレクトリは枝に相当し、 それらには、`/usr/local` などのように、さらに枝分かれすることができます。

さまざまな理由がありますが、 ディレクトリをいくつかの異なるファイルシステム上に構築するのが良いでしょう。 たとえば `/var` には、 `log/` や `spool/` など、さまざまな種類の一時ファイルを置くディレクトリがあるため、 あふれてしまう可能性があります。 ルートファイルシステムをあふれさせるのは得策ではありませんので、 普通は `/var` を `/` から分離します。

また、次のような場合も、ディレクトリツリーを 別のファイルシステムに置く理由として良くあげられます。 それは、たとえば物理的に別のディスクにディレクトリツリーを置く場合、 ネットワークファイルシステム (Network File System) や CDROM ドライブのような別の仮想ディスクに置くという場合です。

### 3.4.1. `fstab` ファイル

`/etc/fstab` に書かれているファイルシステムは (`noauto` オプションがなければ) 起動プロセスの途中で 自動的にマウントされます。

`/etc/fstab` ファイルは、 次のような書式で書かれた行のリストになっています。

    device       /mount-point fstype     options      dumpfreq     passno

`device`

  デバイスの名前 (存在していなければなりません)。 Section 15.2 に説明があります。

`mount-point`

  ファイルシステムがマウントするディレクトリの名前 (存在していなければなりません)。

`fstype`

  mount(8) に渡されるファイルシステムタイプ。 FreeBSD ファイルシステムのデフォルトは `ufs` です。

`options`

  読み書きするファイルシステムには `rw`、読み込み専用のファイルシステムには `ro` を、必要な他のオプションの前に指定します。 よく使われるオプションは `noauto` で、 起動時にはマウントされないファイルシステムに使います。 その他のオプションは mount(8) マニュアルページに載っています。

`dumpfreq`

  これは dump(8) が使うもので、 どのファイルシステムにダンプが必要なのかを決めます。 この項目がなければ、0 であるものとみなされます。

`passno`

  これはファイルシステムをチェックする順番を決めます。 ファイルシステムチェックを飛ばしたいファイルシステムには、 `passno` を 0 に設定してください。 ルートファイルシステム (どれよりも先にチェックしなければなりません) は `passno` を 1 に設定してください。 他のファイルシステムの `passno` は 1 以上に設定してください。 同じ `passno` のファイルシステムがあった場合、 fsck(8) は可能であれば並行してファイルシステムのチェック を行なおうとします。

### 3.4.2. `mount` コマンド

mount(8) コマンドは、 ファイルシステムをマウントするために使われるものです。

基本的には、次のように使います。

    # mount device mountpoint

mount(8) マニュアルページにはたくさんのオプションが書かれていますが、 いちばんよく使われるのは次のものです。

マウントオプション

`-a`

  `/etc/fstab` にある全てのファイルシステムをマウントします。 例外は “noauto” の印がついているものと、 `-t` フラグで除外されたものと、 すでにマウントされているファイルシステムです。

`-d`

  実際にシステムコールする以外の全てのことをします。 このオプションは `-v` フラグと組み合わせて使い、 mount(8) が実際なにをしようとしているのか調べるのに便利です。

`-f`

  クリーンでないファイルシステムを強制的にマウントします (危険です)。もしくは、ファイルシステムのマウント状態を 読み書き可能から読み込みのみに変更するとき、 書き込みアクセスを強制的に取り消します。

`-r`

  ファイルシステムを読み込み専用でマウントします。 これは `rdonly` 引数を `-o` オプションに使うのと同じです。

`-t` `fstype`

  ファイルシステムを指定のファイルシステムタイプでマウントします。 または、`-a` を使った場合、 指定したタイプのファイルシステムのみマウントします。

  デフォルトのファイルシステムタイプは “ufs” です。

`-u`

  ファイルシステムのマウントオプションを更新します。

`-v`

  詳細な出力にします。

`-w`

  ファイルシステムを読み書き可能にマウントします。

`-o` には、 次のようなオプションを複数カンマで区切って指定します。 以下に挙げるのはその一部です。

nodev

  ファイルシステム上のスペシャルデバイスを解釈しません。 セキュリティのために有用なオプションです。

noexec

  そのファイルシステム上のバイナリの実行を禁止します。 セキュリティのために有用なオプションです。

nosuid

  そのファイルシステム上の setuid や setgid フラグを解釈しません。 これもセキュリティのために有用なオプションです。

### 3.4.3. `umount` コマンド

umount(8) コマンドは、パラメータとしてマウントポイントの一つ、 デバイス名、もしくは `-a` や `-A` といったオプションを取ります。

いずれの形式でも `-f` で強制的なアンマウントを行ない、 `-v` で詳細な出力を出します。 ただしほとんどの場合、`-f` は使わないほうがよいでしょう。 強制的にファイルシステムをアンマウントすると、 計算機がクラッシュしたりファイルシステム上部のデータが 破壊されたりする恐れがあるためです。

オプション `-a` と `-A` はマウントされているファイルシステムすべてをアンマウントするのに使います。 `-t` にファイルシステムタイプを指定すると、 指定されたものだけがアンマウントされます。 また、`-A` を使うとルートファイルシステムはアンマウントしません。

## 3.5. プロセス

FreeBSD はマルチタスクのオペレーティングシステムです。 つまり、1つ以上のプログラムがあたかも同時に動いているかのように見える、 ということです。動作中のプログラムはそれぞれ プロセス と呼ばれます。 コマンドを実行すると、最低でも1つの新しいプロセスがスタートします。 システムを正常に機能させるために常に動作しているシステムプロセスもたくさんあります。

各プロセスはプロセス ID、もしくは PID と呼ばれる数字でただ一つに識別されます。 また、ファイルのように各プロセスには所有者とグループがあります。 所有者とグループの情報は、 これまでに見たファイル許可属性を用い、 そのプロセスが開けるファイルやデバイスを決定するために使われます。 多くのプロセスには親プロセスもあります。 親プロセスとは、そのプロセスをスタートさせたプロセスのことです。 例えば、シェルにコマンドを打ち込んでいるときはシェルがプロセスで、 動かすコマンドもまたどれもプロセスです。 このようにして起動するプロセスはそれぞれシェルが親プロセスになります。 これの例外は `init` という特別なプロセスです。 `init` は常に最初のプロセスなので、 PID は必ず 1 になります。 `init` は FreeBSD がスタートするときカーネルによって自動的に起動されます。

ps(1) と top(1) という2つのコマンドが システム上のプロセスを確認するために特に便利です。 ps(1) コマンドは現在動作中のプロセスのリストを見るために使い、 PID やプロセスが使っているメモリの量、 どういうコマンドラインで起動されたのか、 などを表示させることができます。 top(1) コマンドは動作中の全てのプロセスを表示し、 数秒ごとに表示を更新するので、 計算機がなにをしているのかインタラクティブに知ることができます。

デフォルトでは、ps(1) は動作中かつ所有者が自分のコマンドのみを表示します。 例えば:

    % ps
      PID  TT  STAT      TIME COMMAND
      298  p0  Ss     0:01.10 tcsh
     7078  p0  S      2:40.88 xemacs mdoc.xsl (xemacs-21.1.14)
    37393  p0  I      0:03.11 xemacs freebsd.dsl (xemacs-21.1.14)
    48630  p0  S      2:50.89 /usr/local/lib/netscape-linux/navigator-linux-4.77.bi
    48730  p0  IW     0:00.00 (dns helper) (navigator-linux-)
    72210  p0  R+     0:00.00 ps
      390  p1  Is     0:01.14 tcsh
     7059  p2  Is+    1:36.18 /usr/local/bin/mutt -y
     6688  p3  IWs    0:00.00 tcsh
    10735  p4  IWs    0:00.00 tcsh
    20256  p5  IWs    0:00.00 tcsh
      262  v0  IWs    0:00.00 -tcsh (tcsh)
      270  v0  IW+    0:00.00 /bin/sh /usr/X11R6/bin/startx -- -bpp 16
      280  v0  IW+    0:00.00 xinit /home/nik/.xinitrc -- -bpp 16
      284  v0  IW     0:00.00 /bin/sh /home/nik/.xinitrc
      285  v0  S      0:38.45 /usr/X11R6/bin/sawfish

この例で分かるとおり、 ps(1) の出力はいくつかの行に整形されています。 `PID` は先ほど見たプロセス ID です。 PID は 1 から順に 99999 まで割り当てられ、 足りなくなると最初に戻って使い回されます。 `TT` はプログラムが動いている tty を示します。 差し当たって無視してもかまわないでしょう。 `STAT` はプログラムの状態を示しますが、 これもまた無視してよいでしょう。 `TIME` はプログラムがその CPU 上で動いている時間の長さです--これはプログラムをスタートさせたとき からの経過時間であるとはかぎりません。 CPU 上で時間を使う必要があるまでかなりの時間を費すようなプログラムもあるからです。 最後に、`COMMAND` はそのプログラムを起動するのに使われたコマンドラインとなります。

ps(1) は表示する情報を変えるためのオプションをたくさんサポートしています。 いちばん便利なのは `auxww` でしょう。 `a` は自分のプロセスだけではなく、 動作中のプロセス全部についての情報を表示します。 `u` はプロセスの所有者の名前をメモリ使用量と同様に表示します。 `x` はデーモンプロセスについての情報を表示し、 `ww` で、スクリーンに入りきらないほど長くなったコマンドラインでも省略せず、 ps(1) に全コマンドラインを表示させます。

top(1) の出力も同様です。 例は以下の通りです。

    % top
    last pid: 72257;  load averages:  0.13,  0.09,  0.03    up 0+13:38:33  22:39:10
    47 processes:  1 running, 46 sleeping
    CPU states: 12.6% user,  0.0% nice,  7.8% system,  0.0% interrupt, 79.7% idle
    Mem: 36M Active, 5256K Inact, 13M Wired, 6312K Cache, 15M Buf, 408K Free
    Swap: 256M Total, 38M Used, 217M Free, 15% Inuse

      PID USERNAME PRI NICE  SIZE    RES STATE    TIME   WCPU    CPU COMMAND
    72257 nik       28   0  1960K  1044K RUN      0:00 14.86%  1.42% top
     7078 nik        2   0 15280K 10960K select   2:54  0.88%  0.88% xemacs-21.1.14
      281 nik        2   0 18636K  7112K select   5:36  0.73%  0.73% XF86_SVGA
      296 nik        2   0  3240K  1644K select   0:12  0.05%  0.05% xterm
    48630 nik        2   0 29816K  9148K select   3:18  0.00%  0.00% navigator-linu
      175 root       2   0   924K   252K select   1:41  0.00%  0.00% syslogd
     7059 nik        2   0  7260K  4644K poll     1:38  0.00%  0.00% mutt
    ...

出力は2つのセクションに分かれています。 ヘッダ(最初の5行です)は動作している最新のプロセスの PID、 システムの平均負荷(システムがどれくらい忙しいかの指標)、 システムの稼働時間(最後の再起動からの時間) と現在の時刻を示します。 ヘッダの中の他の数字は動作中のプロセスの数(この場合 47 ですね)、 使われているメモリとスワップ領域の量、 そしてシステムが異なる CPU 状態に消費した時間と関係します。

その下には ps(1) の出力と同じような情報を持った行が続きます。 前と同様 PID にユーザ名、消費 CPU 時間と実行中のコマンドを知ることができます。 top(1) を使うとデフォルトでプロセスが使っているメモリ容量も分かります。 メモリ使用量の欄は2項目に分かれており、 一方は合計使用量、 そしてもう一方は実使用量です--合計使用量はアプリケーションが必要としているメモリ量で、 実使用量はその時点で実際に使われているメモリ量です。 この例では、Netscape がだいたい 30 MB の RAM を必要としていますが、 いまのところ 9 MB しか使っていないことが分かります。

top(1) は自動的に2秒ごとに画面を更新します。 `s` オプションを使えば更新間隔を変更することができます。

## 3.6. デーモン、シグナルとプロセス終了

エディタを使っている場合、エディタを操作するのは簡単です。 ファイルを開く、などと動かせばよいのです。 このように操作できるのは、エディタにそういった機能があり、 かつエディタが端末に関連づけられているからです。 一方、ユーザから始終入力があるように設計されていないプログラムもあり、 そういったプログラムは最初から端末と切り離されます。 例えば、ウェブサーバは一日中ウェブのリクエストばかり処理するので、 通常全く入力を必要としません。 サイトからサイトへとメールを転送するプログラムも、 こういった種類のアプリケーションの一例です。

このようなプログラムは、デーモンと呼ばれます。 デーモンはギリシャ神話の登場人物で、 善でも悪でもなく、大雑把にいうと、 人間のために役立つことをしてくれる小さな妖精さんです。 今日の便利なウェブサーバやメールサーバととてもよく似ていますね。 このため、長い間 BSD のマスコットはスニーカーをはいてフォークを携えた かわいらしい姿のデーモンなのです。

通常デーモンとして動作するプログラムには末尾に “d” を持った名前をつける慣習があります。 BIND は Berkeley Internet Name Daemon ですし (実際実行されるプログラムは `named` という名前です)、 Apache ウェブサーバのプログラムは `httpd` と呼ばれますし、 ラインプリンタスプーリングデーモンは `lpd`、 などなどです。 これは単なる慣習で、しっかりがっちりとしたルールではありません。 例えば、Sendmail アプリケーションの主なメールデーモンは `sendmail` という名前で、 連想しそうな `maild` ではありません。

時々、デーモンプロセスと通信したいときがあります。 この通信はシグナルと呼ばれ、 デーモンにシグナルを送ることによってデーモン (に限らずどんな動作中のプロセスでも)と通信することができます。 送信可能なシグナルはたくさんあります--特別な意味があるものもあれば、 アプリケーションによって解釈されるものもありますし、 アプリケーションがシグナルをどう解釈するかは そのアプリケーションの文章を読めば分かるでしょう。 自分が持っているプロセスにしかシグナルを送ることはできません。 他人のプロセスに kill(1) や kill(2) を使ってシグナルを送っても、許可されないでしょう。 これの例外は `root` ユーザで、 ルートユーザは誰のプロセスでもシグナルを送ることができます。

FreeBSD もアプリケーションにシグナルを送ることがあります。 アプリケーションを下手に書くと、 予想外のメモリにアクセスしようとするので、 FreeBSD がプロセスに セグメンテーション違反 シグナル (`SIGSEGV`) を送ります。 ある程度の時間が経ったら alarm(3) システムコールを使って警告してもらうようなアプリケーションには、 警告シグナル (`SIGALRM`) が送信される、 などです。

プロセスを止めるためには2つのシグナル、 `SIGTERM` か `SIGKILL` を使います。 `SIGTERM` は穏かにプロセスを終了させる方法です。 プロセスはシグナルを受け取ることができ、 終了させたいのだなということを理解し、 開いているログファイルを全部を閉じ、 一般的に終了前にしていたことを終えることができます。 中断できない処理の途中だと、`SIGTERM` をプロセスが無視することもあるかもしれません。

プロセスは `SIGKILL` を無視することができません。 これは、“なにをしていようが構わないから今すぐ止まれ” というシグナルです。 プロセスに `SIGKILL` を送ると、 FreeBSD はそのプロセスをそこで止めます[1]。

使う可能性のあるシグナルは、他に `SIGHUP`、`SIGUSR1`、と `SIGUSR2` があります。 これらは一般的な用途のシグナルで、 このシグナルが送信されたときアプリケーションによって別のことをします。

ウェブサーバの設定ファイルを変更したとしましょう--ウェブサーバに新しい設定を再読み込みさせたいですね。 `httpd` を止めて再起動することもできますが、 そうするとウェブサーバは一瞬ながら停止してしまいますし、 ちょっとでも止まってほしくないこともあるでしょう。 ほとんどのデーモンは `SIGHUP` シグナルに対して設定ファイルを再読み込みする反応を返すよう書かれています。 従って、`httpd` を止めて再起動する代わりに、 `SIGHUP` シグナルを送りましょう。 これらのシグナルへの標準的な反応というものがないために、 デーモンごとに行動が違うので、 疑問があれば必ずそのデーモンの文書を読んでください。

kill(1) コマンドを使って送るシグナルはこの例をご覧ください。

プロセスにシグナルを送る

この例では、inetd(8) にシグナルを送る方法を示します。 inetd(8) の設定ファイルは `/etc/inetd.conf` で、 inetd(8) は `SIGHUP` が送信されるとこの設定ファイルを再読み込みします。

1. シグナルを送りたいプロセスのプロセス ID を探します。 それには ps(1) と grep(1) を使います。 grep(1) コマンドは出力を検索するために使い、 指定した文字列を探します。 このコマンドは一般ユーザで実行しますが、 inetd(8) は `root` で実行されているので、 ps(1) には `ax` オプションを与える必要があります。

       % ps -ax | grep inetd
         198  ??  IWs    0:00.00 inetd -wW

   ということで、inetd(8) の PID は 198 です。 `grep inetd` コマンドがこの出力に出てくる場合もあります。 それは、ps(1) が動作中のプロセスのリストを見つける方法によります。

2. kill(1) を使ってシグナルを送ります。 inetd(8) は `root` で起動されているために、 まず su(1) を使って `root` にならなければなりません。

       % su
       Password:
       # /bin/kill -s HUP 198

   大部分の Unix コマンドと同じく、 成功したら kill(1) は何の出力も表示しません。 自分のものではないプロセスにシグナルを送ると、 “`kill: `PID`: Operation not permitted`” と表示されます。 PID を打ち間違えると、 悪いことに間違ったプロセスにシグナルを送ってしまうか、 もしくは運がよければその時点で使われていない PID にシグナルを送ったことになり、“`kill: `PID`: No such process`” と表示されます。

   > なぜ `/bin/kill` を使うんでしょう?: 多くのシェルは `kill` コマンドを組み込みコマンドとして備えています。 つまり、`/bin/kill` を実行するのではなく、 シェルが直接シグナルを送ります。 これはとても便利なのですが、 シェルが違うと送るシグナルの名前の指定の仕方が違います。 シェルによって異なるシグナルの指定の仕方を全部覚えようとはせずに、 `/bin/kill `...`` コマンドを直接使うほうが簡単です。

他のシグナルの送り方はほとんど同じで、 コマンドラインの `TERM` や `KILL` を必要に応じて変えるだけです。

> Important: システム上のランダムプロセスを終了させるのはよくありません。 特に、プロセス ID が 1 の init(8) は特別です。 `/bin/kill -s KILL 1` を使うといとも簡単にシステムをシャットダウンさせることができます。 Return を押す前に kill(1) を実行する引数を二重にチェックする癖をつけてください。

## 3.7. シェル

FreeBSD では日々の作業のほとんどは、 「シェル」と呼ばれるコマンドラインインタフェイスを通して行われます。 シェルの主な仕事はコマンドを入力チャンネルから受け取り、 そしてそれらを実行することです。 大部分のシェルはさらに組み込みの機能を持っていて、日々の作業、 ファイル管理やファイル名の展開、コマンドライン編集、 コマンドマクロ、環境変数などに便利です。 FreeBSD には `sh` (Bourne Shell) や `tcsh` (高機能 C-shell) が含まれています。 また、 これ以外にも `zsh` や `bash` などたくさんのシェルが FreeBSD Ports Collection から利用可能です。

「あなたは、どのシェルを使いますか?」という質問は、 まったく趣味の問題です。 あなたが C のプログラマだったとすれば、 `tcsh` のような C 風のシェルの方が落ち着くかもしれません。 Linux から来た人や Unix のコマンドラインインタフェイスになじみがなければ、 `bash` を試すのも良いでしょう。 ポイントは、それぞれのシェルは、 あなたの好みの作業環境で利用できる(もしくはできない)独自の機能を持っているということ、 そして、どのシェルを使うことにするかを決めるのはあなた自身だということです。

シェルの一般的な機能の一つに、ファイル名の補完があります。 コマンドやファイル名の最初の数文字を与えて Tab キーを押すことで、 シェルにコマンドやファイル名の残りの部分を自動的に補完させることができます。 例をあげましょう。 二つのファイル `foobar`, `foo.bar` が あったとします。 ここで `foo.bar` の方を削除するには、 `rm fo[Tab].[Tab]` と入力します。

するとシェルは `rm foo[BEEP].bar` と出力するでしょう。

[BEEP] のところはコンソールのベル(訳注: 通常はビープ音が鳴ります)です。 これは複数のファイルがマッチしたため、 ファイル名の補完を完全に行なえなかったことを伝えています。 `foobar` と `foo.bar` は 両方とも `fo` ではじまるため、 補完できるのは `foo` までです。 ここで `.` を入力して Tab を押せば、 シェルはファイル名の残りの部分を補完できます。

もう一つあげられるシェルの特徴として、環境変数があります。 環境変数とは、シェルの環境変数空間におけるキーと値とのペアです。 この変数空間は、そのシェルから起動されたプログラムから参照でき、 それを利用してプログラムの設定を保存するのに利用されます。 下の表は、一般的な環境変数とその意味を示したものです。

変数名 | 意味
--- | ---
`USER` | 現在のログインユーザのユーザ名。
`PATH` | コロンで区切られた実行ファイル探索のための ディレクトリのリスト。
`DISPLAY` | 接続する X11 ディスプレイのネットワーク名(存在する場合のみ)。
`SHELL` | 現在のシェル。
`TERM` | ユーザの端末名。 端末のケーパビリティを決定するのに使われる。
`TERMCAP` | 種々の端末の機能を実現する端末のエスケープコードの データベースのエントリ。
`OSTYPE` | オペレーティングシステムの種別。 たとえば FreeBSD。
`MACHTYPE` | システムが動作している CPU のアーキテクチャ。
`EDITOR` | ユーザの選んだテキストエディタ。
`PAGER` | ユーザの選んだテキストページャ。
`MANPATH` | コロンで区切られたマニュアルページ探索のための ディレクトリのリスト。

環境変数をセットする方法は、 それぞれのシェルごとに多少異なります。 たとえば、`tcsh` や `csh` 等の C シェルでは `setenv` を使います。 `sh` や `bash` 等の Bourne シェルでは `set` と `export` を使います。 たとえば `csh` か `tcsh` で `EDITOR` 環境変数の値を `/usr/local/bin/emacs` に セットするか変更するには、次のようにします。

    % setenv EDITOR /usr/local/bin/emacs

Bourne シェルでは次のようになります。

    % export EDITOR="/usr/local/bin/emacs"

ほとんどのシェルでは、 コマンドライン中の変数名の前に `$` 文字を置くことで、 環境変数を展開させることができます。 たとえば、 `echo $TERM` は `$TERM` が セットされている内容を表示します。 それはシェルが `$TERM` を展開して `echo` に渡しているからです。

シェルはさまざまな特殊文字を、特別なデータを表すものとして扱います。 その特殊文字はメタキャラクタと呼ばれます。 もっとも一般的なものは `*` で、 これはファイル名に含まれる、あらゆる文字を表します。 これらの特殊なメタキャラクタはファイル名の展開に使われます。 たとえば、`echo *` と入力すると `ls` と入力したのとほとんど同じ結果を得られます。 これはシェルが `*` とマッチするすべてのファイルを 受け取って `echo` のコマンドラインに渡し、表示するからです。

これらの特殊文字をシェルに解釈させないようにするため、 特殊文字の前にバックスラッシュ文字 (`\`) を置くことができます。 `echo $TERM` は、 あなたの端末が何にセットされているかを表示します。 `echo \$TERM` は `$TERM` と そのまま表示します。

### 3.7.1. シェルの変更

シェルを変更する一番簡単な方法は `chsh` コマンドを使うことです。 `chsh` を実行すると 環境変数 `EDITOR` で示されたエディタが立ち上がります。 環境変数をセットしていなかった時は `vi` が立ち上がります。 “Shell:” の行を適宜変更してください。

`chsh` に `-s` オプションをつけると、 エディタを起動せずにシェルを変更することが可能です。 たとえば、シェルを `bash` に変えたいなら、次のようにしてください。

    % chsh -s /usr/local/bin/bash

`chsh` をパラメータなしで実行し、 エディタでシェルを変更しても同じことができます。

> Note: 使おうと思っているシェルは必ず `/etc/shells` 中に書かれているものでなければなりません。 シェルを Ports コレクションから インストールしていたのであれば、すでにそれは行なわれていますが、 手動でインストールした場合は、それを忘れずに行ってください。

> たとえば、`bash` を手動で `/usr/local/bin` にインストールした場合 以下のようにする必要があります。

>     # echo "/usr/local/bin/bash" >> /etc/shells

> そして `chsh` を実行してください。

## 3.8. テキストエディタ

さまざまな FreeBSD の設定は、テキストファイルを編集することで行われます。 そのため、テキストエディタの扱いに慣れると良いでしょう。 FreeBSD には、基本システムの一部として二、三提供されるものと、 Ports collection から利用できる、たくさんのテキストエディタが用意されています。

最も学習が簡単なエディタは、 easy editor の略で ee と呼ばれるものです。 ee を立ち上げるには、コマンドラインから `ee filename` と入力します。 ここで `filename` は、 編集しようとしているファイルの名前です。 たとえば、`/etc/rc.conf` を編集するには `ee /etc/rc.conf` と入力します。 一旦 `ee` の中に入れば、 エディタの機能を操作するコマンドはすべてディスプレイの上部に 表示されています。キャレット `^` 文字は キーボードの Ctrl キーを意味しますので、 `^e` はキーのコンビネーション Ctrl+e を押すという意味になります。 ee を終了するには Esc キーを押し、 そして leave editor を選びます。 ファイルが更新されていたときは、 エディタは変更をセーブするかどうかプロンプトを出します。

FreeBSD には、基本システムの一部として vi、 一方 `emacs` や `vim` といった他のエディタは Ports Collection の一部として、 より強力なテキストエディタが用意されています。 これらのエディタはやや学習が複雑ですが、より強力で高い機能性を提供します。 しかし、あなたが多量のテキストを編集することを考えているなら、 `vim` や `emacs` といった強力なエディタを習得することは、 より多くの時間を節約することでしょう。

## 3.9. デバイスとデバイスノード

デバイスとはシステム上のハードウェアに関するものに対してよく使われる用語で、 ディスクやプリンタ、グラフィックカードやキーボードが含まれます。 FreeBSD が起動するとき、FreeBSD が表示しているものの大部分は検出されたデバイスです。 `/var/run/dmesg.boot` を眺めれば起動メッセージを読み直すことができます。

例えば、`acd0` は最初の IDE CDROM ドライブで、`kbd0` はキーボードを表します。

Unix オペレーティングシステムにおけるデバイスのほとんどは、 デバイスノードと呼ばれる `/dev` ディレクトリにあるスペシャルファイルを通してアクセスしなければなりません。

### 3.9.1. デバイスノードを作成する

新しいデバイスをシステムにつけ足したり、 追加デバイスのサポートをコンパイルして加えたりするときは、 デバイスノードを追加で作成しなければならない場合があります。

#### 3.9.1.1. MAKEDEV スクリプト

`DEVFS` がないシステム (5.0 より前の全 てのバージョンの FreeBSD にあてはまります) では、 以下に示すように MAKEDEV(8) スクリプトを使ってデバイスノードを作成します。

    # cd /dev
    # sh MAKEDEV ad1

この例では、取りつけられたとき2番目に当たる IDE ドライブにとって適切なデバイスノードを作ります。

#### 3.9.1.2. `DEVFS` (デバイスファイルシステム: Device File System)

デバイスファイルシステム `DEVFS` は、 グローバルファイルシステム名前空間の中のカーネルデバイス名前空間へのアクセスを提供します。 デバイスノードを作成したり変更したりするのではなく、 `DEVFS` がこの特別なファイルシステムを管理するのです。

詳しくは devfs(5) マニュアルページをご覧ください。

FreeBSD 5.0 では `DEVFS` がデフォルトで使われています。

## 3.10. 仮想コンソールと端末

FreeBSD は様々な使い方ができます。その中の一つが、 テキスト端末でコマンドを入力することです。この方法で FreeBSD を使えば、 UNIX オペレーティングシステムの能力と柔軟性を手にすることができます。 この節では、“コンソール” と “端末” はどのようなもので、FreeBSD でどう使うかを 説明します。

### 3.10.1. コンソール

起動時に自動的にグラフィカルな環境が起動するように FreeBSD を設定していなければ、システムが起動してスタートアップ スクリプトが実行されると、すぐにログインプロンプトが出てくるでしょう。 次のようものが表示されるはずです。

    Additional ABI support:.
    Local package initialization:.
    Additional TCP options:.

    Fri Sep 20 13:01:06 EEST 2002

    FreeBSD/i386 (pc3.example.org) (ttyv0)

    login:

あなたのシステムではメッセージが多少異なるかもしれませんが、 似たようなものが見られるはずです。 最後の 2 行が、今関心を向けているものです。 最後から 2 行目は、以下のようになっています。

    FreeBSD/i386 (pc3.example.org) (ttyv0)

この行には、 起動したばかりのシステムについていくばくかの情報があります。 あなたは、x86 アーキテクチャ上の Intel または その互換プロセッサ上で動作している “FreeBSD” の コンソールを目にしているのです[2]。このマシンの名称 (どの UNIX 機にも名前がついて います) は `pc3.example.org` で、 あなたはそのシステムコンソール、`ttyv0` 端末に向かっています。

最後の行は、常に以下のものになります。

    login:

ここは、FreeBSD にログインするために “ユーザ名” を入力するところです。次の節でどうするか説明します。

### 3.10.2. FreeBSD にログインする

FreeBSD は、マルチユーザ、マルチプロセスなシステムです。 これは、1 台のマシンで何人もの人が交互に多くのプログラムを 動かせるシステムに与えられる正式な説明です。

あらゆるマルチユーザシステムには、ある “ユーザ” を他のユーザと区別する何がしかの手段が必要です。 FreeBSD (とすべての UNIX ライクなオペレーティングシステム) では、 すべてのユーザに対してプログラムの実行を可能にするのに、システムに “ログイン” することを義務付けてこれを実現しています。 どのユーザにも、一意な名前 (“ユーザ名”) と個人的な秘密の鍵 (“パスワード”) があります。 FreeBSD はユーザにプログラムの実行を許可する前に、 この 2 つの入力を要求します。

FreeBSD が起動してスタートアップスクリプトを実行し終わった 直後に[3]、プロンプトを表示して有効なユーザ名の入力を促します。

    login:

この例では `john` というユーザ名を使う ことにしましょう。このプロンプトに対して `john` と入力して、Enter を 押してください。そうすると、 次のような“パスワード”の入力を要求するプロンプトが 表示されます。

    login: john
    Password:

それでは `john` のパスワードを入力して Enter を押してください。パスワードは 表示されません。これについては、当面は 気にする必要はありません。セキュリティのためといえば十分でしょう。

パスワードを正確に入力したら、FreeBSD にログインして 利用可能なすべてのコマンドを試せるようになっているはずです。

### 3.10.3. 多数のコンソール

一つのコンソールで UNIX コマンドを動かすのは結構なことですが、 FreeBSD は多くのプログラムを一度に動かせます。 コマンドを入力できるコンソールが一つというのは、 FreeBSD のようにいくつものプログラムを同時に動かせる オペレーティングシステムの場合は少しもったいないことです。 ここで、“仮想コンソール” が非常に役に立ちます。

FreeBSD は、異なる仮想コンソールを複数 表示するように設定できます。キーボード上である組合せのキーを押せば、 その中の一つから他の仮想コンソールのどれかに切り替えられます。 それぞれのコンソールは、個別の出力チャンネルを持っており、 また FreeBSD はある仮想コンソールから次に切り替えるのに応じて、 キーボード入力とモニター出力を適切につなぎ直します。

FreeBSD は、コンソールを切り替えるために、 特別なキーの組合せを予約しています[4]。FreeBSD では Alt-F1, Alt-F2 から Alt-F8 までを、 別の仮想コンソールに切り替えるのに使えます。

あるコンソールから他に切り替えるのに応じて、FreeBSD は画面 への出力を保存して戻します。結果として、FreeBSD で動かすコマン ドを入力するのに使える複数の画面とキーボードを “仮想的に” 実現できるのです。 ある仮想コンソールで実行したプログラムは、 そのコンソールが見えなくなっている時も実行を停止しません。 別の仮想コンソールに切り替えても動き続けます。

### 3.10.4. `/etc/ttys` ファイル

初期設定では、FreeBSD は 8 つの仮想コンソールを立ち上げます。 この設定はもともと埋め込まれているわけではなく、 インストールしたものが、もっと多いまたは少ない数の仮想コンソールで 起動するように、容易にカスタマイズできます。仮想コンソールの数と 設定は `/etc/ttys` ファイルに書かれています。

FreeBSD の仮想コンソールを設定するには `/etc/ttys` ファイルを利用します。 このファイルのコメントアウトされていない (`#` 文字で始まっていない) 行は、一つの端末または仮想コンソールの 設定があります。FreeBSD の初期設定では、 仮想コンソールを 9 つ設定し、そのうち 8 つを有効にしています。 `ttyv` で始まる行がそれです。

    # name  getty                           type    status          comments
    #
    ttyv0   "/usr/libexec/getty Pc"         cons25  on  secure
    # Virtual terminals
    ttyv1   "/usr/libexec/getty Pc"         cons25  on  secure
    ttyv2   "/usr/libexec/getty Pc"         cons25  on  secure
    ttyv3   "/usr/libexec/getty Pc"         cons25  on  secure
    ttyv4   "/usr/libexec/getty Pc"         cons25  on  secure
    ttyv5   "/usr/libexec/getty Pc"         cons25  on  secure
    ttyv6   "/usr/libexec/getty Pc"         cons25  on  secure
    ttyv7   "/usr/libexec/getty Pc"         cons25  on  secure
    ttyv8   "/usr/X11R6/bin/xdm -nodaemon"  xterm   off secure

このファイルのそれぞれのカラムと仮想コンソールに設定可能な 全オプションの詳しい説明は、ttys(5) のマニュアルを 参照してください。

### 3.10.5. シングルユーザモードのコンソール

“シングルユーザモード” とは何かという詳しい説明は、 Section 12.6.2 にあります。FreeBSD を シングルユーザモードで動かしている場合は一つしかコンソールが ないということは注意しておくに値するでしょう。仮想コンソールは 利用できません。シングルユーザモードのコンソールの設定は、同じく `/etc/ttys` ファイルにあります。 `console` で始まる行を探してください。

    # name  getty                           type    status          comments
    #
    # If console is marked "insecure", then init will ask for the root password
    # when going to single-user mode.
    console none                            unknown off secure

> Note: `console` 行の上のコメントが示すように、 この行を編集して `secure` を `insecure` に変更できます。そうすると、 FreeBSD がシングルユーザモードで起動した場合にも `root` のパスワードを要求します。

> ただし、これを`insecure` に 変更する場合は十分注意してください。 `root` のパスワードを忘れてしまったら、 シングルユーザモードで起動するのは少しややこしくなります。 できることはできますが、FreeBSD の起動の過程とそれに関わる プログラムにあまり親しんでいない人には少し難しいかも知れません。

## 3.11. さらに詳しい情報を得るには...

### 3.11.1. オンラインマニュアル

FreeBSD についてのもっとも包括的な文書は、 マニュアルページの形式になっているものです。 FreeBSD システム上のほとんどすべてのプログラムには、 基本的な操作方法とさまざまな引数を説明しているリファレンスマニュアルが添付されています。 これらのマニュアルは `man` コマンドで見ることができます。`man` コマンドの使い方は簡単です。

    % man コマンド名

`コマンド名` のところには、知りたいコマンドの名前を入れます。 たとえば `ls` コマンドについて知りたい場合には、 次のように入力します。

    % man ls

オンラインマニュアルは、 セクション番号で分類されています。

1. ユーザコマンド

2. システムコールとエラー番号

3. C のライブラリ関数

4. デバイスドライバ

5. ファイル形式

6. ゲームや娯楽

7. さまざまな情報

8. システムの管理と操作のためのコマンド

9. カーネル開発者のための情報

時折、 同じトピックがオンラインマニュアルの複数のセクションに記載されている場合があります。 たとえば、`chmod` ユーザコマンドと `chmod()` システムコールの場合がそれに該当します。 この場合、`man` コマンドにセクション番号を与えることで、 どちらを参照したいかを指定することができます。

    % man 1 chmod

上のようにすれば、 ユーザコマンド `chmod` のマニュアルページが表示されます。 オンラインマニュアルの特定セクションへの参照は、 慣習的に書かれている文書で括弧の中に示されます。 すなわち、chmod(1) は `chmod` ユーザコマンドを、chmod(2) はシステムコールの方を示しています。

コマンドの名前を知っていて、 単純にその使い方を知りたい場合はここまでの説明で十分でしょう。 しかし、 もしコマンドの名前を思い出せない場合にはどうしたら良いのでしょうか? `man` に `-k` スイッチをつければ、 コマンド解説(description)の文章から、 指定したキーワードを検索することができます。

    % man -k mail

このコマンドにより、 “mail” というキーワードをコマンド解説に含むコマンドの一覧が表示されます。 実際には、これは `apropos` コマンドを使う場合と同等の機能です。

それでは、`/usr/bin` にあるさまざまなコマンドすべてを見ていて、 それらが実際にどう働くのかが、まったく見当もつかないときには どうしたら良いでしょう? そのときは単純に、

    % cd /usr/bin
    % man -f *

とするか、あるいは同じ働きをする

    % cd /usr/bin
    % whatis *

としてください。

### 3.11.2. GNU の Info ファイル

FreeBSD には Free Software Foundation (FSF) によるアプリケーションや ユーティリティがたくさん含まれています。 これらのプログラムには、マニュアルページに加えて `info` ファイルと呼ばれる ハイパーテキスト形式の文書が付属しています。 この文書は `info` コマンド、 あるいは emacs をインストールしているなら emacs の info モードで読むことができます。

info(1) コマンドを使うには、単に次のように入力します。

    % info

`h` と入力すると、 簡単な手引きを読むことができます。 クイックコマンドリファレンスは `?` を入力してください。

# Chapter 4. アプリケーションのインストール - packages と ports

## 4.1. この章では

FreeBSD の基本システムには数多くのシステムツールが含まれています。 しかしながら、サードパーティ製のアプリケーションをインストールしないと 実用的にはそれほどたくさんのことはできません。 FreeBSD は、サードパーティ製のソフトウェアの導入を支援するために、 ソースコードをコンパイルしてインストールする Ports Collection と コンパイル済みのバイナリをインストールする packages という相補的な 2 つの技術を提供しています。 どちらのシステムを用いても、お気に入りのアプリケーションの最新版を ローカルメディアやネットワーク上からインストールできます。

この章を読むと、以下のことがわかります。

- packages を用いてサードパーティ製のソフトウェアをバイナリからインストールする方法

- Ports Collection を用いてサードパーティ製のソフトウェアをソースコードからコンパイルする方法

- インストールした packages や ports を削除する方法

- Ports Collection が用いるデフォルトの設定を変更する方法

- お望みのソフトウェア package を探しだす方法

- アプリケーションをアップグレードする方法

## 4.2. ソフトウェアのインストール

UNIX システムを使ったことのある人なら、 サードパーティ製ソフトウェアの典型的なインストール手順が 以下のようになることをご存知でしょう。

1. ソースコード、またはバイナリ形式で 配布されているソフトウェアをダウンロードする。

2. 配布時のフォーマット (一般的には compress(1), gzip(1) または bzip2(1) で圧縮された tarball) からソフトウェアを取り出す。

3. ドキュメント (`INSTALL` または `README` ファイル、あるいは `doc/` サブディレクト中のファイル) を探しだし、 ソフトウェアのインストール方法を調べる。

4. ソース形式でソフトウェアが配布されている場合はコンパイルを行う。 ここでは、`Makefile` の編集、 または、`configure` スクリプトの実行、 あるいは他の作業を伴うことがある。

5. ソフトウェアの動作を確認し、インストールする。

すべてがうまくいったならば、インストール作業は以上です。 もしインストールしているソフトウェアパッケージが、 FreeBSD を意識して移植されたものでなければ、 適切に動くようコードを調べ、編集する必要があるかもしれません。

あなたが望むのであれば、FreeBSD 上へのソフトウェアのインストールに “従来” の方法を使い続けることができます。 しかしながら、FreeBSD は インストール時にかかるたくさんの労力を軽減する 2 つの技術、 すなわち packages と ports を提供しています。 この文書を書いている時点では、 20,000 を越えるサードパーティ製アプリケーションがこれらの方法で 利用可能となっています。

FreeBSD package では、いかなるアプリケーションに対しても ダウンロードする必要のあるファイルはただ一つです。 package には、コンパイル済みのアプリケーションの全コマンド、 各種設定ファイルやドキュメントが含まれています。 FreeBSD に用意されている pkg_add(1), pkg_delete(1), pkg_info(1) といった package 管理コマンドで、 ダウンロードした package ファイルを扱うことができます。 新しいアプリケーションをインストールするには、 たった一つのコマンドを実行するだけです。

FreeBSD port は、アプリケーションをソースコードからコンパイルする際の 処理を自動化するように設計されたファイルの集まりです。

プログラムをコンパイルする時のことを思い出して下さい。 通常、とてもたくさんの手順 (ダウンロード、展開、パッチ作業、コンパイル、インストール) を踏まなくてはなりません。 port を構成するファイルは、 これらすべての作業をあなたの代わりに行うために必要な情報を含んでいます。 いくつかの簡単なコマンドを実行すると、 自動的にアプリケーションのソースコードがダウンロードされ、展開、 パッチ作業、コンパイル、そして、インストール作業が行われます。

さらに ports システムは、`pkg_add` コマンドや他の package 管理コマンドで扱うことのできる packages を生成できます。 これらのコマンドについては後の節で簡単に紹介します。

packages と ports は依存関係を理解します。 ある特定のライブラリに依存する アプリケーションをインストールするとします。 また、アプリケーションとライブラリは FreeBSD ports や packages によって 入手可能であるとします。 アプリケーションを追加するために `pkg_add` コマンドまたは ports システムを用いると、 インストールされていないライブラリが検出され、 先に依存するライブラリが自動的にインストールされます。

2 つの技術が非常に類似していて、 なぜ FreeBSD がわざわざ両者を採用しているのか不思議に思うでしょう。 packages と ports にはそれぞれ独自の特徴があり、 どちらを使うかはあなたの好みによります。

package の利点

- 一般的に、あるアプリケーションの package の tarball は、 ソースコードを含む tarball より小さなサイズとなります。

- packages はコンパイル作業を必要としません。 このことは、Mozilla, KDE, または GNOME といった大きなアプリケーションで重要となります。 特にシステムが遅い場合にはなおさら重要です。

- packages を用いれば、 ソフトウェアのコンパイルに関する知識は必要ありません。

ports の利点

- packages は、通常最も多くのシステムで実行できるように、 非常に保守的な設定で構築されています。 port からインストールすることで、 たとえば Pentium 4 や Athlon プロセッサに特化したコードを生成するような コンパイルオプションを指定できます。

- アプリケーションのなかには、コンパイル時に プログラムの機能を決めるようなオプションを設定するものがあります。 たとえば、Apache は多種多様な ビルトインオプションを設定できます。 port から構築することで、デフォルトオプションではなく、 自分でオプションを設定することができます。

  設定を区別するために、同じアプリケーションに対して 複数の packages が存在することがあります。 たとえば、Ghostscript は X11 サーバーがインストールされているかどうかにより、 `ghostscript` package と `ghostscript-nox11` package が選択可能となっています。 packages でもこのような方法が可能ですが、 アプリケーションのコンパイルオプションが さらに用意されている場合は困難となります。

- ライセンス条項で、 バイナリでの配布を禁止しているソフトウェアがあります。 それらはソースコードで配布されなくてはいけません。

- バイナリ配布を信用していない人もいます。 ソースコードがあれば、少なくともソースコードを読んで (理論的には) 潜在的な問題点を自分で見つけ出すことができます。

- ローカルなパッチがある場合、 それを適用するためにソースコードが必要になります。

- ソースコードを手元に置いておきたい人たちもいます。 彼らは、退屈したときに眺めたり、あちこち解析してみたり、 ソースコードを借用したり (もちろん、 ライセンスが許せばの話ですが) するのです。

ports の更新状況を把握するために、 FreeBSD ports メーリングリスト や FreeBSD ports bugs メーリングリスト を購読するとよいでしょう。

> Warningアプリケーションをインストールする前に、 そのアプリケーションに関連したセキュリティ上の問題がないことを http://vuxml.freebsd.org/ で確認してください。

> また、 インストールされているアプリケーションに既知の脆弱性がないことを自動的に調べる `ports-mgmt/portaudit` をインストールしてもよいでしょう。 このコマンドは、ビルド前の port についても調査します。 インストールされている packages を確認する場合には、 `portaudit -F -a` コマンドを使ってください。

この章では、packages と ports を用いた FreeBSD 上での サードパーティ製ソフトウェアの インストール方法や管理方法について説明します。

## 4.3. アプリケーションの探し方

どんなアプリケーションをインストールするにしても、 まずあなたが何を望んで、 またその名前がなんというのかを理解している必要があります。

FreeBSD 上で利用可能なアプリケーションのリストは常に増えています。 幸運にも、多くの方法で望むものを探すことができます。

- FreeBSD ウェブサイトは、 利用可能なすべてのアプリケーションの最新の一覧を、検索できる形で http://www.FreeBSD.org/ports/ において公開しています。 ports はカテゴリに分類されています。 アプリケーションは、(名前を知っているならば) 名前で検索でき、 あるカテゴリで利用可能な アプリケーションをすべて表示させることもできます。

- Dan Langille は http://www.FreshPorts.org/ で FreshPorts を公開しています。 FreshPorts は ports ツリー中のアプリケーションの変更を追跡します。 一つまたはそれ以上の ports を “監視” することができ、 変更があるとメールで更新情報を送ってくれます。

- ご希望のアプリケーションの名前がわからなければ、 FreshMeat (http://www.freshmeat.net/) のようなサイトでアプリケーションを探して下さい。 その後、そのアプリケーションが ports で利用可能かどうかを FreeBSD サイトで調べて下さい。

- port の正確な名前を知っていて、 どのカテゴリに分類されているのかを知りたいだけなら、 whereis(1) コマンドで調べることができます。 単に `whereis `file`` と入力してください。`file` の部分にはインストールしたいプログラム名を入れます。 システム上でプログラムが見つかったら、 そのプログラムのパスが次のように表示されます。

      # whereis lsof
      lsof: /usr/ports/sysutils/lsof

  この表示は、`lsof` (システムユーティリティの一つ) が `/usr/ports/sysutils/lsof` というディレクトリにあることを示しています。

- さらに、以下の例のように echo(1) を使って port が存在するかどうかを簡単に調べることもできます。

      # echo /usr/ports/*/*lsof*
      /usr/ports/sysutils/lsof

  この方法では `/usr/ports/distfiles` 以下にダウンロードされたファイル名にもマッチします。

- また、Ports Collection に備わっている検索機能を利用して port を検索する方法もあります。 この検索機能を利用するには、カレントディレクトリが `/usr/ports` である必要があります。 そのディレクトリに移動したら、 `make `search` name=`プログラム名`` と入力してください。 `プログラム名`の部分には検索したいプログラム名を入れます。 たとえば、`lsof` を探したい場合には次のようにします。

      # cd /usr/ports
      # make search name=lsof
      Port:   lsof-4.56.4
      Path:   /usr/ports/sysutils/lsof
      Info:   Lists information about open files (similar to fstat(1))
      Maint:  obrien@FreeBSD.org
      Index:  sysutils
      B-deps:
      R-deps:

  出力のうち特に注意して見なければならないのは “Path:” という行です。 この行は port がどこにあるかを示しています。 出力される他の情報は port をインストールする際には必要となるものではありませんので、 ここでは触れないでおきます。

  もっと詳しく検索するには、 `make `search` key=`string`` と入力してください。 `string` の部分には検索したいテキストを入れます。 port 名、コメント、説明文および依存情報が検索されます。 探しているプログラムの名前を知らない場合でも、 ある目的に関連した ports の検索に利用できます。

  どちらの場合でも、 検索文字列中の大文字と小文字を区別せずに検索が行われるので、 “LSOF” を検索した結果は、 “lsof” と同じ検索結果になります。

## 4.4. packages システムの利用

寄稿: Chern Lee.

FreeBSD には packages を管理するツールが複数あります。

- `sysinstall` からシステムに packages をインストールしたり削除できます。 また、インストールされた packages や利用可能な packages の一覧を表示できます。 詳細については、インストール後の作業 を参照してください。

- この章では、コマンドラインの package 管理ツールについて説明します。

### 4.4.1. package のインストール

pkg_add(1) は、ローカルファイルやネットワーク上のサーバから FreeBSD ソフトウェア package を インストールするためのユーティリティです。

Example 4-1. 手動で package をダウンロードしてローカルからインストールする

    # ftp -a ftp2.FreeBSD.org
    Connected to ftp2.FreeBSD.org.
    220 ftp2.FreeBSD.org FTP server (Version 6.00LS) ready.
    331 Guest login ok, send your email address as password.
    230-
    230-     This machine is in Vienna, VA, USA, hosted by Verio.
    230-         Questions? E-mail freebsd@vienna.verio.net.
    230-
    230-
    230 Guest login ok, access restrictions apply.
    Remote system type is UNIX.
    Using binary mode to transfer files.
    ftp> cd /pub/FreeBSD/ports/packages/sysutils/
    250 CWD command successful.
    ftp> get lsof-4.56.4.tgz
    local: lsof-4.56.4.tgz remote: lsof-4.56.4.tgz
    200 PORT command successful.
    150 Opening BINARY mode data connection for 'lsof-4.56.4.tgz' (92375 bytes).
    100% |**************************************************| 92375       00:00 ETA
    226 Transfer complete.
    92375 bytes received in 5.60 seconds (16.11 KB/s)
    ftp> exit
    # pkg_add lsof-4.56.4.tgz

(FreeBSD CD-ROM セットのような) ローカルな packages がない場合は、 pkg_add(1) に `-r` オプションをつける方が楽でしょう。 このユーティリティは、このオプションを指定して実行すると 自動的に適切なオブジェクトの形式とリリースを判断し、 package を FTP サイトからダウンロードしてインストールします。

    # pkg_add -r lsof

上の例では適当な package がダウンロードされた後、インストールされます。 ユーザはこのほかに何もする必要はありません。 メインの配布サイトではなく FreeBSD Package ミラーサイトの package を使うには、 `PACKAGESITE` 環境変数に利用したいサイトを設定してください。 pkg_add(1) は、`FTP_PASSIVE_MODE`, `FTP_PROXY`, `FTP_PASSWORD` といった環境変数を参照する fetch(3) を用いてファイルをダウンロードします。 ファイアウォールの内側であったり、 FTP/HTTP プロキシを使う場合には、 これらの環境変数を設定することになります。 環境変数の一覧については fetch(3) をご覧ください。 また、上の例で `lsof-4.56.4` の代わりに `lsof` を使っていることに注意してください。 リモートフェッチ機能を使用する場合には、 package のバージョン番号を取り除かなければなりません。 pkg_add(1) は自動的に最新版のアプリケーションを取得します。

> Note: FreeBSD-CURRENT または、FreeBSD-STABLE を使用している場合、 pkg_add(1) は最新版のアプリケーションをダウンロードします。 -RELEASE を使用している場合には、 そのバージョンのリリース時にビルドされた package がダウンロードされます。 この設定は `PACKAGESITE` を上書きすることで変更できます。 たとえば、FreeBSD 5.4-RELEASE を使用している場合には、 pkg_add(1) を実行するとデフォルトで `ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-5.4-release/Latest/` から packages をダウンロードします。 もし、pkg_add(1) を使って FreeBSD 5-STABLE の packages をダウンロードしたければ、 `PACKAGESITE` 環境変数を `ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-5-stable/Latest/` に設定してください。

package は `.tgz` や `.tbz` という拡張子を持つファイルとして配布されており、 ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/packages/ や FreeBSD CD-ROM にあります。 FreeBSD 4-CD セット (または PowerPak など) の CD はすべて、 `/packages` ディレクトリに packages が あります。packages のレイアウトは、 `/usr/ports` ツリーのものと同様です。 カテゴリごとにディレクトリがあり、 `All` ディレクトリにはすべての package があります。

package システムのディレクトリ構造は ports のレイアウトと同一です。 両者が組み合わさって package/port システムが構成されます。

### 4.4.2. packages の管理

pkg_info(1) は、インストールされている packages の一覧と説明を表示するユーティリティです。

    # pkg_info
    cvsup-16.1          A general network file distribution system optimized for CV
    docbook-1.2         Meta-port for the different versions of the DocBook DTD
    ...

pkg_version(1) は、インストールされている packages のバージョンを要約して表示するユーティリティです。 package のバージョンを、現在の ports ツリーのバージョンと 比較します。

    # pkg_version
    cvsup                       =
    docbook                     =
    ...

2 列目の記号は、インストールされているバージョンの ローカル ports ツリーのバージョンに対する 新旧を表します。

記号 | 意味
--- | ---
= | インストールされている package のバージョンは、 ローカル ports ツリーのものと一致しています。
< | インストールされているバージョンは、 ローカル ports ツリーのものより古いです。
> | インストールされているバージョンは、 ローカル ports ツリーのものより新しいです (おそらくローカル ports ツリーは古くなっています)。
? | インストールされた package を ports インデックスの中に見つけることができません (インストールされた port が Ports Collection から削除されたり、 名前が変更された場合などに起こります)。
* | 複数のバージョンの package が存在します。
! | インストールされた package はインデックス中に存在しますが、何らかの理由で、 インストールされた package のバージョン番号をインデックス中のエントリと比較できません。

### 4.4.3. package の削除

インストールされている package を削除するには、 pkg_delete(1) ユーティリティを使ってください。

    # pkg_delete xchat-1.7.1

pkg_delete(1) は package 名とバージョン番号の両方を必要とします。 すなわち、先ほどの例において `xchat-1.7.1` を `xchat` とした場合には動作しません。 インストールされている package のバージョンは、 pkg_version(1) を使うと簡単に調べることができます。 バージョン番号のかわりにワイルドカードも使えます。

    # pkg_delete xchat\*

上の例では、名前が `xchat` で始まるすべての packages が削除されます。

### 4.4.4. その他

package に関するすべての情報は `/var/db/pkg` ディレクトリ以下に置かれています。 このディレクトリの下にあるファイルの中に、 インストールされたファイルの一覧やインストールされた各 package についての説明が含まれています。

## 4.5. Ports Collection の利用

このセクションでは、Ports Collection を利用してシステムにプログラムをインストールしたり、 システムから削除したりする基本的な手順について説明します。 利用可能な `make` のターゲットや環境変数についての詳細は ports(7) をご覧ください。

### 4.5.1. Ports Collection の準備

ports をインストールするためには、まず Ports Collection を用意しなくてはなりません。 Ports Collection とは、`/usr/ports` 以下に置かれる `Makefile`, 修正パッチ、 説明文などの一連のファイルのことです。

FreeBSD のシステムインストール時に、 sysinstall が Ports Collection をインストールするかどうかを尋ねてきたはずです。 No を選んだ場合、以下の作業をおこない Ports Collection をインストールしてください。

CVSup を利用する方法

ここでは、CVSup プロトコルを利用して Ports Collection をインストールする方法や最新の状態に保つ方法を簡単に説明します。 CVSup についてもっと知りたいのであれば、 CVSup を使う をご覧ください。

> Note: csup は、 FreeBSD システムにおける CVSup プロトコルの実装です。 FreeBSD 6.2 から導入されました。 古い FreeBSD release のユーザは、 `net/csup` port/package からインストールしてください。

はじめて csup を使う際には、 `/usr/ports` が空であることを確認してください! 他の方法により Ports Collection がすでに用意されていると、 csup は削除されたパッチを Ports Collection から取り除かないでしょう。

1. `csup` を実行してください。

       # csup -L 2 -h cvsup.FreeBSD.org /usr/share/examples/cvsup/ports-supfile

   `cvsup.FreeBSD.org` を最寄りの CVSup サーバに変更してください。 ミラーサイトの完全なリストは CVSup サイト (Section A.6.7) にあります。

   > Note: 自分用の `ports-supfile` を使って、 コマンドラインから CVSup サーバを指定することを省略したいと思う方もいるでしょう。

   > 1. そのような場合には、 まず `root` ユーザ権限で、 `/usr/share/examples/cvsup/ports-supfile` を `/root` や、あなたのホームディレクトリなどへコピーしてください。

   > 2. 次に `ports-supfile` を編集します。

   > 3. `CHANGE_THIS.FreeBSD.org` を最寄りの CVSup サーバに変更してください。 ミラーサイトの完全なリストは CVSup サイト (Section A.6.7) にあります。

   > 4. その後、以下のように `csup` を実行してください。

   >        # csup -L 2 /root/ports-supfile

2. csup(1) コマンドを時間をおいて実行すると、 最新の変更点がダウンロードされて、あなたの手元の Ports Collection に加えられます。 Ports Collection 全体が再度ダウンロードされることはありません。

Portsnap を利用する方法

Portsnap は Ports Collection を配布するための新しいシステムです。 Portsnap の機能についての詳細は Portsnap を使う を参照してください。

1. 圧縮された Ports Collection のスナップショットを `/var/db/portsnap` にダウンロードしてください。 この作業が終われば、ネットワークへの接続を終了してもかまいません。

       # portsnap fetch

2. 初めて Portsnap を使う時は、 スナップショットをまず `/usr/ports` に展開してください。

       # portsnap extract

   すでに `/usr/ports` が用意されていて、 アップデートだけを行ないたいのであれば、 代わりに以下のコマンドを実行してください。

       # portsnap update

sysinstall を利用する方法

ここでは、sysinstall を利用してインストールメディアから Ports Collection をインストールする方法について説明します。 この方法では、リリース時の古い Ports Collection がインストールされることに注意してください。 もし、インターネットへの接続が可能であれば、 これまでに説明した方法を使ってください。

1. `root` ユーザ権限で、以下のように `sysinstall` を実行してください。

       # sysinstall

2. スクロールダウンして Configure を選び、 Enter を押してください。

3. スクロールダウンして Distributions を選び、 Enter を押してください。

4. スクロールダウンして ports を選び、 Space キーを押してください。

5. Exit までスクロールアップして、 Enter を押してください。

6. CDROM や FTP といったインストールメディアを選択してください。

7. Exit までスクロールアップして、Enter を押してください。

8. X を押して、 sysinstall を終了してください。

### 4.5.2. ports のインストール

一番最初に知らなければならないのは、 Ports Collection は “スケルトン” と呼ばれるもので構成されているという事実です。 port スケルトンは簡単に言うと、アプリケーションを FreeBSD 上で正しくコンパイルしインストールする方法を提供する最小限のファイルのセットのことです。 それぞれの port スケルトンには、次のファイルが含まれています。

- `Makefile`。 `Makefile` にはアプリケーションのコンパイル方法やシステムのどこにインストールするかを指定する、 さまざまな命令文が含まれています。

- `distinfo` ファイル。 このファイルには、その port を構築するためにダウンロードする必要があるファイルのファイル名と、 それらのファイルがダウンロードによって壊れていないかを (md5(1) や sha256(1) を使って) 確認するためのチェックサム情報が含まれています。

- `files` ディレクトリ。 このディレクトリには FreeBSD システム上でプログラムをコンパイルし、 インストールするための修正パッチが含まれています。 修正パッチ (patch) とは基本的に、 個々のファイルに対する変更点を表した小さなファイル群のことです。 ファイルはプレインテキスト形式で、 “10 行目を削除” や “26 行目を ... に変更” などと書かれています。 修正パッチは、“diff (差分)” とも呼ばれます。 これは、修正パッチが diff(1) プログラムで作成されるからです。

  このディレクトリには、その port の構築に必要な その他のファイルが入る場合もあります。

- `pkg-descr` ファイル。 これにはプログラムの、複数行にわたる詳しい説明文が含まれます。

- `pkg-plist` ファイル。 これは、その port によってインストールされる全ファイルのリストです。 これにはプログラムを削除する際に、 どのファイルを削除すれば良いのかを ports システムに伝える役割もあります。

これらの他に `pkg-message` といったファイルを含む ports もあります。 ports システムは、 このようなファイルを用いて特殊な状況にも対応しています。 これらのファイルについての詳細および ports の一般的な説明については、port 作成者のためのハンドブック をご覧下さい。

port はソースコードからアプリケーションを構築する方法を 提供しますが、実際のソースコードは含んでいません。 ソースコードは CD-ROM やインターネットから入手できます。 ソースコードはソフトウェア作者のお気に入りの形式で配布されます。 たいてい、tar と gzip で作成された圧縮アーカイブとして配布されますが、 他のツールで圧縮されていたり、圧縮されずに配布されることもあります。 どのような形式で配布されているかに関わらず、 これらのプログラムのソースコードは “distfile” と呼ばれています。 以下では FreeBSD port をインストールする 2 つの方法について説明します。

> Note: ports をインストールするには、 `root` としてログインする必要があります。

> Warningport をインストールする前に、 Ports Collection が最新であることを確認してください。 また、そのアプリケーションに関連したセキュリティ上の問題がないことを http://vuxml.freebsd.org/ で確認してください。

> アプリケーションをインストールする前に、 portaudit を使って セキュリティに関する脆弱性を自動的に調べることができます。 このツールは Ports Collection (`ports-mgmt/portaudit`) に用意されています。 新しく port をインストールする前に、 `portaudit -F` コマンドを実行すると、 最新の脆弱性に関するデータベースがダウンロードされます。 セキュリティの検査およびデータベースの更新は、 日々のセキュリティチェックで行なわれます。 詳しくは、portaudit(1) および periodic(8) のマニュアルページを参照してください。

Ports Collection は、ネットワークに接続できることを想定しています。 もし接続できなければ、distfile のコピーを `/usr/ports/distfiles` に手動で置いてください。

まず、インストールしたい port のディレクトリに移動してください。

    # cd /usr/ports/sysutils/lsof

`lsof` ディレクトリに移動すると、 port スケルトンがあるのが確認できると思います。 次に行なうのは、port のコンパイルまたは “ビルド (build)” です。 これは、プロンプトから単に `make` と入力するだけで行なえます。 そうすると、次のような出力が現われるはずです。

    # make
    >> lsof_4.57D.freebsd.tar.gz doesn't seem to exist in /usr/ports/distfiles/.
    >> Attempting to fetch from ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/.
    ===>  Extracting for lsof-4.57
    ...
    [extraction output snipped]
    ...
    >> Checksum OK for lsof_4.57D.freebsd.tar.gz.
    ===>  Patching for lsof-4.57
    ===>  Applying FreeBSD patches for lsof-4.57
    ===>  Configuring for lsof-4.57
    ...
    [configure output snipped]
    ...
    ===>  Building for lsof-4.57
    ...
    [compilation output snipped]
    ...
    #

コンパイルが終了してプロンプトに戻ることを確認してください。 次に port のインストールを行ないます。 port をインストールするのに必要なのは、 `make` コマンドに一つの単語、 `install` を指定することだけです。

    # make install
    ===>  Installing for lsof-4.57
    ...
    [installation output snipped]
    ...
    ===>   Generating temporary packing list
    ===>   Compressing manual pages for lsof-4.57
    ===>   Registering installation for lsof-4.57
    ===>  SECURITY NOTE:
          This port has installed the following binaries which execute with
          increased privileges.
    #

プロンプトに戻ったら、 インストールしたプログラムは実行できるようになっています。 `lsof` は高い権限で動作するプログラムなので、 セキュリティに関する警告が表示されます。 ports のコンパイルや インストール中に表示されるこれらの警告に注意してください。

コンパイル時に作成される作業用ディレクトリを削除すると良いでしょう。 このディレクトリにはコンパイル時に使用されるすべての一時ファイルが含まれています。 このディレクトリを残しておくと、ディスク容量を消費するだけでなく、 port を新しいバージョンへアップデートする際に問題を引き起こす可能性があります。

    # make clean
    ===>  Cleaning for lsof-4.57
    #

> Note: `make`、`make `install`` および `make `clean`` と三つに分けられた手順の代わりに、 最初から `make `install clean`` と実行することで、 余分な手順を二つ省くことができます。

> Note: シェルによってはコマンドの実行ファイルを探す時間を短縮するために、 環境変数 `PATH` に登録されている ディレクトリのコマンド一覧をキャッシュするものがあります。 このようなシェルを使っているのであれば、 port をインストールしたあとで、 新しくインストールされたコマンドを用いる前に、 `rehash` コマンドを実行する必要があります。 このコマンドは `tcsh` などのシェルで動作します。 `sh` のようなシェルを使っているのであれば `hash -r` を実行してください。 詳細については、 あなたの使っているシェルのドキュメントをご覧ください。

FreeBSD Mall の FreeBSD Toolkit のようなサードパーティ製の DVD-ROM 製品の中には distfiles を収録しているものがあります。 これらを Ports Collection で使うことができます。 DVD-ROM を `/cdrom` にマウントしてください。 ほかのマウントポイントを使用したければ、 `CD_MOUNTPTS` 変数を設定してください。 ディスク上に必要な distfiles が存在すると、 自動的に利用されます。

> Note: port には CD-ROM への収録を許可しないライセンス条項を持つものがあることに 注意してください。 これにはダウンロード前に登録を必要としたり、 再配布が禁止されているなどという理由があります。 CD-ROM に含まれていない port をインストールしたい場合には、 ネットワークに接続する必要があります。

ports は、`FTP_PASSIVE_MODE`, `FTP_PROXY`, `FTP_PASSWORD` といった環境変数を参照する fetch(1) を用いてファイルをダウンロードします。 ファイアウォールの内側であったり、 FTP/HTTP プロキシを使う場合には、 これらの環境変数を設定することなります。 環境変数の一覧については fetch(3) をご覧ください。

ネットワークに常時接続できないユーザのために `make `fetch`` コマンドが用意されています。 (ネットワークに接続している時に) このコマンドを ports のトップディレクトリ (`/usr/ports`) で実行してください。 必要なファイルがダウンロードされます。 このコマンドは `/usr/ports/net` といった、より下の階層のカテゴリにおいても使うことができます。 ある port がライブラリやその他の ports に依存している場合には、 それらの distfiles はダウンロードされないことに注意してください。 port が依存しているものもダウンロードしたければ `fetch` の代わりに `fetch-recursive` を使って下さい。

> Note: 前述した `make `fetch`` と同じように、トップディレクトリで `make` を実行するとすべての port がビルドされます。 しかしながら ports の中には同時に存在できないものがあったり、 異なる ports の別のファイルが同じ名前で インストールされる場合があることに注意してください。

めったにないことかもしれませんが、 `MASTER_SITES` (ファイルをダウンロードしてくる場所) に書かれているサイト以外から tarball を持ってくることが必要になる場合があります。 そのような場合には以下のように `MASTER_SITES` を変更してください。

    # cd /usr/ports/directory
    # make MASTER_SITE_OVERRIDE= \
    ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/ fetch

上の例では `MASTER_SITES` を `ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/` に変更しています。

> Note: ports の中にはビルドオプションを指定できる (または要求してくる) ものがあります。 このオプションを指定することで、 アプリケーションの機能の一部を有効もしくは無効にできます。 また、セキュリティオプションを設定したり、 その他のカスタマイズを行うことができます。 このようなアプリケーションには `www/mozilla`, `security/gpgme` や `mail/sylpheed-claws` などがあります。 利用可能なオプションがある場合にはメッセージが表示されます。

#### 4.5.2.1. ports ディレクトリの変更

作業ディレクトリやターゲットディレクトリを デフォルトのものから変更したほうが有用な場合 (もしくは変更しなければならない場合) があります。 `WRKDIRPREFIX` 変数と `PREFIX` 変数を変更することで、 違うディレクトリを使用することができます。 たとえば、

    # make WRKDIRPREFIX=/usr/home/example/ports install

とすると、ports は `/usr/home/example/ports` でコンパイルされ、すべて `/usr/local` 以下にインストールされます。

    # make PREFIX=/usr/home/example/local install

この場合、コンパイルは `/usr/ports` でおこない、 `/usr/home/example/local` にインストールします。

もちろん、

    # make WRKDIRPREFIX=../ports PREFIX=../local install

とすれば両者を組み合わせることが可能です (省略せずに記述したらこのページに収めるには長すぎるのですが、 考え方は理解していただけたと思います)。

あるいは、これらを環境変数に設定する方法もあります。 どのようにすれば良いかについては、 あなたの使っているシェルのマニュアルページを参照してください。

#### 4.5.2.2. `imake` の使用

(X Window System に含まれる) `imake` を使用する ports の場合は `PREFIX` が機能せず、 `/usr/X11R6` にインストールしようとします。 また、Perl 関連の ports も同様に `PREFIX` を無視して Perl ツリーにインストールします。 これらの ports で `PREFIX` がきちんと参照されるように変更するのは、ほとんど不可能です。

#### 4.5.2.3. ports の再構築

ports をコンパイルする際、ビルドオプションを設定するために ncurses ベースのメニューが表示されることがあります。 port の構築後、再びこのメニューを表示させてオプションの追加や削除、設定の変更を行いたいと思うことがあるでしょう。 このための方法はたくさんあります。 一つ目の方法は port のディレクトリに移動し、 `make `config`` と入力する方法です。 現在の設定を反映させたメニューが再び表示されます。 別の方法は `make `showconfig`` を使う方法です。 port の設定可能なオプションがすべて表示されます。 他の方法は `make `rmconfig`` の実行です。 このコマンドを実行すると選択されているすべてのオプションが削除され、 設定をもう一度やり直すことができます。 これらの方法や他の方法についての詳細は、 ports(7) マニュアルで説明されています。

### 4.5.3. インストールした ports の削除

ports のインストール方法について知ればおそらく、 インストールした後になって間違っていたことに気付いた時などに備えて、 それらを削除するにはどうすれば良いのか疑問に感じることでしょう。 さて、前の例 (例のまま何も変更していない人は `lsof`) を削除してみましょう。 packages を削除する時とまったく同じく (packages の章 で説明したように) pkg_delete(1) コマンドで ports を削除できます。

    # pkg_delete lsof-4.57

### 4.5.4. ports のアップグレード

まず最初に pkg_version(1) コマンドを使って、 古くなってしまった ports の中で新しいバージョンにアップデート可能なものを Ports Collection からリストアップしてください。

    # pkg_version -v

#### 4.5.4.1. `/usr/ports/UPDATING`

Ports Collection を更新したら、port をアップグレードする前に `/usr/ports/UPDATING` ファイルに目を通してください。 このファイルには port をアップグレードする際にユーザが遭遇するであろう問題や、 追加で必要な作業などが記述されています。 例えば、ファイル形式の変更や設定ファイルの場所の変更、 前のバージョンと互換性がなくなったことなどが書かれています。

もし、この節に書いてあることと `UPDATING` に書かれていることが矛盾している場合には、 `UPDATING` を優先してください。

#### 4.5.4.2. portupgrade を用いた ports のアップグレード

portupgrade は、 インストールした ports のアップグレードを簡単に行なうためのユーティリティです。 `ports-mgmt/portupgrade` port から利用できます。 他の port と同じように `make `install clean`` コマンドでインストールしてください。

    # cd /usr/ports/ports-mgmt/portupgrade
    # make install clean

`pkgdb -F` コマンドを使って、 インストールされている ports を調べてください。 矛盾が検出された場合には修復してください。 アプリケーションをアップデートする前には、 この作業を定期的に行なうとよいでしょう。

`portupgrade -a` を実行すると、 portupgrade はシステムにインストールされている port の中で古くなったものをすべてアップデートします。 もし、すべての ports に対して個別にアップグレードするかどうかを確認したいのであれば、 `-i` オプションを使ってください。

    # portupgrade -ai

ports で利用可能なすべてのアプリケーションではなく、 ある特定のアプリケーションだけを更新したいのであれば、 `portupgrade `pkgname`` を実行してください。 アップグレードするアプリケーションが依存しているすべての ports をまず先に更新したい場合には、 `-R` オプションを使ってください。

    # portupgrade -R firefox

ports ではなく packages を用いてインストールを行ないたい場合には、 `-P` オプションを使ってください。 このオプションを使うと、portupgrade は `PKG_PATH` に登録されているローカルディレクトリを検索します。 ローカルに packages が見つからなければ、 リモートサイトからダウンロードを試みます。 packages をローカルに見つけることができず、 リモートサイトからもダウンロードできない場合には、 portupgrade は ports からインストールを行ないます。 ports を使用したくなければ、`-PP` オプションを指定してください。

    # portupgrade -PP gnome2

また、ビルドやインストールを行なわず、 distfiles (`-P` が指定されている場合は packages) だけをダウンロードしたければ、 `-F` オプションを指定してください。 詳細は portupgrade(1) を参照してください。

#### 4.5.4.3. Portmanager を用いた ports のアップグレード

インストールした ports のアップグレードを簡単に行なうためのもうひとつのユーティリティが Portmanager です。 `ports-mgmt/portmanager` port から利用できます。

    # cd /usr/ports/ports-mgmt/portmanager
    # make install clean

インストールされているすべての ports を次のような簡単なコマンドでアップグレードできます。

    # portmanager -u

Portmanager の作業を確認しながら行いたい場合には、 `-ui` オプションを使ってください。 Portmanager を使って、 システムに新しい ports をインストールすることもできます。 通常の `make `install clean`` コマンドと異なり、 選択した port をビルドしインストールする前に、 依存している port をすべてアップグレードします。

    # portmanager x11/gnome2

選択した port の依存関係について問題が発生した場合には、 Portmanager を使って修復することができます。 修正が終ったら、問題を含んでいた port は再構築されます。

    # portmanager graphics/gimp -f

詳細については portmanager(1) を参照してください。

#### 4.5.4.4. Portmaster を用いた ports のアップグレード

インストールした ports のアップグレードを行うためのもう一つのユーティリティが Portmaster です。 Portmaster は、 どの ports をアップグレードすべきかの判断を、 (他の ports に依存せずに) “base” システムのツールと `/var/db/pkg/` の情報から行うよう設計されています。 `ports-mgmt/portmaster` から利用できます。

    # cd /usr/ports/ports-mgmt/portmaster
    # make install clean

Portmaster は、ports を 4 つのカテゴリに分類します。

- Root ports (他の port に依存しません。他の port からも依存されません。)

- Trunk ports (他の port に依存しませんが、他の port から依存されます。)

- Branch ports (他の port に依存し、他の port からも依存されます。)

- Leaf ports (他の port に依存しますが、他の port からは依存されません。)

`-L` オプションを使うと、 インストールした ports やアップデート可能な port の一覧が表示されます。

    # portmaster -L
    ===>>> Root ports (No dependencies, not depended on)
    ===>>> ispell-3.2.06_18
    ===>>> screen-4.0.3
            ===>>> New version available: screen-4.0.3_1
    ===>>> tcpflow-0.21_1
    ===>>> 7 root ports
    ...
    ===>>> Branch ports (Have dependencies, are depended on)
    ===>>> apache-2.2.3
            ===>>> New version available: apache-2.2.8
    ...
    ===>>> Leaf ports (Have dependencies, not depended on)
    ===>>> automake-1.9.6_2
    ===>>> bash-3.1.17
            ===>>> New version available: bash-3.2.33
    ...
    ===>>> 32 leaf ports

    ===>>> 137 total installed ports
            ===>>> 83 have new versions available

以下のコマンドを使って、インストールされているすべての ports を簡単にアップデートできます。

    # portmaster -a

> Note: Portmaster のデフォルトの設定では、 インストールされている port を削除する前にバックアップ用の package が作成されます。 このバックアップは、新しいバージョンのインストールに成功すると削除されます。 `-b` オプションを使うと、 Portmaster はバックアップを自動的に削除しません。 `-i` オプションを追加すると、 Portmaster をインタラクティブモードで使用できます。 このモードでは、各 port をアップグレードするかどうかの選択を対話的に行うことがでます。

アップグレードの過程でエラーに遭遇した場合には、 `-f` オプションを使ってすべての ports のアップグレードや再構築をできます。

    # portmaster -af

Portmaster を使ってシステムに新しい ports をインストールしたり、新しい port のコンパイルやインストール前に依存するすべての port をアップグレードできます。

    # portmaster shells/bash

詳細については portmaster(8) を参照してください。

### 4.5.5. ports とディスク容量

Ports Collection を使い続けていると、 そのうちディスクを食いつぶしてしまうでしょう。 ports からソフトウェアをビルドしてインストールした後には、 常に作業用の `work` ディレクトリを `make `clean`` コマンドで削除するようにしましょう。 以下のコマンドで Ports Collection を掃除することができます。

    # portsclean -C

`distfiles` ディレクトリには、たくさんのソースファイルがたまっていきます。 手動でそれらのファイルを削除してもよいのですが、 どの ports からも使われていない distfiles を次のコマンドで削除できます。

    # portsclean -D

また、システムにインストールされている port から使われていない distfiles をすべて削除するには、以下のコマンドを使ってください。

    # portsclean -DD

> Note: `portsclean` ユーティリティは portupgrade ツール群の一部です。

インストールした ports のうちで、 必要なくなったものは削除してください。 `ports-mgmt/pkg_cutleaves` port は、 この作業を自動化するツールです。

## 4.6. インストール後の作業

新しいアプリケーションのインストールが終わったら、 次に付属のドキュメントを読みたいと思うでしょう。 また、必要な設定ファイルを編集したり、 (デーモンの場合には) システムの起動時にプログラムが開始することを確認したくなるでしょう。

port のインストール後に追加で行わなければならない作業の詳細は、 アプリケーションごとに異なります。 しかしながら、新しいアプリケーションをインストールしたばかりで、 “次は何 ?” と思っているのであれば、 以下の tips は役に立つでしょう。

- どのようなファイルがどこにインストールされているのかを知りたければ、 pkg_info(1) を使ってください。 たとえば、FooPackage の 1.0.0 バージョンをインストールしたのであれば、 以下を実行してください。

      # pkg_info -L foopackage-1.0.0 | less

  上のコマンドを実行すると package としてインストールされているすべてのファイルが表示されます。 特に、`man/`, `etc/`, `doc/` ディレクトリのファイルに注目してください。 それぞれ、マニュアルページ、 設定ファイル、より包括的なドキュメントが設置されています。

  もし、アプリケーションのバージョンがわからなければ、 次のコマンドを実行してください。

      # pkg_info | grep -i foopackage

  インストールされた packages の中から、名前に `foopackage` を含む package が表示されます。 必要に応じてコマンドラインの `foopackage` を置き換えてください。

- アプリケーションのマニュアルページがインストールされているのであれば、 man(1) を使ってマニュアルを読んでください。 同様に、設定ファイルのサンプルや提供されているドキュメントにも目を通してください。

- アプリケーションのウェブサイトがあれば、 そのサイトに更なるドキュメントや FAQ がないかを調べてください。 ウェブサイトのアドレスがわからなければ、 次のコマンドで表示されるかもしれません。

      # pkg_info foopackage-1.0.0

  ウェブサイトが存在すると、 URL が `WWW:` を含む行に表示されます。

- (インターネットサーバのように) システム起動時に立ち上げる必要のある port は、 サンプルスクリプトを通常 `/usr/local/etc/rc.d` にインストールします。 このスクリプトを調べ、 必要があれば編集したりスクリプトの名前を変更してください。 詳細は サービスの起動 をご覧ください。

## 4.7. うまく動作しない ports に遭遇した場合には

port がうまく動作しない状況に遭遇したら、 あなたにできることは次のようなことしかありません。

1. その port に対する修正案が提出されていないかどうかを 障害報告 (Problem Report) データベース で調べてください。 もし提案されていれば、 その修正を使うことができるかもしれません。

2. port の保守担当者に対応してもらいましょう。 `make `maintainer`` と入力するか、 `Makefile` を直接読み、 保守担当者の電子メールアドレスを調べます。 メールを送る際には、port 名とバージョン番号 (`Makefile` の `$FreeBSD:` 行)、 そしてエラーが出力されるまでの出力ログを忘れずに添付してください。

   > Note: 特定の保守担当者が存在せず、かわりに メーリングリスト が保守している ports があります。 そのような場合には、メールアドレスは `<freebsd-listname@FreeBSD.org>` のようになります。 質問する際には、このことに気をつけてください。

   > 特に `<ports@FreeBSD.org>` が保守している ports には、保守担当者が本当にいません。 そのメーリングリストを購読する人々からなるコミュニティが、 修正や対応をおこなっています。 もっとボランティアが必要です!

   保守担当者から返信がなければ、send-pr(1) を使ってバグレポートを提出しても構いません ( FreeBSD 障害報告の書き方 をご覧ください)。

3. 自分で直しましょう! “Ports” システムに関する詳細な情報は port 作成者のためのハンドブック にあります。 このセクションを読むと、壊れてしまった port を直したり、 自分で作った port を提出したりできるようになります!

4. 近くの FTP サイトから package を入手しましょう。 “マスタ” package コレクションは、 `ftp.FreeBSD.org` の package のディレクトリ にありますが、 まずはあなたの地域の ミラーサイト を最初に調べてください。 ソースからコンパイルすることを試みるより確実ですし、 時間もかかりません。 package をシステムにインストールするには、pkg_add(1) を使います。

# Chapter 5. X Window System

X.Org X11 サーバ対応: Ken Tom and Marc Fonvieille.

## 5.1. この章では

FreeBSD では、ユーザに強力なグラフィカルインタフェースを提供するために X11 を採用しています。 X11 は、 Xorg や XFree86 (他のソフトウェアパッケージについてはここでは述べません) に実装された、 フリーで利用できる X Window System です。 FreeBSD 5.2.1-RELEASE 以前の FreeBSD では、デフォルトの X11 サーバは、XFree86 Project, Inc がリリースしている XFree86 でした。 FreeBSD 5.3-RELEASE から、デフォルトかつ公式の X11 サーバは X.Org Foundation が開発している Xorg に変更されました。 これは FreeBSD に似たライセンスに従って配布されています。 FreeBSD 用の商用 X サーバも入手できます。

この章では、Xorg リリース 7.4 に重点を置いた X11 のインストールと設定について解説します。 (デフォルトの X11 が、XFree86 であるような古い FreeBSD リリースにおける) XFree86 の設定方法や、 以前のバージョンの Xorg に関する情報は、http://docs.FreeBSD.org/doc/ にある FreeBSD ハンドブックのアーカイブからいつでも参照できます。

X11 がサポートするビデオハードウェアについての情報は、 Xorg のウェブサイトをご覧ください。

この章を読めば以下のことがわかります。

- X Window System のさまざまなコンポーネントと、 それらが互いにどのように連携しているか。

- X11 のインストールおよび設定方法

- さまざまなウィンドウマネージャのインストール方法

- X11 での TrueType® フォントの使い方

- GUI ログイン (XDM) の設定方法

この章を読み始める前に以下のことを理解しておく必要があります。

- サードパーティ製ソフトウェアのインストール方法 (Chapter 4)

## 5.2. X を理解する

初めて X を使う場合、Microsoft Windows や Mac OS® といった他の GUI 環境に慣れている人は多少ショックを受けるでしょう。

さまざまな X のコンポーネントについての詳細や、 それらがどのようにやり取りするかについては理解する必要はありませんが、 基本的なことをいくつか知っていると X を使う際に強力な武器になるでしょう。

### 5.2.1. なぜ X?

X は、UNIX 用に書かれた最初のウィンドウシステムではありませんが、 それらの中では最も広まっているものです。 X のオリジナルの開発チームは X を書く前に別のウィンドウシステムを開発していました。 そのシステムの名前は “W” (“Window” の W) です。 X は単にローマ字でその次の文字だというだけなのです。

X は “X”, “X Window System”, “X11” などといった多くの用語で呼ばれます。 X11 を “X Windows” と呼ぶと気を悪くする人もいるでしょう。 これについてもう少し見識を深めるには X(7) をご覧ください。

### 5.2.2. X のクライアント/サーバモデル

X は最初からネットワークを意識してデザインされており、 “クライアント - サーバ” モデルを採用しています。

X では、“X サーバ” はキーボードやモニタ、 マウスが接続されたコンピュータ上で動きます。 このサーバはディスプレイの表示を管理したり、キーボード、 マウスからの入力を処理したり、他の入出力装置 (すなわち、入力装置として “タブレット” を利用できますし、 出力装置としてビデオプロジェクタを利用することもできます) を取り扱います。 各 X アプリケーション (XTerm や Netscape® など) は “クライアント” になります。 クライアントは “この座標にウィンドウを描いてください” といったメッセージをサーバへ送り、サーバは “ユーザが OK ボタンを押しました” といったメッセージを送り返します。

家庭や小さなオフィスのような環境では、X サーバと X クライアントは同じコンピュータ上で動くことになるでしょう。 しかし、X サーバを非力なデスクトップコンピュータで動かし、 X アプリケーション (クライアント) は例えばオフィス全体を捌くような 高機能で高価なマシンで動かすことも可能なのです。この場合、 X のクライアントとサーバの通信はネットワーク越しに行なわれます。

これは、ある人々を混乱させることがあります。 X での用語は彼らが想定するものとは正反対だからです。 彼らは “X サーバ” は地下にある大きなパワフルなマシンであり、 “X クライアント” が自分たちのデスク上にあると想像するのです。

X サーバとはモニタとキーボードがついているマシンのことであり、 X クライアントとはウィンドウを表示するプログラムだということを覚えておいてください。

X のプロトコルには、クライアントとサーバのマシンが同じ OS で動いていなければならないといったことを強制するものはなにもありませんし、 同じ機種で動いている必要もありません。 X サーバを Microsoft Windows や Apple の Mac OS で動かすことも可能ですし、 そのようなソフトウェアもフリーのものから商用のものまでいろいろとあります。

### 5.2.3. X ウィンドウマネージャ

X のデザイン哲学は UNIX のそれに非常によく似ており、 “ツールであってポリシーではない” のです。 つまり、X はあるタスクがどのように達成されるべきかを示すものではありません。 その代わり、ユーザにはツールが与えられ、 それらをどうするかはユーザに委ねられているのです。

この哲学は、X ではスクリーン上でウィンドウがどのように見えるべきか、 マウスでそれらをどうやって動かすか、ウィンドウ間を移動するのに どういうキーストロークを使うべきか (例えば Microsoft Windows における Alt+Tab)、 各ウィンドウのタイトルバーはどのように見えるべきか、 それらはクローズボタンを持つべきかどうか、 といったことを示すものではないというところまで拡大して解釈できます。

その代わりに、X ではそういったことを “ウィンドウマネージャ” と呼ばれるアプリケーションに任せるのです。 X 用のウィンドウマネージャは以下のようにたくさんあります。 AfterStep, Blackbox, ctwm, Enlightenment, fvwm, Sawfish, twm, Window Maker などなど。 これらのウィンドウマネージャの見た目や使い勝手はそれぞれ異なっています。 “バーチャルデスクトップ” をサポートしているものもありますし、 デスクトップを操作するキーストロークをカスタマイズできたり、 “スタート” ボタンやそれに類するものを持っているものもあります。 “テーマ” に対応しており、 新しいテーマを適用して見た目や使い勝手を完全に変えられるものもあります。 これらの、およびその他多くのウィンドウマネージャは Ports Collection の `x11-wm` というカテゴリからインストールできます。

さらに、KDE や GNOME デスクトップ環境には、 それぞれのデスクトップに統合された独自のウィンドウマネージャがあります。

それぞれのウィンドウマネージャはまた異なる設定機構を備えており、 手で設定ファイルを編集しなければならないものや、 設定作業のほとんどを GUI ツールで行うことができるものもあります。 少なくとも 1 つ (Sawfish) は Lisp 言語の変種で書かれた設定ファイルを持っています。

> フォーカスポリシー: ウィンドウマネージャのもう一つの機能はマウスの “フォーカスポリシー” に関するものです。 すべてのウィンドウシステムは、ウィンドウを選択しキーストロークを 受け付けるようにするための方法が必要です。 そして、どのウィンドウがアクティブなのかを示す必要もあります。

> よく知られているフォーカスポリシーは “click-to-focus” と呼ばれるもので、 このモデルは Microsoft Windows で利用されており、 あるウィンドウ内でマウスをクリックすればそのウィンドウがアクティブになる、 というものです。

> X は特定のフォーカスポリシーを採用していません。 代わりにウィンドウマネージャがそれをコントロールします。 それぞれのウィンドウマネージャが、 それぞれのフォーカスポリシーをサポートしています。 すべてのものは click-to-focus をサポートしていますし、 多くのものは他の方法もサポートしています。

> 最もポピュラーなフォーカスポリシーは次のものでしょう

> focus-follows-mouse

>   マウスポインタの下にいるウィンドウがフォーカスされるというものです。 ウィンドウは最前面にある必要はありません。 フォーカスを変えるには他のウィンドウにマウスポインタを動かすだけです。 クリックする必要はありません。

> sloppy-focus

>   これは focus-follows-mouse を少し拡張したものです。 focus-follows-mouse では、 マウスがルートウィンドウ (背景) に移動した時には、 フォーカスされているウィンドウがなくなり、 キーストロークは単に破棄されます。 sloppy-focus であれば、 ポインタが別のウィンドウに移った時のみフォーカスが変わり、 現在のウィンドウから出ただけでは変わりません。

> click-to-focus

>   マウスクリックによりアクティブなウィンドウが選択されます。 ウィンドウは “前面に持ち上げられ”、 他のすべてのウィンドウの前にきます。 ポインタが別のウィンドウ上に移動した時でも、 すべてのキーストロークがこのウィンドウに届きます。

> 多くのウィンドウマネージャはこういったものに加え、 その他のポリシーにも対応しています。 ウィンドウマネージャそのもののドキュメントもよく読んでください。

### 5.2.4. ウィジェット

X のツールを提供してもポリシーは提供しないというアプローチは、 各アプリケーションでスクリーンに現われるウィジェットにも適用されます。

“ウィジェット” はクリック可能であったり、 他の方法で操作可能なすべてのユーザインタフェース用アイテムを指す用語です。 ボタンやチェックボックス、ラジオボタン、アイコン、リスト、などがそうです。 Microsoft Windows はこれらを “コントロール” と呼んでいます。

Microsoft Windows や Apple の Mac OS はともに非常に厳密なポリシーをウィジェットに課しています。 アプリケーション開発者は共通のルックアンドフィールに 確実に従うことを想定されているわけです。 X では、特定のグラフィカルなスタイルやウィジェットのセットを 強制することが重要とは考えてられていませんでした。

したがって、X アプリケーションに共通の見た目や使い勝手を期待してはいけません。 MIT のオリジナルの Athena ウィジェットや Motif® (Microsoft Windows のウィジェットセットはこれを基にしており、 斜度のついた縁と三方に灰色の陰影がついています)、 OpenLook をはじめとして 有名なウィジェットセットやその亜種が何種類もあります。

比較的新しい X アプリケーションのほとんどが、 KDE で使われている Qt や GNOME プロジェクトで使われている GTK+ のどちらかのウィジェットセットを使っています。 これらのウィジェットセットはモダンな見た目を持っています。 この点で言えば、UNIX のルックアンドフィールは収斂されてきており、 初心者がより簡単に使えるようになってきています。

## 5.3. X11 のインストール

FreeBSD のデフォルトの X11 は、Xorg です。 Xorg は X.Org Foundation がリリースしている X Window System のオープンソースな実装です。 Xorg は XFree86 4.4RC2 と X11R6.6 のコードを元にしています。 現在 FreeBSD Ports Collection で利用可能な Xorg のバージョンは 7.4 です。

Ports Collection から Xorg をビルドしインストールするには、以下のように入力します。

    # cd /usr/ports/x11/xorg
    # make install clean

> Note: Xorg をすべてビルドするには、 少なくとも 4 GB の空き容量が必要です。

package から直接 X11 をインストールすることもできます。 pkg_add(1) ツールで扱われるバイナリパッケージが X11 についても提供されています。 pkg_add(1) のリモート取得機能を利用する時は、 package のバージョンは外してください。 pkg_add(1) は自動的にそのアプリケーションの最新版を取得します。

ですから、Xorg の package を取得してインストールするには、 次のように入力します。

    # pkg_add -r xorg

> Note: 上記の例では、サーバ、クライアント、フォントなどを含んだ X11 ディストリビューション全体をインストールします。 分割された X11 のパッケージや ports も利用できます。

この章の残りでは、X11 をどのように設定すればよいか、 また生産性の高いデスクトップ環境をどのように設定するかについて解説します。

## 5.4. X11 の設定

寄稿: Christopher Shumway.

### 5.4.1. はじめに

X11 の設定を始める前に、 次の情報が必要となります。

- モニタの仕様

- ビデオアダプタのチップセット

- ビデオアダプタのメモリ

モニタの仕様は、X11 がどの解像度とリフレッシュレートで動作するかを決定するために用いられます。 こういった仕様は、通常モニタに付いてくるドキュメントや、 製造元のウェブサイトから取得できます。 必要なものは、水平走査周波数と垂直同期周波数の 2 つの数値範囲です。

ビデオアダプタのチップセットは X11 がグラフィックハードウェアとやり取りするために どのドライバモジュールを使うかを定義します。 ほとんどのチップセットが自動認識されますが、 正常に認識されない時のために知っておくとよいでしょう。

ビデオメモリは、 グラフィックアダプタがどの解像度とどの色数で動くことができるかを決めます。 これは、ユーザが自分のシステムにおける制限を理解するために知っておくことが重要です。

### 5.4.2. X11 の設定

Xorg は、 バージョン 7.3 から設定ファイルを作成することなく

    % startx

と入力するだけで起動するようになりました。

バージョン 7.4 から、Xorg は HAL を用いてキーボードやマウスを自動認識するようになりました。 `x11/xorg` の依存として、 `sysutils/hal` および `devel/dbus` port がインストールされますが、以下のようなエントリを `/etc/rc.conf` ファイルに追加し、 有効にする必要があります。

    hald_enable="YES"
    dbus_enable="YES"

これらのサービスは、 Xorg の設定が行われる前に (手動や再起動によって) 起動している必要があります。

ある種のハードウェアは、自動設定で動作しなかったり、 期待したような設定が行われないかもしれません。 そのような場合には、手動で設定する必要があります。

> Note: GNOME, KDE および Xfce などのデスクトップ環境では、 解像度などのスクリーンパラメータを簡単に設定できるツールがあります。 したがって、デフォルトの設定が満足するようなものではない場合でも、 これらのデスクトップ環境をインストールすることを考えているのであれば、 デスクトップ環境をインストールして、 スクリーン設定ツールを利用してください。

X11 の設定は複数の段階を経て行います。 まずは初期設定ファイルを作りましょう。 スーパーユーザになって次のようにしてください。

    # Xorg -configure

これにより、`/root` ディレクトリに `xorg.conf.new` という X11 の設定ファイルの雛形が生成されます (su(1) か直接ログインのどちらを利用したかが、受け継がれる `$HOME` 環境変数に影響します)。 X11 プログラムはシステム上のグラフィックハードウェアを検出し、 そのハードウェア用の適切なドライバを読み込む設定ファイルを作ります。

次のステップは、作成した設定ファイルで Xorg がそのグラフィックハードウェアで動くことを確認することです。 バージョン 7.3 以前の Xorg では、 以下を実行してください。

    # Xorg -config xorg.conf.new

Xorg 7.4 以降では、 このコマンドを実行すると黒い画面が表示され、 X11 が正常に動作しているかどうかの判断ができません。 古いバージョンと同じ実行結果を得るには、 `retro` オプションを使ってください。

    # Xorg -config xorg.conf.new -retro

黒とグレーのグリッドと X のマウスポインタが現われればその設定は成功です。 テストを終了するには、コマンドを実行した仮想コンソールに Ctrl+Alt+F`n` (1 番目の仮想コンソールへは F1) と入力して切り替え、 Ctrl+C と入力してください。

> Note: バージョン 7.3 以前の Xorg では、 Ctrl+Alt+Backspace キーの組み合わせで Xorg を終了できます。 バージョン 7.4 以降でこのキー操作を利用する場合には、 X 端末エミュレータで以下のコマンドを入力してください。

>     % setxkbmap -option terminate:ctrl_alt_bksp

> または、hald 用のキーボード設定ファイル `x11-input.fdi` を作成して、`/usr/local/etc/hal/fdi/policy` ディレクトリに保存してください。 このファイルには以下を含める必要があります。

>     <?xml version="1.0" encoding="ISO-8859-1"?>
>     <deviceinfo version="0.2">
>       <device>
>         <match key="info.capabilities" contains="input.keyboard">
>           <merge key="input.x11_options.XkbOptions" type="string">terminate:ctrl_alt_bksp</merge>
>         </match>
>       </device>
>     </deviceinfo>

> hald がこのファイルを読み込むように、 コンピュータを再起動してください。

> `xorg.conf.new` の `ServerLayout` もしくは `ServerFlags` セクションに、以下の行を追加する必要もあるでしょう。

>     Option "DontZap"   "off"

もしマウスが動作しなければ、 先へ進む前にマウスの設定を行う必要があります。 FreeBSD インストールの章の マウスの設定 を参照してください。 さらに、 バージョン 7.4 以降ではデバイスの自動認識のため、 `xorg.conf` の `InputDevice` セクションは無視されます。 古い設定の記述を利用するには、以下の行を ファイルの `ServerLayout` もしくは、 `ServerFlags` セクションに追加してください。

    Option "AutoAddDevices" "false"

これで、以前のバージョンのように、入力デバイスを (キーボードレイアウトの変更のように) 必要なオプションを用いて設定できるようになります。

> Note: すでに説明したように、 バージョン 7.4 以降では、デフォルトで hald デーモンがキーボードを自動的に認識します。 キーボードレイアウトやモデルを正しく認識しない場合でも、 GNOME, KDE もしくは Xfce のようなデスクトップ環境が、 キーボードの設定ツールを提供している可能性があります。 しかしながら、 setxkbmap(1) ユーティリティや hald の設定を利用することで、 キーボードのプロパティを直接設定できます。

> たとえば、フランス語のレイアウトの PC 102 キーボードを使いたい場合には、 hald のキーボード設定ファイル `x11-input.fdi` を作成し、`/usr/local/etc/hal/fdi/policy` ディレクトリに保存してください。 このファイルは以下を含んでいる必要があります。

>     <?xml version="1.0" encoding="ISO-8859-1"?>
>     <deviceinfo version="0.2">
>       <device>
>         <match key="info.capabilities" contains="input.keyboard">
>           <merge key="input.x11_options.XkbModel" type="string">pc102</merge>
>           <merge key="input.x11_options.XkbLayout" type="string">fr</merge>
>         </match>
>       </device>
>     </deviceinfo>

> このファイルがすでに存在する場合には、 キーボードの設定に関する部分をただ単にコピーし、 ファイルに追加してください。

> hald がこのファイルを読み込むように、 コンピュータを再起動してください。

> X 端末やスクリプトから以下のコマンドラインを実行することでも、 同様に設定できます。

>     % setxkbmap -model pc102 -layout fr

> `/usr/local/share/X11/xkb/rules/base.lst` ファイルは、利用可能なキーボード、レイアウトおよびオプションの一覧です。

次は `xorg.conf.new` を好みに合うように調整します。 emacs(1) や ee(1) のようなテキストエディタでファイルを開いてください。 まずモニタの周波数を加えます。 これらは水平と垂直の同期周波数と表現されるのが普通です。 これらの値は `xorg.conf.new` の `"Monitor"` セクションに次のように書き加えます。

       Section "Monitor"
            Identifier   "Monitor0"
            VendorName   "Monitor Vendor"
            ModelName    "Monitor Model"
            HorizSync    30-107
            VertRefresh  48-120
        EndSection

`HorizSync` と `VertRefresh` というキーワードが設定ファイル中にない場合があります。 その場合には、 `HorizSync` キーワードの後には水平走査周波数の、 `VertRefresh` キーワードの後には垂直同期周波数の正しい値を加えてください。 上の例では対象となるモニタの周波数が書かれています。

X はモニタが対応していれば DPMS (Energy Star) 機能を使うことができます。 xset(1) プログラムでタイムアウトをコントロールしたり、 強制的にスタンバイ、サスペンドや電源オフにすることができます。 モニタの DPMS 機能を有効にしたい場合は、 `"Monitor"` セクションに次の行を加えてください。

    Option       "DPMS"

`xorg.conf.new` はエディタで開いたままにしておき、 デフォルトの解像度と色数を好みで選びましょう。 `"Screen"` セクションに以下のように書きます。

    Section "Screen"
            Identifier "Screen0"
            Device     "Card0"
            Monitor    "Monitor0"
            DefaultDepth 24
            SubSection "Display"
                    Viewport  0 0
                    Depth     24
                    Modes     "1024x768"
            EndSubSection
    EndSection

`DefaultDepth` というキーワードは 実行時のデフォルトの色数について記述するためのものです。 Xorg(1) のコマンドラインスイッチ `-depth` が使用された場合はそちらが優先されます。 `Modes` というキーワードは、 与えられた色数におけるデフォルトの解像度を記述しておくためのものです。 ターゲットのシステムのグラフィックハードウェアによって定義されている、 VESA スタンダードモードのみがサポートされていることに注意してください。 上の例ではデフォルトの色数はピクセルあたり 24 ビットであり、 この色数での解像度は 1024 ピクセル× 768 ピクセルです。

最後に、設定ファイルを保存し、 上の例にあるようにテストしてみてください。

> Note: トラブルシューティングの過程で手助けするツールのひとつに X11 のログファイルがあります。これには、 X11 サーバが検知したデバイスそれぞれについての情報があります。 Xorg のログファイル名は `/var/log/Xorg.0.log` という形式です。実際のログファイル名は `Xorg.0.log` から `Xorg.8.log` のように変わります。

すべてうまくいったなら、設定ファイルを Xorg(1) が見つけることができる共通の場所に置きます。 これは、通常は `/etc/X11/xorg.conf` や `/usr/local/etc/X11/xorg.conf` です。

    # cp xorg.conf.new /etc/X11/xorg.conf

これで X11 の設定は完了です。 startx(1) ユーティリティで Xorg を起動できます。また、 xdm(1) を使って X11 サーバを起動することもできます。

### 5.4.3. 高度な設定

#### 5.4.3.1. Intel® i810 グラフィックチップセットの設定

Intel® i810 統合チップセットを設定するには、 X11 にカードを制御させるために AGP プログラミングインタフェースである `agpgart` が必要になります。 詳しくは、agp(4) ドライバのマニュアルページをご覧ください。

このドライバを用いることで、 他のグラフィックカードと同様に設定を行うことができるようになります。 カーネルに agp(4) ドライバが組み込まれていないシステムでは、 このモジュールを kldload(8) を使って読み込もうとしても動作しないことに注意してください。 このドライバは、 起動時にカーネル内に存在するようにカーネル内部に組み込むか、 `/boot/loader.conf` を使わなければなりません。

#### 5.4.3.2. ワイドスクリーンフラットパネルの追加

この章では、設定に関する幾分高度な知識を必要とします。 これまでに述べた標準ツールを使って設定に失敗する場合は、 ログファイルを参照してください。 ログファイルには、 設定のために有用な情報が十分含まれています。 テキストエディタを使用する必要があるでしょう。

現在のワイドスクリーン (WSXGA, WSXGA+, WUXGA, WXGA, WXGA+ など) は、 16:10 や 10:9 形式、または (問題を含む可能性のある) 他のアスペクト比に対応しています。 以下は、16:10 アスペクト比のスクリーン解像度の例です。

- 2560x1600

- 1920x1200

- 1680x1050

- 1440x900

- 1280x800

これらの解像度のひとつを以下のように `"Screen" セクション` の `Mode` に追加してください。

    Section "Screen"
    Identifier "Screen0"
    Device     "Card0"
    Monitor    "Monitor0"
    DefaultDepth 24
    SubSection "Display"
        Viewport  0 0
        Depth     24
        Modes     "1680x1050"
    EndSubSection
    EndSection

Xorg は、I2C/DDC を通してワイドスクリーンの解像度に関する情報を取得できるので、 モニタの周波数や解像度の範囲を把握しています。

もし、これらの `ModeLines` についての情報がドライバに存在しないのであれば、 Xorg にヒントを与えなけれならないでしょう。 `ModeLine` を手動で設定するのに十分な情報を `/var/log/Xorg.0.log` から得ることができます。 以下のような情報を探してください。

    (II) MGA(0): Supported additional Video Mode:
    (II) MGA(0): clock: 146.2 MHz   Image Size:  433 x 271 mm
    (II) MGA(0): h_active: 1680  h_sync: 1784  h_sync_end 1960 h_blank_end 2240 h_border: 0
    (II) MGA(0): v_active: 1050  v_sync: 1053  v_sync_end 1059 v_blanking: 1089 v_border: 0
    (II) MGA(0): Ranges: V min: 48  V max: 85 Hz, H min: 30  H max: 94 kHz, PixClock max 170 MHz

これは EDID と呼ばれる情報です。 この情報を用いて `ModeLine` を作成するには、 正しい順番に数字を入力するだけです。

     ModeLine <name> <clock> <4 horiz. timings> <4 vert. timings>

この例では "Monitor" セクションの ModeLine は以下のようになります。

    Section "Monitor"
    Identifier      "Monitor1"
    VendorName      "Bigname"
    ModelName       "BestModel"
    ModeLine        "1680x1050" 146.2 1680 1784 1960 2240 1050 1053 1059 1089
    Option          "DPMS"
    EndSection

以上の簡単な編集作業が終わったら、 新しいワイドスクリーンモニタ上で X が動作するでしょう。

## 5.5. X11 でのフォントの使用

寄稿: Murray Stokely.

### 5.5.1. Type1 フォント

X11 に付いてくるデフォルトのフォントは、 通常のデスクトップパブリッシングアプリケーションにとっては理想的とは言えない程度のものです。 文字を大きくするとジャギーになりプロフェッショナルとは言えないようなものになりますし、 Netscape での小さなフォントは頭が悪そうに見えます。 しかし、世の中には質の高い Type1 (PostScript®) フォントがいくつかあり、 X11 ではそれらを簡単に利用することができます。 例えば、URW フォントコレクション (`x11-fonts/urwfonts`) には高品質の Type1 フォント (Times Roman®, Helvetica®, Palatino® など) が含まれています。freefont コレクション (`x11-fonts/freefonts`) にはもっとたくさんのフォントが含まれていますが、 それらは Gimp のようなグラフィックソフトウェアで使用するためのものであり、 スクリーンフォントとしては十分ではありません。さらに、X11 は簡単に TrueType フォントを使うように設定することも可能です。 詳しくは、X(7) のマニュアルページか TrueType フォントの節 を参照してください。

上記の Type1 フォントコレクションを ports から入れる場合には次のコマンドを実行してください。

    # cd /usr/ports/x11-fonts/urwfonts
    # make install clean

freefont や他のコレクションでも同じようにします。 X サーバがこれらのフォントを検出できるようにするには X サーバ設定ファイル (`/etc/X11/xorg.conf`) の適切な場所に次のような行を加えます。

    FontPath "/usr/local/lib/X11/fonts/URW/"

別の方法としては、 X のセッション中に次のようなコマンドラインを実行します。

    % xset fp+ /usr/local/lib/X11/fonts/URW
    % xset fp rehash

これは動くのですが、X のセッションが終了すると消えてしまいます。 消えないようにするには X の起動時に読み込まれるファイル (通常の `startx` セッションの場合は `~/.xinitrc`, XDM のようなグラフィカルなログインマネージャを通してログインする時は `~/.xsession`) に加えておきます。 三番目の方法は新しい `/usr/local/etc/fonts/local.conf` ファイルを使うことです。 これに関しては アンチエイリアス 節をご覧ください。

### 5.5.2. TrueType® フォント

Xorg には、 TrueType フォントのレンダリング機能が組み込まれています。 この機能を実現するために 2 つの異なるモジュールがあります。 ここでは、freetype の方が他のフォントレンダリングバックエンドと整合性が高いので、 このモジュールを使うことにします。 freetype モジュールを使うためには `/etc/X11/xorg.conf` ファイルの `"Module"` セクションに以下の行を追加するだけです。

    Load  "freetype"

さて、まずは TrueType フォント用のディレクトリ (例えば `/usr/local/lib/X11/fonts/TrueType`) を作り、そこに TrueType フォントをすべて放り込みましょう。 Macintosh® の TrueType フォントは、そのままでは使うことができませんので注意してください。 X11 で使うには UNIX/MS-DOS/Windows 用のフォーマットでなければなりません。 ファイルを置いたら ttmkfdir を使って `fonts.dir` ファイルを作り、 X のフォントレンダラが新しいファイルがイントールされたことを分かるようにしてください。 `ttmkfdir` は FreeBSD Ports Collection の `x11-fonts/ttmkfdir` からインストールできます。

    # cd /usr/local/lib/X11/fonts/TrueType
    # ttmkfdir -o fonts.dir

次に TrueType フォントのディレクトリをフォントパスに追加します。 上の Type1 フォントの場合と同じように、

    % xset fp+ /usr/local/lib/X11/fonts/TrueType
    % xset fp rehash

とするか、もしくは `xorg.conf` ファイルに `FontPath` 行を追加します。

これで終わりです。Netscape や Gimp, StarOffice™ といったすべての X アプリケーションから TrueType フォントを使うことができます。 (高解像度なディスプレイで見るウェブページ上のテキストみたいな) とても小さなフォントや (StarOffice にあるような) 非常に大きなフォントもかなり綺麗に見えるようになることでしょう。

### 5.5.3. フォントのアンチエイリアス

更新 : Joe Marcus Clarke.

`/usr/local/lib/X11/fonts/` と `~/.fonts/` にあるすべての X11 のフォントが、Xft に対応しているアプリケーションで自動的にアンチエイリアス表示できるようになりました。 KDE, GNOME および Firefox のような最新のアプリケーションは、Xft に対応しています。

どのフォントがアンチエイリアスされるかを制御するため、 もしくはアンチエイリアスの特性を設定するために、 `/usr/local/etc/fonts/local.conf` ファイルを作成 (すでに存在しているのなら編集) します。 多くの Xft フォントシステムの高度な機能をこのファイルを使って調整できます。 この節ではいくつか簡単なところだけを紹介します。 詳しくは、fonts-conf(5) をご覧ください。

このファイルは XML 形式でなければなりません。 大文字小文字の区別に注意を払い、 すべてのタグが正しく閉じられているか確認してください。 ファイルは一般的な XML ヘッダで始まり、DOCTYPE 定義と `<fontconfig>` タグがその後にきます。

            <?xml version="1.0"?>
            <!DOCTYPE fontconfig SYSTEM "fonts.dtd">
            <fontconfig>

すでに説明したように、 `/usr/local/lib/X11/fonts/` と `~/.fonts/` にあるすべてのフォントは Xft 対応のアプリケーションで利用できます。 これら 2 つ以外に別のディレクトリを追加したいのなら、 `/usr/local/etc/fonts/local.conf` に以下のような行を追加します。

    <dir>/path/to/my/fonts</dir>

新しいフォント、 そして特に新しいフォントディレクトリを追加したら、 以下のコマンドを実行してフォントキャッシュを再構築してください。

    # fc-cache -f

アンチエイリアスをかけることによって境界が少しぼやけ、 そのためにとても小さなテキストはさらに読みやすくなり、 大きなフォントでは “ギザギザ” が消えるのです。 しかし、普通のテキストにかけた場合には目が疲れてしまうこともあります。 14 ポイント以下のサイズのフォントについて、 アンチエイリアスをかけないようにするには次の行を加えます。

            <match target="font">
                <test name="size" compare="less">
                    <double>14</double>
                </test>
                <edit name="antialias" mode="assign">
                    <bool>false</bool>
                </edit>
            </match>
            <match target="font">
                <test name="pixelsize" compare="less" qual="any">
                    <double>14</double>
                </test>
                <edit mode="assign" name="antialias">
                    <bool>false</bool>
                </edit>
            </match>

いくつかの等幅フォントは、 アンチエイリアスをかけるとスペーシングがうまくいかなくなる場合があります。 特に KDE でその傾向があるようです。 解決策の一つとして、そういったフォントのスペーシングを 100 に設定する方法があります。 そうするためには次の行を加えてください。

            <match target="pattern" name="family">
                <test qual="any" name="family">
                    <string>fixed</string>
                </test>
                <edit name="family" mode="assign">
                    <string>mono</string>
                </edit>
            </match>
            <match target="pattern" name="family">
                <test qual="any" name="family">
                    <string>console</string>
                </test>
                <edit name="family" mode="assign">
                    <string>mono</string>
                </edit>
            </match>

(これは固定サイズのフォントに `"mono"` という一般的な別名をつけます) そして以下を追加します。

            <match target="pattern" name="family">
                <test qual="any" name="family">
                    <string>mono</string>
                </test>
                <edit name="spacing" mode="assign">
                    <int>100</int>
                </edit>
            </match>

Helvetica の様なある種のフォントは、 アンチエイリアスすると問題が起こるでしょう。 たいてい、フォントが縦に半分に切られて表示されます。 最悪の場合、アプリケーションがクラッシュします。 これを回避するには、以下を `local.conf` に追加します。

            <match target="pattern" name="family">
                <test qual="any" name="family">
                    <string>Helvetica</string>
                </test>
                <edit name="family" mode="assign">
                    <string>sans-serif</string>
                </edit>
            </match>

`local.conf` の編集を終えたら、 ファイルの末尾が `</fontconfig>` タグで終わるようにしてください。 これを行わなければ、変更は無視されるでしょう。

最後に、ユーザは自分だけの設定を各自の `.fonts.conf` ファイルに追加できます。 これを行うためには、それぞれのユーザが単に `~/.fonts.conf` を作成するだけです。 このファイルも XML 形式でなければなりません。

最後に一つ。LCD スクリーンではサブピクセルサンプリングが必要な場合があります。 これは、基本的には (水平方向に分かれている) 赤、緑、 青の各コンポーネントを別々に扱うことによって水平方向の解像度を良くするというもので、 劇的な結果が得られます。 これを有効にするには `local.conf` ファイルに次の行を加えます。

            <match target="font">
                <test qual="all" name="rgba">
                    <const>unknown</const>
                </test>
                <edit name="rgba" mode="assign">
                    <const>rgb</const>
                </edit>
            </match>

> Note: ディスプレイの種類にもよりますが、 `rgb` ではなく `bgr` や `vrgb`、もしくは `vbgr` の場合もあるので、 試してみて最も良いものを使ってください。

## 5.6. X ディスプレイマネージャ

寄稿: Seth Kingsley.

### 5.6.1. 概要

X ディスプレイマネージャ (XDM) は X Window System のオプショナルな一部分であり、 ログインセッションの管理に用います。 最低限の機能を実装した “X 端末” やデスクトップ、 大規模なネットワークディスプレイサーバといった場面ではこれが有用です。 X Window System はネットワークとプロトコルから独立しているため、 ネットワークで繋がれた X のクライアントとサーバを動かすための設定はかなり幅が広くなります。 XDM はどのディスプレイサーバに接続するかを選択でき、 ログイン名とパスワードの組み合わせなど認証情報を入力できるグラフィカルなインタフェースを提供しています。

XDM がユーザに getty(8) (詳しくは Section 18.3.3 をご覧ください) と同じ機能を提供することを考えてみてください。 つまり、ディスプレイ上でシステムへのログインができ、 ユーザの代わりにセッションマネージャ (通常は X のウィンドウマネージャ) を起動することができるのです。 それから XDM は、 ユーザが作業を終えてディスプレイからログアウトする合図を送ってきてプログラムが終了するのを待ちます。 この時点で、XDM は次にログインするユーザのためにログイン画面や chooser 画面を表示できます。

### 5.6.2. XDM の使用

XDM を使用するには、 `x11/xdm` port をインストールしてください (最近の Xorg のバージョンでは、 デフォルトでインストールされません)。 XDM のデーモンプログラムは `/usr/local/bin/xdm` にあります。 このプログラムは `root` になればいつでも起動することができ、 ローカルマシン上のディスプレイの管理を始めます。 マシンをブートする際、いつも XDM を起動したい場合には、`/etc/ttys` にそのためのエントリを加えておくのが簡単です。 このファイルのフォーマットや使用方法についての詳細は Section 18.3.3.1 を参照してください。 デフォルトの `/etc/ttys` ファイルには仮想端末上で XDM デーモンを起動するための行:

    ttyv8  "/usr/local/bin/xdm -nodaemon"  xterm   off secure

があります。 このエントリはデフォルトでは無効になっており、有効にするには 5 番目のカラムを `off` から `on` にし、Section 18.3.3.6 の指示に従って init(8) を再起動します。 最初のカラムはこのプログラムが管理する端末の名前で、この場合 `ttyv8` になります。 つまり、XDM は 9 番目の仮想端末で起動されるということです。

### 5.6.3. XDM の設定

XDM の設定用ディレクトリは `/usr/local/lib/X11/xdm` です。 このディレクトリには XDM の振る舞いや見た目を変更するために用いられるいくつかのファイルがあります。 だいたいは以下のような感じです。

ファイル | 説明
--- | ---
`Xaccess` | クライアント認証のルールセット
`Xresources` | デフォルトの X リソース
`Xservers` | 管理すべきリモートやローカルのディスプレイのリスト
`Xsession` | デフォルトのログイン時のセッションスクリプト
`Xsetup_`* | ログインインタフェースの前にアプリケーションを起動するためのスクリプト
`xdm-config` | このマシンで動いているすべてのディスプレイのグローバルな設定
`xdm-errors` | サーバプログラムによって生成されるエラー
`xdm-pid` | 現在動いている XDM のプロセス ID

このディレクトリにはまた、XDM の動作中にデスクトップをセットアップするために用いられるスクリプトやプログラムがいくつかあります。 それぞれのファイルの目的を簡単に解説しましょう。 正確な文法や使い方は xdm(1) に記述されています。

デフォルトの設定では、単純な四角のログインウィンドウがあり、 そこにはマシンのホスト名が大きなフォントで表示され、 “Login:” と “Password:” のプロンプトがその下に表示されています。 XDM スクリーンの見ためや使い勝手を変えるにはここから始めるのがいいでしょう。

#### 5.6.3.1. Xaccess

XDM がコントロールするディスプレイに接続するためのプロトコルは X Display Manager Connection Protocol (XDMCP) と呼ばれます。 このファイルにはリモートのマシンからの XDMCP 接続をコントロールするためのルールセットが書かれます。 これは、`xdm-config` を変更してリモートからのコネクションを待ち受けるようにしない限り無視されます。 デフォルトでは、どのクライアントからの接続も拒否します。

#### 5.6.3.2. Xresources

これはディスプレイの chooser とログインスクリーン用の application-defaults ファイルです。 このファイルでログインプログラムの見た目を変更することができます。 フォーマットは X11 のドキュメントで記述されている app-defaults ファイルのものと同じです。

#### 5.6.3.3. Xservers

これは、chooser が選択肢として提供するリモートのディスプレイの一覧です。

#### 5.6.3.4. Xsession

XDM でログインした後に実行されるデフォルトのセッションスクリプトです。 通常、各ユーザは `~/.xsession` というカスタマイズしたセッションスクリプトを持っており、 こちらが優先されます。

#### 5.6.3.5. Xsetup_*

これらは chooser やログインインタフェースが表示される前に自動的に実行されます。 それぞれのディスプレイに対して、`Xsetup_` に続けてローカルのディスプレイ番号を付けた (たとえば `Xsetup_0`) 名前のついたスクリプトがあります。 典型的な使い方は `xconsole` のようなバックグラウンドで動かすプログラムを一つか二つ起動することです。

#### 5.6.3.6. xdm-config

app-defaults の書式で書かれた、 このインストレーションで管理されるすべてのディスプレイに適用される設定を保持しています。

#### 5.6.3.7. xdm-errors

このファイルには XDM が起動しようとしている X サーバからの出力が書き出されます。 XDM が起動しようとしているディスプレイがなんらかの理由でハングした場合、 このファイルのエラーメッセージを見てください。 そういったメッセージは各ユーザの `~/.xsession-errors` にもセッション毎に書き出されます。

### 5.6.4. ネットワークディスプレイサーバの起動

あるディスプレイサーバに他のクライアントが接続することができるようにするために、 アクセスコントロールのルールを編集し、 コネクションリスナを有効にする必要があります。 デフォルトでは保守的な設定になっています。 XDM がそういったコネクションを待ち受けるようにするためには `xdm-config` にある次の行をコメントアウトします。

    ! SECURITY: do not listen for XDMCP or Chooser requests
    ! Comment out this line if you want to manage X terminals with xdm
    DisplayManager.requestPort:     0

そして、XDM を再起動します。 app-defaults ファイルにおけるコメントは “!” であっていつものような “#” ではないことに注意してください。 アクセス制限はもっと厳しくしてもよいかもしれません。 `Xaccess` にある例を参考にしたり、詳細についてオンラインマニュアル xdm(1) を参照してください。

### 5.6.5. XDM の代わりになるもの

デフォルトの XDM に代わるものがいくつかあります。 一つは kdm (KDE に付属しています) はその一つであり、この章の後ろで解説します。 kdm ディスプレイマネージャは、 ログイン時にウィンドウマネージャを選ぶことができるのに加え、 見た目もかなり綺麗にしてくれます。

## 5.7. デスクトップ環境

寄稿: Valentino Vaschetto.

このセクションでは、FreeBSD 上の X で利用可能ないくつかのデスクトップ環境について解説します。 “デスクトップ環境” とは、 単なるウィンドウマネージャから KDE や GNOME といったような完全なデスクトップアプリケーションスイートまでカバーします。

### 5.7.1. GNOME

#### 5.7.1.1. GNOME について

GNOME はユーザフレンドリなデスクトップ環境で、 ユーザはコンピュータを簡単に使ったり設定したりできるようになります。 GNOME にはパネル (アプリケーションを起動したり状態を表示したりするもの)、 デスクトップ (データやアプリケーションが置かれる場所)、 標準的なデスクトップツールやアプリケーションのセット、 そしてアプリケーションが互いにうまくやり取りできるような仕組みが含まれています。 他の OS や環境に慣れている人でも GNOME の提供するグラフィック環境であれば心地よく感じるでしょう。 FreeBSD 上の GNOME に関するもっと詳しい情報は、 FreeBSD GNOME Project のウェブサイトで見ることができます。 ウェブサイトには、GNOME のインストール、設定、管理に関する十分分かりやすい FAQ もあります。

#### 5.7.1.2. GNOME のインストール

package や Ports Collection を利用してソフトウェアを簡単にインストールできます。

GNOME package をネットワークからインストールするには、 以下のようにするだけです。

    # pkg_add -r gnome2

GNOME をソースから構築する場合、 次のように ports ツリーを使いましょう。

    # cd /usr/ports/x11/gnome2
    # make install clean

GNOME がインストールできたら、 デフォルトのウィンドウマネージャの代わりに GNOME を起動するように X サーバに指示しなければなりません。

GNOME を起動する最も簡単な方法は、GNOME ディスプレイマネージャ GDM を使うことです。 GNOME デスクトップの一部としてインストールされる (しかし、デフォルトでは無効になっている) GDM は、 `/etc/rc.conf` に `gdm_enable="YES"` を追加すると有効になります。 再起動してログインすると、GNOME が自動的に起動します。

さらに、`/etc/rc.conf` ファイルに `gnome_enable="YES"` を追加すると、 GDM の起動時に GNOME のすべてのサービスを利用できるようになります。

GNOME は `.xinitrc` という名前のファイルを適切に設定することで、 コマンドラインから起動することもできます。 自分の `.xinitrc` が既にある場合には、ウィンドウマネージャを起動する行を /usr/local/bin/gnome-session を起動するように変更するだけです。 特にこのファイルを用意していない場合には、 次のようにすれば十分でしょう。

    % echo "/usr/local/bin/gnome-session" > ~/.xinitrc

次に、`startx` と入力すれば GNOME デスクトップ環境が起動します。

> Note: もし XDM のような古いディスプレイマネージャを使っているなら、 この方法ではうまくいきません。その代わり、実行可能な `.xsession` というファイルを作成し、 同じコマンドを起動するようにします。 そのためには、このファイルを編集してウィンドウマネージャを /usr/local/bin/gnome-session で置き換えます。

    % echo "#!/bin/sh" > ~/.xsession
    % echo "/usr/local/bin/gnome-session" >> ~/.xsession
    % chmod +x ~/.xsession

もう一つの方法は、 ログイン時にウィンドウマネージャを選択できるようにディスプレイマネージャを設定することです。 KDE の詳細についてのセクションで KDE のディスプレイマネージャである kdm を使ってどのようにすればいいのかを解説しています。

### 5.7.2. KDE

#### 5.7.2.1. KDE について

KDE は最近の簡単に使えるデスクトップ環境です。 KDE によりユーザは以下のようなメリットを亨受します。

- 美しい現代風のデスクトップ

- ネットワーク透過なデスクトップ

- KDE デスクトップやそのアプリケーションを使う際に、 ヘルプへのアクセスを便利で統一されたものにする統合されたヘルプシステム

- すべての KDE アプリケーションで統一された見ためや使い勝手

- 標準化されたメニュー、ツールバー、 キーバインディング、カラースキームなど

- 国際化: KDE は 40 を越える言語で利用可能

- 一元的で、首尾一貫した、ダイアログベースのデスクトップ設定

- 膨大な数の KDE アプリケーション

KDE には Konqueror と呼ばれるウェブブラウザも付属しており、これは UNIX システム上の他のウェブブラウザの強力な競争相手です。 KDE の詳細については KDE の ウェブサイト をご覧ください。 KDE に関する FreeBSD 特有の情報とリソースについては、 KDE on FreeBSD チーム のウェブサイトをご覧ください。

FreeBSD で利用できる KDE には 2 つのバージョンがあります。 バージョン 3 は、長い間広く使われ、安定しています。 バージョン 4 は、次世代のバージョンで、Ports Collection から利用できます。 これらを共存する形でインストールすることもできます。

#### 5.7.2.2. KDE のインストール

GNOME や他のデスクトップ環境とまったく同じように、 package や Ports Collection から簡単にインストールできます。

KDE3 package をネットワーク越しにインストールするには次のようにします。

    # pkg_add -r kde

KDE4 package をネットワーク越しにインストールするには次のようにします。

    # pkg_add -r kde4

pkg_add(1) は自動的にアプリケーションの最新版を取得します。

KDE3 をソースから構築するには、次のように ports ツリーを使いましょう。

    # cd /usr/ports/x11/kde3
    # make install clean

KDE4 をソースから構築するには、次のように ports ツリーを使いましょう。

    # cd /usr/ports/x11/kde4
    # make install clean

KDE がインストールできたら X サーバに、デフォルトのウィンドウマネージャの代わりにこのアプリケーションを立ち上げるように教えます。 `.xinitrc` ファイルを次のように編集しましょう。

KDE3 では、以下のように入力してください。

    % echo "exec startkde" > ~/.xinitrc

KDE4 では、以下のように入力してください。

    % echo "exec /usr/local/kde4/bin/startkde" > ~/.xinitrc

さぁ、これで `startx` でいつ X Window System を立ち上げても KDE がデスクトップになります。

XDM のようなディスプレイマネージャを使っている場合、 設定は少し異なります。代わりに `.xsession` ファイルを編集しましょう。 kdm 用の説明はこの章の後のほうにあります。

### 5.7.3. KDE の詳細について

さぁ、KDE のインストールができました。 ほとんどのことはヘルプページを見たりいろんなメニューをつつけばわかるでしょう。 Windows や Mac® のユーザにも簡単なはずです。

KDE の最も良いリファレンスはオンラインドキュメントです。 KDE には独自のウェブブラウザ Konqueror が付属していますし、 膨大な数の便利なアプリケーションや詳しいドキュメントもあります。 このセクションの残りではなんとなく使っているだけでは理解し難い技術的なところを解説します。

#### 5.7.3.1. KDE ディスプレイマネージャ

マルチユーザシステムの管理者であれば、 ユーザを迎えるにあたってグラフィカルなログインスクリーンが欲しいと思うかもしれません。 XDM は上で述べたようにそのために使えます。 しかしながら、KDE にはその代わりになる kdm が付いており、より魅力的な見た目で、 ログイン時のオプションもたくさんあります。特に、 (メニューを使って) ログイン後にどのデスクトップ環境 (KDE や GNOME など) を動かすかを簡単に選ぶこともできます。

kdm を有効にするには、`/etc/ttys` の項目 `ttyv8` を変更しなければなりません。 この行を次のようにします。

KDE3 では、次のようにします。

    ttyv8 "/usr/local/bin/kdm -nodaemon" xterm on secure

KDE4 では、次のようにします。

    ttyv8 "/usr/local/kde4/bin/kdm -nodaemon" xterm on secure

### 5.7.4. Xfce

#### 5.7.4.1. Xfce について

Xfce は GNOME で使われている GTK+ ツールキットをベースにしたデスクトップ環境ですが、 ずっと軽く、シンプルで効率的なデスクトップでありながら、 使用や設定が簡単なものを求める人向けです。 見ためは商用 UNIX システムが採用している CDE にかなり似ています。Xfce の機能をいくつか下に挙げておきます。

- シンプルで使いやすいデスクトップ

- マウスのドラッグアンドドロップなどですべての設定が可能

- CDE に似たメインパネルとメニューやアプレット、 アプリケーションランチャ

- 統合されたウィンドウマネージャ、ファイルマネージャ、 サウンドマネージャと GNOME 準拠のモジュールなど

- (GTK+ なので) テーマをサポート

- 速くて軽くて効率的: 古いマシンや遅いマシン、 メモリの限られたマシン向き

Xfce に関する詳しい情報は Xfce のウェブサイト で得られます。

#### 5.7.4.2. Xfce のインストール

(この文章を書いている時点で) Xfce のバイナリパッケージがあります。 インストールするにはただ次のようにタイプするだけです

    # pkg_add -r xfce4

また、Ports Collection を利用してソースから作ることも可能です

    # cd /usr/ports/x11-wm/xfce4
    # make install clean

次に X が起動した時に Xfce が起動されるように設定します。 次のようにしてください。

    % echo "/usr/local/bin/startxfce4" > ~/.xinitrc

次に X が起動する時 Xfce のデスクトップが立ち上がります。 上と同様に、XDM のようなディスプレイマネージャを使っている場合には GNOME のセクションに書いてあるのと同じように `.xsession` ファイルを作り、 `/usr/local/bin/startxfce4` を起動するようにします。 もしくは、kdm のセクションにあるようにディスプレイマネージャから Xfce を選ぶことができるように設定します。

# II. 日々の生活

第 1 部では基礎的なことがらを説明したので、 FreeBSD ハンドブックの第 2 部では FreeBSD でよく使われる機能について説明します。 各章の内容は以下のとおりです。

- ブラウザ、生産的なツール、ドキュメントビューアといった、 人気があって便利なデスクトップアプリケーションの紹介

- FreeBSD で利用可能なマルチメディアツールの紹介

- システムで特別な機能を有効にするために、 カスタムカーネルを構築する手順の説明

- デスクトップおよびネットワーク接続両方のプリンタの設定に関する、 印刷システムの詳細な説明

- FreeBSD システムで Linux アプリケーションを実行する方法

これらの章では、読み飛ばしを推奨しているものもあります。 これについてはそれぞれの章の始めにある概要に書かれています。

# Chapter 6. デスクトップアプリケーション

寄稿: Christophe Juniet.

## 6.1. この章では

FreeBSD では、Web ブラウザやワードプロセッサといった たくさんの種類のデスクトップアプリケーションを利用できます。 その多くは packages や Ports Collection を用いて導入できます。 新しいユーザの多くは、 デスクトップにこの種のアプリケーションがあることを期待しているでしょう。 この章では、人気の高いデスクトップアプリケーションを packages や Ports Collection から簡単にインストールする方法について説明します。

ports からプログラムをインストールする場合、 そのプログラムはソースからコンパイルされることに注意してください。 コンパイルする対象やマシンの性能にもよりますが、 この作業にはとても時間がかかることがあります。 ソースからコンパイルする時間がない場合には、 Ports Collection に収録されているほとんどのプログラムを、 あらかじめコンパイルされた packages からインストールできます。

FreeBSD における Linux バイナリ互換機能によって、Linux 用に開発された多くのアプリケーションを あなたのデスクトップでも利用できます。 どんな Linux アプリケーションをインストールする場合でも、 事前に Chapter 10 を読んでおくことをおすすめします。 Linux バイナリ互換機能を用いた port の多くは “linux-” からはじまる名前となっています。 whereis(1) などを使って特定の port を探す場合には、このことを思い出してください。 この章では、Linux アプリケーションをインストールする前に Linux バイナリ互換機能を有効にしてあることを前提とします。

この章では、以下の分野について説明します。

- Web ブラウザ (Firefox, Opera, Konqueror など)

- 生産的なアプリケーション (KOffice, AbiWord, GIMP, OpenOffice.org など)

- ドキュメントビューア (Acrobat Reader®, gv, Xpdf, GQview など)

- 財務管理ソフトウェア (GnuCash, Gnumeric, Abacus など)

この章を読む前に、以下のことを理解しておく必要があります。

- サードパーティ製ソフトウェアのインストール方法 (Chapter 4)

- Linux ソフトウェアのインストール方法 (Chapter 10)

マルチメディア環境を整える方法については Chapter 7 を、 電子メールを設定して使いたい場合には Chapter 20 を参照してください。

> 訳注: この文書は英語で書かれている原文をそのまま邦訳したものです。 必ずしも各アプリケーションで日本語が扱えるとは限らないことに注意してください。 日本語に対応したアプリケーションは、Ports Collection の japanese ディレクトリにあるかもしれません。

## 6.2. Web ブラウザ

FreeBSD では Web ブラウザは事前にインストールされていません。 そのかわり、Ports Collection の www ディレクトリには数多くの Web ブラウザ が用意されており、 すぐにインストールできます。ソースからコンパイルする時間がない場合 (ソースからのコンパイルは大変な時間がかかることがあります)、 多くのプログラムを packages からインストールできます。

KDE と GNOME では、はじめから HTML ブラウザが用意されています。 これらのデスクトップ環境を設定するための情報については Section 5.7 を参照してください。

軽快な Web ブラウザを探している場合には、Ports Collection から `www/dillo2`, `www/links`, `www/w3m` を試してみてください。

この節では次のアプリケーションについて説明します。

アプリケーション名 | 必要なリソース | port からのインストール | 実行に必要となる主な環境
--- | --- | --- | ---
Firefox | 中 | 重 | Gtk+
Opera | 少 | 軽 | FreeBSD 版と Linux 版を利用することができます。 Linux 版のバイナリを実行するには、 Linux バイナリ互換機能を有効にし、 linux-openmotif をインストールする必要があります。
Konqueror | 中 | 重 | KDE ライブラリ

### 6.2.1. Firefox

Firefox は、 先進的で無料かつオープンソースの安定したブラウザです。 FreeBSD に完全に対応しています。 標準によく準拠した HTML 表示エンジン、タブブラウジング、ポップアップブロック、 拡張性、高い安全性などが特徴です。 Firefox は Mozilla のコードベースから派生したブラウザです。

package をインストールするには以下のように入力してください。

    # pkg_add -r firefox

上の例では、Firefox 3.6 がインストールされます。 Firefox 3.5 を利用したい場合には、 かわりに以下のように入力してください。

    # pkg_add -r firefox35

ソースコードからコンパイルする方が好きなら、Ports Collection を使って以下のようにインストールすることもできます。

    # cd /usr/ports/www/firefox
    # make install clean

Firefox 3.5 を利用する場合は、 上のコマンドの `firefox` を `firefox35` に置き換えてください。

### 6.2.2. Firefox と Java™ プラグイン

> Note: 本節と次節では、Firefox があらかじめインストールされていることを前提とします。

> 現在 Java™ プラグインは、 Firefox 3.6 では動作しません。

FreeBSD Foundation は、Sun Microsystems 社から Java Runtime Environment (JRE™) と Java Development Kit (JDK™) の FreeBSD バイナリを配布するライセンスを獲得しています。 FreeBSD のバイナリパッケージは、FreeBSD Foundation のウェブサイトよりダウンロードできます。

Java を Firefox に追加するには、 まず `java/javavmwrapper` port をインストールしてください。 その後 http://www.freebsdfoundation.org/downloads/java.shtml から Diablo JRE package をダウンロードし、 pkg_add(1) を使ってインストールしてください。

ブラウザを起動し、ロケーションバーに `about:plugins` と入力して Enter を押してください。 インストールされているプラグイン一覧のページが表示されます。 Java プラグインが一覧に追加されているでしょう。 一覧にない場合は、各ユーザごとに以下のコマンドを実行してください。

    % ln -s /usr/local/diablo-jre1.6.0/plugin/i386/ns7/libjavaplugin_oji.so \
      $HOME/.mozilla/plugins/

もし、Diablo JDK package がインストールされているのであれば、かわりに以下を実行します。

    % ln -s /usr/local/diablo-jdk1.6.0/jre/plugin/i386/ns7/libjavaplugin_oji.so \
      $HOME/.mozilla/plugins/

その後、ブラウザを再起動してください。

> Note: 上に述べたコマンドは i386 アーキテクチャを仮定していますが、 amd64 の packages も利用できます。.

### 6.2.3. Firefox と Macromedia® Flash™ プラグイン

FreeBSD 用の Macromedia® Flash™ プラグインは提供されていません。 しかしながら、Linux バージョンのプラグインを実行するためのソフトウェアレイヤ (wrapper) が存在します。 この wrapper は、Adobe® Acrobat® プラグインや RealPlayer® プラグインなどにも対応しています。

使用している FreeBSD のバージョンによって必要な作業は異なります。

1. FreeBSD 7.X

   `www/nspluginwrapper` port をインストールします。 この port は、`emulators/linux_base-fc4` という大きな port を必要とします。

   次に、`www/linux-flashplugin9` port をインストールします。 この port は、FreeBSD 7.X において正常に動作する Flash 9.X をインストールします。

   > Note: FreeBSD 7.1-RELEASE より古い FreeBSD を使っている場合は、 かわりに `www/linux-flashplugin7` をインストールし、 以下の linprocfs(5) に関する説明は飛ばしてください。

2. FreeBSD 8.X

   `www/nspluginwrapper` port をインストールします。 この port は、`emulators/linux_base-f10` という大きな port を必要とします。

   次に、`www/linux-f10-flashplugin10` port をインストールします。 この port は、FreeBSD 8.X において正常に動作する Flash 10.X をインストールします。

   このバージョンでは、以下のように シンボリックリンクを作成する必要があります。

       # ln -s /usr/local/lib/npapi/linux-f10-flashplugin/libflashplayer.so \
         /usr/local/lib/browser_plugins/

使用している FreeBSD のバージョンに対して適切な Flash port をインストールした後は、 各ユーザごとに `nspluginwrapper` を使ってプラグインをインストールしてください。

    % nspluginwrapper -v -a -i

Flash アニメーションを再生したいのであれば、 Linux® プロセスファイルシステム linprocfs(5) を `/usr/compat/linux/proc` にマウントする必要があります。 以下のコマンドでマウントしてください。

    # mount -t linprocfs linproc /usr/compat/linux/proc

`/etc/fstab` に以下の行を追加すると、 起動時に自動的にマウントされます。

    linproc    /usr/compat/linux/proc  linprocfs   rw  0   0

その後、ブラウザを起動し、 ロケーションバーに `about:plugins` と入力して Enter を押してください。 現在利用可能なプラグインの一覧が表示されます。

### 6.2.4. Firefox と Swfdec Flash プラグイン

Swfdec は Flash アニメーションのデコードやレンダリングを行うライブラリです。 Swfdec-Mozilla は、Firefox ブラウザにおいて SWF ファイルを実行するためのプラグインで、Swfdec ライブラリを利用しています。 このライブラリは、現在でも盛んに開発されています。

もし、コンパイルできなかったり、コンパイルしたくない場合には、 ネットワークから package をダウンロードしてインストールしてください。

    # pkg_add -r swfdec-plugin

package を入手できない場合は、Ports Collection からコンパイルしてインストールしてください。

    # cd /usr/ports/www/swfdec-plugin
    # make install clean

その後、ブラウザを再起動してプラグインを有効にしてください。

### 6.2.5. Opera

Opera は、 機能満載で、標準規格に準拠した Web ブラウザです。 また、メールおよびニュースリーダや、IRC クライアント、 RSS/Atom フィードリーダ、その他いろいろなものが組み込まれています。 それにもかかわらず、Opera は比較的軽く、非常に速く動作します。 FreeBSD “ネイティブ”バージョンと、 Linux バイナリ互換機能によって動作するバージョンの 2 つがあります。

FreeBSD 版の Opera で Web を見るには、次の package をインストールします。

    # pkg_add -r opera

一部の FTP サイトでは、すべての packages は用意されていません。 以下のように入力することで、Opera を Ports Collection からインストールできます。

    # cd /usr/ports/www/opera
    # make install clean

Linux 版の Opera をインストールするには、上の例で `opera` を `linux-opera` に置き換えてください。 Adobe Acrobat Reader のように、Linux 版しか入手できないプラグインを利用したい状況では Linux 版が有用です。他のすべての点で、FreeBSD 版と Linux 版は同じように機能するでしょう。

### 6.2.6. Konqueror

Konqueror は KDE を構成するソフトウェアです。 ただし、KDE をインストールしなくても、 `x11/kdebase3` をインストールすることにより、単体で動作させることができます。 Konqueror はブラウザであると同時に、 ファイルマネージャおよびマルチメディアビューアの役割も果たします。

Konqueror にはプラグイン一式が用意されており、 `misc/konq-plugins` を利用してインストールできます。

Konqueror は Flash にも対応しています。 Konqueror に Flash を導入するための “How To” ガイドが http://freebsd.kde.org/howtos/konqueror-flash.php にあります。

## 6.3. 生産的なアプリケーション

生産的なアプリケーションということになると、 新しいユーザはしばしば魅力的なオフィススイートや 親しみのあるワードプロセッサを求めるでしょう。 デフォルトアプリケーションではありませんが、 KDE のような デスクトップ環境 はオフィススイートを提供しています。 FreeBSD は、デスクトップ環境にかかわらず 必要なものはすべて提供しています。

この節では次のアプリケーションについて説明します。

アプリケーション名 | 必要なリソース | port からのインストール | 実行に必要となる主な環境
--- | --- | --- | ---
KOffice | 少 | 重 | KDE
AbiWord | 少 | 軽 | Gtk+ または GNOME
Gimp | 少 | 重 | Gtk+
OpenOffice.org | 多 | 莫大 | JDK, Mozilla

### 6.3.1. KOffice

KDE コミュニティはデスクトップ環境とともに、 KDE 環境以外でも利用可能な オフィススイートを提供しています。 このオフィススイートには、他のオフィススイートと同様に、 4 つの標準的なアプリケーションが含まれています。 KWord はワードプロセッサ、 KSpread は表計算ソフトウェア、 KPresenter はプレゼンテーションソフトウェア、そして Kontour は図形描画ソフトウェアです。

最新の KOffice をインストールする場合には、事前に KDE を最新のバージョンにしておいてください。

KOffice を package からインストールするには次のようにします。

    # pkg_add -r koffice

package を入手できない場合でも Ports Collection を利用できます。 たとえば、KDE3 の KOffice をインストールするには次のようにします。

    # cd /usr/ports/editors/koffice-kde3
    # make install clean

### 6.3.2. AbiWord

AbiWord は、Microsoft Word のような見た目や操作感を持つフリーのワードプロセッサです。 書類や手紙、報告書、メモなどを書くのに適しています。 非常に速く、多くの特徴があり、非常にユーザフレンドリです。

AbiWord は、 Microsoft `.doc` のような独自仕様を含む多くの形式のファイルを読み書きできます。

次のようにして AbiWord を package からインストールできます。

    # pkg_add -r abiword

package を入手できない場合でも Ports Collection を利用できます。 おそらく Ports Collection の方が新しいでしょう。 次のようにしてインストールします。

    # cd /usr/ports/editors/abiword
    # make install clean

### 6.3.3. GIMP

画像を描画したり写真を修正することに関して、 GIMP はとても洗練された編集プログラムです。 単純にお絵かきソフトウェアとして使うこともできますし、 高品質な写真の加工ツールとしても使えます。 多くのプラグインに対応しており、 スクリプトインタフェースを特徴としています。 GIMP はさまざまな形式のファイルを読み書きでき、 スキャナやタブレットとのインタフェースにも対応しています。

次のコマンドにより package をインストールできます。

    # pkg_add -r gimp

利用している FTP サイトにこの package がない場合でも、 Ports Collection からインストールできます。 Ports Collection の graphics ディレクトリには Gimp マニュアルもあります。 インストールする方法は次のとおりです。

    # cd /usr/ports/graphics/gimp
    # make install clean
    # cd /usr/ports/graphics/gimp-manual-pdf
    # make install clean

> Note: Ports Collection の graphics ディレクトリには GIMP の開発版である `graphics/gimp-devel` があります。 Gimp マニュアル の HTML バージョンは `graphics/gimp-manual-html` にあります。

### 6.3.4. OpenOffice.org

OpenOffice.org は、完全なオフィススイートに必須のアプリケーション (ワードプロセッサ、表計算ソフトウェア、 プレゼンテーションソフトウェア、そして図形描画ソフトウェア) をひととおり揃えています。 ユーザインタフェースは他のオフィススイートと似ており、 広く用いられているさまざまな形式のファイルを読み書きできます。 インタフェース、スペルチェッカ、辞書は国際化されており、 多くの言語で利用できます。

OpenOffice.org のワードプロセッサは、ネイティブのファイル形式に XML を採用することで ポータビリティや柔軟性を高めています。 表計算ソフトウェアにはマクロ機能があり、 外部データベースと接続することもできます。 OpenOffice.org は、すでに Windows, Solaris™, Linux, FreeBSD, Mac OS X において安定してネイティブに動作しています。 OpenOffice.org についての詳しい情報は、 OpenOffice.org web サイト をご覧ください。また、 FreeBSD OpenOffice.org プロジェクトチーム の Web サイトから、FreeBSD 特有の情報や packages を直接取得することもできます。

OpenOffice.org をインストールするには次のようにします。

    # pkg_add -r openoffice.org

> Note: FreeBSD のリリース版を使用している場合、この操作は動作します。 それ以外の版を使用している場合、FreeBSD OpenOffice.org Porting Team の web サイトから適切なパッケージをダウンロードして、 pkg_add(1) を使用してインストールしてください。 ここからはリリース版と開発版の両方がダウンロードできます。

package をインストールしたら、以下のコマンドを入力するだけで OpenOffice.org が起動します。

    % openoffice.org

> Note: 初回起動時に、いくつかの質問が表示され、 ホームディレクトリに `.openoffice.org` フォルダが作成されます。

OpenOffice.org の packages が利用できない場合でも、port を利用する方法があります。 しかしながら、コンパイルするには大きなディスクスペースと 本当にかなり長い時間を必要とすることを心に留めておかなければなりません。

    # cd /usr/ports/editors/openoffice.org-3
     # make install clean

> Note: 地域化されたバージョンをビルドしたいのなら、 上記コマンドの代わりに以下のコマンドを実行して下さい。

>     # make LOCALIZED_LANG=your_language install clean

> `your_language` を正しい言語 ISO コードに置き換えてください。 サポートされている言語コードは、同じ port ディレクトリにある `files/Makefile.localized` ファイルに書かれています。

インストールが終わったら、以下のコマンドで OpenOffice.org を起動することができます。

    % openoffice.org

## 6.4. ドキュメントビューア

UNIX の出現以降、いくつかの新しい文書形式がよく使われるようになりました。 基本システムには、それらの文書が要求するビューアがないかもしれません。 この節ではそれらのドキュメントビューアのインストール方法について説明します。

この節では次のアプリケーションについて説明します。

アプリケーション名 | 必要なリソース | port からのインストール | 実行に必要になる主な環境
--- | --- | --- | ---
Acrobat Reader | 少 | 軽 | Linux バイナリ互換機能
gv | 少 | 軽 | Xaw3d
Xpdf | 少 | 軽 | FreeType
GQview | 少 | 軽 | Gtk+ または GNOME

### 6.4.1. Acrobat Reader®

今や多くの文書が “Portable Document Format” を意味する PDF ファイル形式で配布されています。 PDF ファイルを読むのに推奨されるビューアの一つが Acrobat Reader で、 Adobe から Linux 向けにリリースが提供されています。 FreeBSD は Linux バイナリを実行できるので、 FreeBSD でもこのアプリケーションを利用できます。

Ports Collection から Acrobat Reader 8 をインストールするには次のようにします。

    # cd /usr/ports/print/acroread8
    # make install clean

ライセンスの制限のため、パッケージを利用することはできません。

### 6.4.2. gv

gv は PostScript と PDF のビューアです。これはもともと ghostview をベースとしていますが、 Xaw3d ライブラリによってより良い外観になっています。 動作が速くて、ユーザインタフェースもシンプルです。 gv は用紙の向きやサイズ、 拡大縮小、アンチエイリアスなどたくさんの機能を持っています。 ほとんどすべての操作はキーボードとマウスの両方で行なうことができます。

package から gv をインストールするには次のようにします。

    # pkg_add -r gv

package が手に入らない場合には Ports Collection を使ってください。

    # cd /usr/ports/print/gv
    # make install clean

### 6.4.3. Xpdf

FreeBSD 向けの軽い PDF ビューアを使いたいのなら、 Xpdf を試してみてください。 Xpdf は軽くて効率的なビューアです。 とても少ないリソースでも動作し、とても安定しています。 標準の X フォントを利用し、 Motif, その他の X ツールキットを必要としません。

Xpdf の package をインストールするには次のコマンドを入力します。

    # pkg_add -r xpdf

package を入手できない場合や、 Ports Collection を利用したい場合には次のようにしてください。

    # cd /usr/ports/graphics/xpdf
    # make install clean

インストールが完了したら Xpdf を起動できます。 メニューを表示するにはマウスの右ボタンを押してください。

### 6.4.4. GQview

GQview は画像管理ソフトウェアです。 クリックひとつで画像ファイルを開いたり、外部エディタを起動したり、 サムネイル画像を作成したり、そのほかにもいろいろできます。 また、スライドショーや基本的なファイル操作機能も備えています。 画像のコレクションを管理でき、重複したファイルも簡単に見つけられます。 GQview は全画面表示もでき、 国際化にも対応しています。

GQview の package をインストールするには次のコマンドを入力します。

    # pkg_add -r gqview

package を入手できない場合や、 Ports Collection を利用したい場合には次のようにしてください。

    # cd /usr/ports/graphics/gqview
    # make install clean

## 6.5. 財務管理ソフトウェア

FreeBSD デスクトップで個人的な財務管理ができるように、 強力で簡単に使えるアプリケーションが用意されています。 それらのアプリケーションの中には Quicken® や Excel などの広く行き渡った形式のファイルと互換性があるものもあります。

この節では次のアプリケーションについて説明します。

アプリケーション名 | 必要なリソース | port からのインストール | 実行に必要になる主な環境
--- | --- | --- | ---
GnuCash | 少 | 重 | GNOME
Gnumeric | 少 | 重 | GNOME
Abacus | 少 | 軽 | Tcl/Tk
KMyMoney | 少 | 重 | KDE

### 6.5.1. GnuCash

GnuCash は、 GNOME の一部で、 使いやすくかつ強力なアプリケーションとしてエンドユーザに提供されています。 GnuCash を使えば、 収入や支出、銀行口座、あるいは株を管理できます。 直観的なインタフェースを特徴としていますが、 非常に高度な機能も提供しています。

GnuCash は洗練された登録機能、 階層構造の勘定システム、多くのキーボードショートカット、 自動補完機能を提供しています。 単一のトランザクションをより小さな要素に分解できます。 GnuCash は、 Quicken の QIF ファイルの読み込みやマージができます。 また、国際的な日付および通貨形式も扱えます。

GnuCash をインストールするには次のようにします。

    # pkg_add -r gnucash

package が手に入らないならば、Ports Collection を使ってください。

    # cd /usr/ports/finance/gnucash
    # make install clean

### 6.5.2. Gnumeric

Gnumeric は、 GNOME デスクトップ環境に含まれている表計算ソフトウェアです。 セルの書式に従ってユーザの入力を自動的に “推測”する便利な機能や、 多くのシーケンスに対する自動補完機能があります。 Excel, Lotus 1-2-3, Quattro Pro といった広く行き渡っている多くの形式のファイルを読みこめます。 Gnumeric は、グラフ描画ソフトウェアの `math/guppi` を介してグラフ機能を提供しています。 多くの関数を内蔵しており、 数値、通貨、日付、時間などのよく使うセルの書式が利用できます。

package から Gnumeric をインストールするには次のように入力します。

    # pkg_add -r gnumeric

package が手に入らないならば、Ports Collection を使ってください。

    # cd /usr/ports/math/gnumeric
    # make install clean

### 6.5.3. Abacus

Abacus は、軽くて使いやすい表計算ソフトウェアです。 統計、財務、数学などの分野で 役にたつ多くの関数を内蔵しています。 Abacus は Excel 形式のファイルを読み書きでき、 PostScript 形式のファイルも作成できます。

package から Abacus をインストールするには次のようにします。

    # pkg_add -r abacus

package が手に入らないならば、Ports Collection を使ってください。

    # cd /usr/ports/deskutils/abacus
    # make install clean

### 6.5.4. KMyMoney

KMyMoney は、 KDE の個人用財務管理ソフトウェアです。 商用の個人用財務管理ソフトウェアに見られる機能を取り入れ、 提供することを目指しています。 また、使いやすい複式簿記機能も特徴です。 KMyMoney は標準の Quicken Interchange Format (QIF) ファイルをインポート可能で、 投資履歴や複数通貨の取扱い、財政状況のレポートを提供します。 また、プラグインを用いることにより OFX のインポートもできます。

package から KMyMoney をインストールするには次のようにします。

    # pkg_add -r kmymoney2

package が手に入らない場合は、Ports Collection を使ってください。

    # cd /usr/ports/finance/kmymoney2
    # make install clean

## 6.6. まとめ

FreeBSD はその性能や安定性によって インターネットサービスプロバイダに人気がある一方で、 日常のデスクトップでの用途にも完全に対応しています。 数千のアプリケーションが packages や ports から利用できます。 これらによりあなたのニーズを完全に満たすデスクトップを構築できます。

以下は、この章で説明した デスクトップアプリケーションの一覧です。

アプリケーション名 | package 名 | port 名
--- | --- | ---
Opera | `opera` | `www/opera`
Firefox | `firefox` | `www/firefox`
KOffice | `koffice-kde3` | `editors/koffice-kde3`
AbiWord | `abiword` | `editors/abiword`
GIMP | `gimp` | `graphics/gimp`
OpenOffice.org | `openoffice` | `editors/openoffice.org-3`
Acrobat Reader | `acroread` | `print/acroread8`
gv | `gv` | `print/gv`
Xpdf | `xpdf` | `graphics/xpdf`
GQview | `gqview` | `graphics/gqview`
GnuCash | `gnucash` | `finance/gnucash`
Gnumeric | `gnumeric` | `math/gnumeric`
Abacus | `abacus` | `deskutils/abacus`
KMyMoney | `kmymoney2` | `finance/kmymoney2`

# Chapter 7. マルチメディア

編集: Ross Lippert.

## 7.1. この章では

FreeBSD は数多くの種類のサウンドカードに対応しており、 コンピュータで原音に忠実な出力を楽しむことができます。 これには録音機能と、MPEG Layer 3 Audio (MP3) や WAV, Ogg Vorbis などをはじめとした多くの形式の音楽の再生機能が含まれます。 加えて FreeBSD の Ports Collection には、録音した音楽を 編集したり、音響効果を加えたり、接続された MIDI 機器を制御するためのアプリケーションがあります。

多くの試みによって、FreeBSD ではビデオファイルおよび DVD の 再生ができるようになりました。さまざまなビデオメディアをエンコード、 変換、再生するアプリケーションの数は、 音声用のアプリケーションほど充実していません。 この文書を執筆している時点では、たとえば `audio/sox` のようなファイル形式を変換するためのすぐれたアプリケーションは Ports Collection にありません。しかしながら、 この分野のソフトウェアの状況は急速に変わりつつあります。

この章ではサウンドカードを設定するために必要な方法を説明します (ただし、高音質で再生するためには若干の微調整が必要かもしれません)。 ビデオカードのハードウェアに関する問題は、 X11 (Chapter 5) のインストールと設定においてすでに扱いましたので、 そちらをご覧ください。

この章を読むと、以下のことがわかります。

- サウンドカードを認識させるためにシステムを設定する方法

- サウンドカードがうまく動作しているかどうかテストする方法

- サウンドの設定に関するトラブルシューティング

- MP3 およびその他の形式の音声を再生、エンコードする方法

- X サーバで どのようにビデオに対応しているか

- ビデオを再生、エンコードするのに役に立つ ports

- DVD の `.mpg` ファイルおよび `.avi` ファイルを再生する方法

- CD および DVD の情報を抽出する方法

- TV カードの設定方法

- 画像スキャナの設定方法

この章を読む前に、以下のことを理解しておく必要があります。

- 新しいカーネルを設定してインストールする方法 (Chapter 8)

> Warningオーディオ CD を mount(8) でマウントしようとすると、少なくともエラーになります。 最悪の場合、カーネルパニックが発生するでしょう。 これらのメディアは通常の ISO ファイルシステムとは異なり、 特別なエンコードが施されているからです。

## 7.2. サウンドカードの設定

寄稿: Moses Moore. FreeBSD 5.X のための再構成: Marc Fonvieille.

### 7.2.1. システムを設定する

設定をはじめる前に、あなたが持っているカードのモデル、 そのカードが使用しているチップ、そして PCI, ISA どちらのカードなのかを確認する必要があります。 FreeBSD は PCI および ISA の両方のカードに幅広く対応しています。 使用しているカードが対応しているかどうかは、 ハードウェアノート の対応オーディオデバイスの一覧を調べてください。 このハードウェアノートには、カードに対してどのドライバを利用すればよいか についても言及されています。

サウンドデバイスを使うために、 適切なデバイスドライバを読み込まなければいけません。 これには二つの方法のどちらかでできるでしょう。 もっとも簡単な方法は kldload(8) を使ってサウンドカードのカーネルモジュールを単に読み込むことです。 次のコマンドで実現できます。

    # kldload snd_emu10k1

または `/boot/loader.conf` ファイルにこのような適切な行を加えて実現することもできます。

    snd_emu10k1_load="YES"

以上は Creative SoundBlaster® Live! サウンドカードの例です。 他に利用可能な読み込み可能なサウンドモジュールは `/boot/defaults/loader.conf` に記載されています。 どのドライバを利用すればいいか確かでなければ、 `snd_driver` モジュールを読み込んでみてください。

    # kldload snd_driver

`snd_driver` モジュールは、 一般に使用されるカードに対応したドライバをまとめて一度に読み込む メタドライバです。このドライバを使用すれば、 速やかに正しいドライバを探し出すことができるでしょう。 `/boot/loader.conf` ファイルを使用して、 すべてのサウンドドライバを読み込むこともできます。

`snd_driver` メタドライバの読み込み後に、 どのドライバがサウンドカードに選択されたのかを知りたいのなら `cat /dev/sndstat` コマンドで `/dev/sndstat` ファイルを調べてください。

二つ目の方法は、 サウンドカードのドライバをカーネルへ静的に組み込むことです。 以下の節では、この方法でハードウェアを対応させる方法を説明します。 カーネル再構築の詳細は Chapter 8 を参照してください。

#### 7.2.1.1. サウンドに対応したカスタムカーネルを設定する

はじめに、オーディオフレームワークドライバ sound(4) をカーネルに追加します。 カーネルコンフィグレーションファイルに以下の行を追加してください。

    device sound

次に、サウンドカードに対応したドライバを追加します。 それには、どのドライバがカードに対応しているかを知る必要があります。 使用しているカードに対する正しいドライバを決定するために、 ハードウェアノート の対応オーディオデバイスの一覧を調べてください。 たとえば、Creative SoundBlaster Live! サウンドカードは snd_emu10k1(4) ドライバが対応しています。 このカードを使用するためには、カーネルコンフィグレーションファイルに 以下の行を追加してください。

    device snd_emu10k1

ドライバのマニュアルページを読んで、 追加すべき構文を調べてください。 対応しているすべてのサウンドドライバに関する カーネルコンフィグレーションの具体的な構文は、 `/usr/src/sys/conf/NOTES` にもあります。

すべての PnP 非対応の ISA カードに当てはまるように、 PnP 非対応の ISA サウンドカードでは、 カーネルにカードが使用する資源 (IRQ, I/O ポートなど) を明示的に指定する必要があるかもしれません。 この場合は、`/boot/device.hints` ファイルを使用してください。 システムの起動時に、loader(8) はこのファイルを読み、設定情報をカーネルに渡します。 たとえば、PnP 非対応の古い Creative SoundBlaster 16 (ISA 接続) には `snd_sb16` とともに snd_sbc(4) ドライバを使用します。 このカードを使用する場合には、カーネルコンフィグレーションファイルに 以下の行を追加すると同時に、

    device snd_sbc
    device snd_sb16

`/boot/device.hints` ファイルに以下のエントリを追加してください。

    hint.sbc.0.at="isa"
    hint.sbc.0.port="0x220"
    hint.sbc.0.irq="5"
    hint.sbc.0.drq="1"
    hint.sbc.0.flags="0x15"

この例では、 I/O ポートに `0x220` を、 IRQ に `5` を使用します。

`/boot/device.hints` ファイルに用いるべき構文は、 sound(4) ドライバのマニュアルページ、および、 各ドライバのマニュアルページに記載されています。

初期設定は以上の通りです。 カードを使用する状況によっては、 IRQ やその他の設定を変更する必要があるかもしれません。 このカードについての詳細は、 snd_sbc(4) マニュアルページをご覧ください。

### 7.2.2. サウンドカードのテスト

カーネルを変更して再起動するか、必要となるモジュールを読み込むと、 システムのメッセージバッファ (dmesg(8)) にサウンドカードが認識されたことが示されます。 たとえば、次のようなメッセージが出力されます。

    pcm0: <Intel ICH3 (82801CA)> port 0xdc80-0xdcbf,0xd800-0xd8ff irq 5 at device 31.5 on pci0
    pcm0: [GIANT-LOCKED]
    pcm0: <Cirrus Logic CS4205 AC97 Codec>

サウンドカードの状態は、`/dev/sndstat` ファイルを使用して確認することができます。

    # cat /dev/sndstat
    FreeBSD Audio Driver (newpcm)
    Installed devices:
    pcm0: <Intel ICH3 (82801CA)> at io 0xd800, 0xdc80 irq 5 bufsz 16384
    kld snd_ich (1p/2r/0v channels duplex default)

この出力はシステムによって異なるでしょう。 `pcm` デバイスがなければ、 今までの手順を振り返ってみてください。 カーネルコンフィグレーションファイルをもう一度見直して、 正しいデバイスドライバを選択しているかどうか確認してください。 トラブルシューティングは Section 7.2.2.1 を参照してください。

すべてうまくいけば、サウンドカードが機能するでしょう。 CD-ROM または DVD-ROM ドライブのオーディオ出力端子がサウンドカードと適切に接続されていれば、 cdcontrol(1) を使ってドライブ内の CD を再生できます。

    % cdcontrol -f /dev/acd0 play 1

`audio/workman` のように、よりよいインタフェースを提供する さまざまなアプリケーションがあります。 MP3 オーディオファイルを聴くために `audio/mpg123` のようなアプリケーションをインストールしようと思うかもしれません。

手っ取り早くカードをテストするには、 `/dev/dsp` デバイスにデータを送ってみてください。 たとえば、以下のようにします。

    % cat filename > /dev/dsp

ここで ``filename`` はどんなファイルでも構いません。 このコマンドラインを実行すると雑音が発生するはずです。 これにより、サウンドカードが実際に動作していることを確認できます。

サウンドカードのミキサレベルは mixer(8) コマンドで変更することができます。 詳細は mixer(8) マニュアルページをご覧ください。

#### 7.2.2.1. よくある問題

エラー | 解決方法
--- | ---
“`sb_dspwr(XX) timed out`” | 使用する I/O ポートが適切に設定されていません。
“`bad irq XX`” | 使用する IRQ が正しく設定されていません。 サウンドカードの IRQ と設定した IRQ が同じかどうか確かめてください。
“`xxx: gus pcm not attached, out of memory`” | デバイスを使用するのに 十分なメモリを確保できません。
“`xxx: can't open /dev/dsp!`” | `fstat | grep dsp` を使って、他のアプリケーションがデバイスを 使用しているか調べてください。 注目すべきトラブルメーカは esound と KDE のサウンド機能です。

### 7.2.3. 複数音源の利用

寄稿: Munish Chopra.

特定のアプリケーションとのサウンドデバイスの共用に対応していない時、 esound または artsd のように 同時に再生することのできる音源を複数実装していることは、 多くの場合望ましいことです。

FreeBSD では、 仮想サウンドチャネル を使ってこれを実現でき、sysctl(8) で設定できます。 仮想チャネルはカーネル内でサウンドを合成することにより、 サウンドカードの再生を多重化することができます。

仮想チャネルの数を決めるのに二つの sysctl 変数を設定できます。 `root` ユーザで以下のようにします。

    # sysctl dev.pcm.0.play.vchans=4
    # sysctl dev.pcm.0.rec.vchans=4
    # sysctl hw.snd.maxautovchans=4

上記の例では四つの仮想チャネルを設定しています。 これは通常利用する上で十分実用的な数です。 `dev.pcm.0.play.vchans=4` と `dev.pcm.0.rec.vchans=4` は、 `pcm0` が再生や録音のために持っている仮想チャネルの数で、 一度デバイスが取り付けられると設定できます。 `hw.snd.maxautovchans` は、 kldload(8) を用いて認識された新しいデバイスの仮想チャネル数です。 `pcm` モジュールはハードウェアドライバとは独立して読み込むことができるので、 後でどんなにデバイスを認識しても `hw.snd.maxautovchans` は仮想チャネルを格納できます。 より詳細な情報については pcm(4) のマニュアルページを参照してください。

> Note: デバイスを使用しているときに 仮想チャンネルの数を変更することはできません。 まず、ミュージックプレーヤやサウンドデーモンといった デバイスを使用しているすべてのプログラムを終了してください。

devfs(5) を使用していないのなら、 利用するアプリケーションに `/dev/dsp0`.`x` を指定しなければならないでしょう。 上記の例のように `dev.pcm.0.rec.vchans` を 4 に設定すると `x` は 0 から 3 となります。 devfs(5) を使用しているシステムでは、 `/dev/dsp0` を必要とするプログラムが意識しなくてもこれらが自動的に設定されます。

### 7.2.4. ミキサチャネルの初期値を設定する

寄稿: Josef El-Rayes.

各ミキサチャネルの初期値は pcm(4) ドライバのソースにハードコーディングされています。 起動時に記録されていた値をミキサに設定する さまざまなアプリケーションやデーモンがありますが、 あまりよい解決方法ではありません。 適切な値を `/boot/device.hints` ファイルに記述することにより、 ドライバレベルでミキサの初期値を設定することができます。 たとえば、以下のような行を追加します。

    hint.pcm.0.vol="50"

この例では、pcm(4) が読み込まれたと同時に、 ボリュームチャネルの初期値を 50 に設定します。

## 7.3. MP3 オーディオ

寄稿: Chern Lee.

MP3 (MPEG Layer 3 Audio) は CD に匹敵する音質でサウンドを再生できます。あなたの FreeBSD ワークステーションにこのプレイヤをインストールしない理由はないでしょう。

### 7.3.1. MP3 プレイヤ

XMMS (X Multimedia System) は とても人気のある X11 ベースの MP3 プレイヤです。 XMMS のグラフィカルインタフェースは Nullsoft の Winamp とほとんど同一なので、Winamp のスキンを使うことができます。 XMMS はネイティブプラグインにも対応しています。

XMMS は `multimedia/xmms` の port または package からインストールできます。

XMMS のプレイリスト、グラフィックイコライザそしてその他のインタフェースは 直感的です。 Winamp を使いなれている人は 簡単に XMMS を使えるでしょう。

`audio/mpg123` はコマンドライン上の代替となる MP3 プレイヤの port です。

mpg123 はサウンドデバイスと MP3 ファイルを指定して実行できます。 `/dev/dsp1.0` デバイスを使用して MP3 ファイル `Foobar-GreatestHits.mp3` を再生するのであれば、次のように実行してください。

    # mpg123 -a /dev/dsp1.0 Foobar-GreatestHits.mp3
    High Performance MPEG 1.0/2.0/2.5 Audio Player for Layer 1, 2 and 3.
    Version 0.59r (1999/Jun/15). Written and copyrights by Michael Hipp.
    Uses code from various people. See 'README' for more!
    THIS SOFTWARE COMES WITH ABSOLUTELY NO WARRANTY! USE AT YOUR OWN RISK!

    Playing MPEG stream from Foobar-GreatestHits.mp3 ...
    MPEG 1.0 layer III, 128 kbit/s, 44100 Hz joint-stereo

### 7.3.2. CD 音声トラックの抽出

CD 全体または CD トラックを MP3 に変換する前に、CD 上のオーディオデータをハードディスク上に抽出する必要があります。 これには raw CDDA (CD Digital Audio) データを WAV ファイルにコピーします。

`sysutils/cdrtools` スイートの一部である `cdda2wav` ツールは CD からオーディオデータを抽出したり、 情報を関係づけるのに使われます。

CD をドライブにいれて次のコマンドを (`root`で) 実行して、 CD 全体を (トラックごとに) 個々の WAV ファイルに抽出できます。

    # cdda2wav -D 0,1,0 -B

cdda2wav は ATAPI (IDE) CDROM ドライブにも対応しています。 IDE ドライブから抽出するには、 SCSI ユニット番号をデバイス名に置き換えて指定します。 たとえば IDE ドライブから七番目のトラックを抽出するには、 次のようにします。

    # cdda2wav -D /dev/acd0 -t 7

`-D `0,1,0`` は SCSI デバイス `0,1,0` を表します。 これは `cdrecord -scanbus` の出力に一致します。

個々のトラックを抽出するには、 次のように `-t` オプションを使用します。

    # cdda2wav -D 0,1,0 -t 7

上記の例はオーディオ CDROM の七番目のトラックを抽出します。 範囲を指定して、 たとえば一番目から七番目のトラックまで抽出したい場合、 次のようにします。

    # cdda2wav -D 0,1,0 -t 1+7

dd(1) ユーティリティも ATAPI ドライブ上のオーディオトラックを展開するのに使われます。 何ができるか詳しいことは オーディオ CD の複製について Section 15.5.5 を参照してください。

### 7.3.3. MP3 のエンコード

現在、一般に好まれている MP3 エンコーダは lame です。 lame は Ports Collection の `audio/lame` に収録されています。

次のコマンドを実行すると、抽出した WAV ファイル ``audio01.wav`` を使って ``audio01.mp3`` に変換します。

    # lame -h -b 128 \
    --tt "曲名" \
    --ta "アーティスト名" \
    --tl "アルバム名" \
    --ty "年" \
    --tc "コメント" \
    --tg "ジャンル" \
    audio01.wav audio01.mp3

128 kbits が標準のビットレートのようです。 多くの人はさらに高音質の 160 kbits または 192 kbits を好むでしょう。 ビットレートが高くなるにつれて作成される MP3 ファイルは多くのディスク領域を消費しますが、より高音質となります。 `-h` オプションを指定すると “低速高品質” モードとなります。 `--t` ではじまるオプションは ID3 タグを設定します。 このタグにはたいてい曲の情報が含まれており、 MP3 ファイルに格納されます。 lame のマニュアルを参照すれば他のオプションが見つかるでしょう。

### 7.3.4. MP3 のデコード

MP3 からオーディオ CD を作成するには、 MP3 形式を非圧縮 WAV 形式に変換しなければなりません。 XMMS と mpg123 の両方が MP3 から非圧縮ファイル形式への出力に対応しています。

XMMS でディスクへ書き出す方法は次の通りです。

1. XMMS を起動します。

2. 右クリックで XMMS メニューを表示します。

3. `Options` から `Preference` を選択します。

4. Output Plugin を “Disk Writer Plugin” に変更します。

5. `Configure` を押します。

6. 非圧縮ファイルを書き出すディレクトリを入力 (または選択) します。

7. 普段通り XMMS へ MP3 ファイルを読み込みます。 音量は 100% で イコライザの設定はオフにします。

8. `Play` を押します-- XMMS は MP3 を再生しているかのように表示しますが、 音声はきこえません。 実際には MP3 をファイルに出力しています。

9. 再び MP3 を聴けるように Output Plugin を以前のように元に戻すのを忘れないでください。

mpg123 で標準出力へ書き出す方法は次の通りです。

1. `mpg123 -s `audio01.mp3` > `audio01.pcm`` を実行します。

XMMS は WAV 形式でファイルに書き出しますが、 mpg123 は MP3 を PCM オーディオデータに変換します。 両形式は cdrecord を使ってオーディオ CD を作成するのに利用することができます。 burncd(8) を使う場合は raw PCM データが必要です。 WAV ファイルを使用する場合、 それぞれのトラックの先頭に小さなノイズが入るのに気づくでしょう。 これは WAV ファイルのヘッダ情報です。 SoX (`audio/sox` の port または package からインストールできます) を使うと簡単に WAV ファイルのヘッダ情報を削除できます。

    % sox -t wav -r 44100 -s -w -c 2 track.wav track.raw

FreeBSD での CD 作成の詳しい情報は Section 15.5 を参照してください。

## 7.4. ビデオ再生

寄稿: Ross Lippert.

ビデオ再生は今まさに成長中の新しいアプリケーション分野です。 辛抱強くしてください。 音声のようにすべてが順調にいくとは限りません。

設定をはじめる前に、あなたが持っているビデオカードのモデル、 そのカードが使用しているチップを確認する必要があります。 Xorg および XFree86 はさまざまなビデオカードに対応していますが、 ビデオ再生に申し分のない性能を発揮できるカードはわずかです。 あなたのビデオカードの利用している X サーバが対応している拡張機能のリストを得るには、 X11 を実行中に xdpyinfo(1) コマンドを実行してください。

さまざまなプレイヤやオプションを試すのに、 テストファイルとして小さな MPEG ファイルを用意しておくのはよい考えです。 いくつかの DVD プレイヤは DVD メディアを `/dev/dvd` として 初期設定しているか、ハードコーディングされているので、 次のように適切なデバイスにシンボリックリンクを張っておくと便利かもしれません。

    # ln -sf /dev/acd0 /dev/dvd
    # ln -sf /dev/acd0 /dev/rdvd

devfs(5) の仕様により、 このように手動で作成されたリンクは再起動すると消えてしまいます。 システムの起動時にこれらのシンボリックリンクを自動的に作成するには、 `/etc/devfs.conf` に下記の設定を追加します。

    link acd0 dvd
    link acd0 rdvd

加えて、特別な DVD-ROM 機能を必要とする DVD 解読は、 DVD デバイスへの書き込み権限が必要です。

共有メモリ X11 インタフェースを改善するために、 いくつかの sysctl(8) 変数の値を増やすことが推奨されています。

    kern.ipc.shmmax=67108864
    kern.ipc.shmall=32768

### 7.4.1. ビデオ機能の決定

X11 においてビデオ表示性能を改善する方法はいくつかあると思われます。 ちゃんと動作するかどうかはハードウェアに大きく依存しています。 下記に説明したどの方法でも、 ハードウェアが変わると品質が変わるでしょう。 二つ目に、X11 でのビデオレンダリングは最近多くの注目を集めるトピックです。 そして Xorg や XFree86 のバージョンを追うごとに、著しく改良されているかもしれません。

よく知られたビデオインタフェースは次の通りです。

1. X11: 共有メモリを用いた通常の X11 出力

2. XVideo: X11 drawable 内でのビデオ再生に対応した X11 インタフェースの拡張機能

3. SDL: Simple Directmedia Layer

4. DGA: Direct Graphics Access

5. SVGAlib: 低レベルコンソールグラフィックレイヤ

#### 7.4.1.1. XVideo

Xorg と XFree86 4.X には XVideo (または Xvideo, Xv, xv) と呼ばれる拡張機能があります。 これは特別なアクセラレーションによって drawable オブジェクト に直接ビデオを表示することができます。 この拡張機能によって、 低速なマシンでも、とてもすぐれた品質の再生が可能となります。

この拡張機能が動作しているかどうかを調べるには、 `xvinfo` を使います。

    % xvinfo

以下のような結果が得られたならば、あなたのカードは XVideo に対応しています。

    X-Video Extension version 2.2
    screen #0
      Adaptor #0: "Savage Streams Engine"
        number of ports: 1
        port base: 43
        operations supported: PutImage
        supported visuals:
          depth 16, visualID 0x22
          depth 16, visualID 0x23
        number of attributes: 5
          "XV_COLORKEY" (range 0 to 16777215)
                  client settable attribute
                  client gettable attribute (current value is 2110)
          "XV_BRIGHTNESS" (range -128 to 127)
                  client settable attribute
                  client gettable attribute (current value is 0)
          "XV_CONTRAST" (range 0 to 255)
                  client settable attribute
                  client gettable attribute (current value is 128)
          "XV_SATURATION" (range 0 to 255)
                  client settable attribute
                  client gettable attribute (current value is 128)
          "XV_HUE" (range -180 to 180)
                  client settable attribute
                  client gettable attribute (current value is 0)
        maximum XvImage size: 1024 x 1024
        Number of image formats: 7
          id: 0x32595559 (YUY2)
            guid: 59555932-0000-0010-8000-00aa00389b71
            bits per pixel: 16
            number of planes: 1
            type: YUV (packed)
          id: 0x32315659 (YV12)
            guid: 59563132-0000-0010-8000-00aa00389b71
            bits per pixel: 12
            number of planes: 3
            type: YUV (planar)
          id: 0x30323449 (I420)
            guid: 49343230-0000-0010-8000-00aa00389b71
            bits per pixel: 12
            number of planes: 3
            type: YUV (planar)
          id: 0x36315652 (RV16)
            guid: 52563135-0000-0000-0000-000000000000
            bits per pixel: 16
            number of planes: 1
            type: RGB (packed)
            depth: 0
            red, green, blue masks: 0x1f, 0x3e0, 0x7c00
          id: 0x35315652 (RV15)
            guid: 52563136-0000-0000-0000-000000000000
            bits per pixel: 16
            number of planes: 1
            type: RGB (packed)
            depth: 0
            red, green, blue masks: 0x1f, 0x7e0, 0xf800
          id: 0x31313259 (Y211)
            guid: 59323131-0000-0010-8000-00aa00389b71
            bits per pixel: 6
            number of planes: 3
            type: YUV (packed)
          id: 0x0
            guid: 00000000-0000-0000-0000-000000000000
            bits per pixel: 0
            number of planes: 0
            type: RGB (packed)
            depth: 1
            red, green, blue masks: 0x0, 0x0, 0x0

リストにある形式 (YUV2, YUV12 など) が XVideo のすべての実装で存在するとは限りません。 対応している形式が少ないために、あるプレイヤでは悪影響が出る かもしれないことにも注意してください。

出力が以下のような場合、

    X-Video Extension version 2.2
    screen #0
    no adaptors present

あなたのカードはおそらく XVideo に対応していないのでしょう。

あなたのカードが XVideo に対応していないとしても、 このことはあなたのディスプレイでビデオを表示するのに、 計算上の要求を満たすことがより困難になるだけのことです。 しかしながら、あなたのビデオカードおよびプロセッサによっては、 それでも満足のいく性能が得られるかもしれません。 性能を向上させるには Section 7.4.3 をよく読むとよいでしょう。

#### 7.4.1.2. Simple Directmedia Layer

Simple Directmedia Layer (SDL) は Microsoft Windows, BeOS そして UNIX の間で サウンドとグラフィックスを効果的に利用した クロスプラットホームアプリケーションを 開発することを目的としたレイヤです。 SDL レイヤはハードウェアに対する低レベルの抽象的概念を提供し、 時には X11 インタフェースを使用するよりも効果的なことがあります。

SDL は `devel/sdl12` からインストールできます。

#### 7.4.1.3. Direct Graphics Access

Direct Graphics Access は、 プログラムが X サーバを介せず 直接フレームバッファを変更することを可能にする X11 の拡張機能です。 共有メモリを使用するために 低レベルのメモリマッピングが実行できることを期待しているので、 この機能を使うプログラムは `root` 権限で実行されなければなりません。

DGA 機能拡張は dga(1) によってテストとベンチマークができます。 `dga` 実行中はキーボードを押せばいつでもディスプレイ色が変更されます。 中止するには q を押します。

### 7.4.2. ビデオを扱う ports および packages

この節では Ports Collection で利用可能な、 ビデオの再生に使用できるソフトウェアについて論じます。 ビデオ再生は大変活発なソフト開発分野で、 さまざまなアプリケーションの機能は、 ここでの説明から省かざるをえません。

はじめに、FreeBSD で実行できるビデオアプリケーションの多くは、 Linux アプリケーションとして開発されたということを知ることは重要です。 これらのアプリケーションの多くはまだベータ版の品質です。 FreeBSD でこれらのビデオアプリケーションを使用する際に、 以下のような問題が起こるかもしれません。

1. あるアプリケーションが、 他のアプリケーションの作成したファイルを再生できない。

2. あるアプリケーションが、 自身の作成したファイルを再生できない。

3. 二つの異なるマシンで構築した同じアプリケーションが、 同じファイルを再生する挙動がそれぞれ異なる。

4. イメージサイズ変更のように見たところではありふれたフィルタが、 バグの多いサイズ変更ルーチンによってひどい人工物を作成する。

5. アプリケーションがよくコアダンプする。

6. 文書が port と一緒にインストールされない (文書は web サイトにあったり、その port の `work` ディレクトリの中に 残っていることがある)。

これらのアプリケーションの多くはさらに “Linux 主義” を主張するかもしれません。 すなわち、アプリケーションの作者が仮定した、 Linux ディストリビューションでのみ実装されている ある標準ライブラリの使用方法や Linux カーネルの特定の機能に起因する問題が生じるかもしれません。 必ずしも port 保守担当者がこれらの問題を把握して作業しているとは限らず、 次のような問題が発生する可能性があります。

1. プロセッサの特性を検知するための `/proc/cpuinfo` の利用

2. 本当はプログラムを終了させるはずであるのに、 停止させてしまうようなスレッドの誤用

3. 一般的にアプリケーションとともに使用され、まだ FreeBSD の Ports Collection に収録されていないソフトウェアを必要とする

これまで、これらのアプリケーションの開発者は、 移植に必要だったその場しのぎの回避方法を最小化し 問題を解決するために port 保守担当者と協力しています。

#### 7.4.2.1. MPlayer

MPlayer は最近開発され、 急激に成長しつつあるビデオプレイヤです。 MPlayer チームの目的は、 Linux や他の Unix 系 OS 上で高速性と柔軟性をもたらすことです。 このプロジェクトは、 チーム創設者が当時利用可能だったビデオプレイヤの ひどい再生能力にうんざりしたのをきっかけとして始まりました。 合理化された設計のために GUI が犠牲にされたと言う人もいます。 しかしながら、コマンドラインオプションおよびキーボード操作に 一度慣れれば非常によく動作します。

##### 7.4.2.1.1. MPlayer の作成

MPlayer は `multimedia/mplayer` にあります。 MPlayer は 構築の際にさまざまなハードウェアのチェックをするため、 あるシステムで作成されたバイナリは、 別のシステムで利用できないかもしれません。 したがって port から構築し、 バイナリパッケージを利用しないことが重要です。 さらに、`Makefile` や構築のはじめに説明されるように、 `make` のコマンドラインで多くのオプションを指定することができます。

    # cd /usr/ports/multimedia/mplayer
    # make
    N - O - T - E

    Take a careful look into the Makefile in order
    to learn how to tune mplayer towards you personal preferences!
    For example,
    make WITH_GTK1
    builds MPlayer with GTK1-GUI support.
    If you want to use the GUI, you can either install
    /usr/ports/multimedia/mplayer-skins
    or download official skin collections from
    http://www.mplayerhq.hu/homepage/dload.html

ほとんどのユーザにとっては port のデフォルトオプションで十分でしょう。 しかしながら、XviD コーデックが必要なら、 `WITH_XVID` オプションをコマンドラインで指定しなければなりません。 また、デフォルトの DVD デバイスを `WITH_DVD_DEVICE` オプションで定義することもできます (デフォルトでは `/dev/acd0` が使用されます)。

この文書を執筆している時点では、 MPlayer の port は HTML 文書、そして `mplayer` と `mencoder` という二つの実行可能なバイナリを構築します。 `mencoder` はビデオを再エンコーディングするためのツールです。

MPlayer のための HTML 文書は非常に有益です。この章で不足した ビデオハードウェアおよびインタフェースに関する情報があれば、 MPlayer の文書は非常に詳細な補足になります。 UNIX のビデオ対応情報を探しているのなら、時間を割いて MPlayer の文書を読むべきなのは 明らかです。

##### 7.4.2.1.2. MPlayer の使用

MPlayer を使用する人はすべて、 各自のホームディレクトリ内に `.mplayer` サブディレクトリを用意しなければなりません。 この必要となるサブディレクトリを作成するために、 次のコマンドを入力します。

    % cd /usr/ports/multimedia/mplayer
    % make install-user

`mplayer` のコマンドオプションはマニュアルに記載されています。 さらにより詳細な説明について知りたいなら、HTML 文書をご覧ください。 この節では、一般的な使用法についてほんの少し説明します。

さまざまなビデオインタフェースの一つを用いて ``testfile.avi`` というファイルを再生するには、 `-vo` オプションを指定します。

    % mplayer -vo xv testfile.avi

    % mplayer -vo sdl testfile.avi

    % mplayer -vo x11 testfile.avi

    # mplayer -vo dga testfile.avi

    # mplayer -vo 'sdl:dga' testfile.avi

ビデオ再生の相対的性能は多くの要因に依存し、 ハードウェアに応じて著しく変わると思われるので、 これらのオプションをすべて試してみる価値はあるでしょう。

DVD を再生するには、 ``testfile.avi`` を `dvd://`N` -dvd-device `DEVICE`` に置き換えてください。 <N> には再生するタイトル番号を、 ``DEVICE`` は DVD-ROM のデバイスノードを指定します。 たとえば、`/dev/dvd` から 2 番目のタイトルを再生するには以下のようにします。

    # mplayer -vo xv dvd://3 -dvd-device /dev/dvd

> Note: デフォルトの DVD デバイスは、 MPlayer port の構築時に `WITH_DVD_DEVICE` で定義することができます。 デフォルトでは `/dev/acd0` になります。 詳細はこの port の `Makefile` をご覧ください。

停止、休止、再生などをするにはキーの割り当てを調べてください。 `mplayer -h` を実行したり、 マニュアルを読めばわかります。

再生に関してさらに重要なオプションがあります。 全画面モードにする `-fs -zoom` オプションと、 性能を向上させる `-framedrop` オプションです。

`mplayer` に指定するコマンドラインが長くなりすぎないように、 `.mplayer/config` を作成してデフォルトのオプションを設定できます。

    vo=xv
    fs=yes
    zoom=yes

最後に `mplayer` は DVD タイトルを `.vob` ファイルに抽出するのに使用できます。 DVD から 2 番目のタイトルをダンプするには次のようにします。

    # mplayer -dumpstream -dumpfile out.vob dvd://2 -dvd-device /dev/dvd

出力された `out.vob` ファイルは MPEG 形式で、 この節で説明される他のアプリケーションで編集できます。

##### 7.4.2.1.3. mencoder

`mencoder` を使う前に、 HTML 文書を読んでオプションに慣れておくのはよい考えです。 マニュアルもありますが、HTML 文書なしではあまり有用ではありません。 品質向上、低ビットレート、形式変換をする方法が無数にあります。 これらの要素の調節具合で、性能が良かったり悪かったりするなど、 結果に違いが出るかもしれません。 ここにいくつか例を示します。 はじめは単純なファイルのコピーです。

    % mencoder input.avi -oac copy -ovc copy -o output.avi

コマンドラインオプションを不適切に組合せると、 `mplayer` でさえ再生できない出力ファイルを作成してしまいます。 したがって、単にファイルを抽出したいときには、 `mplayer` に `-dumpfile` オプションをつけます。

``input.avi`` を音声に MPEG3 エンコードを使用して MPEG4 コーデックに変換するには次のようにします (`audio/lame` が必要です)。

    % mencoder input.avi -oac mp3lame -lameopts br=192 \
         -ovc lavc -lavcopts vcodec=mpeg4:vhq -o output.avi

これは `mplayer` や `xine` で再生可能な出力ファイルを作成します。

DVD タイトルを直接再エンコードするためには、 上記のコマンドラインの ``input.avi`` を `dvd://1 -dvd-device /dev/dvd` に置き換えて、 `root` 権限で実行します。 はじめの作業結果に不満をもつと思われるので、 タイトルをファイルにダンプして、ファイルに対して作業することを おすすめします。

#### 7.4.2.2. xine ビデオプレイヤ

xine ビデオプレイヤは オールインワンのビデオソリューションであるだけでなく、 プラグインで拡張できる再利用可能な基本ライブラリと 実行可能なモジュールを提供する広範囲のプロジェクトです。 `multimedia/xine` の port と package の両方からインストールできます。

xine プレイヤは開発途上であり まだ非常に荒削りですが、通常の利用には十分安定しています。 実用上、xine を使用するには高速なビデオカードとともに高速な CPU があるか、 またはビデオカードが XVideo 拡張に対応していることが必要です。 GUI も利用できますがすこし扱いにくいです。

この文書を執筆している時点では、 xine と一緒に提供されている CSS エンコードされた DVD を再生する入力モジュールはありません。 このモジュールがあるサードパーティの構築物はいくつかありますが、 これらのどれも FreeBSD の Ports Collection には収録されていません。

xine は MPlayer と比べて 利用者にとって多くのことをしてくれますが、 と同時にきめの細かい制御ができません。なお、 xine ビデオプレイヤは、 XVideo インタフェース上で最良の性能を発揮します。

デフォルトでは、xine プレイヤは GUI 付きで起動するでしょう。 その後、メニューを使用して特定のファイルを開くことができます。

    % xine

GUI なしでファイルを直ちに再生するには、 次のコマンドを実行します。

    % xine -g -p mymovie.avi

#### 7.4.2.3. transcode ユーティリティ

transcode というソフトウェアは、 プレイヤではなくビデオおよびオーディオファイルを再エンコードするためのツール一式です。 transcode を使えば、 `stdin/stdout` インタフェースとともに コマンドラインツールを用いることによって、 ビデオファイルの統合や、壊れたファイルの修復ができます。

`multimedia/transcode` port では、数多くのビルドオプションを指定できますが、 以下のコマンドラインのように transcode を構築することをおすすめします。

    # make WITH_OPTIMIZED_CFLAGS=yes WITH_LIBA52=yes WITH_LAME=yes WITH_OGG=yes \
    WITH_MJPEG=yes -DWITH_XVID=yes

ほとんどのユーザにとっては、この設定で十分です。

`transcode` の能力を示す例として、DivX ファイルを PAL MPEG-1 (PAL VCD) ファイルに変換する使用例を示します。

    % transcode -i input.avi -V --export_prof vcd-pal -o output_vcd
    % mplex -f 1 -o output_vcd.mpg output_vcd.m1v output_vcd.mpa

作成された MPEG ファイル、 ``output_vcd.mpg`` は、 MPlayer を使って再生できます。 また、ファイルを CD-R メディアに書き込むことでビデオ CD も作成できます。 この場合には、`multimedia/vcdimager` および `sysutils/cdrdao` プログラムをインストールする必要があるでしょう。

`transcode` のマニュアルもありますが、 transcode wiki から、更なる情報や使用例を得てください。

### 7.4.3. さらに進んだ情報

FreeBSD 用のさまざまなビデオソフトウェアは急速に成長しています。 近い将来、ここにあげた問題の多くが解決している可能性は高いでしょう。 それまでの間、FreeBSD の A/V 能力を最大限発揮させたい人々は、 FAQ およびチュートリアルから得た知識を寄せ集めて、 わずかなアプリケーションを使用しなければならないでしょう。 この節は、読者に そのような付加的な情報へのポインタを提供するために存在します。

MPlayer の文書 は技術的に非常に有益です。 おそらく、UNIX ビデオの高水準な専門的知識を得たい人はすべて、 これらの文書を調べるべきです。 MPlayer メーリングリストを購読している人たちは、 文書を面倒がって読まない人には、それが誰であれ反感を持ちます。 そのため、彼らにバグ報告をするときには、マニュアルを読んでください。

xine HOWTO にはすべてのプレイヤに一般的な性能向上についての章が含まれています。

最後に、読者が試みるかもしれない 有望なアプリケーションをいくつかあげます。

- Avifile. port が `multimedia/avifile` にあります。

- Ogle. port が `multimedia/ogle` にあります。

- Xtheater.

- `multimedia/dvdauthor`. DVD コンテンツをオーサリングするためのオープンソースパッケージです。

## 7.5. TV カードの設定

原作: Josef El-Rayes. 改訂: Marc Fonvieille.

### 7.5.1. はじめに

TV カードを使用することで、 TV 放送をコンピュータで見ることができます。 これらの多くは RCA コンポジットまたは S-video 入力端子を備えており、 FM ラジオチューナを装備したカードもあります。

FreeBSD は Brooktree Bt848/849/878/879 または Conexant CN-878/Fusion 878a をビデオキャプチャチップに採用した PCI TV カードに bktr(4) ドライバで対応しています。 対応しているチューナを搭載したボードかどうかを bktr(4) マニュアルページの一覧を参照して確認してください。

### 7.5.2. ドライバの追加

TV カードを使用するために bktr(4) ドライバを読み込む必要があります。 `/boot/loader.conf` ファイルに以下の行を追加してください。

    bktr_load="YES"

あるいは、カーネルにドライバを静的に組み込むこともできます。 この場合、次の行をカーネルコンフィギュレーションファイルに追加します。

    device  bktr
    device  iicbus
    device  iicbb
    device  smbus

カードコンポーネントは I2C バス経由で連結されているため、 bktr(4) ドライバに加えてこれらのデバイスドライバが必要になります。 編集したら新しいカーネルを構築し、インストールします。

システムにドライバを追加したら、計算機を再起動してください。 起動時に TV カードは以下のように認識されるでしょう。

    bktr0: <BrookTree 848A> mem 0xd7000000-0xd7000fff irq 10 at device 10.0 on pci0
    iicbb0: <I2C bit-banging driver> on bti2c0
    iicbus0: <Philips I2C bus> on iicbb0 master-only
    iicbus1: <Philips I2C bus> on iicbb0 master-only
    smbus0: <System Management Bus> on bti2c0
    bktr0: Pinnacle/Miro TV, Philips SECAM tuner.

もちろん、これらのメッセージはハードウェアに応じて異なります。 とはいえ、チューナが正しく検知されているかどうか確認するべきです。 sysctl(8) による MIB の設定や、 カーネルコンフィギュレーションファイルオプションで、 検知されたいくつかのパラメータを変更できます。 たとえば、チューナを Philips SECAM チューナとして検知されるようにするには、 カーネルコンフィギュレーションファイルに以下の行を追加します。

    options OVERRIDE_TUNER=6

または、直接 sysctl(8) を使用して変更します。

    # sysctl hw.bt848.tuner=6

利用可能なオプションの詳細については bktr(4) マニュアルページおよび `/usr/src/sys/conf/NOTES` ファイルを参照してください。

### 7.5.3. 便利なアプリケーション

TV カードを使用するためには、以下のアプリケーションの一つをインストールする必要があります。

- `multimedia/fxtv` はウィンドウ内に TV 映像を映します。 画像/音声/ビデオを取り込むこともできます。

- `multimedia/xawtv` も TV アプリケーションです。 fxtv と同様の機能があります。

- `misc/alevt` は文字放送 (ビデオテキスト/テレテキスト) のデコードと表示をします。

- `audio/xmradio` は TV カードに搭載された FM ラジオチューナを使用するためのアプリケーションです。

- `audio/wmtune` はラジオチューナのためのお手軽なデスクトップアプリケーションです。

他にも多くのアプリケーションが FreeBSD Ports Collection に収録されています。

### 7.5.4. トラブルシューティング

TV カードに関する問題が起きたときには、 bktr(4) ドライバが本当にビデオキャプチャチップおよびチューナに 対応しているか、オプションが正しく設定されているかどうかをまず確認してください。 TV カードに関するサポートやさまざまな質問に関しては、 freebsd-multimedia メーリングリストに参加したり、 過去のアーカイブを検索してみてください。

## 7.6. 画像スキャナ

寄稿: Marc Fonvieille.

### 7.6.1. はじめに

FreeBSD では、画像スキャナに対するアクセスは SANE (Scanner Access Now Easy) API によって実現されており、 FreeBSD Ports Collection でも提供されています。 SANE はスキャナのハードウェアにアクセスするために FreeBSD デバイスドライバを使用します。

FreeBSD は SCSI 接続および USB 接続のスキャナのどちらにも対応しています。 設定を始める前に、 SANE がスキャナに対応しているか確認してください。 SANE には スキャナについての情報とその状況がまとめられている 対応デバイスの一覧 があります。FreeBSD 8.X より前のシステムでは、 FreeBSD の uscanner(4) マニュアルページにも対応 USB スキャナの一覧が記載されています。

### 7.6.2. カーネルのコンフィグレーション

前述のように、FreeBSD はスキャナのインタフェースとして SCSI と USB の両方に対応しています。 スキャナのインタフェースによって、必要となるドライバが異なります。

#### 7.6.2.1. USB インタフェース

`GENERIC` カーネルにはデフォルトで USB スキャナに対応するためのデバイスドライバが搭載されています。 カスタムカーネルを使用する際には、 以下の行がカーネルコンフィグレーションファイルにあることを 確認してください。

    device usb
    device uhci
    device ohci
    device ehci

FreeBSD 8.X より前のシステムでは以下の行も必要となります。

    device uscanner

このバージョンの FreeBSD では、uscanner(4) デバイスドライバが USB スキャナへのアクセスを提供しています。 FreeBSD 8.0 以降では、libusb(3) ライブラリが直接提供します。

適切なドライバを組み込んだカーネルで再起動後、 USB スキャナをシステムに接続します。 すると、メッセージバッファ (dmesg(8)) にスキャナが認識されたことを示すメッセージが出力されます。

    ugen0.2: <EPSON> at usbus0

FreeBSD 7.X システムでは、 以下のようなメッセージが出力されます。

    uscanner0: EPSON EPSON Scanner, rev 1.10/3.02, addr 2

これらの例では、使用している FreeBSD のバージョンに応じて、 スキャナが `/dev/ugen0.2` または、`/dev/uscanner0` デバイスノードを使用していることがわかります。 この例では、EPSON Perfection® 1650 USB スキャナが使われています。

#### 7.6.2.2. SCSI インタフェース

スキャナに付属しているインタフェースが SCSI であれば、 重要なのはどの SCSI ボードを使用すればよいか把握することです。 使用する SCSI チップセットによって、 カーネルコンフィグレーションファイルを調整する必要があります。 `GENERIC` カーネルは 一般に使用される SCSI コントローラのほとんどに対応しています。 `NOTES` ファイルを読んで、 適切な行をカーネルコンフィグレーションファイルに追加してください。 また、SCSI アダプタドライバに加えて、 以下の行をカーネルコンフィグレーションファイルに 記述する必要があります。

    device scbus
    device pass

カーネルを適切にコンパイルしてインストールすると、 システムの起動時にデバイスがメッセージバッファに出力されるはずです。

    pass2 at aic0 bus 0 target 2 lun 0
    pass2: <AGFA SNAPSCAN 600 1.10> Fixed Scanner SCSI-2 device
    pass2: 3.300MB/s transfers

システムを起動する際にスキャナの電源を入れてなければ、 camcontrol(8) コマンドを使用して SCSI バスをスキャンし、 以下のように手動でデバイスを検出させることもできます。

    # camcontrol rescan all
    Re-scan of bus 0 was successful
    Re-scan of bus 1 was successful
    Re-scan of bus 2 was successful
    Re-scan of bus 3 was successful

すると、スキャナは SCSI デバイスの一覧に現れるでしょう。

    # camcontrol devlist
    <IBM DDRS-34560 S97B>              at scbus0 target 5 lun 0 (pass0,da0)
    <IBM DDRS-34560 S97B>              at scbus0 target 6 lun 0 (pass1,da1)
    <AGFA SNAPSCAN 600 1.10>           at scbus1 target 2 lun 0 (pass3)
    <PHILIPS CDD3610 CD-R/RW 1.00>     at scbus2 target 0 lun 0 (pass2,cd0)

SCSI デバイスについての詳細は、scsi(4) および camcontrol(8) のマニュアルページをご覧ください。

### 7.6.3. SANE の設定

SANE システムは、 二つの部分、すなわちバックエンド (`graphics/sane-backends`) とフロントエンド (`graphics/sane-frontends`) に分割されています。 バックエンドはスキャナそのものに対するアクセスを提供します。 SANE の 対応デバイスの一覧 には、どのバックエンドが画像スキャナに対応しているかが記載されています。 デバイスを使用するためには、正しいバックエンドを決定するのは必須です。 また、フロントエンドはグラフィカルなスキャニングインタフェース (xscanimage) を提供します。

はじめに、 `graphics/sane-backends` の port または package をインストールしましょう。 次に、`sane-find-scanner` コマンドを使用して、 SANE システムで使用するバックエンドを検出します。

    # sane-find-scanner -q
    found SCSI scanner "AGFA SNAPSCAN 600 1.10" at /dev/pass3

この出力から、 スキャナインタフェースの種類と システムに接続されているスキャナが使用するデバイスノードがわかります。 ベンダ名や製品のモデル名は表示されないかも知れませんが、 重要ではありません。

> Note: USB スキャナではファームウェアを読み込む必要がある場合があります。 これはバックエンドのマニュアルページで説明されています。 sane-find-scanner(1) と sane(7) のマニュアルページも読んでください。

スキャナがフロントエンドで認識されるか調べてみましょう。 デフォルトでは、SANE のバックエンドには scanimage(1) と呼ばれるコマンドラインツールが付属します。 このコマンドを使用すると、 デバイスの一覧を表示したり画像を取得することができます。 `-L` オプションを使うと、 スキャナデバイスの一覧が出力されます。

    # scanimage -L
    device `snapscan:/dev/pass3' is a AGFA SNAPSCAN 600 flatbed scanner

また、Section 7.6.2.1 で使用した USB スキャナの例では、以下の出力が得られるでしょう。

    # scanimage -L
    device 'epson2:libusb:/dev/usb:/dev/ugen0.2' is a Epson GT-8200 flatbed scanner

これは、FreeBSD 8.X システムでの出力例であり、 `'epson2:libusb:/dev/usb:/dev/ugen0.2'` から、 使用しているスキャナのバックエンド名 (`epson2`) とデバイスノード (`/dev/ugen0.2`) の情報を得ることができます。

> Note: 何も出力が得られなかったり、 スキャナが見つからなかったというメッセージが表示されたら、 scanimage(1) はスキャナを認識できなかったのでしょう。 このような場合は、バックエンドの設定ファイルを編集し、 使用するスキャナデバイスを定義する必要があります。 `/usr/local/etc/sane.d/` ディレクトリには、 バックエンドが使用するすべての設定ファイルがあります。 このデバイスの認識による問題は、 特定の USB スキャナで発生するものです。

> たとえば、 Section 7.6.2.1 で使用した USB スキャナは、 FreeBSD 8.X において正常に認識され動作します。 しかし、それより前のバージョンの (uscanner(4) ドライバを利用する) FreeBSD では、 `sane-find-scanner` コマンドを実行すると、以下のような情報が得られます。

>     # sane-find-scanner -q
>     found USB scanner (UNKNOWN vendor and product) at device /dev/uscanner0

> スキャナは正しく検出されました。 USB インタフェースを使用し、 `/dev/uscanner0` デバイスノードに接続されていることがわかります。 次に、スキャナが正しく認識されているかどうか確認してみましょう。

>     # scanimage -L

>     No scanners were identified. If you were expecting something different,
>     check that the scanner is plugged in, turned on and detected by the
>     sane-find-scanner tool (if appropriate). Please read the documentation
>     which came with this software (README, FAQ, manpages).

> スキャナが認識されなかったので、 `/usr/local/etc/sane.d/epson2.conf` ファイルを編集する必要があります。 このスキャナのモデルは EPSON Perfection 1650 なので、 `epson2` バックエンドを使用すればいいことがわかります。 バックエンドの設定ファイルに書かれているコメントを必ず読んでください。 設定ファイルを変更するのは非常に簡単です。 使用しているスキャナには不適切なインタフェースをすべてコメントアウトし (今回の場合は、USB インタフェースを使用するので `scsi` という語で始まる行をすべてコメントアウトします)、 ファイルの末尾に使用するインタフェースとデバイスノードを追加します。 この例では、以下の行を追加しました。

>     usb /dev/uscanner0

> 詳細と使用すべき構文は、 バックエンドのマニュアルページはもちろんのこと、 バックエンドの設定ファイルに書かれているコメントも読んでください。 以上の設定で、スキャナが認識されたかどうかを確認できます。

>     # scanimage -L
>     device `epson:/dev/uscanner0' is a Epson GT-8200 flatbed scanner

> USB スキャナが認識されました。 ブランドやモデルがスキャナに一致しなかったとしても、それほど重要ではありません。 着目すべきは ``epson:/dev/uscanner0'` という部分で、 バックエンド名とデバイスノードが正しく認識されていることがわかります。

`scanimage -L` コマンドを実行してスキャナが認識されたことがわかれば、設定は終了です。 デバイスはスキャンする準備ができました。

scanimage(1) コマンドを使用すると コマンドラインから画像を取得することができます。その一方で、 GUI を使用して画像を取得できると一層良いでしょう。 SANE は、簡素ですが役に立つグラフィカルなインタフェース xscanimage (`graphics/sane-frontends`) を提供しています。

Xsane (`graphics/xsane`) はもう一つのグラフィカルなスキャニングフロントエンドで、 人気があります。 Xsane には、さまざまなスキャニングモード (写真、FAX など)、 色補正、バッチスキャンなど先進的な機能があります。 これらのアプリケーションの両方とも GIMP のプラグインとして使用することができます。

### 7.6.4. 他のユーザがスキャナにアクセスすることを許可する

前述の操作には、 すべて `root` 権限が必要となります。 しかしながら、他のユーザがスキャナに アクセスできるようにすることも可能です。 そのためには、スキャナが使用するデバイスノードへの 読み込み権限と書き込み権限をユーザに与えます。 一例として、USB スキャナが、`/dev/ugen0.2` デバイスノードを使用しているものとします。 このデバイスノードは、 `/dev/usb/0.2.0` へのシンボリックリンクです (`/dev` ディレクトリを調べると、 簡単に確認できます)。 シンボリックリンクとデバイスノードは、 それぞれ `wheel` および `operator` グループが所有しています。 ユーザ ``joe`` を これらのグループに加えると、彼はスキャナを使用できるようになります。 もちろん、ユーザをどんなグループ (特にグループ `wheel`) に追加する時はいつでも、 セキュリティ上の理由から二度は検討を行うべきです。 良い方法は、USB デバイスを利用するためにグループを作成し、 このグループに対してスキャナデバイスを利用できるようにすることです。

例として、``usb`` という名前のグループを使用します。 まず最初に、pw(8) コマンドを使ってグループを作成します。

    # pw groupadd usb

その後、シンボリックリンク `/dev/ugen0.2` および、`/dev/usb/0.2.0` デバイスノードに対して、 `usb` グループが利用できるように適切な許可属性 (`0660` または `0664`) を設定する必要があります。 デフォルトでは、これらのファイルの所有者 (`root`) のみが書き込み可能です。 `/etc/devfs.rules` に次の行を追加してください。

    [system=5]
    add path ugen0.2 mode 0660 group usb
    add path usb/0.2.0 mode 0666 group usb

FreeBSD 7.X のユーザは、デバイスノード `/dev/uscanner0` に対し、 以下のような行の追加が必要となるでしょう。

    [system=5]
    add path uscanner0 mode 660 group usb

次に、`/etc/rc.conf` に以下の行を追加して システムを再起動します。

    devfs_system_ruleset="system"

`/etc/devfs.rules` で設定した内容についての詳細は、devfs(8) のマニュアルページをご覧ください。

最後に、スキャナを利用するユーザを ``usb`` グループに追加します。

    # pw groupmod usb -m joe

詳細については、pw(8) のマニュアルページをご覧ください。

# Chapter 8. FreeBSD カーネルのコンフィグレーション

改訂および再構成Jim Mock. 原作Jake Hamby.

## 8.1. この章では

カーネルは FreeBSD オペレーティングシステムの中核をなすもの です。カーネルは、メモリ管理、セキュリティ制御の強制、ネットワー ク、ディスクアクセスなどを担っています。FreeBSD はどんどん動的に 構成することができるようになっていますが、まだ、時にはカーネルコ ンフィグレーションをやり直して、再構築する必要があります。

この章では、以下のことを扱っています。

- なぜカスタムカーネルの構築が必要になることがあるのか。

- コンフィグレーションファイルの書き方や、既存のコンフィグ レーションファイルの置き換え。

- カーネルコンフィグレーションファイルから新しいカーネルを構 築する方法。

- 新しいカーネルのインストール方法。

- `/dev` 下に必要となる項目を作成する方法。

- うまく行かないときの問題解決法。

## 8.2. なぜカスタムカーネルを作るか?

伝統的に、FreeBSD のカーネルは “モノリシック” (monolithic) カーネルと呼ばれるものでした。 これは、カーネルが単一の巨大なプログラムで、 扱えるデバイスは固定されていて、 カーネルの振る舞いを変えたければ新しいカーネルを構築して、 コンピュータを再起動して新しいカーネルを動かさなれければならなかった ということです。

今日では FreeBSD は、カーネルの機能のかなりが必要に応じて動 的にカーネルに組み込んだり外したりできるモジュールにおかれている モデルへと、急速に移行しています。こうしてカーネルは (ノート PC の PCMCIA カードのように) 突如使えるようになったハードウェアに対 応したり、カーネルが作成された時点では必要なかった新たな機能を取 り入れられるようになります。くだけた表現では、これは KLD と呼ば れます。

しかしながら、いまだにいくらかは静的にカーネルを構成する必要 があります。ある場合においては、機能がカーネルとあまりに密接に結 びついているため、動的に組み込むことができません。ほかには、単に まだ誰もその機能に対する組み込み可能なカーネルモジュールを書く時 間をとっていないだけということもあります。

システムに合わせたカーネルの構築はほとんどすべての Unix ユーザが 避けて通ることのできない最も重要な通過儀礼の1つです。 この作業は、多くの時間を必要としますが、あなたの FreeBSD システムに多くの利益をもたらします。 広範囲のハードウェアをサポートしなければならない `GENERIC`カーネルとは異なり、 システムに合わせたカーネルは あなたの PC のハードウェアのみをサポートします。これは、 次にあげるような利益をもたらします。

- 素早く起動します。 カーネルはあなたのシステム上にあるハードウェアしか 検出を行わないので、 あなたのシステムの起動にかかる時間は劇的に短くなります。

- メモリの消費量が減少します。 システムに合わせたカーネルは、大抵 `GENERIC` カーネルより少ないメモリしか消費しません。 カーネルは常に実メモリ上に存在しなければならないので、 これは重要なことです。 したがって、RAM が少ないシステムでは、 カーネルの再構築は大変重要です。

- 追加のハードウェアをサポートします。 システムに合わせたカーネルは、サウンドカードなど `GENERIC` カーネルに存在しないデバイスのサポートを追加することができます。

## 8.3. カスタムカーネルの構築とインストール

まず、 カーネル再構築に必要なディレクトリをざっと見てみましょう。 ここではディレクトリはすべて `/usr/src/sys` 以下の相対位置で示します。 また、`/sys` からもアクセス可能です。 ここには、カーネルの各部分を構成するサブディレクトリが いくつもあります。しかし、私たちの目的で最も重要なのは ``arch`/conf` です。 ここで、あなたの システムに合わせてカーネルコンフィグレーションを編集します。 それから `compile`ディレクトリ、 ここはカーネルが作られる 場所です。 `arch` は、`i386`, `alpha`, `pc98`(これは 日本で普及している PC のための開発ブランチです)のいずれかを表します。 各アーキテクチャのディレクトリ内部にあるファイルはすべて そのアーキテクチャでのみ使用され、残りのコードは FreeBSD が他のプラットフォームに移植される際に共有されます。 サポートされているデバイス、ファイルシステム、オプションが、 それぞれ各々のサブディレクトリに分かれている、 という論理的な構成に注意してください。

> Note: もし、あなたのシステムに`/usr/src/sys` 以下のディレクトリがなければ、 カーネルのソースが インストールされていません。 もっとも簡単な方法は (`root`で) `/stand/sysinstall` を用いて以下のようにすることです。 設定 (Configure) を選んでから 配布ファイル (Distribution) を選択し、src の中の sys をインストールしてください。 sysinstall が嫌いで、“公式” FreeBSD CDROM を利用できるなら、 コマンドラインからソースコードをインストールすることもできます。

>     # mount /cdrom
>     # mkdir -p /usr/src/sys
>     # ln -s /usr/src/sys /sys
>     # cat /cdrom/src/ssys.[a-d]* | tar -xzvf -

つぎに、 ``arch`/conf`に移動して、 `GENERIC` コンフィグレーションファイルをカーネルに与えたい名前に コピーしてください。たとえば次のようにします。

    # cd /usr/src/sys/i386/conf
    # cp GENERIC MYKERNEL

慣習として、この名前はすべて大文字でつづられます。もし、 いくつかの異なるハードウェアの FreeBSDマシンを扱うなら、 この名前にホスト名を含めるとよいでしょう。ここでは、例として `MYKERNEL` と呼ぶことにします。

> Tip: カーネルコンフィグレーションファイルを、直に `/usr/src` の下に置くのはよい考えとはいえま せん。なにか問題が起きたときに、 `/usr/src` を消してやり直したいと思うかもし れません。その後で、あなたがカスタマイズしたカーネルコンフィグ レーションファイルを消してしまったことに気づくのに時間はかから ないでしょう。

> カーネルコンフィグレーションファイルは他の場所において、 `i386` ディレクトリにシンボリックリンクを張 る方がよいでしょう。

> たとえば、次のようにします。

>     # cd /usr/src/sys/i386/conf
>     # mkdir /root/kernels
>     # cp GENERIC /root/kernels/MYKERNEL
>     # ln -s /root/kernels/MYKERNEL

> Note: この作業は `root` 権限でおこなう必要があります。そうでなければ、 permission denied というエラーが出ます。

では、`MYKERNEL` をあなたの好きなエディタで編集してください。もし、 システムをインストールしたばかりならば、利用できるエディタは vi だけかもしれません。ここでは使い方の説明はしませんが、 参考図書 にあるような多くの本で詳しく説明 されていますので、 そちらを参照してください。FreeBSD にはより簡単なエディタとして ee があります。初心者の方であればこちらをエディタに選ぶとよいでしょう。 まずファイルの最初の方のコメント行を編集し、あなたのコンフィグ レーションに合せて変更した点などを記述して `GENERIC` と区別がつく ようにしておきましょう。

もし SunOSや他の BSDオペレーティングシステムでカーネルの 再構築をしたことがあれば、このファイルはとても親しみ やすいでしょう。しかし、DOSのようなその他の オペレーティングシステムしか知らない人から見れば、 `GENERIC` コンフィグレーションファイルはとても なじみにくいものかもしれません。そのような場合は、 コンフィグレーションファイル の節をゆっくりと注意深く読んでください。

> Note: FreeBSD Project の最新のソースファイルと、あなたのソースツリーを同期させている 場合、アップデートを行う際には、必ず `/usr/src/UPDATING` ファイルをチェックしてください。 このファイルには、FreeBSD をアップデートする際の重要な問題がすべて書かれています。 `/usr/src/UPDATING` は常にあなたの FreeBSD ソースファイルのバージョンと同期していますので、 ハンドブックの情報よりも正確なものとなっています。

ここで、カーネルのソースコードをコンパイルしなくてはなりませ ん。手順は二つあり、どちらを使うかは、なぜカーネルを再構築するか と、動かしている FreeBSD のバージョンによって決まります。

- カーネルのソースコードだけインストー ルしているなら、手順 1 にしたがってください。

- 4.0 より前の FreeBSD を使っていて、 `make world` を行って FreeBSD 4.0 以上にアップグレードしないなら、 手順 1 にしたがってください。

- (`IPFIREWALL` オプションを追加するなど のように) ソースコードを更新せずに新しいカーネルを構築するな らどちらの手順を用いても構いません。

- `make world` の一環としてカーネルの再構築を行っているなら、 手順 2 にしたがってください。

手順 1: “伝統的な” 方法によるカーネル構築

1. カーネルソースコードを生成するため、config(8) を実 行します。

       # /usr/sbin/config MYKERNEL

2. カーネルを構築するためのディレクトリに移動します。

       # cd ../../compile/MYKERNEL

3. カーネルをコンパイルします。

       # make depend
       # make

4. 新しいカーネルをインストールします。

       # make install

手順 2: “新しい” 方法によるカーネル構築

1. `/usr/src` ディレクトリに移動します。

       # cd /usr/src

2. カーネルをコンパイルします。

       # make buildkernel KERNCONF=MYKERNEL

3. 新しいカーネルをインストールします。

       # make installkernel KERNCONF=MYKERNEL

> Note: FreeBSD 4.2 とそれ以前の場合は、 `KERNCONF=` ではなく `KERNEL=` としなければなりません。 2001 年 2 月 2 日以降の 4.2-STABLE は `KERNCONF=` を認識します。

何らかの方法であなたのソースツリーをアップグレードして いない 場合 (CVSup, CTM, anoncvs などを実行していない場合)、 `config`, `make depend`, `make`, `make install` の手順を実行してください。

新しいカーネルはルートディレクトリに `/kernel`という 名前でコピーされ、 今までのカーネルは `/kernel.old` という名前へ変更されます。では、システムをシャットダウン、 リブートして新しいカーネルを使ってください。 うまく行かない場合は、この章の終りの 問題が起きた場合には を参照してください。この章の新しい カーネルが起動しない 場合のリカバリの方法を注意深く読んでおいてください。

> Note: FreeBSD 4.X 以前のバージョンを使っていて、 (サウンドカードなど) 新しいデバイスを追加した場合は、 使う前に `/dev` ディレクトリにデバイスノードを追加しなければならないかもしれません。 詳しくは、この章で後ほど出てくる デバイスノードの作成 をご覧ください。

## 8.4. コンフィグレーション ファイル

コンフィグレーション ファイルの一般的なフォーマット はとてもシンプルです。各行は1つのキーワードと1つ以上の 引数を含んでいます。見やすくするために、ほとんどのキーワードは 引数を1つしか書いてありません。 `#`に続くものはすべてコメントとして扱われ、 無視されます。ここでは、それぞれのキーワードについて だいたい `GENERIC` に出てくる順番で説明します。しかし、 お互いに関係のあるキーワードは、実際には `GENERIC` ファイル上に バラバラに現れていても、(ネットワーキングのように)1つにまとめ てあります。 おびただしい数の オプションの一覧が `GENERIC`と同じディレクトリの `LINT` コンフィグ レーションファイルにあります。もし、ある行の目的や必要性に疑 問を持ったら最初に `LINT` をチェックしてください。

> 数字と二重引用符: FreeBSD 3.x と、それまでの全てのバージョンの FreeBSD における config(8) は、コンフィグレーションファイル中の テキストとして使われる数字を含む文字列が 全て二重引用符で括られていなければならないという制限があります。

> この制限は (このハンドブックが対象としている) 4.X ブランチでは取り除かれました。 4.X 以前のシステムを使っている場合には、 サンプルとしてシステム上の `/usr/src/sys/i386/conf/LINT` と `/usr/src/sys/i386/conf/GENERIC` を参照してください。

以下は必要に応じてコメントを追加した `GENERIC` カーネルの コンフィグレーションファイルです。 この設定例は `/usr/src/sys/i386/conf/GENERIC` に極めて近いものになっているはずです。 その他に指定可能なカーネルオプションについては、 `/usr/src/sys/i386/conf/LINT` を参照してください。

    #
    # GENERIC -- Generic kernel configuration file for FreeBSD/i386
    #
    # このファイルについて更に情報が必要なら、ハンドブックのカーネル
    # コンフィグレーションファイルのセクションを参照して下さい。
    #
    #    http://www.FreeBSD.org/doc/en_US.ISO8859-1/books/handbook/kernelconfig-config.html
    #
    # doc ディストリビューションをインストールした場合、ハンドブックは
    # ローカルマシンの /usr/share/doc/handbook でも見ることができます。
    # 最新版は FreeBSD の WWW サーバ (http://www.FreeBSD.ORG/) を参照して
    # 下さい。
    #
    # ./LINT コンフィギュレーションファイルには、デバイス行に関する大量の
    # オプションと詳細な説明があります。もしある行の目的又は必要性について
    # 疑問がある場合はまず LINT をチェックして下さい。
    #
    # $FreeBSD: src/sys/i386/conf/GENERIC,v 1.246 2000/03/09 16:32:55 jlemon Exp $

以下は すべての カーネルの構築に 必須のキーワードです:

    machine        i386

マシンのアーキテクチャです。 これは `i386`, `alpha`, `pc98` のいずれかでなければなりません。

    cpu          I386_CPU
    cpu          I486_CPU
    cpu          I586_CPU
    cpu          I686_CPU

上記はあなたのシステムの CPU タイプを指定します。 複数の行を書いても構いません。 (例: `I586_CPU` とすべきか `I686_CPU` とすべきかはっきり分からない場合。 しかしながら、カスタムカーネルを作る場合、あなたの持つ CPU だけを指定するのがベストです。 もしあなたの CPU がどのタイプか分からない場合、 dmesg(8) を使って起動メッセージを 調べるとよいでしょう。

Alpha アーキテクチャの場合は、 `cpu` に異なった値を用います。

    cpu          EV4
    cpu          EV5

もしあなたが Alpha マシンを使っている場合、 上記の内のどれかを指定して下さい。

    ident          GENERIC

ここはカーネルの識別名を書きます。 あなたがカーネルに付けたい名前に書き換えて下さい (前記の例の `MYKERNEL` のように)。 `ident` に書いた名前はカーネルを起動する時に 表示されるので、 普段使っているカーネルと区別したいときは、 新しいカーネルに違う名前を付けると 良いでしょう(例: 実験的なカーネルを構築する場合)。

    maxusers          n

`maxusers` オプションは重要なシステムテーブルの サイズを決定します。 この数字はあなたのマシンを同時に使うと思われるユーザー数と おおよそ等しくするのが良いでしょう。

FreeBSD 4.5 からは、これを明示的に `0` に設定すると、システムが設定を自動調整します[5]。それより前のバージョンの FreeBSD を使っているか、自分で管理したい場合、特に X ウインドウシステムを使ったり、ソフトウエアをコンパイルするなら、 `maxusers` は最低 4 にして下さい。 その理由は、`maxusers` によって計算される最も 重要なテーブルがプロセスの最大数で、それは `20 + 16 * maxusers` となります。 もし、`maxusers` を 1 にすると、 同時に 36 プロセスしか利用できなくなりますが、 システムは起動時に 18 ほどのプロセスを立ち上げ、 X ウインドウシステムは 15 ほどのプロセスを立ち上げるので、 オンラインマニュアルを読むような単純なタスクでさえ フィルタ、展開、表示に 9 個のプロセスを利用するために、プロセス数不足になります。 `maxusers` を 64 に設定すると、 1044 個のプロセスを同時に利用することができるので、 殆どのユーザには充分でしょう。 もしあなたが別のプログラムを立ち上げる時、 恐れられている proc table full エラーが 発生する場合や、`ftp.FreeBSD.org` のように多数のユーザにより 同時に利用されるサーバを動かしている場合には、 この数字を増やしてカーネルを再構築することができます。

> Note: `maxusers` はあなたのマシンにログインする ユーザ数を制限するものでは ありません。 それは単に、あなたのシステムを使うであろうユーザの最大数や それぞれのユーザがどれくらいのプロセスを走らせるかに 合わせて各種テーブルの大きさを設定するだけです。 同時にリモートログインする最大ユーザ数を制限するキーワードは `pseudo-device pty 16` です。

    # Floating point support - do not disable.
    device          npx0     at nexus? port IO_NPX irq 13

`npx0` はハードウェアコプロセッサか ソフトウエアエミュレータのどちらかである浮動小数点演算ユニットへの FreeBSD におけるインタフェースです。 これは任意選択ではありません。

    # Pseudo devices - the number indicates how many units to allocate.
    pseudo-device   loop          # Network loopback

TCP/IP の汎用ループバックデバイスです。 `localhost` (すなわち `127.0.0.1`) に対して telnet や FTP で接続すると、この疑似デバイスを通して戻ってきます。 これは必須です。

以下に続くすべては大体において追加設定項目です。 詳細は各項目の次に書かれている注意書きを参照して下さい。

    #makeoptions     DEBUG=-g          #Build kernel with gdb(1) debug symbols
    options          MATH_EMULATE      #Support for x87 emulation

この行では、あなたのコンピュータが浮動小数点演算コプロセッサを 持たない場合(CPU が 386 又は 486SX)、 カーネルにシミュレートさせるよう設定します。 あなたが 486DX, 又は (387 や 487 チップを別途搭載した) 386, 486SX 又は更に上位 (Pentium, Pentium II 他) を持っている場合はコメントアウトして下さい。

> Note: FreeBSD の浮動小数点エミュレーションルーチンはあまり正確では ありません。 もしあなたが浮動小数点コプロセッサを持っておらず、 かつベストな演算精度が必要であれば、GNU の浮動小数点サポートを 利用する `GPL_MATH_EMULATE` を使ってみて下さい。 このオプションはライセンス上の理由によりデフォルトでは 含まれていません。

    options          INET          #InterNETworking

ネットワークのサポート。 ネットワークに接続する予定がなくてもこのオプションは残して下さい。 殆どのプログラムは少なくともループバックネットワーク (あなたの PC の中でのネットワーク接続) を必要としますので、 基本的にこの行は必須です。

    options          INET6          #IPv6 communications protocols

このオプションは IPv6 通信プロトコルを利用可能にします。

    options          FFS          #Berkeley Fast Filesystem
    options          FFS_ROOT     #FFS usable as root device [keep this!]

これは標準のハードドライブファイルシステムです。 ハードディスクから起動する場合は残して下さい。

    options          UFS_DIRHASH  #Improve performance on big directories

このオプションは、メモリを多少余分に食うものの、 大きなディレクトリに対するディスク操作を高速化するコードを有効にします。 大規模なサーバや対話的なワークステーションではこのオプションを残しておいて、 ファイアウォールのように、メモリが貴重で ディスクアクセス速度がそれほど重要でない 小規模なシステムでは削除するとよいでしょう。

    options          SOFTUPDATES  #Enable FFS Soft Updates support

このオプションは、カーネル内の Soft Updates 機能を有効にし、 ディスクへの高速な書き込みを支援します。 4.X ブランチではデフォルトで有効にされましたが、 有効になっていない可能性もあります。 mount(8) の出力を見て、有効になっているかどうか確認してください。 `soft-updates` オプションが見当たらなければ、 tunefs(8) か、新規のファイルシステムについては newfs(8) で有効にする必要があります。

    options          MFS          #Memory Filesystem
    options          MD_ROOT      #MD is a potential root device

これはメモリ上にマップされたファイルシステムです。 これは基本的に一時ファイルの高速格納用の RAM ディスクであり、 あなたが有効に利用したい大量のスワップスペースを持っている 場合には有用でしょう。 多くのプログラムが一時データをここに保存することから、 MFS パーティションをマウントする最適な場所は `/tmp` ディレクトリです。 MFS RAM ディスクを `/tmp` にマウントするには 次の行を `/etc/fstab` に追加して下さい:

    /dev/ad1s2b    /tmp mfs rw 0 0

次に再起動するか、コマンド `mount /tmp` を実行して下さい。

    options          NFS          #Network Filesystem
    options          NFS_ROOT     #NFS usable as root device, NFS required

ネットワークファイルシステム。 Unix ファイルサーバから TCP/IP を介してパーティションを マウントするのでない限り、これらの行をコメントアウトして下さい。

    options          MSDOSFS      #MSDOS Filesystem

MS-DOS ファイルシステム。 起動時に DOS でフォーマットされたハードドライブを マウントするのでない限り、この行は安全にコメントアウトできます。 この機能は最初に DOS パーティションをマウントする時に自動的に ロードされます。 又、優秀な mtools (Ports コレクションにあります) を使ってもマウント、 アンマウントすることなしに DOS フロッピーにアクセスすることができます。 (`MSDOSFS` は必要としません)

    options          CD9660       #ISO 9660 Filesystem
    options          CD9660_ROOT  #CD-ROM usable as root, CD9660 required

CD-ROM 用の ISO 9660 ファイルシステム。 もしあなたが CD-ROM ドライブを持っていないか、 時々データ CD をマウントするだけならこの行をコメントアウトしても 大丈夫です (データ CD を最初にマウントする時、自動的にロードされます)。 音楽 CD はこのファイルシステムを必要としません。

    options          PROCFS       #Process filesystem

プロセスファイルシステム。 これは `/proc` にマウントされる、 ファイルシステムの “ふりをする” もので、 ps(1) のようなプログラムに、どんなプロセスが走っているか に関するより多くの情報を提供させる事ができます。

    options          COMPAT_43    #Compatible with BSD 4.3 [KEEP THIS!]

4.3BSD との互換機能です。 有効なままにして下さい。 この行をコメントアウトするとおかしな動きをするプログラムがあります。

    options          SCSI_DELAY=15000    #Delay (in ms) before probing SCSI

この行は、カーネルがそれぞれの SCSI 機器を検出する前に 15 秒間待つようにします。 あなたが IDE ドライブしか持たないなら無視して結構です。 そうでないなら、起動時間を短くするため、おそらく待つ時間を短く、 5 秒くらいにしたいでしょう。 勿論、そうした場合に FreeBSD が SCSI 機器を認識しなくなった場合は 時間を元に戻す必要があります。

    options          UCONSOLE            #Allow users to grab the console

ユーザにコンソールを所有することを許可します。 X のユーザには役に立ちます。 たとえば `xterm -C` と入力すれば、コンソール xterm を実行できます。ここにはあなたが受け取る write(1), talk(1) などのメッセージや、 カーネルからのコンソールメッセージが表示されます。

    options          USERCONFIG          #boot -c editor

このオプションは起動メニューからコンフィグレーションエディタ を起動することができるようにします。

    options          VISUAL_USERCONFIG   #visual boot -c editor

このオプションは起動メニューからビジュアルコンフィグレーション エディタを起動できるようにします。

> Note: FreeBSD バージョン 5.0 以降では、新しく device.hints(5) を利用する方法が採用され、userconfig は使われなくなりました。 device.hints(5) に関する詳しい情報は Section 12.5 をご覧ください。

    options          KTRACE              #ktrace(1) support

この行はデバッギングに役立つカーネルプロセスのトレースを 可能にします。

    options          SYSVSHM             #SYSV-style shared memory

このオプションは System V 共有メモリを提供します。 この機能の最も一般的な使用方法は X における XSHM 拡張です。 多くのグラフィックス重視のプログラムではこの機能を自動的に 描画のスピードアップに利用します。 X を使っているなら、これを含めておいた方がいいでしょう。

    options          SYSVSEM             #SYSV-style semaphores

System V セマフォのサポート。 あまり使われませんが、カーネルサイズは数百バイト大きくなるだけです。

    options          SYSVMSG             #SYSV-style message queues

System V のメッセージのサポート。 これもカーネルサイズを数百バイト大きくするだけです。

> Note: ipcs(1) コマンドを実行するとこれらの System V 機能を使っているプロセスのリストを表示します。

    options    P1003_1B        #Posix P1003_1B real-time extensions
    options     _KPOSIX_PRIORITY_SCHEDULING

リアルタイム拡張が 1993 POSIX に追加されました。 Ports コレクションの内のいくつかのアプリケーション (たとえば Star Office) はこれを使っています。

    options        ICMP_BANDLIM        #Rate limit bad replies

このオプションは ICMP エラー応答のバンド幅制限を可能にします。 サービス不能パケットによる攻撃からマシンを保護するために必要です。

    # To make an SMP kernel, the next two are needed
    #options        SMP                     # Symmetric MultiProcessor Kernel
    #options        APIC_IO                 # Symmetric (APIC) I/O

上の行は両方とも SMP サポートのために必要です。

    device          isa

FreeBSD がサポートするすべての PC はこれらの内のひとつを 持っています。 あなたが IBM PS/2 (マイクロチャネルアーキテクチャ) マシンを持っている場合、FreeBSD は、現時点では限定的な対応を提供しています。 MCA の対応状況に関する詳細は、 `/usr/src/sys/i386/conf/LINT` をご覧ください。

    device          eisa

あなたが EISA マザーボードを持っている場合、 この行を含めて下さい。これは EISA バスに接続されているすべての デバイスの自動検出と設定を可能にします。

    device          pci

あなたが PCI マザーボードを持っている場合、この行を含めて下さい。 これは PCI カードの自動検出と PCI から ISA バスへのゲートウエイを 可能にします。

    # Floppy drives
    device          fdc0        at isa? port IO_FD1 irq 6 drq 2
    device          fd0         at fdc0 drive 0
    device          fd1         at fdc0 drive 1

これはフロッピーディスクコントローラです。 `fd0` は `A:` フロッピードライブ、`fd1` は `B:` ドライブです。

    device          ata

このドライバはすべての ATA と ATAPI デバイスをサポートします。 最近のマシンでは `device ata` 行を 1 行書くだけで すべての PCI ATA/ATAPI デバイスを検出することができます。

    device          atadisk                 # ATA disk drives

ATA ディスクドライブには `device ata` と共にこの行が必要です。

    device          atapicd                 # ATAPI CDROM drives

ATAPI CDROM ドライブには `device ata` と共にこの行が必要です。

    device          atapifd                 # ATAPI floppy drives

ATAPI フロッピードライブには `device ata` と共にこの行が必要です。

    device          atapist                 # ATAPI tape drives

ATAPI テープドライブには `device ata` と共にこの行が必要です。

    options         ATA_STATIC_ID           #Static device numbering

この行はコントローラ番号を (古いドライバのように) 静的に 割り当てます。そうでない場合、デバイス番号は動的に割り当てられます。

    # ATA and ATAPI devices
    device          ata0        at isa? port IO_WD1 irq 14
    device          ata1        at isa? port IO_WD2 irq 15

上の行は古い、PCI ではないシステムの場合の形式です。

    # SCSI Controllers
    device          ahb        # EISA AHA1742 family
    device          ahc        # AHA2940 and onboard AIC7xxx devices
    device          amd        # AMD 53C974 (Teckram DC-390(T))
    device          dpt        # DPT Smartcache - See LINT for options!
    device          isp        # Qlogic family
    device          ncr        # NCR/Symbios Logic
    device          sym        # NCR/Symbios Logic (newer chipsets)

    device          adv0       at isa?
    device          adw
    device          bt0        at isa?
    device          aha0       at isa?
    device          aic0       at isa?

SCSI コントローラです。 あなたのシステムにないデバイスはコメントアウトして下さい。 もし IDE しかないシステムならこれらすべてを削除できます。

    # SCSI peripherals
    device          scbus      # SCSI bus (required)
    device          da         # Direct Access (disks)
    device          sa         # Sequential Access (tape etc)
    device          cd         # CD
    device          pass       # Passthrough device (direct SCSI
    access)

SCSI 周辺機器です。 あなたが持っていないデバイスはコメントアウトして下さい。 もし IDE しか持っていないならこれらを完全に削除できます。

    # RAID controllers
    device          ida        # Compaq Smart RAID
    device          amr        # AMI MegaRAID
    device          mlx        # Mylex DAC960 family

サポートされる RAID コントローラです。 これらのどれも持っていない場合、すべてをコメントアウト又は 削除することができます。

    # atkbdc0 controls both the keyboard and the PS/2 mouse
    device          atkbdc0    at isa? port IO_KBD

キーボードコントローラ (`atkbdc`) は AT キーボード及び PS/2 スタイルポインティングデバイスの I/O サービスを提供します。 キーボードドライバ (`atkbd`) と PS/2 ポインティングデバイスドライバ (`psm`) はこのコントローラを必要とします。

    device          atkbd0     at atkbdc? irq 1

`atkbd` ドライバ。 `atkbdc` コントローラと協調して動作し、 AT キーボードコントローラに接続された AT 84 キーボードや AT 拡張キーボードへのアクセスを提供します。

    device          psm0       at atkbdc? irq 12

あなたのマウスが PS/2 マウスポートに接続するタイプなら このデバイスを使って下さい。

    device          vga0        at isa?

ビデオカードドライバです。

    # splash screen/screen saver
    pseudo-device          splash

起動時に画面がはじけます。 スクリーンセーバもこのデバイスを必要とします。

    # syscons is the default console driver, resembling an SCO console
    device          sc0          at isa?

`sc0` はSCOに類似したデフォルトの コンソールドライバです。 殆どのフルスクリーンのプログラムは `termcap` のようなターミナルデータベールライブラリにアクセスするので、 `sc0` を使うか `VT220` 互換のコンソールドライバである `vt0` を使うかは重要ではありません。 ログイン時、このコンソールでフルスクリーンプログラムが動かないときは `TERM` 変数を `scoansi` に設定して下さい。

    # Enable this and PCVT_FREEBSD for pcvt vt220 compatible console driver
    #device          vt0     at isa?
    #options         XSERVER          # support for X server on a vt console
    #options         FAT_CURSOR       # start with block cursor
    # If you have a ThinkPAD, uncomment this along with the rest of the PCVT lines
    #options         PCVT_SCANSET=2   # IBM keyboards are non-std

これは VT220 互換のコンソールドライバで、 VT100/102 と後方互換性があります。 `sc0` とハード的に互換性がないラップトップでも 問題なく動きます。 ここでもログイン時に `TERM` 変数を `vt100` 又は `vt220` と設定して下さい。 このドライバは、`sc0` デバイス用の `termcap` や `terminfo` のエントリが無い、ネットワーク上の多くの異なったマシンに 接続する際にも有用です -- `vt100` は仮想的にすべてのプラットフォームで有効であるべきです。

    # Power management support (see LINT for more options)
    device          apm0     at nexus? disable flags 0x20  # Advanced Power Management

先進的な電源管理機能 (APM) のサポート。 ラップトップでは役に立つでしょう。

    # PCCARD (PCMCIA) support
    device          card
    device          pcic0    at isa? irq 10 port 0x3e0 iomem 0xd0000
    device          pcic1    at isa? irq 11 port 0x3e2 iomem 0xd4000 disable

PCMCIA サポート。ラップトップを使っているなら必要でしょう。

    # Serial (COM) ports
    device          sio0     at isa? port IO_COM1 flags 0x10 irq 4
    device          sio1     at isa? port IO_COM2 irq 3
    device          sio2     at isa? disable port IO_COM3 irq 5
    device          sio3     at isa? disable port IO_COM4 irq 9

これらは MS-DOS/Windows の世界では COM1からCOM4 と呼ばれている 4 つのシリアルポートです。

> Note: もしあなたが内蔵モデムを COM4 に、シリアルポートを COM2 に設定している場合、FreeBSD からアクセスするには、 (IRQ2=IRQ9 という、不明瞭な技術的理由により) モデムの IRQ を 2 に変更する必要があります。 もしマルチポートシリアルカードを持っていてこれらの設定の正しい 数値に関する情報がほしい場合はマニュアルページ sio(4) を参照して下さい。 ビデオカードのいくつかは (S3 チップベースのものは特に) IO アドレスを `0x*2e8` と言う形式で表現する一方、 多くの安価なシリアルカードは 16 ビットの IO アドレスを完全に デコードしないので、これらのカードを使った場合衝突が起こり、 事実上 COM4 ポートを使用不可能にします。

> 各々のシリアルポートは (共有割り込み番号をサポートする マルチポートカードを使っていない限り) 固有の IRQ を必要とします。 従って COM3 と COM4 用のデフォルト IRQ は利用できません。

    # Parallel port
    device          ppc0    at isa? irq 7

ISA バスパラレルポートインタフェースです。

    device          ppbus      # Parallel port bus (required)

パラレルポートバスのサポートを提供します。

    device          lpt        # Printer

パラレルポートプリンタのサポートです。

> Note: 上の 3 つはすべてパラレルプリンタを利用可能にするために 必要です。

    device          plip       # TCP/IP over parallel

パラレルネットワークインタフェース用のドライバです。

    device          ppi        # Parallel port interface device

汎用I/O (“geek port”) + IEEE1284 I/O です。

    #device         vpo        # Requires scbus and da

Iomega の Zip ドライブ用です。`scbus` と `da` サポートが必要です。 EPP 1.9モードを使うと最高の性能が得られます。

    # PCI Ethernet NICs.
    device          de         # DEC/Intel DC21x4x (“Tulip”)
    device          fxp        # Intel EtherExpress PRO/100B (82557, 82558)
    device          tx         # SMC 9432TX (83c170 “EPIC”)
    device          vx         # 3Com 3c590, 3c595 (“Vortex”)
    device          wx         # Intel Gigabit Ethernet Card (“Wiseman”)

PCI ネットワークカードのドライバです。あなたのシステムに ないものはコメントアウトするか削除して下さい。

    # PCI Ethernet NICs that use the common MII bus controller code.
    device          miibus     # MII bus support

MII バスサポートはいくつかの PCI 10/100 イーサネット NIC、 すなわち MII に従うトランシーバや MII のようなトランシーバ制御 インタフェースを実装するもの、に必要となります。 カーネルコンフィギュレーションに `device miibus` を追加することで、汎用 miibus API のサポートと、 特定のドライバを必要としない場合に利用される汎用のものを含む すべての PHY ドライバが導入されます。

    device          dc         # DEC/Intel 21143 and various workalikes
    device          rl         # RealTek 8129/8139
    device          sf         # Adaptec AIC-6915 (“Starfire”)
    device          sis        # Silicon Integrated Systems SiS 900/SiS 7016
    device          ste        # Sundance ST201 (D-Link DFE-550TX)
    device          tl         # Texas Instruments ThunderLAN
    device          vr         # VIA Rhine, Rhine II
    device          wb         # Winbond W89C840F
    device          xl         # 3Com 3c90x (“Boomerang”, “Cyclone”)

MII バスコントローラコードを利用するドライバです。

    # ISA Ethernet NICs.
    device          ed0    at isa? port 0x280 irq 10 iomem 0xd8000
    device          ex
    device          ep
    # WaveLAN/IEEE 802.11 ワイヤレス NIC。
    # 注: WaveLAN/IEEE は PCMCIA デバイスとしてしか実在しません。
    # なので ISAア タッチメントは必要なく、リソースは常に PC カードコードに
    # より動的に割り当てられます。
    device          wi
    # Aironet 4500/4800 802.11 ワイヤレス NIC。
    # 注: 下の宣言は ISA PnP モード (工場出荷時設定) のISAカード、PCMCIA
    # 及び PCI カードにのみ働きます。もし、ISA カードの I/O アドレスと IRQ
    # を手動で設定している場合は、ここでそれらのパラメータを指定しなく
    # てはいけません。
    device          an
    # これらの検出順序は現在 i386/isa/isa_compat.c により決められます。
    device          ie0    at isa? port 0x300 irq 10 iomem 0xd0000
    device          fe0    at isa? port 0x300
    device          le0    at isa? port 0x300 irq 5 iomem 0xd0000
    device          lnc0   at isa? port 0x280 irq 10 drq 0
    device          cs0    at isa? port 0x300
    device          sn0    at isa? port 0x300 irq 10
    # requires PCCARD (PCMCIA) support to be activated
    #device         xe0    at isa?

ISA イーサネットドライバです。 どのカードがどのドライバによりサポートされているかは `/usr/src/sys/i386/conf/LINT` を参照して下さい。

    pseudo-device   ether         # Ethernet support

`ether` はイーサネットカードを持っている場合に のみ必要です。汎用イーサネットプロトコルコードを含みます。

    pseudo-device   sl      1     # Kernel SLIP

`sl` は SLIP サポートを行います。 SLIP は設定のより簡単な、モデム-モデム間の接続にはより適していて より高機能な PPP に殆ど取って代わられています。 `sl` に続く `数字` には同時に持てる SLIP セッション数を指定します。

    pseudo-device   ppp     1     # Kernel PPP

これはダイアルアップ接続用のカーネル PPP サポートです。 他にも `tun` を利用し、デマンドダイアリングのような 柔軟性と機能を提供するユーザーランドのアプリケーションとして 実装された PPP が存在します。`ppp` に続く `数字` には同時に持てる PPP セッション数を 指定します。

    pseudo-device   tun           # Packet tunnel.

これはユーザーランド PPP ソフトウエアにより利用されます。 `tun` に続く `数字` には同時に持てる PPP セッション数を指定します。 詳細はこの本の PPP セクションを 参照して下さい。

    pseudo-device   pty           # Pseudo-ttys (telnet etc)

これは “疑似ターミナル” 或いはシミュレートされた ログインポートです。 これは入ってくる `telnet` と `rlogin` セッション、 xterm やその他の Emacs のようなアプリケーションにより利用されます。 `pty` の後の `数字` は、 生成される `pty` の数を示します。もし同時にデフォルトの 16 より多くの xterm ウィンドウやリモートログインが 必要な場合、必要に応じてこの数字を増やして下さい。 最大は 256 です。

    pseudo-device   md            # Memory “disks”

メモリディスク疑似デバイス。

    pseudo-device   gif

または

    pseudo-device   gif     4     # IPv6 and IPv4 tunneling

この行は IPv6 over IPv4 トンネル、IPv4 over IPv6 トンネル、 IPv4 over IPv4 トンネル、IPv6 over IPv6 トンネルを提供します。 FreeBSD 4.4 からは、`gif` デバイスは “auto-cloning (自動複製)” しますので、 (`gif` のあとに数値がこない) はじめの例を使ってください。 それより前のバージョンの FreeBSD では、数値が必要です。

    pseudo-device   faith   1     # IPv6-to-IPv4 relaying (translation)

この疑似デバイスは自分宛に送られたパケットを受け取り、 IPv4/IPv6 変換デーモンに渡します。

    # The `bpf' pseudo-device enables the Berkeley Packet Filter.
    # Be aware of the administrative consequences of enabling this!
    pseudo-device   bpf           # Berkeley packet filter

これはバークレーパケットフィルタです。 この疑似デバイスはネットワークインタフェースを、イーサネットのような ブロードキャストネットワーク上ですべてのパケットを拾うことのできる promiscuous モードに設定できるようにします。 これらのパケットはディスクに取り込むこともできますし、 tcpdump(1) を使ってチェックをすることもできます。

> Note: `bpf` 疑似デバイスは、dhclient(8) がデフォルトルータ (ゲートウェイ) の IP アドレスなどを取得する ためにも使われています。DHCP を使っているなら、これはコメント アウトしないでください。

    # USB support
    #device         uhci          # UHCI PCI->USB interface
    #device         ohci          # OHCI PCI->USB interface
    #device         usb           # USB Bus (required)
    #device         ugen          # Generic
    #device         uhid          # “Human Interface Devices”
    #device         ukbd          # Keyboard
    #device         ulpt          # Printer
    #device         umass         # Disks/Mass storage - Requires scbus and da
    #device         ums           # Mouse
    # USB Ethernet, requires mii
    #device         aue           # ADMtek USB ethernet
    #device         cue           # CATC USB ethernet
    #device         kue           # Kawasaki LSI USB ethernet

様々なUSBデバイスのサポートです。

より詳細な情報と、FreeBSD によりサポートされる他のデバイスに ついては `/usr/src/sys/i386/conf/LINT` を参照して下さい。

## 8.5. デバイスノードを作る

> Note: FreeBSD 5.0 以降を動かしているなら、 この節を飛ばして構いません。そのバージョンでは devfs(5) を用いて、ユーザに意識させずにデバイスノードを割り当てています。

カーネル内のほとんどすべてのデバイスは対応する “node” エントリが `/dev` ディレクトリにあります。これらのノードは普 通のファイルのように見えますが、実際にはプログラムがデバイスに アクセスするのに用いるカーネル内への特別なエントリです。 シェルスクリプトである `/dev/MAKEDEV`はオペレーティング システムを最初にインストールする時に実行され、サポートされてい る大部分のデバイスのノードを作ります。しかし、 すべての ノードが作られるわけではありませんので 新しいデバイスのサポートを加える時は対応するエントリがこのディ レクトリにあるかどうか確認してもしなければ、作ってください。 以下に例を示します。

IDE CD-ROMのサポートをカーネルに加えるとします。次の行 を加えます。

    device acd0

これにしたがって、`/dev`ディレクトリに `acd0` で始まるエントリをさがしてください。 1文字が後ろにつくかもしれません。 後ろについた文字が `c` であるか、先頭に `r` のつくエントリは “raw” デバイスを示します。 それらのファイルがないことが明らかになったとします。そこで `/dev` ディレクトリに移動して次のようにタイプします。

    # sh MAKEDEV acd0

スクリプトの実行が終ったら `/dev`に `acd0c` と `racd0c` エントリがあることを確認してください。これによ り正しく実行されたことがわかります。

サウンドカードの場合、以下のコマンドで対応する エントリが作成されます:

    # sh MAKEDEV snd0

> Note: サウンドカードのようなデバイスのノードを作る場合で、もし他 の人がマシンにアクセスするようであれば、そのデバイスを `/etc/fbtab` ファイルに追加して外部からのアクセスから 保護するのが望ましいでしょう。このファイルの詳細については fbtab(5) を参照してください。

`GENERIC` に含まれていないデバイスはエントリがありませんから、以上 の簡単な手順をおこなうことになります。

> Note: すべての SCSI コントローラは同じ `/dev` の エントリを使用しますのでノードを作る必要はありません。 またネッ トワークカードと SLIP/PPP 疑似デバイスは `/dev` にはエント リがありませんのでこれらについても作る必要がありません。

## 8.6. 問題が起きた場合には

カスタムカーネルを作る場合に起きるトラブルは、 次の 5 種類に分けられます。

`config` コマンドの失敗

  カーネルコンフィグレーションファイルに設定を行なってから config(8) コマンドが失敗したのであれば、 おそらくファイルのどこかに単純な間違いがあります。 さいわい、config(8) はトラブルの起きた行番号を出力しますので vi で素早く見つけることができます。 例えば、次のように出力された場合

      config: line 17: syntax error

  vi のコマンドモードで `17G` とタイプすれば、 問題のところへ飛ぶことができます。 `GENERIC` カーネルのファイルや、 他のリファレンスと比較して注意深く修正してください。

`make` コマンドの失敗

  `make` コマンドが失敗した場合には、 カーネル設定で config(8) がとらえられなかったような間違いをしていることが多いようです。 もう一度コンフィグレーションファイルを見直してください。 それでも問題を解決することができなければ、 FreeBSD general questions メーリングリスト へあなたのカーネルコンフィグレーションファイルをつけてメールしてください。 誰かが素早く間違いを見つけてくれるでしょう。

新しいカーネルのインストールの失敗

  カーネルが無事コンパイルできたのに、インストールに失敗 (`make install` または `make installkernel` に失敗) したら、最初に確認すべきことは、システムがセキュアレベル 1 以上で動いていないかどうかです (init(8) 参照)。 カーネルのインストール時には、カーネルから immutable (変更不可) フラグを外して、 新しい方に変更不可フラグを設定しようとします。セキュアレベル 1 以上では、システム内のどのファイルからも変更不可フラグを外せないため、 カーネルのインストールはセキュアレベル 0 以下で行わなければなりません。

カーネルが起動しない

  新しいカーネルが起動しなかったり、 デバイスの認識をしない場合でもあわてないでください! さいわい、FreeBSD には利用できないカーネルから復帰する洗練されたメカニズムがあります。 それは、FreeBSD のブートローダで起動したいカーネルを選択するだけです。 システムが 10 からカウントダウンしている時に、この機能が使えます。 Enter キー以外の任意のキーを押して、 `unload` と入力してから、 `boot `kernel.old`` か他の正常に起動するカーネルを入力してください。 カーネルの再設定をおこなう場合にはいつも、 確実に動くことが分かっているカーネルを用意しておくようにすると良いでしょう。

  問題のないカーネルで起動した後に あなたのコンフィグレー ションファイルを調べ、 再び構築を試みてください。 `/var/log/messages` ファイルにはすべての成功した 起動時のカーネルメッセージやその他の記録があり、これ は助けになる情報の一つでしょう。また、 dmesg(8) コマンドは現在の起動時のカーネルメッ セージを出力します。

  > Note: カーネルの構築中にトラブルが起きた時に使うために GENERICや他のカーネルを次の構築で消されない ように異る名前で保存するようにしてください。kernel.old は新しいカーネルをインストールする 時に、 その一つ前にインストールしたうまく動かないかもしれ ないカーネルで上書きされてしまいますので当てにできませ ん。またできる限り早く動作しているカーネルを本来の `kernel`の位置に移動させてください。 そうしないと ps(1) のようなコマンドが正しく動きません。 `make` でインストールされたカーネルのファイルを (別のカーネルに戻すために) “アンロック” するための特別 のコマンドは

  >     # chflags noschg /kernel

  > です。これができないのなら、securelevel(8) を 0 より大きい値にしているのかもしれません。 `/etc/rc.conf` の `kern_securelevel` を `-1` に変更して再起動してください。新し いカーネルに満足したら、前の設定に戻してよいでしょう。

  > また、 新しい置き換えたカーネルあるいは重要ファイ ルを動かしたり変更されないように “ロック” するには 次のようにします。

  >     # chflags schg /kernel

カーネルは動きますが ps(1) は動きません!

  システムユーティリティと異る バージョンのカーネルをインストールした場合、例えば 4.x のカーネルを 3.x システム上にインストールするような場合、 ps(1) や vmstat(8) のような多くの システムステータスコマンドは動かなくなります。 `libkvm` を再コンパイルして、 これらのユーティリティを作りなおす必要があります。 これは、カーネルとそれ以外で異なるバージョンを組み合わせて オペレーティングシステムを使用することが推奨されない理由の 一つとなっています。

# Chapter 9. プリンタの利用

寄稿: Sean Kelly. 改訂:Jim Mock.

## 9.1. この章では

FreeBSD は古いインパクトプリンタから最新のレーザープリンタまで幅広いプリンタが利用でき、 実行しているアプリケーションから高品質な印刷出力が行えます。

FreeBSD はネットワーク上のプリンタサーバとして動作するように設定することもできます。 この機能は、他の FreeBSD コンピュータや、Windows や Mac OS ホストから印刷ジョブを受け取ることができます。 FreeBSD は印刷ジョブを 1 つずつ処理することを保証します。 また、どのユーザやマシンが最も多く印刷しているかの統計を取り、 どの印刷物が誰の物か表示する “バナー” ページの作成などを行うことができます。

この章を読めば以下のことがわかります。

- FreeBSD プリントスプーラの設定方法。

- 入力ドキュメントをプリンタが扱える印刷フォーマットへ変換するなどといった、 特別な印刷ジョブを別に取り扱うための印刷フィルタのインストール方法。

- 印刷物へのヘッダやバナーの適用方法。

- 他のコンピュータに接続されたプリンタへの印刷方法。

- ネットワークに直接接続されたプリンタへの印刷方法。

- 印刷ジョブの上限サイズや特定のユーザからの印刷拒否といった、 プリンタの制限の制御方法。

- 印刷の統計とプリンタの使用状況の取得方法。

- 印刷問題のトラブルシューティング方法。

この章を読み始める前に以下を済ませておいてください。

- 新しいカーネルの設定とインストール方法について理解すること (Chapter 8)。

## 9.2. はじめに

FreeBSD でプリンタを使うために、それらを LPD スプーリングシステムとしても知られる Berkeley ラインプリンタスプーリングシステムで動作するように設定する必要があります。 これは FreeBSD での標準的なプリンタ制御システムです。 この章では、しばしば単に LPD と呼ばれる、 LPD スプーリングシステムを紹介し、 その設定方法について説明します。

あなたがすでに LPD やその他のプリンタスプーリングシステムに詳しいのなら、 スプーリングシステムの設定 まで読み飛ばしてもかまいません。

LPD はホストのプリンタに関するあらゆることを制御します。 ここで言う制御としては、次のことがあげられます。

- ホストに接続されたプリンタ、 あるいはネットワーク上の他ホストに接続されたプリンタに対するアクセス制御を行ないます。

- ファイルをプリントする要求に対して許可を与えます。 この要求は特にジョブと呼ばれています。

- 各々のプリンタのキューを管理することにより、 複数のユーザがあるプリンタに対して同時にアクセスすることを防ぎます。

- ヘッダページ (バナーまたは バーストページとしても知られています) をプリントすることができます。 これにより、 プリントアウトの山の中から自分がプリントしたジョブを見つけやすくなります。

- シリアルポートに接続したプリンタ用に通信パラメータを管理します。

- ネットワーク経由で他のホスト上の LPD スプーラにジョブを送ることができます。

- 様々なプリンタ言語やプリンタの能力に応じてジョブの形式を整えるため、 特別なフィルタを起動することができます。

- プリンタの使用に対して課金を行なうことができます。

設定ファイル (`/etc/printcap`) を通して、専用のフィルタプログラムを用いることにより、 多種多様なプリンタ機器に対して、上述の機能の全部または一部を LPD システムに行なわせることができます。

### 9.2.1. どうしてスプーラを使うべきなのか

あなたのシステムを利用するのがあなた一人だけだとしたら、 アクセス制御もヘッダページもプリンタ利用に対する課金も必要ないのに、 なぜわざわざスプーラに煩わされなければならないのか疑問に思うかも知れません。 プリンタに対する直接アクセスを許可することもできるのですが、 とにかくスプーラを使用するべきです。その理由は、

- LPD はジョブをバックグラウンドで処理します。 データがプリンタに送信されるまで待つ必要がなくなります。

- LPD ではジョブをフィルタを通してプリントすることが簡単にできます。 これにより、印刷物のヘッダに時刻や日付を入れたり、 特別なファイル形式 (TeX の DVI ファイルなど) をプリンタが処理できる形式に変更することができ、 これらの作業を手動で行なう必要がなくなります。

- プリント処理を行なうフリー、 または商用のプログラムのほとんどは、 システムのスプーラとやりとりするように作られています。 スプーリングシステムをセットアップすることで、 今後加えるかもしれない、あるいは、 すでに持っている別のソフトウェアをより簡単にサポートすることができるでしょう。

## 9.3. 基本的なセットアップ

LPD スプーリングシステムを用いてプリンタを使用するためには、 プリンタ機器と LPD 用ソフトウェアの両方を準備する必要があります。 本文書では次の二段階のレベルに分けて説明をします。

- プリンタを接続する方法、 プリンタにどのように通信するかを LPD に指示する方法や、 プレインテキストをプリンタで印字する方法については、 プリンタの簡単な設定をご覧ください。

- 様々な形式のファイルを印字する方法、 ヘッダページを印字する方法、 ネットワーク経由でプリンタに印字する方法、 プリンタを制御する方法、 プリンタの使用に対する課金を行なう方法についてはプリンタ設定上級編をご覧ください。

### 9.3.1. プリンタ設定導入編

この節では、プリンタ機器やプリンタを使用するための LPD 用ソフトウェアを設定する方法について述べます。 この節の概要は次のとおりです。

- プリンタ機器の設定では、 プリンタをコンピュータに接続するためのヒントがいくつか書かれています。

- ソフトウェアの設定では、 LPD のスプーラ設定ファイル (`/etc/printcap`) の設定方法について書かれています。

データをプリンタに送るためにシリアルまたはパラレルインタフェースではなく、 ネットワークプロトコルを使用する場合は、 ネットワークにおけるデータストリームインタフェースを持つプリンタをご覧ください。

この節のタイトルは “プリンタ設定導入編” ですが、 実際の設定はかなり複雑です。 プリンタをコンピュータに接続し、 LPD スプーラを起動させることは一番困難な作業です。 ヘッダページを出力させたり課金したりするオプションの設定は、 一度プリンタがうまく動くようになればとても簡単です。

#### 9.3.1.1. プリンタ機器の設定

この節では、プリンタに PC を接続するための様々な方法について説明しています。 ここでは、ポートやケーブルの種類、 FreeBSD がプリンタとの通信に必要なカーネルコンフィグレーションについても言及しています。

もしプリンタが既に接続されていて、 他のオペレーティングシステム上でプリンタからの印字に成功している場合は、 ソフトウェアの設定まで読み飛ばすことが多分できるでしょう。

##### 9.3.1.1.1. ポートとケーブル

最近の PC 用のプリンタほとんどには次のインタフェースの一つもしくは両方がついています。

- シリアルインタフェースでは、 プリンタにデータを送信するためにコンピュータにあるシリアルポートが使用されます。 シリアルインタフェースはコンピュータ業界で共通して使用されています。 そのケーブルは容易に手に入りますし、簡単に自作することもできます。 シリアルインタフェースの場合は時々、 特別なケーブルや何か複雑な通信方式選択の設定が必要になることがあります。

- パラレルインタフェースではプリンタにデータを送信するために、 コンピュータにあるパラレルポートを使用します。 パラレルインタフェースは PC 業界では良く使われます。 ケーブルの入手は容易ですが、 自作するのはシリアルよりも困難です。 パラレルインタフェースには通常、通信方式の選択はなく、 設定は極めて単純です。

  パラレルインタフェースは “セントロニクス” インタフェースとして知られています。 これは、プリンタ用のコネクタタイプとして採用された後に名付けられました。

シリアルインタフェースはパラレルインタフェースよりも普通はデータの伝送速度が遅くなります。 パラレルインタフェースでは、通常、 (コンピュータからプリンタへの) 単方向通信のみを行なうのに対して、 シリアルインタフェースは双方向通信を行ないます。 FreeBSD でも IEEE1284 準拠のケーブルを使えば、 最近のパラレルポート (EPP や ECP) とプリンタの多くで双方向通信を行なうことができます。

通常、プリンタで双方向通信が必要となるのは、プリンタが PostScript 言語に対応しているときだけです。 PostScript プリンタからの通信は非常に多くなることがあります。 PostScript ジョブは、実際にはプリンタに送信されるプログラムです。 印字作業を行う必要は必ずしありませんし、 プログラムの結果を直接コンピュータに返してもよいのです。 PostScript プリンタでは双方向通信を使って PostScript プログラムのエラーや紙づまりといった問題をコンピュータに報告します。 ユーザはそれらの情報を知りたいと思うかも知れません。 また、PostScript プリンタで課金作業をもっとも効率よく行なうためには、 双方向通信が必要となります。 この方法ではまず、プリンタの現在のページカウント (起動してから今まで何枚の紙を印字したか) の情報を得ます。 次に、ユーザのジョブを実行し、終了後、再びページカウントを得ます。 この二つの数を差によって、 課金対象となる紙の枚数を知ることができるのです。

##### 9.3.1.1.2. パラレルポート

プリンタをパラレルインタフェースを使って接続する場合は、 セントロニクスケーブルでプリンタとコンピュータを接続してください。 詳しい説明はプリンタやコンピュータに付属する説明書に書かれているはずです。

その際、 どのパラレルポートを使用したかを覚えておいてください。 FreeBSD では最初のポートは `/dev/ppc0`、 二番目 `/dev/ppc1` であり、 三番目以降も同様に続きます。 プリンタのデバイス名にも同じ形式が使われており、 最初のパラレルポートに接続されたプリンタは `/dev/lpt0` などとなります。

##### 9.3.1.1.3. シリアルポート

シリアルインタフェースを使ってプリンタを使う場合は、 適切なシリアルケーブルでプリンタとコンピュータを接続してください。 詳しい説明はプリンタ、コンピュータ、あるいは両方に付属する説 明書に書かれているはずです。

“適切なシリアルケーブル” が良くわからないときは、 次のどれかを試してみてください。

- モデム 用ケーブルでは、 それぞれのピンは他方のコネクタの対応するピンと線でつながっています。 このタイプのケーブルは “DTE-DCE” 間ケーブルとしても知られています (訳注: 日本ではストレートケーブルという名前で売られています)。

- ヌルモデム 用ケーブルでは、 あるピンは対応するピンとを接続していますが、 あるピン (たとえば、データ送信用とデータ受信用のピン) が交差して接続したり、 いくつかのピンは内部で短絡していたりします。 このタイプのケーブルは、 “DTE-DTE” 間ケーブルと呼ばれています (訳注: 日本ではクロスケーブルという名前で売られています)。

- A シリアルプリンタ用ケーブルは、 ある特定のプリンタで必要とされるものです。 ヌルモデムケーブルと似ていますが、 内部で短絡させる代わりに、 ある信号を他方側に送るために使用しています。

この他に、 プリンタ用の通信パラメータを設定する必要があります。 通常、プリンタのフロントパネルや DIP スイッチによって制御します。 コンピュータとプリンタの双方で設定できる最高の通信速度 [bps] (ビット/秒、 ボーレートと示されているときもある) を選んでください。そして、データビット (7 または 8)、 パリティ (偶/奇/なし)、ストップビット (1 または 2) を選んでください。 そして、フローコントロールの有無 (制御なし、または XON/XOFF (“イン・バンド” または “ソフトウェア” フローコントロールとも呼ばれる)) を選びます。 以下に続くソフトウェアの設定のために、 ここでの設定を覚えておいてください。

#### 9.3.1.2. ソフトウェアの設定

本節では FreeBSD の LPD スプーリングシステムで印字をおこなうために 必要となるソフトウェアの設定について説明しています。

本節の概要は次のようになります。

1. プリンタで使用するポートのために、必要があれば、 カーネルの書き変えをおこないます。「カーネルの変更」で、 このためにしなくてはならないことを説明しています。

2. パラレルポートを使用している場合は、 パラレルポートのための通信モードを設定します。 詳細は、 「 パラレルポートの通信モードを設定する」 で説明しています。

3. オペレーティングシステムからプリンタにデータが送ら れているかをテストします。「プリンタとの通信状況を調べる」で、 どのようにテストするかの提案をいくつかおこなっています。

4. ファイル`/etc/printcap`を変更し、 LPD の設定をおこないます。 この節で、どのように変更するかを説明しています。

##### 9.3.1.2.1. カーネルの変更

オペレーティングシステムのカーネルの コンパイルをおこなうことによって、 指定されたデバイスが機能するようになります。シリアル、 または、パラレルインタフェースをプリンタで使用する場合、 必要なデバイスがこの指定の中に含まれていなくてはなりません。 したがって、 必要なデバイスがカーネルに組み込まれていない場合、 追加のシリアル、または、パラレルポートをサポートするために、 カーネルの再コンパイルが必要となるかもしれません。

シリアルポートが現在使用しているカーネルで サポートされているかどうかを調べるためには、 次のように入力します。

    # grep sioN /var/run/dmesg.boot

ここで、`N` はシリアルポートの番号を示し、この番号は 0 から始まります。 次のような出力があった場合、 カーネルはそのポートをサポートしています。

    sio2 at port 0x3e8-0x3ef irq 5 on isa
     sio2: type 16550A

パラレルポートが現在使用しているカーネルで サポートされているかどうかを調べるためには、 次のように入力します。

    # grep ppcN /var/run/dmesg.boot

ここで、N はパラレルポートの番号を示し、この番号は 0 から始まります。 次のような出力があった場合、 カーネルはそのポートをサポートしています。

    ppc0: <Parallel port> at port 0x378-0x37f irq 7 on isa0
    ppc0: SMC-like chipset (ECP/EPP/PS2/NIBBLE) in COMPATIBLE mode
    ppc0: FIFO with 16/16/8 bytes threshold

上記の出力が得られない場合、プリンタを使うため、 オペレーティングシステムにパラレル、または、 シリアルポートを認識し、使用できるようにするためには カーネルを変更する必要があります。

シリアルポートをサポートさせるには、「 FreeBSDカーネルのコンフィグレーション」の節をご覧く ださい。パラレルポートをサポートさせる場合も、その節と、 あわせて、 この節に続く節もご覧ください。

#### 9.3.1.3. ポート用エントリを `/dev` に追加する

> Note: FreeBSD 5.0 には、必要に応じてデバイスノードを自動的に作成する `devfs` が採用されています。 `devfs` を有効にした FreeBSD を実行しているのなら、 この節を読み飛ばしても問題ありません。

カーネルがシリアル、または、パラレルポートを通じての通信をサポートしていたとしても、 システム上で動いているプログラムがデータの送受信をおこなうための ソフトウェアインタフェースがさらに必要になります。 そのインタフェースは、`/dev` ディレクトリにあるエントリに相当します。

`/dev` エントリにポートを加えるために

1. su(1) コマンドで `root` になります。 パスワードを聞かれたら、`root` 用のパスワードを入力します。

2. `/dev` ディレクトリに移動します。

       # cd /dev

3. 次のように入力します。

       # ./MAKEDEV port

   ここで、`port` は作成するポート名です。 1 番目のパラレルポートに接続されているプリンタには `lpt0`, 2 番目のパラレルポートに接続されているプリンタには `lpt1` を使い、以下同様にしてください。 1 番目のシリアルポートには `ttyd0`, 2 番目のシリアルポートには `ttyd1` を使い、 以下同様にしてください。

4. 次を入力し、デバイスのエントリができたか確認します。

       # ls -l port

##### 9.3.1.3.1. パラレルポートの通信モードを設定する

パラレルインタフェースを使用している場合、FreeBSD では、 割り込み駆動型にするか、 プリンタとの通信の状況をカーネルに監視させるかのいずれかを選択できます。 FreeBSD 4.X と 5.X の汎用プリンタデバイスドライバ (lpt(4)) は ppbus(4) システムを利用しています。 これは ppc(4) ドライバを使ってパラレルポートのチップセットを制御します。

- GENERIC カーネルでは割り込み駆動方式がデフォルトになっています。 この方式では、 オペレーティングシステムはプリンタがデータを受け付けられるかどうかを調べるために、 IRQ ラインを一つ使用します。

- 監視方式では、 オペレーティングシステムにプリンタがもっとデータを受け付けられるかどうかを繰り返し尋ねるように指示します。 そして、受け付けるという応答を受けたとき、 カーネルはさらなるデータを送信します。

割り込み駆動方式は一般的にいくらか高速になりますが、貴重な IRQ ラインを一つ消費します。 HP の新しいプリンタの一部には、明らかに何かしらのタイミングの問題 (まだ正確にはわかっていません) で割り込みモードでは正常に動作しないものがあると言われています。 これらのプリンタにはポーリングモードが必要になります。 どちらかうまく機能する方を使ってください。 一部のプリンタはどちらの方式でも動作しますが、 割り込みモードでは苦痛を感じるほど低速です。

通信モードを設定するためには 2 つの方法があります。 1 つはカーネルを変更することで、もう一つは lptcontrol(8) プログラムを使用する方法です。

カーネルを設定することによって、 通信モードを変更する。

1. カーネルコンフィグレーションファイルを変更します。 `ppc0` のエントリを探してください。 2 番目のパラレルポートを設定するときは、代わりに `ppc1` を使います。 以下、3 番目のポートは `ppc2` となっていきます。

   - 割り込み駆動方式にする場合は、FreeBSD 4.X では `irq` 指定を追加します。

         device ppc0 at isa? irq N

     ここで、`N` はパラレルポート用の IRQ 番号です。

     FreeBSD 5.X では、`/boot/device.hints` ファイルの以下の行を編集して、 `N` を適切な IRQ 番号に置き換えてください。

         hint.ppc.0.irq="N"

     カーネルの設定ファイルには ppc(4) ドライバも入れなければなりません。

         device ppc

   - 監視方式を使用する場合は、 `irq` を追加してはいけません。

     FreeBSD 4.X では、カーネルコンフィグレーションファイルで以下の行を使用してください。

         device ppc0 at isa?

     FreeBSD 5.X では、`/boot/device.hints` ファイルの以下の行を削除するだけです。

         hint.ppc.0.irq="N"

     FreeBSD 5.X では、 場合によってはこれだけではポートをポーリングモードにするには十分ではありません。 多くの場合これは acpi(4) ドライバと併せて動作します。 これはデバイスのプローブとアタッチを行うので、 プリンタポートへのアクセスモードを制御できます。 問題を修正するために acpi(4) の設定を確認してください。

2. ファイルをセーブし、config プログラムを起動し、 カーネルの構築、インストールをおこないます。そして、 リブートしてください。詳細は、「 FreeBSDカーネルのコンフィグレーション」を参照 してください。

lptcontrol(8) で通信モードを設定する場合

1. `lpt`N`` をイベント駆動方式に設定する場合は、 次のように入力します。

       # lptcontrol -i -d /dev/lptN

2. `lpt`N`` を監視方式に設定する場合は、次のように入力します。

       # lptcontrol -p -d /dev/lptN

これらのコマンドを `/etc/rc.local` ファイルに追加 しておくと、システムをブートする度に通信モードを設定する ことができます。詳細については、 lptcontrol(8) をご覧ください。

##### 9.3.1.3.2. プリンタとの通信状況を調べる

スプーリングシステムの設定に進む前に、オペレーティング システムがプリンタにデータを送ることに成功しているかどうか を確かめるべきでしょう。これにより、印字がうまくいかないと き、プリンタとの通信が問題なのか、スプーリングシステムが問 題なのかを分けて調べることがかなり容易になります。

プリンタをテストするためには、 プリンタに何かのテキストを送 信してみます。送信した文字をすぐに印字してくれるプリンタに は、lptest(1) コマンドを使うと有用です。このコマンドは印 字可能な 96 文字の ASCII 文字すべてを 96 行生成します。

PostScript (または他の言語に対応した) プリンタの場合 は、もっと巧妙なテストが必要になります。次のような、簡単な PostScript プログラムを使えば十分でしょう。

    %!PS
    100 100 moveto 300 300 lineto stroke
    310 310 moveto
    /Helvetica findfont 12 scalefont setfont
    (Is this thing working?) show
    showpage

上の PostScript コードはファイルに保存し、 以降の節で例として示されているように利用することができます。

> Note: このドキュメントでプリンタ用言語を参照するときは、 PostScript のような言語を仮定しており、Hewlett Packard の PCL は考慮していません。PCL は非常に機能的なの ですが、 プレインテキストにエスケープシーケンスを混ぜること ができます。PostScript ではプレインテキストを直接印字 することはできません。 このような種類のプリンタ言語に対しては、 特別な対応をおこなわなければなりません。

###### 9.3.1.3.2.1. パラレルポートのプリンタとの接続を調べる

この節では、FreeBSD がパラレルポートに接続されたプリ ンタと通信できているかどうかを調べる方法について説明し ています。

パラレルポートのプリンタをテストするために

1. su(1) コマンドで `root` になります。

2. プリンタにデータを送ります。

   - プリンタがプレインテキストを印字できる場合、 lptest(1) コマンドを使います。 次のように入力してください。

         # lptest > /dev/lptN

     ここで、`N` はパラレルポートの番号で、番号は 0 から始まります。

   - プリンタが PostScript か他のプリンタ 言語を使用している場合、そのプリンタに簡単なプロ グラムを送信してください。次のように入力します。

         # cat > /dev/lptN

     そして、一行一行、 プログラムを慎重に入力して 下さい。RETUREN または ENTER キーを入力してしま うと、その行は編集できなくなります。プログラムの 入力が終わったら、CONTROL+D か、あなたが設定して いるファイル終了のキーを押してください。

     もしくは、プログラムを入力したファイルがある 場合は、次のように入力してください。

         # cat file > /dev/lptN

     ここで、`file` はプログラムが格納されていて、 プリンタに送信するファイルの名前です。

これで何かがプリントされることでしょう。 印字されたテキ ストがおかしくても心配しなくても構いません。それについ ては、後で修正します。

###### 9.3.1.3.2.2. シリアルポートのプリンタとの接続を調べる

この節では、FreeBSDがシリアルポートに接続されたプリ ンタと通信できているかどうかを調べる方法について述べられ ています。

シリアルポートのプリンタをテストするために

1. su(1) コマンドで `root` になります。

2. `/etc/remote` ファイルを編集します。次のエントリを加えてください。

       printer:dv=/dev/port:br#bps-rate:pa=parity

   ここで、`port` シリアルポート (`ttyd0`、 `ttyd1` など) のデバイスエントリで、 `bps-rate`は プリンタとの通信の転送速度[bit/秒]、 `parity`はプリ ンタとの通信で必要とされるパリティ (`even`、`odd`、 `none`、 `zero`のいずれか) を表わしていま す。

   次の例は、 プリンタをシリアルケーブルでパリティなし、転送速度 19200 bps で第 3 番目のシリアルポートに接続した場 合です。

       printer:dv=/dev/ttyd2:br#19200:pa=none

3. tip(1) コマンドでプリンタと接続します。 次のように入力してください。

       # tip printer

   これがうまくいかなかった場合は、 `/etc/remote`を編集して、 `/dev/ttyd`N`` の代わりに `/dev/cuaa`N`` を試してみてください。

4. プリンタにデータを送ります。

   - プリンタがプレインテキストを印字できる場合、 lptest(1) コマンドを使います。 次のように入力してください。

         % $lptest

   - プリンタが PostScript か他のプリンタ言語を使用している場合、 そのプリンタに簡単なプログラムを入力します。 一行一行、プログラムを慎重に入力してください。 バックスペースキーや他の編集用のキーは、 プリンタの制御コードに割り当てられているかもしれません。 プログラムが終了したことをプリンタに伝えるための特別なファイル終了キーを 入力する必要があるかもしれません。 PostScript プリンタの場合、 `CONTROL+D` を入力します。

     もしくは、プログラムを入力したファイルがある場合は、 次のように入力してください。

         % >file

     ここで、`file` はプログラムが格納されているファイル名です。 tip(1) コマンドでファイルを送信した後は、 ファイル終了を表わすキーを入力する必要があります。

これで何かがプリントされることでしょう。 印字されたテキ ストがおかしくても心配しなくても構いません。 それについては、後で修正します。

#### 9.3.1.4. スプーラに許可を与える: `/etc/printcap` ファイル

ここまでで、プリンタはコンピュータに接続され、(必要なら) プリンタと通信できるようにカーネルを変更し、 簡単なデータをプリンタに送信することができているはずです。 これで、LPD にプリンタへのアクセスを 制御させる設定をおこなう準備が整いました。

LPD の設定は `/etc/printcap` を編集することでおこないます。 LPD スプーリングシステムは スプーラが使われる毎にこのファイルを参照します。 そのため、ファイルを更新するとすぐにその変更が反映されます。

printcap(5) ファイルの書式は簡単です。 `/etc/printcap` の編集はお好みのテキストエディタをお 使いください。このファイルの書式は、 `/usr/share/misc/termcap` や `/etc/remote` といった他のケイパビリティファイルと一致しています。 この書式 についての詳細な情報については cgetent(3) をご覧ください。

スプーラの単純な設定法は、 次のステップでおこないます。

1. プリンタに名前 (と簡単な別名 2 〜 3 個) を付け、それを `/etc/printcap` ファイルに記述します。 これについては、「 プリンタに名前を付ける」 を参照してください。

2. `sh` の項目を追加することで、 ヘッダページの出力を禁止します (デフォルトは許可)。 これについては、「 ヘッダページの印字を禁止する」 を参照してください。

3. スプール用のディレクトリを作成し、その位置を `sd` 項目で指定します。これについては、 「 スプーリングディレクトリの作成」 を参照してください。

4. プリンタを使用するために `/dev` エントリを設定し、`/etc/printcap` の `lp` 項目でそのエントリを指定します。 これについては、「 プリンタデバイスの特定」 を参照してください。 プリンタをシリアルポートに接続した場合は、 `ms#` の項目を設定する必要があります。こちらについては、 「 スプーラのための通信パラメータの設定」 を参照してください。

5. プレインテキスト用の入力フィルタのインストールをおこないます。 「テキストフィルタのインストール」 を参照してください。

6. lpr(1) コマンドで何かを印字することで設定のテストをおこないます。 印字してみよう と トラブルシューティング を参照してください。

> Note: PostScript プリンタのような、 プリンタ言語を使用しているプリンタには、 プレインテキストを直接印字させることができません。 上にアウトラインを示し、 以下の節で説明する簡単な設定方法の説明では、 そのようなプリンタを設置している場合は、 プリンタが認識できるファイルだけを印字の対象としているという 仮定をしています。

多くの場合、 利用者はシステムに設置されているプリンタすべてで プレインテキストが印字できることを期待しています。 印字作業をおこなうために LPD のインタフェースを利用するプログラムでも、 通常、そのような仮定を置きます。 プリンタ言語を使用するプリンタを設置しており、 そのプリンタ言語で記述されたジョブと、 これに加えて、 プレインテキストのジョブも印字できるようにしたいならば、 上で示した簡単な設定方法に加えて、 さらなる設定をおこなうことを強くお勧めします。すなわち、 自動的にプレインテキストから PostScript (もしくは、 他のプリンタ言語) に変換するプログラムをインストールしてください。「 プレインテキストのジョブを PostScript プリンタで印字する」 で、それをどのようにおこなえばよいのかが説明されています。

> 訳注: 日本語を印字したい場合は、プリンタ言語を使用し ていない「日本語プリンタ」についても、 プリンタ固有のエスケープシーケンスを送る必要があります。 また、漢字コードをプリン タが設定しているものに変換したりする必要があり、 各プリンタ毎に、日本語用のフィルタが必要になります。

##### 9.3.1.4.1. プリンタに名前を付ける

最初の (簡単な) ステップで、プリンタの名前を考えます。 プリンタには別名をいくつか付けることもできるので、 機能的な名前 でも風変わりな名前でもどちらを選んでもまったく 問題はありません。

少なくとも1つのプリンタには、 `/etc/printcap` の中で、 `lp` という別名を持たせるべきでしょう。 この名前はデフォルトのプリンタ名になっています。 ユーザが環境変数 `PRINTER` を設定しておらず、 かつ、LPD コマンドのコマンドラインで プリンタの名前が指定されていない場合、`lp` がデフォルトのプリンタ名となり、 そのプリンタに出力されます。

それから、これは共通の慣習ですが、 プリンタの最後の別名には、 メーカーやモデル名を含むプリンタの完全な名称をつけることに なっています。

名前と別名のいくつかを決めたら、 `/etc/printcap` ファイルに設定します。 プリンタ名は一番左のカラムから書き始めます。 別名はそれぞれ縦棒によって区切られ、 最後の別名の後ろにコロンを置きます。

次の例では、2 台のプリンタ (Diablo 630 ラインプリンタと Panasonic KX-P4455 PostScript レーザライタプリンタ) が定義 されている `/etc/printcap` のスケルトンを記しています。

    #
    #  /etc/printcap for host rose
    #
    rattan|line|diablo|lp|Diablo 630 Line Printer:

    bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:

この例では、最初のプリンタに `rattan` という名前と別名として、`line`、 `diablo`、`lp` そして `Diablo 630 Line Printer` が付けられています。別名とし て `lp` があるので、このプリンタはデフォルトのプリンタとなっ ています。2 番目は `bamboo` と名付けられ、 別名として、`ps` と `PS`、`S`、 `panasonic`、`Panasonic KX-P4455 PostScript v51.4` が付けられています。

##### 9.3.1.4.2. ヘッダページの印字を禁止する

LPD スプーリングシステムでは、 デフォルトでジョブ毎に ヘッダページを印字します。 ヘッダページにはジョブを要求したユーザ名、 ジョブが送られたホスト名、そして、ジョブの名前が素晴 らしい大きな文字で印字されています。 残念なことに、この余分なテキストすべてが、 簡単なプリンタ設定法のデバッグの際に紛れ込んできてしまいます。 このため、ヘッダページの出力を禁止しておきます。

ヘッダページの出力を禁止するには、 `/etc/printcap` にあるプリンタのエントリに `sh` の項目を追加します。次に、`sh` を加えた `/etc/printcap` の例を示します。

    #
    #  /etc/printcap for host rose - no header pages anywhere
    #
    rattan|line|diablo|lp|Diablo 630 Line Printer:\
            :sh:

    bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
            :sh:

この書式を正しく使うための注意をしておきます。 最初の行は左端のカラムから始まります。それに続く行は TAB ひとつ分だけ字下げします。最後の行以外のすべての行は、 行末にバックスラッシュを記述します。

##### 9.3.1.4.3. スプーリングディレクトリの作成

スプーラの簡単な設定の次のステップでは、 スプーリングディレクトリを作成します。 プリンタに送られるジョブは、 その印字が終了するまでこのディレクトリに置かれます。また、 他のたくさんのスプーラもこのディレクトリにファイルを置きます。

様々な事情によりスプーリングディレクトリは、通常、慣例 として `/var/spool` の下に置きます。 また、スプーリングディレクトリの内容は バックアップをする必要はありません。 mkdir(1) によってディレクトリを 作るだけでスプーリングディレクトリの復旧は完了します。

スプーリングディレクトリの名前は、これも慣例ですが、 次のようにプリンタの名前と同じにします。

    # mkdir /var/spool/printer-name

しかしながら、ネットワーク上に使用可能なプリンタがたく さんあるならば、LPD で印字するための専用のディレクトリにスプーリングディレクトリを置きたくなるかもしれません。 例に出てきたプリンタ `rattan` と `bamboo` について、この方式を採用すると、 次のようになります。

    # mkdir /var/spool/lpd
    # mkdir /var/spool/lpd/rattan
    # mkdir /var/spool/lpd/bamboo

> Note: 各ユーザが印字するジョブのプライバシを守りた いと考えているならば、スプーリングディレクトリを保護し て、これを誰からでもアクセスできないようにしたいと思う かもしれません。スプーリングディレクトリは、daemon ユー ザと daemon グループに所有され、読み込み、書き込み、検 索可能であり、他からはアクセスできないようにするべきで す。例題のプリンタに対して、次のようにすることにしましょ う。

>     # chown daemon:daemon /var/spool/lpd/rattan
>     # chown daemon:daemon /var/spool/lpd/bamboo
>     # chmod 770 /var/spool/lpd/rattan
>     # chmod 770 /var/spool/lpd/bamboo

最後に、`/etc/printcap` ファイルで、 これらのディレクトリの位置を LPD に伝える必要があります。 スプーリングディレクトリのパス名は `sd` 項目で指定します。

    #
    #  /etc/printcap for host rose - added spooling directories
    #
    rattan|line|diablo|lp|Diablo 630 Line Printer:\
            :sh:sd=/var/spool/lpd/rattan:

    bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
            :sh:sd=/var/spool/lpd/bamboo:

プリンタ名が最初のカラムから始まっており、そのプリンタ に関して記述される他のエントリは TAB で字下げされてい ること、各行がバックスラッシュで終わっていることに注意 してください。

`sd` によりスプーリングディレクトリが指定されていな い場合、 スプーリングシステムは `/var/spool/lpd` をデフォルト値として使用します。

##### 9.3.1.4.4. プリンタデバイスの特定

「ポート用エントリを /dev に追加する」では、FreeBSD でプリン タとの通信に使用される `/dev` ディレクトリ内のエントリを特定します。 そして、LPD にその情報を伝えます。 印字するジョブを受け取ると、 スプーリングシステムは、 (プリンタにデータを渡す義務がある) フィルタプログラムに 代わって指定されたデバイスをオープンします。

`/etc/printcap` ファイルで `lp` 項目を使って `/dev` エントリを記入します。

ここでの例では、`rattan` は 1 番目のパラレルポートに、`bamboo` は 6 番目のシリアルポートに接続されていることにしましょう。 このとき、`/etc/printcap` には 次のようになります。

    #
    #  /etc/printcap for host rose - identified what devices to use
    #
    rattan|line|diablo|lp|Diablo 630 Line Printer:\
            :sh:sd=/var/spool/lpd/rattan:\
            :lp=/dev/lpt0:

    bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
            :sh:sd=/var/spool/lpd/bamboo:\
            :lp=/dev/ttyd5:

`/etc/printcap` でプリンタの `lp` 項目が指定されていない場合は、 LPD はデフォルトとして `/dev/lp` を使用します。`/dev/lp` は、現在の FreeBSD には存在していません。

設置したプリンタがパラレルポートに 接続されている場合は、 「 テキストフィルタのインストール」 まで読み飛ばしてください。 そうでない場合は、次節の説明に続いてください。

##### 9.3.1.4.5. スプーラのための通信パラメータの設定

シリアルポートにプリンタを接続した場合、 LPD は、プリンタにデータを送信するフィルタプログラムに代わり、 通信速度やパリティ、 その他のシリアル通信パラメータを設定することができます。 このことによる利点は、

- `/etc/printcap` を編集するだけで、 様々な通信パラメータを試してみることができます。 フィルタプログラムを再コンパイルする必要はありません。

- スプーリングシステムで、 シリアル通信の設定が異なっているかもしれない複数のプリンタに 同じフィルタプログラムを使うことが可能になります。

次の `/etc/printcap` の項目で、 `lp` で指定された デバイスのシリアル通信パラメータを制御できます。

`br#`bps-rate``

  デバイスの通信速度を `bps-rate` に設定します。 ここで、`bps-rate` は 50, 75, 110, 134, 150, 200, 300, 600, 1200, 1800, 2400, 4800, 9600, 19200, 38400, 57600, 115200 [bit/秒] のいずれかです。

`ms#`stty-mode``

  デバイスをオープンした後にターミナルデバイスのオプションを設定します。 利用できるオプションについては stty(1) を参照してください。

`lp` で指定されたデバイスをオープンするとき、 LPD は `ms#` で指定されたデバイスの特性を設定します。 特に関係があるのは、`parenb`, `parodd`, `cs5`, `cs6`, `cs7`, `cs8`, `cstopb`, `crtscts`, `ixon` モードです。 これらは stty(1) のマニュアルページで説明されています。

例題のプリンタで6番目のシリアルポートに接続された プリンタの設定を追加してみましょう。 通信速度は 38400bps に設定します。 モードとして、`-parenb` でパリティ無し、 `cs8` で 8 ビットキャラクタ、 `clocal` でモデム制御無し、 そして `crtscts` でハードウェアフロー制御を設定します。

    bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
            :sh:sd=/var/spool/lpd/bamboo:\
            :lp=/dev/ttyd5:ms#-parenb cs8 clocal crtscts:

##### 9.3.1.4.6. テキストフィルタのインストール

ここまでで、 プリンタにジョブを送るために使うテキストフィルタを LPD に設定する準備が整いました。 テキストフィルタとは、 入力フィルタとしても知られていますが、 印字するジョブがあるときに LPD が起動するプログラムです。 LPD がプリンタのためにテキストフィルタを起動するとき、 LPD はフィルタの標準入力からプリントするジョブを入力し、 フィルタの標準出力に項目 `lp` で指定されたプリンタデバイスを接続します。フィルタは、 標準入力からジョブを読み込み、 プリンタのための必要な変換をおこなった後、 その結果を標準出力に出力する、 これにより印字がなされることを期待されています。 テキストフィルタについての更に詳しい情報については、「 フィルタはどのように機能しているか」 をご覧ください。

ここでの簡単なプリンタ設定では、 プリンタにジョブを送るため、`/bin/cat` を実行するだけの簡単なシェルスクリプトで間に合います。 FreeBSD に標準で付属している `lpf` というフィルタでは、バックスペース文字を使った 下線引きの動作をおこなう文字ストリームをうまく扱うことができない プリンタのための代替処理をおこなってくれます。 もちろん、 他のどんなフィルタプログラムを使っても構いません。 フィルタ `lpf` については、「テキストフィルタ lpf」で詳しく説明します。

最初に、簡単なテキストフィルタであるシェルスクリプト `/usr/local/libexec/if-simple` を作ってみましょう。 次のテキストをお好みのテキストエディタでファイルに 書き込んでください。

    #!/bin/sh
    #
    # if-simple - Simple text input filter for lpd
    # Installed in /usr/local/libexec/if-simple
    #
    # Simply copies stdin to stdout.  Ignores all filter arguments.

    /bin/cat && exit 0
    exit 2

そして、このファイルを実行可能にします。

    # chmod 555 /usr/local/libexec/if-simple

LPD にこのテキストフィルタを使うことを設定するためには、 `/etc/printcap` に `if` 項目を使って指定します。これまでの `/etc/printcap` の例のプリンタ 2 台に、 このフィルタを加えてみましょう。

    #
    #  /etc/printcap for host rose - added text filter
    #
    rattan|line|diablo|lp|Diablo 630 Line Printer:\
            :sh:sd=/var/spool/lpd/rattan:\
            :lp=/dev/lpt0:\
            :if=/usr/local/libexec/if-simple:

    bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
            :sh:sd=/var/spool/lpd/bamboo:\
            :lp=/dev/ttyd5:ms#-parenb cs8 clocal crtscts:\
            :if=/usr/local/libexec/if-simple:

##### 9.3.1.4.7. LPD の起動

lpd(8) は `lpd_enable` 変数に従って `/etc/rc` から実行されます。この変数の デフォルト値は `NO` です。まだ そうしていなかったならば

    lpd_enable="YES"

の行を `/etc/rc.conf` に追加して 計算機を再起動するか、そのまま lpd(8) を 起動してください。

    # lpd

##### 9.3.1.4.8. 印字してみよう

簡単な LPD 設定も終わりにたどり着きました。 残念ながら、設定はこれでおしまいというわけではありません。 なぜなら、さらに、設定をテストし、 すべての問題点を解決しなくてはならないからです。 設定をテストするために、 何かを印字してみましょう。 LPD システムで印字をするためには、 lpr(1) コマンドを使います。このコマンドは、 印字するためのジョブを投入する働きをします。

lpr(1) コマンドを 「 プリンタとの通信状況を調べる」で紹介した、 あるテスト用のテキストを生成してくれる lptest(1) プログラムと一緒に使うこともできます。

簡単な LPD 設定のテスト

次のように入力してください。

    # lptest 20 5 | lpr -Pprinter-name

ここで、`printer-name` は `/etc/printcap` で指定したプリンタ名 (もしくはその別名) です。デフォルト のプリンタを使用する場合は、 `-P` 引数を付けないで lpr(1) を打ち込んでください。もう一度述べますが、 PostScript を期待しているプリンタをテストするならば、 lptest(1) を使う代わりに PostScript で書かれた プログラムをプリンタに送ってください。 プログラムを送るためには、プログラムをファイルに格納して、 `lpr `file`` と打ち込みます。

PostScript プリンタの場合、 送信したプログラムによる結果が得られるでしょう。 lptest(1) を使った場合は、 以下のような結果が見られるでしょう。

    !"#$%&'()*+,-./01234
    "#$%&'()*+,-./012345
    #$%&'()*+,-./0123456
    $%&'()*+,-./01234567
    %&'()*+,-./012345678

更にプリンタをテストしたい場合は、 (言語ベースのプリンタのための) もっと大きなプログラムを送信するか、 引数を変えて lptest(1) を実行します。たとえば、`lptest 80 60` で、それぞれ 80 文字の行を 60 行生成します。

プリンタがうまく動かなかった場合は、次の節、「 トラブルシューティング」をご覧ください。

## 9.4. プリンタ設定上級編

この節では、特殊な形式のファイルを印字するためのフィルタ、 ヘッダページ、ネットワーク越しのプリンタへの印字、そして、 プリンタ使用の制限や課金について説明しています。

### 9.4.1. フィルタ

LPD は、ネットワークプロトコル、キュー、アクセス制御などの 印刷にかかわるさまざまな点を扱いますが、 実際の作業のほとんどは フィルタによっておこなわれています。 フィルタは、プリンタと通信し、 プリンタのデバイス依存性や特殊な要求を扱うプログラムです。 簡単なプリンタ設定では、 プレインテキストのためのフィルタをインストールしました。 このプレインテキストフィルタは、 ほとんどのプリンタで機能する極めて単純なものでした (「 テキストフィルタのインストール」を参照)。

しかしながら、形式変換やプリンタ課金、特定のプリンタの癖、 など をうまく利用するためには、 フィルタがどのように機能するかという ことを理解しておくべきです。これらの側面を扱うことは、 最終的には、フィルタの責任であるからです。 そして、これは悪い情報ですが、ほとんどの場合において、 あなた自身が フィルタを供給する必要があるということです。また都合のよいことには、 たくさんのフィルタが一般的に利用できるということです。 もしフィルタがなかったとしても、 普通はフィルタを作るのは簡単です。

FreeBSD にも、プレインテキストを印字させることができる `/usr/libexec/lpr/lpf` というフィルタが 1 つ付いています (このフィルタはファイルに含まれるバックスペースやタブを扱います。 また、課金をすることもできますが、 できることはこれだけしかありません)。 いくつかのフィルタとフィルタの構成要素は FreeBSD Ports Collection にもあります。

この節で述べることは次の通りです。

- 「 フィルタはどのように機能しているか」では、 印字の過程におけるフィルタの役割を概説します。 この節を読むことで、LPD がフィルタを使うときに、“見えないところで” 何が起こっているかが理解できるでしょう。このことを知っておくと、 プリンタそれぞれに様々なフィルタをインストールしたときに 遭遇するかもしれない問題を予期したり、 デバッグするときに役立つでしょう。

- LPD は、すべてのプリンタがデフォルトでプレインテキストを印字できることを期待しています。 これは、プレインテキストを直接印字できない PostScript (または他の言語対応の) プリンタで問題になります。「 プレインテキストのジョブを PostScript プリンタで印字する」 で、 この問題を克服する方法について述べます。 PostScript プリンタをお持ちの方は、 この節をお読みになることをおすすめします。

- PostScript は様々なプログラムのための有名な出力形式です。 (著者自身を含めて) PostScript のコードを直接書いてしまう人すらいます。しかし、PostScript プリンタは高価です。「非 PostScript プリンタによる PostScript のシミュレート」節では、PostScript データを非 PostScript プリンタに受けつけさせ、印字させるために、 どのようにしてプリンタ用のテキストフィルタをさらに変更すればよいのか、 ということについて説明しています。PostScript プリンタを持っていない方は、 この節をお読みになることをおすすめします。

- 「 変換フィルタ」では、 図形や組版データといった特定のファイル形式を、 プリンタが理解できる形式へ変換する作業を自動的におこなわせる方法について述べます。 この節を読むと、troff のデータを印字するには `lpr -t`, または、TeX DVI を印字するには `lpr -d`、 ラスタイメージデータを印字するには `lpr -v`、 などといったようにユーザが入力することができるように プリンタの設定をおこなうことができます。 この節もお読みになることをお薦めします。

- 「出力フィルタ」 では、あまり使われない LPD の機能のすべて、すなわち、 出力フィルタに関することが記述されています。ヘッダページ (「 ヘッダページ」参照) を印字させていない場合は、 多分、この節は飛ばしても構わないでしょう。

- 「テキストフィルタ lpf」では、`lpf` についての説明が、ほぼ完全におこなわれています。これは FreeBSD に付属するラ インプリンタ (または、 ラインプリンタのように動作するレーザプリンタ) のための、 単純なテキストフィルタです。 プレインテキストを印字したことに対して課金をおこなう方法が 至急必要な場合、もしくは、バックスペース文字を印字しようと すると煙を発するプリンタを持っている場合は、絶対に `lpf` を検討するべきです。

#### 9.4.1.1. フィルタはどのように機能しているか

既に言及したように、フィルタとは、プリンタにデータを送る際に、 デバイスに依存した部分を取り扱うために LPD によって起動される実行プログラムです。

LPD がジョブ中のファイルを印字しようとするとき、 LPD はフィルタプログラムを起動します。このとき、 フィルタの標準入力を印字するファイルに、 標準出力をプリンタに、そして、標準エラー出力を エラーログファイル (`/etc/printcap` 内の `lf` 項目で指定されたファイル、または、 指定されていない場合は、デフォルトとして `/dev/console`) にセットします。

LPD が起動するフィルタと、その引数が何であるかは、 `/etc/printcap` ファイルの内容と、ジョブの起動時にユーザが指定した lpr(1) コマンドの引数に依存しています。 たとえば、ユーザが `lpr -t` と入力した場合は、 LPD は出力先のプリンタ用の `tf` 項目で指定されている troff 用のフィルタを起動させるでしょう。 ユーザがプレインテキストの印字を指示したときは、 `if` で指定されたフィルタが起動されるでしょう (このことはほとんどの場合にあてはまります。 詳細については、「 出力フィルタ」をご覧ください)。

`/etc/printcap` で指定可能なフィルタは次の3種類があります。

- テキストフィルタ (LPD のドキュメントでは紛らわしいことに 入力フィルタと呼んでいますが) は一般のテキストの印字を扱います。これはデフォルトのフィルタと 考えてください。LPD では、すべてのプリンタに対して、 デフォルトでプレインテキストが印字できることを期待しています。 さらに、バックスペースやタブを正しく扱い、また、 他の特殊な文字が入力されてもプリンタに混乱を来さないように するのはテキストフィルタの仕事であると考えています。 プリンタの使用に対して課金をしなくてはならない環境にあ るときは、テキストフィルタが印字したページ数を数える作 業もしなくてはなりません。この作業は、通常、印字した行 数を数え、これをプリンタが 1 ページ当たりに印字できる行 数と比較することでおこなわれます。 テキストフィルタは、次のような引数を付けて起動されます。

  `filter-name` [-c] -w`width` -l`length` -i`indent` -n `login` -h `host` `acct-file`

  ここで、
  `-c`

    `lpr -l` によってジョブが入力されたときに与えられます。

  `width`

    `/etc/printcap` で指定された `pw` (page width) 項目の値が与えられます。デフォルトは、 132 です。

  `length`

    `pl` (page length) 項目で指定された値が与えられます。 デフォルトは 66 です。

  `indent`

    `lpr -i` によって与えられた字下げの量で、 デフォルトは 0 です。

  `login`

    ファイルを印字したユーザのアカウント名が 与えられます。

  `host`

    ジョブが入力されたホスト名が 与えられます。

  `acct-file`

    `af` 項目で指定されている課金データファイル の名前が与えられます。

- 変換フィルタは、 特定のファイル形式をプリンタ が紙に印字できるようなものに変換します。たとえば、 プリンタで ditroff 組版データを直接印字することはできません。 しかし、ditroff データをプリンタが消化し、 印字することができる形式へ変換するために、ditroff ファイル用フィルタをインストールすることができます。 「 変換フィルタ」 で、これらに関するすべてについて説明します。 プリンタの課金をする必要がある場合は、 変換フィルタでも印字ページを数える作業が必要となります。 変換フィルタは次の引数をとって起動されます。

  `filter-name` -x`pixel-width` -y`pixel-height` -n `login` -h `host` `acct-file`

  ここで、`pixel-width` は、 `px` 項目で指定された値 (デフォルトは 0)、 `pixel-height` は、 `py` 項目で指定された値 (デフォルトは 0) です。

- 出力フィルタは、 テキストフィルタが指定されて おらず、かつ、 ヘッダページの出力が許可されている場合にのみ使われます。 「 出力フィルタ」で、これらのことについて説明します。 出力フィルタに対する引数は次の 2 つだけです。

  `filter-name` -w`width` -l`length`

  ここで、`-w` と `-l` は、 テキストフィルタの場合と同じです。

フィルタは、次に示す終了状態をもってプログラムを exit するべきです。

exit 0

  フィルタがファイルを正常に印字した場合。

exit 1

  フィルタはファイルの印字に失敗したが、 LPD に再度ファイルの印字を試みて欲しい場合。 この終了状態で終了した場合、LPD はフィルタを再スタートします。

exit 2

  フィルタはファイルの印字に失敗し、かつ、LPD に再出力を試みて欲しくない場合。この場合、LPD はそのファイルを放棄します。

FreeBSD に付属するテキストフィルタ `/usr/libexec/lpr/lpf` は、FORM FEED 文字が送られたときやプリンタ使用に対する課金をどのようにするかを決定するために、 ページ幅やページ長の引数を利用します。また、 課金用のエントリを作成するため、ログイン名、ホスト名、 課金ファイル名の引数を利用します。

もし、フィルタの購入を検討しているならば、LPD と互換性があるかどうかを確認してください。もしそうならば、 上述の引数リストをサポートしていなければなりません。 一般向けの使用のためにフィルタを作成する計画をしている場合は、 同じ引数リストと終了コードをサポートしてください。

#### 9.4.1.2. プレインテキストのジョブを PostScript® プリンタで印字する

コンピュータと PostScript (または、他の言語に対応した) プリンタをあなたしか使用しない場合は、プリンタにプレ インテキストを絶対に送らない、そして、 プリンタにプレインテキストを送りたがっている 様々なプログラムの機能を決して使わないことにしてください。そうすれば、 この節に書かれたことに心を煩わせる必要はまったくなくなります。

しかし、PostScript とプレインテキストの両方のジョブをプリンタへ送りたいと思っている場合は、 プリンタ設定についての要求が増えるでしょう。 両者をプリンタへ送信するためには、 到着したジョブがプレインテキストであるか PostScript であるかを検出するテキストフィルタが必要です。 PostScript のジョブはすべて `%!` で始まらなければならないことになっています (他のプリンタ言語に関しては、 プリンタのドキュメントをご覧ください)。 ジョブの最初の 2 文字がこれならば、PostScript であることが分かります。 したがって、 ジョブのそれ以降の部分をプリンタに直接送ることができます (訳注: PostScript では、% 以降はコメントとして扱われるので、最初の %! の行を読み捨てても問題はない)。 最初の2文字が %! でない場合は、 フィルタはテキストを PostScript に変換し、 その結果を使って印字をおこないます。

この作業をどうやってやればよいのでしょうか。

シリアルポートにプリンタを接続した場合は、 `lprps` をインストールすることをお勧めします。 `lprps` は PostScript 用のフィルタで、 プリンタとの双方向通信をおこないます。 このフィルタでは、プリンタからの冗長な情報を得ることで、 プリンタの状況を示すファイルが更新されていきます。 したがって、ユーザや管理者は (“`トナー残量少`”や “`紙詰まり`”といった) プリンタの状況を正確に知ることができます。しかし、 もっと重要なことは、`psif` と呼ばれるプログラムが含まれているということです。 このプログラムは、 入力されたジョブがプレインテキストかどうかを検出し、 これを PostScript に変換するために、`textps` (`lprps` に付属する別のプログラム) を呼び出します。そして、このジョブをプリンタに送るために、 `lprps` が使われます。

`lprps` は FreeBSD Ports Collection に含まれています (Ports Collection を参照してください)。 もちろん、自分自身でプログラムを取ってきて、コンパイルし、 インストールすることもできます。`lprps` をインストールした後は、`lprps` の一部である `psif` プログラムのパス名を指定するだけです。Ports Collection から `lprps` をインストールしたときは、 `/etc/printcap` の中のシリアル接続した PostScript プリンタのエントリに対して、次を使ってください。

    :if=/usr/local/libexec/psif:

LPD にプリンタをリード・ライトモードでオープンさせるために、 `rw` 項目も指定すべきです。

パラレルポート接続の PostScript プリンタの場合 (すなわち、 `lprps` が 必要としているプリンタとの双方向通信ができない)、 テキストフィルタとして次のシェルスクリプトを使うことができます。

    #!/bin/sh
    #
    #  psif - Print PostScript or plain text on a PostScript printer
    #  Script version; NOT the version that comes with lprps
    #  Installed in /usr/local/libexec/psif
    #

    IFS="" read -r first_line
    first_two_chars=`expr "$first_line" : '\(..\)'`

    if [ "$first_two_chars" = "%!" ]; then
       #
       #  PostScript job, print it.
       #
       echo "$first_line" && cat && printf "\004" && exit 0
       exit 2
    else
       #
       #  Plain text, convert it, then print it.
       #
       ( echo "$first_line"; cat ) | /usr/local/bin/textps && printf "\004" && exit 0
       exit 2
    fi

上記のスクリプトにおいて、`textps` はプレインテキストから PostScript へ変換するために別にインストールしたプログラムです。 テキストから PostScript へ変換するのには、 お好みのどんなプログラムでも使うことができます。FreeBSD Ports Collection (Ports Collection を参照してください) には、`a2ps` と呼ばれるテキストから PostScript に変換するプログラムが入っています。

#### 9.4.1.3. 非 PostScript プリンタによる PostScript のシミュレート

PostScript は質の高い組版と印字をおこなうための 事実上の標準です。しかしながら、PostScript は、高価な標準です。ありがたいことに、 Aladdin Enterprises から Ghostscript と呼ばれる、 PostScript 互換の動作をするフリーのプログラムが出されていて、 FreeBSD で動きます。 Ghostscript はほとんどの PostScript ファイルを読むことができ、 これらの各ページを多くのブランドの非 PostScript プリンタを含む 様々なデバイス用に変換することができます。 Ghostscript をインストールし、 プリンタ用の特別なテキストフィルタを使うことによって、 非 PostScript プリンタをあたかも本物の PostScript プリンタであるかのように動作させることができます。

Ghostscript は FreeBSD Ports Collection に入っていますので、 そこからインストールすることができます。また、 自分でソースプログラムを持ってきて、コンパイルし、インストー ルすることもできます。この作業はとても簡単にできます。

PostScript プリンタをシミュレートさせる場合は、 テキストフィルタに PostScript ファイルを印字しようとしているかどうかを検出させます。 PostScript ファイルでない場合は、 フィルタはそのファイルを直接プリンタに送ります (訳注: テキストファイルを直接印字できない場合は、もちろん、 変換フィルタを通す必要があります)。PostScript の場合は、 まず、Ghostscript を使い、 ファイルをそのプリンタが理解できる形式へ変換します。

次の例のスクリプトは、Hewlett Packard DeskJet 500 プリンタ用 のテキストフィルタです。 他のプリンタで用いるときは、`-sDEVICE` 引数を `gs` (Ghostscript) コマンドに変えてください (`gs -h` と入力すると、現在インストールされている Ghostscript でサポートされているデバイスのリストが得られます)。

    #!/bin/sh
    #
    #  ifhp - Print Ghostscript-simulated PostScript on a DeskJet 500
    #  Installed in /usr/local/libexec/ifhp

    #
    #  Treat LF as CR+LF:
    #
    printf "\033&k2G" || exit 2

    #
    #  Read first two characters of the file
    #
    IFS="" read -r first_line
    first_two_chars=`expr "$first_line" : '\(..\)'`

    if [ "$first_two_chars" = "%!" ]; then
        #
        #  It is PostScript; use Ghostscript to scan-convert and print it.
        #
        #  Note that PostScript files are actually interpreted programs,
        #  and those programs are allowed to write to stdout, which will
        #  mess up the printed output.  So, we redirect stdout to stderr
        #  and then make descriptor 3 go to stdout, and have Ghostscript
        #  write its output there.  Exercise for the clever reader:
        #  capture the stderr output from Ghostscript and mail it back to
        #  the user originating the print job.
        #
        exec 3>&1 1>&2
        /usr/local/bin/gs -dSAFER -dNOPAUSE -q -sDEVICE=djet500 \
            -sOutputFile=/dev/fd/3 - && exit 0

    else
        #
        #  Plain text or HP/PCL, so just print it directly; print a form feed
        #  at the end to eject the last page.
        #
        echo "$first_line" && cat && printf "\033&l0H" &&
        exit 0
    fi

    exit 2

最後に、`if` 項目を通して、LPD にこのフィルタを教えてやる必要があります。

    :if=/usr/local/libexec/ifhp:

これでおしまいです。`lpr plain.text` とか `lpr whatever.ps` と入力してみましょう。どちらも正常に印字されるはずです。

> 訳注: 日本語を印字する場合は、 日本語対応の Ghostscript が必要です。日本語対応版の Ghostscript も Ports Collection に入っています。

#### 9.4.1.4. 変換フィルタ

「プリンタ設定導入編」 に書かれた簡単な設定が完了したら、最初に、 やってみたいと思うことは、多分 (プレイン ASCII テキストに加えて) 好みのファイル形式のための変換フィルタをインストールすることでしょう。

##### 9.4.1.4.1. なぜ、変換フィルタをインストールするのか?

変換フィルタによって、 様々な種類のファイルを印字することが簡単になります。たとえば、TeX 組版システムでたくさんの仕事をしたと仮定しましょう。 そして、PostScript プリンタが接続 されているとします。 すると、TeX で DVI ファイルを作成する度に、DVI ファイルを印字するために、 これを PostScript ファイルに変換する必要があります。 このコマンドは次のようになるでしょう。

    % dvips seaweed-analysis.dvi
    % lpr seaweed-analysis.ps

DVI ファイル用の変換フィルタがインストールしてあると、 LPD に変換を肩代わりさせることで毎回毎回 おこなわなければならなかった面倒な変換作業を省くことができます。 つまり、DVI を生成したら、 次のようなコマンドを入力するだけで、これが印字されます。

    % lpr -d seaweed-analysis.dvi

LPD に DVI ファイルの変換をさせるためには、 `-d` オプション を指定します。 変換オプションのリストは「 整形と変換に関するオプション」 に載せてあります。

変化のオプションのそれぞれをプリンタに サポートさせるためには、 変換フィルタをインストールし、 そのパス名を `/etc/printcap` の中で指定しなくてはなりません。変換フィルタは、 プレインテキストを印字する代わりに、フィルタはファイルを プリンタが理解できる形式に変換するところを除けば、 「プリンタの簡単な設定」で説明したテキストファイル (「 テキストフィルタのインストール」 を見て下さい) に似ています。

##### 9.4.1.4.2. どの変換フィルタをインストールすべきか?

使いたいと思う変換フィルタをインストールすべきです。 DVI のデータを頻繁に印字するならば、DVI 変換フィルタ をインストールするのが適切でしょう。印字しなくてはなら ない troff を大量に抱えている場合は、多分、 troff フィルタが欲しくなるはずです。

次の表は、LPD で動作するフィルタと、 `/etc/printcap` ファイルでのエントリする項目、そして、 `lpr` コマンドで呼び出す方法をまとめたものです。

ファイル形式 | `/etc/printcap`項目 | `lpr` オプション
--- | --- | ---
cifplot | `cf` | `-c`
DVI | `df` | `-d`
plot | `gf` | `-g`
ditroff | `nf` | `-n`
FORTRAN text | `rf` | `-f`
troff | `tf` | `-f`
raster | `vf` | `-v`
プレインテキスト | `if` | なし、`-p`、または `-l`

先の例のように、`lpr -d` を使うためには、出力先のプリンタの `/etc/printcap` 内のエントリで、 `df` 項目が必要であることが分かります。

反論はあるかも知れませんが、FORTRAN テキストや plot のような形式は、多分、廃れてていくでしょう。 あなたのサイトで、自前のフィルタをインストールするだけで、 プリントオプションのいくつか、あるいは、 全部に新しい意味を与えることができます。たとえば、 Printerleaf ファイル (Interleaf デスクトップパブリッシングプログラムによるファイル) を直接印字したいとします。 そして、Printerleaf 用の変換フィルタを `gf` 項目で 指定したパスにインストールすれば、`lpr -g` の意味は “Printerleaf ファイルを印字する” 意味だとユーザに教えることができます。

##### 9.4.1.4.3. 変換フィルタのインストール

変換フィルタは FreeBSD の基本システムのインストールとは別にインストールするプログラムなので、 変換フィルタは、 `/usr/local` ディレクトリの下に置くべきでしょう。 フィルタは LPD だけが実行する特別なプログラム、 すなわち、一般ユーザが実行する必要すらないプログラムなので、 `/usr/local/libexec` ディレクトリに置くのが普通です。

変換フィルタを使用可能にするためには、 `/etc/printcap` の目的のプリンタの適切な項目に フィルタがあるパス名を指定します。

DVI 変換フィルタをプリンタ `bamboo` のエントリに加えてみましょう。プリンタ `bamboo` の `df` 項目を新たに加えた `/etc/printcap` ファイルの例を以下に再掲します。

    #
    #  /etc/printcap for host rose - added df filter for bamboo
    #
    rattan|line|diablo|lp|Diablo 630 Line Printer:\
            :sh:sd=/var/spool/lpd/rattan:\
            :lp=/dev/lpt0:\
            :if=/usr/local/libexec/if-simple:

    bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
            :sh:sd=/var/spool/lpd/bamboo:\
            :lp=/dev/ttyd5:ms#-parenb cs8 clocal crtscts:rw:\
            :if=/usr/local/libexec/psif:\
            :df=/usr/local/libexec/psdf:

DVI フィルタは `/usr/local/libexec/psdf` という 名前のシェルスクリプトです。 このスクリプトは次のようになっています。

    #!/bin/sh
    #
    #  psdf - DVI to PostScript printer filter
    #  Installed in /usr/local/libexec/psdf
    #
    #  Invoked by lpd when user runs lpr -d
    #
    exec /usr/local/bin/dvips -f | /usr/local/libexec/lprps "$@"

このスクリプトでは、`dvips` をフィルタモード (引数 `-f`) で、 標準入力上で起動しています。標準入力は印字するジョブです。 それから、PostScript プリンタ用フィルタ `lprps` (これについては「 プレインテキストのジョブを PostScript プリンタで印字する」 を参照してください) を LPD に与えられた引数を付けて起動します。 `lprps` はこれらの引数を印字されたページ分の課金をおこなうために使われます。

##### 9.4.1.4.4. 変換フィルタのその他の例

変換フィルタのインストールには決まったステップがないので、 その代わりに、例をもっと挙げることにします。 これを自分でフィルタを作る際のガイドにしてください。 適当な例があったら、それをそのまま使ってください。

次のスクリプト例は、Hewlett Packard LaserJet III-Si のための、raster (ええと・・実は、GIF ファイル) 用の変換フィルタです。

    #!/bin/sh
    #
    #  hpvf - Convert GIF files into HP/PCL, then print
    #  Installed in /usr/local/libexec/hpvf

    PATH=/usr/X11R6/bin:$PATH; export PATH

    giftopnm | ppmtopgm | pgmtopbm | pbmtolj -resolution 300 \
        && exit 0 \
        || exit 2

ここでは、GIF ファイルから PNM (portable anymap) 形式に変換し、次に PGM (portable graymap) 形式に変換してから、 LaserJet/PCL-互換データに変換しています。

上記のフィルタを使うプリンタのためのエントリを付け加えた `/etc/printcap` ファイルは次のようになります。

    #
    #  /etc/printcap for host orchid
    #
    teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\
            :lp=/dev/lpt0:sh:sd=/var/spool/lpd/teak:mx#0:\
            :if=/usr/local/libexec/hpif:\
            :vf=/usr/local/libexec/hpvf:

次のスクリプトは、PostScript プリンタ `bamboo` のための groff 組版システムの troff データのための変換フィルタです。

    #!/bin/sh
    #
    #  pstf - Convert groff's troff data into PS, then print.
    #  Installed in /usr/local/libexec/pstf
    #
    exec grops | /usr/local/libexec/lprps "$@"

上記のスクリプトではプリンタとの通信をおこなうため、 `lprps` をまた利用しています。 プリンタがパラレルポートに接続されている場合は、代わりに、 次のスクリプトを使うかもしれません。

    #!/bin/sh
    #
    #  pstf - Convert groff's troff data into PS, then print.
    #  Installed in /usr/local/libexec/pstf
    #
    exec grops

これで完成しました。次に、フィルタを使用可能にするため に `/etc/printcap` に加える必要があるエントリを示します。

    :tf=/usr/local/libexec/pstf:

次の例をみたら、FORTRAN のベテランは赤面するかもしれません。 この FORTRAN テキストフィルタは、 プレインテキストを直接印字できるすべてのプリンタで利用できます。 このフィルタをプリンタ `teak` にインストールすることにしましょう。

    #!/bin/sh
    #
    # hprf - FORTRAN text filter for LaserJet 3si:
    # Installed in /usr/local/libexec/hprf
    #

    printf "\033&k2G" && fpr && printf "\033&l0H" && exit 0
    exit 2

そして、このフィルタを使用可能にするため、以下の行を `/etc/printcap` のプリンタ `teak` のエントリに加えます。

    :rf=/usr/local/libexec/hprf:

これが最後の、そして、若干複雑な例です。前に紹介した LaserJet プリンタ `teak` に、DVI フィルタを加える ことにしましょう。最初に、 簡単な部分をおこないます。すなわち、DVI フィルタの位置を `/etc/printcap` に書き加えます。

    :df=/usr/local/libexec/hpdf:

さて、難しい部分であるフィルタの作成をおこないます。 このために、DVI から LaserJet/PCL への変換プログラムが必要です。FreeBSD の Ports Collection (Ports Collection を参照してください) には、それがあります。 `dvi2xx` というのがそのパッケージの名前です。 これをインストールすると、必要なプログラム `dvilj2p` が使えます。このプログラムは DVI を LaserJet IIp、LaserJet III、そして LaserJet 2000 の互換コードへ変換してくれます。

`dvilj2p` はフィルタ `hpdf` を極めて複雑にしています。 なぜなら、`dvilj2p` は標準入力からデータを読み込むことができないからです。 このプログラムを働かせるためには、ファイル名が必要です。 もっと悪いことに、ファイル名は `.dvi` で終わっている必要があり、標準入力の代わりに、 `/dev/fd/0` を使うのは問題があります。 この問題は、(`.dvi` で終わる) 一時的なファイル名から`/dev/fd/0` に (シンボリックな) リンクを張る ことで回避することができます。これで、 `dvilj2p` に強制的に標準入力からデータを読み込ませることができます。

もう1つの問題は、一時的なリンクを張るために `/tmp` ディレクトリを使うことができないという事実です。 シンボリックリンクはユーザ、グループが `bin` であるユーザに所有されています。フィルタはユーザ `daemon` として起動します。そして、 `/tmp` ディレクトリはスティッキービットが立っています。 フィルタはリンクを作ることができます。しかし、 リンクは別のユーザに所有されているため、 作業が終了したとき、このリンクを削除することができません。

その代わりに、シンボリックリンクは現在の作業ディレクトリ、 すなわち、スプーリングディレクトリ (`/etc/printcap` の `sd` 項目で指定する) に作ることにします。 フィルタが作業するにはここの場所は完璧な場所で、なぜなら、 特に、スプーリングディレクトリのディ スクの空き容量は (ときどき) `/tmp` ディレクトリよりもたくさんあるからです。

以下に示すのが最後のフィルタです。

    #!/bin/sh
    #
    #  hpdf - Print DVI data on HP/PCL printer
    #  Installed in /usr/local/libexec/hpdf

    PATH=/usr/local/bin:$PATH; export PATH

    #
    #  Define a function to clean up our temporary files.  These exist
    #  in the current directory, which will be the spooling directory
    #  for the printer.
    #
    cleanup() {
       rm -f hpdf$$.dvi
    }

    #
    #  Define a function to handle fatal errors: print the given message
    #  and exit 2.  Exiting with 2 tells LPD to do not try to reprint the
    #  job.
    #
    fatal() {
        echo "$@" 1>&2
        cleanup
        exit 2
    }

    #
    #  If user removes the job, LPD will send SIGINT, so trap SIGINT
    #  (and a few other signals) to clean up after ourselves.
    #
    trap cleanup 1 2 15

    #
    #  Make sure we are not colliding with any existing files.
    #
    cleanup

    #
    #  Link the DVI input file to standard input (the file to print).
    #
    ln -s /dev/fd/0 hpdf$$.dvi || fatal "Cannot symlink /dev/fd/0"

    #
    #  Make LF = CR+LF
    #
    printf "\033&k2G" || fatal "Cannot initialize printer"

    #
    #  Convert and print.  Return value from dvilj2p does not seem to be
    #  reliable, so we ignore it.

    #
    dvilj2p -M1 -q -e- dfhp$$.dvi

    #
    #  Clean up and exit
    #
    cleanup
    exit 0

##### 9.4.1.4.5. 自動変換: その他の変換フィルタ

ここまでに述べてきたフィルタによって、 印字環境の能率が上がったことと思います。しかし、 これはどのフィルタを使うかを (lpr(1) のコマンドライン上で) ユーザが指定しなくてはならないという代価を支払って実現されています。 コンピュータの事情にあまり詳しくないユーザにとって、 フィルタのオプションを指定させられるということは いらいらさせられるものになるでしょう。更に悪いことに、 間違ったフィルタオプションを指定されると、 間違った形式のファイルがそのフィルタに適用されることになり、 その結果、何百枚もの紙を吐き出すことになるかもしれません。

そのような結果になるならば、 変換フィルタをインストールするよりもむしろ、 テキストフィルタ (これがデフォルトフィルタなので) に印字するよう要求されたファイルの形式を検出させ、自動的に、 適切な変換フィルタを起動するようにしたいと思うかもしれません。 ここでは `file` コマンドのようなツールを役立たせることができます。 もちろん、いくつかの ファイル形式の違いを見分けることは難しいことでしょう。 そして、もちろん、それらのファイルに対しては、 変換フィルタを提供するだけで済ますこともできるのです。

FreeBSD Ports Collection には、`apsfilter` と呼ばれる自動変換をおこなうテキストフィルタがあります。 このフィルタは プレインテキスト、PostScript、DVI ファイルを検出し、適当な変換をおこなった後、 データを印字することができます。

#### 9.4.1.5. 出力フィルタ

LPD スプーリングシステムでは、 ここまでにまだ取り上げていないフィルタ形式、 出力フィルタをサポートしています。出力フィルタは、 テキストフィルタのように、 プレインテキストのみを印字するために意図されたものですが、 非常に簡単化されています。テキストフィルタを用いずに、 出力フィルタを使っている場合は、次のようになります。

- LPD はジョブ中の各ファイルに一度ではなく、 ジョブ全体に対して一度だけ出力フィルタを起動します。

- LPD は出力フィルタに対し、 ジョブ中のファイルの先頭や末尾を特定するための対策を 一切おこなっていません。

- LPD はユーザのログイン名やホスト名をフィルタに渡しません。 したがって、課金の処理をおこなうことは考えていません。 実際、出力フィルタには、以下2つの引数しか与えられません。

  `filter-name` -w`width` -l`length`

  ここで、`width` は対象となるプリンタの `pw` 項目、 `length` は `pl` 項目に指定された数です。

出力フィルタの簡便さに誘惑されてはいけません。もし、 ジョブ中のそれぞれのファイルに別のページ番号を付加しようとしても、 出力フィルタはうまく動作しないでしょう。 そのような動作を期待しているならば、 (入力フィルタとしても知られている) テキストフィルタを使ってください。 詳しくは、「 テキストフィルタのインストール」をご覧ください。 さらに、出力フィルタは、実のところ、 もっと複雑になっています。まず、 特殊なフラグ文字を検出するために、 フィルタに送られてくるバイトストリームを検査する必要があります。 また、LPD に代わって、 自分自身にシグナルを送らなければなりません。

しかしながら、ヘッダページの印字をおこないたくて、 エスケープシーケンスやヘッダページを印字できるようにするその他の初期化文字列を送信する必要がある場合は、 出力ファイルが必要です。 (しかし、 ヘッダページを要求したユーザに対して課金しようとするのもまた無駄なことです。 LPD は出力フィルタにユーザやホストの情報を渡しません)。

1 台のプリンタに対し、LPD では出力フィルタとテキストやその他のフィルタを両方使うことができます。 このような場合、LPD はヘッダページ (「 ヘッダページ」 を参照してください) だけを印字させるために、出力フィルタを起動させます。 それから LPD では、出力フィルタに 2 バイトの文字 (ASCII 031 の次に ASCII 001) を送ることで、 出力フィルタが自分自身を停止することを期待しています。 2 バイト (031, 001) が出力フィルタに送られたとき、 出力フィルタは自分自身にシグナル `SIGSTOP` を送ることによって停止するはずです。 LPD がその他のフィルタを動かし終わると、 出力フィルタにシグナル `SIGCONT` を送って、出力フィルタを再起動します。

出力フィルタがあり、 テキストフィルタがない場合、 LPD はプレインテキストジョブを扱う場合に、 出力フィルタを使います。前述したように、出力フィルタでは、 ジョブ中の各ファイルの間に FORM FEED 文字や紙を送る他の文字を入れることはしません。 この動作は多分、 あなたが求めているものとは異なっているでしょう。 ほとんどの場合において、テキストフィルタが必要なはずです。

プログラム `lpf` は、 テキストフィルタの項で既に紹介しましたが、 出力フィルタとしても動作させることができます。もし、 簡便で極悪な出力フィルタが必要で、かつ、 バイトストリームを検査したりシグナルを送るコードを書きたくないときには、 `lpf` をお試しください。 あるいは、プリントが要求する初期化コードを送るために、 `lpf` をシェルスクリプトに包んで使うこともできます。

#### 9.4.1.6. テキストフィルタ `lpf`

プログラム `/usr/libexec/lpr/lpf` は、 FreeBSD の バイナリ配布に付属しているテキストフィルタ (入力フィルタ) で、出力を字下げしたり (`lpr -i` でジョブが入力さ れたとき)、 文字を未処理のままプリンタに送ったり (`lpr -l` でジョブが入力されたとき)、 ジョブ中のバックスペースやタブの印字位置を調節したり、 印字したページに対して課金したりすることができます。また、 このフィルタは出力フィルタとしても動作させることができます。

`lpf` は多くの印字環境において使用することに適しています。 このフィルタには、プリンタに初期化文字列を送る機能はありませんが、 必要とされる初期化をおこない、それから `lpf` を実行させるためのシェルスクリプトを作成するのはたやすいことです。

`lpf` に対して、 印字ページへの課金を正確におこなわせるためには、 `/etc/printcap` ファイルの中の `pw` と `pl` の項目に正確な値を入れておく必要があります。これらの値は、 どのくらいの量のテキストがページにフィットするか、また、 ユーザのジョブが何ページあるのかを調べるために使われます。 プリンタの課金についての詳しい情報については、「 プリンタの利用に対する課金」をご覧ください。

### 9.4.2. ヘッダページ

あなたが管理するシステムのユーザが たくさんおり、 ユーザ全員が様々なプリンタを使用する場合、多分、 必要悪であるヘッダページを 印字させることを検討したいと思うかもしれません。

ヘッダページは、バナー とか バーストページ としても知られていますが、 出力されたジョブが誰によるものなのかを特定させる働きがあります。 印字結果の山の中において、 ユーザのジョブによって印字された本物のドキュメント部分よりも際立たせるために、 ヘッダページは、通常、多分、縁が装飾されている大きな太文字で印字されます。 ヘッダページにより、 ユーザは自分が出したジョブがどこにあるのかをすばやく見つけることができます。 ヘッダページの欠点は、明らかに、すべてのジョブに対して、 紙が 1 枚余分に印字されるということです。 この紙の有効期間は短く、2 〜 3 分も続きません。最終的に、 これらの紙は再利用紙入れの中かくずの山に入れられることでしょう (ヘッダページはジョブ中の各ファイル毎に印字されるのではなく、 ジョブ毎に印字されるということに注意してください。したがって、 紙の消費はそれほどひどくはないかもしれません)。

もし、 プリンタがプレインテキストを直接印字できるならば、LPD システムは印字物に対して自動的にヘッダページを付けることができます。 PostScript プリンタを使っている場合は、 ヘッダページを生成する外部プログラムが必要になります。これについては、 「PostScript プリンタでのヘッダページ」をご覧ください。

#### 9.4.2.1. ヘッダページの印字を許可する

「プリンタ設定導入編 」節では、`/etc/printcap` ファイルの `sh` (``suppress header'' : “ヘッダを供給しない” という意味) を指定して、 ヘッダページの印字を止めていました。 プリンタでのヘッダページの印字を許可するには、 `sh` 項目を取り除くだけでよいのです。

とても簡単そうに見えるけど、本当かな?

それは本当です。 プリンタに初期化文字列を送るための 出力フィルタを用意しなくてはならないかもしれません。次に、Hewlett Packard PCL 互換プリンタの例を挙げます。

    #!/bin/sh
    #
    #  hpof - Output filter for Hewlett Packard PCL-compatible printers
    #  Installed in /usr/local/libexec/hpof

    printf "\033&k2G" || exit 2
    exec /usr/libexec/lpr/lpf

`of` 項目に出力フィルタのパス名を指定してください。 詳細については、「出力フィルタ」節 をご覧ください。

次に、以前紹介したプリンタ `teak` のための `/etc/printcap` ファイルの例を示します。ここでは、 ヘッダページの印字を許可し、上記の出力フィルタを追加しました。

    #
    #  /etc/printcap for host orchid
    #
    teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\
            :lp=/dev/lpt0:sd=/var/spool/lpd/teak:mx#0:\
            :if=/usr/local/libexec/hpif:\
            :vf=/usr/local/libexec/hpvf:\
            :of=/usr/local/libexec/hpof:

さて、ユーザが `teak` からジョブを印字させたとき、 それぞれのジョブ毎にヘッダページが印字されます。 もし、ユーザが印字物を探すのに時間を費やしたいと思うなら、 `lpr -h` によってジョブを入力することで、 ヘッダページの印字を止めることができます。 これ以外の lpr(1) のオプションについては、 「 ヘッダページ用オプション」節をご覧ください。

> Note: LPD では、ヘッダページの最後に、 FORM FEED 文字が印字されます。 プリンタに紙排出をさせるために、別な文字、 もしくは、別な文字列が利用されている場合は、 `/etc/printcap` 中の `ff` 項目で指定することができます。

#### 9.4.2.2. ヘッダページを制御する

ヘッダページの印字が許可されていると、LPD は 長いヘッダを作ります。これには、 紙全面に大きな文字でユーザ名、ホスト名、 ジョブ名が書かれています。次に、このヘッダページの例を示 します (kelly が ジョブ名 outline を `rose` というホストから印字 された場合)。

          k                   ll       ll
          k                    l        l
          k                    l        l
          k   k     eeee       l        l     y    y
          k  k     e    e      l        l     y    y
          k k      eeeeee      l        l     y    y
          kk k     e           l        l     y    y
          k   k    e    e      l        l     y   yy
          k    k    eeee      lll      lll     yyy y
                                                   y
                                              y    y
                                               yyyy

                                       ll
                              t         l        i
                              t         l
           oooo    u    u   ttttt       l       ii     n nnn     eeee
          o    o   u    u     t         l        i     nn   n   e    e
          o    o   u    u     t         l        i     n    n   eeeeee
          o    o   u    u     t         l        i     n    n   e
          o    o   u   uu     t  t      l        i     n    n   e    e
           oooo     uuu u      tt      lll      iii    n    n    eeee

          r rrr     oooo     ssss     eeee
          rr   r   o    o   s    s   e    e
          r        o    o    ss      eeeeee
          r        o    o      ss    e
          r        o    o   s    s   e    e
          r         oooo     ssss     eeee

                                                  Job:  outline
                                                  Date: Sun Sep 17 11:04:58 1995

LPD はこのテキストの終わりに FORM FEED 文字を加えます ので、ジョブは新しいページから開始されます (ただし、 `/etc/printcap` で出力先のプリンタのエントリに `sf` (suppress form feeds) が指定されているときはこ の限りではありません)。

お望みならば、LPD に短いヘッダページを出力させることもできます。 この場合は、 `/etc/printcap` ファイルの中で `sb` (short banner) を指定してください。 ヘッダページは次のようになります。

    rose:kelly  Job: outline  Date: Sun Sep 17 11:07:51 1995

デフォルトでは、LPD はヘッダページを最初に印字し、次にジョブの印字をおこないます。 この順番を逆にするときは、 `/etc/printcap` で `hl` (header last) を指定してください。

#### 9.4.2.3. ヘッダページに対する課金

LPD に備わっているヘッダページ出力機能を使うと、 入力されたジョブに対して課金をおこなうことができても、 ヘッダページは無料で提供しなくてはならない、 という特有のやり方を強要されます。

なぜでしょうか。

出力フィルタは単なる外部プログラムなので、 課金をするための制御をおこなうとすれば、 それはヘッダページを印字するときですが、出力フィルタには、 ユーザ名とホスト名 の情報や課金情報を格納するファイルがどれな のかということが知らされません。それゆえ、出力ファイルには、 誰にプリンタ利用の課金をおこなえばよいのかが分からないのです。 テキストフィルタやその他の変換フィルタ (これらのフィルタはユーザやホストの情報が知らされます) が出力ページの枚数に “1ページ分水増しする” だけでは十分ではありません。 なぜなら、ユーザは `lpr -h` に よってヘッダページの出力を止めることができるからです。 やみくもに 1 ページを水増しすると、 印字されてもいないヘッダページに対する 料金をとることになります。基本的に、`lpr -h` は環境に優しい心を持つユーザに好まれるオプションですが、 これを使うように奨励することもできません。

各々のフィルタに独自のヘッダページを生成させる (その結果、ヘッダページに課金することができる) という方法でも十分であるとはいえません。 この場合、LPD はフィルタに `-h` の情報を送りませんので、`lpr -h` によってヘッダページを印字しないオプションを選択したとしても、 依然としてヘッダページは印字され、 その分の課金がおこなわれてしまいます。

では、どのような選択肢があるのでしょうか。

ヘッダページへの課金に関しては、 次のことができます。

- LPD のやり方を受け入れ、 ヘッダページは無料とする。

- LPRng などの LPD の代替品をインストールする。 LPD と入れ替えが可能な他のスプーリングソフトウェアに関しては、 標準スプーラの代替品 をご覧ください。

- スマートな 出力フィルタを作成する。通常、 出力フィルタはプリンタを初期化するか、 単純な文字列変換をする程度の働きしかしません。 (テキスト (入力) フィルタがない場合) 出力フィルタはヘッダページとプレインテキストの印字をおこなうのに適しています。 プレインテキストを印字するためのテキストフィルタがない場合、 LPD はヘッダページを印字するためだけの目的で出力フィルタを起動します。 そして、LPD が生成するヘッダページのテキストを解析することにより、 出力フィルタはヘッダページに課金するために必要なユーザ名と ホスト名を取得することができます。この方式の唯一の問題点は、 出力フィルタは課金情報を格納するデータファイルの名前を知ることが できないということです (`af` 項目で指定されたファイル名は 出力ファイルに渡されません)。しかし、既知の 名前の課金データファイルを使うのならば、 その名前を出力フィルタのプログラム中に埋め込むことができます。 解析の手順を簡単にするためには、 `/etc/printcap` で `sh` 項目 (短いヘッダを指定) を使うとよいでしょう。 そしてまた、 ここまでの方法は少なからぬトラブルを生じさせるかもしれません。 そうなれば、もちろんユーザはヘッダページを無料で 提供してくれる気前のよいシステム管理者に感謝することでしょう。

#### 9.4.2.4. PostScript プリンタでのヘッダページ

これまでに述べたように、LPD ではプレインテキストのヘッダページをたくさんのプリンタに合うように生成することができます。 残念ながら、PostScript プリンタは、 プレインテキストを直接印字することができません。ですから、 LPD のヘッダページ機能はまったく、 あるいはほとんどの場合、役に立ちません。

ヘッダページを出力するための自明な方法の1つに、 すべての変換フィルタとテキストフィルタにヘッダページを生成させる方法があります。 フィルタは、 適切なヘッダページを生成するために、 ユーザ名とホスト名の引数を使うべきです。この方法の欠点は、いつでも、 lpr -h によってジョブが入力された場合でさえも、 ヘッダページが印字されるということです。

この方法で試してみましょう。次のスクリプトは、3 つの引数 (ユーザ のログイン名、ホスト名、ジョブ名) をとり、簡単な PostScript 用 のヘッダページを生成します。

    #!/bin/sh
    #
    #  make-ps-header - make a PostScript header page on stdout
    #  Installed in /usr/local/libexec/make-ps-header
    #

    #
    #  These are PostScript units (72 to the inch).  Modify for A4 or
    #  whatever size paper you are using:
    #
    page_width=612
    page_height=792
    border=72

    #
    #  Check arguments
    #
    if [ $# -ne 3 ]; then
        echo "Usage: `basename $0` <user> <host> <job>" 1>&2
        exit 1
    fi

    #
    #  Save these, mostly for readability in the PostScript, below.
    #
    user=$1
    host=$2
    job=$3
    date=`date`

    #
    #  Send the PostScript code to stdout.
    #
    exec cat <<EOF
    %!PS

    %
    %  Make sure we do not interfere with user's job that will follow
    %
    save

    %
    %  Make a thick, unpleasant border around the edge of the paper.
    %
    $border $border moveto
    $page_width $border 2 mul sub 0 rlineto
    0 $page_height $border 2 mul sub rlineto
    currentscreen 3 -1 roll pop 100 3 1 roll setscreen
    $border 2 mul $page_width sub 0 rlineto closepath
    0.8 setgray 10 setlinewidth stroke 0 setgray

    %
    %  Display user's login name, nice and large and prominent
    %
    /Helvetica-Bold findfont 64 scalefont setfont
    $page_width ($user) stringwidth pop sub 2 div $page_height 200 sub moveto
    ($user) show

    %
    %  Now show the boring particulars
    %
    /Helvetica findfont 14 scalefont setfont
    /y 200 def
    [ (Job:) (Host:) (Date:) ] {
    200 y moveto show /y y 18 sub def
    } forall

    /Helvetica-Bold findfont 14 scalefont setfont
    /y 200 def
    [ ($job) ($host) ($date) ] {
            270 y moveto show /y y 18 sub def
    } forall

    %
    %  That is it
    %
    restore
    showpage
    EOF

そして、変換フィルタやテキストフィルタがそれぞれ、 最初にこのスクリプトを起動することで、 ヘッダページが出力され、それから、 ユーザのジョブの印字をおこないます。次に、 このドキュメントの始めのほうで紹介した DVI 変換フィルタを、 ヘッダページを印字するように変更したものを示します。

    #!/bin/sh
    #
    #  psdf - DVI to PostScript printer filter
    #  Installed in /usr/local/libexec/psdf
    #
    #  Invoked by lpd when user runs lpr -d
    #

    orig_args="$@"

    fail() {
        echo "$@" 1>&2
        exit 2
    }

    while getopts "x:y:n:h:" option; do
        case $option in
            x|y)  ;; # Ignore
            n)    login=$OPTARG ;;
            h)    host=$OPTARG ;;
            *)    echo "LPD started `basename $0` wrong." 1>&2
                  exit 2
                  ;;
        esac
    done

    [ "$login" ] || fail "No login name"
    [ "$host" ] || fail "No host name"

    ( /usr/local/libexec/make-ps-header $login $host "DVI File"
      /usr/local/bin/dvips -f ) | eval /usr/local/libexec/lprps $orig_args

このフィルタがユーザ名やホスト名を決定するために 引数リストをどのように解析しなくてはならないかという点に注意してください。 この解析方法は他の変換フィルタに対しても同様です。 しかしながら、テキストフィルタについては、 引数の設定が少し異なっています (これについては、「 フィルタはどのように機能しているか」 をご覧ください)。

前述の通り、上記の手法は、極めて単純なのにも関らず、 `lpr` で “ヘッダページを印字しない” オプション (`-h` オプション) が使えなくなっています。 ユーザが森林資源を (あるいは、 ヘッダページが課金されているならば、その僅かな金額を)、 節約したいと望んでいる場合でも、 すべてのフィルタがすべてのジョブ毎にヘッダページを印字 することになっているので、節約することはできません。

ジョブ毎に印字されるヘッダページを ユーザが抑制できるようにするためには、「 ヘッダページに対する課金」で紹介したトリックを 使う必要があります。すなわち、LPD が生成するヘッダページの解析をおこない、PostScript 版のヘッダページを出力させる出力フィルタを作るのです。 この場合、ユーザが `lpr -h` でジョブを入力すると、 LPD はヘッダページを生成しなくなり、また、 出力フィルタも起動されません。そうでないならば、 作成した出力フィルタが LPD からのテキストを読み込み、ヘッダページを印字する適当な PostScript のコードがプリンタに送られるでしょう。

PostScript プリンタがシリアルポートに接続されている場合、 出力フィルタとして `lprps` を、 上記の動作をおこなうものとして `psof` を使うことができます。ただし、`psof` はヘッダページに対して課金をおこないませんので注意してください。

### 9.4.3. リモートプリンタからの出力

FreeBSD では、ネットワーク越しの印字、すなわち、 ジョブをリモートプリンタに送ることをサポートしています。 リモートプリンタからの出力をするには、一般に、 次の 2 つを参照してください。

- リモートホストに接続されたプリンタにアクセスする方法。 プリンタがあるホストのシリアル、 または、パラレルインタフェースに接続されている場合、 ネットワーク上の他のホストからこのプリンタにアクセスできるように LPD を設定します。「リモートホストに 接続されたプリンタ」 でどのようにするかを説明します。

- ネットワークに直接接続されているプリンタにアクセスする方法。 プリンタに、旧来のシリアル、または、 パラレルインタフェースに加えて (もしくは、これらに代わって) ネットワーク用のインタフェースがある場合。 そのようなプリンタは次のように動作するでしょう。

  - そのプリンタが LPD のプロトコルを理解でき、リモートホストからのジョブを キューに入れることさえできる場合。この場合、 プリンタは、LPD が起動している一般のホストのように振る舞います。 そのようなプリンタを設定するために、 「 リモートホストに接続されたプリンタ」 と同様の手順をおこなってください。

  - そのプリンタが、 データストリームによるネットワーク接続をサポートしている場合。 この場合、ネットワーク上の1つのホストとしてプリンタを “接続” します。 このホストは、ジョブをスプーリングする責任を負い、 スプーリングされたジョブはプリンタに送られます。 そのようなプリンタをインストールするためのいくつかの提案が 「 ネットワークにおけるデータストリームの インタフェースを持つプリンタ」にあります。

#### 9.4.3.1. リモートホストに接続されたプリンタ

LPD スプーリングシステムでは LPD (または LPD 互換のシステム) が起動している他のホストへジョブを送る機能が 始めからサポートされています。この機能により、 あるホストに接続されたプリンタへ、 他のホストからアクセスできるようになります。また、 LPD プロトコルを理解するネットワークインタフェースを持ったプリンタに対しても、 この機能は働きます。

リモートプリンタへの出力を許可するためには、最初に、 あるホスト (これを、 プリンタホストと呼びます) にプリンタを接続します。そして、「 プリンタ設定導入編」 に書かれた簡単なプリンタの設定をおこなってください。 必要ならば、「プリンタ設定上級編」 にある、更に進んだ設定をおこなってください。そして、 そのプリンタをテストしてうまく動作することを確認し、LPD に許可した機能がうまく働くかどうかを見てください。さらに ローカルホストが プリンタホストの LPD サービスの使用を許可されているか確認して下さい (「 リモートホストからのプリンタの利用を制限する 」参照)。

LPD 互換のネットワークインタフェースを持つプリンタを使用している場合は、 そのプリンタ自身が以下で説明する プリンタホストになります。そして、 プリンタ名とは、 そのプリンタに設定した名前のことを指します。 これについては、プリンタ、および (または)、 プリンタのネットワークインタフェースに付属するドキュメントを参照してください。

> Tip: ヒューレット・パッカード社の Laserjet シリーズを使用している場合には、 プリンタ名を `text` とすると、 自動的に LF から CRLF への変換が行なわれます。 そのため、`hpif` スクリプトは必要ありません。

次に、 そのプリンタにアクセスしたいと思っている他ホストにおいて、 そのホストの `/etc/printcap` ファイルに次にあげるエントリを作ります。

1. 名前のエントリ。どんな名前でもよいのですが、簡単のため、多分、 プリンタホストで設定されたプリンタ名や別名と同じものを使いたいと思うでしょう。

2. `lp` 項目で指定されるデバイスは明示的に空にします (`:lp=:` とします)。

3. スプーリングディレクトリを作成し、 `sd` 項目でその位置を指定します。 LPD では、プリンタホストにジョブを送信するまでの間、 このディレクトリにジョブを格納します。

4. `rm` 項目でプリンタホストの名前を指定します。

5. `rp` 項目で プリンタホストに接続したプリンタ名を指定します。

これで終わりです。 変換フィルタやページの大きさやその他の事項を `/etc/printcap` に加える必要はありません。

次に、 リモートホストに接続されたプリンタで印字するための設定例を示します。 ホスト `rose` には 2 台のプリンタ `bamboo` と `rattan` が接続されています。これらのプリンタをホスト `orchid` のユーザが使えるようにしましょう。最初に `orchid` の `/etc/printcap` を示します (このファイルは、「 ヘッダページの出力を許可する」 で参照することができます)。このファイルには、既に、プリンタ `teak` 用のエントリがありました。以下では、 これに、ホスト `rose` にある2台のプリンタ用のエントリが加えられています。

    #
    #  /etc/printcap for host orchid - added (remote) printers on rose
    #

    #
    #  teak is local; it is connected directly to orchid:
    #
    teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\
            :lp=/dev/lpt0:sd=/var/spool/lpd/teak:mx#0:\
            :if=/usr/local/libexec/ifhp:\
            :vf=/usr/local/libexec/vfhp:\
            :of=/usr/local/libexec/ofhp:

    #
    #  rattan is connected to rose; send jobs for rattan to rose:
    #
    rattan|line|diablo|lp|Diablo 630 Line Printer:\
            :lp=:rm=rose:rp=rattan:sd=/var/spool/lpd/rattan:

    #
    #  bamboo is connected to rose as well:
    #
    bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
            :lp=:rm=rose:rp=bamboo:sd=/var/spool/lpd/bamboo:

`orchid` で必要となる作業はスプーリングディレクトリを作ることだけです。

    # mkdir -p /var/spool/lpd/rattan /var/spool/lpd/bamboo
    # chmod 770 /var/spool/lpd/rattan /var/spool/lpd/bamboo
    # chown daemon:daemon /var/spool/lpd/rattan /var/spool/lpd/bamboo

これで、`orchid` のユーザが `rattan` と `bamboo` で印字することができるようになりました。 たとえば、`orchid` のユーザが次のように入力したとします。

    % lpr -P bamboo -d sushi-review.dvi

すると、`orchid` の LPD システムは、 ジョブをスプーリングディレクトリ `/var/spool/lpd/bamboo` にコピーし、これが DVI ファイルを印字するジョブであることを記録します。 ホスト `rose` の `bamboo` スプーリングディレクトリに十分な容量が確保でき次第、 両者の LPD は、ジョブのファイルを `rose` に転送します。 このファイルは、そのすべてが印字されるまで、`rose` のキューに留まります。 (`bamboo` は PostScript プリンタなので) DVI から PostScript への変換は `rose` でおこなわれます。

#### 9.4.3.2. ネットワークにおけるデータストリームの インタフェースを持つプリンタ

プリンタのネットワークインタフェースカードは、 2 種類に分類することができます。 1 つはスプーラをエミュレートするもの (高価) で、もう 1 つはシリアルやパラレルポートを使うように プリンタにデータを送ることができるだけのもの (安価) です。この節では、 後者の使い方を説明します。前者のプリンタは、前節「 リモートホストに接続されたプリンタ」 の方法が適用できます。

`/etc/printcap` ファイルでは、 シリアルかパラレルのインタフェースのどちらを使うのか、 そして、(シリアルインタフェースを使う場合) そのボーレートはいくらであるか、フロー制御は使うのか、 タブのための遅延を加えるのか、 改行文字を変換するかなどの指定をおこなうことができます。 しかし、TCP/IP や他のネットワークポートからデータを受け取るプリンタを 接続するための指定をおこなうことはでき ません。

ネットワーク接続されたプリンタにデータを送るためには、 テキストフィルタと変換フィルタから呼び出すことができる 通信プログラムを開発する必要があります。以下に、 そのようなプログラムの例を示します。スクリプト `netprint` では、 標準入力から印字データをすべて受け取り、 ネットワーク接続されたプリンタにこれを送ります。 `netprint` の最初の引数でプリンタのホスト名を、 2 番目の引数で接続するポート番号を指定します。 このプログラムでは単方向通信 (FreeBSD からプリンタ) のみをサポートしていることに注意してください。 ネットワークプリンタの多くは双方向通信をサポートしていますので、 その恩恵 (プリンタの状態を得たり、 課金をおこなうなど) にあずかりたいと思われるかもしれません。

    #!/usr/bin/perl
    #
    #  netprint - Text filter for printer attached to network
    #  Installed in /usr/local/libexec/netprint
    #

    $#ARGV eq 1 || die "Usage: $0 <printer-hostname> <port-number>";

    $printer_host = $ARGV[0];
    $printer_port = $ARGV[1];

    require 'sys/socket.ph';

    ($ignore, $ignore, $protocol) = getprotobyname('tcp');
    ($ignore, $ignore, $ignore, $ignore, $address)
        = gethostbyname($printer_host);

    $sockaddr = pack('S n a4 x8', &AF_INET, $printer_port, $address);

    socket(PRINTER, &PF_INET, &SOCK_STREAM, $protocol)
        || die "Can't create TCP/IP stream socket: $!";
    connect(PRINTER, $sockaddr) || die "Can't contact $printer_host: $!";
    while (<STDIN>) { print PRINTER; }
    exit 0;

このスクリプトは、 様々なフィルタが利用することができます。仮に、Diablo 750-N ラインプリンタを持っており、 これがネットワークに接続されているとしましょう。 プリンタはポート番号 5100 にて印字するデータを受け取ります。 プリンタのホスト名は scrivener とします。このとき、 このプリンタのテキストフィルタは次のようになります。

    #!/bin/sh
    #
    #  diablo-if-net - Text filter for Diablo printer `scrivener' listening
    #  on port 5100.  Installed in /usr/local/libexec/diablo-if-net
    #

    exec /usr/libexec/lpr/lpf "$@" | /usr/local/libexec/netprint scrivener 5100

### 9.4.4. プリンタの利用に制約を与える

本節では、プリンタの利用に制約を与えるための情報を記しています。 LPD システムでは、プリンタ (ローカル、 リモートのいずれに接続されていても) にアクセスできる人を制限する機能、 複数部のコピーの印字の可否を制御する機能、 ジョブのサイズの最大値やプリンタキューに入る ジョブの最大個数を制御する機能を提供しています。

#### 9.4.4.1. 複数部のコピーの印字を制限する

LPD システムではユーザが複数部のコピーの印字を簡単におこなう 機能を提供しています。ユーザが、(たとえば) `lpr -#5` コマンドを使ってジョブを印字すると、 ジョブのそれぞれのファイルのコピーを 5 部得ることができます。 これがよい機能であると思うかどうかは人それぞれでしょう。

複数部のコピーの印字によってプリンタが 必要以上に消耗してしまうと感じるならば、 `/etc/printcap` ファイルに `sc` 項目を加えてください。これにより、 lpr(1) の `-#` オプションの使用が禁止されます。 このオプションが指定されているにも関らず、 `-#` オプションを使うと、 次のようなメッセージが表示され、 このオプションの利用できない旨を伝えます。

    lpr: multiple copies are not allowed

リモートホストからプリンタをアクセスできる 設定にしている場合 (この 設定については、「 リモートホストに接続されたプリンタ」 をご覧ください)、そのリモートホストの `/etc/printcap` にも同じように `sc` 項目を追加する必要があることに注意してください。 そうしないと、ユーザは別なホストから複数部のコピーの 印字をすることができてしまいます。

例を使って説明しましょう。次に示す `/etc/printcap` ファイルは、ホスト `rose` のものです。プリンタ `rattan` は極めて頑丈なので、 複数部のコピーの印字は許可されています。しかし、 レーザプリンタの `bamboo` はもう少しデリケートで、 このプリンタから複数部のコピーを印字することを `sc` 項目を追加することで禁止しています。

    #
    #  /etc/printcap for host rose - restrict multiple copies on bamboo
    #
    rattan|line|diablo|lp|Diablo 630 Line Printer:\
            :sh:sd=/var/spool/lpd/rattan:\
            :lp=/dev/lpt0:\
            :if=/usr/local/libexec/if-simple:

    bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
            :sh:sd=/var/spool/lpd/bamboo:sc:\
            :lp=/dev/ttyd5:ms#-parenb cs8 clocal crtscts:rw:\
            :if=/usr/local/libexec/psif:\
            :df=/usr/local/libexec/psdf:

さらに、orchid の `/etc/printcap` にも

sc

項目を追加する必要があります (`orchid` でこの編集をおこなっているときに、ついでに、プリンタ `teak` でも複数部のコピーの印字を禁止することにしましょう)。

    #
    #  /etc/printcap for host orchid - no multiple copies for local
    #  printer teak or remote printer bamboo

    teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\
            :lp=/dev/lpt0:sd=/var/spool/lpd/teak:mx#0:sc:\
            :if=/usr/local/libexec/ifhp:\
            :vf=/usr/local/libexec/vfhp:\
            :of=/usr/local/libexec/ofhp:

    rattan|line|diablo|lp|Diablo 630 Line Printer:\
            :lp=:rm=rose:rp=rattan:sd=/var/spool/lpd/rattan:

    bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
            :lp=:rm=rose:rp=bamboo:sd=/var/spool/lpd/bamboo:sc:

`sc` 項目を指定することにより、 `lpr -#` の使用を防ぐことができます。しかし、この状態では lpr(1) を複数回起動したり、 1 回のジョブで次のように同じファイルを複数個指定することを防ぐまでには至っていません。

    % lpr forsale.sign forsale.sign forsale.sign forsale.sign forsale.sign

このような悪用を防ぐ方法は (その指示を無視することも含めて) たくさんあります。 各自で調べてみてください。

#### 9.4.4.2. プリンタを使用できる人を限定する

それぞれのプリンタを使用できる人を限定するには、UNIX の グループ権限のメカニズムを利用し、さらに、 `/etc/printcap` で `rg` 項目を指定することでおこないます。 あるプリンタにアクセスさせてもよいと思うユーザすべてを グループのどれかに入れてください。そして、 そのグループ名を `rg` で指定します。

このとき、そのグループに含まれないユーザ (`root` も含みます) には、次のようなメッセージが表示され、プリンタの使用はできません。 “ `lpr: Not a member of the restricted group` ”

`sc` (suppress multiple copies : 複数部のコピーの印字を禁止する) を指定するときと同様に、`rg` が指定されたプリンタがリモートホストからもアクセスでき (この設定については、 「 リモートホストに接続されたプリンタ」 をご覧ください)、かつ、 そのホストでもプリンタを使用できる人を限定するのが 妥当であると思う場合は、 そのホストの `/etc/printcap` にも rg 指定をおこなう必要があります。

たとえば、プリンタ `rattan` は誰でも利用できるが、`bamboo` はグループ `artists` に属している人のみが利用できるようにしてみましょう。 以下に、もうお馴染みとなったホスト `rose` の `/etc/printcap` を示します。

    #
    #  /etc/printcap for host rose - restricted group for bamboo
    #
    rattan|line|diablo|lp|Diablo 630 Line Printer:\
            :sh:sd=/var/spool/lpd/rattan:\
            :lp=/dev/lpt0:\
            :if=/usr/local/libexec/if-simple:

    bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
            :sh:sd=/var/spool/lpd/bamboo:sc:rg=artists:\
            :lp=/dev/ttyd5:ms#-parenb cs8 clocal crtscts:rw:\
            :if=/usr/local/libexec/psif:\
            :df=/usr/local/libexec/psdf:

これ以外の `/etc/printcap` ファイル (ホスト `orchid` のもの) はそのままにしておくことにします。もちろん、 `orchid` のユーザは全員 `bamboo` を利用することができます。これは、 `orchid` には特定のユーザのみにしかアクセスさせておらず、 そのユーザにはプリンタを利用させたいと思っているからなのかもしれませんし、 そうでないかもしれません。

> Note: 1台のプリンタを複数グループのユーザに利用させることはできません。

#### 9.4.4.3. 入力可能なジョブのサイズを制限する

たくさんのユーザからプリンタが利用される場合には、多分、 ユーザが印字要求を出すことができるファイルのサイズに 上限値を置く必要が生じるでしょう。結局のところ、 スプーリングディレクトリ が置かれているファイルシステムの空き容量がその 上限値になる訳ですが、 あるユーザがこれを独占的に使用すること避けるために、 他ユーザからのジョブ用の空き容量を確保する必要もあります。

LPD では、`mx` 項目を指定することにより、 ジョブ中の個々のファイルのサイズの上限値を制限する機能を提供しています。 指定される ファイルサイズの単位は BUFSIZ ブロックで、1 `BUFSIZ` ブロックは 1024バイトを表わします。この `mx` 項目の値として 0 が指定されると、 ファイルサイズの制限はなくなります。 `mx` が指定されない場合は、 デフォルトの制限として 1000 ブロックが使われます。

> Note: この制限はジョブ中の各 ファイルに対して適用されるものであり、 ジョブ全体のサイズ を制限するものではありません。

ところで、 プリンタに設定された上限値を超えるファイルサイズの ファイルが入力された場合でも、LPD はこれを拒否しません。その代わりに、このファイルは、 その先頭から上限値のファイルサイズまでしかキューに入れられません。 そして、その部分までが印字され、 残りの部分は捨てられます。 これが正しい動作といえるのかどうかは議論の余地があるところです。

それでは、設定例に登場しているプリンタ `rattan` と `bamboo` の印字可能なファイルサイズに制限を加えてみましょう。artists グループの人達が作る PostScript ファイルのサイズは 巨大になる傾向があるので、上限値を 5M バイトとします。 それから、 プレインテキスト用のラインプリンタは無制限とします。

    #
    #  /etc/printcap for host rose
    #

    #
    #  No limit on job size:
    #
    rattan|line|diablo|lp|Diablo 630 Line Printer:\
            :sh:mx#0:sd=/var/spool/lpd/rattan:\
            :lp=/dev/lpt0:\
            :if=/usr/local/libexec/if-simple:

    #
    #  Limit of five megabytes:
    #
    bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
            :sh:sd=/var/spool/lpd/bamboo:sc:rg=artists:mx#5000:\
            :lp=/dev/ttyd5:ms#-parenb cs8 clocal crtscts:rw:\
            :if=/usr/local/libexec/psif:\
            :df=/usr/local/libexec/psdf:

この場合もそうですが、この制限はローカル (ホスト rose) のユーザのみに適用されます。 リモートホストからプリンタを利用できるように設定している場合は、 そのリモートホストのユーザはこの制限を受けません。 これらのユーザにも制限を加える場合は、リモートホストの `/etc/printcap` の `mx` を指定する必要があります。 リモートホストから印字するための詳しい情報については、 「 リモートホストに接続されたプリンタ」 を参照してください。

リモートホストに接続されたプリンタへのジョブの サイズを制限する特別な方法は他にもあります。これについては、 「 リモートホストからのプリンタの利用を制限する」 を参照してください。

#### 9.4.4.4. リモートホストからのプリンタの利用を制限する

LPD スプーリングシステムでは、 リモートホストから要求されたジョブの印字を制限するための方法がいくつか提供されています。

ホストの制限

  ローカルの LPD が印字要求を受け付けるリモートホストは、ファイル `/etc/hosts.equiv` と `/etc/hosts.lpd` によって制御することができます。LPD では、あるホストから印字の要求がきたとき、 このホストの名前がこれら 2 つのファイルのどちらかに含まれている かどうかを調べます。これが含まれていない場合は、LPD はこの要求を拒否します。

  これらのファイルの形式は単純です。 各行にホストの名前を 1つずつ書いていきます。ファイル `/etc/hosts.equiv` の方は ruserok(3) プロトコルでも利用され、 rsh(1) や rcp(1) といったプログラムの動作に影響するので注意が必要です。 `/etc/hosts.equiv` の記述は慎重におこないましょう。

  例として、以下にホスト `rose` の `/etc/hosts.lpd` を示します。

      orchid
      violet
      madrigal.fishbaum.de

  この例では、`rose` はホスト `orchid`, `violet` そして `madrigal.fishbaum.de` からの要求を受け付けることになります。 その他のホストが `rose` の LPD にアクセスしようとしても、 LPD はそのジョブを拒否します (訳注: 拒否されるのは、そのホストが `/etc/hosts.equiv` にも含まれていない場合です)。

サイズの制限

  スプーリングディレクトリがある ファイルシステムに残しておく必要がある 空き容量の大きさを制御することができます。 ローカルプリンタ用のスプーリングディレクトリに `minfree` という名前のファイルを作成します。そして、 そのファイルの中にリモートホストからのジョブの 要求を受け付けるために必要な空き容量のディスクブロックサイズ (1 ディスクブロック = 512 バイト) を記します。

  これで、 リモートホストのユーザにファイルシステムを満杯にされないことが保証されます。 この機能を使うと、 ローカルホストのユーザに対してある種の優先権を与えることもできます。 ローカルホストのユーザは、 `minfree` ファイルで指定された値よりもディスクの空き容量が下回った後でもずっと、 ジョブをキューに入れることができるのです。

  たとえば、プリンタ `bamboo` 用の `minfree` を作ってみましょう。 このプリンタのスプーリングディレクトリを調べるために、 `/etc/printcap` を調べてみましょう。 以下に、`bamboo` のエントリ部分を示します。

      bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
              :sh:sd=/var/spool/lpd/bamboo:sc:rg=artists:mx#5000:\
              :lp=/dev/ttyd5:ms#-parenb cs8 clocal crtscts:rw:mx#5000:\
              :if=/usr/local/libexec/psif:\
              :df=/usr/local/libexec/psdf:

  スプーリングディレクトリは `sd` 項目で指定されます。LPD がリモートホストからのジョブを受け付けるために必要な ファイルシステムの空き容量を 3M バイト (= 6144 ディスクブロック) にすることにしましょう。

      # echo 6144 > /var/spool/lpd/bamboo/minfree

利用ユーザの制限

  `/etc/printcap` の `rs` 項目を指定することで、 ローカルプリンタを利用できるリモートホストのユーザを制限することができます。 ローカルホストに接続されたプリンタ用のエントリに `rs` 項目が指定されている場合、 LPD は、印字を要求したユーザのアカウントと同じログイン名が ローカルホストに登録されている場合に限り、 そのジョブを受け付けます。それ以外のジョブを LPD は拒否します。

  この機能は、(たとえば) 複数の部署がネットワークを共有しており、 この内のあるユーザが部署の境界を越えて活動している場合には特に有用です。 そのようなユーザに対して、システムのアカウントを与えるだけで、 これらのユーザは自分が所属する部署のシステムから そのシステムに接続されているプリンタを使用することができます。 これらのユーザにはむしろ、 プリンタの使用だけを認め、 その他のコンピュータ資源を利用させたくないときは、 それらのユーザにはホームディレクトリを与えず、 ログインシェルはシェルとしては何の役にも立たない `/usr/bin/false` などを指定して、 これらのユーザのアカウントはプリンタ用の “形式的な” ものとします。

### 9.4.5. プリンタの利用に対する課金

という訳で、印字するためには料金をとることが必要です。 取らない理由などありましょうか。紙やインクにはお金がかかります。 そして、プリンタの維持費もかかります。 プリンタには可動部分が搭載されており、 これらの部分は壊れやすいという傾向があります。 プリンタや、その利用形態、維持費について調査をし、1 ページ (1 フィート、1 メートルなど) 当たりにかかるコストを調べておいてください。 これに基づき、プリンタの利用に対する課金を、実際に、 どのように始めればよいのでしょうか。

さて、残念ながら、この部分に関しては LPD スプーリングシステムはほとんど役に立ちません。 課金は使用しているプリンタの種類、印字するもののファイルの形式、 プリンタの利用に対する課金での あなた自身の要求に大きく左右されます。

課金システムを実現するためには、プリンタのテキストフィルタ (プレインテキストのジョブに対して課金するため) と変換フィルタ (その他のファイル形式に対して課金するため) を変更して、 印字したページを数えたり、 プリンタに印字したページ数を取得するための要求を送る必要があります。 ただし、出力フィルタのみを利用している場合は、 課金をおこなうことができません。フィルタに関しては、 「 フィルタ」をご覧ください。

一般に、課金方式には次の 2 つがあります。

- 定期的に課金する方法 はよく利用される方法です。この理由は、 恐らく比較的簡単に実現できるからです。 誰かがジョブを印字する度に、フィルタはそのユーザ名、 ホスト名、印字したページ数を課金データファイルに記録します。 毎月、毎学期、毎年、その他お好みの時期に、 各プリンタの課金用ファイルを集め、 それぞれのユーザが印字したページ数を合計して その分の課金をおこないます。 次回の課金期間をデータを 0 にして課金を再開するために、 すべてのログファイルを削除します。

- 利用毎に課金する方法 はあまり利用されていません。これは、 実現するのが比較的難しいからです。この方式では、 プリンタを使用したらすぐに、 フィルタがユーザにその利用に対する課金をおこないます。 ディスククォータのように、課金作業は瞬時におこなわれます。 この方式では、ユーザのアカウントが赤字になる場合に、 ユーザが印字をおこなうことを拒否することができます。 また、ユーザに “プリンタ版 quota” を調べたり、 調整したりする方法を提供したいと思うかもしれ ません。 これを実現するためには、ユーザとその quota を追跡するために、 あるデータベース用のコードが必要となります。

LPD スプーリングシステムでは、 どちらの方式にも簡単に対応できます。(ほとんどの場合は) フィルタを用意しなければならないので、 課金作業のためのコードも用意しなければなりません。 しかし、明るい面もあります。 それは、課金方式に関して、非常に大きな柔軟性が与えられたということです。 たとえば、「定期的に課金する方法」か、 「利用毎に課金する方法」のどちらかを選びまず、そして、 どんな情報 (ユーザ名、ホスト名、ジョブのタイプ、印字された頁数、 使用した紙の大きさ、印字をするために要した時間など) をログに記録するかを決めます。 以上のことをおこなうには、上記の情報を保持するために、 フィルタを変更しなくてはなりません。

#### 9.4.5.1. 手軽なプリンタ課金方法

FreeBSD には、「定期的に課金する方法」による課金を すぐに設定できるように、2 個のプログラムを添付しています。 その内の1つはテキストフィルタ `lpf` で、 これについては、「 テキストフィルタ lpf」をご覧ください。もう1つは、 pac(8) で、 これはプリンタの課金データファイルからのエントリを集め、 これを合計するプログラムです。

「 フィルタはどのように機能しているか」で述べたように、 LPD ではテキストフィルタや変換フィルタを起動しますが、 そのコマンドラインで使用している課金データファイルの名前が指定されます。 両フィルタはこの引数を使って、 どの課金データファイルのエントリに書き込めばよいのかを知ることができます。 このファイルの名前は `/etc/printcap` 中の `af` 項目によって指定されます。 このファイルが絶対パ スで指定されない場合は、 スプーリングディレクトリからの相対パスとして扱われます。

LPD は、紙のページの幅と行数 (`pw` と `pl` 項目で 指定される) を引数として `lpf` を起動します。`lpf` では、何ページ印字したかを決定するためにこれらの引数を使用します。 ファイルをプリンタに送った後、 課金情報を課金データファイルに書き込みます。 このファイルは次のようになります。

    2.00 rose:andy
    3.00 rose:kelly
    3.00 orchid:mary
    5.00 orchid:mary
    2.00 orchid:zhang

課金データファイルはプリンタ毎に分けて作るべきです。 これは、`lpf` にはファイルをロックする機構が組み込まれていないためです。 したがって、`lpf` が 2 つ起動されたとき、 同じファイルに同時に書き込みをおこなった場合、 お互いのエントリを破壊してしまうかもしれません。 課金用ファイルを各プリンタ毎に確実に分けるには、 `/etc/printcap` 中の `af=acct` 項目を使います。 そうすれば、それぞれの課金用ファイルがプリンタのスプーリングディレクトリに、 `acct` という名称で作成されます。

プリンタの利用に対してユーザに課金する準備ができたら、 スプーリングディレクトリに移動した後、 pac(8) と入力してください。 次のような、ドル中心主義の課金リストが表示されます (訳注: ドル中心主義という表現は、 表示がドルで出ることへの著者の皮肉でしょう。 セントがあるので小数点以下が表示されますが、 この機能も日本では邪魔ですね)。

      Login               pages/feet   runs    price
    orchid:kelly                5.00    1   $  0.10
    orchid:mary                31.00    3   $  0.62
    orchid:zhang                9.00    1   $  0.18
    rose:andy                   2.00    1   $  0.04
    rose:kelly                177.00  104   $  3.54
    rose:mary                  87.00   32   $  1.74
    rose:root                  26.00   12   $  0.52

    total                     337.00  154   $  6.74

pac(8) が受け付ける引数には次のようなものがあります。

`-P`printer``

  プリンタ `printer` の利用に対する課金リストを作成します。 このオプションは、`/etc/printcap` の `af` が絶対パスで指定されていた場合に限り、動作します。

`-c`

  ユーザ名のアルファベット順ではなく、 課金額の低い順にリストを並べます。

`-m`

  課金データファイルにあるホスト名を無視します。 このオプションを使用すると、ホスト `alpha` のユーザ `smith` とホスト `gamma` のユーザ `smith` は同一人物として扱われます。 このオプションが指定されない場合は、 両者は別なユーザとして扱います。

`-p`price``

  `/etc/printcap` の `pc` 項目で指定された値、または、 デフォルトの値 (2 セント) に代わり、紙1ページ、または、 1フィート当たりの価格を指定します。 `price` として、 浮動小数点数を指定することができます。

`-r`

  リストの並べる順番を逆順にします。

`-s`

  課金リストを作成し、 課金データファイルを削除します。

`name` `...`

  ユーザ `names` に対する課金情報のみを表示します。

pac(8) が生成するデフォルトのリストには、 各ホストのユーザ別に印字ページ数が表示されます。 (ユーザがサイト内のすべてのホストを使用できるため) ホスト名の情報が意味を持たない場合、 `pac -m` を実行してください。次のようなリストが得られます。

      Login               pages/feet   runs    price
    andy                        2.00    1   $  0.04
    kelly                     182.00  105   $  3.64
    mary                      118.00   35   $  2.36
    root                       26.00   12   $  0.52
    zhang                       9.00    1   $  0.18

    total                     337.00  154   $  6.74

課金額を決めるために、 pac(8) は `/etc/printcap` ファイルの `pc` 項目で指定された値 (デフォルト値は 200、すなわち 1 ページ当たり 2 セント) を使います。この項目で、印字物に課金したい ファと思う 1 ページ当たり、 または、1 フィート当たりの価格を 100 分の 1 セント単位で指定します。 pac(8) を `-p` オプション付きで起動すると、 この値を置き換えることができます。 この `-p` オプションで指定する額の単位は、 100 分の 1 セント単位ではなく、ドル単位です。たとえば、次の指定では、 1 ページ当たりの単価が 1 ドル 50 セントになります。

    # pac -p1.50

このオプションを使うと、 実際の課金額を集計することができます。

最後に、`pac -s` を起動すると、課金情報は課金データ累計ファイルに保存されます。 このファイルの名前は、プリンタの課金データファイルの後ろに `_sum` を付けたものとなります。そして、 課金データファイルは削除されます。次に pac(8) が起動されると、 その時点までの累計金額を得るために、 課金データ累計ファイルが読み込まれ、 通常の課金データファイルからの情報に加算されます。

#### 9.4.5.2. 印字されたページ数をどのように数えるか?

課金を、リモートホストからの印字でさえも、 正確におこなうためには、 ジョブで使用された紙が何ページであるかを特定できる必要があります。 このことは、プリンタ利用に対する課金をおこなう上の根本的な問題です。

プレインテキストのジョブの場合、 問題を解決するのはさほど難しくはありません。 ジョブが何行であったかを数え、プリンタがサポートしている紙 1 ページに印字できる最大の行数と比較すればよいのです。 重ね打ちするために利用されるファイル中のバックスペース文字や、 物理的に複数の行に渡る長い論理行に対する取り扱いを忘れずにおこなってください。

(「テキストフィルタ lpf」で紹介した) テキストフィルタ `lpf` では、課金をおこなうときに、 これらの取り扱いをおこなってくれます。 課金をおこなうために必要なテキストフィルタを作成している方は、 `lpf` のソースコードが参考になるでしょう。

これに対して、他のファイル形式の処理はどのようにすれば よいのでしょうか。

まず、DVI から LaserJet, または、DVI から PostScript への変換の場合、フィルタが `dvilj` や `dvips` の 出力メッセージを解析することで、 何ページ分の変換がおこなわれたかを知ることができます。 他のファイル形式とその変換プログラムに関しても、 同様のことができるかもしれません。

しかし、この方式には問題点があります。それは、 変換されたページがすべて印字されるとは限らないということです。 たとえば、プリンタが紙詰まりを起こしたり、トナー切れになったり、 はたまた、爆発したりするかもしれません。 そのような状況により印字が途中で中止されたとしても、この方式では、 ユーザは全ページ分の料金を課されてしまうのです。

それでは、どのような対策をたてることができるのでしょうか。

正確な 課金をおこなうための唯一の確実な方法は、 何ページ印字したのかを知らせることができるプリンタを入手し、 これをシリアルポートかネットワークに接続することです。 ほとんどすべての PostScript プリンタではこの概念がサポートされています。 他のプリンタも同様です (Imagen レーザプリンタをネットワーク接続するなど)。 それぞれのプリンタのフィルタを、 ジョブを印字した後で印字ページ数を得るように変更してください。 そして、課金情報はここで得られた値のみに 基づいて記録してください。行数を数えたり、 エラーが生じやすいファイルの調査は必要とされません。

もちろん、 気前よく印字料金をすべて無料にすることもできます。

## 9.5. プリンタを使う

この節では、FreeBSD で設定したプリンタを使う方法について説明します。 ここでは、ユーザレベルでのコマンドを概説します。

lpr(1)

  印字をおこないます。

lpq(1)

  プリンタキューを調べます。

lprm(1)

  プリンタキューにあるジョブを削除します。

管理者用コマンド lpc(8) もありますが、 これは「LPD スプーラの管理」 に記します。このコマンドは、 プリンタやそのキューの制御のために用いられます。

lpr(1)、lprm(1)、そして lpq(1) の 3 コマンドは、`-P`printer-name`` オプションをとり、これによって、 `/etc/printcap` のように操作の対象となる プリンタやキューを指定します。 これによって、様々なプリンタに対してジョブを送る、 取り消す、調査することができます。 `-P` が使われなかった場合は、これらのコマンドは `PRINTER` 環境変数で指定されたプリンタを使用します。 そして、`PRINTER` 環境変数がなかった場合は、 これらのコマンドはデフォルトのプリンタ `lp` を使います。

以下では、デフォルトプリンタ という用語が意味するプリンタは、`PRINTER` 環境変数で指定されたプリンタ、もしくは、`PRINTER` 環境変数がない場合は、`lp` という名前のプリンタです。

### 9.5.1. 印字する

ファイルを印字するためには、 次のように入力してください。

    % lpr filename ...

これにより、 入力されたファイルのそれぞれをデフォルトのプリンタ から印字します。ファイル名が与えられなかった場合、 lpr(1) は標準入力から印字するデータを読み込みます。たとえば、 次のコマンドにより、ある重要なシステムファイルが印字されます。

    % lpr /etc/host.conf /etc/hosts.equiv

印字させるプリンタを選択するためには、 次のように入力します。

    % lpr -P printer-name filename ...

次の例では、プリンタ `rattan` に、 カレントディレクトリにあるファイルの詳細なリストを印字しています。

    % ls -l | lpr -P rattan

上記の lpr(1) コマンドではファイル名の指定がないので、 `lpr` は標準入力から印字するデータ、 この場合、`ls -l` コマンドの出力、を読み込みます。

lpr(1) コマンドでは、 出力の整形を制御したり、ファイル変換を適用したり、 複数部数のコピーを作成したり、 などといた様々な幅広いオプションを受け付けることもできます。 詳細については、 「 その他の印字オプション」をご覧ください。

### 9.5.2. ジョブの処理状況を調べる

lpr(1) コマンドを使って印字をする場合、プリントしようと するデータは “プリントジョブ” と呼ばれる箱に一緒に置かれ、 これが LPD スプーリングシステムに送られます。 プリンタにはそれぞれジョブ用のキューがあり、 送られてきたジョブはあなたや他のユーザからの別のジョブと一緒にそのキューで並んで、 処理される順番を待ちます。 プリンタは到着順にこれらのジョブの印字をおこないます。

デフォルトプリンタのキューの状態を表示するには、 lpq(1) と入力します。プリンタを指定するときは、 `-P` オプションを使います。たとえば、次のコマンド

    % lpq -P bamboo

は、プリンタ `bamboo` のキューの状態を表示します。この `lpq` コマンドの出力結果の例を次に示します。

    bamboo is ready and printing
    Rank   Owner    Job  Files                              Total Size
    active kelly    9    /etc/host.conf, /etc/hosts.equiv   88 bytes
    2nd    kelly    10   (standard input)                   1635 bytes
    3rd    mary     11   ...                                78519 bytes

この例では、`bamboo` のキューに 3 つのジョブがあることが分かります。 最初のジョブはユーザ kelly からのものであり、 “ジョブ番号” 9 が割り当てられています。 プリンタのすべてのジョブには一意なジョブ番号が付けられています。 ほとんどの場合、このジョブ番号は無視することができますが、 ジョブをキャンセルするときにはこの番号が必要になります。 このことの詳細については、「ジョブの削除 」をご覧ください。

ジョブ番号 9 のジョブは 2 つのファイルを処理します。すなわち、 lpr(1) のコマンドラインに複数のファイル名が与えられたときは、 1つのジョブとして扱われるのです。このジョブは、現在、 アクティブジョブ (“Rank” の欄の `active` という後に注目) になっています。 これは、プリンタからそのジョブが現在印字されているはずであることを意味しています。 2 番目のジョブでは、 lpr(1) コマンドに標準入力からデータが与えられています。 3番目のジョブはユーザ `mary` から与えられました。 このジョブのサイズはとても大きくなっています。 彼女がプリントしようとしたファイルのパス名はここで表示させるには長すぎるため、 lpq(1) コマンドはドットを 3 つだけ表示しています。

lpq(1) からの出力で一番最初の行もまた有益な情報を与えています。 この行から、プリンタが現在何をしているか (あるいは、少なくとも LPD がプリンタがしていると思っていること) が分かります。

lpq(1) コマンドは `-l` オプションもサポートしています。 これにより、 詳しい情報が表示されます。 `lpq -l` の実行例を次に示します。

    waiting for bamboo to become ready (offline ?)
    kelly: 1st                               [job 009rose]
           /etc/host.conf                    73 bytes
           /etc/hosts.equiv                  15 bytes

    kelly: 2nd                               [job 010rose]
           (standard input)                  1635 bytes

    mary: 3rd                                [job 011rose]
          /home/orchid/mary/research/venus/alpha-regio/mapping 78519 bytes

### 9.5.3. ジョブの削除

印字するようジョブを 送った後で印字を中断したくなったときは、 lprm(1) コマンドで、 キューの中からそのジョブを削除することができます。 大抵の場合、アクティブジョブでさえも lprm(1) を使って削除することができますが、 そのジョブの一部またはすべてが印字されてしまうかもしれません。

デフォルトプリンタへのジョブを削除するためには、最初に、 lpq(1) を使ってそのジョブ番号を調べます。 すなわち、それから、 次のように入力して、ジョブを削除します。

    % lprm job-number

特定のプリンタへのジョブを削除するときは、 `-P` オプションを使ってそのプリンタを指定します。 たとえば、プリンタ `bamboo` のキューからジョブ番号 10 のジョブを削除するには次のようにします。

    % lprm -P bamboo 10

lprm(1) コマンドには略記法がいくつかあります。

lprm -

  あなたが (デフォルトプリンタへ) 送ったジョブをすべて削除します。

lprm `user`

  ユーザ `user` が (デフォルトプリンタへ) 送ったジョブをすべて削除します。 他のユーザのジョブを削除できるのはスーパユーザだけです。 あなたは、あなた自身のジョブしか削除することはできません。

lprm

  ジョブ番号もユーザ名もシンボル `-`も指定されないときは、 lprm(1) は現在のアクティブジョブを、 そのジョブを送ったのがあなた自身であるときに限り、 デフォルトプリンタから削除します。ただし、 スーパユーザは任意のアクティブジョブを削除することができます。

上記の略記法をデフォルトプリンタではなく 特定のプリンタに対しておこなうときは、`-P` オプションでそのプリンタを指定するだけよいのです。たとえば、 プリンタ `rattan` のキューへあなたが送ったジョブを すべて削除するためには次のようにします。

    % lprm -P rattan -

> Note: ネットワーク環境で作業をしている場合、 あるホストから送られたプリンタジョブは、これを送ったホストで lprm(1) を使った場合に限って、 これを削除することができます。 他のホストで同じプリンタを使えたとしても、 このジョブを削除することはできません。 次の例では、他ホストからジョブを削除することを試みています。

>     % lpr -P rattan myfile
>     % rlogin orchid
>     % lpq -P rattan
>     Rank   Owner      Job  Files                          Total Size
>     active seeyan     12    ...                           49123 bytes
>     2nd    kelly      13   myfile                         12 bytes
>     % lprm -P rattan 13
>     rose: Permission denied
>     % logout
>     % lprm -P rattan 13
>     dfA013rose dequeued
>     cfA013rose dequeued

### 9.5.4. その他の印字オプション

lpr(1) コマンドには、テキストの整形や、 図や他のファイル形式の変換、複数部コピーの生成、 ジョブの扱いなどを制御することができます。 この節では、これに関するオプションについて記しています。

#### 9.5.4.1. 整形と変換に関するオプション

以下の lpr(1) 用のオプションはジョブにおける ファイルの整形の制御に関するものです。 このオプションは、ジョブにプレインテキストが含まれない場合や pr(1) ユーティリティを使ってプレインテキストを整形する場合に用いてください。

次の例では、プリンタ `bamboo` に (TeX 組版システムによる) DVI ファイル `fish-report.dvi` を印字しています。

    % lpr -P bamboo -d fish-report.dvi

このオプションは、 ジョブに含まれるすべてのファイルに対して適用されます。 したがって、1 つのジョブに (たとえば) DVI ファイルと ditroff ファイルを混在させることはできません。その代わりに、 ファイルを形式毎に別々のジョブに分け、 それぞれのジョブでその形式用の変換オプションを使って印字してください。

> Note: `-p` と `-T` を除くすべてのオプションを使用 するためには、 出力先プリンタ用の変換フィルタが必要です。たとえば、 `-d` オプションを使用するには、DVI 用の変換フィルタが必要 です。詳細については、「 変換フィルタ」で説明しています。

`-c`

  cifplot ファイルを印字します。

`-d`

  DVI ファイルを印字します。

`-f`

  FORTRAN プログラムを印字します。

`-g`

  plot のデータを印字します。

`-i `number``

  出力に対して、`number` カラム分の字下げをおこないます。 `number` が省略されると、 8 カラム分字下げされます。 このオプションはある変換フィルタと一緒の指定されたときのみに機能します。

  > Note: `-i` と数字の間に空白を入れてはいけません。

`-l`

  制御文字を含む文字通りのテキストデータを印字します。

`-n`

  ditroff (device independent troff) データを印字します。

-p

  印字する前に pr(1) によってプレインテキストを整形します。 詳細については pr(1) をご覧ください。

`-T `title``

  pr(1) コマンドにより生成されるヘッダを、 ファイル名の代わりに `title` とする。 このオプションは、`-p` と一緒に使ったときのみ機能する。

`-t`

  troff データを印字します。

`-v`

  ラスタのデータを印字します。

次の例では、ls(1) のマニュアルを美しく整形したものをデフォルトプリンタで印字しています。

    % zcat /usr/share/man/man1/ls.1.gz | troff -t -man | lpr -t

zcat(1) コマンドで ls(1) のマニュアルのソースファイルの圧縮を復元し、これを troff(1) コマンドに渡しています。 これによりソースファイルが整形され GNU troff の形式となります。 その結果は lpr(1) に渡され、 LPD スプーラへジョブの要求が発せられます。 lpr(1) には `-t` オプションが使われているため、 スプーラでジョブを印字したときに GNU troff の形式から、デフォルトプリンタが解釈できる形式へと変換されます。

#### 9.5.4.2. ジョブに関するオプション

以下のオプションは、lpr(1) によって、 そのジョブを特殊な扱いにするよう LPD に指示するためのものです。

-# `copies`

  ジョブに含まれるファイルのそれぞれを 1 部だけ印字するのではなく、 `copies` 部のコピーを生成させるものです。管理者によっては、 プリンタの消耗を避け、コピー機による複製を奨励するために このオプションの使用が禁止されているかもしれません。 これに関しては、「 複数部のコピーの印字を制限する 」をご覧ください。

  次の例では、デフォルトプリンタで `parser.c` を 3 部コピーし、次に、 `parser.h` を 3 部コピーしています。

      % lpr -#3 parser.c parser.h

-m

  印字ジョブが完了した後で、メールを送ります。 このオプションを付けると、LPD システムはジョブの処理が終了したときに、 あなたのアカウントにメールを送ります。 メールのメッセージには、ジョブが正常終了したのか、あるいは、 何か異常があり、(しばしば) その異常が何であったのかが書かれています。

-s

  印字ファイルをスプールディレクトリにコピーせず、 代わりに、 シンボリックリンクを作成するよう指示します。

  印字させるジョブのサイズが大きいとき、 このオプションを使うと便利かもしれません。このオプションにより、 スプー ルディレクトリの容量が節約されます (それに、 巨大なジョブのお陰でスプールディレクトリのあるファイルシステムの空き容量がなくなってしまうかもしれません)。 さらに、LPD がいちいちすべてのデータをコピーする必要がなくなりますので、 時間の節約にもなります。

  ただし、欠点もあります。LPD はオリジナルのファイルを直接参照するので、 印字が終了するまでそのファイルを変更したり削除することができません。

  > Note: リモートのプリンタで印字している場合、 LPD は、結局のところ、 ローカルホストからリモートホストにファイルをコピーする必要があります。 したがって、`-s` オプションはローカルのスプーリングディレクトリの空き容量を節約するだけで、 リモート側では節約されません。 それでも、このオプションは有用です。

-r

  ジョブに含まれるファイルを、 スプーリングディレクトリに ファイルをコピーした後に削除します。もしくは、 `-s` オプションと一緒に使われた場合は、 印字終了後に削除されます。 このオプションの使用には十分注意して下さい。

#### 9.5.4.3. ヘッダページ用オプション

以下のオプションにより、 ジョブのヘッダページに通常印字さ れるテキストを lpr(1) に調整させることができます。 対象のプリンタからヘッダページが出力されない場合は、 これらのオプションは何の効力も持ちません。 ヘッダページの設定に関する情報については、 「 ヘッダページ」を参照してください。

-C `text`

  ヘッダページに印字されるホスト名を `text` に置き換えます。なお、 ホスト名の場所には、通常、 ジョブの要求があったホストの名前が印字されます。

-J `text`

  ヘッダページに印字されるジョブ名を `text` に置き換えます。 ジョブ名の場所には、通常、ジョブの最初のファイル名、 または、標準入力からデータが印字されたときは `stdin` が印字されます。

-h

  ヘッダページの出力を禁止します。

  > Note: サイトによっては、 そのヘッダページの生成方法により、 このオプションの効果が現れないかもしれません。 詳細は、「 ヘッダページ」をご覧ください。

### 9.5.5. プリンタを管理する

プリンタの管理者として、プリンタの設置、設定、 そして、それらのテストをおこなう必要がありました。 lpc(8) コマンドにより、 これまでとは別な管理方法がプリンタと対話的におこなわれます。 lpc(8) により、次のことが可能となります。

- プリンタの起動、停止をおこなう。

- キューへの入力の許可、禁止をおこなう。

- それぞれのキューにあるジョブの順番を変更する。

最初に用語に関する注意をしておきます。 プリンタが停止しているとは、 キューの中にあるどのジョブも印字されることがない状態 を言います。この状態においても、 ユーザはまだジョブの要求をおこなうことができますが、 これらのジョブはキューの中で、 プリンタがスタートする状態になるまで、 あるいは、キューの内容が削除されるまで待たされることになります。

キューが禁止状態にあると、 (`root` 以外の) すべてのユーザがプリンタにジョブを要求することができません。 キューが許可状態にある場合は、 ジョブの入力が許可されます。 キューが禁止状態にある場合でも、 プリンタをスタートす る状態にすることは可能です。この場合は、 キューが空になるまで、 キュー内のジョブの印字が続けられます。

一般的に、lpc(8) コマンドを使用するには `root` 権限を持っている必要があります。 一般のユーザも lpc(8) コマンドを使うことはできますが、 プリンタの状態を取得することとハングしたプリンタ を再スタートすることだけに使用が制限されています。

以下に、 lpc(8) コマンドに関する説明の要約を述べます。 ほとんどのコマンドでは、操作対象となるプリンタを指定するため `printer-name` 引数を与えます。 `printer-name` の代わりに `all` が与えられると、操作は `/etc/printcap` 内にある全プリンタに対しておこなわれることになります。

`abort `printer-name``

  現在のジョブをキャンセルし、プリンタを停止させます。 キューが許可状態にある場合は、 ユーザはまだジョブを入力することができます。

`clean `printer-name``

  プリンタのスプーリングディレクトリから、 ジョブの古いファイルを削除します。状況によって、 とりわけ、印字途中でエラーが発生していたり、 管理操作が頻発していた場合には、 ジョブで作られたファイルを LPD が完全に削除しないことがあります。このコマンドでは、 スプーリングディレクトリに入っていないファイルを見つけ出し、 それを削除しています。

`disable `printer-name``

  キューに新しいジョブを入れることを禁止します。 プリンタが動作しているときは、 キューに残っているジョブの印字は続けられます。ただし、 キューが禁止状態にあったとしても、スーパーユーザ (`root`) は常にジョブを入力することができます。

  このコマンドは、 新しいプリンタやフィルタを設置している間に使用すると有用です。 すなわち、キューを禁止状態にしておくと、 `root` によるジョブのみが入力されます。 そして、他のユーザは、テストが完了し、 `enable` コマンドでキューが再度許可状態になるまで、 ジョブの入力はできなくなります。

`down `printer-name` `message``

  プリンタをダウンさせます。これは、 `disable` をおこなった後で、 `stop` をおこなった場合と等価になります。 `message` は、ユーザが lpq(1) コマンドでプリンタのキューの状態を調べたり、 `lpc status` でプリンタの状態を調べたときに、 プリンタの状況として表示されるメッセージです。

`enable `printer-name``

  プリンタのキューを許可状態にします。 ユーザはジョブの入力ができるようになりますが、 プリンタがスタートの状態になるまでは、 プリンタからは何も印字されません。

`help `command-name``

  `command-name` コマンドのヘルプメッセージを表示します。 `command-name` が指定されなかった場合は、 利用できるコマンドの要約が表示されます。

`restart `printer-name``

  プリンタをスタートさせます。通常のユーザは、 LPD がある異常な状況でハングしたときに限り、 このコマンドを使用することができます。しかし、 `stop` または `down` コマンドにより、 停止状態にあるプリンタをスタートさせることはできません。 `restart` コマンドは、 `abort` の後に `start` をおこなったことと同じになります。

`start `printer-name``

  プリンタをスタートさせます。 プリンタのキューにあるジョブを印字することでしょう。

`stop `printer-name``

  プリンタを停止します。プリンタは、 現在のジョブを終了させ、そして、 キューにあるその他のジョブは印字しません。 プリンタが停止状態にあったとしても、まだ、 許可状態にあるキューに対して、ジョブを送ることができます。

`topq `printer-name` `job-or-username``

  `printer-name` のキューに対して、ジョブ番号 `job` のジョブ、または、ユーザ `username` から送られたジョブを置き換えて、キューの先頭に持ってきます。 このコマンドに関しては、 `printer-name` の代わりに `all` を使用することはできません。

`up `printer-name``

  プリンタをアップ状態にします。これの反対のコマンドが `down` です。`start` の次に `enable` をおこなったことと等しくなります。

コマンドラインから上記のコマンドを入力すると、 lpc(8) はこれを受け付けます。コマンドが入力されなかった場合は、 lpc(8) は対話モードに入り、 `exit`、`quit`、 または、 ファイル終端文字が入力されるまでコマンドの入力ができます。

## 9.6. 標準スプーラの代替品

このマニュアルを最初から通読されている方ならば、ここまでで、 FreeBSD 付属の LPD スプーリングシステムに関して知っておくべきことすべてを学ばれたことと思います。 多分、このシステムにあるたくさんの欠点について認識できたことでしょう。 そこから “(FreeBSD 上で動作する) スプーリングシステムには他にどのようなものがあるのか” という疑問が自然と湧いてきます。

LPRng

  “次世代 LPR” を称する LPRng は、 PLP を完全に書き換えたものです。 Patrick Powell と Justin Mason (PLP の主要な管理者) が共同で LPRng を作成しました。 LPRng の本サイトは http://www.lprng.org/ です。

## 9.7. トラブルシューティング

lptest(1) を使った簡単なテストをおこなった結果、 正しい出 力を得られずに、以下に示すような出力が得られるかもしれません。

しばらくしたら出力される、または、 紙の全体が出てこない

  プリンタは上で示されたような印字を おこなったのですが、しばらくして止まってしまい、 動かなくなってしまいました。 印字された結果をプリンタから取り出すためには、 プリンタにある PRINT REMAINING ボタン、または、FORM FEED ボタンを押す必要があるようです。

  この場合は、 おそらくジョブはプリントをする前に 更にデータが送られてこないか待ち続けているのでしょう。 この問題を解決するためには、プリンタに FORM FEED 文字 (あるいは特定の必要な文字コード) を 送るテキストフィルタを使ってください。 プリンタ内部に残ったデータをプリンタにすぐに印字させるには、 普通はこれで十分です。 次のジョブが前のジョブの最終ページの中央の どこかから印字を開始させないためにも、 紙の途中で印字のジョブが終了したかどうかを確認するのは有益です。

  シェルスクリプト `/usr/local/libexec/if-simple` を次のように変更して、プリンタへジョブを送信した後に FORM FEED 文字を印字させるようにします。

      #!/bin/sh
      #
      # if-simple - Simple text input filter for lpd
      # Installed in /usr/local/libexec/if-simple
      #
      # Simply copies stdin to stdout.  Ignores all filter arguments.
      # Writes a form feed character (\f) after printing job.

      /bin/cat && printf "\f" && exit 0
      exit 2

“階段効果” が現れた

  出力された紙には次のように印字されていました。

      !"#$%&'()*+,-./01234
                                  "#$%&'()*+,-./012345
                                                               #$%&'()*+,-./0123456

  あなたは「階段効果」 の新たなる犠牲者になってしまいました。この原因は、 改行を表わすべき文字がなんであるか の解釈が混乱していることにあります。UNIX スタイルのオペレーティングシステムでは、改行文字は ASCII コード 10 の line feed (LF) の 1 文字が使われています。MS-DOS や OS/2® などは ASCII コード 10の LF と、ASCII コード 13 の文字 (carriage return または CR) をペアで使います (訳注: Macintosh では CR のみで表現されています)。大抵のプリンタでは、 改行を表わすために MS-DOS の慣習にしたがいます。

  FreeBSD で印字する場合、印字したテキストは LF 文字だけ が使われていました。プリンタでは LF 文字を見つけると、紙を 1 行分送り出しました。しかし、 次の文字を印字するた めの紙の水平方向の位置は維持されました。すなわち、CR 文字が意味することは、 次の文字を印字する位置を紙の左端に動かすことです。

  FreeBSD がプリンタに動作をして欲しいと思っている動作を以下に示します。

  プリンタが CR を受け取ったとき | CR 動作 (復帰) をおこなう
  プリンタが LF を受け取ったとき | CR + LF 動作 (復帰、改行) をおこなう

  このように動作させるための方法がいくつかあります。

  - これらの文字の解釈を変えるために、 プリンタの設定スイッチかコントロールパネルを操作する方法。 どのようにして設定をするかはプリンタのマニュアルを参照してください。

    > Note: FreeBSD 以外のオペレーティングシステムを切り替えて使う場合、 CR と LF 文字の解釈をそのオペレーティングシステムで使われているようにプリンタを 再設定する必要があるかもしれません。 以下に示す解決方法のいずれかを 選ぶのがよいかもしれませんね。

  - 自動的に LF を CR+LF に変換してくれる FreeBSD 用のシリアルドライバを入手する方法。 もちろん、このドライバはプリンタ専用に接続される シリアルポート のみで動作します。 この機能を許可するためには、 `ms#` 項目を使い、 対象プリンタの `/etc/printcap` ファイルで`onlcr` モードを設定します。

  - LF 文字の扱いを一時的に変更するための エスケープコード をプリンタに送る方法。 プリンタがサポートしているかもしれないエスケープコード については、 プリンタのマニュアルを参照してください。 適切なエスケープコードが見つかったら、 最初にそのコードを送り、次にプリントジョブを送信 するようにテキストフィルタを変更してください。

    次に、Hewlett Packard 社の PCL エスケープコードに対応しているプリンタのための テキストフィルタの例を示します。 このフィルタでは、プリンタ に LF 文字を LF と CR の2文字として扱わせます。 その後に、プリンタにジョブを送ります。最後に、 ジョブの最終ページの紙を排出するため、FROM FEED 文字を送ります。このフィルタは Hewlett Packard 社のほとんどすべてのプリンタで機能するはずです。

        #!/bin/sh
        #
        # hpif - Simple text input filter for lpd for HP-PCL based printers
        # Installed in /usr/local/libexec/hpif
        #
        # Simply copies stdin to stdout.  Ignores all filter arguments.
        # Tells printer to treat LF as CR+LF.  Ejects the page when done.

        printf "\033&k2G" && cat && printf "\f" && exit 0
        exit 2

    ホスト `orchid` の `/etc/printcap` の例を以下に示します。ここには、 一番目のパラレルポートにプリンタ (Hewlett Packard LaserJet 3Si) が一台接続されており、そのプリンタ名は `teak` です。

        #
        #  /etc/printcap for host orchid
        #
        teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\
                :lp=/dev/lpt0:sh:sd=/var/spool/lpd/teak:mx#0:\
                :if=/usr/local/libexec/hpif:

  - > 訳注: LF を CR+LF に置き換える cat コマンドを作る方法も当然考えられます。 そして、このコマンドと、if-simple の cat の部分を置き換えればよいわけです。 具体的にどのようにするかは、 読者への練習問題としましょう。

各行が重ね書きされてしまった

  プリンタは紙送りをまったくしませんでした。 テキストすべての行がある行の上で重ねて印字されてしまいました。

  この問題は、 階段現象とは “正反対” な問題で、 ほとんどまれにしか起こりません。FreeBSD では行末として扱われる LF 文字が、紙の左端に印字位置を復帰しますが、 紙送りはしない CR 文字として扱われています。

  プリンタの設定スイッチかコントロールパネルを使って、 LF と CR の文字を次のような解釈をするようにしてください。

  プリンタが受け取ったとき | プリンタがおこなう
  --- | ---
  CR | CR 動作 (復帰)
  LF | CR + LF (復帰、改行)

  > 訳注: LF を CR+LF に置き換える cat コマンドを作る方法も当然考えられます。 そして、このコマンドと、 `if-simple` の cat の部分を置き換えればよいわけです。 具体的にどのようにするかは、 読者への練習問題としましょう。

プリンタが文字を紛失してしまう

  印字しているのですが、 各行の 2 〜 3 文字が印字されません。 プリンタを動かせば動かすほど、 もっとたくさんの文字が紛失されていき、 この問題は更に悪くなっていくかもしれませんでした。

  この問題は、 シリアルポートを通してコンピュータから送られてくるデータの速度に、 プリンタがついていけないことに起因します (この問題は、パラレルポートに接続された プリンタでは発生することはありません)。 この問題を克服する方法が2つあります。

  - プリンタが XON/XOFF のフロー制御をサポート している場合は、項目 `ms#` で `ixon` モードをセットして、FreeBSD にこの機能を使用させてください。

  - プリンタがキャリアフロー制御をサポートして いる場合は、項目 `ms#` で `crtscts` モードをセットして下さい。それから、 プリンタとコンピュータを接続しているシリアルケーブルが キャリアフロー制御用に正しく配線されたものかどうかを確認してください。

プリンタは意味不明な文字列を印字した

  プリンタはランダムなゴミのように 見えるものを印字しましたが、 意図したテキストは印字してくれませんでした。

  この問題は、通常、 シリアルポートに接続したプリンタでの 通信パラメータの誤りからくる前項とは別の症状です。 `br` 項目の通信速度と `ms#` 項目を再確認してください。 また、プリンタでの設定が `/etc/printcap` ファイルで設定した 内容と一致しているかどうかも確認してください。

  > 訳注: simple-if のような単純なフィルタだけの状態で、 日本語を含むテキストを印字しようとした場合にも、 シリアルポート、パラレルポートの使用に関係なく、 このような症状は見られます。日本語プリンタの場合、 漢字コードそのもの を送信しただけでその漢字を印字してくれるものは、 少なくとも訳者は見たことがありません。 漢字を印字するための制御 コードを別途送信するフィルタが必要となります。 また、そのようなフィルタを使用していても、 そのフィルタが想定してる漢字コードと異なった文書を プリントしようとしたときもこのような症状は出ます。 もちろん、これはプリンタ用の 言語を持たないプリンタの話で、PostScript プリンタ などにプレインテキストを送信しても、日本語対応、 非対応に関らず、意味不明な文字列が印字される (もしくは、何も印字されない) ことでしょう。

何も起きない

  もしプリンタが何の動作もしないのであれば、 ハード的な問題ではなく、多分 FreeBSD の中に問題があります。 `/etc/printcap` ファイルで、 デバッグしているプリンタのエントリに (`lf` 項目で) ログファイルを取るように 設定を追加してください。たとえば、プリンタ `rattan` 用のエントリの項目 `lf` は次のようになります。

      rattan|line|diablo|lp|Diablo 630 Line Printer:\
              :sh:sd=/var/spool/lpd/rattan:\
              :lp=/dev/lpt0:\
              :if=/usr/local/libexec/if-simple:\
              :lf=/var/log/rattan.log

  次に、もう一度印字をおこなってみます。そして、 発生したと思われるエラーメッセージを見るためにログファイル (上記の例では、 `/var/log/rattan.log`) を調べます。そこで見られたメッセージを元に、 問題を解決してみてください。

  項目 `lf` が指定されていない場合、LPD はデフォルトのログファイルとして `/dev/console` を使います。

# Chapter 10. Linux バイナリ互換機能

オリジナルは Brian N. Handy `<handy@sxt4.physics.montana.edu>` と Rich Murphey `<rich@FreeBSD.org>` によるものですが、 Jim Mock `<jim@FreeBSD.org>` が 2000 年 3 月 22 日に再構成と一部の更新を行ないました。

訳: はらだ きろう `<kiroh@jp.FreeBSD.org>`、1996 年 9 月 24 日

## 10.1. この章では

この章では FreeBSD における Linux バイナリとの互換機能について、 インストール方法やその仕組みを解説します。

現時点では、一体なぜ FreeBSD が Linux バイナリを実行できるようにならなければならないのか自問しているのではないでしょうか? 答えはきわめて簡単です。 Linux は現在コンピュータの世界では最も“ホットなモノ”なのでたくさんの会社や開発者たちが Linux のためだけに開発を行なっています。そのため、残された私たち FreeBSD ユーザは彼らに対して FreeBSD ネイティブなアプリケーションも出すように言うしかないのです。 問題は、FreeBSD バージョンも出した場合にどれくらいの数のユーザーが使うのかわからない、 ということであり、そのため Linux 版のみを開発しているということなのです。 そこで FreeBSD では Linux バイナリ互換機能が役に立つのです。

簡単に言ってしまえば、この機能により全ての Linux アプリケーションの 90% が修正なしに FreeBSD 上で起動できます。 この中には Star Office や Linux 版の Netscape、Adobe Acrobat、RealPlayer 5 と 7、 VMWare、Oracle、WordPerfect、Doom、Quake などがあります。 また、ある状況においては Linux バイナリを Linux で動かすよりも FreeBSD で動かすほうが良いパフォーマンスが出るという報告もあります。

しかしながら、いくつかの Linux に特有な OS の機能は FreeBSD ではサポートされていません。 例えば、Linux の `/proc` ファイルシステムを過度に使うような Linux バイナリは FreeBSD では動きません (FreeBSD の `/proc` ファイルシステムとは異なるのです) し、 仮想 8086 モードを有効にするような i386 特有の呼び出しも動きません。

Linux バイナリ互換モードのインストールに関しては次のセクションをご覧ください。

## 10.2. インストール

3.0-RELEASE以降であればカーネルのコンフィギュレーションファイルに `options LINUX` や `options COMPAT_LINUX` といった行を加える必要はありません。

Linux バイナリ互換機能は今は KLD オブジェクト (“Kernel LoaDable object”) として実現されており、リブートしなくても “on-the-fly” で組み込むことができるのですが、 `/etc/rc.conf` に次の行を加える必要があります。

    linux_enable=“YES”

この設定により、`/etc/rc.i386` では次のような操作が行なわれます。

    # Start the Linux binary compatibility if requested.
    #
    case ${linux_enable} in
    [Yy][Ee][Ss])
        echo -n ' linux';   linux > /dev/null 2>&1
        ;;
    esac

望みの KLD モジュールがロードされているか確認したい時には `kldstat` を利用します。

    % kldstat
    Id Refs Address    Size     Name
     1    2 0xc0100000 16bdb8   kernel
     7    1 0xc24db000 d000     linux.ko

何らかの理由で Linux KLD をロードしたくない、 あるいはロードできないような場合には、 `options LINUX` をカーネルの設定ファイルに指定して、 Linux バイナリ互換機能をカーネルにスタティックリンクしてください。 そして、FreeBSD カーネルのコンフィギュレーション の記述にしたがって新しいカーネルをインストールしてください。

### 10.2.1. Linux ランタイムライブラリのインストール

これは、linux_base の port を用いるか、もしくは手動でインストールします。

#### 10.2.1.1. linux_base の port を用いたインストール

ランタイムライブラリをインストールするには最も簡単な方法です。 ports コレクションから他の port をインストールするのと全く同じようにできます。

    # cd /usr/ports/emulators/linux_base
    # make install distclean

これで Linux バイナリ互換機能が使えるはずです。 いくつかのプログラムはシステムライブラリのマイナーバージョンが違うと文句を言うかもしれませんが一般的には大した問題ではありません。

#### 10.2.1.2. 手動でのライブラリのインストール

“ports” コレクションをインストールしていない場合、 代わりに手動でライブラリをインストールすることができます。 プログラムが必要とする Linux のシェアードライブラリとランタイムリンカが必要です。 また Linux ライブラリ用の “shadow root” ディレクトリ、 `/compat/linux` を作成する必要があります。 FreeBSD で動作する Linux プログラムが使用するシェアードライブラリは、 まずこのファイルツリーから検索されます。例えば、 Linux のプログラムが `/lib/libc.so` をロードしようとした場合には、FreeBSD はまず `/compat/linux/lib/libc.so` を開こうとします。これが存在しなかった場合には、次に `/lib/libc.so` を試します。 シェアードライブラリは、Linux の `ld.so` が報告するパスではなく、 `/compat/linux/lib` 以下にインストールする必要があります。

Linux のプログラムが必要とする シェアードライブラリを探す必要があるのは、FreeBSD のシステムに Linux のプログラムをインストールする最初の数回だけでしょう。 それが過ぎれば、十分な Linux のシェアードライブラリがシステムにインストールされ、 新しくインストールした Linux のバイナリも余計な作業をせずに動作させることができるようになります。

#### 10.2.1.3. シェアードライブラリの追加

`linux_base` port をインストールした後に、 アプリケーションが必要なライブラリが存在しないというエラーを出したらどうしたらよいでしょうか? Linux のバイナリがどのシェアードライブラリを必要とし、 そしてどこで入手できるか、どのように探したらよいでしょうか? 基本的には、以下の 2 種類の方法があります (以下の手順に従う場合には、 必要なインストール作業をおこなう FreeBSD システム上で root として作業をおこなう必要があります)。

Linux システムにアクセス可能ならば、 そのアプリケーションがどういうシェアードライブラリを必要としているのか調べ、 単に FreeBSD にそのライブラリをコピーするだけです。 次の例を見てみましょう。

FTP を使って Doom の Linux バイナリを取ってきて、 アクセスできる Linux システムに置いたとしましょう。 次のように `ldd linuxdoom` とするだけでどのシェアードライブラリが必要かチェックできます。

    % ldd linuxxdoom
    libXt.so.3 (DLL Jump 3.1) => /usr/X11/lib/libXt.so.3.1.0
    libX11.so.3 (DLL Jump 3.1) => /usr/X11/lib/libX11.so.3.1.0
    libc.so.4 (DLL Jump 4.5pl26) => /lib/libc.so.4.6.29

最後のカラムに表示されているすべてのファイルを持って来て、 `/compat/linux` の下に置き、 最初のカラムに示されるファイル名にシンボリックリンクを張ります。 すなわち、FreeBSD システムでは以下のようなファイルが必要となります。

    /compat/linux/usr/X11/lib/libXt.so.3.1.0
    /compat/linux/usr/X11/lib/libXt.so.3 -> libXt.so.3.1.0
    /compat/linux/usr/X11/lib/libX11.so.3.1.0
    /compat/linux/usr/X11/lib/libX11.so.3 -> libX11.so.3.1.0
    /compat/linux/lib/libc.so.4.6.29 /compat/linux/lib/libc.so.4 -> libc.so.4.6.29

> > Note: 最初のカラムに表示されているファイルとメジャーバージョンが同じ Linux シェアードライブラリを既にインストールしている場合は、 新たにコピーする 必要はありません。 既にあるライブラリで動作するはずです。 ただ、新しいバージョンのものをコピーすることをお奨めします。 新しいライブラリにシンボリックリンクを変更したら、 古いライブラリは削除してかまいません。

> >     /compat/linux/lib/libc.so.4.6.27
> >     /compat/linux/lib/libc.so.4 -> libc.so.4.6.27

> > 従って、以上のようなライブラリがインストールされており、 新しいバイナリに対する `ldd` の出力が以下のようになる場合を考えます。

> >     libc.so.4 (DLL Jump 4.5pl26) -> libc.so.4.6.29

> > このように最後の番号が 1 つか 2 つ古いだけならば、普通は `/lib/libc.so.4.6.29` をコピーする必要はありません。わずかに古いライブラリでもプログラムは動作するはずだからです。 もちろん、以下のように新しいライブラリと置き換えても構いません。

> >     /compat/linux/lib/libc.so.4.6.29
> >     /compat/linux/lib/libc.so.4 -> libc.so.4.6.29

> > Note: シンボリックリンクのメカニズムは Linux バイナリにのみ必要なことに注意してください。 FreeBSD のランタイムリンカはメジャーリビジョン番号の一致したライブラリを検索するので、 ユーザが気にする必要はありません。

### 10.2.2. Linux の ELF バイナリのインストール

ELF のバイナリを使うためには、 “マークをつける (branding)” 作業が必要になります。 マークのない ELF バイナリを実行しようとすると以下のようなエラーメッセージを受けとってしまうことでしょう。

    % ./my-linux-elf-binary
    ELF binary type not known
    Abort

カーネルが FreeBSD の ELF バイナリと Linux のバイナリとを 見分けられるようにするためには、brandelf(1) ユーティリティを以下のようにして使ってください。

    % brandelf -t Linux my-linux-elf-binary

今では GNU のツールたちが ELF バイナリに自動的に適切なマークを付加するようになったので、 今後はこの作業もだんだんと必要なくなってゆくでしょう。

### 10.2.3. ホストネームリゾルバの設定

DNS がうまく動作しなかったり、 以下のようなエラーメッセージが表示され る場合は、`/compat/linux/etc/host.conf` ファイルを設定する必要があります。

    resolv+: "bind" is an invalid keyword resolv+:
    "hosts" is an invalid keyword

ファイルの内容を以下のように設定してください。

    order hosts, bind
    multi on

ここで、order は `/etc/hosts` を最初に検索し、 次に DNS を検索するように指定します。 `/compat/linux/etc/host.conf` がインストールされていない場合、 Linux アプリケーションは FreeBSD の `/etc/host.conf` を使用しようとして、 文法の違いによる警告を出力します。 `/etc/resolv.conf` を利用してネームサーバの設定をしていない場合には、 `bind` を削除してください。

## 10.3. Mathematica のインストール

Mathematica 4.x 用に Murray Stokely `<murray@FreeBSD.org>` がアップデートし、Bojan Bistrovic `<bojanb@physics.odu.edu>` がマージしました。

この章では、Mathematica 4.X Linux 版の FreeBSD へのインストールについて説明します。

Linux 版の Mathematica は FreeBSD においても完璧に動きます。 ただ、実行する際に Linux ABI を用いる必要があることを FreeBSD に教えるために、Wolfram によって出荷されているバイナリにマーク付け (branded) をする必要があります。

Mathematica や Mathematica for Students の Linux 版は Wolfram (http://www.wolfram.com/) から直接注文することができます。

### 10.3.1. Linux バイナリへのマーク付け (branding)

Linux 用バイナリは Wolfram の Mathematica CD-ROM の `Unix` ディレクトリにあります。 インストーラーを起動する前にこのディレクトリをローカルディスクにコピーし、 brandelf(1) により Linux バイナリにマークを付けます。

    # mount /cdrom
    # cp -rp /cdrom/Unix/ /localdir/
    # brandelf -t Linux /localdir/Files/SystemFiles/Kernel/Binaries/Linux/*
    # brandelf -t Linux /localdir/Files/SystemFiles/FrontEnd/Binaries/Linux/*
    # brandelf -t Linux /localdir/Files/SystemFiles/Installation/Binaries/Linux/*
    # brandelf -t Linux /localdir/Files/SystemFiles/Graphics/Binaries/Linux/*
    # brandelf -t Linux /localdir/Files/SystemFiles/Converters/Binaries/Linux/*
    # brandelf -t Linux /localdir/Files/SystemFiles/LicenseManager/Binaries/Linux/mathlm
    # cd /localdir/Installers/Linux/
    # ./MathInstaller

また以下のようにすると、マーク付けされていない ELF バイナリすべての扱いを、デフォルトで Linux バイナリとすることが可能です。

    # sysctl -w kern.fallback_elf_brand=3

これは FreeBSD システムに対して、 マーク付けされていない ELF バイナリが Linux ABI を利用するように設定します。こうすることで、 CDROM から直接インストーラを実行することが可能になります。

### 10.3.2. Mathematica パスワードの取得

Mathematica を起動する前に Wolfram から自分の “マシン ID” に対応したパスワードを取得しなければいけません。

一旦 Linux 互換ランタイムライブラリをインストールし、 Mathematica を展開すれば Install ディレクトリにある `mathinfo` プログラムを起動して “マシン ID” を得ることができます。 このマシン ID は、最初に見つかったイーサネットカードの MAC アドレスをベースに生成されます。

    # cd /localdir/Files/SystemFiles/Installation/Binaries/Linux
    # mathinfo
    disco.example.com 7115-70839-20412

電子メールや電話、FAX などで Wolfram に登録する時にはこの “マシン ID” を渡します。 するといくつかの数字から構成されるパスワードが返されるので、 他の Mathematica プラットホームでするのと全く同じように最初に Mathematica を立ち上げる時にその情報を入力します。

### 10.3.3. ネットワーク経由での Mathematica フロントエンドの起動

Mathematica は標準フォントセットにない特別な記号 (積分記号、総和記号、 ギリシャ文字など) を表示するために特殊なフォントを使用します。 X プロトコルは、 これらのフォントがローカルマシンにインストールされていることを要求します。 これはつまり、ローカルマシンに (CD-ROM や Mathematica がインストールされているホストマシンから) そのフォントをコピーしなければならないということです。 これらのフォントは通常、CD-ROM の `/cdrom/Unix/Files/SystemFiles/Fonts` か、もしくはハードディスクの `/usr/local/mathematica/SystemFiles/Fonts` に置かれており、実際に使用されるフォントは `Type1` と `X` のサブディレクトリに格納されています。 これらを利用するには次のような二つ方法があります。

一つは、フォントファイルをすべて `/usr/X11R6/lib/X11/fonts/` 以下にある既存のフォントディレクトリにコピーする方法です。 この場合、`fonts.dir` にフォント名を追加し、 先頭行のフォント総数を変更することも必要になります。 あるいは、フォントをコピーしたディレクトリで `mkfontdir` を実行するだけでもかまいません。

もう一つの方法は、 `/usr/X11R6/lib/X11/fonts/` にフォントディレクトリごとコピーする方法です。

    # cd /usr/X11R6/lib/X11/fonts
    # mkdir X
    # mkdir MathType1
    # cd /cdrom/Unix/Files/SystemFiles/Fonts
    # cp X/* /usr/X11R6/lib/X11/fonts/X
    # cp Type1/* /usr/X11R6/lib/X11/fonts/MathType1
    # cd /usr/X11R6/lib/X11/fonts/X
    # mkfontdir
    # cd ../MathType1
    # mkfontdir

そして、フォントパスに新しいフォントディレクトリを追加します。

    # xset fp+ /usr/X11R6/lib/X11/fonts/X
    # xset fp+ /usr/X11R6/lib/X11/fonts/MathType1
    # xset fp rehash

XFree86 サーバを使用しているなら、 `/etc/XF86Config` に加えることでこれらのフォントを自動的に読み込むことができます。

`/usr/X11R6/lib/X11/fonts/Type1` という ディレクトリが存在していない場合には、 上記例の `MathType1` を `Type1` とすることができます。

## 10.4. Oracle のインストール

Marcel Moolenaar 寄贈 `<marcel@cup.hp.com>`

### 10.4.1. はじめに

このドキュメントでは Oracle 8.0.5 と Oracle 8.0.5.1 Enterprise Edition の Linux 版を FreeBSD にインストールするための手順を解説します。

### 10.4.2. Linux 環境のインストール

まずは Ports Collection から `linux_base` と `linux_devtools` をインストールしてください。 これらの ports は FreeBSD 3.2 のリリース後にコレクションに加えられました。 もし FreeBSD 3.2 もしくはそれよりも古いものを使っている場合は ports コレクションをアップデートしましょう。ついでに FreeBSD をアップデートするのもいいでしょう。もし `linux_base-6.1` や `linux_devtools-6.1` でうまくいかなければ 5.2 を試してみてください。

もし賢いエージェント (intelligent agent) を起動したいなら Red Hat TCL パッケージ `tcl-8.0.3-20.i386.rpm` もインストールする必要があるでしょう。 公式の RPM パッケージをインストールするには一般的に次のようにします。

    # rpm -i --ignoreos --root /compat/linux --dbpath /var/lib/rpm package

パッケージのインストール時にエラーが出てはいけません。

### 10.4.3. Oracle 環境の構築

Oracleをインストールする前に、適切な環境を設定する必要があります。 このドキュメントでは、 Oracle のインストールガイドに書いてあるようなことではなく FreeBSD で Linux 用 Oracle を動かすために特別に必要なことのみを解説します。

#### 10.4.3.1. カーネルのチューニング

Oracle インストールガイドにあるように、 シェアードメモリーの最大サイズを設定しなければいけません。 FreeBSD では `SHMMAX` を使わないようにしてください。 `SHMMAX` は単に `SHMMAXPGS` と `PGSIZE` から計算されるだけなのです。 従って、`SHMMAXPGS` を使うようにしましょう。 インストールガイドに記述されている他のオプションは使えます。 例えば以下のようにします。

    options SHMMAXPGS=10000
    options SHMMNI=100
    options SHMSEG=10
    options SEMMNS=200
    options SEMMNI=70
    options SEMMSL=61

これらのオプションを意図した Oracle の使い方に合わせて設定してください。

また、 次のオプションがカーネルのコンフィギュレーションファイルにあることも確認します。

    options SYSVSHM #SysV shared memory
    options SYSVSEM #SysV semaphores
    options SYSVMSG #SysV interprocess communication

#### 10.4.3.2. Oracle 用アカウント

他のアカウントを作るのと同じように Oracle 用のアカウントを作ります。 Oracle 用のアカウントに特別なのは Linux のシェルを割り当てるところだけです。 `/etc/shells` に `/compat/linux/bin/bash` を加え、Oracle 用のアカウントに設定します。

#### 10.4.3.3. 環境設定

`ORACLE_HOME` や `ORACLE_SID` といった通常の Oracle 用の変数の他に次の変数も設定しなければなりません。

変数 | 値
--- | ---
`LD_LIBRARY_PATH` | `$ORACLE_HOME/lib`
`CLASSPATH` | `$ORACLE_HOME/jdbc/lib/classes111.zip`
`PATH` | `/compat/linux/bin /compat/linux/sbin /compat/linux/usr/bin /compat/linux/usr/sbin /bin /sbin /usr/bin /usr/sbin /usr/local/bin $ORACLE_HOME/bin`

全ての環境変数は `.profile` で設定することをお勧めします。 完璧なサンプルは以下の通りです。

    ORACLE_BASE=/oracle; export ORACLE_BASE
    ORACLE_HOME=/oracle; export ORACLE_HOME
    LD_LIBRARY_PATH=$ORACLE_HOME/lib
    export LD_LIBRARY_PATH
    ORACLE_SID=ORCL; export ORACLE_SID
    ORACLE_TERM=386x; export ORACLE_TERM
    CLASSPATH=$ORACLE_HOME/jdbc/lib/classes111.zip
    export CLASSPATH
    PATH=/compat/linux/bin:/compat/linux/sbin:/compat/linux/usr/bin:/compat/linux/usr/sbin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:$ORACLE_HOME/bin
    export PATH

### 10.4.4. Oracle のインストール

インストーラーを起動する前に、`/var/tmp` に `.oracle` という名前のディレクトリを作る必要がありますが、 これは Linux エミュレーターにおけるちょっとした不整合のためです。 このディレクトリは誰でもが書けるか、もしくは oracle ユーザーのものにしておきます。 これで特に問題なく Oracle がインストールできるでしょう。 もし問題が起こったら、まずは Oracle の配布物や設定をチェックしてください。 Oracle のインストールが終わったら次の二つのサブセクションで解説するパッチを当てます。

よくあるトラブルは、TCP プロトコルアダプターが正しくインストールされていないことです。 そのため、一切 TCP リスナーを起動することができないのです。 次の操作はこの問題を解決するのに役立ちます。

    # cd $ORACLE_HOME/network/lib
    # make -f ins_network.mk ntcontab.o
    # cd $ORACLE_HOME/lib
    # ar r libnetwork.a ntcontab.o
    # cd $ORACLE_HOME/network/lib
    # make -f ins_network.mk install

もう一度 `root.sh` を起動するのを忘れないように!

#### 10.4.4.1. root.sh へのパッチ

Oracle をインストールする時、`root` で行なう必要のあるいくつかの操作は `root.sh` と呼ばれるシェルスクリプトに記録されます。 `root.sh` は `orainst` ディレクトリにあります。次のパッチを root.sh に当てて 正しい場所にある chown コマンドを使うようにするか、 代わりに Linux ネイティブなシェルのもとでスクリプトを走らせましょう。

    *** orainst/root.sh.orig Tue Oct 6 21:57:33 1998
    --- orainst/root.sh Mon Dec 28 15:58:53 1998
    ***************
    *** 31,37 ****
    # This is the default value for CHOWN
    # It will redefined later in this script for those ports
    # which have it conditionally defined in ss_install.h
    ! CHOWN=/bin/chown
    #
    # Define variables to be used in this script
    --- 31,37 ----
    # This is the default value for CHOWN
    # It will redefined later in this script for those ports
    # which have it conditionally defined in ss_install.h
    ! CHOWN=/usr/sbin/chown
    #
    # Define variables to be used in this script

CD-ROM からのインストールでない場合は `root.sh` のソースにパッチを当ててもいいでしょう。 `rthd.sh` という名前でソースツリーの `orainst` というディレクトリにあります。

#### 10.4.4.2. genclntsh へのパッチ

genclntsh スクリプトは一つの共有クライアントライブラリを生成するのに用いられます。 これはデモを作る時に使われます。 PATH の定義をコメントアウトするために次のパッチを当ててください。

    *** bin/genclntsh.orig Wed Sep 30 07:37:19 1998
    --- bin/genclntsh Tue Dec 22 15:36:49 1998
    ***************
    *** 32,38 ****
    #
    # Explicit path to ensure that we're using the correct commands
    #PATH=/usr/bin:/usr/ccs/bin export PATH
    ! PATH=/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin export PATH
    #
    # each product MUST provide a $PRODUCT/admin/shrept.lst
    --- 32,38 ----
    #
    # Explicit path to ensure that we're using the correct commands
    #PATH=/usr/bin:/usr/ccs/bin export PATH
    ! #PATH=/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin export PATH
    #
    # each product MUST provide a $PRODUCT/admin/shrept.lst

### 10.4.5. Oracle の起動

インストラクションに従えば、Linux でと同じように Oracle を起動できるでしょう。

## 10.5. 高度なトピックス

Linux バイナリ互換機能がどのような仕組みなのか興味がある人はこのセクションを読んでください。 以下の文章で説明されていることのほとんどは FreeBSD chat メーリングリスト に投稿された Terry Lambert (`<tlambert@primenet.com>`) 氏のメール (Message ID: `<199906020108.SAA07001@usr09.primenet.com>`) をもとにしています。

### 10.5.1. どのように動くのでしょう?

FreeBSD は、``実行クラスローダ (execution class loader) '' と呼ばれる抽象的な機構を持っています。これは execve(2) システムコールへの楔という形で実装されています。

FreeBSD は、シェルインタプリタやシェルスクリプトを実行するための `#!` ローダを持った単一のプログラムローダではなく、 ローダのリストを持っているのです。

歴史的には、UNIX プラットフォーム上の唯一のローダーがマジックナンバー (一般的にはファイルの先頭の 4 ないし 8 バイトの部分) の検査を行ないシステムで実行できるバイナリかどうかを検査し、 もしそうならバイナリローダーを呼び出すというようになっていました。

もし、そのシステム用のバイナリでない場合には、 execve(2) システムコールの呼び出しは失敗の戻り値を返し、 シェルがシェルコマンドとして実行しようと試みていたわけです。

この仮定は“現在利用しているシェルがどのようなものであっても”変わりません。

後に sh(1) に変更が加えられ、先頭の 2 バイトを検査した結果 `:\n` であれば代わりに csh(1) を呼び出す、 というようになりました (この変更は SCO が最初に行なったと思われます)。

現在の FreeBSD は、プログラムローダリストを走査します。 その際、空白文字までの文字列をインタプリタとして認識する、 通常の `#!` ローダを用いるため、 該当するものが存在しなければ最終的に /bin/sh がロードされます。

Linux ABI をサポートするため、FreeBSD は ELF バイナリを示すマジックナンバを確認します。 (ただし、この段階では FreeBSD、Solaris、Linux、そしてその他の ELF イメージ形式を使っている OS を区別することはできません)。

ELF ローダは、特殊なマーク (brand) があるかどうか探します。 このマークとは、ELF イメージのコメントセクションのことです。 SVR4/Solaris の ELF バイナリには、このセクションは存在しません。

Linux バイナリを実行するためには、 ELF バイナリに brandelf(1) で説明されている `Linux` のマークが付けられていなければなりません。

    # brandelf -t Linux file

上のようにすることで、指定されたファイルは `Linux` のマークが付けられ、 ELF ローダが認識できるようになります。

ELF ローダが `Linux` マークを確認すると、 ローダは `proc` 構造体内の ある一つのポインタを置き換えます。システムコールは全て、 このポインタ (伝統的な UNIX システムではこれは構造体の配列 `sysent[]` で、システムコールが含まれています) を通してインデックスされます。 さらに、そのプロセスには Linux カーネルモジュールに必要な シグナルトランポリンコード (訳注: シグナルの伝播を実現するコード) 用の特殊なトラップベクタの設定や、 他の (細かな) 調整のための設定が行なわれます。

Linux システムコールベクタは、 さまざまなデータに加えて `sysent[]` エントリーのリストを含んでおり、それらのアドレスはカーネルモジュール内にあります。

Linux バイナリがシステムコールを発行する際、トラップコードは `proc` 構造体を用いてシステムコール関数ポインタを 解釈します。そして FreeBSD ではなく Linux 用のシステムコールエントリポイントを得るわけです。

さらに、Linux モードは状況に応じてファイルシステム本来のルートマウントポイントを置き換えてファイルの参照を行ないます。 これは、`union` オプションを指定してマウントされたファイルシステム (unionfs ではありません!)が行なっていることと同じです。 ファイルを検索する際にはまず `/compat/linux/`original-path`` ディレクトリを、それから見つけられなかったときにのみ、 `/`original-path`` を調べます。 こうすることで、他のバイナリを要求するバイナリの実行を可能にしています (したがって、Linux 用プログラムツールは Linux ABI サポート環境下で完全に動作するわけです)。 またこれは、もし対応する Linux バイナリが存在しない場合に Linux バイナリが FreeBSD バイナリをロードしたり、実行したりすることが可能であること、 その Linux バイナリに自分自身が Linux 上で実行されていないことを 気付かせないようにする目的で、uname(1) コマンドを `/compat/linux` ディレクトリに置くことができる、 ということを意味します。

要するに、Linux カーネルが FreeBSD カーネルの内部に存在しているわけです。 カーネルによって提供されるサービス全ての実装の基礎となるさまざまな関数は FreeBSD システムコールテーブルエントリと Linux システムコールテーブルエントリの両方で共通に利用されています。 これらにはファイルシステム処理、仮想メモリ処理、シグナル伝送、System V IPC などが含まれますが、 FreeBSD バイナリは FreeBSD グルー (訳注: glue; 二者の間を仲介するという意味) 関数群、 そして Linux バイナリは Linux グルー関数群を用いる、 という点だけが異なります (過去に存在したほとんどの OS は、 自分自身のためのグルー関数群しか備えていません。 前述したように、システムコールを発行する際、 各々のプロセスの `proc` 構造体内にある、 ローダによって動的に初期化されるポインタを参照してアドレスを得る代わりに、 静的でグローバルな `sysent[]` 構造体の配列に システムコール関数のアドレスが直接格納されているのです)。

さて、どちらを本来の FreeBSD ABI (訳注: Applications Binary Interface; 同じ CPU を利用したコンピュータ間でバイナリを共有するための規約のこと) と呼ぶべきなのでしょうか? 実は、どちらが本来のものであるかということを論ずることに意味はありません。 基本的に、FreeBSD グルー関数群はカーネルの中に静的にリンクされていて、 Linux グルー関数群は静的にリンクすることも、 カーネルモジュールを介して利用することもできるようになっている、 という違いがあるだけ (ただしこれは現時点においての話であり、 将来のリリースで変更される可能性がありますし、 おそらく実際に変更されるでしょう) です。

あ、「でもこれは本当にエミュレーションと呼べるのか」って? 答えは「いいえ」です。これは ABI の実装であり、 エミュレーションとは異なります。エミュレータが呼び出されているわけではありません (シミュレータでもないことをあらかじめ断っておきましょう)。

では、これがよく “Linux エミュレーション”と呼ばれるのは何故でしょうか? それはもちろん FreeBSD の売りにするため 8-) でもあるのですが、 実際には、次のような理由によります。 この機能が初めて実装された頃、 動作原理を説明する以外にこの機能を表現する言葉はありませんでした。 しかし、コードをコンパイルしたりモジュールをロードしない場合、 「FreeBSD 上で Linux バイナリを実行する」という表現は、 厳密に考えると適切ではありません。 そこで、その際にロードされているもの自身を表現する言葉 -- すなわち “Linux エミュレータ”が必要だったのです。

# III. システム管理

FreeBSD ハンドブックの以下の章は、 FreeBSD のシステム管理の面について書かれています。 各章のはじめでは、その章で学ぶ内容や 実際に取り組む前に知っておくべきことについて説明します。

各章は、必要になった時に個別に参照できるように構成されています。 どの順番で読んでも構いませんし、FreeBSD を使うのに、 すべてを読み通す必要がある、というわけでもありません。

# Chapter 11. 設定とチューニング

寄稿: Chern Lee. 基にしたチュートリアルの執筆: Mike Smith. 基にした tuning(7) の執筆: Matt Dillon.

## 11.1. この章では

システムを正しく設定することは、 メンテナンスや将来の更新の際の作業の量を減らします。 この章では FreeBSD システムの管理上の設定の側面について記述します。

またこの章では FreeBSD システムのパフォーマンスを最適化する チューニングについても記述します。

この章を読むと、以下のことがわかります。

- ハードディスク上で、ファイルシステムおよびスワップのパー ティションの大きさと配置を決定する理由と方法

- `rc.conf` の設定と `/usr/local/etc/rc.d` スタートアップシステムの基礎

- ネットワークデバイスに対する、仮想ホストの設定方法

- `/etc` ディレクトリ内のさまざまな設定ファ イルの使い方

- `sysctl` 変数を使った FreeBSD のチューニング方法

- ディスク性能のチューニング方法と、カーネルの制限の変更方法

この章を読む前に、以下のことをやっておくとよいでしょう。

- Unix と FreeBSD の基本を理解する (Chapter 3)。

- FreeBSD のソースコードを最新に保つこと (Chapter 17) と、 カーネルコンフィグレーションおよび構築の基礎 (Chapter 8) に親しんでおく。

## 11.2. 初期設定

### 11.2.1. パーティションのレイアウト

#### 11.2.1.1. 基本パーティション

ファイルシステムのレイアウトを disklabel(8) や sysinstall(8) で行う際、ハードディスクの外周部は 内周部よりもデータ転送が速いということを覚えておくことが大事です。 これに従えば、 ルートやスワップのような小さくて激しくアクセスされるファイルシステムを外周付近に、 `/usr` のようなより大きなパーティションは その内側に配置すべきでしょう。 そのため、パーティションを作成する際には、ルート、スワップ、 `/var`、`/usr` のような順で作ってゆくのがよいでしょう。

`/var` パーティションのサイズは あなたが計算機をどのように使おうとしているかを反映します。 `/var` には主としてメールボックスやログファイル、 プリンタスプールが置かれます。 特にメールボックスとログファイルは、 あなたのシステムのユーザ数やログの保持期間に依存して予期し得ぬサイズにまで成長します。 もしあなたがメールサーバを運用する予定なら `/var` パーティションはギガバイト以上のものがよいでしょう。 さらに、`/var/tmp` は追加したくなるかもしれない パッケージを収められるだけの大きさが必要です。

`/usr` パーティションはシステムを サポートするのに必要なファイル群と、 ports(7) 階層からインストールされたファイル群を収める `/usr/local` と呼ばれるサブディレクトリを その中に含みます。 ports をまったく使わずシステムのソース (`/usr/src`) も不要だというのであれば、1 ギガバイトの `/usr` パーティションだけで充分です。 しかし、ports (特にウィンドウマネージャや Linux バイナリ) を少なからずインストールするのであれば 少なくとも `/usr` に 2 ギガバイトを薦め、 システムのソースも置こうというなら 3 ギガバイトの `/usr` を推奨します。 このパーティションで必要になる量を過小評価してはいけません。 それは驚く程に蔓延るものなのです!

パーティションのサイズを考える時、 必要量にシステムの成長分を見込んでおいてください。 別のパーティションには潤沢にスペースが余っているのに、 あるパーティションでスペースが足らないままというのは フラストレーションがたまるものです。

> Note: sysinstall(8) の `Auto-defaults` パーティションサイズを使ったことのある人なら、 そのルートや `/var` パーティションが 小さすぎることを知っているでしょう。 賢明かつ気前よくパーティションを切ってください。

#### 11.2.1.2. スワップパーティション

経験からスワップサイズはメインメモリの 2 倍というのが一般的です。 つまり、計算機のメモリが 128 メガバイトならばスワップファイルは 256 メガバイトになります。 メモリの少ないシステムでは、 もっとスワップを増した方が性能がよくなります。 256 メガバイト未満のスワップでシステムを設計することはお薦めできません。 またスワップサイズを決める時に、 将来のメモリ増設のことも考えておくべきです。 カーネルの VM (訳註: virtual memory(仮想メモリ)) ページングアルゴリズムはスワップパーティションがメインメモリの 2 倍以上存在するときに最も性能を発揮するように設計されています。 スワップが少なすぎる設定は、 あなたが後にメモリを増設したときに問題を起すばかりではなく、 VM ページスキャニングのコードの能率を落します。

最後に、複数の SCSI ディスク (や異なるコントローラで操作される複数の IDE ディスク) を持つ大規模なシステムでは、それぞれのドライブ (4 台まで) にスワップを設定することを強く推奨します。 各ドライブのスワップパーティションはほぼ同一サイズであるべきです。 カーネルは任意のサイズを扱うことができますが、 内部のデータ構造は最大のスワップパーティションの 4 倍に調節されます。 スワップパーティションをほぼ同一のサイズにしておくことで カーネルはスワップスペースを最適なかたちで ディスクをまたいでストライプさせることができます。 こだわりすぎる必要はありません。 スワップスペースは Unix のつつましい美点です。 あなたが通常スワップをたくさん使わないとしても、 プログラムが暴走してもリブートさせられる前に回復する時間を多く得られます。

#### 11.2.1.3. 何故パーティション化するのか?

何故パーティション化してしまうのでしょう? 何故巨大な root パーティション一発では駄目なのでしょう? そうすれば容量が溢れるかもと心配しなくてもすむのに!

いくつかの理由からそれはよいアイデアとは言えません。 まず各パーティションはアクセスの特徴がそれぞれ異なっていて、 分離しておくことでそれぞれの特徴に応じたチューニングができるようになるからです。 root パーティションや `/usr` パーティションはほとんどが読み出しでわずかな書き込みがあるだけですが `/var` や `/var/tmp` パーティションでは大量の読み書きが発生します。

システムを適切にパーティション化することで 小さいが書き込みの激しいパーティションによって引き起こされる フラグメント化を読み出し専門のパーティションにまで波及させずにすみます。 また書き込みの激しいパーティションをディスクの周辺部に配置することで、 たとえばパーティションテーブル内で大きなパーティションの後のかわりに前に配置することで、 それが最も必要とされているパーティションの I/O パフォーマンスを増大させることができます。 大きなパーティション内の I/O パフォーマンスもまた必要とされているでしょうが、 それらは大きすぎてディスク周辺部へ移動させてやったとしても `/var` を周辺部に移動させることによって大きな効果が得られたのとは対照的に 意味のあるパフォーマンスの増加は見込めないでしょう。 root パーティションを小さくまとめて 基本的にリードオンリーにすることで、 不幸にしてクラッシュが起きても無事で済む可能性が大きくなります。

## 11.3. 中核となる設定

システムの設定情報が収められている主な場所は `/etc/rc.conf` です。 このファイルにはシステムの起動時にシステムの設定を行なうものをはじめ 多岐に渡る設定情報が含まれています。 そのファイル名はダイレクトに、それが `rc*` ファイル群の設定情報であることを示しています。

管理者は `/etc/defaults/rc.conf` のデフォルトの設定を `rc.conf` ファイルにエン トリを作ることで上書きすべきです。 デフォルトのファイルをそのまま `/etc` にコピーするのはやめるべきです。 それはデフォルト値であってサンプルではないのです。 システム固有のすべての変更は `rc.conf` ファイ ルの中でするべきです。

管理の手間を減らす為、クラスター化されたアプリケーションには サイト共通の設定とシステム固有の設定を分離するさまざまな戦略が適用できます。 推奨されるアプローチは、サイト共通の設定は `/etc/rc.conf.site` のような別のファイルに置き、 それをシステム固有の設定情報しか含ませない `/etc/rc.conf` からインクルードすることです。

`rc.conf` は sh(1) によって読み込まれているので、これはじつに簡単に達成できます。 たとえば、

- rc.conf:

         . rc.conf.site
          hostname="node15.example.com"
          network_interfaces="fxp0 lo0"
          ifconfig_fxp0="inet 10.1.1.1"

- rc.conf.site:

         defaultrouter="10.1.1.254"
          saver="daemon"
          blanktime="100"

`rc.conf.site` ファイルは `rsync` のようなプログラムを使うことで全システ ムに配布でき、一方 `rc.conf` ファイルはユニークなままを保つことができます。

システムを sysinstall(8) や `make world` 等で 更新した場合 `rc.conf` ファイルは上書きされません。 なのでシステムの設定情報が失われることもありません。

## 11.4. アプリケーションの設定

基本的に、インストールされたアプリケーションには独自の文法を持つ 固有の設定ファイルがあります。 これらのファイルがベースシステムから分離されているということは重要で、 このためパッケージ管理ツールによる配置と管理が容易になっています。

基本的に、それらのファイルは `/usr/local/etc` にインストールされます。 設定ファイルの数が多数にのぼるアプリケーションに対しては、 それら用にサブディレクトリが作られます。

通常、ports やパッケージがインストールされると 設定ファイルのサンプルが一緒にインストールされます。 大抵、識別のためにサフィックスとして “.default” がついています。 アプリケーションのための設定ファイルがまだ存在していなければ、 .defaults ファイルをコピーすることで作成できます。

`/usr/local/etc/apache` ディレクトリの例をご覧ください。

    -rw-r--r--  1 root  wheel   2184 May 20  1998 access.conf
    -rw-r--r--  1 root  wheel   2184 May 20  1998 access.conf.default
    -rw-r--r--  1 root  wheel   9555 May 20  1998 httpd.conf
    -rw-r--r--  1 root  wheel   9555 May 20  1998 httpd.conf.default
    -rw-r--r--  1 root  wheel  12205 May 20  1998 magic
    -rw-r--r--  1 root  wheel  12205 May 20  1998 magic.default
    -rw-r--r--  1 root  wheel   2700 May 20  1998 mime.types
    -rw-r--r--  1 root  wheel   2700 May 20  1998 mime.types.default
    -rw-r--r--  1 root  wheel   7980 May 20  1998 srm.conf
    -rw-r--r--  1 root  wheel   7933 May 20  1998 srm.conf.default

ファイルサイズの差から、`srm.conf` ファイルだけが変更されていることが分かります。 後に apache を更新した時にも、 この変更されたファイルは上書きされることはありません。

## 11.5. サービスの起動

一つのシステムでサービスをいくつも立ち上げているということは よくあることです。 それらには独自の立ち上げかたがあることがあり、 それぞれ有利な点があります。

Ports collection やパッケージからインストールしたソフトウェアは しばしば `/usr/local/etc/rc.d` にスクリプトを置き、 システムが起動した時には `start`、システムをシャッ トダウンする時には `stop` を引数にして実行します。 これは `root` で実行すべき、または `root` で起動することを期待されているシステム ワイドなサービスを起動する場合に推奨される方法です。 これらのスクリプトはパッケージの一部としてインストール時に記録され、 パッケージとともに削除されます。

`/usr/local/etc/rc.d` にある 一般的なスクリプトは次のようなものです。

    #!/bin/sh
    echo -n ' FooBar'

    case "$1" in
    start)
            /usr/local/bin/foobar
            ;;
    stop)
            kill -9 `cat /var/run/foobar.pid`
            ;;
    *)
            echo "Usage: `basename $0` {start|stop}" >&2
            exit 64
            ;;
    esac

    exit 0

このスクリプトはその目的を果すべく起動時に `start`、 シャットダウン時に `stop` をつけて呼ばれます。

サービスの中には固有のポートに接続を受けたときに inetd(8) から起動されるものもあります。 これはメールリーダサーバ (POP や IMAP 等) の場合によくあります。 これらのサービスは `/etc/inetd.conf` ファイルを編集することで有効化されます。 このファイルの編集に関する詳細は inetd(8) を見てください。

これらの他に `/etc/rc.conf` による有効化/無効化がカバーされていないサービスもあります。 それらは伝統的に `/etc/rc.local` にコマンドを書き込むことで実行されていました。 FreeBSD 3.1 にはデフォルトの `/etc/rc.local` は存在していません。 もし管理者によって作られていれば、 その時は一般的なやりかたとして認められるべきでしょう。 `rc.local` は最後の場所と考えられているということを 知っておいてください。 サービスを起動させるのにもっといい場所があるなら そこから始めてください。

> Note: `/etc/rc.conf` でその他のコマンドを実行しないでください。 そのかわり、デーモンの起動やブート時のコマンド実行は `/usr/local/etc/rc.d` にスクリプトを配置してください。

この他にサービスの起動に cron(8) を利用することもできます。 このアプローチには、cron(8) がそのプロセスを `crontab` の所有者権限で実行したり、サービスが 非特権ユーザによって立ち上げられ管理されるなどといった有利な点が いくつもあります。

これで cron(8) の機能の利点を得ることができます。 日時の指定を `@reboot` で置き換えることでジョブは システムがブートした直後、cron(8) が起動した時に実行されます。

## 11.6. バーチャルホスト

FreeBSD の非常にありふれた用途の一つにバーチャルサイトの ホスティングがあります。 これは一つのサーバがネットワークには複数のサーバとして現れるものです。 これは一つのネットワークインタフェイスに 複数のアドレスを割当てることで実現されます。

ネットワークインタフェイスは “真の” アドレスを 一つと “別名” のアドレスを複数持ちます。これらの別 名は通常 `/etc/rc.conf` に別名のエントリを置くことで追加されます。

`fxp0` インタフェイスへの別名のエント リは以下の様なものです。

    ifconfig_fxp0_alias0="inet xxx.xxx.xxx.xxx netmask xxx.xxx.xxx.xxx"

別名のエントリは alias0 から始まり昇順に命名されなければなり ません (たとえば、_alias1, _alias2 の様になります)。設定プロセス は最初に欠けた番号のところで停まります。

別名のネットマスクの計算は重要ですが、幸いなことに非常に簡単です。 個々のインタフェイスについてそのネットワークのネットマスクを正しく 表現しているアドレスが必ず一つ必要です。 そのネットワークに所属しているそれ以外のアドレスのネットマスクは すべて 1 でなければなりません。

例として、`fxp0` インタフェイスが二つ のネットワークに接続されているものを考えてみましょう。 一つはネットマスクが 255.255.255.0 である 10.1.1.0 ネットワークで、もう一つはネットマスクが 255.255.255.240 である 202.0.75.16 ネットワークです。 システムは 10.1.1.0 には 10.1.1.1 として、 202.0.75.20 には 202.0.75.17 として現れるようにします。

以下のエントリはネットワークインタフェイスを上述の環境に正しく 設定するものです。

     ifconfig_fxp0="inet 10.1.1.1 netmask 255.255.255.0"
     ifconfig_fxp0_alias0="inet 10.1.1.2 netmask 255.255.255.255"
     ifconfig_fxp0_alias1="inet 10.1.1.3 netmask 255.255.255.255"
     ifconfig_fxp0_alias2="inet 10.1.1.4 netmask 255.255.255.255"
     ifconfig_fxp0_alias3="inet 10.1.1.5 netmask 255.255.255.255"
     ifconfig_fxp0_alias4="inet 202.0.75.17 netmask 255.255.255.240"
     ifconfig_fxp0_alias5="inet 202.0.75.18 netmask 255.255.255.255"
     ifconfig_fxp0_alias6="inet 202.0.75.19 netmask 255.255.255.255"
     ifconfig_fxp0_alias7="inet 202.0.75.20 netmask 255.255.255.255"

## 11.7. 設定ファイル

### 11.7.1. `/etc` のレイアウト

設定のための情報が含まれているディレクトリはたくさんあります。 それぞれ以下のものを含んでいます。

`/etc` | システム全般の設定情報。 ここにあるデータはシステム 固有のものです。
`/etc/defaults` | デフォルトのシステム設定ファイル。
`/etc/mail` | 追加的な sendmail(8) の設定、他の MTA の設定ファイル。
`/etc/ppp` | ユーザモード、およびカーネルモードの ppp プログラムの設定。
`/etc/namedb` | named(8) のデータのデフォルトの置場。通常 boot ファイルはここに置かれ、 `/var/db` に置かれた他のデータを 参照するディレクティブを含みます。
`/usr/local/etc` | インストールされたアプリケーションの設定ファイル。 アプリケーションごとのサブディレクトリを含んでいることがあります。
`/usr/local/etc/rc.d` | インストールされたアプリケーションの起動/停止スクリプト。
`/var/db` | 永続的なシステム固有のデータファイル。 たとえば named(8) のゾーンファイル、データベースファイル等。

### 11.7.2. ホスト名

#### 11.7.2.1. `/etc/resolv.conf`

`/etc/resolv.conf` は FreeBSD に インターネットドメインネームシステム (DNS) にどのようにアクセスするかを指定します。

`resolv.conf` の最もよくあるエントリは

`nameserver` | リゾルバが問い合わせるべきネームサーバの IP アドレス。 サーバはリストの順に 3 番目まで問い合わせられます。
`search` | ホスト名をルックアップするための検索リスト。 通常、ローカルなホスト名のドメインから決定されます。
`domain` | ローカルドメイン名。

基本的な `resolv.conf`。

    search example.com
    nameserver 147.11.1.11
    nameserver 147.11.100.30

> Note: `search` オプションと `domain` オプションは、 どちらか一方しか使ってはいけません。

DHCP を利用している場合、dhclient(8) は通常 `resolv.conf` を DHCP サーバから受け取っ た情報で書き換えます。

#### 11.7.2.2. `/etc/hosts`

`/etc/hosts` は古きインターネットを 偲ばせるシンプルなテキストのデータベースです。 これはホスト名と IP アドレスをマッピングする DNS や NIS と組み合わせて使われます。 LAN でつながれているローカルな計算機は、 名前引きを簡単にするために named(8) サーバを立ち上げるかわりにここに書くことができます。 さらに `/etc/hosts` はインターネット名のローカルなレコードを提供し、 よくアクセスされる名前を外部に問い合わせるのを減らすためにも使えます。

    # $FreeBSD$
    #
    # Host Database
    # This file should contain the addresses and aliases
    # for local hosts that share this file.
    # In the presence of the domain name service or NIS, this file may
    # not be consulted at all; see /etc/nsswitch.conf for the resolution order.
    #
    #
    ::1                     localhost localhost.my.domain myname.my.domain
    127.0.0.1               localhost localhost.my.domain myname.my.domain

    #
    # Imaginary network.
    #10.0.0.2               myname.my.domain myname
    #10.0.0.3               myfriend.my.domain myfriend
    #
    # According to RFC 1918, you can use the following IP networks for
    # private nets which will never be connected to the Internet:
    #
    #       10.0.0.0        -   10.255.255.255
    #       172.16.0.0      -   172.31.255.255
    #       192.168.0.0     -   192.168.255.255
    #
    # In case you want to be able to connect to the Internet, you need
    # real official assigned numbers.  PLEASE PLEASE PLEASE do not try
    # to invent your own network numbers but instead get one from your
    # network provider (if any) or from the Internet Registry (ftp to
    # rs.internic.net, directory `/templates').
    #

`/etc/hosts` は、 次のようなごく簡単なフォーマットになっています。

    [インターネットアドレス] [正式なホスト名] [別名1] [別名2] ...

例:

    10.0.0.1 myRealHostname.example.com myRealHostname foobar1 foobar2

これ以上の情報は hosts(5) をあたってください。

### 11.7.3. ログファイルに関係する設定

#### 11.7.3.1. `syslog.conf`

`syslog.conf` は syslogd(8) プログラムのための設定ファイルです。 これはどのタイプの `syslog` メッセージを対応する ログファイルに記録するかを指定します。

    # $FreeBSD$
    #
    #       Spaces ARE valid field separators in this file. However,
    #       other *nix-like systems still insist on using tabs as field
    #       separators. If you are sharing this file between systems, you
    #       may want to use only tabs as field separators here.
    #       Consult the syslog.conf(5) manual page.
    *.err;kern.debug;auth.notice;mail.crit          /dev/console
    *.notice;kern.debug;lpr.info;mail.crit;news.err /var/log/messages
    security.*                                      /var/log/security
    mail.info                                       /var/log/maillog
    lpr.info                                        /var/log/lpd-errs
    cron.*                                          /var/log/cron
    *.err                                           root
    *.notice;news.err                               root
    *.alert                                         root
    *.emerg                                         *
    # uncomment this to log all writes to /dev/console to /var/log/console.log
    #console.info                                   /var/log/console.log
    # uncomment this to enable logging of all log messages to /var/log/all.log
    #*.*                                            /var/log/all.log
    # uncomment this to enable logging to a remote log host named loghost
    #*.*                                            @loghost
    # uncomment these if you're running inn
    # news.crit                                     /var/log/news/news.crit
    # news.err                                      /var/log/news/news.err
    # news.notice                                   /var/log/news/news.notice
    !startslip
    *.*                                             /var/log/slip.log
    !ppp
    *.*                                             /var/log/ppp.log

これ以上の情報は syslog.conf(5) のマニュアルページに あたってください。

#### 11.7.3.2. `newsyslog.conf`

`newsyslog.conf` は、通常 cron(8) によって予定を決めて実行されるプログラム newsyslog(8) のための設定ファイルです。 newsyslog(8) は、 ログファイルをいつ保存して再編するかを決定します。 `logfile` は `logfile.0` に移され、`logfile.0` は `logfile.1` に、そして以下同様に移されます。 また、ログファイルを gzip(1) 形式で保存することもできます。 この場合ファイル名は `logfile.0.gz`, `logfile.1.gz` の様になります。

`newsyslog.conf` はどのログファイルが管理され、どのくらいの期間保存され、 そしていつ touch されるかを指定します。 ログファイルはあるサイズに到達するか、ある決められた時刻・ 日時で再編されあるいは保存されます。

    # configuration file for newsyslog
    # $FreeBSD$
    #
    # filename          [owner:group]    mode count size when [ZB] [/pid_file] [sig_num]
    /var/log/cron                           600  3     100  *     Z
    /var/log/amd.log                        644  7     100  *     Z
    /var/log/kerberos.log                   644  7     100  *     Z
    /var/log/lpd-errs                       644  7     100  *     Z
    /var/log/maillog                        644  7     *    @T00  Z
    /var/log/sendmail.st                    644  10    *    168   B
    /var/log/messages                       644  5     100  *     Z
    /var/log/all.log                        600  7     *    @T00  Z
    /var/log/slip.log                       600  3     100  *     Z
    /var/log/ppp.log                        600  3     100  *     Z
    /var/log/security                       600  10    100  *     Z
    /var/log/wtmp                           644  3     *    @01T05 B
    /var/log/daily.log                      640  7     *    @T00  Z
    /var/log/weekly.log                     640  5     1    $W6D0 Z
    /var/log/monthly.log                    640  12    *    $M1D0 Z
    /var/log/console.log                    640  5     100  *     Z

これ以上の情報は newsyslog(8) のマニュアルページに あたってください。

### 11.7.4. `sysctl.conf`

`sysctl.conf` は `rc.conf` によく似ています。 値は`変数=値`のかたちでセットされます。 指定された値はシステムがマルチユーザモードに移行した後でセットされます。 すべての変数がこのモードで設定可能というわけではありません。

以下は `sysctl.conf` のサンプルで 致命的なシグナルを記録しないように、また Linux プログラムに それらが実際は FreeBSD 上で動いていることを知らせる様に チューニングしています。

    kern.logsigexit=0       # Do not log fatal signal exits (e.g. sig 11)
    compat.linux.osname=FreeBSD
    compat.linux.osrelease=4.3-STABLE

## 11.8. sysctl によるチューニング

sysctl(8) は稼働中の FreeBSD システムに変更を加えるためのインタフェイスです。 これには経験を積んだ管理者用の TCP/IP スタックや 仮想メモリシステムのパフォーマンスを劇的に改善する 先進的なオプションが含まれます。 500 を越えるシステム変数を sysctl(8) で読んだり セットしたりできます。

本質的には sysctl(8) の機能は次の二つ、 システムの設定を読むことと変更することです。

読み取り可能なすべての変数を表示するには以下のようにします。

    % sysctl -a

個々の変数、たとえば `kern.maxproc` を読むには以下のようにします。

    % sysctl kern.maxproc
    kern.maxproc: 1044

特定の変数をセットするには、直感的な文法 `変数`=`値` を使ってください。

    # sysctl kern.maxfiles=5000
    kern.maxfiles: 2088 -> 5000

sysctl 変数の値は通常、文字列、数値、真偽値のいずれかです。 (真偽値は yes の場合には `1` で no の場合には `0` です)。

## 11.9. ディスクのチューニング

### 11.9.1. sysctl 変数

#### 11.9.1.1. `vfs.vmiodirenable`

`vfs.vmiodirenable` sysctl 変数のデフォルトは 1 (オン) で、 0 (オフ) または 1 (オン) にセットすることができます。 このパラメータはディレクトリがシステムによってどのように キャッシュされるかを制御します。 ほとんどのディレクトリは小さく、 ファイルシステムにおいては単一フラグメント (典型的には 1K) であり、バッファキャッシュではさらに小さくなっています (典型的には 512 バイト)。 しかしデフォルトモードで動作している時は、 大量のメモリを搭載していても バッファキャッシュは固定数のディレクトリしかキャッシュしません。 この sysctl をオンにすると、バッファキャッシュが VM ページキャッシュを、 ディレクトリをキャッシュするために使うことを可能にします。 これによる利点は、全てのメモリがディレクトリを キャッシュするのに使えるようになるということです。 欠点は、キャッシュに使われる最小のメモリの大きさが 512 バイトではなく 物理ページサイズ (大抵は 4K) になることです。 多数のファイルを操作するサービスを稼動しているなら、 常にこのオプションをオンにすることを推奨します。 そのようなサービスには、web キャッシュや大規模なメールシステム、 ニューズシステムなどが含まれます。 このオプションは一般にメモリを消費しますが、 性能を削減することはありません。 ただし実験して調べてみるべきでしょう。

#### 11.9.1.2. `hw.ata.wc`

FreeBSD 4.3 では IDE のライトキャッシュがオフになりました。 これは IDE ディスクへの書き込み帯域幅を減らしてしまうことになりますが、 ハードドライブベンダに起因するデータの一貫性に関する 重大な問題のために必要なことだと考えられました。 基本的には、書き込み完了時期について IDE ドライブが嘘をつくという問題です。 IDE ライトキャッシュがオンであると IDE ハードドライブはデータを順番に書きこまないばかりか、 ディスクの負荷が高い時にはいくつかのブロックの書き込みを 無期限に延期してしまいます。 クラッシュや電源故障の場合、 ファイルシステムの重大な破壊をもたらします。 したがって私たちはデフォルトを安全側に変更しました。 残念ながらこれは大変な性能の低下をもたらし、 私たちはあきらめてこのリリース後にオンに戻しました。 `hw.ata.wc` sysctl 変数を見てデフォルトを チェックしてみるべきです。 もし IDE ライトキャッシュがオフになっていたら、 hw.ata.wc カーネル変数を 1 に戻すことでオンに戻すことができます。 これはブート時にブートローダから行わなければなりません。 カーネルがブートした後に行っても効果はありません。

詳しくは ata(4) を見てください。

### 11.9.2. ソフトアップデート

tunefs(8) プログラムはファイルシステムを細かくチュー ニングするのに使えます。このプログラムにはさまざまなオプションがありま すが、ここではソフトアップデートをオンオフすることだけを考えま す。以下の様にして切り替えます。

    # tunefs -n enable /filesystem
    # tunefs -n disable /filesystem

ファイルシステムはマウントされているあいだは tunefs(8) で変更することができません。 ソフトアップデートを有効にする いい機会はシングルユーザモードでどのパーティションもマウント されていない時です。

> Note: FreeBSD 4.5 からは、ファイルシステム生成時に newfs(8) の `-U` オプションを使って ソフトアップデートを有効化できるようになりました。

ソフトアップデートはメタデータの性能、 主にファイルの作成と削除の性能を劇的に改善します。 すべてのファイルシステムでソフトアップデートを有効にすることを推奨します。 ソフトアップデートに関して、2 つの欠点を意識すべきです。 1 つめは、ソフトアップデートはクラッシュ時におけるファイルシス テムの一貫性は保証しますが、 物理ディスクの更新が何秒か (1 分に達することもあります!) 遅れる可能性が高いことです。 システムがクラッシュした場合、より多くの作業結果が消えてしまうかもしれません。 2 つめは、ソフトアップデート はファイルシステムブロックを解放するのを遅らせるということです。 あるファイルシステム (たとえばルートファイルシステム) が満杯近くの時に それに対する大規模な更新、たとえば `make installworld` をすると、空き領域を使い果たして更新が失敗してしまうことがあります。

## 11.10. Kernel 制限のチューニング

### 11.10.1. File/Process 制限

#### 11.10.1.1. `kern.maxfiles`

`kern.maxfiles` はあなたのシステムの要求に 応じて増減させることができます。 この変数はあなたのシステムのファイル記述子の最大値を示します。 ファイル記述子テーブルが溢れるような時には、システムメッセー ジバッファに頻繁に `file: table is full` と表示されます。これは、 `dmesg` コマンドで確認できます。

ファイル、ソケット、パイプ (fifo) は それぞれオープンされるとファイル記述子を一つ消費します。 大規模なプロダクションサーバでは その時実行されているサービスの種類や数に応じては あっさり数千のファイル記述子が必要になります。

`kern.maxfile` のデフォルト値はカーネル コンフィグレーションファイルの `MAXUSERS` オ プションで決まります。`kern.maxfiles` は `MAXUSERS` の値に比例して増加します。 カスタムカーネルをコンパイルする際は、このカーネルコンフィグ レーションオプションをシステムの利用法に合わせて設定するとよ いでしょう。カーネルは、この数値からほとんどの制限の初期値を 決定します。業務用マシンに、実際に 256 名のユーザが一度に接 続することはないかもしれませんが、大規模なウェブサーバに必要 なリソースは同程度になります。

> Note: FreeBSD 4.5 からは、 カーネルコンフィグレーションファイルで `MAXUSERS` を `0` に設定すると、システムの RAM 容量に基づいて適切なデフォルト値が選択されます。

### 11.10.2. ネットワークの制限

カーネルコンフィグレーションオプション `NMBCLUSTERS` は、そのシステムで利用可能なネッ トワーク mbuf の量を決定します。通信量の多いサーバで MBUF の量 が少ないと、FreeBSD の性能が低下してしまいます。クラスタ一つは およそ 2kB のメモリに対応しているので、1024 だとカーネルメモリ から約 2 MB をネットワークバッファに予約することになります。ど れだけ必要になるかを、簡単な計算で出すことができます。同時に最 大 1000 接続までゆくウェブサーバがあり、それぞれの接続によって 受信バッファ 16kB と送信バッファ 16kB が消費されるなら、ウェ ブサーバをまかなうのに 32MB 程度のネットワークバッファが必要 になります。経験的に有用な値は、それを 2 倍したものなので、 32MBx2 = 64MB/2K = 32768 になります。

# Chapter 12. FreeBSD の起動のプロセス

## 12.1. この章では

計算機を起動しオペレーティングシステムをロードするプロセスは、 “ブートストラッププロセス”、 もしくは単に “起動” と呼ばれます。 FreeBSD の起動プロセスを使えば、 システムをスタートするときに起きることを かなり柔軟にカスタマイズすることができます。 同じ計算機にインストールされた 別のオペレーティングシステムを選択することもできますし、 同じオペレーティングシステムの違うバージョンを選択することも、 インストールされた別のカーネルを選択することさえできます。

この章では、指定できる設定オプションと FreeBSD の起動プロセスのカスタマイズ方法について詳しく述べます。 この章では FreeBSD カーネルがスタートし、デバイスを検出し、 init(8) を起動するまでに起きることすべてを扱います。 どの最中のことだかはっきりしていない人のために補足すると、 テキストの色が明るい白から灰色に変わるまでに起きていることです。

この章を読むと、以下のことが分かります。

- どのように FreeBSD のブートストラップシステムが構成され、 そしてそれらが互いにどう関係しているのか

- 起動プロセスを制御するために FreeBSD のブートストラップの各要素に付加できるオプション

- device.hints(5) の基本的な記述方法

> x86 限定: この章では Intel x86 システム上で動作する FreeBSD の起動プロセスだけを扱います。

## 12.2. 起動時の問題

計算機の電源を入れ、オペレーティングシステムをスタートさせるのには、 おもしろいジレンマがあります。 定義により、計算機は オペレーティングシステムがスタートするまで何もする方法を知りません。 ディスクからプログラムを動かすのも含みます。 では、計算機はオペレーティングシステムなしに ディスクからプログラムを実行することができず、 オペレーティングシステムのプログラムがディスク上にあるのなら、 どうやってオペレーティングシステムをスタートさせるのでしょう?

この問題はほらふき男爵の冒険という本の中に 書かれている問題ととてもよく似ています。 登場人物がマンホールの下に半分落っこちて、 靴紐 (ブートストラップ) をつかんで自分を引っぱり、持ち上げるのです。 計算機の黎明期には、ブートストラップ という用語でオペレーティングシステムをロードする 機構のことを指していたのですが、 いまは短く “起動 (ブート)” と言います。

x86 ハードウェアでは、基本入出力システム (Basic Input/Output System: BIOS) にオペレーティングシステムをロードする責任があります。 オペレーティングシステムをロードするために、 BIOS がハードディスク上のマスターブートレコード (Master Boot Record: MBR) を探します。 MBR はハードディスク上の特定の場所になければなりません。 BIOS には MBR をロードし起動するのに十分な知識があり、 オペレーティングシステムをロードするために必要な作業の残りは MBR が実行できることを仮定しています。

ディスク上にオペレーティングシステムを一つだけ インストールしているなら、標準の MBR で十分です。 この MBR はディスク上の最初の起動可能なスライスを探し、 そのスライスにあるコードを起動して 残りのオペレーティングシステムをロードします。

ディスク上にオペレーティングシステムを複数インストールしているなら、 別の MBR -- 複数のオペレーティングシステムのリストを表示できて、 起動するオペレーティングシステムを選択できるような MBR -- をインストールすることができます。 FreeBSD はそのような MBR とともに配布されており、 この MBR をインストールすることもできます。 他のオペレーティングシステムのベンダも 標準 MBR に代わる MBR を提供しています。

FreeBSD ブートストラップシステムの残りは 3 段階に分かれます。 第 1 ステージは MBR によって起動されるもので、 MBR は計算機を特定の状態にするために必要なことだけ知っていて、 第 2 ステージを起動します。 第 2 ステージでは、第 3 ステージを起動する前に、 もうちょっとやることができます。 第 3 ステージでオペレーティングシステムのロード作業を完了します。 起動作業がこれらの 3 段階に分かれているのは、 PC の規格がステージ 1 とステージ 2 で実行できるプログラムのサイズに制限を課しているからです。 これらの作業をつなぎ合わせることによって、 FreeBSD はより柔軟なローダ (loader) を提供しているのです。

その後カーネルが起動し、デバイスの検出と初期化を開始します。 そしてカーネルの起動が終わると、制御はユーザープロセスの init(8) へ移されます。init(8) はまず ディスクが利用可能であることを確かめ、 ファイルシステムのマウント、 ネットワークで利用するネットワークカードのセットアップ、 そして通常 FreeBSD システムで初期時に起動されるすべてのプロセスの起動、 といったユーザーレベルでのリソース (資源) 設定を行ないます。

## 12.3. MBR、起動ステージ 1、2 および 3

### 12.3.1. MBR、`/boot/boot0`

FreeBSD の MBR は `/boot/boot0` にあります。これは MBR のコピーであり、 本当の MBR はディスク上の特別な部分、 つまり FreeBSD 領域の外に置く必要があります。

`boot0` は非常に単純なプログラムです。 これは、MBR にあるプログラムは 512 バイトの大きさでなければならないという制限があるためです。 FreeBSD の MBR をインストールし、 かつハードディスク上に複数のオペレーティングシステムをインストールした場合、 起動時にこれと同じような画面が出るでしょう。

Example 12-1. `boot0` のスクリーンショット

    F1 DOS
    F2 FreeBSD
    F3 Linux
    F4 ??
    F5 Drive 1

    Default: F2

他のオペレーティングシステム、特に Windows は、 既存の MBR を自らの MBR で上書きしてしまうことで知られています。 もしそうなってしまったら、 もしくは既存の MBR を FreeBSD の MBR で置き換えたいのなら、 次のコマンドを使ってください。

    # fdisk -B -b /boot/boot0 device

`device` は起動するデバイス名で、 たとえば 1 番目の IDE ディスクは `ad0`、 2 番目の IDE コントローラに接続されている 1 番目の IDE ディスクは `ad2`、 1 番目の SCSI ディスクは `da0` などとなります。

しかしながら、もしあなたが Linux ユーザで、 LILO で起動プロセスを制御したいのなら、 FreeBSD 用に `/etc/lilo.conf` を編集して、 FreeBSD のインストールの際 `マスターブートレコードを変更しない (Leave The Master Boot Record Untouched)` を選択します。 FreeBSD のブートマネジャをインストールしたのであれば、 Linux を起動し直して LILO の設定ファイル `/etc/lilo.conf` を変更し、 次のオプションを加えることができます:

    other=/dev/hdXY
    table=/dev/hdb
    loader=/boot/chain.b
    label=FreeBSD

こうすれば、LILO から FreeBSD と Linux を起動することができます。 この例では、ドライブ番号とパーティションを示すために `XY` を使っています。 SCSI ドライブを使っているのであれば、 `/dev/hdXY` を `/dev/sdXY` のように読み替えてください。 `XY` の指定方法は同じです。 `loader=/boot/chain.b` は同じドライブ上に両方のオペレーティングシステムを置いてあるのであれば不要です。 これで `/sbin/lilo -v` を実行すると システムに新しい変更が反映されるので、 画面のメッセージを見て確認します。

### 12.3.2. 起動ステージ 1 `/boot/boot1` と起動ステージ 2 `/boot/boot2`

概念上、第 1 ステージと第 2 ステージは ハードディスクの同じ領域上の同一のプログラムの部分部分です。 スペースの制約のため 2 つに分割されていますが、 いつも一緒にインストールします。

第 1 ステージと第 2 ステージは起動スライス (slice) の起動セクタにあります。 起動セクタとは、 MBR 上にある boot0 もしくは他のプログラムが、起動のプロセスを続けるために 必要なプログラムがあると想定している場所です。 `/boot` ディレクトリにあるファイルは実際に使われるファイルのコピーで、 実際のファイルは FreeBSD ファイルシステムの外部に格納されています。

`boot1` も非常に単純なプログラムです。 これは `boot0` 同様に、 512 バイトの大きさでなければならないという制限があるためです。 boot1 は `boot2` を検索し、 実行するため、そのスライスの情報を保持する FreeBSD のディスクラベル (disklabel) に関する最低限の情報を持っています。

`boot2` はもう少し高機能です。 これは FreeBSDのファイルシステム上でファイルを見つける能力を持ち、 実行するカーネルやローダを指定するための 簡単なインタフェイスを提供します。

ローダ (loader) はさらに高機能なもので、 使いやすく簡単な起動設定が行なえる手段を提供します。 `boot2` は通常それを起動します。 以前の `boot2` には、 カーネルを直接起動する機能しかありませんでした。

Example 12-2. `boot2` のスクリーンショット

    >> FreeBSD/i386 BOOT
    Default: 0:ad(0,a)/kernel
    boot:

もし仮にインストールされた `boot1` と `boot2` を変更したいのであれば、 disklabel(8) を使ってください。

    # disklabel -B diskslice

`diskslice` は起動するディスクとスライスで、 たとえば最初の IDE ディスクの 1 番目のスライスは `ad0s1` となります。

> Dangerously Dedicated Mode disklabel(8) を使うとき、 `ad0` のようにディスク名だけを指定すると、 スライスを持たない危険な専用ディスクを作成してしまいます。 たぶん間違いなく、そうしたいわけではないでしょうから、 必ず Return キーを押す前に disklabel(8) コマンドを二重にチェックしてください。

### 12.3.3. 起動ステージ 3 `/boot/loader`

ローダは三段階の起動プロセスの最終段階です。 ローダは通常、ファイルシステム上の `/boot/loader` として存在しています。

ローダは、よりさまざまなコマンド群をサポートした 強力なインタプリタによって提供される簡易組み込みコマンド群を利用することで、 ユーザが利用しやすい設定手段となるように設計されています。

#### 12.3.3.1. ローダプログラムの処理の流れ

ローダは初期化の際にコンソールとディスクの検出を行ない、 どのディスクから起動しているかを調べます。 そして必要な変数を設定してからインタプリタを起動し、 スクリプトからコマンドを送ったり手でコマンドを入力したりできます。

ローダは次に `/boot/loader.rc` を読み込み、通常、変数の標準値を定義した `/boot/defaults/loader.conf` と、そのマシンにローカルな変数を定義した `/boot/loader.conf` を読み込みます。 `loader.rc` はそれらの変数にもとづき、 選択されたモジュールとカーネルをロードします。

ローダは最後に、標準設定で 10 秒のキー入力待ち時間を用意し、 入力がなければカーネルを起動します。 入力があった場合、簡易コマンド群が使えるプロンプトが表示され、 ユーザは変数を調整したり、 すべてのモジュールをアンロードしたり、 モジュールをロードしたりすることができます。 その後、最終的な起動や再起動へ移行します。

#### 12.3.3.2. ローダの組み込みコマンド

もっともよく使われるローダのコマンドを以下に示します。 利用可能なコマンドをすべて知りたい場合、 loader(8) を参照してください。

autoboot `seconds`

  `seconds` で与えられた時間内に入力がなければ、 カーネルの起動へと進みます。 カウントダウンを表示し、標準設定では 10 秒間です。

boot [`-options`] [`kernelname`]

  すぐにカーネルの起動へ進みます。 オプション、カーネル名が指定されている場合は、 それらが使われます。

boot-conf

  すべてのモジュールの設定を、 起動時と同じように変数にもとづいて自動的に行ないます。 このコマンドは、まず `unload` を行なって、 変数--普通 `kernel` など--を変更した場合にのみ有効に働きます。

help [`topic`]

  `/boot/loader.help` を読み込み、ヘルプメッセージを表示します。 `topic` に `index` が指定された場合、 利用可能な `topic` を表示します。

include `filename` ...

  指定されたファイル名のファイルを処理します。 ローダはファイルを読み込み、行単位で解釈します。 エラーが発生した場合、 include コマンドの実行はその時点で停止します。

load [`-t` `type`] `filename`

  指定されたファイル名のカーネル、 カーネルモジュール、あるいは type に指定された種類のファイルをロードします。 ファイル名以降に指定された引数はファイルへと渡されます。

ls [`-l`] [`path`]

  指定された `path` にあるファイルを表示します。 `path` が指定されていなければ、ルートディレクトリを表示します。 `-l` が指定されていればファイルサイズも表示されます。

lsdev [`-v`]

  モジュールがロード可能なすべてのデバイスを表示します。 もし `-v` が指定されていれば、 より詳細な出力がされます。

lsmod [`-v`]

  ロード済みのモジュールを表示します。 `-v` が指定されていれば、 より詳細な内容が出力されます。

more `filename`

  `LINES` 行を表示するごとに停止しながら指定されたファイルを表示します。

reboot

  すぐにシステムを再起動します。

set `variable`, set `variable`=`value`

  ローダの環境変数を設定します。

unload

  すべてのロード済みモジュールを削除します。

#### 12.3.3.3. ローダの使用例

次にあげるのは、ローダの実践的な使用例です。

- 普段使っているカーネルをシングルユーザモードで起動します。

      boot -s

- 普段使っているカーネルとモジュールをアンロードし、 古い (もしくは別の) カーネルをロードします。

      unload
      load kernel.old

  `kernel.GENERIC` とすると、 インストールディスクに入っていた generic カーネルを指定することができます。 また、直前にインストールされていたカーネル (たとえば、 カーネルを自分で設定したり、 アップグレードしたりした場合) を指定するには `kernel.old` とします。

  > Note: 普段のカーネルで使っているモジュールを 指定したカーネルでロードする場合は、下のようにします。

  >     unload
  >     set kernel="kernel.old"
  >     boot-conf

- カーネルの設定スクリプト (通常、 カーネル起動時に設定される内容を自動化するスクリプト) をロードします。

      load -t userconfig_script /boot/kernel.conf

## 12.4. カーネル起動時の応答

カーネルがローダ (通常は) かboot2 (ローダを迂回して) によってロードされると、 起動フラグを調べます。 もし起動フラグがあれば、それに応じて動作を調整します。

### 12.4.1. カーネル起動フラグ

良く使われる起動フラグは次のとおりです。

`-a`

  カーネル初期化中に、 ルートファイルシステムとしてマウントするデバイスを尋ねます。

`-C`

  CDROM から起動します。

`-c`

  起動時にカーネルコンフィグレーションを行なう UserConfig を実行します。

`-s`

  シングルユーザモードで起動します。

`-v`

  カーネル起動時により詳細な情報を表示します。

> Note: 起動フラグはこの他にもあります。 それらについては boot(8) を参照してください。

## 12.5. Device Hints

寄稿: Tom Rhodes.

> Note: これは FreeBSD 5.0 以降の機能です。 これ以前のバージョンには存在しません。

起動プロセスの間に loader(8) は device.hints(5) を読み込みます。 このファイルにはカーネル起動の環境変数が格納されており、 これらの環境変数は “device hints” と呼ばれることがあります。 “device hints” はデバイスを設定するために デバイスドライバが使用します。

device hints は ステージ 3 ブートローダ でも設定できます。device hints は `set` コマンドを用いて追加することが、 `unset` コマンドを用いて削除することができます。 `show` コマンドを用いて一覧を見ることもできます。 `/boot/device.hints` に設定されている変数は このときに上書きすることができます。 ローダで設定した device hints の効果は一時的なものであるため、 次回起動するときには無効になります。

システムが起動すると、kenv(1) コマンドでカーネル環境変数を ダンプすることができます。

`/boot/device.hints` は 1 行につき一つの変数を設定でき、 行頭の “#” はその行がコメントであることを示しています。 書式は次の通りです。

    hint.driver.unit.keyword="value"

ステージ 3 ブートローダ で設定するときの書式は次の通りです。

    set hint.driver.unit.keyword=value

`driver` はデバイスドライバの名前、 `unit` はデバイスドライバのユニット番号、 `keyword` はヒントキーワードです。 キーワードは次の設定を指定します:

- `at`: デバイスがどのバスに接続されているか指定します。

- `port`: 使用する I/O ポートの開始アドレスを指定します。

- `irq`: 使用する IRQ を指定します。

- `drq`: 使用する DMA チャネルを指定します。

- `maddr`: 使用する物理メモリアドレスを指定します。

- `flags`: デバイスに対してさまざまなフラグを設定します。

- `disabled`: `1` が設定されていると、そのデバイスは無効になります。

デバイスドライバはこのリスト以外の変数を設定できるかもしれませんし、 このリスト以外の変数を必要とするかもしれません。 したがって、デバイスドライバのマニュアルを読むことをおすすめします。 より多くの情報を知りたければ、device.hints(5), kenv(1), loader.conf(5), loader(8) などのマニュアルを参照してください。

## 12.6. init: プロセス制御の初期化

カーネルの起動が完了すると、init(8) というユーザプロセスに制御が移されます。 これは `/sbin/init`、 もしくは `loader` の `init_path` 変数で指定される場所にあります。

### 12.6.1. 自動再起動 (automatic reboot)の動作

自動再起動では、 システム上で利用できるファイルシステムの一慣性を確認します。 もしそれに問題があって fsck(8) がその不一致を修復できなければ、 管理者に直接対処させるため init(8) はシステムをシングルユーザモードへと移行させます。

### 12.6.2. シングルユーザモード

このモードには、 自動再起動の処理中か、 ユーザが起動時に `-s` オプションを指定した場合、 あるいは `loader` で `boot_single` 変数を設定することによって移行します。

また、 マルチユーザモードから 再起動オプション (`-r`) や停止 (halt) オプション (`-h`) なしで shutdown(8) を呼び出すとこのモードに移行します。

`/etc/ttys` でシステムコンソール `console` が `insecure` に設定されている場合、 システムはシングルユーザモードに移行する前に `root` のパスワードを入力するように求めます。

Example 12-3. `/etc/ttys` の insecure コンソール

    # name  getty                           type    status          comments
    #
    # If console is marked "insecure", then init will ask for the root password
    # when going to single-user mode.
    #
    # 訳) console に "insecure" という印をつけると、シングルユーザモードへ移行する
    # 際に init が root のパスワードを要求するようになります。
    #
    console none                            unknown off insecure

> Note: `insecure` コンソールとは、 あなた自身、コンソールが物理的に安全でないと考えていて、 `root` のパスワードを知る人だけがシングルユーザモードを 使えるようにしたいという意味であり、 コンソールを安全でない状態で使いたいという意味ではありません。 そのため、安全性を求めるならば `secure` でなく `insecure` を選んでください。

### 12.6.3. マルチユーザモード

init(8) がファイルシステムが正常であると判断するか、 ユーザがシングルユーザモードを終了すると、 システムはマルチユーザモードへ移行し、 リソースの設定を始めます。

#### 12.6.3.1. リソース設定 (rc)

リソース設定システムはデフォルト設定を `/etc/defaults/rc.conf` から、 そのシステム独自の細かな設定を `/etc/rc.conf` から読み込みます。 そして `/etc/fstab` に記述されるシステムファイルシステムをマウントし、 ネットワークサービスの開始、 さまざまなシステムデーモンの開始、 そして最後に、ローカルにインストールされた package の起動スクリプトの実行へと進みます。

リソース設定システムに関する参考資料は、rc(8) にあります。 これはスクリプトそのものを調べることと同じくらい優れたものです。

## 12.7. シャットダウン動作

shutdown(8) を用いてシステムを意図的にシャットダウンした場合、 init(8) は `/etc/rc.shutdown` というスクリプトの実行を試みます。 そして、すべてのプロセスへ `TERM` シグナルを送り、続いてうまく終了できなかったプロセスへ `KILL` シグナルを送ります。

電源管理機能を持ったシステムで稼働している FreeBSD では `shutdown -p now` コマンドによって、 直ちに電源を落とすことができます。FreeBSD を再起動するには、 `shutdown -r now` を実行するだけです。 shutdown(8) を実行するには、`root` であるか、`operator` グループのメンバ でなければなりません。halt(8) や reboot(8) コマンドを 利用することもできますが、より多くの情報を知るために、 それらと shutdown(8) のマニュアルページを参照してください。

> Note: 電源管理機能は FreeBSD 5.X の acpi(4) がカーネルに組み込まれているか、 モジュールが読み込まれていることを必要とし、 FreeBSD 4.X の apm(4) を必要とします。

# Chapter 13. ユーザと基本的なアカウントの管理

## 13.1. この章では

寄稿: Neil Blakey-Milner `<nbm@FreeBSD.org>`、2000 年 2 月

システムへアクセスするには、かならずユーザアカウントが使われます。 また、プロセスもすべてユーザによって実行されますので、 ユーザとアカウントの管理は FreeBSD システムにおいて欠かすことのできない重要なものです。

アカウントには大きく分けて三種類のものがあります。それは、 スーパーユーザ (Superuser)、 システムユーザ (system users)、 そしてユーザアカウント (user accounts) です。 スーパーユーザのアカウントは通常 `root` と呼ばれ、 無制限の特権を持つためにシステムの管理に用いられます。 また、システムユーザはサービスの運用に用いられ、 最後のユーザアカウントは、 実際にログインしてメールを読むといった作業を行なう利用者のためのものです。

## 13.2. スーパーユーザアカウント

スーパーユーザアカウントは通常 `root` と呼ばれ、初期時から設定済みです。 このアカウントはシステム管理を行なうためのもので、 メールのやりとり、システムの調査、 プログラミングといった日常的な作業を行なうために使われるべきものではありません。

その理由は、スーパーユーザが通常のユーザアカウントと異なり、 操作にまったく制限を受けないことによります。 そのためスーパーユーザアカウントで操作を間違えると、 システムに重大な影響を与えてしまう恐れがあるのです。 ユーザアカウントでは、仮に操作を間違えてもシステムを壊してしまうようなことは できないようになっています。したがって特権を必要としていないのであれば、 できるだけいつもユーザアカウントを利用する方が望ましいと言えるでしょう。

また、スーパーユーザで実行するコマンドはいつでも、 二回、三回と何度もコマンドをチェックしてください。 なぜならスペースが多かったり、文字が欠けていたりするだけで、 取り返しのつかないデータの破壊につながる可能性があるからです。 スーパーユーザになると得られる特権は、 言い換えてみれば通常のユーザアカウントの保護を受けることができない、 ということも意味しています。

ですから、この章を読んでからあなたが最初にすべきなのは、 もし用意していないなら、日常的に利用するための あなた自身のユーザアカウントを作成することです。 これはマルチユーザモード、シングルユーザモードを問わず、 同様にあてはまります。 この章のうしろの方では、アカウントの追加と通常のユーザから スーパーユーザへと移行する手順について扱います。

## 13.3. システムアカウント

システムユーザとは、DNS、メール、 ウェブサーバといった各種サービスを運用するために使われます。 この目的は、セキュリティを確保するためです。 もしサービスがスーパーユーザで実行されていると、 それらのサービスは (本来意図しないような) どんな動作でも可能となり、適切な制限を適用することができません。

システムユーザの具体例として、 `daemon`、 `operator`、 `bind` (DNS; Domain Name Service 用) および `news` といったものがあります。 またシステム管理者はよく、 インストールしたウェブサーバを運用するために `httpd` というユーザを作成しています。

`nobody` ユーザは通常の特権を持たないシステムユーザですが、 `nobody` を利用するサービスが増えれば増えるほど、その特権も大きくなります。

## 13.4. ユーザアカウント

ユーザアカウントは、 主に現実のユーザがシステムにアクセスする手段として用いられるものです。 このアカウントは利用するユーザとシステム環境を分離します。 そのため、システムや他のユーザに危害をおよぼす危険性をなくし、また、 他に影響を与えることなくユーザ自身の環境をカスタマイズすることを可能にしています。

システムにアクセスするすべてのユーザは、 それぞれに一人一つのユーザアカウントを持つべきです。 こうすることで誰が何を行なっているかがわかりますし、 他の人の設定を壊してしまったり、 他人にメールを読まれてしまうようなことを避けることができます。

それぞれのユーザは快適にシステムを利用するため、 シェル、エディタ、キー設定、言語など、 各自の環境をセットアップすることができます。

## 13.5. アカウント情報の変更

強力で柔軟性に富むアカウント情報の変更手段として、 pw があります。 しかし、新しいアカウントをつくる場合は adduser を、 アカウントを削除する場合は rmuser を使うことが推奨されています。

chpass を使うことで、 システム管理者、通常のユーザはパスワード、シェル、 その他の個人情報を変更することができます。 また、特にパスワードを変更する場合には、 通常 passwd の方が良く使われます。

### 13.5.1. adduser

adduser は、 新しいユーザを登録するためのシンプルなプログラムです。 このプログラムは `passwd` と `group` に新しいユーザのエントリを作成するのと同時に、 ホームディレクトリを作成して `/usr/share/skel` からデフォルトで使用されるドットファイル (訳注: ホームディレクトリに存在する “.” から始まるファイルのことで、各種設定に用いられます) をコピーします。 また、新しく作成されたユーザに対して、 ウェルカムメッセージをメールで送信することも可能です。

初期設定ファイルを作成するには、 `adduser -s -config_create` とします[6]。 そして次に adduser のデフォルト設定を行ない、 最初のユーザアカウントを作成します。 システムを日常利用する際に root を用いるのは最悪です。

Example 13-1. adduser の設定の変更

    # adduser -v
    Use option ``-silent'' if you don't want to see all warnings and questions.
    Check /etc/shells
    Check /etc/master.passwd
    Check /etc/group
    Enter your default shell: csh date no sh tcsh [sh]: tcsh
    Your default shell is: tcsh -> /usr/local/bin/tcsh
    Enter your default HOME partition: [/home]:
    Copy dotfiles from: /usr/share/skel no [/usr/share/skel]:
    Send message from file: /etc/adduser.message no
    [/etc/adduser.message]: no
    Do not send message
    Use passwords (y/n) [y]: y

    Write your changes to /etc/adduser.conf? (y/n) [n]: y

    Ok, let's go.
    Don't worry about mistakes. I will give you the chance later to correct any input.
    Enter username [a-z0-9_-]: jru
    Enter full name []: J. Random User
    Enter shell csh date no sh tcsh [tcsh]:
    Enter home directory (full path) [/home/jru]:
    Uid [1001]:
    Enter login class: default []:
    Login group jru [jru]:
    Login group is ``jru''. Invite jru into other groups: guest no
    [no]: wheel
    Enter password []:
    Enter password again []:

    Name:     jru
    Password: ****
    Fullname: J. Random User
    Uid:      1007
    Gid:      1007 (jru)
    Class:
    Groups:   jru wheel
    HOME:     /home/jru
    Shell:    /usr/local/bin/tcsh
    OK? (y/n) [y]: y
    Added user ``jru''
    Copy files from /usr/share/skel to /home/jru
    Add another user? (y/n) [y]: n
    Goodbye!
    #

簡単に上の操作を説明します。 まずデフォルトシェルを tcsh (packages にある追加のシェルです) に変更し、 新しいユーザにウェルカムメッセージのメールを送付しないようにしました。 そしてその設定を保存し、`wheel` グループ (後に、 これが重要な意味を持っていることがわかるでしょう) に所属する `jru` というアカウントを作成しています。

> Note: 入力したパスワードは画面に表示されません。 アスタリスク記号も表示されませんので、 パスワードを二回とも間違えて入力してしまわないように注意してください。:-)

> Note: これ以降はオプション引数をつけず単に `adduser` を起動します。 デフォルト設定を変更する必要はありません。 もし、adduser がデフォルト設定を変更するかどうか尋ねてきたら、 adduser を終了し、`-s` オプションを使うようにしてください。

### 13.5.2. rmuser

rmuser は、 システムからユーザを削除します。 これにはユーザデータベースからの削除だけでなく、 その他、そのユーザに依存する情報すべてが含まれます。

rmuser は次の手順を実行します。

1. 指定されたユーザの crontab(1) エントリを削除 (存在する場合)。

2. 指定されたユーザの at(1) ジョブをすべて削除。

3. 指定されたユーザが所有するすべてのプロセスを強制終了。

4. ローカルパスワードファイルから、 指定されたユーザのエントリを削除。

5. 指定されたユーザのホームディレクトリを削除 (ディレクトリの所有者が指定されたユーザのものだった場合)。

6. `/var/mail` から、指定されたユーザの到着メールファイルを削除。

7. `/tmp` のような一時ファイル保存領域から、 指定されたユーザの所有するファイルを削除。

8. そして最後に、 `/etc/group` にある すべてのグループから、指定されたユーザを削除します。

   > Note: 指定されたユーザと同じ名前のグループで、 そのユーザが削除されると空のグループとなる場合は、 そのグループ自体が削除されます。 これは adduser(8) によってユーザごとに作成される、 ユニークなグループに対応するものです。

スーパユーザアカウントの削除に rmuser を利用することはできません。 スーパユーザアカウントの削除はほとんどすべての場合、 大規模なシステムの破壊を意味するからです。

デフォルトでは、 どういう操作を行なっているか確認できる対話モードが使われます。

Example 13-2. rmuser による対話的なアカウントの削除

    # rmuser jru
    Matching password entry:
    jru:*:1000:1000::0:0:J. Random User:/home/jru:/usr/local/bin/tcsh
    Is this the entry you wish to remove? y
    Remove user's home directory (/home/jru)? y
    Updating password file, updating databases, done.
    Updating group file: trusted (removing group jru -- personal group is empty) done.
    Removing user's incoming mail file /var/mail/jru: done.
    Removing files belonging to jru from /tmp: done.
    Removing files belonging to jru from /var/tmp: done.
    Removing files belonging to jru from /var/tmp/vi.recover: done.
    #

### 13.5.3. pw

pw は、 ユーザやグループの作成、削除、 変更および表示を行なうことができ、 システムユーザファイルやシステムグループファイルの編集機能を持った コマンドラインのユーティリティです。

これはシェルスクリプトからの利用や、 直接コマンドを実行する際に便利に使えるように設計されたものです。

詳細はすべて pw(8) に書かれています。

### 13.5.4. chpass

chpass は、 パスワード、シェル、その他の個人情報といった、 ユーザデータベース情報を変更します。

システム管理者に限りスーパユーザ権限で chpass を用い、 他のユーザの情報やパスワードを変更することが可能です。

ユーザ名の他にオプションを指定しないと、 chpass はユーザ情報を編集するエディタを表示します。 そのエディタを終了すると、 chpass はユーザデータベース情報の変更を試みます。

Example 13-3. スーパユーザによる対話的な chpass

    #Changing user database information for jru.
    Login: jru
    Password: *
    Uid [#]: 1000
    Gid [# or name]: 1000
    Change [month day year]:
    Expire [month day year]:
    Class:
    Home directory: /home/jru
    Shell: /usr/local/bin/tcsh
    Full Name: J. Random User
    Office Location:
    Office Phone:
    Home Phone:
    Other information:

通常のユーザは、この情報の限られた部分のみ変更が可能です。 また、変更できるのはそのユーザ自身の情報のみです。

Example 13-4. 通常のユーザによる対話的な chpass

    #Changing user database information for jru.
    Shell: /usr/local/bin/tcsh
    Full Name: J. Random User
    Office Location:
    Office Phone:
    Home Phone:
    Other information:

> Note: `chfn`、 `chsh` はいずれも、 単に chpass へのハードリンクになっています。 また、`ypchpass`、 `ypchfn` および `ypchsh` も同様です。 NIS のサポートは自動的に行なわれますので、 コマンドの先頭に `yp` をつける必要はありません。

### 13.5.5. passwd

passwd は、 ユーザが自分のパスワードを変更する通常の方法です。 スーパユーザ権限では、 他のユーザのパスワードを変更するのに使われます。

> Note: ユーザはパスワードを変更する前に、 もともと設定されていたパスワードを入力しなければなりません。 これはユーザがコンソールを離れた際に、 不審な人物によってパスワードが変更されることを防ぐためです。

Example 13-5. passwd

    % passwd
    Changing local password for jru.
    Old password:
    New password:
    Retype new password:
    passwd: updating the database...
    passwd: done

    # passwd jru
    Changing local password for jru.
    New password:
    Retype new password:
    passwd: updating the database...
    passwd: done

> Note: `yppasswd` は、 単に `passwd` へのハードリンクになっています。 NIS のサポートは自動的に行なわれますので、 コマンドの先頭に `yp` をつける必要はありません。

## 13.6. ユーザへの制限と設定

quota がシステムで有効化されていると、 システム管理者はディスク使用の上限を設定し、 ユーザは自身のディスク使用量をチェックできるようになります。 quota については、quota の章に書かれています。

地域化 (localization) とは、 それぞれ異なる言語、キャラクタセット、 日付や時間の標準などに適応させるための環境設定を、 システム管理者やユーザが行なうことを指します。 地域化については、 地域化の章に書かれています。

# Chapter 14. セキュリティ

本章の基にした security(7) マニュアルページの執筆: Matthew Dillon.

訳: 日野 浩志 `<hino@ccm.cl.nec.co.jp>`、(jpman プロジェクトの成果を利用させ ていただきました)。

## 14.1. この章では

この章では、基本的なシステムセキュリティの考え方、 覚えておくべき一般的なルールを紹介し、 そして S/Key, OpenSSL, Kerberos などの高度な話題について簡単に説明します。

## 14.2. はじめに

セキュリティとは、システム管理者をいつも悩ませる仕事の一つです。 すべての BSD Unix マルチユーザシステムは、 従来からいくつかのセキュリティ機構を備えていますが、 ユーザを疑心暗鬼に陥らせないように追加のセキュリティ機構を構築し 保守する仕事はおそらく、システム管理者としてもっとも大きな責務の一つでしょう。 マシンの安全性に反映されるのは、管理者が作業したことだけです。 またセキュリティ問題は、快適な環境に必要なものと競合します。 一般に Unix システムは膨大な数のプロセスを同時に動作させることができ、 そのプロセスの大部分は、サーバ - 外部から接続し、通信するものとして動作します。 かつてのミニコンとメインフレームがデスクトップにとってかわり、 さらにコンピュータが相互に接続されたネットワークを形成するようになった今日、 セキュリティはさらに大きな関心事になってきています。

セキュリティを実装するには、 タマネギのように階層化する手法 (a layered “onion” approach) が最適です。 どうすれば良いのか簡単に説明すると、 便利な機能と同じ数だけセキュリティの階層を作り、 システムへの侵入を注意深く監視するのです。 あなたはセキュリティを過度に厳重にしたり、 侵入の監視に時間をとられたいとは思わないでしょう。 この侵入の発見という部分は、 あらゆるセキュリティ機構において最も重要な部分の一つなのです。 たとえば、システムの各バイナリに `schg` フラグ (chflags(1) 参照) を設定するのは、大して意味がありません。 フラグを設定すると一時的にバイナリが保護され、 侵入してきた攻撃者によってシステムに加えられる変更のうち、 容易に検出可能な変更は行なえなくなります。 しかしその結果として、セキュリティ機構がその侵入者を検出することも まったくできなくなってしまうでしょう。

また、システムセキュリティには、 さまざまな形での攻撃に対処することとも関係しています。 攻撃の中には root 権限を奪おうとはしないけれども、 クラッシュやシステムの不安定状態を引き起こそうとするものもあります。 このセキュリティ問題は、いくつかに分類することが可能です。

1. サービス妨害攻撃 (denial of service attack)

2. ユーザアカウントの不正利用 (user account compromise)

3. アクセス可能なサーバを使った root 権限の不正利用

4. ユーザアカウントを経由した root 権限の不正使用

5. バックドアの設置

サービス妨害攻撃 (DoS 攻撃) とは、 マシンから必要な資源を奪う行為です。 通常、サービス妨害攻撃はそのマシンで実行されるサーバや ネットワークスタックを過負荷状態にしてマシンをクラッシュさせたり、 マシンを使えなくしたりするような力任せの方法です。 サービス妨害攻撃の中には、 ネットワークスタックのバグを利用して、 パケット一つでマシンをクラッシュさせようとするものもあります。 後者には、カーネルにバグ修正を施すことによってのみ対応することができます。 サーバプロセスに対する攻撃は、オプションを適切に指定することによって、 攻撃されている状況でサーバプロセスの負荷上昇に限界を設定することで 対応できる場合が多いです。これらに比べると、 ネットワークへの力任せの攻撃への対応はずっと難しくなります。 たとえば、偽造パケットによる攻撃 (spoof-packet attack) は、 インターネットからシステムを切り離す以外の方法で 防ぐことはほとんど不可能です。 この攻撃によって、マシンを落としてしまうことはできないかもしれませんが、 接続しているインターネット回線を飽和させてしまうことはできます。

ユーザアカウントの不正利用は、 サービス妨害攻撃よりもずっとよくある問題です。 このご時勢でも、自分たちのマシンで標準の telnetd, rlogind, rshd, ftpd サーバを実行させているシステ ム管理者は多いのです。これらのサーバは、デフォルトでは、暗号化さ れたコネクション上で動作していません。その結果、抱えているユーザ 数が標準くらいであれば、リモートログイン (そのシステムにログイン するには最も普通で便利な方法です) しているユーザのうち一人以上は、 パスワードを覗き見られてしまうでしょう。システム管理者が注意深い 人ならば、たとえログインが成功していたとしても、リモートアクセス ログを解析して、疑わしい送信元アドレスを探すものです。

ひとたび攻撃者がユーザアカウントへのアクセス権を入手したら、 攻撃者が root 権限を破る可能性があることを仮定するべきです。 しかし、セキュリティを十分維持し、手入れの行き届いたシステムにおい ては、あるユーザアカウントへのアクセスが可能となっても、攻撃者に 必ずしも root へのアクセス権を与えるとは限りません。こ の違いは重要です。というのは、一般的に root へのアクセス権がなければ、 攻撃者は自分の侵入の痕跡を隠蔽することができませんし、 そのユーザのファイルを引っかき回したり、 マシンをクラッシュさせたりするのがせいぜいです。 ユーザアカウントの不正利用はめずらしいことではありません。 なぜなら一般ユーザは、 システム管理者ほど注意を払わない傾向があるからです。

システム管理者は、あるマシン上で root 権限を奪取する方法は、 潜在的に何通りもあるということを心しておかねばなりません。 攻撃者は root のパスワードを知っているかもしれませんし、 攻撃者が root 権限で実行されているサーバのバグを見つけ、 ネットワーク接続を介して root 権限を破ることができるかもしれません。 また、攻撃者は suid-root プログラムに存在するバグを知っていて、 ユーザアカウントを破れば root 権限を奪取できるかもしれません。 攻撃者があるマシン上で root 権限を破る方法を知ったならば、 攻撃者は裏口を用意する必要がありません。 これまでに発見され、ふさがれた root の穴の多くには、 攻撃者が自分のしたことの痕跡を消そうとした作業が、 かなりの割合で含まれています。 そのため、ほとんどの攻撃者は裏口を作るのです。裏口は、 攻撃者がたやすくシステムへの root アクセスを再び得られるようにしますが、 有能な管理者に侵入を検知する便利な手段を与えるものでもあります。 攻撃者に裏口を作らせないようにするということは、 セキュリティにとっては実際には良くないことかもしれません。 なぜなら、攻撃者が最初に見つけて侵入してきたセキュリティホールは ふさがれないからです。

セキュリティを改善する方法は、常に、 タマネギの皮のように階層化する手法 (a multi-layered “onion peel” approach) で実装されるべきです。これらは次のように分類できます。

1. root とスタッフのアカウントの安全性を高める。

2. root の安全性を高める - root 権限で動作するサーバ と suid/sgid バイナリ。

3. ユーザアカウントの安全性を高める。

4. パスワードファイルの安全性を高める。

5. カーネルのコア、raw デバイス、ファイルシステムの安全性を 高める。

6. システムに対して行なわれた、不適切な変更をすばやく検出す る。

7. 必要と思われる以上の対応をとる (paranoia)。

本章の次の節では、上記の各項目についてより深く掘り下げていき ます。

## 14.3. FreeBSDの安全性を高める

以下の節では、本章の前節 でとりあげた FreeBSD システムの安全性を高める方法について 述べます。

### 14.3.1. `root` アカウントとスタッフアカウントの安全性を高める

root のアカウントの安全性を確保しないうちからスタッフのア カウントの安全性をうんぬんしてもしかたがありません。ほとんどの システムでは、root アカウントに割り当てたパスワードが 1 つあり ます。まず最初にすべきことは、このパスワードはいつで も不正利用の危険に晒されていると仮定することです。これは root のパスワードを消すべきだと言っているのではありません。 root のパスワードは、マシンにコンソールからアクセスするのには、 ほとんどいつでも必要なものです。ここで言いたいのは、コンソール 以外からは、そして可能なら su(1) コマンドを実行する場合も root のパスワードを使えないようにするべきである、ということで す。たとえば、あなたが使っている pty が、 `/etc/ttys` ファイルで unsecure と指定 されているか確認してください。そうすると、 `telnet` や `rlogin` 経由では root で直接ログインできないようになります。 sshd のような、別のログインサービス を使っている場合でも同様に、直接 root へログインすることを許し ていないかどうか確認してください。すべてのアクセス手段 - たとえば FTP のようなサービスが、良くクラックの対象となることを考えましょう。 root への直接ログインは、 システムコンソール経由でのみ可能であるべきなのです。

また当然、システム管理者として自分が root になれるようにしておく必要が ありますから、そのための穴をいくつか開けておきます。し かし、それらの穴を動作させるには、さらに追加のパスワード認証が 必要であるようにしておくことが重要です。root でアクセス可能と する方法の一つとして、適切なスタッフアカウントを (`/etc/group` 中の) `wheel` グループに加えることがありま す。`wheel` グループに入っているスタッフメン バは `su` を使って root になることが許されま す。パスワードエントリにおいて、スタッフメンバを `wheel` グループに置くことによって直接 wheel 権限を与えてはいけません。スタッフメンバのアカウントは `staff` グループに所属させるべきで、そして `/etc/group` ファイルを通して `wheel` グループに加えるべきです。実際に root アクセスの必要なスタッフメンバのみ `wheel` グ ループに置くようにすべきです。他の認証方法の場合、たとえば kerberos を使用する場合には、root アカウントの `.k5login` ファイルを使って、誰も `wheel` グループに置く必要なく ksu(1) を 使って root になることを許すようにすることもできます。このやり 方はよりよい解決策なのかもしれません。なぜなら、 `wheel` のメカニズムでは、侵入者がパスワード ファイルを手に入れ、スタッフアカウントのいずれか 1 つを破るこ とができると、root を破ることがまだできてしまうからです。 `wheel` のメカニズムを用いる方が、何もしない よりは良いのですが、必ずしも最も安全な選択肢とは限りません。

スタッフのアカウント、また究極には root アカウントの安全性 を高める間接的な方法は、別のログインアクセスの方法を用いてスタッ フのアカウントの安全性を高め、その上でそのスタッフのアカウント の暗号化パスワードを `*` にしておくものです。 vipw(8) コマンドを使えば、暗号化されたパスワードを `*` 一文字に置き換えられます。このコマンドは、 `/etc/master.passwd` ファイルとユーザ/パス ワードデータベースを更新して、パスワード認証によるログインがで きないようにします。

たとえば、次のスタッフアカウントを、

    foobar:R9DT/Fa1/LV9U:1000:1000::0:0:Foo Bar:/home/foobar:/usr/local/bin/tcsh

こう変更します。

    foobar:*:1000:1000::0:0:Foo Bar:/home/foobar:/usr/local/bin/tcsh

暗号化されたパスワードは `*` と一致するこ とがないので、この変更によって通常のログインはできなくなります。 こうした後は、スタッフメンバは認証のために kerberos(1) や 公開鍵 / 秘密鍵の組を用いる ssh(1) のような代わりとなる認 証手段を利用しなければなりません。 Kerberos のようなログイン機構を使う場合は、一般に kerberos サー バを実行するマシンと自分のデスクトップワークステーションの安全 性を確保しなければなりません。 また ssh で公開鍵 / 秘密鍵の組を使う場合、 一般に、ログイン元マシン (通常は自分のワー クステーション) の安全性を確保しなければなりません。ここで、 ssh-keygen(1) で公開鍵 / 秘密鍵の組を生成する際、鍵の組 をパスワードで防御することにより、鍵の組への防御層を追加するこ ともできます。スタッフアカウントのパスワードを `*` でつぶすことができると、管理者自身が設定 した安全性の高い方法でしかスタッフメンバがログインできないこと も保証できます。こうして、多くの侵入者が使う重大なセキュリティ の穴、すなわち、安全性の低い無関係なマシンからネットワークを覗 き見る方法、を塞ぐようなセッションを提供する、安全性の高い暗号 化されたコネクションを使うことを、スタッフメンバ全員に強制する ことができるのです。

より間接的なセキュリティの仕組みでは、制限の強いサーバから 制限の弱いサーバへログインすることを前提としています。たとえば、 メインマシンで、様々な種類のサーバを実行させている場合、ワーク ステーションではそれらのサーバを実行させてはなりません。ワーク ステーションを十分に安全にしておくためには、実行するサーバの数 を、一つもサーバが実行されていないというくらいにまでできる限り 減らすべきです。また、パスワードで保護されたスクリーンセーバを 走らせておくべきです。ワークステーションへの物理的アクセスが与 えられたとすると、もちろん言うまでもなく、攻撃者は管理者が設定 したいかなる種類のセキュリティをもうち破ることができるのです。 このことは、管理者として必ず考えておかねばならない問題ですが、 システム破りの大多数は、ネットワーク経由でリモートから、ワーク ステーションやサーバへの物理的アクセス手段を持たない人々によっ て行われるという事実もまた、念頭に置いておく必要があります。

Kerberos のような方法を使うことで、 スタッフアカウントのパ スワードの変更もしくは停止を一箇所で行なうことと、スタッフメン バがアカウントを持つすべてのマシンに即時にその効果を及ぼすこと が可能となります。スタッフメンバのアカウントが危険に晒されたと きに、すべてのマシンでスタッフメンバのパスワードを即座に変更す る能力を過小評価してはいけません。パスワードが分散されている状 況では、N 台のマシンでパスワードを変更すると、てんやわんやの事 態を招く可能性があります。kerberos を使用すると、パスワードの 再発行に制限 (re-passwording restriction) を課することもできま す。この機能を使うことにより、ある kerberos チケットをしばらく 経つとタイムアウトにすることができるだけでなく、一定期間 ( 例 えば、1 ヶ月に 1 回) 経つと、ユーザに新しいパスワードを選ぶよ うに要求することもできます。

### 14.3.2. root 権限で実行されているサーバと SUID/SGID バイナリの安全性を高める

用心深いシステム管理者は、自分に必要なサーバプロセスだけを 過不足なく実行させるものです。サードパーティ製のサーバは、よくバグを持っ ていがちだということに注意して下さい。たとえば、古いバージョンの imapd や popper を実行させておくのは、全世界に万能の root の切符を与えているようなものです。自分で注意深くチェックしていない サーバは、決して実行してはいけません。root で実行させる必要の あるサーバはほとんどありません。たとえば、 ntalk, comsat, finger デーモンを、専用ユーザの `砂場 (sandbox)` で実行させることができます。 管理者が膨大な数の問題に直面していないのなら、この「砂場」は完 璧ではありませんが、セキュリティに関するタマネギ的アプローチは ここでも成り立ちます。砂場で実行されているサーバプロセスを経由 して侵入を果たすことができたとしても、攻撃者はさらに砂場から外 に脱出しなければなりません。攻撃者が通過せねばならない層の数が 増えれば増えるほど、それだけ攻撃者が侵入に成功する確率が減りま す。root の抜け穴は歴史的に、基本システムサーバも含め、root 権 限で実行されるほとんどすべてのサーバプロセスで発見されています。 ユーザが sshd 経由でのみログインし、 telnetd, rshd, rlogind 経由でログインすることが決 してないマシンを稼働させているのであれば、それらのサービスを停 止させて下さい!

FreeBSD では、今では ntalkd, comsat, finger は砂場で実行させることがデフォ ルトになっています。次に砂場で実行させるべきプログラムの候補と して、named(8) があります。 `/etc/defaults/rc.conf` ファイルには、 named を砂場で実行するために必要な 引数がコメントアウトされた形式で含まれています。新しいシステム をインストールしているか、それとも既存のシステムをアップグレー ドして使っているかに依存しますが、砂場として使用する特別のユー ザアカウントがインストールされていないかもしれません。用心深い システム管理者であれば、できるだけいつでも研究を怠らず、サーバ に砂場を仕込むものでしょう。

通常、砂場で実行しないサーバが他にいくつかあります。 sendmail, popper, imapd, ftpd などです。これらのうちいくつか のサーバには代わりとなるものがありますが、代わりのものをインス トールするには、あなたが思うより多くの仕事が必要になるかもしれ ません (便利さという要素がまたも勝利を収めるわけです)。これら のサーバは、root 権限で実行せねばならないかもしれません。また、 これらのサーバ経由で生じる侵入を検出するためには、他の仕組みに 頼らなくてはならないかもしれません。

システムの root 権限の潜在的な穴で他に大きなものとして、シ ステムにインストールされた suid-root/sgid バイナリがあります。 これらのバイナリは、rlogin のように、 `/bin`, `/sbin`, `/usr/bin`, `/usr/sbin` に存在するものがほとんどです。100% 安全なものは存在しないとは いえ、システムデフォルトの siud/sgid バイナリは比較的安全とい えます。それでもなお、root の穴がこれらのバイナリにときおり発 見されています。1998 年に `Xlib` で見つかった root の穴は、xterm (普通、suid 設定 されています)を脆弱にしてしまいました。安全である方がよいので、 用心深いシステム管理者は残念に思いながらも、スタッフのみが実行 する必要がある suid バイナリは、スタッフのみがアクセス可能な特 別なグループに含めるように制限を加え、誰も使わない suid バイナ リは (`chmod 000` を実行して) 片付けてしまう でしょう。ディスプレイを持たないサーバは、一般的に xterm のバイナリを必要としません。 sgid バイナリもほとんど同様の危険な存在になり得ます。侵入者が kmem に sgid されたバイナリを破ることができた場合、その侵入者 は `/dev/kmem` を読み出すことができるように なるでしょう。つまり、暗号化されたパスワードファイルを読み出す ことができるようになるので、パスワードを持つどのアカウントをも、 潜在的な危険に晒すことになります。他にも、 `kmem` グループを破った侵入者が pty を通して 送られたキーストロークを監視できるという危険があります。キース トロークには、安全な方法でログインするユーザが使っている pty も含まれます。 `tty` グループを破った侵入者は、ほぼ任意のユーザの tty へ書き込みができます。ユーザが端末プログラムやキーボードを シミュレーションする機能を持ったエミュレータを使っている場合、 侵入者は潜在的に、結局そのユーザとして実行されるコマンドをユー ザの端末にエコーさせるデータストリームを生成できる可能性があり ます。

### 14.3.3. ユーザアカウントの安全性を高める

ユーザアカウントは、普通、安全性を高めることが最も困難です。 スタッフに対しては、とても厳格なアクセス制限を強制しパスワード を `*` で外すことができるでしょうが、管理者が 持ちうる一般ユーザすべてのアカウントに対して同じことはできない かもしれません。管理者が十分に統率をとることができるなら、管理 者は勝利し、ユーザのアカウントの安全を適切に確保できるかもしれ ません。それができないならば、よりいっそう気を配って一般ユーザ のアカウントを監視するよりほかありません。一般ユーザアカウント に対し ssh や kerberos を利用するこ とには、システム管理がさらに増えたりテクニカルサポートが必要に なるなどの問題があります。それでも、暗号化パスワードファイルと 比較するとはるかに良い解です。

### 14.3.4. パスワードファイルの安全性を高める

できるだけ多くのパスワードを `*` で外し、 それらのアカウントのアクセスには ssh や kerberos を使うようにするこ とが、唯一の確実な方法です。暗号化パスワードファイル (`/etc/spwd.db`) は root でのみ読み出し可能 だといっても、侵入者が root の書き込み権限は得られなくとも、読 み出しアクセス権限を得ることは可能かもしれません。

セキュリティスクリプトで常にパスワードファイルの変更をチェッ クし、報告するようにすべきです (ファイルの完全性のチェック 参照)。

### 14.3.5. カーネルのコア、raw デバイス、ファイルシステムの安全性を 高める

root の権限を破ると、攻撃者は何でもできますが、特に重宝さ れる特定の事柄もいくつかあります。たとえば、最近のカーネルは、組 み込みのパケット覗き見デバイス (packet sniffing device) ドライ バを備えているものがほとんどです。FreeBSD では `bpf` デバイスと呼ばれています。侵入者 は普通、侵入済みのマシンでパケット覗き見プログラムを実行させよ うと試みます。侵入者にわざわざそういう機能を提供する必要はない ので、ほとんどのシステムで `bpf` デバイスを組み込むべきではありません。

`bpf` デバイスを外しても、 `/dev/mem` と `/dev/kmem` という悩みの種がまだ残っています。この問題に関しては、侵入者は raw ディスクデバイスに書き込 むこともできます。また、モジュールローダ、kldload(8) とい う、別のカーネル機能があります。やる気まんまんの侵入者は、KLD モジュールを使って自分独自の `bpf` もしくはその他覗き見デバイス を動作中のカーネルにインストールすることができます。この問題を 避けるため、システム管理者はカーネルをより高い安全レベル ( securelevel)、少なくとも安全レベル 1 で実行させる必要がありま す。`sysctl` を使って `kern.securelevel` 変数に安全レベルを設定する ことができます。ひとたび安全レベルに 1 を設定すると、raw デバ イスに対する書き込みアクセスは拒否され、たとえば `schg` のような特別な `chflags` フラグの機能が 強制されます。システム起動に関わる重要なバイナリやディレクトリ、 スクリプトファイルなど、安全レベルが設定されるまでの間に実行さ れるすべてのものに対しても `schg` フラグを on にしておくことも確実に実行してください。この設定をやり過ぎても 構いませんが、より高い安全レベルで動作している場合、システムの アップグレードがはるかに困難になります。システムをより高い安全 レベルで実行させるようにするが、すべてのシステムファイルとディ レクトリに `schg` フラグを設定しないという妥 協をする方法もあります。もう一つの可能性としては、単純に `/` および `/usr` を読み 込み専用でマウントすることです。ここで特筆すべきことは、システ ムを守ろうとして厳しくしすぎると、侵入を検出するという非常に重 要なことができなくなってしまうということです。

### 14.3.6. ファイルの完全性のチェック: バイナリ、設定ファイルなど

ことこの問題に至ると、システム管理者にできることは、便利さ という要素がその醜い頭を上げない程度に、コアシステムの設定と制 御ファイルを防御することだけです。たとえば、 `/` および `/usr` にある 大部分のファイルに `schg` ビットを設定するた めに `chflags` を使用するのは、おそらく逆効果 でしょう。なぜなら、そうすることでファイルは保護できますが、侵 入を検出する窓を閉ざしてしまうことにもなるからです。セキュリティ のタマネギの最後の層はおそらく最も重要なもの - 検出で す。セキュリティの残りのものは、突然の侵入を検出できなければ、 まったく有用ではありません (あるいは、もっと悪ければ、安全性に 対する間違った感覚を植え付けてしまいます)。タマネギの仕事の半 分は、もう半分の検出側が攻撃者を攻撃の最中に捕えるようにするた めに、攻撃者を食い止めるのではなく侵入を遅らせることなのです。

侵入を検出する最も良い方法は、変更されていたり、消えていた り、入れた覚えがないのに入っているファイルを探すことです。変更 されたファイルを探すのに最も良い方法は、もう一つの (しばしば中 央に集められた)、アクセスが制限されたシステムから行なうもので す。さらに安全でアクセス制限されたシステム上でセキュリティ用ス クリプトを書けば、 スクリプトは潜在的な攻撃者からはほぼ見えなくなります。 これは重要なことです。この有効性を最大限に活用 するためには、一般的に、アクセスの制限されたマシンから実際に使っ ている他のマシンへのかなりのアクセスを許す必要があります。普 通は、他のマシンからアクセス制限されたマシンへ読み込み専用の NFS エクスポートをしたり、アクセス制限されたマシンから他のマシ ンへ ssh を行なうために、 ssh 鍵のペアを作ったりすることで行 います。ネットワークのトラフィックを別にして、NFS は最も可視性 のない方法です - 各クライアント上のファイルシステムを、 事実上検出されずに監視できるようになります。アクセス制限された サーバがスイッチを通してクライアントに接続されている場合、たい てい NFS がより良い選択肢です。アクセス制限されたサーバがハブ を通したり、いくつかのルーティング層を通したりしてクライアント に接続する場合、 NFS は (ネットワークの面で) あまりにも危険な方法かもしれず、 ssh の方が認証を行った跡は残りますが、 より良い方法でしょう。

アクセス制限されたマシンに、監視しようとするクライアントシ ステムへの少なくとも読み込みのアクセス権を与えたら、次に実際に 監視するためのスクリプトを書かなくてはいけません。NFS マウント をすれば、find(1) や md5(1) などの単純なシステムユー ティリティでスクリプトを書くことができます。少なくとも 1 日 1 回、クライアントのファイルを直接 md5 にかけ、さらにもっと頻繁 に `/etc` および `/usr/local/etc` にあるようなコントロール用 ファイルを試験するのが一番です。アクセス制限されたマシンが正し いと知っている、基となる md5 情報と比べて違いが見つかった場合、 システム管理者に調べて欲しいと悲鳴を上げるようにすべきです。優 れたセキュリティ用スクリプトは、`/` および `/usr` などのシステムパーティション上で不適 当に suid されたバイナリや、新たに作成されたファイルや削除され たファイルもチェックするでしょう。

NFS ではなく、ssh を使用する場 合は、セキュリティ用スクリプトを書くのはずっと難しいことで す。スクリプトを動かすためには、クライアントに対してスクリプト を `scp` しなくてはいけませんし、それは目に見 えてしまいます。そして、安全のためには、スクリプトが使うバイナ リ (find など) を `scp` する必要もあります。 クライアントの ssh デーモンはすでに 攻撃されてしまっているかもしれません。結局のところ、安全でない リンク上の場合は ssh は必要かもしれ ませんが、ssh を扱うのはとても大変 なことです。

優れたセキュリティ用スクリプトは、ユーザやスタッフメンバの アクセス設定ファイルの変更もチェックするものです。 `.rhosts`, `.shosts`, `.ssh/authorized_keys` など ... `MD5` チェックの範囲外になってしまうであろう ファイル群です。

ユーザ用のディスク容量が非常に大きい場合は、パーティション 上の各ファイルを見て回るのに大変な時間がかかるかもしれません。 この場合は、マウントフラグを設定して、このパーティションに suid されたバイナリやデバイスを置けないようにするのが良い考え です。`nodev` および `nosuid` オプション (mount(8) 参照) が知るべきものでしょう。 とにかく少なくとも週に 1 度はファイルシステムをスキャンするべきです。 なぜなら、この層の目的は、侵入が成功したかどうかに関わらず、侵 入があったことの検出をすることだからです。

プロセスアカウンティング (accton(8) 参照) は、 マシンへの侵入を検出するためのメカニズムとして推奨できる、 比較的オーバヘッドの少ないオペレーティングシステムの機能です。 侵入を受けた後でも当該ファイルが無傷である場合に、侵入者が 実際にどのようにしてシステムに侵入したかを追跡するのに特に役立ちます。

最後に、セキュリティスクリプトはログファイルを処理するよう にし、ログファイル自体もできるだけ安全性の高い方法で生成するよ うにすべきです - リモート syslog は極めて有益になり得ま す。侵入者は自分の侵入の痕跡を覆い隠そうとしますし、また、ログ ファイルはシステム管理者が最初の侵入の時刻と方法を追跡してゆく ために極めて重要です。ログファイルを永久に残しておくための 1 つの方法は、システムコンソールをシリアルポートにつないで走らせ、 コンソールを監視している安全なマシンを通して絶えず情報を集める ことです。

### 14.3.7. 偏執狂的方法

多少偏執狂的になっても決して悪いことにはなりません。原則的 に、システム管理者は、便利さに影響を与えない範囲でいくつでもセ キュリティ機能を追加することができます。 また、いくらか考慮した結果、 便利さに影響を与えるセキュリティ機能を追加することもできます。 より重要なことは、 セキュリティ管理者はこれを多少混ぜこぜにして使うべきだということです。 - もしあなたが、本文書に書かれている勧告をそのまま使用した場合は、 予想される攻撃者はやはり本文書を読んでいるわけですから、 あなたの防御策を教えてしまうことになります。

### 14.3.8. サービス妨害攻撃

このセクションではサービス妨害攻撃 (DoS 攻撃) を扱います。 サービス妨害攻撃は、普通は、パケット攻撃です。ネットワークを飽 和させる最先端の偽造パケット (spoofed packet) 攻撃に対してシス テム管理者が打てる手はそれほど多くありませんが、一般的に、その 種の攻撃によってサーバがダウンしないことを確実にすることで、被 害をある限度に食い止めることはできます。

1. サーバの fork の制限。

2. 踏み台攻撃の制限 (ICMP 応答攻撃、ping broadcast など)。

3. カーネルの経路情報のキャッシュ。

よくあるサービス妨害攻撃は、fork するサーバプロセスに対す るものです。これは、サーバにプロセス、ファイル記述子、メモリを マシンが死ぬまで食い尽くさせようとするものです。 inetd (inetd(8) 参照) には、この種の攻撃を制限するオプションが いくつかあります。マシンがダウンすることを防止することは可能で すが、この種の攻撃によりサービスが中断することを防止することは 一般的に言ってできないことに注意する必要があります。 inetd のマニュアルページを注意深く読んで下さい。特に、 `-c`, `-C`, `-R` オプションに注意して下さい。IP 偽造攻撃 (spoofed-IP attack) は inetd の `-C` オプションの裏をかけるので、 一般にオプションを組み合わせて使用するべきであることに注意して下さ い。スタンドアロンサーバの中には、自分自身で fork を制限するパ ラメータを持っているものがあります。

Sendmail には、 `-OMaxDaemonChildren` オプションがあります。シ ステム負荷の値変化には遅れがあるので、sendmail の負荷限界指定 オプションを使うよりも、このオプションを使う方がまともに動作す る可能性ははるかに高いです。 sendmail の実行を開始する際に、 `MaxDaemonChildren` パラメータを設定するべき です。その値は、通常見込まれる負荷を扱える程度に十分高いが、そ れだけの数の sendmail を操作しよう とするとマシンが卒倒してしまうほどには高くないような値に設定す るべきです。sendmail をキュー処理モード (`-ODeliveryMode=queued`) で実行することや、 sendmail デーモン (`sendmail -bd`) をキュー処 理用プロセス (`sendmail -q15m`) と別に実行す ることも、用心深いことと言えます。それでもなおリアルタイムでの 配送を望むのであれば、`-q1m` のようにすることで、 キュー処理をはるかに短い時間間隔で行うことができます。いずれに しても、`MaxDaemonChildren` オプションに合理 的な値を確実に指定して、sendmail がなだれをうって失敗すること がないようにして下さい。

syslogd は直接攻撃される可能性 があるので、可能ならばいつでも `-s` オプション を用いることを強く推奨します。これができないなら、 `-a` オプションを使って下さい。

tcpwrapper の逆 identd などの接 続返し (connect-back) を行うサービスについては十分注意を払うよ うにするべきです。これらは直接攻撃を受ける可能性があります。こ ういう事情があるので、tcpwrapper の 逆 ident 機能を使おうとは思わないのが一般的です。

境界ルータのところでファイアウォールを設けて、外部からのア クセスに対して内部サービスを防御するという考えは実によいもので す。この考えは、LAN の外部からの飽和攻撃を防ぐことにあり、内部 サービスをネットワークベースの root 権限への攻撃から防御するこ とにはあまり考慮を払っていません。ファイアウォールは常に排他的 に設定して下さい。つまり、“ポート A, B, C, D と M から Z まで以外 のすべてにファイアウォールを設ける” というふうにです。このようにすることで、 named (ゾーンのプライマリである場合)、 ntalkd, sendmail などのインターネットからア クセスできるサービスとして特に指定するもの以外の、小さい番号の ポートすべてをファイアウォールで防御することができます。ファイ アウォールをこの他のやり方 - つまり包含的もしくは受容的 なファイアウォールとして設定しようとする場合、 “close” することを忘れてしまうサービスがいくつか 出てきたり、新しい内部サービスを追加したのにファイアウォールの 更新を忘れたりする可能性がよく出てきます。ファイアウォール上の 大きい番号のポートを開けておくことにより、小さい番号のポートを 危険に晒すことなく受容的な動作を許すことができます。FreeBSD で は、`net.inet.ip.portrange` への `sysctl` (`sysctl -a | fgrep portrange`) をいろいろ使用することで、動的バインドに使用される ポート番号の範囲を制御できることを記憶にとどめておいてください。 これによりファイアウォールの設定を簡略化することもできます。 たとえば、通常の first/last 範囲として 4000 から 5000 を、 高位ポートの範囲として、49152 から 65535 を指定し、 (いくつかのインターネットアクセス可能 なポートをブロックから除外するのはもちろんですが) 4000 より下のすべてのポートをブロックするという設定が考えられます。

また別のよくあるサービス妨害攻撃として、踏み台攻撃 (springboard attack) と呼ばれるものがあります - これは、 あるサーバを攻撃し、そこ結果として生成される応答が自分自身、ロー カルネットワーク、そして他のマシンを過負荷に追い込むようにする 攻撃です。この種の攻撃の中で最もありふれたものに、 ICMP ping broadcast 攻撃があります。攻撃 者は、実際に攻撃したいマシンのアドレスを送信元アドレスに設定し た ping パケットを偽造して、対象の LAN のブロードキャストアド レスに向けてパケットを送信します。境界にあるルータがブロードキャ ストアドレスに対する ping パケットを握り潰すように設定されてい ない場合、LAN は、詐称された送信元アドレスに向けて応答パケット を生成するはめになり、犠牲となるマシンが飽和するところまで行っ てしまいます。攻撃者が同じトリックを異なるネットワーク上のいく つものブロードキャストアドレスに対して同時に使用した場合、とく にひどいことになります。これまでに、120 メガビット以上のブロー ドキャスト攻撃が観測されています。2 番目の踏み台攻撃は、ICMP エラー報告の仕掛けを狙うものです。攻撃者は ICMP エラー応答を生 成するパケットを生成し、サーバの受信ネットワークを飽和させ、そ の結果としてサーバが送信ネットワークを ICMP 応答で飽和させてし まうようにすることができます。mbuf を消費し尽くさせることによ り、この種の攻撃でサーバをクラッシュさせることも可能です。サー バが生成した ICMP 応答を十分速く送信できない場合、とくにひどい ことになります。FreeBSD カーネルには、この種の攻撃の効果を抑制 する `ICMP_BANDLIM` と呼ばれる新しいカーネルコンパイルオプション があります。踏み台攻撃の 3 つめの主要なクラスに属する攻撃は、 udp echo サービスのような、特定の inetd 内部サービスに関連する ものです。攻撃者は、単に送信元アドレスがサーバ A の echo ポー トであり、送信先アドレスがサーバ B の echo ポートであるように UDP パケットを偽造します。ここでサーバ A, B はともにあなたの LAN に接続されています。この 2 つのサーバは、この一つのパケッ トを両者の間で互いに相手に対して打ち返しあいます。このようにし てパケットをほんのいくつか注入するだけで、攻撃者は両方のサーバ と LAN を過負荷状態にすることができます。同様の問題が内部 chargen ポートにも存在します。 有能なシステム管理者はこの手の inetd 内部テストサービスのすべてを無効にしておくものです。

偽造パケット攻撃は、カーネルの経路情報キャッシュに過負荷を 生じさせるために用いられることもあります。 `net.inet.ip.rtexpire`, `rtminexpire`, `rtmaxcache` の `sysctl` パラメータを参照して下さい。でた らめな送信元 IP アドレスを用いた偽造パケット攻撃により、カーネ ルは、一時的なキャッシュ経路を経路情報テーブルに生成します。こ れは `netstat -rna | fgrep W3` で見ることがで きます。これらの経路は、普通は 1600 秒程度でタイムアウトになり ます。カーネルがキャッシュ経路テーブルが大きくなり過ぎたことを 検知すると、カーネルは動的に `rtexpire` を減らしますが、`rtminexpire` より小さくなるようには決して減らしません。ここに問題が 2 つあります。

1. 負荷の軽いサーバが突然攻撃された場合、カーネルが十分素 早く反応できないこと。

2. カーネルが持続的攻撃に耐えられるほど十分 `rtminexpire` が低く設定されていないこと。

自分のサーバが T3 もしくはそれより高速の回線でインターネッ トに接続されている場合、sysctl(8) を用いて `rtexpire` と `rtminexpire` とを手動で上書きしておくことが思慮深いことといえます。どちらか 一方でも 0 には決してしないで下さい (自分のマシンをクラッシュ させたくないのであれば)。両パラメータを 2 秒 に設定すれば、攻撃から経路情報テーブルを守るには十分でしょう。

### 14.3.9. Kerberos および SSH を用いたアクセスの問題

もしあなたが、kerberos および ssh を使用したいのだとしたら、両者 に関して言っておく必要のある問題がいくつかあります。kerberos V は大変優れた認証プロトコルですが、kerberos 化された telnet や rlogin は、バイナリストリームを扱う のに不向きになってしまうようなバグがあります。さらに、デフォル トでは、kerberos は `-x` オプションを使わない限 りセッションを暗号化してくれません。 ssh では、デフォルトですべてを暗号 化してくれます。

ssh はあらゆる場面でとても良く 働いてくれます。ただし、デフォルトで暗号鍵を転送してしまうこと を除けばです。これはつまり、暗号鍵を持った安全なワークステーショ ンがあって、この暗号鍵で残りのシステムとアクセスできるようになっ ている場合に、安全でないマシンへ ssh を行なう時に暗号鍵が見えてしま うということです。実際の鍵そのものが見えてしまうわけではありま せんが、ssh は、あなたが login している間、転送用ポートを作ります。攻撃者が安全でないマシンの root を破ったら、このポートを使って暗号鍵を取得し、 この暗号鍵でロックが外れる他のマシンへのアクセスを得てしまいます。

スタッフのログインには、kerberos を組み合せた ssh を使用することを勧めます。 ssh は、kerberos サポート機能と一緒 にコンパイルできます。こうすると、見えてしまうかもしれない ssh 鍵をあまりあてにしないで良いよ うになります。また、それと同時に、kerberos 経由でパスワードを 保護することもできます。ssh 鍵は、 安全なマシンからの自動化されたタスク (kerberos はこの用途には 不向きです) のみに使用するべきです。また、 ssh の設定で鍵転送をしないようにす るか、あるいは、ssh が `authorized_keys` ファイル中に書くことを許 している `from=IP/DOMAIN` オプションを使用し て、特定のマシンからログインしてきたときのみ鍵が有効であるよう にすることも勧めます。

## 14.4. DES, MD5 と Crypt

改訂: Bill Swingle.

訳: 花井 浩之 `<hanai@FreeBSD.org>`, 12 September 1996.

訳改訂: 日野 浩志 `<hino@ccm.cl.nec.co.jp>`, 12 March 2001.

Unix システムにおけるすべてのユーザは、そのアカウントに対応し た一つのパスワードを持っています。それらのパスワードはユーザ本人 と本当のオペレーティングシステムのみが知っているべきであるという ことは明らかでしょう。それらのパスワードを秘密に保っておくために、 パスワードは“一方向ハッシュ”として知られる方式で暗 号化されます。一方向ハッシュとは、簡単に暗号化はできるが解読は難 しいという方法です。言葉を換えると、先ほど明らかであると書いたの は実は正しくないのです: オペレーティングシステム自身は本当はパスワードを知らないのです。その代わりに 暗号化された形でのみパスワードを知っていま す。“素のテキスト”としてパスワードを得る唯一の方法は、 可能な限りのパスワード空間を検索するという力任せの方法です。

不幸なことに、Unix が生まれようとしているときにパスワードを 安全な形で暗号化できる方式は DES (Data Encryption Standard) に基づいたものだけでした。このことは米国に住んでいるユーザにとって は大して問題ではありませんでしたが、DES のソースコードを米国外に 輸出することはできないという問題がありました。そのために、 FreeBSD は、米国の法律を守ることと、未だに DES を使っていた他の Unix 一族との互換性を保つこととを両立する方法を探し出す必要がありました。

その解決方法は、米国のユーザは DES のライブラリをインストー ルして DES を使用できるが、米国外のユーザは国外に輸出可能な他の ひとつの暗号化方式を使用することができる、というように暗号化ライ ブラリを分割することでした。これが FreeBSD がデフォルトの暗号化 方式として MD5 を使うようになったいきさつです。MD5 は DES よりも より安全であると考えられているため、DES をインストールする一番の 理由は互換性を保つためといえます。

### 14.4.1. 暗号化機構を理解する

FreeBSD がどの暗号化方式を使うようにセットアップされている かを判断するのは簡単です。 `/etc/master.passwd` ファイルの中の暗号化さ れたパスワードを調べてみるのが一つの方法です。MD5 ハッシュで暗 号化されたパスワードは、DES ハッシュで暗号化されたパスワードよ りも長く、`$1$` という文字で始まるという特徴を持っています。 DES のパスワードはこ れといって識別可能な特徴は持っていませんが、MD5 のパスワードよ りは短く、そして `$` という文字を含ま ない 64 文字のアルファベットを使って表現されているので、比較的 短い文字列でドル記号で始まっていないものはおそらく DES のパス ワードでしょう。

同様の方法で、ライブラリはパスワードを識別します。結果とし て、DES のライブラリは MD5 パスワードを識別でき、そして MD5 を 使って MD5 で暗号化されたパスワードをチェックし、その他のパス ワードには DES を使ってチェックします。DES のライブラリは MD5 も含んでいるのでこのようなことが可能なのです。残念なことに、反 対は真ではありません。MD5 のライブラリは DES で暗号化されたパ スワードを認証することができません。

あなたのシステムでプログラムがどちらのライブラリを使ってい るかを調べるのは非常に簡単です。crypt を使うプログラムは libcrypt をリンクしています。そしてそれぞれのライブラリに対す る適切な実装へのシンボリックリンクとなってい ます。たとえば、DES 版を使っているようなシステムにおいては次のようになっています:

    % ls -l /usr/lib/libcrypt*
    lrwxr-xr-x  1 root  wheel  13 Mar 19 06:56 libcrypt.a -> libdescrypt.a
    lrwxr-xr-x  1 root  wheel  18 Mar 19 06:56 libcrypt.so.2.0 -> libdescrypt.so.2.0
    lrwxr-xr-x  1 root  wheel  15 Mar 19 06:56 libcrypt_p.a -> libdescrypt_p.a

MD5 に基づいたライブラリを使っているシステムにおいては、同 じようなリンクが 見られるでしょうが、そのターゲットは `libdescrypt` ではなく `libscrypt` になっているでしょう。

もし DES 機能を持った crypt ライブラリ `libdescrypt` をインストールしたのなら (つ まり "crypt" ディストリビューションをインストールした場合)、新 規パスワードがどちらのパスワード形式になるかは、 `/etc/login.conf` の中の “passwd_format” ログインケーパビリティによって制 御されます。その値としては、“des” または “md5” を設定することができます。ログインケーパビ リティに関するより詳細な情報は、login.conf(5) マニュアルページ をご覧ください。

## 14.5. S/Key

S/Key は一方向ハッシュ関数を基にしたワンタイムパスワード方式 です。FreeBSD では、互換性のために MD4 ハッシュを用いていますが 他のシステムでは MD5 や DES-MAC を用いてます。S/Key は、バージョ ン1.1.5 以降のすべての FreeBSD に含まれていますし、FreeBSD 以外 の数多くのシステムの上でも利用されています。S/Key は Bell Communications Research, Inc. の登録商標です。

以下の説明では、三種類の異なる「パスワード」が使われます。 まず一つ目は、あなたが普段使っている普通の Unix スタイルの、もしくは Kerberos のパスワードです。ここではこれを “Unix パスワード” と呼ぶことにします。二つ目は、S/Key の `key` プログラムによって生成され、 `keyinit` プログラムとログインプロンプトが受け 付けるパスワードです。ここではこれを“ワンタイムパスワード ”と呼ぶことにします。三つ目のパスワードは、 `key` (と場合により `keyinit`) プログラムに対してユーザが入力する秘密のパスワードで、ワンタイム パスワードを生成するのに使われます。ここではこれを“秘密の パスフレーズ”もしくは単に ``パスフレーズ'' と呼 ぶことにします。(訳注: ユーザが頭の中だけにしまっておくべきもの が、この秘密のパスフレーズです。なお、原文ではこれをパスワードと 表記していますが、混乱を避けるために訳文ではすべて“ 秘密の パスフレーズ”に統一しています)。

秘密のパスフレーズは、Unix パスワードと何の関連性もありません。 両者を同一に設定することは可能ですが、お奨めしません。Unix パスワードは長さが 8 文字に制限されています (訳注: FreeBSD で DES を導入していない場合はもっと長いパスワードも認識されます)。 これに対し、S/Key では秘密のパスフレーズを好きなだけ長くすること ができます (訳注: 実装上、`key` コマンドなどの バッファ長で制限されてしまう可能性があります。200 文字程度に押 えておいた方がよいでしょう :-)。 6 語から 7 語からなるパスフレーズがふつうです。ほとんどの部分で、 S/Key システムは Unix のパスワードシステムと完全に独立して動作するようになっています。

パスフレーズに加え、S/Key システムにとって重要な二種類のデー タがあります。一つは“シード (seed: 種)”または “キー (key: 鍵)”と呼ばれるもので、二つの文字と五つ の数字で構成されます。もう一つは“シーケンス番号 (iteration count)” で、1 から 100 までの整数です。S/Key はここまで に述べたデータを利用してワンタイムパスワードを生成します。その方 法は、まずシードと秘密のパスフレーズを連結し、それに対してシーケ ンス番号の回数だけ MD4 ハッシュを繰り返し計算します。そしてその 結果を 六つの短い英単語に変換します。`login` プ ログラムと `su` プログラムは、前回最後に受け付 けられたワンタイムパスワードを記録しています。そして、その前回 のワンタイムパスワードと、ユーザが入力したワンタイムパスワードを 一回ハッシュ関数にかけた結果とが一致した場合に、このユーザは認証 されます。一方向ハッシュ関数を使っているので、もし正しく認証され たワンタイムパスワードが一回盗聴されたとしても、次回以降に使われ る複数のワンタイムパスワードを生成することは不可能です。シーケ ンス番号はログインが成功するたびに一つずつ減らされて、ユーザとロ グインプログラムの間で同期が取られます。シーケンス番号が 1 まで 減ったら、S/Key を再度初期化する必要があります。

次に、S/Key 関連の四つのプログラムについて説明します。 `key` プログラムは、シーケンス番号一つと、シー ド一つと、秘密のパスフレーズ一つとを受け付けて、ワンタイムパスワー ドを一つ生成します。`keyinit` プログラムは、 S/Key を初期化するのに使用され、また秘密のパスフレーズやシーケン ス番号やシードを変更するためにも使用されます。このプログラムを実 行するには、秘密のパスフレーズか、または、シーケンス番号とシード とワンタイムパスワードの一組かの、どちらかが必要になります。 `keyinfo` プログラムは、 `/etc/skeykeys` というファイルを調べて、この プログラムを起動したユーザの現在のシーケンス番号とシードを表示し ます。最後に、`login` と `su` プログラムについてですが、これらは S/Key のワンタイムパスワード を、(訳注:システムが) ユーザを認証するものとして受理するのに必要 な処理をおこないます。`login` プログラムは、指定された特定のアドレスからの接続に対して、Unix パスワードの使用 を認めなくする機能、逆に言えば S/Key の利用を強制する機能も持っ ています。

この文書では、四種類の異なる操作について説明します。 一つ目は、`keyinit` プログラムを信頼できる通信 路上で利用する場合で、一番始めに S/Key を設定する操作や、使い始 めたあとで秘密のパスフレーズやシードを変更する操作です。二つ目は、 `keyinit` プログラムを信頼できない通信路上で利 用する場合で、操作の目的は一つ目と同じです。この場合には `key` プログラムを併用する必要があります。三つ 目は、`key` プログラムを使い、信頼できない通信 路を通じてログインする操作です。四番目は、`key` プログラムを使って、複数のワンタイムパスワードを一気に生成する操 作です。ここで生成した複数のワンタイムパスワードは、メモしたり 印刷したりして携帯し、信頼できる通信路が一切ないところで利用する ことができます。(訳注: ワンタイムパスワードを記録した紙をなくさ ないこと! 電話番号やIPアドレス、ユーザ名を一緒にメモしていたら 最悪です!!)

### 14.5.1. 信頼できる通信路での初期化

信頼できる通信路 (たとえばあるマシンのコンソール画面や、ssh を使っている時など) を利用しているときに、S/Key を初めて初期化 すること、S/Key の秘密のパスフレーズを変更すること、またはシー ドを変更すること、をおこなうことができます。そのためには、まず あなた自身がログインし、`keyinit` コマンドを 以下のようにパラメータなしで実行します。

    % keyinit
    Adding unfurl:
    Reminder - Only use this method if you are directly connected.
    If you are using telnet or rlogin exit with no password and use keyinit -s.
            ) `keyinit' コマンドが出力する注意です。訳すと、
            ) 注意 - この動作モードはマシンに直接入力しているときのみ利用
            ) すること。もし今 telnet や rlogin を使っているなら、秘密のパ
            ) スフレーズを入力せずにこのままコマンドを終了し、かわりに
            ) keyinit -s を実行すること。
    Enter secret password:
    Again secret password:

    ID unfurl s/key is 99 to17757
    DEFY CLUB PRO NASH LACE SOFT

`Enter secret password:` というプロンプトに 対してあなたが考えた秘密のパスフレーズを入力します。このパスフ レーズはログインするときに使うものではなく、ログインするときに 使うワンタイムパスワードを生成するために使うものであることを覚 えておいてください。“ID” から始まる行は、S/Key に おける一回分のパラメータであり、あなたのログイン名とシーケンス番 号とシードです。(訳注: ``keyinit`' コマンドは 次回にログインするときに使えるパラメータを参考のためにここで表示 します)。S/Key を使ってログインするときには、システム側が自動 的にこれらのパラメータを表示してくれますから、これらのパラメータを 覚えておく必要はありません。最後の行が、今述べたパラメータと入力 された秘密のパスフレーズから計算されたワンタイムパスワードです。 この例を実行した後、次にログインするときに打ち込むべきワンタイ ムパスワードがこれです。

### 14.5.2. 信頼できない通信路での初期化

信頼できない通信路を使って S/Key を初期化、または秘密のパ スフレーズを変更するためには、信頼できる通信路として、その信頼 できない通信路とは別のものを用意する必要があります。その信頼で きる通信路は `key` プログラムを実行するために 必要となるもので、たとえばそれは、あなたが信頼できる Macintosh のデスクアクセサリや信頼できるマシンのシェルプロンプトだったり するでしょう。(訳注: ここでの通信路とはマシンそのものになりま す。信頼できるマシンとは、信頼できる人がしっかり管理しているマ シンということです)。他に準備しておくものとして、シーケンス番 号 (100 は適切な値といえるでしょう) と、場合によっては自分で考 えた、またはランダムに生成されたシードがあります。(あなたが S/Key を初期化しようとしているマシンへの) 信頼できない通信路を 使うときには、`keyinit -s` コマンドを以下のよ うに使用します。

    % keyinit -s
    Updating unfurl:
    Old key: to17758
    Reminder you need the 6 English words from the key command.
        ) `keyinit' コマンドが出力する注意です。訳すと、
        ) 注意 - skey コマンドの出力する 6 英単語が必要になります。
    Enter sequence count from 1 to 9999: 100
    Enter new key [default to17759]:
    s/key 100 to 17759
    s/key access password:

デフォルトのシード (`keyinit` プログラム は困ったことにこれを `key` と読んでいるのです が、混乱しないよう注意してください) で構わなければ、リターンキー を押してください。次に、アクセスパスワードを入れる前に、あらか じめ用意しておいた信頼できる通信路(信頼できるマシンや信頼でき る S/Key デスクアクセサリなど) へ移って、先ほどと同じパラメータ を入力します。

    % key 100 to17759
    Reminder - Do not use this program while logged in via telnet or rlogin.
    Enter secret password: <秘密のパスフレーズ>
    CURE MIKE BANE HIM RACY GORE

ここで信頼できない通信路の方に戻って、 `key` コマンドが出力したワンタイムパスワード をコピーして `keyinit` プログラムに入力します。

    s/key access password:CURE MIKE BANE HIM RACY GORE
    ID unfurl s/key is 100 to17759
    CURE MIKE BANE HIM RACY GORE

後は、前章で説明したことと同様です。

### 14.5.3. ワンタイムパスワードを一つ生成する

S/Key の初期化ができたら、ログインするときには以下のような プロンプトが出てくるでしょう。

    % telnet example.com
    Trying 10.0.0.1...
    Connected to example.com
    Escape character is '^]'.

    FreeBSD/i386 (example.com) (ttypa)

    login: <ユーザ名>
    s/key 97 fw13894
    Password:

ここでは表示していませんが、便利な機能がログインプログラム に備わっています: パスワードプロンプトに対して、何も入力せずに リターンを押すとエコーモードに切り替わります。つまりタイプし た文字がそのまま見えるようになるのです。これはS/Key のワンタイ ムパスワードを紙に印刷していた場合など、ワンタイムパスワードを 手で入力しなければならない場合に特に役立つ機能です。また、この ログインしようとしてるマシンが、接続元のマシンから Unix パスワードを使ってログインすることができないように設定さ れている場合には、ログインプロンプトには S/Key のワンタイムパ スワードのみが受け付けられることを示す `(s/key required)` という注釈が表示されます。

次に、このログインプロンプトに対して入力するためのワンタイ ムパスワードを生成しましょう。そのために、`key` プログラムを使える信頼できるマシンを用意します。 (`key` プログラムには MS-DOS や Windows の上で動くもの、MacOS の上で動くものなどもあります)。 `key` プログラムを使うときには、シーケンス番 号とシードを指定します。ログインしようとしているマシンのログ インプロンプトの右側をカットアンドペーストすると楽でしょう。

信頼できるシステムで

    % key 97 fw13894
    Reminder - Do not use this program while logged in via telnet or rlogin.
    Enter secret password:
    WELD LIP ACTS ENDS ME HAAG

ここでワンタイムパスワードが得られました。ログインを続けま しょう。

    login: <username>
    s/key 97 fw13894
    Password: <return to enable echo>
    s/key 97 fw13894
    Password [echo on]: WELD LIP ACTS ENDS ME HAAG
    Last login: Tue Mar 21 11:56:41 from 10.0.0.2 ...

以上の手順は、信頼できるマシンが利用できる場合の みに使えるもっとも簡単な方法です。Java による S/Key の `key` applet もあり、The Java OTP Calculator からダウンロードして Java をサポートするブ ラウザ上でローカルに実行することができます。

### 14.5.4. 複数のワンタイムパスワードを生成する

都合によっては、信頼できるマシンや信頼できる通信路が一切確 保できないようなところで S/Key を使う必要があるでしょう。この ような場合には、`key` コマンドを使って複数の ワンタイムパスワードをあらかじめ一気に生成し、紙に印刷して携帯 していくことができます。たとえば

    % key -n 5 30 zz99999
    Reminder - Do not use this program while logged in via telnet or rlogin.
    Enter secret password: <秘密のパスフレーズ>
    26: SODA RUDE LEA LIND BUDD SILT
    27: JILT SPY DUTY GLOW COWL ROT
    28: THEM OW COLA RUNT BONG SCOT
    29: COT MASH BARR BRIM NAN FLAG
    30: CAN KNEE CAST NAME FOLK BILK

`-n 5` という引数によって 5 個のワンタイム パスワードを順に生成します。ここで `30` は、最 後のシーケンス番号となるべき数字です。出力は普通に使う順番とは 逆に出力されていることに注意してください (訳注: 一番最初に使うワンタイムパスワードは一番最後に出力され たものです)。この結果をカットアンドペーストして `lpr` コマンドを使って印刷すると よいでしょう。 もしあなたがセキュリティに偏執するなら、この結果を紙と鉛筆を使っ て手で書き移した方がよいかもしれません。ここで、出力の各行はシー ケンス番号とそれに対応する一回分のワンタイムパスワードです。 消費済みの ワンタイムパスワードの行をペンで消していくと便利で しょう。

### 14.5.5. Unix パスワードの利用を制限する

設定ファイル `/etc/skey.access` を使って Unix パスワードの利用を制限することができます。 この場合の判 断基準として、ログインを受け付ける際のホスト名、ユーザ名、端末 のポート、IP アドレスなどが利用できます。この設定ファイルの詳 細に関してはマニュアル skey.access(5) をご覧ください。マ ニュアルにはこの機能に関わるセキュリティについて、いくつかの警 告が記述してあります。この機能を使ってセキュリティを高めようと するのならば絶対にこのマニュアルを読んでください。

もし `/etc/skey.access` ファイルが存在 しないならば (FreeBSD のデフォルト状態ではそうです)、すべての ユーザが Unix パスワードを利用することができます。逆に、もし ファイルが存在するならば、`skey.access` ファ イルに明示的に記述されていない限り、すべてのユーザは S/Key の 利用を要求されます。どちらの場合においても、そのマシンのコンソー ルからはいつでも Unix パスワードを使ってログインすることが可能 です。

以下によく使われるであろう三種類の設定を含む設定ファイルの 例を示します。

    permit internet 192.168.0.0 255.255.0.0
    permit user fnord
    permit port ttyd0

はじめの行 (`permit internet`) で、telnet などで接続するときの IP のソースアドレス (注意: これは偽造され るおそれがあります) が特定の値とマスクに一致している場合に、 Unix パスワードの利用を許可することを指定しています。 この設定自体はセキュリティを高めるための機能ではありません。そうでは なく、ログインの権利を持つ許可されたユーザに対して、現在そのユー ザが使っているネットワークが信頼できないと考えられるので S/Key を使うべきである、ということを気づかせるための機能であると考え てください。

二行目 (`permit user`) によって、ある特定のユーザ、この場合は `fnord`、に対して、いつでも Unix パスワードの利用を許可するように指定しています。 一般的にはこの設定をおこなうべきではありません。 `key` プログラムがどうしても使えない環境にい る人や、ダム端末しかない環境にいる人、または何度教えても聞く耳 を持たないような人をサポートする必要がある場合にのみ設定をおこ なってください。

三行目 (`permit port`) によって、ある特定 の端末ポートからログインしようとするすべてのユーザに対して Unix パスワードの利用を許可するように指定しています。この設定 はダイヤルアップ回線に対する設定として利用できるでしょう。

## 14.6. Kerberos

寄稿: Mark Murray. 基にした文書の執筆: Mark Dapoz.

訳: 有村 光晴 `<arimura@jp.FreeBSD.org>`.

Kerberosは、 サーバのサービスによってユーザが安全に認証を受けられる ようにするための、ネットワークの付加システム及びプロトコルです。 リモートログイン、リモートコピー、 システム間での安全なファイルのコピ ーやその他のリスクの高い仕事がかなり安全に、 そしてこれまでより制御 できるようになります。

以下の文章は、 FreeBSD用として配布されているKerberosをセットアップ する際のガイドとして読むことができます。しかし、 完全な説明が必要な場合には、マニュアルページを読んだ方がよい でしょう。

FreeBSDのKerberosは、 オリジナルの4.4BSD-Liteの配布に含まれているものではなく、 FreeBSD 1.1.5.1のときに移植されたeBonesです。 これはアメリカ/カナダの外で作成されており、そのため、アメリカか らの暗号技術の輸出制限があった時代でも、 これら以外の国の人々が手に入れられるものでした。

### 14.6.1. 初期データベースの作成

この作業はKerberosサーバだけでおこないます。まず、 古いKerberosの データベースが存在しないことを確認してください。 ディレクトリ`/etc/kerberosIV`に移って、 次のファイルだけが 存在することをチェックします。

    # cd /etc/kerberosIV
    # ls
    README          krb.conf        krb.realms

もし他のファイル (`principal.*` や `master_key`) が 存在する場合には、 `kdb_destroy`というコマンドで古い Kerberosデータベースを消してください。 Kerberosが走っていなければ、 単に余計なファイルを消せばよいです。

まず、`krb.conf` と `krb.realms`を編集してKerberosの 管理領域 (realm) を定義してください。 ここでは管理領域が`GRONDAR.ZA` で、 サーバ名が`grunt.grondar.za`であるとします。 `krb.conf` というファイルを次のように編集してください。

    # cat krb.conf
    GRONDAR.ZA
    GRONDAR.ZA grunt.grondar.za admin server
    CS.BERKELEY.EDU okeeffe.berkeley.edu
    ATHENA.MIT.EDU kerberos.mit.edu
    ATHENA.MIT.EDU kerberos-1.mit.edu
    ATHENA.MIT.EDU kerberos-2.mit.edu
    ATHENA.MIT.EDU kerberos-3.mit.edu
    LCS.MIT.EDU kerberos.lcs.mit.edu
    TELECOM.MIT.EDU bitsy.mit.edu
    ARC.NASA.GOV trident.arc.nasa.gov

この例にあるような他の管理領域は、実際には必要ありません。 この例は複数の管理領域を認識する方法を示したものですので、 これらの行は含めなくても結構です。

1行目はこのシステムが動いている管理領域の名前です。 他の行は管理領域とホスト名のエントリです。 行の1つめの単語が管理領域で、2つめがその管理領域の中で “鍵配布センター”(Key Distribution Center) として働くホスト名です。ホスト名の次に `admin server` と書いてある場合には、そのホストが 管理データベースサーバ (Administrative Database Server) も提供することを意味します。 これらの単語について詳しく知りたい場合には Kerberos のマニュアルページをご覧ください。

ここで、 `GRONDAR.ZA`という管理領域に`grunt.grondar.za` およびその他の`.grondar.za` ドメインのすべてのホストを追加し なければなりません。 `krb.realms`は次のようになります。

    # cat krb.realms
    grunt.grondar.za GRONDAR.ZA
    .grondar.za GRONDAR.ZA
    .berkeley.edu CS.BERKELEY.EDU
    .MIT.EDU ATHENA.MIT.EDU
    .mit.edu ATHENA.MIT.EDU

もう一度注意しますが、他の管理領域を書く必要はありません。 これらは複数の管理領域を認識できるようにマシンを設定する方法を 示した例ですので、これらの行は消して構いません。

1行目は名前をつけた管理領域に 特定の システムを含めるための ものです。 残りの行は名前をつけた管理領域にサブドメインのデフォルトの システムを含めるためのものです。

これでデータベースを作成する準備ができました。 この操作はKerberos サーバ (鍵配布センター) を起動するだけです。 `kdb_init`コ マンドを次のように実行してください。

    # kdb_init
    Realm name [default  ATHENA.MIT.EDU ]:  GRONDAR.ZA
    You will be prompted for the database Master Password.
    It is important that you NOT FORGET this password.

    Enter Kerberos master key:

ここで鍵を保存して、 ローカルのマシンにあるサーバが取り出せるように します。 それには`kstash`コマンドを使用します。

    # kstash

    Enter Kerberos master key:

    Current Kerberos master key version is 1.

    Master key entered.  BEWARE!

これで暗号化されたマスタパスワードが `/etc/kerberosIV/master_key` に保存されました。

### 14.6.2. すべてが動くようにするための設定

Kerberosを導入する それぞれの システムのデータベースに、2つ のprincipal (主体名) を追加する必要があります。その名前は `kpasswd`と`rcmd`です。 これら2つのprincipalは、個々 のシステムにおいて、 システム名と同じ名前のインスタンスと組にして作成 されます。

これらの `kpasswd` と `rcmd` というデーモンによって、他の システムからKerberosのパスワードを変更したり、 `rcp`や `rlogin`, `rsh`といったコマンドを実行したりできるよ うになります。

それでは実際にこれらのエントリを追加しましょう。

    # kdb_edit
    Opening database...

    Enter Kerberos master key:

    Current Kerberos master key version is 1.

    Master key entered.  BEWARE!
    Previous or default values are in [brackets] ,
    enter return to leave the same, or new value.

    Principal name: passwd
    Instance: grunt

    <Not found>, Create [y] ? y

    Principal: passwd, Instance: grunt, kdc_key_ver: 1
    New Password:                    <---- ここは「RANDOM」と入力してください
    Verifying password

    New Password:                    <---- ここは「RANDOM」と入力してください

    Random password [y] ? y

    Principal's new key version = 1
    Expiration date (enter yyyy-mm-dd) [ 2000-01-01 ] ?
    Max ticket lifetime (*5 minutes) [ 255 ] ?
    Attributes [ 0 ] ?
    Edit O.K.
    Principal name: rcmd
    Instance: grunt

    <Not found>, Create [y] ?

    Principal: rcmd, Instance: grunt, kdc_key_ver: 1
    New Password:                    <---- ここは「RANDOM」と入力してください
    Verifying password

    New Password:                    <---- ここは「RANDOM」と入力してください

    Random password [y] ?

    Principal's new key version = 1
    Expiration date (enter yyyy-mm-dd) [ 2000-01-01 ] ?
    Max ticket lifetime (*5 minutes) [ 255 ] ?
    Attributes [ 0 ] ?
    Edit O.K.
    Principal name:                  <---- 何も入力しないと終了します

### 14.6.3. サーバファイルの作成

次に、各マシンにおけるサービスを定義している、 すべてのインスタンス を展開します。 これには`ext_srvtab`というコマンドを使用しま す。このコマンドで作成されるファイルは、Kerberosの各クライアン トの/etc/kerberosIVディレクトリに 安全な方法でコピーまたは 移動する必要があります。このファイルはそれぞれのサーバとクラ イアントに存在しなければならず、 またKerberosの運用において重要なも のです。

    # ext_srvtab grunt

    Enter Kerberos master key:

    Current Kerberos master key version is 1.

    Master key entered.  BEWARE!
    Generating 'grunt-new-srvtab'....

このコマンドは一時的なファイルを作成するだけです。 ファイル名をすべ てのサーバが読めるような `srvtab` という名前に変更しな ければなりません。 `mv`コマンドを用いてシステムの場所に移動 してください。

    # mv grunt-new-srvtab srvtab

そのファイルがクライアントに配るためのもので、 ネットワークが安全で はないと思われる場合には、 ``client`-new-srvtab` を移動 可能なメディアにコピーして物理的に安全な方法で運んでください。 クラ イアントの`/etc/kerberosIV`ディレクトリで、 名前を `srvtab`に変更し、 modeを600にするのを忘れないでください。

    # mv grumble-new-srvtab srvtab
    # chmod 600 srvtab

### 14.6.4. データベースへのユーザの追加

ここで、 ユーザのエントリをデータベースに追加する必要があります。 始めに、 ユーザ`jane`のエントリを作成してみましょう。 `kdb_edit` を用いて次のように作成してください。

    # kdb_edit
    Opening database...

    Enter Kerberos master key:

    Current Kerberos master key version is 1.

    Master key entered.  BEWARE!
    Previous or default values are in [brackets] ,
    enter return to leave the same, or new value.

    Principal name: jane
    Instance:

    <Not found>, Create [y] ? y

    Principal: jane, Instance: , kdc_key_ver: 1
    New Password:                    <---- 安全なパスワードを入れてください
    Verifying password

    New Password:                    <---- もう一度パスワードを入れてください

    Principal's new key version = 1
    Expiration date (enter yyyy-mm-dd) [ 2000-01-01 ] ?
    Max ticket lifetime (*5 minutes) [ 255 ] ?
    Attributes [ 0 ] ?
    Edit O.K.
    Principal name:                  <---- 何も入力しないと終了します

### 14.6.5. すべてのテスト

まず始めにKerberosデーモンを起動する必要があります。 `/etc/rc.conf` ファイルを正しく編集してあれば、マシンを再 起動することでに自動的にデーモンが起動します。 これはKerberosサー バでのみ必要です。 Kerberosクライアントは`/etc/kerberosIV`か ら必要なものを自動的に入手します。

    # kerberos &
    Kerberos server starting
    Sleep forever on error
    Log file is /var/log/kerberos.log
    Current Kerberos master key version is 1.

    Master key entered.  BEWARE!

    Current Kerberos master key version is 1
    Local realm: GRONDAR.ZA
    # kadmind -n &
    KADM Server KADM0.0A initializing
    Please do not use 'kill -9' to kill this job, use a
    regular kill instead

    Current Kerberos master key version is 1.

    Master key entered.  BEWARE!

さあ、これで上で作成した `jane` というIDのチケットを `kinit`コマンドで得ることができます。

    % kinit jane
    MIT Project Athena (grunt.grondar.za)
    Kerberos Initialization for "jane"
    Password:

`klist` コマンドを用いてトークンを見て、 きちんとチケットを持って いるかどうか確認してください。

    % klist
    Ticket file:    /tmp/tkt245
    Principal:    jane@GRONDAR.ZA

      Issued           Expires          Principal
    Apr 30 11:23:22  Apr 30 19:23:22  krbtgt.GRONDAR.ZA@GRONDAR.ZA

`passwd` コマンドを用いてパスワードを変更して、 kpasswd デーモンが Kerberos データベースに対して認証されるかどうかチェックして ください。

    % passwd
    realm GRONDAR.ZA
    Old password for jane:
    New Password for jane:
    Verifying password
    New Password for jane:
    Password changed.

### 14.6.6. `su` 特権の追加

root 権限が必要なユーザは誰でも、 `su` コマンドのパスワードをユーザ毎に 別のもの として持つことができます。 `root` に `su` できる権利を与えられた id を追加します。これは、 principal に付いている `root` というインスタンスに よって制御されています。 `kdb_edit`を用いて `jane.root`というエントリを Kerberosデータベースに作成します。

    # kdb_edit
    Opening database...

    Enter Kerberos master key:

    Current Kerberos master key version is 1.

    Master key entered.  BEWARE!
    Previous or default values are in [brackets] ,
    enter return to leave the same, or new value.

    Principal name: jane
    Instance: root

    <Not found>, Create [y] ? y

    Principal: jane, Instance: root, kdc_key_ver: 1
    New Password:                    <---- 安全なパスワードを入れます
    Verifying password

    New Password:                    <---- もう一回パスワードを入れます

    Principal's new key version = 1
    Expiration date (enter yyyy-mm-dd) [ 2000-01-01 ] ?
    Max ticket lifetime (*5 minutes) [ 255 ] ? 12 <--- ここは短くしてください
    Attributes [ 0 ] ?
    Edit O.K.
    Principal name:                  <---- 何も入力しないと終了します

実際にトークンをもらって、 ちゃんと働いているかどうか確認しましょう。

    # kinit jane.root
    MIT Project Athena (grunt.grondar.za)
    Kerberos Initialization for "jane.root"
    Password:

ここで `root` ユーザの `.klogin` ファイルにユーザを追加する必要があります。

    # cat /root/.klogin
    jane.root@GRONDAR.ZA

`su`してみましょう。

    % su
    Password:

どのトークンを持っているか見てみましょう。

    # klist
    Ticket file:    /tmp/tkt_root_245
    Principal:  jane.root@GRONDAR.ZA

      Issued           Expires          Principal
    May  2 20:43:12  May  3 04:43:12  krbtgt.GRONDAR.ZA@GRONDAR.ZA

### 14.6.7. 他のコマンドの使用

ここまでの例では、`jane` という principal を `root` とい うインスタンス付きで作成しました。 これはユーザと同じ名前をprincipalと しており、 Kerberosのデフォルトの値です; `<username>.``root` という形式の `<principal>.<instance>`で、 必要なエント リが`root`のホームディレクトリの `.klogin`ファイルに あれば、 `<username>`がrootに `su`することができます。

    # cat /root/.klogin
    jane.root@GRONDAR.ZA

同様に、ユーザのホームディレクトリの `.klogin`ファイルに次の ような行がある場合には

    % cat ~/.klogin
    jane@GRONDAR.ZA
    jack@GRONDAR.ZA

`jane` または `jack` という名前で (前述の`kinit` によって) 認証されている `GRONDAR.ZA` という管理領域のユーザ なら誰でも`rlogin` や `rsh`, `rcp`等によってこ のシステム (`grunt`) の`jane`のアカウントまたはファ イルにアクセスできます。

たとえば、Janeが他のシステムにKerberos を用いてloginします。

    % kinit
    MIT Project Athena (grunt.grondar.za)
    Password:
    % rlogin grunt
    Last login: Mon May  1 21:14:47 from grumble
    Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994
        The Regents of the University of California.   All rights reserved.

    FreeBSD BUILT-19950429 (GR386) #0: Sat Apr 29 17:50:09 SAT 1995

次の例では、Jackが同じマシンの Jane のアカウントにloginします。Janeは `.klogin` ファイルを前述のように設定しており、 Kerberosではjackというprincipal をインスタンスなしで設定してあります。

    % kinit
    % rlogin grunt -l jane
    MIT Project Athena (grunt.grondar.za)
    Password:
    Last login: Mon May  1 21:16:55 from grumble
    Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994
        The Regents of the University of California.   All rights reserved.

    FreeBSD BUILT-19950429 (GR386) #0: Sat Apr 29 17:50:09 SAT 1995

## 14.7. ファイアウォール

寄稿: Gary Palmer and Alex Nash.

訳: 佐伯 隆司 `<saeki@jp.FreeBSD.org>`. 11 November 1996.

ファイアウォールは、 インターネットに参加している人はもちろんのこと、 プライベートネットワークのセキュリティ向上のための アプリケーションを 探している人にとっても、 ますます興味深くなりつつある分野です。 このセクションではファイアウォールとは何か、 ファイアウォールの使用法、 そしてファイアウォールを構築するために FreeBSD のカーネルで 提供されているファシリティ (機能) の使用法について説明したいと思います。

> Note: 社内のネットワークと “巨大かつ信頼のおけない インターネット”との間にファイアウォールを構築することで セキュリティ上のすべての問題が解決できると考える人がいます。 ファイアウォールはセキュリティ上の問題を 解決する助けになる場合もありますが、 充分な設定がなされていないファイアウォールは、 まったくファイアウォールを 持たない場合よりもセキュリティ上の危険を増大させてしまいます。 ファイアウォールにできることは、 あなたのシステムにもう一つのセキュリティ層を 追加することだけで、 本気でアタックをしかけてくるクラッカーが内部ネットワークに 侵入するのを妨げることはできません。 ファイアウォールを侵入不可能と過信して 内部のセキュリティをおろそかにすることは、 単にクラッカーの仕事を少し簡単にするだけでしか ありません。

### 14.7.1. ファイアウォールとは何か ?

現在インターネットで普通に使用されている ファイアウォールには 二つの異なるタイプがあります。一つは、 厳密には パケットフィルタリングルータ と 呼ばれるタイプのものです。これはマルチホームのホストマシン (複数の ネットワークに接続されているマシン) のカーネルが、 ある規則にしたがって パケットを転送したりブロックしたりするものです。もう一つは、 proxy (代理) サーバ として知られているタイプのものです。これは、 おそらくはマルチホームのホストマシン上で、 カーネルによるパケット転送を 禁止して、 デーモンにより認証の提供とパケットの転送とを おこなうものです。

二つのタイプのファイアウォールを組み合わせて使用して、 特定のマシン (要塞ホスト と呼ばれる) だけが パケットフィルタリングルータを通して内部ネットワークへ パケットを送ることができるよう設定している サイトがしばしば存在します。proxy (代理) サービスは通常の認証機構よりもセキュリティを 強化してある 要塞ホストで動作させます。

FreeBSD は (IPFW として知られる) カーネルパケットフィルタ込みで 提供されています。このセクションの後の方では、 このフィルタについての 説明を集中しておこないます。 サードパーティから提供されるソフトウェアを使用することにより、 Proxy サーバを FreeBSD 上に構築することができます。しかし、 現在入手可能な proxy サーバは たいへんバラエティに富んでいるので、 この節でそれらすべてをカバーすることはできないでしょう。

#### 14.7.1.1. パケットフィルタリングルータ

ルータとは、二つまたはそれ以上のネットワークの間で パケットの転送をおこなう マシンのことです。 パケットフィルタリングルータは、そのカーネルの内部に、 一つ一つのパケットをルールリストと比較して 転送するかしないかを決める 特別なコードを持っています。 最近の IP ルーティングソフトウェアのほとんどは、内部に パケットのフィルタリングをおこなうためのコードを持っていて、 デフォルトでは すべてのパケットを転送するようになっています。 このフィルタを有効にするためには、 パケットの通過を許すべきかどうかを決める ルールを自分で定義する必要があります。

パケットを通すべきか通すべきでないかを決めるために、 パケットヘッダの内容にマッチするものが ルールリストから探されます。マッチするルールが見つかると、 ルールアクションが実行されます。ルールアクションには、 パケットを捨てる、パケットを転送する、 またはパケットの発信元に ICMP メッセージを送り返すというものがあります。 ルールの検索は先頭から順番におこなわれ、 通常は最初にマッチしたものだけが 適用されます。そのため、 このルールリストは“ルールチェーン” と呼ばれることもあります。

パケットマッチングの基準は使用するソフトウェアに よって異なりますが、通常はパケットの発信元 IP アドレス、 宛先 IP アドレス、発信元ポート番号、宛先ポート番号 (ポート番号はポートをサポートするプロトコルの場合のみ)、 パケットタイプ (UDP, TCP, ICMP など) に基づくルールを指定することができます。

#### 14.7.1.2. Proxy サーバ

Proxy サーバとは通常のシステムデーモン (telnetd, ftpd など) を 特別なサーバで置き換えたマシンのことです。 これらのサーバは、 通常は中継をおこなって特定方向への接続だけを許すため、 proxy サーバ と呼ばれます。(たとえば) proxy telnet サーバをファイアウォールホストで走らせておきます。 外部からユーザがファイアウォールに対して telnet を実行すると、proxy telnet サーバが応答して、 何らかの認証機構を実行します。これを通過した後で、 内部ネットワークへのアクセスがおこなえるように なるのです。 (内部ネットワークからの信号は proxy サーバがかわりに受け取り、外へ向けて送り出します)。

Proxy サーバは通常、 普通のサーバより堅固に構築されていて、しばしば “使い捨て”パスワードシステムなどを含む、 多様な認証機構を持っています。 “使い捨て”パスワードシステムとは、 どういうものなのでしょうか。仮に誰かが何らかの方法で、 あなたが使用したパスワードを手に入れたとします。しかし、 一度使用したことで、 そのパスワードは既に無効になっているのです。ですから、 そのパスワードをもう一度使用したとしても、あなたのシステムへ アクセスすることはできないというわけです。 これらのサーバは中継をおこなうだけで、 実際のところサーバホスト自身への アクセスをユーザに許してはいません。そのため、 何者かがセキュリティシステムに 侵入用の裏口を取り付けることは、 より困難になっています。

proxy サーバはアクセス制限の方法をいくつも持っていて、 特定のホスト だけがサーバへのアクセス権を得ることができるように なっていることがあります。 そして目的のマシンと通信できるユーザを制限するように 設定することもできます。もう一度言いますが、 どんなファシリティ (機能) が使えるかは、どんな proxy サービスをおこなうソフトウェアを選ぶかに大きく 依存します。

### 14.7.2. IPFW で何ができるか

FreeBSD とともに配布されている `IPFW` は、カーネル内部にあって パケットのフィルタリングとアカウンティングを おこなうシステムであり、 ユーザ側のコントロールユーティリティである ipfw(8) を 含んでいます。ルーティングの決定をおこなう際に、 これらは互いに協力して、 カーネルで使用されるルールを定義したり、 現在使用されているルールを 問い合わせたりすることができます。

IPFW は互いに関連する二つの部分からなっています。 ファイアウォールセクションは パケットフィルタリングをおこないます。また、IP アカウンティングセクションはファイアウォールセクションのものと 似たルールに基づいてルータの使用を追跡します。これにより、 (たとえば) 特定のマシンからルータへのトラフィックがどのくらい 発生しているか調べたり、どれだけの WWW (World Wide Web) トラフィックが フォワードされているかを知ることができます。

IPFW は、 ルータではないマシンにおいても入出力コネクションの パケットフィルタリングのために 使用することができるように設計されています。これは一般的な IPFW の使用法とは異なる特別な使い方ですが、 こういった状況でも同じコマンドと テクニックが使用されます。

### 14.7.3. FreeBSD で IPFW を有効にする

IPFW システムの中心となる部分はカーネル内部にあります。そのため、 どのファシリティ (機能) を必要とするかによって、一つまたは それ以上のオプションをカーネルコンフィグレーション ファイルに追加し、 カーネルを再コンパイルする必要があるでしょう。 カーネルの再コンパイル方法の詳細については、カーネルコンフィグレーション を参照してください。

現在、IPFW に関係するカーネルコンフィグレーションオプションは 三つあります。

`options IPFIREWALL`

  パケットフィルタリングのためのコードを カーネルに組み込みます。

`options IPFIREWALL_VERBOSE`

  syslogd(8) を通じて パケットのログを取るためのコードを有効にします。 フィルタルールでパケットのログを取るように指定しても、 このオプションが指定されていなければ、 ログを取ることはできません。

`options IPFIREWALL_VERBOSE_LIMIT=10`

  syslogd(8) を通じて ログを取るパケットの数をエントリ毎に制限します。 敵対的な環境においてファイアウォールの 動作のログを取りたいけれど、 syslog の洪水によるサービス拒絶攻撃に対し 無防備でありたくないという場合に、 このオプションを使用したいと思うことが あるかもしれません。

  チェーンエントリのログが指定された制限数に達すると、 そのエントリに関するログ取りは停止されます。 ログ取りを再開するには、ipfw(8) ユーティリティを使用して 関連するカウンタをリセットする必要があります。

      # ipfw zero 4500

  4500 とは、 ログ取りを続行したいチェーンエントリの番号です。

> Note: 以前のバージョンの FreeBSD は `IPFIREWALL_ACCT` というオプションを 持っていました。しかし、 ファイアウォールコードがアカウンティングファシリティ (機能) を 自動的に含むようになったため、 現在では使用されることはなくなっています。

### 14.7.4. IPFW の設定

IPFW ソフトウェアの設定は ipfw(8) ユーティリティを 通じておこないます。このコマンドの構文は非常に 複雑に見えますが、 一旦その構造を理解すれば比較的単純です。

このユーティリティでは今のところ四つの異なる コマンドカテゴリが 使用されています: それは追加 / 削除、表示、 フラッシュ、およびクリアです。追加 / 削除はパケットの受け入れ、拒絶、ログ取りをどのようにおこなうか というルールを構築するのに使用します。表示はルールリスト (またはチェーン) と (アカウンティング用) パケットカウンタの 内容を調べるのに使用します。 フラッシュはチェーンからすべてのエントリを 取り除くのに使用します。 クリアは一つまたはそれ以上のアカウンティングエントリを ゼロにするのに 使用します。

#### 14.7.4.1. IPFW ルールの変更

この形式での使用法は:

`ipfw` [-N] コマンド [index] アクション [log] プロトコル アドレス [オプション]

この形式で使用する際に有効なフラグは一つだけです。

-N

  アドレスやサービス名を 文字列に変換して表示します。

コマンド は一意である限り短縮可能です。有効な コマンド は

add

  ファイアウォール / アカウンティングルールリストに エントリを追加します。

delete

  ファイアウォール / アカウンティングルールリストから エントリを削除します。

以前のバージョンの IPFW では、 ファイアウォールエントリと パケットアカウンティングエントリが別々に利用されていました。 現在のバージョンでは、それぞれのファイアウォールエントリ毎に パケットアカウンティングエントリが備えられています。

index 値が指定されていると、 エントリはチェーン中の指示された位置に置かれます。 index 値が指定されて いなければ、 エントリは (65535 番のデフォルトルールである パケット拒絶を別にして) 最後のチェーンエントリの index に 100 を足した 位置 (チェーンの最後) に置かれます。

カーネルが `IPFIREWALL_VERBOSE` つきでコンパイルされている場合、`log` オプションはマッチしたルールを システムコンソールに出力させます。

有効な アクション は:

reject

  パケットを捨てます。ICMP ホスト / ポート到達不能パケットを (適切な方を) 発信元へ送ります。

allow

  通常通りパケットを通過させます。(別名: `pass` および `accept`)

deny

  パケットを捨てます。発信元は ICMP メッセージによる 通知を受けません (そのためパケットが 宛先に到達しなかったように見えます)。

count

  このルールはパケットカウンタを更新するだけで、 パケットを 通過させたり拒絶したりしません。 検索は次のチェーンエントリから続けられます。

それぞれの アクション は一意な先頭部分だけでも認識されます。

指定可能な プロトコル は以下の通りです。

all

  任意の IP パケットにマッチします。

icmp

  ICMP パケットにマッチします。

tcp

  TCP パケットにマッチします。

udp

  UDP パケットにマッチします。

アドレス の指定は:

from `address/mask` [`port`] to `address/mask` [`port`] [via `interface`]

`port` はポートをサポートする プロトコル (UDP と TCP) の 場合にだけ指定可能です。

`via` は必須ではなく、 特定のインタフェースを通ってきたパケット だけにマッチするように、IP アドレスまたはローカル IP インタフェースの ドメイン名、またはインタフェース名 (たとえば `ed0`) を 指定することができます。 インタフェースユニット番号はオプションで、 ワイルドカードで指定することが できます。たとえば、 `ppp*` はすべてのカーネル PPP インタフェースに マッチします。

`address/mask` の指定は:

    address

または

    address/mask-bits

または

    address:mask-pattern

IP アドレスのかわりに有効なホスト名を指定することも可能です。 ``mask-bits`` はアドレスマスクで上位何ビットを１にするべきかを 示す十進数値です。たとえば次の指定、 `192.216.222.1/24` はクラス C のサブネット (この場合 192.216.222) の任意のアドレスにマッチする マスクを作成します。 ``mask-pattern`` は与えられたアドレスと 論理 AND される IP アドレスです。 キーワード `any` は“任意の IP アドレス”を指定するために 使用することができます。

ブロックするポート番号は以下のように指定します:

`port` [, `port` [, `port` [... ]]]

のように単独のポートまたはポートのリストを指定します。 または

`port`- `port`

のようにポートの範囲を指定します。 単独のポートとポートのリストを 組み合わせて指定することも可能ですが、 その場合は常に範囲の方を 最初に指定しなければなりません。

使用可能な オプション は:

frag

  データグラムの最初の フラグメントでなければマッチします。

in

  入力途中のパケットであればマッチします。

out

  出力途中のパケットであればマッチします。

ipoptions `spec`

  IP ヘッダが `spec` に指定された カンマで区切られた オプションのリストを含んでいればマッチします。 サポートされている IP オプションのリストは: `ssrr` (ストリクトソースルート)、 `lsrr` (ルーズソースルート)、 `rr` (レコードパケットルート)、 そして `ts` (タイムスタンプ) です。 特定のオプションを含まないことを指定するには `!` を先頭につけます。

established

  パケットが既に確立されている TCP コネクションの一部であれば (つまり RST または ACK ビットがセットされていれば) マッチします。 established ルールをチェーンの最初の方に置くことで、 ファイアウォールのパフォーマンスを向上させることが できます。

setup

  パケットが TCP コネクションを確立しようとするものであれば (SYN ビットがセットされ ACK ビットはセットされていなければ) マッチします。

tcpflags `flags`

  TCP ヘッダが `flags` に指定された カンマで区切られたフラグの リストを含んでいればマッチします。 サポートされているフラグは、`fin`, `syn`, `rst`, `psh`, `ack` と `urg` です。 特定のフラグを含まないことを指定するには `!` を先頭につけます。

icmptypes `types`

  ICMP タイプが `types` リストに 存在していればマッチします。 リストはタイプの範囲または個々のタイプを カンマで区切った任意の組合せで指定できます。 一般的に使用されている ICMP タイプは: `0` エコーリプライ (ping リプライ)、 `3` 相手先到達不可能、 `5` リダイレクト、 `8` エコーリクエスト (ping リクエスト)、そして `11` 時間超過 (traceroute(8) で使用されているように、TTL 満了を示すのに使用されます) です。

#### 14.7.4.2. IPFW ルールリストの表示

この形式での使用法は:

`ipfw` [-a] [-t] [-N] l

この形式で使用する際に有効なフラグは三つあります。

-a

  リスト表示の際にカウンタの値も表示します。 このオプションは アカウンティングカウンタの 内容を見る唯一の手段です。

-t

  各チェーンエントリが最後に マッチした時刻を表示します。この時刻表示は ipfw(8) ユーティリティで使用される入力形式と 互換性がありません。

-N

  (可能であれば) アドレスやサービス名を文字列に変換して表示します。

#### 14.7.4.3. IPFW ルールのフラッシュ

チェーンをフラッシュするには:

`ipfw` flush

カーネルに固定されているデフォルトルール (インデックス 65535 番) 以外の、 ファイアウォールチェーンの中のすべてのエントリを削除します。 デフォルトではすべてのパケットが拒絶されるので、 一旦これを実行すると、 パケットを許可するエントリがチェーンに追加されるまで、 あなたのシステムがネットワークから切り放されてしまいます。 そのため、 ルールのフラッシュをおこなうときは注意が必要です。

#### 14.7.4.4. IPFW パケットカウンタのクリア

一つまたはそれ以上のパケットカウンタをクリアするためには:

`ipfw` zero [`index`]

`index` が指定されていなければ、 すべてのパケットカウンタが クリアされます。 `index` が指定されていれば、 特定のチェーンエントリだけが クリアされます。

### 14.7.5. ipfw に対するコマンドの例

このコマンドは、ホスト `evil.crackers.org` から ホスト `nice.people.org` の telnet ポートへの すべてのパケットを拒絶します。

    # ipfw add deny tcp from evil.crackers.org to nice.people.org 23

次の例は、ネットワーク `crackers.org` (クラス C) 全体から マシン `nice.people.org` (の任意のポート) への 任意の TCP トラフィックを拒絶し、 ログを取ります。

    # ipfw add deny log tcp from evil.crackers.org/24 to nice.people.org

あなたの内部ネットワーク (クラス C のサブネット) に対する X セッションを 張れないようにする場合、 以下のコマンドで必要なフィルタリングがおこなえます。

    # ipfw add deny tcp from any to my.org/28 6000 setup

アカウンティングレコードを見るには:

    # ipfw -a list

または短縮形式で

    # ipfw -a l

最後にチェーンエントリがマッチした 時刻を見ることもできます。

    # ipfw -at l

### 14.7.6. パケットフィルタリングファイアウォールの構築

> Note: 以下の提案は、ただの提案にすぎません: 必要な処理はそれぞれのファイアウォールで異なるため、 あなた独自の要求にあったファイアウォールを構築する方法を ここで述べることはできないのです。

最初にファイアウォールをセットアップするとき、 コントロールされた環境でファイアウォールホストの 設定がおこなえるような テストベンチセットアップが用意できない場合には、 カーネルのログ取りを 有効にしてログ取り版のコマンドを使用することを 強くおすすめします。そうすることで、 大した混乱や中断なしに問題となる範囲の特定と処置を 素早くおこなうことができます。 初期セットアップフェーズが完了してからであっても、 アタックの可能性のあるアクセスをトレースしたり、 要求の変化に応じてファイアウォールルールを 変更したりできるので、`deny' に対するログ取りをおこなうことをおすすめします。

> Note: `accept` コマンドのログ取りをおこなっていると、 ファイアウォールをパケットが一つ通過する毎に 1 行のログが生成されるため 大量の ログデータが発生します。そのため、大規模な FTP/HTTP 転送などをおこなうと、システムが非常に 遅くなってしまいます。 また、パケットが通過するまでにカーネルにより 多くの仕事を要求するため、パケットのレイテンシ (latency) を増加させてしまいます。syslogd もログをディスクに記録するなど、より多くの CPU タイムを 使用し始め、実に容易に `/var/log` が置かれているパーティションを パンクさせてしまう可能性があります。

ファイアウォールは、 `/etc/rc.conf.local` か、もしくは `/etc/rc.conf` によって有効化されるべきです。 関連マニュアルページには、どのドアノブ (訳注: ポートや IP アドレスなど、 ネットワークからの入口を示すもののこと) に手をつければ良いのかに ついての説明と、ファイアウォール設定の既定値のリストがあります。 もし、設定の既定値を使わない場合には、 `ipfw list` とすることで、 現在のルールセットを `rc.conf` から読み込める形で ファイルに出力することができます。 また、`/etc/rc.conf.local` や `/etc/rc.conf` によってファイアウォールを 有効化しない場合には、ファイアウォールの有効化がすべての IP インタフェイス設定より先に行なわれるように確認することが重要です。

次の問題は、ファイアウォールが実際には何を する べきかです ! これは外部からそのネットワークへのどんなアクセスを許したいか、 また内部から外界へのアクセスを どのくらい許したいかに大きく依存します。 いくつか一般的なルールを挙げると:

- 1024 番以下のポートへのすべての TCP 入力アクセスをブロックします。ここは finger, SMTP (mail) そして telnet など、最もセキュリティに敏感な サービスが存在する場所だからです。

- すべての 入力 UDP トラフィックをブロックします。これは UDP を使用しているサービスで有用なものは極めて少ないうえ、 (Sun の RPC と NFS プロトコルのように) 有用なトラフィックであったとしても、 通常セキュリティに対する脅威となるためです。UDP はコネクションレスプロトコルであるため、入力 UDP トラフィックを拒絶することは すなわち出力 UDP トラフィックに対する返答をも ブロックすることになるので、 このことはそれなりの不利益をもたらします。たとえば外部の archie (prospero) サーバを使用している (内部の) ユーザに とって問題となる可能性があります。もし archie へのアクセスを許したければ、191 番と 1525 番のポートから 任意の UDP ポートへ来るパケットがファイアウォールを通過することを 許可しなければなりません。123 番のポートから来るパケットは ntp パケットで、 これも通過の許可を考慮する必要がある もう一つのサービスです。

- 外部から 6000 番のポートへのトラフィックをブロックします。6000 番のポートは X11 サーバへのアクセスに使用されるポートで、 セキュリティに対する脅威となりえます。 (特に自分のワークステーションで `xhost +` をおこなう癖を持っている人がいればなおさらです)。X11 は実際に 6000 番以降のポートを使用する可能性があるため、 通過許可に 上限を定めると、 そのマシンで走らせることのできる X ディスプレイの 個数が制限されます。RFC 1700 (Assigned Numbers) で定義されているように、上限は 6063 です。

- 内部のサーバ (たとえば SQL サーバなど) がどのポートを使用するかを チェックします。 それらのポートは通常、上で指定した 1-1024 番の範囲から外れていますので、 これらも同様にブロックしておくことは おそらく良い考えです。

これとは別のファイアウォール設定に 関するチェックリストが CERT から 入手可能です。http://www.cert.org/tech_tips/packet_filtering.html

前にも述べたように、これはただの ガイドライン にすぎません。 ファイアウォールでどのようなフィルタルールを使用するかは、 あなた自身が 決めなければなりません。 これまでのアドバイスにしたがったにも関わらず、 誰かがあなたのネットワークに 侵入してきたとしても、 わたしたちは「いかなる」責任もとることはできません。

## 14.8. OpenSSL

FreeBSD 4.0 では、OpenSSL ツールキットが基本構成の一部に 含まれています。OpenSSL は、 Secure Sockets Layer v2/v3 (SSLv2/SSLv3) や Transport Layer Security v1 (TLSv1) ネットワークセキュリティプロトコルと同様の 多目的な暗号化ライブラリを提供します。

しかしながら、OpenSSL に含まれるアルゴリズムのひとつ (特に IDEA) は、合衆国内、その他の地域において、 特許により保護されています。そのため、 無制約な利用は許されません。IDEA は FreeBSD の OpenSSL 配布に含まれていますが、デフォルトではコンパ イルされません。もし IDEA を使いたいなら、そしてあなたがそのライ センス条項に合致するなら、/etc/make.conf の中の MAKE_IDEA スイッ チを有効にして、'make world' でソースをリビルドしてください。

現在は RSA アルゴリズムはアメリカとその他の国で自由に利用で きます。以前は特許により保護されていました。

### 14.8.1. ソースコードのインストール

OpenSSL は `src-crypto` と `src-secure` cvsup コレクションの一部です。 FreeBSD のソースコードの取得と更新の詳細は、 FreeBSD の入手の項を参照して下さい。

## 14.9. IPsec

寄稿: Yoshinobu Inoue.

訳: 日野 浩志 `<hino@ccm.cl.nec.co.jp>`, 14 March 2001.

IPsec 機構は、IP 層とソケット層に対して安全な通信を提供します。 実装の詳細に関しては The Developers' Handbook を参照してください。

現在の IPsec の実装は、トランスポートモードとトンネルモード の両方をサポートしています。しかし、トンネルモードにはいくつかの 制限事項があります。http://www.kame.net/newsletter/ にはより総合的な例が載っています。

ここで述べる機能を利用するには、以下のオプションをカーネルコ ンパイル時に指定する必要があることにご注意ください。

    options          IPSEC              #IP security
    options          IPSEC_ESP          #IP security (crypto; define w/IPSEC)

### 14.9.1. IPv4 におけるトランスポートモードの例

ホスト A (10.2.3.4) とホスト B (10.6.7.8) との間に安全なチャ ネルを配置するために、セキュリティアソシエーションを設定しましょ う。ここでは、少し込み入った例を示します。ホスト A からホストB へは old AH のみを使います。ホスト B からホスト A へは new AH と new ESP を組み合わせます。

ここで "AH"/"new AH"/"ESP"/"new ESP" に対応するアルゴリズ ムを決めないといけません。アルゴリズムの名前を知るには、 setkey(8) マニュアルページをご覧ください。ここでは、AH に MD5 を、new AH には new-HMAC-SHA1 を、new ESP には 8 バイト IV の new-DES-expIV を選びました。

鍵長はそれぞれのアルゴリズムに大きく依存します。たとえば、 MD5 では鍵長は 16 バイトでなければなりませんし、new-HMAC-SHA1 では 20 バイトでなければなりませんし、new-DES-expIV では 8 バ イトでなければなりません。ここではそれぞれ "MYSECRETMYSECRET", "KAMEKAMEKAMEKAMEKAME", "PASSWORD" とします。

次に、それぞれのプロトコルに対して SPI (セキュリティパラメー タインデックス: Security Parameter Index) を割り当てます。三種 類のセキュリティヘッダ (ホスト A からホスト B に一つ、ホスト B から ホスト A に二つ) を生成するので、この安全なチャネルには三 つの SPI が必要になることに注意してください。さらに、SPI は 256 以上である必要があることにも注意してください。ここではそれ ぞれ 1000, 2000, 3000 を割り当てます。

                  (1)
        ホスト A ------> ホスト B

        (1)PROTO=AH
            ALG=MD5(RFC1826)
            KEY=MYSECRETMYSECRET
            SPI=1000

                   (2.1)
        ホスト A <------ ホスト B
                 <------
                   (2.2)

        (2.1)
        PROTO=AH
            ALG=new-HMAC-SHA1(new AH)
            KEY=KAMEKAMEKAMEKAMEKAME
            SPI=2000

        (2.2)
        PROTO=ESP
            ALG=new-DES-expIV(new ESP)
                IV length = 8
            KEY=PASSWORD
            SPI=3000

次に、セキュリティアソシエーションを設定しましょう。ホスト A とホスト B の両方で、setkey(8) を実行します。

    # setkey -c
    add 10.2.3.4 10.6.7.8 ah-old  1000 -m transport -A keyed-md5 "MYSECRETMYSECRET" ;
    add 10.6.7.8 10.2.3.4 ah  2000 -m transport -A hmac-sha1 "KAMEKAMEKAMEKAMEKAME" ;
    add 10.6.7.8 10.2.3.4 esp 3000 -m transport -E des-cbc "PASSWORD" ;
    ^D

実際には、セキュリティポリシのエントリが定義されるまでは IPsec による通信は行われません。この例の場合、両方のホストを設 定する必要があります。

    A で:

    # setkey -c
    spdadd 10.2.3.4 10.6.7.8 any -P out ipsec
        ah/transport/10.2.3.4-10.6.7.8/require ;
    ^D

    B で:

    # setkey -c
    spdadd 10.6.7.8 10.2.3.4 any -P out ipsec
        esp/transport/10.6.7.8-10.2.3.4/require ;
    spdadd 10.6.7.8 10.2.3.4 any -P out ipsec
        ah/transport/10.6.7.8-10.2.3.4/require ;
    ^D

      ホスト A -------------------------------------> ホスト B
      10.2.3.4                                       10.6.7.8
              |                                     |
              ========== old AH keyed-md5 ==========>

              <========= new AH hmac-sha1 ===========
              <========= new ESP des-cbc ============

### 14.9.2. IPv6 におけるトランスポートモードの例

IPv6 を使ったもう一つの例。

ホスト-A とホスト-B 間の TCP ポート番号 110 番の通信には、 ESP トランスポートモードが推奨されます。

                  ============ ESP ============
                  |                           |
              ホスト-A                      ホスト-B
              fec0::10 -------------------- fec0::11

暗号化アルゴリズムは blowfish-cbc で、その鍵は "kamekame"、 認証アルゴリズムは hmac-sha1 で、その鍵は "this is the test key" とします。ホスト-A の設定:

            # setkey -c <<EOF
            spdadd fec0::10[any] fec0::11[110] tcp -P out ipsec
                    esp/transport/fec0::10-fec0::11/use ;
            spdadd fec0::11[110] fec0::10[any] tcp -P in ipsec
                    esp/transport/fec0::11-fec0::10/use ;
            add fec0::10 fec0::11 esp 0x10001
                    -m transport
                    -E blowfish-cbc "kamekame"
                    -A hmac-sha1 "this is the test key" ;
            add fec0::11 fec0::10 esp 0x10002
                    -m transport
                    -E blowfish-cbc "kamekame"
                    -A hmac-sha1 "this is the test key" ;
            EOF

そしてホスト-B の設定:

    # setkey -c <<EOF
            spdadd fec0::11[110] fec0::10[any] tcp -P out ipsec
                    esp/transport/fec0::11-fec0::10/use ;
            spdadd fec0::10[any] fec0::11[110] tcp -P in ipsec
                    esp/transport/fec0::10-fec0::11/use ;
            add fec0::10 fec0::11 esp 0x10001 -m transport
                    -E blowfish-cbc "kamekame"
                    -A hmac-sha1 "this is the test key" ;
            add fec0::11 fec0::10 esp 0x10002 -m transport
                    -E blowfish-cbc "kamekame"
                    -A hmac-sha1 "this is the test key" ;
            EOF

SP の方向に注意してください。

### 14.9.3. IPv4 におけるトンネルモードの例

二台のセキュリティゲートウェイ間のトンネルモード

セキュリティプロトコルは old AH トンネルモード、すなわち RFC1826 で指定されるものです。認証アルゴリズムは "this is the test" を鍵とする keyed-md5 です。

                                 ======= AH =======
                                 |                |
         ネットワーク-A   ゲートウェイ-A    ゲートウェイ-B   ネットワーク-B
            10.0.1.0/24 ---- 172.16.0.1 ----- 172.16.0.2 ---- 10.0.2.0/24

ゲートウェイ-A における設定:

            # setkey -c <<EOF
            spdadd 10.0.1.0/24 10.0.2.0/24 any -P out ipsec
                    ah/tunnel/172.16.0.1-172.16.0.2/require ;
            spdadd 10.0.2.0/24 10.0.1.0/24 any -P in ipsec
                    ah/tunnel/172.16.0.2-172.16.0.1/require ;
            add 172.16.0.1 172.16.0.2 ah-old 0x10003 -m any
                    -A keyed-md5 "this is the test" ;
            add 172.16.0.2 172.16.0.1 ah-old 0x10004 -m any
                    -A keyed-md5 "this is the test" ;

            EOF

上記の例のように、もしポート番号フィールドを書かないと、 "[any]" と同じ意味になります。`-m' は使用される SA のモードを 指定します。"-m any" はセキュリティプロトコルのモードのワイル ドカードを意味します。この SA をトンネルモードとトランスポート モードの両方で使用できます。

そしてゲートウェイ-B では:

            # setkey -c <<EOF
            spdadd 10.0.2.0/24 10.0.1.0/24 any -P out ipsec
                    ah/tunnel/172.16.0.2-172.16.0.1/require ;
            spdadd 10.0.1.0/24 10.0.2.0/24 any -P in ipsec
                    ah/tunnel/172.16.0.1-172.16.0.2/require ;
            add 172.16.0.1 172.16.0.2 ah-old 0x10003 -m any
                    -A keyed-md5 "this is the test" ;
            add 172.16.0.2 172.16.0.1 ah-old 0x10004 -m any
                    -A keyed-md5 "this is the test" ;

            EOF

二台のセキュリティゲートウェイ間の SA の束を作ります

ゲートウェイ-A とゲートウェイ-B の間では、AH トランスポー トモードと ESP トンネルモードが要求されます。この例では、ESP ト ンネルモードが先に適用され、次に AH トランスポートモードが適用さ れます。

                                ========== AH =========
                                |  ======= ESP =====  |
                                |  |               |  |
        ネットワーク-A     ゲートウェイ-A     ゲートウェイ-B     ネットワーク-B
        fec0:0:0:1::/64 --- fec0:0:0:1::1 ---- fec0:0:0:2::1 --- fec0:0:0:2::/64

### 14.9.4. IPv6 におけるトンネルモードの例

暗号化アルゴリズムは 3des-cbc, ESP の認証アルゴリズムは hmac-sha1 とします。AH の認証アルゴリズムは hmac-md5 とします。 ゲートウェイ-A での設定は:

            # setkey -c <<EOF
            spdadd fec0:0:0:1::/64 fec0:0:0:2::/64 any -P out ipsec
                    esp/tunnel/fec0:0:0:1::1-fec0:0:0:2::1/require
                    ah/transport/fec0:0:0:1::1-fec0:0:0:2::1/require ;
            spdadd fec0:0:0:2::/64 fec0:0:0:1::/64 any -P in ipsec
                    esp/tunnel/fec0:0:0:2::1-fec0:0:0:1::1/require
                    ah/transport/fec0:0:0:2::1-fec0:0:0:1::1/require ;
            add fec0:0:0:1::1 fec0:0:0:2::1 esp 0x10001 -m tunnel
                    -E 3des-cbc "kamekame12341234kame1234"
                    -A hmac-sha1 "this is the test key" ;
            add fec0:0:0:1::1 fec0:0:0:2::1 ah 0x10001 -m transport
                    -A hmac-md5 "this is the test" ;
            add fec0:0:0:2::1 fec0:0:0:1::1 esp 0x10001 -m tunnel
                    -E 3des-cbc "kamekame12341234kame1234"
                    -A hmac-sha1 "this is the test key" ;
            add fec0:0:0:2::1 fec0:0:0:1::1 ah 0x10001 -m transport
                    -A hmac-md5 "this is the test" ;

            EOF

異なる通信端での SA を作る

ホスト-A とゲートウェイ-A の間では ESP トンネルモードが要 求されています。暗号化アルゴリズムは cast128-cbc で、ESP の認 証アルゴリズムは hmac-sha1 です。ホスト-A とホスト-B との間で は ESP トランスポートモードが推奨されています。暗号化アルゴリ ズムは rc5-cbc で、ESP の認証アルゴリズムは hmac-md5 です。

                  ================== ESP =================
                  |  ======= ESP =======                 |
                  |  |                 |                 |
                ホスト-A        ゲートウェイ-A         ホスト-B
              fec0:0:0:1::1 ---- fec0:0:0:2::1 ---- fec0:0:0:2::2

ホスト-A での設定:

            # setkey -c <<EOF
            spdadd fec0:0:0:1::1[any] fec0:0:0:2::2[80] tcp -P out ipsec
                    esp/transport/fec0:0:0:1::1-fec0:0:0:2::2/use
                    esp/tunnel/fec0:0:0:1::1-fec0:0:0:2::1/require ;
            spdadd fec0:0:0:2::1[80] fec0:0:0:1::1[any] tcp -P in ipsec
                    esp/transport/fec0:0:0:2::2-fec0:0:0:l::1/use
                    esp/tunnel/fec0:0:0:2::1-fec0:0:0:1::1/require ;
            add fec0:0:0:1::1 fec0:0:0:2::2 esp 0x10001
                    -m transport
                    -E cast128-cbc "12341234"
                    -A hmac-sha1 "this is the test key" ;
            add fec0:0:0:1::1 fec0:0:0:2::1 esp 0x10002
                    -E rc5-cbc "kamekame"
                    -A hmac-md5 "this is the test" ;
            add fec0:0:0:2::2 fec0:0:0:1::1 esp 0x10003
                    -m transport
                    -E cast128-cbc "12341234"
                    -A hmac-sha1 "this is the test key" ;
            add fec0:0:0:2::1 fec0:0:0:1::1 esp 0x10004
                    -E rc5-cbc "kamekame"
                    -A hmac-md5 "this is the test" ;

            EOF

## 14.10. OpenSSH

寄稿: Chern Lee.

セキュアシェル (secure shell) はリモートマシンへのセキュアなアクセスに使われる ネットワーク接続ツールのセットです。それは `rlogin`, `rsh`, `rcp`, `telnet` を直接置き換えて使うことができます。 また、他のあらゆる TCP/IP 接続を ssh 経由でセキュアにトンネル/フォワードすることもできます。 ssh はすべてのトラフィックを暗号化し、 盗聴や接続の乗っ取り等のネットワークレベルの攻撃を事実上無効化します。

OpenSSH は OpenBSD プロジェクトによって維持管理されており、SSH v1.2.12 に最新のすべてのバグ修正と更新を適用したものをベースにしています。 OpenSSH クライアントは SSH プロトコル 1 と 2 の両方に互換性があります。 OpenSSH は FreeBSD 4.0 以降ベースシステムに取り込まれています。

### 14.10.1. OpenSSH を使うことの利点

telnet(1) や rlogin(1) を使う場合、一般にデータはネットワークを平文で流れます。 ネットワークをクライアントとサーバの間のどこかで盗聴することで あなたのユーザ/パスワード情報やセション中を流れるデータを盗むことが可能です。 OpenSSH はこれらを予防する為にさまざまな認証と暗号化の方法を提供します。

### 14.10.2. sshd を有効にする

`rc.conf` ファイルに 以下の行を追加してください。

    sshd_enable="YES"

次に起動したときから ssh デーモンが起動します。 もしくは単に `sshd` デーモンを実行しても構いません。

### 14.10.3. SSH クライアント

ssh(1) ユーティリティは rlogin(1) と同様に働きます。

    # ssh user@foobardomain.com
    Host key not found from the list of known hosts.
    Are you sure you want to continue connecting (yes/no)? yes
    Host 'foobardomain.com' added to the list of known hosts.
    user@foobardomain.com's password: *******

ログインは `rlogin` や telnet でセッションを張った時と同様に続きます。 SSH はクライアントが接続した時、 サーバの信頼性の検証のために鍵指紋システム (key fingerprint system) を利用します。 初めての接続の際にのみ、ユーザは 'yes' と入力することを要求されます。 これ以降の login では保存されていた鍵指紋を照合することで検証されます。 SSH クライアントは保存されていた鍵指紋が login しようとした際に送られてきたものと異なっていた場合には警告を表示します。 指紋は `~/.ssh/known_hosts` に保存されます。

### 14.10.4. Secure copy

`scp` コマンドは rcp と同様に働きます。 安全な方法で行っているほかは、ローカルのファイルをリモートマシンへ、 あるいはリモートマシンのファイルをローカルにコピーするのは同じです。

    # scp user@foobardomain.com:/COPYRIGHT COPYRIGHT
    user@foobardomain.com's password:
    COPYRIGHT            100% |*****************************|  4735
    00:00
    #

前回の例でこのホストの指紋がすでに保存されていれば この `scp` を使う時に検証が行なわれます。

### 14.10.5. 設定

システム全体の設定ファイルは、OpenSSH デーモン、 クライアントの両方とも `/etc/ssh` ディレクトリにあります。

`ssh_config` はクライアントの動作設定、 `sshd_config` はデーモンの動作設定を行ないます。

### 14.10.6. ssh-keygen

パスワードの代わりに ssh-keygen(1) を使って ユーザの認証用の RSA 暗号鍵を作ることができます。

    % ssh-keygen
    Initializing random number generator...
    Generating p:  .++ (distance 66)
    Generating q:  ..............................++ (distance 498)
    Computing the keys...
    Key generation complete.
    Enter file in which to save the key (/home/user/.ssh/identity):
    Enter passphrase:
    Enter the same passphrase again:
    Your identification has been saved in /home/user/.ssh/identity.
    ...

ssh-keygen(1) は認証に使う為の公開鍵と秘密鍵のペアを作ります。 秘密鍵は `~/.ssh/identity` に保存され、 公開鍵は `~/.ssh/identity.pub` に保存されます。 公開鍵はリモートマシンの `~/.ssh/authorized_keys` にも置かなければなりません。

これでパスワードの代わり RSA 認証を使って リモートマシンに接続できるようになったはずです。

ssh-keygen(1) でパスフレーズを使っている場合は、 ユーザは秘密鍵を使うために毎回パスフレーズの入力を行なう必要があります。

ssh-agent(1) と ssh-add(1) は 多重にパスワード化された秘密鍵の管理に使われます。

### 14.10.7. SSH トンネリング

OpenSSH は暗号化されたセションの中に他のプロトコルを カプセル化することでトンネルを作ることができます。

以下のコマンドは ssh(1) で telnet 用のトンネルを作成します。

    % ssh -2 -N -f -L 5023:localhost:23 user@foo.bar.com
    %

- -2 は ssh(1) にプロトコル 2 を使うことを指示します。 (古い ssh サーバを使っているときには指定しないでください)

- -N はトンネルだけでコマンドはないことを示します。 省略されると ssh(1) は通常のセッションを開始します。

- -f は ssh(1) にバックグラウンド実行を強制します。

- -L はローカルトンネルとして `localport:localhost:remoteport` 形式を指示します。

- `foo.bar.com` はリモート/ターゲットの SSH サーバです。

SSH のトンネルは指定されたローカルホストとポートを listen する ソケットを作ることで実現されています。 SSH はローカルのホスト/ポートへのすべての接続を SSH 接続経由でリモートマシンの指定されたリモートポートへ 転送 (フォワード) します。

たとえば、ローカルホストのポート `5023` がリモートマシンの `23` に転送されるようになっているとします。 `23` は telnet なのでこれは SSH トンネルを通るセキュアな telnet セッションを作ります。

このようにして smtp や pop3, ftp 等のセキュアではない TCP プロトコルをカプセル化することができます。

典型的な SSH トンネル

    % ssh -2 -N -f -L 5025:localhost:25 user@mailserver.foobar.com
    user@mailserver.foobar.com's password: *****
    % telnet localhost 5025
    Trying 127.0.0.1...
    Connected to localhost.
    Escape character is '^]'.
    220 mailserver.foobar.com ESMTP

ssh-keygen(1) と別のユーザアカウントを組み合わせて使うことで より透過的で悩まずに済むような SSH のトンネル環境を作ることができます。 パスワードを入力するところで暗号鍵を使い、 トンネルは別のユーザ権限で実行することが可能です。

### 14.10.8. さらに知りたい人へ

OpenSSH

ssh(1) scp(1) ssh-keygen(1) ssh-agent(1) ssh-add(1)

sshd(8) sftp-server(8)

# Chapter 15. ストレージ

## 15.1. この章では

この章では、FreeBSD におけるディスクの使用方法を説明します。 これにはメモリディスク、ネットワークに接続されたディスク、 および標準的な SCSI/IDE 記憶デバイスが含まれます。

この章では、以下の分野について説明します。

- 物理ディスク上のデータ構成 について記述するために FreeBSD が使用する用語 (パーティションおよびスライス)

- システムにハードディスクを追加する方法

- メモリディスクのような仮想ファイルシステムを設定する方法

- 使用できるディスク容量を制限するためにクォータを設定する方法

- 攻撃者から保護するためにディスクを暗号化する方法

- FreeBSD で CD や DVD を作成する方法

- バックアップのためのさまざまな記憶メディアオプション

- FreeBSD で利用できるバックアッププログラムの使用方法

- フロッピーディスクにバックアップする方法

- スナップショットとは何か、そしてそれを効果的に使用する方法

## 15.2. デバイス名

以下は、FreeBSD で対応している物理記憶デバイスとそれに対応するデバイス名のリストです。

Table 15-1. 物理ディスクへの名前付け

ドライブの種類 | ドライブのデバイス名
--- | ---
IDE ハードドライブ | `ad`
IDE CD-ROM ドライブ | `acd`
SCSI ハードドライブおよび USB 大容量記憶デバイス | `da`
SCSI CD-ROM ドライブ | `cd`
その他の非標準的 CD-ROM ドライブ | ミツミ CD-ROM は `mcd`, Sony CD-ROM は `scd`, 松下/パナソニック CD-ROM は `matcd` [a]
フロッピードライブ | `fd`
SCSI テープドライブ | `sa`
IDE テープドライブ | `ast`
フラッシュドライブ | DiskOnChip® フラッシュデバイスは `fla`
RAID ドライブ | Adaptec® AdvancedRAID は `aacd`, Mylex® は `mlxd` および `mlyd`, AMI MegaRAID® は `amrd`, Compaq Smart RAID は `idad`, 3ware® RAID は`twed`
Notes: a. matcd(4) ドライバは 2002 年 10 月 5 日に FreeBSD 4.X ブランチから削除されました。 また、FreeBSD 5.0 および 5.1 リリースには存在しませんが、 2003 年 6 月 16 日に FreeBSD 5.X ブランチに復帰しました。

## 15.3. ディスクの追加

原作: David O'Brien.

現在一つしかドライブがない計算機に新しく SCSI ディスクを追加したいとしましょう。まずコンピュータの電源を切り、 コンピュータやコントローラ、 ドライブの製造元の説明書に従ってドライブを取り付けます。 このあたりの手順は非常に多岐にわたるため、 詳細はこの文書の範囲外です。

`root` ユーザでログインします。 ドライブの取り付け後は `/var/run/dmesg.boot` を調べて新しいディスクが見つかっていることを確認しておきます。 この例では、新しく付けたドライブは `da1` で、 我々はそれを `/1` にマウントしたいとしましょう (もし IDE ドライブを付けようとしているのなら、デバイス名は 4.0 以前のシステムでは `wd1`, ほとんどの 4.x システムでは `ad1` になるでしょう)。

FreeBSD は IBM-PC 互換のコンピュータで動くため、 PC BIOS のパーティションを考慮に入れる必要があります。 これは従来の BSD パーティションとは異なります。PC ディスクは 4 つまでの BIOS パーティションエントリを持つことができます。 もしそのディスクを本当に FreeBSD 専用にしたい場合には 専用 モードで用いることもできます。 そうでない場合には、FreeBSD は PC BIOS パーティションのどれか一つの中に入れることになります。 FreeBSD では、従来の BSD パーティションと混乱しないように PC BIOS パーティションのことをスライスと呼びます。 また、別の OS がインストールされていたコンピュータで使われていたが FreeBSD 専用にするディスク上でもスライスを用いることができます。 これは、他の OS の `fdisk` ユーティリティを混乱させないためです。

スライスの場合、ドライブは `/dev/da1s1e` として加えられるでしょう。これは、SCSI ディスクでユニット番号は 1 (二つめの SCSI ディスク), スライスは 1 (PC BIOS のパーティションが 1) で BSD パーティション `e`, と読みます。 専用ディスクの場合だと単純に `/dev/da1e` として加えられるでしょう。

### 15.3.1. sysinstall(8) の利用

1. sysinstall の操作

   `sysinstall` の使い易いメニューを利用して、 新しいディスクのパーティション分けやラベル付けを行なうことができます。 `root` ユーザでログインするか `su` コマンドを用いるかして root 権限を取得します。 `/stand/sysinstall` を実行して `Configure` メニューに入ります。`FreeBSD Configuration Menu` の中でスクロールダウンして `Fdisk` の項目を選びます。

2. fdisk パーティションエディタ

   fdisk では、ディスク全体を FreeBSD で使うために `A` を入力します。 “remain cooperative with any future possible operating systems” と聞かれたら `YES` と答えます。 `W` で変更をディスクに書き込みます。ここで `q` と入力して FDISK エディタを抜けます。 次にマスタブートレコードについて聞かれます。 ここでは既に動いているシステムにディスクを追加しようとしているので `None` を選びます。

3. ディスクラベルエディタ

   次に sysinstall を終了し、 もう一度起動する必要があります。同じ手順を踏んで今度は `Label` オプションを選択し、 `Disk Label Editor` に入ります。 ここでは従来の BSD パーティションを作成します。 一つのディスクは `a` から `h` までのラベルがついた最大 8 つのパーティションを持つことができます。 いくつかのパーティションラベルは特別な用途に用いられます。 `a` パーティションはルートパーティション (`/`) です。したがって、システムディスク (つまり起動ディスク) のみに `a` パーティションがあるべきです。`b` パーティションはスワップパーティションに用いられ、 複数のディスクにスワップパーティションを作ることができます。 `c` は専用モードにおけるディスク全体、 もしくはスライスモードにおけるスライス全体を指します。 他のパーティションは汎用的に用いられます。

   sysinstall のラベルエディタ は、ルートパーティションでもスワップパーティションでもないパーティションには、`e` パーティションを採用しようとします。ラベルエディタでファイルシステムを作成するには `C` を入力してください。 FS (ファイルシステム) かスワップかを聞かれたら `FS` を選びマウントポイント (たとえば `/mnt`) を入力します。 インストール後のモードでディスクを追加する場合、 sysinstall は `/etc/fstab` にエントリを追加しないため、 ここで指定するマウントポイントはそれほど重要ではありません。

   さて、ディスクに新しいラベルを書き込み、 そこにファイルシステムを作る準備が整いました。早速 `W` を叩いて実行しましょう。 sysinstall からの、 新しいパーティションをマウントできない、 というエラーは無視してください。Label Editor から抜け、 sysinstall を終了します。

4. 終了

   最後に `/etc/fstab` を編集し、 新しいディスクのエントリを追加します。

### 15.3.2. コマンドラインユーティリティの利用

#### 15.3.2.1. スライスの利用

このセットアップ方法では、 すでにコンピュータに他のオペレーティングシステムがインストールされていても 正しく協調動作することが可能で、他のオペレーティングシステムの `fdisk` ユーティリティを混乱させることもありません。 新しいディスクにインストールする場合は、 この方法を用いることが推奨されています。 後述する `専用モード` は、 そうしなければならない理由がある時にのみ、 利用するようにしてください。

    # dd if=/dev/zero of=/dev/da1 bs=1k count=1
    # fdisk -BI da1 # 新しいディスクの初期化
    # disklabel -B -w -r da1s1 auto # ディスクにラベルを付ける
    # disklabel -e da1s1 # 作成したディスクラベルを編集し、パーティションを追加する
    # mkdir -p /1
    # newfs /dev/da1s1e # 作成したすべてのパーティションに対してこれを繰り返す
    # mount /dev/da1s1e /1 # パーティションをマウントする
    # vi /etc/fstab # /etc/fstab に適切なエントリを追加する

IDE ディスクを使う場合は `da` の部分を `ad` とします。4.X より前のシステムでは、 (訳注: `ad` ではなく) `wd` としてください。

#### 15.3.2.2. 専用モード

新しいドライブを他の OS と共有しない場合には `専用` モードを用いることもできます。 このモードはマイクロソフトの OS を混乱させることを憶えておいてください (しかし、それらによって壊されることはありません)。 一方、IBM の OS/2 はどんなパーティションでも見つけたら理解できなくても “専有” します。

    # dd if=/dev/zero of=/dev/da1 bs=1k count=1
    # disklabel -Brw da1 auto
    # disklabel -e da1 # `e' パーティションの作成
    # newfs -d0 /dev/da1e
    # mkdir -p /1
    # vi /etc/fstab # /dev/da1e エントリの追加
    # mount /1

もう一つの方法は次の通り。

    # dd if=/dev/zero of=/dev/da1 count=2
    # disklabel /dev/da1 | disklabel -BrR da1 /dev/stdin
    # newfs /dev/da1e
    # mkdir -p /1
    # vi /etc/fstab # /dev/da1e エントリの追加
    # mount /1

> Note: FreeBSD 5.1-RELEASE から、従来の disklabel(8) プログラムは bsdlabel(8) ユーティリティに置き換えられました。bsdlabel(8) では、 使用されていない数多くのオプションやパラメタが削除されました。 たとえば `-r` オプションは bsdlabel(8) では取り除かれました。詳細については bsdlabel(8) のマニュアルページを参照してください。

## 15.4. RAID

### 15.4.1. ソフトウェア RAID

#### 15.4.1.1. Concatenated Disk Driver (CCD) の設定

原作: Christopher Shumway. 改訂: Jim Brown.

大容量記録に関する解決法を選択する際にもっとも重視すべき要素は、 速度、信頼性、そして費用です。 三つを同時にバランスよく実現することは稀です。 通常、速くて信頼性のある大容量記録装置は高価であり、 費用を抑えようとすると速度または信頼性のどちらかが犠牲になります。

ここで例にあげるシステムの設計においては、 費用が最も重要な要素として、次に速度、最後に信頼性が選択されています。 このシステムでのデータ転送速度は結局のところネットワークによって制限されます。 信頼性は大変重要です。ただし、以下で説明する CCD ドライブは、 データ自体はすでに CD-R に完全にバックアップしてあるもの (したがって交換は簡単にできます) の、オンラインデータの役割をさせています。

あなた自身の要求事項を決定することは、 大容量記録に関する解決法を選択することの最初の段階です。 もしあなたの要求事項が費用より速度または信頼性を優先するなら、 解決法はこのシステムとは違うものになるでしょう。

##### 15.4.1.1.1. ハードウェアのインストール

IDE システムディスクに加えて、Western Digital 製の 30GB, 5400RPM の IDE ディスク三台を使って、 以下に説明されているような約 90GB のオンラインストレージとなる CCD ディスクを作成しました。各 IDE ディスクがそれぞれの IDE コントローラとケーブルをもっていることが理想的ですが、 費用を最低限にするために、 IDE コントローラを追加していません。その代わり、それぞれの IDE コントローラがマスタデバイスを一つ、 スレーブデバイスを一つ持つように、 ディスクはジャンパを使って設定されています。

再起動の際に、システム BIOS が接続されたディスクを自動的に検出するように設定されました。 より重要なことは、FreeBSD が再起動の際にそれらを検出することです。

    ad0: 19574MB <WDC WD205BA> [39770/16/63] at ata0-master UDMA33
    ad1: 29333MB <WDC WD307AA> [59598/16/63] at ata0-slave UDMA33
    ad2: 29333MB <WDC WD307AA> [59598/16/63] at ata1-master UDMA33
    ad3: 29333MB <WDC WD307AA> [59598/16/63] at ata1-slave UDMA33

> Note: FreeBSD がディスクをすべて検出しないときは、 ジャンパを正しく設定してあるか確認してください。多くの IDE ドライブは “ケーブルセレクト” ジャンパを持っています。 これはマスタ/スレーブの関係を設定するジャンパでは ありません。ドライブの文書を参照して、 正しいジャンパ設定を見つけてください。

次に、ファイルシステムの一部分として、 それらをどのように接続するのかを考慮します。vinum(8) および ccd(4) の両方を検討すべきでしょう。この設定では、ccd(4) を選択しました。

##### 15.4.1.1.2. CCD の設定

ccd(4) ドライバは、いくつかの同じディスクを使って、 一つの論理的ファイルシステムに連結することができます。 ccd(4) を使用するためには、カーネルが ccd(4) に対応している必要があります。 次の行をカーネルコンフィギュレーションファイルに追加して、 カーネルを再構築し、再インストールしてください。

    pseudo-device   ccd     4

5.X システムでは、 上記の代わりに次の行を追加しなければなりません。

    device   ccd

> Note: FreeBSD 5.X では ccd(4) デバイスの数を指定する必要はありません。ccd(4) デバイスドライバは自己複製するようになりました -- 新しいデバイスインスタンスは、 必要に応じてその都度自動的に作成されます。

FreeBSD 3.0 以降では、 カーネルモジュールを読み込んで ccd(4) に対応することもできます。

ccd(4) を設定するために、まず disklabel(8) を使用してディスクにラベルを書き込まなくてはなりません。

    disklabel -r -w ad1 auto
    disklabel -r -w ad2 auto
    disklabel -r -w ad3 auto

このコマンドはディスク全体を示す `ad1c`, `ad2c` および `ad3c` に対するディスクラベルを作成します。

> Note: FreeBSD 5.1-RELEASE から、従来の disklabel(8) プログラムは bsdlabel(8) ユーティリティに置き換えられました。bsdlabel(8) では、 使用されていない数多くのオプションやパラメタが削除されました。 たとえば `-r` オプションは bsdlabel(8) では取り除かれました。詳細については bsdlabel(8) のマニュアルページを参照してください。

次に、ディスクラベルのタイプを変更します。 disklabel(8) を使用してディスクラベルを編集してください。

    disklabel -e ad1
    disklabel -e ad2
    disklabel -e ad3

このコマンドは `EDITOR` 環境変数に設定されているエディタ (一般的には vi(1)) でそれぞれのディスクの現在のディスクラベルを開きます。

変更されていないディスクラベルは以下のようになります。

    8 partitions:
    #        size   offset    fstype   [fsize bsize bps/cpg]
      c: 60074784        0    unused        0     0     0   # (Cyl.    0 - 59597)

ccd(4) で使用する `e` パーティションを作成します。通常では `c` パーティションの行をコピーすれば良いでしょう。しかし、 `fstype` は `4.2BSD` でなければ なりません。 ディスクラベルは以下のようになるでしょう。

    8 partitions:
    #        size   offset    fstype   [fsize bsize bps/cpg]
      c: 60074784        0    unused        0     0     0   # (Cyl.    0 - 59597)
      e: 60074784        0    4.2BSD        0     0     0   # (Cyl.    0 - 59597)

##### 15.4.1.1.3. ファイルシステムの構築

`ccd0c` デバイスノードはまだ存在していないかも知れません。 そのときは、次のコマンドを実行して作成してください。

    cd /dev
    sh MAKEDEV ccd0

> Note: FreeBSD 5.0 では devfs(5) が `/dev` 以下のデバイスノードを自動的に管理するので、 `MAKEDEV`を使用する必要はありません。

すべてのディスクにラベルを書き込んだので、 ccd(4) を構築してください。 これを行うためには、以下のようなオプションで ccdconfig(8) を使います。

    ccdconfig ccd0 32 0 /dev/ad1e /dev/ad2e /dev/ad3e

各オプションの使用法と意味は以下の通りです。

  一番目の引数は設定するデバイスです。この例の場合は `/dev/ccd0c` です。 `/dev/` の部分はオプションです。
  ファイルシステムに対するインタリーブです。インタリーブは、 ディスクブロック内のストライプサイズを定義します。 ディスクブロックは通常 512 バイトです。したがって 32 インタリーブは 16,384 バイトとなります。
  これは ccdconfig(8) に対するフラグです。 ドライブミラーリングを有効にしたい場合、 ここにフラグを指定します。 この設定では ccd(4) に対するミラーリングは提供しませんので、 0 (ゼロ) を指定しています。
  この ccdconfig(8) に対する最後の引数は、 アレイ内に置くデバイスです。 それぞれのデバイスに対する完全なパス名を使用します。

ccdconfig(8) を実行すると ccd(4) が設定されます。 これでファイルシステムをインストールすることが可能です。 オプションについて newfs(8) を参照するか、 次のように実行してください。

    newfs /dev/ccd0c

##### 15.4.1.1.4. 自動的に設定する

一般的に、再起動するたびに ccd(4) をマウントしたいと思うでしょう。これを行うために、 まず設定をしなければなりません。次のコマンドを用いて、 現在の設定を `/etc/ccd.conf` に書き出します。

    ccdconfig -g > /etc/ccd.conf

`/etc/ccd.conf` が存在すると、 再起動の際に `/etc/rc` スクリプトが `ccdconfig -C` を実行します。これにより、 ccd(4) は自動的に設定された後、マウントされます。

> Note: シングルユーザモードで起動している場合には、 ccd(4) を mount(8) する前に、 アレイを設定するために次のコマンドを実行する必要があります。

>     ccdconfig -C

自動的に ccd(4) をマウントするには、 `/etc/fstab` に ccd(4) のエントリ追加します。このように設定すると起動時にマウントされます。

    /dev/ccd0c              /media       ufs     rw      2       2

#### 15.4.1.2. Vinum ボリュームマネージャ

Vinum ボリュームマネージャは、 仮想ディスクドライブを実装したブロックデバイスドライバです。 Vinum は、ディスクハードウェアをブロックデバイスインタフェースから 分離し、データを配置します。 その結果、ディスク記憶装置を従来のスライスで扱うのと比較して、 柔軟性、性能および信頼性が向上しています。 vinum(8) は RAID-0, RAID-1 および RAID-5 モデル、 そしてそれぞれの組合せを実装しています。

vinum(8) の詳細については Vinum ボリュームマネジャ を参照してください。

### 15.4.2. ハードウェア RAID

FreeBSD は、さまざまなハードウェア RAID コントローラにも対応しています。これらのデバイスはアレイを制御するための 特別なソフトウェアを FreeBSD で必要することなく、 RAID サブシステムを制御します。

カード上の BIOS を使用して、 カードはそれ自身でディスク操作のほとんどを制御します。以下は Promise IDE RAID コントローラを使用した設定の簡単な説明です。 このカードがインストールされ、システムが起動したときには、 情報の入力を促すプロンプトを表示します。 指示にしたがってカードの設定画面に進んでください。 接続されたドライブを組み合わせるように設定することができます。 設定後、ディスクは FreeBSD に対して単一のドライブのように見えます。 他の RAID レベルは適宜設定できます。

### 15.4.3. ATA RAID1 アレイの再構築

FreeBSD はアレイ内の障害ディスクを動作中に交換できます。 ただし、再起動前にそれを検知していることが必要です。

`/var/log/messages` または dmesg(8) の出力に次のような行があるでしょう。

    ad6 on monster1 suffered a hard error.
    ad6: READ command timeout tag=0 serv=0 - resetting
    ad6: trying fallback to PIO mode
    ata3: resetting devices .. done
    ad6: hard error reading fsbn 1116119 of 0-7 (ad6 bn 1116119; cn 1107 tn 4 sn 11) status=59 error=40
    ar0: WARNING - mirror lost

atacontrol(8) を使用して詳細を調べてください。

    # atacontrol list
    ATA channel 0:
        Master:      no device present
        Slave:   acd0 <HL-DT-ST CD-ROM GCR-8520B/1.00> ATA/ATAPI rev 0

    ATA channel 1:
        Master:      no device present
        Slave:       no device present

    ATA channel 2:
        Master:  ad4 <MAXTOR 6L080J4/A93.0500> ATA/ATAPI rev 5
        Slave:       no device present

    ATA channel 3:
        Master:  ad6 <MAXTOR 6L080J4/A93.0500> ATA/ATAPI rev 5
        Slave:       no device present

    # atacontrol status ar0
    ar0: ATA RAID1 subdisks: ad4 ad6 status: DEGRADED

1. ディスクを安全に取り外すために、 まずアレイから切り離します。

       # atacontrol detach 3

2. ディスクを取り外します。

3. スペアのディスクを取り付けます。

       # atacontrol attach 3
       Master:  ad6 <MAXTOR 6L080J4/A93.0500> ATA/ATAPI rev 5
       Slave:   no device present

4. アレイを再構築します。

       # atacontrol rebuild ar0

5. 再構築コマンドは完了するまで他の操作を受け付けません。しかし、 もう一つ別のターミナルを (Alt+F`n` を押して) 開き、 次のコマンドを実行すると進行状態を確認することができます。

       # dmesg | tail -10
       [output removed]
       ad6: removed from configuration
       ad6: deleted from ar0 disk1
       ad6: inserted into ar0 disk1 as spare

       # atacontrol status ar0
       ar0: ATA RAID1 subdisks: ad4 ad6 status: REBUILDING 0% completed

6. 操作が完了するまでお待ちください。

## 15.5. 光メディア (CD & DVD) の作成と使用

寄稿: Mike Meyer.

### 15.5.1. はじめに

CD は他の一般的なディスクと異なる様々な特徴を持っています。 そもそもユーザが書き込むことができません。 また遅延なしで連続的に読み出せるように、 トラック間をヘッドが移動しないですむようにデザインされています。 さらにこのサイズのメディアの中ではシステムをまたぐデータの 移動が比較的簡単でもあります。

CD はトラックの概念を持っていますが、 これはデータを連続的に読み出すためのものであってディスクの物理特性ではありません。 FreeBSD で CD を作成するには、まず CD のトラックとなるデータファイルを用意し、 そのトラックを CD に書き込みます。

ISO 9660 ファイルシステムはこの様な差異を扱うべく設計されました。 その結果、ファイルシステムは一般的に使用するのに差しつかえない程度に 制限されて標準化されています。幸いなことに、ISO 9660 ファイルシステムには拡張機構が提供されています。適切に書かれた CD は、 拡張機構に対応したシステムでは拡張を利用して、そうでないシステムでは 拡張機構を使用しない範囲で動作するようになっています。

`sysutils/mkisofs` プログラムは ISO 9660 ファイルシステムを含むデータファイルを作成するのに使われます。 これには様々な拡張をサポートするオプションがあり、 以下で説明します。 このソフトウェアは、ports の `sysutils/mkisofs` からインストールすることができます。

CD に書き込むためのツールは、お使いの CD ライタが ATAPI 接続か否かにも依存します。ATAPI CD ライタなら、ベースシステムの一部である `burncd` プログラムを使います。SCSI や USB の CD ライタなら、ports の `sysutils/cdrecord` をインストールして `cdrecord` プログラムを使うべきでしょう。

`burncd` が対応しているドライブは限定されています。 ドライブが対応されているかどうかを確認するには、 CD-R/RW supported drives にある一覧を見てください。

> Note: FreeBSD 5.X または FreeBSD 4.8-RELEASE 以降のバージョンを使用している場合、 ATAPI/CAM モジュール を使用すると ATAPI ハードウェア上で SCSI ドライブ用の `cdrecord` および他のツールを使用できるようになります。

### 15.5.2. mkisofs

`sysutils/mkisofs` は UNIX ファイルシステムの名前空間におけるディレクトリツリーのイメージとして ISO 9660 ファイルシステムを作成します。 最も簡単な使い方は以下の通りです。

    # mkisofs -o imagefile.iso /path/to/tree

このコマンドは `/path/to/tree` 以下のディレクトリツリーのコピーである ISO 9660 ファイルシステムを含んだ `imagefile.iso` ファイルを作成します。この過程において、ファイル名は標準的な ISO 9660 ファイルシステムの制限に適合するようなファイル名に対応づけられ、 ISO ファイルシステムでファイル名を文字化できないファイルは除外されます。

この制限を回避するために利用できるオプションはいくつもあります。 特に `-R` オプションは UNIX システムで標準的な Rock Ridge 拡張を有効にします。`-J` オプションは Microsoft のシステムで標準的な Joliet 拡張を有効にし、 `-hfs` オプションは Mac OS で使用されている HFS ファイルシステムを作成するために使われます。

FreeBSD でしか使わないのであれば、`-U` オプションを使用するとあらゆるファイル名制限を無効にできます。 さらに `-R` オプションとともに使うことで FreeBSD と同一のファイルシステムイメージを作成できますが、 これは ISO 9660 標準の多くを無視しています。

一般的に使われる最後のオプションは `-b` オプションです。 これは “El Torito” ブータブル CD を作成するのに使う起動イメージのありかを指定します。 このオプションは引数として起動イメージへのパスを、 CD に書き込まれるディレクトリツリーの頂点からの相対位置で取ります。 したがって `/tmp/myboot` がブート可能な FreeBSD システムで `/tmp/myboot/boot/cdboot` にブートイメージがあるならば、以下のようにすることで ISO 9660 ファイルシステムのイメージを `/tmp/bootable.iso` に作成することができます。

    # mkisofs -U -R -b boot/cdboot -o /tmp/bootable.iso /tmp/myboot

この後、カーネルで `vn` (FreeBSD 4.X) または `md` (FreeBSD 5.X) が設定されていれば、 ファイルシステムを以下のようにしてマウントすることができます。

    # vnconfig -e vn0c /tmp/bootable.iso
    # mount -t cd9660 /dev/vn0c /mnt

FreeBSD 4.X および FreeBSD 5.X に対しては以下の通りです。

    # mdconfig -a -t vnode -f /tmp/bootable.iso -u 0
    # mount -t cd9660 /dev/md0 /mnt

`/mnt` と `/tmp/myboot` が同一かどうか確認してください。

`sysutils/mkisofs` には挙動を細かく制御するために他にもたくさんのオプションがあります。 特に、ISO 9660 レイアウトの変更や Joliet および HFS ディスク作成などの 詳細は mkisofs(8) のマニュアルページをご覧ください。

### 15.5.3. burncd

あなたが持っているのが ATAPI CD ライタなら、CD に ISO イメージを書き込むために `burncd` コマンドが使えます。 `burncd` はベースシステムの一部で `/usr/sbin/burncd` としてインストールされています。 使い方はとても単純でオプションも少ししかありません。

    # burncd -f cddevice data imagefile.iso fixate

以上のコマンドは `imagefile.iso` のコピーを `cddevice` に書き込みます。 デフォルトのデバイスは `/dev/acd0c` です。 書き込み速度や操作完了後に CD を自動的に取り出す方法、 オーディオデータの書き込みなどのオプションについては burncd(8) を見てください。

### 15.5.4. cdrecord

あなたが持っている CD ライタが ATAPI ではなければ、 CD を書き込むのに `cdrecord` を使う必要があります。 `cdrecord` はベースシステムの一部ではなく、 `sysutils/cdrtools` の port または 適切な package を利用してインストールしなければなりません。 なお、ベースシステムを変更するとバイナリに矛盾が発生し、 “コースター” を作ってしまうおそれがあります。 したがって、システムをアップグレードする度にこの port も作り直すか、 あるいはFreeBSD の安定版を追いかけているのならば、 新しいバージョンが利用できるようになった時に ports をアップグレードする必要があります。

`cdrecord` にはたくさんのオプションがありますが、 基本的な使い方は `burncd` よりもさらに簡単です。 ISO 9660 イメージを書き込むには以下のようにします。

    # cdrecord dev=device imagefile.iso

`cdrecord` のトリッキーな部分は、使用する `dev` を見つけるところにあります。 適切な設定を見つけるためには `cdrecord` の `-scanbus` フラグを使います。 たとえば、以下のような結果が出力されるでしょう。

    # cdrecord -scanbus
    Cdrecord 1.9 (i386-unknown-freebsd4.2) Copyright (C) 1995-2000 Jörg Schilling
    Using libscg version 'schily-0.1'
    scsibus0:
            0,0,0     0) 'SEAGATE ' 'ST39236LW       ' '0004' Disk
            0,1,0     1) 'SEAGATE ' 'ST39173W        ' '5958' Disk
            0,2,0     2) *
            0,3,0     3) 'iomega  ' 'jaz 1GB         ' 'J.86' Removable Disk
            0,4,0     4) 'NEC     ' 'CD-ROM DRIVE:466' '1.26' Removable CD-ROM
            0,5,0     5) *
            0,6,0     6) *
            0,7,0     7) *
    scsibus1:
            1,0,0   100) *
            1,1,0   101) *
            1,2,0   102) *
            1,3,0   103) *
            1,4,0   104) *
            1,5,0   105) 'YAMAHA  ' 'CRW4260         ' '1.0q' Removable CD-ROM
            1,6,0   106) 'ARTEC   ' 'AM12S           ' '1.06' Scanner
            1,7,0   107) *

リストにあるデバイスに対する適切な `dev` の値がここに示されています。あなたの CD ライタをこのリストから見つけ、 カンマで区切られた 3 つの数値を `dev` の値として使ってください。この例では CRW デバイスは 1,5,0 なので、適切な入力は `dev=1,5,0` となります。 値を明示するもっと簡単な方法もあります。詳細は cdrecord(1) を見てください。そこにはオーディオトラックを書き込む方法や、 書き込み速度その他を操作する方法も書かれています。

### 15.5.5. オーディオ CD の複製

CD からオーディオデータを連続したファイルに展開し、ブランク CD にこれらのファイルを書き込むことで、オーディオ CD を複製することができます。 この手順は ATAPI および SCSI ドライブの間で少し異なります。

SCSI ドライブ

1. `cdda2wav` を使用してオーディオを展開します。

       % cdda2wav -v255 -D2,0 -B -Owav

2. `cdrecord` を使用して `.wav` ファイルに書き出します。

       % cdrecord -v dev=2,0 -dao -useinfo  *.wav

   Section 15.5.4 に説明されているように `2.0` が適切に指定されていることを確かめてください。

ATAPI ドライブ

1. ATAPI CD ドライバでは、それぞれのトラックを `/dev/acd`d`t`nn`` のように利用できます。 ここで `d` はドライブ番号であり、 `nn` は二桁十進のトラック番号です。 一桁の場合 0 を前に付加する必要があります。 したがって、一番目のディスクの一番目のトラックは `/dev/acd0t01`、二番目のトラックは `/dev/acd0t02`、三番目のトラックは `/dev/acd0t03` などとなります。

   適切なデバイスファイルが `/dev` に存在することを確かめてください。 存在しなければ、たとえば次のようにして作成します。

       # cd /dev
       # sh MAKEDEV acd0t99

   > Note: FreeBSD 5.0 では devfs(5) が `/dev` にエントリを自動的に作成、 管理するので、`MAKEDEV` を使用する必要はありません。

2. dd(1) を使用して各トラックを展開します。 ファイルを展開する際、ブロックサイズを指定しなければなりません。

       # dd if=/dev/acd0t01 of=track1.cdr bs=2352
       # dd if=/dev/acd0t02 of=track2.cdr bs=2352
       ...

3. `burncd` を使用して、 展開したファイルをディスクに書き込みます。 これらがオーディオファイルであること、 そして書き込みが終了したときに `burncd` がディスクを固定 (fixate) することを明示しなければなりません。

       # burncd -f /dev/acd0c audio track1.cdr track2.cdr ... fixate

### 15.5.6. データ CD の複製

データ CD を、`sysutils/mkisofs` を用いて作成されたイメージファイルと機能的に等価なイメージファイルにコピーできます。 これを使用して、すべてのデータ CD を複製することができます。 ここでの例は CDROM デバイスが `acd0` であるとしています。あなたの CDROM デバイスに読み替えてください。 CDROM の場合には、パーティション全体またはディスク全体 を指定するために `c` をデバイス名の後に追加しなければなりません。

    # dd if=/dev/acd0c of=file.iso bs=2048

これでディスクイメージを取り出すことができました。 すでに説明した方法を用いて CD に書き込むことができます。

### 15.5.7. データ CD の使用

さて、標準的なデータ CDROM を作成したので、 おそらく次はそれをマウントしてデータを読み出したいと思うでしょう。 デフォルトでは mount(8) は、ファイルシステムタイプを `ufs` としています。 次のように実行しようとすると、

    # mount /dev/cd0c /mnt

“`Incorrect super block`” というエラーが返されてマウントできないでしょう。 CDROM は `UFS` ファイルシステムではないために、 このような手順でマウントしようすると失敗します。 ファイルシステムのタイプが `ISO9660` であると mount(8) に教えさえすれば、すべてはうまく動作します。 mount(8) に `-t cd9660` オプションを指定することでこれを行います。 たとえば `/dev/cd0c` の CDROM デバイスを `/mnt` にマウントしたい場合は、 以下のように実行します。

    # mount -t cd9660 /dev/cd0c /mnt

使用している CDROM インタフェースによっては、 デバイス名 (この例では `/dev/cd0c`) が異なるかもしれないことに注意してください。 また、`-t cd9660` オプションは、単に mount_cd9660(8) を実行します。 この例を以下のように短縮することもできます。

    # mount_cd9660 /dev/cd0c /mnt

一般的にこの方法では、すべてのメーカの データ CDROM を使用することができます。しかしながら、特定の ISO 9660 拡張が施されたディスクでは奇妙な動作をするかもしれません。 たとえば Joliet ディスクは、 すべてのファイル名を 2 バイトの Unicode 文字で格納します。 FreeBSD カーネルは (まだ) Unicode を理解できないので、 非英語文字はクエスチョンマークで表示されます (FreeBSD 4.3 以降を使用している場合、CD9660 ドライバには適切な Unicode 変換表を読み込むための急ごしらえのフックが含まれています。 いくつかの共通のエンコードに対するモジュールは `sysutils/cd9660_unicode` port から利用可能です)。

CDROM をマウントしようとする時に、 “`Device not configured`” と表示されるかもしれません。これは、ディスクがトレーにないと CDROM ドライブが判断しているか、 ドライブがバス上に認識できないことを通常意味します。 ディスクが挿入されたことを CDROM ドライブが認識するには数秒かかりますので、 辛抱強く待ってください。

バスのリセットに返答するためのタイムアウトが短いために、時々 SCSI CDROM は認識に失敗するかもしれません。SCSI CDROM を持っている場合は、 次のオプションをカーネルコンフィギュレーションファイルに追加して、 カーネルを再構築してください。

    options SCSI_DELAY=15000

これより、SCSI バスを起動時に 15 秒間停止させて、 CDROM ドライブがバスリセットに応答する機会を与えます。

### 15.5.8. Raw データ CD の書き込み

ISO 9660 ファイルシステムを作成すること無く、 ファイルを直接 CD に書き込むこともできます。 この方法をバックアップ目的に使用している人もいます。 これは、標準 CD を書き込むよりもさらに速く実行することができます。

    # burncd -f /dev/acd1c -s 12 data archive.tar.gz fixate

このように CD に書き込まれたデータを取得するには、 raw デバイスノードからデータを読み込まなくてはなりません。

    # tar xzvf /dev/acd1c

このディスクを通常の CDROM としてマウントすることはできません。 このような CDROM は FreeBSD を除いて、 他のすべてのオペレーティングシステムでは読み込むことはできません。 CD をマウントしたいか、 その他のオペレーティングシステムとデータを共有したい場合は、 上記に説明したように `sysutils/mkisofs` を使用しなくてはなりません。

### 15.5.9. ATAPI/CAM ドライバの使用

このドライバは、ATAPI デバイス (CD-ROM, CD-RW, DVD ドライブなど) へ SCSI サブシステムを通じてアクセスすることを可能にします。 これにより、`sysutils/cdrdao` または cdrecord(1) のようなアプリケーションが使用できるようになります。

このドライバを使用するためには、 カーネルコンフィギュレーションファイルに次の行を追加する必要があります。

    device atapicam
    device scbus
    device cd
    device pass

次の行もカーネルコンフィギュレーションファイルに必要です。

    device ata
    device atapicd

両方がすでに存在しなければなりません。

それから再構築し、新しいカーネルをインストールし、 コンピュータを再起動します。 起動プロセス中にディスクライタは以下のように表示されるでしょう。

    acd0: CD-RW <MATSHITA CD-RW/DVD-ROM UJDA740> at ata1-master PIO4
    cd0 at ata1 bus 0 target 0 lun 0
    cd0: <MATSHITA CDRW/DVD UJDA740 1.00> Removable CD-ROM SCSI-0 device
    cd0: 16.000MB/s transfers
    cd0: Attempt to query device size failed: NOT READY, Medium not present - tray closed

ドライブは `/dev/cd0` デバイスを通じてアクセスすることが可能となります。 たとえば、次のようにして CD-ROM を `/mnt` にマウントします。

    # mount -t cd9660 /dev/cd0c /mnt

`root` 権限で次のコマンドを実行して、 ライタの SCSI アドレスを得ることができます。

    # camcontrol devlist
    <MATSHITA CDRW/DVD UJDA740 1.00>   at scbus1 target 0 lun 0 (pass0,cd0)

したがって、`1,0,0` が cdrecord(1) およびその他の SCSI アプリケーションで使用する SCSI アドレスです。

ATAPI/CAM および SCSI システムの詳細は atapicam(4) および cam(4) マニュアルページを参照してください。

## 15.6. フロッピーディスクの作成と使用

原作: Julio Merino. 改訂: Martin Karlsson.

フロッピーディスクにデータを格納することはしばしば役にたちます。 たとえば、ある人が他のリムーバブル記録メディアを何も持っていないときや、 小さなデータを他のコンピュータに移動させる必要があるときです。

この節では、FreeBSD におけるフロッピーディスクの使用方法を説明します。 主に 3.5 インチの DOS フロッピーのフォーマットと操作方法を扱いますが、 他のフロッピーディスクの形式についても概念は似ています。

### 15.6.1. フロッピーのフォーマット

#### 15.6.1.1. デバイス

他のデバイスと同様に、フロッピーディスクは `/dev` にあるエントリを通じてアクセスされます。4.X およびそれ以前のリリースにおいて raw フロッピーディスクにアクセスするには `/dev/fd`N`` または `/dev/fd`NX`` を使用します。`N` はドライブ番号を表し、 大抵は 0 です。`X` は文字を表します。

5.0 およびそれ以降のリリースでは、単に `/dev/fd`N`` を使用します。

##### 15.6.1.1.1. 4.X およびそれ以前のリリースでのディスクサイズ

`/dev/fd`N`.`size`` というデバイスもあります。 `size` はフロッピーディスクのサイズをキロバイトで示したものです。 これらのエントリは低レベルフォーマットの際に、 ディスクサイズを決定するのに使用されます。 1440kB は以下の例で使用されるサイズです。

時々 `/dev` 下のエントリは (再) 作成されなければなりません。次のコマンドでこれを行います。

    # cd /dev && ./MAKEDEV "fd*"

##### 15.6.1.1.2. 5.X およびそれ以降のリリースでのディスクサイズ

FreeBSD 5.0 では devfs(5) が `/dev` 内のエントリを自動的に管理するので、 `MAKEDEV`を使用する必要はありません。

所望のディスクサイズは fdformat(1) に `-f` フラグを通して渡されます。対応しているサイズは fdcontrol(8) のマニュアルページに掲載されていますが、最良に動作するのは 1440kB だと助言しておきます。

#### 15.6.1.2. フォーマット

フロッピーディスクは、 使用前に低レベルフォーマットをする必要があります。 通常、ベンダは低レベルフォーマット済みのディスクを出荷していますが、 フォーマットはメディアの品質を確認するよい方法です。 より大きな (または小さな) ディスクサイズにすることも可能ですが、 ほとんどのフロッピーディスクのサイズは 1440kB で動作するように設計されています。

フロッピーディスクを低レベルフォーマットするには fdformat(1) を使用する必要があります。 このユーティリティは引数としてデバイス名を指定します。

ディスクが良好かあるいは不良であるかを決定するのに役立つので、 エラーメッセージをすべてメモに取っておいてください。

##### 15.6.1.2.1. 4.X 以前のリリースでのフォーマット

`/dev/fd`N`.`size`` デバイスを使ってフロッピーをフォーマットします。 新しい 3.5 インチフロッピーディスクをドライブに挿入し、 以下のコマンドを実行してください。

    # /usr/sbin/fdformat /dev/fd0.1440

##### 15.6.1.2.2. 5.0 以降のリリースでのフォーマット

`/dev/fd`N`` デバイスを使用してフロッピーをフォーマットします。 新しい 3.5 インチフロッピーディスクをドライブに挿入し、 以下のコマンドを実行してください。

    # /usr/sbin/fdformat -f 1440 /dev/fd0

### 15.6.2. ディスクラベル

ディスクを低レベルフォーマットしたら、 次にディスクラベルを作成する必要があります。 ディスクラベルは後で破棄されますが、 システムがディスクのサイズとジオメトリを決定するのに必要になります。

新しいディスクラベルはディスク全体を引き継ぎ、 フロッピーのジオメトリに関する適切な情報のすべてが含まれます。 ディスクラベルに対するジオメトリの値は `/etc/disktab` に掲載されています。

次のように disklabel(8) を実行できます。

    # /sbin/disklabel -B -r -w /dev/fd0 fd1440

> Note: FreeBSD 5.1-RELEASE から、従来の disklabel(8) プログラムは bsdlabel(8) ユーティリティに置き換えられました。bsdlabel(8) では、 使用されていないオプションおよびパラメタの数多くが削除されました。 たとえば `-r` オプションは bsdlabel(8) では取り除かれました。詳細については bsdlabel(8) マニュアルページを参照してください。

### 15.6.3. ファイルシステム

これでフロッピーを高レベルフォーマットする準備ができました。これは FreeBSD がディスクを読み書きする新しいファイルシステムを作成します。 新しいファイルシステムを作成するとディスクラベルは破棄されます。 したがって、ディスクを再フォーマットするときには、 ディスクラベルを再作成しなくてはなりません。

フロッピーのファイルシステムには UFS または FAT を使用できます。 フロッピーに対しては FAT が一般的によりよい選択です。

フロッピー上に新しいファイルシステムを作成するには次のようにします。

    # /sbin/newfs_msdos /dev/fd0

これでディスクが使用できるようになりました。

### 15.6.4. フロッピーの使用

フロッピーを使用するために、mount_msdos(8) (4.X 以前のリリース) または mount_msdosfs(8) (5.0 以後のリリース) を用いてマウントします。 Ports Collection から `emulators/mtools` を使用することもできます。

## 15.7. データテープの作成と使用

一般的なテープメディアには 4mm, 8mm, QIC, ミニカートリッジ、 DLT があります。

### 15.7.1. 4mm (DDS: Digital Data Storage)

4mm テープはワークステーションのバックアップメディアとして QIC に取って代わりつつあります。この傾向は QIC ドライブの主要なメーカであった Archive を Conner が買収し QIC ドライブの製造を中止したことで加速しました。 4mm ドライブは小型で静かですが 8mm ドライブが持っている信頼性ほど、その評判は良くありません。 また、4mm カートリッジは 8mm カートリッジよりも安価で小型 (3 x 2 x 0.5 インチ、76 x 51 x 12 mm) になっています。 ただし、8mm と同様に、4mm のヘッドはヘリカルスキャン方式 (訳注: VTR と同様の回転ヘッドを使う方式) を採用しているため、比較的寿命が短いです。

ドライブのデータスループットは、150 kB/s から 最大で 500 kB/s 程度です。 データ容量は 1.3 GB から 2.0 GB です。 ドライブのほとんどで利用可能なハードウェア圧縮を使用すると、 容量が約 2 倍になります。 マルチドライブテープライブラリユニットは 1 つの筐体に 6 つのドライブを収容可能で、自動的にテープの交換ができます。 ライブラリの容量は 240 GB に達します。

現在の DDS-3 標準は 12 GB (圧縮時 24 GB) までのテープ容量に対応しています。

8mm ドライブと同様に 4mm ドライブはヘリカルスキャンを使用します。 ヘリカルスキャン方式の利点および欠点はすべて 4mm および 8mm ドライブの両方に当てはまります。

テープは 2,000 回のパスあるいは 100 回フルバックアップした後には交換するべきです。

### 15.7.2. 8mm (Exabyte)

8mm テープは SCSI テープドライブとして最もよく使われているもので、 データ交換用として最良の選択です。ほとんどのサイトには Exabyte 2 GB 8mm テープドライブがあるでしょう。8mm ドライブは信頼性が高く、使いやすく、静かです。 カートリッジは安価で小型です (4.8 x 3.3 x 0.6 インチ、122 x 84 x 15 mm)。8mm テープの欠点は、テープとヘッドの相対的な速度が高速なために、 比較的ヘッドとテープの寿命が短いことです。

データスループットは 250 kB/s から 500 kB/s 程度です。データ容量は 300 MB から 7 GB です。 ほとんどのドライブで利用可能なハードウェア圧縮を利用すると、 容量が約 2 倍になります。 これらのドライブは単一のユニットから、または 6 つのドライブと 120 のテープを一つの筐体に収容したマルチドライブテープライブラリまで利用可能です。 テープはユニットによって自動的に取り換えられます。 ライブラリの容量は 840 GB 以上に達します。

Exabyte の “Mammoth” モデルはテープ 1 本あたり 12 GB (圧縮時 24 GB) に対応し、 従来のテープドライブと比べ費用は約 2 倍になります。

データはヘリカルスキャンを用いてテープに記録されます。 ヘッダはメディアに対してある傾き (約 6 度) に配置されます。 テープはヘッドのある円筒の周の 270 度にわたって接触します。 テープが円筒面を走行する間、円筒は回転しています。 この結果、高密度のデータのつまったトラックは、 狭い間隔でテープの上端と下端の間を斜めに横切ります。

### 15.7.3. QIC

QIC-150 テープとドライブは、 おそらく最も一般的に使われているドライブとメディアでしょう。 QIC テープドライブは “現実的な” バックアップドライブとしては最も高価でないものです。 欠点はメディアのコストです。QIC テープは 8mm や 4mm テープと比較して GB あたりのデータの保存で 5 倍ほど高価です。 しかし、あなたの必要とする量が半ダース程のテープで十分であれば、 QIC は正しい選択かもしれません。QIC は 最も一般的なテープドライブです。 すべてのサイトに QIC ドライブのどれかの容量のものがあります。問題は、 QIC は同じようなテープ (まったく同じ場合もある) に多様な記録密度があることです。QIC ドライブは静かではありません。 これらのドライブはデータ記録を開始する前に音をたててシークしますし、 リード、ライト、シークの時にはっきりと聞こえる音を出します。 QIC テープの大きさは (6 x 4 x 0.7 インチ、152 x 102 x 17 mm) です。 1/4 インチ幅のテープも使用している ミニカートリッジ は別に議論します。テープライブラリやチェンジャはありません。

データスループットは ~1500 kB/s から ~5000 kB/s 程度です。データ容量は 400 MB から 150 GB です。 ハードウェア圧縮が最近のドライブの多くで利用できます。 QIC ドライブは DAT ドライブに置き換えられつつあり、 あまり頻繁には使用されなくなっています。

データは複数のトラックに分かれてテープに記録されます。 トラックはテープメディアの長さ方向の一端からもう一方の端までです (訳注: 1 トラックの read/write が終わるとテープの走行方向を反転させ 次のトラックの read/write を行います)。トラックの数と、 それに対応するトラックの幅はテープの容量によって変わります。 すべてではありませんが、 最近のドライブはほとんど、少なくとも読み出しについては (場合によっては書き込みも) 下位互換性があります。 QIC はデータの安全性についてはよいといわれています (ヘリカルスキャンドライブに比べて機構は単純でより丈夫です)。

テープは 5000 回のバックアップで寿命となるでしょう。

### 15.7.4. XXX* ミニカートリッジ

### 15.7.5. DLT

DLT はここに示したドライブのタイプの中で最高速のデータ転送レートを発揮します。 1/2 インチ (12.5mm) テープが単リールのカートリッジ (4 x 4 x 1 インチ、100 x 100 x 25 mm) に入っています。 カートリッジのひとつの側面全体がスイングゲートになっています。 ドライブの機構がこのゲートを開け、テープリーダを引き出します。 テープリーダには楕円形の穴があり、 ドライブがテープを “引っ掛ける” のに使います。 巻き取りのためのリールはドライブの中にあります。 ここに挙げた他のカートリッジはすべて (9 トラックテープは唯一の例外です) 送り出しリールと巻き取りリールの両方がカートリッジの中にあります。

データスループットは約 1.5 MB/s で、4mm, 8mm, QIC テープドライブの 3 倍です。データ容量は単一のドライブで 10 GB から 20 GB の範囲です。マルチテープチェンジャ、 マルチテープドライブ、5 から 900 巻のテープを 1 から 20 ドライブで扱うマルチドライブテープライブラリがあり、 50 GB から 9 TB の容量が得られます。

圧縮によって、DLT Type IV フォーマットは 70 GB までの容量に対応しています。

データは (QICテープのように) テープの走行方向と平行に複数あるトラックへ記録されます。 2 つのトラックに同時書き込みを行います。 read/write ヘッドの寿命は比較的長いと言えます。 テープの走行が止まればヘッドとテープの間の相対運動は無いからです。

### 15.7.6. AIT

AIT は、Sony が発表した新しいフォーマットで、 テープ 1 本あたり 50 GB (圧縮時) まで格納できます。 テープにはメモリチップが搭載されており、 テープの内容の索引情報を保持しています。 他のテープではテープ上のファイルの位置を把握するのに数分必要とするのですが、 このテープドライブでは索引情報を読んで直ちに決定することができます。 SAMS:Alexandria のようなソフトウェアは、40 を超える ATI テープライブラリを操作できるのはもちろんのこと、 テープのメモリチップと直接通信して、スクリーンに内容を表示し、 どのファイルがどのテープにバックアップされたかを調べて、 正しいテープを見つけ、読み込み、 テープからデータを復元することができます。

このようなライブラリは大体 $20,000 くらいするので、 愛好家が購入できる価格帯からは外れてしまいます。

### 15.7.7. 新品のテープを初めて使う場合

全く新品の空テープを読もうとしたり書き込もうとすると、 処理は失敗するでしょう。 次のようなメッセージがコンソールに出力されるでしょう。

    sa0(ncr1:4:0): NOT READY asc:4,1
    sa0(ncr1:4:0):  Logical unit is in process of becoming ready

テープに識別ブロック (Identifier Block:block number 0) がありません。QIC-525 標準を採用したすべての QIC テープドライブは識別ブロックをテープに書き込みます。 2 つの解決方法があります。

- `mt fsf 1` によりテープドライブはテープに識別ブロックを書き込みます。

- フロントパネルのボタンを押してテープを取り出します。

  再びテープを挿入し、データをテープに `dump` します。

  `dump` は “`DUMP: End of tape detected`” と報告し、 コンソールには “`HARDWARE FAILURE info:280 asc:80,96`” と表示されるでしょう。

  `mt rewind` を使ってテープを巻戻します。

  次からはテープの操作はうまくいくでしょう。

## 15.8. フロッピーディスクへのバックアップ

### 15.8.1. データをバックアップするのにフロッピーは使えますか?

フロッピーディスクは以下の理由によって、 実際にバックアップをつくるための適切なメディアではありません。

- メディアの信頼性が (特に長期間の場合) 低い。

- バックアップとリストアがとても遅い。

- 容量が非常に小さい (1 ダースかそこらのフロッピーディスクに ハードディスク全体をバックアップしていた時代は、 はるか遠くに過ぎ去りました)。

しかしながら、データをバックアップするの他の手段がないのなら、 バックアップを取らないよりもフロッピーディスクを使う方がましでしょう。

フロッピーディスクを使用せざるを得ないときは、 品質のよいディスクを使用してください。 事務所のその辺に数年転がっていたフロッピーは使わない方が良いでしょう。 評判のよいメーカの新しいディスクを使用することが理想です。

### 15.8.2. それではどうやってデータをフロッピーにバックアップするのですか?

フロッピーにバックアップする最もよい方法は、 `-M` (マルチボリューム) オプション付きで tar(1) コマンドを使用することです。これで、 複数のフロッピーにわたってバックアップすることが可能になります。

カレントディレクトリとサブディレクトリ内のすべてのファイルをバックアップするには、 以下のコマンドを (`root` 権限で) 使用します。

    # tar Mcvf /dev/fd0 *

1 枚目のフロッピーが一杯になると、 tar(1) は次のボリュームを挿入するように要求します (tar(1) はさまざまなメディアを扱えるので、 ボリュームと表示します。この文脈ではフロッピーディスクのことです)。

    Prepare volume #2 for /dev/fd0 and hit return:

指定したファイルがすべて保存されるまで (ボリューム番号を増やしながら) これが繰り返されます。

### 15.8.3. バックアップを圧縮することはできませんか?

残念なことに tar(1) はマルチボリュームアーカイブに対して、 `-z` オプションを使うことができません。 もちろん、すべてのファイルを gzip(1) で圧縮し、 それらを tar(1) を用いてフロッピーに保存して、 それから再び gunzip(1) することはできます。

### 15.8.4. どのようにしてバックアップをリストアしたらいいのでしょうか?

すべてのアーカイブをリストアするには以下のようにします。

    # tar Mxvf /dev/fd0

特定のファイルだけをリストアするには 2 つの方法があります。 1 つ目は、1 枚目のフロッピーを用いて以下のようにするものです。

    # tar Mxvf /dev/fd0 filename

tar(1) ユーティリティは、 必要なファイルを見つけるまで次のディスクを挿入するように要求します。

もう 1 つは、 必要なファイルがどのフロッピーに保存されているか分かっている場合、 そのフロッピーを挿入して上記と同じコマンドを使用するだけでもよいです。 あるフロッピー上にある 1 番目のファイルが、 その前のフロッピーから続いている場合は、 そのファイルのリストアを要求していなくても tar(1) はそれをリストアできないと警告することに注意してください!

## 15.9. バックアップの基本

主なバックアッププログラムは dump(8), tar(1), cpio(1) の三つです。

### 15.9.1. ダンプとリストア

伝統的な UNIX のバックアッププログラムは `dump` と `restore` です。 これらはファイルシステムによって作成されるファイル、リンク、 ディレクトリといった抽象の下位にある、 ディスクブロックの集合としてドライブを操作します。 `dump` はデバイス上のファイルシステム全体をバックアップします。 ファイルシステムの一部分だけ、 または二つ以上のファイルシステムにわたるディレクトリツリーをバックアップすることはできません。 `dump` はファイルおよびディレクトリをテープに書き込まずに、 ファイルおよびディレクトリを含んだ raw データブロックを書き込みます。

> Note: ルートディレクトリで `dump` を使った場合、 `/home`, `/usr` など、他の多くのディレクトリはバックアップされません。 これらのディレクトリは通常、 他のファイルシステムへのマウントポイントであったり、 シンボリックリンクとなっているためです。

`dump` には AT&T UNIX のバージョン 6 (およそ 1975 年) の初期から残っている癖があります。 デフォルトのパラメタは、現在利用可能な高密度メディア (最大 62,182 ftpi) ではなく、9 トラックテープ (6250 bpi) に最適な値となっています。 現在のテープドライブの容量を利用するために、 これらのデフォルト値をコマンドラインで上書きしなければなりません。

`rdump` と `rrestore` を用いて他のコンピュータに接続されているテープドライブにネットワーク経由でデータをバックアップすることも可能です。 どちらのプログラムもリモートのテープドライブにアクセスするために `rcmd` および `ruserok` に依存しています。 したがって、バックアップを実行するユーザがリモートコンピュータの `.rhosts` ファイルに書かれていなければなりません。 `rdump` および `rrestore` の引数はリモートコンピュータに適切なものを用いなければなりません。 FreeBSD コンピュータから `komodo` と呼ばれる Sun に接続されている Exabyte テープへ `rdump` するには以下のようにします。

    # /sbin/rdump 0dsbfu 54000 13000 126 komodo:/dev/nsa8 /dev/da0a 2>&1

注意: `.rhosts` 認証を許可することには、セキュリティに関する暗黙の仮定があります。 あなたの状況を注意深く調べてください。

`ssh` 越しに `dump` と `restore` をより安全な形で使うこともできます。

Example 15-1. ssh 越しの `dump` の利用

    # /sbin/dump -0uan -f - /usr | gzip -2 | ssh1 -c blowfish \
              targetuser@targetmachine.example.com dd of=/mybigfiles/dump-usr-l0.gz

または、環境変数 `RSH` を設定して、 `dump` の組み込み機能を利用する。

Example 15-2. `RSH` を設定した ssh 越しの `dump` を利用

    # RSH=/usr/bin/ssh /sbin/dump -0uan -f targetuser@targetmachine.example.com:/dev/sa0

### 15.9.2. `tar`

tar(1) は AT&T UNIX の バージョン 6 (1975 年ごろ) にまで遡ることができます。`tar` はファイルシステムと協調して動作し、 ファイルとディレクトリをテープに書き込みます。`tar` は cpio(1) で使用可能なフルレンジのオプションには対応していませんが、 `tar` には `cpio` が使用するような奇妙なコマンドパイプラインは必要ありません。

`tar` の多くの版はネットワーク経由のバックアップには対応していません。 FreeBSD が使用している GNU 版の `tar` は、 `rdump` と同じ構文でリモートデバイスに対応しています。 `komodo` と呼ばれる Sun に接続された Exabyte テープドライブに対して `tar` を実行するには以下のようにします。

    # /usr/bin/tar cf komodo:/dev/nsa8 . 2>&1

リモートデバイスに対応していない版に対しては、パイプラインと `rsh` を使用してリモートテープドライブにデータを送ることができます。

    # tar cf - . | rsh hostname dd of=tape-device obs=20b

ネットワークを越えたバックアップのセキュリティを懸念しているなら、 `rsh` の代わりに `ssh` を使うべきです。

### 15.9.3. `cpio`

cpio(1) は本来 UNIX ファイルを磁気メディアで交換するためのプログラムです。 `cpio` はバイトスワッピング、 多くの異なるアーカイブフォーマットの書き込みオプション (それ以外にも多数のオプションがあります) があり、 パイプで他のプログラムにデータを渡すこともできます。 この最後にあげた特徴が、`cpio` をインストールメディアとしては優れた選択肢にしています。 `cpio` はディレクトリツリーの探索の機能はなく、ファイルリストは `stdin` からの入力でなくてはなりません。

`cpio` はネットワーク経由のバックアップには対応していません。 以下のようにパイプラインと `rsh` を用いてリモートテープドライブにデータを送ることができます。

    # for f in directory_list; do
    find $f >> backup.list
    done
    # cpio -v -o --format=newc < backup.list | ssh user@host "cat > backup_device"

`directory_list` はバックアップしたいディレクトリのリストで、 `user`@`host` はバックアップを実行したいユーザとホスト名の組であり、 `backup_device` はバックアップを書き込みたいデバイスです (たとえば `/dev/nsa0`)。

### 15.9.4. `pax`

pax(1) は `tar` と `cpio` に対する IEEE/POSIX® の回答です。長年の間、さまざまな版の `tar` と `cpio` は互いにわずかに非互換になってきていました。 それらをしらみ潰しに標準化する代わりに、POSIX は新しいアーカイブユーティリティを作りました。 `pax` は、いくつもの `cpio` や `tar` のフォーマットの読み書きに対応しようと試みているほか、 専用に新しいフォーマットを開発しました。 コマンド群は `tar` よりも `cpio` の方にいくぶん似ています。

### 15.9.5. Amanda

Amanda (Advanced Maryland Network Disk Archiver) は単一のプログラムではなく、 クライアント/サーバ型のバックアップシステムです。 Amanda サーバは、 Amanda クライアントを有する ネットワークに接続されたコンピュータからデータを受け取り、 備え付けられたテープドライブにバックアップします。 いくつもの大容量ディスクを備えたサイトでの共通の問題は、 データディレクトリをテープにバックアップするのに時間がかかりすぎることです。 Amanda はこの問題を解決します。 Amanda は “ホールディングディスク” を使用して、 同時に複数のファイルシステムのバックアップを行うことができます。 Amanda の設定ファイルにかかれたすべてのファイルシステムのフルバックアップを特定の間隔でとるために “アーカイブセット” と呼ばれるテープグループを作成します。 “アーカイブセット” には 夜間に作成されるすべてのファイルシステムの増分 (または差分) のバックアップも含まれます。 障害が起きたファイルシステムのリストアには、 最も新しいフルバックアップと増分のバックアップが必要です。

設定ファイルでは、バックアップの制御と Amanda によるネットワークトラフィック量を設定します。 Amanda は上記のバックアッププログラムのいずれかを使ってデータをテープに書き込みます。 Amanda は port または package として利用可能です。デフォルトではインストールされていません。

### 15.9.6. 何もしない

“何もしない” というのはコンピュータのプログラムではありませんが、 バックアップの戦略として最も広く採用されています。 これには初期投資が必要ありません。 従わなければならないバックアップスケジュールもありません。 ただ何もしないだけです。データに何か起きたら苦笑いして耐えてください!

あなたにとって時間やデータの価値が少ないか、 あるいはまったくないのであれば “何もしない” のはあなたのコンピュータに最も適したバックアッププログラムでしょう。 しかし注意してください。UNIX は便利なツールです。 6 ヶ月も使用していれば、 あなたにとって価値のあるファイルの山が出来上がっているでしょう。

“何もしない” ことはコンピュータが同じものをもう一度作り直すことのできる `/usr/obj` やその他のディレクトリツリーについては適切なバックアップ方法です。 一例として、このハンドブックの HTML 版 または PostScript 版を構成するファイルがあります。 これらの文書形式は SGML ファイルから作成されたものです。 HTML または PostScript ファイルのバックアップは必要ありません。 SGML ファイルは定期的にバックアップされています。

### 15.9.7. どのバックアッププログラムが最適ですか?

dump(8) です。以上。 Elizabeth D. Zwicky はここで検討したプログラムすべてについて拷問的なテストを行いました。 すべてのデータと UNIX ファイルシステムの状態すべてを保存するのに最適なのは、明らかに `dump` です。 Elizabeth は多種多様の特異な状態 (いくつかはあまり珍しくないものもあります) を含むファイルシステムを作成し、 それらのファイルシステムのバックアップとリストアを行って、 それぞれのプログラムのテストを行いました。特異な状態とは、 ホールがあるファイル、ホールとヌルブロックがあるファイル、 奇妙な文字をファイル名に持つファイル、読み取り不可、 書き込み不可のファイル、デバイスファイル、 バックアップ中のファイルのサイズ変更、 バックアップ中のファイルの作成および削除、などです。 彼女は 1991 年 10 月の LISA V で結果を発表しています。 torture-testing Backup and Archive Programs を参照してください。

### 15.9.8. 緊急時のリストア手順

#### 15.9.8.1. 惨事が起きる前に

発生する可能性があるどのような惨事に対しても、 備えるのに必要な手順は以下の 4 ステップだけです。

最初に、 各ディスクのディスクラベルとファイルシステムテーブル (`/etc/fstab`)、 ブートメッセージ全体をそれぞれ 2 枚ずつ印刷します (たとえば `disklabel da0 | lpr`)。

2 番目に、ブートフロッピーと fix-it フロッピー (`boot.flp` および `fixit.flp`) にそのシステムのデバイスがすべて含まれているか確認します。 最も簡単に確認する方法は、フロッピーをドライブに入れてマシンをリブートしてブートメッセージを確認することです。 あなたのシステムのデバイスのすべてが含まれ、 機能していれば 3 番目の手順に進んでください。

さもなければ、 そのシステムのすべてのディスクをマウントでき、 テープドライブにもアクセスできるカーネルを備えた カスタムブートフロッピーを 2 枚作成する必要があります。 これらのフロッピーディスクには `fdisk`, `disklabel`, `newfs`, `mount` と、利用するバックアッププログラムが入っていなければなりません。 これらのプログラムはスタティックリンクされていなければなりません。 `dump` を使用するのなら、このフロッピーには `restore` も含まれていなければなりません。

3 番目に、定期的にバックアップテープを作成します。 最後のバックアップの後で行われた変更は、回復できずに失われます。 バックアップテープにライトプロテクトを施してください。

4 番目に、フロッピーディスク (`boot.flp` と `fixit.flp`、 か、第 2 段階で作成した 2 枚のカスタムブートフロッピーディスクのどちらか) およびバックアップテープのテストをします。 手順のメモを作りましょう。 このメモはブートフロッピー、印刷した紙、 バックアップテープと一緒に保存しておきます。 リストアを行うときには、 このメモがバックアップテープを壊すのを防ぐくらい取り乱しているかもしれません (どのように? `tar xvf /dev/sa0` の代わりに、うっかり `tar cvf /dev/sa0` と入力してバックアップテープを上書きしてしまうかもしれません)。

> 訳注: 上書きはライトプロテクトをしておけば防げますが、 何らかの原因でプロテクトがはずれているかもしれません。 ちなみに訳者の経験から言えば、 上のようなミスタイプは結構起きます。

安全性を増すために、毎回、 ブートフロッピーを作成し、 2 巻のバックアップテープを取ります。 一方を離れた場所に保管します。 離れた場所は同じ事務所の建物の地下室ではいけません。 世界貿易センタービルにあった数多くの会社は、 苦い経験によりこの教訓を得ました。離れた場所とは、 コンピュータやディスクドライブから十分な距離を取って 物理的に分離されていなければなりません。

Example 15-3. ブートフロッピーを作成するスクリプト

    #!/bin/sh
    #
    # create a restore floppy
    #
    # format the floppy
    #
    PATH=/bin:/sbin:/usr/sbin:/usr/bin

    fdformat -q fd0
    if [ $? -ne 0 ]
    then
         echo "Bad floppy, please use a new one"
         exit 1
    fi

    # place boot blocks on the floppy
    #
    disklabel -w -B /dev/fd0c fd1440

    #
    # newfs the one and only partition
    #
    newfs -t 2 -u 18 -l 1 -c 40 -i 5120 -m 5 -o space /dev/fd0a

    #
    # mount the new floppy
    #
    mount /dev/fd0a /mnt

    #
    # create required directories
    #
    mkdir /mnt/dev
    mkdir /mnt/bin
    mkdir /mnt/sbin
    mkdir /mnt/etc
    mkdir /mnt/root
    mkdir /mnt/mnt          # for the root partition
    mkdir /mnt/tmp
    mkdir /mnt/var

    #
    # populate the directories
    #
    if [ ! -x /sys/compile/MINI/kernel ]
    then
         cat << EOM
    The MINI kernel does not exist, please create one.
    Here is an example config file:
    #
    # MINI -- A kernel to get FreeBSD onto a disk.
    #
    machine         "i386"
    cpu             "I486_CPU"
    ident           MINI
    maxusers        5

    options         INET                    # needed for _tcp _icmpstat _ipstat
                                            #            _udpstat _tcpstat _udb
    options         FFS                     #Berkeley Fast File System
    options         FAT_CURSOR              #block cursor in syscons or pccons
    options         SCSI_DELAY=15           #Be pessimistic about Joe SCSI device
    options         NCONS=2                 #1 virtual consoles
    options         USERCONFIG              #Allow user configuration with -c XXX

    config          kernel  root on da0 swap on da0 and da1 dumps on da0

    device          isa0
    device          pci0

    device          fdc0    at isa? port "IO_FD1" bio irq 6 drq 2 vector fdintr
    device          fd0 at fdc0 drive 0

    device          ncr0

    device          scbus0

    device          sc0 at isa? port "IO_KBD" tty irq 1 vector scintr
    device          npx0    at isa? port "IO_NPX" irq 13 vector npxintr

    device          da0
    device          da1
    device          da2

    device          sa0

    pseudo-device   loop            # required by INET
    pseudo-device   gzip            # Exec gzipped a.out's
    EOM
         exit 1
    fi

    cp -f /sys/compile/MINI/kernel /mnt

    gzip -c -best /sbin/init > /mnt/sbin/init
    gzip -c -best /sbin/fsck > /mnt/sbin/fsck
    gzip -c -best /sbin/mount > /mnt/sbin/mount
    gzip -c -best /sbin/halt > /mnt/sbin/halt
    gzip -c -best /sbin/restore > /mnt/sbin/restore

    gzip -c -best /bin/sh > /mnt/bin/sh
    gzip -c -best /bin/sync > /mnt/bin/sync

    cp /root/.profile /mnt/root

    cp -f /dev/MAKEDEV /mnt/dev
    chmod 755 /mnt/dev/MAKEDEV

    chmod 500 /mnt/sbin/init
    chmod 555 /mnt/sbin/fsck /mnt/sbin/mount /mnt/sbin/halt
    chmod 555 /mnt/bin/sh /mnt/bin/sync
    chmod 6555 /mnt/sbin/restore

    #
    # create the devices nodes
    #
    cd /mnt/dev
    ./MAKEDEV std
    ./MAKEDEV da0
    ./MAKEDEV da1
    ./MAKEDEV da2
    ./MAKEDEV sa0
    ./MAKEDEV pty0
    cd /

    #
    # create minimum file system table
    #
    cat > /mnt/etc/fstab <<EOM
    /dev/fd0a    /    ufs    rw  1  1
    EOM

    #
    # create minimum passwd file
    #
    cat > /mnt/etc/passwd <<EOM
    root:*:0:0:Charlie &:/root:/bin/sh
    EOM

    cat > /mnt/etc/master.passwd <<EOM
    root::0:0::0:0:Charlie &:/root:/bin/sh
    EOM

    chmod 600 /mnt/etc/master.passwd
    chmod 644 /mnt/etc/passwd
    /usr/sbin/pwd_mkdb -d/mnt/etc /mnt/etc/master.passwd

    #
    # umount the floppy and inform the user
    #
    /sbin/umount /mnt
    echo "The floppy has been unmounted and is now ready."

#### 15.9.8.2. 惨事の後は

重要な問題は、ハードウェアが生き残ったかどうかです。 定期的にバックアップを取っていれば、 ソフトウェアについて心配する必要はありません。

ハードウェアに障害があれば、 コンピュータを使用する前にその部品を交換してください。

ハードウェアに問題が無ければ、フロッピーを確認してください。 カスタムブートフロッピーディスクを使用しているのであれば、 シングルユーザモードでブートして (`boot:` プロンプトで `-s` を入力します)、 次の段落は飛ばしてください。

`boot.flp` と `fixit.flp` を使用しているのであればこのまま読み進めてください。 `boot.flp` フロッピーをフロッピードライブに入れて、 コンピュータを起動してください。 本来のインストールメニューが画面に表示されます。 `Fixit--Repair mode with CDROM or floppy.` オプションを選択します。指示された通り `fixit.flp` をいれてください。 `restore` とその他必要となるプログラムは `/mnt2/stand` にあります。

そして、ファイルシステムを一つずつ回復します。

最初のディスクのルートパーティションを `mount` してみてください (たとえば `mount /dev/da0a /mnt`)。 ディスクラベルが破壊されている場合は、`disklabel` を用いてあらかじめ印刷して保存しておいた通りにパーティションを作り直し、ディスクラベルを作成してください。 `newfs` を使用してファイルシステムを作り直します。 ルートパーティションを読み書き可能にマウントし直します (`mount -u -o rw /mnt`)。 バックアッププログラムとバックアップテープを使用して、 このファイルシステムのデータを回復します (たとえば `restore vrf /dev/sa0`)。 ファイルシステムをアンマウントします (たとえば `umount /mnt`)。 障害を受けたファイルシステムそれぞれについて繰り返してください。

システムが動き出したら、 新しいテープにデータをバックアップしてください。 どのような理由で再び事故が起きたり、データが失われるかわかりません。 これに数時間を費すことで、後々の災難から救われます。

## 15.10. ネットワーク、メモリ、そしてファイルベースのファイルシステム

再構成および追記: Marc Fonvieille.

FreeBSD にはフロッピーや CD, ハードディスクなどの手元の計算機に取り付けたディスクの他に、 別の形態のディスク、仮想ディスク、もあります。

これには、Network File System のようなネットワークファイルシステムや Coda, メモリベースのファイルシステムおよびファイルベースのファイルシステムがあります。

稼働させている FreeBSD のバージョンによって、 ファイルベースおよびメモリベースのファイルシステムを作成したり操作するために、異なるツールを使用しなければならないでしょう。

> Note: FreeBSD 4.X の使用者は必要なデバイスを作成するために MAKEDEV(8) を使用しなければならないでしょう。FreeBSD 5.0 以降では、devfs(5) がデバイスノードを自動的に割り当ててくれるので、 使用者が意識する必要はありません。

### 15.10.1. FreeBSD 4.X でファイル中に構築されるファイルシステム

vnconfig(8) ユーティリティを使えば擬似ディスクデバイスを設定し、 有効にすることができます。 vnode とはファイルの内部的な表現方法であり、 ファイルに関する操作の中心となるものです。つまり、vnconfig(8) はファイルシステムを生成したり操作したりするためにファイルを用いるのです。 一つ例を挙げると、 ファイルに収められたフロッピーや CD-ROM のイメージをマウントするために用いることができます。

vnconfig(8) を使用するためには、 カーネルが vn(4) デバイスに対応している必要があります。 そうでなければ、カーネルコンフィギュレーションファイルに 次の行を追加してカーネルを再構築し、システムを再起動してください。

    pseudo-device vn

既にあるファイルシステムイメージのマウント

Example 15-4. FreeBSD 4.X での vnconfig を用いた既存のファイルシステムイメージのマウント

    # vnconfig vn0 diskimage
    # mount /dev/vn0c /mnt

vnconfig(8) を用いたファイルシステムイメージの新規作成

Example 15-5. `vnconfig` を用いたファイルベースディスクの新規作成

    # dd if=/dev/zero of=newimage bs=1k count=5k
    5120+0 records in
    5120+0 records out
    # vnconfig -s labels -c vn0 newimage
    # disklabel -r -w vn0 auto
    # newfs vn0c
    Warning: 2048 sector(s) in last cylinder unallocated
    /dev/vn0c:     10240 sectors in 3 cylinders of 1 tracks, 4096 sectors
            5.0MB in 1 cyl groups (16 c/g, 32.00MB/g, 1280 i/g)
    super-block backups (for fsck -b #) at:
     32
    # mount /dev/vn0c /mnt
    # df /mnt
    Filesystem  1K-blocks     Used    Avail Capacity  Mounted on
    /dev/vn0c        4927        1     4532     0%    /mnt

### 15.10.2. FreeBSD 5.X でファイル中に構築されるファイルシステム

mdconfig(8) ユーティリティは FreeBSD 5.X において メモリディスク (md(4)) を設定し、有効にするために使用されます。 mdconfig(8) を使用するためには md(4) モジュールを読み込むか、 カーネルコンフィギュレーションファイルに md(4) デバイスを追加してカーネルを再構築し、システムを再起動してください。

    device md

mdconfig(8) コマンドは、 三つのタイプのメモリベース仮想ディスクに対応しています。 malloc(9) を用いて割り当てられたメモリディスク、 ファイルをベースにしたメモリディスク、 およびスワップ領域をベースにしたメモリディスクです。 想定される使用法は、ファイル内に保持されたフロッピーイメージまたは CD イメージをマウントすることです。

既にあるファイルシステムイメージのマウント

Example 15-6. FreeBSD 5.X での `mdconfig` を用いた既存のファイルシステムイメージのマウント

    # mdconfig -a -t vnode -f diskimage -u 0
    # mount /dev/md0c /mnt

mdconfig(8) を用いたファイルシステムイメージの新規作成

Example 15-7. `mdconfig` を用いたファイルシステムイメージの新規作成

    # dd if=/dev/zero of=newimage bs=1k count=5k
    5120+0 records in
    5120+0 records out
    # mdconfig -a -t vnode -f newimage -u 0
    # disklabel -r -w md0 auto
    # newfs md0c
    /dev/md0c: 5.0MB (10240 sectors) block size 16384, fragment size 2048
        using 4 cylinder groups of 1.27MB, 81 blks, 256 inodes.
    super-block backups (for fsck -b #) at:
     32, 2624, 5216, 7808
    # mount /dev/md0c /mnt
    # df /mnt
    Filesystem  1K-blocks     Used    Avail Capacity  Mounted on
    /dev/md0c        4846        2     4458     0%    /mnt

`-u` オプションを用いて ユニット番号を指定しない場合、mdconfig(8) は未使用のデバイスを自動的に選択するために md(4) デバイスの auto-unit 機能を使用します。 割り当てられたユニットの名前は `md4` のように標準出力に出力されます。mdconfig(8) の詳細についてはマニュアルページを参照してください。

> Note: FreeBSD 5.1-RELEASE から、従来の disklabel(8) プログラムは bsdlabel(8) ユーティリティに置き換えられました。bsdlabel(8) では、 使用されていないオプションおよびパラメタの数多くが削除されました。 たとえば `-r` オプションは bsdlabel(8) では取り除かれました。詳細については bsdlabel(8) マニュアルページを参照してください。

mdconfig(8) ユーティリティは大変役に立ちますが、 ファイルベースのファイルシステムを作成するために、 多くのコマンドの入力が必要となります。FreeBSD 5.0 では mdmfs(8) と呼ばれるツールも用意されています。このプログラムは mdconfig(8) を用いて md(4) ディスクを設定し、newfs(8) を用いて UFS ファイルシステムを作成し、mount(8) を用いてマウントします。たとえば、上記と同じファイルシステムを作成し、 マウントしたい場合は、下記のように入力するだけです。

Example 15-8. `mdmfs` を用いたファイルベースディスクの設定とマウント

    # dd if=/dev/zero of=newimage bs=1k count=5k
    5120+0 records in
    5120+0 records out
    # mdmfs -F newimage -s 5m md0 /mnt
    # df /mnt
    Filesystem 1K-blocks Used Avail Capacity  Mounted on
    /dev/md0        4846    2  4458     0%    /mnt

ユニット番号を指定せずに `md` オプションを使用した場合、mdmfs(8) は未使用のデバイスを自動的に選択するために md(4) デバイスの auto-unit 機能を使用します。mdmfs(8) についての詳細はマニュアルページを参照してください。

### 15.10.3. FreeBSD 4.X でのメモリベースのファイルシステム

md(4) ドライバは FreeBSD 4.X においてメモリファイルシステムを作成するために単純で効果的な手段です。 メモリを割り当てるために malloc(9) 関数が使用されます。

vnconfig(8) を用いて作成したファイルシステムを例に取ると、 以下のようにします。

Example 15-9. FreeBSD 4.X での md メモリディスク

    # dd if=newimage of=/dev/md0
    5120+0 records in
    5120+0 records out
    # mount /dev/md0c /mnt
    # df /mnt
    Filesystem  1K-blocks     Used    Avail Capacity  Mounted on
    /dev/md0c        4927        1     4532     0%    /mnt

詳細については md(4) マニュアルページを参照してください。

### 15.10.4. FreeBSD 5.X でのメモリベースのファイルシステム

メモリベースおよびファイルベースのファイルシステムに対しても 同じツール (mdconfig(8) または mdmfs(8)) を使用できます。 メモリベースのファイルシステムに対する記憶領域は malloc(9) 関数を用いて割り当てられます。

Example 15-10. `mdconfig` を用いたメモリベースディスクの新規作成

    # mdconfig -a -t malloc -s 5m -u 1
    # newfs -U md1
    /dev/md1: 5.0MB (10240 sectors) block size 16384, fragment size 2048
        using 4 cylinder groups of 1.27MB, 81 blks, 256 inodes.
        with soft updates
    super-block backups (for fsck -b #) at:
     32, 2624, 5216, 7808
    # mount /dev/md1 /mnt
    # df /mnt
    Filesystem 1K-blocks Used Avail Capacity  Mounted on
    /dev/md1        4846    2  4458     0%    /mnt

Example 15-11. `mdmfs` を用いたメモリベースディスクの新規作成

    # mdmfs -M -s 5m md2 /mnt
    # df /mnt
    Filesystem 1K-blocks Used Avail Capacity  Mounted on
    /dev/md2        4846    2  4458     0%    /mnt

mdconfig(8) のコマンドラインの `malloc` を `swap` に置き換えることで、malloc(9) 関数によるファイルシステムを使用する代わりに スワップ領域を使用することが可能です。デフォルトでは mdmfs(8) ユーティリティはスワップベースのディスクを作成します (`-M` なし)。詳細は mdconfig(8) および mdmfs(8) マニュアルページを参照してください。

### 15.10.5. システムからメモリディスクを切り離す

メモリベースまたはファイルベースのファイルシステムが使用されていない場合、 すべてのリソースをシステムに開放するべきです。 はじめにファイルシステムをアンマウントします。 次にシステムからディスクを切り離し、リソースを開放するために mdconfig(8) を使用します。

たとえば `/dev/md4` によって使用されたすべてのリソースを切り離し、開放するには以下のようにします。

    # mdconfig -d -u 4

`mdconfig -l` コマンドを使用することによって、 設定された md(4) デバイスについての情報を表示することが可能です。

FreeBSD 4.X では vnconfig(8) はデバイスを切り離すのに使用されます。たとえば `/dev/vn4` によって使用されたすべてのリソースを切り離し、開放するには以下のようにします。

    # vnconfig -u vn4

## 15.11. ファイルシステムのスナップショット

寄稿: Tom Rhodes.

FreeBSD 5.0 は Soft Updates と協調するファイルシステムスナップショットという新しい機能を提供します。

スナップショットは指定したファイルシステムのイメージを作成し、 また、ファイルとして扱うことができるようになります。 スナップショットファイルはアクションが実行されるファイルシステム内で作成されなければなりません。 また、ユーザは一つのファイルシステムあたり 20 までスナップショットを作成することができます。 有効なスナップショットはスーパーブロック内に記録されるので、 リブートしてから永続的にアンマウントおよびリマウントを記録します。 スナップショットが必要無くなったときは、 標準の rm(1) コマンドを用いて削除することができます。 スナップショットはどんな順番で削除してもよいのですが、 その他のスナップショットが開放されたブロックのうちいくらかをおそらく必要とするので、 使用されていたすべてのスペースを得られるとは限りません。

初めてスナップショットを作成すると、`root` でさえも書き込めないように `schg` フラグ (chflags(1) のマニュアルページを参照) が設定されます。 unlink(1) コマンドは、スナップショットに `schg` フラグが設定されていてもそれらを削除することのできる例外です。 したがって、スナップショットファイルを削除する前に、 `schg` フラグをクリアする必要はありません。

スナップショットは mount(8) コマンドを用いて作成されます。 `/var` のスナップショットを `/var/snapshot/snap` に作成したいときは、 以下のコマンドを使用します。

    # mount -u -o snapshot /var/snapshot/snap /var

また、スナップショットを作成するのに mksnap_ffs(8) も使えます。

    # mksnap_ffs /var /var/snapshot/snap

スナップショットにはいくつかの利用法があります。

- スナップショットをバックアップ目的に使用する管理者もいます。 なぜならスナップショットは CD やテープに転送できるからです。

- ファイルの完全性を検証するために、 fsck(8) をスナップショットに実行してもよいでしょう。 スナップショットをマウントしたときにそのファイルシステムがクリーンであったとすると、 そのスナップショットをマウントするときはいつでもクリーンな (そして変更のない) 結果を得るでしょう。 これは本質的には バックグラウンド fsck(8) が行うことです。

- スナップショット上で dump(8) ユーティリティを実行すると、 スナップショットのファイルシステムとタイムスタンプが一致するダンプが返されるでしょう。 dump(8) は `-L` オプションを使用することで、 一つのコマンドでスナップショットをとり、ダンプイメージを作成して、スナップショットを削除することが可能です。

- ファイルシステムの “凍結された” イメージとしてスナップショットを mount(8) します。 `/var/snapshot/snap` のスナップショットを mount(8) するには以下のようにします。

      # mdconfig -a -t vnode -f /var/snapshot/snap -u 4
      # mount -r /dev/md4 /mnt

これで `/mnt` にマウントした 凍結状態の `/var` ファイルシステム構造を探索できます。 すべてがスナップショットが作成された時と同じ状態になるはずです。ただし、 以前に作成されたスナップショットがサイズ 0 のファイルとして現れることが唯一の例外です。 スナップショットの使用を終えた場合、以下のようにアンマウントできます。

    # umount /mnt
    # mdconfig -d -u 4

`softupdates` およびファイルシステムスナップショットに関する詳細については、 http://www.mckusick.com/ にある Marshall Kirk McKusick のウェブサイトを参照してください。 ここには技術的な論文もあります。

## 15.12. ファイルシステムクォータ

クォータは OS の持っているオプショナルな機能であり、 ファイルシステム毎にユーザやグループのメンバが使用するディスク容量やファイルの数を制限することができます。 この機能は、あるユーザやグループに割り当てられるリソースの量を制限することが望ましいようなタイムシェアリングシステムにおいてよく用いられます。 この機能を用いることによって使用可能なディスク容量の全てを一人のユーザやユーザのグループが使ってしまうことを防ぐことができます。

### 15.12.1. ディスククォータを使うためのシステム設定

ディスククォータの設定を始める前に、 まずはカーネルにクォータが組み込まれていることを確認しましょう。 カーネルのコンフィグレーションファイルに次の行を入れます。

    options QUOTA

標準の `GENERIC` カーネルでは、 この機能は有効になっていませんので、 ディスククォータを利用するためには上記を設定後カーネルを構築しなおし、 作成されたカスタムカーネルをインストールしなければいけません。 カーネルのコンフィグレーションに関しては Chapter 8 をご覧ください。

次に `/etc/rc.conf` でディスククォータを有効にする必要があります。 次の行を加えましょう。

    enable_quotas="YES"

起動時の動作をさらに細かくコントロールするためにもう一つ設定用の変数があります。 通常、起動時には quotacheck(8) によりそれぞれのファイルシステムのクォータの整合性がチェックされます。 quotacheck(8) の役割は、 クォータデータベースのデータが正しくファイルシステム上のデータを反映しているか確認することです。 これはかなり時間を食う処理であり、 起動にかかる時間に大きな影響を及ぼします。 このステップをとばしたい人のために `/etc/rc.conf` に次の変数が用意されています。

    check_quotas="NO"

もし 3.2-RELEASE よりも前の FreeBSD を使っているならば設定はもっと単純で、一つの変数のみです。 次の行を `/etc/rc.conf` で設定してください。

    check_quotas="YES"

最後に、ファイルシステム毎にディスククォータを有効にするために `/etc/fstab` を編集する必要があります。 ここでユーザもしくはグループ、 あるいはその両方にクォータを設定することができるのです。

あるファイルシステム上にユーザ毎のクォータを有効にする場合には、 `/etc/fstab` 中でクォータを有効にしたいファイルシステムエントリのオプション部に `userquota` を加えます。 例えば次のようになります。

    /dev/da1s2g   /home    ufs rw,userquota 1 2

同様に、グループクォータを有効にするには `userquota` キーワードの代わりに `groupquota` を用います。 ユーザとグループの両方のクォータを有効にするには次のようにします。

    /dev/da1s2g    /home    ufs rw,userquota,groupquota 1 2

デフォルトでは、 クォータファイルはそのファイルシステムのルートディレクトリに ユーザ用、グループ用それぞれ `quota.user`, `quota.group` という名前で置かれます。さらに詳しい情報は fstab(5) をご覧ください。fstab(5) マニュアルには別の場所を指定することができると書いてはありますが、 あまり勧められません。なぜなら、 様々なクォータ関係のユーティリティがそれにうまく対処できるようにないためです。

この時点で、 一度システムを再起動して新しいカーネルで立ち上げましょう。 `/etc/rc` が自動的に適当なコマンドを実行し、 `/etc/fstab` で有効にした全てのクォータ用に初期ファイルを作ってくれます。 従って、空のクォータファイルを手で作る必要は一切ありません。

通常の運用では quotacheck(8) や quotaon(8), quotaoff(8) といったコマンドを手で動かす必要はないのですが、 慣れるためにもこれらのマニュアルは読んでおきましょう。

### 15.12.2. クォータリミットの設定

一旦クォータを有効にしたら本当に有効になっているのか確認しておきましょう。簡単な方法は次のコマンドを実行することです。

    # quota -v

ディスクの使用状況と、クォータが有効になっているファイルシステムのクォータリミットが一行にまとめて出力されるでしょう。

さあ、edquota(8) でクォータリミットを設定する準備ができました。

ユーザやグループが使用できるディスク容量や作成できるファイルの数に制限をかけるにはいくつかのオプションがあります。割り当てディスク容量を制限 (ブロッククォータ) することもファイル数を制限 (inode クォータ) することも、両者を組み合わせることもできるのです。 これらの制限はそれぞれさらに二つのカテゴリ、 ハードリミットとソフトリミット、に分けることができます。

ハードリミットを越えることはできません。 あるユーザが一旦ハードリミットにたっした場合、 そのファイルシステムではそれ以上の割り当ては望めません。 例えばあるファイルシステム上に 500 ブロックのハードリミットが設定されており現在 490 ブロックを使用している場合、さらに 10 ブロックしか使えないのです。 11 ブロックを使おうとすると失敗します。

一方、 ソフトリミットはある限られた時間内であれば越えることができます。 この時間は猶予期間として知られており、デフォルトでは 1 週間です。 あるユーザが自分のソフトリミットを猶予期間よりも長い間越えているとソフトリミットはハードリミットに変わり、それ以上使用することはできなくなります。 ユーザがソフトリミットよりも減らせば猶予期間はリセットされます。

以下は edquota(8) コマンドを実行した時に見ることになるであろう例です。 edquota(8) コマンドが起動されると環境変数 `EDITOR` で指定されるエディタに入ります。 `EDITOR` が設定されていない場合には vi が起動されます。 ここでクォータリミットを編集します。

    # edquota -u test

    Quotas for user test:
    /usr: blocks in use: 65, limits (soft = 50, hard = 75)
            inodes in use: 7, limits (soft = 50, hard = 60)
    /usr/var: blocks in use: 0, limits (soft = 50, hard = 75)
            inodes in use: 0, limits (soft = 50, hard = 60)

通常、クォータが有効になっているファイルシステム毎に 2 行あります。 一つはブロックリミット用でもう一つは inode リミット用です。 クォータリミットを変更したいところを書き変えるだけでかまいません。 たとえばこのユーザのブロックリミットを、ソフトリミットは 50 から 500 へ、ハードリミットは 75 から 600 に変更する場合、

    /usr: blocks in use: 65, limits (soft = 50, hard = 75)

から

     /usr: blocks in use: 65, limits (soft = 500, hard = 600)

へ書き換えます。新しいクォータリミットはエディタを終了すれば設定されます。

ある範囲の UID に対してクォータリミットを設定したい場合がありますが、このような時には edquota(8) コマンドの `-p` オプションを使うといいでしょう。まず、 あるユーザに割り当てたいクォータリミットを設定し、次に `edquota -p protouser startuid-enduid` を実行するのです。例えばユーザ `test` にお望みのクォータリミットが付いているとしましょう。 次のコマンドにより 10,000 から 19,999 の間の UID に対して同じクォータリミットを付けることができるのです。

    # edquota -p test 10000-19999

さらに詳しいことは edquota(8) のマニュアルページをご覧ください。

### 15.12.3. クォータリミットとディスク使用状況のチェック

quota(1) または repquota(8) といったコマンドを使ってクォータリミットやディスクの利用状況を確認することができます。 quota(1) コマンドは個々のユーザやグループのクォータやディスク利用状況を確認するのに使えます。 ユーザは自身のクォータ、そして所属するグループのグループのみ確認することができます。 スーパーユーザのみが他のユーザや所属していないグループのクォータと利用状況を見ることができます。 repquota(8) コマンドを使うと、クォータが有効になっているファイルシステム用の全てのクォータやディスク容量のサマリを得ることができます。

以下は二つのファイルシステムにクォータ制限がかけられているユーザに対する`quota -v` コマンドの出力例です。

    Disk quotas for user test (uid 1002):
         Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
               /usr      65*     50      75   5days       7      50      60
           /usr/var       0      50      75               0      50      60

上の例で、`/usr` ファイルシステム上ではこのユーザは現在 50 ブロックというソフトリミットを 15 ブロックオーバーし 5 日間の猶予期間が残っています。アスタリスク `*` はクォータリミットを越えているユーザを示していることに注意してください。

通常、そのユーザが全く使っていないファイルシステムは、 クォータリミットが付けられているとしても quota(1) コマンドの出力には現われません。 `-v` オプションを用いればそのようなファイルシステム、 上の例では `/usr/var`、 を表示することができます。

### 15.12.4. NFS 上の クォータ

クォータは NFS サーバ上のクォータサブシステムにより実行されます。 rpc.rquotad(8) デーモンにより、NFS クライアント上の quota(1) コマンドは情報を得ることができ、クライアントマシン上のユーザが自分のクォータの統計を見ることができます。

`/etc/inetd.conf` において以下のように `rpc.rquotad` を有効にしましょう。

    rquotad/1      dgram rpc/udp wait root /usr/libexec/rpc.rquotad rpc.rquotad

そして以下のように `inetd` を再起動します。

    # kill -HUP `cat /var/run/inetd.pid`

## 15.13. ディスクパーティションの暗号化

寄稿: Lucky Green.

FreeBSD は無許可のデータアクセスに対する優れたオンライン保護機能を提供します。 ファイルのパーミッションおよび強制的アクセスコントロール (MAC: Mandatory Access Control) (Mandatory Access Control (MAC) を参照) は、コンピュータが動作中で、OS が実行中であるときに、 無許可の第三者がデータにアクセスするのを防ぐことに役立ちます。 しかしながら、攻撃者がコンピュータに物理的にアクセスし、 機密データをコピーし分析するためにコンピュータのハードドライブを別のシステムに移動させることができれば、 OS によって強化された許可属性は意味をなさなくなります。

攻撃者が電源の落ちたコンピュータや ハードドライブを手にいれる手段にかかわらず、 GEOM ベースのディスク暗号化 (gbde: GEOM Based Disk Encryption) は、著しい資源を持ち本気で攻撃を仕掛けるつもりでやってきた攻撃者からさえもコンピュータのファイルシステム上にあるデータを保護することができます。 個々のファイルだけを暗号化する煩わしい方法と異なり、 gbde は全ファイルシステムを透過的に暗号化します。 平文テキストは決してハードドライブのプラッタに関係しません。

### 15.13.1. カーネルで gbde を有効にする

1. `root` になる

   gbde の設定をするにはスーパユーザの権限が必要になります。 以下のコマンドを実行して、 `root` になってください。

       % su -
       Password:

2. オペレーティングシステムのバージョンを確かめる

   gbde(4) が動作するには FreeBSD 5.0 以降が必要です。 以下のコマンドを実行して、 オペレーティングシステムのバージョンを確認してください。

       # uname -r
       5.0-RELEASE

3. カーネルコンフィギュレーションファイルに gbde(4) 対応を追加する

   お好みのテキストエディタを使用して、 以下の行をカーネルコンフィギュレーションファイルに加えます。

   `options GEOM_BDE`

   FreeBSD カーネルを設定、再コンパイル、インストールします。 この手順は Chapter 8 で説明されています。

   新しいカーネルで再起動します。

### 15.13.2. 暗号化されたハードドライブの準備

以下の例では、システムに新しいハードディスクを追加しようとしています。このシステムは単一の暗号化されたパーティションを保持することになります。 このパーティションは `/private` としてマウントされます。gbde は `/home` および `/var/mail` を暗号化するのにも使用できますが、 より複雑な指示を必要となるのでこの解説の範疇を越えています。

1. 新しいハードドライブを追加する

   Section 15.3 で説明されている通りに新しいドライブをシステムに設置します。 この例では、新しいハードドライブは `/dev/ad4s1c` パーティションに 加えられたものとします。 `/dev/ad0s1`*`` デバイスは、この例のシステム上に存在する標準的な FreeBSD パーティションを表します。

       # ls /dev/ad*
       /dev/ad0        /dev/ad0s1b     /dev/ad0s1e     /dev/ad4s1
       /dev/ad0s1      /dev/ad0s1c     /dev/ad0s1f     /dev/ad4s1c
       /dev/ad0s1a     /dev/ad0s1d     /dev/ad4

2. gbde ロックファイルを保持するディレクトリを作成する

       # mkdir /etc/gbde

   gbde ロックファイルには、 暗号化されたパーティションにアクセスするのに必要となる情報が格納されています。 ロックファイルにアクセスしない場合、 gbde は 膨大な手動による介在なしには (ソフトウェアは対応していません)、暗号化されたパーティションに含まれるデータを解読することはできないでしょう。 それぞれの暗号化されたパーティションは別々のロックファイルを使用します。

3. gbde パーティションを初期化する

   gbde パーティションは使用する前に初期化されなければなりません。 この初期化は一度だけ実行される必要があります。

       # gbde init /dev/ad4s1c -i -L /etc/gbde/ad4s1c

   エディタが開くので、 テンプレートをもとにさまざまなオプションを設定してください。 UFS1 または UFS2 で使用するには、sector_size を 2048 に設定してください。

       $FreeBSD: src/sbin/gbde/template.txt,v 1.1 2002/10/20 11:16:13 phk Exp $
       #
       # Sector size is the smallest unit of data which can be read or written.
       # Making it too small decreases performance and decreases available space.
       # Making it too large may prevent filesystems from working.  512 is the
       # minimum and always safe.  For UFS, use the fragment size
       #
       sector_size     =       2048
       [...]

   gbde(8) はデータを保護するのに使用するパスフレーズを二度尋ます。 パスフレーズはそれぞれ同じでなければなりません。 データを保護する gbde の能力は、 あなたが選択したパスフレーズの品質に完全に依存します。 [7]

   `gbde init` コマンドは gbde パーティションに対するロックファイルを作成します。この例では `/etc/gbde/ad4s1c` に格納されます。

   > Cautiongbde ロックファイルは、 すべての暗号化されたパーティションの内容とともにバックアップされなければ なりません。 ロックファイルだけを削除している間、 ロックファイルなしでは信念の固い攻撃者が gbde パーティションを解読することを防ぐことができない一方で、 正当な所有者は、gbde(8) およびこの設計者にまったく支持されない膨大な量の作業なしには、 暗号化されたパーティション上のデータにアクセスすることができないでしょう。

4. カーネルに暗号化されたパーティションを接続する

       # gbde attach /dev/ad4s1c -l /etc/gbde/ad4s1c

   暗号化されたパーティションを初期化する際に選択したパスフレーズを入力するように求められます。 新しい暗号化デバイスは `/dev` に `/dev/device_name.bde` として現れます。

       # ls /dev/ad*
       /dev/ad0        /dev/ad0s1b     /dev/ad0s1e     /dev/ad4s1
       /dev/ad0s1      /dev/ad0s1c     /dev/ad0s1f     /dev/ad4s1c
       /dev/ad0s1a     /dev/ad0s1d     /dev/ad4        /dev/ad4s1c.bde

5. 暗号化デバイス上にファイルシステムを作成する

   カーネルに暗号化デバイスが接続されると、 デバイス上にファイルシステムを作成できます。 暗号化デバイス上にファイルシステムを作成するには newfs(8) を使用します。従来の UFS1 ファイルシステムで初期化するより、 新しい UFS2 ファイルシステムで初期化した方が高速なので、 `-O2` オプションとともに newfs(8) を使用することが推奨されています。

   > Note: FreeBSD 5.1-RELEASE 以降では、`-O2` オプションはデフォルトです。

       # newfs -U -O2 /dev/ad4s1c.bde

   > Note: newfs(8) は、デバイス名に ``*`.bde` 拡張子によって認識される、 接続された gbde パーティションに対して実行されなければなりません。

6. 暗号化パーティションをマウントする

   暗号化ファイルシステムに対するマウントポイントを作成します。

       # mkdir /private

   暗号化ファイルシステムをマウントします。

       # mount /dev/ad4s1c.bde /private

7. 暗号化ファイルシステムが利用可能か確かめる

   これで暗号化ファイルシステムは df(1) で見ることができ、 利用する準備ができました。

       % df -H
       Filesystem        Size   Used  Avail Capacity  Mounted on
       /dev/ad0s1a      1037M    72M   883M     8%    /
       /devfs            1.0K   1.0K     0B   100%    /dev
       /dev/ad0s1f       8.1G    55K   7.5G     0%    /home
       /dev/ad0s1e      1037M   1.1M   953M     0%    /tmp
       /dev/ad0s1d       6.1G   1.9G   3.7G    35%    /usr
       /dev/ad4s1c.bde   150G   4.1K   138G     0%    /private

### 15.13.3. 存在する暗号化ファイルシステムをマウントする

システムを起動する度に、すべての暗号化ファイルシステムは 使用前にカーネルに接続し、 エラーの有無をチェックし、マウントする必要があります。 必要なコマンドは `root` ユーザとして実行されなければなりません。

1. カーネルに gbde パーティションを接続する

       # gbde attach /dev/ad4s1c -l /etc/gbde/ad4s1c

   パーティションの暗号化を初期化する際に選択したパスフレーズを入力するように求められるでしょう。

2. ファイルシステムのエラーをチェックする

   暗号化ファイルシステムを自動的にマウントするために `/etc/fstab` に設定を掲載することはまだできないため、 マウントする前に fsck(8) を実行して、 ファイルシステムのエラーをチェックしなければなりません。

       # fsck -p -t ffs /dev/ad4s1c.bde

3. 暗号化ファイルをマウントする

       # mount /dev/ad4s1c.bde /private

   これで暗号化ファイルシステムが利用できるようになりました。

#### 15.13.3.1. 暗号化パーティションを自動的にマウントする

スクリプトを作成して、暗号化パーティションを自動的に接続、 チェック、マウントすることは可能です。しかしながら、 安全上の理由によりスクリプトに gbde(8) パスワードを含めるべきではありません。その代わりに、コンソールまたは ssh(1) による接続からパスワードを入力するようなスクリプトが手動で実行されることが推奨されます。

### 15.13.4. gbde が採用した暗号の保護

gbde(8) は 128bit AES の CBC モードを使用してセクタペイロードを暗号化します。 ディスク上のそれぞれのセクタは異なる AES 鍵で暗号化されます。 セクタ鍵がユーザが入力したパスフレーズからどのように導き出されるかを含め、 gbde の暗号手法の設計についての詳細は、 gbde(4) を参照してください。

### 15.13.5. 互換性に関する問題

sysinstall(8) は gbde 暗号化デバイスと互換性がありません。 sysinstall(8) を実行する前に ``*`.bde` デバイスはすべてカーネルから切断されなければなりません。 そうしないと、sysinstall(8) が初めにデバイスを走査する際にクラッシュしてしまうでしょう。 暗号化デバイスを切断するには、以下のコマンドを使用します。

    # gbde detach /dev/ad4s1c

vinum(4) は geom(4) サブシステムを使用しないので、 vinum ボリュームと gbde を併用できないことにも注意してください。

# Chapter 16. 地域化 (localization) - I18N/L10N の利用と設定

寄稿: Andrey Chernov. 改訂: Michael C. Wu.

## 16.1. この章では

FreeBSD は、ユーザーおよび貢献者が世界中にいる、非常に分散した プロジェクトです。この章では、英語以外の言語を使うユーザーの実用に 耐えられるようにする FreeBSD の国際化 (internationalization) と 地域化 (localization) 機能について解説します。 システムレベルでもアプリケーションレベルでも、国際化の実装には 様々な側面があるので、必要に応じて読者に対してより専門的な文書情報を 示すことにします。

この章では、以下の分野について説明します。

- 近代的なオペレーティングシステムで、異なる言語および ロケールがどのように符号化されているか。

- ログインシェルでロケールを設定するには どうするか。

- コンソールを英語以外の言語用に設定するには どうするか。

- 様々な言語で効率的に X Window System を使うには どうすればよいか。

- 国際化されたアプリケーションを書くための 情報はどこにあるか。

この章を読む前に、以下のことを理解しておく必要があります。

- サードパーティ製アプリケーションのインストール方法 (Chapter 4)。

## 16.2. 基礎知識

### 16.2.1. I18N/L10N とは?

開発者たちはしばしば、internationalization を縮めて I18N と表記します。18 は internationalization の最初と最後の間の 文字数です。L10N も同じ命名法を用いて “localization” を縮めたものです。 これらを合わせて、I18N/L10N された (すなわち国際化/地域化された) 手法、プロトコル、アプリケーションは、自分達の好みの言語を 使うことを可能にしてくれます。

国際化されたアプリケーションはライブラリとして国際化キット を用いてプログラミングされています。 これは開発者が単純なファイルを書いて、 表示されるメニューやテキストを各国語に翻訳できるようにしてくれます。 プログラマのみなさんには、 これらの方法を利用することを強く推奨します。

### 16.2.2. なぜ I18N/L10N を使わなければいけないの?

英語以外の言語を見たり、入力したり、処理したりする場合はいつでも、 I18N/L10N が使われます。

### 16.2.3. I18N で使えるようになる言語には何があるの?

I18N や L10N は FreeBSD に限った話題ではありません。 現在では、世界中の主要な言語のほとんどから選ぶことができます。 たとえば中国語、ドイツ語、日本語、韓国語、フランス語、ロシア語、 ベトナム語などがありますが、これらに限定されるわけではありません。

## 16.3. 地域化の利用

I18N は FreeBSD に特有のものではなく、一つの考え方です。 以下の慣習にしたがって FreeBSD を利用するようにしてください。

地域化の設定は言語コード、 国コード、エンコーディングという三つの用語を基本とします。 ロケール名はこれらから以下のように構成されます。

    言語コード_国コード.エンコーディング

### 16.3.1. 言語コードと国コード

FreeBSD (やその他の国際化をサポートした UNIX-like なシステム) を特定の言語に地域化するには、 国と言語を特定するためのコードを知る必要があります (国コードはアプリケーションに指定された言語のどの変種 (variation) を用いれば良いかを教えてくれます)。 加えて、ウェブブラウザ、SMTP/POP サーバ、 ウェブサーバなどもこれらを元に様々な選択を行います。 以下は言語/国コードの例です。

言語/国コード | 説明
--- | ---
en_US | 英語 (合衆国)
ru_RU | ロシア語 (ロシア)
zh_TW | 繁体字中国語 (台湾)

### 16.3.2. エンコーディング

いくつかの言語では、8-bit やワイド文字、 多バイト文字など ASCII とは異なったエンコード法を用います (multibyte(3) 参照)。 古いアプリケーションはこれらを認識せず、 誤ってコントロール文字として認識してしまいます。 最近のアプリケーションは、大抵 8-bit 文字を認識します。 実装方法にも依りますが、アプリケーションのコンパイル時もしくは configure 時に、ワイド/多バイト文字のサポートを指定する必要があるかも知れません。 ワイド/多バイト文字を入力したり処理したりすることを可能にするために、 FreeBSD Ports Collection では各言語向けに異なったプログラムを提供しています。 各 FreeBSD Port の国際化文書を参照してください。

特に、正しく configure したり、configure/Makefile/ コンパイラに適切な値を渡すために、アプリケーションの 文書を良く読む必要があります。

次のことを心に留めておいてください。

- 言語固有の、C 言語の char で表現できる シングルバイトの文字セット (multibyte(3) を参照)、たとえば ISO-8859-1, ISO-8859-15, KOI8-R, CP437。

- ワイド、多バイトのエンコーディング、たとえば EUC, Big5。

現在有効な文字セットのリストに関しては IANA Registry をチェックしてください。

> Note: FreeBSD 4.5 以降では、 X11 互換のロケール符号を用いています。

### 16.3.3. 国際化アプリケーション

FreeBSD の ports/packages システムでは、 それとひと目でわかるように国際化アプリケーションには名前に `I18N` という文字が含まれています。 ただし、それらのアプリケーションが常にあなたの望む言語を サポートしているとは限りません。

### 16.3.4. ロケールの設定

通常は、ログインシェルで環境変数 `LANG` に ロケール名を設定し export すれば十分です。これは、ユーザーの `~/.login_conf` ファイル、またはユーザーの シェルの初期設定ファイル (`~/.profile`, `~/.bashrc`, `~/.cshrc`) でできます。 `LC_CTYPE` や `LC_CTIME` のような ロケールのサブセットを設定する必要はありません。 詳細に関しては、各言語向けの FreeBSD 文書を参照してください。

以下の二つの環境変数を設定ファイルで指定する必要があります。

- POSIX setlocale(3) 関連の関数のための `LANG`

- アプリケーション用の MIME 文字セットのための `MM_CHARSET`

これにはユーザのシェルの設定、アプリケーション固有の設定、 X11 の設定などが含まれます。

#### 16.3.4.1. ロケールを設定する方法

ロケールを設定するには以下で説明するように、二つの方法があります。 一つは推奨される方法で、ログインクラス (login class) において環境変数に割り当てる方法。 もう一つはシステムのシェル 初期化ファイル において環境変数の指定を追加する方法です。

##### 16.3.4.1.1. ログインクラスを用いる方法

この方法では、 各シェルの初期化ファイルに特定のシェル設定を追加する代わりに、 すべてのシェルにおいて一度に必要なロケール名と MIME 文字セットを環境変数に割り当てることができます。 ユーザの設定はユーザ自身で行なえますが、 管理者の設定にはスーパユーザの権限が必要となります。

###### 16.3.4.1.1.1. ユーザの設定

ユーザのホームディレクトリの `.login_conf` ファイルを用いて、 両方の変数に Latin-1 エンコーディングを設定する 簡単な例は次の通りです。

    me:\
        :charset=ISO-8859-1:\
        :lang=de_DE.ISO8859-1:

これは、BIG-5 エンコーディングされた繁体字中国語用の環境変数を設定する `.login_conf` の一例です。 中国語、日本語、韓国語用のロケール変数を 正しく認識しないソフトウェアに対処するため、 よりたくさんの変数を設定していることに注目してください。

    #Users who do not wish to use monetary units or time formats
    #of Taiwan can manually change each variable
    me:\
        :lang=zh_TW.Big5:\
        :lc_all=zh_TW.Big:\
        :lc_collate=zh_TW.Big5:\
        :lc_ctype=zh_TW.Big5:\
        :lc_messages=zh_TW.Big5:\
        :lc_monetary=zh_TW.Big5:\
        :lc_numeric=zh_TW.Big5:\
        :lc_time=zh_TW.Big5:\
        :charset=big5:\
        :xmodifiers="@im=xcin": #Setting the XIM Input Server

詳細に関しては 管理者の設定 と login.conf(5) を参照してください。

###### 16.3.4.1.1.2. 管理者の設定

`/etc/login.conf` において、 正しい言語がユーザのクラスに指定されていることを確認してください。 `/etc/login.conf` は、このようになります。

    language_name:accounts_title:\
        :charset=MIME_charset:\
        :lang=locale_name:\
        :tc=default:

先ほどの例のように Latin-1 での設定はこのようになります。

    german:German Users Accounts:\
        :charset=ISO-8859-1:\
        :lang=de_DE.ISO8859-1:\
        :tc=default:

##### ログインクラスを vipw(8) で変更する

新しいユーザを追加するために `vipw` を用います。そして以下のようなエントリを作成します。

    user:password:1111:11:language:0:0:User Name:/home/user:/bin/sh

##### ログインクラスを adduser(8) で変更する

新しいユーザを追加するために `adduser` を用います。そして以下の手順を踏みます。

- `/etc/adduser.conf` で `defaultclass = `language`` と設定します。 この場合、他の言語のユーザには `default` クラスを指定することを 忘れないでください。

- もうひとつの方法は、adduser(8) が

      Enter login class: default []:

  と聞いてきたときに、毎回言語を指定するやり方です。

- さらに別の方法は、異なる言語を利用するユーザを 追加する際に、以下のようにするやり方です。

      # adduser -class language

##### ログインクラスを pw(8) で変更する

新しいユーザを追加するために pw(8) を 用いる場合、以下の形式で実行します。

    # pw useradd user_name -L language

##### 16.3.4.1.2. シェルの初期化ファイルによる方法

> Note: シェルごとに異なった設定が必要なため、 この方法は推奨されません。 代わりに ログインクラスを用いる方法を使ってください。

ロケール名と MIME 文字コードを追加するには、 `/etc/profile` や `/etc/csh.login` などのシェル初期化ファイル に以下の二つの環境変数を設定します。 以下に示す例は、ドイツ語の設定です。

`/etc/profile` では 次のように設定します。

    LANG=de_DE.ISO8859-1; export LANG
    MM_CHARSET=ISO-8859-1; export MM_CHARSET

また `/etc/csh.login` では 次のように設定します。

    setenv LANG de_DE.ISO8859-1
    setenv MM_CHARSET ISO-8859-1

もしくは、上記のやり方を `/usr/share/skel/dot.profile` (`/etc/profile` と同形式) や `/usr/share/skel/dot.login` (`/etc/csh.login` と同形式) に追加することもできます。

X11 では、 `$HOME/.xinitrc` に 使用しているシェルに合った形式で

    LANG=de_DE.ISO8859-1; export LANG

もしくは、

    setenv LANG de_DE.ISO8859-1

と指定します。

### 16.3.5. コンソールの設定

C 言語の char で表現できるシングルバイトの文字セット用に、 `/etc/rc.conf` でその言語に対応した適切なコンソールフォントを指定してください。

    font8x16=フォント名
    font8x14=フォント名
    font8x8=フォント名

ここで `フォント名` は `/usr/share/syscons/fonts` ディレクトリ にあるフォントファイルから `.fnt` という拡張子を除いたものです。

また、`sysinstall` (FreeBSD バージョンが 5.2 よりも古い場合は `/stand/sysinstall`) を使って、C 言語の char で表現できるシングルバイトの文字セット用の正しい キーマップとスクリーンマップを指定するようにしてください。 sysinstall では、Configure を選択し、Console を選択します。 もしくは、`/etc/rc.conf` に以下の行を加えてください。

    scrnmap=スクリーンマップ名
    keymap=キーマップ名
    keychange="ファンクションキー番号の並び"

ここで `スクリーンマップ名` は `/usr/share/syscons/scrnmaps` ディレクトリ にあるマップファイルから `.scm` という拡張子を除いたものです。 VGA アダプタが疑似グラフィクス領域のフォント文字マトリクスで bit 8 を bit 9 に拡張することに対処するために (例えばスクリーンフォントが bit 8 列を使っている時に文字をその領域から外に移動する場合)、 フォントに適切にマップされたスクリーンマップが必要となります。

もし、`/etc/rc.conf` を以下のように設定して、 moused デーモンを有効化している場合は、 次の段落に書かれているマウスカーソルに関する情報を確認してください。

    moused_enable="YES"

設定省略時には、syscons(4) ドライバのマウスカーソルは キャラクタセット中の 0xd0-0xd3 の範囲を占めています。そのため、 利用している言語がこの範囲のキャラクタセットを使っている場合、 カーソルの占める範囲を重ならないように移動させなければなりません。 5.0 より前のバージョンの FreeBSD では、 次の行をカーネルコンフィグレーションファイルに追加することで対処できます。

    options         SC_MOUSE_CHAR=0x03

FreeBSD 4.4 以降の場合は、`/etc/rc.conf` に次の行を追加してください。

    mousechar_start=3

`キーマップ名` は `/usr/share/syscons/keymaps` ディレクトリにあるキーマップファイルから `.kbd` という拡張子を除いたものです。 どのキーマップを使うかよくわからないなら、kbdmap(1) で再起動せずにキーマップを試すことができます。

ファンクションキーの並びはキーマップにより定義されてはいないため、 端末タイプに合わせたファンクションキーを設定するために `keychange` が必要となります。

また、`/etc/ttys` の中のすべての `ttyv*` において、 正しいコンソール端末タイプを設定するようにしてください。 現在の定義済の値は以下の通りです。

文字セット | 端末タイプ
--- | ---
ISO-8859-1 もしくは ISO-8859-15 | `cons25l1`
ISO-8859-2 | `cons25l2`
ISO-8859-7 | `cons25l7`
KOI8-R | `cons25r`
KOI8-U | `cons25u`
CP437 (VGA のデフォルト) | `cons25`
US-ASCII | `cons25w`

ワイド/多バイト文字の言語については、 `/usr/ports/`language`` 内の適切な FreeBSD port を利用してください。 いくつかの ports はシステムからシリアルの vtty のように見えるようにコンソールとして振る舞います。 したがって、X11 と疑似シリアルコンソール用に充分な vtty を確保しておかなければなりません。 コンソールで他の言語を使うためのアプリケーションのリストの 一部です。

言語 | ports の位置
--- | ---
繁体字中国語 (BIG-5) | `chinese/big5con`
日本語 | `japanese/kon2-16dot` または `japanese/mule-freewnn`
韓国語 | `korean/han`

### 16.3.6. X11 の設定

X11 は FreeBSD プロジェクトの一部ではありませんが、 FreeBSD ユーザのための情報を記しておきます。 詳細に関しては、Xorg ウェブサイトや、あなたの使っている X11 サーバのサイトを参照してください。

`~/.Xresources` を使うことで、 アプリケーション固有の国際化の設定 (フォント、メニューなど) を追加することができます。

#### 16.3.6.1. フォントの表示

Xorg サーバ (`x11-servers/xorg-server`) か XFree86 サーバ (`x11-servers/XFree86-4-Server`) をインストールし、言語の TrueType フォントをインストールします。 ロケールを正しく設定すれば、 選んだ言語がメニューなどに表示されるはずです。

#### 16.3.6.2. 非英語の文字を入力する

X11 Input Method (XIM) プロトコルはすべての X11 クライアント用の新たな標準規格です。 すべての X11 アプリケーションは XIM 入力サーバからの入力を受け取る XIM クライアントとして書かれるべきです。 様々な言語用の XIM サーバが存在します。

### 16.3.7. プリンタの設定

プリンタにはいくつかの C 言語の char で表現できる シングルバイトの文字セットがハードウェアに組み込まれています。 ワイド/多バイトの文字セットでは特殊な設定が必要であり、 apsfilter を使うことをお勧めします。 言語固有のコンバータを用いて、PostScript か PDF フォーマット に文書をコンバートする場合もあるでしょう。

### 16.3.8. カーネルとファイルシステム

FreeBSD の高速ファイルシステム (FFS) は 8-bit 透過であり、 C 言語の char で表現できるいかなる文字セットも使うことが できます (multibyte(3) を参照)。 しかし、ファイルシステム中には文字セットの名前は記録されていません。 したがって、これは単なる 8-bit であり、 エンコーディングに関しては何の情報もないのです。 公式には、FFS はまだいかなるワイド/マルチバイトの文字セットもサポートしていません。 しかし FFS でそのようなサポートを行うためのパッチが、 多くのワイド/マルチバイトの文字セットに存在します。 それらは単に一時的で汎用性のない解決策であり、 わたしたちはそれらをソースツリーに含めないことを決めています。 これらのパッチに関しては、各言語のウェブサイトを参照してください。

FreeBSD の MS-DOS ファイルシステムでは、 MS-DOS, Unicode 文字セット、FreeBSD ファイルシステムの 文字セットの間で変換を行うことが可能です。 詳細は mount_msdos(8) を参照してください。

## 16.4. 国際化に対応したプログラムのコンパイル

FreeBSD ports の多くはすでに国際化されています。 いくつかには port の名前に -I18N と付いています。 これらはもちろんのこと、他のプログラムも国際化への対応を組み込んだものがあり、 コンパイルに際して特別な注意を払う必要はありません。

しかし、MySQL のようなアプリケーションでは、 特定の文字セットを使うように `Makefile` を設定する必要があります。 これは大抵 `Makefile` の中で 対処されているか、ソース中の configure に値を渡すことで対応しています。

## 16.5. FreeBSD を特定の言語に地域化する

### 16.5.1. ロシア語 (KOI8-R エンコーディング)

原作: Andrey Chernov.

KOI8-R エンコーディングの詳細については、 KOI8-R References (Russian Net Character Set) を参照してください。

#### 16.5.1.1. ロケールの設定

以下の行を `~/.login_conf` に追加してください。

    me:My Account:\
        :charset=KOI8-R:\
        :lang=ru_RU.KOI8-R:

ロケール を 設定する際の例については、この章の前の方を参照してください。

#### 16.5.1.2. コンソールの設定

- FreeBSD 5.0 より前のバージョンの場合は、 次の行をカーネルコンフィグファイルに追加します。

      options        SC_MOUSE_CHAR=0x03

  FreeBSD 4.4 以降のバージョンの場合は、 `/etc/rc.conf` に次の行を追加します。

      mousechar_start=3

- `/etc/rc.conf` で以下のように 設定してください。

      keymap="ru.koi8-r"
      scrnmap="koi8-r2cp866"
      font8x16="cp866b-8x16"
      font8x14="cp866-8x14"
      font8x8="cp866-8x8"

- `/etc/ttys` の各 `ttyv*` エントリにおいて、 端末タイプとして `cons25r` を指定してください。

コンソールを設定する際の例については、この章の前の方を参照してください。

#### 16.5.1.3. プリンタの設定

ロシア語用の文字を搭載したプリンタはほとんど ハードウェアコードページ CP866 を使っているため、 KOI8-R を CP866 に変換する専用の出力フィルタが必要となります。 このフィルタはデフォルトで `/usr/libexec/lpr/ru/koi2alt` に インストールされています。 ロシア語用のプリンタの `/etc/printcap` エントリは以下のようになります。

    lp|Russian local line printer:\
        :sh:of=/usr/libexec/lpr/ru/koi2alt:\
        :lp=/dev/lpt0:sd=/var/spool/output/lpd:lf=/var/log/lpd-errs:

記述の詳細については printcap(5) を参照してください。

#### 16.5.1.4. MS-DOS® ファイルシステムとロシア語ファイル名

以下の fstab(5) エントリの例は、マウントされた MS-DOS ファイルシステムにおいてロシア語ファイル名を 使えるようにします。

    /dev/ad0s2      /dos/c  msdos   rw,-Wkoi2dos,-Lru_RU.KOI8-R 0 0

`-L` オプションは利用するロケール名を選択し、 `-W` オプションは文字変換表を設定します。 `-W` オプションを使う時は、変換表が `/usr/libdata/msdosfs` にあるので、 `/usr` を MS-DOS パーティションより前に マウントするようにしてください。詳しくは、 mount_msdos(8) のマニュアルを参照してください。

#### 16.5.1.5. X11 の設定

1. まず X 以外のロケールの設定を行ってください。

   > Note: ロシア語の KOI8-R ロケールは古い XFree86 のリリース (3.3 より前) では動作しないかもしれません。 現在は Xorg が FreeBSD の デフォルトの X Window System です。 これは古いバージョンの FreeBSD を使っていない限り 起こり得ないことです。

2. Xorg を使っているなら、 `x11-fonts/xorg-fonts-cyrillic` パッケージをインストールしてください。

   `/etc/X11/xorg.conf` ファイルの `"Files"` セクションをチェックしてください。 既存の `FontPath` エントリの前に以下の行を追加しなければなりません。

       FontPath   "/usr/X11R6/lib/X11/fonts/cyrillic/misc"
       FontPath   "/usr/X11R6/lib/X11/fonts/cyrillic/75dpi"
       FontPath   "/usr/X11R6/lib/X11/fonts/cyrillic/100dpi"

   もし高解像度のビデオモードを使っている場合には、 75 dpi と 100 dpi の行を入れ替えてください。

3. ロシア語のキーボードを使えるようにするには、 以下の行を `XF86Config` ファイルの `"Keyboard"` セクションに追加します。

   XFree86 3.X の場合:

       Option "XkbLayout"   "us,ru"
       Option "XkbOptions"  "grp:toggle"

   Xorg (または XFree86 4.X) の場合:

       Option "XkbLayout"   "ru"
       Option "XkbOptions"  "grp:caps_toggle"

   また、`XkbDisable` が無効 (コメントアウト) になっていることを確認してください。

   `grp:caps_toggle` については、ロシア語/ラテン文字の切り替えは CapsLock で行います。 従来の CapsLock の機能は Shift+CapsLock で使うことができます (ラテン文字モードの時のみ)。 `grp:toggle` については、ロシア語/ラテン文字の切り替えは Right Alt で行います。 Xorg では、理由は不明ですが `grp:caps_toggle` は動作しません。

   キーボードに “Windows” キーがあり、 ロシア語モードでそのキーにいくつかの非英字キーが 割り当てられているようなら、`XF86Config` ファイルに以下の行を追加してください。

   XFree86 3.X の場合:

       XkbVariant "winkeys"

   Xorg (または XFree86 4.X) の場合:

       Option "XkbVariant" ",winkeys"

   > Note: ロシア語の XKB キーボードは古いバージョンの XFree86 ではうまく動かないかも知れません。 詳しくは前述の 注釈を参照してください。 ロシア語の XKB キーボードは、 地域化されていないアプリケーションでもうまく動かないかも知れません。

> Note: 地域化がされたアプリケーションは少なくともプログラムの最初の方で `XtSetLanguageProc (NULL, NULL, NULL);` を呼び出すべきです。 X11 アプリケーションを地域化する方法については、 KOI8-R for X Window を参照してください。

### 16.5.2. 台湾向けの繁体字中国語への地域化

FreeBSD-Taiwan プロジェクトは、多くの 中国語 ports を利用した、 FreeBSD を中国語化するための手引き http://netlab.cse.yzu.edu.tw/~statue/freebsd/zh-tut/ を提供しています。 `FreeBSD Chinese HOWTO` の現在の編集者は Shen Chuan-Hsing `<statue@freebsd.sinica.edu.tw>` です。

Chuan-Hsing Shen `<statue@freebsd.sinica.edu.tw>` は FreeBSD-Taiwan の `zh-L10N-tut` を使って Chinese FreeBSD Collection (CFC) を作成しました。 パッケージとスクリプトは ftp://freebsd.csie.nctu.edu.tw/pub/taiwan/CFC/ から入手できます。

### 16.5.3. ドイツ語への地域化 (すべての ISO 8859-1 言語向け)

Slaven Rezic `<eserte@cs.tu-berlin.de>` は FreeBSD マシン上でウムラウトを使うためのチュートリアルを書きました。 チュートリアルはドイツ語で書かれており、 http://www.de.FreeBSD.org/de/umlaute/ から入手できます。

### 16.5.4. 日本語/韓国語への地域化

日本語に関しては http://www.jp.FreeBSD.org/ を、韓国語に関しては http://www.kr.FreeBSD.org/ を参照してください。

### 16.5.5. 英語以外の FreeBSD ドキュメント

FreeBSD の一部を他の言語に翻訳してくれている人たちがいます。 これらは メインサイトのリンクを辿るか `/usr/share/doc` から入手できます。

# Chapter 17. 開発の最前線

再構成、再編成および改訂: Jim Mock. 原作: Jordan Hubbard, Poul-Henning Kamp, John Polstra, and Nik Clayton.

## 17.1. この章では

あるリリースから次のリリースまでの期間にも、 FreeBSD の開発は休みなく続けられています。 この開発の最前線に興味を持っている人のために、 手元のシステムを最新の開発ツリーに同期させておくための、 とても使いやすい仕掛けが何種類も用意されています。 注意: 開発の最前線は、 誰もが扱えるという性質のものではありません! もしもあなたが、開発途中のシステムを追いかけようか、 それともリリースバージョンのどれかを使い続けようかと迷っているのなら、 きっとこの章が参考になるでしょう。

この章を読んで分かるのは:

- 2つの開発ブランチ、FreeBSD-STABLE と FreeBSD-CURRENT の違い

- CVSup、 CVS、もしくは CTM を使ったシステム更新方法

- `make buildworld` (等) を使ってベースシステム全体を再構築しインストールする方法

この章を読む前に、以下の準備をしましょう。

- ネットワーク接続の適切な設定 (Chapter 21)

- サードパーティ製のソフトウェアのインストール方法の習得 (Chapter 4)

## 17.2. FreeBSD-CURRENT vs. FreeBSD-STABLE

FreeBSD には二つの開発ブランチがあります。 それは FreeBSD-CURRENT と FreeBSD-STABLE です。 この章ではそれぞれについて簡単に説明し、 どのようにしてあなたのシステムを対応するツリーに対して、 どうやって常に最新の状態に保つかについて扱います。 まずは FreeBSD-CURRENT、次に FreeBSD-STABLE について説明します。

訳: 花井 浩之 `<hanai@FreeBSD.org>`、1996 年 11 月 6 日

### 17.2.1. 最新の FreeBSD を追いかける

これを読む前に、 心にとめておいて欲しいことがあります。 FreeBSD-CURRENT とは FreeBSD の開発の “最前線” だということです。 FreeBSD-CURRENT のユーザは高い技術力を持つことが要求され、 自分のシステムが抱える困難な問題を自力で解決できなければなりません。 もし FreeBSD を使い始めたばかりなら、 これを運用することについて十分検討を重ねた方が良いでしょう。

#### 17.2.1.1. FreeBSD-CURRENT ってなに?

FreeBSD-CURRENT は FreeBSD の最新の、そして作業進行中のソースです。 中には現在開発途上のソフトウェア、 実験的な変更、あるいは過渡的な機能などが含まれています。 また、この中に入っている機能がすべて、 次の公式リリースに入るとは限りません。 FreeBSD-CURRENT をソースからほぼ毎日コンパイルしている人は たくさんいますが、 時期によってはコンパイルさえできない状態になっていることもあります。 これらの問題は可能な限り迅速に解決されますが、 FreeBSD-CURRENT が不幸をもたらすか、 それとも非常に素晴らしい機能をもたらすかは、 まさにソースコードを手に入れた瞬間によるのです!

#### 17.2.1.2. 誰が FreeBSD-CURRENT を必要としてるの?

FreeBSD-CURRENT は、 次の三つの重要なグループを対象としています。

1. ソースツリーのある部分に関して活発に作業している FreeBSD グループのメンバ。 彼らにとっては “最新のもの” にしておくのが 絶対に必要なことなのです。

2. 活発にテストしている FreeBSD グループのメンバ。 彼らは、FreeBSD-CURRENT が “健全である” ことを可能な限り保証するために、 種々の問題を解決するのに時間を惜しまない人々です。 彼らはまた、様々な変更に関する提案や FreeBSD の大まかな方向付けを行ないたいと思っている 人々でもあり、それを実装するためのパッチを提示します。

3. 単に、様々な事に目を向け、参考のために (たとえば動かすためではなく読むために) 最新のソースを使いたいと思っている人々。 これらの人々はまた、 時々コメントやコードを寄稿してくれます。

#### 17.2.1.3. FreeBSD-CURRENT に期待してはいけないことは?

1. なにか新しくカッコイイモノがあると聞き、 自分の周囲では一番にそれを持ちたいがために、 リリース前のコードの断片を追いかけること。 新しい機能を得るために一番乗りになるということは、 新しいバグに最初にぶち当たるということです。

2. バグを修正するための素早い方法。 いかなるバージョンの FreeBSD-CURRENT であれ、 元からあるバグを修正するのと同じく、 新しいバグを生み出すおそれがあります。

3. “公式にサポートする” こと。 わたしたちは 3 つの “公式な” FreeBSD-CURRENT のグループの一つに、 実際に属する人々を助けるのにベストを尽くしますが、 技術的なサポートを行なうには、単に「時間が足りない」のです。 これはわたしたちが外の人を助けるの好まない、 ケチで意地悪い人間だということではありません (もしそうなら FreeBSD なんてやっていません)。 わたしたちは一日に何百通ものメッセージに答え、 かつ FreeBSD の作業をすることなど出来ない! というだけのことなのです。 もし、FreeBSD の改良作業を続けるか、 それとも実験的なコードに関するたくさんの質問に答えるか、 という二つの選択を迫られたら、開発者は前者を選ぶでしょう。

#### 17.2.1.4. FreeBSD-CURRENT を使う

1. freebsd-current と cvs-all メーリングリスト に加わってください。 これは単に良い考えであるというだけでなく、 必須のことなのです。 もし freebsd-current メーリングリストに入っていなければ、 さまざまな人がシステムの現在の状態について 述べているコメントを見ることは決してありませんし、 従って他の人が既に見つけて解決している 多くの問題に戸惑ってあきらめてしまうでしょう。 さらに言うと、システムを正常に保つための 重要な情報を見逃してしまう可能性もあります。

   cvs-all メーリングリストでは、 それぞれの変更についての commit ログを見ることができます。 また、それに関して起こり得る副作用の情報を得ることができますので、 参加する価値のあるメーリングリストです。

   これらの、もしくは他のメーリングリストに入るには、 http://lists.FreeBSD.org/mailman/listinfo をたどって参加したいメーリングリ ストをクリックしてください。残りの手順の説明はそこにあり ます。

2. FreeBSD ミラーサイト か らのソースの入手。以下の 2 つの方法のいずれかでできます。

   1. cvsup を `/usr/share/examples/cvsup` にある `standard-supfile` という名称の `supfile` と合わせて使ってください。 これがもっとも推奨される方法です。 なぜなら、`cvsup` によって一度全体を入手し、 後は変更されたところだけを入手することができるからです。 多くの人が `cvsup` を `cron` から起動して、自動的にソースコー ドを最新のものに保っています。 上に挙げた見本の `supfile` をカス タマイズするとともに、あなたの環境に合わせて cvsup を設定する必要がありま す。

   2. CTMを用いる。 (接続料が高額だったり、email でのアクセスしかできないような) あまり良質でない TCP/IP 接続の場合には、CTM を利用すると良いでしょう。ただし、 これには多くの手間がかかりますし、 壊れたファイルを受けとってしまう可能性もあります。 そのため、最近ではあまり使われなくなっており、 長い間使用できなくなってしまう事態が発生する可能性があります (訳注: 保守する人が少ないためです)。 9600 bps 以上の速度で接続しているなら、 CVSup を利用されることを推奨します。

3. もし、ソースを眺めるだけでなく、 走らせるために入手しているのであれば、 一部だけ選ぶのではなく、FreeBSD-CURRENT の全体を手に入れてください。 なぜなら、ソースのさまざまな部分が他の部分の更新に依存しており、 一部のみをコンパイルしようとすると、 ほぼ間違いなくトラブルを起こすからです。

   FreeBSD-CURRENT をコンパイルする前に `/usr/src` にある Makefile を良く読んでください。 アップグレードの処理の一部として、 少なくとも一回は最初に 新しいカーネルをインストールし て、world を再構築 すべきでしょう。FreeBSD-CURRENT メーリングリスト と `/usr/src/UPDATING` を読めば、次のリ リースへ向けて移ってゆくに当たって時々必要となる既存シス テムからの新システムの構築手順についての最新情報が得られ るでしょう。

4. アクティブになってください! もし FreeBSD-CURRENT を走らせているなら、わたしたちはそれに関するコメント、 特に拡張やバグ潰しに関する提案を欲しています。 コードを伴う提案はもっとも歓迎されるものです!

### 17.2.2. 安定版の FreeBSD を使う

訳: 岩崎 満 `<iwasaki@jp.FreeBSD.org>`

#### 17.2.2.1. FreeBSD-STABLE ってなに?

FreeBSD-STABLE とは定期的に公開されるリリースを作成するための開発ブランチです。 このブランチに加えられる変更は原則として、 事前に FreeBSD-CURRENT で試験ずみであるという特徴があります。 ただそうであっても、 これは開発用ブランチの一つであるということに注意してください。 つまり、ある時点における FreeBSD-STABLE のソースが どんな場合にも使えるものであるとは限らないということです。 このブランチはもう一つの開発の流れというだけであって、 エンドユーザ向けのものではありません。

#### 17.2.2.2. 誰が FreeBSD-STABLE を必要としているの?

もしあなたが FreeBSD の開発過程に興味があるとか、 それに対する貢献を考えていて、特にそれが 次回の “ポイント” リリースに関係するもの であるなら FreeBSD-STABLE を追うことを考えると良いでしょう。

セキュリティ上の修正は FreeBSD-STABLE ブランチに対して行なわれますが、 そのために FreeBSD-STABLE を追う必要はありません。 すべての FreeBSD セキュリティ勧告には 影響のあるリリースで問題点を修正する方法が説明されており [8] 、 セキュリティ上の理由のみから開発用ブランチ全体を追いかけることは、 同時に望ましくない変更点まで取り込んでしまう可能性があるからです。

わたしたちは FreeBSD-STABLE ブランチがいつも安定に動作するように 努めていますが、それが保証されているというわけではありません。 また、コードは FreeBSD-STABLE に加えられる前に FreeBSD-CURRENT で開発されるのですが、FreeBSD-STABLE のユーザは FreeBSD-CURRENT よりも多いため、FreeBSD-CURRENT で発見されなかった バグが FreeBSD-STABLE で発見され、時々それが問題となることがあるのは 避けることができません。

このような理由から、わたしたちは盲目的に FreeBSD-STABLE を追いかけることを推奨しません。 特に、最初に開発環境でコードを十分に試験せずに プロダクション品質が要求されるサーバを FreeBSD-STABLE にアップグレードしてはいけません。

もしそうするための資源的な余裕がない場合は、 リリース間のバイナリアップデート機能を利用して、 最新の FreeBSD リリースを使うことを推奨します。

#### 17.2.2.3. FreeBSD-STABLE を使う

1. freebsd-stable メーリングリストに加わってください。 このメーリングリストでは、 FreeBSD-STABLE の構築に関連する事柄や、 その他の注意すべき点 に関する情報が流れています。 また開発者は議論の余地がある修正や変更を考えている場合に、 このメーリングリストで公表し、 提案された変更に関して問題が生じるかどうかを返答する機会をユーザに与えます。

   また、cvs-all メーリングリストでは、 変更がなされるごとに作成される commit log やそれに伴う 起こりうる副作用についての情報を読むことができます。

   これらの、もしくは他のメーリングリストに入るには、 http://lists.FreeBSD.org/mailman/listinfo をたどって参加したいメーリングリ ストをクリックしてください。残りの手順の説明はそこにあり ます。

2. もし、あなたが新しいシステムをインストールしようとしていて それを可能な限り安定なものにしておきたいなら、 最新のブランチの snapshot を ftp://snapshots.jp.FreeBSD.org/pub/FreeBSD/snapshots/ から取得し、 これを一般のリリースと同様にインストールしてください。 もしくは、ミラーサイトから最近の FreeBSD-STABLE リリースをインストールし、下記の説明に従って最新の FreeBSD-STABLE のソースコードに更新することもできます。

   もし、既に FreeBSD の以前のリリースが動いている場合で、 これをソースからアップグレードしようとするならば、 FreeBSD ミラーサイト から簡 単に行えます。これには次の 2 つの方法があります。

   1. cvsup を `/usr/share/examples/cvsup` にある `stable-supfile` という名称の `supfile` と合わせて使ってください。 これがもっとも推奨される方法です。 なぜなら、`cvsup` によって一度全体を入手し、 後は変更されたところだけを入手することができるからです。 多くの人が `cvsup` を `cron` から起動して、自動的にソースコー ドを最新のものに保っています。 上に挙げた見本の `supfile` をカス タマイズするとともに、あなたの環境に合わせて cvsup を設定する必要がありま す。

   2. CTM 機能を使います。 インターネットへの接続に高速で安価な回線を利用できないのであれば、 この方法を検討してみましょう。

3. 基本的には、 ソースに迅速でオンデマンドなアクセスが必要で、 接続のバンド幅が問題でなければ、`cvsup` か `ftp` を使いましょう。そうで ない場合は CTM を使いましょう。

4. FreeBSD-STABLE をコンパイルする前に、 `/usr/src` にある Makefile をよ く読んでください。 少なくとも一回はアップグレードの処理の一部として最初に 新しいカーネルをインストールし て、world を再構築 すべきでしょう。FreeBSD-STABLE メーリングリスト と `/usr/src/UPDATING` を読めば、次のリ リースへ向けて移ってゆくに当たって時々必要となる既存シス テムからの新システムの構築手順についての最新情報が得られ るでしょう。

## 17.3. ソースの同期

訳: 岩崎 満 `<iwasaki@jp.FreeBSD.org>`、1997 年 9 月 13 日

インターネット接続 (または電子メール) を使用して、 あなたの興味の対象によって FreeBSD プロジェクトのソースのある一部分または全体の最新を 追いかける方法は色々あります。 私たちが提供している基本的なサービスは Anonymous CVS、CVSup と CTM です:

> Warningソースツリーの一部を最新のものに更新することは可能です。 ただし、サポートされているアップデート手順は、 ソースツリー全体を最新のものに更新して、 ユーザランド (`/bin` や `/sbin` にあるような、ユーザが実行するプログラム全体のこと) およびカーネルのソースから再構築することのみであることに注意してください。 カーネルだけ、あるいはユーザランドだけというように、 ソースツリーの一部を更新した場合は、問題が生じることがよくあります。 この時に発生する問題はコンパイル時のエラーからカーネルパニック、 データの破壊とさまざまです。

Anonymous CVS と CVSup は pull 同期モデルを採用しています。 CVSup の場合、ユーザ (または `cron` スクリプト) が `cvsup` を起動し、どこかにある `cvsupd` サーバとやりとりしてファイルを 最新状態にします。 届けられる更新情報はその時点の最新のものであり、 また必要な時にだけ取り寄せられます。 興味のある特定のファイルやディレクトリに 限定して更新することも簡単にできます。 クライアント側のソースツリーの状態・ 設定ファイルの指定に従い、サーバによって更新情報が 素早く生成されます。 Anonymous CVS は、 このプログラムがリモートの CVS リポジトリから直接変更点を pull できるようにした cvs(1) への拡張であるという点で、 CVSup よりもずっと単純です。 CVSup は効率の点ではるかにまさっていますが、 Anonymous CVS の方が簡単に利用できます。

一方、CTM はあなたが持っているソースとマスタアーカイブ上に あるそれとの対話的な比較をおこないませんし、 あるいは向こう側から変更点を pull したりもしません。 そのかわりに、前回の実行時からの変更を認識するスクリプトが マスタ CTM マシン上で一日に数回実行され、 すべての変更を compress して通し番号を振り、 さらに電子メールで転送できるようにエンコードします (印字可能な ASCII キャラクタのみです)。受信した後は、 これらの “CTM のデルタ” は自動 的にデコード、検査してユーザのソースのコピーに変更を適用する ctm_rmail(1) によって処理可能となります。 この処理は CVSup や Anonymous CVS よりずっと効率 的であり、pull モデルというよりむしろ push モデルで あるため、私たちのサーバ資源の負荷は軽くなります。

もちろん他のトレードオフもあります。うっかりアーカイブ の一部を消してしまっても、CVSup は壊れた部分を検出して再構築してくれます。 CTM はこれをやってくれませんし、 Anonymous CVS はおそらく他の何よりも深く混乱してしまうことが多いでしょう。 もしソースツリーの一部を消してしまったら、(最新の CVS “ベースデルタ” から) 一からやり直し、 CTM か Anonymous CVS を使って悪い部分を消去し、再同期させることによって すべてを再構築しなければなりません。

## 17.4. “World” の再構築

FreeBSD のどれか特定のバージョン (FreeBSD-STABLE、FreeBSD-CURRENT など) について、ローカルのソースツリーを同期させたら、 そのソースツリーを使ってシステムを 再構築しなければなりません。

> バックアップを作成するシステムを再構築する前にバックアップを 作成することの重要性は、いくら強調してもし過ぎると言うことはありません。 システム全体の再構築とは (以降に書かれた手順に従っている限り) 難しい作業ではありませんが、 どんなに注意していたとしても、 あなた自身、あるいはソースツリーで作業している他の人達に手違いがあった時には、 システムが起動しなくなってしまう状態になることがあるのです。

> まず、バックアップがきちんと作成されていることを確認して、 fixit フロッピーか起動可能な CD を用意してください。 多分、それを使うことはないと思いますが、 あとで後悔することのないよう、念のため用意しておきましょう。

> メーリングリストに参加するもともと、FreeBSD-STABLE と FreeBSD-CURRENT のコードブランチは、 開発中のものです。 FreeBSD の作業に貢献してくださっている人達も人間ですから、 時にはミスをすることだってあるでしょう。

> そのような間違いは、単に警告を示す見慣れない 診断メッセージをシステムが、表示するような、 全く害のないものであることもあれば、システムを起動できなくしたり、 ファイルシステムを破壊してしまうような、 恐ろしい結果を招くものかも知れません。

> 万が一、このような問題が生じた場合、 問題の詳細と、どのようなシステムが影響を受けるかについて書かれた “注意 (heads up)” の記事が 適切なメーリングリストに投稿され、そして、その問題が解決されると、 “問題解決 (all clear)” のアナウンス記事が同様に 投稿されます。

> FreeBSD-STABLE や FreeBSD-CURRENT ブランチに追随するために試そうとするのに、 FreeBSD-STABLE メーリングリスト や FreeBSD-CURRENT メーリングリスト を過去にさかのぼって読まないというのは、 自ら災難を招くことになるでしょう。

> 訳注: これらのメーリングリストは英語でやりとりされているため、 日本語での投稿は歓迎されません。英語でのやりとりができない人は、 FreeBSD 友の会 の運営しているメーリングリストをあたってみるのがいいでしょう。

> `make world` は使わないこと古いドキュメントの多くが、この目的に `make world` を使うことを薦めています。 これは、重要な手順をいくつか抜かしてしまうので、 何をしているかよく分かっていなければ使うべきではありません。 ほぼあらゆる場合において、`make world` を実行するのは間違っており、 ここで説明されている手順を用いるべきです。

### 17.4.1. システムを更新する正式な方法

システムを更新するには、次の手順を踏むべきです。

    # make buildworld
    # make buildkernel
    # make installkernel
    # reboot

(たとえば、ローダのプロンプトから `boot -s` を使って) シングルユーザモードで立ち上げましょう。 それから、以下を実行してください。

    # mergemaster -p
    # make installworld
    # mergemaster
    # reboot

> この後の説明を読んでください上述の手順は、 とりあえず着手するための簡単なまとめにすぎません。 それぞれの手順をきちんと理解するために、 この後の節を読んでください。 カスタムカーネルを利用したいと考えているならなおさらです。

### 17.4.2. `/usr/src/UPDATING` を読む

何を始めるにしろ、まず最初に `/usr/src/UPDATING` (もしくはあなたがソースコードを どこにコピーしたにせよそれに相当するファイル) を読みましょう。 このファイルにはあなたが遭遇するかも知れない問題に対する重要な情報を 含んでいたり、あなたが特定のコマンドを実行しなければならなくなった時 その順序を指示したりするはずです。 `UPDATING` があなたが読んだ事柄と矛盾している時は `UPDATING` が優先します。

> Important: `UPDATING` を読むということは、前述の 適切なメーリングリストを購読する代わりにはなりません。 二つの要求は相補的なもので排他的なものではないのです。

### 17.4.3. `/etc/make.conf` の確認

まず、`/usr/share/examples/etc/make.conf` (FreeBSD 4.X では `/etc/defaults/make.conf`) と `/etc/make.conf` を調べてください。そこには 最初から標準的なものが (多くのものはコメントアウトされていますが) 含まれています。ソースからシステムを再構築するときに make が `/etc/make.conf` に付け加えられた設定を使用します。 `/etc/make.conf` に追加された設定は `make` を実行したときに常に使われることを覚えておいてください。 そのため、システムに必要な設定を書いておくと良いでしょう。

標準的なユーザならおそらく、 `/usr/share/examples/etc/make.conf` (FreeBSD 4.X では `/etc/defaults/make.conf`) の `CFLAGS` と `NOPROFILE` のコメントをはずすことを考えると思います。

他の定義 (`COPTFLAGS`、 `NOPORTDOCS` など) の定義行についても、 コメントを外す必要があるかどうか調べておきましょう。

### 17.4.4. `/etc` にあるファイルの更新

`/etc` ディレクトリには、 システム起動時に実行されるスクリプトだけでなく、 あなたのシステムの設定に関連する情報の大部分が 含まれています。そのディレクトリに含まれる スクリプトは、FreeBSD のバージョンによって多少異なります。

また、設定ファイルのなかには、稼働中のシステムが日々利用している ものもあります。実際には、`/etc/group` などがそれに該当します。

“make installworld” によるインストールの段階では、 特定のユーザ名、あるいはグループが存在していることを 要求する場面があります。システムのアップグレードを行なう際には、 それらのユーザ名やグループが削除、あるいは変更されて存在していない可能性が 考えられますが、そういった場合、システムのアップグレードを 行なっている間に、問題が発生する原因になります。 “make buildworld” において、それらのユーザ名やグ ループが存在するか確認が行われる場合もあります。

この例で記憶に新しいのは、 `smmsp` ユーザが追加された時です。 mtree(8) が `/var/spool/clientmqueue` を作成しようとする時、 そのユーザ名 (およびグループ) が存在しないためにインストールに失敗してしまったのです。

解決方法は、`/usr/src/etc/group` を調べ、 自分のシステムのグループ名リストと比較することです。 最新のファイルに含まれていて、あなたのファイルに含まれていない グループ名があれば、あなたのファイルにそのグループ名をコピーしてください。 同様に、名前が異なるにも関わらず、 `/etc/group` と `/usr/src/etc/group` で同じ GID を持っているグループ名があれば、 `/etc/group` に含まれる、 該当するすべてのグループ名を変更しておかなければなりません。

4.6-RELEASE からは、buildworld の前に `-p` をつけて mergemaster(8) を実行してもよいです。 これを実行すると、`buildworld` や `installworld` が成功するために必要なファイルだけを比較します。 古いバージョンの `mergemaster` を使っていて、`-p` がサポートされていない場合、 最初に実行するときソースツリーにある新しいバージョンのものを使ってください。

    # cd /usr/src/usr.sbin/mergemaster
    # ./mergemaster.sh -p

> Tip: もし、あなたがもっと神経質な人なら、あなたが名前を変更したり、 削除してしまったグループが所有しているファイルを、 次のようにして調べることもできます。

>     # find / -group GID -print

> これは `GID` (グループ名もしくは数字で示されたグループ ID) で 指定されたグループが所有するすべてのファイルを表示します。

### 17.4.5. シングルユーザモードへの移行

コンパイルは、シングルユーザモードで行なった方が良いでしょう。 そうすることで多少速度が向上する、というちょっとした利点が あるだけでなく、システムの再インストールは重要なシステムファイル、 標準コマンド、ライブラリ、インクルードファイルなどを操作します。 稼働中のシステムに (特に他のユーザがそのシステムにログインしている時に) そのような変更を加えることは、トラブルを引き起こす原因となります。

もう一つの方法として、マルチユーザモードでシステムを再構築して、 シングルユーザモードに移行してからそれをインストールする、 というのがあります。もしこのような方法で行ないたい場合は、 以下の手順を構築が完了するところまで飛ばしてください。 シングルユーザモードに移行するのを、 `installkernel` もしくは `installworld` しなければならなくなるま で後回しにできます。

稼働中のシステムでシングルユーザモードに移行するには、 スーパユーザ (root) 権限で次のコマンドを実行します。

    # shutdown now

あるいはシステムを再起動し、ブートプロンプトから `-s` フラグを設定することで、シングルユーザモードで システムを起動させることができます。起動後、シェルプロンプトから 次のように実行してください。

    # fsck -p
    # mount -u /
    # mount -a -t ufs
    # swapon -a

これはファイルシステムをチェックした後、 `/` を読み書き可能にして再マウント、 `/etc/fstab` に指定されている、 それ以外の UFS ファイルシステムをすべてマウントしてから スワップを有効にします。

> Note: CMOS クロックが地域時間に設定されていて GMT ではない場合 (date(1) コマンドが正しい時間と地域 を表示しないなら当てはまります)、 次のコマンドを実行する必要があるかもしれません。

>     # adjkerntz -i

> こうすれば、 確実に地域時刻が正しく設定されます -- これを怠ると、 あとあと問題になるかもしれません。

### 17.4.6. `/usr/obj` の削除

システムが再構築される時、構築されたものは (デフォルトで) `/usr/obj` 以下のディレクトリに格納され、 そのディレクトリの下は `/usr/src` と同じ構造となります。

このディレクトリをあらかじめ削除しておくことにより、 “make buildworld” の行程にかかる時間を短縮させ、 依存問題に悩まされるようなトラブルを回避することができます。

`/usr/obj` 以下のファイルには、 変更不可 (immutable) フラグ (詳細は chflags(1) 参照) がセットされているものがある可能性があります。 そのため、まず最初にそのフラグを変更しなければなりません。

    # cd /usr/obj
    # chflags -R noschg *
    # rm -rf *

### 17.4.7. ソースの再構築

#### 17.4.7.1. 出力メッセージの保存

実行される make(1) からの出力は、ファイルに保存すると良いでしょう。 もし、何か障害が発生した場合、エラーメッセージのコピーを手元に残すことができます。 何が悪かったのか、あなた自身がそれから理解することはできないかも 知れませんが、FreeBSD メーリングリストに投稿して、 誰か他の人からの助言を得るために利用することができます。

ファイルに保存する最も簡単な方法は、script(1) コマンドを 使い、引数に出力を保存したいファイル名を指定することです。 これを make world の直前に行ない、再構築が終了してから `exit` と入力すると、出力を保存することができます。

    # script /var/tmp/mw.out
    Script started, output file is /var/tmp/mw.out
    # make TARGET
    ... compile, compile, compile ...
    # exit
    Script done, ...

出力を保存する場合、`/tmp` ディレクトリの中に 保存してはいけません。 このディレクトリは、次の再起動で削除されてしまう可能性があります。 出力の保存には、(上の例のように) `/var/tmp`や `root` のホームディレクトリが適しています。

#### 17.4.7.2. ベースシステムの構築

まず、カレントディレクトリを `/usr/src` に 変更しなければなりません。次のように実行してください。

    # cd /usr/src

(もちろん、ソースコードが他のディレクトリにある場合には、 `/usr/src` ではなく、 ソースコードのあるディレクトリに移動してください)。

make world を行なうには、make(1) コマンドを使用します。 このコマンドは、`Makefile` というファイルから、 FreeBSD を構成するプログラムの再構築方法や、 どういう順番でそれらを構築すべきかといったような 指示を読み込みます。

コマンドラインの一般的な書式は、次のとおりです。

    # make -x -DVARIABLE target

この例では、`-`x`` が make(1) に渡されるオプションになります。 どのようなオプションが利用できるかについては、マニュアルページを 参照してください。

`-D`VARIABLE`` は、 `Makefile` に渡される変数であり、 この変数は `Makefile` の動作をコントロールします。 また、`/etc/make.conf` で設定される変数も 同様です。これは変数を設定するもう一つの方法として用意されています。

    # make -DNOPROFILE target

は、プロファイル版のライブラリを構築しないことを指定する もう一つの記法で、`/etc/make.conf` 中の

    NOPROFILE=    true     #    Avoid compiling profiled libraries

の行に対応します。

`target` は、make(1) に どのように動作するのかを指示するためのものです。 各々の `Makefile` には、数多くの異なる “ターゲット (target)” が定義されていて、 指定されたターゲットによって動作が決まります。

`Makefile` に書かれているターゲットには、 あなたが指定しても意味を持たないものも含まれます。 これらは、システムの再構築に必要な段階を、多くの さらに細かい段階に分割するため、構築の過程で利用されるものです。

大抵の場合、make(1) にパラメータを指定する必要はないでしょうから、 コマンドラインは次のようなものになるでしょう。

    # make target

FreeBSD の 2.2.5 から (実際には、FreeBSD-CURRENT ブランチで最初に作成され、 2.2.2 と 2.2.5 の間の時点で FreeBSD-STABLE に導入されたのですが)、 `world` ターゲットは `buildworld` と `installworld` の二つに分割されました。 `world` ターゲットは、 ほとんどのユーザにとっては実際に危険なものなので、FreeBSD バージョン 5.3 からは全く動かないように変更されます。

その名前が示すように、`buildworld` は `/usr/obj` 以下に新しい完全な ディレクトリツリーを構築し、 `installworld` は、そのツリーを 現在のマシンにインストールします。

これは、二つの理由から非常に有用です。 まず第一に、稼働中のシステムに全く影響を与えることなく、 安全にシステムの構築作業を行えることです。 構築作業は “何にも依存せず独立して行なわれる” ため、 マルチユーザモードで稼働中のシステムでも、何一つ 悪影響を与えずに `buildworld` を 実行することができます。 ただし、`installworld` は シングルユーザモードで行なうことをおすすめします。

第二に、NFS マウントを利用することで、 ネットワーク上の複数のマシンをアップグレードすることが 可能な点があげられます。たとえば三台のマシン、 `A`, `B`, `C` をアップグレードしたい場合には、まずマシン `A` で `make buildworld` と `make installworld` を実行します。 それから、マシン `B` とマシン `C` でマシン `A` の `/usr/src` と `/usr/obj` を NFS マウントし、`make installworld` とすることで 構築済みのシステムを各マシンにインストールすることができるのです。

`world` ターゲットも利用可能ですが、 このターゲットの利用は推奨されていません。

次のコマンド

    # make buildworld

を実行してください。ここで `make` に `-j` オプションをつけると、 同時にいくつかのプロセスを生成させることができます。 この機能はマルチ CPU マシンで特に効果を発揮します。 構築過程の大部分では CPU 性能の限界より I/O 性能の限界の方が問題となるため、シングル CPU マシンにも効果があります。

普通のシングル CPU マシンで以下のコマンド

    # make -j4 buildworld

を実行すると、make(1) は最大 4 個までのプロセスを同時に実行します。 メーリングリストに投稿された経験的な報告によると、 4 個という指定が最も良いパフォーマンスを示すようです。

もし、複数の CPU を備えたマシンで SMP 設定が行なわれたカーネルを 利用しているなら、6 から 10 の間の値を設定し、速度がどれくらい 向上するか確認してみてください。

ただし、この機能はまだ実験段階であるということに注意してください。 そのため、ソースツリーへ変更が加えられたときに これが正常に機能しなくなる可能性があります。 もし、このオプションを用いてシステムの構築に失敗した場合には、 障害を報告する前に、もう一度オプションを付けずに試してみてください。

#### 17.4.7.3. システムの構築にかかる時間

構築時間を決める要素はさまざまありますが、 現時点では Pentium III の 500 MHz、128 MB の RAM という構成でトリックや近道を使わずに普通に構築した場合、 FreeBSD-STABLE の構築に約 2 時間かかります。 FreeBSD-CURRENT の構築は、もう少し時間がかかります。

### 17.4.8. 新しいカーネルの構築とインストール

新しいシステムの全機能を完全に利用できるようにするには、 カーネルの再構築をする必要があります。 再構築は、ある種のメモリ構造体が変更された時には特に必須であり、 ps(1) や top(1) のようなプログラムは、 カーネルとソースコードのバージョンが一致しないと正常に動作しないでしょう。

最も簡単で安全にカーネルの再構築を行なう方法は、 `GENERIC` を使ったカーネルを構築・インストールすることです。 `GENERIC` にはあなたが必要とするデバイスがすべて含まれていない かも知れませんが、あなたのシステムをシングルユーザモードで 起動させるのに必要なものはすべて入っています。 これは新しいバージョンのシステムがきちんと動作するかどうか 調べる良い方法の一つです。 `GENERIC` で起動してから、 あなたがいつも使っているカーネルコンフィグレーションファイルを 使って新しいカーネルを構築することで、 システムが正常に動作しているかどうか確かめることができます。

FreeBSD の最近のバージョンでは、新しいカーネルを構築する前に build world を行うことが重要です。

> Note: カスタムカーネルを構築したい場合、既にコンフィグレー ションファイルがあるならば、単に `KERNCONF=`MYKERNEL`` を使ってください。

>     # cd /usr/src
>     # make buildkernel KERNCONF=MYKERNEL
>     # make installkernel KERNCONF=MYKERNEL

> FreeBSD 4.2 以前では、 `KERNCONF=` を `KERNEL=` に置き換えなければなりません。2001 年 2 月 2 日以前に取得した 4.2-STABLE では `KERNCONF=` を認識しません。

なお、`kern.securelevel` を 1 より大きく していて、かつカーネルのバイナリファイル に `noschg` のようなフラグを設定している場合 は、`installkernel` を行うのにシングル ユーザモードに移行しなければなりません。それ以外の場合は、マル チユーザモードでこれらのコマンドを問題なく動かせるはずです。 `kern.securelevel` について詳しくは init(8) を、ファイルの様々なフラグについて詳しくは chflags(1) をご覧ください。

FreeBSD の 4.0 以前にアップグレードする場合は、 古いカーネル構築手順に従う必要があります。 ただし、以下のコマンドを使って新しいバージョンの config(8) を利用することが推奨されています。

    # /usr/obj/usr/src/usr.sbin/config/config KERNELNAME

### 17.4.9. シングルユーザモードで再起動する

新しいカーネルが動作するかどうかテストするために、 シングルユーザモードで再起動するべきです。 シングルユーザモードでの起動は、 Section 17.4.5 に書かれている手順に従ってください。

### 17.4.10. 新しいシステムバイナリのインストール

十分最近のバージョンの FreeBSD を `make buildworld` で構築しているなら、 次にここで `installworld` を 使うことで新しいシステムバイナリのインストールを行ないます。

それには、以下のコマンドを実行してください。

    # cd /usr/src
    # make installworld

> Note: `make buildworld` でコマンドラインから 変数を指定した場合は、同じ指定を `make installworld` のコマンドラインにも 指定しなければなりません。 ただし、オプションについてはその限りではありません。 たとえば `-j` は `installworld` で絶対に使ってはいけません。

> たとえば以下のように実行したなら、

>     # make -DNOPROFILE buildworld

> 以下のようにしてインストールしなければなりません。

>     # make -DNOPROFILE installworld

> もしそうしなかった場合、 `make buildworld` の段階で構築されていない プロファイル版ライブラリをインストールしようとしてしまうでしょう。

### 17.4.11. `make installworld` で更新されないファイルの更新

システムの再構築は、いくつかのディレクトリ ( 特に、`/etc` や `/var` や `/usr`) において、 新規に導入されたり、変更された設定ファイルによる ファイルの更新は行なわれません。

これらのファイルを更新するもっとも簡単な方法は、mergemaster(8) を使うことです。これは自分でやることも可能なので、そうしても かまいません。 いずれの方法に従うにせよ、 必ず `/etc` のバックアップを取って不測の事態に備えてください。

#### 17.4.11.1. `mergemaster`

寄稿: Tom Rhodes.

mergemaster(8) ユーティリティは Bourne シェルスクリプトで、 `/etc` にある設定ファイルとソースツリーの `/usr/src/etc` にある設定ファイルの違いを確認するのを手伝ってくれます。 これを使うのが、ソースツリーにある設定ファイルにシステムの設定ファイルを 更新するために推奨される方法です。

`mergemaster` は 3.3-RELEASE と 3.4-RELEASE の間に FreeBSD のベースシステムに統合されました。 つまり、3.3 以降の -STABLE と -CURRENT のシステムにはすべて これがあるということです。

始めるには、プロンプトから単に `mergemaster` と入力して、 ファイルの比較を開始するのを見てください。 `mergemaster` は `/` を起点とした一時的なルート環境を構築し、 さまざまなシステム設定ファイルを (訳注: デフォルトでは `/var/tmp/temproot` に) 置いていきます。 次にこれらのファイルは現在システムにインストールされているファイルと比較されます。 この時点で、異なるファイルは diff(1) 形式で示され、 `+` の記号は追加または変更された行を表し、 `-` は完全に削除されたか新しく置き換えられた行を表します。 diff(1) の書式とファイルの違いの表示方法についてのより詳しい情報は、 diff(1) を参照してください。

mergemaster(8) は食い違いが起きているファイルをそれぞれ示します。 ここでは新しいファイル (一時ファイルとして参照されています) を削除するか、 一時ファイルをそのままインストールするか、 一時ファイルと現在インストールされているファイルを統合するか、 もしくは diff(1) の結果をもう一度見るか選択できます。

一時ファイルの削除を選ぶと、mergemaster(8) に現在のファイルを変更しないで新しいバージョンを削除せよと伝えます。 この選択は、現在のファイルを変更する理由が分からないのであれば、 お勧めできません。 mergemaster(8) のプロンプトで ? とタイプすれば、 いつでもヘルプが見られます。 ファイルのスキップを選ぶと、他のすべてのファイルを終えたあと、 もう一度そのファイルが提示されます。

一時ファイルをそのままインストールすることを選ぶと、 現在のファイルを新しいファイルで置き換えます。 ほとんどの手を加えていないファイルは、 これが一番よい選択です。

ファイルの統合を選んだ場合、 テキストエディタが起動され、両方のファイルの中身が提示されます。 画面上に並ぶ両方のファイルを見て新しいファイルを作成するために両方から必要な部分を選択し、 2 つのファイルを統合することができます。 並んでいるファイルを比較するとき、 l キーで左側の中身を選択し、 r キーで右側の中身を選択します。 最終出力は左右両方の部分でできたファイルになるでしょう。 このファイルをインストールすることができます。 たいてい、このオプシュンはユーザが設定を変更したファイルに使われます。

diff(1) の結果をもう一度見る、を選択すると、 ちょうど先ほど mergemaster(8) が選択肢を表示する前と同じように、 ファイルの相異点を見ることができます。

mergemaster(8) がシステムファイルの比較を終えたあと、 他のオプションについてもプロンプトが表示されます。 mergemaster(8) が、パスワードファイルを再構築したいかどうかや、 FreeBSD 5.0 より前のバージョンを動かしている場合は MAKEDEV(8) を実行するかどうかを尋ねることがあります。 最後に残った一時ファイルを削除するかどうかを尋ねて終了します。

#### 17.4.11.2. 手動での更新

手動で更新することを選んだ場合、 単にファイルを `/usr/src/etc` から `/etc` に コピーしただけでは正常に動作させることはできません。 これらのファイルには、“インストールという 手順を踏まなければならないもの” が含まれています。 `/usr/src/etc` ディレクトリは `/etc` ディレクトリにそのまま置き換えられるような コピーではないからです。 また、`/etc` にあるべきファイルのうちで `/usr/src/etc` にないものもあります。

mergemaster(8) を使っているのであれば (お勧めです)、 次のセクションまで飛ばしてもかまいません。

手動で行う際の 一番簡単な方法は、ファイルを新しいディレクトリにインストールしてから、 以前のものと異なっている部分を調べて更新作業を行なうことです。

> 既存の `/etc` をバックアップする 理論的に考えて、このディレクトリが自動的に 処理されることはありませんが、念には念を入れておいて 損はありません。たとえば以下のようにして、 既存の `/etc` ディレクトリを どこか安全な場所にコピーしておきましょう。

>     # cp -Rp /etc /etc.old

> `-R` は再帰的なコピーを行ない、 `-p` はファイルの更新時間や所有者などを保存します。

また、新しい `/etc` やその他のファイルを インストールするための、仮のディレクトリを作っておく必要があります。 仮ディレクトリは `/var/tmp/root` に置くのが良いでしょう。 同様に、必要なサブディレクトリもこの下に置きます。

    # mkdir /var/tmp/root
    # cd /usr/src/etc
    # make DESTDIR=/var/tmp/root distrib-dirs distribution

上の例は、必要なディレクトリ構造をつくり、ファイルをインストールします。 `/var/tmp/root` 以下に作られる、 たくさんの空のディレクトリは削除する必要があります。 一番簡単なやり方は、次のとおりです。

    # cd /var/tmp/root
    # find -d . -type d | xargs rmdir 2>/dev/null

これは空ディレクトリをすべて削除します。 (空でないディレクトリに関する警告を避けるために、 標準エラー出力は `/dev/null` に リダイレクトされます)

この段階の `/var/tmp/root` には、 本来 `/` 以下にあるべきファイルが すべて含まれています。 各ファイルを順に見て、既存のファイルと異なる部分を 調べてください。

`/var/tmp/root` 以下に インストールされているファイルの中には、 “.” から始まっているものがあります。 これを書いている時点で、それに該当するファイルは `/var/tmp/root/` と `/var/tmp/root/root/` の中にある シェルスタートアップファイルだけですが、 他にもあるかも知れません (これは、あなたがこれをどの時点で読んでいるかに依存します)。 `ls -a` を使って確かめてください。

もっとも簡単な方法は、二つのファイルを比較するコマンド diff(1) を使うことです。

    # diff /etc/shells /var/tmp/root/etc/shells

これは、あなたの `/etc/shells` ファイルと 新しい `/var/tmp/root/etc/shells` ファイルの 異なる部分を表示します。 これらを、あなたが書き換えたものに変更点をマージするか、 それとも既存のファイルを新しいもので上書きするかを 判断する材料にしてください。

> 新しい root ディレクトリ (`/var/tmp/root`) の名前に タイムスタンプを付けておくと、 異なるバージョン間の比較を楽に行なうことができます。: 頻繁にシステムの再構築を行なうということは、 `/etc` の更新もまた、頻繁に行う必要がある ということです。これはちょっと手間のかかる作業です。

> この作業は、あなたが `/etc` にマージした、 新しく変更されたファイルの最新のセットのコピーを保存しておくことで 素早く行なうことができます。 下の手順は、それを実現するための一つの方法です。

> 1. 普通に make world します。`/etc` や 他のディレクトリを更新したくなったときは、ターゲット ディレクトリに、そのときの日付に基づく名前をつけてください。 たとえば 1998 年 2 月 14 日 だとすれば、以下のようにします。

>        # mkdir /var/tmp/root-19980214
>        # cd /usr/src/etc
>        # make DESTDIR=/var/tmp/root-19980214 \
>            distrib-dirs distribution

> 2. 上に説明されているように、 このディレクトリから変更点をマージします。

>    その作業が終了しても、 `/var/tmp/root-19980214` を 削除してはいけません。

> 3. 最新版のソースをダウンロードして再構築したら、 ステップ 1 にしたがってください。今度は、 `/var/tmp/root-19980221` (更新作業が一週間おきだった場合) のような名前の、新しいディレクトリをつくることになるでしょう。

> 4. この段階で diff(1) を使用し、 二つのディレクトリを比較する再帰的 diff を作成することで、 一週間の間に行なわれたソースへの変更による相違点を調べます。

>        # cd /var/tmp
>        # diff -r root-19980214 root-19980221

>    これによって報告される相違点は、大抵の場合、 `/var/tmp/root-19980221/etc` と `/etc` との場合に比べて 非常に少ないものになります。 相違点が少ないため、変更点を既存の `/etc` ディレクトリにマージすることは、比較的容易になります。

> 5. ここまで終了したら、`/var/tmp/root-*` の 二つのうち、古い方のディレクトリは削除して構いません。

>        # rm -rf /var/tmp/root-19980214

> 6. この工程を、`/etc` へ変更点をマージする 必要があるたび、毎回繰り返します。

> ディレクトリ名の生成を自動化するには、date(1) を利用することができます。

>     # mkdir /var/tmp/root-`date "+%Y%m%d"`

### 17.4.12. `/dev` の更新

> Note: FreeBSD 5.0 以降を利用しているなら、この節は飛ばし て構いません。それらのバージョンでは、devfs(5) を利用し てデバイスノードをユーザに意識させずに割り当てています。

ほとんどの場合、mergemaster(8) は デバイスノードの再構築が必要であることを検出して自動的にそれを 実行するのですが、ここではデバイスノードの再構築を手動で行なう 方法について説明します。

安全のため、これはいくつかの段階に分けて行ないます。

1. `/var/tmp/root/dev/MAKEDEV` を `/dev` にコピーします。

       # cp /var/tmp/root/dev/MAKEDEV /dev

   `/etc` を更新するのに mergemaster(8) を使った場合、 `MAKEDEV` スクリプトは既に更新 されているでしょうが、(diff(1) を使って) チェックすることは無駄ではありませんし、 必要なら自分でコピーしてください。

2. ここで、`/dev` のファイル一覧を記録しておきます。 この一覧は、各ファイルの許可属性、所有者、メジャー番号、マイナー番号が 含まれている必要がありますが、タイムスタンプは含まれていてはいけません。 これを行なう簡単な方法は、awk(1) を使って、 いくつかの情報を取り除くことです。

       # cd /dev
       # ls -l | awk '{print $1, $2, $3, $4, $5, $6, $NF}' > /var/tmp/dev.out

3. デバイスノードをつくり直します。

       # sh MAKEDEV all

4. もう一度、ディレクトリのファイル一覧を記録します。 今回は `/var/tmp/dev2.out` です。 この段階で、この二つのファイル一覧を調べて 作成に失敗したデバイスノードを探してください。 違いは一つもないはずなのですが、安全のために一応チェックしてください。

       # diff /var/tmp/dev.out /var/tmp/dev2.out

   次のようなコマンドを使用し、ディスクスライスエントリを 再作成することで、ディスクスライスの矛盾を検出することがで きます。

       # sh MAKEDEV sd0s1

   適当な組み合わせは、環境によって異なります。

### 17.4.13. `/stand` の更新

> Note: この段階は、完全な更新を行なう場合にだけ必要な内容を含んでいます。 悪影響はありませんので、省略しても構いません。 FreeBSD 5.2 以降を利用しているなら、 `make installworld` の際に、ユーザのために、 `/rescue` ディレクトリが、静的コンパイル されたその時点のバイナリで更新されます。ですから、 `/stand` を更新する必要はありません。

完全な更新を行なうために、 `/stand` にあるファイルも同じように 更新したいと考えるかも知れません。 これらのファイルは、`/stand/sysinstall` という バイナリファイルへのハードリンクです。このバイナリファイルは、 他のファイルシステム (特に `/usr`) が マウントされていない場合にも動作できるよう、 静的にリンクされていなければなりません。

    # cd /usr/src/release/sysinstall
    # make all install

### 17.4.14. 再起動

これで、作業はおしまいです。 すべてがあるべき正しい場所に存在することをチェックしたら、 システムを再起動します。これは、単に shutdown(8) を実行するだけです。

    # shutdown -r now

### 17.4.15. 作業の完了

ここまで来れば、FreeBSD システムのアップグレードは成功です。 おめでとうございます。

もしちょっとした問題があった場合でも、 システムの一部を再構築するのは簡単です。 たとえば、アップグレードの途中で誤って `/etc/magic` を削除して `/etc` にマージしてしまい、 その結果 `file` コマンドが動作しなくなってしまったような場合を考えてみてください。 これを修復するには、次のコマンドを実行すれば修復することができます。

    # cd /usr/src/usr.bin/file
    # make all install

### 17.4.16. 質問ですか?

17.4.16.1. 変更が行なわれたら、その度にシステムの再構築が必要になるのでしょうか?
17.4.16.2. signal 11 (もしくは他のシグナル番号) のエラーがたくさん出て コンパイルが失敗します。何が起こっているんでしょうか?
17.4.16.3. 終了したら `/usr/obj` を削除しても かまいませんか?
17.4.16.4. 構築を中断した場合、その構築を途中から再開することはできますか?
17.4.16.5. どのようにすれば make world を高速化できますか?
17.4.16.6. なにか悪いことがあったらどうすればいいですか?

17.4.16.1. 変更が行なわれたら、その度にシステムの再構築が必要になるのでしょうか?

それは変更の性質によるので、なんとも言えません。 たとえば、CVSup を実行したとき、最後に実行したときから比べて 次にあげるようなファイルが更新されていたとします。

    src/games/cribbage/instr.c
    src/games/sail/pl_main.c
    src/release/sysinstall/config.c
    src/release/sysinstall/media.c
    src/share/mk/bsd.port.mk

このときには、改めてシステム全体を再構築する必要はないでしょう。 適切なサブディレクトリに移って `make all install` を行うだけで更新することができます。 しかし、もし何らかの大きな変更が行なわれているとき、たとえば `src/lib/libc/stdlib` が変更されている場合には、 システム全体を再構築するか、もしくはそのうち、 少なくとも静的にリンクされているもの (と、あなたが追加した 静的にリンクされたプログラム) を作り直す必要があります。

結局のところ、どの時点で現在のシステムをアップグレードするかは あなたが決めることです。 2 週間ごとにシステムを再構築し、その 2 週間の変更を取り込めば 幸せかもしれませんし、 変更のあった部分だけ再構築し、依存関係を確かめたいと考えるかも知れません。

もちろん、それらはどのくらいの頻度でアップグレードしたいか、 そして FreeBSD-STABLE か FreeBSD-CURRENT のどちらを追いかけているのかによります。

17.4.16.2. signal 11 (もしくは他のシグナル番号) のエラーがたくさん出て コンパイルが失敗します。何が起こっているんでしょうか?

これは通常、ハードウェアに問題があることを示しています。 システムの再構築は、ハードウェアに対する負荷耐久試験を行なうための 有効な手段の一つで、メモリに関係する問題がよく報告されます。 その大部分は、コンパイラが奇妙なシグナルを受け取り、 不可解な異常終了となることで発見されます。

本当にこの問題によるものかどうかは、再構築をもう一度実行し、 異なる段階で異常終了が発生するか、ということから確認できます。

この場合には、マシンの部品を交換して、どの部分が悪いのかを 調べてみることくらいしかできることはありません。

17.4.16.3. 終了したら `/usr/obj` を削除しても かまいませんか?

一言で答えるなら「削除しても構わない」です。

`/usr/obj` には、 コンパイルの段階で生成された すべてのオブジェクトファイルが含まれています。 通常 “make buildworld” の最初の段階では、 このディレクトリを削除して新しくつくり直すようになっています。 その場合には、構築終了後の `/usr/obj` を保存しておいても、あまり意味はありません。 削除すれば、大きなディスクスペースを (現在はだいたい 340 MB あります) 解放することができます。

しかし、もしあなたが何を行なおうとしているのか理解しているなら、 この段階を省略して “make buildworld” を行なうことができます。 こうすると、ほとんどのソースは再コンパイルされないため、 構築はかなり高速化されます。 これは裏をかえせば、デリケートな依存関係の問題によって、 システムの構築が奇妙な失敗に終わる可能性があるということです。 FreeBSD メーリングリストではしばしば、構築の失敗が、 この段階の省略によるものだということを理解せずに 不満の声をあげる人がいます。

17.4.16.4. 構築を中断した場合、その構築を途中から再開することはできますか?

それは、あなたが問題に気付く前に、 どれだけの作業を終えているかによって変わります。

一般的に (そしてこれは確実でしっかりした 規則ではありませんが)、 “make buildworld” の過程では、 基本的なツール ( gcc(1) や make(1) のようなもの) や、システムライブラリの新しいコピーが作成されます。 その後まず、これらのツールやライブラリはインストールされてから 自分自身の再構築に使われ、もう一度、インストールされます。 全体のシステム (ここでは ls(1) や grep(1) といった 標準的なユーザプログラムを含みます) は、 その新しいシステムファイルを用いて作り直されることになります。

もし、再構築が最終段階に入っていること が (記録しておいた出力を見たりすることで) わかっていたら、 (全く悪影響を与えることなく) 次のようにすることができます。

    ... fix the problem ...
    # cd /usr/src
    # make -DNOCLEAN all

これは、前回の “make buildworld” の作業をやり直しません。

次のメッセージ

    --------------------------------------------------------------
    Building everything..
    --------------------------------------------------------------

が “make buildworld” の出力にある場合には、 上のようにしてもほとんど悪影響が現れることはありません。

もしこのメッセージがないとか、よく分からないという場合には、 安全を確保し、後悔するようなことがないよう、 システムの再構築を最初からやり直しましょう。

17.4.16.5. どのようにすれば make world を高速化できますか?

- シングルユーザモードで動かしてください。

- `/usr/src` と `/usr/obj` ディレクトリを、 異なるディスク上の別のファイルシステムに置いてください。 また可能ならば、異なるディスクコントローラに接続された ディスクを使ってください。

- さらに高速化するには、これらのファイルシステムを ccd(4) (連結ディスクドライバ) デバイスを 使って、複数のディスク上に置いてください。

- プロファイル版の作成を無効化してください。 (`/etc/make.conf` で “NOPROFILE=true” をセットします) 普通、それが必要になることはありません。

- また、`/etc/make.conf` の中の `CFLAGS` を、 `-O -pipe` のように指定しましょう。 `-O2` の最適化はさらに多くの時間を必要とし、 しかも `-O` と `-O2` の 最適化には、ほとんど差はありません。 `-pipe` を指定することで、 コンパイラはテンポラリファイルの代わりにパイプを利用します。 その結果、(メモリの利用は増えますが) ディスクアクセスが減ります。

- make(1) に `-j`n`` オプ ションを指定して、複数のプロセスを並列に実行させてく ださい。 これはプロセッサが単一か複数かによらず、 どちらも同様に恩恵を得ることができます。

- `/usr/src` のある ファイルシステムを、`noatime` オプションを付けてマウント (もしくは再マウント) してください。 これは、そのファイルシステムにおいて、 最後にアクセスされた時刻の書き込みを抑制します。 おそらく、この情報が必要になることはないでしょう。

      # mount -u -o noatime /usr/src

  > Warning上の例は、 `/usr/src` 自身が独立したファイルシステムで あることを想定しています。 もしそうでないときには (たとえば `/usr` の 一部である場合には)、 `/usr/src` ではなく 適切なマウントポイントを指定する必要があります。

- `/usr/obj` のあるファイルシステムを、 `async` オプションをつけてマウント (もしくは 再マウント) してください。これによって、 ディスクへの書き込みが非同期になります。 つまり、書き込み命令はすぐに完了するのに対し、 実際にデータがディスクに書き込まれるのは、その数秒後になります。 これによって、書き込み処理の一括化が可能になるため、 劇的なパフォーマンスの向上が期待できます。

  > Warning このオプションを指定すると、ファイルシステムは 壊れやすくなってしまうことに注意してください。 このオプションを付けていて、突然電源が落ちた場合には、 再起動後にファイルシステムが復旧不能になる可能性が 非常に高くなります。

  > もし、`/usr/obj` 自身が独立した ファイルシステムであるならば、これは問題になりません。 しかし、同じファイルシステムに、他の貴重なデータを置いているときには、 このオプションを有効にする前に、 バックアップをきちんと取っておきましょう。

      # mount -u -o async /usr/obj

  > Warningもし `/usr/obj` 自身が ファイルシステムでない場合には、適切なマウントポイントを指すように、 上の例の名前を置き換えてください。

17.4.16.6. なにか悪いことがあったらどうすればいいですか?

自分の環境に前のビルドの余計なゴミが残っていないことをはっきりと確認してください。 とても簡単です。

    # chflags -R noschg /usr/obj/usr
    # rm -rf /usr/obj/usr
    # cd /usr/src
    # make cleandir
    # make cleandir

ええ、`make cleandir` は本当に 2 回実行するのです。

そして、`make buildworld` を行い、 全プロセスを最初からやり直してください。

まだ問題があれば、エラーと `uname -a` の出力を FreeBSD general questions メーリングリスト に送ってください。 自分の設定についてさらに質問されても答えられるよう用意してください!

## 17.5. 複数のマシンで追いかける

寄稿: Mike Meyer.

同じソースツリーを追いかけたいマシンを複数持っているなら、 全部のマシンにソースをダウンロードして全部再構築するのは資源、 つまりディスクスペース、ネットワーク帯域、そして CPU サイクルの無駄使いに思えます。 実際これは無駄で、解決策は 1 つのマシンに仕事のほとんどをさせ、 残りのマシンは NFS 経由でそれをマウントする、というものです。 このセクションではそのやり方を概観します。

### 17.5.1. 準備

まず初めに、同じバイナリで動かそうとするマシンたちを決めます。 このマシンたちのことをビルドセットと呼びましょう。 それぞれのマシンはカスタムカーネルを持っているかもしれませんが、 同じユーザランドバイナリを動かそうというのです。 このビルドセットから、 ビルドマシンとなるマシンを 1 台選びます。 ベースシステムとカーネルを構築するのはこのマシンになります。 理想的には、このマシンは `make buildworld` と `make buildkernel` を実行するのに十分な CPU を持った速いマシンであるべきです。 テストマシンとなるべきマシンも選びたいでしょう。 更新されたソフトウェアを使う前にそのマシンでテストするのです。 テストマシンはかなり長い時間落ちていても だいじょうぶなマシンであったほうがいいでしょう。 ビルドマシンでもかまいませんが、ビルドマシンである必要はありません。

このビルドセットのマシンはすべて `/usr/obj` と `/usr/src` を同じマシンの同じ場所からマウントする必要があります。 理想的にはビルドマシンの 2 つの違うドライブ上にあるとよいのですが、 ビルドマシンに NFS マウントされていてもかまいません。 ビルドセット自体が複数ある場合は、 `/usr/src` はひとつのビルドマシン上にあるべきです。 他のマシンからはそれを NFS マウントするようにしましょう。

最後にビルドセットの全てのマシン上の `/etc/make.conf` がビルドマシンと一致していることを確認してください。 つまり、ビルドマシンはビルドセットのどのマシンもインストールしようとしている ベースシステムを全部ビルドしなければならないということです。 また、各ビルドマシンは `/etc/make.conf` にそれぞれのビルドマシンのカーネル名を `KERNCONF` で指定し、 ビルドマシンは自分自身のカーネルから順に全部のカーネル名を `KERNCONF` にリストアップしてください。 各マシンのカーネルもビルドするのであれば、 ビルドマシンは各マシンのカーネル設定ファイルを `/usr/src/sys/`arch`/conf` に持っていなければなりません。

### 17.5.2. ベースシステム

さて、準備は整ったので、ビルドしましょう。 Section 17.4.7.2 に書いてあるようにカーネルとベースシステムを構築してください。 でも、まだインストールしないでください。 ビルドが終わったら、テストマシンに移り、 ビルドしたばかりのカーネルをインストールしてください。 テストマシンが NFS 経由で `/usr/src` と `/usr/obj` をマウントしているなら、 シングルユーザで再起動したときネットワークを使えるようにしてマウントする必要があります。 もっとも簡単な方法は、 マルチユーザモードで起動して、`shutdown now` を実行してシングルユーザモードに移行することです。 そうしたら、カーネルとベースシステムをインストールし、 いつもするように `mergemaster` を実行できます。 終わったら、 テストマシンを再起動して通常のマルチユーザ動作に戻します。

テストマシンにあるものすべてがちゃんと動いている確信が得られたら、 同じ手順でビルドセットの他のマシンにも新しいソフトウェアをインストールします。

### 17.5.3. Ports

ports ツリーにも同じアイデアが使えます。 最初に重要な点は、 ビルドセットのすべてのマシンに同じマシンの `/usr/ports` をマウントすることです。 そして、distfiles を共有するために、 `/etc/make.conf` を適切に設定します。 NFS マウントによってマップされる `root` ユーザが何であれ、`DISTDIR` はそのユーザが書き込める共通の共有ディレクトリに設定する必要があります。 各マシンは `WRKDIRPREFIX` を自分のマシンのビルドディレクトリに設定しなければなりません。 最後に、パッケージをビルドして配布しようとしているなら、 `DISTDIR` と同じように `PACKAGES` ディレクトリも設定してください。

# IV. ネットワーク通信

FreeBSD は、高性能なネットワークサーバとして最も広く使用されているオペレーティングシステムの 1 つです。 各章の内容は以下の通りです。

- シリアル通信

- PPP と PPP オーバイーサネット (PPPoE)

- 電子メール

- ネットワークサーバの運用

- ファイアウォール

- その他の高度なネットワークに関する話題

各章は、必要になった時に個別に参照できるように構成されています。 どの順番で読んでも構いませんし、ネットワーク環境で FreeBSD を使うのに、 すべてを読み通す必要がある、というわけでもありません。

# Chapter 18. シリアル通信

## 18.1. この章では

Unix は現在に至るまで、常にシリアル通信機能をサポートしていました。 実際、本当に初期の Unix マシンは、ユーザとの入出力にシリアル通信を使っていました。 10 文字毎秒のシリアルプリンタ、 キーボードから構成された “端末(terminal)” が広く使われていた当時とは、 何もかもがすっかり変わっています。この章では、FreeBSD でシリアル通信を行なういくつかの方法について説明しています。

## 18.2. シリアル接続の基礎

Assembled from FAQ.

このセクションには、 シリアルポートについての一般的な情報が書かれていま す。 あなたが求めている情報が、もしここで見つからなかった場合には、 ハン ドブックの端末とダイアルアップのセクションを見てください。

`ttyd`X`` (または `cuaa`X``) デバイスは、アプリケーション上 でシリアルポートをオープンする時に使用する、 標準的なデバイスです。プロセスがデバイスをオープンする際、端末 I/O 設定の デフォルトセットが使用されます。これらの設定内容は、 次のコマンドで確認することができます。

    # stty -a -f /dev/ttyd1

このデバイスの設定を変更した場合、その設定はデバイスが クローズされるまで有効です。デバイスが再びオープンされる時、 デフォルトの設定値に戻ります。 デフォルトの設定を変更するためには、 “初期状態” を設定した いデバイスをオープンして調節することができます。例えば、ttyd5 というデバイスに対して、デフォルトで CLOCAL モードを ON にして、8 bits の設定をおこない、 XON/XOFF フロー制御を行うように設定したい場合は、次のようにします。

    # stty -f /dev/ttyid5 clocal cs8 ixon ixoff

このコマンドを記述するのに適しているファイルは、 `/etc/rc.serial` です。 アプリケーションが`ttyd5` をオープンするときに、 デフォルトでこの設定をおこなうようになります。これらの設定は、 好きなように変更することができます。

また、“固定状態” のデバイスに調節を行うことで、 ある一定の設定が アプリケーションに変更されることを防ぐこともできます。例えば、 `ttyd5` のスピードを 57600 bps に固定したい場合には、次のようにします。

    # stty -f /dev/ttyld5 57600

これで、`ttyd5` をオープンして、 シリアルポートの転送スピードを 変更しようとするアプリケーションは 57600 bps に固定されるでしょう。

本来、デバイスの初期状態を変更したり設定を固定するのは、 `root` だけが行うべきです。 `MAKEDEV` スクリプトがデバイスエントリを作成する時は、 これをおこないません。

## 18.3. シリアル端末

原作: Sean Kelly `<kelly@ad1440.net>` 28 July 1996

訳: 中根 雅文 `<max@FreeBSD.org>`

シリアル端末を利用することで、 コンピュータのコンソールのそばにいないと きや、 手近にネットワーク接続されているコンピュータがないときでも、 FreeBSD の機能を便利に、かつ安価に利用することができます。 ここでは、FreeBSD にシリアル端末を接続する方法を解説します。

### 18.3.1. 端末の種類と利用方法

もともと Unix システムにはコンソールがありませんでした。 ユー ザはコンピュータのシリアル ポートに接続された端末からログインして プログラムを利用していました。 ちょうどモデムと通信ソフトを使ってリモート のコンピュータにログインし、テキスト ベースのプログラムを利用するのと よく似ています。

最近の PC は、 高品質の画像を表示できるコンソールを搭載していま すが、 ほとんどすべての Unix 系 OS には未だにシリアル ポートを使ってログ インするための機能があり、FreeBSD でもこの機能がサポートされています。 現在使用されていないシリアル ポートに端末を接続することでシステムに ログインし、 通常はコンソールや Xウィンドウ システムの `xterm` のウィ ンドウ上で起動しているテキスト ベースのプログラムであれば何 でも利用することができます。

職場での利用ということで考えるならば、FreeBSD が動作しているコンピュー タに接続された何台ものシリアル端末を 各社員の机に配置するというようなこ とが可能です。また、 家庭での利用方法としては、余っている古い IBM PC や Macintosh を FreeBSD が動いているパワフルなコンピュータの端末として利 用することができます。普通ならシングルユーザのコンピュータを、 パワフ ルなマルチユーザのシステムに変えることができるのです。

FreeBSD では、以下に挙げる3種類の端末が利用できます。

- ダム (dumb) 端末

- PCを利用した端末

- X 端末

以下は、それぞれについての解説です。

#### 18.3.1.1. ダム端末

ダム端末は、シリアルライン経由でのコンピュータとの接続専 用のハードウェアです。ダム端末は、 テキストの送受信および表示ができる 程度の計算能力しかもっていないので、“dumb” (間抜け) というように呼ば れています。 この端末上でプログラムを実行することはできません。テキスト エディタ、コンパイラ、E-mail、 ゲームなどなどのプログラムを実行するのは、 ダム端末を接続しているコンピュータの方です。

Digital Equipment社の VT-100 や、Wyse社の WY-75 を初めとして、多くのメーカが何百種類もの ダム端末を作っています。ほとんどどんな種 類のダム端末でも FreeBSD に接続して使用できます。さらに、高性能の端 末の中には画像を取り扱えるものもありますが、 限られた数のソフトウェア パッケージしかこういった機能には対応していません。

ダム端末は、X ウィンドウ システムで提供されるようなグラ フィックアプリケーションを必要としない 職場で広く用いられています。

#### 18.3.1.2. PC を端末として利用する

ダム端末 がテキストの表示およ び送受信の機能をそなえただけのものならば、言うまでもなく、 どんなPC もダム端末になり得ます。 必要なものは適切なケーブルと、そのPCの上 で動作する端末エミュレーション を行うソフトウェアのみです。

このような環境は、家庭においてよく利用されます。 たとえば、あなたの同居 人が FreeBSD のコンソールを専有している時などに、あまりパワーのないコ ンピュータを FreeBSD システムにシリアル端末として接続し、 その端末上で テキストだけを用いる作業をおこなうことができます。

#### 18.3.1.3. X 端末

X 端末は、既存のものの中で最も洗練された種類の端末といえ ます。X 端末は、たいていの場合シリアル ポートではなく、 イーサネッ トのようなネットワークを利用した接続をおこないます。また、 アプリケーション の利用においても、 テキストベースのものだけでなく、X アプリケーション の利用が可能です。

ここでは、参考までに 端末について紹介しただけで、X 端 末の設定や利用についての解説は おこないません。

### 18.3.2. ケーブルとポート

シリアル端末を FreeBSD システムに接続するためには、 適切なケー ブルと、 端末を接続するためのシリアルポートが必要です。ここでは、これ らについて説明します。もし既にあなたの利用したい端末と、 その端末 を接続するためのケーブルについてよく理解していれば、 設定 の章まで読み飛ばしてください。

#### 18.3.2.1. ケーブル

端末の接続は、シリアルポートを利用します。そこで、端末を FreeBSD システムに接続するためには、シリアルケーブル (RS-232C ケーブ ルとも呼ばれています) が必要となります。

シリアルケーブルには2種類のケーブルがあります。 どちらの種類の ケーブルを使わなければいけないかは、 どんな端末を接続したいかによります。

- もし、PC を端末として利用したい場合は、ヌルモデム ケーブル (リバースケーブルもしくは クロスケーブルと呼ばれることもしばしばあります) を使用してください。ヌルモデムケーブルは、 コンピュータ同士や端末同士を接続するために用い られるケーブルです。

- もし、本物の端末を接続するのであれば、その端末につい てきたドキュメントからどのようなケーブルを 使うべきか調べてください。も しドキュメントがない場合は、 まず ヌルモデム ケーブルを試してみて、うまくいかない場合は スタンダード ケーブル (しばしばストレートケーブルと呼 ばれます) を試してみてください。

また、端末側と FreeBSD 側の 両方の シリアルポート の形状が、 あなたが使用しようとしているケーブルについているコネクタの形 状と一致していなければなりません。

##### 18.3.2.1.1. ヌルモデムケーブル

ヌルモデムケーブル (またはリバースケーブルあるいはクロ スケーブル) は、たとえば “signal ground” 信号のように、いくつかの信 号はそのまま通しますが、 他の信号は途中で入れ替えて通します。たとえば、“send data” 信号のピンは、反対側のコネクタの “receive data” 信号の ピンと繋がっています。

自分で使うケーブルは自分で作りたいということであれば、 以下にター ミナルを接続する際に推奨される ヌルモデムケーブルの結線を示しておきま す。この表では、 RS-232C の信号線の名前と、DB-25 コネクタ上のピンの番 号を示しています。

Signal | Pin # |  | Pin # | Signal
--- | --- | --- | --- | ---
TxD | 2 | connects to | 3 | RxD
RxD | 3 | connects to | 2 | TxD
DTR | 20 | connects to | 6 | DSR
DSR | 6 | connects to | 20 | DTR
SG | 7 | connects to | 7 | SG
DCD | 8 | connects to | 4 | RTS
RTS | 4 |  | 5 | CTS
CTS | 5 | connects to | 8 | DCD

> Note: DCD と RST では、コネクタ内部でピン4を5に接続し、 そして逆側のコネクタのピン8と接続します。

##### 18.3.2.1.2. スタンダード RS-232C ケーブル

スタンダードシリアルケーブル (またはストレートケーブル) の場合は、すべての RS-232C 信号をそのまま通します。つまり、片方の “send data” 信号のピンは、逆側の “send data” 信号のピンと繋がっています。モデムを FreeBSD に接続するときや、一部の端末を接続するときにこのタイプの ケーブルを使用します。

#### 18.3.2.2. ポート

シリアルポートは、FreeBSDが動作しているホスト コンピュータと端 末の間でデータのやりとりを行うために用いるデバイスです。 ここでは、現在存在するポートの種類と FreeBSD でのポートのアクセス方法について解 説します。

##### 18.3.2.2.1. ポートの種類

シリアルポートには何種類かのものがあります。 ケーブルを購 入したり自作したりする前に、 そのケーブルのコネクタの形状が端末および FreeBSD システムのポートの形状と一致していることを 確認してください。

ほとんどの端末は DB25 ポートを搭載しています。 FreeBSDが動作しているも のを含めて、PCは DB25 または DB9 ポートを搭載しています。マルチポート のシリアルカードの場合は、RJ-12 や RJ-45 のポートを搭載しているかもし れません。

利用されているポートの種類に関しては、 ハードウェアについてきたドキュメ ントを参照してください。 また、多くの場合、ポートの形状から判断すること もできるでしょう。

##### 18.3.2.2.2. ポートの名前

FreeBSDでは、`/dev` ディレクトリ内のエントリを介 してシリアルポートへのアクセスがおこなわれます。 2種類の異なったエン トリがあります。

- 着信用のポートの名前は、 `/dev/ttyd`x`` ( `x` は 0から始まるポート番号) となっています。一般に端末の接続には 着信用ポートを用います。着信用のポートでは、 シリアルラインのデータ キャリア検出 (DCD) 信号がオンになっている必要があります。

- 発信用のポートの名前は、 `/dev/cuaa`x`` となっています。 発信用のポートは普通モデムの接続に用い、端末の接続には 利用しません。ただ、 ケーブルまたは端末がキャリア検出信号を使えない タイプのものの場合は、 発信用のポートを使うとよいでしょう。

詳しくは、sio(4) のマニュアルをご覧ください。

たとえば、端末を一つ目のシリアルポート (DOS でいうところの `COM1`) に接 続したとすると、`/dev/ttyd0` がこの端末を指すことになります。また、 二つ目のシリアルポート (`COM2`) ならば `/dev/ttyd1` となり、 以下この形式のデバイスエントリを使います。

各シリアルポート、 特にマルチポートのシリアルカードを利用する ために、kernel の設定をおこなう必要がある場合がありますので、注意してくだ さい。詳しくは、FreeBSD カーネルのコンフィグレーション をご覧ください。

### 18.3.3. 設定

ここでは、端末からのログインを可能にするために必要な FreeBSD 側の設定について解説します。 既に端末を接続するポートが利用できるように kernel の設定をおこない、端末が接続されているものと考えて、解説を進め ます。

簡単に言えば、プロセス管理や初期化をおこなっている `init` プロセス に対して、 ログイン名を読み込み `login` プログラムを起動している `getty` を実行するように指示します。

これをおこなうには、`/etc/ttys` の内容を編集する必要があります。まず、`su` コマンドで root になって、`/etc/ttys` に以下の 変更を加えてください。

1. 端末を接続するポートの `/dev` のエントリが含ま れている行がまだ存在しなければ、これを `/etc/ttys` に追加してく ださい。

2. `/usr/libexec/getty` が対象となるポートに対して 実行されるように指定してください。また、 `/etc/gettytab` ファイ ル内の適切な `getty` タイプのエントリを指定してください。

3. デフォルトのターミナルタイプを指定してください。

4. 対象となるポートを “on” に設定してください。

5. そのポートが “secure” であるかどうかを指定してください。

6. `init` に `/etc/ttys` を読み込みなおさせてく ださい。

また、必要に応じて `/etc/gettytab` を変更し、上の 2で使用する `getty` のエントリを追加してください。 このドキュメントではこの方 法については特に解説しませんので、gettytab(5) および getty(8) のマニュアルをご覧ください。

以下では、上のステップについて詳しく解説します。 実例を用いて、何をす べきかを解説していきます。Wyse-50 と、 古い IBM の 286 マシン上で通信 ソフト Procomm を使って VT-100 エミュレーションをおこなっているものを端 末の例として紹介します。また、Wyse は 2番目のポートに、 286マシンは 6 番目のポート (マルチポートのシリアルカード上のポート) に接続します。

`/etc/ttys` について、 より詳しくは、ttys(5) のマニュアルをご覧 ください。

#### 18.3.3.1. `/etc/ttys` へのエントリの追加

既にエントリがある場合を除いて、まず初めに `/etc/ttys` にエントリを追加しなければいけません。

`/etc/ttys` には、 FreeBSDシステム上のログインを許可するすべての ポートを記述します。たとえば、一つ目の仮想コンソール `ttyv0` のエン トリもこのファイルにあります。このエントリのおかげで、 コンソールからの ログインが可能になっています。 このファイルには、他の仮想コンソール、シ リアルポートおよび仮想端末のエントリも含まれています。 端末を接続する 場合は、そのポートの `/dev` のエントリを、 `/dev` の部分 を省略して記述します。

FreeBSD のインストール当初の状態では、 `ttyd0` から `ttyd3` までの、初めの四つのシリアルポートのエントリが `/etc/ttys` に記述され ています。 これらのポートのいずれかに端末を接続する場合は、新たなエント リを追加する必要はありません。

ここで紹介している例では、 既にファイルにエントリが存在する 2番目のシリ アルポート、 `ttyd1` に Wyse-50 を接続しています。 一方、6番目のシ リアルポートに接続する 286マシン用のエントリは、新たに追加してやらな ければなりません。以下に、エントリを追加した後の `/etc/ttys` か ら抜粋して示します。

    ttyd1   "/usr/libexec/getty std.9600"   unknown off secure
    ttyd5

#### 18.3.3.2. `getty` タイプの指定

次に、 端末からのログインを処理するプログラムの指定をおこな います。 FreeBSDでは、標準的には `/usr/libexec/getty` をこの目的 で利用しています。`login:` プロンプトを送り出しているのは、このプロ グラムです。

`getty` プログラムは、 コマンドラインパラメータとして、 `getty` タイプをとります。ただし、 このパラメータは必須ではあ りません。 `getty` タイプは、 ボーレートやパリティといった、接続され た端末の特徴を表すものです。`getty` プログラムは、与えられた `getty` タイプに対応したこれらの特徴を `/etc/gettytab` から 読み込みます。

ファイル `/etc/gettytab` には、 新旧の端末に関する多数のエントリ が記述されています。 ほとんどの場合、`std` という文字列で始まる名前 のエントリを使えば、 接続された端末に対してログインセッションを提供す ることができます。これらのエントリを利用した場合、 パリティは無視されま す。110 bps から 115200 bps までのボーレートに対応した `std` のエン トリがあります。当然、 新たなエントリを追加することも可能です。 gettytab(5) のマニュアルに、 さらに詳しく解説されています。

`/etc/ttys` の getty タイプの設定をする際は、 端末側の通信 パラメータの設定が、getty タイプのものと一致していることを確認し てください。

紹介している実例では、Wyse50 はパリティなし 38400 bps で接続していま す。また、286 マシンの方は、パリティなし 19200 bps の接続です。以下は、 この段階でのこの二つの端末に関する `/etc/ttys` の設定です。

    ttyd1   "/usr/libexec/getty std.38400"   unknown off secure
    ttyd5   "/usr/libexec/getty std.19200"

ここで、実行するプログラムを指定している 2番目のフィールドが、ダブルクォー テーションに囲まれていることに注意してください。 こうしないと、`getty` のタイプの指定が、 つぎのフィールドとして判断されてしまう可 能性があるので、 十分注意することが必要です。

#### 18.3.3.3. デフォルトのターミナルタイプの指定

`/etc/ttys` の 3番目のフィールドには、 そのポートのター ミナルタイプのデフォルトを指定します。 ダイアルアップ用のポートの場合 は、 ユーザがどのタイプの端末あるいは 通信ソフトを利用してダイアルアップ してくるかは分からないので、`unknown` や `dialup` を記述するの が一般的です。一方、 直結された端末の場合、ターミナルタイプが変わるこ とはありませんから、 このフィールドには実際のターミナルタイプを記述し ます。

一般に、ユーザは `.login` や `.profile` などのファイル内で `tset` コマンドを使って、 ターミナルタイプをチェックし、必要ならば ターミナルタイプの入力を求めるプロンプトを 表示するようにします。この とき、 `/etc/ttys` の中でターミナルタイプが指定されていれば、 このプロンプトを表示せずに先に進むことが可能です。

FreeBSD 上で、どのターミナルタイプを利用できるかは、 `/usr/share/misc/termcap` をご覧ください。 このファイルには、お よそ 600 のターミナルタイプが定義されています。 必要ならば、新たなエン トリを追加することも可能です。詳しくは termcap(5) のマニュアルをご覧ください。

紹介している例では、Wyse-50 のターミナルタイプは Wyse-50 です (もっ とも他のタイプをエミュレートすることも可能ですが、ここでは Wyse-50 モー ドで使用します)。また、286マシン上では Procomm が VT-100 エミュレー ションをおこなうように設定されています。以下が、まだ未完成の `/etc/ttys` の関連部分です。

    ttyd1   "/usr/libexec/getty std.38400"   wy50  off secure
    ttyd5   "/usr/libexec/getty std.19200"   vt100

#### 18.3.3.4. ポートを利用可能にする

`/etc/ttys` のつぎのフィールド、 つまり 4番目のフィー ルドは、 そのポートをアクティブにするかどうかの設定です。 このフィールド に `on` を指定すると、 `init` プロセスが2番目のフィールドに書かれ たプログラム、`getty` を実行し、 ログインのためのプロンプトを送り出 すようになります。 このフィールドに `off` を記述すると、 `getty` は起動されず、 よってこのポートからのログインもできなくなります。

ということで、当然このフィールドには `on` を指定します。以下が `/etc/ttys` です。それぞれのポートを `on` にしました。

    ttyd1   "/usr/libexec/getty std.38400"   wy50  on secure
    ttyd5   "/usr/libexec/getty std.19200"   vt100 on

#### 18.3.3.5. ``secure'' なポートの指定

とうとう最後のフィールドの設定です。 (実際にはここでは触れ ませんが、 オプショナルな`window` の設定のフィールドも存在するので、 ほぼ最後のフィールドといった方が正確かもしれません) 最後のフィールド では、 そのポートが安全かどうかを指定します。

ここで、“安全” なポートとはどういうポートのことでしょう?

これは、root のアカウント (または、ユーザ ID が 0 のアカウント) がロ グインしてもよいポートということです。 安全でないポートでは、root のロ グインは許可されません。

では、どのように安全なポートとそうでない ポートを使えばよいでしょう?

ポートを安全ではないとすることで、 そのポートに接続された端末からは、root のログインを禁止することができます。FreeBSDシステムの root のパス ワードを知っている人は、 まず一般ユーザとしてログインしなければなりませ ん。 スーパユーザの特権を得るためには、そのうえで `su` コマンドを 利用しなければいけません。

これによって、root アカウントが不正に利用された場合に、 その経過を調査 する上で二つの記録を利用できるようになります。 `login` と `su` コマンドは、共にシステムのログに記録を残します (また、 ログイン は `wtmp` にも記録を残します。 )。

ポートを安全なものとして指定すると、その端末からの root のログインが可 能になります。root のパスワードを知っている人は、単に root としてログ インできます。この場合は、当然ログインの記録や `su` コマンドのログ は残りません。

では、どちらを使うべきでしょうか?

単純に “insecure” を使うのがよいでしょう。 公共の場所にある訳ではな い端末や、 鍵のかかったドアの内側にある端末にも “insecure” を指 定する方がよいでしょう。 スーパユーザの特権が必要な場合でも、ログイ ンして `su` を実行するのは、 ごく簡単なことなんですから。

以下に、ようやく完成した `/etc/ttys` のエントリに端末の場所を表 すコメントを追加したものを示します。

    ttyd1   "/usr/libexec/getty std.38400"   wy50  on insecure # Kitchen
    ttyd5   "/usr/libexec/getty std.19200"   vt100 on insecure # Guest bathroom

#### 18.3.3.6. `init` にファイル `/etc/ttys` の再読み 込みをさせる

FreeBSD をブートすると、最初に起動されるプロセス、 `init`が `/etc/ttys` を読み込んで、記述されているプログラムを利用可能な ポートに対して実行し、 ログインプロンプトを送り出させます。

`/etc/ttys` の編集が終わった後、 `init` に変更を認識させるた めに、わざわざ FreeBSD をブートしなおしたくはないでしょう。このような 場合のために、`init` は、 `SIGHUP` (hangup) シグナルを受信すると、 `/etc/ttys` を読み込みなおすようになっています。

`/etc/ttys` の変更を保存したら、 以下のようなコマンドを実行して、`init` に対して SIGHUP を送信します。

    # kill -HUP 1

(`init` プロセスのプロセス ID は 常に 1です)

すべての設定が正しくおこなわれ、 すべてのケーブルがただしく接続されてい て、 かつ端末の電源が入っていれば、 端末にはログインプロンプトが表示され ているはずです。これで、 これらの端末からの最初のログインの準備が完了で す!

### 18.3.4. トラブルシューティング

細心の注意を払って設定をおこなっても、 ときには端末の接続がう まくいかない場合があるでしょう。以下に、 よく見られる問題とその解決方法 を示します。

ログインプロンプトが表示されない

  端末の電源が接続され、 スイッチが入っていることを確認してください。もし、PC を端末として利用している場合は、 通信ソフトが適切なシリアルポー トを利用する設定になっているかどうか確かめてください。

  ケーブルがしっかりと端末と FreeBSDが動作しているコンピュータの両方に接続され ていることを確認してください。また、 正しい種類のケーブルを利用している か確かめてください。

  端末と FreeBSD の間の通信速度とパリティの設定が一致していることを確認 してください。 出力をモニタに表示するタイプの端末の場合は、モニタ のコントラストと明るさの設定を確認してください。また、 出力が印刷 されるタイプの端末の場合は、 紙とインクが十分にあるかどうかを確かめてく ださい。

  `getty` が動いていて、 端末を認識していることを確認してください。以 下のコマンドで動作中の `getty` プロセスのリストを得ることができます。

      # ps -axww|grep getty

  その端末に対する `getty` の情報が表示されるはずです。たとえば、以下 の表示例は、`getty` は 2番目のシリアルポート (`ttyd1`) に対し て `/etc/gettytab` 中の `std.38400` のエントリを使って動作し ているということを示しています。

      22189  d1  Is+    0:00.03 /usr/libexec/getty std.38400 ttyd1

  もし、`getty` プロセスが一つも動いていないようであれば、 `/etc/ttys` の中で、 そのポートを利用可能にする設定をしたかどう か確かめてください。また、`kill -HUP 1` を確実に実行してください。

ログインプロンプトの代わりにゴミが表示される

  端末と FreeBSD の間の通信速度およびパリティの設定が一致していることを確 かめてください。また、`getty` プロセスの情報を調べて、適切な `getty` のタイプが使用されていることを確認してください。間違った getty タイプが使用されている場合は、 `/etc/ttys` を修正し てから、 `kill -HUP 1` を実行してください。

文字が重複して表示される、 入力したパスワードが表示される

  端末または通信ソフトの設定で、“半二重 (half duplex)” あるいは “ローカ ルエコー” となっているところを、“全二重 (full duplex)” に変更してください。

## 18.4. ダイアルインサービス

原作: Guy Helmer `<ghelmer@FreeBSD.org>`.

訳: 中根 雅文 `<max@FreeBSD.org>`. 6 September 1996.

このドキュメントでは、FreeBSD で外部からのモデムによるアクセスを受け付 けるための設定に関してまとめてあります。このドキュメントは筆者が FreeBSD 1.0、1.1 および 1.1.5.1 での経験と、他の Unix 系 OS での経験を 基に書いたものですが、 必ずしも十分な内容でないかもしれませんし、掲載し た実例もあなたが今お使いの環境とは一致しないかもしれません。 また、筆者 はこのドキュメントに従って行われた作業で データが失われたりシステムが破 壊されるようなことがあっても、 一切責任をとれません。

### 18.4.1. 設定を始める前に

筆者は、読者が FreeBSD に関する基本的な知識をもっていることを仮定して このドキュメントをまとめました。まず、FreeBSD が既にインストールされ ていて、Unix 系環境においてファイルの編集の方法やシステムに付属のマニュ アルを参照する方法を知っている必要があります。また、 以下に示すように、FreeBSD の特定のバージョンが必要となりますし、いくつかの用語に関する 知識、 そしてモデムや多少の配線に関する知識も必要となります。

#### 18.4.1.1. FreeBSD のバージョン

まず、FreeBSD のバージョンは 1.1 以上を使用してください (バージョン 2.X でもかまいません)。FreeBSD 1.0 には、 2種類のシリアル ドライバ が含まれているので、 混乱の元となり得ます。また、FreeBSD のシリアル ディバイス ドライバ (`sio`) は、 バージョンを追う毎に改善されてき ていますので、 より新しいバージョンの FreeBSD を使用することで、よりよ い、 より効率の高いドライバを利用することができるはずです。

#### 18.4.1.2. 用語解説

以下、簡単にいくつかの用語について解説しておきます。

bps

  Bits per Second　の略で、 データの転送速度を表す単位。

DTE

  Data Terminal Equipment の略。 たとえばコンピュータ本体のこと。

DCE

  Data Communications Equipment の略で、 具体的にはモデムのこと。

RS-232

  EIA (米電気産業協会) のハードウェア間シリアル通信の標準規 格。

これらの用語やデータ通信一般に関して、 より詳しい情報が必要な場合は、The RS-232 Bible という本 (誰か ISBN 分かる方いませんか?) が参考 になると思います。

通信においてのデータ転送速度に関して、 このドキュメントでは “ボーレー ト” (baud rate) ではなく、“bps” (bits per second) をその単位として 使うことにします。これは、 ボーというのは一定時間に生じる電気的状態の変 化の数を表す単位にすぎず、“bps” という単位の方が実体に即しているか らです (少なくとも、 こういう表現をしておけば、意地の悪い人に怒られる こともないのではないかと思います)。

#### 18.4.1.3. 外づけモデムと内蔵モデムについて

ダイアルアップのサービスに関していえば、 外づけのモデムの方が適している ようです。これは、 多くの外づけのモデムは設定を不揮発ラムに書き込んで半 永久的に保存することができますし、また RS-232 に関する重要な情報を知る ための点滅するライトによるインディケータが 搭載されているからです。点滅 するライトは、 システムを見に来た訪問者に強い印象を与えるという効果だけ でなく、モデムが適切に動作しているかどうかを知るためにも 有効です。

一方、たいていの内蔵型のモデムには 不揮発性ラムが搭載されていないため、ディップ スイッチの変更以外に設定を保存する方法がありません。また、も しインディケータがついていても、おそらくコンピュータのケース カバーが 外されていなければその状態を確認するのは 難しいでしょう。

#### 18.4.1.4. モデムとケーブル

以下のことに関して、予め知っておく必要があります。

- コンピュータとモデムの間での通信が 行えるようにするための接続方 法。 (内蔵型の場合は接続の必要はありません)

- お使いのモデムのコマンドについての知識、 あるいはコマンドの解説 の在処

- (通信ソフトを使っての) モデムの不揮発ラムに保存可能な設定の変更 方法

1番目のモデムの接続はたいてい簡単に行えるはずです。 ほとんどのストレー ト シリアル ケーブルが使えるでしょう。 使用すべきケーブルは、両端に適 切なコネクタ (DB-25 または DB-9 の雄または雌) のついた、DCE-DTE 間接 続用のもので、 以下の信号線が接続されていなければなりません。

- Transmitted Data (SD)

- Received Data (RD)

- Request to Send (RTS)

- Clear to Send (CTS)

- Data Set Ready (DSR)

- Data Terminal Ready (DTR)

- Carrier Detect (CD)

- Signal Ground (SG)

FreeBSD で 2400bps 以上の転送速度を利用する場合には、 フロー制御のため に RTS 信号と CTS 信号が必要です。また、 接続の確立と回線の切 断を検出するために CD 信号を利用します。さらに、 DTR 信号を使っ て回線切断後のモデムのリセットを行います。ケーブルの中には、 総ての必要 な信号線が接続されていないものもありますので、 たとえば、回線切断後でも ログイン セッションが残ってしまうといった問題が発生した場合などには、 ケーブルに問題がある可能性もあります。

次に、お使いのモデムにもよりますが、 もしモデムのコマンドをよく覚えてい ない場合は、 モデムのマニュアルをすぐに参照できるようにしておいてくださ い。このドキュメントでは例として USR Sportstar の 14,400 bps の外づけ型 モデムのコマンドを示しておきます。 他の種類のモデムをお使いの場合も、参 考になるかもしれません。

最後に、FreeBSDで快適にモデムを使うためにも、 モデムの設定方法を知って おく必要があります。FreeBSD も他の Unix 系 OS と同様、回線の接続およ び切断の検出や回線の切断および回線切断後の モデムの初期化にハードウェア シグナルを利用します。FreeBSD は、モデムに対するコマンドの送信やモデ ムの状態の監視を行いません。パソコンで運用されている BBS への接続に慣 れている方にとっては、 ちょっとめんどうかもしれませんね。

#### 18.4.1.5. シリアル インタフェースについて

FreeBSD では、NS8250-、NS16450-、NS16550- および NS16550A- に基づ いた EIA RS-232C (CCITT V.24) 規格のシリアル インタフェースをサポート しています。8250 および 16450 ベースのディバイスには1文字のキャラクタ バッファが搭載されています。また、16550 系のディバイスには、 16文字分 のバッファが搭載されていて、 はるかによいパフォーマンスを得られます (ただし、無印の 16550 では、バグがあって 16 文字バッファが利用できませ んので、可能であれば 16550A 系のディバイスを利用してください)。1文字 のバッファの物は、 16550 系のものと比べて OS にかける負荷が大きいので、16550A 系ディバイスの利用を強く推奨します。多数のシリアル ポートを利 用する場合や、負荷の高いシステムにおいては、 16550A 系ディバイスを使う ことで、 エラー発生率を低く押さえることができます。

### 18.4.2. 概要

FreeBSD は以下の手順でモデムからのログインを受付ます。 `init` から起 動された `getty` のプロセスが、割り当てられたシリアル ポート (この 例では `/dev/ttyd0`) がオープンされるのを辛抱強く待ちます。`ps ax` コマンドを実行すると、 以下のような出力が得られるはずです。

     4850 ??  I      0:00.09 /usr/libexec/getty V19200 ttyd0

ユーザがモデムに電話をかけ、モデム同士が接続されると、 モデムの CD が検出されます。その結果、 kernel がキャリア信号を検出して、`getty` によるポートのオープンの処理が終了します。 `getty` は、`login:` プロンプトを指定されている初期回線速度で送信します。 `getty` は、 正常に文字列を受信できるかどうか監視し、通常の設定では、 もし異常な文字列を検出した場合 (理由としては、 `getty` の速度とモデ ムの接続速度が異なっているような場合が考えられます)、 正常に文字列が 受信できるまで、`getty` は速度を変え続けます。

`getty` が正しい速度を検出すれば、 ユーザに対して `login:` プロン プトが表示されるはずです。ユーザがログイン名を入力すると、 `getty` は `/usr/bin/login` を起動して、 パスワードの入力を要求し、その 後ユーザのシェルを起動します。

それでは、続いて設定についての解説です。

### 18.4.3. kernel の設定

通常、FreeBSD の kernel は、MS-DOS の世界で `COM1:`、`COM2:` 、`COM3:` および `COM4:` と呼ばれる四つのシリアル ポートを 探す ように設定されています。また、FreeBSD では、現在のところ Boca の 1008 や 2016 のような、“単純な”マルチポートのシリアル インタフェースもサポー トしています (マルチポートのシリアル ボードに関しての kernel の設定 については、sio(4) のマニュアルを参照してください)。 デフォルト の kernel は、COM ポートだけを探します。

搭載されているシリアル ポートのいずれかを、kernel が認識しているかどう か確認したい場合は、kernel 起動時のメッセージを注意深く見ているか、あ るいは `/sbin/dmesg` コマンドを使って、 ブート時の出力メッセージ を確認してください。特に、 `sio` で始まるメッセージをよく見てくださ い。 参考までに、以下のコマンドで `sio` という文字列を含むメッセージ だけを表示することができます。

    # /sbin/dmesg | grep 'sio'

たとえば、シリアル ポートを四つ持つシステムの場合は、 以下のようなシリ アル ポートに関するメッセージが kernel によって表示されます。

    sio0 at 0x3f8-0x3ff irq 4 on isa
    sio0: type 16550A
    sio1 at 0x2f8-0x2ff irq 3 on isa
    sio1: type 16550A
    sio2 at 0x3e8-0x3ef irq 5 on isa
    sio2: type 16550A
    sio3 at 0x2e8-0x2ef irq 9 on isa
    sio3: type 16550A

もし、kernel に正常に認識されないポートがある場合は、 おそらくカスタマ イズした kernel を構築する必要があるでしょう。

kernel 構築と構築のための設定に関しては、BSD System Manager's Manual の “Building Berkeley Kernels with Config (config コマンドによる BSD kernel の構築) ” [ソース ファイルは `/usr/src/share/doc/smm` にあります]と “FreeBSD Configuration Options” [ `/sys/conf/options` および `/sys/`arch`/conf/options.`arch`` の arch の部分をたとえば `i386` としたファイル ] を参照 してください。

kernel の設定と構築をするためには、kernel のソース (FreeBSD 1.1 では `srcdist/srcsys.??`、 FreeBSD 1.1.5.1 では `srcdist/sys.??`、 またFreeBSD 2.0 では総てのソース)を展開 する必要があります。

まだ自分のシステムの kernel 用のコンフィギュレーション ファイルを作っ ていない場合は、 `/sys/i386/conf` に `cd` して作成してくださ い。初めてコンフィギュレーション ファイルを作る場合は、まず `GENERICAH` (FreeBSD 1.x で BusTek の SCSI コントローラを使っている場合は `GENERICBT`) というファイルを、 `YOURSYS` にコピーしてください。ここ で、 `YOURSYS` はあなたのシステム名で、 大文字である必要があります。このファイルを編集して、 ディバイスに関する記述を変更します。

    device     sio0    at isa? port "IO_COM1" tty irq 4 vector siointr
    device      sio1    at isa? port "IO_COM2" tty irq 3 vector siointr
    device      sio2    at isa? port "IO_COM3" tty irq 5 vector siointr
    device      sio3    at isa? port "IO_COM4" tty irq 9 vector siointr

システムに搭載されていないディバイスに関する記述は、 コメントアウトまた は削除してしまってかまいません。 Boca の BB2016 のようなマルチポートの シリアル ボードをお持ちの場合は、sio(4) のマニュアルを見て、マ ルチポートのボードのためのコンフィギュレーション ファイルの記述のし方 に関して確認してください。ディバイスのフラグの 指定方法がバージョンによっ て異なりますので、別のバージョンの FreeBSD で利用していたコンフィギュ レーション ファイルを流用する場合には 十分注意してください。

> Note: なお、`port "IO_COM1"`、 `IO_COM2`、`IO_COM3` および `IO_COM4` は、 それぞれのポートの一般的なアドレスである `0x3f8`、`0x2f8`、 `0x3e8` および `0x2e8` を表します。また、割り込 み番号 4、3、5 と 9 は、それぞれ `COM1:` から `COM4:` のポー トで一般的に使用される IRQ です。また、ISA バスのコンピュータの場合、 一般的なシリアルポートは複数のポートで一つの IRQ を共有することが できませんので注意が必要です (マルチポートのシリアル ボードの 場合は、複数の 16550A ベースのポートで一つまたは二つの IRQ を共有する ための機構を備えています)。

コンフィギュレーション ファイルの編集が終わったら、 “Building Berkeley Kernels with Config (config コマンドによる BSD kernel の構築)” および config(8) のマニュアルにしたがって、 `config` コマンド を使って kernel 構築のためのディレクトリを作成した後、kernel の構築、 インストールおよびテストを行ってください。

### 18.4.4. ディバイス スペシャル ファイル

kernel に組み込まれているほとんどのディバイスは、 `/dev` ディレ クトリにある、 “ディバイス スペシャル ファイル” を介してアクセスされ ます。 `sio` ディバイスの場合は、着信用の `/dev/ttyd`?`` およ び、発信用の `/dev/cuaa`?`` が利用されます。さらに、FreeBSD の 1.1.5 以降では、 初期化ディバイス (`/dev/ttyi`?`` と `/dev/cuai0`?``) およびロッキング ディバイス (`/dev/ttyld`?`` と `/dev/cual0`?``) も合わせて利用されます。初期化ディバイスは、通信 ポートがオープンされる度に、 そのポートの初期設定を行うために使われます。たとえば、 `CTS/RTS` によるフロー制御を行うモデムが接続されてい る場合の `crtscts` などのパラメータの初期化が行われます。ロッキング ディバイスは、ポートの設定をロックし、 他のユーザやプログラムにこれらを 変更されることのないようにするために利用されます。 通信ポートの設定、初 期化とロックおよび設定の変更に関しては、 それぞれ termios(4)、sio(4) と stty(1) のマニュアルをご覧ください。

#### 18.4.4.1. ディバイス スペシャル ファイルの作成

ディバイス スペシャル ファイルの管理は、ディレクトリ `/dev` にあるシェル スクリプト `MAKEDEV` によって行います (FreeBSD 1.1.5 の MAKEDEV(8) のマニュアルの COM ポートに関する記述は、 かなりいい加減なので無視してください)。 `MAKEDEV` を使って、 `COM1:` (ポート 0) をダイアルアップのポートとして利用するためのディ バイス スペシャル ファイルを作るには、 `/dev` に `cd` して から、`MAKEDEV ttyd0` と実行してください。 同様に、`MAKEDEV ttyd1` とすることで、`COM2:` (ポート 1) 用のディバイス スペシャル ファイル を作成することができます。

`MAKEDEV` は、 `/dev/ttyd`?`` のディバイス ファイルだけでなく、 `/dev/cuaa`?`` (および FreeBSD 1.1.5 以降では総ての初期化ディバイ スとロッキング ディバイスのスペシャル ファイル) も作成します。さらに、もしシリアル端末用のスペシャル ファイル `/dev/tty0`?`` が存在すれ ば、それらの削除も行います。

ディバイス スペシャル ファイルの作成後、 これらのファイルのパーミション が適切に設定されていて、 これらのディバイスを利用してもよいユーザのみが 読み書きできるようになっていることを確認してください (特に `/dev/cua*` のパーミションには注意を払ってください)。この確認 を怠ると、 一般のユーザがあなたのモデムを使うことができるようなことにな りかねません。デフォルトの `/dev/cua*` のパーミションは、以下の ようになっていて、 たいていの場合適切なものだと思います。

    crw-rw----    1 uucp     dialer    28, 129 Feb 15 14:38 /dev/cuaa1
    crw-rw----    1 uucp     dialer    28, 161 Feb 15 14:38 /dev/cuaia1
    crw-rw----    1 uucp     dialer    28, 193 Feb 15 14:38 /dev/cuala1

上の設定では、ユーザ `uucp` と、 グループ `dialer` に属するユーザ が発信用のディバイスを利用できます。

### 18.4.5. 設定ファイル

FreeBSD のシステムへのダイアル アップによるアクセスを実現するために編 集が必要と思われる設定ファイルが、`/etc` ディレクトリに三つあ ります。まず、 `/etc/gettytab` には、 `/usr/libexec/getty` デーモンの設定を記述します。つぎに、 `/etc/ttys` に保存されている情報から、 `/sbin/init` はど の `tty` ディバイスに対して `getty` のプロセスを実行するべきか判 断します。最後に、お使いの FreeBSD が 1.1.5.1 以降のものならば `/etc/rc.serial` スクリプトに、 それ以前のものならば `/etc/rc.local` スクリプトにシリアル ポートの初期化のためのコマ ンドを記述することができます。

Unix にダイアル アップ モデムを接続する方法には、 二つの考え方がありま す。一つの方法は、ダイアル インしてくるユーザの接続速度に関係なく、常 にモデムとローカルのコンピュータの RS-232 インタフェースの接続速度を一 定に保つように設定する方法です。 この設定の長所は、ユーザがダイアル イ ンして接続されると、 即座にシステムからのログイン プロンプトが送信され るということです。短所は、 システムが実際のモデム間の速度を知ることがで きないために、 Emacs のようなフル スクリーンのプログラムが、端末との接 続速度が遅い場合でも、 そのような場合に効果的な方法で画面出力を行わない 点です。

もう一つは、モデムの RS-232 インタフェースとコンピュータの接続速度を、 モデム間の接続速度に応じて変化させるような設定です。たとえば、 モデム間 の接続が V.32bis (14.4 Kbps) ならば、 モデムとコンピュータの間の接続を 19.2 Kbps とし、 モデム間の接続が 2400 bps の時には、モデムとコンピュー タ間も 2400 bps で接続するような設定をします。この場合、 `getty` は、モデムが返すリザルト コードからモデムとコンピュータの接続速度を認識す ることができませんので、`getty` は、 まず初期速度で `login:` とい う文字列を送信して、それに対する応答の文字列を監視します。 ここで、ユー ザ側の端末に無意味な文字列が表示された場合、 ユーザは意味のある文字列を 受信するまで `<Enter>` キーを繰り返し押さなければならない ということを知っていると仮定しています。 もし接続速度が間違っている場合、`getty` は、 ユーザから送られた文字を無意味な文字列として扱い、次の 速度を試します。そして、ここで再度 `login:` プロンプトを送信します。 この一連の動作が異常な回数繰り返されることも考えられますが、 普通は1度 か2度のキー入力があれば、 ユーザはまともなプロンプトを受信できます。こ のログインの動作が前者の固定速度による方法に 比べて美しくないのは明らか ですが、この方法では、 低速度で接続しているユーザに対するフル スクリー ンのプログラムからのレスポンスが改善されます。

このドキュメントでは、両方の設定方法について解説しますが、 どちらかとい うとモデム間の速度に応じて RS-232 インタフェースの速度が変化するような 設定の方に偏った説明になってしまうと思います。

#### 18.4.5.1. `/etc/gettytab`

`/etc/gettytab` は、getty(8) の設定ファイルで、termcap(5) と同様の形式で記述されます。ファイルのフォーマットや定 義できる機能についての詳細については、gettytab(5) のマニュアルを ご覧ください。

##### 18.4.5.1.1. 固定速度の設定

モデムとコンピュータ間の通信速度を固定して使う場合、 おそらく `/etc/gettytab` に特に変更を加える必要はないはずです。

##### 18.4.5.1.2. 可変速度の設定

`getty` が利用するモデムとコンピュータの接続速度に関する情報を `/etc/gettytab` に記述する必要があります。もし、2400 bps のモ デムをお使いになるのであれば、既存の `D2400` のエントリがそのまま利 用できるでしょう。このエントリは FreeBSD の 1.1.5.1 の `gettytab` には既に含まれていますので、 あなたの FreeBSD のバージョンでこのエント リが存在しているのであれば、 新たに追加する必要はありません。

    #
    # Fast dialup terminals, 2400/1200/300 rotary (can start either way)
    #
    D2400|d2400|Fast-Dial-2400:\
            :nx=D1200:tc=2400-baud:
    3|D1200|Fast-Dial-1200:\
            :nx=D300:tc=1200-baud:
    5|D300|Fast-Dial-300:\
            :nx=D2400:tc=300-baud:

高速モデムをお使いの場合は、おそらく `/etc/gettytab` に新たなエ ントリを追加する必要があります。以下の例は、14.4 Kbps のモデムを、最 大インタフェース速度を 19.2 Kbps として利用するためのエントリです。

    #
    # Additions for a V.32bis Modem
    #
    um|V300|High Speed Modem at 300,8-bit:\
            :nx=V19200:tc=std.300:
    un|V1200|High Speed Modem at 1200,8-bit:\
            :nx=V300:tc=std.1200:
    uo|V2400|High Speed Modem at 2400,8-bit:\
            :nx=V1200:tc=std.2400:
    up|V9600|High Speed Modem at 9600,8-bit:\
            :nx=V2400:tc=std.9600:
    uq|V19200|High Speed Modem at 19200,8-bit:\
            :nx=V9600:tc=std.19200:

上記の例を利用した場合、FreeBSD 1.1.5 以降ではパリティなし、8ビットの 接続が行われます。FreeBSD 1.1 では、`:np:` パラメータをファイルの 先頭の `std.`xxx`` のエントリに追加することで、パリティなし、 8ビットの接続が行われますが、 このパラメータを追加しなければ接続は偶数 パリティ、 7ビットになります。

上記の例では、まず 19.2 Kbps (V.32bis) によるモデムとコンピュータ間の 接続を試み、続いて 9600 bps (V.32)、2400 bps、1200 bps、300 bpsと順に 試み、再び 19.2 Kbps による接続を試みるという循環に入ります。この接続 速度の循環は、`nx=`(“next table”) の機能で実現されています。ま た、 各行はそれぞれ `tc=`(“table continuation”) の機能を使って、 その他の接続速度に依存した “標準的な” 設定を取り込んでいます。

もし、お使いのモデムが 28.8 Kbps であったり、14.4 Kbps の圧縮転送の機 能を有効に利用したい場合は、19.2 Kbps よりも速い速度を利用するように 設定する必要があります。 以下に 57.6 Kbps から接続を試みる `gettytab` の設定例を示しておきます。

    #
    # Additions for a V.32bis or V.34 Modem
    # Starting at 57.6 Kbps
    #
    vm|VH300|Very High Speed Modem at 300,8-bit:\
            :nx=VH57600:tc=std.300:
    vn|VH1200|Very High Speed Modem at 1200,8-bit:\
            :nx=VH300:tc=std.1200:
    vo|VH2400|Very High Speed Modem at 2400,8-bit:\
            :nx=VH1200:tc=std.2400:
    vp|VH9600|Very High Speed Modem at 9600,8-bit:\
            :nx=VH2400:tc=std.9600:
    vq|VH57600|Very High Speed Modem at 57600,8-bit:\
            :nx=VH9600:tc=std.57600:

もし、お使いの CPU が低速のものであったり、CPU に対する負荷が高い場合 で、16550A 系のシリアル ポートをお使いでない場合、57.6 Kbps の接続に おいて、sio の “silo” エラーが発生するかもしれません。

#### 18.4.5.2. `/etc/ttys`

`/etc/ttys` には、 `init` が監視すべき `tty` のリストを記 述します。さらに、`/etc/ttys` は、 `login` に対してセキュリ ティに関する情報を提供します。(ユーザ `root` は、`secure` とマー クされている tty のみからログインできます)。詳しくは ttys(5) のマニュアルをご覧ください。

`/etc/ttys` の既存の行を変更するか、 あるいは新しい行を追加して、`init` が自動的に新しいダイアル アップ サービス用のポートに対して `getty` プロセスを起動するようにしてください。書式は、固定速度の設 定か可変速度の設定かに関わらず、以下のとおりです。

    ttyd0   "/usr/libexec/getty xxx"   dialup on

1番目の項目は、このエントリで対象とするディバイス スペシャル ファイル です。上の例では `ttyd0` として、 `/dev/ttyd0` を `getty` に監視させることを表しています。2番目の項目 `"/usr/libexec/getty `xxx`"` (`xxx` は初期段階で使われる `gettytab` のエントリ に置き換えてください) が、`init` がこのディバイスに対して起動する プロセスです。3番目の `dialup` は、デフォルトのターミナル タイプで す。4番目の `on` は、 この行が有効であることを `init` に対して示 しています。5番目の項目に `secure` を指定することもできますが、これ は、 たとえばシステムのコンソールのように、 物理的に安全な端末に対しての み指定するようにしてください。

デフォルトのターミナル タイプ (上記の例では `dialup`) は、ローカル のユーザの好みによって異なってきます。ユーザがログイン スクリプトをカ スタマイズして、ターミナル タイプが `dialup` の時には自動的に他のター ミナル タイプを設定できるように、ダイアル アップのポートのデフォルトの ターミナル タイプには `dialup` が伝統的に用いられています。 しかし、筆者のサイトでは、ほとんどのユーザが VT102 エミュレイションを使ってい るので、ダイアル アップのポートのデフォルト ターミナル タイプとして `vt102` を指定しています。

`/etc/ttys` の修正がすんだら、 以下のようなコマンドを使って `init` プロセスに HUP シグナルを送り、`/etc/ttys` を 読み込み直させてください。

    # kill -HUP 1

ただ、もし初めてシステムを設定しているのであれば、 モデムが適切に設定さ れて接続されるまでは、`init` に対してシグナルを送らない方がいいか もしれません。

##### 18.4.5.2.1. 固定速度の設定

速度を固定する設定では、`/etc/ttys` の中で、`getty` に対し て固定速度のエントリを指定する必要があります。たとえば、 以下の例はポー トのスピードが 19.2 Kbps に固定されたモデムのための `ttys` のエント リです。

    ttyd0   "/usr/libexec/getty std.19200"   dialup on

別の速度でモデムのポートのスピードを固定したい場合は、 `/etc/gettytab` から適切なエントリを選んで、上の例の `std.19200` の部分を `std.`speed`` として、適切な速度のも のに置き換えてください。

##### 18.4.5.2.2. 可変速度の設定

可変速度の設定では、`ttys` のエントリが、`/etc/gettytab` の中の適切な “自動速度調整” の初期設定のエントリを参照していなければな りません。 たとえば、もし前述の 19.2 Kbps から接続を試みる可変速度の設 定例 (`V19200` の `gettytab` エントリ)をそのまま ttys に追 加したのであれば、 `ttys` エントリは以下のようになります。

    ttyd0   "/usr/libexec/getty V19200"   dialup on

#### 18.4.5.3. `/etc/rc.serial` または `/etc/rc.local`

V.32、V.32bis または V.34 モデムのような高速モデムを利用する場合、ハー ドウェア (`RTS/CTS`) フロー制御を行う必要があります。FreeBSD kernel のモデム ポートにハードウェア フロー制御のフラグを設定するため の `stty` コマンドを、FreeBSD 1.1.5.1 以降では `/etc/rc.serial` に、FreeBSD 1.1 では `/etc/rc.local` に 記述できます。

たとえば、FreeBSD 1.1.5.1 の `/etc/rc.serial` のサンプルは以下 のとおりです。

    #!/bin/sh
    #
    # Serial port initial configuration

    stty -f /dev/ttyid1 crtscts
    stty -f /dev/cuai01 crtscts

この例では、`termio` のフラグ `crtscts` をシリアル ポート #1 (`COM2:`) のダイアル インおよびダイアル アウトの初期化ディバイスに 設定しています。

古い FreeBSD 1.1 では、以下のエントリが `crtscts` フラグを設定する ために `/etc/rc.local` に追加されていました。

    # Set serial ports to use RTS/CTS flow control
    stty -f /dev/ttyd0 crtscts
    stty -f /dev/ttyd1 crtscts
    stty -f /dev/ttyd2 crtscts
    stty -f /dev/ttyd3 crtscts

FreeBSD 1.1 には初期化のためのディバイス スペシャル ファイルがないので、ディバイス ファイルそのものにフラグを設定して、その後はフラグをクリア してしまうような極悪人が現れないことを願うしかありません。

### 18.4.6. モデムの設定

もし、あなたのモデムがパラメータを不揮発ラムに 保存できるタイプならば、MS-DOS 上の Telix や FreeBSD 上の `tip` などのような通信プログラム を使って、 パラメータを設定してください。`getty` が利用する初期速度でモデムに接続して、以下の条件を満たすよ うに不揮発ラムの設定を変更してください。

- 接続時に CD 信号がオンになる

- 接続時に DTR がオンになり、 DTR オフで回線を切断しモ デムをリセットする。

- 送信時フロー制御には CTS を利用。

- XON/XOFF によるフロー制御を行わない。

- 受信時のフロー制御は RTS を使用。

- Quiet mode (リザルト コードを返さない)

- コマンド エコーを返さない。

これらを実現するためのコマンドやディップ スイッチの設定に関しては、モ デムのマニュアルを参照してください。

以下に、USRobotics Sportster の 14,400 bps の外づけモデムの設定例を示 しておきます。

    ATZ
    AT&C1&D2&H1&I0&R2&W

ことのついでに、たとえば、V42.bis や MNP5 のデータ圧縮を使用するかど うかなどのモデムの他の設定について確認、 調整しておくのもよいかもしれま せん。

さらに、USRobotics Sportster の 14,400 bps の外づけモデムでは、以下の ようなディップ スイッチの設定も必要です。他のモデムをお使いの方も、以 下の例を設定の参考にしてください。

- スイッチ1: UP -- DTR 標準

- スイッチ2: 無視 (リザルト コードを単語形式にするか数値形式にす るか)

- スイッチ3: UP -- リザルト コードを返さない

- スイッチ4: DOWN -- コマンド エコーを返さない

- スイッチ5: UP -- 自動着信

- スイッチ6: UP -- CD 標準

- スイッチ7: UP -- 不揮発ラムからデフォルト値をロードする

- スイッチ8: 無視 (Smart Mode/Dumb Mode)

リザルト コードを返さないように設定しておかないと、 `getty` が誤っ て `login:` プロンプトをコマンド モードのモデムに送信してしまった場 合に、 モデムがこの入力をエコーしたり、この入力に対するリザルト コード を返してしまったりすることになります。この結果として、 モデムと `getty` の間で延々と無意味なやりとりが続いたというケースを聞いたこ とがあります。

#### 18.4.6.1. 固定速度の設定

固定速度の設定では、 モデムとコンピュータ間の通信速度をモデムとモデム間 の接続速度に関係なく、常に一定に保つように、 モデムを設定する必要があり ます。USRobotics Sportster の 14,400 bps 外づけモデムの場合、以下のコ マンドで、 モデムとコンピュータ間の速度が、コマンド送信時の速度に固定さ れます。

    ATZ
    AT&B1&W

#### 18.4.6.2. 可変速度の設定

可変速度の設定では、シリアル ポートの速度が、 着信速度に応じて変化する ように設定しなければいけません。 USRobotics Sporster の 14,400 bps 外 づけモデムの場合、 以下のコマンドで、エラー訂正機能を利用した通信の場合 は、 コマンドを送信した時の通信速度にシリアル ポートの速度を固定し、エ ラー訂正機能を利用しない接続では、 シリアル ポートの速度が変化するよう に設定されます。

    ATZ
    AT&B2&W

#### 18.4.6.3. モデムの設定の確認

ほとんどの高速モデムには、 現在の設定をある程度人間にも理解できる形式に して表示させるコマンドがあります。USRobotics Sporster の 14,400 bps 外づけモデムの場合は、`ATI5` コマンドで、現在の不揮発ラムの設定を 表示することができます。 さらに、ディップ スイッチの設定も含めた現在の 設定を確認するためには、`ATZ` コマンドを送信してから、`ATI4` コマンドを送信してください。

他のメーカーのモデムをお使いの場合は、 モデムのマニュアルで設定値の確認 方法を確認してください。

### 18.4.7. トラブルシューティング

以下の手順でダイアル アップ モデムの動作を確認することができます。

#### 18.4.7.1. FreeBSD システムの動作確認

モデムを FreeBSD システムに接続し、 システムをブートします。あなたのモ デムにモデムの状態を確認するためのインジケータがあれば、 DTR のイ ンジケータの状態に注目してください。もし、 システムのコンソールに `login:` プロンプトが表示された時に、DTR のインジケータが点灯 すれば、FreeBSD が適切なポートに対して `getty` を起動し、モデムへ の着信を待っている状態であることを意味しています。

もし DTR のインジケータが点灯しない場合は、システムのコンソールか ら FreeBSD にログインして、`ps ax` を実行し、 FreeBSD が 適切なポー トに対して`getty` プロセスを起動しようとしているのかどうか確認して ください。 プロセスに関する情報の中に、以下のような行が表示されるはずで す。

      114 ??  I      0:00.10 /usr/libexec/getty V19200 ttyd0
      115 ??  I      0:00.10 /usr/libexec/getty V19200 ttyd1

モデムにまだ着信がない状態の時に、 以下のように上とは異なる出力があった 場合、`getty` は既にモデム ポートのオープンを終了したということに なります。

      114 d0  I      0:00.10 /usr/libexec/getty V19200 ttyd0

`getty` は、CD (carrier detect) 信号がオンの状態になるまで、 ポートのオープンを完了することはできませんので、 この場合は接続に問題が あるか、あるいはモデムの設定に問題があることが考えられます。

もし、適切なポートをオープンしようとしている `getty` が見あたらない 場合は、再度 `/etc/ttys` の内容を確認し、 書式などに誤りがないか 調べてみてください。また、ログ ファイル `/var/log/messages` に `init` および `getty` から何か出力がないかどうかも確認してみてく ださい。 もし何かメッセージが記録されていたら、再度 `/etc/ttys`、 `/etc/gettytab` の二つの設定ファイルと、 ディバイス スペシャル ファイル `/dev/ttyd?` を確認し、 記述に誤りがないか、足りないエ ントリがないか、 足りないディバイス スペシャルファイルがないかといった 点について調べてみてください。

#### 18.4.7.2. モデムで接続してみる

実際にモデムを使って別のコンピュータから 接続してみてください。この時、8ビット、パリティなし、 1ストップ ビットで接続するようにしてください。 接続後すぐにプロンプトが返ってこない場合や、 無意味な文字列が表示される 場合は、1秒に1回くらいの割合で `<Enter>` キーを押してみて ください。 しばらくたって、なおも `login:` プロンプトが現れない場合 は、`BREAK` 信号を送信してみてください。この時、端末側で使って いるモデムが高速モデムならば、 このモデムのインタフェースの接続速度を固 定してから、 再度ダイアル インしてみてください。(たとえば、USRobotics Sportster の場合は、`AT&B1`)

それでもまだ `login:` プロンプトが表示されない場合は、 `/etc/gettytab` の以下の点について再度確認してみてください。

- `/etc/ttys` の対応する行の 2番目の項目で、`/etc/gettytab` の中で定義されているエントリが指定されているか

- 各 `nx=` で `/etc/gettytab` の中で定義されているもの が指定されているか

- 各 `tc=` で `/etc/gettytab` の中で定義されているもの が指定されているか

もしダイアル インしても、FreeBSD システム側のモデムが応答しない場合は、FreeBSD 側のモデムが DTR がオンになった時に電話にでるように設定さ れているかを確認してください。 もしモデムの設定に問題がなさそうならば、 モデムのインジケータ (がもしあれば) で、 DTR がオンになっているか を確認してください。

この確認のステップを数回繰り返しても うまくいかない場合は、一度休憩して、 しばらくたってから挑戦してみましょう。それでもだめなら、 おそらく FreeBSD general questions メーリングリスト にあなたのモデムについての情報と問題を書いたメールを送れ ば、 メーリング リストのメンバーが問題の解決を助けるべく努力してくれる でしょう。

### 18.4.8. 謝辞

以下の方々から、 多くのコメントやアドバイスをいただきました。ここに謝意 を表します。

Sean Kelly

  <kelly@fsl.noaa.gov> 多くのすばらしい助言をいた だきました

## 18.5. ダイアルアウトサービス

原作: FAQ からの情報

訳: 丸山 剛司 `<tmaruya@nnc.or.jp>`. 31 December 1996.

以下はモデムを利用して他のコンピュータと 接続する方法を説明しています。 これはリモートホストとターミナル接続を確立するための 適切な方法です。

これは BBS に接続するときによく使います。

この種の接続は PPP 接続に問題がある場合、Internet 上にあるファイルを 転送するのに非常に役に立ちます。FTP で何らかのファイルを転送したいのに PPP 接続を確立できない場合は、ファイルを FTP 転送するためにターミナルセッション を利用します。そして ZMODEM を利用してファイルを転送します。

### 18.5.1. `tip` や `cu` が実行できないはなぜ?

あなたのシステムで `tip` や `cu` というプログラムは `uucp` や `dialer` というグループに所属しているユーザのみが 実行できるようになっているのでしょう。リモートホストやモデムを 利用できる `dialer` のグループにあなたのアカウントを 加えましょう。

もしくは下記のコマンドを使うことによって、そのシステムで `tip` や `cu` を誰でも使えるようになります:

    # chmod 4511 /usr/bin/tip

このコマンドは `cu` に対しておこなう必要はありません、それは `cu` は `tip` に対するハードリンクだからです。

### 18.5.2. 私の Hayes モデムはサポートされていません、 どうしよう?

実際、`tip` の マニュアルページは古くなっています。既に Hayes ダイアラが組み込まれています。`/etc/remote` ファイル中で `at=hayes` を使ってください。

Hayes ドライバは、最近のモデムの新しい機能である `BUSY`、`NO DIALTONE`、 `CONNECT 115200`などのメッセージを 認識できるほど賢くはなく、単に混乱を起こすだけです。 `tip`を使う場合には、 (`ATX0&W` とするなどして) これらの メッセージを表示させないようにしなくてはいけません。

また、`tip` のダイアルのタイムアウトは 60秒です。モデムの タイムアウト設定はそれより短くすべきであり、 そうしないと `tip` は通信に問題があると判断するでしょう。 `ATS7=45&W` を実行してください。

実際、デフォルトの `tip` は Hayes の完全なサポートを しているわけではありません。解決方法は `/usr/src/usr.bin/tip/tip` の下の `tipconf.h` を変更することです。 もちろんこれにはソース配布ファイルが必要です。

`#define HAYES 0` と記述されている行を `#define HAYES 1` と変更し、そして `make`、`make install` を実行します。これでうまく動作するでしょう。

### 18.5.3. これらの AT コマンドを入力するには?

`/etc/remote` ファイルの中で “direct” エントリを作ります。たとえばモデムが 1番目のシリアルポートである `/dev/cuaa0` に接続されている場合、次のようにします:

    cuaa0:dv=/dev/cuaa0:br#19200:pa=none

モデムがサポートする最大の bps レートを br フィールドに使います。そして `tip cuaa0` を実行すると、モデムが利用できるようになります。

`/dev/cuaa0` がシステムに存在しない場合は、次のようにします:

    # cd /dev
    # ./MAKEDEV cuaa0

または root になって以下のように cu コマンドを実行します:

    # cu -lline -sspeed

`line` にはシリアルポートを指定します (例えば `/dev/cuaa0`)。そして `speed` には接続する速度を指定します (例えば `57600`)。その後 AT コマンドを実行したら、`~.` と入力すれば終了します。

### 18.5.4. pn 機能の `@` 記号が使えません!

電話番号 (pn) 機能の中での `@` 記号は、 tip に `/etc/phone` にある電話番号を参照するように伝えます。しかし `@` の文字は `/etc/remote` のような 設定ファイルの中では特殊文字となります。 バックスラッシュを使ってエスケープをおこないます:

    pn=\@

### 18.5.5. コマンドラインから電話番号を指定するには?

“generic” エントリと呼ばれるものを `/etc/remote` に追加します。 例えば次のようにします:

    tip115200|Dial any phone number at 115200 bps:\
            :dv=/dev/cuaa0:br#115200:at=hayes:pa=none:du:
    tip57600|Dial any phone number at 57600bps:\
            :dv=/dev/cuaa0:br#57600:at=hayes:pa=none:du:

そして

    # tip -115200 5551234

のように利用できます。 `tip` より `cu` を使いたい場合、 `cu` の generic エントリを使います:

    cu115200|Use cu to dial any number at 115200bps:\
        :dv=/dev/cuaa1:br#57600:at=hayes:pa=none:du:

そして

    # cu 5551234 -s 115200

と実行します。

### 18.5.6. 毎回 bps レートを入力しなければいけませんか?

`tip1200` や `cu1200` 用のエントリを記述し、適切な通信速度を br フィールドに設定します。`tip` は 1200 bps が正しいデフォルト値であるとみなすので、 `tip1200` エントリを参照します。もちろん 1200 bps を使わなければならないわけではありません。

### 18.5.7. ターミナルサーバを経由して 複数のホストへアクセスしたいんです。

毎回接続されるのを待って `CONNECT <host>` と入力する かわりに、tip の `cm` 機能を使います。 例えば、`/etc/remote` に次のようなエントリを追加します:

    pain|pain.deep13.com|Forrester's machine:\
        :cm=CONNECT pain\n:tc=deep13:
    muffin|muffin.deep13.com|Frank's machine:\
        :cm=CONNECT muffin\n:tc=deep13:
    deep13:Gizmonics Institute terminal server:\
        :dv=/dev/cuaa2:br#38400:at=hayes:du:pa=none:pn=5551234:

これで、`tip pain` や `tip muffin` と実行すると pain や muffin のホストに接続することができ、 `tip deep13` を実行するとターミナルサーバに接続します。

### 18.5.8. tip を使ってそれぞれのサイトの 複数の回線に接続できますか?

これは大学に電話回線がいくつかあって 数千人の学生が接続しようとする 場合によくある問題です。

あなたの大学のエントリを `/etc/remote` ファイルに作成して、`pn` のフィールドには `@` を使います:

    big-university:\
        :pn=\@:tc=dialout
    dialout:\
        :dv=/dev/cuaa3:br#9600:at=courier:du:pa=none:

そして `/etc/phone` ファイルに大学の電話番号の一覧を書きます:

    big-university 5551111
    big-university 5551112
    big-university 5551113
    big-university 5551114

`tip` は一連の電話番号を試みて、 最終的に接続できなければあきらめます。 リトライを続けさせたい場合は、`tip` を while ループに入れて 実行します。

### 18.5.9. CTRL+P を 1回送るために 2度押す必要があるのはなぜ?

CTRL+P は通常 “force (強制)” 文字であり、 `tip` に次の文字が リテラルデータであることを伝えます。force 文字は “変数の設定” を意味する `~s` エスケープによって他の文字にすることができます。

`~sforce=`single-char`` と入力して改行します。`single-char` は、任意の 1バイト文字です。 `single-char` を省略すると NUL 文字になり、これは CTRL+2 や CTRL+SPACE を押しても入力できます。また、 `single-char` に SHIFT+CTRL+6 を割り当てる方法を使っているターミナルサーバもあります。

`$HOME/.tiprc` に次のように定義することで、任意の文字を force 文字として利用できます:

    force=<single-char>

### 18.5.10. 打ち込んだ文字が突然すべて大文字になりました??

CTRL+A を押してしまい、caps-lock キーが壊れている場合のために設計された `tip` の “raise character” モードに入ったのでしょう。 既に述べたように `~s` を使って、 `raisechar` をより適切な値に 変更してください。もしこれら両方の機能を使用しないのであれば、 force 文字と同じ設定にすることもできます。

以下は CTRL+2 や CTRL+A などを頻繁に使う必要のある Emacs ユーザにうってつけの .tiprc ファイルのサンプルです:

    force=^^
    raisechar=^^

^^ は SHIFT+CTRL+6 です。

### 18.5.11. `tip` でファイルを転送するには?

もし他の Unix のシステムと接続しているなら、 `~p`(put) や `~t`(take) でファイルの送受信ができます。これらのコマンドは 相手のシステムの上で `cat` や `echo` を実行することで 送受信をします。 書式は以下のようになります:

`~p` ローカルのファイル名 [リモートのファイル名]

`~t` リモートのファイル名 [ローカルのファイル名]

この方法ではエラーチェックをおこないませんので、zmodem などの他のプロトコルを使った方がよいでしょう。

### 18.5.12. `tip` から zmodem を実行するには?

ファイルを受信するには、 リモート側で送信プログラムを起動します。そして `~C rz` と入力すると、ローカル側へのファイルの受信が 始まります。

ファイルを送信するには、 リモート側で受信プログラムを起動します。そして `~C sz `files`` と入力すると、 リモート側への ファイルの送信が始まります。

## 18.6. シリアルコンソールの設定

原作: 横田 和隆 `<yokota@FreeBSD.org>`、Bill Paul `<wpaul@FreeBSD.org>`

この文書はほとんどが Bill Paul `<wpaul@FreeBSD.org>` 氏の `/sys/i386/boot/biosboot/README.serial` に基づいています。

### 18.6.1. 導入

FreeBSD/i386 オペレーティングシステムは、コンソールとして シリアルポート上のダム端末しか持たないシステムでも起動できます。 この様な構成はきっと次のような二種類の人達に便利でしょう。それは、 キーボードやモニタのないマシンに FreeBSD をインストールしたいシステム管理者と、 カーネルやデバイスドライバをデバッグしたい開発者です。

バージョン 3.1 から、FreeBSD/i386 は 3 ステージ構成のブートストラップ を用いるようになりました。最初の 2 つのステージは、 ブートディスクにある FreeBSD スライスの最初に格納されている、 ブートブロックのコードが行います。 それからブートブロックは、第 3 ステージのコードとしてブートローダ (`/boot/loader`) を読み込み、実行します。 (ブートプロセスの詳細については boot(8) と loader(8) をご覧下さい。)

シリアルコンソールを設定するためには、ブートブロックコード、 ブートローダコード、カーネルを設定する必要があります。

FreeBSD バージョン 3.0 では、ブートローダはないので ブートストラップは 2 ステージです。つまり、ブートブロックが直接 カーネルをメモリに読み込みます。もしあなたが FreeBSD 3.0 を使って いるなら、このセクションでブートローダについて述べている部分は無視してください。 それでもシリアルポートをコンソールとして使うのに支障はありません。

FreeBSD バージョン 2.X と 3.X のシリアルポートドライバ sio(4) は全く違いますので、設定も異なった方法で行う必要があります。 この章ではバージョン 2.X システム用の設定については扱っていません。 もしあなたが古いバージョンの FreeBSD を使っているなら、かわりに `/sys/i386/boot/biosboot/README.serial` を調べてみてください。

### 18.6.2. シリアルコンソールを設定するための 6 ステップ

1. シリアルケーブルを用意してください。

   ヌルモデムケーブル、 もしくは標準シリアルケーブルとヌルモデムアダプタが必要となります。 シリアルケーブルについては Section 18.3 をご覧下さい。

2. キーボードをはずして下さい。

   たいていの PC システムは Power-On Self-Test (POST) の間にキーボードを検出し、もし見つからなければエラーと なります。また、キーボードがないことを大きな音で知らせ、 キーボードが接続されるまでは起動を中断するようなマシンもあります。

   コンピュータがエラーを表示していても、 とにかく起動するなら特別な対応は必要ありません (Phoenix BIOS を搭載しているマシンには、 “`Keyboard failed`” と表示されても、正常に起動するものがあります)。

   あなたのコンピュータがキーボードを接続していない状態で 起動しないようなら、(もし可能ならば) エラーを無視するように BIOS を設定する必要があります。設定方法の詳細については、 マザーボードのマニュアルを調べてください。

   > Tip: BIOS の設定でキーボードを “Not installed” にするということは、キーボードを使えないということを 意味しているわけではありません。これは、BIOS がキーボードがなくても文句を言わないように、電源投入時には キーボードを探すな、と指示するだけです。このフラグを “Not installed” にしていてもキーボードを 接続したままにできますし、ちゃんと動作します。

   > Note: あなたのシステムが PS/2 マウスを使っているなら、 おそらくマウスもキーボード同様にはずす必要があるでしょう。 というのは、PS/2 マウスは部分的にキーボードとハードウェアを 共有しており、マウスを接続したままにしていると、 キーボードも存在する、と誤って検出してしまう可能性があるからです。 AMI BIOS を持つ Gateway 2000 Pentium 90MHz システム はこれに該当すると言われています。 一般的にこれは問題ではありません。なぜなら、どっちにしても マウスはキーボードなしではたいして役に立たないからです。

3. `COM1:` (`sio0`) にダム端末を接続してください。

   ダム端末がなければ、かわりに古い PC/XT でモデム プログラムを走らせて使ったり、シリアルポートに他の Unix マシンを繋いだりできます。もしも `COM1:` (`sio0`) がなければ、作成してください。 今のところ、`COM1:` 以外のポートを 選択するためにはブートブロックの再コンパイルが必要です。 すでに `COM1:` を他の装置に 使っていた場合は、一時的にその装置をはずして いったん FreeBSD がうまく動作してから、 新しいブートブロックとカーネルをインストールしてください。 (上記はとにかくファイル/演算/端末サーバの `COM1:` が利用可能であると仮定して います。あなたが本当に何かのために `COM1:` が必要 (で、なおかつその何かを `COM2:` (`sio1`) に付け替えることができない) ならば、多分、そもそも 悩んでる場合ではありません。)

4. カーネルコンフィグファイルの `COM1:` (`sio0`) に適切なフラグを 設定していることを確認してください。

   関連するフラグ:

   `0x10`

     このポートのコンソールサポートを有効にします。 このフラグが設定されない場合、他のフラグは無視されます。 現在のところ、一つのポートしかコンソールサポートを有効に できません。(config ファイルに書かれた順番で) 最初にこのフラグを 指定されたポートが選択されます。 なお、このオプションを指定するだけでシリアルポートが コンソールとして使えるわけではありません。 このフラグと一緒に、以下のフラグも指定するかもしくは `-h` オプションも使ってください。

   `0x20`

     後述される `-h` オプション を無視して、(他に優先度の高いコンソールがない限り) このポートをコンソールとして指定します。 このフラグは FreeBSD バージョン 2.X の `COMCONSOLE` オプションに対応するものです。 フラグ `0x20` は必ず フラグ `0x10` と一緒に指定されなければなりません。

   `0x40`

     (`0x10` と組み合わせることで) このポートを予約し、通常のアクセスができない ようにします。 このフラグは、シリアルコンソールとして使いたいポートに 指定すべきではありません。 唯一の使い道は、ユニットがカーネルのリモートデバッグ用 であることを指定することです。 リモートデバッグの詳細については The Developer's Handbook を参照してください。

     > Note: FreeBSD 4.0-CURRENT 以降では、 フラグ `0x40` の意味が若干異なり、 シリアルポートにリモートデバッグを指定するためには、 別のフラグを使います。

   例:

       device sio0 at isa? port "IO_COM1" tty flags 0x10 irq 4

   詳細については sio(4) を参照して下さい。

   もしこれらのフラグがセットされていなければ、(別のコンソールで) UserConfig を実行するか、 カーネルを再コンパイルする必要があります。

5. ブートドライブの `a` パーティションの ルートディレクトリに `boot.config` を作成してください。

   このファイルは、ブートブロックコードに対してどのように システムを起動したいかを教えます。 シリアルコンソールを活かすためには、以下のオプションを幾つか -- 複数の場合も一行で、設定する必要があります:

   `-h`

     内蔵コンソールとシリアルコンソールの切替えを行います。 これを使用してコンソールデバイスを変更できます。 例えば、内蔵 (ビデオ) コンソールからブートした場合、 カーネルとブートローダがコンソールデバイスとして シリアルポートを使用するようにするため、 `-h` を使って指示できます。 反対に、シリアルポートからブートした場合、 ブートローダとカーネルがコンソールとして代わりに ビデオディスプレイを使用するようにするため、 `-h` を使用できます。

   `-D`

     シングルとデュアルのコンソール設定を切り替えます。 シングル設定では、上記の `-h` オプションの状態によって、コンソールは内蔵コンソール (ビデオディスプレイ)かシリアルポートのいずれかになります。 デュアルコンソール設定では、ビデオディスプレイと シリアルポートの両方が、`-h` オプションの状態によらず、同時にコンソールになります。 しかし、デュアルコンソール設定は、ブートブロックが 実行されている間でしか効果を持ちません。 一旦ブートローダに制御が移ると、`-h` オプションによって指定されたコンソールが 唯一のコンソールになります。

   `-P`

     ブートブロックがキーボードを検出するようにします。 キーボードが発見できなかった場合には、 `-D` と `-h` オプションが自動的にセットされます。

     > Note: 現バージョンのブートブロックでは容量の制限により、 `-P` オプションは拡張キーボードしか 検出できません。キーが 101 個より少ない (そして F11 と F12 がない) キーボードは検出されない可能性があります。 この制限から、いくつかのラップトップコンピュータの キーボードは正しく検出されないでしょう。 残念ながら、この問題の回避策はありません。

   `-P` オプションを使ってコンソールを 自動的に選ぶか、`-h` オプションを使って シリアルコンソールを有効にしてください。

   さらに boot(8) で説明されている他のオプションも使う ことができます。

   `-P` 以外のオプションはブートローダ (`/boot/loader`) に渡されます。 ブートローダは、`-h` オプションだけの状態を 調べることで内蔵ビデオとシリアルポートのどちらがコンソールに なるのか決めます。 つまり、`/boot.config` の中で `-D` オプションを指定して `-h` オプションを指定しなかった場合、 ブートブロック実行中でのみシリアルポートをコンソールとして 使うことができます。ブートローダは内蔵ビデオディスプレイを コンソールとして使います。

6. マシンを起動する。

   FreeBSD を起動したとき、ブートブロックは `/boot.config` の内容をコンソールに表示 します。例えば、

       /boot.config: -P
       Keyboard: no

   行の二番目は、 `/boot.config` にオプション `-P` が指定してあるときだけ表示され、 キーボードが存在するかどうかを表します。 これらのメッセージは、シリアルか内蔵のいずれか、 あるいはその両方のコンソールに表示されます。 どちらに表示されるかは、 `/boot.config` の設定によって変わります。

   オプション指定 | メッセージの表示される場所
   --- | ---
   なし | 内蔵
   `-h` | シリアル
   `-D` | シリアルと内蔵の両方
   `-Dh` | シリアルと内蔵の両方
   `-P`、キーボードが存在する場合 | 内蔵
   `-P`、キーボードが存在しない場合 | シリアル

   このメッセージが表示された後、 ブートブロックがブートローダのロードを再開し、 他の全てのメッセージがコンソールに表示されるまで、 若干時間がかかります。通常の環境では、ブートブロックに 割り込みをかける必要はありませんが、 ちゃんとセットアップされているかどうか確かめるために、 割り込みをかけることができるようになっています。

   ブートプロセスに割り込みをかけるには、 コンソールの(Enter/Return キー以外の)キーをたたいて下さい。 ブートブロックはその時、操作を指定するためのプロンプトを表示します。 こんな風に表示されるでしょう。

       >> FreeBSD/i386 BOOT
       Default: 0:wd(0,a)/boot/loader
       boot:

   上に示したメッセージが、シリアルか内蔵、 あるいはその両方といった、`/boot.config` で指定したとおりのコンソールに表示されることを確認して下さい。 メッセージが正しいコンソールに表示されたら、Enter/Return キーを押してブートプロセスを継続してください。

   もし、シリアルコンソールを利用するように設定しているのに シリアル端末にプロンプトが出てこない場合は、 設定のどこかに間違いがあります。 ブートブロック(とブートローダ、カーネル)に対して シリアルポートをコンソールに使うことを伝えるため、 割り込みをかけた時に `-h` を入力し、 (可能ならば) Enter/Return キーを押して下さい。そして、 一度システムを起動させてから、どこが悪いのかをチェックして下さい。

ブートローダがロードされ、ブートプロセスの第三ステージに いる時には、まだ内蔵コンソールとシリアルコンソールを切り替えることができます。 それにはブートローダの環境変数を適切に設定すれは良いのですが、 詳細については Section 18.6.5 を参照してください。

### 18.6.3. まとめ

このセクションで扱ったさまざまな設定と、 最終的に選択されるコンソールに関するまとめです。

#### 18.6.3.1. Case 1: sio0 の flags に 0x10 をセットした場合

    device sio0 at isa? port "IO_COM1" tty flags 0x10 irq 4

/boot.config 内のオプション | ブートブロック実行中のコンソール | ブートローダ実行中のコンソール | カーネルのコンソール
--- | --- | --- | ---
なし | 内蔵 | 内蔵 | 内蔵
`-h` | シリアル | シリアル | シリアル
`-D` | 内蔵、シリアルの両方 | 内蔵 | 内蔵
`-Dh` | 内蔵、シリアルの両方 | シリアル | シリアル
`-P`、キーボードが存在する場合 | 内蔵 | 内蔵 | 内蔵
`-P`、キーボードが存在しない場合 | 内蔵、シリアルの両方 | シリアル | シリアル

#### 18.6.3.2. Case 2: sio0 の flags に 0x30 をセットした場合

    device sio0 at isa? port "IO_COM1" tty flags 0x30 irq 4

/boot.config 内のオプション | ブートブロック実行中のコンソール | ブートローダ実行中のコンソール | カーネルのコンソール
--- | --- | --- | ---
なし | 内蔵 | 内蔵 | シリアル
`-h` | シリアル | シリアル | シリアル
`-D` | 内蔵、シリアルの両方 | 内蔵 | シリアル
`-Dh` | 内蔵、シリアルの両方 | シリアル | シリアル
`-P`、キーボードが存在する場合 | 内蔵 | 内蔵 | シリアル
`-P`、キーボードが存在しない場合 | 内蔵、シリアルの両方 | シリアル | シリアル

### 18.6.4. シリアルコンソールを利用する上で役に立つ情報

#### 18.6.4.1. シリアルポートの通信速度をもっと速いものに設定するには

デフォルトのシリアルポート通信速度は、9600 ボー、 8 ビット、パリティなし、ストップビット 1 です。 通信速度を変更したい場合には、少なくとも ブートブロックの再コンパイルが必要になります。 `/etc/make.conf` に次のような行を追加して、 新しくブートブロックをコンパイルして下さい。

    BOOT_COMCONSOLE_SPEED=19200

もし、シリアルコンソールがブート時の `-h` オプション以外の方法で設定されていたり、 カーネルが利用するシリアルコンソールが ブートブロック実行中のものと異なる場合には、 カーネルコンフィグレーションファイルに次のオプションを追加して、 新しくカーネルをコンパイルしなければなりません。

    options CONSPEED=19200

#### 18.6.4.2. `sio0` 以外のシリアルポートを コンソールとして使うには

`sio0` 以外のポートをコンソールとして使うには、再コンパイルが必要です。 それがどんな理由であれ、他のポートを使用する場合には ブートブロック、ブートローダ、カーネルを 次のようにして再コンパイルして下さい。

1. カーネルソースを取得する。

2. `/etc/make.conf` を編集し、 `BOOT_COMCONSOLE_PORT` に 使用したいポートのアドレス(0x3F8、0x2F8、0x3E8 or 0x2E8)を 設定してください。使用可能なのは `sio0` から `sio3` (`COM1:` から `COM4:`) までで、 マルチポートシリアルカードは使えません。 また、ここで割り込みの設定をする必要はありません。

3. 設定を変更するために新たなカーネルコンフィグレーションファイルを作成し、 使いたいシリアルポートのフラグを適切に設定します。 例えば、`sio1` (`COM2:`) をコンソールにしたければ、

       device sio1 at isa? port "IO_COM2" tty flags 0x10 irq 3

   または、

       device sio1 at isa? port "IO_COM2" tty flags 0x30 irq 3

   とします。その際、 他のシリアルポートにコンソールフラグをつけてはいけません。

4. ブートブロックを再コンパイルし、インストールする。

       # cd /sys/boot/i386/boot2
       # make
       # make install

5. ブートローダを再コンパイルし、インストールする。

       # cd /sys/boot/i386/loader
       # make
       # make install

6. カーネルを再構築し、インストールする。

7. disklabel(8) を使ってブートブロックをブートディスクに書き込み、 新しいカーネルから起動する。

#### 18.6.4.3. シリアルポートから DDB デバッガを起動するには

シリアルコンソールからカーネルデバッガを起動したい(これは リモートで診断する際に便利ですが、もしおかしな BREAK 信号がシリアルポートに送られるような場合には危険です!) 場合には、次のオプションを使ってカーネルをコンパイルして下さい。

    options BREAK_TO_DEBUGGER
    options DDB

#### 18.6.4.4. シリアルコンソールにログインプロンプトを表示させるには

シリアルコンソールからブートメッセージを確認したり、 シリアルコンソールを経由してカーネルデバッグセッションに入ることが できるので、これは必要がないかもしれませんが、 login プロンプトをシリアルポートに 出力するように設定することもできます。 これには、次のようにします。

エディタで `/etc/ttys` というファイルを開き、 次に示す行に移動して下さい。

    ttyd0 "/usr/libexec/getty std.9600" unknown off secure
    ttyd1 "/usr/libexec/getty std.9600" unknown off secure
    ttyd2 "/usr/libexec/getty std.9600" unknown off secure
    ttyd3 "/usr/libexec/getty std.9600" unknown off secure

`ttyd0` から `ttyd3` は、 `COM1` から `COM4` に対応しています。 設定したいポートの `off` を `on` に変更して下さい。 また、もしシリアルポートの通信速度を変更しているなら、 `std.9600` が実際の通信速度になるように、 例えば `std.19200` のように変更して下さい。

さらに、実際のシリアル端末に合わせて、 端末タイプを `unknown` から変更することも可能です。

ファイルの編集が終了したら、 変更を有効化するために `kill -HUP 1` を実行しなければなりません。

### 18.6.5. ブートローダからコンソールを変更するには

前セクションは、ブートブロックの設定を変更することでシリアルコンソールを セットアップする方法について解説していました。 このセクションでは、ブートローダへのコマンド入力と環境変数設定で コンソールの指定を行なう方法を紹介します。 ブートローダがブートブロックの後、 ブートプロセスの第三ステージとして呼び出されたとき、 ブートローダの設定には、ブートブロックの設定がそのまま使われます。

#### 18.6.5.1. シリアルコンソールをセットアップする

ブートローダとカーネルに対して シリアルコンソールを使用するように設定するには、 単に `/boot/loader.rc` のファイルに、次のような一行を書くだけで実現できます。

    set console=comconsole

これは、前セクションで扱ったブートブロックの設定に 全く関係なく機能します。

上に示した行は、 `/boot/loader.rc` の最初の行に書き込まなくてはいけません。 これはできるだけ早く、ブートメッセージをシリアルコンソールに 出力させるために必要なことです。

同様にして、次のように内蔵コンソールを指定することもできます。

    set console=vidconsole

もし、ブートローダの環境変数 `console` が設定されていない場合、 ブートローダ、そしてその次に起動するカーネルは ブートブロックで指定された `-h` オプションに 示されたコンソールを使用します。

3.2 以降のバージョンにおいては `/boot/loader.rc` ではなく、 `/boot/loader.conf.local` や `/boot/loader.conf` にコンソール指定を書き込みます。 その場合、 `/boot/loader.rc` は次のようになっていなければなりません。

    include /boot/loader.4th
    start

それから、`/boot/loader.conf.local` を作成して、次の行をそこに追加して下さい。

    console=comconsole

か、もしくは

    console=vidconsole

です。詳細については、loader.conf(5) を参照して下さい。

> Note: その際、ブートローダはオプション指定なし (ブートブロックに `-P` オプションが指定されたのと等価)になり、 キーボードの存在を調べて 内蔵コンソールとシリアルコンソールを自動的に選択する機能は働きません。

#### 18.6.5.2. `sio0` 以外のシリアルポートを コンソールとして使うには

`sio0` 以外のシリアルポートを コンソールとして使うには、ブートローダを再コンパイルする必要があります。 それには、 Section 18.6.4.2 に書かれている説明にしたがって下さい。

### 18.6.6. 注意

シリアルコンソールというアイデアは、 グラフィック出力用のハードウェアやキーボードが接続されていない 専用サーバのセットアップを可能にするためのものです。 (ほとんど?)全てのシステムはキーボードなしで起動できますが、 不幸にも、グラフィックアダプタなしでは起動できないシステムはたくさんあります。 AMI BIOS を採用しているマシンでは、CMOS 設定の `graphics adapter' を `Not Installed' にするだけで、 グラフィックアダプタがなくとも起動できるように設定することができます。

しかしながら、多くのマシンはこのようなオプションを持っていませんし、 ディスプレイハードウェアがシステムに存在しないと起動しないように なっています。そのようなマシンでは、 モニタを接続する必要がなかったとしても、 適当なグラフィックカード(モノクロのジャンク品でも構いません)を 挿入したままにしておく必要があるでしょう。 また、AMI BIOS をインストールする、という手もあります。

# Chapter 19. PPP と SLIP

改訂: Jim Mock `<jim@FreeBSD.org>`, 2000 年 3 月 1 日.

## 19.1. この章では

もしあなたがモデムを使ってインターネットに接続したり, 他の人々に FreeBSD によるインターネットへのダイヤルアップ接続を 提供しようとしているのでしたら, PPP または SLIP 接続を選択することができます.

この節では 3 種類の PPP について説明しています. それは ユーザ, カーネル, そして PPPoE (PPP オーバイーサネット) です. また SLIP のクライアントとサーバの設定についても記述しています.

最初に説明するのは, ユーザ PPP です. ユーザ PPP は FreeBSD に 2.0.5-RELEASE の時に, 既に存在していたカーネル実装の PPP に加えて導入されました.

ユーザ PPP とカーネル PPP の主な違いは何かと疑問に思われるかも 知れませんが, その答えは簡単です. ユーザ PPP はデーモンとしては実行されず 必要に応じて実行されるのです. PPP インタフェイスを組み込んだカーネルは 必要ではなく, ユーザプロセスとして実行されカーネルとのデータの やり取りにはトンネルデバイスドライバ (`tun`) を 使用します.

この節ではこれ以降ユーザ PPP のことは, `pppd` のような他の PPP ソフトウエアと特に区別する必要がある場合を除いて, 単に ppp と記述します. またこの節に記述されているコマンドは すべて root で実行されなければなりません.

## 19.2. ユーザ ppp の利用

原作: Brian Somers `<brian@FreeBSD.org>`, 協力: Nik Clayton `<nik@FreeBSD.org>`, Dirk-Willem van Gulik `<Dirk.vanGulik@jrc.it>`, Peter Childs `<pjchilds@imforei.apana.org.au>`.

### 19.2.1. ユーザ PPP

#### 19.2.1.1. 前提条件

以下の情報を手に入れておく必要があるでしょう:

- PPP で接続するインターネットサービスプロバイダ (ISP) のアカウント. さらに, 接続済みのモデム (またはその他のデバイス) があり, プロバイダとの接続が可能なように正しく設定されている.

- プロバイダの電話番号.

- ログイン名とパスワード. これは通常の unix 形式のログイン名と パスワードの組という場合もありますし, PPP PAP または CHAP の ログイン名とパスワードの組という場合もあります.

- 一つ以上のネームサーバの IP アドレス. 通常, プロバイダから IP アドレスを二つ指示されている はずです. 一つすら提供されていないならば, `ppp.conf` ファイル中で `enable dns` コマンドを使って ppp にネームサーバを設定するよう 指示できます.

プロバイダからは以下の情報が提供されているはずですが, どうしても必要というわけではありません:

- プロバイダのゲートウェイの IP アドレス. ゲートウェイとは, あなたがそこに接続をおこなって, デフォルトルート として設定することになるマシンです. プロバイダがこのアドレスを明示していなくても, 最初は 適当に設定しておいて, 接続時にプロバイダの PPP サーバから 正しいアドレスを教えてもらうことができます.

  このアドレスは, ppp から `HISADDR`として参照されます.

- プロバイダのネットマスク設定. プロバイダが明示していないとしても, ネットマスクとして `255.255.255.0` を使用しておけば問題ありません.

- もしプロバイダから固定の IP アドレスとホスト名の割り当てを 受けていれば, その情報を指定しておくこともできます. 割り当てを受けていなければ, 接続先から適切な IP アドレスを指定してもらいます.

もし, 必要な情報が不足していれば, プロバイダに連絡を取って 確認しておいてください.

#### 19.2.1.2. ppp 対応カーネルの構築

説明でも述べているように, `ppp` はカーネルの `tun` デバイスを使います. 使っているカーネルがどれであっても, `tun` デバイスを設定しなければなりません. FreeBSDに付属しているデフォルトの `GENERIC` カーネルに合うように `tun` デバイスは前もって設定されています. しかしながら, 自分で修正したカーネルをインストールするのであれば, pppが正しく動くよう, カーネルが設定されているか確認しなくてはいけません.

これを確認するには, カーネルコンパイルディレクトリ (`/sys/i386/conf` または `/sys/pc98/conf`) に移動して, カーネルコンフィグレーションファイルを調べます. 以下の行がどこかに含まれている必要があります.

    pseudo-device tun 1

この行がカーネルコンフィグレーションファイルに 含まれていない場合, この行を追加して カーネルの再コンパイルとインストールをおこなう必要があります. 元々の `GENERIC` カーネルは 標準でこれを含んでいますので, カスタムカーネルをインストールしているのではなかったり, `/sys` ディレクトリが存在しないのであれば, 何も変更する必要はありません. カーネルコンフィグレーションの詳細については, FreeBSD カーネルのコンフィグレーション を参照してください.

以下のコマンドを実行することで, 現在のカーネルにトンネルデバイスが いくつ組み込まれているかを調べることができます:

    # ifconfig -a
    tun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1500
        inet 200.10.100.1 --> 203.10.100.24 netmask 0xffffffff
    tun1: flags=8050<POINTOPOINT,RUNNING,MULTICAST> mtu 576
    tun2: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1500
        inet 203.10.100.1 --> 203.10.100.20 netmask 0xffffffff
    tun3: flags=8010<POINTOPOINT,MULTICAST> mtu 1500

> Note: FreeBSD 4.0やより最近のリリースでは, すでに使われている `tun` デバイスしか見つけることが できないでしょう. これは, 全く `tun` デバイスを見つけることが できないかもしれないということです. しかし, もしこうなって しまっても, 心配することはありません. そのデバイスは `ppp` が使おうとする時に動的に作られるはず だからです.

この例ではトンネルデバイスが四つ存在し, そのうち二つに 設定がおこなわれ, 使用中であることがわかります. 上の例で `RUNNING` フラグがオンになっている ものがありますが, これは そのインタフェースが何かに使用されていることを示している だけであるということに注意してください. つまり, `RUNNING` になっていない インタフェースがあったとしても, それはエラーではありません.

トンネルデバイスがカーネルに組み込まれておらず, 何らかの理由で カーネルの再構築ができない場合でも, 方法がないわけではありません. 動的にデバイスをロードすることができるはずです. 詳細については modload(8) や lkm(4) など, 適切なマニュアルを参照してください.

#### 19.2.1.3. tun デバイスの確認

ほとんどのユーザは `tun` デバイス (`/dev/tun0`) が一つあれば充分でしょう. より多くのデバイスを使う場合 (すなわち, カーネルコンフィグレーション ファイルで `pseudo-device tun` の行に `1` 以外の数値を指定している場合), 以下で `tun0` と書かれている部分をすべて, あなたが使うデバイスの番号に あわせて読みかえてください.

`tun0` デバイスが正しく作成されていることを確認する最も簡単な方法は, それを作り直すことです. そのためには, 以下のコマンドを実行します:

    # cd /dev
    # ./MAKEDEV tun0

カーネルに 16 個のトンネルデバイスを組み込んだのであれば, `tun0` だけでなく他の tun デバイスも作成しておく必要があるでしょう:

    # cd /dev
    # ./MAKEDEV tun15

また, カーネルが正しく設定されているかどうかを調べるために 以下のコマンドを実行して, このような出力が得られることを確認します:

    # ifconfig tun0
    tun0: flags=8050<POINTOPOINT,RUNNING,MULTICAST> mtu 1500

まだ `RUNNING` フラグがセットされていない場合もあります. その時は以下のような出力が得られるでしょう:

    # ifconfig tun0
    tun0: flags=8010<POINTOPOINT,MULTICAST> mtu 1500

前述したように, FreeBSD 4.0 以降のリリースでは `tun` デバイスは要求に応じて 作られるので, もしそのデバイスがまだ使われていなければ, 見つけられないかもしれないということを思い出してください.

#### 19.2.1.4. 名前の解決に関する設定

リゾルバ (resolver) はシステムの一部分で, IP アドレスとホスト名との 変換をおこないます. IP アドレスとホスト名を対応させるためのマップを, 二つの場所のうちの一つから探すように設定できます. 一つめは `/etc/hosts` (`man 5 hosts`) と呼ばれるファイルです. 二つめはインターネット ドメインネームサービス (DNS) と呼ばれる 分散データベースですが, これに関する議論は このドキュメントで扱う範囲を 越えていますので, これについての説明はおこないません.

リゾルバは名前のマッピングを おこなうシステムコールの集合体です. ただし どこからマッピング情報を見つけるのかは, 最初に指示しておく必要があります. これは まず `/etc/host.conf` ファイルを編集することでおこないます. 混乱の元になりますので, このファイルを `/etc/hosts.conf` と 呼んだりしてはいけません (余分な `s` がついていますね).

##### 19.2.1.4.1. `/etc/host.conf` ファイルの編集

このファイルには 以下の 2 行が (この順番で) 書かれているはずです:

    hosts
    bind

これは, 最初に `/etc/hosts` ファイルを調べ, そこで目的の名前が 見つけられなかった場合に DNS を引きにいくようリゾルバに指示します.

##### 19.2.1.4.2. /etc/hosts(5) ファイルの編集

このファイルはローカルネットワーク上に存在するマシンの IP アドレスと ホスト名を含んでいるはずです. 最低でも ppp を動作させるマシンのエントリが 含まれている必要があります. そのマシンのホスト名が `foo.bar.com` で, IP アドレスが `10.0.0.1` であると仮定すると, `/etc/hosts` は 以下の行を含んでいなければいけません:

    127.0.0.1  localhost.bar.com   localhost
    127.0.0.1   localhost.bar.com.
    10.0.0.1    foo.bar.com     foo
    10.0.0.1    foo.bar.com.

一つめの行は `localhost` を現在のマシンの別名として定義しています. マシン固有の IP アドレスが何であっても, この行の IP アドレスは 常に `127.0.0.1` でなければいけません. 二つめの行はホスト名 `foo.bar.com` (と, その省略形 `foo`) を IP アドレス `10.0.0.1` にマップします.

もしプロバイダから固定の IP アドレスとホスト名を割り当てられて いるのであれば, それを `10.0.0.1` エントリのかわりに使ってください.

##### 19.2.1.4.3. `/etc/resolv.conf` ファイルの編集

`/etc/resolv.conf` はリゾルバの振舞いを指定します. もし自前の DNS サーバを走らせているのなら, このファイルは空のままに しておくこともできます. 通常は, 以下のように書いておく必要があるでしょう:

    domain bar.com
    nameserver x.x.x.x
    nameserver y.y.y.y

``x.x.x.x`` と ``y.y.y.y`` はプロバイダから指示されたアドレスで, 接続するプロバイダが提供しているネームサーバを すべて書いてください. `domain` に指定するのは このマシンのデフォルトのドメイン名で, おそらく 書かなくても問題は無いでしょう. このファイルの各エントリの詳細については, `resolv.conf` のマニュアルページを参照してください.

バージョン 2 以降の ppp を使用している場合には, `enable dns` コマンドを使用してネームサーバのアドレスを プロバイダに問い合わせるように指示することができます. 上の指定とは異なるアドレスをプロバイダが指定してきた場合 (または `/etc/resolv.conf` でネームサーバが指定されていない場合), ppp はプロバイダが指定したアドレスで `resolv.conf` を書きかえます.

#### 19.2.1.5. `ppp` の設定

ユーザ ppp と `pppd` (カーネルレベルの PPP 実装) は どちらも `/usr/share/examples/ppp` ディレクトリに置かれた設定ファイルを使います. ここには設定ファイルのサンプルが用意されていて, ユーザ ppp の設定を おこなう際に大変参考になりますので, 削除したりしないでください.

`ppp` の設定をするためには, 必要に応じていくつかのファイルを編集する必要が あります. 書き込む内容は, プロバイダが静的に IP アドレスを割り当てる (つまり, 固定の IP アドレスを一つ与えられて, 常にそれを使う) か, または動的に IP アドレスを割り当てる (つまり, PPP セッションごとに IP アドレスが変化する可能性がある) かということに ある程度依存します.

##### 19.2.1.5.1. 静的 IP アドレスによる PPP 接続

まず `/etc/ppp/ppp.conf` という設定ファイルを作成する必要があります. これは以下の例とほとんど同じようなものになるでしょう.

> Note: `:` で終る行は 1 カラム目から始め, その他の行はスペースまたはタブで以下の例のように 段をつける (インデントする) 必要があります.

    1     default:
    2       set device /dev/cuaa0
    3       set speed 115200
    4       set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 5 \"\" ATE1Q0 OK-AT-OK \\dATDT\\TTIMEOUT 40 CONNECT"
    5     provider:
    6       set phone "(123) 456 7890"
    7       set login "TIMEOUT 10 \"\" \"\" gin:--gin: foo word: bar col: ppp"
    8       set timeout 300
    9       set ifaddr x.x.x.x y.y.y.y 255.255.255.0 0.0.0.0
    10      add default HISADDR
    11      enable dns

ファイルでは行番号を取り除いておいてください. これは解説の際に参照する行を示すためにつけたものです.

Line 1:

  デフォルトエントリを指定します. このエントリ中のコマンドは ppp が起動された際に自動的に実行されます.

Line 2:

  モデムが接続されているデバイスを指定します. `COM1:` は `/dev/cuaa0` に, `COM2:` は `/dev/cuaa1` になります.

Line 3:

  通信速度 (DTE 速度) を指定します. もし 115200 が使えない (最近のモデムなら大抵使えるはずですが) 場合には, かわりに 38400 を指定してみてください.

Line 4:

  ダイアルスクリプトを指定します. ユーザ PPP は chat(8) 言語に似た, 受信待ち文字列と 送信文字列の対からなるスクリプトを使用します. この言語の機能に関しては, マニュアルページを参照してください.

Line 5:

  接続するプロバイダの名前 “provider” を エントリ名として指定します.

Line 6:

  このプロバイダの電話番号を指定します. 複数の電話番号を `:` や `|` で区切って指定することができます. これら区切り文字の違いについては, ppp(8) に 詳しく書かれています. 要約すると, 毎回違う番号に かけたいのであれば `:` を使います. 常に まず先頭の番号にかけてみて, つながらない時にだけ 2 番目以降の番号に かけたいのであれば `|` を使います. 例に示されているように, 常に電話番号全体を引用符で くくって (クォートして) おきます.

Line 7:

  ダイアルスクリプトと同様に, ログインスクリプトも chat 言語風の記述をおこないます. この例は, 以下のようなログインセッションを使用する プロバイダのためのものです:

      J. Random Provider
      login: foo
      password: bar
      protocol: ppp

  このスクリプトは必要に応じて 書きかえなければならないでしょう. 初めてスクリプトを書く時には, 予想した通りに 処理が進んだかどうかを確認するため, “chat” ログを とるようにしておいた方が良いでしょう.

  PAP や CHAP を使用する場合には, ここでログインすることは ありませんから, ログイン文字列は空白のままにしておくべきです. 詳細については PAP および CHAP による認証を参照してください.

Line 8:

  デフォルトの接続タイムアウト時間を (秒数で) 指定します. この例では, 300 秒間 通信がおこなわれなければ 自動的に接続を切るように指定しています. タイムアウトさせたくない場合には, この値を 0 に設定します.

Line 9:

  インタフェースのアドレスを指定します. 文字列 `x.x.x.x` は プロバイダに割り当てられた IP アドレスで置きかえてください. 文字列 `y.y.y.y` はプロバイダから指示されたゲートウェイ (接続先となるマシン) の IP アドレスで置きかえてください. プロバイダがゲートウェイのアドレスを 指示していない場合は, `10.0.0.2/0` を使用しておいてください. もし “仮の” アドレスを使用する必要がある場合には, 動的 IP アドレスによる PPP 接続に関する指示に従って, `/etc/ppp/ppp.linkup` にエントリを作成していることを 確認してください. この行が省略されている場合, ppp を `-auto` モードで動作させることはできません.

Line 10:

  プロバイダのゲートウェイへの経路を デフォルトルートとして 追加します. 特殊文字列 `HISADDR` は, 9 行目で指定された ゲートウェイのアドレスで置きかえられます. `HISADDR` は 9 行目までは初期化されていませんので, その行よりも後でしか使えないことに 注意してください.

Line 11:

  ネームサーバのアドレスが正しいか どうかを確認するため, プロバイダに問い合わせをおこなうよう ppp に指示します. プロバイダがこの機能をサポートしていれば, ppp は `/etc/resolv.conf` のネームサーバエントリを 正しいアドレスに更新することができます.

静的な IP アドレスを持っていて, 接続が完了する前にルーティングテーブルの エントリが正しく設定されているのであれば, `ppp.linkup` に エントリを追加する必要はありません. しかし, この場合でもエントリを追加して, 接続が完了した時点で プログラムを呼び出したいことがあるかもしれません. これについては後ほど sendmail を例として説明します.

これらの設定ファイルのサンプルが `/usr/share/examples/ppp` ディレクトリに 置かれています.

##### 19.2.1.5.2. 動的 IP アドレスによる PPP 接続

プロバイダが静的な IP アドレスの割り当てをおこなっていない場合, `ppp` が相手側のホスト (ゲートウェイ) と交渉して, こちら側と相手側のアドレスを 決めるように設定することができます. これは, 起動時には“仮の”アドレスを使っておいて, 接続後に IP コンフィグレーション プロトコル (IPCP) を使用して `ppp` が IP アドレスを正しく設定できるようにすることで実現されます. 静的 IP アドレスによる PPP 接続に 以下の変更を加える以外は, `ppp.conf` の設定は同じです:

    9       set ifaddr 10.0.0.1/0 10.0.0.2/0 255.255.255.0

繰り返しますが, 行番号は取り除いておいてください. これは解説の際に参照する行を示すためにつけたものです. なお, 少なくともスペース 1 個分の段づけ (インデント) が必要です.

Line 9:

  `/` 文字の後ろの数字は, アドレス交渉の際に固定しておきたい ビットの数です. 場合によっては, もっと適切な IP アドレスを 指定しておきたいこともあるかもしれませんが, ほとんどの場合には 上の例の通りで問題ありません.

  最後の引数 (`0.0.0.0`) は, アドレスの交渉の際に `10.0.0.1` ではなく `0.0.0.0` を使用するよう ppp に指示するためのものです. `set ifaddr` コマンドの最初の引数として `0.0.0.0` を指定してはいけません. さもないと, `-auto` モードで動作させる際に 初期経路を設定することができなくなります.

バージョン 1.X の ppp を使用する場合, `/etc/ppp/ppp.linkup` にもエントリを作成しておく必要があります. `ppp.linkup` は接続が確立された後に使用されます. この時点では, `ppp` は実際にどの IP アドレスを使うべきなのか わかっているはずです. 以下のエントリは存在する仮の経路を削除し, 正しい経路を作成します:

    1     provider:
    2       delete ALL
    3       add default HISADDR

Line 1:

  接続を確立する際に, `ppp` は以下のルールに従って `ppp.linkup` のエントリを検索します: まず `ppp.conf` で使用されたのと同じラベルを探します. もし見つからなければ, ゲートウェイの IP アドレスのエントリを 探します. このエントリは 4 オクテットの IP アドレス形式の ラベルです. それでも まだエントリが見つからなければ, `MYADDR` エントリを探します.

Line 2:

  この行は, 使用する tun インタフェースに関する既存の経路を (ダイレクトルートのエントリを除き) すべて削除するよう `ppp` に指示します.

Line 3:

  この行は `HISADDR` への経路をデフォルトルートとして 追加するように ppp に指示します. `HISADDR` は IPCP で 決定されたゲートウェイの IP アドレスで置きかえられます.

詳細なサンプルについては, `/usr/share/examples/ppp/ppp.conf.sample` ファイル中のpmdemand エントリと `/usr/share/examples/ppp/ppp.linkup.sample` を参照してください.

バージョン 2 の ppp から “sticky routes” が導入されました. `MYADDR` や `HISADDR` を含む `add` コマンドと `delete` コマンドを記憶して, `MYADDR` や `HISADDR` の アドレスが変化した際には経路の再設定をおこないます. したがって, これらのコマンドを `ppp.linkup` に 繰り返し記述する必要は無くなりました.

##### 19.2.1.5.3. かかってきた電話を `ppp` で受けるには

かかってきた電話を `ppp` が受けるように設定する際に, そのマシンが LAN に接続されているのであれば, パケットを LAN に転送するかどうかを決定する必要があります. 転送をおこなう場合には, その LAN のサブネットから IP アドレスを ppp クライアントに割り当て, 以下のコマンドを指定するのが良いでしょう.

    gateway_enable=YES

###### 19.2.1.5.3.1. どの getty を使いますか?

getty でダイアルアップサービスをおこなう場合の優れた解説が FreeBSD でダイアルアップサービスをおこなうための設定 にあります.

`getty` に代わるものとしては, mgetty があります. これは `getty` をより柔軟にしたもので, ダイアルアップ回線での使用を意図して 設計されています.

`mgetty` を使う場合の利点は, `mgetty` が積極的にモデムと通信する ということです. つまり, もし `/etc/ttys` でポートを閉じている場合, モデムは電話をとらなくなります.

最近のバージョンの `mgetty` (0.99beta 以降) では, PPP ストリームの 自動検出もサポートされています. これにより, クライアント側で スクリプトを準備しなくてもサーバに アクセスすることができます.

`mgetty` に関する, より詳細な情報については Mgetty と AutoPPP を参照してください.

###### 19.2.1.5.3.2. ppp の実行許可

`ppp` は通常, ID 0 のユーザ (root) として動作しなければいけませんが, 以下で説明するように, `ppp` を通常のユーザとしてサーバモードで実行させたい 場合には, そのユーザを `/etc/group` の `network` グループに 追加して, ppp を実行する許可を与えておかなければいけません.

また, そのユーザが設定ファイル内の目的のエントリに アクセスできるように, 以下のように `allow` コマンドで許可を与えておく必要があります:

    allow users fred mary

このコマンドがデフォルトエントリに 書かれている場合には, 指定されたユーザは すべてのエントリをアクセスできるようになります.

###### 19.2.1.5.3.3. 動的 IP ユーザのための ppp シェルの設定

`/etc/ppp/ppp-shell` という名前で, 以下のような内容のファイルを 作成します:

    #!/bin/sh
    IDENT=`echo $0 | sed -e 's/^.*-\(.*\)$/\1/'`
    CALLEDAS="$IDENT"
    TTY=`tty`

    if [ x$IDENT = xdialup ]; then
        IDENT=`basename $TTY`
    fi

    echo "PPP for $CALLEDAS on $TTY"
    echo "Starting PPP for $IDENT"

    exec /usr/sbin/ppp -direct $IDENT

このスクリプトには実行可能属性をつけておきます. 次に, 以下のコマンドを実行し, `ppp-dialup` という名前で このスクリプトへのリンクを作成します:

    # ln -s ppp-shell /etc/ppp/ppp-dialup

すべてのダイアルアップ ppp ユーザのログインシェルとして このスクリプトを使用します. 以下は `pchilds` というユーザ名の ダイアルアップユーザを `/etc/password` へ登録した場合の例です. (パスワードファイルを直接エディタで編集したりせず, `vipw` を使ってください)

    pchilds:*:1011:300:Peter Childs PPP:/home/ppp:/etc/ppp/ppp-dialup

任意のユーザが読むことのできる, `/home/ppp` ディレクトリを 作成します. `/etc/motd` が表示されないようにするため, このディレクトリには以下のように大きさが 0 バイトのファイルを 作成しておきます.

    -r--r--r--   1 root     wheel           0 May 27 02:23 .hushlogin
    -r--r--r--   1 root     wheel           0 May 27 02:22 .rhosts

###### 19.2.1.5.3.4. 静的 IP ユーザのための PPP シェルの設定

上記と同じように `ppp-shell` ファイルを作成し, 静的な IP アドレスを割り当てるアカウントそれぞれについて `ppp-shell` へのシンボリックリンクを作成します.

例えば, クラス C ネットワークの経路制御を必要とする, 三人のダイアルアップユーザ `fred`, `sam`, `mary` がいるとすると, 以下のコマンドを実行することになります:

    # ln -s /etc/ppp/ppp-shell /etc/ppp/ppp-fred
    # ln -s /etc/ppp/ppp-shell /etc/ppp/ppp-sam
    # ln -s /etc/ppp/ppp-shell /etc/ppp/ppp-mary

これらのユーザのダイアルアップアカウントでは, 上で作成した それぞれのシンボリックリンクを ログインシェルとして設定しておきます. (つまり, ユーザ `mary` のログインシェルは `/etc/ppp/ppp-mary` に なります).

###### 19.2.1.5.3.5. 動的 IP ユーザのための ppp.conf の設定

`/etc/ppp/ppp.conf` ファイルは, 大体以下のような内容になるでしょう:

    default:
      set debug phase lcp chat
      set timeout 0

    ttyd0:
      set ifaddr 203.14.100.1 203.14.100.20 255.255.255.255
      enable proxy

    ttyd1:
      set ifaddr 203.14.100.1 203.14.100.21 255.255.255.255
      enable proxy

> Note: 上の例のように段をつける (インデントする) 必要があることに注意してください.

`default:` エントリはセッションごとにロードされます. `/etc/ttys` で有効にしてある各ダイアルアップ回線ごとに一つ, 上記の `ttyd0:` のようなエントリを作成します. 各行の相手側アドレスとして, それぞれ別の IP アドレスを 動的 IP ユーザのための IP アドレスのプールから割り当てておく必要があります.

###### 19.2.1.5.3.6. 静的 IP ユーザのための `ppp.conf` の設定

上のサンプルの `/usr/share/examples/ppp/ppp.conf` の内容に加えて, 静的に IP を割り当てられたダイアルアップユーザ それぞれのためのエントリを追加する必要があります. ここでも `fred`, `sam`, `mary` の例を使うことにしましょう.

    fred:
      set ifaddr 203.14.100.1 203.14.101.1 255.255.255.255

    sam:
      set ifaddr 203.14.100.1 203.14.102.1 255.255.255.255

    mary:
      set ifaddr 203.14.100.1 203.14.103.1 255.255.255.255

必要であれば, それぞれの静的 IP ユーザに対する経路制御情報も `/etc/ppp/ppp.linkup` ファイルに書いておくべきでしょう. 以下の例ではクライアントの PPP リンクを経由する, クラス C の `203.14.101.0` ネットワークへの経路を追加しています.

    fred:
      add 203.14.101.0 netmask 255.255.255.0 HISADDR

    sam:
      add 203.14.102.0 netmask 255.255.255.0 HISADDR

    mary:
      add 203.14.103.0 netmask 255.255.255.0 HISADDR

##### 19.2.1.5.4. `mgetty`, AutoPPP, マイクロソフト拡張の詳細

###### 19.2.1.5.4.1. `mgetty` と AutoPPP

`AUTO_PPP` オプションつきでコンパイルした `mgetty` を使えば, `mgetty` が PPP 接続の LCP フェーズを検出して, 自動的に PPP シェルを起動するように 設定することができます. しかし この場合, デフォルトの login/password シーケンスは発生しないので, ユーザの認証は PAP または CHAP を使っておこなう必要があります.

このセクションでは, ユーザ (あなた) が問題なく `AUTO_PPP` オプションつきの `mgetty` (v0.99beta またはそれ以降) の設定, コンパイル, インストールができているものと仮定しています.

`/usr/local/etc/mgetty+sendfax/login.config` ファイルが 以下の行を含んでいることを確認してください:

    /AutoPPP/ -     -       /etc/ppp/ppp-pap-dialup

これにより, PPP 接続を検出したら `mgetty` が `ppp-pap-dialup` スクリプトを実行するようになります.

`/etc/ppp/ppp-pap-dialup` という名前で, 以下のような内容のファイルを 作成します (このファイルには実行可能属性を つけておく必要があります):

    #!/bin/sh
    exec /usr/sbin/ppp -direct pap

さらに, かかってきた電話すべてを自分で扱うエントリを `/etc/ppp/ppp.conf` に作成します.

    pap:
      enable pap
      set ifaddr 203.14.100.1 203.14.100.20-203.14.100.40
      enable proxy

この方法でログインする それぞれのユーザは, PAP によるユーザ認証を おこなうために `/etc/ppp/ppp.secret` ファイルにユーザ名とパスワードを 書いておくか, または `/etc/password` ファイルを使うように,

    enable passwdauth

ユーザに静的な IP アドレスを割り当てる場合には, そのアドレスを `/etc/ppp/ppp.secret` の第三引数として指定することができます. サンプルについては, `/usr/share/examples/ppp/ppp.secret.sample` を参照してください.

###### 19.2.1.5.4.2. マイクロソフト拡張

クライアントからの要求に応じて, ppp が DNS や NetBIOS ネームサーバの アドレスを通知するように 設定をおこなうこともできます.

バージョン 1.X の ppp で これらの拡張機能を有効にするには, 以下の行を `/etc/ppp/ppp.conf` の適切なセクションに追加する必要があるでしょう.

    enable msext
    set ns 203.14.100.1 203.14.100.2
    set nbns 203.14.100.5

バージョン 2 以降の ppp では, 以下のようになります:

    accept dns
    set dns 203.14.100.1 203.14.100.2
    set nbns 203.14.100.5

これにより, クライアントはプライマリと セカンダリのネームサーバアドレス および NetBIOS ネームサーバホストを知ることができます.

バージョン 2 以降の ppp では, `set dns` の行を省略した場合には `/etc/resolv.conf` に書かれているネームサーバのアドレスを使用します.

##### 19.2.1.5.5. PAP および CHAP による認証

いくつかのプロバイダでは, PAP または CHAP のいずれかの認証メカニズムを 使用して接続時の認証をおこなうように システムを設定しています. この場合, プロバイダは接続の際に `login:` プロンプトを送信せず, 最初から PPP で通信を始めようとするでしょう.

PAP ではパスワードがそのまま送られてしまうため, CHAP に比べると安全性が 低くなりますが, このパスワードはシリアル回線のみを通して送られます. そのため, クラッカーが “盗み聞き” する余地は多くないので, 通常ここの セキュリティは問題にはなりません.

静的 IP アドレスによる PPP 接続または 動的 IP アドレスによる PPP 接続の セクションに戻って, 以下の変更をおこないます:

    7       set login
    ...
    12      set authname MyUserName
    13      set authkey MyPassword

これまでと同様に, 行番号は取り除いておいてください. これは解説の際に参照する行を示すためにつけたものです. なお, 少なくともスペース 1 個分の段づけ (インデント) が必要です.

Line 7:

  PAP または CHAP を使用する場合, 通常 プロバイダはサーバへの ログインを必要としません. そのため, “set login” 文字列を 無効にしておかなければいけません.

Line 12:

  この行は PAP/CHAP ユーザ名を指定します. `MyUserName` に 正しい値を入れておく必要があります.

Line 13:

  この行は PAP/CHAP パスワードを指定します. `MyPassword` に 正しい値を入れておく必要があります. PAP と CHAP はデフォルトで両方とも 受け付けられるようになって いますが, PAP や CHAP を使用するという 意思を明示するために,

      15      accept PAP

  または

      15      accept CHAP

  という行を追加しておくのも良いでしょう.

##### 19.2.1.5.6. 動作中の ppp の設定変更

適切な診断ポートが設定されている場合には, バックグラウンドで動作中の `ppp` プログラムと通信することができます. この設定をおこなうためには, 以下の行を設定ファイルに追加しておきます:

    set server /var/run/ppp-tun%d DiagnosticPassword 0177

これにより, ppp は指定された unix ドメインの ソケットをモニタして, クライアントから正しいパスワードを受け取った後に アクセスを許可します. このソケット名に含まれる `%d` は, この ppp が使用している `tun` デバイスの デバイス番号で置きかえられます.

一旦ソケットの設定が終了したら, スクリプト中で pppctl(8) を 使用して, 動作中の ppp を操作することができるでしょう.

#### 19.2.1.6. システムの最終設定

これで `ppp` の設定は終りました. しかし `ppp` を動かす前に, まだ少し必要なことがあります. それらの設定は, すべて `/etc/rc.conf` ファイルを 編集することでおこないます. (このファイルは以前には `/etc/sysconfig` と呼ばれていました)

このファイルを上から順に設定していきます. まずは `hostname=` の行が設定されていることを確認します. 例えば以下のように:

    hostname="foo.bar.com"

もしプロバイダが静的な IP アドレスとホスト名を割り当てているのなら, ホスト名としてそれを使うのが おそらくベストでしょう.

次に `network_interfaces` 変数を調べます. 必要に応じて (on demand) プロバイダにダイアルするようにシステムを設定したい場合には, `tun0` デバイスがこのリストに追加されていることを確認しておきます. それ以外の場合には, tun0 デバイスをリストから削除しておきます.

    network_interfaces="lo0 tun0" ifconfig_tun0=

> Note: `ifconfig_tun0` 変数が空で, `/etc/start_if.tun0` という名前の ファイルが作成されていなければなりません. このファイルの内容は以下のようになります.

>     ppp -auto mysystem

> このスクリプトはネットワークの設定時に実行され, ppp デーモンを自動モードで立ち上げます. このマシンがもし LAN のゲートウェイであれば, `-alias` スイッチも使用したいと思うかもしれません. 詳細に関しては, マニュアルページを参照してください.

以下のようにルータプログラムを `NO` に設定します.

    router_enable="NO"

`routed` は, `ppp` が作成したデフォルトのルーティングテーブル エントリを削除してしまう場合がありますので, (初期設定では起動されるようになっている) `routed` デーモンが 起動されないようにしておくことが重要です.

`sendmail_flags` 行が `-q` オプションを含まないように 設定しておいた方がよいでしょう. さもないと, `sendmail` が アドレスを調べようとして発信をおこなってしまう場合があります. 以下のような設定で良いでしょう:

    sendmail_flags="-bd"

この結果, PPP リンクを立ち上げた時には いつでも以下のコマンドを実行して, キューにたまっているメールを `sendmail` に送信させる作業が必要になるでしょう.

    # /usr/sbin/sendmail -q

`ppp.linkup` 中で `!bg` コマンドを使用することで, これを自動的に おこなうこともできます:

    1     provider:
    2       delete ALL
    3       add 0 0 HISADDR
    4       !bg sendmail -bd -q30m

こうするのが嫌であれば, SMTP トラフィックをブロックするように “dfilter” を設定しておくこともできます. 詳細についてはサンプルファイルを参照してください.

後はマシンをリブートするだけです.

リブートが終ったら,

    # ppp

コマンドを実行し, 続いて PPP セッションを開始させるために `dial provider` と入力することもできますし, (`start_if.tun0` スクリプトを作成していない場合に), 外部へのトラフィックが発生した時に, `ppp` が自動的に セッションを確立してくれるようにしたいのであれば, 以下のコマンドを実行することもできます.

    # ppp -auto provider

#### 19.2.1.7. まとめ

要約すると, 初めて ppp を設定する際には, 以下のステップが不可欠です:

クライアント側:

1. カーネルに `tun` デバイスが組み込まれていることを確認.

2. `/dev` ディレクトリに `tun`X`` デバイスファイルが 存在することを確認.

3. `/etc/ppp/ppp.conf` にエントリを作成. ほとんどのプロバイダでは, `pmdemand` の例で充分でしょう.

4. 動的 IP アドレスを使用するなら, `/etc/ppp/ppp.linkup` に エントリを作成.

5. `/etc/rc.conf` (または `sysconfig`) ファイルを更新.

6. 必要に応じてダイヤル (demand dialing) したいのであれば, `start_if.tun0` スクリプトを作成.

サーバ側:

1. カーネルに `tun` デバイスが組み込まれていることを確認.

2. `/dev` ディレクトリに `tun`X`` デバイスファイルが 存在することを確認.

3. (vipw(8) コマンドを使って) `/etc/passwd` にエントリを作成.

4. このユーザのホームディレクトリに `ppp -direct direct-server` か何かを実行するプロファイルを作成.

5. `/etc/ppp/ppp.conf` にエントリを作成. `direct-server` の例で充分でしょう.

6. `/etc/ppp/ppp.linkup` にエントリを作成.

7. `/etc/rc.conf`ファイルを更新.

## 19.3. カーネル PPP の利用

原作: Gennady B. Sorokopud `<gena@NetVision.net.il>`, Robert Huff `<rhuff@cybercom.net>`.

訳: 石墨 紀孝 `<graphite@jp.FreeBSD.org>`. 1996 年 9 月 6 日.

### 19.3.1. カーネル PPP の設定

PPP の設定を始める前に, `pppd` が `/usr/sbin` にあり, また `/etc/ppp` という ディレクトリが存在することを確認してください.

`pppd` はふたつのモードで動作します.

1. “クライアント” モード. シリアル接続やモデムを利用して, そのマシンを 外部のネットワークに PPP 接続したい場合に用います.

2. “サーバ” モード. そのマシンがネットワーク上にあるときに, PPP を使って ほかのコンピュータを接続する際に用います.

どちらの場合でも, オプションファイルを設定する必要があります (`/etc/ppp/options` または, そのマシン上で PPP を使用する人が 複数いる場合には `~/.ppprc`).

また, ダイヤルとリモートホストへの接続をおこなうために, シリアル接続やモデムを 操作する, なんらかのソフトウェアが必要です (kermit が適しているでしょう).

### 19.3.2. PPP クライアントとしての動作

わたしは, CISCO ターミナルサーバの PPP 回線に接続するために, 下記のような `/etc/ppp/options` を使用しています.

    crtscts         # enable hardware flow control
    modem           # modem control line
    noipdefault     # remote PPP server must supply your IP address.
                    # if the remote host doesn't send your IP during IPCP
                    # negotiation , remove this option
    passive         # wait for LCP packets
    domain ppp.foo.com      # put your domain name here

    :<remote_ip>    # put the IP of remote PPP host here
                    # it will be used to route packets via PPP link
                    # if you didn't specified the noipdefault option
                    # change this line to <local_ip>:<remote_ip>

    defaultroute    # put this if you want that PPP server will be your
                    # default router

接続方法:

1. kermit (またはその他のモデム操作プログラム) を使ってリモートホストに ダイヤルし, 接続してください. そして, あなたのユーザ名とパスワード (必要 であれば, その他にもリモートホストで PPP を有効にするための操作) を入力 します.

2. kermit を抜けてください. (回線を切断せずに)

3. 下記のように入力します:

       # /usr/src/usr.sbin/pppd.new/pppd /dev/tty01 19200

   (通信速度とデバイス名には, あなたの環境に適したものを入れてください)

これでこのコンピュータは PPP で接続されました. もし, なんらかの理由で 接続に失敗したならば, `/etc/ppp/options` ファイルに `debug` オプションを追加して, 問題点を突き止めるために, コンソールに表示される メッセージを調べてください.

下記の `/etc/ppp/pppup` スクリプトは, 上記の作業を すべて自動的におこないます:

    #!/bin/sh
    ps ax |grep pppd |grep -v grep
    pid=`ps ax |grep pppd |grep -v grep|awk '{print $1;}'`
    if [ "X${pid}" != "X" ] ; then
            echo 'killing pppd, PID=' ${pid}
            kill ${pid}
    fi
    ps ax |grep kermit |grep -v grep
    pid=`ps ax |grep kermit |grep -v grep|awk '{print $1;}'`
    if [ "X${pid}" != "X" ] ; then
            echo 'killing kermit, PID=' ${pid}
            kill -9 ${pid}
    fi

    ifconfig ppp0 down
    ifconfig ppp0 delete

    kermit -y /etc/ppp/kermit.dial
    pppd /dev/tty01 19200

`/etc/ppp/kermit.dial` は kermit 用のスクリプトで, ダイヤルして, リモートホストでの認証に必要なすべての処理をおこないます. (そのようなスクリプトの例は この文書の終わりに添付してあります)

PPP 接続を切断するには, 下記のような `/etc/ppp/pppdown` スクリプトを 使用します:

    #!/bin/sh
    pid=`ps ax |grep pppd |grep -v grep|awk '{print $1;}'`
    if [ X${pid} != "X" ] ; then
            echo 'killing pppd, PID=' ${pid}
            kill -TERM ${pid}
    fi

    ps ax |grep kermit |grep -v grep
    pid=`ps ax |grep kermit |grep -v grep|awk '{print $1;}'`
    if [ "X${pid}" != "X" ] ; then
            echo 'killing kermit, PID=' ${pid}
            kill -9 ${pid}
    fi

    /sbin/ifconfig ppp0 down
    /sbin/ifconfig ppp0 delete
    kermit -y /etc/ppp/kermit.hup
    /etc/ppp/ppptest

PPP が動作中かどうかを調べます (`/usr/etc/ppp/ppptest`):

    #!/bin/sh
    pid=`ps ax| grep pppd |grep -v grep|awk '{print $1;}'`
    if [ X${pid} != "X" ] ; then
            echo 'pppd running: PID=' ${pid-NONE}
    else
            echo 'No pppd running.'
    fi
    set -x
    netstat -n -I ppp0
    ifconfig ppp0

モデム回線を切断します (`/etc/ppp/kermit.hup`):

    set line /dev/tty01    ; put your modem device here
    set speed 19200
    set file type binary
    set file names literal
    set win 8
    set rec pack 1024
    set send pack 1024
    set block 3
    set term bytesize 8
    set command bytesize 8
    set flow none

    pau 1
    out +++
    inp 5 OK
    out ATH0\13
    echo \13
    exit

次は `kermit` の代わりに `chat` を使う方法です.

原作: Robert Huff `<rhuff@cybercom.net>`.

pppd 接続を確立するためには, 次の二つのファイルの設定だけで十分です.

`/etc/ppp/options`:

    /dev/cuaa1 115200

    crtscts     # enable hardware flow control
    modem       # modem control line
    connect "/usr/bin/chat -f /etc/ppp/login.chat.script"
    noipdefault # remote PPP serve must supply your IP address.
                # if the remote host doesn't send your IP during
                    # IPCP negotiation, remove this option
    passive         # wait for LCP packets
    domain <your.domain>  # put your domain name here

    :       # put the IP of remote PPP host here
                # it will be used to route packets via PPP link
                    # if you didn't specified the noipdefault option
                    # change this line to <local_ip>:<remote_ip>

    defaultroute    # put this if you want that PPP server will be
                # your default router

`/etc/ppp/login.chat.script`:

> Note: (実際には一行になります.)

    ABORT BUSY ABORT 'NO CARRIER' "" AT OK ATDT<phone.number>
     CONNECT "" TIMEOUT 10 ogin:-\\r-ogin: <login-id>
     TIMEOUT 5 sword: <password>

正しくインストールし編集した後は, 必要な事はこれだけです

    # pppd

このサンプルは主に Trev Roydhouse <Trev.Roydhouse@f401.n711.z3.fidonet.org> から寄せられた情報に基づいており, 承諾を得て使用しています.

### 19.3.3. PPP サーバとしての動作

`/etc/ppp/options`:

    crtscts                         # Hardware flow control
    netmask 255.255.255.0           # netmask ( not required )
    192.114.208.20:192.114.208.165  # ip's of local and remote hosts
                                    # local ip must be different from one
                                    # you assigned to the ethernet ( or other )
                                    # interface on your machine.
                                    # remote IP is ip address that will be
                                    # assigned to the remote machine
    domain ppp.foo.com              # your domain
    passive                         # wait for LCP
    modem                           # modem line

下記のような `/etc/ppp/pppserv` スクリプトで, そのマシンを PPP サーバにすることができます.

    #!/bin/sh
    ps ax |grep pppd |grep -v grep
    pid=`ps ax |grep pppd |grep -v grep|awk '{print $1;}'`
    if [ "X${pid}" != "X" ] ; then
            echo 'killing pppd, PID=' ${pid}
            kill ${pid}
    fi
    ps ax |grep kermit |grep -v grep
    pid=`ps ax |grep kermit |grep -v grep|awk '{print $1;}'`
    if [ "X${pid}" != "X" ] ; then
            echo 'killing kermit, PID=' ${pid}
            kill -9 ${pid}
    fi

    # reset ppp interface
    ifconfig ppp0 down
    ifconfig ppp0 delete

    # enable autoanswer mode
    kermit -y /etc/ppp/kermit.ans

    # run ppp
    pppd /dev/tty01 19200

PPP サーバを終了するには, この `/etc/ppp/pppservdown` スクリプト を使用します:

    #!/bin/sh
    ps ax |grep pppd |grep -v grep
    pid=`ps ax |grep pppd |grep -v grep|awk '{print $1;}'`
    if [ "X${pid}" != "X" ] ; then
            echo 'killing pppd, PID=' ${pid}
            kill ${pid}
    fi
    ps ax |grep kermit |grep -v grep
    pid=`ps ax |grep kermit |grep -v grep|awk '{print $1;}'`
    if [ "X${pid}" != "X" ] ; then
            echo 'killing kermit, PID=' ${pid}
            kill -9 ${pid}
    fi
    ifconfig ppp0 down
    ifconfig ppp0 delete

    kermit -y /etc/ppp/kermit.noans

下記の kermit スクリプトは, モデムの自動応答機能を有効, または無効にします (`/etc/ppp/kermit.ans`):

    set line /dev/tty01
    set speed 19200
    set file type binary
    set file names literal
    set win 8
    set rec pack 1024
    set send pack 1024
    set block 3
    set term bytesize 8
    set command bytesize 8
    set flow none

    pau 1
    out +++
    inp 5 OK
    out ATH0\13
    inp 5 OK
    echo \13
    out ATS0=1\13   ; change this to out ATS0=0\13 if you want to disable
                    ; autoanswer mod
    inp 5 OK
    echo \13
    exit

この `/etc/ppp/kermit.dial` スクリプトは, リモートホストに ダイヤルし, 認証手続きをするのに使用します. あなたは必要に応じて, これを 変更しないといけないでしょう. あなたのユーザ名とパスワードをこの スクリプトに書かなければいけませんし, モデムやリモートホストからの 応答によっては, 入力待ちの文を変更する必要もあります.

    ;
    ; put the com line attached to the modem here:
    ;
    set line /dev/tty01
    ;
    ; put the modem speed here:
    ;
    set speed 19200
    set file type binary            ; full 8 bit file xfer
    set file names literal
    set win 8
    set rec pack 1024
    set send pack 1024
    set block 3
    set term bytesize 8
    set command bytesize 8
    set flow none
    set modem hayes
    set dial hangup off
    set carrier auto                ; Then SET CARRIER if necessary,
    set dial display on             ; Then SET DIAL if necessary,
    set input echo on
    set input timeout proceed
    set input case ignore
    def \%x 0                       ; login prompt counter
    goto slhup

    :slcmd                          ; put the modem in command mode
    echo Put the modem in command mode.
    clear                           ; Clear unread characters from input buffer
    pause 1
    output +++                      ; hayes escape sequence
    input 1 OK\13\10                ; wait for OK
    if success goto slhup
    output \13
    pause 1
    output at\13
    input 1 OK\13\10
    if fail goto slcmd              ; if modem doesn't answer OK, try again

    :slhup                          ; hang up the phone
    clear                           ; Clear unread characters from input buffer
    pause 1
    echo Hanging up the phone.
    output ath0\13                  ; hayes command for on hook
    input 2 OK\13\10
    if fail goto slcmd              ; if no OK answer, put modem in command mode

    :sldial                         ; dial the number
    pause 1
    echo Dialing.
    output atdt9,550311\13\10               ; put phone number here
    assign \%x 0                    ; zero the time counter

    :look
    clear                           ; Clear unread characters from input buffer
    increment \%x                   ; Count the seconds
    input 1 {CONNECT }
    if success goto sllogin
    reinput 1 {NO CARRIER\13\10}
    if success goto sldial
    reinput 1 {NO DIALTONE\13\10}
    if success goto slnodial
    reinput 1 {\255}
    if success goto slhup
    reinput 1 {\127}
    if success goto slhup
    if < \%x 60 goto look
    else goto slhup

    :sllogin                        ; login
    assign \%x 0                    ; zero the time counter
    pause 1
    echo Looking for login prompt.

    :slloop
    increment \%x                   ; Count the seconds
    clear                           ; Clear unread characters from input buffer
    output \13
    ;
    ; put your expected login prompt here:
    ;
    input 1 {Username: }
    if success goto sluid
    reinput 1 {\255}
    if success goto slhup
    reinput 1 {\127}
    if success goto slhup
    if < \%x 10 goto slloop         ; try 10 times to get a login prompt
    else goto slhup                 ; hang up and start again if 10 failures

    :sluid
    ;
    ; put your userid here:
    ;
    output ppp-login\13
    input 1 {Password: }
    ;
    ; put your password here:
    ;
    output ppp-password\13
    input 1 {Entering SLIP mode.}
    echo
    quit

    :slnodial
    echo \7No dialtone.  Check the telephone line!\7
    exit 1

    ; local variables:
    ; mode: csh
    ; comment-start: "; "
    ; comment-start-skip: "; "
    ; end:

## 19.4. PPP オーバイーサネット (PPPoE) の利用

原作: Jim Mock `<jim@FreeBSD.org>` ( node.to より) 10 Jan 2000.

以下の解説は, PPPoE として知られる, PPP オーバイーサネットの設定法です.

### 19.4.1. 必要なもの

あなたのシステムで PPPoE を適切に機能させるためには, 以下のものが必要です.

- FreeBSD 3.4やそれより新しいバージョンのカーネルソース

- FreeBSD 3.4やそれより新しいバージョンのppp

### 19.4.2. カーネルコンフィギュレーション

以下に示すオプションをカーネルコンフィギュレーションファイルに 追加して, その後 新しいカーネルを コンパイルする必要があります.

- options NETGRAPH

以下は任意

- options NETGRAPH_PPPOE

- options NETGRAPH_SOCKET

この機能は実行時には有効ではありませんが, 要求に応じて ppp は関係のあるモジュールを 読み込みます.

### 19.4.3. `ppp.conf` の設定

これは動作している `ppp.conf` の 例です:

    default: # or name_of_service_provider
      set device PPPoE:xl1 # replace xl1 with your ethernet device
      set mru 1492
      set mtu 1492
      set authname YOURLOGINNAME
      set authkey YOURPASSWORD
      set log Phase tun command # you can add more detailed logging if you wish
      set dial
      set login
      set ifaddr 10.0.0.1/0 10.0.0.2/0
      add default HISADDR
      nat enable yes # if you want to enable nat for your local net

    papchap:
      set authname YOURLOGINNAME
      set authkey YOURPASSWORD

`-nat`オプションを付けてPPPoE を起動する際には注意するべきです.

### 19.4.4. PPP の起動

以下を root 権限において実行することで, 起動させることができます:

    # ppp -ddial name_of_service_provider

### 19.4.5. システム起動時に PPP を立ち上げる

`/etc/rc.conf` ファイルに以下の行を追加 してください:

    ppp_enable="YES"
    ppp_mode="ddial"
    ppp_nat="YES"
    ppp_profile="default" # or your provider

## 19.5. SLIP の利用

原作: 浅見 賢 `<asami@FreeBSD.org>`,Guy Helmer `<ghelmer@FreeBSD.org>`, 協力: Wilko Bulte `<wilko@FreeBSD.org>`, Piero Serini `<piero@FreeBSD.org>`.

訳: 花井 浩之 `<hanai@FreeBSD.org>` 1996 年 8 月 8 日.

### 19.5.1. SLIPクライアントのセットアップ

ここには FreeBSD マシンを静的アドレスのネットワークにつなげる場合の SLIPのセットアップの一つの方法を書いてあります. ホスト名を動的に割り当てる(つまり, ダイヤルアップするたびにアドレスが かわる)ためには, おそらくもっと凝ったことが必要です.

まず, モデムがどのシリアルポートにつながっているか決めましょう. 私は `/dev/cuaa1` から `/dev/modem`へというシンボリックリンクを張り, コンフィグレーションではその名前だけを使っています. `/etc` や`.kermrc` など, システム全体に散らばっているファイルを修正する 必要がでるとまったく煩わしいのです!

> Note: ここで, `/dev/cuaa0`は `COM1`であり, `cuaa1`は`COM2`です.

カーネルのコンフィグレーションファイルに

    pseudo-device   sl      1

という記述があるのを確認してください. これは `GENERIC` カーネルに含まれている ので削除していない限り大丈夫でしょう.

#### 19.5.1.1. 最初の設定

1. `/etc/hosts` ファイルにあなたのマシンのゲートウェイとネームサーバ を加えてください. 私のは以下のようになっています.

       127.0.0.1               localhost loghost
       136.152.64.181          silvia.HIP.Berkeley.EDU silvia.HIP silvia
       136.152.64.1            inr-3.Berkeley.EDU inr-3 slip-gateway
       128.32.136.9            ns1.Berkeley.edu ns1
       128.32.136.12           ns2.Berkeley.edu ns2

2. `/etc/host.conf` ファイル中で `hosts`が`bind` よりも前にあること を確認してください. さもないとヘンなことが起こるかもしれません.

3. `/etc/rc.conf` ファイルを編集してください. なお, お使いの FreeBSD が 2.2.2 よりも前のバージョンのものの場合は, `/etc/sysconfig` を編集してください.

   1. 行

          “hostname=myname.my.domain”

      を編集してホスト名をセットしてください. 完全なInternetホスト名を与えるべきです.

   2. 行

          “network_interfaces="lo0"”

      を

          “network_interfaces="lo0 sl0"”

      へ変更することにより ネットワークインタフェースのリストに sl0 を加えてください.

   3. 行

          ifconfig_sl0="inet ${hostname} slip-gateway netmask 0xffffff00 up"

      を加えて sl0 のスタートアップフラグをセットしてください.

   4. 行

          “defaultrouter=NO”

      を

          “defaultrouter=slip-gateway”

      へ変更してデフォルトのルータを 指定してください.

4. 次の

       domain HIP.Berkeley.EDU
       nameserver 128.32.136.9
       nameserver 128.32.136.12

   という内容を含むファイル `/etc/resolv.conf` を作ってください. 見ればわかるように, これらはネームサーバホストを設定しています. もちろん, 実際のドメイン名やアドレスは あなたの環境に依存します.

5. root と toor (及びパスワードを持っていない他のアカウントすべて) のパスワード を設定してください. passwdコマンドを使いましょう. `/etc/passwd` や `/etc/master.passwd` といったファイルを編集してはいけません!

6. マシンを再起動して正しいホスト名で 立ち上がることを確認してください.

#### 19.5.1.2. SLIP接続をおこなう

1. モデムを起動, つながったらプロンプトで `slip`とタイプし, マシン名と パスワードを入力してください. 入力する必要があるものは環境に よって異なります. 私は次のようなスクリプトでkermitを使っています.

       # kermit setup
       set modem hayes
       set line /dev/modem
       set speed 115200
       set parity none
       set flow rts/cts
       set terminal bytesize 8
       set file type binary
       # The next macro will dial up and login
       define slip dial 643-9600, input 10 =>, if failure stop, -
       output slip\x0d, input 10 Username:, if failure stop, -
       output silvia\x0d, input 10 Password:, if failure stop, -
       output ***\x0d, echo \x0aCONNECTED\x0a

   (もちろん, ホスト名とパスワードは変える必要があります). 接続するためには kermit のプロンプトで `slip`とタイプするだけです.

   > Note: ファイルシステムのどんなところにもプレインテキスト にパスワードを書いておくのは一般的にはよくありません. 覚悟の上で やってください. 私は単に不精なだけです.

2. ここでkermitから抜け出し (`z`でkermitをサスペンドできます), root で

       # slattach -h -c -s 115200 /dev/modem

   と入力しましょう. もしルータの向う側のホストへ `ping` できるなら接続成功です! もしうまく いかなければslattachへの引数として `-c` の代わりに`-a`とやってみてください.

#### 19.5.1.3. 接続の切り方

slattachを殺すためにrootで

    # kill -INT `cat /var/run/slattach.modem.pid`

とタイプしてください. そして kermit に戻り (もしkermitをサスペンドしていたなら `fg`), kermitから抜けてください (`q`).

slattachのマニュアルページにはインタフェースを落すために `ifconfig sl0 down`をしなければいけないと書いていますが, 私には差がないように見えます. (`ifconfig sl0`とやっても同じ結果が得られる.)

時にはモデムがキャリアを落すのを 拒絶するかもしれません(私のは よくそうなります). その時は単にkermitをスタートしてまた終了 してください. 普通は2回目で落ちます.

#### 19.5.1.4. トラブルシューティング

もし動かなければ自由に私に質問してください. 今までいろんな人がつまずいた のは次のようなことです.

- slattach で `-c` や `-a` を使わなかった(私はなぜこれが致命的になり得るのか わかりませんが, このフラグを付けることで少なくとも一人の 問題は解決しました.)

- `sl0` の代わりに `s10` を使った(いくつかのフォントでは見分けるのは難しい かもしれません).

- インタフェースの状態を見るために `ifconfig sl0` をやってみてください. 私は,

      # ifconfig sl0
      sl0: flags=10<POINTOPOINT>
              inet 136.152.64.181 --> 136.152.64.1 netmask ffffff00

  となります.

- また, pingが “no route to host” というメッセージを返す時には `netstat -r`でルーティングテーブルを確認しましょう. 私のは,

      # netstat -r
      Routing tables
      Destination      Gateway            Flags     Refs     Use  IfaceMTU    Rtt
      Netmasks:
      (root node)
      (root node)

      Route Tree for Protocol Family inet:
      (root node) =>
      default          inr-3.Berkeley.EDU UG          8   224515  sl0 -      -
      localhost.Berkel localhost.Berkeley UH          5    42127  lo0 -       0.438
      inr-3.Berkeley.E silvia.HIP.Berkele UH          1        0  sl0 -      -
      silvia.HIP.Berke localhost.Berkeley UGH        34 47641234  lo0 -       0.438
      (root node)

  となります. (これはたくさんのファイルを転送した後でのもので, あなたの見る数字はもっと小さいかも しれません).

### 19.5.2. SLIPサーバのセットアップ方法

訳: 冨田 重成 `<ts@icu.ac.jp>`. 1996 年 9 月 6 日.

この文書の目的は, SLIPサーバ機能を FreeBSDシステムのもとで設定するため の助言を提供することです. SLIPサーバ機能を設定するということは, リモー トの SLIPクライアントがログインできるようにするために, 自動的に接続処 理をおこなうようにすることです. この文書は著者の経験に基づいておりますが, 実際のシステム構成や要望は異なりますから, すべての疑問にこの文書が答え ることはできません. なお, ここでの助言を試みた結果, あなたのシステムへ の悪影響やデータの損失が生じたとしても, 著者が責任を持つことはできませ んのでご了解をお願いします.

#### 19.5.2.1. 前提

この文書の内容はテクニカルなものなので, 前提知識が必要です. すなわち, TCP/IPネットワークプロトコルについての知識, 特に, ネットワークとノード のアドレス指定をはじめ, ネットワークアドレスマスク, サブネット化, ルー ティング, および RIPなどのルーティングプロトコルなどに関する知識を前提 としています. ダイヤルアップサーバで SLIP機能を設定するためには, これ らの概念についての知識が必要ですから, もし不案内であると思われる方は, O'Reilly & Associates, Inc.から出版されている Craig Hunt氏の TCP/IP Network Administration (ISBN 0-937175-82-X)か, または Douglas Comer氏の TCP/IPプロトコルに関する一連の書籍をお読みください.

前提知識に加え, さらに, モデムの設定が完了しており, そのモデムを経由し てログインできるように, システムファイル群が適切に記述できているものと 仮定しています. もしモデムの準備ができていないときには, あらかじめダイヤ ルアップ機能の設定についてのチュートリアルをお読みください. Webブラ ウザが使えるのであれば http://www.FreeBSD.org/ におけるチュー トリアルの一覧を調べてください. あるいは, この文書を見つけた場所を調べ て, `dialup.txt` やそれに類似した名前の文書をお読みください. 関連す るマニュアルページとしては, シリアルポート向けデバイスドライバについて の sio(4) をはじめ, モデムからのログインを 受理できるようにシステ ムを設定するための ttys(5), gettytab(5), getty(8), init(8) など, さらには, シリアルポート関連パラメータ ( たと えば直接接続シリアルインタフェースの `clocal` ) についての stty(1) なども助けになるかもしれません.

#### 19.5.2.2. 概要

一般的な設定内容で FreeBSDを SLIPサーバとして利用すると, その動作は次 のようになります. まず, SLIPユーザが FreeBSD による SLIPサーバへ電話し て, SLIP専用IDでログインします. なお, このIDを持ったユーザはシェルとし て `/usr/sbin/sliplogin` を使います. この `sliplogin` は, ファイル `/etc/sliphome/slip.hosts` の中から, ログインIDと一致する 記述行を探します. もし一致する行があれば, ログインしたシリアル回線を, 利用可能な SLIPインタフェースへ接続し, その後にシェルスクリプト `/etc/sliphome/slip.login` で SLIPインタフェースを設定します.

##### 19.5.2.2.1. SLIPサーバへのログイン例

仮に SLIPユーザIDが `Shelmerg` とします. すると, `/etc/master.passwd` における `Shelmerg` のエントリは次のよ うなものになります (実際には一つの行に続いている) .

    Shelmerg:password:1964:89::0:0:Guy Helmer - SLIP:/usr/users/Shelmerg:/usr/sbin/sliplogin

`Shelmerg` がログインすると, `sliplogin` は, ファイル `/etc/sliphome/slip.hosts` からユーザIDと一致する行を探しま す. いま仮に, `/etc/sliphome/slip.hosts` に次のような記述がなされていたとします.

    Shelmerg        dc-slip sl-helmer       0xfffffc00      autocomp

`sliplogin` が上記のエントリを見つけると, Shelmerg が使用して いるシリアル回線を, 利用可能な SLIPインタフェースのなかの最初のものへ 接続し, 次の内容の `/etc/sliphome/slip.login` を実行します.

    /etc/sliphome/slip.login 0 19200 Shelmerg dc-slip sl-helmer 0xfffffc00 autocomp

もし上記の手順が正常に処理されると, `/etc/sliphome/slip.login` は, `sliplogin` が割り当てた SLIPインタフェース (この例では `slip.login` で与えられたパラメータのうちで最初の値である SLIP インタフェース0である) に対して `ifconfig` を実行し, ローカル IPアドレス (`dc-slip`)をはじめ, リモート IPアドレス (`sl-helmer`), SLIPインタフェースへのネットワークマスク (`0xfffffc00`), およびその他のフラグ (`autocomp`)を設定 します. 逆に, さきほどの手順が正常に終了しなかった場合, 通常は `sliplogin` は十分な情報を syslog の `daemon` 機能経由で `/var/log/messages` へ記録します ( syslogd(8) や syslog.conf(5) のマニュアルページを参照のうえ, さらに `/etc/syslog.conf` を調べて `syslogd` がどのファイルへ記 録するかを確認のこと) .

例はこのくらいにして, さっそくシステムのセットアップを始めてみましょう.

#### 19.5.2.3. カーネルのコンフィグレーション

FreeBSD のデフォルトのカーネルには, 通常, 二つの SLIPインタフェースが 準備されています (`sl0` と `sl1`) . これらのインタフェー スが使用中のカーネルに準備されているかどうかを調べるには, `netstat -i` を実行してください.

`netstat -i` の出力例

    Name  Mtu   Network     Address            Ipkts Ierrs    Opkts Oerrs  Coll
    ed0   1500  <Link>0.0.c0.2c.5f.4a         291311     0   174209     0   133
    ed0   1500  138.247.224 ivory             291311     0   174209     0   133
    lo0   65535 <Link>                            79     0       79     0     0
    lo0   65535 loop        localhost             79     0       79     0     0
    sl0*  296   <Link>                             0     0        0     0     0
    sl1*  296   <Link>                             0     0        0     0     0

`netstat -i` の出力に `sl0` と `sl1` のインタフェー スが含まれているということから, カーネルには二つの SLIPインタフェー スが組み込まれているということを示しています. (`sl0` と `sl1` に付いたアスタリスクは, `netstat -i` の実行時点で はインタフェースが “ダウン” していることを表しています. )

なお, パケットのフォワード機能は FreeBSD のデフォルトのカーネルでは設定 されていません (すなわちルータとしては動作しない) . もしインターネット 接続ホストについての RFC要件 ( RFC 1009 [Requirements for Internet Gateways] と 1122 [Requirements for Internet Hosts -- Communication Layers], おそらく 1127 [A Perspective on the Host Requirements RFCs] も ) に準拠して, FreeBSDによる SLIPサー バをルータとして動作させたいときには, `/etc/rc.conf` (バージョ ン 2.2.2 より前の FreeBSD では `/etc/sysconfig`) ファイル の `gateway_enable` 変数を `YES` としてください. もし古いシステ ムで `/etc/sysconfig` ファイルすらないときには, 次のコマン ドを `/etc/rc.local` へ追加してください.

    sysctl -w net.inet.ip.forwarding = 1

この新しい設定を有効とするには, リブートする必要があります.

デフォルトのカーネルコンフィグレーションファイル (`/sys/i386/conf/GENERIC`) の最後の部分に, 次のような行がありま す.

    pseudo-device sl 2

この行によって, 使用可能な SLIPデバイスの総数が決まります. すなわち, 行 末の数値が, 同時に動作可能な SLIP接続の最大数となります.

カーネルの再構築については, FreeBSDカー ネルのコンフィグレーション を参照ください.

#### 19.5.2.4. Sliploginのコンフィグレーション

すでにご説明したように, `/usr/sbin/sliplogin` のコンフィグレー ションのために, 3種類のファイルが`/etc/sliphome` ディレクトリに あります (`sliplogin` についての実際のマニュアルページとしては sliplogin(8) を参照のこと) . ファイル `slip.hosts` は SLIPユーザおよびその IPアドレスを決めます. 通常, ファイル `slip.login` は, SLIPインタフェースを設定することだけに使 用します. `slip.logout` はオプションのファイルで, `slip.login` で設定した内容を, シリアル接続が終了した時点で解除 するときに使用します.

##### 19.5.2.4.1. `slip.hosts` のコンフィグレーション

`/etc/sliphome/slip.hosts` には, 少なくとも 4 つの項目をホワイ トスペース (スペースやタブ) で区切って指定します.

- SLIPユーザのログインID

- SLIPリンクのローカル (SLIPサーバ側) アドレス

- SLIPリンクのリモートアドレス

- ネットワークマスク

ホスト名をローカルおよびリモートのアドレスとして 記述できます (IPアドレ スの決定は, `/etc/host.conf` の指定内容に応じて, `/etc/hosts` か DNSのいずれかによって決定される) . また, ネット ワークマスクも `/etc/networks` ファイルに記述された名前を参照す ることで, 指定することもできると思います. これまでの例としてあげたシス テムでの `/etc/sliphome/slip.hosts` は次のようになります.

    #
    # login local-addr      remote-addr     mask            opt1    opt2
    #                                               (normal,compress,noicmp)
    #
    Shelmerg  dc-slip       sl-helmerg      0xfffffc00      autocomp

それぞれの行の最後には, 次に示すオプションを一つ以上指定できます.

- `normal` -- ヘッダを圧縮しない

- `compress` -- ヘッダを圧縮する

- `autocomp` -- リモートの設定に応じて, ヘッダを圧縮する

- `noicmp` -- ICMPパケットを禁止する ( “ping” パケットは送出されず, バンド幅を占有しない)

なお, FreeBSDバージョン2の初期リリースの `sliplogin` は, 旧 FreeBSD 1.xでは有効であった上記のオプションを無視していましたので, `normal`, `compress`, `autocomp`, そして `noicmp` などのオプションは FreeBSD 2.2でサポートされるまでは効果がありませんでした (た だしこれらのフラグを使うためには `slip.login` スクリプトへ記述する 必要がある) .

SLIPリンクでのローカルとリモート向けのアドレスの 選び方は, TCP/IPサブネッ トを専用に割り当てるか, または “プロキシ ARP” を SLIPサーバへ用いるかによって違います ( “プロキシ ARP” という用語のここでの使い方は本来のものではないが, 説明のためにこの用語を使う) . もし, どちらの方式を選ぶべきか判らなかったり, IPアドレスの割り当て方が不明のときには, 上述の 前提 の節で紹介した TCP/IP関連書籍を参考になさるか, またはあなたの IPネットワークを管理している方に相談なさると よいでしょう.

独立したサブネットを SLIPクライアントへ適用するときには, すでに割り当てられている IPネットワーク番号の範囲からサブネット番号を割り当て, 同 時にそのサブネットの範囲内で有効な IPアドレスを SLIPクライアントの IP 番号として割り当てる必要があります. さらに, この SLIPサブネットから SLIPサーバを経由して最も近い IPルータへの経路を静的に設定するか, または `gated` を FreeBSDによる SLIPサーバへインストールして, 適当 なルーティングプロトコルを使って, SLIPサーバ経由のサブネットへの経路情 報をルータ群へ通知できるように設定するか, のいずれかをおこなう必要があります.

“プロキシ ARP” 方式を採用するときには, SLIPクライアント向けの IPアドレス として, SLIPサーバのサブネットの範囲から 選んで割り当てるとともに, arp(8) コマンドを使うために `/etc/sliphome/slip.login` と`/etc/sliphome/slip.logout` のスクリプトを修正して, SLIPサー バにおける ARPテーブル内のプロキシ ARPエントリへ 反映させる必要がありま す.

##### 19.5.2.4.2. `slip.login` のコンフィグレーション

ファイル `/etc/sliphome/slip.login` の一般的な内容は次にようになります.

    #!/bin/sh -
    #
    #   @(#)slip.login  5.1 (Berkeley) 7/1/90

    #
    # generic login file for a slip line.  sliplogin invokes this with
    # the parameters:
    #      1        2         3        4          5         6     7-n
    #   slipunit ttyspeed loginname local-addr remote-addr mask opt-args
    #
    /sbin/ifconfig sl$1 inet $4 $5 netmask $6

この `slip.login` ファイルの役目は単に, SLIPインタフェースにつ いてのローカルとリモートのアドレス, およびそのネットワークマスクを `ifconfig` コマンドで設定することです.

もし “プロキシ ARP” 方式を採用する (SLIPクライアントへ独立したサブネットを使わない) ときには, ファイル `/etc/sliphome/slip.login` は次のような内容になります.

    #!/bin/sh -
    #
    #   @(#)slip.login  5.1 (Berkeley) 7/1/90

    #
    # generic login file for a slip line.  sliplogin invokes this with
    # the parameters:
    #      1        2         3        4          5         6     7-n
    #   slipunit ttyspeed loginname local-addr remote-addr mask opt-args
    #
    /sbin/ifconfig sl$1 inet $4 $5 netmask $6
    # Answer ARP requests for the SLIP client with our Ethernet addr
    /usr/sbin/arp -s $5 00:11:22:33:44:55 pub

この `slip.login` で追加された行 `arp -s $5 00:11:22:33:44:55 pub` は, SLIPサーバにおける ARPテーブルへ新たなエントリを作ります. SLIPサーバ は, この ARPエントリが作られると, SLIPクライアントの IPアドレスと話し たい他の IPノードが要求してきたときにはいつも, SLIPサーバ の Ethernet MACアドレスを返すようになります.

上記の例を実際に流用なさるときには, 例にある Ethernet MACアドレス (`00:11:22:33:44:55`) を, あなたのシステムの実際のEthernetカー ドの MACアドレスと置き換えなければ “プロキシ ARP” はうまく動作しません! SLIPサーバの Ethernet MACアドレスを調べるには `netstat -i` コマ ンドを利用してください. 実行結果の第2行は次のようなものになるはずです.

    ed0   1500  <Link>0.2.c1.28.5f.4a         191923     0   129457     0   116

この例での Ethernet MACアドレスは `00:02:c1:28:5f:4a` であると 読みます. なお arp(8) における MAC アドレスの指定に際しては, コマンド `netstat -i` が付けた Ethernet MACアドレスのピリオド記 号をコロン記号と置き換え, かつ単一桁の 16 進数にはゼロを先頭に加える必 要があります. この指定についての正確な情報は arp(8) を参照く ださい.

> Note: `/etc/sliphome/slip.login` と `/etc/sliphome/slip.logout` を作成したならば, ファイル属性の “実行” ビット (すなわち `chmod 755 /etc/sliphome/slip.login /etc/sliphome/slip.logout`) を 設定しなければなりません. さもなければ `sliplogin` が うまく実行されません.

##### 19.5.2.4.3. `slip.logout` のコンフィグレーション

ファイル `/etc/sliphome/slip.logout` は必ずしも必要なものではあ りません (ただし “プロキシ ARP” を利用する場合を除く) . もしこのファイルを 作成するときには, 次に示す標準的な `slip.logout` スクリプト例を 参考にしてください.

    #!/bin/sh -
    #
    #   slip.logout

    #
    # logout file for a slip line.  sliplogin invokes this with
    # the parameters:
    #      1        2         3        4          5         6     7-n
    #   slipunit ttyspeed loginname local-addr remote-addr mask opt-args
    #
    /sbin/ifconfig sl$1 down

“プロキシ ARP” を利用する場合, この `/etc/sliphome/slip.logout` を 使って, 特定の SLIPクライアント向けの ARPエントリを削除したくなるようなときがあります.

    #!/bin/sh -
    #
    #       @(#)slip.logout

    #
    # logout file for a slip line.  sliplogin invokes this with
    # the parameters:
    #      1        2         3        4          5         6     7-n
    #   slipunit ttyspeed loginname local-addr remote-addr mask opt-args
    #
    /sbin/ifconfig sl$1 down
    # Quit answering ARP requests for the SLIP client
    /usr/sbin/arp -d $5

コマンド `arp -d $5` は, SLIPクライアントがログインした 際に, “プロキシ ARP” を使った `slip.login` によって追加され た ARPエントリを削除します.

これによって, 繰り返して利用することができるわけです. 必ず, `/etc/sliphome/slip.logout` を作成した後に, 実行ビットを設定し てください ( `chmod 755 /etc/sliphome/slip.logout` ) .

#### 19.5.2.5. ルーティングについての考慮点

“プロキシ ARP” 方式を利用せずに SLIPクライアントとその他のネットワーク (Internetも含む) の構成要素との間でパケットをルーティングするときには, SLIPサーバ経由で SLIPクライアントが属するサブネットまでの経路を, 最も 近いデフォルトのルータ群へ静的な経路情報として 追加しなければならないか, または `gated` を FreeBSDによる SLIPサーバへインストールして, SLIP サブネットについての経路情報を, 適当なルーティングプロトコルでルー タ群へ通知できるように設定するか, のどちらかをおこなわなければなりません.

##### 19.5.2.5.1. 静的な経路

静的な経路を最も近いデフォルトの ルータ群へ追加することが困難なことがあ ります (経路情報を追加できる権限がなければそもそも不可能となる). もし あなたの組織に複数のルータで構成された ネットワークがあるならば, ある種 のルータ (たとえば Ciscoや Proteonなど) は, 静的な経路を SLIPサブネッ トへ使うようにルータを設定しなければならないだけでなく, その静的経路を 他のどのルータへ知らせるのかもあらかじめ 指定しておく必要がありますから, 静的経路に基づくルーティングを軌道に乗せるには それなりの専門的技術やト ラブルシューティングやコツが必要だと思います.

##### 19.5.2.5.2. `gated`の稼働

静的経路についての頭痛への代替手段は, `gated` を FreeBSDによる SLIPサー バへインストールして, 適切なルーティングプロトコル (RIP/OSPF/BGP/EGP) を使って SLIPサブネットについての経路情報を他のルータへ知らせるように 設定することです. ports コレクションから `gated` を用いることもできますし, GateD 匿名 FTP サイト から探して自分自身で構築することもで きます. この文章を執筆時点の最新バージョンは `gated-R3_5Alpha_8.tar.Z` であり, このファイル “だけで” FreeBSDで 動作させることができます. `gated` についてのすべての情報と文書 は Merit GateD コンソーシアム からはじまる Web 上で入手でき ます. `gated` のコンパイルとインストールを行ったならば, 独自の 設定のために `/etc/gated.conf` ファイルを記述してください. 次の 例は, 筆者が FreeBSDによる SLIP サーバで使っている内容と類似のものです.

    #
    # gated configuration file for dc.dsu.edu; for gated version 3.5alpha5
    # Only broadcast RIP information for xxx.xxx.yy out the ed Ethernet interface
    #
    #
    # tracing options
    #
    traceoptions "/var/tmp/gated.output" replace size 100k files 2 general ;

    rip yes {
     interface sl noripout noripin ;
     interface ed ripin ripout version 1 ;
     traceoptions route ;
    } ;

    #
    # Turn on a bunch of tracing info for the interface to the kernel:
    kernel {
     traceoptions remnants request routes info interface ;
    } ;

    #
    # Propagate the route to xxx.xxx.yy out the Ethernet interface via RIP
    #

    export proto rip interface ed {
            proto direct {
                    xxx.xxx.yy mask 255.255.252.0 metric 1; # SLIP connections
            } ;
    } ;

    #
    # Accept routes from RIP via ed Ethernet interfaces

    import proto rip interface ed {
            all ;
    } ;

この `gated.conf` ファイルの例では, SLIPのサブネット `xxx.xxx.yy` についての経路情報を RIPを使って Ethernetへブロー ドキャストしています. もし `ed` ドライバ以外の Ethernetドライバを使うのであれば, `ed` インタフェースの記述を適切なものに置き換えてくだ さい. またこの例では, `gated`の動作をデバッグするために, `/var/tmp/gated.output` へトレース情報を出力するように指示して います. `gated` が希望通りに動作したならば, このトレースオプショ ンを止めることができます. なお, 例における `xxx.xxx.yy` を, あ なた自身の SLIPサブネットのネットワークアドレスに換えてください (また `proto direct` 部分のネットワークマスクも換えることを忘れないこ と) .

`gated` のコンパイルとインストールが終了し, コンフィグレーショ ンファイルの作成も完了したら, FreeBSDシステムではデフォルトの `routed`に代わって `gated` を起動してください. そのため には, `/etc/netstart` の `routed/gated` 起動パラメータを 適切な値に設定してください. `gated` のコマンドラインパラメータにつ いての情報は, `gated` のマニュアルページを参照してください.

# Chapter 20. 電子メール

原作: Bill Lloyd. 改訂: Jim Mock.

訳: 田中 美穂子 `<Mihoko_Tanaka@yokogawa.co.jp>`. 14 January 1997.

## 20.1. この章では

“電子メール”、email としてのほうが知られているでしょう、 は現代で最も広く利用されているコミュニケーション手段の一つです。 この章では FreeBSD 上でメールサーバを実行するための基本的な導入を説明します。 しかし、この文書は完璧な参考文献ではなく、 実際のところ考慮すべき重要な点の多くが省略されています。 この件について、より網羅したものについては Appendix B に掲載されている多くの優れた書籍を参照してください。

この章では、以下の分野について説明します。

- 電子メールの送受信に関係しているソフトウェアの構成要素

- FreeBSD における sendmail の基本的な設定ファイルのある場所

- スパマーがあなたのメールサーバを踏台として不正に使用することを防ぐ方法

- あなたのシステムに sendmail の置き換えとなる代替の MTA をインストールして設定する方法

- メールサーバにまつわる共通の問題の解決法

- UUCP とともに SMTP を使う方法

- ダイアルアップ接続でメールを使う方法

- セキュリティを向上するために SMTP 認証を設定する方法

この章を読む前に、以下のことを理解しておく必要があります。

- ネットワーク接続の適切な設定方法 (Chapter 21)

- あなたのメールホストに対する DNS 情報の適切な設定方法 (Chapter 21)

- サードパーティ製ソフトウェアのインストール方法 (Chapter 4)

## 20.2. 電子メールを使う

email の交換には 5 つの主要な部分があります。 それらは ユーザープログラム 、 サーバーデーモン、 DNS、 POP もしくは IMAP のデーモン、 そしてもちろん メールホストです。

### 20.2.1. ユーザープログラム

いくつか名前を挙げれば、 mutt, pine, elm そして mail といったコマンドラインプログラムや balsa, xfmail のような GUI プログラム、WWW ブラウザーのようにさらに “洗練された” ものまであります。 これらのプログラムは、email の処理を server daemons を呼び出したり TCP 経由で渡したり、といった手段でローカルの “メールホスト” に任せるだけです。

### 20.2.2. メールホストサーバデーモン

通常、これは sendmail (FreeBSD のデフォルト) や qmail, postfix もしくは exim といった他のメールサーバーデーモンの一つです。 他にもあるのですが、以上のものが広く使われています。

サーバーデーモンは通常 2 つの機能 -- やってくるメールを受け取るのと出ていくメールを配送する、 を持っています。メールを読むために POP や IMAP で接続する、 ということはできません。 そのためにはもう一つデーモンが必要なのです。

いくつかの古いバージョンの sendmail には深刻なセキュリティ問題がありますが、 現在のバージョンを使っていれば特に問題ないことに注意してください。 例のごとく、 どんなソフトウェアを利用する時にも最新の状態にしておくのが大事なのです。

### 20.2.3. Email と DNS

Domain Name System (DNS) とそのデーモンである `named` は email の配送において大変重要な役割を担ってます。 あなたのサイトからもう一つのサイトへメールを配送するためには、 サーバーデーモンは DNS からそのサイトを探し、 メールの受け取り先のホストを決定します。

メールがあなたに送られた場合にも同じような仕組みになっています。 DNS にはホスト名と IP アドレス、ホスト名とメールホストをマッピングするデータベースがあります。 IP アドレスは A レコードで指定されます。 MX (Mail eXchanger) レコードはあなた宛のメールを受け取るホストを指定します。 あなたのホスト名に対する MX レコードがない場合には、 メールは直接あなたのホストに配送されます。

### 20.2.4. メールの受け取り

メールはメールホストが受け取ります。 このホストは送られてきたメールを集め、 (ユーザーが) 読んだりピックアップしたりするために保存します。 保存されているメールをピックアップするにはメールホストに接続する必要があります。 これは POP や IMAP を用いて行なわれます。 メールホスト上で直接メールを読みたい時は POP や IMAP のサーバーは必要ありません。

POP や IMAP のサーバーを走らせるためには 2 つのことをやらなければいけません。

1. POP や IMAP のデーモンを ports コレクション からインストールします。

2. `/etc/inetd.conf` を修正して POP や IMAP のサーバーが起動されるように設定します。

### 20.2.5. メールホスト

メールホストとは責任をもってメールを配送したり、 あなたのホストや、もしかするネットワークも、に宛てたメールを受け取ったりするホストに与えられる名前です。

## 20.3. sendmail の設定

寄稿: Christopher Shumway.

sendmail(8) は FreeBSD のデフォルトの メールトランスファエージェント (MTA) です。 sendmail の仕事はメールユーザエージェント (MUA) からのメールを受け取り、 それを設定ファイルで定義された適当なメーラに届けることです。 sendmail はネットワーク接続を受け入れて、 ローカルのメールボックスにメールを届けたり 別のプログラムにメールを渡したりもできます。

sendmail は次の設定ファイルを使用します。

ファイル名 | 機能
--- | ---
`/etc/mail/access` | sendmail アクセスデータベースファイル
`/etc/mail/aliases` | メールボックスエイリアス
`/etc/mail/local-host-names` | sendmail が受け付ける配送先ホストのリスト
`/etc/mail/mailer.conf` | メーラプログラムの設定
`/etc/mail/mailertable` | メーラ配送表
`/etc/mail/sendmail.cf` | sendmail の主設定ファイル
`/etc/mail/virtusertable` | 仮想ユーザおよび仮想ドメイン表

### 20.3.1. `/etc/mail/access`

アクセスデータベースは、 どのホストまたは IP アドレスがローカルメールサーバに接続できるか、 そして接続の種類は何か、ということを定義します。 ホストは `OK`, `REJECT`, `RELAY` として指定できます。 または、メーラエラーを指定することで、 単に sendmail の エラー処理ルーチンに渡されます。 `OK` として指定されたホスト (これはデフォルトです) は、 メールの最終宛先がローカルマシンである限り、 このホストへメールを送ることを認められます。 `REJECT` として指定されたホストは、 すべてのメール接続を拒絶されます。 ホスト名に対して `RELAY` オプションを指定されたホストは、 このメールサーバを通過して任意の宛先へメールを送ることを認められます。

Example 20-1. sendmail アクセスデータベースの設定

    cyberspammer.com                550 We don't accept mail from spammers
    FREE.STEALTH.MAILER@            550 We don't accept mail from spammers
    another.source.of.spam          REJECT
    okay.cyberspammer.com           OK
    128.32                          RELAY

この例では五つのエントリがあります。 表の左側に当てはまるメール送信者は、表の右側の動作に支配されます。 はじめの二つの例は、エラーコードを sendmail のエラー処理ルーチンに渡します。 メールが表の左側に当てはまると、リモートホストにそのメッセージが表示されます。 次のエントリは `another.source.of.spam` というインターネット上の特定のホストからのメールを拒絶します。 次のエントリは `okay.cyberspammer.com` からのメール接続を受け入れます。 このエントリは上にある `cyberspammer.com` という行よりもさらに厳密です (厳密に一致すればするほど、そうでないものより優先されます)。 最後のエントリは `128.32` から始まる IP アドレスのホストからの電子メールのリレーを認めます。 これらのホストは他のメールサーバに到達できるこのメールサーバを使ってメールを送ることができるでしょう。

このファイルを変更したら、 データベースを更新するために `/etc/mail/` ディレクトリで `make` コマンドを実行する必要があります。

### 20.3.2. `/etc/mail/aliases`

エイリアスデータベースには、 他のユーザ、ファイル、プログラムまたは他のエイリアスに展開される 仮想的なメールボックスの一覧が記載されています。 `/etc/mail/aliases` において使用できる例をいくつかあげます。

Example 20-2. メールエイリアス

    root: localuser
    ftp-bugs: joe,eric,paul
    bit.bucket:  /dev/null
    procmail: "|/usr/local/bin/procmail"

ファイル形式はシンプルです。 コロンの左側にあるメールボックス名は、右側のターゲットに展開されます。 はじめの例は単純に `root` のメールボックスを `localuser` のメールボックスに展開し、 それからエイリアスデータベースをもう一度調べます。 一致するエントリがなければメッセージはローカルユーザである `localuser` に配送されます。 次の例はメールリストです。 `ftp-bugs` のメールボックスへのメールは `joe`, `eric` および `paul` の三つのローカルメールボックスに展開されます。 リモートメールボックスは `user@example.com` のように指定できることに注意してください。 次の例はメールをファイル、この場合 `/dev/null` に書き込みます。 最後の例はメールをプログラムに送ります。 この場合メールのメッセージは UNIX パイプを通じて `/usr/local/bin/procmail` の標準入力に書き込まれます。

このファイルを変更したら、 データベースを更新するために`/etc/mail/` ディレクトリで `make` コマンドを実行する必要があります。

### 20.3.3. `/etc/mail/local-host-names`

これは sendmail(8) がローカルホスト名として認めるホスト名のリストです。 sendmail がメールを受け取るすべてのドメインやホストにこのファイルを置いてください。 たとえば、このメールサーバは `example.com` というドメインおよび `mail.example.com` というホストへのメールを受け取るとすると、 `local-host-names` ファイルの内容は次のようになるでしょう。

    example.com
    mail.example.com

このファイルを更新したら、変更を読み込むために sendmail(8) を再起動する必要があります。

### 20.3.4. `/etc/mail/sendmail.cf`

sendmail の主設定ファイルである `sendmail.cf` は、電子メールアドレスの書き換えから、 リモートメールサーバへ拒絶メッセージを送ることまで sendmail の全般的な動作をすべて制御します。 当然、そのようなさまざまな役割によりこの設定ファイルは大変複雑で、 その詳細についてはこの節の少し範囲外です。好運なことに、 標準的な構成のメールサーバではこのファイルをめったに変更する必要はありません。

sendmail の主設定ファイルは sendmail の機能と動作を決定する m4(1) マクロから構築できます。 詳細については `/usr/src/contrib/sendmail/cf/README` を参照してください。

このファイルを更新したら、その変更を反映するために sendmail を再起動する必要があります。

### 20.3.5. `/etc/mail/virtusertable`

`virtusertable` は仮想ドメインおよび仮想メールボックスに対するアドレスを実際のメールボックスと対応づけます。 これらのメールボックスにはローカル、リモート、 `/etc/mail/aliases` に定義されたエイリアス、 またはファイルを使用できます。

Example 20-3. 仮想ドメインメール対応表の例

    root@example.com                root
    postmaster@example.com          postmaster@noc.example.net
    @example.com                    joe

上の例では `example.com` ドメインへの対応づけをしています。 このファイルはファイルの下までファーストマッチ (訳注: 一致するルールが複数ある場合、 一番最初に一致したルールが適用されること) で処理されます。 はじめの行では `root@example.com` を ローカルの `root` メールボックスに対応づけています。 次のエントリでは `postmaster@example.com` を `noc.example.net` ホスト上の `postmaster` メールボックスに対応づけています。 最後に、今までのところでは `example.com` に関して何も一致しない場合、最後のエントリと一致するでしょう。 これは `example.com` の誰かに送ったすべてのメールが一致します。これは `joe` のローカルメールボックスに対応づけられています。

## 20.4. MTA の変更

原作: Andrew Boothman. Information taken from e-mails written by Gregory Neil Shapiro.

すでに述べたように、FreeBSD には MTA (Mail Transfer Agent) として、 sendmail がすでにインストールされています。 したがって、デフォルトではこれがメールの送受信を担当しています。

しかしながら、さまざまな理由によって、 システムの MTA を変更しようと考えるシステム管理者もいるかもしれません。 その理由は、単に他の MTA を試してみたいというものから 他のメーラに依存する特定の機能やパッケージが必要だといったものまで、 多岐にわたることでしょう。 幸い、理由がどんなものであれ、FreeBSD では簡単に変更できます。

### 20.4.1. 新しい MTA のインストール

さまざまな MTA が利用できます。 FreeBSD Ports Collection から探しはじめるのがよいでしょう。 もちろん、どんな場所からでも、あなたが利用したい MTA が FreeBSD で動作する限りすべて自由に使えます。

新しい MTA をインストールすることからはじめましょう。 新しい MTA をインストールすると、 あなたの要求が実際に実現したかどうか決める機会が与えられます。さらに、 サービスを sendmail から引き継ぐ前に 新しいソフトウェアを設定する機会が与えられます。これを行う場合、 新しいソフトウェアが `/usr/bin/sendmail` のようなシステムバイナリを上書きしようとしないことを確認してください。 そうしないとあなたが設定する前に新しいメールソフトウェアが本格的に動作しはじめてしまいます。

あなたが選択したソフトウェアを設定する方法についての情報は、 その MTA の文書を参照してください。

### 20.4.2. sendmail を無効にする

sendmail を起動するために使用されていた手続きは、 4.5-RELEASE と 4.6-RELEASE の間で著しく変更されました。 したがって、それを無効にするための手続きは微妙に違います。

#### 20.4.2.1. 2002 年 4 月 4 日より前の FreeBSD 4.5-STABLE (4.5-RELEASE とそれ以前のバージョンが該当)

`/etc/rc.conf` に次の行を加えてください。

    sendmail_enable="NO"

これは sendmail のメール受信機能を無効にします。 しかし `/etc/mail/mailer.conf` (下記参照) が変更されていなければ、sendmail はメールの送信にまだ使われるでしょう。

#### 20.4.2.2. 2002 年 4 月 4 日以降の FreeBSD 4.5-STABLE (4.6-RELEASE とそれ以降のバージョンが該当)

sendmail を完全に無効にするためには `/etc/rc.conf` に次の行を加えなくてはいけません。

    sendmail_enable="NONE"

> Warningもしこの方法で sendmail のメール送信機能を無効にしたのなら、 完全に動作する代替メール配送システムと置き換えることが重要です。 さもなければ、periodic(8) などのシステム機能は、 それらの結果を通常想定しているようにメールで配送することができなくなるでしょう。 システムの多くの部分が sendmail 互換のシステムがあることを想定しているかもしれません。 もしそれらを無効にした後に、 アプリケーションがメールを送ろうとするために sendmail のバイナリを使用し続ければ、 メールは使われていない sendmail のキューに入り、そして決して配送されないでしょう。

もし sendmail のメール受信機能だけを無効にしたいのなら `/etc/rc.conf` に以下の行を追加してください。

    sendmail_enable="NO"

sendmailの起動オプションに関する詳細は rc.sendmail(8) マニュアルをご覧ください。

### 20.4.3. 起動時に新しい MTA を起動する

起動時に新しい MTA を起動するには二つの選択肢があります。 ここでも、あなたが稼働させている FreeBSD のバージョンに依存します

#### 20.4.3.1. 2002 年 4 月 11 日より前の FreeBSD 4.5-STABLE (4.5-RELEASE とそれ以前のバージョンが該当)

`/usr/local/etc/rc.d/` ディレクトリに、 ファイル名が `.sh` でおわり、 `root` によって実行可能なスクリプトを追加します。 このスクリプトは `start` および `stop` パラメータを引数として受け付けるようにします。 起動時にシステムスクリプトは次のコマンドを実行するでしょう。

    /usr/local/etc/rc.d/supermailer.sh start

これは手動でサーバを起動するためにも使用できます。 システム終了時にはシステムスクリプトは `stop` オプションを使用して、次のコマンドを実行するでしょう。

    /usr/local/etc/rc.d/supermailer.sh stop

これはシステムが稼働している間に手動でサーバを停止するためにも使えます。

#### 20.4.3.2. 2002 年 4 月 11 日以降の FreeBSD 4.5-STABLE (4.6-RELEASE とそれ以降のバージョンが該当)

より新しいバージョンの FreeBSD では、 上記の方法または次の行を `/etc/rc.conf` に設定できます。

    mta_start_script="filename"

`filename` は、あなたが MTA を立ち上げるために起動時に実行するスクリプト名です。

### 20.4.4. システムのデフォルトメーラとして sendmail を置き換える

sendmail プログラムは UNIX システム上の標準ソフトウェアとして本当にどこでも利用できるので、 これがすでにインストールおよび設定されているとみなしている ソフトウェアもあるかもしれません。 この理由により、代替となる MTA の多くは sendmail コマンドラインインタフェースと 互換性のある実装を提供しています。 これを “差し込む” ことによって、 sendmail の置き換えとして代替 MTA を使用することが容易になります。

したがって、あなたが互換メーラを使用しているときには、 `/usr/bin/sendmail` のような標準 sendmail バイナリを実行しようとするソフトウェアが、 実際にはその代わりにあなたの選択したメーラを実行しているということを 確かめる必要があるでしょう。 好運なことに、FreeBSD はこの仕事をする mailwrapper(8) と呼ばれるシステムを提供しています。

インストールされたまま sendmail が稼働しているときには `/etc/mail/mailer.conf` には以下のような記述があるでしょう。

    sendmail    /usr/libexec/sendmail/sendmail
    send-mail   /usr/libexec/sendmail/sendmail
    mailq       /usr/libexec/sendmail/sendmail
    newaliases  /usr/libexec/sendmail/sendmail
    hoststat    /usr/libexec/sendmail/sendmail
    purgestat   /usr/libexec/sendmail/sendmail

このことは、これらのうちどの共通コマンド (`sendmail` 自身のような) が実行されても、 システムは `mailer.conf` を確認して、 代わりに `/usr/libexec/sendmail/sendmail` を実行する `sendmail` という名前の mailwapper のコピーを呼び出すことを意味します。 このようなシステムでは、デフォルトの `sendmail` が呼び出されたときに、 どのバイナリが実際に実行されるかを変更するのが簡単になります。

したがって、sendmail の代わりに `/usr/local/supermailer/bin/sendmail-compat` を実行させたいのなら、次のように `/etc/mail/mailer.conf` を変更してください。

    sendmail    /usr/local/supermailer/bin/sendmail-compat
    send-mail   /usr/local/supermailer/bin/sendmail-compat
    mailq       /usr/local/supermailer/bin/mailq-compat
    newaliases  /usr/local/supermailer/bin/newaliases-compat
    hoststat    /usr/local/supermailer/bin/hoststat-compat
    purgestat   /usr/local/supermailer/bin/purgestat-compat

### 20.4.5. 完了

あなたのやりたいようにすべてを設定しおえたら、 もはや必要のない sendmail のプロセスを終了して新しいソフトウェアに関するプロセスを起動するか、 単に再起動してください。 再起動することによって、新しい MTA が起動時に正しく立ち上がるように システムが設定されているかどうか確認することもできるでしょう。

## 20.5. トラブルシュート

20.5.1. どうして自分のサイトのホストなのに FQDN を使わなければいけないのですか?
20.5.2. sendmail が “`mail loops back to myself`” というメッセージを出すのですが。
20.5.3. ダイアルアップ PPP ホストでメールサーバを実行するにはどうしたらいいの?
20.5.4. なぜ他のホストにメールを送ろうとすると、いつも “`Relaying Denied`” と怒られてしまうの ?

20.5.1. どうして自分のサイトのホストなのに FQDN を使わなければいけないのですか?

恐らく、そのホストは実際には別のドメインにあるのでしょう。 例えば `foo.bar.edu` ドメインにいて、 `bar.edu` というドメイン内の `mumble` というホストにアクセスしたいとします。 この時は単に `mumble` ではなく `mumble.bar.edu` と FQDN で参照しなければなりません。

そもそも、BSD BIND のリゾルバー (resolver) ではこのようなことが可能でしたが、 FreeBSD に入っている最新版の BIND では自分のドメイン以外に対する FQDN でない省略形は許されません。 従ってホストを `mumble` と曖昧に指定した場合は `mumble.foo.bar.edu` という名前があればそれになり、 そうでなければ root ドメインから検索されます。

これは、 `mumble.bar.edu` と `mumble.edu` ということなったドメイン名に対してホスト名のサーチがおこなわれていた以前の振る舞いとは異なったものです。 このような事が悪い例もしくはセキュリティホールとみなされる理由については RFC 1535 を見てください。

`/etc/resolv.conf` で

    domain foo.bar.edu

と書いてある行を

    search foo.bar.edu bar.edu

と書き換えることで上のようなことができます。 しかし、RFC 1535 にあるように検索順序が “内部 (local) と外部 (public) の管理の境界” をまたがないようにしてください。

20.5.2. sendmail が “`mail loops back to myself`” というメッセージを出すのですが。

sendmail FAQ に次のように書いてあります。

    “Local configuration error” というメッセージが出ます。例えば、

    553 relay.domain.net config error: mail loops back to myself
    554 <user@domain.net>... Local configuration error

    のような感じですが、どうしたら解決できますか?

    これは、例えば domain.net のようなドメイン宛てのメールを
    MX レコードで特定のホスト(ここでは
    relay.domain.net) に送ろうとしたのに、
    そのホストでは domain.net
    宛てのメールを受け取れるような設定になっていない場合です。
    設定の際に
    FEATURE(use_cw_file) を指定してある場合には
    /etc/mail/local-host-names の中に domain.net を追加してください。
    もしくは、/etc/mail/sendmail.cf の中に “Cw domain.net”
    を追加してください。

sendmail FAQ は http://www.sendmail.org/faq にありますので、 メールの設定に “おかしなこと” があれば常に読んでください。

20.5.3. ダイアルアップ PPP ホストでメールサーバを実行するにはどうしたらいいの?

LAN 上にある FreeBSD マシンを、 インターネットに接続したいとします。FreeBSD マシンは、その LAN でのメールゲートウェイになります。FreeBSD マシンは専用線接続ではありません (訳注: ダイアルアップ接続など)。

これには、少なくとも二つの方法があります。 一つは UUCP を使うことです。

もう一つの方法は、あなたのドメインに対するセカンダリ MX サービスを提供する常時稼働のインターネットサーバを用意することです。 たとえば、あなたの会社のドメインが `example.com` で、 ISP があなたのドメインに セカンダリ MX サービスを提供するために `example.net` ドメインを 用意するとしたら次のようにします。

    example.com.   MX  10  example.com.
    MX  20  example.net.

最終的なメール受信先としては、 一つのホストだけが定義されるべきです (`example.com` 上の `/etc/mail/sendmail.cf` ファイルに、 `Cw example.com` を追加します)。

送信側の `sendmail` が、 メールを配送しようとしている時、モデムの接続を介してあなたのところ (`example.com`) に接続しようとします。大抵の場合、 あなたのマシンがオンラインでないために、 接続はタイムアウトしてしまうでしょう。 `sendmail` プログラムは自動的に、 たとえばあなたのインターネットプロバイダなどのセカンダリの MX サイト (`example.net`) にメールを配送するでしょう。 セカンダリ MX サイトは定期的にあなたのホストに接続し、 プライマリ MX ホスト (`example.com`) にメールを配送しようとするでしょう。

ログインスクリプトとして、 このようなものを使うとよいでしょう。

    #!/bin/sh
    # Put me in /usr/local/bin/pppmyisp
    ( sleep 60 ; /usr/sbin/sendmail -q ) &
    /usr/sbin/ppp -direct pppmyisp

ユーザごとにログインスクリプトを作りたい場合には、 上記のスクリプトの代わりに、 `sendmail -qRexample.com` を使用することもできます。 このようにすると、 キューの中の `example.com` に対するすべてのメールは、すぐに強制的に処理されます。

さらに、次のような改良もできます。

以下は、FreeBSD Internet service provider's メーリングリスト から抜粋してきたメッセージです。

    > 私たちはお客様に対して、セカンダリ MX を提供しています。
    > お客様は一日に何回か私たちのサービスに接続し、メールを彼らのプライマリ MX
    > に受け取ります (彼らのドメインに対するメールが到着した時には、
    > 私たちは彼らのサイトを呼び出しません)。
    > 私たちの sendmail は、30 分ごとにメールキューに溜っているメールを配送します。
    > ちょうどその時に、すべてのメールがプライマリ MX に送られたかどうかを確かめるためには、
    > 彼らは 30 分は オンラインでいなければなりません。
    >
    > すべてのメールを今すぐ送るために sendmail を初期化するコマンドはあるでしょうか?
    > もちろん私たちのマシン上には、ユーザはルート (root) 権限を持っていません。

    sendmail.cf の “privacy flags” セクションに、
    Opgoaway,restrictqrun の定義があります。

    root 以外のユーザがキューを処理できるようにするには、
    restrictqrun を削除してください。また、MX の再調整が必要かもしれません。
    あなたがたは、顧客のサイトに対する一番優先度の高い MX なので、
    次のように定義します。

    # If we are the best MX for a host, try directly instead of generating
    # local config error.
    OwTrue

    このようにすると、リモートサイトからのメールが、
    顧客のマシンと接続しようとせず、直接あなたがたのホストマシンに配送されるようになります。
    ホストマシンに配送されたメールは、続いて顧客のマシンに送られます。
    これはホスト名にのみ有効なので、顧客のメールマシンに、
    “host.customer.com” とは別に、“customer.com” も定義する必要があります。
    DNS 上で、“customer.com” に対する A レコードを定義してください。

20.5.4. なぜ他のホストにメールを送ろうとすると、いつも “`Relaying Denied`” と怒られてしまうの ?

FreeBSD がインストールされたデフォルトの状態では、 sendmail は動作しているホストからのメールだけを送るように設定されています。 たとえば POP3 サーバがインストールされているとすると、 ユーザは学校や職場など他のリモートの場所からメールを確認することが できます。しかし、彼らは外部からそのホスト以外へのメールを 送ることはやはりできません。 通常、メールを送ろうとしてから少しすると、 “`5.7 Relaying Denied`” というエラーメッセージの書かれたメールが MAILER-DAEMON から送られてくるでしょう。

これを解決する方法はいくつかあります。 一番の正攻法は `/etc/mail/relay-domains` リレードメインファイルにあなたの ISP のアドレスを書くことです。 これをするのに簡単な方法は次のとおりです。

    # echo "your.isp.example.com" > /etc/mail/relay-domains

このファイルを作成または編集したら、 sendmail を再起動してください。 もしあなたがサーバ管理者でメールをローカルに送りたくないか、 ポイントを使用して他のマシン (や、さらに他の ISP) の クライアントまたはシステムへ送りたい時は、とても効果があります。 さらに、あなたが一つあるいは二つだけのメールアカウントを 設定している場合でもこれは非常に有用です。 追加すべきアドレスがたくさんある場合には、 単にこのファイルをあなたの好きなテキストエディタで開いて、 そして一行に一つずつドメインを追加してください。

    your.isp.example.com
    other.isp.example.net
    users-isp.example.org
    www.example.org

これで、リストに掲載されているすべてのホスト (ユーザがあなたのシステムにアカウントを持っていると規定する) からあなたのシステムを通るすべてのメールは送信に成功するでしょう。 これはあなたのシステムから SPAM を送ることを認めることなく、 リモートであなたのシステムからメールを送ることをユーザに 認めるためのとてもよい方法です。

## 20.6. 先進的なトピックス

これからのセクションでは、 メールの設定やドメイン全体のためのメールの設定といったさらに突込んだ話題について触れます。

### 20.6.1. 基本事項

あなたのマシンに FreeBSD を普通にインストールして、 `/etc/resolv.conf` ファイルを設定するか、 またはネームサーバを走らせれば、 他のホストへ電子メールを送ることができるようになります。 あなたのホスト宛のメールをあなた自身の FreeBSD ホスト上の MTA (たとえば sendmail) に配送するようにしたい場合には、次の二つの方法があります。

- 自身でネームサーバーを実行し、 自分のドメインを持つ。例えば `FreeBSD.org`。

- あなたのホストへ直接メールが配送されるようにする。 これはメールがあなたのマシンの現在の DNS 名に直接配送されるようにすることにより実現できます。 たとえば `example.FreeBSD.org`。

上のどちらを選ぶ場合でも、自分のホストに直接メールが配送されるようにするには恒久的で 静的 な IP アドレス (ほとんどの PPP ダイアルアップ設定で用いられる動的なアドレスではなく) を持っていなければなりません。 もしファイアウォールの中にいるならば、 SMTP トラフィックが通過してくれないといけません。 もし自分のホストでメールを直接受け取りたいならば、 次の二つのうちのどちらかができていることを確認してください。

- 自分のドメインでの (一番値の小さい) MX レコードが自分のホストの IP アドレスを差していることを確認する。

- 自分のドメインの中に自分のホスト用の MX エントリがないことを確認する。

上のどちらかが設定されていれば、 自分のホストでメールを受け取ることができるでしょう。

次のコマンドを実行してみてください。

    # hostname
    example.FreeBSD.org
    # host example.FreeBSD.org
    example.FreeBSD.org has address 204.216.27.XX

もしあなたのマシンが上記のメッセージだけを出力したならば、 `<yourlogin@example.FreeBSD.org>` へのメールは問題なく配送されるでしょう (sendmail が `example.FreeBSD.org` 上で正しく動作していると仮定します)。

上記のメッセージの代わりに、

    # host example.FreeBSD.org
    example.FreeBSD.org has address 204.216.27.XX
    example.FreeBSD.org mail is handled (pri=10) by hub.FreeBSD.org

というメッセージが出力された場合は、 あなたのホスト (`example.FreeBSD.org`) に宛てたメールは全て直接配送されずに `hub` 上の同じユーザー名に配送されます。

上の情報は DNS サーバーが扱います。 メールルーティング情報をもつ DNS レコードは、 Mail eXchange エントリーです。 MX エントリが存在しない場合には、IP アドレスにしたがって、 直接宛先ホストに配送されます。

`freefall.FreeBSD.org` の現時点での MX エントリは、次のようになっています。

    freefall       MX  30  mail.crl.net
    freefall        MX  40  agora.rdrop.com
    freefall        MX  10  freefall.FreeBSD.org
    freefall        MX  20  who.cdrom.com

`freefall` は多くの MX エントリを持っています。 一番 MX の値の小さいホストが利用可能な場合は直接メールを受け取ります。 もしなにかの理由でアクセスができない時には、 他のホスト (ときどき “バックアップ MX” と呼ばれます) が一時的にメールを受け取ります。そして、 より値の小さいホストが利用可能になったときにメールを渡し、 最終的に一番値の小さいホストに渡ります。

使い勝手をよくするためには、代替の MX サイトは、それぞれ 別の経路でインターネットへ接続しているとよいでしょう。 インターネットプロバイダまたは他の関連サイトが、このサービスを 提供することができます。

### 20.6.2. あなたのドメインに対するメール設定

“メールホスト” (メールサーバーとしても知られています) をセットアップするためには、 いろいろなワークステーションに宛てた全てのメールを受ける必要があります。 基本的には、あなたのドメイン内 (この場合だと `*.FreeBSD.org`) のすべてのホスト名宛てのすべてのメールを “受け取って”、 そのメールをあなたのメールサーバーに配送し、 ユーザーがマスタメールサーバ上でメールをチェックできるようにします。

話を簡単にするために、あるユーザーのアカウントはどのマシンでも同じユーザー名にすべきです。 そのためには adduser(8) を使ってください。

使用する予定のメールホストは、 各ワークステーションごとにメール交換が できるように設定されていなければなりません。 これは DNS の設定で次のように行なうことができます。

    example.FreeBSD.org    A   204.216.27.XX       ; ワークステーション
    MX  10 hub.FreeBSD.org  ; メールホスト

これは、ワークステーションの A レコードがどこを指していようとも そのワークステーション宛てのメールをメールホストに転送する、というものです。

自前で DNS サーバを運用しているのでなければ、 この作業は自分では行えません。自分で DNS サーバを運用しないとかできないという場合は、 あなたの DNS を提供しているインターネットプロバイダなどに依頼して 作業を行ってもらってください。

もしバーチャル電子メールホストを運用するなら次の情報が役に立つでしょう。 例として、あなたには自分のドメイン、ここでは `customer1.org`、 を持っている顧客がいるとしましょう。 あなたは `customer1.org` 宛ての全てのメールを `mail.myhost.com` というメールホストに集めたいとします。 DNS エントリーは次のようになるでしょう。

    customer1.org      MX  10 mail.myhost.com

`customer1.org` に対して電子メールを送りたいだけなら、 A レコードは必要ありません。

> Note: `customer1.org` に対して ping を実行しても、 A レコードが存在しない限りうまくいかないことに留意しておいてください。

やらなければいけない最後のことは、 メールホスト上の sendmail に対してどんなドメインやホスト宛のメールを受け取るのか、 を教えることです。いくつかの方法がありますが次のどちらかでいいでしょう。

- `FEATURE(use_cw_file)` を使っているなら、 `/etc/mail/local-host-names` ファイルにホストを加えます。 もし sendmail のバージョンが 8.10 より前であれば該当ファイルは `/etc/sendmail.cw` です。

- `/etc/sendmail.cf` もしくは sendmail 8.10 以降なら `/etc/mail/sendmail.cf` といったファイルに `Cwyour.host.com` という行を加えます。

## 20.7. UUCP とともに SMTP を使う

FreeBSD とともに出荷されている sendmail の設定は、 サイトがインターネットに直接接続しているものとして設計されています。 UUCP 経由でメールを交換したいサイトは、他にも 設定ファイルをインストールしなければいけません。

`/etc/mail/sendmail.cf` を手動で調整することは先進的なトピックです。 sendmail のバージョン 8 は設定ファイルを m4(1) プリプロセッサから生成します。 これにより、高度に抽象化された設定を行うことができます。 m4(1) による設定ファイルは `/usr/src/usr.sbin/sendmail/cf` 以下にあります。

もしシステムをすべてのソースとともにインストールしていなければ、 sendmail の設定材料は分割された個別のソース tarball を取得してください。 FreeBSD のソースコードが入った CDROM をマウントしているのなら、

    # cd /cdrom/src
    # cat scontrib.?? | tar xzf - -C /usr/src/contrib/sendmail

と展開してください (展開してもたった数百 KB 程度です)。 `cf` ディレクトリの `README` ファイルは m4 による設定の基本的な手引として役に立つでしょう。

UUCP 配送に対応するための一番よい方法は `mailertable` 機能を使用することです。 これは経路を決定するために sendmail が使用できるデータベースを作成します。

まずはじめに `.mc` ファイルを作成しなければいけません。 `/usr/src/usr.sbin/sendmail/cf/cf` にいくつか例があります。`foo.mc` という名前のファイルをあなたが作成したとすると、 有効な `sendmail.cf` ファイルへ変換するには次のようにするだけです。

    # cd /usr/src/usr.sbin/sendmail/cf/cf
    # make foo.cf
    # cp foo.cf /etc/mail/sendmail.cf

典型的な `.mc` ファイルは次のようになるでしょう。

    VERSIONID(`Your version number') OSTYPE(bsd4.4)

    FEATURE(accept_unresolvable_domains)
    FEATURE(nocanonify)
    FEATURE(mailertable, `hash -o /etc/mail/mailertable')

    define(`UUCP_RELAY', your.uucp.relay)
    define(`UUCP_MAX_SIZE', 200000)
    define(`confDONT_PROBE_INTERFACES')

    MAILER(local)
    MAILER(smtp)
    MAILER(uucp)

    Cw    your.alias.host.name
    Cw    youruucpnodename.UUCP

`accept_unresolvable_domains`, `nocanonify` および `confDONT_PROBE_INTERFACES` 機能を含んでいる行は、 メール配送時にまったく DNS を使用しません。 `UUCP_RELAY` の記述は UUCP 配送に対応するのに必要です。 そこにインターネットホスト名を単に書くだけで .UUCP pseudo ドメインアドレスを扱うことができるようになります。 大抵の場合、あなたの ISP のメールリレーをそこに入力するでしょう。

次に、 `/etc/mail/mailertable` が必要になります。 メールを配送するリンクが外界との間に一つだけの場合は、 次のようにファイルを記述するだけで十分でしょう。

    #
    # makemap hash /etc/mail/mailertable.db < /etc/mail/mailertable
    .                             uucp-dom:your.uucp.relay

次はさらに複雑な例です。

    #
    # makemap hash /etc/mail/mailertable.db < /etc/mail/mailertable
    #
    horus.interface-business.de   uucp-dom:horus
    .interface-business.de        uucp-dom:if-bus
    interface-business.de         uucp-dom:if-bus
    .heep.sax.de                  smtp8:%1
    horus.UUCP                    uucp-dom:horus
    if-bus.UUCP                   uucp-dom:if-bus
    .                             uucp-dom:

はじめの三行はドメインで宛先を指定されたメールが、 配送路を “近道” するために、 デフォルトルートではなく代わりにいくつかの UUCP 隣接ホストへ送られる特別な場合を扱います。 次の行はメールを SMTP で配送可能なローカルイーサネットドメインへ送ります。 最後に ``uucp-neighbor` !`recipient`` がデフォルトルートを上書きすることを許可するための UUCP 隣接ホストは .UUCP 仮想ドメイン記法で言及されます。 最後の行は常に他のすべてが当てはまるシングルドットです。 これは UUCP 隣接ホストへの UUCP 配送をすることで、 世界に向けたあなたの普遍的メールゲートウェイとして役に立ちます。 `uucp-dom:` キーワードの後ろにあるノード名はすべて、 `uuname` コマンドを使用することで確かめられる正しい UUCP 隣接ホストである必要があります。

このファイルは、実際に使用する前に DBM データベース形式に変換する必要があることに注意してください。 これを実行するコマンドラインは mailertable ファイルの先頭にコメントとして書かれています。 mailertable を変更するたびにいつもこのコマンドを実行する必要があります。

最後のアドバイス: もし、 いくつかのメールルーティングがうまく動いているかどうか分からないときは sendmail に `-bt` オプションをつけることを覚えておいてください。 これは sendmail を アドレステストモード で起動します。 あなたがテストしたいメールルーティングのアドレスを後につけて、 単純に `3,0` と入力してください。 最後の行は、内部で使われたメールエージェント、 このエージェントが呼び出された目的地ホスト、および (もしかしたら変換された) アドレスを表示します。 このモードを終了するには Ctrl+D を入力します。

    % sendmail -bt
    ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
    Enter <ruleset> <address>
    > 3,0 foo@example.com
    canonify           input: foo @ example . com
    ...
    parse            returns: $# uucp-dom $@ your.uucp.relay $: foo < @ example . com . >
    > ^D

## 20.8. ダイアルアップ接続でメールを使う

あなたが固定 IP アドレスを持っているのなら、 デフォルトから何も変更する必要はありません。 割りあてられたインターネット名をホスト名に設定すれば、 sendmail が残りをやってくれます。

あなたが動的に割り当てられた IP アドレスを持っていて、 インターネットに接続するのにダイアルアップ PPP を使用しているのなら、 おそらく ISP のメールサーバにメールボックスがあるでしょう。 ここでは、あなたの ISP のドメインが `example.net`, あなたのユーザ名が `user`, あなたのマシンは `bsd.home` と呼ばれているものとします。 また、ISP から、メールリレーとして `relay.example.net` を使用してよいと通知されているとします。

(訳注: ISP 上の) メールボックスからメールを取得するためには、 取得アプリケーションをインストールしないといけません。 fetchmail ユーティリティは、 さまざまなプロトコルの多くに対応しているのでよい選択肢です。 通常、あなたの ISP は POP3 を提供しています。 あなたが user-PPP を使用しているなら、次のエントリを `/etc/ppp/ppp.linkup` に追加することで、 インターネット接続が確立したときに自動的にメールを取得することができます。

    MYADDR:
     !bg su user -c fetchmail

あなたがローカルではないアカウントへのメールを配送するために (下記のような) sendmail を使用しているなら、 インターネット接続が確立するとすぐに、 sendmail があなたのメールキューを処理して欲しいとおそらく考えるでしょう。 これを行うには、`/etc/ppp/ppp.linkup` ファイルの `fetchmail` コマンドの後に次のコマンドを追加してください。

     !bg su user -c "sendmail -q"

`bsd.home` 上に `user` というアカウントを所有しているとします。 `bsd.home` 上の `user` のホームディレクトリに `.fetchmailrc` ファイルを作成します。

    poll example.net protocol pop3 fetchall pass MySecret

このファイルはパスワード `MySecret` を含んでいるので、`user` を除く他の誰にも読めるようになっていてはいけません。

正しい `from:` ヘッダでメールを送るためには、 sendmail が `user@bsd.home` ではなく `user@example.net` を使用するようにしなくてはいけません。 また、素早くメール送信をするために sendmail にすべてのメールを `relay.example.net` 経由で送るようにもしたいかもしれません。

次の `.mc` ファイルで十分でしょう。

    VERSIONID(`bsd.home.mc version 1.0')
    OSTYPE(bsd4.4)dnl
    FEATURE(nouucp)dnl
    MAILER(local)dnl
    MAILER(smtp)dnl
    Cwlocalhost
    Cwbsd.home
    MASQUERADE_AS(`example.net')dnl
    FEATURE(allmasquerade)dnl
    FEATURE(masquerade_envelope)dnl
    FEATURE(nocanonify)dnl
    FEATURE(nodns)dnl
    define(`SMART_HOST', `relay.example.net')
    Dmbsd.home
    define(`confDOMAIN_NAME',`bsd.home')dnl
    define(`confDELIVERY_MODE',`deferred')dnl

`.mc` ファイルを `sendmail.cf` ファイルに変換する方法の詳細については前の節を参照してください。 また、`sendmail.cf` ファイルを変更した後は、 sendmail を再起動し忘れないでください。

## 20.9. SMTP 認証

メールサーバ上で SMTP 認証を行うと、 多くの利益があります。 SMTP 認証は sendmail にもう一つのセキュリティ層を追加することができます。 さらに、ホストを切りかえるモバイルユーザにとっては、 その都度メールクライアントの設定を変更せずとも 同じメールサーバを利用できるようになります。

1. ports から `security/cyrus-sasl` をインストールします。 この port は `security/cyrus-sasl` にあります。 `security/cyrus-sasl` にはここで使用する方法に対する多くのコンパイルオプションがあり、 確実に `pwcheck` オプションを選択してください。

2. `security/cyrus-sasl` をインストールした後に `/usr/local/lib/sasl/Sendmail.conf` を編集して (もし無ければ作成して) 次の行を追加してください。

       pwcheck_method: passwd

   この方法は sendmail があなたの FreeBSD の `passwd` データベースに対して認証することを可能にします。 この方法は SMTP 認証に必要となる、 それぞれのユーザに対する一組の新しいユーザ名とパスワードを 作成する際のトラブルを減らし、 ログインパスワードとメールパスワードを同じままにします。

3. ここで `/etc/make.conf` 編集し、 次の行を加えます。

       SENDMAIL_CFLAGS=-I/usr/local/include/sasl1 -DSASL
       SENDMAIL_LDFLAGS=-L/usr/local/lib
       SENDMAIL_LDADD=-lsasl

   これらの行は sendmail に対して、 コンパイルするときに `cyrus-sasl` とリンクするための適切な設定オプションを与えるものです。 sendmail を再コンパイルする前に `cyrus-sasl` がインストールされていることを確かめてください。

4. 次のコマンドを入力して sendmail を再コンパイルしてください。

       # cd /usr/src/usr.sbin/sendmail
       # make cleandir
       # make obj
       # make
       # make install

   sendmail のコンパイルは `/usr/src` が大幅に変更されていなくて、 必要な共有ライブラリが利用可能であれば何の問題も起こらないでしょう。

5. sendmail をコンパイルして再インストールした後は、 `/etc/mail/freebsd.mc` ファイル (またはあなたが `.mc` ファイルとして使用しているファイル。 多くの管理者は唯一の名前を用いるために hostname(1) の出力を `.mc` として使用することを選んでいます) を編集してください。 次の行を加えてください。

       dnl set SASL options
       TRUST_AUTH_MECH(`GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN')dnl
       define(`confAUTH_MECHANISMS', `GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN')dnl
       define(`confDEF_AUTH_INFO', `/etc/mail/auth-info')dnl

   これらのオプションは、ユーザを認証するために sendmail が利用可能な異なる方法を設定します。 もし pwcheck 以外の方法を使用したいのならドキュメントを参照してください。

6. 最後に `/etc/mail` で make(1) を実行してください。 これにより、新しい `.mc` ファイルから `freebsd.cf` という名前 (またはあなたの `.mc` に使用している名前) の `.cf` ファイルが作成されます。 それから `make install restart` コマンドを実行してください。 新しい `.cf` ファイルが `sendmail.cf` にコピーされ、 sendmail が適切に再起動されるでしょう。 この手続きについての詳細は `/etc/mail/Makefile`を参照してください。

すべてがうまくいけば、ログイン情報をメールクライアントに入力し、 テストメッセージを送ることができるでしょう。 より詳細に調べるには sendmail の `LogLevel` を 13 に設定し、 すべてのエラーについて `/var/log/maillog` を見てください。

このサービスがシステムを起動した後にいつでも利用可能となるように、 `/etc/rc.conf` に次の行を追加しておくとよいでしょう。

    sasl_pwcheck_enable="YES"
    sasl_pwcheck_program="/usr/local/sbin/pwcheck"

これにより、システムの起動時に SMTP_AUTH が確実に初期化されるでしょう。

詳細については SMTP 認証 に関する sendmail の文書を参照してください。

# Chapter 21. 高度なネットワーク

## 21.1. この章では

以下の章では、 UNIX システム上で良く利用されるネットワークサービスについて書かれています。 これはもちろん、 あなたの FreeBSD システムでの、 そのようなサービスの設定に関する内容です。

## 21.2. ゲートウェイとルート

原作: Coranth Gryphon `<gryphon@FreeBSD.org>`. 1995 年 10 月 6 日.

訳: 前田 幸範 `<yuki@jp.FreeBSD.org>`. 1996 年 9 月 6 日.

あるマシンが他のマシンをみつけることができるようにするには、 あるマシンから他のマシンへ、 どのようにたどり着くかを適切に記述するための仕組みが必要です。 この仕組みをルーティングと呼びます。 “ルート(経路)”は “destination (目的地)” と “gateway (ゲートウェイ)” の 2 つのアドレスの組で定義します。 あなたが destination へアクセスしようとした場合、 gateway を通って送られることをこのペアは示しています。 destination には個々のホスト、 サブネット、 “デフォルト” の 3つの タイプがあります。 “デフォルトルート” は他への経路が適用できない 場合に使われます。 のちほどデフォルトルートについて少し述べることに するとして、 ここでは、 個々のホスト、 インタフェース (“リンク” とも呼ばれます)、 イーサネットハードウェアアドレスという 3つのタイ プのゲートウェイについて説明します。

### 21.2.1. 例

以下に示す `netstat -r` の出力の例を使って、 ルーティン グがいろいろと異なっている様子を説明することにします。

    Destination      Gateway            Flags     Refs     Use     Netif Expire

    default          outside-gw         UGSc       37      418      ppp0
    localhost        localhost          UH          0      181       lo0
    test0            0:e0:b5:36:cf:4f   UHLW        5    63288       ed0     77
    10.20.30.255     link#1             UHLW        1     2421
    foobar.com       link#1             UC          0        0
    host1            0:e0:a8:37:8:1e    UHLW        3     4601       lo0
    host2            0:e0:a8:37:8:1e    UHLW        0        5       lo0 =>
    host2.foobar.com link#1             UC          0        0
    224              link#1             UC          0        0

最初の2行はデフォルトルート(次の節で詳しく説明します)と、 `localhost`への経路を示しています。

`localhost`のためのインタフェース (`Netif`の欄) は`lo0`で、 これはループバックデバイスとして知られています。 結局のところ戻るだけなので、 この destinationへのすべてのトラフィックが 内部的に処理されるのであって、 LAN を経由して送られるのではありません。

次の行では `0:e0:...` というアドレスに注目しましょう。 これはイーサネットハードウェアアドレスです。 FreeBSDは自動的に ローカルなイーサネット上の任意のホスト (この例では`test0`) を見つけ、 イーサネットインタフェース `ed0` の所にそのホストへの経路を直接つけ加えます。 タイムアウト時間 (`Expire`の 欄) も経路のタイプと結びついており、 指定された時間が経過しても応 答がないときに使用します。 この場合、 経路情報は自動的に削除されま す。 これらのホストは、 RIP(Routing Information Protocol) という、 最短パスの判定に基づいてローカルホストへの経路を 決定する仕組みを利用することで認識されます。

更に、 FreeBSDではローカルサブネット (`10.20.30.255` は `10.20.30` というサブネットに対するブロードキャストアドレスで、 `foobar.com` はこのサブネットに結びつけられているドメイン名) への経路情報も加えることができます。 `link#1`というのは、 このマシンの最初のイーサネットカードのことをさします。 これら については、 何も追加インタフェースが指定されていないことに気づく でしょう。

これらの2つのグループ(ローカルネットワークホストと ローカルサブネット) の両方とも、 `routed` と呼ばれるデーモンによって自動的に経路が設定されます。 `routed` を動かさなければ、 静的に定義した (つまり具体的に設定した) 経路のみ存在することになります。

`host1` の行は私たちのホストのことで、 イーサネットアドレスで示されています。 送信側のホストの場合、 FreeBSDはイーサネットインタフェースへ送るのではなく、 ループバックインタフェース (`lo0`)を使います。

2つある`host2`の行は、 ifconfigのエイリアス (このようなことをする理由については ethernetの章を参照してください) を使ったとき にどのようになるかを示す例です。 `lo0`の後にある`=>` は、 インタフェースが (このアドレスがローカルなホストを参照しているので) ループバックを使っているというだけでなく、 エイリアスになっていることも示しています。 このような経路はエイリアスをサポートしている ホストにのみ現れます。 ローカルネットワーク上の他のすべてのホストでは 単に`link#1`となります。

最後の行 (destinationが`224`のサブネット) はマルチキャストで扱うものですが、 これは他の章で説明します。

他の欄については `Flags` について説明する必要があります。 それぞれの経路は欄に示されているように違った属性を もっています。 以下にいくつかのフラグとこれらが何を意味しているかを示します。

U | Up: この経路はアクティブです。
H | Host: 経路の destinationが単一のホストです。
G | Gateway: この destinationへ送られると、 どこへ送れ ばよいかを明らかにして、 そのリモートシステムへ送られます。
S | Static: この経路はシステムによって自動的に生成 されたのではなく、 手動で作成されました。
C | Clone: マシンに接続したときにこの経路に基づく 新しい経路が作られます。 このタイプの経路は通常は ローカルネットワークで使われます。
W | WasCloned: ローカルエリアネットワーク(Clone) の経路に基づいて 自動的に生成された経路であることを示します。
L | Link: イーサネットハードウェアへの参照を含む 経路です。

### 21.2.2. デフォルトルート

ローカルシステムからリモートホストにコネクションを張る 必要がある場合、 既知のパスが存在するかどうかを確認するためにル ーティングテーブルをチェックします。 到達するためのパスを知っているサブネットの内部に リモートホストがある場合 (Cloned routes)、 システムはインタフェース から接続できるかどうかをチェックします。

知っているパスがすべて駄目だった場合でも、 システムには 最後の切り札の “デフォルト” ルートがあります。 このルートは ゲートウェイルート (普通はシステムに 1つしかありません) の特別なものです。 そして、 フラグフィールドは必ず `c` がマークされています。 このゲートウェイは、 LAN 内のホストにとっ て、 外部 (PPPのリンクを経由する場合や、 データラインに接続するハードウェアデバイスなど) へ直接接続するマシンすべてのためのものです。

外部に対するゲートウェイとして機能するマシンで デフォルトルートを設定する場合、 デフォルトルートはインターネットサービスプロバイダ (ISP) のサイトのゲートウェイマシンになるでしょう。

それではデフォルトルートの一例を見てみましょう。 一般的な構成を示します。

[Local2] <--ether--> [Local1] <--PPP--> [ISP-Serv] <--ether--> [T1-GW]

ホスト `Local1` とホスト `Local2` を PPP で ISP のターミナルサーバと接続されているあなたの サイトだとします。 ISP はサイト内にロー カルなネットワークを持っていて、 そこにはさまざまなものがあり、 あなたの接続するサーバや ISP のインターネットへの 接続点であるハードウェアデバイス (T1-GW) などがあります。

あなたのマシンのデフォルトルートは それぞれ次のようになります。

host | default gateway | interface
--- | --- | ---
Local2 | Local1 | ethernet
Local1 | T1-GW | PPP

“なぜ (あるいは、 どうやって) Local1 の デフォルトゲートウェイをISPのサーバでなく T1-GWにセットするのか” という質問がよくあります。

コネクションのローカルの側については、 PPPのインタフェースは ISPのローカルネットワーク上のアドレスを用いているため、 ISPのローカルネットワーク上のすべてのマシンへの経路は 自動的に生成されています。 つまり、 あなたのマシンは、 どのようにT1-GW まで届くかという経路を既に知っていることになりますから、 ISPサーバに媒介的なトラフィックをかける必要はありません。

最後になりましたが、 一般的にローカルネットワークでは `...1` というアドレスをゲートウェイアドレスとして使います。 ですから (同じ例を用います)、 あなたのclass-Cのアドレス空間が `10.20.30`で ISPが `10.9.9`を用いている場合、 デフォルトルートは次のようになります。

Local2 (10.20.30.2) --> Local1 (10.20.30.1)
Local1 (10.20.30.1, 10.9.9.30) --> T1-GW (10.9.9.1)

### 21.2.3. マルチホームホスト

ここで扱うべき他のタイプの設定があります。 それは2つの異なるネットワークにまたがるホストです。 技術的にはゲートウェイとして機能するマシン (上 の例では PPPコネクションを用いています) はマルチホームホストで す。 しかし実際にはこの言葉は、 2つのローカルエリアネットワーク上のサ イトであるマシンを指す言葉としてのみ使われます。

2枚のイーサネットカードを持つマシンが、 別のサブネット 上にそれぞれアドレスを持っている場合があります。 あるいは、 イーサネットカードを1枚持っているマシンで、 ifconfigのエイリアスを使っているかもしれません。 物理的に分かれている2つのイーサネットのネットワークが使われて いるならば前者が用いられます。 後者は、 物理的には1つのネットワ ークセグメントで、 論理的には分かれている 2つのサブネットとする 場合に用いられます。

どちらにしても、 このマシンがお互いのサブネットへのゲートウェイ (inbound route) として定義されていることが分かるように、 おのお ののサブネットでルーティングテーブルを設定します。 このマシンが 2 つのサブネットの間のブリッジとして動作するという構成は、 パケ ットのフィルタリングを実装する必要がある場合や、 一方向または双 方向のファイアウォールを利用したセキュリティを構築する場合によ く用いられます。

### 21.2.4. ルーティングの伝播

すでに外部との経路をどのように定義したらよいかは 説明しました。 しかし外部から私たちのマシンをどのようにして 見つけるのかについては説明していません。

ある特定のアドレス空間 (この例では class-C のサブネット) におけるすべてのトラフィックが、 到着したパケットを内部で転送するネ ットワーク上の特定のホストに送られるようにルーティングテーブル を設定することができるのは分かっています。

あなたのサイトにアドレス空間を割り当てる場合、 あなたのサブネットへのすべてのトラフィックがすべて PPPリンクを通じてサイトに送 ってくるようにサービスプロバイダはルーティングテーブルを設定し ます。 しかし、 国境の向こう側のサイトはどのようにしてあなたの ISPへ送ることを知るのでしょうか?

割り当てられているすべてのアドレス空間の経路を維持する (分散している DNS 情報とよく似た) システムがあり、 そのインターネット バックボーンへの接続点を定義しています。 “バックボーン” とは国を越え、 世界中のインターネットのトラフィックを運ぶ主要 な信用できる幹線のことです。 どのバックボーンマシンも、 あるネットワークから特定のバックボーンのマシンへ 向かうトラフィックと、 そのバックボーンのマシンからあなたのネットワークに届くサービス プロバイダまでのチェーンのマスタテーブルのコピーを持っていま す。

あなたのサイトが接続(プロバイダからみて内側にある ことになります) したということを、 プロバイダからバックボー ンサイトへ通知することはプロバイダの仕事です。 これが経 路の伝搬です。

### 21.2.5. トラブルシューティング

ルーティングの伝搬に問題が生じて、 いくつかのサイトが 接続をおこなうことができなくなることがあります。 ルーティングがどこでおかしくなっているかを明らかにするのに 最も有効なコマンドはおそらく traceroute(8) コマンドでしょ う。 このコマンドは、 あなたがリモートマシンに対して接続をおこなう ことができない(例えば ping(8) に失敗するような場合) 場合も、 同じように有効です。

traceroute(8) コマンドは、 接続を試みているリモートホストを引数にして実行します。 試みているパスの経由するゲートウェイホストを表示し、 最終的には目的のホストにたどり着くか、 コネクションの欠如によって終ってしまうかのどちら かになります。

より詳しい情報は、 traceroute(8) のマニュアルページをみてください。

## 21.3. Bridging

Written by Steve Peterson `<steve@zpfe.com>`.

### 21.3.1. はじめに

IP サブネットを作成し、 それらのセグメントをルータを 使って接続したりせずに、 (Ethernet セグメントのような) 物理ネットワークを二つのネットワークセグメントに分割することは とても有効な場合があります。 このような二つのネットワークを繋ぐデバイスはブリッジと呼ばれます。 そして、 二つのネットワークインタフェイスカードを持つ FreeBSD システムは、 ブリッジとして動作することができます。

ブリッジは、 各ネットワークインタフェイスに繋がる デバイスの MAC 層のアドレス (例えば Ethernet アドレス) を記憶します。 ブリッジはトラフィックの送信元と受信先が異なったネットワーク上に ある場合にのみ、 トラフィックを転送します。

すなわち、 ブリッジはポート数の少ない Ethernet スイッチ だ、 ということができます。

### 21.3.2. ブリッジがふさわしい状況とは

今日ブリッジが活躍する場面は大きく分けて二つあります。

#### 21.3.2.1. トラフィックの激しいセグメント

ひとつは、 物理ネットワークセグメントがトラフィック 過剰になっているが、 なんらかの理由によりネットワークを サブネットに分け、 ルータで接続することができない場合です。

編集部門と製作部門がおなじサブネットに同居している 新聞社を例に考えてみましょう。 編集部門のユーザはファイルサーバとして全員サーバ A を利用し、 製作部門のユーザはサーバ B を利用します。 すべてのユーザを接続するのには Ethernet が使われており、 高負荷となったネットワークは遅くなってしまいます。

もし編集部門のユーザを一つのネットワークセグメントに 分離することができ、 製作部門もユーザも同様にできるのなら、 二つのネットワークセグメントをブリッジで繋ぐことができます。 ブリッジの "反対" 側へ向かうネットワークトラフィックだけが 転送され、 各ネットワークセグメントの混雑は緩和されます。

#### 21.3.2.2. パケットフィルタ/帯域制御用ファイアウォール

もうひとつは、 IP Masquerading (NAT) を使わずに ファイアウォール機能を利用したい場合です。

ここでは DSL もしくは ISDN で ISP に接続している 小さな会社を例にとってみましょう。 この会社は ISP から 13 個のグローバル IP アドレスの割り当て を受けており、 ネットワーク内には 10 台の PC が存在します。 このような状況では、 サブネット化にまつわる問題から ルータを用いたファイアウォールを利用することは困難です。

ブリッジを用いたファイアウォールなら、 IP アドレスの問題を気にすること無く、 DSL/ISDN ルータの 下流側に置くように設定できます。

### 21.3.3. ブリッジを設定する

#### 21.3.3.1. ネットワークインタフェイスカードの選択

ブリッジを利用するには少なくとも二つのネットワークカードが 必要です。 残念なことに、 FreeBSD 4.0 ではすべてのネットワークインタフェイス カードがブリッジ機能をサポートしているわけではありません。 カードがサポートされているかどうかについては bridge(4) を参照してください。

以下に進む前に、 二つのネットワークカードをインストールして テストしてください。

#### 21.3.3.2. カーネルコンフィグレーションの変更

カーネルでブリッジ機能を有効にするには

    options BRIDGE

という行をカーネルコンフィグレーションファイルに追加して カーネルを再構築してください。

#### 21.3.3.3. ファイアウォール機能

ブリッジと同時にファイアウォール機能も利用しようとしている 場合には、 IPFIREWALL オプションも指定する必要があります。 ブリッジをファイアウォールとして設定する際の一般的な 情報に関しては、 Section 14.7 を参照してください。

IP 以外のパケット (ARP など) がブリッジを通過するように するためには、 ドキュメント化されていないファイアウォール用 オプションを設定する必要があります。 このオプションは `IPFIREWALL_DEFAULT_TO_ACCEPT` です。 この変更により、 デフォルトではファイアウォールがすべての パケットを accept するようになることに注意してください。 この設定を行う前に、 この変更が自分のルールセットにどのような 影響をおよぼすかを把握しておかなければなりません。

#### 21.3.3.4. 帯域制御機能

ブリッジで帯域制御機能を利用したい場合、 カーネルコンフィグレーションで `DUMMYNET` オプションを加える必要があります。 詳しい情報に関しては dummynet(4) を参照 してください。

### 21.3.4. ブリッジを有効にする

ブリッジを有効にするには、 `/etc/sysctl.conf` に以下の行を加えてください:

    net.link.ether.bridge=1

ブリッジを経由したパケットを ipfw でフィルタしたい場合には、

    net.link.ether.bridge_ipfw=1

という行も付け加える必要があります。

### 21.3.5. パフォーマンス

私のブリッジ/ファイアウォールは Pentium 90 で、 3Com 3C900B と 3c905B を使っています。 防護される側のネットワークは 10Mbps の half duplex で、 ブリッジとルータ (Cisco 675) の間は 100Mbps full duplex で 動作しています。 パケットフィルタを利用しない場合、 防護されている 10Mbps ネットワークから Cisco 675 への ping では、 ブリッジにより 0.4 ミリ秒の遅延が発生しています。

### 21.3.6. その他の情報

ネットワークからブリッジに telnet したい場合、 ネットワークカードの一つに IP アドレスを割り当てれば OK です。 一般的に、 両方のカードに IP アドレスを割り当てるのは よいアイデアではないとされています。

ネットワーク内に複数のブリッジを設置する場合、 任意のワークステーション間で一つ以上の経路を持つことは できません。 技術的には、 これは spanning tree link management はサポートされていない、 ということを意味します。

## 21.4. NFS

Written by Bill Swingle `<unfurl@FreeBSD.org>`, 4 March 2000.

FreeBSD がサポートしている多くのファイルシステムの中でも、 NFS、 すなわち Network File System は極めてユニークな存在です。 NFS はあるマシンから他のマシンへと、 ネットワークを通じて ディレクトリとファイルを共有することを可能にします。 NFS を使うことで、 ユーザやプログラムはリモートシステムのファイルを、 それがローカルファイルであるかのようにアクセスすることができます。

NFS には以下の利点があります:

- 一般的に使われるデータを単一のマシンに納める ことができ、 ネットワーク上のユーザはデータにアクセスできる ため、 ローカルワークステーションは多くのディクスを 必要としません。

- ネットワーク上のすべてのマシンに、 ユーザが独自のホームディレクトリを持つ必要がありません。 一旦 NFS 経由でアクセスできるディレクトリができれば、 どこからでもアクセス可能です。

- フロッピーや CD-ROM ドライブなどのストレージデバイスを、 追加のハードウェアなしにネットワーク上の他のマシンに 使ってもらうことができます。

### 21.4.1. どのようにして動作するのか

NFS はクライアント、 サーバの二つの部分から 構成されます。 これは 需要(want)/供給(have) の関係として考えることができます。 クライアントはサーバが 供給 している データに対する 需要 があります。 サーバはそのデータをクライアントと共有します。 このシステムが適切に機能するために、 いくつかのプロセスが 設定され正しく動作していなければなりません。

サーバは以下のデーモンを動作させなければなりません:

- `nfsd` - NFS クライアントからの リクエストを処理する NFS デーモン。

- `mountd` - nfsd から渡された リクエストを実際に実行する NFS マウントデーモン。

- `portmap` - NFS サーバの利用しているポートを NFS クライアントから取得できるようにするためのポートマッパデーモン。

クライアント側ではデーモンを一つ実行する必要があります:

- `nfsiod` - NFS サーバからのリクエストを 処理する NFS 非同期 I/O デーモン。

### 21.4.2. NFS を設定する

幸運なことに、 FreeBSD システムで設定を行うのは簡単です。 実行させなければならないプロセスは、 `/etc/rc.conf` ファイルをちょっと編集することでブート時から実行させる ことができます。

NFS サーバでは、 以下の設定が必要です:

    portmap_enable="YES"
    nfs_server_enable="YES"
    nfs_server_flags="-u -t -n 4"
    mountd_flags="-r"

`mountd` は NFS サーバが有効になっている 場合、 自動的に実行されます。 `nfsd` への `-u`、 `-t` フラグは クライアントに UDP と TCP のサービスを提供することを指示します。 `-n 4` フラグは `nfsd` が 4 つのコピーを立ち上げることを指示します。

クライアント側では、 以下のようにします:

    nfs_client_enable="YES"
    nfs_client_flags="-n 4"

`nfsd` と同様に、 `-n 4` は `nfsiod` が 4 つのコピーを立ち上げることを指示します。

最後に `/etc/exports` という 設定ファイルを作成します。 exports ファイルはサーバのどのファイルシステムが 共有されるのか (“exported” といいます)、 またどのクライアントが共有できるのかを指定します。 ファイル中の各行は、 共有されるファイルシステムを 指定します。 ファイル中で指定できるオプションはたくさんありますが、 そのうちの少ししか使うことはないでしょう。 より細かいことに関しては exports(5) マニュアルページをお読み下さい。

いくつか `/etc/exports` の設定例 を示します:

以下の設定は、 サーバと同じドメイン名(ドメイン名が無いので)か、 `/etc/hosts` に記述のある三つのマシン に対して、 `/cdrom` を export します。 `-ro` オプションは共有されるファイルシステムを 読み込み専用にします。 このフラグにより、 リモートシステムは共有されたファイルシステム にたいして何の変更も行えなくなります。

    /cdrom -ro moe larry curly

以下の設定は、 IP アドレスによる三つのホストに対して `/home` を export します。 この設定はプライベートネットワークで DNS が走っていない 場合に便利な設定でしょう。 `-alldirs` フラグは指定されたファイルシステム 以下のディレクトリに対しても同様に export します。

    /home  -alldirs  10.0.0.2 10.0.0.3 10.0.0.4

以下の設定は、 サーバとは異なるドメイン名の二つの マシンに対して `/a` を export します。 `-maproot=0` フラグは、 リモートマシンの root ユーザが共有されたファイルシステムに root として書き込むことを 許可します。 -maproot=0 フラグが無ければ、 リモートマシンの root 権限を 持っていても共有されたファイルシステム上のファイルを変更する ことはできません。

    /a  -maproot=0  host.domain.com box.example.com

クライアントが export されたファイルシステムを共有 する際には、 そのような権限が与えられていなければなりません。 `/etc/exports` ファイルに クライアントが含まれているかどうか確認してください。

必要な変更はすべて行ったので、 FreeBSD を再起動してブート時からすべてが起動するようにするか、 root で以下のコマンドを実行します:

NFS サーバでは:

    # portmap
    # nfsd -u -t -n 4
    # mountd -r

NFS クライアントでは:

    # nfsiod -n 4

これでリモートのファイルシステムを実際にマウントする 準備ができました。 やり方は二通りあります。 この例では、 サーバの名前は `server` で、 クライアントの名前は `client` とします。 リモートファイルシステムを一時的にマウントするだけ、 もしくは設定をテストするだけなら、 クライアント上で root として以下のコマンドを実行してください:

    # mount server:/home /mnt

これにより、 クライアントの `/mnt` ディレクトリにサーバの `/home` が マウントされます。 もしすべてが正しく設定されていれば、 クライアントの /mnt に、 サーバにあるファイルすべてが見えるようになっているはずです。

リモートファイルシステムを今後も (リブートする度に) マウントしたいなら、 `/etc/fstab` ファイルに設定を追加する必要があります。 例としてはこのようになります:

    server:/home   /mnt    nfs rw  0   0

ほかのオプションに関しては fstab(5) マニュアル ページをお読み下さい。

### 21.4.3. 典型的な使い方

NFS にはいくつかすてきな使い方があります。 私は自分が管理している LAN でそれらを利用しています。 そのうちにいくつかをここで紹介しましょう。

ネットワークには幾つかのマシンがありますが、 CD-ROM ドライブを持っているのは一台だけです。 なぜかって? それは一台の CD-ROM ドライブをほかのマシンと NFS 経由で共有しているからです。 フロッピードライブについても同じことがいえます。

ネットワーク内に多くのマシンがあると、 様々な場所に ちらばる個人的なファイルは日に日に古くなってしまいます。 私はすべてのユーザのホームディレクトリを格納する、 中心となる NFS サーバを用意し、 LAN 上の残りのマシンと 共有しています。 そうすることで、 どこにログインしても、 同じホームディレクトリを使うことができるのです。

マシンのひとつに FreeBSD を再インストールするなら、 NFS こそその方法です。 ディストリビューション CD をファイル サーバに入れ、 再インストールを実行するだけです。

共用の `/usr/ports/distfiles` ディレクトリを用意して、 すべてのマシンで共有しています。 この方法だと、 別のマシンで既にインストールしたことのある port をインストールする場合、 再びすべてのソースをダウンロードする 必要がなくなります。

### 21.4.4. Problems integrating with other systems

原作: John Lind `<john@starfire.MN.ORG>`.

訳: 渡辺 智雄 `<tomo@jp.FreeBSD.org>`. 6 September 1996.

ISA用のイーサネットアダプタの中には性能が悪いため、 ネットワーク、 特に NFS で深刻な問題がおきるものがあります。 これは FreeBSD に限ったことではありませんが、 FreeBSD でも起こり得ます。

この問題は、 (FreeBSDを使用した) PC がシリコン・グラフィックス社や サン・マイクロシステムズ社などの高性能な WS にネットワーク接続されている場合に頻繁に起こります。 NFS マウントはうまく行きます。 また、 いくつかの操作もうまく働きますが、 他のシステム (WS) に対する要求や応答は続いていても、 突然サーバが クライアントの要求に対して反応しなくなります。 これは、 クライアントが FreeBSD か上記の WS であるとき、 にクライアント側に起きる現象です。 多くのシステムでは、 いったんこの問題が現われると、 行儀良くクライアントを終了する手段はありません。 NFS がこの状態に陥ってしまうと、 正常に戻すことはできないため、 多くの場合、 クライアントを強制終了し、 再び実行することが唯一の解決法となります。

“正しい”解決法は、 より高性能のイーサネットアダプタをFreeBSDシステムに インストールすることですが、 満足な操作ができるような簡単な方法があります。 もし、 FreeBSDシステムがサーバになるのなら、 クライアントからのマウント時に `-w=1024`オプションをつけて下さい。 もしFreeBSDシステムがクライアントになる のなら、 NFSファイルシステムを `-r=1024` オプションつきでマウントして下さい。 これらのオプションは自動的にマウントをおこなう場合には クライアントの `fstab` エントリの4番目のフィールドに指定してもよいですし、 手動マウントの場合は mount コマンドの `-o` パラメータで指定してもよいでしょう。

NFSサーバとクライアントが別々のネットワーク上にあるような 場合、 これと間違えやすい他の問題が起きることに注意して下さい。 そのような場合は、 ルータが必要な UDP 情報をきちんと ルーティングしているかを確かめて下さい。 そうでなければ、 たとえあなたが何をしようと解決できないでしょう。

次の例では、 `fastws`は高性能のWSのホスト (インタフェース)名で、 `freebox`は低性能のイーサネットアダプタを備えた FreeBSDシステムのホスト(インタフェース)名です。

また、 `/sharedfs` はエクスポートされる NFS ファイルシステムであり (`man exports` を見て下さい)、 `/project` はエクスポートされたファイルシステムの クライアント上のマウントポイントとなります。 全ての場合において、 `hard` や `soft`、 `bg` といった追加オプションが アプリケーションにより要求されるかもしれないことに 注意して下さい。

クライアント側 FreeBSD システム (`freebox`) の例は: freebox の `/etc/fstab` に次のように書いて下さい:

    fastws:/sharedfs /project nfs rw,-r=1024 0 0

`freebox` 上で手動で mount コマンドを実行する場合は次のようにして下さい:

    # mount -t nfs -o -r=1024 fastws:/sharedfs /project

サーバ側FreeBSDシステムの例は: `fastws` の `/etc/fstab` に次のように書いて下さい:

    freebox:/sharedfs /project nfs rw,-w=1024 0 0

`fastws` 上で手動で mount コマンドで実行する場合は次のようにして下さい:

    # mount -t nfs -o -w=1024 freebox:/sharedfs /project

近いうちにどのような 16 ビットのイーサネットアダプタでも 上記の読み出し、 書き込みサイズの制限なしの操作ができるようになるでしょう。

失敗が発生したとき何が起きているか関心のある人に、 なぜ回復不可能なのかも含めて説明します。 NFSは通常 (より小さいサイズへ分割されるかもしれませんが) 8Kの“ブロック” サイズで働きます。 イーサネットのパケットサイズは最大1500バイト程度なので、 上位階層のコードにとっては1つのユニットのままなのですが、 NFS “ブロック”は 複数のイーサネットパケットに分割されます。 そして受信され、 組み立て直されてから肯定応答 されなければなりません。 高性能のWSは次々に NFSユニットを構成するパケットを、 基準の範囲内で間隔を詰めて次々に送り出すことができます。 小さく、 容量の低いカードでは、 同じユニットの 前のパケットがホストに転送される前に、 後のパケットがそれを 踏みつぶしてしまいます。 このため全体としてのユニットは再構成もされないし、 肯定応答もされません。 その結果、 WSはタイムアウトして再送を試みますが、 8Kのユニット全体を再送しようとするので、 このプロセスは 際限無く繰り返されてしまいます。

ユニットサイズをイーサネットのパケットサイズの 制限以下に抑えることにより、 受信された完全な イーサネットパケットは個々に肯定応答を受けられることが 保証されるので、 デッドロック状態を避けることができるようになります。

高性能のカードを使っている場合でも、 高性能な WS が力任せに次々と PC システムにデータを送ったときには 踏みつぶし が起きるかもしれません。 そのような踏みつぶし は NFS “ユニット” では保証されていません。 踏みつぶしが起こったとき、 影響を受けたユニットは再送されます。 そして受信され、 組み立てられ、 肯定応答される公平な機会が与えられるでしょう。

## 21.5. Diskless operation

原作: Martin Renters `<martin@FreeBSD.org>`

訳: 鈴木 康修 `<yasu@hike.te.chiba-u.ac.jp>`

`netboot.com`/`netboot.rom` によって、 ディスクのないクライアントでネットワーク経由で FreeBSD マシンのブートを行い FreeBSD を走らせることができます。 2.0 ではローカルなスワップを持つことができます。 NFS 経由のスワッピングもサポートされています。

サポートされているイーサネットカード: Western Digital/SMC 8003, 8013, 8216 とその互換ボード, NE1000/NE2000 とその互換カード (再コンパイルが必要)

### 21.5.1. セットアップの手順

1. サーバにするマシンを見つけます。 このマシンには、 FreeBSD 2.0のバイナリとbootpを 記憶するだけの十分なディスクスペースが必要です。 tftp と NFS も使えます。 テストしたマシン:

   - HP9000/8xx / HP-UX 9.04以降 (9.04以前では動きません)

   - Sun/Solaris 2.3. (bootpが必要)

2. クライアントにIP、gateway、netmaskを提供する bootpサーバをセットアップします。

       diskless:\
               :ht=ether:\
               :ha=0000c01f848a:\
               :sm=255.255.255.0:\
               :hn:\
               :ds=192.1.2.3:\
               :ip=192.1.2.4:\
               :gw=192.1.2.5:\
               :vm=rfc1048:

3. クライアントにブート情報を提供する TFTP サーバを (bootp サーバと同じマシンに) セットアップします。 このファイルの名前は、 `cfg.`X.X.X.X`` (もしくは `/tftpboot/cfg.`X.X.X.X`` )で、 ここで `X.X.X.X` はクライアントの IP アドレスです。 このファイルの内容は netboot コマンドで有効です。 2.0では、 netboot は以下のようなコマンドを持ちます:

   help | helpリストの表示
   ip ``X.X.X.X`` | クライアントのIPアドレスの表示/セット
   server ``X.X.X.X`` | bootp/tftp サーバのアドレスの表示/セット
   netmask ``X.X.X.X`` | netmaskの表示/セット
   hostname `name` | hostnameの表示/セット
   kernel ``name`` | カーネル名の表示/セット
   rootfs ``ip:/fs`` | root ファイルシステムの表示/セット
   swapfs ``ip:/fs`` | swap ファイルシステムの表示/セット
   swapsize ``size`` | diskless swapsize を KBytes単位でセット
   diskboot | ディスクからのブート
   autoboot | ブートプロセスの続行
   trans `on`|`off` | トランシーバのオン|オフ
   flags `b` `c` `d` `h` `s` `v` | ブートフラグの設定

   完全にディスクレスな場合の一般的な cfg ファイルは以下のようになります:

       rootfs 192.1.2.3:/rootfs/myclient
       swapfs 192.1.2.3:/swapfs
       swapsize 20000
       hostname myclient.mydomain

   ローカルに swap を持つマシンについては以下のようになります:

       rootfs 192.1.2.3:/rootfs/myclient
       hostname myclient.mydomain

4. NFS サーバがクライアントにroot(必要ならswapも) ファイルシステムをexportしているか、 また、 クライアントがこれらのファイルシステムに ルートアクセスできるか確認します。 FreeBSDにおける一般的な `/etc/exports` ファイルは 以下のようになります:

       /rootfs/myclient -maproot=0:0 myclient.mydomain
       /swapfs -maproot=0:0 myclient.mydomain

   そして、 HP-UX側では以下のようになります:

       /rootfs/myclient -root=myclient.mydomain
       /swapfs -root=myclient.mydomain

5. NFS経由でスワッピングを行う場合 (完全にディスクレスな場合の設定)、 クライアントが使用する swap ファイルを `dd` で作成します。 もし、 `swapfs` コマンドが上記の例のように 引数 `/swapfs`を持ちそのサイズが 20000 である場合、 myclientに対するスワップファイルは `/swapfs/swap.`X.X.X.X`` で呼び出されます。 ここで `X.X.X.X` はクライアントの IP アドレスです。 例:

       # dd if=/dev/zero of=/swapfs/swap.192.1.2.4 bs=1k count=20000

   また、 スワッピングが開始されるとクライアントの スワップスペースはセンシティブな情報を含むようになるので、 不正なアクセスを防止するため、 このファイルへの 読み書きのアクセス制限がなされていることを確認して下さい:

       # chmod 0600 /swapfs/swap.192.1.2.4

6. クライアントがそれぞれのrootファイルシステムとして使う ディレクトリにrootファイルシステムを展開します (上記の例では`/rootfs/myclient`)。

   - HP-UX システム: サーバはHP9000/800 シリーズのマシンで、 HP-UX 9.04 以降が必要です。 これ以前のバージョンでは NFS を経由するデバイスファイルが作成ができません。

   - `/rootfs/myclient` に `/dev` を 展開する際に、 いくつかのシステム (HPUX) では FreeBSD に合った デバイスファイルが作成されないので 注意してください。 その際には最初の起動時にシングルユーザモードに 移行して (ブートの段階でCtrl-Cを押す)、 `/dev` に移って `sh ./MAKEDEV all` として、 クライアントからこれを 修正してください。

7. クライアントで `netboot.com` を実行するか、 `netboot.rom` ファイルから EPROMを作成します。

### 21.5.2. `/` および `/usr` ファイルシステムを共有して使用する

今のところ、 これを行う公式に認められた方法はありませんが、 私はそれぞれのクライアントで `/usr` ファイルシステムと個々の `/` ファイルシステムを共有して使っています。 どなたかこれをきちんと行うやり方の提案がありましたら、 私に、 もしくは FreeBSD core team グループに知らせてください。

### 21.5.3. 特定の設定についてnetbootをコンパイルする

`/sys/i386/boot/netboot/Makefile` の中の設定を変更して コンパイルすることで、 netbootでNE1000/2000 カードをサポートします。 このファイルの先頭にあるコメントを見てください。

## 21.6. ISDN

最終更新: Bill Lloyd `<wlloyd@mpd.ca>`.

訳: はらだ きろう `<kiroh@jp.FreeBSD.org>`. 11 December 1996.

ISDN 技術とハードウェアに関しては、 Dan Kegel's ISDN Page がよい参考になるでしょう。

ISDN の導入手順は、 簡単にいって以下のようになります。

- ヨーロッパ在住の方は、 ISDN カードの節に進んでください。

- ISDN を使って、 インターネットプロバイダに(専用線は使用せず)、 ダ イアルアップ接続しようとしている場合は、 ターミナルアダプタの使用を考えてみてください。 この方法はもっとも柔軟性があり、 プロバイダを変更した場 合の問題も少ないでしょう。

- 2つの LAN の間を接続しようする場合や、 ISDN 専用線を使用する場合 には、 スタンドアローンルータ/ブリッジの使用を勧めます。

どの方法を用いるかを決定するには、 費用が重要な要素になってきます。 以下に、 最も安価な方法から、 高価な方法まで順に説明していきます。

### 21.6.1. ISDN カード

著者:Hellmuth Michaelis `<hm@FreeBSD.org>`.

このセクションの記述は、 DSS1/Q.931 ISDN 標準がサポートされている国のユーザにのみ有効です。

最近増えてきている PC ISDN カードのうちいくつかは、 FreeBSD 2.2.x 以降で isdn4bsd ドライバパッケージによりサポートされています。 依然として開発中ではありますが、 ヨーロッパ中でうまく動作しているという報告があります。

最新の isdn4bsd は、 ftp://isdn4bsd@ftp.consol.de/pub/ から入手できます。 この ftp サイトでは、 ユーザ名として `isdn4bsd` を使い、 パスワードにメールアドレスを使ってログインする 必要があります。 ログインできたら `pub` ディレクトリに移動してください。 ユーザー名 `ftp` や `anonymous` によるログインでは、 必要なファイルにたどりつけません。

isdn4bsd は、 IP over raw HDLC もしくは同期 PPP を利用して他の ISDN ルータと接続できます。 留守番電話アプリケーションも使えます。

Siemens ISDN チップセット (ISAC/HSCX) を使用したものを主に多くのカードがサポートされています。 他のチップセット (Motorola、 Cologn ChipDesigns) のサポートは現在開発中です。 サポートされるカードの最新のリストは、 README を参照してください。

他の ISDN プロトコルを追加したい場合や、 サポートされていない ISDN PC カード サポートしたい場合など isdn4bsd を拡張したい場合は、 `<hm@kts.org>` までご連絡ください。

majordomoによるメーリングリストが利用できます。 参加するには、 本文に

    subscribe freebsd-isdn

と記入したメールを `<majordomo@FreeBSD.org>` 宛てに送ってください。

### 21.6.2. ISDN ターミナルアダプタ

ターミナルアダプタ (TA) はISDN に対して、 通常の電話線に対するモデムに相当するものです。

ほとんどの TA は、 標準のヘイズ AT コマンドセットを使用しているので、 単にモデムと置き換えて使うことができます。

TA は、 基本的にはモデムと同じように動作しますが、 接続方法は異なり、 通信速度も古いモデムよりはるかに速くなります。 PPP の設定を、 モデムの場合と同じように行ってください。 とくにシリアル速度を 使用できる最高速度に設定するのを忘れないでください。

プロバイダへの接続に TA を使用する最大のメリットは、 動的 PPP を行えることです。 最近 IP アドレスが不足してきているため、 ほとんどのプロバイダは、 専用の IP アドレスを割り当てないようになっています。 ほとんどのスタンドアローンルータは、 動的 IP アドレスに対応していません。

訳注: 最近の ISDN ルータでは、 IP アドレスの動的割り当てに対応しているものも多いようです。 ただし制限がある場合もありますので、 詳しくはメーカ に問い合わせてください。

TA を使用した場合の機能や接続の安定性は、 使用している PPP デーモンに完全に依存します。 そのため、 FreeBSD で PPP の設定が完了していれば、 使用している既存のモデムを ISDN の TA に簡単にアップグレードすることができます。 ただし、 それまでの PPP のプログラムに問題があった場合、 その問題は TA に置き換えてもそのまま残ります。

最高の安定性を求めるのであれば、 ユーザープロセス iijPPP ではなく、 カーネル PPPを使用してください。

以下の TA は、 FreeBSD で動作確認ずみです。

- Motorola BitSurfer および Bitsurfer Pro

- Adtran

他の TA もほとんどの場合うまく動作するでしょう。 TA のメーカーでは、 TA がほとんどの標準モデム AT コマンドセットを受け付けるようにするよう、 努力しているようです。

外部 TA を使う際の最大の問題点は、 モデムの場合と同じく良いシリアルカー ドが必要であるということです。

シリアルデバイスの詳細、 そして非同期シリアルポートと同期シリアルポートの差については、 同期・非同期の違いやシリアルデバイスについて説明したチュートリアル FreeBSD Serial Hardware を参照してください。

標準の PC シリアルポート(非同期)に接続された TA は、 128Kbs の接続を行っていても、 最大通信速度が 115.2Kbs に制限されてしまいます。 128Kbs の ISDN の性能を最大限に生かすためには、 TA を同期シリアルカードに接続しなければなりません。

内蔵 TA を購入して、 同期／非同期問題を片付けてしまおうとは思わないでく ださい。 内蔵 TA には、 単に標準 PC シリアルポートのチップが内蔵されてい るだけです。 内蔵 TA の利点といえば、 シリアルケーブルを買わなくていいと いうことと、 電源コンセントが一つ少なくて済むということくらいでしょう。

同期カードと TA の組合せは 386 の FreeBSD マシンの場合でも、 スタンドア ローンのルータと同程度の速度は確保できます。 またこの組合せでは、 ルータより柔軟な設定が可能です。

同期カード/TA を選ぶか、 スタンドアローンルータを選ぶかは、 多分に宗教的な問題です。 メーリングリストでもいくつか議論がありました。 議論の内容に ついては、 archives を参照してください。

### 21.6.3. スタンドアローン ISDN ブリッジ/ルータ

ISDN ブリッジやルータは、 OS 特有のものではありません。 もちろん FreeBSD 特有のものでもありません。 ルーティングやブリッジング技術に関する詳細は、 ネットワークの参考書をご覧ください。

このページでは、 ルータとブリッジにどちらでもあてはまるように記述します。

ISDN ルータ/ブリッジは、 ローエンドの製品のコストが下がってきていることもあり、 より一般的に使用されるようになるでしょう。 ISDN ルータは、 外見は小さな箱で、 ローカルのイーサネットネットワーク(もしくはカード)と直接、 接続します。 また、 自身で他のブリッジ/ルータとの接続を制御します。 PPP や他のプロトコルを使用するためのソフトウェアは、 すべて組み込まれています。

ルータは、 完全な同期 ISDN 接続を使用するため、 通常の TA と比較してスループットが大幅に向上します。

ISDN ルータ/ブリッジを使用する場合の最大の問題点は、 各メーカーの製品間に相性の問題がまだ存在することです。 インターネットプロバイダとの接続を考えている場合には、 プロバイダと相談することをお勧めします。

事務所の LAN と家庭の LAN の間など、 二つの LAN セグメントの間を接続しようとしている場合は、 ブリッジ/ルータの使用がもっともメンテナンスが 簡単で、 努力が少なくてすむ方法です。 両側の機材を購入するのであれば、 メーカー間の接続性の問題もないでしょう。

たとえば家庭の LAN や出張所の LAN を本社のネットワークに接続するためには、 以下のような設定が使用できます。

Example 21-1. 出張所 LAN または 家庭 LAN

ネットワークは、 10 Base T イーサネットです。 ルータとネットワークの間は、 必要に応じて AUI/10BT トランシーバを使って接続します。

    ---Sun ワークステーション
    |
    ---FreeBSD マシン
    |
    ---Windows 95 (別に勧めているわけじゃありません)
    |
    スタンドアローンルータ
       |
    ISDN BRI ライン

家庭/出張所 LAN で、 一台しかコンピュータを接続しないのであれば、 クロス のツイストペアケーブルを使用して、 スタンドアローンルータと直結も可能です。

Example 21-2. 本社 LAN や他の LAN

ネットワークは、 ツイストペアイーサネットです。

    -------Novell サーバ
    |  |
    |ハ ---Sun
    |  |
    |   ---FreeBSD
    |  |
    |ブ ---Windows 95
    |  |
    |___---スタンドアローンルータ
            |
        ISDN BRI ライン

ほとんどのルータ/ブリッジでは、 別々の二つのサイトに対して、 同時にそれ ぞれ独立した二つの PPP 接続が可能です。 これは、 通常の TA ではサポートされない機能で、 ルータ/ブリッジ接続の大きな利点です (シリアルポートを 二つもつ特殊(そして高価な) TA では可能です)。 チャンネル割り当てや MPP などと混同しないでください。

これは、 大変便利な機能です。 たとえば事務所で専用線 ISDN 接続を使用していて、 別の ISDN ラインを購入したくないとします。 この場合、 事務所のルータは、 一つの専用線 B チャンネル接続(64Kbs)を維持しつつ、 別 の B チャンネルを他の用途に使用することができます。 たとえば、 他の場所 とのダイアルイン、 ダイアルアウトに使用したり、 バンド幅を増やすために、 インターネットとの接続への動的な割り当て(MPP など)に使用したりすることが可能です。

またイーサネットブリッジは、 IP パケットだけでなく IPX/SPX などすべての プロトコルのパケットを中継することが可能です。

## 21.7. NIS/YP

原作: Bill Swingle `<unfurl@FreeBSD.org>`, 2000 年 1 月 21 日, 監修: Eric Ogren `<eogren@earthlink.net>`, Udo Erdelhoff `<ue@nathan.ruhr.de>`, 2000 年 6 月.

### 21.7.1. NIS/YP とは?

NIS とは Network Information Services の略で Sun Microsystems によって Unix の (もともとは SunOS の) 集中管理のために開発されました。 現在では事実上の業界標準になっており、 主要な Unix は (Solaris、 HP-UX、 AIX、 Linux、 NetBSD、 OpenBSD、 FreeBSD、 等々) すべてこれをサポートしています。

NIS は元々、 イエローページ (または yp) として知られていましたが、 著作権を侵害しているとして Sun はその名を変えさせられました。

NIS は RPC を使ったクライアント/サーバシステムです。 これを使うと NISドメイン内のマシン間で、 共通の設定ファイルを共有することができます。 また、 NIS を使うことでシステム管理者は最小限の設定データで NIS クライアントを立ち上げることができ、 1 ヶ所から設定データの追加、 削除、 変更が可能です。

NIS は Windows NT のドメインシステムに似ています。 内部の実装は似ても似つかないものですが、 基本的な機能を 対比することはできます。

### 21.7.2. 知っておくべき用語 / プロセス

NIS サーバの立ち上げや NIS クライアントの設定など、 NIS を FreeBSD に導入するにあたって、 目にするであろう用語や重要なユーザプロセスがいくつかあります。

- NIS ドメイン名. NIS マスターサーバ一つと そのクライアント (スレーブサーバを含む) は一つの NIS ドメイン名を 持ちます。 NT のドメイン名同様、 NIS ドメイン名は DNS とは何の関係もありません。

- portmap. `portmap` は RPC (Remote Procedure Call、 NIS で使われるネットワークプロトコル) を利用するために実行しておかなければなりません。 `portmap` が動いていなければ、 NIS サーバの起動もクライアントとしての機能も得られません。

- ypbind. `ypbind` は NIS クライアントを NIS サーバに“結び付け”ます。 これは NIS ドメイン名をシステムから受け、 RPC を用いてサーバに接続します。 `ypbind` はクライアントとサーバのコミュニケーションの中枢であり、 もしクライアントマシンの `ypbind` が機能を停止した場合は NIS サーバへアクセスできなくなります。

- ypserv. `ypserv` は NIS サーバでのみ実行されるもので、 NIS のサーバプロセスそのものです。 ypserv が機能を停止したときは、 サーバは NIS リクエストに答えられなくなります (運が良ければ、 スレーブサーバがいて代わりを努めるでしょう)。

  > Note: 今まで使っていたサーバが機能を停止したとき、 別のサーバに再接続しに行かない NIS の実装もいくつかあります (FreeBSD のものは違います)。 そのような場合に復帰するための唯一の方法は、 サーバプロセス (あるいはサーバ全体)、 もしくはクライアントの `ypbind` プロセスを再スタートすることです。

- rpc.yppasswdd. `rpc.yppasswdd` は NIS マスターサーバで動かされるべきもう一つのプロセスで、 NIS クライアントから NIS パスワードを変更させるデーモンです。 このデーモンが動いていないときは、 ユーザは NIS マスターサーバに login し、 そこでパスワードを変更することになります。

### 21.7.3. 動作のしくみ

NIS 環境にあるホストは、 次の 3 種類に分類されます。 それは、 マスターサーバ、 スレーブサーバ、 クライアントです。 サーバは、 ホストの設定情報の中心的な情報格納庫の役割をします。 マスターサーバは元となる信頼できる情報を保持し、 スレーブサーバは、 冗長性を確保するため、 この情報をミラーします。 そしてクライアントは、 サーバから情報の提供を受けて動作します。

この方法を用いることで、 数多くのファイルにある情報が共有できます。 よく NIS で共有されるのは、 `master.passwd` や `group`、 `hosts` といったファイルです。 クライアント上のプロセスで、 通常ローカルのファイルにある情報が必要 となったとき、 クライアントは接続しているサーバに問い合わせを行い、 その情報を得ます。

#### 21.7.3.1. マシンの分類

- NIS マスターサーバ. このサーバは Windows NT で言うところのプライマリ ドメインコントローラにあたります。 すべての NIS クライアントで利用されるファイルを保守し、 `passwd` や `group`、 その他 NIS クライアントが参照するファイルは、 マスターサーバにあります。

  > Note: 一つのマシンが一つ以上の NIS ドメインのマスターサーバになることは可能です。 しかし、 ここでは比較的小規模の NIS 環境を対象としているため、 そのような場合については扱いません。

- NIS スレーブサーバ。 NT で言うところのバックアップドメインコントローラに似たもので、 NIS スレーブサーバは NIS マスターサーバのデータファイルのコピーを保持します。 NIS スレーブサーバは重要な環境で必要とされる冗長性を提供し、 マスターサーバの負荷のバランスをとります。 NIS クライアントは常に最初にレスポンスを返したサーバを NIS サーバとして接続しますが、 これにはスレーブサーバも含まれます。

- NIS クライアント。 NIS クライアントは大部分の NT ワークステーションのように、 logon に際して NIS サーバに対して (NT ワークステーションの場合では NT ドメインコントローラに) 認証します。

### 21.7.4. NIS/YP を使う

この節では NIS 環境の立ち上げ例を取り上げます。

> Note: この節ではあなたが FreeBSD 3.3 以降を使っているものとします。 ここで与えられる指示はおそらく FreeBSD の 3.0 以降の、 どのバージョンでも機能するでしょうが、 それを保証するものではありません。

#### 21.7.4.1. 計画を立てる

あなたが大学の小さな研究室の管理人であるとしましょう。 この研究室は 15 台の FreeBSD マシンからなっていて、 現在はまだ集中管理されていません。 すなわち、 各マシンは `/etc/passwd` と `/etc/master.passwd` を各々が持っています。 これらのファイルは手動でお互いに同期させています。 つまり現時点では、 新しいユーザをあなたが追加するとき、 `adduser` を 15 ヶ所すべてで実行しなければなりません。 これは明らかに変える必要があるため、 あなたはこのうち 2 台をサーバにして NIS を導入することを決めました。

その結果、 研究室の設定はこのようなものになります:

マシンの名前 | IP address | 役割
--- | --- | ---
`ellington` | `10.0.0.2` | NIS マスタ
`coltrane` | `10.0.0.3` | NIS スレーブ
`basie` | `10.0.0.4` | 教員用のワークステーション
`bird` | `10.0.0.5` | クライアントマシン
`cli[1-11]` | `10.0.0.[6-17]` | その他のクライアントマシン

もし NIS によるシステム管理の設定を行なうのが初めてなら、 どのようにしたいのか、 ひととおり最後まで考えてみることをお勧めします。 ネットワークの規模によらず、 いくつか決めるべきことがあるからです。

##### 21.7.4.1.1. NIS ドメイン名を決める

ここでいうドメイン名は、 今まであなたが使っていた、 いわゆる “ドメイン名” と呼んでいたものとは違います。 正確には “NIS ドメイン名” と呼ばれます。 クライアントがサーバに情報を要求するとき、 その要求には自分が属する NIS ドメインの名前が含まれています。 これは、 1 つのネットワークに複数のサーバがある場合に、 どのサーバが要求を処理すれば良いかを決めるために使われます。 NIS ドメイン名とは、 関連のあるホストをグループ化するための名前である、 と考えると良いでしょう。

組織によってはインターネットのドメイン名を NIS ドメイン名に使っているところがありますが、 これはネットワークのトラブルをデバッグするときに混乱の原因となるため、 お勧めできません。 NIS ドメイン名はネットワーク内で一意でなければならないので、 ドメイン名がドメインに含まれるマシンを表すようなものであれば、 分かりやすくなります。 たとえば Acme 社のアート(Art)部門であれば、 NIS ドメイン名を"acme-art"とすれば良いでしょう。

しかしながら、 オペレーティングシステムによっては、 そのネットワークドメイン名を NIS のドメイン名として使うものもあります (特に SunOS)。 あなたのネットワークにそのような制限のあるマシンが 1 台でもあるときは、 NIS のドメイン名としてインターネットのネットワークドメイン名を使わなければいけません。

##### 21.7.4.1.2. サーバマシンの物理的な条件とは

NIS サーバとして使うマシンを選ぶ際には、 いくつかの注意点があります。 NIS における困ったことの一つに、 クライアントのサーバへの依存度があります。 クライアントが自分の NIS ドメインのサーバに接続できない場合、 マシンが使用不能になることがよくあります。 もし、 ユーザやグループに関する情報が得られなければ、 ほとんどのシステムは一時的にですが停止してしまいます。 こういったことを念頭に置いて、 しょっちゅうリブートされるマシンや、 開発に使われそうなマシンを選ばないようにしなければなりません。 理想的には、 NIS サーバはスタンドアロンで NIS サーバ専用となるマシンにするべきです。 ネットワークの負荷が重くなければ、 他のサービスを走らせているマシンを NIS サーバにしてもかまいません。 ただし NIS サーバが使えなくなると、 すべてのクライアントに影響をおよぼす、 という点には注意しなければなりません。

#### 21.7.4.2. NIS サーバ

元となるすべての NIS 情報は、 NIS マスターサーバと呼ばれる 1 台のマシンに置かれます。 この情報が格納されるデータベースを NIS マップと呼びます。 FreeBSDでは、 このマップは `/var/yp/[domainname]` に置かれます。 `[domainname]` は、 サーバがサービスする NIS ドメインです。 1 台の NIS サーバが複数のドメインをサポートすることも可能です。 つまり、 このディレクトリを各々のドメインごとに作ることができ、 各ドメインごと、 独立したマップの集合を持つことになります。

NIS のマスターサーバとスレーブサーバ上では、 `ypserv` デーモンがすべての NIS 要求を処理します。 `ypserv` は NIS クライアントからの要求を受け付け、 ドメイン名とマップ名を対応するデータベースファイルへのパスに変換し、 データをクライアントに返送します。

##### 21.7.4.2.1. NIS マスターサーバの設定

やりたいことにもよりますが、 NIS マスターサーバの設定は比較的単純です。 FreeBSD は初期状態で NIS に対応しています。 必要なことは以下の行を `/etc/rc.conf` に追加し、 FreeBSD をリスタートすることだけです。

-     nisdomainname="test-domain"

  この行はネットワークのセットアップ時に (すなわち再起動したときに) NIS のドメイン名を test-domain にセットします。

-     nis_server_enable="YES"

  これは FreeBSD に、 次にネットワークが立ち上がったとき NIS のサーバプロセスを起動させます。

-     nis_yppasswdd_enable="YES"

  これは `rpc.yppasswdd` デーモンを有効にします。 上述したようにこれはユーザが NIS のパスワードをクライアントのマシンから変更することを可能にします。

あと、 あなたがしなければいけないことはスーパユーザ権限でコマンド `/etc/netstart` を実行することです。 これにより `/etc/rc.conf` で定義された値を使ってすべての設定が行なわれます。

##### 21.7.4.2.2. NIS マップの初期化

NIS マップ とは `/var/yp` ディレクトリにあるデータベースファイルです。 これらは NIS マスタの `/etc` ディレクトリの設定ファイルから作られます。 唯一の例外は `/etc/master.passwd` ファイルです。 これは、 root や他の管理用アカウントのパスワードまでその NIS ドメインのすべてのサーバに伝えたくないという、 もっともな理由によるものです。 このため NIS マップの初期化の前に以下を行う必要があります。

    # cp /etc/master.passwd /var/yp/master.passwd
    # cd /var/yp
    # vi master.passwd

あなたはシステムに関するアカウント (bin、 tty、 kmem、 games、 etc) をすべて削除しなければなりません。 またあなたが NIS クライアントに伝えたくないと思うアカウント (たとえば root や他の UID が 0 (スーパユーザ) のアカウント) についても削除する必要があります。

> Note: `/var/yp/master.passwd` が グループや全世界から読めるようになっていないようにしてください (モード 600)! 必要なら `chmod` コマンドを 使ってください。

すべてが終わったらマップを初期化します! FreeBSD には、 これを行うために `ypinit` という名のスクリプトが含まれています (詳細はそのマニュアルページをご覧ください)。 このスクリプトはほとんどの UNIX OS で存在しますが、 すべてとは限らないことを覚えておいてください。 Digital Unix/Compaq Tru64 Unix では `ypsetup` と呼ばれています。 NIS マスタのためのマップを作るためには `-m` オプションを `ypinit` に与えます。 上述のステップを完了しているなら、 以下を実行して NIS マップを生成します。

    ellington# ypinit -m test-domain
    Server Type: MASTER Domain: test-domain
    Creating an YP server will require that you answer a few questions.
    Questions will all be asked at the beginning of the procedure.
    Do you want this procedure to quit on non-fatal errors? [y/n: n] n
    Ok, please remember to go back and redo manually whatever fails.
    If you don't, something might not work.
    At this point, we have to construct a list of this domains YP servers.
    rod.darktech.org is already known as master server.
    Please continue to add any slave servers, one per line. When you are
    done with the list, type a <control D>.
    master server   :  ellington
    next host to add:  coltrane
    next host to add:  ^D
    The current list of NIS servers looks like this:
    ellington
    coltrane
    Is this correct?  [y/n: y] y

    [..output from map generation..]

    NIS Map update completed.
    ellington has been setup as an YP master server without any errors.

`ypinit` は `/var/yp/Makefile` を `/var/yp/Makefile.dist` から作成します。 作成されていれば、 そのファイルはあなたが扱っているのが FreeBSD のみからなる、 サーバが一つだけの NIS 環境であるという前提に立っています。 test-domain はスレーブサーバを一つ持っていますので、 `/var/yp/Makefile` を編集する必要があります。

    ellington# vi /var/yp/Makefile

`NOPUSH = "True"' としている行を (もし既にコメントアウトされていないならば) コメントアウトしなければなりません。

##### 21.7.4.2.3. NIS スレーブサーバの設定

NIS スレーブサーバの設定はマスターサーバの設定以上に簡単です。 スレーブサーバにログオンし `/etc/rc.conf` ファイルを前回と同様に編集します。 唯一の違うところは `ypinit` の実行に `-s` オプションを使わなければいけないことです。 `-s` オプションは NIS マスターサーバの名前を要求し、 コマンドラインは以下のようになります。

    coltrane# ypinit -s ellington test-domain

    Server Type: SLAVE Domain: test-domain Master: ellington

    Creating an YP server will require that you answer a few questions.
    Questions will all be asked at the beginning of the procedure.

    Do you want this procedure to quit on non-fatal errors? [y/n: n]  n

    Ok, please remember to go back and redo manually whatever fails.
    If you don't, something might not work.
    There will be no further questions. The remainder of the procedure
    should take a few minutes, to copy the databases from ellington.
    Transferring netgroup...
    ypxfr: Exiting: Map successfully transferred
    Transferring netgroup.byuser...
    ypxfr: Exiting: Map successfully transferred
    Transferring netgroup.byhost...
    ypxfr: Exiting: Map successfully transferred
    Transferring master.passwd.byuid...
    ypxfr: Exiting: Map successfully transferred
    Transferring passwd.byuid...
    ypxfr: Exiting: Map successfully transferred
    Transferring passwd.byname...
    ypxfr: Exiting: Map successfully transferred
    Transferring group.bygid...
    ypxfr: Exiting: Map successfully transferred
    Transferring group.byname...
    ypxfr: Exiting: Map successfully transferred
    Transferring services.byname...
    ypxfr: Exiting: Map successfully transferred
    Transferring rpc.bynumber...
    ypxfr: Exiting: Map successfully transferred
    Transferring rpc.byname...
    ypxfr: Exiting: Map successfully transferred
    Transferring protocols.byname...
    ypxfr: Exiting: Map successfully transferred
    Transferring master.passwd.byname...
    ypxfr: Exiting: Map successfully transferred
    Transferring networks.byname...
    ypxfr: Exiting: Map successfully transferred
    Transferring networks.byaddr...
    ypxfr: Exiting: Map successfully transferred
    Transferring netid.byname...
    ypxfr: Exiting: Map successfully transferred
    Transferring hosts.byaddr...
    ypxfr: Exiting: Map successfully transferred
    Transferring protocols.bynumber...
    ypxfr: Exiting: Map successfully transferred
    Transferring ypservers...
    ypxfr: Exiting: Map successfully transferred
    Transferring hosts.byname...
    ypxfr: Exiting: Map successfully transferred

    coltrane has been setup as an YP slave server without any errors.
    Don't forget to update map ypservers on ellington.

この例の場合、 `/var/yp/test-domain` というディレクトリが必要になります。 NIS マスターサーバのマップファイルのコピーはこのディレクトリに置かれますが、 あなたは、 これらが確実に最新のものに維持されるようにする必要があります。 次のエントリをスレーブサーバの `/etc/crontab` に追加することで、 最新のものに保つことができます。

    20      *       *       *       *       root   /usr/libexec/ypxfr passwd.byname
    21      *       *       *       *       root   /usr/libexec/ypxfr passwd.byuid

この二行は、 スレーブサーバにあるマップファイルをマスターサーバのマップファイルと同期させるものですが、 必須というわけではありません。 なぜなら、 マスターサーバは、 NIS マップに対する変更をスレーブサーバに伝えようとするからです。 しかし、 サーバが管理するシステムにとってパスワード情報はとても重要なものですので、 強制的に更新してしまう方が良いでしょう。 特に、 マップファイルの更新がきちんと行なわれるかどうかわからないくらい混雑するネットワークでは、 重要なポイントになります。

コマンド `/etc/netstart` をスレーブサーバでも実行してください。 NIS サーバを起動します。

#### 21.7.4.3. NIS クライアント

NIS クライアントは `ypbind` デーモンを使って、 特定の NIS サーバとの間に結合 (binding) と呼ばれる関係を成立させます。 `ypbind` はシステムのデフォルトのドメイン (`domainname` コマンドで設定されます) をチェックし、 RPC 要求をブロードキャストパケットとしてローカルネットワークに送信します。 この RPC 要求により、 `ypbind` が結合を成立させようとしているドメイン名が指定されます。 要求されているドメイン名に対してサービスするよう設定されたサーバが ブロードキャストパケットを受信すると、 サーバは `ypbind` に応答し、 `ypbind` は応答のあったサーバのアドレスを記録します。 複数のサーバがある(たとえば一つのマスターサーバと、 複数のスレーブサーバがある)場合、 `ypbind` は、 最初に応答したサーバのアドレスを使用します。 これ以降、 クライアントのシステムは、 すべての NIS の要求をそのサーバに向けて送信します。 `ypbind` は、 サーバが順調に動作していることを確認するため、 時々 “ping” をサーバに送ります。 反応が戻ってくるべき時間内に ping に対する応答が来なければ、 `ypbind` は、 そのドメインを結合不能(unbound)として記録し、 別のサーバを見つけるべく、 再びブロードキャストパケットの送信を行います。

##### 21.7.4.3.1. NIS クライアントの設定

FreeBSD マシンにおける NIS クライアントの設定は非常に単純です。

- `/etc/rc.conf` ファイルを編集して以下の行を追加し、 ネットワークのセットアップ時に NIS ドメイン名をセットして `ypbind` を起動させます。

      nisdomainname="test-domain"
      nis_client_enable="YES"

- NIS サーバにあるすべてのパスワードエントリを取り込むため、 `vipw` コマンドで以下の行を `/etc/master.passwd` に追加します。

      +:::::::::

  > Note: この行によって NIS サーバのパスワードマップにアカウントがある人全員にアカウントが与えられます。 この行を変更すると、 さまざまな NIS クライアントの設定を行なうことが可能です。 詳細は netgroups の部分を、 さらに詳しい情報については、 O'Reilly の `Managing NFS and NIS` をお読みください。

- NIS サーバにあるすべてのグループエントリを取り込むため、 以下の行を `/etc/group` に追加します。

      +:*::

上記の手順がすべて完了すれば、 `ypcat passwd` によって NIS サーバの passwd マップが参照できるようになっているはずです。

### 21.7.5. NIS セキュリティ

一般にドメイン名さえ知っていれば、 どこにいるリモートユーザでも ypserv に RPC を発行して NIS マップの内容を引き出すことができます。 こういった不正なやりとりを防ぐため、 ypserv には securenets と呼ばれる機能があります。 これはアクセスを決められたホストだけに制限する機能です。 ypserv は起動時に `/var/yp/securenets` ファイルから securenets に関する情報を読み込みます。

> Note: 上記のパス名は、 `-p` オプションで指定されたパス名によって変わります。 このファイルは、 空白で区切られたネットワーク指定とネットマスクのエントリからなっていて、 “#” で始まる行はコメントとみなされます。 簡単な securenets ファイルの例を以下に示します。

    # allow connections from local host -- mandatory
    127.0.0.1     255.255.255.255
    # allow connections from any host
    # on the 192.168.128.0 network
    192.168.128.0 255.255.255.0
    # allow connections from any host
    # between 10.0.0.0 to 10.0.15.255
    10.0.0.0      255.255.240.0

ypserv が上記のルールの一つと合致するアドレスからの要求を受け取った場合、 処理は通常に行なわれます。 もしアドレスがルールに合致しなければ、 その要求は無視されて警告メッセージがログに記録されます。 また、 `/var/yp/securenets` が存在しない場合、 ypserv はすべてのホストからの接続を受け入れます。

ypserv は Wietse Venema 氏による tcpwrapper パッケージもサポートしています。 そのため、 `/var/yp/securenets` の代わりに tcpwrapper の設定ファイルを使ってアクセス制御を行なうことも可能です。

> Note: これらのアクセス制御機能は一定のセキュリティを提供しますが、 どちらも特権ポートのテストのような “IP spoofing” 攻撃に対して脆弱です。 すべての NIS 関連のトラフィックはファイアウォールでブロックされるべきです。

> `/var/yp/securenets` を使っているサーバは、 古風な TCP/IP 実装を持つ正しいクライアントへのサービスに失敗することがあります。 これらの実装の中にはブロードキャストのホストビットをすべて 0 でセットしてしまったり ブロードキャストアドレスの計算でサブネットマスクを見落としてしまったりするものがあります。 これらの問題はクライアントの設定を正しく行なうことで修正できますが、 他の問題は問題となっているクライアントシステムの撤去か `/var/yp/securenets` の放棄が必要です。

> このような古風な TCP/IP の実装を持つサーバで `/var/yp/securenets` を使うことは非常に悪い考えであり、 あなたのネットワークの大部分において NIS の機能を失うことになるでしょう。

> tcpwrapper パッケージの使用はあなたの NIS サーバのレイテンシ (遅延) を増加させます。 追加された遅延は、 特に混雑したネットワークや遅い NIS サーバでクライアントプログラムのタイムアウトを引き起こすに十分なだけ長いでしょう。 一つ以上のクライアントシステムがこれらの兆候を示したなら、 あなたは問題となっているクライアントシステムを NIS スレーブサーバにして自分自身に結び付くように強制すべきです。

### 21.7.6. 何人かのユーザのログオンを遮断する

わたしたちの研究室には `basie` という、 教員専用のマシンがあります。 わたしたちはこのマシンを NIS ドメインの外に出したくないのですが、 マスタ NIS サーバの `passwd` ファイルには教員と学生の両方が載っています。 どうしたらいいでしょう?

当該人物が NIS のデータベースに載っていても、 そのユーザがマシンにログオンできないようにする方法があります。 そうするには、 -`username` を クライアントマシンの `/etc/master.passwd` ファイルの末尾に付け足します。 `username` はあなたがログインさせたくないと思っているユーザのユーザ名です。 これは `vipw` で行うべきです。 `vipw` は `/etc/master.passwd` への変更をチェックし、 編集終了後パスワードデータベースを再構築します。 たとえば、 ユーザ bill が `basie` にログオンするのを防ぎたいなら、 以下のようにします。

    basie# vipw
    [add -bill to the end, exit]
    vipw: rebuilding the database...
    vipw: done

    basie# cat /etc/master.passwd

    root:[password]:0:0::0:0:The super-user:/root:/bin/csh
    toor:[password]:0:0::0:0:The other super-user:/root:/bin/sh
    daemon:*:1:1::0:0:Owner of many system processes:/root:/sbin/nologin
    operator:*:2:5::0:0:System &:/:/sbin/nologin
    bin:*:3:7::0:0:Binaries Commands and Source,,,:/:/sbin/nologin
    tty:*:4:65533::0:0:Tty Sandbox:/:/sbin/nologin
    kmem:*:5:65533::0:0:KMem Sandbox:/:/sbin/nologin
    games:*:7:13::0:0:Games pseudo-user:/usr/games:/sbin/nologin
    news:*:8:8::0:0:News Subsystem:/:/sbin/nologin
    man:*:9:9::0:0:Mister Man Pages:/usr/share/man:/sbin/nologin
    bind:*:53:53::0:0:Bind Sandbox:/:/sbin/nologin
    uucp:*:66:66::0:0:UUCP pseudo-user:/var/spool/uucppublic:/usr/libexec/uucp/uucico
    xten:*:67:67::0:0:X-10 daemon:/usr/local/xten:/sbin/nologin
    pop:*:68:6::0:0:Post Office Owner:/nonexistent:/sbin/nologin
    nobody:*:65534:65534::0:0:Unprivileged user:/nonexistent:/sbin/nologin
    +:::::::::
    -bill

    basie#

### 21.7.7. netgroups の利用

netgroups の部分の原作: Udo Erdelhoff `<ue@nathan.ruhr.de>`. 2000 年 7 月.

前節までに見てきた手法は, 極めて少ないユーザ/マシン向けに個別のルールを必要としている場合にはうまく機能します。 しかし大きなネットワークでは, ユーザに触られたくないマシンへログオンを防ぐのを忘れるでしょうし, そうでなくとも各マシンを個別に設定して回らなければならず、 集中管理という NIS の恩恵を失ってしまいます。

NIS の開発者はこの問題を netgroups と呼ばれる方法で解決しました。 彼らの目的とその意味合いは UNIX のファイルシステムで使われている一般的なグループと比較できます。 主たる相違は数字による id を欠いていることと、 ネットグループを定義するのにユーザアカウントと別のネットグループの、 両方を含められる機能です。

ネットグループは百人/台以上のユーザとマシンを含む、 大きく複雑なネットワークを扱うために開発されました。 もし、 あなたがこのような状況を扱わなければならないなら便利なものなのですが、 この複雑さは単純な例でネットグループの説明をすることをほとんど不可能にしています。 この部の残りで使われている例は、 この問題を実演しています。

あなたの行なった、 研究室への NIS の導入の成功が上司の目に止ったとしましょう。 あなたの次の仕事は、 あなたの NIS ドメインをキャンパスの他のいくつものマシンを覆うものへ拡張することです。 二つの表は新しいユーザと新しいマシンの名前とその説明を含んでいます。

ユーザの名前 | 説明
--- | ---
alpha, beta | IT 学科の通常の職員
charlie, delta | IT 学科の新しい見習い
echo, foxtrott, golf, ... | 一般の職員
able, baker, ... | まだインターン

マシンの名前 | 説明
--- | ---
war, death, famine, polution | 最も重要なサーバ。 IT 職員だけがログオンを許されます。
pride, greed, envy, wraith, lust, sloth | あまり重要でないサーバ。 IT 学科の全員がログオンを許されます。
one, two, three, four, ... | 通常のワークステーション。 本当の 職員だけがログオンを許されます。
trashcan | 重要なデータの入っていないひどく古いマシン。 インターンでもこのマシンの使用を許されます。

もしあなたがこの手の制限を各ユーザを個別にブロックする形で実装するなら、 あなたはそのシステムにログオンすることが許されていない各ユーザについて -`user` という 1 行を、 各システムのパスワードに追加しなければならなくなるでしょう。 もしあなたが 1 エントリでも忘れればトラブルに巻き込まれてしまいます。 最初のセットアップの時にこれを正しく行えるのはありえることかも知れませんが、 遂には連日の業務の間に例の行を追加し忘れてしまうでしょう。 結局マーフィーは楽観主義者だったのです。

この状況をネットグループで扱うといくつかの有利な点があります。 各ユーザを別個に扱う必要はなく、 ユーザを一つ以上のネットグループに割り当て、 ネットグループの全メンバのログインを許可したり禁止したりすることができます。 新しいマシンを追加するときはネットグループへログインの制限を定義するだけ、 新しいユーザを追加するときはそのユーザを一つ以上のネットグループへ追加するだけで、 それぞれ行なうことができます。 これらの変更は互いに独立なので、 “ユーザとマシンの組合わせをどうするか” は存在しなくなります。 あなたの NIS のセットアップが注意深く計画されていれば、 マシンへのアクセスを認めるにも拒否するにも中心の設定をたった一カ所変更するだけです。

最初のステップは NIS マップ netgroup の初期化です。 FreeBSD の ypinit はこのマップをデフォルトで作りませんが、 その NIS の実装はそれが作られさえすればそれをサポートするものです。 空のマップを作るには、 単に

    ellington# vi /var/yp/netgroup

とタイプして内容を追加していきます。 わたしたちの例では、 すくなくとも IT 職員、 IT 見習い、 一般職員、 インターンの 4 つのネットグループが必要です。

    IT_EMP  (,alpha,test-domain)    (,beta,test-domain)
    IT_APP  (,charlie,test-domain)  (,delta,test-domain)
    USERS   (,echo,test-domain)     (,foxtrott,test-domain) \
            (,golf,test-domain)
    INTERNS (,able,test-domain)     (,baker,test-domain)

`IT_EMP`、 `IT_APP` 等はネットグループの名前です。 それぞれの括弧で囲まれたグループが一人以上のユーザアカウントをそれに登録しています。 グループの 3 つのフィールドは

1. その記述が有効なホスト(群)の名称。 ホスト名を特記しなければそのエントリはすべてのホストで有効です。 もしあなたがホスト名を特記するなら、 あなたは闇と恐怖と全き混乱の領域となるでしょう。

2. このネットグループに所属するアカウントの名称。

3. そのアカウントの NIS ドメイン。 もしあなたが一つ以上の NIS ドメインの不幸な仲間なら、 あなたは他の NIS ドメインからあなたのネットグループにアカウントを導入できます。

各フィールドには、 ワイルドカードが使えます。 詳細は netgroup(5) をご覧ください。

> Note: 8 文字以上のネットグループ名は、 特にあなたの NIS ドメインで他のオペレーティングシステムを走らせているときは使うべきではありません。 名前には大文字小文字の区別があります。 そのためネットグループ名に大文字を使う事は、 ユーザやマシン名とネットグループ名を区別する簡単な方法です。

> NIS クライアントの中には (FreeBSD 以外で) 多数のエントリを扱えないものもあります。 たとえば SunOS の古い版では 15 以上のエントリを含むネットグループはトラブルを起こします。 この制限は 15 ユーザ以下のサブ・ネットグループをいくつも作り、 本当のネットグループはこのサブ・ネットグループからなるようにすることで回避できます。

>     BIGGRP1  (,joe1,domain)  (,joe2,domain)  (,joe3,domain) [...]
>     BIGGRP2  (,joe16,domain)  (,joe17,domain) [...]
>     BIGGRP3  (,joe32,domain)  (,joe33,domain)
>     BIGGROUP  BIGGRP1 BIGGRP2 BIGGRP3

> 単一のネットグループに 225 人以上のユーザをいれたいときは、 このやり方を繰り返すことができます。

新しい NIS マップの有効化と配布は簡単です。

    ellington# cd /var/yp
    ellington# make

これで新しい 3 つの NIS マップ `netgroup`、 `netgroup.byhost` `netgroup.byuser` ができるはずです。 新しい NIS マップが利用できるか確かめるには ypcat(1) を使います。

    ellington% ypcat -k netgroup
    ellington% ypcat -k netgroup.byhost
    ellington% ypcat -k netgroup.byuser

最初のコマンドの出力は `/var/yp/netgroup` の内容に似ているはずです。 2 番目のコマンドはホスト別のネットグループを作っていなければ出力されません。 3 番目のコマンドはユーザに対するネットグループのリストを得るのに使えます。

クライアント側の設定は非常に簡単です。 サーバ `war` を設定するには、 vipw(8) を実行して以下の行

    +:::::::::

を

    +@IT_EMP:::::::::

に入れ替えるだけです。

今、 ネットグループ `IT_EMP` で定義されたユーザのデータだけが `war` のパスワードデータベースに読み込まれ、 そのユーザだけがログインを許されています。

残念ながらこの制限はシェルの ~ の機能や、 ユーザ名やユーザの数値 id の変換ルーチンにも影響します。 言い換えれば、 cd ~`user` はうまく動かず、 `ls -l` はユーザ名のかわりに数値の id を表示し `find . -user joe -print` は “No such user” で失敗します。 これを避けるためには、 すべてのユーザのエントリをサーバにログインすることを許さずに読み込むことが必要です。

これはもう一行を `/etc/master.passwd` に追加することで実現できます。 その行は `+:::::::::/sbin/nologin` を含んでおり、 “すべてのエントリを読み込むが、 読み込まれたエントリのシェルは `/sbin/nologin` で置き換えられる” ということを意味します。 passwd エントリの他のフィールドを `/etc/master.passwd` の既定値から置き換えることも可能です。

> Warning`+:::::::::/sbin/nologin` の行が `+@IT_EMP:::::::::` の行より後ろに位置することに注意してください。 さもないと NIS から読み込まれた全ユーザが /sbin/nologin をログインシェルとして持つことになります。

この変更の後では、 新しい職員が IT 学科に参加しても NIS マップを一つ書き換えるだけで済みます。 同様にして、 あまり重要でないサーバのローカルの `/etc/master.passwd` のかつての `+:::::::::` 行を以下のように置き換えます。

    +@IT_EMP:::::::::
    +@IT_APP:::::::::
    +:::::::::/sbin/nologin

この行は、 一般のワークステーションでは以下のようになります。

    +@IT_EMP:::::::::
    +@USERS:::::::::
    +:::::::::/sbin/nologin

これでしばらく順調に運用していましたが、 数週間後、 ポリシに変更がありました。 IT 学科はインターンを雇い始め、 IT インターンは一般のワークステーションと余り重要ではないサーバを使うことが許され、 IT 見習いはメインサーバへのログインが許されました。 あなたは新たなネットグループ IT_INTERN を追加して新しい IT インターンたちをそのグループに登録し、 すべてのマシンの設定を変えて回ることにしました。 古い諺にこうあります。 “集中管理における過ちは、 大規模な混乱を導く”。

いくつかのネットグループから新たなネットグループを作るという NIS の機能は、 このような状況に対処するために利用できます。 その方法の一つは、 役割別のネットグループを作ることです。 たとえば、 重要なサーバへのログイン制限を定義するために `BIGSRV` というネットグループを作り あまり重要ではないサーバへは `SMALLSRV` というネットグループを、 そして一般のワークステーション用に `USERBOX` という第 3 のネットグループを 作ることができます。 これらのネットグループの各々は、 各マシンにログインすることを許されたネットグループを含みます。 あなたの NIS マップネットグループの新しいエントリは、 以下のようになるはずです。

    BIGSRV    IT_EMP  IT_APP
    SMALLSRV  IT_EMP  IT_APP  ITINTERN
    USERBOX   IT_EMP  ITINTERN USERS

このログイン制限の定義法は、 同一の制限を持つマシンのグループを定義できるときには便利なものです。 残念ながらこのようなケースは例外的なものです。 ほとんどの場合、 各マシンに基づくログイン制限の定義機能が必要となるでしょう。

マシンごとのネットグループの定義は、 上述したようなポリシの変更を扱うことができるもうひとつの方法です。 このシナリオでは、 各マシンの `/etc/master.passwd` は ``+'' で始まる２つの行を含みます。 最初のものはそのマシンへのログインを許されたアカウントを追加するもので、 2 番目はその他のアカウントを`/sbin/nologin` をシェルとして追加するものです。 マシン名をすべて大文字で記述したものをネットグループの名前として使うのは良いやり方です。 言い換えれば、 件の行は次のようになるはずです。

    +@BOXNAME:::::::::
    +:::::::::/sbin/nologin

一度、 各マシンに対してこの作業を済ませてしまえば、 二度とローカルの `/etc/master.passwd` を編集する必要がなくなります。 以降のすべての変更は NIS マップの編集で扱うことができます。 以下はこのシナリオに対応するネットグループマップに、 いくつかの便利な定義を追加した例です。

    # Define groups of users first
    IT_EMP    (,alpha,test-domain)    (,beta,test-domain)
    IT_APP    (,charlie,test-domain)  (,delta,test-domain)
    DEPT1     (,echo,test-domain)     (,foxtrott,test-domain)
    DEPT2     (,golf,test-domain)     (,hotel,test-domain)
    DEPT3     (,india,test-domain)    (,juliet,test-domain)
    ITINTERN  (,kilo,test-domain)     (,lima,test-domain)
    D_INTERNS (,able,test-domain)     (,baker,test-domain)
    #
    # Now, define some groups based on roles
    USERS     DEPT1   DEPT2     DEPT3
    BIGSRV    IT_EMP  IT_APP
    SMALLSRV  IT_EMP  IT_APP    ITINTERN
    USERBOX   IT_EMP  ITINTERN  USERS
    #
    # And a groups for a special tasks
    # Allow echo and golf to access our anti-virus-machine
    SECURITY  IT_EMP  (,echo,test-domain)  (,golf,test-domain)
    #
    # machine-based netgroups
    # Our main servers
    WAR       BIGSRV
    FAMINE    BIGSRV
    # User india needs access to this server
    POLLUTION  BIGSRV  (,india,test-domain)
    #
    # This one is really important and needs more access restrictions
    DEATH     IT_EMP
    #
    # The anti-virus-machine mentioned above
    ONE       SECURITY
    #
    # Restrict a machine to a single user
    TWO       (,hotel,test-domain)
    # [...more groups to follow]

もしユーザアカウントを管理するデータベースの類を使っているなら、 あなたはデータベースのレポートツールからマップの最初の部分を作れるようにしてあるべきです。 この方法なら、 新しいユーザは自動的にマシンにアクセスできるでしょう。

最後に使用上の注意を: マシン別のネットグループを使うことが常に賢明というわけではありません。 あなたが数ダースから数百の同一の環境のマシンを学生の研究室に配置しているのならば、 NIS マップのサイズを手頃な範囲に押さえるために、 マシン別のネットグループのかわりに役割別のネットグループを使うべきです。

### 21.7.8. 忘れてはいけないこと

NIS 環境にある今、 今までとは違ったやり方が必要なことが 2、3 あります。

- 研究室にユーザを追加するときは、 それをマスター NIS サーバにだけ追加しなければならず、 さらにNIS マップを再構築することを忘れてはいけません。 これを忘れると新しいユーザは NIS マスタ以外のどこにもログインできなくなります。 たとえば、 新しくユーザ “jsmith” をラボに登録したいときは以下のようにします。

      # pw useradd jsmith
      # cd /var/yp
      # make test-domain

  `pw useradd jsmith` のかわりに `adduser jsmith` を使うこともできます。

- 管理用アカウントを NIS マップから削除してください。 管理用アカウントやパスワードを、 それらのアカウントへアクセスされるべきでないユーザが居るかも知れないマシンにまで伝えて回りたいとは思わないでしょう。

- NIS のマスタとスレーブをセキュアに、 そして機能停止時間を最短に保ってください。 もし誰かがこれらのマシンをクラックしたり、 あるいは単に電源を落としたりすると、 彼らは実質的に多くの人を研究室へログインできなくしてしまえます。

  これはどの集中管理システムにとっても第一の弱点で、 そして最も重要な弱点でしょう。 あなたの NIS サーバを守らなければ怒れるユーザと対面することになるでしょう!

### 21.7.9. NIS v1 との互換性

FreeBSD の ypserv は、 NIS v1 クライアントを部分的にサポートします。 FreeBSD の NIS 実装は NIS v2 プロトコルのみを使用していますが、 ほかの実装では、 古いシステムとの下位互換性を持たせるため v1 プロトコルをサポートしているものもあります。 そのようなシステムに付いている ypbind デーモンは、 必要がないにもかかわらず NIS v1 のサーバとの結合を成立させようとします(しかも v2 サーバからの応答を受信した後でも、 ブロードキャストをし続けるかも知れません)。 FreeBSD の ypserv は、 クライアントからの通常のリクエストはサポートしていますが、 v1 のマップ転送リクエストはサポートしていないことに注意してください。 つまり FreeBSD の ypserv を、 v1 だけをサポートするような古い NIS サーバと組み合わせて マスターやスレーブサーバとして使うことはできません。 幸いなことに、 現在、 そのようなサーバが使われていることは ほとんどないでしょう。

### 21.7.10. NIS クライアントとしても動作している NIS サーバ

複数のサーバが存在し、 サーバ自身が NIS クライアントでもあるようなドメインで ypserv が実行される場合には、 注意が必要です。 一般的に良いとされているのは、 他のサーバと結合をつくるようにブロードキャストパケットの送信をさせるのではなく、 サーバをそれ自身に結合させることです。 もし、 サーバ同士が依存関係を持っていて、 一つのサーバが停止すると、 奇妙なサービス不能状態に陥ることがあります。 その結果、 すべてのクライアントはタイムアウトを起こして 他のサーバに結合しようと試みますが、 これにかかる時間はかなり大きく、 サーバ同士がまた互いに結合してしまったりすると、 サービス不能状態はさらに継続することになります。

`ypbind` に `-S` オプションフラグを指定して実行することで、 ホストを特定のサーバに結合することが可能です。

### 21.7.11. libscrypt 対 libdescrypt

NIS を実装しようする人の誰もがぶつかる問題の一つに、 暗号ライブラリの互換性があります。 NIS サーバが DES 暗号ライブラリを使っている場合には、 同様に DES を使用しているクライアントしかサポートできません。 サーバとクライアントがどのライブラリを使用しているかは、 `/usr/lib` のシンボリックリンクを見ればわかります。 あるマシンが DES ライブラリを使うように設定されている場合、 リンクは以下のようになっています。

    % ls -l /usr/lib/*crypt*
    lrwxrwxrwx  1 root  wheel     13 Jul 15 08:55 /usr/lib/libcrypt.a@ -> libdescrypt.a
    lrwxrwxrwx  1 root  wheel     14 Jul 15 08:55 /usr/lib/libcrypt.so@ -> libdescrypt.so
    lrwxrwxrwx  1 root  wheel     16 Jul 15 08:55 /usr/lib/libcrypt.so.2@ -> libdescrypt.so.2
    lrwxrwxrwx  1 root  wheel     15 Jul 15 08:55 /usr/lib/libcrypt_p.a@ -> libdescrypt_p.a
    -r--r--r--  1 root  wheel  13018 Nov  8 14:27 /usr/lib/libdescrypt.a
    lrwxr-xr-x  1 root  wheel     16 Nov  8 14:27 /usr/lib/libdescrypt.so@ -> libdescrypt.so.2
    -r--r--r--  1 root  wheel  12965 Nov  8 14:27 /usr/lib/libdescrypt.so.2
    -r--r--r--  1 root  wheel  14750 Nov  8 14:27 /usr/lib/libdescrypt_p.a

マシンが FreeBSD の標準の MD5 暗号ライブラリを使うように 設定されている場合には、 以下のようになります。

    % ls -l /usr/lib/*crypt*
    lrwxrwxrwx  1 root  wheel     13 Jul 15 08:55 /usr/lib/libcrypt.a@ -> libscrypt.a
    lrwxrwxrwx  1 root  wheel     14 Jul 15 08:55 /usr/lib/libcrypt.so@ -> libscrypt.so
    lrwxrwxrwx  1 root  wheel     16 Jul 15 08:55 /usr/lib/libcrypt.so.2@ -> libscrypt.so.2
    lrwxrwxrwx  1 root  wheel     15 Jul 15 08:55 /usr/lib/libcrypt_p.a@ -> libscrypt_p.a
    -r--r--r--  1 root  wheel   6194 Nov  8 14:27 /usr/lib/libscrypt.a
    lrwxr-xr-x  1 root  wheel     14 Nov  8 14:27 /usr/lib/libscrypt.so@ -> libscrypt.so.2
    -r--r--r--  1 root  wheel   7579 Nov  8 14:27 /usr/lib/libscrypt.so.2
    -r--r--r--  1 root  wheel   6684 Nov  8 14:27 /usr/lib/libscrypt_p.a

NIS クライアントの認証でトラブルが発生した場合には、 ここから問題となりそうな部分を探すと良いでしょう。 NIS サーバを異種混在ネットワークに配置したいときは DES が最大公約数となるでしょうから、 すべてのシステムで DES を使わなければいけなくなるでしょう。

## 21.8. DHCP

原作: Gregory Sutter `<gsutter@FreeBSD.org>`, 2000 年 3 月.

### 21.8.1. DHCPとは何でしょう?

DHCP (Dynamic Host Configuration Protocol) は、 システムをネットワー クに接続するだけで、 ネットワークでの通信に必要な情報を入手するこ とができる仕組みです。 FreeBSD では、 ISC (Internet Software Consortium) による DHCP の実装を使用しています。 したがって、 ここで の説明のうち、 実装によって異なる部分は ISC のもの用になっています。

### 21.8.2. この節で説明していること

ハンドブックのこの節では DHCP システムの、 FreeBSD に組み込まれてい る部分についてだけ説明しています。 ですから、 サーバについては説明 していません。 後の節で紹介するリファレンスに加えて、 DHCP のマニュアルページも有力な参考になることでしょう。

### 21.8.3. DHCP の動作

クライアントとなるマシン上で DHCP のクライアントである dhclient を実 行すると、 まず設定情報の要求をブロードキャストします。 デフォルト では、 このリクエストには UDP のポート 68 を使用します。 サーバは UDP の ポート 67 で応答し、 クライアントの IP アドレスと、 ネットマスクやルー タ、 DNS サーバなどの関連する情報を提供します。 これらの情報の すべては DHCP の「リース」の形で送られ、 DHCP サーバ管理者によって決 められたある一定の時間内でのみ有効になります。 これによって、 ネッ トワークに存在しなくなったホストの IP アドレスは自動的に回収される ことになります。

DHCP クライアントはサーバから非常に多くの情報を取得することができます。 dhcp-options(5) に、 その非常に大きなリストが載っています。

### 21.8.4. FreeBSD への組み込み

FreeBSD は ISC の DHCP クライアントである `dhclient` を完全に組み込んでいます。 DHCP クラ イアントはインストーラと基本システムの両方で提供されています。 ですから DHCP サーバを走らせているネットワーク上ではネットワー ク関係の設定についての詳細な知識は必要になりません。 `dhclient` は、 3.2 以降の FreeBSD のすべての配布 に含まれています。

DHCP は sysinstall でサポートされてお り、 sysinstall でのネットワークインタフェイス設定の際は、 「こ のインタフェイスの設定として DHCP を試してみますか?」という質問 が最初になされます。 これに同意することで dhclient が実行さ れ、 それが成功すればネットワークの設定情報は自動的に取得されま す。

システム起動時に、 DHCP を使ってネットワーク情報を取得するように するには、 次の 2 つのステップを行なう必要があります。

- `bpf` デバイスがカーネルに組み込まれていることを確認します。 これを組み込むには、 カーネルコンフィグレーションファイルに `pseudo-device bpf` という行を追加し、 カーネルを再構築します。 カーネルの構築に関する詳細は、 Chapter 8 を参照してください。

  `bpf` デバイスは、 FreeBSD の出荷時に用意されている `GENERIC` カーネルに組み込まれていますので、 自分で設定を変えたカスタムカーネルを使っているのでなければ、 DHCP を動作させるためにカーネルを再構築する必要はありません。

  > Note: セキュリティに関心のある方向けに注意しておきます。 `bpf` デバイスは、 パケットスニファ (盗聴プログラム) を動作させることができる (ただし root 権限が必要) デバイスです。 `bpf` は DHCP を動作させるために かならず必要ですが、 セキュリティが非常に重要な場面では DHCP を本当に使う時まで `bpf` デバイスをカーネルに追加すべきではないでしょう。

- `/etc/rc.conf` を編集して、 次の行を追加してください。

      ifconfig_fxp0="DHCP"

  > Note: `fxp0` の部分を、 動的に設定したいインター フェースの名前で置き換えることを忘れないようにしてください。

  もし、 使っている`dhclient` の場所を変更してい たり、 `dhclient` にフラグを渡したい場合は、 同 様に下のように書き加えてください。

      dhcp_program="/sbin/dhclient"
      dhcp_flags=""

DHCP サーバである `dhcpd` は、 ports collectionに `isc-dhcp2` として収録されていま す。 この port はクライアント、 サーバ、 リレーエージェントから成 る ISC の DHCP 配布物をすべて含んでいます。

### 21.8.5. 関連ファイル

- `/etc/dhclient.conf`

  `dhclient` は設定ファイル `/etc/dhclient.conf` を必要とします。 大抵の場合、 このファイルはコメントだけであり、 デフォルトが 通常使いやすい設定になっています。 この設定ファイルは マニュアルページ dhclient.conf(5) で説明しています。

- `/sbin/dhclient`

  `dhclient` は静的にリンクされており、 `/sbin` に置かれています。 マニュアルページ dhclient(8) で `dhclient` コマンドについて より詳しく説明しています。

- `/sbin/dhclient-script`

  `dhclient-script` は FreeBSD 特有の、 DHCP クラ イアント設定スクリプトです。 これについてはマニュアルページ dhclient-script(8) で説明されていますが、 これを編集する 必要はほとんど発生しないでしょう。

- `/var/db/dhclient.leases`

  DHCP クライアントはこのファイルに有効なリースのデータベースを ログとして記録します。 dhclient.leases(5) にもうすこし詳 しい解説があります。

### 21.8.6. 参考になる文献

DHCP のプロトコルは RFC 2131 に完全に記述されています。 また、 dhcp.org にも有用な 情報源が用意されています。

# V. 付録

# Appendix A. FreeBSD の入手方法

## A.1. CDROM/DVD 出版社

### A.1.1. リテールボックス製品

FreeBSD は (FreeBSD CD、追加ソフトウェア、 印刷されたドキュメントなどから構成される) 箱入りの製品として以下の取り扱い業者から入手できます。

- CompUSA
  WWW: http://www.compusa.com/

- Frys Electronics
  WWW: http://www.frys.com/

### A.1.2. CD/DVD セット

FreeBSD の CD/DVD セットは以下のオンライン業者から入手できます。

- FreeBSD Mall, Inc.
  700 Harvest Park Ste F
  Brentwood, CA 94513
  USA
  電話: +1 925 240-6652
  Fax: +1 925 674-0821
  Email: `<info@freebsdmall.com>`
  WWW: http://www.freebsdmall.com/

- Dr. Hinner EDV
  St. Augustinus-Str. 10
  D-81825 München
  Germany
  電話: (089) 428 419
  WWW: http://www.hinner.de/linux/freebsd.html

- Ikarios
  22-24 rue Voltaire
  92000 Nanterre
  France
  WWW: http://ikarios.com/form/#freebsd

- JMC Software
  Ireland
  電話: 353 1 6291282
  WWW: http://www.thelinuxmall.com

- The Linux Emporium
  Hilliard House, Lester Way
  Wallingford
  OX10 9TA
  United Kingdom
  電話: +44 1491 837010
  Fax: +44 1491 837016
  WWW: http://www.linuxemporium.co.uk/products/bsd/

- Linux+ DVD Magazine
  Lewartowskiego 6
  Warsaw
  00-190
  Poland
  電話: +48 22 860 18 18
  Email: `<editors@lpmagazine.org>`
  WWW: http://www.lpmagazine.org/

- Linux System Labs Australia
  21 Ray Drive
  Balwyn North
  VIC - 3104
  Australia
  電話: +61 3 9857 5918
  Fax: +61 3 9857 8974
  WWW: http://www.lsl.com.au

- LinuxCenter.Kz
  Ust-Kamenogorsk
  Kazakhstan
  電話: +7-705-501-6001
  Email: `<info@linuxcenter.kz>`
  WWW: http://linuxcenter.kz/page.php?page=fr

- LinuxCenter.Ru
  Galernaya Street, 55
  Saint-Petersburg
  190000
  Russia
  電話: +7-812-3125208
  Email: `<info@linuxcenter.ru>`
  WWW: http://linuxcenter.ru/shop/freebsd

### A.1.3. 問屋

あなたが小売業を営んでいて FreeBSD の CDROM 製品を取り扱いたいと考えているなら次の場所に連絡してください。

- Cylogistics
  809B Cuesta Dr., #2149
  Mountain View, CA 94040
  USA
  電話: +1 650 694-4949
  Fax: +1 650 694-4953
  Email: `<sales@cylogistics.com>`
  WWW: http://www.cylogistics.com/

- Ingram Micro
  1600 E. St. Andrew Place
  Santa Ana, CA 92705-4926
  USA
  電話: 1 (800) 456-8000
  WWW: http://www.ingrammicro.com/

- Kudzu, LLC
  7375 Washington Ave. S.
  Edina, MN 55439
  USA
  電話: +1 952 947-0822
  Fax: +1 952 947-0876
  Email: `<sales@kudzuenterprises.com>`

- LinuxCenter.Ru
  Galernaya Street, 55
  Saint-Petersburg
  190000
  Russia
  電話: +7-812-3125208
  Email: `<info@linuxcenter.ru>`
  WWW: http://linuxcenter.ru/freebsd

- Navarre Corp
  7400 49th Ave South
  New Hope, MN 55428
  USA
  電話: +1 763 535-8333
  Fax: +1 763 535-0341
  WWW: http://www.navarre.com/

## A.2. FTP サイト

FreeBSD の公式な情報は anonymous FTP によって世界中から ミラーサイトより入手できます。 各サイトは ftp://ftp.FreeBSD.org/pub/FreeBSD/ にまとめられています。 これらのサイトは大規模な接続を受け付けていますが、 “よりネットワーク的に近い” ミラーサイトを探した方が良いでしょう (特にミラーサイトのようなものを 構築しようとした場合はこれに該当します)。

FreeBSD ミラーサイトデーターベース FreeBSD ハンドブックの “ミラーサイト一覧” よりも正確です。というのはその情報を DNS から取得するので、 静的に記述されたリストよりも信頼性が高いのです。

さらに、FreeBSD は以下のミラーサイトから anonymous FTP によって 入手できます。もし FreeBSD を anonymous FTP によって手にいれる場合は、 近くのサイトを利用するようにしてください。 “主要なミラーサイト” としてあげられているサイトには、 FreeBSD の各アーキテクチャで利用可能な すべてのバージョンのアーカイブ一式が用意されています。 あなたが住んでいる国や地域には より高速にダウンロードできるサイトがおそらくあるでしょう。 各国のミラーサイトには、 人気のあるアーキテクチャの最新のバージョンが置いてありますが、 FreeBSD のアーカイブ全体はもしかするとないかもしれません。 すべてのサイトは anonymous FTP によるアクセスを提供していますが、 別の方法によるアクセスも提供しているサイトもあります。 各サイトで提供しているアクセス方法は、 ホスト名に続く括弧の中に記載されています。

中央サーバ, 一次ミラーサイト, Armenia, Israel, アイスランド, アイルランド, アメリカ合衆国, アルゼンチン, イギリス, イタリア, インドネシア共和国, ウクライナ, エストニア, オーストラリア, オーストリア, オランダ, カナダ, ギリシア, サウジアラビア, シンガポール, スイス, スウェーデン, スペイン, スロバキア共和国, スロベニア, チェコ共和国, デンマーク, トルコ, ドイツ, ニュージーランド, ノルウェー, ハンガリー, フィンランド, フランス, ブラジル, ブルガリア, ポーランド, ポルトガル, ラトビア, リトアニア, ルーマニア, ロシア, 韓国, 香港, 台湾, 中国, 南アフリカ, 日本.

(2010/06/17 12:49:57 UTC 現在)

中央サーバ

  - ftp://ftp.FreeBSD.org/pub/FreeBSD/ (ftp / ftpv6 / http / httpv6)

一次ミラーサイト

  問題がある場合は、このドメインのホストマスタ `<mirror-admin@FreeBSD.org>` 宛にお問い合わせください。

  - ftp://ftp1.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp2.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp3.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp4.FreeBSD.org/pub/FreeBSD/ (ftp / ftpv6 / http / httpv6)

  - ftp://ftp5.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp6.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp7.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp8.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp9.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp10.FreeBSD.org/pub/FreeBSD/ (ftp / ftpv6 / http / httpv6)

  - ftp://ftp11.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp12.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp13.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp14.FreeBSD.org/pub/FreeBSD/ (ftp / http)

Armenia

  問題がある場合は、このドメインのホストマスタ `<hostmaster@am.FreeBSD.org>` 宛にお問い合わせください。

  - ftp://ftp1.am.FreeBSD.org/pub/FreeBSD/ (ftp / http / rsync)

Israel

  問題がある場合は、このドメインのホストマスタ `<hostmaster@il.FreeBSD.org>` 宛にお問い合わせください。

  - ftp://ftp.il.FreeBSD.org/pub/FreeBSD/ (ftp / ftpv6)

アイスランド

  問題がある場合は、このドメインのホストマスタ `<hostmaster@is.FreeBSD.org>` 宛にお問い合わせください。

  - ftp://ftp.is.FreeBSD.org/pub/FreeBSD/ (ftp / rsync)

アイルランド

  問題がある場合は、このドメインのホストマスタ `<hostmaster@ie.FreeBSD.org>` 宛にお問い合わせください。

  - ftp://ftp.ie.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp2.ie.FreeBSD.org/pub/FreeBSD/ (ftp / http / rsync)

  - ftp://ftp3.ie.FreeBSD.org/pub/FreeBSD/ (ftp / http / rsync)

アメリカ合衆国

  問題がある場合は、このドメインのホストマスタ `<hostmaster@us.FreeBSD.org>` 宛にお問い合わせください。

  - ftp://ftp1.us.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp2.us.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp3.us.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp4.us.FreeBSD.org/pub/FreeBSD/ (ftp / ftpv6 / http / httpv6)

  - ftp://ftp5.us.FreeBSD.org/pub/FreeBSD/ (ftp / rsync)

  - ftp://ftp6.us.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp7.us.FreeBSD.org/pub/FreeBSD/ (ftp / http / rsync)

  - ftp://ftp8.us.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp9.us.FreeBSD.org/pub/FreeBSD/ (ftp / http)

  - ftp://ftp10.us.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp11.us.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp12.us.FreeBSD.org/pub/FreeBSD/ (ftp / rsync)

  - ftp://ftp13.us.FreeBSD.org/pub/FreeBSD/ (ftp / http / rsync)

  - ftp://ftp14.us.FreeBSD.org/pub/FreeBSD/ (ftp / http)

  - ftp://ftp15.us.FreeBSD.org/pub/FreeBSD/ (ftp)

アルゼンチン

  問題がある場合は、このドメインのホストマスタ `<hostmaster@ar.FreeBSD.org>` 宛にお問い合わせください。

  - ftp://ftp.ar.FreeBSD.org/pub/FreeBSD/ (ftp)

イギリス

  問題がある場合は、このドメインのホストマスタ `<hostmaster@uk.FreeBSD.org>` 宛にお問い合わせください。

  - ftp://ftp.uk.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp2.uk.FreeBSD.org/pub/FreeBSD/ (ftp / http / rsync)

  - ftp://ftp3.uk.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp4.uk.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp5.uk.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp6.uk.FreeBSD.org/pub/FreeBSD/ (ftp)

イタリア

  問題がある場合は、このドメインのホストマスタ `<hostmaster@it.FreeBSD.org>` 宛にお問い合わせください。

  - ftp://ftp.it.FreeBSD.org/pub/FreeBSD/ (ftp)

インドネシア共和国

  問題がある場合は、このドメインのホストマスタ `<hostmaster@id.FreeBSD.org>` 宛にお問い合わせください。

  - ftp://ftp.id.FreeBSD.org/pub/FreeBSD/ (ftp / http / rsync)

ウクライナ

  - ftp://ftp.ua.FreeBSD.org/pub/FreeBSD/ (ftp / http)

  - ftp://ftp2.ua.FreeBSD.org/pub/FreeBSD/ (ftp / http)

  - ftp://ftp7.ua.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp8.ua.FreeBSD.org/pub/FreeBSD/ (ftp / http)

  - ftp://ftp11.ua.FreeBSD.org/pub/FreeBSD/ (ftp)

エストニア

  問題がある場合は、このドメインのホストマスタ `<hostmaster@ee.FreeBSD.org>` 宛にお問い合わせください。

  - ftp://ftp.ee.FreeBSD.org/pub/FreeBSD/ (ftp)

オーストラリア

  問題がある場合は、このドメインのホストマスタ `<hostmaster@au.FreeBSD.org>` 宛にお問い合わせください。

  - ftp://ftp.au.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp2.au.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp3.au.FreeBSD.org/pub/FreeBSD/ (ftp)

オーストリア

  問題がある場合は、このドメインのホストマスタ `<hostmaster@at.FreeBSD.org>` 宛にお問い合わせください。

  - ftp://ftp.at.FreeBSD.org/pub/FreeBSD/ (ftp / ftpv6 / http / httpv6)

  - ftp://ftp2.at.FreeBSD.org/pub/FreeBSD/ (ftp / ftpv6 / http / httpv6 / rsync / rsyncv6)

オランダ

  問題がある場合は、このドメインのホストマスタ `<hostmaster@nl.FreeBSD.org>` 宛にお問い合わせください。

  - ftp://ftp.nl.FreeBSD.org/pub/FreeBSD/ (ftp / http / rsync)

  - ftp://ftp2.nl.FreeBSD.org/pub/FreeBSD/ (ftp)

カナダ

  問題がある場合は、このドメインのホストマスタ `<hostmaster@ca.FreeBSD.org>` 宛にお問い合わせください。

  - ftp://ftp.ca.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp2.ca.FreeBSD.org/ (ftp)

  - ftp://ftp3.ca.FreeBSD.org/pub/FreeBSD/ (ftp)

ギリシア

  問題がある場合は、このドメインのホストマスタ `<hostmaster@gr.FreeBSD.org>` 宛にお問い合わせください。

  - ftp://ftp.gr.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp2.gr.FreeBSD.org/pub/FreeBSD/ (ftp)

サウジアラビア

  問題がある場合は、このドメインのホストマスタ `<ftpadmin@isu.net.sa>` 宛にお問い合わせください。

  - ftp://ftp.isu.net.sa/pub/ftp.freebsd.org/ (ftp)

シンガポール

  問題がある場合は、このドメインのホストマスタ `<hostmaster@sg.FreeBSD.org>` 宛にお問い合わせください。

  - ftp://ftp.sg.FreeBSD.org/pub/FreeBSD/ (ftp / http / rsync)

スイス

  問題がある場合は、このドメインのホストマスタ `<hostmaster@ch.FreeBSD.org>` 宛にお問い合わせください。

  - ftp://ftp.ch.FreeBSD.org/pub/FreeBSD/ (ftp / http)

  - ftp://ftp2.ch.FreeBSD.org/mirror/FreeBSD/ (ftp / ftpv6 / http / httpv6)

スウェーデン

  問題がある場合は、このドメインのホストマスタ `<hostmaster@se.FreeBSD.org>` 宛にお問い合わせください。

  - ftp://ftp.se.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp2.se.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp3.se.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp5.se.FreeBSD.org/pub/FreeBSD/ (ftp / http / rsync)

スペイン

  問題がある場合は、このドメインのホストマスタ `<hostmaster@es.FreeBSD.org>` 宛にお問い合わせください。

  - ftp://ftp.es.FreeBSD.org/pub/FreeBSD/ (ftp / http)

  - ftp://ftp2.es.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp3.es.FreeBSD.org/pub/FreeBSD/ (ftp)

スロバキア共和国

  問題がある場合は、このドメインのホストマスタ `<hostmaster@sk.FreeBSD.org>` 宛にお問い合わせください。

  - ftp://ftp.sk.FreeBSD.org/pub/FreeBSD/ (ftp / ftpv6 / http / httpv6 / rsync / rsyncv6)

  - ftp://ftp2.sk.FreeBSD.org/pub/FreeBSD/ (ftp / ftpv6 / http / httpv6)

スロベニア

  問題がある場合は、このドメインのホストマスタ `<hostmaster@si.FreeBSD.org>` 宛にお問い合わせください。

  - ftp://ftp.si.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp2.si.FreeBSD.org/pub/FreeBSD/ (ftp)

チェコ共和国

  問題がある場合は、このドメインのホストマスタ `<hostmaster@cz.FreeBSD.org>` 宛にお問い合わせください。

  - ftp://ftp.cz.FreeBSD.org/pub/FreeBSD/ (ftp / ftpv6 / http / httpv6 / rsync / rsyncv6)

  - ftp://ftp2.cz.FreeBSD.org/pub/FreeBSD/ (ftp / http)

デンマーク

  問題がある場合は、このドメインのホストマスタ `<hostmaster@dk.FreeBSD.org>` 宛にお問い合わせください。

  - ftp://ftp.dk.FreeBSD.org/pub/FreeBSD/ (ftp / ftpv6 / http / httpv6)

  - ftp://ftp2.dk.FreeBSD.org/pub/FreeBSD/ (ftp)

トルコ

  - ftp://ftp.tr.FreeBSD.org/pub/FreeBSD/ (ftp / http / rsync)

  - ftp://ftp2.tr.FreeBSD.org/pub/FreeBSD/ (ftp / rsync)

ドイツ

  問題がある場合は、このドメインのホストマスタ `<de-bsd-hubs@de.FreeBSD.org>` 宛にお問い合わせください。

  - ftp://ftp.de.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp1.de.FreeBSD.org/freebsd/ (ftp / http / rsync)

  - ftp://ftp2.de.FreeBSD.org/pub/FreeBSD/ (ftp / http / rsync)

  - ftp://ftp3.de.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp4.de.FreeBSD.org/FreeBSD/ (ftp / http / rsync)

  - ftp://ftp5.de.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp6.de.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp7.de.FreeBSD.org/pub/FreeBSD/ (ftp / http)

  - ftp://ftp8.de.FreeBSD.org/pub/FreeBSD/ (ftp)

ニュージーランド

  - ftp://ftp.nz.FreeBSD.org/pub/FreeBSD/ (ftp)

ノルウェー

  問題がある場合は、このドメインのホストマスタ `<hostmaster@no.FreeBSD.org>` 宛にお問い合わせください。

  - ftp://ftp.no.FreeBSD.org/pub/FreeBSD/ (ftp / rsync)

  - ftp://ftp3.no.FreeBSD.org/pub/FreeBSD/ (ftp)

ハンガリー

  問題がある場合は、このドメインのホストマスタ `<hostmaster@hu.FreeBSD.org>` 宛にお問い合わせください。

  - ftp://ftp.hu.FreeBSD.org/pub/FreeBSD/ (ftp / http / rsync)

  - ftp://ftp2.hu.FreeBSD.org/pub/FreeBSD/ (ftp)

フィンランド

  問題がある場合は、このドメインのホストマスタ `<hostmaster@fi.FreeBSD.org>` 宛にお問い合わせください。

  - ftp://ftp.fi.FreeBSD.org/pub/FreeBSD/ (ftp)

フランス

  問題がある場合は、このドメインのホストマスタ `<hostmaster@fr.FreeBSD.org>` 宛にお問い合わせください。

  - ftp://ftp.fr.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp1.fr.FreeBSD.org/pub/FreeBSD/ (ftp / http)

  - ftp://ftp2.fr.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp3.fr.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp5.fr.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp6.fr.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp7.fr.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp8.fr.FreeBSD.org/pub/FreeBSD/ (ftp)

ブラジル

  問題がある場合は、このドメインのホストマスタ `<hostmaster@br.FreeBSD.org>` 宛にお問い合わせください。

  - ftp://ftp.br.FreeBSD.org/pub/FreeBSD/ (ftp / http)

  - ftp://ftp2.br.FreeBSD.org/pub/FreeBSD/ (ftp / http)

  - ftp://ftp3.br.FreeBSD.org/pub/FreeBSD/ (ftp / rsync)

  - ftp://ftp4.br.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp5.br.FreeBSD.org

  - ftp://ftp6.br.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp7.br.FreeBSD.org/pub/FreeBSD/ (ftp)

ブルガリア

  問題がある場合は、このドメインのホストマスタ `<hostmaster@bg.FreeBSD.org>` 宛にお問い合わせください。

  - ftp://ftp.bg.FreeBSD.org/pub/FreeBSD/ (ftp / rsync)

  - ftp://ftp2.bg.FreeBSD.org/pub/FreeBSD/ (ftp / rsync)

ポーランド

  問題がある場合は、このドメインのホストマスタ `<hostmaster@pl.FreeBSD.org>` 宛にお問い合わせください。

  - ftp://ftp.pl.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp2.pl.FreeBSD.org/pub/FreeBSD/ (ftp / ftpv6 / http / httpv6 / rsync / rsyncv6)

ポルトガル

  問題がある場合は、このドメインのホストマスタ `<hostmaster@pt.FreeBSD.org>` 宛にお問い合わせください。

  - ftp://ftp.pt.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp2.pt.FreeBSD.org/pub/freebsd/ (ftp)

  - ftp://ftp4.pt.FreeBSD.org/pub/ISO/FreeBSD/ (ftp)

ラトビア

  問題がある場合は、このドメインのホストマスタ `<hostmaster@lv.FreeBSD.org>` 宛にお問い合わせください。

  - ftp://ftp.lv.FreeBSD.org/pub/FreeBSD/ (ftp / http)

  - ftp://ftp2.lv.FreeBSD.org/pub/FreeBSD/ (ftp)

リトアニア

  問題がある場合は、このドメインのホストマスタ `<hostmaster@lt.FreeBSD.org>` 宛にお問い合わせください。

  - ftp://ftp.lt.FreeBSD.org/pub/FreeBSD/ (ftp / http)

ルーマニア

  問題がある場合は、このドメインのホストマスタ `<hostmaster@ro.FreeBSD.org>` 宛にお問い合わせください。

  - ftp://ftp.ro.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp1.ro.FreeBSD.org/pub/FreeBSD/ (ftp / ftpv6 / http / httpv6)

ロシア

  問題がある場合は、このドメインのホストマスタ `<hostmaster@ru.FreeBSD.org>` 宛にお問い合わせください。

  - ftp://ftp.ru.FreeBSD.org/pub/FreeBSD/ (ftp / http / rsync)

  - ftp://ftp2.ru.FreeBSD.org/pub/FreeBSD/ (ftp / http / rsync)

  - ftp://ftp3.ru.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp4.ru.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp5.ru.FreeBSD.org/pub/FreeBSD/ (ftp / http / rsync)

  - ftp://ftp6.ru.FreeBSD.org/pub/FreeBSD/ (ftp)

韓国

  問題がある場合は、このドメインのホストマスタ `<hostmaster@kr.FreeBSD.org>` 宛にお問い合わせください。

  - ftp://ftp.kr.FreeBSD.org/pub/FreeBSD/ (ftp / rsync)

  - ftp://ftp2.kr.FreeBSD.org/pub/FreeBSD/ (ftp / http)

香港

  - ftp://ftp.hk.FreeBSD.org/pub/FreeBSD/ (ftp)

台湾

  問題がある場合は、このドメインのホストマスタ `<hostmaster@tw.FreeBSD.org>` 宛にお問い合わせください。

  - ftp://ftp.tw.FreeBSD.org/pub/FreeBSD/ (ftp / ftpv6 / rsync / rsyncv6)

  - ftp://ftp2.tw.FreeBSD.org/pub/FreeBSD/ (ftp / ftpv6 / http / httpv6 / rsync / rsyncv6)

  - ftp://ftp3.tw.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp4.tw.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp5.tw.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp6.tw.FreeBSD.org/pub/FreeBSD/ (ftp / http / rsync)

  - ftp://ftp7.tw.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp8.tw.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp9.tw.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp10.tw.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp11.tw.FreeBSD.org/pub/FreeBSD/ (ftp / http)

  - ftp://ftp12.tw.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp13.tw.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp14.tw.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp15.tw.FreeBSD.org/pub/FreeBSD/ (ftp)

中国

  問題がある場合は、このドメインのホストマスタ `<hostmaster@cn.FreeBSD.org>` 宛にお問い合わせください。

  - ftp://ftp.cn.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp2.cn.FreeBSD.org/pub/FreeBSD/ (ftp)

南アフリカ

  問題がある場合は、このドメインのホストマスタ `<hostmaster@za.FreeBSD.org>` 宛にお問い合わせください。

  - ftp://ftp.za.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp2.za.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp3.za.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp4.za.FreeBSD.org/pub/FreeBSD/ (ftp)

日本

  問題がある場合は、このドメインのホストマスタ `<hostmaster@jp.FreeBSD.org>` 宛にお問い合わせください。

  - ftp://ftp.jp.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp2.jp.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp3.jp.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp4.jp.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp5.jp.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp6.jp.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp7.jp.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp8.jp.FreeBSD.org/pub/FreeBSD/ (ftp)

  - ftp://ftp9.jp.FreeBSD.org/pub/FreeBSD/ (ftp)

## A.3. BitTorrent

BitTorrent を使って、リリース CD の ISO イメージをダウンロードできます。 ISO イメージをダウンロードするための torrent ファイルは http://torrents.freebsd.org:8080 にて配布されています。

BitTorrent クライアントソフトは、 `net-p2p/py-bittorrent` port またはコンパイル済みの package として入手できます。

BitTorrent を用いてダウンロードした ISO イメージを、 Section 15.5.3 で説明されている burncd を使って CD や DVD メディアに書き込めます。

## A.4. Anonymous CVS

訳: 杉村 貴士 `<sugimura@jp.FreeBSD.org>`、1998 年 7 月 19 日

### A.4.1. 導入

Anonymous CVS (もしくは、anoncvs として知られています) は離れたところにある CVS リポジトリと同期を取るために FreeBSD に付属している CVS ユーティリティに含まれている機能です。他にもありますが、 それは FreeBSD のユーザが、特別な権限なしに FreeBSD プロジェクトの公式な anoncvs サーバに読み取り専用で CVS の操作をすることができるようにするためのものです。 それを使うには、単に `CVSROOT` 環境変数を設定して適切な anoncvs サーバを指定し、 `cvs login` を使って パスワード “anoncvs” を入力してください。 そして次に cvs(1) コマンドを使うことで、 手元にあるリポジトリと同じようにアクセスできるようになります。

> Note: `cvs login` コマンドは、CVS サーバの認証に使われるパスワードを `HOME` ディレクトリの `.cvspass` というファイルに保存します。 このファイルが存在しなければ、最初に `cvs login` を使おうとしたときにエラーが出るでしょう。空の `.cvspass` ファイルを作成して再度ログインに挑戦してください。

CVSup と anoncvs のサービスは本質的に同じ機能ではないかということも言われていますが、 ユーザが同期を取る方法を選ぶときに影響を与える、 さまざまなトレードオフが存在します。要約して言えば、 CVSup はネットワーク資源の使い方においては非常に効率が良く技術的にもはるかに洗練されたものですが、 相当な手間がかかります。CVSup を使うには特別なクライアントをまずインストールして設定しなくては 1 bit も取ってくることができませんし、さらにそのとき CVSup で取ってくることができるのは、 コレクション (collection) と呼ばれる、 かなり大きなかたまりだけです。

それに対して anoncvs では、 CVS モジュールの名前を指定することで特定のプログラムの (`ls` や `grep` のような) 個々のファイルから調べることができます。もちろん、 anoncvs は CVS リポジトリの読み取り専用の操作に対してのみ適しているので、 もしあなたが FreeBSD プロジェクトのものと共有されたなにか ローカルなリポジトリを作ってそこでの開発を 行おうというときには、CVSup だけが唯一の手段となってしまいます。

### A.4.2. Anonymous CVS を使う

cvs(1) を設定して Anonymous CVS リポジトリを使うには単に `CVSROOT` 環境変数を設定して FreeBSD プロジェクトの anoncvs サーバを指定するだけのことです。 この文書を書いているときには、 次のサーバが利用できるようになっています。

- フランス: :pserver:anoncvs@anoncvs.fr.FreeBSD.org:/home/ncvs (pserver モードでは、`cvs login` コマンドを使い、 プロンプトが表示されたらパスワード “anoncvs” を入力してください。 ssh ではパスワードは必要ありません。)

- 台湾: :pserver:anoncvs@anoncvs.tw.FreeBSD.org:/home/ncvs (pserver モードでは、`cvs login` コマンドを使い、 プロンプトが表示されたら任意のパスワードを入力してください。 ssh ではパスワードは必要ありません。)

      SSH2 HostKey: 1024 02:ed:1b:17:d6:97:2b:58:5e:5c:e2:da:3b:89:88:26 /etc/ssh/ssh_host_rsa_key.pub
      SSH2 HostKey: 1024 e8:3b:29:7b:ca:9f:ac:e9:45:cb:c8:17:ae:9b:eb:55 /etc/ssh/ssh_host_dsa_key.pub

- USA: anoncvs@anoncvs1.FreeBSD.org:/home/ncvs (ssh では ssh バージョン 2 を使ってください。パスワードは必要ありません。)

      SSH2 HostKey: 2048 53:1f:15:a3:72:5c:43:f6:44:0e:6a:e9:bb:f8:01:62 /etc/ssh/ssh_host_dsa_key.pub

CVS はかつて存在した (もしくはこれから存在するものも) ほとんどどんなバージョンの FreeBSD のソースを “check out” することができますが、あなたは cvs(1) の リビジョン (`-r`) のオプションや FreeBSD プロジェクトのリポジトリの中で それをどのように指定したらいいものかということを よく知っておく必要があります。

タグには 2 種類あって、 リビジョンタグとブランチタグがあります。 リビジョンタグは特定の改訂版を指しており、 それはいつも同じものを意味しています。一方ブランチタグは、 指定されたときの指定された開発の流れにおける 最も新しい改訂版を示しています。 ブランチタグは特定の改訂版を指していないために、 その意味はきょうと明日では違うものになっているでしょう。

Section A.7 にはユーザが興味を持つであろうリビジョンタグの一覧が載せられています。 これらはいずれも Ports Collection に対して使うことはできません。 Ports Collection は複数の開発ブランチを持っていないからです。

ブランチタグを指定したときには、 普通はその開発の流れにおける 最も新しいバージョンのファイルを受け取ることができます。 もし以前のバージョンのものが欲しいときには、日付を `-D date` オプションを使って指定すればよいです。 これ以上のことは cvs(1) man page を見てください。

### A.4.3. 例

本当はなにかする前には cvs(1) のマニュアルページの全体をちゃんと読んでからのほうがいいのですが、 Anonymous CVS の使い方の本質的なところを簡単に例を挙げて説明します。

Example A-1. -CURRENT (ls(1)) をちょっと確認してみます。

    % setenv CVSROOT :pserver:anoncvs@anoncvs.tw.FreeBSD.org:/home/ncvs
    % cvs login
    プロンプトが表示されたら、“password” に任意の単語を入力します。
    % cvs co ls

Example A-2. SSH を使って `src/` ツリーをチェックアウトしてみます。

    % cvs -d freebsdanoncvs@anoncvs.FreeBSD.org:/home/ncvs co src
    The authenticity of host 'anoncvs.freebsd.org (128.46.156.46)' can't be established.
    DSA key fingerprint is 52:02:38:1a:2f:a8:71:d3:f5:83:93:8d:aa:00:6f:65.
    Are you sure you want to continue connecting (yes/no)? yes
    Warning: Permanently added 'anoncvs.freebsd.org' (DSA) to the list of known hosts.

Example A-3. ls(1) のバージョンを 6-STABLE ブランチから調べてみます。

    % setenv CVSROOT :pserver:anoncvs@anoncvs.tw.FreeBSD.org:/home/ncvs
    % cvs login
    プロンプトが表示されたら、“password” に任意の単語を入力します。
    % cvs co -rRELENG_6 ls

Example A-4. ls(1) の変更点のリストを (Unified diff で) 作ってみます。

    % setenv CVSROOT :pserver:anoncvs@anoncvs.tw.FreeBSD.org:/home/ncvs
    % cvs login
    プロンプトが表示されたら、“password” に任意の単語を入力します。
    % cvs rdiff -u -rRELENG_5_3_0_RELEASE -rRELENG_5_4_0_RELEASE ls

Example A-5. 他のどんなモジュールの名前が 使われているか検索してみます。

    % setenv CVSROOT :pserver:anoncvs@anoncvs.tw.FreeBSD.org:/home/ncvs
    % cvs login
    プロンプトが表示されたら、“password” に任意の単語を入力します。
    % cvs co modules
    % more modules/modules

### A.4.4. 他の資料

次の資料は CVS を学ぶのに役に立つでしょう。

- CVS チュートリアル California Polytechnic State University によるものです。

- CVS Home、 CVS の開発とサポートをしているコミュニティです。

- CVSWeb は FreeBSD Project の CVS のための WWW インタフェースです。

## A.5. CTM を使う

訳: 花井 浩之 `<hanai@FreeBSD.org>`、1997 年 9 月 13 日

CTM はリモートのディレクトリツリーを中央のツリーに同期させるための 手段です。 これは FreeBSD のソースツリーの配布を行なうために開発されまし たが、時が経つにつれて別の目的にも有用であることがわかるかも しれません。 デルタを作り出す処理に関するドキュメントは現在ほとんど ありません。従って、もしあなたがCTM を他のことに使いたいなら ctm-users メーリングリストにさらなる情報を問い合わせてください。

### A.5.1. なぜ CTM を使うの?

CTM を使うことにより FreeBSD ソースツリーのローカルコピーを手にいれることができます。 ソースツリーが使えることの魅力は数多くあります。完全な cvs ツリーを追いかけるにしても、ひとつのブランチを追いかける にしても CTM は必要な情報を与えてくれます。 もしあなたが FreeBSD のアクティブな開発者であるにもかかわらず お粗末な TCP/IP 接続しか持っていなかったり、または TCP/IP 接続が 行なえないとしたら、あるいは単に変更が自動的に送られてきて ほしいというのであれば CTM はそんなあなたのために 作られたのです。 アクティブなブランチでは 1 日に最大三つまでのデルタを受け取る必要があります。 これが自動的に e-mail で送られてくるという方法を ぜひ検討してみてください。 デルタのサイズは常にできるだけ小さく保たれています。 大抵の場合 5KB よりも小さく、 たまに (10 回に 1 回程度) 10-50KB になり、 ときおり 100KB かもっと大きくなるでしょう。

開発ソースから直接に得られたものを使うことについては、 あらかじめパッケージにされたリリースとは違い、 いろいろと注意することが あります。これは特に “current” のソースを選んでいるときは重要です。 最新の FreeBSD を追いかけるを読むことをお勧めします。

### A.5.2. CTMを使うには何が必要?

二つのものが必要でしょう: CTM プログラムとそれに与える (“current” レベルを得るための) 最初のデルタです。

CTM プログラムはバージョン 2.0 のリリース以来 FreeBSD の一部になりました。 もしソースのコピーを持っているなら `/usr/src/usr.sbin/ctm`にあります。

から入手できます。CTM に与える “デルタ” は二つの方法、FTP または e-mail、 で得ること ができます。 もしインターネットに FTP アクセスできるなら、 次の FTP サイト:

ftp://ftp.FreeBSD.org/pub/FreeBSD/CTM/

または、そのミラーサイトが CTM へのアクセスをサポートします。

適切なディレクトリに FTP して `README` ファイルを入手し、そこからスタートしてください。

e-mail によってデルタを得たいという場合は:

CTM 配布メーリングリストのいずれかに参加してください。 ctm-cvs-cur は完全な CVS ツリー、 ctm-src-cur は開発先端ブランチに対応しています。ctm-src-4 は 2.2 リリースのブランチに対応したものです (もし参加方法が分からない場合は、メーリングリスト名をクリックするか、 http://lists.FreeBSD.org/mailman/listinfo に行って参加したいメーリングリストをクリックしてください。 このページには、参加手順が詳しく書かれています)。

メールで CTM による更新ファイルを受け取り始めると、中身を取り出して使用 するために `ctm_rmail` プログラムを使うかもしれません。それを完全 に自動で行ないたいなら、`/etc/aliases` から `ctm_rmail`プロ グラムを直接使うこともできます。 さらに詳しいことは `ctm_rmail` manページを御覧ください。

> Note: どの方法を使って CTM デルタを入手していたとしても、 ctm-announce メーリングリストには参加しておくといいでしょう。 このメーリングリストは将来的には CTM システムの操作に関する アナウンスがポストされる唯一の場になるでしょう。 メーリングリストに参加するには、上のメーリングリスト名をクリックして、 参加手順に従ってください。

### A.5.3. はじめて CTM を使い始める

CTM デルタを使い始めるためには、これは以降作られる全ての デルタの出発点を手にいれる必要があります。

最初にあなたが何をすでに持っているかをはっきりさせましょう。 すべての人は “空” のディレクトリから始めなければなりません。 ツリーをサポートしてるあなたの CTM を稼働するためには 指定した “空” のデルタを使う必要があります。いくつかの分岐点 では、あなたの都合により CD 内に分配されている “スタータ” デルタを使用できるようになっています。しかしながら、これは 頻繁に行われることではありません。

適切な出発点が決まれば、その出発点を CTM が 維持するツリーへ変換するための “スタータ” 初期デルタを使う必要が あります。

移行デルタは番号の後ろに `X` をつけたものがそうです (たとえば `src-cur.3210XEmpty.gz`)。 `X` の後ろは最初の開始ポイントに対応します。 `Empty` は 空のディレクトリです。 ルールとして `Empty` からの移行デルタは 100 デルタごとに 作られます。ちなみに、 これらは非常に大きくなります! `XEmpty`のデルタは 70 から 80MB の `gzip` で圧縮されたデータというのが普通です。

一度スタートするためのベースデルタを得ると、 それに続く多数のすべてのデルタも必要になるでしょう。

### A.5.4. CTM を日常で使う

デルタを適用するためには、単に

    # cd /where/ever/you/want/the/stuff
    # ctm -v -v /where/you/store/your/deltas/src-xxx.*

とします。

CTM はどれが `gzip` されているか理解します。 従って最初に `gunzip` しておく必要はありません。 ディスクの節約にもなります。

全体の処理に関して確信するまでは CTM は (ソース) ツリーに対して 何もしません。また、デルタを確かめるためには `-c` フラグを使うことができます。 このフラグがあると CTM はツリーに対して実際には何も行ないません。 単にデルタの完全性を確認し、 現在のツリーに問題なく使用できるかを確認 するだけです。

CTM には他にもオプションがあります。詳細に関しては マニュアルページを参照するかソースを見てください。

以上でやることは本当に全部です。 新しいデルタを入手した時には、 ソースを最新のものにするためにそれを CTMに通すだけです。

もしデルタを再ダウンロードするのが 骨の折れる作業であれば、デルタを消さないでおいてください。 なにかおかしなことが起こった場合には置いておけば良かった と思うかもしれません。 もしフロッピーディスクしか持っていない状況 であってもコピーを取るのに `fdwrite` を使うことを考えてください。

### A.5.5. ローカルの変更を保存する

開発者としてはソースツリー中のファイルを 使って実験したり変更したく なるものです。 CTM はローカルの変更を制限つきでサポートします: ファイル `foo` の存在をチェックする前に、 `foo.ctm` を参照しにいきます。 このファイルが存在する場合、CTM は `foo` の代りにこれを処理します。

この動作はローカルの変更を保持する簡単な手段を 提供します: 単に変更したいファイルを拡張子 `.ctm` 付きのファイル名で コピーするだけです。あとは自由にコードをハックでき、 `.ctm` ファイルの方は CTM が最新状態に保ってくれます。

### A.5.6. CTM のその他の面白いオプション

#### A.5.6.1. 更新で変更されるファイルを正確に知る

CTM のソースリポジトリに対する変更のリストを `-l` オプションを使って決定することができます。

これは、変更のログを保存したい、 変更されたファイルをなんらかの方法で 前・後処理したい、 または単にこだわりたい場合には、 役に立つでしょう。

#### A.5.6.2. 更新前にバックアップを取る

CTM の更新によって変更されるファイルすべてのバックアップを 取りたくなることがあります。

`-B backup-file` オプションを指定すると CTM は デルタで変更されるファイルすべてを `backup-file` としてバックアップするようになります。

#### A.5.6.3. 更新で変更されるファイルを制限する

CTM の更新の範囲を制限したり一連のデルタのから ほんの数ファイルを抽出したくなることがあります。

`-e` と `-x` オプションを用い正規表現を指定することで、 CTM が処理するファイルのリストを制御することが できます。

例えば、`lib/libc/Makefile` の最新のコピーを保存してある CTM デルタのコレクションから抽出するには、 以下のコマンドを実行します。

    # cd /where/ever/you/want/to/extract/it/
    # ctm -e '^lib/libc/Makefile' ~ctm/src-xxx.*

CTM デルタで指定されたファイルごとに、`-e` そして `-x` オプションがコマンドラインで指定された順序で適用されます。 すべての`-e` そして `-x` オプションが適用された後に更新対象と選択された場合に限り、 CTM はそのファイルを処理します。

### A.5.7. CTMの将来計画

重要なもの

- なんらかの CTM システムへの認証機構を用い、不正な CTM の更新の検出を可能とする。

- CTM へのオプションを整理する。さもないと混乱し、 直観に反したものになります。

### A.5.8. その他

`ports` コレクションに対するデルタもあるのですが、 これに興味を持っている人はまだ少ないようです。

### A.5.9. CTM サイト

CTM/FreeBSD は以下のミラーサイトから anonymous FTP によって入手できます。 もし CTM を anonymous FTP によって手にいれる場合は、 近くのサイトを利用するようにしてください。

何か問題がある場合は、ctm-users メーリングリストに相談してください。

カリフォルニア、サンフランシスコ近辺、 公式なソース

  - ftp://ftp.FreeBSD.org/pub/FreeBSD/development/CTM/

南アフリカ、ctm、sup、 CVSupなどの古い差分ファイルのバックアップサーバ

  - ftp://ftp.za.FreeBSD.org/pub/FreeBSD/CTM/

台湾/中華民国

  - ftp://ctm.tw.FreeBSD.org/pub/FreeBSD/development/CTM/

  - ftp://ctm2.tw.FreeBSD.org/pub/FreeBSD/development/CTM/

  - ftp://ctm3.tw.FreeBSD.org/pub/FreeBSD/development/CTM/

近くにミラーサイトがない場合やミラーが不完全な場合は、 alltheweb のような検索エンジンを使ってみてください。

## A.6. CVSup を使う

訳: 岩崎 満 `<iwasaki@jp.FreeBSD.org>`、1997 年 2 月 27 日

### A.6.1. 紹介

CVSup は、 リモートのサーバホストにあるマスタ CVS リポジトリから ソースツリーを配布し更新するための ソフトウェアパッケージです。FreeBSD のソースは、 カリフォルニアにある中心的な開発マシンの CVS リポジトリの 中でメンテナンスしています。CVSup を使用することで、FreeBSD ユーザは 簡単に自分のソースツリーを最新の状態に しておくことができます。

CVSup は pull モデルとよばれる更新のモデルを採用しています。pull モデルでは、 各クライアントが更新したい場合に更新したい時点で、 サーバに更新の問い合わせをおこないます。 サーバはクライアントからの 更新の要求を受け身の状態で待ちます。したがって、 すべての更新はクライアント主導でおこなわれます。 サーバは頼まれもしない更新情報を送るようなことはしません。 ユーザは CVSup クライアントを手動で実行して更新をおこなうか、 `cron` ジョブを設定して定期的に自動実行する必要があります。

用語 CVSup のように大文字で表記しているものは、ソフトウェアパッケージ 全体を指します。主な構成物は、 各ユーザマシンで実行するクライアントである `cvsup`、FreeBSD の各ミラーサイトで実行するサーバ `cvsupd` です。

FreeBSD の文書やメーリングリストを読んだ際に、 sup についての言及を 見かけたかもしれません。sup は CVSup の前に存在していたもので、 同様の目的で使われていました。 CVSup は sup と同じように使用されており、実際、`sup` と互換性のあるコンフィグレーションファイルを使用します。 CVSup の方がより高速で柔軟性もあるので、もはや sup は FreeBSD プロジェクトでは使用されていません。

> Note: csup ユーティリティは CVSup ソフトウェアを C 言語で書き直したものです。 処理速度が速く、また、Modula-3 言語を使わないため、 Modula-3 をインストールする必要がありません。 さらに FreeBSD 6.2 以降ではベースシステムに含まれているので、 すぐに使うことができます。 ベースシステムに csup(1) が含まれていないような古い FreeBSD でも、 `net/csup` port や コンパイル済の package から簡単にインストールできます。 csup を使う場合は、 CVSup のインストールを省略し、 以下の文章中の CVSup を csup に置きかえて読んでください。

### A.6.2. インストール

CVSup をインストールする最も簡単な方法は、FreeBSD Ports コレクションのパッケージ からコンパイル済みの `net/cvsup` パッケージをインストールすることです。 もしくは、`net/cvsup` でも構いません。 ただし、`net/cvsup` は Modula-3 システムに依存していて、構築にかかる時間、 ディスクスペースは比較的大きくなります。

> Note: たとえばサーバのような XFree86 や Xorg がインストールされていない計算機で CVSup を使おうとしているのであれば、必ず CVSup GUI が含まれていない `net/cvsup-without-gui` を使ってください。

FreeBSD 6.1 以前のシステムに csup をインストールする場合は、 FreeBSD packages collection の コンパイル済みの `net/csup` package を利用できます。 ソースから csup を構築する場合は、 `net/csup` port を使ってください。

### A.6.3. CVSup のコンフィグレーション

CVSup の動作は、`supfile` と呼ばれるコンフィグレーションファイルで制御します。 `supfile` のサンプルは、ディレクトリ `/usr/share/examples/cvsup/` の下にあります。

`supfile` には以下の CVSup に関する質問への答えを記述します:

- どのファイルを受け取りたいのか?

- どのバージョンのものが欲しいのか?

- どこから入手したいのか?

- 自分のマシンのどこに置きたいのか?

- どこに status ファイルを置きたいのか?

次のセクションで、これらの質問に順番に答えながら典型的な `supfile` を組み立てていきます。最初に `supfile` の全体構造を説明します。

`supfile` はテキストファイルです。 コメントは `#` から行末までです。 空行とコメントだけの行は無視します。

残りの各行には、 ユーザが受け取りたいファイル群について記述します。 行の始めは、 サーバ側で定義した論理的なファイルのグループである “コレクション” の名称です。 コレクションの名称を指定して、欲しいファイル群を サーバに伝えます。コレクション名の後には、 ホワイトスペースで区切られた 0 個以上のフィールドが続きます。 これらのフィールドが上記の質問に対する答えになります。 フィールドには 2 種類あります: flag フィールドと value フィールドです。flag フィールドは `delete` や `compress` のような 単独のキーワードから成ります。また、value フィールドもキーワードで始まりますが、 キーワードの後にはホワイトスペースは入らず、 `=` と二つめの単語が続きます。例えば、 `release=cvs` は value フィールドです。

通常、`supfile` には受け取りたいコレクションを一つ以上指定します。 `supfile` を組み立てる一つの方法として、 コレクション毎にすべての関係の あるフィールドを明示的に指定する方法があります。しかし、 これでは `supfile` のすべてのコレクションに対して ほとんどのフィールドが同じになるため、 行が非常に長くなってしまい不便になります。 これらの問題を避けるため、CVSup ではデフォルトを指定することのできる メカニズムが提供されています。特殊な擬似コレクション名 `*default` で始まる行は、 `supfile` 中の後続の コレクションに対して使用する flag フィールドと value フィールドのデフォルトを設定するために利用できます。 個々のコレクションで固有の値を指定すると、 デフォルト値を無効にできます。また `*default` 行を追加すると、`supfile` の途中からデフォルト値の変更や追加が可能になります。

これまでの予備知識を基に、 FreeBSD-CURRENT のメインのソースツリーを受け取って更新するための `supfile` を組み立ててみましょう。

- どのファイルを受け取りたいのか?

  CVSup を通して入手できるファイルは “コレクション” と呼ばれる名前の付けられたグループにまとめられています。 利用可能なコレクションについては 後の節の中で説明しています。 ここでは、FreeBSD システムのメインのソースツリー全体 を受け取るための設定例を紹介します。 すべてを含む `src-all` という単一の大きなコレクションがあります。 `supfile` を組み立てる最初のステップとして、 これらのコレクションを一行に一つずつ記述します (この場合は一行だけです)。

      src-all

- どのバージョンのものが欲しいのか?

  CVSup を使用すると、 かつて存在していたことのある、事実上どのバージョンの ソースでも受け取ることができます。これは cvsupd サーバがすべてのバージョンを含む CVS リポジトリに基づいて動作することにより、 実現されています。 `tag=` および `date=` の value フィールドを使用して、 欲しいバージョンの 一つを指定します。

  > Warning `tag=` のフィールドの指定は正確に行うように十分注意 してください。いくつかのタグは特定のコレクションに 対してのみ有効です。 タグの綴りが違っていたり不適切なタグを指定すると、 CVSup はユーザが消し たくないファイルまで削除してしまいます。特に `ports-*` のコレクション に対しては `tag=.` だけ を指定するようにしてください。

  `tag=` フィールドはリポジトリ中のシンボリックタグを指定します。 tag には revision tag と branch tag の二種類があります。 revision tag は特定のリビジョンを指します。これは、 毎日同じ状態に保つことになります。一方 branch tag は、 ある時点での開発分流の最新のリビジョンを指します。 branch tag は特定のリビジョンを指定している訳ではないので、 今日と明日では 異なるリビジョンを参照することになるかもしれません。

  Section A.7 にはユーザが興味を持つであろうリビジョンタグの一覧が載せられています。 CVSup の設定ファイル中でタグを指定する時は、 `tag=` に続けて書きます (`RELENG_4` は `tag=RELENG_4` になります)。 `tag=.` だけが Ports Collection には 適切であることに注意してください。

  > Warningtag 名を示した通りにタイプされているか十分注意してく ださい。CVSup は tag 名が正しいかどうかを見分けることはできません。tag が間違っていた場合、 たまたまファイルがまったく存在しない正しい tag が 指定されたものとしてCVSup は動作します。その場合は、現在あるソースが削 除されるでしょう。

  branch tag を指定した際には、 通常はその開発分流の最新バージョンの ファイルを受け取ります。 いくらか前のバージョンを受け取りたい場合は、 `date=` の value フィールドを使って日付を指定することで、 これを実現することが できます。cvsup(1) のマニュアルページで、 その方法を説明しています。

  例として、FreeBSD-CURRENT を受け取りたいとします。 次の行を `supfile` の始めに追加します:

      *default tag=.

  `tag=` フィールドも `date=` フィールドも指定しなかった場合に 動き出す重要な特殊なケースがあります。そのケースでは、 特定のバージョンの ファイルを受け取るのではなく、 サーバの CVS リポジトリから実際の RCS ファイルを直接受け取ります。 一般的に開発者はこの処理のモードが好きなようです。 彼らのシステム上にリポジトリそのものの コピーを維持することで、 リビジョン履歴を閲覧し過去のバージョンの ファイルを検査できるようになります。しかし、 これには大きなディスクスペースが必要になります。

- どこから入手したいのか?

  更新情報をどこから入手するかを `cvsup` に伝えるために `host=` フィールドを使用します。 CVSup ミラーサイト のどこからでも入手できますが、 ネット上での最寄りのサイトを選ぶべきでしょう。 この例では、仮想上の FreeBSD 配布サイト `cvsup99.FreeBSD.org` を使用します:

      *default host=cvsup99.FreeBSD.org

  CVSup を実行する前にホスト名を 実在のものに変更する必要があります。どのように `cvsup` を実行しても、この設定は `-h `hostname`` を 使用してコマンドラインで変更することができます。

- 自分のマシンのどこに置きたいのか?

  `prefix=` フィールドは、 `cvsup` に受け取ったファイルをどこに置くかを伝えます。 この例では、ソースファイルを直接メインのソースツリー `/usr/src` に置きます。 `src` ディレクトリはすでにファイルを受け取るために 選択したコレクションで暗黙に指定しているので、 これは正しい仕様となります:

      *default prefix=/usr

- どこに status ファイルを置きたいのか?

  CVSup クライアントは “base” ディレクトリと呼ばれる場所に、ある status ファイルを維持しています。 すでに受け取った更新情報を追従し続けることで、 これらのファイルは CVSup がより効果的に動作することを支援します。標準の base ディレクトリ `/var/db` を使用します:

      *default base=/var/db

  base ディレクトリが存在しない場合は作成しておきましょう。base ディレクトリが存在しない場合、`cvsup` クライアントは実行を拒否します。

- その他もろもろの `supfile` の設定:

  通常 `supfile` に入れておくべき行がもう一つあります:

      *default release=cvs delete use-rel-suffix compress

  `release=cvs` は、サーバがメインの FreeBSD CVS リポジトリから その情報を取得するように指示します。 ほとんどの場合はこのようにしておきますが、 ここでの説明の範疇をこえるような 状況では他の指定をすることも可能です。

  `delete` は CVSup にファイルを削除することを許可します。 CVSup が ソースツリーを完全に最新の状態に 保てるようにするためには、これは常に 指定しておくべきでしょう。 CVSup は、 これらの責任範囲のファイルだけを慎重に削除します。 たまたま存在する他の余分なファイルについては、 まったく手をつけずに残しておきます。

  `use-rel-suffix` は、…神秘的なものです。これについて本当に知りたい人は、 cvsup(1) のマニュアルページをご覧ください。 でなければ、何も考えずに指定してみてください。

  `compress` は通信チャネルで gzip 形式の圧縮の使用を有効にします。 ご使用のネットワーク接続が T1 speed 以上である場合、 この圧縮を使用しない方がよいかもしれません。 そうでない場合は十分に役に立ちます。

- `supfile` の例のまとめ:

  以下は `supfile` の例の全体です:

      *default tag=.
      *default host=cvsup99.FreeBSD.org
      *default prefix=/usr
      *default base=/var/db
      *default release=cvs delete use-rel-suffix compress

      src-all

#### A.6.3.1. `refuse` ファイル

既に述べたように、CVSup は取り寄せ法 (pull method)を用いるのですが、 これは基本的に次のようなことを意味します。 まずあなたが CVSup サーバに接続します。 するとサーバは “あなたがダウンロードできるのはこれこれです” と言います。 それに対し、あなたが使っているクライアントは “わかりました。 では、これとこれとこれをもらいます” と答えます。 デフォルトの設定の CVSup クライアントは、 設定ファイルで選んだコレクションとタグに適合する すべてのファイルを取得します。 しかし、これは常にあなたの望む動作と一致するとは限りません。 特に `doc` や `ports` や `www` のツリーを同期させる場合などはそうでしょう。 ほとんどの人は四か国語も五か国語も操れるわけではありませんから、 特定の言語のファイルのダウンロードは必要ないでしょう。 Ports Collection を CVSup で取得する場合には、各コレクションを個別に指定することができます (たとえば、単に ports-all とするかわりに ports-astrology、 ports-biology などと書きます)。 一方、`doc` と `www` のツリーは言語別のコレクションになっていません。 そこであなたは CVSup のたくさんある洗練された機能の一つ、 `refuse` ファイルを使う必要があります。

`refuse` ファイルは CVSup に対し、 コレクションに含まれる一部のファイルを取得することを伝えます。 言い換えれば、それはクライアントに対し、 サーバから来る一部のファイルを拒否するよう指定するということです。 `refuse` ファイルは ``base`/sup/` にあります (もしファイルがない場合には作成してください)。 `base` は `supfile` 内で定義されています。 私達は `base` に `/var/db` を定義しています。つまり、 `refuse` ファイルのデフォルトは `/var/db/sup/refuse` ということになります。

`refuse` ファイルの書式は、単にダウンロードしたくないファイルや ディレクトリの名前が書いてあるだけの非常にシンプルなものです。 たとえば、英語以外にはドイツ語を少し話せるだけの人で、 文書のドイツ語訳を読む必要を感じなければ 以下のような `refuse` ファイルが考えられます。

    doc/bn_*
    doc/da_*
    doc/de_*
    doc/el_*
    doc/es_*
    doc/fr_*
    doc/hu_*
    doc/it_*
    doc/ja_*
    doc/mn_*
    doc/nl_*
    doc/no_*
    doc/pl_*
    doc/pt_*
    doc/ru_*
    doc/sr_*
    doc/tr_*
    doc/zh_*

他の言語についても同様です (全リストは FreeBSD CVS リポジトリ をご覧になってください)。

この実に便利な機能を使うと まったく必要としないファイルをダウンロードする必要がなくなり、 インターネット接続の回線が遅かったり従量制で課金されている人は 貴重な時間を節約できるようになります。 `refuse` ファイルの詳細や CVSup が持つその他の便利な機能に関しては マニュアルページを参照してください。

### A.6.4. CVSup の実行

さて、更新の準備ができました。 これを実行するコマンドラインは実に簡単です:

    # cvsup supfile

もちろん、ここでの ``supfile`` は作成したばかりの `supfile` のファイル名です。X11 環境で実行するものと仮定して、`cvsup` は 通常の操作に必要なボタンを持つ GUI ウィンドウを表示します。 go ボタンを押して、 実行を監視してください。

この例では実際の `/usr/src` ツリーを更新しているので、`cvsup` にファイルを更新するのに必要なパーミッションを与えるために、 ユーザ `root` で実行する必要があります。 コンフィグレーションファイルを作ったばかりで、 しかも以前にこのプログラムを実行したことがないので、 神経質になるのは無理もない話だと思います。 大切なファイルに触らずに試しに実行する簡単な方法があります。 どこか適当な場所に空のディレクトリを作成して、 コマンドラインの引数で指定するだけです:

    # mkdir /var/tmp/dest
    # cvsup supfile /var/tmp/dest

指定したディレクトリは、すべての更新されるファイルの 更新先ディレクトリとして使用します。 CVSup は `/usr/src` の下のファイルを検査しますが、 変更や削除はまったくおこないません。かわりに `/var/tmp/dest/usr/src` に更新されたすべてのファイルが置かれるようになります。 この方法で実行した場合は、CVSup は base ディレクトリの status ファイルを更新せずにそのままにします。 これらのファイルの新しいバージョンは指定されたディレクトリ に書き込まれます。`/usr/src` の読み取り許可がある限り、このような試し実行のためにユーザ `root` になる必要はありません。

X11 を利用していないとか単に GUI が気に入らない場合は、 `cvsup` 起動時にコマンドラインに 二つほどオプションを追加する必要があります:

    # cvsup -g -L 2 supfile

`-g` オプションは CVSup に GUI を使用しないように伝えます。X11 を利用していない場合には自動的に指定されますが、 そうでない場合は明示的に指定します。

`-L 2` オプションは cvsup にファイル更新中の詳細情報をプリントアウト するように伝えます。冗長性には `-L 0` から `-L 2` までの三つのレベルがあります。 デフォルトは 0 であり、エラーメッセージ以外はまったく出力 しません。

たくさんの他のオプション変数があります。 それらの簡単な一覧は `cvsup -H` で表示されます。 より詳しい説明はマニュアルページをご覧ください。

動作している更新の方法に満足したら、cron(8) を使って CVSup を定期的に 実行させる準備をすることができます。cron から起動する際には、 明示的に CVSup が GUI を使わないようにする必要があります。

### A.6.5. CVSup ファイルコレクション

CVSup 経由で入手できるファイルコレクションは 階層的に組織化されています。 いくつか大きなコレクションがあり、 それらは小さなサブコレクションに 分割されています。 大きなコレクションは、そのサブコレクション毎に 受信することと同じことになります。 下の一覧ではコレクション間の階層関係を 字下げして表現します。

最も一般的に使用するコレクションは `src-all`、 `ports-all` です。 他のコレクションは特別な目的を持つ人達だけが使用しており、 ミラーサイトはそれらのすべてを 持っていないかもしれません。

`cvs-all release=cvs`

  メインの FreeBSD CVS リポジトリであり、 暗号のコードを含んでいます。

  `distrib release=cvs`

    FreeBSD の配布とミラーに関連するファイルです。

  `doc-all release=cvs`

    FreeBSD ハンドブックおよびその他のドキュメントのソースです。 これには FreeBSD web サイトのファイルは含まれません。

  `ports-all release=cvs`

    FreeBSD Ports Collection です。

    > Important: `ports-all` (ports ツリー全体) を更新せずに、 以下のサブコレクションの一つを使う場合は、常に `ports-base` サブコレクションを更新することを忘れないでください! ports の構築システムに変更があると、 `ports-base` に反映されます。 そしてほとんどの場合、その変更は新しい ports で“実際に”使われるからです。 つまり、“個々の ports” だけを更新していると、 奇妙なエラーで構築に失敗する可能性が非常に高くなるということです。 `ports-base` サブコレクションが 最新状態であるかどうかの確認は、 何よりも最初にやらなければならない ことなのです。

    > Important: ローカルで `ports/INDEX` を作成するには、 `ports-all` (ports ツリー全体) が必要です。 サブコレクションのみで `ports/INDEX` を作成することはできません。 FAQ を参照してください。

    `ports-accessibility release=cvs`

      障害を持ったユーザの役に立つソフトウェア

    `ports-arabic release=cvs`

      アラビア語サポート

    `ports-archivers release=cvs`

      アーカイビングのツール。

    `ports-astro release=cvs`

      天文学関連の ports。

    `ports-audio release=cvs`

      サウンドサポート。

    `ports-base release=cvs`

      Ports Collection の構築システム部分。 `/usr/ports` のサブディレクトリ `Mk/`、`Tools/` にある、さまざまなファイルが含まれています。

      > Note: 上の注意文をご覧ください。 FreeBSD Ports Collection の一部分を更新する時には、 このサブコレクションも常に更新しなければなりません。

    `ports-benchmarks release=cvs`

      ベンチマークプログラム。

    `ports-biology release=cvs`

      植物学関連のプログラム。

    `ports-cad release=cvs`

      CAD ツール。

    `ports-chinese release=cvs`

      中国語サポート。

    `ports-comms release=cvs`

      通信ソフトウェア。

    `ports-converters release=cvs`

      文字コードコンバータ。

    `ports-databases release=cvs`

      データベース。

    `ports-deskutils release=cvs`

      コンピュータが発明される前に 卓上で使われていたものたち。

    `ports-devel release=cvs`

      開発ユーティリティ。

    `ports-dns release=cvs`

      DNS 関連のソフトウェア。

    `ports-editors release=cvs`

      エディタ。

    `ports-emulators release=cvs`

      他の OS のエミュレータ。

    `ports-finance release=cvs`

      金融、財務関連のアプリケーション。

    `ports-ftp release=cvs`

      FTP クライアントとサーバ。

    `ports-games release=cvs`

      ゲーム。

    `ports-german release=cvs`

      ドイツ語サポート。

    `ports-graphics release=cvs`

      グラフィックユーティリティ。

    `ports-hebrew release=cvs`

      ヘブライ語サポート

    `ports-hungarian release=cvs`

      ハンガリー語のサポート。

    `ports-irc release=cvs`

      インターネットリレーチャット (IRC) 用のユーティリティ。

    `ports-japanese release=cvs`

      日本語サポート。

    `ports-java release=cvs`

      Java ユーティリティ。

    `ports-korean release=cvs`

      韓国語サポート。

    `ports-lang release=cvs`

      プログラミング言語。

    `ports-mail release=cvs`

      メールソフトウェア。

    `ports-math release=cvs`

      数値計算ソフトウェア。

    `ports-mbone release=cvs`

      MBone アプリケーション。

    `ports-misc release=cvs`

      色々なユーティリティ。

    `ports-multimedia release=cvs`

      マルチメディアソフトウェア。

    `ports-net release=cvs`

      ネットワーキングソフトウェア。

    `ports-net-im release=cvs`

      インスタントメッセージングソフト。

    `ports-net-mgmt release=cvs`

      ネットワーク管理ソフトウェア

    `ports-net-p2p release=cvs`

      ピアツーピアネットワーク。

    `ports-news release=cvs`

      USENET ニュースのソフトウェア。

    `ports-palm release=cvs`

      Palm™ シリーズ用ソフトウェア。

    `ports-polish release=cvs`

      ポーランド語のサポート。

    `ports-ports-mgmt release=cvs`

      ports および packages 管理用のユーティリティ。

    `ports-portuguese release=cvs`

      ポルトガル語のサポート。

    `ports-print release=cvs`

      印刷ソフトウェア。

    `ports-russian release=cvs`

      ロシア語サポート。

    `ports-science release=cvs`

      科学

    `ports-security release=cvs`

      セキュリティユーティリティ。

    `ports-shells release=cvs`

      コマンドラインシェル。

    `ports-sysutils release=cvs`

      システムユーティリティ。

    `ports-textproc release=cvs`

      文書処理ユーティリティ (デスクトップパブリッシングは含まない)。

    `ports-ukrainian release=cvs`

      ウクライナ語サポート

    `ports-vietnamese release=cvs`

      ベトナム語サポート。

    `ports-www release=cvs`

      World Wide Web 関連のソフトウェア。

    `ports-x11 release=cvs`

      X window システムをサポートする ports。

    `ports-x11-clocks release=cvs`

      X11 上で動作する時計の数々。

    `ports-x11-drivers release=cvs`

      X11 のドライバ。

    `ports-x11-fm release=cvs`

      X11 上で動作するファイラ。

    `ports-x11-fonts release=cvs`

      X11 のフォントとフォントユーティリティ。

    `ports-x11-toolkits release=cvs`

      X11 のツールキット。

    `ports-x11-servers release=cvs`

      各種 X11 サーバ。

    `ports-x11-themes release=cvs`

      X11 のテーマ

    `ports-x11-wm release=cvs`

      X11 のウィンドウマネージャ。

  `projects-all release=cvs`

    FreeBSD プロジェクトのリポジトリのソース。

  `src-all release=cvs`

    メインの FreeBSD ソース群であり、 暗号のコードを含んでいます。

    `src-base release=cvs`

      `/usr/src` のトップにあるその他のファイル。

    `src-bin release=cvs`

      シングルユーザモードで必要な ユーザユーティリティ (`/usr/src/bin`)。

    `src-cddl release=cvs`

      CDDL ライセンスのユーティリティおよびライブラリ (`/usr/src/cddl`)。

    `src-contrib release=cvs`

      FreeBSD プロジェクト外部からの ユーティリティおよびライブラリ、 比較的無修正 (`/usr/src/contrib`)。

    `src-crypto release=cvs`

      FreeBSD プロジェクトの外部で開発された暗号ユーティリティとライブラリで、 ほとんどそのままの形で使われます (`/usr/src/crypto`)。

    `src-eBones release=cvs`

      Kerberos と DES (`/usr/src/eBones`) のこと。 現在の FreeBSD リリースでは使われていません。

    `src-etc release=cvs`

      システムコンフィグレーションファイル (`/usr/src/etc`)。

    `src-games release=cvs`

      ゲーム (`/usr/src/games`)。

    `src-gnu release=cvs`

      GNU Public License 下にあるユーティリティ (`/usr/src/gnu`)。

    `src-include release=cvs`

      ヘッダファイル (`/usr/src/include`)。

    `src-kerberos5 release=cvs`

      Kerberos5 セキュリティパッケージ (`/usr/src/kerberos5`)。

    `src-kerberosIV release=cvs`

      KerberosIV セキュリティパッケージ (`/usr/src/kerberosIV`)。

    `src-lib release=cvs`

      ライブラリ (`/usr/src/lib`)。

    `src-libexec release=cvs`

      システムプログラムであり、 通常は他のプログラムから実行される (`/usr/src/libexec`)。

    `src-release release=cvs`

      FreeBSD の release を構築するために必要なファイル (`/usr/src/release`)。

    `src-rescue release=cvs`

      システム復旧のためのスタティックリンクされている緊急用プログラム。 rescue(8) をご覧ください (`/usr/src/rescue`)。

    `src-sbin release=cvs`

      シングルユーザモード用の システムユーティリティ (`/usr/src/sbin`)。

    `src-secure release=cvs`

      暗号化ライブラリとコマンド (`/usr/src/secure`)。

    `src-share release=cvs`

      多様なシステム間で共有可能なファイル (`/usr/src/share`)。

    `src-sys release=cvs`

      カーネル (`/usr/src/sys`)。

    `src-sys-crypto release=cvs`

      カーネル用の暗号コード (`/usr/src/sys/crypto`)。

    `src-tools release=cvs`

      FreeBSD の保守用の色々なツール (`/usr/src/tools`)。

    `src-usrbin release=cvs`

      ユーザユーティリティ (`/usr/src/usr.bin`)。

    `src-usrsbin release=cvs`

      システムユーティリティ (`/usr/src/usr.sbin`)。

  `www release=cvs`

    FreeBSD WWW サイトのソースです。

`distrib release=self`

  CVSup サーバ自身のコンフィグレーションファイルです。CVSup ミラーサイトが使用します。

`gnats release=current`

  GNATS バグトラッキングデータベースです。

`mail-archive release=current`

  FreeBSD 関連メーリングリストのアーカイブ。

`www release=current`

  前処理された FreeBSD WWW サイトのファイルです (ソースではありません)。 WWW ミラーサイトが使用します。

### A.6.6. 詳細について

CVSup の FAQ や CVSup に関するその他の情報については The CVSup Home Page をご覧ください。

CVSup のほとんどの FreeBSD 関連の議論は FreeBSD technical discussions メーリングリスト でおこなわれています。 ソフトウェアの新しいバージョンは FreeBSD announcements メーリングリスト で アナウンスされます。

CVSup に関する質問やバグ報告については CVSup FAQ をご覧ください。

### A.6.7. CVSup サイト

FreeBSD の CVSup サーバは以下のサイトで稼働しています。

中央サーバ, 一次ミラーサイト, Armenia, Israel, アイスランド, アイルランド, アメリカ合衆国, アルゼンチン, イギリス, イタリア, インドネシア共和国, ウクライナ, エストニア, オーストラリア, オーストリア, オランダ, カナダ, キルギス共和国, ギリシア, クウェート, コスタリカ共和国, サンマリノ, シンガポール, スイス, スウェーデン, スペイン, スロバキア共和国, スロベニア, タイ王国, チェコ共和国, デンマーク, トルコ, ドイツ, ニュージーランド, ノルウェー, ハンガリー, フィリピン, フィンランド, フランス, ブラジル, ブルガリア, ポーランド, ポルトガル, ラトビア, リトアニア, ルーマニア, ロシア, 韓国, 台湾, 中国, 南アフリカ, 日本.

(2010/06/17 12:49:57 UTC 現在)

中央サーバ

  - cvsup.FreeBSD.org

一次ミラーサイト

  - cvsup1.FreeBSD.org

  - cvsup2.FreeBSD.org

  - cvsup3.FreeBSD.org

  - cvsup4.FreeBSD.org

  - cvsup5.FreeBSD.org

  - cvsup6.FreeBSD.org

  - cvsup7.FreeBSD.org

  - cvsup8.FreeBSD.org

  - cvsup9.FreeBSD.org

  - cvsup10.FreeBSD.org

  - cvsup11.FreeBSD.org

  - cvsup12.FreeBSD.org

  - cvsup13.FreeBSD.org

  - cvsup14.FreeBSD.org

  - cvsup15.FreeBSD.org

  - cvsup16.FreeBSD.org

  - cvsup18.FreeBSD.org

Armenia

  - cvsup1.am.FreeBSD.org

Israel

  - cvsup.il.FreeBSD.org

アイスランド

  - cvsup.is.FreeBSD.org

アイルランド

  - cvsup.ie.FreeBSD.org

  - cvsup2.ie.FreeBSD.org

アメリカ合衆国

  - cvsup1.us.FreeBSD.org

  - cvsup2.us.FreeBSD.org

  - cvsup3.us.FreeBSD.org

  - cvsup4.us.FreeBSD.org

  - cvsup5.us.FreeBSD.org

  - cvsup6.us.FreeBSD.org

  - cvsup7.us.FreeBSD.org

  - cvsup8.us.FreeBSD.org

  - cvsup9.us.FreeBSD.org

  - cvsup10.us.FreeBSD.org

  - cvsup11.us.FreeBSD.org

  - cvsup12.us.FreeBSD.org

  - cvsup13.us.FreeBSD.org

  - cvsup14.us.FreeBSD.org

  - cvsup15.us.FreeBSD.org

  - cvsup16.us.FreeBSD.org

  - cvsup18.us.FreeBSD.org

アルゼンチン

  - cvsup.ar.FreeBSD.org

イギリス

  - cvsup.uk.FreeBSD.org

  - cvsup2.uk.FreeBSD.org

  - cvsup3.uk.FreeBSD.org

  - cvsup4.uk.FreeBSD.org

イタリア

  - cvsup.it.FreeBSD.org

インドネシア共和国

  - cvsup.id.FreeBSD.org

ウクライナ

  - cvsup2.ua.FreeBSD.org

  - cvsup3.ua.FreeBSD.org

  - cvsup5.ua.FreeBSD.org

  - cvsup6.ua.FreeBSD.org

  - cvsup7.ua.FreeBSD.org

エストニア

  - cvsup.ee.FreeBSD.org

オーストラリア

  - cvsup.au.FreeBSD.org

オーストリア

  - cvsup.at.FreeBSD.org

  - cvsup2.at.FreeBSD.org

オランダ

  - cvsup.nl.FreeBSD.org

  - cvsup2.nl.FreeBSD.org

  - cvsup3.nl.FreeBSD.org

カナダ

  - cvsup1.ca.FreeBSD.org

キルギス共和国

  - cvsup.kg.FreeBSD.org

ギリシア

  - cvsup.gr.FreeBSD.org

  - cvsup2.gr.FreeBSD.org

クウェート

  - cvsup1.kw.FreeBSD.org

コスタリカ共和国

  - cvsup1.cr.FreeBSD.org

サンマリノ

  - cvsup.sm.FreeBSD.org

シンガポール

  - cvsup.sg.FreeBSD.org

スイス

  - cvsup.ch.FreeBSD.org

スウェーデン

  - cvsup.se.FreeBSD.org

  - cvsup2.se.FreeBSD.org

スペイン

  - cvsup.es.FreeBSD.org

  - cvsup2.es.FreeBSD.org

  - cvsup3.es.FreeBSD.org

スロバキア共和国

  - cvsup.sk.FreeBSD.org

スロベニア

  - cvsup.si.FreeBSD.org

  - cvsup2.si.FreeBSD.org

タイ王国

  - cvsup.th.FreeBSD.org

チェコ共和国

  - cvsup.cz.FreeBSD.org

デンマーク

  - cvsup.dk.FreeBSD.org

  - cvsup2.dk.FreeBSD.org

トルコ

  - cvsup.tr.FreeBSD.org

  - cvsup2.tr.FreeBSD.org

ドイツ

  - cvsup.de.FreeBSD.org

  - cvsup2.de.FreeBSD.org

  - cvsup3.de.FreeBSD.org

  - cvsup4.de.FreeBSD.org

  - cvsup5.de.FreeBSD.org

  - cvsup6.de.FreeBSD.org

  - cvsup7.de.FreeBSD.org

  - cvsup8.de.FreeBSD.org

ニュージーランド

  - cvsup.nz.FreeBSD.org

  - cvsup2.nz.FreeBSD.org

ノルウェー

  - cvsup.no.FreeBSD.org

ハンガリー

  - cvsup.hu.FreeBSD.org

フィリピン

  - cvsup1.ph.FreeBSD.org

フィンランド

  - cvsup.fi.FreeBSD.org

  - cvsup2.fi.FreeBSD.org

フランス

  - cvsup.fr.FreeBSD.org

  - cvsup1.fr.FreeBSD.org

  - cvsup2.fr.FreeBSD.org

  - cvsup3.fr.FreeBSD.org

  - cvsup4.fr.FreeBSD.org

  - cvsup5.fr.FreeBSD.org

  - cvsup8.fr.FreeBSD.org

ブラジル

  - cvsup.br.FreeBSD.org

  - cvsup2.br.FreeBSD.org

  - cvsup3.br.FreeBSD.org

  - cvsup4.br.FreeBSD.org

  - cvsup5.br.FreeBSD.org

ブルガリア

  - cvsup.bg.FreeBSD.org

ポーランド

  - cvsup.pl.FreeBSD.org

  - cvsup2.pl.FreeBSD.org

  - cvsup3.pl.FreeBSD.org

ポルトガル

  - cvsup.pt.FreeBSD.org

  - cvsup2.pt.FreeBSD.org

  - cvsup3.pt.FreeBSD.org

ラトビア

  - cvsup.lv.FreeBSD.org

  - cvsup2.lv.FreeBSD.org

リトアニア

  - cvsup.lt.FreeBSD.org

  - cvsup2.lt.FreeBSD.org

  - cvsup3.lt.FreeBSD.org

ルーマニア

  - cvsup.ro.FreeBSD.org

  - cvsup1.ro.FreeBSD.org

  - cvsup2.ro.FreeBSD.org

  - cvsup3.ro.FreeBSD.org

ロシア

  - cvsup.ru.FreeBSD.org

  - cvsup2.ru.FreeBSD.org

  - cvsup3.ru.FreeBSD.org

  - cvsup4.ru.FreeBSD.org

  - cvsup5.ru.FreeBSD.org

  - cvsup6.ru.FreeBSD.org

  - cvsup7.ru.FreeBSD.org

韓国

  - cvsup.kr.FreeBSD.org

  - cvsup2.kr.FreeBSD.org

  - cvsup3.kr.FreeBSD.org

台湾

  - cvsup.tw.FreeBSD.org

  - cvsup3.tw.FreeBSD.org

  - cvsup4.tw.FreeBSD.org

  - cvsup5.tw.FreeBSD.org

  - cvsup6.tw.FreeBSD.org

  - cvsup7.tw.FreeBSD.org

  - cvsup8.tw.FreeBSD.org

  - cvsup9.tw.FreeBSD.org

  - cvsup10.tw.FreeBSD.org

  - cvsup11.tw.FreeBSD.org

  - cvsup12.tw.FreeBSD.org

  - cvsup13.tw.FreeBSD.org

  - cvsup14.tw.FreeBSD.org

中国

  - cvsup.cn.FreeBSD.org

  - cvsup2.cn.FreeBSD.org

  - cvsup3.cn.FreeBSD.org

  - cvsup4.cn.FreeBSD.org

  - cvsup5.cn.FreeBSD.org

南アフリカ

  - cvsup.za.FreeBSD.org

  - cvsup2.za.FreeBSD.org

日本

  - cvsup.jp.FreeBSD.org

  - cvsup2.jp.FreeBSD.org

  - cvsup3.jp.FreeBSD.org

  - cvsup4.jp.FreeBSD.org

  - cvsup5.jp.FreeBSD.org

  - cvsup6.jp.FreeBSD.org

## A.7. CVS タグ

cvs や CVSup を使用してソースを入手したり同期させたりするとき、 リビジョンタグを指定しなければなりません。 リビジョンタグは、特定の FreeBSD 開発ブランチか、 もしくはある時刻に対応しています。前者を “ブランチタグ”、 後者を “リリースタグ” と呼びます。

### A.7.1. ブランチタグ

ここにある `HEAD` (常に有効なタグ) 以外のすべてのタグは、`src/` のみに有効です。 `ports/`、`doc/`、 `www/` ツリーは、ブランチに分けられていません。

HEAD

  主要部をなす流れ、すなわち FreeBSD-CURRENT のための名前です。また、 どのリビジョンも指定されなかったときにはこれになります。

  CVSup では、 このタグは `.` で表されます (句読点ではありません。`.` 文字そのものです)。

  > Note: CVS ではこれがリビジョンタグが指定されなかった時のデフォルトです。 STABLE な計算機上に CURRENT のソースをチェクアウトしたりアップデートするのは、 思うところがあってやっているのというのでなければ、 よい考えとはいえません。

RELENG_8

  FreeBSD-8.X の開発のための流れです。 FreeBSD 8-STABLE としても知られています。

RELENG_8_0

  FreeBSD-8.0 用のリリースブランチ。セキュリティ勧告や その他の深刻なセキュリティ上の修正があった場合にのみ使われます。

RELENG_7

  FreeBSD-7.X の開発のための流れです。 FreeBSD 7-STABLE としても知られています。

RELENG_7_3

  FreeBSD-7.3 用のリリースブランチ。セキュリティ勧告や その他の深刻なセキュリティ上の修正があった場合にのみ使われます。

RELENG_7_2

  FreeBSD-7.2 用のリリースブランチ。セキュリティ勧告や その他の深刻なセキュリティ上の修正があった場合にのみ使われます。

RELENG_7_1

  FreeBSD-7.1 用のリリースブランチ。セキュリティ勧告や その他の深刻なセキュリティ上の修正があった場合にのみ使われます。

RELENG_7_0

  FreeBSD-7.0 用のリリースブランチ。セキュリティ勧告や その他の深刻なセキュリティ上の修正があった場合にのみ使われます。

RELENG_6

  FreeBSD-6.X の開発のための流れです。 FreeBSD 6-STABLE としても知られています。

RELENG_6_4

  FreeBSD-6.4 用のリリースブランチ。セキュリティ勧告や その他の深刻なセキュリティ上の修正があった場合にのみ使われます。

RELENG_6_3

  FreeBSD-6.3 用のリリースブランチ。セキュリティ勧告や その他の深刻なセキュリティ上の修正があった場合にのみ使われます。

RELENG_6_2

  FreeBSD-6.2 用のリリースブランチ。セキュリティ勧告や その他の深刻なセキュリティ上の修正があった場合にのみ使われます。

RELENG_6_1

  FreeBSD-6.1 用のリリースブランチ。セキュリティ勧告や その他の深刻なセキュリティ上の修正があった場合にのみ使われます。

RELENG_6_0

  FreeBSD-6.0 用のリリースブランチ。セキュリティ勧告や その他の深刻なセキュリティ上の修正があった場合にのみ使われます。

RELENG_5

  FreeBSD-5.X の開発のための流れです。 FreeBSD 5-STABLE としても知られています。

RELENG_5_5

  FreeBSD-5.5 用のリリースブランチ。セキュリティ勧告や その他の深刻なセキュリティ上の修正があった場合にのみ使われます。

RELENG_5_4

  FreeBSD-5.4 用のリリースブランチ。セキュリティ勧告や その他の深刻なセキュリティ上の修正があった場合にのみ使われます。

RELENG_5_3

  FreeBSD-5.3 用のリリースブランチ。セキュリティ勧告や その他の深刻なセキュリティ上の修正があった場合にのみ使われます。

RELENG_5_2

  FreeBSD-5.2 および FreeBSD-5.2.1 用のリリースブランチ。セキュリティ勧告や その他の深刻なセキュリティ上の修正があった場合にのみ使われます。

RELENG_5_1

  FreeBSD-5.1 用のリリースブランチ。セキュリティ勧告や その他の深刻なセキュリティ上の修正があった場合にのみ使われます。

RELENG_5_0

  FreeBSD-5.0 用のリリースブランチ。セキュリティ勧告や その他の重要なセキュリティ上の修正があった場合にのみ使われます。

RELENG_4

  FreeBSD-4.X の開発のための流れです。 FreeBSD 4-STABLE としても知られています。

RELENG_4_11

  FreeBSD-4.11 用のリリースブランチ。セキュリティ勧告や その他の重要なセキュリティ上の修正があった場合にのみ使われます。

RELENG_4_10

  FreeBSD-4.10 用のリリースブランチ。セキュリティ勧告や その他の重要なセキュリティ上の修正があった場合にのみ使われます。

RELENG_4_9

  FreeBSD-4.9 用のリリースブランチ。セキュリティ勧告や その他の重要なセキュリティ上の修正があった場合にのみ使われます。

RELENG_4_8

  FreeBSD-4.8 用のリリースブランチ。セキュリティ勧告や その他の重要なセキュリティ上の修正があった場合にのみ使われます。

RELENG_4_7

  FreeBSD-4.7 用のリリースブランチ。セキュリティ勧告や その他の重要なセキュリティ上の修正があった場合にのみ使われます。

RELENG_4_6

  FreeBSD-4.6 および FreeBSD-4.6.2 用のリリースブランチ。セキュリティ勧告や その他の重要なセキュリティ上の修正があった場合にのみ使われます。

RELENG_4_5

  FreeBSD-4.5 用のリリースブランチ。セキュリティ勧告や その他の重要なセキュリティ上の修正があった場合にのみ使われます。

RELENG_4_4

  FreeBSD-4.4 用のリリースブランチ。セキュリティ勧告や その他の重要なセキュリティ上の修正があった場合にのみ使われます。

RELENG_4_3

  FreeBSD-4.3 用のリリースブランチ。セキュリティ勧告や その他の重要なセキュリティ上の修正があった場合にのみ使われます。

RELENG_3

  FreeBSD-3.X の開発のための流れです。 3.X-STABLE としても知られています。

RELENG_2_2

  FreeBSD-2.2.X の開発のための流れです。2.2-STABLE としても知られています。このブランチは大部分が すたれています。

### A.7.2. リリースタグ

これらのタグは、各バージョンの FreeBSD がリリースされた時点に対応しています。 リリースエンジニアリング工程は、 Release Engineering Information と Release Process に詳細にまとめられています。 `src` ツリーでは、 `RELENG_` で始まる名前のタグが使われています。 `ports` ツリーおよび `doc` ツリーでは、 `RELEASE` で始まる名前のタグが使われています。 なお、`www` ツリーは、 リリースに際して特別なタグが付与されることはありません。

RELENG_8_0_0_RELEASE

  FreeBSD 8.0

RELENG_7_3_0_RELEASE

  FreeBSD 7.3

RELENG_7_2_0_RELEASE

  FreeBSD 7.2

RELENG_7_1_0_RELEASE

  FreeBSD 7.1

RELENG_7_0_0_RELEASE

  FreeBSD 7.0

RELENG_6_4_0_RELEASE

  FreeBSD 6.4

RELENG_6_3_0_RELEASE

  FreeBSD 6.3

RELENG_6_2_0_RELEASE

  FreeBSD 6.2

RELENG_6_1_0_RELEASE

  FreeBSD 6.1

RELENG_6_0_0_RELEASE

  FreeBSD 6.0

RELENG_5_5_0_RELEASE

  FreeBSD 5.5

RELENG_5_4_0_RELEASE

  FreeBSD 5.4

RELENG_4_11_0_RELEASE

  FreeBSD 4.11

RELENG_5_3_0_RELEASE

  FreeBSD 5.3

RELENG_4_10_0_RELEASE

  FreeBSD 4.10

RELENG_5_2_1_RELEASE

  FreeBSD 5.2.1

RELENG_5_2_0_RELEASE

  FreeBSD 5.2

RELENG_4_9_0_RELEASE

  FreeBSD 4.9

RELENG_5_1_0_RELEASE

  FreeBSD 5.1

RELENG_4_8_0_RELEASE

  FreeBSD 4.8

RELENG_5_0_0_RELEASE

  FreeBSD 5.0

RELENG_4_7_0_RELEASE

  FreeBSD 4.7

RELENG_4_6_2_RELEASE

  FreeBSD 4.6.2

RELENG_4_6_1_RELEASE

  FreeBSD 4.6.1

RELENG_4_6_0_RELEASE

  FreeBSD 4.6

RELENG_4_5_0_RELEASE

  FreeBSD 4.5

RELENG_4_4_0_RELEASE

  FreeBSD 4.4

RELENG_4_3_0_RELEASE

  FreeBSD 4.3

RELENG_4_2_0_RELEASE

  FreeBSD 4.2

RELENG_4_1_1_RELEASE

  FreeBSD 4.1.1

RELENG_4_1_0_RELEASE

  FreeBSD 4.1

RELENG_4_0_0_RELEASE

  FreeBSD 4.0

RELENG_3_5_0_RELEASE

  FreeBSD-3.5

RELENG_3_4_0_RELEASE

  FreeBSD-3.4

RELENG_3_3_0_RELEASE

  FreeBSD-3.3

RELENG_3_2_0_RELEASE

  FreeBSD-3.2

RELENG_3_1_0_RELEASE

  FreeBSD-3.1

RELENG_3_0_0_RELEASE

  FreeBSD-3.0

RELENG_2_2_8_RELEASE

  FreeBSD-2.2.8

RELENG_2_2_7_RELEASE

  FreeBSD-2.2.7

RELENG_2_2_6_RELEASE

  FreeBSD-2.2.6

RELENG_2_2_5_RELEASE

  FreeBSD-2.2.5

RELENG_2_2_2_RELEASE

  FreeBSD-2.2.2

RELENG_2_2_1_RELEASE

  FreeBSD-2.2.1

RELENG_2_2_0_RELEASE

  FreeBSD-2.2.0

## A.8. AFS サイト

FreeBSD の AFS サーバは以下のサイトで稼働しています:

スウェーデン

  ファイルは以下の場所にあります: `/afs/stacken.kth.se/ftp/pub/FreeBSD/`

      stacken.kth.se         # Stacken Computer Club, KTH, Sweden
      130.237.234.43         #hot.stacken.kth.se
      130.237.237.230        #fishburger.stacken.kth.se
      130.237.234.3          #milko.stacken.kth.se

  (保守担当 `<ftp@stacken.kth.se>`)

## A.9. rsync ミラーサイト

次のサイトは、FreeBSD を rsync プロトコルで提供しています。 rsync ユーティリティは rcp(1) コマンドとほぼ同じ機能を実現するもので、 こちらの方が豊富なオプションを備え、送り側と受け側の差分だけを 転送するという rsync リモート更新プロトコルを使用するという点が異なります。 rsync を使うと、ネットワーク経由での同期を非常に高速に行なうことが可能です。 特に、FreeBSD FTP サーバや CVS リポジトリのミラーサイトを作成する時に便利でしょう。 rsync は、多くのオペレーティングシステムで 利用することができます。FreeBSD 版は、 `net/rsync` の port か、package を使ってください。

チェコ共和国

  rsync://ftp.cz.FreeBSD.org/

  提供しているコレクション:

  - ftp: FreeBSD FTP サーバの部分ミラー

  - FreeBSD: FreeBSD FTP サーバの全体ミラー

オランダ

  rsync://ftp.nl.FreeBSD.org/

  提供しているコレクション:

  - FreeBSD: FreeBSD FTP サーバの全体ミラー

ロシア

  rsync://ftp.mtu.ru/

  提供しているコレクション:

  - FreeBSD: FreeBSD FTP サーバの全体ミラー

  - FreeBSD-gnats: GNATS バグトラッキングデータベース

  - FreeBSD-Archive: FreeBSD アーカイブ FTP サーバのミラー

台湾

  rsync://ftp.tw.FreeBSD.org/

  rsync://ftp2.tw.FreeBSD.org/

  rsync://ftp6.tw.FreeBSD.org/

  提供しているコレクション:

  - FreeBSD: FreeBSD FTP サーバの全体ミラー

イギリス

  rsync://rsync.mirrorservice.org/

  提供しているコレクション:

  - sites/ftp.freebsd.org: FreeBSD FTP サーバの全体ミラー

アメリカ合衆国

  rsync://ftp-master.FreeBSD.org/

  このサーバは、FreeBSD の一次ミラーサイトとしてのみ使われています。

  提供しているコレクション:

  - FreeBSD: FreeBSD FTP サーバのマスタアーカイブ

  - acl: The FreeBSD マスタ ACL リスト

  rsync://ftp13.FreeBSD.org/

  提供しているコレクション:

  - FreeBSD: FreeBSD FTP サーバの全体ミラー

# Appendix B. 参考図書

訳: 中井 幸博 `<nakai@mlab.t.u-tokyo.ac.jp>`, 1996 年 10 月 12 日。

FreeBSD オペレーティングシステムの個々の部分については マニュアルページで定義のような説明がなされていますが, それらにはどうやってその部分どうしをつなぎあわせて オペレーティングシステム全体を円滑に動作させるかを 説明していないという欠点がよく指摘されます。 それを補うためには UNIX システム管理についてのよい本や, すぐれた利用者向けのマニュアルが欠かせません。

## B.1. FreeBSD 専門の書籍および雑誌

非英語文化圏の 書籍 & 雑誌:

- FreeBSD 入門與應用 (中国語)。

- FreeBSD入門キット 98版第二版。 宮嵜忠臣 著。 秀和システム。 ISBN 4-87966-535-5 C3055 2900 円。

- FreeBSD入門キット AT互換機版 第二版。 宮嵜忠臣 著。 秀和システム。 ISBN 4-87966-535-5 C3055 2900 円。

- ここまでできる FreeBSD パワーガイド。 霜山 滋, 仲道 嘉夫, 山中 右次 著。 秀和システム。 ISBN 4-87966-637-8 2600円。

- FreeBSD徹底入門。 あさだ たくや / 天川 修平 / 衛藤 敏寿 / 浜田 直樹 / 細川 達己 / 三田 吉郎 著。 翔泳社。 ISBN 4-88135-473-6 3600 円。

- パーソナル UNIX スターターキット FreeBSD。 民田 雅人 / 古場 正行 / 増田 佳泰 / 天池 健 / 宮川 晋 共著。 アスキー。 ISBN 4-7561-1733-3 3000 円。

- FreeBSD ハンドブック (日本語版)。 アスキー。 ISBN 4-7561-1580-2 3800 円。

- FreeBSD mit Methode (ドイツ語版)。 Computer und Literatur Verlag/Vertrieb Hanser 発行。 1998。 ISBN 3-932311-31-0

- FreeBSD 4 - Installieren, Konfigurieren, Administrieren (ドイツ語版), Computer und Literatur Verlag, 2001 年 発行。ISBN 3-932311-88-4。

- FreeBSD 5 - Installieren, Konfigurieren, Administrieren (ドイツ語), Computer und Literatur Verlag 発行, 2003 年. ISBN 3-936546-06-1.

- FreeBSD de Luxe (ドイツ語), Verlag Modere Industrie 発行, 2003 年。ISBN 3-8266-1343-0.

- FreeBSD インストール & 活用マニュアル, 毎日コミュニケーションズ発行。

- Onno W Purbo, Dodi Maryanto, Syahrial Hubbany, Widjil Widodo 著 FreeBSD を使ったインターネットサーバの構築 (Building Internet Server with FreeBSD) (インドネシア語), Elex Media Komputindo 発行。

英語の書籍 & 雑誌:

- Absolute BSD: The Ultimate Guide to FreeBSD, No Starch Press 刊、2002 年。

- The Complete FreeBSD, O'Reilly、2003 年。 ISBN: 0596005164

- The FreeBSD Corporate Networker's Guide, Addison-Wesley 刊、2000 年。 ISBN: 0201704811

- FreeBSD: An Open-Source Operating System for Your Personal Computer、The Bit Tree Press 刊、2001 年。 ISBN: 0971204500

- Teach Yourself FreeBSD in 24 Hours, Sams 刊、2002 年。 ISBN: 0672324245

- FreeBSD unleashed, Sams 刊、2002 年。 ISBN: 0672324563

- FreeBSD: The Complete Reference, McGrawHill 刊、2003 年。 ISBN: 0072224096

## B.2. 利用者向けのガイド

- Computer Systems Research Group, UC Berkeley. 4.4BSD User's Reference Manual. O'Reilly & Associates, Inc., 1994. ISBN 1-56592-075-9

- Computer Systems Research Group, UC Berkeley. 4.4BSD User's Supplementary Documents. O'Reilly & Associates, Inc., 1994. ISBN 1-56592-076-7

- UNIX in a Nutshell. O'Reilly & Associates, Inc., 1990. ISBN 093717520X

- Mui, Linda. What You Need To Know When You Can't Find Your UNIX System Administrator. O'Reilly & Associates, Inc., 1995. ISBN 1-56592-104-6

- オハイオ州立大学による UNIX Introductory Course。 オンラインで HTML 版と PostScript 版が利用可能。

  FreeBSD イタリア語ドキュメンテーションプロジェクトの一環 として、このドキュメントの イタリア語訳 が用意されています。

- FreeBSD 友の会 jpman プロジェクト。 FreeBSD User's Reference Manual (日本語訳)。 毎日コミュニケーションズ , 1998。 ISBN4-8399-0088-4 P3800E。

- Edinburgh University による UNIX 環境の初心者向け オンラインガイド。

## B.3. 管理者向けのガイド

- Albitz, Paul and Liu, Cricket. DNS and BIND, 4th Ed. O'Reilly & Associates, Inc., 2001. ISBN 1-59600-158-4 (訳注: 邦訳は以下のものが出版されています。 高田 広章 / 小島 育夫 監訳 , 小舘 光正 訳。 DNS & BIND 第 3 版。 オライリー・ジャパン, 1999。 ISBN 4-900900-91-5)

- Computer Systems Research Group, UC Berkeley. 4.4BSD System Manager's Manual. O'Reilly & Associates, Inc., 1994. ISBN 1-56592-080-5

- Costales, Brian, et al. Sendmail, 2nd Ed. O'Reilly & Associates, Inc., 1997. ISBN 1-56592-222-0 (訳注: 邦訳は以下の 2 分冊のものが出版されています。 原著の 3 章までが「システム管理」, 4 章が「リファレンス」 に対応します。 中村 素典 監訳, 鈴木 克彦 訳。 sendmail システム管理 (Volume1)。 オライリー・ジャパン, 1997。 ISBN 4-900900-40-0 中村 素典 監訳, 鈴木 克彦 訳。 sendmail システム管理 (Volume2)。 オライリー・ジャパン, 1998。 ISBN 4-900900-41-9)

- Frisch, Æleen. Essential System Administration, 2nd Ed. O'Reilly & Associates, Inc., 1995. ISBN 1-56592-127-5 (訳注: 邦訳は以下のものが出版されています。 谷川 哲司 監訳, 黒岩 真吾 / 株式会社ユニテック 訳。 UNIX システム管理入門 改訂版。 オライリー・ジャパン, 1998。 ISBN 4-900900-14-1)

- Hunt, Craig. TCP/IP Network Administration, 2nd Ed. O'Reilly & Associates, Inc., 1997. ISBN 1-56592-322-7 (訳注: 邦訳は以下のものが出版されています。 村井 純 監訳。 TCP/IP ネットワーク管理 第 2 版。 オライリー・ジャパン, 1998。 ISBN 4-900900-68-0)

- Nemeth, Evi. UNIX System Administration Handbook. 3rd Ed. Prentice Hall, 2000. ISBN 0-13-020601-6 (訳注: 邦訳は以下のものが出版されています。 井上 尚司 監訳。 UNIX システム管理入門。 ソフトバンク, 1992。 ISBN 4-89052-362-6 原本は第 3 版だが, 訳出は第 1 版のみ)

- Stern, Hal Managing NFS and NIS O'Reilly & Associates, Inc., 1991. ISBN 0-937175-75-7 (訳注: 邦訳は以下のものが出版されています。 砂原 秀樹 監訳, 倉骨 彰 訳, NFS & NIS。 アスキー, 1992。 ISBN 4-7561-0273-5)

- FreeBSD 友の会 jpman プロジェクト。 FreeBSD System Administrator's Manual (日本語訳)。 毎日コミュニケーションズ, 1998. ISBN4-8399-0109-0 P3300E.

- Dreyfus, Emmanuel. Cahiers de l'Admin: BSD 第 2 版。(フランス語、「管理者ノート」)、Eyrolles, 2004. ISBN 2-212-11463-X

## B.4. プログラマ向けのガイド

- Asente, Paul, Converse, Diana, and Swick, Ralph. X Window System Toolkit. Digital Press, 1998. ISBN 1-55558-178-1

- Computer Systems Research Group, UC Berkeley. 4.4BSD Programmer's Reference Manual. O'Reilly & Associates, Inc., 1994. ISBN 1-56592-078-3

- Computer Systems Research Group, UC Berkeley. 4.4BSD Programmer's Supplementary Documents. O'Reilly & Associates, Inc., 1994. ISBN 1-56592-079-1

- Harbison, Samuel P. and Steele, Guy L. Jr. C: A Reference Manual. 4rd ed. Prentice Hall, 1995. ISBN 0-13-326224-3 (訳注: 邦訳は以下のものが出版されています。 斎藤 信男監訳。 新・詳説 C 言語リファレンス [H&Sリファレンス]。 ソフトバンク, 1994。 ISBN 4-89052-506-8 原本は第 4 版だが, 訳出は第 3 版のみ。)

- Kernighan, Brian and Dennis M. Ritchie. The C Programming Language.. PTR Prentice Hall, 1988. ISBN 0-13-110362-9 (訳注: 邦訳は以下のものが出版されています。 石田 晴久 訳。 プログラミング言語 C 第 2 版(訳書訂正版) 共立出版, 1989。 ISBN 4-320-02692-6)

- Lehey, Greg. Porting UNIX Software. O'Reilly & Associates, Inc., 1995. ISBN 1-56592-126-7

- Plauger, P. J. The Standard C Library. Prentice Hall, 1992. ISBN 0-13-131509-9 (訳注: 邦訳は以下のものが出版されています。 福富 寛 / 門倉 明彦 / 清水 恵介 訳。 標準 C ライブラリ ANSI/ISO/JIS C規格. トッパン, 1995。 ISBN 4-8101-8541-9)

- Spinellis, Diomidis. Code Reading: The Open Source Perspective. Addison-Wesley, 2003. ISBN 0-201-79940-5

- Stevens, W. Richard. Advanced Programming in the UNIX Environment. Reading, Mass. : Addison-Wesley, 1992. ISBN 0-201-56317-7 (訳注: 邦訳は以下のものが出版されています。 大木 敦雄 訳。 詳解 UNIX プログラミング。トッパン, 1994。 ISBN 4-89052-524-6)

- Stevens, W. Richard. UNIX Network Programming. 2nd Ed. PTR Prentice Hall, 1998. ISBN 0-13-949876-1 (訳注: 第 1 版の邦訳は以下のものが出版されています. 篠田 陽一 訳. UNIX ネットワークプログラミング。 トッパン, 1992. ISBN 4-8101-8509-5) 第 2 版の邦訳は以下のものが出版されています。 篠田 陽一 訳. UNIX ネットワークプログラミング 第 2 版 Vol.1。 トッパン, 1999。 ISBN 4-8101-8612-1)

- Wells, Bill. “Writing Serial Drivers for UNIX”. Dr. Dobb's Journal. 19(15), December 1994. pp68-71, 97-99.

## B.5. オペレーティングシステム内部

- Andleigh, Prabhat K. UNIX System Architecture. Prentice-Hall, Inc., 1990. ISBN 0-13-949843-5

- Jolitz, William. “Porting UNIX to the 386”. Dr. Dobb's Journal. January 1991-July 1992.

- Leffler, Samuel J., Marshall Kirk McKusick, Michael J Karels and John Quarterman The Design and Implementation of the 4.3BSD UNIX Operating System. Reading, Mass. : Addison-Wesley, 1989. ISBN 0-201-06196-1 (訳注: 邦訳は以下のものが出版されています。 中村 明 / 相田 仁 / 計 宇生 / 小池 汎平 訳。 UNIX 4.3BSDの設計と実装。丸善, 1991。 ISBN 4-621-03607-6)

- Leffler, Samuel J., Marshall Kirk McKusick, The Design and Implementation of the 4.3BSD UNIX Operating System: Answer Book. Reading, Mass. : Addison-Wesley, 1991. ISBN 0-201-54629-9 (訳注: 邦訳は以下のものが出版されています。 相田 仁 / 計 宇生 / 小池 汎平 訳。 UNIX 4.3BSDの設計と実装。 アンサーブック, トッパン, 1991。 ISBN 4-8101-8039-5)

- McKusick, Marshall Kirk, Keith Bostic, Michael J Karels, and John Quarterman. The Design and Implementation of the 4.4BSD Operating System. Reading, Mass. : Addison-Wesley, 1996. ISBN 0-201-54979-4

  (この本の第二章が FreeBSD ドキュメンテーションプロジェクト の一部として オンライン で公開されています. また, 第九章は ここ にあります。)

- Stevens, W. Richard. TCP/IP Illustrated, Volume 1: The Protocols. Reading, Mass. : Addison-Wesley, 1996. ISBN 0-201-63346-9

- Schimmel, Curt. Unix Systems for Modern Architectures. Reading, Mass. : Addison-Wesley, 1994. ISBN 0-201-63338-8

- Stevens, W. Richard. TCP/IP Illustrated, Volume 3: TCP for Transactions, HTTP, NNTP and the UNIX Domain Protocols. Reading, Mass. : Addison-Wesley, 1996. ISBN 0-201-63495-3 (訳注: 邦訳は以下のものが出版されています。 中本 幸一 / 石川 裕次 / 田中 伸佳 訳。 詳解 TCP/IP Vol.3: トランザクション TCP, HTTP, NNTP, UNIX ドメインプロトコル, アジソンウェスレイパブリッシャーズジャパン, 1998。 ISBN 4-8101-8039-5)

- Vahalia, Uresh. UNIX Internals -- The New Frontiers. Prentice Hall, 1996. ISBN 0-13-101908-2 (訳注: 邦訳は以下のものが出版されています。 徳田 英幸 / 中村 明 / 戸辺 義人 / 津田 悦幸 訳。 最前線UNIXのカーネル, ピアソンエデュケーション, 2000。 ISBN 4-89471-189-3)

- Wright, Gary R. and W. Richard Stevens. TCP/IP Illustrated, Volume 2: The Implementation. Reading, Mass. : Addison-Wesley, 1995. ISBN 0-201-63354-X

- Messmer, Hans-Peter. The Indispensable PC Hardware Book, 4th Ed. Reading, Mass: Addison-Wesley Pub. Co., 2002. ISBN 0-201-59616-4

## B.6. セキュリティの参考資料

- Cheswick, William R. and Steven M. Bellovin. Firewalls and Internet Security: Repelling the Wily Hacker. Reading, Mass. : Addison-Wesley, 1995. ISBN 0-201-63357-4 (訳注: 邦訳は以下のものが出版されています。 川副 博 監訳。ファイアウォール。 ソフトバンク, 1995。 ISBN 4-89052-672-2)

- Garfinkel, Simson and Gene Spafford. Practical UNIX & Internet Security. 2nd Ed. O'Reilly & Associates, Inc., 1996. ISBN 1-56592-148-8 (訳注: 邦訳は以下のものが出版されています。 山口 英 監訳. UNIX セキュリティ。 アスキー, 1993。 ISBN 4-7561-0274-3 原本は第 2 版だが, 訳出は第 1 版のみ)

- Garfinkel, Simson. PGP Pretty Good Privacy O'Reilly & Associates, Inc., 1995. ISBN 1-56592-098-8

## B.7. ハードウェアの参考資料

- Anderson, Don and Tom Shanley. Pentium Processor System Architecture. 2nd Ed. Reading, Mass. : Addison-Wesley, 1995. ISBN 0-201-40992-5

- Ferraro, Richard F. Programmer's Guide to the EGA, VGA, and Super VGA Cards. 3rd ed. Reading, Mass. : Addison-Wesley, 1995. ISBN 0-201-62490-7

- Intel Corporation は、自社の CPU やチップセットに関する文書を自社の 開発者向け Web サイト で公開しています。文書のフォーマットは通常 PDF です。

- Shanley, Tom. 80486 System Architecture. 3rd ed. Reading, Mass. : Addison-Wesley, 1995. ISBN 0-201-40994-1

- Shanley, Tom. ISA System Architecture. 3rd ed. Reading, Mass. : Addison-Wesley, 1995. ISBN 0-201-40996-8

- Shanley, Tom. PCI System Architecture. 4th ed. Reading, Mass. : Addison-Wesley, 1999. ISBN 0-201-30974-2

- Van Gilluwe, Frank. The Undocumented PC, 2nd Ed. Reading, Mass: Addison-Wesley Pub. Co., 1996. ISBN 0-201-47950-8

## B.8. UNIX® の歴史

- Lion, John Lion's Commentary on UNIX, 6th Ed. With Source Code. ITP Media Group, 1996. ISBN 1573980137

- Raymond, Eric s. The New Hacker's Dictionary, 3rd edition. MIT Press, 1996. ISBN 0-262-68092-0 これは ジャーゴンファイル (Jargon File) として知られています。

- Saulus, Peter H. A quarter century of UNIX. Addison-Wesley Publishing Company, Inc., 1994. ISBN 0-201-54777-5

- Simon Garfinkel, Daniel Weise, Steven Strassmann. The UNIX-HATERS Handbook. IDG Books Worldwide, Inc., 1994. ISBN 1-56884-203-1

- Don Libes, Sandy Ressler Life with UNIX -- special edition. Prentice-Hall, Inc., 1989. ISBN 0-13-536657-7 (訳注: 邦訳は以下のものが出版されています。 坂本 文 監訳. Life with UNIX. アスキー, 1990。 ISBN 4-7561-0783-4 邦訳が Special 版の訳出か否かは不明)

- BSD 系 OS の系譜図。1997 年。 http://www.FreeBSD.org/cgi/cvsweb.cgi/src/share/misc/bsd-family-treeか、 もしくは、最近の FreeBSD マシンにある `/usr/share/misc/bsd-family-tree`。

- BSD リリース告知コレクション。1997 年。 http://www.de.FreeBSD.org/de/ftp/releases/

- Networked Computer Science Technical Reports Library . http://www.ncstrl.org/

- Computer Systems Research group (CSRG) からの古い BSD リリース集 http://www.mckusick.com/csrg/: この 4 枚 CD セットには、1BSD から 4.4BSD までと 4.4BSD-Lite2 が含まれます (残念ながら 2.11BSD は含まれていません)。 また 4 枚目の CD には、最終ソースおよび SCCS ファイルが含まれています。

## B.9. 雑誌とジャーナル

- The C/C++ Users Journal. R&D Publications Inc. ISSN 1075-2838

- Sys Admin -- The Journal for UNIX System Administrators Miller Freeman, Inc., ISSN 1061-2688

- freeX -- Das Magazin für Linux - BSD - UNIX (in German) Computer- und Literaturverlag GmbH, ISSN 1436-7033

# Appendix C. インターネット上のリソース

訳: 前田 幸範 `<yuki@jp.FreeBSD.org>`、1996 年 8 月 28 日

FreeBSD の進歩は急速であり、 印刷したメディアは最新の開発をフォローするのに実用的ではありません。 それだけしかない、というわけではありませんが、 最新情報を入手する方法としては電子的なリソースがベストです。 FreeBSD はボランティアの努力によって、ユーザコミュニティ自体が、 一種の “テクニカルサポート部門” としての役割も通常果たしており、 電子メールや Usenet のニュースがこれらのコミュニティにたどり着く最も効果的な方法になっています。

以下に、FreeBSD ユーザコミュニティに連絡を取る場合の最も重要な点についての 概略を示します。 もしここに書かれていない他のリソースに気がついた場合は、それらを FreeBSD documentation project メーリングリスト に送って頂ければ、 それらをここに含めるかもしれません。

## C.1. メーリングリスト

多くの FreeBSD の開発メンバは USENET を読むことができますが、 もし、`comp.unix.bsd.freebsd.*` のグループの一つに質問を投稿したとしても タイムリにその質問を受け取るということは保証できません。 質問を適切なメーリングリストに投稿すれば、 私たちか FreeBSD の関係者から、よりよい (そして少なくともより早い) 反応がいつでも得られることでしょう。

さまざまなメーリングリストの憲章を このドキュメントの最後に記載します。私たちは、 メーリングリストの質、特に技術面に関する質を高く保つ ために努力しているので、 メーリングリストに参加する前にその憲章を読んでください。 私たちのメーリングリストの参加者のほとんどは、 現在非常 にたくさんの FreeBSD に関連したメッセージを毎日受け取っており、メーリン グリストに対するふさわしい 用いられ方をするための憲章やルールを決めるこ とによって、 メーリングリストの S/N 比を高くする保つように励んでいます。 そうしないと、結果的に、メーリングリストがプロジェクトにとって 事実上のコミュニケーションの手段になってしまうでしょう。

メーリングリストはいずれもアーカイブされており、それらは FreeBSD World Wide Web server で検索することができます。 キーワード検索可能なアーカイブの提供は、 良くある質問に対する回答を見つけるすぐれた方法ですから、 質問を投稿する前に調べてみるべきでしょう。

### C.1.1. メーリングリストの概説

一般的なメーリングリスト: 以下のものは誰でも自由に参加できる (そしておすすめの) 一般的なものです。

リスト | 目的
--- | ---
cvs-all | FreeBSD ソースツリーへ加えられた変更について
freebsd-advocacy | FreeBSD の福音伝道
freebsd-announce | 重要なイベントやプロジェクトのマイルストン
freebsd-arch | アーキテクチャ、設計に関する議論
freebsd-bugs | バグレポート
freebsd-chat | FreeBSD コミュニティに関連する技術的ではない話題
freebsd-config | FreeBSD のインストールと設定用のツールの開発に関する話題
freebsd-current | FreeBSD-current の使用に関連する議論
freebsd-isp | FreeBSD を用いている インターネットサービスプロバイダの話題
freebsd-jobs | FreeBSD 関連の雇用機会に関する話題
freebsd-newbies | FreeBSD 初心者ユーザの活動と議論
freebsd-policy | FreeBSD Core team のポリシーに関する議論。 流量は少なく、投稿することはできません
freebsd-questions | ユーザからの質問と技術サポート
freebsd-stable | FreeBSD-stable の使用に関連する議論
freebsd-test | メッセージの送信試験を行なうために、 実際のメーリングリストの代わりに使うアドレス

技術的なメーリングリスト: 以下のメーリングリストは、技術的な 議論のためのものです。 それらの利用や内容のためにしっかりとしたガイドラ インがあるので、これらのメーリングリストに入ったり、 どれか一つにメール を送ったりする前には、 それらのメーリングリストの憲章を注意深く読むべきです。

リスト | 目的
--- | ---
freebsd-afs | FreeBSD へのAFSの移植
freebsd-alpha | FreeBSD の Alpha への移植
freebsd-arm | FreeBSD の ARM プロセッサへの移植
freebsd-atm | FreeBSD での ATM ネットワーク使用に関する話題
freebsd-audit | ソースコード監査プロジェクト
freebsd-binup | バイナリアップデートシステムの設計と開発
freebsd-cluster | FreeBSD のクラスタ環境での利用
freebsd-database | FreeBSD 上でのデータベースの利用や開発に関する議論
freebsd-doc | FreeBSD 関連ドキュメントの作成
freebsd-emulation | Linux/DOS/Windows のような他のシステムのエミュレーション
freebsd-fs | ファイルシステム
freebsd-hackers | 一般的な技術の議論
freebsd-hardware | FreeBSD の走るハードウェアの一般的な議論
freebsd-i18n | FreeBSD の国際化
freebsd-ia64 | FreeBSD の Intel が開発中の IA64 システムへの移植
freebsd-ipfw | IP firewall コードの再設計に関する技術的議論
freebsd-isdn | ISDN 開発者
freebsd-java | Java 開発者や、FreeBSD へ JDK を移植する人たち
freebsd-libh | 第 2 世代のインストール、パッケージシステム
freebsd-mobile | モーバイルコンピューティングについての議論
freebsd-mozilla | mozilla の FreeBSD への移植に関する議論
freebsd-new-bus | バスアーキテクチャに関する技術的な議論
freebsd-net | ネットワークおよび TCP/IP ソースコードに関する議論
freebsd-platforms | Intel 以外のアーキテクチャのプラットフォームへの移植
freebsd-ports | Ports コレクションに関する議論
freebsd-ppc | FreeBSD の PowerPC への移植
freebsd-qa | 品質保証 (通常はリリースの保留) についての議論
freebsd-realtime | FreeBSD 用のリアルタイム拡張の開発に関する話題
freebsd-scsi | SCSI サブシステム
freebsd-security | セキュリティに関する話題
freebsd-security-notifications | セキュリティに関する通知
freebsd-small | 組み込みアプリケーションにおける FreeBSD の利用
freebsd-smp | 対称 / 非対称の マルチプロセッシングの設計に関する議論
freebsd-sparc | FreeBSD の Sparc への移植
freebsd-tokenring | FreeBSD でのトークンリングのサポート

制限されているメーリングリスト: 以下のメーリングリストはより特化された (そしてより厳しい) メンバーのためのものであり、一般的な興味を惹くようなものでは ありません。 このようなメーリングリストに参加する前に、技術的なメーリングリストで 自らの存在感をアピールするのは良い考えです。 そうすることにより、議論の際のエチケットを学ぶことができるでしょう。

メーリングリスト | 目的
--- | ---
freebsd-core | FreeBSDコアチーム
freebsd-hubs | ミラーサイトを運営している人達 (基盤のサポート)
freebsd-install | インストール関係の開発
freebsd-user-groups | ユーザグループの調整
freebsd-www | www.freebsd.org の管理者

メーリングリストのダイジェスト版: 上述のメーリングリストの多くでダイジェスト版が利用できます。 ダイジェスト版ではメーリングリストに新たに投稿された記事が集められ、 100KB を超えた時点で一つのメールとしてまとめて配送されます。 ダイジェスト版が利用できる メーリングリストは以下のとおりです。

メーリングリスト
freebsd-afs-digest
freebsd-alpha-digest
freebsd-chat-digest
freebsd-current-digest
freebsd-cvs-all-digest
freebsd-database-digest
freebsd-hackers-digest
freebsd-ia64-digest
freebsd-isdn-digest
freebsd-java-digest
freebsd-questions-digest
freebsd-security-digest
freebsd-sparc-digest
freebsd-stable-digest
freebsd-test-digest

CVS メーリングリスト: 以下のメーリングリストはソースツリーの さまざまな場所の変更のログメッセージを見ることに 興味のある人向けです。 これらは読み専用のリストで、 これらにメールを送る事は出来ません。

メーリングリスト | ソースの範囲 | (ソースの) 範囲の説明
--- | --- | ---
cvs-all | /usr/src | ツリーのすべての変更 (スーパーセット)

### C.1.2. 参加方法

どのメーリングリストも `FreeBSD.ORG` にあるので、 メーリングリストにメールを送るには、ただ <`listname`@FreeBSD.org> にメールを送るだけです。すると、 メーリングリストに登録されている世界中のメンバに 再配布されます。

メーリングリストに参加するには、

    subscribe <listname> [<optional address>]

という内容をメッセージの本文に含むメールを `<majordomo@FreeBSD.org>` に送ります。たとえば、`freebsd-announce` に参加したい場合は次のようにします。

    % mail majordomo@FreeBSD.org
    subscribe freebsd-announce
    ^D

もし、あなたが、自分自身を違う名前 (メールアドレス) で登録したい場合、あるいは、ローカルなメーリングリスト (もしあなたのサイトに、興味を持った仲間がいるなら、 これはより有効ですし、私たちにとっても非常に嬉しいことです。) を登録する申し込みをおこないたいのであれば、次のようにします:

    % mail majordomo@FreeBSD.org
    subscribe freebsd-announce local-announce@somesite.com
    ^D

最後に、majordomo に対して 他のタイプのコントロールメッセージを送ることで メーリングリストから脱退したり、 メーリングリストの他のメンバのリストを得たり、 再びメーリングリストのリストを見たりすることも可能です。 利用できるコマンドの完全なリストを入手するには、 次のようにします:

    % mail majordomo@FreeBSD.org
    help
    ^D

再度言いますが、 私たちは技術的なメーリングリストでは技術的な議論を保つよう 要求します。もし、重要なアナウンスにのみ興味があるなら、 freebsd-announce への参加をお勧めします。 これには、あまりたくさんのメールは流れません。

### C.1.3. メーリングリストの憲章

すべて FreeBSD メーリングリストは誰でもそれらを利用することに 固守しなければいけないという一定の簡単なルールがあります。 これらのルールに従わないと、結果として FreeBSD の Postmaster `<postmaster@FreeBSD.org>`から 2 回までは警 告を受けます。3 回違反すると、 投稿者はすべての FreeBSD のメーリングリストから削除され、 そのメーリングリストへのさらなる投稿から締め出されるでしょう。 これらのルールや対策が必要なのは残念です。 しかし、今日のインターネッ トはずいぶんいやらしい環境になっており、一般の人々は、 その (対策の) メカニズムがいかにもろいかという事すら 認識する事が出来ていないと思われます。

道標

- いかなる投稿記事もそのメーリングリストの 基本的な憲章を守るべきです。たとえば、 そのメーリングリストが技術的な問題に関するものであれば、 技術的な議論を含む投稿でなければなりません。現在継続中の 不適切な憲章やフレイムは、 所属しているすべての人に対してメーリングリスト の価値を下げてしまうだけですし、 許される行為ではないでしょう。 とくに話題のない自由形式の議論に対しては freebsd-chat `<freebsd-chat@FreeBSD.org>`メーリ ングリストが自由に認可されているので、 かわりに使うべきでしょう。

- 一度に 3 つ以上のメーリングリストには決して投稿すべきでは ありません。2 つのメーリングリストには双方に明確な必要性がある場合にのみ 投稿すべきです。どのリストに対しても、 (メーリングリストの)参加者は (複数のメーリングリ ストに)重複して参加しており、関連する部分が少ない (たとえば、 "-stable と -scsi")メーリングリストを除いては、 一度に複数のメーリングリストに投稿する理由は全くありません。もし、 `Cc` に複数の メーリングリストがそのような形で現れて、 あなたに届いたのであれば、再びそのメールに返事を出す前に、 `Cc` の部分もまた編集するべきです。 元記事を書いたのが誰であっても、 あなた自身のクロスポストに まだ責任があります。

- ユーザであれ開発者であれ、(議論の中で) 個人を攻撃したり冒涜したりすることは許されません。 個人的なメールを引用したり再投稿したり する許可をもらえなかったり、もらえそうにない時に、 それをおこなう ようなネチケット (訳注: ネットワークにおけるエチケット) に対する ひどい違反は好まれませんが、 してはならないと特別に定められている わけではありません。 しかしながら、そのような内容がメー リングリストの憲章に沿う場合はほとんどありません。 このため、メー リングリストの憲章に違反しているということだけで警告 (または禁止) に値するものと考えていいでしょう。

- FreeBSD 以外の関連する製品やサービスの広告は、 絶対に禁止し、spam による違反者が宣伝していることが明確であったら、 すぐに禁止します。

個々のメーリングリストの憲章:

FREEBSD-AFS

  Andrew ファイルシステム

  このリストは、CMU/Transarc の AFS の移植や使用に関する議論のためです．

FREEBSD-ANNOUNCE

  `重要なイベント/マイルストン`

  これは、単にたまに発表される重要な freebsd のイベントに関心がある人のた めのメーリングリストです。 これは、スナップショットやその他のリリースに ついてのアナウンスを含みます。 そのアナウンスは新しい FreeBSD の機能のア ナウンスを含んでいます。 ボランティア等の呼びかけがあるかもしれません。 これは流通量の少ないメーリングリストで、 完全なモデレートメーリングリストです。

FREEBSD-ARCH

  アーキテクチャと設計の議論

  これは、FreeBSD のアーキテクチャに関する議論を行なうためのメーリングリストです。 当然、その内容は原則的に技術的なものに限定されます。 このメーリングリストにふさわしい話題は以下のようなものです。

  - 複数のカスタマイズされたビルドを同時に行うには、 ビルドシステムをどういじり直せばよいか

  - VFS で Heidemann レイヤを動作させるには、 何を修正する必要があるか

  - 同一のデバイスドライバを多数のバス、 アーキテクチャに共通で使えるようにするには、 デバイスドライバインタフェースをどう改変すれば良いか

  - ネットワークドライバの書き方

FREEBSD-AUDIT

  ソースコード監査プロジェクト

  これは、FreeBSD ソースコード監査プロジェクトのメーリングリストです。 本来はセキュリティ関連の変更を行なうためのものだったのですが、 現在の憲章では、ソースコードに対する監査全般のレビューを行なうためのもの、 というように拡張されました。

  このメーリングリストは修正パッチを含んだ、 非常に大きなメッセージが流れます。おそらく、 普通の FreeBSD ユーザが興味を持つものではないでしょう。 セキュリティに関する議論のうち、 ソースコードの変更とは関係のないものについては freebsd-security で扱われています。 逆に FreeBSD 開発者は修正パッチをこのメーリングリストに送り、 レビューを受けてください。 これは、その修正パッチにあるバグがシステムの完全性に悪い影響を与える 可能性があるような箇所を扱う場合は特に必要になります。

FREEBSD-BINUP

  FreeBSD バイナリアップデートプロジェクト

  このメーリングリストは、バイナリアップデートシステム (または binup) に関する議論の場を提供します。設計上の問 題、実装の詳細、パッチ、バグ報告、状況報告、機能の要望、 コミットログ、その他 binup に関連するもろもろが格好の話 題となります。

FREEBSD-BUGS

  バグレポート

  これは、FreeBSD のバグレポートのためのメーリングリストです。可能である 場合はいつでも、バグは send-pr(1) を使うか、WEB interfaceを用い て送られる必要があります。

FREEBSD-CHAT

  FreeBSDのコミュニティに関する 技術的ではない話題

  このメーリングリストは技術的ではなく、 社会的な情報について、 他のメーリングリストでは取り扱わない話題を含みます。 これは、Jordanがシロイタチに似ているかどうか、 大文字で打つかどうか、誰がたくさんコーヒーを飲むか、 どこのビールが一番うまいか、 誰が地下室でビールを作っているか、 などについての議論を含みます。時々重要なイベント (将来開催されるパーティーや、結婚式、誕生日、 新しい仕事など) のお知らせが、 技術的なメーリングリストから でてきます。しかし、 フォローは直接 -chatメーリングリストにするべきです。

FREEBSD-CORE

  FreeBSDコアチーム

  これは、コアメンバが使う内部メーリングリストです。 FreeBSDに関連する深刻なやっかい事の裁定や ハイレベルな綿密な調査を要求するときに、このメー リングリストにメッセージを送る事が出来ます。

FREEBSD-CURRENT

  FreeBSD-currentの使用に関する議論

  これは freebsd-current のユーザのためのメーリングリストです。 メーリングリストでの話題は、-current で登場した新しい機能について、 その新機能によってユーザに影響することについての注意、 および -current のままでいるために必要な手順についての説明を含みます。 “current” を走らせている人はこのメーリングリストに 登録しなくてはなりません。 これは技術的なメーリングリストなので、 完全に技術的な内容を要求します。

FREEBSD-CURRENT-DIGEST

  FreeBSD-currentの使用に関する議論

  freebsd-current メーリングリストのダイジェスト版です。 このダイジェストは freebsd-current に送られたすべてのメッセージをまとめたものを、 1 つのメールにして送り出します。 このメーリングリストは読み専用です。 メールを送るような事はしないでください。

FREEBSD-DOC

  ドキュメンテーションプロジェクト

  このメーリングリストは FreeBSD 向けの文書の作成に関連する事柄やプロジェクトについて議論を行なうためのものです。 このメーリングリストに参加しているメンバは、 “FreeBSD ドキュメンテーションプロジェクト” に参加していることになります。 このメーリングリストは公開されているので、 参加や投稿は自由に行なうことができます。

FREEBSD-FS

  ファイルシステム

  FreeBSD のファイルシステムに関する議論 これは技術的なメーリングリストなので、 完全に技術的な内容を要求します。

FREEBSD-IPFW

  IP Firewall

  これは FreeBSD の IP firewall コードの再設計に関する 技術的な議論のためのフォーラムです。 これは技術的なメーリングリストなので、 完全に技術的な内容を要求します。

FREEBSD-IA64

  FreeBSD の IA64 への移植

  これは FreeBSD の Intel の IA-64 プラットフォームへの 移植に参加している人達のための技術的なメーリングリストで、 問題を提起し解決策を議論するためのものです。 このような技術的な議論に興味を持つ個人は歓迎します。

FREEBSD-ISDN

  ISDNコミュニケーション

  このメーリングリストは、 FreeBSDに対するISDNサポートの開発の議論を おこなう人のためのものです．

FREEBSD-JAVA

  Java の開発

  このメーリングリストは、FreeBSD 向けの重要な Java アプリケーションの開発や、JDK の移植やメンテナンスの 議論をする人のためのものです．

FREEBSD-HACKERS

  技術的な議論

  これは FreeBSD に関する技術的な議論のための フォーラムです。 これは最もテクニカルなメーリングリストです。 このメーリングリストは、FreeBSD 上でアクティブに活動をしている人のためのもので、 問題を持ち出したり、代わりの解決法を議論します。 技術的な議論をフォローするのに興味がある人も歓迎します。 これは技術的なメーリングリストなので、 完全に技術的な内容を要求します。

FREEBSD-HACKERS-DIGEST

  技術的な議論

  freebsd-hackersメーリングリストのダイジェスト版です。 このダイジェストは freebsd-hackers に送られたすべてのメッセージをまとめたものを、1 つのメー ルにして送り出します。 このメーリングリストは読み専用です。 メールを送るような事はしないでください。

FREEBSD-HARDWARE

  FreeBSDのハードウェアの一般的な議論

  FreeBSDが走っているハードウェアのタイプや、 何を買ったり避けたりするかに関する様々な問題や、 提案に関する議論。

FREEBSD-HUBS

  ミラーサイト

  FreeBSD ミラーサイトを運用している人達向けの、 アナウンスと議論を行なうメーリングリストです。

FREEBSD-INSTALL

  インストールに関する議論

  このメーリングリストは将来のリリースの インストールに関する開発の議論のためのものです。

FREEBSD-ISP

  インターネットサービスプロバイダのについての話題

  このメーリングリストは、 FreeBSDを用いたインターネット サービスプロバイダ (ISP) に関する話題の議論のためのものです。 これは技術的なメーリングリストなので、 完全に技術的な内容を要求します。

FREEBSD-NEWBIES

  初心者の活動の議論

  どのメーリングリストでも扱われていなかった 初心者の活動すべてをカバーします。独学や問題解決、 リソースの見つけ方や使い方、質問のしかた、 メーリングリストの使い方、 どのメーリングリストを読めばいいのか、普通の世間話、 間違いの犯し方、自慢話、アイディアの共有、物語、道徳的な (技術的でない) お手伝い、FreeBSD コミュニティでの貢献のしかたなどの話題をが含まれます。 これらの問題を取り扱い、freebsd-questions へ質問できるようサポートします。また、 初心者の頃にはまった同じ事柄に悩んでいる 他の初心者との出会いの場としてfreebsd-newbies を活用してください。

FREEBSD-PLATFORMS

  Intel 以外のプラットフォームへの移植

  クロスプラットフォームの FreeBSD の問題。Intel 以外のプラットフォームへの FreeBSD の移植についての一般的な議論や提案。 これは技術的なメーリングリストなので、 完全に技術的な内容を要求します。

FREEBSD-POLICY

  コアチームのポリシーに関する議論

  このメーリングリストは、FreeBSD コアチームのポリシーに 関する議論のためのものです。 流量は少なく、投稿することはできません。

FREEBSD-PORTS

  “ports” の議論

  FreeBSD “Ports Collection” (`/usr/ports`) に関連する話題や、 新たな ports の提案、Ports Collection の基盤の変更および一般的な構成の整備活動に関する議論。 これは技術的なメーリングリストなので、 厳密に技術的な内容のみが扱われます。

FREEBSD-QUESTIONS

  ユーザからの質問

  FreeBSD に関する質問のためのメーリングリストです。 その質問がかなり技術的だと思わないのであれば、 “どのようにして” という質問を技術的なメーリングリストに 送るべきではありません。

FREEBSD-QUESTIONS-DIGEST

  ユーザからの質問

  freebsd-questions メーリングリストのダイジェスト版です。このダイジェストは freebsd-questions に送られたすべてのメッセージをまとめたものを、 1 つのメールにして送り出します。

FREEBSD-SCSI

  SCSI サブシステム

  これは FreeBSD のための SCSI サブシステムについて作業している人向けです。 これは技術的なメーリングリストなので、 完全に技術的な内容を要求します。

FREEBSD-SECURITY

  セキュリティの関連の話題

  FreeBSDコンピュータのセキュリティの話題 (DES, Kerberos, よく知られているセキュリティホールや、 それらのふさぎ方など) これは技術的なメーリングリストなので、 完全に技術的な内容を要求します。

FREEBSD-SECURITY-NOTIFICATIONS

  セキュリティ関連の通知

  FreeBSD のセキュリティ問題や、 修正に関する通知を行ないます。 このメーリングリストは議論を行なうための メーリングリストではありません。 議論は FreeBSD-security で行ないます。

FREEBSD-SMALL

  組み込み用に FreeBSD を使う

  特殊な FreeBSD 小型システムおよび FreeBSD の組み込み技術に関する議論。 これは技術的なメーリングリストなので、 完全に技術的な内容を要求します。

FREEBSD-STABLE

  FreeBSD-stable の使用に関する議論

  これは freebsd-stable のユーザ用のメーリングリスト です。メーリングリストでの話題は、-stable で登場した新しい機能について、 その新機能によってユーザに影響することについての注意、 および -stable のままでいるために必要な手順についての説明を含みます。 “stable” を走らせている人はこの メーリングリストに登録すべきです。 これは技術的なメーリングリストなので、完全に技術的な 内容を要求します。

FREEBSD-USER-GROUPS

  ユーザグループの調整のメーリングリスト

  これは、ローカルなユーザグループがお互いに、または、 コアチームが指定した個人と問題を議論する、 それぞれのローカルエリアのユーザグループからの 調整人向けの メーリングリストです。 このメーリングリストはユーザグループ間の ミーティングの概要やプロジェクトの調整に 制限されるべきです。

## C.2. Usenet ニュースグループ

2 つの FreeBSD 用のニュースグループがあります。ここでは FreeBSD の議論をするたくさんの様々な人がおり、 他にも FreeBSD 関連するユーザがいます。 これらのいくつかのニュースグループは Warren Toomey `<wkt@cs.adfa.edu.au>` によって Keyword searchable archives で、 検索できるようになっています。

### C.2.1. BSD 用のニュースグループ

- comp.unix.bsd.freebsd.announce

- comp.unix.bsd.freebsd.misc

### C.2.2. 関連する他の Unix のニュースグループ

- comp.unix

- comp.unix.questions

- comp.unix.admin

- comp.unix.programmer

- comp.unix.shell

- comp.unix.user-friendly

- comp.security.unix

- comp.sources.unix

- comp.unix.advocacy

- comp.unix.misc

- comp.bugs.4bsd

- comp.bugs.4bsd.ucb-fixes

- comp.unix.bsd

### C.2.3. X Window システム

- comp.windows.x.i386unix

- comp.windows.x

- comp.windows.x.apps

- comp.windows.x.announce

- comp.windows.x.intrinsics

- comp.windows.x.motif

- comp.windows.x.pex

- comp.emulators.ms-windows.wine

## C.3. World Wide Web サイト

中央サーバ, Armenia, アイスランド, アメリカ合衆国, アルゼンチン, イギリス, イタリア, インドネシア共和国, ウクライナ, エストニア, オーストラリア, オーストリア, オランダ, カナダ, キルギス共和国, ギリシア, クウェート, コスタリカ共和国, サンマリノ, シンガポール, スイス, スウェーデン, スペイン, スロバキア共和国, スロベニア, タイ王国, チェコ共和国, デンマーク, トルコ, ドイツ, ニュージーランド, ノルウェー, ハンガリー, フィリピン, フィンランド, フランス, ブラジル, ブルガリア, ベルギー, ポルトガル, ラトビア, リトアニア, ルーマニア, ロシア, 韓国, 香港, 台湾, 中国, 南アフリカ, 日本.

(2010/06/17 12:49:57 UTC 現在)

- 中央サーバ

  - http://www.FreeBSD.org/

- Armenia

  - http://www1.am.FreeBSD.org/ (IPv6)

- アイスランド

  - http://www.is.FreeBSD.org/

- アメリカ合衆国

  - http://www2.us.FreeBSD.org/

  - http://www4.us.FreeBSD.org/ (IPv6)

  - http://www5.us.FreeBSD.org/ (IPv6)

- アルゼンチン

  - http://www.ar.FreeBSD.org/

- イギリス

  - http://www1.uk.FreeBSD.org/

  - http://www3.uk.FreeBSD.org/

- イタリア

  - http://www.it.FreeBSD.org/

  - http://www.gufi.org/mirrors/www.freebsd.org/data/

- インドネシア共和国

  - http://www.id.FreeBSD.org/

- ウクライナ

  - http://www.ua.FreeBSD.org/

  - http://www2.ua.FreeBSD.org/

  - http://www5.ua.FreeBSD.org/

  - http://www4.ua.FreeBSD.org/

- エストニア

  - http://www.ee.FreeBSD.org/

- オーストラリア

  - http://www.au.FreeBSD.org/

  - http://www2.au.FreeBSD.org/

- オーストリア

  - http://www.at.FreeBSD.org/ (IPv6)

  - http://www2.at.FreeBSD.org/ (IPv6)

- オランダ

  - http://www.nl.FreeBSD.org/

  - http://www2.nl.FreeBSD.org/

- カナダ

  - http://www.ca.FreeBSD.org/

  - http://www2.ca.FreeBSD.org/

- キルギス共和国

  - http://www.kg.FreeBSD.org/

- ギリシア

  - http://www.gr.FreeBSD.org/

- クウェート

  - http://www.kw.FreeBSD.org/

- コスタリカ共和国

  - http://www1.cr.FreeBSD.org/

- サンマリノ

  - http://www.sm.FreeBSD.org/

- シンガポール

  - http://www2.sg.FreeBSD.org/

- スイス

  - http://www.ch.FreeBSD.org/

  - http://www2.ch.FreeBSD.org/

- スウェーデン

  - http://www.se.FreeBSD.org/

  - http://www2.se.FreeBSD.org/

- スペイン

  - http://www.es.FreeBSD.org/

  - http://www2.es.FreeBSD.org/

  - http://www3.es.FreeBSD.org/

- スロバキア共和国

  - http://www.sk.FreeBSD.org/

- スロベニア

  - http://www.si.FreeBSD.org/

  - http://www2.si.FreeBSD.org/

- タイ王国

  - http://www.th.FreeBSD.org/

- チェコ共和国

  - http://www.cz.FreeBSD.org/ (IPv6)

- デンマーク

  - http://www.dk.FreeBSD.org/ (IPv6)

  - http://www3.dk.FreeBSD.org/

- トルコ

  - http://www.tr.FreeBSD.org/

  - http://www2.tr.FreeBSD.org/

  - http://www3.tr.FreeBSD.org/ (IPv6)

- ドイツ

  - http://www.de.FreeBSD.org/

- ニュージーランド

  - http://www.nz.FreeBSD.org/

- ノルウェー

  - http://www.no.FreeBSD.org/

- ハンガリー

  - http://www.hu.FreeBSD.org/

  - http://www2.hu.FreeBSD.org/

- フィリピン

  - http://www.FreeBSD.org.ph/

- フィンランド

  - http://www.fi.FreeBSD.org/

  - http://www2.fi.FreeBSD.org/

- フランス

  - http://www.fr.FreeBSD.org/

  - http://www1.fr.FreeBSD.org/

- ブラジル

  - http://www.br.FreeBSD.org/

  - http://www2.br.FreeBSD.org/www.freebsd.org/

  - http://www3.br.FreeBSD.org/

- ブルガリア

  - http://www.bg.FreeBSD.org/

  - http://www2.bg.FreeBSD.org/

- ベルギー

  - http://freebsd.unixtech.be/

- ポルトガル

  - http://www.pt.FreeBSD.org/

  - http://www1.pt.FreeBSD.org/

  - http://www4.pt.FreeBSD.org/

  - http://www5.pt.FreeBSD.org/

- ラトビア

  - http://www.lv.FreeBSD.org/

  - http://www2.lv.FreeBSD.org/

- リトアニア

  - http://www.lt.FreeBSD.org/

- ルーマニア

  - http://www.ro.FreeBSD.org/

  - http://www1.ro.FreeBSD.org/

  - http://www2.ro.FreeBSD.org/

  - http://www3.ro.FreeBSD.org/

- ロシア

  - http://www.ru.FreeBSD.org/

  - http://www2.ru.FreeBSD.org/

  - http://www3.ru.FreeBSD.org/

  - http://www4.ru.FreeBSD.org/

  - http://www5.ru.FreeBSD.org/

- 韓国

  - http://www.kr.FreeBSD.org/

  - http://www2.kr.FreeBSD.org/

- 香港

  - http://www.hk.FreeBSD.org/

- 台湾

  - http://www.tw.FreeBSD.org/ (IPv6)

  - http://www2.tw.FreeBSD.org/

  - http://www3.tw.FreeBSD.org/

  - http://www4.tw.FreeBSD.org/

  - http://www5.tw.FreeBSD.org/ (IPv6)

  - http://www6.tw.FreeBSD.org/

  - http://www7.tw.FreeBSD.org/

- 中国

  - http://www.cn.FreeBSD.org/

- 南アフリカ

  - http://www.za.FreeBSD.org/

  - http://www2.za.FreeBSD.org/

- 日本

  - http://www.jp.FreeBSD.org/www.FreeBSD.org/ (IPv6)

## C.4. Email アドレス

以下のユーザーグループは、メンバーに FreeBSD に関係する メールアドレスを提供しています。管理者はアドレスがどのような形であれ 悪用された場合に、 アドレスを無効にする権利を留保しています。

ドメイン | 内容 | ユーザーグループ | 管理者
--- | --- | --- | ---
ukug.uk.FreeBSD.org | forward のみ | `<freebsd-users@uk.FreeBSD.org>` | Lee Johnston `<lee@uk.FreeBSD.org>`

## C.5. シェルアカウント

以下のユーザーグループは、FreeBSD Project を活発にサポートしてくれる 人たちにシェルアカウントを提供しています。 管理者はアカウントがどのような形であれ悪用された場合に、 アカウントを取り消す権利を留保しています。

ホスト | アクセス方法 | 提供内容 | 管理者
--- | --- | --- | ---
storm.uk.FreeBSD.org | SSH のみ | Read-only cvs, personal web space, email | Brian Somers `<brian@FreeBSD.org>`
dogma.freebsd-uk.eu.org | Telnet/FTP/SSH | Email, Web space, Anonymous FTP | Lee Johnston `<lee@uk.FreeBSD.org>`

# Appendix D. PGP 公開鍵

これらは、署名を検証したり、 開発者やオフィサに暗号メールを送る必要がある場合に、 自由に使用できる PGP 公開鍵です。また、 http://www.FreeBSD.org/doc/pgpkeyring.txt から `FreeBSD.org` ユーザの完全なキーリングをダウンロードすることも可能です。

## D.1. オフィサ

### D.1.1. セキュリティオフィサチーム `<security-officer@FreeBSD.org>`

    pub  1024D/CA6CDFB2 2002-08-27 FreeBSD Security Officer <security-officer@FreeBSD.org>
         Key fingerprint = C374 0FC5 69A6 FBB1 4AED  B131 15D6 8804 CA6C DFB2
    sub  2048g/A3071809 2002-08-27

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    [encoded data, 7670 characters]
    KRrlaWusbYfqZn4BQsSpYw90evo=
    =BvhO
    -----END PGP PUBLIC KEY BLOCK-----

### D.1.2. コアチーム書記 `<core-secretary@FreeBSD.org>`

    pub  1024R/FF8AE305 2002-01-08 core-secretary@FreeBSD.org
         Key fingerprint = CE EF 8A 48 70 00 B5 A9  55 69 DE 87 E3 9A E1 CD

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.0.6 (FreeBSD)
    Comment: For info see http://www.gnupg.org

    mQCNAzw7fN4AAAEEALL1ENfbFYcAEmS6Hrb7CV7sWrbG+HlIwYvUUuqvr8+D3axd
    XuRJGFaWk8zNrTrwWROnlMMlctG3iXNsKzQNxAE6N64rbrUbKI5PzihfEsJW5/io
    XGXrRGdXvwob/Qdnd6mIlm3IJduChV7Nf3K2WbimUNkFeXrrh/ymwUj/iuMFAAUR
    tBpjb3JlLXNlY3JldGFyeUBGcmVlQlNELm9yZ4kAlQMFEDw7fN78psFI/4rjBQEB
    U4ID/1N6haUd+k+tzwNpX6pKnlCuTCJvJ619Lp83T8pRDGZom/uSLrfMrzvmKPeE
    abXGnreM41JRLAbGOclsONVBCLvwc/v+VVXTm24J1rdS1qY/SD+LE87pxPL6Ncyt
    Ug2sxPSo8fDVKu+MdcGK5zwP5ekNHDl+DB1mMsYDkZHTp9FMiQCVAwUQPDt+RafG
    T4fq3uQJAQFKvAQAl6+XaXQ1GzfqJoGqaTVW2O1OaodyBJjLxgRsVv7ps5Z4M4nl
    uYoe5ih+Lk3BVD9Y18QKUrnAPlbXDr1Ld0arq8uFkFsVzNDb2asg6tgcQe7mQ9lA
    QZPgVOU+siTmEuolSvxwsjxn/szBYBPv5EnU6lSmGf/RDJnbFXC9Z/LgPFU=
    =tMn4
    -----END PGP PUBLIC KEY BLOCK-----

### D.1.3. Ports Management Team Secretary `<portmgr-secretary@FreeBSD.org>`

    pub   1024D/7414629C 2005-11-30
          Key fingerprint = D50C BA61 8DC6 C42E 4C05  BF9A 79F6 E071 7414 629C
    uid                  FreeBSD portmgr secretary <portmgr-secretary@FreeBSD.org>
    sub   2048g/80B696E6 2005-11-30

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEONy/ARBAC4Ke7ijFSAiNZ8eKGENunAPSCm5Q75nmJrc9QW3DKQydseMYn5
    kRPzybZ3IMTzIMkB4kydWoOFb5xlyQ2NLsf0nrn0Kc4DbnpmwFi+2Owv48XIoJ80
    4tTHkog+pC+3kMOmAbikOgHfT5DZCu0Vz4k343yg06uFB5RZkFDV3qdr6wCgp8ye
    cBFzt6Qnf7baiKC87mSy46ED/2Kw/sUT40JT57u5SL5rgrAt15Q/PdCbFlBX9N8f
    y0CA7KUL82ISxFwmuFESIi8zD4IOmx2ow4EBczVCVmbAw04GNKyVL4X3KdcZdLxr
    d5BEdu3WcEs9FfbHiJgpPonNQ7UHeaG/Oos0N/LZqGM5kjaopSjNX9QTZXnYtIeX
    v5WRA/9un7HooV6yVf/o6lhjpLg0Dgu/nGPwTVt6mz0dS2sg7FwuWwefnYMo1Hte
    YRJHhP8wR8MeRai5uwUHkn9OINTu2a1WSHxfjL0T8JGI2XWppqwg21llvBlJ9HDZ
    vlnpvG8vsD5+2HLvJe/tHQOXEaKqnlWGRt+6eeKLc2pTOeRrhbQ5RnJlZUJTRCBw
    b3J0bWdyIHNlY3JldGFyeSA8cG9ydG1nci1zZWNyZXRhcnlARnJlZUJTRC5vcmc+
    iGAEExECACAFAkONy/ACGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAKCRB59uBx
    dBRinOoSAJ9dmofaKia2PRYmFrJ6VRV1qMEDiACbB/A1Qwv2jl5ra+Q/G28nrR4N
    IJG5Ag0EQ43MFRAIALjm7U1vf218XrDDrO6ztZdMSoQfLnbqDB/RyNr6CnnFrgIa
    T4/hBABT7S9Hmb5rPiN3UOTDsgHUq7tCeGnf+9K8KA45KclMcayVhttyGlwAtO0k
    ZebxZEAlWAhl4ixfejAwKdrjGe66b2upVFEmR6W7GhPitJDyWKK4/57fe3tSEs3y
    C2iJEbFpzYnVGK4DPUEsbSQ0Gv+COS1ql7QQW7H09dWt443r125I1Viv3nrIXlpm
    R5KFS0MvQ4bZyyAo4k2t0BxmAXNyxLh+1HZe5bh3dkk1XbJlooNwfr+WhqSlLsTG
    Qsj1/9HmjVMWyzH6tA5tZ42Fu1ZGTA6Dnc7BBLMAAwUH/jt/r2iJDiKFpjay4DII
    CXeKrKUP+mzYQJGJXX+Mls+TjDLFpm0Qng/wUCjZH8+GQStKSiaY7Lqnt1V0aKpw
    74CznHzgu4+ve9QG1+O5ald61Yy7dPGH+9Adr3jYJzdMhojjzPSKxIuDkHYOvjka
    /VGPtYDBuCaVPGDHGvWT4YZiVvpDg/zBucCAWF55WKphZXh7v7ZPvdfCj6DeZ+wQ
    BF10d9HXlWulitc+27gQiBhA2JFXG2p6Qg6Zj1E4AUdK5Hpjx+HgqGATq3GqzyQd
    UxvhR6VoV1OjmQvz1paLT3V0ch3mvRNiMd/oNJsHCSL9yhmtonSaprKG51OboDbV
    OFqISQQYEQIACQUCQ43MFQIbDAAKCRB59uBxdBRinHoLAKCAgS3CpgdsRmMHDhFa
    4qis7hd7WACeO40ZPvVi2vJpDK/1tM7SOVDPY44=
    =yfPY
    -----END PGP PUBLIC KEY BLOCK-----

## D.2. コアチームメンバ

### D.2.1. Wilko Bulte `<wilko@FreeBSD.org>`

    pub   1024D/186B8DBD 2006-07-29
          Key fingerprint = 07C2 6CB3 9C18 D290 6C5F  8879 CF83 EC86 186B 8DBD
    uid                  Wilko Bulte (wilko@FreeBSD.org) <wilko@FreeBSD.org>
    sub   2048g/1C4683F1 2006-07-29

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.4.2 (FreeBSD)

    mQGiBETLtf8RBAD12xaszO99wnMaNtuoyE3dIfsv4ijnLmKeFwXXGGe40tf5lDu1
    0X1DrI4wX6emUgSTsuxgZh4OJOuCz/YOLwO1AqL0v8Emjxa1VicZmoQ2zjMPY1GD
    6rWOIvgRC+6M3LstE7h0N49uouNANFHAaAfCNxyWw2EvZxnqc85TMd1BcwCgnEOe
    lHdj9PehNMRSp2TkNpcS5SUEAOEw+rs/vMXeqXHP910nd4U5DmBxIaoA7ARIqAS5
    F+SvNtDxlNeeLSMY7l64kCgB/RO4NGYxMTPklFMAm4cr0ri8s6+v/Y4vdoWsDluW
    MbzKsxBHVmPxr9WEU9iZxexbSlDdeJ2l19xgty4Jp3xPJ0iSo8Tip8w00kSN9cN3
    ULs1BADKhXiy9B2tfDUAQCstSr/04ZB015u1CZEAMxOfIZ97Y1RjSTdAAshqB/sX
    coKlQ5Sanx5shV4xARen/8d1EftgIfX1s0hL2QhA9xCHdHob/9Ok8SbpMq+H3WDj
    VEqpf9dJieU/IFE4wLc1y5M61jw5kX5bqbXPWtIuCJqC0DB9qLQzV2lsa28gQnVs
    dGUgKHdpbGtvQEZyZWVCU0Qub3JnKSA8d2lsa29ARnJlZUJTRC5vcmc+iGEEExEC
    ACEFAkTLtf8CGwMHCwkIBwMCAQQVAggDBBYCAwECHgECF4AACgkQz4Pshhhrjb07
    2gCfb5LcR2MiNHfyP2FEgQ2NphUkXDcAnREV1tDLlJy7KxOlub01Px8NhNkfiJwE
    EAECAAYFAkTLuj8ACgkQ/KbBSP+K4wXTDwQAjdsoW8icjSXo/hl8OBEeQfQCPtuu
    0MU4hJM4TRf6QCHXxtJPpMgGGqp6HbMEwmxO58yhKOLCZk5Xyo8rsVJG23pQvGqW
    UmphE6+9e8RuwneZiJ/yvbn7cOaS9EuUIHnIZnvNYTqLboIG1XaYwq8YqwNhsHVb
    8H1Jvx9fVSo9RGq5Ag0ERMu2DRAIANuJ6ZjYQnDhZFSVColje5oXGEmn3BBIeyLo
    TjzbmLo41iPlPPedLnnG7bGcWlwb8Y6CvsniC2+9Tf79O8rpGglQZQFAKS4qSToA
    CMWBlKPF2yaCLOlKezzn5Xo3D61WYs3z74ak+CKznqdFDkXYU7c428XprqqLnuzk
    jUQyfrNOCg9jjODB6eXVS0nkYlYhsfBe9Mh3xmaf8QGocH01dCaXNJASKbSgUtWJ
    aD0fXWexf6p04DX/84359mtOquZe4NCEy/o2RpKoHxaN8cggO3NUfsLkDBODQ1vr
    RS/H2sixVLbfNPx4XzIYc525ISyGGk1WJ0hxUPDaJeMtlUVE2HMAAwUH/AuwxkpX
    QT49Q3+kZf7hHcvR5fzaRKUcK/lIdPAhJBTZZQjZxH5Qo1MfDftizkIg4O9FcN3w
    eR7AKVhjVGLPna10Tb7PuNByKehsCMJM089OTJNEwRKu5AzpgE+pvkBeKTWwoGUE
    7hkaunpFXGv8TglO25G1hxKgryB3CBu6n4jN4pnlUtwBBQ6jTC+YRd5zeCiDJYvY
    R89ibrdmvFsI6Cy7K0iSFBFaJREOakXPTdmcWSxC71MMuefPrUhMsys0SN/EPd3g
    n/LDvcBtismvo8FAUKTHPlJhvXM87V7sDfCmtzG79NzlwjJto4pJoHyJg57T3kJy
    cQ2qe/WZTvl9OFeISQQYEQIACQUCRMu2DQIbDAAKCRDPg+yGGGuNvdVZAJsErSAN
    uN92IOQQttYydXNGTCUC4gCeOaQSjL1nW1ZwEJt2HuwEJ8LI8Bk=
    =RrPJ
    -----END PGP PUBLIC KEY BLOCK-----

### D.2.2. Brooks Davis `<brooks@FreeBSD.org>`

    pub  1024D/F2381AD4 2001-02-10 Brooks Davis (The Aerospace Corporation) <brooks@aero.org>
         Key fingerprint = 655D 519C 26A7 82E7 2529  9BF0 5D8E 8BE9 F238 1AD4
    uid                            Brooks Davis <brooks@one-eyed-alien.net>
    uid                            Brooks Davis <brooks@FreeBSD.org>
    uid                            Brooks Davis <brooks@aero.org>
    sub  2048g/CFDACA7A 2003-01-25 [expires: 2008-01-24]
    sub  1024g/42921194 2001-02-10 [expires: 2009-02-08]

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    [encoded data, 12155 characters]
    tGTlxgFaGWLm6EYAnjyYaPrEbgXEaMGKuaOGdHh4fW5+
    =k1pm
    -----END PGP PUBLIC KEY BLOCK-----

### D.2.3. Giorgos Keramidas `<keramida@FreeBSD.org>`

    pub   1024D/318603B6 2001-09-21
          Key fingerprint = C1EB 0653 DB8B A557 3829  00F9 D60F 941A 3186 03B6
    uid                  Giorgos Keramidas <keramida@FreeBSD.org>
    uid                  Giorgos Keramidas <keramida@ceid.upatras.gr>
    uid                  Giorgos Keramidas <keramida@hellug.gr>
    uid                  Giorgos Keramidas <keramida@linux.gr>
    sub   1024g/50FDBAD1 2001-09-21

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    [encoded data, 9165 characters]
    rbEo1sd9QlYk6uWfL5hII9Gm
    =81S1
    -----END PGP PUBLIC KEY BLOCK-----

### D.2.4. George V. Neville-Neil `<gnn@FreeBSD.org>`

    pub   1024D/440A33D2 2002-09-17
          Key fingerprint = AF66 410F CC8D 1FC9 17DB  6225 61D8 76C1 440A 33D2
    uid                  George V. Neville-Neil <gnn@freebsd.org>
    uid                  George V. Neville-Neil <gnn@neville-neil.com>
    sub   2048g/95A74F6E 2002-09-17

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBD2Gwe4RBACw78PVfE2fA9U0mISJrV1ohjdkzVTly0WQ/YwMgyB/J/Z/M35G
    zIc8yKi8YR/6QYGqgEzeKAhrUIDyBfudhaJ527gyR3Xi+QHgWMQDvd41NlqM5DBn
    yIVKj10DmDYjcHm29M1OHAkXKZT6tHCqp1dKFD7EXtY1bOakvN7TIKld7wCg6AS/
    iPmIvGE7wpFlcFkYIjjL4ksD/iKpKneEwB7dEksyDQX8l18v58x0lH334WDgRO5a
    X3Wlc4He8b3kWzBWK0z81XE8Z7ip0Io13LHhamLp1P1eDX4sWKQpJmdRtHziC9R6
    4GwW9P7aCUCCf91XxaYEU2j755u1Zby3gF1tbookwO1iXQERYuo3ZHezH1bkdRk2
    HNecA/9+HCfVESjRFPfOEVqljx+Lm5atTx5VX/D/6iprDUARn0YgW5xrwM8doeNI
    UxkBOUszEUPDpXPnMI5RWB+0siQhZl3yX+lUPtASrEj84rpOSXZtNPAkHit/iwva
    pW75gZjt9yN7IhVQVw8O2OMTRGNoWsshzKzznqxNP3p1JYYq/rQtR2VvcmdlIFYu
    IE5ldmlsbGUtTmVpbCA8Z25uQG5ldmlsbGUtbmVpbC5jb20+iFkEExECABkFAj2G
    we4ECwcDAgMVAgMDFgIBAh4BAheAAAoJEGHYdsFECjPS6hUAni/U8Zbrr+TFHLt3
    cLg0VWnWxCI/AKCNqxRmA/HlZLPRzhVCQODgfbOG4LQoR2VvcmdlIFYuIE5ldmls
    bGUtTmVpbCA8Z25uQGZyZWVic2Qub3JnPohgBBMRAgAgBQJDtkW7AhsjBgsJCAcD
    AgQVAggDBBYCAwECHgECF4AACgkQYdh2wUQKM9LtQACfTi75crWjtxxVJUmGSn2+
    CDnlCesAnRqM+XSv9/KnZ3O/GRtpkNwT9NCJuQINBD2GwgUQCACvJfoCKfRo3y1J
    kaisLLtSVsqCeF1mlwfBGyvD0Lu0VnDGuy9aHExafNEbUaW+OQe0YXtZeX70CUPF
    nizBcDEsHEj1pC9HoZCSoYXtqORBa3ZIUwz+jJbjHJErs7XM/EshhAollC14rXKt
    K7+UVCw5JkCmialF7LAyWgqeBilwtKUBpIaXquf0/qws+uOikcZb3UttamQFUW0Y
    l4KKHP24cvCOXSlx8Kl9l2rQzfedjQPXI98zkcR3SEjZ07cDs+mQOTax2OgVS3F2
    nDUEqLQmAiftHFWQ0h3RBpEYLGTNd3gXXxJPxZdR7YIBnxvJ7RZM5qGgZfTc0Jm4
    aM5s+As3AAMFB/0dVB40Fvk74U6mwHLMwEkzHiZoVVZPBUMsuqb3FlgZrMYmwa3q
    APNhPhWSO9pLQlPJ99nFFj1lRUU7OO/oihsdKLEfT2CT5tqa6fAWoiSQIKBBbkrm
    bQedeXPWtvJezS0FY17rOfK8242Lnq+djS8ihBxSKpCVbwWO1DPktu6hGzWQz+x2
    B91jbMfM9/n00xEkZ4Z2H0dSZNY2WKqK+MkqAiYf6uJBs7BZV391WWQ1fagCP/Tf
    HPM0gDnwFfqSJmxJzPm3upTmYgoSRqri7NH3Wec5pY15b67JFHMpMFbgauEsiDSi
    CCk4YxHfge4SMe6noPICAjN6PCkIMDldxi+ZiEYEGBECAAYFAj2GwgUACgkQYdh2
    wUQKM9KJgACgwzfFmUB4diy5sTzLVLE3TCqwnJYAn39ByQnv/FeLGSY/blYrVsQK
    aCpC
    =SotO
    -----END PGP PUBLIC KEY BLOCK-----

### D.2.5. 佐藤 広生 `<hrs@FreeBSD.org>`

    pub   1024D/2793CF2D 2001-06-12
          Key fingerprint = BDB3 443F A5DD B3D0 A530  FFD7 4F2C D3D8 2793 CF2D
    uid                  Hiroki Sato <hrs@allbsd.org>
    uid                  Hiroki Sato <hrs@eos.ocn.ne.jp>
    uid                  Hiroki Sato <hrs@ring.gr.jp>
    uid                  Hiroki Sato <hrs@FreeBSD.org>
    uid                  Hiroki Sato <hrs@jp.FreeBSD.org>
    uid                  Hiroki Sato <hrs@vlsi.ee.noda.tus.ac.jp>
    uid                  Hiroki Sato <hrs@jp.NetBSD.org>
    uid                  Hiroki Sato <hrs@NetBSD.org>
    sub   1024g/8CD251FF 2001-06-12

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    [encoded data, 42705 characters]
    OGg0F7Gi41lcFhA=
    =wurQ
    -----END PGP PUBLIC KEY BLOCK-----

### D.2.6. Murray Stokely `<murray@FreeBSD.org>`

    pub  1024D/0E451F7D 2001-02-12 Murray Stokely <murray@freebsd.org>
         Key fingerprint = E2CA 411D DD44 53FD BB4B  3CB5 B4D7 10A2 0E45 1F7D
    sub  1024g/965A770C 2001-02-12

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Comment: For info see http://www.gnupg.org

    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
    qN+IdvKuAKC6p9c3lJBbYHFlhxPDhBvgBaSOKw==
    =WyeV
    -----END PGP PUBLIC KEY BLOCK-----

### D.2.7. Kris Kennaway `<kris@FreeBSD.org>`

    pub  1024D/68E840A5 2000-01-14 Kris Kennaway <kris@citusc.usc.edu>
         Key fingerprint = E65D 0E7D 7E16 B212 1BD6  39EE 5ABC B405 68E8 40A5
    uid                            Kris Kennaway <kris@FreeBSD.org>
    uid                            Kris Kennaway <kris@obsecurity.org>
    sub  2048g/03A41C45 2000-01-14 [expires: 2006-01-14]

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.0.6 (FreeBSD)
    Comment: For info see http://www.gnupg.org

    [encoded data, 4290 characters]
    iPF6/kmr9BBQtr2aUQCfb2ycB69cTi+09jXD31k8PffbIis=
    =nTL1
    -----END PGP PUBLIC KEY BLOCK-----

## D.3. 開発者

### D.3.1. Ariff Abdullah `<ariff@FreeBSD.org>`

    pub   1024D/C5304CDA 2005-10-01
          Key fingerprint = 5C7C 6BF4 8293 DE76 27D9  FD57 96BF 9D78 C530 4CDA
    uid                  Ariff Abdullah <skywizard@MyBSD.org.my>
    uid                  Ariff Abdullah <ariff@MyBSD.org.my>
    uid                  Ariff Abdullah <ariff@FreeBSD.org>
    sub   2048g/8958C1D3 2005-10-01

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    =2tPN
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.2. Thomas Abthorpe `<tabthorpe@FreeBSD.org>`

    pub   2048R/A473C990 2010-05-28
          Key fingerprint = D883 2D7C EB78 944A 69FC  36A6 D937 1097 A473 C990
    uid                  Thomas Abthorpe (FreeBSD Committer) <tabthorpe@FreeBSD.org>
    uid                  Thomas Abthorpe <thomas@goodking.ca>
    uid                  Thomas Abthorpe <tabthorpe@goodking.org>
    sub   2048R/8CA60EE0 2010-05-28

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    =hUQl
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.3. Shaun Amott `<shaun@FreeBSD.org>`

    pub   1024D/6B387A9A 2001-03-19
          Key fingerprint = B506 E6C7 74A1 CC11 9A23  5C13 9268 5D08 6B38 7A9A
    uid                  Shaun Amott <shaun@inerd.com>
    uid                  Shaun Amott <shaun@FreeBSD.org>
    sub   2048g/26FA8703 2001-03-19
    sub   2048R/7FFF5151 2005-11-06
    sub   2048R/27C54137 2005-11-06

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    NnNrFxKZ
    =zwEb
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.4. Henrik Brix Andersen `<brix@FreeBSD.org>`

    pub   1024D/54E278F8 2003-04-09
          Key fingerprint = 7B63 EF32 7831 A704 220D  7E61 BFE4 387E 54E2 78F8
    uid                  Henrik Brix Andersen <henrik@brixandersen.dk>
    uid                  Henrik Brix Andersen <brix@FreeBSD.org>
    sub   1024g/3B13C209 2003-04-09

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    [encoded data, 13455 characters]
    7w2qYVU=
    =4lil
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.5. Matthias Andree `<mandree@FreeBSD.org>`

    pub   1024D/052E7D95 2003-08-28
          Key fingerprint = FDD0 0C43 6E33 07E1 0758  C6A8 BE61 8339 052E 7D95
    uid                  Matthias Andree <mandree@freebsd.org>
    uid                  Matthias Andree <matthias.andree@gmx.de>
    sub   1536g/E65A83DA 2003-08-28

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    =PvSJ
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.6. Will Andrews `<will@FreeBSD.org>`

    pub  1024D/F81672C5 2000-05-22 Will Andrews (Key for official matters) <will@FreeBSD.org>
         Key fingerprint = 661F BBF7 9F5D 3D02 C862  5F6C 178E E274 F816 72C5
    uid                            Will Andrews <will@physics.purdue.edu>
    uid                            Will Andrews <will@puck.firepipe.net>
    uid                            Will Andrews <will@c-60.org>
    uid                            Will Andrews <will@csociety.org>
    uid                            Will Andrews <will@csociety.ecn.purdue.edu>
    uid                            Will Andrews <will@telperion.openpackages.org>
    sub  1024g/55472804 2000-05-22

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    [encoded data, 38736 characters]
    =inzo
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.7. Eric Anholt `<anholt@FreeBSD.org>`

    pub   1024D/6CF0EAF7 2003-09-08
          Key fingerprint = 76FE 2475 820B B75F DCA4  0F3E 1D47 6F60 6CF0 EAF7
    uid                  Eric Anholt <eta@lclark.edu>
    uid                  Eric Anholt <anholt@FreeBSD.org>
    sub   1024g/80B404C1 2003-09-08

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBD9dFQARBACzmGtuaKFqQwoRV32TI4ANBPHPlXkKXJ1WYQQkahzP/VfzNOUH
    VbjIMQqrNPawOcrFyEFuI/FJLWXewhrcrM+of831BXWqnQ7ketGqKUO3xT18N1MG
    BVCx7F1wpPW42YkhFVAubZ5tyHLOVSc+iJZVGgZ5mUi57odqZ1l+rnqpjwCgnXx5
    tas++vGBPk70vcIP+ZmswGMEAI0Lfr7Qy42P6hbYJZpk/NVAvXMZMUyK7fti2lR8
    BCOQr8lSdFUZMAqOhlGSfr75Lp8YhR4R4qCSISPXIbtkpYpS5A4YOk22qljLfyrC
    vki3U3Qum1eO2L67jswb+hQ7pCeaddNm9Jmsg+CJOZl6nfDIJpC8yoXH76W8tXAm
    1DgiA/96RKTseIR0z79ahlxX5HDr2A5bPM5CZBdPba4tSuFIwd28HVUdLhJmsGpC
    uVnQ5VnhBh5coNBhcb+ngZCOr9NvvyvwrxdYYGvuABeWS3v2UGx7XnJQmBQubWYq
    CEk3wScZWhEoFchvPEVfXtzNBjI6sF1FWMYkAhHaYiH4M7rBiLQgRXJpYyBBbmhv
    bHQgPGFuaG9sdEBGcmVlQlNELm9yZz6IWQQTEQIAGQUCP10VAAQLBwMCAxUCAwMW
    AgECHgECF4AACgkQHUdvYGzw6veNhgCgij4I47kRmhRkdzJeftLig2TG8/gAnRcb
    r7ah3d3nPKNLRN+nQDTp0uxctBxFcmljIEFuaG9sdCA8ZXRhQGxjbGFyay5lZHU+
    iF4EExECAB4FAj/CqF0CGwMGCwkIBwMCAxUCAwMWAgECHgECF4AACgkQHUdvYGzw
    6vfvYgCeIy1G5U6YPFK2QZNhB7SazQXwvjgAoJmxWRZr8zKOmcMiYFf1tj05UDhC
    uQENBD9dFQEQBACpBlENAalxZonZ7K2NU6xiH/qz+XI+ZU6WQh58iUlM0QPUU8ta
    Ot8uQUL5DT6G5myFDZufYomYrdzaLxuZbzpWzDOFGqb9aWLlHC16ydWbIRvPif0D
    ar9wFJX3b5DFkVICUYXTKTx/O/VqcpGHH7tLInuipYRapOBrUw1LU87qLwADBQP+
    KbuF41ujgb7QfPX5x5Cdg9D9SZAQyxu5TbsSXmc4fuel10QFMdWyMEUW2rMLixYn
    cWw7AfziHCy3uWOOm1qxm8npYCIRp0jG3M/Jydc8iQTqL59v0/UBOxPQ1pYZxE/8
    EOmbHRHe9BQt4pfouuLVKXGzxg3NW6nXXNQVEeOyqFaIRgQYEQIABgUCP10VAQAK
    CRAdR29gbPDq9y8MAJ0dP1d27SdsNNU4d8nFpwrXfXXa2wCfRvgv8i7ziyodkgwl
    B8LNmWvWUn8=
    =2V8B
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.8. Marcus von Appen `<mva@FreeBSD.org>`

    pub   1024D/B267A647 2009-02-14
          Key fingerprint = C7CC 1853 D8C5 E580 7795  B654 8BAF 3F12 B267 A647
    uid                  Marcus von Appen <freebsd@sysfault.org>
    uid                  Marcus von Appen <mva@freebsd.org>
    sub   2048g/D34A3BAF 2009-02-14

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEmWjSoRBACy4CsdR35YB6pGzU1aa1mbTkLuF44VBjV8O9qji80zo/VJs3JL
    El0wIhM9pg6zObKkzOU5HJFU/6uazzzDnc+A8y3NJL3u+HoX/7c03e3yUZ6xl7PC
    ua8tO3IAQiB/cg/Ltb6iJa8FflfmCKGE0I2DXeR2vN9PpgQVkJW+/NSDbwCg2Nxm
    mfeO83a7C28G/MV70z5CTg0EAKdHCkACr+iB1WpOIKEmFkZRD0NXHEXYa6L2kPdY
    XPNJ893yu5YUmHMFNUdVxoIKaUKpIGPa+V4q6ojAilWJiaEB74W+teqNBzwhzyNv
    xfp/W6fNJtvC1DJkrxkag0penU9ZROkVEnZajIclFh5la3muxX07Qf2HjGZM3Cqb
    nz6PA/9gdPecNwo1N+9aX/CGrCw0DC1QVFc1HJqcL3pe2qQkMVDO7sfQkewtQOW9
    H2ZrDWlVxIohQ9/+vbKV1uOcJr5+egSGNTCNNuimh9Kp4LYMc1vNouQe1D9fsCXW
    2kcgO8FozH0O3uJ60gCak2K06iA+mGziNYLQH3IvjVswivxOyLQiTWFyY3VzIHZv
    biBBcHBlbiA8bXZhQGZyZWVic2Qub3JnPohgBBMRAgAgBQJJlo0qAhsDBgsJCAcD
    AgQVAggDBBYCAwECHgECF4AACgkQi68/ErJnpkfulACeI1WVnhrKTq/+O2Djbpuu
    Nyj/MYMAn0BMDpy4frZjlIMfhazixfk4cbjNtCdNYXJjdXMgdm9uIEFwcGVuIDxm
    cmVlYnNkQHN5c2ZhdWx0Lm9yZz6IYAQTEQIAIAUCSZwX8QIbAwYLCQgHAwIEFQII
    AwQWAgMBAh4BAheAAAoJEIuvPxKyZ6ZH48AAnRraNz0aFuSHUFaw8LXjROOTwld/
    AKCvawhTgwYKX3YjLzu9Jcc1t3UNj7kCDQRJlo0qEAgA2acv4O4JFQCzgJXhCQqn
    KHFeEqOcgpKlvIGlgfP4/hVOCms2LK3qk10JpcbDbkBn0cBW7usxvA3mDiF2ZnrY
    wIwAROI7SNSY60PydR6DXc6I21VAd7hmmcpqkJFXaSMvKkQcq7sAJGlSYVpPuBqZ
    1kCIu2vlPBdpT4W1hHxf7l4Q+h2ge4+C2beRv9V9vRVdlXeSqJT1o5EgE5CjZ6sV
    Eh+9/TQdkRAoGgQG4LZvDuhWfsSkDU6x/soFKOPCdTF/LytW8YZ6asN1EpVJihAe
    GseQdkwP8iK9Co90Ab27+5WVVrP+xkY+rULOngW2vIwJrWic6nk/a0/0MrPjFn3k
    IwADBQf/dMsSQncKSSn8Tg9KeeBLftirddz+Mos1j+1PYOc88vrMrHVodBfNtJlG
    zxAGwFyLtk/yA8/MuW219t57O3W49VYh+I8NenzlRmZr/ahn8t79UD7+SWmy8L5e
    3XD2+w9WTj9Lx1V41wFKvxVLItNAik58Oi9MHa/wR1LMRIeGFAVHWAZcxYLLKfGR
    lYcMmMTY4906sjJ6Z+ZVYILnTR360JdeiZbFdaCFGf2yUoM+HeA2+975CaRagu+N
    /HZKW4JSsiu15fvaLTPwFG6YXKcHL2zI0Vc5UF5nd9GGZdX9Y4ffBi3aPXgIOJm5
    eAf29A6Ne3/llt3RG3TduGacd1WghYhJBBgRAgAJBQJJlo0qAhsMAAoJEIuvPxKy
    Z6ZHPMYAn1s6Sdc/4Kkv8KQ0KaJNwmkQYkcSAKDLkzy/Ph4mOMm8jO6ZL+Orpo21
    CQ==
    =HKIb
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.9. Marcelo Araujo `<araujo@FreeBSD.org>`

    pub   1024D/53E4CFA8 2007-04-27
          Key fingerprint = 9D6A 2339 925C 4F61 ED88  ED8B A2FC 4977 53E4 CFA8
    uid                  Marcelo Araujo (Ports Committer) <araujo@FreeBSD.org>
    sub   2048g/63CC012D 2007-04-27

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEYxSRMRBACUOhoJNgNPJtP5AcENhALcif0n7o785oCDaTGrMNPV75DdnR8o
    +mHl4POS1bZ7RYHdo7SHCbJqu0nLO4OCeAagamnK4lW+qaa0KaC6WxBiS2/K3qFe
    Y4mDMQRPxBNUWUh7A6VpXMBWk8n6ieyMGLiLQj7+d0fImSY3NdX547qZswCgnjln
    RlpLKFjRIRtNt9RKZQbm0JcD+gMXo+MoUHHKKnSKIQt3u7rnN3Mpnr4OGsa7J6KJ
    whm6GPX0zHzjKUhXCDOJwaYBpOJYNLTTNS3nKpq7GOkQDg7Q4I89/Q8S6AVwCvX1
    N4Jdeebm0jJBrzVNdbezIYEBwL5k+2YN6FcaC1yKBTk3N7qF7/4dmfRNO14qLFaz
    E7T3A/94lP7YT9FHqmNr9RPuy9rmz1bZhU/7tEimLF2o2Y6ntxsbSY1StVHJj0ln
    cCNlMV4vrIP6Ce73W51Vw1iKNapQy2113lWVfc6dwLdhRxWDVMNPKW8ESxqrFSJ9
    IVTzZvPQoqrXOsuVKTej0MC395UbdiLGWckmsJIYVrPaX+C7lrQ1TWFyY2VsbyBB
    cmF1am8gKFBvcnRzIENvbW1pdHRlcikgPGFyYXVqb0BGcmVlQlNELm9yZz6IYAQT
    EQIAIAUCRjFJEwIbAwYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJEKL8SXdT5M+o
    kMEAn26jMz7Tux/fTt8Z6V59+qhhd62EAKCGEPvDrh8Ye46LyJJj2ZeA8sWNtrkC
    DQRGMUkmEAgAgSVxd8hyDpx7nndMLjTIfpla4/mOP6VSkmzF0Enj1ESzOeTVC765
    gtnjjsFq5Vy5Gv3wdLwwDkcCij5FkBCgSi9EBcp5ooFpNfN9UtHT6/2Z9X7laLiS
    qQtS7xbqU1bxUQ4sK6AdjhOgzdDz8KOeWUjs6WO+/Touq/gouggxMbg/SWjywsfk
    SkgJ9SwH/o+QXvTEloyTwqwA7ptckvFKeBiyiA8RI/T2wqHUHmRE7YrI+HZz1b8q
    kPqALkZFoZVgYEVHjIuuuT5KttaQYvAdHgWjgTTjugeCfHj186yQbIG3TOD0ToLc
    KXFycft7oYFku55Elo0bRS2mxT6/SptmrwADBQf9Gws09t+AcOYUaLH3V8EKLg24
    1r/aEfu7tPYMZ/xHmibOkxxxQgJEUAIqE4jZY6fMrwUj4F9p4Q8E3mN/wkpY2qHJ
    4yUI71cv7NEOeXLvU3bdS5wwvlEK3obIJZfhzefmUncPQ+pEVdbtoGT2ehosqe4K
    nw+bBE9q1Q8elF4mr6mNTavSZBs2FTJ84S009pbMyqyZZZ61RL1H0XmZV4s03Ywf
    tJpc/uTSwgB5I9SiSi1clafGLRzWx4BzToIeHmE70Ycl1PGJQ5kmf2tmTPrVbKCX
    F/4+S3Sn85D9s3jk6LfxMfLiSzErBkkV/zZaXcNFTPfGZ21Dp6/0IyKF+HnNuYhJ
    BBgRAgAJBQJGMUkmAhsMAAoJEKL8SXdT5M+omBEAn3t4uIC5dceYeU8j15UnzECK
    pAWBAJwI/yul4wCtXeyIhg0vYCrExTl5Wg==
    =3ciY
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.10. Mathieu Arnold `<mat@FreeBSD.org>`

    pub   1024D/FE6D850F 2005-04-25
          Key fingerprint = 2771 11F4 0A7E 73F9 ADDD  A542 26A4 7C6A FE6D 850F
    uid                  Mathieu Arnold <mat@FreeBSD.org>
    uid                  Mathieu Arnold <mat@mat.cc>
    uid                  Mathieu Arnold <mat@cpan.org>
    uid                  Mathieu Arnold <m@absolight.fr>
    uid                  Mathieu Arnold <m@absolight.net>
    uid                  Mathieu Arnold <mat@club-internet.fr>
    uid                  Mathieu Arnold <marnold@april.org>
    uid                  Mathieu Arnold <paypal@mat.cc>
    sub   2048g/EAD18BD9 2005-04-25

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    [encoded data, 32110 characters]
    ydMjrsBH+qwhoiGI8wCfdTd4ZU99kETGpnFIfO7mDHd1VEE=
    =vtoU
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.11. 浅見 賢 `<asami@FreeBSD.org>`

    pub  1024R/1E08D889 1997-07-23 Satoshi Asami <asami@cs.berkeley.edu>
         Key fingerprint = EB 3C 68 9E FB 6C EB 3F  DB 2E 0F 10 8F CE 79 CA
    uid                            Satoshi Asami <asami@FreeBSD.ORG>

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.0.6 (FreeBSD)
    Comment: For info see http://www.gnupg.org

    mQCNAzPVyoQAAAEEAL7W+kipxB171Z4SVyyL9skaA7hG3eRsSOWk7lfvfUBLtPog
    f3OKwrApoc/jwLf4+Qpdzv5DLEt/6Hd/clskhJ+q1gMNHyZ5ABmUxrTRRNvJMTrb
    3fPU3oZj7sL/MyiFaT1zF8EaMP/iS2ZtcFsbYOqGeA8E/58uk4NA0SoeCNiJAAUR
    tCVTYXRvc2hpIEFzYW1pIDxhc2FtaUBjcy5iZXJrZWxleS5lZHU+iQCVAwUQM/AT
    +EqGN2HYnOMZAQF11QP/eSXb2FuTb1yX5yoo1Im8YnIk1SEgCGbyEbOMMBznVNDy
    5g2TAD0ofLxPxy5Vodjg8rf+lfMVtO5amUH6aNcORXRncE83T10JmeM6JEp0T6jw
    zOHKz8jRzygYLBayGsNIJ4BGxa4LeaGxJpO1ZEvRlNkPH/YEXK5oQmq9/DlrtYOJ
    AEUDBRAz42JT8ng6GBbVvu0BAU8nAYCsJ8PiJpRUGlrz6rxjX8hqM1v3vqFHLcG+
    G52nVMBSy+RZBgzsYIPwI5EZtWAKb22JAJUDBRAz4QBWdbtuOHaj97EBAaQPA/46
    +NLUp+Wubl90JoonoXocwAg88tvAUVSzsxPXj0lvypAiSI2AJKsmn+5PuQ+/IoQy
    lywRsxiQ5GD7C72SZ1yw2WI9DWFeAi+qa4b8n9fcLYrnHpyCY+zxEpu4pam8FJ7H
    JocEUZz5HRoKKOLHErzXDiuTkkm72b1glmCqAQvnB4kAlQMFEDPZ3gyDQNEqHgjY
    iQEBFfUEALu2C0uo+1Z7C5+xshWRYY5xNCzK20O6bANVJ+CO2fih96KhwsMof3lw
    fDso5HJSwgFd8WT/sR+Wwzz6BAE5UtgsQq5GcsdYQuGI1yIlCYUpDp5sgswNm+OA
    bX5a+r4F/ZJqrqT1J56Mer0VVsNfe5nIRsjd/rnFAFVfjcQtaQmjiQCVAwUQM9uV
    mcdm8Q+/vPRJAQELHgP9GqNiMpLQlZig17fDnCJ73P0e5t/hRLFehZDlmEI2TK7j
    Yeqbw078nZgyyuljZ7YsbstRIsWVCxobX5eH1kX+hIxuUqCAkCsWUY4abG89kHJr
    XGQn6X1CX7xbZ+b6b9jLK+bJKFcLSfyqR3M2eCyscSiZYkWKQ5l3FYvbUzkeb6K0
    IVNhdG9zaGkgQXNhbWkgPGFzYW1pQEZyZWVCU0QuT1JHPg==
    =39SC
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.12. Gavin Atkinson `<gavin@FreeBSD.org>`

    pub   1024D/A093262B 2005-02-18
          Key fingerprint = 313A A79F 697D 3A5C 216A  EDF5 935D EF44 A093 262B
    uid                  Gavin Atkinson <gavin@16squared.co.uk>
    uid                  Gavin Atkinson (FreeBSD key) <gavin@FreeBSD.org>
    uid                  Gavin Atkinson (Work e-mail) <ga9@york.ac.uk>
    uid                  Gavin Atkinson <gavin.atkinson@ury.york.ac.uk>
    sub   2048g/58F40B3D 2005-02-18

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    [encoded data, 26325 characters]
    c1hAq4PIfgnpiErVWkaOiwCfcQSb29qCLTwsVXBkqZr02JdmGdg=
    =w86g
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.13. Philippe Audeoud `<jadawin@FreeBSD.org>`

    pub   1024D/C835D40E 2005-04-13
          Key fingerprint = D090 8C96 3612 15C9 4E3E  7A4A E498 FC2B C835 D40E
    uid                  Philippe Audeoud <jadawin@tuxaco.net>
    uid                  Philippe Audeoud <philippe@tuxaco.net>
    uid                  Philippe Audeoud <philippe.audeoud@sitadelle.com>
    uid                  Philippe Audeoud <jadawin@freebsd.org>
    sub   2048g/EF8EA329 2005-04-13

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    [encoded data, 10530 characters]
    7GNJJ3W8MechFeaHW8gi7wCfcvqc/uB5T9hc40vmQZTSMGsVwIo=
    =Ed5M
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.14. Timur I. Bakeyev `<timur@FreeBSD.org>`

    pub   1024D/60BA1F47 2002-04-27
          Key fingerprint = 84BF EAD1 607D 362F 210E  69B3 0BF0 6412 60BA 1F47
    uid                  Timur I. Bakeyev (BaT) <timur@bat.ru>
    uid                  Timur I. Bakeyev <timur@gnu.org>
    uid                  Timur I. Bakeyev (BaT) <bat@cpan.org>
    uid                  Timur I. Bakeyev (BaT) <timur@FreeBSD.org>
    uid                  Timur I. Bakeyev (BaT) <timur@gnome.org>
    uid                  Timur I. Bakeyev <timur@gnome.org>
    sub   2048g/8A5B0042 2002-04-27

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    [encoded data, 33800 characters]
    0I7kYcd8hY9Z7akRmB7QZbKLRukAn1figHfNRdbksZ1MgA42+z1QS/fv
    =r3u1
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.15. John Baldwin `<jhb@FreeBSD.org>`

    pub  1024R/C10A874D 1999-01-13 John Baldwin <jbaldwin@weather.com>
         Key fingerprint = 43 33 1D 37 72 B1 EF 5B  9B 5F 39 F8 BD C1 7C B5
    uid                            John Baldwin <john@baldwin.cx>
    uid                            John Baldwin <jhb@FreeBSD.org>
    uid                            John Baldwin <jobaldwi@vt.edu>

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    [encoded data, 4676 characters]
    =BVS/
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.16. Nick Barkas `<snb@FreeBSD.org>`

    pub   1024D/7E7582A4 2006-02-10
          Key fingerprint = 5DF1 3ABB 4F75 F76C E83F  322F C8B2 427A 7E75 82A4
    uid                  S. Nicholas Barkas <snb@freebsd.org>
    uid                  S. Nicholas Barkas <snb@moduli.net>
    uid                  [jpeg image of size 13220]
    sub   2048g/AF72C3A3 2006-02-10
    sub   1024D/3F6C2D91 2009-04-21 [expires: 2010-04-21]

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    [encoded data, 23335 characters]
    3MH9
    =8MQb
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.17. Simon Barner `<barner@FreeBSD.org>`

    pub   1024D/EBADA82A 2000-11-10
          Key fingerprint = 67D1 3562 9A2F 3177 E46A  35ED 0A49 FEFD EBAD A82A
    uid                  Simon Barner <barner@FreeBSD.org>
    uid                  Simon Barner <barner@in.tum.de>
    uid                  Simon Barner <barner@informatik.tu-muenchen.de>
    uid                  Simon Barner <barner@gmx.de>
    sub   2048g/F63052DE 2000-11-10

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    8o9/o+UAoI65F9bRERosGt0m0f0q1WwwdGcz
    =HMUk
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.18. Doug Barton `<dougb@FreeBSD.org>`

    pub   2048R/1A1ABC84 2010-03-23
          Key fingerprint = E352 0E14 9D05 3533 C33A  67DB 5CC6 86F1 1A1A BC84
    uid                  Douglas Barton <dougb@dougbarton.us>
    uid                  Douglas Barton <dougb@FreeBSD.org>
    uid                  [jpeg image of size 6140]
    sub   3072R/498795B4 2010-03-23
          Key fingerprint = C0BE C1E3 8DC8 D7F4 8E6C  732B 0C14 D9CF 4987 95B4

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Comment: Public key 0x1A1ABC84 for dougb@{dougbarton.us|FreeBSD.org}

    [encoded data, 15210 characters]
    FthQTWFB0ZgtsA==
    =Mlfh
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.19. Konstantin Belousov `<kib@FreeBSD.org>`

    pub   1024D/DD4C6F88 2004-07-29
          Key fingerprint = 39DA E615 A45C 111D 777B  3AD0 0B7F 8C04 DD4C 6F88
    uid                  Konstantin Belousov <kib@freebsd.org>
    uid                  Konstantin Belousov <konstantin.belousov@zoral.com.ua>
    uid                  Kostik Belousov <kostikbel@ukr.net>
    uid                  Kostik Belousov <kostikbel@gmail.com>
    sub   2048g/18488597 2004-07-29

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    CQ==
    =EJ3p
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.20. Anton Berezin `<tobez@FreeBSD.org>`

    pub  1024D/7A7BA3C0 2000-05-25 Anton Berezin <tobez@catpipe.net>
         Key fingerprint = CDD8 560C 174B D8E5 0323  83CE 22CA 584C 7A7B A3C0
    uid                            Anton Berezin <tobez@tobez.org>
    uid                            Anton Berezin <tobez@FreeBSD.org>
    sub  1024g/ADC71E87 2000-05-25

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.0.6 (FreeBSD)
    Comment: For info see http://www.gnupg.org

    mQGiBDks22ERBACsqOob/YoPnaI/xubQKn/CCUFsaEMqL14TZ+FSlCphq3uZ7Y0W
    Qg2eqaTp97lG2NTVNEzF7K0yr/C3ofEQmTINQTd7DmEj04DDlR+t8BMFe6Xz2sBI
    WlEPD54ZfJVqhEX5P6T0xe9hiqjXKwQHHl1skKniKeO07o3K/4bCDDMfKwCg5DY1
    /2j/Gid0YmxsJCIlg9kzRGMD/1lkSkQ0KrPH3RVPMrkRWE3rvvMES/F7jYNfKDQj
    X5lJDKoIQyWh1JwAmW/O10V+24Vl6JEFNQ4QJ7ix9hlkI59YS4TERxCUGGDpl3jr
    Lae6FFxYc1D5H8LLpiTSApmZcLxUE8CFoZJLySHgjp8qzvA60wMOjkfkWMgw3BpE
    N8DVA/9UF+5ue4bLHsPn7Jv5NzOkzaTgC/9O3UZUj/jYOp/vkI+0wPnP0U5f304P
    iLpYl1tlCEpciWF88MS5k3+8zsk8trqorss/XQfFzhHVtvRtgVxj87V0Z01E2ZZr
    YlqrnzHKQZOAKM2X9FiRZOAkndkkpeB+7SSeXDP62I56B+690LQfQW50b24gQmVy
    ZXppbiA8dG9iZXpAdG9iZXoub3JnPohWBBMRAgAWBQI5LNthBAsKBAMDFQMCAxYC
    AQIXgAAKCRAiylhMenujwBepAKCCtVcVRS40E9SY4Su8GTOBVoH4UwCgu3gK3zMy
    /QhZnnhmTKaguG6XopqIRgQQEQIABgUCOSz5ngAKCRCBvdPEDh+beRnEAJ9xU+6P
    TJrLGk8PKtO+UY8Zt7MTxgCdHYzFsXZ81j9HY0Z4EaHkQBXv1JmITAQQEQIADAUC
    OS6PpwUDCWdTAAAKCRDXjLzlZqdLMXMaAJwOE+6Jh5PnfHc09x3JKN4/a0v63wCg
    6GdysmObSBQXATzYBuhy/0eFCCC0IUFudG9uIEJlcmV6aW4gPHRvYmV6QEZyZWVC
    U0Qub3JnPohXBBMRAgAXBQI7JNTmBQsHCgMEAxUDAgMWAgECF4AACgkQIspYTHp7
    o8CQ3wCeI+P8VsHzHpfmUMa5kCzjBeqj3zcAoKYmyZUSxhV9TBQPo2WQ7zF3zcoB
    tCFBbnRvbiBCZXJlemluIDx0b2JlekBjYXRwaXBlLm5ldD6IVwQTEQIAFwUCOyTV
    DwULBwoDBAMVAwIDFgIBAheAAAoJECLKWEx6e6PATIsAn3clXqExEiP/Q/IDQb7e
    /yolgMrRAKDPw+6ZxTOJFba2HWEto0PwQ/COE7kBDQQ5LNt+EAQAjHltp9g75EOw
    pEDSUvK/B0aRUsjoIyAokRuW9Tg8S0xIhtV8ogcklvcXjQbjiEsAiO13hX7zmdmb
    yH7xLiSjea/m/whmNr9K094BS1K5i7mmUqNEFOyPB7VkPbRs5gF0dCkHT5uVgqFJ
    HSbss3zPyGYEBi8uDokIfOt4o5CEMYsAAwUD/269N/UwZkO4+NYivNX0ZpcUouqV
    YDPQ8YLwSrkwWpG7UNvNHd1HS43OWwAOy585SkLpZkjlW58NqyXJuWVC0xJtdTrI
    MKTZ3IJNXMK2wdK+nBuTL4IvJwkf04pwFel80F2NtgUjR3ZgIlRNvFtvtCkNPg0j
    t7J8pPvL2vU5hz7HiEYEGBECAAYFAjks234ACgkQIspYTHp7o8Bj7wCfSZsld8vv
    iM02pWobJy/VvsBJKU8An2auT0HLmVLClDph/fQa+k1R2qsR
    =ISZ3
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.21. Damien Bergamini `<damien@FreeBSD.org>`

    pub   2048R/D129F093 2005-03-02
          Key fingerprint = D3AB 28C3 1A4A E219 3145  54FE 220A 7486 D129 F093
    uid                  Damien Bergamini <damien.bergamini@free.fr>
    uid                  Damien Bergamini <damien@FreeBSD.org>
    sub   2048R/9FBA73A4 2005-03-02

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    =uQuq
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.22. Tim Bishop `<tdb@FreeBSD.org>`

    pub   1024D/5AE7D984 2000-10-07
          Key fingerprint = 1453 086E 9376 1A50 ECF6  AE05 7DCE D659 5AE7 D984
    uid                  Tim Bishop <tim@bishnet.net>
    uid                  Tim Bishop <T.D.Bishop@kent.ac.uk>
    uid                  Tim Bishop <tdb@i-scream.org>
    uid                  Tim Bishop <tdb@FreeBSD.org>
    sub   4096g/7F886031 2000-10-07

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    [encoded data, 8580 characters]
    5ACdHjn4iuMiXZA8cDDPAi8VybndPak=
    =F66Y
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.23. Martin Blapp `<mbr@FreeBSD.org>`

    pub  1024D/D300551E 2001-12-20 Martin Blapp <mb@imp.ch>
         Key fingerprint = B434 53FC C87C FE7B 0A18  B84C 8686 EF22 D300 551E
    sub  1024g/998281C8 2001-12-20

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.0.6 (FreeBSD)
    Comment: For info see http://www.gnupg.org

    mQGiBDwhwB0RBACelK3FYxd6cT5ukbiSdVLHPLfzgH3F34JfS6Q4FMXgEAPtx7iy
    U4Lc8A4Z2gCq1ZHBZTzKc61U+nzHe+eUWtAj0h3qDP4DOd7JCZbh4SW6dMIC7MAM
    /9J5br6e2fIIn3rzbROXSW7CJPox2D/zZcT1b727Wgy5NHUob3qej/zhwwCgrZ0o
    KBapUXgnKhesQzKlH2wWCJkD/3njAzJsFS7nDdTssMtd7ip9W97uNOFLuJ1/Sg5S
    332BUby73hNzSXlS4rhtQB6NVBRLfGASuEYBJQIEz6aao/lDprIxTusCTrO/EGqa
    Dy5y4XE1ClIyZ0yVw05UJiTOZ7Mu/kUTBBzQ2i15lxjzXBt9pNifvtcKBhcDmdzQ
    zepQA/9Jio4IBFmjPDsl3kpvA8KqP7VXKFMMBVT9SztYVIeiFgbvff/YCqzkE5RD
    0PWUFPF3o8rzsCovlpySfUNLUlfqxEZ+5+/5ky7AbJ6Vmyn7Tl+mBSZs4mTV7ktN
    526ngUaW2j+aO2SdWao/di+sRutrgRjJqyvgGn1YGnrSoKbMJ7QYTWFydGluIEJs
    YXBwIDxtYkBpbXAuY2g+iFcEExECABcFAjwhwB0FCwcKAwQDFQMCAxYCAQIXgAAK
    CRCGhu8i0wBVHh3IAKCDMueq8RCcRO+3Lc+uQyXqDKCf3QCgpVWa7oS6lTiNxwSP
    enZ7+4g+TkK5AQ0EPCHAIhAEAI3iAhZEDBjyJvPS74CXq1ypWvXfQUCYADCc/Cuv
    3xrr1p4ff3oYc+IIVdeOQktKWRP1dK7v1JLmqFsNQQIs+NtgHyO+azyX5vJGVRTg
    aCIuMMTnrDBC7VbAnWXtTHF5VKmmd891Y+nk68p5YVnRPc/fReXEY6dA9lqW0bN2
    f2jLAAMGA/9rMbPpnRy+uvaAQChkHvOV1RnDAhN2R+U9u3d0uNnv7sWa/TJrcdig
    KNUsUvXqIXVkqEMrYHTbCVC4mLMd51MLARiIKOaHeynRZYkEmdi5X7EiBLS9dCUe
    7+vMz4jV6MRIGyr8TBy3CEFIdAnpY6EIVd326PzYIgx8UZw3oEvjGIhGBBgRAgAG
    BQI8IcAiAAoJEIaG7yLTAFUetM4AoJg56qwlr8E1iEs0F33G6POGCWnCAJ4mW9E3
    25TD51pcom8Plwy1BkuBSw==
    =oE+K
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.24. Vitaly Bogdanov `<bvs@FreeBSD.org>`

    pub  1024D/B32017F7 2005-10-02 Vitaly Bogdanov <gad@gad.glazov.net>
         Key fingerprint = 402E B8E4 53CB 22FF BE62  AE35 A0BF B077 B320 17F7
    uid                            Vitaly Bogdanov <bvs@freebsd.org>
    sub  1024g/0E88C62E 2005-10-02

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEM/sJgRBAD26RM3o9QC+V5JO6/zr3ffRnNb08Bc6YIvpTd8yUhc4AIa1Zbg
    QHoUNZ0pOLffeZ3i0wnqV3lMV1cPMtvSRWlvh+XSiSg8hYlnh7+oAwmqs0Zev1r7
    w/In683ytXREuidcak8qWq4GAkET20sIICV7Ye56HJDlKrtOjUWDhVQJvwCg8jUp
    CDtJ8V6Cw6GgjxH1iaNR1X0EAMKCUJwZgIoh2Rpqfrbwv92AD7dmaJJLVfnUSMCE
    GvjcZ+O41PpvWi3PkxmgA3Zb0sJ3OSfgPi3Tnj3Nllyhqnf3WO1Yumzq3myBg+F/
    qH9a8BXvVJlk/2cbYUC6uJeGMCC971X3hceu51J41k0ano7/ALIWeoUC1HhkAOaP
    f7IoBADkQCDuIvdJ7KebBMgXIHwAJnycVZsXXQPlOx0gty4+OVMY9PfpEm7T+1DM
    mWwuckntM9tSYuInbUPco70LBxuHHBNnhiUOTkijZ5GK/VF+WPnqOEopkjL7LD2q
    wSYqGaBPbl/noAoEb3Nx7h8D94kJUF7Gchs9fCH6UxHd+/Q8jbQhVml0YWx5IEJv
    Z2Rhbm92IDxidnNAZnJlZWJzZC5vcmc+iF4EExECAB4FAkM/sJgCGwMGCwkIBwMC
    AxUCAwMWAgECHgECF4AACgkQoL+wd7MgF/cbhwCghoShm9pCHbiUjXin1mR+0HaU
    XvAAniOPVmeKUuBBKCc3KLPIhfCCKt9viEYEEBECAAYFAkM/zzcACgkQhdRQRWtp
    GwOrjACfRJUhoojMI3sBMsjH9IuCwj8CikoAn3RlHMmCAx7JIiAMmg2gC1qjIUsU
    tCRWaXRhbHkgQm9nZGFub3YgPGdhZEBnYWQuZ2xhem92Lm5ldD6IXgQTEQIAHgUC
    Qz+yTQIbAwYLCQgHAwIDFQIDAxYCAQIeAQIXgAAKCRCgv7B3syAX91XMAKDJ89F+
    46BctXCALIn53c89waWDrQCgmCHSVr/rVUMU6fnyHtoNvYXtkFuIRgQQEQIABgUC
    Qz/PMwAKCRCF1FBFa2kbA/bwAJ4mwlXag5w3scB7heyAtqr7w6491QCghh/fVv3t
    EOFNlmwonrudaMSIYTm5AQ0EQz+wmRAEAKke9/e3jLaDx8i86+J0eTOAypCQy7WU
    QajhZDFqBHbBQTDRbcYG1dLYd/sC9oUwqgaLe+yEYw3JdfsiaiHsE2yZ/S4S2wTL
    7MrUqOc1aVPu95c3Xcef13DKCMx36B4EbMwJa00bU5ut6/7tHly5Edb8nkn5vKP4
    00TbjMa/3ZCHAAMFA/9OffxCzJmwUjCOxAg2GBberPxovtCtwAw7goKZzuga9+9Q
    dZBICMIc4l/I+zjDlphF/k9I5CQGOwoKTo+OCsZN7SSAB94NV9BEoA1MX9drWv0y
    CZJlD1bSrcPFVjWajXqC6NpAAiCdQapvV1sJK0F09v/RTHdPAZcRnpg/YS2jDohJ
    BBgRAgAJBQJDP7CZAhsMAAoJEKC/sHezIBf3nP8AoNBIM6JqCrnzQealKln3Tc+t
    HMPIAJ9td+R2zFqwuX+IMk135J0T/PXeaw==
    =bBFz
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.25. Roman Bogorodskiy `<novel@FreeBSD.org>`

    pub   1024R/1DAACA46 2004-05-25 [expires: 2009-04-26]
          Key fingerprint = AC27 CF29 5E51 E53F 8C8D  DB90 8074 5B38 1DAA CA46
    uid                  Roman Bogorodskiy <novel@FreeBSD.org>
    uid                  Roman Bogorodskiy <bogorodskiy@gmail.com>
    uid                  Roman Bogorodskiy <bogorodskiy@inbox.ru>
    uid                  Roman Bogorodskiy <novel@clublife.ru>

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mIsEQLMkmwEEAM4cQe1CNDdIWcOlb8221icriocsnJOWZ4XMX1Ww7CTUfPZU31Ho
    boNl3sK/+KsJxwt6frqOBnnvtQYQEYzIQNJ4pMKC2Mz15jMYndwsuxg6L09e6+R1
    7RfIEFEXU7p6YWQFLoBFUW16XF7ye8YrjFJxAEfTa4jnXF27ERopVpUFAAYptCVS
    b21hbiBCb2dvcm9kc2tpeSA8bm92ZWxARnJlZUJTRC5vcmc+iL0EEwECACcCGwMG
    CwkIBwMCAxUCAwMWAgECHgECF4ACGQEFAkgS0BsFCQlA3vgACgkQgHRbOB2qykZG
    oAP8D28j3pBxbOch9/mlDL048M1lWMnJhAJ1wYpcAbmKseBrEWCz9czxPj/UgUNl
    6EfRLT71W0HOH/eN74zJqwWb80wviX9nOKApsmqtv528fujoMYF+XeweBX4a+Cta
    D+krJUxM0rA8kETvLcHCehl9EDJdNHHM5piSCTrnj8XBNJS0KVJvbWFuIEJvZ29y
    b2Rza2l5IDxib2dvcm9kc2tpeUBnbWFpbC5jb20+iLoEEwECACQCGwMGCwkIBwMC
    AxUCAwMWAgECHgECF4AFAkgS0B4FCQlA3vgACgkQgHRbOB2qykZ1+AP/ajL5tZdQ
    hoM075iBc+q34czeeLccV6nXGDkQSyJ2gp654+oOiDKIU+HeaaNVpgvvtzZqoFQZ
    GH38DWM0G/WLuaEJDsCPSVHdKMgAe98FaLWe/oekTS0KF/epuK73GHRBNZaCPrcn
    tVWALyo/O6V65023Lor4DcU6pjhDbwk6Yrq0KFJvbWFuIEJvZ29yb2Rza2l5IDxi
    b2dvcm9kc2tpeUBpbmJveC5ydT6IugQTAQIAJAIbAwYLCQgHAwIDFQIDAxYCAQIe
    AQIXgAUCSBLQHgUJCUDe+AAKCRCAdFs4HarKRnIcA/4iBqhJ7zdEx1j1qQ0rj9hO
    R/OQISesx17fRMwd/u3tmDjAyX22Pgqhhj56f2eJ2SQUr0PJXin6UwaYEQ4ifbz0
    z6zVZlmiLVEwJk6O43dhHc6k9RxM/eDltzbCa4aBQwuQg3Seyg4Z2HCvRrKv9ESZ
    9NZVI+hqVyQl9hyJ95b8CIi0BBMBAgAeBQJAsySbAhsDBgsJCAcDAgMVAgMDFgIB
    Ah4BAheAAAoJEIB0WzgdqspG/3kD/0isk4pKJTMKCcoaGcZsGW6C3e5CZw8Mr+OW
    AsxHGh/Iv3iGB7gGoO07R/I+uAMNR2VbPQAvYPlMwrIhubNzUZRzkdlBu7QQyT7C
    lyEIAn/ikUzfmxvD2U0D0SrHguz7YcSH1Vjb9R7J8dc+qlPJBRXIX6saNG6+FbSk
    KN+J8hOBtCVSb21hbiBCb2dvcm9kc2tpeSA8bm92ZWxAY2x1YmxpZmUucnU+iLwE
    EwECACYCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAUCSBLQHgUJCUDe+AAKCRCA
    dFs4HarKRpUEBACyMr1jFO6G1HTwixax4+jMmto+9Mdp3uifEr/Rwa6mFyIGQx1G
    3N/bHWgWNIUkD8ZAKoD4jaijPNpE9yEUsXSkZD7TOkvRfsFbGDb0PissDnraRr0o
    hNH2K/edi23vXQH/rHj7N/B4fjF+3x0jocg3+Dnh1ADEJcPBN2HQGVAkkA==
    =ilKf
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.26. Renato Botelho `<garga@FreeBSD.org>`

    pub   1024D/2244EDA9 2003-12-16 [expires: 2011-12-31]
          Key fingerprint = 4006 C844 BC51 AD75 CE60  6E24 E824 5B89 2244 EDA9
    uid                  Renato Botelho <garga@FreeBSD.org>
    uid                  Renato Botelho <rbgarga@gmail.com>
    uid                  Renato Botelho <garga@freebsdbrasil.com.br>
    sub   1024g/7B295760 2003-12-16

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    [encoded data, 4420 characters]
    oKPyew4gQHo/5fCeBunSpIQbAanR
    =YyLh
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.27. Alexander Botero-Lowry `<alexbl@FreeBSD.org>`

    pub   1024D/12A95A7B 2006-09-13
          Key fingerprint = D0C3 47F8 AE87 C829 0613  3586 24DF F52B 12A9 5A7B
    uid                  Alexander Botero-Lowry <alexbl@FreeBSD.org>
    sub   2048g/CA287923 2006-09-13

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEUHm3YRBAC/bBl9E1saFAVuS5wtnBQ7BbXPOr21SBExZ3t+f8k2PG2SsKYL
    xNMAn1drC9UdbUVcQDzlGcWQONYRKj4kWoYSYNDOElwa7Rv/f4z4NnIhOxxT6G+M
    qQTFWj6MjrCVPZh+b5Y3DTdmNxuJq+Yf9+DFsxc0i+xhMrbbjuokWRFdxwCgvb8Y
    fLNYJqjf9V5hhnvt3K2/L9sD/2frMKR7o1Ie3CgQbhZgYLkGlMmAlyrKLamdRzRl
    AmjJ35mkIQ9iu36BpsUmVL9WPjy2sdep0FyRLRgu5/q9qhJxy31GsVYv5y9m9+px
    X+00CN1a/5g1d6gxLUY30KsOL8OXSqwmq36iJHEsRxFfs9NJ/dBui1cFW0dDNmdg
    nE9xA/0aX+9BPSiu/hXFa5A2Q8fCB1wOcaru+QzgbY7nWnse2PQ7Nsv0xEMkaYdT
    AqA9I/UyssYeRygD7H8edd24xy39EBAVLLCD57Tjye2fCOyWBIGJU7Jtc4b/DJgm
    6bP2bSscB44ybBmlWdza2sgui9D4beWQvEVZGgpsnqnCjJQDOLQrQWxleGFuZGVy
    IEJvdGVyby1Mb3dyeSA8YWxleGJsQEZyZWVCU0Qub3JnPohgBBMRAgAgBQJFB5t2
    AhsDBgsJCAcDAgQVAggDBBYCAwECHgECF4AACgkQJN/1KxKpWntZ4wCfWY5pLq6V
    rCpsAiGcIniMBUoueTYAn0b5suADC5pawqBP/Xbv95e69gDWuQINBEUHm5sQCADC
    7ynjQmBXd8q2Ei9ab6oO6Q4XbEu2eMLcm1C4b1cu8Riyb0bYI8fQ0JkYPWBDdgvG
    iVuDGHjLRCJm8LDV4VAhpkn6obPaDW2ZVf3urkAsCszSmv0jlEO+grOj48c7sLeR
    NpZX76FCKFtgHClQOSfR/9eoKFQh5jveWgSQ0gEW95gGQShy1cTi1XUdJdxilL6G
    GNBfSNgAFwQBkepgzjR853bVysoZEF0Z9MF/PZgmAXoPYTs54tA24LSETmBo5BjA
    yUTI6Dv4+jKXqmDphX6BjxeJkYxlKAyVBgNrKZahPoyOPd0FvMINn4MpOJdpq3sv
    PSXwbexIrroMJQz7nR9vAAQLB/95AIR3oGIOhDCAUwf18K0Uv+v2cKVhClHqyAGy
    zHjyoyEoSnhApWVXD2hNvqfxy37t5/5EzaU0mvC0GMpv0trBa9uBRk8GrXgILnzh
    dYjhbSPZStx3D/0lFBLHt9qYjFFQweKNun9coOV0TzdXigH5PFxiks90Qc/sfr6N
    v6hXA4MAe81zeEdQafBkreHDo9fL4i+GwxF9novXNZ0C+YNJ6+3wOIJwacCZ1bdy
    gWTM8pTa7vtvtA0Pk4CZpGKSICg/jDq9dZT+vaNGFnKvQOQv1RPNLs/QqfvUo4ZF
    khopn5yHXGJjLZp0Zds4MdqXLddUNHXW20Yki11eZ9NXK1KdiEkEGBECAAkFAkUH
    m5sCGwwACgkQJN/1KxKpWnuSYgCeOgBV4svD8sqNBVN467Le6aLzPxIAoKsNXerk
    njcpzY8FzVuY52JnLNP4
    =CUqZ
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.28. Hartmut Brandt `<harti@FreeBSD.org>`

    pub  1024D/5920099F 2003-01-29 Hartmut Brandt <brandt@fokus.fraunhofer.de>
         Key fingerprint = F60D 09A0 76B7 31EE 794B  BB91 082F 291D 5920 099F
    uid                            Hartmut Brandt <harti@freebsd.org>
    sub  1024g/21D30205 2003-01-29

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.2.1 (FreeBSD)

    mQGiBD43wzYRBACpuUuayKjLpf+tMndpkOwxmpaPkLFxiA/dI1iWjY8I9ItDLZyM
    LqgYXemOOga6vbTvIUq7Bjzl3oR72kjNX3J1EljsMj7dxksoY5lflEMdxAyzdVoI
    +/cu+cWiP0Z9unKpYmTk8S13sUTtZc0+ixioaUvHzSJ0nxQMpIW7dqCDewCgmSVR
    6i2aK4oImAa9+ZbCxg7fCxcD/2xgAAwJSmaiaV/0As3A6IO0eSkbkzFSkMF+ms7C
    OtrHr1zmdM7h8MaGg/jw0Z6eZalYD7AclLvXDW0rxCMFwh06SC2axUTk+aE+vcys
    fuSk/HJtnktHUxZDgb28jf4X6zfcdTKE5dt5a9w3XHHPgdTXjGn7+sQNR4CWDcvq
    1qNQBACOqNxJdCC9tDLycRoupNSwzldMKVBZ2/JdQjfCIq6d8HPMNVLU8PGlDjoy
    RN4QkMZLbwV9Gaigk2DR6vvi8meARADt53x4OjS4W3O/Pc/Aj8rsUcF2mRU/wiJC
    8VkQsnaci5GuaYAssgKroOTZQzxHkOjbk4FeQ70C+wxovRsTh7QrSGFydG11dCBC
    cmFuZHQgPGJyYW5kdEBmb2t1cy5mcmF1bmhvZmVyLmRlPohfBBMRAgAfAhsDBAsH
    AwIDFQIDAxYCAQIeAQIXgAIZAQUCPjlTfwAKCRAILykdWSAJnxpyAJ9eHCdgiEt/
    +Z5Ms8Qe3ekWTYTy1gCfdVWLF2MrZNL/MYOgBhhex70gKzu0IkhhcnRtdXQgQnJh
    bmR0IDxoYXJ0aUBmcmVlYnNkLm9yZz6IXAQTEQIAHAUCPjlT2QIbAwQLBwMCAxUC
    AwMWAgECHgECF4AACgkQCC8pHVkgCZ+BBQCeMpgFMMm4siEtrzqdisrRaxJJvosA
    nA7UDwOVoHDZaAkFD0HNcUsTkO3KuQENBD43wzcQBADsEH8o/9tD01ScNfhoMbK4
    N7GsIJNFwQf0+MQuplpXQx4eBpI9ST1ZoAUXeM1j4jk5PIAMJzt8w6BAGgcU4iUG
    Un0R/QMTTXVkfovdSe9FW7/QtUjRtTQz3QOfZTkekYauFIiW+lSmH3BDwRXhpKgM
    e19eQZYOPRfLCnLLwqdr9wADBQQA5tIdzlDS80CNZxxoFDKlvOghtrIzPG/wIwGV
    at2clZMLhXESxDxDkpwT7XP1GRLyN/Plh/4k2vwxni7nOJ8BIch7rRh3E48TJat1
    iZ99SFc9iibED5hY/HrKlc/kphFnUuEr/kk82UCv9p4/d2V1+8v1N+Cy2jCGvrip
    IQ6v2fOIRgQYEQIABgUCPjfDNwAKCRAILykdWSAJn0J4AJwMsjovUA6jCJRMEzOS
    kIakJgqJvgCeNLKyNEkyJZh0wZUcEg1zYLRYp/w=
    =+h/9
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.29. Oliver Braun `<obraun@FreeBSD.org>`

    pub  1024D/EF25B1BA 2001-05-06 Oliver Braun <obraun@unsane.org>
         Key fingerprint = 6A3B 042A 732E 17E4 B6E7  3EAF C0B1 6B7D EF25 B1BA
    uid                            Oliver Braun <obraun@obraun.net>
    uid                            Oliver Braun <obraun@freebsd.org>
    uid                            Oliver Braun <obraun@haskell.org>
    sub  1024g/09D28582 2001-05-06

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBDr1p9kRBADrTCmhk/+XY9Jc34z36wp8zy1rbxGBy80enJM+aFPHks/iYPxR
    WA1tB8BEdGPJliUMYcNGeo+ZX3As1+xxo7NJCc7Zd7Gfs1+fMOXPwKGt02mr+Nje
    +nF9XMfdGPP0IcK9lzkVeEdH2JP41pS2SmrMwsTE/eGv9pFEnnmRxeuFcwCg1RYc
    f8freOk8v68+J99mCUUAGl8EANePcxWbRYgH5KulTzE5nYIt9WBn247T7goE3yn1
    R2VddSXXGhs0byRxXpNAcrysyGshIQY0nnZSB5AUt27tZJucoT1p/BtBFQ6hLCQe
    kaIRL0sdXrVJZn3/Q1G7vJWD6wwS35dro5PsYYPDI+qL1tISlWHZNQ2Y6jGdqhc4
    Len0A/4nV78yB7cLvHksxwvbdtVVn8eVo1B2U+/b4cXhevHAl8AmNN+usmEodxxe
    8FYWV8jY323xiYSMrCpYT9FuD3r2qORMOGWpg0zth6BkhdgH1z2i7koKkGIfc4mV
    6oea3ep5uaU82r1sGe7/cVzMGUwzZq9xizwODfbmSW6E+vdAjLQgT2xpdmVyIEJy
    YXVuIDxvYnJhdW5AdW5zYW5lLm9yZz6IXwQTEQIAHwIbAwQLBwMCAxUCAwMWAgEC
    HgECF4ACGQEFAj4YDoEACgkQwLFrfe8lsbr7rgCg1K0Zl8CPgrQG7BEaZqzSiIM6
    IZAAnjz5ifN2xHJSOJiLYloidZsikNFQtCBPbGl2ZXIgQnJhdW4gPG9icmF1bkBv
    YnJhdW4ubmV0PohcBBMRAgAcBQI9Y1sqAhsDBAsHAwIDFQIDAxYCAQIeAQIXgAAK
    CRDAsWt97yWxuv0CAJ9lUDzKKdaCp/8mJjlXLjlSZaaJTgCfXIqQr58p5MSFkVdL
    hLbK1P1l8FK0IU9saXZlciBCcmF1biA8b2JyYXVuQGZyZWVic2Qub3JnPohcBBMR
    AgAcBQI9Y1tFAhsDBAsHAwIDFQIDAxYCAQIeAQIXgAAKCRDAsWt97yWxukHLAJ9u
    oP9cIdBXldt7XfQ/5xK2fUsHPgCdFIR7cK0l0spO2xjzbzhoPPVShbq0IU9saXZl
    ciBCcmF1biA8b2JyYXVuQGhhc2tlbGwub3JnPoheBBMRAgAeBQJAViQBAhsDBgsJ
    CAcDAgMVAgMDFgIBAh4BAheAAAoJEMCxa33vJbG6MhIAoJ3dqHVStQdGzLPTGbtP
    Zq8wG0jmAKCzMo+si/LFBZAnOqYN3g2yVOOc6rkBDQQ69afaEAQAlaNzX3ql+XfL
    obAAIWW/TdY9Yh6r0fFFoK2Mdt6vungWhzSWb63DprREXyW1k6QbPQxL+pAfeCYZ
    oXQuNBmsUpO1Xn6ViEGRd53D07sNJfBrE/5w3hwL+c9lWSJlt0vHKzFtPAmqenBd
    fA0fs9afiew2sHhk/jz/FAwWcnF4aC8AAwUD/0upFaHEZsf8sVmSEew5tAtZ6i3x
    zaBjhaDv3sYobza57S8mXYhscK+nNHx3bP036wJ0z8ypqb5oCqGzWUkj9OpYZs0u
    Tbpla/MoCI9N1Ch8LfQkWPuvYjHF6LSY3wpZKaNWfeZPCmMT5XPqjuxDB1pCmnAU
    OizLyimZU2Y8tfQWiEYEGBECAAYFAjr1p9oACgkQwLFrfe8lsbqmfgCffgEhvau1
    1EUoZmkdnzUg2rbKYnQAn1fVK9TjWnJWQ/YDOn9hmMZWYjib
    =wrrS
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.30. Max Brazhnikov `<makc@FreeBSD.org>`

    pub   1024D/ACB3CD12 2008-08-18
          Key fingerprint = 4BAA 200E 720A 0BD1 7BB0  9DFD FBD9 08C2 ACB3 CD12
    uid                  Max Brazhnikov <makc@FreeBSD.org>
    uid                  Max Brazhnikov <makc@issp.ac.ru>
    sub   1024g/5FAA4088 2008-08-18

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEipViERBACsCTYd7As236qQw4dG/xB8p3XbN7pFP/C4yjRJak2QZfsOQ4mR
    7liBgXc0FevU6FQOW4XrcRbQeGFlRE5pb3idwhTKNc58TEifGM2s2ZGgRrR0aIF+
    9s5ZbVNp75FgSsN+9ksAOmz1nSj+M9Ikz464YvA3bHvKP8QQCpPpBgiuSwCg5IBV
    XSvep/e502PHqsiP8H1zGjMD/0xDwDdLfnN1R5tuNDfZEN09BSRlYYFPmMlP177i
    DBCF/2gF1bQ7KL42qBCr49ngVMAEAUlmZwBIN0XvfGe0KWDvc4G/CYqcOiWhbBEA
    pvtJZHE1C/kIRFS/IiM7BVmkdVnn1MzJrGSVPAF85e/iyc1K05C/qCuulqm1aLpf
    8dOeBACDvyvk2uE7R11REnKa6FKvzS2X32YclSM2sApwl+LnFO9eT500Rxzy9ldP
    jKlKR/dO0DwUKxnUO6DOHAEZzvutx1f6ZJksXk/0OsSNkn7+TIt3pKb10udpcCag
    k/ik+o7v+2XB7BlydRBPwcaJE4fq+CWyAbgRfKROetwfTI3ItrQgTWF4IEJyYXpo
    bmlrb3YgPG1ha2NAaXNzcC5hYy5ydT6IYAQTEQIAIAUCSKlWIQIbIwYLCQgHAwIE
    FQIIAwQWAgMBAh4BAheAAAoJEPvZCMKss80S1+cAn0+WKUu5TxrXSF4N8WlRK0mU
    1tcdAJ9Fcv54PisOdQiVUSIw25LqSqWyJbQhTWF4IEJyYXpobmlrb3YgPG1ha2NA
    RnJlZUJTRC5vcmc+iGAEExECACAFAkiyz/wCGyMGCwkIBwMCBBUCCAMEFgIDAQIe
    AQIXgAAKCRD72QjCrLPNEjtdAJ4tcsvvos2CoXmZsTJxuVF0RaEwigCdHgBapPWu
    MPyv9FLRzdWelOfZ3m+5AQ0ESKlWIRAEAOzibN5tPXiGKAHPwaQgnVQiaKv/7HUr
    FVfqycyXJC0/nmJ59UNpJ+0Y4GDwDRYqWqGyyd9diKAUomUwbIuQ71BUibmIZQS0
    3v0jgcfnJAhgz7EFGewgQLHsYwzwTDtPNQCqxDEUwDLKla72ksuodqzx92Dj6SSP
    AfFN/6B2bvQbAAMGA/9XFhkt0SAqXV09CXs3QuHdzuJ0PLadaz31bWITmSLqW2FU
    /EwXt1615g/E/qIwa1PzjZT8JQDAEHKbT5XPXtTzvOAUp8JK2wW9P6JQ6YPT14Vy
    /9PiMvLThxNY3zWjWChWuEf8zohd922OSqlSE8vgOm0H7XUe480/FeP3RP1EKohJ
    BBgRAgAJBQJIqVYhAhsMAAoJEPvZCMKss80StqIAoKpjMeYK0fSi6GpfIaojuz59
    eHHiAJ9ws2o67xPKbWgdqMxn4MfLK+ojbg==
    =m+ns
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.31. Jonathan M. Bresler `<jmb@FreeBSD.org>`

    pub  1024R/97E638DD 1996-06-05 Jonathan M. Bresler <jmb@Bresler.org>
         Key fingerprint = 31 57 41 56 06 C1 40 13  C5 1C E3 E5 DC 62 0E FB
    uid                            Jonathan M. Bresler <jmb@FreeBSD.ORG>
    uid                            Jonathan M. Bresler
    uid                            Jonathan M. Bresler <Jonathan.Bresler@USi.net>
    uid                            Jonathan M. Bresler <jmb@Frb.GOV>

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.0.6 (FreeBSD)
    Comment: For info see http://www.gnupg.org

    [encoded data, 6500 characters]
    pX25BMHqkEMHAxahVagzguPetlTIHxHGRSH3lg==
    =ttzj
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.32. Antoine Brodin `<antoine@FreeBSD.org>`

    pub   1024D/50CC2671 2008-02-03
          Key fingerprint = F3F7 72F0 9C4C 9E56 4BE9  44EA 1B80 31F3 50CC 2671
    uid                  Antoine Brodin <antoine@FreeBSD.org>
    sub   2048g/6F4AFBE5 2008-02-03

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEelsqARBAC37tcs27BitWt9YeIYmpRNgtRH/ndAm8ecJK+7IuEqo1t9IglY
    Uy+lI1xW1H4LrIbmSKmwfg3Gj3lm+12avQ8mf0vVbl2RVxfOQZY2C127Qv6Mg/Ox
    Fwxb7UCWzYi+XAf5XVHyzKLaLq/S56serWDX+mGY83kLhVKXy7pL98bwewCgtr1D
    miY3vAu1NMoWPuZ/2kvLLh8D/i1Zisp0EE5B4QjRFbaSUzfk3tImTKLQtbj4F3S2
    Zo4hh3IRYLGq2OMJ+gH5c5KXMhaxqiK8XCO1pHNdCyaL1PZDW9s0sxPiVv5DDxHU
    Lm1BXyTIJyuAC8KVnMWIfHVoqIX45m0Br6IFyiHU3CFBSsarkC8088HViilTYGd1
    8InNA/4+wVDMqnht2/YeMqyYevKOGw69Dqe+1jeTNOg7h/1EOL2Sytg9EIfyTf71
    IxJAhsKU1ibjAMubERoTN16rPgTx4yrDtRSdfbmnHxrreih6PKsbiaKy76cnYaxz
    sz4VontIIaH+Ye+VmVIQsBS/QIBBki0j9YAzNDcJqCdWKcoeb7QkQW50b2luZSBC
    cm9kaW4gPGFudG9pbmVARnJlZUJTRC5vcmc+iGAEExECACAFAkelsqACGwMGCwkI
    BwMCBBUCCAMEFgIDAQIeAQIXgAAKCRAbgDHzUMwmcdHwAKCrHa3q1ixEdvmpU1Ny
    2SpQrmvslgCfef8t/hiaMLSuyZEsjR1x8cp6hiK5Ag0ER6WyoBAIAJScQspDgp5D
    P/K1ZdT86Ux7Nv2UhZilYF0LPkvZBdfTC80RpjrUvz1m8ZObbCsUO5Ag0j3+Wtms
    6CVaQqfT2RoRyjcnNVJGadWqKmOWVkvZYzHQPl8SZNENYurFFhfy4MCxXf5drkH3
    CV5QqY1onhuvsfl69UZ54e6X3+DjQ3KdtqyyqUez7Qe20ZdIcgC43HcEuqAbAOxm
    /K0zDNvHpjwgleNoFBd8GZfD/biD9EMnhiCBq5rS8Jqh73e9wLtkMfssQunA7ELx
    ZVuC7M5dBBMjRUp0dswAKAgdcaLA0D1NGUNSno35Rzur7sluufivfjLwn+qRLRBM
    FPR+ggIO/Y8AAwUIAIBR74TtznV04mci4vHDds4HX0RI/hxawivtanEAGZvV54hS
    XUnVqpIVgTqKCtmS3gqoQMQBf1+25Rq7UJlVNl4/AoLcl9ZfR140hTSd888OwcB2
    MAHd9CgUXjTHcFQj8tXFhPiWY7SfFwheLDFJUgCqB/ilgPf1XGOYuZfvBxkyXd8p
    TC2sx4iFSUBbY4S6UZN8uokpRZDbTHUPgLHAoOg1lzrzUvZuknEzbcBDgQoVwLWD
    9UCZxl1wxly6oZkq+uggXg7zxWuE5CMdWtz9/FA3CRtRBTqZnHrMM9hlHGgxTYan
    bBTs793WWsKf8rhTRqNDqQdN07YxsmTi3129OSeISQQYEQIACQUCR6WyoAIbDAAK
    CRAbgDHzUMwmcYHKAJ0c3chle4XcJ5c7+0odRWmOZ8m0IwCgndOwp3kjZUZFbAu0
    AxHti2KSFZc=
    =HznU
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.33. Diane Bruce `<db@FreeBSD.org>`

    pub   1024D/E08F5B15 2007-01-18
          Key fingerprint = A5FB 296B 5771 C1CD 6183  0FAB 77FF DCBE E08F 5B15
    uid                  Diane Bruce <db@db.net>
    uid                  Diane Bruce <db@FreeBSD.org>
    sub   2048g/73281702 2007-01-18

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEWvrjsRBADPHOAUGtAny5WUa+5+6EFo83DOSCxMWqECyfgGcX0fLdQFTlNC
    oQwjuDPJoUX3l2U8+Pr0PbCnU9dAv/nfR4mefBYaSYKrOkKR2JMCUu6Z551wJIOo
    G65q410cwz3scHJ9m52iGRbZoz99+AjGymA/V4zHYV3phF+hXJKamS/DLwCghPo6
    Osexk+odFXJ+Yq8fz9MdvaMEAKPsHsY9gWyzmVtQ8toM3yudoZcjILTsNbX7oDM4
    Q0MWURvY1JkyH5vQ0l/BbJH50CGzFHb1CvDHDyR9wx74U4q58eRnx+HzSC/UukBT
    e/SOBwXM2MHv0D6fHgm7Tepwiy2uc7St5SawiJXEW5XdY2bleovVDanPvFhv2pSz
    z56IA/9O+rsGqWmgutoU97HyoIrHkY1aMAbcVkBocooeioXdm+V4AF+nlIp3pZQ+
    7YS0X7JkyQTRoxvGsGawjktbDGAzBFTYazAS2eKhBE3wyWME/14VR1OVG6EAvli+
    fL4tVUi3xBHDdb8Pd3PzWt1CduBW6RIs2NCrv5baMO35RQo71bQcRGlhbmUgQnJ1
    Y2UgPGRiQEZyZWVCU0Qub3JnPohgBBMRAgAgBQJFr647AhsDBgsJCAcDAgQVAggD
    BBYCAwECHgECF4AACgkQd//cvuCPWxUTzwCfcKKh+vsTusry/Ait8DtdpUse8YMA
    n2URXcmflBA8OQ1JrFFjiW/5N3iwtBdEaWFuZSBCcnVjZSA8ZGJAZGIubmV0Pohg
    BBMRAgAgBQJFr7DmAhsDBgsJCAcDAgQVAggDBBYCAwECHgECF4AACgkQd//cvuCP
    WxVIvwCdFGub9b6qt+L50ePcYnLy5sthiZIAn3PPdYTUPdXV6DfOtKFPcx6ArSHm
    uQINBEWvrlEQCAC5N9u/zG1ahYsV+kiytZ5Mgt+I+yi5aSCAQPThSGXsVptfZRW6
    0LVElbLL2v+r6ETRK92QrtZLSqM51sKWY+lyJfxRjuW2AsVAL6/NgV7bTuYs2etL
    vo347XX2ff7DrA07mGOAPrer9naBlaLPwWggWO9bU8HzphbL+kI15T0aUXLwIdeM
    LjHOQAypJ9iFsv/OY2A7epAw8zK4LCPA0boBQY6CKcFV9gxDl/kmsqobvBeyAru2
    jFAgeFytIJsP3O1kA1aKEFDolcoPwlVUQiAsFvNtUSX8k8r1HKfQpnjuSCXLU7jE
    82X5VWSAcoX/PyaXDY7AmHJFLpZGyGIs5sLrAAMFCACQPyOQmX0iDjJW8OCpmgE5
    yDv3Jedc/w4546OLOC4aT1wclNZh+iHR2meuFgm6J1bv9h78R6dCkGDJeh8MTCtn
    d9J/IDc/QElCqqndnn5XmXjtGqukXIlIg7iGF71T74K/Nb0Lepb9p9BQpiNqudHJ
    L+KqSAjFT03vfpJab65EpyeOq1ZIswDIWMRb2BFQs/El8rX8cXOSzTrKfWSamRw/
    6l1aBwsmqi8sW23GSBYCd7FKQADVKIu7EN68QT6Diyd9CB0s4U2DjHrr7snncyUF
    A9c6FTX+tIE8NXJ7ku40g7T0WnX8jpuoagdWpjlu/NS2cgaK3n8MwrL5kYYLc6+O
    iEkEGBECAAkFAkWvrlECGwwACgkQd//cvuCPWxWcygCbBuZU/pJ2tZXVsUrFSRts
    8Cvwa9MAn25/zFXyrtEDo+1imX3MjKZrdJC/
    =vYnO
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.34. Christian Brüffer `<brueffer@FreeBSD.org>`

    pub  1024D/A0ED982D 2002-10-14 Christian Brueffer <chris@unixpages.org>
         Key fingerprint = A5C8 2099 19FF AACA F41B  B29B 6C76 178C A0ED 982D
    uid                            Christian Brueffer <brueffer@hitnet.rwth-aachen.de>
    uid                            Christian Brueffer <brueffer@FreeBSD.org>
    sub  4096g/1DCC100F 2002-10-14

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    [encoded data, 75010 characters]
    otqKGK6X6iceCg==
    =yns3
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.35. Markus Brüffer `<markus@FreeBSD.org>`

    pub   1024D/78F8A8D4 2002-10-21
          Key fingerprint = 3F9B EBE8 F290 E5CC 1447  8760 D48D 1072 78F8 A8D4
    uid                  Markus Brueffer <markus@brueffer.de>
    uid                  Markus Brueffer <buff@hitnet.rwth-aachen.de>
    uid                  Markus Brueffer <mbrueffer@mi.rwth-aachen.de>
    uid                  Markus Brueffer <markus@FreeBSD.org>
    sub   4096g/B7E5C7B6 2002-10-21

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBD20hPARBADzumxDOkMdttpWKphTxFC/j0+MJRW5UmFjd43c301LEMFSJMkv
    06EukQSOVWGyGL70v/4NWx25BiLhLDIb4feE5SZccQTnjxXYCjkQ4LfcolqTAzga
    L3GLNF356vKLQPlv6J5ah3vdZHa8Djh8q0s6CHAPi2rhEVbO2x7IcRW6MwCg/0+E
    KmRtdsifDJ00iBEMpJAApccD/As/bzVXI4FZwjwIMdep9+He7rwL/xGK+ZmRUEoN
    iiIxfd2oOkwDXZuFqTGftONd9Apao+FefTbcpEfv7sBVzHCJBn2bTr5mTjDwuA8v
    hGQ/7+QyKIFPmsL5KZYPkBcRA195UBSdwEPdERGH+aWvDTVJieyetAiD78WTd5ez
    T0V1BADwVnc1ABRMz6e8HK+78G/4vMHKPPEC7YbSmOo25FKR7XimUIlvGfj+CNO5
    w6QSDJaIRo9yOCPEacMe91NeZskPlEEXN/KIOlV11vTZ/pVDMETnzdarNo2B7J2K
    4HQzTYBzfFHdCrKP0tExSCy0iN2lWzSI57S9o8YxgnwrmuJPN7QtTWFya3VzIEJy
    dWVmZmVyIDxicnVlZmZlckBwaG9lbml4LXN5c3RlbXMuZGU+iEkEMBECAAkFAkTZ
    3xQCHSAACgkQ1I0Qcnj4qNRBCwCglhvWAuZ+9bWZ64EXP9wHLiQYT1sAoPGL96ae
    YBK0wnq1TWjE9GPTYFXAiFUEEBECABUICwkIBwMCAQoFGwMAAAAFAkTZzskACgkQ
    1I0Qcnj4qNTguQCdHFTLRplJE7g607rCVSxDCefYw8QAoIMaWQv0Iflm5aAR0F47
    3WrjQplWiEYEExECAAYFAj20imoACgkQbHYXjKDtmC1WawCfUZkir7Dy7wP3hiNA
    X8yo78CpuFYAoMJtyYVOf8fayYICxujAO3zU2pjViEwEEBECAAwFAj53axIFAwHi
    hQAACgkQT4OMtyagqBYphwCdFiRae7gCvrB/jFA8ceyXaEP44doAnj41sLHZFGWI
    ZUmQmNTiNfZXYoQQiEwEEBECAAwFAj53IYwFAwHihQAACgkQdROiNhMQLPXCqgCf
    SgcJhp/6tnpjypjXWH9t6uKHg+MAoMYnXWc7iXVFvi99BonJW15V63uptCxNYXJr
    dXMgQnJ1ZWZmZXIgPGJ1ZmZAaGl0bmV0LnJ3dGgtYWFjaGVuLmRlPohPBBARAgAP
    BQI9tIVmCAsJCAcDAgEKAAoJENSNEHJ4+KjUCJQAoMsgaMOze2p3Iaz0/fK/Xmeb
    654IAKCDmJpex0C61bzfczSdaxXPPyIbJIhGBBMRAgAGBQI9tIpzAAoJEGx2F4yg
    7Zgt0WUAn1WbgrMzw02LdGQQLBMzY5CYXKxTAJ9uvEu5kTB1jFhMa/rM7r04dipM
    cYhMBBARAgAMBQI+d2sSBQMB4oUAAAoJEE+DjLcmoKgWxiwAoPKtxw1TpXp/6KTr
    YZD67bOTJA8+AKDzxW0tIl7ij/nnNE9gob7cSeCfuohMBBARAgAMBQI+dyGMBQMB
    4oUAAAoJEHUTojYTECz1ZIwAoIW7tPHgp/AAUso8L1C62O2WF4l6AJ9jsLQ7cBnL
    81TJ74C3Zey4iU0PNLQtTWFya3VzIEJydWVmZmVyIDxtYnJ1ZWZmZXJAbWkucnd0
    aC1hYWNoZW4uZGU+iFwEExECABwFAj4kssACGwMECwcDAgMVAgMDFgIBAh4BAheA
    AAoJENSNEHJ4+KjUzWsAoMhZqjpybn0KgRf8Br3eExRIbpcfAKC+OlKaKZLRSgbz
    +6Pig+YQiPnOK4hGBBMRAgAGBQI+JLiDAAoJEGx2F4yg7Zgt9j4AoPUVdFwcegkz
    /rAuVD5T3psicMzIAKDgKHpuYGnx9WLeK0fcIS9uAMrVzLQkTWFya3VzIEJydWVm
    ZmVyIDxtYXJrdXNARnJlZUJTRC5vcmc+iF4EExECAB4FAkA33goCGwMGCwkIBwMC
    AxUCAwMWAgECHgECF4AACgkQ1I0Qcnj4qNSSjgCdHF9CzCm9j6uX5aCpJ5Cg2qG7
    ktMAoMhccEzyNtzKGskfzazD1oTJdTjNiEYEExECAAYFAkA34C4ACgkQbHYXjKDt
    mC1PfwCg5bAwdeUZ/YgXy9UF4qpEX6fH6BEAoIS2DnUx4qlcuuhBUp9RXnST2G2k
    tCRNYXJrdXMgQnJ1ZWZmZXIgPG1hcmt1c0BicnVlZmZlci5kZT6IYQQTEQIAIQIb
    AwYLCQgHAwIDFQIDAxYCAQIeAQIXgAUCRNnO0QIZAQAKCRDUjRByePio1PgQAKD0
    YBsRWZpJv+i8MS5yTzympEWFOwCg9nEzWeocm8GIKu/EWjoCX+G1LOiIRgQTEQIA
    BgUCQDfgMAAKCRBsdheMoO2YLRWlAJoCSpQjOyb69ZXMoDKx7naBi5aNAQCg+Zl9
    IW0wDSUhTsHnwOf+Tf5sACG5BA0EPbSE8BAQAPkYoH5aBmF6Q5CV3AVsh4bsYezN
    RR8O2OCjecbJ3HoLrOQ/40aUtjBKU9d8AhZIgLUV5SmZqZ8HdNP/46HFliBOmGW4
    2A3uEF2rthccUdhQyiJXQym+lehWKzh4XAvb+ExN1eOqRsz7zhfoKp0UYeOEqU/R
    g4Soebbvj6dDRgjGzB13VyQ4SuLE8OiOE2eXTpITYfbb6yUOF/32mPfIfHmwch04
    dfv2wXPEgxEmK0Ngw+Po1gr9oSgmC66prrNlD6IAUwGgfNaroxIe+g8qzh90hE/K
    8xfzpEDp19J3tkItAjbBJstoXp18mAkKjX4t7eRdefXUkk+bGI78KqdLfDL2Qle3
    CH8IF3KiutapQvMF6PlTETlPtvFuuUs4INoBp1ajFOmPQFXz0AfGy0OplK33TGSG
    SfgMg71l6RfUodNQ+PVZX9x2Uk89PY3bzpnhV5JZzf24rnRPxfx2vIPFRzBhznzJ
    Zv8V+bv9kV7HAarTW56NoKVyOtQa8L9GAFgr5fSI/VhOSdvNILSd5JEHNmszbDgN
    RR0PfIizHHxbLY7288kjwEPwpVsYjY67VYy4XTjTNP18F1dDox0YbN4zISy1Kv88
    4bEpQBgRjXyEpwpy1obEAxnIByl6ypUM2Zafq9AKUJsCRtMIPWakXUGfnHy9iUsi
    GSa6q6Jew1XrPdYXAAICD/9aiTfaH5Vs6Ms4bUQIeOLvadkQy4eVVKIXehBRAJ0X
    SVed1BNBwyBPUtuphL2BvX7Vx69418nwd5heQMAaWjps91W/3tXq6IseBlVGQcZ/
    K3ICoafLYS8kp5i5ksX+2jvCF/H4KtDzODYBQOnC2TgVY3q/UncJDKjOS0Rfellh
    a/PI4wd8k0i2PKB3iqZ2kgetMD7ioU9hSQz2UHSsx3t88vj+QhuXLA/PsIBso8py
    X/6gxAUhGZKFMOJbqAowUXxQjyChVi9Rr08tM4PvDN2SD3XYhODrCLeNuGeKnoYG
    3HkX09xJglxLUHsTU6ZHx7EK+vkEdTd74RzzFf4wJnMPnT3TKNX1u5P+DOZ5bjBZ
    2O0ze3qLk9fBZxpiP2ev7GDMnQAeqb8Ox7lmGFUH1UARXhaicIhWTnfq3kJsCY4a
    DI7yHGu0Q1pg/R7V2ZGLgBTamItb6mUWGCBE5AF6AYVJQ1UU4We4FAfMmaiEb2ZE
    Gi60ff1jAR1PxAnEDHvb316Wv5GXRf3r6EZUQyuQSnWiIhgCs3EqbBUzbZvCVtHZ
    vLX7HZ10HzpHEdwNVpFAurUyP1DgRCCt1qKeDLui+t4N/WgP1EdQXpkmy+79Kcq4
    ny+HLaMgYuKSk+khJhA/l7xfMk3JNwlp1adMS8/FgScU/NS629UPsK0fJ1Mwlk5Z
    w4hMBBgRAgAMBQI9tITwBRsMAAAAAAoJENSNEHJ4+KjURHIAniigU3LNmmT0gemQ
    7wb7L8No/lEcAKCDziXLMavHZGnIuNydVv7D1XEllA==
    =rJ5H
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.36. Oleg Bulyzhin `<oleg@FreeBSD.org>`

    pub   1024D/78CE105F 2004-02-06
          Key fingerprint = 98CC 3E66 26DE 50A8 DBC4  EB27 AF22 DCEF 78CE 105F
    uid                  Oleg Bulyzhin <oleg@FreeBSD.org>
    uid                  Oleg Bulyzhin <oleg@rinet.ru>
    sub   1024g/F747C159 2004-02-06

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEAjnDYRBACecNDd39vZ9wnodFlATK+xvhlyX4M3FBEV34t9eVZtJz4916yb
    nLZmHwY6awt+nm6FGciSPucfu7stBCqvPURWEThJgAyXbxEVNyXmXrZ2F5OyNMyM
    EcbuqLZTjYxxN5mxUYswtiNDmdWn+Ivmw46wTOl5Pu+B7W2KVl8mwwbAjwCgl9hA
    puTWWN0zFklDJIuLx9eVxnsEAI+QaACe8H2l3XFpNkp6n680ZlW7FBZDDOYjCS4z
    nhFg7Bca74t6vnn5Q4miLnDDyOPkZqMBD2nLUkcK/kMfe5uqDUWf/i6sFDwv7d6I
    9Ag4tUWLkhxAqaqomesfI2yS4o+QGTJgQdGU3IUrOnMJD7Ascwj7304lYuqYcaqT
    KQHSA/9eTg26Ihn9uBpGit+slgkmTHmKgAbg7IaSHSEYRbpmnc0Je794zeWns/oI
    vAyGNxEFpPQMVrSXHnFmK9AOcLcfssE24a3zw7So33asH2Ha9yYBrfKGrTCPZAsa
    uUGrKbGmXQ0oXDjjqV4anvC2QI5pEJvMbHJ+Xyq5xQN73ttJxrQdT2xlZyBCdWx5
    emhpbiA8b2xlZ0ByaW5ldC5ydT6IXgQTEQIAHgUCQCOcNgIbAwYLCQgHAwIDFQID
    AxYCAQIeAQIXgAAKCRCvItzveM4QXzXVAJ9RD4kKNcvV8UmuBM66osVfZ/7yIwCg
    htVf/ZfKdcob1zQsBNNpmzkpduKIRgQTEQIABgUCQCOgsQAKCRD9LjUgMMgeateB
    AKC0iX0NNspa5EnBYGE/eEe+LxRs6ACfUqA0s50e2goJznaIcLTgZXtDECGIRgQT
    EQIABgUCQDIZWwAKCRCF1FBFa2kbA7N9AKCbDyp3g6vRN7dQKBb35s7gLp8yIwCd
    EH/ivmrxZSaHlrOMJjt6rnmuFqa0IE9sZWcgQnVseXpoaW4gPG9sZWdARnJlZUJT
    RC5vcmc+iGAEExECACAFAkOMPS0CGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK
    CRCvItzveM4QX+tfAKCLk3zeTyzbbN6TqYpnqocno4H9kACePQaaDytLX+zk4plw
    sywqPLv67SG5AQ0EQCOcNxAEAIUR6Uj/bLAu0/FSGDSCXfjuThVT1lh1rCLQkbBw
    TxNiwHPHHSQRa654aoYbQdi9x6M7fzE6Uzmdj1Gs/UBYZhhsrlkL+Ls/xuhe3Kh3
    E6lho11qPhjYXmFHk42VhtVlOcikZ/Azgqgycfql81H3bKWv6jA0el9SnX4yk5qf
    tgZTAAMFA/9T7/ty76bNeP3/LcY9ZL9KYWB8v8pJ9jEt/RfBXB0GTuV/H+bzTjSc
    PwhT8Fam9Fo+r02tUJfqA+XlOJf6IXPlLPRfvzHhiBJSBPuMvB6vYs5zrlUzkgNE
    VFHBr+TxpUWBq4ZtI9K8YUbPD+s86irYn9fHlnj9qnYsod3ySvU0xYhJBBgRAgAJ
    BQJAI5w3AhsMAAoJEK8i3O94zhBfFzAAnAg+W9rkVVdYu33hNqpX8E1t2kShAJwK
    V8DuSaXJtEgVE7Wp5CeArqtwUg==
    =/2pb
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.37. Michael Bushkov `<bushman@FreeBSD.org>`

    pub   1024D/F694C6E4 2007-03-11 [expires: 2008-03-10]
          Key fingerprint = 4278 4392 BF6B 2864 C48E  0FA9 7216 C73C F694 C6E4
    uid                  Michael Bushkov <bushman@rsu.ru>
    uid                  Michael Bushkov <bushman@freebsd.org>
    sub   2048g/5A783997 2007-03-11 [expires: 2008-03-10]

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEXzleYRBADIqilbqBfzstvMByOY3QlvQD9QIGQLwZbziOMByQPwgzgBFk6x
    OA7NOfSKONPTsLtIOSc+CbuyEfw5jJiXsQ3Ox71Zp2JTra/bTim/WwJKC5Kc+egl
    CD6KO7GMTCBb102m2x97G+rNjGS8n7Uf7ITgoj9QtxBjpAC3K1ZcPoAcjwCgobcT
    q5MUrCqPHrnlZ87BnbT/3m0D/15hcV+qndPCShIqFTYbTSG18X7lBNTONZXmCm04
    5dRcJrz4qLvsCYkBrmOCrKbYViQCQWiT7/G3Jzc+WtGFirYibU1TxBprZuP99gX0
    Hea3gvgodlje7eq3Dz7Hx9uFgN8pfw2wWlEgdkuYk72s3lSJN6+TGWzXuWnRYYJ1
    H8XtBACpByr9qcCaJ9yNAwDbDZhj03zSeZoIQz6d/3tDv7SkzDlVyxErJCO7CiHg
    JlxN0+paX0gW06xkLmwSESerJVbxEIoejdkdxebqPEIQN+9Se6Q2tkefMWd93IwL
    MP8sXgUBE6PEmFZTwI1/Av+vR7aI1pPk+yIrKTV2KyC7yCULMrQlTWljaGFlbCBC
    dXNoa292IDxidXNobWFuQGZyZWVic2Qub3JnPohmBBMRAgAmBQJF85XmAhsDBQkB
    4TOABgsJCAcDAgQVAggDBBYCAwECHgECF4AACgkQchbHPPaUxuSKCQCdEAIOx9JT
    lAxIOwL6ApsukCI1bgcAnjkybnn6t4WWYy7IvmwMMJJ17oe0tCBNaWNoYWVsIEJ1
    c2hrb3YgPGJ1c2htYW5AcnN1LnJ1PohmBBMRAgAmBQJF85xpAhsDBQkB4TOABgsJ
    CAcDAgQVAggDBBYCAwECHgECF4AACgkQchbHPPaUxuS8xgCgjJ4lLhI3wDP8Rnhv
    Iy9UW5BuBEYAoI22XNE3OHvBdsmUyUvVji8yKt4auQINBEXzlgAQCADnAWwYquUZ
    mbrZ9/UO4abD7Nm0vipplm/O078SMdonir+HKWZStjuvIHhpPDGI0wCpg/v24B3w
    QVGiQhXWRL1cbvjDmiQG7GFdG6u4c1+2S6Evx+fp5DCjUMaoygd/KwF5tmxE5M2R
    7SOYueuuxcDiYi4qJs9lroNxnwG2/VkrcPxlek1QbRVjs+TuRnzTaUzXbU7kli6y
    PUhBucf6nB0cPHG6VVn8N0Kki+HBaQjYOxtBCO2B5E0uRq0Y25l9Vt9s/0TfYnYb
    E0/sLj0XSBu8WWmXtW7QrtLPN0Tb6XrTeIaWW7HLy1ACVlzniu5oeumVKiW5nsW4
    uJ/6kF5Fuu2PAAMFCADNuQ0Irmhub799B7h+FJVtNu1IxptmvJnD/RoWXhAtVo79
    c176MEqS/8tghzdq/zXhr4DPMiTDWf1p4ynKFFkpQaWkHO28cvu3rc0tdpkI2d+s
    zKT6fFNn3kqQ7Eq5xgijSK8+aTWoUhqFvxkhLIcColuPK2TmQ+uIxjtu62lU52eZ
    DDePyHFGVWqtkZ99k1vGxZRf+vVXaKTBkGY3Pek04knpP5ROGA+JjL/Ew5o4SWfn
    FeD9aJ+xtZ9VqTUyl+U4XwIYlRcWzbqsbGp0D0jgry5Xhiggngd7xtNSB9/44HuU
    C5EQWVi35HKNdXMq4wsOMG68DCTE3XOABa5yPY7TiE8EGBECAA8FAkXzlgACGwwF
    CQHhM4AACgkQchbHPPaUxuQTrQCcCfrtwSXFegD9D0DpYWa6iIy9glIAniDIOvRb
    4L8/nn1Nbu+PBNHamCHi
    =zD+p
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.38. Jayachandran C. `<jchandra@FreeBSD.org>`

    pub   1024D/3316E465 2010-05-19
          Key fingerprint = 320B DB08 4FE3 BCFD 60AF  E4DB F486 015F 3316 E465
    uid                  Jayachandran C. <jchandra@freebsd.org>
    sub   2048g/1F7755F9 2010-05-19

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEv0XOgRBAC9mFTzSKBVumlXJwWdkt7HvSRKo64Zs7BO/tYzt4dWVIzWwUC/
    Z/Ns/X3Plb+sXp7mcvs+oLKiHw3qrRT5wPbef3V9hFfZiKdOfmeOv5fx1sIXejBC
    Cqq5ocAoq0bqf1S9i7vnuqfyH+9SRPOv0O6EnKCU+7sVMFXAuxDhm1+u/wCgwRj3
    tNFbsptDZ/K5SMLM44ldK98EAKpSRVSMHrI/nxXvrNcPhedsC9MXyMOYE/q1la5k
    b+qNrD9QCJRwbz1LvoJGeOzEmtmZ3afT048Uks+RE03w+BhqJnuFgpAKqA39Fop0
    MBvDuZ7Wy3iigebX35PAQ3h4FhwDTzsu9aEg2Iv/WksDqluQJcMkt8sn5NffhZho
    z726A/0dPVvHy0dart8LHKfou07u8y5/950UVITjGlQJ3RGvwQV7aPEjgpJQlQqR
    BMr3TOOJ3YGHY6xkaJk1fijb8MpSlihIr+Lyvhu8xVb3GCrPCh4Bff8fO35+wpBO
    62p09dL4mJcD1mELJhMAMPpqXAXD2Ho76/RQ1yZlmH/xyAPTg7QmSmF5YWNoYW5k
    cmFuIEMuIDxqY2hhbmRyYUBmcmVlYnNkLm9yZz6IYAQTEQIAIAUCS/Rc6AIbAwYL
    CQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJEPSGAV8zFuRlnKEAoKcsMnIQFgek8hHO
    6a5pFO2DBto9AJ9GLTOc3OBdX1oFFQh/rsRYKPkMIbkCDQRL9FzoEAgAk8FWde22
    yzxXI/qWRo+o6Ptm9Hae4reggr0boqeQCnV4ksLd01s7tJoaGlogi9OTLrq+OV4E
    CvkcKKHSltijMsITEwF0BwfrR1C1I59yUYABtGkw6f3bBApHNcDhl6dpcHymP8CM
    PiBrx5s63ja/CAKFaScUCUe7A5vYK91BwAJJ/IK9UONU9TUyimRRv2C86rQWV15N
    R8WE55iMdmFsu/Rkv5P3IPNzaIjcvY19iJOuxfeDTiKDp9j1QWwUOShrAHXa/Cra
    JvcNo4Iu3VeLKpaFW5zBvIbfQCa8LfRwfLPSEM+tCk9nH5zXSvwf6dDWvN66oo1j
    p2eAjrUEFnfqOwADBQf/VGVl9qx/d8NMjhMdaV6qvq8DfHy4I/BXQFERgKkFfrAd
    n1oGEJCT1fHtJNN79nCbyZ2dlfKqr6+Xcdy7RKInGHs9DwK4KfVU5dA5L3f81wZs
    OoMNuk64kjTAN867PzWdv7o+2seSa/9phsWEpCD+9qtRLiOcIZ8xeoecBS3iS3mp
    aT1HZuMLFMm8XEJSA4l8QfupBigr7Gq8z0ChwfMCZsVlVx3MtrTmuVlPnbJ4g0ku
    28MACNiHkbfW5A7XhJ8re+Rc83so8ak26mO0FQeh5qsiVj4z/pmFGrYmeH94CLr+
    bC+1nwkbAFxjZrRuFzct1y+oe3MSU0UUKTXUikovr4hJBBgRAgAJBQJL9FzoAhsM
    AAoJEPSGAV8zFuRlI3kAoI9Pl1nGD/sEvV9aGkLfAK7v9A9JAKC8ReU1wrQlM3z9
    oA5JjxumuE274w==
    =kEVt
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.39. Jesus R. Camou `<jcamou@FreeBSD.org>`

    pub   1024D/C2161947 2005-03-01
          Key fingerprint = 274C B265 48EC 42AE A2CA  47D9 7D98 588A C216 1947
    uid                  Jesus R. Camou <jcamou@FreeBSD.org>
    sub   2048g/F8D2A8DF 2005-03-01

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEIkZzcRBACrskMO6BYlK30ghgpDYTou1UEgp0Y4QdghWeEP5kppuDy7kf87
    CoKVvE/u+pVd7aFoTMa7ikqxKH4Kh7wnDEbFnzeZGtsf0Fzw5oHgoaQQlZHGRtr1
    49UuyFnRWVKyI8IXS25Ie5p6ZlbAVFINOdJuP81gku8SffsoifnKIiWrTwCgzhTU
    uS1rg+TpKkiRnkXXtpVF9k0D/3/OADlTo77GAWMXl6HBTaB3BXB53Q4PozvGDter
    lWGKbx6uYvLq3ZPX1XBUapzJ3eoEfCsA++FeSzK+tue/ulbLiXmFhXSQWtXoRo5D
    I75uOoXlrc45uLc9XkOpeZ5dF4a1iJOGHe/hD4mmyrWIM+E6cy1lL4EetM35ZiEM
    lHqDBACehJoEdCAVMOcfQLs33/iTBRBE7Z6fN9DCH3kTvoYcgpZsFAX2WQFz085/
    zHJ3NVFSH8LCi/6ck5ZeXCasAS3L99Q/io4WwmlqDj/b4PBdfoefInLJkroijcQ5
    B2I2cH2Ss5kkwqj9PovanMWNY6Irv2szIViIeThB+l6hiuzaK7QjSmVzdXMgUi4g
    Q2Ftb3UgPGpjYW1vdUBGcmVlQlNELm9yZz6IXgQTEQIAHgUCQiRnNwIbAwYLCQgH
    AwIDFQIDAxYCAQIeAQIXgAAKCRB9mFiKwhYZR31UAJ91fYdpk0PNNr14jtURyeeS
    upTEEACdH7tOg9LmYNxAi0iKWVInoA/TNmW5Ag0EQiRnPBAIAIKVE+F4De4BWuab
    6LREy3VmvNQgHSF8lHJm4TWKYGEkNhG+sIRFdJExqKG+N+El9QY4QGgezdogQIYk
    RBSg7nWzVrs7DiHJqC4PB/f23bzJl24Cg05jtxvZBz7t4lNXwY9G4kTmDb815FXd
    1p8gwa1KCNsTlKVRJxbaku9gHsO2JZigLMzzF1Zt1vGtaSHX5SyjhOdMOFtjuLed
    NAgl9vgAoMpXLf2Saom38Lgv/jnWz9OfST0P+OA/JmqN5DqeRTlyVZdQ8i8bduYX
    xmtbBPOGHWxwUDxiXMULkdjkLLrY1UaizR6/ULI6+cPrPLZFdnr+5GK6ZoTXyJ2n
    EUUxpGMAAwUH/iPguYUdGVnwKiwqojHq9DzDb09qvPg+UIEjwZA9mPExfMPLo/1b
    2NLgOF7pqeluXfiN84i58sipi4/ntlsNSzCYKCH2t2Wmfjdfpa3N4JaVptLR650x
    Lzj3egnWJKpHVSO+v1U7BSYBnaVPGfOMQVlSO5ra41SiVyZq6laX30PXXIFP6Ocx
    VWECVLmTR+L1g/5Nvq/L6NPv3ziuSLbSpvkLhTxLosaQwYFwPE7mLKgERUKDNc1u
    EXqyf8No4LKyO9V6VLckMgG4qbjQZhm9ozCmEYoKFZLafsq8czdNIKi4JV/8aUjU
    CsR5Dc8XAdwzPq6DBcikn1UBnvotbHtAFNiISQQYEQIACQUCQiRnPAIbDAAKCRB9
    mFiKwhYZRw2hAJ4mmNxtlCe9yUHRCzxsUxl36gQYtwCfQZ3f8K4dxPU2ClJ46fTf
    FqQS584=
    =KYGd
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.40. José Alonso Cárdenas Márquez `<acm@FreeBSD.org>`

    pub   1024D/9B21BC19 2006-07-18
          Key fingerprint = 4156 2EAC A11C 9651 713B  3FC1 195F D4A8 9B21 BC19
    uid                  Jose Alonso Cardenas Marquez <acm@FreeBSD.org>
    sub   2048g/ADA16C52 2006-07-18

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBES8etwRBADeB8shuQ3GGp/AozsOggqLnSmFwCS8nGN+rnE+4LHuRzkL4Kh0
    pgzalpPre7DohKjX2uzq9lTjjmsrTKZLM+yaNZ9fFMHC1uHxZnV9/c7tC97oQQXl
    FjMmemGZGA3VMhh5jEtjT5EJIvPBB4SBVhVhBJ24ananUD9KmUHTyP8GrwCgxMJ6
    +NrGKVeu5QYVLo9oVo26J+0EALkWeeHI8PE3f0jOqS+Voym3jQPLw7pvx+HoySw1
    X0c0YRa9uJVH2e8aFMMsCzT/sP492IksJvtRNpzDSJJyYM3zukzH+l7J2vwDvKgD
    YknZJE0pAS0GRAVbZQ9u6bez2+CUrGZW7Bvablo7r3nBHyhI2SpeM6naXlS4AJ6I
    9dbaBACm82l0Uwip/WoJM0r/lB6eXMz9tFeRgfnPY3+G0Y9pFpdxTX0q5M73L6u2
    PeXbWI2XPyPqw0wqda5YNlcRylXJmzLFGQzR6opqIbOEzRE+IinyQwQlcAv3qzBU
    p7qCplhjblcyAhWTlM5XsrAWxXHyNFrSCCPDgW296+8b6b94s7QuSm9zZSBBbG9u
    c28gQ2FyZGVuYXMgTWFycXVleiA8YWNtQEZyZWVCU0Qub3JnPohgBBMRAgAgBQJE
    vHrcAhsDBgsJCAcDAgQVAggDBBYCAwECHgECF4AACgkQGV/UqJshvBm6wgCgqtDd
    lyjakeTr7YVdNmpaI/UxpG8An0jtgTDD2M+CioUqGN1SNTkA/6cWuQINBES8euQQ
    CACt+RPVEUX/qDk3Qh6E1Zrm410mAJLfgG70tz02ApDXhW6aZccW97rH3pec+RDW
    fZVaSW4xHjUQMu1JaXK0dD++UWifuhYF+GUfi2NQflcy600VjM4v1HMZulTE5/0n
    NfPU4s2Vu0w1JcuXryjy5O8+ur10wQ4HFnL+qSDmXY2UKKTHA7vVrBTmysELDuj5
    N6T9+xxuR7EJG3lwTREgPnr5nRlyZBxgAd6k/AJ8i2X1YiGix2KI2fk/HYdgl3FL
    xnLXrLE43mAwQjcmkMruNkebjfAAnp6vKvSOLZ3mqoPNhP6SPGTPxoskcHqHhvXh
    L3Y7/Qqga4sg+P8tZ4YTx4SHAAMFB/92KAG0TePM8+gtp64oOp9RuUELjT35f5RZ
    0ZJZ1JromyMjOc6FRh1a9HiVzY2Vq99S/r8S5QoNH6vppxGjSL3Vs6vJg79eT5Jc
    ODdEZhoSzqmc/TwTHfOeHiFJJk8kAtX33CIHBUDM0p3OaJDj3weYi0TUWcxcvlFg
    p4RIYHCkmJj1/sI+0U8Jw35nSK4uNwW8MCl9a2hwHCtfnvQBfotybc4+YuwFesT2
    SDRit/mXxYkmi/a5GPB0To/e/QSBuk7MMNtLv0oF8LCrfaN76XOmahxjaSYidA4H
    LUFNqtRL9J5/T4VSZsrSl+Gb6HQIaMoGPbXmFk3i6FzNP7VDViZ2iEkEGBECAAkF
    AkS8euQCGwwACgkQGV/UqJshvBlwLQCgqDaWuJOgfV0r5li2gRPUMI5XCscAoIG2
    pLZLUWFiL2unIMhkFZSQbZZj
    =I2hD
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.41. Pietro Cerutti `<gahr@FreeBSD.org>`

    pub   1024D/9571F78E 2006-05-17
          Key fingerprint = 1203 92B5 3919 AF84 9B97  28D6 C0C2 6A98 9571 F78E
    uid                  Pietro Cerutti <gahr@gahr.ch>
    uid                  Pietro Cerutti (The FreeBSD Project) <gahr@FreeBSD.org>
    sub   2048g/F24227D5 2006-05-17 [expires: 2011-05-16]

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    R8Dblj7cX+WKPwwhnrNq0Q==
    =UXRy
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.42. Dmitry Chagin `<dchagin@FreeBSD.org>`

    pub   1024D/738EFCED 2009-02-27
          Key fingerprint = 3F3F 8B87 CE09 9E10 3606  6ACA D2DD 936F 738E FCED
    uid                  Dmitry Chagin <dchagin@freebsd.org>
    uid                  Dmitry Chagin (dchagin key) <chagin.dmitry@gmail.com>
    sub   2048g/6A3FDFF9 2009-02-27

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEmoPBkRBACM2PQ+WGI38Z5NtkF50MuYyv0u4qSaWtx5Tquch2sgBDjxjebI
    XQYuyzM9piV4ZSZHFyjvFCHjLhPg7Ae6xaeaOwPsGQ2Q+bSC92PoTC3bDdHW1hPV
    6s8KxrFcelHLwhmF56WIALoI6E6IF60KztuISLm0VDG0Wy3lP8QAeoWbgwCg0fY1
    iOETR0ZP09ophWg8CPUxyvcD/3NFr6GEVUuFX4ENQkX2GTrvEB1IBS3v9JvEMlUX
    bShFXWGHB+3ynBvw/EiuOgIB6Jzay3prP9rdGW4NSV7ZMa3Yw6OdhVpQ0ticn4zU
    FiqLL6x8SKXKSm9BvjFuWADe3Lnu/ekY1lYTM4iWPNdA2LjRUHwpDIHcHWgcCzkn
    CfY+A/0eKkj+/VTddCspDaXuTmgGlkz90LsA0cLv6gRO3IV+0t80TgohtsCdR2X/
    Yf7fi8GsaMdhgJZNm9dMz/zD7ZkQ+OyQN7NkB1zkwg2RwOnbbjTa+HECtsr2Znb6
    B85MamlnHN0WHNgexaC6c7ezEFq+RMBKRVJJGwehZXpT185T57Q1RG1pdHJ5IENo
    YWdpbiAoZGNoYWdpbiBrZXkpIDxjaGFnaW4uZG1pdHJ5QGdtYWlsLmNvbT6IYAQT
    EQIAIAUCSag8GQIbAwYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJENLdk29zjvzt
    eLcAn3hUOTepQzeJqPuTFl2Z2dM10HHKAJ9DJRmSIAwHBGPzlAFFzKKFW+OoV7Qj
    RG1pdHJ5IENoYWdpbiA8ZGNoYWdpbkBmcmVlYnNkLm9yZz6IYAQTEQIAIAUCSam5
    zAIbAwYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJENLdk29zjvztRJYAn0cIluug
    IS7YO6a+Bf0FByX3jlndAJ9k3HAxpt9i9R0wFkFmbMX0He86bLkCDQRJqDwZEAgA
    jMe9QT4KYOHsLQsF5vHBq/+W+Lniy6OqEB1GSK9P/vqVIqVa7v7NXX/B5R8UiQMz
    fSNcYH/BTN1lb8Pe7pAIBpqPhKBi7NAW1Ddy9399co1c37ncf6HEa2P0tpJbTrG0
    Eww9nUiFbhjWUHSY0MT57mHQHdCSlqNFl2jaV91CQaNybt9z8JLO301vQXP4LLND
    a/FQ3TdBEIXFLs/H8QKLBe5TBgd2lXy9qpZsii7xpfNXKG1qqIa8sfUoJO5Ng2GB
    K6tJUFh/J548BLt/c/p1KJo8ovJB70DiOaznRc+Tu8rR03ehdfrJ5FpDoxC6UAa8
    7FpXWxjM6L3N/T01NcaXUwADBQf7BpNvsT/QzV74wnGXoi9aUE84ojkIAm9X4Q78
    dfdCvSFWUACcvsB/d7XLcCXOZ1NJ1E8Tdjjmr24MRQRUY8MhDt47ngsTyDhDW5l9
    EQ/ByjX3wlRBNP5qEDVkLudfRE6LlEye2NSNpXYs1Naw6U/deUggNZMwriVCuRI6
    TPc/bKeq7+378EBaKc8ckuRdv8LWsIdaKQ6rQZh1CB6LpSsL9OjcRpKvK8yYas6I
    kWUr07xvvlVyRVLcrNyQwp2QnfK8fXeH2I/Qg9QwcV+cXyKzH4vka9zrR1A9SAHJ
    iOyMXJBy+GzoYLf/y7/u/LOVAm09P4tQ/7V/DY7nxiOabSioTIhJBBgRAgAJBQJJ
    qDwZAhsMAAoJENLdk29zjvztGEAAoNFpe2XX37q3yAaNfiZgEABrxsgZAJ9yH0YJ
    QrmO4sxq5l7AD6K+KNahRQ==
    =ER/k
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.43. Hye-Shik Chang `<perky@FreeBSD.org>`

    pub  1024D/CFDB4BA4 1999-04-23 Hye-Shik Chang <perky@FreeBSD.org>
         Key fingerprint = 09D9 57D6 58BA 44DD CAEC  71CD 0D65 2C59 CFDB 4BA4
    uid                            Hye-Shik Chang <hyeshik@gmail.com>
    sub  1024g/A94A8ED1 1999-04-23

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    [encoded data, 4160 characters]
    b7AAzA==
    =dqQP
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.44. Jonathan Chen `<jon@FreeBSD.org>`

    pub  1024D/2539468B 1999-10-11 Jonathan Chen <jon@spock.org>
         Key fingerprint = EE31 CDA1 A105 C8C9 5365  3DB5 C2FC 86AA 2539 468B
    uid                            Jonathan Chen <jon@freebsd.org>
    uid                            Jonathan Chen <chenj@rpi.edu>
    uid                            Jonathan Chen <spock@acm.rpi.edu>
    uid                            Jonathan Chen <jon@cs.rpi.edu>
    sub  3072g/B81EF1DB 1999-10-11

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.0.6 (FreeBSD)
    Comment: For info see http://www.gnupg.org

    [encoded data, 4940 characters]
    qnfGSEooSVFz5kPTaACgtZYK1PfljVCb4e0xoy8XkArq/8s=
    =cJgh
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.45. Fukang Chen `<loader@FreeBSD.org>`

    pub   1024D/40AB1752 2007-08-01 [expires: 2010-07-31]
          Key fingerprint = 98C4 6E6B 1C21 15E4 5042  01FC C7B7 E152 40AB 1752
    uid                  loader <loader@FreeBSD.org>
    sub   4096g/9E53A5C7 2007-08-01 [expires: 2010-07-31]

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    =PrOy
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.46. Luoqi Chen `<luoqi@FreeBSD.org>`

    pub  1024D/2926F3BE 2002-02-22 Luoqi Chen <luoqi@FreeBSD.org>
         Key fingerprint = B470 A815 5917 D9F4 37F3  CE2A 4D75 3BD1 2926 F3BE
    uid                            Luoqi Chen <luoqi@bricore.com>
    uid                            Luoqi Chen <lchen@onetta.com>
    sub  1024g/5446EB72 2002-02-22

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.0.6 (FreeBSD)
    Comment: For info see http://www.gnupg.org

    mQGiBDx2qBMRBADYSjvWKVcUxUb1aR1VjHTlFo6zc6PHMK8W3CRin7lY3NgsYsmZ
    n0IvGQIDEHhTpOEWLS0S6A/bseaGUir52X6spZ8i5hfd7Ps9RmeS0oHx0XDS9JTJ
    HXFE5RjExHbLnw4DbsaqR4Fl1V7NJU2U/nkiJILJd/PGPZsdstKYv5QvnwCgmwr7
    QZlkTV/m61MmbMAEpEFWaecD/Rp5Qb9S5NGVplNeNqub4fC+Ydarkorr8qBJN9Va
    xu1Qgj3sOAoxmuOnZ99YAgXhs9Bqe4QsrQfs1cMUVzZsl3FIffh92HkrLmdJlsjX
    8lrRT694cIP7+ELNGKJ/zaXI3j2cnQPVqUO1icVfijqatqDg8bgQS8C8CGQX6e6h
    ADKGA/9cIY450gMvrtbR3/bqH+IgvBCUog5RXv0y8c80sJnzeqawx2BuziFvv6mZ
    Kv0PJ2vnWok0NHcyuBHkkEt+ujYlMQXHZ6wRykYxIUzM8tl+9129tSNEK+GdcCOZ
    rfbwm8scs+VmzrHXP+saOPcHPBr0e/KPPixNN1I5HB3yI0ILSLQeTHVvcWkgQ2hl
    biA8bHVvcWlAYnJpY29yZS5jb20+iFcEExECABcFAjx2qnEFCwcKAwQDFQMCAxYC
    AQIXgAAKCRBNdTvRKSbzvmmrAJ9FVK0lT4Qym+qzj0EA6TP3V42cwACfQl+ClPzJ
    zngykscMJW07MBXkQ9i0HUx1b3FpIENoZW4gPGxjaGVuQG9uZXR0YS5jb20+iFcE
    ExECABcFAjx2qpkFCwcKAwQDFQMCAxYCAQIXgAAKCRBNdTvRKSbzvkEwAKCRteUw
    2X3XbPsVDCBZarrkf113YgCeIHmhkDHbauw4UlUO1tYNVObn5dO0Hkx1b3FpIENo
    ZW4gPGx1b3FpQEZyZWVCU0Qub3JnPohXBBMRAgAXBQI8dq6XBQsHCgMEAxUDAgMW
    AgECF4AACgkQTXU70Skm876CUQCggJuwNIJy6f05Ka17RYn+j8hEQhwAnicDXnsy
    5SEYN6amlHdqN/HwXCsbuQENBDx2qBUQBACifA9hUBBYNqCcXTs8Jk1MCcToMFob
    vRt/SK2EcwjZ9aF9sIX3tJFrOHEe/bIcDMX19e480T4+BBs9MyHdnKgPR6vP8ZEe
    FvT8+44Wd6psLB1LwsE8UpJ3CbLjkgafTpJIlh4NP5iM2p+2ugUIRM2ZaAG7MOMK
    Ec47KOEb6yI9ywADBgP9F+p+zQ1Z/qVekBooIKU4xKBryGb/XIPJi/Pgapgr3oE9
    kKH4iObbvMBSV3kd4a0+FSEXSZyRnMD1AG+dWhAHgb9rbjtICp3hZOKCMfdZxFVg
    QStZO8vP5EhQYYtIXiNmOvkkBPqb+to5RgFFez8oIdPlMUq2Hf9MBIY6XDoNJl+I
    RgQYEQIABgUCPHaoFQAKCRBNdTvRKSbzvh9GAJ9K3KifYIBOHlsmRLF75mgKQk/c
    0wCeIOeVykZkImOxs0pEQMR/4g47Wjs=
    =RNuY
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.47. Andrey A. Chernov `<ache@FreeBSD.org>`

    pub   1024D/964474DD 2006-12-26
          Key fingerprint = 0F63 1B61 D76D AA23 1591  EA09 560E 582B 9644 74DD
    uid                  Andrey Chernov <ache@freebsd.org>
    uid                  [jpeg image of size 4092]
    sub   2048g/08331894 2006-12-26

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v2.0.1 (FreeBSD)

    [encoded data, 7605 characters]
    AJ9RFN/fKYunmZzi/STcxm8mj4AJRw==
    =XTXc
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.48. Sean Chittenden `<seanc@FreeBSD.org>`

    pub  1024D/EE278A28 2004-02-08 Sean Chittenden <sean@chittenden.org>
         Key fingerprint = E41F F441 7E91 6CBA 1844  65CF B939 3C78 EE27 8A28
    sub  2048g/55321853 2004-02-08

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEAlrEIRBACQ1ZZIej0e8esRdDxmuSv96bv1NTDBaEx7P649JM8a3afUvnQl
    JkA/ryZsKAnw1OeIK907Cs5HdaG1lD9ttpQolG5ZN23K01CuHUvq6yY+evwDV31D
    rKwYfALKfdhtAaymxM7RRsNNV8OkXLg0SEtBit4lbdY79vqiVC3PeWYvIwCgyOlb
    7dw3f2mNtm280LybDSjn5KcD/2gWssJVtQgssnCi0Jto8csULw4OKyJHvXX06Qkf
    lnXKcCJTBMgXZf0cZpYhuyqMUZfsVJaF0lMJ85J8zD+Of3G/KwuCqW7jqpom0zw9
    mgsmhZ1rZCbf4cG1orpGSSfmsi5IFoe+mWEJgHwIKlLYd/XDfT1q81swa2AlcjbE
    Pod+A/0cNSOWz4rj1ZjcxYsxg0sZES5eFEHfIJ+5g3yMbNPcvbQhlSClgDD1Z46p
    6bEZA4+vL2kJH+29E1Q0M6H4OB2rY/Co5TypocuazZR1kwkJY+bQtFqPrcCm67Er
    GYl3qcbtV8Wgn153k6DnMUc7by2iTrJiRjWw4LNVhRZn3/dj8LQlU2VhbiBDaGl0
    dGVuZGVuIDxzZWFuQGNoaXR0ZW5kZW4ub3JnPoheBBMRAgAeBQJAJaxCAhsDBgsJ
    CAcDAgMVAgMDFgIBAh4BAheAAAoJELk5PHjuJ4ooG+EAoJP+RzGsCHKYGaLhok0/
    B0hBnIKtAJ0YTlDINuquFtqFTeZgwTUg4jeHFbkCDQRAJaxTEAgAqKA+B8+oo31g
    N7Q6uw1rR5F6M2fFBwPrYU9w6bM7qX6e/oy3epL8BgtzdlHyzcux/hLGDHGP6mku
    lwH5wGSjqfbk3guI1ogl+e0EjblIeUEAA1R/k2o8xt/HINhXiCjQhY6AJL9cljGz
    NQY/ecR9d4HEvjc+Ticgyt4h6WSGMTpjjY+Y0bWrxsXi5ZAsCNYEuRgdaRM52aXR
    gGkSqMBOKSKAPGc35Jh4nzvPSKjXmkXutCnPNcO+qPoro5j2Dx53ZkfB7Raj6CiY
    C8VQ8PDEpjELTq8fuOqqrl911RDYAOECWEqyim78qROuhgq5750w1CJj3K8o2FDE
    Qap5jNPiUwADBQf/bk9Es1QDyDTPLC7Look1OS50vhotrHce7P+uab++khm03ajq
    XmNuTYifQY0kgzzEBaELw4+isBf1NV1vvPK9P6k6FCx+1mcNYzItRLBo15MtcXlB
    IqkD3v/BnhVgT0PqJT6jO8glKCmhEq+GurXqydIfEzWCbz0+snVK769Q9rJHHUf8
    icDKfUI1m7javdnXVrpA1kKZM8Omis+BfO17XDBLYZuVW5rAJDzG42YM8H1mrqBa
    GL806X/3i55d2RfgrljiZvXBpdOZRnM21w6hxNuj3OaVxqrQn9hOgzBcVdSZWc9b
    vxpmZ2j1vx7i4xNq5dzcBqxMKDcAcwomLWgjHohJBBgRAgAJBQJAJaxTAhsMAAoJ
    ELk5PHjuJ4oob8sAoI0szWtufl86pHsG0AwxjsykDS38AJ0SAW5Nr1N1HlZlrtlG
    0ev24JoBxQ==
    =yGes
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.49. Junho CHOI `<cjh@FreeBSD.org>`

    pub  1024D/E60260F5 2002-10-14 CHOI Junho (Work) <cjh@wdb.co.kr>
         Key fingerprint = 1369 7374 A45F F41A F3C0  07E3 4A01 C020 E602 60F5
    uid                            CHOI Junho (Personal) <cjh@kr.FreeBSD.org>
    uid                            CHOI Junho (FreeBSD) <cjh@FreeBSD.org>
    sub  1024g/04A4FDD8 2002-10-14

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.2.0 (FreeBSD)

    mQGiBD2qLwkRBADbZ6Rsv7guMTzGT9lj4eIE29vj0ZZNWFepFEqEmWK0jMLAATX0
    koXkP/qWsuGBhVHcSyZtVG+MYTwAzo5nBszx12CNL/GkEokQ/9FXi+cA3W5TJZTE
    ssMq0PPwqCB7+s/4DBmc3uI22TCOI7J26XkftuwkdihCMG/gk+cgKkzZ7wCggaBp
    02a96DwV/78wUZy9C8B6uMMD/j5jAO2HOubn5CRZrOpko3za+qVsk6yTCmq12z+t
    r9veYORoVohxVTIY+xpeHQVlOe5URTiKO0Uvu34Tl34x0BbSLBWrGU8UTMA4+hpl
    QTUK1GI1DheFPGGGxbt9w40nslRVw2Or7GA/XHexCDwx5KZpJNtO8c/MqdlzAae5
    CuYQA/9bb5T8xhamrsOFTmdLY3wPM2efnp5d3luwA2Fe3SdC5Rkoa2fDye5w7fy1
    9YX638Nw0YU6P/xmygdBjqxKs28/6evo79KAWONL0dl20pEYoj3yVz58C3YGLEFe
    p9ggrBf41MjnnMg+D7NdBOHtISfOrU3TtB/1DiGE3+QpMwuOHrQqQ0hPSSBKdW5o
    byAoUGVyc29uYWwpIDxjamhAa3IuRnJlZUJTRC5vcmc+iFkEExECABkFAj2qLwkE
    CwcDAgMVAgMDFgIBAh4BAheAAAoJEEoBwCDmAmD1SyYAn3JBBPs/6lAQ55HLjew2
    suN8XP8RAJ9OBFQhUphqmQ/shjrwbNRBsgDbc7QmQ0hPSSBKdW5obyAoRnJlZUJT
    RCkgPGNqaEBGcmVlQlNELm9yZz6IXAQTEQIAHAUCPa7Z7gIbAwQLBwMCAxUCAwMW
    AgECHgECF4AACgkQSgHAIOYCYPW9MgCeOYgOUTCIsagnCymketJwQoGBEpsAnik+
    bL1lPnomVghlMMUgU8wxB9sQtCFDSE9JIEp1bmhvIChXb3JrKSA8Y2poQHdkYi5j
    by5rcj6IXAQTEQIAHAUCPa7aJwIbAwQLBwMCAxUCAwMWAgECHgECF4AACgkQSgHA
    IOYCYPVI0gCbBZEg/a9K4BAY5HQ7wFOp6u/G+nYAnRgb4zUmf2M57dxEx2hm93pI
    aKP/uQENBD2qLxAQBADMGxA9f5QYLFnR/XZ+Hqa/YCeqFMZ3hC4KnjWBDDXfI0Cv
    HMLBIW5027NPIDeN95998T5YJPDm1TY5Cort72CTDS3eIfoG0iGwIzzLfXrZB7Zc
    1BukNV5NMFeKPO7pX6k4R0aQr0SQUmcdYD7t6V/M4xswVOwcECk/W9BuGA/9NwAD
    BwQAy8LmYyssQdjImAASQABcpdOua5orv0ojYMu+edGmjd0WqhXToUHcDfQgL6YA
    kO/4g37ysvGwlpj8U7cZwabMO/zwnryyOEeGEA+5aCsji4VRZHOkdflcuBOXj0nR
    9yHmPFfwWTxLtV9ajLCP4vXqKPrKciS8SbuLYzvx+lnUiCqIRgQYEQIABgUCPaov
    EAAKCRBKAcAg5gJg9eZZAJ90E4gu6VACob81uH3MxWmgjpG2iwCfeNTe1Wz7EO3K
    z54TjDmC4biJg2M=
    =g8A3
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.50. Crist J. Clark `<cjc@FreeBSD.org>`

    pub  1024D/FE886AD3 2002-01-25 Crist J. Clark <cjclark@jhu.edu>
         Key fingerprint = F04E CCD7 3834 72C2 707F  0A8F 259F 8F4B FE88 6AD3
    uid                            Crist J. Clark <cjclark@alum.mit.edu>
    uid                            Crist J. Clark <cjc@freebsd.org>
    sub  1024g/9B6BAB99 2002-01-25

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.0.6 (FreeBSD)
    Comment: For info see http://www.gnupg.org

    mQGiBDxRQfMRBACvHk6znTM5boH4k+2+anGxRuPxPPIJgo6Ny385v60FtJjwLwDh
    9LwvZZjpjXi7MM/0FRfUE4bqzrdBtUm6XXGC8v/FTH72TemXR54yr2zuCTcX3jML
    e7wjrO0SO1cttASSeb8OsVQEqiMT4VRm94AYdQvS8bNxbqlog9PYmhh6lwCgwDYl
    Br/IhYSKQTugPEb8nSyP3e0D/izp3mt4NXcULIp0PZFpvnGZAMLq8moZ3cYa+8nM
    kRCWd/1/94lCd1YM8f3lQsaEvRuWaw7rT1ENknSb5TZnEMsTvV03CM4DMzH63Zde
    wgl8Xne5lF/WyiSsjUeSkmvCExFA83fz/Cv8/fk6K2O2Ajo0b33Rb7WLH/gb4U4s
    9ZkEA/48XB6/s0vGFVnELRSXbc6wCHbnhG0/58ewSbJ2XjyIFFFmeqIF2bpLhuRT
    YTBz3styfrjeAqsi9t4gtcEK3vyvF83ql5b23u5/V/+O/ZLwk3kceYmjM0mbETil
    FajrLZjaWXpTRQauL/tsqxItBI4BNuTvnh9bizQY8V7xzAgMwLQlQ3Jpc3QgSi4g
    Q2xhcmsgPGNqY2xhcmtAYWx1bS5taXQuZWR1PohXBBMRAgAXBQI8UUHzBQsHCgME
    AxUDAgMWAgECF4AACgkQJZ+PS/6IatMaGgCgqdklRK39OoUma5sl44pEl7R3GhAA
    n1680hBnTGdIR4wxFY39uX9zK708tCBDcmlzdCBKLiBDbGFyayA8Y2pjQGZyZWVi
    c2Qub3JnPohXBBMRAgAXBQI8UUKgBQsHCgMEAxUDAgMWAgECF4AACgkQJZ+PS/6I
    atPX0wCghHE+X/oyrMbMrCsdwubBf1WudnAAn2WHoVNZpzgMck2MhFdwa/1rAJI1
    tCBDcmlzdCBKLiBDbGFyayA8Y2pjbGFya0BqaHUuZWR1PohXBBMRAgAXBQI8UULc
    BQsHCgMEAxUDAgMWAgECF4AACgkQJZ+PS/6IatOKKACgsnfy7ZCxEWmdnY+c9KLm
    x0V1Zy0An34Ky4kzHxDYDTIoO6XRS48+/aljuQENBDxRQfoQBADouiAUldDORJkG
    K7fN81SWvocuySMOL/dEv6UQnBgR4lmjmaLog3QMbGIsJqiPRLDDS3PMkYf1dgDy
    6hPmMkWF/xd13Vpk4S5sIjrqTBGoE9f0SPbcDPIjRj+htXFcI+qvhvdceYi24Zvs
    xGX90jb+fimZdrJNtobfEqJaYOkrDwADBQQAsCwtAczuP/aM624+UYBrNMCmHpRS
    ZAOAnp7Hz83GafkWynaNRDYan2KsBrZJmbZ3MJ6kyUj6k37Keh1c7pR5DsY202on
    9haB3lTZv+j2QooPyj9Ityd985eqiRwAMBuOrpaCpot7zYlwiG/Lx/0P00RZ+Jdz
    hyidSKrsudGAp0OIRgQYEQIABgUCPFFB+gAKCRAln49L/ohq06htAKC7SFr0uQmS
    9fjEOFsF9oPMMxgFwQCgjvMA6reNmNAm0i6ycFh3QVYEUic=
    =C4zW
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.51. Joe Marcus Clarke `<marcus@FreeBSD.org>`

    pub  1024D/FE14CF87 2002-03-04 Joe Marcus Clarke (FreeBSD committer address) <marcus@FreeBSD.org>
         Key fingerprint = CC89 6407 73CC 0286 28E4  AFB9 6F68 8F8A FE14 CF87
    uid                            Joe Marcus Clarke <marcus@marcuscom.com>
    sub  1024g/B9ACE4D2 2002-03-04

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.0.6 (FreeBSD)
    Comment: For info see http://www.gnupg.org

    mQGiBDyDmj4RBADa/Icz5Xl+cJUGNxC/tWgXWqcA9VA8GN+PeqKhXS0BnVHntdsQ
    xbpFUUKK4ld0Zex/Rec1jgC/ikExJHHIee8ZVcHqP+tsWexi83/ZvEdzI95diBp2
    Is5fYp8P8hdIBNQSOoc1jVYrTJUaZgJK2uBzbkh/WbipwsQbueRzXqPORwCgsPNr
    StLzqOpjrA7FdUz/JVQf5+8D/1SiKAOFiW4TxY+fS09lqiLs3mbXjvw23iQwLxje
    4vBd4+b9iAUWOsSretSKv6OE9ZlD4FYea8HmMgEkuKfXGc8GvTq4J1uHZ0gcVbrB
    GmxAUBPPaAENYEJfJf7dcysKVAl14ZQVIvzAGJAZHGuegD7uekGKnOEA61R3ze4a
    M2zNA/96I77l0qiMc6J7gXmiD5uxC7FsSCFj5sqTYMgBqzIYEZjU/tTUbth84xcR
    i4X0WNkaILqq1mOcBfmzQMvzG1n1CydmJU6iF1ewle6cIui9TQYg5CESrJF7xid4
    vVXRz+xi6hc1+0bSaoJa3sfpNrSSr0lKGdWHZozWdQjOvTMCXbQoSm9lIE1hcmN1
    cyBDbGFya2UgPG1hcmN1c0BtYXJjdXNjb20uY29tPohXBBMRAgAXBQI8g5o+BQsH
    CgMEAxUDAgMWAgECF4AACgkQb2iPiv4Uz4c6rgCgg7XXmcYqcIlJdDl0aGU8r0Dl
    kfYAn3W4oHUReFhATFkj2d+7zu+Rsu2MtEJKb2UgTWFyY3VzIENsYXJrZSAoRnJl
    ZUJTRCBjb21taXR0ZXIgYWRkcmVzcykgPG1hcmN1c0BGcmVlQlNELm9yZz6IVwQT
    EQIAFwUCPK4tTQULBwoDBAMVAwIDFgIBAheAAAoJEG9oj4r+FM+H7U0AoICIVoBe
    9B8bo1lrvHh+UF7GY/WaAJ9C2mCThFrmqxCr2bCtR12UoPCPqrkBDQQ8g5pAEAQA
    qk1J4LBDLeWs6ZOkPDYYcKCSAu0qlzEf5YP/TcSeZcjJyXILgesFXcayoy1v7ILP
    QSXj4p5uzRyn0fuGqiTvajjxMZz1aSkvgGyS+gc+PDmi4SJ2N/tX2isrul8MK+NG
    eUsLuZaM1JKhgKpq9yuu3D3ELG7ESga7xsOs1V/sSd8AAwUD/20XByIlsUUC/65K
    G/DQ1WfX2gNuy5If9tSPQ6h1Lno5Hv3ow3ktybIoQSxbcBo28nA/Gzg5NFGVkkqf
    OkH2xtS6V0K/WjzsrloBHCPFiKp2yHpXfKubxl8yefQPTMj8hLwlBKrNiN1fz5/6
    29TIkEwDwrUwHxQreE7FAzPMqHORiEYEGBECAAYFAjyDmkAACgkQb2iPiv4Uz4cn
    uQCfX1zNrahRTWz/HRpF7ms8qZqzdOIAn1uuu6Jst43pDzanBHUOBzUP6ymA
    =Bu/6
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.52. Nik Clayton `<nik@FreeBSD.org>`

    pub  1024D/2C37E375 2000-11-09 Nik Clayton <nik@freebsd.org>
         Key fingerprint = 15B8 3FFC DDB4 34B0 AA5F  94B7 93A8 0764 2C37 E375
    uid                            Nik Clayton <nik@slashdot.org>
    uid                            Nik Clayton <nik@crf-consulting.co.uk>
    uid                            Nik Clayton <nik@ngo.org.uk>
    uid                            Nik Clayton <nik@bsdi.com>
    sub  1024g/769E298A 2000-11-09

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.0.6 (FreeBSD)
    Comment: For info see http://www.gnupg.org

    [encoded data, 5525 characters]
    PbUkrewAn0exWATudMNC4IQf18YvII1t4Cn8
    =9wNg
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.53. Benjamin Close `<benjsc@FreeBSD.org>`

    pub   1024D/4842B5B4 2002-04-10
          Key fingerprint = F00D C83D 5F7E 5561 DF91  B74D E602 CAA3 4842 B5B4
    uid                  Benjamin Simon Close <Benjamin.Close@clearchain.com>
    uid                  Benjamin Simon Close <benjsc@FreeBSD.org>
    uid                  Benjamin Simon Close <benjsc@clearchain.com>
    sub   2048g/3FA8A57E 2002-04-10

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    =/2rY
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.54. Bruce Cran `<brucec@FreeBSD.org>`

    pub   2048R/6AF6F99E 2010-01-29
          Key fingerprint = 9A3C AE57 2706 B0E3 4B8A  8374 5787 A72B 6AF6 F99E
    uid                  Bruce Cran <brucec@FreeBSD.org>
    uid                  Bruce Cran <bruce@cran.org.uk>
    sub   2048R/1D665CEE 2010-01-29

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    =XNzi
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.55. Aaron Dalton `<aaron@FreeBSD.org>`

    pub   1024D/8811D2A4 2006-06-21 [expires: 2011-06-20]
          Key fingerprint = 8DE0 3CBB 3692 992F 53EF  ACC7 BE56 0A4D 8811 D2A4
    uid                  Aaron Dalton <aaron@freebsd.org>
    sub   2048g/304EE8E5 2006-06-21 [expires: 2011-06-20]

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBESZZ5YRBADZ18WQp9eda97kmLEVNkYUkTbWn90/9ViXP5lWhWDvdIwXXa+S
    byVbZI75QkYrvhhyDQPwK2pwF3v/nGaBhQvO666uWWyqBAC+FTjc6GQ/tVTe67Pp
    dBVlY3X2QadAIWOYHFWNhG58jAXDnuz9po/w/h5t/6wayVElamu/jPBwBwCg48VZ
    4q1oQ7M474YPBsyLfmkLEu8EAJwdgos/BxJ0a39PFtI768+6SS4e+B7qt5UDd30l
    87rvKoW3gXuf4Vn00Y8m+aK+mUjsWeQfDCF6Kj7/ecGNSkfvwmsEDnRMujyapX6J
    wuJ6DzKgrc3zEBXVK5g+JBrSZDGetkdl8jndG0lmxIqxqnx1R+uxiWNs9NAdeP1P
    F7vCBADAPoKaAEW0LlsOE0zIylP5e+LTBd6MQeZ8zISlNqMHDX9F174Fo4CFH/pI
    nW588yf/ChScuONLPIPbMBkvoC34yLEGluvjZov0cjySqzcTN/TkZ7iH1NrkYe71
    /z0Pe6jWY8p4KjK6C6dKok8b1ZI/btmJyuv6bkTzM5kQlxg43bQgQWFyb24gRGFs
    dG9uIDxhYXJvbkBmcmVlYnNkLm9yZz6IZgQTEQIAJgUCRJlnlgIbIwUJCWYBgAYL
    CQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJEL5WCk2IEdKkTFIAoJwahC11/B2TXIk8
    9PioqX0c5nU5AJ0YGkpXIzDzF6QskMWWQq64fMuE6rkCDQREmWehEAgAzFoPIPXW
    +sMFJs/DzCYMzHglYmNzHr8wCfvNq3hiiHUfk9EtcUaMnVI6TMkoEEF4mXMpf7oc
    uCjU0+CZMf2GV+bLkxs2rNePyjzTuoig1vsl9RFA+1tMfLrUsUKwoPjLZUbHHApl
    S1x4k+TaLanT+tSQar//WNuA5JrmxRXSyYXu/2y5VSi+niaNKupNYXfqr53SuW2J
    xh90I90hzgBzQypWNNDEIN1c/lkgIvWm7RbbBliX9Y23iUeFkzmLbOUcpLSy3zj3
    9I3eCshQdFv5UT54N8rMAg6hGC5jfeqy4mVpMLWst3Y/Od+DBv/F9xnaquGW7LYp
    Pz+H4fJzdC79hwADBQf/XyMpsvO4z1N+8DaVybwMedLd4ExSkIAsAI3MTS1mtNu9
    mFm9GQULWvUH1YXBFnVVidibc7zdTwVEAPFhc/uZ5unxqzbUAj5whkCBUF53ZpVv
    nsskZZ3aUEh4hEM6S1t1kc7+HptpMgaSxEcjy+ylybMEzBQ14Mh38sEavfoeDvfb
    aP1AtLQh/+ehQZHeA6px3PvdDeevM6zLoAY6yEKtd5QaSrvhIuP91HKeQjPgM8yy
    IZTWM050axPzKZOCf2VsB78QUNVGcfFrbScleBvaVbdOh/ZgxGOgD7LOhhgivV1m
    dLQ+3W66/GuUVDHap5hdzPuoUgFTodlzilfqjpaekohPBBgRAgAPBQJEmWehAhsM
    BQkJZgGAAAoJEL5WCk2IEdKkNGoAoMBfaOMRp7+OtWsx8pkGGlFszVCDAKC0rEFY
    lBcUW4xcel1cl7I40JK+lQ==
    =bsX2
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.56. Ceri Davies `<ceri@FreeBSD.org>`

    pub   1024D/34B7245F 2002-03-08
          Key fingerprint = 9C88 EB05 A908 1058 A4AE  9959 A1C7 DCC1 34B7 245F
    uid                  Ceri Davies <ceri@submonkey.net>
    uid                  Ceri Davies <ceri@FreeBSD.org>
    uid                  Ceri Davies <ceri@opensolaris.org>
    sub   1024g/0C482CBC 2002-03-08

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    [encoded data, 9165 characters]
    kY8idgc=
    =eKfA
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.57. Brad Davis `<brd@FreeBSD.org>`

    pub   1024D/ED0A754D 2005-05-14 [expires: 2014-02-21]
          Key fingerprint = 5DFD D1A6 BEEE A6D4 B3F5  4236 D362 3291 ED0A 754D
    uid                  Brad Davis <so14k@so14k.com>
    uid                  Brad Davis <brd@FreeBSD.org>
    sub   2048g/1F29D404 2005-05-14 [expires: 2014-02-21]

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    =HfL5
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.58. Pawel Jakub Dawidek `<pjd@FreeBSD.org>`

    pub  1024D/B1293F34 2004-02-02 Pawel Jakub Dawidek <Pawel@Dawidek.net>
         Key fingerprint = A3A3 5B4D 9CF9 2312 0783  1B1D 168A EF5D B129 3F34
    uid                            Pawel Jakub Dawidek <pjd@FreeBSD.org>
    uid                            Pawel Jakub Dawidek <pjd@FreeBSD.pl>
    sub  2048g/3EEC50A7 2004-02-02 [expires: 2006-02-01]

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEAeUYARBAD2RoYfLkSt38R06MpFesDgXVvgSb7q2GGTiMLZE7iJ8iKQU7Rx
    DkpW7EkpJ/YGPXro0KumkIGoPCsMF1eLENUhGhyMosN5Yb9Y7DXsOv3QcCKIfBlM
    P3Y+Y7By0GvSYPvYK9GZI2ZvSXyTraxB1eO/7c+aqS7wdwx3bCsVKnyzBwCg+nXQ
    izSD3wmwDYxffxN4dawiD2sD/00L95dq5XhM9nISjWJOjGsPJqyzoZZH2pemOgcq
    SeNimi0yWOWeZh/bxbjUYI5RXdBXGdwQxW6DKFU9o9NFe4se1jZcbPjuRtkbBXqz
    Mkh4kv2pvZ+rHu41kqzOZ0z+rbZld2U28R76xtx3RI4OXvJ8z01RHzAEwJ1G6s3D
    wI6iBADy+KSjJmfgP1rAcNPuwW7T7L2H9fLNTp3mmWZZDj6n4fykcwM9Jtz/K4QE
    i3GHNB2AnmR8yiPE2m87ObsKV7d8UK4WP0OLfbr7d7TZ0jDscBhlyfYgKYDFHaJH
    8O+L7df2oQU31wYEvYOP/mSTPO7F5TJZm3/Pygp/JkKnPDCnY7QlUGF3ZWwgSmFr
    dWIgRGF3aWRlayA8cGpkQEZyZWVCU0Qub3JnPohkBBMRAgAkBQJAHlGAAhsDBQkD
    wmcABgsJCAcDAgMVAgMDFgIBAh4BAheAAAoJEBaK712xKT80dOwAoNjy2Xrebr+p
    AQroKNQnIzaR2QysAKCXRA9XldUcwxSOzRJNhDktAKQbZbQkUGF3ZWwgSmFrdWIg
    RGF3aWRlayA8cGpkQEZyZWVCU0QucGw+iGQEExECACQFAkAeUbQCGwMFCQPCZwAG
    CwkIBwMCAxUCAwMWAgECHgECF4AACgkQForvXbEpPzQudACbB3QlE/GfSY+umOHI
    y+3UjdMKuGMAn2JC4vrcEPwg8XMF5iEIaEZ0tNmVtCdQYXdlbCBKYWt1YiBEYXdp
    ZGVrIDxQYXdlbEBEYXdpZGVrLm5ldD6IZAQTEQIAJAUCQB5R1AIbAwUJA8JnAAYL
    CQgHAwIDFQIDAxYCAQIeAQIXgAAKCRAWiu9dsSk/NByVAJ91gG7VGmIK1H1LyHnW
    ZPI8T7WRBwCeP644asOCGfje3+NjA0F9OHoL2z+5Ag0EQB5RhhAIALfZ2Kq/Yd1j
    X4+kdVgCQqHP9tEHjYLwGICL3Y1i+whLqUx/X+MZmt4vNZLaoaqRXhMD8A5c9tN4
    06ODB6afzS0feQE/s3j0bKRviTvUedg+CLvt9anqf092gRt1MnKAAWsw+WNqfCNI
    xsONpWWS5LL11PLyEOhxqsEvcx2IpswjG398MINFwHo7dUielCDpAPgu8tCVLpWb
    GqUBiWdqzq9jxvIS7obYUmr0VBqElP16LrcvoUs8W+AGvkfTZW3iX6yPhfpnycKy
    OnStwtO28Ud2BlRrp1YLJWv8oZcYDP5p0GyhbmCbj6qG+BrA8XbIgASFZHK65CWr
    ++Zc5tztIBMAAwUIAJVrsEErdqxbj7qdJXVebkQZLe/hr5fFOGdOwMmvNbsI2nHj
    0B/L8Gfw1v2N6K5ST68mSH5gPpDDkLqDfqY6OcN2LBhVvOdEGJv7kp8x0XK/vsbj
    jARiO6l7ZrtH4E78oiHzYK1yGFNMi6c5zpO6BXRUAVmKptL/BRu0UPRMfScyIbnP
    gT0dcOiTazJ5U9Ol+Mjk4S/YLqe/05JQvmzKzSht6E8BbgiZxwsrWB+CLpLwglbg
    f4NX+BAjApvoesbhkLOY03bSgP6CsRbL7izgVmfAHbOJk5eIYjSEIOcqIMyg3cp0
    kZI7omon6uhjl36Ad1uEwjkW7jPgCz9a62bLr3eITwQYEQIADwUCQB5RhgIbDAUJ
    A8JnAAAKCRAWiu9dsSk/NOa+AKC/grZ0DrDsO9LtCEQKwTcP7EQYBQCgsk9ZmVug
    9caBiftOC/+/0ej5qqg=
    =/cMH
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.59. Brian S. Dean `<bsd@FreeBSD.org>`

    pub  1024D/723BDEE9 2002-01-23 Brian S. Dean <bsd@FreeBSD.org>
         Key fingerprint = EF49 7ABE 47ED 91B3 FC3D  7EA5 4D90 2FF7 723B DEE9
    sub  1024g/4B02F876 2002-01-23

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.0.6 (FreeBSD)
    Comment: For info see http://www.gnupg.org

    mQGiBDxOCiIRBACyyyoMk5OyGdOkR0a4fj8zPJ2AOielQ1BYv7JlIWdNeMHdQ0gj
    liTgXwDimeBnElw7sNrmdfocfwKbmX33exFPa3AkJgLflBcuH9+xE3ozgzMl6t76
    QL90PPIc24Er670NnhF7Smvubus4IdckvM24kuUTINmiuFzVwuwWdXdwvwCght6R
    HPpuFeiMZHRJAiHmu9AkKrkEAJRLmRGgdqTQ6RRIQobqGS+1grl6AsXHzKfvjx8I
    //12yrFiUcXE+167I529OW2i4ilmVjBmnwwe3750ZKBIp8OUBkMkfMuTSyCCFD22
    CX4N7D68d8eCJiCqv0jMZGnoWoMulmWzdyplcg/FhdLzUfpXLWX7/9gzy9k8hKBT
    Ou2UBACRLG7zwgKcYx4yjHhsCxuqGOeKtcfF49ghCp1s+wPsnXy8b6ZAY3wFeHC5
    LFyUsQFarizV0aeqJoOXEB296xZYPpgW6C+rajd1WVi7zhPxsfYedldX8HtGDMKm
    FRN88P75OGjMdFOYrpXTqUAJnoTUN4UynLV6WbfM7Cne0syg9rQfQnJpYW4gUy4g
    RGVhbiA8YnNkQEZyZWVCU0Qub3JnPohXBBMRAgAXBQI8TgoiBQsHCgMEAxUDAgMW
    AgECF4AACgkQTZAv93I73un4TwCfWqT0UeeEn9qstLTycDZF6oiKUusAn2dZRiNX
    06KUv2qJk2g88nUsBXgDuQENBDxOCiQQBADXY+I+CYMmiant5TBMzh5JfqhW2FXa
    aZDgi5XTVAStL6AaygeLIaVSSUUuOxiD4JB7vxHYB7pyVg71/lg5moud8NP2HNKW
    YR2mZjCQ9bHRQRqqPBTMrSHJpq10cZ6grxvVmte/oC4cI35wL8HEe2WwChZgk0tS
    YrA5PRt/UGWLLwAECwP/SxokqxcRa3lZqkpdwLgLWpyx1KNBg7wIJYLmALI0UxpS
    ezweD7OukikqZ1BYlaaWZ7N++r4sNDR9WTIv0ySNovxJnnlyo6FzD9RD7ijQbAvp
    nhpikigC+GvdnvmreMXYztc9WvFeJT/S8LGDkDHcm0ECmBDo3EA8W0+sOQsZxk2I
    RgQYEQIABgUCPE4KJAAKCRBNkC/3cjve6eroAKCCMN4s5AqvTy38BWmspFvSu90I
    IwCfTGutfs+PGUY9JJoabnnfJhfIgNA=
    =MFJO
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.60. Vasil Dimov `<vd@FreeBSD.org>`

    pub   1024D/F6C1A420 2004-12-08
          Key fingerprint = B1D5 04C6 26CC 0D20 9525  14B8 170E 923F F6C1 A420
    uid                  Vasil Dimov <vd@FreeBSD.org>
    uid                  Vasil Dimov <vd@datamax.bg>
    sub   4096g/A0148C94 2004-12-08

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    XmPkHj0KHckscg/fYw==
    =Yp1b
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.61. Roman Divacky `<rdivacky@FreeBSD.org>`

    pub   1024D/3DC2044C 2006-11-15
          Key fingerprint = 6B61 25CA 49BC AAC5 21A9  FA7A 2D51 23E8 3DC2 044C
    uid                  Roman Divacky <rdivacky@freebsd.org>
    sub   2048g/39BDCE16 2006-11-15

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEVa4hkRBADRcg44myl39Jv+OO9DMl2XjrS9JwguZSVjCHY2Tj4urjsEjcwf
    3ykYpJbXkK0KHHP5VTfoIp0MwoQdS4Xx5uHMHg/re5gws7KU4DXFmc9gWd1+eVXK
    PEMfWVG94qS7pG9e5aS7znglPNVUUBMKVI0VgD4fsML/92RFJl7iLFY7uwCghVfP
    952asGrNrV9T9+GBOxKUjvMD/3be37yXGBcS2f3Py6gHbv4vC0CFtfXUM6Zclz6Z
    8FGv0sYDaTW94FPkXqmcUaIjH5KMyig8Y93UquZ04stFgYkxwku1drHZb4hnuqmv
    NR4qvycMye1dMC9824+FpZkhP6ItjMcbE1PxRhQVU7dyO0dFyUlEEiMrTPhzLiJj
    aR6pA/9nW7NSJIaSnDrJ8Uq4NEIjyTidU5JCZLJJxTbSbEe5FrOSINENppVbmUzj
    CMXqyP4sHXtEA53Dl38dDjWz08A/c4dK+lwxtjDQ0NrLpXHrnqWc7tNW3XtayCiH
    KjYTUbj2kHV4Kva73zJBAlN0N+D58TfQQDisnaw/cGebU+5/ULQkUm9tYW4gRGl2
    YWNreSA8cmRpdmFja3lAZnJlZWJzZC5vcmc+iGAEExECACAFAkVa4hkCGwMGCwkI
    BwMCBBUCCAMEFgIDAQIeAQIXgAAKCRAtUSPoPcIETDXXAJ4t7ojZLL46SN/zLVTT
    4qylgoqfNACfSvpuziRIUKGLO/YdkYe1hiJqknG5Ag0ERVriIxAIAInh7G4TY8ky
    NObKXToSjpvxNhY4JQMsJ43dCHTkT6CwAes96mhAscYF3KfBcIFhv3Oj6LhyMe8l
    J9A8wcAPnYzOzjiZLrITF0IlVM1L9VT49tkvidOUMykKvluYKMmntH8fCi5pBKc8
    Y7FQ5Kc3MZ/2dge5k95mpuWmuAjAVJXKd2ONAPSRwnxplJo1kA7Bvp632TRbDEjx
    mwtg48FI4Blwu19i8rpwzRf0iCp78UF2ypoyrRqzudLXcMT4yS2yU4z4mbU91qbc
    PNCkaMP9/HyoHnIA38bs0tMUUawKCeQZgCkTV1R+V/J5uoRIMsSBGfX81RADvEB6
    HtYPrUFCYs8ABA0H/0PBej8RqZJmWU7qlpoEX4gEG8FpcsNG2RGNjuSu6l19xk1E
    RF5tYg2N3hnqioWri1t3BJn1qpHgSL+mJJRqf00c2U5XUKuxAvTWjARyqa2G+WiF
    hPc1pmE9Ty2n9XkmT7G3jidTNHXbqsjEK0OCZdLJHOkTuStUjn8Mz2PpvlZoj0Mo
    VYEE3Paet8mFH+Y/EjHKTe30RymAOQOlc3gKEP/2qkp0Zqkb0FqklLCUQvvjn37k
    /oIcF/lvmIieN/on565dggchLRWCX7dMI6QDtEnd72jwpGo30oVUC3NlKoEggcFA
    jiVbPR/F4UhBtjcB6GCiLHvREKjL17gCVwMv4mKISQQYEQIACQUCRVriIwIbDAAK
    CRAtUSPoPcIETGfTAJ4tppNp16pURW2x6Yi3GwY12/Rb9gCdGiT6lz3e0Ffo3EDl
    3I1WppEoQQw=
    =5OWm
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.62. Alexey Dokuchaev `<danfe@FreeBSD.org>`

    pub  1024D/3C060B44 2004-08-23 Alexey Dokuchaev <danfe@FreeBSD.org>
         Key fingerprint = D970 08A4 922C 8D63 0C19  8D27 F421 76EE 3C06 0B44
    sub  1024g/70BAE967 2004-08-23

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEEpzAURBACu7RDb0dP0oorBa7j0Do1auzG1N2wQgTMIHoo7DhspaGjvN0RJ
    /dozO04jqyWopb/cA7iWMqn/7gX9ckHrKa1ugQRb8P7AhIZNmfc0B5AOCqeGo8gi
    o9y/XBhFRS3Osxxe0j2bIoL3pk0EBjHaa477yiZyWNjq5j8rPf/h7DudtwCgx14M
    iEwmKZ4hWMzeaKYcOFTIn1UEAJtUMrBbxMxchDnIuAn3Oz3ESpGpxSDVcTHUxoIl
    3A+mizXetzWX8lmEP8GM2oM1/dRCiF+l2v5tcnBO52PT1cFst28W6Ytyf1PamIFC
    GNL2CZUz/ZVRBPEZb7CfXJYupYd1AiYNCoSyh9bOv4Fin3Uhm+Ds1n6x3yulCFyo
    PJ9pA/wOMpGwCNSpNLcfz3gG5dh7PR2rhh0D0w7jZbO/l8D/81inThfBRb7B4KIP
    v1Cl/ynm+M4XS7Fy3xjfPHbUvHY/DNr9rqI0qsGU9qTubuBO+I647tjLFem8gaue
    yESeoU4okXMPblPXh8r93JIfbmi/rMcuddblJ5kw6U/IYYGGS7QkQWxleGV5IERv
    a3VjaGFldiA8ZGFuZmVARnJlZUJTRC5vcmc+iF4EExECAB4FAkEpzAUCGwMGCwkI
    BwMCAxUCAwMWAgECHgECF4AACgkQ9CF27jwGC0QXdwCgwTxjqqG9DppWUVvfQklR
    7O7d/QoAnj9qF7prbDCAq43MQJIJ1AP6x/4UuQENBEEpzAYQBACsVmYX94l7jndx
    byPUZl5SlKLJFSTIymPGLebcdNg8rF86aq/9d8nRrkrqUWtpQtWeAZw2GZn0n/vz
    kRbmaqMaHkmdg9g9xT2qstOL0rZhCyvLWVeNYUjgkNWi7Be3yjb11RLPOanpug5z
    Rfu6I/7qjOcVEoa3cjlahdK//xleWwADBQP9EWsXY1iKSQ1k1B3N3+EEWbzuOzaH
    upo7fLwamIVuX7K95YIqOawMlhERBD8MUxfrzJkOIbVI/81g802Iq1D2Xv46hvCP
    J8oszCeFjqixsOkg3HmdUyvTHnODBHsQMoy/37r5voAElx/LXc4Dm9DSR0rSTpXh
    mUdHtM0Y6XYEcoCISQQYEQIACQUCQSnMBgIbDAAKCRD0IXbuPAYLRD9GAJ91NEgg
    OHfLL9Taov5GEDVjEaD8MACfeTqtFRD4Piuxg64CGOdNBCJ5+p4=
    =abIH
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.63. Dima Dorfman `<dd@FreeBSD.org>`

    pub   1024D/69FAE582 2001-09-04
          Key fingerprint = B340 8338 7DA3 4D61 7632  098E 0730 055B 69FA E582
    uid                  Dima Dorfman <dima@trit.org>
    uid                  Dima Dorfman <dima@unixfreak.org>
    uid                  Dima Dorfman <dd@freebsd.org>
    sub   2048g/65AF3B89 2003-08-19 [expires: 2005-08-18]
    sub   2048g/8DB0CF2C 2005-05-29 [expires: 2007-05-29]

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    =hGAK
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.64. Bruno Ducrot `<bruno@FreeBSD.org>`

    pub   1024D/7F463187 2000-12-29
          Key fingerprint = 7B79 E1D6 F5A1 6614 792F  D906 899B 4D28 7F46 3187
    uid                  Ducrot Bruno (Poup Master) <ducrot@poupinou.org>
    sub   1024g/40282874 2000-12-29

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBDpMfbARBADvuMgOIlEdTWlb4XvAu1YEfCijox47muRNbkA0yb0drMwYnV05
    tZ5cOK1uVELQ+gtGK7lDS5rQ68LPpXFMVva98skkVimzgfmQiqDOXiYW4BVE1qmO
    THpb5dIpHoXqTDILTLVomf6d8Z2re+IJUNvbrBFM616wndIQqux/O5LHDwCg1Hky
    KrYDoOT1lcDgSGH6RcqSoAkEAI+D4y6JpBctutEGWNcgijLv36g09LYNeC/gD2aq
    0bS/4c44eoPkMCBBn8MM9AIsK5sfne2GuglHcUM2U82s5UbZcQl8vzcyG9AVGQGl
    aoO/duxFKPQC70/xEa26Bwjv78cVWm6hLHoMZRXvsprr3pQpuZHmzPWwwxipqXkY
    gYApA/wMrLwdewzd4yEMB5O6y9WSd+FUA/y1MS1+9epdbzPnpUszR2QKlA+XblfD
    8KdxxUjIjt6WOXEhQ0GCWfRauB0MAZHTMkA/NVnmR+pI6FSJ9LJ4s6+BoFRbKdDp
    JY6yJUZzqRgxgo7tIcpRsRuXP4zu8KYlCPL0Al3gSW2DlKYxirQwRHVjcm90IEJy
    dW5vIChQb3VwIE1hc3RlcikgPGR1Y3JvdEBwb3VwaW5vdS5vcmc+iFYEExECABYF
    AjpMfbAECwoDBAMVAwIDFgIBAheAAAoJEImbTSh/RjGHWXsAn0/3nHkOH2WxLdWl
    ANdjJDzkMLywAJwN6CBCDKSbN7OzfNHTx3XAEVUUmbkBDQQ6TH21EAQAiEIQKsg7
    Pi2k3L9fFnDDAcFgh2oL/MpHgN4kKYx2aoTr02O3rBmK3ADCIBqj3dlWMavIOuzu
    1DvmvsloIcDwsMsc846bjQq0R20VaiNz4NJqZfhS2/xYPzJo9sPTncJOGQowjv+J
    GqlkmvLVSLSzYPh7OZjdw3SxS3zFPEQg0ccAAwcD/iZIddUIenySJdgs8WIe26X5
    r34/0TlyxiwtlzefYpVHHYD8CzVhYPD+iWUpDv/10HC7c58JTxNUGyN2UGcaDNRc
    g/VJqRahYxz9LokB+vRPmCyoP8bhLkrp0fHZFnFpH4IY4WQecLBfYJZZF/K7TLLz
    O5tine3BIL/LpM0nhVWJiEYEGBECAAYFAjpMfbUACgkQiZtNKH9GMYe/7ACfTNKi
    dschnmutxCWw5fcsyqP9oYcAn0Cf7InoUX5AUFaj4dFZ4IN+9L/m
    =LTGr
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.65. Alex Dupre `<ale@FreeBSD.org>`

    pub  1024D/CE5F554D 1999-06-27 Alex Dupre <sysadmin@alexdupre.com>
         Key fingerprint = DE23 02EA 5927 D5A9 D793  2BA2 8115 E9D8 CE5F 554D
    uid                            Alex Dupre <ale@FreeBSD.org>
    uid                            [jpeg image of size 5544]
    uid                            Alex Dupre <ICQ:5431856>
    sub  2048g/FD5E2D21 1999-06-27

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    [encoded data, 14885 characters]
    CC/qqMn8MWKJ0CbiXiTSu7dpojYAnjslrpODNzSntRQ5rK0SawJXsWWk
    =CMdE
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.66. Peter Edwards `<peadar@FreeBSD.org>`

    pub  1024D/D80B4B3F 2004-03-01 Peter Edwards <peadar@FreeBSD.org>
         Key fingerprint = 7A8A 9756 903E BEF2 4D9E  3C94 EE52 52F7 D80B 4B3F
    uid                            Peter Edwards <pmedwards@eircom.net>

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEBDlWwRBACjdnvu/rCOVEjpYmlmQmmmYZ0hbUdustNozm8dtKpg2w+zED3z
    9kHcoXEY2i1jxmJrHd4PPcvMutJB5AuYU4NiBmdMgBgfZvW7yaD+tHfvgozNyEKa
    3Gcddamy/ENCFKoSTEuCDxH77zf6DXh/B/Ekjav0sZnGHPqFhUdKzwh21wCg57uM
    Z3aL0+sIhiNYEJK93yjXt0sD/2F6+T7dj7wjdCPsb3mh5YSTjGeSXjnXHfeFQmmA
    /dPyOkWOAuTo2uR3AeVRrJ6rslKLqyl773HX+eM5b52gIsFZ+CzSEiHSrHEqOR/o
    3jzzGWhZb3Q/dbeWsPrtw32XUOdiijH5h2PyfKQ6reu+lpH8oKTbvOoycguHnsiN
    8zt/BACCRoxdjw3f5L4RMfbdxN8/9GLcDzjv27s4Jn17snXuOyNzWxky+hNW5InM
    wG92m9/a4XtZX6viK4sY8kfFLvAx95vaRiPJOPdUIx6Hk34HHsXdQ6XbUaadlBuG
    Mxr+aT2o01qzxi+dS8+SWXjCBwT5mRVdOZq7RFYd73I+FrzltLQkUGV0ZXIgRWR3
    YXJkcyA8cG1lZHdhcmRzQGVpcmNvbS5uZXQ+iF4EExECAB4FAkBEXVYCGwMGCwkI
    BwMCAxUCAwMWAgECHgECF4AACgkQ7lJS99gLSz9lewCgtKJX8EySD4x42LoZ8imS
    gYzQ2AMAnjAlfeFF6q4Lqiv6ikUW7uSGu2WitCJQZXRlciBFZHdhcmRzIDxwZWFk
    YXJARnJlZUJTRC5vcmc+iGEEExECACECGwMGCwkIBwMCAxUCAwMWAgECHgECF4AF
    AkBEXiQCGQEACgkQ7lJS99gLSz/1ugCgwj+RyWcUk2WtWZlox7rmTG9ymDsAoJ+r
    ckrEYUJfPdH0GKonpipJQwL6
    =73v6
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.67. Josef El-Rayes `<josef@FreeBSD.org>`

    pub  2048R/A79DB53C 2004-01-04 Josef El-Rayes <josef@FreeBSD.org>
         Key fingerprint = 58EB F5B7 2AB9 37FE 33C8  716B 59C5 22D9 A79D B53C
    uid                            Josef El-Rayes <josef@daemon.li>

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQELBD/4Zd0BCADEH+EDDjEX2ztufB5dele5Bt4XBg3cYncvlTsVEDLR89xtwmFs
    3no9Hs0ImTQwplsDgbixBL3DXWi46dwVK0MGYIUycJxLfsgFdlWngcXYkpWF3O8g
    v4YhytcVi9uSBy8oNB7huiY8IXh4XPgiOKztgCVJZbIgi8ahoif04eHTT9YGOL5x
    Qu+n7D74zAcgzK0XO+O+WXB8EoO/saJxzcCIeEGzfCjq4VyL6JB+1c9CgWlrpI7K
    LOpFqrN2qHygIMxCicp/163AdxD9I1hUtlF/sZYY9BpkbweLLqxKf4qtDYAMZLuS
    xFGfIG8f0imfFeTXt85FgYGxqLMlmdjFefIpAAYptCBKb3NlZiBFbC1SYXllcyA8
    am9zZWZAZGFlbW9uLmxpPokBOgQTAQIAJAUCP/hl3QIbAwUJAeEzgAYLCQgHAwID
    FQIDAxYCAQIeAQIXgAAKCRBZxSLZp521PM0PB/91jWBC7yI2obxE+VGsItduiPhC
    0x+Z33suGP8f7ewGBlztKC8y5N9jCGCfG9auwkJ9Xo27zCpMIkba4CfbRqyLxWoh
    ZluHQg5uge7AGefmsdfDsfZq5mPNtUkB8uVn3tXGwVVsxknw8PGtw25wbDCOXTCi
    t6L70v1gJfK8UxFhu0VCdOxbRAuQoIkE+bSO6g8bJrt6JFzhVpuHdgxwJbziWYSp
    nEJUN4Eou4UfCteVQrkh2O7ArHMmAEb89s5xbfNrQ4NdVBXHfsrzEDhWOqgiQ/4m
    o2DAs8iy2aCbWRaKG6G57g+uwhbqEN3gkeDfjhcpBMLqQy8drqx+erNGVYnKtCJK
    b3NlZiBFbC1SYXllcyA8am9zZWZARnJlZUJTRC5vcmc+iQE6BBMBAgAkBQJABsPr
    AhsDBQkB4TOABgsJCAcDAgMVAgMDFgIBAh4BAheAAAoJEFnFItmnnbU8miAIALbu
    Y15l3+9kNlv4Arv26aYrRcIYEUcCLIGZnD93NPnyEza4WwsUbCvYgNpKb/wojAA3
    xUdzHtRUfDp++eQU72S7DcRkkTt5vrnwKnH9kMsr2/hCIaO3ESiOVoPeJy91fHEF
    I9K1qP5noJQjfjr1w4ib86spyVb5LH3QPEnyvDX/UTBYiYu8UUYonitLZ3iHk1Ku
    x9SQoPszvkxdM1+d25pbG1uSV8JQRym6TsPQp3RwpbCy5hnwMbDLaWl6fbRwtAxZ
    i6A0cppdbgi+DDrOFoFKuU25YKKOKl76Vy+cpjYPBPRH3mOTYd/i2xliEP56dTJU
    4QqDJPpnJdmvXiCFt5k=
    =UfKm
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.68. Lars Engels `<lme@FreeBSD.org>`

    pub   1024D/C0F769F8 2004-08-27
          Key fingerprint = 17FC 08E1 5E09 BD21 489E  2050 29CE 75DA C0F7 69F8
    uid                  Lars Engels <lars.engels@0x20.net>
    sub   1024g/8AD5BF9D 2004-08-27

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEEvjRYRBAC1jMkUf5HrEQcNSLSK4NogjNTuwxE9d4PjgOiJ04L/haKeUAaB
    x21REw659FNCOW/HDuCzNH4POFQYoe2dyS3lV4xk+YsoJ50NuoCro/tiigBztKB6
    u/Ukq8bReroNwjP1Q2TnCHWxzDIq2HJ2FQtbXXlWKe7ZBu/LFwAsHLenLwCgzkp1
    i0gxqzxWrzIApMiKWB+HORED/3Jjom3MOEZfr27aYvY18700uXui6GAkcxTj2/6X
    s1MVpQt8F/BAgKYkw8Q3qOgoaJPHpnBQXMIB5TXCkXxZYwvUFlLHMOghpZE6/eHn
    3+UdvqsxHGa59Ym7HYzS1IExBVNfof4MVsunQtnGaHyQDMrKt2zF2MmTgASzITWW
    GyOjA/0Qc0K+hUBPsiaVpNcCZs6vPxeU1qSZamyZlVIjfQgRkTGN94bJD7l4qzaK
    hpmOLF8eD6+pA936HVhLfmPsNFkpFgw10oQQVYIVx/Thj5tOX2o7VbXUdQEkdTTO
    t75c2UqZIdPKet/btF+NPnnT3P8u0UdVvpvMeq7thLuJLkDDo7QiTGFycyBFbmdl
    bHMgPGxhcnMuZW5nZWxzQDB4MjAubmV0PoheBBMRAgAeBQJBL40WAhsDBgsJCAcD
    AgMVAgMDFgIBAh4BAheAAAoJECnOddrA92n4OuIAn08LIWiZX5vZ5GvClSsa30Wp
    2LG5AJ98fEToSwavm0tAuDHU1kPoDhPSqohGBBMRAgAGBQJBL48NAAoJEI90JpT7
    YBR5I/kAnA3vnk2qg91m3nocHy6nS2tShMUzAJ9RQ1orEGxFGukfgtY9iTTG4Tpg
    /4hzBBARAgAzBQJCVYkTBYMB4TOAJhpodHRwOi8vd3d3LmNhY2VydC5vcmcvaW5k
    ZXgucGhwP2lkPTEwAAoJENK7DQFl0P1Yg9UAn0/WHYshCUKP551shW3EtjUFvSF/
    AJ9EhPPzNRdgS5cs8Hifvd29McguHohGBBARAgAGBQJD/deEAAoJEAwB9WIgsQYJ
    9lYAn3MTmAp+MZn64phFp346NFhy1tRwAJ4xd16I6dRhDMSiNVPQPybwAZTfirkB
    DQRBL40XEAQAobWOOZBUJm+Twj/sGj0bUdlZ5H1Qos5uWEEjamcElcmN4dG6Dyjl
    X+X4dmcAQADm2JH5aajdWKKDjDNaTRbdV9XCe/iogYD9UhbPEQuHovTuDaOQrRsF
    nSCcXH1GABWF+Cp2JA4FVS1gmHykr+u9DZP7CsOosI6PWmOYwySidHsAAwUD/jVL
    iRLUj2qR3ejYTa61ATT5wb6UtuIohpvBNFj4t3V+LWATXmuOP1mYhy3SmoxUcmFj
    uULJ2GHHb+wNnP8YpGdxRVFkBV2grnpKqPdCkcm1ON707w2d3aDCEl9KGzhEvg68
    c4CF0hVkLGIs0qeZfsOwxE4jdYpPl8YuuRZV2ah3iEkEGBECAAkFAkEvjRcCGwwA
    CgkQKc512sD3afjgrgCguloybHuwhKsmOnnD6HSp1G/s4mkAn2VeB3Euh8fg6W/9
    gcKK4GHoPC8/
    =T+Zj
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.69. Udo Erdelhoff `<ue@FreeBSD.org>`

    pub  1024R/E74FA871 1994-07-19 Udo Erdelhoff <uer@de.uu.net>
         Key fingerprint = 8C B1 80 CA 2C 52 73 81  FB A7 B4 03 C5 32 C8 67
    uid                            Udo Erdelhoff <ue@nathan.ruhr.de>
    uid                            Udo Erdelhoff <ue@freebsd.org>
    uid                            Udo Erdelhoff <uerdelho@eu.uu.net>
    uid                            Udo Erdelhoff <uerdelho@uu.net>

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.0.6 (FreeBSD)
    Comment: For info see http://www.gnupg.org

    mQCNAi4rWsAAAAEEAM1u8Y60omElX7Wtrh75P8K0L2Gp6omV6iDuwl9kXYhN94jF
    DE1F4xpkRDWvQxsWbYeIk2F3VYGuN12BhbRNcNqoyniQt2XMmbdEmp6ltumH5WbG
    jR5Xg0LkJ5AJmxvjJXXA9q+/eTfmyTfPjnCL70cTMWHdUl+EBUPoh1XnT6hxAAUR
    tCFVZG8gRXJkZWxob2ZmIDx1ZUBuYXRoYW4ucnVoci5kZT6JAJUDBRA0K3Q0Q+iH
    VedPqHEBAe9vBAC+el5mJpqPkC/+om/SSE7mxyuUqHAx1tNUymL8gTuV3mFB0goM
    xkxhUOMMYe9z2zyi+RXrECfLT2OqqUA60EZpl6Mgymj8SVZSv4ZwXdU8cgynYNfX
    T1pC57mN9mxL10vTTJEix7QsrVz0W479/IkBrhW9nTidQtORW1Si5T5IA7QeVWRv
    IEVyZGVsaG9mZiA8dWVAZnJlZWJzZC5vcmc+iQCVAwUTOwzFWUPoh1XnT6hxAQGl
    eQP/bLMp1qSdkt2/BKchpx+lhOemCmT3LHQ1sNzelb7dBwnsvE3Z9lOycH2pm1ro
    j6x3vmcDAqZ1yh2eFEVNK5abfhuI3QH+9QdgvMcSIQgF3VIMer7JXxNtFFX8JRKm
    +YfLfDifcK+B2HRkpMt9ETY8b3/cYz+gbdKNe4nVde5KPT20IlVkbyBFcmRlbGhv
    ZmYgPHVlcmRlbGhvQGV1LnV1Lm5ldD6JAJUDBRM7DMX9Q+iHVedPqHEBAYHUA/4l
    j98KC7y8cjapO4Hi0r/eO7gUwDujvrBMYbWuhmNCO6xlPfwRNm76tnNiTFdqVLat
    XSrQwEUys9Mq9xe2F2RuqSfYWjmHKX3/gNW3gRJbnBqO1QN6CDqo39a7LgllqFf4
    yFj9V6i1c0WSBiOeWy75DHpsfXHupMxZWPPRWh0TnbQfVWRvIEVyZGVsaG9mZiA8
    dWVyZGVsaG9AdXUubmV0PokAlQMFEzsMxhFD6IdV50+ocQEBzqsD/0nX9rV5cAcd
    jFTayQvoAjb/nIN+TJVHumuC/Glp9fKHlfTjMnsUawma+iQESjUB8XgyeJ0WvR8M
    vQGEMowYr1YTtFiYfFOvrzXZmhB6NfhFV3s34ZLDeBnncUqkas79Pi9G9AP2Y/Mc
    c//i2owj58xTfocYNT5IxVVYjB72Py+3tB1VZG8gRXJkZWxob2ZmIDx1ZXJAZGUu
    dXUubmV0PokAlQMFEzsMxiND6IdV50+ocQEBBJsD/1SVP70fNa3ShAn18+yEXOIL
    TlFYCUmGaBIeAsd7r8tXFYbf5STAOEOiqBB9Y7V1tV4IriACru+9wo5wBQoCLBT1
    RNj4NhwVvkGReTDsA+Zz/vUULrbklVKO724DktO0+WRbn/w99trttuUTGvTHRER3
    BjuOfJ/QoLlnLAsDBMov
    =TCJD
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.70. Ruslan Ermilov `<ru@FreeBSD.org>`

    pub  1024D/996E145E 2004-06-02 Ruslan Ermilov (FreeBSD) <ru@FreeBSD.org>
         Key fingerprint = 274E D201 71ED 11F6 9CCB  0194 A917 E9CC 996E 145E
    uid                            Ruslan Ermilov (FreeBSD Ukraine) <ru@FreeBSD.org.ua>
    uid                            Ruslan Ermilov (IPNet) <ru@ip.net.ua>
    sub  1024g/557E3390 2004-06-02 [expires: 2007-06-02]

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    [encoded data, 4810 characters]
    xfUIyIEOONF8sN1I
    =tea/
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.71. Lukas Ertl `<le@FreeBSD.org>`

    pub  1024D/F10D06CB 2000-11-23 Lukas Ertl <le@FreeBSD.org>
         Key fingerprint = 20CD C5B3 3A1D 974E 065A  B524 5588 79A9 F10D 06CB
    uid                            Lukas Ertl <a9404849@unet.univie.ac.at>
    uid                            Lukas Ertl <l.ertl@univie.ac.at>
    uid                            Lukas Ertl <le@univie.ac.at>
    sub  1024g/5960CE8E 2000-11-23

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.2.5 (FreeBSD)

    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
    Fv2s0kptGIN2izILm1myaA==
    =qAVp
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.72. Brendan Fabeny `<bf@FreeBSD.org>`

    pub   2048R/9806EBC1 2010-06-08 [expires: 2012-06-07]
          Key fingerprint = 2075 ADD3 7634 A4F9 5357  D934 08E7 06D9 9806 EBC1
    uid                  b. f. <bf@freebsd.org>
    sub   2048R/1CD0AD79 2010-06-08 [expires: 2012-06-07]

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQENBEwNjXUBCACWeNjUFZ8rzqxrEIdL3wVrvkWVwaf5HW0YwoIMq7ba3hRcPWuv
    yr3frrdvqJv9rHJYA8f6uE5dCkb7OSI3YXHC5QN/H9xB1bvRuSUyD1MwmuihUX/A
    7yk7HzUE3sXy1U3QIMJWgpvnN242OZtH2XlanuSoDdBL4Qh2Fw7ywQaZvzNlZKUa
    hPF0Ty7wci/5xuKB7T72Qk4vAYYqxUxYJR/5ox8vM/xiAh5XxPbOuAF0p/wQiiRi
    NjF/f6tluQu6Q6VFwHXGcZvJK39nNNpadsDCegdRCUUFJsHm8dSjlIyi5CTyUsXf
    btdlagPTlhiBtOYgtcfRZoPBLFjVafjqqL57ABEBAAG0FmIuIGYuIDxiZkBmcmVl
    YnNkLm9yZz6JAT4EEwECACgFAkwNjXUCGwMFCQPCZwAGCwkIBwMCBhUIAgkKCwQW
    AgMBAh4BAheAAAoJEAjnBtmYBuvBVG4H/Rc/AqfFfQi+qph0HKggVJyzEKvhVWhR
    8RZ+8zS4t72b4kIJT8FUOiHMpq/+qC+Lt5MFPCtxmOETDgpD9GM1EkgJ1rSDrN8m
    kbXuQ9Z95KztU0tGsv87JT0xSpxeMnYaQ1NWx5bkKG5AOf6ZZaUVas0XH8/9QCFH
    gqy7Xe2eGsLO52ZH/4AI8cFc0FPF17hSWTIAwIyuxcRLas+KdV1j74xaBu6parX3
    2FoquEFRAPoEcuey2aSWoo4OCBCoGYqh4mhWbEuLOac0NP3oLDFjEDJhE7UT+0gx
    W5LLwPr0FARkAbRZp84vt9rD5MrhNcZy0X3PBpykium4OrEIp5l9OM65AQ0ETA2N
    dQEIAK1D1POvE2tRnTeNRW6lw/bu9zx8d4PS2R7GepQkbUWQxpgcwSEoB1JGN8jw
    0iKD8KRoFLwQx+TizzRShRsOeYj7beK6rY5H1C0DbrQX6T7eMumOVV2RklVFqYiZ
    HcJh8LGjJN/tKt4k7OnDs40lHOFHxvKW+PiKogfiWDKpc/wns9mAhcXrbT0SZ4Be
    qbQOsZMfUbvOZUek4+lOZuaCb0M3QU47bsFrJonPn7VEHw7mkhTNL9a6KKc4ZqQw
    52ECVq4dKjNIkvaQZyosA7tRCr+CBYUumE6fssk72SdT0RD/tgHgKfgWZ9mxB3R0
    l7CCm8v4c24tZQuuGQG26WWeD8sAEQEAAYkBJQQYAQIADwUCTA2NdQIbDAUJA8Jn
    AAAKCRAI5wbZmAbrwabXB/9ggUz/04tDZdX4pDsfDoBKtnJ9r1yNWrniBBNlcVLZ
    G+3BwF5EfZAA/q3lSJmC4BVzaDUwrrL/zbPb0WhE5cGG/byLiByXsEDVSId4Kv/Z
    bLaPyox8RIYUL/wCjt/57FIORwGVhUr8oDDRLeSoIsazXWhvWfx9qCdzcZTabSkN
    74Q0WxQuOagvpl4Kcf3eQEQuB+BvxDQx9JvEXUZanurRP018uTdXficJ5MS+SwXq
    gJUSSPybwVjK/ll1G33185jnSQSFNwGq1udet7vkDjQKNmkcev1SJY1g0S9iFKRz
    e6dmnydHGtQ0508cCusMPNCQ4HRhQHEW7w5yu1J4t3UY
    =bgLz
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.73. Rong-En Fan `<rafan@FreeBSD.org>`

    pub   1024D/86FD8C68 2004-06-04
          Key fingerprint = DC9E 5B4D 2DDA D5C7 B6F8  6E69 D78E 1091 86FD 8C68
    uid                  Rong-En Fan <rafan@infor.org>
    uid                  Rong-En Fan <rafan@csie.org>
    uid                  Rong-En Fan <rafan@FreeBSD.org>
    sub   2048g/42A8637E 2009-01-25 [expires: 2012-07-08]

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    [encoded data, 4680 characters]
    D/Fet8nCx6Ef1M1J4Q==
    =1iVI
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.74. Stefan Farfeleder `<stefanf@FreeBSD.org>`

    pub  1024D/8BEFD15F 2004-03-14 Stefan Farfeleder <stefan@fafoe.narf.at>
         Key fingerprint = 4220 FE60 A4A1 A490 5213  27A6 319F 8B28 8BEF D15F
    uid                            Stefan Farfeleder <stefanf@complang.tuwien.ac.at>
    uid                            Stefan Farfeleder <stefanf@FreeBSD.org>
    uid                            Stefan Farfeleder <stefanf@ten15.org>
    sub  2048g/418753E9 2004-03-14 [expires: 2007-03-14]

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEBUhZkRBACOyBTXaf9n0gkvq52yhACaPjUpAY4c+Z+xDM5jZZNpcaEyuU5N
    ipJdvlKIIkfB+Jka5TxiUBskSo6cegPW7k3G9/as+39SeOexEw5aH1WROcrqD1Wq
    iBTJ/Ey8eVleGTP/3vpbUoT3gcNZuus00J75OmJV06xyTA9M0tSy1/aIxwCgrbCJ
    Xr3wLOPYiGXf5WbWfy08DmUEAI2xYIycYgZ7ogcqFcu6gShO/uTcXkZL0xOIC8el
    rAC/HciJagmvYPjQimQeKhqyX+uvnhguiS+XZYx9yqegOG1dSOVWw6FJTYgzKeT7
    6tHmaplB4JQLkUSBn8p2fsyXAaIA4M+2c9fYf59El5+OyfOhGfAEJNJv1oGLYWic
    Bbt0A/98H+rPmPwtv4ntIvCq5xkvjENzmG6WerNF5dXHsoG6Lnhe++4jUquHseEI
    +u4ou+v1it5vBTnPI2Wz02WP1Oyz7JC0cPAbrTGz+eaaNV+M1wD7yqj1poW74buk
    4hJ+myIqC1dRrliAyrr75xHl3pr212+8Cty8RTiNF9xgICtH3bQoU3RlZmFuIEZh
    cmZlbGVkZXIgPHN0ZWZhbkBmYWZvZS5uYXJmLmF0PohnBBMRAgAnAhsDBQkFo5qA
    BgsJCAcDAgMVAgMDFgIBAh4BAheABQJAmCd/AhkBAAoJEDGfiyiL79FfqEoAn0cP
    NQJYvSLWsU4gD/cffKUtLEKiAJ47lf0I7dFdAJSqqxSCOrw7iuWhTrQxU3RlZmFu
    IEZhcmZlbGVkZXIgPHN0ZWZhbmZAY29tcGxhbmcudHV3aWVuLmFjLmF0PohkBBMR
    AgAkBQJAVIenAhsDBQkFo5qABgsJCAcDAgMVAgMDFgIBAh4BAheAAAoJEDGfiyiL
    79FfeOMAnR6XllE6b+BKnoRjBOC06PXfoK0jAJ4yDtL0vkYkW9LRmoFkWpxJYilU
    ALQnU3RlZmFuIEZhcmZlbGVkZXIgPHN0ZWZhbmZARnJlZUJTRC5vcmc+iGUEExEC
    ACUFAkCYJIMCGwMFCQWjmoAHCwkIBwMCAQMVAgMDFgIBAh4BAheAAAoJEDGfiyiL
    79FfwykAoIes15zWxNJ7iQr1n4rP+x1LidM5AKCDakRpNHAdMiaJJRNrHt9I1kOu
    FbQlU3RlZmFuIEZhcmZlbGVkZXIgPHN0ZWZhbmZAdGVuMTUub3JnPohlBBMRAgAl
    BQJAmC7cAhsDBQkFo5qABwsJCAcDAgEDFQIDAxYCAQIeAQIXgAAKCRAxn4soi+/R
    X//IAKCmPHdkW+JyvXq8Ph/4AcoSYGltQgCeOyA+WXLvjD8s36h1ITQXleLr0Ju5
    Ag0EQFSFrBAIANrcNEggDb7bS/TkhZg5CEw0HP0bFOogCowNgGZ/9EzZA1SvABYb
    vun0RyK0Ceh51Vr0Lb01i6cIDTH/cBVMqXX75YPusncMzsEuMdBCzMqKRPCpimUD
    jFmMIBrkbtu8OTwaL+Xy1j7/SyfYv8fV6q6ibGWgN4pcyDmItTWYRNnR1G4EdIvl
    a2CgQr7AgzWPGeeZLrUqUuLjYKwZ5JUqch3ooU4e+eFkYjovMyiC5E23UxZWyDZQ
    DA1aOizxH7519R5l1YDsrqjZdVz3Ks7iCPYZ+T2QMGM7oUDjbt0xAhQCt15yj2K7
    f0m6KtmHWzwgf5Dagcph00anBMldDQ1RqscAAwUIAMReNMLnk1jhYUYoitYNDJTO
    Pp1X5bk66+b5yHW2Ul9DDboe9tp37AoSJf1hEI7eyB1qkKO3bt9nePKOuAe64ft9
    jMYEm70IS3tmo3hHyTbLuOpxF3f7ZHmai2gXPdDmIczDqkE1PneX9gJQadQTqvky
    4PVHKVUGTBScI0S830ZBbIsvoYimjGCPMuz4UT0vKR3XLay4RjwCYC6waqRuJoBq
    rfm/vmx6/GNfb/jwZgN3QYPgTptx65eAdEAy2C3Y7RbMrbx9qqvx5TxaS2yVFy6X
    6gIrSmFSFE8rplPDActw1V4YMyuwnyVvGe93pYwYfxzM/BxN09V9QBQUhIa7TMiI
    TwQYEQIADwUCQFSFrAIbDAUJBaOagAAKCRAxn4soi+/RXy2fAJ99u5jBvCIXuEPa
    rLB9utH3lU/ymgCcD/fpfY9v7wyOrivOy6Wz3ZWjdnQ=
    =9khA
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.75. Babak Farrokhi `<farrokhi@FreeBSD.org>`

    pub   1024D/7C810476 2005-12-22
          Key fingerprint = AABD 388F A207 58B4 2EE3  5DFD 4FC1 32C3 7C81 0476
    uid                  Babak Farrokhi <farrokhi@FreeBSD.org>
    uid                  Babak Farrokhi <babak@farrokhi.net>
    sub   2048g/2A5F93C7 2005-12-22

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEOquWMRBADPeAMeFy9OMbD3PxFjNmPIuY9CMb/fP9G3KNugVwLoHj29pXHS
    QDo9OGHmA6udL6ZjZt/cWsU6CBwrVmr7nnqIXwOFGsvv4sT4cQJd51ypMFcvrYvi
    UmdfnNZWeggviCMYdZErMqVdH7QKZyZ/7xB1IBV/66Bu768nQlSpTmqTYwCgwpUr
    8V37ACzVXUZ/1CPqtadIe50D/1rlR4GTzMnmJGBbqY4c2nNtaUA2HEzI11QsHvFp
    jTEcHI/RdhLv8dcFFAD0PmLC+5W7OydXvQXBfWzVXmrEPzFprwOc79wfCB+JzOt9
    JzyClVDYvhYd0f2kxrXOR3ddLaBCMU9A/NxvDL05TCE8b3rSuV2VRT6E6A45/88t
    aKKvA/9ewMdS3zicyyK33FTYTecGJc6Kt1ke/spq6jo6k3+L94Z7eZrZrhXGMRYg
    Ibbm3VuxoPeIqyY8SujHwNNzP7PqGp8MVefjzktldMyvbJex8oIyB0NMrHTJ2JTp
    ScJAetOE/mXYhMSACgWbebu6uBEigmaz1D4WNU/ITf8xuX784rQjQmFiYWsgRmFy
    cm9raGkgPGJhYmFrQGZhcnJva2hpLm5ldD6IYAQTEQIAIAUCQ6q5YwIbAwYLCQgH
    AwIEFQIIAwQWAgMBAh4BAheAAAoJEE/BMsN8gQR2iM4AoKXtRmdbGhmrJ3cW6lcd
    gP4IUfUkAJ9mqLQk3ztstsPzzovhwV4sIH2VgbQlQmFiYWsgRmFycm9raGkgPGZh
    cnJva2hpQEZyZWVCU0Qub3JnPohgBBMRAgAgBQJFUO2LAhsDBgsJCAcDAgQVAggD
    BBYCAwECHgECF4AACgkQT8Eyw3yBBHZd/gCgmHXJVgY+AwvJvL2v2qG6+P2EsP4A
    nimm5LNueFg2PbDsRb+Iz53zw8d6uQINBEOquXEQCADPKrfxmpqJEbVpJV1PfcLJ
    KpvF/0s1NEhvrXVnm0GhId8R96n22E9oD7QYTw/+TkdCksw0dcAIvFH2y++HNQoE
    NVgoyVW32Rw076Va8nizA2icB6hEJwKiI400qKjZknj2pnILPHORq+Zl43sHaXnB
    imchl5U9gZI4EXCRC0u87oLd0IHuFMUGYEfhsxninLpmFNPjS55zEhPDIBTuFFiN
    NFZ8aLxq6APGd1lbLJhYnQIYZJreaI3lXc0VYqjkaB5WBeYXKNNF3y39yNY3SXFt
    /dwIP60IoaIAjARFLqvUNYOsHpjsVAItxxMdTpAlX28VYWsr3quGL97Xhd4NfDvb
    AAMFB/9ep1jcpFocEOurMYZkIrPE0CdgdeWzlhHhW2F38cZTj46WxoAY21QOfjRx
    tCcGDrKNNwoHO3TIsuPrEI1OtJ4y8b7Pj2zuv/kUAEMUjl5dutg2kIDz5cs5zxI6
    4HhUx17vQGTOK3l1I2JxoNrMKPcDKxegHqYqpzb6vEr3gsKT7GSeMBREq0rvfZfQ
    ZmZTLfdy0AiQ6KsVt1YV9wUE7Kq5OmhjVZNovhZtxO/tzppQLNX/62wdf1OmFZIn
    xWrYFHeH/N+QGBmMRf0NMb0oOn4nEMem9QhSRcW9UcyU1K7Usa3m3WG7qrmcq+ri
    9RVM7/8wJCKNJD1ej35rMQYVrolIiEkEGBECAAkFAkOquXECGwwACgkQT8Eyw3yB
    BHZy+ACgqz3KenkNoTQKFv4nrGUHnAqMm5sAn2Z+BhMOzEhuimOTVLXVzKuipov0
    =vL0B
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.76. Chris D. Faulhaber `<jedgar@FreeBSD.org>`

    pub  1024D/FE817A50 2000-12-20 Chris D. Faulhaber <jedgar@FreeBSD.org>
         Key fingerprint = A47D A838 9216 F921 A456  54FF 39B6 86E0 FE81 7A50
    uid                            Chris D. Faulhaber <jedgar@fxp.org>
    sub  2048g/93452698 2000-12-20

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.0.6 (FreeBSD)
    Comment: For info see http://www.gnupg.org

    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
    6r7mPk8=
    =R6MH
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.77. Brian F. Feldman `<green@FreeBSD.org>`

    pub  1024D/41C13DE3 2000-01-11 Brian Fundakowski Feldman <green@FreeBSD.org>
         Key fingerprint = 6A32 733A 1BF6 E07B 5B8D  AE14 CC9D DCA2 41C1 3DE3
    sub  1024g/A98B9FCC 2000-01-11 [expires: 2001-01-10]

    pub  1024D/773905D6 2000-09-02 Brian Fundakowski Feldman <green@FreeBSD.org>
         Key fingerprint = FE23 7481 91EA 5E58 45EA  6A01 B552 B043 7739 05D6
    sub  2048g/D2009B98 2000-09-02

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.0.6 (FreeBSD)
    Comment: For info see http://www.gnupg.org

    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
    uPPUsA==
    =oR1w
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.78. Mário Sérgio Fujikawa Ferreira `<lioux@FreeBSD.org>`

    pub   1024D/75A63712 2006-02-23 [expires: 2007-02-23]
          Key fingerprint = 42F2 2F74 8EF9 5296 898F  C981 E9CF 463B 75A6 3712
    uid                  Mario Sergio Fujikawa Ferreira (lioux) <lioux@FreeBSD.org>
    uid                  Mario Sergio Fujikawa Ferreira <lioux@uol.com.br>
    sub   4096g/BB7D80F2 2006-02-23 [expires: 2007-02-23]

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEP9+FkRBACKcQPLBb7vcUuQTM+Zqfwsd44vzULREV7qHVvTqJWDsFyQd4hz
    /rX86mmHiS/fOh68SonP6QdXO2i+d+LshgLTVPBlW92TXsFYP09FUWWx2dm0P249
    P7xoIcQ7slhHnSVuPDObzm5T7yDXL02OeO6qonN62IjjxB8xzFo+W6SsAwCg2BtA
    gvPq1hyeXVXlbItG/9Hbul8D/0yjvmED7dj7eQpm6LvjswjkMoRdg6cgR+/N9LdP
    GIdjGHkfFnW8hRg7QAPzmstkhtY1I3zEjVVCcYjJrIibaqBAUAx0v5HszLKKRnrI
    ZZm4IXKFpkVC2sV475FpFTPXIiHmyzq1lbpgAQXX71yFNJ7hsEuYx1z2Ihblz/B+
    KHJ8A/9UNVEPc4s2YgjntQSDWRY+Vcr6M4bN/+ogCJ7XYN5lcHjB+gUD8kAWupEH
    1hDV3WFahpG1i0MusOZM+dggTXSshd76z0JlOJjbywEv2Z2nb+1b1GU4EY+2RlTi
    nP9rO7EqtPhHjNkpXfsSHFOC3qfcsDhphXOJeOFwwhMhkxmkHbQxTWFyaW8gU2Vy
    Z2lvIEZ1amlrYXdhIEZlcnJlaXJhIDxsaW91eEB1b2wuY29tLmJyPohmBBMRAgAm
    BQJD/fhZAhsDBQkB4TOABgsJCAcDAgQVAggDBBYCAwECHgECF4AACgkQ6c9GO3Wm
    NxJtqwCfZrWhCzRFNX2TkVEW1zMS0mw5aLwAnRUNKvayClkvdqHMLksYTFtUu4RT
    tDpNYXJpbyBTZXJnaW8gRnVqaWthd2EgRmVycmVpcmEgKGxpb3V4KSA8bGlvdXhA
    RnJlZUJTRC5vcmc+iGYEExECACYFAkP9+lYCGwMFCQHhM4AGCwkIBwMCBBUCCAME
    FgIDAQIeAQIXgAAKCRDpz0Y7daY3EiNhAKCLZTyIxlE0tU91Cy6YxRKCu1Kv5ACg
    rbLcuizHmkAx/du+XaG+aveC4Ui5BA0EQ/35pBAQAL9uIr9y2BwxMeHbj6LLmoPC
    DmQnzXWWWIZPtEyWlUv6ANLvtNX8M0ZWzfy4Z4EXof6/m3Z8KsAEZf22AObR+CA1
    mgRRmDxVfWDU3fYYIVwMTQ/IqjWz5TPfldXySqxtW/Zm16ODYv3c+tnu/KX/M/WQ
    1l9pLfIB9G3NlnHwHTWBdIQhomXLzurW0yuq4LXobA/nQmOWmrQwjXNk1zzO+p5t
    v18thaXoF9pGObS86oCCfwaUMg4RD6PtizVUSA+frFmcR0/kpNGAWw4gIqHY++9c
    Ri+Tjvbii0ZhBZNb3l2spqhg7zMAqzQ/wR0kJt09FegN6vClMLDBJW5Rveb7u4XT
    e01JY5E9h2Nt/RaJQ2RgaoD0bNLx32Zda0GOzidFAK+0QzOGvfMKimaye3YkWRXg
    GFZFHH4k0FIcRd461ta4aN0VMKbpRbYxZP8oxmN3VrJdrf91Qqton2Ljrqk4ndQA
    xb6zbtJeobx6MiYlDf4GB4Wgm4g2L/BYH+ObV5QqnTnwMIjP6Y3BvP941d7eX6VM
    cpJq3ueDK+FHbF+KEozHycvlZrj+el5SuWXtNdOVma/DUQjHJ1DHMmciVqZwArnm
    Ygg7f0G7dMxBi4n4OdHHSkJXwth4ojbZf+zDDQnHmt7J04/EArgEvBKxOGEh8EcR
    evS6bR8NvH7lfXjl+7AbAAMFD/9DHsJNi6bx5sciwo7xvwx9NZY2MTHBxaWV3iWj
    9OIoiklZt8Ca8a4ukDc5d2t/DrGr/rtKsUyQ7utEhfdKr17TYZH9mW9ZzOKp5sjO
    aWOcmFCGMjemejPedAlH8sBD4I4zg+Ph/tMRgAjyw/ZkhXlUbVJ4ooibU1uix5Wy
    AcxXSyrCOCLbVfpcCphiXCRlFsVuyiTkjM1D3STr6M6YSq5vTpbWkUvHs9c1pgqh
    51SoGR8tcyUM3JUvY5fTos1sRlIS6XexXEvmBe51jcuV+4I9cI2cXWVpWU09zBTE
    mF0WSgs2pXZftMpbLwaTSjzGA4VNQQ5jocsfWUP58HgBCyO4x8G+N1A9PWYtKUoB
    WVcjjl2ak8G0mbTGb03QaIDAy2CVkeKYVws6ZTQBZtfKiO8Vz2UQcklRNTPTxYHo
    69kIY47+6WW44huXc81ACGx2GXXDZtqxasysRtzAzl6U/FKy2lHE7Buyjh7VKYI1
    7IncPhl/XyEBWTESAppWvd3WiCdT0zq6wpwxrdpLprWblqxLRttK2Emwe2KhvDk4
    3jdj/KOlMi2OUa600mbRfjX78MbNHisLUEG1ceMXaQY3quaerb3Q1N8Rptn8sT1U
    RMqbVlP4fxFwJg9F8nyLYzBcVm1H9WGFoojCqQ3htuvI8kca6I/UQxHG7V9Meqbm
    uFqP7YhPBBgRAgAPBQJD/fmkAhsMBQkB4TOAAAoJEOnPRjt1pjcSt1UAn19TWL7b
    atBvRWIroNaSp6+y2jWHAJwMSHg8w1dVEw3XxYR1fhEhE1hBWA==
    =lXvC
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.79. Tony Finch `<fanf@FreeBSD.org>`

    pub  1024D/84C71B6E 2002-05-03 Tony Finch <dot@dotat.at>
         Key fingerprint = 199C F25B 2679 6D04 63C5  2159 FFC0 F14C 84C7 1B6E
    uid                            Tony Finch <fanf@FreeBSD.org>
    uid                            Tony Finch <fanf@apache.org>
    uid                            Tony Finch <fanf2@cam.ac.uk>
    sub  2048g/FD101E8B 2002-05-03

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.0.7 (FreeBSD)

    [encoded data, 5135 characters]
    KnkOqXNQ7FzYXOIPK74=
    =7TEa
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.80. Marc Fonvieille `<blackend@FreeBSD.org>`

    pub  1024D/4F8E74E8 2004-12-25 Marc Fonvieille <blackend@FreeBSD.org>
         Key fingerprint = 55D3 4883 4A04 828A A139  A5CF CD0F 51C0 4F8E 74E8
    uid                            Marc Fonvieille <marc@blackend.org>
    uid                            Marc Fonvieille <marc@freebsd-fr.org>
    sub  1024g/37AD4E7D 2004-12-25

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEHNnEURBADK+anixdFH+aSxIGLw1soiwMXSiVPD56dmoA/VAFqrE3XVo/y6
    bPqpSNwvvhL8Um2v9G/7EDMorqekYErS3sgUOtrA05NSJlOUJk/97ZFzAlGZ4/u3
    CwtpFBdiATaCvAdMocWhxVkyIFvo6AqVNz6RkTldJUuwVzGelXWk9IfI1wCg586A
    r7CU9HIsVJD7/vIbIIsKDncEAKYh6XKEBHWI1pF3Ony+rPhlXCV9W3yraiBb/YXS
    XaPr2Wy3XC86ufHZs8ewug40DqcSfRobj7qV5II1CMoVrwhUuJ9Y087ETjt7xC9d
    xI4jrkVZlaRt0m/LUKLLfz6L9KaLWRkBfFhOjJH6TAv779q0n/KfaiU48Xuue6ff
    KNDtA/96/oTg9+NWjm47zCdQeyZGzEE27btvzbrLZuG6TcP7gAV0F6udGbImgw1f
    mKrQZn4ZtVKCKS8IzTn/UM/P26Pn9JOzDKd2voPE9Ee8D0L8ywg3mxmBdm+TY9vs
    r2OEV89Nc2sJZm5CeiqEvfACI8KwbExqWy5TW7Qz+zLi3zk+ErQjTWFyYyBGb252
    aWVpbGxlIDxtYXJjQGJsYWNrZW5kLm9yZz6IXgQTEQIAHgIbAwYLCQgHAwIDFQID
    AxYCAQIeAQIXgAUCQhzb7QAKCRDND1HAT4506BdRAKCaBqu+lvdAp3fhgIJxL0XY
    YG6vhgCeIyaLMYFzQfii5s20wePEhG3rfMq0JU1hcmMgRm9udmllaWxsZSA8bWFy
    Y0BmcmVlYnNkLWZyLm9yZz6IXgQTEQIAHgUCQc2dRAIbAwYLCQgHAwIDFQIDAxYC
    AQIeAQIXgAAKCRDND1HAT4506PmiAKDanV0mSeUSRJuDmfA13o4ELsQ38gCfaEgn
    LyzKfRawEhJdqsGPWW/fnte0Jk1hcmMgRm9udmllaWxsZSA8YmxhY2tlbmRARnJl
    ZUJTRC5vcmc+iGEEExECACECGwMGCwkIBwMCAxUCAwMWAgECHgECF4AFAkIc2/AC
    GQEACgkQzQ9RwE+OdOisEwCfY8xxYIhN0w9CSUbsN1/EoYp0D+gAoLedf7wiwvmQ
    O0XpcJaXgtlO4x6fuQENBEHNnEgQBADPHKv6eOKxk2HPrm180rVAM6/d3LQkBEGL
    Ma4QuSXXbTDXpzfrt6YOLi+ILe/hu5DNnGbQyvkBB1lLdmqW03lat1ape9wytNoA
    kHOX2C4kom2WA3FvtAoxojmylEn8S0koH7RUuhhTM29rVBap0W+UpwpnxmtbGXEO
    NciLWy5CzwADBQP8CSp5Hh4+7uXIRpp+RQ8PKJ2vQVnf7c+QTPDN5MLXEv1UK9gK
    vtb4sms2yr2IuBMP1FSAFN6DpedjoZSKimxqCyMNbyy0io2pMrNDCpqCadKOyLWN
    gJhJTxE+3kYeZqzZExvf8q+faQqXp91bbS4XZ4JzgAkT3B0mvQ1OHlVlAauISQQY
    EQIACQUCQc2cSAIbDAAKCRDND1HAT4506PAVAKCWlLnQdfJsRZtt0Q880glcLzc8
    SwCg47K+qs1q5klc1cCIaCj+/TtsLCk=
    =rg/z
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.81. Pete Fritchman `<petef@FreeBSD.org>`

    pub  1024D/74B91CFD 2001-01-30 Pete Fritchman <petef@FreeBSD.org>
         Key fingerprint = 9A9F 8A13 DB0D 7777 8D8E  1CB2 C5C9 A08F 74B9 1CFD
    uid                            Pete Fritchman <petef@databits.net>
    uid                            Pete Fritchman <petef@csh.rit.edu>
    sub  1024g/0C02AF0C 2001-01-30

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.0.6 (FreeBSD)
    Comment: For info see http://www.gnupg.org

    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
    oIDNzwMAwpXoLZkEkk/dMUDTsFCy
    =ZbG1
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.82. Bernhard Fröhlich `<decke@FreeBSD.org>`

    pub   1024D/CF5840D4 2008-01-07 [expires: 2015-05-05]
          Key fingerprint = 47F6 BDF1 DF9E 81E2 2C54  8A06 E796 7A5A CF58 40D4
    uid                  Bernhard Fr�hlich <decke@FreeBSD.org>
    uid                  Bernhard Fr�hlich <decke@bluelife.at>
    sub   2048g/4E51CE79 2008-01-07

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEeCHjoRBACSaB/CWwMs6NSHptLM0nqOigdiEMILpAOtekIVkzQ/0zB+G/fw
    J/vtVPoRZu0NlINwCSfnnOSpx0yZuX7CDJVVcGxWf2wt2Ly+1U/j5CnP1QV6dLhz
    iCbrvfV0GwXGvmJVhxX5lbVB3adzODgPa5S1v/Cj2Dbmqx6KFyMRsaepUwCg/dSE
    ZQdHiAOL7zh21WTtNbXvXqMEAIdk1WvclSjR8tv5HRQYOzlXZo2+EIeJklxNuBe9
    BuGNax1Su2R+Feq/qH0xSTayZmkKV1U7ECFq6PFYUpbn2aroSMmJTQKifsBk5M+J
    8Yrxg/tulUTiwi3FlrKkVyf3JNCmtDZbZGgCHAXUgIJbnHNzW2nRYk3LeeBJ4T74
    3VTZA/0Z8Gti+9zYP4RvCnbufsBO8dS7H3qMaaDa+Jnj2KYnLbQXhUH0hSRPePZd
    ylPSYMYhbvZxLF+kVoxRPKn4o5o524ECkO4tJuQwZV72xCRemyMalhyObfPUv3Pv
    2c9DTpeP6fiO+lK4jPSqjFUQ+wdJz/qxXYdvCnfperQftmGvILQmQmVybmhhcmQg
    RnLDtmhsaWNoIDxkZWNrZUBibHVlbGlmZS5hdD6IZAQTEQIAJAIbAwYLCQgHAwID
    FQIDAxYCAQIeAQIXgAUCS+MdjgUJDccA1AAKCRDnlnpaz1hA1JVIAKCMAnvJIfw1
    +r+G0Ke38mRrnhzJRACgnnSswoyJD0lvmZR8VIGvBOQ72AK0JkJlcm5oYXJkIEZy
    w7ZobGljaCA8ZGVja2VARnJlZUJTRC5vcmc+iGgEExECACgFAkvjHfsCGwMFCQ3H
    ANQGCwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJEOeWelrPWEDUO+cAn3ccQBd/
    abvhD/0pllCsWvT/ULv8AKDx/E1tUCqUkenPB1JcIv5sQ6e/DLkCDQRHgh5eEAgA
    mjk/OYgnOp2A6FTh7AlWOVlrpo+DPQ4bxGXUYtudxptm3hUtaV64zWzL1EF5Ky7u
    YNuJw3CGHX6tDV0KZ6kYGphkcjkv9i/T3U1YaqTklgmbzkSgIcuCzHP+6z91SnjY
    VL+HG4egz3GPBn+vWORt78JxgLjLlLQoLQhAliQK4v0+J11kXMT5mZc6IUpilJNw
    qLbsMKPUxYV8bco3NTMfmkcdJah9ymGQOiRHsTt9VCuvXClnpDF7TpxRd/BICfdZ
    JyNQYTvVV0d/g24zumsyxgcI0qup+NKic/M3G/+4Bo+f57FRRndARktAUqc2NSGK
    mTlqsOuJZ0RPDmwGTIcPAwADBQf/dZUT6idKhsd0kpaHpX0V/LES8kFdh3mNiU3s
    IEOeF9jslZEg3Bl2/AmOIVKWheu8396CjqKr+vjmXlEKABj3YF2ARFj9yg/epZdq
    OGyVjWkw4JhigVmtbc/BhNX1uMy/SlBpZUIyubvtp21f8YOdLQcV2in+x/Vfovhj
    kp2ms7fX0PnfwSy3Q27B5bvlU/jPxsog8dJ9Mf0tfoEWs0DBrPkDjBbvwu0VM2Qq
    JOasZHOS2qAAnE77X0dkA1c1eQeXtgoLbqMrWdp6tS532KiTQN85GRMJbECocMUE
    pfez5pVX7oYxsotEqIfBHqqgx4Zv//oA0fE9dIAc+RawKq64C4hJBBgRAgAJBQJH
    gh5eAhsMAAoJEOeWelrPWEDUtV4AnA6B3aXqQMK3LGBF5RYuPqIf2BeZAKCo6fV+
    qu2NvCjYzT8RrLvqANb1wQ==
    =ucJ/
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.83. Bill Fumerola `<billf@FreeBSD.org>`

    pub  1024D/7F868268 2000-12-07 Bill Fumerola (FreeBSD Developer) <billf@FreeBSD.org>
         Key fingerprint = 5B2D 908E 4C2B F253 DAEB  FC01 8436 B70B 7F86 8268
    uid                            Bill Fumerola (Security Yahoo) <fumerola@yahoo-inc.com>
    sub  1024g/43980DA9 2000-12-07

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.0.6 (FreeBSD)
    Comment: For info see http://www.gnupg.org

    mQGhBDov9skRBADzrOg1JwL+kHv1dTePFR2lNrErbMe+WVeP1sdGuKcYTP15VQyJ
    WV/6ZoUGsihAmFGcGyJuhcUJbvlvqRf4ZlwD80a1y33SNxxsqe8n5dm4Wy9FElL5
    bjs4L0kGJlSL8KnYYUTQKEDBcTch3+GTjgS4NQBZWy4h0W6EWqgxr7CZYwCgpeB3
    tnDcY3ELA5EP6Bx8wZN97zUEAJo972g6HplZyuyjqqTjdztXNgD+DlsyNpNkEfqs
    AnZcr4aqEeyMNtGl8gPIc9JwPPSlX5OfmjCm3zWtEjwrHway6YPggXqX8efuY3lo
    LxVfjRt6NLI0TuV0FhojgHuJYB9RsXQFZxbYH8A/j6jQHbiN3wTyYHtaAJJ/iELg
    82oWA/dTeR0kjvjgrfB1MiFCH4AL77bZWuxSv1CvV09DlYtSxfLpyBm4OHvDZmOv
    V6zT9COM2+f2/EMI15cNllYXB3WnwfYit9tZtEFBl1+OshqYBbcNkser1pBd5jP7
    fDAkpDYGx5OgpqAS8hz4XLPZdS/HXSegodYKinU0p0Rzza6KtDdCaWxsIEZ1bWVy
    b2xhIChTZWN1cml0eSBZYWhvbykgPGZ1bWVyb2xhQHlhaG9vLWluYy5jb20+iFcE
    ExECABcFAjov9skFCwcKAwQDFQMCAxYCAQIXgAAKCRCENrcLf4aCaPIbAJ41RzBA
    OuxYwZFUSbMbU5PHENe6ngCfcnVzDC5+lkssh628m3GTG0EjINS0NUJpbGwgRnVt
    ZXJvbGEgKEZyZWVCU0QgRGV2ZWxvcGVyKSA8YmlsbGZARnJlZUJTRC5vcmc+iFcE
    ExECABcFAjvw0YEFCwcKAwQDFQMCAxYCAQIXgAAKCRCENrcLf4aCaMcVAJ9brBw2
    LPC2RcZpsm5S//dETM/qFwCgiuPpVVwBP7ibzn5xQVNAdB12xOa5AQ0EOi/2yxAE
    AL/FYZQw0b7NrD04j6dxrp7wBjgd19ux4zQocXgXPlzpBZxQ4A4/icGOLnIU+vDu
    ltbpf7aMTd/mJokJwx9pE82pOgxk6i42c5qKkwkmjhO2/4FFk8HXco2DJ9roRi0n
    eBJztXskUY4cVavKdXNeJY2JUeBYvmrnREWG1W2/0ZMzAAMFA/4ytkv46phPokQe
    s7yy67bEeHiydjvf3uM+v1z3xWoLw5ZU+8hLdFkESpZ7u+qA1mj3i7LNBZhfA5Bt
    Cgl10v9DWX9cda2HlMjyyI9p3dfPlOcAh69PMwexJ1VYPtizK4ZkC8dNk0rTVPOf
    SYftSsFGdDbUAq3ZokhjLkVRFY1LxYhGBBgRAgAGBQI6L/bLAAoJEIQ2twt/hoJo
    ewUAnRRikiShfD9wCuyMazVJ9+FZLWiiAJ0YFgos24sNEFq5rA4I8UZU0LZ5Iw==
    =y5FR
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.84. Andriy Gapon `<avg@FreeBSD.org>`

    pub   2048R/A651FE2F 2009-02-16
          Key fingerprint = F234 4D58 DEFF 5E3A 4E0F  13BC 74A5 2D27 A651 FE2F
    uid                  Andriy Gapon (FreeBSD) <avg@freebsd.org>
    uid                  Andriy Gapon (FreeBSD) <avg@icyb.net.ua>
    sub   4096R/F9A4D312 2009-02-16

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQENBEmZYYwBCADCrWmjbSj/846S7irndSa66XI//DVoOrTu/thqFyluQQmhhRuB
    +ndX79CWe2IRvr3l4bIaD3Lx2pq6OsUPWOsOAJSt90FGkynqSmO9MbcjD8ZE9Hkb
    mgqIW2NtEnCiVw20OlI2OfjhyavEcFAHxHsITRFVDlmjxutlyDkPmWXPNjsjfCaI
    FmzObn+W1adLT3r835x5mst9vBfuRFCTnm/yCHStkPTpW2mZ3njfDWEiQKc0ANaw
    EOEthnekr0jRvJmnC53JsJlwVH9yv9CY5EM5gVehmKuRok8NcVaPdNA7M9CATpaC
    eYQ+by4j5RBSMgXlFxhjHxM6VfGNv5vb6KG/ABEBAAG0KEFuZHJpeSBHYXBvbiAo
    RnJlZUJTRCkgPGF2Z0BpY3liLm5ldC51YT6JATYEEwECACAFAkmZYl4CGwMGCwkI
    BwMCBBUCCAMEFgIDAQIeAQIXgAAKCRB0pS0nplH+LxrvB/0R7uiYKZE63nqMbL2P
    9mqrbpC3PmrA0bNpfonu4wSOyvgeK/xJ0MTnSUTv5LLb1g+qF45LZSkYXsjncD+i
    HfLID68iSHBSWxQwgLePN1cEpDgcec/2YTpWBdzlC6Q4EtGunZs5jhEC9a4wDqBx
    uRzhexNDEiRzN0bZwqg/E2T7eY0oXfpwpdwsfAeuPniEwEJSFjSreMwg71wPIAb5
    HcuMieKnxjlqDEW7xQ0nrTydWnhxVvJoeVdB93mKnmhtQ9K/G6cV0q75Au5qy0au
    ztmXi8XaK/pyYxCbmhSPRC/u6Bo9K7rx6+MxtGX8YQd1VLC1kfNCx3JfETA8P1QE
    nJQstChBbmRyaXkgR2Fwb24gKEZyZWVCU0QpIDxhdmdAZnJlZWJzZC5vcmc+iQE5
    BBMBAgAjAhsDBgsJCAcDAgQVAggDBBYCAwECHgECF4AFAkmZZdACGQEACgkQdKUt
    J6ZR/i9dkggAlly9aIHTmseVjpdHD67VZ3sZWPvb/QaZ905mOj6fhxb4MVlwl49o
    9VmO0Pd1Als5FziaDnRBGiB61MjqDiCNxRfn7K1LJ+hf52ax3o+4oWQ7pDWwNPfS
    4qdnqnwpZL3uL4EtaU6r4Ix5bz7ekoYUV88sORR0fYueJqxDJcom6ZnDKEG6RrCM
    mzuiXhDfEWdLD2mdMvKeTAd1hGK+dLrIy8hmjH3zn4POkXe+d4qIJ0ENG1rlXTST
    KdrIUPUjQSmS6W9fCrBF97C8ii384XbPUd/rQkDBLC3jcqGpuHhzGTLYza53dlvB
    4qk0CaXOd8cOu3i1ac5ldiMuAcmv/bqg6okBNgQTAQIAIAUCSZlhjAIbAwYLCQgH
    AwIEFQIIAwQWAgMBAh4BAheAAAoJEHSlLSemUf4v8+YIAKgxK/MtfJ+CpAc/HPR3
    JFy8jWEkFanKgYIClzydEb3ONHkhFzNIUJIdPHNq4NGpWT7sKJg7u/0ojjPuAI+y
    AniD632Ki6q2MGBZp7jVll4B3q3+wKvaTT+h+Q1UvNjOmTbTZaHifRP6ufBNjlQ4
    BoXFUpYYLGNcH8Zal5G3CcBWAsfXt0iAM5mLVVpJEzaQTDFCEKpeSInhiKYxGyFG
    dGcffr98sUZhLrdx2Pl5H1hD6G+DBRYZLXag7cEumPjuikrgxZNAeHEyz3QfhPFh
    l6YJKm7HBy3DNwrg57+jDBHx7AWviq87MzU1XnWWns5Fi1WLPSlyAKSGWMHqITfj
    7NqIRgQQEQIABgUCSZmGVgAKCRB8Pwz8BJPKAl0OAJ9OvtFwX62D5OfoZ+jwtRka
    qv1scgCeLrS4nYea2JBdVmDi9dS/d4LdOF25Ag0ESZlhwAEQANe1Q5ZfTOc+6I7S
    S7KBrbz+Rdo0iEg6or7rrKUC62Vm8aX97yzBsgXzwQXBjD64DiJ1Lely+RRdE1Rs
    77/b81WHOYYBExtrcNXmbwxWqSs7Vxf8yBd/uB9n24sf2KhbVFKOeGXiB+76Ls6Q
    F3cOmQeeyGR+Rk7Trk4O/UxUPnoGFTM7yuFjZnf5R2c2BfprUvZ1OdIax3BxqDAk
    TF1BvmdAYeTqf+45+2DY1qD5w0o5AcCOovOk0mj/3qUbFMngtaVgiEnQEUYpH8RK
    vFecaB13JAOjvcf8HppNtMiY/WC2vKeBI8XTVP4JB8h0agalQUabcXpMdA+J8Q5s
    0zFAueYfzfDOtjxjgoA3c7GKk8Hkj4rtaa1nbTgIGJ4of+gpuNSA+AmLOPrLAcSm
    xQWsayfvrMdCWIwjSkbqB4yAiffIdI11buH44XmU9VoB/EuyxZ0eWft61kBQIKtM
    ES+YMiEEEHb8R8I/2wgJx35hywHUlOKn163em8Rcwbm/i9Myx4pc9RVSsz9IBsUe
    bHOi3v0kfVrxLIwpqfUc/Ryla/+BW3W08WeJ5AW/hv+OU7HHnNTaBeNTX0MRe6Bx
    jbDYT+M0iizIU7itI8Ki/wDYhhbwKq+WLvozPHoHQv4rRnuwdvW8LQmdrIE21k+5
    XrphH1jIOMo3GosT2wEopaIbjC9dABEBAAGJAR8EGAECAAkFAkmZYcACGwwACgkQ
    dKUtJ6ZR/i8Gswf/WvKsYhmIPPzshU9e2LYXCNYSsoaayqcwpH4z2UzFOQ6GdOJq
    DaPYCvFS+gllkktfKJ+qXjvwMrJOyyONVIr34XJTKc+5dX2kKMu/CnSNkBD+nfDo
    tUk9Hd1Z5zGaNrPwy02y9KWqYASKIWNNFIttL0XEnMfW8CLWQrLzmKRlxWZPC1Lk
    TnYVtxH7RrM3VTbBBfyeMypbdj7Wc1/kEu4xqXgTI6FhXkgTR8Ag1LGP4x32rzBS
    QtuMayhOSUUQZrJpcQYQpSl3j/AGaXuC4sHRpgpomR3B98cCUwcJuQJtCK03W57U
    maATzhsOLAzTARzC9+OmDsItyFnveYUKQQEUwg==
    =4PiO
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.85. Beat Gätzi `<beat@FreeBSD.org>`

    pub   1024D/774249DB 2009-01-28 [expires: 2014-01-27]
          Key fingerprint = C410 3187 5B29 DD02 745F  0890 40C5 BCF7 7742 49DB
    uid                  Beat Gaetzi <beat@FreeBSD.org>
    sub   2048g/173CFFCA 2009-01-28 [expires: 2014-01-27]

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEmAbU8RBACOi7LAumjK/zBMpQDMrR55L9xJh1vTYpiKayLth9ZPlsg57pa8
    4p93pSTs7XKcHIO8zqr+LpFFxtafUVoFwzDhwwhO8mX97oakPK/LG2ItUYYZ5302
    RX0UclTrMNt2UM+0nrTI/uoh/azn5S+gJNYYTEJy96QzOtY0eGj/dDvOWwCgg3hb
    fN0crXO6FKY+fshrgQUdKX8D/1PWjcXge7sM3tlR9z0ETZe35qEljmTXpT4sPky6
    KmUF4ymBqhWCTn10WQjuOjhEXhF3rHQ/omgOr/dBQFZefBtcYKHUBq3lvmd0cuFB
    xVJRQErw5U8r343EeaZOFY+ale9iNTfwkl8AyrkaazUH/j3qu4ZnGdf+Wum1P/SF
    8ijyA/9XcujJJuXMT717d5yY1Vx1Dn+aYLV4y3OiniJBQFP9CU2lX+Iw1sfuTGml
    zx8+RPTlL+S3+nz2XkiYwHVi6wlthhGIOgE5DfG1r9FG5PZJtBr3pQau9BilT1TU
    3rXZp2z/tkNEQTagSB4ObCAQ5bTOuxli41TPFuHxmn4Q1YrmkLQeQmVhdCBHYWV0
    emkgPGJlYXRARnJlZUJTRC5vcmc+iGYEExECACYFAkmAbU8CGyMFCQlmAYAGCwkI
    BwMCBBUCCAMEFgIDAQIeAQIXgAAKCRBAxbz3d0JJ20jPAJwOdzYWw9hZSEFtUf40
    lGSurerRAwCfWN8iMDBntKPMBt3j5QQWWSkPxx25Ag0ESYBtTxAIAK2WncBXO3CK
    VTcGY5jvbqKWsJ+JUJqZylaV3FW6YzAMKKw380m2khT823qgC5XBja+nm0IQn2ec
    34D3XKl8gjf4WWJog6y/DAnxvwdtsS+Wwq0/ownCF1pvFiIt1tAw54i5fmqpwZj1
    UPQE2IRc54y9yFdGNSuV0He9ZdJGxXKx2GW71rHlgWCfxXmD+GtwzFs76jn04bwk
    lj3YM/AVr+6C3OGrUv0lIzD26kPxpbZHPSx2a6imBk5HQKVsuYqqeI5ZMOnkbwPn
    GuEu7tVn0Y0lwVyBqYf1qe4u2e/38Kg7e/X7Vk/OTSh0FMJ5ZsakKUjedvJ5DA91
    gUJBmGkopmMAAwUH/jQX8T1IlDgmZN2T8FUc3hnQjcYdOPRJv2Qx2DeXK4OI4DCX
    KWxVGXeGVd+EpKgYCSmBYx5UA6MKN17nmoQei2MuVigxE07cCx6BjASTmHxex3r9
    EGl8luGmEkzhTajYfu+13dvMMQVYuyQTwB6dMioaw7j6lE5GBG06NvRfzik3mI5n
    ms487lKYcqAJ+iFk1a8Lbtof3xoHi9gYl3pWQ/rXirY8sp02e2FgC6iFvE/4+hD+
    DCdkkCZOJMIl23JVm4VLWC8Ak1Z5PnOXPzXwS1hEX1KjRyrW/Z1EwNcCK8zSNQH+
    bknf8dxan+46/iwig5ejA9N0lyy6gooFXeiYCQqITwQYEQIADwUCSYBtTwIbDAUJ
    CWYBgAAKCRBAxbz3d0JJ28NNAJ9II48hjLq4PRAYpsDHXGH+2wSr1wCdF1Kq1fEU
    WlCtH7Ew40yBxy/bVJ0=
    =h59X
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.86. Daniel Geržo `<danger@FreeBSD.org>`

    pub   1024D/DA913352 2007-08-30 [expires: 2008-08-29]
          Key fingerprint = 7372 3F15 F839 AFF5 4052  CAC7 1ADA C204 DA91 3352
    uid                  Daniel Gerzo <gerzo@rulez.sk>
    uid                  Daniel Gerzo <danger@rulez.sk>
    uid                  Daniel Gerzo (The FreeBSD Project) <danger@FreeBSD.org>
    uid                  Daniel Gerzo (Micronet, a.s.) <gerzo@micronet.sk>
    sub   2048g/C5D57BDC 2007-08-30 [expires: 2008-08-29]

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    =z5Yc
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.87. Sebastien Gioria `<gioria@FreeBSD.org>`

    pub  1024D/7C8DA4F4 2002-02-09 Sebastien Gioria <eagle@freebsd-fr.org>
         Key fingerprint = 41F4 4885 7C23 6ED3 CC24  97AA 6DDD B426 7C8D A4F4
    uid                            Sebastien Gioria <gioria@FreeBSD.ORG>
    uid                            Sebastien Gioria <gioria@Francenet.fr>
    uid                            Sebastien Gioria <gioria@fluxus.net>
    sub  4096g/F147E4D3 2002-02-09

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.0.6 (FreeBSD)
    Comment: For info see http://www.gnupg.org

    mQGiBDxlUM0RBACvTeKRqOnxJ6rIhOdf9vCoPA46hxkjTRgWCd14oxC/P5SxlC6D
    kGDg+Cd/FeY347+C0fwmoaEJrzQcUMGIBdjOa6UywIcbuYFUY42T2+hsMVr2SSK+
    qz8hmpnmgX2PRmN6veuXI5L1S+3wEUDv/wpJLaPhnIs8Zt3OuwVD+oxmxwCggdzr
    SyxiA+f0tOqFlREV80qh9mkD/jCaBzww4rfSQrXsiyEOzDVP3v/EA3vYmkwyzm7X
    //+3ouHrUTPt4w7s7EbGF9xyTj0zi6J+6PADjt4yGgO85BfUyIiOp7oqLyu1lc+v
    lfgfOUSTr95/jfMfI5QXVoswUqLzAe/kZK8yH+mmd9PNDEXqXhSzWQd0O3kBrvlX
    KEEaBACB3SslcYkfdh7/kAoC8fyT4eDdJUPXLMgfjks+W4wngu2sHv0fCMhJuW8i
    5fhcFUnMNNuxw7LJ/+3NIYx0yacfx3DPeWEtYAlj1AggQJPiXNUIH2hKEh1Md28J
    JyvfGg5yjFk0QkZXEr/UIjCi2ooUtXSgI99HYn2soOxiKI6cBLQlU2ViYXN0aWVu
    IEdpb3JpYSA8Z2lvcmlhQEZyZWVCU0QuT1JHPohXBBMRAgAXBQI8ZVDNBQsHCgME
    AxUDAgMWAgECF4AACgkQbd20JnyNpPTrhgCZAU1wpIXOP+v2CsyPYGcIC03GsDIA
    n0qxuR2OP+YyFrsnA+yogEETkzbktCZTZWJhc3RpZW4gR2lvcmlhIDxnaW9yaWFA
    RnJhbmNlbmV0LmZyPohXBBMRAgAXBQI8ZVH0BQsHCgMEAxUDAgMWAgECF4AACgkQ
    bd20JnyNpPQGWgCfWL/2Q6PBPbDB7xMz+uV18ovl96oAn03b9L6/soWmPDnNN9rX
    GO0esJ5xtCRTZWJhc3RpZW4gR2lvcmlhIDxnaW9yaWFAZmx1eHVzLm5ldD6IVwQT
    EQIAFwUCPGVSDQULBwoDBAMVAwIDFgIBAheAAAoJEG3dtCZ8jaT0A4oAmQEQvmqK
    s9Y6EaJSnNLD6Qy2MKtHAJ4yoimf+lPR85jP4jKoQaMLeYpvCbQnU2ViYXN0aWVu
    IEdpb3JpYSA8ZWFnbGVAZnJlZWJzZC1mci5vcmc+iFcEExECABcFAjxlUiEFCwcK
    AwQDFQMCAxYCAQIXgAAKCRBt3bQmfI2k9AMpAJoC9f5tZH0s1LBDksqJF+yDY55Z
    rACdG+9SsE2SJUOUE8Zfh1h0L13EOWm5BA0EPGVRxxAQAN/O6Tfq3h6bKUDyVtPJ
    m4qmkAq2dMF/IwTjeiLCgGEEGK9lDxLWtXCZi85NdDqQjM6Az6bqNnj7ZDkxkhXo
    PBjLbfKH1ZGGYKaZqzDTTX90aNXS5ZkyJ2vTZ5UDv2G3BPzuBkfLoCfieo/ygqs8
    2njdJWS7zVYx57ZnYqpSwc0BTl6jeoFXFS0VWnGzHjF8glaDlJbcsveM3oe/kOB4
    Cdi6Qw/2XFqxZyTGiDaESbLUw1bMgNXe+sowbx9o4r0IoM/QO8mhe4vVhh3+KuQR
    wOfuh8FHu3uJ1uEdK3sXZJiyRnFhDokPimiHHI2XOZ+U2EigwvEO34NDgHMz/ax1
    vvV1GkpEm2RGjhIaGl3sbytpp/LIzQh+cVEqcrGvRMJ/web+P8W4NM/ygxtpEpJx
    lpBsMrmMB2jYF3Ry9oCSDBwQSIbMoS+akSR+dySoBlAP7bvseHdPjEG9k7DljcKF
    y6Bg3X1lcg/Ire6uxLaHfXjRKz5YAvaNJZl7n5uYpvnBh9izYzWxp+EucGqRrz0y
    +5MB5mMa5czKQ5Bn/qxJEduLNgaM7DgBDaJ+0m6DuJvb2Vd1ifXWeqDhxi9T/ugt
    drZjvk+FCfsw6JdV8Te8hB2W3NXjsYke7TapAM5sLh7tJ3S2fHHKjgdXIyl3wVr5
    CAzHkssJkVT7oP0feryaG7TnAAMFD/928Up+8kdlvOCD48eIwhNeOD8dV+2oLMap
    S6vsMKUnS7/hIff/gntk5Fiaf3pjio7qJK7GRKvOTvkGd5AnRgvqbYzIqB63OrGI
    dnUJ3NqZJaNPcHxfMCu3RwgBiKjLAaNhK9PUo1N7FaU+4Gb7MGPdduWFncgX/n5u
    CxIfY8lkOr74MXwe+gJ7Ybuk5DU+s2tgj5IcI4Qe1VEmD7npv8eekf7VURi6Ga91
    Qp5uNDyEAkqrHGJVPEWUZJ891kqOhhheMb3y/AIaeCw1hznOQaEdxlR9zzLP9LeP
    Wio6XnTLLbRhrk/uDCfjQ/mlZl96WV6SiZzF92jTJhJNRidtr1yENwNMi8cDVG8D
    D3d1jvBBZNIrB6CLHVAhRxPB11ThPwQuGkVNNrP8VquCXuoOIqJGGX0ivpCmemWi
    nQ+e+2ASx55rqweUz7urwyLRH5l0JlcOWuTCblwM6ZIqebQeiVm+pZ789fY8FOdI
    B5TawBkoAHgvSiWLv5iz5d53B1BSV2LigrJ6I+30DXAsbkldvtaeiYKAPRLnk/yn
    TZZ9nbNPhKTuRXSsUiPrRqgndtVdhWPS5RFJUKV0duSC5qwls3AxUDKf9p2Ci1vZ
    XmK9iohF5JhGiMe083CuIQITp/PY7xwPgleV0xROGWjiO1MC14wRK+uSRf585yRJ
    lyGwkugKgYhGBBgRAgAGBQI8ZVHHAAoJEG3dtCZ8jaT0onoAnRqetkw0IQGEHDis
    P2T/ZtaLVqp2AJwOwHDdKXMLcfeuVe0egqgkY48Vog==
    =U7Mx
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.88. Philip M. Gollucci `<pgollucci@FreeBSD.org>`

    pub   1024D/DB9B8C1C 2008-04-15
          Key fingerprint = B90B FBC3 A3A1 C71A 8E70  3F8C 75B8 8FFB DB9B 8C1C
    uid                  Philip M. Gollucci (FreeBSD Foundation) <pgollucci@freebsd.org>
    uid                  Philip M. Gollucci (Riderway Inc.) <pgollucci@riderway.com>
    uid                  Philip M. Gollucci <pgollucci@p6m7g8.com>
    uid                  Philip M. Gollucci (ASF) <pgollucci@apache.org>
    sub   2048g/73943732 2008-04-15

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEgER9QRBADEnqKDo2SQwM99dEQW6sEoFafQm592R98bDFZC1CqmBhZaj9nG
    ksxyX82s/PaOoosKZR3hsMcDOJgYkHfTKIMU6aDVMrONfsgLF4V6meTaBHW5uSOI
    cJBsW/TSTsOq21yrp6995jSTsHZxV0CpFDZWGCowefxvbRoAz/89pUBxYwCglOYk
    btty+eanC+la8LUuLn1na1kEAI9wXI6wRbc4Qv4dppmNwiBsu0aDW2bOe6TNU5nj
    MMU5dMQkQ+FkHBFNyF3Fy5Uvm5zhGhlPKRTW9nOmLzZQBf9kj1G2giq5MN3fs4jg
    k15/93Jm3TnyV8LZxP4cBU42HhuL3b6rzFFNVgDLw4PJuSqjt/JTNhNtCwYW+nqS
    g08zBAC0FuxTJzna5X8Y2o5o+J2yU0kIB+y+fmGeaN5zg4VsM64Nexhc2X3HJbXd
    31hPqySdBl6DQP/I9U00S/C2Qb6MVwTDYR2DBltoeqoHOJKGLvqB5N01DAVg8kAK
    31PpMdFhkfZwM2ZsHfoGbnEB2fMd4Fb/+DwbjrckwdG1w8P2t7Q7UGhpbGlwIE0u
    IEdvbGx1Y2NpIChSaWRlcndheSBJbmMuKSA8cGdvbGx1Y2NpQHJpZGVyd2F5LmNv
    bT6IYAQTEQIAIAUCSARRtAIbAwYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJEHW4
    j/vbm4wcSz8Anj92jZBlcifpDwdiUvTZdGO28CjQAKCT4jeiJcLCbhnXaXonBCzw
    DRw5s7QpUGhpbGlwIE0uIEdvbGx1Y2NpIDxwZ29sbHVjY2lAcDZtN2c4LmNvbT6I
    YAQTEQIAIAUCSARH1AIbAwYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJEHW4j/vb
    m4wcM20An10tzTX41D6qcEjOBqMzwyydrYoyAJ0Qs9fj/ct7iDCphvNwCcjNGMlx
    ZrQvUGhpbGlwIE0uIEdvbGx1Y2NpIChBU0YpIDxwZ29sbHVjY2lAYXBhY2hlLm9y
    Zz6IYAQTEQIAIAUCSARRmwIbAwYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJEHW4
    j/vbm4wchSkAn2DyHStIDMIXwKH8LAgut1wpf4sgAJwNKynACF0+sok5YupxxZkm
    QFJsNbQ/UGhpbGlwIE0uIEdvbGx1Y2NpIChGcmVlQlNEIEZvdW5kYXRpb24pIDxw
    Z29sbHVjY2lAZnJlZWJzZC5vcmc+iGAEExECACAFAkiGRaMCGwMGCwkIBwMCBBUC
    CAMEFgIDAQIeAQIXgAAKCRB1uI/725uMHK3IAJ9n6VjOWpymuzHE7xN/xlJu2j5l
    uACeIqegqdXAaqRS4+olfTDN/nvoYWe5Ag0ESARH1BAIAJGalt0PcCClgFjAWdKr
    2+wNm8CrgW8cm62p1KZ9rxTHqpDEQopa8Y2G86pKDmhjJQmPmepcZx2ZhnBc0UVj
    qBA9bEDnVJU/ysuxjYrjswYNP+5ZemUsk5IZgnZOLQod6ewWtcdZ7EPJYOfKNAvo
    1TMNFZqA6CLKUgjPpokRdolseRkyuS5q5XM4InraptSvv6G6SXRiDBwChbwfbJG/
    82ClmnuInhDzmc4gg5flrU6RprLu/PPx8SSIRkVHNZdPL3cF5pocETruqdkcb8yD
    aC4kIIqsn1XeBYLXS5lYbZBexR0i4i0xkjXnErrGu2lgGm65RwF+hvRsDC7RIC0c
    9hMAAwUH/0UY8w+pGeGMgZJHiLSoaK6pTXv1/ega4na1vGglnBeGXB2Cj6jKgv3j
    6a9XLRtaw5owhTLAX0uWt1XOw8ojm+vgVBvXJO7ljUI99/Zov5IQRZfy4TN8dOY4
    1TNgGiwaUU/rh+MIQy5hFCQPGRjIUKIkOGEBKOaZEkTV6Hr9rFCokpcTILF73JB+
    hI2EHwnXzpFKmzB1zwbNvtv4QiyozROvc558n13WP8OdmdGNv0jNcytqEIaB+PZM
    wMcLMjikPHKUxfHcdmwCezpIBKG2T/5xgzTCMxQ0UbfIYLnsOfJrCm+akw2VbQ+R
    TdP5dVLKITdFUk3nydirHpN5JYkH31WISQQYEQIACQUCSARH1AIbDAAKCRB1uI/7
    25uMHPq4AKCSdNolzpw8MfWfj4LU2ZVlbflHHQCfWUK39VTu4mNu5nPmuM6gmewD
    rNE=
    =SgIy
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.89. Daichi GOTO `<daichi@FreeBSD.org>`

    pub  1024D/09EBADD6 2002-09-25 Daichi GOTO <daichi@freebsd.org>
         Key fingerprint = 620A 9A34 57FB 5E93 0828  28C7 C360 C6ED 09EB ADD6
    sub  1024g/F0B1F1CA 2002-09-25

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.2.0 (FreeBSD)

    mQGiBD2RGpURBACZe4DKSXi6jCkn4eZHJr7nGPISQr4YUq3rDqcOSUlFPBZlVd8S
    pYnfkNNW8HTxl0+qd5kIXiQxuvWxCrTNzoS0gPO3IQcICkAqbIICK0A1KFFx4Zen
    +muTp/e7bDhStcMEelXc+/3mLReBJf/d6e4For6P/rqVmMAcm5A2GO4quwCgmrSD
    fLt9NGJ+mtiXFxloHe57l/sD/3nanV7H4zk9gPJZA9b8UKpbZZmsyljTuYOAULL1
    oh3CZDYvKZZ3E1v9exVDadSGvbps1bL1okku27nNd9BnlnSxZ+sQbfJtvEoBMUwH
    HJnAhTU5sW0UJv6K7goZ283npX8fFjyDWJ4+XJ1Qq1e+VMF5QeZVRFiIJ6NztM7F
    6b1NA/0dwFApYGf2r8YV5uJPeSsWH94Mx4PTtIXp+WOovQ434wzuBUMiHxeeuv4z
    LP9Vjf40s0GoC0TLz8wB2awUrO8aWwgg9SUf5yO+jKZ9BchBgnqjju81zAG5sbUc
    ogMUrENjqIJgFCkHcnbxo2IHOygwjezvZeM/svcxJ1bW/gZlwLQgRGFpY2hpIEdP
    VE8gPGRhaWNoaUBmcmVlYnNkLm9yZz6IWQQTEQIAGQUCPZEalQQLBwMCAxUCAwMW
    AgECHgECF4AACgkQw2DG7QnrrdZetACfY5hq9W8pDo/vGEaCZWQtpTpW+EUAn0jx
    G2nWbw6EDoGxa62mmqy9rFyMuQENBD2RGpYQBADjmTUn3Gk/tkVzIgVm8wdfuMPb
    n08JkuNLUDYjxWRfRmVZHpT3L+e7rUwKFrcmMRM+kMSsnWKhmhwpkI4Tqgi5/lmg
    kN8R+kr6gm40lEAc8tNPNzbE4ueKSAwW8QKqC2iHAqe0l4SjvDEns5M3mARPEtfn
    tdEsQGeyGYlxsG+MhwADBQQA0HSyz2a2mMvyn7IfG7f7t3zuL5tXoFARYQ2FYMWn
    VSkydfzYuBc6kX3oskR1QMv4EDgX0hIUglvTIb918Qj+4tx5CKsUKnZFflGYfY2C
    qwVwR9SPPdX7rhytqkalH8HyuLm2XuRaf/pzo23tAivSXNFhfQhvybFtLdPBJ6yK
    3XaIRgQYEQIABgUCPZEalgAKCRDDYMbtCeut1qqBAKCDnLRYCpUm4eyVG+Ycsn6B
    giZvyQCeKeQZPCnz6RKllxb8E/E17bdhN24=
    =T2MZ
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.90. Marcus Alves Grando `<mnag@FreeBSD.org>`

    pub   1024D/CDCC273F 2005-09-15 [expires: 2010-09-14]
          Key fingerprint = 57F9 DEC1 5BBF 06DE 44A5  9A4A 8BEE 5F3A CDCC 273F
    uid                  Marcus Alves Grando <marcus@sbh.eng.br>
    uid                  Marcus Alves Grando <marcus@corp.grupos.com.br>
    uid                  Marcus Alves Grando <mnag@FreeBSD.org>
    sub   2048g/698AC00C 2005-09-15 [expires: 2010-09-14]

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.4.2 (FreeBSD)

    mQGiBEMpwEsRBADcnD1kRdYoPvpKLjT1w1T5p1fT/LAimANGHXVoZxusjNdJjleF
    7SNfN6V+sjm8bdUjZb3VJr3oA21sdwIKXzamhtbaDRAAvKdYIRecTaLId8SqI3dO
    mZtLVo0A7XNkjVMtyLn8lPKpdiHPOc05/x8sVLNZ2LR/xFJnbdT5bomy2wCgmIOF
    EaoJmSuh5trZRiKIAeIodfMD/3zaTMjI7eLziJG2IWdxceN40vUX555gCpeFEQtD
    DfVV++32c7BN0j9o8VFl3W1vsQ3Elhm9GRlb5hZbRo53Z1YTJEzogXTGBVipJGID
    cDo/bCmRuMSarsT+M6R1NF6uToSBeVZyCtA/DDbJHNvYD5VeOJKsdaQ7hYtctoJ6
    ms7hBADD8AeV5gLZOjOIFTAkX1ibEksxz/P8aUFjnj0QmPe98/RI02e/iYVVdPgz
    HgrTA+gF0X7nIicn+KhBgOT0MTx6bf9DFzmk1KaFBA6vnQ9alw1WtRHGsIm0OgD/
    Jn5tRQFriUS5PWQP8FKXcUfmqOd0WtLebPicX66nOba+NKdU+LQvTWFyY3VzIEFs
    dmVzIEdyYW5kbyA8bWFyY3VzQGNvcnAuZ3J1cG9zLmNvbS5icj6IZgQTEQIAJgUC
    QynBHgIbAwUJCWYBgAYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJEIvuXzrNzCc/
    UUwAmwVe85K4Ljml9AgBKbNn5juVRkr7AJ96PWlTFr/IdKq+1m3Zw7Hyt93cf7Qm
    TWFyY3VzIEFsdmVzIEdyYW5kbyA8bW5hZ0BGcmVlQlNELm9yZz6IZgQTEQIAJgUC
    QynASwIbAwUJCWYBgAYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJEIvuXzrNzCc/
    6koAnjbYaFve7vZz3DW2qTBnYXp/n5IAAJ9+2EStzCP3tnKb/hjOxotstQufCrQn
    TWFyY3VzIEFsdmVzIEdyYW5kbyA8bWFyY3VzQHNiaC5lbmcuYnI+iGYEExECACYF
    AkMpzVMCGwMFCQlmAYAGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAKCRCL7l86zcwn
    P+oFAJ4tcY+w4DVH+x7euh4K6ECBqM73PACbB2QBuJrDOtTxoYdmiH3XdHCytT+5
    Ag0EQynAUhAIAKD52CU2Xp69qfo/j/1aLgiMhgLpx56ySAb9SzZySUHadyptFpJR
    i3glUnoUh9dfU1jr8Y0f1oChCmm9TOZnQJWR7LOrO+av3gxnRtVMkvVr8eAPG3o6
    C3VZop7FPxR05Jmy0EtIxweEgNGmCX/p58T9LAM50E9FacmwYAIn77O5zXcJVnBI
    m9Ih05Hy4nGIoyF4iBA/NZQL10glMnwc6p82AiMj1FI6i6iDdPYBeiHKUXkyZ+Q7
    Df+HkelT3zot4DPKBeGBSFyQENOjHCp4wl27DsfiJXViy2NRz5lzrSFgvc0ZIUus
    Ia5d9nG+OE67JKU4qT5xgJL5+eOe1lXsHgcAAwUIAJKuSmq6lvF4NWN8HWDimXBE
    Ol8jNHf+miaLgMxOhAOeD4TQHpqgEhnf02koUbGDbli/AS1oC6WGhKSekgYKZCkf
    zmvRNEkCJCOMG3bOcKEokHiujcyQHWf8k4WmBQe0hGalrE+oaLti5H2/jAqUqYFi
    tHWRUeJDgfwOXRalI3YJJyjfBzE6ckE1kFWoEeXDuZdER9kusWWVrX38mdniwoKj
    7e+GtfYo+riB4Nb/TSuQjw45DKVaqYNi13P2P1EmHwmrSjnL3Yrck3x/vDrCKa0c
    2+BAMAaLVnOGdaYT1xsaMBGcgSkybQoOmvMm5hdtxURqi7k/TbaNhV/etSzfB/CI
    TwQYEQIADwUCQynAUgIbDAUJCWYBgAAKCRCL7l86zcwnPw4iAJ9rVaOA1zKrzwRX
    CLE2Xxf/FkN6JQCfZU7PjkJvE9jqgsBVfMhi6S6kNZ8=
    =rDV2
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.91. Peter Grehan `<grehan@FreeBSD.org>`

    pub  1024D/EA45EA7D 2004-07-13 Peter Grehan <grehan@freebsd.org>
         Key fingerprint = 84AD 73DC 370E 15CA 7556  43C8 F5C8 4450 EA45 EA7D
    sub  2048g/0E122D70 2004-07-13

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEDzjb8RBADNg1Ak3kReZLn5N6aGm/0ofeBsZDK31HgXFoQnXpZWuPf4Dcuz
    EztxDMfAhCdQPuFm+u2av7YiOc4Xmxmety18CwBP4E0w2Wf2RKdI7CdeVshn5epo
    kTMTn8pDu3ZDzui6Uvnjuc6y51VzL4zJwNNZAF5Vs1gXr+V7aDbvb1/6PwCgtX5K
    XQHfTdms5d6yhYwyQ4SrJ6sD/izS3iZBHe/nDdTBnSIA4sIdcZUn+sRfX7/GPs3H
    9JgYbI/+fatLEUShiKaNTCCibNRXx1OqFk0w+vs1pRz/ziE+G7uV7tglS3h8LMnO
    Q/6y8WwTMiv2seCKyiuvGxG2NMT7OAdrSNe8xPIlNRBdxvANFlgnfPsypXRfjJ5g
    1mqxBACaho98/zNgFpClOwAxw1Il0TX1c2EGB0e10FJ77rDNiPCWSnsPu5LB8mhL
    FfeGdx+zVVj5G4tMVIdJgZ5T4IpELPY1rpqf75F4mBrWTnmd7g9X1S//U8j7pNet
    JDVlymYg9DJvtKnfOHXqViwV8g2X0EwKsOpjo3IBZ0Oepw3wfbQhUGV0ZXIgR3Jl
    aGFuIDxncmVoYW5AZnJlZWJzZC5vcmc+iFsEExECABsFAkDzjb8GCwkIBwMCAxUC
    AwMWAgECHgECF4AACgkQ9chEUOpF6n19yACeNpRdDKA7qDA1vKGyjJIEdeAhqT4A
    nRC1CUpFTve3psN3cPWymDzSiHl5uQINBEDzjcsQCACkCgzuJRaPnoWmOZCk58ya
    +2Tbxd3qHtDDwMnY8NKi15FA0Cs40PUffHtWrxW1qcmm7QRmhHpR49tR1f7xT7CR
    OX5QKPa2axjv1mk9MKC4BtMe851UIMZ8vWbm/Obo9UdNYqEQEXT5TY6PbkiC8tDH
    5i00MBg6mkYtK9xU1OjJUp1YHuqalWgMEW1nUFM1CV1Fbk/SqLzyNcC0biTRMUkZ
    aZ1MgF6oxBIj/InO0f7gVoL3Jb5BC9bOUo3NkHCUQDBPwfLXR3lfrQLo7fLckYaN
    j85Ap6NXJr88vINfU+xn/MeVwTGYw9ejh4sujp3d57wP9Ym3PaR2SkoPdZO323oH
    AAQLB/wMC99y55a2jnP9IOsI+UIgWFWDmVqDhdgdp7asKjW2aUhX1k4CGPw7AdTL
    dtBdxqxFNp72fZPZ53ZIn0z2bogyYOOT4aWbTFiqKyU6CScCpeunKs+/qz0pw0f5
    /TdHgDCBrlMLihNiC0Tvtf/BzTLR3pqDshts8x82qKSjhxExazbBxJ23A4El53I8
    zZLQLD+vqJaFylhze8DNC3J/V4NgD1Vdporrz9L+QZuJXDGUyp6Gj4uteAu0W/My
    4+5zrs9Ym/TSmC4y3PLoqAeJv5I3E+6YqMo4c7XcLuJWO8jzg6aRlQmc/WgvVANW
    juieqW0bcYqNu2F/GeUcgvD3dWt7iEYEGBECAAYFAkDzjcsACgkQ9chEUOpF6n2l
    QACglTS9Ryv4oLwvXTNK2j2RLiH1VZEAn1YaLCp5rtafXPpdMdCOuJXo7MjC
    =UNPF
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.92. Jamie Gritton `<jamie@FreeBSD.org>`

    pub   1024D/8832CB7F 2009-01-29
          Key fingerprint = 34F8 1E62 C7A5 7CB9 A91F  7864 8C5A F85E 8832 CB7F
    uid                  James Gritton <jamie@FreeBSD.org>
    sub   2048g/94E3594D 2009-01-29

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEmCOzURBACOSQ8S2bwRYqXrfV9/pT8BmnGl7GYrkbDtJqL0IaTV1Bmdw7ed
    qcDjMT55c2LEQlO7w2EG5z7JfaBnP+jV3X/gtH37gcqClcJRxJ2uhT7fShzmRR/U
    5iTbAt0BwDF/W5LFmxajhZvw8NJKeMk8j0kUwdTzSKalN+iAhXEhqx/uWwCgz2qg
    9utCYdwfeSmRwebBIQhPq4MD/2bWpo3/Vw3PZzNsja1l/s8jQjxkMoXJ8LlYFoYW
    vc5lMBeR0nb1lZrnBvQGkEJVSPLXLvTBYireyqai8pt+Uk7D1oRevpsD/rIsSZBV
    MVSa8jUqPF0HC0vWrDd98HDq/RJ3SD4HHhiWJ2wA8YrftyeHzZ0kiJYzggQ3UPM6
    +x52A/0U2kBqBq+HqA7YWTEo4pn2W3adZCT8mwmsDdEnC/uTvA0BHBN1HfgCxwee
    TSqOwssFioHCVu+N/lxKjqy9ftHI4ljSuYOPpC3q+LwFdVjbCQ6ynILNKp89QiK6
    B5TphmOTQJ4ytVxr/tcvzDOCxbtyG6t7eCJBlfEgGjZLQu7uYrQhSmFtZXMgR3Jp
    dHRvbiA8amFtaWVARnJlZUJTRC5vcmc+iGAEExECACAFAkmCOzUCGwMGCwkIBwMC
    BBUCCAMEFgIDAQIeAQIXgAAKCRCMWvheiDLLfwhyAKCP4JGKCayDfY1f7sBXhYSa
    6Zr5KwCfSy1evNxNmp5TwB7RBpEZpL2R2C+5Ag0ESYI7NRAIANiluE6e3GNLyLTc
    cc/SQ5NdW4/B89yDQkZi/f7mUAMiS73iKoe555EVI/JIFsHUduHeYMB/ERDHNSUj
    RmWVkb4r8eVSlMVvoU8sBYGqihoYtFXYT7rj8vvq6ufkF9RtBJLTLzikEg07jfQk
    EzKr1eFOl0v76UGnmqrYiTXOAJoXQIH4+Kt3pWd8jz0Lsc3Kd4+eMW2A+eXSpShb
    yuQhvtIkSdOLDa9PV03Y/GweSCbTKa5+oTmCoKvXJYjDHwkuj7n2dog8vo64Oy1h
    z8mPPFyDXr1OitDdA78Vvpu8afz3Uev9DMaKd6WIEtVUprLOXyuSixn0x0rvImes
    t6lHX3MAAwUIANKigPUT7boxzc93BdWUOKrZEnjN7zVnIqUMizVgi0K9nLM+lSpm
    exPfoEZqCIBmAmDRYO50Y5Lwb2R6V0qHFBmIvZZ9Ih4YosXuu6oFhKHjamRK6JXI
    hh5mMrOZnfDRn5YGEr3ZCEOGzdW0pY1t8THd6mtXmK7iIKKy+3u/WHf0tCJDRXk6
    7ETBWwqFTE3XpZz09aHRV2470GKESSbs1Q4Cobc8ZIifNzr8kfnWPm/EH2UCNpnZ
    K2UvAxi6SRYVWIY11SRS/am+DRGweKfm9+NZpHEk2yJknHd95Q3IVw+fX+2yKVQe
    L+X9H5BR1y6XxKbxqrlWF5I2FDJo4BzOA1eISQQYEQIACQUCSYI7NQIbDAAKCRCM
    WvheiDLLf1rdAJ976PPYVcvK8Q/zKQrMv7pff09z2QCgut3uY8LEhlK39qZCF9Cl
    2+bu5gU=
    =Uux7
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.93. John-Mark Gurney `<jmg@FreeBSD.org>`

    pub  1024R/3F9951F5 1997-02-11 John-Mark Gurney <johnmark@gladstone.uoregon.edu>
         Key fingerprint = B7 EC EF F8 AE ED A7 31  96 7A 22 B3 D8 56 36 F4
    uid                            John-Mark Gurney <gurney_j@efn.org>
    uid                            John-Mark Gurney <jmg@cs.uoregon.edu>
    uid                            John-Mark Gurney <gurney_j@resnet.uoregon.edu>

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.0.6 (FreeBSD)
    Comment: For info see http://www.gnupg.org

    mQCNAzL/8IwAAAEEANuX7fcIa0S5fVATYQCGwgBJo9DxRr0m/QjrP4dJh/JEIjmv
    h37FMs9qsMPtyAZWlRSnbVFyQiz5ptFuL1irClW2UHzlLvd5s+pKMfIkJWDTnrvp
    0jFebYQt0chZeLcKT9s5sSo9ua+fUumOfaWyubUZPIqmDYqy98Em7wI/mVH1AAUR
    tCNKb2huLU1hcmsgR3VybmV5IDxndXJuZXlfakBlZm4ub3JnPokAlQMFEDMBDfTB
    Ju8CP5lR9QEBmnsEALAS5dZyQXxsDAROz+yHizsbgV1Ok9vFwE5en7QnOGcSkQX9
    pE7MzzlbpP63toF9zWLF75dbXE5X0yYLoB0pvNi1NXhXqA0YbDeAi1Ed6uBXbomW
    MDdm0s+O0Y1NfuS0uKiFiJUDOjdBrgEbnmPZM/77dhr5UbmAtQUHFftaQfY6tDFK
    b2huLU1hcmsgR3VybmV5IDxqb2hubWFya0BnbGFkc3RvbmUudW9yZWdvbi5lZHU+
    iQCVAwUQMwF753W7bjh2o/exAQGjjwP+MKiFH9EfOGS7yr5NQ4+vWXuHe1N6fi9N
    jJsFfzT/RCM/wo/dNG/xhTgdCoCWRt0gKkv3SLEPYGDPDtC3Nf7HV/66wOiYYnxD
    3cmjgpLn5u/Ju0oS5xxNb5Ly8EZnfz967lIHjp/qhbZ9o7kO7Nkb7bUgozNqBaRy
    9Yo81fVAtrOJAJUDBRAzARCXwSbvAj+ZUfUBAeUyBACKoIXfYBpsKqmmnTg944Tw
    5t8lAFZ8qJz42Fjw+hswC6c+7b87imwaH3AjPnFmsA6f1ES7xDHG8RQleDtKsyik
    gHc9Yos/neVqwfrr4zSV1PdNPPpG5uNT/jI1k1M3pH8kwYdKiwaIHQb5+sGUQsO1
    ZoxCdzT7HJq4jJtBGVIRULQlSm9obi1NYXJrIEd1cm5leSA8am1nQGNzLnVvcmVn
    b24uZWR1PokAlQMFEDMBEHfBJu8CP5lR9QEBak8D/2V+1pP6zA1dvhRLcO2pGldn
    Q/dcVAAtZIZ7AUUap1pKXZF/Tt4gWKMtAHj01xUbwU1fmI6DF1p4AVjDqOxJDnoZ
    RD9gv0RiZXdUesXL2UBNHc/7f+amAJgmXNrP/m70ejgzPluniR5hQm76fKYjkxV1
    opRhhchTjhrFndoQ9nvQtC5Kb2huLU1hcmsgR3VybmV5IDxndXJuZXlfakByZXNu
    ZXQudW9yZWdvbi5lZHU+iQCVAwUQMwEQWsEm7wI/mVH1AQHxMgP8D7VM+qUo0qGM
    uFUKqxoQcDPVKt2W1X6wWTHdj9cxo3oW1tlLEZ24Y2v5v1pzonvseaTjsse134dP
    a9qjcwXjs/zxXzHoQs3B9BZB2qXaR4T3YeuCjq2qIXGwsrrY5fkoch4OLg0/FOui
    dmNbFjVQkIma2rIRPa8GhXZJtGl+UEk=
    =bUtb
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.94. Daniel Harris `<dannyboy@FreeBSD.org>`

    pub  1024D/84D0D7E7 2001-01-15 Daniel Harris <dannyboy@worksforfood.com>
         Key fingerprint = 3C61 B8A1 3F09 D194 3259  7173 6C63 DA04 84D0 D7E7
    uid                            Daniel Harris <dannyboy@freebsd.org>
    uid                            Daniel Harris <dh@askdh.com>
    uid                            Daniel Harris <dh@wordassault.com>
    sub  1024g/9DF0231A 2001-01-15

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.0.7 (FreeBSD)

    mQGiBDpjbB4RBADW+4fkXvVjAZ0A1X4wgXJQ4Eyes1LH7sTexP/Zm7sg1D/R9zV5
    w2kBwOhICRX/hxVL76YZv2MTNL/d3pV3ZW2yV3Z6H7Pq7s4oVn2q35owUwLQZfSI
    SBTnBiVN7NqMZ/kzCCdWBwg/4G2FVNFwc7RyuOFQL3ly1PBtgbANbpCyfwCg3QXB
    K6AtFaEP2MA+SWWHQD2dNxcEAI11cbOHbYU8asIxbqYYyPOMgPsaLlPiTh6JQOO0
    2OiGxoQlmZvkhlWf8B9ahCeYoKgA1zPqdHA2C9YMvOV2LvN+/Qi0n3hpqkfM7lLC
    QMJgm1KxIzccWY9Iz09GRlIFm2JPaCVLsKh1QPW50c3yO9TMSa6lXwiRgvxPz76C
    JHniBACa25NHH3x8zx5KA0FgMM15Wc481777CFVsKazNay00G0HogSICZ5lHffdi
    1O5u+qQHchVKL0Lbe1zhdbVHdSAbEqnKTqseVMQ6I1TVu4gO89B72aY1RxAnAYjh
    PAb5W/RhZBSR5NDVZyANnqaGE7U7KMqn4/E0lC7w1TzoIZvDMrQkRGFuaWVsIEhh
    cnJpcyA8ZGFubnlib3lAZnJlZWJzZC5vcmc+iFcEExECABcFAjpjbB4FCwcKAwQD
    FQMCAxYCAQIXgAAKCRBsY9oEhNDX55peAJ9NKai2qEcFLxzC14qDz80zBGwP0ACf
    YhsW5qhTw/Rck1Id2W1alUEXMre0KURhbmllbCBIYXJyaXMgPGRhbm55Ym95QHdv
    cmtzZm9yZm9vZC5jb20+iFoEExECABoFCwcKAwQDFQMCAxYCAQIXgAIZAQUCOmOL
    hgAKCRBsY9oEhNDX5wXyAKC6VLe3svRc+FgmmjPS/EWvi83sDACeOpmPRbViajOw
    4MUhKA7hxnRlBeG0HERhbmllbCBIYXJyaXMgPGRoQGFza2RoLmNvbT6IXAQTEQIA
    HAUCPSJfQAIbAwQLBwMCAxUCAwMWAgECHgECF4AACgkQbGPaBITQ1+dSxQCgsBwM
    uDviakYEKswiv6zMHfYBBCEAnjMyu+oxjKOWOo+of2qmtQH2LNg9tCJEYW5pZWwg
    SGFycmlzIDxkaEB3b3JkYXNzYXVsdC5jb20+iFwEExECABwFAj0iX2ACGwMECwcD
    AgMVAgMDFgIBAh4BAheAAAoJEGxj2gSE0Nfn6bIAoJlPaQlqk4wbNGoscjigAp0R
    B9ooAJ41JxSh9w2S16mFTGNKvVpjXw15BbQyRGFuaWVsIEhhcnJpcyA8ZGFubnli
    b3lAZGFubnlib3kud29ya3Nmb3Jmb29kLmNvbT6ISQQwEQIACQUCPSJiFAIdIAAK
    CRBsY9oEhNDX558OAJ9iOqCDUX4cdNMSZ1KBQg1gfTn1yACfZNL6BY+mYC+XV83L
    7DXacstXHlSIVwQTEQIAFwUCOmOLtgULBwoDBAMVAwIDFgIBAheAAAoJEGxj2gSE
    0NfnaM4An1YVu3iDtrG314UIuZoTw3zd9ucxAJ4yg3vWB6ceg06KuyaGTJSdZ1Oa
    p7kBDQQ6Y2wkEAQA0RSR8vkmX33oyYl+LwlOmemSKbSQFZNImw5TDcRYX83fa1Z1
    4oIgJSk1h5l2jx/+29chVR1nTNqPYlRQEDMxVby9rMq2RAnjorM6oDdtIQIBNJ63
    vmUcUiORGnKhC0waajpmZibcxoUFk1KcLyfxOT0JTOLgsJfqdqUENIc6NqsAAwUE
    ALaLYnBOoIr5Wm/KC7wRtS4gHeeOeskZyyoa3+AeBorDl0VvpgYwlNdAaP4xJrx+
    CH6UYnxrMgCXG1l4dupkGXOCRPlAcM2ouEyDIGHRTVqHy40khZnWzN7xfZhKNcVd
    FxeHqOG61ZrhcMboxZrdJC7hK+sYrbngeKRiDs4VRoOuiEYEGBECAAYFAjpjbCQA
    CgkQbGPaBITQ1+foeACgme+2LKdFkytbn/JUhBqPYVAD8KQAnjP+IDVQ3PDEKRkv
    AFGJ6i5SrWJ6
    =j+GD
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.95. Daniel Hartmeier `<dhartmei@FreeBSD.org>`

    pub  1024R/6A3A7409 1994-08-15 Daniel Hartmeier <dhartmei@freebsd.org>
         Key fingerprint = 13 7E 9A F3 36 82 09 FE  FD 57 B8 5C 2B 81 7E 1F

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQCNAi5P5owAAAEEAMIKNuDnLGiTOzk3kGMmz1ii9FbYEM6fKdf0jSi0YSTxSWAn
    7EZbBehJ3yTAYuCaGSEGXEWismycc98LnH2Fb0uI2EsJ0CVLJqxsOL3DK8XE0YOk
    HjSKUpmJkh/BKrMAmUnqhbD6YIBiKnZh3ABt9+a7A+SakJQxvtQ9cYxqOnQJAAUR
    tFVEYW5pZWwgSGFydG1laWVyIChMYW5nYWNrZXJzdHJhc3NlIDE2LCA2MzMwIENo
    YW0sIFN3aXR6ZXJsYW5kKSA8ZGFuaWVsQGJlbnplZHJpbmUuY3g+iQCVAwUQQGso
    RdQ9cYxqOnQJAQFBSwP+IIm2bFprpayabQ/VgXp10OD3sgIEtH8c99sU91LyotNT
    ySif8DS+ujliDk5wVnaOlzqrV4sga8d2ybM81hdW0nxI9dNxLIp+ti90OecZMF6M
    4PlsdkYGnqZDzXlFg4o70GSAWKjL9RTG5JvNnYWS453mCjYc3O4dm+1zzADfgcy0
    J0RhbmllbCBIYXJ0bWVpZXIgPGRoYXJ0bWVpQG9wZW5ic2Qub3JnPokAlQIFE0Br
    JFTUPXGMajp0CQEBkqMD/0D1K1hTJc8u5K3gpsk9LrnOVYpP3zHbSe94oLO5tHv/
    b/Y1626xqcMKYfAIk435asuPnGRkMjgpsxPUKksfWMlUqW4aIiX7di6aMuWkgSBI
    BXguu1Dk/qRImOZkNzWc3V+/CQ+PIauy2rZubfW2+oVkW1iEmmO7I/nPqDxDBNBI
    tCdEYW5pZWwgSGFydG1laWVyIDxkaGFydG1laUBmcmVlYnNkLm9yZz6JAJUDBRBA
    cX8u1D1xjGo6dAkBATkoA/9aDk7yNvh6urP9EWcPv5mjJt0yYIIjGpV7VH2P+mTa
    dK14ah24HSaTjh4psJg/uFw4egAs2XxDKXrf1SHCaaVajC3VQGvKq6V2Ytmgw6qe
    Rtt+NtrXVJn5EUnMY3+G8YCXugulym6bUWaC1x6PC0Y2IEzRkM3H5Et78gd2zujB
    o7QqRGFuaWVsIEhhcnRtZWllciA8ZGhhcnRtZWlAanVuaXNwaGVyZS5uZXQ+iQCV
    AgUTQGsk+NQ9cYxqOnQJAQEV6QP/ZFHefmwjiex7zEU9uhzjEdZhDlM0szKULUoo
    TB4x3yiXiYlzK2aqppXbV+vl+t2VLhd3McH+SKSiKwoBVWrdqsXguruIjUYGMAJI
    aE+Zh3OGUs8sZhtQqn3nE4+VngpyXwPwXPrDhQiwwJRxj+01lupNwS0Z6cAPmD4A
    W1L0aSc=
    =HsTV
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.96. Emanuel Haupt `<ehaupt@FreeBSD.org>`

    pub   1024D/90215DB9 2007-02-06 [expires: 2008-02-06]
          Key fingerprint = 741B C70F 100B F360 0B52  E92D 5F01 7A86 9021 5DB9
    uid                  Emanuel Haupt <ehaupt@FreeBSD.org>
    uid                  Emanuel Haupt <ehaupt@critical.ch>
    sub   2048g/6DD0929C 2007-02-06 [expires: 2008-02-06]

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEXIhOYRBACqxbx/nLwG1OVuFs1wt2zASY5P1JbyZ+DA0+21YKpYz6EjRIcn
    j3Y1FFJO5T6pR8yTMz47rEaT4K9OLigYZkwWg8G0WUqby/CJPylEkAwrhg8do7ys
    kwTJMg8nOlSyv+m9KFK2C8mhcp/dGqp/Ev91iAKE9M7wCNxYzZGk/lHnVwCgi3yc
    rQReRXDrXkOnJr0v4g93T58D/3rrIQJoFa90o0iUCatDJxvQ5eG0vxVPcERssGF1
    vUAWFJn83cImWHltpOEWyBgOnfjfkFKZolG7QXBejJEPXYdSKzinDT5yqWXQXCHn
    YCQxtO4OPxgtlV56sAlAeZgytuGfmkNfzkhoN8nRD3YXBlVWrhQwhVdmv5MBi7Pz
    RFdCBACk+4WuKIVkRCKualPZocELQnAXuD30AFqGP3w7EAac8dlXumsgdQsP667G
    R/RaBo2nks+tA8L3LXkMCgSCHFP3y4F82BFaNufkf5aTGDk4KOeEOLa4Wn2kyAQb
    kxIApsN1T7y//EFu/VoRRIx7sU91ep1O4Ww3TPhpaqm92OGfsrQiRW1hbnVlbCBI
    YXVwdCA8ZWhhdXB0QGNyaXRpY2FsLmNoPohmBBMRAgAmBQJFyITmAhsDBQkB4TOA
    BgsJCAcDAgQVAggDBBYCAwECHgECF4AACgkQXwF6hpAhXble+ACeL4FCsn3oEeNo
    3OSZGqK7HyeSTvAAnjSUwB+7Fi1OIiOzQVIKo4a76IyJtCJFbWFudWVsIEhhdXB0
    IDxlaGF1cHRARnJlZUJTRC5vcmc+iGYEExECACYFAkXIhRECGwMFCQHhM4AGCwkI
    BwMCBBUCCAMEFgIDAQIeAQIXgAAKCRBfAXqGkCFduYUwAJ4gfS+qakG4VbU4zMW4
    uBMXB9jg9ACgguQQkvNLpX0HktmO0BvhVRkGUsy5Ag0ERciE7xAIAJzXp5NhJ2vr
    E1mxRlgeWrTzQ9/W2D1+MAQvH/nEZLq3yS1snyLvk6KQooRN9MP1hftWMOSsAs5u
    cvrnKJOxouK2bIAdd/dk4dwVky9kq95PHow1NNiVEdWX+CxjmZXZ6uzr5XpXqSVl
    A8aaZTaSoAT0hzDWnQ59HdwzbEDwNGQrSmLmxK4TxmYsVM//KyPnG2tGb+lrIsf+
    6j7m/QrHrf/5j0hv5OGtnD75f8no7BpNZ6nKfusM8j1qECf4GA0rQheXLsMalst8
    MwZecaxWdvdHugiJUFbyRrBFWYWK2Ne0wyPTx9mK/CP2ayLJro9vsA7Tix6d1S8z
    4kkFShsxveMAAwYH/3EnNUO2EpN/R9uogeEUobHifbTz3Da/xe9/+k3iMZbW+6TF
    ntw7aFzemeAYVabFPwqyn9FfzMAsOlz0u7djn8X+lp22Nvr+eYjfnSyGfGu8Uso/
    KKdg4QeshrCcIDVdYBa314aatPRIBUO0qPRJISOhXC3NV+6QDaODT6p1xtsDSfdK
    BDct6uqntgHRssTzTlBZzwoZeoC0RqcIipG1Ly+y/yoTou1MiOoN1SvLMsJtrENz
    3+oG4p2yoZY5zodvJNmus3ArxHyVpn/iM/8onOufSZnftgDay3XPqxUIBVlpXLZt
    CuKP1XuWS8odKzGYrFAuWq4TW9QbkuRY0rwpCs6ITwQYEQIADwUCRciE7wIbDAUJ
    AeEzgAAKCRBfAXqGkCFdudl+AJ9Ik+uq4ank2SalIwfF2iFnNb0ATwCeLqLQIWnM
    2KoyQBvRCcKpNGcqYUY=
    =8Iic
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.97. John Hay `<jhay@FreeBSD.org>`

    pub  2048R/A9275B93 2000-05-10 John Hay <jhay@icomtek.csir.co.za>
         Key fingerprint = E7 95 F4 B9 D4 A7 49 6A  83 B9 77 49 28 9E 37 70
    uid                            John Hay <jhay@mikom.csir.co.za>
    uid                            Thawte Freemail Member <jhay@mikom.csir.co.za>
    uid                            John Hay <jhay@csir.co.za>
    uid                            John Hay <jhay@FreeBSD.ORG>

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.0.6 (FreeBSD)
    Comment: For info see http://www.gnupg.org

    mQENAzkZeP4AAAEIAMKg3LRpUCJdg9V9Pr0KIdvaQeItf5Fcrbh0GE4skfNPKeTg
    TQifwdG/GrMPYJBPHU8JnFqumLUnd2VSoFEJ/6W5SOZP2l5ZCq496pGCSekpe+kR
    dN3Ra+GoR+cWVLKuXj+IxA0Ziv2WEl027TnMhWGf/DHLdoWvSwJdVrGnk0KjBJGr
    HwWE6VGlhBSoOWMa9T0tb3sRVTEIJXDCn8f12eixx8XCzwIQJSgWC+ThrY+ZO/hz
    FRR5yl+izJfffQiLjc4yY0rXqDu9K3i+/0lWywcbnqMtRj8Pnr3j3Lzft+xex2ml
    qX68fE6dxof6Tc3GQCEqelj0IOAb8Zqy2qknW5MABRG0IkpvaG4gSGF5IDxqaGF5
    QGljb210ZWsuY3Npci5jby56YT6JARUDBRA8TDj/8Zqy2qknW5MBAeMwB/9R+Nvd
    bPPkvll4Qaw9I1FwM3iaMDM4IkqR6r+Gsi+RYIClYmRBU1HXZzKyNR/Ysy0thnIe
    YO2yg7U2nYJ00ysSZl1Hd7R9EQBuYZk647PMKbQ+pQ4k9KiO1ObT9JivWz6u6R3l
    gJMnCUEi6s+xW88eeTDBO/AKE9eUUBDZ765M3WcVmGfDYNpW/D3tX7taGcFT80DG
    VXKnFHAP2Um8IZeHXKGqh/jTTNCqwz7oj3GfVzzGEnmwI+goZScQWUl5J708MnOf
    uxiuOMBs7SLsvg1d7iEkO1oCDClv72i2Sr4rPuybIPMMPIpx/DpAZAIiMYHJ6PdK
    nMXSYgk0GOjx72pttCBKb2huIEhheSA8amhheUBtaWtvbS5jc2lyLmNvLnphPokB
    FQMFEDkZeP7xmrLaqSdbkwEBzGMIAJLwFCCICbR+kqejjFh2BznIOT69PIfE422e
    C2yD23fC/lqZ6LixxGrsZK5TxRycWw7fq06h77kd/RX8UMFErphMTkIapt+wLLoX
    qGLcY1dVyNhW34SutdHzXkMFo6T8COAautpnAMhrSh4dBw6XQUreVqc1BsyXL4vT
    LyI1/E8E3wELJZHldWQ7ldvXPUOaoJp5PJ0FIV3Nvme9g8U0BrZT/NjH06mYgsKW
    +40ZjeRycvA9Yjh+ONAOdX5ijn7QbixjSehFsmdpx+KdNyZbp6iAIurf7ysEp2Qm
    N6K/3EukEnVvy7Nn1L8+7K4IDkK+TocpG/m/P67w1AlrW0tNAMe0LlRoYXd0ZSBG
    cmVlbWFpbCBNZW1iZXIgPGpoYXlAbWlrb20uY3Npci5jby56YT6JAJUDBRA5HN4y
    wnPlMN5G9U8BAQVeA/0V4alPthF5+FVL7GJ14R7IQee3NkepbsCQrWfDl11DJkyn
    DxyISqzQd/ur1v5gziOMppQ35rekRYxqqmcKSg8oZtcQ8WFfrMPOYDDn8uTXmwX4
    OgLuW2EnJc0y1JiKuew1tHRQuoObZtO9yePRKkq+cPgLn+yrjPjGAJ1AuUL56bQa
    Sm9obiBIYXkgPGpoYXlAY3Npci5jby56YT6JARUDBRA5HOfE8Zqy2qknW5MBAXAc
    B/9QuIZEQJDfYJyv5Ztu9mtEUZoFfavYmLnLvbUz0rwZOzv8/krEQtkdVvkWYWQc
    JSal11h7L1EyY1YzrTnANkq4KUboeiR3X6RZ+z0p1pg5C0imWFdMpqnY3croHkQy
    0zU/d/kDd9mU3xismVbDa9xSJHbFh5KDpvnbeRxh5VIXcdiJ+RbM9VNqsMmZwCBS
    DgY/pyRuyiMM91L9IfWlOUwllAEHwedQg+ja4/M1gyiGKr7rmiE5LH9xbInvRR2F
    rQKDtmU49MS7ybHoLfZ9GXKo8iTNOuXE7OGOx8kIuapiNwKm2wayng8utIxGacoO
    hp8D0uj3dgTFUZ3pcMSxtjWEtBtKb2huIEhheSA8amhheUBGcmVlQlNELk9SRz6J
    ARUDBRA5HOgL8Zqy2qknW5MBATYEB/90qkiF+JTQZMN2wwlLkXiadUd1uHK8Um7q
    f19t1pI2Is0BNxtBwVY1OlrkpFkSkpSUHEmVKUVhHjsHVV+r+EdJ4dTcsT6c5cCJ
    i7avfz8duVbym09yDLytnBGr3te7tkmalwk3JkjXJhiMuUW9w9woCuVWRexlABDm
    Md8JjvyLqIe6bNkIcE9GvHhQQUYegYqVhDqzKH+cme1olSYDDjt458yMYo6UXu+x
    g7gESluIgGpK5hKI/MAw3r/XgOliBa9igg816jrTFiX1oZT6dgDKlzxNS7J/O/EM
    GOmNi8N03Qx819oKlUaMHAFPNeUfdT74bqVYbDo/GJptzaQtUiMv
    =l5Xu
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.98. Sheldon Hearn `<sheldonh@FreeBSD.org>`

    pub  1024D/74A06ACD 2002-06-20 Sheldon Hearn <sheldonh@starjuice.net>
         Key fingerprint = 01A3 EF91 9C5A 3633 4E01  8085 A462 57F1 74A0 6ACD
    sub  1536g/C42F8AC8 2002-06-20

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.0.6 (FreeBSD)
    Comment: For info see http://www.gnupg.org

    mQGiBD0R0hQRBACPEDZc2XKdvIq9F4ofeq/EUB8ISFQ6kaVPcb5ingy5ND+0MUbz
    K9U+q6Ik8d67KfHHvqGn7XTOXxGu2WS6rIa4ElFHtG/9lpgYtOFRZJxM8nv5+zCn
    elu18skUNup1y3uIwvhNUY3OPSzVkHC+tUPWfW/8DqdJzud/l8sDFDRtBwCgtixB
    FHJ2jRXInApVzwLcjpgVJq8D/ixzt0O/Zg2p62/qyAHac7M1sEc2QarCAGwRbuNw
    jHRtglxQw/GT2NACWqy7lVHKd37ciCrXg9QrTjotJtMcoJbCitYvbQo2RHfEeIyN
    yw7rffTQ4CpB51KxNhUWHcUfe6Jhx2hgHzehJg7hYnbtSv5hJcn2DXMSHHyHwBri
    hpldBACI7iJxl2MtFUHBo3XW27WYDzTNTh2LUaMcIaowMW/+vIDds6EI71dCAjuU
    Ai8DcNacMtE0xRdtNzDMS8vgYWBVLkHv2ENVdLfpxhM72iu4tmPKGF5AXK191dvJ
    qPge41Z2/57191Xt+keYtuSQDtXwZfSu1uLOHBa0BBvmppBOtrQmU2hlbGRvbiBI
    ZWFybiA8c2hlbGRvbmhAc3Rhcmp1aWNlLm5ldD6IVwQTEQIAFwUCPRHSFAULBwoD
    BAMVAwIDFgIBAheAAAoJEKRiV/F0oGrNMRsAnAlWdC5LkmEF3hZjNAIA8gMxkfnZ
    AJ4k6LXdmHMSSPbd48MbDYq67yzOG7kBjQQ9EdIrEAYAib54xuFqjHpvLxXmqFRl
    qAgAD5XpavuJisxGjfm7aTVWIpR/OOVFYkW59YInHM7dDHL0Y7tQETeEKf9pj6kF
    TMyWFoBjtdazqSmq2YXOvI00N27IKT9eqxJ/qR8QgIqBMNkraP9QKi60ASDIRUtl
    OZSfokSbAKkZMTyS086CgWw0bCPXRCvQLHDjga3KCbht0AjrZFkGmi6r4+rXFnT6
    D3JrNSQ0Hj2qFEixHtZvXTsqgsEkOEtoe5taMFSygM0jAAMFBf97Ip2a/kPkXNt0
    p+2xmWIFEDim7J9Cwl5viTb1t8fOKx69hFDQ2BwPNDZd1HvlrYTpuJ23uTrDOZsw
    IT/wVc/IQ9nn4+mkxOmq9iTHCBS99OXz4IsODT3W1sgzUfl+mdqJP8xfEnsyqy6G
    ivOoR3QdZg7rxvOU98HhDQ1iJX3rCtLNFGisrovDF33oHMEE4oHvSMXeg65JXWiU
    EpEpioINjrA3P+TL+fMv1tb4+wSUPqTWX34Gx4UfDKnMedxl6j2IRgQYEQIABgUC
    PRHSKwAKCRCkYlfxdKBqzVtaAJ42mqzwmJCpk8fdsfkHUt5uGTN8sgCfdmDni1OD
    NWQi1mhQOXZX9oGgyso=
    =PTeT
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.99. Mike Heffner `<mikeh@FreeBSD.org>`

    pub  1024D/CDECBF99 2001-02-02 Michael Heffner <mheffner@novacoxmail.com>
         Key fingerprint = AFAB CCEB 68C7 573F 5110  9285 1689 1942 CDEC BF99
    uid                            Michael Heffner <mheffner@vt.edu>
    uid                            Michael Heffner <mikeh@FreeBSD.org>
    uid                            Michael Heffner <spock@techfour.net>
    uid                            Michael Heffner (ACM sysadmin) <mheffner@acm.vt.edu>
    sub  1024g/3FE83FB5 2001-02-02

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.0.6 (FreeBSD)
    Comment: For info see http://www.gnupg.org

    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
    2Q8=
    =/joR
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.100. Martin Heinen `<mheinen@FreeBSD.org>`

    pub  1024D/116C5C85 2002-06-17 Martin Heinen <mheinen@freebsd.org>
         Key fingerprint = C898 3FCD EEA0 17ED BEA9  564D E5A6 AFF2 116C 5C85
    uid                            Martin Heinen <martin@sumuk.de>
    sub  1024g/EA67506B 2002-06-17

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBD0NjbIRBACZTF4rK66+y43uXsV8CHSefx5lRHaLPFMNga+sUBRIFcwu9WbS
    KSP/r60Gf/mNK4EUX3/+3gVljrgpAbQL9X9MV/SO50aZM8JMrUkUwjuzzzFKplT7
    bdB2zWhexWemFsE0F1G5NpxkqMg/E0aiZb5P9MVJyGLlF1hCwhWsNG0OewCgzQ/b
    yAEMk03PPk3DOaM4d/Vdf38D/j4O+TJPSjMf58wRGkrT+BmLCvFvg1OsUOMgyQPC
    Y07yO6WmSiZV5ynqb4bS5m3jfQmG1I2wK+dIf8SHyaVgqZiUpfqrsFV2qwfZXcod
    C8a8b/kmEbdMk1j+jZ8qxSScrKCHKqdEs1UihCt/F1kVVd8gqYbWouICxF4GoU4Z
    ANmHA/4xVNIInKVghFk9lMaK9lDgQs02laaTWLWzcSfe28ADds3Jdur0Ox06tgeU
    zdktWQvRYpIjqiQCCFLN18l6Lc5qyTg6fnx2yWpWJMb/xumUz7A79X0TBN8WG71n
    zfJLHtn7fCjsi5009s7Ahu//Q7pGN8FvkrZHZ3xNw+3pAaoawrQfTWFydGluIEhl
    aW5lbiA8bWFydGluQHN1bXVrLmRlPohZBBMRAgAZBQI9DY2yBAsHAwIDFQIDAxYC
    AQIeAQIXgAAKCRDlpq/yEWxchZjRAJ4s0v1VXJmkm7kj3kMM0Z8xMNoJaACgkcMu
    T1ID/2v+A1X7+suOzrWMr5aIRgQTEQIABgUCPZGohAAKCRCteU9X9uLnUzW3AJ9T
    0Hzs6ZZq3HAYuSVkLReaZEhyGQCfb7goCt5RLbxx+3AMyyX5uh1boQmIRgQTEQIA
    BgUCPZGlrAAKCRD5Ay7lt7i0eYdWAKDEeKMbkRTSZKsKelQwiD+T3me3tQCfVMLi
    9mkjolOAXpAOVX3Igy5QHUS0I01hcnRpbiBIZWluZW4gPG1oZWluZW5AZnJlZWJz
    ZC5vcmc+iFwEExECABwFAj/Q6/UCGwMECwcDAgMVAgMDFgIBAh4BAheAAAoJEOWm
    r/IRbFyFjSMAniK+uu6ts+tLchT7+npgPJ0wmyCXAKCmCmXrSUTnPG5DwiVD66h6
    aL2GHbkBDQQ9DY20EAQAh4G77oKy6pQB1+dhbbLsfb3UeRWv7i/w21Y1tSriZ5gm
    HhofJRuczvrhI9V23wRVOKs417TGJzytDIfp/huycYMigAQXikmFBJSqIC2ktJEi
    0DGhhne4XBdJENiHV8rb3/mk+Ffes/88DmoU45fpAwY1YN1jH8WO5mEq2aKCjHcA
    AwUD/jBsaAoUeNO00hwuZuWYNM4nvX57nptObVzP54/TfKs4GmdWzcfI2JB+5eFp
    rjtNCK+tosTQd73VzMWKk0fwiIew+GsB+g/ibK/WJW0lS6fktW2nPG2mGRblLtf4
    8W4ZmtZUqFTBSbmZOcsxQ/LahRosX82NbQyFPwuFMEBqYho5iEYEGBECAAYFAj0N
    jbQACgkQ5aav8hFsXIU0ogCeLnzxBftyPv5iS52Ear+q/mPZL7oAniB0B6mFArQV
    gtLJNL6KejWqSh3V
    =Z84i
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.101. Niels Heinen `<niels@FreeBSD.org>`

    pub  1024D/5FE39B80 2004-12-06 Niels Heinen <niels.heinen@ubizen.com>
         Key fingerprint = 75D8 4100 CF5B 3280 543F  930C 613E 71AA 5FE3 9B80
    uid                            Niels Heinen <niels@defaced.be>
    uid                            Niels Heinen <niels@heinen.ws>
    uid                            Niels Heinen <niels@FreeBSD.org>
    sub  2048g/057F4DA7 2004-12-06

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    9RkYrA9581ilMd2RCkU=
    =x4MH
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.102. Jaakko Heinonen `<jh@FreeBSD.org>`

    pub   1024D/53CCB781 2009-10-01 [expires: 2014-09-30]
          Key fingerprint = 3AED A2B6 B63D D771 1AFD  25FA DFDF 5B89 53CC B781
    uid                  Jaakko Heinonen (FreeBSD) <jh@FreeBSD.org>
    sub   4096g/BB97397E 2009-10-01 [expires: 2014-09-30]

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBErEzQERBADR7BDREKjIL93LbSG2d9n/wdzYYYwKk41zpPeIWy7CbUgTwDho
    66nNEpHQ+bjRK2cV5f24M0wh82ZQJA/smqaHCAGNpL2/LVZumXRaK0RLLpUZHqXS
    NGs6/4/tBSPMIyLyJPiQC/gWRfevDVHeGKEUyHE7eWqUavuZ6WVnYFhAVwCgj7Iv
    ZewKUicKkfjG1JsIozm82nEEAKA8rJ3awfRLx8dxlOkv8R2UgEGY8OOLpFbr+P4X
    vnkxBp/lhlAFQCFKesO+T5ijE+QNsZHdcIcsfbAlfrUGJnd4IrdhXe1Y3yxYI8m2
    E4kckHIUG80Y5vqSM/oxn195AbWDCKZ7/y838gr1fU3xEt6Np7VeZs7hSqXaur6n
    GVYpA/4uoFquzOTGGTNMQQRlhAB+09kt4BMpX5dAQ4J11v5YE6YTikm9q+U2N5IG
    OZkHOPMSHHlUGjwXQHhEzXuDdUurMwS8YEZzdj2DE6F8S3p3SPCDC5om27mY55/o
    rzT+J2M1kCh11HLxXmOsO0CcAi/6Mzo7smi7+SpFj4MwuQX+frQqSmFha2tvIEhl
    aW5vbmVuIChGcmVlQlNEKSA8amhARnJlZUJTRC5vcmc+iGYEExECACYFAkrEzQEC
    GwMFCQlmAYAGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAKCRDf31uJU8y3gXT3AJ9a
    owVGvneYWqJMSeg3EL4ayEMiUACdE3r0oaRkUbDlJYLZ8eVgRINpen+5BA0ESsTN
    ARAQANEvv0rWyXcy/gucz7AZdbGQwjfM+rw2kRDYW2osDtBx9os7DFnzK/AtqJNX
    vW3YPbLGcrQxw4Tm0Ye6V2edkTSWN/jnvbsLiHrsphPSRi2nFU9XYjdKzqvMy5uM
    P6iHlQ4/TNoH/kCrFiMLzRvYkllZ6g3y2LnrVXjSgW+LIX8x63O57k44CGx/OeWP
    nG/eBEccmdRHA5FNYnzVDQxCJG/lrKv/V3L1tYIiKYo9oR7Ma6+5sCPz5udWX8l2
    VRmi6pe2nUA6H8reyuIUu91UfyIUn1CcgRnfhu7kJRYcFeCka3p2aLqP1L9dZ+Qu
    6YMqDsGFXKt1yZwhzUkmwnB+PgOq4Nr8YxJ97Q7ErjSBtaJ8rCHPVscV/Due5ZNB
    x0MoFtdu5t6QkDYeJlJlo+gVu3oIg2N8rlHYvEFL6kboNC3b2eejZR1vMYLajrJC
    hQe8qE00TT3rcnpGUWm6aJS0CTehGZtj4mD4PEvo9lZprC3xY5D/HA1+WIadXt7K
    /I93BDGw+WXlMq/+q1u9kYJiuCqKnFW9zs58v3tYcs2zorpO8Pb5wDmewAMxEQkf
    /4PiRB22RX4ivF5fqAoP1SRpgtqe3HjqDcS51FgRHpt8mIk/3C/WHQcNy3nLjRN9
    JzKzDdzNRv0U8HO0tibhdhiFcR+3Hyv/ncahF2lMx+cUOWszAAMGD/49jCbzC9D2
    Nh/6gOj0arpIE6iQNGZx6AxRvOdU2ibdaLGKLoHNVGqvCXxkPND5ySfnsGvrmzlO
    r5Dbvc7wfJojqqqQl0O4CfoIOl1oG42qilTiw8ClbW63lmRNkpd3XWGiraKo15fG
    RoIR/y9b0wl3zcZqqZswHf890XjDen0Ue04fkiRpad93QsVV4YB96oesSXP55d/5
    r8ZbOgwgEie210iijW4P1OTyv3xQCvxecRVcU4xIplcfHAKXtk3S62BUJq+/w36U
    IkQDhX053iw4V5XHgd0U7/JSaOM6bv+KbOyL3cLq+HURohUbgq3NsriR3ZxAZlBC
    vBchVGJojdZlsBCwjSjdXgcM9GLuf/yR9bu6TAvXyfZV2ad2LQQowtOrEVnteyOl
    Cy57oQ2NPfxZUYohTu6Bqp3GO9Zr9Q7NsFF0oefm26oXOq2+HW3r7xRyWTr1G4ir
    PZtdEUO/aG8d2BrrAtAMy8OkgxZBXDqG3RgcqJ1y8nIUAqNRvcQemGLVBg/R0oeT
    iRpH0s2gvdx9vWnnFk2BuR5b7Qt2kl7s3rfhHqx2Ruc+2kJLqLzq59Twp7G/RmPA
    ZKat/ioGXqOXgVKypaV13fFgdZb/EBfuXe62s+nZ6Cppblq/k1J/Ok0j/RV1MW4J
    jSkn3JVQuBLREdGxuhOzQChVIrAmiror34hPBBgRAgAPBQJKxM0BAhsMBQkJZgGA
    AAoJEN/fW4lTzLeBzc4Aniw1FfFM0wsfY8siG2dk/ZQJbavVAJ0e7JR01Dfum7WB
    T5KpyVoV09QzVQ==
    =YKVk
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.103. Guy Helmer `<ghelmer@FreeBSD.org>`

    pub  1024R/35F4ED2D 1997-01-26 Guy G. Helmer <ghelmer@freebsd.org>
         Key fingerprint = A2 59 4B 92 02 5B 9E B1  B9 4E 2E 03 29 D5 DC 3A
    uid                            Guy G. Helmer <ghelmer@cs.iastate.edu>
    uid                            Guy G. Helmer <ghelmer@palisadesys.com>

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.0.6 (FreeBSD)
    Comment: For info see http://www.gnupg.org

    mQCNAzLrzf0AAAEEALuGJUgTVleE9HeqPAi+AqBDMMfa76kC63xx98Hqv1N9TlT3
    jlWVShX7Da/9h9WgK98wkb7613Ur7dPl2qVcSns5w7MCustbtt4YEaQwXZ2jOEZf
    snKt82+DYxZRyfUlY4h/8WA79R8BwTGd/l6g3kDoQuD/446BT8c0Yd819O0tAAUR
    tCZHdXkgRy4gSGVsbWVyIDxnaGVsbWVyQGNzLmlhc3RhdGUuZWR1PokAlQMFEDLr
    znbHNGHfNfTtLQEBxIUD/2Lk7Ds8Rt5ZPVNB2Xv2kzEByndv+r1FUDSDcWUn7MaG
    HdgIqfkNespNzv8K7ORW+qrgIAtCRGXhc0Z1q1/Mb3kzC0g4UW5BuleZEur8Ys7t
    lc13ZV94Wb/rVEnY5wh2s3mCmMeXVA9CAiNBzzI9O1RKVZrLLYJk62ysSoq1os+A
    tCdHdXkgRy4gSGVsbWVyIDxnaGVsbWVyQHBhbGlzYWRlc3lzLmNvbT6JAJUDBRA7
    8tH9xzRh3zX07S0BAdUDA/4poipXJFYG6r7+Hk32P5unYZt6dJZ4qSwsnc4+DVuk
    krv5L1jC8Wg/Ojerk2hYTyArM7xQkw0tELOADL2KBUlHp+Ipz7UuO55n/9aOHnWr
    YJLjT3+9eliYkPqJ4t7sHqlCeuyKc7HkoaaN1ErJTmLLy/Jfcx8BsyVsgihI9V1s
    VLQjR3V5IEcuIEhlbG1lciA8Z2hlbG1lckBmcmVlYnNkLm9yZz6JAJUDBRA78tIj
    xzRh3zX07S0BAXQ6A/4zKB/ROfSAUmVQGm0tH1IC4lZX1qV/PZ4z2KUWQPmXP3jr
    jzYFdlAPaUNIwVqW8Mwj+p9njnL/Ltd3NzAjTP2I7bSzBtg4NcEBRNclOOnbCamX
    B4mSGt07WgfT1QGCY8HyKXNhUBbqvPShfeH1OM7iyooLWU79V/1v8utB/mHxYw==
    =nrvZ
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.104. Maxime Henrion `<mux@FreeBSD.org>`

    pub  1024D/881D4806 2003-01-09 Maxime Henrion <mux@FreeBSD.org>
         Key fingerprint = 81F1 BE2D 12F1 184A 77E4  ACD0 5563 7614 881D 4806
    sub  2048g/D0B510C0 2003-01-09

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.2.1 (FreeBSD)

    mQGiBD4dlrYRBADhXves+DDbhv8dD1LyC7e+RIASp8rEN0mJDVarhEy45KxRZcD2
    hE9dLXZU/5hcdK7yfatneg5xGFiedFJ+u/HcsMkxeb60+RUcF6Ec5L8PJmCwIQl3
    3xP7UmC203YufvyidQSayOk4LDyg5WVGEXiN5KuShJC+feAwvtAao5eHnwCg5CmE
    y6rO8Bh/K2MQxP8CXCoLG80EAINd8twMsRIIqAxtVWeG0yudtgYdvhpbGrNKoq2b
    cxmfunLAQmHim1jL5run1St3ZACyuP4brckPiBAOxVoRcIMOGPk04Lw3blKQ7u02
    6aOKKlGvW2pF5/Wh6v/q7gzAucn1HJYcGK7Xc8IvfdIZJl/tTeCo0/smxND4EWhU
    C94zA/0bvNhgntEwLF8x6UJnZXfQ8/LGl/NkSTyTMA1QqRrrik1oN4mYOAHE05Y4
    Oija6MSgD8YDRcrxxr8Dwh4pqS/+FlEsV5y4A4OoYbPW5L6FAbEpKO86jbE3FK20
    lX9Li5+woBWaTuLRcU2Tk69WLeOTdOrs+f50S1xWB4DJKBjmu7QgTWF4aW1lIEhl
    bnJpb24gPG11eEBGcmVlQlNELm9yZz6IWQQTEQIAGQUCPh2WtgQLBwMCAxUCAwMW
    AgECHgECF4AACgkQVWN2FIgdSAaZtQCcDxSj1KNFQXWXPl+U27Sl2/IbKEgAoNDq
    Yn86zUh4NPJZJb3P174CFRK0uQINBD4dlxYQCADaMWMhYNWemjrdioJoZU3vYkup
    IcQg422OZoxWYcUz6zKVHZuPdXSAFO+Edrt8QwvYrjhSiOSF9NNnFgNGMBGmqOg9
    Kfk5rIKnENNQP8H8CZtzlDjJXVoMAeTfaeV9+ztHwWKk6XagjLApl9Fx42Quu4Po
    JdvJNHhq5Bf299jecRsWmSo7DtpNnzGC2HFWRkGdkkNmpK7hFe9m3YsFuP3nCFps
    RXCFMx9t2Bneh1eM+NqogjON+vyZzOUB32WY+x9Kz6Xf29auU1PSNYz+1LC7JAYk
    f4CrFA6wexQHKe/nXwlik3/JeFSPAsp/VsmvaHOenZTOfmtBT4ruOwqn8DGzAAMF
    B/4tHAo7/sAMgvkz0qHAxV1DjOjB5AQSs4phksYWYN1uaJq2//oD/jjifmmkhAq0
    JLEeKDquvuNot9dtJ/75DF/XNa0Upt4Hq509Wm4o5NBN/CxRzMn6oU+K86S6RF1x
    JidNNI+CsTfdkNnCn0x6OjRsG0j+CUbwRrs4CJ/7ZWkuMCclLBKoI+rAwd5YM4eI
    noSrSZ4/2Uct7CyVm2aGIh5ofR75L7k92qZ/D5hN0wwKrL42bO8gJqPGPgsCtr9m
    OcT2DtOxkS9ir2QRyD7SelKM4pmSbxvk8S/IzrNS7dvKiO0xQXsvf+sG9rZOJ2vF
    i3in0uB9SeXAzsqNCqtEkSbeiEYEGBECAAYFAj4dlxYACgkQVWN2FIgdSAadQACg
    z3dGbsy32PBhRn/t1lXp1120VrAAn04hxsFX0HEKt6sqAcpIuzdTVrEM
    =8gWX
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.105. Dennis Herrmann `<dhn@FreeBSD.org>`

    pub   1024D/65181EA0 2008-09-07 [expires: 2009-03-06]
          Key fingerprint = D4DB A438 EB5E 1B26 C782  F969 820B 66B3 6518 1EA0
    uid                  Dennis Herrmann (Vi veri universum vivus vici) <adox@mcx2.org>
    sub   4096g/C003C5DD 2008-09-07 [expires: 2009-03-06]

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    =b9AS
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.106. Peter Holm `<pho@FreeBSD.org>`

    pub   1024D/CF244E81 2008-11-17
          Key fingerprint = BE9B 32D8 89F1 F285 00E4  E4C5 EF3F B4B5 CF24 4E81
    uid                  Peter Holm <pho@FreeBSD.org>
    sub   2048g/E20A409F 2008-11-17

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEkh8ugRBAC6djNybj/k+sW8z4TZeC9M1PuSSuJlmCxF/h35rN1bJMHiaVaz
    umG5AjNwYtKilXO+bpj3OUQDz86j/vMpETy44lOaxr5f65lkP/tXATjVpSkxuimp
    vUHi6wRaCHLbyMGHRfuOX1E1yrYm6E3UvjrNnl8bhOJ9paUkk3El+gKm/wCgtIS4
    07Fb+Mft+7a9Ti8cUKP4rSEEALh/nGAsKInUmw3ybZ4c68yVjOUOhbDgAjU8zwb7
    vVzVpCythAEailx0l5UDzVSD8oszLiSDFLf93rfS7AyWx2/C/6kayLH7nYnmHmI6
    Evv/uZ/o4Tw8l2BmqEMwMIBRi37et9tTJNEKMAAUaah81KRcE9CPp91f3oKutOAq
    BkG6A/9e2II1FvJRLzeGRB4FuNm4yqnRvA+LCPE24qEWGoVu55KvSsrb/kQEUxHh
    46K6d1UCWYIlAPhV/CGstv2CfW4zDXOBlDg8kdQz9VFlzyz8sSs6ZP6b7kUzrSRp
    tq6mgiLKaTFYtm/BaUgYXpSI2uTlgujhC2v40pzeKN65Ph2H8bQcUGV0ZXIgSG9s
    bSA8cGhvQEZyZWVCU0Qub3JnPohgBBMRAgAgBQJJIfLoAhsDBgsJCAcDAgQVAggD
    BBYCAwECHgECF4AACgkQ7z+0tc8kToFTVgCfU8q5hy5tJ9ZEs9ScXPuIZ/vA4XkA
    njuLqq+giT5SvrrckuA8I1iFgsezuQINBEkh8ugQCADzK4XaJN07zeKtivb4sass
    fejhXyMJ5kwNqK+DRqMcHkbh6PCKpoOo7xjnk7e1MdTp2UeGifzTUEXz9iPdLFoW
    0O2iCppIgUEVfeShzOqEtiP0qpdDmc9RHbA17R8V8jaNWxmJtbI3Oid/7ubVPBfv
    KkPlsyut4A0yXBSxhqpLnaDpDVfMuUFbdMK+aYLABZMQaj6SJOf8bsHrBL6/j05T
    A0ZJkwPrV+ATbCXLUCAQ8q9rza292OFdLq5/iOQQa8mXhR+egd+NP1GLDEze/kx7
    5gNQJLnfS5GUBJMSIzLIC5Nn+WPzdmK5tMT/NLhzRbtqmWoAfQcW/kcEAUlNbGJP
    AAMFCADe1t3CP+Utgy0QAmqkipgKwvs32CsRgye2ocxtrN8GRaunFSutyESBNCHP
    VH/jh2rTZ6KjVvgBcruaT8B83YtYgOnFpe+4FZr7iwlSVL1CcEwWRDD+oujebAUL
    MaLTcToWbggvbUbOtu+VNKooDYFbFoZvUs9I/49RRdcLfC7dxOfl0+51WTUTB4g+
    d/rxtExYkvh19QEWsj6lyR6icwRhtrn2S+0oZ0JQ/mjCoqdrGNiiGPXzKrUnpSK1
    b1hrtZ3E5BoWJuXu4Y4hHHzoxGW3ggVeTp/+X2K0DfKu0itGJML98oe1hXbbDaht
    O+s3+Nrro2j0Hx3JiQB1wB9merWsiEkEGBECAAkFAkkh8ugCGwwACgkQ7z+0tc8k
    ToElPACgjLamE6WKd9zLyyoyZcV2H55qlZAAnitC7OHmghbHiw+LuQZ5Je7M6sik
    =KODn
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.107. Michael L. Hostbaek `<mich@FreeBSD.org>`

    pub  1024D/0F55F6BE 2001-08-07 Michael L. Hostbaek <mich@freebsdcluster.org>
         Key fingerprint = 4D62 9396 B19F 38D3 5C99  1663 7B0A 5212 0F55 F6BE
    uid                            Michael L. Hostbaek <mich@freebsdcluster.dk>
    uid                            Michael L. Hostbaek <mich@icommerce-france.com>
    uid                            Micahel L. Hostbaek <mich@freebsd.dk>
    uid                            Michael L. Hostbaek <mich@the-lab.org>
    uid                            Michael L. Hostbaek <mich@freebsd.org>
    sub  1024g/8BE4E30F 2001-08-07

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    [encoded data, 10140 characters]
    nQO5zgCfXsb8wtA8I0ngWwOQxrnRRE7+Smw=
    =j3Mm
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.108. Li-Wen Hsu `<lwhsu@FreeBSD.org>`

    pub   1024D/2897B228 2005-01-16
          Key fingerprint = B6F7 170A 6DC6 5D1A BD4B  D86A 416B 0E39 2897 B228
    uid                  Li-wen Hsu <lwhsu@lwhsu.org>
    uid                  Li-wen Hsu <lwhsu@lwhsu.ckefgisc.org>
    uid                  Li-wen Hsu <lwhsu@lwhsu.csie.net>
    uid                  Li-wen Hsu <lwhsu@ckefgisc.org>
    uid                  Li-wen Hsu <lwhsu@csie.nctu.edu.tw>
    uid                  Li-wen Hsu <lwhsu@ccca.nctu.edu.tw>
    uid                  Li-wen Hsu <lwhsu@iis.sinica.edu.tw>
    uid                  Li-wen Hsu <lwhsu@cs.nctu.edu.tw>
    uid                  Li-Wen Hsu <lwhsu@FreeBSD.org>
    sub   2048g/16F82238 2005-01-16

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    MTZHdxZQQYQ=
    =uV7d
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.109. Howard F. Hu `<foxfair@FreeBSD.org>`

    pub  1024D/4E9BCA59 2003-09-01 Foxfair Hu <foxfair@FreeBSD.org>
         Key fingerprint = 280C A846 CA1B CAC9 DDCF  F4CB D553 4BD5 4E9B CA59
    uid                            Foxfair Hu <foxfair@drago.fomokka.net>
    uid                            Howard Hu <howardhu@yahoo-inc.com>
    sub  1024g/3356D8C1 2003-09-01

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBD9TDBwRBACs0PcLGuginQVidy1QScHuKS9G7gd8smYI2FcSsk/AkBhqIkWv
    hieu+iXlpxyZYCDDPKPhieDLkTHc9hYOGG7oTJhBMXUrUqBIk+sqeeUAl/eh0grX
    wUU2khj8EkYC1f6p9AKu25zoyXHxjnKulMhrZRIItg7jVJLaFQn2A9KCkwCgyVeF
    jCegTvZWikBuoXmDI/K3OuUD/19Za3DHV+H0dmfAG7JdVwTW7mJ3nCWJFvlpTSSU
    9Di4VCVj8kUGmo/kRgpZ6gwlCaPmwh/wWiT/vHVQqdd+EH/k/ITs+zWrPOnWCxLY
    zV0BEKtW4kdaP5H9ttNh3Wj1GRpyxh/FrMP7zJfdgze2WoRY57j+H9Kuw2s/42RU
    zYDAA/9wIriNXAj6pFB+J2sCqYXIMNDNDQh6lYFNFgTS/WPYJoA8PWY62oFc0V6n
    ES8GOXjyEya428vedVy/G9kj7cB/IiTTy8Hj7JjhUk/rSIPXMMtNyvM6vQ++f1IV
    1qSzR9sijpmpk/M2RusUQwBP131PnCzSCmAZB8gvcNSlbA9gnrQmRm94ZmFpciBI
    dSA8Zm94ZmFpckBkcmFnby5mb21va2thLm5ldD6IXgQTEQIAHgIbAwYLCQgHAwID
    FQIDAxYCAQIeAQIXgAUCQh1SIQAKCRDVU0vVTpvKWcmhAJ996hkp7RKzCsO1R4wh
    81QBqxZ87QCdH2JXwcclPFAF/XKpS5kbQbKdW8a0IEZveGZhaXIgSHUgPGZveGZh
    aXJARnJlZUJTRC5vcmc+iGEEExECACECGwMGCwkIBwMCAxUCAwMWAgECHgECF4AF
    AkIdUuwCGQEACgkQ1VNL1U6bylmL+gCgle9BEVLP/FKDTEsz6pYH/hdVMzgAn2kg
    KyplWAdJKjQ4AHlKOzi1DKj0tCJIb3dhcmQgSHUgPGhvd2FyZGh1QHlhaG9vLWlu
    Yy5jb20+iF4EExECAB4CGwMGCwkIBwMCAxUCAwMWAgECHgECF4AFAkIdUiUACgkQ
    1VNL1U6bylmacACglEvdvs5wMSB3EEP4qp46uKdXlt8Anivwqzf9dhjw07omH35k
    Ll7D5wGouQENBD9TDB8QBAD+sEewy1REDPQWycqdZVWzxmiS1X+TzSAgfcc7/QKv
    AZEsGADvhHcvaACTBuYRVr8DyzUxFUxeNByWSkLe7N5Hmaqauw681zsI+2osfXbW
    Jkp3JUybeFSIN5pacLNP5+DEAOzzphCF8ALv9H/MB8J9dRhZwDkY7SKt/cSNh4Cz
    xwADBQP/aD4exhzoF1iXR4879xEAAsRy3CCaoiPNeE4Aj9mWmjqEMzWYOjDeZ2zF
    W8Jrn2i+tOVGFpg2FKwtuqU8JRs/lqbedYUlM3UQl2pqGSV2tAziuLKKkzPnKWo6
    79hIhrjQCEPk1MqipoL6l8qZb8vbBpoCee5NF772jR85ai0ZdGmISQQYEQIACQIb
    DAUCP3rhagAKCRDVU0vVTpvKWU/OAKCE4tEk79yRFtmSNNa+ddafxcuyagCeI9MA
    byQOCAi708pPSIquH3oiM8o=
    =P50z
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.110. Chin-San Huang `<chinsan@FreeBSD.org>`

    pub   1024D/350EECFA 2006-10-04
          Key fingerprint = 1C4D 0C9E 0E68 DB74 0688  CE43 D2A5 3F82 350E ECFA
    uid                  Chin-San Huang (lab) <chinsan@chinsan2.twbbs.org>
    uid                  Chin-San Huang (FreeBSD committer) <chinsan@FreeBSD.org>
    uid                  Chin-San Huang (Gmail) <chinsan.tw@gmail.com>
    sub   2048g/35F75A30 2006-10-04

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEUjcNoRBACNcrOsDaRrFQMnMjnNViPfgBakMnwy28P/tfZvg+vx/5iRt73p
    5RrBE3dJZyAIOg+3st7sgtVuqeymh8JmoRlVFqLKEpCM1NNqq6TNHhlLBAuIYtTL
    hqN2knPM1m/IZp1Y4a5Z1OVnM6/fqItkxql4SX+GJ5815Lvh+1lokr8eMwCg9w2Q
    HgsgytJkYiFGJpkw1YOfwFUD/2oALyshDDCQIshX2xHPk+zLTMQva7uqDy8AUJLO
    o0DfaofDhkGjZnLpuFrc16eyfaYZw+mO149WTMpWrzCi+SmCXje6MSywINHneql+
    X6OzJCazYCGUfkSbwtAH89gIRKJiQKQfi4xhDrn8Iu+x3YtOKKxnrEVGX2S8fKka
    6YJ9A/99q0NX+543o6/kjfOz6Q44xzoyalBXT36THsFm239AaOejufu+HeyTZs02
    rvrF7IGgga1eUeQwx9gvRNFX65CkUc3AOTVfK2Tn36QJcGfm6r3ZYFWKjAMJ3haf
    aElE7Bs2zGergI0KNOid8rjC6osA3NVYSGI4mKIuQcBoxUNf6bQ4Q2hpbi1TYW4g
    SHVhbmcgKEZyZWVCU0QgY29tbWl0dGVyKSA8Y2hpbnNhbkBGcmVlQlNELm9yZz6I
    YAQTEQIAIAUCRSNw2gIbAwYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJENKlP4I1
    Duz6zsMAn1oP0sY1yRMo8jr7iCCdGtw2FuISAJ9crrnri2tcPS3281HX/4xk66dq
    c7QtQ2hpbi1TYW4gSHVhbmcgKEdtYWlsKSA8Y2hpbnNhbi50d0BnbWFpbC5jb20+
    iGAEExECACAFAkUjdFgCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAKCRDSpT+C
    NQ7s+pzxAJ98bMcpWM9Vd/YvB2tx2tK3zH89GQCgqOGeoJQvB+MWFM1oVbP5jmJS
    wDu0MUNoaW4tU2FuIEh1YW5nIChsYWIpIDxjaGluc2FuQGNoaW5zYW4yLnR3YmJz
    Lm9yZz6IYAQTEQIAIAUCRSN1FwIbAwYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJ
    ENKlP4I1Duz6QX0AnRiAfY8Ngh14cBzYH193/LSIuebEAJ9wY9Gz9WQbwb7QlJEX
    cOmrejGiTbkCDQRFI3FNEAgAsPAXITBR7gx+9AyYwzvtIUjzo+viSfVHusyZccu8
    82qzPKYF3J1QewFczrL6GbPCNqw2c/IZ0Sn8leGgVw5cwP+eUNtcbuQIa8Hpgl0Y
    Ns5WZlr94NXTdU8+mO8WXugzsumUnScnKFhrzEQQKYbbAIavBAzVAoj8Bu2UDaCB
    fCc4S6OwHgUTuLHDRA0b8YXe4Zc/VbblSIZFosga3vishPOCuj0YWjLjdkXHFZ+Y
    We4oDxnMT/yPBcp1/7wqEhTid1dgJvu9R2N9IFSxHTxoHiEsEFa9z619/imVPXGF
    rmcoJb5vG/NSH6cMHr5KP60H4ze0pwMKJ3had+YJSIJGBwADBQgAm9eGbCZ3RUin
    Kh/AJSsVfzW0snA4V1sv3ovSOekROs9YoUkalx8Ywt4fZkGHFWvYXLVb1KnmW3+O
    juhfrjsgmaizQhSMHT47C21XJSvAWuXXZrF6PaIiPAo6q56wjfSS62ycj7z1UlSS
    SDEusPgFG3LfYBuM2wjRYYXZ2plAcxhGt2oM5Mf4Tjom1Y1GHp4m9VOIa+0D0HZI
    +oNYlOteR6I2tWg90bXJcAd6VlSwYi25b/KRkzYyHlU84o11UJnBnG8HgaN6E92w
    QAQTtIUd6PxLWYBG0ni4vtD2ZwyGKAH26QJIUC4bLYdfoZ7V7/MbwI4JEliGjZCl
    INqt4mrYsohJBBgRAgAJBQJFI3FNAhsMAAoJENKlP4I1Duz6TJkAoNRkeWHFV+q1
    WHzk4XJLFtL8cNyBAJ4u3Mfd7xo3Bx8pAs1vSTWooWb7Pg==
    =IROz
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.111. Jordan K. Hubbard `<jkh@FreeBSD.org>`

    pub  1024R/8E542D5D 1996-04-04 Jordan K. Hubbard <jkh@FreeBSD.org>
         Key fingerprint = 3C F2 27 7E 4A 6C 09 0A  4B C9 47 CD 4F 4D 0B 20

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.0.6 (FreeBSD)
    Comment: For info see http://www.gnupg.org

    mQCNAzFjX0IAAAEEAML+nm9/kDNPp43ZUZGjYkm2QLtoC1Wxr8JulZXqk7qmhYcQ
    jvX+fyoriJ6/7ZlnLe2oG5j9tZOnRLPvMaz0g9CpW6Dz3nkXrNPkmOFV9B8D94Mk
    tyFeRJFqnkCuqBj6D+H8FtBwEeeTecSh2tJ0bZZTXnAMhxeOdvUVW/uOVC1dAAUR
    tCNKb3JkYW4gSy4gSHViYmFyZCA8amtoQEZyZWVCU0Qub3JnPog/AwUQND7kZgis
    sbaj1yqUEQIhvACeJ58983s/0jjThuj6WeTP6hLZNHgAn0o2KINvhw+Oc8uQk5m2
    aTiVgVQxiQEVAwUQNcJNdAyPjrKngh89AQHA7wgAg3QnT0BcF/zp0VRMUZwAysRC
    o4Xkgv4oaisCPO5jERGEp8NlXuMD6wJCrGRZ9xVwTbSRXJVirNkiSKj1rnNc/pPA
    DbjsmQ+3nhLU+YwNgc2VEhiVpeU2iOL7ircc/YN8epdFPbzn2timb98b+/qlaSiz
    m+g8pxnY4USn1b4CnzyirD7mvHhV61k0mrUSmaKzgg2Ppeo2qPzn4w44hgT5/jjm
    iEMzoH8zFrN3pwcUYYhH5rNWNnqUIMwuPOEHn4Wp+sMti4yOqQxNHnP0Mv6mxS8+
    UKRhtDXU0Ra0SaIhaNRw0k0YLEbO/lteTRc+7cAPBs+QUTa6xbVxIzsBAWLC7IkA
    lQMFEDF8ldoff6kIA1j8vQEBDH4D/0Zm0oNlpXrAE1EOFrmp43HURHbij8n0Gra1
    w9sbfo4PV+/HU8ojTdWLy6r0+prH7NODCkgtIQNpqLuqM8PF2pPtUJj9HwTmSqfa
    T/LMztfPA6PQcsyT7xxdXl0+4xTDl1avGSJfYsI8XCAy85cTs+PQwuyzugE/iykJ
    O1Bnj/paiD8DBRA0FhC0XatM0mFMec0RAgaSAJ4kHkYXQO/74W5m/7ZvQa3CPR8E
    /QCgpHafK/S6PWQsSOChmVjwrZDVP8qJAJUDBRAxe+Q9a1pnjYGyp3kBAV7XA/oC
    SL/Cc2USpQ2ckwkGpyvIkYBPszIcabSNJAzm2hsU9Qa6WOPxD8olDddBuJNiW/gz
    nPC4NsQ0N8Zr4IqRX/TTDVf04WhLmd8AN9SOrVv2q0BKgU6fLuk979tJutrewH6P
    R2qBOjAaR0FJNk4pcYAHeT+e7KaKy96YFvWKIyDvc4hGBBARAgAGBQI1f/BdAAoJ
    ELwCvAMsr1lwqUEAnjOz1VWwJeI2QZMNEHO8RLURWHSYAKDqG+S3NzCeiKM3RRzc
    FubwdsfYLIhGBBARAgAGBQI5ZAxAAAoJEMN1Z4b84RmYUt4AoOtidEj2yIZubvvT
    kB+moQ1+ZscyAJ9dhz4GLNev7zNNfdAKi8JqoqfMlokAlQMFEDF75Qb1FVv7jlQt
    XQEBdn0D/0X2Auka6RU2R46NqrFB0kZNL5rGH8BuTRz+cqEATLGkCXknJDeJ9iTo
    EeE++VOL0utmhcYDyyT95Th5FNlXO8YQLgb7Gxq+UT/HOS7zznlBMs+mQK6dSlB6
    7XDNoitRQTpmOHTmKYVsljJA4GBMWm6pawKuxSmX7aavwgYjEbmsiEYEEBECAAYF
    AjmtSQAACgkQLKRaTx+AVKjiTQCg9FfHlNeMts2GcXWplPQya7GEQtMAn0nrzupn
    fRNx6+Gi0Km+WSlUQkMF
    =ZyVN
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.112. Konrad Jankowski `<versus@FreeBSD.org>`

    pub   1024D/A01C218A 2008-10-28
          Key fingerprint = A805 21DC 859F E941 D2EA  9986 2264 8E5D A01C 218A
    uid                  Konrad Jankowski <versus@freebsd.org>
    sub   2048g/56AE1959 2008-10-28

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEkHYgARBACdbmFESh/3csPP37dJBDTkAfWcUck6myVTVYu3dFgwDPA0iCs9
    HolmEV9qZA6m/ljZYG6b9ycHe2M7Xq3Mopdvw7Sa3ab7b2PRLu1WbKUIS/HlOXNH
    p3Dg3/Zhf1raBKMg4F0x0pbQm9+friN44SlnLlQK5M2224X786/VTlVv/wCg3YFE
    CufrZUsIPZndUVGh+/seBbMD/2fhNQhreWxF9QFCMohC/pGSfg1sddpWMqh6R0bF
    aSXfJwYivDLcTp4JYPpZilScBFgSxsfLKboRBElj+k7cj2e8nK4xzfoX+xsGrRDm
    t8uPqISnw8bvRGS3bZNuTt3NqHpXeiL1aEEEEMk7tKuGwlwf/KmA4BYq+eWDM7Hz
    EWPLA/kBJn5jAO99l/h1yGzYiWwy4a5iQd2sZg+M60bC3s9xP8ZvCPhm4qGuis9/
    dxzKxz7hPQ2CamU9DlpnoCeZQ8mttyqnipsnMVniI3A79xSjCP2dNkVWvimc5uWw
    e9ME6DAa2ldmN7fkj/b6ahvCiBZLVc2jv/fcmHcP8IzvhHLhT7QlS29ucmFkIEph
    bmtvd3NraSA8dmVyc3VzQGZyZWVic2Qub3JnPohgBBMRAgAgBQJJB2IAAhsDBgsJ
    CAcDAgQVAggDBBYCAwECHgECF4AACgkQImSOXaAcIYr8cwCgzjJgksYSmXwES8lI
    vri3HicZZUIAoKfdyp1VxyUvbm39iwIMsUBpMCTduQINBEkHYgAQCACT3lbgvRwF
    lzEkL7JnyMaHkw5Lh77Sl2cRu1+fouQeGxRw5CZFwcIUkZWJDgBLxFHJiAtjw5xz
    UnVDm1RWBLXdNn4/KvWOUx2ElPweL58q+j/45qfwISg7JyJckRAvACQ2bLT+2jlc
    iDInZiV9OAnwT3OhBb0a6dvMsbDcIk25QlcS/axVdCYp/ELN4jlgL3Vk0NoQfalo
    rtj/vALu5soRJgq5keyroDlCc2fDp3iISCBngx1xoFBaYaJHo7XSbXnCes3NhAEd
    DkY0QCBWQGyqW/ULGrIdgyGtszpxSlecPmaRlxpmTjAQT0mX+rGE8vBkgH/pDgqt
    icql1p3f9ofnAAMFB/9NCp6oARpDfPTG6upM+oUPwginu23w2ux7uecZuouL640w
    Yj4vssTGDhuP3QRQsDrlhXdHdkUvSuguXpG8EGf4GjflV/AvvXJDmOO3LB4TCQmw
    I+Umsc/4BCP6r/YowSyYmQENJ8VIf+Ps+WfoeGS6UzbEpZbAFfBMpNSQbzwDSa+6
    kh+eAHOZiPUjtoao+eyrvqEK+rpydN3G2D3UOJVsbYbG/3R0zD1sBnNBaqAub4zr
    vMBB0Fuml/pBzhFl+2VrS420Bfy6d83uPriNmlXlTyrX/kSxYVMkVm+lfqrjhSO9
    dj2t5lqpUSCRLO3Wbs/97zIi6Vn2fphH5iA1qI/fiEkEGBECAAkFAkkHYgACGwwA
    CgkQImSOXaAcIYoobwCeK8Jy/4hOkaFBHbi/WJ/SHaJGyNkAn35fpqrdHuOO2L6C
    Tuizqar0AwZZ
    =xCbj
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.113. Weongyo Jeong `<weongyo@FreeBSD.org>`

    pub   1024D/22354D7A 2007-12-28
          Key fingerprint = 138E 7115 A86F AA40 B509  5883 B387 DCE9 2235 4D7A
    uid                  Weongyo Jeong <weongyo.jeong@gmail.com>
    uid                  Weongyo Jeong <weongyo@freebsd.org>
    sub   2048g/9AE6DAEE 2007-12-28

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEd0e+0RBACwYdXNeIplh+WEQ9ywP1wJyTpGe2rVvkOLlJNpTJpVX7JT508G
    KuYI2B+Rn/V+1+AicL9tsUAnWX/tDma3bYw0Ls68LvD/571k2GYG3CMTy5FSrrtp
    3v3N75jHDsfulUzHL3LHsa/CA5qzuL819KIaUfTKY0A107vcI3m0v4emEwCg2BaW
    OyiO9pic/WnPi4tuFjLpeEcEAIzLSKzAiZZ7U8ESKAtonwYqdu0BIRFpp0kedXqD
    M9cTts8VjqjdMOm55xvI7h9EGjH+crFZBlZD0NWXD00NrrQdHifulSrv5l3Wtgn8
    xilqUhiYUcPQu2DHSuVlShvNZO6/rYA8R45axAfQv8rFo8NV0oElH+bvGq1mwRKY
    ciJ0A/9lN68t6G3LKmaSfWz13IUJT0E2qy27NnSb4RuKE2TuqyIMFzXh5+jjnp3U
    zRDX6KrYLju5Ire9GGJEMsGs28B5r3HXUPADqVIS8i6dW/npZlyizU7MfoRDFiRe
    btMpnYx7d4qnpKMpEm1J15JF84YrNGvkE55z7+g5zG0ua9KZgLQjV2Vvbmd5byBK
    ZW9uZyA8d2Vvbmd5b0BmcmVlYnNkLm9yZz6IYAQTEQIAIAUCR3R77QIbAwYLCQgH
    AwIEFQIIAwQWAgMBAh4BAheAAAoJELOH3OkiNU16VAEAoKnaR60kp0PF+O70GH7y
    v4k26FJqAKCycX2eM5PzjVzbAKHq0yMRj7tkbbQnV2Vvbmd5byBKZW9uZyA8d2Vv
    bmd5by5qZW9uZ0BnbWFpbC5jb20+iGAEExECACAFAkd0fKQCGwMGCwkIBwMCBBUC
    CAMEFgIDAQIeAQIXgAAKCRCzh9zpIjVNenkDAKCGZSCJTG2dSCbEH3kLTpYdAnfM
    gwCfay7fmNNMrN31IhC2jddWylvSDlW5Ag0ER3R8ARAIALZoci+sXDkhF0ahtePy
    ZszOeKUg8MHIac5RID5CfjGsTsbfAv7eM7TBocAJOKBxhD/suqsdomMBMwoMKYdv
    R4tKCosDopYGwNFNtryXrOQctNKxIf31kc8UnqGfgRAwjABorBRJCQdBZEBm+93k
    lDl0azEWPFuwzZ+dA12dw0jF1/n7TAIkvaA7joFfNvZ8a2WAfJvoal0/nUqmJCmB
    ntaWEdZP5rOEUvVBn117W8D5B8YHp//TM7T3eT4M4Lp7wUQIiwT7fGgRWCIfIrGd
    GZSEykjB/keyIip2Hh//0Ft0Ot8D+4wYz9YhH/RRmfBDMBhW898B1rEewhc0wmjH
    txMAAwUH/iB1/HLYV9ckHT6i/UDl8lEsw5CMxftnEI6wY2i9MWqTSTiuoNE+PQAA
    kicGwxrxxtvLccdFE4WOOQsh9oyzbOeWWBrtxzloRBzaxC9dx+tQaOzzJAUjaEaV
    wneSg2x62naLiztaQ9U66g81BwSyT8NF7uYjsCyvPsrHwDELNcPdDXQ2q0GKj0I5
    tSgqMOPwohYRRS3hYfoPnYZOshdwYErtMCola0hZn7LXJopRByQyT/x2N6WW0zGY
    YxJemF80JqLrf9RtZVSsTeqT7Sd0+kcgPq3wcoqDXKTEQ+K4yjcE7c3hqhowQU72
    2S6S4JjYQhKvdJykZRuvynQGeuT8H8KISQQYEQIACQUCR3R8AQIbDAAKCRCzh9zp
    IjVNepJjAKCIgdGxVdwuToMZ7z1n2mJEulHr8wCfdimx3iKjNLlAE154wBx3v9Rr
    trI=
    =5yOU
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.114. Tatuya JINMEI `<jinmei@FreeBSD.org>`

    pub   1024D/ABA82228 2002-08-15
          Key fingerprint = BB70 3050 EE39 BE00 48BB  A5F3 5892 F203 ABA8 2228
    uid                  JINMEI Tatuya <jinmei@FreeBSD.org>
    uid                  JINMEI Tatuya <jinmei@jinmei.org>
    uid                  JINMEI Tatuya (the KAME project) <jinmei@isl.rdc.toshiba.co.jp>
    sub   1024g/8B43CF66 2002-08-15

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBD1b+Q4RBACetpZD+bWytVmQ3Itmu0ZBfSDF6FVyUQuKS3OZmvsZHxxqq1+u
    erHNhmyte/aCI/YrEUzHPT5LU+9LMpRQD0AwSs3Ot2vUzokSiTu8ZqhoWBcsosKK
    eKM73V7NiTgBGuJ3UxVmKNXzUZhRjGHuekB/ZCCv1pDg9B3HPL8ty+2M6wCgu02T
    +vMZW0VeByn79Lpmm2nu/F0D/3NN4e8ZtLTbUJxJb/hHhLzOr8XahZCqsNF2bj0C
    0u2SzkelDa5iVDWwiOkg7xI154REAALOG1FnLyO4bRPkcQ/EO5tbzXoVn0I6MPWA
    EiwBfVRXzP10MDHhqH0NvT8pyA4ex/BflaeFem9HItRjfojdqEUYVAACceAdLQLG
    MknWA/4hfAAp+dPcU8iHmd7AemuGoOhu5AAKbp2S4vwozJEFiv67wD/+WFXVggUx
    wbQ3X7oNiOLeg9OASDV5qtbGPATHikYagWVjndqmvxO1FiL6BnQBnzAVzOEN3L2K
    Ex566bUw/2R/dr/zhOc3BKxCV50T2Xe4u/cEiYkUbLj6+Y8V2bQhSklOTUVJIFRh
    dHV5YSA8amlubWVpQGppbm1laS5vcmc+iGAEExECACAFAkYDPqYCGyMGCwkIBwMC
    BBUCCAMEFgIDAQIeAQIXgAAKCRBYkvIDq6giKEOZAJ0Z/iUCa6UrrsVmKiP4a9qB
    0jFUCgCgn/3mQxdtXTA6SOlFFsisaxsIXIW0P0pJTk1FSSBUYXR1eWEgKHRoZSBL
    QU1FIHByb2plY3QpIDxqaW5tZWlAaXNsLnJkYy50b3NoaWJhLmNvLmpwPohZBBMR
    AgAZBQI9W/kOBAsHAwIDFQIDAxYCAQIeAQIXgAAKCRBYkvIDq6giKBtcAJ9DRqXt
    h8WEpjgr+sD9OuaYqmV8nACfSdo2Ml+Qfz2Rad9OtZodmELCCi20IkpJTk1FSSBU
    YXR1eWEgPGppbm1laUBGcmVlQlNELm9yZz6IYAQTEQIAIAUCRhkdkgIbIwYLCQgH
    AwIEFQIIAwQWAgMBAh4BAheAAAoJEFiS8gOrqCIo11cAoIJT7N2GMSNXAujnuIvc
    HnBtgk5zAJ4qDo/En3ic8E7h7zc4lT/WQQDhRrkBDQQ9W/kQEAQA1Q07/j0kScL1
    WF9EeXVEyLpTxHZ7owTI+KrRcQ6Vc6KABu1cwhE78ANVfn/CkWVXHyDEnWEIvaz2
    QYwz47sqOxdOg/AmHFVd8xouengw32KNjViVBMsW/l8VzyAVvvGGNuQ+f7zDZ/P9
    v9WwwRcrgL9g+uAnrJJo/wttIBqhSk8AAwUEAIqcIez2zlkwGayFeLqgwuw4PCbd
    kGtXs0l2mQljv8GWuTRJ5D8aD0nlM9MNaSLB7xq6igMriP/NyfIVv0aLJwRH8ilx
    RBYosGvm+nEmUtakhU/77uXcLtipoUGi+y1reFRVSoypJil6lqDTjKtWQlWA7xOG
    QzGMdgoBC1d55jXXiEYEGBECAAYFAj1b+RAACgkQWJLyA6uoIigNBwCgsUFgZMfR
    sEybYW4cWwBNhNTqE9wAnRf9BFkzpn3ZyD+NBkjx2INcitoD
    =ISn8
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.115. Michael Johnson `<ahze@FreeBSD.org>`

    pub  1024D/3C046FD6 2004-10-29 Michael Johnson (FreeBSD key) <ahze@FreeBSD.org>
         Key fingerprint = 363C 6ABA ED24 C23B 5F0C  3AB4 9F8B AA7D 3C04 6FD6
    uid                            Michael Johnson (pgp key) <ahze@ahze.net>
    sub  2048g/FA334AE3 2004-10-29

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEGCy1ARBAD/K2SbL6XiTJ3Rn/weuN/L78ROUltIoRGOkZE4971fLcAbtIsf
    nANWDrpDqbhLgEbZLeCn/EIWOPqrYyKpCGu/IoZ6kx7UPtUH4eooJBarrrQPJVV1
    mfW5ktDry3AoiaUH+jL47AxFCb/bh7Rc11vrhLKdnc74wI+nu2cyk2llkwCgwX78
    nlN2qTrbXxOEAPpJjMontfsEAL+4sS9DOay7NkZq2B2p9AZnSsXQg6/r8Epqznqj
    yPQBm489UcIZy2FiBwaUR7w0fMh5xNX0FE3xFiTd4VUTgUJUSqpYtdfI7IHvJXml
    P/VK14CtgRY2B24wpDPMae32hGBFUwSE9Frb5NiKlxMC4+fR71wZS7MtxTnwJ1v/
    MoVaA/9FyoKCAw3Dqnf5W89dj5W5x35jLKSLobEhhUB2S2LPiwBa5A79euMvgtk0
    gKeh6IslXKOmCO148ws7HSaErBIBVBDpfOsqcQJTcd5lvEbslp+z2oCKeQK3pgQ5
    aEHp8IJ3YgQEHz+YityOF0jCMGNJTFAz18U4RzVxSe55iyT/17QpTWljaGFlbCBK
    b2huc29uIChwZ3Aga2V5KSA8YWh6ZUBhaHplLm5ldD6IWwQTEQIAGwUCQYLLUAYL
    CQgHAwIDFQIDAxYCAQIeAQIXgAAKCRCfi6p9PARv1oW2AKC0xjNgjhL1EHPtFOXH
    kGz24lF4QQCfQxkoJBq0CkLQrYvdA3MLP+IJ6ba0ME1pY2hhZWwgSm9obnNvbiAo
    RnJlZUJTRCBrZXkpIDxhaHplQEZyZWVCU0Qub3JnPoheBBMRAgAeBQJBgtexAhsD
    BgsJCAcDAgMVAgMDFgIBAh4BAheAAAoJEJ+Lqn08BG/W4JwAoJaU6MbisTlg4EMF
    jfE+wNptwO4kAJ46A0W6SiLWbK09gu7YlgfLgdYAmbkCDQRBgstcEAgAvD4PzCsh
    muLtNkPVKSlk2eZbqlIuyapbuIo6rHk8fo7fkfqVOOrnGOrAT5/sflmnG3H0BLvF
    4pkk7tyRtg3hz8qGACCA4SRf48TxRERpIUoW5R2cVBsMBTnpspRaFu8OdBL0dwXs
    LmH797gxDXCGXzSU5xKBSQN4LfoEuLr1qQmPbuPW+Rdi3hrdk1eGsJ03rU5RExzQ
    ck+J7a5VWsyghNCSj1Rzuw+0OVGBijJW51FD9QU+Eqb3seL7E19mWC3FMU34RFwn
    5lbxolY43iPV0jc0MFcV4POHUSZ8ot9xbQpcAClTyXZh21QEIFzYjJe9ZeVWKOqH
    UZS1naB4k98G6wADBggAnRlPolzcjJvqvv5Hfv7oDeDARNxqeKTj+fPXIHR0Gh34
    8HMfmxsFzS6nsrrVc43Q6Iaso5hbdP4UvE0/HzhPALzCTeZGpZF54pffg9Pqb84U
    p+D59I+b88RDBvvfwF0OBg6du08Rdkv9JfG3R+QZembK+IhUa5yxhtfbQmI6Y01r
    phtx4FAKZw4Xp2eb7IBoZWktfcOE99UJcl9hUmBHJXRznQoCHz5OwAKA6a/0b7j7
    B3bPxj+tLlQksdmRbEJKVBa3LQm09PkxfZj8iahvQbp23p5VSJDKzNDrgmsqaCpV
    CFNgMvYLvtxC2xA0uNtaRpdZRLS/11NUj3oJIULv8IhGBBgRAgAGBQJBgstcAAoJ
    EJ+Lqn08BG/WFK0AnjdWWBxG7slwI8u1W+7uRsuh6NXMAJ9r+6Br6mlEtsoWrMel
    IlhG1mVq6A==
    =I7wA
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.116. Trevor Johnson `<trevor@FreeBSD.org>`

    pub  1024D/3A3EA137 2000-04-20 Trevor Johnson <trevor@jpj.net>
         Key fingerprint = 7ED1 5A92 76C1 FFCB E5E3  A998 F037 5A0B 3A3E A137
    sub  1024g/46C24F1E 2000-04-20

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.0.6 (FreeBSD)
    Comment: For info see http://www.gnupg.org

    mQGiBDj+agARBAC1AfvgGQEVdLwS0dirwaN+pDDWWiaSWBNRNo4T4KKG2vyhhnUi
    f2PcjPx8rYLvbokJFltoTWos3lS8hD8PZGBDlImOPzffdm/GYEmr1mE8fQvzjdKD
    iOTqQi5IYYhLZIMmUpBTK7XN2zrM8VrkgCpb5TYtBrQUPheWs/SZ31EvLwCglUPA
    T54Joolfvk0Y8I6dSGYctpUD/3teZiYwem99CE3b1tsqavQ1MUfjwSPZQq8wjVe8
    GZUtwaeExugAxNjXIJeXiaCij7S6JSTS0ytyxZ5/O1QFmBhuD/7zjNFD8yB8nu8x
    slma7mVhMuhqkwU06hTkp6MNNJ7kRItoVETtLqR5mW+0UUSZyePQFIH9U7TKPG3W
    vYMIA/9btsMQD/7QA9p/m5OP4sfdVdNCZ32tJ534bMjDYyf/P8k7QzvDWU8f7lbk
    3vX5pSmHplws0PwSZITmRarMdEH9ucP+24m06MQ7YmDYyLlUCestT2gAxnB5/X1h
    fJnmdCLi/Vt19WrVM79ebddbCqCaoz0xv+1qOQmPue/vKXIH87QfVHJldm9yIEpv
    aG5zb24gPHRyZXZvckBqcGoubmV0PohWBBMRAgAWBQI4/moABAsKBAMDFQMCAxYC
    AQIXgAAKCRDwN1oLOj6hN4YuAJwOTOURcLpgAx4HT43jNxDYCsT7DACdFdGCwsi4
    w5ZiCeoizmoBMFvYTa65AQ0EOP5qIhAEAMAerdyvcs7DOxpsli24gkKJxCwHSq9U
    23k283XpZHOp/0eS6WEJMHMyQ7BRrx3X6mkSgBEnHdO6MetBQjOHdjSb8ycotrJa
    H9eMkZ/Iky6dbiWpPLI4ytS4Q8Z4oEGjUTm7pJiE/pgmaCX/kv0WMs/35En+42sY
    VoVU9bDI+X+3AAMFA/435RbM6ywO/kL8D3lhwINGEIqmxWpJDlXPPJf2pLiWZZVK
    MLGkHOTe2kUdd+E6WcoRZdGblOKxLACrlKpJa91aw1ftQT6rt0k8GDCGLT/33FWx
    2IRSf5sHmz8IOm6L8TcZU31hdWqpDLmiIj+IjUCx8+eAUjZcVRoj6BYnWc1Z64hG
    BBgRAgAGBQI4/moiAAoJEPA3Wgs6PqE3PKYAnikfYo//UA7/jrDuTXzqPmi/Un5f
    AKCFsfcXDbLGfWaAqe2YzeDR2Z55/A==
    =N4HT
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.117. Poul-Henning Kamp `<phk@FreeBSD.org>`

    pub  1024R/0358FCBD 1995-08-01 Poul-Henning Kamp <phk@FreeBSD.org>
         Key fingerprint = A3 F3 88 28 2F 9B 99 A2  49 F4 E2 FA 5A 78 8B 3E

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.0.6 (FreeBSD)
    Comment: For info see http://www.gnupg.org

    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
    =GwRf
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.118. Coleman Kane `<cokane@FreeBSD.org>`

    pub   1024D/C5DAB797 2007-07-22
          Key fingerprint = FC09 F326 4318 E714 DE45  6CB0 70C4 B141 C5DA B797
    uid                  Coleman Kane (Personal PGP Key) <cokane@cokane.org>
    uid                  Coleman Kane (Personal PGP Key) <cokane@FreeBSD.org>
    sub   2048g/5C680129 2007-07-22

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEaj6Z4RBADnHGSN+HpgYx4kwj2c//kuW91OOYhYlstDCeVTlNc/7YpbgF3T
    KQKBWHu7uqygI7IeboCuCltP7D+PcXTVdBlh6X4aiwV0XSBCAF4ZngCb56OsSBYd
    MPjygHV3TH2TKe4PGqH+MZ3umogB3TZVMLpz4S0WyxXjUxLm5tYn7rOCCwCghTRd
    00JiGg0u59cT1/GiD2KYE40D/03DKCm4IvMRFsxc3IGhXQc3rQJVhBBAxnnzBA+s
    R3i0xKzGqBslEUG+AxUMFjohjQgTWjFRa1PTFgHih95Z1lR0/oO5teyDfxjeAPA5
    2hUoB3PF5NUFeMWXPCoSyb48uswJ5CCeX/IA5lVO891+jQh1LHIFQDa/rB6zeYzQ
    HaSXBAC3RheXdRaEFGt2JkNqAZxEQVtiWe5tebdm2oh1RaIfMQ+U1p4X9EBQQjGq
    6JeeUsO56HXECEgCyk46fgo2xNwIXqYi42sQlIGn8JDBwOLyjD4iJpz2uxC2NO9J
    GKUOMdsdydUpfdkF7tWu1rGXXmzGcUUkHXgKsF3jf739FyGAubQzQ29sZW1hbiBL
    YW5lIChQZXJzb25hbCBQR1AgS2V5KSA8Y29rYW5lQGNva2FuZS5vcmc+iGMEExEC
    ACMCGyMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAUCRqPskwIZAQAKCRBwxLFBxdq3
    l7aXAJ9829PUx9ST75k3L6/nfkejftuUFwCeN5vqGr5uZlkCQr+Bx45HbcyFQp+0
    NENvbGVtYW4gS2FuZSAoUGVyc29uYWwgUEdQIEtleSkgPGNva2FuZUBGcmVlQlNE
    Lm9yZz6IYAQTEQIAIAUCRqPstQIbIwYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJ
    EHDEsUHF2reXPTgAn2uPDHMfAoaLp+Eg2FfIuMlVNgfEAJ9xBcFz8kLTrAbKnthL
    S0yBqAUrv7kCDQRGo+meEAgA22OriKy6l+mvGIqbwk67Yz2zcVtHx8Jq8uuyt4Ue
    JfuK9H8rDOz783oF3++ywf07xqtl70rH+KHSNfVyXUetVXfBUZfo5bTwxokQWE54
    eJukJyZeDYXpaJ8ro083lkHsqE9vtTSwJfU4rqRpu67nC80WSkke0t/35sHKqwJI
    WXlHniGD3dJt+ZTy6hxzcx3WjlNDNUEq6iSl28XNzWdvpKIrah/ksO5O2akmaZcB
    SXtHthWdX58hOCHBhS1QQSKvThL3VlFtsi7EhW4/rNekDomypLxHGErprjMGV3GF
    509kI2vn7NoA1G4sxrESZK9sNIC+KmdWO0MQ4NYhB0NAnwADBQf/XFiDa83fYJUN
    LBqGGgeOPE+pyBS6gVrw6Kz62nFFgfW9hHtYgItzS4XrDHCc8TCSG4zOBqBY4Qvh
    HgJ1Fa8rppbMUMI32egtfY0/cu8NVWtHlYp9aQp5tM/0zPu5RaRpQxafs9e5j4gf
    fd6mY3ro3vJjZ6UczORKFBHxLDg/F6UCeOZsv8Ii72YDqzZEFdBUMJH7ArHFKndd
    ZxkN7+iGXZorHnTJj8mXSDYmvyaI+Gfn/dea9RDp9h75257cHhnbaDd4ZvlUK7JQ
    8HFb6jM0LsadfDuSSMLUYFozqeG1MVCJgn/Rv0i4FMlI0QK/6r7njvvfR6p4mLl5
    n9r0NOG11YhJBBgRAgAJBQJGo+meAhsMAAoJEHDEsUHF2reXJO0AnitUss1PV58K
    ++igcU+jU/EAsjbNAJkBlxLkkDzmxfWATLWri1+qzA5WDA==
    =L430
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.119. Josef Karthauser `<joe@FreeBSD.org>`

    pub  1024D/E6B15016 2000-10-19 Josef Karthauser <joe@FreeBSD.org>
         Key fingerprint = 7266 8EAF 82C2 D439 5642  AC26 5D52 1C8C E6B1 5016
    uid                            Josef Karthauser <joe@tao.org.uk>
    uid                            Josef Karthauser <joe@uk.FreeBSD.org>
    uid                            [revoked] Josef Karthauser <josef@bsdi.com>
    uid                            [revoked] Josef Karthauser <joe@pavilion.net>
    sub  2048g/1178B692 2000-10-19

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.0.6 (FreeBSD)
    Comment: For info see http://www.gnupg.org

    [encoded data, 6435 characters]
    p5J1gj4xWykgTuA=
    =U6zf
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.120. Vinod Kashyap `<vkashyap@FreeBSD.org>`

    pub  1024R/04FCCDD3 2004-02-19 Vinod Kashyap (gnupg key) <vkashyap@freebsd.org>
         Key fingerprint = 9B83 0B55 604F E491 B7D2  759D DF92 DAA0 04FC CDD3

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mIsEQDQwdAEEANxnThVC8GNO9VXTjWFhJh7XgMLHf9jDd0B1804WUqc3c76r8y/k
    AXZ8e3kNH1rpa+VJ0rYQnurQg5BeFQny8TzU6PC9QSdqNKSCvhai6B+w3t15sKJK
    nGZ7DwyoyuShMFNMVF250KS7dEZnYy8yrtopCIWJAWzuzuQQtmUYk4B5AAYptDBW
    aW5vZCBLYXNoeWFwIChnbnVwZyBrZXkpIDx2a2FzaHlhcEBmcmVlYnNkLm9yZz6I
    tAQTAQIAHgUCQDQwdAIbAwYLCQgHAwIDFQIDAxYCAQIeAQIXgAAKCRDfktqgBPzN
    031cA/9ZuwCRbYhTHWzOhQuT8dm7Bby0wEq+KzkULXd/ExgxCu/54t9M7csD378X
    /Fg2erLP2J8cYIcVXmdtIJO8AwZRw5GgmVP+h1sEY+KT8jiJNlX2hB/9qCmng3FY
    ItLBY2t7XVmTPMw8BLANE7PJ1LKT/OoUHEk0OjK53KKGNU2oUA==
    =VzLE
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.121. Kris Kennaway `<kris@FreeBSD.org>`

    pub  1024D/68E840A5 2000-01-14 Kris Kennaway <kris@citusc.usc.edu>
         Key fingerprint = E65D 0E7D 7E16 B212 1BD6  39EE 5ABC B405 68E8 40A5
    uid                            Kris Kennaway <kris@FreeBSD.org>
    uid                            Kris Kennaway <kris@obsecurity.org>
    sub  2048g/03A41C45 2000-01-14 [expires: 2006-01-14]

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.0.6 (FreeBSD)
    Comment: For info see http://www.gnupg.org

    [encoded data, 4290 characters]
    iPF6/kmr9BBQtr2aUQCfb2ycB69cTi+09jXD31k8PffbIis=
    =nTL1
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.122. Max Khon `<fjoe@FreeBSD.org>`

    pub  1024D/414420F4 2003-04-29 Max Khon <fjoe@freebsd.org>
         Key fingerprint = CE1F 29CA A6BF 2F26 13E8  1B61 62AE 6B8F 4144 20F4
    uid                            Max Khon <fjoe@iclub.nsu.ru>
    sub  1024g/6585039B 2003-04-29

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBD6urdgRBADQpkTC4vQZ0QvJaenfB5vMGNzpxq3shsQD5C/ExNtZ2PTrPe8A
    GAcsNUmZD2O2d0r7VSDmPWQ2zDB8bE+gak1pEmooOZ+lb9t+1UwtkzDWK5MEgbRj
    8dlNEagiWZ70jwbm+q8P09LMmjB2ez3OFpDzROjvA0/rU7FMWlo893aqxwCg+0P1
    d6tf6xfiE0Dgz0h7aoOBNhUEAIds+i+l14zzp5Dg8nVcrp8GhsDhGUERkpmnu4Ks
    iXRAbgnhv7XD1qD4EKagITMXmHQ1A6IXVqGjKuEPW3otOEhOMkfOrvI9TCcp4s7s
    6d4eHt0wgjptmWF4pV8KCjj6hAkakFuli/ZjVMNiGAb3cXVocw/Q847Df6jNI5vp
    OfPtA/9kGOoNIssPPa1Ni0k5MPAXB6jm658pmQShlHv1GCG+tbbzqawvimwcal31
    m20DwVc/ocRQFf0/2Rqx0h9GfU/QtB+uq2qk6HTEvDfzGv7SRpPwx43fscF3Sn8N
    K9VXs4Xtbrs5OYGJAMFOWg5SHd9jddTnViNtJQPGD6Bd12BB1bQcTWF4IEtob24g
    PGZqb2VAaWNsdWIubnN1LnJ1PohXBBMRAgAXBQI+rq3YBQsHCgMEAxUDAgMWAgEC
    F4AACgkQYq5rj0FEIPTqigCg2Qe8X9Qw88N7mk9llaZqs+3A+FkAn0Hy5JfEudVm
    /3rXsNKkDf95Z9cmtBtNYXggS2hvbiA8ZmpvZUBmcmVlYnNkLm9yZz6IVwQTEQIA
    FwUCPq6uzAULBwoDBAMVAwIDFgIBAheAAAoJEGKua49BRCD02zMAmgLFdtcfQwJ3
    ctRFpJf8dHyClNQZAKDzqyItbtqEsWQGgN3QsG9+dpsbmrkBDQQ+rq4AEAQAyLyK
    nyVL7VVb7oJh3n8H6CMXcBy/5OV4bATxxCJLQIP/eJkOWv8H+feYnv8Z1LpMI6CT
    qhtVpobIpejR1CA/jo0NStQ5phhejvg08K+wgLMPFEOCCI/RUdHjNGHW4CXmhy6G
    Pm1PPwBiIJGG2AvZie+7NdYjnyd7Q77lE/bFQV8ABRcD/2B36PEMQJu2HpivP/hU
    15sVnYim3phBpGeYTV4e8PLhx1TFDgxnplBkCrEB24hqIFge5zjDVvJyE6t4Zlkz
    IilsEanYbzBUkO/3qYCnwrUefxLxmzMx3tkNVK9W7Z22j3H6Dtvcxb17kMuJNHoV
    KIufCJXylZFXAp7t03T3uo2miEYEGBECAAYFAj6urgAACgkQYq5rj0FEIPSc0QCg
    3Jjbq8a/pI2C+MXDMrW1sC/PhkQAn3vNQqLa/nntV0b3V4lWRI3wk3k+
    =AcmI
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.123. Manolis Kiagias `<manolis@FreeBSD.org>`

    pub   1024D/6E0FB494 2006-08-22
          Key fingerprint = F820 5AAF 7112 2CDD 23D8  3BDF 67F3 311A 6E0F B494
    uid                  Manolis Kiagias <manolis@FreeBSD.org>
    uid                  Manolis Kiagias <sonicy@otenet.gr>
    uid                  Manolis Kiagias (A.K.A. sonic, sonicy, sonic2000gr) <sonic@diktia.dyndns.org>
    sub   2048g/EB94B411 2006-08-22

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    =3/vj
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.124. Jung-uk Kim `<jkim@FreeBSD.org>`

    pub   1024D/BF6A9D53 2004-04-07
          Key fingerprint = F841 0339 93EF D27D 32AD  3261 9A56 B2D5 BF6A 9D53
    uid                  Jung-uk Kim <jkim@FreeBSD.org>
    uid                  Jung-uk Kim <jkim@niksun.com>
    sub   4096g/B01CA5A0 2004-04-07

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    E5Fbf9wkC8rs
    =HTXi
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.125. Andreas Klemm `<andreas@FreeBSD.org>`

    pub  1024D/6C6F6CBA 2001-01-06 Andreas Klemm <andreas.klemm@eu.didata.com>
         Key fingerprint = F028 D51A 0D42 DD67 4109  19A3 777A 3E94 6C6F 6CBA
    uid                            Andreas Klemm <andreas@klemm.gtn.com>
    uid                            Andreas Klemm <andreas@FreeBSD.org>
    uid                            Andreas Klemm <andreas@apsfilter.org>
    sub  2048g/FE23F866 2001-01-06

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.0.6 (FreeBSD)
    Comment: For info see http://www.gnupg.org

    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
    7A==
    =E/l3
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.126. Johann Kois `<jkois@FreeBSD.org>`

    pub  1024D/DD61C2D8 2004-06-27 Johann Kois <J.Kois@web.de>
         Key fingerprint = 8B70 03DB 3C45 E71D 0ED4  4825 FEB0 EBEF DD61 C2D8
    uid                            Johann Kois <jkois@freebsd.org>
    sub  1024g/568307CB 2004-06-27

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEDetekRBAD7mBgP351FCNnqp360OUy+ZKCr2IxUU/Tyffqyrrgiol16kTEO
    bpImo5cgZcw+y3wTSgGxwbb+UmUcJhLDO0olDNOCOYdBzzKfTyZwLzgVaC/XZ2dE
    LQa+3FnIp0btyU9vermk7GqWJqvVUTnMSjinqWS0MfgrcuEXjXTQ1b3b6wCgutKz
    BhEasg38JthFvIownezYwHcEALNJsxEnsfEMm+DQXPUvWTiScu2QR2v0BVVzfg1w
    DMaEnSjw44NF+cyyKXfqx3hYkboRw66GMvcbfl7AYh7ThfDjof5MHfBbe6aeJwd+
    pyVS9BRiXMDbwnuPm31K1zsyCr6XeQquM204Jb1fdMiFEi22A2VxQxAY4cjenvgx
    2UIFBACBHtPfsK8QyAXlNtTQqvMEQe01pXm3u90pL8DBoWsWR9vDIlnJLaMgi2jG
    xBNQp9UP9ZxS+BiAoEkUficsoPvoMkzQBSnfcDJfnyCXranBuuhsF4mzvEO8uLJw
    4NwT+7jij0udeWe3Ymd4ppWHEADhx7PLdYdq4Kczuu0XcGqHarQbSm9oYW5uIEtv
    aXMgPEouS29pc0B3ZWIuZGU+iGEEExECACECGwMGCwkIBwMCAxUCAwMWAgECHgEC
    F4AFAkGV02gCGQEACgkQ/rDr791hwtgJbwCfeBGfFaR0IIUhvfVy7GYFQUjHuYQA
    nR0Vl/9xS9SbGpk9nqDCHooXgrCPtB9Kb2hhbm4gS29pcyA8amtvaXNAZnJlZWJz
    ZC5vcmc+iF4EExECAB4FAkGTw+cCGwMGCwkIBwMCAxUCAwMWAgECHgECF4AACgkQ
    /rDr791hwtg4zgCeNkjhClKqeDjTWvoSuh805WDuXnUAoKFid8813Hg7HATB4UwD
    3KvmHBIFuQENBEDetekQBADtrxEvnshp47wNGP33Vwas4RtDVp40lC51yVFj9Ior
    zXhq9SD20gz8qPCwG3a4Srhbh3rgjPvzzqcjSE/axk5+LwJ2KHySlpfwu4wTtddf
    o6JzlJYWtQE+bcp65vnd6L5DGJsm1KmRTOZOL6wWxTXft4lgxfg1MEbzOKcL5YnU
    BwADBQP9FCPfDZYwAsZya5h3aAd9yg6dvDsObs1D1MMIiygr54/cmGUiPcI6zaga
    hTfDiDGanlBk1idFVKh0A6ZEza55NA45lJ02W9amWvrjG+PB8wTX4IWRAmDN4ql4
    QuahtHsciUVzw4BtHhPtM1+DpT+C6aPwclpmxX2Az8tHDjHKdq+ISQQYEQIACQUC
    QN616QIbDAAKCRD+sOvv3WHC2ICsAJ0fvZ0rq70bwTIWfgYq3N3fSZfR6wCfdrgZ
    /8nwcdMpTA2LAo1YbndxFW8=
    =VCND
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.127. Sergei Kolobov `<sergei@FreeBSD.org>`

    pub  1024D/3BA53401 2003-10-10 Sergei Kolobov <sergei@FreeBSD.org>
         Key fingerprint = A2F4 5F34 0586 CC9C 493A  347C 14EC 6E69 3BA5 3401
    uid                            Sergei Kolobov <sergei@kolobov.com>
    sub  2048g/F8243671 2003-10-10

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBD+GP80RBACjmIRFKqJ337zOjW51eExucWRny0pu5fuGaxuJmGSbKaJRAORU
    1jx9i/Cxcw7iwrnbR5xeyjWLDb7FIAemPltBItt0tE9H4pQXgP8d8VL3eehguMda
    o0yfP7WUm3U9uriJEJ8141Yql5IR0e8isQa+YsYbkd2RmDdCMDdC3W0Q9wCgsquv
    jc1gvAh7ypvhk8VLhflAeZcD/jQclE6S2zLZ1DSP2Q5mmuMS2ouRV6Z+fbWKF9XF
    TSxdLevWcXmPqvsXFT75cz8pcBIw4c/wVd8OsPU2fd+1LZCFdms1PqLjhUfXgVbP
    Q1Pl8zCAyriSnR2+BDwUMGzEgidkTjmjlbwhGzPsSJ8rv4i18xYs/JbmkeAV/ZBA
    e6jrA/wMU3ho5aIJ69KxZb3bmPVHYrqL8Q3n51uYausLxdHDMxVvjL06VAGWbF/h
    TdiFJ1ngMKfcfzI5/awpKwb9FPbERuNvmT10MDKumFW3xSAJMRzxh7O61u8N7dmc
    xLdirICQMRN2jPo3v8T2ANsdydVTn89nqdpg4Bo9Rsz/Fdnrm7QjU2VyZ2VpIEtv
    bG9ib3YgPHNlcmdlaUBrb2xvYm92LmNvbT6IXgQTEQIAHgUCP4Y/zQIbAwYLCQgH
    AwIDFQIDAxYCAQIeAQIXgAAKCRAU7G5pO6U0ASlRAJ4mnVHx0rA5dhw0scFGOddP
    cH/w9wCdG6HPWlDpXFB5nkpQalMnGzLAkka0I1NlcmdlaSBLb2xvYm92IDxzZXJn
    ZWlARnJlZUJTRC5vcmc+iF4EExECAB4FAj+VJGgCGwMGCwkIBwMCAxUCAwMWAgEC
    HgECF4AACgkQFOxuaTulNAHJ7wCfbcMzZiTmwuTD7wLTxvzC35OQE1YAn3et7KAt
    aLZuVXYIDROr33RIlfcUuQINBD+GQA4QCACIrLJbs3SkUJpuvYC1N/iykFYGHKPM
    L+XCCK3A4HL6f+GyCpvajz62cjUfuXv/pkLjcYANnqKKPJu6Bj2rFmOG785R/RPD
    o2dl+zlZ0fggQAv8zZqIP2KyQRSVa44Pxc/G1V5odcg/QOcKU+FZrkRXoz8SqfDU
    OEfarQP687+DU+Th0Nwn5M20+0ml7yw0/y9DtggWXzlWyIdYfhU+8HckvzgXnUFA
    tPdfDUzUxEjvVBUwZ5iHtUlId6sHiiTCS/fbnRzwJA1Pu1E52B2AfsLxFrwV5cRC
    ASfi7IGhZazGCctqZi4hbWQCB/+ipEVGct+bD9BpW9yS/JiMAxcwE0ubAAMFB/9F
    k6mZUzBbxQkSbXP4w1VSxf2m/lIV9v9M0LCMwjmcsJzsdLUG/i3Zo+hAjT+GznMU
    DVzPHq55LiNs2MKC8WKHXgXFCB2uoZvlGu88I2JjucoeibtC7zbKmVOntuY55zTk
    uiGkGRawIIKC6oqVFV0EGXxrcJ6v3/0vgBQSva08reETZaUFe3ivt0rU0NSbhVJ0
    1WiPXk9wFY0ccemUVmdcX4hhC0yyBB0px4qbEBY3+mtHpFVh/r24GXvWXkbLowGd
    nmKeigX/tlRyYgPHLM2goUHUYe0erbKp2fyeQhockLOWY0DBFcFRK2kSx9HYdtcI
    N45tvtkBza2O8C7uCtwgiEkEGBECAAkFAj+GQA4CGwwACgkQFOxuaTulNAGwbwCe
    P3RXUuqmNGYCM0IXPlop9XLZIcQAn1B9zRfHFJm7tgMI0A6Avybs7V8i
    =EDjf
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.128. Maxim Konovalov `<maxim@FreeBSD.org>`

    pub  1024D/2C172083 2002-05-21 Maxim Konovalov <maxim@FreeBSD.org>
         Key fingerprint = 6550 6C02 EFC2 50F1 B7A3  D694 ECF0 E90B 2C17 2083
    uid                            Maxim Konovalov <maxim@macomnet.ru>
    sub  1024g/F305DDCA 2002-05-21

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    =WWB9
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.129. Joseph Koshy `<jkoshy@FreeBSD.org>`

    pub  1024D/D93798B6 2001-12-21 Joseph Koshy (FreeBSD) <jkoshy@freebsd.org>
         Key fingerprint = 0DE3 62F3 EF24 939F 62AA  2E3D ABB8 6ED3 D937 98B6
    sub  1024g/43FD68E9 2001-12-21

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.0.6 (FreeBSD)
    Comment: For info see http://www.gnupg.org

    mQGiBDwi3FcRBADkiWSSJSOX38CIPgbUnnDQ8S79eZ0zQYnYn5aeRMi7w0B4SnQP
    1DcFZ/EHNtQWJTCaQBWQZZWvL1ZjdK284YrpSKs7gfoV5BufcFqKatewWZUfsUad
    FEKTXLXlZa55151UtFy9erkA22VWHmqkauDFYl4DiOtaUWCX1Gg8xCvB3wCg0sbC
    /VtANEu2XbxUp5pGmReNn50EAM4vLWfZk3T2woHN0VBOwEk0BM216zfJQGLFUFqT
    nLKezO/QqoCCcVpH7rwV0V6NI1w6YOSx14CU+s83iyyO0KlRypoptWKBoA+cjs/y
    3Iy05K147YfWUhgkKcyw/Qwx8wCDaetG+qZCX4nY0EByezFe504uDkcxk5BrqBX8
    E6kzA/9vSG+J4aejKRw9z7Ku5cLV9ygXCksu325uY2t+J6b+48cT8eFMOpgUHyNV
    m5ypOL31KYRPkOzK+iiDoTPODh4Zg8YZLsgWdTrC0ZQW2nWPNd3Zv+tLAmiwVjIV
    x4XqtFXh4nhI2eM/PXhdN37R48OKB0DmrvdH819/2+9upNvO/bQrSm9zZXBoIEtv
    c2h5IChGcmVlQlNEKSA8amtvc2h5QGZyZWVic2Qub3JnPohXBBMRAgAXBQI8IuKv
    BQsHCgMEAxUDAgMWAgECF4AACgkQq7hu09k3mLaWwQCbBEeFWt8z4HlnAys0FYB8
    /U63eqkAnjKz2Lxj14N8QYtbtFThZRB5fq5cuQENBDwi3GIQBAC79Y5tcPi18bZd
    REXZmDOnLc0gHD9y6PHgR92BUCWQuafcxfQqqY2ESF/JQ0dFfBEkCAmYU2YkPZA5
    A7skmv9zHun/bXAP02hrvMU1Gt0ZHIzDV0EaO+uxY8eSKg4JuxZzpgzWCIxI/6uh
    ZhOuEF/uql7IDKMQcOfsvVrF8cZfNwAECwP/UvxNG/RUOlOHdRo3hY3H5l7zmaCi
    AwUU6Z+LxDn+fwERX7wL5rasafi1r7/9VvGADfelpxKR0kZM1eKYPtri1zS6Zm5a
    CC+QVyyoTcb+x0mWForq6FxLDf7+l/O0TuEG7VOH4RgLaT2N33yoScEvxdB/Qo4w
    KnT39F7lYjbzBvGIRgQYEQIABgUCPCLcYgAKCRCruG7T2TeYth30AKCzp2KXBqsa
    N6wOyM+tHQ4DKNMasgCglJCipoxpnnvCsGiZJv9AgNQFDGM=
    =a9D2
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.130. Wojciech A. Koszek `<wkoszek@FreeBSD.org>`

    pub   1024D/C9F25145 2006-02-15
          Key fingerprint = 6E56 C571 9D33 D23E 9A61  8E50 623C AD62 C9F2 5145
    uid                  Wojciech A. Koszek <dunstan@FreeBSD.czest.pl>
    uid                  Wojciech A. Koszek <wkoszek@FreeBSD.org>
    sub   4096g/3BBD20A5 2006-02-15

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    =sg8v
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.131. Steven Kreuzer `<skreuzer@FreeBSD.org>`

    pub   1024D/E0D6F907 2009-03-16 [expires: 2011-03-16]
          Key fingerprint = 8D8F 14D6 ED9F 6BD0 7756  7A46 66BA B4B6 E0D6 F907
    uid                  Steven Kreuzer <skreuzer@freebsd.org>
    uid                  Steven Kreuzer <skreuzer@exit2shell.com>
    sub   4096g/76940A06 2009-03-16 [expires: 2011-03-16]

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    97ttC8vSig==
    =cR2i
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.132. Gábor Kövesdán `<gabor@FreeBSD.org>`

    pub   1024D/2373A6B1 2006-12-05
          Key fingerprint = A42A 10D6 834B BEC0 26F0  29B1 902D D04F 2373 A6B1
    uid                  Gabor Kovesdan <gabor@FreeBSD.org>
    sub   2048g/92B0A104 2006-12-05

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEV1zhcRBAC4T9pbx3J+/0qY5k3IVGMGpI31SZHwtO0ijDBA3V0mIOUpty/E
    2AnAQ/7GZEvWtMd3pE5xwoicgSQbPcnsHG9kqG43vvr2DdByY9lavqoXPOXKeQnr
    U/Z5eYvOgT5Da6USxXI5obFdNsCwwKYt7Sbvfj6L+FVWSS8HW54f9xuqLwCgwCRv
    TxVBZJ4xERWsk3nJH4B/GKkD/20ddbTHSTBuBpulmoOUNBcrnIEYPRCDvF/e07yz
    sp3KJeMegdPEwBoy6bF9R8HkVgSEx/jdMSZNeMeAOpAKDlTUyTNJRgzVwqu+SgOj
    GT8IzhLNFaZ7wiKoA0yRhGb77C3IPzjSbcOI9A3vn9DkStWfDtjTIOxh7FxF9+H5
    c5z9A/9++LOF8L9VPHUNi4h/L/jE6CWSZgeTUIMkSwALrochNi9xIr+kS5pPxUPZ
    MHVdG0+gK3wNLD6KGpBnHB65wWbb85fukY9y4YgEv0+TjpPwkbwlAbKtt7cf7RA1
    mYtYStbOedPBAE8Y89cAcmQ4a4ViJFWfSTLJorAAy73pVns7ibQiR2Fib3IgS292
    ZXNkYW4gPGdhYm9yQEZyZWVCU0Qub3JnPohgBBMRAgAgBQJFdc4XAhsDBgsJCAcD
    AgQVAggDBBYCAwECHgECF4AACgkQkC3QTyNzprFGOACfYLDfWSz4Ke3HN+suyrD4
    iwnZpycAni9084/VZ5iAadc6I1o81cGFX9GtuQINBEV1ziAQCADQBlmiWzgTaAem
    j1rFzVhEe3bSRg4qmcyiUyIbVWj8Ecc71c33fSHdgjHnAqKGjxKIkf7qoSziLWL7
    b2dxUiI/M7OUTi2Tdy3nJa/GJ+PK3CK4oM/oSMGOSUz7d3ZaKwZX4d/GmpCZ6U6w
    XFPymLOQtlDRTyz31QPCQXnI2CD2yswSdrHID/LuBDx+24vA2NyGy7WdUmSSchnE
    aw0fYTiHbjqI4xsTS6wkRJ4QRcHg8vyXc9Xd0/TKtaFBURWfHDC9RWNjisrhc6q1
    89o0QHBW+UqcYdWPUgTO38hr7k8U8LNJT0a7axsgwiwLr1oSS8z/RjdiFwuArM5M
    PQgkvMYLAAMFCACIMIO2gjtPL64mLy6If2TPBTqb+g+HaWWk4lxsUN3A7A5y9TXk
    w3Hx2jcig6P95jIKyiTJkV5ZqcUuwtEWK/nK6M4o8x7QQwLAfH6x/wfsb9Gays+K
    wT448Xhi05cOnIuKyFXXzaNRgGe/G+fxpxqEjmgP5y2NjB+KG/h4/Am25h9Ylm+P
    EYq8QMxwYS+3TpfCMmgnqTymegNZpbQ32nJYKnxn9j58sLqgp7BjekgAYi79z+Zx
    0HoeGPiehGLdymoj5aaiTCZfTB5CRMyn+dbvXUpl8hdAEG72q5D7JH8yicOANHUd
    NdMIcDxTJcHnDQeXdSrVWGTQmt4iuwfweKlmiEkEGBECAAkFAkV1ziACGwwACgkQ
    kC3QTyNzprFoGQCfZdGMd7cQFoCW1DBGMnNJ9AO5WmQAoIM4BtfriXvx3Tov88ES
    DHOhFMi+
    =jLzS
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.133. Ana Kukec `<anchie@FreeBSD.org>`

    pub   2048R/510D23BB 2010-04-18
          Key fingerprint = 0A9B 0ABB 0E1C B5A4 3408  398F 778A C3B4 510D 23BB
    uid                  Ana Kukec <anchie@FreeBSD.org>
    sub   2048R/699E4DDA 2010-04-18

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQENBEvLStoBCACxnU/0ujcU5D0Ph4eGJhRfFSxoH/CBIH1AnaQyrsmzMCfdFav+
    IS9qdAHeNN1GugOKwvbP1TQQWQjGNiPMaUzWVE55PrLfQhTq3q2t6Q/9MUIXEKkX
    p3bruBe7eruQb4sN9Q113lLTZBTs8GsWI+iAqaeuT2eKhYuJlqI37Zp/36k87cTE
    sQg37HtSfkjLOCEbxH9q6JGCi0rwa4DqlPfwoPEyyMuTcwcRm4QhNKUvJ9jRFze9
    YYMXQIgBMX5L0j94mnq52HkXstv2rK0xURKANtXcqb0ciQUoXTRN0K0cYHPbNHWS
    PqZMhpTYd9d+SKYHuOGUJbsLhtaGzBLK9SQ3ABEBAAG0HkFuYSBLdWtlYyA8YW5j
    aGllQEZyZWVCU0Qub3JnPokBOAQTAQIAIgUCS8tK2gIbAwYLCQgHAwIGFQgCCQoL
    BBYCAwECHgECF4AACgkQd4rDtFENI7ub6gf9HsBwaT7CmPenZPPJk+/GXDiNWPW+
    Q7c6rAEA3072j+h/RDTnhKip9R6/4SankmrQSA0NCO1EiTzsgV/3cS0k4v0XKBrT
    10B1WrxI5Tx0osEYNP4GhPWkEO/6jCTF+8EsKyPujOvw9ps/OBgdYhD+gwv94SX5
    IymGWrBeyncmJDefcvA1UoL5XjhgGtv6qhmzPmN0+PamJlPd0X2W0fb/w9/od+5+
    o7olzxiy0kVaYXBizKVQ482x/oN3kXwzMmxkhN4zmoJpOzvjBOw4Ar5WiYldgL8x
    ZggWcR0NLVejeyi5VBPxsPh3vfvfvvjhxfHuS/bLGyBa/tO0bKxTpbD9frkBDQRL
    y0raAQgAsOEgWecCnr55Ny/V3LI+apr6wq5Rt37E+szExLEzGPQCeSE2BKWDNHGv
    KWYuTow6dZtCySg7GXW0fEV+QEvWvDa3y/zGjZOSVwcm7pk3Vm3Pnuv9a52wG6gm
    +a0M/68T121UK37+u5u25OHZaMaGl2poaeD/D+jzzvYvEDk6C84FNDmLXZjMtiuS
    NmLsc+kZodFbsrUjdFZXykFKP4a4D8Gq4nPLvDjRB5ZNKFjy1HQxpOJAkZpK0wgz
    t1AymA+9oom984jiPlV3DSrxrJoAndQeHoKDz2dhdZ9E1CC0Al5aAhVn94nfdwee
    GEL8N1KTtQLBmP4QXFtOAupBiqq0IQARAQABiQEfBBgBAgAJBQJLy0raAhsMAAoJ
    EHeKw7RRDSO7B1gH/3I75IrWb9AAEQRYIoGJW4/vPB2CQ0juG2XX657wzgDzL8uD
    E8Lb4zQJa1RtSj8Ma/Qx+cL7BNWypZAUIrXrhZiVdAjvnQ87CyW2bjZ1w4zsv1Qm
    mbKT6TmfMuGQLUjnoOwdRh77TfyLirKsXx1535UY6gH3YFAiZaf5H4yosC49tizF
    l5WNOv4DmHSJ5npLItAORSrBDeJWk2wLjp7N+7Hy9lbyMegAwYMQSrQTwNRGok0K
    ufjKvZwbUTmo/MYaLncTWpWl/ZFL21s90vBM36q0RiPDVCkZvqrdwyqb56Fr4KUH
    yl7TOEgJibW2V19o1SPGrF7QFfC3nE7S407UmRc=
    =+R9q
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.134. Roman Kurakin `<rik@FreeBSD.org>`

    pub   1024D/C8550F4C 2005-12-16 [expires: 2008-12-15]
          Key fingerprint = 25BB 789A 6E07 E654 8E59  0FA9 42B1 937C C855 0F4C
    uid                  Roman Kurakin <rik@FreeBSD.org>
    sub   2048g/D15F2AB6 2005-12-16 [expires: 2008-12-15]

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    8juSFfJ2ZBIPyPzTGgMu
    =0i68
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.135. 倉品 英行 `<rushani@FreeBSD.org>`

    pub  1024D/439ADC57 2002-03-22 Hideyuki KURASHINA <rushani@bl.mmtr.or.jp>
         Key fingerprint = A052 6F98 6146 6FE3 91E2  DA6B F2FA 2088 439A DC57
    uid                            Hideyuki KURASHINA <rushani@FreeBSD.org>
    uid                            Hideyuki KURASHINA <rushani@jp.FreeBSD.org>
    sub  1024g/64764D16 2002-03-22

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.2.1 (FreeBSD)

    mQGiBDybt48RBAC/KCE5CLVZsYvpmgrbum7JHgIgnX39EPMQmL9Y3LmYy6Iwh+OF
    iIjIqW6cDeCcxHoJBwbSUerC5ueriwZCh46gSnLVjnmBLlGFXyxYbSfFGetMVVSR
    6OpiQuITp4ZhVw/UoCGloNsIFKg6l4JMwqZmsrZPdl+zUU79RV9Zb4XhFwCgsRIo
    1mf9I3rNZ8f1Jv69nUR/lJkEAJB6fY1rtUNUwq+JXOnFGD0KnC8isQNyOeQ7Y1il
    HQ9mGVKuUC3Zh0FzvdsU7Ks2ss9ynxfbFXnyyAOqXwTzU9pMuW5oLOUmjqwEfAhV
    4S0xcnPcfGGJ671NNeqa8X4LQv6ECWai6O4CbA4aluRqhHNxT9dgEai8RN434LQE
    tGxcA/4mIlvVoM2c2DRjD4+/Oj+i80ZMpOgE1RkuQmXoZ/DwLD3EHbIBX4cNffOd
    FzxYrKCrXD50MehIw/IhFfHN/GdEN7NT87M3j/ydSYFluoiLv8FXO00mr8cDi3wF
    q+LGbniEhVcW6wpUz9zVFmdLAp3HQi1uRAHqYmdSs6gqjl/+pLQqSGlkZXl1a2kg
    S1VSQVNISU5BIDxydXNoYW5pQGJsLm1tdHIub3IuanA+iF8EExECAB8CGwMECwcD
    AgMVAgMDFgIBAh4BAheAAhkBBQI+L/K/AAoJEPL6IIhDmtxXgj8An1YuXcp0iurB
    ZYHiaYMzAb+lYhALAJsEAKTyeqO0plIvHBV49L5CErZo87QoSGlkZXl1a2kgS1VS
    QVNISU5BIDxydXNoYW5pQEZyZWVCU0Qub3JnPohcBBMRAgAcBQI+OM7uAhsDBAsH
    AwIDFQIDAxYCAQIeAQIXgAAKCRDy+iCIQ5rcVwyNAJ9Y5N6lIMXVy4sYCdgQvqDR
    xkUN0gCgrsbQwfTOBcy8Mw/UmGOE4/fwrNa0K0hpZGV5dWtpIEtVUkFTSElOQSA8
    cnVzaGFuaUBqcC5GcmVlQlNELm9yZz6IXAQTEQIAHAUCPjjO/wIbAwQLBwMCAxUC
    AwMWAgECHgECF4AACgkQ8vogiEOa3FerLwCfRPWW7lC/pAVdD2Jo+8rcWTKQ1xEA
    oIQ/on62k7YBO+buO+K472a/cW2MuQENBDybt6UQBAD/ZGmvwhzt9YWhF9q7mLOT
    iEMzL2AzBryLzzUphejgDlJN/TIoDtaJfMyNkO16FbUq/WLQbKYFKfDunqx+eVSi
    PsneeYw9nAdlcXVgHRjoL3vj5O7PIg4qqps2mnLKEOXLAH2PNTYY6+8T0NQicdht
    YIraowzLoKRdINuDQrCpEwADBgP9H4CwbNJtQAHwS9ATmfL6F2Bg9LWe1godSWkM
    N+nBxKvMqrajJWfxV09f9gzn0qmMZT9u2DwcADzRQLC3jkzgOD1f8UiAuCuDEE1a
    vg1iCuyiI6m+MMWCkOCj/69wIu1ilmWqkn8SeoEwN+hwqHa20ue7vBhXreQanJim
    sq38ZdCIRgQYEQIABgUCPJu3pQAKCRDy+iCIQ5rcVzT/AKCgYOyEMpIxXYVI5gYM
    CwQ3hkJ28gCePnTu3Ke6lPoQsMAo3TzKkUO9Wj0=
    =cXJQ
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.136. 栗山 淳 `<kuriyama@FreeBSD.org>`

    pub  1024D/FE3B59CD 1998-11-23 Jun Kuriyama <kuriyama@imgsrc.co.jp>
         Key fingerprint = 5219 55CE AC84 C296 3A3B  B076 EE3C 4DBB FE3B 59CD
    uid                            Jun Kuriyama <kuriyama@FreeBSD.org>
    uid                            Jun Kuriyama <kuriyama@jp.FreeBSD.org>
    sub  2048g/1CF20D27 1998-11-23

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.0.6 (FreeBSD)
    Comment: For info see http://www.gnupg.org

    mQGiBDZZXiQRBACWc1PcCjIpTl6aCyOMVfz4jlRSKblwib2s07TBwbgR1zMhbPie
    O2K4ZJqTcG4EnbMLEyYMbYwvNdOfUIjMW3VI1PJhRwWthTcbUjubzTu8Zxw+sKME
    ansth0xZW7Ax29UWQcTPxs4SRsCPFO8t+aWwZOm6z0fb5l1vMmKNJuw1+wCg3ZZB
    qK93hQPaOObwglnAIrgNpScD/j0VCEeC8fTMk+ZIo+z0+bUGPGU5cq+4XVXABYLn
    wMfR6Wr5Ys/3VCx4Oyzzgp/HBzcE5HxJukJ2ur3m9IE+uFfY4+HEFiwL++Ke4TWU
    7rn4rKjJYhGJ6iqGFwuxwmHdjcBh/38X0kmrCxyPYpt6xO+sJBP+QOABw3PFlMkF
    PUY5A/9RGU4mm6K7cteNdbHDI8yFNorQs8W8fRb8yP8bw1T8qB5+/rQ5jxAfA5sr
    FCuZsKNFdph9z/I3eFYVW4P8+9gmI2FAAAocWheSyKttAFHx63JRyBqXq9xmHKST
    kuaoQVXeFycSULAPkV67j0/zDL2mis6bRpPopINGgjkia16u6LQjSnVuIEt1cml5
    YW1hIDxrdXJpeWFtYUBGcmVlQlNELm9yZz6IVwQTEQIAFwUCOmRRlgULBwoDBAMV
    AwIDFgIBAheAAAoJEO48Tbv+O1nN4+YAoKeQztEcbPBbbX7DZAHOsGZLrZ2NAJ9a
    WEoFGMT3keQDjtjUI9c8IMh/l7QmSnVuIEt1cml5YW1hIDxrdXJpeWFtYUBqcC5G
    cmVlQlNELm9yZz6IVwQTEQIAFwUCPE3sswULBwoDBAMVAwIDFgIBAheAAAoJEO48
    Tbv+O1nNMp4An22RFzdv9zdNLlcY9GLPFyUrniqiAJ9F9Rhic6qBaXynksNw51Do
    +cLWkbQkSnVuIEt1cml5YW1hIDxrdXJpeWFtYUBpbWdzcmMuY28uanA+iFcEExEC
    ABcFAjxN7RoFCwcKAwQDFQMCAxYCAQIXgAAKCRDuPE27/jtZzYFdAJ9BFckSo4/r
    SMe9UqbRMPK+8FUumwCfYH1pt4t6jFlulLk+9wYA9wISL3e5Ag0ENllesBAIAMSU
    hrKdEdKzQXHzkoE4Nzl3hb6dtDmjgYr+3X95wBkUvtrk2CeYG3RC1PNwd1sEFEWp
    IiSzOaQDzxZmtBGpMkQ1It+CW4sC5Cs2TQ59VHLFw7HWSYMNj+RchWuWkhwipnX5
    8wu6To12Mu2MnyLszX2QIUxrQme7UpKkJgCct60C1DZLoQuZmfEZEyXmSfJsizeq
    eeJuusZwOWDH0ixuFVK/5A2RwaWFMftdhh/Vw0EkxdQnMJ+7zJ/hbY64VR7uz8oI
    5smfjVe0yqXMACREUzXmqn+Dc6Pz6ESVTv2XwIy0UxqxiYk1J98Cf3ffi5+e/q1d
    rej2PzArpfzaygu88uMAAwUIAI/IiiQJupz9BaCws/K6j4Qs5iWRiSB7vaZfgCr9
    c6vx+mIXX1Pblity5TOn9qXMv7vUM/dgmWSBbkkrvfD++H4ybJjpcOZN+peeGd0G
    /UfiQFMarsj9MozAmhzI5L00JqLOf4u/XBv0rh5HOX6t+M9MfZYL3C7bn/LxmDif
    prT8jxoA2SC+lPGSzI+M+ay/mz8kDmGD7fCS+uAFo5T1kjU+ed2dhXnl16gRR8NO
    6yAdURIC+xs6P+7L8uOiZfuk0gzn5RC6CYrEKiGZf9VqTRA2vcirPNEZR44jYXS3
    nL7x9pIsHyCyxEvojut7iGWO6qbaW/c+MRjcA8jgp9OuFROIRgQYEQIABgUCNlle
    sAAKCRDuPE27/jtZzZksAKDbznARmDIIxZjHfAry2UJFBPQbvgCgl/ERQfF++Uvw
    hLaVfesP/NCIt5Y=
    =AoU9
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.137. René Ladan `<rene@FreeBSD.org>`

    pub   1024D/E5642BFC 2008-11-03
          Key fingerprint = ADBC ECCD EB5F A6B4 549F  600D 8C9E 647A E564 2BFC
    uid                  Rene Ladan <rene@freebsd.org>
    sub   2048g/C54EA560 2008-11-03

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEkPa+MRBACUFlLWm3NomhEGr/Aj+rvLo6ayjrDP4Z7ihGTLMDFbhISurcAD
    8nW0MaFtBiUPxXFA1AC7L7In1cX8PFnQqgNcZiyZ4DOU6S8MndbUYwesM7oHs5zR
    KnvC5fZxY57cq9+L0r4qXdm6PvWr3Ca0T+E0QyWDn0AkYdLGYDafk5C/OwCg/zBe
    RExgeevWoBrieKK3F8dz/48D/jGNn4s+LPMtKNlaqYph0hyUmuZrQXXAmVTqfm0h
    9BBhby4qla9GqnYy0iiDqTCOzbckXQDBvXWFusmZx4AMnJTW/XQDHo9Kw9quWnjU
    YvMbgvqOIUu0mSS8gVLT4550dD1AUJucBzLUa6h5qi7EIh2c/nYwdimZ6Rv9DnV4
    lm64A/0cVk1m4mWC3jJzAS4tNtWbvhDbgWtqEiy1q/U116GtmnirZLJd8HE1nrVD
    VYCjhEHlA15GlLwN7zgnG9PBN4LXMWdccDwYAtsUAeZ5tTu4cU5k84ukxxOrzUAl
    d4p+UBef8QbpUkkEJm/0YWmim7+bTfH93FBGIXiG7x2UYVD93rQdUmVuZSBMYWRh
    biA8cmVuZUBmcmVlYnNkLm9yZz6IYAQTEQIAIAUCSQ9r4wIbAwYLCQgHAwIEFQII
    AwQWAgMBAh4BAheAAAoJEIyeZHrlZCv8LboAoO4/qyTTRwaKzRA5xvt0H2eFh4tH
    AKDLMSXjX+HX7U4zomwrekN7sJBd7bkCDQRJD2vjEAgAmPMCmdnoQu+Q3Z0pCYcA
    YJr1NyAu3xlpD4+dYBimEp2bAknPDCmaoVrSh7e7Mh754give4Hzz56QZsksIuEm
    rROafrecpxoAdMtOm/qa2CjlCKWVId5wbQSuuz8TV54CmoyUtruvKfUPDbK74TZQ
    BX1PyjaZ0FMrFPg69qoNcku2Wjc0BJsNFQ8+TzMzTbL1GKcM7kHZc4Wa/nSqwhnI
    hf7mgvd5NQEZs/7I3DVWxrqzEHFPPMPKE6weJJ56NEAd5W9rs2/eezUjnzAXYwyf
    IYCyWWqYeOCa4a7zYu84H0KxVQvUStVUWpTFLaZOpXJvgJkKPPXbPDTh6PV26t3a
    QwADBgf+PArSxdwEsXZWy73mcE9DjlnI/bRX/XN2tsZppzUyi5mOXZG7H+ZJGAU8
    DZ1+8QgQAwhCGAAKWt4jHq785usSUUa453N9k5X9JURTeMLrYVK8EXA9URQqCQpK
    iw8Om6xYoUHJZbgvTArySyw9mLgxo+hqLdEQdkJmSPfDcBsBS6d4dvv/NJyJDEAd
    vm1EXZQ0fmj+qzhCXhr5GVDGYcF152EHHpLLgFVgrKyVeIA748pxq84hvS65ieDn
    s/YuebWVLbexzqUkEN5arNahxk2kY32ZehzrhaC4DYAcJVEalMHS7X8V5LLhOrd2
    hTusyDPzEjlQi69AjtnBZUkxgVmviYhJBBgRAgAJBQJJD2vjAhsMAAoJEIyeZHrl
    ZCv8MAgAniHMkbReHW4Rlsj0/8s3r7dUuz0iAKDlFOXqYtStrWXWn5y1IU+gTHLW
    Bw==
    =uP9y
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.138. Clement Laforet `<clement@FreeBSD.org>`

    pub  1024D/0723BA1D 2003-12-13 Clement Laforet (FreeBSD committer address) <clement@FreeBSD.org>
         Key fingerprint = 3638 4B14 8463 A67B DC7E  641C B118 5F8F 0723 BA1D
    uid                            Clement Laforet <sheepkiller@cultdeadsheep.org>
    uid                            Clement Laforet <clement.laforet@cotds.org>
    sub  2048g/23D57658 2003-12-13

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBD/bH3wRBADoVem06r8ivhxQhCOEH06GAg5J6iqqlKIo5BmOiQ8IHo8JzA9z
    TwFNbhUCMWzUusH56nNHKOTuFV7wHiR8nvK0y2yU5qTK3MHbfSeMVy4rFAKgyZae
    Wf1lxRHU+W/EksFaC31ljkF01TGHVMtpKPzDSttgrrMtgstT7QKWTKcggwCg8bVn
    g7MH9udGaSNY5hO3l9wIcusEAMD+erpSZgVfwojT/pliCwnvKRwNByhIWqz2y3Ly
    M2+VR/IjFlpOvT4Ytrn2VC4V1duahdowNQh5x0vUPagRRYKx67OEbIcisKsGQTnT
    m4FSRUfULKZ3M016uSsYNbuopctjrxHE1YJfskHmLnIHjnXhJjfmouQqOX8nQSh0
    ryjCBADTi6z4ZvH3CF/C1egPsmYzJ14H2t51JUSHwEWWaj3LkILEGvHsywCIT7Xd
    R34B0hPIn/ihsJF4XBEiqJlZmFhfFUmSR3/No4TYKOtMAzfo6GtMv8q19U/LQaVY
    1wYY0rWCqfzwcH9vSLlpHL9afqNBnVK3XiBGMCmXZw+4klu+f7QvQ2xlbWVudCBM
    YWZvcmV0IDxzaGVlcGtpbGxlckBjdWx0ZGVhZHNoZWVwLm9yZz6IXgQTEQIAHgIb
    AwIeAQIXgAUCP9sirQYLCQgHAwIDFQIDAxYCAQAKCRCxGF+PByO6HcPlAJ9gLehC
    AhRMepAZrGdPsPFoMB283gCbB6y04aeQlXaa9+xAm6C0ciAiXj+0K0NsZW1lbnQg
    TGFmb3JldCA8Y2xlbWVudC5sYWZvcmV0QGNvdGRzLm9yZz6IXgQTEQIAHgIbAwIe
    AQIXgAUCP9siqgYLCQgHAwIDFQIDAxYCAQAKCRCxGF+PByO6HT+eAKCBj8MXtxmq
    l0PuLGLnR04gnauqPACg8Rtgb2XwCrgcZFcjS1Fl7/SmTE20QUNsZW1lbnQgTGFm
    b3JldCAoRnJlZUJTRCBjb21taXR0ZXIgYWRkcmVzcykgPGNsZW1lbnRARnJlZUJT
    RC5vcmc+iF4EExECAB4FAj/gQ+4CGwMGCwkIBwMCAxUCAwMWAgECHgECF4AACgkQ
    sRhfjwcjuh2wLwCfZ0Sqh6DY5U2ZDj+JrdqX1qzEaGMAn30UALtH14r1jMPPq6xn
    UuMfFjyLuQINBD/bH4QQCACbO8LantesOQKcxZS6WPSLhIoZerdMJ/b4DCd22GGu
    IM4eoWiYPX73cTMbN9cTEObaA0hvXEdn8vWl9/RBV6aL/fYhAqTVGWhXu6MBJiAv
    0zFeliJl2+7MqzZjjr8GSFkhM3tXEzFr+7r7/Bqnp8hdzMFUS2dLcL+ZTXJuq9s+
    xUNnwt0+Qy13VQU9whTZNZy3PHHa3XRc5IbZ5FnqMM3D7twlt0sS6j253b3CXw31
    qEREoLutw25X8pbQeYJW8st0xIEY9z0MikBOJvKPAUani5+eWjuJC0FlXYM4qSnz
    zhBpDbQBuhQu5JgPPiXlBq+ta/prm6FyJjcK+EyJsMGnAAMFB/9DIGugG/5F+4XC
    dTvFluD8zbP6zwqWRuHX9JmA+oso6ruDHiZ+Ckdz0xBfD8yoyENIRnLmBxx11uZN
    upAlM2itsvAwHMm6zKGLwlN+74vhoCTzvDFtnyTSgC8as4kk4XCax2QMAueFpW+2
    8/SSLqIK2UWT8/5SkP0QaN5qSFgRwhGxYgyVP8pflrjL32u+fEwo8EjNnOUHX4WY
    uzdzq1t+0K2AnZH5TiUCPy9iLP8o3rBm89Qdh45wzqN9DOGePoc0v4opQK9+3TRa
    vYAx6izrRajiGgUHLcYeL2nQxyi3LBkKvbp4Bw/dpxGTdmPhtyU8jYqdP5SQbrFJ
    4DwXqs4biEkEGBECAAkFAj/bH4QCGwwACgkQsRhfjwcjuh3mfgCguHMdGD3Orm8e
    pAU+aCOCPVkkx7AAn2yhe79FYbHDx5Dx2LAfRRRyfxjR
    =lVoL
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.139. Max Laier `<mlaier@FreeBSD.org>`

    pub   1024D/3EB6046D 2004-02-09
          Key fingerprint = 917E 7F25 E90F 77A4 F746  2E8D 5F2C 84A1 3EB6 046D
    uid                  Max Laier <max@love2party.net>
    uid                  Max Laier <max.laier@ira.uka.de>
    uid                  Max Laier <mlaier@freebsd.org>
    uid                  Max Laier <max.laier@tm.uka.de>
    sub   4096g/EDD08B9B 2005-06-28

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    [encoded data, 11245 characters]
    01jfP2YAn3DLpgqbfVb0MZfxffpFg3K6fWkX
    =jGQA
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.140. Erwin Lansing `<erwin@FreeBSD.org>`

    pub   1024D/15256990 1998-07-03
          Key fingerprint = FB58 9797 299A F18E 2D3E  73D6 AB2F 5A5B 1525 6990
    uid                  Erwin Lansing <erwin@lansing.dk>
    uid                  Erwin Lansing <erwin@FreeBSD.org>
    uid                  Erwin Lansing <erwin@droso.dk>
    uid                  Erwin Lansing <erwin@droso.org>
    uid                  Erwin Lansing <erwin@aauug.dk>
    sub   2048g/7C64013D 1998-07-03

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    [encoded data, 44846 characters]
    =5i3W
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.141. Greg Larkin `<glarkin@FreeBSD.org>`

    pub   1024D/1C940290 2003-10-09
          Key fingerprint = 8A4A 80AA F26C 8C2C D01B  94C6 D2C4 68B8 1C94 0290
    uid                  Greg Larkin (The FreeBSD Project) <glarkin@FreeBSD.org>
    uid                  Gregory C. Larkin (SourceHosting.Net, LLC) <glarkin@sourcehosting.net>
    uid                  [jpeg image of size 6695]
    sub   2048g/47674316 2003-10-09

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    [encoded data, 11180 characters]
    Wl3f9A7RglYuxkgxVKnWlXgWtigAmgKgQFhgdX1L2lIHUi27R3dYoD10
    =VNnr
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.142. Frank J. Laszlo `<laszlof@FreeBSD.org>`

    pub   4096R/012360EC 2006-11-06 [expires: 2011-11-05]
          Key fingerprint = 3D93 21DB B5CC 1339 E4B4  1BC4 AD50 C17C 0123 60EC
    uid                  Frank J. Laszlo <laszlof@FreeBSD.org>

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQINBEVPgQYBEACvR8zsof8gLi7pF4331BIVluP61Z4ICzkg2lWLB0Gj1feCbBcA
    neds8gqHJ7vxArQeYTBV6Gefk4mvCecxo2LGFEcsDuns2X1hf1pXz4AKvtYoVL0e
    ytW5s3bRdxX+gekv3KxVQjv4tJU2surbW0Hv17Z4m4ZbRfn17dzvpMwtiZmP3kMX
    N0qAeBs4MZxmWhfYHapc8du75XfpvvD2W4I9VBJXd6DLKNksjq0/Ih3Ygh4kEVxH
    6xQT+lL+6yVWTl8XQpJs3u0OPpY/dVjI98DaZucW/Lkh/+uxZm5ndExi4bFJ40rY
    KfqCsbGAYPOj4HKDkcgNZu+MbC6nIuIuh/eK8ZIpSlSdkzJ2r46wOBHLUJlJoxH/
    P4Ly5cXu5lUX2Mf8/HahPSY++5xIoSI1mpqruJyQZxhF4J56X1Bn0BnMmFt+uXF7
    O8bjQi4XQJBurcSkAuBnTQlohuAXDfIqeGqqMN6iDGTGCOL9R5WZ6nasyDL+qPA5
    WK/ooxINQWPWbTikYb3PZK7v8ABBj6TYAAGxAYrly7boIVKxYUFbotH4Y8dmXUEr
    p8Hj+tFZCk6AKBn/lCLsM/vTs0ylaSHJOhQc49fj/PETGSQLVjd8iH0l87MfLd9i
    iLnd0m/Y+ecCobgQDGnDQiFqvsJF6VI+/bisOJiE/HdOyo9j9K3jJ1l4gQARAQAB
    tCVGcmFuayBKLiBMYXN6bG8gPGxhc3psb2ZARnJlZUJTRC5vcmc+iQI8BBMBAgAm
    BQJFT4EGAhsDBQkJZgGABgsJCAcDAgQVAggDBBYCAwECHgECF4AACgkQrVDBfAEj
    YOwJtw/+Pe7qOPCqTUyi+w9k0829sinZIkLxpqJPSzzYaHQ1QGIOg4wO5yCER49n
    Sp7V/S1cNKXTIR+YU2Pf2dj/s7Ot6bRXl9dDnUgMjkvNEEIO6a9gazZSfD6+5ECL
    DFEcJ6n4En02dCjsZQ3uR9DITAZcd/Y3Gczaplwd9LHpUoh/nG1Dj02+6fB0E1wQ
    ebm518PDvbCaQvggYIPc8DvS5DO3GSRLQ64a2bILYOP1UXPGn4X/0yoayieyO6lD
    HFA1gVCROtgG1II0ylDWH+Klp4nAyRcqoYfF5kHWsvQS9N27gf90F0XEALjxCCEu
    Osy4rtDvg1mU1AK0eflyZImJBFfEOXZrEM2TYo+H5X1KLEMlCzgz/5MoOQ3F896u
    K1Rb95LuF2BJOJsnYbHTEURwloif0U5VIbuH6s37bVjkXDbHcQo1UGwQM/v6tPaG
    YirZCgh+NpKChuO43XvQTG7CL21qqten+DOh6MBPtBK9TeZIeuGPiUkS1WcCwRbp
    QwmK2wZeVaZKReqLJO0QXq06dgd4iaiN7W8p6HZe3LYbnR5d8SWyPp2RQxESOOF7
    3atOTQXB5hn+pXuHpH1qKK6RkiD62pMd2RgRJlCdKZXM5UKjpAV7w/k15qiZuZg+
    N0Jkod50e8O7CLTZdXTTYpifOkjdnycBY24X1Ra0IqkTC69zPrs=
    =xm1s
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.143. Sam Lawrance `<lawrance@FreeBSD.org>`

    pub   1024D/32708C59 2003-08-14
          Key fingerprint = 1056 2A02 5247 64D4 538D  6975 8851 7134 3270 8C59
    uid                  Sam Lawrance <lawrance@FreeBSD.org>
    uid                  Sam Lawrance <boris@brooknet.com.au>
    sub   2048g/0F9CCF92 2003-08-14

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBD87mDQRBADpSK4q7J5JpjHMPdlp4ieo4jJR9V63tvptpBOAk/nuhWnY3fpu
    Z7pcxOy5I5hZDIu2kn2zkBv4CTsn9yxdWgJaSKU9nQMYpfFdCnajo0HTwV72+7eK
    u86VDWZeWuuUIiHVNBUILClbOadmRFDxuCCjyE+V97o4CiUu350M28YdBwCg6LE8
    dpO9NELy9LJxyhPBE51iS4cD/2CdsCXzmKaFTa+w5fCOSBzNv516qY1GEkNvmDrD
    e3dgeyxaembidWjjU2vqOZmWFP64jgayvyFZChGMlRab78GKXH7DIGGrXWp9v7B9
    JjCqDyuX3NGaxCDFUNJYR6nt7Q93sAT85oAV9EPeFFEx7Ksd4C1iKlGlohGwleb5
    TCngBADX+A5DR9eI9E8loh9NmT4HVzvjk9kvk/vq9i0MqxgcEBodgRPibVKWTWOj
    MR0T+3qOzLGiVjIL2FzVF1na27hGJmXupxU4dWoKVGR85JYNOoFBNuR2HZsim+iy
    sX0gK6ejsxVhhx6Q+CQgCQ80TzuY/dD2qFuOGkda0P9Ro62yt7QkU2FtIExhd3Jh
    bmNlIDxib3Jpc0Bicm9va25ldC5jb20uYXU+iFsEExECABsFAj87mDQGCwkIBwMC
    AxUCAwMWAgECHgECF4AACgkQiFFxNDJwjFmBaQCcDJfb0SfPgEimiFVhsQOJccxJ
    F1UAoKJrgMOoY10RAqM822JzOnn9mGXutCNTYW0gTGF3cmFuY2UgPGxhd3JhbmNl
    QEZyZWVCU0Qub3JnPoheBBMRAgAeBQJCWzEGAhsjBgsJCAcDAgMVAgMDFgIBAh4B
    AheAAAoJEIhRcTQycIxZWoEAoNefUsJBBCoZSmfVIPEh4g1oDmOFAJ9H6Q4/hfh4
    hFTLxU7p2bLgbdjGHbkCDQQ/O5hBEAgA5LFaiwqsnyrdVB+Y7S511ZPmQOi8UwfQ
    04PIWyt9a1MwGSYdUpzGAieMLe4KG6olMlLH0X/qxkVjbukwPyybeN7RNUZE1DD7
    KGbVOWpyQHhAB4EPfzRJFYQEmT1x7tk0nVbF7emuK9iG+Z3et6Io58QjOgyEMLYU
    UjwzCE2NYjJmMLEy1e+icfEkOs30s8XPrus/GNffVlsxmHEzxtsicw+AVnlrjLtG
    xZ5DsNRqJM14L9X5qR3O0dq3BnKGZPOctIF6bRv0AC9lX9kQ1saFqv8iEHoHZ2vD
    2eIplYu/bviD+lI+w6zrq/KgNHQ1n9ngzs/N14lN9C57dHTS7U9nJwADBQgAhWSk
    YnYr5vUskZgVmf0joVgYNBqXIBKo3qXx0DYxGOT18EbKhtSYCar4Uhjob9fUhQop
    nEd00GQVZwDTL3/STCXUUSaHRJhK9yCwgvQ+/q58yW1JvMrCA6uaca89y9DnfWxv
    0lFbOdLJJQNrgLCyNweLhZcEjOSTQO6EZB5OX+z4Dgfxd/5DKWr19JKw54Qtus3s
    9zZhVoQoXzWiDlYdtuGUjnVQvycegOxwjFN/TP9IQpQS8HFMfEu5GLTbRAQ3zirS
    W4FtGaeI7cUqap6ot2BRd1prAXyThXHxYAARaYib/xvCLRDTfXCHgJXbqEiJ72Yy
    FgGYqFTRrTTgxiXo9IhGBBgRAgAGBQI/O5hBAAoJEIhRcTQycIxZLQgAniGrL6cw
    +rQG5xLeJ6hrbllYV+8cAKCmIpsp54t97HWvJTKN9GhbpQhojQ==
    =iBxM
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.144. Nate Lawson `<njl@FreeBSD.org>`

    pub   1024D/60E5AC11 2007-02-07
          Key fingerprint = 18E2 7E5A FD6A 199B B08B  E9FB 73C8 DB67 60E5 AC11
    uid                  Nate Lawson <nate@root.org>
    sub   2048g/CDBC7E1B 2007-02-07

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEXKYeQRBACVxgl1l+IwFK3aZ96X+BHzeUuGfAAWSqzZuJq0rVXhUU0KnGy6
    r2HLJKwGlSQ0tP7rsYy34fDZy5BB1JajHNUIhb5SJFZH3VltQuZ3mnaLWJajm4Q2
    c3TRBVVFcm4y0x/QiCcz3JvCUWHaPUUWlpbrkt57O5NTVlneOtruZtYPwwCg+3Ft
    WjNU4ppXEbbsLHsIri5gPCUD/2e7RFkq1KaaqA0wfwictFgxuOZX00Do1kIFfoE6
    0jKSxU3P8E01H68vZs8vGuVOLVE1pXoWoJa68zVOWkLCTE1z2U5YJumZL1mDRRHt
    VfqlsaHNBLIRd9qAZsj3F5aSFu1/hCOiUkgLWQa9e/BAv76L+mCIJ+g5bU0YTEhx
    XoFwA/9dF3JFdQCkrzbhS9/BSjEIXDCl7e9Yt4/6jTg14fr9Pb5hyUYYxu6i5v59
    TgSdxSFUd3MaZmH3Kewg++9oqewNEYdOu/gmx7GiSKr3k0FlX+aK7UsVDjEr55Gi
    XH5pqUce7y8bmx03a/pa0Lq5WLvPnfUaplWeoCmmAXeYmRFYqbQbTmF0ZSBMYXdz
    b24gPG5hdGVAcm9vdC5vcmc+iGAEExECACAFAkXKYeQCGwMGCwkIBwMCBBUCCAME
    FgIDAQIeAQIXgAAKCRBzyNtnYOWsEUGfAKC9mTqJd/PjHdTG0YZkBr0Y0PLmCwCb
    Bl/VHprr5SrFDBdZy+vB5GIEhme5Ag0ERcph7BAIAJKt5PBfx/CEqBDS+JkDyYLG
    RA3johtfG5HPVPOX1iFJgDLx/5ZKIsK3oxJLkkZQDBjzJgU+GcffBwafaTObEbid
    D2rtwtqfM2EgoSntvJhrP09Qfx1/MOZs4MVJbGEec9egMgFRzUSKZ2xiYNqKOWL4
    dL0TOyeLg7HQne1fuOOFEJZJtCxHAm75z6Q8deYHr7bQQ6NZuYc2qsOLjBX+M6Ig
    d+r5p3vhkeg0uUzkRR9bAmtaDT3BFfxfMG0b4iTBpDW5UQ2Cp0NG+SAEaXVCYNcA
    kKHZGTTI9e6a8AimsP1wOKs1TsE7WSLsk0Y1U6E7OuHLdmGwZygipfkUXR5v/hMA
    AwUH/jLrMCAzZaCh6m6mrJ2HYCASRSfGKAbmfqPymEICfZ3Y+FeCCFopeatMZPyE
    R6gEzHyu1hlSHV6yTfxRDV+gO6Pl9snsucJtD//ZnfNZenKsFoGJM8qu758jBA5m
    FY5bTlkySmFJYHGAtpMap85j32iA3B24VmgIZ+rE/YVQUbbkaFrKN7Crvm+PgH1u
    xbLrkjypklyo3iZZQo75W7SobSvyqnG3LRXkXsS1U1m3QWcLqIjKZTrrhbV3IIRK
    +A0rSRKXpDt5lOYIqbJ+PwwGexlgzb31vJa0+N8qjdvbbMZIOA7mDVauEYsETkU0
    Wtl5Rc1M8Qx2IISH+K3AGXHqn3iISQQYEQIACQUCRcph7AIbDAAKCRBzyNtnYOWs
    EcVTAKDj9JrwUwygZFNG+oWsOA3/ikA7qQCfQkYnj9q6E0Z21p/ZTDptic+qSEI=
    =yO1b
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.145. Yen-Ming Lee `<leeym@FreeBSD.org>`

    pub   1024D/93FA8BD6 2007-05-21
          Key fingerprint = DEC4 6E7F 69C0 4AC3 21ED  EE65 6C0E 9257 93FA 8BD6
    uid                  Yen-Ming Lee <leeym@leeym.com>
    sub   2048g/899A3931 2007-05-21

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEZQ5iYRBADg09p5ljHhIDwhH8i265BFEL1AyW3EPEOb0CyFErp3K4H7+IpG
    FeaHUrB2i4MYs2r9gAMHadBMTXZJv7ECq2AUQfm3vTKeBjVVz/N7jsEDcmH6bObY
    XvfRlp9618IBRCDdcbD3Qs0Bv4tM+e0oNYBTsOWAO+bfpHYPk5wORxq6ewCg8DWN
    J/THLd42Fd4HTfxTC4tTa6UEAMPz7iASUbyJr7//O/Uu+05MBKX8wuNdrH2XPUWq
    MwLcgEpKSFl0xjpJUMpr3eWGvAg0Vz1UzxDUvZUwbj/5nXh2olNoMH2LQY0QwXGG
    TPudevBeJ6W+UaEGCAH4Yy25hxxr9h8XI5KRlPCOjQ8i6H+EZbLRTLgOrvBWvD8B
    Ob8dBACGxoySAQP+leHIe9nrKyZ00tkNI6WPEPAG+14yiCgWLJnWKi7maIHzjG+1
    1Fz5+nyMUtHofmLvNyDA/V1e2LFXDjH3v/PcTCQON8EnHAoYmqSRAZMBMmDpU1Af
    f/vbiOg1zwhwAhdO8y6GZHcJGJjJ8lJYs151ehSS2Oa+NRCfH7QeWWVuLU1pbmcg
    TGVlIDxsZWV5bUBsZWV5bS5jb20+iGAEExECACAFAkZQ5iYCGwMGCwkIBwMCBBUC
    CAMEFgIDAQIeAQIXgAAKCRBsDpJXk/qL1q9tAJ0fy0MkFt+hNcvb0OMqTRJvjYlB
    KACgluazpF5ATo+dNtJifOd8kMBxB+C5Ag0ERlDmLBAIAKOlmONAuOtrVXvRw2gr
    wYNA4bjQrv44PLCMGuicddC1S6+Ngp+F2bjq43iyDk06i4eXBop0uqzkGA56pCVW
    51mSLThl5q/1dixiLDOSy/9Scuei57KuP5MOk5GpFBU/OZv0R+1ZaK+718+jI8/E
    NGOt/rZ3ZaTR94rAn9yQzVp4prVw4F7r6Vrp9mVu2qgoYKpwpfuR4nw1kq80Z1R8
    TxtUrGFYSY7nRTPI6FI6fo6BVPMAw01Xh3oKfDfrecaNtNNgM/DvkrBvZsVHu3NO
    M2yAVL6LP/Sjv0uF1pK/WjP27hzvO3yha2KYS3oBu4zysyVbi7QuFvm5FmF0mKik
    JosAAwYH/RWHzWWtpgXdbMUrPxFTmFhXCVVuyiHG0h3bMZigKtAMcjjYRMenhiRm
    e5Z5si4VzzpaaZaVY6T7hmzM3cran4VH6dFdZy6qhBFzlJphpLwnJti/FMrF2CdY
    1kthUC0fxeEDPBkYvV1izBrPQ915XYXuXdJjbk/ATqeIKsqEHWSmTCLcLLtWn9Nt
    X8DWU+GHMbaMAbtEfL+i8vg0WIOeSE4tlQwIkvSzfXh6Rysr7NtOuYzADD6ORRkg
    Q9K802n7IYXqWhZTWKijXpf+n+NzWdXC/1UZambcfo1gcS1fotmrO3Fmq3+FgJ/A
    YPmudGbHwUlAXVfJ47Atxggoe0znf5CISQQYEQIACQUCRlDmLAIbDAAKCRBsDpJX
    k/qL1tpnAJ9MKjKh4P+ePXeQ+yIwfPza+MnFcwCgvVONrkQ6Byi+tZ1ilTlKR+8+
    xnc=
    =XiOT
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.146. Sam Leffler `<sam@FreeBSD.org>`

    pub   1024D/BD147743 2005-03-28
          Key fingerprint = F618 F2FC 176B D201 D91C  67C6 2E33 A957 BD14 7743
    uid                  Samuel J. Leffler <sam@freebsd.org>
    sub   2048g/8BA91D05 2005-03-28

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEJHnP8RBACRTtM4Fb2oRITEwfTLIKSa5Mk0m1A7Pitd1qkjtAyFCi5V6uF/
    2FXPP3Ux3M8xzrvkQNnWkYvGh5MSgkkJ0nszUvh63m5Lp1Yr/EMQr03v1HfqGKF2
    SALv7eVJ3XHEEGsYq6KOcJ+2n3FkL6bwGXkXSya85a+EwQ+/aBhpEOEKwwCgl4N4
    oTMEgh2Z06ZkMJrqbf4/P38EAIAN93nvAN14v41zw25b4USFzqH/JFTG3utAVxiB
    NgTEkD+OkktxJFoTrZxfxoU6Od4tl+yIyhKJgj/QlH5pA/mpMeaXh+TQ0/EQAzml
    d/sw7vXV3WJ+zXIZeh51yuHBY817e7izcnfmY33UrOdf4DtcplmUrfQd1eVMSo45
    K2b3A/9a0tg7NhdfkL06b97oyKb0L8F92Q1sO6J5sgsEjNrUVrFnNU0DIDgbi/0t
    oBpnqIDa09hhBJ1XYcxU4KMxBLpuIeuk2cDCUCVeeEDmx98GIss3hKO8YWzB40y6
    7vtdh5lveaNV4+CA2xL/cDXscl+poRQA5tR0efR16jckEaEcVrQjU2FtdWVsIEou
    IExlZmZsZXIgPHNhbUBmcmVlYnNkLm9yZz6IXgQTEQIAHgUCQkec/wIbAwYLCQgH
    AwIDFQIDAxYCAQIeAQIXgAAKCRAuM6lXvRR3Q7whAJ9e9jjfVscKVirvWN5IM2j0
    60Q50QCglAppekJH6jWStTwoq1EroBFPKUy5Ag0EQkedCBAIAKmxNvJW/W+PrE+T
    JjKw6dbqUqAUNIGWnr6xgL7KYBpx5eo0XH3RCVzvRSfboA1+nXauTn/FhOtWMw0J
    dkHrMQhxKSDhWOxeftKuiRiVLPXxF7PX0JMOadxOuqNSt1VWcuTxxBB2wva2Rb48
    JscdFbT2u7+PHNarDgUnEobobdvbzh4F1ACaesUq4s2y8jH+YJTaBqJJuZLjLwti
    C2zv7skf40I5ldud4/7ARGuumpjTrqZFQeQwPKX975X+jw5SBUJXA1ckKcgTp0s5
    Yk+O5+yUkt6yzDO+CAYEaZ/xfpOhwmqSIXtdo+ilm2q3y5l+nyEVidYncRWRWYyO
    iaXOJdcAAwUH/0Ixl92WezOXBqMrKVaA+abCN6t6n9zxSnwfVo92Vlfqj8Huz3Hk
    55e1in3P01xXdNKnapYNkCg70WbtNQtCh0nJdGGDEWVqJsjiqDDMYa7QLahV7HPB
    RyOtoAXnTWPpyk0d5WEXPLJ3vPjxqv5wKTmav3JcvVahSVWi2wmWAgfQJXYRvCU3
    EEQ5KqtCBrQNdBsSRnzgDsMY2kAh02VuGTbkVlQz/rI7HAYEOL8SoR489O/MTE+b
    5HtUT70rk57/3jR3QtiH/3Q7OqnPh/ATjO+pnPuhfqHiQWLWRDigJNheH/B+1Hmn
    sHiSWrUmlaI0bzyIVW4Xft3nu/wH3QVSSWOISQQYEQIACQUCQkedCAIbDAAKCRAu
    M6lXvRR3Q1SUAJ45iX7Ka9rb5pwAmY+fyfpuO4qgJwCfW4VAl3+NLCCP4A0Y8wlb
    UtEtg3M=
    =kR9a
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.147. Jean-Yves Lefort `<jylefort@FreeBSD.org>`

    pub   1024D/A3B8006A 2002-09-07
          Key fingerprint = CC99 D1B0 8E44 293D 32F7  D92E CB30 FB51 A3B8 006A
    uid                  Jean-Yves Lefort <jylefort@FreeBSD.org>
    uid                  Jean-Yves Lefort <jylefort@brutele.be>
    sub   4096g/C9271AFC 2002-09-07

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    3bMQAJ4soo0qCyPCVz4Y0Ly5jvYWToXt0w==
    =kszM
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.148. Alexander Leidinger `<netchild@FreeBSD.org>`

    pub   1024D/72077137 2002-01-31
          Key fingerprint = AA3A 8F69 B214 6BBD 5E73  C9A0 C604 3C56 7207 7137
    uid                  Alexander Leidinger <netchild@FreeBSD.org>
    uid                  [jpeg image of size 19667]
    sub   2048g/8C9828D3 2002-01-31

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    [encoded data, 29900 characters]
    BJmDy7UZOmvcCZ83fBsMArrC8MkAn3zKySx5vPY/ocOMjEcB099D7B/I
    =H22z
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.149. Andrey V. Elsukov `<ae@FreeBSD.org>`

    pub   2048R/10C8A17A 2010-05-29
          Key fingerprint = E659 1E1B 41DA 1516 F0C9  BC00 01C5 EA04 10C8 A17A
    uid                  Andrey V. Elsukov <ae@freebsd.org>
    uid                  Andrey V. Elsukov <bu7cher@yandex.ru>
    sub   2048R/0F6D64C5 2010-05-29

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQENBEwBF1kBCADB9sXFhBEUy8qQ4X63Y8eBatYMHGEFWN9ypS5lI3RE6qQW2EYb
    xNk7qUC521YIIS1mMFVBEfvR7J9uc7yaYgFCEb6Sce1RSO4ULN2mRKGHP3/Sl0ij
    ZEjWHV91hY1YTHEFZW/0GYinDf56sYpDDehaBF5wkWIo1+QK5nmj3vl0DIDCMNd7
    QEiWpyLVwECgLX2eOAXByT8BbCqVhJGcG6iFP7/B9Ll6uX5gb8thM9LM+ibwErDB
    VDGiOgvfxqidab7fdkh893IBCXa82H9NCNwnEtcgzh+BSKK5BgvPohFMgRwjti37
    TSxwLu63QejRGbZWSz3OK3jMOoF63tCgn7FvABEBAAG0JUFuZHJleSBWLiBFbHN1
    a292IDxidTdjaGVyQHlhbmRleC5ydT6JATgEEwECACIFAkwBF1kCGwMGCwkIBwMC
    BhUIAgkKCwQWAgMBAh4BAheAAAoJEAHF6gQQyKF6qmYIAI6ekfm1VA4TvqankI1I
    SE6ku4jV7UlpIQlEbE7/8n3Zd6teJ+pGOQhN5qk8QE7utdPdbktAzi+x7LIJVzUw
    4TywZLXGrkP7VKYkfg6oyCGyzITghefQeJtr2TN4hYCkzPWpylkue8MtmqfZv/6r
    oyqwTbN++E09FQNvTgRUYJYTeQ1qOsxNRycwvw3dr2rOfuxShbzaHBB1pBIjGrMg
    8fC5pd65ACH5zuFVA0CoTNGMDrEZSfBkTW604UUHFFXeCoC3dwDZRKOWJ3GmMXns
    65Ai5YkA63BSHEE1Qle3VBhdcG1w0CB5FBV3pB27UVnf0jEbysrDqW4qN7XMRFSW
    NAy0IkFuZHJleSBWLiBFbHN1a292IDxhZUBmcmVlYnNkLm9yZz6JATsEEwECACUC
    GwMGCwkIBwMCBhUIAgkKCwQWAgMBAh4BAheABQJMB/ruAhkBAAoJEAHF6gQQyKF6
    MLwH/3Ri/TZl9uo0SepYWXOnxL6EaDVXDA+dLb1eLKC4PRBBjX29ttQ0KaWapiE6
    y5/AfzOPmRtHLrHYHjd/aiHXGMLHcYRXD+5GvdkK8iMALrZ28X0JXyuuZa8rAxWI
    WmCbYHNSBy2unqWgTI04Erodk90IALgM9JeHN9sFqTM6zalrMnTzlcmel4kcjT3l
    yYw3vOKgoYLtsLhKZSbJoVVVlvRlGBpHFJI5AoYJSyfXoN0rcX6k9X7Isp2K50Yj
    qxV4v78xluh1puhwZyC0p8IShPrmrp9Oy9JkMX90o6UAXdGUKfdExJuGJfUZOFBT
    tNIMNIAKfMTjhpRhxONIr0emxxC5AQ0ETAEXWQEIAJ2p6l9LBoqdH/0JPEFDY2t2
    gTvAuzz+8zs3R03dFuHcNbOwjvWCG0aOmVpAzkRa8egn5JB4sZaFUtKPYJEQ1Iu+
    LUBwgvtXf4vWpzC67zs2dDuiW4LamH5p6xkTD61aHR7mCB3bg2TUjrDWn2Jt44cv
    oYxj3dz4S49U1rc9ZPgD5axCNv45j72tggWlZvpefThP7xT1OlNTUqye2gAwQrav
    XpZkl5JG4eOqJVIUX316iE3qso0iXRUtO7OseBf0PiVmk+wCahdreHOeOxK5jMhY
    kPKVn7z1sZiB7W2H2TojbmcKHZC22sz7Z/H36Lhg1+/RCnGzdEcjGc8oFHXHCxUA
    EQEAAYkBHwQYAQIACQUCTAEXWQIbDAAKCRABxeoEEMihegkYCAC3ivGYNe2taNm/
    4Nx5GPdzuaAJGKWksV+w9mo7dQvU+NmI2az5w8vw98OmX7G0OV9snxMW+6cyNqBr
    VFTu33VVNzz9pnqNCHxGvj5dL5ltP160JV2zw2bUwJBYsgYQWfyJJIM7l3gv5ZS3
    DGqaGIm9gOK1ANxfrR5PgPzvI9VxDhlr2juEVMZYAqPLEJe+SSxbwLozBcFCNdDA
    yXcaAzXsx/E02YWm1hIWNRxanAe7Vlg7OL+gvLpdtrYCMg28PNqKNyrQ87LQ49O9
    50IIZDOtNFeR0FGucjcLPdS9PiEqCoH7/waJxWp6ydJ+g4OYRBYNM0EmMgy1N85J
    JrV1mi5i
    =KVzv
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.150. Dejan Lesjak `<lesi@FreeBSD.org>`

    pub  1024D/96C5221F 2004-08-18 Dejan Lesjak <lesi@FreeBSD.org>
         Key fingerprint = 2C5C 02EA 1060 1D6D 9982  38C0 1DA7 DBC4 96C5 221F
    uid                            Dejan Lesjak <dejan.lesjak@ijs.si>
    sub  1024g/E0A69278 2004-08-18

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEEj2LwRBACdxv/Z/TqPsaxTmKrXZSOPnQca8L9UksW+71kI7YouAkbnnTyB
    maf7zCs0BDcUU6t2mO5ijJlxXe7Y4yMx/3mwGX9iWfWh5U9xobG0STcU8ET3ZQmZ
    /AM1vSL/weLK42YHxyqSrudt/oWxH4iDZFz5I/HI1DRwZMFhft3ja+pdYwCggAu5
    GwYrQlQJHJcCFbxnYUGJX/sEAJXyzea8rzP7dTUsaOYcLitIpy/eDI3vkB0aW7Uh
    JSicWASPW2erv99f1p2gkVQ0b0lrpMwPrysotfN6wLLYR0fowCWHm7hnASgohFpq
    VwB7aj0HDEHne7EIr6geSpnO8Y4QUtbFVWo9cq7HGzrB8NhwpLXQ5g9RgB+H9SS7
    SzVXA/4qPOAoJ8Fp+ZSznd46yd+dgFmVpSJuTs3g+hFolSioEkbi66fHwPMWeifS
    i02AkU8m/qiGMAXRwBm7s5jeLwQyJX38S4PnupPg8pOjZtLVYoTWaM19yuMGS5S/
    ryF5MaCGtuB72Wnsp67aZIkaHjfS4QAKo0WVH8yucnyOS+BFsrQiRGVqYW4gTGVz
    amFrIDxkZWphbi5sZXNqYWtAaWpzLnNpPoheBBMRAgAeBQJBI9i8AhsDBgsJCAcD
    AgMVAgMDFgIBAh4BAheAAAoJEB2n28SWxSIfMJkAnjxPSokKlZtVhYhAcgX9as76
    sadXAJ4yo003F9ilZw6avaThCBltR/MqWbQfRGVqYW4gTGVzamFrIDxsZXNpQEZy
    ZWVCU0Qub3JnPoheBBMRAgAeBQJBJQwqAhsDBgsJCAcDAgMVAgMDFgIBAh4BAheA
    AAoJEB2n28SWxSIfOHYAnA9quQ97rU3eJHb1LzOTpwZVMSDxAJwJnLzSFQHfJu1f
    seG9fTyt5UpBAbkBDQRBI9jCEAQAza9XDZevfbu9BYjDESbKo38SRgyTd5/lIgzH
    IlF+9zGr2e9PH1WOIPr0m9m3LYQzkL3YiUm23UoJO7uhvWvCpxfChwVx3VFwM7Yz
    WqWBV+W27aZNROEmh5KheJACE/m6j0R6UECiRHZS/EsHP8FNG8roWro23ApNR0Vh
    zZ6iVNcABAsD/3glWDyCWMA/eX/YGPw3xN3hkENgruwtWKkK6TW6kYv94k4iD/b5
    bRsmIvGd31AM5/Qv/IQd7epXb2ovDaKvMl6+jAJb1NMCSzOkCnoqcQoKB0ed33d0
    JOVWuA34WCMZ2zHLFEtwuQkHZqmyNQcxRLGLkODo4WWsYNU7KeGHvAJDiEkEGBEC
    AAkFAkEj2MICGwwACgkQHafbxJbFIh9+8ACeNr7M+KLI/eWu6Nig8877cjrEP3QA
    n1Kfo14Pijwx26kysheLFV1jutrq
    =IfeN
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.151. Chuck Lever `<cel@FreeBSD.org>`

    pub   1024D/8FFC2B87 2006-02-13
          Key fingerprint = 6872 923F 5012 F88B 394C  2F69 37B4 8171 8FFC 2B87
    uid                  Charles E. Lever <cel@freebsd.org>
    sub   2048g/9BCE0459 2006-02-13

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEPxAWERBACkn7HyvqMEJbJcf5eSJ57WR4Xoo1PU1GIsAYhdFhDOvmeWRZcH
    kwUyFyol4X3P7RyibrvZwnvc+nrqXqATzVeDHT2NhcTTeG7fq4E4a3VpdqR10uV5
    nswMRw/Arci7vuAQnmHzOYfnNP1ng6qLjA/CUizQ01WakhQeHGtbM9Q5XwCg2GEW
    H6d78/rWY2Lb2wo6cS+9Du0D/01cO9zPg+Mh2T43XdLMjnVp17jR99SuNajqJbBJ
    pNehq8yA6wb3ahZPjKtXpgELu7YI7omxhqcq1mxKvXa262aV72qdWqWoqvZzX0hU
    lOckg6Q6EO7qGvU/jOY02/tmHdzQy6UJzHB7JVsfZ9DGH5xW23AYmbD4WF8jXtyL
    Ey2eA/91IZpxEK7guIBt0FE0qMSCh5VOOlzOQkV+KtLswzEVPOWw/93wGpd/uilx
    jZESPZ70cSWuCWwY15FEFts/gs5gPhCs1h4asQI0Shft3sgQrBhE1/hg2uENccHR
    y1Af75hwezkwFkE2DUXFQqLuUlGu0sOtG+b7+IPrYuaGAB/yBLQiQ2hhcmxlcyBF
    LiBMZXZlciA8Y2VsQGZyZWVic2Qub3JnPohgBBMRAgAgBQJD8QFhAhsDBgsJCAcD
    AgQVAggDBBYCAwECHgECF4AACgkQN7SBcY/8K4dpvQCeMv7yFBMFOPxa8lF15IYP
    8LRYjaYAoJyIupvj/RgaM5zZXZdPUS+gro9SuQINBEPxAWkQCACPOzcRL0LbFubW
    3c8aJODeBG91aQRPz+ndMItFW6/+CW3EmyCGyaG8uxdtY0SOx0yALj4PiSj35s8u
    wqfsWFRuNixODl9lE8ihq4d5qfeiwpcAR9wVNwgnXD9boKXOOFwb70W+9pI/I4zX
    igHFxZQpndROhIFO1RLdoBlB89vV5iX/qzPKHFfmbbIkY4zvAsvW2MCly1WiEC2y
    GT5GJTFZgko5/VBFzb3VDvA0grCGGTbHK1hnfuuvouQPnbuawdSZO2XGMc2pFcKW
    gh+fgdw5Y/oQZelJKhLaL8Lz27buTz2sj5O/cYv5n7wDD/kSnb7+pd//qagox3JZ
    bGXKTED3AAMFB/42KW+FULr4keaGuhAZ07hrNs73Uw3QTTNIUYYOkSJVvgold8RX
    HMP38WANIkHtB3LBaZBxhqAOp2R5AppIPfyDrp1q0lTOGpzWfsQNQd10KRsXZGkf
    K6INVa6kpzQhNDxBUyLh4onp7hZyt9zXdZrfYJLexbxrxkP1LDRDNJJAY29LnVR2
    vyDHPrB6mmgijy07S6yKwC6iJIRoU8w4X3xFqIQ+KcA6VBhXqtqxSjk7GQnwyB7Z
    7l4Qg8iZvX5qj753w6BDEwDtXlCCbocDVsu5xcLRPwMN8BgH7XcYCwmZFEU7IgEk
    RAhqiHsjpnO7al5a+HQJi/KMOs5aDfwdkI48iEkEGBECAAkFAkPxAWkCGwwACgkQ
    N7SBcY/8K4fTZgCgiVDpYWzuROUmau+CUT/UVCatpHUAoIyg/KnHhe9PUB9Gav5+
    /KWhtyRy
    =T2Vu
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.152. Greg Lewis `<glewis@FreeBSD.org>`

    pub  1024D/1BB6D9E0 2002-03-05 Greg Lewis (FreeBSD) <glewis@FreeBSD.org>
         Key fingerprint = 2410 DA6D 5A3C D801 65FE  C8DB DEEA 9923 1BB6 D9E0
    uid                            Greg Lewis <glewis@eyesbeyond.com>
    sub  2048g/45E67D60 2002-03-05

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBDyFNecRBACKn+4b36n2/e55yTfpLXS9a57gQNgx0WXBfbK9LMLf2D8otD+0
    z1DW2eclAOwJVtPftjvYP0HKFVC8Pes9Wvp6Z0sIEPpdkL2NPlUuxXUyh1b92u7n
    Bpt7Uwsom88fnn+BOPrvvPL8Arg3JBen+Jd8o9yRoABCYku8vQF6CEUDcwCgmHJd
    9hZ/kRb1rLdSLssB4VMQ3zED/0/SVm+6XV+2ObXn9FKQpCC6sMSq+PCoR9NzAVRI
    njTtkpyR0fjJZr69IN2E2MWPonv38Xg1tWJnR3fKUOnNqwiVHBQKKrKa9lGWsZQp
    TrR+ihtJ9hC626dCq9JDb1Ls7TXn9ha+d0WNuqiwugto/myHm/GVlCANhGzUuDNU
    Mo27A/46YEAMuhSQWOxgSZ/Z5g0ybgpswVePrxvD4sX2/AVfKClOYpPiNJe+S7YT
    JmfIPkpP2P7v+87BaN/uWgaFmxlhpUOIuat44w52EwwGB+K24cGgq52XncZsYTYH
    SrLitkRtt35tVdnn1v3gmDi83M8W/YunflpeJAgJC0QzxKuar7QiR3JlZyBMZXdp
    cyA8Z2xld2lzQGV5ZXNiZXlvbmQuY29tPohXBBMRAgAXBQI8hTXnBQsHCgMEAxUD
    AgMWAgECF4AACgkQ3uqZIxu22eCkCACfUuNYpGGlFboDl5FZeXlor/k/hogAnjyq
    /Vw8amjEN34PGuqBPQpMnFrwtClHcmVnIExld2lzIChGcmVlQlNEKSA8Z2xld2lz
    QEZyZWVCU0Qub3JnPoheBBMRAgAeBQJA/XNpAhsDBgsJCAcDAgMVAgMDFgIBAh4B
    AheAAAoJEN7qmSMbttnguMYAn14cqGfabS626P1D4GMcSkSagzaZAJ9LyH+vMrfn
    OI2x9+VLyaTSAvm4zbkCDQQ8hTajEAgAmuQukPFaefkzE7DTIgSDIc5vRmUHDs01
    bGp36R7f5GEmXwNtCZ+Mf+H54QSzuNh1QaJ6Nq/iYd35LA03/I7AgUFwSX1cEc/n
    fNjxqS27CAab6nIt9Syb9WAAKUKDMwZCjHBNv49CAPyVVb1aTUCJyUcv1gGSMNHX
    r2bkWpa4nIN4+rqD3hifHCX1j/2XMkmYY8NCVTY52zqO4sCbh+ohAMfYtW2yV2Iz
    z4ngppp0fUbmlGV6DVvTC1Mi61UCDkhO+TZFlE3qXeGlP5GR0SbpdQmPiI0Jpinq
    Zs43gcd2xtiUBM7HAMoQDpyFirDuyDKUgMWJrtJtAwWa4cf4Luh/fwAFEQf/dqpH
    bl48tu+REAPrjk9NWaGVqi1vv0r4LJXo8db9aGxwwAzKXDhwqHo69E6l4/Rd+hsa
    sIJE7vGNbGK+uerTg/W3jot90MqraplXHuS54TjOMyzWSSG7S6ypmDf5YnK3xQE4
    NfTYvC2GxphotkE+QmBzmeft/Mo3opVYlv3OOBqiQoCYB348rXczxEUPam3bFBw1
    wp5XjA0kqYRcUbxNE5AK9c+g6R2c/jT96EnDZDpMRCNZiAKHFLEjtHy66BiVHKvg
    tijWD0kxtlWV8KAKN6OhUpSSsCv53jsCIntNARAVENOKOV0RQVDfJgykeK+3eeNr
    UdIjAWFAWcVOEw5TQohGBBgRAgAGBQI8hTajAAoJEN7qmSMbttngHb4An37mZU8r
    E3SGCAlTJCLV1JxRDXVyAJsFBVshxisn1GycdT3UCwcJVAHJ5Q==
    =bx2+
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.153. Xin Li `<delphij@FreeBSD.org>`

    pub   1024D/CAEEB8C0 2004-01-28
          Key fingerprint = 43B8 B703 B8DD 0231 B333  DC28 39FB 93A0 CAEE B8C0
    uid                  Xin LI <delphij@FreeBSD.org>
    uid                  Xin LI <delphij@frontfree.net>
    uid                  Xin LI <delphij@delphij.net>
    uid                  Xin LI <delphij@geekcn.org>

    pub   1024D/42EA8A4B 2006-01-27 [expired: 2008-01-01]
          Key fingerprint = F19C 2616 FA97 9C13 2581  C6F3 85C5 1CCE 42EA 8A4B
    uid                  Xin LI <delphij@geekcn.org>
    uid                  Xin LI <delphij@FreeBSD.org>
    uid                  Xin LI <delphij@delphij.net>

    pub   1024D/18EDEBA0 2008-01-02 [expired: 2010-01-02]
          Key fingerprint = 79A6 CF42 F917 DDCA F1C2  C926 8BEB DB04 18ED EBA0
    uid                  Xin LI <delphij@geekcn.org>
    uid                  Xin LI <delphij@FreeBSD.org>
    uid                  Xin LI <delphij@delphij.net>

    pub   2048R/3FCA37C1 2010-01-10 [expires: 2012-01-10]
          Key fingerprint = 27EA 5D6C 9398 BA7F B205  8F70 04CE F812 3FCA 37C1
    uid                  Xin LI <delphij@geekcn.org>
    uid                  Xin LI <delphij@delphij.net>
    uid                  Xin LI <delphij@FreeBSD.org>
    sub   2048R/F956339F 2010-01-10 [expires: 2012-01-10]

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    [encoded data, 12285 characters]
    N6+tvj0Maa3l6QlTaeGigknrl0h/ChVX3HMmQ3RdBSkK/WfgrA==
    =A4bU
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.154. Tai-hwa Liang `<avatar@FreeBSD.org>`

    pub  1024R/F4013AB1 1998-05-13 Tai-hwa Liang <avatar@FreeBSD.org>
         Key fingerprint = 5B 05 1D 37 7F 35 31 4E  5D 38 BD 07 10 32 B9 D0
    uid                            Tai-hwa Liang <avatar@mmlab.cse.yzu.edu.tw>

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQCNAzVZoYQAAAEEANP5N0PqWEDO1ml4yfxXCQ+hEhaXyaGyNboh6uLX7uNPXQTI
    9veETXNd20Fu+8yuzVFJk+KmmGerUzduHLXm6q+szHBvEQoJ2ZGk9AL9jj2JjFRj
    rCRsf6mk8SWuL0xDBTu04bZZ2ttNDxNiymNTqdBVZmX6Mdg/T2i3mv/0ATqxAAUR
    tCtUYWktaHdhIExpYW5nIDxhdmF0YXJAbW1sYWIuY3NlLnl6dS5lZHUudHc+iQCV
    AwUTNz0HC2i3mv/0ATqxAQGQ2QQAww0WfeHFmupfTBWWdmNSX9eCDIfN7Wsuiu54
    DgCi7T7ixQa6reIsMAKx1KHNX/GSBr+t3nyHT7N12Ee09qKXywQAw9W2nrdMGE1V
    nENHEFgJtvnoN76U1goANEfZGnLLhyuDoMyZGCZmVG6FiV6EoKrWxfwq+jV0Y9K0
    3AI/Cny0IlRhaS1od2EgTGlhbmcgPGF2YXRhckBGcmVlQlNELm9yZz6JAJUDBRNC
    H/ubaLea//QBOrEBASTEA/9H+78uZl6JvHwGKOXyZkrRCLTUgifJcR3thVfynGrM
    AImheJwqgVP7FQojDk8xBCBQ1b3tpwpeRPwE0V/Dr5MkFLfiaVgCIfMibqcc9zuH
    i4RYcRqKswiO3pFeDMyHiSxylURcHfx73CYijIDyG+HPiCQ4OGd95VJywUzOVddn
    +g==
    =jIT8
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.155. Ying-Chieh Liao `<ijliao@FreeBSD.org>`

    pub  1024D/11C02382 2001-01-09 Ying-Chieh Liao <ijliao@CCCA.NCTU.edu.tw>
         Key fingerprint = 4E98 55CC 2866 7A90 EFD7  9DA5 ACC6 0165 11C0 2382
    uid                            Ying-Chieh Liao <ijliao@FreeBSD.org>
    uid                            Ying-Chieh Liao <ijliao@csie.nctu.edu.tw>
    uid                            Ying-Chieh Liao <ijliao@dragon2.net>
    uid                            Ying-Chieh Liao <ijliao@tw.FreeBSD.org>
    sub  4096g/C1E16E89 2001-01-09

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.0.6 (FreeBSD)
    Comment: For info see http://www.gnupg.org

    [encoded data, 5265 characters]
    =NLH6
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.156. Ulf Lilleengen `<lulf@FreeBSD.org>`

    pub   1024D/ADE1B837 2009-08-19 [expires: 2014-08-18]
          Key fingerprint = 3822 B4E6 6D1C 6F71 4AA8  7A27 ADDF C400 ADE1 B837
    uid                  Ulf Lilleengen <ulf.lilleengen@gmail.com>
    uid                  Ulf Lilleengen <lulf@pvv.ntnu.no>
    uid                  Ulf Lilleengen <lulf@stud.ntnu.no>
    uid                  Ulf Lilleengen <lulf@FreeBSD.org>
    uid                  Ulf Lilleengen <lulf@idi.ntnu.no>
    sub   2048g/B5409122 2009-08-19 [expires: 2014-08-18]

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    L1JhS/1K
    =sCn9
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.157. Clive Lin `<clive@FreeBSD.org>`

    pub  1024D/A008C03E 2001-07-30 Clive Lin <clive@tongi.org>
         Key fingerprint = FA3F 20B6 A77A 6CEC 1856  09B0 7455 2805 A008 C03E
    uid                            Clive Lin <clive@CirX.ORG>
    uid                            Clive Lin <clive@FreeBSD.org>
    sub  1024g/03C2DC87 2001-07-30 [expires: 2005-08-25]

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: PGP Key Server 0.9.6

    [encoded data, 5850 characters]
    tF/cItKqIqZ9RhFcg+IisxgUtQ==
    =g51D
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.158. Yi-Jheng Lin `<yzlin@FreeBSD.org>`

    pub   2048R/A34C6A8A 2009-07-20
          Key fingerprint = 7E3A E981 BB7C 5D73 9534  ED39 0222 04D3 A34C 6A8A
    uid                  Yi-Jheng Lin (FreeBSD) <yzlin@FreeBSD.org>
    sub   2048R/B4D776FE 2009-07-20

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQENBEpkXvABCADnsekA8rnN29OpRPBgLBo2RzYI3b+FCSkPqDatHJuGSfTqFUgi
    2WI8QItI0toqcePNpNtgyHie5jqsX3/yFBRGO1xyCSIEMSbMiOtZZizYLqlLW9pZ
    seNxwHBetogToNoveYHXNGsrptkqir5mx+vtSO5o6DFcDZYQRgZq9NTnKnuJkYwK
    wnujkHcTpUVw9pmnwj6ZxZ5V8fboCzd9ET1SmWH6194tpJ0Fq/HX9qGfF/c6Kl+e
    Hwz7TFi/hpMwsdwjz07SrDi8bumuWNpwZprOzHKORbHfdg3GZaEPcLhF7qjvYunk
    osYrnyUmz7+FpTJVg3u2Pp3eL0xdXU4TuwTfABEBAAG0KllpLUpoZW5nIExpbiAo
    RnJlZUJTRCkgPHl6bGluQEZyZWVCU0Qub3JnPokBNgQTAQIAIAUCSmRe8AIbAwYL
    CQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJEAIiBNOjTGqKQTYH/3kkQL00ibVSNCHH
    2VNfnV9tyIDBIorMHFctEZ+zTQ/mQRxXUS3gpD9pg4nYNJtrstIWxH9Y8GxDTjQ/
    pJsVbZ6WcYXANwihoH1jQetSR4ZZDLrVynSWQ2WeYg0XEedKxV6ZmxZQPAbN742o
    T8ehZpThFSaPVDtIYFh0eVnPkwsmR/mC5DQDGkwb2p2bsxdbkYCWLLRiS5buGFyZ
    iHZSe+D+mRJq5kxZriy2pSXcQUlqZk3jvpC9mXr8QzAwyzbPwHRak5NNuQxxCJGh
    CBDzTSB9OsJrLd7WOxISii2k9ZszP69EymO3wTpSnoCPyUllOsdMa0291xv8kw0c
    3ytWz/65AQ0ESmRe8AEIAMYk6s/25zGN9qnfbTjwtxPD2/K5AeyJaQ+kZ5kiOZqn
    DlpMawMccq+yvh25oX3j0NUug4j35FKFZqnzpLx4KizbJjhZX+V826lVsf9kx6mR
    UmpYAlOb1qQUZMuR2+41eVnuieAqNyFH4pjp2zR6mhaoI82a1AMeOdhVOLfTl1+Z
    mj2sL+1J+fkcBxuhMEC30elVKxuQo/8NphZlnZe/819Q3HDsuw2mEiQMWH2y/5B3
    aSpm7/LY/L13YI8oUNWZrvjJZYSYyFyhDryzkP60251Dhfwlu2792Jt2Y4dm/zVW
    Yi/QpUdoPLRqEQjipiBg1sWLH1UGYys4muUxBoUQItcAEQEAAYkBHwQYAQIACQUC
    SmRe8AIbDAAKCRACIgTTo0xqimB4CAC9MJzYzpUgnlhh275aZs6pXJnK9dty7HpQ
    zJ6UpoR7oBcmYivlAXaFBB0jxsAAzu3wKXwC9IOZZAB5y9keXWkG/2zdutJJ687a
    HAjXUUPi3QIF1uPGgvpEQPNfn+Gki8c3B/QOCVhKg9UEtewRzT8tZqCubeZLmc7L
    NbNX5xOta92KD29XOCXX+6htRJ3aBTn6nNzRdBpuVxKhzd+eLg4gRMKJebDfDXrG
    fkDmHta2l1EdhlLxyLCvLd0x0mMGS9rMBuEaTvc5hka6YsM7hhGMZe//CjCO8mGl
    CZyUepEymoFG7nCPpMTgZFxCHzOOljsoaEeOxg6aS2kNv2sTcDkJ
    =cF/N
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.159. Mark Linimon `<linimon@FreeBSD.org>`

    pub   1024D/84C83473 2003-10-09
          Key fingerprint = 8D43 1B55 D127 0BFC 842E  1C96 803C 5A34 84C8 3473
    uid                  Mark Linimon <linimon@FreeBSD.org>
    uid                  Mark Linimon <linimon@lonesome.com>
    sub   1024g/24BFF840 2003-10-09

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBD+E2XERBADU5F4DbwP8KaHN1H+yz8zaPjOSLJushNA8Qu0hN7GXqd5vgRDc
    zzzeZIzVVxPVdrQ+I24UwSIYu4ww6nfum6kRv/i5khxbYM4zGGPG7s5pmqIECum1
    tKvJ21IE823lcJtUp0C4qhCTZvoc3lADMn9cPgOSJClzHjAYDasOTy9hhwCgsTqP
    aHntu6Uj3BYpurWHJSePWrED+QExF2asNPehIOZ4l7dwpaeGSTxeINH1FYnlF+J1
    N8lvpFQ2H3sfSViVgAtqM27Y/jOf3EkQH0Wym0iCczOxEUFbNH5NWAm6IOVT9owo
    tkh2PZgyfN0AJZBPh9d/oMN2MEKPb6wcqr3c67ZmQG7B+LGliBSVYhWDbd6E2YHb
    bvKVBAC0pL8fzNldEQUUYDTTrWhMVCr7IGzwrd6cEhIZ6b5kqQd1IsIChVG3jCVL
    wWGSgmXY4J7i4Ujsx8k/f6CluNLwmP5t9caycz32QdJAWkzQq2x4AQUy56HDbvui
    QFOqD+PGWqvoUUyJqLbzoASI5dcV35OY+m37Z1Wxhsn22WBE0rQjTWFyayBMaW5p
    bW9uIDxsaW5pbW9uQGxvbmVzb21lLmNvbT6IWwQTEQIAGwUCP4TZcQYLCQgHAwID
    FQIDAxYCAQIeAQIXgAAKCRCAPFo0hMg0c5j/AJwO+VSVExRY8saToDKF3hVe4wNE
    EwCeKFf5ysZjQIJY3pJ9tUzm8o3tX+i0Ik1hcmsgTGluaW1vbiA8bGluaW1vbkBG
    cmVlQlNELm9yZz6IXgQTEQIAHgUCP4yK4wIbAwYLCQgHAwIDFQIDAxYCAQIeAQIX
    gAAKCRCAPFo0hMg0c8c4AJ99m0hHLctAVXjfZYurZBnl2dUL7gCgiG83BXm30rBa
    POtWm2AstMb6uVm5AQ0EP4TZcxAEAMQPPoRMfBR3cRc/T5NsWunFlZA6nB+3BkVd
    p0ham4FoseEh7q+hqa8udARMpTc4LIIL4FU6lIa4L0s3Z77d4bXfJmwlUHuUMSk0
    tnG003D4VDBc3HWSSX/W/CRyN+OBxPljJywTjI4goyXx9Lc31qwpGqYy5Ao8X6EA
    TT9g3IgzAAMFA/wMgON1JxPGr8MSvSLHLMY/xn2PR8lSVZmOlbhNE5hL2FzyFME+
    Pnc8hR31cohFjSXR7hb6SOWrZjYpdIVsa6qdqXIRDbcb5sKEGv9959W8yt+L/kNr
    RlN3oExA2pkYpEQfLpH0HdMmbU61NR0cI6p4ZZly4p6JR0kEajaUOlq/cohGBBgR
    AgAGBQI/hNlzAAoJEIA8WjSEyDRz9lwAn0pJVzrxxaB/PqtJsu034bH5PnlDAJ9G
    axdzE7A6F/UPmrURep9QFDq70w==
    =GflG
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.160. Tilman Linneweh `<arved@FreeBSD.org>`

    pub   1024D/807AC53A 2002-06-03 [expires: 2009-06-15]
          Key fingerprint = A92F 344F 31A8 B8DE DDFA  7FB4 7C22 C39F 807A C53A
    uid                  Tilman Linneweh <e0025974@student.tuwien.ac.at>
    uid                  Tilman Linneweh <arved@arved.at>
    uid                  Tilman Linneweh <arved@FreeBSD.org>
    uid                  Tilman Linneweh <arved@inso.tuwien.ac.at>
    sub   1024g/FA351986 2002-06-03 [expires: 2009-06-15]

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    [encoded data, 95160 characters]
    /DCnBQED8w==
    =lqQ3
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.161. Dryice Liu `<dryice@FreeBSD.org>`

    pub   1024D/77B67874 2005-01-28
          Key fingerprint = 8D7C F82D D28D 07E5 EF7F  CD25 6B5B 78A8 77B6 7874
    uid                  Dryice Dong Liu (Dryice) <dryice@FreeBSD.org>
    uid                  Dryice Dong Liu (Dryice) <dryice@liu.com.cn>
    uid                  Dryice Dong Liu (Dryice) <dryice@hotpop.com>
    uid                  Dryice Dong Liu (Dryice) <dryiceliu@gmail.com>
    uid                  Dryice Dong Liu (Dryice) <dryice@dryice.name>
    sub   2048g/ECFA49E4 2005-01-28

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    =No5H
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.162. Tong Liu `<nemoliu@FreeBSD.org>`

    pub   1024D/ECC7C907 2007-07-10
          Key fingerprint = B62E 3109 896B B283 E2FA  60FE A1BA F92E ECC7 C907
    uid                  Tong LIU <nemoliu@FreeBSD.org>
    sub   4096g/B6D7B15D 2007-07-10

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    =nL7g
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.163. Zachary Loafman `<zml@FreeBSD.org>`

    pub   1024D/4D65492D 2009-05-26
          Key fingerprint = E513 4AE9 5D6D 8BF9 1CD3  4389 4860 D79B 4D65 492D
    uid                  Zachary Loafman <zml@FreeBSD.org>
    sub   2048g/1AD659F0 2009-05-26

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEocVOYRBACUSj+Rt8ZAKD0QoT4yHgh+f74lmw0pegpzvQ1DNBhGdVWfIM77
    n6hK4QSYPhSNT/Zz6qqsZlcnuSyXwKDcu82rOUJmo44UalWbWF/wvz4ICuMMttCy
    WRko6Z+lfzILBr+simnAUX2v9mIxfnkg8mEN5/rMc4rOda49Vbcdc0aFEwCg4/or
    HctUnKwa6r+ArXlZ8bxLX4sD/2A3JzXegkrD6LOwGA/STqNhuolad6ZZpvJGpr1n
    gsYX5ihLaYuxBBWK1ech3Rm8GojvsOpmcc5YTtjb37n/YU9WYoKcmpJukdEYNeSZ
    BQPi7jVXUb3joJobOT1LFYjrOX8/MoOgIxPI7RBM27G5Uarxe0RpF8r94bUxEqMb
    SkgHA/9KqKfxHB7suexO993OtM4fTcnJjCfarcL8qpBOQlYLAP2Q3IGZpjE39Bmy
    tnDNwrZ/8jZrJxBttZ5Fjt01pvMAEpFVHm+QNheqBOqpyN4jmyOsvmSjd4YL5ZZQ
    hUhuPS/dtInONvWvBmOHBsoKdrgoUPO2EuMW1pCm/0i7xHGCtLQhWmFjaGFyeSBM
    b2FmbWFuIDx6bWxARnJlZUJTRC5vcmc+iGAEExECACAFAkocVOYCGwMGCwkIBwMC
    BBUCCAMEFgIDAQIeAQIXgAAKCRBIYNebTWVJLe4bAJ0Q8l/7TIpaYFGoaHUkv/YF
    VdcR/QCfVOdEcCe3gPZ2k5KLC1D8V4ESKue5Ag0EShxU5hAIAI7OSBr9s4l3skaB
    +lVNxA/eEkigb0ghP+OoLVRvd7k3LZpjM27jqMhdmu/8U9bTRTX6kA7Ur7uRF1La
    aSrc6unoufkWcm+w7M9sQv1vwdxOg/D9CZttjMxNJs18VRQokair4OAR9mMXybMT
    hBw3H8B+H0AZh7eLTMXUX8q6fc/Dy7u+sOq6fnCY3vIVUUDaw5XaRKI/mWDmQcMa
    4hB79gvNxHjCs2oF5ntyaCF4nsggmZ2guOjN9oBoo6gm09QFlVA5Nwz/g5s84m0t
    Gtz8sGSPK339kwaT2Tym6yR8UszENlyjG1wVVaQhBPHvE706jOlPXc2JasNKoSqX
    Flyj7icAAwUH/0z2SEPs78Ws3eZq58axkafUowgB31tEM9Ke0jLNy1nGkcC+poyh
    Shl4DNyUbLb86J4FrkFa7bmJi8VHteZYjTxrY9usKLKGkbZV8qNd8ry1emG0Lx2g
    JM5jcRp6ghT2qufHF9PukKwkmNRJJgvAbgSgLi9dWkMymmpo0LsKfKmnoVCy34tV
    704K7JOOBHob6Gi9vMXLYkBUPJCn8BALbZi0WRR/D5bB+OHucjJpEp6lHXYihkX7
    xgSyrzkI2fvDLmJg6/jmtsrQwJFScf2E24IWO5JGLRsuqoE1UUcnmqQKLZ+iH7vI
    fSYNaY/TcB55V2TmpzpYmkGBgI8G1dygrAqISQQYEQIACQUCShxU5gIbDAAKCRBI
    YNebTWVJLTvyAKC5FWGAM6MJaj/cNvWfkdMFaZqAGgCfaktgPFqyozZiZQuoJM5D
    +FztFoI=
    =isE1
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.164. Juergen Lock `<nox@FreeBSD.org>`

    pub   1024D/1B6BFBFD 2006-12-22
          Key fingerprint = 33A7 7FAE 51AF 00BC F0D3  ECCE FAFD 34C1 1B6B FBFD
    uid                  Juergen Lock <nox@FreeBSD.org>
    sub   2048g/251229D1 2006-12-22

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEWMWfERBAC6P55NRPt7PWHQk3e3cp6yAYpxsNH4TyMZUNKFjE9E+g4GDe1F
    fd1ebE/as+qcZ7rnIoEqXMYyXW/8X8kdE7FJVoJBmH3RdlaJhHSxogrAHZJ87PWH
    yGC4mP7F2zvLjUqB2fUC6gYUJybmYi7F6run1zPKLr5A5Polx/SpqL52IwCg/5Kq
    vo2Lc3ceBT0L5BKOWFLHBWMEAI/OIOXhv4Hsu0k0Ol+Zdwp3vkw+geBo0MVHp0/P
    XItW5TM5Xi0iqQAcBU2KmPKUinaIJEEPAat5sPMZ/0BUsdmhlD6BqIp0qC8LXm9g
    Tqmenm3WpiJPsd486lW6dxzFqOZKdb6qq87SJ7ajnPB12SykRW26VkyHzNCqiETL
    LigDA/sFPsm499ccL62BwkRGax93iYylhsrV7zXT8FXAPIS/S7JasvaiyHTvRv8K
    u9XSO453WZtzN7TkNp6i3Vw1SSxbrwCRZZ7nspEdMXWF9ZdTtSq8mpA3R74X7dKM
    SXPbbsTFfQ5JR9v8x5T201nFiM/jPteU6WbfyQc1MuMCUqwzm7QeSnVlcmdlbiBM
    b2NrIDxub3hARnJlZUJTRC5vcmc+iGAEExECACAFAkWMWfECGwMGCwkIBwMCBBUC
    CAMEFgIDAQIeAQIXgAAKCRD6/TTBG2v7/bkFAJ9/NodQJ3G3mLhNkT/rv4ncgpOV
    KQCdGm6jx53ESn4s8YJAPKWgym0AKTq5Ag0ERYxZ/RAIAMR6vbusFDGVMpB6AWhC
    cru/N6Qz/kfB6+Ufy2nXcYMMaD2c4MiSUSV6pF08s+xx8oqh6DiGdPvdJQ19ZAdw
    BJaD3tc2EeIv7Eh0upHhC7CuRk3eHHd+KaKFquLGU4HNMEvxXkW+DZ0wWrbVIu0N
    vRBYXJlil7B3RE9+9yQLdoK1IA/N7DtUvbezVC3Px/ZuNe+cnI5neXZVnm9ks9E4
    qlghKSdb2LLghwfBy0JRqssZnvvqS+kRz0LJgKIX57pSrHfx0L5Rwu1JWqvmWKYV
    hkCogZFXpn31ArmmJ54O5KEP4hYNR2FcF8hwNjMqfij29QRi7xpxDLQYgUjM/kTl
    g1MAAwUH/2TJn6E3LtPX7ceMUKVyJRO/OsS7/r8nX8hPRmX/cnnoHTtYOQ1S2F9J
    0IFTZKubxfyhp9ldRx55GiDWyRvGhhjCOuUH7VCSPMCURbMOHi67EDfqbHPzhKcZ
    1lmeqpETmPx4SbVQ9vQ1802gsyZzNy3BQcoK9GIw1Bg6KLYVQ/9rcSDHAB+ULVF+
    YkthjJcPDQPdcn8Zy+xGDuciav9HPaeRXK8nXvx8ERDti99GiuHI/S5+t3wDeTPT
    dZuMiiJYsVc3QuuEN4eMseohFUX6R/Mnm2L0qFc43k3h0vmOoTu65dMEnYZdsKiI
    wXTiy7GaMXH69Iuq9QK5wAQGHwTDbJGISQQYEQIACQUCRYxZ/QIbDAAKCRD6/TTB
    G2v7/Z/1AJ9MfhLFFNtQHDgvIwjgQa2xJX+N5QCfQKUy9vBwNhrVvrH86hoDMhjV
    d1Y=
    =E5fg
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.165. Remko Lodder `<remko@FreeBSD.org>`

    pub   2048R/6EB8C8C8 2010-05-28 [expires: 2012-05-27]
          Key fingerprint = D692 91F9 F4EF D363 7F3F  4D17 9C75 DF7B 6EB8 C8C8
    uid                  Remko Lodder (Remko Lodder's Key) <remko@FreeBSD.org>
    sub   2048R/011C6AA0 2010-05-28 [expires: 2012-05-27]

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQENBEwAJnkBCADaaSUOhXEQBlgiLmwmq2FKs8cSBc1KEWj5gZLLs+Fh53+rquTB
    yqCP5ZOcP6BozqjbHia/6TQJDgvMTtWpRuLOtdTK7DyMyiHAFMp6TUuQHpRMun28
    rjGcntGi+uoaUk4gUfY1vSZUurKTAWiQH0TiD35qu20PcHhKysNpGqCTtnJF9vYh
    ikZvwbEx0mXBfQrD0tp6A/wHNSGZ0dkobwTDTBsw1Fggqaljr2NJBJIzEUtezYbe
    VR0bquobnRRiFoyEYL5BhyWtXgHRrJKpsx+XoxNK7df6y3hr3uWj/nshx0JTfSxO
    Kp2jYuZhHSjOPpDIe2vsod1Qe/XpSJ60Yp37ABEBAAG0NVJlbWtvIExvZGRlciAo
    UmVta28gTG9kZGVyJ3MgS2V5KSA8cmVta29ARnJlZUJTRC5vcmc+iQE+BBMBAgAo
    BQJMACZ5AhsDBQkDwmcABgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRCcdd97
    brjIyJZ6B/0ZKYS5Tb+OI6QRgLOOwv3yoBjgrXCsJ8Fcqa2+gJ1MfK0NZeiofiZQ
    OhH9tGvt76pva8L1LiewbHpRXtbA9DMC7w6eBgECSrud7oGuE+Yd4kOPo1yc+qWQ
    DWBK6OS/MkfPZS12/lNYqxg5EXR3wesaEWPfrJ1VPC3GzRngV2zKxahmoZ4LwwNj
    m16QLg6jf4ltLP+5TPQnIM1ZdBpkOVweegsXbvxhoJUT1jVgueG9F2DuVfDAefKq
    y63IZu1MqendaXCiU5HTnIsGndu6CR89gxMAT7NrjqTN4vp4asOo50Jr91yc4HbH
    CK1shMzwQyWnlSx1/4bYw4iUuVvy0bwruQENBEwAJnkBCACmI3KaRWkpVcxrpt8g
    9LruHRBe2qr6SiuW2kxiUYFJuizKWELVhU1mgBipEsA1T28CkRfGL4LFuG2o3fR0
    5rkEnv4IV8WuYITvleJGbFRr67jfKkZVc/CwfLFwtkTp8EbXQquiKQ/k4eIbM1XO
    wRLdewsUjTPBaml6QjcPYluV+IUmEAbckx2UkN3YKef/DSg3AeCDqSWDGxCz59Vj
    9ia+jiZ22lvLqhNX0iq8sS9YE5N6rW52Y5njraclfZ3qY5FuXNmbzalVmFcRd1Vs
    o2sGGMd8P8L/GLeIwYNVFs6qcwmna9nl+xP6LxYxnJGjJBJF+8FcRA7FTaOARdbH
    9Y9lABEBAAGJASUEGAECAA8FAkwAJnkCGwwFCQPCZwAACgkQnHXfe264yMhjsggA
    taUN/S4of8EB+JV4srLho7s8Hzk2UK11PnWLplIyTZKmJWYTXHQP0L3hL93IRC5I
    Y5lG8bd2znMdAQrGxMxIOKKtYOBCxk6ph0xX4QYDsi3Vx5l7wDPSqCgX8DTyxgoS
    LK6wuLipVtg/dypNMiOJRwcGEKH0SvLjl3klCAK/Q8lEo6K9P99J0LvonBHsSl/h
    7VBH5TKJmuWWBiX9fmFRNE7iuK/dqSgT5Bu9iqlshloQOALofchAKVm0/2B//u/C
    Tb/LgkD2u5rFiqe+Cz9LWwF/CdjRM+1EXwL5C73gTmUkI5tT32cmgRWDlS3gFT1E
    2JwvVAHif+MR5Y2RMTMdyQ==
    =H/lo
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.166. Alexander Logvinov `<avl@FreeBSD.org>`

    pub   1024D/1C47D5C0 2009-05-28
          Key fingerprint = 8B5F 880A 382B 075E E707  9DB2 E135 4176 1C47 D5C0
    uid                  Alexander Logvinov <alexander@logvinov.com>
    uid                  Alexander Logvinov (FreeBSD Ports Committer) <avl@FreeBSD.org>
    uid                  Alexander Logvinov <ports@logvinov.com>
    uid                  Alexander Logvinov <logvinov@gmail.com>
    uid                  Alexander Logvinov <logvinov@yandex.ru>
    sub   2048g/60BDD4BB 2009-05-28

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEoeNvgRBADOJSDLfbgPuLl4Y1QO/1BjX2MFveYtMacSLpaJURRewkBmoKBz
    iXa9a5A+uKiQTtX8S8bnkvwmpzEua8RMWUN/XXb8aZc7DPcZbP9NFNaNZ8BLgnLC
    FK1gIEpJpcodAQ0K5HAGiLwjsK3RdM78pvDUJDDmWPaflk8llx4H7kjjTwCgwIRy
    /8f8FHQV3zUIGqmJDt5019cEALE+LTHjCOZkk0YKqVETY7IAKX48t/o3t+ybkqcC
    zFYIRA0v7FR/ipxkNgSzi+tKMaExDuFuV9aZEhepS54eXriXyGmzvevINlHlFgh+
    60WrUGIlkVtQYCW4EeP7kB66u6uV6PnKqFUXPLoF7MDg5nrJqaX7r4+9d0JopClN
    1L52BADKV1retnbON3PP460z4j9IJspst9n1AZ3y9S5ojZ0IvhL9UsjazvRheTCm
    fArizJMTtDUo9SxWXCtpfxruYJSB5jlhkZFMC1oj484mxm/MgNxJ8mov2RAT1Pu4
    85PjDNtAKq7yrTf8x7PbNVpoJkU98lZQ84Bt4RbaqechA3l/l7QrQWxleGFuZGVy
    IExvZ3Zpbm92IDxhbGV4YW5kZXJAbG9ndmlub3YuY29tPohjBBMRAgAjAhsDBgsJ
    CAcDAgQVAggDBBYCAwECHgECF4AFAkoeN8wCGQEACgkQ4TVBdhxH1cBPpgCfYR9i
    yz3P8GnzGKzKacDhYSSRdlAAnikohHSQEqzFyKimalh+Vk+yv1mutD5BbGV4YW5k
    ZXIgTG9ndmlub3YgKEZyZWVCU0QgUG9ydHMgQ29tbWl0dGVyKSA8YXZsQEZyZWVC
    U0Qub3JnPohgBBMRAgAgBQJKHjeCAhsDBgsJCAcDAgQVAggDBBYCAwECHgECF4AA
    CgkQ4TVBdhxH1cCloQCdGWWbAGInaDd3AqGI07kIeHUfZjMAoKmujjBeu/1n8bsO
    OwUIcOutIiBRtCdBbGV4YW5kZXIgTG9ndmlub3YgPHBvcnRzQGxvZ3Zpbm92LmNv
    bT6IYAQTEQIAIAUCSh43kwIbAwYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJEOE1
    QXYcR9XA8FUAn2F8Y9LTsvK/GJAMU2gboZY1DCxnAJ9XnCdD3w7uQscd+sqIJKuV
    KlYsDbQnQWxleGFuZGVyIExvZ3Zpbm92IDxsb2d2aW5vdkBnbWFpbC5jb20+iGAE
    ExECACAFAkoeN6UCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAKCRDhNUF2HEfV
    wG/MAJoDJLimxPsysGqpRWMYb36855NBLACgn8ICeVtfyqCoxAv0YIYk3K0M9we0
    J0FsZXhhbmRlciBMb2d2aW5vdiA8bG9ndmlub3ZAeWFuZGV4LnJ1PohgBBMRAgAg
    BQJKHje5AhsDBgsJCAcDAgQVAggDBBYCAwECHgECF4AACgkQ4TVBdhxH1cBWygCf
    fvEVUFOSzEPylUJMZt2NKaiwomQAoKY66bHiWUIReF5NliBlsM3bv5qyuQINBEoe
    NvgQCACVC9Ks/nhrOVuHu9rj52KRW5J7S+20ZOZFOb90iVFCwFSn3/TstqGnao9X
    NQBiopv+i5s5AdmVjUyHnTSMggqVGfxltgG6ttxmY+iU7N/+aIXkbPzHZ/qZgKv5
    ey5MhS+kFV8Jh2IGV6beaQM0KNJ9LV9Hq1+V4ae0ulaGYFrNnbwI/rdXZ7vEETCF
    EVM3NP6xsgiw1NQ/V6b7iriTroeRytu7XoRlchik/7sQBLBwUvIVAD7BdHqjQ1NF
    SILyTr3aPagu1CxARmkCCDX2sfcqT2/9wVECubbgcUMRjVHm7k5BsZK7fGmHcBZg
    /5Rl7ngtUYwsR4h47A0aH4IPZ7AzAAMFB/47qL+Rb4wqF+sCWM/QqCrgFqMwz1JI
    qc26U0+a6bZ6kJBbMzvBcdrVFRfn52qacCdfFpdI6Yz3fWQyzrAZwqjCTPaGBeEd
    rSVbonW5dDjJTkSiKMlo53D19PcNklSjFnCrPeF4aFQ4VbT3RioWh9P00xhCHPQB
    hsg+cU9rm5ZASMht3K+k+bgpHT9gPVzckZTC73l3xaNetTDnHlRDw8ATvBYcUfYr
    kDp3tgkZ7a1pPRMz1oOKNWtxW5Z07HLj0Lt2xyZDe0BSImiAa7MYC4PKLi5VlDKB
    GPjLDrM9K1XUM3Gp8O3bd5qjnsueu6XOdGZA93g4wjXmzDqhFIXy5T69iEkEGBEC
    AAkFAkoeNvgCGwwACgkQ4TVBdhxH1cA3KwCfV8uCW9P5gm0+Dfm1miO/j6rvexcA
    niBfAchAUVjJn+UKjAd5RD1SFTAm
    =bSSP
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.167. Scott Long `<scottl@FreeBSD.org>`

    pub  1024D/017C5EBF 2003-01-18 Scott A. Long (This is my official FreeBSD key) <scottl@freebsd.org>
         Key fingerprint = 34EA BD06 44F7 F8C3 22BC  B52C 1D3A F6D1 017C 5EBF
    sub  1024g/F61C8F91 2003-01-18

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.2.1 (FreeBSD)

    mQGiBD4p5ccRBAC+tbiJm4bc9dO8oaRhVGqWmNhYfi2GnX4AM2h+L7bcIU/7jWVn
    uWGe/PFHDcuOpEov/XRw1gmgoNh2DopTxf363DVMevmGW3R1842YMmLvCYZ7C0Rd
    0GdbHW1xXeRSygs6peLcPGQ/7ISK0BHMudFim5FrpD0tq3qrqRmuGgls2wCgyF37
    u+ZoP3xiP0wANhoWJtyBWQEEAIeYSHvIPKFIo9FG/+wckx9Fc+hLXPKwoETBPof7
    Wft9zXiYyowuGj6/ydb6v229nI3lJwVPR8X6Ptjf6rO1vjf7uUED9dNBLr10vdW6
    jYClBT8lqJAq3DzEpDk2kOlhYwtrykyld9Ys/7vgliuBB0XRUxGVNieqDck7PZWL
    ewz5A/947m/ZrlZbn6+jsshGk30/pEXZUhcDnUBwW26GuFk0TGlXBha3N0NFwqz3
    a7qnJcvSTKfeZJY5NCwqzCo/rLpmaNd9JCUrgwSd1MI9Txrbj3lDRy5dj4FZBQ2N
    BVgni7SRKaiPw1KeEprSOR8yiM9ZjbV1g5zPeZ2bZhSMCP7mdbREU2NvdHQgQS4g
    TG9uZyAoVGhpcyBpcyBteSBvZmZpY2lhbCBGcmVlQlNEIGtleSkgPHNjb3R0bEBm
    cmVlYnNkLm9yZz6IWQQTEQIAGQUCPinlxwQLBwMCAxUCAwMWAgECHgECF4AACgkQ
    HTr20QF8Xr9fvgCfUMy+qlN9qQtwMFAKWViSllk0xYgAnApLMv95d6Ecrj7+U9Et
    liAwNQXWiEYEEhECAAYFAj4p8nkACgkQtNcQog5FH332EQCghR98TNpvYGdrsg6Q
    S3BngO5n3VgAn1zo89iPy8VMP/kXq2jlzs/74+i2iEYEExECAAYFAj4p9igACgkQ
    2MoxcVugUsOwsQCfY34hwJIc8MapwIy8fWmCeLs4T0IAn0aVpewWF99H6SapelNP
    hvDzTYLIiQCVAwUQPioA7mVgqaw0+fnVAQEUHgP9EJXxzQlkaN8VsfRJo/UFmC4z
    wGkwu2yatUjMSZR58VpS9rF6CH1rzmNFtZZmIh6ItQ/mPaUDW2yObWBRL2r9vkVx
    e+DPcpcZAebM3ibjsOg05cftcphv41rLak0C2Nec3MXnxT15O7fcO6aO+d4oJ2Yi
    oL7YJX6RHrqNCTQn6/65AQ0EPinlyxAEAIGtuZXdf7K51Gb9jijgdV1NMPKwujoq
    K9f1PZocpDve0vwXN6AvzJ1L/LTrZPvBZ0UCAJR/zVtz4H2bnSqalbd8j8bmxfYx
    0SA3QNAKJhgBGNlnK4HvAGJCs8oXYp+6Ph9WWlTcPzkfscPFc42VcUEdfL/5kyLr
    OvGAUW6D7iCnAAMFA/9CWXarz2QMrkduiasc8bhSmv2lVOfUVcIdz9imc72Z5GUk
    FBiQJ2kuqJrxMUqAgoccnJ9R0QVZwCaQyRNakEQEcENBKq9Haa5LLo7nD3CAiqIi
    URqloJORSzXoQCrw8OelbBp9RaEqVdCecbNqAbA8Ru4NIwcyZCgvnX/bUTKq54hG
    BBgRAgAGBQI+KeXLAAoJEB069tEBfF6/XBkAoJtQ4ECj3ntS2xlODgB8N+cKIsdb
    AJ9Lwk2EEIZhvzhwvhpwIKAhWhHcmQ==
    =C3Jv
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.168. Pav Lucistnik `<pav@FreeBSD.org>`

    pub  1024D/C14EB282 2003-08-25 Pav Lucistnik <pav@FreeBSD.org>
         Key fingerprint = 2622 B7E3 7DA5 5C53 2079  855B 9ED7 583F C14E B282
    uid                            Pav Lucistnik <pav@oook.cz>
    sub  1024g/7287A947 2003-08-25

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    =Jmz+
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.169. Rick Macklem `<rmacklem@FreeBSD.org>`

    pub   1024D/7FB9C5F1 2009-04-05
          Key fingerprint = B9EA 767A F6F3 3786 E0C7  434A 05C6 70D6 7FB9 C5F1
    uid                  Rick Macklem <rmacklem@freebsd.org>
    sub   1024g/D0B20E8A 2009-04-05

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEnY+RIRBAClGSwgcIr4i7G4CYEa2cBHRC2UOB75/AXFqxmzAOcype8WInbX
    f4xLBa63VMoM7eis27BouVRcHI64oREIL9yvvMPwRD2ZINY5UD/zkls7fw9F2NyJ
    AgntQEPRDkk14AEiIX5uvB3l+JyKmbMNpJuhrKpbxc5qvaDTgD02y9TurwCgguAy
    pMVQu2mtVccXkSb7WEh95SkD/0jTFzDTcuowbxALrPgQtlGEXo7RYLPIFxTI748F
    h8Tgra3flWp2QPAnWBJEzrz+9rl8wqQ2ddb9IydwtY49BjKIrXhj2Lh+8l/1oDKr
    RXzRbNH/lGHhmphW42DgM9mOCCoSWugUEu458I89FjuoncdBiDdi7HUxPy/rZ5MA
    tnRRBACWL22M5MPfD9dl9SHvnoBz47nwlBeg0Oxl22oNfiyTQdJ1q+g/wGpDPAll
    eqs3Svky7gj+f5375K/DEYaeFSRynXeetpdqpkBDlp4mRdDGcpd/4ImAx6deQTXo
    EraidVlZ0Fjr5cP+mFzoI41LAhTJa/VUoUkMxq+gJAsXsSF39LQjUmljayBNYWNr
    bGVtIDxybWFja2xlbUBmcmVlYnNkLm9yZz6IWQQTEQIAGQUCSdj5EgQLBwMCAxUC
    AwMWAgECHgECF4AACgkQBcZw1n+5xfFFBQCfbFJpzSEXUgmoEl4RBgoPNzu9SOgA
    mwW8fBCx0RDGfho/8S/PjZLQ38JCuQENBEnY+RYQBADMlW1YS4ZhBh4PCOXTJsjT
    Vda2DEn1W+2BzZw9j/DFAFjm0U05rlEsfz584Y/SLlPNbCZ979//3K7XxicRw7zm
    E1Mzahy2jrmGGJv2GfAZ+YyJPGA/xndNA3/ocT1x03LMWNbZwFBe4Kk5ShoqPgl3
    cO28w3TJUnrUZyo+h3WhpwAEDQQAkwVB18LmtI0CW4H0/jMgiz5B0z3yZdlinbif
    +EEFHhhdp1tXtxA/jyp3FsW7hOlGXQi/tACcxJ2UBcYAZh03+x7bUMnJpisPDnJ3
    UilCuwk5cAkQmGeAQ7ukNNBwVhJ0ZfW7p2lZ2RwW7zSjPK7RMW1EL4Scwpey/ojb
    Tv9fVXmIRgQYEQIABgUCSdj5FgAKCRAFxnDWf7nF8WUfAJ0TTs+DTEkwHeE4mHAA
    CqfpXJXMhACggkoKIIAH+lHNqv3Uy9q5RFd8t3I=
    =F39a
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.170. Bruce A. Mah `<bmah@FreeBSD.org>`

    pub   1024D/5BA052C3 1997-12-08
          Key fingerprint = F829 B805 207D 14C7 7197  7832 D8CA 3171 5BA0 52C3
    uid                  Bruce A. Mah <bmah@acm.org>
    uid                  Bruce A. Mah <bmah@ca.sandia.gov>
    uid                  Bruce A. Mah <bmah@ieee.org>
    uid                  Bruce A. Mah <bmah@cisco.com>
    uid                  Bruce A. Mah <bmah@employees.org>
    uid                  Bruce A. Mah <bmah@freebsd.org>
    uid                  Bruce A. Mah <bmah@packetdesign.com>
    uid                  Bruce A. Mah <bmah@kitchenlab.org>
    sub   2048g/B4E60EA1 1997-12-08

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    [encoded data, 30485 characters]
    vUps4fdR3nZq/MRKTsIAoI5BR4LrbaOwqe1M5HlH1W/jDLIp
    =D0KC
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.171. Mike Makonnen `<mtm@FreeBSD.org>`

    pub  1024D/7CD41F55 2004-02-06 Michael Telahun Makonnen <mtm@FreeBSD.Org>
         Key fingerprint = AC7B 5672 2D11 F4D0 EBF8  5279 5359 2B82 7CD4 1F55
    uid                            Michael Telahun Makonnen <mtm@tmsa-inc.com>
    uid                            Mike Makonnen <mtm@identd.net>
    uid                            Michael Telahun Makonnen <mtm@acs-et.com>
    sub  2048g/E7DC936B 2004-02-06

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    =TuyI
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.172. David Malone `<dwmalone@FreeBSD.org>`

    pub   512/40378991 1994/04/21 David Malone <dwmalone@maths.tcd.ie>
                Key fingerprint = 86 A7 F4 86 39 2C 47 2C  C1 C2 35 78 8E 2F B8 F5

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: 2.6.3ia

    mQBNAi22tqgAAAECAPARUB5VpJvYQyHAzL0WITkJmKG1lpwFMPz4jenjJRplPr33
    OvKxQcXh1bAWNVFiJVDJsWwnfif94wQdVUA3iZEABRG0JERhdmlkIE1hbG9uZSA8
    ZHdtYWxvbmVAbWF0aHMudGNkLmllPokAlQIFEDCwQ4yqxsuiiP+uKQEBricEAKAE
    f18kbKpFKU/DPRVhVYlLHCkzXLzZCiTxBUGjMaXZswKwrjVLF2l8mrNQhqC9L953
    AGyUYNfPLtqw7b088v3ATCIrZ+izWyE27IrjZWSS57GZiDtnkm6moarG79yANBql
    LBc0sK077cHEC+/gDwXNBLg0NNpHkaVXPxixt/ETiQBVAgUQMK+p+pFKk8pIl/up
    AQF0QQH+ME6vPoS2+FgSN1q9R1hwmwEPAaYdyfhv2lj1/6KYDEaO9Lhw2u57nW7z
    CDpir9gNN0X9U3XrIxlJ7wWxa1k2PokAVQIFEC7vu/zjBB1VQDeJkQEBWFsCANX+
    qJO8J6qeJW8gcrmxMBA0l2MjEHcu8XNky6YT3yS6So72yL1lZbG78Sew03fXnWNS
    GyhRrPz7sURNLtJDNDo=
    =wpn4
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.173. Dmitry Marakasov `<amdmi3@FreeBSD.org>`

    pub   1024D/F9D2F77D 2008-06-15 [expires: 2010-06-15]
          Key fingerprint = 55B5 0596 FF1E 8D84 5F56  9510 D35A 80DD F9D2 F77D
    uid                  Dmitry Marakasov <amdmi3@amdmi3.ru>
    uid                  Dmitry Marakasov <amdmi3@FreeBSD.org>
    sub   2048g/2042CDD8 2008-06-15

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    =6qxA
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.174. Koop Mast `<kwm@FreeBSD.org>`

    pub  1024D/F95426DA 2004-09-10 Koop Mast <kwm@rainbow-runner.nl>
         Key fingerprint = C66F 1835 0548 3440 8576  0FFE 6879 B7CD F954 26DA
    uid                            Koop Mast <kwm@FreeBSD.org>
    sub  1024g/A782EEDD 2004-09-10

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.2.6 (FreeBSD)

    mQGiBEFCGHYRBACI9ERMi5j2009Juy2kpXS860i9tJJ10mM9TNuCZVYcPRRTiSWe
    Q+YySmBtR9TA3OZfd6BA9EqusEgcwUJpxjZ8zjGzirj/OjcPtKwM9ZO6dadeMNaE
    wT32bJDUw//2ky2xflJCsjg+TSO7PxQi3g/YEWfau6Istg8PKfzHQan0EwCgxwrV
    6JijZQ85jIgQoceJjkwBLHsD+gKeeSUG7g2CO+NJf2d0tBj+l22QzmeAtlnuUskd
    nHKDAzzty80e4HXkUYw8IMueR7Fe2Tjx20OvVSkzMwiZYqevIJHVhiouCFZxYpSa
    JQHPYLpMXMVZ1X8d17tjbFRBXWmNrDcEhb4m3WoDKfQD/qbMCwBErsQ0t15dddnQ
    BVyqA/93dSzMYRC+Zm6Hzfk5Dz2MsvsxEE30ysSwFjIZ06RtYPKlN0x3ABCGba8f
    o5H0P6+gobJRLTQfK4xDS4J3G/d7TWO1bZGk9MPEzCJDexTt5yfKsY2jZRVRrikE
    fIbdSUgLnczBdUno5qC9IyMhGNa8O92GsjleDm7D+p+wkkoyCrQbS29vcCBNYXN0
    IDxrd21ARnJlZUJTRC5vcmc+iF4EExECAB4FAkFCGHYCGwMGCwkIBwMCAxUCAwMW
    AgECHgECF4AACgkQaHm3zflUJtqlWgCfWKIRLzsvZjBjuck31Ep8sEDP0GgAn17m
    X0hYq8W+2gbHbmYeqIFefHs9tCFLb29wIE1hc3QgPGt3bUByYWluYm93LXJ1bm5l
    ci5ubD6IXgQTEQIAHgUCQUK9MgIbAwYLCQgHAwIDFQIDAxYCAQIeAQIXgAAKCRBo
    ebfN+VQm2sH2AKCnwIQ3C8+62/uQh05mqXqdzAaU8gCdEkRN+L9HY1OwFlSDi6Tc
    OAWLTPG5AQ0EQUIYdxAEAItGBQMO4f4rHYh9zc4fd62RhBfMHJpY1ex6HeiHt3pb
    i6KfBUai1zRYxgq9F+8qR9WgBLF1VhA4O0nCU9/FKOChc19W7xKa2auvE22Kq1ta
    xjCszahtPTDGIBs4K8u0fH/Gx4VSikQcfIGNd3IK4vALbLfH+iK/1RJNXPzQ9A4H
    AAMFA/4+UBNqZPucstZgmEwVB2H1Bt671fQqODpWj2eOMIYJWXKraUxdIjUqzm9K
    QhC7LBj9ihsn+LRsO49oWIAv5bks4zC0STACJ+Lx+FMb1i5ayAp/03DoZyrjRnGb
    SIY8Dtqonut2nic0NQ4XD5uqTkx2t7xlKJay/n4Nop2uqwajOYhJBBgRAgAJBQJB
    Qhh3AhsMAAoJEGh5t835VCbaOZEAn3wkQ7xISlGUox1/aiPU1CafRrZyAKCXgDLa
    wlCa23ftqh2DPxkAXtCnEA==
    =FIQv
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.175. 松下 誠 `<matusita@FreeBSD.org>`

    pub   1024D/20544576 1999-04-18
          Key fingerprint = 71B6 13BF B262 2DD8 2B7C  6CD0 EB2D 4147 2054 4576
    uid                  Makoto Matsushita <matusita@matatabi.or.jp>
    uid                  Makoto Matsushita <matusita@FreeBSD.org>
    uid                  Makoto Matsushita <matusita@jp.FreeBSD.ORG>
    uid                  Makoto Matsushita <matusita@ist.osaka-u.ac.jp>
    sub   1024g/F1F3C94D 1999-04-18

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBDcZe6YRBACDOZSZ5cWE6IvNkx2Ht6S/VdIY1OXFU8n+cOVxNIHFWXPUOrFG
    F526VZoPfjURnslubdxXC8TKGspX96uc1jdROHvEwsxUUELyzZ7G5oJ5wd4jHwjq
    K5zwV5FZoNm1SHdeN0FqZB9rlJdOt0kxVZS+b1PUc0j1i4oDNZz7+8rc0wCgltLi
    c2i5RQzjuvJvF9P8OYGujHcD/3Tq02ov/aNX+jIoO58uuOBZpYFL7ZfbCeiMs+4A
    dmvjTI9MpfLBP711iu1asuikx6HLQts9UTVk36qP9ubNmFi54kDHsej7Ce8m+dOu
    Cjcjle6Be71MGLq4YUxd9xZmGGDPhEFnHWbB/QPP4n/m3DN3hblWBgP2PsgmqDyK
    518dA/0bhL5pvw5LSaRtGxxWvFBInfWGzC5EuLw4ERZW+bEFB0To08ZnocLRN/E6
    tZ2JTr2O5aMLqUEM3jgsIvs9EOGUBwPRzyOQXpc2uQemn7J0pL6PQfuBIaUI/NOu
    ULM0gQfLIV3wOP6Y5gH0FBcLt/ofrqdYys0C6zTq3LqDW5FdQbQoTWFrb3RvIE1h
    dHN1c2hpdGEgPG1hdHVzaXRhQEZyZWVCU0Qub3JnPohfBBMRAgAXBQI71CCFBQsH
    CgMEAxUDAgMWAgECF4AAEgkQ6y1BRyBURXYHZUdQRwABAc3PAJ0VtHlKCmR8IjdR
    KJxY0C5fdmaDGwCfecy3f/dYGQsljHhv0Wr2PxciscS0K01ha290byBNYXRzdXNo
    aXRhIDxtYXR1c2l0YUBtYXRhdGFiaS5vci5qcD6IYAQTEQIAGAMLCgMDFQMCAxYC
    AQIXgAUCQ5F4YAIZAQASB2VHUEcAAQEJEOstQUcgVEV23p8AoJKAqle5nC6Wi6yO
    TZtcr4axeBnAAJ9ABx4gqACagCDc/OMk3pmtb4sy1bQrTWFrb3RvIE1hdHN1c2hp
    dGEgPG1hdHVzaXRhQGpwLkZyZWVCU0QuT1JHPohdBBMRAgAVBQI3GX1RAwsKAwMV
    AwIDFgIBAheAABIJEOstQUcgVEV2B2VHUEcAAQE6EwCdEPG7N7vmhgYEqmZqPLm6
    oqjHOpIAnAr1FfVDPXpfE2SmXUZenG7+5MwntC5NYWtvdG8gTWF0c3VzaGl0YSA8
    bWF0dXNpdGFAaXN0Lm9zYWthLXUuYWMuanA+iGAEExECACAFAkORd40CGyMGCwkI
    BwMCBBUCCAMEFgIDAQIeAQIXgAAKCRDrLUFHIFRFdraSAJ91gKAjNH0XzAKohpQV
    vo3uT7LNvwCeJSxDm0hpmaOpa+LCcabNP91SyhS5AQ0ENxl8HhAEAITl4uP+i5aY
    Wr7mPBLAaWfoQ4fyT3pUThtStiymqsrEDFKhVqA/KD3PUV1CeOBc9oq69x1+pUlk
    VYz3vDrvk0hP+dy6nerUEbkdGtMKLvGzakdond55jgSTZ6CPHxqyLva06QpY8tj9
    CODunFUE+MPVV4Lf9U4wMeEDZFEYvcajAAMFA/9kKoDY1ur1mAPJRWAcEONxnwiW
    qe7l++fg/294wra8IkAbF760iMnqq63qavsGT6xStMi9EwZC687p86sFex6KF+uv
    P04CTAyt+FAph7oa44AdWJo4tJ4SP8xIznOiZS8clWwxTaqv9Ncy6LZwbZf/P427
    egF1zuv5A/MTO3KD7YhOBBgRAgAGBQI3GXweABIJEOstQUcgVEV2B2VHUEcAAQEr
    7gCdHJTTs41XBpfprQCErm3tGXwRrG0An1zUSEtG1AA4jFXNgIlud0OO4aMm
    =aY+v
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.176. Martin Matuska `<mm@FreeBSD.org>`

    pub   1024D/4261B0D1 2007-02-05
          Key fingerprint = 17C4 3F32 B3DE 3ED7 E84E  5592 A76B 8B03 4261 B0D1
    uid                  Martin Matuska <martin@matuska.org>
    uid                  Martin Matuska <mm@FreeBSD.org>
    uid                  Martin Matuska <martin.matuska@wu-wien.ac.at>
    sub   2048g/3AC9A5A6 2007-02-05

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    =HbmE
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.177. Sergey Matveychuk `<sem@FreeBSD.org>`

    pub   1024D/B71F605D 1999-10-13
          Key fingerprint = 4704 F374 DB28 BEC6 51C8  1322 4DC9 4BD8 B71F 605D
    uid                  Sergey Matveychuk <sem@FreeBSD.org>
    uid                  Sergey Matveychuk <sem@ciam.ru>
    uid                  Sergey Matveychuk <sem@core.inec.ru>
    sub   2048g/DEAF9D91 1999-10-13

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    [encoded data, 4615 characters]
    /CYAn14opUDUCjxXXd3vrkwzNCIrYQ5i
    =iDu9
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.178. Tom McLaughlin `<tmclaugh@FreeBSD.org>`

    pub   1024D/E2F7B3D8 2005-05-24
          Key fingerprint = 7692 B222 8D23 CF94 1993  0138 E339 E225 E2F7 B3D8
    uid                  Tom McLaughlin (Personal email address) <tmclaugh@sdf.lonestar.org>
    uid                  Tom McLaughlin (Work email address) <tmclaughlin@meditech.com>
    uid                  Tom McLaughlin (FreeBSD email address) <tmclaugh@FreeBSD.org>
    sub   2048g/16838F62 2005-05-24

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEKSlvMRBACEIyrOE2NlPjwg7bS3nUC4S/D1nPV22eEJ0ga9+LNHlQnsJON3
    lGOU6iMGa6QaBoqg7Qw3aL6FaJlogNQfIPWZCRZdfJjlbw0Yd6EzCpMqoowB+4y6
    XuObOhie5bdHFK8NVk9n1BZGUELcnPGMdhPPIQ/UHq7Rlhbqh8qkcA0imwCgzNEV
    oPAY1SeozW0kBE6YUXXGQXkD+wRzl9As4+1CE3ZgxUWtoNqYvZMNWYTbO0ZWMx6i
    YWJ5GkLCMdVqNZ7iCteeDBVoRzLEbD/FyVzazPm7FBSxzK71EC+C4Ybt2IQPWfBK
    Q0GI+2ghQ/HyLh4gLCLP5XEk9aw9DwXGJt2q7HngEJli5o8LFVo3Qiu5X+QeC7QN
    r6uGA/9/raZnDF33jfAlx1jrHnFVEa1xzs81q2LK2ii+RdU5bvTJQchoHFRKZMBW
    HszbXB4f+wqkSkj6B7od8hBINJwdumQXdjO6nybh2abkCT2f/nyK7ktCcq027AD4
    BjWWFltUZpvspzq724SOEyBsbYJp4YTB2wys+gcyDF/ugaJCl7Q+VG9tIE1jTGF1
    Z2hsaW4gKFdvcmsgZW1haWwgYWRkcmVzcykgPHRtY2xhdWdobGluQG1lZGl0ZWNo
    LmNvbT6IYAQTEQIAIAUCQyJDcgIbAwYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJ
    EOM54iXi97PYq4MAoJeuQSfnGZsPBIpzOZ0vHmf/ZV4ZAJ4kKyQrqbxup6u/vMWG
    lS9JqYlZj4hGBBARAgAGBQJDnF0IAAoJEMYEPFZyB3E3kccAnRcxLZQIxgo0T22x
    GUDB8tkAUUOTAJ93N4aVydp/zrDo+OE1HStNFEsWvohGBBARAgAGBQJDnGKmAAoJ
    EHninGCwBj/nLhoAn3sa1+X0ccAhA+iPHo1mypN2uKUqAJ9B46J73q8E7PU17U6k
    RHY/7eCLaIkBIgQQAQIADAUCQ826swUDABJ1AAAKCRCXELibyletfK2IB/9GoKeE
    G2qDTfQbwG2Gbj4sW2FjaeNryneSTxXRMpK5dBwiMi07iM8Ze+8NdE9KlOzA9I1r
    tkYgR32UCfteyQXU8YvsKf6Q4wRqKbpckqI43zXMdvXyzG23P6/gR/Ozqh96Z9vA
    i6WdnvxjZaY6jItk357LJPQDP6zQncKFfcw7W+QAPx2N8BrUUy8U94kW6URhS01R
    d3NP8JylEXqqF6L7cSxcmO3A2QAVjzDpmfWu6AvREuYY7dkSSZWGK9hpoEjPN5GS
    LDgwRaiYZKHYz8Bx2UUA6sqaoebqAHY09bHIZ4fMiEkm7SSf5PsoS0emb9O0q5U1
    tHI8+6LkM6Zhs57CtENUb20gTWNMYXVnaGxpbiAoUGVyc29uYWwgZW1haWwgYWRk
    cmVzcykgPHRtY2xhdWdoQHNkZi5sb25lc3Rhci5vcmc+iGMEExECACMCGwMGCwkI
    BwMCBBUCCAMEFgIDAQIeAQIXgAUCQyJDgwIZAQAKCRDjOeIl4vez2IaCAJ98fPNG
    gmITFIYH+M3UBkw1YTvfAgCfQdAkDAFJxVrvDZBDliO2NB6jAu+IRgQQEQIABgUC
    Q5xdBgAKCRDGBDxWcgdxN2PzAJ9d7HmdkCyM5CN7cgG6BaZ87AHY5wCfUjblYg9y
    tsrTj2+ip8f05PC7zhCIRgQQEQIABgUCQ5xipAAKCRB54pxgsAY/5+exAJ94yol5
    HuRwmESdxzjj9S70GoYbsgCgxad9osFjtuxHHX37vaxUgJyLEbGJASIEEAECAAwF
    AkPNurMFAwASdQAACgkQlxC4m8pXrXxT7wf+Ji6vtaE5wjEI3/puKsHfGJmmHklL
    UBkcl5acntPLPxhXa2Z742ZZW+3QXeUyyXnqU1/BSn6/NBYO6I8yUJc5QptnlCvQ
    sJpwJlnTd7jBhSzN+L1xGxxvmmq2LfzLIleW8ye27vBOW4JDPDSgz4gVTKRqc0JV
    1EYULkWCGpfDA/xPP+4Lhizz57Q6EqLVurxMjNLE2mqV7feIvYoGLxOX0RxbNSpT
    +uJ+6ydpyE8UhykkQwgN0vhaokwSHC1KWWFH0ET38hcdFvaVrWZsrG/GwGg0T0mG
    23CvIdBUGH9U0roJjUa6CDDQz8ohR0P04lFpVsgDi9AVPEFWTX4gcUwyILQ9VG9t
    IE1jTGF1Z2hsaW4gKEZyZWVCU0QgZW1haWwgYWRkcmVzcykgPHRtY2xhdWdoQEZy
    ZWVCU0Qub3JnPohgBBMRAgAgBQJDIkMNAhsDBgsJCAcDAgQVAggDBBYCAwECHgEC
    F4AACgkQ4zniJeL3s9hsCQCgjLOKwwiG6bABO6ue0mjHpvR6nhUAnidSAywDgVQa
    nv8Ev+hIv4/QpD2PiEYEEBECAAYFAkOcXQgACgkQxgQ8VnIHcTcenACeNyN5PiZU
    TJ72eTxbc60q6PpkVOIAnRInAWvK8iW8I7uGOMBmyYtZWfu8iEYEEBECAAYFAkOc
    YqYACgkQeeKcYLAGP+czFwCgkAtsuKGoojwfo/Rg6p9RCazIUjYAoJ0xxWeuZ/df
    7lkbyqcRGJOfLeBBiQEiBBABAgAMBQJDzbqzBQMAEnUAAAoJEJcQuJvKV618rKkH
    /1kUl4Cqj3n9a+acjUnl5gH1r6SVUuNK6pPJPVpBXDOGWQQPfVYl2LTtFfzIh+e0
    q7J5os8timFbi/6HaI3RNV21XoqrDVgmRA8lApxM3dfB0hlJ6jx9eoUjHgi4n08w
    nX3g43I0zoRc3lQPHFc0jV9yRhgAln2yHmrvdcW0SUb8Zv/FvyG26W1gyEvl0cPE
    /AvKerTr2oP3aKnWtQfylovIw6Y+MmP3AynlvYghY7qw5QSnw3PhITvoFh4Lg4hI
    c/AoY69TAdf4d+kHtbo9vssMoT/NAIaAN3K8hdzSmJ0Ifsj7/K9+qtYz3r3c/+Qz
    1pH6hqz1u13upXLo/slPV7S5Ag0EQpKW9hAIANJJ8W4+BYSzM6ihW2ElYyt3h2hp
    WXptNPnrZDAoqx7YtCyPnUpn6dJrlsz2NTJiW7ahdsCQqrCyMTRCzAZAbFN1s8Se
    0hlREeHxGBIw+trapap/B2u0VQHDfVEL/9ib+jUFm+Gp3izgcgf4y3tvJRmmPCgj
    Y9fFcFu7PrntYsK91OkgungUriZ1fbjx0OkHRaz7nnq+On+dVElFh2iTwpZKrG3L
    7Qws/iVWamLOSQ14d3fzWN/Y7pF09QjOo5i/iyN1QEYiOffYaUthWr7lJ35muuaH
    yEMeodSNkKCF+BqpmmWKgJohopQ1/f36WjwlaVKaRh0zCIxcpX5xPtSoMzMAAwYH
    /2OiL+gBLaaTC5okydoeHAE+G5TobT4CI2fw2P9htDWVYf1eIriTRYKywSyjF+YS
    nCc8hleBDCwrUY03GXCFEOq0SAR97cfRhzxlHps3n3iAuZp9TwcGDiskL0wAaNS8
    43AKNHlKRNWxXoCE4oBlq/t1+DV+7BnjdI+MCAUe8h4y/jACIxpxnRKjmAcN2qDh
    THauJKvmUjw5W9SvgDU8sHNXRAdTbCrDj3iEAvZ2bTUMLmh9h0tKhwmVD14IMpDp
    7ZELqCgJgtHjv9kAg0Yz/Dy34jdLgypTJzUreQcJYvv5Krp1QLRTMMtoMtkop56+
    oKcUsj5bqschZLFzuL2hj3WISQQYEQIACQUCQpKW9gIbDAAKCRDjOeIl4vez2KQu
    AJ999gXGK70qxOzC8xOb3luxRKE/TwCgleUyV4VszS8i918p+td30+xsf1M=
    =DTOK
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.179. Jean Milanez Melo `<jmelo@FreeBSD.org>`

    pub   1024D/AA5114BF 2006-03-03
          Key fingerprint = 826D C2AA 6CF2 E29A EBE7  4776 D38A AB83 AA51 14BF
    uid                  Jean Milanez Melo <jmelo@FreeBSD.org>
    uid                  Jean Milanez Melo <jmelo@freebsdbrasil.com.br>
    sub   4096g/E9E1CBD9 2006-03-03

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEQItSoRBAC0Dd1LYWYUcjRH9XabIefY+5q+Mwi7iBdvUjq96c/LgGZLXbG8
    ZlK92kraOdWvwrPcYUCjYQwwesOmjXryXPoS+AYiz9iVs7AR/A9drFECh50wfaiL
    J7X4kSpR9zDgju/yVPyT3rhE4ZEZ/81txqdu5DSG5+vD8dLoXdb3EziXFwCg8Njt
    Lcb+ETI3MvK0M4A5HpuBvTEEAK2H7mNZ5BoLCrB81244e1BFwd16raITUv7DiF11
    Wl4kFowGt0K9P0d6QxmL3bEdeud2wfNaVjAuiO2B32XlV4xskZmfalniN6fsX9b9
    jnzJzpFvR4tPeZdpw07ePYJXh5vZjx4Mkflv9X2+rWafLiw5vkmwPnkQPcnhWnD+
    Ia0UA/40hZZvC9h20eH9hAcJA865wLxzmUijzgAGHjXVjhNT2oYGneNeY70auub7
    hGVL7GwsDSYc76W6IhJOcAjgHcCfa3uGerFR56T9se0ysmlBrONiYTokVZ3vKFp6
    m9ZceaPiE94RtHsVVkDa+F2KWeGU1As8gskVBP8MycodYb8XgLQuSmVhbiBNaWxh
    bmV6IE1lbG8gPGptZWxvQGZyZWVic2RicmFzaWwuY29tLmJyPohgBBMRAgAgBQJE
    CLUqAhsDBgsJCAcDAgQVAggDBBYCAwECHgECF4AACgkQ04qrg6pRFL/NCgCgg1C8
    cFGpWahx1wgZ8IQxsmCSUV0An2YnP/Q4w10WTe6qp+I+H7c7k900tCVKZWFuIE1p
    bGFuZXogTWVsbyA8am1lbG9ARnJlZUJTRC5vcmc+iGAEExECACAFAkQxmpoCGwMG
    CwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAKCRDTiquDqlEUv6McAKDC5MusdUU0kl9T
    /ymavKEu9a349wCfXWEu9GgVb0CCZ8Agx3BHHIuZNo65BA0ERAi2QBAQAPB4mj53
    L9vbS2WLCAPMMn4ZGDYGXbe1pB/mjRbZlTGnUYWE3NO1fLYXEaoilRsvcEKtbsWp
    Ynuk8Ou4DaNoVyX9I6I18rs5KMZBiLOvQZFYCBbJYSIn/nNycOqsTy6Nw9mz7mrw
    I6e6EhiYh/AQ+MI3zID3iYnbQlQFZo4gLMFTLKklpiV+DaPoDiEkQPGn+0mmLEIO
    pmCqiDTxCIrig7feExCXJa2+CXLj2OS+r6su38O7WJiGMq0i9nCeu+4NnezoKPwt
    +s5kVYAjOSzDRybWz0UDzi9M7Kxu9tFoxEQUikLDMdqSklPfRs95TEmpXIvksn3A
    lub2Vfum6/kdRNkxPPbUuyEvtzeCc87LB2cLpP2+EXcfHCe7MdrtowWleRqXymXa
    Lyun7uKk2etFpEIfAqCPC1Yd8Jf2coyVY/n+a6yotWzCtQ4vogO2dTTKmj17kkcW
    1CXZz4W73Jut9ixZmYL/zOJj61j+2S7K7VLfSNrP8H8SACH0oHxYP89BaqOSOO2N
    0DtvyhFfS0OsxAEBa/EgtCAZiON4nZdQGPyDvq2/uQ1SGxbykTCvgxElAQfyUh7x
    lctdQQ6f6MEEPHapdDwpnqX5TAcdY7v9eE+/DZNTeswUBc03qtqxee1II3K3+Rvl
    4R+DuGn/oPdgksnX0kX0wtHgclXRsZ6x+wEfAAMFD/9S7Z0ee7WeH4WwU9Mf9gSp
    3JGafoInoJZNSRsKAl4VFC8axivUGyUzJdTbADoRXDR6NfqJE94u+pP3vx4AAvVH
    cvzfGj10GlUOwQGbQxaYGgYtqVgQ6MKeS6A3xaj63WgBFtx8bbt3e9XTnjPto2ZC
    U/pM3lmwsvxHoJGgisRvEfdQeWW2cJlxcBfpqat1/2MFBK60Wd0WAr0x6A3m5xpy
    ejftkcUa08BT4LSiGAsmuNKtUYULA9OrbvJreUa90lrM+6sZy2Edh/kulNmXgS4Q
    Y+OVptuhHSgBeME+j/fM5+p3Uyyaa45xmCFxnx5u/XBWhzMiPvi/m+qYkXPECFLx
    CiZ4OC7Xso79UeMmYq+CTDMWR6pe6iGVQZhRH69ShA+c545Eic/RoOv4ra8se7/U
    R5BU29AWWtapMq50/h321Oi+JmmfJHrte9Kd6RdyahuvtlWb7bgnKPwzpaRXYtbt
    H9SskRTdESK14AwH2eUVAP66Dfr5xBoyuS2g9MkRxxhjHWmMi4TAyh47VgXUxOPF
    Uh1eFsIqVa1scXFaimmicdnbg7N5iVoqIIiuc2Q5P1xIuTUdxw1SjXOInmjAszO7
    Ckad599/WaNFS/pkDOgt8yfQaLOKCqVuKkimWa8YuZkm0g/aY1n1cE7TvNpxdrS+
    dw6TU3idxbY/DuNsWfHfrYhJBBgRAgAJBQJECLZAAhsMAAoJENOKq4OqURS/QrYA
    oIelyoPYInm4v6UTBo3XhOwNkHWbAJ0XXqE5J3Zv8FCqjQsJTFCmmNSoGg==
    =CyrL
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.180. Kenneth D. Merry `<ken@FreeBSD.org>`

    pub  1024D/54C745B5 2000-05-15 Kenneth D. Merry <ken@FreeBSD.org>
         Key fingerprint = D25E EBC5 F17A 9E52 84B4  BF14 9248 F0DA 54C7 45B5
    uid                            Kenneth D. Merry <ken@kdm.org>
    sub  2048g/89D0F797 2000-05-15

    pub  1024R/2FA0A505 1995-10-30 Kenneth D. Merry <ken@plutotech.com>
         Key fingerprint = FD FA 85 85 95 C4 8E E8  98 1A CA 18 56 F0 00 1F

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.0.6 (FreeBSD)
    Comment: For info see http://www.gnupg.org

    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
    sGDiYyJDVnPYxZcEN0h06w==
    =CRmh
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.181. Dirk Meyer `<dinoex@FreeBSD.org>`

    pub  1024R/331CDA5D 1995-06-04 Dirk Meyer <dinoex@FreeBSD.org>
         Key fingerprint = 44 16 EC 0A D3 3A 4F 28  8A 8A 47 93 F1 CF 2F 12
    uid                            Dirk Meyer <dirk.meyer@dinoex.sub.org>
    uid                            Dirk Meyer <dirk.meyer@guug.de>

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.0.6 (FreeBSD)
    Comment: For info see http://www.gnupg.org

    [encoded data, 6240 characters]
    =b0g6
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.182. 三平 善郎 `<sanpei@FreeBSD.org>`

    pub  1024R/391C5D69 1996-11-21 sanpei@SEAPLE.ICC.NE.JP
         Key fingerprint = EC 04 30 24 B0 6C 1E 63  5F 5D 25 59 3E 83 64 51
    uid                            MIHIRA Yoshiro <sanpei@sanpei.org>
    uid                            Yoshiro MIHIRA <sanpei@FreeBSD.org>
    uid                            MIHIRA Yoshiro <sanpei@yy.cs.keio.ac.jp>
    uid                            MIHIRA Yoshiro <sanpei@cc.keio.ac.jp>
    uid                            MIHIRA Yoshiro <sanpei@educ.cc.keio.ac.jp>
    uid                            MIHIRA Yoshiro <sanpei@st.keio.ac.jp>

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.0.6 (FreeBSD)
    Comment: For info see http://www.gnupg.org

    mQCNAzKTzO0AAAEEAMVsAcUX89qHkwlI03RlAYBqQa00TFmgPwZs8sWvNUqTGtlK
    kOXcN9WNBvwzMYtEk/u5C1HukqISnFkDW7ZKYm+Um1sQPioFHTwDC6R2HRDZBCV7
    0fROlQpb479iBlr8wNAYDhOs0rl25FpE/uAXYThW9Ik/apgXN4rTGxk5HF1pAAUR
    tCJNSUhJUkEgWW9zaGlybyA8c2FucGVpQHNhbnBlaS5vcmc+iQCVAwUQNu4ch4rT
    Gxk5HF1pAQHYiQP+IoxOpfpSPg8Gr7MUtoU3WZPY/5IuKoOwnFNFcSyuhrgn/OOB
    pbxkYjTO3MLh7Xa+9sPigevHy/sNA4vVZdjk05sjRfAZxIWPrinRy/kzva0KOY69
    u1QfX+Vx2mfq/EfMJMHP/Am0H71nOfAZsscKlb/jmuo1TxIpCUx+wWmNn5+0I1lv
    c2hpcm8gTUlISVJBIDxzYW5wZWlARnJlZUJTRC5vcmc+iQCVAwUQOY7IlorTGxk5
    HF1pAQGQBgP+MXSjPfcnNhNfUmeLu8sM63DnrFIfRP9E+n/yhZT0wO51r2LmF4ZX
    YI04IJCywJiPjEpCFXNAhqDfypkTXWcbLTxX6gE5GNqii5iq+z+UuO4panpJO5OY
    4H0/90cH6I/zl93EZN9wfZJghn66vgL4tDTgILdRPekIOB23JQIXsf60KE1JSElS
    QSBZb3NoaXJvIDxzYW5wZWlAeXkuY3Mua2Vpby5hYy5qcD6JAJUDBRAyk8ztitMb
    GTkcXWkBAf3zA/9sDB0n/UlsH9hzaw4r2k0FT9F7Ixtk2i/vqmHDUUcrlEqGaeko
    /3Q+et2KzepX981mI7N2jdClqJgjlHapGoIQWZL3Jy7ocgCXDTYwGU2cFRF7kzkz
    h3FyYotm6bMi5F53GamkVbYZfogLo1MW7jmqIydJNdT1oseDbrwkjvXwdLQlTUlI
    SVJBIFlvc2hpcm8gPHNhbnBlaUBjYy5rZWlvLmFjLmpwPokAlQMFEDKUUFiK0xsZ
    ORxdaQEBjuIEALtVC6fjyDiRnZ3ReckdTO7k83VUTZiQH+2cMFNd8gi+O2sZ3YnW
    6veQI45VB3oHD9kzMjol3B1ld7iKcQzHC6qUEviW+mTRRN2Y26DB704FNeUrqm1A
    LO8NPL6iNKFvUNsu3T0ZRY7oX9a9nMmcD7M2bm6jxrhckS8hY7x1D0xftCpNSUhJ
    UkEgWW9zaGlybyA8c2FucGVpQGVkdWMuY2Mua2Vpby5hYy5qcD6JAJUDBRAylFA5
    itMbGTkcXWkBARgCA/0RBudh/8z/HWdX0GC0m3I0zIAOiGfmnJMPkzLryXuOQsbE
    dg28b193QnwTz6/ASF6PLJkivcd1vREXCz3C+jHz6OGs5jUKcSf5c0ZaIE4T21Hq
    LPKHSj0cYxgiC0auwY46m/yfO8I0bdiM6Ki3fSBTlTmDlNhWxOQ4Ic2RamKNNrQl
    TUlISVJBIFlvc2hpcm8gPHNhbnBlaUBzdC5rZWlvLmFjLmpwPokAlQMFEDKUTtSK
    0xsZORxdaQEBjWYD/i3EOU8lEoje9jTBHfQaps9BQgviFSaHk0G41emKszLSLnGQ
    BeMGZTyWda6sTSqeLKg56HEmmVGzC/nHlhwspC6bdYaBmOpnSmmzxVstcYq8oiXI
    mlfFEcL5DJEau1VTBP56Fk4GCffaibCTRGYrQcJz4yLfATjYsni5Y8zXqhWItBdz
    YW5wZWlAU0VBUExFLklDQy5ORS5KUIkAlQMFEDrvMx2K0xsZORxdaQEBTgAD/jO7
    tb78V3muNw+rfD8tA+yWXw8IdC4QHCa+Ga6Uwf9nw0WD+fuuz0I2La4iaC3FPtTs
    1hz1QlmrztffL3tfsePDeN59nz89m+WPW/Cu+mLY2Eim2Hm6AWKVvtxtndunOSls
    xQLr0uhvNN5BOzEqv2V+l0MrwadPxUrHG0izqmGJ
    =cmvD
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.183. Marcel Moolenaar `<marcel@FreeBSD.org>`

    pub  1024D/61EE89F6 2002-02-09 Marcel Moolenaar <marcel@xcllnt.net>
         Key fingerprint = 68BB E2B7 49AA FF69 CA3A  DF71 A605 A52D 61EE 89F6
    sub  1024g/6EAAB456 2002-02-09

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.0.6 (FreeBSD)
    Comment: For info see http://www.gnupg.org

    mQGiBDxk42sRBACyzSSCLYA90zaZoMlg4zhMXhciG/YuiBZ005q0s9W9cuFFxwOM
    0mLFbBHQKj5TG5TNswnf9VreRg8lRPCzgQ63atc10RU2tfa88hIjWZ4G4WEFDeXS
    hlj4dIA6KO93UEoJmIyR7hswisb086mK4dM9hq9FxJT7YQ63PkUYmd+pfwCgjX/y
    xM6+aPj0sXuOvAcVVmrnp8UD/2pEd8kxAKIaWmxOm9aGB0/E6vjZWxCk1+CO7tgG
    4gInFYUnqniPB4JOXOWriwBGPx5IqWYwYpgeuoi/KeE/Wn7bRUEeCbBGEmJkHO9l
    3xJuPX8JKDkGuTNDvR3SINKSzx7gb77eGorwxV7e4FXBeXOyXLxgDqDhh7Sjv5/4
    ikr2A/99b5t1akHlNe1ITpuEETDNRcfu38/KW/nF3p1IKQ4Q+exSlEJzPFupYNoZ
    O7uD3A0YCNf3jIY52ufkZXqhqfsp6aRLetbqDcKVrZWSudAzGAEk3Q85a6Ei4mUB
    tfv4dmXQOLzfAFHezhCQIt5LIPJ5Dmz/a26+u0DmlfisgP5ltbQkTWFyY2VsIE1v
    b2xlbmFhciA8bWFyY2VsQHhjbGxudC5uZXQ+iFcEExECABcFAjxk42sFCwcKAwQD
    FQMCAxYCAQIXgAAKCRCmBaUtYe6J9pN3AJ982m/rtLgyiuHl1IM+/xfsZ460SACb
    BM7V955SU4T2b+1FW1ieOuuZEKC5AQ0EPGTjbBAEAKbxUKuiOJsAQnGKTXtbyRdR
    Y6BZQK9tPNXEIjIUZ94Crs9lVq/P3kyvpR/ziL+Yt3agUAELiX+cggUZ5KRzKBmo
    PJ6ZdWOuKLRN2+PfK1QVOQayeZV11XZAsPwyHI2v/hvjJnFvQNTEXWLZsBNnfTdx
    0zi5RBNhf5Gt1hyuT4cvAAMFA/9xKQ7aKkvi+C7KafwH6B5X6lIQxRbTQuaZaqKL
    M8pDmVLqo3er7S1ullwMWfarQLHtlwirX9IOQN833TCDev9QeeYZZ5g2MpWO5nx4
    kxEOAK6Lg+QBg4RcoLK9CpHUpLoChGQzNaDudztUixwVaaigj21O4PXFr9pmLLZk
    vj7AN4hGBBgRAgAGBQI8ZONsAAoJEKYFpS1h7on2XgAAnj0B9B7g4XPMXjizKVNP
    YLC2BYjgAJ4tZI/tGYxHex5RCeFv/fG4wN593g==
    =R/4a
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.184. Kris Moore `<kmoore@FreeBSD.org>`

    pub   1024D/6294612C 2009-05-26
          Key fingerprint = 8B70 9876 346F 1F97 5687  6950 4C92 D789 6294 612C
    uid                  Kris Moore <kmoore@freebsd.org>
    sub   2048g/A7FFE8FB 2009-05-26

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEob9xURBACHaqCbAqwyIXO0HHHCAVYPqVkhhr2FIS+yTvVJnCQa6G1KIasT
    LKGK0Z/Ae+suMsQoT9e1Pw/zhErm++aRSYqdTzyuMUjEDXtgsfp27rdQZRNiWDwz
    2/gd1nSEWYAKqUh5i0iJ89tkiL3JJx7/FD1+Nfp2sk318usUshT9/T+L6wCgmRvG
    A61Yo0rszOQexAwZ6PqE9fUD/3tGobQB17xQIca/AwUDyR2cw1lGs3S2ZN2G5xAT
    QL+h30wplhrrIO3lkyZQ7p71ZTPiAf5b5eTrXWrXVtO2Um3+wU04yhBVcmO9DeO/
    F6SLVzJLCRyTSNUSZNmWrl1EOFWooNnfBI4Emjke46g89hIbhYlS+qRL+qN0ugpR
    SnfmA/9d/UiazKlhp3fX9EwYRQmOC4WXDxuWS91I7kH0xsbHR/BHFJbUHDr0shsB
    lNRmfxwaZjiC6oHsJE0Du6FcSncYSfAChLrt+fqGvNgXf4hDIjsUtu2d5sxgoarv
    EvaSwfh/gelNuTnsgQll26LaeYjgmJgwf4Hb7I62UkkPuU5LMrQfS3JpcyBNb29y
    ZSA8a21vb3JlQGZyZWVic2Qub3JnPohgBBMRAgAgBQJKG/cVAhsDBgsJCAcDAgQV
    AggDBBYCAwECHgECF4AACgkQTJLXiWKUYSypOQCcCQagomGK/P/P4OedoFUDw5ZY
    2qIAnjRRTC0mRqUbIjaf/FWNuU2qtbiMuQINBEob9xUQCAD/zeiP1+Ru7ffCZwZo
    QTPjuYvm/PnAeeL2fBqN/Q367UuqR6RlqV03lo5nFxD1phheP0BmH6b0qyMh2dxi
    /6nq32g9b0Wb8s93pqYimxtujpNnWmZhwparaUm9tPyIGRdJ6wj8G43gOwyjDdwi
    GBPDAdSAqVZI0m+l59F5lsPiYJDGSkYENjLd6T7aAd0JzDjd0YLTx1+WLir6OrLG
    p1j81rBRCGRNipN7tGB0/pEB/mutU8GlDTTFaD1cWT4X3RGGP9MOH1UuS4wZXzJX
    8duq+4fKlpKEPOyJ9R51D25a9V71Dybdx/5mo+Bsec8T5+N0f4hK6utrnJvSQTes
    vinLAAMGB/wNS78TRKqFdjz83F/LB42srwFqDCKz03Pns6Fzespha8zWKOTiNOk7
    2WuXl6qWXhZ1aSithGzoWX3Xm6m0m3ZYk9wE+rDqT7Z3/T0tKiHmwG5z3QpuLOnp
    LGuBH/ra2gbyC+Ycj/faYXOz6Chf0e67bNRru9OGf289Q/EVcm39DinYBK1jrHcq
    xZ+b8jxtOWygo2D0SIS/hl4ljMDMaj/J8itwJXj0OyuoJ1IZkW32L4RN3jIXTUgn
    pGyhtw3wO4V5nhdj+YgvhP2VW1K2SVW1SqExlYdvB+HigKV5oHzTNluILcJgs4BY
    ntHqlJQ57QKxWImxvFZmS9MBaf69Tb68iEkEGBECAAkFAkob9xUCGwwACgkQTJLX
    iWKUYSziLQCeOWM0aLs+/NIGsNo/Lc2N4YTQ4pUAn0rL6J3fe3flPx5pBoj/SSto
    jjB9
    =yaw0
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.185. Dmitry Morozovsky `<marck@FreeBSD.org>`

    pub   1024D/6B691B03 2001-07-20
          Key fingerprint = 39AC E336 F03D C0F8 5305  B725 85D4 5045 6B69 1B03
    uid                  Dmitry Morozovsky <marck@rinet.ru>
    uid                  Dmitry Morozovsky <marck@FreeBSD.org>
    sub   2048g/44D656F8 2001-07-20

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    [encoded data, 6630 characters]
    QdJWlqxZ8kb1RqPzVUB5r+sZCocAmwaOcis0koAFKX84wMOTyluPNU+o
    =yCgd
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.186. Alexander Motin `<mav@FreeBSD.org>`

    pub   1024D/0577BACA 2007-04-20 [expires: 2012-04-18]
          Key fingerprint = 0E84 B263 E97D 3E48 161B  98A2 D240 A09E 0577 BACA
    uid                  Alexander Motin <mav@freebsd.org>
    uid                  Alexander Motin <mav@mavhome.dp.ua>
    uid                  Alexander Motin <mav@alkar.net>
    sub   2048g/4D59D1C2 2007-04-20 [expires: 2012-04-18]

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    L4EaOMcBYbTvTg==
    =ZML6
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.187. Felippe de Meirelles Motta `<lippe@FreeBSD.org>`

    pub   1024D/F2CF7DAE 2008-09-02 [expires: 2010-09-02]
          Key fingerprint = 0532 A900 286D DAFD 099D  394D 231B AF20 F2CF 7DAE
    uid                  Felippe de Meirelles Motta (FreeBSD Ports Committer) <lippe@FreeBSD.org>
    sub   2048g/38E8EEF3 2008-09-02 [expires: 2010-09-02]

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEi8sBIRBADJt1SLW/mX5HmXKgbG72GXupRR8V+lDbtquXx6dJ+3E62S9xFx
    KehNrX8YcYnp+dcuHktXxQPJ/BAzOnvPdHKgzdXMARO5ApOfQ2VDgZgAcs0dVEnn
    LILvxiwQ7YlyJjOTJwbcHBpsTdolhNooi2FEE3N5ShSMRlPoH3GXF1qdnwCgqV/g
    IlQTCLudKrApFqNIbDCrPh8D/AmN2MdnlnIk6d7zUgLWuu3coohYIYOxaZ+ovKDb
    S8siSZ5uaEZOhWHVLVGYXTmzLrCK7TUBKdK1sW7YrYKQdPjhYnYXrwS4AaWupWwX
    K+fZWTaZsJiGLbOIrszAd2hRHUgQ5VeeoM0eD9eyAWHp5SVi9YcixMUNbn5ERPu4
    ppK2A/sHynDjmkXHXzuNwN8dwcUjTMTVt9bxGrLVJHcJUsK527dv6/UG1CfZYnzT
    nca4GNO42/FBjQtyJaTQd76aJQ/PSU88MMGuMUh9LYl9rRdMQKn4FXm/6t7NZOqx
    qvXzEC8jFw1BOvxhmykSEZDlwZFwQngDre9Ux68Eu6Nut554yrRIRmVsaXBwZSBk
    ZSBNZWlyZWxsZXMgTW90dGEgKEZyZWVCU0QgUG9ydHMgQ29tbWl0dGVyKSA8bGlw
    cGVARnJlZUJTRC5vcmc+iGYEExECACYFAki8sBICGwMFCQPCZwAGCwkIBwMCBBUC
    CAMEFgIDAQIeAQIXgAAKCRAjG68g8s99rlhsAJwNTFc1W0eu3Em6+RjD9WZWtX/1
    0QCfb2riDssKYX42D7HhVjDvTe1BtXq5Ag0ESLywEhAIAOQrj0PRt1WOC3Gh1njF
    KDacQl1aJ5f52yaz0FLpu7igTRS/8ET1+uHvIwzcSbbG/4xWqPwirMxpNZwpFMzX
    9l8bURIX5szmJ+bEl4VH+La1p+w31YswBn0PDTSYtWhaIn1LMXED4e2Kg/wUCpLT
    M8htMa1pg0F2ZcmvbNZFuXMd3BBAkvWrRJTYuDXy8HHnbALjUd40laUDT3Wi6FRB
    W3HFj5lIiEjnJG52iTSxWVEkoChy7l/qDQ0zsguCCZZvLfdQz2DAFscjX/HltuUK
    s/gkzVR4jZDVMQPqCATuCvDYHrDWJnfU/R317Eg2kp2tJrNibrnFX+ciISSuq1+t
    UmMAAwUH/1XXvFtLACv8NFLVFVWM9wA70ZTLjZEEfewbWRYgT1yvOChn7H2ef3mn
    I7/WoLF3ntm8Qcw6TcSrzVbZjgdWpS65Wc5YZn1rMb6nP419kjDQPjvB8RUA1g9v
    7LuOv8qeqqo1/mT6PIh8ZnhWR42ei8l3QcbyGJMQGPHyUZk84qbd1TI9gO5GjWHZ
    LIi80DPb0cpazMCIgYjrqZsOoq4XcYJZah85Eu9jdqbx8aDNnag4NeO+9jhy1msg
    xC7WuLYPctfFZ3q5ZwdvvtfluyeKjqY5mzkAuXKbtK66yMLugU4NnR1IeS7oI212
    NF2FmCRAkCMB26n8sd7xavpd9uF+6ciITwQYEQIADwUCSLywEgIbDAUJA8JnAAAK
    CRAjG68g8s99rkWyAJ9b53BhFJ6+49cr0IIZLxVBGlWNnACfX4O3OOhx8kClRzsH
    1wm6VFjn7qg=
    =q3W+
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.188. Rich Murphey `<rich@FreeBSD.org>`

    pub  1024R/583443A9 1995-03-31 Rich Murphey <rich@lamprey.utmb.edu>
         Key fingerprint = AF A0 60 C4 84 D6 0C 73  D1 EF C0 E9 9D 21 DB E4

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.0.6 (FreeBSD)
    Comment: For info see http://www.gnupg.org

    mQCNAy97V+MAAAEEALiNM3FCwm3qrCe81E20UOSlNclOWfZHNAyOyj1ahHeINvo1
    FBF2Gd5Lbj0y8SLMno5yJ6P4F4r+x3jwHZrzAIwMs/lxDXRtB0VeVWnlj6a3Rezs
    wbfaTeSVyh5JohEcKdoYiMG5wjATOwK/NAwIPthB1RzRjnEeer3HI3ZYNEOpAAUR
    tCRSaWNoIE11cnBoZXkgPHJpY2hAbGFtcHJleS51dG1iLmVkdT6JAJUDBRAve15W
    vccjdlg0Q6kBAZTZBACcNd/LiVnMFURPrO4pVRn1sVQeokVX7izeWQ7siE31Iy7g
    Sb97WRLEYDi686osaGfsuKNA87Rm+q5F+jxeUV4w4szoqp60gGvCbD0KCB2hWraP
    /2s2qdVAxhfcoTin/Qp1ZWvXxFF7imGA/IjYIfB42VkaRYu6BwLEm3YAGfGcSw==
    =QoiM
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.189. 武者 晶紀 `<knu@FreeBSD.org>`

    pub  1024D/9FD9E1EE 2000-03-21 Akinori MUSHA <knu@and.or.jp>
         Key fingerprint = 081D 099C 1705 861D 4B70  B04A 920B EFC7 9FD9 E1EE
    uid                            Akinori MUSHA <knu@FreeBSD.org>
    uid                            Akinori MUSHA <knu@idaemons.org>
    uid                            Akinori MUSHA <knu@ruby-lang.org>
    sub  1024g/71BA9D45 2000-03-21

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.0.6 (FreeBSD)
    Comment: For info see http://www.gnupg.org

    mQGiBDjXWqERBACDCxgN9+yMfpm3yvkYp+P4Uw6xxPdcZ9RvnTRkBX9zXaRgSPmM
    zeZ63LpB99uVphVZrv/EdlyTf+cRdz6VXXRcTBloA/FsyY86IluBnWCH054WyXzr
    7az5WB9yDbPnlwcSL919bq0UqTuQUlQswdQAoDQG5LNNZNa0T01ydYtNlwCg3weS
    I/nEJrGCXGy2wrjg8LiwQ28D/Re2JHQPTYqDEZl6wj5U83wT55ChnTrjPRbGmr/C
    UdJP6CZQg6+DXYGYulcp3oL4btcdFDRFglJzmQNkUYmqiVC20SMVKUctrOCAI60P
    7VE40UtXz9EounPSRQQ1lSdMNeRwrZ9o7IcrSj0EBw8lw3d2WxyM2Rs2crZWfOI2
    mu8dA/9LbmAw5sLk5Lo5i41nAWP76pyuGxSia6zMRdML6ynoC5kmyrI9TwW5LNU/
    Lsq1Ru2XSA+CwSBpTt0vdwS88dDwPGxRuUHhWVpa1M5t7K7uYODB1cD5AyNoNnR/
    lHpxfPZOJNdA3OPgfssN9K+PIuhbBU5xONCoAcdC9TEqSezfUrQfQWtpbm9yaSBN
    VVNIQSA8a251QEZyZWVCU0Qub3JnPohWBBMRAgAWBQI411qhBAsKBAMDFQMCAxYC
    AQIXgAAKCRCSC+/Hn9nh7n1bAJ4vkEQX0JkcYgltt0Vv5qkS3bGqNgCguxfhuEzZ
    vBzpAW9/XdstjA/DSPS0HUFraW5vcmkgTVVTSEEgPGtudUBhbmQub3IuanA+iFYE
    ExECABYFAjnly3oECwoEAwMVAwIDFgIBAheAAAoJEJIL78ef2eHu7RoAoKn5Lw0y
    C+/lju5+pV0WI5dmxTzxAKDJRtsRSTBcJ7ohvzztxZqyjfSK+bQgQWtpbm9yaSBN
    VVNIQSA8a251QGlkYWVtb25zLm9yZz6IVgQTEQIAFgUCOZGiowQLCgQDAxUDAgMW
    AgECF4AACgkQkgvvx5/Z4e4t+ACgnr8RmYw81/oC7MKS2CSoFb9cg6sAnjKay6ho
    14iMG+YcFNbjxwGvSE9EtCFBa2lub3JpIE1VU0hBIDxrbnVAcnVieS1sYW5nLm9y
    Zz6IVgQTEQIAFgUCOeXLZwQLCgQDAxUDAgMWAgECF4AACgkQkgvvx5/Z4e5+zQCf
    Z/09J5FOgAqw3UrTTAzR6QWicG0AoJdlBcdUltEO4WV+q3FRlw4RVnA8uQENBDjX
    WqwQBAC09OxAmKbGn9FETdMA/5abvOY7JgNcFhQutEVnJ90mF/npBucWkCRbOr83
    t+NB0h5Te+lV/c+mjPyOemfWdAK4R9zQsat+ZqATv4Vgiy0UbJ/5TPfSraNK+QkX
    nxcDrhpcJXZhX6VYzbWdRSn8xSZzPT19qq0BFafz9UhZKXnLDwAEDQP/dpZe0jWw
    rED/Kbyr8CDoEKuun/5gPi5xmNz9iJlyvcsdOgok7yen0HHWgdaZAGX3GzjpB5gA
    aISX/kK66s+NeM1XQ7YXpcI8naf0jPa6N3SNWjLf3xPxLbMk0SyaGnrnSQNikk/H
    Bk2Nqyn0kcEaaBbdfrgkuuQWPnBDrq2EdOOIRgQYEQIABgUCONdarAAKCRCSC+/H
    n9nh7oxxAKC+gMyhZmSZdTvT3a2Y0RDOx5kRLACeP3JEvGZAZuo1sJeEw504+jr8
    1Xo=
    =M+Al
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.190. Thomas Möstl `<tmm@FreeBSD.org>`

    pub  1024D/419C776C 2000-11-28 Thomas Moestl <tmm@FreeBSD.org>
         Key fingerprint = 1C97 A604 2BD0 E492 51D0  9C0F 1FE6 4F1D 419C 776C
    uid                            Thomas Moestl <tmoestl@gmx.net>
    uid                            Thomas Moestl <t.moestl@tu-bs.de>
    sub  2048g/ECE63CE6 2000-11-28

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.0.6 (FreeBSD)
    Comment: For info see http://www.gnupg.org

    mQGiBDoj/ekRBACnO84k2i5lLHZKscyV8tjQSkkr26hasdbc/uyV7HTiPhMUjEAz
    Pamk+bDmy/Ls8k0SJ1l0vILBBd31G5VYtKonIrgp4vZ9gV0fBdCyFDXb8bh11Pk3
    pEZiG9vJevq40OPvsThLKHCLNhZ5zLPp6gd0IHwRJ0LU94pouFXd33MzrwCg4gTJ
    K00Dw0w1hFtUsq6WjNC+1B8D/2WiEuzBMnO6gz0p/eJ1eZ7mvrBXLQZ0u5vJ3eg2
    CCPrtS1ZITq3ICPDN6biEiMgtRmlYn/VYvDQqxwNE0X2yMfB/9sdah45zma9EeVn
    Iy8meaCFDLhm4aIYc1foUuz3WbCNlJFY5xYPXCMXLkC65xdybHKng5TXh6NOOWf3
    PfCWBACPMotTRKttAuw5YcZE5VDrSXPYHu/jm2CpIVmrac7+kDj9pGH9sB7BdUxw
    vczqtAT0jk7MrT+u3FH9wBtEFTXl7ksGTmDOFWJgYn3ZOEaVaX/OqD89UNhrOA2v
    ZOaaoKMYxK/pszPdr1Ghd6BQCmYKtLBlFYiTDRM5UMVHTqN7VrQfVGhvbWFzIE1v
    ZXN0bCA8dG1vZXN0bEBnbXgubmV0PohXBBMRAgAXBQI6I/3pBQsHCgMEAxUDAgMW
    AgECF4AACgkQH+ZPHUGcd2xMLwCfdEkPZVBgEmYnlyOKfyTSslMhud0AoKDKZNXA
    huNslb4KF8yKWBNRwfPStCFUaG9tYXMgTW9lc3RsIDx0Lm1vZXN0bEB0dS1icy5k
    ZT6IVwQTEQIAFwUCOo01FgULBwoDBAMVAwIDFgIBAheAAAoJEB/mTx1BnHdsOfMA
    n1xd4f7iAe6id42DLg4W3fibsCwsAJ0cT2lf08RhHkT+zLVoubyIDoY6ILQfVGhv
    bWFzIE1vZXN0bCA8dG1tQEZyZWVCU0Qub3JnPohXBBMRAgAXBQI6pO9pBQsHCgME
    AxUDAgMWAgECF4AACgkQH+ZPHUGcd2z+7gCdF5fq/lebn3/gp40O8xP/J0XFbiIA
    oKJP186L04qpSNamc/qG3gs7h3DGuQINBDoj/wkQCACl8M8ObSTJaOY4SgoQkKgB
    CkJJP5ScUpfYV9w3dxKL/77cyfghfYsnAWuA9yXJcjA0F+u+jRf8gS7OaHD9H9Mm
    pMGq54Aa0KUQaDbL/Jzf5zrKS/RASHzl1vYXuZB1OIzPfeAIx9u3UaziVEGXJha3
    1KgTur+TU+F94ZFTi8uApq2VoNT6sFi/V2x79bxlLFr9M9yD/0+kMZKovWRODy6T
    gWJzzcdd//dkvKp22tNf6C2wq8Bu60cWR81+awgG2otgZjCPUs2Bwhqa5opeUqGn
    J+f+PXo6+m2UF21m1vLARENuumu6SXf3XqGIUiQbT6jCdJORzwaxeCiMfu0qNnUX
    AAQLB/9u9gZN0N0r21ZjM6ZRmDC/REouCdYHEj49+f9g/xLXCfacpWVcrK9lIrcg
    hxRE2mQ/nlQLeHroC3Dp1AfThKSPFX3PRD/9CcRu480imT84ljf+6vonAZ20Edm5
    vVO+UoJMZQ2G+rWRRf4bDfwFoyDw3DsNmUL4yH8m2RpTxXn0pQtD2riJD8CBCXEP
    K95TYT4MomJ7Szg7O5/QLngfw0q6QdKRm1vEIP7r6t+UbVNp9+5g9qvz4aqm3beY
    pw1QCDHcqpDITnlTxTdV2SgNpF8JPg7joaOa36AxWwRzfLFyzyw/JGQE8RwJa8BN
    iTu0IrKuiF1biRxqiYO887GBA/8QiEYEGBECAAYFAjoj/wkACgkQH+ZPHUGcd2xN
    TACgkS0AGqqd2nLtWhpbE72tD660tv8AoI24cRkUa2op32mti5zfLLMsM4AZ
    =76WN
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.191. 中根 雅文 `<max@FreeBSD.org>`

    pub  1024D/CE356B59 2000-02-19 Masafumi NAKANE <max@wide.ad.jp>
         Key fingerprint = EB40 BCAB 4CE5 0764 9942  378C 9596 159E CE35 6B59
    uid                            Masafumi NAKANE <max@FreeBSD.org>
    uid                            Masafumi NAKANE <max@accessibility.org>
    uid                            Masafumi NAKANE <kd5pdi@qsl.net>
    sub  1024g/FA9BD48B 2000-02-19

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.2.2 (FreeBSD)

    mQGiBDiuMYURBACEgL3d4mL0pojugj8TZFEQef+MKkXB3lazrqV2ahgWqt6K24qr
    5fZrGkI8vxmYR4VkI1eLfe0Q4LoBZifL5nJYEvMvWPmdLuYjp4iwjgBdzLnwr59+
    k8+T/fohGDOqx45voCdq68Jmxg283zFGQ4FChMP3ZMlOPmFRIp01C84xxwCguNFG
    BVPeuM0y7JH0ucRygUqc4acD/jfe/UEjGBWxOCfZYOnXEp4NXWis3xRyUDO3cuoG
    8M8MEmg0dX0onFuNU5yrEBFtzPw2GO6DMM8h5hJXdSWkiyusn05PGk/jVSP9/MD5
    TYyqKL1tG/fKUgtevZSi7o1x/N0bgIBqmzd30Cqx29p7juVV+SBcKCRT1qloz6fc
    a5B6A/wJD5n3HOAStsWpZ6To/Apdb4A3PD4+ePfQxSICsHCFg/M04FkrG48So2qc
    7dSq6UH3xLsoiRIUonwCQsT+PaQQMrZNKjfal9xlEFfw1TV/squ+oNE8E24Lkzxt
    8Kkn86Ec5uiUlRulSMG9HJuWM+9Qu7TF76FWP8llVp6ELkYCGrQhTWFzYWZ1bWkg
    TkFLQU5FIDxtYXhARnJlZUJTRC5vcmc+iFcEExECABcFAjv4RDQFCwcKAwQDFQMC
    AxYCAQIXgAAKCRCVlhWezjVrWUEIAKCgwVSawCg1Lzrbf8uZdMAfeOWFXQCcD7EF
    tsdhbEV62AOUeQQWPr9de1O0J01hc2FmdW1pIE5BS0FORSA8bWF4QGFjY2Vzc2li
    aWxpdHkub3JnPohXBBMRAgAXBQI7+ERfBQsHCgMEAxUDAgMWAgECF4AACgkQlZYV
    ns41a1lUuwCgsIhWJdtPBebkV6w+NQ/8jlkJgrwAnj9lZkiTAgl1E/vcF7yPbY7f
    HlHetCBNYXNhZnVtaSBOQUtBTkUgPGtkNXBkaUBxc2wubmV0PohXBBMRAgAXBQI7
    +ESBBQsHCgMEAxUDAgMWAgECF4AACgkQlZYVns41a1nv1ACggYgtKhaprmMs30oz
    yoC0NatFJ44AoI0XSPh2G9zHEjF8AyYAe6sVCLqvtCBNYXNhZnVtaSBOQUtBTkUg
    PG1heEB3aWRlLmFkLmpwPohXBBMRAgAXBQI7+EljBQsHCgMEAxUDAgMWAgECF4AA
    CgkQlZYVns41a1lYRwCcC8l4PdrwHKNrZlTW6vod6kYgR3YAni8iLUZW5Se6nTH9
    WuN0XYPpZRG5uQENBDiuMdYQBADVzBBn5+1UQVCLS51y6eCD3TidT/uJAr+eeiWZ
    IbTmXrltNm5rGs7OT9QYNLhCFFPYKJxa9hFbrGpgserEFnqBfxcbMLa/wyIm9m/l
    MI+NNCAU4IpgDWtgjf1kjzwnJPwH69YzcqS2jlEKIjkCrEa/Bpr1Nvo4aLvqlTR8
    tJh+1wAECwP/YBMEMx/zgTvS3Jtji6nPceRe8icGRHb4SD7MVF/WxYu5VK7wlmuw
    9I9WXnHyYaL4c6Q49FAvwhkppByqJFL0txyJ8+nNa6H5mit8m6dcsCMG3NzyvxBP
    082h/MWbJn3Xdg89lp4UG3UP8sV1oWyIchd8rqxFk/EVB7fVQWNz/gKIRgQYEQIA
    BgUCOK4x1gAKCRCVlhWezjVrWUlcAJ467I5lFNlkwcENe5vND+DPaWyreQCfddOu
    6Va2/bf7Ln4TKyl17uRro7Y=
    =VmY5
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.192. 中田 真秀 `<maho@FreeBSD.org>`

    pub   1024D/F28B4069 2009-02-09
          Key fingerprint = 3FE4 99A9 6F41 8161 4F5F  240C 8615 A60C F28B 4069
    uid                  Maho NAKATA (NAKATA's FreeBSD.org alias) <maho@FreeBSD.org>
    sub   2048g/6B49098E 2009-02-09

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEmPtPkRBADEcSQQGME+Df6I9jnjUBNMxvX8aMAH0+SKJEn0xTZvu9WLQmJv
    Bx1Hh6AN8fD7OONFBYGsDAxbbgFnwxc/KPBctXHUxoTE3lRTFRwYJJKIKvrDhFjr
    qDWwLJ9TsUn/pDsBflPFe57okBlPgSywTLGLuurOaT7oda6Z2K0FOiALVwCgn/b2
    7R19gm0uKjzsEPejafW6lZMD+wQK4qETffrdqRoVRnzzpTa+xa60kQxxsIeibffy
    dovqH7HIWeqiqDwls17zmbMc7auNliyN7VJ1bQ2C5SkojMUqgEsVle/8gfe0cWhS
    2jJ8A3Xg+/IzYwj+TtlWqUkzx/b1Ck8v/9aRmLtTNo9OdC8H9Nu1onF3Cp0WqsiN
    gwNHA/4+8w5D5gouNWfuYkkzoQQ2jIFJ4zhe0GCb2MIrqKrf0N40NOcYFLi4eJ8F
    W1DAdQbQjfMMlYAknm7MBpnsagTqjS9MniPVygYUUre/xMx0tszvWdGdRSjEY/5U
    AXoCevBci0meKTm5ZSDb2RPOLezF/zOV82IY3T+OKXTHcLSeubQ7TWFobyBOQUtB
    VEEgKE5BS0FUQSdzIEZyZWVCU0Qub3JnIGFsaWFzKSA8bWFob0BGcmVlQlNELm9y
    Zz6IYAQTEQIAIAUCSY+0+QIbAwYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJEIYV
    pgzyi0Bpf4UAnjOqrSHlb4NdW+ulVFu3o8W1hbTKAJwIdn91S2W9V3ueKsbFqq62
    8dPYsbkCDQRJj7T5EAgAuaHr5IuEXaxoUcoZryGZweRs+G2Oh+jsMIvMABVGMZJ1
    iov7vSypm1EF6/cO3O+rn+Zcpuf4XKPP3TK1oKWLIYRgdkvTWwzVc/PGWRHdr6/S
    fo1B8/jr9tWW50p+s+KZoMPV/Rdz84AN8bNZVAMxNWXooYrGMxMvEDg3rX8KZW57
    25KF+GlYYBoIXxatMYGlZKz2lcaeD7Mf9EFs9jtpyZ2lhlXjWu3NZBdf4ClzWt/C
    uQI2mM2oEX6oZEDCgWvGoIPKzMruI/lAPi8I4Q9A3fH7azEz/BHW6yqLcXfmUrMe
    jsGTS/ovpV/dyxqNzsVpt203ZBxSSkSjOOMO4OzBOwADBQf+LVc888G6GxeCJGxp
    X+uACx6ziuaGO2AIvfUWN2KlDEpiCHwKf1L4FBE6mKm2l9ZloNyisnL8nvC/lmes
    whiTQkiVgB014EDhR7IoljZQJwpJqWC6HCwED08In2O/fI4JX3XiPbUzYSmQSpd0
    tMMBVBwkB3m8SnTaF7cnYrZVGL2oCrBxfbYYhxDtxmGnD3q1/me7dixUJLbEHSmj
    wXvORtzMuADmNuz3RkkEKrtHXgqtqYluZwb3VNlRa9T/MxMYMfMA9V8IYw4gQkM0
    xEM4UOUuweNyXRUSyuvcLQJthhWiw+Yfi9ATzdbnbwh1rwwVOoIhcM4QHBgPhnir
    vrn/k4hJBBgRAgAJBQJJj7T5AhsMAAoJEIYVpgzyi0BpqXQAnjkUgOmypg8bF5kd
    ZDVC/M0s8sUfAJwIJuJHTepRSP6qVkZKiXF5TRMt2A==
    =Rtch
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.193. Yoichi NAKAYAMA `<yoichi@FreeBSD.org>`

    pub  1024D/E0788E46 2000-12-28 Yoichi NAKAYAMA <yoichi@assist.media.nagoya-u.ac.jp>
         Key fingerprint = 1550 2662 46B3 096C 0460  BC03 800D 0C8A E078 8E46
    uid                            Yoichi NAKAYAMA <yoichi@eken.phys.nagoya-u.ac.jp>
    uid                            Yoichi NAKAYAMA <yoichi@FreeBSD.org>
    sub  1024g/B987A394 2000-12-28

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.0.6 (GNU/Linux)
    Comment: KUHASIKU WA http://www.gnupg.org/ WO GORANKUDASAI

    mQGiBDpK8uIRBACY5SwFQXiqzDlO1k/syoFoiFIFl/Dp+QmwK2oovIvlBVo/1gbx
    EhXrKRrfC67KSxxdUsgN290v/VVTmq8Opy1/RF+RAdxM3JrUfkcm5+IBWbSUfXFP
    i8OXBVgh7wNENVtwwD52F+0CFIWZXkClaif4DGkf38V6LJ6hBIycxuNDQwCggXTT
    Kj5SP2hFC0ueyQtPDoJEgbED/0bPL9R08io82IQqksOR9IUy0OdFJkLVWLnollEY
    LGjXa/AHgE8L8oWU/2eF1WM4JrtVRdcKe0Ja2e9LuH6IonGAdwqUeeAOwA/RdGj3
    63EglH5ugv4rZZKWZ3/piuNXvtq0bhAfl6zBHi5iUB4bgPVoVJGn3VyykPWxdqfX
    sT5+A/wIml11cFMogN3RXy/2Y3JRWeBtUCfdoRjeQPgK8++krm2Pr/AtHgcqNSjI
    W0slX4cLou2TEhV3BHb/4npsdaY0BzYgL7V1YggCv0Pu1s2D53Nzi30V66SRP0BZ
    OlNTA88WdMfoF3ttb04swSenG9X8dbpyYEdlvxNbbKKbUiBORbQxWW9pY2hpIE5B
    S0FZQU1BIDx5b2ljaGlAZWtlbi5waHlzLm5hZ295YS11LmFjLmpwPohXBBMRAgAX
    BQI6SvLiBQsHCgMEAxUDAgMWAgECF4AACgkQgA0MiuB4jkZz3wCeIi857V2zyRA7
    gRVsx+DcoCLeC3YAn2G3gFd+v14iZHXrPaqpd1gSjjayiEYEEhECAAYFAj2pty0A
    CgkQFwU5DuZsm7CchQCfdD/itI8d/uhmH9A0upJYYoYS46YAoOAfpFKvAGe/vBpw
    dy40SxBG/qELtCRZb2ljaGkgTkFLQVlBTUEgPHlvaWNoaUBGcmVlQlNELm9yZz6I
    VwQTEQIAFwUCPai4HwULBwoDBAMVAwIDFgIBAheAAAoJEIANDIrgeI5GKx0An1kh
    KzDAfR7Fzba/V7DHq2BRLcRQAJ9nZFgBncerxFMYAanwJruIYtPnJYhGBBIRAgAG
    BQI9qbcxAAoJEBcFOQ7mbJuwe4kAn1E2VVFpLajGFYgipCmMgpxRXPmxAKCUa/ee
    BEW5LPNf8xhaeIGlAtPZm7Q0WW9pY2hpIE5BS0FZQU1BIDx5b2ljaGlAYXNzaXN0
    Lm1lZGlhLm5hZ295YS11LmFjLmpwPohXBBMRAgAXBQI9qLhMBQsHCgMEAxUDAgMW
    AgECF4AACgkQgA0MiuB4jkYrnQCfUgkHO/ioUTHeBtYJHGeL9qthlnMAnikYzk6K
    gDV8cHI/ETcNoh542Q6piEYEEhECAAYFAj2ptzEACgkQFwU5DuZsm7A/JgCgvX8u
    hjU7WPofTfM2d11+j+ywHm4AnRS8iRNMqbP9+crcNzCRSQ7OZFqluQENBDpK8vEQ
    BAClmz0m/wuG01nst/7X+riyNgZ3j3oRurb9Fg2pb7wkci6nlhzCHTcFNCZiY1nS
    Vp+/3tRkC7HQPz3zhYo3ieCf12NUweJ8jhbZubp1fYY9ubKoj12I+LXTfZf3kA5G
    UD/n1nkAqxH2yP3eVz1BpKUc+Lz+5USiDo+XfrvfxQcZHwADBQP9GejakrIdVKcA
    /4UTWnMh8HK2b7tDLwLKyJg/8lagBkIAH5tPpCXi1qXuvHe+T9SjbdwW/lyxSARV
    FAz1ejp4QEWsAGQ/pchjb+S+iYvNq0VfzkZPqFFllLMaQc9mo6blgGgSEqLNpba6
    gDmVTJZ5jAhVxFBhRPwchSdPP3ewVRWIRgQYEQIABgUCOkry8QAKCRCADQyK4HiO
    RpwtAJ0alZHYWdBCXaPF9G9HCl/T40wzJQCdF5K4aEEsIG1P0WmNjbY4PEAVndc=
    =NZ/b
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.194. Edward Tomasz Napierala `<trasz@FreeBSD.org>`

    pub   1024D/8E53F00E 2007-04-13
          Key fingerprint = DD8F 91B0 12D9 6237 42D9  DBE1 AFC8 CDE9 8E53 F00E
    uid                  Edward Tomasz Napierala <trasz@FreeBSD.org>
    sub   2048g/7C1F5D67 2007-04-13

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEYfTV8RBADcVRh6fWX1XI43cTrdJBctCOxf9jZ6eedmhajkpMRhg7b0JPPL
    cYL6H1x1xqKbXtKxWE+BzQfdDJNJhwjQIwaXityWHihnkw5XBCRMuCGrUuaW/pPQ
    31EX1Am9d8k+ckUK8tPMNuWM8+ZYjXTJppLg20pIPBRwvmRR/hrHDhMvbwCglDGC
    ZfTHYkv36MFnkPHJH4iaQIkEAKoy+bcyOiJK0iuAx5KeF3CxP53Nd4sbsHKcbibP
    OsWJKKUHPlVTts6bUvM6RH+zUHOeWpXmgNvZTsvmoLU/E0I80BN5ngdOwV7oqeAk
    V03iltsBGIeBv5B0xxYDyQBuo52LV5CGZ7F65o1jGF8LWfZbtPh02gTmhYymmLeV
    QryDA/0WbmKavL5Dh7L4Ugz1JVIC6miD399IsLV+XewJjcaXnnngIplz0ZjK9hHx
    kuG4w3pi450z6gMTmpY1IPC7R158j/fLhygYLhB0sffXaGs50nizBlBoZNR/RZRJ
    7Ik1Q1E4dV5kVhgqBs6qPCfAdVMKGTWpM3xF2uyFT5xbuVPxIbQrRWR3YXJkIFRv
    bWFzeiBOYXBpZXJhbGEgPHRyYXN6QEZyZWVCU0Qub3JnPohgBBMRAgAgBQJGH01f
    AhsDBgsJCAcDAgQVAggDBBYCAwECHgECF4AACgkQr8jN6Y5T8A7L7wCfa7dxDhHm
    WYOcaZ3PiBCxbMyMeW4An2regIquPmK4ZyrJkfXGd7BmmgGKuQINBEYfTV8QCACv
    /cPnRLjvnYJdozvbzoBqC4m2sAmBClDV9cRtIGXu//ULZ0CnDmEByfp7W2Aqlm4a
    +WnDBlbKaP4td0uwvly3m2hNH3DS/7/aBaDYhPUeetmIP3GZrelGlQHqe1ldJuwD
    KEiR0ANagAikuSiO8Fv76YY2dFmUSWh6mNd6+/F6hYahByJbDXrsYNSMI7BtpH/C
    fPaSew66982uu86IGIZPREfKSYouLuuHPUwrGRbcwyeIL5y/0i6Eyxi3JuPHCYSa
    a0jX5VQ8Gn3P3SukTdK+rWaJQMlzjbdaZknB/GeRDEc6ND3eqdmQa/PdnkGVwHeI
    S17IutKHDCsxDqSJgak7AAMGCACJtwmr70SqnOxtHugDB0G4tAEN+poeol9zfEnE
    A1nZImvDNLUoX11YZRLHCc9nz2V7HIzTacNL8ue5DenmtSs72S3zHM/DnIhXjx8r
    hBFrSW/DdJB80LLcC/NhRcl3U6sof4nzYuipkgr7evAeoZqWpHiYcuag0ZRRH5Jv
    4Yh3R8zFYAg2NSKs2Q3CCX4c0vs1boZ1f2x4QQhxTpsDkjJxGPJ8OEAR7W5BjDOY
    KZBL9+02bzJKnOcbrtRkbylGZAQCxX9DoZDGHSCqaUBZMJZzWauW6xcwd4s91pMQ
    MVG1u5WHvZlOEo1Cg3Y9QSyehMKkcLwyuBj2zP+ijlkIBuFhiEkEGBECAAkFAkYf
    TV8CGwwACgkQr8jN6Y5T8A6VnwCfZdSh5TaDbb0wjcyUkVYAWZIo4n0AoJOfSvnF
    MeOHsJ51PEblZGwvjW0k
    =hc/r
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.195. Alexander Nedotsukov `<bland@FreeBSD.org>`

    pub  1024D/D004116C 2003-08-14 Alexander Nedotsukov <bland@FreeBSD.org>
         Key fingerprint = 35E2 5020 55FC 2071 4ADD  1A4A 86B6 8A5D D004 116C
    sub  1024g/1CCA8D46 2003-08-14

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBD87tOARBACkfv0/19ar/kUNsj2vL+APjo/cx0A0bubEmaPhwNuLOjtafdNm
    /pUULYi28lDVDxQJ8UM1voqrCcue+finCyy+k2L0nR37tlUA4t/+GH4gq4y2xL7S
    o/D5DqHDA0cTDAIQCbdD/rj3Z7nJw2Vkn3tAwZ6NUXV7OdLS+csbpJIjmwCg0HB1
    tzahpgegUe5XauCly+NXNMMD/3UcnNA7kBKSZMcuOVq7TkqYYvQZPoroK3yYcAZL
    Yo4WoPEyjtlD/ZpZVysQiSMxLXRHjsEbMAMZL7Tx/Sav01XUiBHBGDHXaWWVdqmg
    efxtBeoG7MZxAAXBLfcSeV0bjkd9oGWW/inHrl0NgEljZQqo1kbIEb5asooyT18v
    vZgjA/9l8xZdOlSJv7Ct+VGrfMStMmpBCn7IRSjeJRq2pNe0pbJtzXAnAwyrB62X
    gF6n7ONKdLk/WPihRdfrc4BZnNIWZU0q5P11rOENQEnToprAOYebhmS6cY0lx0SR
    M00HVTTgzsNVWDy9h+uOobicBSHPh2La7KGnFRtMb6pZFg5Y2LQoQWxleGFuZGVy
    IE5lZG90c3Vrb3YgPGJsYW5kQEZyZWVCU0Qub3JnPohbBBMRAgAbBQI/O7TgBgsJ
    CAcDAgMVAgMDFgIBAh4BAheAAAoJEIa2il3QBBFsAUoAoIGf7gn1DPL+Miw3/2W1
    YdJPT3TjAJ9LOVjgV1mZks+FjRdl1IETcJ4fPLkBDQQ/O7TjEAQA9yIaEvU/Vbj0
    L1xFjIOGEyM5vFvn5xP2LibOI7hUH+cMDaWkBgrSLqsI7k6P3HSTVWpkKUTl+vJe
    OJnIx1gFE/WJDPK5trnjzHQI9kWf6j8EREXCFuuvDy3QhuJiHTjB+I8IVYh+oiXl
    6SNo0ekvQd6KZlkPUXy8rczb8Y+A7GsAAwUD/iPYrIWC4xSX8kL6HFjaE2fS42EW
    iyfyb7slFSE2xtRf+xZyBa2Mu5XQsg+vJcSBsjrxpYdd+OuyTLuYRsYvuLZnB65H
    tTli1/ous2J56useJyeik9wJfFyZBlOtmw1QFLxELly+XgKiyGRNkTrws+smyFjC
    GWwhlhc40r824oWPiEYEGBECAAYFAj87tOMACgkQhraKXdAEEWySXACgwFVr9ZgH
    TYnmgWGXAmQWvJV+xAQAn2HlGDmOpuTDzfO5PvXOOWnFjvIt
    =bcPN
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.196. Simon L. Nielsen `<simon@FreeBSD.org>`

    pub   1024D/FF7490AB 2007-01-14
          Key fingerprint = 4E92 BA8D E45E 85E2 0380  B264 049C 7480 FF74 90AB
    uid                  Simon L. Nielsen <simon@FreeBSD.org>
    uid                  Simon L. Nielsen <simon@nitro.dk>
    sub   2048g/E3F5A76E 2007-01-14

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    =ggBj
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.197. Robert Noland `<rnoland@FreeBSD.org>`

    pub   1024D/8A9F44E3 2007-07-24
          Key fingerprint = 107A 0C87 E9D0 E581 677B  2A28 3384 EB43 8A9F 44E3
    uid                  Robert C. Noland III <rnoland@FreeBSD.org>
    uid                  Robert C. Noland III (Personal Key) <rnoland@2hip.net>
    sub   2048g/76C3CF00 2007-07-24

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEamZvMRBACgUM3B+Z/7yw5DtYP+4jNaSvvJBNPtLbHeCcXzAytD/Le3Tx/g
    /joJFJZS92agbQSt6p9SPnw1xguQ2YMdBQ5LFbE5ZgrXnDX9JUWjhyjTPKRbkFPx
    5G+JkTG9I75/ZVq6AhcOjXwsq/mkANhu87uOPRO2Uf/e01o3CplYIjRVPwCgiqwz
    wycuIxPvmWX3ao5gkV5iUgMD/2cVqZQ/uareIN2HF559LZkfjGdBA7U4H1cOD7hr
    pK27HTNcSAMpHP368AY5nSEUezQ8iOArCxx2xYMIvyxeaQ5wFgQ0kuwb21JieUdm
    6+cQ3uynJMSVVic5T4qoyC3mpu00VNBpCLJIk2zLk8CPDPQot6yB41622xXXHaix
    1efSA/9oJBP+6Ffdrni7hxAEgP2uG/lXQ/oG67UljMC1LFkiV0irE9O6G5UXFEVE
    FOQfXmXqLRoIjWaqDLdfADerSl6jeva70UfbiGfxHHkbltMZi2v3Xd6H2wmZKcSl
    RDYhdvNIhNDXfGAoaYneHN+JWYPDYebG5MyN1QyU5+kB7n7grrQ2Um9iZXJ0IEMu
    IE5vbGFuZCBJSUkgKFBlcnNvbmFsIEtleSkgPHJub2xhbmRAMmhpcC5uZXQ+iGAE
    ExECACAFAkamZvMCGyMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAKCRAzhOtDip9E
    47ceAKCI+rqu84IxKD8Rb+a1hL/+NqHotACeIg6ZGwFCNA2OOUchxF3hXvJ+mfqI
    RgQQEQIABgUCRqZ50wAKCRACwq9DxPQf7Ay9AJ9xShA298xcySmevKvX8sWC3LQ4
    iwCfbsQ7+AB2L4j25YgHK9CjF6f8s2K0KlJvYmVydCBDLiBOb2xhbmQgSUlJIDxy
    bm9sYW5kQEZyZWVCU0Qub3JnPohgBBMRAgAgBQJIhOEYAhsjBgsJCAcDAgQVAggD
    BBYCAwECHgECF4AACgkQM4TrQ4qfROOE6QCcC085r5aDgvzVDPvrZU+pSitB+BgA
    niwufou7zDg3AJGyf1MeuuFaZ1r9uQINBEamZvMQCACOvnyHYPRaWC7fFfrdqGxj
    C5ZnjHjYTg4vIUgVmPE096H+WflesmgOZ8bQH6J+3Pzpf+l6HimYtF+gMvDLIz0I
    HD1K2z75Ne6WlPKh8Is4lty1+knbOIDLqCSgFWcU1hAkj+Yr//oqUTlJ9qIrghoj
    L4w7QdMHGb7jMMLL/VHg+MXnQliD/UFAk9oF+/UbTfQwsanJXaydby0yjmXecyMo
    X20orSA/UKJe59Rc7sGOHf7uFoVByqsWQ/yesRmVsjxMNFGNMz1ekKFKHop7xcAj
    8DLYnrvdilD3MuC28USAZjSa2b84+oQJADQL1r+wT1bqWCEUvaIqf64b3Tpt8bIf
    AAMFB/9J9pOfPljyE3D0jy2azVr41mK7FG32FBpz4S1SIeq8DAz9OI+XuCoXd2Ol
    FA6oSepyBxG1Cz2dzhkobE3COPzwS6jRzPdsmZtkJ1Lp/t7w0FSMlOYqNkdD9OCb
    OxraGoL4PfoPgCsH80dY/On7e8COQs6rRPTOmx+FGqkdEaNXVyF8A7EoIUNi881j
    Cn82QjfR4pwFJ4KNeJRt+kBVE2j//VmsqlMcc1xBPzSwcO2YaURhF90qB9ql+bZx
    ENkoYgqdbkQwcPugdKJm4GzaX7OhdGprjH/E7Yj7fFmXhE2VsyQ8heGjKrRHgy/g
    4mTYKTTJnYHSXO+MThJ6JPwcgHxUiEkEGBECAAkFAkamZvMCGwwACgkQM4TrQ4qf
    ROMFAgCfYpxRT6ReISfiSqGLMBQndCh2ol0Anie8hp/BanOvY2jOiUUcfvyhIqrZ
    =bQIC
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.198. Anders Nordby `<anders@FreeBSD.org>`

    pub  1024D/00835956 2000-08-13 Anders Nordby <anders@fix.no>
         Key fingerprint = 1E0F C53C D8DF 6A8F EAAD  19C5 D12A BC9F 0083 5956
    uid                            Anders Nordby <anders@FreeBSD.org>
    sub  2048g/4B160901 2000-08-13

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.0.6 (FreeBSD)
    Comment: For info see http://www.gnupg.org

    mQGiBDmXNAsRBAD0WcmPy11DRvDsEpadBPCATmPrvAImfj5XjcxBAJlBJoc9fiq4
    8OcnipVdId6STdVKvB3K3h9aNsb75+rD/W3nMi8MumjyXJoHAf8d68cnjppizcPd
    uQPOy76lkbiyV9OYBtaNQqmU8hE8MTr5Kew9NBCoC4SB4NX8kVh8iglrZwCg8J4F
    ltBYDz+Z5ZGoh54fnYN6IAED/jO7ISCvWbFtnzCw1FOghcgueqrWoy0OYKq8ZfuO
    m046fuIlHcswJOKLLexTajsYAC0WWe9H3SvKvv1etexMh5SsrgWTsSuIvlPfG4oj
    D5vIYqvH5NiqJdh9qiFEzGsv44jgESDVy9qaErbXRVe9htuRZqbtEPnB5cRRwTr1
    WhfuBADW1VLXj3UGw4OeBBd5KPIYXCx7RKS4nfrlBCqMcIaiD+K42U+7PXEJB8uM
    2sJ6uRYs0j4tTLBbDC2TC1QfT5NIVLG5wWkIh+jL7PODH+i4LF8n0pQyuLwJOFAx
    s6RIHNPB2fdI5sqB9lMIBszlb896wVJf9PPWFAt/5Aekw7eTLbQiQW5kZXJzIE5v
    cmRieSA8YW5kZXJzQEZyZWVCU0Qub3JnPohXBBMRAgAXBQI76xZsBQsHCgMEAxUD
    AgMWAgECF4AACgkQ0Sq8nwCDWVZnYgCg4fzk40pYLg3iNayO9dDNp4yHS/MAoLi/
    WCYhNOS0TMpap9SQXC/2e0MZtB1BbmRlcnMgTm9yZGJ5IDxhbmRlcnNAZml4Lm5v
    PohXBBMRAgAXBQI76xekBQsHCgMEAxUDAgMWAgECF4AACgkQ0Sq8nwCDWVaoNACd
    HR57Uuyyti+OqVr4zaVEIgg+bYwAoMcFR3xdqArQmp561541p+k1IBUWuQINBDmX
    NGsQCADRkDqg2uW9mn5YCXlzx9KlhAfPRny6kF4+B+ga0ZaIzJng2pY8EsAxKn88
    yH6ERs/PYdsy/AyksG8vzuc9CalW8JFEc+kvtJIL0HhBonlInaeUWHPixGEcOPcW
    ab8dPhW3zfEgOqquky21d8Zg+G3Z29tmKGcYKSQgt6W59z7vITK7+gv7tOGp2IpZ
    1kGqPZn+JqvB3n/uWo3rTxOGA/tduMwfESA5gHmEzKmU/17yIkE0SflKOp0VIGdl
    Fp1A1ULJDDVXjtDkxFvZ1I+WpqF7p9FCgy/OHUfUa0py3uHIEKMahqpAZ9e8D+GI
    nGizPR33ZY5PfM72ABXeGhFnweP/AAQNB/9HPBzxoJJFJNLyosSlI+Wkmh51K/nC
    EawQG6a+tgL6cPHgJQkgthPUywkI+2g7SUSurgPz0hRCPg2PjHP3PwVhjKzUgfAj
    y9eVnu+JSpst/a0Y5LEQdNnwG+Y+Cs0q9xj4T1VXw8B9fA3y1wS1a13zCQjfLrZP
    ziIGjHIBvpOFrSU3ML1rRaVfQpm2wQXsGHzjkaZq7HQy2EOVLzik34XkPBY1DrnY
    nSEwSurfjTrKTLNYsN53xCGwJ2w2347qXr04j87XhRmGCJQ/Nrrin4z4LQ/zNm5Z
    bErlts8PAfR13kqP7rx/H1n5obhpOoXUqb4Rm94c0r/s9JRah9ppgADRiEYEGBEC
    AAYFAjmXNGsACgkQ0Sq8nwCDWVbTvwCcCG0X50Tq7V4NeGgREttltmR7UlYAoOgK
    1OFsIdCCq6JjrwvfN7ry3pwc
    =clge
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.199. Michael Nottebrock `<lofi@FreeBSD.org>`

    pub  1024D/6B2974B0 2002-06-06 Michael Nottebrock <michaelnottebrock@gmx.net>
         Key fingerprint = 1079 3C72 0726 F300 B8EC  60F9 5E17 3AF1 6B29 74B0
    uid                            Michael Nottebrock <lofi@freebsd.org>
    uid                            Michael Nottebrock <lofi@tigress.com>
    uid                            Michael Nottebrock <lofi@lofi.dyndns.org>
    uid                            Michael Nottebrock <michaelnottebrock@web.de>
    uid                            Michael Nottebrock <michaelnottebrock@meitner.wh.uni-dortmund.de>
    sub  1024g/EF652E04 2002-06-06 [expires: 2004-06-15]

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    isNkDxI+R1w=
    =LE25
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.200. David O'Brien `<obrien@FreeBSD.org>`

    pub  1024R/34F9F9D5 1995-04-23 David E. O'Brien <defunct - obrien@Sea.Legent.com>
         Key fingerprint = B7 4D 3E E9 11 39 5F A3  90 76 5D 69 58 D9 98 7A
    uid                            David E. O'Brien <obrien@NUXI.com>
    uid                            deobrien@ucdavis.edu
    uid                            David E. O'Brien <whois Do38>
    uid                            David E. O'Brien <obrien@FreeBSD.org>
    uid                            David E. O'Brien <dobrien@seas.gwu.edu>
    uid                            David E. O'Brien <obrien@cs.ucdavis.edu>
    uid                            David E. O'Brien <defunct - obrien@media.sra.com>
    uid                            David E. O'Brien <obrien@elsewhere.roanoke.va.us>
    uid                            David E. O'Brien <obrien@Nuxi.com>

    pub  1024D/7F9A9BA2 1998-06-10 "David E. O'Brien" <obrien@cs.ucdavis.edu>
         Key fingerprint = 02FD 495F D03C 9AF2 5DB7  F496 6FC8 DABD 7F9A 9BA2
    uid                            "David E. O'Brien" <obrien@NUXI.com>
    uid                            "David E. O'Brien" <obrien@FreeBSD.org>
    sub  3072g/BA32C20D 1998-06-10

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.0.6 (FreeBSD)
    Comment: For info see http://www.gnupg.org

    [encoded data, 10855 characters]
    lSVmAKDF3kyQAZDAyz+21MQJnmJ2O5dFJg==
    =cMCa
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.201. Philip Paeps `<philip@FreeBSD.org>`

    pub   4096R/C5D34D05 2006-10-22
          Key fingerprint = 356B AE02 4763 F739 2FA2  E438 2649 E628 C5D3 4D05
    uid                  Philip Paeps <philip@paeps.cx>
    uid                  Philip Paeps <philip@nixsys.be>
    uid                  Philip Paeps <philip@fosdem.org>
    uid                  Philip Paeps <philip@freebsd.org>
    uid                  Philip Paeps <philip@pub.telenet.be>
    sub   1024D/035EFC58 2006-10-22 [expires: 2010-10-13]
    sub   2048g/6E5FD7D6 2006-10-22 [expires: 2010-10-14]

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    [encoded data, 173745 characters]
    Vxk4GMyfzQpi9Sd1ZvWLZupmKm6i70IoKxfppi/HNF3fVt4u
    =srgn
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.202. Josh Paetzel `<jpaetzel@FreeBSD.org>`

    pub   1024D/27AFAECB 2007-05-11
          Key fingerprint = 8A48 EF36 5E9F 4EDA 5A8C  11B4 26F9 01F1 27AF AECB
    uid                  Josh Paetzel (BSD UNIX) <josh@tcbug.org>
    uid                  Josh Paetzel <josh@rephunter.net>
    uid                  Josh Paetzel <josh@pcbsd.org>
    uid                  Josh Paetzel <jpaetzel@FreeBSD.org>
    sub   2048g/E0F5996B 2007-05-11

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    =Xmyn
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.203. Gábor Páli `<pgj@FreeBSD.org>`

    pub   1024D/9E3F9BE6 2008-04-17 [expires: 2013-04-16]
          Key fingerprint = DA0B 2143 0FC8 EE5F E211  D329 7D4B 6E18 9E3F 9BE6
    uid                  Gabor PALI <pgj@FreeBSD.org>
    uid                  P�LI G�bor J�nos <pali.gabor@gmail.com>
    sub   2048g/A780C60B 2008-04-17 [expires: 2013-04-16]

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEgGzt8RBADdmkWC/Q4tpLhYpw9oidgWjyRRx/MgPRrGhtAvVdNTjbVoT4bl
    5e+v3CHoBih7KIh0BVQrux+H4UJ1Fou1wwwCrPH6ismBR5P9iZEGmBR/K0+1gBph
    /aUBANM1QG1FpAKMsYytqXiNk7mH/+oxomsbXBg8ZFGzlOWCwp3gvMZBGwCg7UY8
    YtV9L46nZMFIfzlj/tkNzh8EAMeF8nLv2qFsBT3ihYJRb27c/GtsnSUCQgwU5CVS
    Zx0QVb/zpy0syLHO+AeJnUIQWBKOhPpysXRlyMpjDlPu2b/VS9av01uLeHCCR9YE
    G/Jp4mCNswD0RLoQh0WrNtdr0kR0htr8mZrkRbZo+YoZPCdp/lD5JNq6fkS/Dgc+
    OGBsBACIOunHi0iEMnThJNznfLSA4hmjSdkrI249U5Ie8KfA5aXxaCX5o68tMgUV
    s/9hUBIc9cKoAkUf8t1XEADTik544HYm9FNULU55K1yEoG6dQrVm1HYVSl7uklE2
    mHkkg15nqapedChp2a+UhXYK4IthrBYcI4YVvQMBsMIFvo63krQqUMOBTEkgR8Oh
    Ym9yIErDoW5vcyA8cGFsaS5nYWJvckBnbWFpbC5jb20+iGYEExECACYFAkgG0YIC
    GyMFCQlmAYAGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAKCRB9S24Ynj+b5rQSAKCs
    f7zv5XU0wXzKF9Y/9kIH2CKg2ACcDIvhQGclbBZy1NWr96IEkesPVd20HEdhYm9y
    IFBBTEkgPHBnakBGcmVlQlNELm9yZz6IaQQTEQIAKQIbIwUJCWYBgAYLCQgHAwIE
    FQIIAwQWAgMBAh4BAheABQJIBtGPAhkBAAoJEH1LbhieP5vmlK8An3aLBPTXu/f0
    dWAovygPqgvjreGXAKDUrndv2PP84EhK4f4HDDwfeIVyPbkCDQRIBs7fEAgAyLRw
    XdnvIKENQFgcjI2XyPtcbe+mCs2miAdRWKPRq+RuVLu7ub1kYK13W9pYTJL5LAiF
    TBVm31uuoiN/sQaJMDz/Hz2DOLRsEcb+d5f/9ssiPUxMdYKnE+kYwXRvm15y6Z6G
    dNhFZWleNpFRuPYqy/HaUb5q8/quF5VcH/cDVS1tSTErPtM7i3mmnJOpdIdBrCPe
    VVJXZo5MWUp1wG2IIuyap8ddM5S/kHhhyujLxLNDnlTxYogGZz0qad/R3LeiYTfl
    Drn9cZzvFdPlmrSvdw78RH0tB09fRLoI8KjGHi/bTiF9Pai75OUwVMv4PmxjAF6s
    OLU9q8zGpr8XE2ykwwADBQf/XVmkCPL+BRd45e40ayCo4sqfMoh0mK6dP66FmO90
    tAHtlIfkK74mcb/XrHC0KoX7c/TSaG9C8uJ7NGYzEFQzlzY8LlAfW/P+LjIpXjk5
    frEItGm0fCNU/+eBwcobO9gfWHDHucfocar8/pnot2PhwJpRFy1/xUa8oHXxNfW5
    IXnb67uCDPl4xFy9GkPPsgFZ4QI9+S7do0XYDEwfvzELeNTANAzMK+jIs5yzJ7mB
    mwI9orFltPfmc1y/EVc08LlR7qCsbosb/HMHO3jaMeKq1NIHyzRd70RZn5ow4B0Z
    zPQTJCWzfM0L5vAF96N/Rmrigwsg83+dE/a5e2791WRCRIhPBBgRAgAPBQJIBs7f
    AhsMBQkJZgGAAAoJEH1LbhieP5vmWAMAn2t7GwTeP9Hq3t1I1uU8AUGgS47cAJ0Q
    0CAkpRuxhi2FZn58aNBhvQPcog==
    =JvPF
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.204. Hiten Pandya `<hmp@FreeBSD.org>`

    pub  1024D/938CACA8 2004-02-13 Hiten Pandya (FreeBSD) <hmp@FreeBSD.org>
         Key fingerprint = 84EB C75E C75A 50ED 304E  E446 D974 7842 938C ACA8
    uid                            Hiten Pandya <hmp@backplane.com>
    sub  2048g/783874B5 2004-02-13

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEAscLQRBADERe+RX2eJpYLoaJ7d29B8YcTYzNlsfzghM1R1/Dx2RDy5poKa
    Jn9j+Iptq1qS9GkTHXFcQh8LT2K7wnE/MZTCxkZvg2ZkfQbJ4Z+0z3A1A6Kvg0tH
    X5aqmPUeLXvnps7nqZxkhl2ibcjhH/VYZK3mdRikd1wtJD1EhbbeqaR8BwCgkQAG
    vdJHN9gfjLLcM12EitkjoUcEALoo1bPoULWd4YhVH7W5L3Qp0dr1vf5pYC/V7FQ+
    8yPXZtGzMvIld8iX1sv/zsw4EoXXsaRzJo/ixdCS1WYBPowryu0G/LX5w0RTTGHc
    ihcHLm6ZmyNuIsTQ1ifLNASJoLkNBlQAuA0VG4evAujrmaWyEHbbIDSQKUJOjL9u
    jb2HA/9pycrr3+735Aa7B5jThN6p1XEC8GQg5MDx23QnTPj9QHXH4qs7s+hwxZq9
    3WkVFBcJtDBi8PeEVqfD/QPeU3ewbnNnfaF46miGV1iG1mzU4zMq4n5oBdijf5eL
    cRRdOJytYKTvlSCe8gf0MzfaB3RqD8+Cjcs3PtQOy1VT4aQiv7QgSGl0ZW4gUGFu
    ZHlhIDxobXBAYmFja3BsYW5lLmNvbT6IXgQTEQIAHgUCQCxw7AIbAwYLCQgHAwID
    FQIDAxYCAQIeAQIXgAAKCRDZdHhCk4ysqEPZAJ9ByMndfTtnnVIbsyHc2NjDp5F/
    vgCeP6o87Lw4aHuGo5guA9yeWwtwAla0KEhpdGVuIFBhbmR5YSAoRnJlZUJTRCkg
    PGhtcEBGcmVlQlNELm9yZz6IYQQTEQIAIQIbAwYLCQgHAwIDFQIDAxYCAQIeAQIX
    gAUCQCxxDgIZAQAKCRDZdHhCk4ysqLchAJ4+01/uQVdqdDeESGodcvgKsrieqACb
    BIW7HMvh85WqofTeAK5pJu7hCM25Ag0EQCxw2BAIAPXEkkg6lSxGRmVH1yzRnSKr
    /M48xyRXYDrRPaVVBFkC4Af3CR5MjncJtjbzm7xH82glC67cksRTfTZRs7kJsid+
    g62V53dAu1Uoj8ecSDhblb8yW3rTLKVqGcliGcTRFivcm+ZFm0kc0xCQE3rd1COX
    NLEomMV6xuZ9PVzDAbJwAoGdpCYsCl09eZrTErueQ7pEVsLx9/0zQSmC/uDFEVZ7
    23GsJg23+EUBT5KuTxQ4i0k++Ccr4HR/OiUy6KmyXSNsKsBsXwm3map3Debqqqx1
    ssrDXa+PHkKEUrONQBoYbZ17DpPZb+NKWibi0Vp1HKPP2vZl4NZQC0GBLXbEudMA
    AwYIAOYhwVTWKQSgeEZUNe4PwvHczx8/3VNjYZGY6/ZRjgmfO3+MagjonZqfxYha
    GpsEV17NXm4WIg6HWtI43JwIWfkUybsdxQVH4i5lWYuA26wD6UtNXw9laPHKXonR
    DvmKDC6K0iFbSxTqXRZVQ//wMxh58/Yw/fX+fYtmH6u6kPaL+CPRkhQLezTzZWHj
    2wF6v+frdglW1/LpwpCFndb1i5+36ogZ5ZudG/iz53QzlOF0IZSGHIb9tlQ+4gUn
    KfxpQloI+5vAyqpHDKIH9K26wTBzKsp5Mt4W6cLfgjXs7TNc8BVT8d4rmmbGpGnG
    pSjj7b1q6EhpIVBkAMLw7qanLlCISQQYEQIACQUCQCxw2AIbDAAKCRDZdHhCk4ys
    qAuZAJ0VNEtJSZOAGetxBJ/BMWahVD8xeQCfVKwTHdPh83Qcf28xx81icY5OKY0=
    =rF4D
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.205. Dima Panov `<fluffy@FreeBSD.org>`

    pub   1024D/93E3B018 2006-11-08
          Key fingerprint = C73E 2B72 1FFD 61BD E206  1234 A626 76ED 93E3 B018
    uid                  Dima Panov (FreeBSD.ORG Committer) <fluffy@FreeBSD.ORG>
    uid                  Dima Panov (at home) <Fluffy@Fluffy.Khv.RU>
    uid                  Dima Panov (at home) <fluffy.khv@gmail.com>
    sub   2048g/89047419 2006-11-08

    pub   4096R/D5398F29 2009-08-09
          Key fingerprint = 2D30 2CCB 9984 130C 6F87  BAFC FB8B A09D D539 8F29
    uid                  Dima Panov (FreeBSD.ORG Committer) <fluffy@FreeBSD.ORG>
    uid                  Dima Panov (at Home) <fluffy@Fluffy.Khv.RU>
    uid                  Dima Panov (at GMail) <fluffy.khv@gmail.com>
    sub   4096R/915A7785 2009-08-09

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    [encoded data, 6630 characters]
    gvGn3mxLairK5wBG/6nAxa+uon8t9tl7FKwiMg==
    =Jlk7
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.206. Andrew Pantyukhin `<sat@FreeBSD.org>`

    pub   1024D/6F38A569 2006-05-06
          Key fingerprint = 4E94 994A C2EF CB86 C144  3B04 3381 67C0 6F38 A569
    uid                  Andrew Pantyukhin <infofarmer@gubkin.ru>
    uid                  Andrew Pantyukhin <sat@FreeBSD.org>
    uid                  Andrew Pantyukhin <infofarmer@gmail.com>
    uid                  Andrew Pantyukhin <infofarmer@mail.ru>
    sub   2048g/5BD4D469 2006-05-06

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    =47um
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.207. Navdeep Parhar `<np@FreeBSD.org>`

    pub   1024D/ACAB8812 2009-06-08
          Key fingerprint = C897 7AFB AFC0 4DA9 7B76  D991 CAB2 2B93 ACAB 8812
    uid                  Navdeep Parhar <np@FreeBSD.org>
    sub   2048g/AB61D2DC 2009-06-08

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEosaGcRBACOXnXquGEW53BjpMt2jViod/TUf1xgjMekcbDxqOODPeX7eYfr
    wJ8G6BCNOpGjBmWDu/JcNj4Z+gmTilJ6WLZQ7ecFZfEeO91pt6ys0cyWh0xfO+/m
    T83D7W81S/kqrJBkQbBIdV6LumevdErHo272r8RcMELC4Ru87eRtX3hmEwCgnnGN
    JMpQFUfYTt5XE7nY0yQoeV8D/0OcWmJbEZWxX9O7AuliCe3zd2Dw0B4LB9SZ2Dis
    7+gpVd3xVgYnt5wRE9kM+ThgrMA/wqr807qmEG6bcfUsfwwGN9YUtNF3xAN07cXT
    s026sCIFNZK816PrThBzCgkwR7pDpkMzGWIBr8WiXXy0eB+JlQ6UV4PEiXuZ5ulz
    P0b1A/9CZm3wJfrNC0r1gMyrfVedg4zwKU997bmPLGcYs+rWXDTI9CvMseOUYn4C
    oDZQCp/9zxuHK+VU7Y/w0c/hVE5ERACSn4SjN2unEDstK9njZBMHEPVkAe/YvSG5
    cmc97SHlVE+eu/bbLKcvFb6rRLPOaVFQJMJA2VJEGWtYhvP7ZbQfTmF2ZGVlcCBQ
    YXJoYXIgPG5wQEZyZWVCU0Qub3JnPohgBBMRAgAgBQJKLGhnAhsDBgsJCAcDAgQV
    AggDBBYCAwECHgECF4AACgkQyrIrk6yriBL0MQCfUJOiS2PbJFDeiav1ylcXXwfp
    ggAAoJRoS7GDENGyM4BzjJ4b0ptZqTLRuQINBEosaGcQCACFCWs47SL4DQA6bNDl
    VJu4w8wLf8uVOyatuGmdXX8Y/OTVQJgA3vS+ODNVJCxhKVlvhcn7bhBdGdWKS9K+
    lr8+eEvr4hf2bQpesoHC+uFgKyILkCBNL8raixbhysyq0pfZWWDJMyn+G42BG1yJ
    Ji+bykygdpYnbIVA8dYHmBibI8mkPKOHSohjXT1SRfGGn+l1w54OO4NlJhCXMkjT
    A/Z9Bt4XeaiR85uJi0UUfV8FGZHhgSvT+/P1xIvz+nytuehSP/QLXl13CtAG/nKV
    kAcZnsT/3NrJ4Z2r45k+c50Wrf210scAaBogrrV5eIHfNGgOANApN8+8vj+aXO4p
    XRuXAAMFB/44ea8rd+P5N3OMrfuM8i91Qe1bJ+BIoroKPOr8jvCry0h3QpdfLKUN
    IgaqbS3JZeBJ8HHnWSGCF+o6H5gzRe1hvylPEclLPDCuPe7T746h9Mzejf2hNDJv
    Og+BuweDZW4KhovVbdS+syJEvpGF4bO8qgHT2CKgruXSHbFetdQWbkM0rfMmTuo0
    GcR2BEVrPb/SPFv64ZZyAZzmnGO4vT1bzClnTzJixrDpH74M3vSEYegMB4KdbLYB
    i8Jx4QUKgVEhJHjJubKWX4etyU/uuehOC3xYrmr1UXvsom3U8r36Dvdo77Yr3dgD
    VXa7bolNx0TIhdWxZI+R4z9E75QY+/wgiEkEGBECAAkFAkosaGcCGwwACgkQyrIr
    k6yriBI+JQCfUxgyqGtzZvLh5Al7gsTmRc11PLwAniD3NfWGRcO2+9uxSSQqRH1y
    wC4n
    =tqY8
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.208. Rui Paulo `<rpaulo@FreeBSD.org>`

    pub   4096R/39CB4153 2010-02-03
          Key fingerprint = ABE8 8465 DE8F F04D E9C8  3FF6 AF89 B2E6 39CB 4153
    uid                  Rui Paulo <rpaulo@FreeBSD.org>
    uid                  Rui Paulo <rpaulo@gmail.com>
    sub   4096R/F87D2F34 2010-02-03

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    ik5Vxm3qOoCKPgBkTCUAZTCmZZ13YA==
    =vI+5
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.209. Mark Peek `<mp@FreeBSD.org>`

    pub  1024D/330D4D01 2002-01-27 Mark Peek <mp@FreeBSD.org>
         Key fingerprint = 510C 96EE B4FB 1B0A 2CF8  A0AF 74B0 0B0E 330D 4D01
    sub  1024g/9C6CAC09 2002-01-27

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.0.6 (FreeBSD)
    Comment: For info see http://www.gnupg.org

    mQGiBDxThkERBACPf5/QHmyM944qrl3hWlWvK9fZZR2c37rhxAeqDJ8WsEMPBTZK
    WPn9BsMk+2d8e62FkzYo6L5juekd8invwd1nnszFFJdTDWx+vpMMgYuHBmme0QuP
    OnlU2FwJUCknw5Ed5pYV8F6azGgUNjYKIIJi/L3D9S2qDZ7l+3DgD0knKwCg4o8Z
    ZE2vd9uQw0AZ7lIa+li3hB8D/jHrVZqHxhOuUbxIXoJG3g54mH4i9GF8uN8ZdhA0
    9AxLVLzjLr4CQd97++LdSLagSvgD9N6OrtMPeqge4Frr1anJ+LRPDeOQhd0meJZB
    iCiekil4DSOsowqgmIG7DlAJx+PNV66qO1ExX1fv1ugyoWHJqYmdBSF9x1fHU788
    GxCtBACC9DLBMmMVu1Fsw3rnkZaR7xX1a1Bu95ZUu6TKJP6qUS5GnQOxF7dDjuwX
    /uRinkQ7W9vR4UuVvcV+Ct5R/yq7e+SfLb+YFQ2BmWeGNs5AVLxIZsZ0ar16fwB9
    XdxxHU/IkA3kYo4JfTvi3QXjLn4mbYUuBIVGAL63UO1kx1c8crQaTWFyayBQZWVr
    IDxtcEBGcmVlQlNELm9yZz6IVwQTEQIAFwUCPFOGQQULBwoDBAMVAwIDFgIBAheA
    AAoJEHSwCw4zDU0BXeQAoMlSoeOO5WtFMyC8viNAafpPcT6hAKCcjmQyI/cI0id2
    PMX9ZOfrKd/ma7kBDQQ8U4ZDEAQAw9gcDj02cAlUh8G9bLIQazPLJnX0fah7KB3O
    kxh8wFn0LliP7W7HLB+nQNyO4TfNgI0bhVyKDQQbKI2xJ4hylo9Z1K2R7GilgCnB
    FUqIp0MdqAswX2Dq7KXoyYAZRBOnQounUMaQ+6cfRI37mWc6dC2uY5qHne4zmLML
    /lVOjVMAAwYD/1ZArkN4IDk/VALPnzW4VYcCcT+101DMZfIMvHK2MiwWFmO+Er/K
    gIo9DrybHNQ6+bVQh/F6PSlxDrgWey7dQbHQSssC364v3RPOCmuBJCMTEszaais3
    VekHF9i9NMsUzbGpowaQv+YKMFQu4Rtlwaq7NUp/cD4a+jaxto9ij4EliEYEGBEC
    AAYFAjxThkMACgkQdLALDjMNTQHvuQCg1PrMlcafQ3BUaXAQRlGoyvF2WcQAn17c
    HA1RAO/MXM99nT62+AKLlpeb
    =mfY+
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.210. Peter Pentchev `<roam@FreeBSD.org>`

    pub   1024D/16194553 2002-02-01
          Key fingerprint = FDBA FD79 C26F 3C51 C95E  DF9E ED18 B68D 1619 4553
    uid                  Peter Pentchev <roam@ringlet.net>
    uid                  Peter Pentchev <roam@cnsys.bg>
    uid                  Peter Pentchev <roam@sbnd.net>
    uid                  Peter Pentchev <roam@online.bg>
    uid                  Peter Pentchev <roam@orbitel.bg>
    uid                  Peter Pentchev <roam@FreeBSD.org>
    uid                  Peter Pentchev <roam@techlab.office1.bg>
    uid                  Peter Pentchev <roam@hoster.bg>
    uid                  Peter Pentchev <roam@space.bg>
    sub   1024g/7074473C 2002-02-01

    pub   4096R/2527DF13 2009-10-16
          Key fingerprint = 2EE7 A7A5 17FC 124C F115  C354 651E EFB0 2527 DF13
    uid                  Peter Pentchev <roam@ringlet.net>
    uid                  Peter Pentchev <roamer@users.sourceforge.net>
    uid                  Peter Pentchev <roam@cpan.org>
    uid                  Peter Pentchev <roam@cnsys.bg>
    uid                  Peter Pentchev <roam@sbnd.net>
    uid                  Peter Pentchev <roam@online.bg>
    uid                  Peter Pentchev <roam@orbitel.bg>
    uid                  Peter Pentchev <roam@FreeBSD.org>
    uid                  Peter Pentchev <roam@techlab.office1.bg>
    uid                  Peter Pentchev <roam@hoster.bg>
    uid                  Peter Pentchev <roam@space.bg>
    uid                  Peter Pentchev <roam-guest@alioth.debian.org>
    uid                  Peter Pentchev <ppentchev@alumni.princeton.edu>
    sub   4096R/D0B337AA 2009-10-16

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    [encoded data, 158990 characters]
    jjAqbYfJRPjeyqTOUA==
    =S5L6
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.211. Denis Peplin `<den@FreeBSD.org>`

    pub  1024D/485DDDF5 2003-09-11 Denis Peplin <den@FreeBSD.org>
         Key fingerprint = 495D 158C 8EC9 C2C1 80F5  EA96 6F72 7C1C 485D DDF5
    sub  1024g/E70BA158 2003-09-11

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBD9gSfARBAC0ZC5VEuEzqk8KQ3tFam5rugDTaigVzYDmT6XBrQuVwYrFY5zj
    gz3o87e/KGmvh0FgpulhoJpkOW9l7oPQpp0wvEm45WRq17+7quW9VppgVCzs79FL
    Cc77A4g5LAuO27i1yygfMfPrr6J/M5bM2FyuUS35QvKBTlkZiB/Zt1d1QwCgzJML
    PdRvozXQdg6/bPc+M3Wh9AsD/0NxL7cwGExg57hnxA3oNB4M7IM1MwbDDaEQvJbW
    Ls8c+x2UMzdE4XHMhr940GiwUzEa1lyy0M7FmB+cdFgqhJ1VFjYE6VyGkyYtticL
    my6Im5S4Pfvx7pO2qLmYW+OnbnC6FFgFPbsAZVl/1fy4hN7U2zQIMw3kIodFBnyN
    RMsvA/9uzITCim3ov/9x4OYX0BfUNNmczIZMvXbmcuDH+NfwkGu9pmRitx/AWHGJ
    chOv4vMuMnBHU12TV1dstlWrb+Q5DVrnbVUq90mUbxg2emvlv+xK2oZ9EBKjAv/z
    NFqySi52vd+OmgopbVI6bI2+VdKrKeNcDByt/2zRGo9Y9hDULbQeRGVuaXMgUGVw
    bGluIDxkZW5ARnJlZUJTRC5vcmc+iFsEExECABsFAj9gSfAGCwkIBwMCAxUCAwMW
    AgECHgECF4AACgkQb3J8HEhd3fUzKwCgj1hA+IDNLHGdD+ua2bs3nPcL+vMAnjR8
    6CwsvOZIL5cr0EyveMsGNWqnuQENBD9gSfIQBAD+YKY2v46TD994B3h0KtAI8/Zd
    aJ+K1yUNIDxjueo7v+c3jKaWPgX1h+Cr/O936IVnG1zg81zEF0Ly6NcwWrj70UDO
    deA4tvx8HQoYfjwRA2kYAv73yvt+UG6WS3cGkX28dcLb8/JEV5M64AYKhgqRX12m
    VJWIKdqMYzho8n0mCwADBQQA9WcaZB8RVj22I88DA6okYxiU2vqAN+QUvZfX0X1/
    7Rh3mB8iAXBuASEw6NbQnGtky8RlkTDgYu1UJt0aSV2U2CXKOyPCJut0Ka+YYtOM
    prdHmnNSksNvwThju8F6js51nrf3D/7L9SFhc+W8JTfa8iz9Zfgq1HQkZ3foSO5J
    W0CIRgQYEQIABgUCP2BJ8gAKCRBvcnwcSF3d9Ut3AJ9WFh2gFxmqE8O3B85dO4yx
    z/OvxQCgsQynjVGZI9JJn1W0KOAYSbihdu4=
    =kQUf
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.212. Colin Percival `<cperciva@FreeBSD.org>`

    pub   1024D/0C6A6A6E 2009-01-12
          Key fingerprint = EAF4 8BBA 7CC7 7A30 FEFC  0DA9 38CE CA69 0C6A 6A6E
    uid                  Colin Percival <cperciva@tarsnap.com>
    uid                  Colin Percival <cperciva@FreeBSD.org>
    uid                  Colin Percival <cperciva@alumni.sfu.ca>
    sub   2048g/DC606691 2009-01-12

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    =RYUS
    -----END PGP PUBLIC KEY BLOCK-----
    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.4.9 (FreeBSD)
    Comment: A revocation certificate should follow

    iHgEIBECADgFAklrBn0xHQFOZXcga2V5LCBJZCAweDBDNkE2QTZFIGdlbmVyYXRl
    ZCBvbiAyMDA5LTAxLTEyLgAKCRAy3h7N0JNH/J60AKCk8fKCpx2gXrbWMHrulX8Z
    mxuFNwCg+1koNtGfe3LQZj/CSV2zfr1mTA4=
    =GSTt
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.213. Christian S.J. Peron `<csjp@FreeBSD.org>`

    pub   1024D/033FA33C 2009-05-16
          Key fingerprint = 74AA 6040 89A7 936E D970  DDC0 CC71 6954 033F A33C
    uid                  Christian S.J. Peron <csjp@FreeBSD.ORG>
    sub   2048g/856B194A 2009-05-16

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEoO/iURBAC3FVq7xH4uRIEWRvmPzD1azqtwlQE3zipCf4K9B4EjKidksgP0
    56qAkWMvngWG7OW9YNCtZYgDNAINOGdw2pZYioERq7U+cdIPKSZrIP5WrpORdi8A
    4i3VmRKh19ztJEGb8jvthYDlEyvoABXmz/Bi3YHDkfjT0py02SnkcjikxwCgkGkL
    rNwWGviRd6hsBZZEeximSKcD/0OAthVoMmk4bMByWPoEWf5i3I3JHDeC4g3oEgYp
    7dxMaxboqjFmiTZ2xMwdR9wlpwE0ITSeVj5pMtswr8q3ghLdlXOpd4wn/vLu51/G
    ra7cFgNex3kCb+5tLfqZQCiK/Y8fQ6TJdowaxN0xtrdGbTtUR0BJMi7/AhNF1GxW
    HeE6A/4n/K5Z8EDq7e5HZ5S0lx3MAKy1QgS1tnO0aaHK3v+DtD4xbe9aV2ls39sh
    2Xu+z5QGkrx7q3HOSnC/DzMSYDG5I45GGNdDoBVmJ6IfvNICzXgM4hDh8KgIXNZZ
    PEkHN+uwTWCnIj1yhothpk86XBvyiEAbCTwQ5jWBmZkvLI2GdrQnQ2hyaXN0aWFu
    IFMuSi4gUGVyb24gPGNzanBARnJlZUJTRC5PUkc+iGAEExECACAFAkoO/iUCGwMG
    CwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAKCRDMcWlUAz+jPOYNAJ9WfWDy0ZlOC7q7
    KUyrq7e49no1SgCeO4nUcK5nLZKkyGXxTbnghFZegGS5Ag0ESg7+JRAIAM8UbDPn
    dVBYrvJqBwdWQA17XN6jycQC2smWLnJ6geaQfBgXAff5/Hn1LtPPG58k048yF6QF
    xOCzPOTrkjaL8GlyKGLK9jfctyC+zRl5FvNyJIBIgFRsJjBB9K3FpZEsxWltSyqc
    5mxf4D8VwJeDfWdgeqVgORapBruHm3MAf5B13PfBN8lV2Yqbo520U6ZWUtdTscsL
    2QLTZcrIN5aq5Wsuy4r8H90h3JYcOUK4PJTBNLmlmLEuTlENbv8E5YVvvgx/ZJ9H
    lX9FWz+w/hrEQIR2xnF8MJeAaOR3Q6cKgvFrH7PUHwvYxAXkXGWv6xsJ4VEA7a3g
    IOytL1l/8Zo0fiMAAwYH/3Sn6JzdbiF7peLiQ3SqbNSQV3aKxNP+PuGvuALiHKKd
    WgF5xjrBfgSjJbybwm4YtNfqLU/x8SEtEXVkyMozgWSMn2K/vFrgwURjG92IhDXJ
    bOzEDyx86/iJosMn2glcb9eBYGrmz92H+9a1Q1xMyuk7uD/+nFcJOj3GqnuFK54L
    //A6ott10Ddgg8JB3jehrzrOeg8/IdPifhT845X9q24b3kG0orzCIOk0/xyUyps+
    9A3j54Fp/atyVmHFPRedjGMwYPIqKQvFnzYuaoN/NT1yJZEFbyud/h1Kpi4+Z2/C
    Te9glz71eqlUSond5WFnLSd7GSuUxXprwC0bGQ61tASISQQYEQIACQUCSg7+JQIb
    DAAKCRDMcWlUAz+jPNDzAJ4lJdUYDs8aONEFRW/TpLMiepzPqACeN0HmbLJjwaVk
    tI1h5vM9MqGGVwo=
    =p6fK
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.214. Gerald Pfeifer `<gerald@FreeBSD.org>`

    pub  1024D/745C015A 1999-11-09 Gerald Pfeifer <gerald@pfeifer.com>
         Key fingerprint = B215 C163 3BCA 0477 615F  1B35 A5B3 A004 745C 015A
    uid                            Gerald Pfeifer <Gerald.Pfeifer@vibe.at>
    uid                            Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
    uid                            Gerald Pfeifer <gerald@pfeifer.at>
    uid                            Gerald Pfeifer <gerald@FreeBSD.org>
    sub  1536g/F0156927 1999-11-09

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    [encoded data, 29640 characters]
    =3Uph
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.215. Giuseppe Pilichi `<jacula@FreeBSD.org>`

    pub   4096R/8B9F4B8B 2006-03-08
          Key fingerprint = 31AD 73AE 0EC0 16E5 4108  8391 D942 5F20 8B9F 4B8B
    uid                  Giuseppe Pilichi (Jacula Modyun) <jacula@FreeBSD.org>
    uid                  Giuseppe Pilichi (Jacula Modyun) <jaculamodyun@gmail.com>
    uid                  Giuseppe Pilichi (Jacula Modyun) <gpilch@gmail.com>
    uid                  Giuseppe Pilichi (Jacula Modyun) <jacula@gmail.com>
    sub   4096R/FB4D05A3 2006-03-08

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    [encoded data, 6305 characters]
    Z8VhMQ0Xfpv8p6kgxG3PEbR9wWq75cRBbNOEApw6YpKxlRCbKH8=
    =jIdO
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.216. John Polstra `<jdp@FreeBSD.org>`

    pub  1024R/BFBCF449 1997-02-14 John D. Polstra <jdp@polstra.com>
         Key fingerprint = 54 3A 90 59 6B A4 9D 61  BF 1D 03 09 35 8D F6 0D

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.0.6 (FreeBSD)
    Comment: For info see http://www.gnupg.org

    mQCNAzMElMEAAAEEALizp6ZW9QifQgWoFmG3cXhzQ1+Gt+a4S1adC/TdHdBvw1M/
    I6Ok7TC0dKF8blW3VRgeHo4F3XhGn+n9MqIdboh4HJC5Iiy63m98sVLJSwyGO4oM
    dkEGyyCLxqP6h/DU/tzNBdqFzetGtYvU4ftt3RO0a506cr2CHcdm8Q+/vPRJAAUR
    tCFKb2huIEQuIFBvbHN0cmEgPGpkcEBwb2xzdHJhLmNvbT6JAJUDBRAzBNBE9RVb
    +45ULV0BAWgiA/0WWO3+c3qlptPCHJ3DFm6gG/qNKsY94agL/mHOr0fxMP5l2qKX
    O6a1bWkvGoYq0EwoKGFfn0QeHiCl6jVi3CdBX+W7bObMcoi+foqZ6zluOWBC1Jdk
    WQ5/DeqQGYXqbYjqO8voCScTAPge3XlMwVpMZTv24u+nYxtLkE0ZcwtY9IkAlQMF
    EDMEt/DHZvEPv7z0SQEBXh8D/2egM5ckIRpGz9kcFTDClgdWWtlgwC1iI2p9gEhq
    aufy+FUJlZS4GSQLWB0BlrTmDC9HuyQ+KZqKFRbVZLyzkH7WFs4zDmwQryLV5wkN
    C4BRRBXZfWy8s4+zT2WQD1aPO+ZsgRauYLkJgTvXTPU2JCN62Nsd8R7bJS5tuHEm
    7HGmiQCVAwUQMwSvHB9/qQgDWPy9AQFAhAQAgJ1AlbKITrEoJ0+pLIsov3eQ348m
    SVHEBGIkU3Xznjr8NzT9aYtq4TIzt8jplqP3QoV1ka1yYpZf0NjvfZ+ffYp/sIaU
    wPbEpgtmHnVWJAebMbNs/Ad1w8GDvxEt9IaCbMJGZnHmfnEqOBIxF7VBDPHHoJxM
    V31K/PIoYsHAy5w=
    =cHFa
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.217. Kirill Ponomarew `<krion@FreeBSD.org>`

    pub   1024D/AEB426E5 2002-04-07
          Key fingerprint = 58E7 B953 57A2 D9DD 4960  2A2D 402D 46E9 AEB4 26E5
    uid                  Kirill Ponomarew <krion@voodoo.bawue.com>
    uid                  Kirill Ponomarew <krion@guug.de>
    uid                  Kirill Ponomarew <krion@FreeBSD.org>
    sub   1024D/05AC7CA0 2006-01-30 [expires: 2008-01-30]
    sub   2048g/C3EE5537 2006-01-30 [expires: 2008-01-30]

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    [encoded data, 10855 characters]
    6MXOtw==
    =3Md4
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.218. Stephane E. Potvin `<sepotvin@FreeBSD.org>`

    pub   1024D/3097FE7B 2002-08-06
          Key fingerprint = 6B56 62FA ADE1 6F46 BB62  8B1C 99D3 97B5 3097 FE7B
    uid                  Stephane E. Potvin <sepotvin@videotron.ca>
    uid                  Stephane E. Potvin <stephane.potvin@telcobridges.com>
    uid                  Stephane E. Potvin <stephane_potvin@telcobridges.com>
    uid                  Stephane E. Potvin <sepotvin@FreeBSD.org>
    sub   2048g/0C427BC9 2002-08-06

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBD1QNM0RBADbw1IMsD6ShBkXQirwG9TUFkBfZOaGUB9nZZTGZzkDWsj9/8FP
    TacAKze6REEdtfADFyYolZrps+o0xVUI3ib5kzXnzz8yj41HTzR7PG0FcgINt5Ls
    yuq+d3ETSu2AALwNfolKy/9yIIcRFl1bI5cawOua5MB4VUaf4JHiyOikfwCg/zsO
    QReMvoKLcZkn9pcCH6EZHtkEAIxZKMcRaIuGe0vF3oP4GfuEXIa7K7R9ez0u3iiD
    inNPQ5vQuY0qJMLbZAu6wyqEP9wVXCdAiclBbPYRb9tabcV5gFkuXpLvq5E7pGkN
    hRF/rUeDxf/EKIklqe63KNqgzMZ2nM8lvoDkUrdSQL5dc2Y5a6VIq22QsgaraYmo
    j4p7BACAfCiZjND9VcNAQmTvEyNGslQ63gzUfE7D8Xlx2Glv4PP9AmZ2X+FRliY4
    YaARKDK+62bNTrJjQGiaIzz9LsFV5zpYvHBQ9KP6NIp5bP3ljaUwyAJt5+GT8sGZ
    ZOBpSmau+s8RmSPajjvSwACjWF9tP19IJMtnk+pMn1SGiVbMA7QqU3RlcGhhbmUg
    RS4gUG90dmluIDxzZXBvdHZpbkB2aWRlb3Ryb24uY2E+iEYEEBECAAYFAj3s8qYA
    CgkQpvaYsfdm3ZH1VgCg3x3Qbvq/n5W/xonGXqI6+LJXLw0Anj5AgE0GPTC1naYn
    KpFmD9Hb+m6LiFgEEBECABgFAj1QNM0ICwMJCAcCAQoCGQEFGwMAAAAACgkQmdOX
    tTCX/nvccgCeIGN+hK7GND/4+9BbHpXOOnnlsJ0AoOavUpZeUj/t6pw+ld4CU7t5
    iUrhtDVTdGVwaGFuZSBFLiBQb3R2aW4gPHN0ZXBoYW5lLnBvdHZpbkB0ZWxjb2Jy
    aWRnZXMuY29tPohGBBARAgAGBQI94tEZAAoJEJnTl7Uwl/57WiQAniYT7h0K32tZ
    1+PkyM0UUvu/Vg3JAKD2VXNsiI3w3o/xm20IqR/UwZtAVLQ1U3RlcGhhbmUgRS4g
    UG90dmluIDxzdGVwaGFuZV9wb3R2aW5AdGVsY29icmlkZ2VzLmNvbT6IRgQQEQIA
    BgUCPeLNjQAKCRCZ05e1MJf+e0K7AJ9YssAR7btTX0oE9MNYYVQBbfYNpACfdyiD
    QeQhD+7FNqs4cZ+GEsWMxJ+0LVN0ZXBoYW5lIEUuIFBvdHZpbiA8c3RlcGhhbmVf
    cG90dmluQG5tc3MuY29tPohxBDARAgAxBQJD6jKhKh0gSSBubyBsb25nZXIgd29y
    ayBmb3IgTk1TIENvbW11bmljYXRpb25zLgAKCRCZ05e1MJf+ewE7AJsEexwRGNC9
    uR8JUPjttVJG012/VQCfVg4M1xq2+h3Ys/DecKUVxt0uVsK0KVN0ZXBoYW5lIEUu
    IFBvdHZpbiA8c2Vwb3R2aW5ARnJlZUJTRC5vcmc+iGAEExECACAFAkXQf8MCGwMG
    CwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAKCRCZ05e1MJf+ey10AJsHFjVs9WEaui/i
    L9xfITeCmwkd/gCcDlRcmGUW3ov/jmeDzGFrE+MQsqK5Ag0EPVA0zRAIAPZCV7cI
    fwgXcqK61qlC8wXo+VMROU+28W65Szgg2gGnVqMU6Y9AVfPQB8bLQ6mUrfdMZIZJ
    +AyDvWXpF9Sh01D49Vlf3HZSTz09jdvOmeFXklnN/biudE/F/Ha8g8VHMGHOfMlm
    /xX5u/2RXscBqtNbno2gpXI61Brwv0YAWCvl9Ij9WE5J280gtJ3kkQc2azNsOA1F
    HQ98iLMcfFstjvbzySPAQ/ClWxiNjrtVjLhdONM0/XwXV0OjHRhs3jMhLLUq/zzh
    sSlAGBGNfISnCnLWhsQDGcgHKXrKlQzZlp+r0ApQmwJG0wg9ZqRdQZ+cfL2JSyIZ
    Jrqrol7DVekyCzsAAgIH/3fG4jw0qo+iUk3wwS3oLPf5USbiPYOjUZ9jpaII8pYE
    iH7i741cPL8qNpFgshJANd4sz3Iu/hu3xj8aWaZ+jDOM674U69lcv1hl/rrHESIR
    oHIwfjmExLtnFl/2NvQ7uKM2jKoJNERtbi5P7PfLqD2Y8xK1W8cFZmPuD404SBRu
    ubk5BrYXv94VU8rxE34uhOEuAW/I6uv7DhCcr+bVJzJQYCsHxHh79kHsHEW6KAGb
    W34S96t9m8mgl7Kb+KCS7CqmqlmP4/itf/26wfXf5ynhRrWpUuc+jbf6n9afjjzm
    0CWCBS6/f2OALgJX+J5DUG5TggtFVKMMQRf5Bv79F0mITAQYEQIADAUCPVA0zQUb
    DAAAAAAKCRCZ05e1MJf+e4YEAKD8ArLrD9l/sJDn45ZDBjs3PxAEWwCgoy+go5Wt
    0MmiyLIGfKRYTeFnh6A=
    =AbPN
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.219. Mark Pulford `<markp@FreeBSD.org>`

    pub  1024D/182C368F 2000-05-10 Mark Pulford <markp@FreeBSD.org>
         Key fingerprint = 58C9 C9BF C758 D8D4 7022  8EF5 559F 7F7B 182C 368F
    uid                            Mark Pulford <mark@kyne.com.au>
    sub  2048g/380573E8 2000-05-10

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.0.6 (FreeBSD)
    Comment: For info see http://www.gnupg.org

    mQGiBDkY4OYRBADvB+3Uh68SGrlbrq1MTAN/gnVaj4ztmA15X13bunGYdLKLEJdq
    rd9xFv5OgxGZXJ+sDhbKomJ7yrBGtUwC5kIrKXN+MPbO60yy30+kIVLKjXIv1d+c
    MlWhjFzHra7WGFmvhzYnbOI/zjlOR68iKHnwxhtKFOK9m2O3voURWLEuqwCgzK/S
    j4UGrPUmZf9XOZcKdnN07nMEAJrNh6aoVgK1xwpyO9uTURuCppqAUym/fr4xNQqh
    mngblwIACnV9FpBi1ogtX1iDo4YeQa7t7ALgdwTBbU8upVFYzoVByid9ibNu3OKv
    j9JvL55jUVg0wv6a8bEWjxnNK/zVa/HCzTbAzHob0CSgH9WmEJJEUIqI2/PG2dj+
    ZX3QA/4y6Gon6iya2wk0Zs7mrTj80kxLRMnuPN6geTGVNTfrxat+sA1PVpT2WWSo
    qOrPoyxcpUBbJ3VlFmuYDDgld4lJiGD/2SG5BkD6OoGlRnD5AMgUxQtQFnkloao0
    3md8UDucIJnJRF94pttQtv4lVKaocm4z0Fx6cWC4Ysupj1AG0rQfTWFyayBQdWxm
    b3JkIDxtYXJrQGt5bmUuY29tLmF1PohWBBMRAgAWBQI5GODmBAsKBAMDFQMCAxYC
    AQIXgAAKCRBVn397GCw2jxyVAKCbPwK2rDZx/oahfd4M7XJ4GoF0xQCcDExtL+DK
    wOugUQwfVIExB+HBM3y0IE1hcmsgUHVsZm9yZCA8bWFya3BARnJlZUJTRC5vcmc+
    iFcEExECABcFAjse9k4FCwcKAwQDFQMCAxYCAQIXgAAKCRBVn397GCw2j/OXAJsF
    bdYQGgCs3sXMOdb7pNUi2DL2kgCdFOFSojmWV9mulpzH6ceb/fKgoJC5Ag0EORjh
    UxAIAMrmc2VXtnp/WWhGne6yTirnnWjR/c+rSK8ixbAqTkdYnocY6gtBJliR7LSh
    Cv2RD8TaUc0ZZseHC5vR7VZKXobXUF7QqB1Rgzz/CpsFeEmxxQxZrVKNjwcMloSt
    wmH17yW5tBDg8+6KhFwHj40oV88/49L8utVMEW80gh9O9TlYw5qCAp5QKqkFS52A
    hO54xjTNdEpv/9yXpwQfgUqkAHM8MQhsaxmKCIQXUGt6Lp13aHDAYtMizED0LBjV
    3P3qCoc03P9k2nWwGGU7dukncYNNuLDW9xwkAfV9VQuPYCHEBiPTcRnn99imyvNz
    FNhOElHDttCyKtt1FdZZVAQzXusAAwYH/18mnEMMv4rMZglYb0PRCxaxwQYkxESt
    KyXEclTc0kgyaZnf4Vbdz1rroxxZLIf+16p/MVNFierz/7d5FbJYggCDSsBAaj4r
    Qe2/Os3oCnHyyQY+zF9Ac30CsxzgDxMYxYGJHr6x+s9cloZ3WwBFAO0bMoS/9T/9
    /S7L0d0litecox5et2yEw4AqHdCslGx5mX0os66uh99eeEwW2EQHSLklwUPReb7U
    6m+fNyWxq5w+qTPG+zcXdiW/117T1aONVmg29tSNW8S/syha2PCJ+IoordBus4mU
    kfa49yCuXyZAYDNLbkiqMVTDCqrH2+n1mbUuhRBaSZEvgqVfVLZzRziIRgQYEQIA
    BgUCORjhUwAKCRBVn397GCw2j7T3AJ0ZDGzVqNQBE07ntRKuzQQmou8YhwCgibYR
    ZJyP31xlO+Lt5FgzzeqcQwU=
    =DKp2
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.220. Alejandro Pulver `<alepulver@FreeBSD.org>`

    pub   1024D/945C3F61 2005-11-13
          Key fingerprint = 085F E8A2 4896 4B19 42A4  4179 895D 3912 945C 3F61
    uid                  Alejandro Pulver (Ale's GPG key pair) <alepulver@FreeBSD.org>
    uid                  Alejandro Pulver (Ale's GPG key pair) <alejandro@varnet.biz>
    sub   2048g/6890C6CA 2005-11-13

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEN3W2YRBACt8uucrC3Gv8Q2PoAppL0Gdmy+ufJkvp+e3QpNnEvYPU7jivtZ
    MBuMVzadeiE2FMfzAhD90bLOxomZSwIKAc+uiMqqXrciOGMEBFFcHNOgHGI48me3
    fBvzQ4weJjGQrdUVOuQOtCNEmPHHdXOG0Vks+2ZD2czYDmixUkysso1gXwCg5ETt
    H/u9qXgKHxwQN1znhppBHu8D/2/ikj7Y8S5evZauwQ5m1qBMz7GS4FyXH8LZPPC3
    KJW9AHiNSOl4a0g6bH17OTaa6OOljyO0MzbM0UQDJON9JvGLH4q3ML0QQ145yfvQ
    fxLbFMU0B3MSOgFUkpRrWflbsleBp0BH6MCUNzdhDVgyQxyLkyr+mdX6m7N+EiF1
    m882A/9hz6+cmex12xdJnhx/frVL2Ji2deY4JntneNcZS7FBCWCe5d4weYUlLUJa
    sAZuwe/8q5BftMfHXeJzwLc+8zJ2EU6HEX7QdJTezSb7Mjh8Py8T/7TkyjK9LYJ7
    hg8BSx7hQ0xo1KJoDx057GjkE2PGW+ngUyAExGvZHc4Gos3lgLQ8QWxlamFuZHJv
    IFB1bHZlciAoQWxlJ3MgR1BHIGtleSBwYWlyKSA8YWxlamFuZHJvQHZhcm5ldC5i
    aXo+iF4EExECAB4FAkN3W2YCGwMGCwkIBwMCAxUCAwMWAgECHgECF4AACgkQiV05
    EpRcP2HiqACfSVe9jQLEj8zM/iMLO3S5aLY6EawAnjIo6VapDopNW66BjRzFKQ+D
    P56HtD1BbGVqYW5kcm8gUHVsdmVyIChBbGUncyBHUEcga2V5IHBhaXIpIDxhbGVw
    dWx2ZXJARnJlZUJTRC5vcmc+iGAEExECACAFAkQy/PwCGwMGCwkIBwMCBBUCCAME
    FgIDAQIeAQIXgAAKCRCJXTkSlFw/YcLPAKDTcYP8Uso5mQls/wFYuOsfruyyXQCa
    A/xZlNpAz+akVuPQZRh4qqHH0nC5Ag0EQ3dbdRAIALqYTavt1809JFOCuiaOZBeC
    /qK5Hvi70rgyIyUJj6q0RrC6FzEOTKGQIaLZSdxhG50lw2KFOCkq0ARfhdrezR0a
    0WQApeSb63hd1lvOz8ocyPkUI1IKc7aD0aQfcplaf3NmQJ6HF0rEzenRUoxy3mro
    R1yddUO/HosbvaeSCRabM1ORqx/G3WFfmX6dHuLltvbModDmOr04QbQ4+gctmplR
    qtk7eRXAFAG+Fo7lkhF0z1KUFQF56kL3rDXaAQzE/Vv6Rgk9vOYGXLJQdngNIXhC
    KVzrkqrZXj4El1gfSR1Dl32AzZtY6acGF2GvMGm2R2udTHsYeyCYXKlBRu6xakMA
    AwUH/iRn8SsuszctzdLqNxideej+9FQ+nHaMBw3Y+N1tlkHeDVmPDNiTotOzYo/V
    aRhW3bAebwEQr5bOs/6bnDrK86b2PUuwC/XtE9nXF9f1QQvApIyKzW6VG/FsQIpd
    +5lNWfRDKmoUZpMeKg9bQCjeFk8tFXsnp6kn8NhEAMCCeDwiWYUl8pcFlNIwPs1M
    brkZ7QCbA8OFAK0YkzUqYmvKPIS2SjpMA+uPJ0674v8kMuh9VhcQj/1RKKR0q2Fm
    sUykWFoGEp1FAVpMkKa2cKS3vYgpobMjVYeMWhsWXAFM9hZT9gI5oKVo7ECUZEBO
    f9dufNDZ1UHAHlAojMMCW53/fGSISQQYEQIACQUCQ3dbdQIbDAAKCRCJXTkSlFw/
    YY8XAKCxojHrj/8OzUI3PFFTS1/afkj3HwCgz5wfMMjyDZG8rUt9ZFbUVN/RPs8=
    =iWC8
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.221. Thomas Quinot `<thomas@FreeBSD.org>`

    pub  1024D/393D2469 1999-09-23 Thomas Quinot <thomas@cuivre.fr.eu.org>
     Empreinte de la cl� = 4737 A0AD E596 6D30 4356  29B8 004D 54B8 393D 2469
    uid                            Thomas Quinot <thomas@debian.org>
    uid                            Thomas Quinot <thomas@FreeBSD.org>
    sub  1024g/8DE13BB2 1999-09-23

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.0.7 (FreeBSD)

    [encoded data, 5521 characters]
    =mFN1
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.222. Herve Quiroz `<hq@FreeBSD.org>`

    pub  1024D/85AC8A80 2004-07-22 Herve Quiroz <hq@FreeBSD.org>
         Key fingerprint = 14F5 BC56 D736 102D 41AF  A07B 1D97 CE6C 85AC 8A80
    uid                            Herve Quiroz <herve.quiroz@esil.univ-mrs.fr>
    sub  1024g/8ECCAFED 2004-07-22

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBED/zxERBADJcZlF+Rzm8wL5lPTTPA1zLwa9u4ZZeVheS9vRGTOC6Sfi2NV9
    feWCM4TR9CVtp2tAcVlrXjBzvhbeNajssCPn94qUh4z8ERJKT1R8n4zlilTcMTSQ
    qZ9t7mIpcpsmpCO1FvfozjfexpUSeLHONKlwHhXXQFdJm6bw3X+kZKUeQwCgut4g
    ilrxtY66n6pzC7jt8GaM1ikD+gLzk88lPNHA8hZurRaYoRD2cD7jOMk0WNuuRZLA
    4LsG+hJUyrPU5vLKou+2iXl6MBvjlYwY3FS5wc1PZ9tRRbMNIq71xCTXmSapks50
    M+/cVYhJhQTVWCFhY+HZLDJpiaeMEkTHqoXo6ePVSMgFDQXADv/hMIPkNheXzmXM
    yhw0BAC75FBSMcRJz8jOaHXSZ7AM9EdMhH4mru1YyfLzwqk0DQS7ToXc8mEpo9SJ
    c/rYfSHf6Egx9856sncCfLvoTScZDwWXvB7kJPOfXK0u8KK1uZBDAqEacmm2oEHd
    Xi0KbfW1zyqIPnLKjgu57OqSGyDBKzC2XuQvWcNk7Sol/Yxp9rQsSGVydmUgUXVp
    cm96IDxoZXJ2ZS5xdWlyb3pAZXNpbC51bml2LW1ycy5mcj6IXgQTEQIAHgUCQP/P
    EQIbAwYLCQgHAwIDFQIDAxYCAQIeAQIXgAAKCRAdl85shayKgHKNAJ9/qmkJgaMW
    zOFnMUGcH/fc9ksrZwCbBhYIuo/nnHe9tC53mIlqDoXOz/a0HUhlcnZlIFF1aXJv
    eiA8aHFARnJlZUJTRC5vcmc+iF4EExECAB4FAkEOc8MCGwMGCwkIBwMCAxUCAwMW
    AgECHgECF4AACgkQHZfObIWsioA0SgCdF2eAlmqyihMQVf/T8r/x6x385vIAoIhZ
    hhYxTsWZ4dUA1XmbEfZxMQPvuQENBED/zxMQBAC8M+1oDgxVjVnYlhapOHWNMDlU
    1LolN2B9sUm56K0UaCpnCsrm2Jc/kzr1egmjqxGkV1dIih65W+oPZQOBqq4mAvPI
    SRlE0MrcPCeRyzN4zSwqwu1o0rcCWaacPpNxnG5icluD1RPBDucRPhc8gFMmcfEq
    5pgw3LU58ZIrvB3FLwADBQQAjM9l/u6o0CVwRZ6XshuJQnc7Kt+su/xyZjkYqURp
    sZ8Q9xWgKI4Tv/x+IbgkU5D2vCu6FyfDpBMWsNnSxVJ8FaHCWDKLpDHxB0+RUcme
    HRcpvV+HnLvJtF1V0dRB3XVtD8h6TcGuntFlKHFTKKQk4H5X+fbsUdq4ycNwgNm/
    IfyISQQYEQIACQUCQP/PEwIbDAAKCRAdl85shayKgJrjAJ9S1aS1G9Vpq0kYjZHp
    pFmvrw+CbgCeIgeeepmX9+n+2YEAuWfJlX2KZCs=
    =Snnd
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.223. Doug Rabson `<dfr@FreeBSD.org>`

    pub   1024D/59F57821 2004-02-07
          Key fingerprint = 9451 C4FE 1A7E 117B B95F  1F8F B123 456E 59F5 7821
    uid                  Doug Rabson <dfr@nlsystems.com>
    sub   1024g/6207AA32 2004-02-07

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEAlXqcRBADYFElOoUIMntNwwMiVO/7bQQGYgo0HOz2ih10GpP3iyNletvOt
    AbH7AFCB/D6eHO/pOs3khk3ys3xL618e8vxttN7/jC+GWlPb6zReE92A75iP7+ud
    aDCccDlpfsoLfTt8FlZnFuA+d6gJ48Aie5meq1T/IlFV/EJGZ3BfTyKkAwCg545G
    dnVFL0hRjIJkz6Bs5xKqpxUEAIpfe1Ik8aXgwgbW35dZPUtUNDU3OmullZO8z2BU
    HefkZDyL+y5MBO/9aGtjN+TpnhmhWcVKD7rhTsL4w8v719Kq3cGFfNL/E1D6YyCp
    /BU0/Hm9+1MMxPg+nIUkhU4HmtZGoLT71xRSendbZjCr+s31XXxA5YbLruztTRFT
    YcNyA/oDbsyMIcEemO7F2ypq2FPlnjjCISS2Fr0HsBQltedY1Kr+hfOnjYAcMfIQ
    QyojMPl3bV4IFcavIhkiQBPBwGJsj/SNgNhOek9v9c4iuLpXzzbOfO4WiRBkpUY/
    Fzefogi7d+9t/PyPVzd5Rzwx4eqrTYOeMT8TJmGLWkoUwbMe1rQfRG91ZyBSYWJz
    b24gPGRmckBubHN5c3RlbXMuY29tPohbBBMRAgAbBQJAJV6nBgsJCAcDAgMVAgMD
    FgIBAh4BAheAAAoJELEjRW5Z9Xghhw8An02BsS5+rEgyF+f+byeZy5sIrDnJAKDK
    GpoGPWfwZ8leK1MqENlxZZerx7kBDQRAJV6oEAQAvo0FvU58ew8t5XAo27wvwpxV
    pdWoKRTF7lS7ENfhwoiHVW2qsX/TfxyRw50BEtDUlFe7lBqSyskJ/3ejcVXuJ5cm
    vYmxrUEfas57AnBsJqFerQhqB2Pr6BwDUU9kpmJv9vAlt/vdX6lIkXTfvGcrSFWF
    7cDEL++0tD63ULOVQ4sAAwYD/1CUpkXjwmFkg72LddRrvmXtKxk3crql4dYj/wjQ
    JeWeZQT+HKOOIHYFENZAqC8GSfQ621DeFD+TIN9SNeBG8K1LNqxUk71QAwiYSz2R
    Cm3n97esKKD2SB0yJDQJo+MsQ7PKdQPJtCDk34x0JvA4eijiTj9yGdQX8jWi8Sd7
    H0NPiEYEGBECAAYFAkAlXqgACgkQsSNFbln1eCGOuwCeLy66OJdIebn1pU3UXo8O
    xlFnyncAoOYrXS8vPETOhlx/yeBVsgfX1vcL
    =ZXPM
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.224. Lars Balker Rasmussen `<lbr@FreeBSD.org>`

    pub   1024D/9EF6F27F 2006-04-30
          Key fingerprint = F251 28B7 897C 293E 04F8  71EE 4697 F477 9EF6 F27F
    uid                  Lars Balker Rasmussen <lbr@FreeBSD.org>
    sub   2048g/A8C1CFD4 2006-04-30

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBERUw7QRBADJY85JY9QB4nxv3rXAPnlW59gLmWzuuVNnKBrQsoD5jq6WrDEs
    fqqU2h/JwHB06RZMm/VUSH9MnsrxpGGKbIuJ9bRn9zA4qbgP0kPCMoyb9AmyGEYx
    bIp0N1PeYni64IQH3XGaycloWNhNDDLv6o+c6e+wNnRfUv1qygKhM8vf5wCgyN3/
    KgxrTIo27FnrLDatjxYgHeMEAKtOpeyGk8VhkxXX7t6/sD1HPvDiuYLfM/14VKWB
    ZXaWcOzhytZRFbu/DDG2sMiMFdK8Xu7a1Zsfa683kmpgqHkG0FYcS14Y8yHDU1IM
    GpCRz18v8tZwW4N1npJ/vthpL1B4Hx0SUhGo2HgE85pRHdsDbhp0S6pZW2ff25wZ
    ljhABACI2/zM6SbfibbyRsvJcyW/TOfnEOxHUFfqT3SFYAP79hRBsqCN8v4fSR54
    Tf+jHv7uYVH2lK3zED3sXn2VCgjD3jJNLkeGB6qY/WnWYCB63YwUXk2igOqGijJq
    XEVplNG6ExaQIco5vilOseqWuW5ONJKMM+iEi5TpfV1cPGFpAbQnTGFycyBCYWxr
    ZXIgUmFzbXVzc2VuIDxsYnJARnJlZUJTRC5vcmc+iGAEExECACAFAkRUw7QCGwMG
    CwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAKCRBGl/R3nvbyf/xeAJ98F2AdELJxK6Po
    3rTPUqnJK+GZawCfX/0jvc82JWnGwbDcpyp0+xUJ/xe5Ag0ERFTEKxAIAP2AWduS
    +WfuTAqZlD2aIzyvzZPOJ7a8ZDmUtBDxbxuBetLMqC3oFMoZ1/857wV3J7Jvxx7u
    LFbpdYS/0zXTjyKE/NWqeHIuGH9fDOIDuUKT1ZkEh+OzfWQaUihYTib330LwWP1s
    9J8zLCJM1SdQSHVDOG9m+28JXH4ITmK3LkR3zdb/QYEOyFmHfhSqVQpZ/KEBYZ1K
    Kn0gItwqDILuk4v8BvR3ioWF1Ywod6JEMAgJvwypyDlyglvVVvav8UcOYIYfyv2i
    6g2EjIqmCpzaEa3m/RumCWaCLIIeZUqpM+rIfQyKcjgU8J254dFMqFYFIX7iFGnO
    FVhT8tyNXolkKWMAAwYIAPrna0LxXoNVdwCyAW6pcNR9LkWsalQ+cCTS15jnguq5
    V6HmMHsbAIwcXqZn6benX5g6Gx68gIrSS/c3iBMS3jiauIu/bjvhdTMLr0v/jXpp
    7HjdOkgwfdE184hxVzsO0w3UeWFVhmb6sW/Wb9OtdRTj160mHj5UsCycg7Q75R20
    2sBke5vP6o22CCNOZQxM615oFDgotYO/D5I8h/x08IQHlyxzgG2VXFbb/vvibOVs
    iFA246TaRzxYjo4pJ7apRKhXWX9Bm6Tl/X3X41idqbkZXXcdOV8i1jjJ+8hvmUXX
    BTrU4DyOHeRrKD2GRBGMn8WxhPL0DN+w2zBRpRdM7sWISQQYEQIACQUCRFTEKwIb
    DAAKCRBGl/R3nvbyfw7kAKCnpl/jNh5Hx0mkJ6BEDWlmGzuvMACeM95BWxxghmcn
    J6BmOEuZ+TPmHxc=
    =6byw
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.225. Jim Rees `<rees@FreeBSD.org>`

    pub   512/B623C791 1995/02/21 Jim Rees <rees@umich.edu>
              Key fingerprint =  02 5F 1B 15 B4 6E F1 3E  F1 C5 E0 1D EA CC 17 88

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.0.7 (OpenBSD)

    mQBNAi9Kb+IAAAECAOaa/3k5Zo+9i/fUPQfU4fzrRFwNifp7ujcxLNFsnMgcWeJZ
    XMd6iGiomTlBSlIHeNKa+JMGPmBTRrL7I7Yjx5EABRG0GUppbSBSZWVzIDxyZWVz
    QHVtaWNoLmVkdT6JAFUDBRBDA7AqRrL7I7Yjx5EBAQSTAf0WL+tTm+n0NFF2xQUO
    ZfxpuqnERjNQY5KaWQuC6qk4UOVCwoBNA24ZxY7TifvhsNErMHMc6HTKGvzhyGyV
    q/pGiQEVAwUQOhrmBjZ8FqYKL4flAQGcEwgAwPj2xt3ITbeUWf6HiqA1u6FiIy+w
    T+GZC2Mit4UQNdjKuNJad7t56Wqem57IhOGDWGYZJoZki65y9jD0BB7MixjuQhhW
    CV/vjdiX+pDxa0HG/75CNS7PVribIuhpbTFR2tG/EZh0sl8yMUpYho81yUDMeHVN
    UV8YqerlqntgqVra2cfPanScFve9YYXVgEbM2wQyWnEG6q0wPL+upmoZ8ppozHfr
    dVYiOonwl6QrgtzavI3tHTHtxDajMJpnQLC0rWHQRmY0Xd9xs+YUpaoUcOQFUH8L
    PEp7d1OQDd6KJOV+mQ/Bf7tZwl7as3cl/16nCMZoDJVGNGCuug4vEeV36IkAlQIF
    EDMEqXeGvtRXff+FMwEBX3sD/1Uf0sqHFBfFtuphKG5ZK9cz12NRANLpVf0welRX
    Y/Yp9AIL9xGGiEFvlma1TN8IA50Gxgxq7cEiHDWT2Zh4Hps0VWmuH9vGwc84D6PW
    JXuuPV4sdfCZnJUj+g13P7ypSlPSS8WIDVET5vG+K5m8jOQJ0NPsWGaZMGknXfLT
    ZDWDiQCVAwUQL8yKYkDqOE5/AdFlAQEmFgP/VwyNP37Vaunu7DdvBblDMpfMStds
    9GY0Jmhe7q1EkkGjwSJHtkn31yPwdb/93d25puCU6rZ1+qw5jKMY9qa8RvCOnnNF
    vN0fOqGso+We3q2rGamjBYtVnihYBni7jCBTJ1lvHixWM5XjyGkIQsRBoh3qNUNA
    I3LeH1ArE3IHzDSJAJUDBRAvxTnlxS1HbQ2/kG0BAeaxA/wPKsCrDl3qJsxrLPUP
    tMfXhGBeOZWPMx1rulCknHpTgfjPpA7soh7K9zi9LAatR08sotD7oAFWslP/OR/F
    DsaLWztFjSmu1laZyU5E7yCIsHgILX0aIsazYW0UoYqCm87FDzHP1kjXs7c6mgOJ
    g2YIY6o3UH4azIigo37B52J6Ng==
    =O0QA
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.226. Benedict Reuschling `<bcr@FreeBSD.org>`

    pub   1024D/4A819348 2009-05-24
          Key fingerprint = 2D8C BDF9 30FA 75A5 A0DF  D724 4D26 502E 4A81 9348
    uid                  Benedict Reuschling <bcr@FreeBSD.org>
    sub   2048g/8DA16EDD 2009-05-24

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEoZOPQRBADIhhxLB7VS78ooK4j9HuEjamF7QZTXvti7rtJdnJRZtpHW2Tzo
    GWbmlyYBQoGTk8DVuUoQCO6yy0PNe9CVUDxyXz5dUL8/fSfAOhwZowXF7X5mSP5I
    2G70oN9PgdMhxazIPoUlRFAtuDEZl8udtCOVyhiLylXnHj3LJS6XG2oetwCg33hC
    UWM/ZW2XZUt7+LQfdbTvgycD/AqrDrqazX86fI5MjeRuXB75i6OCUGorcWH2T8i+
    P6r3+1A1zjxhXcYMsCI4CDBHo2Z9oq2LN7ullvutfQA3sFR2KxuJmOa7GqHFI7Zl
    PYiRD4Zkuma2bAxIzer65IwQaaC58MCoBxTUqyKys4cv0Lalj6bh+yVArG0v8is2
    5E8aBAC4GptIHT6kfx1515W/1aBiPo+2Qu3227FLyNypKu3x/EwmFu3igbir6EOf
    uQLbjWclnJv2IXZhxiS08EoD6sFFrgDYAcXa3qPpIMjYEEmH5RziISGDwqCazgFY
    63paO2B8aHJB1W+A7jz7PYMsLNXt0JhwG4hLgK8fWT0NKG2TSLQlQmVuZWRpY3Qg
    UmV1c2NobGluZyA8YmNyQEZyZWVCU0Qub3JnPohgBBMRAgAgBQJKGTj0AhsjBgsJ
    CAcDAgQVAggDBBYCAwECHgECF4AACgkQTSZQLkqBk0hwvACeKQW/gMO7z6hv57J2
    4Ed012vx6mIAoL2JyQyqhtwjM3QJ90ZCvB073uTmuQINBEoZOPQQCACi/zTUlqiY
    dA+XNPPH93JSArILJcRIamP8n+Ans6akcluVONe5qRG1txgpclh9/v0Cv3qkr3hM
    Whm3Hh0zCtlrpZbd3oS1qdejpnCJxWTyISI/n6LXyoZ9YHI+IdYkcQowxxFDw+0J
    jIF/ROzHRyAmHqN0ORPyN0a+Xu4st+lgWBCj84op2xzzId+d4mTTyjvlAzbBaijI
    xMdbca3R5V4ISFzGiOHtEWQYb0lUz/DZVXYC22JnQdqtOJy/vZ9IMsSdi0tWsugo
    DGRtfdLAsg6PHIQZgTwbfehQmdSsLAAy43uvs1ywT7Nh0ffCmQawvvOhUOlIrYXU
    jxnIxQkncTqDAAMFB/91mznM5M2NWRhEIG5p0SKJaq4rrXUngMA0Tl4dhrJhlkol
    TfTTlS2u8jSjEK+39Lbs8uWZDXg8PHK2i8LOmgmuf1JfRV0clJMa01D/ZHIBRVB/
    TrJ3ia9rM7EG+2GBFzjkuMEpKBFrW/YLtCJZUdYfyQRjtLRCa3NEfQolvUvA3V+W
    ehixnxIpUJrz3JjLGcDVJx0tkgtFV8f1D6O9WEUc9jLzAM7ehrqbA1QQFlnwDcZo
    T1m0+Js3cIOfiLMqHB6iZi0tBTj5A2h5C/lWVCdw0HYjZkRKc2uG7nFfv++9mqS4
    HyiCcDiyStR01S/CuV5TCLZ17tW1Ihi53EGO8K3hiEkEGBECAAkFAkoZOPQCGwwA
    CgkQTSZQLkqBk0jJ8ACcDgRWhxql58ou07O1MZZbCBzDnkwAoI0ngzxuGBDgIIyx
    vPpqAjKmWnR2
    =WFIY
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.227. Tom Rhodes `<trhodes@FreeBSD.org>`

    pub   1024D/FB7D88E1 2008-05-07
          Key fingerprint = 8279 3100 2DF2 F00E 7FDD  AC2C 5776 23AB FB7D 88E1
    uid                  Tom Rhodes (trhodes) <trhodes@FreeBSD.org>
    sub   4096g/7B0CD79F 2008-05-07

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v2.0.9 (FreeBSD)

    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
    =S+Kg
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.228. Benno Rice `<benno@FreeBSD.org>`

    pub  1024D/87C59909 2002-01-16 Benno Rice <benno@FreeBSD.org>
         Key fingerprint = CE27 DADA 08E3 FAA3 88F1  5B31 5E34 705A 87C5 9909
    uid                            Benno Rice <benno@jeamland.net>
    sub  1024g/4F7C2BAD 2002-01-16 [expires: 2007-01-15]

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.0.7 (FreeBSD)

    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
    YbCuiDguaEN052KDrSoDvk4S
    =L0S4
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.229. Beech Rintoul `<beech@FreeBSD.org>`

    pub   1024D/790DB7C7 2009-01-23
          Key fingerprint = 3AFC 32D4 093B 63F1 28A8  1A18 B378 28D2 790D B7C7
    uid                  Beech Rintoul <beech@FreeBSD.org>
    sub   2048g/9F3B61BF 2009-01-23

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEl5FK8RBACFkDT67YK9/ruzIsOMdo903UH3E7wlWRyI0A1KFk6BuBNhDVNb
    QswVV7ZAn7sWCLST3ZNA0c36DAVanrU6Ur1qaX0+4J3+P0RkTsTp/x5iusOWWA8y
    ZPmnZG5QrWeokYCl0WFUI/0n24a/ALQ7mYhASHgY/JqOsqKuHyhc7TYFKwCgh9W8
    lFUjrOmbBxSy8A+gtxA1QtsD/15grmcjTeS6poBpcLgvF5MyVBS9DpgrL1IU/B1v
    X1punyUBO02h1qh+lS3gLoMsY/IxiC23cgItVkOS6xMgrasWlVr6poPovVdzyV0V
    nXkEiZsYV/DafX1WfdBO9Lierb9H057ToWRElVg1HNglvqsOxYNbuMcPQqMvatXt
    M9BzA/94Y4jfIJ1kdX1sORutRNML0YxJvJ5dUV1ZrrGTTEUyPOvvJKo59VYXc8b/
    6u/0GQbDkO/o8n0ZmYaxU++IurtmmdlTTE7Y58saXOUC7TYrbJVQqbWbm0ovRBuU
    57/m0MsNCc3OVOkEhj7YciE0UkIy+wgHdIhSMVvC5s2bIzoMErQhQmVlY2ggUmlu
    dG91bCA8YmVlY2hARnJlZUJTRC5vcmc+iGAEExECACAFAkl5FK8CGwMGCwkIBwMC
    BBUCCAMEFgIDAQIeAQIXgAAKCRCzeCjSeQ23x5i8AJ9Git9M9ajDfaMXQ1hxzfyn
    2GMzpgCeMgVJsGfb9vRWnKxjyugMKyL/PQ25Ag0ESXkUrxAIALUY+/ysAMjyHKFB
    s2Ye0zgPI40yWi0bSXVGhvY8phRo2b9cHtuBRy0wFnYjF7I1Ep4CIjUnNCT0C7S/
    bZQ07HnrCK+tgLDCIZawikDm7MqvJe/vacMKT3k+jYaN5/iK8IN9qwwWQSsylX5F
    O2HoifAA1lBg7iKnCLgwMHTkL6wx2YjLRingTh6dOaHPOnEXPmA57asMVQ1QIF4H
    trHkM1m06yIxtLt5ho8G7DQ/EfOvXEEIYFtP91gTM0yJwA8i5jjxNVMDuemFSxA1
    FtTuRidGIvA+zXSgNbpFhtBYZFYqD3rN5HALh0E3RcGhwTiHld+hYHku72BKdfVR
    vr6+hFcAAwUIAKlWnCWT2byzkMncxI8VyIZuu5SkOreTMRx88EKA5PbDaJkiN2+k
    m/6iKCHSneUNMd9LPuzUhMPgP4fBi84ib8Ume6ZhSd9d+lp28B84fPg2pIZG/gA3
    vRvMN3sxCVa+Qb3NpiKpVt0vfDLG+lRcEJWHMed109ym8kLF099Hc9Odi+9EUflt
    qYEP9/wLJcc+vvd/MytB7n25ykQeQmOoKLs1NZHnDuowzobn7tMxxpW89pZWT1zd
    atMXk6E7ja7G2+T/ugcto8fhqTAztg3+JKaZ3aHyziD5tMREMvzwnSRe4Pb7urja
    7lkeQ7PFCnz6BlU2uNFKvNrGGOgxNDAAnG6ISQQYEQIACQUCSXkUrwIbDAAKCRCz
    eCjSeQ23x4H5AJ9zODtX+BYdDUhH5yl0IxFPFnTdtgCcDXbA5aDUILIgIps1qEN+
    fQOwId4=
    =FPRG
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.230. Matteo Riondato `<matteo@FreeBSD.org>`

    pub   1024D/1EC56BEC 2003-01-05 [expires: 2009-09-07]
          Key fingerprint = F0F3 1B43 035D 65B1 08E9  4D66 D8CA 78A5 1EC5 6BEC
    uid                  Matteo Riondato (Rionda) <matteo@FreeBSD.ORG>
    uid                  Matteo Riondato (Rionda) <rionda@riondabsd.net>
    uid                  Matteo Riondato (Rionda) <rionda@gufi.org>
    uid                  Matteo Riondato (Rionda) <matteo@riondato.com>
    uid                  Matteo Riondato (Rionda) <rionda@riondato.com>
    uid                  Matteo Riondato (Rionda) <rionda@FreeSBIE.ORG>
    uid                  Matteo Riondato (Rionda) <rionda@autistici.org>
    sub   2048g/87C44A55 2008-09-23 [expires: 2009-09-23]

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    [encoded data, 12805 characters]
    LlxcQeUB
    =cJab
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.231. Ollivier Robert `<roberto@FreeBSD.org>`

    pub   1024D/7DCAE9D3 1997-08-21
          Key fingerprint = 2945 61E7 D4E5 1D32 C100  DBEC A04F FB1B 7DCA E9D3
    uid                  Ollivier Robert <roberto@keltia.freenix.fr>
    uid                  Ollivier Robert <roberto@FreeBSD.org>
    sub   2048g/C267084D 1997-08-21

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.4.2 (FreeBSD)

    [encoded data, 13520 characters]
    izq3ic4=
    =mgE0
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.232. Craig Rodrigues `<rodrigc@FreeBSD.org>`

    pub   1024D/3998479D 2005-05-20
          Key fingerprint = F01F EBE6 F5C8 6DC2 954F  098F D20A 8A2A 3998 479D
    uid                  Craig Rodrigues <rodrigc@freebsd.org>
    uid                  Craig Rodrigues <rodrigc@crodrigues.org>
    sub   2048g/AA77E09B 2005-05-20

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEKOK8MRBADOO9VIucM2dGygVera0+Hcu9ud2f3MrcfVgsB7/awfE/MgIYtC
    CFtCJrD1Ml+p/spmiuzJNDSamT8NHywsG5R+GO0EC76+mfL3hwXvGUJoQV+NcDu6
    99s6OUWTimi5OPOURzG7lXYpO0wVysx3R5Nzg7tIC06fmXNXuj02JvCm+wCgqkPx
    nZgCFoqq2mHoiLL59CUExbED/iOnglDOuZsncR9xRZJfbSLUJf5z9NE413FXAx3f
    THY7+akGk8kWChrOeyIvLvSGmkHHFQXgh1umG4fFd7TCJ0Sexh44s5q0ROjEK4ge
    nwAsS0iheMB6JqW8ibBfawr2iwu3ZAkqfelU+NSbHm4sEeHxEGyJtZKA7rOPGDm8
    YOBZA/45n2E/Z6hv6D4Bm1xEDGNICK28uTqzXh0wyCJJtVOortd4CmKZZrZJj7am
    3aDdtFUZ1yZc5FW2E0xLa7Oz8HUj7eMT7Ljfd0c5yNna7WcNjqWNAz6WMhHByRZv
    nOPiUMQNvCbyrKw9OsFKNNbrSnjQcc/5yy0SiIMVm4rydXzK0bQoQ3JhaWcgUm9k
    cmlndWVzIDxyb2RyaWdjQGNyb2RyaWd1ZXMub3JnPoheBBMRAgAeBQJCjivDAhsD
    BgsJCAcDAgMVAgMDFgIBAh4BAheAAAoJENIKiio5mEedzB0AoIXeENkxV41KlJMV
    z0ozHJ/q1ESdAKCimzfOMwz7Qyauo4VHs4rk7NEPerQlQ3JhaWcgUm9kcmlndWVz
    IDxyb2RyaWdjQGZyZWVic2Qub3JnPoheBBMRAgAeBQJCjjVzAhsDBgsJCAcDAgMV
    AgMDFgIBAh4BAheAAAoJENIKiio5mEedT6wAn0IjcGqARj8Qe+JZThbQCQbH0ERp
    AJ4w1pYLdsKphwaEB8GakvaeRsrBTLkCDQRCjivkEAgAo5DHUcjEBK54Vo2S403y
    InnfqiiUDXqb8Oof18CICB6JgA3NjP5g9BE5+7dI8relt4Q0ILg2IJvISIlfmyDl
    +GuegA3dMo1IrghmtI5+IWN2mm1iNy96jpJ1TQhvHTFDlETdV/BE57CcO1ZnKHiW
    m9G3GjnMrunVyLMEY+6TJ6ykqP2VzYBsc847iCv477LdYFe1+vedZb8Bk9xpeeZJ
    tuT3O+JiR+B/SHISpycxyM3ei+C7eRRC8wV+khOw/8xirJ1Wzyg3GrolQPtJsTNG
    mqg6DXIYPY5wbF3SUBT5ZA7pLPxXhUWNewU/8mXisuM0hp7nz9VLQ4JfbMuvGF2j
    wwADBQf/SCUw06q5l8qdJ9G3WFfPOE449mq5uXHGlfeamCkjx9/SzI/8yldrxwdF
    5XiAZWRpeQoksUbPI+tmxWqi8NDxt+KLDNhSCg0+C8KRFBY0ZI4CDmUg+MX9Mix2
    ir/RK6eoEYNXdt32raX7MzQP87LTL+cnxJzbQ702HYpVqrJUOgSRwQ3posbp7hwV
    djfiE38r9Hd/E4ZxxAIT3GafZ12KzxQZ8dSxoa/2tP8VfAfe9jt/XX4F0QD2yIGV
    2wJMd/CZWTZgDfNW1anGR+9AyV9dT+8cYi36fkgTQb5rN25rJKzHd9RA/EGJXSU4
    l1hNG4gBpYjF5gD/UTuSgGI6XInycYhJBBgRAgAJBQJCjivkAhsMAAoJENIKiio5
    mEedTS8AoIa+gNX84jClqNvPR5lMlQGKeB4HAKCaEmhTA9kGSY5JW3hsfDiwfr0a
    PA==
    =hHZm
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.233. Guido van Rooij `<guido@FreeBSD.org>`

    pub  1024R/599F323D 1996-05-18 Guido van Rooij <guido@gvr.org>
         Key fingerprint = 16 79 09 F3 C0 E4 28 A7  32 62 FA F6 60 31 C0 ED
    uid                            Guido van Rooij <guido@gvr.win.tue.nl>

    pub  1024D/A95102C1 2000-10-25 Guido van Rooij <guido@madison-gurkha.nl>
         Key fingerprint = 5B3E 51B7 0E7A D170 0574  1E51 2471 117F A951 02C1
    uid                            Guido van Rooij <guido@madison-gurkha.com>
    sub  1024g/A5F20553 2000-10-25

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.0.6 (FreeBSD)
    Comment: For info see http://www.gnupg.org

    [encoded data, 6760 characters]
    jwCgnb++jBLoAgqu7BiWMBVe9sCLfMY=
    =qL8T
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.234. Niklas Saers `<niklas@FreeBSD.org>`

    pub  1024D/C822A476 2004-03-09 Niklas Saers <niklas@saers.com>
         Key fingerprint = C41E F734 AF0E 3D21 7499  9EB1 9A31 2E7E C822 A476
    sub  1024g/81E2FF36 2004-03-09

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEBNxyoRBAC22NnMqcH1hXXkz+jC+U2QGzOJdGHZtLRXDRpS4blFtRgAf4ab
    tZY6LJUMnjmdgaPP3Mc7YE/ITF1hGnzYF2jbJazNm17nMSP/66dGJt9dK4XAE4cc
    5nYo3GnEkacAa1zUvM6e9OGaAIkndBDUW6+a9aSQNcNyMnYL1/APv+wdIwCg2G4C
    N221QrjrGbxVQPiBM51lY98D/11d/h8aOHYkf+nirhIj9GvRmXJfD3RANZUDjOsj
    OKGgUNlXm/AT6I226v9urfdtrhMg+5zdO+I2p7dZMad/RpnSYo0GMdLRzOlN6aoI
    +4JYoACq2C7iR8pmItb+L4Nl5nNBwmcLBXD+HaZebGffZy9Uvy/A5G0ty08I8LKm
    5STvA/kBMybZhX+RTq5v1Kzau63bMBJR8MPHyWYAIBW2wTMJM1ndW5RrbIMJ71qC
    8DFFTHFJd97s/fqBMQ9rj094CdDxCYQJUkZy5+qiBkRta//iSlgsi54Xhj9prgPj
    nBMWxUjAI5Ih0VPIp3/z/q5aQRvey8Ro5JWmduzH0KpLv2Qe17QfTmlrbGFzIFNh
    ZXJzIDxuaWtsYXNAc2FlcnMuY29tPoheBBMRAgAeBQJATccqAhsDBgsJCAcDAgMV
    AgMDFgIBAh4BAheAAAoJEJoxLn7IIqR2/y0AnRetbhzvjj3kKOV28bx2Qt+YRA/j
    AJ4yY9wDPJpwq63IsGeo3BYXi32zPbkBDQRATcc5EAQA2SipeeJJjvrzqqILHNA7
    X+m/PAJonO4QhyIEXXMhzNGdiUVJ7wli23gGVF0Cj3V97Yw5KFGco3qOvvsWkO4c
    CLwd3NHbVL6OHKM36LcFd+a6RiJO9qAGGixyqUIkqYeWCmpObihrkZy9WADsSJTc
    /qOrLghJ0GyR4Ga8CoFNT/sAAwUEANfA3lWeTj3QZcDnJZYejt1aJWt7oUBQ/KOc
    HhTjY/A7zkQsAdgbcmuhzSiIH6eoofTwNOl/Kl0ieSdIyFMFfVxrmYEN/HUUUI4q
    J+BgWZgppinaeUEabnZPfY03T+ZanJ3DmB8s8x4HdpFi3jgtWY0KfDhDfHtNIeRu
    CYmLAzjYiEkEGBECAAkFAkBNxzkCGwwACgkQmjEufsgipHbIOQCfSaudT6wnsh4G
    6D9TZkji6aDqUBwAoKqxWnOya/v/MqcgrXGSCih7phIL
    =Hz+C
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.235. Boris Samorodov `<bsam@FreeBSD.org>`

    pub   1024D/ADFD5C9A 2006-06-21
          Key fingerprint = 81AA FED0 6050 208C 0303  4007 6C03 7263 ADFD 5C9A
    uid                  Boris Samorodov (FreeBSD) <bsam@freebsd.org>
    sub   2048g/7753A3F1 2006-06-21

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBESZt5sRBACyDUDxsmkdq0XNNJfbsdVO07/vtUc+rP5hBEdMzbetPnLdujSX
    JtwzS2b5kQFk1ONAuTs9udlcZhhq5T2FIyhqpvgLG3tnt4gDabRgFsOL6oB4dFKv
    yL5emRwnch+wYlwfaoWXsXpWfdHQCwFfL39lsYLIR/aXcMwjXF1wl9yl6wCglkCt
    NECUgmsoUYE1iOyC5PnqHkMD/088reqeJuH2hWHupCOihIOOddQPiKX3EY1Y6piO
    I3aQFxOq8BdYw+3WAlBs4vegMmzk9MYEwP2STsVcPE+eu55m1GCRRds++oyv9tQO
    TFZVsYEuvJALvHSW3InTGHWfhQPrHcdodyRjhgo2bKY1RwO3RHYDRRQj5i8LDn/9
    kRSiA/9Y9Cl8Abr7kuPbgw7uWb8lRta9/le1UWQXpU6GAZHXEgppHenDaRqvbaag
    MhXXiKuuFAz4LNHf8UDqyQ4fjjfR0EajIivV17hpzagPWIzzEdr4j3RBpwHMYLbV
    1yfyml5QT46amMd2Vwq83Zgn0cUObu8E0IITqTMkweEvH+soOrQsQm9yaXMgU2Ft
    b3JvZG92IChGcmVlQlNEKSA8YnNhbUBmcmVlYnNkLm9yZz6IYAQTEQIAIAUCRJm3
    mwIbAwYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJEGwDcmOt/Vyam2gAoJHvCp76
    i+XiNv4R3pJgG0ZxTCjOAJ0S46VswPDByVJZNF95pfy1qEDb/rkCDQREmbekEAgA
    vAUui6QrSn//3FHeSvH1smd0432C1r8IHvR7m0Ki+F1cRolkWF29y6JMpoPcXrWC
    D5OpGfZaZQ9SwhedFr776xAwMDWAHlrHEpPC4OE3RPq7YWENc40hL+ZKfsZhGA89
    H8fiU18UdDlARgg1PDBbVi+F4ZFfKSyNcTUO3brIIpUy5OfAdTkgl3JFKERlqZic
    ZWjS9PXjsyaeTYn1Ny2T9WZqbk9Ghsb2/t8bIyayu9KNnI+vRSafRtaomeUEsKme
    YZyU4pLutea2Zj6u8BtEVyxp9Gcy0Whn/HwQc/FZE91Z6UzViucBqKmFmw3A/OHF
    HV3DAxd2ctkBrt5jzgJA2wADBQf/dD7RVzfD2ea+jpgqJW5EFDqYebjPLab5GZJ6
    uUWWZu73ynDm92lemzcT67JYirU0H0sQ6QmcZ9ZwqqdW/taCjvpsXPFb88B9AL9c
    aQD41otxgpCF/zMQwgS24DCrdtPXiKceTjHNEAMOM9xS3FBNAWjy23Jz6rIt3ROD
    o0X3iAta9cT71Q6/u6BYo1YRuLIAWZ1rpkELb06NUxsVuEQmBKGMBKf00LEw+AV8
    0FkaEukzFuG1u3k2qkeFJEZW0C6d04JT5jsskRiTrIzkd1FTyaEdueaZoiPBQybX
    KE9GyClXn1RMWA+dzAjjNvJOo556NAIpebgvXMd1rHSRxumHdIhJBBgRAgAJBQJE
    mbekAhsMAAoJEGwDcmOt/VyaOikAnRQNCxBdrbQSOLIxrChaMU5tNejQAJ4hpoO4
    tGfWhh+Ib0+vCD7UaSphYg==
    =fafd
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.236. Mark Santcroos `<marks@FreeBSD.org>`

    pub   1024D/DBE7EB8E 2005-03-08
          Key fingerprint = C0F0 44F3 3F15 520F 6E32  186B BE0A BA42 DBE7 EB8E
    uid                  Mark Santcroos <marks@ripe.net>
    uid                  Mark Santcroos <mark@santcroos.net>
    uid                  Mark Santcroos <marks@freebsd.org>
    sub   2048g/FFF80F85 2005-03-08

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    IdA=
    =F4/l
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.237. Bernhard Schmidt `<bschmidt@FreeBSD.org>`

    pub   1024D/5F754FBC 2009-06-15
          Key fingerprint = 6B87 C8A9 6BA5 6B18 11CF  8C38 A1B7 0731 5F75 4FBC
    uid                  Bernhard Schmidt <bschmidt@FreeBSD.org>
    uid                  Bernhard Schmidt <bschmidt@techwires.net>
    sub   1024g/1945DC1D 2009-06-15

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEo2DaERBAD6iTY24oR5YgIAGmKudAPxNNLLaZPm5tsa1eQjNCRp/WPLIXCS
    /x2oZPk8JoKOPnHNuvfzKnDwh3sB/hKAQOwSTHmtKQ7Gq9Uq/IpuQXHOfF3JqJ8p
    4pOEHCSdJPv1rGNdv2Uh5Pmas3qfkI1pcn44B/XAYDVoYC2CsHmTHSMfwwCgwKIP
    BELVfQZDMaV/Zkv1etazaLsEAJXHS06o4TFVmrHzvhMPlBmS/MDJyt04MaqJwCkh
    IzZGpJ6c2rS+a9UOj5Fy8zeim3f94U5L4pUJUmn2SitHTGm14A+ZN7r2dmBC8jw5
    Oki0tbz3yObM6KSzYV2BuZ7BLP65KXAlUnHM5h4rw/EJaTL6bm0Z0sOLpc74KnZd
    qgi9BADzkJnZ0VKRRZ18xfdbPqa8FMeHJI/IhlBrwEPSeRqEjZCtTYfePzutbpm7
    YRpXk2cMe+k6Xt+FrSVF4elNT5/b3SjWjmZr7jLQ+/RvN+AH/5Ru9bQHVfuL6uSY
    zoHgl9Y5RKJMkzWfdn1LknaRIqE/ciWq22cESYJ8e/Wrk8lFVLQpQmVybmhhcmQg
    U2NobWlkdCA8YnNjaG1pZHRAdGVjaHdpcmVzLm5ldD6IYAQTEQIAIAUCSjYNoQIb
    AwYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJEKG3BzFfdU+8UXMAnRd2NUzksPzw
    xY9oQMyjeP1cg1R/AKCWoPmmPjJDsf1/CQIkMFMb7RuTDLQnQmVybmhhcmQgU2No
    bWlkdCA8YnNjaG1pZHRARnJlZUJTRC5vcmc+iGIEExECACIFAkttpeICGwMGCwkI
    BwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJEKG3BzFfdU+8Ht8AoJS8LxsUX8jA7J6S
    WKwM9JPJ+adJAKCPcJC5vcz1C78IB2XBmnbbKmrYLLkBDQRKNg2hEAQAzfaS1s2p
    EOwwH6ZS9JJ0mnoEfVUkO2I3yfMvXZ4HVkf/lmjQziSsgtbOUPIsIZxh/0V7sDU6
    4ShmeYcY2GpBRE5NFAOo721nOMzXtSbwhUt8ZNZkWXLOCXE/oaS1UoPTQ8KW21IN
    prsFPuVORaZPn1BKXSt/g0l2mkKDdgjMLe8AAwUD/RCMR4fDfuKULk+PG4DrGuyz
    sz/6MC7cmxH76SBzLARw7HOKFXQoVPUfBbQ8oi5ynqFobgENEL5iiWrPhRHLYiJ1
    ee/RiroqJlDxSHno5qU4FIjVGm6b1WbunQ1m3bmK4ExFrygOvHwI0RhoySoAhxiR
    vttEGBF27GMdkRaaUyniiEkEGBECAAkFAko2DaECGwwACgkQobcHMV91T7wEHwCg
    tY2Mbu5ssnZVqMYfEKlx2QIJvZYAnRkudrXyV2F4QME4eLCgAXrjDptm
    =FKOV
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.238. Wolfram Schneider `<wosch@FreeBSD.org>`

    Type Bits/KeyID    Date       User ID
    pub  1024/2B7181AD 1997/08/09 Wolfram Schneider <wosch@FreeBSD.org>
                Key fingerprint = CA 16 91 D9 75 33 F1 07  1B F0 B4 9F 3E 95 B6 09

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: 2.6.3ia

    mQCNAzPs+aEAAAEEAJqqMm2I9CxWMuHDvuVO/uh0QT0az5ByOktwYLxGXQmqPG1G
    Q3hVuHWYs5Vfm/ARU9CRcVHFyqGQ3LepoRhDHk+JcASHan7ptdFsz7xk1iNNEoe0
    vE2rns38HIbiyQ/2OZd4XsyhFOFtExNoBuyDyNoe3HbHVBQT7TmN/mkrcYGtAAUR
    tCVXb2xmcmFtIFNjaG5laWRlciA8d29zY2hARnJlZUJTRC5vcmc+iQCVAwUQNxnH
    AzmN/mkrcYGtAQF5vgP/SLOiI4AwuPHGwUFkwWPRtRzYSySXqwaPCop5mVak27wk
    pCxGdzoJO2UgcE812Jt92Qas91yTT0gsSvOVNATaf0TM3KnKg5ZXT1QIzYevWtuv
    2ovAG4au3lwiFPDJstnNAPcgLF3OPni5RCUqBjpZFhb/8YDfWYsMcyn4IEaJKre0
    JFdvbGZyYW0gU2NobmVpZGVyIDxzY2huZWlkZXJAemliLmRlPokAlQMFEDcZxu85
    jf5pK3GBrQEBCRgD/jPj1Ogx4O769soiguL1XEHcxhqtrpKZkKwxmDLRa0kJFwLp
    bBJ3Qz3vwaB7n5gQU0JiL1B2M7IxVeHbiIV5pKp7FD248sm+HZvBg6aSnCg2JPUh
    sHd1tK5X4SB5cjFt3Cj0LIN9/c9EUxm3SoML9bovmze60DckErrRNOuTk1IntCJX
    b2xmcmFtIFNjaG5laWRlciA8d29zY2hAYXBmZWwuZGU+iQEVAwUQNmfWXAjJLLJO
    sC7dAQEASAgAnE4g2fwMmFkQy17ATivljEaDZN/m0GdXHctdZ8CaPrWk/9/PTNK+
    U6xCewqIKVwtqxVBMU1VpXUhWXfANWCB7a07D+2GrlB9JwO5NMFJ6g0WI/GCUXjC
    xb3NTkNsvppL8Rdgc8wc4f23GG4CXVggdTD2oUjUH5Bl7afgOT4xLPAqePhS7hFB
    UnMsbA94OfxPtHe5oqyaXt6cXH/SgphRhzPPZq0yjg0Ef+zfHVamvZ6Xl2aLZmSv
    Cc/rb0ShYDYi39ly9OPPiBPGbSVw2Gg804qx3XAKiTFkLsbYQnRt7WuCPsOVjFkf
    CbQS31TaclOyzenZdCAezubGIcrJAKZjMIkAlQMFEDPs+aE5jf5pK3GBrQEBlIAD
    /3CRq6P0m1fi9fbPxnptuipnoFB/m3yF6IdhM8kSe4XlXcm7tS60gxQKZgBO3bDA
    5QANcHdl41Vg95yBAZepPie6iQeAAoylRrONeIy6XShjx3S0WKmA4+C8kBTL+vwa
    UqF9YJ1qesZQtsXlkWp/Z7N12RkueVAVQ7wRPwfnz6E3tC5Xb2xmcmFtIFNjaG5l
    aWRlciA8d29zY2hAcGFua2UuZGUuZnJlZWJzZC5vcmc+iQCVAwUQNxnEqTmN/mkr
    cYGtAQFnpQP9EpRZdG6oYN7d5abvIMN82Z9x71a4QBER+R62mU47wqdRG2b6jMMh
    3k07b2oiprVuPhRw/GEPPQevb6RRT6SD9CPYAGfK3MDE8ZkMj4d+7cZDRJQ35sxv
    gAzQwuA9l7kS0mt5jFRPcEg5/KpuyehRLckjx8jpEM7cEJDHXhBIuVg=
    =3V1R
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.239. Ed Schouten `<ed@FreeBSD.org>`

    pub   1024D/0D9E0B05 2006-03-21 [expires: 2011-03-20]
          Key fingerprint = 9476 D3D6 52BD F249 08A0  ACD5 E764 8318 0D9E 0B05
    uid                  Ed Schouten (FreeBSD) <ed@FreeBSD.org>
    uid                  Ed Schouten <ed@fxq.nl>
    uid                  Ed Schouten (Fontys Hogescholen Eindhoven) <e.schouten@student.fontys.nl>
    uid                  Ed Schouten (Dispuut Interlink) <ed@il.fontys.nl>
    uid                  Ed Schouten <ed@80386.nl>
    sub   4096g/80043EEA 2006-03-21 [expires: 2011-03-20]

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    [encoded data, 31915 characters]
    2EYjaPlDBKzyZG+5hVFDaM0Anixs5CWbsGFjwGMxjE5eVeex6/wZ
    =wVoU
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.240. David Schultz `<das@FreeBSD.org>`

    pub  1024D/BE848B57 2001-07-19 David Schultz <das@FreeBSD.ORG>
         Key fingerprint = 0C12 797B A9CB 19D9 FDAF  2A39 2D76 A2DB BE84 8B57
    uid  David Schultz <dschultz@uclink.Berkeley.EDU>
    uid  David Schultz <das@FreeBSD.ORG>
    sub  2048g/69206E8E 2001-07-19

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBDtXc9MRBADg4tN94el8rq0ZMUqB2jEVACg/UfYjtsaboDL4HBBUH+P+Wxic
    9JqotcTbT8pJGeRpeXbfO0YHaAFnUfilhoFkeLyAgDvnUP9Z77DjFpliLAKlvuCz
    Lxi4UxgQXRdedNCg3omrxQWx7Yx067GT/yw4RgvogOuYBX0l3AJ25/WBxQCg/6Dj
    TMTu6iYR2Y6dEL4NGs9PnBMEAKBlhelAhzYoMpcWpk2VITUgONMW+Oi2JDTmwDd+
    1FAUDc1mHSoNBKPUrCWyXiwfzL09/ROlK/KMR6YoYtV6d66zZ/dQNuzrMhsis+Ou
    PCtvcaR5NGln49THgcw7/K5gTjwrG1xA/wcwnvUp6sxjh4p88meI/LNBAstixb3z
    FiLDA/9pAqn42B9ZBL1le98DTiLDemHvQFgXu8Oj20IIF0umyJRBfKwDY6iIx0gd
    1rUKua6XnqMSEg+LmHmSfDBaAOsFTdnL7wVU0tLF0V9goxU4qDZjw5EeMEqnk7tg
    /6REIvtdOA/GLOmr/Q0WA4JEukcih3AQ9iFnwg7WAp0S4GF6gLQsRGF2aWQgU2No
    dWx0eiA8ZHNjaHVsdHpAdWNsaW5rLkJlcmtlbGV5LkVEVT6JAEsEEBECAAsFAjtX
    c9MECwMBAgAKCRAtdqLbvoSLV78JAKD4iJ2kNeTsYQnWZ2DeytAeqVaKFwCfTIQE
    lFPZyaQr7yjthREE+8SPZCG0H0RhdmlkIFNjaHVsdHogPGRhc0BGcmVlQlNELk9S
    Rz6JAEsEEBECAAsFAj5S1iEECwMBAgAKCRAtdqLbvoSLV4b5AKCljokqRgi/pbDa
    ZebYLluQCIkbgQCg+jSKAIi1r+CZiaCJdqk193IZVnm5Ag0EO1dz0xAIAPZCV7cI
    fwgXcqK61qlC8wXo+VMROU+28W65Szgg2gGnVqMU6Y9AVfPQB8bLQ6mUrfdMZIZJ
    +AyDvWXpF9Sh01D49Vlf3HZSTz09jdvOmeFXklnN/biudE/F/Ha8g8VHMGHOfMlm
    /xX5u/2RXscBqtNbno2gpXI61Brwv0YAWCvl9Ij9WE5J280gtJ3kkQc2azNsOA1F
    HQ98iLMcfFstjvbzySPAQ/ClWxiNjrtVjLhdONM0/XwXV0OjHRhs3jMhLLUq/zzh
    sSlAGBGNfISnCnLWhsQDGcgHKXrKlQzZlp+r0ApQmwJG0wg9ZqRdQZ+cfL2JSyIZ
    Jrqrol7DVekyCzsAAgIH/1AtvAGCJchvLFoaR5KNocKcoUMe2NrpRrFS3DsYOsXU
    0U95pmAHJaMt+wv4UDs/wNzOzC6stRML+3lg6sYnSgddH+N/DA0b5jQSAyNWlL87
    j08h3ATaPeDD6qhqFRe3uzpQMAJJWbeTdyiT2vwgglgcaJWuVjYSfkkxX7AVDFHw
    C4IOuZ0aQhHyHQsGQURTg+sotMx+kX68o7oGZqBBOcr8VdFyrlq0Tq1b/i0fJnn2
    Nz5hY+OOXbyeoJbaY0KiGnnMwHmeZ2eJWk1cCHUZnrY5WOxYQHail2KHXxhYuPoI
    xsL0y+XdErX+lc2BiEbvXROs+VxEo/3/BVJXAIar3nCJAD8DBRg7V3PTLXai276E
    i1cRAsj2AKC26JMJWsvd93UUWRXDKmU46MgLggCfTOIjPheQwY9VCN3jO9YROzij
    QVE=
    =qhh7
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.241. Jens Schweikhardt `<schweikh@FreeBSD.org>`

    pub  1024D/0FF231FD 2002-01-27 Jens Schweikhardt <schweikh@FreeBSD.org>
         Key fingerprint = 3F35 E705 F02F 35A1 A23E  330E 16FE EA33 0FF2 31FD
    uid                            Jens Schweikhardt <schweikh@schweikhardt.net>
    sub  1024g/6E93CACC 2002-01-27 [expires: 2005-01-26]

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.0.6 (FreeBSD)
    Comment: For info see http://www.gnupg.org

    mQGiBDxUIHoRBACGAbIspofa2HTwV0Y81ZgrizVgvsHduKRMYmu9scX6eFSQWC2a
    JLXXnMJMK97LG2m6qX/hzjxZKU/n2eNpHa3h9zLYQ/8VdN+AFHGZtgmZ7xe7UpBI
    V2YohykdmgKqg8WuVQGrNTwbkaAFeLnG3yXhR83qukRvv+qFfXbEF+1S2wCg6lLg
    YJ6U4J1pfTO95Rd4hw5v6DsD/0hUfa6C6C6xjME6P7r/ORd91+nJsfO0pcV1rK0s
    yCMdAy/zdUlKpsNF9vS0qhCFonuOHWxMEe7D8L80oUAwlk4RrFBm+Ch7RoBGYGru
    aEom/7JGNoRqUD2CKbFnkAYi9HP6XlXcpgm3GO4c4VtIcEbgywjw7rNhmNoYLrZV
    YUb0A/9mNCqpPTd8ngm7kPyTTMJitYEVaBPXEdiPueYJND+eI9AQkcqYhs6LWq4c
    jgmTNeImQ+kR1UeDj3dOwUDqhGmLPN60nD+Q2oHHBif8NJOu47mx1dgdriM9FsTN
    3UbeSve+mY8Z8zcPIYKl2UJLPZckWgq4pZRrE147cnKHSHHM9LQtSmVucyBTY2h3
    ZWlraGFyZHQgPHNjaHdlaWtoQHNjaHdlaWtoYXJkdC5uZXQ+iF0EExECAB0FAjxU
    IHoFCQWjmoAFCwcKAwQDFQMCAxYCAQIXgAAKCRAW/uozD/Ix/ZB8AJ989jyDH1G2
    T1KMoNd7gPk9tAw1VACfXJgkrI42ShC4cHz37xrVLXeJp9i0KEplbnMgU2Nod2Vp
    a2hhcmR0IDxzY2h3ZWlraEBGcmVlQlNELm9yZz6IXQQTEQIAHQUCPFQ+0AUJBaOa
    gAULBwoDBAMVAwIDFgIBAheAAAoJEBb+6jMP8jH9P+YAoM72fnNwxxcDjb+3Mv3A
    CfbHonYCAJ9lfK9fIbkgfAHo+2kwnOEN4yWxzLkBDQQ8VCB/EAQAzzIqOgms7u+e
    UKampP/5U9G78HA3GIkVLcAeq5FfpFtls4NmSKz240zNxXmABWTSlBmOQvMdhB08
    vRbzEsxPoVdNaF+QvRZYEr5+2bOM1pnHqYYMyUKwN83LXgTDnXxas4mtrkgngZTe
    tGdFQ3PIVqW4jV0MmnEmaqde0nMJ6XsAAwUD/2z82PDDwFBu1Ogogh63qE69HSQt
    8weHX+Skmi75jE3r2niUlx6B0IfLXzFqP33vyrsov7QHgAuOjNficisbC73o3gjp
    voJ2RYB2IfUCgeFvipLpqY1TWJ3bF52TYnJg4rrEWd5OWs4FB0iaJ78LVWgq3WsN
    zfgcgfQ38d+scJu4iEwEGBECAAwFAjxUIH8FCQWjmoAACgkQFv7qMw/yMf1PIwCg
    nSP0i+q9jhEf9T5xA0+qg2yYB/IAnjvd/tA+2/5bP4pObE/oRNjIVZBZ
    =YPu9
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.242. Stanislav Sedov `<stas@FreeBSD.org>`

    pub   4096R/092FD9F0 2009-05-23
          Key fingerprint = B83A B15D 929A 364A D8BC  B3F9 BF25 A231 092F D9F0
    uid                  Stanislav Sedov <stas@FreeBSD.org>
    uid                  Stanislav Sedov <stas@SpringDaemons.com>
    uid                  Stanislav Sedov (Corporate email) <stas@deglitch.com>
    uid                  Stanislav Sedov (Corporate email) <stas@ht-systems.ru>
    uid                  Stanislav Sedov (Corporate email) <ssedov@3playnet.com>
    uid                  Stanislav Sedov <ssedov@mbsd.msk.ru>
    uid                  Stanislav Sedov (Corporate email) <ssedov@swifttest.com>
    sub   4096R/6FD2025F 2009-05-23

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    [encoded data, 13910 characters]
    syiKxh4=
    =OeD1
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.243. Johan van Selst `<johans@FreeBSD.org>`

    pub   4096R/D3AE8D3A 2009-09-01
          Key fingerprint = 31C8 D089 DDB6 96C6 F3C1  29C0 A9C8 6C8D D3AE 8D3A
    uid                  Johan van Selst
    uid                  Johan van Selst <johans@gletsjer.net>
    uid                  Johan van Selst <johans@stack.nl>
    uid                  Johan van Selst <johans@FreeBSD.org>
    uid                  Johan van Selst (GSWoT:NL50) <johans@gswot.org>
    sub   2048R/B002E38C 2009-09-01
    sub   2048R/1EBCAECB 2009-09-01
    sub   2048R/639A1446 2009-09-01
    sub   3072D/6F2708F4 2009-09-01
    sub   4096g/D6F89E83 2009-09-01

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    [encoded data, 39780 characters]
    jJLQtFy144uCNLgL5JagmqMiXx9rL6dHFHc=
    =sXgu
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.244. Bakul Shah `<bakul@FreeBSD.org>`

    pub   1024D/86AEE4CB 2006-04-20
          Key fingerprint = 0389 26E8 381C 6980 AEC0  10A5 E540 A157 86AE E4CB
    uid                  Bakul Shah <bakul@freebsd.org>
    sub   2048g/5C3DCC24 2006-04-20

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBERHS6MRBAC60MHcIa5gqGjSmHLxJeZTkLTDK0zEo7MRJuMeF90Py7wdP9Fy
    jmRhyBS/tYfOtPrpHwAdn5FIkVzajEklv9L0/JiUx5WDrmJFWqIgRLdRPYw909hE
    7pW3uTs2qotWjeA8ecefzlTX9gdZVgy2uPhihMG9cn7pL1aXluca8AUsIwCg4lUf
    8pL0Pn6pZ6xP7nG1hEvkzr8D/1LR5Bm47RboJ+dvoMf9lwlXiEBP0m40100urcxR
    7e+AHDX2yr6s4edx7pPRCq2ubPgzK2rYv4NHN943AY8EYbrazp5F3EItDOLHmIus
    JasvCgPTb7HYWO7Q28redJyUIfBUTPgVVk2z4EuCb5QKDU2/2DyqWThrLEwTCTRh
    mR82A/sHQE/xib0291VjMxGKiatd2Xm5hu7dSzCeZwc/5uF0g33OYcd02fosyERd
    96SWmGigFWLbQ/kFiAoN0OAlQQoNPuWjGzIJVrxiy9y3Fw2hnoiV3MAWAGr43+UI
    FR+XB/MxOKIozYrMouhZHtmw237fKVH6Ewe/rFkthkgm9P9BpLQeQmFrdWwgU2hh
    aCA8YmFrdWxAZnJlZWJzZC5vcmc+iGAEExECACAFAkRHS6MCGwMGCwkIBwMCBBUC
    CAMEFgIDAQIeAQIXgAAKCRDlQKFXhq7ky+oMAJ9Cth9LlPV2on7lTedInW/6T2mh
    YQCgm6bY4yyoJbjUxop0bcuKYGVVuSO5Ag0EREdLsRAIAK/+InMhz/qJB/+Rwq08
    K6TtPPkAs5+IcFQqjShCtFWiaZrvBqvcTPDqVIMu6CAnBf6QTOKQc+L7lSUE6QdI
    0mE3jiieYJ/cDzSqntYZBkC5glW0AzemgyllQRlqKrIawWu8M+SwZipvKb0YCIFo
    rmhoHCjzK/DKlSi0MOjPVTbsyS/rTvhAoXxodogKfNzRpb4MwDjM4Lda9mO+hKlI
    93CsBCzNZaOECYJ/1vkpuGqOBhvezrLtNCYFmul2JtVMyCb86mOIJAeiwn/hiZu5
    eU3QYdvcCOfYh//B8AZOVSW1x8HYzMFXuznVtx1P5ygvtWY3u+uIlXC274XuV0aJ
    NNMAAwUH/1rSg/fSdVGEG3ge+sGtFKHPOaGW014dt5nHCePrhLwHIe/udyZPCD3a
    axp6RVlx5Yvw2+nMBWiW65KACBUQslSHbeM5u2aPH6HaAAEYCJ682vKUWyEHGljJ
    zDBBANYKThYwle1xRxiE5MT9B2Bz33z2/BQnCgo21KYAU/2bwi2qVG0jyF0i6ryP
    6r5w2zZbZA/0IINcwENYRhYdtU+QtyB/HqX//nshVnxZFgG0pIPET5ltq9VM+6Fj
    hxJ2RXwGOxBJW3+yLw5JuDVrqoOz2lAOulY2uiQY1Nk9xHDBKZ1U172BugHuOIbW
    EAgbLB4QFuIE0HF1h6bNSISULLt0/yuISQQYEQIACQUCREdLsQIbDAAKCRDlQKFX
    hq7kyxbGAKDdITbPvXRBxINGLWTcNxtRqjXl0gCbBVmMqSG99Tl8uB7wTZRDjtCX
    5DU=
    =iFzp
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.245. Gregory Neil Shapiro `<gshapiro@FreeBSD.org>`

    pub  1024R/4FBE2ADD 2000-10-13 Gregory Neil Shapiro <gshapiro@gshapiro.net>
         Key fingerprint = 56 D5 FF A7 A6 54 A6 B5  59 10 00 B9 5F 5F 20 09
    uid                            Gregory Neil Shapiro <gshapiro@FreeBSD.org>

    pub  1024D/F76A9BF5 2001-11-14 Gregory Neil Shapiro <gshapiro@FreeBSD.org>
         Key fingerprint = 3B5E DAF1 4B04 97BA EE20  F841 21F9 C5BC F76A 9BF5
    uid                            Gregory Neil Shapiro <gshapiro@gshapiro.net>
    sub  2048g/935657DC 2001-11-14

    pub  1024D/FCE56561 2000-10-14 Gregory Neil Shapiro <gshapiro@FreeBSD.org>
         Key fingerprint = 42C4 A87A FD85 C34F E77F  5EA1 88E1 7B1D FCE5 6561
    uid                            Gregory Neil Shapiro <gshapiro@gshapiro.net>
    sub  1024g/285DC8A0 2000-10-14 [expires: 2001-10-14]

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.0.6 (FreeBSD)
    Comment: For info see http://www.gnupg.org

    [encoded data, 11960 characters]
    LsOLmQ==
    =GprF
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.246. Arun Sharma `<arun@FreeBSD.org>`

    pub  1024D/7D112181 2003-03-06 Arun Sharma <arun@sharma-home.net>
         Key fingerprint = A074 41D6 8537 C7D5 070E  0F78 0247 1AE2 7D11 2181
    uid                            Arun Sharma <arun@freebsd.org>
    uid                            Arun Sharma <arun.sharma@intel.com>
    sub  1024g/ACAD98DA 2003-03-06 [expires: 2005-03-05]

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBD5my2cRBADKOgeJz+IX/4UT65iwvAMoR5SMctMAEGNHvTk96H0DSYmDmqPE
    6D4PWxjiAmbFdMmxGvmPlZDGRk7IpZhrvmsAuAvwImA/UyGb3Qnb0zOoOlAIQiGz
    NXRvum8vzoTeW5r9ghLOKkBuze1qi8PZdT+ztreaYcPPZBI9zPNfnZd29wCg4Sqo
    eWA46NgWICUsOpC3dkhAmdMEAKBUmh8p4kOZQq5LPv3y1fo+5MBI1gnawiJoO955
    nzVuisH5h1yaNjz0nkB5VtEG2Ub2mhBjckze4EP4FzPgIpOhSMdGfNh67rrByvv5
    DD/SBwjULSEGbBlywn462QDb1X0PxFX5C6IYK2Q6i/vbWkOFMI2dVuQX0PUq9zjN
    D5QJA/sFeXR7NcutCUaLknFCaV1cBTITJNurKn5Vm3QQq5s6R2cFTxdouHcSNkto
    EbhcAvMapxlWl146h7mAtLsXXa5s3wuMWq+igOXUk0wkcm8CqvSQtnVYl4Xy/Ll3
    zXKxtzKHZ1YxAdYQXGkesBuaSafCN6VYDFFSEwChHrwe1sV9obQiQXJ1biBTaGFy
    bWEgPGFydW5Ac2hhcm1hLWhvbWUubmV0PohiBBMRAgAiBQkDwmcABAsHAwIDFQID
    AxYCAQIeAQIXgAIZAQUCPmbLaAAKCRACRxrifREhgYRWAJwLdcAEvjkJf5bHy975
    R7q7Rp4KUACgq214dvKu35ysWriNNxu2jtIj1he0HkFydW4gU2hhcm1hIDxhcnVu
    QGZyZWVic2Qub3JnPohiBBMRAgAiBQI+ZsydAhsDBQkDwmcABAsHAwIDFQIDAxYC
    AQIeAQIXgAAKCRACRxrifREhgVrxAKCXiBsYhu++BPQX9prGf2BeKNYaswCfaS2Z
    eNyZsxSNedBb26k8ARWrZzq0I0FydW4gU2hhcm1hIDxhcnVuLnNoYXJtYUBpbnRl
    bC5jb20+iGIEExECACIFAj5q4pcCGwMFCQPCZwAECwcDAgMVAgMDFgIBAh4BAheA
    AAoJEAJHGuJ9ESGBbWIAnRAlo9PVZzdar5pmWDGspeyGk63ZAJ9X3x6ZQSD7uYeB
    ajKe61NpPAamJbkBDQQ+ZstqEAQAkgu4UWlgyF1IeMM+vwHQ43zik3Rn6nhpJXRb
    Arpg4QyVHQNQshVT4XsmSvcgw0TSUub0x5m23dqnhcoB/mk0kAIymVQiEaa4SLjI
    tTXd93yRvSgPd8JEUNFwcSE43ZJrrmSAqIc6MUJ0hI/pAeCFvRWYQ80+82xx30Vn
    fJLOJR8AAwUD/R2xFX5geJ7W8OyLtB5XQirkL1YPGLNNx4lyAPXFJc1s1KwfZ90q
    LYNw2qLRIacYKmY2X9BrWADXPrEZIDKljn+Awz34lSwerLHWwYDDoeyjfMt4Mmra
    MsV8UIjaBGO1ptbqEDSVeb1tiWQGa622pT5YaZp/r/OFdlmg+JvkAzHkiEwEGBEC
    AAwFAj5my2oFCQPCZwAACgkQAkca4n0RIYGWkgCgxhDAezhK5kiSC4N74g9ifsF2
    jl8AnjujFRJcMfV2R28jiZ2BS9mnvqjU
    =klyl
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.247. Wesley Shields `<wxs@FreeBSD.org>`

    pub   1024D/17F0AA37 2007-12-27
          Key fingerprint = 96D1 2E6B F61C 2F3D 83EF  8F0B BE54 310C 17F0 AA37
    uid                  Wesley Shields <wxs@FreeBSD.org>
    uid                  Wesley Shields <wxs@atarininja.org>
    sub   2048g/2EDA1BB8 2007-12-27

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEdzy+MRBACwXYsfLwZzbzYru+XqMIFKVIIszXJK61UejvQqcuaZRNLSQyM8
    Fc5dI6AfciZV9tH8LDqYmd/vDtzjmBp/h2SPqQfiVuREQ0+c+aplvWvWc2TjFQg6
    CZbb730TtazPXbObZvSMRvLeRM32W9Abj5L8DXoQbpMtC8cllG21fsY4hwCgyngp
    xK9e32zih9ddXk+NgjK627MD/iPPyo0N4cb9omNwOCot8YIRpdJhmvR/yPh+8rmW
    NUu61gV8jn2XB6Ldto8/dR7chqqbBU7bS+hsk/lmbOuLNe2XkQA3e7dd0EEHSYYf
    mx6zjw/dEb9EBANAWI6QOyjNM9npWb/shZi8Pehcty08t2eytd4M7wPI9zLAXsMV
    M3nUBACgxIoW4e9yXeNQ3CI2KD/Dbup+SNha1uCEmzN5A0VfPJzyi4Avdtl9URGC
    HUFnUAs5B366yQTgmkjUcfcWqTKBicp4TAZ2KbuDzMX6f6cikb9bdbl4P62vN718
    5iclN77KfTfc6j4aOdIbnc6J9GStvYY0R2eZRKkr3CsqSuebxrQjV2VzbGV5IFNo
    aWVsZHMgPHd4c0BhdGFyaW5pbmphLm9yZz6IYAQTEQIAIAUCR3PL4wIbAwYLCQgH
    AwIEFQIIAwQWAgMBAh4BAheAAAoJEL5UMQwX8Ko3juoAn3bIDWeVAWOfi1XjXdaA
    HN7HKkMKAJ9RJ4F67NZKo37U5E3UnnVSRLCZ27QgV2VzbGV5IFNoaWVsZHMgPHd4
    c0BGcmVlQlNELm9yZz6IYAQTEQIAIAUCR348ggIbAwYLCQgHAwIEFQIIAwQWAgMB
    Ah4BAheAAAoJEL5UMQwX8Ko3KPQAoJYfbksQ/n/1FitmpqJb+AmpOmkPAKCVXF0g
    Clk43/Af2rVb3Vm91NmuvLkCDQRHc8voEAgA6Tped4TSVLcdXmDMeHvt29i/9rGw
    EO6lbwUZfamHGasMALyhWC2/nWhoCdo6tTP2XT9guEX5eu/FoN+nAEIKKHqNiiuZ
    6jyOuzUFD/d6n8pUkjHRLqLxFznbgW8f0aaG4rNJTQEQy6+X4/yKEvzRxjroNbZQ
    l300+liw6Q5OztzgMjhkcva4Gxf+aVhVMueGVuANj1QhPPqvIT2roRsBY6PPNCGY
    AaymLWBq51UbvE5j2jtCF2nfxYnajauqnJpZK0tSkLMkxWd/Khvv7GmO4v47qx/U
    DTx6iQP/i43JZIqSg8zSGjY9Lr9XJpzxr4FVyW/rs5X3Fp9ZCQxF3Sty5wAECwf/
    Zs93KXphXLWhCal07JQsu0T2y81+EXRue7QltZs+VTHvGZuc949dgnZrq6iRckpD
    unMRJUXNrKP6BFNOJuDAVRVOxxDQc+ydVGwpQFzJes8/9C0TYOaw0k+ayCZapfVf
    L6zktK+g8oYOXVjjdo8hX9xsus5ie69x73Csve59VmGgCwvywuLUcjCWEgMZGRY0
    hBL9ec4uRDVRIdsl15hQ3NGwdxiDEPkJu8QzQv/t4cde+omnI0UdH+Ywk6FZ2qxj
    62QaoTvFhuNfWUdmnEAbIkfRCFnHVEL5KcQs0Z9CM2V6qS4kdD9wzthhYtcRgWjS
    paW/fPyNYLmXuYgvfyk8XIhJBBgRAgAJBQJHc8voAhsMAAoJEL5UMQwX8Ko3AxYA
    mgKQnqx2baAJtOI7VsgWeTBFEi+HAKCaIQDFpsRsUtsuEYpqj+/zH1bwhA==
    =kNwv
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.248. 重村 法克 `<nork@FreeBSD.org>`

    pub   1024D/7104EA4E 2005-02-14
          Key fingerprint = 9580 60A3 B58A 0864 79CB  779A 6FAE 229B 7104 EA4E
    uid                  Norikatsu Shigemura <nork@cityfujisawa.ne.jp>
    uid                  Norikatsu Shigemura <nork@ninth-nine.com>
    uid                  Norikatsu Shigemura <nork@FreeBSD.org>
    sub   4096g/EF56997E 2005-02-14

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    =/u/r
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.249. Shteryana Shopova `<syrinx@FreeBSD.org>`

    pub   1024D/1C139BC5 2006-10-07
          Key fingerprint = B83D 2451 27AB B767 504F  CB85 4FB1 C88B 1C13 9BC5
    uid                  Shteryana Shopova (syrinx) <shteryana@FreeBSD.org>
    sub   2048g/6D2E9C98 2006-10-07

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEUn9lsRBADbufFsrk3YtL2jzdLYUufYV9goSp7joMMOwSLhSWf/98DoaW/d
    1bhwr9yAFfA81/ByuCEkigZl6jUW5AEEDuoJ4hxZG6th7OasSMCLHrGv4QCIDsiR
    Yo3TUFlh3Fg7SYZAxmGsMm44u/nB/0oZOWJeTzu4IkoG2QCfoRi+RUIEZwCgupdk
    xn2tovdQA+y5l7uxhm6MW2ED/Am3BVCM5EojGESa8QKTynKoWOzPFSvUvarqORru
    pEpmy5JdPjmf5mnfPvWcyccgAIi4VyuyGeqckFOJBBUaQ7w0Es7G9p+egp/e7UVC
    vgAVRKtSzix3TuXaaB04K3IJVY9vmEwTGO8Jy70Ab1hI/R4MbUUfzuWVaKUic9jB
    p3oRBAC8RgIM9zBTOtbsFTQ/LpiBL2X6oSRrJBvaLtFZEyG4aDGPxF/ESdfzIPrW
    3YePPinAgB1EhVawmP/uj3zhZQML3g69tVu9YhMhRb6C7v1h/nVC73wT3KDnGrPS
    eZzFhgHDr4zfEomXoR+HLjP3u9EMguyzlCfEO58QtTgeXKzZcrQyU2h0ZXJ5YW5h
    IFNob3BvdmEgKHN5cmlueCkgPHNodGVyeWFuYUBGcmVlQlNELm9yZz6IYAQTEQIA
    IAUCRSf2WwIbAwYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJEE+xyIscE5vFGEEA
    nAhEEHq5H3tzKRdgX+PFn8wyzSgqAJsECHYU7maqvBfs8l34AOwuoK+TR7kCDQRF
    J/Z0EAgAxyVxRfbMBrSUGeCXI1FSWvqZJkrLUeQ2aCN0FiEmrjUMqTgkiZcxortS
    BS9Iuk8aEXv7d4S6qhJLfidM5XgxZs/wXFHNO30S+HHw5EwQuSDg1OGM/vY2i5y0
    hJqZuQos3SpUWx2Hl3y/BlExt+D5jwFyU9hUE1nNru3SltmryJwr+6PDFfom5iYc
    1FZpfnm60ZPK0cWDYk04uMYebgXd55acArmPvZMdzEYl/ChrB2GEv/JTVCJZZY0q
    rfI7WE2wwPb6/+WK+QINb9fqAdGsOlpOgkuFo7Xu+iKdH/EDGWnKQkLMPClM1xMK
    dclJKMz5y+l/GB/dTYWH4NtGeiIk5wADBwf/TLTluCRCFKDHkBuV68mJs/ShXpXw
    tnhaFF5snAmmtAH0zk81byw4Wt1+MUMYZ1rYrmhqyhXcqnAcHYatUbj2lyvzvCxo
    W2qdW6CE+0bj/pCM41oeRZi4LzJx3pYwSS2fPWaBWAeWZ6qLrHWT8lc0RrJMlteJ
    kDnchDP9AVxmi4bvpmUbNPdERDEE66XFtQ3zXpzmb0hLV1Hcv60KVYd3zzRADOaM
    tRnRMN53/yC0C+DDDoV6H4TJwxiTo5MTT7s9a9H/EfMY40RxFGjwojRukCTGWpuh
    pJf2WBCsnvBqVsqJLeOHyxwlbJhm/KXVRbFoAp6rZTshQ8M2kplmygIJEYhJBBgR
    AgAJBQJFJ/Z0AhsMAAoJEE+xyIscE5vFzHMAnjcjCi17pcNEGqdUuGWLXFCyQ5X/
    AKCNc4ZJinPdFRM5W3TXJmKRuGTOVw==
    =DE3R
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.250. Vanilla I. Shu `<vanilla@FreeBSD.org>`

    pub  1024D/ACE75853 2001-11-20 Vanilla I. Shu <vanilla@FreeBSD.org>
         Key fingerprint = 290F 9DB8 42A3 6257 5D9A  5585 B25A 909E ACE7 5853
    sub  1024g/CE695D0E 2001-11-20

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.0.6 (FreeBSD)
    Comment: For info see http://www.gnupg.org

    mQGiBDv5ys0RBACm/dkRFFWNFb6pafzsHX3YHfyYBQAhyoT5ZPvvh7e6RdHYdxYc
    tYjgtOid4jL20Uz7kXYwT5OVYo/l9j/AqknacYoboO5AHcJrfO3QjfztJaorUSqv
    w9dv6DSOQWwTmexeshp6v5aEsOpDbfPtUnFBwcJe5lOBsokk2CqkzI/XqwCgv49G
    uNLbdtIN87CrUwyiLG5nsSED/35/A/9b/KNwjBoBbheCJDByHNPd9svQIpVWTuk5
    i5RKVQQET4ZD5tPQWPnSZ95ztkkwcjjOak+esHK85yTYXXjrfcP7JiE3HIZhyj3S
    dxWaOFEbSE3Xc0BT+8BOAPFfb2WMSdCQFowkRqbMiFudLnz4tZnBmTQcuxqp4G7S
    AFh8A/4jBhhkKaw0KeWtkFKugVgUWZNWZ54aJhUaLg5wGbSTNME74YLO0Xc+wkjY
    id3gG5ayJyecZXCMUf175/ZaSPeNRCBOfMjDnl3G05b/huBFUnXzxTkWCcmopOwW
    5tz4C69UVP1UHg4XMu+f6D48srIaFu+DOMTwniL95vqcGkCUJrQkVmFuaWxsYSBJ
    LiBTaHUgPHZhbmlsbGFARnJlZUJTRC5vcmc+iFcEExECABcFAjv5ys0FCwcKAwQD
    FQMCAxYCAQIXgAAKCRCyWpCerOdYU/oHAJ4kKjpX6iMF1Y0FjPMyFiyUlgjT7ACf
    a3czQMrflxJC/VNuzMAmzA19j3y5AQ0EO/nKzRAEALHq1lBY0OBQBeV7sGOvTaBN
    itMZeVDrGDYUQ9xunaDsEHfz2fD3jXCZLaUayv4LZeWzRr4DbnK4F0AmZLR1v5h3
    LxBuvqHPRma5RyyFRftwTNHM+DWu6TSqnE43QS7Ci+z8ua96CmcDa+PnEfubyNLE
    dco8gfE4oHDqni1R2qVfAAMFA/4uVSYj/DvIzckbZ05FjG+pg4HKsyxyFeFsrm9D
    8JD9tC26k4YxLG5FPBdKRsDrN/lZbnLWHTtZqhE3WlX6DRlea93T9Vi2skbujKcN
    mbao5pyVXWl1dboFquP8ku91CRTZvmdLF6IBnPo0LfOu4jD6DsD5O0UZ7lD/Y+6p
    8WcDfohGBBgRAgAGBQI7+crNAAoJELJakJ6s51hTsJUAoIB80SN0z90ocSdxYGwl
    xkOSm2cvAJ93DigXb3moOsw3BRLlLPQRS6TZxg==
    =aR5H
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.251. Ashish SHUKLA `<ashish@FreeBSD.org>`

    pub   4096R/E74FA4B0 2010-04-13
          Key fingerprint = F682 CDCC 39DC 0FEA E116  20B6 C746 CFA9 E74F A4B0
    uid                  Ashish SHUKLA <wahjava@gmail.com>
    uid                  Ashish SHUKLA <wahjava@googlemail.com>
    uid                  Ashish SHUKLA <wahjava.ml@gmail.com>
    uid                  Ashish SHUKLA <wahjava@members.fsf.org>
    uid                  Ashish SHUKLA <wahjava@perl.org.in>
    uid                  Ashish SHUKLA <wahjava@users.sourceforge.net>
    uid                  Ashish SHUKLA <wah.java@yahoo.com>
    uid                  Ashish SHUKLA <wah_java@hotmail.com>
    uid                  Ashish SHUKLA <ashish.shukla@airtelmail.in>
    uid                  Ashish SHUKLA <wahjava@member.fsf.org>
    uid                  [jpeg image of size 4655]
    uid                  Ashish SHUKLA (FreeBSD Committer Address) <ashish@FreeBSD.ORG>
    sub   4096R/F20D202D 2010-04-13

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    [encoded data, 43680 characters]
    72HtYsmNE4TLbl0fMctolg==
    =ID+y
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.252. Bruce M. Simpson `<bms@FreeBSD.org>`

    pub  1024D/860DB53B 2003-08-06 Bruce M Simpson <bms@freebsd.org>
         Key fingerprint = 0D5F 1571 44DF 51B7 8B12  041E B9E5 2901 860D B53B
    sub  2048g/A2A32D8B 2003-08-06 [expires: 2006-08-05]

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBD8xcj4RBADp/ttN/vrU8xXimyZDEJ3NbJXMRAdWin8hhY5cVDT6n6t6Kih2
    5Z+orVfRUA77yyYprxpkMKJvfsRspWvJeM9/7duQe6C7CSUNwB3bXCj5Q7PG9Oqa
    a6ZNPQ8k0EGZkFRgbbkru8wpcttMr4ngsdIm5cU7Y/bk3O2L8kh/Do1XwwCgraUA
    0z9KKZR+PpMgM6YXmAy0fh0D/3EP//MLIF7RW+wyabjmTGxMB9RapZXlZLTjFFeX
    sOrAhgcjFodwigDHEqLtG5I75wz+z2vuyaLtTPHYy9fkFxKXNE8wNWj++6GMJO3l
    OWRyWNlDLX0d3D22vVWOeh/rLq+PvsEHso1TnOJrYn4Dn4VwVXzSIaGmzGAPuPoO
    KaT7A/9Pgc8gwGPtG31yrp6AixoMZ32wVdxuqndD3M9XK+jtcdDtKvICQcMWCL5T
    E8dwmb2qzN13bBILJHktut5JvjgOgYOJeLZKPAMRZz4MON7KcKNZKmPBuNw1a6cF
    KGkBJfbCh1GIx7DyF/CcFeg4/7IhQoANYZQNc9Zm/tRbg531SLQhQnJ1Y2UgTSBT
    aW1wc29uIDxibXNAZnJlZWJzZC5vcmc+iGEEExECACEFAj8xcj4FCQWjmoAGCwkI
    BwMCAxUCAwMWAgECHgECF4AACgkQueUpAYYNtTv0bgCgkdyW3YFhooTeMExQJT5Q
    FbCTYS4AnReju20M/WngliTt9bdbnbmPeGFOuQINBD8xclEQCADhc4W1TgKJBO6M
    bEnWC16IXR3U8sXU7meMMbclb5vWt3j1jHVczrYVdkEyGxzu+ydxVlPhdGXtxT1W
    8CBjXsfz8DRKs9nMttqPj5u6KQdr+O0zWiZZkoqOdT29X7WZNKWQreKK10PgvmDu
    1rzf0Y87B7M0qnqjKjhqinVhLrOHqJIwfFQmB/E06MOhE3BQqYXc5qvBuq4U9y7X
    Qt/Cxfobw47iwAJEJIExai4mMsbXXtydsj9O1tg20c7IBzJEEDecOFJPhIKtcQ7p
    kRNjVGwAkQhWmXsPZHKkMjgnkhTmH0L7MT2YGK6LHvLiuAbjULYiSZ7WLXMDe3iJ
    al4lDNSrAAMGB/9X9K1Dmdu6pWOub3zkgNybFFh8OoguKJkdO/bh1RejzeNfI9Q1
    M8gO3ePzgXF3+BgJIblOA77t6OhNUQLRcjSs/xZwXG5KVQjRF3XJGkLZQIl3JGmB
    i5eNE/rBIMHSPn4GM8FSDZ8bPGzgaTBhEIos/8nCMpyxf70f+gsbjjW/Dq2HXHNr
    wToHezXX1LzzCqIl2fJgubrMXVbKYQBLy7d/IQnfZp1sGfvTcSJSZXT3wo6MH1EP
    jUpwmfVOGDN1NDQTbuu1vYqSETt2xzIq4R/+y8/xbm8YKBYDCL2EyCGQcwWhFU4C
    RAgXFkuWPiXx/PjfYC4YpKd57/7xgRO9i++LiEwEGBECAAwFAj8xclEFCQWjmoAA
    CgkQueUpAYYNtTtwzQCfc42CUSzItmXxtmWaVRxFSbnwJTsAoKPQ1LsUmEHNo+1s
    X7criQoU0Axa
    =iL/w
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.253. Dmitry Sivachenko `<demon@FreeBSD.org>`

    pub  1024D/13D5DF80 2002-03-18 Dmitry Sivachenko <mitya@cavia.pp.ru>
         Key fingerprint = 72A9 12C9 BB02 46D4 4B13  E5FE 1194 9963 13D5 DF80
    uid                            Dmitry S. Sivachenko <demon@FreeBSD.org>
    sub  1024g/060F6DBD 2002-03-18

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.0.6 (FreeBSD)
    Comment: For info see http://www.gnupg.org

    mQGiBDyVYkARBAC2Z/8odq3zwRIQZ9XOF4ZoQ8ITJRrTUwwYjwOf4Kz6gTH+zIGt
    Q57m5w1Scse3J/fDdIZzw0gJgH0XRpKOonWi23di4B3Oyvrdr1Zm6OlqUjoty8CC
    7jo5WlLF/05Vai2HCUmFeqiukCN0mfm3Fd8S+hf1IpE1gaIxCKNvYaf14wCgpoVG
    Tqi+lIMCktV/vxUf3h7KgOsD/3nBeANz3U+Izr9g/AsF/FnHXeawl2m7USaIB7b1
    4CFrQp8FDl6TCAtPHQyQ6pdnh0HZ3h+7cfPB1poRaXUvDimQZR9KHZO9uIilpC2n
    MdBjbkXmvVQ5FhOJz49cXw51Lck11n/+OuP4N4TcIHdt0DQJoUrGIB6X6Op9aOrP
    Ob70A/sFsFfebYdfH8loLsJkHU8VbB2Y0KZBXSnhysQ9muvj1HqT+n66o/3SliCE
    R3cNVMgg51pqxzUC0o6qTVKJbfOrI5b2tbYjvx87ejugQwafhKu8t1liDuUYQK0Q
    S549pzLKUr/NUvJaYU//6QlFIPNSzwB6x4wjrWAKBv6Vn+x0c7QoRG1pdHJ5IFMu
    IFNpdmFjaGVua28gPGRlbW9uQEZyZWVCU0Qub3JnPohXBBMRAgAXBQI8lWJABQsH
    CgMEAxUDAgMWAgECF4AACgkQEZSZYxPV34DFVgCfREoIUfpKaEeGyzl0zKThVC7J
    XccAnjiB85SwuNAxMraQuGDJXojukUfwtCVEbWl0cnkgU2l2YWNoZW5rbyA8bWl0
    eWFAY2F2aWEucHAucnU+iFcEExECABcFAjyVY4cFCwcKAwQDFQMCAxYCAQIXgAAK
    CRARlJljE9XfgA6GAJ9RFwXlNqYap2SI14IPRjX9ZAzvjACeOC/Elh0HkwQ2HZMT
    edpgzOuknUK5AQ0EPJViRRAEAO4VdFfYGd/amgG2MDGqD269Kb5vTFbS5mDczgjM
    6gXZgOjhbvj3x2auo+Pfos6M/bOtHuIk7QFOeOEJ1wcg8wgE3L3kFQPeEPeOgKBk
    /eA1ExIW3hiPeuwNxT3iWEv0GF/rvCSeSK3nuuDBNmkSpJ4LHIyO8Kf5YJNp8+6D
    yJ8rAAMFA/4jaulRHxSsWlFIm3gpBR9aiXGGX1pZTuJpXqjAQcRzDa9cuVatiSJS
    H9wzfE8R4353s5HpaY3AkVRjY6s9AB8bygGdUCQjuIuifTS4+tG/wmaXNgyqBqaB
    6V9gTgfW/7XqcJUGeLLMUpccSRZhlQvHd18aTfPWPB49xu2+arw6P4hGBBgRAgAG
    BQI8lWJFAAoJEBGUmWMT1d+AYlgAoKZWZs7rDLdQbn2d0CVwmWb6hQLhAJ9E/r8N
    n3jf2PI8Psl2wtgvWazpaA==
    =mkxU
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.254. Jesper Skriver `<jesper@FreeBSD.org>`

    pub  1024D/F9561C31 2001-03-09 Jesper Skriver <jesper@FreeBSD.org>
         Key fingerprint = 6B88 9CE8 66E9 E631 C9C5  5EB4 22AB F0EC F956 1C31
    uid                            Jesper Skriver <jesper@skriver.dk>
    uid                            Jesper Skriver <jesper@wheel.dk>
    sub  1024g/777C378C 2001-03-09

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.0.6 (FreeBSD)
    Comment: For info see http://www.gnupg.org

    [encoded data, 4225 characters]
    Crfzumk=
    =Ru0+
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.255. Ville Skyttä `<scop@FreeBSD.org>`

    pub  1024D/BCD241CB 2002-04-07 Ville Skytt� <ville.skytta@iki.fi>
         Key fingerprint = 4E0D EBAB 3106 F1FA 3FA9  B875 D98C D635 BCD2 41CB
    uid                            Ville Skytt� <ville.skytta@xemacs.org>
    uid                            Ville Skytt� <scop@FreeBSD.org>
    sub  2048g/9426F4D1 2002-04-07

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.0.7 (GNU/Linux)

    mQGiBDywu5YRBACKxY/5WzdUtpL2aK2Yy/Yde2spYiEP2vKj3bs+ovV7a9129lki
    ldCu8PhoJO+x+96+AwbrR/T5FlXyQrInMa9U5os/8/HQjTXtY/oeq+UNDNFZrnMR
    Gu0zYICbzgd1rW/tnZJBkB3X2Ao6k0hSATGmP5/sowT7EBSdaM7ZhhqOywCg5A5n
    J7+062MfzdS/3KoSn+Utex8D/2BN/BMLvrItQBUjy0tn8Vsomx+FHbFKOm1cuOeq
    smhsOmsANwIafiZnK4+SnQlVbXJLM6exNTqSimH93y7Q9BX7hmWYl0XVpUui0mBR
    UrVG00PEa0jTLasOkvlyYBS1En4gZ5J2ArE2cYFPkv7jndqJ/pAAZkG+tQnXJ8l5
    g0SLA/4tJHLJ6kPad98V3cVbTfhY2Dn/i+QbHvzBbBj+bETLEUdqOKzADGrWoJeE
    fADfxYi24wHkpH3U781p4SldZpOUvkyYj7YmjqZP0AH6SsKI3i52z1BDQF49gRcD
    uc0sSmv57yvjKCk1Cehen4/qaVcqXWTZ5NfyGb+hbHLtA2FxSrQjVmlsbGUgU2t5
    dHTDpCA8dmlsbGUuc2t5dHRhQGlraS5maT6IWgQTEQIAGgULBwoDBAMVAwIDFgIB
    AheAAhkBBQI8sLuXAAoJENmM1jW80kHL8KkAn1yTiwsMLq9GsqA44hkh1Sk0etM/
    AJ9BiDSqgX0S/wzyXAqfYcsmxS96qbQnVmlsbGUgU2t5dHTDpCA8dmlsbGUuc2t5
    dHRhQHhlbWFjcy5vcmc+iFcEExECABcFAj0dWzwFCwcKAwQDFQMCAxYCAQIXgAAK
    CRDZjNY1vNJBywFtAJ9NCVHRa6GxtfTxae+6ZkTh08xQZQCfcGNMwhcSGJUyjKI2
    eYucgrkwp2C0IFZpbGxlIFNreXR0w6QgPHNjb3BARnJlZUJTRC5vcmc+iFwEExEC
    ABwFAj0di4oCGwMECwcDAgMVAgMDFgIBAh4BAheAAAoJENmM1jW80kHLzoYAoLqR
    3unds+O73Z3EppJna4gECkQ0AJ0Uye7ZXLMTJo7pNmZSBSz6bA/qFLkCDQQ8sLvS
    EAgAinenfe1g5Cdp8bf72+idBePq0zHyPUOpCuFGkiKXecXpgQUHCVYM8IiafB1M
    Or9V97vy1H56sr+HaBsC75mpuPC7lnltoY+zq0zIkNbi20+p/546W7A5MV66xtTx
    D6uUSyZ3jksAaVch+6yQNNxr3CDWiNSjomkK1ExPsjaPAA82L4yExAJJGwUYAPOS
    B1Gw6N3dUtoNuQwJdcw8fjsaRektXsHm6Nnm++3gB0YJ4/x3gcvxlNlONHNp5vdW
    msQAJtWj4isSMfqi6Y4SQsw2MWOKrYr8Lt++m4cQC6/VZXafTR/TrDZCqYhwovyX
    vgLMdKfxTZLqsyZwgWDxFKOEewADBQf8CCEh65lRfWQG3MopboOs2fFp3BsfVMvA
    stV5AYktLHvwGXTW0rx7sCdb3kBtKjiuNFob3gis2Nd05NUxFrzrZsyaktyDiZmT
    gjmEL1LvodDg/mXLRQgl3QDzUL1nlfFQRkcKqlDfCYezbgYFxCy4EGsC86cf8s8F
    ZI0hyXXY+zir+xJ/w4KBtL+cY5LJExh0FyPfNnL+tXUthRuN9wxZwVyQ9I4RTlkv
    ybb8VTWEgzkIf5BiDZalvcOJNAujptlgz2cLnV4Kzu55Xy7jOi5YfYjMbSDa6W5c
    vO/wbcAG3gwZOoeHBRjwTNkn4iBkDPq71o1LDDxHvWUVAO+jU3TrZYhGBBgRAgAG
    BQI8sLvSAAoJENmM1jW80kHL1RMAoNsmDIuxlUf3YwjAr/fSqBOKWgN0AKDc0CBV
    uZAqlAL0tDv8Fiz3HvICMQ==
    =mEvy
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.256. Andrey Slusar `<anray@FreeBSD.org>`

    pub   1024D/AE7B5418 2005-12-12
          Key fingerprint = DE70 C24B 55A0 4A06 68A1  D425 3C59 9A9B AE7B 5418
    uid                  Andrey Slusar <anray@ext.by>
    uid                  Andrey Slusar <anrays@gmail.com>
    uid                  Andrey Slusar <anray@FreeBSD.org>
    sub   2048g/7D0EB77D 2005-12-12

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEOdg/YRBACkP7DeG+wypqbAvKYmIYMBHsYFCmIf5928MvpCgwO4idtg76IX
    Qd/AQH0sF2uFJiikI9NiJuq3OUXsyRk+7xltLLrgzl7/0GTT6jej8tWFH0AU1/0r
    nYhUJ/svVe+QNNEbMOvCCcZLslv4/fuak4Ilvgcb/SAir8iUL+nfNzwLwwCgw+fG
    2DBpULmZtyMUMZYwyi2UQ2cD/jycHnx1+AHLt24OajcWBoBG88DlcK3ERpg/J+D3
    PYoNfs4qcEhU4UVQw5vhMXBnWxD+BiZf6yrh/GRay11oqShMWl/B4UQrZZBwXBVN
    Lvx4aY6LRA/DAUd0R2CUIwsjaaeBQ2gmvISau4UjtE1ezNI5s/E7oFDNDKkv06Z2
    hrucA/9G3+UlrLhDWd2+VMt99O5FFEhtHbClMUXIhXYwFS/41zy7cGf9p4wA+IQC
    SeXns1bvdZYBxPAYTgDK0XGP8yi0TMpICcXB4v9gkqKIIuO3scB3mH+We66RG5mI
    7sls5BoJ3ARfsJuidRS1Uu0TXqCTcj2NTCtDNWd82nRarNpDwLQgQW5kcmV5IFNs
    dXNhciA8YW5yYXlzQGdtYWlsLmNvbT6IYAQTEQIAIAUCQ52D9gIbAwYLCQgHAwIE
    FQIIAwQWAgMBAh4BAheAAAoJEDxZmpuue1QYMTQAnRGPeBTIOHdEj4nOmVtECGhv
    jpqsAJ4pcMFoOwSyCqy5YXoetkQWrsq3IrQhQW5kcmV5IFNsdXNhciA8YW5yYXlA
    RnJlZUJTRC5vcmc+iGAEExECACAFAkOdhSwCGwMGCwkIBwMCBBUCCAMEFgIDAQIe
    AQIXgAAKCRA8WZqbrntUGGMkAJ45WS+CK9Uh2UYk3kGG6/jmx3kVFACgl3ALZehS
    E1Z1ifNha7XLh8C+U3G0HEFuZHJleSBTbHVzYXIgPGFucmF5QGV4dC5ieT6IYAQT
    EQIAIAUCQ52FUAIbAwYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJEDxZmpuue1QY
    MzsAnA1T9Wkp8yaxQmPBuuvZNrTdJOBjAJ0TJrwVeQW/+3zffBICU+rptKA8xLkC
    DQRDnYP9EAgAjavYUHgBttL7+qFwfeOJ3oW+sNVNsMp4VGWvy6QeVCeFvVK+Kpb/
    eN9ScAFJM+8wzhNHv3eyXFht0jwSadX48a0FzcYApm+pP3OH6y4Osxhz27P2tc2u
    yzKMV19nZz28cikY2mtH3Y2GtSyn8pOIL2Ar4sc+hK1LnszGTPf6YgLSBlJSnGH5
    +TMg1Pxq/CSDIq4zEv9IyBLlbuK+w1/fqDzLBT5L51FdKDUpsCBZNPaRiin+ZkBx
    LI742GusIYz+aIcwsRBDONnWdemAHbtSFDxMup5SSEvlAtEU5O0gO6bZx3tv+WZT
    6EJ66QsE5IszzTGkw0qK/H/BrsEbyOPbOwADBQf9FOrU6qF1Zj/ONad4vzbjDrn5
    nI1vnrBkJ2QJnMM/d6V2ItUVjz9myqXTgteERmwN60DD1jrTqsw5xWHJ/rjJCoW6
    mUHWjVkUram3OL/HO96t8zmTZDynrGXfnzLqykkLgJVsVmoU/1OCusY6h0CMAiWr
    altooE6mD4dpBQq1svwJEe98/X97LJix0J8W1QLOwOi8lD5kApFf6feTRCzJKcOy
    Szr3NiiwYGGRyHDQhe13KiGoJZQbhoJlbpS7krBTAxyUll6RRtQmlITLF5wmP0jV
    JWPN2tZ5BdmqYEqOoH4h6Dj+D1glXT19YN6kh+CV1w/d6iWWiB1lDXwDOQMtFYhJ
    BBgRAgAJBQJDnYP9AhsMAAoJEDxZmpuue1QY+tUAoK4RQLo2F+0c9PlfrfUOYpOk
    GAzYAJ0dMZ6xeDy4UKlIBdDq4KPZk8IGzQ==
    =vOBB
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.257. Gleb Smirnoff `<glebius@FreeBSD.org>`

    pub   1024D/1949DC80 2003-08-25
          Key fingerprint = 872C E14A 2F03 A3E8 D882  026E 5DE4 D7FE 1949 DC80
    uid                  Gleb Smirnoff <glebius@FreeBSD.org>
    uid                  Gleb Smirnoff <glebius@cell.sick.ru>
    uid                  Gleb Smirnoff <glebius@bestcom.ru>
    uid                  Gleb Smirnoff <glebius@rambler-co.ru>
    uid                  Gleb Smirnoff <glebius@freebsd.org>
    uid                  Gleb Smirnoff <glebius@freebsd.int.ru>
    sub   1024g/A05118BD 2003-08-25

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    [encoded data, 4940 characters]
    7JGkyCRerJup1QCcCec4su8W7fondrpubUDLX6B7Z5A=
    =buTJ
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.258. Ken Smith `<kensmith@FreeBSD.org>`

    pub  1024D/29AEA7F6 2003-12-02 Ken Smith <kensmith@cse.buffalo.edu>
         Key fingerprint = 4AB7 D302 0753 8215 31E7  F1AD FC6D 7855 29AE A7F6
    uid                            Ken Smith <kensmith@freebsd.org>
    sub  1024g/0D509C6C 2003-12-02

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBD/MDZIRBACfyWbQW/cZnu504r57DAQbCbTYNG7V/TgfZwphIPyC8YnLtmJv
    vLdtl7+ToiG7UJUJsBE9OJdb1qA7JP5+jha/TlzIAUMW8doWNyI52nM1zHzBAZVE
    aB4Gxy7pib9yBsrGYiLbuV5YfB7TUyea31OXpZ4jPl1E6RxlYdVuzEhq0wCgnOeC
    SuO0cJZMXisY7DhoF1Q8ucEEAIALzShJ6bbjABbcvMWmoRwXvIcBsAcjKSdRcIp0
    AP+9i3PSZkNXV7rfYM3+SydTa3sJIVBbdXChQakcZqu9+rmfL53rErErYuRwKqhX
    mkp4+3GO7cKm0Oya1xLF9es/OfkKcQ9LxkEytNEnU7xlUNoP8fkCMJcBIwagzPfY
    7UAzBACEwGP/o1e0R36jOAjrUZsxe63Zopz5138bYdZtmsqwI+QHK6+/tS5I7FCL
    EQZL6fEjR7gF1lcj3gC2nypjO1aqodx0hShlNnz9d3uJ0q8EChjJuc30UhjgTcbb
    ZQv3hssKHkvTJ5ch0x+ohYCfH+Gcd8jbXCZvvS8PcI66DRaz3rQgS2VuIFNtaXRo
    IDxrZW5zbWl0aEBmcmVlYnNkLm9yZz6IXgQTEQIAHgUCP8wW5gIbAwYLCQgHAwID
    FQIDAxYCAQIeAQIXgAAKCRD8bXhVKa6n9nfpAJ9MHcwNehlbFRJn8B9tlLBE2JvU
    aQCeLuore1PhiLZPjHriz0/npGn9xDuIRgQTEQIABgUCQLQblAAKCRDYyjFxW6BS
    wyFIAJkBI9/2PBvvTvB0FZUF2yd3JEQJMgCgpWVGTdChec2z/YGMQ/EeTgNDThy0
    JEtlbiBTbWl0aCA8a2Vuc21pdGhAY3NlLmJ1ZmZhbG8uZWR1PohhBBMRAgAhAhsD
    BgsJCAcDAgMVAgMDFgIBAh4BAheABQI/zB/pAhkBAAoJEPxteFUprqf2oVkAnj0Y
    vcFOkVU9JWyJJKieWL/+OuNSAJkBvi/uFt2RgkNgUOvHR61SxZrGeYhGBBMRAgAG
    BQJAtBtxAAoJENjKMXFboFLDvxkAn21uVgtvwLN82vOpKTvBzwAUVK/gAKCKEQDk
    vfyMyQZayoFeC8cMagaUCbkBDQQ/zA2UEAQAqYnqd58qHyrKfsw3SrTE74/4qneU
    ra7FY74jcUhGhrxOElG5hXrHHEHo+0M+0zFwhqedecj2GZbrzGEl5SxVsme3slAf
    Gt5OaAk/ojOY5d5rTezG5v7jSr4EX0JKDkdlve8RozHsutXznsXmUY/BfO1qACek
    herQeczznycJPZ8AAwUD/1MF+jo626W+4/gMgjgCQ+saOiNI6AnGlS879MUjV0Ef
    j6aPfAJ5Xi7zNqkM+HdNBxjPtyxIK8RqmdAjHDMR8FjlZjf+svwuL2CfXk4jCk02
    OXD4dxJK74w/ZTK2kSW1VW63+5K1lgsRmZvnTpGZ4ijxj4H0r2bJFQ7iUd2kNxpO
    iEkEGBECAAkFAj/MDZQCGwwACgkQ/G14VSmup/YeOgCfcaCQpDfKaEvYiw7XJryW
    b4OXclEAnArceW10G489Csi2QR94q7clHU0G
    =gLKU
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.259. Ben Smithurst `<ben@FreeBSD.org>`

    pub  1024D/2CEF442C 2001-07-11 Ben Smithurst <ben@LSRfm.com>
         Key fingerprint = 355D 0FFF B83A 90A9 D648  E409 6CFC C9FB 2CEF 442C
    uid                            Ben Smithurst <ben@vinosystems.com>
    uid                            Ben Smithurst <ben@smithurst.org>
    uid                            Ben Smithurst <ben@FreeBSD.org>
    uid                            Ben Smithurst <csxbcs@comp.leeds.ac.uk>
    uid                            Ben Smithurst <ben@scientia.demon.co.uk>
    sub  1024g/347071FF 2001-07-11

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.0.6 (FreeBSD)
    Comment: For info see http://www.gnupg.org

    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
    =D508
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.260. Dag-Erling C. Smørgrav `<des@FreeBSD.org>`

    pub   1024D/64EBE220 2006-11-11 [expires: 2011-05-31]
          Key fingerprint = 3A1C 8E68 952C 3305 6984  6486 30D4 3A6E 64EB E220
    uid                  Dag-Erling Sm淡rgrav <des@des.no>
    uid                  Dag-Erling Sm淡rgrav <des@freebsd.org>
    uid                  [jpeg image of size 3315]
    sub   2048g/920C3313 2006-11-11 [expires: 2011-05-31]

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    [encoded data, 13325 characters]
    DA==
    =ZSFd
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.261. Maxim Sobolev `<sobomax@FreeBSD.org>`

    pub  1024D/888205AF 2001-11-21 Maxim Sobolev <sobomax@FreeBSD.org>
         Key fingerprint = 85C9 DCB0 6828 087C C977  3034 A0DB B9B7 8882 05AF
    uid                            Maxim Sobolev <sobomax@mail.ru>
    uid                            Maxim Sobolev <sobomax@altavista.net>
    uid                            Maxim Sobolev <vegacap@i.com.ua>

    pub  1024D/468EE6D8 2003-03-21 Maxim Sobolev <sobomax@portaone.com>
         Key fingerprint = 711B D315 3360 A58F 9A0E  89DB 6D40 2558 468E E6D8
    uid                            Maxim Sobolev <sobomax@FreeBSD.org>
    uid                            Maxim Sobolev <sobomax@mail.ru>
    uid                            Maxim Sobolev <vegacap@i.com.ua>

    pub  1024D/6BEC980A 2004-02-13 Maxim Sobolev <sobomax@portaone.com>
         Key fingerprint = 09D5 47B4 8D23 626F B643  76EB DFEE 3794 6BEC 980A
    uid                            Maxim Sobolev <sobomax@FreeBSD.org>
    uid                            Maksym Sobolyev (It's how they call me in official documents. Pretty lame...) <sobomax@portaone.com>
    uid                            Maksym Sobolyev (It's how they call me in official documents. Pretty lame...) <sobomax@FreeBSD.org>
    sub  2048g/16D049AB 2004-02-13 [expires: 2005-02-12]

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    [encoded data, 7410 characters]
    KMzwh2yhNHGuxYtOAKCQWvphJCOXG2iv+epUwNTl9f24EA==
    =Z1Sd
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.262. Brian Somers `<brian@FreeBSD.org>`

    pub  1024R/666A7421 1997-04-30 Brian Somers <brian@freebsd-services.com>
         Key fingerprint = 2D 91 BD C2 94 2C 46 8F  8F 09 C4 FC AD 12 3B 21
    uid                            Brian Somers <brian@awfulhak.org>
    uid                            Brian Somers <brian@FreeBSD.org>
    uid                            Brian Somers <brian@OpenBSD.org>
    uid                            Brian Somers <brian@uk.FreeBSD.org>
    uid                            Brian Somers <brian@uk.OpenBSD.org>

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.0.6 (FreeBSD)
    Comment: For info see http://www.gnupg.org

    [encoded data, 6760 characters]
    3mPjEgv3yQyXxmScDQ==
    =g4uu
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.263. Stacey Son `<sson@FreeBSD.org>`

    pub   1024D/CE8319F3 2008-07-08
          Key fingerprint = 64C7 8D92 C1DF B940 1171  5ED3 186A 758A CE83 19F3
    uid                  Stacey Son <sson@FreeBSD.org>
    uid                  Stacey Son <stacey@son.org>
    uid                  Stacey Son <sson@byu.net>
    uid                  Stacey Son <sson@secure.net>
    uid                  Stacey Son <sson@dev-random.com>
    sub   2048g/0F724E52 2008-07-08

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    =uagC
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.264. Nicolas Souchu `<nsouch@FreeBSD.org>`

    pub  1024D/C744F18B 2002-02-13 Nicholas Souchu <nsouch@freebsd.org>
         Key fingerprint = 992A 144F AC0F 40BA 55AE  DE6D 752D 0A6C C744 F18B
    sub  1024g/90BD3231 2002-02-13

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.0.6 (FreeBSD)
    Comment: Pour information voir http://www.gnupg.org

    mQGiBDxq4ZARBACJSN3t0e7d8A7LNfvsKsNNfMWbANu/f3vEhDEj4D4X2QLKyk8t
    Ti5/wO2Z7HJiT5QfI3zeRWetvHMWXhAYc24GrTUMdCt2zhUjufi5BdysmcbLiZFt
    9wjJpJITW4A6W7YP55ORkZs6ye/j4Luf7YN4xISWvM9/kzpUtU8R6txC3wCgq28H
    0tdFPUDvyAwr+97vHs97z/UEAIFPSIAsrH00DuudiLpqZB0LE+BcDsSKgxBQsZJT
    06EQQaE9XMN4f46nAtxzFhSbGZL4qIBUO3Ny1Pp0rqjCfumuwONLXZSK829LaaJn
    WfZ5ux9ZjvfYJ86NgUV2tFnwZm2UYQXc4234FfzfebeiSmYI27BMvLJ28xXU+pNw
    vUvhA/9uPu+i3Dk+ha+0UaBTp/HNTAveoTKH6lNOS12XhCNNPQUL0gonJTeWThRO
    z4YttxgLa5I/MoNsub0+GtNrlyhLyHKzjBBHEqJHJp7+zkyfCODnJaxUqoKskUSD
    QF5VX6v6vEQl5UBjGwonHmzsrnuqTb9pyYhfPTch9n22eS6ZqrQkTmljaG9sYXMg
    U291Y2h1IDxuc291Y2hAZnJlZWJzZC5vcmc+iFcEExECABcFAjxq4ZAFCwcKAwQD
    FQMCAxYCAQIXgAAKCRB1LQpsx0Txi0J7AJ9q3/ulyXnWjGWlR0L+3QtfPKI5EgCf
    WTLlr+SXYF+nrW4VvQcJvuyzZyG5AQ0EPGrhlBAEAKQjsjIRO+kHT+9qCYsw6HPi
    BYzH++xP0i5143trUJ66FoEfqOl4UqHwNJ7GEXq9MWgzBH9wDL69Bb4kSKQ9vKwD
    EgAnXObS3FOUPLK5AMXc5jy8rRaUru58+cGs1cNIg69zgQ3FQyWF0FHI7kGsAdz9
    8iUZhXL22I7+EVBgd9DLAAMGA/9oK+Xjo7xdLZvkW8b4nNIA7Xyml2uMLYjg/OVg
    qRkVU5f7KM2oHna7+VtvdJrIl9bTVc6mrTl6GY1/0GYb1edgSu2Axg+msj3fVkGd
    8hWuNQ/T5v45kgPcoJxWLzaWWkDeLQAf5tq/QVmN8hofl6UsrsNDvYTBbl7129uo
    3BJbG4hGBBgRAgAGBQI8auGUAAoJEHUtCmzHRPGLta8An39UVQwz3OgsZQ5e8upC
    VEBCvTUmAJ9/8mbmXF+Ii/JdY6STmU1MMfmQvQ==
    =A6my
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.265. Suleiman Souhlal `<ssouhlal@FreeBSD.org>`

    pub  1024D/2EA50469 2004-07-24 Suleiman Souhlal <ssouhlal@FreeBSD.org>
         Key fingerprint = DACF 89DB 54C7 DA1D 37AF  9A94 EB55 E272 2EA5 0469
    sub  2048g/0CDCC535 2004-07-24

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEECPOARBACeiKSpedo952tApwSI+rrDIrp5LOC5FG1crAiTpAqy6aP+n60z
    c2euoVDGjH/ncUZ+TxUK/MkzSOFXTjU0TETFgq2UMxSzZCLwPrmQibfHbmnF08+g
    0EjlslsszccPgTEZz6F85aZGYWjU4dhQ1VYP+y5Im88CgahggCB6J+8hHwCggMu3
    f51egcdCrodzFvL8poUYKi8D/i644gOjVN/YamHS5QUGNPJ9xkcq5G4OfK+Ubjq8
    6T1dd7UkJ22sePpKGtRhPNATeEar/HwzLB7r2h+UAD4Yrl6+//EwWB73BgxyCqcB
    X57s57K3+UMblbLR3NWJAD/HpxIBFxXfj55VPk6aH6GX5LzayMxfZVYccMyWOcsK
    UZaNA/0aJkearTpmitBL49fOhz8Je/QIF6riigkdOuyx62yAtYRNrVbDrQvvornR
    Z1CLUp+mixUc3bT+emLFpz2ZXmGqCr9BMAqENh0gayGeekyk8IYLQudFSidL3yHo
    WErc76neXoBE/5M/v7jZCrQS9loS0vITFsui0Rv95BcsNbV0iLQnU3VsZWltYW4g
    U291aGxhbCA8c3NvdWhsYWxARnJlZUJTRC5vcmc+iF4EExECAB4FAkECPOACGwMG
    CwkIBwMCAxUCAwMWAgECHgECF4AACgkQ61Xici6lBGkj0QCbBe+RP2fX0+t1fiU/
    oOcORVeRc3UAn3Y7M2TfTKmSh+5RXsaxcVKWDqZauQINBEECPPgQCACOxltxnJKq
    MHIW1P1u4pjby/v0ZsVWbhqmPzW1L/o0SHbBdPkLn+NZmOKG3sXFkitq1nnXQMq0
    pdWwEK55rN3+iYMpq2OJgubsEDJbo39Lom49w3xXs3ElHKWmgjNUMmiGi3yA3Q5P
    p9E13ze+ZBTTZrlj9xtTsXYPCkoihcjA8iD1G52CJYuVQOCxeKo3d8EZi4sFXhTs
    yGfK7ipLN2jO4H8LSrImMlT5z/ePmhTgo59A+vsIShklJpRlHqYB861sMobUlbCd
    0n7Fng8pD9jIG63usHJgU32AVEeZ9BMaZ5Gjsm7KvIwJH+w8DGnR7016hleSXSEk
    wVbS7zjXKfAPAAQNB/9GQcWpnuKYlVa7olq9XOVHe2pHrnK20wLy14ormB245Aip
    gTCN/SEIgwc09nF2QXXXhzZrxsFCPphgJh7CT8g25LCJ2rchOhCpShNS43I1ol3d
    II4nK0DtXUJc/3qG5PgPaNLHHyskwIIyfL2rKRlufTgByzF3AKXHweJQ9suxGkGS
    i2+l1NBwLwsjee59gEyKXT/cbfkV/IgA+NBpj7QaDs0yhsbPSDAJszbo53aBAB9U
    sZjWP9tkrzaP1eoSbl+LFttLtrivG/v8HZuPlI4lELeRboslI1aUUfZVt7xx4A6P
    u3L1DWOYm9rQ0q1KMlhGQKa/JBtaKy73wwzZujSWiEkEGBECAAkFAkECPPgCGwwA
    CgkQ61Xici6lBGnrNQCbBljRUNo/9EHyCk0D07YM27DYC+8Anj9wU0uuZE798XZ6
    n4y0m1iMcuSh
    =Fl75
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.266. Ulrich Spörlein `<uqs@FreeBSD.org>`

    pub   2048R/4AAF82CE 2010-01-27 [expires: 2015-01-26]
          Key fingerprint = 08DF A6A0 B1EB 98A5 EDDA  9005 A3A6 9864 4AAF 82CE
    uid                  Ulrich Sp旦rlein <uqs@spoerlein.net>
    uid                  Ulrich Spoerlein <uspoerlein@gmail.com>
    uid                  Ulrich Sp旦rlein (The FreeBSD Project) <uqs@FreeBSD.org>
    uid                  Ulrich Sp旦rlein <ulrich.spoerlein@web.de>
    sub   2048R/162E8BD2 2010-01-27 [expires: 2015-01-26]

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQENBEtgnPMBCAC3bCUDqq+6pLElEuqGoN33TBfDGjX3CPciCBGBY33u0ThbKFHO
    8VYStfwkwofutees9itDAjbQbJ7vIiQSe/1gt9WLfVUhgo6j57i5lbuVi/P3RMMA
    QjJBSZM/0r67XBqUXdye0xnPuJDKs5LmfY+23AWiWroRieeEBhbkJBQOyvY/fEdE
    dQ4A26/aLR+PDIxB8vrmsTRgwLYmxpnXqPkbmQ1tjS3MtsPgUMAaEQQOyoZJ7A9k
    loivX3S44GGTmehrKaCOivMtK21zR66Sslfr2zCCvzHXp8votrRorTBOGSTMC9ed
    Gp4ZlCAWa243NOVgCYWLsUAT7sutuI97VZunABEBAAG0J1VscmljaCBTcG9lcmxl
    aW4gPHVzcG9lcmxlaW5AZ21haWwuY29tPokBPwQTAQIAKQUCS2CfxQIbAwUJCWYB
    gAcLCQgHAwIBBhUIAgkKCwQWAgMBAh4BAheAAAoJEKOmmGRKr4LOtLIH/0G99k70
    FWtU8wLnHAw4d5dkV+MpSJOiNK3xfqoEgzcBSnK8h4kkEibwzsUggtIvIQ/xkLzF
    oihFGhL/14+yM9aiyp3cVjPT7TqCN7j0kfKxwDOf7otAAwI+hYUrVG1XVM7qe7Gq
    sIS6ucEAnhjK5s/vxI2wJM8xcEQvx2ubPPtuSYAn3k/+JryIfSJaAiSmxuAfYEsf
    TBKmACwQ0CfthLkOSnBp3xNbmXnOJ7mVA/wZwTZjD2Vm4Iu9SGBNF+gsx7Jhs0/X
    ow6JpY4YsoZehFHzeLg3RINUdq5qmB0eqg0VbYV3YcH0a31nOUTGqrztfJs/V4Ap
    M8pJ3WbDrPugqDaISgQQEQIACgUCS2CgGwMFAngACgkQ524iJyD+6d3PZgCfZ+Ow
    SV3Z2p3IE3rQgIf+f67SZxEAn08H7gIDjHWv6P9Mt0JveEgBqqaftCRVbHJpY2gg
    U3DDtnJsZWluIDx1cXNAc3BvZXJsZWluLm5ldD6JAUEEEwECACsCGwMFCQlmAYAG
    CwkIBwMCBhUIAgkKCwQWAgMBAh4BAheABQJLYKDuAhkBAAoJEKOmmGRKr4LODJYH
    /j7RKNrmeszuP7hQ0sQpnn+8xmbp6bmNyXK+h3L78y1mVagMWlrJRbPe8QVLR9xq
    AmI7jIR4oVkcLhm/jnYnlqIAIyNLgrOQ6dIFMbwzd26AYS/Ozy7Grl+THXZJMcZ1
    YTNNcPpmUsC7U76viLLw2CKTMzP3LHribNCoNmfhvplGdZibwW3so+ZjEzrhmjtP
    efLnYmD2AlsJADMhmOy7vgEUSdz7UnIiVgInpf11yQQWarAwAoiKxDSR1D3MaQcW
    JmyG8mhRqyJmFtbmARZaH/eGm+QyZKYuFY//NY9/ugt8xBhhUTeWN80dwZnx2rw2
    6kLsWh3iy36yWNRF1sY7x4WISgQQEQIACgUCS2Ce8wMFAngACgkQ524iJyD+6d35
    ogCghywJlVYXlcjHCqUJkZ4mc8/sW9cAnjUU3AThywjlZFNaB4ngPYGIXHZxtDhV
    bHJpY2ggU3DDtnJsZWluIChUaGUgRnJlZUJTRCBQcm9qZWN0KSA8dXFzQEZyZWVC
    U0Qub3JnPokBPwQTAQIAKQUCS2CfRwIbAwUJCWYBgAcLCQgHAwIBBhUIAgkKCwQW
    AgMBAh4BAheAAAoJEKOmmGRKr4LOELkH+gOD9ML6IDd4Hdu5I7JcmquHejOJoEQ9
    rJRmbExegiCLtTtxI98f2GF9fMgYbKEZ2DRv9dT4tRYhJgm2ko6kf+BsLv1ilP9j
    MRJmzFe5RtVt+ot03+8bgN2TAQ6J0DknMT4sbpKWfMKgw8DQCDgK6aUxAHE/PO2f
    49Wdb6ZxXIwYQKBUsPhAB/a4Jn7C3cjG/CqtkcsWm/INNdrr8wmqFQlQByYkE8bN
    U/LS8UEIf64o59sQW8qmZfMwy7MWsL5VDvJwG/llAAYK5V+Uu+kLDwn3Vuxp5144
    rR7HgAgt+lX3IuMjvM72bc0ooljxqfGRwyfXkVqS0u7YKMIylibWlwmISgQQEQIA
    CgUCS2CfegMFAngACgkQ524iJyD+6d2hcQCfXmKCFRSNF7KxaIqfFbAZUFhHR6MA
    n0G6al32pXWhiV2i3sHyjDq3YCrCtCpVbHJpY2ggU3DDtnJsZWluIDx1bHJpY2gu
    c3BvZXJsZWluQHdlYi5kZT6JAT8EEwECACkFAktgn6MCGwMFCQlmAYAHCwkIBwMC
    AQYVCAIJCgsEFgIDAQIeAQIXgAAKCRCjpphkSq+CzppbB/9X2o72Knam5vdu9nAK
    vmkXmOmKMtp9gJ6MDXLCG/a8DME5weE37i3lmHkm/lKThNRteLajeWz1OWTEODSD
    4lq9BOpr0fDVtSEGsrgQOIj6m/RGpKhmKmyZcsGhTC9OXpcrUk5QnFFb47+25PhC
    I6cfzADL06WGPDkTEFsB2f7ugJw00iC2Kcr35YG5TvvSR/tGRCo6HZ7ooTbLAVmu
    wMrAxwIsPv/ycFBZ5e4DQiIaxsVDPS5sQDHmoIhhRgOovoIinXXCpEl0JvnkegLG
    P9ZWHsmUEIlzU20iMBDmwDmxbsMhtiIFpSNNwA1c3wE786mTQ31vcvscR5p6JJCe
    v9yHiEoEEBECAAoFAktgn/4DBQJ4AAoJEOduIicg/undB58AniViZmymFbmu6LcB
    IQdX7tOfkKQKAKC1L+dB4cKQwTLHMv+PTm3ZZQUCiLkBDQRLYJzzAQgAs/C4imB/
    b+pPBbSm85RC5tgzng8RgF9S1WXVUJupa7QEetNn58yodQr+j+ACoNeX3EKHd58m
    Ja2HyU/cKo0UwNOJA6iKwfrWXOGj7DigxdZdZ9QE/IyzsyrQPIbAVxZn1v3zmpTn
    ngueh9dUda0KKzeq8n5J6OjpS+G6wrMe1tnicM1vh18wIS1JNU/EgQ3hQ5y6Docs
    4xjiYmmO+UlmW/SiiFhwR0b5pwEaQwSLLX4OjEdpxb4E2gxh4+V0Bk1BzpS6GygU
    Qvk1Ct/elQZX3Cyo88OlLSG/UiYGI04JDuyA8wwbriQezVMn0PbVXdo6tR7pqpCD
    QAtI+LFEM9VjbwARAQABiQElBBgBAgAPBQJLYJzzAhsMBQkJZgGAAAoJEKOmmGRK
    r4LOtMEIAIrN0mDZgdvcsV6RmSfoWWawDOklTOh96B20iKYKWxBSOrGNwAAkJRfL
    4E+y/fu3DMoNUKJAAUZvjTOAl2YXv6U5LNK6IDQ5vGtERKS4VukBeDdgK9bLj95P
    cOQ2khuq4RVRL+4H4sdZyxLDD7Dad77rsuavECIK72Dlb9KX+/HJuHERxpqPNAjs
    FlQv2pfbfbr+SoOTjknLCIjct+lDV//y72WwlJeEYWQhKjVJupxPBGOyQEDCofML
    FvzDnuVl4Ft3qP/dLNwObtfghIz604M0aCpYwtItHA35zHRI/R7u24VtluA4D+Bc
    vKKK08LFvCJ5WIK8LKm1Ad/oQh3yuwI=
    =h+sB
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.267. Rink Springer `<rink@FreeBSD.org>`

    pub   1024D/ECEDBFFF 2003-09-19
          Key fingerprint = A8BE 9C82 9B81 4289 A905  418D 6F73 BAD2 ECED BFFF
    uid                  Rink Springer <rink@il.fontys.nl>
    uid                  Rink Springer (FreeBSD Project) <rink@FreeBSD.org>
    uid                  Rink Springer <rink@stack.nl>
    sub   2048g/3BC3E67E 2003-09-19

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    hpneRV17ciF5APqU2SSiDrugQg==
    =Gfya
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.268. Vsevolod Stakhov `<vsevolod@FreeBSD.org>`

    pub   1024D/213D0033 2005-03-14 [expires: 2008-03-13]
          Key fingerprint = B852 0010 761E 944A C76D  D447 A25D C12C 213D 0033
    uid                  Vsevolod Stakhov <vsevolod@FreeBSD.org>
    uid                  Vsevolod Stakhov <cebka@jet.msk.su>
    uid                  Vsevolod Stakhov <vsevolod@highsecure.ru>
    sub   2048g/786F2187 2005-03-14 [expires: 2008-03-13]

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    6wzJCGiOCfCGViOv+39ADh4=
    =gaWL
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.269. Randall R. Stewart `<rrs@FreeBSD.org>`

    pub   1024D/0373B8B2 2006-09-01
          Key fingerprint = 74A6 810E 6DEA D69B 6496  5FA9 8AEF 4166 0373 B8B2
    uid                  Randall R Stewart <randall@lakerest.net>
    uid                  Randall R Stewart <rrs@cisco.com>
    uid                  Randall R Stewart <rrs@FreeBSD.org>
    sub   2048g/88027C0B 2006-09-01

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    =jM4N
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.270. Volker Stolz `<vs@FreeBSD.org>`

    pub  1024R/3FD1B6B5 1998-06-16 Volker Stolz <vs@freebsd.org>
         Key fingerprint = 69 6F BD A0 2E FE 19 66  CF B9 68 6E 41 7D F9 B9
    uid                            Volker Stolz <stolz@i2.informatik.rwth-aachen.de> (LSK)
    uid                            Volker Stolz <vs@foldr.org>

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    [encoded data, 12285 characters]
    G7oQ/NdFiVk5IOo=
    =r3Jh
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.271. Ryan Stone `<rstone@FreeBSD.org>`

    pub   1024D/3141B73A 2010-04-13
          Key fingerprint = 4A6D DC04 DDC5 0822 2687  A086 FD3F 16CB 3141 B73A
    uid                  Ryan Stone (FreeBSD) <rstone@freebsd.org>
    sub   2048g/A8500B5F 2010-04-13

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEvD5ncRBADjSSeOophd6EZMLRUyyqvBTYhHJiCmYqDfog+PG84/Fsb7sXXe
    3W8uZ/Wob/wF8vZey+7V9aK8eoJP9aK52SIMFUR8hdbXTrwhHlTc1QrFWLXjVqJ7
    Ct+ORGcqsUO9P/KwG6Waf8UG1Dnb4IZ2bQCoy+hEXpwiE8KLhR5X3vdq3wCgjARv
    ef8JXQvjUiiGUmPTtwumbmMD/0QmTbZOhdjC1TbIEOoj5BRZKWUv6rj2bXJL+miw
    DCTdpwwn5VfmZiYHeTcCclyPH+GfkNAhrYf4XQ0qUBtB054A+0ZuK/oEbHpqw8ky
    0qj2GGCt0m1LybiX0g9MhEZU9/Coq69TGoAFcysGisrEq4gJm29oc1gcXKXdXAem
    pP9NA/wLMp4p5BTd7Q+9fVJo2X7JTAtCL3djhvFpgbSeExhKCHflH+g0gw7qiMKv
    po1ozRY0r0fwr/gv/LcIh/XBImeyodj9Hnx3xd1jhToGoVP4Olm54PxNKLtcRize
    7CfrQr8TPG6MCY10EGVczIz6Qel7izPdqacXeeB8u8RYnoh4d7QpUnlhbiBTdG9u
    ZSAoRnJlZUJTRCkgPHJzdG9uZUBmcmVlYnNkLm9yZz6IYAQTEQIAIAUCS8PmdwIb
    AwYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJEP0/FssxQbc6NYEAn3Mm+6fmwl8H
    JuLh1vhMkmO+liK4AJ9m5Btl2vy1eKMfijZ2a/zIbGcydrkCDQRLw+Z3EAgA9LNT
    KPMCyYCuRn0OjAMiCcHiaj20sbY5kO8o6GSOT3Gk8cXxNQgglcvfYxuGxKjG3uIs
    9+1Sa1uGkyVwTCt9DUo9EGvtLxZx/AUU88M3aVF8kt3WiIjTEow2EiS1D7gmancP
    PI2snFh3qqbkN3oWcD3rg9uEwxa9i7ptb/45KnCFJ1bB4jDkuNRqeEOGg7uPV8sZ
    /s8EYFqTl5mW8hTvUY/XgKZl8TvFHxDDXQlA83OWa7RW1JI6G6zuJPHA7q1zwKFF
    DZTabKaXB/gQHYj+j5fx8FgzIa3J7s6MUnZLq4e3xf/3yWOgfsRAxgMjL4WUe/GF
    6vOvE3oxTbUMrQ8FQwADBQf/awmIQZWNMi1aVo2Jls5GpvcV0QZTo5HCcItzoEax
    rY8HMaaApvbiGFckN75O08GuKPEtoet232CEBet2D0NS+VKqp3yBcRwKELTttOFl
    fi0ZUWH/Mk5NEJUSR+lUzptNGRmtu4ftPW/apjrtzRTR6k7KxVPZ0q171qQfF90n
    zFeWklDK1lw1PGWk5X0p4qHCCMs+6l+TEgYjCXZdaDJ/e29bNmXdz3ZBiWbu/Kjw
    jk4s6/17TVXl/KhDAyvfZ3IN3d9BN6h+R1gqE/cp7tGvgDTVZ4+nPm8NVaOr5sOl
    4L9EagqjMAqQzcbhtWHG8PE76P7wnbU2I5pHbexqLlTpGIhJBBgRAgAJBQJLw+Z3
    AhsMAAoJEP0/FssxQbc6JK4AnjiZo91wrPy2ZqMytQaPL3SJcmv8AJ9Q9jvmFruu
    qi/JXA9b5UcmNn7xoA==
    =J2di
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.272. Søren Straarup `<xride@FreeBSD.org>`

    pub   1024D/E683AD40 2006-09-28
          Key fingerprint = 8A0E 7E57 144B BC25 24A9  EC1A 0DBC 3408 E683 AD40
    uid                  Soeren Straarup <xride@xride.dk>
    uid                  Soeren Straarup <xride@FreeBSD.org>
    uid                  Soeren Straarup <xride@x12.dk>
    sub   2048g/2B18B3B8 2006-09-28

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEUcBVMRBACN3a/+siykVNlKvwCmd4HVMogG+Oljeu9wyLsI8dJ9Y81bkY0h
    fi7ve3Tfu4GeRcirnrc2FV9Fcsv4dt9DtYQ7PQTPH8kjrSXr3kQoiHE4fGGJl4IK
    IVIHj+iC26JJgbqFcSU7CKGdvZIOJ17IPPh/HhunKBv9ljNJ5MM+WL8kJwCg20Ez
    J3CRnHM90EFk/nfAlJRvXk0D/3rqR1ODyY/8fFDtpOIjkApkw7k2eoJsfqy7tbtX
    YwdMKQptAvz2NxW4Qjfo3NbgGbfN6eAlhoy9Srcfm886KPMA22ZAvCWopFNbqAGX
    e2iOEwbU4JflSq5vLsIhOVz133W6mK1c7VJ0cf2zl+iRWtISES4fOY5s9rEacIjA
    NcAHA/0ak6bks8LqzC64zFdI6bj2FfJbOoTrga1/FQEBSw8bET14S20G/713ZCD+
    tQXXrs8I9YjBQREsKYmy0ixFYFmxMvG0NxkIyrwD/GEqpBbNdkJlx7pUhqv3zyRY
    rzvcmca7jIguu6K9nYi3t45nmCVo4ku9EE34YHzvgFQ15+1LdbQjU29lcmVuIFN0
    cmFhcnVwIDx4cmlkZUBGcmVlQlNELm9yZz6IYAQTEQIAIAUCRRwGPAIbAwYLCQgH
    AwIEFQIIAwQWAgMBAh4BAheAAAoJEA28NAjmg61AFysAmgIisxdd6032Jk2xeI17
    gcHuzXvuAKC5z1x4XxCwELWC9mk9HUlVTWcMW7QeU29lcmVuIFN0cmFhcnVwIDx4
    cmlkZUB4MTIuZGs+iGAEExECACAFAkUcBVMCGwMGCwkIBwMCBBUCCAMEFgIDAQIe
    AQIXgAAKCRANvDQI5oOtQAvaAJwIhTZcNVO1HKFwW5+hfnpE55hAMwCgtgTvelBA
    dhl0HgdkEN+HWtZzEnC0IFNvZXJlbiBTdHJhYXJ1cCA8eHJpZGVAeHJpZGUuZGs+
    iGAEExECACAFAkUcBtACGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAKCRANvDQI
    5oOtQBgzAJ0e+6mp3n17yH4hAzcE2toJ/CPBPgCgrDC3mRdXEOD8Gegm80agUykc
    Fq65Ag0ERRwFhBAIAPf3jtvf8pJMZoO7SQ3/Et3jla1POUcJuk9T70om/Fqi9Y1b
    mxTXR7yu5Rue/ZSN20laoywnJQAJ3BENx7mZHZwCzZDfEU9QU6WipPykt7KbhBG7
    DjXBONGY34wl4RearvGn61FuL77/pkSA1XQ4+5U/hWIisTWnHRufxoykhlyo7QTN
    x/S1bEXA6eTtfT7acA8sZfMRiqb8opOtJPiSMO7vBEYHfkleUGhSJwI7R7ghux2z
    y92Sp1sFO7xb7ZVlKVPo+edqbu5mKRLvhykLiA7keNv/YGkfVjPgLthAo14JIL3b
    95dOkGV/iI+DlYWPa/sDOM2KL0S/wJ7dXMtMVO8AAwUIANqJ9nqvDnWMoiJ2/Zuc
    H9y7CMmSZEdzQwKqaJysyDqiV6LAK9TXsxzzl1UXximPMCb2qwtVGOaRKAPR8qjD
    9GQc0Lb/BCFQ213o0eb+pvq7fFmUxrt7kMUvbwRGhiRbHyo1qf/z+VA2bntosYmW
    9YSpa9eoE3iXr3cF6wQVw/nUF7jm6QQ4M3ak1MiaoICxxCy1x2WzW9mrUePPWz25
    x0Pj0+R3mnWMTewLC6kk3QFM3usdxudGXJqDVch3w47BHV59WgSnzYPshGFp0VlU
    xeJNWJYu0DM/8WeOvRdf/5VdxwJGDtxRyQSDX6niYHWg6tL2Bx1cCxJnnzLLnXDp
    PziISQQYEQIACQUCRRwFhAIbDAAKCRANvDQI5oOtQObqAJ4gRDoYRjl6DWCd2DgO
    ECDwvMM5wACgiAYFjP/BOSY6RZdSBTxOSdyeVdk=
    =Dgd4
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.273. Marius Strobl `<marius@FreeBSD.org>`

    pub   1024D/E0AC6F8D 2004-04-16
          Key fingerprint = 3A6C 4FB1 8BB9 4F2E BDDC  4AB6 D035 799C E0AC 6F8D
    uid                  Marius Strobl <marius@FreeBSD.org>
    uid                  Marius Strobl <marius@alchemy.franken.de>
    sub   1024g/08BBD875 2004-04-16

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEB/3xIRBADGjxOPVRN2LvXTd6jXqKf4/6pPVPQlKqtwpOZj9JgDVE+V0Elf
    kjvwfCXA0gqt7kkal8i2TU9v2g6IIKP1eUoNpBy/s15Wc8JMlESB6CkfFPNkqj5o
    ohRSoKuB8dud0KR3T531rPfQNmsVRWtxrPYigkrtYZHiTPSZFgL0e+RiBwCg+i3+
    p9+1JBby6tthOolOGdr54xUEAIYounibXk8p54DJeunp0rMbzKYvbXYTOyc4HbD0
    t9kOH+VI3BJ+DlEuCejgwRkxkisjhQbSTa4+EGROKYcVIBBTtsj8JGHiNyRVSQ0D
    +A1KDuZQh7iDwuyatT0xvcvFw52In0dj3RK5hDV2ZX1ec1WiEMKdf8It+WdTSQPT
    UUF+BAC1WEPU92FZefdEDIQQHu17xsCestDOyd6xUBpxyPV2dyUwm8k7OhRalNuk
    nAIXfbZcVVZ/+RWDdfiftoSxQmODQg0JtzhtGEQO2q/FozsCy4Bx8XPk6CQmPMJk
    x/o8MwR50qDlsmcMRR2NDF+I1QOyRpEmugZ6sO+WXm8bkj1J6rQpTWFyaXVzIFN0
    cm9ibCA8bWFyaXVzQGFsY2hlbXkuZnJhbmtlbi5kZT6IXgQTEQIAHgUCQH/fEgIb
    AwYLCQgHAwIDFQIDAxYCAQIeAQIXgAAKCRDQNXmc4KxvjaHxAJ9+D0jNIIFzozzz
    6n/bx6N+yV2rwgCfZRtKVbN4QNEBod9tfer2TgmRlqGIawQQEQIAKwUCR3O7DgWD
    AeKFAB4aaHR0cDovL3d3dy5jYWNlcnQub3JnL2Nwcy5waHAACgkQ0rsNAWXQ/VgC
    ywCgjtPLCzZAAgOuFiLwNw4vF6ZXJBQAnRPxbc9SwccyaGrkk8kiCX1nxVmFiJwE
    EAECAAYFAkd2QQ0ACgkQ722CQfCBGV1D4QQAgo9MiuMFTfyjZn/qfQmSenruVgSW
    GpKiz6DTPhmT767GqaVqaaChoWqPY6/PGPTbk71NleF1v2HU1Orzoj3KqgzE6vVM
    MMfmMXJ7y/A9hg+xImKuThiwMzfJJQ+nrvCc1beJIiMxhJJLHxmBJZve/mbMUs3V
    HC4tGEcdrGecFY2IRgQQEQIABgUCR4ekWwAKCRD09yJxgsm6KU0pAKCIgvYV8BNI
    ES5/8AK02J2lApE5kwCgxetWv8ToTTbUhW2AhaIEHlg8KQi0Ik1hcml1cyBTdHJv
    YmwgPG1hcml1c0BGcmVlQlNELm9yZz6IYAQTEQIAIAUCR3QWxQIbAwYLCQgHAwIE
    FQIIAwQWAgMBAh4BAheAAAoJENA1eZzgrG+NU0AAn1xgOlGk3+FpLagxQh6/O94Y
    8iz1AKDvu7Im3yfxj4LRh5UVKnNYMIJTtIicBBABAgAGBQJHdkEIAAoJEO9tgkHw
    gRld4JcD/j52TeNiPNJ4hDyd0QJUItk8RXcvBtrg2dSl0TGmNs2f1+3fjZ6vdrE+
    5Ry0qh38ywsxs7sEFURPavre4i7EbdOWv6NawUfaIsgXp8Os91bQr+UrXe2esAEC
    SICQS9hHI3qEl8hPqay7rPl/lXM3ivofmrRXXfBRCtxUqy8+CFoeiEYEEBECAAYF
    AkeHpFsACgkQ9PcicYLJuikeVQCdG97q3ZUAYRy7za8JihUzddma5wIAnRS7veJj
    ENbiKHg6MJc2BMFGZ9H4uQENBEB/3xUQBADFOTE426iijaR8FaZLMIRaSexGfOvc
    nPJFF+rkoktpQzP+9BKDwKvt1HmlDXaiaeJfwEfQdK7/oORh9+ynL9ag/KaocJtT
    8eAqhVnoC240NF+PhMlX7YblUwa9+M5MfNmDkNEV92ZFIJ8QjRAzn/G3rQIMo6ax
    BmsF+1P71QEIgwADBgP+Kbmf5TjcU45Wuc3ceZCAEm9o7VMhsU/tVu69x6QRu379
    HqJ9RDuAOdcBWQ/67Jw7blSbe3yWZpqhxLTWwYELJG7/XSNnIsFl3osF34lm0Y9M
    lJl+XBQ3UV2kPgtIMDTXDuklzuhdhbIlhWOXJJf48WkSxeB2WGnnlVvBCjBTx3+I
    SQQYEQIACQUCQH/fFQIbDAAKCRDQNXmc4KxvjWiAAKC5xnCwJYOHHwqreNa98Dah
    W9e6+QCgjchyumMlSJfpEEnGG8vU08TmXrs=
    =QOvV
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.274. Cheng-Lung Sung `<clsung@FreeBSD.org>`

    pub  1024D/956E8BC1 2003-09-12 Cheng-Lung Sung <clsung@FreeBSD.org>
         Key fingerprint = E0BC 57F9 F44B 46C6 DB53  8462 F807 89F3 956E 8BC1
    uid                            Cheng-Lung Sung (Software Engineer) <clsung@dragon2.net>
    uid                            Cheng-Lung Sung (Alumnus of CSIE, NCTU, Taiwan) <clsung@sungsung.csie.nctu.edu.tw>
    uid                            Cheng-Lung Sung (AlanSung) <clsung@tiger2.net>
    uid                            Cheng-Lung Sung (FreeBSD@Taiwan) <clsung@freebsd.csie.nctu.edu.tw>
    uid                            Cheng-Lung Sung (Ph.D. Student of NTU.EECS) <d92921016@ntu.edu.tw>
    uid                            Cheng-Lung Sung (FreeBSD Freshman) <clsung@tw.freebsd.org>
    uid                            Cheng-Lung Sung (ports committer) <clsung@FreeBSD.org>
    sub  1024g/1FB800C2 2003-09-12

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBD9iAJ0RBACJHmAyofYftDx6hFkYRkCrM999YrKxfYGybHI+MoN2fFPXMvSh
    idYzBGhij1a8E7DGuZ2fGwSxdUZXcUA9PlDPuTmxs/xI/ZgX/qnG4yPgeT7KfZ5g
    UqRpm0/gz/7g5UsvNBw0iUzSbI7tTXprErflhUXX6cC1bPHTeEQbHe+nSwCglpMT
    cpcV93CQpMX+GC16UvwC8MUD/2TzigXSQ9rJNoTLuhsibSK9fh0vzq6rhCrzy2Ma
    G4M9kLvApu7+8YEk9ydVk9EE0PxHTTXGAxnpZzTW/bCCcLubhBqv8eXs2GOOxzHG
    YXb9Oyo+FDe0EAEZ5Swmf/V2eAHV4bYDmXzW9okxIUK6skXtFxQ70DxqcmtAxlxa
    QLgbA/9plT+d5g2s1c11Z0p5CQbxa8sJu4nLFT36DzhR2BmhTEM/X2wSARGe7PKu
    LdWI1WfU4Avoj9sWehSF531tMekMSZ4lp0gb0rYOyzGTqTWjq32mkqep8MDP9cT9
    6H1UaSU96yyc1sprUdU7XDf7TA4jZp2LSLlOEB2UCOa0mBL9QLQ4Q2hlbmctTHVu
    ZyBTdW5nIChTb2Z0d2FyZSBFbmdpbmVlcikgPGNsc3VuZ0BkcmFnb24yLm5ldD6I
    YQQTEQIAIQIbAwYLCQgHAwIDFQIDAxYCAQIeAQIXgAUCP4IzGQIZAQAKCRD4B4nz
    lW6Lwc3gAJ91P1UQoV68L7emHnjqlf3nK6qzmwCgiVtWyaqQJq4fayifeKfFmT2U
    0EyIRgQTEQIABgUCP2SPxwAKCRDm4NvoVAvGHGhiAJ90wTMq0zYb41tG8M+RoMyv
    oVsgtwCdGko61SUEB+884zRD2bHhwFMg+OiIXgQTEQIAHgUCP2IAnQIbAwYLCQgH
    AwIDFQIDAxYCAQIeAQIXgAAKCRD4B4nzlW6LweOrAKCRWdRCC8hQYwWCa4/upt6N
    hc+SRgCfVybP7alAFua8F010HJiSfXdNtFuIXgQTEQIAHgIbAwYLCQgHAwIDFQID
    AxYCAQIeAQIXgAUCQSQbpgAKCRD4B4nzlW6LwVB9AJ42/CQFoYKDRYz+XmCqBou9
    Y+Nm/QCfZv19FBbMSOfvRW6R7nJTSkf3Uj+IYQQTEQIAIQIbAwYLCQgHAwIDFQID
    AxYCAQIeAQIXgAUCP+GGogIZAQAKCRD4B4nzlW6LwUZ8AJ9q3BbkGIsEuhnp6rWX
    uSkcXYkWWACeNSCb9l9g/650wnXPEHcHsRpzBLK0UkNoZW5nLUx1bmcgU3VuZyAo
    QWx1bW51cyBvZiBDU0lFLCBOQ1RVLCBUYWl3YW4pIDxjbHN1bmdAc3VuZ3N1bmcu
    Y3NpZS5uY3R1LmVkdS50dz6IXgQTEQIAHgUCP2SMCwIbAwYLCQgHAwIDFQIDAxYC
    AQIeAQIXgAAKCRD4B4nzlW6Lwb3bAJ9mJttWnct/3ej1XlvmnAxRq6ZkOACfdZDT
    sLSo8DN73ZKDbiP73KqDPdmIRgQTEQIABgUCP2SPxQAKCRDm4NvoVAvGHONyAJ9t
    QrXQSZDkm71qAw+6HiERQ+qsEgCfWuA857Lrda9ZR8X7IJJ3XLO2HPi0LkNoZW5n
    LUx1bmcgU3VuZyAoQWxhblN1bmcpIDxjbHN1bmdAdGlnZXIyLm5ldD6IXgQTEQIA
    HgUCP4IyxQIbAwYLCQgHAwIDFQIDAxYCAQIeAQIXgAAKCRD4B4nzlW6LwecsAJ9F
    HNrKHPsCJ6ZesY1gJI5HOVijvwCfb5G6dT2YW8TH8GNRFe7rWPXO1E60QkNoZW5n
    LUx1bmcgU3VuZyAoRnJlZUJTREBUYWl3YW4pIDxjbHN1bmdAZnJlZWJzZC5jc2ll
    Lm5jdHUuZWR1LnR3PoheBBMRAgAeBQI/gjLeAhsDBgsJCAcDAgMVAgMDFgIBAh4B
    AheAAAoJEPgHifOVbovBz+wAoIJhcDpcOVIACy+wboHG4nGOQfiWAJ45qvE09ckd
    IX+MDl7xez7OMqDU/rRCQ2hlbmctTHVuZyBTdW5nIChQaC5ELiBTdHVkZW50IG9m
    IE5UVS5FRUNTKSA8ZDkyOTIxMDE2QG50dS5lZHUudHc+iF4EExECAB4FAkAoN7AC
    GwMGCwkIBwMCAxUCAwMWAgECHgECF4AACgkQ+AeJ85Vui8HhdACeNn9owhjpYr2y
    cYCkOFDv+q3xIF0AnAijfOOUq2oT0d0+B9sALIz0HHrEtDpDaGVuZy1MdW5nIFN1
    bmcgKEZyZWVCU0QgRnJlc2htYW4pIDxjbHN1bmdAdHcuZnJlZWJzZC5vcmc+iF4E
    ExECAB4FAkESZaACGwMGCwkIBwMCAxUCAwMWAgECHgECF4AACgkQ+AeJ85Vui8Em
    ywCdEDYOgC1/YxPHqyvEXGs+JTFFqfkAnjfkTpRPM492elqZkBlQimFGLeWutCRD
    aGVuZy1MdW5nIFN1bmcgPGNsc3VuZ0BGcmVlQlNELm9yZz6IXgQTEQIAHgUCQSQc
    2QIbAwYLCQgHAwIDFQIDAxYCAQIeAQIXgAAKCRD4B4nzlW6LwZ4TAJ9hByDD2ep6
    ixTnazmBJSg3epv9tQCeOM4JaWNwvbOrF528n8PQcgpe/3W0NkNoZW5nLUx1bmcg
    U3VuZyAocG9ydHMgY29tbWl0dGVyKSA8Y2xzdW5nQEZyZWVCU0Qub3JnPoheBBMR
    AgAeBQJBJBoPAhsDBgsJCAcDAgMVAgMDFgIBAh4BAheAAAoJEPgHifOVbovB564A
    mQGePiZdxv8qVwvtdyf6m9SvosGoAJwPuv0oR/D4PIDKFYtlTqfYN35I47kBDQQ/
    YgCgEAQAwHkhKy54M/yuuJgb4Gcit2+fDnlRZ8yRJkGe8OSl7qx9Gaz0+kwe1Gir
    V+DQFGC/W3gJqjEN12jh11ZUabE3Seeofec94rDZz/YBkf5ofMT1+tN1kwr+ju7C
    lQdZCwNewaS2p6C5PsXCUQQ8ZHfgs8YB7Ze/TY6GvpOoDKqYHO8AAwUD/1ZvVV9P
    e36FE4RkHg3P1YLkMNs5fxleXD1l6LZ8ElQy1V0RVg8sD2W22xh0wP2W9RplsDYj
    UwFKuRtxxoEsdXvDNLaUyG4hXmNUVBz3b3tmZSvENiuj5EchJWO85T+AFT0g7ap5
    wWlxOqmvHC5NZRiAP1fpKpwoSvYTLP418YSsiEkEGBECAAkFAj9iAKACGwwACgkQ
    +AeJ85Vui8E94gCdEqq8xPwuUc/LJQyc1ziacZJ/FmQAnA41/zThbZg2nf994Wre
    OT332jJ8
    =EtCd
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.275. Gregory Sutter `<gsutter@FreeBSD.org>`

    pub  1024D/845DFEDD 2000-10-10 Gregory S. Sutter <gsutter@zer0.org>
         Key fingerprint = D161 E4EA 4BFA 2427 F3F9  5B1F 2015 31D5 845D FEDD
    uid                            Gregory S. Sutter <gsutter@freebsd.org>
    uid                            Gregory S. Sutter <gsutter@daemonnews.org>
    uid                            Gregory S. Sutter <gsutter@pobox.com>
    sub  2048g/0A37BBCE 2000-10-10

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    [encoded data, 19370 characters]
    sTEQABKrEX0m
    =fxvp
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.276. Koichi Suzuki `<metal@FreeBSD.org>`

    pub  1024D/AE562682 2004-05-23 SUZUKI Koichi <metal@FreeBSD.org>
         Key fingerprint = 92B9 A202 B5AB 8CB6 89FC  6DD1 5737 C702 AE56 2682
    sub  4096g/730E604B 2004-05-23

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    =xwme
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.277. Ryusuke SUZUKI `<ryusuke@FreeBSD.org>`

    pub   1024D/63D29724 2009-12-18
          Key fingerprint = B108 7109 2E62 BECB 0F78  FE65 1B9A D1BE 63D2 9724
    uid                  Ryusuke SUZUKI <ryusuke@FreeBSD.org>
    uid                  Ryusuke SUZUKI <ryusuke@jp.FreeBSD.org>
    sub   1024g/5E4DD044 2009-12-18

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEsqyesRBACDA3KsPNZg2Q88N9Vhp0kpoLW2Yp0xWbJ01tD2PPcGCq4nGE0W
    NgEvynvUwVJ4ODryLEIL3Po79fBIpkOhjraWdFH4LMcXjOequoERDWCMLOSBzP4R
    PKPqhSvOGw0H54357fcjzo3X2ze9HnfiOI5d94qaUpnPeE8JioJQcTEW9wCg9wKy
    KijAwG/TQBIHrS/bp6F/4GED/iCdSQ09Q6ZQF497zS1oNTgXDmD/qaAzW8F0bu/D
    rp9v5GVWeN1vfXHAtvug7/kIOO/eFZqU7IZRIf9bSerWXtaSV34QZSS81UZOr4u9
    YUGG1qk/A2a06GFzPCzB80c57G1b2c7i9Ktbw5cQ5o01eLcbqkdLmc3OcjIjnmCy
    /wnfA/9tlfS50UU7RFfwj199z7R6vxZ8HNoW0DwyNT0G/Sumj96o7+GXqU6NGZ3c
    X4g0qQbF1NY5h3cXkR9y3w3TP+guQFWtJEqyXxykYHZWAmUfNbaG7xiWdP0iGa6N
    pAWzMjpeHFXKCLmD4WzRx82TPvxSaw8W7H3PQwi/QIj1yBFot7QnUnl1c3VrZSBT
    VVpVS0kgPHJ5dXN1a2VAanAuRnJlZUJTRC5vcmc+iGIEExECACIFAksqyesCGwMG
    CwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJEBua0b5j0pckoPcAoNDzMLDEsOm+
    GxbYMxiTpRNqR3/IAJ9TZ2g1dD8D99ipOUIADN8DyEZRBbQkUnl1c3VrZSBTVVpV
    S0kgPHJ5dXN1a2VARnJlZUJTRC5vcmc+iGIEExECACIFAksqzV4CGwMGCwkIBwMC
    BhUIAgkKCwQWAgMBAh4BAheAAAoJEBua0b5j0pckOEIAn1Q0VUudnFwmFG2/Gim1
    u+C8cmZpAJ41a06jrPg/BwDeHLHVhd5FzmXyqrkBDQRLKsnrEAQAg7+aWadgT2+8
    C6Hb2GzSs3/sJnLUWCGfmzBqKNQwyTMAlXEBD1w6MIeYURz7PuPgkOvB8v8b5+2Y
    JBU6i1289khWYSq1pn7XgX988+GsX//IfqCHl9i/RnuO4dVL9KXl3lGFvftpsm+A
    /l+4NkyWo5T/wpzyrmNfuDrsuDUf92cABRMD/0NsHSpAxZpt67PoIrnAXIByQU9g
    grORKLEHjYe6XpuVsz8XPARBjskYScU9VcPEtWIUWh6PXCjNk4aiKwE0jY7XX0pE
    DeiZwa2WG2eFlDqJ03aPgxTQouwEKu3zuo7Xnd/dlAThHK0wZdNWmV6ebYah8rrt
    TJ3PrsYQNptn8iogiEkEGBECAAkFAksqyesCGwwACgkQG5rRvmPSlyQyTACeNfIm
    DBCNKmYGktQUlB1U9kf7o2MAoK1PxWrRo9/d+uKirJNnzdYXTJk4
    =69IH
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.278. Gary W. Swearingen `<garys@FreeBSD.org>`

    pub   1024D/FAA48AD5 2005-08-22 [expires: 2007-08-22]
          Key fingerprint = 8292 CC3E 81B5 E54F E3DD  F987 FA52 E643 FAA4 8AD5
    uid                  Gary W. Swearingen <garys@freebsd.org>
    sub   2048g/E34C3CA0 2005-08-22 [expires: 2007-08-22]

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEMJW1ERBACGUsHdqFuQjrrtjpvx2pQ7GpZYl+HS/jVPn+0MjMcZwRtk2T+g
    b0/EzS/0oeOqv1biX/aZN19T31JGdlSm8FumpTc9zPgh830omlJx8V3g8wi0ZHzl
    UjGa2MkmkaCEVeP5bX/NyRljP6fpnOy+5h4F0WcpkqwlXRuhOzM8UgpXlwCgjjPk
    0CLI2jSVsnqIKtMdunOfsd0D/RaALnZrVkGtQfDX6MDo1Ws+ADGj8rGtmdN5TIoo
    ivJvilG/5HSL2nsqOcIKWA+C4lZqzMIlo5iPSz3BijMc1Ni6LaQo4E4zvh7ID5fs
    fXsMhiE7H2KNSGTjmmL/8Weq8Zgpu9TBD8CHUZLD6BU4Wmm9I/R49A16T5Gbylgs
    fEwaA/0VYP+u8TEechtQKLuAfOwL2ruFE0YKmnXq2S7MixFvSNaRilB/t41I1YcZ
    mcWbRlIBezvchln5qRommEKfp/sWVcocR+AuSTcLT3683SkeJ+9205bFx9xXJnrE
    PBhqjMmRNNlmijcBFZHk+W7tCJQBbLGJkpLfqllfVkJ+rY/NVrQmR2FyeSBXLiBT
    d2VhcmluZ2VuIDxnYXJ5c0BmcmVlYnNkLm9yZz6IZgQTEQIAJgUCQwlbUQIbAwUJ
    A8JnAAYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJEPpS5kP6pIrVGPkAn0i58Ikn
    S9M9e7cMI9Fis6lXDoAxAJ9eRxZEgPn3aQ4DZ2ObnuKbKSqcw7kCDQRDCVtWEAgA
    7jU7l7ssKXwc+/ynNfiLAm9nvCY4jMw+CK6hwhtuOmrgFH14jeEY8wRVBrOUkVi9
    Y13Z3qkTk5DD4iX9f25iK8PJELU5XJWStuX64hIEyqowRZ5KkvsdydHjQ1x2koS5
    oTW5kD2nWChnBKI7iWPgRnFnfthrXE83ZY1sV+/OBRZH1ZS5KVxOzClcoTiTE5Q0
    Q4Py1vlS/Bw95Nhejef7gSf6fN+iV2DQn8KDF81+MIj1jTWt5LDa80G+T5yGWeuz
    asAZVzBfPEHbWbVmRjT9Ajmump1D/0gUvxSr0fpnVfPtEFJ/MbLdcV1kyTtI9YLm
    EWnov/J31bGCDlhGjYfaLwADBwf/TBu+b48oClOPFJznnNGVVJUdD528hfVor4Wy
    3ph3KXSfaysOmG1xo+nQ3JpdzbC3nXgfVGM2wGvFEgq7ogBZ9YZNzwSP0vseJlwn
    oXNKvKKDdCyVJC6Xi0Pd6L4beJRTjxf0LPQUjYdQbwrk2RqHXZ/RUapYjlfOWS2l
    4ZqHiMoO7ZIAj/bdBKxySu8qVs3zmu59SE+ZQgxSXwxw2mF09XWOLgXsKTfhXlkl
    ZyKhjcSlVfjy4SXiXy2zFCh9+T0eiCeEzz5kS0QkA3npOooIFftI2q0IKbHOExSA
    YwOocuVEW7eLzeBfCoDa0SoapeXcjyF7KbiDwQ8xu9gEIUkpXYhPBBgRAgAPBQJD
    CVtWAhsMBQkDwmcAAAoJEPpS5kP6pIrV3wIAniAehy9Ttb00FbjcevJetKN5PWe9
    AJ9XhpsYKAyHxoZLFzGdR3EGBJNAbQ==
    =EQll
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.279. 高橋 佳大 `<nyan@FreeBSD.org>`

    pub  1024D/8394B81F 2001-10-15 Yoshihiro TAKAHASHI <nyan@jp.FreeBSD.org>
         Key fingerprint = D4FA D8CA 2AED FCF4 90A3  3569 8666 0500 8394 B81F
    uid                            Yoshihiro TAKAHASHI <nyan@furiru.org>
    uid                            Yoshihiro TAKAHASHI <nyan@FreeBSD.org>
    sub  1024g/B796F020 2001-10-15

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.0.6 (FreeBSD)
    Comment: For info see http://www.gnupg.org

    mQGiBDvKlwgRBADKGTPgNos5F4dobTyIhNN1nVHwKtvdTM06orzFj8VccmdZlJF7
    DLp1UH1gwiVGLu1NPOrQXKeaZmK3iO11fTV0zbCUlUnfgSQsJJeGUFMx7/tgu/F3
    L1qe1p37txNYN09SSEBJe7rlTLhM4VWa3LeEG58Td0d2qP/fJeikz9HIVwCgzIJd
    aEclfjgNmsx2lM8jn6qxJXED/jyqV1eAgTD8C6MRPGYcqyLUZoIy7SwdhvQLKlT3
    rAI4yHy5m8Njj0bk1oJM+2PAhZN3o16tpsjQEJuWoIGWxe9P4AX2Rr6htpidn2Gc
    UOXaMFZyy0MX4ULfph78FEzRC8WGEV1hWLW9pNnzaASY/RwNNvW/YnGyKSCq9ilC
    YG9mBACfcmN76QnFFDHd76otrltwwjj1zTRoHEnBgfj/EldDeOaU5cBG0HiV6cbv
    94MYUi16AnN6462qG8RHJmSPblsm2Og1e7aaZl0CpVgOq86QBwqDHFXh0q0UtgXU
    EQChaBe68ydZRwd9TScAknuj5iAXfXtwAeyhWbzmVyJH0Kk8QbQlWW9zaGloaXJv
    IFRBS0FIQVNISSA8bnlhbkBmdXJpcnUub3JnPohXBBMRAgAXBQI7ypcIBQsHCgME
    AxUDAgMWAgECF4AACgkQhmYFAIOUuB9UUQCgwTQSPrbTxhJvi1DdGsYhHOsT0PsA
    nRNBwMyeLPQPhLxw8EPLgyno7+EHtCZZb3NoaWhpcm8gVEFLQUhBU0hJIDxueWFu
    QEZyZWVCU0Qub3JnPohXBBMRAgAXBQI7ypdXBQsHCgMEAxUDAgMWAgECF4AACgkQ
    hmYFAIOUuB8q0ACfTgzsn+Q6wc4aDQ7nT3+M4HPWXhUAn3nhtyq4Ucu2A6oHXvVt
    1oAhhGyPtClZb3NoaWhpcm8gVEFLQUhBU0hJIDxueWFuQGpwLkZyZWVCU0Qub3Jn
    PohXBBMRAgAXBQI8VVkOBQsHCgMEAxUDAgMWAgECF4AACgkQhmYFAIOUuB/XmgCa
    AgHmONlOiOhKdY5LtVJoDi0+cOgAoK4wJFYzstYbpXayj0LqbgmYiY3QuQENBDvK
    lwwQBACBBH7cM4WCT6D1w1XAQnWgL4eE/fMcR3aPiHBDd8eDWFFOhwSPh3W6jZ5T
    STUEZCF7lgD3k+QJtDhVKE0U/hha1ZFMgdTTbhEW9Pl9DHW3BYxPXxq/SURwpGFg
    0GriV65Hx3Dq6cxkBfzGZzrZA2JfRwb3pXisNSGDILAtNRw3jwADBQP+OSbFQWL2
    n+KrBX4dPbp5cuFVL1/NNOWhSOwU+IsR8jDaCYpLy+Zkn7Bn90bIee7zsdWOkGWf
    /qV0qm6dY7xLs/hoCKgk+0jPPevVcCayfCTzBZ+d76qPjWQtEgKN7/LJZn8rMCBf
    B4kHxrcclf9z3OdI+BzTNrPZaCeHLd7nMKeIRgQYEQIABgUCO8qXDAAKCRCGZgUA
    g5S4H1r/AJ973EUo0J+SF83Sj/hL0zDTQBKlKgCcDy1o6LmSduT3NE28KB3Iw10I
    kqA=
    =eB3G
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.280. Sahil Tandon `<sahil@FreeBSD.org>`

    pub   2048R/C016D977 2010-04-08
          Key fingerprint = 6AD2 BA99 8E3A 8DA6 DFC1  53CF DBD0 6001 C016 D977
    uid                  Sahil Tandon <sahil@tandon.net>
    uid                  Sahil Tandon <sahil@FreeBSD.org>
    sub   2048R/F7776FBC 2010-04-08

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQENBEu9UIUBCADIzpO4fbzj8VTUxcUiw0+H8JhZeU7ItggiSPf2KYJ3LHsfM1Ch
    BCewETgOM2LCAWkH+fwZkqdkl3NqIuE/9vv9gpoTkW7ezlnKNFhSqoFDjOnt+8fx
    KUo0Qb7l7HuctYBPx0FXwWNuYn2V97di1Ef3l5wRzQklwiJL3L9+Z+2AiZ3x62Gl
    H/88oeR8NeVSD5IvpcLQ9y8ksyZ9jw28YcnAKgUcOJwBX6/HOJoWM2QxwJ042dCp
    KG7nFE6SOsl0Ll8+ZxrHlPtPDUMSjuC7Fy1l3K2ruA4cpCf4K28N0kKwVDIIW0pn
    /V279skrDvkYkNnSbqSazshAifHWmEWVQFkTABEBAAG0IFNhaGlsIFRhbmRvbiA8
    c2FoaWxARnJlZUJTRC5vcmc+iQE2BBMBAgAgBQJLvVCFAhsDBgsJCAcDAgQVAggD
    BBYCAwECHgECF4AACgkQ29BgAcAW2XfhJQgAxhM07wUXZoxGt1+xNiLwdfmM/ipV
    l/vHLs4G0uu89Vej3mw3dXq74VGNdepWTp9F+CnmvF75QYyuT4rrYk90OVlTV+Nk
    PvTmxL5G8EzlO4Tb85ipGEdm/tKydP5qrjboCGijyrBBrZXarCT9YsJXYivyThE+
    CLQNSSF6ZC7k78izDA6J6gn91psVru9q39UL4TAop0+PRwQWwUc3P1LMw2sb+GpV
    er9BtfDD8uaEcO9atazPBp1tv0OTrlFB36DUtJGKXjAErlx8jxsQWsP0s+ypHohs
    0TEovHkx2g+XR5yr7djMqqV+ffJHADHyccBRhvQajwk8lKrBhAY/6pOxWbQfU2Fo
    aWwgVGFuZG9uIDxzYWhpbEB0YW5kb24ubmV0PokBNgQTAQIAIAUCS71SowIbAwYL
    CQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJENvQYAHAFtl3LnwIAJsO+cEo1+2JJekC
    lTvgOF2dUf46xwU9x7c5AbeVUSgBpSIctPQgO8ILs0u3VpN3CWx/tfAw2R+Z9s0c
    8MgIERuKAMwr3Vfua/KN8qwD77/GCDylbndnxgd1cTJhvUArYJCm+ChN7wAcFXt4
    Bs6jJ/gSEtdT+Yk34ygOq0aRRTl5uXaKoSzZ9KVcf/57dgmVSD3JxnzbXJF+6Hv5
    FRIUZI6L+pbv4vf3nv0lvoR9ykuA8FgfDc5TPGX2eXFDECcKtME6qfxkM0l2aGHI
    gcEQyUoiOQV299Kj4xw9i+mQTWf4S+qOyBsJYJGe8tbGJNm8c0iSoXG9hUz88Zak
    HpD8VI65AQ0ES71QhQEIANV6IEZPecqdnNEykNoCOitjHjvHAOJB3HZBBPaNKO6n
    TAMntmsgvpnC+mv0GYYzDpGtQ+nfpOQkHpaOrs9K7b5JA7MABnursTn91p/sveRb
    en0g7IWjnddwVyy8G51QEd/0Pa76yjsOmdQ0EE5gSarBCQwpmV0mBSgaJ2xUIu1F
    +wcd2I6g5ii30B5TNd60J81USoTTYCdcYtus5ZwPkBew1FD4CZNhstWka6iSKBpb
    falSp8ZAZvEuOEA+WSf4OYVC3nQb18ULnv1DfkKUukxRdQg+OSWkwIJbyRbixiGZ
    KMTBM2xiiay8sjXupmEzruk7Fj/xK9aPrksgf1LTq3kAEQEAAYkBHwQYAQIACQUC
    S71QhQIbDAAKCRDb0GABwBbZd0FYB/4jYDlkWSPEsUSWT3kxHoxKukBtPvpnin/p
    Zq/ISHN/tijiSZ9jMjn5/2AN/C8IGcUqKR7iOFd8J035ZA2qGPTTrIIwYQ62No5U
    1RjM/OZPOL4jy6MWyvq44VOW46obr5REsZ3Zhf9yLFIjGDSGqAvWuiy3EMve99Tu
    s9CDZBaZ2pXLiQC7Zg8LNatfdrSra/F+lXYKdFi2ddNRsTC2wR3fTnGJjL+fOM8r
    zUwkMqiqxG28TUDiyuFl0wyZIV8KJC8+wfSKLuySH337iSSzPWBKROiOtFfE2j4Q
    f7QcTMOmDn31HgY/JpcmnsChPtGs5W8Ao9Dp3d6tlzA6iQSZ6iRQ
    =jPKa
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.281. TAKATSU Tomonari `<tota@FreeBSD.org>`

    pub   1024D/67F58F29 2009-05-17
          Key fingerprint = 6940 B575 FC4A FA26 C094  279A 4B9B 6326 67F5 8F29
    uid                  TAKATSU Tomonari <tota@FreeBSD.org>
    sub   2048g/18B112CD 2009-05-17

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEoPodURBACCCL74hQbB00H/yUtv9No6sBynaWyH/blLogfrVbNL+86XIKDz
    yricgZ6/GDT4tbpaxs+o0wPdI0SrvvZuvvLfiV4ZxiCa8TNJF5/4GEzjKE89Pmtr
    DMK/i4RCzhRfs+PfzQdTRA7aQ77mds/tYGJYsqk3m1bWwOGggMti4TBk4wCg21tx
    RTopEa+HVDn1NTLgsAs9a/0D/3lvX6trmF07ENwCp4VGzBRTAZUAGgXziQ2zdjVD
    WcIWPO9PLxM1C1Crifbh5IOFoCsrUZeEsuLalzEVWZ2O4NqLRiRfuSD4ku6Rnd/k
    DBwkHiDy03JfGybBNEKUGvhXhhu53uij6ZXxNW9xR0KclDmrBxxEyj/Y/GYMte3b
    gV0SA/97szSEf8LmQmUD1sd+VHDBaJ9QUe5xNEJ9+8ZfCsVh0zamLvrAOLnZY0mU
    hPr61esTetdjDv1UAbn/OPTMfp4oY6/4Xa59APshxuK6urXaKExwWrvio4OYTHq5
    N0Bq73HwZV1beY+yP8wRRI4AzPoeHa+vIOhfIIJO++v5u9Hrp7QjVEFLQVRTVSBU
    b21vbmFyaSA8dG90YUBGcmVlQlNELm9yZz6IYAQTEQIAIAUCSg+h1QIbAwYLCQgH
    AwIEFQIIAwQWAgMBAh4BAheAAAoJEEubYyZn9Y8pRqYAoIpC8dx4p/BaKVxueFll
    Jm/w5qD5AKCC5KSc0zMxM0Iq3FigA/tDjiyj9LkCDQRKD6HVEAgAqVPZwxV9bFbv
    PU20xAQ6HA8YxPp6QYUbb+r8AoRmqPNLoDqfNglhMimj5nPEFLvBgDHQaPQcqcja
    5Qiz7j3I8xFrBbkCrx8xp4XYAQB8An4iy8np4Ys/YjvDjittYUn8CywN4rVGIppz
    S8BDY9Ufjy6v9iFERXGEGcW3x5gFA3S1hGJZ308QhlWMw6OachMadUnAXcoO30fe
    q8eITtyJZN2MESq7G5TtaywDHz3Gg1K7m68bPeQaeAHwkQBwC/0xvDtJ4uyq/Yp6
    sQrlWJN50vaTnSAQ9q+b0tHQMVxQnxU0dVYgtE50jpPHApbc21Krc6H7a8VhNu9R
    JIanzAEUEwADBggAgJ1JY8XGrOVeYJ9F6S7F6pZKxyj/pYYBYA5dAIOm1df+cpvu
    Knen7UTOb6CgkZqGlX0BbYwYsfzr3B4oS0P5ScqE5gNVeWrCItZrZV6fuA1ZGnNn
    bvnEZ3xCZsb49CtfUcMLqNp1KGVGg1iVvh5YA7mtBmp6W12sq5YM4jx20ph+AHrs
    8/eIts+MMJ70QDI+GoXtwgS5IfFQK4x62K8W0RAmp77/qvRE4hrdsL55UYwD1zuY
    qzwfQVNaPNUUiVDEyL6K3K5GYfkZ5zPz8iJ6sWtsuLEyG4CSWLwkAtJj0Xuc71vN
    W/gkbM4ZpQgqQGQDZvN44Sj/prcJlnbyh26ajohJBBgRAgAJBQJKD6HVAhsMAAoJ
    EEubYyZn9Y8p4EkAoI+bYGMuNB+i74EdgubvW/fTinfPAKDGBmZorrcBfYrnictP
    T1jCoBbEow==
    =0Wta
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.282. Romain Tartière `<romain@FreeBSD.org>`

    pub   3072R/5112336F 2010-04-09
          Key fingerprint = 8234 9A78 E7C0 B807 0B59  80FF BA4D 1D95 5112 336F
    uid                  Romain Tarti竪re <romain@blogreen.org>
    uid                  Romain Tarti竪re (FreeBSD) <romain@FreeBSD.org>
    sub   3072R/C1B2B656 2010-04-09
    sub   3072R/8F8125F4 2010-04-09

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    [encoded data, 4225 characters]
    D0I9xnspW9gc/oMcZf1G8kE/+iG0SeMnRQzEMxb6R/Q7ZPsT5cc=
    =AUXU
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.283. Sylvio Cesar Teixeira `<sylvio@FreeBSD.org>`

    pub   2048R/AA7395A1 2009-10-28
          Key fingerprint = B319 6AAF 0016 4308 6D93  E652 3C5F 21A2 AA73 95A1
    uid                  Sylvio Cesar Teixeira (My key) <sylvio@FreeBSD.org>
    sub   2048R/F758F556 2009-10-28

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQENBEroxHYBCAD8d4HA1tGibcHpjyOTeiQ7+yclqvB8bzWazJf1OeHwHcY+Rt46
    gVxADP5QPLhMaiw4nYNr+bSg+RDIOG3bmxqDZpmw38508NWd/W8XjgQSV/PhnjU0
    pfrvhXfmGG/f6C5D5D+IRJ5dffW65YuDXtsIPTOuBCwmq9NSRK0/w4VZBL1+ihDi
    oDhAWnkxfaFXN5luY98o1GVxQNpd/ZKjb+lsvAwsoXDSjn3R2bGZbA2LBIFh1Y2f
    KHa1vL4p5ZaNp0hnHyGW0mxC+SWse7zA3c500Erbm5d5I0HUgCEGNdE6tEryklFT
    zr4HfPxclml+QnlCDVZDSAf3+ExKfNLlSwjdABEBAAG0M1N5bHZpbyBDZXNhciBU
    ZWl4ZWlyYSAoTXkga2V5KSA8c3lsdmlvQEZyZWVCU0Qub3JnPokBOAQTAQIAIgUC
    SujEdgIbAwYLCQgHAwIGFQgCCQoLBBYCAwECHgECF4AACgkQPF8hoqpzlaFKYQgA
    mO/vudKdpx8jYDFmCOIE0OorvjqXNue+0VowONs2qSWiGwsvwh7YDUg8ZKEiBZHZ
    KV29T32y0JIQJ8tKloCF+XS3IktqWA0hlXqnN+Kmw3H0+MmzjgzCPhfTxG8jUUns
    r3qnYrFQDLzQXr64rUi0o6SQsxcsyb3m3VZX/NWXLyZm3RlCOfQzIRHWKGsP7Q5+
    sMcLA/obV+C2cEOlsrT1EQWw6pBdhoPr55ssNG9Gs1oZtPhepoKjTq4X3VRIkm5n
    LEcR5WUOe9qOJxxLWSWI2lWl7KAMuGt7KmOpbSYZNWi6Z4ASm2U8KhtFIDmQINzJ
    Th4Qkph0TDAr1mhKSaRVZbkBDQRK6MR2AQgApzi1h0Oy/HVxC82JSxsfcQKNgQbF
    6H9d3gkyb57koVVP52jBhcXx4vpce7oSpyWkm/uH6ZGZi5qkjSBliy1SdE+daymV
    8FEh9KQCMPvM3BArrDlbHUzpgRDwxJ5E25FfY/ggFF6/uzY0vLsAtLdyWowOh5ZM
    Dt0sKXsAMzBRaZ8VsWeBfxJJpecRLa6igK7w0+oehWQ7v9iC+XqBpfXR2S4pxTi5
    bshXeEfezqkut0wg9UBQdOZwMdzV3kw2Zis/qvi6jte19FrH3JVe3jhuoZCVKxec
    aTL2nawtQHqCN+7MhTog3ap+ZhghWr7NK3wlPWYmk0fDCRLW2bzh7e8OawARAQAB
    iQEfBBgBAgAJBQJK6MR2AhsMAAoJEDxfIaKqc5WhBt4H/ArRP3bzyv5ejeCZ25fr
    OCR7Z1vwdFFWvWqEAPO70x9XolGZMEhuF7OVjZpIXFgjDPBAoN5nxn4A3SJqMcXg
    zDsfqOJC4N2JHwWluX4D/CZ6caWOfI0p0sM7hYyXaoAEouknPO97IvermEvmiqnO
    gpcqUHbDL9DRKBnMyqDsSE3S83kEyuwD86x+UXJNCJk6awcUTWoETg6tVrpJ6Jma
    ccMPVsn4QucbRYyY2e9tIvJ1YbcqZH2munFGa4UXeY5+UemX88tg0rHHIYoN1B0d
    qMSWsm6YwNRBuyFC4f6RkK5x3FQExsTd36UaDkxMbimkyAf2y9uMmHf49+anaTUb
    QaI=
    =7/gk
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.284. Ion-Mihai Tetcu `<itetcu@FreeBSD.org>`

    pub   1024D/21FFA1E5 2008-05-08 [expires: 2010-05-08]
          Key fingerprint = A880 42DD BD71 BAA5 AED7  AEA2 27B1 88BA 21FF A1E5
    uid                  Ion-Mihai "IOnut" Tetcu <itetcu@FreeBSD.org>
    sub   2048g/0B30E680 2008-05-08 [expires: 2010-05-08]

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v2.0.9 (FreeBSD)

    mQGiBEgiuBIRBACCfhdBIfKQoYWIJBFmDWoGi/FISis2XH8eupI+0iiUwjAUDScY
    dCuGAxQEekdsIXrpqAEnUOGsqIi+AINub8KM1ibcN8vdlFSd1RGG6mpQNSlTZ4QT
    BWFpHylCe7SRW22kU5e++LVXcViTlAvSzMs8YB/a9j3DPKzh/IXMwSaqKwCguN5R
    L36o7GJDqTIPx5pD12SaDFMD/1FJ+V3xXeKtulLzTFKVrUJhXlDTBiLVcpzAeR0E
    V5/trtZM9tJldeIX/nqKvR2QF9i0VzoCIUWNS2M8MneCFIzuhQSnt6uGWvj58V6t
    gKtNhqTNPt61BrkaTtWgg7UX6kTUcEV5nztkAePGbOAfShtK6gVBcn8MHXBRZ7De
    nqj6A/9sD7tymktX1hD7i7UlBcQhBr/Fr324qv4E33dfGKuykH+HWFxg9FAD5PTG
    CyNYoKLvl82zZso5PaDXIa42ZphviKHttMKVidKR/FuI/gTqX8Oz3mYfDoxkvFpO
    7PzMZ2+KVBxoXBwXYf6R9nZWv5cd869A18dyNvhE9tK6exVJQbQsSW9uLU1paGFp
    ICJJT251dCIgVGV0Y3UgPGl0ZXRjdUBGcmVlQlNELm9yZz6IZgQTEQIAJgUCSCK4
    EgIbAwUJA8JnAAYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJECexiLoh/6HlhDEA
    n0viPwOZWOfZGT/nbOSPmg+vvpuLAJ9Y6+VqpB9fdzyjW0GI26TlkcEpaohGBBAR
    AgAGBQJIIribAAoJEAV+n4tJOil7ptkAn1HjJyNBvKgXB4OY/SRbSmSikBXfAJ0X
    uSuQRMFbLqHM05bXqY95Ih3iArkCDQRIIrgSEAgAot/xHX8AzSLS7u2xyiraitRH
    fYcaMBpRYRqv0ceC95XUnBWZdy6piPBOr0p5LEGVaPN8RC6fM/9KIMCL+mEJtvZn
    dmxxCk+6GE2UsdDzMWdI2GZppjIAwPVY2YEB0kfa6fqSTV087hlyrkf7vMOl6dTp
    kAb50G1avwhy1jBoYR9f0LLn83kJV+77B/IUTe9sdgPsi3kovJNYIiAhTw62XqHL
    V59OZN/QVd1qPI0t5XXxpKbdyTRImtfF/EQ1HbqIha8ao8trmz2MtFMsT60piAoQ
    Q+usY3tHG5PPM4GxRnLW8Z0nZ0dWii42v5W5ETal2FaPUSH/9cDPAEphlcUomwAD
    BQf/RiXuGG3CBDiUYeVHlQiyNHQP4Rm5iVclcezhPstcQbb1R5rZ/sAu4FaUQVc8
    LRJ8c1UiemEhetGfTSAZnoeWxWfJgtcO0yK+fM5Q+ThqxCIlGPjAgmlbZw5R3Own
    BxiQAJMiax21BNVrxHMW0DigJqLVxvYEQDbw/DuMPwLG3Bf82zy1z3RUZ2pc8DEi
    nV3vtKfMH3UEvBHOxwdubOnmal/JYTWL7IR9mp+csXs0ZxJ5S5ELh5JlMWMa54Le
    3lujnkaTZYrdTxF+GWaFOxseNiLr6OcT4oZzTDnZ1Xn+CqS4TJDM1yczRrYPDA5c
    khpeSvqlv28UV0GvfDL0LR0mo4hPBBgRAgAPBQJIIrgSAhsMBQkDwmcAAAoJECex
    iLoh/6HlyokAniQgaL2Gi++v6kKS0faitctj+x9aAJsGV06R80EabXHH0d6Qd0vU
    ZMG9UQ==
    =e2YQ
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.285. Mikhail Teterin `<mi@FreeBSD.org>`

    pub  1024R/3FC71479 1995-09-08 Mikhail Teterin <mi@aldan.star89.galstar.com>
         Key fingerprint = 5F 15 EA 78 A5 40 6A 0F  14 D7 D9 EA 6E 2B DA A4

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.0.6 (FreeBSD)
    Comment: For info see http://www.gnupg.org

    mQCNAzBPh/0AAAEEAKiF0rNVbbuQue8Mo+knlGKtZJXWkLOhmdzE+FPxTSRv3TOS
    OHOfFbEbTlcuplvYv1US6o4liAyyx6vGLGa7ZW0zLFAtTOJTfwW3GPmcMTieOIK3
    wwzJtjH+wi7VeXIQCU/mOcLC9A8QaLqhJ86e3m9FODSFMIluSoucrgI/xxR5AAUR
    tC1NaWtoYWlsIFRldGVyaW4gPG1pQGFsZGFuLnN0YXI4OS5nYWxzdGFyLmNvbT6J
    AJUDBRAwT4kMH2ldntvsCqUBAVAcA/4x53VCfOx5Bm+BtneQNEvHgV8aqWW0tM4r
    31KtsSjMwuHF3kl7PJtCfVk4OpRvog4u9V5G7gtUhUIOi/Qfuia2YHvvxIh3sx7Z
    Gg22e4FxNzNob3qV+YiPOr+Aa6EoYfHB45eHSLFXryCBS60a0CfZies+CSzcHBy9
    /Zu51dCtnQ==
    =f57V
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.286. Gordon Tetlow `<gordon@FreeBSD.org>`

    pub  1024D/357D65FB 2002-05-14 Gordon Tetlow <gordont@gnf.org>
         Key fingerprint = 34EF AD12 10AF 560E C3AE  CE55 46ED ADF4 357D 65FB
    uid                            Gordon Tetlow <gordon@FreeBSD.org>
    sub  1024g/243694AB 2002-05-14

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.0.7 (FreeBSD)

    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
    =1nJ4
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.287. Lars Thegler `<lth@FreeBSD.org>`

    pub  1024D/56B0CA08 2004-05-31 Lars Thegler <lth@FreeBSD.org>
         Key fingerprint = ABAE F98C EA78 1C8D 6FDD  CB27 1CA9 5A63 56B0 CA08
    uid                            Lars Thegler <lars@thegler.dk>
    sub  1024g/E8C58EF3 2004-05-31

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEC7Hq8RBACUBh7OsXzgLr6Hz1QigRoSr5nWAUdj7Z9wNIcoE9t6J61MIUtP
    qGL3x73LspmwBGu/aC9muJ5b4Ont+BBBkVkC3Cdl7pKSvT70/ZB7TKw9f9HA9S67
    jK/NnrgG4R9amixfd0KyycNpf3yvug2FV5VZBiUqvuqWipqXacOxsD8rAwCgksWW
    74+msARYAf+mTeR7/NCEH3MEAJFfoV3APPGGECWfwrDmQT1IiBhObbjsVKbo4z7w
    yHxK+3Qm9nCG/sVthRll96C+rtAJKf+FEN8nvIx/9Z1UQ3Y7zTMgzlbz83BhhPnZ
    lAZEZI+EfmWsltzmyjJHnsvShRvjEp/YQ+0tfZV5uAPy2yrICw/rvozhCmqTox5l
    zOgXA/9mfbgbJR8NS7IwzcVSH+YEW06lyxLHjEd31aIj6wgX7O9H7JdXOytTqbSR
    VXN+5GjJhEaw9GmAd6tsvusHMy+1GBgY7TFFUNYO+JqHn6FKGzfPiFyxDyvyrF01
    QL033peqiNVxTS5nvJzmKQCpftlU3S85R+K62Alv6xO70HyaALQeTGFycyBUaGVn
    bGVyIDxsYXJzQHRoZWdsZXIuZGs+iF4EExECAB4FAkC7Hq8CGwMGCwkIBwMCAxUC
    AwMWAgECHgECF4AACgkQHKlaY1awygj74QCggWeR8IRwgHIsxVv5zItpzdtnkSsA
    n31ytm6noxfetU5J/5NnR6bwV4WetB5MYXJzIFRoZWdsZXIgPGx0aEBGcmVlQlNE
    Lm9yZz6IXgQTEQIAHgUCQLsjTQIbAwYLCQgHAwIDFQIDAxYCAQIeAQIXgAAKCRAc
    qVpjVrDKCPikAJ9a/Or2be00A9PeXyoo+b7VuLAzhgCcCX9kI2DduTtitld/mY93
    vZDnQPO5AQ0EQLseuBAEALDSStxYn/CidImaPKwDZoYVpXpHucmBZ/nK/rFwMNh/
    /RZD8ZdBF1PEDf3EA78qTxEk7PfSnoEWcxmcNfiMSALiTkehI4nWQH7j0ZSwqC/5
    Du4lP1v1PSeR35IkC58n8kur74olLMdoYxlpVOwh7jGR9W/3MSEjQ7NJP9AZ4yw/
    AAMFBACv3/ZxNdO78IPVJ1kQsfGUnwfpiw9syDqK+CMA6FyTCI2VUc6kY0Wc23Qv
    uoGv8ROk75pa2MJxEH/GQJNSZerJCSzLqdCyEW4tuxxJPQ7celSZ7PL5QutBzytL
    4rUQ5bUlYQBFlCx6aOuG2+zQqiFbm1RqX7RYdOf3LnlRmkaTDIhJBBgRAgAJBQJA
    ux64AhsMAAoJEBypWmNWsMoIibYAn1x8xlAkuQC2ZlUID9ORxSIgEMyjAJ99nQWi
    rCVB/qZMKoL16f9mHKvJ4g==
    =OYqV
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.288. David Thiel `<lx@FreeBSD.org>`

    pub   1024D/A887A9B4 2006-11-30 [expires: 2011-11-29]
          Key fingerprint = F08F 6A12 738F C9DF 51AC  8C62 1E30 7CBE A887 A9B4
    uid                  David Thiel <lx@FreeBSD.org>
    sub   2048g/B9BD92C5 2006-11-30 [expires: 2011-11-29]

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEVueHgRBACBqHSbbyc8BoznmojkguHMrDQtqISv33b9tpIsNSHDgz4Wpoqs
    MRwMPZpStu/FwULPzRUkceoYFIkyRyBwyIqTAD3uq2nisPR23ffDKRe8Q44Y8ccz
    sAtc7zPz/XpoI+2tLVGBCZyk9UOuIK1HkrmEjJ8uG2/eqyuckjO39oA/3wCgorer
    I3uzG/mJG7V0hHaCEkhQVx8D/3/i9YwqVVf2kqfKEGUASik/PXDpoeHfC/v6GFik
    Ss47TSaiuMOCoxF92m9EcOSoYCHOmdkJ1l+AVAWCZvKHKDM6J20dRr1zNqvR37jf
    FlmbF5B/MhRcjaSvrOLnZsP1wlz5sRkdAOdHNN/J/mwqkaatkFwtf7XcFMheB2qi
    1XvRA/kBi8lvPw7/PGibDIZXBxUmWVHLCU0dtrwKjbHE1HIpMwgjbTFrvh0pjmXh
    +qjn9VTcduP50Lrd/J3bh6WSgdc16xT2zxSAg9G8nJctDSJVgOJiYFUfLBpPBeLS
    O5ZN3GHw3TyLnDV/NvaAfzp1GXaGUB4kEuIaiaxxNugT82R3OLQcRGF2aWQgVGhp
    ZWwgPGx4QEZyZWVCU0Qub3JnPohmBBMRAgAmBQJFbnh4AhsDBQkJZgGABgsJCAcD
    AgQVAggDBBYCAwECHgECF4AACgkQHjB8vqiHqbTvNQCghqU1WwfsIQgI4bQn94M7
    z3PY/ZYAnRPT7soJ0GrlKAMRplxFoRWH1C1TuQINBEVueIUQCAC2nNYNyuKG/uCP
    l6/GUoumFRE8tcbH1jW5yrFbi8ahcoi71iCQ6Ozdx+XM/qIu13/iEJmTOvoVyOFf
    0pn0vVjgJ6yWek2oZmqh9Loj0WX2bRvV2uemOfvNwqUvDLCvbdftHgQAHOff5Tij
    GJxEBzDylhkAlF7MlZbCejiIJ7Of9fMC066Yi5M1lg5wAX1gPG27PiXJLMjcLI1B
    BsaIEtJsInd+UWsgjUE4tq1xoFhCeDZZWHCAyc7XyI7cy9FFQIII7SWkZ8TkZwKO
    T4UYyIHKtRFtgrMTkcXAc/Eul0LEo2z2e4L/G+8vF7q9LicIyv3/BF62fgx3iCKe
    HkJRWueDAAMFB/4lX+vF95ESlWuZ6DH1orSDKMzWlaJfl8ImE8nCT+QN/3ZauO7Y
    4kQ11jy2Q+vURzltl5r1uMgAheBR//qDp4OTlqxqSyYFx49iysd3rjP0vnc8WGD9
    BpGobsbcgw9axW6z278IZzJ7aroYBaceOHkEM6nNboZ1aKCn7jYqxFyzNUuJqqEY
    0vxx82C2wHIPb+b9k5LCz+kMrq8fGDPERYYcFFKHMuKZ9oyide/8hQ83KadXbvJB
    /GAqx+prMs8axuAMoGgksMRV7Er+eRZNqYyeCr31j+Oh4qpUbe1q3UPzkoUg9OMI
    qJXvBn5S1M2B8epkggu4y6HDsbVXqgT+NCaWiE8EGBECAA8FAkVueIUCGwwFCQlm
    AYAACgkQHjB8vqiHqbS5dACfWGE7OYOJs3lJUh0fHYJEYGfcOKMAn3Spx9LXSIcR
    mVETDDKHRmZTSiZX
    =iAPM
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.289. Fabien Thomas `<fabient@FreeBSD.org>`

    pub   1024D/07745930 2009-03-16
          Key fingerprint = D8AC EFA2 2FBD 7788 9628  4E8D 3F35 3B88 0774 5930
    uid                  Fabien Thomas <fabient@FreeBSD.org>
    sub   2048g/BC173395 2009-03-16

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEm+vTYRBAC03EXAZTDbUh/ShE+8WHHaB98hrIyAlHsMBRpWdouqNVbvEWBQ
    08to2fDMF8zpWY7GB6U1w8bH274bWjIFk9KkK9fLbfoKnwQOWBEB1IFOei/G/4Ro
    xfufEQUOWGjAcVlZp+/crXEJQEljWe4OOjh2Seruxo86qWmm6Pp8LkmPvwCg5+t8
    iQL/1Ud2c8fyLAS+AARuAhsD/R6MSZtQSselAtbGB5S01reSKO4enb7yFdU7Pcbp
    iBAqgE0khMZqcQFeOWyAiTFTqyt4t076R1s0G9uBoTCI5/sDslVvyaglnGVrL/Ej
    6WEyBEHXFHOS+pf7Aofke0wHyQhl9YrN22cEFEKWNDMCu2T+K0mP1AVKtnbLqwVG
    clIuA/9+qeScAK7n1Nu33c4WTkbhxdpxqcQGuUti+vHLrSy+wpZgEP4e3A1AurRs
    JXUGTuqT0g8wxpCMEassWuoOphrNUz3Y3ckspvo3PLbht8iWhkAS+YjvTgBPu+at
    rxqS4vuog8z12Gl5C69oUihXozh0c+9WNQUahsy2RM4ldFu3qbQjRmFiaWVuIFRo
    b21hcyA8ZmFiaWVudEBGcmVlQlNELm9yZz6IYAQTEQIAIAUCSb69NgIbAwYLCQgH
    AwIEFQIIAwQWAgMBAh4BAheAAAoJED81O4gHdFkwWz4An1Jps5d16oHpy7qh7jro
    87IPMczmAJ0f4rYdOnxuFuRDnBLwVbdb1gLQcbkCDQRJvr02EAgAlrdKSnI726B0
    hGobE1BE7jwjS+u0ozmeTh1JLZH1rKNJd/LszO7ubB6X0VGA5ustPYVb1eVoSn6L
    LkvbspsdvNitklU8Ys4FF0dI9+AvrT4u84f8AjKKSTMHoTu6vv07Vm0qEdt2ZTim
    YTwG0OKuRbwCDNaMNzshkncWxWNd/KgrP9NlfdVJ/3NxlEl/GUm6v4bw1CM3F+n8
    DanJa1jKPk0krg0bdZc90flknwaH1rQckFrxICLa/9MnV8HjZEiE/h6M4Ay3Okb8
    zQnYywHqklRfvi2nUm85AZ+fJ1X06QCJD+Idg+/Tgk2SZ3oG+yOBS5GASiYiY5Bu
    3fUtBVc3CwADBQf+NFw7Lw9mLYqd7E8VFr81U6JH4WU2sG7YEqbcZ95jqiaOby99
    jaSZ0FKPGvm2V3VpgvXchzf7noqNMWUXbQadg5U/iJnRRhdhnVUbMq/T/mx5u9RL
    jH8Bp3zF5hElGpa/rPQ0TJSI9lltUUHD4c59FbgEXqmG69sTNcXBeH+w1LBoqmyS
    VQvLsPKan6FKfFDzvvuOxdP2SFor36zu7ecEuDz+teETk5ixRiu5wpEq7geqgZfW
    rgO/2HN5OgHJCIGvQfttUwzrDLw+RHiy5wM2f+S8wSi1bka3ggE39KPODMHQR6z8
    zunYn+Xjw+jL3zrDu/FAa58nbaFRuuFEqG/V5YhJBBgRAgAJBQJJvr02AhsMAAoJ
    ED81O4gHdFkwb+AAoKtrw8aIkc31k+gGotiqv2Z+v6ZoAKDKsv5LDbNe2fncnihP
    0wGrqiKLdg==
    =HImo
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.290. Thierry Thomas `<thierry@FreeBSD.org>`

    pub   1024D/C71405A2 1997-10-11
          Key fingerprint = 3BB8 F358 C2F1 776C 65C9  AE51 73DE 698C C714 05A2
    uid                  Thierry Thomas <thierry@pompo.net>
    uid                  Thierry Thomas <tthomas@mail.dotcom.fr>
    uid                  Thierry Thomas (FreeBSD committer) <thierry@FreeBSD.org>
    sub   1024R/C5529925 2003-11-26
    sub   2048g/05CF3992 2008-02-05

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    [encoded data, 54470 characters]
    oMybWISax+SEH2PZ7dgbNw9pgQub
    =oY1+
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.291. Andrew Thompson `<thompsa@FreeBSD.org>`

    pub   1024D/BC6B839B 2005-05-05
          Key fingerprint = DE74 3F49 B97C A170 C8F1  8423 CAB6 9D57 BC6B 839B
    uid                  Andrew Thompson <thompsa@freebsd.org>
    uid                  Andrew Thompson <andy@fud.org.nz>
    sub   2048g/92E370FB 2005-05-05

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEJ5esIRBACGrMoYYIu2yCvXUOUgySagPjKetJ5zKOCFDa/Gl65tFtCcc3YR
    IjSDCvKuxcuS/qPo87pNP1sHPT0gVhMr+zcTrj8rgLWfC+CTzV3FPTdIA7LhVwer
    +evZ1jSHo/MY+GHTYBiDj/GiDkk8zBk6Sppo0OdzqZ0O8IW6tvh9n7RNZwCgrPYX
    rzBYHlAZxmZfQTDhgi8rPPcD/jH740waoG4l564X9hfkHDbxe2mrwKrcxfUbNi0h
    yIOTyl3glTULTno/xG6zxh4qG/COxIWhjC3Nkwllq+VzWqzYFoPIV4E/nvPNrLLY
    5a4/19ANLLkrw2kiLxNKLPu+SwnAF6cLdnbpPrGZSGOg/DhquXulAs8foTxv0SVN
    F5dAA/9O9GFOk9IcZ6D77A7Unysoxoa3WwqNHikJTo+bHvENJJw6BM1e93keLXbo
    bljw02y2cBXMz+cwd0S3ysj2tEPvEWpUJCVbCk7bB565R1TBb8SJB08MQ7PuOzbh
    PCCc9nB2TditjUTuL1yTrOW4qki1fHMA8ySNuYBiw/iUOkHgbbQhQW5kcmV3IFRo
    b21wc29uIDxhbmR5QGZ1ZC5vcmcubno+iF4EExECAB4FAkJ5esICGwMGCwkIBwMC
    AxUCAwMWAgECHgECF4AACgkQyradV7xrg5vQjACfboFkm4m9zZmor2J1+T5IknZ2
    z2EAnjX7sCxeTxGAUp0gv1+ijFir8Ju4tCVBbmRyZXcgVGhvbXBzb24gPHRob21w
    c2FAZnJlZWJzZC5vcmc+iF4EExECAB4FAkKUyikCGwMGCwkIBwMCAxUCAwMWAgEC
    HgECF4AACgkQyradV7xrg5tJswCdHh+UXADhzk4yJKgLuJlLYsSCK4YAn26SPktp
    Q2fQpBC3mGRRUYVRowhZuQINBEJ5eu8QCADgBVHTfrvthg1lDFvuZVlSgZueFEuq
    dBn0tyJULht4MyHAYzY1fBkKtRPxp/c+sGKzd/nXZ+zqQIJRYtrAviGAi9CyHTiI
    URcpMACCvofuRoMJ8djl35UzioL8O+icL2aoSq1w0MBzzkwTDcmaiceWVIC/RZka
    U0/irf31HSzAxGYO1wXtZuYp6BrEwcRezDZQUkO/riGKT9+UUppnTFVBbyelvVjt
    D9iyeRnL3GEOH0IvXbPRo400EwOHs4ieOZhNO4xyzj2qexMcbFq2nUis/qctukth
    lynv0mYVstLgS+GQiX8+VsbmK1QkTfKTY2ufTQDPJTcAa7Kneb+luDYzAAMFB/wP
    UyXix1pw1+qSJS6m6T7m6wmPj93/BoB+sadJvmjdaGcE5yKtCLdQYHZyI8Pvl3aA
    uktn+k/IxqSwLgJCSHv9CQ0AwN+kuIPHyy+hsJk1w5C8Qd4q8sYWecyt+aycYz7X
    Op9EB2rpKgg5E+RHFsuyx/X2dI4/n9XsF0xTDXmvBYHLw1E22rliiS9WlJ1C8UHn
    gjVZ8nqd4bI9HcwQMadtjXj0EcyarnJnrqLkJopzmLSJfOtnQvXyaTzwfS7fyQYs
    lnj+k/jJFULvgolWLmmfx149+3ou9c6c9KItAE8kfl7dSaEwOo4oE9cKluzhFHeC
    ezponq9OPdSpXUwBXjJgiEkEGBECAAkFAkJ5eu8CGwwACgkQyradV7xrg5szjQCf
    WQNYMndCd/TFxFqNF8k6Nu45/lIAn3oxSJ0Gc09OwQB4oiL6kHscyL/z
    =SFfV
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.292. Florent Thoumie `<flz@FreeBSD.org>`

    pub   1024D/5147DCF4 2004-12-04
          Key fingerprint = D203 AF5F F31A 63E2 BFD5  742B 3311 246D 5147 DCF4
    uid                  Florent Thoumie (FreeBSD committer address) <flz@FreeBSD.org>
    uid                  Florent Thoumie (flz) <florent@thoumie.net>
    uid                  Florent Thoumie (flz) <flz@xbsd.org>
    uid                  [jpeg image of size 1796]
    sub   2048g/15D930B9 2004-12-04

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    [encoded data, 4550 characters]
    YhEx5U7AKdGZ55po
    =hxwJ
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.293. Yar Tikhiy `<yar@FreeBSD.org>`

    pub   1024D/EA04CF5A 2008-08-31
          Key fingerprint = C063 6788 AFF2 A62F 06B7  516D 200F 06AF EA04 CF5A
    uid                  Yar Tikhiy <yar@freebsd.org>
    sub   2048g/20443F06 2008-08-31

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEi6nDMRBADDmOkKUcTtDy4VHqTIJfILJsWmfnYBNzEzqQiRTO9qWDpmt9ah
    8lb2/MYT45AMdpUQu3NagY9oZq8bkUsUZ527gDHYOIclgwVulGEcDuwGSJrUi7mV
    5SrEWqi9FspzRgaEwjVSB1XDXqb60J7UHXzyxcUb//f5Qibxco2k9fqzxwCgtZF9
    XBidVm+Vsj/cKoJ1FXm9NWsD/RgYQzE4WUlZ3wVw+EX4+kIgHgPh5vfx2KdK4R1u
    KdWLOnamegQRQG1pe/4nAHH8WTZOkoL+eN0Vgd4Y/2/vrohQWEknqz5f4uxpOXgA
    cWp9B4Dfk4i280vNvWWoCclDTvk5Ukm305YaR4sSVHpSdwu8s+KBIZ9ia5LXpZIQ
    iKVvBACT6K15alAx71Shv8XRGiU8aYiRHq2/vBzDOPsEwomM1mIeCrJddZbangab
    GtbyizFtz4ZG2aA7ctOFVDnfbU9PHfXD1wywkjz+LBHAr32z5QU1irSUJSRGP8vr
    pOvNsrLaSS/L4Ux+kjfrJ1o/sX7isr9izsxuob2RKULBZMFx+rQcWWFyIFRpa2hp
    eSA8eWFyQGZyZWVic2Qub3JnPohgBBMRAgAgBQJIupwzAhsDBgsJCAcDAgQVAggD
    BBYCAwECHgECF4AACgkQIA8Gr+oEz1omLwCgkAutx32AF5bws/pj7R+zSWy6bcIA
    oLC9q/1fLyeiFMyurmx92vT9d9W9uQINBEi6nDMQCACnALycl1uAKREjUAYiWjO1
    CjLEmjFXNM4gryW+gm2ZMk0kWCFzdCSMTyk0pkMV33wa2H+BOMRk5XhwY3AdPnmN
    mwYwNnptRxeIrHc4J8RuQkI4apKwZ8Z62iA+c56LZCYluJGzNCrQa65LgW70fDuP
    Z6BeBCvF0pSAmUCaivezhJPQAuiZg3B2Nf2Ty7ZsX2DwuyvJVwx5mGudQ+b9YKS6
    A+nkBke0AE7Q/CS04LpCewlK+acNka3b2JlAtDpOLSvx5bzzFsZcyMmhJYF8Am2C
    4yv0F6aD4cTdH7mSvFRND9pkDtpUYDuPpJt+RgSSelXEp+nksvwTIqX3tM+vn7qL
    AAMFB/wO3l7LM8z3QaQB/eMZV4U+14wJLsWvVU1vAAR0GG5GqefSgDQOvcw1MmSm
    YsX50lGKBdtpaq6UqXcEVKJtyg84HySwMBNRGFeibiiTO2ldaWaGS4c9e0eVu7vY
    Pch+DA2rrCNuE+lb2bWlDfkDsrK/doOiYVu0XiIQK3WFF8bTXRW+9T2OWyCjAcTl
    Yml4eKqedob/PWApJPMvMzLpg1h+VfV1JPcG1xmeoT+mtRSDME14GZwoF8JLfci8
    Gnp4odmfgx5f7dTU60DPbpps94idR7dkFrTeWervPeXvFWb4+hSENb6fgJKoBkt+
    SsC+h7OmCBsWu3GCEVQ1XhB6jezfiEkEGBECAAkFAki6nDMCGwwACgkQIA8Gr+oE
    z1qM4wCfc6TUkmIxEfS6j6S358z+qkLadQ0AoK6vPNvtYK734zGuUg7w0Lm4KmHY
    =xzp4
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.294. Jilles Tjoelker `<jilles@FreeBSD.org>`

    pub   1024D/A813D5EE 2001-02-18
          Key fingerprint = 0C82 44F5 0A1B 84E4 A9DD  7032 5102 275F A813 D5EE
    uid                  Jilles Tjoelker <jilles@stack.nl>
    uid                  Jilles Tjoelker <tjoelker@zonnet.nl>
    uid                  Jilles Tjoelker (FreeBSD) <jilles@FreeBSD.org>
    sub   2048g/B94834AC 2001-02-18

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    [encoded data, 12740 characters]
    YjItxp6TYtl3DovuEK1DXg==
    =BnuK
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.295. Ganbold Tsagaankhuu `<ganbold@FreeBSD.org>`

    pub   1024D/78F6425E 2008-02-26 [expires: 2013-02-24]
          Key fingerprint = 9B8E DC41 D3F4 F7FC D8EA  417C D4F7 2AEF 78F6 425E
    uid                  Ganbold <ganbold@freebsd.org>
    sub   2048g/716FCBF9 2008-02-26 [expires: 2013-02-24]

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEfEDpoRBACh+3G72OFXvEjpBhfsiLhudF39C+E4zZ47xuWC9oAV/8y4jJdD
    70TjTBYydonraDCxhx+GdjfCzaN3PYw5fOMTric9xi3g8s11oKtzHG5NfgHfMIMV
    R1+7D2uXzgl/10JeYIz8DriaUBdHSKOhge5eNyXy6l1z1dPvnkP+/sQ0QwCgnaaU
    gIVvEj7qRiemJG0WRtWPU5sEAII5NYtidbx5SKM7/JzRtRI/BG497VVrcNVKbEZF
    jH5WklnTTQ1v9TnQfP7iksTZ6Ik6k86/opOagqtCRZ/Pdm9ldU/dZNFoA2f/4iER
    Od4Hhnm4rQ/rSUwXl6aZfE/26iBmH4/KkfkOX/mnRHAhs4EttXl1Nt7ew1BYwIAu
    +1eFA/40VV0lL93ab5aqvZ0fX6MmbXWjZXQ4q7YscqKclvGJK/BL4C7GTHk5Sn38
    uv+b9l39YR5yuZt2mByWyNCBBu8nXQ/vSjQ2V6wzFizAVZv3b6k13aGj4/ZUZiV3
    Q1WuU6qHvafvl0BJJBw4ywOC5gSU9eR2roGQb37fvcwH7nd747QdR2FuYm9sZCA8
    Z2FuYm9sZEBmcmVlYnNkLm9yZz6IZgQTEQIAJgUCR8QOmgIbIwUJCWYBgAYLCQgH
    AwIEFQIIAwQWAgMBAh4BAheAAAoJENT3Ku949kJe/EAAoIFqc0wekId4QcEDk35R
    OBMT0mpPAJsE2LsdqX17BXJLuVfuQuxIR9RLP7kCDQRHxA6aEAgA4w40fvHBJOqJ
    1RtowjBEX8uDEOwH2LlnKK7S5P5Z0PRM4/p+a4/P7KKRYAVehaBPc56TW4eqIXWE
    sjGNoJd8SIS+M7LIhlgBe0E0qKO1PXq7Alr5QMSR9aSS3z8NPWdKHU6+bJRomM8h
    1v8l0dBfFdYsrP11FXoAtRhkRnxB5E+A3rMJ35Uz5WPs/omz422M6SNziVn9lTXT
    N0Xk/pg3KHIVjosIakfbV25ZbrX0XYWNvh3zEhGyvbV5A4QuEXg4HSjYd43l5p+z
    FreZCrQh7IN4Oj1SfIbWzsoIygn9IacXQW/iASvpVcqP3yozcL8oi3VNSZtWY4fg
    jZZTIEJ04wADBggAoha5dSArTS2Tq04ArO/Mew4ZSZyOYg8Zay2TURrx1y2BU6on
    F56WwV2/C1qPzCOGDeVnYiXKKHnc9bNIefzKTMsJdIihw9N1CfD9h8MZ23GbhKcg
    VbiRC6t1b2BR1C7H52rPs8mXtywSGiI9pjzl8bA+ARCsvWHKe8R8iwL+jw+IVF6R
    94xcbHtK9EKOD7U2bVhiRb/uQiY6df6+VjL9lLoJMSLSWXWMtk3KJoFt6peB/XVu
    NIvbdxcU+xpgqz/SBPUs3MIgt9dG29UBsez56l0hgDAU7lcR0EIpCeBA4MskhInp
    AEJ38BJ6zL5MNmOOXWki2+FT4PbLjndwqxP0Y4hPBBgRAgAPBQJHxA6aAhsMBQkJ
    ZgGAAAoJENT3Ku949kJeYScAnAxcM/ZxE+XdjWrIazFTBJITMR0LAKCdaevdwU2m
    HFVwUGCsG1R5u7ctUQ==
    =rUEt
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.296. Michael Tuexen `<tuexen@FreeBSD.org>`

    pub   1024D/04EEDABE 2009-06-08
          Key fingerprint = 493A CCB8 60E6 5510 A01D  360E 8497 B854 04EE DABE
    uid                  Michael Tuexen <tuexen@FreeBSD.org>
    sub   2048g/F653AA03 2009-06-08

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEos/K0RBACA1Ck3ZLIpeSiYRNYG8RXCxbvHFOsI56DCwbRm6VXwjbbH32wv
    FZTxIR+A6LQQLCLDEvfklgI06Ksi4uWfAoLRB/CoiX7crEZGvYDc4kYSVjumjORh
    OzDtUiechd17/gyo4j+u1PDtw/5XXpSaTIRJO3g/UobVpUPjl4dMz4Ks/wCg25PC
    MPQI2rqriwffFak4PZdJ/JED/RSqsLqjsBOpk0hrY22VQrDhCHrWsVopq5hcqElw
    W1iuLMBhGK/Lursari5M8pSmjJVeWMEQwDqfF64MctbbfmOfMaRRggX2meVdMq3c
    o7bAWWEfstFB5WlUkCg6TIQjLV/4QbATfX2YkIcwuxiwC+CMq2trAJ/X8A6VdaOY
    tkHaA/4iyk4gCbvCxB1bhDp2HiDZfAWm5OlkHefzWeMIY7O4k5+vpaS69ui1xgYO
    WhXKB6RpDXcJzvZdBQqrXqFXdfBgOwhbUj1uOgkBCMpC7EXT07sxzvrnaW/RR51f
    KTeplrRMX0tXMij7nFh/WzJFSfFK+0W6+yaRVzXa42ds+VARd7QjTWljaGFlbCBU
    dWV4ZW4gPHR1ZXhlbkBGcmVlQlNELm9yZz6IYAQTEQIAIAUCSiz8rQIbAwYLCQgH
    AwIEFQIIAwQWAgMBAh4BAheAAAoJEISXuFQE7tq+FHAAn36ou5m91emjHT6ziIWw
    80iHtiyiAJ9RL3W/bShdgmG0U3UKDnPrSwebdLkCDQRKLPytEAgApnToBctsJKyI
    YBJp2wusPzd+8H1Ab0VCcL4pcKWzCIy7dTJSknLpJV7c6ts82+pZBKUMp1XHfnsT
    Q8YwoaIUOQjkBqqlkrxqkexidwj3VVZfUvHfXvU8Hw4JM862MtYa6ZHRoz+ZSVQi
    x8idPMFhs+zD9Pb0ct6YsINeKiEGTGnanm3XJIIeNg1bOlrTjDiWB6KnlMmmeZ/R
    o4vGdnO7wsP03VtJBUnPNaQ8luAs4SHBTmC+tXNhBYwn7Kh5PGR1TVH2ROpPOYTS
    StOktseR6iMJ//6mJEBOt3cypOx2d7hbXfy/LOijg5Ku4FkUUmJrM4yDMgN/2bPw
    RGw8KgOvFwAFEQgAlw5VA4FwTgo/2+pDtQxtp96WuvQxw1IL1fPPNwGO7b2TVlj5
    KTqvsqx5MP9jLCTPi93KKAFzwFfzXxOD+Isd6AxeuotlxLOUXeCdcpeyYHepURYT
    7bjYg0DaaoqZopm0L+8c+hvOLfPaJLWVbUCEy219SeCA3xtGvRtFY1JXIFk9sbgZ
    y23S592sG/5CAantKyI+SHzZim2mj4iRiI9HlGDLpGn6QAyz5HX6a+TXdHijg/xK
    3T0xfBLn/xh5tSlBdzKR7cXSmzbtP9HL5rewVgVAqqg/Mzc93nD+gY67bMwAeyHq
    u2OCE6YkLNJz9kSqsSygcMDI8vKoPU8cqDvyyohJBBgRAgAJBQJKLPytAhsMAAoJ
    EISXuFQE7tq+/EgAoLrfM3GP7IAcTezTbs+BjUQcoWHhAJ9sJmO1S8JcXD8f9G2J
    AOE2UIkbvg==
    =adk0
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.297. 梅本 肇 `<ume@FreeBSD.org>`

    pub   1024D/BF9071FE 2005-03-17
          Key fingerprint = 1F00 0B9E 2164 70FC 6DC5  BF5F 04E9 F086 BF90 71FE
    uid                  Hajimu UMEMOTO <ume@mahoroba.org>
    uid                  Hajimu UMEMOTO <ume@FreeBSD.org>
    uid                  Hajimu UMEMOTO <ume@jp.FreeBSD.org>
    sub   2048g/748DB3B0 2005-03-17

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEI5K/4RBAD0LiHx/Tl4UyaX8yFUGjX1+PvATTJloNZGXl+jagSUQxCOp6Hv
    emDinSPskld/viupoAxjRImlkP905Y0Q6iDMne4s5fM/75lpeG9ztKRSgDQrQLTL
    HhXPXKNMtDV91yDqFEkwptS+0MaTMY0KrlR29RtGnpjoa347TU2BzU6TcwCgw+SL
    YdOWeSGs/7LKdUIyYlrldjkEAMqIQwnDl14vZBe9EOCrjSA4gHv6g2IQP1TRCpBu
    +/Fpi2+xcj117xO++uqMMzoi3aWwsqarao0/VSJ7ZD81by1H56Hnsp1d0r67neJy
    PKsyh2JfSQww9cxVkQjuZAjZNN1SLzDeA6xtSZrcmim+f0GIxlz3JFS9za/scs8x
    mGqzBADRF2My4V5HEMeScREj2hoquRv/uG727Nw+jftwiE+7TB7+JUwwyakAStNv
    x4+YEFAVSpKxyWgOeMqOWYd9bOSwJk40t9y1Gk6TTgV2C6sYwGHMSNOWYZbhYX7c
    84cxm2PtQFIq7g4Q30IkfAhYFzEwKmPJ8eV1zO0uNIhE+SO9QbQgSGFqaW11IFVN
    RU1PVE8gPHVtZUBGcmVlQlNELm9yZz6IXgQTEQIAHgIbAwYLCQgHAwIDFQIDAxYC
    AQIeAQIXgAUCQjxiFQAKCRAE6fCGv5Bx/qe3AJ99w7Ipfxs4CF3/+eCf53HO3FuI
    +wCdF/xyvVjjNdAYXCMxCHtUF85bD++0IUhhamltdSBVTUVNT1RPIDx1bWVAbWFo
    b3JvYmEub3JnPohhBBMRAgAhAhsDBgsJCAcDAgMVAgMDFgIBAh4BAheABQJCPGIY
    AhkBAAoJEATp8Ia/kHH+3c4An3RGo6JduyjPTZFh0eCBezNgzxdnAJsGRRE6ERs8
    nyORm56bvSgRTw9VKLQjSGFqaW11IFVNRU1PVE8gPHVtZUBqcC5GcmVlQlNELm9y
    Zz6IXgQTEQIAHgUCQjxgkwIbAwYLCQgHAwIDFQIDAxYCAQIeAQIXgAAKCRAE6fCG
    v5Bx/iTtAKC+8mS7jAYMz3QsCe4dJeIPaJcFGQCcDQITgNpJcUmBZ5u21Jotvp1X
    T/y5Ag0EQjksbhAIAP1+LeYSauTBi/ST3343W0lkqYr6HgZMNS7RtoCGFWcjfiYU
    99ybRgr0XwH5yJrn6JASp27f/ve5cwt/7ERLZ7flcfFi53AekeuRjFDkThLx2N4I
    s29ZQZsYubdOKHapnMflnFE3PQfkB7Og1MoFxkp0kOAEP/rOyuLMc9CbUaWczxWo
    FS8bmZDJ5ZNzAQ2vQFu5ExxomOENApy3ZCm/Z6MU5YJ2trsP3dkYStyG+1pT4NsU
    R4+TIbQfFzwZjowiC5w8rM4FIV4FMQ+3YvIEVkT+M/93hLGakh5tQENsitj7JsrC
    VA2mkomV4Hnjj94YCxUiPu59kHgiKGgXbdnceX8AAwUIALF64I+guwCaHbjoRPVg
    HWRuU2NzuKN93xii+xyIpImf+S30aTbFy0D6ZTQRSCs34oVNMSkUzySVcVn9DTG5
    +KVCHCOnGMH/Iv3dRWlHZ3HX6Gvr/cRyhDfWYDEec7KCDGT7Q87UbmTZ9cmOh+/h
    M4ND0NoYU6/EaaOqyRH4D8/LAeg0YsEpilClYWhlXT7VS7noOBf1JuB9Q0nOGycR
    DstkHWJf5om82lH5FzAuh9kEAduv8JdBdsMh3Zh4N80tCV7OyBQFWHV0UgjARSLY
    msEuelzzaFcfR2vIrmpYIElr6JzHGBiux0XK3Qk98kexGRdbrDFpaxbrsjs1/8m9
    MVOISQQYEQIACQUCQjksbgIbDAAKCRAE6fCGv5Bx/mRWAKCAQQ67iDvQq08n+bHa
    QkK3EDOmqACfZmJe9AepCkPAUkvp0ketnOPBXAE=
    =QZ8N
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.298. Stephan Uphoff `<ups@FreeBSD.org>`

    pub  2048R/D684B04A 2004-10-06 Stephan Uphoff <ups@freebsd.org>
         Key fingerprint = B5D2 04AE CA8F 7055 7474  3C85 F908 7F55 D684 B04A
    uid                            Stephan Uphoff <ups@tree.com>
    sub  2048R/A15F921B 2004-10-06

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQELBEFkBF4BCADC9kZGlvNJcktMfbT1e6sp40J8qNWM9B92GpCo84BzTyKxvIiV
    HGWMivKMS0BdiE7pPVJXtsYFjNDues6drUBOtsUNlsK38sdxPT9UDupHVIXSxERb
    pyyn6ELPEJmP+3UwYzNM6DCfPm4ZorcvkLDE7E5XfYGZxMveuNIu2qmOYeKaJKiK
    t579i3co2YX7PXvUdbd6nw4vTyU7tC5KCFxCzs9FkNz2j2FJlZCe4AQCjhsv4odz
    oyppj25QhG5rXavOOOBcORL0BqzXGRozZ37K7u9CuPebxj37LFzChZk1s2aH5kzM
    fw9QZdUhJr9fkIv3FIfTVUvL2zXlpzmzsQBrAAYptB1TdGVwaGFuIFVwaG9mZiA8
    dXBzQHRyZWUuY29tPokBNAQTAQIAHgUCQWQEXgIbAwYLCQgHAwIDFQIDAxYCAQIe
    AQIXgAAKCRD5CH9V1oSwSr76B/wPoFdE6nFJ63egXDUHNUONVVqyHOWjoowq1f+C
    G0IV+07RmChOSccyVBFn3NIjZ1E7YMQm37SUhvgqY0XNF3usNkxBdlHpG3ixQEq4
    53HvI9JNHU6BTHVtGjDFW9ZhBFaOYVbCKHM2N+jq/RmZ+liD6QUC09jRo34ytDOo
    wsmccQ2p+8cN8aMizhxseGUS0Vo0oKIzSE4rKGXalcarG5vnZ4stP+acMMAiTiCV
    lMVHDtnC6Ca9e2H4ePmUBL0sHnM3r2+0e+SAb20yvi2PICOQ8vSEcbMt28WZPBxc
    0qmFkemVS4qHgGmd8Pe2a/OvPQxgujJ+q0uPwPfIJ05+24yOtCBTdGVwaGFuIFVw
    aG9mZiA8dXBzQGZyZWVic2Qub3JnPokBNAQTAQIAHgUCQWQF2AIbAwYLCQgHAwID
    FQIDAxYCAQIeAQIXgAAKCRD5CH9V1oSwSlrjB/9Z6KcBwseAGY+v1TwtI9I4bZ+z
    Vb62nKcYgFL7tJ0djIhrpl7l+lLr+RTvCG3A/vbERIxeameaOIHjUm/22KKRJEfK
    DJ1PcAVs8ApB//1/X8ahH3GZvPvFzH+aYBxCHEw4g+UrkXFFgwmogviwP8QT6mh5
    xtO9/fwnoHtCa0jZtRaOCCcQjAc4Vng1tGrKVE/E59LwmwlDErnqoT9jlSONDdx+
    T5K5/dVwCiDdKJSm6lTBY+bj4Z1k3Qi0N+0XQtMviuZ8I+ew0H6DF7tBRxrlBLSc
    VGUwILAUfbcFWMxbaQxB1PJEaThi6lSFJ8Pd0uZHZKeNoHJ5fcLxSQhudhcMuQEM
    BEFkBO0BCADQJijowH7QvQPpo+DqAv38fi8DxgwqbwpUdiA2P1eo5awU9xVNs49f
    XKG+QMMJHx5S6Bu3anOTKWlqZKfbOlTvlnW5anKRSngcW6kdoce2yb7wK0ovjFFB
    yFTBe7QOR4G4wOttU2Fa6lVUOApC5pvuubs3nWW1ovB0IFYitPTG8lcBkgJCCOPf
    /auv8ZxLYnaA55lvOupmh5WJjA8sqcwZneTTA1ATERmCRO0Y3Qp/jAiPb+vlnA1A
    PdOpEpjbDHpjfjoBUGo3oKiNJuFZ+XMzlcBcPkcyY25cfgLqYKo7uoR9x/itirDS
    CmBnXiimERYkaiU79+epo2giTtvHMCgnAAkBAYkBHwQYAQIACQUCQWQE7QIbDAAK
    CRD5CH9V1oSwSrHcB/4xXBMPUVZukcE0+5ok1ZxMN+kwFP/DVOdmrteI7H7vQ//s
    iZ0Hdg3RC4P6wYSGBbmIA695B3OUuRnIe4Xt1YcOkmSrPGQDvxbCLXTyxx8Ftv4D
    UhqSu3DFUwlIiN/qWdSHSie3EPcMYEMS4HDHlZSaZgrKXhMHLVI2oWDz5fT00sf/
    PLMpJqhveCYKOEi7Zu4ot8bDcfDt69I1MAhKSoAkni12+/fykvZXrxyvhwrKi8v9
    lbionqqljQ3/+q6olZcXDsgwUf9mXYGs/tz2DDx2FYfZAyh4Fso7q2yGOfu3XAo1
    0nKYeR0L8piSpZBWMKD09A9vzTbSSLfdcACIItS5
    =93PR
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.299. Jacques Vidrine `<nectar@FreeBSD.org>`

    pub  2048R/33C1627B 2001-07-05 Jacques A. Vidrine <nectar@celabo.org>
         Key fingerprint = CB CE 7D A0 6E 01 DC 61  E5 91 0A BE 79 17 D3 82
    uid                            Jacques A. Vidrine <jvidrine@verio.net>
    uid                            Jacques A. Vidrine <n@nectar.com>
    uid                            Jacques A. Vidrine <jacques@vidrine.cc>
    uid                            Jacques A. Vidrine <nectar@FreeBSD.org>
    uid                            Jacques A. Vidrine <n@nectar.cc>

    pub  1024D/1606DB95 2001-07-05 Jacques A. Vidrine <nectar@celabo.org>
         Key fingerprint = 46BC EA5B F70A CC81 5332  0832 8C32 8CFF 1606 DB95
    uid                            Jacques A. Vidrine <jvidrine@verio.net>
    uid                            Jacques A. Vidrine <n@nectar.com>
    uid                            Jacques A. Vidrine <jacques@vidrine.cc>
    uid                            Jacques A. Vidrine <nectar@FreeBSD.org>
    uid                            Jacques A. Vidrine <n@nectar.cc>
    sub  2048g/57EDEA6F 2001-07-05

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.2.1 (FreeBSD)

    [encoded data, 30225 characters]
    mYuoZPQc42S78wCggnIdM5gSdDdYXWr4UZZJfTfdDkk=
    =lY5L
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.300. Alberto Villa `<avilla@FreeBSD.org>`

    pub   1024R/44350A8B 2010-01-24
          Key fingerprint = F740 CE4E EDDD DA9B 4A1B  1445 DF18 82EA 4435 0A8B
    uid                  Alberto Villa <avilla@FreeBSD.org>
    sub   1024R/F7C8254C 2010-01-24

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mI0ES1vM6gEEAMBJJFEzIesoeff/XaJ5baSLJwdZ87H26x51KPodOiCK4pvhSOvA
    1Cl+/moYBVOqhqzfNw2pX+EPWJpwRHToqZMba0rxALNhRaQgQAVk29V3bqsQhwBS
    yfwQirouhXGNaUGbdYh4ay0ZoyY0FUtKsj4GxhpWdHlKrjsHAliHM6U3ABEBAAG0
    IkFsYmVydG8gVmlsbGEgPGF2aWxsYUBGcmVlQlNELm9yZz6IuAQTAQIAIgUCS1vM
    6gIbAwYLCQgHAwIGFQgCCQoLBBYCAwECHgECF4AACgkQ3xiC6kQ1CoucYwP+N72o
    Hafp9Oj0004/rsgDKSLSfru89cusN7G7FyBYICjFQXJfwRAr3Mqo+4JwMVHPbQ6z
    ReRiMKN362M3e2cA5GMhtYqDTq7FSJzsWBUyfMhJmKOcP5rtQlm7sIt+XFGvOxRx
    6HXoduhiDmqmDUrxVxBYQTU5qGqkOXsIA/lITJ+4jQRLW8zqAQQA2HR/E+7JRr4r
    6WkpHb5WVe8w6ipuOpVRh9KjLOeDtxlCCuZ61asE6dVTYxhLrxhmzXcz7WQLJb++
    89DaQj5bSAFy3BfujeO+HUik9qB9Dv+t6eNh8SlPByxObyNx+NNNP6k5xiyx0cMC
    AMfUJbbZ91SN4gh+21yf2VqlS5uAlWUAEQEAAYifBBgBAgAJBQJLW8zqAhsMAAoJ
    EN8YgupENQqLLXUD/3qVTKnHAvQqu7EcdV4SEMbXtxHauN6tushMAbTiSI1tCz+3
    2nThTiXvLp4mQfwdH8uTQL+n3Yf3xZATAXe6Y/7Q+TvUp/Em3/5QOzdTEHirQDDe
    Cpks3VK9i/ud2nOl/TD1sy/5ad2aBKE2sAYgtILxAsdnxh4Cn4oBYc8Obg0N
    =UkFd
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.301. Nicola Vitale `<nivit@FreeBSD.org>`

    pub   1024D/F11699E5 2006-12-05
          Key fingerprint = 2C17 C591 2C6D 82BD F3DB  F1BF 8FC9 6763 F116 99E5
    uid                  Nicola Vitale (Public key for nivit@FreeBSD.org) <nivit@FreeBSD.org>
    sub   2048g/4C90805D 2006-12-05

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEV1n44RBADfkt4OUwHA7c8DbobkvhyXCRHC6w0NDQER6Q/uAE68nvEgPcdO
    dAvGXUpNNWFXbKEnIc7ANCm0V7F2VDfwANAzePY1wBfVM8UQBLuSV2WIAfs1beLl
    MZzO7sth2oeMuF7l7WwM31qwgRLTOOzXs7zG+m2uh1c1nMTKG9wgQ4rz8wCgmT5i
    oJ25GpzaM0kgX3HQWP/MkFMEAK5GUSesXqHc37fEnO4WVvdB5afc4RTDJzvniXBm
    nXkHin6uAWw4HSJOEOLPv8MtRZuIxOfznukjBpHnz19R0fEvWdRKzmDoc3Yn0BW+
    FdszOxY9Nt+LtY3/ZdcbgAtWu662/t3SvgWULgCQ7bvi0Nu75Zn3nui4j2uU5fNf
    6v4KA/9x8FXQ18BPO7EuYe5ewQwVaGWKvzrMmz8NsiZuRs4oxWXL1x0nSCumetKA
    03UHxGAQli+vuMNDcDXg5zpaGN7hIqS1N1fR7XEouvkgTDTUPsjjQUdmQ98lnEBf
    URB5D+qDq8nq7H9R/4rOmxKdiA8xmBzadnolJ69Iz9nyJ4mvb7RETmljb2xhIFZp
    dGFsZSAoUHVibGljIGtleSBmb3Igbml2aXRARnJlZUJTRC5vcmcpIDxuaXZpdEBG
    cmVlQlNELm9yZz6IXwQTEQIAIAUCRXWfjgIbAwYLCQgHAwIEFQIIAwQWAgMBAh4B
    AheAAAoJEI/JZ2PxFpnlNbMAoJWh5Yg1lOayXo3b8seKn09ers2UAJQLxlE9lS9G
    qzU9FITOFNllI+duuQINBEV1n5MQCADqyPgr+kjhfCz/2N8y3FmWr4CSE0b1S7rH
    i7fy27u0QcNK3vN/l0Vbj6dsacfP9DC3+aGw3W8uY8LK8q72AIAwLh1aoYtJfzMs
    v1kqY4shMAANF55VgcAb7lyHpSymFraVZCai0nzNyccjJtSNQgC9s1BkXeUrRTS2
    su078DDYVgbXs1S14PkZOyrZ+0R4y4M6QKvD8Th46K+mZMaXdcn+wlIvOISFQppP
    1htkyCnHexg5L6PE/VsdobiCyZ2zNKd+d6GUillVuO2Qpkq1dlLTPtRgFMnpjhRi
    L0+a84b8rs6TE9g/ZLKNOmfmbGTTk3u4vQ7u6Mky6GCGO8W8WHW7AAMFCAC9NGWK
    RU0l0hfHY3kjLll9Ygcnt42nAj4ipmnzMp0jAPV2AgShnzDJLZ1KHmJcUfby4I6c
    HDKrI5lt6B8OD1hAWbHaAJ1Js1vfiwGDqisra5ZvkfJQMY1CDv1orXeM/ZnWzLSp
    +PqVXA30ei/NtngXFYlw+BJHnbB18eKw25jT6n72Ls0T9xZscwgseAmSKZsrb6M+
    N0tjZkkueWRbvrFum1i8Hf+VYhCgRkQFcTtEEo/Ulb6GRDXaFLPZzklfQMvjgWel
    yfWpv5Qg6knJFGbQyZrJ/jNBAi7aM8XAuNhhjC1oHVyNlIRM1V+1MybvoheREjMY
    qcdWjs5YCrg43SWAiEkEGBECAAkFAkV1n5MCGwwACgkQj8lnY/EWmeXXJQCfW3pc
    YuXRQYv5d2NC5AfgnvxmjnEAmgPFcYvU/gGprH9Hz/bvXp3KrT7M
    =NcNR
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.302. Ivan Voras `<ivoras@FreeBSD.org>`

    pub   1024D/569C05C8 2000-05-24
          Key fingerprint = AB9A A555 C47C B61D BF83  154C 95D9 C041 569C 05C8
    uid                  Ivan Voras <ivoras@fer.hr>
    uid                  Ivan Voras <ivan.voras@fer.hr>
    uid                  Ivan Voras <ivoras@geri.cc.fer.hr>
    uid                  [jpeg image of size 4567]
    uid                  Ivan Voras <ivoras@sharanet.org>
    uid                  Ivan Voras <ivoras@gmail.com>
    uid                  Ivan Voras <ivoras@yahoo.com>
    uid                  Ivan Voras <ivoras@freebsd.org>
    uid                  Ivan Voras <ivan.voras@zg.t-com.hr>
    sub   1536g/149FDD60 2000-05-24

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    [encoded data, 10595 characters]
    jWbYGkipB8aIvX0Z47A04fwAoP1rlccIBooCweN9TLWOsypKDtIR
    =9LWk
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.303. Stefan Walter `<stefan@FreeBSD.org>`

    pub   3072R/12B9E0B3 2003-03-06
          Key fingerprint = 85D8 6A49 22C7 6CD9 B011  5D6A 5691 111B 12B9 E0B3
    uid                  Stefan Walter <stefan@freebsd.org>
    uid                  Stefan Walter <sw@gegenunendlich.de>
    sub   3072R/6D35457A 2003-03-06

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    Sjk9E6QR
    =iXXA
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.304. Kai Wang `<kaiw@FreeBSD.org>`

    pub   1024D/AEB910EB 2006-09-27
          Key fingerprint = 3534 10A3 F143 B760 EF3E  BEDF 8509 6A06 AEB9 10EB
    uid                  Kai Wang <kaiw@FreeBSD.org>
    uid                  Kai Wang <kaiw@student.chalmers.se>
    uid                  Kai Wang <kaiwang27@gmail.com>
    uid                  Kai Wang <kaiw27@gmail.com>
    sub   2048g/1D5AA4DD 2006-09-27

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    Hps0V71KXA==
    =v7/U
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.305. Adam Weinberger `<adamw@FreeBSD.org>`

    pub  1024D/42C743FD 2002-10-12 Adam Weinberger <adam@vectors.cx>
         Key fingerprint = A980 3F2E 80A8 9619 9D1C  82E8 A3C2 8CD9 42C7 43FD
    sub  1024g/15D67628 2002-10-12

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.2.0 (FreeBSD)

    mQGiBD2neE8RBADgkTfNUPbm3AVnVPn/Ds5lDO89yKowW3ULixWqJ6Mti+7sIQ6y
    A4v5/dlUODTH0sdL4Cl3q36pCOP13IIq7o14h4YOjMhdMhsv43678VYK0PvR70hK
    /PxqIRV3lQsP2g8LihKLpRy6sHleIXu1hRLbIBI6/iJTmFcENQfivyHpBwCg31J6
    6jew1OrTLlB76aWmmRJIlVkEAII7j0gAqV/zjR16sAsfiCSHSg9A8RGBmC67zUfK
    PxnrLiw0gqyrt77YnXvANGWDdIMHEZrcDBrb8ciSO8agBO2+/7mOVDVDU5I/SJRi
    rfJTQvFphcnOe7F3MaxdfA/vZE9woXq4JLXfnmcgUAey4iYB2QbV/+v1HBo6wys6
    qyDXBACMsXFWZbDNDwUZBxGVS66bLwpZ/UhWqkrAyvK/7M/HQjkFTUUX2fSTPnWh
    AkcA82asPxQFTdbd7BOs4JnXUY4m+wfP3pzGaCbgL6WYumRjvmvkmeyZtFD+2wxL
    nu/F3oO9PC2f4mGa6E928BLy2bRCV75L0OMmbR5Fd0Z+95k3kLQhQWRhbSBXZWlu
    YmVyZ2VyIDxhZGFtQHZlY3RvcnMuY3g+iFkEExECABkFAj2neE8ECwcDAgMVAgMD
    FgIBAh4BAheAAAoJEKPCjNlCx0P9I7UAmQGWPEjqlXfxptWgb5WKskfl+rkkAJwI
    OSvOdiBFM7/EBBgn9pUQ/6PVUrkBDQQ9p3haEAQAzc17FQj9ePY4tW2+nWiQzj8I
    GVG+8fsVwFhDb4hFcpJxPiR3/J07tU4iyKek/qUiOQdW/dI30vm3rOSIUa3r9iaj
    OaJilRVDO3ErUCdcrJjGf+fTWZFa8t2TLwOooyV8tJ5IUYLwJ8s7/3OpwWh1pfCQ
    qxGACCiXeKQo0a9jxJcAAwUD/35x0sm6jV2OZaHxX/JteeLu1hJOE4hc8oRqiE93
    4j8frz33jIsRFpKJ+H28LXtRmVXtVTdq3RuHll5JRCMG+IPLT3Tns/d0L90twpOj
    4r+2BFIK6SYE6JYngf+J5clwve3vE7Y/b8NbSawEApvVxdrpsevGH0Sn5MSdiukm
    EkJviEYEGBECAAYFAj2neFoACgkQo8KM2ULHQ/1NRgCeJ6ZJYvc1oOUBdEKd7SoH
    rFA6N/8An3A9ukQlZm3lPMutMia2vnsb108k
    =0qTN
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.306. Peter Wemm `<peter@FreeBSD.org>`

    pub  1024D/7277717F 2003-12-14 Peter Wemm <peter@wemm.org>
         Key fingerprint = 622B 2282 E92B 3BAB 57D1  A417 1512 AE52 7277 717F
    uid                            Peter Wemm <peter@FreeBSD.ORG>
    sub  1024g/8B40D9D1 2003-12-14
    pub  1024R/D89CE319 1995-04-02 Peter Wemm <peter@netplex.com.au>
         Key fingerprint = 47 05 04 CA 4C EE F8 93  F6 DB 02 92 6D F5 58 8A
    uid                            Peter Wemm <peter@perth.dialix.oz.au>
    uid                            Peter Wemm <peter@haywire.dialix.com>

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    [encoded data, 6041 characters]
    =7AWH
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.307. Nathan Whitehorn `<nwhitehorn@FreeBSD.org>`

    pub   1024D/FC118258 2008-07-03
          Key fingerprint = A399 BEA0 8D2B 63B3 47B5  056D 8513 5B96 FC11 8258
    uid                  Nathan Whitehorn <nwhitehorn@freebsd.org>
    uid                  Nathan Whitehorn <nwhitehorn@icecube.wisc.edu>
    uid                  Nathan Whitehorn <nwhitehorn@physics.wisc.edu>
    uid                  Nathan Whitehorn <whitehorn@wisc.edu>
    sub   2048g/EDB55363 2008-07-03

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    mQGiBEhs+ZMRBACu6CWtdlJ/GkGO4O6epy4SKwxV2s64od5j3ZG/+CkdXfHVnvDf
    NAdvytDwRPjFdQtwDmLTcotdm9akMpmoI+nuTDOC/wyoojh3NlTp/YmzSLntBoaQ
    W2uwp8oAW4dszTMptgb3Dpce17cHQcCuQ8Ql9tnZlFOvm4XCP00y7pmGrwCg65cu
    0wxbDYVp2fpPIG0D67q03j8D/01g68qU+JQqCZtCTDSJ7tG4w5zlOH6Hu7Q9wRhb
    XBDKX6fiO9CiRDorgi54DoKqjQoHWnFXrKBcAughLEjle5BSZ+Z+eu/tfMwDEfhL
    FMMPuvT9BVG/nukn4ufmk8BqPbw5PGalYGbdJvvjbyWhVIu/dexqGe9mT3DD7gk0
    WZArA/95nvE5+LRH31Jugq1GJ7cqjJyd/IPQC96z7JXdme7oPQ8IYDsLjsT982MO
    8WvwNbQPnRrj3Sgjp7EcuaFt/J66P7KvpU1lQKJDfZgk1LTL0Nm8wzLj2tXSwZWg
    tSOZewMItr2yKwBlpGDsS5K7CCpbocsndrI5DOPEzuYr7y+56rQuTmF0aGFuIFdo
    aXRlaG9ybiA8bndoaXRlaG9ybkBpY2VjdWJlLndpc2MuZWR1PohgBBMRAgAgBQJI
    bPmTAhsDBgsJCAcDAgQVAggDBBYCAwECHgECF4AACgkQhRNblvwRglgkxwCgmC82
    iM6zfYaJwcFsqETyxS+9Vv4AoJCemsKBmBQiN7o5K84/DuaCZTWutC5OYXRoYW4g
    V2hpdGVob3JuIDxud2hpdGVob3JuQHBoeXNpY3Mud2lzYy5lZHU+iGAEExECACAF
    Akhs+tgCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAKCRCFE1uW/BGCWCFSAJwL
    f5HwF8PEUIEo/25Dwr72JCW6DwCeIm2wQjiyXl+wy1QIP5eX5Emy+Pa0JU5hdGhh
    biBXaGl0ZWhvcm4gPHdoaXRlaG9ybkB3aXNjLmVkdT6IYAQTEQIAIAUCSGz66wIb
    AwYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJEIUTW5b8EYJY+GsAoINx6fjsHpdy
    JT0UWgiIr48kEhtcAKDetW0OzAVCF8HmXMHWR/zyjVqHSLQpTmF0aGFuIFdoaXRl
    aG9ybiA8bndoaXRlaG9ybkBmcmVlYnNkLm9yZz6IYAQTEQIAIAUCSGz7AQIbAwYL
    CQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJEIUTW5b8EYJYgiQAoM04WRCQ0LI5L78O
    d4VFwQSiUiDtAJ43eEJzvlPmvR2geTEaB6lJGNrBMrkCDQRIbPmTEAgAypfp7UhW
    ZPvGO8EfI90WkCclB/H7hSfpTgcZfQafWis6YllJ/EC+orAdQ79I/vdp5x5as6VS
    HsvN/IXXxoL30uHj2PTFV4qi0Tx8YMcw3xUK+wskQ0HonWsmZZvqHBSMbh0+JpXg
    75ZHXxOg/kpaFIjYz7cML9jSFBxD1S1/kmHqFnJISJ5wFAeXJj1loPfTbu6x5NB5
    BGbR/ysii9FidJUAXPk2EviD82oltntcNrUJS29ghFwM3FO/sZFdStQppNTgDnwO
    mUFyYxpwzG8vMjWYl3DWlc8ozXtKRotGzzsXuwUvdnC9e9MRX8xsF7x1vMrV5j6+
    5SGMnz6KvRzRIwADBQgAhDEuTI6+glgo0Kale3FKlKaOdz9R26uTCWVlK32O98jp
    mrdCfG1u1cknYrLlIVZIlrTgu3WqjRS9j23z8mIKQNW6wudu+/50/N7wtlV8k/s3
    DKmoUjcXH1b7vPxxnhFbtg41COFOUziIyXkupHEOJeaF+Sz4EEi8nXMKBEoGFlYD
    rh61rOFsfrf24E3dIwdLyjoTify8trdL5pgug27pHPMgXXx5cjLooq73VFvzlqCA
    3zFyypgED7UsYMH9NjmyLlA77gK4gfuAlGXwEWyh99SVksrvvHqntHyg9p+HdCQJ
    GyYwRMNUXTfdSn4cWVc+Qip1jpgdH/bbIwZeTIMaIYhJBBgRAgAJBQJIbPmTAhsM
    AAoJEIUTW5b8EYJYA0wAoJ5oqyCt4TZRVfofTeTGcm8K+a8lAJ0YGUPg2rEaTf06
    QaoupCN+daK2wQ==
    =hP6F
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.308. Martin Wilke `<miwi@FreeBSD.org>`

    pub   1024D/B1E6FCE9 2009-01-31
          Key fingerprint = C022 7D60 F598 8188 2635  0F6E 74B2 4884 B1E6 FCE9
    uid                  Martin Wilke <miwi@FreeBSD.org>
    sub   4096g/096DA69D 2009-01-31

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    =S3Qn
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.309. Nate Williams `<nate@FreeBSD.org>`

    pub  1024D/C2AC6BA4 2002-01-28 Nate Williams (FreeBSD) <nate@FreeBSD.org>
         Key fingerprint = 8EE8 5E72 8A94 51FA EA68  E001 FFF9 8AA9 C2AC 6BA4
    sub  1024g/03EE46D2 2002-01-28

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.0.6 (FreeBSD)
    Comment: For info see http://www.gnupg.org

    mQGiBDxVl7cRBADbXnR4t/xRvvOSiPuGPnOGeamrphPbpPXsWD8Nm/pjfN3fhSfa
    0gv3Y2n/IyLTg93gWZhWloMznkdg59Oj0oPSUxjgPauVw4q6l3JJIcurJNlp/Q7l
    DH0KLFJ8GuL6zxAz7Jcx1BpAIEu+G2SnI8+ZuGvq+YwaDxPFavfCqmVaBwCg/iPu
    OI+84/W54yZXvxfUN7dkDmED/3CxYLGeWqPqE8B8Eq8BlmgfP/FwaqXXb6xR7jsE
    XBaqNOIita6Iz49sYTYKYY2rMv6dMXjX1FM13wNW3rS73xkNvuJz0WU6sWl9Hw1e
    kjNjCN2oIqkqB5/1H14NMSOcUPLqERP7goFIK7OAJejUmm5Nc3KjG1S2G97xxjPe
    39mlBAC0QFfa8J0Z6TORFa8Uqyx90pC/Y+I/S+y0vP/59ReP/PnQq/aUdDPLt5OZ
    edtpz7M4A2GtoVkWtedPRsw0hYK+Q3CtOMemQSnlfVjTZq5edL05Po09N89M/WMz
    hB9aRcdY7IN/btsQ0H12ZH+rEj+O4Adu+qEjsWePfW60Uj74GbQqTmF0ZSBXaWxs
    aWFtcyAoRnJlZUJTRCkgPG5hdGVARnJlZUJTRC5vcmc+iFcEExECABcFAjxVl7cF
    CwcKAwQDFQMCAxYCAQIXgAAKCRD/+YqpwqxrpMSwAKCVuyt4B1Pc1tAwRMEOmmZw
    2nGIIQCgyRvB49snyBl86TikYv97ZifyLmK5AQ0EPFWXuRAEAIghycOZtElvBhfw
    r7TisjtVtzKhbF0Kj9cGg5brCC8/bJLK7PxNe48NSdlqMJ7algumsgYR37b/QBmq
    sOSEa2wXCnvCSD0ol+bdPn+Psb+hyi+AVNmVgdlJwuxHUHny0lWQnxeQLrt07SAw
    Ye/Nnc+arH6GXzBwXSpsQ2sOaMajAAMGA/9Hzjkv6HmJkPlKT2TNx33mbLaDk8xv
    vAJXxogxDcUqDDwqszWPcqShaW0IkMZo+grZfykZJjA0/8QUCaEUwhnYIwHMQRdA
    uNegCF/D2x4yzkF4d9gKYCCykDUrwvFDztIhGkinyzu6+xwe9qFcL/esIxnnonz7
    Wx8/3e7pRvS2QIhGBBgRAgAGBQI8VZe5AAoJEP/5iqnCrGukuikAnAt8uA1EIv/5
    WDCIpvNp0lgmwes9AJ4vD1R35+Db6UIw+R5EJaxNBY84zg==
    =xbGI
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.310. Thomas Wintergerst `<twinterg@FreeBSD.org>`

    pub   1024D/C45CB978 2006-01-08
          Key fingerprint = 04EE 8114 7C6D 22CE CDC8  D7F8 112D 01DB C45C B978
    uid                  Thomas Wintergerst <twinterg@gmx.de>
    uid                  Thomas Wintergerst <twinterg@freebsd.org>
    uid                  Thomas Wintergerst
    uid                  Thomas Wintergerst <thomas.wintergerst@nord-com.net>
    uid                  Thomas Wintergerst <thomas.wintergerst@materna.de>
    sub   2048g/3BEBEF8A 2006-01-08
    sub   1024D/8F631374 2006-01-08
    sub   2048g/34F631DC 2006-01-08

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    B5lKgt0VCQCfdhlL5hMDBDoaMdMtBZXFL4/Vn10=
    =ArNG
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.311. Garrett Wollman `<wollman@FreeBSD.org>`

    pub  1024D/0B92FAEA 2000-01-20 Garrett Wollman <wollman@FreeBSD.org>
         Key fingerprint = 4627 19AF 4649 31BF DE2E  3C66 3ECF 741B 0B92 FAEA
    sub  1024g/90D5EBC2 2000-01-20

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.0.6 (FreeBSD)
    Comment: For info see http://www.gnupg.org

    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
    iq7OH/kskwCfeEvJINcMBk0UEdjpgO85woB6QKI=
    =stB+
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.312. Jörg Wunsch `<joerg@FreeBSD.org>`

    pub  1024D/69A85873 2001-12-11 Joerg Wunsch <j@uriah.heep.sax.de>
         Key fingerprint = 5E84 F980 C3CA FD4B B584  1070 F48C A81B 69A8 5873
    pub  1024D/69A85873 2001-12-11 Joerg Wunsch <j@uriah.heep.sax.de>
    uid                            Joerg Wunsch <joerg_wunsch@interface-systems.de>
    uid                            Joerg Wunsch <joerg@FreeBSD.org>
    uid                            Joerg Wunsch <j@ida.interface-business.de>
    sub  1024g/21DC9924 2001-12-11

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.2.6 (FreeBSD)

    mQGiBDwWI2kRBADM4C4YlBiLozC/bZDedK12BMLyfnv9yOppj/doC1cOEaE+xZNQ
    7/aDZfhi7FNQzt+ehh52DLihV91G7gOsACtUk3gLR8G+0q6U76dBY/gvAGzCYUu0
    bJwlQCcPMysF4sNEwvsuct1fIVAHa+660X6Q+WI+eADIwZyN8wR1GrEqswCg3uGM
    xm85EYtxPFx7tyxfA8q/d+MD/i+SPmt9xEZ/KZOMbQVPw/vYmeWW4lVZGG2HLKmH
    J2FiAW4YjryoNqhpbbqlJigxf6staqgnQL4uuzBrr6v+OIjbljTHA7fs0WA4mtTX
    u7YcAKPXBTztw/O+f3tZz08Ep+AHJ3Q+pTbbRQZpikGGdOpjfLcEyAQBh1rNA3zl
    /MiLA/9IL7yfpyiA6cjX+MuUCqlqbPW2awQOCsmDBOcpXdOYC+MsBUhlT7IcFtQd
    BUxUiqdIKlRtIT4l4LnqzhL2HASv6Zzc06zGS+tlG6BlpCGlSxz8fp4asbTYdJnp
    d7lqme75jOUNjygal5lxJApincaLjv+4IaNUWCC5RjQuRsd3t7QwSm9lcmcgV3Vu
    c2NoIDxqb2VyZ193dW5zY2hAaW50ZXJmYWNlLXN5c3RlbXMuZGU+iF8EExECAB8C
    GwMCHgECF4AFAkGkelUHCwkIBwMCAQMVAgMDFgIBAAoJEPSMqBtpqFhz3+0An1WU
    SyLW5PtVk8AN2wZOZoIbdpWJAJ9UZjNCICVixY7lc+me/lfu7+nCsIhzBBARAgAz
    BQJB4lonBYMB4TOAJhpodHRwOi8vd3d3LmNhY2VydC5vcmcvaW5kZXgucGhwP2lk
    PTEwAAoJENK7DQFl0P1Yu+kAn27zpfl6Angb/DIsaV6srJ6SB/hmAJoDHPErifuG
    2L4KGF3NcagZRoUl77QgSm9lcmcgV3Vuc2NoIDxqb2VyZ0BGcmVlQlNELm9yZz6I
    XwQTEQIAHwIbAwIeAQIXgAUCQaR6QgcLCQgHAwIBAxUCAwMWAgEACgkQ9IyoG2mo
    WHNIRwCgnTUFJ1krhK0XISLLossxl68fS0MAoJEjQcOZTKtIp8S4Dqo7/VJYUVKF
    iHMEEBECADMFAkHiWicFgwHhM4AmGmh0dHA6Ly93d3cuY2FjZXJ0Lm9yZy9pbmRl
    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
    =SfCl
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.313. David Xu `<davidxu@FreeBSD.org>`

    pub   1024D/48F2BDAB 2006-07-13 [expires: 2009-07-12]
          Key fingerprint = 7182 434F 8809 A4AF 9AE8  F1B5 12F6 3390 48F2 BDAB
    uid                  David Xu <davidxu@freebsd.org>
    sub   4096g/ED7DB38A 2006-07-13 [expires: 2009-07-12]

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    =jyox
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.314. Maksim Yevmenkin `<emax@FreeBSD.org>`

    pub  1024D/F050D2DD 2003-10-01 Maksim Yevmenkin <m_evmenkin@yahoo.com>
         Key fingerprint = 8F3F D359 E318 5641 8C81  34AD 791D 53F5 F050 D2DD

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.2.2 (FreeBSD)

    mQGiBD97XL8RBACC3CMLdwZY/RcLw4PM6h2KYj+cG7TNSfNWszZO5HdQYrd6HZKQ
    h0cL7cyW1Low8a2ZulxtEjM1SfofzDlhNaTYhyjlO4xBnJM13dMFchmM4j4qF0Mu
    al1MEeO3EbLntFsh/aDX2sOKEavz5id8eKmAZKez2O5Z27bymkFf4o2UbwCg841B
    WuuWHsy4O1zrac0WidkS3G0D/jeVbYA09gylZA1KSd3djHE55lQDQrUt3+2xWxjG
    Lg60WIqys/yxei6nVO7/Wr6Q1WISiX0bYXAxHCZZQrT6cuNtEBntPPa9PnXRewUx
    8xwVCBIuSLK5Kw2WZ2FMuQWTzfd4fwt8P9vghJlaV3h5Byw3e6/MdoDID9Jkg/ml
    f5FuA/9kZBwtE4zKJvx3Pv7EG6T0w82QA0SFtcFyRnNarUIfqyUsFXNkr8hoQT3Z
    J5haO/lW2HW70KMr26GxK61XcF8LQtfvphv9M+4yF3+DZSu1YxUM1Vs/q27EQhXa
    3Cs4kJkKdzW2xDbIbuD5ZJQqFAzWX7IiTTNXnEGZStPTQMYZLbQnTWFrc2ltIFll
    dm1lbmtpbiA8bV9ldm1lbmtpbkB5YWhvby5jb20+iFsEExECABsFAj97XL8GCwkI
    BwMCAxUCAwMWAgECHgECF4AACgkQeR1T9fBQ0t01FQCfUR367fJJ37Wl4HvZVBoF
    peBX9ZEAniaaK/D+n/JttkgY8jJf2ZvjF0SSuQENBD97XMIQBACPpJjDdDw42++u
    vPMW/R7Iwqdpgs22T/bzVlFxDGx2uD9xaoNKI03jkOyUWiFlHbuifMRhxTwO5Vyg
    nj91Y0fk8hdd9bjT0ee7lJuQ8PBqzb/uEVGFIC+56/ocFzuBANdN5fzEfxp5AA0o
    zAPotyGEmLLK8+3ApZmAbsnQEveOwwADBQP+KgIxPzWAxYSn/MFPK2QBEjHuCCsS
    JB+VOShc/QaSn/wFEKc8Brjpr1KeAEi7dFrK4Sa2Rn2+k9tRSJptxi1m3Hrr0J2z
    0JofnF6cKkvmIsCse5OGCK/LJmuWHuNVqYI2X9Q0am+soHEYsRaqB/BDLT5Mw0mE
    5NO6455cKEcyizmIRgQYEQIABgUCP3tcwgAKCRB5HVP18FDS3b1HAJ9ZjWomBkE4
    1vaMSXyIopmSQNVxSQCg3J+fBmk0yhD2A8CIfxhpSRJDwus=
    =wV5Z
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.315. Bjoern A. Zeeb `<bz@FreeBSD.org>`

    pub   1024D/3CCF1842 2007-02-20
          Key fingerprint = 1400 3F19 8FEF A3E7 7207  EE8D 2B58 B8F8 3CCF 1842
    uid                  Bjoern A. Zeeb <bz@zabbadoz.net>
    uid                  Bjoern A. Zeeb <bzeeb@zabbadoz.net>
    uid                  Bjoern A. Zeeb <bz@FreeBSD.org>
    uid                  Bjoern A. Zeeb <bzeeb-lists@lists.zabbadoz.net>
    sub   4096g/F36BDC5D 2007-02-20

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    [encoded data, 12350 characters]
    B8U1cYUAoI3ftziD88BkkQf1aD7jpiQwlW7/
    =N1dt
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.316. Alexey Zelkin `<phantom@FreeBSD.org>`

    pub  1024D/9196B7D9 2002-01-28 Alexey Zelkin <phantom@FreeBSD.org>
         Key fingerprint = 4465 F2A4 28C1 C2E4 BB95  1EA0 C70D 4964 9196 B7D9
    sub  1024g/E590ABA4 2002-01-28

    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.0.6 (FreeBSD)
    Comment: For info see http://www.gnupg.org

    mQGiBDxVhBMRBAD20EH9hS3S3gy73E1s//vYS1yo4GmmvzUzMTJo4HH6OMFT/MVn
    B51RXK5YlQ1cau4MWt2sifpWsG2hmmmPtOIaC6Mn4X8cEXmzy6qW5m+3RUdXB8rM
    pFSEVVEGhE9Sq+pTI1wB4VUJ5mhQtvWVJKsmuyf1YRa/zrr2zbZTIXg5EwCggloA
    GdcoFNm7p+cW56HJI1jZTpcD/jUyc4KLeimo+6Fn3z6NZh64GS+JmmCDe7mlcK2S
    XNPVq3tXXP3ZUKdv3faoMAgI1hSi82/32GINDkhiLPc0Q2tQZRDYKvyY/swgJSnV
    1LV8jlpk2VsmsYOp9hW4SJLAQUaejpZe4CwHpOfJWbPkXE83nVygA0lnN89dfhIH
    JaB8A/9VottMl88+CLzqF3AzN72R5tFWnSFMWumaODis+UvLW0XAMP4AHhvux/FS
    Pl+m2YtilHhib6lfMYuGalN84H7VxOBxjc9L4qORV9jP4cWEYXpxx0DTmmtFfLae
    xGGTyYNM1RiqmScXMF28Am1I+WhnLTql8DVFWr8XoZUbususg7QjQWxleGV5IFpl
    bGtpbiA8cGhhbnRvbUBGcmVlQlNELm9yZz6IVwQTEQIAFwUCPFWEEwULBwoDBAMV
    AwIDFgIBAheAAAoJEMcNSWSRlrfZ9yQAn0bnLWBjo47dKrS82X1VvbuokkNXAJsH
    oANWk5PoOZzySJ7st8/IyaLBErkBDQQ8VYQXEAQA2cEOpYzl8L5y8TErdj1lfpHt
    gxm1QFETl8HvZGb/hTRWVhIcUhtOLA2uftk1oDHbnp+FPsJuFTxanCaCSQVdtMEE
    I1zK/Qy384FjS1B6L3yq84yTKn+Gp8SbMX3ZWT+dVmy88yJpmo/yFiiN9d2hYy1q
    fCUWhbAoWeD7sqSeGL8ABA0D/Au95rpaYunrMhu5nVdvZpTbNEIEDLOTS337GWy7
    n1E9RG72ujCLFg8tbEmjEUFYfCZ/cW+6+2/Nj7zoGH9xXH6bRTfSKXojdKgNkUvL
    SLynpmFpUlFKc4fzSxx5EkCxH/zog9X2CQjMvxHmSD1/x+LeD0v/5WMsLvIdj6Op
    0KmziEYEGBECAAYFAjxVhBcACgkQxw1JZJGWt9nbrQCcCvSJho7n1r4+1PGTlcep
    ABxplbsAn05jPrtZLjln7aKcavCp8FICJ2TY
    =GYHE
    -----END PGP PUBLIC KEY BLOCK-----

### D.3.317. Sepherosa Ziehau `<sephe@FreeBSD.org>`

    pub   2048R/3E51FB42 2005-10-21
          Key fingerprint = 5F47 3861 7ABA 8773 9E32  0474 5C33 841C 3E51 FB42
    uid                  Sepherosa Ziehau (freebsd) <sephe@freebsd.org>
    uid                  Sepherosa Ziehau (sephe) <sepherosa@gmail.com>
    sub   2048R/7AA31321 2005-10-21

    -----BEGIN PGP PUBLIC KEY BLOCK-----

    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
    AshLLfnD1BoaFl+lzNnL2Q==
    =F5Wg
    -----END PGP PUBLIC KEY BLOCK-----

# Colophon

この本は “The FreeBSD Documentation Project” に対するたくさんの人々の共同作業によって完成したものです。 文書は DocBook DTD を用いた SGML 形式で管理されており、 オープンソースの DSSSL エンジン Jade を使って、 さまざまな可読形式に組版されています。 Jade に対するスタイルシートの指定は、 Norm Walsh 氏による DSSSL スタイルシートとカスタマイズレイヤを利用しました。 もし、Donald Knuth 氏による 組版言語 TeX および、 Leslie Lamport 氏による LaTeX、 Sebastian Rahtz 氏による JadeTeX マクロパッケージがなかったら、 この文書の書籍版を実現することはできなかったでしょう。

### Notes

[1] | 正確ではありません--中断できないものはわずかながら存在します。 例えば、プロセスがネットワーク上の別の計算機にあるファイルを読もうとして、 その計算機がなんらかの理由 (電源を落とされたとか、ネットワークに問題があるとか) でいなくなった場合、そのプロセスは“中断不可能”と言われます。 最終的にはそのプロセスはタイムアウトします。普通は2分後です。 タイムアウトした直後、そのプロセスは終了します。
[2] | `i386` が意味しているのはそういうことです。 FreeBSD を Intel の 386 CPU 上で動かしていなくても、 ここは `i386` になります。 ここで表示されるのはプロセッサの種類ではなく、プロセッサの “アーキテクチャ”です。
[3] | スタートアップスクリプトは、 起動時に FreeBSD が自動的に実行するプログラムです。 主な機能は、全プログラムが動作するように設定を行なうことと、 バックグラウンドで動作するように設定した 有用なサービスを開始することです。
[4] | FreeBSD のコンソールとキーボードドライバの詳細全体に ついて、それなりに技術的かつ正確な説明は syscons(4), atkbd(4), vidcontrol(1) および kbdcontrol(1) のマニュアルにあります。 ここではその詳細には立ち入りませんが、 興味をもった方は、いつでもマニュアルを参照して、 動作に関する詳細な説明を読むことができます。
[5] | 自動調整アルゴリズムは、`maxuser` を、最小値が 32、最大値が 384 の間で、システムのメモリ合計と等しく設定します。
[6] | オプション `-s` をつけると、 デフォルトで詳細を表示しないように adduser を設定します。 この後に詳細を表示させるようにしたい場合は、 オプション `-v` を指定してください。
[7] | 記憶するのが簡単で、 安全なパスフレーズを選択する方法については、 Diceware Passphrase ウェブサイトを参照してください。
[8] | これは正確ではありません。 実際わたしたちは何年もの間古いリリースの FreeBSD をサポートしてはいるのですが、 永遠にサポートし続けることはできません。 現時点での古いリリースの FreeBSD のセキュリティポリシーの全説明を知るには、 http://www.FreeBSD.org/security/ を参照してください。