diff --git a/ja/handbook/Makefile b/ja/handbook/Makefile index 3f0039b4dc..3f9c2fb8df 100644 --- a/ja/handbook/Makefile +++ b/ja/handbook/Makefile @@ -1,29 +1,415 @@ -# $Id: Makefile,v 1.28 1999-03-02 18:08:34 motoyuki Exp $ -# Original revision: 1.34 -# The FreeBSD Japanese Documentation Project +# +# Id: Makefile,v 1.17 1999/03/27 16:03:49 nik Exp +# $Id: Makefile,v 1.29 1999-04-08 15:45:06 kuriyama Exp $ +# +# Required ports (common): +# textproc/jade +# textproc/docbook +# textproc/dsssl-docbook-modular +# textproc/iso8879-1986 +# +# for HTML: +# textproc/html +# www/tidy +# +# for plain text: +# www/lynx +# +# for DVI: +# japanese/ptex-common +# japanese/ptex-euc +# japanese/platex-common +# japanese/platex-euc +# +# +# Build the FreeBSD Handbook. Will eventually split in two, a generic .mk +# file which can be used by many Makefiles, and a much smaller Makefile +# which uses the generic.mk file. +# +# Note: Doing all this in a Makefile is a little odd. This is because there +# is typically not a 1:1 mapping between the .sgml files and the .html, +# .rtf, .ps, and other formats. For most of them, all the .sgml files will +# become one file in the chosen output format. For HTML, many .html files +# will be produced, but they won't be named after the corresponding .sgml +# files. -.NOTPARALLEL: +MAINTAINER=kuriyama@FreeBSD.ORG -DOC= handbook -DOCDIR=${SHAREDIR}/doc/ja -FORMATS?= html roff -SGMLOPTS+=-e EUC-JP -SGMLOPTS+=-links +JADEOPTS= -ilang.ja -SRCS= anoncvs.sgml authors.sgml backups.sgml basics.sgml bibliography.sgml boothelp.sgml -SRCS+= booting.sgml contrib.sgml crypt.sgml ctm.sgml current.sgml cvsup.sgml -SRCS+= cyclades.sgml development.sgml dialup.sgml dialout.sgml -SRCS+= disks.sgml diskless.sgml dma.sgml eresources.sgml esdi.sgml -SRCS+= firewalls.sgml german.sgml glossary.sgml goals.sgml -SRCS+= handbook.sgml history.sgml hw.sgml install.sgml isdn.sgml -SRCS+= kerberos.sgml kernelconfig.sgml kerneldebug.sgml kernelopts.sgml -SRCS+= lists.sgml mail.sgml makeworld.sgml memoryuse.sgml vm.sgml -SRCS+= mirrors.sgml nfs.sgml nutshell.sgml pgpkeys.sgml policies.sgml -SRCS+= porting.sgml ports.sgml ppp.sgml printing.sgml -SRCS+= quotas.sgml relnotes.sgml routing.sgml russian.sgml -SRCS+= serial.sgml scsi.sgml scsihd.sgml sections.sgml sio.sgml skey.sgml -SRCS+= slipc.sgml slips.sgml stable.sgml submitters.sgml synching.sgml -SRCS+= term.sgml userppp.sgml uart.sgml linuxemu.sgml -SRCS+= jcontrib.sgml jmembers.sgml +# +# DOC is the root name of file(s) that will be generated (i.e, for +# foo.rtf, foo.ps, etc, DOC=foo. HTML generation ignores this, it +# is assumed that the stylesheet names this. If not set, DOC defaults +# to the name of the current directory. +# +DOC?= handbook -.include +# +# FORMATS lists the output formats that should be generated. Valid values +# are +# +# txt html html-split ps pdf rtf tar +# +# html-split is the file split into (probably) many individual HTML files, +# linked from one index.html file. +# +# This setting also affects which files will be removed with 'make clean'. +# If you 'make' with one setting, and 'make clean' with another, don't +# be surprised if it doesn't work. +FORMATS?= html-split + +# +# INSTALL_COMPRESSED lists the compressed versions to be installed by the +# install-* targets. Valid values are +# +# gz zip bz2 +# +# If left empty then no files will be installed compressed. +# +INSTALL_COMPRESSED?= gz + +# +# INSTALL_ONLY_COMPRESSED is non-empty if you only want to install the +# compressed versions of built files. +# +INSTALL_ONLY_COMPRESSED?= + +# +# SRCS lists the individual SGML files that make up the document. Changes +# to any of these files will force a rebuild +# + +# SGML content +SRCS= handbook.sgml +SRCS+= advanced-networking/chapter.sgml +SRCS+= backups/chapter.sgml +SRCS+= basics/chapter.sgml +SRCS+= bibliography/chapter.sgml +SRCS+= contrib/chapter.sgml +SRCS+= cutting-edge/chapter.sgml +SRCS+= disks/chapter.sgml +SRCS+= eresources/chapter.sgml +SRCS+= hw/chapter.sgml +SRCS+= install/chapter.sgml +SRCS+= internals/chapter.sgml +SRCS+= introduction/chapter.sgml +SRCS+= kernelconfig/chapter.sgml +SRCS+= kerneldebug/chapter.sgml +SRCS+= kernelopts/chapter.sgml +SRCS+= l10n/chapter.sgml +SRCS+= linuxemu/chapter.sgml +SRCS+= mail/chapter.sgml +SRCS+= mirrors/chapter.sgml +SRCS+= pgpkeys/chapter.sgml +SRCS+= policies/chapter.sgml +SRCS+= ppp-and-slip/chapter.sgml +SRCS+= printing/chapter.sgml +SRCS+= quotas/chapter.sgml +SRCS+= security/chapter.sgml +SRCS+= serialcomms/chapter.sgml +SRCS+= staff/chapter.sgml +SRCS+= x11/chapter.sgml +SRCS+= ports/chapter.sgml + +# Entities +SRCS+= authors.ent +SRCS+= chapters.ent +SRCS+= mailing-lists.ent + +# ------------------------------------------------------------------------ +# +# You shouldn't need to change definitions below here + +VOLUME?= ja/${.CURDIR:T} +DOC?= ${.CURDIR:T} +DISTRIBUTION?= doc/ja + +JADE= /usr/local/bin/jade +DSLHTML= ../../share/sgml/freebsd.dsl +DSLPRINT= ../../share/sgml/freebsd.dsl + +FREEBSDCATALOG= ../../share/sgml/catalog +DOCBOOKCATALOG= /usr/local/share/sgml/docbook/3.0/catalog +JADECATALOG= /usr/local/share/sgml/jade/catalog +DSSSLCATALOG?= /usr/local/share/sgml/docbook/dsssl/modular/catalog + +JADEFLAGS?= ${JADEOPTS} -c ${FREEBSDCATALOG} -c ${DSSSLCATALOG} -c ${DOCBOOKCATALOG} -c ${JADECATALOG} + +KNOWN_FORMATS= html html-split txt rtf ps pdf tex dvi tar + +# ------------------------------------------------------------------------ +# +# Look at ${FORMATS} and work out which documents need to be generated. +# It is assumed that the HTML transformation will always create a file +# called index.html, and that for every other transformation the name +# of the generated file is ${DOC}.format. +# +# ${_docs} will be set to a list of all documents that must be made +# up to date. +# +# ${CLEANFILES} is a list of files that should be removed by the "clean" +# target. ${COMPRESS_EXT:S/^/${DOC}.${_cf}.&/ takes the COMPRESS_EXT var, +# and prepends the filename to each listed extension, building a second +# list of files with the compressed extensions added. +# + +# Note: ".for _curformat in ${KNOWN_FORMATS}" is used several times in this +# file. I know they could have been rolled together in to one, much larger, +# loop. However, that would have made things more complicated for a newcomer +# to this file to unravel and understand, and a syntax error in the loop +# would have affected the entire build/compress/install process, instead +# of just one of them, making it more difficult to debug. + +# Note: It is the aim of this file that *all* the targets be available, +# not just those appropriate to the current ${FORMATS} and +# ${INSTALL_COMPRESSED} values. +# +# For example, if FORMATS=html and INSTALL_COMPRESSED=gz you could still +# type +# +# make book.rtf.bz2 +# +# and it will do the right thing. Or +# +# make install-rtf.bz2 +# +# for that matter. But don't expect "make clean" to work if the FORMATS +# and INSTALL_COMPRESSED variables are wrong. +# + +.for _curformat in ${FORMATS} +_cf=${_curformat} +.if ${_cf} == "html-split" +_docs+= index.html HTML.manifest +CLEANFILES+= `xargs < HTML.manifest` HTML.manifest +.elif ${_cf} == "html" +_docs+= ${DOC}.html +CLEANFILES+= ${DOC}.html +.elif ${_cf} == "txt" +_docs+= ${DOC}.txt +CLEANFILES+= ${DOC}.html ${DOC}.txt +.elif ${_cf} == "dvi" +_docs+= ${DOC}.dvi +CLEANFILES+= ${DOC}.aux ${DOC}.dvi ${DOC}.log ${DOC}.tex +.elif ${_cf} == "ps" +_docs+= ${DOC}.ps +CLEANFILES+= ${DOC}.aux ${DOC}.dvi ${DOC}.log ${DOC}.tex ${DOC}.ps +.elif ${_cf} == "pdf" +_docs+= ${DOC}.pdf +CLEANFILES+= ${DOC}.aux ${DOC}.dvi ${DOC}.log ${DOC}.tex ${DOC}.pdf +.elif ${_cf} == "rtf" +_docs+= ${DOC}.rtf +CLEANFILES+= ${DOC}.rtf +.elif ${_cf} == "tar" +_docs+= ${DOC}.tar +CLEANFILES+= ${DOC}.tar +.endif +.endfor + +# +# Build a list of install-${format}.${compress_format} targets to be +# by "make install". Also, add ${DOC}.${format}.${compress_format} to +# ${_docs} and ${CLEANFILES} so they get built/cleaned by "all" and +# "clean". +# +.if !empty(INSTALL_COMPRESSED) +.for _curformat in ${FORMATS} +_cf=${_curformat} +.for _curcomp in ${INSTALL_COMPRESSED} +.if ${_cf} == "html-split" +_curinst+= install-html-split.tar.${_curcomp} +_docs+= ${DOC}.html-split.tar.${_curcomp} +.else +_curinst+= install-${_curformat}.${_curcomp} +_docs+= ${DOC}.${_curformat}.${_curcomp} +CLEANFILES+= ${DOC}.${_curformat}.${_curcomp} +.endif +.endfor +.endfor +.endif + +# ------------------------------------------------------------------------ +# +# Targets +# + +# +# Build Targets +# + +# If no target is specifed then .MAIN is made +.MAIN: all + +all: ${_docs} + +index.html HTML.manifest: ${SRCS} + ${JADE} -V html-manifest -ioutput.html ${JADEFLAGS} -d ${DSLHTML} -t sgml ${DOC}.sgml + -tidy -i -m -f /dev/null -raw *.html + +${DOC}.html: ${SRCS} + ${JADE} -ioutput.html -V nochunks ${JADEFLAGS} -d ${DSLHTML} -t sgml ${DOC}.sgml > ${DOC}.html + -tidy -i -m -f /dev/null -raw ${DOC}.html + +${DOC}.html-split.tar: HTML.manifest + tar cf ${.TARGET} `xargs < HTML.manifest` + +${DOC}.txt: ${DOC}.html + lynx -nolist -dump ${DOC}.html > ${DOC}.txt + +${DOC}.rtf: ${SRCS} + ${JADE} -ioutput.print ${JADEFLAGS} -d ${DSLPRINT} -t rtf ${DOC}.sgml + +${DOC}.tex: ${SRCS} + ${JADE} -ioutput.print ${JADEFLAGS} -d ${DSLPRINT} -t tex ${DOC}.sgml + +${DOC}.dvi: ${DOC}.tex + @echo "==> TeX pass 1/3" + -tex "&jadetex" ${DOC}.tex + @echo "==> TeX pass 2/3" + -tex "&jadetex" ${DOC}.tex + @echo "==> TeX pass 3/3" + -tex "&jadetex" ${DOC}.tex + +${DOC}.pdf: ${DOC}.tex + @echo "==> PDFTeX pass 1/3" + -pdftex "&pdfjadetex" ${DOC}.tex + @echo "==> PDFTeX pass 2/3" + -pdftex "&pdfjadetex" ${DOC}.tex + @echo "==> PDFTeX pass 3/3" + pdftex "&pdfjadetex" ${DOC}.tex + +${DOC}.ps: ${DOC}.dvi + dvips -o ${DOC}.ps ${DOC}.dvi + +${DOC}.tar: + tar cf ${.TARGET} ${SRCS} + +# ------------------------------------------------------------------------ +# +# Compress targets +# + +# +# The list of compression extensions this Makefile knows about. If you +# add new compression schemes, add to this list (which is a list of +# extensions, hence bz2, *not* bzip2) and extend the _PROG_COMPRESS_* +# targets. +# +KNOWN_COMPRESS= gz bz2 zip + +# +# You can't build suffix rules to do compression, since you can't wildcard +# the source suffix. So these are defined .USE, to be tacked on as +# dependencies of the compress-* targets. +# + +_PROG_COMPRESS_gz: .USE + gzip -9 -c ${.ALLSRC} > ${.TARGET} + +_PROG_COMPRESS_bz2: .USE + bzip2 -9 -c ${.ALLSRC} > ${.TARGET} + +_PROG_COMPRESS_zip: .USE + zip -j -9 ${.TARGET} ${.ALLSRC} + +# +# Build a list of targets for each compression scheme and output format. +# Don't compress the html-split output format. +# +.for _curformat in ${KNOWN_FORMATS} +_cf=${_curformat} +.for _curcompress in ${KNOWN_COMPRESS} +.if ${_cf} == "html-split" +${DOC}.${_cf}.tar.${_curcompress}: ${DOC}.${_cf}.tar _PROG_COMPRESS_${_curcompress} +.else +${DOC}.${_cf}.${_curcompress}: ${DOC}.${_cf} _PROG_COMPRESS_${_curcompress} +.endif +.endfor +.endfor + +# +# Install targets +# +# Build install-* targets, one per allowed value in FORMATS. Need to build +# two specific targets; +# +# install-html-split - Handles multiple .html files being generated +# from one source. Uses the HTML.manifest file +# created by the stylesheets, which should list +# each .html file that's been created. +# +# install-* - Every other format. The wildcard expands to +# the other allowed formats, all of which should +# generate just one file. +# +# "beforeinstall" and "afterinstall" are hooks in to this process. +# Redefine them to do things before and after the files are installed, +# respectively. +# +install: beforeinstall realinstall afterinstall + +# +# Build a list of install-format targets to be installed. These will be +# dependencies for the "realinstall" target. +# +.if empty(INSTALL_ONLY_COMPRESSED) +_curinst+= ${FORMATS:S/^/install-/g} +.endif + +realinstall: ${_curinst} + +.for _curformat in ${KNOWN_FORMATS} +_cf=${_curformat} +.if !target(install-${_cf}) +.if ${_cf} == "html-split" +install-${_cf}: index.html + @if [ ! -f HTML.manifest ]; then \ + echo "HTML.manifest file does not exist, can't install";\ + exit 1; \ + fi + ${INSTALL} ${COPY} -o ${DOCOWN} -g ${DOCGRP} -m ${DOCMODE} \ + `xargs < HTML.manifest` ${DESTDIR}${DOCDIR}/${VOLUME}; \ + if [ -f ${.OBJDIR}/${DOC}.ln ]; then \ + (cd ${DESTDIR}${DOCDIR}/${VOLUME}; \ + sh ${.OBJDIR}/${DOC}.ln); \ + fi +.for _compressext in ${KNOWN_COMPRESS} +install-${_cf}.tar.${_compressext}: ${DOC}.${_cf}.tar.${_compressext} + ${INSTALL} ${COPY} -o ${DOCOWN} -g ${DOCGRP} -m ${DOCMODE} \ + ${.ALLSRC} ${DESTDIR}${DOCDIR}/${VOLUME} +.endfor +.else +install-${_cf}: ${DOC}.${_cf} + ${INSTALL} ${COPY} -o ${DOCOWN} -g ${DOCGRP} -m ${DOCMODE} \ + ${.ALLSRC} ${DESTDIR}${DOCDIR}/${VOLUME} + +.for _compressext in ${KNOWN_COMPRESS} +install-${_cf}.${_compressext}: ${DOC}.${_cf}.${_compressext} + ${INSTALL} ${COPY} -o ${DOCOWN} -g ${DOCGRP} -m ${DOCMODE} \ + ${.ALLSRC} ${DESTDIR}${DOCDIR}/${VOLUME} +.endfor +.endif +.endif +.endfor + +.for __target in beforeinstall afterinstall depend _SUBDIR +.if !target(${__target}) +${__target}: +.endif +.endfor + +# +# Distribution target +# +# Like "install", but places the files into the correct distribution +# +.if !target(distribute) +distribute: +.for dist in ${DISTRIBUTION} + cd ${.CURDIR}; $(MAKE) install DESTDIR=${DISTDIR}/${dist} +.endfor +.endif + +.include +.include diff --git a/ja/handbook/advanced-networking/chapter.sgml b/ja/handbook/advanced-networking/chapter.sgml new file mode 100644 index 0000000000..c11c0c3b2d --- /dev/null +++ b/ja/handbook/advanced-networking/chapter.sgml @@ -0,0 +1,1079 @@ + + + + 高度なネットワーク + + + ゲートウェイとルート + + 原作: &a.gryphon;. + 6 October 1995. + + 訳: &a.jp.yuki;. + 6 September 1996. + + ある計算機が他の計算機をみつけることができるようにするには, + ある計算機から他の計算機へ, + どのようにたどり着くかを適切に記述するた めの仕組みが必要です. + この仕組みをルーティングと呼びます. “ルート(経路)”は + “destination (目的地) ”と “gateway (ゲー + トウェイ) ”の 2つのアドレスの組で定義します. あなたが + destination へアクセスしようとした場合, + gateway + を通って送られることをこのペアは示しています. destination + には個々のホスト, サブネット, “デフォルト”の 3つの + タイプがあります. + “デフォルトルート”は他への経路が適用できない + 場合に使われます. のちほどデフォルトルートについて少し述べること + するとして, ここでは, 個々のホスト, インタフェース + (“リンク”と も呼ばれます), + イーサネットハードウェアアドレスという 3つのタイ + プのゲートウェイについて説明します. + + + + + 以下に示す 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.25510.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: イーサネットハードウェアへの参照を含む + 経路です. + + + + + + + + デフォルトルート + + ローカルシステムからリモートホストにコネクションを張る + 必要がある場合, 既知のパスが存在するかどうかを確認するためにル + ーティングテーブルをチェッ クします. + 到達するためのパスを知っているサブネットの内部にリモ + ートホストがある場合 (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) + + + + + マルチホームホスト + + ここで扱うべき他のタイプの設定があります. + それは2つの異なるネットワー クにまたがるホストです. + 技術的にはゲートウェイとして機能するマシン (上 の例では + PPPコネクションを用いています) はマルチホームホストで す. + しかし実際にはこの言葉は, + 2つのローカルエリアネットワーク上のサ + イトであるマシンを指す言葉としてのみ使われます. + + 2枚のイーサネットカードを持つマシンが, 別のサブネット + 上にそれぞれアドレスを持っている場合があります. あるいは, + イーサネットカードを1枚持っているマシンで, + ifconfigのエイリアスを使っているかもしれません. + 物理的に分かれている2つのイーサネットのネットワークが使われて + いるならば前者が用いられます. 後者は, 物理的には1つのネットワ + ークセグメントで, 論理的には分かれている 2つのサブネットとする + 場合に用いられます. + + どちらにしても, + このマシンがお互いのサブネットへのゲートウェイ (inbound + route) として定義されていることが分かるように, おのお + ののサブネットでルーティングテーブルを設定します. このマシンが + 2 つのサブネットの間のブリッジとして動作するという構成は, パケ + ットのフィルタリングを実装する必要がある場合や, 一方向または双 + 方向のファイアウォールを利用したセキュリティを構築する場合によ + く用いられます. + + + + ルーティングの伝播 + + すでに外部との経路をどのように定義したらよいかは + 説明しました. + しかし外部から私たちのマシンをどのようにして + 見つけるのかについては説明していません. + + ある特定のアドレス空間 (この例では class-C のサブネット) + にお けるすべてのトラフィックが, + 到着したパケットを内部で転送するネ + ットワーク上の特定のホストに送られるようにルーティングテーブル + を設定することができるのは分かっています. + + あなたのサイトにアドレス空間を割り当てる場合, + あなたのサブネッ トへのすべてのトラフィックがすべて + PPPリンクを通じてサイトに送 + ってくるようにサービスプロバイダはルーティングテーブルを設定し + ます. しかし, 国境の向こう側のサイトはどのようにしてあなたの + ISPへ送ることを知るのでしょうか? + + 割り当てられているすべてのアドレス空間の経路を維持する + (分散し ている DNS 情報とよく似た) システムがあり, + そのインターネット バックボーンへの接続点を定義しています. + “バックボーン” とは国を越え, + 世界中のインターネットのトラフィックを運ぶ主要 + な信用できる幹線のことです. どのバックボーンマシンも, + あるネット + ワークから特定のバックボーンのマシンへ向かうトラフィックと, + そのバックボーンのマシンからあなたのネットワークに届くサービス + プロバイダまでのチェーンのマスタテーブルのコピーを持っていま + す. + + あなたのサイトが接続(プロバイダからみて内側にある + ことになります) したということを, プロバイダからバックボー + ンサイトへ通知することはプロバイダの仕事です. これが経 + 路の伝搬です. + + + + トラブルシューティング + + ルーティングの伝搬に問題が生じて, いくつかのサイトが + 接続をおこなうことができなくなることがあります. + ルーティングがどこでおかしくなっているかを明らかにするのに + 最も有効なコマンドはおそらく &man.traceroute.8; コマンドでしょ + う. このコマンドは, + あなたがリモートマシンに対して接続をおこなう + ことができない(例えば &man.ping.8; に失敗するような場合) + 場合も, 同じように有効です. + + &man.traceroute.8; コマンドは, + 接続を試みているリモートホスト を引数にして実行します. + 試みているパスの経由する ゲートウェイホストを表示し, + 最終的には目的のホストに たどり着くか, + コネクションの欠如によって終ってしまうかのどちら + かになります. + + より詳しい情報は, &man.traceroute.8; + のマニュアルページをみてください. + + + + + NFS + + 原作: &a.jlind;. + + 訳: &a.jp.tomo;. + 6 September 1996. + + ISA用のイーサネットアダプタの中には性能が悪いため, + ネットワーク, 特に NFS で深刻な問題がおきるものがあります. + これは FreeBSD に限ったことでは ありませんが, FreeBSD + でも起こり得ます. + + この問題は, + (FreeBSDを使用した) PC がシリコン・グラフィックス社や + サン・マイクロ システムズ社などの高性能な WS + にネットワーク接続されている場合に頻繁に起こります. + NFS マウントはうまく行きます. また, + いくつかの操作もうまく働きますが, 他のシステム (WS) + に対する要求や応答は続いていても, 突然サーバ が + クライアントの要求に対して反応しなくなります. + これは, クライアントが FreeBSD か上記の WS であるとき, + にクライアント側に起きる 現象です. + 多くのシステムでは, いったんこの問題が起きたら解決できないので, + 行儀よくシャットダウンするしかありません. + 唯一の解決策は, この状況に陥る前にクライアントを + リセットすることです. なぜなら, 一旦この状況に陥ると + NFS を解除することさえできないからです. + + + “正しい”解決法は, + より高性能のイーサネットアダプタをFreeBSDシステムに + インストールすることですが, + 満足な操作ができるような簡単な方法があります. もし, + FreeBSDシステムがサーバになるのなら, + クライアントからのマウント時に + オプションをつけて下さい. + もしFreeBSDシステムがクライアントになる + のなら, NFSファイルシステムを + オプションつきでマウントして下さい. + これらのオプションは自動的にマウントをおこなう場合には + クライアントの fstab + エントリの4番目のフィールドに指定してもよいですし, + 手動マウントの場合は mount コマンドの + パラメータで指定してもよいでしょう. + + NFSサーバとクライアントが別々のネットワーク上にあるような + 場合, これと間違えやすい他の問題が起きることに注意して下さい. + そのような場合は, ルータが必要な UDP 情報をきちんと + ルーティングしているかを確かめて下さい. + そうでなければ, たとえあなたが何をしようと解決できないでしょう. + + + 次の例では, fastwsは高性能のWSのホスト + (インタフェース)名で, + freeboxは低性能のイーサネットアダプタを備えた + FreeBSDシステムのホスト(インタフェース)名です. + + また, /sharedfs はエクスポートされる + NFS ファイルシステムであり (man exports + を見て下さい), /project + はエクスポートされたファイルシステムの + クライアント上のマウントポイントとなります. + 全ての場合において, , + といった追加オプションが + アプリケーションにより要求されるかもしれないことに + 注意して下さい. + + クライアント側 FreeBSD システム (freebox) + の例は: + + freebox/etc/fstab + に次のように書いて下さい: + + +fastws:/sharedfs /project nfs rw,-r=1024 0 0 + + freebox 上で手動で mount + コマンドを実行する場合は次のようにして下さい: + + &prompt.root; mount -t nfs -o -r=1024 fastws:/sharedfs /project + + サーバ側FreeBSDシステムの例は: fastws の + /etc/fstab に次のように書いて下さい: + + +freebox:/sharedfs /project nfs rw,-w=1024 0 0 + + fastws 上で手動で mount + コマンドで実行する場合は次のようにして下さい: + + &prompt.root; mount -t nfs -o -w=1024 freebox:/sharedfs /project + + 近いうちにどのような 16 ビットのイーサネットアダプタでも + 上記の読み出し, + 書き込みサイズの制限なしの操作ができるようになるでしょう. + + 失敗が発生したとき何が起きているか関心のある人に, + なぜ回復不可能なのか も含めて説明します. NFSは通常 + (より小さいサイズへ分割されるかもしれませんが) + 8Kの“ブロック” サイズで働きます. + イーサネットのパケットサイズは最大1500バイト程度なので, + 上位階層のコードにとっては1つのユニットのままなのですが, + NFS“ブロック”は + 複数のイーサネットパケットに分割されます. そして受信され, + 組み立て直されてから 肯定応答されなければなりません. + 高性能のWSは次々に NFSユニットを構成するパケットを, + 基準の範囲内で間隔を詰めて 次々に送り出すことができます. 小さく, + 容量の低いカードでは, 同じユニットの + 前のパケットがホストに転送される前に, 後のパケットがそれを + 「踏みつぶし」てしまいます. + このため全体としてのユニットは再構成もされないし, + 肯定応答もされません. その結果, + WSはタイムアウトして再送を試みますが, + 8Kのユニット全体を再送しようとするので, このプロセスは + 際限無く繰り返されてしまいます. + + ユニットサイズを イーサネットのパケットサイズの + 制限以下に抑えることにより, 受信された完全な + イーサネットパケットは個々に肯定応答を受けられることが + 保証されるので, + デッドロック状態を避けることができるようになります. + + 高性能のカードを使っている場合でも, 高性能な WS + が力任せに次々と PC システムにデータを送ったときには + 「踏みつぶし」 が起きるかもしれません. + そのような「踏みつぶし」は NFS “ユニット” + では保証されていません. 「踏みつぶし」が起こったとき, + 影響を受けたユニットは再送されます. そして受信され, + 組み立てられ, + 肯定応答される公平な機会が与えられるでしょう. + + + + Diskless operation + + 原作: &a.martin; + + 訳: &a.jp.yasu; + + netboot.com/netboot.rom + によって, ディスクのないクライアントで ネットワーク経由で + FreeBSD マシンのブートを行い FreeBSD を走らせることができます. + 2.0 ではローカルなスワップを持つことができます. + NFS 経由のスワッピングもサポートされています. + + サポートされているイーサネットカード: + Western Digital/SMC 8003, 8013, 8216 とその互換ボード, + NE1000/NE2000 とその互換カード (再コンパイルが必要) + + + セットアップの手順 + + + + サーバにするマシンを見つけます. + このマシンには, FreeBSD 2.0のバイナリとbootpを + 記憶するだけの十分なディスクスペースが必要です. + tftp と NFS も使えます. + + テストしたマシン: + + + + HP9000/8xx / HP-UX 9.04以降 + (9.04以前では動きません) + + + + Sun/Solaris 2.3. (bootpが必要) + + + + + + クライアントに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: + + + + + クライアントにブート情報を提供する 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 + + クライアントのIPアドレスの表示/セット + + + + server + + bootp/tftp サーバのアドレスの表示/セット + + + + netmask + + netmaskの表示/セット + + + + hostname name + hostnameの表示/セット + + + + kernel + + カーネル名の表示/セット + + + + rootfs + + root ファイルシステムの表示/セット + + + + swapfs + + swap ファイルシステムの表示/セット + + + + swapsize + + diskless swapsize を Kbytes単位でセット + + + + diskboot + ディスクからのブート + + + + autoboot + ブートプロセスの続行 + + + + trans + | + トランシーバのオン|オフ + + + + flags + + + + ブートフラグの設定 + + + + + + 完全にディスクレスな場合の一般的な 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 + + + + + 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 + + + + NFS経由でスワッピングを行う場合 + (完全にディスクレスな場合の設定), クライアントが使用する + swap ファイルを dd で作成します. + もし, swapfs コマンドが上記の例のように + 引数 /swapfsを持ちそのサイズが 20000 + である場合, myclientに対するスワップファイルは + /swapfs/swap.X.X.X.X + で呼び出されます. ここで + X.X.X.X はクライアントの IP + アドレスです. 例: + + &prompt.root; dd if=/dev/zero of=/swapfs/swap.192.1.2.4 bs=1k count=20000 + + また, スワッピングが開始されるとクライアントの + スワップスペースはセンシティブな情報を含むようになるので, + 不正なアクセスを防止するため, このファイルへの + 読み書きのアクセス制限がなされていることを確認して下さい: + + + &prompt.root; chmod 0600 /swapfs/swap.192.1.2.4 + + + + クライアントがそれぞれのrootファイルシステムとして使う + ディレクトリにrootファイルシステムを展開します. + (上記の例では/rootfs/myclient). + + + + HP-UX システム: サーバはHP9000/800 + シリーズのマシンで, HP-UX 9.04 以降が必要です. + これ以前のバージョンでは NFS + を経由するデバイスファイルが 作成ができません. + + + + /rootfs/myclient に + /dev を + 展開する際に, いくつかのシステム (HPUX) では + FreeBSD に合った デバイスファイルが作成されないので + 注意してください. + その際には最初の起動時にシングルユーザモードに + 移行して (ブートの段階でCtrl-Cを押す), + /dev に移って + sh ./MAKEDEV all として, + クライアントからこれを 修正してください. + + + + + + クライアントで netboot.com + を実行するか, netboot.rom + ファイルから EPROMを作成します. + + + + + + <filename>/</filename> および <filename>/usr</filename> + ファイルシステムを共有して使用する + + 今のところ, これを行う公式に認められた方法はありませんが, + 私はそれぞれのクライアントで /usr + ファイルシステムと 個々の / + ファイルシステム を共有して使っています. + どなたかこれをきちんと行うやり方の提案がありましたら, + 私に, もしくは &a.core; グループに知らせてください. + + + + 特定の設定についてnetbootをコンパイルする + + /sys/i386/boot/netboot/Makefile + の中の設定を変更して + コンパイルすることで, netbootでNE1000/2000 + カードをサポートします. + このファイルの先頭にあるコメントを見てください. + + + + + ISDN + + 最終更新: &a.wlloyd;. + + 訳: &a.jp.kiroh;. + 11 December 1996. + + ISDN 技術とハードウェアに関しては, Dan Kegel's ISDN + Page がよい参考になるでしょう. + + ISDN の導入手順は, 簡単にいって以下のようになります. + + + + ヨーロッパ在住の方は, ISDN + カードの節に進んでください. + + + + ISDN を使って, + インターネットプロバイダに(専用線は使用せず), ダ + イアルアップ接続しようとしている場合は, + ターミナルアダプタの使用を考え てみてください. + この方法はもっとも柔軟性があり, プロバイダを変更した場 + 合の問題も少ないでしょう. + + + + 2つの LAN の間を接続しようする場合や, ISDN + 専用線を使用する場合 には, + スタンドアローンルータ/ブリッジの使用を勧めます. + + + + どの方法を用いるかを決定するには, + 費用が重要な要素になってきます. 以下に, 最も安価な方法から, + 高価な方法まで順に説明していきます. + + + ISDN カード + + 著者:&a.hm;. + + このセクションの記述は, DSS1/Q.931 ISDN + 標準がサポートされている国のユーザにのみ有効です. + + 最近増えてきている PC ISDN カードのうちいくつかは, FreeBSD + 2.2.x 以降で isdn4bsd + ドライバパッケージによりサポートされています. + 依然として開発中ではありますが, + ヨーロッパ中でうまく動作しているという報告があります. + + 最新の isdn4bsd は, ftp://isdn4bsd@ftp.consol.de/pub から入手できます. + この ftp サイトでは, ユーザ名として isdn4bsd + を使い, パスワードにメールアドレスを使ってログインする + 必要があります. ログインできたら pub + ディレクトリに移動してください. ユーザー名 + ftpanonymous + によるログインでは, 必要なファイルにたどりつけません. + + 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 と記入したメールを + &a.majordomo; 宛てに送ってください. + + + + 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 を使う際の最大の問題点は, + モデムの場合と同じく良いシリアルカー + ドが必要であるということです. + + シリアルデバイスの詳細, + そして非同期シリアルポートと同期シリアルポート の差については, + ハンドブックのシリアルポート の + 節を参照してください. + + 標準の PC シリアルポート(非同期)に接続された TA は, 128Kbs + の接続を行っ ていても, 最大通信速度が 115.2Kbs + に制限されてしまいます. 128Kbs の ISDN + の性能を最大限に生かすためには, TA + を同期シリアルカードに接続しな ければなりません. + + 内蔵 TA を購入して, + 同期/非同期問題を片付けてしまおうとは思わないでく ださい. + 内蔵 TA には, 単に標準 PC シリアルポートのチップが内蔵されてい + るだけです. 内蔵 TA の利点といえば, + シリアルケーブルを買わなくていいと いうことと, + 電源コンセントが一つ少なくて済むということくらいでしょう. + + + 同期カードと TA の組合せは 386 の FreeBSD + マシンの場合でも, スタンドア + ローンのルータと同程度の速度は確保できます. + またこの組合せでは, ルータ より柔軟な設定が可能です. + + 同期カード/TA を選ぶか, スタンドアローンルータを選ぶかは, + 多分に宗教的 な問題です. + メーリングリストでもいくつか議論がありました. 議論の内容に + ついては, archives + を参照してください. + + + + スタンドアローン ISDN ブリッジ/ルータ + + ISDN ブリッジやルータは, OS 特有のものではありません. + もちろん FreeBSD 特有のものでもありません. + ルーティングやブリッジング技術に関す る詳細は, + ネットワークの参考書をご覧ください. + + このページでは, + ルータとブリッジにどちらでもあてはまるように記述します. + + ISDN ルータ/ブリッジは, + ローエンドの製品のコストが下がってきている こともあり, + より一般的に使用されるようになるでしょう. ISDN ルータは, + 外見は小さな箱で, + ローカルのイーサネットネットワーク(もしくはカード)と 直接, + 接続します. また, + 自身で他のブリッジ/ルータとの接続を制御します. PPP + や他のプロトコルを使用するためのソフトウェアは, + すべて組み込まれて います. + + ルータは, 完全な同期 ISDN 接続を使用するため, 通常の TA + と比較してスルー プットが大幅に向上します. + + ISDN ルータ/ブリッジを使用する場合の最大の問題点は, + 各メーカーの製品間 に相性の問題がまだ存在することです. + インターネットプロバイダとの接続を 考えている場合には, + プロバイダと相談することをお勧めします. + + 事務所の LAN と家庭の LAN の間など, 二つの LAN + セグメントの間を接続 しようとしている場合は, + ブリッジ/ルータの使用がもっともメンテナンスが 簡単で, + 努力が少なくてすむ方法です. 両側の機材を購入するのであれば, + メー カー間の接続性の問題もないでしょう. + + たとえば家庭の LAN や出張所の LAN + を本社のネットワークに接続するために は, + 以下のような設定が使用できます. + + + 出張所 LAN または 家庭 LAN + + ネットワークは, 10 Base T イーサネットです. + ルータとネットワークの間は, 必要に応じて AUI/10BT + トランシーバを使って接続します. + + + +---Sun ワークステーション +| +---FreeBSD マシン +| +---Windows 95 (別に勧めているわけじゃありません) +| +スタンドアローンルータ + | +ISDN BRI ライン + + + 家庭/出張所 LAN で, + 一台しかコンピュータを接続しないのであれば, クロス + のツイストペアケーブルを使用して, + スタンドアローンルータと直結も可能で す. + + + + 本社 LAN や他の LAN + + ネットワークは, ツイストペアイーサネットです. + + + + -------Novell サーバ + | | + |ハ ---Sun + | | + | ---FreeBSD + | | + |ブ ---Windows 95 + | | + |___---スタンドアローンルータ + | + ISDN BRI ライン + + + + ほとんどのルータ/ブリッジでは, 別々の二つのサイトに対して, + 同時にそれ + ぞれ独立した二つの PPP 接続が可能です. + これは, 通常の TA ではサポート されない機能で, + ルータ/ブリッジ接続の大きな利点です (シリアルポートを + 二つもつ特殊(そして高価な) TA では可能です). + チャンネル割り当てや MPP などと混同しないでください. + + これは, 大変便利な機能です. + たとえば事務所で専用線インターネット ISDN 接続を使用していて, + 別の ISDN ラインを購入したくないとします. この場合, + 事務所のルータは, 一つの専用線 B + チャンネル接続(64Kbs)を維持しつつ, 別 の B + チャンネルを他の用途に使用することができます. たとえば, + 他の場所 とのダイアルイン, ダイアルアウトに使用したり, + バンド幅を増やすために, + インターネットとの接続への動的に割り当て(MPP + など)に使用したりすること が可能です. + + またイーサネットブリッジは, IP パケットだけでなく IPX/SPX + などすべての + プロトコルのパケットを中継することが可能です. + + + + + + diff --git a/ja/handbook/authors.ent b/ja/handbook/authors.ent new file mode 100644 index 0000000000..2668aa9bd8 --- /dev/null +++ b/ja/handbook/authors.ent @@ -0,0 +1,348 @@ + + +abial@FreeBSD.ORG"> + +ache@FreeBSD.ORG"> + +adam@FreeBSD.ORG"> + +alex@freebsd.org"> + +amurai@FreeBSD.ORG"> + +andreas@FreeBSD.ORG"> + +archie@FreeBSD.ORG"> + +asami@FreeBSD.ORG"> + +ats@FreeBSD.ORG"> + +awebster@pubnix.net"> + +bde@FreeBSD.ORG"> + +billf@FreeBSD.ORG"> + +brandon@FreeBSD.ORG"> + +brian@FreeBSD.ORG"> + +cawimm@FreeBSD.ORG"> + +charnier@FreeBSD.ORG"> + +chuckr@glue.umd.edu"> + +chuckr@FreeBSD.ORG"> + +cracauer@FreeBSD.ORG"> + +csgr@FreeBSD.ORG"> + +cwt@FreeBSD.ORG"> + +danny@FreeBSD.ORG"> + +darrenr@FreeBSD.ORG"> + +davidn@blaze.net.au"> + +dburr@FreeBSD.ORG"> + +dcs@FreeBSD.ORG"> + +des@FreeBSD.ORG"> + +dfr@FreeBSD.ORG"> + +dg@FreeBSD.ORG"> + +dillon@FreeBSD.ORG"> + +dima@FreeBSD.ORG"> + +dirk@FreeBSD.ORG"> + +Dirk.vanGulik@jrc.it"> + +dt@FreeBSD.ORG"> + +dufault@FreeBSD.ORG"> + +dwhite@FreeBSD.ORG"> + +dyson@FreeBSD.ORG"> + +eivind@FreeBSD.ORG"> + +ejc@FreeBSD.ORG"> + +erich@FreeBSD.ORG"> + +faq@freebsd.org"> + +fenner@FreeBSD.ORG"> + +flathill@FreeBSD.ORG"> + +foxfair@FreeBSD.ORG"> + +fsmp@FreeBSD.ORG"> + +gallatin@FreeBSD.ORG"> + +gclarkii@FreeBSD.ORG"> + +gena@NetVision.net.il"> + +ghelmer@cs.iastate.edu"> + +gibbs@FreeBSD.ORG"> + +mjacob@FreeBSD.ORG"> + +gj@FreeBSD.ORG"> + +gpalmer@FreeBSD.ORG"> + +graichen@FreeBSD.ORG"> + +grog@FreeBSD.ORG"> + +gryphon@healer.com"> + +guido@FreeBSD.ORG"> + +hanai@FreeBSD.ORG"> + +handy@sxt4.physics.montana.edu"> + +helbig@FreeBSD.ORG"> + +hm@FreeBSD.ORG"> + +hoek@FreeBSD.ORG"> + +hosokawa@FreeBSD.ORG"> + +hsu@FreeBSD.ORG"> + +imp@FreeBSD.ORG"> + +itojun@itojun.org"> + +jb@cimlogic.com.au"> + +jdp@FreeBSD.ORG"> + +jehamby@lightside.com"> + +jfieber@FreeBSD.ORG"> + +james@nexis.net"> + +jgreco@FreeBSD.ORG"> + +jhay@FreeBSD.ORG"> + +jkh@FreeBSD.ORG"> + +jkoshy@FreeBSD.ORG"> + +jlemon@FreeBSD.ORG"> + +john@starfire.MN.ORG"> + +jlrobin@FreeBSD.ORG"> + +jmacd@FreeBSD.ORG"> + +jmb@FreeBSD.ORG"> + +jmg@FreeBSD.ORG"> + +jmz@FreeBSD.ORG"> + +joerg@FreeBSD.ORG"> + +john@FreeBSD.ORG"> + +jraynard@freebsd.org"> + +jseger@freebsd.org"> + +julian@FreeBSD.ORG"> + +jvh@FreeBSD.ORG"> + +karl@FreeBSD.ORG"> + +kato@FreeBSD.ORG"> + +kelly@fsl.noaa.gov"> + +ken@FreeBSD.ORG"> + +kjc@FreeBSD.ORG"> + +kris@FreeBSD.ORG"> + +kuriyama@FreeBSD.ORG"> + +lars@FreeBSD.ORG"> + +ljo@FreeBSD.ORG"> + +luoqi@FreeBSD.ORG"> + +markm@FreeBSD.ORG"> + +martin@FreeBSD.ORG"> + +max@FreeBSD.ORG"> + +mark@vmunix.com"> + +mbarkah@FreeBSD.ORG"> + +mckay@FreeBSD.ORG"> + +mckusick@FreeBSD.ORG"> + +md@bsc.no"> + +mks@FreeBSD.ORG"> + +motoyuki@FreeBSD.ORG"> + +mph@FreeBSD.ORG"> + +mpp@FreeBSD.ORG"> + +msmith@FreeBSD.ORG"> + +nate@FreeBSD.ORG"> + +nectar@FreeBSD.ORG"> + +newton@FreeBSD.ORG"> + +n_hibma@FreeBSD.ORG"> + +nik@FreeBSD.ORG"> + +nsj@FreeBSD.ORG"> + +obrien@FreeBSD.ORG"> + +olah@FreeBSD.ORG"> + +opsys@open-systems.net"> + +paul@FreeBSD.ORG"> + +pb@fasterix.freenix.org"> + +pds@FreeBSD.ORG"> + +peter@FreeBSD.ORG"> + +phk@FreeBSD.ORG"> + +pjchilds@imforei.apana.org.au"> + +proven@FreeBSD.ORG"> + +pst@FreeBSD.ORG"> + +rgrimes@FreeBSD.ORG"> + +rhuff@cybercom.net"> + +ricardag@ag.com.br"> + +rich@FreeBSD.ORG"> + +rnordier@FreeBSD.ORG"> + +roberto@FreeBSD.ORG"> + +rse@FreeBSD.ORG"> + +sada@FreeBSD.ORG"> + +scrappy@FreeBSD.ORG"> + +se@FreeBSD.ORG"> + +sef@FreeBSD.ORG"> + +shige@FreeBSD.ORG"> + +simokawa@FreeBSD.ORG"> + +smace@FreeBSD.ORG"> + +smpatel@FreeBSD.ORG"> + +sos@FreeBSD.ORG"> + +stark@FreeBSD.ORG"> + +stb@FreeBSD.ORG"> + +steve@FreeBSD.ORG"> + +swallace@FreeBSD.ORG"> + +tedm@FreeBSD.ORG"> + +tegge@FreeBSD.ORG"> + +tg@FreeBSD.ORG"> + +thepish@FreeBSD.ORG"> + +torstenb@FreeBSD.ORG"> + +truckman@FreeBSD.ORG"> + +ugen@FreeBSD.ORG"> + +uhclem@FreeBSD.ORG"> + +ulf@FreeBSD.ORG"> + +vanilla@FreeBSD.ORG"> + +wes@FreeBSD.ORG"> + +whiteside@acm.org"> + +wilko@yedi.iaf.nl"> + +wlloyd@mpd.ca"> + +wollman@FreeBSD.ORG"> + +wosch@FreeBSD.ORG"> + +wpaul@FreeBSD.ORG"> + +yokota@FreeBSD.ORG"> + diff --git a/ja/handbook/backups/chapter.sgml b/ja/handbook/backups/chapter.sgml new file mode 100644 index 0000000000..1964c09290 --- /dev/null +++ b/ja/handbook/backups/chapter.sgml @@ -0,0 +1,750 @@ + + + + バックアップ + + ハードウェアコンパチビリティの問題は現在のコンピュータ業界 + でもっとも多く起きる種類の問題であり, + FreeBSD もこれに無縁ではありません. + 市場にある驚くほど多様な種類の製品をサポートすることによって, + FreeBSDは 安価に普及している PC ハードウェアで + 動かすことができるという利点はこの点では不利でもあります. + FreeBSD のサポートするハードウェアを徹底的に調べて + 提供することは不可能ですが, このセクションでは FreeBSD + に含まれるデバイスドライバとそのドライバがサポートする + ハードウェアのカタログを示します. 可能で適切なものについては + 特定の製品についての注釈を含めました. + また,このハンドブックの + コンフィグレーションファイル のセクションにも + サポートされているデバイスのリストがありますので + そちらもご覧ください. + + FreeBSD はボランティアプロジェクトでテスト部門には + 資金がありませんから, より多くの情報をこのカタログに載せるには + あなたがたユーザに頼らなければなりません. + あなた自身の経験により, あるハードウェアが FreeBSD + で動くか動かないかがわかったとしたら &a.doc; へ e-mail + して知らせてください. サポートされているハードウェアについての + 質問は, &a.questions; (詳しいことは + メーリングリストを参照してください) へ宛ててください. + 情報を提供したり質問をする時は FreeBSD のバージョンと使っている + ハードウェアのできるだけ詳しい情報を含めることを + 忘れないでください. + + + * フロッピーへのバックアップはどうでしょう? + + + + + + テープメディア + + 一般的なテープメディアには 4mm, 8mm, QIC, ミニカートリッジ + DLT があります. + + + 4mm (DDS: Digital Data Storage) + + 4mm テープはワークステーションのバックアップメディアとして + QIC から置き換えられつつあります. この傾向は + QICドライブの製造のリーダであった Archiveを Connerが買収し + QICドライブの製造を中止したことで加速しました. + 4mmドライブは小型で静かですが 8mm + ドライブの持っているような信頼性の評判はありません. + カートリッジは 8mmカートリッジよりも安価で小型 (3 x 2 x 0.5 + インチ; 76 x 51 x 12 mm) です. 4mmドライブ は + 8mm同様にヘリカルスキャン (訳注: + VTRと同様の回転ヘッドを使う方式) + を使用しているという理由でヘッドの寿命は短いです. + + これらのドライブのデータスループットは + 150kB/s程度から最大で500kB/s程度の範囲です. データ容量は + 1.3GBから 2.0GBです. ハードウェア圧縮が多くのドライブで可能で, + およそ 2倍の容量になります. + マルチドライブテープライブラリユニットは1つの筐体に + 6ドライブを持つことができ自動的にテープを交換します. + ライブラリの容量は 240GBに達します.1つの例外です) + 送りだしリールと巻き取りリールの両方が + カートリッジの中にあります. + + + 4mmドライブは 8mmドライブ同様にヘリカルスキャンを使います. + ヘリカルスキャンの利点と欠点は 4mm ドライブ と 8mm + ドライブ共通です. + + テープの寿命は 2000 回のパスあるいは 100 + 回のフルバックアップ です. + + + + 8mm (Exabyte) + + 8mm テープは SCSI + テープドライブとして最もよく使われているもので, + データ交換用として最良の選択です. ほとんどのサイトには Exabyte + の 2GB 8mm テープドライブがあるでしょう (訳注: Unix + ワークステーションを何台も置いているようなサイトには 1 + 台くらいはあるというような意味です). 8mm + ドライブは信頼性が高く, 使いやすく, 静かです. + カートリッジは安価で小型です (4.8 x3.3 x 0.6 インチ; 122 x 84 + x 15 mm). 欠点は, テープとヘッドの相対的な速度が高速なために + 比較的ヘッドとテープの寿命が短いことです. + + データスループットは 250kB/s 程度から 500kB/s + 程度の範囲です. データ容量は 300MB から 7GB です. + ハードウェア圧縮が多くのドライブで可能で,およそ 2 + 倍の容量になります. 単一のユニットのドライブから, 1 + つの筐体に 6 台のドライブと 120 + 巻のテープを持ったマルチドライブテープライブラリまで + 利用することができます. ライブラリではテープはユニットにより + 自動的に交換されます. ライブラリの容量は 840GB + 以上に達します. + + データはヘリカルスキャンを使ってテープに記録されます. + ヘリカルスキャン方式ではヘッドはメディアに対してある傾き + (約6度) に配置されます. テープはヘッドのある円筒の周の + 270度にわたって接触します. テープが円筒面を走行する間, + 円筒は回転しています. この結果, + 高密度のデータのつまったトラックは, + 狭い間隔でテープの上端と下端の間を斜めに横切ります. + + + + 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 インチ幅のテープについては別に議論します. + テープライブラリやチェンジャはありません. + + データスループットは 150kB/s から 500kB/s の範囲です. + データ容量の範囲は 40MB から 15GB です. ハードウェア圧縮が + 最近の多くのドライブで使えるようになっています. QIC ドライブは + DAT ドライブに置き換えられつつあり, + あまり頻繁には利用されなくなっています. + + データは複数のトラックにわかれてテープに記録されます. + トラックはテープメディアの + 長さ方向の一端からもう一方の端までです. (訳注: 1トラックの + read/write が終わるとテープの 走行方向を反転させ次のトラックの + read/write を行います) トラックの数と, + それに対応するトラックの幅は テープの容量によって変わります. + すべてではありませんがほとんどの最近のドライブは + 少なくとも読み出しについては (場合によっては書き込みも) + 下位互換性があります. QIC + はデータの安全性についてはよいといわれています + (ヘリカルスキャンドライブに比べて機構は単純でより丈夫です). + + + テープは 5000回のバックアップで寿命となるでしょう. + + + + * ミニカートリッジ + + + + + + DLT + + DLTはここに示したドライブのタイプの中で + 最高速のデータ転送レートです. 1/2 インチ (12.5mm) + テープが単リールのカートリッジ (4 x 4 x 1 インチ; 100 x 100 x + 25 mm) に入っています. + カートリッジのひとつの側面全体がスイングゲートになっています. + ドライブの機構がこのゲートを開け, テープリーダを引き出します. + テープリーダには楕円形の穴があり, + ドライブがテープを引っ掛けるのに使います. + 巻き取りのためのリールはドライブの中にあります. + ここに挙げた他のカートリッジはすべて ( 9 + トラックテープはただ1つの例外です) + 送りだしリールと巻き取りリールの両方がカートリッジの中に + あります. + + データスループットは約1.5MB/sで, 4mm, 8mm, QIC + テープドライブの3倍です. データ容量は単一のドライブで 10GBから + 20GBの範囲です. + マルチテープチェンジャ,マルチテープドライブ,5から + 900巻のテープを1から20ドライブで扱う + マルチドライブテープライブラリがあり, 50GB から 9TB + の容量が得られます. + + データは ( QIC テープのように) + テープの走行方向と並行に複数あるトラックへ記録されます. 2 + つのトラックに同時書き込みを行います. Read/Write + ヘッドの寿命は比較的長いと言えます. + テープの走行が止まればヘッドと + テープの間の相対運動はありません. + + + + 新品のテープを最初に使う場合 + + 新品の完全な空テープを読もうとしたり書き込もうとすると処理 + は失敗するでしょう. + 次のようなコンソールメッセージが出るでしょう. + + st0(ncr1:4:0): NOT READY asc:4,1 +st0(ncr1:4:0): Logical unit is in process of becoming ready + + テープに識別ブロック (Identifire Block:block number 0) + がありません.QIC-525標準の採用されている + QICテープドライブのすべてで識別ブロックをテープに書きます. + 2つの解決方法があります. + + (訳注: 方法1)mt fsf 1 + によってテープドライブは識別ブロックをテープに書きます. + + (訳注: + 方法2)フロントパネルのボタンを押してテープをとりだします. + + + 再びテープを入れ,データをテープに &man.dump.8; します. + + &man.dump.8; はそのうちに DUMP: End of tape + detected と表示し, コンソールには + HARDWARE FAILURE info:280 + asc:80,96と表示されるでしょう. + + mt + rewindを使ってテープを巻戻します. + + この次からはテープの操作は成功するでしょう. + + + + + バックアッププログラム + + よく使われる3つのプログラムは &man.dump.8;, &man.tar.1;, + &man.cpio.1; です. + + + ダンプとリストア + + &man.dump.8; と &man.restore.8; は伝統的な + Unixのバックアッププログラムです. + これらはドライブのファイルシステム上のファイル, リンク, + ディレクトリをディスクブロックの集まりとして処理します. + &man.dump.8; + はデバイスやファイルシステム全体をバックアップし, + 一部分のバックアップや, &man.ln.1; によるソフトリンクや + 他のファイルシステムをマウントを行った, 1 + つ以上のファイルシステムにまたがる + ディレクトリツリーのバックアップはできません. &man.dump.8; + はファイルやディレクトリを構成する + データブロックをテープに書くだけで, + ファイルやディレクトリをテープに書くことはありません. + &man.dump.8; には初期の ATT UNIX のバージョン 6 (1975 + 年ごろ) に由来する癖が残っています. デフォルトのパラメタは 9 + トラックテープ (6250 bpi) + に適したものになっていて現在の高密度メディア (最大 62,182 + ftpi) に適していません. + 現在のテープドライブの容量を有効に利用するため, + デフォルト値をコマンドラインで置き換えなければなりません. + + + &man.rdump.8; と &man.rrestore.8; + は他のコンピュータに接続されているテープドライブに + ネットワーク経由でバックアップをします. + どちらのプログラムもリモートテープドライブにアクセスするために + &man.rcmd.3; と &man.ruserok.3; に依存しています. + このためユーザがバックアップを実行するためには + rhosts によるリモートアクセスが必要です. + &man.rdump.8; と &man.rrestore.8; + の引数はリモートコンピュータに適切なものを用います. + &man.rrestore.8; + はリモートコンピュータから使うのに適しています. (例えば + FreeBSD コンピュータより komodo という名前の + Sun に接続されている Exabyte テープドライブへ + /sbin/rdump 0dsbfu 54000 13000 126 komodo:/dev/nrst8 + /dev/rsd0a 2>&1 として + rdumpしたような場合の restoreに使います) + 警告: セキュリティは + rhostsの管理にかかっています. + あなたの状況を注意深く調べてください. + + + + Tar + + &man.tar.1; ATT Unix のバージョン 6 (1975ごろ) + にさかのぼる事ができます. &man.tar.1; + はファイルシステムと協調して機能し, + ファイルやディレクトリをテープに書きます. &man.tar.1; は + &man.cpio.1; + で使えるようなフルレンジのオプションは持ちませんが + &man.cpio.1; + で使うような奇妙なコマンドパイプラインは必要ありません. + + 大部分の &man.tar.1; + にはネットワーク経由のバックアップの機能はありませんが, + FreeBSD で使用されている GNU の &man.tar.1; は, + rdump + とおなじ構文でリモートデバイスを扱うことができます. komodo + というホスト名の Sun に繋いである Exabyte + のテープデバイスに対して &man.tar.1; を実行するには, + 次のようにします. + /usr/bin/tar cf komodo:/dev/nrst8 . + 2>&1 リモートデバイスをサポートしていない tar + を使用している場合は, パイプラインと &man.rsh.1; を使うことで, + リモートテープデバイスにデータを送る事ができます. + (コマンド使用例はまだです) + + + + Cpio + + &man.cpio.1; は本来, Unix + ファイルを磁気メディアで交換するためのプログラムです. + &man.cpio.1; はバイトスワッピング, + 多くの異なるアーカイブフォーマットの書き込みのオプション + (それ以外にも多数のオプションがあります)があり, + パイプで他のプログラムにデータを渡す事もできます. + この最後に挙げた特徴により, &man.cpio.1; + はインストールメディアについては優れた選択です. &man.cpio.1; + は STDIN からの入力でなければならず, + ディレクトリツリーの探索や + ファイルリストについての機能はありません. + + &man.cpio.1; + はネットワーク経由のバックアップの機能はありません. + リモートテープドライブにはパイプラインと &man.rsh.1; + を使って送る事ができます. (コマンド使用例はまだです) + + + + Pax + + &man.pax.1; は tar と + cpio に対する IEEE/POSIX の回答です. + 長年の間, 様々なバージョンの tar や + cpio は, + 互いにわずかながら非互換性を有していました. + 各々をしらみ潰しに標準化する代わりに, POSIX + は新しいアーカイブユーティリティを作ることにしました. + pax + は専用に開発された新しいフォーマットに加えて, いくつもの cpio + や tar のフォーマットの読み書きに対応しようと試みています. + コマンド群は tar よりも + cpio の方にいくぶん似ています. + + + + Amanda + + Amanda + (Advanced Maryland Network Disk Archiver) + は単一のプログラムではなくクライアント / + サーバ型のバックアップシステムです. Amanda サーバは, Amanda + クライアントであるネットワークで + サーバに接続された複数のコンピュータから + 一つのテープドライブへバックアップをおこないます. + このような場合の一般的な問題はいくつもの大容量の + ディスクからデータディレクトリをテープにバックアップするには + 時間がかかりすぎてしまうという事です. Amanda + はこの問題を解決します. Amanda + は同時に複数のファイルシステムのバックアップを おこなう時に + 「ホールディングディスク」を使う事ができます. + Amandaの設定ファイルに書いたすべてのファイルシステムの + フルバックアップを特定の間隔でとるために「アーカイブセット」 + と呼ばれるテープグループを作ります. + これには夜間に作られるすべてのファイルシステムの増分 + (あるいは差分として) のバックアップも含みます. + 障害の起きたファイルシステムの回復には最も新しい + フルバックアップと増分のバックアップが必要です. + + 設定ファイルでバックアップのコントロールと Amanda + によるネットワークトラフィック量を設定します. Amanda + はデータをテープに書くのにバックアッププログラムの + いずれかを使うでしょう. Amanda + はその一部分でもパッケージでも利用可能ですが, + デフォルトではインストールされません. + + + + 何もしない + + “何もしない” + というのはコンピュータのプログラムではありませんが, + バックアップの戦略として最も広く採用されている物です. + これには初期投資が必要ありません. + したがわなければならないバックアップスケジュールもありません. + ただ何もしないだけです. もしデータに何かが起きたら, + 苦笑いして耐えてください. + + あなたにとって時間やデータの価値が少ないか + あるいはまったくないのであれば “何もしない” + のはあなたのコンピュータに最も適した + バックアッププログラムでしょう. しかし注意してください. Unix + は便利なツールです. 6 ヶ月も使っていれば価値のあるファイルの + 山ができ上がっているでしょう. + + “何もしない” は + /usr/obj やその他の, + コンピュータによってつくり出された + ディレクトリツリーについては適切な方法です. + 一つの例はこのハンドブックのファイルで, これらは + SGML のファイルより生成された物です. + HTML + ファイルのバックアップを作る必要はありません. + SGML + のソースファイルは定期的にバックアップします. + + + + どのバックアッププログラムが最適でしょう? + + 定期的に &man.dump.8; しましょう. + Elizabeth D. Zwicky はここで検討したプログラムすべてについて + 拷問的なテストをおこないました. すべてのデータと + Unixファイルシステムの状態すべてを保存するには明らかに + &man.dump.8; でしょう. Elizabeth + は大きく変化に富んだ異常な状態 + (いくつかはあまり異常でもない状態のものもあります) + になっているファイルシステムで, + それぞれのプログラムでファイルシステムの + バックアップとリストアを行ってテストしました. + 特色のある状態には, ホールを持つファイル, + ホールとヌルブロックを持つファイル, + 奇妙な文字をファイル名に持つファイル, 読み出し不可, + 書き込み不可のファイル, デバイスファイル, + バックアップ中にファイルのサイズを変更する, + バックアップ中にファイルの作成/削除をおこなうなどがあります. + 彼女は1991年10月の LISA Vで結果の発表をしています.torture-testing Backup and Archive Programs を参照してください. + + + + 緊急時のリストア手順 + + + 災難の起きる前に + + 起き得るどのような災難に対しても以下の + 4ステップだけが必要な準備です. + + ステップ 1では, + ファイルシステムテーブル(/etc/fstab) + やブートメッセージで示されるすべてのディスクの + disklabelをそれぞれ2コピーづつプリント (例えば + disklabel sd0 | lpr を実行します) + します. + + + ステップ 2では, boot.flp と + fixit.flp + にそのシステムのすべてのデバイスドライバが + 含まれているか確認します. 最も簡単な確認の方法は, + フロッピーをドライブに入れてリブートし, + ブートメッセージを確認することです. + あなたのシステムのデバイスがすべて含まれ, 機能していれば, + step 3へ飛んでください. + + そうでないなら, + そのシステムのすべてのディスクをマウントでき, + テープドライブにもアクセスできる + 2種類のカスタムブートフロッピーディスクを作る必要があります. + これらのフロッピーには &man.fdisk.8;, &man.disklabel.8;, + &man.newfs.8;, &man.mount.8;, + と利用したいバックアッププログラムが + 入っていなければなりません. + これらのプログラムはスタティックリンクされた + プログラムである必要があります. &man.dump.8; + を使うのであればフロッピーに &man.restore.8; + を入れる必要があります. + + ステップ 3では, 通常の方法でバックアップを作ります. + 最新のバックアップの後でおこなわれた変更は + 回復することはできません. + バックアップテープにライトプロテクトをしてください. + + ステップ 4では, フロッピー + (boot.flp と + fixit.flp あるいはステップ + 2で作った2枚のカスタムブートフロッピーディスクです) + とバックアップテープのテストをします. + 手順のノートを作りましょう. + このノートはブートフロッピーディスク, + バックアップテープに入れておきプリントアウトしておきます. + あなたがリストアをおこなうような時は + おそらく錯乱状態でしょうからこのノートはバックアップを + 破壊してしまうようなことを防ぐのに役立つでしょう + (どのようにして破壊するって? tar xvf + /dev/rst0 とする替りに偶然 tar cvf + /dev/rst0 + とタイプしてバックアップテープに上書きしてしまうかも + しれません). + + 訳注: 上書きはライトプロテクトをしておけば防げますが, + なんらかの原因でプロテクトがはずれているかもしれません. + ちなみに訳者の経験から言えば上のようなミスタイプは + 結構起きます. + + 安全性を増すために, + 毎回ブートフロッピーディスクを作り, 2 + 巻のバックアップテープを取ります. + 一方を離れた場所に保管します. + 離れた場所は同じ建物の地下室ではいけません. + 世界貿易センタービルにあった数多くの会社は + 苦い経験よりこの教訓を得ました. + 離れた場所とはコンピュータやディスクドライブから + かなり離れていて物理的に分離されていなければなりません. + + ブートフロッピーディスクを作るスクリプトの一例 + + + /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 sd0 +./MAKEDEV sd1 +./MAKEDEV sd2 +./MAKEDEV st0 +./MAKEDEV pty0 +cd / + +# +# create minimum filesystem table 最小限のファイルシステムテーブル +# +cat > /mnt/etc/fstab < /mnt/etc/passwd < /mnt/etc/master.passwd < + + + + 災難の後に + + 重要な問題は, ハードウェアが生き残ったかどうかです. + 定期的なバックアップを取っていれば + ソフトウェアについて心配する必要はありません. + + ハードウェアがダメージを受けていたら, + 最初にそのダメージを受けた部品を交換してください. + + ハードウェアに問題がなければ, + フロッピーをチェックしてください. + カスタムブートフロッピーディスクを使っているのであれば + シングルユーザ(boot: プロンプトの出た時に + -s とタイプしてください) + でブートしてください. それから次の + 「ファイルシステムを1つずつ回復する」 + を読んでください. + + boot.flp と + fixit.flp + を使っているのであればこのまま読み続けてください. + boot.flp を入れてブートしてください. + 本来のインストールメニューが表示されるはずです. (ここで) + fixit XXXオプションを選びます. 指示の通り + fixit.flp を入れてください. + restore とその他の必要なプログラムは + /mnt2/standに置かれています. + + + ファイルシステムを一つずつ回復する + + 最初のディスクのrootパーティションを &man.mount.8; + (例えば mount /dev/sd0a /mnt のように) + マウントして見てください. + ディスクラベルが破壊されている場合は &man.disklabel.8; + を使ってあらかじめプリントしておいた通りに + パーティションを作り直しラベルをつけてセーブしてください. + &man.newfs.8; を使いファイルシステムを作り直します. + ルートパーティションを読み書き可能にマウント (mount + -u -o rw /mnt) しなおします. + バックアッププログラムとバックアップテープを使って + このファイルシステムのデータを回復します (例えば + restore vrf /dev/st0とします). + ファイルシステムをアンマウント (umount + /mntなど) して, + 障害を受けたファイルシステムそれぞれについて + 繰り返してください. + + システムが動き出したら, + 新しいテープにデータをバックアップしてください. + どのような理由で再び事故が起きたりデータが + 失われるかはわかりません. これに時間を費す事で, + 後々の災難から救われる事になります. + + + + * 災難対策をしていませんでした. + どうしたらいいでしょう? + + + + + + + + diff --git a/ja/handbook/basics/chapter.sgml b/ja/handbook/basics/chapter.sgml new file mode 100644 index 0000000000..762e0058ed --- /dev/null +++ b/ja/handbook/basics/chapter.sgml @@ -0,0 +1,152 @@ + + + + Unix の基礎知識 + + 訳: &a.jp.nakai;. + 12 October 1996. + + + オンラインマニュアル + + FreeBSD についてのもっとも包括的なドキュメントは + マニュアルページの形式になっているものです. + FreeBSD システム上のほとんどすべてのプログラムには基本的な + 操作方法とさまざまな引数を説明しているリファレンスマニュアル + がついています. これらのマニュアルは man + コマンドで見ることができます. man + コマンドの使い方は簡単です : + + &prompt.user; man コマンド名 + + + コマンド名 + のところには知りたいコマンドの名前を入れます. たとえば, + ls コマンドについて知りたい場合には + 次のように入力します: + + &prompt.user; man ls + + オンラインマニュアルは 数字のついたセクションに + 分けられています : + + + + ユーザコマンド + + + + システムコールとエラー番号 + + + + C のライブラリ関数 + + + + デバイスドライバ + + + + ファイル形式 + + + + ゲームとほかのお楽しみ + + + + そのほかの情報 + + + + システムの管理と操作のためのコマンド + + + + 場合によっては, 同じことがらでもオンラインマニュアルでは + 複数のセクションに記載されていることがあります. たとえば, + chmod ユーザコマンドと + chmod() + システムコールがあります. この場合, man + コマンドでどちらを参照したいかをセクションで指定することが + できます : + + &prompt.user; man 1 chmod + + とすればユーザコマンドとしての chmod + のマニュアルページが表示されます. オンラインマニュアル上の特定の + セクションへの参照は通常, 書かれているドキュメントの + 括弧の中に示されています. ですから, &man.chmod.1; は + chmod + ユーザコマンドを, &man.chmod.2; + はシステムコールの方を示しています. + + コマンドの名前を知っていて, 単純にその使い方が分かる場合は + よいのですが, もしコマンドの名前を思い出せない場合には + どうしたらいいのでしょう? man に + スイッチをつければ, + コマンドデスクリプション中のキーワードから検索することができます + : + + &prompt.user; man -k mail + + このコマンドを使うことで, + “mail”というキーワードを含むコマンドの + 一覧を参照することができます. 実を言うと + apropos + コマンドを使うのと機能的には同じです. + + それから, /usr/bin + にある優れたコマンドすべてを目にしても, + それらの大半がどういった働きをするのか + まったく見当もつかないときは どうしたらよいでしょう. 単純に, + + &prompt.user; cd /usr/bin; man -f * + + あるいは同じ働きをする + + &prompt.user; cd /usr/bin; whatis * + + としましょう. + + + + GNU の Info ファイル + + FreeBSD には Free Software Foundation (FSF) + によるアプリケーションや + ユーティリティがたくさんあります. こうしたプログラムには + manページに加えて, “info” ファイルと呼ばれる + ハイパーテキスト形式のドキュメントが付属になっていて, + info コマンドや, emacs + をインストールしているなら emacs の info + モードで見ることができます. + + &man.info.1; コマンドを使うには, 単にこう入力します. + + &prompt.user; info + + おおまかなイントロダクションを + 見るには, h と入力します. + クイックコマンドリファレンスは ? + とします. + + + + diff --git a/ja/handbook/bibliography/chapter.sgml b/ja/handbook/bibliography/chapter.sgml new file mode 100644 index 0000000000..0d6c15be74 --- /dev/null +++ b/ja/handbook/bibliography/chapter.sgml @@ -0,0 +1,638 @@ + + + + 参考図書 + + 訳: &a.jp.nakai;. + 12 October 1996. + + FreeBSD オペレーティングシステムの個々の部分については + マニュアルページで定義のような説明がなされていますが, + それらにはどうやってその部分どうしをつなぎあわせて + オペレーティングシステム全体を円滑に動作させるかを + 説明していないという欠点がよく指摘されます. + それを補うためには UNIX システム管理についてのよい本や, + すぐれた利用者向けのマニュアルが欠かせません. + + + FreeBSDのためだけの書籍 & 雑誌 + + 非英語文化圏の 書籍 & 雑誌: + + + + + FreeBSD 入門與應用 (in Chinese). + + + + 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 インストール & 活用マニュアル, + published by + 毎日コミュニケーションズ. + + + + 英語の書籍 & 雑誌: + + + + + The Complete FreeBSD, + published by + Walnut Creek CDROM. + + + + + + 利用者向けのガイド + + + + 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 + + + + + Ohio State University has written + a + UNIX Introductory Course which is available online + in HTML and postscript format. + + + + + FreeBSD 友の会 jpman プロジェクト. FreeBSD User's + Reference Manual (日本語訳). 毎日コミュニケーションズ + , 1998. ISBN4-8399-0088-4 P3800E. + + + + + + 管理者向けのガイド + + + + Albitz, Paul and Liu, Cricket. DNS and + BIND, 2nd Ed. + O'Reilly & Associates, Inc., 1997. + ISBN ISBN 1-56592-236-0 + (訳注: 邦訳は以下のものが出版されています. + 高田広章 / 小島育夫 監訳 , 小舘光正 訳. + DNS & BIND 改訂版. + オライリー・ジャパン, 1998. + ISBN 4-900900-42-7) + + + + 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章が「リファレンス」 + に対応します.) + ただし2分冊となり,原著のリファレンスの部分に当たる Volume2 + は 1998年3月の時点では出版されていません. + 中村 素典 監訳, 鈴木 克彦 訳. + 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. + O'Reilly & Associates, Inc., 1992. + ISBN 0-937175-82-X + (訳注: 邦訳は以下のものが出版されています. + 村井純 監訳. + TCP/IP ネットワーク管理. + インターナショナル・トムソン・パブリッシング・ジャパン, 1994. + ISBN 4-900718-01-7) + + + + Nemeth, Evi. UNIX System Administration + Handbook. 2nd Ed. Prentice Hall, 1995. + ISBN 0131510517 + (訳注: 邦訳は以下のものが出版されています. + 井上尚司監訳. + UNIX システム管理入門. + ソフトバンク, 1992. + ISBN 4-89052-362-6 + 原本は第2版だが, 訳出は第1版のみ) + + + + Stern, Hal Managing NFS and NIS + O'Reilly & Associates, Inc., 1991. + ISBN 0-937175-75-7 + + + + + FreeBSD 友の会 jpman プロジェクト. FreeBSD System + Administrator's Manual (日本語訳). + 毎日コミュニケーションズ, + 1998. ISBN4-8399-0109-0 P3300E. + + + + + + プログラマ向けのガイド + + + + Asente, Paul. X Window System + Toolkit. Digital Press. + ISBN 1-55558-051-3 + + + + 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) + + + + 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) + + + + Wells, Bill. “Writing Serial Drivers for UNIX”. + Dr. Dobb's Journal. 19(15), December + 1994. pp68-71, 97-99. + + + + + + オペレーティングシステム内部 + + + + 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 + + + + 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 + + + + Vahalia, Uresh. + UNIX Internals -- The New Frontiers. + Prentice Hall, 1996. + ISBN 0-13-101908-2 + + + + Wright, Gary R. and W. Richard Stevens. + TCP/IP Illustrated, Volume 2: + The Implementation. + Reading, Mass. : Addison-Wesley, 1995. + ISBN 0-201-63354-X + + + + + + セキュリティの参考資料 + + + + 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 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 + + + + + + ハードウェアの参考資料 + + + + 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. 3rd ed. Reading, Mass. : + Addison-Wesley, 1995. ISBN + 0-201-40993-3 + + + + Van Gilluwe, Frank. The Undocumented PC. + Reading, Mass: Addison-Wesley Pub. Co., 1994. + ISBN 0-201-62277-7 + + + + + + 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 Dictonary, + 3rd edition. MIT Press, 1996. + ISBN 0-262-68092-0 + Also known as the + 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年. + + + ftp://ftp.freebsd.org/pub/FreeBSD/FreeBSD-current/src/share/misc/bsd-family-tree + または, FreeBSD-current マシンの + + ローカルファイル. + + + + 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 + ファイルが含まれています. + + + + + + 雑誌とジャーナル + + + + + 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 + + + + + + diff --git a/ja/handbook/chapter.decl b/ja/handbook/chapter.decl new file mode 100644 index 0000000000..2762efb110 --- /dev/null +++ b/ja/handbook/chapter.decl @@ -0,0 +1,9 @@ + + + diff --git a/ja/handbook/chapters.ent b/ja/handbook/chapters.ent new file mode 100644 index 0000000000..fa8a1e0cce --- /dev/null +++ b/ja/handbook/chapters.ent @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ja/handbook/contrib/chapter.sgml b/ja/handbook/contrib/chapter.sgml new file mode 100644 index 0000000000..9777941552 --- /dev/null +++ b/ja/handbook/contrib/chapter.sgml @@ -0,0 +1,10027 @@ + + + + FreeBSD への貢献 + + 原作: &a.jkh;. + + 訳: &a.jp.iwasaki;. + 27 April 1997. + + あなたも何か FreeBSD のために貢献したくなりましたか? + 素晴らしい! 私たちは常に支援を受ける用意がありますし, FreeBSD + は生き残るためにユー + ザベースの貢献に頼るようなシステムの一つです. + あなたの貢献は 感謝されるだけではなく, FreeBSD + が成長し続けるために極めて重要なものな のです! + + 一部の人達が言っているのとは逆に, + 貢献を受け付けてもらうために腕利 きのプログラマーになるとか + FreeBSD コアチームの人と親友になる必要はあ りません. FreeBSD + プロジェクトの開発は, 多くのそして益々増加する世界中 + の貢献者達によってなされており, 彼らの年齢, + 専門技術分野は多岐に渡りま す. + そして手の空いている人よりも + 成されるべき仕事の方が常に多いのです. + + FreeBSD + プロジェクトがカーネルや散在しているユーティリティよりも, + オペレーティングシステム環境 (と, そのインストール) + に対して責任を持つ ようになったため, + 私たちのTODOリストはドキュメンテーション, + ベータテ スト, + 高度に専門化されたタイプのカーネル開発の好例を紹介するなど非常に + 広い範囲のタスクに渡ります. あなたの技能レベルに関わらず, + プロジェクト を支援できることが必ず何かあります! + + FreeBSD + 関連の事業に従事している商業団体が私たちにコンタクトすること + も歓迎します. あなたの製品を (FreeBSD 上で) 動作させるには, + 特別な拡張 が必要ではありませんか? + あまりにも風変わりな要求でなければ, それを受け + 入れる用意が私たちにあるとわかるはずです. + 付加価値のある製品ですか? 私たちに知らせてください! 多分私たちは, + ある 面において共同して作業をすることができるでしょう. + フリーソフトウェア界 は, + ソフトウェアがそのライフサイクルを通してどのように開発され, + 売られ, 保守されていくかについて, 既存の仮説に挑戦しています. + 少なくとももう一 + 度考慮してみることを私たちは強くお奨めします. + + + 何が必要? + + 次のタスクとサブプロジェクトのリストは, コアチームの色々な + TODO リ + ストと最近2ヶ月で集めたユーザリクエストを合わせたものです. + 可能なとこ ろでは, 緊急度によってタスクがランクづけされています. + もしここにあるタ スクの実行に興味があるのでしたら, + コーディネータの名前をクリックしてメー ルを送ってください. + もしコーディネータが決まっていなければ, あなたがボ + ランティアしてみませんか? + + + 優先度の高いタスク + + 次のタスクは通常, ひどく壊れているとか, + とても必要とされている何かを 表しているため, + 急務と考えられています: + + + + 第3ステージ・ブート問題. 全体コーディネーション: + &a.hackers; + + + + 第3ステージがディスクの BIOS + ジオメトリの正確なマッピングを提供 できるように WinNT + コンパチブルなドライブの追跡をおこなう. + + + + + + ファイルシステム問題. 全体コーディネーション: + &a.fs; + + + + nullfs ファイルシステムコードのクリーンアップと + ドキュメンテーション. コーディネータ: &a.gibbs; + + + + union ファイルシステムの修正. コーディネータ: + &a.dg; + + + + + + カーネル vm86 及びユーザ vm86 サポート実装. + コーディネータ: &a.jlemon; + + + + Int13 vm86 ディスクドライバの実装. コーディネータ: + &a.hackers; + + + + カーネル問題. 全体コーディネーション: + &a.hackers; + + + + すべての現存ドライバの eisaconf 変換の達成. + + + + すべての割り込みルーチンを + ユニット番号を使う代わりに (void *) を + 取るように変更. + + + + EISA/PCI/ISAの割り込み登録コードの統合. + + + + PCI/EISA/ISA デバイス検出を bt742a.c(WIP) + のようなドライバから分割. + + + + syscons の ALT-Fn/vt 切替えによるハングの修正. + コーディネータ: &a.sos; + + + + 3c509と3c590 ドライバの統合 (本質的には PCI + デバイス検出の ep.c への提供). + + + + + + + + 優先度がさほど高くないタスク + + 次のタスクはやっておくべきではありますが, + 特にさし迫っているわけで はありません: + + + + MCA サポート? + これは続けるにしても止めてしまうにしても結論を出 + すべき. + + + + 完全な KLD ベースのドライバのサポート / + コンフィグレーションマネー ジャ. + + + + ld なしですべての LKM + の登録をおこなう方法を考案する. これは + カーネル中にある種のシンボルテーブルを + 持たせることを意味します. + + + + 穏やかな方法でハードウェアを検知する + コンフィグレーションマネージャ の作成 + (第3ステージ・ブートの中に?). ハードウェアが必要とする + KLD だけを 残す等. + + + + + + PCMCIA/PCCARD. コーディネータ: &a.msmith; と &a.phk; + + + + ドキュメンテーション! + + + + pcic ドライバの信頼性のある操作 (テスト要). + + + + sio.c + のリコグナイザとハンドラ (ほぼ完了). + + + + ed.c のリコグナイザとハンドラ + (ほぼ完了). + + + + ep.c のリコグナイザとハンドラ + (ほぼ完了). + + + + User-mode のリコグナイザとハンドラ + (部分的に完了). + + + + + + 先進的なパワーマネージメント. コーディネータ: &a.nate; + と &a.phk; + + + + APM サブドライバ (ほぼ完了). + + + + IDE/ATA ディスクサブドライバ (部分的に完了). + + + + syscons/pcvt サブドライバ. + + + + PCMCIA/PCCARD ドライバ群との統合 (サスペンド / + レジューム). + + + + + + + + 優先度の低いタスク + + 次のタスクは全くのあら隠し, + または誰もすぐにおこないそうもない投資 + のような仕事を表します: + + 最初の20項目は Terry Lambert + terry@lambert.org からのもので す. + + + + プロセッサ上で V86 モードを使用して, + プロテクトモードからの BIOS コールができるようにし, + マップされた割り込み IPC 機構を経由してプロテ + クトモードの呼出し元に結果を返すようにする. + + + + DOS と同じように, + 実際の下位ハードウェアから独立になるよう, BIOS + コール機構を使用したカーネルの中に組み込まれたドライバ. + これは DOS ベー スのローダプログラムで BSD + がロードされる前に DOS にロードされていたネッ + トワークドライバや ASPI ドライバも含みます. + このことは潜在的なポーリン グ, + つまりプロテクトモードカーネルによる V86 マシンのための + DOS-not-busy 割り込みの生成を意味します. + + + + ハードウェア固有のプロテクトモードの + ドライバがロードされて活性化 された後で, + デフォルトのカーネル実行形式の中の, そのようなドライバデー + タとテキストエリアを追跡して, + カーネルアドレス空間のその部分が回復され + るようにするためのイメージ形式. これは個々の BIOS + ベースのドライバを互いに分離することを含みます. なぜ + なら全く実行しないよりも, すべてのケースにおいて BIOS + ベースのドライバ と共に実行した方が良いためです. + + + + バスインタフェース機構の抽象化. 現在のところ, PCMCIA, + EISA そし て PCI バスはブリッジで ISA + バスに接続されていると仮定しています. こう + いった仮定はおこなうべきではありません. + + + + パワーマネージメントイベント, カードの挿入, 取り出し, + そしてバス (PNPISA と PCMCIA とのブリッジチップ) + 対カードのレベルのイベント管理を 含む PNP + イベントを解釈するコンフィグレーションマネージャ. + + + + 固定デバイスによる他の再割当可・不可の + デバイス空間リソースの使用 と衝突しない, + 再割当可能なアドレスの割り当てのためのトポロジカルソート + 機構. + + + + ハードウェアサービス登録のための登録ベースの機構. + 特にタイマ, サウンドおよび他の + システムクリティカルなサービス供給源のためのデバイス + 中心の登録機構. + 単一の独立していないサービス供給源の一つの例として + Timer2, Timer0 + そしてスピーカサービスを考慮する必要があります. + + + + ネットワークカードと一緒に提供される ODI + カードドライバを使用で きるようにする, NetWare サーバ + (プロテクトモードの ODI ドライバ) ロー ダとサブサービス. + NDIS ドライバと NetWare の SCSI ドライバについても同 + 様. + + + + 前のリビジョンの FreeBSD マシンではなく, Linux + マシンで動作する 「アップグレード + システム」オプション. + + + + 移植を簡単にするためと, X, ThinkPad, PS/2マウス, LED, + コンソール スイッチング, しつこい NumLock + などの問題を全部一度に片付けるためのコ + ンソールドライバの抽象レイヤへの分割. + + + + 機会が許したら, + 他の外部ドライバのための他のカーネルのエミュレー + ション環境. SCO と Solaris は UnixWare + などに続く良い候補です. + + + + 異なるアーキテクチャのバイナリの実行のための + プロセッサエミュレーション環境. + これはシステムコールインタフェースがあまり変わらなければ, + 思ったより簡単です. + + + + 商用のストリームドライバを使用可能にするための + ストリーム機構. + + + + カーネルのマルチスレッド化 + (カーネルのプリエンプションが必要). + + + + カーネルのプリエンプション付き対称マルチプロセッシング + (カーネル のプリエンプションが必要). + + + + ポータブルコンピュータのサポートにおける協調の試み. + これは PCMCIA + ブリッジング規則と電源管理イベント処理の変更により, いく + らかは処理できます. しかし, + 内蔵ディスプレイと外部ディスプレイの検出, この 2 + 種類のディスプレイがあるという事実に基づく + 異なる解像度の選択, マシンがドックにある場合には + ディスクのモータ停止を防止すること, マシンの + ブート能力に影響を与えずにドックベースのカードの消滅を + 可能にすること (PCMCIA と同じ問題) + などの問題があります. + + + + マルチプラットフォームへの移植のための + ソースツリーの再組織化. + + + + make + worldできちんと「世界を創造する」 + ができるようにする. (もしmake + regress(訳注: 後退する)と呼び方が適当であれば, + そのように 名前を変える) + + + + 最小必要メモリ 4MB 化 (もっと小さければなお良し!). + + + + + + もっと簡単なタスク + + 上のセクションで挙げたタスクは膨大な時間の投資または + FreeBSD のカーネルに関する深い知識を必要とします + (もしくはそのどちらも). しかしながら, + "週末ハッカー"やプログラミングのスキルを持 + たない人々に適した立派なタスクも数多くあります. + + + + FreeBSD-current を運用しており, + 状態の良いインターネット接続があ るならば, current.freebsd.org + という一日に一回フルリリースを行っている マシンがあります + — 時おり最新のリリースをそこからインストールし, その + 過程で何か問題があるなら報告して下さい. + + + + freebsd-bugs + メーリングリストを読んでください. そこではあなたが建 + 設的なコメントを付けたりテストできるパッチが + 提供されているような問題がある かもしれません. + もしくはそれらの問題の一つをあなた自身で修正することさえ + できるかもしれません. + + + + 定期的に FAQ とハンドブックを通して読んでみてください. + もしまずい説明や古い事柄や完全に間違っていることなどが + あれば我々に しらせて下さい. + さらに良いのは我々に修正案を送ることです (SGML + は学ぶのにそれほど難しくありませんが, + プレインテキストでも問題は ありません). + + + + (もしまだないならば) FreeBSD + のドキュメントを自分の母国語に翻訳 + するのを手伝ってください — + 作業している人がいるかどうか &a.doc; にメールを + 送って聞くだけです. とはいっても, + そうすることによってあなたが全ての FreeBSD + ドキュメントの翻訳に携わるように + なるというわけではないですから ね — 実際, + もっとも翻訳が必要とされているドキュメントはインストール方 + 法です. + + + + たまに(もしくは定期的に) freebsd-questions + メーリングリストや + comp.unix.bsd.freebsd.misc + を読んでください. これは, あなたの持ってい + る専門知識を共有したり誰かが抱えている問題を + 解決するのに非常に有効な ものになり得ることです. + 時にはあなた自身で新しいことを学ぶことさえ + できるかもしれません. + これらのフォーラムはやるべきことのアイディア + の源にもなり得るのです. + + + + -current に正しく当てられるがしばらく経っても(通常は + 2, 3 週間) -stable + に取り込まれてないようなバグフィックスがあるならば + コミッターに 丁寧に思い出させてください. + + + + 寄贈ソフトウェアをソースツリーの + src/contrib + に移動させてください. + + + + src/contrib + 以下のコードが最新のものであるか確認してください. + + + + 2000 年問題に関するバグを探してください(そして, + 見つけたら修正してください!). + + + + ソースツリー全体(もしくはその一部)を, + 警告を詳細に報告するようにして構築してみてください. + そして警告が出ないようにしてください. + + + + ports で, gets() を使っているとか malloc.h + をインクルードしている + などといった警告が出ないようにしてください. + + + + もしなんらかの ports に関わっているなら, + あなたのパッチを作者に フィードバックしてください + (次のバージョンが出た時にあなたが楽になります). + + + + このリストに追加するタスクを提案して下さい! + + + + + + + 貢献の仕方 + + 一般的に, システムへの貢献は次の 6 + つのカテゴリの1つ以上に分類されます: + + + バグ報告と一般的な論評 + + 報告するべきバグがあったり, 提案したいことがあれば: + + 一般的な + 技術的関心事に関するアイデアや提案は &a.hackers; + へメールしてください. 同様に, このような事柄に興味のある + (そして膨大なメール! に耐えられる) 人は, + &a.majordomo; へメールを送って hackers + メーリングリストに参加すると良いでしょう. 情報については + メーリングリスト + を参照してください. + + バグを発見したり変更を送付しようとしている場合は + &man.send-pr.1; プログラムか WEB ベースの + send-pr を使用して報告してください. + バグレポートの各項目を埋めるようにしてください. 65KB + を超えるのでなければ, レポート中に直接 + パッチを入れてくださって結構です. 20KB を超える場合は, + それらを compress して &man.uuencode.1; + することも検討してください. とても大きくなる場合は + ftp.freebsd.org:/pub/FreeBSD/incoming/ + を利用してください. + + + レポートがファイリングされれば, バグ報告の確認と + トラッキング番号をメールで受け取るはずです. + このトラッキング番号を覚えておき, 問題に関する詳細情報を + bug-followup@FreeBSD.ORG に + メールで送って更新できるようにしてください. 例えば + "Re: kern/3377" のように, + この番号をサブジェクト行に使用してください. + すべてのバグレポートの追加情報は, + この方法で送付されなければいけません. + + もしタイムリに (あなたの電子メール接続形態にもよりますが, + 3日から 1週間) 確認を受けとれないとか, 何らかの理由で + &man.send-pr.1; コマンドが 使用できない場合には, &a.bugs; + へメールを送り, 誰か代りにバグ報告を + 送付してもらうようたずねてください. + + + + 文書の変更 + + 文書の変更は &a.doc; が監督しています. バグ報告と一般的な論評 + に記述されているように send-pr + コマンドを使用して, 提案や変更 + (どんな些細なものでも歓迎します!) を送ってください. + + + + 現存のソースコードの変更 + + 現存のソースコードへの追加または変更は, + いくらかトリッキーな仕事で あり, core の FreeBSD + 開発の現状にあなたがどれだけ通じているかに大 きく依存します. + “FreeBSD-current”として知られる FreeBSD の特別な + 継続的リリースがあります. FreeBSD-current + は開発者の積極的な活動の 便宜のために, + 色々な方法で利用可能になっています. FreeBSD-current + の入手と使用方法についての詳しい情報については 最新の FreeBSD を追いかける + を参照してください. + + 不幸にして古いソースをもとに仕事をすることは, + 時々あなたの変更が時 代遅れ, または FreeBSD + への簡単な再統合に合わなくなっていることを意 味します. + システムの現状に関する議論がおこなわれている &a.announce; と + &a.current; へ参加することで, + この可能性を最小限にすることができます. + + 完全な最新のソースを変更のベースにできることが + 確実になったと仮定し て, 次のステップは FreeBSD + の保守担当者へ送る差分ファイルの生成です. これは &man.diff.1; + コマンドを使用しておこないますが, “context + diff”形式が好まれるようです. 例えば: + + &prompt.user; diff -c oldfile newfile + + または + + &prompt.user; diff -c -r olddir newdir + + これで指定されたソースファイルまたはディレクトリ階層に + 対するコンテ キスト形式の差分が生成されます. 詳しい説明は + &man.diff.1; のマ ニュアルページを参照してください. + + 差分ファイル (&man.patch.1; コマンドでテストできます) + を作ったら, それらを FreeBSD + に含めてもらうようメールで送ってください. バグ報告と一般的な論評 + に記述されているように &man.send-pr.1; + コマンドを使用してください. 差分ファイルだけを &a.hackers; + へ送ってはいけません. 途方にくれてしまいます! + 私たちは多忙なので, あなたの提案に大変感謝します + (これはボランティアのプロジェクトです!). + すぐに取りかかることはできませんが, 処理されるまでは ちゃんと + pr データベースに残っています. + + あなたがそうした方がいいと思う場合 (例えば, + ファイルの追加, 削除または名称変更など), 変更を + tar ファイルにまとめ, &man.uuencode.1; + プログラムにかけてください. Shar + アーカイブも歓迎します. + + 例えばあなたがそれ自身のさらなる配布を管理する + コピーライト問題を良 く分かっていないとか, + 単に厳しいレビューをおこなっておらず, リリース + する準備ができていないなど, + あなたの変更が潜在的に不安定な性質をも つものである場合, + &man.send-pr.1; で送付するよりむしろ &a.core; + へ直接送ってください. コアチームメーリングリスト宛のメールは, + 日々の仕 事のほとんどを FreeBSD でおこなっている人たちの, + より小さなグルー プに届きます. + このグループもまたとても忙しい + ことに注意し て, 本当に必要な場合にコアチームの彼らにメールを + 送るだけにしてください. + + コーディングスタイルに関する情報は man 9 + intro および man 9 style + を参照してください. コードを提出する前には, + 少なくともこの情報を意識しておいてくださるようお願いします. + + + + + 新たなコードやメジャーな付加価値の高いパッケージ + + 重要な大きい仕事の寄贈や, 重要な新しいフィーチャーを + FreeBSD に追加 する稀な場合には, 変更点を tar/uuencode + したファイルにして送るか, それらを私たちの ftp サイト + ftp://ftp.FreeBSD.ORG/pub/FreeBSD/incoming + へアップロードす ることのどちらかが通常必要になります. + + 大量のコードを伴った仕事の場合, + コピーライトの神経過敏な問題が常に 出てきます. FreeBSD + に含めるコードのコピーライトとして受け入れるこ とができるのは, + 以下の二つです: + + + + BSD コピーライト. + このコピーライトは“権利に縛られない”性格 + と商用企業にとって一般的な魅力をもつために最も好まれま す. + FreeBSD プロジェクトは商用利用を阻んだりせず, 何かを + FreeBSD + へ投資する気になった商業関係者による参加を積極的に奨励 + します. + + + + GNU一般公有使用許諾, または“GPL”. + このライセンスはコード + を商用目的に使用する場合に余分な努力が求められるため, + 私たち にあまり評判が良いというわけではありません. しかし, + 私たちは 既に GPL 下の高品質なコード (コンパイラ, + アセンブラ, テキスト フォーマッタ等) の提供を受けており, + 私たちは現在それを必要と しています. そのため, + このライセンスによる新たな貢献を拒絶す + るというのは愚かなことでしょう. GPL + 下のコードはソースツリー の別の部分, 現在のところ + /sys/gnu か + /usr/src/gnu に入っています. + そのため, GPL が問題と なるような人は, + 誰でも簡単にそれとわかるようになっています. + + + + これ以外のタイプのコピーライトによる寄贈は, FreeBSD + へ含めることを 考慮する前に, + 注意深いレビューを受けなければなりません. 作者が独自 + のチャネルを通して配布しており, + そのような変更をおこなうことを常に 奨励している場合でも, + 特に限定的な商用のコピーライトが適用される寄 + 贈は一般に拒否されます. + + あなたの作品に “BSD-スタイル” + のコピーライトを付けるには, 保護した + いソースコードファイルすべての一番最初に + 以下のテキストを入れて, %% + の間を適切な情報に置き換えください. + + +Copyright (c) %%適切な年%% + %%あなたの名前%%, %%あなたの州%% %%郵便番号%%. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer as + the first lines of this file unmodified. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY %%あなたの名前%% ``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 %%あなたの名前%% 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 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + $Id$ + + 便宜をはかるため, + このテキストのコピーは次の場所に置いてあります. + /usr/share/examples/etc/bsd-style-copyright. + + + (訳注: 以下は神田敏広氏より寄贈された bsd-style-copyright + の日本語訳です. + ソースファイルに含めるものは原文の方であることに注意して + ご利用ください. また, 原文との間に趣旨の差異が生じた場合, + 原文の内容が FreeBSD プロジェクトの + 意思であるものとします.) + + +Copyright (C) [年] + [あなたの名前] All rights reserved. + +ソースとバイナリ形式の再配布および使用は, 変更の有無にかかわらず以下の +条件を満たす場合に限り許可される: +1. ソースコードの再配布は, 上記の著作権表示・この条件のリスト・下記の + 否認声明文を保持しなければならない. + +2. バイナリ形式の再配布は, 上記の著作権表示・この条件のリスト・下記の + 否認声明文を, 配布物と共に提供される文書および/または他の資料の中に + 含めなければならない. + +(訳注:ここから「否認声明文」です) + +このソフトウェアは[あなたの名前]および貢献者によって ``あるがままの状態'' +で提供され, 商品性と特定の目的に対する適合性についての暗黙の保証に留ま +らず, いかなる明示および暗黙の保証を認めない. [あなたの名前]および貢献 +者は, あらゆる直接的・間接的・偶発的・特殊的・典型的・必然的な損害 (代 +替製品または代替サービスの獲得費; 効用・データ・利益の喪失; または業務 +中断を含み, またそれだけに留まらない損害) に対して, たとえどのようにし +て生じたとしても, そしてこのソフトウェアの使用によってどのようにであれ +生じる, 契約上であろうと, 厳密な責任内であろうと, あるいは不正行為 (過 +失やそうでない場合を含む) における場合であろうとも, いかなる責任論上も, +たとえそのような損害の可能性が予見されていたとしても, 一切の責任を持た +ない. + +翻訳: 神田敏広 +御協力 (五十音順・敬称略): + 池田研二, 内川 喜章, 藤村 英治, むらたしゅういちろう + 杢野 雅一, 横田@宇都宮 + + + + + 自分で port を作る + + 原作: &a.jkh;, &a.gpalmer;, &a.asami;, + &a.obrien; and &a.hoek;. 28 August 1996. + + 訳: &a.jp.simokawa;, &a.asami;. + 10 November 1996. + + 自分で port を作ることに興味がありますか, すばらしい! + + これから, FreeBSD 用のportを作る際の, + いくつかのガイドラインを 説明します. + 実際にportをコンパイルするときのほとんどの仕事は + /usr/share/mk/bsd.port.mk + というファイルでおこないます. + Portsコレクションについてのさらに細かい内部の働きについては, + そちらの ファイルを参照してください. + これにはコメントが細かく書いてありますので, Makefile + を読むのにあまり慣れていない人でも, 得るものはとても大きいで + しょう. + + + ここでは, 変更可能な変数の一部についてのみ記述しています. + ほとんどの変数はbsd.port.mk + の始めに記述があります. + また, このファイルは非標準のタブの設定になっています. + EmacsVim + はファイルのロード時にこれを認識しますが, + viexでは, + ファイルをロードしたら :set tabstop=4 + のようにして正しい値を設定する + ことができます. + + + + 3分porting + + この節では, 簡単なportの方法について説明します. + 多くの場合これ では不十分ですが, + まあうまくいくかどうか試してみて損はないでしょ う. + + まず, 元のtarファイルをDISTDIRに置きます. + デフォルトは/usr/ports/distfilesです. + + + 以下では, + ソフトウェアはそのままコンパイルされるとします. つまり, + FreeBSDのマシンで動かすために, 変更がまったく必要ない + とします. + もしなにか変更が必要な場合には次の節も参照する必要 + があります. + + + + <filename>Makefile</filename> の作成 + + 最小限のMakefile + は次のようなものです: + + +# New ports collection makefile for: oneko +# Version required: 1.1b +# Date created: 5 December 1994 +# Whom: asami +# +# $Id$ +# + +DISTNAME= oneko-1.1b +CATEGORIES= games +MASTER_SITES= ftp://ftp.cs.columbia.edu/archives/X11R5/contrib/ + +MAINTAINER= asami@FreeBSD.ORG + +MAN1= oneko.1 +MANCOMPRESSED= yes +USE_IMAKE= yes + +.include <bsd.port.mk> + + おわかりになりますでしょうか. + $Id$があ る行の内容については, + 気にしないでください. これはこのファイル + がportsツリーに書き込まれるときにCVSによって自動的に書 + き込まれます. もっと詳しい例が見たければ, Makefileのお手本 + の節をご覧ください. + + + + Package記述ファイルの作成 + + どのようなportでも, packageにするしないに関わらず, 3つ + の記述ファイルが必要です. + pkgサブディレクトリにある, + COMMENT, DESCR, + それに PLISTです. + + + <filename>COMMENT</filename> + + これには, そのportについての説明を1行で書きます. + Package の名前, バージョン番号等は + 含めないでください. たとえば, + こんな具合です: + + +A cat chasing a mouse all over the screen. + + + + <filename>DESCR</filename> + + これは, そのソフトウェアについての, + すこし長い説明を記述します. その port + が何をするのかについての数段落程度の + 簡潔な解説があれば十分です. + このファイルはマニュアルでもなければ, + 使用方法やコンパイル方法についての細かい + 説明書でもありません. 特に, + READMEファイル manpage + をコピーしようとしてしている場合には + 注意してください. これらは多くの場合, + そのポートの簡潔な説明に なっていなかったり, + 扱いにくい形式(manpage の場合, + 行を揃えるために空白が調整されます)になっていたりします. + もしこのソフトウエアに公式の WWW のホームページがあれば, + ここに書いて下さい. + + このファイルの最後にあなたの名前を書くことが + 推奨されています. たとえば, こんな具合です. + + +This is a port of oneko, in which a cat chases a poor mouse all over +the screen. + : +(うんぬん.) + +http://www.oneko.org/ + +- Satoshi +asami@cs.berkeley.edu + + + + <filename>PLIST</filename> + + このファイルには, + このportによってインストールされるファ + イルが列挙されます. このファイルはpackageを作る際のリス + トとして使われるため, `packing list' とも呼ばれます. + ここ に書かれているファイル名は, + インストール時のプレフィックス (普通は + /usr/local か + /usr/X11R6) からの 相対パスです. + MANn + 変数を使用する場合(使用することが推奨されています)には, + マニュアルはここに入れないでください. + + 簡単な例を載せておきましょう: + + +bin/oneko +lib/X11/app-defaults/Oneko +lib/X11/oneko/cat1.xpm +lib/X11/oneko/cat2.xpm +lib/X11/oneko/mouse.xpm +@dirrm lib/X11/oneko + + 'Packing list'の詳細については, &man.pkg.create.1; + の マニュアルを参照してください. + すべてファイルを列挙しなければなりませんが, + ディレクトリ名は必要ありません. また, ports + がインストール時にディレクトリを作成する場合には, + @dirrm の行を加えて, その port + が削除されるとき, + そのディレクトリも削除されるようにしてください. + + このファイルには, + ファイル名をアルファベット順に並べるようにしてください. + port のアップグレートのとき, + 楽に確認ができるようになります. + + + + + チェックサムファイルの作成 + + ただ, make makesum + と入力するだけです. bsd.port.mk + にルールがあるので, + 自動的にfiles/md5が生成されます. + + + + Portのテスト + + そのportが正しく動くことを, + package化を含めて確認してください. + 以下の重要なポイントを確認してください. + + + + PLIST にその port + がインストールしないものが含まれていないこと. + + + + PLIST にその port + がインストールする全てのものが含まれていること. + + + + reinstall + ターゲットを使うことによって, + 何度でもインストールが可能こと. + + + + deintall の際に 後片付け + をすること. + + + + + 推奨されるテストの手順 + + + make install + + + + make package + + + + make deinstall + + + + pkg_add `make package-name` + + + + make deinstall + + + + make reinstall + + + + make package + + + + package および + deinstall の段階で, + どんな警告(warning)も出力されないことを確認してください. + ステップ3の後, + 新しいディレクトリが全て正しく消去されているかを + 確認してください. また, + ステップ4の後にそのソフトウェアを使用してみて, package + からインストールされた場合に正しく動作するかを + 確認してください. + + + + <command>portlint</command> でチェック + + portlintを使って, あなたの port + が我々のガイドラインそっているかを確認してください. + portlint プログラムは ports + コレクションに含まれています. 特に, Makefile + が正しい形式になっているか, package + の名前が正しいか, をチェックするのに良いでしょう. + + + + Portの送付 + + まず, やってよいことといけないこと + についての節を読んでください. + + さあ, あなたのportに満足したら, + あとはそれをFreeBSDのメイ ンのportsツリーに置いて, + 皆に使ってもらうだけです. いまある + work ディレクトリや + pkgname.tgz + パッケージは必要ありませんから, まず消去してください. + あとは, バグレポートの中に shar `find + port_dir` の出力を, &man.send-pr.1; + プログラムを使用して送ってください. &man.send-pr.1; + についての詳細は, バグ報告と一般的な論評 + を参照してください.) もし, 圧縮していない状態で, + 20KB以上あるようなポートであれば, 圧縮して tar + ファイルにして, バグレポートに入れる前に &man.uuencode.1; + を使用してください. (20KB以下のものでも, tar + ファイルにして送ってもよいですが, あまり歓迎されません). + バクレポートの category は ports, class + は + change-requestを必ず使用してください. + (レポートを confidential (内密) + にしないようにしてください!) + + もう一度, オリジナルのソースファイル, + work ディレクトリ, make + package + で作成したパッケージが含まれていないこと + を確認してください. + + + 以前, 新しい port をわれわれの ftp サイト (ftp.freebsd.org) + にアップロードするようにお願いしたことがありますが, + 現在このサイトの incoming + ディレクトリは読み出し不可になっており, + いまでは推奨されていません. + 沢山の海賊版ソフトウェアがそこに置かれたためです. + + + 私たちは, 何か不明な点があったらあなたに確認したのち, + それをツリーへ置きます. あなたの名前は, FreeBSD + ハンドブックやその他のファイルの “Additional FreeBSD + contributors” のリストにも載るでしょう. う〜ん, + 素晴らし い. :) + + + + + + 本格的なport + + 残念ながら, 移植がそう簡単ではなく, + 動かすために多少の変更が 必要な場合も多いでしょう. + この節では, portsコレクション の方法論にのっとって, + そのような場合にどのように変更を施し, 動 + くようにしたらよいかを順を追って説明します. + + + port構築の詳細 + + まず, あなたがportのディレクトリで + make とタイ + プしてから起こる一連の出来事について,順を追って説明しま + す. ここを読むときには, 他のウィンドウで同時に + bsd.port.mk + も開いておくとよいかもしれません. + + しかし, + bsd.port.mkが何をしているのか, + 完全に理解 できなくても心配する必要はありません. + そう多くの人が理解して いるわけではないですから... f(^_^;) + + + + まず, fetch + というターゲットが実行されます. + このfetchターゲットは + ローカルディスクのDISTDIRに配布ファ + イルがあるようにするのが役目です. もし, + fetchが必要なファ + イルをDISTDIRに見つけることが + できなけ れば, Makefileに指定されているURL + MASTER_SITES, + そして私たちのFTPサイトで ある + ftp://ftp.freebsd.org/pub/FreeBSD/ports/distfiles/ + (ここ には, 私たちが取ってきたファイルを + バックアップとして置いてあ ります) に探しにいきます. + そして, ユーザのサイトがインター ネットに + 直接接続されている場合には, FETCH + を使って, その名前のファイルを取っ てきて, + DISTDIRに保存します. + + + + 次に実行されるのは + extract ターゲットです. + これは, DISTDIRにある, 配布ファイル + (普通は gzipされたtarファイル) を読み, + ソースを一時的な作業ディレ + クトリWRKDIR (デフォルトは + work) に展開します. + + + + 次に, patch + というターゲットが実行されます. まず, + PATCHFILESに定義されている, + すべてのパッ チをあてます. + 次にもしPATCHDIR (デフォ ルトは + patches サブディレクトリ) + にパッチが存在す れば, + これらをアルファベット順にあてます. + + + + 次に実行されるターゲットは + configureです. これには, い + ろいろな場合があります. + + + + もし存在すれば, + scripts/configure + が実行されます. + + + + もし, HAS_CONFIGURE + あるいは GNU_CONFIGURE + がセットされていれば, + WRKSRC/configure + が実行されます. + + + + もし, USE_IMAKE + がセットされていれば, XMKMF + (デフォルト: xmkmf -a) + が実行されます. + + + + + + 最後に, build + というターゲットが実行されます. これは, その port + の専用の作業ディレクトリ (WRKSRC) + にい き, コンパイルするのが役目です. もし + USE_GMAKE がセットされていれば, GNU + make が使用されます. + さもなければFreeBSDの make + が使用されます. + + + + 上記はデフォルトのルールです. さらに, + pre-何とか + や + post-何とか + というターゲット が定義してあったり, + そのような名前のスクリプトが + scripts サブディレクトリに + 置いてある場合には, それ らはデフォルトの動作の + 前後に実行されます. + + たとえば, post-extract + というターゲットがMakefile で定義されていて, + pre-build というファイルが, + scripts + サブディレクトリにあるとすると, + post-extractターゲットは, + 通常の展開動作のあとに呼 び出され, + pre-build + スクリプトはデフォルトのコンパイ + ルのルールが実行される前に実行されます. + もし動作が簡単であれ ば, Makefile + のターゲットを使用することが推奨されています. な ぜならば, + そのportが何らかのデフォルトではない動作を必要とす + るのかどうかが一箇所にまとめて書いてあった方が他の人に + 理解しやす いからです. + + デフォルトの動作は bsd.port.mk の + do- 何とか + + というターゲットでおこなわれます. たとえば, + portを展開するコマンドは, + do-extract + というターゲットにあります. もし, + デフォルトのターゲットに 不満があれば, + do- something + というターゲッ + トを再定義することによって, + どのようにでも直すことができます. + + + “メイン”のターゲット (例えば, + extract, + configure等) は, + すべての前段階が実行されていること を確認して, + 実際のターゲットやスクリプトを呼び出す以外のこと + はしません. + bsd.port.mkはこれらが変更されることは仮定してい + ませんので, もし, 例えば, 展開の仕方を直したいときには, + do-extract を直し, + 絶対にextractには手を + 触れないでください. + + + これで, ユーザが make + と入力したときに何が起こ るのかが理解できたと思います. + では, 完璧なportを手順を追っ て作ってみましょう. + + + + オリジナルのソースの入手 + + オリジナルのソースを, (普通は) + 圧縮されたtarファイルの形 ( + foo.tar.gz + あるいは + foo.tar.Z) + で入手して, それを DISTDIR + にコピーします. 可能なかぎり, 広 + く使われている主流の + ソースを使用するようにしてください. + + もし, ネットワークへの接続のよい FTP/HTTP + サイトを見つけるこ とができなかったり, + 頭にくるような非標準的な形式しか持ってい + ないサイトしか見つけられないときには, 自分で管理する確実な + ftp か http サーバ (たとえば, + あなたのホームページ)に置くこと ができます. + MASTER_SITES + に正しく反映されていることを確認してください. + + もしも, そのような都合の良く, + 安心な置き場所が見つけられない 場合(あなたが FreeBSD の + committer であれば, 自分の + public_html ディレクトリに置けます), + 私たちが, + + ftp://ftp.FreeBSD.ORG/pub/FreeBSD/ports/distfiles/LOCAL_PORTS/ + に置き場所を提供できます. + この場所は, 変数 MASTER_SITE_LOCAL + を使って参照してください. + これについての問い合わせのメールは &a.ports へお願いします. + + + その port の配布ファイルが特に理由もなく, + しょっちゅう変る場合には, + 配布ファイルをあなたのホームページに置いて + MASTER_SITESの最初に入れてください. + こうすることによって, ユーザ利用する場合に + checksum mismatch + エラーが起るのを防ぎ, 我々の ftp + サイトの保守の負担を減らすことができます. もし, master + site がたった一つしかない場合には, + あなたのサイトにバックアップを置いて + MASTER_SITES + の2番目に加えてください. + + もし, + あなたのportに必要ないくつかの追加パッチがインター + ネット上で手に入るのならば, それらも取ってきて, + DISTDIR に置きます. もし, + それらがメイン + のソースのtarファイルとは別のサイトにあっても, + 心配する必要 はありません. + そのような状況にはちゃんと対応できるようになっ ています. + (以下のPATCHFILESの記述 + をご覧ください). + + + + Portの修正 + + 適当なディレクトリにtarファイルを展開して, + FreeBSDの最新の バージョン上で, + 正しくコンパイルできるために必要なあらゆる変 更を施します. + 最終的に処理は自動化するわけですから, 何をおこなっ + たかを注意深く記録しておきましょう. + あなたのport が完成した暁には, ファイルの削除, 追加, + 修正を含むすべての処 理が, + 自動化されたスクリプトやパッチファイルで + おこなえるようになっ ていないといけません. + + もし, あなたの port + のコンパイルやインストールのために必要 + な手作業があまりに多いようならば, Larry Wall の模範的な + Configure + スクリプトでも参考にしたほうがいいかもしれませ ん. + 新しいportsコレクションは, 最小のディスクスペースで, + 個々のportがエンドユーザにできるだけ“プラグ & + プレ + イ”の状態でmakeできることをめざしています. + + + あなたが作成し FreeBSD の ports + に寄付されたパッチファイル, + スクリプトおよびその他のファイルは, + 明示的に記述されている場合 を除いては, + BSDの標準的な著作権条件によりカバーされていると見な + されます. + + + + + パッチをあてる + + port + の過程で追加されたり変更されたファイルは再帰的diffで変 + 更点を取り出すことができます. パッチは適当にまとめて, + patch-xx + という名前のファイルに入れてくだ さい. + xx + はパッチが適用される順番を示します — これらは, + アルファベット順, つまり + aa が 最初, つぎに + ab などとなります. これらのファイル + をPATCHDIRに置いておくと, + 自動的に適用さ れるようになっています. すべてのパッチは + WRKSRC (通常は, portのtarファイルが展 + 開されるところで, makeが実行されるところと同じです) + からの相 対パスになります. + 修正やアップグレードを容易にするため, 2つ + 以上のパッチが同じファイルを修正するのは避けてください. + (例, + patch-aaとpatch-abが共にWRKSRC/foobar.c + を修正する, など.) + + + + コンフィグレーション + + カスタマイズのために追加したいコマンドがあれば, + configure + という名前のスクリプトに入れて + scripts サブディレクトリに置きます. + 上で述べたよ うに, pre-configure + あるいは post-configure という + Makefile + のターゲットおよび/あるいはスクリプトで処理す + ることもできます. + + + + ユーザからの入力の扱い + + もし, そのportがビルド, コンフィグレーション, + インストー ルの際にユーザからの入力を必要とするならば, + Makefileで + IS_INTERACTIVEをセットしてください. + これによって, 深夜, + 自動的にたくさんのportをコンパイルすることが可能にな + ります. 環境変数BATCHがセットされていると + IS_INTERACTIVE + の定義されているportはスキップされ ます (そして, + ユーザがINTERACTIVEという変数をセッ + トすると入力を必要とする port + のみコンパイルされま す). + + もし, 適切なデフォルト設定があるのであれば, + PACKAGE_BUILDING 変数をチェックして, + それが設定されて いる場合には, + ユーザ入力のスクリプトを起動しないように してください. + こうすることによって, CD-ROM や ftp に 置く package + を我々が作成することができます. + + + + + + Makefileの作成 + + Makefileの作成は非常に単純です. 繰り返しになりますが, + 始める まえに, すでにある例を見てみることをお奨めします. + またこのハ ンドブックにはMakefileのお手本 + があります. それを見て, + Makefile内の変数の順番や空行を入れると + ころなどの参考にしてください. + そうすると他の人々にも読みやすい ものとなります. + + では, + Makefileをデザインするときに問題となるところを順に追っ + て見てみましょう. + + + オリジナルのソース + + ソースはDISTDIRに, + 標準的なgzipされた tarファイルとして置かれていますか? + そうであれば, 次のステッ プに進めます. そうでなければ, + 変数 EXTRACT_CMD, + EXTRACT_BEFORE_ARGS, + EXTRACT_AFTER_ARGS, + EXTRACT_SUFX, + DISTFILES + を適当に書き換えないといけません. + どれだけ変更しないといけないかは, あなたのportの + 配布ファイルがどの程度標準からかけはなれているかによりま + す. (最もよくある場合は, + gzipではなく普通のcompressコマンド + でtarファイルが圧縮されている場合で, + EXTRACT_SUFX=.tar.Z + とするだけです.) + + 最悪の場合には, 自分で + do-extract ターゲットを作 成して, + デフォルトを上書きすることもできます. しかし, そこま + でする必要があることはめったにないでしょう. + + + + <makevar>DISTNAME</makevar> + + DISTNAME には port + の名前の基幹部分を入れ ます. デフォルトのルールでは, + 配布ファイルのリスト (DISTFILES) は + DISTNAME + EXTRACT_SUFX という名前 になっています. + 例えば, foozolix-1.0.tar.gzの場 合, + 通常のtarファイルだと, + DISTNAME=foozolix-1.0 のようになります. + + さらにデフォルトのルールでは, tarファイルは + work/DISTNAME + というサブディレクトリ に展開されることを仮定しています, + 例えば work/foozolix-1.0/ + といった具合いです. + + これらの動作はもちろんすべて変更可能です. + デフォルトのルー + ルは最も標準的な場合を仮定しているだけです. まず, port + が複 数の配布ファイルを必要とするときには, 単に明示的に + DISTFILESを設定してください. もし, + DISTFILES + の一部だけが実際に展開される場合 には, + それらをEXTRACT_ONLY に設定してくだ + さい. この変数が定義されている場合には, 展開時に + DISTFILESに優先して利用されます. + 残りのファ + イルもDISTDIRに取ってきますが, 展開時に + はなにもせずに後で使うためにそのまま置いておかれます. + + + + + <makevar>PKGNAME</makevar> + + もし, DISTNAME が我々の package + の名前についてのガイドライン + に沿ったものでない場合には, PKGNAME + にもっと良い名前を設定してください. + 詳細は上記のガイドラインを参照してください. + + + + + <makevar>CATEGORIES</makevar> (分類) + + 完成した package の実体は + /usr/ports/packages/All に置かれます. + また, 1つかそれ以上の + /usr/ports/packages + のサブディレクトリからのシンボリッ クリンクが作られます. + それらのサブディレクトリの名前が + CATEGORIES + という変数によって指定されます. これは, + ユーザがFTPサイトやCD-ROMのpackageの山を渡り歩 + くことを容易にするためです. 現在存在する カテゴリを見て, そ + のportに適したもを選んでください. + + このリストは, この port が port tree のどこに import + されるかも決定します. 2つ以上のカテゴリを指定した場合には + 最初のカテゴリで指定されるサブディレクトリに置かれること + になります. 適切なカテゴリを選ぶ方法については, カテゴリ + の節を参照してください. + + もしその port + が本当に現在存在するすべてのものとは異なって いる場合には, + 新しいカテゴリ名を作ることもできます. その際には, &a.ports + 宛てに新しいカテゴリ名を提案する + メールを送ってください. + + カテゴリ名については, + なんのエラーチェックも行なわれません.ミスタイプがあっても + make package はなにも考えずに + 新しいディレクトリを作ってしまいますので, + 注意してください. + + + + <makevar>MASTER_SITES</makevar> + + オリジナルの配布ファイルを指し示す FTP または HTTP の + URL のディ レクトリ部分までを + MASTER_SITES に記録しま す. スラッシュ + (/) を最後につけることをお忘れなく. + 配布ファイルがシステム上に存在しないときに, + makeマクロは FETCH + でこの変数に指定されたサイトから取っ てきます. + + 複数の, + できれば異なる大陸のサイトをこのリストに入れておく + ことが推奨されています. これによって, + 広域ネットワークにトラ + ブルがあった場合でも成功する可能性が高くなります. + 私たちはさら に, 自動的に最も近いマスタサイトを検出して, + そこから取って + くるメカニズムの導入を計画しています. + + オリジナルのtar ファイルが, X-contrib, GNU, Perl CPAN, + TeX CTAN または Linux Sunsite + などの有名なアーカイブにある場合には, + MASTER_SITE_XCONTRIB, + MASTER_SITE_GNU, + MASTER_SITE_PERL_CPAN, + MASTER_SITE_TEX_CTAN および + MASTER_SITE_SUNSITE を利用することで, + 簡単にこれらのサイトを 指定することができます. あとは + MASTER_SITE_SUBDIR にアーカイ + ブ内でのパスを指定するだけです. 以下に例を示します. + + +MASTER_SITES= ${MASTER_SITE_XCONTRIB} +MASTER_SITE_SUBDIR= applications + + ユーザは/etc/make.conf中で + MASTER_SITE_* 変数を設定 + することによって, デフォルトの FTP サイトではなく, + これらの 有名なアーカイブの + ミラーの中で好みのものを使用することが可能 です. + + + + <makevar>PATCHFILES</makevar> + + もし, + オリジナルの配布ファイル以外にもFTPかHTTPで手に入る + パッチが必要な場合には, + PATCHFILESにファ イル名を, + PATCH_SITESにサイトとディレクト + リの名前を MASTER_SITES + と同様に設定してく ださい. + + そのパッチ内のファイル名ががソースツリーの + 一番上のディレク トリ (WKRSRC) + からの相対パスになっていな い場合には, + PATCH_DIST_STRIPを指定してく ださい. + 例えば, パッチ内のファイル名にすべて余計な + foozolix-1.0/ がついている場合には, + PATCH_DIST_STRIP=-p1としてください. + + これらのパッチは圧縮されていても大丈夫です. + ファイル名が .gz か + .Z で終わる場合には自動的に復元 + されるようになっています. + + もしパッチが, 文書などその他のファイルと一緒に gzip + された tarファイルで配布されている場合には,単純に + PATCHFILES を使うことはできません. + このような場合には, このパッチの tar + ファイルの名前と場所を DISTFILES と + MASTER_SITES に加えます. それから, + pre-patch ターゲットで, + パッチコマンドを走らせるか, パッチファイルを + PATCHDIR ディレクトリに + patch-xx + という名前でコピーするかして, + パッチを適用するようにします. + + + 普通の gzip か compress された tar ファイルであれば, + 通常のソースファイルと一緒にその時までに + 展開されていますので, 明示的に展開する必要はありません. + もし, 後者の方法を使用する場合には, + すでにそのディレクトリにある なにかを上書きしないように, + 注意する必要があります. さらに, + pre-clean + ターゲットにコピーしたパッチファイル + を削除するコマンドを追加するのを忘れないでください. + + + + + <makevar>MAINTAINER</makevar> + + あなたのメールアドレスをここに入れてください. + お願いします. + :) + + 保守担当者(maintainer)の責任についての詳細は, Makefile 中の + MAINTAINER の節をご覧ください. + + + + 依存関係 + + このプログラムが他のportに依存する場合には, + 必要なものが 自動的に作られるようにすることができます. + そのために, 以下の 5つの変数が用意されています. + よくあるケースのためにあらかじめ設定された依存変数や, + いくつかの依存関係の制御のための変数があります. + + + <makevar>LIB_DEPENDS</makevar> + + Port が必要とする非標準の共有ライブラリを + この変数で指定 します. これは + lib: + dir: + target という組のリストで, + うち lib + が共有ライブラリの名前, そして + dir + がそのライブラリが見つからない場合にインストールする + port のあるディレクトリで, + target + はそのディレクトリで呼ばれるターゲットです. 例えば, + LIB_DEPENDS= + jpeg.9:${PORTSDIR}/graphics/jpeg:install + と指定してあれば, + まずメジャーバージョンが9のjpegライブ + ラリがあるかどうか確認し, ない場合にはportsツリーの中の + graphics/jpeg + というサブディレクトリに移動し, そこ + でコンパイルとインストールを行ないます. + target の 部分は, + DEPENDS_TARGET (デフォルトは + install) + と等しいときには省略できます. + + + 前半の lib + 部分は ldconfig -r | grep -wF + への引数になります. + この変数には正規表現を入れられません. + + + + + この依存関係は2度チェックされます. まず + extract ターゲットで, 次に + install でチェックされます. + (これは, その port を作成するマシンとインストールする + マシンが違う場合でも, きちんとそのライブラリが利用できる + ことを確認するためです.) また, 依存するもの名前は + package の中にも含まれますので, + ユーザのシステムに存在しなければ, + pkg_add が自動的にインストールします. + + + + + <makevar>RUN_DEPENDS</makevar> + + Port + を使用する際に必要となるファイルまたはプログラムがある + ときにはこの変数で指定します. これは + path: + dir + :target とい + う組のリストで, path + がファイルまたはプログラムの 名前, そして + dir + がそれが見つからない場合に作成する + ためのディレクトリ名で target + はそのディレクトリで呼ばれるターゲットです. + path の最初の文字がスラッ + シュ (/) + の場合にはファイルかディレクトリ とみなし, その存在を + test -e でチェックします; + そうでない場合には 実行可能であると仮定し, + which -s を使って + そのプログラムがユーザのサーチパス上に + あるかどうか確認します. + + 例えばMakefileに以下のように書いてあるとします. + + +RUN_DEPENDS= ${PREFIX}/etc/innd:${PORTSDIR}/news/inn \ + wish8.0:${PORTSDIR}/x11-toolkits/tk80 + + まず, /usr/local/etc/innd + というファイルかディレクトリが存在 するか確認し, + ない場合にはportsツリーの中の + news/inn + というサブディレクトリから作られます. ま た, + wish8.0 + というプログラムがユーザのサーチパス中 + にあるかどうか探し, ない場合には同じくportsツリーの + x11-toolkits/tk80 + というサブディレクトリから作られます. + + + この例で, innd + は実際にはプログラムです; この ように, + プログラムであっても標準のサーチパス以外のところに + あるようなものの場合には, + 絶対パスで指定してください. + + + この依存関係はinstall + ステージのはじめでチェック されます. また, + packageを作る際に必要となるportのpackage名 が記録され, + pkg_addを使用すると + ユーザのシステムに存在しない場合には自動的にそちら + のpackageもインストールされるようになります. + target の部分は, + DEPENdS_TARGET + と同じ場合には省略可能です. + + + + + <makevar>BUILD_DEPENDS</makevar> + + Port + のコンパイルに必要なファイルまたはプログラムがある + ときは, この変数で指定してください. + RUN_DEPENDSと同 様に, これは + path: + dir + :target + という組のリストです. 例 えば, + BUILD_DEPENDS= + unzip:${PORTSDIR}/archivers/unzip は + unzip という名前のプログラムを探し, + 見つから + ない場合にはarchivers/unzip + サブディレクトリで作 れという意味になります. + + + ここでは “コンパイル” + と一口にいいましたが, この変数は実際 + にはファイルの展開から実際のコンパイル・リンクまで + 全部をま とめて面倒を見てくれます. + この依存関係は extract + ステージからチェックされます. + target の部分は + DEPENDS_TARGET + と同じ場合には省略可能です. + + + + + <makevar>FETCH_DEPENDS</makevar> + + この変数は, + portを取ってくるのに必要なファイルまたはプロ + グラムを指定するのに使います. 上の二つと同様に, これは + path: + dir + :target + + という組のリストです. 例えば, + FETCH_DEPENDS= + ncftp2:${PORTSDIR}/net/ncftp2 + としておけば, ncftp2 + という名前のプログラムを探 し, + 見つからない場合にはnet/ncftp2 + サブディレク トリにいってインストールします. + + この依存関係は fetch + ステージからチェックされます. + target の部分は + DEPENDS_TARGET + と同じ場合には省略可能です. + + + + <makevar>DEPENDS</makevar> + + 上記の四つのいずれにもあてはまらないような + 依存関係がある場 合, または他の port + がインストールされれているだけではなく, + ソースが展開されている必要がある場合にはこの変数 + を使います. これは + dir + :target という形式のリスト + になります. 上記の四つと違って特に + “確認”するものがありませんので. + + + + よくある依存関係を表す変数 + + もし ports が X Window System + を必要とするのであれば, USE_XLIB=yes + を定義してください. (これは + USE_IMAKEも意味します) BSD + make の代りに GNU + make を必要とする場合には, + USE_GMAKE=yes を定義. 動作するのに + GNU autoconf を必要とする場合には, + USE_AUTOCONF=yes を定義. 最新の qt + toolkit を使用 する場合には + USE_QT=yes を定義. perl + 言語のバージョン5 を必要とする場合には, + USE_PERL5=yes を定義してください. + (特に最後のは重要で, FreeBSD のいくつかの + バージョンでは基本システムに perl5 を含みますが, + 他のものは含んでいません.) + + + + 依存関係に関する注意 + + 上で述べたように, 依存する ports + が必要になったときに呼ばれるデフォルトのターゲットは + DEPENDS_TARGET で, + そのデフォルトは install です. + これは, ユーザの使用する変数で, port の + Makefile + で定義されるものではありません. もし, + あなたのportが特別な方法で, 依存関係を扱う必要が + ある場合には, DEPENDS_TARGET + を再定義するのではなく, *_DEPENDS + 変数の :target + の部分を利用してください. + + make clean とタイプしたときには, + 依存する port も自動的に clean されます. + もしそうしたくない場合には, + NOCLEANDEPENDS + を環境変数として設定してください. + + 無条件に他の port に依存させるには, 特別に + nonexistent という文字列を + BUILD_DEPENDS あるいは + RUN_DEPENDS + の最初のフィールドに使用してください. これは, 他の port + のソースが必要なときのみ使用してください. target + も指定することによって, + コンパイルの時間を節約することができます. 例えば, + BUILD_DEPENDS= + /nonexistent:${PORTSDIR}/graphics/jpeg:extract + これは, 常に JPEG port の directory + に行きソースの展開を行ないます. + + あなたがやりたいことが他の方法ではできない場合以外は, + DEPENDS を使わないでください. これは常に + 他の port の作成を行い(さらにデフォルトでインストール + を行い), package も作成します. もし本当にこれがあなたの + やりたいことでしたら, 代りにこれを + BUILD_DEPENDS と + RUN_DEPENDS で書くことをお勧めします + — 少なくとも意図が明確になります. + + + + + コンパイル時の特別な指定 + + GNUのmakeを使う場合には, + USE_GMAKE=yes と指定してください. Port + に GNU の configure が含まれ + ている場合には, GNU_CONFIGURE=yes + を使います(これは, HAS_CONFIGURE + も意味します). configure に追加の引数 + (デフォルトでは, GNU の configure では + --prefix=${PREFIX}, GNUでない + configure では空) + を渡したい場合には追加部分を + CONFIGURE_ARGS で指定してください. + そのパッケージが autoconf + を使用する場合には, USE_AUTOCONF=yes + を使います. これは, GNU_CONFIGURE + も意味し, configure の前に + autoconf を実行します. + + + X Window Systemのアプリケーションなど, + imakeを 使って + Imakefile から + Makefile を作成するportの場合には + USE_IMAKE=yes を指定してください. + コンフィグレー ションステージで自動的にxmkmf + -a が実行されます. も し + フラグが問題をもたらすなら, さらに + XMKMF=xmkmfとしてください. + + もし, port が imake + を使用するけれども, install.man + ターゲットがない場合には, + NO_INSTALL_MANPAGES=yes + を指定してください. ついでに, その port + のオリジナルの作者を探し出して八つ裂きにすると + いいでしょう.:> + + Portの Makefile が + all 以外のものをメインのター + ゲットとしている場合には, ALL_TARGET + でそ れを指定してください. + install と + INSTALL_TARGET も同様です. + + もし, port の元の Makefile が + all + 以外のターゲットをメインのターゲットとしている場合には, + ALL_TARGET + をそれに合わせて設定してください. + install と + INSTALL_TARGET + についても同様です. + + + + + + <makevar>NO_INSTALL_MANPAGES</makevar> + + あなたの port がimakeは使うものの + install.man + ターゲットを持っていない場合, + NO_INSTALL_MANPAGES=yes + を指定してください. つい でに, + 作者を探し出して八つ裂きにするといいでしょ う. (-_-#) + + + + + 特別な配慮 + + Portを作成する場合, + 考慮しなくてはいけないことがさらにいくつかあります. + この節では, + それらのうちもっともありがちなものについて説明します. + + + ldconfig + + 共有ライブラリをインストールするときには, + 共有ライブラリのキャッシュを更新するために port の + Makefile の + post-installtarget + から${LDCONFIG} -m + を走らせてください. + このコマンドの引数は共有ライブラリのインストールしてある + ディレクトリ (通常 + PREFIX/lib) + です. + + また, pkg/PLIST@exec + /sbin/ldconfig -m@unexec + /sbin/ldconfig -R の組を入れて, package + をインストールした場合にも共有ライブラリがすぐ使え, + 削除の際にも, システムがまだライブラリが存在すると + 誤認しないようにしてください. + この行は共有ライブラリを指定する行のすぐ後に + 書くのがよいでしょう: + + +lib/libtvl80.so.1 +@exec /sbin/ldconfig -m %D/lib +@unexec /sbin/ldconfig -R + + 絶対に引数なしでただ + ldconfig とだけ書いてある行を + Makefile や + pkg/PLIST + ファイルに入れないでください. このコマンドを実行すると, + 共有ライブラリのキャッシュが /usr/lib + の内容のみとなり, + ユーザのマシンにさまざまな問題をもたらします (「ぎゃぁ! + このportをインストールしたら xinit + が使えなくなっちゃった!」). この掟を破った者は, + 永久に地獄の底で苦しみ続けるように, + 閻魔様に頼んでおきます. + + + + + ELF 対応 + + FreeBSD は 3.0-RELEASE で ELF に移行しましたので, + シェアードライブラリを作成するたくさんの port を ELF 対応 + にする必要があります. 3.0 システムは ELF としても a.out + としてmも 動作しますし, 我々は非公式ではありますが, + できるだけ長い間 2.2 + システムのサポートをしたいと思っていますので, + 複雑な状況です. 以下は a.out のみに対応している port + をどのように a.out と ELF 両方に対応させるかのガイドライ + ンです. + + このリストの一部は, + 移行時にしかあてはまらないものもありますが, 古い port + をアップグレードしたい場合に参考になるように, + しばらくのあいだは残しておきます. + + + a.out ライブラリの退避 + + a.out ライブラリは, + /usr/local/lib から, + aout サブディレクトリ + に移動しなくはなりません. (もし移動しないと, ELF ports + がそれらをあっさり上書きして しまいます.) 3.0-CURRENT の + src/Makefile にある + move-aout-libs ターゲット + (aout-to-elf から呼ばれます) + がその移動をしてくれます. a.out + ライブラリを移動するだけなので, ELF と a.out + の両方のライブラリが標準的な + ディレクトリにあるシステムでは, + このターゲットを実行しても安全です. + + + + フォーマット + + port ツリーは package + をそのマシンのフォーマットで作成します. つまり, 2.2 では + a.out, また 3.0 では `objformat` + の結果によって, a.out か ELF になります. また, いったん + a.out ライブラリをサブディレクトリに移動すると a.out + ライブラリの作成はサポートされません. (つまり, + あなたがにをすれば良いのかを理解しているのならば, + うまく作成できるかもしれませんが, + 自力でやらなければならないということです) + + + もし port が aout でしか動作しないのなら, + BROKEN_ELF + に原因を説明する文字列を設定してください. + この変数が設定された port は, ELF + システム上でのビルドの際スキップされます. + + + + + PORTOBJFORMAT + + bsd.port.mk において + PORTOBJFORMAT は + aoutelf + に設定され, 環境変数 CONFIGURE_ENV, + SCRIPTS_ENV, MAKE_ENV の中で + export されます. (2.2-STABLE では常に + aout になります). また, + PORTOBJFORMAT=${PORTOBJFORMAT} として + PLIST_SUB に渡されます. + (以下にある ldconfig + に関するコメントを参照して下さい.) + + この変数は, 以下のようにして + bsd.port.mk 中で設定されます. + + +PORTOBJFORMAT!= test -x /usr/bin/objformat && /usr/bin/objformat || echo aout + + この変数を使って, port の make + の過程で何をすべきかを決定すべきですが, もし port の + configure スクリプトが元々, ELF + システムを自動的に検出するのであれば, + PORTOBJFORMAT + を参照する必要はありません. + + + + 共有ライブラリの作成 + + 以下は, a.out と ELF + での共有ライブラリの扱いの違いです. + + + + 共有ライブラリのバージョン + + ELF の共有ライブラリは, + libfoo.so.M + という名前になっていなければなりません. ここで + M は単一の + バージョン番号を表します. 一方 a.out のライブラリは + libfoo.so.M. + N + という名前で, M + はメジャーバージョン番号, N + はマイナーバージョン番号になっている必要があります. + これらを混同しないでください. + libfoo.so.N. + M + という名のELF 共有ライブラリや + libfoo.so.N + という名の a.out 共有ライブラリ + (あるいはシンボリックリンク) は + 絶対にinstallしないでください. + + + + リンカコマンドライン + + 直接 ld を使用せずに, + cc -shared を使用してください. + たった一つの違いは, ELF には, + コマンドラインにを加える必要があることです. + + + + + ELF のリンカを満足させるためには, + libfoo.so から + libfoo.so.N + へのシンボリックリンクを作る必要があります. これは, + PLIST にも加えなくては いけませんし, + a.out の場合でも害にはならないので (一部の port + ではダイナミックリンクローディングのために + 必要でもあります), PORTOBJFORMAT + の設定を気にせずに, + ただ単純にリンクを作成してください. + + + + <makevar>LIB_DEPENDS</makevar> + + すべての port の Makefile を編集して, + LIB_DEPENDS + からマイナー番号を除去する必要があり, + 正規表現のサポートも除去する必要があります. (例えば, + foo\\.1\\.\\(33|40\\) から + foo.2) マッチングは grep + -wF を使って行われます. + + + + <filename>PLIST</filename> + + PLIST は, a.out + のマイナー番号が0であれば, 短い (ELFの) + 共有ライブラリの名前を含み, さもなくば長い (a.outの) + 名前を含んでいる必要があります. + bsd.port.mk は 自動的に, + PORTOBJFORMAT が + aout であれば, .0 を + 短い共有ライブラリの名前の行に付け加え, + PORTOBJFORMATelf + であれば, マイナー番号を + 長い共有ライブラリの名前から削除します. + + ELF システムで 2 + つのバージョン番号を持つ共有ライブラリを + インストールしたり, aout システムで 1 + つのバージョン番号しか持たない共有ライブラリを + インストールするのが避けられない場合 + (例えば他のオペレーティングシステム用の + 互換ライブラリをインストールする port など), + NO_FILTER_SHLIBS 変数を定義すれば, + 前節で説明されている PLIST + 編集の機能が停止されます. + + + + <literal>ldconfig</literal> + + + Makefile 中の ldconfig + の行は以下のようになります. + + +${SETENV} OBJFORMAT=${PORTOBJFORMAT} ${LDCONFIG} -m .... + + また PLIST 中では: + + +@exec /usr/bin/env OBJFORMAT=%%PORTOBJFORMAT%% /sbin/ldconfig -m ... +@unexec /usr/bin/env OBJFORMAT=%%PORTOBJFORMAT%% /sbin/ldconfig -R + + となります. これは, + システムのデフォルトフォーマットではなく + パッケージのフォーマットに応じて, 正しい + ldconfig + が呼ばれることを保証するためのものです. + + + + + <makevar>MASTERDIR</makevar> + + もし, あなたの port が 変数(例えば + 解像度とか紙のサイズなど)を変えたりした, + ちょっと違うバージョンを作成する必要があるときには, + ユーザが分りやすいように, package + ごとに別々のサブディレクトリを作成し, ただし, できるだけ + port 間でファイルを共有するようにしてください. + 典型的な例では, うまく変数を使えば, + とても短いMakefileだけ, + 1つ以外のすべてのディレクトリに置くだけで済みます. その短い + Makefile には + MASTERDIR を使って, + 残りのファイルがあるディレクトリを指定できます. また PKGNAME + の一部に変数に使って, package + が別々の名前を持つようにしてください. + + 以下が, とても良い例になるでしょう. これは + japanese/xdvi300/Makefile + の一部です: + + +PKGNAME= ja-xdvi${RESOLUTION}-17 + : +# default +RESOLUTION?= 300 +.if ${RESOLUTION} != 118 && ${RESOLUTION} != 240 && \ + ${RESOLUTION} != 300 && ${RESOLUTION} != 400 + @${ECHO} "Error: invalid value for RESOLUTION: \"${RESOLUTION}\"" + @${ECHO} "Possible values are: 118, 240, 300 (default) and 400." + @${FALSE} +.endif + + japanese/xdvi300 は通常のパッチ, + package ファイルももっています. そこで, + make と入力すると, + デフォルトの解像度(300)を使って, 普通に port + の作成を行います. + + 他の解像度に関してですが, これが, + xdvi118/Makefile の(コメントを除いた) + すべてです. + + +RESOLUTION= 118 +MASTERDIR= ${.CURDIR}/../xdvi300 + +.include ${MASTERDIR}/Makefile + + (xdvi240/Makefile と + xdvi400/Makefile も同様です). + MASTERDIR が + bsd.port.mk に + PATCHDIRPKGDIR + などの通常のサブディレクトリが xdvi300 + にあることを教えます. RESOLUTION=118 + の行が, xdvi300/Makefile の + RESOLUTION=300 の行を無効にし, port + は解像度を118として作成されます. + + + + 共有ライブラリのバージョン + + まず, + 共有ライブラリのバージョンについての指針 を読んで, + 共有ライブラリのバージョンを + 一般的にどうすれば良いかを理解してください. 盲目的に, + ソフトウエアの作者がちゃんと理解していると + 信じててはいけません, 多くの場合違います. + 細い点まで考慮することは大変重要なことです, + なぜなら我々は互換性がないかもしれない大量の + ソフトウェアを共存させようとする, 特殊な状況にあるからです. + 不注意な port の導入が共有ライブラリに関して, + 多大な問題を引き起したことが過去にあります (今まで, + jpeg-6b がなぜ 9.0 + といバージョン番号を持っているか不思議に + 思ったことはありませんか?). もし, 疑問があれば, &a.ports; + にメールを送ってください. ほとんどの時間は, + 正しいシェアードライブラリのバージョンを決めることと, + それを実現するためのパッチを作成することに終始します. + + しかしながら, が同じソフトウェアの違ったバージョンの + ソフトウェアが既にツリーにあるばあいには, + 状況は非常に複雑です. つまり, FreeBSD では, + ユーザがリンカにどのバージョンの共有ライブラリを + 使用するかを指定できないからです + (リンカは常にもっとも高いバージョンを選びます). これは, + もし, libfoo.so.3.2 と + libfoo.so.4.0 + がシステムに存在するときには, + リンカに特別なアプリケーションだけ + libfoo.so.3.2 + をリンクするように指示する方法がないことを意味します. + これは, + コンパイル時のリンクという意味では完全に見劣りします. + この場合の唯一の解決方法は, 共有ファイルの名前の + ベース 部分を変えることです. 例えば, + libfoo.so.4.0 を + libfoo4.so.1.0 へ変えることによって, + バージョン 3.2 とバージョン 4.0 共に他の port + からリンクされることができるようになります. + + + + マニュアル + + MAN[1-9LN] 変数を使用すると, + 自動的にすべてのマニュアルを pkg/PLIST + に加えます (つまり, マニュアルを PLIST + に加えては いけませんPLIST の生成 + を参照してください). またマニュアルを + /etc/make.conf 中の + NOMANCOMPRESS の設定に応じて, + install時に自動的に圧縮したり伸長したりします. + + マニュアルをインストール時に圧縮するかどうかを + 指定するには, MANCOMPRESSED + 変数を使用します. この変数は, 3つの値をとることができます, + yes, no そして + maybe です. yes + はマニュアルが既に圧縮されて インストールされている, + no はされていない, + maybe はそのソフトウェアがすでに, + NOMANCOMPRESS に合わせており + bsd.port.mk + が特別なにもする必要がないことを意味します. + + USE_IMAKE がセットされていて, + NO_INSTALL_MANPAGES + がセットされていなければ, MANCOMPRESSED + は自動的に yes に設定され, + それ以外の場合には, no になります. + デフォルトがあなたの port + に合わない場合以外は明示的に設定する必要がありません. + + PREFIX 以外のディレクトリの下に + マニュアルを置くような port では + MANPREFIX を指定することができます. + さらに, 特定のセクションのマニュアルだけ, + 標準ではない場所にインストールする場合, 例えばいくつかの + Perl のモジュールの ports など, には個々のマニュアルのパスを + MANsectPREFIX + (sect は, 1-9, + または, LN + を表わします) によって指定できます. ができます. + + + マニュアルが, 言語特有のサブディレクトリに + 置かれる場合には, 言語名を MANLANG + に設定してください. この変数のデフォルト値は, + "" になっています (つまり, 英語のみ). + + + これは, 全部をまとめた例です. + + +MAN1= foo.1 +MAN3= bar.3 +MAN4= baz.4 +MANLANG= "" ja +MAN3PREFIX= ${PREFIX}/share/foobar +MANCOMPRESSED= yes + + 以下の6個のファイルがこの port でインストールされます. + + + +${PREFIX}/man/man1/foo.1.gz +${PREFIX}/man/ja/man1/foo.1.gz +${PREFIX}/share/foobar/man/man3/bar.3.gz +${PREFIX}/share/foobar/man/ja/man3/bar.3.gz +${PREFIX}/man/man4/baz.4.gz +${PREFIX}/man/ja/man4/baz.4.gz + + + + Motifを必要とするport + + 最近はコンパイルに Motif + を必要とするアプリケーションが増えて きました. + (Motif自体は有料のものがいくつかの会社から手に入りま すし, + 多くのアプリケーションがコンパイル可能な無料の互換ライブラリ + が x11-toolkits/lesstifにあります) + Motifはかなり広く使われていますし, 製品のライ + センスではライブラリを静的にリンクした + 実行形式は再配布が認めら れている場合が多いので, + Motifを必要とするソフトウェアを簡単に 動的(port + からコンパイルする人々のために)/静的(package を配布 + する人々のために)にリンクできるような + しくみが用意されています. + + + <makevar>REQUIRES_MOTIF</makevar> + + Motif + がないとコンパイルできないportのMakefileではこの変 + 数を指定してください. これによって, + Motifを持っていない人が + このportをコンパイルしようとするのを未然に防ぎます. + + + + <makevar>MOTIFLIB</makevar> + + この変数は bsd.port.mk によって + Motif ライブラリの指 定に置き換えられます. + ソース内のMakefileやImakefileで Motif + ライブラリを指定しているところをこの変数に置き換えるよ + うにパッチをあててください. + + 代表的な例としては以下の二つがあげられます: + + + + MakefileかImakefileの中でMotifライブラリが + として使われている場合には, + かわりに MOTIFLIB + と書いてください. + + + + Imakefileの中で XmClientLibs + が使われている 場合には, それを + ${MOTIFLIB} ${XTOOLLIB} + ${XLIB} と書きかえてください. + + + + + MOTIFLIB は通常 + -L/usr/X11R6/lib -lXm か + /usr/X11R6/lib/libXm.a に置き換えら + れます. したがって前に や + をつけ る必要はありません. + + + + + + X11 のフォント + + もし, あなたの port が X window system + のフォントをインストールするのであれば, それらを + X11BASE/lib/X11/fonts/local + に置くようにしてください. このディレクトリは XFree86 release + 3.3.3 で新設されたものです. もし, + それが存在しなければ作成し, ユーザに XFree86 を 3.3.3 + かそれより新しいものに更新か, すくなくとも, + このディレクトリを /etc/XF86Config の + font path + に加えるように促すメッセージを出力するようにしてください. + + + + + Info ファイル + + 新しい版の texinfo(2.2.2-RELEASE + およびそれ以降に入っています) には, + install-info + というコマンドが含まれており, dir + ファイルに項目を追加したり, 削除したりすることがで きます. + もし, あなたの port が info ドキュメントをインストー + ルするのであれば, 以下の指示に従って, その port および + package が正しく, ユーザの + ${PREFIX}/info/dir ファイル + を更新するようにしてください. (この節は, + とても長くてすいません, しかし info + ファイルを作りあげるためには, これらは不可欠 です. + 正しく行なえば, 美しい + リストができますので, 辛抱してください! :) + + まず, これを知っておかなければなりません: + + &prompt.user; install-info --help +install-info [OPTION]... [INFO-FILE [DIR-FILE]] + Install INFO-FILE in the Info directory file DIR-FILE. + (訳注: Info ディレクトリの INO-FILE を DIR-FILE にインストールする) +Options: +--delete Delete existing entries in INFO-FILE; + don't insert any new entries. + (訳注: INFO-FILE の中の項目を削除, + 新しい項目は一切追加しない.) + : +--entry=TEXT Insert TEXT as an Info directory entry. + (訳注: TEXT を Info ディレクトリの項目として追加する.) + : +--section=SEC Put this file's entries in section SEC of the directory. + (訳注: このファイルの項目を Info ディレクトリの SEC + という節に置く.) + : + + + このプログラムは, 実際には info + ファイルをインストール しません, 単に + dir + ファイルにエントリーを挿入したり削除し + たりするだけです. + + + これから, install-info + を使用するように, ports を変換す る7段階の工程を示します. + 例として editors/emacsを + 使用します. + + + + まず, texinfo のソースを見て, + @dircategory と + @direntry 文がないファイルについて, + それらを追加するパッチを作成します. 以下は, + ここでの例での patchの一部です: + + +--- ./man/vip.texi.org Fri Jun 16 15:31:11 1995 ++++ ./man/vip.texi Tue May 20 01:28:33 1997 +@@ -2,6 +2,10 @@ + + @setfilename ../info/vip + @settitle VIP ++@dircategory The Emacs editor and associated tools ++@direntry ++* VIP: (vip). A VI-emulation for Emacs. ++@end direntry + + @iftex + @finalout + : + + フォーマットについては見ればわかると思います. + dir + というファイルに必要な項目を書いておいてくれる作者 + も多いので, まず自分で書く前にさがしてみてください. + また, 関係 する ports も調べて, 節(section)の名前や, + インデントなどが + きちんと合っているかどうかを確認してください + (項目のテキスト は, すべて4つめのタブ・ストップ(tab + stop)から始めることを推 奨します). + + + 1つのファイルに対して1つの info + の項目しか書けないことに注 意してください, これは, + install-info --delete が, そのバグにより, + @direntry セクションに複数の項目を書 + いても, + 初めの1つの項目しか削除してくれないからです. + + + texinfo のソースにパッチをあてるかわりに, + dir の項目 を + install-info の + 引数((, + ) として与えることもできます. + これはあまり良い方法とは 思えません, なぜなら, + 同じ情報を3ヶ所(Makefile, + PLIST の + @exec/@unexec: + 以下参照) に重複して, 書く必要があるからです. + しかしながら, もし日本語(あるいは, + 他のマルチバイト文字)の info ファイルがあるのならば, + install-info + の特別な引数を使用する必要があるでしょう, なぜならば, + makeinfo がこのような texinfo + ソースファイル を扱えないからです. + (このようなものをどう扱うかの例としては, + japanese/skk の + Makefile と + PLIST を見て ください.) + + + + portのディレクトリに戻って, make clean; + make をして, info ファイルが texinfo + ソースファイルから再び生成さ れることを確認してください. + texinfo ソースファイルのほうが info + ファイルよりも新しいので, make + とタイプすれば, info ファイルは再構築されるはずですが, + 多くの Makefile には info + ファイルの正しい依存関係が書かれていません. + emacs の場合, info + ファイルの再構築ため, man + サブディレクトリ に降りていくようにするために, メインの + Makefile.in にパッ + チをあてる必要がありました. + + +--- ./Makefile.in.org Mon Aug 19 21:12:19 1996 ++++ ./Makefile.in Tue Apr 15 00:15:28 1997 +@@ -184,7 +184,7 @@ + # Subdirectories to make recursively. `lisp' is not included + # because the compiled lisp files are part of the distribution + # and you cannot remake them without installing Emacs first. +-SUBDIR = lib-src src ++SUBDIR = lib-src src man + + # The makefiles of the directories in $SUBDIR. + SUBDIR_MAKEFILES = lib-src/Makefile man/Makefile src/Makefile oldXMenu/Makefile lwlib/Makefile +--- ./man/Makefile.in.org Thu Jun 27 15:27:19 1996 ++++ ./man/Makefile.in Tue Apr 15 00:29:52 1997 +@@ -66,6 +66,7 @@ + ${srcdir}/gnu1.texi \ + ${srcdir}/glossary.texi + ++all: info + info: $(INFO_TARGETS) + + dvi: $(DVI_TARGETS) + + man + サブディレクトリでのデフォルトターゲットは, + info で呼ばれるのに対して, + メインの Makefile では, + all で呼びたいので, + 2つめのpatchが必要でした. また, + info info + ファイルのインストールも削除しました, なぜなら, + 同じものが同じ名前で既に + /usr/share/info にあるからです. + (このパッチはここにはありません.) + + + + もし, Makefile に + dir ファイルをインストールす + る個所があれば, 削除します. あなたの port がインストー + ルしてはいけません. また, dir + ファイルを壊してしまうよう + なコマンドの類も削除します. + + +--- ./Makefile.in.org Mon Aug 19 21:12:19 1996 ++++ ./Makefile.in Mon Apr 14 23:38:07 1997 +@@ -368,14 +368,8 @@ + if [ `(cd ${srcdir}/info && /bin/pwd)` != `(cd ${infodir} && /bin/pwd)` ]; \ + then \ + (cd ${infodir}; \ +- if [ -f dir ]; then \ +- if [ ! -f dir.old ]; then mv -f dir dir.old; \ +- else mv -f dir dir.bak; fi; \ +- fi; \ + cd ${srcdir}/info ; \ +- (cd $${thisdir}; ${INSTALL_DATA} ${srcdir}/info/dir ${infodir}/dir); \ +- (cd $${thisdir}; chmod a+r ${infodir}/dir); \ + for f in ccmode* cl* dired-x* ediff* emacs* forms* gnus* info* message* mh-e* sc* vip*; do \ + (cd $${thisdir}; \ + ${INSTALL_DATA} ${srcdir}/info/$$f ${infodir}/$$f; \ + chmod a+r ${infodir}/$$f); \ + + + + (これは, 既存のportを修正するときのみ必要です.) + pkg/PLIST を見て, + info/dir にパッチをあて + ようとするものすべてを削除します. これらは, + pkg/INSTALL + やその他のファイルにもあるかもしれない ので, + いろいろさがしてみてください. + + +Index: pkg/PLIST +=================================================================== +RCS file: /usr/cvs/ports/editors/emacs/pkg/PLIST,v +retrieving revision 1.15 +diff -u -r1.15 PLIST +--- PLIST 1997/03/04 08:04:00 1.15 ++++ PLIST 1997/04/15 06:32:12 +@@ -15,9 +15,6 @@ + man/man1/emacs.1.gz + man/man1/etags.1.gz + man/man1/ctags.1.gz +-@unexec cp %D/info/dir %D/info/dir.bak +-info/dir +-@unexec cp %D/info/dir.bak %D/info/dir + info/cl + info/cl-1 + info/cl-2 + + + + post-install ターゲットを + Makefile に加えて, + dir + ファイルが存在しなければ作成するようにします. また, + インストールされた info ファイルについては, + install-info + を実行するようします. + + +Index: Makefile +=================================================================== +RCS file: /usr/cvs/ports/editors/emacs/Makefile,v +retrieving revision 1.26 +diff -u -r1.26 Makefile +--- Makefile 1996/11/19 13:14:40 1.26 ++++ Makefile 1997/05/20 10:25:09 1.28 +@@ -20,5 +20,11 @@ + post-install: + .for file in emacs-19.34 emacsclient etags ctags b2m + strip ${PREFIX}/bin/${file} + .endfor ++ if [ ! -f ${PREFIX}/info/dir ]; then \ ++ ${SED} -ne '1,/Menu:/p' /usr/share/info/dir > ${PREFIX}/info/dir; \ ++ fi ++.for info in emacs vip viper forms gnus mh-e cl sc dired-x ediff ccmode ++ install-info ${PREFIX}/info/${info} ${PREFIX}/info/dir ++.endfor + + .include <bsd.port.mk> + + 新しい info ファイルを作成するのに, + /usr/share/info/dir と上のコマンド, + 以外は使用しな いでください. 実際のところ, もし port + する人がこれに関して PLIST + に自らまったく手を加える必要がないのであれば, 上 + のパッチのはじめの3行を bsd.port.mk + に加えたでしょう. + + + + PLIST を編集して, + 同じ働きをする @exec 文, そ + れにpkg_delete のために + @unexec 文を加えてくださ い. + @unexec を使用して + info/dir を削除する必 + 要はありません. + + +Index: pkg/PLIST +=================================================================== +RCS file: /usr/cvs/ports/editors/emacs/pkg/PLIST,v +retrieving revision 1.15 +diff -u -r1.15 PLIST +--- PLIST 1997/03/04 08:04:00 1.15 ++++ PLIST 1997/05/20 10:25:12 1.17 +@@ -16,7 +14,15 @@ + man/man1/etags.1.gz + man/man1/ctags.1.gz ++@unexec install-info --delete %D/info/emacs %D/info/dir + : ++@unexec install-info --delete %D/info/ccmode %D/info/dir + info/cl + info/cl-1 +@@ -87,6 +94,18 @@ + info/viper-3 + info/viper-4 ++@exec [ -f %D/info/dir ] || sed -ne '1,/Menu:/p' /usr/share/info/dir > %D/info/dir ++@exec install-info %D/info/emacs %D/info/dir + : ++@exec install-info %D/info/ccmode %D/info/dir + libexec/emacs/19.34/i386--freebsd/cvtmail + libexec/emacs/19.34/i386--freebsd/digest-doc + + + @unexec install-info --delete + コマンドは, info ファイル自身より先に置き, + コマンドがファイルを読めるようにし + ておかなければならないことに注意してください. また, + @exec install-info コマンドは info + ファイルおよび dir ファイルを作る + @exec コマンドより後に + おかなければなりません. + + + + + テスト + をして出来栄えに感服しましょう :) 各段階の前後に, + dir + ファイルをチェックしましょう. + + + + + + <filename>pkg/</filename> サブディレクトリ + + まだ触れていない, いくつかのこつが + pkg/ サブディレクトリにはあり, + 時として便利でしょう. + + + <filename>MESSAGE</filename> + + もし, インストールする人にメッセージを表示する + 必要がある場合には, そのメッセージを + pkg/MESSAGE に置けます. この機能は, + pkg_add + の後の追加のインストール手続きを表示するときなどに, + 重宝します. + + + + pkg/MESSAGE ファイルは + pkg/PLIST に加える必要はありません. + また, もしユーザが package ではなく port を使用して + いる場合には自動的には表示されませんので, 明示的に + post-install + で表示するようにするべきでしょう. + + + + + <filename>INSTALL</filename> + + バイナリパッケージが pkg_add + でインストールされるときに, 実行される必要がある + コマンドがあれば, pkg/INSTALL + スクリプトを使って実行することができます. + このスクリプトは自動的に package に加えられ, + pkg_add によって2度実行されます. + はじめは INSTALL ${PKGNAME} + PRE-INSTALL と実行され, 2度目には, + INSTALL ${PKGNAME} POST-INSTALL + と実行されます. どちらのモードで実行されているかは, + $2 + を調べることによってわかります. 環境変数 + PKG_PREFIX には package + がインストールされるディレクトリが設定されます. 詳細は + &man.pkg.add.1; を見てください. + + + + port を make install で + インストールするときには, + このスクリプトは自動的に実行されません. もし, + 実行される必要があるならば, port の Makefile + から明示的に呼ぶ必要があります. + + + + + + <filename>REQ</filename> + + port が(インストールされるシステムの状態によって) + インストールされるべきか, されないべきか区別する必要が + あるときには, “要件(requirements)” スクリプト + pkg/REQ を作ることができます. これは, + インストール及びデインストール (package + の削除)の時に自動的に実行され, + それらが処理されるべきかを決定します. + + + + make の変数にあわせた <filename>PLIST</filename> + の変更 + + いくつかの port, 特に p5- portsなど, は configure + のオプション (あるいは, p5- ports の場合は perl + のバージョン)によって, PLIST + を変える必要があります. これを容易に実現するために, + PLIST 中の + %%OSREL%%, + %%PERL_VER%%, + %%PERL_VERSION%% は, + 適切に置き換えられるようになっています. + %%OSREL%% の値は, + オペレーティングシステムの数字で表されたリビジョンです + (例えば, 2.2.7). + %%PERL_VERSION%% は perl + のバージョン番号全体(例えば, 5.00502 + )で, %%PERL_VER%% はバージョン番号から, + パッチレベルを引いてものです(例えば, + 5.005). + + 他の置き換えが必要であれば, + PLIST_SUB 変数に + VAR=VALUE + + という形式のペアのリストを設定することによって, + PLIST 中の + %%VAR%% は + VALUE に置き換えられます. + 例えば, バージョンに固有の沢山のファイルを + インストールする場合には, Makefile + に + + + +OCTAVE_VERSION= 2.0.13 +PLIST_SUB= OCTAVE_VERSION=${OCTAVE_VERSION} + + と書いて, PLIST + 中のバージョン番号が表われるすべてのところに, + %%OCTAVE_VERSION%% と書きます. + このようにしておけば, port をアップグレードするときに, + 何十行(ときとして, 何百行)も PLIST + を書き替えないですみます. + + この書き換えは ( + マニュアル の追加も) + do-install と + post-install ターゲット + のあいだに, PLIST を読み + TMPPLIST (デフォルトは, + WRKDIR/.PLIST.mktmp ) + に書き込むことによって行なわれます. もし, あなたの port が + PLIST を実行時に生成するのであれば, + do-install のあいだか, + その前に行うようにしてください. また, + 書きかえられたあとのファイルを編集する必要がある場合には, + post-install で, + TMPPLIST を書きかえてください. + + + + <filename>pkg</filename> + サブディレクトリにあるファイル名の変更 + + pkg + サブディレクトリにあるファイルは全て, 変数を + 使用して定義されていますので, 必要であれば + Makefile 中で 変更可能です. + いくつかの ports で 一つの pkg + サブディレクトリを共有する場合や, 上記のファイルに書き込む + 必要があるときなど, 特に便利です. + (pkg + サブディレクトリに直接書き込むのが良くない理由に ついては + WRKDIR + 以外への書きこみ を参照してください.) + + 以下が変数名とそのデフォルト値の表です. + + + + + + Variable + Default value + + + + + + COMMENT + ${PKGDIR}/DESCR + + + + DESCR + ${PKGDIR}/DESCR + + + + PLIST + ${PKGDIR}/PLIST + + + + PKGINSTALL + ${PKGDIR}/PKGINSTALL + + + + PKGDEINSTALL + ${PKGDIR}/PKGDEINSTALL + + + + PKGREQ + ${PKGDIR}/REQ + + + + PKGMESSAGE + ${PKGDIR}/MESSAGE + + + + + + PKG_ARGSを上書きせずに, + これらの変数を変更 するようにしてください. + PKG_ARGSを変更すると これらのファイルは + port から正しく /var/db/pkg + にインストールされなくなります. + + + + + ライセンス上の問題 + + ソフトウェアによっては制限の厳しい + ライセンスがついてきたり, 法律的に問題があるかもしれません. + (PKPの公開鍵暗号化, ITAR (暗 号化ソフトウェアの輸出) + などが例としてあげられます). それらを + どう扱えばいいかはライセンスの文面によって + さまざまな場合があり ます. + + + ソフトウェア移植者として, + あなたにはライセンスをよく読み, FreeBSD プロジェクトが FTP + または CD-ROM で配布してはいけないソフ + トウェアを配布してしまうことのないよう, + 注意する義務があります. なにか疑問がある場合には, + &a.ports;に聞いてみてください. + + + よく見られるケースに対処するために, + 二つの変数が用意されてい ます: + + + + ソフトウェアに “有償再配布を禁ずる” + という趣旨のライセン スがついてきた場合には + NO_CDROM + という変数にその理由を記述して ください. + 私たちはこれがついているportはCD-ROMリリースに入 + れないようにしますが, + オリジナルのソースファイルとpackage + はFTPでは取れるようにしておきます. + + + + もしも, 生成される package + が個々のサイトで独自に構築さ れる必要があったり, + ライセンスによって生成されるバイナリが + 配布できない場合には, NO_PACKAGE + 変数にその理由を記述してくだ さい. そのような package が + FTP サイトに置かれたり, リリース 時の CD-ROM + へ入らないようにします. ただし, いずれの場合も distfile + は(FTP や CD-ROM に)含まれるようになります. + + + + Portが, 使用者によっては法律上の問題が生じる時 + (暗号化ソフ トウェアなど), + または“商用利用を禁ずる”とライセンスに書い + てある場合には + RESTRICTEDという変数にその理由を入れ + てください. この場合には, + ソースファイルやpackageは私たちの + FTPサイトにも置かれません. + + + + + GNU一般公有使用許諾書 (GPL) はバージョン1, 2とも + port作成上は何ら問題にはなりません. + + + + もしあなたが,ソースツリー管理者 (committer) + であれば, ソースツリーにこのようなportを入れる際に, + ports/LEGAL + ファイルを書き換えるのを忘れないようにし + てください. + + + + + アップグレード + + Port + のバージョンが原作者からのものに比べて古いことに気がつ + いたら, まずはあなたの持っているportが私たちの最新のもの + (ミラー サイトの ports/ports-current + というディレクトリにあります) + であることを確認してください. + + 次に, portの Makefile + にMAINTAINER (保守担当者) の + アドレスが書いてある場合には, + その人にメールを出してみましょう. + 保守担当者の人がすでにアップグレードの準備を + しているかもしれま せんし, + (新しいバージョンの安定度に問題があるなど) あえてアッ + プグレードをしない理由があるのかもしれません. + + 保守担当者にアップグレードをしてくれと頼まれた場合, + あるいは + そもそもportのMakefileに保守担当者が書いてない場合などは, あ + なたがアップグレードをしてくださると助かります. + その場合にはアッ プグレードをしたのち, + 変更前と変更後のディレクトリの再帰的diff (unified diff と + context diff のどちらでもいいのですが, port のコミッター達は + unified diff のほうを好むようです) をとって送ってください. + (例えば, 変更前のディレクトリが + superedit.bak という名前でとってあり, + 変更後のもの が superedit + に入っているなら, diff -ruN superedit.bak + superedit の結果を送ってください. ) diff + の出力を見て, すべての変更が正しくなされているか確認して + ください. 変更箇所については, &man.send-pr.1; (カテゴリーは, + ports)に diff の出力結果を添えて, + 私たちに送ってもらうのが一 番よいです. commit する際に CVS + に明確に記述しなければならない ので, + 付け加えたり削除したりしたファイルがあったら, それについ + て書いておいてください. もし diff の大きさが 20 KB 程度を + 超えるようであれば, 圧縮したものを uuencode して下さい. + そうでなければそのまま PR に入れるだけでいいです. + + 繰り返しになりますが, ports の変更を送るときには, + &man.shar.1; ではなく &man.diff.1; + を使用してください. + + + + やっていいことといけないこと + + この節では, + ソフトウェアをportする上でよくある落し穴などにつ + いて説明します. このリストを使って, あなた自身が作成した + port のチェックはもとより, PR データベースにある, + 他の人が作成した port のチェックもできます. + あなたがチェックした port について のコメントを バグ報告と一般的な論評 + にしたがって, 送ってください. PR データベースにある port を + チェックすることによって, 私達がそれらを commit + するのを早くし, + あなたが何をしているか理解していることも示します. + + + バイナリのstrip + + バイナリは strip してください. + オリジナルのソースがバイナリを strip + してくれる場合は良いですが, そうでない場合には + post-install ターゲットを指定して strip + するようにするとよいでしょう. 例えば, + こんな風になります: + + +post-install: + strip ${PREFIX}/bin/xdl + + インストールされた実行形式がすでに strip + されているかどうかは file + コマンドで確認できます. これが`not + stripped'と言わなければ, + stripされているということです. + + + + <makevar>INSTALL_*</makevar> マクロ + + あなた自身の *-install + ターゲットでファイルの正しいモードと + オーナを保証するために, + 必ずbsd.port.mkで提供されて + いるマクロを使用してください. + マクロは以下のようなものがあります. + + + + ${INSTALL_PROGRAM} + は実行可能なバイナリを + インストールするコマンドです. + + + + ${INSTALL_SCRIPT} + は実行可能なスクリプトを + インストールするコマンドです. + + + + ${INSTALL_DATA} + は共有可能なデータを + インストールするコマンドです. + + + + ${INSTALL_MAN} + はマニュアルとその他のドキュメ + ントをインストールするコマンドです. + (圧縮はしません) + + + + これらは基本的に install + コマンドに適当なフラグを与え たものです. + どのようにこれらを使用するかは以下の例を見てください. + + + + + <makevar>WRKDIR</makevar> + + WKRDIR + の外のファイルにはなにも書き込まないように してください. WRKDIR は + ports のビルド中に書き込こめる + ことが保証されている唯一の場所です( CDROM から ports + をコンパイルを参照). PKGDIR + にあるファイルを修正する必要がある ときには, 変数の再定義 + によって行ない, 上書きはしないでください. + + + + <makevar>WRKDIRPREFIX</makevar> + + WRKDIRPREFIX + を尊重していることを確認してください. 特に, 別の port の + WRKDIR を参照している + ときには気を付けてください. 正しい場所は, + WRKDIRPREFIX + PORTSDIR + /subdir/ + name/work, です, + + PORTSDIR/subdir/ + name/work とか + + .CURDIR/../../subdir + /name/work + とかではありません. + + また, 自分で WRKDIR + 定義するときには, 頭に + ${WRKDIRPREFIX}${.CURDIR} + が付いている 事を確認してください. + + + + OS や OS のバージョンの区別 + + Port の過程で, 修正や, どのバージョンの UNIX + で動くかによる条件つきコンパイルなどが + 必要なコードに出会うかもしれません. + そのような条件つきコンパイルなどのための + 変更をおこなうときには, FreeBSD 1.x システムへの移植や, + CSRGの4.4BSD, BSD/386, 386BSD, NetBSD, OpenBSD + などの他のBSDシステムへの移植が可能なように, + できるだけ普遍的な変更をおこなうことを + 心がけてください. + + 4.3BSD/Reno (1990) およびそれより新しい BSD + 版を古いバージョンと区別するには BSD + マクロを利用するのがよいでしょう. これは + <sys/param.h> + で定義されています. + このファイルがすでにインクルードされていればよいのですが, + もしそうでない場合には以下のコードを, その + .c + ファイルの適当な場所に加えてください. + + +#if (defined(__unix__) || defined(unix)) && !defined(USG) +#include <sys/param.h> +#endif + + これらの 2 + つのシンボルが定義されているすべてのシステムには + sys/param.h があるはずです. もし, + そうでないシステムを発見したら我々にも教えてください. + &a.ports; までメールを送ってください. + + あるいは, GNU の Autoconf + のスタイルを使用することもできます, + + +#ifdef HAVE_SYS_PARAM_H +#include <sys/param.h> +#endif + + この方法を使用するときには, + Makefile 中の + CFLAGSに + -DHAVE_SYS_PARAM_H + を加えることを忘れないようにしてください. + + いったん sys/param.h + がインクルードされると, + + +#if (defined(BSD) && (BSD >= 199103)) + + このようにしてそのコードが 4.3 Net2 コードベース, + またはそれより新しいもの (例: FreeBSD 1.x, 4.3/Reno, + NetBSD 0.9, 386BSD, BSD/386 1.1とそれ以前) + の上でコンパイルされているかを検出できます. + + +#if (defined(BSD) && (BSD >= 199306)) + + これは, 4.4コードベース, またはそれより新しいもの (例: + FreeBSD 2.x, 4.4, NetBSD 1.0, BSD/386 2.0とそれ以後) + の上でコンパイルされているかどうかを + 検出するために使用します. + + 4.4BSD-Lite2 コードベースでは, BSD + マクロの値は 199506 になっています. + これは参考程度の意味合いしかありません. 4.4-Lite ベースの + FreeBSD と 4.4-Lite2 での変更がマージされたバージョンとを + 区別するのに使用するべきものではありません. + この目的のためには, __FreeBSD__ + マクロをかわりに使用してください. + + 以下は控え目に使ってください. + + + + __FreeBSD__ + はFreeBSDのすべての版で定義されています. 変更が + FreeBSD + だけに適用されるとき以外は使用しないでください. + Portでよくある, strerror() + ではなく sys_errlist[] + を使うなどは, FreeBSDでの変更ではなく, BSD + の流儀です. + + + + FreeBSD 2.xでは __FreeBSD__ が + 2 と定義されています. + それ以前の版では 1 になっています. + その後の版では, + そのメジャー番号に合うように上がっていきます. + + + + もし, FreeBSD 1.x システムと FreeBSD 2.x あるいは + FreeBSD 3.x システムを区別する必要があれば, 上で述べた + BSDマクロを使用するのが, + 大抵の場合において正しい答です. もし, + FreeBSD特有の変更であれば (ld + を使うときのシェアードライブラリ用のなオプションなど), + + __FreeBSD__を使い #if + __FreeBSD__ > 1 のようにFreeBSD 2.x + および, それ以降のシステムを検出するのはかまいません. + もし, + 2.0-RELEASE以降のFreeBSDシステムを細かく検出したけれ + ば, 以下を使用することができます. + + +#if __FreeBSD__ >= 2 +#include <osreldate.h> +# if __FreeBSD_version >= 199504 + /* 2.0.5+ release specific code here */ +# endif +#endif + + + + + + Release + _FreeBSD_version + + + + + + 2.0-RELEASE + 119411 + + + + 2.1-CURRENT's + 199501, 199503 + + + + 2.0.5-RELEASE + 199504 + + + + 2.1 以前の 2.2-CURRENT + 199508 + + + + 2.1.0-RELEASE + 199511 + + + + 2.1.5 以前の 2.2-CURRENT + 199512 + + + + 2.1.5-RELEASE + 199607 + + + + 2.1.6 以前の 2.2-CURRENT + 199608 + + + + 2.1.6-RELEASE + 199612 + + + + 2.1.7-RELEASE + 199612 + + + + 2.2-RELEASE + 220000 + + + + 2.2.1-RELEASE + 220000 (2.2-RELEASE と同じです) + + + + 2.2.1-RELEASE 以後の 2.2-STABLE + 220000 (これも同じです) + + + + texinfo-3.9 以後の 2.2-STABLE + 221001 + + + + top 導入以後の 2.2-STABLE + 221002 + + + + 2.2.2-RELEASE + 222000 + + + + 2.2.2-RELEASE 以後の 2.2-STABLE + 222001 + + + + 2.2.5-RELEASE + 225000 + + + + 2.2.5-RELEASE 以後の 2.2-STABLE + 225001 + + + + ldconfig -R 以後の 2.2-STABLE + 225002 + + + + 2.2.6-RELEASE + 226000 + + + + 2.2.7-RELEASE + 227000 + + + + 2.2.7-RELEASE 以後の 2.2-STABLE + 227001 + + + + semctl(2) 変更後の 2.2-STABLE + 227002 + + + + 2.2.8-RELEASE + 228000 + + + + 2.2.8-RELEASE 以後の 2.2-STABLE + 228001 + + + + mount(2) 変更以前の 3.0-CURRENT + 300000 + + + + mount(2) 変更以後の 3.0-CURRENT + 300001 + + + + semctl(2) 変更以後の 3.0-CURRENT + 300002 + + + + ioctl 引数変更後の 3.0-CURRENT + 300003 + + + + ELF 移行後の 3.0-CURRENT + 300004 + + + + 3.0-RELEASE + 300005 + + + + 3.0-RELEASE 以後の 3.0-CURRENT + 300006 + + + + 3/4 の分岐後の 3.0-STABLE + 300007 + + + + 3.1-RELEASE + 310000 + + + + 3.1-RELEASE 以後の 3.1-STABLE + 310001 + + + + 3/4 の分岐後の 4.0-CURRENT + 400000 + + + + + + + + + (2.2-STABLE は, 2.2.5-RELESE 以後, + “2.2.5-STABLE” と呼ばれることがあります.) + 見ての通り, + これは年・月というフォーマットになっていましたが, + バージョン 2.2 から, + より直接的にメジャー/マイナー番号を使う + ように変更になりました. + 並行していくつかのブランチ(枝分かれし + たバージョン)を開発する場合には, + リリースされた日付でそれらの + リリースを分類することが不可能だからです. (あなたが今 + port を作成するときに, 古い -CURRENT 達について心配 + する必要はありません. + これは参考のために挙げられているにすぎま せん.) + + + これまで, 何百ものportが作られてきましたが, + __FreeBSD__ が正しく使われたのは, + 1つか2つの場合だけでしょう. + 以前のportが誤った場所でそのマクロを使っているからと + いって, それをまねする理由はありません. + + + + <filename>bsd.port.mk</filename> の後に書くこと + + .include <bsd.port.mk> + の行の後には なにも書かないようにしてください. + 大抵の場合は Makefile の + 中程のどこかで, bsd.port.pre.mk を + include して, 最後に bsd.port.pre.mk + を include することによって避けることができます. + + + + pre.mk/post.mk + のペアか bsd.port.mk + だけのどちらかだけを include してください. + 2つを混ぜないでください. + + + 前者は, いくつかの変数の定義だけ をして, + Makefile でのテストに使用し, + 後者は残りを定義します. + + + 以下は bsd.port.pre.mk + で定義される重要な変数です. (これは, すべてではありません. + 完全なリストは bsd.port.mk + を参照してください.) + + + + + + + 変数名 + 解説 + + + + + + ARCH + uname -m で返される + アーキテクチャ. (例, i386). + + + + + OPSYS + uname -s で返される + オペレーティングシステム (例, + FreeBSD). + + + + OSREL + オペレーティングシステムの + リリースバージョン + (例., 2.1.5, + 2.2.7). + + + + OSVERSION + 数字形式のオペレーティングシステム + のバージョン, + 上記の + __FreeBSD_version + と同じです. + + + + PORTOBJFORMAT + システムのオブジェクト + フォーマット (aout あるいは + elf). + + + + LOCALBASE + “local” ツリーのベース. + (例, /usr/local/). + + + + + X11BASE + “X11” ツリーのベース. + (例, /usr/X11R6/). + + + + + PREFIX + portsのインストール先 + ( + PREFIXについてを参照). + + + + + + + + USE_IMAKE, + USE_X_PREFIX あるいは + MASTERDIR + などの変数を定義する必要がある場合には, + bsd.port.pre.mk + を include する前に定義してください. + 他のものは, bsd.port.pre.mk + の前でも後でもかまいません. + + + 以下は bsd.port.pre.mk + の後に書けるものの例です: + + +# no need to compile lang/perl5 if perl5 is already in system +.if ${OSVERSION} > 300003 +BROKEN= perl is in system +.endif + +# only one shlib version number for ELF +.if ${PORTOBJFORMAT} == "elf" +TCL_LIB_FILE= ${TCL_LIB}.${SHLIB_MAJOR} +.else +TCL_LIB_FILE= ${TCL_LIB}.${SHLIB_MAJOR}.${SHLIB_MINOR} +.endif + +# software already makes link for ELF, but not for a.out +post-install: +.if ${PORTOBJFORMAT} == "aout" + ${LN} -sf liblinpack.so.1.0 ${PREFIX}/lib/liblinpack.so +.endif + + + + 付加的ドキュメント + + 普通のマニュアルや info + ファイルのほかにユーザにとって有用だ + と思えるようなドキュメントがある場合には, + PREFIX/share/doc + の下にインストールしてく ださい. これは前記と同様, + post-installターゲットの + 中からするのがいいでしょう. + + まず, あなたのportのために新しいディレクトリを作りま + す. どのportのドキュメントか簡単にわかるような名前にする必 + 要がありますので, 普通は PKGNAME + からバージョ ン番号を除いた部分を使うといいでしょう. + もちろん, ユーザが異 + なるバージョンのものを同時に使うことが予想される port + の場合 には, PKGNAME + をそのまま使ってかまいません. + + ユーザが /etc/make.conf + でこの部分を禁止するために NOPORTDOCS + という変数をセットしている場合には, + これらのドキュメントが + インストールされないようにしてください. こんな具合です. + + + +post-install: +.if !defined(NOPORTDOCS) + ${MKDIR}${PREFIX}/share/doc/xv + ${INSTALL_MAN} ${WRKSRC}/docs/xvdocs.ps ${PREFIX}/share/doc/xv +.endif + + これらのファイルを pkg/PLIST + に入れるのを忘れないよ うにしてください. + (packageが/etc/make.conf内の + 変数を読む方法は今のところ存在しませんので, + NOPORTDOCS + については気にしないでください.) + + インストール時に pkg/MESSAGE + ファイルを利用して, メッセージを表示することができます. + 詳細は pkg/MESSAGE を使う + の節を参照してください. + + + + MESSAGE ファイルは + pkg/PLIST に加える必要はありま + せん. + + + + + <makevar>DIST_SUBDIR</makevar> + + /usr/ports/distfiles + ディレクトリ内をあまり散らかさ ないようにしてください. + たくさんのファイルを取ってくるport や, + 数は少なくてもほかのportのファイルと混同されるおそれが + あるファイル (Makefile など) + がある場合には, DIST_SUBDIR に port + の名前 (PKGNAME + からバージョン番号を取った部分を 使うといいでしょう) + を入れてください. すると, + DISTDIRがデフォルトの + /usr/ports/distfiles から + /usr/ports/distfiles/DIST_SUBDIR + に変更され, + 取ってきたファイルはすべてそのサブディレクトリの中に置か + れるようになります. + + また, + ファイルを取ってくるときにバックアップサイトとして使わ + れる ftp.freebsd.org + のディレクトリ名にもこの変数の 値が使われます. + (DISTDIRを明示的に指定し た場合には, + ローカルのファイルを置くところは変わりますが, こ + のサイトのディレクトリ名は変わりませんので, 必ず + DIST_SUBDIRを使うようにしてください.) + + + この変数はMakefile中で明示的に指定された + MASTER_SITES + には影響しないことに注意して ください. + + + + + RCS文字列 + + RCS + が特別な意味を与えている文字列をパッチ内に入れないように + してください. + ファイルを私たちのソースツリーに入れる時にこれら + の文字列はCVSによって書き換えられてしまい, + あとでまたパッチ + を使おうとした時にうまくいかないことがあります. + RCS文字列は ドル記号 ($) + で囲まれており, $Id や + $RCS などで始まり ます. + + + + パッチ作成上の注意 + + diffの再帰 () + フラグを使って再帰的なパッ チを作るのは大変結構なのですが, + でき上がったパッチは必ず目で + チェックして余計なゴミが入っていないことを確認してくださ + い. よくあるのはバックアップファイル同士の変更点, あるいは + Imake や GNU + configure を使うソフトウェアの + Makefile + の変更点が入っている場合などです. また, + configure.in を編集して, + autoconf を使って + configure を作り直す ときには, + configure の diff は含めずに (それらは, + 数千行になることもしばしばです), + USE_AUTOCONF=yes を定義して, + configure.in の diff + をとってください. + + ファイルをまるごと消す場合にはパッチを使わずに + post-extract + ターゲットで消す方が簡単です. できあがった + 差分に満足したら, それらをソースのファイルごとに別々の + パッチファイルに分割してください. + + + + <makevar>PREFIX</makevar> + + なるべく port は PREFIX + に対する相対パス + にインストールすることができるように心がけてください. + (この変数の値は USE_X_PREFIXか + USE_IMAKEが指定してある時には + X11BASE + (デフォルト/usr/X11R6), + そうでない場合にはLOCALBASE + (デフォルト/usr/local) + にセットされます.) + + サイトによってフリーソフトウェアが + インストールされる場所が 違いますので, ソース内で + /usr/local や + /usr/X11R6 + を明示的に書かないようにしてください. X のプログラムで + imake を使うものについては, + これは問題に はなりません. それ以外の場合には, + ソース中のMakefileやスク リプトで /usr/local + (imakeを使わないXのプログラ ムは + /usr/X11R6) と書いてあるところを + PREFIX に書き換えてください. この値は + portのコンパイル, + およびインストール時に自動的に環境変数として + 下位makeに渡されます. + + USE_X_PREFIXは本当に必要な時 + (つまり, X のライブラリなどとリンクしたり, + X11BASE 以下にある + ファイルを参照したりする必要がある時) + 以外には設定しないでください. + + 変数 PREFIX の値は port の + Makefile やユーザの環境で変更することもできます. しかし, + 個々の port が Makefile + でこの変数の値を明示的に設定することはなるべくしない + でください. + + また, 他の port + からインストールされるプログラムやファイル + を指定するときには, 上で述べた変数を使用してください. + 例えば, less のフルパスを + PAGER というマクロに入れた い場合は, + コンパイラに + -DPAGER=\"/usr/local/bin/less\" + と渡すかわりに + -DPAGER=\"${PREFIX}/bin/less\" + (Xを使うportの時は + -DPAGER=\"${LOCALBASE}/bin/less\" ) + を渡し てください. こうしておけば, `/usr/local' + がまるごとどこか他 の場所に移してあるサイトでも, + あなたのportがそのまま使える 可能性が高くなります. + + + + ディレクトリ構成 + + インストール時には PREFIX + の正しいサブディ + レクトリにファイルを置くように心がけてください. + ソフトウェア によっては新しいディレクトリを + 一つ作ってファイルを全部それに + 入れてしまうものがありますが, それはよくありません. また, + バ イナリ, ヘッダファイルとマニュアル以外のすべてを + lib + というディレクトリに入れてしまうportもあります が, + これもBSD的なファイルシステム構成からいうと正しくありま + せん. これは以下のように分散すべきです. + etc にセッ + トアップ/コンフィグレーションファイル, + libexec に 内部で使用されるプログラム + (コマンドラインから呼ばれることの ないコマンド), + sbin に管理者用のコマンド, + info に GNU Info 用のドキュメント, + そして share + にアーキテクチャに依存しないファイルが入り ます. + 詳細については man &man.hier.7; を見てくださ い. + /usrの構成方針はほとんどそのまま + /usr/localにもあてはまります. USENET + “ニュース”を 扱う ports は例外です. これらは, + ファイルのインストール先として + PREFIX/news + を使用します. + + + + 空のディレクトリの除去 + + ports は デインストール(削除) の際には, + 自分自身を消去したあとに, (ディレクトリの) + 除去をするようにしてください. これは, 大抵の場合 + @dirrm の行を ports + が作成するすべてのディレクトリについて + 加えることによって実現できます. 親ディレクトリは, + 子ディレクトリを先に消さないと + 消せないことに気をつけて下さい. + + + : +lib/X11/oneko/pixmaps/cat.xpm +lib/X11/oneko/sounds/cat.au + : +@dirrm lib/X11/oneko/pixmals +@dirrm lib/X11/oneko/sounds +@dirrm lib/X11/oneko + + といった感じです. + + しかし, ときとして, 他の port + をディレクトリを共有しているために + @dirrm がエラーを返すことがあります. + rmdir@unexec + から呼びだすことによって, 警告(warning)なしで + 空のディレクトリのみを削除することができます: + + + +@unexec rmdir %D/share/doc/gimp 2>/dev/null || true + + + これを使えば, たとえ, 他の port がファイルを + インストールしていて, + PREFIX/share/doc/gimp + が空でない場合でも エラーメッセージは表示されませんし, + pkg_delete + が異常終了することもありません. + + + + UID + + もしあなたの + portがインストールされるシステム上に特定のユー + ザを必要とする場合は, pkg/INSTALL + スクリプトから pw + コマンドを実行して自動的にそのユーザを追加するよ + うにしてください. net/cvsup-mirror + の portが参考になるでしょう. + + もしあなたの port が, バイナリのパッケージとしてとして + インストールされるときにも, + コンパイルされたときと同じユーザー/グループ ID + を使わなければならないのなら, 50 から 99 の間で空いている + UID を選んで登録してください. + japanese/Wnn の port + が参考になるでしょう. + + 既にシステムや他の portで利用されている + UIDを使わないように 十分注意してください. 現在の 50から + 99までの間の UIDは以下の とおりです. + + +majordom:*:54:54:Majordomo Pseudo User:/usr/local/majordomo:/nonexistent +cyrus:*:60:60:the cyrus mail server:/nonexistent:/nonexistent +gnats:*:61:1:GNATS database owner:/usr/local/share/gnats/gnats-db:/bin/sh +uucp:*:66:66:UUCP pseudo-user:/var/spool/uucppublic:/usr/libexec/uucp/uucico +xten:*:67:67:X-10 daemon:/usr/local/xten:/nonexistent +pop:*:68:6:Post Office Owner (popper):/nonexistent:/nonexistent +wnn:*:69:7:Wnn:/nonexistent:/nonexistent +ifmail:*:70:66:Ifmail user:/nonexistent:/nonexistent +pgsql:*:70:70:PostgreSQL pseudo-user:/usr/local/pgsql:/bin/sh +ircd:*:72:72:IRCd hybrid:/nonexistent:/nonexistent +alias:*:81:81:QMail user:/var/qmail/alias:/nonexistent +qmaill:*:83:81:QMail user:/var/qmail:/nonexistent +qmaild:*:82:81:QMail user:/var/qmail:/nonexistent +qmailq:*:85:82:QMail user:/var/qmail:/nonexistent +qmails:*:87:82:QMail user:/var/qmail:/nonexistent +qmailp:*:84:81:QMail user:/var/qmail:/nonexistent +qmailr:*:86:82:QMail user:/var/qmail:/nonexistent +msql:*:87:87:mSQL-2 pseudo-user:/var/db/msqldb:/bin/sh + + このリストを最新の状態に保つためにも, + この範囲の UID や GID を予約するような port を作ったり, + 既存の port にそのような改変を行って我々に送るときには, + UID の予約に関する注意書きをつけてください. + + + + 合理的な port + + Makefile + は単純かつ適切であるべきです. もし, + Makefile を数行短かくできたり, + もっと読みやすくできるのであれば, そうしてください. + 例えば, shell の if 構文を使う代りに, + make の .if 構文を使う, + EXTRACT* + の再定義で代用できるのであれば, + do-extract を再定義しない, + CONFIGURE_ARGS += + --prefix=${PREFIX} とするかわりに, + GNU_CONFIGURE とする, などです. + + + + <makevar>CFLAGS</makevar> の尊重 + + CFLAGS 変数は尊重すべきです. その + port がこれを無視するのであれば, + NO_PACKAGE=ignores cflags を + Makefile に加えてください. + + + + コンフィグレーション(設定)ファイル + + もしあなたの port が設定ファイルを + PREFIX/etc + に置く必要がある場合には, それを単純にインストールしたり, + pkg/PLIST + に加えてはいけません. + こうしてしまうと, pkg_delete が + ユーザが苦労して作ったファイルを消してしまったり, 新しく + インストールすると上書きされてしまったりします. + + 代りに, 見本となるファイルを suffix ( + + filename.sample + が良いでしょう) を付けて インストールして, message を表示して, + ソフトウエアを動かす前に, ユーザがそのファイル + をコピーして編集をしなければならないことを知らせましょう. + + + + + Portlint + + 送付や commit をする前に portlint + を使ってチェックしましょう. + + + + フィードバック + + Portを作るためにソフトウェアに変更を加えたら, + なるべく原作者にその旨を伝えてパッチ等を送ってください. + これらが次のリリースに取り入れられれば, + アップグレードが楽になります. + + + + その他諸々 + + pkg/DESCR, + pkg/COMMENT, + pkg/PLIST などのファイルは, + それぞれ2重にチェックしてください. + 再検討してもっと良い記述があれば, + それに置きかえてください. + + GNU General Public License + (GNU一般公有使用許諾)のコピーは + (すでにあるので)コピーしないでください, + おねがいします. + + 法律に関することには, 十分注意をはらってください. + 私達に法律に反するような形でソフトフェアの配布をさせない + でください! + + + + 困ったら.... + + 私たちに質問を送る前に, + 既存のportの例とbsd.port.mkを + ちゃんと読んでください! ;) + + それでもわからないことがあったら, + 一人で悩まないでどんどん 質問してください! :) + + + + + <filename>Makefile</filename> のお手本 + + これはportの Makefile + を作る際のお手本です. かぎかっこ + ([])内のコメントは忘れずに取ってください. + + 変数の順番, 段落の間の空行など, + Makefile を作るときはなるべくこ + の形式にしたがってください. + この形式は重要な情報が簡単に見つけられるように + 設計されています. portlint を使って + Makefile をチェックすることが + 推奨されています. + + +[ヘッダ -- どのようなportのMakefileかすぐにわかるようになっています] +# New ports collection makefile for: xdvi +# Version required: pl18 ["1.5alpha" みたいなのでも結構です] +[この Makefile の最初の版が作成された日付です. この port をアップグ + レードするときには変えないでください.] +# Date created: 26 May 1995 +[このソフトウェアを最初に FreeBSD に port した人の名前, つまり, + この Makefile の最初の版を書いた人です. この port をアップグレー + ドするとき, この行も変えないでください.] +# Whom: Satoshi Asami <asami@FreeBSD.ORG> +# +# $Id$ +[ ^^^^ この部分は, CVS ツリーに入れる時に自動的に RCS の ID 文字列に + 置き換えられます.] +# + +[Port自体, およびオリジナルのソースを取ってくるところを記述する部分. + 最初は必ずDISTNAME, そして必要ならPKGNAME, CATEGORIES, 続いて + MASTER_SITESがおかれ, さらに MASTER_SITE_SUBDIR がおかれることもあり + ます. そのあと, EXTRACT_SUFX か DISTFILES を指定することも可能です] +DISTNAME= xdvi +PKGNAME= xdvi-pl18 +CATEGORIES= print +[MASTER_SITE_* マクロを使用しない場合は, +最後のスラッシュを忘れないように ("/")!] +MASTER_SITES= ${MASTER_SITE_XCONTRIB} +MASTER_SITE_SUBDIR= applications +[ソースファイルが標準の ".tar.gz" 形式でない時にこれを使いましょう] +EXTRACT_SUFX= .tar.Z + +[配布パッチのセクション -- ない場合もあります] +PATCH_SITES= ftp://ftp.sra.co.jp/pub/X11/japanese/ +PATCHFILES= xdvi-18.patch1.gz xdvi-18.patch2.gz + +[保守責任者 -- これは *必ず* 必要です. 担当者 (あなた) 自身, あるいは + 担当者に素早く連絡をとれる人のアドレスを書いてください. どうしてもこ + こに自分のアドレスを書くのがいやな人は "ports@FreeBSD.ORG" と書いて + もいいです] +MAINTAINER= asami@FreeBSD.ORG + +[依存するport -- ない場合もあります] +RUN_DEPENDS= gs:${PORTSDIR}/print/ghostscript +LIB_DEPENDS= Xpm.5:${PORTSDIR}/graphics/xpm + +[ここには標準のbsd.port.mkの変数で, 上のどれにもあてはまらないものを + 書きます] +[コンフィグレーション, コンパイル, インストールなどの時に質問をする + なら...] +IS_INTERACTIVE=yes +[${DISTNAME}以外のディレクトリにソースが展開されるなら...] +WRKSRC= ${WRKDIR}/xdvi-new +[配布されているパッチが ${WRKSRC} に対する相対パスで作られてい + い場合にこの変数の指定が必要かも...] +PATCH_DIST_STRIP= -p1 +[GNU autoconfによって生成された "configure" スクリプトを走らせたいなら...] +GNU_CONFIGURE= yes +[/usr/bin/makeでなく, GNU makeを使わないといけないなら...] +USE_GMAKE= yes +[これがXのアプリケーションで "xmkmf -a" を走らせたいなら...] +USE_IMAKE= yes +[などなど] + +[下の方のルールで使う非標準の変数] +MY_FAVORITE_RESPONSE= "yeah, right" + +[そして, 特別なターゲット, 使用順に] +pre-fetch: + i go fetch something, yeah + +post-patch: + i need to do something after patch, great + +pre-install: + and then some more stuff before installing, wow + +[最後には必ず] +.include <bsd.port.mk> + + + + Packageの名前 + + Package の名前は以下のルールにしたがってつけてください. + こ れは package のディレクトリを見やすくするためで, + 無秩序な名前 + がたくさん並んでいるとユーザが使いづらくなるのでは + という心配か らです. + (FTPサイトなどにはたくさんpackageがありますからね.) + + Packageの名前は以下のようにしてください. + + 言語-名前-オプション + バージョン.番号 + + + DISTNAME + が上記の形式になっていない場合に は, + PKGNAME をそのようにしてください. + + + + FreeBSD + はユーザの慣れ親しんだ言語のサポートに力を入れて います. + 特定の言語のためのportのpackage名には + 言語- に ISO-639 + で定義されている言語名の略称を入れ てください. 例えば, + 日本語なら ja, ロシア語なら + ru, ベト ナム語なら + vi, 中国語なら zh, + 韓国語ならば ko, ドイツ 語なら + de, といった具合です. + + + + 名前 + の部分は原則的にはすべて英小文字 を使います. + 例外はたくさんのプログラムが入っている巨大なport + の場合で, XFree86 (ほんとにあるんですよ) やImageMagickな + どがこれにあたります. そうでない場合には, + 名前の大文字を小文 字に (少なくとも最初の一字だけは) + 変えてください. もし, + 大文字であることが重要な場合(例えば, 1文字の名前, + R とか V)には, + あなたの裁量で大文字を使うのも良いでしょう. Perl 5 + のモジュールでは, 頭に p5- を付け, + 2重コロン (::) + のセパレータをハイフン( - ) + に置きかえるしきたりになっています. 例えば, + Data::Dumper は + p5-Data-Dumper になります. また, その + ソフトウェアの名前として通常使われるものに番号, + ハイフン, あ るいは下線が入っている場合には, + それらを使うことも構いません + (kinput2 など). + + + + コンパイル時に環境変数や make + の引数などで + ハードコードされたデフォルト + を変えてコンパイルできる場合, + -compiled.specifics + にそのコンパイル時のデフォルトを入れてください + (ハイフンはあってもなくてもかまいません). 用紙のサイズ, + あるいはフォントの解像度などがこれにあたります. + + + + バージョン番号は数字とアルファベットからなり, + ピリオド (.) で区切ります. + アルファベットは二文字以上続けてはいけませ ん. + ただ一つの例外は「パッチレベル」を意味する + pl で, それ 以外にバージョン番号が + まったくついていない場合にのみ使うことがで + きます. + + + + では, DISTNAMEを正しい + PKGNAMEに直す例を見てみましょう: + + + + + + DISTNAME + PKGNAME + 理由 + + + + + + mule-2.2.2. + mule-2.2.2 + まったく問題なし + + + + XFree86-3.1.2 + XFree86-3.1.2 + 同上 + + + + EmiClock-1.0.2 + emiclock-1.0.2 + プログラム一つだけの時は小文字のみ + + + + gmod1.4 + gmod-1.4 + + `<名前>' のあとにハイフンが必要 + + + + xmris.4.0.2 + xmris-4.0.2 + 同上 + + + + rdist-1.3alpha + rdist-1.3a + alphaのような文字列は使えない + + + + + es-0.9-beta1 + es-0.9b1 + 同上 + + + + v3.3beta021.src + tiff-3.3 + なんなんでしょう ;) + + + + tvtwm + tvtwm-pl11 + バージョン番号は必ず必要 + + + + piewm + piewm-1.0 + 同上 + + + + xvgr-2.10pl1 + xvgr-2.10.1 + pl + が使えるのは他にバージョン番号がない場合のみ + + + + gawk-2.15.6 + ja-gawk-2.15.6 + 日本語バージョン + + + + psutils-1.13 + psutils-letter-1.13 + コンパイル時に用紙のサイズを指定 + + + + pkfonts + pkfonts300-1.0 + 300dpiフォント用のpackage + + + + + + オリジナルのソースにまったくバージョン情報が見当たらず, + また原作 + 者が新しいバージョンをリリースする可能性が低いときには, + バージョ ン番号として 1.0 + を使えばいいでしょう (上記のpiewmの例がこ れにあたります). + そうでない場合には, 原作者に聞くか, 日付 + ( + 年. + .) + を使うなどしてください. + + + + カテゴリ + + すでに御存知のように, ports はいくつかのカテゴリに + 分類されています. これを有効に利用するためには, port を + 行う人々とユーザが, そろぞれのカテゴリが何であるか, + どのようにしてカテゴリに分類するかを理解する必要が + あります. + + + 現在のカテゴリのリスト + + まず, これが現在の port のカテゴリーのリストです. + アスタリスク(*) が付いているものは, + バーチャル(virtual) カテゴリです -- + これらには対応するサブディレクトリが port + ツリーにはありません. + + + + バーチャルカテゴリでないものは, + そのサブディレクトリ内の pkg/COMMENT + に1行の記述があります + (例, archivers/pkg/COMMENT). + + + + + + + Category + Description + + + + + + afterstep* + Ports to support AfterStep window manager + + + + archivers + Archiving tools. + + + + astro + Astronomical ports. + + + + audio + Sound support. + + + + benchmarks + Benchmarking utilities. + + + + biology + Biology-related software. + + + + cad + Computer aided design tools. + + + + chinese + Chinese language support. + + + + comms + Communication software. Mostly software to talk to + your serial port. + + + + converters + Character code converters. + + + + databases + Databases. + + + + deskutils + Things that used to be on the desktop before + computers were invented. + + + + devel + Development utilities. Do not put libraries here just + because they are libraries—unless they truly don't + belong to anywhere else, they shouldn't be in this + category. + + + + editors + General editors. Specialized editors go in the + section for those tools (e.g., a mathematical-formula + editor will go in math). + + + + elisp + Emacs-lisp ports. + + + + emulators + Emulators for other operating systems. Terminal + emulators do not belong + here—X-based ones should go to + x11 and text-based ones to either + comms or misc, + depending on the exact functionality. + + + + games + Games. + + + + german + German language support. + + + + graphics + Graphics utilities. + + + + japanese + Japanese language support. + + + + kde* + Ports that form the K Desktop Environment + (kde). + + + + korean + Korean language support. + + + + lang + Programming languages. + + + + mail + Mail software. + + + + math + Numerical computation software and other utilities + for mathematics. + + + + mbone + MBone applications. + + + + misc + Miscellaneous utilities—basically things that + doesn't belong to anywhere else. This is the only category + that should not appear with any other non-virtual + category. If you have misc with + something else in your CATEGORIES line, + that means you can safely delete misc + and just put the port in that other subdirectory! + + + + net + Miscellaneous networking software. + + + + news + USENET news software. + + + + offix* + Ports from the OffiX suite. + + + + palm + Software support for the 3Com Palm(tm) series. + + + + perl5* + Ports that require perl version 5 to run. + + + + plan9* + Various programs from Plan9. + + + + print + Printing software. Desktop publishing tools + (previewers, etc.) belong here too. + + + + python* + Software written in python. + + + + russian + Russian language support. + + + + security + Security utilities. + + + + shells + Command line shells. + + + + sysutils + System utilities. + + + + tcl75* + Ports that use tcl version 7.5 to run. + + + + tcl76* + Ports that use tcl version 7.6 to run. + + + + tcl80* + Ports that use tcl version 8.0 to run. + + + + tcl81* + Ports that use tcl version 8.1 to run. + + + + textproc + Text processing utilities. It does not include + desktop publishing tools, which go to print/. + + + + tk41* + Ports that use tk version 4.1 to run. + + + + tk42* + Ports that use tk version 4.2 to run. + + + + tk80* + Ports that use tk version 8.0 to run. + + + + tk81* + Ports that use tk version 8.1 to run. + + + + vietnamese + Vietnamese language support. + + + + windowmaker* + Ports to support the WindowMaker window + manager + + + + www + Software related to the World Wide Web. HTML language + support belong here too. + + + + x11 + The X window system and friends. This category is + only for software that directly support the window system. + Do not put regular X applications here. If your port is + an X application, define USE_XLIB + (implied by USE_IMAKE) and put it in + appropriate categories. Also, many of them go into other + x11-* categories (see below). + + + + x11-clocks + X11 clocks. + + + + x11-fm + X11 file managers. + + + + x11-fonts + X11 fonts and font utilities. + + + + x11-toolkits + X11 toolkits. + + + + x11-wm + X11 window managers. + + + + + + + + 適切なカテゴリの選択 + + 多くのカテゴリに重なるので, どれを '第一' + カテゴリにするかを決めなければならないことが + たびたびあるでしょう. これを + うまく決めるルールがいくつかあります. + 以下はその優先順のリストで, 優先度の高いものから + 低いものの順に書いてあります. + + + + 言語特有のカテゴリがまず最初です. + 例えば日本語の X11 のフォントをインストールする + port の場合, CATEGORIES 行は + japanese x11-fonts となるでしょう. + + + + + より特徴的なカテゴリが, 一般的なカテゴリより + 優先されます. 例えば, HTML エディタの場合は + www editors となり, + 逆順にはしないでください. また, port が + mail, mbone, + news, security, + www のいづれかに属するとには, + net は必要ありません. + + + + x11 を第2カテゴリにするのは, + 第1カテゴリが自然言語の場合のみにしてください. 特に X + のアプリケーションには x11 + を指定しないでください. + + + + もし, あなたの port が他のどのカテゴリにも + 属しないばあいには, misc + にしてください. + + + + もし, あなたがカテゴリについて自信が持てない場合には, + そのことを send-pr するときに + 書き加えてください. そうすれば import するまえに + それについて議論できます. (もしあなたが commiter であれば, + そのことを &a.ports に送って, 先に議論 + するようにしてください — 新しい port + が間違ったカテゴリに import されて, + すぐ移動されることが多いので.) + + + + + このドキュメントと ports システムの変更 + + もしあなたが, たくさんの ports の保守を + しているのであれば, &a.ports メーリングリストの内容を + フォロウすることを考えてください. Ports + のしくみについての重要な変更点はここに アナウンスされます. + 最新の変更点については, いつでも, + the bsd.port.mk CVS log + で詳細な情報を得ることができます. + + + + + やっとおしまい! + + いやはや, 長い文章ですみません. + ここまで読んでくださった方に は感謝, 感謝でございます. (_ _) + + さあ, portの作り方がわかったところで, + 世界中のソフトウェア をport化しましょう. + FreeBSDプロジェクトに貢献するには, それ + がもっとも簡単な方法です! :) + + + + + 金銭, ハードウェアまたはインターネットアクセス + + FreeBSD プロジェクトの目的を進めるための寄付や, + 私たちと同じような ボランティアの細く長い ! 努力を, + 私たちは常に喜んで受け入れています. + また一般的に私たちは自分達で + 周辺機器を買う資金が不足しているため, + 周辺機器のサポートを充実させるのに + ハードウェアの寄付はとても重要です. + + + 資金の寄付 + + FreeBSD プロジェクトは501(C3) (非営利) 企業ではないため, + いかなる寄 + 付に対しても特別な税金の優遇措置を提供することができません. + このような 寄付はプロジェクトを代表して FreeBSD, Inc + により感謝をもって受け入れら れるでしょう. + + FreeBSD, Inc.は FreeBSD + プロジェクトの推進とプロジェクトに企業とし + ての最小限の体裁を持たせることを目的として, 1995年の初めに + &a.jkh; と &a.dg; により設立されました. + 寄付されたすべての資金は (最終的に FreeBSD, + Inc.によりもたらされるであろうすべての利益も同様に) + プロジェク + トの目標を推進するためだけに使われるでしょう. + + 支払い先を FreeBSD, Inc. とした小切手を, + 次の住所気付けで送ってください: + +
+ FreeBSD, Inc. + c/o Jordan Hubbard + 4041 Pike Lane, Suite F + Concord + CA, 94520 +
+ + [現在 私書箱が開設されるまで一時的に Walnut Creek CDROM + の住所を使用] + + 電信振替は次の所まで直接送れるでしょう: + +
+ Bank Of America + Concord Main Office + P.O. Box 37176 + San Francisco + CA, 94137-5176 + + Routing #: 121-000-358 + Account #: 01411-07441 (FreeBSD, Inc.) +
+ + 寄付に関することは全て電子メールもしくは上記 FreeBSD, + Inc. の住所宛の郵政省メールにて Jordan Hubbard + jkh@FreeBSD.org + までお送りくださるようお願いします. + + もし 寄贈者ギャラリー + の節で匿名を希望される 方は, 寄付の際にその旨お伝えください. + Thanks! +
+ + + ハードウェアの寄贈 + + FreeBSD プロジェクトは, + 次の3つのカテゴリのどんなハードウェアの寄贈 も, + 喜んで受け付けます: + + + + ディスクドライブ, + メモリまたは完全なシステムといった一般用途のハー + ドウェアは, 資金の寄付の節にある + FreeBSD, Inc. の住所まで送っ てください. + + + + 進行中の受け入れテストのための + ハードウェアが必要とされていま す. + 新たなリリース毎に適切な逆行テストができるように, + 私たちは現在, FreeBSD + がサポートするすべてのコンポーネントの + テストラボを設置しよう としています. 私たちにはまだ, + たくさんの重要な部品 (ネットワークカード, + マザーボードなど) が不足していますので, + このような寄贈をしたいと思って いるならば, &a.dg; + へコンタクトしてどの部品がまだ必要とされているか + の情報を得てください. + + + + 現在 FreeBSD にサポートされていないハードウェアで, + サポートに追 加して欲しいもの. + 私たちが新しいハードウェアを受けとる前にそのタスクを + 引き受けてくれる開発者を探す必要があるため, + その部品を送る前に &a.core; + にコンタクトを取ってください. + + + + + + インターネットアクセスの寄付 + + 私たちは常に FTP, WWW や cvsup + の新しいミラーサイトを募集しています. + ミラーサイトになりたい場合には the FreeBSD project + administrators admin@FreeBSD.ORG + にコンタクトを取って, 詳し + い情報を手に入れてください. + +
+
+ + + 寄贈者ギャラリー + + FreeBSD プロジェクトは次の寄贈者に恩義を受けており, + ここに公表して 感謝の意を表したいと思います. + + + + + セントラルサーバプロジェクトへの寄贈者: + + 次に挙げる個人および企業からは, + セントラルサーバマシンのための 部品の寄贈を頂いており, + それによって freefall.freebsd.org + をリプレースして新たに FreeBSD + プロジェクトのセントラルサーバマシンを + 構築することができました: + + + + Ade Barkah mbarkah@freebsd.org + と彼の所属する Hemisphere Online + は, Pentium Pro (P6) 200Mhz CPU + を寄贈してくださいました. + + + + ASA + Computers は, Tyan 1662 + マザーボード + を寄贈してくださいました. + + + + ViaNet + Communications の Joe McGuckin + joe@via.net は, Kingston + イーサネットコントローラ + を寄贈してくださいました. + + + + Jack O'Neill + jack@diamond.xtalwind.net は, + NCR 53C875 SCSI コントローラカード + を寄贈してくださいました. + + + + Alameda + Networks の Ulf Zimmermann + ulf@Alameda.net は, 128MB + のメモリ, そして 4 GB + のディスクドライブと匡体 + を寄贈してくださいました. + + + + + + 直接的な資金提供: + + 次に挙げる個人および企業からは FreeBSD + プロジェクトに対する直接的な + 資金提供を頂いております: + + + + Annelise Anderson + ANDRSN@HOOVER.STANFORD.EDU + + + + Matt Dillon dillon@best.net + + + + + Epilogue Technology Corporation + + + + Sean Eric Fagan + + + + Don Scott Wilde + + + + Gianmarco Giovannelli + gmarco@masternet.it + + + + Josef C. Grosch joeg@truenorth.org + + + + Robert T. Morris + + + + Chuck Robey chuckr@freebsd.org + + + + + Imaginary Landscape, LLC. + の Kenneth P. Stox + ken@stox.sa.enteract.com + + + + Dmitry S. Kohmanyuk dk@dog.farm.org + + + + 日本の + Laser5 + はいくつかの FreeBSD CD の販売利益の一部を + 寄付してくれました. + + + + + 蕗出版 は, はじめての FreeBSD + の売り上げの一部を FreeBSD プロジェクト及び + XFree86 プロジェクトへ寄付してくれました. + + + + アスキー + は FreeBSD 関連の書籍の売り上げの一部を FreeBSD + プロジェクト及び FreeBSD 友の会へ寄付してくれました. + + + + + + 横河電機株式会社 からは FreeBSD + プロジェクトへ多大な寄付をいただきました. + + + + BuffNET + + + + Pacific + Solutions + + + + + + ハードウェアの寄贈者: + + 次に挙げる個人および企業からは, + テストやデバイスドライバの開発 / サポート + のためのハードウェアの寄贈を頂いております: + + + + Walnut Creek CDROM は, + ネットワークへのアクセスおよび + 他のハードウェアリソースの寄贈はいうまでもなく, + 開発に使うための Pentium P5-90 と 486/DX2-66 EISA/VL + のシステム数台を 提供してくださいました. + + + + TRW Financial Sysytems社は, PC 130台, 68 GB + のファイルサーバ 3台, 12のイーサネット, + ディスクレスコードのデバッグをおこなうための ルータ + 2台及び ATM スイッチを提供してくださいました. また, + 彼らは 2, 3人の FreeBSD ハッカーを雇って, FreeBSD + に専念させて くださっております. + ありがとうございます! + + + + Dermot McDonnell は, 東芝 XM3401B CD-ROM ドライブを + 寄贈してくださいました. その CD-ROM ドライブは現在 + freefall で使用されています. + + + + &a.chuck; は, 実験用のフロッピーテープストリーマを + 寄付してくださいました. + + + + Larry Altneu larry@ALR.COM と + &a.wilko;は, wt + ドライバを改良するために Wangtek と Archive の QIC-02 + テープドライブを提供してくださいました. + + + + Ernst Winter ewinter@lobo.muc.de は, + このプロジェクトへ 2.88 MB + のフロッピードライブを提供してくださいました. + うまくいけば, + これでフロッピーディスクドライバを書き直すための + プレッシャーが増えるでしょう. ;-) + + + + Tekram + Technologies は NCR ドライバや AMD + ドライバと自社のカードの逆行テストのため FAST/ULTRA + SCSI ホストアダプタ DC-390, DC-390U, DC-390F を + 各1枚提供してくださいました. また, フリーな OS + のためのドライバの ソースを自社の FTP サーバ + ftp://ftp.tekram.com/scsi/FreeBSD + で公開されていることも 称賛に値するでしょう. + + + + Larry M. Augustin lma@varesearch.com + は Symbios Sym8751S SCSI + カードを寄贈してくださっただけでなく, Ultra-2 や LVD + をサポートする次期チップ Sym53c895 のものを含む + データブックのセットと, 最新の Symbios SCSI + チップが持つ先進的機能を 安全に使う方法について書かれた + 最新のプログラミングマニュアルも 寄贈してくださいました. + 本当にありがとうございます ! + + + + Christoph Kukulies kuku@freebsd.org + は, IDE CD-ROM ドライバ開発用の FX120 12 倍速 Mitsumi + CD-ROM ドライブ を提供してくださいました. + + + + + + 特筆すべき寄贈者: + + + + Walnut Creek + CDROM は, + 言い表せないほど多くの寄付をしてくださいました (詳細は + FreeBSD 小史を参照). + 特に, 私たちのもともとのプライマリ開発マシンである + freefall.FreeBSD.ORG, + テストおよびビルドマシンである thud.FreeBSD.ORG + で使用しているハードウェアに対し 感謝したいと思います. + また彼らには, 数年にわたる色々な貢献者への資金提供や, + インターネット への T1 + コネクションの無制限使用を提供して + 頂いた恩義があります. + + + + interface + business GmbH, Dresden は, &a.joerg; + を根気よく サポートしてくださいました. 彼は本職より + FreeBSD の仕事を好みがちであり, 彼個人の接続があまりに + 遅くなったり途切れたりして仕事にならない時は必ず + interface business の (非常に高価な) EUnet + インターネット接続に頼ったものです... + + + + Berkeley Software + Design, Inc. は, 同社の DOS + エミュレータのコードを BSD コミュ + ニティ全体に対して提供してくれました. このコードは, + dosemu + コマンドに利用されています. + + + + + + + + コアチームの卒業生 + + 次に挙げる人々は()で記した期間, FreeBSD + コアチームのメンバーでした. FreeBSD + プロジェクトにおける彼らの努力に感謝の意を表します. + + + だいたいの年代順: + + + + Guido van Rooij (1995 - 1999) + + + + John Dyson (1993 - 1998) + + + + Nate Williams (1992 - 1996) + + + + Rod Grimes (1992 - 1995) + + + + Andreas Schulz (1992 - 1995) + + + + Geoff Rehmet (1993 - 1995) + + + + Paul Richards (1992 - 1995) + + + + Scott Mace (1993 - 1994) + + + + Andrew Moore (1993 - 1994) + + + + Christoph Robitschko (1993 - 1994) + + + + J. T. Conklin (1992 - 1993) + + + + + + BSD派生ソフトウェアへのコントリビュータ + + このソフトウェアは最初は William F. Jolitz の 386BSD release + 0.1 から派生しましたが, オリジナルの 386BSD + に固有のコードはほとんど 残っていません. + このソフトウェアは基本的にはカリフォルニア大学 バークレイ校の + Computer Science Research Group (CSRG) とその共同研究者 + たちによる 4.4BSD-Lite リリースから再実装されました. + + また, NetBSD や OpenBSD の一部も FreeBSD + に取り込まれています. したがって私たちは NetBSD と OpenBSD + へ貢献した人々すべてに感謝します. + + + + その他の FreeBSD へのコントリビュータ + + (名前でアルファベット順に): + + + + + + + + ABURAYA Ryushirou rewsirow@ff.iij4u.or.jp + + + + AMAGAI Yoshiji amagai@nue.org + + + + Aaron Bornstein aaronb@j51.com + + + + Aaron Smith aaron@tau.veritas.com + + + + Achim Patzner ap@noses.com + + + + Ada T Lim ada@bsd.org + + + + Adam Baran badam@mw.mil.pl + + + + Adam Glass glass@postgres.berkeley.edu + + + + Adam McDougall mcdouga9@egr.msu.edu + + + + Adrian Colley aecolley@ois.ie + + + + Adrian Hall adrian@ibmpcug.co.uk + + + + Adrian Mariano adrian@cam.cornell.edu + + + + Adrian Steinmann ast@marabu.ch + + + + Adrian T. Filipi-Martin + atf3r@agate.cs.virginia.edu + + + + Ajit Thyagarajan unknown + + + + Akio Morita + amorita@meadow.scphys.kyoto-u.ac.jp + + + + Akira SAWADA unknown + + + + Akira Watanabe + akira@myaw.ei.meisei-u.ac.jp + + + + Akito Fujita fujita@zoo.ncl.omron.co.jp + + + + Alain Kalker + A.C.P.M.Kalker@student.utwente.nl + + + + Alan Bawden alan@curry.epilogue.com + + + + Alan Cox alc@cs.rice.edu + + + + Alec Wolman wolman@cs.washington.edu + + + + Aled Morris aledm@routers.co.uk + + + + Alex garbanzo@hooked.net + + + + Alex D. Chen + dhchen@Canvas.dorm7.nccu.edu.tw + + + + Alex G. Bulushev bag@demos.su + + + + Alex Le Heux alexlh@funk.org + + + + Alexander B. Povolotsky tarkhil@mgt.msk.ru + + + + Alexander Leidinger + netchild@wurzelausix.CS.Uni-SB.DE + + + + Alexandre Snarskii snar@paranoia.ru + + + + Alistair G. Crooks agc@uts.amdahl.com + + + + Allan Saddi asaddi@philosophysw.com + + + + Allen Campbell allenc@verinet.com + + + + Amakawa Shuhei amakawa@hoh.t.u-tokyo.ac.jp + + + + Amancio Hasty hasty@star-gate.com + + + + Amir Farah amir@comtrol.com + + + + Amy Baron amee@beer.org + + + + Anatoly A. Orehovsky tolik@mpeks.tomsk.su + + + + Anatoly Vorobey mellon@pobox.com + + + + Anders Nordby nickerne@nome.no + + + + Anders Thulin Anders.X.Thulin@telia.se + + + + Andras Olah olah@cs.utwente.nl + + + + Andre Albsmeier + Andre.Albsmeier@mchp.siemens.de + + + + Andre Oppermann andre@pipeline.ch + + + + Andreas Haakh ah@alman.robin.de + + + + Andreas Kohout shanee@rabbit.augusta.de + + + + Andreas Lohr andreas@marvin.RoBIN.de + + + + Andreas Schulz unknown + + + + Andreas Wetzel mickey@deadline.snafu.de + + + + Andreas Wrede andreas@planix.com + + + + Andres Vega Garcia unknown + + + + Andrew Atrens atreand@statcan.ca + + + + Andrew Gillham gillham@andrews.edu + + + + Andrew Gordon andrew.gordon@net-tel.co.uk + + + + Andrew Herbert andrew@werple.apana.org.au + + + + Andrew J. Korty ajk@purdue.edu + + + + Andrew L. Moore alm@mclink.com + + + + Andrew McRae amcrae@cisco.com + + + + Andrew Stevenson andrew@ugh.net.au + + + + Andrew Timonin tim@pool1.convey.ru + + + + Andrew V. Stesin stesin@elvisti.kiev.ua + + + + Andrew Webster awebster@dataradio.com + + + + Andrey Zakhvatov andy@icc.surw.chel.su + + + + Andy Farkas andyf@speednet.com.au + + + + Andy Valencia ajv@csd.mot.com + + + + Andy Whitcroft andy@sarc.city.ac.uk + + + + Angelo Turetta ATuretta@stylo.it + + + + Anthony C. Chavez magus@xmission.com + + + + Anthony Yee-Hang Chan yeehang@netcom.com + + + + Anton Berezin tobez@plab.ku.dk + + + + Antti Kaipila anttik@iki.fi + + + + Are Bryne are.bryne@communique.no + + + + Ari Suutari ari@suutari.iki.fi + + + + Arjan de Vet devet@IAEhv.nl + + + + Arne Henrik Juul arnej@Lise.Unit.NO + + + + Assar Westerlund assar@sics.se + + + + Atsushi Furuta furuta@sra.co.jp + + + + Atsushi Murai amurai@spec.co.jp + + + + Bakul Shah bvs@bitblocks.com + + + + Barry Bierbauch pivrnec@vszbr.cz + + + + Barry Lustig barry@ictv.com + + + + Ben Hutchinson benhutch@xfiles.org.uk + + + + Ben Jackson unknown + + + + Ben Smithurst ben@scientia.demon.co.uk + + + + Ben Walter bwalter@itachi.swcp.com + + + + Benjamin Lewis bhlewis@gte.net + + + + Bernd Rosauer br@schiele-ct.de + + + + Bill Kish kish@osf.org + + + + Bill Trost trost@cloud.rain.com + + + + Blaz Zupan blaz@amis.net + + + + Bob Van Valzah Bob@whitebarn.com + + + + Bob Willcox bob@luke.pmr.com + + + + Boris Staeblow balu@dva.in-berlin.de + + + + Boyd R. Faulkner faulkner@asgard.bga.com + + + + Brad Karp karp@eecs.harvard.edu + + + + Bradley Dunn bradley@dunn.org + + + + Brandon Gillespie brandon@roguetrader.com + + + + &a.wlloyd + + + + Bob Wilcox bob@obiwan.uucp + + + + Boyd Faulkner faulkner@mpd.tandem.com + + + + Brent J. Nordquist bjn@visi.com + + + + Brett Lymn blymn@mulga.awadi.com.AU + + + + Brett Taylor + brett@peloton.physics.montana.edu + + + + Brian Campbell brianc@pobox.com + + + + Brian Clapper bmc@willscreek.com + + + + Brian Cully shmit@kublai.com + + + + Brian F. Feldman green@unixhelp.org + + + + Brian Handy + handy@lambic.space.lockheed.com + + + + Brian Litzinger brian@MediaCity.com + + + + Brian McGovern bmcgover@cisco.com + + + + Brian Moore ziff@houdini.eecs.umich.edu + + + + Brian R. Haug haug@conterra.com + + + + Brian Tao taob@risc.org + + + + Brion Moss brion@queeg.com + + + + Bruce A. Mah bmah@ca.sandia.gov + + + + Bruce Albrecht bruce@zuhause.mn.org + + + + Bruce Gingery bgingery@gtcs.com + + + + Bruce J. Keeler loodvrij@gridpoint.com + + + + Bruce Murphy packrat@iinet.net.au + + + + Bruce Walter walter@fortean.com + + + + Carey Jones mcj@acquiesce.org + + + + Carl Fongheiser cmf@netins.net + + + + Carl Mascott cmascott@world.std.com + + + + Casper casper@acc.am + + + + Castor Fu castor@geocast.com + + + + Cejka Rudolf cejkar@dcse.fee.vutbr.cz + + + + Chain Lee chain@110.net + + + + Charles Hannum mycroft@ai.mit.edu + + + + Charles Henrich henrich@msu.edu + + + + Charles Mott cmott@srv.net + + + + Charles Owens owensc@enc.edu + + + + Chet Ramey chet@odin.INS.CWRU.Edu + + + + Chia-liang Kao clkao@CirX.ORG + + + + Chiharu Shibata chi@bd.mbn.or.jp + + + + Chip Norkus unknown + + + + Choi Jun Ho junker@jazz.snu.ac.kr + + + + Chris Csanady cc@tarsier.ca.sandia.gov + + + + Chris Dabrowski chris@vader.org + + + + Chris Dillon cdillon@wolves.k12.mo.us + + + + Chris Piazza cpiazza@home.net + + + + Chris Shenton + cshenton@angst.it.hq.nasa.gov + + + + Chris Stenton jacs@gnome.co.uk + + + + Chris Timmons skynyrd@opus.cts.cwu.edu + + + + Chris Torek torek@ee.lbl.gov + + + + Christian Gusenbauer + cg@fimp01.fim.uni-linz.ac.at + + + + Christian Haury Christian.Haury@sagem.fr + + + + Christian Weisgerber + naddy@bigeye.rhein-neckar.de + + + + Christoph P. Kukulies kuku@FreeBSD.org + + + + Christoph Robitschko + chmr@edvz.tu-graz.ac.at + + + + Christoph Weber-Fahr + wefa@callcenter.systemhaus.net + + + + Christopher G. Demetriou + cgd@postgres.berkeley.edu + + + + Christopher T. Johnson + cjohnson@neunacht.netgsi.com + + + + Chrisy Luke chrisy@flix.net + + + + Chuck Hein chein@cisco.com + + + + Clive Lin clive@CiRX.ORG + + + + Colman Reilly careilly@tcd.ie + + + + Conrad Sabatier conrads@neosoft.com + + + + Coranth Gryphon gryphon@healer.com + + + + Cornelis van der Laan + nils@guru.ims.uni-stuttgart.de + + + + Cove Schneider cove@brazil.nbn.com + + + + Craig Leres leres@ee.lbl.gov + + + + Craig Loomis unknown + + + + Craig Metz cmetz@inner.net + + + + Craig Spannring cts@internetcds.com + + + + Craig Struble cstruble@vt.edu + + + + Cristian Ferretti cfs@riemann.mat.puc.cl + + + + Curt Mayer curt@toad.com + + + + Cy Schubert cschuber@uumail.gov.bc.ca + + + + DI. Christian Gusenbauer + cg@scotty.edvz.uni-linz.ac.at + + + + Dai Ishijima ishijima@tri.pref.osaka.jp + + + + Damian Hamill damian@cablenet.net + + + + Dan Cross tenser@spitfire.ecsel.psu.edu + + + + Dan Lukes dan@obluda.cz + + + + Dan Nelson dnelson@emsphone.com + + + + Dan Walters hannibal@cyberstation.net + + + + Daniel Baker dbaker@crash.ops.neosoft.com + + + + Daniel M. Eischen + deischen@iworks.InterWorks.org + + + + Daniel O'Connor doconnor@gsoft.com.au + + + + Daniel Poirot poirot@aio.jsc.nasa.gov + + + + Daniel Rock rock@cs.uni-sb.de + + + + Danny Egen unknown + + + + Danny J. Zerkel dzerkel@phofarm.com + + + + Darren Reed avalon@coombs.anu.edu.au + + + + Dave Adkins adkin003@tc.umn.edu + + + + Dave Andersen angio@aros.net + + + + Dave Blizzard dblizzar@sprynet.com + + + + Dave Bodenstab imdave@synet.net + + + + Dave Burgess burgess@hrd769.brooks.af.mil + + + + Dave Chapeskie dchapes@ddm.on.ca + + + + Dave Cornejo dave@dogwood.com + + + + Dave Edmondson davided@sco.com + + + + Dave Glowacki dglo@ssec.wisc.edu + + + + Dave Marquardt marquard@austin.ibm.com + + + + Dave Tweten tweten@FreeBSD.org + + + + David A. Adkins adkin003@tc.umn.edu + + + + David A. Bader dbader@umiacs.umd.edu + + + + David Borman dab@bsdi.com + + + + David Dawes dawes@XFree86.org + + + + David Filo filo@yahoo.com + + + + David Holland dholland@eecs.harvard.edu + + + + David Holloway daveh@gwythaint.tamis.com + + + + David Horwitt dhorwitt@ucsd.edu + + + + David Hovemeyer daveho@infocom.com + + + + David Jones dej@qpoint.torfree.net + + + + David Kelly dkelly@tomcat1.tbe.com + + + + David Kulp dkulp@neomorphic.com + + + + David L. Nugent davidn@blaze.net.au + + + + David Leonard d@scry.dstc.edu.au + + + + David Malone dwmalone@maths.tcd.ie + + + + David Muir Sharnoff muir@idiom.com + + + + David S. Miller davem@jenolan.rutgers.edu + + + + David Wolfskill dhw@whistle.com + + + + Dean Gaudet dgaudet@arctic.org + + + + Dean Huxley dean@fsa.ca + + + + Denis Fortin unknown + + + + Dennis Glatting + dennis.glatting@software-munitions.com + + + + Denton Gentry denny1@home.com + + + + Derek Inksetter derek@saidev.com + + + + Dima Sivachenko dima@Chg.RU + + + + Dirk Keunecke dk@panda.rhein-main.de + + + + Dirk Nehrling nerle@pdv.de + + + + Dmitry Khrustalev dima@xyzzy.machaon.ru + + + + Dmitry Kohmanyuk dk@farm.org + + + + Dom Mitchell dom@myrddin.demon.co.uk + + + + Don Croyle croyle@gelemna.ft-wayne.in.us + + + + &a.whiteside; + + + + Don Morrison dmorrisn@u.washington.edu + + + + Don Yuniskis dgy@rtd.com + + + + Donald Maddox dmaddox@conterra.com + + + + Doug Barton studded@dal.net + + + + Douglas Ambrisko ambrisko@whistle.com + + + + Douglas Carmichael dcarmich@mcs.com + + + + Douglas Crosher dtc@scrooge.ee.swin.oz.au + + + + Drew Derbyshire ahd@kew.com + + + + Duncan Barclay dmlb@ragnet.demon.co.uk + + + + Dustin Sallings dustin@spy.net + + + + Eckart "Isegrim" Hofmann + Isegrim@Wunder-Nett.org + + + + Ed Gold + vegold01@starbase.spd.louisville.edu + + + + Ed Hudson elh@p5.spnet.com + + + + Edward Wang edward@edcom.com + + + + Edwin Groothus edwin@nwm.wan.philips.com + + + + Eiji-usagi-MATSUmoto usagi@clave.gr.jp + + + + ELISA Font Project + + + + Elmar Bartel + bartel@informatik.tu-muenchen.de + + + + Eric A. Griff eagriff@global2000.net + + + + Eric Blood eblood@cs.unr.edu + + + + Eric J. Haug ejh@slustl.slu.edu + + + + Eric J. Schwertfeger eric@cybernut.com + + + + Eric L. Hernes erich@lodgenet.com + + + + Eric P. Scott eps@sirius.com + + + + Eric Sprinkle eric@ennovatenetworks.com + + + + Erich Stefan Boleyn erich@uruk.org + + + + Erik E. Rantapaa rantapaa@math.umn.edu + + + + Erik H. Moe ehm@cris.com + + + + Ernst Winter ewinter@lobo.muc.de + + + + Eugene M. Kim astralblue@usa.net + + + + Eugene Radchenko genie@qsar.chem.msu.su + + + + Evan Champion evanc@synapse.net + + + + Faried Nawaz fn@Hungry.COM + + + + Flemming Jacobsen fj@tfs.com + + + + Fong-Ching Liaw fong@juniper.net + + + + Francis M J Hsieh mjshieh@life.nthu.edu.tw + + + + Frank Bartels knarf@camelot.de + + + + Frank Chen Hsiung Chan + frankch@waru.life.nthu.edu.tw + + + + Frank Durda IV uhclem@nemesis.lonestar.org + + + + Frank MacLachlan fpm@n2.net + + + + Frank Nobis fn@Radio-do.de + + + + Frank Volf volf@oasis.IAEhv.nl + + + + Frank ten Wolde franky@pinewood.nl + + + + Frank van der Linden frank@fwi.uva.nl + + + + Fred Cawthorne fcawth@jjarray.umn.edu + + + + Fred Gilham gilham@csl.sri.com + + + + Fred Templin templin@erg.sri.com + + + + Frederick Earl Gray fgray@rice.edu + + + + FUJIMOTO Kensaku + fujimoto@oscar.elec.waseda.ac.jp + + + + FUJISHIMA Satsuki k5@respo.or.jp + + + + FURUSAWA Kazuhisa + furusawa@com.cs.osakafu-u.ac.jp + + + + Gabor Kincses gabor@acm.org + + + + Gabor Zahemszky zgabor@CoDe.hu + + + + Garance A Drosehn gad@eclipse.its.rpi.edu + + + + Gareth McCaughan gjm11@dpmms.cam.ac.uk + + + + Gary A. Browning gab10@griffcd.amdahl.com + + + + Gary Howland gary@hotlava.com + + + + Gary J. garyj@rks32.pcs.dec.com + + + + Gary Kline kline@thought.org + + + + Gaspar Chilingarov nightmar@lemming.acc.am + + + + Gea-Suan Lin gsl@tpts4.seed.net.tw + + + + Geoff Rehmet csgr@alpha.ru.ac.za + + + + Georg Wagner georg.wagner@ubs.com + + + + Gerard Roudier groudier@club-internet.fr + + + + Gianmarco Giovannelli + gmarco@giovannelli.it + + + + Gil Kloepfer Jr. gil@limbic.ssdl.com + + + + Gilad Rom rom_glsa@ein-hashofet.co.il + + + + Ginga Kawaguti + ginga@amalthea.phys.s.u-tokyo.ac.jp + + + + Giles Lean giles@nemeton.com.au + + + + Glen Foster gfoster@gfoster.com + + + + Glenn Johnson gljohns@bellsouth.net + + + + Godmar Back gback@facility.cs.utah.edu + + + + Goran Hammarback goran@astro.uu.se + + + + Gord Matzigkeit gord@enci.ucalgary.ca + + + + Graham Wheeler gram@cdsec.com + + + + Greg A. Woods woods@zeus.leitch.com + + + + Greg Ansley gja@ansley.com + + + + Greg Troxel gdt@ir.bbn.com + + + + Greg Ungerer gerg@stallion.oz.au + + + + Gregory Bond gnb@itga.com.au + + + + Gregory D. Moncreaff + moncrg@bt340707.res.ray.com + + + + Guy Harris guy@netapp.com + + + + Guy Helmer ghelmer@cs.iastate.edu + + + + HAMADA Naoki hamada@astec.co.jp + + + + HONDA Yasuhiro + honda@kashio.info.mie-u.ac.jp + + + + HOSOBUCHI Noriyuki hoso@buchi.tama.or.jp + + + + Hannu Savolainen hannu@voxware.pp.fi + + + + Hans Huebner hans@artcom.de + + + + Hans Petter Bieker zerium@webindex.no + + + + Hans Zuidam hans@brandinnovators.com + + + + Harlan Stenn Harlan.Stenn@pfcs.com + + + + Harold Barker hbarker@dsms.com + + + + Havard Eidnes + Havard.Eidnes@runit.sintef.no + + + + Heikki Suonsivu hsu@cs.hut.fi + + + + Heiko W. Rupp unknown + + + + Helmut F. Wirth hfwirth@ping.at + + + + Henrik Vestergaard Draboel + hvd@terry.ping.dk + + + + Herb Peyerl hpeyerl@NetBSD.org + + + + Hideaki Ohmon ohmon@tom.sfc.keio.ac.jp + + + + Hidekazu Kuroki hidekazu@cs.titech.ac.jp + + + + Hideki Yamamoto hyama@acm.org + + + + Hidetoshi Shimokawa + simokawa@sat.t.u-tokyo.ac.jp + + + + Hideyuki Suzuki + hideyuki@sat.t.u-tokyo.ac.jp + + + + Hirayama Issei iss@mail.wbs.ne.jp + + + + Hiroaki Sakai sakai@miya.ee.kagu.sut.ac.jp + + + + Hiroharu Tamaru tamaru@ap.t.u-tokyo.ac.jp + + + + Hironori Ikura hikura@kaisei.org + + + + Hiroshi Nishikawa nis@pluto.dti.ne.jp + + + + Hiroya Tsubakimoto unknown + + + + Hiroyuki NAKAJI + nakaji@zeisei3.dpri.kyoto-u.ac.jp + + + + Holger Veit Holger.Veit@gmd.de + + + + Holm Tiffe holm@geophysik.tu-freiberg.de + + + + Horance Chou + horance@freedom.ie.cycu.edu.tw + + + + Horihiro Kumagaio kuma@jp.freebsd.org + + + + Horikawa Kazuo k-horik@mail.yk.rim.or.jp + + + + Hr.Ladavac lada@ws2301.gud.siemens.co.at + + + + Hubert Feyrer hubertf@NetBSD.ORG + + + + Hugh F. Mahon hugh@nsmdserv.cnd.hp.com + + + + Hugh Mahon h_mahon@fc.hp.com + + + + Hung-Chi Chu hcchu@r350.ee.ntu.edu.tw + + + + IMAI Takeshi take-i@ceres.dti.ne.jp + + + + IMAMURA Tomoaki + tomoak-i@is.aist-nara.ac.jp + + + + Ian Dowse iedowse@maths.tcd.ie + + + + Ian Holland ianh@tortuga.com.au + + + + Ian Struble ian@broken.net + + + + Ian Vaudrey i.vaudrey@bigfoot.com + + + + Igor Khasilev igor@jabber.paco.odessa.ua + + + + Igor Roshchin str@giganda.komkon.org + + + + Igor Sviridov siac@ua.net + + + + Igor Vinokurov igor@zynaps.ru + + + + Ikuo Nakagawa ikuo@isl.intec.co.jp + + + + Ilya V. Komarov mur@lynx.ru + + + + Issei Suzuki issei@jp.FreeBSD.org + + + + Itsuro Saito saito@miv.t.u-tokyo.ac.jp + + + + J. Bryant jbryant@argus.flash.net + + + + J. David Lowe lowe@saturn5.com + + + + J. Han hjh@best.com + + + + J. Hawk jhawk@MIT.EDU + + + + J.T. Conklin jtc@cygnus.com + + + + J.T. Jang keith@email.gcn.net.tw + + + + Jack jack@zeus.xtalwind.net + + + + Jacob Bohn Lorensen jacob@jblhome.ping.mk + + + + Jagane D Sundar jagane@netcom.com + + + + Jake Hamby jehamby@lightside.com + + + + James Clark jjc@jclark.com + + + + James D. Stewart jds@c4systm.com + + + + James Jegers jimj@miller.cs.uwm.edu + + + + James Raynard + fhackers@jraynard.demon.co.uk + + + + James T. Liu jtliu@phlebas.rockefeller.edu + + + + James da Silva jds@cs.umd.edu + + + + Jan Conard + charly@fachschaften.tu-muenchen.de + + + + Jan Koum jkb@FreeBSD.org + + + + Janick Taillandier + Janick.Taillandier@ratp.fr + + + + Janusz Kokot janek@gaja.ipan.lublin.pl + + + + Jarle Greipsland jarle@idt.unit.no + + + + Jason Garman init@risen.org + + + + Jason Thorpe thorpej@NetBSD.org + + + + Jason Wright jason@OpenBSD.org + + + + Jason Young + doogie@forbidden-donut.anet-stl.com + + + + Javier Martin Rueda jmrueda@diatel.upm.es + + + + Jay Fenlason hack@datacube.com + + + + Jaye Mathisen mrcpu@cdsnet.net + + + + Jeff Bartig jeffb@doit.wisc.edu + + + + Jeff Forys jeff@forys.cranbury.nj.us + + + + Jeff Kletsky Jeff@Wagsky.com + + + + Jeffrey Evans evans@scnc.k12.mi.us + + + + Jeffrey Wheat jeff@cetlink.net + + + + Jens Schweikhardt + schweikh@ito.uni-stuttgart.de + + + + Jeremy Allison jallison@whistle.com + + + + Jeremy Chatfield jdc@xinside.com + + + + Jeremy Lea reg@shale.csir.co.za + + + + Jeremy Prior unknown + + + + Jeroen Ruigrok/Asmodai asmodai@wxs.nl + + + + Jesse Rosenstock jmr@ugcs.caltech.edu + + + + Jian-Da Li jdli@csie.nctu.edu.tw + + + + Jim Babb babb@FreeBSD.org + + + + Jim Binkley jrb@cs.pdx.edu + + + + Jim Carroll jim@carroll.com + + + + Jim Flowers jflowers@ezo.net + + + + Jim Leppek jleppek@harris.com + + + + Jim Lowe james@cs.uwm.edu + + + + Jim Mattson jmattson@sonic.net + + + + Jim Mercer jim@komodo.reptiles.org + + + + Jim Mock jim@phrantic.phear.net + + + + Jim Wilson wilson@moria.cygnus.com + + + + Jimbo Bahooli + griffin@blackhole.iceworld.org + + + + Jin Guojun jin@george.lbl.gov + + + + Joachim Kuebart unknown + + + + Joao Carlos Mendes Luis jonny@jonny.eng.br + + + + Jochen Pohl jpo.drs@sni.de + + + + Joe "Marcus" Clarke marcus@miami.edu + + + + Joe Abley jabley@clear.co.nz + + + + Joe Jih-Shian Lu jslu@dns.ntu.edu.tw + + + + Joe Orthoefer j_orthoefer@tia.net + + + + Joe Traister traister@mojozone.org + + + + Joel Faedi Joel.Faedi@esial.u-nancy.fr + + + + Joel Ray Holveck joelh@gnu.org + + + + Joel Sutton sutton@aardvark.apana.org.au + + + + Johan Granlund johan@granlund.nu + + + + Johan Karlsson k@numeri.campus.luth.se + + + + Johan Larsson johan@moon.campus.luth.se + + + + Johann Tonsing jtonsing@mikom.csir.co.za + + + + Johannes Helander unknown + + + + Johannes Stille unknown + + + + John Baldwin jobaldwi@vt.edu + + + + John Beckett jbeckett@southern.edu + + + + John Beukema jbeukema@hk.super.net + + + + John Brezak unknown + + + + John Capo jc@irbs.com + + + + John F. Woods jfw@jfwhome.funhouse.com + + + + John Goerzen + jgoerzen@alexanderwohl.complete.org + + + + John Hay jhay@mikom.csir.co.za + + + + John Heidemann johnh@isi.edu + + + + John Hood cgull@owl.org + + + + John Kohl unknown + + + + John Lind john@starfire.mn.org + + + + John Mackin john@physiol.su.oz.au + + + + John P johnp@lodgenet.com + + + + John Perry perry@vishnu.alias.net + + + + John Preisler john@vapornet.com + + + + John Rochester jr@cs.mun.ca + + + + John Sadler john_sadler@alum.mit.edu + + + + John Saunders john@pacer.nlc.net.au + + + + John W. DeBoskey jwd@unx.sas.com + + + + John Wehle john@feith.com + + + + John Woods jfw@eddie.mit.edu + + + + Jon Morgan morgan@terminus.trailblazer.com + + + + Jonathan H N Chin jc254@newton.cam.ac.uk + + + + Jonathan Hanna + jh@pc-21490.bc.rogers.wave.ca + + + + Jorge Goncalves j@bug.fe.up.pt + + + + Jorge M. Goncalves ee96199@tom.fe.up.pt + + + + Jos Backus jbackus@plex.nl + + + + Jose M. Alcaide jose@we.lc.ehu.es + + + + Josef Grosch + jgrosch@superior.mooseriver.com + + + + Josef Karthauser joe@uk.freebsd.org + + + + Joseph Stein joes@seaport.net + + + + Josh Gilliam josh@quick.net + + + + Josh Tiefenbach josh@ican.net + + + + Juergen Lock nox@jelal.hb.north.de + + + + Juha Inkari inkari@cc.hut.fi + + + + Jukka A. Ukkonen jua@iki.fi + + + + Julian Assange proff@suburbia.net + + + + Julian Coleman j.d.coleman@ncl.ac.uk + + + + Julian H. Stacey jhs@freebsd.org + + + + Julian Jenkins kaveman@magna.com.au + + + + Junichi Satoh junichi@jp.freebsd.org + + + + Junji SAKAI sakai@jp.freebsd.org + + + + Junya WATANABE junya-w@remus.dti.ne.jp + + + + K.Higashino a00303@cc.hc.keio.ac.jp + + + + KUNISHIMA Takeo kunishi@c.oka-pu.ac.jp + + + + Kai Vorma vode@snakemail.hut.fi + + + + Kaleb S. Keithley kaleb@ics.com + + + + Kaneda Hiloshi vanitas@ma3.seikyou.ne.jp + + + + Kapil Chowksey kchowksey@hss.hns.com + + + + Karl Denninger karl@mcs.com + + + + Karl Dietz Karl.Dietz@triplan.com + + + + Karl Lehenbauer karl@NeoSoft.com + + + + Kato Takenori + kato@eclogite.eps.nagoya-u.ac.jp + + + + Kauzo Horikawa h-horik@yk.rim.or.jp + + + + Kawanobe Koh kawanobe@st.rim.or.jp + + + + Kazuhiko Kiriyama kiri@kiri.toba-cmt.ac.jp + + + + Kazuo Horikawa horikawa@jp.FreeBSD.org + + + + Kees Jan Koster kjk1@ukc.ac.uk + + + + Keith Bostic bostic@bostic.com + + + + Keith E. Walker unknown + + + + Keith Moore unknown + + + + Keith Sklower unknown + + + + Ken Hornstein unknown + + + + Ken Key key@cs.utk.edu + + + + Ken Mayer kmayer@freegate.com + + + + Kenji Saito marukun@mx2.nisiq.net + + + + Kenji Tomita tommyk@da2.so-net.or.jp + + + + Kenneth Furge kenneth.furge@us.endress.com + + + + Kenneth Monville desmo@bandwidth.org + + + + Kenneth R. Westerback krw@tcn.net + + + + Kenneth Stailey kstailey@gnu.ai.mit.edu + + + + Kent Talarico kent@shipwreck.tsoft.net + + + + Kent Vander Velden graphix@iastate.edu + + + + Kentaro Inagaki JBD01226@niftyserve.ne.jp + + + + Kevin Bracey kbracey@art.acorn.co.uk + + + + Kevin Day toasty@dragondata.com + + + + Kevin Lahey kml@nas.nasa.gov + + + + Kevin Street street@iname.com + + + + Kevin Van Maren vanmaren@fast.cs.utah.edu + + + + Kiroh HARADA kiroh@kh.rim.or.jp + + + + Klaus Klein kleink@layla.inka.de + + + + Klaus-J. Wolf Yanestra@t-online.de + + + + Koichi Sato copan@ppp.fastnet.or.jp + + + + Kostya Lukin lukin@okbmei.msk.su + + + + Kouichi Hirabayashi kh@mogami-wire.co.jp + + + + Kurt D. Zeilenga Kurt@Boolean.NET + + + + Kurt Olsen kurto@tiny.mcs.usu.edu + + + + L. Jonas Olsson + ljo@ljo-slip.DIALIN.CWRU.Edu + + + + Lars Köller + Lars.Koeller@Uni-Bielefeld.DE + + + + Larry Altneu larry@ALR.COM + + + + Laurence Lopez lopez@mv.mv.com + + + + Lee Cremeans lcremean@tidalwave.net + + + + Liang Tai-hwa + avatar@www.mmlab.cse.yzu.edu.tw + + + + Lon Willett lon%softt.uucp@math.utah.edu + + + + Louis A. Mamakos louie@TransSys.COM + + + + Louis Mamakos loiue@TransSys.com + + + + Lucas James Lucas.James@ldjpc.apana.org.au + + + + Lyndon Nerenberg lyndon@orthanc.com + + + + M.C. Wong unknown + + + + MANTANI Nobutaka nobutaka@nobutaka.com + + + + MIHIRA Sanpei Yoshiro sanpei@sanpei.org + + + + MITA Yoshio mita@jp.FreeBSD.ORG + + + + MITSUNAGA Noriaki + mitchy@er.ams.eng.osaka-u.ac.jp + + + + MOROHOSHI Akihiko moro@race.u-tokyo.ac.jp + + + + Magnus Enbom dot@tinto.campus.luth.se + + + + Mahesh Neelakanta mahesh@gcomm.com + + + + Makoto MATSUSHITA matusita@jp.freebsd.org + + + + Makoto WATANABE + watanabe@zlab.phys.nagoya-u.ac.jp + + + + Malte Lance malte.lance@gmx.net + + + + Manu Iyengar + iyengar@grunthos.pscwa.psca.com + + + + Marc Frajola marc@dev.com + + + + Marc Ramirez mrami@mramirez.sy.yale.edu + + + + Marc Slemko marcs@znep.com + + + + Marc van Kempen wmbfmk@urc.tue.nl + + + + Marcel Moolenaar marcel@scc.nl + + + + Mario Sergio Fujikawa Ferreira + lioux@gns.com.br + + + + Mark Andrews unknown + + + + Mark Cammidge mark@gmtunx.ee.uct.ac.za + + + + Mark Diekhans markd@grizzly.com + + + + Mark Huizer xaa@stack.nl + + + + Mark J. Taylor mtaylor@cybernet.com + + + + Mark Krentel krentel@rice.edu + + + + Mark Mayo markm@vmunix.com + + + + Mark Thompson thompson@tgsoft.com + + + + Mark Tinguely tinguely@plains.nodak.edu + + + + Mark Treacy unknown + + + + Mark Valentine mark@linus.demon.co.uk + + + + Martin Birgmeier + + + + Martin Ibert mib@ppe.bb-data.de + + + + Martin Kammerhofer dada@sbox.tu-graz.ac.at + + + + Martin Renters martin@tdc.on.ca + + + + Martti Kuparinen + erakupa@kk.etx.ericsson.se + + + + Masachika ISHIZUKA + ishizuka@isis.min.ntt.jp + + + + Mas.TAKEMURA unknown + + + + Masafumi NAKANE max@wide.ad.jp + + + + Masahiro Sekiguchi + seki@sysrap.cs.fujitsu.co.jp + + + + Masanobu Saitoh msaitoh@spa.is.uec.ac.jp + + + + Masanori Kanaoka kana@saijo.mke.mei.co.jp + + + + Masanori Kiriake seiken@ncs.co.jp + + + + Masatoshi TAMURA + tamrin@shinzan.kuee.kyoto-u.ac.jp + + + + Mats Lofkvist mal@algonet.se + + + + Matt Bartley mbartley@lear35.cytex.com + + + + Matt Thomas matt@3am-software.com + + + + Matt White mwhite+@CMU.EDU + + + + Matthew C. Mead mmead@Glock.COM + + + + Matthew Cashdollar mattc@rfcnet.com + + + + Matthew Flatt mflatt@cs.rice.edu + + + + Matthew Fuller fullermd@futuresouth.com + + + + Matthew N. Dodd winter@jurai.net + + + + Matthew Stein matt@bdd.net + + + + Matthias Pfaller leo@dachau.marco.de + + + + Matthias Scheler tron@netbsd.org + + + + Mattias Gronlund + Mattias.Gronlund@sa.erisoft.se + + + + Mattias Pantzare pantzer@ludd.luth.se + + + + Maurice Castro + maurice@planet.serc.rmit.edu.au + + + + Max Euston meuston@jmrodgers.com + + + + Max Khon fjoe@husky.iclub.nsu.ru + + + + Maxim Bolotin max@rsu.ru + + + + Micha Class + michael_class@hpbbse.bbn.hp.com + + + + Michael Butler imb@scgt.oz.au + + + + Michael Butschky butsch@computi.erols.com + + + + Michael Clay mclay@weareb.org + + + + Michael Elbel me@FreeBSD.ORG + + + + Michael Galassi nerd@percival.rain.com + + + + Michael Hancock michaelh@cet.co.jp + + + + Michael Hohmuth hohmuth@inf.tu-dresden.de + + + + Michael Perlman canuck@caam.rice.edu + + + + Michael Petry petry@netwolf.NetMasters.com + + + + Michael Reifenberger root@totum.plaut.de + + + + Michael Searle searle@longacre.demon.co.uk + + + + Michal Listos mcl@Amnesiac.123.org + + + + Michio Karl Jinbo + karl@marcer.nagaokaut.ac.jp + + + + Miguel Angel Sagreras + msagre@cactus.fi.uba.ar + + + + Mihoko Tanaka m_tonaka@pa.yokogawa.co.jp + + + + Mika Nystrom mika@cs.caltech.edu + + + + Mikael Hybsch micke@dynas.se + + + + Mikael Karpberg + karpen@ocean.campus.luth.se + + + + Mike Del repenting@hotmail.com + + + + Mike Durian durian@plutotech.com + + + + Mike Durkin mdurkin@tsoft.sf-bay.org + + + + Mike E. Matsnev mike@azog.cs.msu.su + + + + Mike Evans mevans@candle.com + + + + Mike Grupenhoff kashmir@umiacs.umd.edu + + + + Mike Hibler mike@marker.cs.utah.edu + + + + Mike Karels unknown + + + + Mike McGaughey mmcg@cs.monash.edu.au + + + + Mike Meyer mwm@shiva.the-park.com + + + + Mike Mitchell mitchell@ref.tfs.com + + + + Mike Murphy mrm@alpharel.com + + + + Mike Peck mike@binghamton.edu + + + + Mike Spengler mks@msc.edu + + + + Mikhail A. Sokolov mishania@demos.su + + + + Mikhail Teterin mi@aldan.ziplink.net + + + + Ming-I Hseh PA@FreeBSD.ee.Ntu.edu.TW + + + + Mitsuru IWASAKI iwasaki@pc.jaring.my + + + + Monte Mitzelfelt monte@gonefishing.org + + + + Morgan Davis root@io.cts.com + + + + Mostyn Lewis mostyn@mrl.com + + + + Motoyuki Kasahara m-kasahr@sra.co.jp + + + + Motoyuki Konno motoyuki@snipe.rim.or.jp + + + + Munechika Sumikawa sumikawa@kame.net + + + + Murray Stokely murray@cdrom.com + + + + N.G.Smith ngs@sesame.hensa.ac.uk + + + + NAGAO Tadaaki nagao@cs.titech.ac.jp + + + + NAKAJI Hiroyuki + nakaji@zeisei.dpri.kyoto-u.ac.jp + + + + NAKAMURA Kazushi nkazushi@highway.or.jp + + + + NAKAMURA Motonori + motonori@econ.kyoto-u.ac.jp + + + + NIIMI Satoshi sa2c@and.or.jp + + + + NOKUBI Hirotaka h-nokubi@yyy.or.jp + + + + Nadav Eiron nadav@barcode.co.il + + + + Nanbor Wang nw1@cs.wustl.edu + + + + Naofumi Honda + honda@Kururu.math.sci.hokudai.ac.jp + + + + Naoki Hamada nao@tom-yam.or.jp + + + + Narvi narvi@haldjas.folklore.ee + + + + Nathan Dorfman nathan@rtfm.net + + + + Neal Fachan kneel@ishiboo.com + + + + Neil Blakey-Milner nbm@rucus.ru.ac.za + + + + Niall Smart rotel@indigo.ie + + + + Nick Barnes Nick.Barnes@pobox.com + + + + Nick Handel nhandel@NeoSoft.com + + + + Nick Hilliard nick@foobar.org + + + + Nick Sayer nsayer@quack.kfu.com + + + + Nick Williams njw@cs.city.ac.uk + + + + Nickolay N. Dudorov nnd@itfs.nsk.su + + + + Niklas Hallqvist niklas@filippa.appli.se + + + + Nisha Talagala nisha@cs.berkeley.edu + + + + No Name ZW6T-KND@j.asahi-net.or.jp + + + + No Name adrian@virginia.edu + + + + No Name alex@elvisti.kiev.ua + + + + No Name anto@netscape.net + + + + No Name bobson@egg.ics.nitch.ac.jp + + + + No Name bovynf@awe.be + + + + No Name burg@is.ge.com + + + + No Name chris@gnome.co.uk + + + + No Name colsen@usa.net + + + + No Name coredump@nervosa.com + + + + No Name dannyman@arh0300.urh.uiuc.edu + + + + No Name davids@SECNET.COM + + + + No Name derek@free.org + + + + No Name devet@adv.IAEhv.nl + + + + No Name djv@bedford.net + + + + No Name dvv@sprint.net + + + + No Name enami@ba2.so-net.or.jp + + + + No Name flash@eru.tubank.msk.su + + + + No Name flash@hway.ru + + + + No Name fn@pain.csrv.uidaho.edu + + + + No Name gclarkii@netport.neosoft.com + + + + No Name gordon@sheaky.lonestar.org + + + + No Name graaf@iae.nl + + + + No Name greg@greg.rim.or.jp + + + + No Name grossman@cygnus.com + + + + No Name gusw@fub46.zedat.fu-berlin.de + + + + No Name hfir@math.rochester.edu + + + + No Name hnokubi@yyy.or.jp + + + + No Name iaint@css.tuu.utas.edu.au + + + + No Name invis@visi.com + + + + No Name ishisone@sra.co.jp + + + + No Name iverson@lionheart.com + + + + No Name jpt@magic.net + + + + No Name junker@jazz.snu.ac.kr + + + + No Name k-sugyou@ccs.mt.nec.co.jp + + + + No Name kenji@reseau.toyonaka.osaka.jp + + + + No Name kfurge@worldnet.att.net + + + + No Name lh@aus.org + + + + No Name lhecking@nmrc.ucc.ie + + + + No Name mrgreen@mame.mu.oz.au + + + + No Name nakagawa@jp.freebsd.org + + + + No Name ohki@gssm.otsuka.tsukuba.ac.jp + + + + No Name owaki@st.rim.or.jp + + + + No Name pechter@shell.monmouth.com + + + + No Name pete@pelican.pelican.com + + + + No Name pritc003@maroon.tc.umn.edu + + + + No Name risner@stdio.com + + + + No Name roman@rpd.univ.kiev.ua + + + + No Name root@ns2.redline.ru + + + + No Name root@uglabgw.ug.cs.sunysb.edu + + + + No Name stephen.ma@jtec.com.au + + + + No Name sumii@is.s.u-tokyo.ac.jp + + + + No Name takas-su@is.aist-nara.ac.jp + + + + No Name tamone@eig.unige.ch + + + + No Name tjevans@raleigh.ibm.com + + + + No Name tony-o@iij.ad.jp amurai@spec.co.jp + + + + No Name torii@tcd.hitachi.co.jp + + + + No Name uenami@imasy.or.jp + + + + No Name uhlar@netlab.sk + + + + No Name vode@hut.fi + + + + No Name wlloyd@mpd.ca + + + + No Name wlr@furball.wellsfargo.com + + + + No Name wmbfmk@urc.tue.nl + + + + No Name yamagata@nwgpc.kek.jp + + + + No Name ziggy@ryan.org + + + + Nobuhiro Yasutomi nobu@psrc.isac.co.jp + + + + Nobuyuki Koganemaru + kogane@koganemaru.co.jp + + + + Norio Suzuki nosuzuki@e-mail.ne.jp + + + + Noritaka Ishizumi graphite@jp.FreeBSD.ORG + + + + Noriyuki Soda soda@sra.co.jp + + + + Olaf Wagner wagner@luthien.in-berlin.de + + + + Oleg Sharoiko os@rsu.ru + + + + Oliver Breuninger ob@seicom.NET + + + + Oliver Friedrichs oliver@secnet.com + + + + Oliver Fromme + oliver.fromme@heim3.tu-clausthal.de + + + + Oliver Laumann + net@informatik.uni-bremen.de + + + + Oliver Oberdorf oly@world.std.com + + + + Olof Johansson offe@ludd.luth.se + + + + Osokin Sergey aka oZZ ozz@freebsd.org.ru + + + + Pace Willisson pace@blitz.com + + + + Paco Rosich rosich@modico.eleinf.uv.es + + + + Palle Girgensohn girgen@partitur.se + + + + Parag Patel parag@cgt.com + + + + Pascal Pederiva pascal@zuo.dec.com + + + + Pasvorn Boonmark boonmark@juniper.net + + + + Patrick Gardella patrick@cre8tivegroup.com + + + + Patrick Hausen unknown + + + + Paul Antonov apg@demos.su + + + + Paul F. Werkowski unknown + + + + Paul Fox pgf@foxharp.boston.ma.us + + + + Paul Koch koch@thehub.com.au + + + + Paul Kranenburg pk@NetBSD.org + + + + Paul Mackerras paulus@cs.anu.edu.au + + + + Paul Popelka paulp@uts.amdahl.com + + + + Paul S. LaFollette, Jr. unknown + + + + Paul Saab paul@mu.org + + + + Paul Sandys myj@nyct.net + + + + Paul T. Root proot@horton.iaces.com + + + + Paul Vixie paul@vix.com + + + + Paulo Menezes paulo@isr.uc.pt + + + + Paulo Menezes pm@dee.uc.pt + + + + Pedro A M Vazquez vazquez@IQM.Unicamp.BR + + + + Pedro Giffuni giffunip@asme.org + + + + Pete Bentley pete@demon.net + + + + Peter Childs pjchilds@imforei.apana.org.au + + + + Peter Cornelius pc@inr.fzk.de + + + + Peter Haight peterh@prognet.com + + + + Peter Jeremy perer.jeremy@alcatel.com.au + + + + Peter M. Chen pmchen@eecs.umich.edu + + + + Peter Much peter@citylink.dinoex.sub.org + + + + Peter Olsson unknown + + + + Peter Philipp pjp@bsd-daemon.net + + + + Peter Stubbs PETERS@staidan.qld.edu.au + + + + Phil Maker pjm@cs.ntu.edu.au + + + + Phil Sutherland + philsuth@mycroft.dialix.oz.au + + + + Phil Taylor phil@zipmail.co.uk + + + + Philip Musumeci philip@rmit.edu.au + + + + Pierre Y. Dampure pierre.dampure@k2c.co.uk + + + + Pius Fischer pius@ienet.com + + + + Pomegranate daver@flag.blackened.net + + + + Powerdog Industries + kevin.ruddy@powerdog.com + + + + R. Kym Horsell + + + + Rajesh Vaidheeswarran rv@fore.com + + + + Ralf Friedl friedl@informatik.uni-kl.de + + + + Randal S. Masutani randal@comtest.com + + + + Randall Hopper rhh@ct.picker.com + + + + Randall W. Dean rwd@osf.org + + + + Randy Bush rbush@bainbridge.verio.net + + + + Reinier Bezuidenhout + rbezuide@mikom.csir.co.za + + + + Remy Card Remy.Card@masi.ibp.fr + + + + Ricardas Cepas rch@richard.eu.org + + + + Richard Henderson richard@atheist.tamu.edu + + + + Richard Hwang rhwang@bigpanda.com + + + + Richard J Kuhns rjk@watson.grauel.com + + + + Richard M. Neswold + rneswold@drmemory.fnal.gov + + + + Richard Seaman, Jr. dick@tar.com + + + + Richard Stallman rms@gnu.ai.mit.edu + + + + Richard Straka straka@user1.inficad.com + + + + Richard Tobin richard@cogsci.ed.ac.uk + + + + Richard Wackerbarth rkw@Dataplex.NET + + + + Richard Winkel rich@math.missouri.edu + + + + Richard Wiwatowski rjwiwat@adelaide.on.net + + + + Rick Macklem rick@snowhite.cis.uoguelph.ca + + + + Rick Macklin unknown + + + + Rob Austein sra@epilogue.com + + + + Rob Mallory rmallory@qualcomm.com + + + + Rob Snow rsnow@txdirect.net + + + + Robert Crowe bob@speakez.com + + + + Robert D. Thrush rd@phoenix.aii.com + + + + Robert Eckardt + roberte@MEP.Ruhr-Uni-Bochum.de + + + + Robert Sanders rsanders@mindspring.com + + + + Robert Sexton robert@kudra.com + + + + Robert Shady rls@id.net + + + + Robert Swindells swindellsr@genrad.co.uk + + + + Robert Watson robert@cyrus.watson.org + + + + Robert Withrow witr@rwwa.com + + + + Robert Yoder unknown + + + + Robin Carey + robin@mailgate.dtc.rankxerox.co.uk + + + + Roger Hardiman roger@cs.strath.ac.uk + + + + Roland Jesse jesse@cs.uni-magdeburg.de + + + + Ron Bickers rbickers@intercenter.net + + + + Ron Lenk rlenk@widget.xmission.com + + + + Ronald Kuehn kuehn@rz.tu-clausthal.de + + + + Rudolf Cejka unknown + + + + Ruslan Belkin rus@home2.UA.net + + + + Ruslan Ermilov ru@ucb.crimea.ua + + + + Ruslan Shevchenko rssh@cam.grad.kiev.ua + + + + Russell L. Carter rcarter@pinyon.org + + + + Russell Vincent rv@groa.uct.ac.za + + + + Ryan Younce ryany@pobox.com + + + + SANETO Takanori sanewo@strg.sony.co.jp + + + + SAWADA Mizuki miz@qb3.so-net.ne.jp + + + + SUGIMURA Takashi sugimura@jp.FreeBSD.ORG + + + + SURANYI Peter + suranyip@jks.is.tsukuba.ac.jp + + + + Sakari Jalovaara sja@tekla.fi + + + + Sam Hartman hartmans@mit.edu + + + + Samuel Lam skl@ScalableNetwork.com + + + + Sander Vesik sander@haldjas.folklore.ee + + + + Sandro Sigala ssigala@globalnet.it + + + + Sascha Blank blank@fox.uni-trier.de + + + + Sascha Wildner swildner@channelz.GUN.de + + + + Satoh Junichi junichi@astec.co.jp + + + + Satoshi Taoka + taoka@infonets.hiroshima-u.ac.jp + + + + Scot Elliott scot@poptart.org + + + + Scot W. Hetzel hetzels@westbend.net + + + + Scott A. Kenney saken@rmta.ml.org + + + + Scott Blachowicz + scott.blachowicz@seaslug.org + + + + Scott Burris scott@pita.cns.ucla.edu + + + + Scott Hazen Mueller scott@zorch.sf-bay.org + + + + Scott Michel scottm@cs.ucla.edu + + + + Scott Reynolds scott@clmqt.marquette.mi.us + + + + Sebastian Strollo seb@erix.ericsson.se + + + + Seigou TANIMURA + tanimura@naklab.dnj.ynu.ac.jp + + + + Serge A. Babkin babkin@hq.icb.chel.su + + + + Serge V. Vakulenko vak@zebub.msk.su + + + + Sergei Chechetkin + csl@whale.sunbay.crimea.ua + + + + Sergei S. Laskavy laskavy@pc759.cs.msu.su + + + + Sergey Gershtein sg@mplik.ru + + + + Sergey Potapov sp@alkor.ru + + + + Sergey Shkonda serg@bcs.zp.ua + + + + Sergey V.Dorokhov svd@kbtelecom.nalnet.ru + + + + Sergio Lenzi lenzi@bsi.com.br + + + + Shaun Courtney shaun@emma.eng.uct.ac.za + + + + Shawn M. Carey smcarey@mailbox.syr.edu + + + + Sheldon Hearn axl@iafrica.com + + + + Shigio Yamaguchi shigio@wafu.netgate.net + + + + Shunsuke Akiyama akiyama@jp.freebsd.org + + + + Simon simon@masi.ibp.fr + + + + Simon Burge simonb@telstra.com.au + + + + Simon J Gerraty sjg@melb.bull.oz.au + + + + Simon Marlow simonm@dcs.gla.ac.uk + + + + Simon Shapiro shimon@simon-shapiro.org + + + + Sin'ichiro MIYATANI siu@phaseone.co.jp + + + + Slaven Rezic eserte@cs.tu-berlin.de + + + + Soochon Radee slr@mitre.org + + + + Soren Dayton csdayton@midway.uchicago.edu + + + + Soren Dossing sauber@netcom.com + + + + Soren S. Jorvang soren@dt.dk + + + + Stefan Bethke stb@hanse.de + + + + Stefan Eggers seggers@semyam.dinoco.de + + + + Stefan Moeding s.moeding@ndh.net + + + + Stefan Petri unknown + + + + Stefan `Sec` Zehl sec@42.org + + + + Steinar Haug sthaug@nethelp.no + + + + Stephane E. Potvin sepotvin@videotron.ca + + + + Stephane Legrand stephane@lituus.fr + + + + Stephen Clawson + sclawson@marker.cs.utah.edu + + + + Stephen F. Combs combssf@salem.ge.com + + + + Stephen Farrell stephen@farrell.org + + + + Stephen Hocking sysseh@devetir.qld.gov.au + + + + Stephen J. Roznowski sjr@home.net + + + + Stephen McKay syssgm@devetir.qld.gov.au + + + + Stephen Melvin melvin@zytek.com + + + + Steve Bauer sbauer@rock.sdsmt.edu + + + + Steve Deering unknown + + + + Steve Gerakines steve2@genesis.tiac.net + + + + Steve Gericke steveg@comtrol.com + + + + Steve Piette steve@simon.chi.il.US + + + + Steve Schwarz schwarz@alpharel.com + + + + Steven G. Kargl + kargl@troutmask.apl.washington.edu + + + + Steven H. Samorodin samorodi@NUXI.com + + + + Steven McCanne mccanne@cs.berkeley.edu + + + + Steven Plite splite@purdue.edu + + + + Steven Wallace unknown + + + + Stuart Henderson + stuart@internationalschool.co.uk + + + + Sue Blake sue@welearn.com.au + + + + Sugiura Shiro ssugiura@duo.co.jp + + + + Sujal Patel smpatel@wam.umd.edu + + + + Sune Stjerneby stjerneby@usa.net + + + + Suzuki Yoshiaki + zensyo@ann.tama.kawasaki.jp + + + + Tadashi Kumano kumano@strl.nhk.or.jp + + + + Taguchi Takeshi taguchi@tohoku.iij.ad.jp + + + + Takahashi Yoshihiro nyan@dd.catv.ne.jp + + + + Takahiro Yugawa yugawa@orleans.rim.or.jp + + + + Takanori Watanabe + takawata@shidahara1.planet.sci.kobe-u.ac.jp + + + + Takashi Mega mega@minz.org + + + + Takashi Uozu j1594016@ed.kagu.sut.ac.jp + + + + Takayuki Ariga a00821@cc.hc.keio.ac.jp + + + + Takeru NAIKI naiki@bfd.es.hokudai.ac.jp + + + + Takeshi Amaike amaike@iri.co.jp + + + + Takeshi MUTOH mutoh@info.nara-k.ac.jp + + + + Takeshi Ohashi + ohashi@mickey.ai.kyutech.ac.jp + + + + Takeshi WATANABE + watanabe@crayon.earth.s.kobe-u.ac.jp + + + + Takuya SHIOZAKI + tshiozak@makino.ise.chuo-u.ac.jp + + + + Tatoku Ogaito tacha@tera.fukui-med.ac.jp + + + + Tatsumi HOSOKAWA hosokawa@jp.FreeBSD.org + + + + Ted Buswell tbuswell@mediaone.net + + + + Ted Faber faber@isi.edu + + + + Ted Lemon unknown + + + + Terry Lambert terry@lambert.org + + + + Terry Lee terry@uivlsi.csl.uiuc.edu + + + + Tetsuya Furukawa tetsuya@secom-sis.co.jp + + + + Theo de Raadt deraadt@OpenBSD.org + + + + Thomas thomas@mathematik.uni-Bremen.de + + + + Thomas D. Dean tomdean@ix.netcom.com + + + + Thomas David Rivers rivers@dignus.com + + + + Thomas G. McWilliams tgm@netcom.com + + + + Thomas Gellekum + thomas@ghpc8.ihf.rwth-aachen.de + + + + Thomas Graichen + graichen@omega.physik.fu-berlin.de + + + + Thomas König + Thomas.Koenig@ciw.uni-karlsruhe.de + + + + Thomas Ptacek unknown + + + + Thomas Stromberg tstrombe@rtci.com + + + + Thomas Valentino Crimi + tcrimi+@andrew.cmu.edu + + + + Thomas Wintergerst thomas@lemur.nord.de + + + + Þórður Ívarsson + totii@est.is + + + + Tim Kientzle kientzle@netcom.com + + + + Tim Singletary + tsingle@sunland.gsfc.nasa.gov + + + + Tim Wilkinson tim@sarc.city.ac.uk + + + + Timo J. Rinne tri@iki.fi + + + + Todd Miller millert@openbsd.org + + + + Tom root@majestix.cmr.no + + + + Tom tom@sdf.com + + + + Tom Gray - DCA dcasba@rain.org + + + + Tom Hukins tom@eborcom.com + + + + Tom Jobbins tom@tom.tj + + + + Tom Pusateri pusateri@juniper.net + + + + Tom Rush tarush@mindspring.com + + + + Tom Samplonius tom@misery.sdf.com + + + + Tomohiko Kurahashi + kura@melchior.q.t.u-tokyo.ac.jp + + + + Tony Kimball alk@Think.COM + + + + Tony Li tli@jnx.com + + + + Tony Lynn wing@cc.nsysu.edu.tw + + + + Torbjorn Granlund tege@matematik.su.se + + + + Toshihiko ARAI toshi@tenchi.ne.jp + + + + Toshihiko SHIMOKAWA toshi@tea.forus.or.jp + + + + Toshihiro Kanda candy@kgc.co.jp + + + + Toshiomi Moriki + Toshiomi.Moriki@ma1.seikyou.ne.jp + + + + Trefor S. trefor@flevel.co.uk + + + + Trevor Blackwell tlb@viaweb.com + + + + URATA Shuichiro s-urata@nmit.tmg.nec.co.jp + + + + Ugo Paternostro paterno@dsi.unifi.it + + + + Ulf Kieber kieber@sax.de + + + + Ulli Linzen ulli@perceval.camelot.de + + + + Ustimenko Semen semen@iclub.nsu.ru + + + + Uwe Arndt arndt@mailhost.uni-koblenz.de + + + + Vadim Chekan vadim@gc.lviv.ua + + + + Vadim Kolontsov vadim@tversu.ac.ru + + + + Vadim Mikhailov mvp@braz.ru + + + + Van Jacobson van@ee.lbl.gov + + + + Vasily V. Grechishnikov + bazilio@ns1.ied-vorstu.ac.ru + + + + Vasim Valejev vasim@uddias.diaspro.com + + + + Vernon J. Schryver vjs@mica.denver.sgi.com + + + + Vic Abell abe@cc.purdue.edu + + + + Ville Eerola ve@sci.fi + + + + Vincent Poy vince@venus.gaianet.net + + + + Vincenzo Capuano + VCAPUANO@vmprofs.esoc.esa.de + + + + Virgil Champlin champlin@pa.dec.com + + + + Vladimir A. Jakovenko + vovik@ntu-kpi.kiev.ua + + + + Vladimir Kushnir kushn@mail.kar.net + + + + Vsevolod Lobko seva@alex-ua.com + + + + W. Gerald Hicks wghicks@bellsouth.net + + + + W. Richard Stevens rstevens@noao.edu + + + + Walt Howard howard@ee.utah.edu + + + + Warren Toomey wkt@csadfa.cs.adfa.oz.au + + + + Wayne Scott wscott@ichips.intel.com + + + + Werner Griessl + werner@btp1da.phy.uni-bayreuth.de + + + + Wes Santee wsantee@wsantee.oz.net + + + + Wietse Venema wietse@wzv.win.tue.nl + + + + Wilfredo Sanchez wsanchez@apple.com + + + + Wiljo Heinen wiljo@freeside.ki.open.de + + + + Wilko Bulte wilko@yedi.iaf.nl + + + + Willem Jan Withagen wjw@surf.IAE.nl + + + + William Jolitz withheld + + + + William Liao william@tale.net + + + + Wojtek Pilorz + wpilorz@celebris.bdk.lublin.pl + + + + Wolfgang Helbig helbig@ba-stuttgart.de + + + + Wolfgang Solfrank ws@tools.de + + + + Wolfgang Stanglmeier wolf@FreeBSD.org + + + + Wu Ching-hong woju@FreeBSD.ee.Ntu.edu.TW + + + + Yarema yds@ingress.com + + + + Yaroslav Terletsky ts@polynet.lviv.ua + + + + Yen-Shuo Su yssu@CCCA.NCTU.edu.tw + + + + Ying-Chieh Liao ijliao@csie.NCTU.edu.tw + + + + Yixin Jin yjin@rain.cs.ucla.edu + + + + Yoshiaki Uchikawa yoshiaki@kt.rim.or.jp + + + + Yoshihiko OHTA yohta@bres.tsukuba.ac.jp + + + + Yoshihisa NAKAGAWA + y-nakaga@ccs.mt.nec.co.jp + + + + Yoshikazu Goto gotoh@ae.anritsu.co.jp + + + + Yoshimasa Ohnishi + ohnishi@isc.kyutech.ac.jp + + + + Yoshishige Arai ryo2@on.rim.or.jp + + + + Yuichi MATSUTAKA matutaka@osa.att.ne.jp + + + + Yujiro MIYATA + miyata@bioele.nuee.nagoya-u.ac.jp + + + + Yukihiro Nakai nacai@iname.com + + + + Yusuke Nawano azuki@azkey.org + + + + Yuval Yarom yval@cs.huji.ac.il + + + + Yves Fonk yves@cpcoup5.tn.tudelft.nl + + + + Yves Fonk yves@dutncp8.tn.tudelft.nl + + + + Zach Heilig zach@gaffaneys.com + + + + Zahemszhky Gabor zgabor@code.hu + + + + Zhong Ming-Xun zmx@mail.CDPA.nsysu.edu.tw + + + + arci vega@sophia.inria.fr + + + + der Mouse mouse@Collatz.McRCIM.McGill.EDU + + + + frf frf@xocolatl.com + + + + Ege Rekk aagero@aage.priv.no + + + + + + 386BSD パッチキットへのパッチ提供者 + + (名前でアルファベット順): + + + + Adam Glass glass@postgres.berkeley.edu + + + + Adrian Hall adrian@ibmpcug.co.uk + + + + Andrey A. Chernov ache@astral.msk.su + + + + Andrew Herbert andrew@werple.apana.org.au + + + + Andrew Moore alm@netcom.com + + + + Andy Valencia ajv@csd.mot.com + jtk@netcom.com + + + + Arne Henrik Juul arnej@Lise.Unit.NO + + + + Bakul Shah bvs@bitblocks.com + + + + Barry Lustig barry@ictv.com + + + + Bob Wilcox bob@obiwan.uucp + + + + Branko Lankester + + + + Brett Lymn blymn@mulga.awadi.com.AU + + + + Charles Hannum mycroft@ai.mit.edu + + + + Chris G. Demetriou + cgd@postgres.berkeley.edu + + + + Chris Torek torek@ee.lbl.gov + + + + Christoph Robitschko + chmr@edvz.tu-graz.ac.at + + + + Daniel Poirot poirot@aio.jsc.nasa.gov + + + + Dave Burgess burgess@hrd769.brooks.af.mil + + + + Dave Rivers rivers@ponds.uucp + + + + David Dawes dawes@physics.su.OZ.AU + + + + David Greenman dg@Root.COM + + + + Eric J. Haug ejh@slustl.slu.edu + + + + Felix Gaehtgens + felix@escape.vsse.in-berlin.de + + + + Frank Maclachlan fpm@crash.cts.com + + + + Gary A. Browning gab10@griffcd.amdahl.com + + + + Gary Howland gary@hotlava.com + + + + Geoff Rehmet csgr@alpha.ru.ac.za + + + + Goran Hammarback goran@astro.uu.se + + + + Guido van Rooij guido@gvr.org + + + + Guy Harris guy@auspex.com + + + + Havard Eidnes + Havard.Eidnes@runit.sintef.no + + + + Herb Peyerl hpeyerl@novatel.cuc.ab.ca + + + + Holger Veit Holger.Veit@gmd.de + + + + Ishii Masahiro, R. Kym Horsell + + + + J.T. Conklin jtc@cygnus.com + + + + Jagane D Sundar jagane@netcom.com + + + + James Clark jjc@jclark.com + + + + James Jegers jimj@miller.cs.uwm.edu + + + + James W. Dolter + + + + James da Silva jds@cs.umd.edu et al + + + + Jay Fenlason hack@datacube.com + + + + Jim Wilson wilson@moria.cygnus.com + + + + Jörg Lohse + lohse@tech7.informatik.uni-hamburg.de + + + + Jörg Wunsch + joerg_wunsch@uriah.heep.sax.de + + + + John Dyson + + + + John Woods jfw@eddie.mit.edu + + + + Jordan K. Hubbard jkh@whisker.hubbard.ie + + + + Julian Elischer julian@dialix.oz.au + + + + Julian Stacey jhs@freebsd.org + + + + Karl Dietz Karl.Dietz@triplan.com + + + + Karl Lehenbauer karl@NeoSoft.com + karl@one.neosoft.com + + + + Keith Bostic bostic@toe.CS.Berkeley.EDU + + + + Ken Hughes + + + + Kent Talarico kent@shipwreck.tsoft.net + + + + Kevin Lahey kml%rokkaku.UUCP@mathcs.emory.edu + kml@mosquito.cis.ufl.edu + + + + Marc Frajola marc@dev.com + + + + Mark Tinguely tinguely@plains.nodak.edu + tinguely@hookie.cs.ndsu.NoDak.edu + + + + Martin Renters martin@tdc.on.ca + + + + Michael Clay mclay@weareb.org + + + + Michael Galassi nerd@percival.rain.com + + + + Mike Durkin mdurkin@tsoft.sf-bay.org + + + + Naoki Hamada nao@tom-yam.or.jp + + + + Nate Williams nate@bsd.coe.montana.edu + + + + Nick Handel nhandel@NeoSoft.com + nick@madhouse.neosoft.com + + + + Pace Willisson pace@blitz.com + + + + Paul Kranenburg pk@cs.few.eur.nl + + + + Paul Mackerras paulus@cs.anu.edu.au + + + + Paul Popelka paulp@uts.amdahl.com + + + + Peter da Silva peter@NeoSoft.com + + + + Phil Sutherland + philsuth@mycroft.dialix.oz.au + + + + Poul-Henning Kampphk@FreeBSD.ORG + + + + Ralf Friedl friedl@informatik.uni-kl.de + + + + Rick Macklem root@snowhite.cis.uoguelph.ca + + + + Robert D. Thrush rd@phoenix.aii.com + + + + Rodney W. Grimes rgrimes@cdrom.com + + + + Sascha Wildner swildner@channelz.GUN.de + + + + Scott Burris scott@pita.cns.ucla.edu + + + + Scott Reynolds scott@clmqt.marquette.mi.us + + + + Sean Eric Fagan sef@kithrup.com + + + + Simon J Gerraty sjg@melb.bull.oz.au + sjg@zen.void.oz.au + + + + Stephen McKay syssgm@devetir.qld.gov.au + + + + Terry Lambert terry@icarus.weber.edu + + + + Terry Lee terry@uivlsi.csl.uiuc.edu + + + + Tor Egge Tor.Egge@idi.ntnu.no + + + + Warren Toomey wkt@csadfa.cs.adfa.oz.au + + + + Wiljo Heinen wiljo@freeside.ki.open.de + + + + William Jolitz withheld + + + + Wolfgang Solfrank ws@tools.de + + + + Wolfgang Stanglmeier wolf@dentaro.GUN.de + + + + Yuval Yarom yval@cs.huji.ac.il + + + +
+ + diff --git a/ja/handbook/cutting-edge/chapter.sgml b/ja/handbook/cutting-edge/chapter.sgml new file mode 100644 index 0000000000..690d88d88b --- /dev/null +++ b/ja/handbook/cutting-edge/chapter.sgml @@ -0,0 +1,2528 @@ + + + + 開発の最前線: FreeBSD-current と FreeBSD-stable + + あるリリースから次のリリースまでの期間にも, FreeBSD の開発は + 休みなく続けられています. + この開発の最前線に興味を持っている人のために, + 手元のシステムを最新の開発ツリーに同期させておくための, + とても使いやすい仕掛けが何種類も用意されています. 注意: + 開発の最前線は, 誰でもが扱えるという性質のものではありません! + もしもあなたが, 開発途中のシステムを追いかけようか, + それともリリース + バージョンのどれかを使い続けようかと迷っているのなら, + きっとこの章が参考になるでしょう. + + + 最新のFreeBSDを追いかける + + 原作: &a.jkh;. + + 訳: &a.hanai; + 6 November 1996. + + + FreeBSD-current ってなに? + + FreeBSD-current とは,文字通りに,日々変更されている + FreeBSD のソース + のスナップショット以外の何ものでもありません. + 中には現在開発途上の ソフトウェア, 実験的な変更, + あるいは過渡的な機能などが含まれています. また, + この中に入っている機能がすべて次の公式リリースに + 入るとはかぎりません. FreeBSD-current + をソースからほとんど毎日コンパイルしている人はたくさん + いますが, 時期によっては FreeBSD-current + はコンパイルさえできない状態に なっていることもあります. + これらの問題は一般的には可能な限り素早く解決 されますが, + FreeBSD-current のソースが不幸をもたらすか, それとも非常に + 素晴らしい機能をもたらすかというのは文字通り, + ある与えられた24時間の間 + のどの部分であなたがソースを手に入れたか, + による場合もあります. + + + + 誰が FreeBSD-current を必要としてるの? + + FreeBSD-current は, + 主に次の三つの重要なグループを対象としています. + + + + ソースツリーのある部分に関して活発に作業している + FreeBSD グループのメンバー. 彼らにとっては + “最新のもの” にしておくのが + 絶対に必要なことなのです. + + + + 活発にテストをする FreeBSD グループのメンバー. 彼らは, + FreeBSD-current を “健全である” + ことを出来るだけ確認するために種々の問題と戦うのに + 時間を費やすのを厭わない人々です. 彼らはまた, + 様々な変更に関する提案や FreeBSD + の大まかな方向付けを行ないたいと思っている + 人々でもあります. + + + + 単に, 様々な事に目を向け, 参考のために + (例えば,動かすためではなく 読むため + に) 最新のソースを使いたいと思って いる FreeBSD + (または他の) グループのまわりにいるメンバー. + これらの人々はまた, + 時々コメントやコードを寄稿してくれます. + + + + + + FreeBSD-current + に期待しては<emphasis>いけない</emphasis>ことは? + + + + なにか新しくカッコイイモノがあると聞き, 自分の周囲では + 一番にそれを持ちたいがためにリリース前のコードの断片を + 追いかけること. + + + + バグを修正するための素早い方法. + + + + 我々によって “公式にサポートされている” + こと. 私たちは 3 つの “公式な” FreeBSD-current + のグループの一つに実際に属する + 人々を助けるのにベストを尽くしますが, + 技術的なサポートを行なうには 単に「時間が足りない」のです. + これは我々が外の人を助けるの好まない, + ケチで意地悪い人間だと いうことではなく (もしそうなら + FreeBSD なんかやっていません), 文字通り 我々は一日に 400 + ものメッセージに答え かつ FreeBSD + の作業をする ことなど出来ない! ということなのです. もし, + たくさんの質問に答えるか, それとも FreeBSD + を良くする作業を続けるかという選択が与えられた場合, + あなた方のほとんどは後者を支持する, + と私は確信しています. + + + + + + FreeBSD-current を使う + + + + &a.current;と&a.cvsall;に加わって下さい. + これは単に良い考えであるというだけでなく, + 必須のことなのです. もし + FreeBSD-current + メーリングリストに入っていなければ, + 様々な人がシステムの現在の状態について + 述べているコメントを決して見ることは ありませんし, + 従って他の人が既に見つけて解決している多くの問題に 戸惑っ + てあきらめてしまうでしょう. さらに言うと, + システムを正常に保つための + 重要な情報を見逃してしまう可能性もあります. + + cvs-all メーリングリストでは, + それぞれの変更についての commit + ログを見ることができますし, + それに関して起こり得る副作用の情報を得ることができ, + もう一つの加わるに値するメーリングリストです. + + これらのメーリングリストに入るには, &a.majordomo; + へ + + +subscribe freebsd-current +subscribe cvs-all + + と書いたメールを送って下さい. オプションとして本文に + help と書けば, Majordomo + はあなたへ我々がサポ ートする様々なメーリングリストに参加 + / 脱退する方法に関する詳しい ヘルプを送ります. + + + + ftp.FreeBSD.ORG + からのソースの入手. 以下の3つの方法で行なうこと + が出来ます. + + + + 下に述べられているCTMを用いる. + 均一なレートの, 良質の TCP/IP + 接続を持っていない人には, + これが一番いい方法でしょう. + + + + cvsup を この supfile + を用いて使用する. これは 2 番目に推薦される方法です. + なぜなら, cvsup によって一度全体 を入手し, + 後は変更されたところだけを入手することが + 出来るからです. + たくさんの人が自動的にソースを最新のもに保つために + cvsup を cron から起動しています. + これを行なうための非常に簡単な 方法は, 単に + + &prompt.root; pkg_add -f ftp://ftp.FreeBSD.org/pub/FreeBSD/development/CVSup/cvsupit.tgz + + とタイプすることです. + + + + ftp を使う. FreeBSD-current + のソースツリーは常に + ftp://ftp.FreeBSD.ORG/pub/FreeBSD/FreeBSD-current + に “公開” されています. + 我々はまた全体を compress/tar して入手できる + wu-ftpd を使ってい ます. 例えば, + + usr.bin/lex + + があったとすると, + + ftp> cd usr.bin + ftp> get lex.tar.Z + + とすることにより, ディレクトリ全体(この場合, + usr.bin/lex以下全体) を compress された tar + ファイルとして入手することができます. + + + + + + 以上のことをまとめると, + 必要に応じて迅速なアクセスをする必要があり, + 接続のバンド幅が問題ではなければ cvsup + か ftp を使いましょう. そうではなければ + CTM を使いましょう. + + + + もしソースを, + 眺めるだけでなく走らせるために入手しているので あれば, + 一部だけ選ぶのではなく, current + の全体を手に入れてください. なぜなら, + ソースの様々な部分が他の部分の更新に依存しており, + 一部のみを コンパイルしようとすると, + ほぼ間違いなくトラブルを起こすからです. + + + + current をコンパイルする前に + /usr/src にある Makefile + をよく読んでください. アップグレードの処理の一部として, + 少なくとも一回は最初に make + world を行なうべきでしょう. &a.current; を読めば, + 次のリリースへ向けて, 時々必要になる + 他のブートストラップの方法に関して + 常に最新情報を得ることが出来ます. + + + + アクティブになって下さい! もし FreeBSD-current + を走らせているなら 我々はそれに関するコメント, + 特に拡張やバグ潰しに関する提案, を欲して います. + コードを伴う提案はもっとも歓迎されるものです! + + + + + + + FreeBSD の安定状態の持続 + + 原作: &a.jkh;. + + 訳: &a.jp.iwasaki;. + + + FreeBSD-stable ってなに? + + FreeBSD-stable は, + 次の本流のリリースを目指した新機能をあまり採り入 + れない保守的な変更のための開発の支流です. + 実験的またはテスト未完の変更 はこの支流には取り入れられません + (最新の FreeBSD を追いかける + 参照). + + + + 誰が FreeBSD-stable を必要としているの? + + もしあなたが仕事で使用しているとか, なによりも FreeBSD + システムの安 定性を最重要視するなら, + stable を追いかけることを考えるべきで + しょう. stable + の支流は前のリリースに関して効果的にバグフィッ + クスされた流れであるため, 最新のリリース ( + &rel.current;-RELEASE 執筆時点) + をインストールしているのであれば, 特に そうです. + + + stable + ツリーが常に完全に互換性があり安定するように努力し + ていますが, たまに間違いがあることに注意してください (結局, + 内容が吟味 + されずに素早く送られた変更を含むソースがまだあるのです). + また, current を + stable + へ移行する前に完璧なテストフィック スに最善を尽くしますが, + 私たちのテストはすべてのケースを十分に網羅して + いるとは限りません. もし何か stable + で不具合があるようでした ら, + 私たちにすぐに教えてください + (次の節参照). + + + + + FreeBSD-stable を使う + + + + &a.stable; へ加わってください. このメーリングリスト + では, stable の構築に関連する事柄や, + その他の注意すべき点 に関する情報が流れています. + また開発者は議論の余地がある修正や変更 を考えている場合に, + このメーリングリストで公表し, 提案された変更に + 関して問題が生じるかどうかを返答する機会を + ユーザに与えます. + + また, cvs-all メーリングリストでは, + それぞれの変更がなされると + 起こりうる副作用に関するすべての適切な情報と一緒に commit + log を 読むことができます. subscribe + しておきたいもう一つのメーリングリストです. + + メーリングリストに参加するには, &a.majordomo + へメッセージの本文に + 次のように書いたメールを送ってください: + + +subscribe freebsd-stable +subscribe cvs-all + + オプションとして本文に `help' と書けば, Majordomo + は私たちがサポー トする様々なメーリングリストに参加 / + 脱退する方法に関する詳しいヘ ルプを送付します. + + + + もし, あなたが新しいシステムを可能な限り -stable + に近いものにインストールしようとする場合には, + 最新のブランチの snapshot を + ftp://releng3.freebsd.org/pub/FreeBSD + から取得し, これを一般のリリースのものと同様に + インストールしてください. + + もし, 既に 2.2 系列の前のリリースが動いている場合で, + これをソースからアップグレードしようとするならば, ftp.FreeBSD.ORG より簡単に + これを行う事が出来ます. これには次の 3つの方法があります. + + + + + CTM + 機能を使用する. 転送レートが 安定している TCP/IP + 接続でない場合は, この方法が適して います. + + + + cvsup を + この supfile を用いて使用する. + 一度コレクション全体を入手してしまえば, + 前回からの変更部分だけですむので, 2 + 番目に推奨される方法です. + 多くの人が cron から cvsup を実行し, + 自動的にソースコー ドを最新の状態に保っています. + これを簡単に扱うには次のようにタイプしてください. + + &prompt.root; pkg_add -f ftp://ftp.FreeBSD.org/pub/FreeBSD/development/CVSup/cvsupit.tgz + + + + ftp を使用する. FreeBSD-stable + 用のソースツリーは + 常に次のところで“公開”されています : + ftp://ftp.FreeBSD.ORG/pub/FreeBSD/FreeBSD-stable + + 私たちはまた, tar/compress + でツリー全体を入手できる wu-ftpd + を使用しています. 例えば : + + usr.bin/lex + + に対して: + + ftp> cd usr.bin + ftp> get lex.tar.Z + + とすることにより, ディレクトリ全体を compress + された tar + ファイルとして入手することができます. + + + + + + + 基本的には, + ソースに迅速でオンデマンドなアクセスが必要で, + 接続のバンド幅が問題でなければ, cvsup + か ftp を使いましょう. そうで + ない場合は CTM + を使いましょう. + + + + stable をコンパイルする前に, + /usr/src にある Makefile をよ + く読んでください. + 少なくとも一回はアップグレードの処理の一部として 最初に + make world + を実行するべきでしょう. &a.stable; を読めば, + 次のリリースに移行する + に当たって時々必要となる既存システムからの + 新システムの構築手順に + ついての最新情報が得られるでしょう. + + + + + + + インターネットを通じたソースツリーの同期 + + 原作: &a.jkh;. + + 訳: &a.jp.iwasaki;. + 13 September 1997. + + インターネット接続 (または電子メール) を使用して, + あなたの興味の対 象によって FreeBSD + プロジェクトのソースのある一部分または全体の最新を + 追いかける方法は色々あります. + 私たちが提供している基本的なサービスは Anonymous CVS, CVSup と CTM + です: + + Anonymous CVS と + CVSuppull + 同期モデルを採用しています. + CVSup の場合, ユーザ + (または cron スクリプト) が cvsup + 起動し, どこかにある cvsupd + サーバとやりとりしてファイルを + 最新状態にします. + 届けられる更新情報はその時点の最新のものであり, + また必要な時にだけ取り寄せられます. + 興味のある特定のファイルやディレクトリに + 限定して更新することも簡単にできます. + クライアント側のソースツリーの状態・ + 設定ファイルの指定に従い, サーバによって更新情報が + 素早く生成されます. + Anonymous CVS は, + このプログラムがリモートの CVS リポジトリから直接変更点を + pull できるようにした &man.cvs.1; への拡張であるという点で, + CVSup よりもずっと単純です. + CVSup + は効率の点ではるかにまさっていますが, + Anonymous CVS の方が簡単に利用できます. + + + 一方, CTM + はあなたが持っているソースとマスタアーカイブ上に + あるそれとの対話的な比較をおこないませんし, + あるいは向こう側から変更点を pull したりもしません. + そのかわりに, 前回の実行時からの変更を認識するスクリプトが + マスタ CTM マシン上で一日に数回実行され, + すべての変更を compress して通し番号を振り, + さらに電子メールで転送できるようにエンコードします + (印字可能な ASCII + キャラクタのみです). 受信した後は, + これらの “CTM のデルタ” は自動 + 的にデコード, 検査してユーザのソースのコピーに変更を適用する + &man.ctm.rmail.1; によって処理可能となります. + この処理は CVSup や + Anonymous CVS よりずっと効率 + 的であり, pull モデルというよりむしろ + push モデルで + あるため, 私たちのサーバ資源の負荷は軽くなります. + + もちろん他のトレードオフもあります. うっかりアーカイブ + の一部を消してしまっても, CVSup + は壊れた部分を検出して再構築してくれます. + CTM はこれをやってくれませんし, + Anonymous CVS + はおそらく他の何よりも深く混乱してしまうことが多いでしょう. + もしソースツリーの一部を消してしまったら, (最新の CVS + “ベースデルタ”から) 一からやり直し, CTM か anoncvs + を使って悪い部分を消去し, 再同期させることによって + すべてを再構築しなければなりません. + + Anonymous CVS, + CTM, CVSup + についての 詳しい情報については, + 以下の節を参照してください: + + + Anonymous CVS + + 原作: &a.jkh; + 訳: &a.jp.sugimura;. + 19 July 1998. + + + <anchor id="anoncvs-intro">導入 + + Anonymous CVS (もしくは, anoncvs + として知られています) は離れたところにある CVS + リポジトリと同期を取るために FreeBSD に付属している CVS + ユーティリティに含まれている機能です. 他にもありますが, + それは FreeBSD のユーザが, 特別な権限なしに FreeBSD + プロジェクトの公式な anoncvs サーバに読み取り専用で CVS + の操作をすることができるようにするためのものです. + それを使うには, 単に CVSROOT + 環境変数を設定して適切な anoncvs サーバを指定し, そして + &man.cvs.1; + コマンドを使って手元にある + リポジトリのようにアクセスするだけです. + + CVSup と + anoncvs + のサービスは本質的に同じ機能ではないか + ということも言われていますが, + ユーザが同期を取る方法を選ぶときに影響を与えるような + さまざまなトレードオフが存在します. 要約して言えば, + CVSup + はネットワーク資源の使い方においては非常に効率がよく, + またはるかに技術的に洗練されたものですが, + 相当な手間がかかります. CVSup + を使うには, + 特別なクライアントをまずインストールして設定しなくては 1bit + も取ってくることができず, またそのとき + CVSup では + collections + と呼んでいるかなり大きなかたまりだけからしか + 取ってこれません. + + それに対して anoncvs では, + CVS モジュールの名前を指定することで特定のプログラムの + (lsgrep のような) + 個々のファイルから調べることができます. もちろん, + anoncvs は CVS + リポジトリの読み取り専用の操作に対してのみ適しているので, + もしあなたが FreeBSD プロジェクトのものと共有されたなにか + ローカルなリポジトリを作ってそこでの開発を + 行おうというときには, CVSup + だけが唯一の手段となってしまいます. + + + + <anchor id="anoncvs-usage">Anonymous CVS を使う + + &man.cvs.1; を設定して Anonymous CVS + リポジトリを使うには単に CVSROOT + 環境変数を設定して FreeBSD プロジェクトの + anoncvs サーバを指定するだけのことです. + この文書を書いているときには, + 次のサーバが利用できるようになっています. + + + + USA: + anoncvs@anoncvs.freebsd.org:/cvs + + + + CVS はかつて存在した (もしくは, + 時にはこれから存在するものも :) + ほとんどどんなバージョンの FreeBSD のソースを “check + out” することができますが, あなたは &man.cvs.1; の + リビジョン () のオプションや FreeBSD + プロジェクトのリポジトリの中で + それをどのように指定したらいいものかということを + よく知っておく必要があります. + + タグには 2 種類あって, + リビジョンタグとブランチタグがあります. + リビジョンタグは特定の改訂版を指しており, + それはいつも同じものを意味しています. 一方ブランチタグは, + 指定されたときの指定された開発の流れにおける + 最も新しい改訂版を示しています. + ブランチタグは特定の改訂版を指していないために, + その意味はきょうと明日では違うものになっているでしょう. + + + ユーザが興味を持つであろうブランチタグの一覧です. + + + + HEAD + + 主要部をなす流れ, すなわち FreeBSD-current + のための名前です. また, + どのリビジョンも + 指定されなかったときにはこれになります. + + + + + RELENG_3 + + FreeBSD-3.x の開発のための流れです. + FreeBSD-stable としても知られています. ports + コレクションには無効です. + + + + + RELENG_2_2 + + FreeBSD-2.2.x の開発のための流れです. 2.2-stable + としても知られています. ports + コレクションにはふさわしくありません. + + + + + RELENG_2_1_0 + + FreeBSD-2.1.x の開発のための流れです - + このブランチは大部分がすたれています. ports + コレクションにはふさわしくありません. + + + + + ユーザが興味を持つであろうリビジョンタグの一覧です. + + + + RELENG_2_2_6_RELEASE + + FreeBSD-2.2.6. ports + コレクションにはふさわしくありません. + + + + + RELENG_2_2_5_RELEASE + + FreeBSD-2.2.5. ports + コレクションにはふさわしくありません. + + + + + RELENG_2_2_2_RELEASE + + FreeBSD-2.2.2. ports + コレクションにはふさわしくありません. + + + + + RELENG_2_2_1_RELEASE + + FreeBSD-2.2.1. ports + コレクションにはふさわしくありません. + + + + + RELENG_2_2_0_RELEASE + + FreeBSD-2.2.0. ports + コレクションにはふさわしくありません. + + + + + RELENG_2_1_7_RELEASE + + FreeBSD-2.1.7. ports + コレクションにはふさわしくありません. + + + + + RELENG_2_1_6_1_RELEASE + + FreeBSD-2.1.6.1. ports + コレクションにはふさわしくありません. + + + + + RELENG_2_1_6_RELEASE + + FreeBSD-2.1.6. ports + コレクションにはふさわしくありません. + + + + + RELENG_2_1_5_RELEASE + + FreeBSD-2.1.5. ports + コレクションにはふさわしくありません. + + + + + RELENG_2_1_0_RELEASE + + FreeBSD-2.1.0. ports + コレクションにはふさわしくありません. + + + + + ブランチタグを指定したときには, + 普通はその開発の流れにおける + 最も新しいバージョンのファイルを受け取ることができます. + もし以前のバージョンのものが欲しいときには, 日付を + + オプションを使って指定すればよいです. + + + + + + 本当はなにかする前には &man.cvs.1; + のマニュアルページの全体を + ちゃんと読んでからのほうがいいのですが, Anonymous CVS + の使い方の本質的なところを簡単に例を挙げて説明します. + + + -current (ls(1)) + をちょっと確認してから消してみます. + + + &prompt.user; setenv CVSROOT + anoncvs@anoncvs.freebsd.org:/cvs + &prompt.user; cvs co ls + &prompt.user; cvs release -d + ls + + + + ls(1) のバージョンを 2.2-stable + ブランチから調べてみます. + + + + &prompt.user; setenv CVSROOT + anoncvs@anoncvs.freebsd.org:/cvs + &prompt.user; cvs co -rRELENG_2_2 + ls &prompt.user; cvs release -d + ls + + + + FreeBSD 2.2.2 と FreeBSD 2.2.6 とで ls(1) + の変更点のリストを (unidiff で) 作ってみます. + + + &prompt.user; setenv CVSROOT + anoncvs@anoncvs.freebsd.org:/cvs + &prompt.user; cvs rdiff -u + -rRELENG_2_2_2_RELEASE -rRELENG_2_2_6_RELEASE + ls + + + + 他のどんなモジュールの名前が + 使われているか検索してみます. + + + &prompt.user; setenv CVSROOT + anoncvs@anoncvs.freebsd.org:/cvs + &prompt.user; cvs co modules + &prompt.user; more + modules/modules &prompt.user; cvs + release -d modules + + + + + 他の資料 + + 次の資料は CVS を学ぶのに役に立つでしょう. + + + + CVS チュートリアル. Cal Poly によります. + + + + Cyclic + Software, 商用として CVS を維持しています. + + + + CVSWeb + は FreeBSD Project の CVS のための web + インターフェースです. + + + + + + + <application>CTM</application> + + 原作: &a.phk;. 更新: 19-October-1997. + + 訳: &a.hanai; + 13 September 1997. + + CTM + はリモートのディレクトリツリーを中央のツリーに同期させるための + 手段です. + これはFreeBSDのソースツリーの配布を行なうために開発されまし + たが, 時が経つにつれて別の目的にも有用であることがわかるかも + しれません. + デルタを作り出す処理に関するドキュメントは現在ほとんど + ありません. 従って, もしあなたがCTM + を他のことに使いたいなら + &a.phk;にさらなる情報を問い合わせてください. + + + なぜ<application>CTM</application>を使うの? + + CTM を使うことにより FreeBSD + ソースツリーのローカルコピー を手にいれることができます. + ソースツリーが使えることの魅力は数多くあります. 完全な cvs + ツリーを追いかけるにしても, ひとつのブランチを追いかける + にしても CTM + は必要な情報を与えてくれます. + もしあなたがFreeBSDのアクティブな開発者であるにもかかわらず + お粗末なTCP/IP接続しか持っていなかったり, またはTCP/IP接続が + 行なえないとしたら, あるいは単に変更が自動的に送られてきて + ほしいというのであれば CTM + はそんなあなたのために 作られたのです. + アクティブなブランチでは 1 + 日に最大三つまでのデルタを受け取る必 要があります. + これが自動的に e-mail で送られてくるという方法を + ぜひ検討してみてください. + デルタのサイズは常にできるだけ小さく保たれています. + 大抵の場合5KBよりも小さく, + たまに(10回に1回程度)10-50KBになり, + ときおり100KBかもっと大きくなる でしょう. + + 開発ソースから直接に得られたものを使うことについては, + あらかじめ パッケージにされたリリースとは違い, + いろいろと注意することが あります. これは特に + “current” のソースを選んでいるときは 重要です. + 最新の FreeBSD + を追いかけるを読むことを お勧めします. + + + + <application>CTM</application>を使うには何が必要? + + 二つのものが必要でしょう: CTM + プログラムとそれに与える (“current” + レベルを得るための)最初のデルタです. + + CTM + プログラムはバージョン2.0のリリース以来FreeBSDの一部にな + りました. もしソースのコピーを持っているなら + /usr/src/usr.sbin/CTMにあります. + + もしFreeBSDの2.0以前のバージョンなら, + 最新のCTMのソースを直接 + + ftp://ftp.FreeBSD.ORG/pub/FreeBSD/FreeBSD-current/src/usr.sbin/ctm + + から入手できます. CTM + に与える “デルタ” は二つの方法, FTPまたはe-mail, + で得ること ができます. + もしインターネットにFTPアクセスできるなら, + 次のFTPサイト: + + ftp://ftp.FreeBSD.ORG/pub/FreeBSD/CTM + + または, その ミラーサイト が + CTM へのアクセスをサポートします. + 適切なディレクトリに FTP して README + ファイルを入手し, そこから スタートしてください. + + e-mail によってデルタを得たいという場合は: + + CTM + 配布メーリングリストのいずれかに参加するために &a.majordomo; + へ subscribe のメールを送ってください. + “ctm-cvs-cur” は完全な cvs ツリー + をサポートします. “ctm-src-cur” + は開発先端ブランチをサポートします “ctm-src-2_2” + は 2.2 リリースのブランチのサポートです. + (もしmajordomoを使って参加する方法を知らない のであれば, + 最初にhelp + という語を含むメッセージを送ってください. — + 使い方の説明が送られてくるでしょう.) + + メールで CTM + による更新ファイルを受け取り始めると, 中身を取り出して使用 + するために ctm_rmail + プログラムを使うかもしれません. それを完全 + に自動で行ないたいなら, /etc/aliases + から ctm_rmailプロ + グラムを直接使うこともできます. + さらに詳しいことはctm_rmail + manページを御覧ください. + + + CTM + デルタを得るためにどの方法を使うのであっても, + ctm-announce@FreeBSD.ORG + メーリングリストに参加するべきです. + このメーリングリストは将来的には + CTMシステムの操作に関する + アナウンスがポストされる唯一の場になるでしょう. + メーリングリストに加わるためにはsubscribe + ctm-announce と書いた一行だけのメールを + &a.majordomo; へ送ってください. + + + + + はじめて<application>CTM</application>を使い始める + + CTM + デルタを使い始めるためには, これは以降作られる全ての + デルタの出発点を手にいれる必要があります. + 最初にあなたが何をすでに持っているかをはっきりさせましょう. + すべての人は + “空”のディレクトリから始めなければなりません. + ツリーをサポートしてるあなたの + CTM を稼働するためには + 指定した“空” + のデルタを使う必要があります. いくつかの分岐点 + では, あなたの都合により CD + 内に分配されている“スタータ” + デルタを使用できるようになっています. しかしながら, これは + 頻繁に行われることではありません. + + + 適切な出発点が決まれば, その出発点を + CTM が + 維持するツリーへ変換するための “スタータ” + 初期デルタを使う必要が あります. + + 移行デルタは番号の後ろに X + をつけたものがそうです + (たとえばsrc-cur.3210XEmpty.gz). + X + の後ろは最初の開始ポイントに対応します. + Empty は 空のディレクトリです. + ルールとして Empty からの移行デルタは + 100 デルタごとに 作られます. ところで, + これらは非常に大きいです! + XEmptyのデルタは 数十MBの + gzip + で圧縮されたデータというのが普通です. + + 一度スタートするためのベースデルタを得ると, + それに続く多数の 全てのデルタも必要になるでしょう. + + + + <application>CTM</application>を日常で使う + + デルタを適用するためには, 単に + + &prompt.root; cd /where/ever/you/want/the/stuff +&prompt.root; ctm -v -v /where/you/store/your/deltas/src-xxx.* + + とします. + + CTM + はどれがgzipされているか理解します. + 従って最初に gunzipしておく必要はありません. + ディスクの節約にもなります. + + 全体の処理に関して確信するまでは + CTM は(ソース)ツリーに対して + 何もしません. また, デルタを確かめるためには + フラグを使うことができます. + このフラグがあると CTM + はツリーに対して実際には何も行ないません. + 単にデルタの完全性を確認し, + 現在のツリーに問題なく使用できるかを確認 + するだけです. + + CTM + には他にもオプションがあります. 詳細に関しては + マニュアルページを参照するかソースを見てください. + + もし誰かが “ユーザ インターフェース” + の部分に関して助けてくれるなら 私はとても嬉しいです. + なぜならどういうオプションが何を, どのよう に, + いつ行なうようにするべきか決めかねているからです. + + 以上でやることは本当に全部です. + 新しいデルタを入手した時には, + ソースを最新のものにするためにそれを + CTMに通すだけです. + + もしデルタを再ダウンロードするのが + 骨の折れる作業であれば, デルタを 消さないでおいてください. + なにかおかしなことが起こった場合には置いておけば良かった + と思うかもしれません. + もしフロッピーディスクしか持っていない状況 + であってもコピーを取るのに + fdwriteを使うことを考えてください. + + + + ローカルの変更を保存する + + 開発者としてはソースツリー中のファイルを + 使って実験したり変更したく なるものです. + CTM + はローカルの変更を制限つきでサポートします: ファイル + foo の存在をチェックする前に, + foo.ctm を参照しにいきます. + このファイルが存在する場合, CTM は foo + の代りにこれを処理します. + + この動作はローカルの変更を保持する簡単な手段を + 提供します: 単に変更したいファイルを拡張子 + .ctm 付きのファイル名で + コピーするだけです. あとは自由にコードをハックでき, + .ctm ファイルの方は CTM + が最新状態に保ってくれます. + + + + <application>CTM</application> + のその他の面白いオプション + + + 更新で変更されるファイルを正確に知る + + CTM + のソースリポジトリに対する変更のリストを + + オプションを使って決定することができます. + + これは, 変更のログを保存したい, + 変更されたファイルをなんらかの方法で 前・後処理したい, + または単にこだわりたい :-) 場合には, + 役に立つでしょう. + + + + 更新前にバックアップを取る + + CTM + の更新によって変更されるファイルすべてのバックアップを + 取りたくなることがあります. + + オプションを指定すると + CTM は + デルタで変更されるファイルすべてを + backup-file + としてバックアップするようになります. + + + + 更新で変更されるファイルを制限する + + CTM + の更新の範囲を制限したり一連のデルタのから + ほんの数ファイルを 抽出したくなることがあります. + + + オプションを用い正規表現を 指定することで, + CTM + が処理するファイルのリストを制御することが + できます. + + 例えば, lib/libc/Makefile + の最新のコピーを保存してある CTM + デルタのコレクションから抽出するには, + 以下のコマンドを実行します. + + &prompt.root; cd /where/ever/you/want/to/extract/it/ +&prompt.root; ctm -e '^lib/libc/Makefile' ~ctm/src-xxx.* + + CTM + デルタで指定されたファイルごとに, + そして + オプションがコマンドラインで指定された順序で 適用されます. + すべての そして + オプションが適用された後に更新対象と選択された場合に限り, + CTM + はそのファイルを処理します. + + + + + <application>CTM</application>の将来計画 + + 重要なもの + + + + なんらかの CTM システムへの認証機構を用い, 不正な + CTM の更新の 検出を可能とする. + + + + CTM + へのオプションを整理する. さもないと混乱し, + 直観に反したもの になります. + + + + 残念なことに私は非常に忙しいです. + 従ってこれを行なうどんな手助け でも歓迎します. その際, + 自分が何をやりたいかを私に 言うのを忘れずに. + + + + その他 + + “DESに染まった” (例えば, + 国外への持ち出しが規制された)ソースは まったく含まれません. + 手に入るのは“国際”バージョンだけです. + もし興味のある人が多いようであれば, + 我々はsec-curシーケンスも + セットアップするつもりです. ports + コレクションに対するデルタのシーケンスもあります. しかし, + まだあまり興味は持たれていないようです. + もしこれに対するメーリング + リストが欲しい時も私に言ってください. + 我々はセットアップすることを 考えます. + + + + ありがとう! + + + &a.bde; + + 辛辣なペンと価値のないコメントに対して. + + + + &a.sos; + + よく辛抱してくれました. + + + + Stephen McKay + + ctm_[rs]mailを書いてくれました. + とても感謝して います. + + + + &a.jkh; + + 彼が頑固として譲らなかったため, 私もこの + CTM をもっと良いものに + しないわけにはいきませんでした. + 彼の頑固さに感謝します. + + + + ユーザの人みんな + + 気に入ってくれることを願っています... + + + + + + + + <application>CVSup</application> + + 原作: &a.jdp;. + + 訳: &a.jp.iwasaki;. + 27 February 1997. + + + <application>CVSup</application> の紹介 + + 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 + プロジェクトでは使用されていません. + + + + <application>CVSup</application> のインストール + + FreeBSD 2.2 以降を使用している場合, + CVSup をインストールするもっとも + 簡単な方法は, FreeBSD ports + コレクション の port + または対応する + バイナリ package を使うことです. + どちらを使うかは, + CVSupを自分で作りたいかどうかによります. + + FreeBSD-2.1.6 または 2.1.7 を使用している場合は, + 残念ながら FreeBSD-2.1.{6,7} には存在しないバージョンの C + ライブラリが必要となるため バイナリ package + は使用できません. しかし, + port は FreeBSD 2.2 とまったく同じように + 簡単に使うことができます. + 単に tar ファイルを展開し, cvsup ディレクトリへ cd して + make install とタイプするだけです. + + CVSup + Modula-3 で書かれているため, package と port + 両方とも Modula-3 ランタイムライブラリが + インストールされていることが必要です. + これらは port の + lang/modula-3-lib + および package の + lang/modula-3-lib-3.6 にあります. + これらのライブラリの port や package に対して + cvsup と同じ管理方法を取っていれば, + CVSup の port や package + をインストールする際に, これらのライブラリも自動的に + コンパイルそして/またはインストールされます. + + Modula-3 ライブラリはかなり大きく, + これらの転送やコンパイルはすぐに 終わるものではありません. + この理由から, 三つめの選択肢が提供されています. + 以下のアメリカ合衆国にある配布サイトのどちらからでも, + FreeBSD 用の スタティックリンクされた + CVSup + 実行形式が入手可能です: + + + + ftp://ftp.freebsd.org/pub/FreeBSD/development/CVSup/cvsup-bin-16.0.tar.gz + (GUI 込みのクライアント). + + + + ftp://ftp.freebsd.org/pub/FreeBSD/development/CVSup/cvsup.nogui-bin-16.0.tar.gz + (GUI なしのクライアント). + + + + ftp://ftp.freebsd.org/pub/FreeBSD/development/CVSup/cvsupd-bin-16.0.tar.gz + (サーバ). + + + + また, 世界中にあるたくさんの FreeBSD FTP ミラーサイト + からも入手可能です. : + + ほとんどのユーザはクライアントのみが必要になるでしょう. + これらの 実行形式は完全に自己完結しており, FreeBSD-2.1.0 + から FreeBSD-current までの, + どのバージョンでも動作します. + + まとめると, CVSup + をインストールするための選択肢は以下の通りです: + + + + FreeBSD-2.2以降: スタティックバイナリ, port, package + + + + FreeBSD-2.1.6, 2.1.7: スタティックバイナリ, port + + + + FreeBSD-2.1.5 以前: スタティックバイナリ + + + + + + <application>CVSup</application> + のコンフィグレーション + + CVSup の動作は, supfile + と呼ばれるコンフィグレーションファイルで 制御します. + FreeBSD-2.2 からは, supfile + のサンプルがディレクトリ /usr/share/examples/cvsup + の下にあります. 2.2 以前のシステムを + 使用している場合は, これらの サンプルを + + ftp://ftp.freebsd.org/pub/FreeBSD/FreeBSD-current/src/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 + フィールドの デフォルトを設定するために利用できます. + 個々のコレクションで固有の値を 指定すると, + デフォルト値を無効にできます. また + 行を追加すると, supfile + の途中からデフォルト値の変更や追加が可能になります. + + これまでの予備知識を基に, FreeBSD-current + のメインのソースツリーを受け取って更新するための + supfile を 組み立ててみましょう. + + + + どのファイルを受け取りたいのか? + + CVSup + を通して入手できるファイルは “コレクション” + と呼ばれる名前の付けられたグループにまとめられています. + 利用可能なコレクションについては ここ で説明しています. + ここでは, FreeBSD システムのメインのソースツリー全体 + を受け取るための設定例を紹介します. + 輸出規制されている暗号化サポートの + コード以外のすべてを含む src-all + という 単一の大きなコレクションがあります. + この例では私たちがアメリカ合衆国か + カナダにいるものと仮定します. その場合, + cvs-crypto という一つの付化的な + コレクションで暗号化コードを入手することができます. + supfile + を組み立てる最初のステップとして, + これらのコレクションを一行に一つづつ 記述します: + + +src-all +cvs-crypto + + + + どのバージョンのものが欲しいのか? + + CVSup を使用すると, + かつて存在していたことのある, 事実上どのバージョンの + ソースでも受け取ることができます. これは cvsupd + サーバがすべてのバージョンを含む CVS + リポジトリに基づいて動作することにより, + 実現されています. tag= および + の value フィールドを使用して, + 欲しいバージョンの 一つを指定します. + + + tag= + のフィールドの指定は正確に行うように十分注意 + してください. いくつかのタグは特定のコレクションに + 対してのみ有効です. + タグの綴りが違っていたり不適切なタグを指定すると, + CVSupはユーザが消し + たくないファイルまで削除してしまいます. 特に + ports-* のコレクション に対しては + tag=. だけ + を指定するようにしてください. + + + tag= + フィールドはリポジトリ中のシンボリックタグを指定します. + tag には revision tag と branch tag の二種類があります. + revision tag は特定のリビジョンを指します. これは, + 毎日同じ状態に保つことになります. 一方 branch tag は, + ある時点での開発分流の最新のリビジョンを指します. + branch tag + は特定のリビジョンを指定している訳ではないので, + 今日と明日では + 異なるリビジョンを参照することになるかもしれません. + + 以下はユーザが興味を持っていると思われる branch tag + です: + + + tag=. + + メインの開発分流であり, FreeBSD-current + として知られています. + + + 注意: . + は句読点ではありません. tag の名称です. + このタグの指定は総ての + コレクションに対して有効です. + + + + + tag=RELENG_3 + + FreeBSD-3.x 用の開発分流であり, FreeBSD-stable + として知られています. このタグの指定は ports-* + のコレクションに対しては無効です. + + + + tag=RELENG_2_2 + + FreeBSD-2.2.x 用の開発分流であり, 2.2-stable + として知られています. このタグの指定は ports-* + のコレクションに対しては無効です. + + + + tag=RELENG_2_1_0 + + FreeBSD-2.1.x 用の開発分流です. + この分流はほとんど利用されていません. + このタグの指定は ports-* + のコレクションに対しては無効です. + + + + + 以下はユーザが興味を持っていると思われる revision + tag です: + + + tag=RELENG_3_0_0_RELEASE + + FreeBSD-3.0. このタグの指定は ports-* + のコレクションに対しては無効です. + + + + tag=RELENG_2_2_8_RELEASE + + FreeBSD-2.2.8. このタグの指定は ports-* + のコレクションに対しては無効です. + + + + tag=RELENG_2_2_7_RELEASE + + FreeBSD-2.2.7. このタグの指定は ports-* + のコレクションに対しては無効です. + + + + tag=RELENG_2_2_6_RELEASE + + FreeBSD-2.2.6. このタグの指定は ports-* + のコレクションに対しては無効です. + + + + tag=RELENG_2_2_5_RELEASE + + FreeBSD-2.2.5. このタグの指定は ports-* + のコレクションに対しては無効です. + + + + tag=RELENG_2_2_2_RELEASE + + FreeBSD-2.2.2. このタグの指定は ports-* + のコレクションに対しては無効です. + + + + tag=RELENG_2_2_1_RELEASE + + FreeBSD-2.2.1. このタグの指定は ports-* + のコレクションに対しては無効です. + + + + tag=RELENG_2_2_0_RELEASE + + FreeBSD-2.2.0. このタグの指定は ports-* + のコレクションに対しては無効です. + + + + tag=RELENG_2_1_7_RELEASE + + FreeBSD-2.1.7. このタグの指定は ports-* + のコレクションに対しては無効です. + + + + tag=RELENG_2_1_6_1_RELEASE + + FreeBSD-2.1.6.1. このタグの指定は ports-* + のコレクションに対しては無効です. + + + + tag=RELENG_2_1_6_RELEASE + + FreeBSD-2.1.6. このタグの指定は ports-* + のコレクションに対しては無効です. + + + + tag=RELENG_2_1_5_RELEASE + + FreeBSD-2.1.5. このタグの指定は ports-* + のコレクションに対しては無効です. + + + + tag=RELENG_2_1_0_RELEASE + + FreeBSD-2.1.0. このタグの指定は ports-* + のコレクションに対しては無効です. + + + + + + tag + 名を示した通りにタイプされているか十分注意してく + ださい. CVSup は tag + 名が正しいかどうかを見分けることはできません. tag + が間違っていた場合, + たまたまファイルがまったく存在しない正しい tag が + 指定されたものとしてCVSup + は動作します. その場合は, 現在あるソースが削 + 除されるでしょう. + + + branch tag を指定した際には, + 通常はその開発分流の最新バージョンの + ファイルを受け取ります. + いくらか前のバージョンを受け取りたい場合は, + の value + フィールドを使って日付を指定することで, + これを実現することが できます. &man.cvsup.1; + のマニュアルページで, + その方法を説明しています. + + 例として, FreeBSD-current を受け取りたいとします. + 次の行を supfile + の始めに追加します: + + +*default tag=. + + tag= フィールドも + date= + フィールドも指定しなかった場合に + 動き出す重要な特殊なケースがあります. そのケースでは, + 特定のバージョンの ファイルを受け取るのではなく, + サーバの CVS リポジトリから実際の RCS + ファイルを直接受け取ります. + 一般的に開発者はこの処理のモードが 好きなようです. + 彼らのシステム上にリポジトリそのものの + コピーを維持することで, + リビジョン履歴を閲覧し過去のバージョンの + ファイルを検査できるようになります. しかし, + これには大きなディスクスペースが必要になります. + + + + どこから入手したいのか? + + 更新情報をどこから入手するかを + cvsup に伝えるために + host= フィールドを使用します.CVSup ミラーサイト + のどこからでも入手できますが, + ネット上での最寄りのサイトを選ぶべきでしょう. + この例では, 仮想上の FreeBSD 配布サイト cvsup666.FreeBSD.org + を使用します: + + +*default host=cvsup666.FreeBSD.org + + CVSup を実行する前にホスト名を + 実在のものに変更する必要があります. どのように + cvsup を実行しても, この設定は + + を + 使用してコマンドラインで変更することができます. + + + + 自分のマシンのどこに置きたいのか? + + prefix= フィールドは, + cvsup + に受け取ったファイルをどこに置くかを 伝えます. + この例では, ソースファイルを直接メインのソースツリー + /usr/src に置きます. + src + ディレクトリはすでにファイルを受け取るために + 選択したコレクションで暗黙に指定しているので, + これは正しい仕様となります: + + +*default prefix=/usr + + + + どこに status ファイルを置きたいのか? + + cvsup クライアントは “base” + ディレクトリと呼ばれる場所に, ある status + ファイルを維持しています. + すでに受け取った更新情報を追従し続け ることで, + これらのファイルは CVSup + がより効果的に動作することを支援し ます. 標準の base + ディレクトリ /usr/local/etc/cvsup + を使用します: + + +*default base=/usr/local/etc/cvsup + + supfile に指定がない場合は, + この設定をデフォルトで使用しますので, + 実際には上の行は必要ありません. + + base + ディレクトリが存在しない場合は作成しておきましょう. base + ディレクトリが存在しない場合, cvsup + クライアントは実行を拒否します. + + + + その他もろもろの supfile + の設定: + + 通常 supfile + に入れておくべき行がもう一つあります: + + +*default release=cvs delete use-rel-suffix compress + + release=cvs は, サーバがメインの + FreeBSD CVS リポジトリから + その情報を取得するように指示します. + ほとんどの場合はこのようにしておきますが, + ここでの説明の範疇をこえるような + 状況では他の指定をすることも可能です. + + delete は + CVSup + にファイルを削除することを許可します. + CVSup が + ソースツリーを完全に最新の状態に + 保てるようにするためには, これは常に + 指定しておくべきでしょう. + CVSup は, + これらの責任範囲のファイルだけを 慎重に削除します. + たまたま存在する他の余分なファイルについては, + まったく手をつけずに残しておきます. + + use-rel-suffix は ... + 神秘的なものです. これについて本当に 知りたい人は, + &man.cvsup.1; のマニュアルページをご覧ください. + でなければ, 何も考えずに指定してみてください. + + compress は通信チャネルで gzip + 形式の圧縮の使用を有効にします. + ご使用のネットワーク接続が T1 speed 以上である場合, + この圧縮を 使用しない方がよいかもしれません. + そうでない場合は十分に役に立ちます. + + + + supfile の例のまとめ: + + 以下は supfile の例の全体です: + + +*default tag=. +*default host=cvsup666.FreeBSD.org +*default prefix=/usr +*default base=/usr/local/etc/cvsup +*default release=cvs delete use-rel-suffix compress + +src-all +cvs-crypto + + + + + + <application>CVSup</application> の実行 + + さて, 更新の準備ができました. + これを実行するコマンドラインは 実に簡単です: + + &prompt.root; cvsup supfile + + もちろん, ここでの + supfile + は作成したばかりの supfile のファイル名です. X11 + 環境で実行するものと仮定して, cvsup は + 通常の操作に必要なボタンを持つ GUI ウィンドウを表示します. + “go” ボタンを押して, + 実行を監視してください. + + この例では実際の /usr/src + ツリーを更新しているので, cvsup + にファイルを更新するのに必要なパーミッションを与えるために, + ユーザ root で実行する必要があります. + コンフィグレーションファイルを作ったばかりで, + しかも以前にこのプログラムを実行したことがないので, + 神経質になるのは 無理もない話だと思います. + 大切なファイルに触らずに試しに実行する簡単な 方法があります. + どこか適当な場所に空のディレクトリを作成して, + コマンドラインの引数で指定するだけです: + + &prompt.root; mkdir /var/tmp/dest +&prompt.root; cvsup supfile /var/tmp/dest + + 指定したディレクトリは, すべての更新されるファイルの + 更新先ディレクトリとして使用します. + CVSup は + /usr/src の下の ファイルを検査しますが, + 変更や削除はまったくおこないません. かわりに + /var/tmp/dest/usr/src + に更新されたすべてのファイルが 置かれるようになります. + この方法で実行した場合は, CVSup + は base ディレクトリの status + ファイルを更新せずにそのままにします. + これらのファイルの新しいバージョンは指定されたディレクトリ + に書き込まれます. /usr/src + の読み取り許可がある限り, このような 試し実行のためにユーザ + root になる必要はありません. + + X11 を利用していないとか単に GUI が気に入らない場合は, + cvsup 起動時にコマンドラインに + 二つほどオプションを追加する必要があります: + + &prompt.root; cvsup -g -L 2 supfile + + オプションは cvsup に GUI + を使用しないように伝えます. X11 + を利用していない場合には自動的に指定されますが, + そうでない場合は 明示的に指定します. + + オプションは cvsup + にファイル更新中の詳細情報をプリントアウト + するように伝えます. 冗長性には から + までの三つのレベル があります. + デフォルトは 0 であり, エラーメッセージ以外はまったく出力 + しません. + + たくさんの他のオプション変数があります. + それらの簡単な一覧は cvsup -H + で表示されます. + より詳しい説明はマニュアルページをご覧ください. + + 動作している更新の方法に満足したら, &man.cron.8; + を使って cvsup を定期的に + 実行させる準備をすることができます. cron から起動する際には, + 明示的に cvsup が GUI + を使わないようにする必要があります. + + + + <application>CVSup</application> ファイルコレクション + + CVSup + 経由で入手できるファイルコレクションは + 階層的に組織化されています. + いくつか大きなコレクションがあり, + それらは小さなサブコレクションに 分割されています. + 大きなコレクションは, そのサブコレクション毎に + 受信することと同じことになります. + 下の一覧ではコレクション間の階層関係を + 字下げして表現します. + + 最も一般的に使用するコレクションは + src-all, cvs-crypto, + そして ports-all です. + 他のコレクションは特別な目的を持つ人達だけが 使用しており, + ミラーサイトはそれらのすべてを + 持っていないかもしれません. + + + cvs-all release=cvs + + メインの FreeBSD CVS リポジトリであり, + 輸出規制された暗号化コードは含まれていません. + + + + distrib release=cvs + + FreeBSD + の配布とミラーに関連するファイルです. + + + + + doc-all release=cvs + + FreeBSD + ハンドブックおよびその他のドキュメントの + ソースです. + + + + + ports-all release=cvs + + FreeBSD の ports コレクションです. + + + + ports-archivers release=cvs + + + アーカイビングのツール. + + + + + ports-astro release=cvs + + 天文学関連の ports. + + + + + ports-audio release=cvs + + サウンドサポート. + + + + + ports-base release=cvs + + /usr/ports + のトップにあるその他のファイル. + + + + + 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-editors release=cvs + + + エディタ. + + + + + ports-emulators release=cvs + + + 他の OS のエミュレータ. + + + + + ports-games release=cvs + + ゲーム. + + + + + ports-german release=cvs + + + ドイツ語サポート. + + + + + ports-graphics release=cvs + + + グラフィックユーティリティ. + + + + + ports-japanese release=cvs + + + 日本語サポート. + + + + + 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-net release=cvs + + ネットワーキングソフトウェア. + + + + + ports-news release=cvs + + USENET ニュースのソフトウェア. + + + + + ports-plan9 release=cvs + + Plan9 からの色々なプログラム. + + + + + ports-print release=cvs + + 印刷ソフトウェア. + + + + + ports-russian release=cvs + + + ロシア語サポート. + + + + + ports-security release=cvs + + + セキュリティユーティリティ. + + + + + ports-shells release=cvs + + + コマンドラインシェル. + + + + + ports-sysutils release=cvs + + + システムユーティリティ. + + + + + ports-textproc 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-fm release=cvs + + + X11 上で動作するファイラ. + + + + + ports-x11-fonts release=cvs + + + X11 のフォントとフォントユーティリティ. + + + + + ports-x11-toolkits release=cvs + + + X11 のツールキット. + + + + + ports-x11-wm release=cvs + + + X11 のウィンドウマネージャ. + + + + + + + + src-all release=cvs + + メインの FreeBSD ソース群であり, + 輸出規制された暗号化コードは + 含まれていません. + + + + src-base release=cvs + + /usr/src + のトップにあるその他のファイル. + + + + + src-bin release=cvs + + シングルユーザモードで必要な + ユーザユーティリティ + (/usr/src/bin). + + + + + src-contrib release=cvs + + FreeBSD プロジェクト外部からの + ユーティリティおよびライブラリ, + 比較的無修正 + (/usr/src/contrib). + + + + + 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-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-sbin release=cvs + + シングルユーザモード用の + システムユーティリティ + (/usr/src/sbin). + + + + + src-share release=cvs + + 多様なシステム間で共有可能なファイル + (/usr/src/share). + + + + + src-sys release=cvs + + カーネル + (/usr/src/sys). + + + + + 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 + + World Wide Web のデータ用のソースです. + + + + + + + cvs-crypto release=cvs + + 輸出規制された暗号化コードです. + + + + src-crypto release=cvs + + 輸出規制された FreeBSD + プロジェクト外部からのユーティリティおよび + ライブラリ, 比較的無修正 + (/usr/src/crypto). + + + + + src-eBones release=cvs + + Kerberos および DES + (/usr/src/eBones). + + + + + src-secure release=cvs + + DES (/usr/src/secure). + + + + + + + distrib release=self + + CVSup + サーバ自身のコンフィグレーションファイルです. CVSup + ミラーサイトが使用します. + + + + + gnats release=current + + GNATS バグトラッキングデータベースです. + + + + + mail-archive release=current + + FreeBSD 関連メーリングリストのアーカイブ. + + + + www release=current + + インストールされた World Wide Web のデータです. + WWW ミラーサイトが使用します. + + + + + + + 詳細について + + CVSup の FAQ や CVSup に関するその他の情報については + + The CVSup Home Page をご覧ください. + + CVSup のほとんどの FreeBSD + 関連の議論は &a.hackers; で おこなわれています. + ソフトウェアの新しいバージョンは &a.announce; で + アナウンスされます. + + 質問とバグ報告はプログラムの作者, + cvsup-bugs@polstra.com へ + 送ってください. + + + + + + <command>make world</command> でシステムを再構築する + + Contributed by &a.nik;. + + 訳: &a.jp.y-koga;. + 16 March 1998. + + FreeBSD のどれか特定のバージョン (stable, + current など) + について, ローカルのソースツリーを同期させたら, + そのソースツリーを使ってシステムを + 再構築しなければなりません. + + その方法については, http://www.nothing-going-on.demon.co.uk/FreeBSD/make-world/make-world.html が今のところ一番よいチュートリアル資料です. + + このチュートリアルの次のバージョンは, ハンドブックに統合される予定です. + + + + diff --git a/ja/handbook/disks/chapter.sgml b/ja/handbook/disks/chapter.sgml new file mode 100644 index 0000000000..81329e0185 --- /dev/null +++ b/ja/handbook/disks/chapter.sgml @@ -0,0 +1,211 @@ + + + + ディスク + + 原作 &a.obrien; 26 April 1998 + 訳: &a.jp.yoshiaki;. 19 July 1998. + + 1台だけディスクのあるマシンに新しい SCSI ディスクを追加する + 場合について述べましょう. まず, コンピュータの電源を切り, + コンピュータにコントローラとドライブを接続します. これには + 様々な手順がありえるため詳細についてはこのドキュメントの範囲外 + です. + + rootユーザとして login します. + ドライブを接続した + あとで /var/run/dmesg.boot を調べて, + 新しいドライブが + 認識されたことを確認します. 以下の例では, あたらしく加える + ドライブは sd1 で + /1 へマウントしたいとします. + (IDE ドライブを加える場合はsd の代りに + wdを使います) + + FreeBSD は IBM-PC 互換コンピュータで動作しますので, + (訳注: 通常の場合では) + ディスクは PC BIOS パーティションに属しなければなりません. + これは伝統的な BSD パーティションとは異なります. PC のディスク + は最大4までのエントリを持ちます. もしディスク全体を FreeBSD に + わりあてるのであれば, + ディスク全体を使用を選ぶことが + できます. そうでないなら PC BIOS パーティションの一つに + FreeBSD を入れることになります. FreeBSD では PC BIOS + パーティションのことを slices と呼びます. + 伝統的な + BSD パーティションと混同するのを防ぐためです. FreeBSD のために + つくったスライスをつかうこともできますし, ほかの OS を + インストールしてあるスライスをつかうこともできます. + これは他のオペレーティングシステムの fdisk + ユーティリティの混乱を引き起こしません. + + スライスをつかう場合, ドライブは + /dev/sd1s1e のよう + な形で加えられます. これは, SCSI ディスクの, ユニット番号1 + (2台目の SCSI ディスク), スライス1 (PC BIOS パーティション1), + e BSD パーティションという意味です. + 全体を割り当てる場合は, ドライブは /dev/sd1e + という単純な形になります. + + + sysinstall を利用する + + + /stand/sysinstallを利用すると, + 新しいディスクの + パーティションやディスクラベルの設定をメニューから簡単に + 行うことができます. + rootユーザで login するか + su コマンドを使います. + /stand/sysinstall を動かし, + カスタム メニューに入ります. + カスタムメニュー で + パーティション + を選びます. そうするとシステムに接続されているハードディスクの + リストがあらわれるでしょう. sd1 + がリストに無い場合は接続と + /var/run/dmesg.boot にある + dmesg の出力を + チェックする必要があります. + + + sd1を選び, FDISK + パーティションエディタ に入ります. ディスク全体を + FreeBSD でつかうのであれば A を選びます. + 正しいパーティションエントリを保持して, このドライブには + 将来的に他のオペレーティングシステムを + 同居させる余地を残しますか? と聞かれますので, + そうしたい場合はYES を選んでください. + 変更をディスクに書き込むにはW + コマンドを使います. FDISK + エディタを終了するにはqコマンドを使います. + FDISK エディタを終了すると Master Boot Record + について質問されます. + すでに動いているシステムにディスクを追加するのですから + None を選びます. + + 次に ディスクラベルエディタに入ります. + ここで BSD の伝統的パーティションをつくります. + ディスクには a から h + までのラベルがついた + 8区画のパーティションをつくることができます. + 一部のパーティションのラベルについては特別に扱われます. + a パーティションは root パーティション + (/) に + 使われます. したがって, システムディスク(すなわち ブートを行う + ディスク)に 1つだけa + パーティションをつくるべきです. + b + パーティションは swap パーティションとして使われ + ます. swap パーティションは複数のディスク上につくっても + かまいません. c + パーティションは「ディスク全体を使用」 + としている場合はディスク全体をさします. スライスを利用している + 場合は FreeBSD のスライス全体をさします. そのほかの + パーティションは一般的な目的に利用します. + + sysinstall のラベルエディタは root や swap 以外の + パーティションでは e + をつかうように勧めます. + ラベルエディタでは単一のファイルシステムを作成するには + C コマンドをつかいます. + FS (ファイルシステム) か swap かを聞いてきますので + FS を + 選びマウントポイントを入力(/mnt + のように)します. + インストール後の設定のモードではディスクの追加をするときに, + sysinstall は /etc/fstab + にエントリを作成しません. + したがってここでのマウントポイントの入力は + 重要ではありません. + + これでディスクへのディスクラベルの書き込みと + ファイルシステムの作成の準備ができました. + W を + 押してください. sysinstall が新しいパーティションがマウント + できないことについてエラーを出しますが無視してください. + ラベルエディタから抜けて sysinstall を終了してください. + + 最後のステップは /etc/fstab + の編集で, 新しいディスクのエントリを追加します. + + + + コマンドラインユーティリティの利用 + + + * スライスを利用する + + + + + + ディスク全体を利用する + + 新しいドライブを別のオペレーティングシステムで共有しない + 場合, ディスク全体を利用 (dedicated mode) + することも + できます. このモードではダメージが与えられるということは + ありませんが Microsoft のオペレーティングシステムが混乱する + ということを覚えておいてください. + IBM の OS/2 では認識できない場合, すべて占有されていると + 解釈します. + + &prompt.root; dd if=/dev/zero of=/dev/rsd1 bs=1k count=1 +&prompt.root; disklabel -Brw sd1 auto +&prompt.root; disklabel -e sd1 # `e' パーティションの作成 +&prompt.root; newfs -d0 /dev/rsd1e +&prompt.root; mkdir -p /1 +&prompt.root; vi /etc/fstab # /dev/sd1e のエントリ +&prompt.root; mount /1 + + 別の方法は: + + &prompt.root; dd if=/dev/zero of=/dev/rsd1 count=2 +&prompt.root; disklabel /dev/rsd1 | disklabel -BrR sd1 /dev/stdin +&prompt.root; newfs /dev/rsd1e +&prompt.root; mkdir -p /1 +&prompt.root; vi /etc/fstab # /dev/sd1e のエントリ +&prompt.root; mount /1 + + + + + * 伝統的なものとは異なるドライブ + + + * Zip ドライブ + + + + + + * Jazz ドライブ + + + + + + * Sequest ドライブ + + + + + + + diff --git a/ja/handbook/eresources/chapter.sgml b/ja/handbook/eresources/chapter.sgml new file mode 100644 index 0000000000..c9a5567c30 --- /dev/null +++ b/ja/handbook/eresources/chapter.sgml @@ -0,0 +1,1318 @@ + + + + インターネット上のリソース + + 原作: &a.jkh;. + + 訳: &a.jp.yuki;. + 28 August 1996 + + FreeBSD の進歩が急速であるため, + 最新の開発をフォローするためには, + 印刷したメディアは実用的でなくなっています. 大抵の場合, + 最新情報を入手する方法としては, 電子的なリソースが ベストです. + FreeBSDはボランティアの努力によって, ユーザコミュニティ自体が, + 一種の“テクニカルサポート部門”としての + 役割も通常果たしており, + 電子メールやUsenetのニュースがこれらのコミュ + ニティにたどり着く最も効果的な方法になっています. + + 以下に, FreeBSD + ユーザコミュニティに連絡を取る場合の最も重要な点についての + 概略を示します. + もしここに書かれていない他のリソースに気がついた場合は, それらを + &a.doc; に送って頂ければ, + それらをここに含めるかもしれません. + + + メーリングリスト + + 多くのFreeBSDの開発メンバはUSENETを読むことができますが, + もし, comp.unix.bsd.freebsd.* + のグループの一つに質問を投稿したとしても + タイムリにその質問を受け取るということは保証できません. + 質問を適切なメーリングリストに投稿すれば, + 私たちかFreeBSDの関係者から, よりよい + (そして少なくともより早い) + 反応がいつでも得られることでしょう. + + さまざまなメーリングリストの憲章を + このドキュメントの最後に記載しま す. 私たちは, + メーリングリストの質, 特に技術面に関する質を高く保つ + ために努力しているので, + メーリングリストに参加する前にその憲章を読んで ください. + 私たちのメーリングリストの参加者のほとんどは, + 現在非常 にたくさんの FreeBSD + に関連したメッセージを毎日受け取っており, メーリン + グリストに対するふさわしい + 用いられ方をするための憲章やルールを決めるこ とによって, + メーリングリストの S/N 比を高くする保つように励んでいます. + そうしないと, 結果的に, メーリングリストがプロジェクトにとって + 事実上のコミュニケーションの手段になってしまうでしょう. + + メーリングリストはいずれもアーカイブされており, それらは + FreeBSD World Wide Web + server で検索することができます. + キーワード検索可能なアーカイブの提供は, + 良くある質問に対する回答を見つけるすぐれた方法ですから, + 質問を投稿する前に調べてみるべきでしょう. + + + メーリングリストの概説 + + 一般的なメーリングリスト: + 以下のものは誰でも自由に参加できる (そしておすすめの) + 一般的なものです: + + + + + + リスト + 目的 + + + + + + freebsd-advocacy + FreeBSD の福音伝道 + + + + freebsd-announce + 重要なイベントやプロジェクトのマイルストン + + + + freebsd-bugs + バグレポート + + + + freebsd-chat + FreeBSD + コミュニティに関連する技術的ではない話題 + + + + freebsd-current + FreeBSD-current の使用に関連する議論 + + + + freebsd-isp + FreeBSD を用いている + インターネットサービスプロバイダの話題 + + + + freebsd-jobs + FreeBSD 関連の雇用機会に関する話題 + + + + freebsd-newbies + FreeBSD 初心者ユーザの活動と議論 + + + + freebsd-questions + ユーザからの質問と技術サポート + + + + freebsd-stable + FreeBSD-stable の使用に関連する議論 + + + + + + 技術的なメーリングリスト: + 以下のメーリングリストは, 技術的な 議論のためのものです. + それらの利用や内容のためにしっかりとしたガイドラ + インがあるので, これらのメーリングリストに入ったり, + どれか一つにメール を送ったりする前には, + それらのメーリングリストの憲章を注意深く読むべきで す. + + + + + + リスト + 目的 + + + + + + freebsd-afs + FreeBSD へのAFSの移植 + + + + freebsd-alpha + FreeBSD の Alpha への移植 + + + + freebsd-doc + FreeBSD 関連ドキュメントの作成 + + + + freebsd-database + FreeBSD + 上でのデータベースの利用や開発に関する議論 + + + + freebsd-emulation + Linux/DOS/Windows + のような他のシステムのエミュレーション + + + + freebsd-fs + ファイルシステム + + + + freebsd-hackers + 一般的な技術の議論 + + + + freebsd-hardware + FreeBSD の走るハードウェアの一般的な議論 + + + + freebsd-isdn + ISDN 開発者 + + + + freebsd-java + Java 開発者や, FreeBSD へ JDK + を移植する人たち + + + + freebsd-mobile + モーバイルコンピューティングについての議論 + + + + freebsd-mozilla + mozilla の FreeBSD への移植に関する議論 + + + + freebsd-net + ネットワークおよび TCP/IP + ソースコードに関する議論 + + + + freebsd-platforms + Intel 以外のアーキテクチャのプラットフォームへの移植 + + + + freebsd-ports + ports コレクションに関する議論 + + + + freebsd-scsi + SCSI サブシステム + + + + freebsd-security + セキュリティに関する話題 + + + + freebsd-small + 組み込みアプリケーションにおける FreeBSD の利用 + + + + freebsd-smp + 対称 / 非対称の + マルチプロセッシングの設計に関する議論 + + + + freebsd-sparc + FreeBSD の Sparc への移植 + + + + freebsd-tokenring + FreeBSD でのトークンリングのサポート + + + + + + 制限されているメーリングリスト: + 以下のメーリングリストは参加 + するにはcore@FreeBSD.ORGの 認可が必要ですが, + それぞれの憲章の範囲内であれば, 提案やコメントは誰で + も自由に投稿することができます. + + + + + + メーリングリスト + 目的 + + + + + + freebsd-admin + 管理に関する話題 + + + + freebsd-arch + アーキテクチャや設計の議論 + + + + freebsd-core + FreeBSDコアチーム + + + + freebsd-hubs + ミラーサイトを運営している人達 + (基盤のサポート) + + + + freebsd-install + インストール関係の開発 + + + + freebsd-security-notifications + セキュリティに関する通知 + + + + freebsd-user-groups + ユーザグループの調整 + + + + + + CVSメーリングリスト: + 以下のメーリングリストはソースツリーの + さまざまな場所の変更のログメッセージを見ることに + 興味のある人向けです. + これらは読み専用のリストで, + これらにメールを送る事は出来ません. + + + + + + メーリングリスト + ソースの範囲 + (ソースの) 範囲の説明 + + + + + + cvs-all + /usr/src + ツリーのすべての変更 (スーパーセット) + + + + + + + + 参加方法 + + どのメーリングリストもFreeBSD.ORGにあるので, + メーリングリストにメールを送るには, ただ + listname@FreeBSD.ORG + にメールを送るだけです. すると, + メーリングリストに登録されている世界中のメンバに + 再配布されます. + + メーリングリストに参加するには, + subscribe <listname> [<optional + address>] + という内容をメッセージの本文に含むメールを &a.majordomo; + に送ります. 例えば, freebsd-announce + に参加したい場合は次のようにします: + + &prompt.user; mail majordomo@FreeBSD.ORG +subscribe freebsd-announce +^D + + もし, あなたが, 自分自身を違う名前 (メールアドレス) + で登録したい場合, あるいは, ローカルなメーリングリスト + (もしあなたのサイトに, 興味を持った仲間がいるなら, + これはより有効ですし, 私たちにとっても非常に嬉しいことです.) + を登録する申し込みをおこないたいのであれば, 次のようにします: + + + &prompt.user; mail majordomo@FreeBSD.ORG +subscribe freebsd-announce local-announce@somesite.com +^D + + 最後に, majordomo に対して + 他のタイプのコントロールメッセージを送ることで + メーリングリストから脱退したり, + メーリングリストの他のメンバのリストを 得たり, + 再びメーリングリストのリストを見たりすることも可能です. + 利用できるコマンドの完全なリストを入手するには, + 次のようにします: + + &prompt.user; mail majordomo@FreeBSD.ORG +help +^D + + 再度言いますが, + 私たちは技術的なメーリングリストでは技術的な議論を保つよう + 要求します. もし, + “高いレベル”にのみ興味があるなら, freebsd-announce + に参加するように勧めます. + これは少ないトラフィックの予定です. + + + + + メーリングリストの憲章 + + 全て 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-ADMIN + + 管理上の話題 + このリストは, 純粋に + freebsd.org + 関係の議論のためのメーリングリストで,プ + ロジェクトの資源の問題や乱用の報告を行ないます. + これはクローズドなリ ストですが, + 誰でも問題(私達のシステムを含みます!) + を報告できます. + + + + FREEBSD-ANNOUNCE + + 重要なイベント/マイルストン + これは, 単にたまに発表される重要な freebsd + のイベントに関心がある人のた めのメーリングリストです. + これは, スナップショットやその他のリリースに + ついてのアナウンスを含みます. + そのアナウンスは新しいFreeBSDの機能のア + ナウンスを含んでいます. + ボランティア等の呼びかけがあるかもしれませ ん. + これは流通量の少ないメーリングリストで, + 完全なモデレートメーリン グリストです. + + + + FREEBSD-ARCH + + アーキテクチャと設計の議論 + これは, FreeBSD + の設計に関する議論を行うモデレートメーリングリストです. + 内容は, 技術的な内容にほぼ限定されます. 稀に, + 全てのリスト登録者に配送する必要があると + 思われるメッセージを, モデレータが送る場合もあります. + 適切な話題の例: + + + + + 複数のカスタマイズされたビルドを同時に行うには, + ビルドシステムをどういじり直せばよいか + + + + VFS で Heidemann レイヤを動作させるには, + 何を修正する必要があるか + + + + 同一のドライバを複数のバスや + アーキテクチャで美しく使うには + デバイスドライバインターフェースを + どう改変すれば良いか + + + + + ネットワークドライバを + かくにはどうすればいいか + + + + 議長はこのリストに投稿されたメッセージに対し, + たいして重要ではない編集(スペルチェック, + 文法の修正と整頓) を行う権限を持っています. + このメーリングリストの流通量は少ないでしょう. + 活発な議論が行われている場合は, + 論議がおさまるまで新たなトピックの投稿を + 遅らせなければならないかも知れません. + + + + FREEBSD-BUGS + + バグレポート + これは, FreeBSD + のバグレポートのためのメーリングリストです. 可能である + 場合はいつでも, バグは &man.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つのメールにして送り出します. + 平均のサイズは約40kbyteです. こ + のメーリングリストは 読み専用で, + メールを送るような事はしない で下さい. + + + + FREEBSD-DOC + + ドキュメンテーションプロジェクト + + このメーリングリストは, の発行物や FreeBSD + 用のドキュメントの作成に関 + わるプロジェクトに関する議論を行なうためのものです. + このメーリングリストに参加しているメンバーを “ + FreeBSD ドキュメンテーションプロジェクト” + と呼びます. + このメーリングリストは公開されているので自由に参加 + ・投稿することができます. + + + + FREEBSD-FS + + ファイルシステム + FreeBSDのファイルシステムに関する議論 + これは技術的なメーリングリストなので, + 完全に技術的な内容を要求します. + + + + FREEBSD-ISDN + + ISDNコミュニケーション + このメーリングリストは, + FreeBSDに対するISDNサポートの開発の議論を + おこなう人のためのものです. + + + + FREEBSD-JAVA + + Javaの開発 + このメーリングリストは, FreeBSD + 向けのの重要なJavaアプリケーションの開発や, JDK + の移植やメンテナンスの + 議論をする人のためのものです. + + + + FREEBSD-HACKERS + + 技術的な議論 + これはFreeBSDに関する技術的な議論のための + フォーラムです. + これは最もテクニカルなメーリングリストです. + このメーリングリストは, FreeBSD + 上でアクティブに活動をしている人のためのもので, + 問題を持ち出したり, 代わりの解決法を議論します. + 技術的な議論をフォローするのに興味がある人も歓迎します. + これは技術的なメーリングリストなので, + 完全に技術的な内容を要求します. + + + + FREEBSD-HACKERS-DIGEST + + 技術的な議論 + freebsd-hackersメーリングリストのダイジェスト版です. + このダイジェスト はfreebsd-hackers + に送られたすべてのメッセージをまとめたものを, 1つのメー + ルにして送り出します. 平均のサイズは約40kbyteです. + このメーリングリス トは読み専用で, + メールを送るような事はしないで下さい. + + + + FREEBSD-HARDWARE + + FreeBSDのハードウェアの一般的な議論 + + FreeBSDが走っているハードウェアのタイプや, + 何を買ったり避けたりするかに関する様々な問題や, + 提案に関する議論. + + + + FREEBSD-INSTALL + + インストールに関する議論 + このメーリングリストは将来のリリースの + インストールに関する開発の 議論のためのもので, + クローズドなメーリングリストです. + + + + FREEBSD-ISP + + + インターネットサービスプロバイダのについての話題 + + このメーリングリストは, + FreeBSDを用いたインターネット サービスプロバイダ (ISP) + に関する話題の議論のためのものです. + これは技術的なメーリングリストなので, + 完全に技術的な内容を要求します. + + + + FREEBSD-NEWBIES + + 初心者の活動の議論 + どのメーリングリストでも扱われていなかった + 初心者の活動すべてをカバーします. 独学や問題解決, + リソースの見つけ方や使い方, 質問のしかた, + メーリングリストの使い方, + どのメーリングリストを読めばいいのか, 普通の世間話, + 間違いの犯し方, 自慢話, アイディアの共有, 物語, 道徳的な + (技術的でない) お手伝い, FreeBSD + コミュニティでの貢献のしかたなどの話題をが含まれます. + これらの問題を取り扱い, freebsd-questions + へ質問できるようサポートします. また, + 初心者の頃にはまった同じ事柄に悩んでいる + 他の初心者との出会いの場としてfreebsd-newbies + を活用してください. + + + + FREEBSD-PLATFORMS + + Intel以外のプラットフォームへの移植 + + クロスプラットフォームのFreeBSDの問題. Intel + 以外のプラットフォームへの FreeBSD + の移植についての一般的な議論や提案. + これは技術的なメーリングリストなので, + 完全に技術的な内容を要求します. + + + + FREEBSD-PORTS + + “ports” の議論 + FreeBSD の “ports コレクション” + (/usr/ports) や, 移植の提案, ports + コレクションの基盤の変更, + 一般的な整合化活動についての議論. + これは技術的なメーリングリストなので, + 完全に技術的な内容を要求します. + + + + FREEBSD-QUESTIONS + + ユーザからの質問 + FreeBSDに関する質問のためののメーリングリストです. + その質問がかなり技術的だと思わないのであれば, + “どのようにして” + という質問を技術的なメーリングリストに + 送るべきではありません. + + + + FREEBSD-QUESTIONS-DIGEST + + ユーザからの質問 + freebsd-questions + メーリングリストのダイジェスト版です. このダイジェストは + freebsd-questions + に送られたすべてのメッセージをまとめたものを, + 1つのメールにして送り出します. + 平均のサイズは約40kbyteです. + + + + 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 + + ユーザグループの調整のメーリングリスト + + これは, ローカルなユーザグループがお互いに, または, + コアチームが指定した個人と問題を議論する, + それぞれのローカルエリアのユーザグループからの + 調整人向けの メーリングリストです. + このメーリングリストはユーザグループ間の + ミーティングの概要やプロジェクトの調整に + 制限されるべきです. + これはクローズドなメーリングリストです. + + + + + + + + Usenet ニュースグループ + + 2つのFreeBSD用のニュースグループがあります. ここでは + FreeBSDの議論をするたくさんの様々な人がおり, + 他にもFreeBSD関連するユーザがいます. + これらのいくつかのニュースグループは Warren Toomey + wkt@cs.adfa.oz.au によって + Keyword searchable archives で, + 検索できるようになっています. + + BSD用のニュースグループ + + + + comp.unix.bsd.freebsd.announce + + + + comp.unix.bsd.freebsd.misc + + + + + + 関連する他の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 + + + + + + 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 + + + + + + + World Wide Web サイト + + + + + http://www.FreeBSD.ORG/ + — 本家のサーバ. + + + + + http://www.au.freebsd.org/FreeBSD/ + — オーストラリア/1. + + + + + http://www.au.freebsd.org/FreeBSD/ + — オーストラリア/2. + + + + + http://www.au.freebsd.org/FreeBSD/ + — オーストラリア/3. + + + + + http://www.au.freebsd.org/www.freebsd.org/ + — ブラジル/1. + + + + + http://www.br2.freebsd.org/www.freebsd.org/ + — ブラジル/2. + + + + + http://www3.br.freebsd.org/ + — ブラジル/3. + + + + + http://www.bg.freebsd.org/ + — ブルガリア. + + + + + http://www.bg.freebsd.org/ + — カナダ/1. + + + + + http://freebsd.kawartha.com/ + — カナダ/2. + + + + + http://www.dk.freebsd.org/ + — デンマーク. + + + + + http://www.ee.freebsd.org/ + — エストニア. + + + + + http://www.fi.freebsd.org/ + — フィンランド. + + + + + http://www.fr.freebsd.org/ + — フランス. + + + + + http://www.de.freebsd.org/ + — ドイツ/1. + + + + + http://www1.de.freebsd.org/ + — ドイツ/2. + + + + + http://www2.de.freebsd.org/ + — ドイツ/3. + + + + + http://www.hu.freebsd.org/ + — ハンガリー. + + + + + http://www.is.freebsd.org/ + — アイスランド. + + + + + http://www.ie.freebsd.org/ + — アイルランド. + + + + + http://www.jp.freebsd.org/www.freebsd.org/ + — 日本. + + + + + http://www.kr.freebsd.org/ + — 韓国. + + + + + http://www.lv.freebsd.org/ + — ラトビア. + + + + + http://rama.asiapac.net/freebsd/ + — マレーシア. + + + + + http://www.nl.freebsd.org/ + — オランダ. + + + + + http://www.no.freebsd.org/ + — ノルウェー. + + + + + http://www.pl.freebsd.org/ + — ポーランド. + + + + + http://www.pt.freebsd.org/ + — ポルトガル/1. + + + + + http://www2.pt.freebsd.org/ + — ポルトガル/2. + + + + + http://www3.pt.freebsd.org/ + — ポルトガル/3. + + + + + http://www.ro.freebsd.org/ + — ルーマニア. + + + + + http://www.ru.freebsd.org/ + — ロシア/1. + + + + + http://www2.ru.freebsd.org/ + — ロシア/2. + + + + + http://www3.ru.freebsd.org/ + — ロシア/3. + + + + + http://www4.ru.freebsd.org/ + — ロシア/4. + + + + + http://www.sk.freebsd.org/ + — スロバキア. + + + + + http://www.si.freebsd.org/ + — スロベニア. + + + + + http://www.es.freebsd.org/ + — スペイン. + + + + + http://www.za.freebsd.org/ + — 南アフリカ/1. + + + + + http://www2.za.freebsd.org/ + — 南アフリカ/2. + + + + + http://www.se.freebsd.org/ + — スウェーデン. + + + + + http://www.tr.freebsd.org/ + — トルコ. + + + + + http://www.ua.freebsd.org/ + — ウクライナ/1. + + + + + http://www2.ua.freebsd.org/ + — ウクライナ/2. + + + + + http://www.uk.freebsd.org/ + — イギリス. + + + + + http://freebsd.advansys.net/ + — アメリカ/インディアナ. + + + + + http://www6.freebsd.org/ + — アメリカ/オレゴン. + + + + + http://www2.freebsd.org/ + — アメリカ/テキサス. + + + + + + diff --git a/ja/handbook/handbook.sgml b/ja/handbook/handbook.sgml index 471ef944ca..c58f53d8f4 100644 --- a/ja/handbook/handbook.sgml +++ b/ja/handbook/handbook.sgml @@ -1,210 +1,151 @@ - - - + - - - + +%man; - - -%authors; + %chapters; + %authors; + %jauthors; + %mailing-lists; - - -%jmembers; - - - -%lists; - - - -%sections; - - - ]> - - + + + FreeBSD ハンドブック - FreeBSD ハンドブック + - FreeBSD ドキュメンテーションプロジェクト + FreeBSD ドキュメンテーションプロジェクト - 1999年2月 + -FreeBSD へようこそ! このハンドブックはFreeBSD Release -&rel.current;のインストールおよび, 日常での使い方について記述したもので, -FreeBSD ドキュメンテーションプロジェクトによって編集されています. + 1999 年 2 月 + + + + FreeBSD へようこそ! このハンドブックは + FreeBSD Release &rel.current; + のインストールおよび, 日常での使い方について記述したもので, + FreeBSD ドキュメンテーションプロジェクトによって + 編集されています. 日本語版の作成は FreeBSD + 日本語ドキュメンテーションプロジェクトがおこなって います. + 本書は現在進行中の作業であって, + 多くの個人の手からなる 仕事です. + 多くのセクションはまだ存在しませんし, いま存在するセクションの + いくつかはアップデートが必要です. この FreeBSD + ドキュメンテーション プロジェクトに協力したいと思ったら, + &a.doc; まで (英語で) 電子メールを 送ってください. + ハンドブックそのものに関する議論は, こちらで + おこなわれています. (もちろん英語でです.) 日本語訳および, + 日本語版のみに関することは FreeBSD + 日本語ドキュメンテーションプロジェクト doc-jp@jp.FreeBSD.ORG + において日本語で 議論されています. + 必要に応じて日本語ドキュメンテーションプロジェクトから + 本家ドキュメンテーションプロジェクトに対して + フィードバックをおこないますので, 英語が得意でない方は FreeBSD + 日本語ドキュメンテーションプロジェクト doc-jp@jp.FreeBSD.ORG + まで日本語でコメントをお寄せください. + このドキュメントの最新バージョンは, いつでも 日本国内版 FreeBSD World + Wide Web サーバFreeBSD World Wide Web + サーバ で見ることができますし, HTML 形式のものを HTTP + でダウンロードすることもできます. これらを gzip + で圧縮したものが FreeBSD FTP + サーバ や, たくさんのミラーサイトに置かれています. また, + + ハンドブックの検索も可能です. + + + + + 導入 + + &chap.introduction; + &chap.install; + &chap.basics; + &chap.ports; + + + + システム管理 + + &chap.kernelconfig; + &chap.security; + &chap.printing; + &chap.disks; + &chap.backups; + &chap.quotas; + &chap.x11; + &chap.hw; + &chap.l10n; + + + + ネットワーク通信 + + &chap.serialcomms; + &chap.ppp-and-slip; + &chap.advanced-networking; + &chap.mail; + + + + さらに進んだ話題 + + &chap.cutting-edge; + &chap.contrib; + &chap.policies; + &chap.kernelopts; + &chap.kerneldebug; + &chap.linuxemu; + &chap.internals; + + + + 付録 + + &chap.mirrors; + &chap.bibliography; + &chap.eresources; + &chap.staff; + &chap.pgpkeys; + &chap.jcontrib; + + -日本語版の作成は FreeBSD 日本語ドキュメンテーションプロジェクトがおこなって -います. 本書は現在進行中の作業であって, 多くの個人の手からなる -仕事です. 多くのセクションはまだ存在しませんし, いま存在するセクションの -いくつかはアップデートが必要です. この FreeBSD ドキュメンテーション -プロジェクトに協力したいと思ったら, &a.doc; まで (英語で) 電子メールを -送ってください. ハンドブックそのものに関する議論は, こちらで -おこなわれています. (もちろん英語でです.) -日本語訳および, 日本語版のみに関することは &a.doc-jp; において日本語で -議論されています. 必要に応じて日本語ドキュメンテーションプロジェクトから -本家ドキュメンテーションプロジェクトに対してフィードバックをおこないますので, -英語が得意でない方は &a.doc-jp; まで日本語でコメントをお寄せください. -このドキュメントの最新バージョンは, いつでも -や - -で見ることができますし, - 形式のものを -HTTP でダウンロードすることもできます. これらを gzip で圧縮したものが - -や, たくさんのに置かれています. -また, も可能です. - - - - - - - 導入 - - はじめに -

FreeBSD は, Intel アーキテクチャ (x86) ベースの PC のための -4.4BSD-Lite をベースとしたオペレーティングシステムです. -FreeBSD の概要については, -をご覧ください. -このプロジェクトの歴史については, -をご覧ください. 最新のリリースについての記述は, -をご覧ください. -FreeBSD プロジェクトへの何らかの貢献 (ソースコード, 機器, 資金の提供など) -について興味があれば, -の章をご覧ください. - - &nutshell; - &history; - &goals; - &development; - &relnotes; - - &install; - &basics; - - &ports; - - - - システム管理 - - &kernelconfig; - セキュリティ - &crypt; - &skey; - &kerberos; - &firewalls; - - &printing; - - - - &backups; - - "as; - - X ウィンドウシステム -

この節の完成は保留にしてあります. - - から提供されるドキュメントを参考にしてください. - - &hw; - - ローカル化 - &russian; - &german; - - - - ネットワーク通信 - - シリアル通信 - &serial; - &term; - &dialup; - &dialout; - - PPP と SLIP - -

もしあなたがモデムを使ってインターネットに接続したり, -他の人々に FreeBSD によるインターネットへのダイヤルアップ接続を -提供しようとしているのでしたら, PPP または SLIP 接続を選択することができます. -PPP 接続には, 2 種類の方法が提供されています: -ユーザPPP (iijppp とも呼ばれます) とカーネルPPP です. -両方の PPP の設定手順と, SLIP の設定方法については以下の章に書かれています. - - &userppp; - &ppp; - &slipc; - &slips; - - 高度なネットワーク - &routing; - &nfs; - &diskless; - &isdn; - - &mail; - - - - さらに進んだ話題 - 開発の最前線: FreeBSD-current と FreeBSD-stable -

あるリリースから次のリリースまでの期間にも, FreeBSD の開発は - 休みなく続けられています. この開発の最前線に興味を持っている人のために, - 手元のシステムを最新の開発ツリーに同期させておくための, - とても使いやすい仕掛けが何種類も用意されています. - 注意: 開発の最前線は, 誰でもが扱えるという性質のものではありません! - もしもあなたが, 開発途中のシステムを追いかけようか, それともリリース - バージョンのどれかを使い続けようかと迷っているのなら, - きっとこの章が参考になるでしょう.

- - ¤t; - &stable; - &synching; - &makeworld; -
- - &submitters; - &policies; - &kernelopts; - &kerneldebug; - &linuxemu; - FreeBSD の内部 - &booting; - &memoryuse; - &dma; - &vm; - - - - - 付録 - - &mirrors; - &bibliography; - &eresources; - &contrib; - &pgpkeys; - &jcontrib; - - - -
-
diff --git a/ja/handbook/hw/chapter.sgml b/ja/handbook/hw/chapter.sgml new file mode 100644 index 0000000000..17e64ae5dc --- /dev/null +++ b/ja/handbook/hw/chapter.sgml @@ -0,0 +1,6230 @@ + + + + PC ハードウェアコンパチビリティ + + 訳: &a.jp.yoshiaki;. + 23 March 1998. + + ハードウェアコンパチビリティの問題は現在の + コンピュータ業界でもっ とも多く起きる種類の問題であり, + FreeBSDもこれに無縁ではありません. + 市場にある驚くほど多様な種類の製品をサポートしたことで, + 安価に普及し ている PCハードウェアで動かすことができるという + FreeBSDの利点はこの 点では不利でもあります. + FreeBSDのサポートするハードウェアを徹底的に調べて提供することは不 + 可能ですが, このセクションでは + FreeBSDに含まれるデバイスドライバとそ + のドライバがサポートするハードウェアのカタログを示します. + 可能で適切 なものについては特定の製品についての注釈を含めました. + また, このハンドブックの コンフィグレーション + ファイル のセクションにも + サポートされているデバイスのリストがありますので + そちらもご覧ください. + + FreeBSD + はボランティアプロジェクトでテスト部門には資金がありません から, + より多くの情報をこのカタログに載せるにはあなたがたユーザに + 頼らなければなりません. あなた自身の経験により, + あるハードウェアが + FreeBSDで動くか動かないかがわかったとしたら&a.doc; へ + e-mailして知らせてください. サポートされているハードウェアについて + の質問は, &a.questions;(詳しいことは メーリングリスト + を参照してください) へ 宛ててください. + 情報を提供したり質問をする時は FreeBSDのバージョンと使っ + ているハードウェアのできるだけ詳しい情報を含めることを + 忘れないでくだ さい. + + + インターネット上のリソース + + 以下のリンクはハードウェアを選ぶのに役に立ちます. + FreeBSDに対して は必要のない (あるいは適用できない) + ように見えるかもしれませんが, ここ + からのハードウェアの情報のほとんどは OSに依存しないものです. + 購入をする前にはあなたの選んだものがサポートされているか + FreeBSDハード ウェアガイドを注意して読んでください. + + + + Toms's Hardware & Performance Guide + + + + 訳注: 日本国内でFreeBSDの動くハードウェアの情報を提供してい + るWWWサーバがあります. + + + + FreeBSD POWERED hardwares + + + + これ以外にも情報を提供しているサーバはあります. いくつかの + URLについて はFreeBSD + Japan. からたどることができます. + + + + 組合せの見本 + + 以下のハードウェアの組合せのサンプルリストは + ハードウェアベンダや FreeBSD + プロジェクトが保証するものではありません. この情 + 報は公共の利益のために公開しているものであり, + 極めて数多くあるであろう + 異なったハードウェアの組合せの中からのある経験の + カタログに過ぎません. やり方はいろいろあります. + 場合によってはうまく行かないこともあります. + 十分気をつけてください. + + + Jordan氏の選んだ組合せ + + 私の作ったワークステーションとサーバの構成は + まずまずうまく行っ ています. + 私はこれを保証できるわけでもありませんし, ここにあげた組 + 合せがずっと “best buys”であるわけではありません. + 私はできればリス + トを更新して行きますがそれがいつになるかはわかりません. + + 訳注: &a.jkh; 氏は FreeBSDプロジェクト FreeBSD + コアチームのメンバです. + + + マザーボード + + Pentium Pro (P6)システム用で気に入っているのは Tyan + S1668 デュアルプロセッサマザーボードです. これは Intel + PR440FX 同様 オンボードの WIDE SCSI と 100/10MB Intel + Etherexpress NIC が ついています. + これを使えば最高の小型のシングルあるいは + デュアルプロセッサシステム (FreeBSD + 3.0ではサポートされています)を作ることができます. Pentium + Pro 180/256K チップの価格は非常に安くなっていますが, + いつまで手にはいるかはわかりません.. + + Pentium II には, どちらかと言えばひいき目ですが, Adaptec + SCSI WIDE コントローラのついた ASUS P2l97-S マザーボードです. + + For Pentium machines, the ASUS http://www.asus.com.tw/Products/Motherboard/Pentium/P55tp4/index.html + はミッドレンジからハイエンドの Pentium + サーバあるいはワークステーションシステムには + よい選択です. + + フォルトトレラントシステムを構築したいのであれば + パリティメモリを 使い, + 真に24時間/週7日間動作させ続けるアプリケーションであれば + ECCメモリを使うべきでしょう. + + + ECCメモリはいくらか性能のトレードオ フがあります + (それが重要なものであるかそうでないかはあなたのアプ + リケーションによりますが). しかし, + メモリエラーに対しては明らかに + フォルトトレランス性が強化されます. + + + + + ディスクコントローラ + + これはいくらかトリッキーです. 私は ISAから + PCIまですべてコンパチブ ルな Buslogic コント + ローラを使うようにすすめていましたが, 現在では ISAでは + Adaptec 1542CF, + EISA では Bt747c, PCIでは Adaptec 2940UW + をすすめるよう変わってきています. + + NCR/Symbios の + PCIカードも私のところではうまく動いています, ただ し + BIOS-less モデルのボード(SCSI ボード上に ROMらしいものがない + 場合は, マザーボード上に SCSIアダプタのための BIOSが必要な + ボードである可能性があります 訳注: SC-200など) + を使うのであれば + マザーボードがそれをサポートしているかどうか + 注意しなくてはなりま せん. + + PCIマシンで2つ以上の + SCSIコントローラが必要となるのであれば, + PCIバスの不足を防ぐために Adaptec 3940 + カードを考えてもいいでしょ う. これは1つのスロットで2台の + SCSIコントローラ(と内部バス)を持ち ます. + + + + ます. 市場には2つのタイプの 3940 がありますので + 注意しましょう. — 古いモデルでは AIC 7880 + チップを使っていますが, 新しいモデルでは AIC 7895 + を使っています. 新しいモデルでは CAM + ドライバのサポートが必要です. + これはまだ FreeBSD の一部では ありません. + 自分で付け加えるか, CAM binary snapshot リリースから + インストールする必要があります(URLを参照してください). + + + + + + ディスクドライブ + + 私は, 極々特殊な状況を除いて + “それだけのお金をかけることができる なら SCSIは + IDEよりもよい” と言っています. + 小規模なデスクトップ構成 のシステムでも, + SCSIであればディスクが安くなっていった時にサーバの + (古い入れ換えた) + ディスクを比較的簡単に移し替えることができます. あ + なたが複数のマシンの管理をしているのであれば単純に + 容量について考え るのではなく, 食物連鎖のように考えましょう. + 重要なサーバの場合は議論の余地はありません. + SCSI機器と品質の良いケーブルを使いましょう. + + + + CDROM ドライブ + + 私は SCSIの方が好みであるのでもちろん SCSI + CDROMを選びました. 東芝 のドライブは + 常に(スピードがどうであっても)お気に入りでしたが, 古い + Plextor PX-12CS + ドライブも好きです. 高々 12倍速のドライブですが, + 高い性能と信頼性を提供して くれています. + + 一般的には, 大部分の SCSI CDROM + ドライブは私の見た限りではほと んどしっかりした構造ですので + 多分 HPや NECの SCSI CDROMでも問題が起き + ることはないでしょう. SCSI CDROM + の価格はここ数ヶ月でかなり下落したよ うで, 技術的に + 優れた方法でありながら 現在では IDE CDROMと同じ程度の価 + 格になって います. もし IDE と SCSI の CDROM + ドライブの間で選択す ることができるのなら, 特に IDE + を選ぶ理由はないでしょう. + + + + CD-R (CD Recordable: WORM) ドライブ + + この原稿を書いている時点で, FreeBSDは 3種類の + CDRドライブ (私は これらすべては結局は + Phillips社のドライブであるのではない かと考えているのですが) + をサポートしています : Phillips CDD 522 (Plasmon + のドライブと同様の動作をします), PLASMON RF4100, HP 6020i + です. 私は HP 6020i を CDROMを焼くのに使っています(2.2 + 以降の システムで動きます. — それ以前のリリースの + SCSIコードでは動きません). 非常に調子よく動いています. + システムの /usr/share/examples/worm + を見てください. + ISO9660ファイルシステムイメージ (RockRidge拡張) + を作 るスクリプトと それを HP6020i CDR + で焼くためのスクリプトの例があり ます. + + + + テープドライブ + + 私はたまたま Exabyte8mm drivesHP4mm (DAT) を持っています. + + バックアップのためであれば, より本質的に丈夫な (また, + より容量が大きい) Exabyteの + 8mmテープの方がおすすめできます. + + + + ビデオカード + + もし (米国では) 99USドルをかけて商品の XサーバをXi Graphics, Inc. (以前の X + Inside, Inc.)から買うことができる なら間違いなく + Matrox Millenium + IIカードをおすすめします. + このカードは無償提供されている XFree86 + (現在のバージョンは 3.3.2です) + のサーバでも非常によく動きます. + + Number 9の S3 + Vision 868と 968 ベースのカード (the 9FX series) + はわりあいと速く, XFree86の S3サーバで + うまくサポートされています, 加えて現在では非常に低価格です. + まず問題も起きないでしょう. + + + + モニタ + + 私の持っている Sony Multiscan 17seII monitors + は非常に調子がいいので, 同じ (トリニトロン) + ブラウン管を使っている Viewsonic をおすすめします. + 17"よりも 大きなモニタ, 例えば 21" + のモニタが実際に必要だとしたらこの文章の執筆時点では + 2,000USドル以下のもの (20"のモニタでは 1,700USドル以下のもの) + はまったくすすめられません. + 20" 以上のク ラスでよいモニタは(いくつも) ありますし, + 20" クラスで安いモニタもあり ます. + うまくいかないことに安くてよいモニタはほとんどありません! + + + + + ネットワーキング + + まず最初に, Intel EtherExpress Pro/100B + カードをすすめます. ISA カードでは SMC Ultra 16 + コントローラ, いくらか安めのPCIベースのカード では SMC + 9392DST, SMC EtherPower と Compex ENET32カードがおすすめ + できます. 一般的に DECの DC2104x + イーサネットコントローラチップを 使っている Zynx ZX342 や + DEC DE435 などのカードはうまく動く でしょうし, (firewall や + roouter に便利な) 2-port 品や 4-port 品を + よく見つけることができますが, Pro/100B カードは最も少ない + オーバーヘッドで最高の性能を出すでしょう. + + もう一方, + できるだけ低コストでそこその性能で動くものを探しているなら, + ほとんどの NE2000のクローンは極めて低価格で + うまく動いてくれます. + + + + (特殊な) シリアル + + 高速のシリアル ネットワーク インタフェース + (同期シリアルカード) を探しているのであれば Digi International製の + SYNC/570 + シリーズのド ライバが今の FreeBSD-currentにあります. Emerging Technologies + も 提供 するソフトウェアにより T1/E1 + の性能が得られるボードを製造しています. + もっとも私が直接これらの製品を動かした + 経験があるわけではありません. + + 訳注:Emerging TechnologiesのWeb + ページを見るとカードのスペックに Operating Systems: MS-DOS, + MS-WINDOWS, System V UNIX, BSD/OS, FreeBSD, NetBSD and Linux + と書いてあります. また "BSD/OS, FreeBSD and LINUX Router + Card Solutions" というページ + もあってサポートは良さそうです. + + マルチポートカードの選択の幅はかなり広いですが, + FreeBSDがサポー トするいう点では Cyclades + の製品が最も信頼できるでしょう. この最大の理由はこ + の会社が私たちに十分な評価用ボードとスペックを + 供給することを約束し てくれているからです. 私は Cyclom-16Y + が最高の性能価格比であると聞 + いていましたが最近は価格のチェックはしていません. + + 訳注: cycladesの WWWサーバでも Supported Operating + Systemsに Linuxや BSDi, FreeBSD が明記されています. + + 他のマルチポートカードで評判がよいのは BOCAおよび + ASTのカードと Stallion + Technologiesで, このカードには ここ + で非公式なドライバが提供されてい るようです. + + + + オーディオ + + 私は現在 Creative + Labs AWE32 を 使っています. + もっともクリエイティブラボ製品が現在一般的にうまく + 動いているから, ということにすぎませんが. + 他のタイプのサウンド + カードは同様にうまくは動かないと聞いています. 単に私の経験が + 乏しいということにすぎないと言うことなのかも知れませんが. + (私は以前は GUS のファンでしたが, Gravis はサウンドカード + から撤退してしまいました). + + + + ビデオキャプチャー + + ビデオキャプチャーについては2つのいい選択肢があります + — Hauppage や WinTV などの Brooktree BT848 + チップベースのボードは FreeBSD で 非常にうまく動きます. + もう一つの動作するボードは Matrox Meteor + カードです. FreeBSD はクリエィティブラボの古い + video spigotカードの + サポートはしていますがこれは見つけるのは非常に + むずかしいでしょう. Meteor は 440FX + チップセットベースのマザーボードでは + 動きませんので注意してください. + 詳細はマザーボードの節を参照してください. + このような場合には BT848 ベースの + ボードを使った方がよいでしょう. + + + + + + 中心部/プロセッサ + + + + マザーボード, バス, チップセット + + + * ISA + + + + + + * EISA + + + + + + * VLB + + + + + + PCI + + 原作: &a.obrien; 投稿者: &a.rgrimes;. + 25 April 1995. + + 更新: &a.jkh;.最終更新 + 26 August 1996. + + 訳: &a.jp.yoshiaki;. + 12 October 1996. + + Intelの PCIチップセットについて, 以下にさまざまな種類 + の既知の不具合と問題の程度のリストを示します. + + + Mercury: + + ISAバスマスタがISAとPCIブリッジの向 + こう側にある場合は,キャッシュコヒーレンシ(一貫性)の + 問題があります. このハードウェア欠陥に対処してうま + く動かす方法はキャッシュを + offにする以外にはありません. + + + + Saturn-I + (82424ZX の rev 0, 1 ,2): + + ライトバックキャッシュのコヒーレンシに + 問題があります. + このハードウェア欠陥に対処してうまく動かす方法は + 外部キャッ + シュをライトスルーにすること以外にはありませ ん. + Saturn-IIにアップデートしましょう. + + + + Saturn-II + (82424ZX の rev 3 or 4): + + 問題なく動きます. + ただし多くのマザーボードではライトバッ ク動作に必要な + 外部ダーティビット SRAMが実装されていま せん. + 対策としてはライトスルーモードで動かすか, ダーティ + ビット SRAMをインストールするかがあります. (これは + ASUS PCI/I-486SP3G の rev 1.6 + 以降で使われています) + + + + Neptune: + + 2つより多くの(3台以上の)バスマスタデ + バイスを動かすことができません. Intelは設計の欠陥を + 認めています. 2つを越えるバスマスタを許さない, 特別な + 設計のハードウェアで PCIバスアービタを置き換えることに + より解決されています. (Intelの Altair boardや他にはい + くつかの Intelサーバグループマザーボードに見られます). + そして, もちろん Intelの公式の回答は Triton + チップセットへの 移行で, + “こちらでは修整した”ということです. + + + + Triton (430FX): + + 知られているキャッシュコヒーレンシ + やバスマスタの問題はありませんがパリティチェック機能が + ありません. パリティを使いたいような場合は, 可能であ + れば Triton-II + ベースのマザーボードを選びましょう. + + + + Triton-II (430HX): + + このチップセット + を使っているマザーボードに関するすべての + 報告によれば今の ところ好評です. + 既知の問題はありません. + + + + Orion: + + このチップセットの初期のバージョンでは PCI + write-posting にバグがあり, 大量の PCIバストラフィッ + クのあるアプリケーションでは性能の著しい低下があるとい + う障害がありました. B0以降のリビジョンのチップセットで + は問題は解決されています. + + + + + 440FX: + + これは + Pentium Pro に対応したチップセットで, + 初期の Orion チップセットにあったような問題は見られず, + 問題なく動 いているようです. + また, これは ECCやパリティを含んだ広い + 種類のメモリに対応しています. + 既知の問題は Matrox Meteor + ビデオキャプチャカードに関するものだけです. + + + + + + + + CPU/FPU + + 原作 &a.asami;. + 27 December 1997. + + + P6 クラス (Pentium Pro/Pentium II) + + Pentim Pro, Pentim IIとも + FreeBSDで使うのに全く問題はありません. 実際, 私たちのメイン + FTPサイトである ftp.freebsd.org + (世界一大きな FTPサイト "ftp.cdrom.com" + としても知られています) では Pentium Proで + FreeBSDを使っています. 詳しいことが知りたい人は, + コンフィグレーション へどうぞ. + + + + Pentium クラス + + Intel Pentium (P54C), Pentium MMX (P55C), AMD K6と + Cyrix/IBM 6x86MXプロセッサは全て + FreeBSDで動作確認がされています. どの + CPUが速いかということはここでは述べません. + インターネットを探せばあれが + 速いとかこっちの方がいいとか教えてくれるサイトは + いっぱいありますので, そちらをご覧ください. :) + + + 一つ注意しないといけないのは, CPU + によって必要な電源電圧や冷却の仕様が 異なるということです. + マザーボードが指定された電圧を供給できることを + 必ず確認しましょう. 例えば, 最近の + MMX チップにはコアと入出力で違う電圧を使うもの (コア 2.9V, + 入出力 3.3V など) がたくさんあります. また, AMDと + Cyrix/IBMのチップには + Intelの製品より熱くなるものがいくつかあります. + その場合には強力なヒートシンク/ファンを使いましょう. + (各社のホームページにお勧めの部品のリストがあります.) + + + + + クロックスピード + + 原作 &a.rgrimes;. + 1 October 1996. + + 更新 &a.asami;. + 最終更新 27 December 1997. + + Pentium クラスのマシンはシステムの + いくつかの部分で異なったクロックスピードを使っています. + これは CPU, 外部メモリバス, PCIバスです. + 別々のクロックスピードが使われるために“高速な” + CPUを使ったシステムが “低速な” + システムよりも必ずしも速いとは限りません. + それぞれの場合の違いを以下の表に示します. + + + + + + CPUクロック MHz + 外部クロックとメモリバス MHz + 外部クロックと内部クロックの比 + PCIバスクロック MHz + + + + + + 6060 + 1.030 + + 6666 + 1.033 + + 7550 + 1.525 + + 9060 + 1.530 + + 10050 + 225 + + 10066 + 1.533 + + 12060 + 230 + + 13366 + 233 + + 15060 + 2.530 (Intel, AMD) + + 15075 + 237.5 (Cyrix/IBM 6x86MX) + + 16666 + 2.533 + + 16666 + 2.533 + + 18060 + 330 + + 20066 + 333 + + 23366 + 3.533 + + + + + + 66 MHz は実際には 66.667 MHzかもしれませんが, + そうだと決まっているわけでもありません. + + Pentium 100 は 50MHzの外部クロックの 2 + 倍または 66MHz の 1.5 倍の両方で + 動かすことができます. + + + 3 倍クロック以上の CPU ではメモリアクセス速度が + 不足気味であるという点には注意していただきたいですが, + 上の表を見るかぎりでは 100, 133, 166, 200, 233 + MHzを使うのが最良だというのがわかります. + + + + AMD K6のバグ + + AMDの K6プロセッサで大きなコンパイルをすると, + セグメンテーションフォルトで + プロセスが落ちることがあるという事例が + 1997年に多数報告されました. これは + '97年の第3四半期に直ったようです. 情報を総合すると, + チップ上の製造年週が “9733” (97年の + 第33週に製造) + 以降のものは大丈夫ということのようです. + + + + + * 486 クラス + + + + + + * 386 クラス + + + + + + 286 クラス + + FreeBSDは 80286マシンでは動きません. 現在の巨大なフ + ルスペックの + UNIXをこのようなハードウェアで動かすことはほとんど + 不可能でしょう. + + + + + メモリ + + FreeBSDをインストールするのに最低限必要なメモリ量は 5 + MBです. いったんシステムが起動してカスタムカーネルを + 作ることができるならば, もっと少ないメモリ + で動かすこともできます. boot4.flp + を使えば 4 MB しかメモリがなく + てもインストールできます. + + + + * BIOS + + + + + + + 入力/出力デバイス + + + * ビデオカード + + + + + + * サウンドカード + + + + + + シリアルポートとマルチポートカード + + + UART とは何か, そしてどのように動作するか + + Copyright © 1996 &a.uhclem;, + All Rights Reserved. + 13 January 1996. + + 訳: &a.jp.saeki;, &a.jp.iwasaki;. + 11 November 1996. + + ( ここからは &a.jp.saeki; が翻訳を担当) + + 汎用非同期送受信コントローラ (UART) + はコンピュータのシリアル通信 サブシステムの鍵となる部品です. + UART は何バイトかのデータを受けとり, これを 1 + ビットずつ順番に送信します. 受信側では, もう一つの UART が + このビット列を完全なバイト列に組み立て直します. + + シリアル転送は, + モデムやコンピュータ間の非ネットワーク型の通信, + ターミナルその他のデバイスで広く使われています. + + シリアル転送には主に同期と非同期という + 二つの形式があります: 通信サブシステムの名前は, + そのハードウェアでサポートされている + 通信モードによって変化します. 通常, + 非同期通信をサポートしているものは文字 A + を含み, 同期通信をサポートしているものは文字 + S を含みます. + 以下で両方の形式について詳しく説明します. + + 通常使われている略号は以下の通りです: +
+ UART 汎用非同期送受信装置 (Universal + Asynchronous Receiver/Transmitter) +
+ +
+ USART 汎用同期-非同期送受信装置 (Universal + Synchronous-Asynchronous Receiver/Transmitter) +
+ + + 同期シリアル転送 + + 同期シリアル転送では, + 送信側と受信側がクロックを共有している 必要があります. + さもなければ, 送信側がストローブまたは + その他のタイミング信号を供給して, + 受信側にデータの次のビットを いつ“読み込” + めばよいのかを知らせる必要があります. + + ほとんどの同期シリアル通信では, + 常に何らかのデータが転送され続けます. そのため, + 転送のタイミングまでに送信データが用意できていなければ, + 通常のデータのかわりに「埋め草」 (fill character) + が送られます. 同期通信では, + 送信側と受信側との間でデータビットのみが転送されるため, + 同じビット速度の非同期シリアル通信に比べて効率的です. + しかし, + 送信側と受信側でクロック信号を共有するために余分な電線と + 回路が必要となる場合には, + よりコスト高となる可能性があります. + + プリンタやハードディスクでも同期転送の + 一種が使用されています. このときデータが 1 + 組みの電線で送られる一方, クロック信号または + ストローブ信号が別の電線で送られます. + プリンタやハードディスクは通常, + シリアルデバイスではありません. + ほとんどのハードディスクのインターフェース規格では, + データを送るための + 線とは別にクロックまたはストローブ信号を + 送るための線を持っていて, ストローブ 1 + 回毎に一つのデータ全体を送ります. PC 産業界では, + これらはパラレルデバイスとして知られています. + + PC の標準的なシリアル通信ハードウェアは, + 同期モードをサポートして いません. + ここで同期モードについて述べたのは, 非同期モードとの + 比較のために過ぎません. + + + + 非同期シリアル転送 + + 非同期転送は, + 送信側がクロック信号を受信側に送らなくても + データを転送することができます. そのかわり, + 送信側と受信側は + あらかじめタイミングパラメータや同期のために追加される + 特別なビットについて + 取り決めをおこなっておかなければなりません. + + 非同期転送をおこなうために UART + にデータが与えられると, 「スタートビット」 + と呼ばれるビットが転送データの先頭に追加されます. + スタートビットはデータの転送開始を受信側に + 知らせるために使われ, + これにより受信側のクロックを送信側のクロックに + 同期させます. この二つのクロックは, + 転送データの残りのビットを転送する間に 10% + 以上ふらつかないように正確なものでなければなりません. + (この条件は機械式テレタイプの時代に定められたものなので, + 現代の電子装置であれば容易に満足させることができます). + + + スタートビットが送られた後, データの各ビットが最下位 + (LSB) から 順番に送られます. + 転送されるビットの長さはすべて同じになっていて, + 受信側はそれぞれのビットの中央部でそれが + 10 + かを判断します. 例えば, 仮に 1 ビットを送るのに 2 + 秒かかるとすると, 受信側は + スタートビットの始まりを認識した 1 秒後に信号が + 10 かを調べ, + その後 2 + 秒ごとに次のビットの値を調べるという動作を繰り返します. + + + 送信側は, いつ受信側がビットの値を “見た” + のかはわかりません. 送信側はクロックにしたがって + 次々にビットを転送するだけです. + + 設定によっては, 1 ワードのデータ全体が送られたあとに + 送信側が内部で生成したパリティビットを + 付加する場合があります. + パリティビットは受信側で簡単なエラーチェックを + するために使われます. その後に, 最低でも 1 + ビットのストップビットが送られます. + + 1 ワードのすべてのビットを受信すると, + 受信側がパリティビットの + チェックをおこなうように設定することができます. + (パリティビットを 使用するかどうか, + 送信側と受信側であらかじめ取り決めておかなければ + なりません). + それから受信側はストップビットをチェックします. + もしもストップビットが期待通りの位置に存在しなければ, UART + は 転送エラーが発生したと判断して, + ホストがデータを読もうとした時に + フレーミングエラーが起きたと報告します. 通常, + フレーミングエラーは + 送信側と受信側のクロックが一致していなかったり, + 信号に割り込みが 入った時に起こります. + + データが正しく受信されたかどうかにかかわらず, UART + はスタート, パリティ, ストップビットを自動的に捨てます. + 送信側と受信側で設定が正しく一致していれば, + これらのビットが + 誤ってホストに転送されることはありません. + + 1 + 回の転送が終了する前に次のデータの転送準備ができていれば, + 前のデータのストップビットを送った後, 間を空けずに + 次のデータのスタートビットを送ることができます. + + 非同期転送データは“自己同期”なので, + 転送するべきデータがない場合は + 転送路は空き状態になります. + + + + UART のその他の機能 + + 転送のためにデータをパラレルからシリアルに変換し, + 受信時に + シリアルからパラレルに戻すという基本的な機能の他に, UART + は通常, 転送路の状態を示したり, + リモートデバイスで次のデータを受けとる準備が + できていない場合にデータの流れを抑制するのに + 使われる信号のための 付加回路も持っています. 例えば UART + に接続されているデバイスがモデムの場合, モデムは + 回線上に搬送波 (carrier) + が存在していることを報告するかもしれません. 一方, + コンピュータはこれらの付加信号を操作することにより + モデムのリセットをおこなったり, + かかってきた電話を取らないように + モデムに指示するかもしれません. + これらの付加信号の機能はそれぞれ EIA RE232-C + 規格で定義されています. + + + + RS-232C と V.24 規格 + + ほとんどのコンピュータシステムでは, UART は EIA + RS-232C 規格に + 準拠した信号を生成するための回路に接続されています. また, + RS-232C の仕様を反映した, V.24 という CCITT 規格に + 準拠したシステムも存在しています. + + + RS-232C のビット割り当て (マークとスペース) + + RS-232C では, 1 + の値をマーク, 0 + の値をスペースと 呼びます. + 通信路にデータが流れていない時, + 回線は“マーキング” であるとか, + 1 + の値を連続して転送し続けているとか言われます. + + スタートビットは常に 0 (スペース) + で, ストップビットは常に 1 (マーク) + です. このことは, + たとえ複数のデータが連続して転送されている場合でも, + それぞれのデータの転送開始時には必ず, マーク (1) から + スペース (0) + への遷移が回線上で起こるということを意味しています. + + これによって, + 転送されるデータビットの内容にかかわらず, + 送信側と受信側の + クロックを同期させることができるのです. + + ストップビットとスタートビットの間の空き時間は, + その通信路で 1 + ビットを転送するのに必要な時間の正確な倍数である + 必要はありません. (倍数にはゼロを含みます). しかし, + ほとんどの UART では 設計の単純化のために, + 倍数になるように設計されています. + + RS-232C では, 「マーク」信号 (1) + は -2V から -12V の間の電圧で, 「スペース」信号 + (0) は 0V から +12V + の間の電圧で示されます. 送信部は +12V または -12V + を送ることになっていて, 受信部では + 長いケーブルによるいくらかの電圧ロスを + 許容するように定められています. + (ポータブルコンピュータなどで使用されている) + 低消費電力デバイスの 送信部では しばしば +5V と -5V + のみを使用していますが, 短いケーブルを使用するならば, + これらの電圧も RS-232C 受信部の + 許容範囲に入っています. + + + + RS-232C のブレーク信号 + + RS-232C は ブレーク + と呼ばれる信号についても定めています. これは + (スタートビットもストップビットも無しで) 連続して + スペースの値を送ることで発生されます. + データ回路に電流が流れていない場合は, 回線は + ブレーク + を送り続けているものと解釈されます. + + ブレーク 信号は完全な 1 + バイトとスタート, ストップ, パリティ + ビットを送るために必要な時間よりも + 長い間続かなければなりません. ほとんどの UART + はフレーミングエラーとブレークを区別することが + できますが, もしも これを区別できない UART があった場合, + フレーミングエラーの検出をブレークの識別のために + 使用することができます. + + テレタイプの時代には, + 国中でおびただしい数のテレタイプが + (ニュースサービスなどで) 電線で直列に接続されていました. + 任意のテレタイプユニットは, + 電流が流れないように一時的に回路を オープンにすることで + ブレーク + 信号を発生させることができました. これは, + 他のテレタイプが情報を送信している間に, 緊急ニュースを + 送る必要のあるテレタイプが + 割り込みをかけるために使われました. + + 現在のシステムでは, + ブレーク信号には二つのタイプがあります. + もしブレーク信号が 1.6 秒よりも長ければ, それは + 「モデムブレーク」であると解釈されます. + モデムがこの信号を検出すると, + 通信を終了して電話を切ったり, コマンドモードに入るように + プログラムされていることがあります. もしブレーク信号が + 1.6 秒よりも短ければ, それはデータブレークを 示します. + この信号に応答するのはリモートコンピュータの仕事です. + この形のブレークは, + しばしば注意喚起または割り込みのための信号として 使われ, + ASCII の CONTROL-C + 文字の代用とされることもあります. + + マークとスペースは紙テープシステムでの + “穴空き” と “穴無し” に + 相当しています. + + + ブレーク信号は, + 紙テープまたはその他のバイト列から生成できない + ことに注意してください. + なぜならバイト列は常にスタートビットや + ストップビットとともに送られるからです. UART + には通常, ホストプロセッサからの特別なコマンドにより + 連続したスペース信号を生成する能力があります. + + + + + RS-232C の DTE デバイスおよび DCE デバイス + + RS-232C 規格は二つのタイプの装置を定めています: + それはデータターミナル装置 (DTE) とデータキャリア装置 + (DCE) です. 通常, DTE デバイスはターミナル + (またはコンピュータ) で, DCE は モデムです. + 電話回線を介した通信のもう一方の端である受信側のモデムも + また DCE デバイスで, + そのモデムに接続されているコンピュータは DTE + デバイスです. DCE デバイスが信号を受け取るピンは DTE + デバイスが 信号を送るピンであり, + また逆も同様です. + + 二つのデバイスがともに DTE であったり, ともに DCE + であって, + モデムやそれに類似したメディア変換装置を介さずに + 接続する必要が ある場合, ヌルモデム (NULL modem) + を使わなければなりません. + ヌルモデムはケーブルを電気的に再配列し, + 一方のデバイスの送信出力が + もう一方のデバイスの受信入力に接続され, + その逆もまた同様に 接続されるようにしてくれます. + 同様の変換はすべての制御信号についておこなわれ, + それぞれのデバイスが 他方のデバイスからの DCE (または + DTE) 信号を受けとれるようになります. + + DTE デバイスと DCE + デバイスで生成される信号の数は等しくありません. DTE + デバイスが DCE デバイスのために生成する信号の数は, DTE + デバイスが DCE デバイスから受けとる信号の数よりも + 少なくなっています. + + + + RS-232C のピン割当て + + EIA の RS-232C 規格 (およびこれに相当する ITU の + V.24 規格) は 25 ピンのコネクタ (通常 DB25 が使われます) + を要求し, そのコネクタのほとんどのピンの + 使用目的を定義しています. + + IBM PC および類似のシステムでは, RS-232C + 信号のサブセットが 9 ピンのコネクタ (DB9) + で提供されています. 主に同期モードで使用される信号は PC + のコネクタには含まれていませんが, もともと + この転送モードは IBM が IBM PC で使用することにした UART + ではサポートされていません. + + メーカーによっては RS-232C 用のコネクタに DB25 か + DB9, + またはその両タイプのコネクタを使っている場合があります. + (IBM PC はパラレルプリンタインターフェースにも DB25 + コネクタを 使っているので, このことは + しばしば混乱を引き起こします.) + + 以下は DB25 および DB9 コネクタにおける RS-232C + 信号の割り当て表です. + + + + + + DB25 RS232-C 端子 + DB9 IBM PC 端子 + EIA 回路符号 + CCITT 回路符号 + 一般名称 + 信号源 + 説明 + + + + + + 1 + - + AA + 101 + PG/FG + - + 保安用接地 + + + + 2 + 3 + BA + 103 + TD + DTE + 送信データ + + + + 3 + 2 + BB + 104 + RD + DCE + 受信データ + + + + 4 + 7 + CA + 105 + RTS + DTE + 送信要求 + + + + 5 + 8 + CB + 106 + CTS + DCE + 送信可 + + + + 6 + 6 + CC + 107 + DSR + DCE + データセットレディ + + + + 7 + 5 + AV + 102 + SG/GND + - + 信号用接地 + + + + 8 + 1 + CF + 109 + DCD/CD + DCE + 受信キャリア検出 + + + + 9 + - + - + - + - + - + 予約 (テスト用) + + + + 10 + - + - + - + - + - + 予約 (テスト用) + + + + 11 + - + - + - + - + - + 未割当て + + + + 12 + - + CI + 122 + SRLSD + DCE + 従局受信キャリア検出 + + + + 13 + - + SCB + 121 + SCTS + DCE + 従局送信可 + + + + 14 + - + SBA + 118 + STD + DTE + 従局送信データ + + + + 15 + - + DB + 114 + TSET + DCE + 送信信号エレメントタイミング + + + + 16 + - + SBB + 119 + SRD + DCE + 従局受信データ + + + + 17 + - + DD + 115 + RSET + DCE + 受信信号エレメントタイミング + + + + 18 + - + - + 141 + LOOP + DTE + ローカルループバック + + + + 19 + - + SCA + 120 + SRS + DTE + 従局送信要求 + + + + 20 + 4 + CD + 108.2 + DTR + DTE + データ端末レディ + + + + 21 + - + - + - + RDL + DTE + リモートデジタルループバック + + + + 22 + 9 + CE + 125 + RI + DCE + 被呼表示 + + + + 23 + - + CH + 111 + DSRS + DTE + データ信号速度選択 + + + + 24 + - + DA + 113 + TSET + DTE + 送信信号エレメントタイミング + + + + 25 + - + - + 142 + - + DCE + テストモード + + + + + + + + + ビット, ボー, そしてシンボル + + ボーとは非同期通信における転送速度の単位です. + モデム通信技術の進歩により, 新しいデバイスのデータ速度を + 表記するにあたって, この用語が + しばしば誤って使われるようになりました. + + ボーレートは伝統的に, + 通信路を通して実際に送られるビットの数を 表します. ある + DTE デバイスからもう一方へと実際に移動した + データの量を表すものではありません. ボーレートは, 送信側 + UART で生成されて受信側 UART で取り除かれる スタート, + ストップ, パリティといったオーバーヘッドビットをも + 含んでいます. これは 1 ワード 7 + ビットのデータを送るためには, 実際には 10 ビットの + データが完全に転送される必要があるということを意味します. + そのため, もしパリティを使い, + スタートビットとストップビットが それぞれ 1 + ビットずつ存在する場合には, 1 秒あたり 300 ビットの + 転送能力を持つモデムでは, 7 ビットのワードを通常 30 個しか + 転送することができません. + + もし 1 ワード 8 + ビットのデータとパリティビットを使用する場合には, + データ転送速度は 1 秒あたり 27.27 ワードまで低下します. + なぜなら 8 ビットのワードを送るのに 11 ビットが必要で, + このモデムは 1 秒間に 300 + ビットしか送ることができないからです. + + 1 秒あたりの転送バイト数をボーレートに変換したり, + その逆をおこなう 計算式は, + エラー訂正をおこなうモデムが現れるまでは単純でした. + エラー訂正をおこなうモデムは, ホストコンピュータの UART + から シリアルのビット列を受けとり, + それをバイト列に戻します. + (内蔵モデムを使用している場合でさえ, データは今まで通り + 頻繁にシリアル化されます) + その後これらのバイトはパケットに変換され, + 同期転送方式を用いて 電話回線を通じて送信されます. これは + DTE (コンピュータ) 中の UART で追加されたストップ, + スタート およびパリティビットは, + モデムから送り出される前に, モデムによって + 取り除かれるということを意味します. + これらのバイト列がリモートモデムに受信されると, + リモートモデムは スタート, + ストップおよびパリティビットを追加して, それらを + シリアル形式に変換し, リモートコンピュータの受信側 UART + に送ります. そしてリモートコンピュータの UART はスタート, + ストップおよび パリティビットを取り除きます. + + これらの特別な変換はすべて, + 二つのモデムの間でエラー訂正が + 実行できるようにするためおこなわれています. + エラー訂正とは, 受信側のモデムが正しいチェックサムで + 受信できなかったデータブロックの再送を, + 送信側のモデムに要求することができるということです. + この作業はモデムにより処理されて, DTE デバイスは + このようなプロセスがおこなわれていることに, + 通常気がつきません. + + スタート, + ストップおよびパリティビットを取り除くことにより, + エラー訂正のために二つのモデムの間で共有しなければならない + 追加のビットを, + 実効転送速度を低下させずに送ることができます. そのため, + 送受信 DTE にはエラー訂正がおこなわれているかどうかが + ほとんど見えなくなります. 例えば, もしモデムが 10 個の 7 + ビットデータをもう一方のモデムに送る 際に, スタート, + ストップ, およびパリティビットを送る必要がなければ, + その分の 30 ビットの情報を, + 真のデータの転送速度に影響を与えることなく + エラー訂正のために追加することができるわけです. + + データ圧縮をおこなうモデムでは, + ボーという言葉の使い方は さらに混乱することになります. + 例えば電話回線を通じて送られた二つの 8 ビットデータは, + 送信側モデムに送られた 12 + バイトのデータを表すかもしれません. + 受信側モデムはそのデータを本来の内容に展開し, 受信側の DTE + に渡します. + + また, 最近のモデムはバッファを内蔵しており, (DCE から + DCE へ) 電話線を 流れるデータの転送速度と, 両端の DTE と + DCE の間で流れるデータの + 転送速度とを別々に設定することができます. + モデムによる圧縮を使用する場合, 通常は DTE と DCE + の間の速度を DCE と DCE + の間の速度より速くしておきます. + + 1 バイトを記述するのに必要なビットの数は, + 二つのマシンの間でも DTE-DCE と DCE-DCE + のリンクでそれぞれ変化する場合がありますし, そのうえ, + それぞれのビット転送速度が異なる場合もあります. そのため, + 全体としての通信速度を表現するために + ボーという言葉を使うことは 問題でもありますし, + 真の転送速度を正しく伝えない場合があります. 1 + 秒あたりの転送ビット数 (bps) は DCE と DCE + の間のインターフェースに + おける転送速度を記述するために使うなら正しい用語ですし, + ボーまたは 1 秒あたりのビット数は, + 二つのシステムが電線で直接 接続されていたり, + エラー訂正や圧縮をおこなわないモデムが + 使われている場合には, 許容可能な用語です. + + 最近の高速モデム (2400, 9600, 14,400, 19,200bps + などのもの) も, 実際には 2,400 ボー (正確には 2,400 + シンボル/秒) か, それ以下の 速度で通信しています. + 高速モデムでは, 複数のビットを一つのシンボルで + 伝送する技術 (多値符合化など) を用いて, シンボル速度 + (シンボル/秒) よりも 高い通信速度 (ビット/秒) + を達成しています. これが電話の限られた音声帯域で + 高い伝送速度を得られる理由です. 28,800bps + やそれ以上のモデムでは, シンボル速度自体が + 可変になっていますが, + それ以外は同様の技術が用いられています. + + + + IBM PC の UART + + 元祖 IBM PC を設計した際に, IBM + はナショナル・セミコンダクタ社の INS8250 UART を IBM PC + パラレル/シリアルアダプタで使用することに + 決めました. + + IBM 自身やその他のベンダが作っている後継世代の AT + 互換機でも, INS8250 + そのものやナショナル・セミコンダクタの UART ファミリの + 改良版を使い続けられています. + + + ナショナル・セミコンダクタの UART + ファミリ系統図 + + INS8250 UART + にはいくつかのバージョンと後継の部品があります. + 主要なバージョンを以下に示します. + + + +INS8250 -> INS8250B + \ + \ + \-> INS8250A -> INS82C50A + \ + \ + \-> NS16450 -> NS16C450 + \ + \ + \-> NS16550 -> NS16550A -> PC16550D + + + INS8250 + + この部品は元祖 IBM PC と IBM PC/XT で + 使われていました. この部品は本来 INS8250 ACE + (Asynchronous Communications Element) と + いう名前で, NMOS 技術で作られていました. + + 8250 は八つの I/O ポートを占有し, 送信バッファ + 1 バイトと 受信バッファ 1 バイトを持っています. + この元祖の UART はいくつかの + 競合状態などに関する欠陥を持っています. 元祖の + IBM BIOS + はこれらの欠陥を回避してうまく動くようなコードを + 含んでいましたが, そのために BIOS + が欠陥の存在に依存するように なってしまいました. + このため, 元祖 IBM PC や IBM PC/XT では 8250A, + 16450, または 16550 のような後継部品を使うことは + できませんでした. + + + + INS8250-B + + これは NMOS 技術で作られた INS8250 + の低速版です. これもオリジナルの INS8250 + と同じ問題を含んでいます. + + + + INS8250A + + XMOS 技術を使い, + さまざまな機能的欠陥を修正した INS8250 + の改良版です. INS8250A は当初, + “クリーン”な BIOS を 使用したベンダの + PC クローンで使用されていました. + なぜなら欠陥が修正されたことにより, この部品は + INS8250 や INS8250B の ために書かれた BIOS + で使うことはできなかったからです. + + + + INS82C50A + + これは INS8250A の CMOS 版 (低消費電力版) で, + INS8250A と同じ機能特性を持っています. + + + + NS16450 + + より高速な CPU バスにも対応できるように + 改良されたこと以外は NS8250A と同じです. IBM + はこの部品を IBM AT で使うことに決め, もはや IBM + BIOS が INS8250 + のバグに依存しなくなるように + 変更をおこないました. + + + + NS16C450 + + これは NS16450 の CMOS 版 (低消費電力版) + です. + + + + NS16550 + + 送信バッファと受信バッファをそれぞれ 16 + バイトに 変更したこと以外は NS16450 と同じですが, + バッファの設計に 欠陥があるため, + 信頼して使用することはできません. + + + + NS16550A + + バッファの欠陥が修正されたこと以外は NS16550 + と 同じです. 割り込みへの反応が遅い OS + でも高い信頼性で高速なデータを + 扱うことができることから, 16550A とその後継部品は + PC 産業界で 最も一般的に使われる UART + となりました. + + + + NS16C552 + + これは 2 個の NS16C550A CMOS UARTを + 一つのパッケージに入れた部品です. + + + + PC16550D + + ささいな欠陥が修正されたこと以外は NS16550A と + 同じです. これは 16550 ファミリの D リビジョンで, + ナショナル・セミコンダクタ社から + 提供されている最新の部品です. + + + + + + + NS16550AFとPC16550Dは同じもの + + ( ここからは &a.jp.iwasaki; が翻訳を担当) + + ナショナル・セミコンダクタは + 数年前に部品番号体系を再編成して おり, NS16550AFN + という名称はもはや存在しません. (もしあなたが + NS16550AFN を持っていたら, + 部品の日付コードを見てください. それは 通常 9 + から始まる4桁の数字です. 最初の2桁の数字は年度, 次の2桁 + は部品がパッケージされた年度の週です. あなたの持っている + NS16550AFN は, おそらく数年前のものでしょう.) + + 新しい番号は PC16550DV の様に, + パッケージ材料と形状により接尾辞 に小さな違いがあります + (番号体系についての記述は後述します). + + ここで注意しなければいけないことがあります. 例えば, + ある店に行って 1990年製の NS16550AFN + を15米ドルで売っているとします. ところが, + そのすぐ隣には ナショナル・セミコンダクタが AFN + を生産開始してから それにマイナーな変更を加えて作った + PC16550DN があり, そちらは 最近 + 6ヶ月に作られたものなのに, 簡単に入手できるため + NS16550AFN の 半額 (たくさん一度に買うと + 5米ドルまで下がることもあります) 位で + 買えたりすることがあるのです. + + NS16550AFN のチップ供給は減少し続けているため, + PC16550DN が古い + 部品番号のものとまったく同じ機能を持っていることに, + より多くの人が 気付いて受け入れるまでは, + 価格はおそらく上昇し続けるでしょう. + + + + ナショナル・セミコンダクタの部品番号体系 + + 古い NSnnnnnrqp + の部品番号は, 現在 + PCnnnnnrgp + というフォーマットになっています. + + r + はリビジョンのフィールドです. 現在のナショナルセ + ミコンダクタの 16550 + のリビジョンはDです. + + p + はパッケージタイプのフィールドです. タイプは以下 + の通りです: + + + + + + "F" + QFP + (quad flat pack) L lead type + + + + "N" + DIP + (dual inline package) through hole straight + lead type + + + + "V" + LPCC + (lead plastic chip carrier) J lead type + + + + + + 訳注: 具体的なパッケージ形状についての情報は http://www.national.com/packaging/plastic.html を参照 してください. + + g + は製品グレードのフィールドです. もしパッケージタイ + プの文字の前にIがあれば, + “工業用”グレード部品を表し, 標準 + 部品より高いスペックを持ちますが, Miltary 仕様 (Milspec) + ほど高 くはありません. + これは付加的なフィールドです. + + 私たちがかつて NS16550AFN (DIP パッケージ) + と呼んでいたものは, 現在 は PC16550DN または PC16550DIN + と呼ばれています. + + + + + 他のベンダと類似の UART + + 長年に渡り, 8250, 8250A, 16450 そして 16550 + はライセンスされ, + または他のチップベンダにコピーされてきました. 8250, 8250A + そして 16450 の場合は, そのものの回路 + (“megacell”: LSIの中に組み込む + ことのできるライブラリ化された回路の大規模な物) が Western + Digital と Intel + を含むたくさんのベンダにライセンスされまし た. + 他のベンダは部品を + リバースエンジニアリングした物か同じように + 動作する互換品を製造しました. + + 内蔵モデムにおいては, + モデム設計者はモデムのマイクロプロセッサで 8250A/16450 + をエミュレートすることはよくおこなわれます. + このエミュレート による (互換の) UART + は数百バイトの隠れたバッファを持つでしょう. + バッファのサイズのため, + このような互換品は高速データ処理の能力では 16550A + と変わらない信頼性を持つことができます. しかし, それでも + ほとんどのオペレーティングシステムは UART は 8250A か + 16450 である と報告し, 特殊なドライバが使用されなければ + エミュレートによる UART の余分に存在する + バッファリングの効果的な使用はおこないません. + + 幾つかのモデムメーカーは, + 市場における競争を有利にするために数百バ + イトのバッファを持ち 16550A + の置き換えができるはずの設計を, たとえ + 性能が低下する事になったとしても + 棄てざるを得なくなるような市場の圧 + 力を受けています. + + 一般的にある誤解は, “16550A” + と書かれたすべての部品が同じ性能であると いうことです. + それらは異なるものであり, 状況によってはまちがいなく + 欠陥と呼べるものがこれらの 16550A + クローンのほとんどにあります. + + NS16550 が開発された時に, + ナショナル・セミコンダクタは設計に関する + 幾つかの特許を取得し, + 彼らはライセンスを制限して他のベンダが類似 + の特徴を持つチップを供給することを困難にしました. + 特許のため, リバー + スエンジニアリングによる設計とエミュレーションは, + 特許がカバーする + 請求権を侵害を回避しなくてはなりませんでした. 結果として, + これらの コピーのほとんどは, + 多くのコンピュータとモデムのメーカーは支払いた + くはない程の価格であった本物の部品の NS16550A または + PC16550D とまった + く同じような動作をさせることはできませんでした. + + 16550A のクローンに存在する相違点のうち + いくつかは些細なものですが, そのほかに + 特定のオペレーティングシステムやドライバでは + 全然使いものにならないような相違が存在する場合もあります. + あるドライバでは問題なく動作しても, + 別のドライバを使用した場合には + 問題が発生することもありますし, Windows + のドライバにおいても + 充分にテストや考慮がおこなわれなかったイベントの組合わせが + 起こった場合には, + これらの相違点が明らかになるかもしれません. + これはほとんどのモデムベンダと 16550 クローンメーカーが, + NS16550A との互換性のプライマリテストとして Windows for + Workgroups 3.11 と Microsoft MSD ユーティリティの + Microsoft ドライバを使用しているか らです. + この安易過ぎる規準は, もし異なるオペレーティングシステムが + 使用されたらクローンと + 本物の部品の微妙な違いのために問題が発生し得 る, + ということを意味しています. + + ナショナル・セミコンダクタは, どんな OS + のドライバからも独立した互 換性テストを実行する + COMTEST + という名前の入手可能なプログラムを作 成しました. + このタイプのプログラムの目的は, 競合製品にある欠陥のデ + モンストレーションであることをおぼえておくべきです. + ですからそのプ ログラムは, + テスト中の部品の動作の重要な問題と極めてささいな相違を + 同じように報告するでしょう. + + この文書の著者が 1994 + 年に実行した一連のテストでは, ナショナルセミ コンダクタ, + TI, StarTech そして CMD が製造した部品は megacell 及び + COMTEST + でテストされた内蔵モデムに埋め込まれたエミュレーションと同 + 等です. + これらの部品のの幾つかで注目される相違点を以下に示します. + これらのテストは1994年に実行されたので, + これらはベンダから供給さ + れた製品の現在の性能には反映されないでしょう. + + 極端に多くの問題やあるタイプの問題が検出された場合に, + COMTEST は通 常は実行を中止することに注意してください. + このテストの一部では, たと + え何回相違点に遭遇しても中止しないように COMTEST + を修正しました. + + + + + + ベンダ + 部品番号 + 報告された「相違点」として知られるエラー + + + + + + National + (PC16550DV) + 0 + + + + National + (NS16550AFN) + 0 + + + + National + (NS16C552V) + 0 + + + + TI + (TL16550AFN) + 3 + + + + CMD + (16C550PE) + 19 + + + + StarTech + (ST16C550J) + 23 + + + + Rockwell + Reference modem with internal 16550 or an + emulation (RC144DPi/C3000-25) + 117 + + + + Sierra + Modem with an internal 16550 + (SC11951/SC11351) + 91 + + + + + + + この文書の著者は今まで, COMTEST プログラムを + 使用して相違点がゼロと報告されるナショナル・ + セミコンダクタ以外の部品を一つも発見しませんでした. + ナショナル・セミコンダクタは長年に渡り 16550 + の五つのバージョンを持っており, 最新の部品は + 機能性のために, ベンチマークを考慮した古い + NS16550AFN と少し異なる振る舞いをすることに + 注意するべきです. + COMTEST はナショナル・セミコンダクタの製品ラインの + 相違点については見て見ぬふりをするようになり, + 部品のリビジョン A, B そして C にあるバグが + 記述されている公式な正誤表がある時でも, + (オリジナルの 16550 を除いては) ナショナル・ + セミコンダクタの部品についてエラーを + 報告しなくなったので, この COMTEST のひいきを + 考慮にいれるべきです. + + + COMTEST からの相違点の単純なカウントが, + 何の相違点が重要であり どれがそうでないのかについて + 多くを明らかにしないことを 理解すること が大切です. + 例えば, 内蔵の UART を持つ上記の二つのモデムで報告され + た相違点の約半分が, + 5及び6ビットキャラクタモードをサポートしないク ローンの + UART によって引き起こされました. 本物の 16550, 16450 そし + て 8250 UART すべてはこれらのモードをサポートし, COMTEST + はこれらの モードの機能性をチェックするので, + 50を越える相違点が報告されました. しかし, + 5及び6ビットキャラクタモードを + サポートするモデムは殆どなく, + 特ににこれらはエラー修正と圧縮機能付のものです. + これは5及び6ビット キャラクタモードに関連した相違点は + 差し引いて考えることができること を意味しています. + + COMTEST が報告した相違点の多くは, + タイミングに関する点でしょう. 多くのクローンの設計では, + ホストが一つのポートから読み込んだ時に他 + のあるポートのステータスビットは, + 本当の NS16550AFN と同じ + 長さの時間内で更新されない (あるものは速く, + あるものは遅く) かもしれ ませんが, COMTEST + はこれらの相違点を探します. これは相違点の数は誤 + 解を招き易いものです. + あるデバイスには一つか二つの相違点しかありま + せんがそれらは非常に重大かもしれません. + また別のデバイスは基準部品 と比べて速くまたは遅く status + レジスタを更新するために (適切に書か + れたドライバの操作にはまったく影響しないかもしれません) + 多くの相違点を 報告されるかもしれません. + + COMTEST は問題を引き起こすかも知れない, + または特殊なケースとして処 + 理しなければならない潜在的に矛盾した部品の存在に対して, + 管理者に警 + 告を出すスクリーニングツールとして使用できます. + + もしモデムの中にある 16550 + やシリアルポート接続されているモデムに 対して COMTEST + を実行する場合, モデムがテストキャラクタをエコーし + ないように最初に ATE0&W + コマンドをモデムに発行する必要がありま す. + これをおこなうことを忘れた場合, COMTEST + は少なくともこの相違点を 報告するでしょう: + + Error (6)...Timeout interrupt failed: IIR = c1 LSR = 61 + + + + 8250/16450/16550 のレジスタ + + 8250/16450/16550 UART は八つの連続する I/O + ポートアドレスを予約 しています. IBM PC + ではこれらの八つのポートに対して二つの定義された + 位置があり, それらは集合的に COM1 と COM2 + として知られています. PC + クローンとアドオンカードのメーカーは COM3 と COM4 + として知られる二つ の付加的な領域を作成しましたが, + 幾つかのシステムではこれらの余分な COM + ポートは他のハードウェアと衝突します. 最もよく起きるものは + IBM 8514 + エミュレーションを提供するビデオアダプタとの衝突です. + + + COM1 には 0x3f8 から 0x3ff が割り当てられ, 通常 IRQ 4 + が使用されます. COM2 には 0x2f8 から 0x2ff が割り当てられ, + 通常 IRQ 3 が使用されます. COM3 には 0x3e8 から 0x3ef + が割り当てられ, IRQ は標準化されていません. COM4 には + 0x2e8 から 0x2ef が割り当てられ, IRQ + は標準化されていません. + + 8250/16450/16550 UART + のI/Oポートの詳細は以下に提供されています. + + + + + + I/O ポート + 許可されたアクセス + 説明 + + + + + + +0x00 + write (DLAB==0) + Transmit Holding Register (THR). + このポートに書き込まれた情報は + データ命令として 処理され, UART + により送信されます. + + + + +0x00 + read (DLAB==0) + Receive Buffer Register (RBR). + シリアル接続から UART + によって受信されたすべての データ命令は, + このポートを読むことによってホス + トによりアクセスされます. + + + + +0x00 + write/read (DLAB==1) + Divisor Latch LSB (DLL) + マスタ入力クロックの周波数を + このレジスタに入っ ている値で割ることにより, + UART の周波数が決定 されます (IBM PCでは, + マスタクロックの周波数は 1.8432MHzです). + このレジスタには上記の除数の下 + 位8ビットが入っています. + + + + +0x01 + write/read (DLAB==1) + Divisor Latch MSB (DLH) + マスタ入力クロックの周波数をこの + レジスタに入っ ている値で割ることにより, UART + の周波数が決定 されます (IBM PCでは, + マスタクロックの周波数は 1.8432MHzです). + このレジスタには上記の除数の上 + 位8ビットが入っています. + + + + +0x01 + write/read (DLAB==0) + + + + + + + Interrupt Enable + Register (IER) + 8250/16450/16550 の UART + はイベントを四つのカテ + ゴリの一つに分類します. + それぞれのカテゴリは設 定可能です. + それぞれのカテゴリは, どんな類のイ + ベントの発生時に割り込みを + 生成するように設定可 能です. + 8250/16450/16550 の UART は, 有効になっ + ているカテゴリ内でいくつの + イベントが発生してい るかに関わらず, + 単一の外部割り込みシグナルを生 成します. + 割り込みに応答し有効になっている割り + 込みカテゴリ + (通常すべてのカテゴリが有効になって + いる割り込みを持ちます) + を割り込みの本当の原因 + を決定するためにポーリングするかは, + ホストのプ + ロセッサ次第です. + + + + Bit 7 + 予約済み, 常に 0. + + + + Bit 6 + 予約済み, 常に 0. + + + + Bit 5 + 予約済み, 常に 0. + + + + Bit 4 + 予約済み, 常に 0. + + + + Bit 3 + Enable Modem Status Interrupt (EDSSI). + このビットを「1」に設定することで, + 一つ以上の状態ラインで変更が発生した時 + に, UART が割り込みを生成可能となりま + す. + + + + Bit 2 + Enable Receiver Line Status Interrupt (ELSI) + このビットを「1」に設定することで, 入っ + てくるデータにエラー (または BREAK シ + グナル) が検知された時に, UART が割り + 込みを生成するようになります. + + + + Bit 1 + Enable Transmitter Holding Register + Empty Interrupt (ETBEI) + このビットを「1」に設定することで, UART + に送信される一つ以上の付加的な文 + 字に対する空きが生じた時に, UART が割 + り込みを生成するようになります. + + + + Bit 0 + Enable Received Data Available + Interrupt (ERBFI) + このビットを「1」に設定することで, UART が + FIFO のトリガーレベルを越え + る十分な文字を受け取るか, FIFO のタイ + マが期限切れとなるか (古くなったデータ), + FIFO が無効の場合にシグナル文字が受信 + された時に, UART が割り込みを生成する + ようになります. + + + + + + + +0x02 + write + + + + + + + + + + + FIFO Control Register (FCR) + (このポートは 8250 と 16450 の UART では + 存在しません.) + + + + Bit 7 + Receiver Trigger Bit + #1 + + + + Bit 6 + Receiver Trigger + Bit #0この二つのビットは FIFO + が機能している + 場合にレシーバがどの時点で割り込みを生 + 成するかを制御します. + + + + 7 + 6 + 割り込み生成前にいくつの命令 + が 受信されたか. + + + + 0 + 0 + 1 + + + + 0 + 1 + 4 + + + + 1 + 0 + 8 + + + + 1 + 1 + 14 + + + + Bit 5 + 予約済み, 常に 0. + + + + Bit 4 + 予約済み, 常に 0. + + + + Bit 3 + DMA Mode Select. Bit 0 + が「1」 (FIFO 有効) に設定されて いる場合, + このビットの設定は -RXRDY と -TXRDY + の処理を Mode 0 から Mode 1 へ 変更します. + + + + + Bit 2 + Transmit FIFO Reset. + このビットに「1」が書き込まれている場 合, + FIFO の内容は破棄されます. 現在送 + 信されているすべての命令は損なわれずに送 + られるでしょう. この機能は送信中止の場 + 合に役に立ちます. + + + + Bit 1 + Receiver FIFO Reset. + このビットに「1」が書き込まれている場 合, + FIFO の内容は破棄されます. 現在 shift + レジスタ内で組み立てられているすべ + ての命令は損なわれずに受信されるでしょ う. + + + + + Bit 0 + 16550 FIFO Enable. + 設定されている場合, 送信 / 受信両方の FIFO + が有効になります. holding レジス タ, shift + レジスタまたは FIFO 内のすべて の内容は, + FIFO が有効または無効になっ + た時点で失われます. + + + + + + + +0x02 + read + + + + + + + + + + + + Interrupt Identification + Register + + + + Bit 7 + FIFO有効. + 8250/16450 UART では, このビットはゼロ. + + + + Bit 6 + FIFO有効. + 8250/16450 UART では, このビットはゼロ. + + + + Bit 5 + 予約済み, 常に0. + + + + Bit 4 + 予約済み, 常に0. + + + + Bit 3 + Interrupt ID Bit #2. + 8250/16450 UART では, このビットはゼロ. + + + + + Bit 2 + Interrupt ID Bit #1 + + + + Bit 1 + Interrupt ID Bit #0. + これらの3つのビットは進行中の割り込み + を引き起こしたイベントのカテゴリを併せ + て報告します. これらのカテゴリは優先度 + を持つため, イベントの複数のカテゴリが + 同時に発生した場合, UART は最初に最も + 重要なイベントを報告し, ホストは報告さ + れた順に解決するでしょう. 現在の割り込 + みを引き起こしたすべてのイベントは, 新し + い割り込みが生成される前に解決されなけ + ればなりません (これは PC のアーキテク + チャの制限です). + + + + 2 + 1 + 0 + 優先度 + 説明 + + + + 0 + 1 + 1 + First + レシーバエラー (OE, PE, BI, + また FE) + + + + 0 + 1 + 0 + Second + 有効な受信データ + + + + 1 + 1 + 0 + Second + トリガーレベル識別子 + (受信バッファ中の古いデータ) + + + + 0 + 0 + 1 + Third + トランスミッタに + 命令用の空きがある + (THRE) + + + + 0 + 0 + 0 + Fourth + モデムの状態が + 変わった (-CTS, + -DSR, -RI, または + -DCD) + + + + Bit 0 + Interrupt Pending Bit. + このビットが「0」に設定されている場合, + 少なくとも一つの割り込みがペンディング + されています. + + + + + + + +0x03 + write/read + + + + + + + + + + + + Line Control + Register (LCR) + + + + Bit 7 + Divisor Latch Access + Bit (DLAB). 設定されている場合, + transmit/receive register (THR/RBR) と + Interrupt Enable Register (IER) + へのアクセスが無効にな ります. + 現在これらのポートへのすべてのア クセスは + Divisor Latch Register へリダ + イレクトされます. このビットの設定, Divisor + Register のローディング, そし て DLAB + のクリアは割り込みが無効になっ + ている状態でおこなわれるべきです. + + + + Bit 6 + Set Break. + 「1」に設定されている場合, トランスミッ + タはこのビットが「0」に設定されるまで + スペースを切り目なく送信します. これは + 送信されている文字のすべてのビットに優先 + します. + + + + Bit 5 + Stick Parity. parity + が有効になっている場合, このビッ + トの設定はビット4の値に基づき parity + を常に「1」か「0」にします. + + + + Bit 4 + Even Parity Select + (EPS). parity が有効でビット5が「0」の場合, + このビットの設定は偶数 parity が送信そ + して要求されるようにします. そうでなけ + れば奇数 parity が使用されます. + + + + Bit 3 + Parity Enable (PEN). + 「1」に設定されている場合, データの最 + 後のビットとストップビットの間に parity + ビットが挿入されます. また UART + は受信データに存在する parity を要求す + るでしょう. + + + + Bit 2 + Number of Stop Bits + (STB). 「1」に設定されている場合, 5-bit デー + タ命令を使用して, 1.5の Stop ビットが + 送信され各データ命令内に要求されま す. 6, 7 + そして 8-bit データ命令に対し ては, 2つの + Stop ビットが送信され要求 されます. + このビットが「0」に設定され ている場合, + 1つの Stop ビットが各デー + タ命令で使用されます. + + + + Bit 1 + Word Length Select Bit #1 + (WLSB1) + + + + Bit 0 + Word Length Select Bit #0 + (WLSB0) + + + + これらのビットは共に + 各データ命令内のビッ トの数を指定します. + + + + + 1 + 0 + 命令長 + + + + 0 + 0 + 5 Data + Bits + + + + 0 + 1 + 6 Data + Bits + + + + 1 + 0 + 7 Data + Bits + + + + 1 + 1 + 8 Data + Bits + + + + + + + +0x04 + write/read + + + + + + + Modem Control Register + (MCR) + + + + Bit 7 + 予約済み, 常に 0. + + + + Bit 6 + 予約済み, 常に 0. + + + + Bit 5 + 予約済み, 常に 0. + + + + Bit 4 + Loop-Back Enable. + 「1」に設定されている場合, UART のトラ + ンスミッタとレシーバは診断処理のために + 内部的に相互に接続されます. 付け加えて UART + のモデム制御出力はモデム制御入力 + に接続されます. CTS は RTS へ, DTR は + DSRへ, OUT 1 は R1 へ, OUT 2 は DCD へ + 各々接続されます. + + + + Bit 3 + OUT 2. ホストのプロセッサが high または + low に設定するであろう補助的な出力. IBM PC + のシリアルアダプタ (とクローンの殆ど) では, + OUT 2 は 8250/16450/16550 UART + からの割り込み信号をハイインピーダンス + (無効) にするのに使用されます. + + + + Bit 2 + OUT 1. ホストのプロセッサが high または + low に設定するであろう補助的な出力. IBM PC + のシリアルアダプタではこの出力は使用 + されません. + + + + Bit 1 + Request to Send (RTS). + 「1」に設定されている場合, UART の -RTS + ラインの出力は Low (有効) となり ます. + + + + + Bit 0 + Data Terminal Ready (DTR). + 「1」に設定されている場合, UART の -DTR + ラインの出力は Low (有効) となり ます. + + + + + + + + +0x05 + write/read + + + + + + + Line Status Register + (LSR) + + + + Bit 7 + Error in Receiver FIFO. 8250/16450 UART + では, このビットはゼロ です. + FIFOの中に次のエラー条件が一つ以 + 上含まれている場合, このビットは「1」 + に設定されます: PE, FE, または BI. + + + + Bit 6 + Transmitter Empty (TEMT). + 「1」に設定されている場合, 送信 FIFO + または送信 shift レジスタ中に残ってい + る命令はありません. トランスミッタは完 + 全に働いていません. + + + + Bit 5 + Transmitter Holding Register Empty + (THRE). 「1」に設定されている場合, 現在 FIFO + (または holding レジスタ) には少なくと + も一つの送信される付加的な命令に対する + 空きあります. このビットが「1」に設定 + されている時は, 多分トランスミッタはま + だ送信しています. + + + + Bit 4 + Break Interrupt (BI). レシーバは Break + シグナルを検知しました. + + + + Bit 3 + Framing Error (FE). Start + ビットが検知されましたが, Stop + ビットは要求された時間内には現れません + でした. 受信された命令はおそらく勝手に + 解釈されます. + + + + Bit 2 + Parity Error (PE). parity + ビットが受信された命令に対して 不正です. + + + + + Bit 1 + Overrun Error (OE). + 新しい命令が受信され, 受信バッファに空 + きがありませんでした. shift レジスタに + 新たに到着した命令は破棄されます. + 8250/16450 UART では, holding レジスタ + 内の命令は破棄され新たに到着した命令は + holding レジスタに置かれます. + + + + Bit 0 + Data Ready (DR) + 一つ以上の命令がホストが読むであろう受 信 + FIFO にあります. このビットが設定さ + れる前に, 命令は完全に受信され shift + レジスタから FIFO (または 8250/16450 + の設計では holding レジスタ) へ移動さ + れなければなりません. + + + + + + + +0x06 + write/read + + + + + + + Modem Status Register + (MSR) + + + + Bit 7 + Data Carrier Detect (DCD). UART の DCD + ラインの状態を反映します. + + + + Bit 6 + Ring Indicator (RI). UART の RI + ラインの状態を反映します. + + + + Bit 5 + Data Set Ready (DSR). UART の DSR + ラインの状態を反映します. + + + + Bit 4 + Clear To Send (CTS). UART の CTS + ラインの状態を反映します. + + + + Bit 3 + Delta Data Carrier Detect (DDCD). + ホストによって MSR が最後に読み込まれ + た時点から, -DCD ラインが状態を一回以 + 上変えた場合に「1」に設定されます. + + + + Bit 2 + Trailing Edge Ring Indicator (TERI). + ホストによって MSR が最後に読み込まれ + た時点から, -RI ラインが low から high + へ移り変わった場合に「1」に設定されま + す. + + + + Bit 1 + Delta Data Set Ready (DDSR). + ホストによって MSR が最後に読み込まれ + た時点から, -DSR ラインが状態を一回以 + 上変えた場合に「1」に設定されます. + + + + Bit 0 + Delta Clear To Send (DCTS). + ホストによって MSR が最後に読み込まれ + た時点から, -CTS ラインが状態を一回以 + 上変えた場合に「1」に設定されます. + + + + + + + +0x07 + write/read + Scratch Register (SCR). このレジスタは UART + では機能しません. この場所 には + どんな値でもホストによって書き込まれるこ とができ, + その後ホストによって読み込むことが可 + 能です. + + + + + + + + 16550A UART を越えて + + ナショナル・セミコンダクタは付加的な機能を持つ 16550 + と互換 性のある部品を提供していませんが, + 色々な他のベンダがそれを持っ ています. + これらの部品の幾つかは以下に記述されています. 効果的 + にこれらの改良を使用するためには, + 殆どのポピュラーなオペレーティ ングシステムが 16550 + が提供する機能以上のものをサポートしない ため, + ドライバはチップベンダから提供されなければならないことを + 理解しておく必要があります. + + + ST16650 + + デフォルトではこの部品は NS16550A + と似ていますが, 拡 + 張された32バイトの送受信バッファを + オプションで有効にで きます. Startech + により製造されました. + + + + TIL16660 + + デフォルトではこの部品は NS16550A + と類似した振舞いを しますが, + 拡張された64バイトの送受信バッファをオプショ + ンで有効にできます. Texas Instruments + により製造されま した. + + + + Hayes ESP + + この専売特許のプラグインカードは, + 2048バイトの送受 信バッファを含み, 230.4Kbit/sec + のデータレートをサポー トします. Hayes + により製造されました. + + + + + これらの“ダム”UART に加え, + たくさんのベンダがインテリジェ + ントシリアルコミニュケーションボードを製造しています. こ + のタイプの設計は通常マイクロプロセッサを提供しており, + このマイ クロプロセッサは幾つかの UART + へのインタフェースとなってデータ を処理 / + バッファリングし, そして必要な時にメインの PC のプロセッ + サへ警告を出します. UART + はこのタイプのコミニュケーションシ ステムにおいて PC + のプロセッサによって直接アクセスされないため, + ベンダにとっては 8250, 16450, または 16550 UART + と互換性のある UART を使用する必要はありません. + これにより設計者は, より良い + 性能特性を持つ部品が自由に利用できます. + +
+ + + <devicename>sio</devicename>ドライバの設定 + + sio ドライバは, NS8250-, + NS16450-, NS16550とNS16550A ベースの EIA RS-232C(CCITT V.24) + 通信用インタフェースをサポートします. ま た, + いくつかのマルチポートシリアルカードもサポートされています. + 技術的 な詳細についてはマニュアル &man.sio.4; + を見てください. + + + Digi International (DigiBoard) PC/8 + + 原作: &a.awebster;. + 1995年8月26日. + + 訳: &a.jp.masaki;.6 + September 1996. + + 以下にDigi International + PC/8Dと16550チップを動作させるための, カーネ + ルconfigの部分を示します. このボードは, + 8本の回線にすべてモデムを接続 + した場合でも良好に動作します. + + options COM_MULTIPORT + を加えるのを忘れないでください. 忘れる + とうまく動作しません! + + +device sio4 at isa? port 0x100 tty flags 0xb05 device + sio5 at isa? port 0x108 tty flags 0xb05 device + sio6 at isa? port 0x110 tty flags 0xb05 device + sio7 at isa? port 0x118 tty flags 0xb05 device + sio8 at isa? port 0x120 tty flags 0xb05 device + sio9 at isa? port 0x128 tty flags 0xb05 device + sio10 at isa? port 0x130 tty flags 0xb05 device + sio11 at isa? port 0x138 tty flags 0xb05 irq 9 vector + siointr + + ここで各 SIO + ポートが割り込みを共有する一つのグループであることを表現 + するために, トリッキーな設定をしなければなりません. フラグ + (flags の後 ろの 16 進数) の下から 2 + バイト目にこのグループの最後の SIO ポートの番 + 号を設定します. この例では 11 (16進数では 0x0b) ですから, + 各デバイスの フラグは 0xb05 となります. + + + + Boca 16 + + 寄贈 &a.whiteside;. + 1995年8月26日 + + FreeBSD で Boca 16pord + のボードを動かすことは簡単ですが, そのた + めにはいくつかの作業が必要です. : + + + + 2.0.5 のデフォルトのカーネルは, + マルチポートのサポートをして + いない ので, + あなたは各ポート毎にデバイスエントリを追加する必要が + あります. つまり必要なオプションを付けて, + カーネルの再構築をしなければ なりません. そのためには, + あなたのマシンにカーネルのソースコードが既に + インストールされているか, + あなたの替わりの誰かにカーネル再構築をやって + もらう必要があります. + + + + 2番目に, + あなたはカーネルオプションを正しく設定するために, あな + たのBoca Boardの IO + と割り込みの値を知っている必要があります. + + + + ひとつ重要なことがあります. Boca 16 + に使われている実際の UART チップ は, Boca 16 + のボードではなく, + 外付けのコネクタボックスの中に存在します. + コネクタボックスを接続しないと, + ポートの検出に失敗するでしょう. 私は, + 接続しないまま起動したり, + 後から接続しなおしたりした時にどうなるかをテ + ストしていません. + どちらも実行しないようお奨めします. + + もしあなたがカスタマイズ済みのカーネル + コンフィグレーションファイルを持っ ていなければ, + 一般的な事柄については, FreeBSD + カーネルのコンフィグレーション + を参考にしてください. 以下にBoca 16のボード + に関係する部分だけを記述します. この例では, + あなたがMYKERNELという名前 のカーネルを使っていて, + エディタには viを使っていることを仮定していま す. + + + + 次の1行をconfigファイルに追加してください. + + +options COM_MULTIPORT + + + + この device + sionという行を, + 必要に応じて 16 個のデバイス分を追加してください. + 最後のデバイスにだけ, このボード + の割り込みベクタを記述します. (詳細は &man.sio.4; + のマニュア ルページを参照してください.) 以下の例は, + 割り込み 3, ベース IO アドレス 100h の値を持つ Boca + Board の場合です. 各ポートのための IO アドレスは, + 100h, 108h, 110h, ... のよ うに 16 進法で 8 + づつ加えていきます. + + +device sio1 at isa? port 0x100 tty flags 0x1005 device sio2 at isa? + port 0x108 tty flags 0x1005 device sio3 at isa? port + 0x110 tty flags 0x1005 device sio4 at isa? port 0x118 + tty flags 0x1005 … device sio15 at isa? port + 0x170 tty flags 0x1005 device sio16 at isa? port 0x178 + tty flags 0x1005 irq 3 vector siointr + + フラグエントリは, + あなたが全く同じsioの割り当てを使っていない限り + 必ず + 上記の例から変更してください. フラグは, + 次のように設定します. 0x M + YY + のMは, マスタポート (Boca + 16に搭載された最後 + のポート)のマイナー番号を指定します. さらに + YY の部分はFIFOが + 有効または無効であること (この場合は有効), 割り込みを + (ボード内で) 共 有しているか (この場合はYES), そして, + AST/4 と互換性のある持つ割り込み + 制御レジスタを持っているか (この場合はNO) + を指定します. この例では, + + +flags 0x1005 + + というフラグによって, + マスタポートが sio16 であることを示します. も + し同じボードをもう一枚追加し, sio17 から sio28 + を割り当てるなら, 新しい方の + ボードに対応する 16 個のポートのフラグはすべて 0x1C05 + に なります. 28 (== 0x1C) + は新しいボードのマスタポートのマイナー番号で す. + フラグの 05 の部分は変更しないでください. + + + + カーネルコンフィグレーションファイルを + 保存してカーネルの設定を完了しま す. + カーネルをコンパイル後, インストールし, + 新しいカーネルでリブートし てください. + 再コンパイルされたカーネルがうまくインストールされて, + そのカーネルに正 + しいアドレスと割り込みが設定されていたならば, + ブートメッセージは次の ように Boca + ポートの検出に成功するはずです: (sioの番号, + IOとIRQの値は, この例とは異なっているでしょう) + + sio1 at 0x100-0x107 flags 0x1005 on isa +sio1: type 16550A (multiport) +sio2 at 0x108-0x10f flags 0x1005 on isa +sio2: type 16550A (multiport) +sio3 at 0x110-0x117 flags 0x1005 on isa +sio3: type 16550A (multiport) +sio4 at 0x118-0x11f flags 0x1005 on isa +sio4: type 16550A (multiport) +sio5 at 0x120-0x127 flags 0x1005 on isa +sio5: type 16550A (multiport) +sio6 at 0x128-0x12f flags 0x1005 on isa +sio6: type 16550A (multiport) +sio7 at 0x130-0x137 flags 0x1005 on isa +sio7: type 16550A (multiport) +sio8 at 0x138-0x13f flags 0x1005 on isa +sio8: type 16550A (multiport) +sio9 at 0x140-0x147 flags 0x1005 on isa +sio9: type 16550A (multiport) +sio10 at 0x148-0x14f flags 0x1005 on isa +sio10: type 16550A (multiport) +sio11 at 0x150-0x157 flags 0x1005 on isa +sio11: type 16550A (multiport) +sio12 at 0x158-0x15f flags 0x1005 on isa +sio12: type 16550A (multiport) +sio13 at 0x160-0x167 flags 0x1005 on isa +sio13: type 16550A (multiport) +sio14 at 0x168-0x16f flags 0x1005 on isa +sio14: type 16550A (multiport) +sio15 at 0x170-0x177 flags 0x1005 on isa +sio15: type 16550A (multiport) +sio16 at 0x178-0x17f irq 3 flags 0x1005 on isa +sio16: type 16550A (multiport master) + + もしメッセージの表示が速くて読み取れないときは, + + &prompt.root; dmesg | more + + とするとブート時のメッセージを + ゆっくり見ることができます. + + + + 次に, root になってから, + デバイスにあわせたエントリを + /dev/MAKEDEV + スクリプトを使って/dev + に追加します. + + &prompt.root; cd /dev +&prompt.root; ./MAKEDEV tty1 +&prompt.root; ./MAKEDEV cua1 +(中略) +&prompt.root; ./MAKEDEV ttyg +&prompt.root; ./MAKEDEV cuag + + もし, 何らかの理由で発信するデバイスが不要な場合, + cua* デバ + イスを作らないで済ますこともできます. + + + + デバイスが確実に動作しているかどうか + 確認する手っ取り早い方法は, あなたが (rootになって) + 各ポートにモデムを接続してみて, あなたが作成し + た各デバイス毎に + + &prompt.root; echo at> ttyd* + + とやってみてください. 各ポー トが動作していれば + RXの表示が光るのが見えるはず + です. + + + + + + + <devicename>cy</devicename> ドライバのコンフィグ + + 原作: &a.alex;. + 6 June 1996. + + 訳: &a.jp.yuki;. + 6 September 1996. + + Cyclades 社のマルチポートカードは, + 他のマルチポートカードが 使う sio + の代わりに cyドライバを使います. + コンフィグレーションは非常に簡単で, + + + + cy デバイスをあなたの カーネルの + コンフィグレーションに足します. (注意. + あなたのirqやiomemの設定が違っているかもしれません) + + +device cy0 at isa? tty irq 10 iomem 0xd4000 iosiz 0x2000 vector cyintr + + + + 新しいカーネルの 再構成と + インストール をします. + + + + デバイスノード + を次(8ポートと仮定しています.) + のように打って作ります: + + &prompt.root; cd /dev +&prompt.root; for i in 0 1 2 3 4 5 6 7;do ./MAKEDEV cuac$i ttyc$i;done + + + + もし, 必要なら シリアルデバイス + (ttyd) とそっくりにコピーして dialupエントリを作り, + ttydの代わりに + ttycを使います. 例: + + +ttyc0 "/usr/libexec/getty std.38400" unknown on insecure +ttyc1 "/usr/libexec/getty std.38400" unknown on insecure +ttyc2 "/usr/libexec/getty std.38400" unknown on insecure +… +ttyc7 "/usr/libexec/getty std.38400" unknown on insecure + + + + 新しいカーネルで立ち上げます. + + + +
+ + + * パラレルカード + + + + + + * モデム + + + + + + * ネットワークカード + + + + + + * キーボード + + + + + + * マウス + + + + + + * その他 + + + +
+ + + 記憶装置 + + + ESDIハードディスクの使い方 + + 原作および Copyright © 1995, &a.wilko;. + 24 September 1995. + + 訳: &a.jp.ts; + 2 September 1996. + + ESDIとは Enhanced Small Device Interfaceの略語です. + この技術は, 馴染み 深い ST506や + ST412といったインタフェースに基づくものであり, 世界初の普 及型 + 5.25インチのウィンチェスタディスクを造ったSeagate + Technology社に よって最初に作られました. + + ESDIの Eは拡張 (Enhanced) を表しており, + 実際そのとおりです. まず, イン タフェースの速度は速く, 10 + ないし 15Mビット/秒であり, ST412インタフェー + スに接続したドライブの 5Mビット/秒よりも高速です. また, + 上位レベルのコ マンドがいくつか追加されて, + オペレーティングシステムレベルのドライバ作 成者にとって, + ESDIインタフェースはある程度インテリジェントなものとなり + ました. ただし SCSIほどにインテリジェントではありません. + ESDIは ANSIが 標準化をおこなっています. + + トラックごとのセクタ数を増やすことで, + ESDIドライブの記憶容量は引き上げ られました. 通常, + トラックあたり 35セクタですが, 今までに筆者がみたド + ライブの中で大容量のものは, トラックあたり + 54セクタもありました. + + ESDIは IDEや + SCSIといったインタフェースの普及によって消えつつあります が, + 無料あるいは在庫処分の 格安なドライブが入手可能であることを + 考えると, 少ない (もしくは現状の) + 予算で縛られたシステムにとって, ESDIドライブは + 理想的です. + + + ESDIのコンセプト + + + 物理的な接続 + + ESDIインタフェースでは, + ドライブごとに2つのケーブルを接続します. 第 1 + のケーブルは34ピンのフラットケーブルエッジコネクタで, + コントローラとド ライブ間のコマンドおよびステータスの + 両信号のやりとりのためのものです. コマンド用ケーブルは, + すべての ESDIドライブをデイジーチェーンで結び ますから, + すべてのドライブを接続したバスを構成することに + なります. + + 第 2 のケーブルは 20 ピンのフラットケーブル + エッジコネクタで, ドライブへの データ入出力に使います. + このケーブルは放射状に接続しますから, ドライブ + ごとにコントローラへの専用接続を持つことに + なるわけです. + + 筆者の経験によれば, PC向け ESDI コントローラには, + コントローラあたり最 大 2 + 台までのデバイス接続が可能という制限がありました. これは, + ドライ ブのアドレス割り当てのために, + 単一ビットだけを用意したという WD1003 か + ら持ち越された互換 (?) 機能なのだと思われます. + + + + デバイスのアドレス指定 + + 1本のコマンドケーブルには最大で 7つのデバイスと + 1つのコントローラを接 続することができます. + どのドライブをコントローラがアドレスしているのか + を個別に認識できるようにするために, ESDIデバイスは, + デバイスアドレスを + 設定するためのジャンパかスイッチを備えています. + + PC向けコントローラでは, + 最初のドライブにはアドレス0を設定し, 第2番目の + ディスクへはアドレス1を設定します. + いつも留意すべきことは, + ディスクごとに固有のアドレスを必ず設定するということです! + つまり, コン トローラあたり最大2台のドライブというような + PC向けのものでは, 第1 ドラ イブは第0番ドライブで, + 第2ドライブは第1番ドライブだということです. + + + + ターミネート処理 (termination) + + デイジーチェーン接続用コマンドケーブル + (34ピンのケーブルであることを覚 えていますか? ) では, + 最後のチェーン接続ドライブでターミネートしなけれ + ばなりません. このために, + ESDIドライブにはターミネート用抵抗ネットワー + クが付属しており, + ターミネートする必要がないときにはその抵抗をドライブ + から外したり, またはジャンパで無効 (disable) + にすることができるようになっ ています. + + したがって, ひとつのドライブ, + すなわちコマンドケーブルの最終端に位置す + るドライブだけが, + そのターミネート用抵抗を有効 (installまたは enable) + にすることができます. + コントローラは自動的にコマンドケーブルのもう一方 + の端のターミネート用抵抗を有効にします. + ご注意いただきたいのは, コント + ローラは必ずコマンドケーブルのいずれかの + 端に位置しなければならず, けっ + して途中に位置するようにしては + いけない ということです. + + + + + ESDIディスクの FreeBSDでの使い方 + + ESDI を初めて動かすようにすることが, + どうしてこうも大変なことなのでしょ うか ? + + ESDIディスクを FreeBSD + で動かそうと試みた人たちが激烈なイライラを募らせ + たことは知られています. 今までまったく + ESDIを知らない場合には, 複数の 要因の組み合わせが悪く働いて, + ESDIへの理解を妨げることになるかもしれま せん. + + このことは, ESDIと + FreeBSDの組み合わせは選んではいけないという俗説も生 + み出しました. 以下の節において, 落し穴のすべてとその解決策を + 述べてみようと思います. + + + ESDI速度の違い + + すでに簡単に紹介したように, + ESDIは2種類の速度を持っています. 旧式のド + ライブとコントローラは 10Mビット/秒のデータ転送速度ですが, + 新しいもの では 15Mビット/秒が利用できます. + + 仮に 10Mビット/秒のコントローラへ + 15Mビット/秒のドライブを接続したよ + うな場合に問題が生じることを予想することは簡単です. + したがって必ず, コ ントローラ および + ドライブのマニュアルを参照して, それぞれの 転送速度が + 一致しているかどうかを調べるようにしてください. + + + + トラックについて + + 主流の ESDIドライブは, + トラックあたり34ないし36個のセクタを持ちます. + しかし大部分の (古い) + コントローラは36個以上のセクタを扱うことができま + せん. + + 新しい大容量のドライブでは, + トラックごとにさらに多くの数のセクタを持つ ことができます. + たとえば筆者の 670MBのドライブは, トラックあたり 54セ + クタも持たせることができます. + + 筆者のコントローラは 54 + セクタ数をサポートしていませんでしたが, トラック あたり 35 + セクタという設定で, 問題なく動作しました. しかし, + これが意味す + るのは大量のディスク容量を失うということです. + + もう一度, + 詳しい情報についてハードウェアのドキュメントを + 調べてください. + この例のような仕様からはずれた設定をしたときには, + うまく動くかもしれま せんが, 動かないこともあります. + そのようなときには, 別のより多くの機能 + をもつコントローラで試してみるようにしてください. + + + + ハードセクタとソフトセクタ + + 多くの ESDIドライブでは, + ハードセクタまたはソフトセクタによる処理を, + ジャンパ設定で指定することができます. ハードセクタとは, + 新しいセクタの 開始位置において, + ESDIドライブにセクタパルス (sector pulse) を発生させ + ることです. コントローラはこのパルスを利用して, + 書き込みや読み取りのタ イミングを指示します. + + ハードセクタではセクタのサイズを選ぶことができます + (通常はフォーマット 後セクタあたり256, 512, + および1024バイト). FreeBSDは512バイトのセクタ + サイズを使います. トラックあたりのセクタ数は, + 同じように選択に幅があり ますが, + フォーマット後のセクタのバイト数はすべて同じです. + セクタごとの 未フォーマット + のバイト数は, コントローラがどの程度の調整用の + バイト数を必要とするかによって異なります. + トラックあたりのセクタ数を多 くすれば記憶容量は増えますが, + もしドライブから与えられるバイト数よりも + 多くのものをコントローラが必要とするのであれば, + 問題を生じることがあり ます. + + ソフトセクタでは, + コントローラ自身が読み書きの始まりと終りの位置を決め ます. + なお, ESDI (筆者が知り得たものすべて) では, + ハードセクタがデフォ ルトのようです. + ソフトセクタを試みる必要性は感じたことがありません. + + 通常, FreeBSDをインストールする以前に, + まずセクタ処理の設定を試される ことをおすすめします. + というのも, セクタ処理の設定を変えるたびに, 物理 + フォーマット (low-level format) + をしなければならないからです. + + + + 物理フォーマット処理 + + ESDIドライブは, 使い始める前に, + 物理フォーマットをおこなう必要があります. + もしトラックあたりのセクタ数を変えたり, + ドライブの物理的な設置方法 (水 平や垂直方向) + を変えたときには, ふたたびフォーマットする必要があります + から, よく検討した後でフォーマットしてください. + フォーマット処理の所要 時間を短く予想してはいけません. + 大容量のディスクでは数時間を要します. + + 物理フォーマットが終わったならば, サーフィススキャン + (surface scan) を おこない, + バッドセクタの検出とフラグの処理をします. + ほとんどのディスクには, + メーカが作成したバッドブロックリストを + 記録した用紙またはステッカーが付 いています. さらに, + ほとんどのディスク内にもバッドブロックリストが記録 + されています. + メーカが作成したリストを利用するようにしてください. この + 時点で不良部分をマップし直す方が, + FreeBSDのインストール後におこなうよりも, + はるかに簡単です. + + 物理フォーマットプログラムのなかでも, + トラックの中にひとつでもバッドセ クタがあれば, + 同じトラック内の残りのすべてのセクタを不良とするようなプ + ログラムがありますから, + そのようなものは利用しないようにしてください. + ディスクスペースの浪費だけでなく, より重大な + bad144と関連した悲劇の原 因にもなるからです + (bad144の節を参照のこと). + + + + トランスレーション + + トランスレーションが, + ESDIだけに限定された問題ではないにもかかわらず, + 重大な困難になることがあります. + トランスレーションにはいくつかの側面が あります. + 多くに共通なものは, IBM + PC/ATのオリジナルの設計に起因するディ + スクジオメトリに関する制限を, + うまく回避するような調整を試みるものです (IBM に感謝 ! + ). + + まずはじめに, 1024シリンダに関する (悪) + 名高い制限があります. すなわ ち, + ブート可能なシステムについて, システム関連ファイルは + (オペレーティ ングシステムがどのようなものであっても) , + ディスクの先頭部分の 1024シ リンダ内になければいけない, + という制限です. シリンダ番号を表すためには + 10ビットしか与えられていません. セクタの総数については, + 上限は 64 (0か ら 63) です. この1024シリンダの制限を, + 16ヘッドの制限 (これも ATの仕様 による) と組み合わせると, + かなり限定されたディスク容量しか利用できませ ん. + + この難点を解消するために, PC 向け + ESDIコントローラのメーカは, 自社のコ ントローラボードへ + BIOS PROM拡張を施しました. この BIOS拡張の内容は, + ブート時のディスクI/Oを (OSによっては + すべて のディスクI/Oも) , + トランスレーションを用いておこなうというものです. + すなわち, 大容量のディ スクを, あたかも 32 + ヘッドかつトラックあたり 64 セクタであるようなデバイス + として OSへ知らせるのです. この結果, 総シリンダー数は + 1024よりも少なく なりますから, + 上記の難点などなかったものとして大容量ディスクを使うこと + ができるようになります. なお, 注目いただきたいことは, + FreeBSDカーネル の起動以降, FreeBSDはこの + BIOS拡張機能を使わないということです. 詳しく + は後ほどご説明いたします. + + トランスレーションの第 2 の存在理由は, + 多くの旧いシステムBIOSが, トラッ クあたり 17 + セクタのドライブだけしか扱えない (ST412 という古い仕様) + から, というものです. 比較的新しい BIOSは通常, + 自由な値を設定できるドライブ タイプ + (多くの場合ドライブタイプ47) を持っています. + + + この文書を読み終えられた後で, + どのようにトランスレーションを利用す るにせよ, + ぜひご留意いただきたいことがあります. もし複数の + OSをひとつ のディスクにインストールするときには, + 必ず同じトランスレーションを使わ なければなりません. + + + + トランスレーションに関して, + 筆者が使用したコントローラは, ひとつのドラ + イブを複数のパーティションに論理的に + 分けることができる機能を BIOS のオ + プションとして持っていました + (このような製品はいくつかあると思われる). しかし, + ひとつのドライブにはひとつのパーティションに限定しました. + なぜ なら, このコントローラはパーティション情報を + ディスクへ書き出すからです. つまり, 電源を入れると, + コントローラはこの情報を読み取り, OSに対してディ + スクから読みとった情報に基づくデバイスとして + 知らせるからです. + + + + 代替セクタ処理 + + 多くの ESDI コントローラはバッドセクタを + 取り替える機能を備えています. + ディスクの物理フォーマット処理の途中もしくは終了時に, + バッドセクタであ ることを記録して, + 代わりのセクタを壊れたセクタの位置へ (論理的に) 置き + ます. + + 通常この置き換え処理は, トラック内の N-1 + 個のセクタを実際のデータ記録に 使い, + 第N番目のセクタだけを代替セクタとすることで実現します. + ここでNと いう値はトラック内の物理的セクタの総数です. + このアイデアが生まれた背景 は, + オペレーティングシステムが壊れたセクタを持たない 「完全」 + なディスク を想定している, というものです. しかし + FreeBSDではこのアイデアを使うこ とはできません. + + 理由は, 使用不可 (bad) から + 使用可能 への変換をおこなう のが + ESDIコントローラ上の BIOSだからなのです. FreeBSDは, 真の + 32ビット のオペレーティングシステムであるために, + ブート後には BIOSを使いません. 代わりに + FreeBSDが使うのは, + ハードウェアと直接「対話」するデバイスドラ + イバというものです. + + 結論: + 代替セクタ処理やバッドブロックマッピングなど, + コントローラ・ メーカがなんと呼ぶかは判りませんが, + それらに似た機能を FreeBSDのディス + クへは使わないでください. + + + + バッドブロックの取り扱い + + 前節から残された問題があります. すなわち, + コントローラによるバッドブロッ + ク処理は利用できない状況であるにもかかわらず, + FreeBSDのファイルシステ + ムが想定しているのはあくまで完全無欠なディスクである, + という問題で す. これを解消するために, FreeBSDは + bad144 というツールを採用 しています. + この bad144 (この名前は + DEC社の標準となったバッドブロック 処理に由来している) は, + FreeBSDのスライスごとにバッドブロックを調べま す. + バッドブロックを見つけ出すと, bad144 + は傷ついたブロック番号によるテー ブルを + FreeBSDスライスの末尾へ書き込みます. + + ディスクが動作し始めると, + ディスクから読みとられたテーブルを基に, ディ + スクアクセスを調べます. この bad144 + リストに記録されたブロック番号への 要求が起こると, + 代わりのブロック (同じく FreeBSDスライスの末尾に位置す る) + を使います. このように, bad144 + による置換手続きによって 「完全」 なディ スクを FreeBSD + ファイルシステムへ提供しているのです. + + bad144 + の使用により陥るかもしれない落し穴があります. まず, + ひとつのス ライスには 126 + 個以上のバッドセクタを持てません. もしドライブに 126 + 個以上 のバッドセクタがあったときには, 複数の FreeBSD + のスライスに分けて, 各ス ライスのバッドセクタが 126 + 個以下となるようにする必要があります. くれぐ れも, + ひとつのトラック内にたったひとつの欠陥セクタが + 見つかっただけで, そのトラック内セクタ + すべて + を傷ついたものとして記録するよう + な物理フォーマットプログラムを使わないようにしてください. + 簡単にお解り いただけると思いますが, + このような物理フォーマットをおこなえば, 126個の制 + 限は短時間で達成してしまいます. + + 次に, もしスライスが root + ファイルシステムを含んでいるときには, 1024シ + リンダ以内という BIOSの制限を守っていなければなりません. + ブート処理の ときですから, bad144 リストは BIOS + を使って読み取りますので, このリスト が 1024 + シリンダ限界以内に位置していなければ読みとれません. + + + この制限は root + ファイルシステム だけ + が1024シリンダ限界以内にあれば十分ということではなく, + rootシステムを含 んだ スライス + 全体が1024シリンダ限界以内におさまっている必要 + があります. + + + + + カーネルのコンフィグレーション + + ESDIディスクを扱うドライバは, IDEや ST412 + MFMディスクなどと同じ wd ドライバです. + この wd ドライバは, すべての WD1003 + 互換インタフェースにも利用できるはずです. + + 大部分のハードウェアは, ジャンパの設定によって, + ふたつの I/Oアドレス範 囲と IRQ 値のうちから, + それぞれひとつを選ぶことができます. したがって, wd + タイプのふたつのコントローラを + ひとつのシステムで使うことができます. + + もし設定しようとしているハードウェアが + 標準以外の割り当てをサポートして いれば, + 適切な設定情報をカーネルのコンフィグレーションファイルに + 記述す ることで, この非標準割り当てを利用できます. + 次にカーネルのコンフィグレー ションファイルの例を示します + (このファイルがあるディレクトリは + /sys/i386/conf である). + + +# First WD compatible controller +controller wdc0 at isa? port "IO_WD1" bio irq 14 vector wdintr +disk wd0 at wdc0 drive 0 +disk wd1 at wdc0 drive 1 + +# Second WD compatible controller +controller wdc1 at isa? port "IO_WD2" bio irq 15 vector wdintr +disk wd2 at wdc1 drive 0 +disk wd3 at wdc1 drive 1 + + + + + ESDIハードウェアの例 + + + Adaptec 2320コントローラ + + 筆者は, ACB-2320でコントロールされた ESDIディスクへ, + FreeBSDをインストー ルすることができました. なお, + このディスクには他のオペレーティングシス + テムをインストールしていません. + + インストールするために, まず, + NEFMT.EXE (www.adaptec.com から + ftp可能) + でディスクを物理フォーマットし, かつトラックを代替セ + クタとともにフォーマットするかどうかの設問に + NOと答えました. また ACB-2320の + BIOSは使わないように設定しました. そしてシステム + BIOSがブー トできるように, システム + BIOSの自由に設定可能 + オプションを使いまし た. + + 実は, NEFMT.EXEを使う以前に, まず + ACB-2320 の BIOSに組み込まれているフォー + マットプログラムでディスクをフォーマットしてみましたが, + 使えないことが 判りました. なぜなら, + 代替セクタの処理をおこなわないようにするオプションが + 用意されていないからです. + 代替セクタ処理をおこなうようにすると, FreeBSDの + インストール作業は + bad144の実行の段階で失敗しました. + + もし ACB-232xy + をお持ちであれば, そのバージョン番号に注意してください. + 文字 x には + 02 が入りまして, + ボード上にフロッピーコントローラがあるかど + うかを見分けることができます. + + + 文字 yはさらに興味深いもので, + ブランクか, A-8か, または + Dのいずれかで す. ブランクは, + 単純な10Mビット/秒のコントローラであることを表します. + A-8は, 15Mビット/秒のコントローラで, + かつ 52セクタ/トラックをサポート + しているものであることを表します. Dは, + 15Mビット/秒のコントローラで, かつ 36セクタ/トラック以上 + (52セクタも可能か?) のドライブをサポートし + ているものであることを表します. + + このコントローラのすべてのバージョンはインターリーブ比 + 1:1に対応してい るはずです. FreeBSDは充分高速なので, ぜひ + 1:1と指定してください. + + + + Western Digital WD1007コントローラ + + 筆者は, WD1007でコントロールされた ESDIディスクへ, + FreeBSDをインストー ルすることができました. 正確には + WD1007-WA2というコントローラでした. + これ以外の複数のバージョンも WD1007にあります. + + 利用できるようにするために, + セクタトランスレーションとWD1007の BIOSと + を使わないように設定しました. この設定の意味は, + BIOSに組み込まれた物理 + フォーマットプログラムを使えないようにしたということです. + 代わりに, www.wdc.comから + WDFMT.EXEを入手して, + ディスクをフォーマットし ました. 以後, + 順調に動いています. + + + + Ultrastor U14Fコントローラ + + ネットに流れたいくつかの報告によれば, Ultrastorの + ESDIボードも FreeBSD で動作するようです. + 実際の設定についての詳しい情報はありません. + + + + + 追加資料 + + 本格的に ESDIのプログラミングを計画している方は, + 次の公式規格仕様書を 入手なさることをおすすめします. + + 最新の ANSI X3T10 委員会の文書は次のものです: + + Enhanced Small Device Interface (ESDI) + [X3.170-1990/X3.170a-1991] [X3T10/792D Rev 11] + + USENETのニュースグループ comp.periphs は, + 詳しい情報を得ることができる注目すべきもので す. + + World Wide Web (WWW) もまた便利な情報源です. Adaptec社の + ESDIコントロー ラについては http://www.adaptec.com/ を参照ください. Western Digital 社のコントローラについては http://www.wdc.com/ を参照ください. + + + + 感謝 + + Andrew Gordon氏より, テスト用の Adaptec + 2320コントローラと ESDIディス + クを送っていただきました. + + + + + SCSIとは? + + 原作:&a.wilko;. + July 6, 1996. + + 訳: &a.jp.yoshiaki;. + 4 November 1996. + + SCSI は Small Computer Systems Interface + (小規模コンピュータシ ステムインタフェース) + の頭文字をとったものです. + これはANSI標準でコンピュータ業界においては最もよく使われるI/O + バスの一つになっています. SCSIはシュガート社 + (ミニフロッピーディ スクを世界で最初に販売しました) の開発した + SASI (Shugart Associates Standard Interface) + バスが元になって規格化されました. + + その後の業界の努力により, + 異なるベンダのデバイスが混在して使え + るようにより厳密な規格へと規格化されました.この結果が ANSIの + SCSI-1規格として認可されました. SCSI-1の仕様は (1985年ごろ + に規格化されました 訳注: SCSI-1の最終案決定は1985年, + ANSIの標準 規格としての認可は1986年です) + すでに現在では時代遅れです. 現在の標準は SCSI-2 (さらに詳しい情報 + を参照してください) で, SCSI-3へ移行していくでしょう. + + 物理的な相互接続の規格に加えて, + SCSIではディスクドライブに不可欠な 論理的な規格 + (コマンドセット) も定義しています. + この規格は標準コマンドセット (CCS : Common Command Set) + と呼ばれ, ANSIのSCSI-1とほぼ同時期に制定されました. + SCSI-2には (改定された) CCSが規格の一部として組み込まれました. + コマンドはデバイスの 種類によって変わります. + 例えばスキャナでは Writeコマンドは意味が ありません. + + SCSIバス は多くの種類があるパラレルバスです. 最も古く, + 最も利用されているのが 8 bit 幅, シングルエンド (不平衡) 信号, + 50線の信号線のバスです. + (もしシングルエンドの意味が分からなくても気にするこ + とはありません. このドキュメントはまさにそのような人たちのため + のものです.) より新しい設計では 16 + bit幅で平衡信号のバスを使います. この場合, 転送速度は + 20Mbytes/second まで, ケーブルの長さは 25mまで可能です. + SCSI-2では追加のケーブルを使った最大32 bitのバス幅までが + 定義されています. 最近急速に増えているものに Ultra SCSI + (Fast-20とも呼ばれます) があります. また, SCSI-2には Ultra2 + (Fast-40ともいいます) というものも定義されています. + Fast-20は1秒間に2000万回の転送 (8bitバスで20Mbyte/sec), + Fast-40は1秒間に 4000万回の転送 (8bitバスで 40Mbytes/sec) + をおこないます. 最近売られているハードディスクの + ほとんどは不平衡信号の Ultra SCSI (8ビットまたは 16ビット) + です. + + + 訳注: ここでは電気的な用語としては平衡, 不平衡を用いて, + バスの名称としては基本的にはシングルエンド, + ディファレンシャルとしました. + + + もちろん SCSIバスにはデータ信号だけではなく, + 多くのコントロール信号線があります. + 複数のデバイスがバスを効率よく共有するための + 複雑なプロトコルも規格の一部です. + SCSI-2ではデータは常に独立したパリティ信号を + 使ってチェックされます. + SCSI-2以前ではパリティはオプションでした. + + SCSI-3ではさらに高速なバスタイプが導入され, + それと共にケーブルの線数を減らし, + より最大バス長を伸ばしたシリアルSCSIが導入されます. SSAや + Fiberchannelといった名前を聞いたことはありませんか? + シリアルバスは現在ではまだいずれの方式も普及していません + (特に一般的な FreeBSD環境では). + このためシリアルバスタイプについてはここでは + これ以上は触れません. + + 今までの記述から想像されるように + SCSIデバイスはインテリジェント です. これは SCSIの規格 + (この文書は2インチ以上の厚さがあります) + と切り離すことはできません. + このため例えばハードディスクでは特定のブロックをさすのに + ヘッド/シリンダ/セクタ + によって決めるのではなく単に必要なブロック番号を指定します. + 巧妙なキャッシュ動作や, + 不正ブロックの自動置き換えなどの機能はこの + 「インテリジェントデバイス」 + のアプローチによって可能になっています. + + SCSI バスでは任意のデバイスの組で通信することが可能です. + (訳注: 任意のデバイスがイニシエータになれるという意味です.) + デバイスの機能がそれを許すかどうかは また別の問題ですが, + 規格では 禁止されていません. + 信号の衝突を防ぐために2つのデバイスはバスを使う前に調停 + (arbitrate) をおこなう必要があります. + + SCSI の考え方として古い規格のデバイスと + 新しい規格のデバイスが + 同じバスの上で動くように規格を作っています. したがって, 古い + SCSI-1の デバイスは SCSI-2バスの上でも普通は動きます. 普通は, + とことわった理由は, + ある古いデバイスが新しいバスでも問題ない程に (古い) + 規格に対して十分沿った実装になっているかどうかは絶対的に + 保証はできないということです. + 一般に最近のデバイスはよりうまく動作します. + その理由は規格化がより厳密になり, + またメーカーがデバイスの製造に + おいてよりきちんと規格に従うようになってきているからです. + + + 一般的に言って, 単一のバス上で動かすデバイスは SCSI-2 + あるいはより新しいデバイスであれば + うまく動く可能性は高いと言えます. これは新しい + 2GBのディスクを手に入れたとしたら + 古いデバイスを捨ててしまわなければならないという + 意味ではありません. 私のシステムでは SCSI-1以前のディスク, + SCSI-2の QICテープユニット, + SCSI-1のヘリカルスキャンテープユニット (訳注: + VTRのような回転ヘッドを 持ったテープ装置のことです. + DATテープドライブもその一つです), 2台の SCSI-1 + ディスクが一緒に問題なく動いています. + ただし効率の点から古いデバイスと新しい (= 速い) + デバイスを分けたいかもしれません. (訳注: 古いデバイスの中には + disconnectをサポートしないために一連のコマンド実行中に + SCSIバスを占有してしまうデバイスもあります.) + + + SCSIの構成要素 + + 先に述べたように, SCSIデバイスはインテリジェントです. + つまりハードウェア細部にからむ知識は SCSIデバイス自身に + 持たせてしまおうという考え方です. この考え方では + SCSIデバイスはそれ自身のハードウェアの詳細を知っています. + この場合, ホストシステムはハードディスクがいくつのヘッド + を持ち, テープデバイスがいくつのトラックを持つかというような + ことを知る必要がありません. もしあなたが知りたいのであれば, + 規格で定義されているコマンドを + 使ってデバイスにハードウェアの詳細について + 質問することができます. + + インテリジェントデバイスの利点は明らかです. + ホストのデバイスドライバはより一般的に書くことができ, + 新しいデバイスを導入する場合でも変更の必要がありません. + + + + 接続でおこなうべきこと, してはならないこと + + ケーブルの接続には鉄則があります. + よい部品を使うことです. バスの速度を上げることができ, + 多くの災難を防ぐことができます. + + ですから, 金メッキのコネクタ, シールドケーブル, + 固定器具付きの頑丈なコネクタカバーなどを + 選ぶのは正しいことです. 2つ目の鉄則は, + ケーブルを必要以上に長くしないことです. + 私は以前にあるマシンでトラブルの 原因を探すのに + 3日間悩んでいましたが, SCSIバスを 1m 短く + することで問題を解決したことがあります. もちろん, + 元のバスの長さでもSCSIの仕様はきちんと + 満たしていたのですが. + + + + + SCSI バスのタイプ + + 電気的に互換性のない 2種類のバスのタイプがあります. + シングルエンドとディファレンシャルのバスです. これは SCSI + デバイスとコントローラは同一のバス上に混在することのできない + 2つのグループにに大きく分けられるということを意味しています. + しかし, 特別なハードウェアを使えばシングルエンドバスを + ディファレンシャルバスに (その逆も) 変換することはできます. + これらのバスのタイプの違いは次のセクションで説明します. + + + SCSI関連のドキュメントでは + 異なるタイプのバスを一種の用語とし て略語で表します. + これを次の表に示します. + + + + FWD: Fast Wide Differential (高速 ワイド 平衡) + + + + FND: Fast Narrow Differential (高速 ナロー 平衡) + + + + SE: Single Ended (不平衡) + + + + FN: Fast Narrow (高速 ナロー) + + + + etc. + + + + 少し想像力を働かせればどのような + 意味であるかはわかるでしょう. + + ワイド (Wide) はいくらか曖昧で, 16 または 32 + bitのバスを示します. 私の知る限りでは, 32 bit + のインタフェースは (まだ) 使われていませんので Wide は通常 + 16 bitを意味します. + + 高速 (Fast) はバスのタイミングがいくつかの点で異なり, + ナロー (8 bit) バスでは 低速 (slow) SCSIバスの 5 Mbytes/sec + に対して 10 Mbytes/sec の能力があります. 前にも述べたように, + 20Mbytes/sec や 40Mbytes/sec + のバス速度を持つものも現れてきています (Fast-20 == Ultra + SCSI で Fast-40 == Ultra2 SCSI です). + + + データ線の上位 (> 8) + はデータの転送とデバイスの指定だけに利用されています. + コマンドの送出とステータスメッセージ等は下位側の 8 + bitのデータ線のみを使います. この規格により + ナローデバイスはワイドバス上でも 動作する事ができます. + 利用できるバスの幅はデバイス間で調停 (ネゴシエーション) + されます. デバイスの + IDについてはワイドとナローが混在する時には + 気をつけなければなりません. + + + + シングルエンドバス (不平衡バス) + + シングルエンド SCSIバスは 5Vと 0Vの電圧 + (つまりTTLレベルです) を信号として使い, + それらは共通のグラウンド (GND) レベルを基準 にします. + シングルエンド SCSI 8 bitバスは約25本のグラウンド線 + を持ち, すべてのデバイスを「直線状」に接続します. + 基準ではシングルエンドバスは最大の長さは 6mです. Fast-SCSI + デバイスを使う場合には, この最大長さは 3mに短くなります. + Fast-SCSIでは 5Mbytes/sec ではなく 10Mbytes/sec の転送速度 + が可能になります. + + Fast-20 (Ultra SCSI) と + Fast-40ではそれぞれ1秒間に2000万 (20M) ないしは 4000万 + (40M) 回の転送ができます. したがって, Fast-20では + 8bitバスで 20Mbytes/sec, 16bitバスで 40Mbytes/secとなりま + す. Fast-20ではバスの最大の長さは 1.5m, Fast-40では + 0.75mに なります. Fast-20は限界を相当に広げるものなので + SCSIバス + に雑音が多い場合はその影響を即座に受けます. + + + バス上のいずれかのデバイスが 「高速の」 + 転送を利用する場合は + Fastバスの長さの制限を受けます. + + + 最近の Fast-SCSI デバイスではバスの長さが実際の問題に + なりつつあるのが明らかになっています. + これがディファレンシャル + SCSIバスがSCSI-2の規格に導入された理由です. + + コネクタのピン配置やコネクタの種類については + SCSI-2の規格 (さらに詳しい情報) + を参照してください.コネクタ等について + 詳細なリストがあります. + + 非標準のケーブルを使うデバイスに気をつけてください. + 例えば Apple (の Macintosh は) 25pin の D-type のコネクタ + (シリアルポートやパラレルプリンタに使われているコネクタ -- + 訳注: 日本では一般的に D-sub 25pinと言っています) + を使っています. 公式なSCSIバスでは50 pin + が必要である事からこのコネクタでは + 「独創的なピン配置」が必要な事が想像できるでしょう. ここ + でおこなわれているようにグラウンド線の数を + 減らすことはよい考え ではありません. SCSIの規格通りの 50 + pinの接続の方が望まし いです. Fast-20 や 40 + でこのようなケーブルを使おうなんて + 考えてはいけません. + + + + + ディファレンシャル (平衡) バス + + ディファレンシャル SCSIバスは最大長が 25m です. + シングルエンド Fast-SCSIバスの 3mとはまったく違います. + 平衡信号の背景と なっている考え方は, + それぞれのバスの信号はそれぞれ + 独立したリターン信号線を持つというものです. つまり, + それぞれの信号は (できればより線の) ペアの信号線で + 伝えられます. + これら2つの信号線の差分の電圧で信号が「真」(assert) で + あるか「偽」(de-assert) であるか判定されます. + かなりの電圧 + がグラウンド電位と信号線ペアの間にかかったとしても影響があ + りません (だからといって 10kVの電圧をかけてみたりしないで + ください.. ). + + なぜ平衡信号が よいのかについての説明は + このドキュメントの 範囲を越えています. + 電気的に平衡信号はノイズマージンの点で + 非常に優れたものとして利用されているということを + 受け入れて ください. + ディファレンシャルバスは普通は外部接続に 利用されています. + これは低コストのシングルエンドバスが筐体内の短 + い距離のバスでは非常に多く利用されているからです. + + FreeBSDを使うにおいて, FreeBSD でサポートされている + デバイスドライバがあるのであれば + ディファレンシャルバスの利用で 問題になることは + 何もありません. 例をあげれば, アダプテックの + AHA1740はシングルエンドで, + AHA1744はディファレンシャルです. + 双方のソフトウェアインタフェースはまったく同一です. + + + + ターミネータ + + SCSIにおける用語でのターミネータとはインピーダンスの + マッチングを正確におこなうための抵抗ネットワークです. + インピーダンス マッチングは反射やリンギングを抑え, + バスの信号をきれいにす る重要なものです. たとえば, + あまり状態のよくない回線で長距 + 離の電話をかけた時にあなたは反射をどんなものか + 感じるかもしれません. 20Mbytes/sec で信号の伝わる + SCSIバスでは信号のエコーはあ りがたくありません. + + 訳注: + 電気信号のパルスは進行波としての性格を持っています. + このため, 一般的には信号線の両端で反射が起きます. + 3mのバスの端からパルスを入れた場合, + 反対の端からの反射波は 20ns後 - 本当は電線中の信号の伝達は + 光速よりも少し遅くなるのでもう少し時間がかかりますが - + に返ってきます. 低速のバスの場合タイミング的な余裕があり, + 反射を繰り返しているうちに反射波は減衰してしまうのですが + 高速のバスの場合は, 反射波の影響が落ち着く前に信号の + 読み込みなどを行うために波形の乱れが誤動作の原因に + なる場合があります. + このためターミネータを使用して反射波の発生をできるだけ + おさえます. + + ターミネータはいろいろな - + 洗練されたものもそうでないものも - 実現方法があります. + もちろん, 内蔵のものと外部という 区別もあります. 多くの + SCSIデバイスにはいくつかの ソケットがあり, + その中には抵抗ネットワーク (集合抵抗) が + 入っているものもあるかもしれません (いや, おそらく + 間違いなくあるでしょう). ターミネータを + デバイスから外す時は大事にしまっておいてください. SCSIの接 + 続の変更をしようと思った時に必要になるかもしれません. ま + た, + それらしい抵抗ネットワークが見つからないこともあります. + この場合, SCSIデバイスは内蔵ターミネータの有効と無効を切替 + えるジャンパがあります. フラットケーブルに取り付ける特別 + なターミネータもあります. 他には外部コネクタのような形をし + たものやケーブルのないコネクタヘッドだけのものもあります. + いろいろと見られるように多くの選択があります. + + + どのような場合に単純な抵抗 (パッシブ) ターミネータから + アクティブターミネータへ切替えるかという問題があります. + アクティブターミネータはいくらか精巧な回路が信号をより + きれいにするために入っています. + 一般的に受け入れられている意見としては, 長いバスを使ったり + 高速なデバイスを使う場合はアクティブターミネータの + 有効性は増加すると言えます. SCSI バスですでに問題が起きて + いるならアクティブターミネータを試すことを考えていいで + しょう. まず借りることができないか探してみてください. + アクティブターミネータは非常に高価だそうですから. + + ディファレンシャルと + シングルエンドバスのターミネータは互換 + 性がないということを覚えておいてください. これらの2つの種 + 類を + 混在させることはできません. + + OK, ではあなたは + ターミネータをどこに入れればいいでしょうか? これは + SCSIで最も多く誤解されているところです. しかし, これ + は極めて単純なことです.. ここでのルールは + SCSIバスの線 一本一本は必ず両端に + 2個のターミネータを入れる ということです. + つまり 2個であって1個でも3個でもありません. + このルールを受け入れてしたがってください. そうすれば終りの + ない苦しみから救われるでしょう. + なぜなら間違ったターミネーションは不可解なバグを引き起こす + 可能性が非常に高いからです. (ここの “可能性” + に注意; 一見動いているように見える + ことがあるのがやっかいです.) + + よく陥りやすい落し穴はマシンの内部 (フラット) + ケーブルと外部 + ケーブルがコントローラにつながっている場合です. よく見られ + るのはコントローラのターミネータを外すのを忘れることです. + ターミネータは最後の外部デバイスで必要で, コントローラ + には必要ありません! 一般的に, SCSIバスの接続の変更をする場 + 合はこのようなことに注意をしなければなりません. + + + ターミネータの位置は + 信号線ごとに決まることに注意して下さい. + ナローとワイドのケーブルを + 両方コントローラにつないでいる場 合には, + ケーブルの両端とともにコントローラ上ではバスの上位 + 8ビットをターミネートしないといけません. + + + 私自身は, + すべてのデバイスとコントローラのターミネータを外し + ています. 2個の外部ターミネータをセントロニクスタイプ + (訳注: 日本ではケーブルに対してこういう言い方は + あまりしないのでは ないでしょうか) + 外部ケーブルと内部フラットケーブルの + コネクタの両端に接続しています. + こうすることにより接続の変更はかなり簡単になります. + + 最近のデバイスは, + ICターミネータが使われることもあります. + コントロールピンにより無効 / 有効を設定できる 特別の IC + があります. + これは物理的にデバイスから外す必要がありません. + 新しいホストアダプタではセットアップツール等を使って + ソフトウェア的に設定をおこなう場合があります. + また, 中には端子に接続されたケーブルを検出して + ターミネータ を必要に応じて自動的に + 有効にするものもあります. いずれにしろ, マニュアルを見てく + ださい. + + + + ターミネータの電源 + + ここまでの章で議論したターミネータは + 正常に動作するためには 電源が必要です. + SCSIバス上にはこの目的のために利用される線があります. + だから特に気にする必要はないと思いますか? + + ところがそうではないのです. + それぞれのデバイスはデバイス上 + にあるターミネータソケットに電源を供給することはできます. + けれども外部ターミネータがある場合やSCSIバスにターミネータ + の電源を供給するデバイスのスイッチがオフになっているような + 場合にはトラブルが起きるかもしれません. + + イニシエータ (ここではバスの動作を開始-initiate-させる + デバイスを指します -- 訳注: + 簡単に言えばホスト側のアダプタですがSCSIの 規格によれば, + 例えばディスク側がコマンドを発行するような + システムがあってもかまわないことになっているので + こういう言い方をしています) は + ターミネータ電源を供給しなければなりません. + すべてのSCSIデバイスはターミネータの電源を供給することが + できます (必ずしも供給しなければならないというわけ + ではありません). + + + スイッチがオフになっているデバイスが + バス上に存在することを 許すために, + ターミネータの電源はダイオードを通して供給され + なければなりません. これはスイッチを切ったデバイスに電流 + が逆流することを防ぐためです. + + 最悪の事態を避けるために, + ターミネータの電源は普通はヒュー ズが入っています. + 当然ヒューズは飛ぶかもしれません. この + 場合でもバスが機能停止するとは限りません. 複数のデバイスが + ターミネータの電源を供給しているのであれば, ヒューズが一つ + 飛んでも全体の機能には影響しません. ただ一つの供給線の + ヒューズが飛んだのであれば確かに問題になるでしょう. + 外部ターミネータによっては LED でターミネータ電源 + が与えられていることを示すものもあります. + + 最新の設計ではある程度の時間がたつと 「リセット」され + 自動復帰するヒューズが使われることもあります. + + + + デバイス アドレッシング + + SCSIバスでは接続された異なるデバイスを区別して指定 + できなければなりません. + + これには SCSIではターゲットIDが使われます. + それぞれのデバイ スは特定のターゲットIDを持ちます. + デバイスの IDはジャンパや DIPスイッチなどで設定できます. + ブート時のメニューからIDを + 変更できるようになっているコントローラもあります. (また, + IDを 7から変えることができないコントローラもあります.) + より詳しい情報はデバイスのマニュアルを見てください. + + 複数のデバイスを使う場合は + IDの重複に気をつけてください. + 重複すると普通は混乱状態になります. 同じ IDを共有している + デバイスのうちの一つがI/Oリクエストに答えられたりすると + 非常にやっかいなことになります. + + 8 bitバスでは, 最大8台のターゲットまで可能です. + 最大8台で ある理由は, + バスの8本のデータ線がデバイスの選択に使われる からです. + ワイドなバスでは使えるデバイスの数は増えます + (通常は16になるわけです). + + + ナロー SCSI デバイスは 8 以上のターゲット ID + を持つデバイスとは 通信できないことに注意してください. + ですから, コントローラ + のターゲットIDを8以上にするのはあまりいい考えとは + いえません (CD-ROMが使えなくなったりします). + + + 同時にバス使用の要求が発生した場合, 最も + IDの大きいデバイス が優先されるという調停がおこなわれます. + このことは SCSIホストアダプタの + IDは通常7番が使われる理由でもあり ます. ただし, + ワイドバスでは下位8ビットが上位8ビットより優 + 先度が高いことに注意してください. つまり, ワイドSCSIのシス + テムではターゲットIDの優先度は高い順に [7 6 .. 1 0 15 14 + .. 9 8] となります. + (どうして下位8ビットの方が優先度が高いかは, + 一つ前の段落を読んで考えてみて下さい.) + + さらにサブユニットとして, 規格では ロジカルユニット, + 短縮形で LUNを持つことができます. + 一つのターゲットIDが複数の LUNを 持つことができます. + 例えば, テープチェンジャを持つテープ ドライブは LUN + 0をテープドライブ自身, LUN 1を テープチェンジャ + に与えることができます. このようにして, + ホストシステムはテープチェンジャの目的の + テープユニットの部分を指定することができます. + + + + バスの形状 + + SCSIバスは直線状です. つまり, Y接続, スター接続, + 円形, クモの巣状の接続などの直線以外の接続ではありません. + 初心者が + よくやる間違いとしてはワイドSCSIのコントローラの端子3つと + もにケーブルをつないでしまうというものがあります. (外部, + 内部ナロー, 内部ワイド.) + よほど運がよければこんなトポロジー + でもちゃんと動くように見えるかもしれませんが, えてしてこう + いうシステムは一番大切な時に使えなくなったりするものです + (これを“マーフィーの法則”といいます). + + 先に議論したターミネータの問題は直線状以外の場合では + より困難になるだろうということに注意してください. また, + 内部バス用の ケーブルの端子の数よりデバイスの + 数の方が少ない場合には, + 必ず両端の端子にはデバイスをつなぐようにしてください. + 内側の端子を使ってケーブルの端を余らせておくと, + ターミネータの効果が半減します. + + 電気的特性はそのノイズマージンや全体の信頼性において, + 直線状のバスのルールに強く依存しています. + + 直線状バスであるというルールに + したがってください! + + + + + FreeBSD で SCSIを使う + + トランスレーション, BIOS, そしてマジック... + + まず始める前に, + 電気的に問題のないバスであるか調べておいてく + ださい. + + SCSIディスクをPCでブートディスクとして使う場合に, PC + BIOSに 関する気まぐれについて知っておく必要があります. PC + BIOSは ハードディスクへの低レベル物理インタフェースを + 利用するように 実現されています. したがって, BIOSに + (セットアップツールやBIOSビルトイン セットアップを使って) + ディスクの物理パラメタを教えてやる 必要があります. + これはヘッドの数, シリンダの数, + トラックあたりのセクタなどがあり, + プリコンペンセーションや書き込み電流を 減少させるトラック, + などのあまりよく知られていないものもあります. + + SCSIディスクはこれらのことをユーザは + 気にする必要がないはず だと考えるかもしれません. しかし, + 不思議なことに (これらの項 目の) + セットアップはいまだにあるのです. システム BIOSはブート + 時にFreeBSDのカーネルを読み込むためにSCSIディスクに + /ヘッド/シリンダ/セクタ を指定する方法でアクセスするため, + パラメタを知る必要があるのです. + + AT/EISA/PCIバスなどにあり, ディスクに接続される + SCSIホストアダプタや SCSIコントローラは + それ自身のオンボードBIOSを持っています. + システムの起動時に, SCSI BIOSは + システムBIOSのハードディスクの + インタフェースルーチンを乗っ取ります. + システムBIOSをごまかすために + システムセットアップでは普通は `No hard disk' とします. + 簡単ですね? + + 訳注: BIOS で `No hard disk' という設定をおこなうのは + SCSI ドライブから直接起動させるためのテクニックです. + 現在のマザーボードでは SCSI ドライブから起動させるための + オプションを持つ BIOS を使用しているものもあります. また, + ブートセレクタを使って IDEドライブのブートブロックから + SCSIドライブ上の FreeBSDをブートすることもできます. + + SCSI BIOS はドライブの + トランスレーション と呼ばれる + 機能を持ちます. + これはPCがブートするために作られたドライブテー + ブルをごまかすものです. このトランスレーションは多くは + (すべての場合ではありません) + トラックあたり64あるいは32個のヘッドを + 持つ仮想的なドライブを使います. + シリンダの数を変更することで SCSI BIOS + は実際のドライブのサイズに適合させます. 総セクタ数 を 32 * + 64 / 2 で割った結果がメガバイト単位のドライブのサイズ + になります. 2で割っているのは, 通常 512バイトのサイズの + セクタを kByte 単位に変換するためです. + + ではこれですべてうまくいくのでしょうか. いいえ, + そういう訳で はありません. + ブート可能なハードディスクのシリンダ数は 1024よ + り多くすることはできないのです. + トランスレーションを使った 場合でもディスクの + 1GB以上の領域は見えません. ディスクの容量 + がどんどん増加していくにつれこれは問題になってきました. + + + 幸いにして, 単純な解決方法があります. + 単に別のトランスレーショ ンを使えばよいのです. 例えば, + 32個に代わり, 128個のヘッドを使います. ほとんどの場合, + 古いSCSIホストアダプタをアップグレードす + るための新しいバージョンの SCSI BIOS が用意されています. + 新しいアダプタではジャンパ やセットアップソフトによって + SCSI BIOSの使う + トランスレーションを選択できる物もあります. + + ここで非常に重要なことは, + ディスク上のすべての + オペレーティングシステムが + 同一のトランスレーションを使って + 正しいパーティションを得ることです. つまり + FreeBSDをインストールする時に, + ヘッド/シリンダなどについての + 質問にあなたのホストアダプタが + 使用しているトランスレートされた + 値を使わなくてはなりません. + + トランスレーションに関する失敗でよく見られるものは, + ブートしないシステムができたり, 他のパーティションを + 上書きしてしまうことです. すべてのシステムが見えるように + fdiskを使うべきです. + + あなたはデバイスについて + これとは食い違った話を聞いたことが あるかもしれません. + 古い FreeBSDのカーネルはブートする時に SCSI + ディスクのジオメトリ情報を報告していました. + 私のシステムの一つの例を示しましょう. + + aha0 targ 0 lun 0: <MICROP 1588-15MB1057404HSP4> + sd0: 636MB (1303250 total sec), 1632 cyl, 15 head, 53 sec, bytes/sec 512 + + 最近のカーネルは, 普通はこのような情報を報告しません. + たとえば, このようになっています. + + (bt0:0:0): "SEAGATE ST41651 7574" type 0 fixed SCSI 2 + sd0(bt0:0:0): Direct-Access 1350MB (2766300 512 byte sectors) + + なぜこのように変わったのでしょう? + + この情報は SCSIディスク自身から得られます. + 最近のディスクで はよくゾーンビット記録方式 (zone bit + recording) という 技術が使われています. + これはドライブの外側のシリンダは + 内側よりもスペースが広いのでトラックあたりのセクタ数を + 増やすことができるというアイディアです. この結果, + 外側のシリンダ上のトラックの容量は内側の + シリンダよりも大きくなり, + 全体ではより大きな容量となります. この場合, + ドライブのジオメトリについての報告は, + 最善のものかどうか疑わしく, + ほとんどの場合誤解を招くものであ ることがわかるでしょう. + ジオメトリを調べる場合, ほとんどの場合は BIOSの用い + ている値を与える方がよい結果となり, + BIOSがそのディスクに + ついてまったく関知しないのであれば + (例えばブートディスクで はないなら) + 都合のよい仮想のジオメトリを与えればいいでしょう. + + + + SCSI サブシステムの設計 + + FreeBSDでは階層的な SCSIサブシステムを用いています. + それぞれ 異なるコントローラカードの + デバイスドライバが書かれています. + このドライバはコントローラのハードウェアの + 詳細を知っています. ドライバは + SCSIサブシステムのより上位の階層のコマンドを受け取り, + ステータスを報告するインタフェースを持ちます. + + カードのドライバの最上位には, デバイスのクラスのための + いくつかの一般的なドライバがあります. 具体的にいうと, + テープドライブのためのドライバ (略号は: st), 磁気ディスク + (sd), CD-ROM (cd) などです. これらのソースコードは + /sys/scsiにあります. + マニュアルページ (man) のセクション 4 にはより詳しい内容が + あるので見てください. + + 多階層の設計は低レベルとより高位の + レベルを分離させることが できます. + 新たに他の種類のハードウェアのサポートを加えることを + より処理しやすい問題にします. + + + + カーネルコンフィグレーション + + あなたのハードウェア構成にしたがって, カーネルの + コンフィグファイルに ホストアダプタについて + 1行あるいは数行程度の記述をする 必要があります. これには + I/O アドレスや割り込みなどについての内容も 含みます. + あなたのアダプタのドライバについてのマニュアルページ + にはより多くの情報があるのでよく読んでください. + これとは別に /sys/i386/conf/LINT + にはカーネルコンフィグファイルについての 概要があります. + LINT + には一般的なものについては可能なすべての + オプションが含まれています. ただし, + LINT + では実際に動作するカーネルを作ることは + できません. + + 当然のことを言うようで恐縮ですが, + カーネルコンフィグファイルは実際のハードウェア構成を + 反映すべきです. そのように割り込みやI/Oアドレス等に + 合わせてカーネルコンフィグファイルを書か + なければなりません. + システムのブート時のメッセージは実際に + 見つけたハードウェアの設定を表示します. + + + ほとんどの EISA/PCI 用のドライバ (具体的には + ahb, + ahc, + ncr と + amdです) + はブート時にコントローラから直接パラメータ + を読みこみます. これらについては, 何も引数をつ + けずにただ controller ahc0 + のように書けば大丈夫で す. + + + 例として FreeBSD 2.2.5-Releaseのいくつかのコメント + ([]の中) をつけた LINT + カーネルコンフィグファイルを示 します. + + +# SCSI host adapters: `aha', `ahb', `aic', `bt', `nca' +# +# aha: Adaptec 154x +# ahb: Adaptec 174x +# ahc: Adaptec 274x/284x/294x +# aic: Adaptec 152x and sound cards using the Adaptec AIC-6360 (slow!) +# amd: AMD 53c974 based SCSI cards (e.g., Tekram DC-390 and 390T) +# bt: Most Buslogic controllers +# nca: ProAudioSpectrum cards using the NCR 5380 or Trantor T130 +# ncr: NCR/Symbios 53c810/815/825/875 etc based SCSI cards +# uha: UltraStore 14F and 34F +# sea: Seagate ST01/02 8 bit controller (slow!) +# wds: Western Digital WD7000 controller (no scatter/gather!). +# + +[ Adaptec AHA274x/284x/294x/394x などのコントローラ] +controller ahc0 + +[ NCR/Symbios 53c875 コントローラ] +controller ncr0 + +[Ultrastor アダプタ] +controller uha0 at isa? port "IO_UHA0" bio irq ? drq 5 vector uhaintr + +# Map SCSI buses to specific SCSI adapters +controller scbus0 at ahc0 +controller scbus2 at ncr0 +controller scbus1 at uha0 + +# The actual SCSI devices +disk sd0 at scbus0 target 0 unit 0 [SCSI ディスク 0 は scbus 0, LUN 0] +disk sd1 at scbus0 target 1 [unit を省略すると暗黙で LUN 0] +disk sd2 at scbus1 target 3 [uha0 上の SCSIディスク] +disk sd3 at scbus2 target 4 [ncr0 上の SCSIディスク] +tape st1 at scbus0 target 6 [SCSI テープ は ターゲット (ID)6] +device cd0 at scbus? [最初に見つけた CD-ROM, 固定にしない] + + 上の例では カーネルは ahc (Adaptec 274x) + コントローラをまず探し, その次に NCR/Symbios + のボードというように順番に探して 行きます. その下の行の + controller の記述ではデバイスの詳細 を記述して, + 対応するバスでターゲット ID と LUN が指定された + ものと一致する場合だけ + 認識するようにカーネルに 伝えています. + + 固定された (Wired down) デバイスは + “最初に”ユニット番号が 与えられるので, + “固定”されていないデバイスは同じ種類の + “固定”されたユニット + 番号の最も大きい番号の1つ上の番号から割り当てられます. + したがって, ターゲットID 2の SCSIテープを加えると, + ターゲットID 6 + のテープがユニット番号1に固定されているので, + それはst2に設定 されるでしょう. + + + ブート時に見つからなくても固定されたデバ + イスにはユニット番号が常に割り当てられます. + 固定のデバイスに 割り当てられたユニット番号は, + もしそのデバイスのスイッチが + ブート時に切られていてもそのデバイスに + リザーブされています. これは, + 電源を入れて接続した時のユニット番号が与えられます. + デバイスのユニット番号は SCSIバスのターゲットID とは + 何の関係もない + ことに注意してください. + + + 下の例は FreeBSD のバージョン 2.0.5 以前の + カーネルコンフィ グファイルです. + 最初の例との違いはデバイスの“固定 (wired + down)” がないことです. “固定” + によりどのSCSIターゲットをどの + デバイスに割り当てるかを記述できるようになりました. + + 下のコンフィグファイルにより + 構築されたカーネルでは最初に見つ けた SCSIディスクが + sd0になり, 次に見つけたディスクが sd1に, + という具合に割り当てられます. + もしディスクの削除や追加をおこなう と, + 他の同じタイプのデバイス (この場合はディスク) のすべてが + 「移動して」しまうかもしれません. これによりそのたびに + /etc/fstab + を変更する必要があります. + + 古いスタイルでも動きますが, + 新しいスタイルを使うことが強 く + 推奨されています. これにより SCSIバスのハードウェアを + どのように変更した場合でもトラブルを避けることができます. + ですから, 2.0.5.R以前の + FreeBSDからアップグレードした後に古い + 信頼できるコンフィグファイルを再利用する時はこの部分を + チェックして直してください. + + +[Adaptec 174x用のドライバ] +controller ahb0 at isa? bio irq 11 vector ahbintr +[Adaptec 154x用のドライバ ] +controller aha0 at isa? port "IO_AHA0" bio irq 11 drq 5 vector ahaintr +[Seagate ST01/02インタフェースのドライバ] +controller sea0 at isa? bio irq 5 iomem 0xc8000 iosiz 0x2000 vector seaintr +controller scbus0 + +device sd0 [4台のSCSI ディスクのサポート, sd0 から sd3] + +device st0 [2台の SCSI テープのサポート] + +[CD-ROMのドライバ] +device cd0 #Only need one of these, the code dynamically grows + + 両方の例で SCSIディスクがサポートされています. + ブート中に 「固定」の記述がされているタイプ(例えば sd + ディスク) のデバ イスで記述より多くのデバイスが見つかると, + システムは単純に最後の “固定” + のデバイスの番号より + 1つずつ増加させた番号をデバイスに割り当てて行きます. もし + “固定” のデバイスがなければユニット番号は 0 + から始まります. + + man 4 scsi によって + SCSIサブシステムの最新の情報を チェックしてください. + より詳細なホストアダプタドライバの使い 方は, たとえば + Adaptec 294xドライバの場合はman 4 ahc + にあります. + + + + カーネルセットアップでの SCSI チューニング + + 経験的に SCSIバスリセット (ブート時におきます) + 後のINQUIRYコマ + ンドに対して応答が遅くなるデバイスがあります. + INQUIRYコマンドは ブート時にカーネルがどの種類のデバイス + (ディスク, テープ, CD-ROMなど) + がどのターゲットIDに接続されているかを調べるために + 発行します. ちなみにこのプロセスをデバイスプロービング + (デバイス検出) と言います. + + 「応答の遅いデバイス」の問題を解決するために, + FreeBSDは SCSIバスをリセットした後に SCSIデバイスの検出を + おこなうまでのディレイタイムを調整することができます. + カーネルコンフィグレーションファイルの下に示すような + 行にディレイタイムを設定してください. + + +options SCSI_DELAY=15 #Be pessimistic about Joe SCSI device + + この行ではディレイタイムは 15秒です. 私のシステムでは, + 信頼できる古い + CD-ROMが認識できるように3秒の値を使っています. もし + デバイスの認識で問題が起きる時は大きな値 (30秒であるとか) + から 始めてください. うまく動いたら, + 値を減らしてちょうどよい値 + にチューニングしてください. + + + + Rogue な SCSI デバイス + (訳注: rogue は有名なゲーム, ではなくて 悪党, + 群から離れた, 凶暴な, という意味) + + SCSI の規定は完全で簡潔なものにしようという + 努力はされましたが, 複雑な規定となり, + 正確に実現するのは簡単なことではありません. + いくつかのベンダは他よりもよい仕事をしています. + + ここで “イカレた” + デバイスが現れることになります. このような デバイスは + FreeBSD のカーネルにいくらか標準的 + ではない振舞をするものと認識されます. + “イカレた”デバイスは + ブート時にカーネルによって報告されます. 次の例は私の2つの + カートリッジテープユニットです. + + Feb 25 21:03:34 yedi /kernel: ahb0 targ 5 lun 0: <TANDBERG TDC 3600 -06:> +Feb 25 21:03:34 yedi /kernel: st0: Tandberg tdc3600 is a known rogue + +Mar 29 21:16:37 yedi /kernel: aha0 targ 5 lun 0: <ARCHIVE VIPER 150 21247-005> +Mar 29 21:16:37 yedi /kernel: st1: Archive Viper 150 is a known rogue + + 例えば, + あるターゲットIDから実際には1つのデバイスしかないの + にすべての + LUNからの応答があるようなデバイスがあるとします. カー + ネルはその特定のターゲットIDに8個の + LUNがあると誤解してしまう かもしれません. + このような混乱の起きる原因については読者へ + の課題にしておきます. + + FreeBSDの SCSIサブシステムは 検出時の + INQUIRYの応答を見て + 悪い習慣を持つデバイスの認識をしています. + INQUIRYの応答には + デバイスのファームウェアのバージョン番号が含まれるため, + 異なる 動作をするファームウェアのバージョンを + 区別することも可能です. 例えば, + /sys/scsi/st.c や + /sys/scsi/scsiconf.c を 見てください. + どのように行っているか, より多くの情報があります. + + この方法はうまく行きますが, + もちろん既知のデバイスがつながっ + ている場合だけうまくいくということに + 気をつける必要があります. もしあなた以前に Mumbletech + SCSI CD-ROM (訳注: 架空のメーカ のデバイスです) + を接続した人がいないとしたら, どんな 「ワザ」 + を使ってそれを使うか自分で見つけないと + いけないかもしれません. + + あなたの Mubletech を動かすことができたらその成果を + FreeBSDの 次のリリースへ含めるために + FreeBSD開発チームへ送ってくださ い. 他の + Mumbletechの利用者たちはあなたに感謝するでしょう. + + + + 複数の LUNを持つデバイス + + 単一の SCSI ID上に複数の論理ユニット (LUN) + を持つデバイスを使う ような場合もあるかもしれません. + 多くの場合では FreeBSDは LUN 0 のみを検出します. + このような例としては2台の SCSIではないハード ディスクを + SCSIバスにつなぐブリッジボード (例えば古い Sunシステ + ムに見られる Emulex MD21) があります. + + LUN + が0ではないデバイスは普通はシステムブート時の検出では + 見つかりません. この問題にうまく対処するには + /sys/scsi/scsiconf.c + に適切なエントリを加えてカーネルを再構築 + しなければなりません. + + 以下のように初期化されている構造体を探します. + + +{ + T_DIRECT, T_FIXED, "MAXTOR", "XT-4170S", "B5A", + "mx1", SC_ONE_LU +} + + LUNが複数あるあなたの Mumbletech BRIDGE2000 + はハードディスク として働きます. + またファームウェアのリビジョン123などを次のよ + うに書き加えます. + + +{ + T_DIRECT, T_FIXED, "MUMBLETECH", "BRIDGE2000", "123", + "sd", SC_MORE_LUS +} + + 訳注: 複数 LUNに対応するためには構造体の最後の要素を + SC_MORE_LUSにします. エントリを作る必要がある場合は + scsiconf.c にある + MBR-7等のエントリを参考にするといいでしょう. + + カーネルは + INQUIRYに一致するデータをブート時にテーブルから + 探してこれにしたがってふるまいます. より多くの情報は + ソースコードを見てください. + + + + タグ コマンド キューイング + + 最近の SCSI デバイス, 特に磁気ディスクではタグ + コマンド キューイング (tagged command queuing: TCQ) + がサポートされています. + + 要約すれば, TCQ は複数の I/O + リクエストを同時に受けることを可能 にすることです. + デバイスはインテリジェントですから,リクエスト + キューにある処理 (ヘッドのポジショニングなど) の最適化を + おこなうことができます. RAID (Redundant Array of + Independent Disks) + のようなSCSIデバイスではTCQ機能はデバイスの持つ並列性の + 利点を生かすために不可欠です. + + 各々の I/O リクエストは単一の “tag” (タグ + コマンド キューイン グの名前の由来) が与えられます. + FreeBSDはこの tagによりデバ イスドライバのキューの中のどの + I/Oリクエストが完了したかの 識 別をおこないます. + + TQC のリクエストはデバイスドライバが + サポートしていたとしても + あるデバイスのファームウェアではインプリメントが + “正しくない” かもしれません. + このような問題に出会うと非常に不可解な問題に つながります. + このような場合は TCQ を無効にしてみてください. + + + + バスマスタ ホストアダプタ + + すべてではありませんが多くの SCSIホストアダプタは + バスマスタコントローラです. これはホストCPUにデータ転送の + 負荷をかけず, ボード自身がI/Oをおこないます. + + これは + FreeBSDのようなマルチタスクのオペレーティングシステム + では大きな利点になります. しかし, + 何らかの問題の起きることも あります. + + 例えば Adaptec 1542 コントローラは ホストバス + (ここでは ISA または AT バス) + を異なった転送速度に設定できます. コントローラが + 異なるレートに設定できるのは すべてのマザーボードで + 高速な転送が できるわけではないからです. + マザーボードに合っていない高速の + データ転送速度を用いた時には, + ハングアップやデータの損傷等の + 問題が起きるかもしれません. + + これを解決する方法は明らかです. + より低いデータ転送速度に設定 + してうまく動くか確かめることです. + + Adaptec 1542 の場合, + 可能な限り高速な転送レートを動的に読み取って, + 正しい決定をおこなうためのオプションを + カーネルコンフィグファイルに 追加することができます. + このオプションはデフォルトでは無効に なっています. + + +options "TUNE_1542" #dynamic tune of bus DMA speed + + あなたの使うホストアダプタについてのマニュアルページを + チェックしてください. + また最終的な手段としては究極のドキュメントを + 使ってください + (つまりドライバのソースを読んでくださいというこ + とです). + + 訳注: 2.1.5R + の時点ではすべてのドライバに関してマニュアルページ + があるわけではありません. また上の例の + TUNE_1542のオプション も man aha + にはないようです. ソースのコメントだけで + も一度見ておいてもいいかもしれません. + + + + + 問題を突き止める + + 以下は SCSI + で一般的に問題が起きた場合に解決をするためのチェッ + クリストの試みです. これは完全な物ではありません. + + + + コネクタとケーブルがゆるんでいないかチェックする. + + + + + ターミネータの場所と数を念には念を入れて + チェックする. + + + + 少なくとも 1 + つのターミネータの電源の供給源があるかチェック する + (特に外部ターミネータを使う場合). + + + + ターゲットIDが重複していないかチェックする. + + + + 使用するすべてのデバイスの電源が ON + になっているかチェックする. + + + + 必要最小限のデバイスだけの構成を試してみる. + + + + 可能であれば, + ホストアダプタのスピードを遅くする. + + + + 問題をより単純にするために, + タグコマンドキューイングを可能 であれば無効にする. + (NCRベースのホストアダプタについては man ncrcontrol + を見てください) + + + + カーネルのコンパイルができるのであれば, + SCSIDEBUGオプショ ンをつけて + makeして, デバイスをデバッグモードにしてアクセ + スしてみてください. もしそれでも起動時にデバイスが検出 + されないのであれば, デバイスの設定アドレスが間違っている + のかもしれません. また, /sys/scsi/scsidebug.h に + あるデバッグレベルを変えてみてください. 検出はされるが + 動かないのであれば, &man.scsi.8; コマンドで + (SCSIDEBUG をつけてmakeした) + カーネルが動いている状態で動的にデバッグ + レベルを設定することができます. これは guru (UNIXの達人) + で も混乱してしまうほどの非常に大量のデバッグ情報を + 出すでしょ う. man 4 scsi + にはより正確な情報があります. またman + 8 scsi も見てください. + + + + + + さらに詳しい情報 + + もしあなたがいくらかは本気で + SCSIハッキングをする気があるなら + たぶん正規の規格を持っていたくなるでしょう. + + 承認ずみのアメリカ工業規格は ANSI から購入できます. + 住所と電話番号は + +
+ 13th Floor + 11 West 42nd Street + New York + NY 10036 + Sales Dept: (212) 642-4900 +
+ + です.
+ + また, ANSIの規格および委員会の規格案 (ドラフト) + のほとんどは Global Engineering Documents + より買うことができます. 連絡先は + +
+ 15 Inverness Way East + Englewood + CO, 80112-5704 + Phone: (800) 854-7179 + Outside USA and Canada: (303) 792-2181 + Fax: (303) 792- 2192 +
+ + です.
+ + X3T10 のドラフトの多くは電子的に利用できる形で SCSI BBS + (719-574-0424) と ncrinfo.ncr.com の Anonymous FTP + (誰でも ファイルを取ってくることができるFTPサービス) + サイトから得るこ とができます. + + 最新の X3T10委員会のドキュメントは: + + + + AT Attachment (ATA or IDE) [X3.221-1994] + (Approved) + + + + ATA Extensions (ATA-2) [X3T10/948D Rev 2i] + + + + Enhanced Small Device Interface (ESDI) + [X3.170-1990/X3.170a-1991] + (Approved) + + + + Small Computer System Interface — + 2 (SCSI-2) [X3.131-1994] (Approved) + + + + SCSI-2 Common Access Method Transport and + SCSI Interface Module (CAM) + [X3T10/792D Rev 11] + + + + 追加情報を得ることのできる出版物は: + + + + “SCSI: Understanding the Small Computer + System Interface”, NCR社 + 編. 出版: Prentice Hall, Englewood Cliffs, NJ, 07632 + Phone: (201) 767-5937 ISBN 0-13-796855-8 + + + + “Basics of SCSI”, + a SCSI tutorial, Ancot Corporation 編 + Ancot の連絡先: + Phone: (415) 322-5322 Fax: (415) 322-0455 + + + + “SCSI Interconnection Guide Book”, + AMP社の出版物 (発行 4/93, カ + タログ 65237) 色々な + SCSI コネクタのリスト と ケーブル接続方法のガイド. + AMP 社より入手可能. (800) 522-6752 + または (717) 564-0100 + + + + “Fast Track to SCSI”, + 富士通によるプロダクトガイド, + 入手先: Prentice Hall, Englewood Cliffs, NJ, 07632 + 電話: (201) 767-5937 ISBN 0-13-307000-X + + + + “The SCSI Bench Reference”, + “The SCSI Encyclopedia”, “SCSI Tutor”, + ENDL Publications, 14426 Black Walnut Court, Saratoga CA, 95070 + 電話: (408) 867-6642 + + + + “Zadian SCSI Navigator” + (クイックリファレンス) および + “Discover the Power of SCSI” + (最初の本は1時間のビデオとチュートリアルが付属), + Zadian Software, + Suite 214, 1210 S. Bascom Ave., + San Jose, CA 92128, (408) 293-0800 + + + + Usenet のニュースグループ comp.periphs.scsi と + comp.periphs + は特により多くの情報を得るには注目すべき場所です. + また定期的に ポストされる + SCSI-FAQをここから得ることができます. + + 多くの主要な SCSIデバイスとホストアダプタの供給元は FTP + サイト や BBSを開いています. + これらはあなたの持っているデバイスに関す + る貴重な情報源となるでしょう. +
+
+ + + * ディスク/テープ コントローラ + + + * SCSI + + + + + + * IDE + + + + + + * フロッピー + + + + + + + ハードディスクドライブ + + + SCSI ハードディスク装置 + + 寄稿: &a.asami; . + 17 February 1998. + + 訳: &a.jp.miyasita;. + 20 February 1998. + + SCSI の章で述べたように, + 実際, 現在販売されている SCSI ハードディスク装置はすべて + SCSI-2 互換であり, サポートされている SCSI ホストアダプタに + 接続すればそれらは正常に動作するでしょう. + 人々が直面する問題の多くは, ケーブル接続が間違っていたり + (ケーブルが長過ぎる, スター型接続になっている, など), + ケーブル終端の処理が不十分だったり, + 部品が故障していたりのうちのどれかです. + SCSI ハードディスク装置が動作しないときには, まず + SCSI の章を参照して下さい. + しかし SCSI ハードディスク装置を購入するときに + 気を付けておきたいことがふたつあります. + + + 回転速度 + + 現在販売されている SCSI ドライブの回転速度の範囲は + 4,500RPM から 10,000RPM であり, その大部分は 5,400RPM か + 7,200RPM です. 一般的に 7,200RPM + のドライブの方がデータ転送は速いのですが, 5,400RPM + の同容量のものと比べてとても熱くなります. + 現在のディスク装置の故障の大半は熱によるものです. もし PC + のケースの中が非常によく冷却されていなければ, 5,400RPM + かそれ以下のドライブにしておいた方がよいでしょう. + + より高密度で記録するようになっている新しいドライブは + 以前のものに比べてより多くのビットを + 各回転毎に転送することが + できるということに気をつけて下さい. 現在, 5,400RPM + の最高級機種では 1, 2 世代前の 7,200RPM の + ドライブに匹敵する転送速度が出せます. + 仕様一覧からバンド幅の数値を探すには “内部データ + (または転送) 速度” という欄を見て下さい. + 通常その数値は Mbits/s で書かれているので, それを 8 + で割ればそのドライブで出せる速度が Mbytes/s で + おおよそ見当をつけることができます. + + (もしあなたがスピード狂で, + あなたの愛する小さなパソコンちゃんに 10,000RPM + のドライブを載せたいのならそうしても構いませんが, + そのようなドライブはものすごく熱くなります. ドライブへ + 直接 風を当てられるようなファンや + きちんと換気されているディスク区画を持っていないときには + そういうことは考えない方がよいでしょう.) + + 最新の 10,000RPM のドライブや 7,200RPM + のドライブは当然 最新の 5,400RPM + のドライブよりも多くのデータを転送することが できますから, + 絶対的なバンド幅がアプリケーションにとって 必要ならば, + より速いドライブを選ぶしかありません. また, + レイテンシを小さくする必要があるときも, + より速いドライブが適当です. なぜなら, + より速いドライブの方が平均シーク時間が 少ないだけでなく, + 回転遅延という尺度において + 低回転速度のドライブが高回転速度のものに + 勝ることはないからです. (平均回転レイテンシはディスクが 1 + 回転するために要する時間を半分に したものです. すなわち, + 10,000RPM のドライブでは 3 ms, 7,200RPM のドライブでは 4.2 + ms, 5,400RPM のドライブでは 5.6 ms となります.) + レイテンシはシーク時間と回転遅延との和になります. + しかしここで, レイテンシの少ないドライブが欲しいのか, 1 + 秒あたりのアクセス数を増やす方がよいのかを + はっきりさせておかなければいけません. 後者の場合 (例 : + ニュースサーバ) では, 大きな速いドライブを 1 + つ購入することは最適解とはならないでしょう. + 遅いドライブを複数個使ってストライピングされた + ディスクアレイを 作る ccd (連結ディスク) + ドライバを用いることによって, + 全体に必要な費用の点で同様かまたはより + 良い結果を得ることができます. + + ドライブのまわりに適切な空気の + 流れを作るようにする必要が あります. + 高回転速度のドライブを使おうとしているときには特に + 注意してください. 一般的に, ドライブの上下には少なくとも + 1/2 インチ (1.25cm) の すき間が必要です. PC + のケース内の空気がどんなふうに流れているか + 理解しておいてください. + 多くのケースには背面から空気を吸い込む電源が付いています. + どこから空気が入ってくるかを確かめて, まわりに最大量の + 冷たい空気が流れるようにドライブを設置してください. + 効果的に冷却するためには, 不要な穴をいくつか塞いだり + 新しいファンを追加する必要があるかも知れません. + + もうひとつ考慮するべき事柄は騒音です. 7,200RPM + やそれより速い回転速度のドライブの多くは高い周波数の + 音を発生し, この音は多くの人をとても不快にします. + それに加えて, 冷却のために追加されたファンによっても, + 7,200RPM + やそれより速い回転速度のドライブはオフィスや家の環境に + そぐわないものになるかもしれません. + + + + 形状 + + 現在販売されている大部分の SCSI ドライブは 3.5 + インチの 大きさです. それらは高さが 1.6 インチ + (“ハーフハイト”) のものと 1 インチ + (“ロープロファイル”) のものとの 2 + 種類に分類されます. ハーフハイトのドライブは CD-ROM + ドライブと同じ高さです. しかし前節で述べたすき間についての + ルールを忘れないでください. 3.5 インチドライブ用のベイが 3 + 段用意されているときに, ハーフハイトのドライブ 3 個を + (焦がすことなく) + そこに設置することはできないでしょう. + + + + インタフェース + + 現在売られている SCSI ハードドライブの多くは Ultra + または Ultra-wide SCSI です. Ultra SCSI の最大バンド幅は + 20MB/s, Ultra-wide SCSI の場合は 40MB/s です. Ultra と + Ultra-wide の間にケーブル最大長の相違はありませんが, + 同一バスに接続されるデバイスが増えれば増えるほど + 早い時期にバスの整理に関する問題を + 抱えることになるでしょう. + うまく設計されたディスク区画を持っているのでなければ, 5 + 個か 6 個以上の Ultra SCSI ドライブを 1 本のバスに + 接続することは容易なことではありません. + + 一方, 多数のドライブを接続する必要があるときに + Fast-wide SCSI を利用することは悪くないアイデアでしょう. + これは Ultra (narrow) SCSI + と同じ最大バンド幅であると同時に “正しく” + 接続することが電気的にとても容易です. + アドバイスとしてはこのようになるでしょうか : + ディスクを多数接続したいときには wide SCSI のドライブを + 選んで下さい. 通常 wide SCSI の方が少し高価ですが, + 将来きっと役に立ちます. (なお, + 価格差を補う余裕がないときにはディスクアレイを + 作るべきではありません.) + + wide SCSI ドライブには 68 ピンのものと 80ピン SCA + (単コネクタ型) のものとの 2 種類があります. SCA + ドライブには 4 ピンの電源コネクタがなく, SCSI ID も 80 + ピンコネクタを通じて設定されます. + 真面目に大規模な記憶システムを作成するような場合には, SCA + ドライブと SCA 筺体 (2 + 種類の電圧が供給できる電源と少なくとも 1 + 個のファンが付いたもの) を使ってください. その方が 68 + ピンの同様のドライブよりも電気的に優れています. なぜなら, + 68 ピンのドライブで作ったディスクアレイに 見られるような + SCSI バスの “スタブ” + がディスクキャニスタの内部に 存在しないからです. + それらはより簡単に設置することができます + (キャニスタの中にドライブをねじで固定すればよいだけで, + (SCSI ID やディスクアクセス LED 用の線のような) + 細かいケーブルを全部持ち上げるために狭いところへ指を入れて + 握らなくてもよいのです). + + + + + * IDE ハードディスクドライブ + + + + + + + テープドライブ + + 原作: &a.jmb;. + 2 July 1996. + + 訳: &a.jp.yoshiaki;. + 13 October 1996. + + + 一般的なテープアクセスコマンド + + &man.mt.1; はテープドライブへの一般的なアクセス方法を提 + 供します. rewind, + erase, statusなど + の共通コマンドがあります. マニュアルページの &man.mt.1; を見 + てください. より詳しい解説があります. + + + + コントローラインタフェース + + テープドライブにはいくつかの異なったインタフェースがあり + ます. SCSI, IDE, フロッピー, パラレルポートのインタフェース + です. + 非常に多くの種類のテープドライブがこれらのインタフェー + スで使えます. コントローラについての議論はディスク/テープ + のコントローラにあります(訳注:現在未完成です). + + + + SCSI ドライブ + + &man.st.4; ドライバは 8mm (Exabyte), 4mm (DAT: Digital + Audio Tape), QIC (1/4インチカートリッジ), + DLT (デジタルリニアテープ), + QIC ミニカートリッジ, 9トラック (大きなリールがハリウッドの + コンピュータルームで回っているのを見たことがあるでしょう) + をサポートします. + &man.st.4; マニュアルページにより詳しい解説があります. + + + 以下のドライブリストは現在 FreeBSDコミュニティのメンバが + 使っているものです. これらだけが FreeBSDで動くドライブという + わけではありません. + これらは単にたまたま私たちのうちの誰かが使っ + ているというだけです. + + + 4mm (DAT: Digital Audio Tape ) + + Archive Python + HP C1533A + HP C1534A + HP 35450A + HP 35470A + HP 35480A + SDT-5000 + Wangtek 6200 + + + + 8mm (Exabyte) + + EXB-8200 + EXB-8500 + EXB-8505 + + + + QIC (1/4 インチカートリッジ) + + Archive Anaconda 2750 + Archive Viper 60 + Archive Viper 150 + Archive Viper 2525 + Tandberg TDC 3600 + Tandberg TDC 3620 + Tandberg TDC 4222 + Wangtek 5525ES + + + + DLT (Digital Linear Tape) + + Digital TZ87 + + + + Mini-Cartridge + + Conner CTMS 3200 + Exabyte 2501 + + + + Autoloaders/Changers + + Hewlett-Packard HP C1553A Autoloading DDS2 + + + + + * IDE ドライブ + + + + + + フロッピードライブ + + Conner 420R + + + + * パラレルポートドライブ + + + + + + 詳細な情報 + + + Archive Ananconda 2750 + + このドライブのブートメッセージの識別子は + ARCHIVE ANCDA 2750 28077 -003 type 1 removable + SCSI 2 です. + + これは QIC テープドライブです. + + QIC-1350テープを利用した場合の標準の容量は 1.35GBです. + このドライブは QIC-150 (DC6150), QIC-250 (DC6250), QIC-525 + (DC6525) の + テープを問題なく読み書きすることができます. + + &man.dump.8; を使った時のデータ転送レートは + 350kB/sです. Amanda + における転送レートは 530kB/sと報告されています. + + このドライブは既に生産中止になっています. + + このテープドライブの + SCSIバスコントローラは他のほとんどの + SCSIドライブとピン配置が逆です. Anaconda + テープドライブの前後でSCSIケー + ブルを1/2ひねることができるくらい SCSI + ケーブルが長いことを確認しておく か, 他の + SCSIデバイスのピン配置を入れ換えておく必要 + があります. + + そして, このドライブではカーネルコードの変更が + 2箇所必要です. そ のままではうまく動かないでしょう. + + SCSI-2コントローラを持っているなら, ジャンパの + 6番をショート してください. そうしないとこのドライブは + SCSI-1として働きます. SCSI-1の デバイスとして動作する時, + このドライブはテープのfsf (早送り), rewind (巻 + 戻し),rewoffl (巻戻してオフラインにする) + 等を含む操作を行っている間, + SCSIバスを“ロック”します. + + NCR SCSIコントローラを使う場合, + /usr/src/sys/pci/ncr.c (以 + 下を参照してください)にパッチを行って, カーネルを作り直し, + 新しいカーネ ルをインストールしてください. + + +*** 4831,4835 **** }; ! if (np->latetime>4) { /* + ** Although we tried to wake it up, --- 4831,4836 + ---- }; ! if (np->latetime>1200) { /* + ** Although we tried to wake it up, + + 報告者: &a.jmb; + + + + Archive Python + + このドライブのブートメッセージの識別子は + ARCHIVE Python 28454-XXX4ASB + type 1 removable SCSI 2 + density code 0x8c, 512-byte blocks + です. + + これは DDS-1 テープドライブです. + + 90m テープを使った場合の標準容量は 2.5GBです. + + データ転送速度は不明です. + + このドライブは Sun マイクロシステムが再パッケージして + model 411として出しています. + + 報告者: Bob Bishop rb@gid.co.uk + + + + Archive Viper 60 + + このドライブのブートメッセージ識別子は + ARCHIVE VIPER 60 21116 -007 + type 1 removable SCSI 1 です. + + これは QICテープドライブです. + + 標準の容量は 60MB です. + + データ転送レートは不明です. + + このドライブは生産中止になっています. + + 報告者: Philippe Regnauld regnauld@hsc.fr + + + + Archive Viper 150 + + このドライブのブートメッセージの識別子は + ARCHIVE VIPER 150 21531 -004 + Archive Viper 150 is a known rogue + type 1 removable SCSI 1です. + このドライブのファームウェアには多くのリビジョ + ンがあります. + あなたのドライブではことなった数字が表示されるかもしれま + せん(例えば 21247 -005). + + これは QICテープドライブです. + + 標準容量は 150/250MBです. 150MB (DC6150) テープと + 250MB (DC6250)テープの記録フォーマットがあります. + 250MBテープは およそ67% 150MBテープより長いです. + このドライブは 120MBのテープを問題 なく読むことができます. + 120MBテープに書き込むことはできません. + + データ転送レートは100kB/sです. + + このドライブは DC6150 (150MB) と DC6250 (250MB) + テープの読み 書きができます. + + このドライブの奇妙な癖は + SCSIテープデバイスドライバはあら かじめ (&man.st.4;) + にあらかじめ組み込まれています. + + FreeBSD 2.2-currentでは, + ブロックサイズの設定を設定するためmt blocksize + 512としてください. (ファームウェアリビジョンが + 21247 -005 である場合の問題です. + 他のリビジョンのファームウェアでは異 なる場合があります.) + これ以前の + FreeBSDバージョンにはこの問題はありません. + + このドライブは生産中止になっています. + + 報告者: Pedro A M Vazquez + vazquez@IQM.Unicamp.BR + + Mike Smith + msmith@atrad.adelaide.edu.au + + + + Archive Viper 2525 + + このドライブのブートメッセージの識別子は + ARCHIVE VIPER 2525 25462 -011 + type 1 removable SCSI 1です. + + これは QICテープドライブです. + + 標準容量は 525MBです. + + データ転送レートは 90inch/secの場合で 180kB/sです. + + QIC-525, QIC-150, QIC-120, + QIC-24のテープを読むことができま す. QIC-525, QIC-150, + QIC-120 に書き込むことができます. + + ファームウェアのリビジョンが 25462 + -011 以前の物はバグが 多く, + 正しく機能しません. + + このドライブは生産中止になっています. + + + + Conner 420R + + このドライブのブートメッセージの識別子は + Conner tape です. + + これはフロッピーコントローラを + 使うミニカートリッジテープド ライブです. + + 標準容量は不明です. + + データ転送レートは不明です. + + このドライブは QIC-80テープドライブを使います. + + 報告者: Mark Hannon mark@seeware.DIALix.oz.au + + + + Conner CTMS 3200 + + このドライブのブートメッセージの識別子は + CONNER CTMS 3200 7.00 type 1 + removable SCSI 2 です. + + これはミニカートリッジテープドライブです. + + 標準容量は不明です. + + データ転送レートは不明です. + + このドライブは QIC-3080テープカートリッジを使います. + + 報告者: Thomas S. Traylor tst@titan.cs.mci.com + + + + <ulink URL="http://www.digital.com/info/Customer-Update/931206004.txt.html">DEC TZ87</ulink> + + このドライブのブートメッセージの識別子は DEC + TZ87 (C) DEC 9206 type 1 removable + SCSI 2 density code 0x19 + です. + + これは DLTテープドライブです. + + 標準容量は 10GBです. + + このドライブはハードウェアデータ圧縮の機能があります. + + データ転送レートは 1.2MB/sです. + + このドライブは Quantum DLT2000と同一の物です. + このドライブ のファームウェアは Exabyteの + 8mmドライブ等のよく知られたいくつかのドラ + イブのエミュレートをおこなうよう設定ができます. + + 報告者: &a.wilko; + + + + <ulink URL="http://www.Exabyte.COM:80/Products/Minicartridge/2501/Rfeatures.html">Exabyte EXB-2501</ulink> + + このドライブのブートメッセージ識別子は + EXABYTE EXB-2501です. + + これはミニカートリッジテープドライブです. + + MC3000XLミニカートリッジを使った時の標準容量は 1GBです. + + データ転送レートは不明です. + + このドライブは DC2300 (550MB), DC2750 (750MB), MC3000 + (750MB), MC3000XL (1GB) + ミニカートリッジの読み書きができます. + + 注意: このドライブは SCSI-2の仕様に適合していません. + このドライブは, フォーマット済みのテープ以外を入れた場合, + SCSI MODE_SELCTコマンドで完全にロックアップしてしまいます. + このドライブを使 う前に, + テープブロックサイズを次のように設定します. + + &prompt.root; mt -f /dev/st0ctl.0 blocksize 1024 + + ミニカートリッジは最初に使う前に + フォーマットしなければなりません. FreeBSD 2.1.0-RELEASE + およびそれ以前の場合は + + &prompt.root; /sbin/scsi -f /dev/rst0.ctl -s 600 -c "4 0 0 0 0 0" + + (あるいは, FreeBSD 2.1.5/2.2から + scsiformatシェルスクリプトを + コピーして持ってきた場合と) FreeBSD + 2.1.5およびそれ以降の場合は &prompt.root; + /sbin/scsiformat -q -w + /dev/rst0.ctl とします. + + 今のところ, + FreeBSDではこのドライブはあまりおすすめできません. + + 報告者: Bob Beaulieu ez@eztravel.com + + + + Exabyte EXB-8200 + + このドライブのブートメッセージの識別子は + EXABYTE EXB-8200 252X type 1 + removable SCSI 1です. + + これは8mmテープドライブです. + + 標準容量は 2.3GBです. + + データ転送レートは 270kB/sです. + + このドライブはブート時の + SCSIバスへの応答はわりあい遅いです. + カスタムカーネルが必要かもしれません (SCSI_DELAYを + 10秒に設定しましょう). 訳注: GENERICカーネルの設定では + 15秒になっています. + + このドライブには非常に多くのファームウェアの + 構成があります. + あるドライブでは特定のベンダのハードウェアに + カスタマイズしてあります. ファームウェアは + EPROMを置き換えることで変更できます. + + このドライブは生産中止になっています. + + 報告者: Mike Smith msmith@atrad.adelaide.edu.au + + + + Exabyte EXB-8500 + + このドライブのブートメッセージの識別子は + EXABYTE EXB-8500-85Qanx0 0415 + type 1 removable SCSI 2 です. + + これは 8mmテープドライブです. + + 標準容量は 5GBです. + + データ転送レートは 300kB/sです. + + 報告者: Greg Lehey grog@lemis.de + + + + <ulink URL="http://www.Exabyte.COM:80/Products/8mm/8505XL/Rfeatures.html">Exabyte EXB-8505</ulink> + + このドライブのブートメッセージ識別子は + EXABYTE EXB-85058SQANXR1 05B0 + type 1 removable SCSI 2です. + + これは 圧縮機能を持った 8mmテープドライブで, EXB-5200 + と EXB-8500に対する上位互換品です. + + 標準容量は 5GBです. + + このドライブは + ハードウェアデータ圧縮機能があります. + + データ転送レートは 300kB/sです. + + 報告者: Glen Foster gfoster@gfoster.com + + + + Hewlett-Packard HP C1533A + + このドライブのブートメッセージの識別子は HP + C1533A 9503 type 1 removable SCSI + 2です. + + これはDDS-2テープドライブです. DDS-2 + とはデータ容量を増や すためにハードウェア圧縮と + 狭いトラックを採用したものです. + + 120mテープを使った場合の標準容量は4GBです. + このドライブは + ハードウェアデータ圧縮機能があります. + + データ転送レートは510kB/sです. + + このドライブはヒューレットパッカード社の 6000eU および + 6000i テー プドライブ, C1533A DDS-2 DAT + ドライブに使われています. + + このドライブは 8接点のディップスイッチがあります. + FreeBSDで の適切な設定は 1 ON; 2 ON; 3 OFF; 4 ON; 5 ON; 6 + ON; 7 ON; 8 ON です. + + + + + + スイッチ 1 + スイッチ 2 + 結果 + + + + + + On + On + 電源投入時に圧縮 ON, + ホストによるコントロール可能 + + + + On + Off + 電源投入時に圧縮 ON, + ホストによるコントロール不可 + + + + Off + On + 電源投入時に圧縮 OFF, + ホストによるコントロール可能 + + + + Off + Off + 電源投入時に圧縮 OFF, + ホストによるコントロール不可 + + + + + + スイッチ 3 は MRS (Media Recognition System + :メディア認識システ ム) をコントロールします. MRS + テープは透明なテープリーダ部分にしま模 様があります. + これはテープが DDS (Digital Data Storage) グレードである + ことを示します. + しま模様のないテープはライトプロテクトされたものとして + 扱います. スイッチ3をOFFにすると MRSが有効になります. + スイッチ3をONに すると MRSは無効になります. + + 訳注: 安価な音楽用のDATテープを使うには + MRSをOFFにしておきます + + このドライブの設定についてのより詳しい情報は HP SureStore + Tape Products および Hewlett-Packard Disk and Tape Technical Information をご覧ください. + + 注意: + これらのドライブの品質管理は非常に幅がありま す. ある + FreeBSDコアチームのメンバは + このドライブを2つ返品しました. + + 報告者: &a.se; + + + + Hewlett-Packard HP 1534A + + このドライブのブートメッセージの識別子は HP + HP35470A T503 type 1 removable SCSI + 2 Sequential-Access density code + 0x13, variable blocksです. + + これは DDS-1テープドライブです. DDS-1 は最初の DAT + テープフォーマットです. + + 90m テープを使った場合の標準容量は 2GBです. + + データ転送レートは 183kB/sです. + + ヒューレットパッカード社の SureStore 2000i + テープドライブ, C35470A DDS フォーマット + DATドライブ, C1534A DDS フォーマット DATドライブ, HP + C1536A DDS フォーマット DATドライブと + 同じ機構を使用しています. + + HP C1534A DDSフォーマット + DATドライブはグリーンと黄色(アンバー) + の2つの表示ランプがあります. グリーンのランプは動作状 + 態を示し, ローディング中はゆっくり点滅, + ローディングが終了すると点灯, + read/write動作中は速く点滅します. 黄色のランプは警告灯で, + クリーニング + が必要であるかまたはテープが寿命に近くなるとゆっくり点滅, + 致命的なエラー + の場合は点灯します(工場での修理が必要かもしれません). + + + 報告者:Gary Crutcher + gcrutchr@nightflight.com + + + + Hewlett-Packard HP C1553A Autoloading DDS2 + + このドライブのブートメッセージの識別子は未確認です. + + + これはテープチェンジャ付の DDS-2テープドライブです. + DDS-2 とはデータ容量を増や + すためにハードウェア圧縮と狭いトラックを + 採用したものです. + + 120mテープを使用した場合の標準容量は 24GB です. + このドライブはハードウェアデータ圧縮機能があります. + + データ転送レートは510kB/s (標準) です. + + このドライブはヒューレットパッカード社の SureStore + + 12000e テープドライブに使われています. + + このドライブはリアパネルに2つの選択スイッチがあります. + ファンに近いスイッチは SCSI IDです. もうひとつは + 7に設定しておきます. + + 内部に 4個のスイッチがあります. これらは 1 ON; 2 ON; + 3 ON; 4 OFF に設定しておきましょう. + + 現在のカーネルドライバはボリュームの終りで + 自動的にテープを 交換しません. ここに示す + shellスクリプトでテープを交換できます. + + +#!/bin/sh +PATH="/sbin:/usr/sbin:/bin:/usr/bin"; export PATH + +usage() +{ + echo "Usage: dds_changer [123456ne] raw-device-name + echo "1..6 = Select cartridge" + echo "next cartridge" + echo "eject magazine" + exit 2 +} + +if [ $# -ne 2 ] ; then + usage +fi + +cdb3=0 +cdb4=0 +cdb5=0 + +case $1 in + [123456]) + cdb3=$1 + cdb4=1 + ;; + n) + ;; + e) + cdb5=0x80 + ;; + ?) + usage + ;; +esac + +scsi -f $2 -s 100 -c "1b 0 0 $cdb3 $cdb4 $cdb5" + + + + Hewlett-Packard HP 35450A + + このドライブのブートメッセージの識別子は HP + HP35450A -A C620 type 1 removable + SCSI 2 Sequential-Access density code + 0x13 です. + + これは DDS-1テープドライブです. DDS-1 は最初の DAT + テープフォーマットです. + + 標準容量は 1.2GBです. + + データ転送レートは 160kB/sです. + + 報告者: mark thompson + mark.a.thompson@pobox.com + + + + Hewlett-Packard HP 35470A + + このドライブのブートメッセージの識別子は HP + HP35470A 9 09 type 1 removable SCSI + 2です. + + これは DDS-1テープドライブです. DDS-1は最初の DAT + テープフォーマットです. + + 90mテープを使用した時の標準容量は 2GBです. + + データ転送レートは 183kB/sです. + + これはヒューレットパッカード社の SureStore 2000i + テープドライブ, C35470A + DDSフォーマットDATドライブ, C1534A + DDSフォーマットDATドライブ, HP C1536A DDS + フォーマットDATドライブと同 じ機構が使われています. + + 注意: + これらのドライブの品質管理には非常に大き な幅があります. + ある FreeBSDコアチームのメンバは 5台のドライブを返品し + ました. 9ヶ月以上もったものはありません. + + 報告者: David Dawes + dawes@rf900.physics.usyd.edu.au (9 09) + + + + Hewlett-Packard HP 35480A + + このドライブのブートメッセージの識別子は HP + HP35480A 1009 type 1 removable SCSI + 2 Sequential-Access density code + 0x13 です. + + これは DDS-DCテープドライブです. + DDS-DCはハードウェアデータ 圧縮のついたDDS-1です. + DDS-1は最初のDATテープフォーマットです. + + 90mテープを使った場合の標準容量は 2GBです. + 120mテープは使用 できません. + このドライブはハードウェア圧縮機能があります. + 適切なスイッチ設定に関しては, HP C1533A + の節を参照してください. + + データ転送レートは 183kB/sです. + + このドライブはヒューレットパッカード社の SureStore + + 5000eU , 5000i + テープドラ イブ, C35480A DDS フォーマット DAT + ドライブと同じ機構を使っています. + + このドライブは時々, テープの eject操作 (mt + offline) + を行っている時にハングアップすることがあります. + テープをejectさせたり, + ドライブを回復させるにはフロントパネルのボタンを + 押してください. + + 注意: HP 35480-03110 では特有の問題がありました. + 少なくとも2回, FreeBSD 2.1.0 で IBM Server 320に 2940W + SCSIコントローラ + をつけてこのドライブを使っている時にすべての + SCSIディスクのパーティショ ンが失われたことがあります. + この問題は解析も解決もできていません. + + + + <ulink URL="http://www.sel.sony.com/SEL/ccpg/storage/tape/t5000.html">Sony SDT-5000</ulink> + + これらには少なくとも DDS-1のものと + DDS-2のものの2つのモデルが あります. DDS-1のものは + SDT-5000 3.02です. DDS-2のものは + SONY SDT-5000 327M です. + DDS-2バージョンには 1MBのキャッシュがあります. この + キャッシュによりあらゆる状況で + テープのデータの流れを途切れさせません. + + このドライブのブートメッセージの識別子は SONY + SDT-5000 3.02 type 1 removable SCSI + 2 Sequential-Access density code + 0x13です. + + 120mテープを使用した場合の標準容量は 4GBです. + このドライブ + はハードウェアデータ圧縮機能があります. + + データ転送レートはドライブのモデルによります. + SONY SDT-5000 327M + でデータ圧縮を行った場合のレートは 630kB/s です. + SONY SDT-5000 3.02では + 225kB/sです. + + Kenneth Merry + ken@ulc199.residence.gatech.eduの報告によれば + このドライブからデータを読むためには, ブロックサイズを + 512バイトにしま す (mt blocksize + 512). + + SONY SDT-5000 327M の情報は Charles + Henrich henrich@msu.edu による報告です. + + 報告者: &a.jmz; + + + + Tandberg TDC 3600 + + このドライブのブートメッセージの識別子は + TANDBERG TDC 3600 =08: type 1 + removable SCSI 2です. + + このドライブはQIC テープドライブです. + + 標準容量は150/250MBです. + + このドライブには奇妙な癖があることが知られていますが, + SCSIテープドライバ (&man.st.4;) + には問題なく動くコードが含まれてい + ます. 問題の修整とSCSI + 2へのコンパチビリティを得るためにファームウェ アをある + (具体的には不明の) バージョンより上にしてください. + + データ転送レートは80kB/sです. + + IBMと Emerald製品のユニットは動かないでしょう. + 問題を解決するためにファームウェア + EPROMを交換してください. + + 報告者: Michael Smith + msmith@atrad.adelaide.edu.au + + + + Tandberg TDC 3620 + + これは Tandberg TDC + 3600ドライ ブに非常によく似ています. + + 報告者: &a.joerg; + + + + Tandberg TDC 4222 + + このドライブのブートメッセージの識別子は + TANDBERG TDC 4222 =07 type 1 + removable SCSI 2です. + + これは QICテープドライブです. + + 標準容量は2.5GBです. このドライブは 60M (DC600A) + 以上のすべての カートリッジを読むことができ, 150MB + (DC6150) 以上のすべてのカートリッジを 読み書きできます. + ハードウェア圧縮は 2.5GB カートリッジを使用した時の + オプションとしてサポートされています. + + このドライブには奇妙な癖がありますが, FreeBSD の + 2.2-current以降の SCSIテープデバイスドライバ (&man.st.4;) + には対応が組み込まれています. それ以前のバージョンの + FreeBSDではmtを用いてテープから1ブロッ + ク読み, テープを巻戻してからバックアッププログラムを + 実行してください. (mt fsr 1; mt rewind; dump + ...). + + データ転送レートは 600kB/s + (データ圧縮時のベンダによる公称) で, start/stop モードでも + 350kB/s にはなります. 容量の小さいカー + トリッジを使った場合にはレートは下がります. + + 報告者: &a.joerg; + + + + Wangtek 5525ES + + このドライブのブートメッセージの識別子は + WANGTEK 5525ES SCSI REV7 3R1 + type 1 removable SCSI 1 + density code 0x11, 1024-byte + blocksです. + + これは QICテープドライブです. + + 標準容量は 525MBです. + + データ転送レートは 180kB/sです. + + 60, 120, 150, 525MB のテープを読むことができます. 60MB + (DC600カートリッジ) には書き込むことはできません. + 120および150テー プに確実に上書きするには, + 先にテープを消去 (mt erase) します. + 120および 150のテープは + 525MBのテープより幅の広いトラックを使用してい + ます(テープ当たりのトラック数は少なくなります). + トラックの幅の“外側”には上書きされませんので, + テープが消去されない限り 両側に古いデータが残ったまま + 新しいデータが置かれることになります. + + このドライブの奇妙な癖は知られていて, SCSI + テープドライバ (&man.st.4;) に組み込まれています. + + 他のファームウェアのリビジョンで動くことが + 確認されているも のは M75Dです. + + 報告者: Marc van Kempen + marc@bowtie.nl REV73R1 + Andrew Gordon Andrew.Gordon@net-tel.co.uk + M75D + + + + Wangtek 6200 + + このドライブのブートメッセージの識別子は + WANGTEK 6200-HS 4B18 type 1 + removable SCSI 2 Sequential-Access + density code 0x13です. + + これは DDS-1テープドライブです. + + 90mテープを使用した場合の標準容量は 2GBです. + + データ転送レートは 150kB/sです. + + 報告者: Tony Kimball alk@Think.COM + + + + + * 問題のあるドライブ + + + + + + + CD-ROM ドライブ + + 原作: &a.obrien;. + 23 November 1997. + + Jordan + 氏の選んだ組合せ でふれられているように + FreeBSD プロジェクトでは一般的には IDE + CDROM よりも SCSI CDROM の方が好まれています. しかし全ての + SCSI CDROM ドライブが同じであるというわけではありません. + いくつかの SCSI CDROM ドライブの品質は IDE CDROM + ドライブよりも 低いものであると感じている人もいます. + 東芝は信頼性が高いという評判が ありましたが, 12倍速の XM-5701A + は, SCSI メーリングリストでは ( オーディオ CDROM の再生で) + 何種類かのオーディオ再生ソフトウェアで + ボリュームのコントロールができない, という不満のメールを大量に + 見ることがありました. + + SCSI CDROM のメーカー間の競争のもう一つの局面は, SCSI + 規格に対する忠実度です. 多くの SCSI CDROM は + ターゲットアドレス(ID)の マルチ LUN に応答します. + 既知の規格違反デバイスにはティアックの6倍速ドライブ CD-56S + 1.0D があります. + + + + * その他 + + + +
+ + + * その他 + + + * PCMCIA + + + + +
+ + diff --git a/ja/handbook/install/chapter.sgml b/ja/handbook/install/chapter.sgml new file mode 100644 index 0000000000..0bdfb1ff7f --- /dev/null +++ b/ja/handbook/install/chapter.sgml @@ -0,0 +1,1285 @@ + + + + FreeBSDのインストール + + 原作: 不明 + + 訳: &a.jp.mita;, &a.hanai;, + &a.jp.iwasaki;. 26 January 1997. + + それでは, FreeBSD のインストールに挑戦してみましょう. + この章には, あなたが何をする必要があるかの簡単なガイドが + 書いてあります. FreeBSD は, CD-ROM, フロッピーディスク, + 磁気テープ, MS-DOSのパーティション, + ネットワーク接続しているところでは anonymous FTP や NFS + を通じてインストールすることができます. + + どのインストールメディアを利用する場合も, まず後で説明するよう + なインストールディスクの作成から始めます. + すぐにイン + ストールするわけではない場合であってもこのディスクであなたのコ + ンピュータを立ち上げることで, FreeBSD とあなたのハードウェアと + の相性に関する重要な情報を手に入れることができ, このハードウェ + アではどんなインストールオプションが使えるかを指定することがで + きます. もしもあなたが anonymous FTP を使用してインストールす + る予定なら, + インストールフロッピーだけをダウンロードして作成するだけで OK です + - インストールプログラム自身がさらに必要なも のを (Ethernet + 接続やモデムによるダイアルアップなどを用いて) + 直接ダウンロードしてくれます. + + + FreeBSDの配布に関する情報は, 付録の FreeBSD の入手方法 + をご覧ください. + + 仕事にとりかかるには, 以下のような手順を踏みます. + + + + このインストールガイドの サポートされている設定一覧 + の節を読んで, あなたのハードウェアが FreeBSD + でサポートされていることを確認します. SCSI コントローラだとか, + イーサネットアダプタだとか, サウンドカードだとかの, + あなたのマシンが + 装備している特別なカードのリストを作っておくと便利です. この + リストには, 割り込み番号 (IRQ) とか, IO + ポートのアドレスとかの, カードに + 関係する設定も書いておきましょう. + + + + FreeBSD を CDROM メディアからインストールする場合, いく + つかの異なる選択肢があります. + + + + もし CD のマスターが El Torrito ブートサポートで焼か + れており, あなたのシステムが CDROM + からのブートをサポートして いるなら(多くの古いシステムは + サポートしていません), + 単にドライブに CD を入れてブートするだけです. + + + + もしDOS を動かしていて CD へアクセスするための適切な + ドライバを持っているならば, CD に入っている install.bat + スクリ プトを起動します. これは, DOS から直接 FreeBSD + のインストール へと進みます. + + + これは本当の DOS から行なわなければいけま せん. + Windows の DOS プロンプトからでは駄目です. + + + また, DOS パーティションから FreeBSD + をインストールしたい場合 (恐らく, CDROM ドライブが + FreeBSD で全くサポートされていない場合でしょ う), setup + プログラムを起動します. setup プログラムは, まず CD + から適切なファイルを DOS パーティションにコピーし, + インストー ルへと進みます. + + + + 上記二つのうちのどちらかがうまくいったなら, この節の + 残りは必要ありません. そうでないならば, 最後の選択肢は + floppies\boot.flp + イメージからブートフロッピーを作る + ことです—そのやり方の説明はステップ 4 + へ進みます. + + + + + + もし CDROM を持っていないなら, ブートディスクのイメージ ファイルをあなたの ハードディスクにダウンロードしてきます. + + + ブラウザのコマンドでは, display + ではなくて save + を選ぶことに注意してください. + + + + 注意: + このディスクイメージは, 1.44 メガバイトの 3.5 + インチフロッピーディスクのみで使用可能です. + + + + このイメージファイルからブートディスクを作成します, + + + + + MS-DOSを使っている場合: + fdimage.exe をダウンロードするか, CDROM から + tools\fdiomage.exe を取り, + これを実行します. + + E:\> tools\fdimage floppies\boot.flp a: + + このプログラムは, A: + ドライブをフォーマットした後 boot.flp + の内容を書き込みます (ここでは通常の通り, FreeBSD + の配布物のトップレベルディレクトリにおり, + フロッピーイメージ は floppies + ディレクトリにあると仮定しています). + + + + UNIX システムを使っている場合: + + &prompt.root; dd if=boot.flp of=disk_device + + を実行します. ここで, + disk_device + はフロッピードライブに 対応する + /devの中のエントリです. FreeBSD では, + /dev/rfd0 が + A:ドライブに, + /dev/rfd1 が + B:ドライブに + 対応しています. + + + + + + インストールディスクを A:ドライブに入れて, コンピュータを + 立ち上げ直します. + そうすると次のようなプロンプトが出てくるはずです. + + +>> FreeBSD BOOT ... +Usage: [[[0:][wd](0,a)]/kernel][-abcCdhrsv] +Use 1:sd(0,a)kernel to boot sd0 if it is BIOS drive 1 +Use ? for file list or press Enter for defaults +Boot: + + + ここで何もタイプしない場合, 5秒間の待ち時間の後に FreeBSD + は 自動的にデフォルトの設定で立ち上がります. 立ち上げの際, + どんな ハードウェアが装備されているかを検出 (プローブ) します. + この結果は スクリーン上に表示されます. + + + + 立ち上げプロセスが終了したら, FreeBSD + インストールメニューが 表示されます. + + + + もしも問題が起こった場合 + + PC アーキテクチャの制限のため, + 100パーセントの信頼をもって検出する ことは不可能です. + もしもあなたのハードウェアが間違って認識されたり, + 検出途中でコンピュータが固まってしまうようなことが起こった場合, + まずこのガイドの サポートされている設定一覧 + の節を読んで, あなたのハードウェアが本当に FreeBSD + でサポートされているかどうかを確かめてください. + + ハードウェアがサポートされていた場合, リセットして + Boot: プロンプトが出てきたところで, + -c と打ち込んで ください. こうすると, FreeBSD + はコンフィグレーションモードになり, ハードウェアに関する情報を + FreeBSD に与えることができるようになります. インストールディスクの + FreeBSD カーネルは, 多くのデバイスの IRQ, IO + アドレスが工場出荷時の値に設定されているものと + 仮定して作られています. + もしもあなたのハードウェアの設定を変更したなら, + -c オプションで立ち上げて, + 設定がどうなっているかを指定してあげること + が必要になるでしょう. + + 存在しないデバイスを検出すると, + 実際に存在している他のデバイスの 検出に失敗することが考えられます. + そのような場合は, 衝突している + デバイスを無効にしなくてはなりません. スクリーンデバイス + (sc0) + などインストールに必要なデバイスを無効にしてはいけません. + + コンフィグレーションモードでは, + + + + カーネルに組み込まれているデバイスドライバの + 一覧を表示する + + + + あなたのシステムにないハードウェアのデバイスドライバを + 無効にする + + + + デバイスドライバの IRQ, DRQ, IO + ポートアドレスなどの変更する + + + + などができます. + + config> プロンプトが出ているところで, + help と打ち込むと, + 使用可能なコマンドについての詳しい説明が出てきます. + あなたのマシンのハードウェア設定に合うようにカーネルを変更したら, + config> プロンプトが出たところで + quit と打ち込んで, + 新しい設定でマシンを立ち上げます. + + FreeBSD のインストールがひとたび終了した後は, + コンフィグレーションモード での変更はずっと保持されますので, + 立ち上げのたびに設定変更をする必要は なくなりますが, + あなたのシステムの性能を高めるために, + カスタムカーネルを作るのが好ましいでしょう. + カスタムカーネルの作成に関しては, FreeBSD + カーネルのコンフィグレーション の章をご覧ください. + + + サポートされている設定一覧 + + 現在 FreeBSD は, ISA, VL, EISA, PCI バスや, 386SX から + Pentium クラス までのさまざまな種類の PC で動作します + (386SXはおすすめではありません). IDE, ESDIドライブや, + さまざまな SCSI コントローラ, ネットワークカードや + シリアルカードにも対応しています. + + FreeBSD を走らせるには, 最低 4メガバイトの RAM が必要です. X + Window System を 走らせるには最低でも 8メガバイトの RAM + が推奨されます. + + 以下のリストでは, FreeBSD + で動作が確認されているディスクコントローラ + やイーサネットカードです. 他の設定でもうまく動いてくれると + 思いますが, 私たちのところには情報は入ってきていません. + + + ディスクコントローラ + + + + WD1003 (あらゆる MFM/RLL) + + + + WD1007 (あらゆる IDE/ESDI) + + + + IDE + + + + ATA + + + + Adaptec 1505 ISA SCSI コントローラ + + + + Adaptec 152x シリーズ ISA SCSI コントローラ + + + + Adaptec 1535 ISA SCSI コントローラ + + + + Adaptec 154x シリーズ ISA SCSI コントローラ + + + + Adaptec 174x シリーズ EISA SCSI コントローラ + (スタンダード, エンハンスドモード) + + + + Adaptec 274x/284x/2940/2940U/3940 + (Narrow/Wide/Twin) + シリーズ EISA/VLB/PCI SCSI コントローラ + + + + Adaptec AIC7850 オンボード SCSI コントローラ + + + + Adaptec AIC-6360系のボード + AHA-152x や SoundBlaster SCSI などがこれにあたります. + + + Soundblaster カードには, オンボード BIOS + が載っていないので, このカードからは FreeBSD + を起動できません. オンボード BIOS とは, システム BIOS + の I/O ベクタにブートデバイスを + 登録するときに必要なものです. + このカードは外部テープであるとか, CD-ROM + であるとかその他の場合には十分利用可能です. 同じことは, + ブート ROM の載っていない AIC-6x60 + 系のカードにもいえます. + いくつかのシステムでは実際にブート ROM を持っています. + それは電源を入れるかリセットしたとき, + 最初に表示されます. + 詳しくはあなたのシステムやボードの解説書をご覧ください. + + + + + + Buslogic 545S & 545c + + + Buslogic 社は古くは “ Bustek ” + 社といっていました. + + + + + Buslogic 445S/445c VLバス SCSI コントローラ + + + + Buslogic 742A, 747S, 747c EISA SCSI コントローラ. + + + + Buslogic 946c PCI SCSI コントローラ + + + + Buslogic 956c PCI SCSI コントローラ + + + + NCR 53C810 , 53C825 PCI SCSI コントローラ. + + + + NCR5380/NCR53400 (“ProAudio Spectrum”) + SCSI コントローラ. + + + + DTC 3290 EISA SCSI コントローラ (1542 + エミュレーション) + + + + UltraStor 14F, 24F, 34F SCSI コントローラ. + + + + Seagate ST01/02 SCSI コントローラ. + + + + Future Domain 8xx/950 シリーズ SCSI コントローラ. + + + + WD7000 SCSI コントローラ. + + + + サポートされている SCSI コントローラのすべてで, ディスク, + テープドライブ (含む DAT), CD-ROM + ドライブなどの周辺機器との通信に SCSI-I, SCSI-II + が利用可能です. + + 現在, 次にあげるタイプの CD-ROM + ドライブがサポートされてます. + + + + Soundblaster SCSI , ProAudio Spectrum SCSI + (cd) + + + + ミツミ (全モデル) 独自のインタフェース + (mcd) + + + + 松下 / Panasonic (Creative) + CR-562/CR-563 インタフェース (matcd) + + + + ソニー インタフェース (scd) + + + + ATAPI IDE インタフェース + (まだまだお試し段階で, クオリティは低いです) + (wcd) + + + + + + イーサネットカード + + + + Allied-Telesis AT1700, RE2000 カード + + + + SMC Elite 16 WD8013 Ethernet インタフェース, + その他多くの WD8003E, WD8003EBT, WD8003W, WD8013W, + WD8003S, WD8003SBT や WD8013EBTなどの互換品. SMC Elite + Ultra 及び 9432TX + ベースのカードもサポートされています. + + + + DEC EtherWORKS III ネットワークインタフェースカード + (DE203, DE204, DE205) + + + + DEC EtherWORKS II ネットワークインタフェースカード + (DE200, DE201, DE202, DE422) + + + + DEC DC21040/DC21041/DC21140 + ベースのネットワークインタフェースカード: + + + + ASUS PCI-L101-TB + + + + Accton ENI1203 + + + + Cogent EM960PCI + + + + Compex CPXPCI/32C + + + + D-Link DE-530 + + + + DEC DE435 + + + + Danpex EN-9400P3 + + + + JCIS Condor JC1260 + + + + Kingston KNE100TX + + + + Linksys EtherPCI + + + + Mylex LNP101 + + + + SMC EtherPower 10/100 (Model 9332) + + + + SMC EtherPower (Model 8432) + + + + SMC EtherPower (2) + + + + Zynx ZX314 + + + + Zynx ZX342 + + + + + + DEC FDDI (DEFPA/DEFEA) + ネットワークインタフェースカード + + + + 富士通 FMV-181, FMV-182 + + + + 富士通 MB86960A/MB86965A + + + + Intel EtherExpress + + + + Intel EtherExpress Pro/100B 100Mbit. + + + + Isolan AT 4141-0 (16 bit) + + + + Isolink 4110 (8 bit) + + + + Lucent WaveLAN + ワイアレスネットワークインターフェイス + + + + Novell NE1000, NE2000, NE2100 + イーサネットインタフェース + + + + 3Com 3C501 カード + + + + 3Com 3C503 Etherlink II + + + + 3Com 3c505 Etherlink/+ + + + + 3Com 3C507 Etherlink 16/TP + + + + 3Com 3C509, 3C579, 3C589 (PCMCIA) Etherlink III + + + + 3Com 3C590, 3C595 Etherlink III + + + + 3Com 3C90x カード + + + + HP PC Lan Plus (27247B と 27252A) + + + + 東芝 イーサネットカード + + + + IBM , National Semiconductor社 PCMCIA + イーサネットカードもサポートされています. + + + + + FreeBSD は今のところ, いくつかのイーサネットカードの PnP + (プラグ&プレイ) 機能には対応していません. もし PnP + で問題が起こる ようでしたら, PnP + 機能を無効にしてください. + + + + + その他のデバイス + + + + AST 4 ポート シリアルカード (シェアード IRQ 使用) + + + + ARNET 8 ポート シリアルカード (シェアード IRQ 使用) + + + + BOCA IOAT66 6 ポート シリアルカード (シェアード IRQ + 使用) + + + + BOCA 2016 16 ポート シリアルカード (シェアード IRQ + 使用) + + + + Cyclades Cyclom-y シリアルボード + + + + STB 4 ポート カード (シェアード IRQ 使用) + + + + SDL Communications Riscom/8 シリアルボード + + + + SDL Communications RISCom/N2 と N2pci + 同期シリアルカード + + + + Digiboard Sync/570i high-speed 同期シリアルカード + + + + Decision-Computer Intl. “Eight-Serial” 8 + ポートシリアルカード (シェアード IRQ 使用) + + + + Adlib, SoundBlaster, SoundBlaster Pro, + ProAudioSpectrum, Gravis UltraSound, Gravis UltraSound MAX + Roland MPU-401 などのサウンドカード + + + + Matrox Meteor video フレームグラバー + + + + Creative Labs Video spigot フレームグラバー + + + + Omnimedia Talisman フレームグラバー + + + + Brooktree BT848 チップベースのフレームグラバー + + + + X-10 power コントローラ + + + + PC ジョイスティックおよびスピーカ + + + + FreeBSD は今のところ, + IBM社のマイクロチャネルアーキテクチャ (MCA) バスには + 対応していません. + + + + + インストールの下準備 + + FreeBSD のインストール方法はさまざまあります. それぞれの + インストール方法に対して, + どのような下準備が必要かをこれから説明します. + + + CD-ROM からインストールする前に + + あなたの CD-ROM + ドライブがサポートされていないタイプの場合は, ハードディスクの MS-DOS + パーティションからインストールする前に + に飛んでください. Walnut Creek の FreeBSD CD-ROM + からインストールする場合は, 大した下準備 + をしないでもうまくインストールできることでしょう (その他の + CD-ROM でもうまくいくでしょうが, その CD-ROM + がどうやって作られているか, 私たち + はわかりませんので確実なことは言えません). Walnut Creek の + CD-ROM に収録されている, install.bat + で直接 FreeBSD を立ち上げることもできますし, + makeflp.bat でブートフロッピーディスクを + つくることもできます. + + + もし FreeBSD 2.1-RELEASE を使っていて IDE CD-ROM + ドライブを持っている場合, install.bat のかわりに + inst_ide.bat もしくは + atapiflp.bat を使ってください. ] + + + DOS から最も楽なインタフェースを使いたい場合は + view と打ち込みます. そうすると DOS + でのメニューが立ち上がって, 可能なオプション + すべてを選択できます. + + あなたが UNIX + マシンでブートフロッピーディスクを作成している場合は, FreeBSD のインストール + を参考にしてください. + + DOS から, もしくはフロッピーディスクから起動をおこなうと, + メニュー ``Media'' から, インストールメディアとして CDROM を + 選択することで, + 配布ファイルをロードすることができるようになります. + 他の種類のインストールメディアは不要なはずです. + + + CD-ROM を取り出す前には umount /cdrom + と打ち込まなくてはならない ことを覚えておいてください. + 単純にドライブから取り出さないように! + + + インストールに入る前に, 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:// あなたのマシンのアドレス + を入力します. + + + + フロッピーディスクからのインストールの前に + + あなたがフロッピーディスクからのインストールをしなくては + ならない場合, + その理由はハードウェアがサポートされてなかったためか, + 単にいばらの道を通ることを楽しんでいるからでしょうが, + インストール用の + フロッピーディスクを用意する必要があります. + + 最低でも bin (基本配布ファイル) + ディレクトリ内のすべてのファイル を入れられるだけの 1.44 + メガバイトか 1.2 メガバイトのフロッピーディスク が必要です. + これらのフロッピーディスクを DOS で作成している場合は, + フロッピーディスクは「MS-DOS の FORMAT + コマンドでフォーマット」 されなくてはなりません. Windows + をお使いの場合は, Windowsの + ファイルマネージャの初期化コマンドを使用してください. + + 工場での初期化済みディスクを「信用しないでください」. + 念のためにあなた 自身でフォーマットし直してください. + ユーザからのトラブル報告の多くは + ちゃんと初期化されていないディスクを + 使用していたことが原因となっています. + 私が特にフォーマットし直してくださいと述べているのも, + この理由からです. + + 他の FreeBSD マシンでフロッピーディスクを作成している場合, + フォーマットすることは悪いことではありません. いちいち DOS + ファイルシステムのフロッピーディスクを作成する必要は + ありませんので, disklabel コマンドと + newfs コマンドを使って, 次のような手順で + (3.5 インチ 1.44 メガバイトディスク用の) UFS + ファイルシステムを 作成することもできます. + + &prompt.root; fdformat -f 1440 fd0.1440 +&prompt.root; disklabel -w -r fd0.1440 floppy3 +&prompt.root; newfs -t 2 -u 18 -l 1 -i 65536 /dev/rfd0 + + + + 5.25 インチの 1.2 メガバイトディスクの場合は "fd0.1200" + と "floppy5" にしてください + + + これで他のファイルシステムと同様に mount + して書き込むことができます. + + フォーマットされたフロッピーディスクを用意したら, + それらにファイル をコピーしなくてはなりません. + 配布ファイルはいくつかのかたまり にわかれていて, + これらのかたまり五つで一般的な 1.44 メガバイトの + フロッピーディスクに収まるようになっています. + フロッピーディスクに 入るだけファイルを入れていって, + 配布ファイルをすべてコピーしてください. + それぞれの配布ファイルはサブディレクトリに + コピーする必要があります. 例えば, + a:\bin\bin.aaとか, + a:\bin\bin.abといった感じです. + + インストールメディアの選択場面になったら, + “Floppy” を選択して, + 残りの指定をやってください. + + + + ハードディスクの MS-DOS + パーティションからインストールする前に + + ハードディスクの MS-DOS + パーティションからインストールするときは, まずファイルを + C:\FREEBSD にコピーします. CD-ROM + にあるディレクトリ構造を反映してコピーしなくてはなりません. + DOS の xcopy + コマンドの使用をおすすめします. + + 例えば, FreeBSD の最低限のインストールをするには, + このような手順で コピーします. + + C:\> MD C:\FREEBSD +C> XCOPY /S E:\BIN C:\FREEBSD\BIN\ +C> XCOPY /S E:\MANPAGES C:\FREEBSD\MANPAGES\ + + ここで, C: + ドライブには十分なディスクスペースが残っており, CD-ROM は + E: + ドライブに接続されているものとします. + + MS-DOS からたくさんの 配布ファイル + (DISTS) をインストールしたい + (そしてディスクの余裕がある) 場合は, それぞれ + C:\FREEBSD ディレクトリにコピーします + — BIN 配布ファイルは, + 最低限必要なものです. + + + + QIC/SCSI テープからのインストールの前に + + テープからのインストールは, おそらく FTP + を利用したオンライン インストールか, CD-ROM + を利用したインストールができない場合の, + もっとも簡単な方法でしょう. インストールプログラムは, + 以下のような コマンドを使用して, + 単純に配布ファイルがテープ上に tar されていることを + 期待しています. + + &prompt.root; cd /freebsd/distdir +&prompt.root; tar cvf /dev/rwt0 (または /dev/rst0) dist1 .. dist2 + + インストールに入る前に, テンポラリ (一時使用) + ディレクトリに 十分なディスクスペースを確保して, + 作成したテープのすべての + ファイルを格納できることを確認してください + (テンポラリディレクトリは 自分で選ぶことができます). + テープの特性上, ランダムにアクセスするこ とができませんので, + 一時的に極めて大量の容量を必要とします. + テープに準備しただけの量のディスクスペースを + 一時的に使用することに 留意してください. + + + インストールに入るときは, ブートフロッピーディスク + から立ち上げる + にテープをドライブに入れておかなくてはなりません. + さもないとインストール時のデバイス検出のときにテープを + 見つけられません. + + + + + ネットワーク経由のインストールの前に + + 三つの物理的な接続形態で, ネットワーク経由のインストールを + おこなうことができます. + + + シリアルポート + + SLIP もしくは PPP 方式. + + + + パラレルポート + + PLIP (laplink ケーブル使用) + + + + イーサネット + + 標準的なイーサネットコントローラ + (いくつかの PCMCIA カードにも対応) + + + + + SLIP のサポートはまだまだ原始的とも呼べる方法なので, + ラップトップと + 他のコンピュータをシリアルケーブルで接続するといった具合いに, + 直接接続してなくてはいけません. SLIP インストールは, + ダイヤル機能を 持っていませんので, + インストールするためには直接接続しなくてはなりません. PPP + インストールではダイヤルアップ接続が可能ですので, できれば PPP + 接続の 方を選択しましょう. + + もしもあなたがモデムを使用しているなら, + あなたに残された選択肢は ほぼ間違いなく PPP + インストールでしょう. インストール時に必要になりますので, + サービスプロバイダ (ISP) に関する情報を用意しておきましょう. + PPP ダイヤルの際は, + とてもシンプルな端末エミュレーターで作業する + ことになりますので, お手持ちのモデムで ISP にダイヤルするため + の“ATコマンド”の使い方を知っておく必要があります. + もし PAP や CHAP を用いるなら, + termを入力する前にset + authnameset authkey + といったコマンドを入力する必要があるでしょう. + これ以上の情報については, handbook や FAQ のユーザー PPP + エントリーを参照して下さい. 問題が起きた場合には, set + log local ... + コマンドを用いてログを画面に吐くこともできます. + + FreeBSD (2.0R 以降) + の動いている別のマシンと直接接続が可能でしたら, + “laplink” + パラレルポートケーブルで接続することを考えてみましょう. + パラレルポート経由のデータ転送スピードは, シリアルラインでの + 一般的なスピード (最高 50kbit/sec) よりもずっと高速ですので, + 高速にインストールすることができます. + + 最後になりますが, + ネットワークインストールのうちでもっとも高速なものとしては + イーサネットアダプタを使用するのがあげられます. FreeBSD + ではきわめて多くの PC イーサネットカードをサポートしています. + サポートされている カードの表 (と, 必要な設定) は, サポートされている設定一覧 + に書いてあります. サポートされている PCMCIA + カードを使っている場合には, ラップトップの電源を + 入れる「前」に差し込んでおくことにも注意してください. + 残念ながら今の FreeBSD は, + インストール時の活線挿抜には対応していません. + + ネットワークでの IP アドレス, + あなたのアドレスクラスに対応した ネットマスク, + マシン名を知っておくことも必要です. ネットワーク管理者の方に + たずねればどんな値を使ったらよいかを教えてくれるでしょう. + もしも他のホストを IP アドレスではなくて名前で引きたい場合, + ネームサーバとゲートウェイ のアドレスも知らなくてはなりません + (PPP をご使用の場合は, プロバイダの IP アドレスになります). + これらのうちのすべて, またはいくつかを 知らない場合は, + イーサネット経由でのインストールを始める前に「まず」 + ネットワーク管理者に相談してください. + + 何らかのネットワーク接続ができたら, 続けてインストールを + NFS か FTP 経由でおこないます. + + + NFS インストールのための下準備 + + NFS インストールはまったく単純明解です. FreeBSD + の配布ファイルを サーバの好きな場所にコピーしておいて, + メディア選択で NFS を選択します. + + もしサーバが “privileged (特権) ポート” + へのアクセスのみをサポート している場合, (Sun + ワークステーションの標準ではこうなっています) + インストールを進める前に Options メニューを選択して, + ``privileged port'' オプションを選択してください. + + イーサネットカードの性能が悪くて, + 転送速度が遅くて困っている場合も, 適当な Options + を選択するとよいでしょう. + + NFS 経由でインストールするためには, サブディレクトリも + 含めたマウントにサーバが対応している必要があります. 例えば, + FreeBSD &rel.current; の配布ファイルが + ziggy:/usr/archive/stuff/FreeBSD + にあるとすると, マシン ziggy では + /usr や + /usr/archive/stuff だけではなく, + /usr/archive/stuff/FreeBSD + の直接マウントが可能に なっていなければなりません. + + FreeBSD の /etc/exports + ファイルでは, このことは + オプションによって制御されています. 他の NFS + サーバの場合だとまた話が違ってくるかもしれません. + もしもサーバから Permission Denied + というメッセージが 返ってくるようでしたら, + サブディレクトリマウントをちゃんと + 有効にできていないことが考えられます. + + + + FTP インストールのための下準備 + + FTP 経由のインストールは, FreeBSD &rel.current; + の最新バージョンを ミラーしているどのサイトからでも可能です. + 世界中の妥当な FTP サイトの + 選択肢をメニューに並べておきました. + + このメニューに出ていない他の FTP サイトからインストール + する場合や, ネームサーバの設定に問題が生じた場合は, + メニューでサイト “Other” を選ぶところで, + お好みの URL でサイトを指定することができます. URL + として直接 IP アドレスで指定してもよく, + 直接指定した場合はネームサーバ がなくても FTP + インストールが可能になります. 例えば, + + ftp://165.113.121.81/pub/FreeBSD/&rel.current;-RELEASE + + のような感じですね. + + FTP 経由のインストールモードとして, このようなものが + 使用可能です: + + + FTP Active + + すべての FTP 転送の際に “Active” + モードを使用します. + ファイアウォール内部のマシンではうまく動きませんが, + passive モードをサポートしていない古い FTP サーバでも + 動作します. passive モードでの FTP 転送 (こちらが + デフォルトです) が失敗した場合は, active + を使ってください. + + + + FTP Passive + + すべての FTP 転送の際に “Passive” + モードを使用します. このモードを使用することで, + ランダムポートアクセスインを + 許さないファイアウォールを + 越えることができるようになります. + + + + + + Active, passive モードは “proxy” + 接続と同じではありません! proxy FTP サーバは FTP 要求 + を受け付け実際の FTP サーバへ転送します. + + + 通常 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 + からファイルをもってきます). + + + + + + FreeBSD のインストール + + インストールの下準備を適切に書き留めておけば, なんの + 問題もなく FreeBSD のインストールができることと思います. + + 何かうまくいかなかった場合は, あなたが使おうとしている + インストールメディアのことが書いてある箇所まで戻って + もう一度読むとよいでしょう. おそらく最初読んだときに + 見落していた, 有効なヒントがあるものと思います. + ハードウェアの問題が出てきたとか, FreeBSD がまったく + 立ち上がらない場合は, boot フロッピーディスクに提供されている + Hardware Guide を読んで, + 何か解決方法はないか探してください. + + FreeBSD のブートフロッピーディスクには, + インストールをおこなうために + 必要と思われるすべてのオンラインドキュメントを用意してあります. + もしもそのドキュメントがお望みのものでないようでしたら, + 私たちはあなたが何にもっとも困っているのかを知りたいと思います. + コメントを &a.doc; にお送りください. FreeBSD + のインストールプログラム (sysinstall) を, うっとうしい + “step-by-step” ガイドなしに, + プログラム自身で使用方法がわかるようにするのが最終目標です. + 目標達成までには時間がかかりそうですが, ともかくそれが + 目標なのであります. + + 閑話休題. ここに, + “典型的なインストールの手順”を まとめてみましたので, + お役にたてるものと思います. + + + + ブートフロッピーディスクから起動します. + ハードウェアの性能に よりますが, 起動には 30秒から + 3分かかります. 起動したら 初期選択画面が出てくるでしょう, + もしもフロッピーディスクから まったく起動しなかったり, + どこかの段階で起動が止まってしまった 場合は, + ハードウェアガイドの Q&A を読んで, 理由を + 探ってみます. + + + + F1 キーを叩きます. + メニューシステムとインストールプログラム + 全般に対しての使い方が表示されます. このメニューシステムを + 使ったことがない場合は, + 徹底的に読んでください. + + + + Options を選択し, 他に必要な特別な選択を + おこないます. + + + + 典型的なインストールでおまかせしたい方は Novice を, + インストールのそれぞれの段階をいちいちコントロールしたい方は + Custom を, (可能であれば適切なデフォルトを使用して) + 簡単にさっさと済ませたい方は Express を, + それぞれ好みに応じて選んでください. FreeBSD + を初めて使う方には, Novice を一番におすすめします. + + + + final configuration メニューからは, メニュー形式のさらに + 進んだ設定をおこなうことができます. ネットワーク周りの + 設定は, 特に CD-ROM / テープ / フロッピーディスクから + インストールして, まだネットワーク設定をおこなっていない + 人にとっては特に重要でしょう. インストールの時点できちんと + 設定しておけば, ハードディスクからシステムを立ち上げ直した + 時点でネットワーク接続ができるようになっていることでしょう. + + + + + + + MS-DOS ユーザのためのQ&A + + 多くのFreeBSD ユーザは, MS-DOS が入っている PC に FreeBSD を + インストールしたいと考えます. そのようなシステムに FreeBSD + をインストールする際によく聞かれる質問を集めて あります. + + 助けて! ディスクスペースが余ってないのです. + 最初に MS-DOS のファイルを全部削除しないといけませんか? + + + もしあなたのマシンですでに MS-DOS が走っていて, FreeBSD の + インストール用の空きスペースが少ないか, まったくない場合でも + 大丈夫です. FreeBSD の CD-ROM や, FTP サイトの + tools ディレクトリに FIPS + プログラムというのがありますが, これが非常に役立ちます. + + FIPS を使えば, すでに存在している MS-DOS のパーティションを + 二つに分けることができ, さらにもともとのパーティションは + 残してくれて, 二つめのパーティションを FreeBSD の + インストールに使用することができるようになります. まず DOS6.xx + についてくる DEFRAG か, Norton Disk ツールを使って, MS-DOS + パーティションからフラグメント情報を取り去って, その後に FIPS + を走らせます. FIPS ユーティリティから必要な情報が 手に入ります. + その後マシンを立ち上げ直して, 空いた場所に FreeBSD + をインストールします. どのくらいの空きスペースが + インストールに必要かは, Distributions + メニューを 参考にしてください. + + FreeBSD で MS-DOS の圧縮ファイルシステムにアクセス + できますか? + + いいえ. もし Stacker(tm) や DoubleSpace(tm) のような + ユーティリティをお使いの場合, FreeBSD は非圧縮の部分にしか + アクセスできません. 残りの場所は一つの大きなファイルとして + (stack された, もしくは doublespace されたファイルとして) + 見えます. + そのファイルを削除しないでください!! + 削除してしまうと後できっと後悔します. + + 非圧縮の MS-DOS の基本区画を作って, そちらを MS-DOS と + FreeBSD とのやり取りに使うのがよろしいでしょう. + + MS-DOS + 拡張フォーマットをマウントできますか? + + はい. DOS 拡張パーティションは FreeBSD + の他の“スライス”の最後に マップされます. 例えば + D:ドライブ が + /dev/sd0s5, + E:ドライブが + /dev/sd0s6, といった具合いです. もちろん, + この例では拡張 パーティションが SCSI ドライブ 0 + にあることを仮定しています. IDE ドライブでは当然, + sdwd となります. + 他の DOS ドライブを マウントするのと同様に, + 次のようにして拡張パーティションもちゃんと + マウントできます: + + &prompt.root; mount -t msdos /dev/sd0s5 /dos_d + + MS-DOS のバイナリを FreeBSD + で実行できますか? + + BSDI が BSD のコミュニティに対して寄贈した DOS + エミュレータが あり, これが FreeBSD 用に移植されています. + + またこれとは別に, ports + コレクション には, pcemu という (技術的に) + 素晴らしいアプリケーションがあり, これをつか うことで多くの + MS-DOS のテキストモードで動くプログ ラムを完全な 8088CPU + のエミュレーション環境で走らせることがで きます. + + + + diff --git a/ja/handbook/internals/chapter.sgml b/ja/handbook/internals/chapter.sgml new file mode 100644 index 0000000000..d510f32188 --- /dev/null +++ b/ja/handbook/internals/chapter.sgml @@ -0,0 +1,2046 @@ + + + + FreeBSD の内部 + + + FreeBSDのブート処理の流れ + + 原作: &a.phk;. v1.1, April 26th. + + 訳: &a.jp.nakai;. September 6 1996. + + FreeBSDのブートには基本的に3つの段階があります: + カーネルの読み込み, ルートのファイルシステムの決定, そして + ユーザ領域にあるものの初期化です. このことは下に述べる + いくつかの興味深い可能性につながっています. + + + カーネルの読み込み + + 現在, カーネルの読み込みには基本的に下に挙げる3つの方法が + あります: + これらはカーネルが次に何をしたらいいのかという情報をカーネルに + 与えます. + + + Biosboot + + Biosboot は “ブートブロック” + に相当するもので, 2つのファイル から構成されており, + フロッピーディスクやハードディスクのブートを + 開始する側の 8K + バイトにインストールされています. + + Biosboot は FreeBSD のファイルシステムからカーネルを + 読み込むことができます. + + + + Dosboot + + Dosbootは DI. Christian + Gusenbauerによって書かれましたが, + 不幸にしてこの場合には, コードのある一部分が + マイクロソフトの + コンパイラ向けに書かれているため, FreeBSD + 単体ではコンパイル することはできません. + + Dosboot は MS-DOS のファイルから, またはディスクの + FreeBSD ファイルシステムのパーティションから + カーネルをブートします. これは MS-DOS + システムのハイメモリ領域に潜んでいる + メモリマネージャ等の + さまざまな怪しい代物とメモリの取り合いをして, + なんとかブートしています. + + + + Netboot + + Netboot + はサポートされているイーサネットカードを検出し, BOOTP + や TFTP, NFS + を使ってブートするカーネルを探そうとします. + + + + + + + ルートファイルシステムの決定 + + カーネルが読み込まれ, + ブートプログラムがカーネルに移行したら, + カーネルは自身の初期化をし, + どんなハードウェアが組み込まれいるか を決定し, + それからルートファイルシステムを探さなくてはなりません. + + 現在サポートされているルートファイルシステムは + 次の通りです : + + + UFS + + UFS は, もっとも一般的なタイプのルートシステムです. + フロッピーディスクやハードディスク上に存在します. + + + + MSDOS + + 技術的に可能ですが, あまり有用ではありません. + なぜならば, FAT + ファイルシステムではリンクやデバイスノードなどの + “UNIX 主義” を実現できないからです. + + + + MFS + + MFS はカーネル内部に組み込みになっている UFS + ファイルシステムです. つまり MFS を機能させるのに + ディスクやフロッピーディスクなどのハードウェアは + 必要ではありません. + + + + CD9660 + + CD9660 は CD-ROM + をルートファイルシステムに使用したものです. + + + + NFS + + これはルートシステムにファイルサーバを使用していて, + 基本的に ディスクレスのマシンのためにあります. + + + + + + + ユーザ領域にあるものの初期化 + + ユーザ領域で動作させるようにするために, + カーネルが初期化を終えると, カーネルは pid == + 1のプロセスを生成し, ルートファイルシステム + 上のプログラムを実行します. このプログラムは通常 + /sbin/init です. + + /sbin/init + を別なプログラム置き換えてしまうことは可能ですが, そのプロセス + には以下のような制約があります: + + pid が 1 のプロセスには stdin/stdout/stderr + は割り当てられていませんので, + プログラムは自分でこれらをオープンしないとなりません. + このプロセスが終了するとカーネルはパニックメッセージを表示して + 停止します. + また, このプロセスに対するシグナル処理は特殊です. + + この例として, インストール用のフロッピーディスクにある + /stand/sysinstallがあります. + + + + 興味深い連係 + + カーネルを MFS でブートするのには次のような特別の + /sbin/init を使います. + + + A — DOS を使う場合 + + + + C: を + /C: にマウントします. + + + + C:/freebsd.fs を + /dev/vn0 + にアタッチします. + + + + /dev/vn0 を + /rootfs + にマウントします. + + + + シンボリックリンクを作ります. + /rootfs/bin -> + /bin + /rootfs/etc -> + /etc + /rootfs/sbin -> + /sbin (etc...) + + + + これでハードディスクのパーティションを切り直さずに + FreeBSD を 使うことができます. + + + + B — NFS を使う場合 + + NFS はサーバ:~you/FreeBSD を + /nfs にマウントし, + ルートディレクトリを /nfs + に変更して, そこで /sbin/init + を実行します. + + これで FreeBSD をディスクレスで実行できますが, NFS + サーバを コントロールできないままです... + + + + C — X-server を起動する場合 + + これで X ターミナルが手に入りました. これは, + これでハードウェア に費用を割いたりするよりはいい, + と上司が主張した, Windows で + 動作する遅くて何がおこなわれているのか + 見ることができるような すすけた X Window + エミュレータなんかよりよいものです. + + + + D — テープを使う場合 + + /dev/rwd0 + のコピーを取って, リモートにあるテープ + ステーションやファイルサーバに書き込んでください. + + これで一年前に取っておくべきだった + バックアップをやっと 取ることができました. + + + + E — ファイアウォール/Web + サーバとして動作させる場合 + (私の知っている範囲で...) + + + これは特に面白いもので, + 書き込み禁止のフロッピーディスクから ブートができて, + ルートのファイルシステムに書き込むことができる + というものです. + + + + + + + + PC におけるメモリの利用 + + 原作: &a.joerg;. + 16 Apr 1995. + + 訳: &a.jp.tomo;. + 29 Oct 1996. + + FreeBSD が i386 + プラットフォーム上でどのようにメモリを使うかに + ついての説明です. + + ブート部分は0:0x7c00にロードされ, + すぐに自分自身を 0x7c0:0に移します. + (これは手品ではなく, 単なる%cs + セレクタのための調節であり, + ljmpにより行われます. ) + + それから最初の 15 セクタを 0x10000 + (biosboot の Makefile のなかの + BOOTSEG部分)にロードし, 作業領域のスタックを + 0x1fff0以下に セットします. このあと, boot2 + に飛びます. つまり, boot1 自身と (ダミーの) DOS + パーティションテーブルを飛び越えて, %csセレクタを 調節します + — この時点ではまだ16ビットモードです. + + boot2 はブートファイルを要求し, + a.outヘッダを調べます. + 0x00ffffffによってファイルエントリポイントを + (通常は0xf0100000に)マスクし, ロードします. + このため, 通常のロードポイントは 1MB + (0x00100000) になります. ロードしている間, + リアルモードでBIOSを使うため, ブートコードは, + リアルモードとプロテクトモードの間を行ったり来たりします (訳注: + これは, BIOSがリアルモード用に書かれていて, + ロードすべき領域がリアルモードではアクセスできない1MBより上位の + アドレスであることから, ブートコードがリアルモードと + プロテクトモードを切り替えながら動作するためです). + + ブートコード自身はプロテクトモードで + %cs%ds/%es 用に + セグメントセレクタ 0x18 と + 0x20 を使い, + リアルモードに戻るのに0x28を使います. + 最終的にカーネルはアドレス空間全体をカバーできるようなダミーの + ディスクリプタを参照して%cs + 0x08%ds/%es/%ss + 0x10でスタートします. + + カーネルはそのロードポイントで起動されます. + 別の(高位)アドレスにリンクされるので, + ページテーブルやページディレクトリなどが適切に設定され, + ページングが有効になり, カーネルがリンクされたアドレスで + 動作するようになるまでは, カーネルはロードアドレスからの + 相対アドレス (PIC: position independent code) を用いて + 実行されなければなりません. + + 寄贈: &a.dg;. + 16 Apr 1995. + + カーネルの BSS セグメントの直後の物理ページ (実メモリ) に + proc0 (訳注: プロセス番号 0, swapper) のページディレクトリや + ページテーブル, Uページが配置されます. + 仮想記憶機構が初期化された少しあと, + 0x1000-0x9ffffの実メモリとカーネル (text + + data + bss + 上記の proc0 に関わるもの + その他) + の後ろの実メモリは, 通常の仮想記憶ページの形で利用可能となり, + グローバルな空きページリストに追加されます. + + + + DMAとはどういったものでどういう働きをするのか + + 原作: &a.uhclem; + 訳: &a.jp.yasu; + 10 December 1996. 最終更新日 8 October 1997. + + Direct Memory Access (DMA)は, 中央演算処理装置 + (CPU)からの干渉なく + データを計算機中である場所から別の場所に動かすための手法です. + + + DMA 機能の実装の方法はそれぞれの + 計算機アーキテクチャ間で異なるもので あるため, + ここでの議論はIBMパーソナルコンピュータ(PC), PC/AT + とその互換機における DMA + サブシステムの実装と働きに限定します. + + PCの DMAサブシステムは, Intelの 8237 + DMAコントローラをベースにして います. + 8237はそれぞれ独立にプログラムできる4つのDMAチャネルを持ち, + それぞれどのチャネルもいつでもアクティブにできます. + これらのチャネルは順に 0, 1, 2, 3となっています. PC/ATからは, + セカンド 8237 チップが追加され,それらは 4, 5, 6, 7と + なっています. + + オリジナルの DMAコントローラ(0, 1, 2, 3)は, + 1回の転送で1バイト 転送します. セカンドDMAコントローラ(4, 5, 6, + 7)は1回で 隣接する2つのメモリ番地から 16ビット転送します. + ここで, 最初のバイトは通常偶数のアドレスになります. + 2つのコントローラは全く同じものであり, 転送量が異なるのは + セカンドコントローラがシステムに直結しているためです. + + 8237 は個々のチャネルについて, + DRQと-DACKという2つの電気信号を 持っています. その他に, HRQ + (Hold Request), HLDA (Hold Acknowledge), -EOP (End of + Process)があり, バス制御信号として -MEMR (Memory Read), -MEMW + (Memory Write), -IOR (I/O Read), and -IOW (I/O + Write)があります. + + 8237 DMACは, いわゆる“fly-by” + DMAコントローラです. これは, データの移動を行う際に, データは + DMACチップを通過せず, DMACチップに格納されないことを意味します. + また, DMACはI/Oポートとメモリアドレス間でのみデータを + 転送することができますが, + 2つのI/Oポートもしくは2つのメモリアドレス + 間ではできません. + + + 8237 は, 非 “fly-by”モードでは, + 互いに接続された + 2つのチャネルでのメモリ-メモリ間でのDMA操作を許可します. + しかし, PC メーカは, + ただでさえ乏しいこのリソースをこんなふうに 使ったりしません. + なぜなら, + CPUを使用してメモリ間のデータを動かす方が早いからです. + + + PC アーキテクチャでは, それぞれのDMAチャネルは, 通常 + 与えられた DMA + チャネルを使用するハードウェアがそのチャネルについて + DRQ線を使って転送を要求した時のみ動作します. + + + DMA転送の例 + + DMA転送の発生と処理の手順の例をあげてみましょう. + この例では, フロッピーディスクコントローラ (FDC)が + ディスケットから1バイト読み込んで, + DMAを使って,メモリの0x00123456番地に 格納したいとします. + 処理は, FDCが, DRQ2信号(DMAチャンネル2に + 対するDRQ線)を有効にして + DMAコントローラに要求を伝えることで開始されます. + + DMAコントローラは DRQ2 + シグナルが有効になったことを記録します. + するとDMAコントローラはDMAチャネル2がプログラムされ, マスクが + かかっていない(有効になっている)ことを確認します. 同様に, + DMAコントローラは, 他のDMAチャネルがアクティブまたは + アクティブになろうとしていないこと, + そしてより高い優先度を持って いないことを確認します. + 一旦これらのチェックが完了すると, DMACはDMACがバスを使うために + バスを開放するようにCPUに要求します. + DMACはCPUにHRQ信号を送ってバスを要求します. + + CPUはHRQ信号を検出し, 現在の指示の実行を完了します. + 一旦プロセッサがバスを開放することができる状態になると, 解放を + 行います. 通常は CPU により駆動される信号 (-MEMR, -MEMW, + -IOR, -IOW, その他)を すべてハイインピーダンス + (ハイともローとも指定しない)状態にした後, CPUは + HLDA信号を有効にして DMAコントローラにバスを明け渡したことを + 伝えます. + + プロセッサによっては, CPUはバスを使用しないいくつかの + 命令を追加して実行することもできますが, + しかし,プロセッサの内部キャッシュや + パイプライン以外のメモリから + 何か読み出すといった指示に到達したら結局 CPU + は待たなくてはなりません. + + ここで,DMACが バスを“託される”と, DMACはその + -MEMR, -MEMW, -IOR, -IOW 出力信号をアクティブにし, + DMACから出力されるアドレスは 0x3456にセットされます.これは + 転送しようとする特定のメモリ番地をバイトで + 指示するのに使われます. + + すると DMAC は DMA + 転送をリクエストしたデバイスに転送が始まることを + 知らせます.これは -DACK + 信号をアクティブにすることで行われます. + フロッピーディスクコントローラの場合は, -DACK2を + アクティブにすることで行われます. + + バスのデータ線に転送されるバイトにを出力することについては + フロッピーディスクコントローラが責任をもつことになります. + もし,フロッピーディスクコントローラがバス上にバイトデータを + 出力するのに余計な時間を必要としなければ + (もし周辺装置がもっと時間を必要とする場合には, READY信号を + 経由してDMACに通知します), DMAは 1 DMAクロック待ち, + メモリにバス上のバイトデータを格納するために -MEMW および -IOR + 信号を解除します. そして + FDCはバイトデータが転送されたことを認識します. + + DMAサイクルは1度に1バイトしか転送しないので, + FDCはDRQ2信号を止めて, DMACに転送が終了したことを知らせます. + DMACは-DACK2信号を解除して, FDCはバス上へのデータ出力を + 停止しなくてはならないことを知らせます. + + 次にDMACは他のDMAチャネルのいずれかに要求がきていないか + チェックを行います. + もしどのチャネルのDRQも有効になっていなければ, + DMAコントローラは処理を完了して, -MEMR, -MEMW, -IOR, -IOW + および アドレス信号をハイインピーダンス状態にします. + + 最後に, DMAはHRQ信号を解除します. + CPUはこれを見ると,HOLDA信号を 解除します. そしてCPUは自らの + -MEMR, -MEMW, -IOR, -IOW 信号および アドレス線を有効にし, + 命令の実行やメインメモリや周辺機器へのアクセスを + 再開します. + + 典型的なフロッピーディスクの1セクタについては, + 上記のプロセスが それぞれのバイトについて1回行われ, + 全部で512回繰り返されます. 1 バイト転送される毎に, DMAC + 内のアドレスレジスタはインクリメントされ, 同じくDMAC内にある, + 何バイト転送すればよいかを示すカウンタが + デクリメントされます. + + カウンタが0になると, DMAはEOP信号を送ります. この信号は + カウンタが0であり, DMAコントローラがCPUによって再び + プログラムされるまで, これ以上データは転送されないことを + 示すものです. + + このイベントはターミナルカウント(TC)とも呼ばれます. + EOP信号は1本しかありません. そして, 一度にアクティブにできる + DMAチャネルは一本だけなので, + 現在アクティブであるDMAチャネルこそが, + たった今処理を終了したDMAチャネルだと言うことができます. + + もし, + バッファの転送が完了した時に周辺機器から割り込みを発生させたい + とき, 周辺機器は + -DACKn信号およびEOP信号の両方が同時に発信されたか + どうかをテストします. その場合, DMACはCPUの介在がなければ + これ以上はその周辺機器についての情報を転送しません. その後で, + 周辺機器はプロセッサに割り込みを生じさせるために, + 何らかの割り込み信号を発生させることができます. + PCアーキテクチャ においては, + DMAチップ自身が割り込みを生じさせることはできません. + 周辺機器とそれに関連するハードウェアが割り込みを生成する責任を + 持ちます. また, DMAを使用する周辺機器が割り込みを使用しない + 可能性もあります. + + DMAC が要求を出したときには CPU は常にバスを DMAC + に開放しますが, この動作は, DMAC + がアクティブになった時にプロセッサが命令を実行するのに + かかる時間がわずかに変化することを除いては, アプリケーション, + オペレーティングシステムの両方からはわからないということを + 理解することが重要です. そのため, + プロセッサが確かにDMA転送が完了したことを知るためには, + 周辺装置や DMA + チップ中のレジスタを調べたり,周辺装置からの割り込みを + 受け取る必要があります. + + + + DMA ページレジスタ および 16メガ アドレス空間制限 + + これまで述べたのとは異なり, DMACはアドレス線を 0x0123456 + にセットする 代わりに 0x3456 + だけをセットすることにあなたは気づいたかも しれません. + この理由について少し説明します. + + オリジナルのIBM PCがデザインされた時, IBMは, + DMACと割込み制御チップの 両方を, 8085(8ビットプロセッサで, + 16ビットのアドレス空間(64k)を持つ)と + 組み合わせて使うように設計されたチップを使うことを選びました. + IBM PCが64k以上のメモリをサポートしていたため, + DMACが64kを越えるメモリ番地に読み込み又は書き込みを行うために + 変更を行う必要が生じました. + この問題を解決するためにIBMが行ったのは, + それぞれのDMAチャネルに, + 読み込み元または書き込み先のアドレスの + 上位ビットを保持するための 外部的なラッチを追加することでした. + DMAチャネルがアクティブな時はいつでも, + このラッチの内容はアドレスバスに書かれて, + そのチャネルのDMA操作が 終了するまでそこに保持されます. IBM + はこれらのラッチを “ページレジスタ” + と呼んでいます. + + そのため上記に示した例では, + DMACはアドレスの0x3456の部分をバス上に 置き, + DMAチャネル2に対するページレジスタは, 0x0012xxxxをバス上に + 置きます. + これらの2つの値が組み合わされてアクセスされるメモリ中の完全な + アドレスを形成します. + + ページレジスタのラッチはDMAチップとは独立であるので, + 読み込まれる又は書き込まれるメモリ領域は, 64kの物理的境界を + またいではなりません. 例えば, もし + DMACがメモリの0xffff番地をアクセスした場合, データの転送後, + DMACはアドレスレジスタをインクリメントし, + 0x0000番地にある次のバイトを アクセスします. + 0x10000番地ではありません. + これはおそらく意図されたものとは異なっているでしょう. + + + “物理的な” 64Kの境界を 8086モードの + 64k“セグメント”と混同してはいけません. + セグメントは, セグメント + レジスタに数学的にオフセットレジスタを + 加算して作られるものです. + ページレジスタにはアドレスのオーバーラップも無く, 数学的に + OR を取られることもありません. + + + さらに複雑なことには, PC/ATでは外部のDMAアドレスのラッチは + 8ビットしか保持しません. よって8+16で24ビットになり, これは + DMAが0から16メガの間のメモリ番地しか指し示せないことを + 意味します. + 16メガ以上のメモリを持ったより新しいマシンにおいても, + 標準的なPCコンパチブルなDMAでは16メガ以上のメモリ番地には + アクセスできません. + + この制限を避けるために, オペレーティングシステムは 16 + メガ以下にある物理的な 64k の境界をまたがない領域に RAM + バッファを 予約します. そして, + DMACはデータを周辺機器からそのバッファに + 転送するようにプログラムされます. 一旦DMACがこのバッファに + データを動かすと, オペレーティングシステムは本当にデータを + 格納したいアドレスにバッファからデータをコピーします. + + 16メガを越えるアドレスからDMAベースの周辺機器にデータを + 書き込む際には, データは16メガ以下に位置したバッファから最初に + コピーされなくてはならず, その後, + DMACはバッファからハードウェアに + データをコピーすることができます. FreeBSDでは, + これらの予約バッファは + “バウンスバッファ”と呼ばれます. MS-DOSの世界では, + これらは“スマートバッファ”などと呼ばれます. + + + 82374と呼ばれる8237の新しい実装においては, + ページレジスタを16ビットで指定して, + バウンスバッファを使用しなくても, 32 + ビットのアドレス空間全体にアクセスすることが可能です. + + + + + DMA操作モードとその設定 + + 8237 DMA はいくつかのモードで動作します. 主なモードは, + 以下のとおりです. + + + シングル転送モード + + シングルバイト(もしくはワード)が転送されます. + DMAは1バイト毎にバスを開放し, + 再び要求しなくてはなくてはなりません. これは一般に, + すぐにはデータのブロック全てを転送できないデバイスに + よって使用されます. + 周辺装置は次の転送の準備ができる毎にDMAを要求します. + + + 標準的な PC + コンパチブルなフロッピーディスクコントローラ(NEC 765)は + 1バイトのバッファしか持たないので, + このモードを使用します. + + + + ブロック/デマンド転送モード + + 一旦 DMAC がシステムバスを取得すると, + 最大64kまでのデータブロック 全体が転送されます. + もし周辺装置が余分に時間を必要とするときは, + 転送を一時中断するためにREADY信号を有効にします. + READY信号は過度に使われるべきではなく, + 遅い周辺装置の転送の場合は + シングル転送モードを代わりに使うべきです. + + ブロック転送モードとデマンド転送モードの違いは, + 一旦ブロック転送が 始まると, 転送カウンタか 0 + になるまでそれが行われるところです. DRQ は -DACK + が有効になるまでの間は有効でなければなりません. + デマンドモードは DRQ が有効な間転送が続けられます. + DRQが有効でなくなった場合, DMA はその時点で転送を中断し, + バスを解放して CPU に返します. + その後, DRQが有効になると, + 転送は中断したところから再開されます. + + データの転送, + 特に転送に使われるメモリ番地が16Mを越える場合に, CPU + を使った方が効率がよくなるまで CPU + の速度が向上する以前の + 古いハードディスクコントローラはデマンドモードを + 使っていました. + + + + カスケード転送モード + + このメカニズムは DMA + チャネルがバスを要求することを許可する ものですが, + 接続されたデバイスはバス上のアドレス情報の配置に + ついてDMACに代わって責任を持ちます. + これは“バスマスタ” + と呼ばれる技術の実装に利用されます. + + カスケードモードの DMA + チャネルがバスのコントロールを受け取ると, DMA + は通常行われるようなバス上のアドレスと I/O + コントロール信号の 出力を行いません. 代わりに, + DMAはアクティブなチャネルの -DACK信号を + 有効にします. + + この時点で, アドレスとバスコントロール信号の供給は + DMAチャネルに接続された周辺機器が担当します. + 周辺機器はシステムバスの完全なコントロールを行い, 16 + メガ以下の任意のアドレスの読み込みおよび書き込みを + 行うことが できます. 周辺機器はバスの使用を終えると DRQ + 線を無効にするので, DMA コントローラは CPU + もしくは他のDMAチャネルに制御を返すことが + できます. + + カスケードモードは複数の DMA + コントローラを相互接続するのに 使われます. + PC内ではDMAチャネル4がまさにこの用途に使われています. + 周辺機器がDMAチャネル0, 1, 2, 3でバスを要求すると, + スレーブDMAコントローラは HLDREQ を有効にしますが, + この線はCPUではなく, + 実際にはプライマリDMAコントローラのDRQ4に + 接続されています. その後, + チャンネル4になにか仕事があるものと見なしたプライマリの + DMAコントローラは HLDREQ を使ってCPUにバスを 要求します. + バスが与えられると, -DACK4が有効になりますが, + この線は実際にはスレーブDMAコントローラの HLDA信号に + 接続されています. + スレーブDMAコントローラはその後要求したDMAチャネル (0, + 1, 2, 3) に対してデータを転送するか, + SCSIコントローラのような + バスマスタリングを要求する周辺機器にバスを許可します. + + + このような配線がおこなわれているため, + PC/ATシステムの 周辺機器ではDMAチャネルは 0, 1, 2, 3, 5, + 6, 7のみが使用できます. + + + 初期のIBM PCコンピュータでは, DMAチャネル0は操作の + リフレッシュのために予約されていますが, + 最近のシステムでは通常, + 周辺機器によって使用することができます. + + + 周辺機器がバスマスタリングを行っている時は, + システムバスを保持している間絶えずメモリに + もしくはメモリから データを転送することが重要です.もし, + 周辺機器がこのように できないときは, + システムがメインメモリのリフレッシュを + 行なえるようにしばしばバスを開放しなくては + なりません. + + 全ての PC でメインメモリとして使われるダイナミック + RAM は, 中身が “満たされている” + ビットを保持するため + 頻繁にアクセスされなくてはなりません. ダイナミック RAM + は, それぞれが 1 ビットのデータを記憶するコンデンサが + たくさん集まって構成されています. + これらのコンデンサは充電された 状態で + 1, 充電されていない状態で + 0 を表します. + 全てのコンデンサは放電するため, 1 + の値を保持するために, + 一定の間隔で電力を加える必要があります. 実際に RAM + チップは RAM の適切な場所に電力を送る作業を行ないますが, + メモリのリフレッシュ作業が RAM を普通にアクセスする時と + 衝突しないように, それをいつ行なうかを + コンピュータが休止状態の時に知らせなくてはなりません. + もしコンピュータがメモリのリフレッシュを + 行なえない場合は, + メモリの中身はわずか数ミリ秒で壊れてしまいます. + + メモリの読み込みと書き込みのサイクルは + リフレッシュサイクルとして カウントされる(ダイナミック + RAM のリフレッシュサイクルは + 実際には不完全なメモリ読み込みサイクルになります)ので, + 周辺機器のコントローラが連続するメモリ番地から + データの読み込み または書き込みを行う間は, + メモリの全てがリフレッシュされます. + + バスマスタリングはいくつかの SCSI + ホストインターフェースやその他の + ハイパフォーマンスな周辺機器コントローラに + 見られます. + + + + 自動初期化転送モード + + このモードにおいてDMAはバイト, ブロック, + デマンド転送を行いますが, DMA転送カウンタが0になると, + カウンタとアドレスはDMAチャネルが + もともとプログラムされた時のものに戻されます. これは, + 周辺機器が転送を要求している間は転送が続けられることを + 意味します. + 転送領域としてDMACにプログラムされた固定バッファの中で, + 出力操作でDMACがデータを読み出す前もって新しいデータを + 書き込んだり入力操作でDMACが書き込んだあとに, + そこから新しいデータを読み出す作業は CPU + が受け持ちます. + + このテクニックは, “サンプリング” + 用のバッファが小さいもしくは + それを持たないオーディオデバイスによく使われます. + この“環状” バッファの管理は更なる CPU + オーバーヘッドになりますが, DMAカウンタが0になり, + 再プログラムされるまでDMAが停止してしまう + ことによって起きる遅延は, + この方法でしかなくす事ができない 場合もあります. + + + + + + + DMAのプログラミング + + プログラムされるDMAチャネルは, 通常, 設定を行う前に + “マスクする”べきです. + これはハードウェアが予期せずそのチャンネルに対してDRQを有効に + した場合, たとえ全てのパラメータが + 満たされてない場合や更新されていない場合でも, DMACは + それに応答してしまう可能性があるからです. + + マスクを行ってから,ホストは転送の方向(メモリからI/O, + もしくはI/Oからメモリ)と, 転送に使用するDMA操作のモード + (シングル, ブロック, デマンド, カスケードなど)を設定し, 最後に + アドレスや転送の長さを設定します. + 設定される長さはDMACに転送させたい量よりも1少なくなります. + アドレスや転送長のLSBとMSBは同じ8ビットI/O + ポートに書き込まれます. そのためDMACが最初のバイトをLSBとして, + 2番目のバイトをMSBとして 受け取ることを保証するために, + 最初に別のポートに書き込みを行なって LSBとMSB + の判別を行なうフリップフロップをクリアしておく必要があります. + + + そして,DMAのページレジスタを更新します. + これはDMACの外部にあり I/O + ポートの別のセットを通してアクセスされます. + + すべての設定ができると, + DMAチャネルはマスクを解除することができます. + そのDMAチャネルは“準備ができた”とみなされ, + そのチャンネルのDRQが 有効になると応答します. + + 8237のプログラミングの正確な詳細については, + ハードウェアデータブックを参照してください. PCシステムにおける + I/O マップについても参照する必要があるでしょう. このマップには + DMA およびページレジスタのポートがどこに位置するのかを + 書いてあります. + 以下に完全なポートのマップテーブルを示します. + + + + DMAポートのマップ + + IBM-PCとPC/ATに基づくすべてのシステムでは, + 同じI/Oポートに配置された DMAハードウェアを持っています. + その完全なリストを以下に示します. + DMAコントローラ2に割り当てられたポートは, AT以外のデザインでは + 未定義になっています. + + + 0x00 – 0x1f DMA コントローラ #1 (Channels 0, 1, 2 + and 3) + + DMA アドレス および カウントレジスタ + + + + + + 0x00 + write + Channel 0 starting address + + + + 0x00 + read + Channel 0 current address + + + + 0x01 + write + Channel 0 starting word count + + + + 0x01 + read + Channel 0 remaining word count + + + + 0x02 + write + Channel 1 starting address + + + + 0x02 + read + Channel 1 current address + + + + 0x03 + write + Channel 1 starting word count + + + + 0x03 + read + Channel 1 remaining word count + + + + 0x04 + write + Channel 2 starting address + + + + 0x04 + read + Channel 2 current address + + + + 0x05 + write + Channel 2 starting word count + + + + 0x05 + read + Channel 2 remaining word count + + + + 0x06 + write + Channel 3 starting address + + + + 0x06 + read + Channel 3 current address + + + + 0x07 + write + Channel 3 starting word count + + + + 0x07 + read + Channel 3 remaining word count + + + + + + DMA コマンドレジスタ + + + + + + 0x08 + write + Command Register + + + + 0x08 + read + Status Register + + + + 0x09 + write + Request Register + + + + 0x09 + read + - + + + + 0x0a + write + Single Mask Register Bit + + + + 0x0a + read + - + + + + 0x0b + write + Mode Register + + + + 0x0b + read + - + + + + 0x0c + write + Clear LSB/MSB Flip-Flop + + + + 0x0c + read + - + + + + 0x0d + write + Master Clear/Reset + + + + 0x0d + read + + Temporary Register + (新しいバージョンでは利用不可) + + + + 0x0e + write + Clear Mask Register + + + + 0x0e + read + - + + + + 0x0f + write + Write All Mask Register Bits + + + + 0x0f + read + Read All Mask Register Bits (Intel + 82374にのみ存在する) + + + + + + + + 0xc0 – 0xdf DMA コントローラ #2 (Channels 4, 5, 6 + and 7) + + DMA アドレス および カウントレジスタ + + + + + + 0xc0 + write + Channel 4 starting address + + + + 0xc0 + read + Channel 4 current address + + + + 0xc2 + write + Channel 4 starting word count + + + + 0xc2 + read + Channel 4 remaining word count + + + + 0xc4 + write + Channel 5 starting address + + + + 0xc4 + read + Channel 5 current address + + + + 0xc6 + write + Channel 5 starting word count + + + + 0xc6 + read + Channel 5 remaining word count + + + + 0xc8 + write + Channel 6 starting address + + + + 0xc8 + read + Channel 6 current address + + + + 0xca + write + Channel 6 starting word count + + + + 0xca + read + Channel 6 remaining word count + + + + 0xcc + write + Channel 7 starting address + + + + 0xcc + read + Channel 7 current address + + + + 0xce + write + Channel 7 starting word count + + + + 0xce + read + Channel 7 remaining word count + + + + + + DMA コマンドレジスタ + + + + + + 0xd0 + write + Command Register + + + + 0xd0 + read + Status Register + + + + 0xd2 + write + Request Register + + + + 0xd2 + read + - + + + + 0xd4 + write + Single Mask Register Bit + + + + 0xd4 + read + - + + + + 0xd6 + write + Mode Register + + + + 0xd6 + read + - + + + + 0xd8 + write + Clear LSB/MSB Flip-Flop + + + + 0xd8 + read + - + + + + 0xda + write + Master Clear/Reset + + + + 0xda + read + + Temporary Register (Intel 82374には存在しない) + + + + 0xdc + write + Clear Mask Register + + + + 0xdc + read + - + + + + 0xde + write + Write All Mask Register Bits + + + + 0xdf + read + Read All Mask Register Bits (Intel + 82374にのみ存在する) + + + + + + + + 0x80 – 0x9f DMA ページレジスタ + + + + + + 0x87 + r/w + Channel 0 Low byte (23-16) page Register + + + + 0x83 + r/w + Channel 1 Low byte (23-16) page Register + + + + 0x81 + r/w + Channel 2 Low byte (23-16) page Register + + + + 0x82 + r/w + Channel 3 Low byte (23-16) page Register + + + + 0x8b + r/w + Channel 5 Low byte (23-16) page Register + + + + 0x89 + r/w + Channel 6 Low byte (23-16) page Register + + + + 0x8a + r/w + Channel 7 Low byte (23-16) page Register + + + + 0x8f + r/w + Low byte page Refresh + + + + + + + + 0x400 – 0x4ff 82374 Enhanced DMA Registers + + Intel 82374 EISA System Component + (ESC)は1996年の初めに発表されました. この中 + には機能的には8237のスーパーセットであり, + 1つのパッケージの中にその他の PC + 互換機のコアとなる周辺コンポーネントをも含んだ DMA + コントローラも含まれています. このチップはEISAとPCI + 両方のプラットホームをターゲットにしたものであり, + scatter-gather I/O やリングバッファを始めとして, + システムDMAをして32ビットの + アドレス空間全体に直接アクセスする能力も提供しています. + + + これらの機能を使用する場合でも, + 過去16年間のPC互換機で利用されてきた + 同等機能を提供するコードも含めておく必要があります. + 互換性の問題から, 82374の レジスタの一部は, + 従来の8237のレジスタをプログラムした + に, 転送の度にプログラムされる必要があります. + 8237のレジスタに書き込みを行うとき, + ソフトウェアの下位互換性のために, + 82374で追加された一部のレジスタの内容が + 強制的に0にクリアされるからです. + + + + + + 0x401 + r/w + Channel 0 High byte (bits 23-16) word count + + + + 0x403 + r/w + Channel 1 High byte (bits 23-16) word count + + + + 0x405 + r/w + Channel 2 High byte (bits 23-16) word count + + + + 0x407 + r/w + Channel 3 High byte (bits 23-16) word count + + + + 0x4c6 + r/w + Channel 5 High byte (bits 23-16) word count + + + + 0x4ca + r/w + Channel 6 High byte (bits 23-16) word count + + + + 0x4ce + r/w + Channel 7 High byte (bits 23-16) word count + + + + 0x487 + r/w + Channel 0 High byte (bits 31-24) page + Register + + + + 0x483 + r/w + Channel 1 High byte (bits 31-24) page + Register + + + + 0x481 + r/w + Channel 2 High byte (bits 31-24) page + Register + + + + 0x482 + r/w + Channel 3 High byte (bits 31-24) page + Register + + + + 0x48b + r/w + Channel 5 High byte (bits 31-24) page + Register + + + + 0x489 + r/w + Channel 6 High byte (bits 31-24) page + Register + + + + 0x48a + r/w + Channel 6 High byte (bits 31-24) page + Register + + + + 0x48f + r/w + High byte page Refresh + + + + 0x4e0 + r/w + Channel 0 Stop Register (bits 7-2) + + + + 0x4e1 + r/w + Channel 0 Stop Register (bits 15-8) + + + + 0x4e2 + r/w + Channel 0 Stop Register (bits 23-16) + + + + 0x4e4 + r/w + Channel 1 Stop Register (bits 7-2) + + + + 0x4e5 + r/w + Channel 1 Stop Register (bits 15-8) + + + + 0x4e6 + r/w + Channel 1 Stop Register (bits 23-16) + + + + 0x4e8 + r/w + Channel 2 Stop Register (bits 7-2) + + + + 0x4e9 + r/w + Channel 2 Stop Register (bits 15-8) + + + + 0x4ea + r/w + Channel 2 Stop Register (bits 23-16) + + + + 0x4ec + r/w + Channel 3 Stop Register (bits 7-2) + + + + 0x4ed + r/w + Channel 3 Stop Register (bits 15-8) + + + + 0x4ee + r/w + Channel 3 Stop Register (bits 23-16) + + + + 0x4f4 + r/w + Channel 5 Stop Register (bits 7-2) + + + + 0x4f5 + r/w + Channel 5 Stop Register (bits 15-8) + + + + 0x4f6 + r/w + Channel 5 Stop Register (bits 23-16) + + + + 0x4f8 + r/w + Channel 6 Stop Register (bits 7-2) + + + + 0x4f9 + r/w + Channel 6 Stop Register (bits 15-8) + + + + 0x4fa + r/w + Channel 6 Stop Register (bits 23-16) + + + + 0x4fc + r/w + Channel 7 Stop Register (bits 7-2) + + + + 0x4fd + r/w + Channel 7 Stop Register (bits 15-8) + + + + 0x4fe + r/w + Channel 7 Stop Register (bits 23-16) + + + + 0x40a + write + Channels 0-3 Chaining Mode Register + + + + 0x40a + read + Channel Interrupt Status Register + + + + 0x4d4 + write + Channels 4-7 Chaining Mode Register + + + + 0x4d4 + read + Chaining Mode Status + + + + 0x40c + read + Chain Buffer Expiration Control Register + + + + 0x410 + write + Channel 0 Scatter-Gather Command Register + + + + 0x411 + write + Channel 1 Scatter-Gather Command Register + + + + 0x412 + write + Channel 2 Scatter-Gather Command Register + + + + 0x413 + write + Channel 3 Scatter-Gather Command Register + + + + 0x415 + write + Channel 5 Scatter-Gather Command Register + + + + 0x416 + write + Channel 6 Scatter-Gather Command Register + + + + 0x417 + write + Channel 7 Scatter-Gather Command Register + + + + 0x418 + read + Channel 0 Scatter-Gather Status Register + + + + 0x419 + read + Channel 1 Scatter-Gather Status Register + + + + 0x41a + read + Channel 2 Scatter-Gather Status Register + + + + 0x41b + read + Channel 3 Scatter-Gather Status Register + + + + 0x41d + read + Channel 5 Scatter-Gather Status Register + + + + 0x41e + read + Channel 5 Scatter-Gather Status Register + + + + 0x41f + read + Channel 7 Scatter-Gather Status Register + + + + 0x420-0x423 + r/w + Channel 0 Scatter-Gather Descriptor Table Pointer + Register + + + + 0x424-0x427 + r/w + Channel 1 Scatter-Gather Descriptor Table Pointer + Register + + + + 0x428-0x42b + r/w + Channel 2 Scatter-Gather Descriptor Table Pointer + Register + + + + 0x42c-0x42f + r/w + Channel 3 Scatter-Gather Descriptor Table Pointer + Register + + + + 0x434-0x437 + r/w + Channel 5 Scatter-Gather Descriptor Table Pointer + Register + + + + 0x438-0x43b + r/w + Channel 6 Scatter-Gather Descriptor Table Pointer + Register + + + + 0x43c-0x43f + r/w + Channel 7 Scatter-Gather Descriptor Table Pointer + Register + + + + + + + + + + FreeBSD VM システム + + 原作: &a.dillon;. 6 Feb 1999 + + + 物理メモリ管理 — <literal>vm_page_t</literal> + + 物理メモリはページ単位に, + vm_page_t構造体を用いて管理されます. + 物理メモリのページは, ページキューの一つに存在する, + それぞれの vm_page_t + 構造体の配置によって分類されます. + + ページは, wired(ワイヤード), active(活性状態), + inactive(非活性状態), cache(キャッシュ状態), + free(使われていない状態)の 各状態をとります. wired + 状態を除いて, ページは通常 + その状態を示す二重連結リストのキューに置かれます. wired + 状態のページがキューに置かれることはありません. + + FreeBSD は, ページカラーリング(page + coloring)を実装するため, cache 状態, free + 状態にあるページ用に, + さらに複雑なページキューを実装しています. その各々の状態は, + プロセッサの L1, L2 キャッシュサイズに応じて最適化された + 多重キューを利用します. FreeBSD は, + 新たなページを確保(allocate)することが + 必要になった場合に確保される VM オブジェクトのために, L1, L2 + キャッシュに対して合理的にアライン(align)されたページを + 得ようと試みます. + + 加えて, ページは参照カウントとともに保持され, + ビジーカウントとともにロックされます. VM システムは, + ページフラグとして PG_BUSY を使う “完全ロック状態” + も実装しています. + + + 一般的には, 各々のページキューは最長不使用 (LRU) + 方式で動作します. ページは普通, 最初に wired, もしくは active + 状態に置かれます. wired 状態の場合, + そのページはどこかにあるページテーブルに 関連づけられています. + VM システムはアクティブなキュー内のページをスキャンし, wired + 状態のページにエイジング (訳注: + ページ参照頻度を量る手法の一つ; aging) を施します. そして, + そのページはあまりアクティブでないキューへ + 移動することになります. cache キューに移動させられたページは, + 再利用の候補になっている VM + オブジェクトに割り付けられています. free + キューにあるページは, 完全に自由の状態にあります. FreeBSD は, + free キューにあるページ数を最小限にとどめようと 試みますが, + 割り込み発生時のページ確保を融通するため, + 完全に自由なページをいくつか持っていなければなりません. + + + プロセスがページテーブルに存在しない, + ページキューの一つ(例えば, inactive, cache キュー等)に + 存在するページをアクセスしようとしたとき, + 比較的負荷の小さなページ再活性化フォールトが起こります. + システムメモリに全く存在していないページの場合は, + ディスクからページを読み出す間, + そのプロセスはブロック(block)されます. + + FreeBSD は, ページキューを動的に調節し, + 同期済(clean)のページ, 同期していない(dirty)ページの分類を + 合理的に保つのと同様に, それぞれのキューにあるページが合理的な + 比率に保つように試みます. 再バランス化処理が起こる量は, + システムのメモリ負荷に依存します. この再バランス化処理は + ページアウトデーモンによって実装されていて, + (補助記憶とページを同期して)同期していないページの + クリーニングすることや, (LRU + キュー内でのページ位置を再配置したり, + ページをキューの間を移動することで)ページが頻繁に + 参照状態にあることに注目すること, キューを均等にするための + キュー間ページ移動等を伴います. + ページが実際にどれだけ使われているかを決定するために, FreeBSD + の VM システムは, ページの再活性化フォールトを 自発的に, + 合理的な数だけ発生します. これは, + ページをスワップアウトしたり, クリーニングする時期を + より良く決めることに繋がります. + + + + 統合バッファキャッシュ — + <literal>vm_object_t</literal> + + FreeBSD は, 一般化した “VM オブジェクト” + という考え方を実装しています. VM オブジェクトは, + 様々な種類の補助記憶(backing store) — 補助記憶なし, + スワップ, 物理デバイス, ファイル, に割り付けられます. + ファイルシステムは + ファイルと関連するインコアデータを管理するのに, 同じ VM + オブジェクトを利用するため, + 統合バッファキャッシュと呼ばれます. + + VM オブジェクトは, シャドウ化 + することができます. シャドウ化とは, + オブジェクトがそれぞれ互いの上に + スタック(stack)されるということです. 例えば, MAP_PRIVATE + mmap() の 動作を実装するために, ファイルに割り付けられた VM + オブジェクトの上にスタックされた, スワップに割り付けられた VM + オブジェクトが存在しているでしょう. このスタッキングは, fork + されたアドレス空間のための 様々な共有属性, + コピーオンライト(訳注: ページ共有のための 手法の一つ; + cow,copy-on-write) を実装するのにも利用されています. + + vm_page_t は, 同時に一つの VM + オブジェクトしか割り付けられることが + できないことに注意しなければなりません. VM + オブジェクトのシャドウ化は, 複数のインスタンスが同じページに + 共有できるように実装されています. + + + + ファイルシステム I/O — <literal>struct + buf</literal> + + + 補助記憶にファイルを使う VM オブジェクトのように, v + ノードを使う VM オブジェクトは通常, + 処理されているかどうかという情報を, + VMシステムが管理する処理情報から独立して + 管理される必要があります. 例えば, VM + システムが物理ページと補助記憶を同期させようとしたとき, VM + システムは, 実際に書き戻す前に, + ページがクリーニング済であるという + マークを付ける必要があるわけです. さらに, ファイルシステムは, + KVM 内で操作できるように, ファイルや, + ファイルメタデータの一部分を KVM にマッピングすることが + できなくてはなりません. + + これを管理するために使われる実体は, + ファイルシステムバッファ, struct buf, + bp として知られています. + ファイルシステムに VM オブジェクトの一部を操作することが + 必要となるときは通常, オブジェクトの部分が struct buf に + マッピングされ, KVM に struct buf + 内のページがマッピングされます. 同じ方法で, ディスク I/O + はオブジェクトの部分を バッファ構造体内にマッピングし, + その時バッファ構造体上の I/O を 発行することで発行されます. + 基礎となっている vm_page_t は, I/O 処理の間 + ビジー(busy)状態になります. ファイルシステムにも + 独立したビジー状態があり, それはハードウェア上の VM + ページの代わりに ファイルシステムバッファで動作する + ファイルシステムドライバのコードに とって有用です. + + FreeBSD は, マッピングを保持するためにある量に制限された + KVM を 予約していますが, KVM + がマッピングを保持するためだけに使われ, + キャッシュデータの能力を制限しないということは + 明確にされるべきでしょう. + 物理データキャッシュを行うことは厳密に + vm_page_t の機能になっており, + ファイルシステムバッファの機能ではありません. しかし, + ファイルシステムバッファは placehold I/O に使われるため, + それは実質的に同時処理可能な I/O 処理量を制限します. + 通常は二, 三千のファイルバッファが利用可能ですから, + このことは問題にならないでしょう. + + + + マッピングページテーブル — + <literal>vm_map_t</literal>, + <literal>vm_entry_t</literal> + + + FreeBSD は, 物理ページテーブルの形態を VM + システムと分離しています. + ハードウェア上にある全てのプロセス毎のページテーブルは, + その場その場で再構成され, 通常, 使い捨てだとみなされています. + KVM を管理するような特殊なページテーブルは, + 最初に永続的な確保が 行われ, + これらのページテーブルが破棄されることはありません. + + + FreeBSD は, vm_objects の部分を, + 仮想メモリのアドレス範囲に vm_map_t と + vm_entry_t 構造体を通して割り付けます. + ページテーブルは, vm_map_t + /vm_entry_t/vm_object_t + という階層から 直接つくられます. “物理ページは, + 直接一つの vm_object に + 割り付けられる” と私が述べたことを思い出して下さい. + ええと, そうですね, しかしそれはいつでも完全に当てはまる, + というわけでもないのです. vm_page_t のは, + 実際に割り付けられた ページテーブルにもリンクされています. + 一つの vm_page_t は + ページテーブルが呼ばれた時, いくつかの + pmaps と リンクされることがあります. + しかし, そのような階層的な割り付けは, 同じ + vm_page_t を参照するオブジェクト内の, + 同じページへの参照全てを保持しているため, その結果, + 常にバッファキャッシュの統合を得ることができるわけです. + + + + + KVM メモリマッピング + + FreeBSD は, 様々なカーネル構造体を保持するため, KVM + を利用します. ファイルシステムバッファキャッシュは, KVM + 内で最も大きなものです. それはつまり, struct + buf の実体に対するマッピングに他なりません. + + Linux と異なり, FreeBSD は全ての物理メモリを KVM + にマッピングしません. これは, FreeBSD が 32 + ビットプラットフォームで 4G バイトまでの メモリを扱える, + ということを意味します. 実際, MMU + がそれを可能にしているならば, 理論上, FreeBSD は 32 + ビットプラットフォームで 8TB + までのメモリを扱うことができることになります. しかし, + 大部分の 32 ビットプラットフォームは 4G バイトの RAM しか + マッピングできないようになっている, + ということには議論の余地があるでしょう. + + + + KVM は, いくつかのメカニズムによって管理されています. + 中心となっているのは, ゾーンアロケータ(zone + allocator)です. ゾーンアロケータは, + 特定の構造体型を確保するために KVM の部分(chunk)を得て, + 一定の大きさのメモリブロックに分割します. vmstat + -m コマンドで, ゾーンによって 分割された, 現在の + KVM 利用状況一覧を得ることができます. + + + + + FreeBSD VM システムのチューニング + + FreeBSD カーネルでは, + 動的に自分自身をチューニングするために, + 協調的な努力が行なわれています. 普通は, + maxusersNMBCLUSTERS + という カーネルオプション, つまり, + /usr/src/sys/i386/conf/CONFIG_FILE で 指定されるもの以外, 変更する必要はありません. 可能なカーネルオプションの一覧は, /usr/src/sys/i386/conf/LINT に 記載されています. + + 大きなシステムに対しては, maxusers + を増やしたいと思うかも知れませんね. この値は普通, 10 から 128 + の間の値にします. + maxusers を増やしすぎるとシステムの利用可能な + KVM がオーバフローしてしまい, + 予測できない動作に陥ってしまうことに注意して下さい. + maxusers はある適度な値にとどめておいて, + 特定のリソースを制御する NMBCLUSTERS + のような, 他のオプションを増加させる方が良いでしょう. + + + もし, システムが負荷の高いネットワーク用途に使われるなら, + NMBCLUSTERS を増やしたいと望むことでしょう. + この値は普通, 1024 から 4096 の間です. + + + NBUF パラメータも, + 伝統的にシステムの規模を決めるのに使われます. これは, + システムがファイルシステムバッファを I/O のために + マッピングするのに使われる, KVA + の大きさを決めるのに使われます. このパラメータは, + 統合バッファキャッシュには何の影響も与えません. これは + 3.0-RELEASE 以降のカーネルでは動的にチューニングされるため, + 普通は手作業で調整されるべきものではありません. + NBUF パラメータは, + 指定しようとしないことを推奨します. + システムに選択させれば良いのです. + 小さすぎる値は極端に非効率的なファイルシステム動作を招き, + 一方で, 大きすぎる値は wired 状態のページを数多くつくりだし, + ページキューを枯渇させてしまうでしょう. + + デフォルトでは, FreeBSD カーネルは最適化されていません. + カーネルコンフィグにある makeoption + ディレクティブを使って + 最適化とデバッグフラグをセットすることができます. ただし, + それによって得られる大きな (7MB + 超の)カーネルを相手にするのが嫌なら, + オプションは使ってはいけません. + + makeoptions DEBUG="-g" +makeoptions COPTFLAGS="-O2 -pipe" + + sysctl は, 実行時にカーネルパラメータをチューニングする + 手段を提供しています. しかし, 普通は sysctl 変数, 特に VM + に関連したものを変更する必要が + 生じるようなことはありません. + + 実行時の VM とシステムのチューニングは, 比較的単純です. + まず, 可能ならば UFS/FFS ファイルシステムで softupdates + を使いましょう. + /usr/src/contrib/sys/softupdates/README + のファイルに, + 設定方法に関する手順(と制限)について書かれています. + + + 次に, 十分なスワップを設定します. “作業” + ディスクを含む 各物理ディスク装置毎に一つずつ + (最大四つまで)のスワップパーティションを 設定すべきです. + 少なくとも, メインメモリの 2 倍の スワップ空間が望ましく, + メモリがあまりない場合には, + おそらくそれより多く必要になります. また, + スワップパーティションのサイズは, + 後でパーティションをつくり直しする必要がないように + マシンに設定したいメモリ設定の最大値を基準に + 決めるべきでしょう. もし, クラッシュダンプをとりたい場合, + スワップパーティションは最低限メインメモリと同じの大きさで, + /var/crash にはダンプを保持するのに十分な + 空きがなければなければなりません. + + NFS 経由のスワップは, -4.x + 以降のシステムで完全に動作しますが, NFS サーバ側では, + ページングがその負荷の主な原因になることに + 注意しなければなりません. + + + + + diff --git a/ja/handbook/introduction/chapter.sgml b/ja/handbook/introduction/chapter.sgml new file mode 100644 index 0000000000..4d78c6bb1a --- /dev/null +++ b/ja/handbook/introduction/chapter.sgml @@ -0,0 +1,724 @@ + + + + はじめに + + FreeBSD は, Intel アーキテクチャ (x86) ベースの PC のための + 4.4BSD-Lite をベースとしたオペレーティングシステムです. FreeBSD + の概要については, FreeBSD + とはをご覧ください. このプロジェクトの歴史については, + FreeBSD 小史 をご覧ください. + 最新のリリースについての記述は, 現在のリリースについてをご覧ください. + FreeBSD プロジェクトへの何らかの貢献 (ソースコード, 機器, + 資金の提供など) について興味があれば, FreeBSD への貢献 + の章をご覧ください. + + + FreeBSD とは + + 原作: 不明. + + 訳: &a.jp.tomo;. + + FreeBSDはIntel社の (SXやDXも含めた) 386や486, Pentium + プロセッサ といった CPU + アーキテクチャに基づくパーソナルコンピュータ用としては + 現在求めうる最高水準のオペレーティングシステムです. + AMD社やCyrix社のIntel互換CPUもサポートされています. FreeBSDは, + 以前は高価なコンピュータでしか利用できなかった多くの + 高度な機能を提供します. + FreeBSDには次のような機能があります: + + + + アプリケーションとユーザとの間で円滑かつ公平に + コンピュータを 共有することを保証する, + 優先度を動的に調節する機能を備えた + プリエンプティブマルチタスキング. + + + + 多くの人々が1つのFreeBSD + システムをさまざまな目的で同時に 使うことを可能にする + マルチユーザ アクセス. また, + プリンタやテープドライブのようなシステムの周辺機器も + すべてのユーザ間で適切に共有されます. + + + + SLIPやPPP, NFS, NISのサポートを含んだ完全な + TCP/IPネットワーキング. これによって, + FreeBSDマシンが商用サーバと同じように相互に運用でき, NFS + (リモートファイルアクセス) + や電子メールサービスのような極めて 重要な機能を提供します. + また, WWWやftp, ルーティング, ファイアウォール + (セキュリティ) サービスを用いてインターネットと + 接続できます. + + + + アプリケーション (あるいはユーザ) がお互いに干渉できない + ようにするメモリ保護機能. + アプリケーションがクラッシュしても, どのような場合でも + 他のアプリケーションには影響を与えません. + + + + FreeBSD は 32ビット + のオペレーティングシステムであり, + 最初からそのようにこつこつと設計されました. + + + + 業界標準であるX Windowシステム + (X11R6) は, 普通のVGAカードやモニタでグラフィカルユーザ + インタフェース (GUI) を提供し, + すべてのソースコードも一緒に提供されます. + + + + SCOやBSDI, NetBSD, Linux, 386BSD用に作られた多くの + プログラムにおけるバイナリ互換性. + + + + 何百もの すぐに実行可能な + アプリケーションが FreeBSDの ports や + packages コレクション で利用可能です. + ここに用意されているものは + ネットを探し回る必要がありません + + + + インターネット上で入手可能な, + 移植が容易な + 何千ものアプリケーションを追加できます. FreeBSD + は最も評判の よい商用の Unix + システムとソースコードレベルで互換性があります. このため, + ほとんどのアプリケーションは, もしあったとしてもほんの + 少しの変更でコンパイルすることができます. + + + + デマンドページング 仮想メモリ + とそれに “付随の VM/buffer キャッシュ”の設計は, + 多くのメモリを要求する + アプリケーションに対して効率よくメモリを + 与えるようにする一方で, + 他のユーザに対しても対話的な応答を維持します. + + + + 共有ライブラリ + (MS-WindowsのDLLと同等のUnixの 機能) によって, + ディスクスペースとメモリを効果的に使用する + ことができます. + + + + 完全な 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 サーバ + + + + Gopher サーバ + + + + 電子メールサーバ + + + + USENET ニュース + + + + 電子掲示板システム + + + + さらにいろいろ... + + + + まずは高価ではない386クラスのPCで始めておいて, + 仕事の成長に合わせてアップグレードできます. + + + + 教育: + あなたは計算機科学または工学の学生ですか? + オペレーティングシステムやコンピュータアーキテクチャ, + ネットワーキングを学習するなら, FreeBSDを手に + 経験するのが一番よい方法です. 自由に利用できるCADや数学, + グラフィックデザインのパッケージもいくつもあり, + コンピュータに関心を持った人が 他の人 + の成果を 手に入れて利用するのにとても役に立ちます. + + + + 研究: + システム全体のソースコードが利用できるため, + FreeBSDはオペレーティングシステムの研究だけでなく, + 計算機科学の他の部門においても優れたプラットフォームです. + 自由に利用できるFreeBSDの特長は, オープンフォーラムで + 議論される特別なライセンスの同意や制限について + 心配することなく, 離れたグループでもアイディアや開発の共有に + よる共同研究を可能にします. + + + + ネットワーキング: + 新しいルータが必要? ネームサーバ (DNS) は? + 内部のネットワークを人々から守る ファイアウォールは? + FreeBSDはすみに眠っている使われていない386や486のPCを簡単に + 洗練されたパケットフィルタリング機能を持つ高級なルータに + 変えることができます. + + + + X Windowワークステーション: + 自由に利用できるXFree86サーバやX Inside社から提供される + 優れた商業サーバを使うことによって, 安価なX端末 + としてFreeBSDを使うこともできます. X端末とは違ってFreeBSDは + 多くのアプリケーションをローカルに走らせることもでき, + 中心のサーバの負荷を軽減することも可能です. + FreeBSDは“ディスクレス”でもブート可能であり, + 個々のワークステーションを安価で, 容易に管理することさえ + 可能にします. + + + + ソフトウェア開発: + 基本的なFreeBSDシステムには + 有名なGNUのC/C++コンパイラやデバッガ含んだ完全な開発ツールが + ついてきます. + + + + FreeBSDはCDROMまたはanonymous ftpによってソース, + バイナリとも 利用可能です. 詳しくは, FreeBSD の入手方法 + を見てください. + + + + FreeBSD 小史 + + 原作: &a.jkh;. + + 訳: &a.jp.masaki;, &a.jp.hino;. + 19 December 1996. + + 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 + 社に連絡してみまし た. CDROM を使って FreeBSD + を配布することによって, インターネットに容 + 易に接続できない多くの人々が FreeBSD + を簡単に入手できるようになると考 えたからです. Walnut Creek + CDROM 社は FreeBSD を CD で配布するというア + イデアを採用してくれたばかりか, + 作業するためのマシンと高速なインターネッ + ト回線を私たちのプロジェクトに提供してくれました. + 当時は海のものとも山 + のものともわからなかった私たちのプロジェクトに対して, Walnut + Creek CDROM 社が信じられないほどの信頼を寄せてくれたおかげで, + FreeBSD は短期 間のうちにここまで大きく成長したのです. + + CDROM による最初の配布 (そしてネットでの, + ベータ版ではない最初の一般向 け配布) は 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年の + 12月までかかり ました. そして 1995年の 1月に FreeBSD 2.0 + をネットと CDROM を通じて公 開しました. これは, + かなり粗削りなところが残っていたにもかかわらず, か + なりの成功を収めました. そしてその後に, より信頼性が高く, + そしてインス トールが簡単になった 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 年 7 + 月の終わりには最新版の 2.2.7 が登場しました. FreeBSD 3.0 + の初めての公式なリリースが 1998 年 10 月上旬に登場し, 2.2 + 開発分流からの最後のリリースである 2.2.8 が 1998 年 11 + 月に登場しまし た. + + 1999 年 1 月 20 日には, FreeBSD + の開発ツリーが再び分岐しました. 4.0-current と 3.x-stable + の分流です. 3.x-stable からは 3.1 が 1999 年 2 月 15 + 日にリリースされる予定です. + + 長期的な開発プロジェクトは 4.0-current 開発分流で続けられ, + スナップショットの CDROM (もちろん, ネットワーク上でも) + で公開されます. + + + + FreeBSDプロジェクトの目的 + + 原作: &a.jkh; + + 訳: &a.jp.kiroh; + 24 September 1996. + + FreeBSD + プロジェクトの目的は, いかなる用途にも使用でき, 何ら制限のない + ソフトウェアを供給することです. + 私たちの多くは, コード(そしてプロジェ + クト)に対してかなりの投資をしてきており, + これからも多少の無駄はあって も投資を続けて行くつもりです. ただ, + 他の人達にも同じような負担をするよ + うに主張しているわけではありません. FreeBSD + に興味を持っている一人の残 らず全ての人々に, + 目的を限定しないでコードを提供すること. これが, + 私たちの最初のそして最大の “任務” + であると信じています. そうすれば, コード は可能な限り広く使われ, + 最大の恩恵をもたらすことができるでしょう. これ + が, 私たちが熱烈に支持しているフリーソフトウェアの + 最も基本的な目的であ ると, 私は信じています. + + 私たちのソースツリーに含まれるソースのうち, + GNU一般公有使用許諾(GPL)ま + たはGNUライブラリ一般公有使用許諾(GLPL) + に従っているものについては, 多 少制限が科されています. ただし, + ソースコードへのアクセスの保証という, + 一般の制限とはいわば逆の制限(訳注1)です. + ただしGPLソフトウェアを商用で + 利用する場合, さらに複雑になるのは避けられません. + そのため, それらのソ フトウェアを, より制限の少ない BSD + 著作権に従ったソフトウェアで置き換え + る努力を, 可能な限り日々続けています. + + (訳注1) GPL では, 「ソースコードを実際に受け取るか, + あるいは, 希望しさ えすればそれを入手することが可能であること」 + を求めています. + + + + FreeBSDの開発モデル + + 原作: &a.asami;. + 18 October 1996. + + 訳: &a.asami;. + 31 October 1996. + + FreeBSD の開発は非常に開かれた, 柔軟性のあるプロセスです. + コントリビュータのリスト + を見ていただければわかる とおり, + FreeBSDは文字通り世界中の何百という人々の努力によって開発され + ています. 新しい開発者はいつでも大歓迎ですので, &a.hackers; + にメールを 送ってください. また, + 大勢で議論するよりは一人で静かに開発にふけりた + いという人は私たちのFTPサイト + ftp.freebsd.org + を使ってパッチや開発中のソースを公開してくださっ て結構です. + &a.announce; もありますので, 他のFreeBSDユーザに自分のやっ + ていることを宣伝したい時にはどうぞ使ってください. + + あと, FreeBSD プロジェクトとその開発プロセスについて, + どなたにも知って + いていただきたいのは以下のようなことです. + + + CVSリポジトリ + + + FreeBSDのソースツリーは + CVS (Concurrent Versions System) + によってメンテナンスされています. CVSはソー + スコード管理用のフリーソフトウェアで, + FreeBSDのリリースにも含まれてい ます. FreeBSD の メインの CVS + リポジトリ + は米国カリフォルニア州のコンコルド市に存在 し, + そこから世界中のたくさんのミラーサイトに + コピーされています. CVSツ リーそのもの, + そしてそのチェックアウトされたバージョンである-currentと-stableはあな + たのマシンにも簡単に取ってくることができます. + これについては + ソースツリーの同期 の章をご覧ください. + + + + ソースツリー管理者 + + + + ソースツリー管理者はCVSツリー + への書き込み権限を持っている人, + つまりFreeBSDのソースに変更を加えるこ とができる人です. + (CVSでリポジトリに変更を加えるには &man.cvs.1; + commit というコマンドを使うので, + これらの人々は英語では “committers” + と呼ばれます.) 開発者にコードを送って見てもらうのに一 + 番いい方法は &man.send-pr.1; コマンドを使うことです. もし, + 何か問題があって send-pr + が使えないならcommitters@freebsd.orgにメー + + ルを送っていただいても結構です. + + + + FreeBSDコアチーム + + + FreeBSD + コアチームはFreeBSDプロジェク + トが会社だとすると取締役会にあたるものです. + コアチームとして一番重要 な役割は FreeBSD + プロジェクトが全体としてよい方向に向かっていることを確 + 認することです. + 責任感あふれる開発者を上記のソースツリー管理者として + 招くこと, また仕事上の都合などでコアチームを + やめた人たちの後任を見つけ ることもコアチームの役割です. + 現在のコアチームのほとんどは最初は単な + る一開発者としてプロジェクトに関わりはじめ, + ずるずるといつのまにか深み + にはまってしまった人です. + + コアチームのうち何人かは特定の 担当分野 を持っており, + システムのうち一部に特に重点をおいて + 面倒を見ています. + + + 忘れてほしくないのはコアチームのほとんどは FreeBSD + についてはボラ ンティアであり, FreeBSD + プロジェクトからは何ら金銭的な支援を受けていな + いということです. ですから, ここでの “責任” + は “保証されたサポート” ではありません. + そういう意味で, + 上記の“取締役会”という例えはあまりよく + ないかもしれません. むしろ, + FreeBSDのために人生を棒に振ってしまった人 + の集まりといった方が正しいかも.... ;) + + + + + その他のコントリビュータ + + 最後になりますが, + もっとも重要で多数をしめる開発者はフィードバック + やバグフィクスをどんどん送ってくれるユーザ自身です. + FreeBSDの開発に外 郭から関わっていきたいという人は + &a.hackers; ( + メーリングリスト情報 を見てください) + に参加するといいでしょう. + + FreeBSD + のソースツリーに入っている何かを書いた人の リスト + は日に日に長くなっています. あ なたも今日, + 何か送ることからはじめてみませんか? :-) + + もちろんFreeBSD + に貢献するにはコードを書くほかにもいろいろな方法があ + ります. 助けが求められている分野については, + このハンドブックの 貢献の仕方 + の節を見てください. + + + + + ひとことで言うと, FreeBSD + の開発組織はゆるやかな同心円状になっています. + ともすると中央集権的に見えがちなこの組織は, + FreeBSDのユーザが + きちんと管理されたコードベースを + 容易に追いかけられるようにデザインされ ているもので, + 貢献したいという人を締め出す意図は全くありません! 私た + ちの目標は安定したオペレーティングシステムと + 簡単にインストールして使う ことのできるアプリケーションを提供することであ り, + この方法は結構うまくはたらくのです. + + これからFreeBSDの開発にたずさわろうという人に, + 私たちが望むことはただ 一つです: + FreeBSDの成功を継続的なものにするために, 現在の開発者と同じ + ような情熱を持って接してください! + + + + 現在のリリースについて + + FreeBSD は自由に利用でき Intel + i386/i486/Pentium/PentiumPro/Pentium II (とその互換 CPU) の + PCで動作する, 4.4BSD-Lite ベースの全ソー スつきのリリースです. + これはもともとカリフォルニア大学バーク レイ校 + CSRGグループのソフトウェアがベースとなっており, NetBSD, OpenBSD, + 386BSD, そして Free Software Foundation の + ソフトウェアなどにより拡張されています. + + 95年1月の FreeBSD 2.0 のリリースからみると, FreeBSD は性能, + 機能, 安定性の面で劇的に改善されました. + もっとも大きな変化は仮想メモリシステムに おける改良で, + 統合化された VM/file バッファキャッシュを用いる + ことで性能を向上させながらも FreeBSD + のメモリの使用量を減らすことが できたことです. おかげで, 最低 + 5MB メモリという制約上でも動作する ようになりました. + その他の拡張としては NIS のクライアントとサーバの 完全サポート, + トランザクション TCP のサポート, ダイヤルオンデマンド PPP, 改良 + SCSI サブシステム, ISDN の初期サポート, FDDI や Fast Ethernet + (100Mbps) などのサポート, Adaptec 2940 (WIDE と narrow) + のサポートの改良と数百件のバグの修正, などがあります. + + 私たちはたくさんのユーザからのコメントや + 提案をまじめに受け取り, 私たちが正しいと考え, + かつ導入の手順が分かりやすいものを提供しようと 努力しています. + この (継続的に進化する) プロセスに対するあなたの意見を + 心からお待ちしています. + + FreeBSD では基本配布セットに加え, 移植されたソフトウェア集 + として 数百の人気の高いプログラムを提供しています. 98年8月 + 下旬の時点で 1700 以上の ports (移植ソフトウェア) が存在します. + ports には http (WWW) サーバから, ゲーム, 言語, + エディタまでありとあらゆるものが含まれています. + portsはオリジナル + ソースに対する“差分”という形で表現されており, + すべての portsを 集めても 26MB程度にしかなりません. + こうすることで ports の更新を 容易にし, + portsに必要なディスクスペースを小さくすることができます. + portsをコンパイルするには, + インストールしたいと思っているプログラムの ディレクトリに移動し, + make all と実行してコンパイルが成 功したら, + make install とすると, あとはすべてシステムが + やってくれます. どの portsもオリジナルの配布セットを動的に + CDROM または近くの FTP サーバから取ってくるので, ディスクは + 構築したいと思っている portsの分だけを準備しておけば十分です. + ほとんどの portsは, すでにコンパイルされた状態で + “package” として提供されており, + ソースコードからコンパイルしたくない場 合, これを使うと (pkg_add + というコマンドで) 簡単にインストー ルできます. + + FreeBSD 2.1 以降のマシンであれば, + /usr/share/doc + ディレクトリにインストールの手順や FreeBSD を利用する上で有用な + ドキュメントがたくさんあります. + これらのローカルにインストールされたドキュメントは, HTML + ブラウザを使って, 以下の URL から 参照することができます. + + + FreeBSD ハンドブック (英文オリジナル) + + file:/usr/share/doc/handbook/handbook.html + + + + FreeBSD に関する FAQ + + file:/usr/share/doc/FAQ/FAQ.html + + + + + また, http://www.freebsd.org + にはマスタ (かなり頻繁に更新されます) がありますので, + こちらも参照してください. + + 合衆国の輸出規制のため, FreeBSD のコア配布セットには DES + のコードは 含まれていません. 合衆国国内に限り, DES + を使うプログラムなどが, + コア配布セットに加えるパッケージとして提供されています. + 誰でも使えるパッケージは, 別途, 合衆国国外で提供されています. + 合衆国国外からも自由に取得可能な DES の配布セットに関する + 詳細は, FreeBSD FAQ + にあります. + + FreeBSD 上で必要とされるセキュリティがパスワードだけであり, + Sun や DEC + などの別のホストから暗号化されたパスワードをコピーする必要が + ないのであれば, FreeBSD の MD5 ベースのセキュリティで十分です. + この標準のセキュリティモデルは DES + よりも適していると私たちは思って いますし, また, + やっかいな輸出規制にもひっかかることはありません. + あなたが合衆国国外にいるなら (あるいは国内にいても) + 一度試してみて ください! + + + + diff --git a/ja/handbook/jauthors.ent b/ja/handbook/jauthors.ent new file mode 100644 index 0000000000..cfe025cb9e --- /dev/null +++ b/ja/handbook/jauthors.ent @@ -0,0 +1,82 @@ + + +arimura@jp.FreeBSD.org"> + +candy@fct.kgc.co.jp"> + +condle@mcu.or.jp"> + +g92k0323@cfi.waseda.ac.jp"> + +graphite@jp.FreeBSD.org"> + +hino@ccm.cl.nec.co.jp"> + +ikuo@jp.FreeBSD.org"> + +iwasaki@jp.FreeBSD.ORG"> + +katsu@baum.kiyose.tokyo.jp"> + +kimura@netlab.is.tsukuba.ac.jp"> + +kiroh@jp.FreeBSD.org"> + +kmiyakoda@ctn.co.jp"> + +masaki@po.iijnet.or.jp"> + +Mihoko_Tanaka@yokogawa.co.jp"> + +mita@jp.FreeBSD.ORG"> + +miyasita@hashilab.ee.ous.ac.jp"> + + + +mrt@mickey.ai.kyutech.ac.jp"> + +nakai@mlab.t.u-tokyo.ac.jp"> + +nao@tom-yam.or.jp"> + +saeki@jp.FreeBSD.org"> + +shou@kt.rim.or.jp"> + +simokawa@jp.FreeBSD.org"> + +taka-su@is.aist-nara.ac.jp"> + +tmaruya@nnc.or.jp"> + +tomo@jp.FreeBSD.ORG"> + +ts@icu.ac.jp"> + +y-koga@ccs.mt.nec.co.jp"> + +yasu@hike.te.chiba-u.ac.jp"> + +yoshiaki@kt.rim.or.jp"> + +yuki@jp.FreeBSD.org"> + diff --git a/ja/handbook/jcontrib/chapter.sgml b/ja/handbook/jcontrib/chapter.sgml new file mode 100644 index 0000000000..c43843a7d1 --- /dev/null +++ b/ja/handbook/jcontrib/chapter.sgml @@ -0,0 +1,247 @@ + + + + FreeBSD Handbook 日本語化について + + FreeBSD 日本語ドキュメンテーションプロジェクトは, FreeBSD + 関係の日本語 ドキュメントが少ないことを嘆いた数人の FreeBSD + ユーザの提唱によって 1996年2月26日にスタートし, + その最初の作業として, FreeBSD Handbook + の日本語への翻訳を始めました. + 当初の予定から大幅に遅れながらもなんとか + 完成することができましたが, これで終りではありません. オリジナルの + FreeBSD Handbook は日毎に更新されており, 私たちもまた + これに追い付くために作業を続けていきます. もちろん, + 新しいメンバも大歓迎 です. 日本語翻訳版について, + 何かお気づきの点がありましたら, FreeBSD + 日本語ドキュメンテーションプロジェクト doc-jp@jp.FreeBSD.ORG + までご連絡ください. また, もし私たちの作業を手伝ってくれるなら, + FreeBSD + 日本語ドキュメンテーションプロジェクトのページ + をご覧の上, 是非参加してください. + + + 翻訳者 (五十音順) + + + + &a.asami; + + + + &a.jp.arimura; + + + + &a.jp.graphite; + + + + &a.jp.iwasaki; + + + + &a.jp.yoshiaki; + + + + &a.jp.candy; + + + + &a.jp.kimura; + + + + &a.jp.y-koga; + + + + &a.jp.masaki; + + + + &a.motoyuki; + + + + &a.jp.saeki; + + + + &a.jp.simokawa; + + + + &a.jp.sugimura; + + + + &a.jp.yasu; + + + + &a.jp.mihoko; + + + + &a.jp.ts; + + + + &a.jp.nakai; + + + + &a.jp.ikuo; + + + + &a.max; + + + + &a.hanai; + + + + &a.jp.kiroh; + + + + &a.jp.hino; + + + + &a.jp.shou; + + + + &a.jp.yuki; + + + + &a.jp.tmaruya; + + + + &a.jp.mita; + + + + &a.jp.kmiyakoda; + + + + &a.jp.miyasita; + + + + &a.jp.condle; + + + + &a.jp.tomo; + + + + + + 査読者 (五十音順) + + + + &a.asami; + + + + &a.jp.iwasaki; + + + + &a.jp.yoshiaki; + + + + &a.jp.g92k0323; + + + + &a.jp.y-koga; + + + + &a.jp.saeki; + + + + &a.jp.sugimura; + + + + &a.max; + + + + &a.hanai; + + + + &a.jp.nao; + + + + &a.jp.kiroh; + + + + &a.jp.hino; + + + + &a.jp.shou; + + + + &a.jp.yuki; + + + + &a.jp.mrt; + + + + + + ツール作成者 + + + + &a.jp.katsu; + + + + &a.jp.iwasaki; + + + + + + diff --git a/ja/handbook/kernelconfig/chapter.sgml b/ja/handbook/kernelconfig/chapter.sgml new file mode 100644 index 0000000000..4ab47cf1bc --- /dev/null +++ b/ja/handbook/kernelconfig/chapter.sgml @@ -0,0 +1,1698 @@ + + + + FreeBSDカーネルのコンフィグレーション + + 原作: &a.jehamby;. + 6 October 1995. + + 訳: &a.jp.tomo;, &a.jp.yoshiaki;. + 2 November 1996. + + この章はシステムに合わせたカーネルの再構築の基礎について + 述べたものです. この章は, システム管理の初心者から Unix + システム管理に十分な経験を積んだ人までを対象としています. + + + なぜカスタムカーネルを作るか? + + システムに合わせたカーネルの構築はすべての + Unixシステム管理者が + 避けて通ることのできない最も重要な通過儀礼の1つです. + この作業は, 多くの時間を必要としますが, あなたの FreeBSD + システムに多くの利益をもたらします. + GENERICカーネルは, + めったに使われることのないハードウェアをサポートするとともに, + 考えられるすべての SCSIカードやネットワークカードをサポート + しなければなりませんが, システムに合わせたカーネルは + あなたの PC + のハードウェアのみをサポートします. これは, + 次にあげるような利益をもたらします. + + + + あなたが持っていない + ハードウェアについては検出をおこなわな いので, + ブートにかかる時間が短くなります. + + + + システムに合わせたカーネルは多くの場合メモリ使用量が + 減ります. カーネルはいつもメモリ上に存在するので, + 不必要なコードがあると本来プログラムが利用できるはずの RAM + (実メモリ) を占めてしまいますのでこれは重要なことだ + といえます. したがって, メモリが少ないシステムでは, + カーネルの再構築は大変重要です. + + + + 必要に応じていくつかのカーネルオプションは調整すること + ができ, またサウンドカードのような GENERICカーネルには + ない + デバイスドライバをカーネルに含めることが できます. + + + + + + カスタムカーネルの構築とインストール + + まず, + カーネル再構築に必要なディレクトリをざっと見てみましょう. + ここではディレクトリはすべて + /usr/src/sys以下の相対位 置で示します. + また, /sysからもアクセス可能です. + ここには, カーネルの各部分を構成するサブディレクトリが + いくつもあります. しかし, 私たちの目的では 最も重要なのは + i386/confです. ここで, あなたの + システムに合わせてカーネル コンフィグレーションを編集します. + それから compileディレクトリ, + ここはカーネルが作られる 場所です. + サポートされているデバイスやファイルシステムのディレ + クトリツリーがオプション毎にサブディレクトリに分かれている論理 + 的構成に注意してください. また, + i386のディレクトリは + PCのハードウェアのみを扱い, + i386以外のディレクトリは + FreeBSDが他のプラットフォームに移植される際には共有されるコー + ドです. + + + もし, あなたのシステムに/usr/src/sys + 以下のディレクトリがなければ, + カーネルのソースが インストールされていません. + もっとも簡単な方法は (rootで) + /stand/sysinstall + を用いて以下のようにします. 設定(Configure) + を選んでから 配布ファイル(Distribution) + を選択し, src の中の sys + をインストールしてください. + + + + つぎに, i386/confに移動して, + GENERIC + コンフィグレーションファイルをカーネルに与えたい名前に + コピーしてください. たとえば: + + &prompt.root; cd /usr/src/sys/i386/conf +&prompt.root; cp GENERIC MYKERNEL + + 慣習として, この名前はすべて大文字でつづられます. もし, + いくつかの異なるハードウェアの FreeBSDマシンを扱うなら, + この名前にホスト名を含めるとよいでしょう. ここでは, 例として + MYKERNEL と呼ぶことにします. + + + この作業は root権限でおこなう必要があります. + そうでなければ, permission + deniedというエラーが出ます. + + + では, MYKERNEL + をあなたの好きなエディタで編集してください. もし, + システムをインストールしたばかりならば, 利用できる エディタは + viだけかもしれません. ここでは使い方 + の説明はしませんが, 参考図書 + にあるような多くの本で詳しく説明 されていますので, + そちらを参照してください. + まずファイルの最初の方のコメント行を編集し, あなたのコンフィグ + レーションに合せて変更した点などを記述して + GENERIC と区別がつく + ようにしておきましょう. + + もし SunOSや他の BSDオペレーティングシステムでカーネルの + 再構築をしたことがあれば, このファイルはとても親しみ + やすいでしょう. しかし, DOSのようなその他の + オペレーティングシステムしか知らない人から見れば, + GENERIC + コンフィグレーションファイルはとても + なじみにくいものかもしれません. そのような場合は, コンフィグレーションファイル + の節をゆっくりと注意深く読んでください. + + + 古いバージョンの FreeBSD からアップグレードを + おこなう場合, + 新しいカーネルソースを得た場所より新しいバージョンの + &man.config.8; を取ってくる必要があるかもしれません. これは + /usr/src/usr.sbinにあります. + したがってこれらのソースをダ ウンロードする必要があります. + 次のコマンドを実行する前に + (configを)作りインストールをしておいてください. + + + 編集し終ったら, 次のコマンドによってコンパイル, インストール + を行ってください. + + &prompt.root; /usr/sbin/config MYKERNEL +&prompt.root; cd ../../compile/MYKERNEL +&prompt.root; make depend +&prompt.root; make +&prompt.root; make install + + 新しいカーネルはルートディレクトリに + /kernelという 名前でコピーされ, + 今までのカーネルは /kernel.old + という名前へ変更されます. では, システムをシャットダウン, リブー + トして新しいカーネルを使ってください. うまく行かない場合は, + この章の終りの 問題が起きた場合には + を参照してください. この章の新しい カーネルがブートしない + 場合のリカバリの方法を注意深く読んでおいてください. + + + (サウンドカードのような)新しいデバイスを 追加した場合は, + 使う前に /devディレクトリで + デバイスノードを追加しなければならないかもしれません. + 詳しくは, デバイスノード + を読んでください. + + + + + コンフィグレーション ファイル + + コンフィグレーション ファイルの一般的なフォーマット + はとてもシンプルです. 各行は1つのキーワードと1つ以上の + 引数を含んでいます. 見やすくするために, ほとんどのキーワードは + 引数を1つしか書いてありません. + #に続くものはすべてコメントとして扱われ, + 無視されます. ここでは, それぞれのキーワードについて だいたい + GENERIC に出てくる順番で説明します. しかし, + お互いに関係のあるキーワードは, 実際には + GENERIC ファイル上に + バラバラに現れていても, (ネットワーキングのように)1つにまとめ + てあります. おびただしい数の + オプションの一覧が + GENERICと同じディレクトリの + LINT コンフィグ + レーションファイルにあります. もし, ある行の目的や必要性に疑 + 問を持ったら最初に LINT + をチェックしてください. + + カーネルは現在, オプションを扱う方法をよりよい機構に移行しよ + うとしています. 従来は, 各々のオプションは単純にカーネルの + Makefile中の CFLAGS行の + スイッチに変換されて いました. + 自然とオプションは際限なく増えて行きます. だれも実際に + はどのオプションがどのファイルで参照されているかは知りません. + + + 新しい方法では, すべてのオプション依存の + #ifdefは当該オプショ ンを + opt_foo.h + (これらのファイルはconfigによって + compileディレ クトリに作られます) + から読み込むように変わりました. config + の有効なオプションのリストは2つのファイルにお かれます. + アーキテクチャに依存しないオプションは + /sys/conf/optionsに置かれ, + アーキテクチャ依存のオプショ ンは + /sys/arch/conf/options + に置かれます. arch の部分は例えば + i386となります. + + + 必須キーワード + + ここにあるキーワードはカーネルの構築に必要不可欠です. + + + + machine "i386" + + 最初のキーワードは machineです. + FreeBSDは Intelの 386とその互換チップ上でしか + 動かないので, i386を指定します. + + + 数字を含むキーワードはすべて + クォーテーションマークで囲む必要があります. + そうしないと, configは混乱し, + 386を実際の数値として扱ってしまいます. + + + + + cpu "cpu_type" + + 次のキーワードは cpuです. + FreeBSDでサポートしている CPUの中から記述します. + cpu_typeとして指定可能な値は + 次の通りです. + + + + I386_CPU + + + + I486_CPU + + + + I586_CPU + + + + I686_CPU + + + + GENERIC カーネルのように + cpuの行の + cpu_type + が異なった値を持つものが 複数あってもかまいません. + カスタムカーネルでは, あなたが持っている + cpuを1つだけ指定するのが 一番です. 例えば, もし Intelの + Pentiumを持っていれば, + cpu_typeには, + I586_CPU を使ってください. + + + + ident machine_name + + 次は, + カーネルの識別名となるidentです. + GENERIC + からあなたがカーネルに与えたい名前に 変えてください. + ここでは, MYKERNEL とします. + identに与えた名前はカーネルの + ブート時に表示されるので, 普段のカーネルとは別に + カーネルに違う名前を与えたいとき(例えば, + 実験用のカーネルを作りたい時など), 便利でしょう. + 数字を含む名前にしたい場合は + machinecpu + の時と同じようにクォーテーションマークで + 囲む必要があります. + + C コンパイラに + スイッチで渡されるので, + DEBUGのような名前にしたり, + vax + といった他のCPUの名前など紛らわしい名前にしないで + ください. + + + + maxusers number + + これは, 重要なシステムテーブルのサイズを決めます. + ここ + で与えられる数字はマシンに同時にログインすると考えられ + るおよそのユーザ数です. しかし, 通常の使用環境であれば, + 特に X Window System を立ち上げたり, ソフトウェアを + コンパイルするような使用であれば + maxusersには少 なくとも + 4 以上を指定したほうがいいでしょう. + その理由は, maxusers + で決るテーブルで最も重要なものはプロセス + の最大数であるからです. プロセス最大数は 20 + + 16 * maxusersで与えられ, + maxusers1 + にすると36プロセスしか同時には持てません. この中にはブー + ト時にシステムによって起動する18個ぐらいのプロセス, Xを + 起動する時の15程度のプロセスも含みます. + manページを読むという1つのタスクでさえ, フィ + ルタやファイル伸長や表示のために9つのプロセスを起動し + ます. maxusers4 + にすれば, 同時に84個のプロセ + スを持つことができるのでどんな人でも十分な数だといえる + でしょう. それでも他のプログラムを起動した場合に, + あるいは, (Walnut Creek CDROMのFTPサイトのように) + 同時に多くの ユーザを抱えるサーバを走らせた場合に + proc table full + というおぞましいエラーが起きる場合はこの値を増や し, + カーネルを再構築してください. + + + maxuserはあなたのマシン + にログインできるユーザの数を制限するものでは + ありません. 単に, + あなたのシステムに + ログインするユーザ数の最大値と各々のユーザが + いくつのプロセスを走らせるかを考慮することに + よってさまざまなテーブルの値を適切な値に設定 + するだけです. これに対し, pseudo-device pty + 16の remote + loginsというキーワードは + 同時にリモートログインできるユーザ数を制限 + します. + + + + + config kernel_name root on root_device + + これはカーネルの位置と名前を特定します. + 伝統的にカーネルは + vmunixと呼ばれますが, FreeBSDでは + kernelとふさわしい名前になりました. + kernel_nameにはいつも + kernel を 使ってください. + 名前を変えると多くのシステム + ユーティリティが使えなくなります. 2番目の部分は + ルートファイルシステムとカーネルのあるディスクと + パーティションを指定してください. + SCSIドライブでなければ, wd0を, + SCSIドライブならば sd0です. + + + + + + + 一般的なオプション + + 以下はカーネルのサポートするさまざまなファイルシステムおよ + びその他のオプションです. + + + options MATH_EMULATE + + これは, 数値演算コプロセッサがない コンピュータ + (386や486SX) で数値演算コプロセッサ + のエミュレーションを可能にします. もし, Pentiumや 486DX, + あるいは387や487があれば, コメントアウト + できます. + + + FreeBSD付属の数値演算 + コプロセッサエミュレータはあまり正確では + ありません. + 非常に正確な計算をおこないたい ならば, より優れた + GNUのエミュレータである + GPL_MATH_EMULATEに変えることを + おすすめします. これはライセンスの関係でデフォルトでは + 含まれていません. + + + + + options "COMPAT_43" + + 4.3BSDとの互換性のためのオプションです. + そのままにしておいてください. コメントアウトすると, + いくつかのプログラムで動作がおかしくなります. + + + + options BOUNCE_BUFFERS + + ISAデバイスやISA互換モードで動作する EISAデバイス + では DMA (Direct Memory Access) は16MB以下のメモリに対し + てのみ動作します. このオプションによりメモリが16MB以上 + のシステムで DMA + を使うデバイスを動作させることができます. + + + + options UCONSOLE + + ユーザがコンソールを横取り (grab) + できるようにします. これは X Window System + 上で便利です. 例えば, コ ンソール xtermを xterm + -Cとタイプして作ると, そこに + write, talk + などのメッセージがカーネルからコ + ンソールへ送られるメッセージと同じように表示されます. + + + + + options SYSVSHM + + このオプションは System V の共有メモリを提供します. + X Window System の XSHM拡張での利用がもっとも一般に見 + られる例で, 多くのグラフィックを多用したプログラム + (movie player の Xanimや Linux DOOMなど) ではこれを + 利用することで速度が増加するというメリットがあります. X + Window System を利用するのであればこれは間違いな + く含めたくなるでしょう. + + + + options SYSVSEM + + System V のセマフォをサポートします. + 一般的に利用される + ことは少ないですがカーネルサイズの増加は数百バイトだ + けです. + + + + options SYSVMSG + + System V のメッセージをサポートします. + これを指定した場 + 合もカーネルサイズの増加は数百バイトだけです. + + + &man.ipcs.1; コマンドは これらの System V + の機構を利用しているプロセスを表示し ます. + + + + 訳注: 共有メモリ, セマフォ, + メッセージ(メッ セージキュー) は System V系 + で一般的なプロセス間通信の機 構です. くわしくは System + Vのプロセス間通信に関する文 献, 「詳解 + UNIXプログラミング」 (ソフトバンク) , 「UNIXネッ + トワークプログラミング」 (トッパン) + などを参照してくださ い. + + + + + + + + ファイルシステムオプション + + これらのオプションはさまざまなファイルシステムへのサポート + を追加します. 少なくともブートするためのデバイスのサポートを含 + める必要があります. 標準的にはハードディスクからブートするので + あれば FFS , + ディスクレスワークステーションとしてイー + サネットからブートするのであれば NFSです. + 一般的に利用される他のファイルシステムをカーネルに含め, あまり + 利用しないファイルシステム (多分 MS-DOSファイルシステム?) + のサポー トをコメントアウトすることができます. これは Loadable + Kernel Module ディレクトリ /lkm から, + 最初にそのタイプのファイ ルシステムがマウントされる時に + 動的にドライバがロードされるからです. + + + options FFS + + 基本的なハードドライブ ファイルシステムです. + ハードディ + スクからブートする場合は残しておいてください. + + + + options NFS + + ネットワーク ファイルシステムです. Ethernet経由で + Unixファ + イルサーバからパーティションをマウントする予定がない場 + 合はコメントアウトすることができます. + + + + options MSDOSFS + + MS-DOS ファイルシステムです. ブート時に + DOSフォーマット のハード + ドライブをマウントする予定のない場合はコメン + トアウトしても安全です. 先に示したように, DOSパーティ + ションをマウントする時に自動的にロードされます. また + (ports コレクションにある) + mtools という素晴 + らしいソフトウェアにより mount , unmountなしで DOSフロッ + ピーにアクセスすることができます (これは MSDOSFSも必要 + ありません). + + + + options "CD9660" + + CD-ROMのための ISO 9660 ファイルシステムです. + CD-ROMを 持っていないか, 時々 データ + CDをマウントするだけならコ メントアウトしましょう + (データ CDを最初にマウントする + 時に動的にロードされます). オーディオ CDはこのファイル + システムは必要ありません. + + + + options PROCFS + + プロセス ファイルシステムです. + これは疑似的なファイルシ ステムで + /proc にマウントされ, + &man.ps.1; などのプロ + グラムがプロセスに関してより詳しい情報を与えてくれるよ + うになります. + + + + options MFS + + メモリマップド ファイルシステムです. + これは基本的に一時 ファイルを記憶するための高速な + RAMディスクで, 大きな swap領域がある場合に有効です. + MFSパーティションをマウ + ントするに適した場所は多くのプログラムが一時ファイルを + 置く /tmpです. MFS RAMディスクを + /tmp にマウントするには以下の内容を + /etc/fstabに追 加してリブートするか + mount /tmpとタイプします. + + +/dev/wd1s2b /tmp mfs rw 0 0 + + + /dev/wd1s2bをあなたが使用して + いるswap パーティションに置き換えてください. これは以 + 下のように /etc/fstab + に書かれているでしょう. + + + +/dev/wd1s2b none swap sw 0 0 + + + + また, MFS ファ + イルシステムは動的にロードすることは + できません . + したがって使いたい場合はコンパイル時に カーネルに + 含める必要があります. + + + + + options "EXT2FS" + + Linux のファイルシステム. ext2fs のサポートにより, + Linux パーティションを読み書きすることができます. + これは, FreeBSD と Linux + のデュアルブートシステムにおいて + 両者でデータを共有したい場合に有用です. + + + + options QUOTA + + ディスククォータを有効にします. + アクセスが公開されてい るシステムで (一人のユーザが) + /homeパーティショ ン (全体) + をあふれさせることができないようにそれぞれのユーザ + にディスククォータを発行することができます. + ディスククォータについての詳しい内容はディスク + クォータの章を見てください. + + + + + + + 基本的なコントローラとデバイス + + この節では FreeBSDでサポートされているディスク, テー プ, + CD-ROMコントローラについて示します. SCSI コントローラと ネットワーク + カードについ ては別の節になっています. + + + controller isa0 + + FreeBSD のサポートするすべての PCで必要です. IBM + PS/2 (マイ クロチャネルアーキテクチャ) では現時点では + FreeBSDは動 きません. + + + + controller pci0 + + PCIバスを持つマザーボードの場合は含めます. + これにより PCIカードの自動認識と PCIから + ISAバスへのゲートウェイが 可能になります. + + + + controller fdc0 + + フロッピードライブコントローラです. + fd0A: + ドライブで fd1 は + B: ドライブです. + ft0 は + フロッピーコントローラに接続する QIC-80 テープドライブで + す. 対応するデバイスがない場合はそれぞれの行をコメント + アウトしてください. + + + QIC-80テープのサポートは別に + &man.ft.8; というフィルタプログラムが必要です. + くわしくはマニュアルページを見てください. + + + + + controller wdc0 + + プライマリIDEコントローラです. + wd0 と + wd1はそれぞれマスタ, + スレーブドライブで す. wdc1 は + セカンダリの IDEコントローラで3台 目, + 4台目のハードディスクまたは IDE CD-ROMのある場合に + 使います. 利用しない行はコメントアウトしてください (例え + ば, SCSIハードディスクのみを使う場合は6行全部をコメント + アウトしてもよいかもしれません). + + + + device wcd0 + + このデバイスは IDE CD-ROMのサポートをします. + wdc0を有効にしておく必要があり, もし + 2つ以上の IDE コントローラがあり, そのうちの + 2つ目のカードに CD-ROMを接 続する場合 + wdc1 も必要です. また + options + ATAPIを書いておく必要もあります. + + + + device npx0 at isa? port "IO_NPX" irq 13 vector npxintr + + npx0 は FreeBSD + ハードウェアコプロセッサとソフト + ウェアエミュレータ両方の浮動小数点演算ユニットへのインタ + フェースです. これは 不可欠 + です. + + + + device wt0 at isa? port 0x300 bio irq 5 drq 1 vector wtintr + + Wangtek と Archive の QIC-02/QIC-36 + テープドライブのサポートです. + + + + Proprietary CD-ROM support + + 以下のようなドライブを + proprietary(独自の) CD-ROM + ドライブと呼ぶことにします. これらのドライブは専 + 用のコントローラを持つか, サウンドブラスタ16などのサウ + ンドカードに接続します. これらは IDEでも + SCSIでもあ りません. + 多くの標準速や2倍速の古い CD-ROMはこれら + のインタフェースを持っていますが, より新しい四倍速の + ものは IDE か + SCSI + でしょう. + + + device mcd0 at isa? port 0x300 bio irq 10 vector mcdintr + + ミツミ製 CD-ROM (LU002, + LU005, FX001D)です. + + + + device scd0 at isa? port 0x230 bio + + ソニー製 CD-ROM (CDU31,CDU33A)です. + + + + controller matcd0 at isa? port ? bio + + 松下/パナソニック製 CD-ROM (サウンドブラスタ用 + クリエィティブ ラボ製として販売されていました) + です. + + + + + + + + + + SCSI デバイスのサポート + + この節では FreeBSDのサポートするいろいろな SCSIコント + ローラとデバイスのサポートについて書きます. + + + SCSI コントローラ + + 以下の十数行は異る種類の + SCSIコントローラのサポートです. + 使用しているもの以外の部分は + コメントアウトしてください. + + + controller bt0 at isa? port "IO_BT0" bio irq ? vector btintr + + ほとんどの Buslogic社のコントローラです. + + + + controller uha0 at isa? port "IO_UHA0" bio irq ? drq 5 vector uhaintr + + UltraStor 14F と 34F です. + + + + controller ahc0 + + Adaptec 274x/284x/294x です. + + + + controller ahb0 at isa? bio irq ? vector ahbintr + + Adaptec 174x です. + + + + controller aha0 at isa? port "IO_AHA0" bio irq ? drq 5 vector ahaintr + + Adaptec 154x です. + + + + controller aic0 at isa? port 0x340 bio irq 11 vector aicintr + + Adaptec 152x や + サウンドカードなどに使われている Adaptec AIC-6360 + チップです. (slow!) + + + + controller nca0 at isa? port 0x1f88 bio irq 10 vector ncaintr + + NCR 5380を使っている ProAudioSpectrum や + Trantor T130 で す. + + + + controller sea0 at isa? bio irq 5 iomem 0xc8000 iosiz 0x2000 vector seaintr + + Seagate ST01/02 8 ビットコントローラです. + (slow!) + + + + controller wds0 at isa? port 0x350 bio irq 15 drq 6 vector wdsintr + + Western Digital WD7000コントローラです. + + + + controller ncr0 + + NCR 53C810, 53C815, 53C825, 53C860, 53C875 + チップを使った PCI SCSI コントローラです. + + + + + + + options "SCSI_DELAY=15" + + このオプションによりカーネルはそれぞれの + SCSIデバイスを プローブする前に 15秒間待ちます. + IDEドライブのみを使用 している場合は無視して構いません. + ブートを速くするため にこの数値を + 5秒ぐらいまで小さくしたいでしょう. そうし た場合, + FreeBSDが SCSIデバイスを認識しにくくなるかもし れません. + その時は, もちろんこのオプションの値は元に戻 + さないといけません. + + + + controller scbus0 + + SCSIコントローラがある場合, この行で + SCSI全般のサポー トを与えます. SCSIのない場合, + この行と以下の3つの行をコメ + ントにすることができます. + + + + device sd0 + + SCSIハードディスクのサポートです. + + + + device st0 + + SCSIテープドライブのサポートです. + + + + device cd0 + + SCSI CD-ROM のサポートです. + + 上のエントリについている + 0はいくらか誤解を招き + やすいかもしれません. これらのデバイスはすべてカーネルが + 見つけた時に割り当てがおこなわれ, + SCSIバスに何台つながってい るか, ターゲット + IDが何番であるかはここの記述とは関係あ りません. + + 明示的に “固定的な”ターゲット + IDの特定のデバイスへの 割り当てをおこないたい場合は + LINT + カーネルコンフィグレーションファイルの + 該当する部分の説明を参照してください. + + + + + + + コンソール, バスマウス, Xサーバのサポート + + 2 つのタイプのコンソールからどちらか 1 + つを選ぶ必要があります. 標準ではない方の vt220 + コンソールを選んだ場合, X Window System を利用するには XSERVER + オプションを有効にする必要があります (訳注: sc0 には XSERVER + オプション相当の機能が始めから入っています). + またバスマウスと PS/2 マウスのオプションもあります. + + + device sc0 at isa? port "IO_KBD" tty irq 1 vector scintr + + sc0 + はデフォルトのコンソールドライバで SCOコン + ソールに似ています. このデバイス, あるいは VT220コンパ + チブルドライバの + vt0いずれを使う場合もほとんど + のフルスクリーンプログラムは + termcapなどのターミ + ナルデータベースライブラリを通してアクセスしますので, + あまり違いはないでしょう. + このコンソールを使う場合でフルスクリーンプログラムでト + ラブルが起きる場合にはログインした時に + TERM変数の値を + “scoansi”にしてください. + + + + device vt0 at isa? port "IO_KBD" tty irq 1 vector pcrint + + + これはVT-220コンパチブルコンソールドライバで + VT100/102の 上位互換です. これは + sc0の使えない種類のラッ + プトップ機でもうまく動きます. ログイン時に + TERM変数の値 を>vt100 + か vt220にしてください. また, + このドラ + イバはネットワークを介して多くの異るマシンから接続する + 場合も便利です. + sc0デバイスのための + termcapや + terminfoエントリは必ずしも + 利用できるわけではありませんが — + vt100はいずれの + プラットフォームでも利用可能でしょう. + + + options "PCVT_FREEBSD=210" + + vt0 + コンソールドライバを使う場合に必要で す. + + + + options XSERVER + + vt0 + コンソールドライバを使う時のみ有効です. これは + vt0 コンソールドライバのもとで + XFree86 X + サーバを動かすのに必要なコードを含めます. + + + + + + + device mse0 at isa? port 0x23c tty irq 5 vector ms + + Logitech や + ATIのバスマウス入力カードを利用する場合のデ + バイスです. + + + シリアルマウスを使う場合にはこれら2つ + の行(バスマウスとPS/2マウスに関する行) は無視して, + 代わりに シリアル + ポート(おそらくはCOM1)を有効にしてくだ さい. + + + + + device psm0 at isa? port "IO_KBD" conflicts tty irq 12 vector psmintr + + このデバイスは + PS/2マウスポートにマウスを接続する場合に + 使います. + + + + + + + シリアル, パラレルポート + + ほとんどすべてのシステムにこれらはあります. + プリンタを接続す る場合は プリンタの利用の章が非常 + に役に立つでしょう. モデムを使う場合は ダイヤルアップ アクセス + に非常に詳しいシリアルポートの設定とデ + バイスの使い方があります. + + + device sio0 at isa? port "IO_COM1" tty irq 4 vector siointr + + sio0からsio3は + MS-DOSにおける COM1から + COM4に相当する4本のシリアルポートです. + COM4に内蔵モデムがあり COM2を使う場合, FreeBSDからアク + セスするためにはモデムのIRQを2へ変更する必要があるとい + うことを注意しておきます (技術的な理由より IRQ 2 = IRQ + 9となります). + マルチポートシリアルカードを使う場合にマニュアルページ + の &man.sio.4; にはこのオプションで使う値などのよ + り多くの情報があります. ビデオカードの中には (特に S3 + チップベースのものには) IOアドレスの + 0x*2e8から を利用するものがあり, + また多くの安価なシリアルカードは + IOアドレス空間を16-bitフルデコードしていませんので, こ + れらのカードは衝突します. この場合 COM4ポートは実質上 + 利用できません. + + それぞれのシリアルポートは + (割込みの共有をサポートした + マルチポートカードを利用していないのであれば) 別々の IRQ + を割り当てる必要がありますので COM3と COM4のデフォルトの + IRQは利用できません. + + + + device lpt0 at isa? port? tty irq 7 vector lptintr + + lpt0 から + lpt2は利用可能な3本のプリン + タポートです. 多くの場合は1本のみですので他の2本はない + のであればコメントアウトして構いません. + + + + + + + ネットワーク + + FreeBSDでは他の一般的な + Unixと同様にネットワークが非常に + 重視されています. イーサネットカードが + なくても必須のオプションとダイヤルアップ ネットワークのサポー + トに注意してください. + + + options INET + + ネットワーキングのサポートです. + ネットワークに接続する予定がな + くても残しておいてください. + 多くのプログラムは少なくともループ + バックネットワーキングが必要です(つまり, + PCの中でネットワーク コネクションをおこないます). + したがってこのオプションは本質的 に不可欠です. + + + + Ethernet cards + + 以下にさまざまなイーサネットカードを + 有効にするオプショ ンを示します. + ネットワークカードがなければこれらすべてを + コメントアウトすることができます. そうでなければ利用す + る特定のイーサネットカードをサポートするオプションを残 + しておきます. + + + device de0 + + DECの DC21040, DC21041, DC21140チップを使った + PCIイー サネットアダプタです. + + + + device fxp0 + + Intel EtherExpress Pro/100B + 高速イーサネットカード です. + + + + device vx0 + + 3Com の 3C590, 3C595です (いくらか + bugがあります). + + + + device cx0 at isa? port 0x240 net irq 15 drq 7 vector cxintr + + Cronyx/Sigma の + マルチポート同期/非同期カードです. (with Cisco or + PPP framing) + + + + device ed0 at isa? port 0x280 net irq 5 iomem 0xd8000 vector edintr + + Western Digital と SMC の 80xx, 8216 Elite + Ultra ; ノベル NE1000, NE2000; 3Com の 3C503; + HPの PC Lan Plus (HP27247B とHP27252A) + です. + + + + device el0 at isa? port 0x300 net irq 9 vector elintr + + 3Com の 3C501 です. (slow!) + + + + device eg0 at isa? port 0x310 net irq 5 vector egintr + + 3Com の 3C505です. + + + + device ep0 at isa? port 0x300 net irq 10 vector epintr + + 3Com の 3C509 です(バグがあります). + + + + device fe0 at isa? port 0x240 net irq ? vector feintr + + 富士通 MB86960A/MB86965A + ベースのイーサネットカード です. + + + + device fea0 at isa? net irq ? vector feaintr + + DEC DEFEA EISA FDDI アダプタです. + + + + device ie0 at isa? port 0x360 net irq 7 iomem 0xd0000 vector ieintr + + AT&T StarLAN 10 と EN100; 3Com の 3C507; + NI5210; Intel EtherExpress 16 です. + + + + device le0 at isa? port 0x300 net irq 5 iomem 0xd0000 vector le_intr + + DEC の EtherWorks 2 and EtherWorks + 3 (DEPCA, DE100, DE101, DE200, DE201, DE202, + DE203, DE204, DE205, DE422)です. + + + + device lnc0 at isa? port 0x300 net irq 10 drq 0 vector lncintr + + Lance/PCnet カード (Isolan, Novell NE2100, + NE32-VL)です. + + + + device ze0 at isa? port 0x300 net irq 5 iomem 0xd8000 vector zeintr + + IBM/ナショナルセミコンダクタの PCMCIA + イーサネット コントローラです. + + + + device zp0 at isa? port 0x300 net irq 10 iomem 0xd8000 vector zpintr + + 3Com の PCMCIA Etherlink III です. + + + + + + いくつかのカードでは (特に NE2000では) + “標準値” がありませんので + IOポートやIRQの値を変更す + る必要がある場合があります. + + + + + pseudo-device loop + + loop は + TCP/IPの一般的なループバックデバイスで す. telnet や + FTPを localhost (127.0.0.1) + に対して行なうとこの疑似デバイスを通して帰ってきます. + 不可欠です. + + + + pseudo-device ether + + ether + はイーサネットカードがある場合のみ必要で + 一般的なイーサネットプロトコルを含めます. + + + + pseudo-device sl number + + sl は SLIP (Serial Line Internet + Protocol) をサポー トします. これはほとんど完全に, + より簡単に設定ができ, モ デム to モデム接続に適した, + よりパワフルな PPPに取って代 わられています. + slの後の + number は同 時にいくつの + SLIPセッションをサポートするかを示します. + SLIPの設定のより詳しい情報はこのハンドブックの + 「PPPとSLIP」の章の SLIPクライアントのセットアップ + と SLIP + サーバのセットアップ方法 + について書かれた節にあります. + + + + pseudo-device ppp number + + pppはダイヤルアップ + インターネット接続のための カーネルモード PPP + (Point-to-Point Protocol) をサポート します. + ユーザアプリケーションとしてtun + を 利用する PPPの実装もあり, + こちらはより柔軟性がありデマ + ンドダイアリング(プログラムが接続要求を出した時に自動 + 的にダイヤルをおこなう)などの機能もあります. それでもこ + の PPPドライバを利用したい場合は カーネル PPP の設定 + の節を読んでください. + slデバイスと同じように + numberは同時 に + PPP接続できる数を示します. + + + + pseudo-device tun number + + tun はユーザモード + PPPソフトウェアが利用しま す. + このプログラムは設定が簡単で非常に高速です. + また自動ダイヤル オン デマンドなどの機能を持ちます. + tunの後のnumber + は同時におこなうことのできる + PPPセッションの数を示します. ユーザ PPP のセットアップ + の節により多くの情報があ ります. + + + + pseudo-device bpfilter number + + バークレイ パケットフィルタです. + この疑似デバイスはネッ トワークインタフェースを無差別 + (promiscuous) モードにし てネットワーク + (例えば単一のイーサネット) にブロードキャス + トされるすべてのパケットを取り入れることを可能にします. + こ れらのパケットはディスクに取り入れられたり + &man.tcpdump.1; によって検査されます. この機能の実現 + はネットワーク全体のセキュリティとの微妙な妥協点であるこ + とに注意してください. bpffilter の後の + numberは同時に検査することの + できるインタフェースの数を示します. + 危険の可能性について十分解っている場合を除いてこのオプ + ションは奨めません. すべてのネットワークカードでこの機能 + をサポートをしてはいません. + + + + + + + サウンドカード + + ここは + GENERICカーネルに含まれていない最初のセクションです. + サウンドカードのサポートをするためには LINTコンフィグレーショ + ンファイル(これには すべての + デバイスが含まれています)か + ら以下のような適切な行をコピーする必要があります. + + + controller snd0 + + サウンドドライバ一般のコードです. + pca + を除く以下のすべてのサウンドカードで必要で す. + + + + device pas0 at isa? port 0x388 irq 10 drq 6 vector pasintr + + ProAudioSpectrum のオーディオ と MIDI です. + + + + device sb0 at isa? port 0x220 irq 7 conflicts drq 1 vector sbintr + + SoundBlaster です. + + + SoundBlaster の IRQが標準と異る値, 例えば + 5になっている場合, irq + 7irq 5に書き換え, + キーワード conflictsを削除し + てください. さらに options + "SBC_IRQ=5"の行を + 加える必要があります. + + + + + device sbxvi0 at isa? drq 5 + + SoundBlaster 16 の 16-bit オーディオです. + + + SB16の DMAチャネルが標準と異っている( 例えば + 6か7)キーワード drq + 5を適切な値に書き直 して, (DMA 6の場合) + options "SB16_DMA=6"を付け + 加えてください. + + + + + device sbmidi0 at isa? port 0x330 + + SoundBlaster 16 の MIDI インタフェースです. + SoundBlaster 16を使う場合必ずこの行を含めてコンパイル + してください. + + + + device gus0 at isa? port 0x220 irq 10 drq 1 vector gusintr + + Gravis Ultrasound です. + + + + device mss0 at isa? port 0x530 irq 10 drq 1 vector adintr + + Microsoft Sound System です. + + + + device opl0 at isa? port 0x388 conflicts + + AdLib FMシンセサイザオーディオです. AdLib, + SoundBlaster, ProAudioSpectrum を使い + playmidi (ports にあります) + などのプログラムで + MIDIの演奏をしたい場合にこの行を含めます. + + + + device mpu0 at isa? port 0x330 irq 6 drq 0 + + Roland MPU-401 カードです. + + + + device uart0 at isa? port 0x330 irq 5 vector "m6850intr" + + MIDIインタフェースの 6850 UART です. + + + + device pca0 at isa? port "IO_TIMER1" tty + + PC のスピーカーを使ったオーディオです. + これは非常に品質 が悪く, CPUの性能, + 負荷に強く依存します, と言っておき ます + (サウンドカードは必要ありませんが). + + + + + + 追加のドキュメントが + /usr/src/sys/i386/isa/sound/sound.doc + にあります. また, これらのデバイスを追加する場合は, + サウンドデバイスノード + を作る必要があり ます. + + + + + 疑似デバイス + + 疑似デバイスドライバはデバイスドライバと同様に働きますがマ + シン上に対応する実際のハードウェアがないカーネルの部分です. + ネットワーク関連の + 疑似デバイスはそちらのセクションに示しました. ここでは残りにつ + いて示します. + + + pseudo-device gzip + + gzipは + gzipによって圧縮された FreeBSDの + プログラムを実行できるようにします. /standにあるプログ + ラムは圧縮されているのでカーネルにこのオプションをつけ + ておくのはいい考えでしょう. + + + + pseudo-device log + + log + はカーネルエラーのログを取るのに使います. + 不可欠です. + + + + pseudo-device pty number + + pty + は“仮想ターミナル”や仮想ログインポート です. + 外部からの telnetや + rloginセッ ション, xterm, + emacsなどのアプリケーションが使います. + numberは作ることのできる + ptyの数を示 します. + GENERICのデフォルトは16で, 同時の + xtermウィンドウやリモー + トログインのために増やす場合は最大で 64までです. + + + + pseudo-device snp number + + スヌープデバイスです. + この疑似デバイスはあるターミナル セッションが + &man.watch.8; command によって他のター + ミナルを監視することを可能にします. この機能の実現はセ + キュリティとプライバシに対して極めて微妙な関係があり + ます. snp の後の number + は同時におこなうことのでき + るスヌープセッションの総数です. 選択可能です. + + + + pseudo-device vn + + V ノードドライバです. ファイルを &man.vnconfig.8; + コマンドによって + デバイスとして取り扱うことを可能にします. + このドライバによりフロッピーディスクイメージを + 操作したりファ イルをスワップデバイスとして (MS + Windowsのスワッ プファイルなどを)用いることができます. + 選択可能です. + + + + pseudo-device ccd number + + ccd (concatenated + disk)デバイスはいくつかのディスクパーティ + ションを融合して大きなディスクのように + 見せることができます. ccdの後の + number + は同時に作ることのできる疑似ディスクの数です. + (詳しいことは &man.ccd.4; と &man.ccdconfig.8; のマニュ + アルを参照してください.) 選択可能です. + + + + + + + ジョイスティック, スピーカー, その他 + + この節は FreeBSDのここまでに示した以外のハードウェア + デバイスへのサポートについて示します. これらは GENERICカーネル + には含まれませんのでこのハンドブックや LINT (このファイルには + すべてのデバイスのサポートが含まれます) + からコピーする必 要があります. + + + device joy0 at isa? port "IO_GAME" + + PC のジョイスティックです. + + + + pseudo-device speaker + + IBM BASIC スタイルの PC内蔵スピーカーのサポートです. + シェルスクリプトで簡単な演奏をする + /usr/sbin/spkrtest + やキーボードを使って単純なピ + アノのように演奏することができる + /usr/games/piano + (gamesパッケージをイ + ンストールした場合にはあります) のようないくつかのプロ + グラムで使われます. また素晴らしいテキストロールプレイ + ングゲームである NetHack + (ports コレクションにあります) + はゲーム中の楽器の演奏でこのデバイスを使うように設定を + することができます (訳注:日本語化されたJNetHackもportsに + あります). + + pca0 デバイスの + 項も参照してください. + + + + + + + + デバイスノードを作る + + カーネル内のほとんどすべてのデバイスは対応する + “node” エント リが /dev + ディレクトリにあります. これらのノードは普 + 通のファイルのように見えますが, 実際にはプログラムがデバイスに + アクセスするのに用いるカーネル内への特別なエントリです. + シェルスクリプトである + /dev/MAKEDEVはオペレーティング + システムを最初にインストールする時に実行され, サポートされてい + る大部分のデバイスのノードを作ります. しかし, + すべての + ノードが作られるわけではありませんので + 新しいデバイスのサポートを加える時は対応するエントリがこのディ + レクトリにあるかどうか確認してもしなければ, 作ってください. + 以下に例を示します. + + IDE CD-ROMのサポートをカーネルに加えるとします. 次の行 + を加えます. + + +controller wcd0 + + これにしたがって, /devディレクトリに + wcd0で始ま るエントリを捜してください. + 1文字が後ろにつくかもしれません. 後 ろについた文字が + cであるか先に + rのつくエントリは “raw”デバ + イスを示します. + それらのファイルがないことが明らかになったとします. そこで + /dev + ディレクトリに移動して次のようにタイプします. + + &prompt.root; sh MAKEDEV wcd0 + + スクリプトの実行が終ったら /devに + wcd0crwcd0c + エントリがあることを確認してください. これによ + り正しく実行されたことがわかります. + + サウンドカードの場合のコマンドは次の通りです. + + &prompt.root; sh MAKEDEV snd0 + + これにより対応するエントリが作られます. + + + サウンドカードのようなデバイスのノードを作る場合で, もし他 + の人がマシンにアクセスするようであれば, そのデバイスを + /etc/fbtab + ファイルに追加して外部からのアクセスから + 保護するのが望ましいでしょう. このファイルの詳細については + man fbtab を参照してください. + + + GENERIC + に含まれていないデバイスはエントリがありませんから,以上 + の簡単な手順をおこなうことになります. + + + すべての SCSI コントローラは同じ /dev + の エントリを使用しますのでノードを作る必要はありません. + またネッ トワークカードと SLIP/PPP 疑似デバイスは + /dev にはエント + リがありませんのでこれらについても作る必要がありません. + + + + + 問題が起きた場合には + + カスタムカーネルを作る場合に起きるトラブルは 4 + 種類に分けられま す. + + + Config コマンドの失敗 + + カーネルにあなたの設定をおこなった場合で + configコ マンドが失敗したのであれば, + 多分どこかで単純な間違いを やっているのでしょう. さいわい, + configはトラ + ブルの起きた行番号を出力しますので + viで素早く 見つけることができます. + 例えばもし次のように出力されれ ば, config: line + 17: syntax error + viのコマンドモードで + 17Gとタイプすればあな + たは問題のところへ飛ぶことができます. + GENERIC カーネル + のファイルや他のリファレンスと比較して注意深く修正して + ください. + + + + Make コマンドの失敗 + + make コマンドが失敗した場合には, + カーネル設定で config + がとらえられなかったような間違いをして + いることが多いようです. ふたたびコン + フィグレーションを見直してください. それでも問題を解決 + することができなければ &a.questions; + へあなたのカーネルのコンフィグレーションをつけてメー + ルしてください. 誰かが素早く間違いを見つけてくれるで + しょう. + + + + カーネルがブートしない + + + 新しいカーネルがブートしなかったり, + デバイスの認識をしな い場合でもあわてないでください! + さいわい, BSDは利用で + きないカーネルから復帰する優れたメカニズムがあります. + FreeBSDの bootプロンプトでリターンキーを押すかわりに + 単にブートさせたいカーネルの名前 (例えば + kernel.old) をタイプするだけです. + カーネルの再設定 + をおこなう場合に現在のカーネルを利用できるように取ってお + くのはよい考えです. + + 問題のないカーネルでブートした後に + あなたのコンフィグレー ションファイルを調べ, + 再び構築を試みてください. + /var/log/messages + ファイルにはすべての成功した + ブートのカーネルのメッセージやその他の記録があり, これ + は助けになる情報の一つでしょう. また, + &man.dmesg.8; コマンドは現在のブート時のカーネルメッ + セージを出力します. + + + カーネルの構築中にトラブルが起きた時に使うために + GENERICや他のカーネルを次の構築で消されない + ように異る名前で保存するようにしてください. kernel.old + は新しいカーネルをインストールする 時に, + その一つ前にインストールしたうまく動かないかもしれ + ないカーネルで上書きされてしまいますので当てにできませ + ん. またできる限り早く動作しているカーネルを本来の + kernelの位置に移動させてください. + そうしないと + &man.ps.1; のようなコマンドが正しく動きません. + make + でインストールされたカーネルのファイルを + (別のカーネルに戻すために) + “アンロック” するための特別 + のコマンドは + + &prompt.root; chflags noschg + /kernel + + です. また, + 新しい置き換えたカーネルあるいは重要ファイ + ルを動かしたり変更されないように + “ロック” するには 次のようにします. + + &prompt.root; chflags schg + /kernel + + + + + カーネルは動くが + ps は動かない! + + + システムユーティリティと異る + バージョンのカーネルをインス トールした場合, 例えば + 実験的に “2.2.0” のカーネルを 2.1.0-RELEASE + システム上にインストールするような場合, + &man.ps.1; や &man.vmstat.8; のような多くのシ + ステムステータスコマンドは動かなくなります. + libkvm を + 再コンパイルしてこれらのユーティリティを作りなおす + 必要がありま す. これは, + オペレーティングシステムのそれ以外の部分と異るバージョ + ンのカーネルを使うことが普通はあまりよくない + 理由の一つです. + + + + + + + diff --git a/ja/handbook/kerneldebug/chapter.sgml b/ja/handbook/kerneldebug/chapter.sgml new file mode 100644 index 0000000000..4e1a45a5fb --- /dev/null +++ b/ja/handbook/kerneldebug/chapter.sgml @@ -0,0 +1,689 @@ + + + + カーネルデバッグ + + 原作 &a.paul; and &a.joerg; + + 訳: &a.jp.yoshiaki;. + 18 March 1997. + + + <command>kgdb</command> + によるカーネルのクラッシュダンプのデバッグ + + ここではクラッシュダンプ (crash dump : 訳注 この文脈では + kernel 自身 + の異常によって停止した場合に出力されるイメージを指します) + によるカー ネルデバッグの方法を示します. + + ここではダンプするための十分なスワップ + (swap) の容量があるものとします. + もし複数のスワップパーティションを持ち, + 最初のパーティションがダンプ + を保持するのに十分な大きさを持たない場合は + 別のダンプデバイスを使うよ + うに (config kernel 行で) + カーネルのコンフィグをおこなうか, &man.dumpon.8; + コマンドを使って別のデバイスを示すことができます. &man.dumpon.8; + を使うもっともよい方法は変数 dumpdev を + /etc/rc.conf で設定することです. 一般的には + /etc/fstab で設定されているスワップデバイスが + 使われるでしょう. + スワップに使えないデバイスへのダンプ, + 例えばテープへのダンプは現在サポートさ + れていません. カーネルのコンフィグは + config -g によって行ってください. + FreeBSD + カーネルのコンフィグレーション + には FreeBSD のカーネルの設定の詳細がありますので + 参照してください. + + &man.dumpon.8; コマンドを使ってどこへダンプするか + カーネルに伝えてください + (&man.swapon.8; によってそのパーティションが + スワップとして設定された + 後でなければならないことに注意してください). これは普通は + /etc/rc.conf/etc/rc + で設定されます. あるいは + 別の方法としてカーネルコンフィグレーションファイルの + config 行の dump 節 で + ダンプデバイスをハードコードすることができます. + この方法はあまりよくは + ありません. カーネルがブート時に crash + する場合のクラッシュダンプを取り + たい時だけ使うべきです. + + + 以下では kgdbという用語は + gdbを “カーネルデバッグモード” + で動かしていることを意味します. gdbを + オプションをつけて起動するか + kgdbという名前でリン + クして起動することでこのモードになります. デフォルトでは + このリンク は作られていません. また, このアイデアは + GNU関係者たちが彼らのツール + を別の名前で呼び出した時に異なった動作をするということを + 好まない, と いう点で不評です. + あるいは将来この機能を廃止することになるかもしれません. + + + カーネルを作った時にそのコピーを + kernel.debug という名前で作 りましょう. + また, オリジナルに対して strip + -dを実行します. + オリジナルを普通にインストールします. また strip + していないカーネル も同様にインストールすることができますが, + シンボルテーブルの参照時間 + がいくつかのプログラムでは劇的に増加するでしょう. また, + カーネル全体 はブート時に読み込まれ + スワップアウトされないため数メガバイトの物理メ + モリが無駄になります. + + 例えばブートプロンプトで + 新しいカーネルの名前をタイプすることによって, + 新しいカーネルをテストした場合で, + 再びシステムを動かすのに別のカーネ + ルで立ち上げることが必要な場合はブートプロンプトで + フラグ + を使いシングルユーザの状態にしてください. + そして以下のような操作をおこな います. + + &prompt.root; fsck -p +&prompt.root; mount -a -t ufs # /var/crash 用のファイルシステムを書き込み可能にする +&prompt.root; savecore -N /kernel.panicked /var/crash +&prompt.root; exit # ...マルチユーザモードへ移行 + + ここに示した &man.savecore.8; は (現在動いているものとは別の) + カーネルのシンボル名の抽出をおこなうために使っています. + 抽出はデフォルトで + は現在動いているカーネルに対しておこなわれ, + クラッシュダンプとカーネルシンボ + ルのくい違いのためにまったく何もしません + (訳注:そのためにオプション + で実際にダンプをおこしたカーネルを指定します). + + クラッシュダンプの起きた後に + /sys/compile/WHATEVERへ行き + kgdbを動かします. kgdb + より次のようにします. + + symbol-file kernel.debug +exec-file /var/crash/kernel.0 +core-file /var/crash/vmcore.0 + + こうすると, + クラッシュダンプを使ってカーネルソースを他のプログラムと同様に + デバッグすることができます. + + 次に kgdb + での手順のセッションのログを示します. 長い行は読 + みやすくするために改行しました. また, + 参照のために行番号を入れてあり ます. ただし, これは実際の + pcvtコンソールドライバの開発中の実際のエ + ラーのトレースです. + + 1:Script started on Fri Dec 30 23:15:22 1994 + 2:&prompt.root; cd /sys/compile/URIAH + 3:&prompt.root; kgdb kernel /var/crash/vmcore.1 + 4:Reading symbol data from /usr/src/sys/compile/URIAH/kernel...done. + 5:IdlePTD 1f3000 + 6:panic: because you said to! + 7:current pcb at 1e3f70 + 8:Reading in symbols for ../../i386/i386/machdep.c...done. + 9:(kgdb) where +10:#0 boot (arghowto=256) (../../i386/i386/machdep.c line 767) +11:#1 0xf0115159 in panic () +12:#2 0xf01955bd in diediedie () (../../i386/i386/machdep.c line 698) +13:#3 0xf010185e in db_fncall () +14:#4 0xf0101586 in db_command (-266509132, -266509516, -267381073) +15:#5 0xf0101711 in db_command_loop () +16:#6 0xf01040a0 in db_trap () +17:#7 0xf0192976 in kdb_trap (12, 0, -272630436, -266743723) +18:#8 0xf019d2eb in trap_fatal (...) +19:#9 0xf019ce60 in trap_pfault (...) +20:#10 0xf019cb2f in trap (...) +21:#11 0xf01932a1 in exception:calltrap () +22:#12 0xf0191503 in cnopen (...) +23:#13 0xf0132c34 in spec_open () +24:#14 0xf012d014 in vn_open () +25:#15 0xf012a183 in open () +26:#16 0xf019d4eb in syscall (...) +27:(kgdb) up 10 +28:Reading in symbols for ../../i386/i386/trap.c...done. +29:#10 0xf019cb2f in trap (frame={tf_es = -260440048, tf_ds = 16, tf_\ +30:edi = 3072, tf_esi = -266445372, tf_ebp = -272630356, tf_isp = -27\ +31:2630396, tf_ebx = -266427884, tf_edx = 12, tf_ecx = -266427884, tf\ +32:_eax = 64772224, tf_trapno = 12, tf_err = -272695296, tf_eip = -26\ +33:6672343, tf_cs = -266469368, tf_eflags = 66066, tf_esp = 3072, tf_\ +34:ss = -266427884}) (../../i386/i386/trap.c line 283) +35:283 (void) trap_pfault(&frame, FALSE); +36:(kgdb) frame frame->tf_ebp frame->tf_eip +37:Reading in symbols for ../../i386/isa/pcvt/pcvt_drv.c...done. +38:#0 0xf01ae729 in pcopen (dev=3072, flag=3, mode=8192, p=(struct p\ +39:roc *) 0xf07c0c00) (../../i386/isa/pcvt/pcvt_drv.c line 403) +40:403 return ((*linesw[tp->t_line].l_open)(dev, tp)); +41:(kgdb) list +42:398 +43:399 tp->t_state |= TS_CARR_ON; +44:400 tp->t_cflag |= CLOCAL; /* cannot be a modem (:-) */ +45:401 +46:402 #if PCVT_NETBSD || (PCVT_FREEBSD >= 200) +47:403 return ((*linesw[tp->t_line].l_open)(dev, tp)); +48:404 #else +49:405 return ((*linesw[tp->t_line].l_open)(dev, tp, flag)); +50:406 #endif /* PCVT_NETBSD || (PCVT_FREEBSD >= 200) */ +51:407 } +52:(kgdb) print tp +53:Reading in symbols for ../../i386/i386/cons.c...done. +54:$1 = (struct tty *) 0x1bae +55:(kgdb) print tp->t_line +56:$2 = 1767990816 +57:(kgdb) up +58:#1 0xf0191503 in cnopen (dev=0x00000000, flag=3, mode=8192, p=(st\ +59:ruct proc *) 0xf07c0c00) (../../i386/i386/cons.c line 126) +60: return ((*cdevsw[major(dev)].d_open)(dev, flag, mode, p)); +61:(kgdb) up +62:#2 0xf0132c34 in spec_open () +63:(kgdb) up +64:#3 0xf012d014 in vn_open () +65:(kgdb) up +66:#4 0xf012a183 in open () +67:(kgdb) up +68:#5 0xf019d4eb in syscall (frame={tf_es = 39, tf_ds = 39, tf_edi =\ +69: 2158592, tf_esi = 0, tf_ebp = -272638436, tf_isp = -272629788, tf\ +70:_ebx = 7086, tf_edx = 1, tf_ecx = 0, tf_eax = 5, tf_trapno = 582, \ +71:tf_err = 582, tf_eip = 75749, tf_cs = 31, tf_eflags = 582, tf_esp \ +72:= -272638456, tf_ss = 39}) (../../i386/i386/trap.c line 673) +73:673 error = (*callp->sy_call)(p, args, rval); +74:(kgdb) up +75:Initial frame selected; you cannot go up. +76:(kgdb) quit +77:&prompt.root; exit +78:exit +79: +80:Script done on Fri Dec 30 23:18:04 1994 + + 上の出力についてのコメントをします. + + + line 6: + + これは DDB (後述) からのダンプです. このため + “because you said to!” という + panicコメントがつき, ページフォルトのト ラップによって + DDBに入ったことが原因の, やや長いスタックトレー + スがあります. + + + + line 20: + + スタックトレースでのこれは + trap()関数の位置で す. + + + + line 36: + + 新しいスタックフレームの使用を指定しています. これは現 + 在は必要ありません. trapの場合ではスタックフレームは正 + しい場所を指していると考えられます. (私は新しいコアダンプ + を持っていません. 私のカーネルは長い間 panicを起こしていま + せん.) ソースコードの + 403行を見ると,“tp”ポインタのアク + セスが失敗しているか配列のアクセスが範囲外である可能性が高 + いことがわかります. + + + + line 52: + + 怪しいポインタですが, + アクセスは正常におこなえました. + + + + line 56: + + ところが, 明らかにポインタはゴミを指しています. これで + エラーを見つけました! (ここのコードの部分からはよくわかり + ませんが, + tp->t_lineはコンソールデバイスの規定 + する行を参照しているので, + もっと小さな整数でなければなりませ ん. ) + + + + + + + DDD によるクラッシュダンプのデバッグ + + カーネルのクラッシュダンプは ddd + のようなグラフィカルなデバッガで調べることもできます. + 通常はコマンドラインで オプションをつけて + ddd を起動します. たとえば: + + &prompt.root; ddd -k /var/crash/kernel.0 /var/crash/vmcore.0 + + クラッシュダンプを ddd + のグラフィカルなインターフェースを使って + 見ることができます. + + + + 突然ダンプした場合の解析 + + カーネルが予想もしない時にコアダンプして config + -g + を行ってコンパイルされていなかった場合にはどうしたら + よいでしょう. すべてが失われるわけではありません. + パニックを起こさないでください. + + もちろん, クラッシュダンプを使えるようにする必要があります. + 使い方は前述の部分を見てください. + + カーネルのコンパイルディレクトリで, (Makefileの) + COPTFLAGS?=-O とある行を編集します. + オプショ ンをここに加えます + (オプティマイズオプションのレベルは 変更しな + いでください ). + もし大まかにコードのどこで問題が起きているか (例 えば, + 上の例では pcvtドライバ) + わかっているのでしたら, その部 + 分のコードについてのすべてのオブジェクトファイルを + 消してください. カーネ ルを再構築しましょう. + Makefileのタイムスタンプの変更により, 例えば trap.o + などのいくつかの他のオブジェクトファイルも作り直さ + れます. 少しの幸運があれば, + オプションが追加されても作ら + れるコードは変更されず, いくらかのデバッグシンボル以外には + 問題を + 起こしたコードとそっくりな新しいカーネルを手に入れることが + できます. 少なくとも &man.size.1; + コマンドで古い方と新しい方のサイズを比較すべ きです. + これが食い違っていれば, + 多分あきらめなければならないでしょう. + + ダンプを使って前述のように動かして調べます. + デバッグシンボルは 必ずしも十分ではありません. + 上の例ではスタックトレースでいくつかの関 + 数の行番号や引数リストが表示されないかもしれません. + もしより多くのデ バッグシンボルが必要であれば,十分になるまで + 適切なオブジェクトファイ ルを消して (makeして) + kgdbセッションを繰り返してください. + + これは必ずしもうまく動くと保証はできません. + しかしほとんどの場合でう まくいくでしょう. + + + + DDBを使ったオンラインカーネルデバッグ + + kgdb + は非常に高レベルのユーザインタフェースを提 + 供するオフラインデバッガですが, いくつかのことはできません. + (できないことの中で) + 極めて重要なことはカーネルコードへのブレークポイ + ントの設定とシングルステップ実行です. + + カーネルの低レベルデバッグが必要であれば, DDBと呼ばれる + on-lineデバッ ガが使えます. ブレークポイントの設定, + シングルステップのカーネルの実 行, + 変数の検査と変更などができます. + ただし,これはカーネルのソースファ + イルにアクセスすることはできません. + kgdbのようにすべてのデ + バッグ情報にはアクセスできず, globalと + staticのシンボルにアクセス することができるだけです. + + カーネルに DDB + を含めるためにはコンフィグファイルに次のようなオプショ + ンを加えて, + + +options DDB + + 再構築をおこないます. ( + FreeBSDのカーネルの設定の詳細については FreeBSD + カーネルのコンフィグレーションを参照してくださ + い. + + + もしブートブロックが古いバージョンですと, + デバッガのシンボルが完 + 全にはロードされないかもしれませんので注意してください. DDB + シンボル がロードされるようにブートブロックを + 最新の物にアップデートしてくださ い) + + + DDB カーネルの実行において, + DDBに入るいくつかの方法があります. 最初 の, + 最も早い方法はブートプロンプトが出ている時に + のブート フラグをタイプすることです. + カーネルはデバッグモードで起動し, デバ イスのプローブ以前に + DDBに入ります. したがって, デバイスのプローブ/初期 + 設定ファンクションのデバッグができます. + + 2つ目のシナリオはキーボードのホットキーで, 通常は + Ctrl-Alt-ESCです. syscons ではホットキーは再設定することができ, + 配付されているいくつかの キーマッピングでは別のキーに + 再設定されていますので確認しておいてください. シリアルラインの + BREAKを使って シリアルコンソールから DDBへ入ることを可 + 能にするオプションもあります + (カーネルコンフィグレーションファイルの options + BREAK_TO_DEBUGGER). これは 多くのつまらないシリ + アルアダプタが, 例えばケーブルを引き抜いた時に + BREAK状態を意味もなく + 作り出してしまうのでデフォルトでは無効になっています. + + 3つ目は, DDB + を使うようになっているカーネルがパニック状態になると DDB + へ入るというものです. このため, + 無人運転するマシンのカーネルにDDBを + 入れるのは賢明ではありません. + + DDB のコマンドはおおまかには gdb + のいくつかのコマンドと似て + います. おそらく最初にブレークポイントを + 設定する必要があるでしょう. + + b function-name +b address + + 数値はデフォルトでは16進数で, + シンボル名とはまったく異ります. 16進数で a-f + の文字で始まる場合は, 先頭に 0x + をつける必要があります(それ以外の数字の場合はどちらでもか + まいません). function-name + + 0x103のような単純な式を使うこ とができます. + + 割り込みされたカーネルから処理を続行するためには, + + c + + とタイプするだけです. + スタックのトレースには + + trace + + とします. + + + DDB にホットキーで入った場合は, カーネルはその + (ホットキーの) 割り込み + の処理を行っていますのでスタックトレースは + あまり役にたたないことに注 意してください. + + + ブレークポイントを削除したい場合は, + + del +del address-expression + + とします. + 最初の形式はブレークポイントにヒットしたすぐ後で使うことが でき, + 現在のブレークポイントを削除します. 2番目の形式では任意のブレー + クポイントを削除することができますが, + 次の形式で得られるような正確な + アドレスを与えることが必要です. + + show b + + カーネルをシングルステップ実行させるには + + s + + としてみてください. これは関数呼出し先までステップ実行 (step + into function) するでしょう. + 次のステートメントが終了するまでのDDBトレースは + + n + + によっておこなうことができます. + + + これは gdbnext + 命令とは異ります. gdbの + finish命令と似ています. + + + メモリ上のデータを調べるには (例として) 次のようにします. + + x/wx 0xf0133fe0,40 +x/hd db_symtab_space +x/bc termbuf,10 +x/s stringbuf + + word/halfword/byte 単位でアクセスをおこない, hex (16進) + /dec (10進) / + char (文字) /string (文字列) で表示します. + カンマの後ろの数字はオブジェク + トカウントです. 次の 0x10個の要素を表示するには, 単純に + + x ,10 + + とします. 同様に次のように使うことができます. + + x/ia foofunc,10 + + foofunc + の最初の 0x10個の命令語をディスアセンブルし, + foofunc + の先頭からのオフセットとともに表示します. + + メモリの内容を変更するには writeコマンドを使います. + + w/b termbuf 0xa 0xb 0 +w/w 0xf0010030 0 0 + + コマンドモディファイアの + (b/h/w) + はデータを 書くサイズを定義し, + これに続く最初の式は書き込むアドレス, 残りがこれ + に続く連続するメモリアドレスに書き込まれるデータになります. + + + 現在のレジスタ群の内容を知りたい場合は + + show reg + + とします. また, 単一のレジスタの値を表示するには, 例えば + + p $eax + + とします. また値の変更は + + set $eax new-value + + とします. + + DDBからカーネルの関数を呼び出す必要がある場合は, 単に + + call func(arg1, arg2, ...) + + とします. return 値が出力されます. + + 動いているプロセスの &man.ps.1; スタイルの概要は + + ps + + です. + + カーネルの失敗の原因の調査が終わったらリブートすべきです. + それまでの 不具合によりカーネルのすべての部分が期待するような + 動作をしているわけ ではないということを忘れないでください. + 以下のうちいずれかの方法でシ + ステムのシャットダウンおよびリブートを行ってください. + + call diediedie() + + カーネルをコアダンプしてリブートしますので, 後で + kgdbによってコアの高 レベル解析をすることができます. + このコマンドは通常 + continue命令にエイリアスされています. + panicにエイリアスされている + + call boot(0) + + は動いているシステムを `clean' に shut + downするよい方法です. すべて のディスクを + sync()して最後にリブートします. + ディスクとカー + ネルのファイルシステムインタフェースが破損していない限り, + ほぼ完全 に `clean'にシャットダウンするよい方法でしょう. + + + call cpu_reset() + + は大惨事を防ぐための最後の手段で 「赤い大きなボタン」 + を押すのとほとんど 同じです.(訳注: + リセットボタンを押すのとほぼ同じであるという意味です) + + 短いコマンドの要約は + + help + + をタイプします. ただし, デバッグセッションのために + &man.ddb.4; の + マニュアルページのプリントアウトを用意しておくことを + 強くお奨めします. + カーネルのシングルステップ中にオンラインマニュアルを + 読むことは難しい ということを覚えておいてください. + + + + リモート GDB を使ったオンラインカーネルデバッグ + + この機能は FreeBSD 2.2 からサポートされました. + これは本当にすばらし い機能です. + + GDB はすでにかなり以前より + リモートデバッグ をサポートしてい ます. + これはシリアル回線を使い非常に単純なプロトコルで行ないます. + もちろん, この方法では今までに示した方法とは違い, + 2台のマシンが必 要になります. 1台はデバッグ環境のためのホストで, + すべてのソースとす + べてのシンボルを含んだバイナリのコピーを持っています. もう 1台は + ターゲットマシンで, 同一のカーネルのコピー (ただしデバッグ情報は + 取り除いてあるもの) を単に実行するためのものです. + + この場合, カーネルのコンフィグレーションは config + -g で行な い, + を含めなくてはなりません. そうして通常通りコンパイルし ます. + こうして作ったバイナリファイルはデバッグ情報のために非常に大き + くなります. このカーネルをターゲットマシンにコピーして + strip -x でデバッグシンボルを取り除きます. + そして ブートオプションを使いブートします. + ターゲットマシンの 1番目の シリアル回線をデバッグホストの + いずれかのシリアル回線につないでおきま しょう. + それからデバッグ(訳注:ホスト)マシン上で, ターゲットとなって + いるカーネルのコンパイルディレクトリで gdb を起動します: + + &prompt.user; gdb -k kernel +GDB is free software and you are welcome to distribute copies of it + under certain conditions; type "show copying" to see the conditions. +There is absolutely no warranty for GDB; type "show warranty" for details. +GDB 4.16 (i386-unknown-freebsd), +Copyright 1996 Free Software Foundation, Inc... +(kgdb) + + リモートデバッグセッションの初期化 + (1番目のシリアルポートを使用する ことの設定) + を以下のように行ないます. + + (kgdb) target remote /dev/cuaa0 + + 次にターゲットマシン (デバイスのプローブ直前で DDB + に入っています) で次のように入力します: + + Debugger("Boot flags requested debugger") +Stopped at Debugger+0x35: movb $0, edata+0x51bc +db> gdb + + DDB は次のような出力を返すでしょう. + + Next trap will enter GDB remote protocol mode + + gdbと入力するたびに リモート GDB + とローカル DDB が交互に切り替わ ります. + トラップをすぐに起こすために単に ``s'' (step) と入力して下 さい. + そうするとホストの GDB はターゲットのカーネルの制御を行なうよ + うになります. + + Remote debugging using /dev/cuaa0 +Debugger (msg=0xf01b0383 "Boot flags requested debugger") + at ../../i386/i386/db_interface.c:257 +(kgdb) + + このセッションではソースコードへのフルアクセスや Emacs の + window 上 の gud-mode (これは別の Emacs window + に自動的にソースコードを表示し ます) で動かすなど, 通常の GDB + セッションでできることのほとんどのこ とができます. + + リモート GDB は LKM のデバッグも行なうことができます. + 最初に LKM を デバッグシンボルを含めた形で作ります. + + &prompt.root; cd /usr/src/lkm/linux +&prompt.root; make clean; make COPTS=-g + + そしてターゲットマシン上で + モジュールのこのバージョンをインストールし ます. + これをロードしてから, modstat + を使ってロードされている ことを確認してください: + + &prompt.root; linux +&prompt.root; modstat +Type Id Off Loadaddr Size Info Rev Module Name +EXEC 0 4 f5109000 001c f510f010 1 linux_mod + + 示されたロードアドレスに 0x20 + (a.outのヘッダはおそらくこの大きさでしょ う) を加えます. + それがモジュールコードの再配置されるアドレスです. GDB の + add-symbol-file + コマンドを使ってデバッガにモジュールの 情報をつたえます. + + + (kgdb) add-symbol-file /usr/src/lkm/linux/linux_mod.o 0xf5109020 +add symbol table from file "/usr/src/lkm/linux/linux_mod.o" at +text_addr = 0xf5109020? +(y or n) y +(kgdb) + + これで LKM + のすべてのシンボルにアクセスできるようになります. + + + + コンソールドライバのデバッグ + + DDBを動かすためにはコンソールドライバが必要ですから, + コンソールドラ イバ自身に不具合のある場合は複雑になります. + シリアルコンソールを利 用する方法 (ブートブロックを変更するか + Boot:プロンプトで + と入力する) を思い出してください. + そして標準ター ミナルを最初のシリアルポートに設定します. DDBは, + もちろんシリアルコ ンソールを含むいずれの + コンソールドライバの設定でも動作します. + + + + diff --git a/ja/handbook/kernelopts/chapter.sgml b/ja/handbook/kernelopts/chapter.sgml new file mode 100644 index 0000000000..6dc0f9cfdd --- /dev/null +++ b/ja/handbook/kernelopts/chapter.sgml @@ -0,0 +1,213 @@ + + + + カーネルコンフィグレーションの + 新しいオプションを追加する + + 原作: &a.joerg; + + 訳: &a.jp.yoshiaki;. + 29 December 1996. + + + この章をお読みになる前に FreeBSD + カーネルのコンフィグレーション の章の内容を + 理解しておいてください. + + + + そもそも<emphasis>カーネル + オプション</emphasis>って何? + + カーネルオプションの使い方は基本的には + FreeBSD + カーネルのコンフィグレーション + の章に書いてあります. + そこには “伝統的な形式” と “新しい形式” + のオプションの説明があります. + すべてのカーネルのオプションを新しい形式のものに置き換え, + コンフィグファイル + を修正して &man.config.8; を実行した後に + カーネルのコンパイルディレクトリで + make depend を実行すれば, + ビルドプロセスが自動的に変更された + オプションを検出し, 必要なファイルだけを + 再コンパイルするようにすることが + 最終的な目的です. &man.config.8; + を実行するたびに古いコンパイルディレクトリ + を消してしまう現在のやりかたは, + やがておこなわれなくなるでしょう. + + 基本的に, カーネルオプションはカーネルのコンパイルプロセスの + C プリプロセッサのマクロの定義にすぎません. 実際に選択的に make + できる ようにするためには, 対応する部分のカーネルソース + (またはカーネルの .h ファイル) + がオプションを使えるようにあらかじめ書かれていなければ + なりません. + つまりデフォルト値をコンフィグファイルのオプションで置き換え + られるようになっていなければなりません. + これは普通は次のようになっています. + + +#ifndef THIS_OPTION +#define THIS_OPTION (some_default_value) +#endif /* THIS_OPTION */ + + この場合, + 管理者がコンフィグファイルのオプションに別の値を記述すれば, + デフォルトの設定を打ち消して新しい値に置き換えられます. 当然, + 新しい値はプリプロセッサによってソースコード中で + 置き換えられるため, デフォルトの値が使われていた場所において C + の式として有効な値でなければ なりません. + + また, 単に特定のコードを有効にするか + 無効にするかを設定するための + 値を持たないオプションも作ることができます. + + +#ifdef THAT_OPTION + +[あなたのコードが入ります] + +#endif + + コンフィグファイルに THAT_OPTION + と記述するだけで (値の有無 にかかわらず) + 対応する部分のコードが組み込まれます. + + C 言語にくわしい人であれば + “コンフィグオプション” とされているもの + は少なくとも一つの #ifdef + で参照されているということはすぐに理解 できるでしょう. ところで, + ごく一部の人たちは次のようなものを試して + みようとするかもしれません. + + +options notyet,notdef + + このようにコンフィグファイルをしておくと, + カーネルのコンパイルは うまく行きません. :-) + + (訳注: たとえば MATH_EMULATE のように + 有効/無効のためのパラメタを 持たないオプションの場合, + 無効とするためのパラメタをつけて, オプション + で「無効とする」と明示することはできないという意味です) + + 明らかに, + 任意のオプション名がカーネルソースツリー全体でどのように + 使われているかを追いかけることは非常に難しいことです. このことが + 新しい形式 + のオプションの機構を採り入れる理由の背景です. + ここではそれぞれのオプションは + カーネルコンパイルディレクトリにある別々の + .h ファイルとなり, + opt_foo.h + という名前に されます. この方法では, 通常の Makefile + の依存関係が適用され, make + プログラムはオプションが変更された時に再コンパイルが必要な + ものを見つけることができます. + + 古い形式のオプションの機構は, + 局部的なオプションや実験的なオプション + のような一時的に利用されると考えられるオプションにおいては + 有効です. つまり #ifdef + をカーネルのソースに追加するのは簡単であり, + それがそのままカーネルコンフィグオプションになります. この場合, + 管理者はオプションの利用において + 依存関係を把握しておく責任があります (また, + 手動でカーネルの一部分を + 強制的に再コンパイルする必要があるかもしれません). + サポートされている + オプションのすべてについて一つでも変更があると, &man.config.8; + は サポートされていないオプションがコンフィグファイルの中に + あるという警告 を出しますが, カーネルの Makefile + 内にはそれを含めます. + + + + ではどのようにして追加するのでしょう? + + 最初に sys/conf/options (または + sys/i386/conf/options.<arch>, たとえば sys/i386/conf/options.i386) + を編集し, 新しいオプション を含めるのに最適な + opt_foo.h + ファイルを選びます. + + 新しいオプションの必要がなくなったとしたら, + これを取り除きます. たとえば, SCSI + サブシステムに関するすべてのふるまいについてのオプション + の変更は opt_scsi.h に入れられます. + デフォルトでは, 適切 なオプションファイルに単に記述されます. + たとえば FOO であれば 値は対応するファイルの + opt_foo.h に格納されます. これは右端に別 + のファイル名を書いて置き換えることができます. + + 新しいオプションを加えるのに使えそうな + opt_foo.h + がない場合は新しい名前を作ってください. 意味のある名前を作り + options[.<arch>] + ファイル に新しいセクションのコメントをつけてください. + &man.config.8; は自動的 + に変更を検出して, 次の実行からは (訳注: 新しい + .h) ファイル を作ります. + ほとんどのオプションはヘッダファイルに入れられます. + + 大量のオプションを一つの + opt_foo.h + にまとめると + コンフィグファイルの一つのオプションを変更したときに + 多くのファイルが 再コンパイルされる原因になります. + + 新しいオプションに依存するカーネルファイルは + 最終的には見つけ出 されます. ただし, + オプションを作っただけで対応するソースがどこにも + ない場合は別です. + + &prompt.user; find /usr/src/sys -name type f | xargs fgrep NEW_OPTION + + オプションに対応するソースを見つけるのに上記のコマンドは + 便利です. 見つけたすべてのファイルで編集, 追加をおこないます. + + #include "opt_foo.h" + + ファイルの先頭の, すべての + #include <xxx.h> より前に入れます. + この場合, オプションによって次のようにしてデフォルト値 + を持たせている標準のヘッダファイル内の値を置き換えるため, + 順番は非常に 重要です. + + #ifndef NEW_OPTION +#define NEW_OPTION (something) +#endif + + システムヘッダファイル (たとえば + /usr/include/sys/ にある ファイル) + をオプションで置き換えることは, ほとんどの場合で失敗します. + そうすると, ヘッダファイルを深刻な状態に破壊してしまうので, + include しないとオプションの値によって + 不整合が起きてしまう場合を除き, それらの ファイルに + opt_foo.h + を include しないでください. + そう, 現在このような例がいくつか存在していますが, + 必ずしも正しい方法 ではありません. + + + + diff --git a/ja/handbook/l10n/chapter.sgml b/ja/handbook/l10n/chapter.sgml new file mode 100644 index 0000000000..857d7e2069 --- /dev/null +++ b/ja/handbook/l10n/chapter.sgml @@ -0,0 +1,375 @@ + + + + ローカル化 + + + ロシア語 (KOI8-R encoding) + + Contributed by &a.ache; + 1 May 1997. + + 訳: &a.motoyuki;. + 18 June 1997. + + KOI8-R encoding についてのさらに詳しいことは, KOI8-R + References (Russian Net Character Set) + をご覧ください. + + + コンソールのセットアップ + + + + マウスカーソルのために用いられている文字コードを + KOI8-R 擬似グラフィックの範囲外に動かすために, + カーネルのコンフィグレーションファイルに + 以下の行を付け加えます. + + +options "SC_MOUSE_CHAR=0x03" + + + + /etc/rc.conf + でのロシア語コンソールの + エントリーは以下のようになります. + + +keymap=ru.koi8-r +keychange="61 ^[[K" +scrnmap=koi8-r2cp866 +font8x16=cp866b-8x16 +font8x14=cp866-8x14 +font8x8=cp866-8x8 + + + ^[ は + /etc/rc.conf, + に ^[ の文字列ではなく本当の + ESC キャラクターを入れることを意味します. + + + これは, KOI8-R キーボードで, KOI8-R encoding + の代替スクリーンフォントを 疑似グラフィックに割り当て, + 灰色のデリート キーを + &man.termcap.5; の FreeBSD + コンソールのロシア語エントリーに一致するように再配置する, + ということです. + + RUS/LAT スイッチは CapsLock + に割り当てられます. 元の CapsLock の機能は + Shift+CapsLock で使えます. CapsLock の + LED は CapsLock のモードではなく RUS + モードを示します. + + + + /etc/ttys の中の + ttyv? の各エントリの + ターミナルのタイプを cons25 から + cons25r に変更します, + つまり各エントリは以下のようになります + + +ttyv0 "/usr/libexec/getty Pc" cons25r on secure + + + + + + Locale のセットアップ + + Locale + のセットアップには二つの環境変数を使います: + + + + LANG + は POSIX &man.setlocale.3; ファミリの関数に; + + + + MM_CHARSET はアプリケーションの MIME + キャラクタセットに使われます. + + + + 一番良い方法は &man.passwd.5; エントリの login class + の場所で + /etc/login.conf の + russian ユーザの login class + を使うことです. + 詳しくは &man.login.conf.5; を参照してください. + + + Login Class の設定方法 + + まず最初に /etc/login.conf に + russian login class がある + ことを確認してください, + このエントリは以下のようになります: + + +russian:Russian Users Accounts:\ + :charset=KOI8-R:\ + :lang=ru_RU.KOI8-R:\ + :tc=default: + + + &man.vipw.8; ではどうするのか + + 新しいユーザを追加するのに &man.vipw.8; + を使うのであれば, + /etc/master.passwd + のエントリは以下のようになります: + + +user:password:1111:11:russian:0:0:User Name:/home/user:/bin/csh + + + + &man.adduser.8; ではどうするのか + + &man.adduser.8; を使って新しいユーザを追加するには: + + + + +defaultclass = russian + + /etc/adduser.conf + にセットする. (この場合, 全ての非ロシア語ユーザに + default class を入力しなけ + ればなりません); + + + + もう一つの方法は &man.adduser.8; の + + Enter login class: default []: + + という表示に russian + と答えるものです; + + + + また, ロシア語ユーザを追加する際に: + + &prompt.root; adduser -class russian + + とする方法もあります. + + + + + + &man.pw.8; ではどうするのか + + &man.pw.8; を使って新しいユーザを追加するには, + 次のようにします: + + &prompt.root; pw useradd user_name -L russian + + + + + シェルのスタートアップファイルでの設定方法 + + 何らかの理由で + login class の設定方法 + を使いたくない場合は, この + 二つの環境変数 + をシェルのスタートアップファイルに設定します: + + + + /etc/profile: + + +LANG=ru_RU.KOI8-R; export LANG +MM_CHARSET=KOI8-R; export MM_CHARSET + + + + /etc/csh.login: + + +setenv LANG ru_RU.KOI8-R +setenv MM_CHARSET KOI8-R + + + + もう一つの方法は, これらを以下のファイルに + 設定することです. + + + + /usr/share/skel/dot.profile: + + (上の /etc/profile と同様にします); + + + + + /usr/share/skel/dot.login: + + (上の /etc/csh.login と同様にします). + + + + + + + + プリンターのセットアップ + + ロシア語の文字を内蔵したプリンターのほとんどは 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: + + /etc/printcap ファイルの詳細については + &man.printcap.5; + を参照して下さい. + + + + MSDOS ファイルシステムとロシア語のファイル名 + + MSDOS ファイルシステムにおいてロシア語のファイル名を + サポートするには, 次の + &man.fstab.5; エントリーの例を参考にしてください. + + +/dev/sd0s1 /dos/c msdos rw,-W=koi2dos,-L=ru_RU.KOI8-R 0 0 + + + というオプションに関する詳細は + &man.mount.msdos.8; をご覧ください. + + + + X Window System のセットアップ + + 以下の順序で設定します: + + + + まず最初に X 以外の + locale のセットアップ の通りに行います. + + + ロシア語の KOI8-R locale + は XFree86 の古いリリース (3.3 より前) + では動かないかもしれません. + /usr/ports/x11/XFree86 の XFree86 + の port には XFree86 の最近のほとんどの + バージョンが入っています. したがってこの port から + XFree86 をインストール したのならきちんと動くでしょう. + 最新の FreeBSD ディストリビューションに付属する XFree86 + のバージョンも動くはず です (XFree86 のバージョンが 3.3 + より前でないことを確認して下さい). + + + + + /usr/ports/russian/X.language + ディレクトリに行き, ここで + + &prompt.root; make all install + + とします. このポートは最新バージョンの KOI8-R + フォントをインストールします. + XFree86 3.3 には既にいくつかの KOI8-R + フォントが含まれていますが, こちらの + フォントのほうがより釣り合いがとれています. + + /etc/XF86Config の + "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 の行を入れ替えます. + + + + ロシア語キーボードを有効にするには + + +XkbKeymap "xfree86(ru)" + + を /etc/XF86Config の + "Keyboard" セクションに追加します, + また XkbDisable が無効に + (コメントアウト) されていることをここで + 確認します. + + RUS/LAT スイッチは + CapsLockに割り当てられます. 元の + CapsLock の機能は Shift+CapsLock + で使えます (LAT モード内でのみ). + + + ロシア語 XKB キーボードは XFree86 + の古いバージョンでは動かないかもしれません, 詳しくは + locale note + を参照してください. ロシア語 XKB + キーボードはローカル化されていないアプリケーション + でも動かない かもしれません, + 最低限のローカル化されたアプリケーションでは + そのプログラムの 初期に XtSetLanguageProc(NULL, + NULL, NULL); 関数を呼ばなければ + なりません. + + + + + + + + ドイツ語(ISO 8859-1) + + Slaven Rezic + eserte@cs.tu-berlin.de + が FreeBSD上でウムラウトを使う方法についての + チュートリアルを書きました. + チュートリアルはドイツ語で書かれていて, + + http://www.de.freebsd.org/de/umlaute/ + でご覧になれます. + + + + diff --git a/ja/handbook/linuxemu/chapter.sgml b/ja/handbook/linuxemu/chapter.sgml new file mode 100644 index 0000000000..5ea6f7bd17 --- /dev/null +++ b/ja/handbook/linuxemu/chapter.sgml @@ -0,0 +1,923 @@ + + + + Linux エミュレーション + + 原作: &a.handy; and &a.rich; + + 訳: &a.jp.kiroh;. + 24 September 1996. + + + Linux エミュレータのインストール + + FreeBSD での Linux エミュレーションは, 大部分の Linux + バイナリ(a.out および ELF + フォーマット)を実行できる状態になっています. 2.1-STABLE ブラン + チでのエミュレーションでは, Linux DOOM や Mathematica + が実行できます. &rel.current;-RELEASE でのエミュレーションは, + さらに強化されており, Linux 用 の Quake, Abuse, IDL, netrek + など, 多数のソフトウェアが実行できます. + + Linux + オペレーティングシステムには, 特有の機能がいくつかあり, FreeBSD + でサポートされていないものもあります. Linux の + /proc ファイルシステム を使ったバイナリは, + FreeBSD では実行できません (FreeBSD で使用可能な + /proc + ファイルシステムとは仕様が異なっているためです). + また仮想8086モー ドを有効にするなど, i386 + に特有なシステムコールを使っている場合も実行 できません. + + Linux エミュレーションの設定方法は, 使用している FreeBSD + のバージョン によって多少異なっています. + + + 2.1-STABLE への Linux エミュレーションのインストール + + 2.1-STABLE の GENERIC カーネルは, + Linux との互換性を保つように構築 されていません. + カーネルの再構築が必要です. 再構築をおこなうには, 2つの方 + 法があります. 1つは, + エミュレータをカーネル自体にスタティックリンクす る方法. + もう1つは, 動的に Linux + ローダブルカーネルモジュール(LKM)をロー + ドするようにする方法です. + + エミュレータを有効にするには, + 以下をコンフィグレーションファイル + (/sys/i386/conf/LINT など) + に追加します. + + +options COMPAT_LINUX + + Linux DOOM などのアプリケーションを実行したい場合は, + 共有メモリも有効 にしておかなければなりません. + 以下を追加します. + + +options SYSVSHM + + Linux のシステムコールを使用するには, 4.3BSD + のシステムコールとの互換 性が保たれていることが必要です. + 以下の行が含まれていることを確認してく ださい. + + +options "COMPAT_43" + + LKM + を使用せずエミュレータをカーネルにスタティックにリンクしたい場合は, 以下の行を追加します. + + +options LINUX + + FreeBSD + カーネルのコンフィグレーション の節の記述に + したがって config と, + 新しいカーネルのインストールをおこなってください. + + LKM を使用する場合は, + ローダブルモジュールをインストールしなければなり ません. + カーネルとローダブルモジュールのバージョンが異なると, カーネル + がクラッシュする場合がありますので, 安全を期すためには, + カーネルをイン ストールするごとに, LKM + も再インストールしてください. + + &prompt.root; cd /usr/src/lkm/linux +&prompt.root; make all install + + カーネルと LKM のインストールが終了したら, root で `linux' + コマンドを 実行することで LKM をロードできます. + + &prompt.root; linux +Linux emulator installed +Module loaded as ID 0 +&prompt.root; + + LKM がロードされたかどうかを確認するには, + modstat を実行します. + + &prompt.user; modstat +Type Id Off Loadaddr Size Info Rev Module Name +EXEC 0 3 f0baf000 0018 f0bb4000 1 linux_emulator + + システムブート時に, LKM をロードするようにするには, + 2つの方法がありま + す. FreeBSD 2.2.1-RELEASE または 2.1-STABLE では, + /etc/sysconfig を, + + +linux=YES + + のように, NO を YES に変更してください. + FreeBSD 2.1-RELEASE およびそれ以 + 前のバージョンでは, そのような行はありませんので, + /etc/rc.local に以下 + の行を追加する必要があります. + + +linux + + + + 2.2-RELEASE への Linux エミュレーションのインストール + + options LINUXoptions + COMPAT_LINUX を指定する必要 はなくなりました. + Linux エミュレーションは + LKM(“ローダブルカーネルモジュール”) を使用して, + リブートせず簡単にインストールできます. スタートアッ + プファイルで以下のように指定します. + + + + /etc/rc.conf + に以下の行が必要です. + + +linux_enable=YES + + + + これは結果的に, /etc/rc.i386 + の以下の指定を有効にします. + + +# Start the Linux binary emulation if requested. +if [ "X${linux_enable}" = X"YES" ]; then echo -n ' + linux'; linux > /dev/null 2>&1 +fi + + + + 実行されたかどうかを確認するには, modstat + を使用します. + + + &prompt.user; modstat +Type Id Off Loadaddr Size Info Rev Module Name +EXEC 0 4 f09e6000 001c f09ec010 1 linux_mod + + 2.2-RELEASE とそれ以降のシステムの中には, + modstat の実行がうまくいかない + ものがあるという報告もあります. + 何らかの理由で, Linux LKM がロードできな + い場合は, + + +options LINUX + + をカーネルの設定ファイルに指定して, + エミュレータをスタティックにリンク + してください. + + FreeBSDカーネルのコンフィグレーション + の節の記述にしたがって config と, + 新しいカーネルのインストールをおこ + なってください. + + + + Linux ランタイムライブラリのインストール + + + linux_lib port を使用してのインストール + + 多くの Linux + アプリケーションはシェアードライブラリを使用しますので, + シェアードライブラリのインストールが終了しなければ, + エミュレータのイン ストールは終わったことになりません. + 手動でもインストールできますが, linux_lib port + を使用するのが簡単です. + + &prompt.root; cd /usr/ports/emulators/linux_lib +&prompt.root; make all install + + これで, Linux + エミュレータが動作するようになったはずです. 伝説(とメー + ルのアーカイブ :-) によれば, Linux + エミュレーションは, ZMAGIC ライブラ リとリンクされている + Linux バイナリに対して, 最もうまく動作するようで す. + Slackware V2.0 などに使われている QMAGIC ライブラリだと, + エミュレー タが胸やけするかもしれません. + マイナーバージョンの不一致などを + 報告するプログラムもありますが, + 普通は 問題にならないようです. + + + + 手動でのライブラリのインストール + + “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 + 以下にインストールする 必要があります. + + + FreeBSD 2.2-RELEASE 以降では, + /compat/linux + にかかわる動作が多少異なっており, + ライブラリだけでなくすべてのファイルが, “shadow + root” /compat/linux + から検索されるようになっています. + + Linux のプログラムが必要とする + シェアードライブラリを探す必要があるのは, FreeBSD + のシステムに Linux + のプログラムをインストールする最初の数回だ けでしょう. + それが過ぎれば, 十分な Linux のシェアードライブラリがシス + テムにインストールされ, 新しくインストールした Linux + のバイナリも, 余 + 計な作業をせずに動作させることができるようになります. + + + + シェアードライブラリの追加 + + linux_port をインストールした後に, + アプリケーションが必要なライブラリ + が存在しないというエラーを出したらどうしたらよいでしょうか? + Linux のバ イナリがどのシェアードライブラリを必要とし, + そしてどこで入手できるか, どのように探したらよいでしょうか? + 基本的には, 以下の2種類の方法があり + ます(以下の手順にしたがう場合には, + 必要なインストール作業をおこなう FreeBSD シ ステム上で root + として作業をおこなう必要があります). + + Linux システムを使用でき, + 必要なシェアードライブラリが調べられる場 合には, 単に + FreeBSD のシステムにそのライブラリをコピーするだけで す. + 例えば, DOOM の Linux バイナリを ftp で持ってきたとします. + 使用で きる Linux システムの上に転送して, ldd + linuxxdoom とやれば, 必要とす + るシェアードライブラリがチェックできます. + + &prompt.user; 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 + + + 最初のカラムに表示されているファイルと, + メジャーバージョンの同じ 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 + + + + シンボリックリンクのメカニズムは, Linux + バイナリにのみ必要 + なことに注意してください. FreeBSD のランタイムリンカは, + メジャーリビジョ + ン番号の一致したライブラリを検索しますから, + ユーザが気にする必要はあり ません. + + + + + <filename>ld.so</filename> の設定 — FreeBSD + 2.2-RELEASE およびそれ以降 + + このセクションは, FreeBSD 2.2-CURRENT + 以降にのみ当てはまります. 2.1-STABLE を使用している方は, + 飛ばしてください. + + 最後に, FreeBSD 2.2-RELEASE を使われている場合は, Linux + のランタイムリンカと + その設定ファイルがシステムに導入されていることを + 確認してください. これらのファイルは, FreeBSD + システムの適切な位置(/compat/linux + ツリー以 下)にコピーされている必要があります. + + /compat/linux/lib/ld.so +/compat/linux/etc/ld.so.config + + 使用できる Linux システムがない場合は, + 必要なファイルは近くの FTP サイ トから入手してください. + 各種ファイルの入手先についての情報を, 後に付 けておきます. + ここでは, 必要なファイルの入手先がわかっているものとしま + す. + + 以下のファイルを取得します + (バージョンの不一致を避けるために, すべて同一 の FTP + サイトから入手してください). 取得したファイルを + /compat/linux + 以下にインストールしてください(例えば, + /foo/bar は, + /compat/linux/foo/bar + にインストールされます). + + /sbin/ldconfig +/usr/bin/ldd +/lib/libc.so.x.y.z +/lib/ld.so + + ldconfigldd + は, /compat/linux + の下にある必要はありません. システム + のどこにあっても構いません. ただ, FreeBSD + の同名のコマンドと間違えないように 注意してください. + /usr/local/bin の中に, + ldconfig-linux, + ldd-linux とし + てインストールするのもよいアイディアでしょう. + + /compat/linux/etc/ld.so.conf + ファイルを作成し, Linux ラインタイムリンカ + がシェアードライブラリを検索する + ディレクトリを記述してください. このファ + イルはプレインテキストファイルで, + それぞれの行にディレクトリ名を含みま す. + /lib/usr/lib + は標準ですから, 以下のようなディレクトリが追加できま + す. + + +/usr/X11/lib +/usr/local/lib + + Linux バイナリが, /lib/libc.so + というライブラリを開いた場合, エミュレー タは内部で, + ファイル名を /compat/linux/lib/libc.so + にマップします. エ ミュレータがライブラリを検索するために, + すべての Linux のライブラリ + (/compat/linux/lib/libc.so, + /compat/linux/usr/X11/lib/libX11.so + など) は, /compat/linux + 以下にインストールされていなければなりません. + + FreeBSD 2.2-RELEASE を使用している場合は, Linux の + ldconfig プログラム を実行する必要があります. + + &prompt.root; cd /compat/linux/lib +&prompt.root; /compat/linux/sbin/ldconfig + + ldconfig + はスタティックリンクされていますから, + 実行するのにシェアードラ イブラリを必要としません. ldconfig + は, /compat/linux/etc/ld.so.cache + ファイルを作成し, + すべてのシェアードライブラリの名前を格納します. ライ + ブラリの追加をおこなった場合には, ldconfig を再実行して, + このファイルを作り 直さなければなりません. + + 2.1-STABLE では, + /compat/linux/etc/ld.so.cache + をインストールしたり, ldconfig + を実行したりしないでください. 2.1-STABLE では, システムコー + ルの実装方法が異なるため, ldconfig + は使用されません. + + これで, libc シェアードライブラリを必要とする Linux + バイナリを実行する設 定が終了しました. + lddldd + 自身に実行してテストしてください. + ldd-linux + としてインストールしている場合は, 以下のような結果になるはず + です. + + &prompt.root; ldd-linux `which ldd-linux` +libc.so.4 (DLL Jump 4.5pl26) => /lib/libc.so.4.6.29 + + ここまで終了すれば, 新しい Linux のバイナリを + インストールできます. + 新しい Linux バイナリをインストールするときは, + それがシェアードライブ + ラリを必要とするかどうか確認してください. 必要とする場合は, + /compat/linux 以下に + インストールされているかどうか確認してください. こ + れは, Linux の ldd を新しいプログラムに + 対して実行し, 出力を確認するこ + とによりおこなえます. + ldd + (&man.ldd.1; マニュアルページも参照してください)は, プ + ログラムが必要とするシェアードライブラリのリストを, + majorname + (jumpversion) => + fullname + という形式で出力します. + + fullname のかわりに + not found と出力される場合は, + ライブラリの追加をす る必要があります. + 必要なライブラリの名前は, majorname に libXXXX + .so.N.mm + という形式で示されています. Linux の FTP サイトで + libXXXX.so.N.mm + を探し, インストールしてください. + XXXX(名前)とN + (メジャー リビジョン番号)は一致している必要があります. + マイナー番号 mm は, それほ + ど重要ではありませんが, + なるべく最新のものをインストールするようにして + ください. + + + + + Linux の ELF バイナリをインストールする + + ELF のバイナリを使うためには, + “焼き印を押す(branding)” 作業が必要になります. + 焼き印を押していない ELF バイナリを実行しようとすると, + 以下のようなエラーメッセージを + うけとってしまうことでしょう. + + &prompt.user; ./my-linux-elf-binary +ELF binary type not known +Abort + + カーネルが FreeBSD の ELF バイナリと Linux のバイナリとを + 見分けられるようにするためには, &man.brandelf.1; + を以下のようにして使ってください: + + &prompt.user; brandelf -t Linux my-linux-elf-binary + + 今ではGNU のツールたちが, + ELFバイナリに自動的に適切な焼き印を押すようになったので, + 今後はこの作業もだんだんと必要なくなってゆくでしょう. + + + + ホストネームリゾルバの設定 + + 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 を削除してください. + + 最後になりますが, 2.1-STABLE を使用している場合は, + RESOLV_HOST_CONF 環境変数を指定して, + アプリケーションにホストテーブル + の検索方法を指定する必要があります. FreeBSD 2.2-RELEASE + かそれ以降を使用している場合 は, スキップしてください. + /bin/csh を使っている場合は, + 以下のようにし ます. + + &prompt.user; setenv RESOLV_HOST_CONF /compat/linux/etc/host.conf + + /bin/shの場合は, + 以下のようにします. + + &prompt.user; RESOLV_HOST_CONF=/compat/linux/etc/host.conf; export RESOLV_HOST_CONF + + + + 必要なファイルを探すには + + + 以下の情報は, この文書が書かれた時点では有効ですが, FTP + サイトの 名前, ディレクトリ, 配布ファイル名などは, + 変更されている可能性がありま す. + + + + 訳注: ここに取り上げられている FTP サイトは, + 日本国内にもミラーサイト が多数存在します. なるべく近くの + FTP サイトからファイルを入手してくだ さい. + + + Linux は, いくつかのグループが, + それぞれ独自のバイナリ配布セットを作成 して配布しています. + 配布セットは, “Slackware” や + “Yggdrasil” など の名前がつけられています. + これらの配布セットは, 多くの FTP サイトから 入手できます. + ファイルが展開されており, 必要なファイルのみを取得できる + 場合もありますが, + 通常は圧縮された配布セットの形で入手できます. 配布 セットは, + いくつかのサブディレクトリに, gzip で圧縮された tar ファイル + として格納されています. それぞれの配布セットの一次配布先は, + 以下の通り です. + + + + sunsite.unc.edu:/pub/Linux/distributions + + + + tsx-11.mit.edu:/pub/linux/distributions + + + + ヨーロッパのミラーサイトの例: + + + + ftp.luth.se:/pub/linux/distributions + + + + ftp.demon.co.uk:/pub/unix/linux + + + + src.doc.ic.ac.uk:/packages/linux/distributions + + + + 混乱を避けるために, ここでは Slackware だけを取り上げます. + この配布セッ トは, 多くのサブディレクトリ内にある + 別々のパッケージから構成されていま す. 通常, + パッケージはインストールプログラムにより自動的に制御されま + すが, “手動で”おこなうことも可能です. + まず配布セットの中の, contents + サブディレクトリの内容を書くにしてください. ここには多く + の小さなテキストファイルが含まれおり, + それぞれのパッケージの内容が記述 されています. + 必要なファイルを探している場合は, まず contents 内のテキ + ストファイルを取得し, そのファイルの中から grep + を使用して検索するのが, 最も速い方法でしょう. + 以下に必要となるであろうファイルを, grep を使用 + して検索した例を示します. + + + + + + Library + Package + + + + + ld.soldso + ldconfigldso + lddldso + libc.so.4shlibs + libX11.so.6.0xf_lib + libXt.so.6.0xf_lib + libX11.so.3oldlibs + libXt.so.3oldlibs + + + + + この場合は, ldso, shlibs, xf_lib, oldlibs + というパッケージが必要なこと がわかります. + それぞれのcontentsファイルの中で, PACKAGE + LOCATION と書いてある行を探してください. + その行に, パッケージが含まれている“ディ スク”, + 今回の場合はサブディレクトリ名が書かれています. たとえば, + 以下の ようになります. + + + + + Package + Location + + + + + ldso diska2 + shlibs diska2 + oldlibs diskx6 + xf_lib diskx9 + + + + + “diskXX” + というのは, 配布セットの + slackware/XX + サブディレクトリ を示します. それ以外の場合は, + contrib サブディレクトリに格納されて + います. 今回の場合は, + 以下のファイルを取得すればいいことがわかります (ファイル名は, + 配布セットのルートディレクトリからの相対パスで示してあ + ります). + + + + slakware/a2/ldso.tgz + + + + slakware/a2/shlibs.tgz + + + + slakware/x6/oldlibs/tgz + + + + slakware/x9/xf_lib.tgz + + + + gzip で圧縮された tar ファイルから必要なファイルを + /compat/linux ディ + レクトリに格納してください(必要なファイルのみを展開するか, + あるいは必 要でないファイルを後で削除してください). + これで作業は終了です. + + 参照: + + ftp.freebsd.org:pub/FreeBSD/2.0.5-RELEASE/xperimnt/linux-emu/README + + /usr/src/sys/i386/ibcs2/README.iBCS2 + + + + + FreeBSD への Mathematica のインストール + + 原作: &a.rich; and &a.chuck; + + 訳: &a.jp.kiroh;. + + この文書は, Mathematica 2.2 の Linux + バイナリディストリビューションを, FreeBSD 2.1 + にインストールする方法について説明します. + + Mathematica は, そのままでは FreeBSD + をサポートしていませんが, Linux は サポートしています. ですから, + Linux エミュレータの設定が終わってしまえ ば, Mathematica + を動作させる環境はほとんど整ったことになります. + + DOS 用のスチューデント版 Mathematica から Linux + バージョンへのアップグレー ド価格は, 執筆時点 (1996年5月) では, + $45.00 です. 直接 Wolfram(電話番号(217) 398-6500)に注文して, + 支払いはクレジットカー ドでおこなえます. + + + Mathematica ディストリビューションの展開 + + バイナリは, Wolfram から CDROM で配布されています. CDROM + には, 1ダー スほどの tar ファイルが含まれており, + それぞれサポートされているアーキテ クチャに対応しています. + Linux 用のファイルは, LINUX.TAR です. + 例えば /usr/local/Mathematica + 以下にインストールする場合は, 以下のようにしま す. + + &prompt.root; cd /usr/local +&prompt.root; mkdir Mathematica +&prompt.root; cd Mathematica +&prompt.root; tar -xvf /cdrom/LINUX.TAR + + + + Mathematica パスワードの取得 + + Mathematica を実行する前に, 使用するマシンに対応した + “machine ID” を Wolfram + から取得する必要があります. + + Linux 互換ランタイムライブラリがインストールされており, + mathematica の展 開が終了したら, Install ディレクトリで + mathinfo プログラムを使用す ることで + “machine ID” を得ることができます. + + &prompt.root; cd /usr/local/Mathematica/Install +&prompt.root; mathinfo +LINUX: 'ioctl' fd=5, typ=0x89(), num=0x27 not implemented +richc.isdn.bcm.tmc.edu 9845-03452-90255 + + ここで, richc の “machine ID” + は, 9845-03452-90255 となります. ioctl + のメッセージは無視してください. まだ FreeBSD + では実装されていません. Mathematica + を実行するたびに同様のメッセージが表示されますが, 実際の使 + 用に問題はありませんので, 無視してかまいません. + + 電子メールや電話, ファックスなどで Wolfram に + “machine ID” を知らせ て登録すると, + いくつかの番号のグループからなるパスワードが送り返されて + きます. パスワードを, マシン名, ライセンス番号とともに, + mathpass ファ イルに追加します. + + 追加は, 以下のようにおこないます. + + &prompt.root; cd /usr/local/Mathematica/Install +&prompt.root; math.install + + ライセンス番号と, Wolfram + から送られてきたパスワードを入力を求めます. + 入力を間違えたりして, math.install + の実行が失敗しても大丈夫です. mathpass + ファイルを手動で編集して, 情報を訂正してください. + + パスワードの入力後, math.install では, + インストール方法を, デフォルト 設定でのインストールか, + 自分で方法を指定するインストールから選ぶことが できます. + 筆者のようにインストールプログラムを信用していない場合は, 自 + 分でディレクトリを指定する方を選択するでしょう. + 自分で指定するインストー ルを選んだ場合, math.install + 自身ではディレクトリの作成はおこないません. 注意してください. + 別のウィンドウでシェルを開いて, 指定するディレクトリ + を作成してください. 存在しないディレクトリを指定して, + math.install が インストールに失敗した場合には, + ディレクトリを作成し, math.install を 再び実行してください. + 筆者らがインストール先に選んだディレクトリは, 以 下の通りです. + くれぐれもあらかじめ作成してから, + math.install で指定す + るようにしてください. + + + + + + + /usr/local/Mathematica/bin + for binaries + + + + + /usr/local/Mathematica/man/man1 + for man pages + + + + /usr/local/Mathematica/lib/X11 + for the XKeysymb file + + + + + + また, システムレコードファイルとして, + /tmp/math.record を使用するように + 設定することもできます. このファイルには, + セッションのログが記録されま す. この設定が終了すると, + math.install は残りのファイルを展開して, 必 + 要な場所に格納します. + + Mathematica ノートブックの機能は, X + フロントエンドとして本体とは別に含 まれています. X + フロントエンドを正しくインストールするには, + /usr/local/Mathematica/FrontEnd + ディレクトリに移動し, ./xfe.install シェ + ルスクリプトを実行します. + インストール先を指定しなければなりませんが, + あらかじめ作成する必要はありません. 必要なディレクトリは, + すべて math.install によって作成されているからです. + インストールが終了したら, + /usr/local/Mathematica/bin + ディレクトリに, mathematica という名前の + シェルスクリプトが新たに作成されているはずです. + + 最後に, Mathematica + がインストールしたシェルスクリプトを修正する必要 があります. + /usr/local/Mathematica/bin + に含まれるすべてのシェルスクリプ + トの先頭部分に以下の行を追加します. + + + XKEYSYMDB=/usr/local/Mathematica/lib/X11/XKeysymDB; export XKEYSYMDB + + これは, Mathematica が使用する Mathematica + バージョンのキーマップファイル XKeysymDB + の場所を指定するものです. + + 2.1-STABLE を使用している場合は, + 以下の行も追加してください. + + + RESOLV_HOST_CONF=/compat/linux/etc/host.conf; export RESOLV_HOST_CONF + + これは, Mathematica に Linux バージョンの host.conf + を使用するように指定し ます. FreeBSD の host.conf の文法は, + Linux のものと異なっているため, この 指定をおこなわないと, + /etc/host.conf + に関わるエラーが発生します. + + 新しいマニュアルページを利用したい場合は, さらに + /etc/manpath.config ファイ + ルを修正する必要があります. また自分の + ~/.cshrc を変更して, + /usr/local/Mathematica/bin + をパスに追加してください. + + これでインストール作業はすべて終了です. + mathematica とタイプすれば, 見栄えのする + Mathematica ノートブックが表示されるはずです. Mathematica + には, Motif ユーザインタフェースが含まれますが, + スタティックにリンクさ れているため, Motif + のライブラリは必要ありあません. 頑張って Mathematica + をインストールしてください. + + + + バグ + + ノートブックフロントエンドは, + 以下のようなエラーメッセージを表示して, + ハングすることがあることが知られています. + + File .../Untitled-1.mb appears to be broken for OMPR.257.0 + + 今のところ原因はわかっていませんが, + このバグが影響を及ぼすのは, ノートブッ クの X window + フロントエンドのみです. Mathematica エンジン本体に影響は + ありません. そのため, ``math'' + によって起動されるコマンドラインのインタ + フェースを使用している場合は, このバグは関係ありません. + + + + 謝辞 + + &a.sos;と&a.peter;に深く感謝します. + Linuxエミュレーションが現在の形に あるのは, 彼らのおかげです. + そして, 彼ら二人にハッパをかけて, 犬のよう に働かせた Michael + Smithに. 今やLinuxエミュレーションは, linuxよりうま + くlinuxバイナリを実行できます! :-) + + + + + diff --git a/ja/handbook/mail/chapter.sgml b/ja/handbook/mail/chapter.sgml new file mode 100644 index 0000000000..ec6b8f0ce6 --- /dev/null +++ b/ja/handbook/mail/chapter.sgml @@ -0,0 +1,692 @@ + + + + 電子メール + + 原作: &a.wlloyd;. + + 訳: &a.jp.mihoko;. 14 January 1997. + + 電子メールのコンフィグレーションは, 多くの システム管理 の書籍で主題 + として取り上げられています. + ネットワークに合わせたメールホスト構築の + 範疇を越えるようなことをする のは, 簡単にはいきません. + + 電子メールのコンフィグレーションの一部は, + ドメインネームシステム (DNS) によって制御されています. + あなた自身で DNS サーバを 立ち上げたい場合には, + /etc/namedb ファイルを + あなたのサーバに合うように変更してください. + さらに詳しい情報が必要な場合には,man -k named + コマンドを実行してください. + + + 基本事項 + + 電子メール交換の主要なプログラムや構成要素を, 次に示します. + “メールホスト” + はあなたのホストやネットワークに対するすべて + の電子メールを配送したり受け取ったりするサーバです. + + + ユーザプログラム + + これは, elm, + pine, + mail や, より洗練された WWW + ブラウザ のようなプログラムです. このプログラムは, 単純に + すべてのメールをローカルメールホスト転送します. この転送は, + sendmail を呼び出すか, + “メールホスト”に対して TCP 上 + の通信を使ってメールを配送するかの + いずれかによっておこないます. + + + + メールホストサーバデーモン + + 通常, このプログラムはバックグラウンドで実行されている + sendmail または smail + です. 実行をやめたり, コマンドライン引数を変更するには, + /etc/rc.conf ファイル (FreeBSD 2.2.2 + より前のバージョンの場合は /etc/sysconfig + ファイル)を編集します. 特別な理由(ファイアウォール を + 構築している場合など)がないかぎり, + 実行する設定にしておくべきです. + + sendmail + は安全なサイト上であっても潜在的にセキュリティ上の + 弱点になることを覚えておいてください. + sendmail のいくつかのバージョンでは, + セキュリティ上の問題が 知られています. + + sendmail は, 電子メールの配送, + 受信の二つの仕事をおこないます. + + sendmail は, + サイトの外側へメールを配送する必要が ある場合, DNS + を参照して配送先のメールを受け取る実際の + ホストを決定します. + + sendmail + が配送エージェントとして動作する場合は, + ローカルキューからメッセージを取り出し, 受信側 + コンピュータ上の sendmail + へインターネットを介して配送します. + + + + DNS — ネームサービス + + ドメインネームシステムとそのデーモン + named は, ホストから IP アドレス, および + ホスト名からメールホストへのマッピングをおこなう + データベースを持っています. IP アドレスは A + レコードで定義します. MX レコードでは, + あなた宛のメールを受け取るメールホストを定義します. もし + あなたのホスト宛のメールに対する MX + レコードを持っていない場合には, + メールはあなたのホストに直接配送されます. + + あなたが自分自身の DNS サーバを実行させていない場合には, + DNS 上の情報を自分で変更することはできません. + インターネットプロバイダを使用している場合には, + プロバイダに依頼して 変更してもらってください. + + + + POP サーバ + + このプログラムはメールボックスからメールを取り出し, + ブラウザにメールを渡します. POP サーバをあなたのマシン上で + 動かしたい場合には, 次の二つの作業をする必要があります. + + + + + pop ソフトウェアを ports コレクション + から入手 します. pop ソフトウェアは, + /usr/ports または + パッケージコレクションにあります. このハンドブックには, + ポート システム + についての完全な解説のセクションがあります. + + + + POP サーバを起動できるように, + /etc/inetd.conf + ファイルを編集します. + + + + 入手した pop プログラムには説明文が付属していますので, + それを読んで ください. + + + + + コンフィグレーション + + + 基本事項 + + あなたのマシンに FreeBSD を普通にインストールして, + /etc/resolv.conf ファイルを設定するか, + またはネームサーバを走らせれば, + 他のホストへ電子メールを送ることができるようになります. + あなたのホスト宛の + メールを特定のホストに配送するようにしたい場合 には, + 次の二つの方法があります. + + + + ネームサーバ (man -k named) + を実行し, あなた自身のドメイン smallminingco.com + を定義する. + + + + あなたのホストに対する現在の DNS + 名に配送されたメールを受け取る. つまり dorm6.ahouse.school.edu + 宛に送られたメールを受け取る. + + + + インターネットへ完全に接続された + あなたのホストに直接メールが配送される ためには, + ネームサーバのどのオプションを使用するかは + あまり重要なことではありません. 大切なのは, あなたが恒久的な + IP アドレスを持っていなくてはいけないと いうことです. + ダイナミック PPP で得られる IP アドレスではダメです. + もしあなたがファイアウォールの内側にいる場合は, + ファイアウォールが smtp トラフィックを + あなたのホストに渡すように設定されていなければいけません. + そのためには, ファイアウォールとなるホストの + /etc/services + + + +smtp 25/tcp mail #Simple Mail Transfer + + と書いておきます. + あなたのホスト上でメールを受けたい場合には, DNS の MX + エントリが あなたのホストアドレスを指しているか, + あなたのホストの DNS 名に対して MX エントリが存在しないことを + 確認してください. + + 次のコマンドを実行してみてください. + + &prompt.root; hostname +newbsdbox.freebsd.org +&prompt.root; host newbsdbox.freebsd.org +newbsdbox.freebsd.org has address 204.216.27.xx + + もしあなたのマシンが上記のメッセージだけを出力したならば, + root@newbsdbox.freebsd.org へのメールは, + 問題なく 配送されるでしょう. + + 上記のメッセージの代わりに, + + &prompt.root; host newbsdbox.freebsd.org +newbsdbox.FreeBSD.org has address 204.216.27.xx +newbsdbox.FreeBSD.org mail is handled (pri=10) by freefall.FreeBSD.org + + というメッセージが出力された場合は, + あなたのマシンに直接配送された すべてのメールは, + freefall + 上の同じユーザ名に配送されてます. + + この情報は, あなたのドメインネームサーバ上で設定します. + この設定をおこなうホストは, + /etc/resolv.conf + にプライマリネームサーバとして + 書いたホストと同じホストであるべきです. + + メールルーティング情報をもつ DNS レコードは, + メールエクスチェンジャエントリ (MX エントリ) です. MX + エントリが存在しない場合には, アドレスレコードにしたがって, + 直接宛先ホストに配送されます. + + freefall.freebsd.org + の現時点での MX エントリは, 次のようになっています. + + +freefall MX 30 mail.crl.net +freefall MX 40 agora.rdrop.com +freefall HINFO Pentium FreeBSD +freefall MX 10 freefall.FreeBSD.org +freefall MX 20 who.cdrom.com +freefall A 204.216.27.xx +freefall CNAME www.FreeBSD.org + + freefall は多くの MX + エントリを持っています. もっとも MX の値が小さいホストが, + 最終的にメールを受け取ります. もし freefall + が他の処理で忙しかったり, ダウンしているような場合には, + 他のホストが, 一時的にメールをキューにいれます. + + 使い勝手をよくするためには, 代替の MX サイトは, それぞれ + 別の経路でインターネットへ接続しているとよいでしょう. + インターネットプロバイダまたは他の関連サイトが, このサービスを + 提供することができます. + + dig, nslookup や + host コマンド を使うと, + とても便利です. + + + + あなたのドメイン (ネットワーク) に対するメール設定 + + ネットワークメールホストをセットアップするためには, + すべての + ワークステーション宛のメールを直接受ける必要があります. + 言いかえれば, *.smallminingco.com + 宛のすべてのメールを ハイジャックし, そのメールをあなたの + “メールホスト” である個々のマシンにに配送 + します. + + それらのワークステーション上のネットワークユーザは, + たいていメールを POP や telnet 等で受け取ります. + + 同じユーザ名のユーザアカウントが, + 両方のマシンに存在しなければな りません. 必要ならば, + アカウントを作成するために adduser + コマンドを使用してください. shell を + /nonexistant に設定すると, + ユーザはログインできなくなります. + + 使用する予定のメールホストは, + 各ワークステーションごとにメール交換が + できるように設定されていなければなりません. これは, DNS + (すなわち BIND や named) の設定が必要です. 詳細は, + ネットワークの本を参照してください. + + 基本的には, 以下の行を DNS サーバに追加する必要があります. + + + +pc24.smallminingco.com A xxx.xxx.xxx.xxx ; Workstation ip + MX 10 smtp.smallminingco.com ; Your mailhost + + 自前で DNS サーバを実行しているのでなければ, この作業は, + 自分では おこなえません. 自分で DNS + サーバを実行したくない場合は, + インターネットプロバイダ等に依頼して, + 作業をおこなってもらってください. + + この作業により, このワークステーション宛のメールは, MX + (メールエクスチェンジャ) ホストに送られるようになります. A + レコードがどのマシンを指しているかどいうことには関係なく, + メールは MX ホストに送られます. + + この機能は, 仮想電子メールホスト (Virtual E-Mail Hosting) + を実装するために使用されています. + + + + foo.bar というドメインを持つ顧客がいて, foo.bar + 宛のメールをすべて, わたしのマシン smtp.amalliap.com + に送りたいと思っています. このような場合, あなたの DNS + サーバ上で, 以下のようなエントリを作成 + しなければなりません: + + +foo.bar MX 10 smtp.smalliap.com ; your mailhost + + そのドメインに対して電子メールを送りたいだけなら, A + レコードは必要ありません. つまり, foo.bar + に対するアドレスレコードが存在しない限り, ping + foo.bar コマンドが動作することを期待しては + いけません + + メールボックスへの最終的な配送が行われる + メールを実際に受けている メールホスト上では, + sendmail はメールを受け付けているホストを + 知っている必要があります. + + そのためには, (FEATURE(use_cw_file) + を使用している場合) /etc/sendmail.cw + ファイルに pc24.smallminingco.com + を追加するか, /etc/sendmail.cf + ファイルに, Cw myhost.smalliap.com + の行を追加してください. + + もしあなたが本気で sendmail + を使って何かしようと思うなら, sendmail + のソースをインストールするべきです. ソースには, + たくさんのドキュメントも付いています. UUCP のセットアップ の節に + sendmail の + ソースを入手するのに必要な情報が掲載されています. + + + + UUCP のセットアップ + + よくある質問 (FAQ) より抜粋. + + FreeBSD に付属する sendmail + のコンフィグレーションは, + 直接インターネット接続しているサイトに合うように作られてい + ます. メールを UUCP 経由で交換するようにしたい場合には, 別の + sendmail + コンフィグレーションファイルをインストールし + なければなりません. + + /etc/sendmail.cf + を手動で作成することは, 純正主義者 + がおこなうことだと考えられています. sendmail のバージョン 8 + では, m4 プリプロセッサを使用して, + コンフィグレーションファイルを生成する方法が取られています. + この場合, 実際に手動で作成したコンフィグレーションは, + 実際のコンフィグレーションより簡潔です. + 以下の場所にあるコンフィグレーションファイルを + 使用してください. + /usr/src/usr.sbin/sendmail/cf + + システム上にすべてのソースをインストールして いない場合, + sendmail の設定ツールは不完全なままであり, + それは個別のソース配布物の中にあります. CD-ROM + をマウントしてあれば, 以下のようにします. + + &prompt.root; cd /usr/src +&prompt.root; tar -xvzf /cdrom/dists/src/ssmailcf.aa + + 驚かないでください. + これはたった数百キロバイトのサイズのファ イルです. + cf ディレクトリ上にある + README ファイル には, m4 + コンフィグレーションの基本的な紹介が書かれてい ます. + + UUCP での配送には, mailertable + 機能を使用すること をおすすめします. これは + sendamil が配送経路を決定するのに + 使用するデータベースファイルです. + + まずはじめに, .mc + ファイルを作成します. + /usr/src/usr.sbin/snemdail/cf/cf + ディレクトリに これらのファイルを置きます. + ここには既にいくつかの例が 置いてあるので, 見てください. + foo.mc という名前で作成したと仮定すると, + それを有効な sendmail.cf + に変換するためには, まず次のようにします: + + &prompt.root; cd /usr/src/usr.sbin/sendmail/cf/cf +&prompt.root; make foo.cf + + 続いて, もし /usr/obj + 以下のディレクトリが存在しなければ: + + &prompt.root; cp foo.cf /etc/sendmail.cf + + とし, 存在すれば次のようにします: + + &prompt.root; cp /usr/obj/`pwd`/foo.cf /etc/sendmail.cf + + 典型的な .mc + ファイルは次のような内容です: + + +include(`../m4/cf.m4') +VERSIONID(`Your version number') +OSTYPE(bsd4.4) + +FEATURE(nodns) +FEATURE(nocanonify) +FEATURE(mailertable) + +define(`UUCP_RELAY', your.uucp.relay) +define(`UUCP_MAX_SIZE', 200000) + +MAILER(local) +MAILER(smtp) +MAILER(uucp) + +Cw your.alias.host.name +Cw youruucpnodename.UUCP + + nodnsnocanonify + は, メール配送をおこなう 際に, DNS + を参照しないようにするための設定です. + UUCP_RELAY は, 必要な設定ですが, + ここでは理由を 説明できません. その理由について, + ここでは質問しないでください. .UUCP + 仮想ドメインアドレスを扱うことができるインターネット + ホスト名を書いてください. おそらく, 使用する ISP + のメール中継ホスト名をそこに記述する ことになります. + + この設定が終了したら, + /etc/mailertable と呼ばれる + ファイルが必要になります. + このファイルの典型的な例を示します: + + +# +# makemap hash /etc/mailertable.db < /etc/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:sax + + 見て分かるように, これは実際に使用されているファイルの一部 + です. はじめの三行は, ドメインアドレスが指定されたメールが + デフォルトルートに送信せずに, + 配送パスを“短縮”して, 隣接 UUCP + サイトにメールを送るための設定です. 次の行は, メールを SMTP + を使用して配送されているローカル + イーサネットドメイン上のマシンに送信するための設定です. + 最後に, UUCP 接続されているドメインが, .UUCP という仮想ド + メイン表記されている場合です. これは, + uucp-neighbor!recipient + をデフォルト規則で書換えるため です. 最終行は必ず + シングルドット (.) を指定します. + 上記のどのパターンにも当てはまらない送信先に対して, あなた + のメールの世界中へのゲートウェイとして動作してくれる隣接 UUCP + サイトに, UUCP を使って配送します. + uucp-dom: + というキーワードの後に書かれたすべての ノード名は, 隣接 UUCP + サイトでなければなりません. そのサイトと UUCP + 接続を行っているかどうかは, コマンド + uuname + を使用して確かめることができます. + + 実際に使用するには, このファイルを DBM データベースファイ + ルに変換する必要があることを忘れないでください. + これを実行するためのコマンド 行は, + mailertable + の先頭にコメントとして記述されています. 通常, このコマンドは, + mailertable を変更するたびに実行しな + ければなりません. + + 最終ヒント: もしいくつかの特定のメール経路が正しく動作する + かどうかが心配ならば, sendmail の + オプション を覚えておいてください. + このオプションは sendmail を + “アドレステストモード” で起動します. + メールの経路をテストするには, 0 + のあとにメール経路をテスト したいアドレスを入力してください. + 最後の行にあなたが使用する インターネットメールエージェント + (メール中継プログラム) と, + このエージェントに呼び出される宛先のホスト名と, + (翻訳可能な場合) アドレスがが表示されます. このモードを + 終了するには, Control-D を入力します. + + &prompt.user; sendmail -bt +ADDRESS TEST MODE (ruleset 3 NOT automatically invoked) +Enter <ruleset> <address> +> 0 foo@interface-business.de +rewrite: ruleset 0 input: foo @ interface-business . de +… +rewrite: ruleset 0 returns: $# uucp-dom $@ if-bus $: foo < @ interface-business . de + + + + + よくある質問 (FAQ) + + このセクションは, FAQ + から移動してきました. + + + どうして 同じサイトのホストに対して完全な形のドメイン名 + (FQDN) を使わなければいけないの? + + おそらく, + そのホストは実際には違うドメインに属しているのでしょう. + 例えば, もしあなたが foo.bar.edu + ドメインにいて, bar.edu + ドメインの中のmumble + というホストに接続したいと します. その場合あなたは, + mumbleではなく mumble.bar.edu + という完全な形のドメイン名 (FQDN) によっ + てそのホストを参照しなければなりません. + + 伝統的に, これは BSD BIND リゾルバでは許されていました. + しかしながら, FreeBSD に付属する現在の + BIND の バージョンでは, + 自分が属しているドメイン以外では, + 完全な形でないドメイン名に対するデフォルトの省略形は + 使用できません. ですから, 完全でないホスト名 + mumble は, mumble.foo.bar.edu として解決されるか, + ルートドメインに検索しにいくでしょう. + + これは, mumble.bar.edu, + mumble.edu + というように検索し続けるような過去の動作とは異なります. + なぜこれが悪い慣例, さらにはセキュリティーホールと考えられ + るようになった理由については, RFC1535 + を参照してください. + + この問題を回避するには, + + +search foo.bar.edu bar.edu + + という行を + + +domain foo.bar.edu + + に置き換えます.これを自分のマシン上の + /etc/resolv.conf ファイルに + 記述してください. しかしながら, 検索順序は, RFC 1535 に + 書かれている, “ローカル管理と公共の管理の間の境界線” + を越えないことを, あらかじめ確認してください. + + + + Sendmail が <errorname>mail loops back to + myself</errorname> というエラーを出します + + これについては, sendmail FAQ の中で, 次のように答えられて + います: + + +* 次のような 「Local configuration error」というメッセージが出ます: + +553 relay.domain.net config error: mail loops back to myself +554 <user@domain.net>... Local configuration error + +この問題をどうやって解決すればよいでしょうか? + +MX レコードを使って, あるドメイン(例: domain.net)宛にメールを +特定のホスト (この場合, relay.domain.net) に転送しようと設定したと +していますが, 中継ホストは自身が domain.net であるとは認識 +していません. +(FEATURE(use_cs_file) を使用している場合は) +/etc/sendmail.cw に, domain.net を追加してください. +または, 「Cw domain.net」を /etc/sendmail.cf に追加してください. + + sendmail FAQ は, + /usr/src/usr.sbin/sendmail に あります. + “ちょっと凝った”メール設定 をしたい場合は, FAQ + を読むことをおすすめします. + + + + ダイアルアップ PPP + ホストで電子メールを使うにはどうしたらいいの? + + LAN 上にある FreeBSD マシンを, + インターネットに接続したいと します. FreeBSD マシンは, その + LAN でのメールゲートウェイになります. FreeBSD + マシンは専用線接続ではありません + (訳注:ダイアルアップ接続など). + + これには, 少なくとも二つの方法があります. + + 一つは UUCP を使うことです. + + このとき鍵になるのは, あなたのドメインに対するセカンダリ + MX サービス + を提供してくれるインターネットサイトをみつけることです. + + 例: + + +bigco.com. MX 10 bigco.com. + MX 20 smalliap.com. + + 最終的なメール受信先としては, + 一つのホストだけが定義されるべきです (bigco.com 上の + /etc/sendmail.cf ファイルに, Cw + bigco.com を追加します). + + 送信側の sendmail が, + メールを配送しようとしている時, モデムの接続を + 介してあなたのところに接続しようとします. 大抵の場合, + あなたのマシンがオンラインでないために, 接続はタイムアウト + してしまうでしょう. sendmail は自動的に, + メールをセカンダリの MX サイト に + (あなたのインターネットプロバイダ) に配送します. セカンダリ MX + サイトは, (/etc/rc.conf ファイル に + sendmail_flag = "-bd + -q15m"と書かれている場合) 15 分ごとに, + プライマリ MX サイトにメールを配送しようと, + あなたのホストに接続しに いきます. + + ログインスクリプトとして, + このようなものを使うとよいでしょう. + + +#!/bin/sh +# Put me in /usr/local/bin/pppbigco +( sleep 60 ; /usr/sbin/sendmail -q ) & +/usr/sbin/ppp -direct pppbigco + + ユーザごとにログインスクリプトを作りたい場合には, 上記 + のスクリプトの代わりに, sendmail + -qRbigco.com を使用する こともできます. + このようにすると, キューの中の bigco.com に対する + すべてのメールは, すぐに強制的に処理されます. + + + さらに, 次のような改良もできます. + + 以下は, freebsd-isp + メイリングリストから抜粋してきたメッセージです. + + +> 私たちはお客様に対して, セカンダリ 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 レコードを定義してください. + + + + + diff --git a/ja/handbook/mailing-lists.ent b/ja/handbook/mailing-lists.ent new file mode 100644 index 0000000000..1469f5b360 --- /dev/null +++ b/ja/handbook/mailing-lists.ent @@ -0,0 +1,107 @@ + + +freebsd-announce@FreeBSD.ORG"> + +freebsd-advocacy@FreeBSD.ORG"> + +cvs-all@FreeBSD.ORG"> + +freebsd-database@FreeBSD.ORG"> + +freebsd-doc@FreeBSD.ORG"> + +freebsd-bugs@FreeBSD.ORG"> + +freebsd-chat@FreeBSD.ORG"> + +freebsd-current@FreeBSD.ORG"> + +freebsd-emulation@FreeBSD.ORG"> + +freebsd-fs@FreeBSD.ORG"> + +freebsd-hackers@FreeBSD.ORG"> + +freebsd-hardware@FreeBSD.ORG"> + +freebsd-isdn@FreeBSD.ORG"> + +freebsd-isp@FreeBSD.ORG"> + +freebsd-java@FreeBSD.ORG"> + +freebsd-jobs@FreeBSD.ORG"> + +freebsd-mobile@FreeBSD.ORG"> + +freebsd-mozilla@FreeBSD.ORG"> + +freebsd-multimedia@FreeBSD.ORG"> + +freebsd-net@FreeBSD.ORG"> + +new-bus-arch@bostonradio.org"> + +freebsd-newbies@FreeBSD.ORG"> + +freebsd-ports@FreeBSD.ORG"> + +freebsd-questions@FreeBSD.ORG"> + +freebsd-scsi@FreeBSD.ORG"> + +freebsd-security@FreeBSD.ORG"> + +freebsd-security-notifications@FreeBSD.ORG"> + +freebsd-small@FreeBSD.ORG"> + +freebsd-smp@FreeBSD.ORG"> + +freebsd-stable@FreeBSD.ORG"> + +freebsd-tokenring@FreeBSD.ORG"> + +majordomo@FreeBSD.ORG"> + +freebsd-core@FreeBSD.ORG"> diff --git a/ja/handbook/mirrors/chapter.sgml b/ja/handbook/mirrors/chapter.sgml new file mode 100644 index 0000000000..d103cb2707 --- /dev/null +++ b/ja/handbook/mirrors/chapter.sgml @@ -0,0 +1,1217 @@ + + + + FreeBSD の入手方法 + + + CD-ROM 出版社 + + FreeBSD は Walnut Creek CDROM から出されている CD-ROM + から入手できます: + +
+ Walnut Creek CDROM + 4041 Pike Lane, Suite F + Concord + CA, 94520 + USA + Phone: +1 925 674-0783 + Fax: +1 925 674-0821 + Email: info@cdrom.com + WWW: http://www.cdrom.com/ +
+
+ + + FTP サイト + + FreeBSD の公式な情報は anonymous FTP によって以下の場所から + 入手できます: + +
+ ftp://ftp.FreeBSD.ORG/pub/FreeBSD. +
+
+ + FreeBSD + ミラーサイトデーターベース FreeBSD ハンドブックの + “ミラーサイト一覧” + よりも正確です.というのはその情報を DNS から取得するので, + 静的に記述されたリストよりも信頼性が高いのです. + + さらに, FreeBSD は以下のミラーサイトから anonymous FTP + によって 入手できます. もし FreeBSD を anonymous FTP + によって手にいれる場合は, + 近くのサイトを利用するようにしてください. + + Argentina, + Australia, + Brazil, + Canada, + Czech Republic, + Denmark, + Estonia, + Finland, + France, + Germany, + Hong Kong, + Ireland, + Israel, + Japan, + Korea, + Netherlands, + Poland, + Portugal, + Russia, + South Africa, + Spain, + Slovak Republic, + Slovenia, + Sweden, + Taiwan, + Thailand, + UK, + Ukraine, + USA. + + + アルゼンチン + + 何か問題がある場合は,このドメインの + hostmaster hostmaster@ar.FreeBSD.ORG + に連絡してください. + + + + ftp.ar.FreeBSD.ORG/pub/FreeBSD + + + + + + オーストラリア + + 何か問題がある場合は, このドメインの hostmaster + hostmaster@au.FreeBSD.ORG + に連絡してください. + + + + ftp://ftp.au.FreeBSD.ORG/pub/FreeBSD + + + + ftp://ftp2.au.FreeBSD.ORG/pub/FreeBSD + + + + ftp://ftp3.au.FreeBSD.ORG/pub/FreeBSD + + + + ftp://ftp4.au.FreeBSD.ORG/pub/FreeBSD + + + + + + ブラジル + + 何か問題がある場合は, このドメインの hostmaster + hostmaster@br.FreeBSD.ORG + に連絡してください. + + + + ftp://ftp.br.FreeBSD.ORG/pub/FreeBSD + + + + ftp://ftp2.br.FreeBSD.ORG/pub/FreeBSD + + + + ftp://ftp3.br.FreeBSD.ORG/pub/FreeBSD + + + + ftp://ftp4.br.FreeBSD.ORG/pub/FreeBSD + + + + ftp://ftp5.br.FreeBSD.ORG/pub/FreeBSD + + + + ftp://ftp6.br.FreeBSD.ORG/pub/FreeBSD + + + + ftp://ftp7.br.FreeBSD.ORG/pub/FreeBSD + + + + + + カナダ + + 何か問題がある場合は, このドメインの hostmaster + hostmaster@ca.FreeBSD.ORG + に連絡してください. + + + + ftp://ftp.ca.FreeBSD.ORG/pub/FreeBSD + + + + + + チェコ + + + + ftp://sunsite.mff.cuni.cz/OS/FreeBSD + 連絡先: jj@sunsite.mff.cuni.cz. + + + + + + デンマーク + + 何か問題がある場合は,このドメインの hostmaster + hostmaster@dk.FreeBSD.ORG + に連絡してください. + + + + ftp://ftp.dk.freeBSD.ORG/pub/FreeBSD + + + + + + エストニア + + 何か問題がある場合は, このドメインの hostmaster + hostmaster@ee.FreeBSD.ORG + に連絡してください. + + + + ftp://ftp.ee.freebsd.ORG/pub/FreeBSD + + + + + + フィンランド + + 何か問題がある場合は, このドメインの hostmaster + hostmaster@fi.FreeBSD.ORG + に連絡してください. + + + + ftp://ftp.fi.freebsd.ORG/pub/FreeBSD + + + + + + フランス + + 何か問題がある場合は, このドメインの hostmaster + hostmaster@fr.FreeBSD.ORG + に連絡してください. + + + + ftp://ftp.fr.FreeBSD.ORG/pub/FreeBSD + + + + ftp://ftp2.fr.FreeBSD.ORG/pub/FreeBSD + + + + ftp://ftp3.fr.FreeBSD.ORG/pub/FreeBSD + + + + + + ドイツ + + 何か問題がある場合は, このドメインの hostmaster + hostmaster@de.FreeBSD.ORG + に連絡してください. + + + + ftp://ftp.de.FreeBSD.ORG/pub/FreeBSD + + + + ftp://ftp2.de.FreeBSD.ORG/pub/FreeBSD + + + + ftp://ftp3.de.FreeBSD.ORG/pub/FreeBSD + + + + ftp://ftp4.de.FreeBSD.ORG/pub/FreeBSD + + + + ftp://ftp5.de.FreeBSD.ORG/pub/FreeBSD + + + + ftp://ftp6.de.FreeBSD.ORG/pub/FreeBSD + + + + ftp://ftp7.de.FreeBSD.ORG/pub/FreeBSD + + + + + + 香港 + + + + ftp://ftp.hk.super.net/pub/FreeBSD +連絡先: ftp-admin@HK.Super.NET. + + + + + + アイルランド + + 何か問題がある場合は, このドメインの hostmaster + hostmaster@ie.FreeBSD.ORG + に連絡してください. + + + + ftp://ftp.ie.FreeBSD.ORG/pub/FreeBSD + + + + + + イスラエル + + 何か問題がある場合は, このドメインの hostmaster + hostmaster@il.FreeBSD.ORG + に連絡してください. + + + + ftp://ftp.il.FreeBSD.ORG/pub/FreeBSD + + + + ftp://ftp2.il.FreeBSD.ORG/pub/FreeBSD + + + + + + 日本 + + 何か問題がある場合は, このドメインの hostmaster + hostmaster@jp.FreeBSD.ORG + に連絡してください. + + + + ftp://ftp.jp.FreeBSD.ORG/pub/FreeBSD + + + + ftp://ftp2.jp.FreeBSD.ORG/pub/FreeBSD + + + + ftp://ftp3.jp.FreeBSD.ORG/pub/FreeBSD + + + + ftp://ftp4.jp.FreeBSD.ORG/pub/FreeBSD + + + + ftp://ftp5.jp.FreeBSD.ORG/pub/FreeBSD + + + + ftp://ftp6.jp.FreeBSD.ORG/pub/FreeBSD + + + + + + 韓国 + + 何か問題がある場合は, このドメインの hostmaster + hostmaster@kr.FreeBSD.ORG + に連絡してください. + + + + ftp://ftp.kr.FreeBSD.ORG/pub/FreeBSD + + + + ftp://ftp2.kr.FreeBSD.ORG/pub/FreeBSD + + + + + ftp://ftp3.kr.FreeBSD.ORG/pub/FreeBSD + + + + ftp://ftp4.kr.FreeBSD.ORG/pub/FreeBSD + + + + ftp://ftp5.kr.FreeBSD.ORG/pub/FreeBSD + + + + ftp://ftp6.kr.FreeBSD.ORG/pub/FreeBSD + + + + + + オランダ + + 何か問題がある場合は, このドメインの hostmaster + hostmaster@nl.FreeBSD.ORG + に連絡してください. + + + + ftp://ftp.nl.freebsd.ORG/pub/FreeBSD + + + + + + ポーランド + + 何か問題がある場合は,このドメインの hostmaster + hostmaster@pl.FreeBSD.ORG + に連絡してください. + + + + ftp://ftp.pl.freebsd.ORG/pub/FreeBSD + + + + + + ポルトガル + + 何か問題がある場合は, このドメインの hostmaster + hostmaster@pt.FreeBSD.ORG + に連絡してください. + + + + ftp://ftp.pt.freebsd.org/pub/FreeBSD + + + + ftp://ftp2.pt.freebsd.org/pub/FreeBSD + + + + + + ロシア + + 何か問題がある場合は, このドメインの + hostmaster hostmaster@ru.FreeBSD.ORG + に連絡してください. + + + + ftp://ftp.ru.freebsd.org/pub/FreeBSD + + + + ftp://ftp2.ru.freebsd.org/pub/FreeBSD + + + + ftp://ftp3.ru.freebsd.org/pub/FreeBSD + + + + ftp://ftp4.ru.freebsd.org/pub/FreeBSD + + + + + + 南アフリカ + + 何か問題がある場合は, このドメインの hostmaster + hostmaster@za.FreeBSD.ORG + に連絡してください. + + + + ftp://ftp.za.FreeBSD.ORG/pub/FreeBSD + + + + ftp://ftp2.za.FreeBSD.ORG/pub/FreeBSD + + + + ftp://ftp3.za.FreeBSD.ORG/pub/FreeBSD + + + + + + スロベニア + + 何か問題がある場合には, このドメインの hostmaster + hostmaster@si.FreeBSD.ORG + に連絡してください. + + + + ftp://ftp.si.freebsd.ORG/pub/FreeBSD + + + + + + スロヴァキア共和国 + + 何か問題がある場合には, このドメインの hostmaster + hostmaster@sk.FreeBSD.ORG + に連絡してください. + + + + ftp://ftp.sk.freebsd.ORG/pub/FreeBSD + + + + + + + スペイン + + 何か問題がある場合は, このドメインの hostmaster + hostmaster@es.FreeBSD.ORG + に連絡してください. + + + + ftp://ftp.es.freebsd.ORG/pub/FreeBSD + + + + + + スウェーデン + + 何か問題がある場合は, このドメインの hostmaster + hostmaster@se.FreeBSD.ORG + に連絡してください. + + + + ftp://ftp.se.FreeBSD.ORG/pub/FreeBSD + + + + ftp://ftp2.se.FreeBSD.ORG/pub/FreeBSD + + + + ftp://ftp3.se.FreeBSD.ORG/pub/FreeBSD + + + + + + 台湾 + + 何か問題がある場合は, このドメインの hostmaster + hostmaster@tw.FreeBSD.ORG + に連絡してください. + + + + ftp://ftp.tw.FreeBSD.ORG/pub/FreeBSD + + + + ftp://ftp2.tw.FreeBSD.ORG/pub/FreeBSD + + + + ftp://ftp3.tw.FreeBSD.ORG/pub/FreeBSD + + + + + + タイ + + + + ftp://ftp.nectec.or.th/pub/FreeBSD + 連絡先: ftpadmin@ftp.nectec.or.th. + + + + + + ウクライナ + + + + ftp://ftp.ua.FreeBSD.ORG/pub/FreeBSD + 連絡先: freebsd-mnt@lucky.net. + + + + + + イギリス + + 何か問題がある場合は, このドメインの hostmaster + hostmaster@uk.FreeBSD.ORG + に連絡してください. + + + + ftp://ftp.uk.FreeBSD.ORG/pub/FreeBSD + + + + ftp://ftp2.uk.FreeBSD.ORG/pub/FreeBSD + + + + ftp://ftp3.uk.FreeBSD.ORG/pub/FreeBSD + + + + ftp://ftp4.uk.FreeBSD.ORG/pub/FreeBSD + + + + + + アメリカ + + 何か問題がある場合は, このドメインの hostmaster + hostmaster@FreeBSD.ORG + に連絡してください. + + + + ftp://ftp.FreeBSD.ORG/pub/FreeBSD + + + + ftp://ftp2.FreeBSD.ORG/pub/FreeBSD + + + + ftp://ftp3.FreeBSD.ORG/pub/FreeBSD + + + + ftp://ftp4.FreeBSD.ORG/pub/FreeBSD + + + + ftp://ftp5.FreeBSD.ORG/pub/FreeBSD + + + + ftp://ftp6.FreeBSD.ORG/pub/FreeBSD + + + + + + + FreeBSD (2.0C またはそれ以降) の輸出規制コード (eBones と + secure) の 最新のバージョンは以下の場所から入手できます. + もしあなたがアメリカやカナダ以外にいるのであれば, secure (DES) + と eBones (Kerberos) を + 以下の外国向けの配布サイトから手にいれてください: + + + 南アフリカ + + このドメインの Hostmaster + hostmaster@internat.FreeBSD.ORG . + + + + ftp://ftp.internat.FreeBSD.ORG/pub/FreeBSD + + + + ftp://ftp2.internat.FreeBSD.ORG/pub/FreeBSD + + + + + + ブラジル + + このドメインの Hostmaster + hostmaster@br.FreeBSD.ORG . + + + + ftp://ftp.br.FreeBSD.ORG/pub/FreeBSD + + + + + + フィンランド + + + + ftp://nic.funet.fi/pub/unix/FreeBSD/eurocrypt +連絡先: count@nic.funet.fi. + + + + + +
+ + + CTM サイト + + CTM/FreeBSD + は以下のミラーサイトから anonymous FTP によって入手できます. + もし CTM を anonymous FTP によって手にいれる場合は, + 近くのサイトを利用するようにしてください. + + 何か問題がある場合は, &a.phk;に連絡してください. + + + カリフォルニア, サンフランシスコ近辺, + 公式なソース + + + + ftp://ftp.freebsd.org/pub/FreeBSD/CTM + + + + + + ドイツ, トリエル + + + + ftp://ftp.uni-trier.de/pub/unix/systems/BSD/FreeBSD/CTM + + + + + + 南アフリカ, ctm, sup, + CVSupなどの古い差分ファイルのバックアップサーバ + + + + ftp://ftp.internat.freebsd.org/pub/FreeBSD/CTM + + + + + + 台湾/中華民国, チャーイー(嘉義) + + + + ftp://ctm.tw.freebsd.org/pub/freebsd/CTM + + + + ftp://ctm2.tw.freebsd.org/pub/FreeBSD/CTM + + + + ftp://ctm3.tw.freebsd.org/pub/freebsd/CTM + + + + + + + 近くにミラーサイトがない場合やミラーが不完全な場合は, + + http://ftpsearch.ntnu.no/ftpsearch の + FTP search + を試してください. + FTP search はノルウェーの Trondheim にある, + フリーの素晴らしい アーカイブサーバです. + + + + CVSup サイト + + FreeBSD の CVSup + サーバは以下のサイトで稼働しています: + + + アルゼンチン + + + + cvsup.ar.FreeBSD.ORG + (maintainer msagre@cactus.fi.uba.ar) + + + + + + オーストラリア + + + + cvsup.au.FreeBSD.ORG + (maintainer dawes@physics.usyd.edu.au) + + + + + + ブラジル + + + + cvsup.br.FreeBSD.ORG + (maintainer cvsup@cvsup.br.freebsd.org) + + + + + + カナダ + + + + cvsup.ca.FreeBSD.ORG + (maintainer dm@globalserve.net) + + + + + + デンマーク + + + + cvsup.dk.FreeBSD.ORG + (maintainer jesper@skriver.dk) + + + + + + エストニア + + + + cvsup.ee.FreeBSD.ORG + (maintainer taavi@uninet.ee) + + + + + + フィンランド + + + + cvsup.fi.FreeBSD.ORG + (maintainer count@key.sms.fi) + + + + + + ドイツ + + + + cvsup.de.FreeBSD.ORG + (maintainer wosch@freebsd.org) + + + + cvsup2.de.FreeBSD.ORG + (maintainer petzi@freebsd.org) + + + + cvsup3.de.FreeBSD.ORG + (maintainer ag@leo.org) + + + + + + アイスランド + + + + cvsup.is.FreeBSD.ORG + (maintainer adam@veda.is) + + + + + + 日本 + + + + cvsup.jp.FreeBSD.ORG + (maintainer simokawa@sat.t.u-tokyo.ac.jp) + + + + cvsup2.jp.FreeBSD.ORG + (maintainer max@FreeBSD.ORG) + + + + cvsup3.jp.FreeBSD.ORG + (maintainer shige@cin.nihon-u.ac.jp) + + + + cvsup4.jp.FreeBSD.ORG + (maintainer + cvsup-admin@ftp.media.kyoto-u.ac.jp) + + + + cvsup5.jp.FreeBSD.ORG + (maintainer cvsup@imasy.or.jp) + + + + + + オランダ + + + + cvsup.nl.FreeBSD.ORG + (maintainer xaa@xaa.iae.nl) + + + + + + ノルウェー + + + + cvsup.no.FreeBSD.ORG + (maintainer Tor.Egge@idt.ntnu.no) + + + + + + ポーランド + + + + cvsup.pl.FreeBSD.ORG + (maintainer Mariusz@kam.pl) + + + + + + ロシア + + + + cvsup.ru.FreeBSD.ORG + (maintainer mishania@demos.su) + + + + cvsup2.ru.FreeBSD.ORG + (maintainer dv@dv.ru) + + + + + + スロヴァキア共和国 + + + + cvsup.sk.FreeBSD.ORG + (maintainer tps@tps.sk) + + + + cvsup2.sk.FreeBSD.ORG + (maintainer tps@tps.sk) + + + + + + 南アフリカ + + + + cvsup.za.FreeBSD.ORG + (maintainer markm@FreeBSD.ORG) + + + + cvsup2.za.FreeBSD.ORG + (maintainer markm@FreeBSD.ORG) + + + + + + スウェーデン + + + + cvsup.se.FreeBSD.ORG + (maintainer pantzer@ludd.luth.se) + + + + + + 台湾 + + + + cvsup.tw.FreeBSD.ORG + (maintainer + jdli@freebsd.csie.nctu.edu.tw) + + + + + + ウクライナ + + + + cvsup2.ua.FreeBSD.ORG + (maintainer freebsd-mnt@lucky.net) + + + + + + イギリス + + + + cvsup.uk.FreeBSD.ORG + (maintainer joe@pavilion.net) + + + + + + アメリカ + + + + cvsup1.FreeBSD.ORG + (maintainer + skynyrd@opus.cts.cwu.edu), ワシントン州 + + + + cvsup2.FreeBSD.ORG + (maintainer + jdp@FreeBSD.ORG), カリフォルニア + + + + cvsup3.FreeBSD.ORG + (maintainer + wollman@FreeBSD.ORG), マサチューセッツ + + + + cvsup4.FreeBSD.ORG + (maintainer shmit@rcn.com), バージニア + + + + cvsup5.FreeBSD.ORG + (maintainer + cvsup@adsu.bellsouth.com), ジョージア + + + + + + + FreeBSD の輸出規制されたコード (eBones と secure) は + CVSup 経由で以下 + の国際的なリポジトリから入手できます. + アメリカ合衆国やカナダ以外に居る 場合は, + このサイトを使って輸出規制されたコードを入手してください. + + + 南アフリカ + + + + cvsup.internat.FreeBSD.ORG + (maintainer markm@FreeBSD.ORG) + + + + + + + 以下の CVSup サイトは, CTMユーザのことを特に + 考慮して運用されています. 他の CVSup のミラーサイトとは異なり, + これら のサイトでは CTM + を使って最新の状態を保っています. つまり, もし以下の サイトから + cvs-allrelease=cvs で + CVSup すれば, + CTMcvs-cur + のデルタを使って更新するのに適した CVS のリポ ジトリ + (必須となる .ctm_status + ファイルも含まれています.) を 入手することができます. + これにより, これまで CVSup を使って + cvs-all 全部を入手していたユーザも + CTM のベースデルタを使って + 最初からリポジトリを構築し直すことなく + CVSup から + CTM へと移行すること + が可能です. + + + この機能は, リリースタグを cvs として + cvs-all ディ + ストリビューションを入手する時のみ + 利用できるものですので注意してくださ い. + 他のディストリビューションやリリースタグを + 指定した場合でも指定した ファイルを入手することは可能ですが, + これらのファイルを CTM で更新する + ことはできません. + + + + また, CTM + の現在のバージョンではタイムスタンプを保存しないため, 以 + 下のサイトのファイルのタイムスタンプは + 他のミラーとは異なる物となってい ますので注意が必要です. + 利用するサイトを以下のサイトと他のサイトの間で + 変更することはお勧めできません. + ファイルの転送は問題なくできますが, 少々 非能率的です. + + + + ドイツ + + + + ctm.FreeBSD.ORG + (maintainer blank@fox.uni-trier.de) + + + + + + + + + AFS サイト + + FreeBSD の AFS サーバは以下のサイトで稼働しています: + + + + スウェーデン + + ファイルは以下の場所にあります: + /afs/stacken.kth.se/ftp/pub/FreeBSD + + + + stacken.kth.se, + Stacken Computer Club, KTH, Sweden + + + + 130.237.234.3, milko.stacken.kth.se + + + + 130.237.234.43, hot.stacken.kth.se + + + + 130.237.234.44, dog.stacken.kth.se + + + + + + +
+ + diff --git a/ja/handbook/newsgroups.ent b/ja/handbook/newsgroups.ent new file mode 100644 index 0000000000..809207361b --- /dev/null +++ b/ja/handbook/newsgroups.ent @@ -0,0 +1,14 @@ + + +comp.unix.bsd.freebsd.misc + newsgroup"> + diff --git a/ja/handbook/pgpkeys/chapter.sgml b/ja/handbook/pgpkeys/chapter.sgml new file mode 100644 index 0000000000..5daeeb727d --- /dev/null +++ b/ja/handbook/pgpkeys/chapter.sgml @@ -0,0 +1,586 @@ + + + + PGP 公開鍵 + + 原作: 不明. + + 訳: &a.jp.kiroh;. + + 署名を検証したり, コアチームメンバやオフィサに暗号メー + ルを送りたい場合のために, PGPの公開鍵を添付します. + + + オフィサ + + + FreeBSD Security Officer + <email>security-officer@freebsd.org</email> + + +FreeBSD Security Officer <security-officer@freebsd.org> +Fingerprint = 41 08 4E BB DB 41 60 71 F9 E5 0E 98 73 AF 3F 11 + +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: 2.6.3i + +mQCNAzF7MY4AAAEEAK7qBgPuBejER5HQbQlsOldk3ZVWXlRj54raz3IbuAUrDrQL +h3g57T9QY++f3Mot2LAf5lDJbsMfWrtwPrPwCCFRYQd6XH778a+l4ju5axyjrt/L +Ciw9RrOC+WaPv3lIdLuqYge2QRC1LvKACIPNbIcgbnLeRGLovFUuHi5z0oilAAUR +tDdGcmVlQlNEIFNlY3VyaXR5IE9mZmljZXIgPHNlY3VyaXR5LW9mZmljZXJAZnJl +ZWJzZC5vcmc+iQCVAwUQMX6yrOJgpPLZnQjrAQHyowQA1Nv2AY8vJIrdp2ttV6RU +tZBYnI7gTO3sFC2bhIHsCvfVU3JphfqWQ7AnTXcD2yPjGcchUfc/EcL1tSlqW4y7 +PMP4GHZp9vHog1NAsgLC9Y1P/1cOeuhZ0pDpZZ5zxTo6TQcCBjQA6KhiBFP4TJql +3olFfPBh3B/Tu3dqmEbSWpuJAJUDBRAxez3C9RVb+45ULV0BAak8A/9JIG/jRJaz +QbKom6wMw852C/Z0qBLJy7KdN30099zMjQYeC9PnlkZ0USjQ4TSpC8UerYv6IfhV +nNY6gyF2Hx4CbEFlopnfA1c4yxtXKti1kSN6wBy/ki3SmqtfDhPQ4Q31p63cSe5A +3aoHcjvWuqPLpW4ba2uHVKGP3g7SSt6AOYkAlQMFEDF8mz0ff6kIA1j8vQEBmZcD +/REaUPDRx6qr1XRQlMs6pfgNKEwnKmcUzQLCvKBnYYGmD5ydPLxCPSFnPcPthaUb +5zVgMTjfjS2fkEiRrua4duGRgqN4xY7VRAsIQeMSITBOZeBZZf2oa9Ntidr5PumS +9uQ9bvdfWMpsemk2MaRG9BSoy5Wvy8VxROYYUwpT8Cf2iQCVAwUQMXsyqWtaZ42B +sqd5AQHKjAQAvolI30Nyu3IyTfNeCb/DvOe9tlOn/o+VUDNJiE/PuBe1s2Y94a/P +BfcohpKC2kza3NiW6lLTp00OWQsuu0QAPc02vYOyseZWy4y3Phnw60pWzLcFdemT +0GiYS5Xm1o9nAhPFciybn9j1q8UadIlIq0wbqWgdInBT8YI/l4f5sf6JAJUDBRAx +ezKXVS4eLnPSiKUBAc5OBACIXTlKqQC3B53qt7bNMV46m81fuw1PhKaJEI033mCD +ovzyEFFQeOyRXeu25Jg9Bq0Sn37ynISucHSmt2tUD5W0+p1MUGyTqnfqejMUWBzO +v4Xhp6a8RtDdUMBOTtro16iulGiRrCKxzVgEl4i+9Z0ZiE6BWlg5AetoF5n3mGk1 +lw== +=ipyA +-----END PGP PUBLIC KEY BLOCK----- + + + + &a.imp; + + +Warner Losh <imp@village.org> + aka <imp@freebsd.org> +Fingerprint = D4 31 FD B9 F7 90 17 E8 37 C5 E7 7F CF A6 C1 B9 +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: 2.6.2 + +mQCNAzDzTiAAAAEEAK8D7KWEbVFUrmlqhUEnAvphNIqHEbqqT8s+c5f5c2uHtlcH +V4mV2TlUaDSVBN4+/D70oHmZc4IgiQwMPCWRrSezg9z/MaKlWhaslc8YT6Xc1q+o +EP/fAdKUrq49H0QQbkQk6Ks5wKW6v9AOvdmsS6ZJEcet6d9G4dxynu/2qPVhAAUR +tCBNLiBXYXJuZXIgTG9zaCA8aW1wQHZpbGxhZ2Uub3JnPokAlQMFEDM/SK1VLh4u +c9KIpQEBFPsD/1n0YuuUPvD4CismZ9bx9M84y5sxLolgFEfP9Ux196ZSeaPpkA0g +C9YX/IyIy5VHh3372SDWN5iVSDYPwtCmZziwIV2YxzPtZw0nUu82P/Fn8ynlCSWB +5povLZmgrWijTJdnUWI0ApVBUTQoiW5MyrNN51H3HLWXGoXMgQFZXKWYiQCVAwUQ +MzmhkfUVW/uOVC1dAQG3+AP/T1HL/5EYF0ij0yQmNTzt1cLt0b1e3N3zN/wPFFWs +BfrQ+nsv1zw7cEgxLtktk73wBGM9jUIdJu8phgLtl5a0m9UjBq5oxrJaNJr6UTxN +a+sFkapTLT1g84UFUO/+8qRB12v+hZr2WeXMYjHAFUT18mp3xwjW9DUV+2fW1Wag +YDKJAJUDBRAzOYK1s1pi61mfMj0BARBbA/930CHswOF0HIr+4YYUs1ejDnZ2J3zn +icTZhl9uAfEQq++Xor1x476j67Z9fESxyHltUxCmwxsJ1uOJRwzjyEoMlyFrIN4C +dE0C8g8BF+sRTt7VLURLERvlBvFrVZueXSnXvmMoWFnqpSpt3EmN6TNaLe8Cm87a +k6EvQy0dpnkPKokAlQMFEDD9Lorccp7v9qj1YQEBrRUD/3N4cCMWjzsIFp2Vh9y+ +RzUrblyF84tJyA7Rr1p+A7dxf7je3Zx5QMEXosWL1WGnS5vC9YH2WZwv6sCU61gU +rSy9z8KHlBEHh+Z6fdRMrjd9byPf+n3cktT0NhS23oXB1ZhNZcB2KKhVPlNctMqO +3gTYx+Nlo6xqjR+J2NnBYU8p +=7fQV +-----END PGP PUBLIC KEY BLOCK----- + + + + + コアチームメンバ + + + &a.asami; + + +Satoshi Asami <asami@cs.berkeley.edu> + aka <asami@FreeBSD.ORG> +Fingerprint = EB 3C 68 9E FB 6C EB 3F DB 2E 0F 10 8F CE 79 CA + +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: 2.6.2 + +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----- + + + + &a.jmb; + + +Jonathan M. Bresler <jmb@FreeBSD.org> +f16 Key fingerprint16 = 31 57 41 56 06 C1 40 13 C5 1C E3 E5 DC 62 0E FB + +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: PGPfreeware 5.0i for non-commercial use + +mQCNAzG2GToAAAEEANI6+4SJAAgBpl53XcfEr1M9wZyBqC0tzpie7Zm4vhv3hO8s +o5BizSbcJheQimQiZAY4OnlrCpPxijMFSaihshs/VMAz1qbisUYAMqwGEO/T4QIB +nWNo0Q/qOniLMxUrxS1RpeW5vbghErHBKUX9GVhxbiVfbwc4wAHbXdKX5jjdAAUR +tCVKb25hdGhhbiBNLiBCcmVzbGVyIDxqbWJARnJlZUJTRC5PUkc+iQCVAwUQNbtI +gAHbXdKX5jjdAQHamQP+OQr10QRknamIPmuHmFYJZ0jU9XPIvTTMuOiUYLcXlTdn +GyTUuzhbEywgtOldW2V5iA8platXThtqC68NsnN/xQfHA5xmFXVbayNKn8H5stDY +2s/4+CZ06mmJfqYmONF1RCbUk/M84rVT3Gn2tydsxFh4Pm32lf4WREZWRiLqmw+J +AJUDBRA0DfF99RVb+45ULV0BAcZ0BACCydiSUG1VR0a5DBcHdtin2iZMPsJUPRqJ +tWvP6VeI8OFpNWQ4LW6ETAvn35HxV2kCcQMyht1kMD+KEJz7r8Vb94TS7KtZnNvk +2D1XUx8Locj6xel5c/Lnzlnnp7Bp1XbJj2u/NzCaZQ0eYBdP/k7RLYBYHQQln5x7 +BOuiRJNVU4kAlQMFEDQLcShVLh4uc9KIpQEBJv4D/3mDrD0MM9EYOVuyXik3UGVI +8quYNA9ErVcLdt10NjYc16VI2HOnYVgPRag3Wt7W8wlXShpokfC/vCNt7f5JgRf8 +h2a1/MjQxtlD+4/Js8k7GLa53oLon6YQYk32IEKexoLPwIRO4L2BHWa3GzHJJSP2 +aTR/Ep90/pLdAOu/oJDUiQCVAwUQMqyL0LNaYutZnzI9AQF25QP9GFXhBrz2tiWz +2+0gWbpcGNnyZbfsVjF6ojGDdmsjJMyWCGw49XR/vPKYIJY9EYo4t49GIajRkISQ +NNiIz22fBAjT2uY9YlvnTJ9NJleMfHr4dybo7oEKYMWWijQzGjqf2m8wf9OaaofE +KwBX6nxcRbKsxm/BVLKczGYl3XtjkcuJAJUDBRA1ol5TZWCprDT5+dUBATzXA/9h +/ZUuhoRKTWViaistGJfWi26FB/Km5nDQBr/Erw3XksQCMwTLyEugg6dahQ1u9Y5E +5tKPxbB69eF+7JXVHE/z3zizR6VL3sdRx74TPacPsdhZRjChEQc0htLLYAPkJrFP +VAzAlSlm7qd+MXf8fJovQs6xPtZJXukQukPNlhqZ94kAPwMFEDSH/kF4tXKgazlt +bxECfk4AoO+VaFVfguUkWX10pPSSfvPyPKqiAJ4xn8RSIe1ttmnqkkDMhLh00mKj +lLQuSm9uYXRoYW4gTS4gQnJlc2xlciA8Sm9uYXRoYW4uQnJlc2xlckBVU2kubmV0 +PokAlQMFEDXbdSkB213Sl+Y43QEBV/4D/RLJNTrtAqJ1ATxXWv9g8Cr3/YF0GTmx +5dIrJOpBup7eSSmiM/BL9Is4YMsoVbXCI/8TqA67TMICvq35PZU4wboQB8DqBAr+ +gQ8578M7Ekw1OAF6JXY6AF2P8k7hMcVBcVOACELPT/NyPNByG5QRDoNmlsokJaWU +/2ls4QSBZZlb +=zbCw +-----END PGP PUBLIC KEY BLOCK----- + + + + &a.ache; + + +Andrey A. Chernov <ache@FreeBSD.org> + aka <ache@nagual.pp.ru> +Key fingerprint = 33 03 9F 48 33 7B 4A 15 63 48 88 0A C4 97 FD 49 + +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: 2.6.3ia + +mQCNAiqUMGQAAAEEAPGhcD6A2Buey5LYz0sphDLpVgOZc/bb9UHAbaGKUAGXmafs +Dcb2HnsuYGgX/zrQXuCi/wIGtXcZWB97APtKOhFsZnPinDR5n/dde/mw9FnuhwqD +m+rKSL1HlN0z/Msa5y7g16760wHhSR6NoBSEG5wQAHIMMq7Q0uJgpPLZnQjrAAUT +tCVBbmRyZXkgQS4gQ2hlcm5vdiA8YWNoZUBuYWd1YWwucHAucnU+iQCVAwUQM2Ez +u+JgpPLZnQjrAQEyugP8DPnS8ixJ5OeuYgPFQf5sy6l+LrB6hyaS+lgsUPahWjNY +cnaDmfda/q/BV5d4+y5rlQe/pjnYG7/yQuAR3jhlXz8XDrqlBOnW9AtYjDt5rMfJ +aGFTGXAPGZ6k6zQZE0/YurT8ia3qjvuZm3Fw4NJrHRx7ETHRvVJDvxA6Ggsvmr20 +JEFuZHJleSBBLiBDaGVybm92IDxhY2hlQEZyZWVCU0Qub3JnPokAlQMFEDR5uVbi +YKTy2Z0I6wEBLgED/2mn+hw4/3peLx0Sb9LNx//NfCCkVefSf2G9Qwhx6dvwbX7h +mFca97h7BQN4GubU1Z5Ffs6TeamSBrotBYGmOCwvJ6S9WigF9YHQIQ3B4LEjskAt +pcjU583y42zM11kkvEuQU2Gde61daIylJyOxsgpjSWpkxq50fgY2kLMfgl/ftCZB +bmRyZXkgQS4gQ2hlcm5vdiA8YWNoZUBuaWV0enNjaGUubmV0PokAlQMFEDR5svDi +YKTy2Z0I6wEBOTQD/0OTCAXIjuak363mjERvzSkVsNtIH9hA1l0w6Z95+iH0fHrW +xXKT0vBZE0y0Em+S3cotLL0bMmVE3F3D3GyxhBVmgzjyx0NYNoiQjYdi+6g/PV30 +Cn4vOO6hBBpSyI6vY6qGNqcsawuRtHNvK/53MpOfKwSlICEBYQimcZhkci+EtCJB +bmRyZXkgQS4gQ2hlcm5vdiA8YWNoZUBuYWd1YWwucnU+iQCVAwUQMcm5HeJgpPLZ +nQjrAQHwvQP9GdmAf1gdcuayHEgNkc11macPH11cwWjYjzA2YoecFMGV7iqKK8QY +rr1MjbGXf8DAG8Ubfm0QbI8Lj8iG3NgqIru0c72UuHGSn/APfGGG0AtPX5UK/k7B +gI0Ca2po6NA5nrSp8tDsdEz/4gyea84RXl2prtTf5Jj07hflbRstGXK0MkFuZHJl +eSBBLiBDaGVybm92LCBCbGFjayBNYWdlIDxhY2hlQGFzdHJhbC5tc2suc3U+iQCV +AwUQMCsAo5/rGryoL8h3AQHq1QQAidyNFqA9hvrmMcjpY7csJVFlGvj574Wj4GPa +o3pZeuQaMBmsWqaXLYnWU/Aldb6kTz6+nRcQX50zFH0THSPfApwEW7yybSTI5apJ +mWT3qhKN2vmLNg2yNzhqLTzHLD1lH3i1pfQq8WevrNfjLUco5S/VuekTma/osnzC +Cw7fQzCJAJUDBRAwKvwoa1pnjYGyp3kBARihBACoXr3qfG65hFCyKJISmjOvaoGr +anxUIkeDS0yQdTHzhQ+dwB1OhhK15E0Nwr0MKajLMm90n6+Zdb5y/FIjpPriu8dI +rlHrWZlewa88eEDM+Q/NxT1iYg+HaKDAE171jmLpSpCL0MiJtO0i36L3ekVD7Hv8 +vffOZHPSHirIzJOZTYkAlQMFEDAau6zFLUdtDb+QbQEBQX8D/AxwkYeFaYxZYMFO +DHIvSk23hAsjCmUA2Uil1FeWAusb+o8xRfPDc7TnosrIifJqbF5+fcHCG5VSTGlh +Bhd18YWUeabf/h9O2BsQX55yWRuB2x3diJ1xI/VVdG+rxlMCmE4ZR1Tl9x+Mtun9 +KqKVpB39VlkCBYQ3hlgNt/TJUY4riQCVAwUQMBHMmyJRltlmbQBRAQFQkwP/YC3a +hs3ZMMoriOlt3ZxGNUUPTF7rIER3j+c7mqGG46dEnDB5sUrkzacpoLX5sj1tGR3b +vz9a4vmk1Av3KFNNvrZZ3/BZFGpq3mCTiAC9zsyNYQ8L0AfGIUO5goCIjqwOTNQI +AOpNsJ5S+nMAkQB4YmmNlI6GTb3D18zfhPZ6uciJAJUCBRAwD0sl4uW74fteFRkB +AWsAA/9NYqBRBKbmltQDpyK4+jBAYjkXBJmARFXKJYTlnTgOHMpZqoVyW96xnaa5 +MzxEiu7ZWm5oL10QDIp1krkBP2KcmvfSMMHb5aGCCQc2/P8NlfXAuHtNGzYiI0UA +Iwi8ih/S1liVfvnqF9uV3d3koE7VsQ9OA4Qo0ZL2ggW+/gEaYIkAlQMFEDAOz6qx +/IyHe3rl4QEBIvYD/jIr8Xqo/2I5gncghSeFR01n0vELFIvaF4cHofGzyzBpYsfA ++6pgFI1IM+LUF3kbUkAY/2uSf9U5ECcaMCTWCwVgJVO+oG075SHEM4buhrzutZiM +1dTyTaepaPpTyRMUUx9ZMMYJs7sbqLId1eDwrJxUPhrBNvf/w2W2sYHSY8cdiQCV +AwUQMAzqgHcdkq6JcsfBAQGTxwQAtgeLFi2rhSOdllpDXUwz+SS6bEjFTWgRsWFM +y9QnOcqryw7LyuFmWein4jasjY033JsODfWQPiPVNA3UEnXVg9+n8AvNMPO8JkRv +Cn1eNg0VaJy9J368uArio93agd2Yf/R5r+QEuPjIssVk8hdcy/luEhSiXWf6bLMV +HEA0J+OJAJUDBRAwDUi+4mCk8tmdCOsBAatBBACHB+qtW880seRCDZLjl/bT1b14 +5po60U7u6a3PEBkY0NA72tWDQuRPF/Cn/0+VdFNxQUsgkrbwaJWOoi0KQsvlOm3R +rsxKbn9uvEKLxExyKH3pxp76kvz/lEWwEeKvBK+84Pb1lzpG3W7u2XDfi3VQPTi3 +5SZMAHc6C0Ct/mjNlYkAlQMFEDAMrPD7wj+NsTMUOQEBJckD/ik4WsZzm2qOx9Fw +erGq7Zwchc+Jq1YeN5PxpzqSf4AG7+7dFIn+oe6X2FcIzgbYY+IfmgJIHEVjDHH5 ++uAXyb6l4iKc89eQawO3t88pfHLJWbTzmnvgz2cMrxt94HRvgkHfvcpGEgbyldq6 +EB33OunazFcfZFRIcXk1sfyLDvYE +=1ahV +-----END PGP PUBLIC KEY BLOCK----- + + + + &a.jkh; + + +Jordan K. Hubbard <jkh@FreeBSD.org> +Fingerprint = 3C F2 27 7E 4A 6C 09 0A 4B C9 47 CD 4F 4D 0B 20 + +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: 2.6.3ia + +mQCNAzFjX0IAAAEEAML+nm9/kDNPp43ZUZGjYkm2QLtoC1Wxr8JulZXqk7qmhYcQ +jvX+fyoriJ6/7ZlnLe2oG5j9tZOnRLPvMaz0g9CpW6Dz3nkXrNPkmOFV9B8D94Mk +tyFeRJFqnkCuqBj6D+H8FtBwEeeTecSh2tJ0bZZTXnAMhxeOdvUVW/uOVC1dAAUR +tCNKb3JkYW4gSy4gSHViYmFyZCA8amtoQEZyZWVCU0Qub3JnPokBFQMFEDXCTXQM +j46yp4IfPQEBwO8IAIN0J09AXBf86dFUTFGcAMrEQqOF5IL+KGorAjzuYxERhKfD +ZV7jA+sCQqxkWfcVcE20kVyVYqzZIkio9a5zXP6TwA247JkPt54S1PmMDYHNlRIY +laXlNoji+4q3HP2DfHqXRT2859rYpm/fG/v6pWkos5voPKcZ2OFEp9W+Ap88oqw+ +5rx4VetZNJq1Epmis4INj6XqNqj85+MOOIYE+f445ohDM6B/Mxazd6cHFGGIR+az +VjZ6lCDMLjzhB5+FqfrDLYuMjqkMTR5z9DL+psUvPlCkYbQ11NEWtEmiIWjUcNJN +GCxGzv5bXk0XPu3ADwbPkFE2usW1cSM7AQFiwuyJAJUDBRAxe+Q9a1pnjYGyp3kB +AV7XA/oCSL/Cc2USpQ2ckwkGpyvIkYBPszIcabSNJAzm2hsU9Qa6WOPxD8olDddB +uJNiW/gznPC4NsQ0N8Zr4IqRX/TTDVf04WhLmd8AN9SOrVv2q0BKgU6fLuk979tJ +utrewH6PR2qBOjAaR0FJNk4pcYAHeT+e7KaKy96YFvWKIyDvc4kAlQMFEDF8ldof +f6kIA1j8vQEBDH4D/0Zm0oNlpXrAE1EOFrmp43HURHbij8n0Gra1w9sbfo4PV+/H +U8ojTdWLy6r0+prH7NODCkgtIQNpqLuqM8PF2pPtUJj9HwTmSqfaT/LMztfPA6PQ +csyT7xxdXl0+4xTDl1avGSJfYsI8XCAy85cTs+PQwuyzugE/iykJO1Bnj/paiQCV +AwUQMXvlBvUVW/uOVC1dAQF2fQP/RfYC6RrpFTZHjo2qsUHSRk0vmsYfwG5NHP5y +oQBMsaQJeSckN4n2JOgR4T75U4vS62aFxgPLJP3lOHkU2Vc7xhAuBvsbGr5RP8c5 +LvPOeUEyz6ZArp1KUHrtcM2iK1FBOmY4dOYphWyWMkDgYExabqlrAq7FKZftpq/C +BiMRuaw= +=C/Jw +-----END PGP PUBLIC KEY BLOCK----- + + + + &a.phk; + + +Poul-Henning Kamp <phk@FreeBSD.org> +Fingerprint = A3 F3 88 28 2F 9B 99 A2 49 F4 E2 FA 5A 78 8B 3E + +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: 2.6.3ia + +mQCNAzAdpMIAAAEEALHDgrFUwhZtb7PbXg3upELoDVEUPFRwnmpJH1rRqyROUGcI +ooVe7u+FQlIs5OsXK8ECs/5Wpe2UrZSzHvjwBYOND5H42YtI5UULZLRCo5bFfTVA +K9Rpo5icfTsYihrzU2nmnycwFMk+jYXyT/ZDYWDP/BM9iLjj0x9/qQgDWPy9AAUR +tCNQb3VsLUhlbm5pbmcgS2FtcCA8cGhrQEZyZWVCU0Qub3JnPokAlQMFEDQQ0aZ1 +u244dqP3sQEBu4ID/jXFFeJgs2MdTDNOZM/FbfDhI4qxAbYUsqS3+Ra16yd8Wd/A +jV+IHJE2NomFWl8UrUjCGinXiwzPgK1OfFJrS9Og1wQLvAl0X84BA8MTP9BQr4w7 +6I/RbksgUSrVCIO8MJwlydjSPocWGBeXlVjbZxXzyuJk7H+TG+zuI5BuBcNIiQCV +AwUQMwYr2rNaYutZnzI9AQHiIQP/XxtBWFXaBRgVLEhRNpS07YdU+LsZGlLOZehN +9L4UnJFHQQPNOpMey2gF7Y95aBOw5/1xS5vlQpwmRFCntWsm/gqdzK6rulfr1r5A +y94LO5TAC6ucNu396Y4vo1TyD1STnRC466KlvmtQtAtFGgXlORWLL9URLzcRFd1h +D0yXd9aJAJUDBRAxfo19a1pnjYGyp3kBAQqyA/4v64vP3l1F0Sadn6ias761hkz/ +SMdTuLzILmofSCC4o4KWMjiWJHs2Soo41QlZi1+xMHzV32JKiwFlGtPHqL+EHyXy +Q4H3vmf9/1KF+0XCaMtgI0wWUMziPSTJK8xXbRRmMDK/0F4TnVVaUhnmf+h5K7O6 +XdmejDTa0X/NWcicmIkAlQMFEDF8lef1FVv7jlQtXQEBcnwD/0ro1PpUtlkLmreD +tsGTkNa7MFLegrYRvDDrHOwPZH152W2jPUncY+eArQJakeHiTDmJNpFagLZglhE0 +bqJyca+UwCXX+6upAclWHEBMg2byiWMMqyPVEEnpUoHM1sIkgdNWlfQAmipRBfYh +2LyCgWvR8CbtwPYIFvUmGgB3MR87iQCVAwUQMUseXB9/qQgDWPy9AQGPkwP/WEDy +El2Gkvua9COtMAifot2vTwuvWWpNopIEx0Ivey4aVbRLD90gGCJw8OGDEtqFPcNV +8aIiy3fYVKXGZZjvCKd7zRfhNmQn0eLDcymq2OX3aPrMc2rRlkT4Jx425ukR1gsO +qiQAgw91aWhY8dlw/EKzk8ojm52x4VgXaBACMjaJAJUDBRAxOUOg72G56RHVjtUB +AbL4A/9HOn5Qa0lq9tKI/HkSdc5fGQD/66VdCBAb292RbB7CS/EM07MdbcqRRYIa +0+0gwQ3OdsWPdCVgH5RIhp/WiC+UPkR1cY8N9Mg2kTwJfZZfNqN+BgWlgRMPN27C +OhYNl8Q33Nl9CpBLrZWABF44jPeT0EvvTzP/5ZQ7T75EsYKYiYkAlQMFEDDmryQA +8tkJ67sbQQEBPdsEALCj6v1OBuJLLJTlxmmrkqAZPVzt5QdeO3Eqa2tcPWcU0nqP +vHYMzZcZ7oFg58NZsWrhSQQDIB5e+K65Q/h6dC7W/aDskZd64jxtEznX2kt0/MOr +8OdsDis1K2f9KQftrAx81KmVwW4Tqtzl7NWTDXt44fMOtibCwVq8v2DFkTJy +=JKbP +-----END PGP PUBLIC KEY BLOCK----- + + + + &a.rich; + + +Rich Murphey <rich@FreeBSD.org> +fingerprint = AF A0 60 C4 84 D6 0C 73 D1 EF C0 E9 9D 21 DB E4 + +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: 2.6.2 + +mQCNAy97V+MAAAEEALiNM3FCwm3qrCe81E20UOSlNclOWfZHNAyOyj1ahHeINvo1 +FBF2Gd5Lbj0y8SLMno5yJ6P4F4r+x3jwHZrzAIwMs/lxDXRtB0VeVWnlj6a3Rezs +wbfaTeSVyh5JohEcKdoYiMG5wjATOwK/NAwIPthB1RzRjnEeer3HI3ZYNEOpAAUR +tCRSaWNoIE11cnBoZXkgPHJpY2hAbGFtcHJleS51dG1iLmVkdT6JAJUDBRAve15W +vccjdlg0Q6kBAZTZBACcNd/LiVnMFURPrO4pVRn1sVQeokVX7izeWQ7siE31Iy7g +Sb97WRLEYDi686osaGfsuKNA87Rm+q5F+jxeUV4w4szoqp60gGvCbD0KCB2hWraP +/2s2qdVAxhfcoTin/Qp1ZWvXxFF7imGA/IjYIfB42VkaRYu6BwLEm3YAGfGcSw== +=QoiM +-----END PGP PUBLIC KEY BLOCK----- + + + + &a.jdp; + + +John D. Polstra <jdp@polstra.com> +Fingerprint = 54 3A 90 59 6B A4 9D 61 BF 1D 03 09 35 8D F6 0D + +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: 2.6.2 + +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----- + + + + &a.guido; + + +Guido van Rooij <guido@gvr.win.tue.nl> +Fingerprint = 16 79 09 F3 C0 E4 28 A7 32 62 FA F6 60 31 C0 ED + +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: 2.6.2 + +mQCNAzGeO84AAAEEAKKAY91Na//DXwlUusr9GVESSlVwVP6DyH1wcZXhfN1fyZHq +SwhMCEdHYoojQds+VqD1iiZQvv1RLByBgj622PDAPN4+Z49HjGs7YbZsUNuQqPPU +wRPpP6ty69x1hPKq1sQIB5MS4radpCM+4wbZbhxv7l4rP3RWUbNaYutZnzI9AAUR +tCZHdWlkbyB2YW4gUm9vaWogPGd1aWRvQGd2ci53aW4udHVlLm5sPokAlQMFEDMG +Hcgff6kIA1j8vQEBbYgD/jm9xHuUuY+iXDkOzpCXBYACYEZDV913MjtyBAmaVqYo +Rh5HFimkGXe+rCo78Aau0hc57fFMTsJqnuWEqVt3GRq28hSK1FOZ7ni9/XibHcmN +rt2yugl3hYpClijo4nrDL1NxibbamkGW/vFGcljS0jqXz6NDVbGx5Oo7HBByxByz +iQCVAwUQMhmtVjt/x7zOdmsfAQFuVQQApsVUTigT5YWjQA9Nd5Z0+a/oVtZpyw5Z +OljLJP3vqJdMa6TidhfcatjHbFTve5x1dmjFgMX/MQTd8zf/+Xccy/PX4+lnKNpP +eSf1Y4aK+E8KHmBGd6GzX6CIboyGYLS9e3kGnN06F2AQtaLyJFgQ71wRaGuyKmQG +FwTn7jiKb1aJAJUDBRAyEOLXPt3iN6QQUSEBATwQA/9jqu0Nbk154+Pn+9mJX/YT +fYR2UqK/5FKCqgL5Nt/Deg2re0zMD1f8F9Dj6vuAAxq8hnOkIHKlWolMjkRKkzJi +mSPEWl3AuHJ31k948J8it4f8kq/o44usIA2KKVMlI63Q/rmNdfWCyiYQEVGcRbTm +GTdZIHYCOgV5dOo4ebFqgYkAlQMFEDIE1nMEJn15jgpJ0QEBW6kEAKqN8XSgzTqf +CrxFXT07MlHhfdbKUTNUoboxCGCLNW05vf1A8F5fdE5i14LiwkldWIzPxWD+Sa3L +fNPCfCZTaCiyGcLyTzVfBHA18MBAOOX6JiTpdcm22jLGUWBf/aJK3yz/nfbWntd/ +LRHysIdVp29lP5BF+J9/Lzbb/9LxP1taiQCVAwUQMgRXZ44CzbsJWQz9AQFf7gP/ +Qa2FS5S6RYKG3rYanWADVe/ikFV2lxuM1azlWbsmljXvKVWGe6cV693nS5lGGAjx +lbd2ADwXjlkNhv45HLWFm9PEveO9Jjr6tMuXVt8N2pxiX+1PLUN9CtphTIU7Yfjn +s6ryZZfwGHSfIxNGi5ua2SoXhg0svaYnxHxXmOtH24iJAJUDBRAyAkpV8qaAEa3W +TBkBARfQBAC+S3kbulEAN3SI7/A+A/dtl9DfZezT9C4SRBGsl2clQFMGIXmMQ/7v +7lLXrKQ7U2zVbgNfU8smw5h2vBIL6f1PyexSmc3mz9JY4er8KeZpcf6H0rSkHl+i +d7TF0GvuTdNPFO8hc9En+GG6QHOqbkB4NRZ6cwtfwUMhk2FHXBnjF4kAlQMFEDH5 +FFukUJAsCdPmTQEBe74EAMBsxDnbD9cuI5MfF/QeTNEG4BIVUZtAkDme4Eg7zvsP +d3DeJKCGeNjiCWYrRTCGwaCWzMQk+/+MOmdkI6Oml+AIurJLoHceHS9jP1izdP7f +N2jkdeJSBsixunbQWtUElSgOQQ4iF5kqwBhxtOfEP/L9QsoydRMR1yB6WPD75H7V +iQCVAwUQMZ9YNGtaZ42Bsqd5AQH0PAQAhpVlAc3ZM/KOTywBSh8zWKVlSk3q/zGn +k7hJmFThnlhH1723+WmXE8aAPJi+VXOWJUFQgwELJ6R8jSU2qvk2m1VWyYSqRKvc +VRQMqT2wjss0GE1Ngg7tMrkRHT0il7E2xxIb8vMrIwmdkbTfYqBUhhGnsWPHZHq7 +MoA1/b+rK7CJAJUDBRAxnvXh3IDyptUyfLkBAYTDA/4mEKlIP/EUX2Zmxgrd/JQB +hqcQlkTrBAaDOnOqe/4oewMKR7yaMpztYhJs97i03Vu3fgoLhDspE55ooEeHj0r4 +cOdiWfYDsjSFUYSPNVhW4OSruMA3c29ynMqNHD7hpr3rcCPUi7J2RncocOcCjjK2 +BQb/9IAUNeK4C9gPxMEZLokAlQMFEDGeO86zWmLrWZ8yPQEBEEID/2fPEUrSX3Yk +j5TJPFZ9MNX0lEo7AHYjnJgEbNI4pYm6C3PnMlsYfCSQDHuXmRQHAOWSdwOLvCkN +F8eDaF3M6u0urgeVJ+KVUnTz2+LZoZs12XSZKCte0HxjbvPpWMTTrYyimGezH79C +mgDVjsHaYOx3EXF0nnDmtXurGioEmW1J +=mSvM +-----END PGP PUBLIC KEY BLOCK----- + + + + &a.peter; + + +Peter Wemm <peter@FreeBSD.org> + aka <peter@spinner.dialix.com> + aka <peter@haywire.dialix.com> + aka <peter@perth.dialix.oz.au> +Key fingerprint = 47 05 04 CA 4C EE F8 93 F6 DB 02 92 6D F5 58 8A + +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: 2.6.3ia + +mQCNAy9/FJwAAAEEALxs9dE9tFd0Ru1TXdq301KfEoe5uYKKuldHRBOacG2Wny6/ +W3Ill57hOi2+xmq5X/mHkapywxvy4cyLdt31i4GEKDvxpDvEzAYcy2n9dIup/eg2 +kEhRBX9G5k/LKM4NQsRIieaIEGGgCZRm0lINqw495aZYrPpO4EqGN2HYnOMZAAUT +tCVQZXRlciBXZW1tIDxwZXRlckBoYXl3aXJlLmRpYWxpeC5jb20+iQCVAwUQMwWT +cXW7bjh2o/exAQEFkQP+LIx5zKlYp1uR24xGApMFNrNtjh+iDIWnxxb2M2Kb6x4G +9z6OmbUCoDTGrX9SSL2Usm2RD0BZfyv9D9QRWC2TSOPkPRqQgIycc11vgbLolJJN +eixqsxlFeKLGEx9eRQCCbo3dQIUjc2yaOe484QamhsK1nL5xpoNWI1P9zIOpDiGJ +AJUDBRAxsRPqSoY3Ydic4xkBAbWLA/9q1Fdnnk4unpGQsG31Qbtr4AzaQD5m/JHI +4gRmSmbj6luJMgNG3fpO06Gd/Z7uxyCJB8pTst2a8C/ljOYZxWT+5uSzkQXeMi5c +YcI1sZbUpkHtmqPW623hr1PB3ZLA1TIcTbQW+NzJsxQ1Pc6XG9fGkT9WXQW3Xhet +AP+juVTAhLQlUGV0ZXIgV2VtbSA8cGV0ZXJAcGVydGguZGlhbGl4Lm96LmF1PokA +lQMFEDGxFCFKhjdh2JzjGQEB6XkD/2HOwfuFrnQUtdwFPUkgtEqNeSr64jQ3Maz8 +xgEtbaw/ym1PbhbCk311UWQq4+izZE2xktHTFClJfaMnxVIfboPyuiSF99KHiWnf +/Gspet0S7m/+RXIwZi1qSqvAanxMiA7kKgFSCmchzas8TQcyyXHtn/gl9v0khJkb +/fv3R20btB5QZXRlciBXZW1tIDxwZXRlckBGcmVlQlNELm9yZz6JAJUDBRAxsRJd +SoY3Ydic4xkBAZJUA/4i/NWHz5LIH/R4IF/3V3LleFyMFr5EPFY0/4mcv2v+ju9g +brOEM/xd4LlPrx1XqPeZ74JQ6K9mHR64RhKR7ZJJ9A+12yr5dVqihe911KyLKab9 +4qZUHYi36WQu2VtLGnw/t8Jg44fQSzbBF5q9iTzcfNOYhRkSD3BdDrC3llywO7Ql +UGV0ZXIgV2VtbSA8cGV0ZXJAc3Bpbm5lci5kaWFsaXguY29tPokAlQMFEDGxEi1K +hjdh2JzjGQEBdA4EAKmNFlj8RF9HQsoI3UabnvYqAWN5wCwEB4u+Zf8zq6OHic23 +TzoK1SPlmSdBE1dXXQGS6aiDkLT+xOdeewNs7nfUIcH/DBjSuklAOJzKliXPQW7E +kuKNwy4eq5bl+j3HB27i+WBXhn6OaNNQY674LGaR41EGq44Wo5ATcIicig/z +=gv+h +-----END PGP PUBLIC KEY BLOCK----- + + + + &a.joerg; + + +Type Bits/KeyID Date User ID +pub 1024/76A3F7B1 1996/04/27 Joerg Wunsch <joerg_wunsch@uriah.heep.sax.de> + Key fingerprint = DC 47 E6 E4 FF A6 E9 8F 93 21 E0 7D F9 12 D6 4E + Joerg Wunsch <joerg_wunsch@interface-business.de> + Joerg Wunsch <j@uriah.heep.sax.de> + Joerg Wunsch <j@interface-business.de> + +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: 2.6.3ia + +mQCNAzGCFeAAAAEEAKmRBU2Nvc7nZy1Ouid61HunA/5hF4O91cXm71/KPaT7dskz +q5sFXvPJPpawwvqHPHfEbAK42ZaywyFp59L1GaYj87Pda+PlAYRJyY2DJl5/7JPe +ziq+7B8MdvbX6D526sdmcR+jPXPbHznASjkx9DPmK+7TgFujyXW7bjh2o/exAAUR +tC1Kb2VyZyBXdW5zY2ggPGpvZXJnX3d1bnNjaEB1cmlhaC5oZWVwLnNheC5kZT6J +AJUDBRA0FFkBs1pi61mfMj0BAfDCA/oCfkjrhvRwRCpSL8klJ1YDoUJdmw+v4nJc +pw3OpYXbwKOPLClsE7K3KCQscHel7auf91nrekAwbrXv9Clp0TegYeAQNjw5vZ9f +L6UZ5l3fH8E2GGA7+kqgNWs1KxAnG5GdUvJ9viyrWm8dqWRGo+loDWlZ12L2OgAD +fp7jVZTI1okAlQMFEDQPrLoff6kIA1j8vQEB2XQEAK/+SsQPCT/X4RB/PBbxUr28 +GpGJMn3AafAaA3plYw3nb4ONbqEw9tJtofAn4UeGraiWw8nHYR2DAzoAjR6OzuX3 +TtUV+57BIzrTPHcNkb6h8fPuHU+dFzR+LNoPaGJsFeov6w+Ug6qS9wa5FGDAgaRo +LHSyBxcRVoCbOEaS5S5EiQCVAwUQM5BktWVgqaw0+fnVAQGKPwP+OiWho3Zm2GKp +lEjiZ5zx3y8upzb+r1Qutb08jr2Ewja04hLg0fCrt6Ad3DoVqxe4POghIpmHM4O4 +tcW92THQil70CLzfCxtfUc6eDzoP3krD1/Gwpm2hGrmYA9b/ez9+r2vKBbnUhPmC +glx5pf1IzHU9R2XyQz9Xu7FI2baOSZqJAJUDBRAyCIWZdbtuOHaj97EBAVMzA/41 +VIph36l+yO9WGKkEB+NYbYOz2W/kyi74kXLvLdTXcRYFaCSZORSsQKPGNMrPZUoL +oAKxE25AoCgl5towqr/sCcu0A0MMvJddUvlQ2T+ylSpGmWchqoXCN7FdGyxrZ5zz +xzLIvtcio6kaHd76XxyJpltCASupdD53nEtxnu8sRrQxSm9lcmcgV3Vuc2NoIDxq +b2VyZ193dW5zY2hAaW50ZXJmYWNlLWJ1c2luZXNzLmRlPokAlQMFEDIIhfR1u244 +dqP3sQEBWoID/RhBm+qtW+hu2fqAj9d8CVgEKJugrxZIpXuCKFvO+bCgQtogt9EX ++TJh4s8UUdcFkyEIu8CT2C3Rrr1grvckfxvrTgzSzvtYyv1072X3GkVY+SlUMBMA +rdl1qNW23oT7Q558ajnsaL065XJ5m7HacgTTikiofYG8i1s7TrsEeq6PtCJKb2Vy +ZyBXdW5zY2ggPGpAdXJpYWguaGVlcC5zYXguZGU+iQCVAwUQMaS91D4gHQUlG9CZ +AQGYOwQAhPpiobK3d/fz+jWrbQgjkoO+j39glYGXb22+6iuEprFRs/ufKYtjljNT +NK3B4DWSkyIPawcuO4Lotijp6jke2bsjFSSashGWcsJlpnwsv7EeFItT3oWTTTQQ +ItPbtNyLW6M6xB+jLGtaAvJqfOlzgO9BLfHuA2LY+WvbVW447SWJAJUDBRAxqWRs +dbtuOHaj97EBAXDBA/49rzZB5akkTSbt/gNd38OJgC+H8N5da25vV9dD3KoAvXfW +fw7OxIsxvQ/Ab+rJmukrrWxPdsC+1WU1+1rGa4PvJp/VJRDes2awGrn+iO7/cQoS +IVziC27JpcbvjLvLVcBIiy1yT/RvJ+87a3jPRHt3VFGcpFh4KykxxSNiyGygl4kA +lQMFEDGCUB31FVv7jlQtXQEB5KgD/iIJZe5lFkPr2B/Cr7BKMVBot1/JSu05NsHg +JZ3uK15w4mVtNPZcFi/dKbn+qRM6LKDFe/GF0HZD/ZD1FJt8yQjzF2w340B+F2GG +EOwnClqZDtEAqnIBzM/ECQQqH+6Bi8gpkFZrFgg5eON7ikqmusDnOlYStM/CBfgp +SbR8kDmFtCZKb2VyZyBXdW5zY2ggPGpAaW50ZXJmYWNlLWJ1c2luZXNzLmRlPokA +lQMFEDHioSdlYKmsNPn51QEByz8D/10uMrwP7MdaXnptd1XNFhpaAPYTVAOcaKlY +OGI/LLR9PiU3FbqXO+7INhaxFjBxa0Tw/p4au5Lq1+Mx81edHniJZNS8tz3I3goi +jIC3+jn2gnVAWnK5UZUTUVUn/JLVk/oSaIJNIMMDaw4J9xPVVkb+Fh1A+XqtPsVa +YESrNp0+iQCVAwUQMwXkzcdm8Q+/vPRJAQEA4QQAgNNX1HFgXrMetDb+w6yEGQDk +JCDAY9b6mA2HNeKLQAhsoZl4HwA1+iuQaCgo3lyFC+1Sf097OUTs74z5X1vCedqV +oFw9CxI3xuctt3pJCbbN68flOlnq0WdYouWWGlFwLlh5PEy//VtwX9lqgsizlhzi +t+fX6BT4BgKi5baDhrWJAJUDBRAyCKveD9eCJxX4hUkBAebMA/9mRPy6K6i7TX2R +jUKSl2p5oYrXPk12Zsw4ijuktslxzQhOCyMSCGK2UEC4UM9MXp1H1JZQxN/DcfnM +7VaUt+Ve0wZ6DC9gBSHJ1hKVxHe5XTj26mIr4rcXNy2XEDMK9QsnBxIAZnBVTjSO +LdhqqSMp3ULLOpBlRL2RYrqi27IXr4kAlQMFEDGpbnd1u244dqP3sQEBJnQD/RVS +Azgf4uorv3fpbosI0LE3LUufAYGBSJNJnskeKyudZkNkI5zGGDwVneH/cSkKT4OR +ooeqcTBxKeMaMuXPVl30QahgNwWjfuTvl5OZ8orsQGGWIn5FhqYXsKkjEGxIOBOf +vvlVQ0UbcR0N2+5F6Mb5GqrXZpIesn7jFJpkQKPU +=97h7 +-----END PGP PUBLIC KEY BLOCK----- + + + + + 開発者 + + + &a.wosch; + + +Type Bits/KeyID Date User ID +pub 1024/2B7181AD 1997/08/09 Wolfram Schneider <wosch@FreeBSD.org> +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+iQCVAwUQNmrS +AzmN/mkrcYGtAQFQjAP8CthNueur8XDAZqC5q6NQcDs0PqqQ+raTUfQTv6Km6ykf +UzdpDlBoRC+CCyHfBfC5zo9N6mB7iV7qS1PljrdIh6VAwHxJN9iopB/x6+nsBvmy +0YSNt7eyfFrIVegCJvd4ALz5JBV8ZstznOwo8RAhDD0gX58F8nDhgWjy62JekGK0 +IldvbGZyYW0gU2NobmVpZGVyIDx3b3NjaEBhcGZlbC5kZT6JARUDBRA2Z9ZcCMks +sk6wLt0BAQBICACcTiDZ/AyYWRDLXsBOK+WMRoNk3+bQZ1cdy11nwJo+taT/389M +0r5TrEJ7CogpXC2rFUExTVWldSFZd8A1YIHtrTsP7YauUH0nA7k0wUnqDRYj8YJR +eMLFvc1OQ2y+mkvxF2BzzBzh/bcYbgJdWCB1MPahSNQfkGXtp+A5PjEs8Cp4+FLu +EUFScyxsD3g5/E+0d7mirJpe3pxcf9KCmFGHM89mrTKODQR/7N8dVqa9npeXZotm +ZK8Jz+tvRKFgNiLf2XL048+IE8ZtJXDYaDzTirHdcAqJMWQuxthCdG3ta4I+w5WM +WR8JtBLfVNpyU7LN6dl0IB7O5sYhyskApmMwiQCVAwUQM+z5oTmN/mkrcYGtAQGU +gAP/cJGro/SbV+L19s/Gem26KmegUH+bfIXoh2EzyRJ7heVdybu1LrSDFApmAE7d +sMDlAA1wd2XjVWD3nIEBl6k+J7qJB4ACjKVGs414jLpdKGPHdLRYqYDj4LyQFMv6 +/BpSoX1gnWp6xlC2xeWRan9ns3XZGS55UBVDvBE/B+fPoTe0JFdvbGZyYW0gU2No +bmVpZGVyIDxzY2huZWlkZXJAemliLmRlPokAlQMFEDZq0dI5jf5pK3GBrQEB38QD +/3NYyRPIejtXXq/okdDRyhWmA8cv0KG6gEupKCQKa7ep/OZTw/KxrN3ZOS8zlPod +tEn8mol+4SvY5AgSMdjQ0jTd1JdFcMKFnbJJrJ3b9IpwCqbkXy25rTUcQn9ICP47 +rFKC4qR/Ucrg5YVVhQ3pVJX6XuO2XvuG7euHAQNXV3e2 +=EpJQ +-----END PGP PUBLIC KEY BLOCK----- + + + + &a.brian; + + +Type Bits/KeyID Date User ID +pub 1024/666A7421 1997/04/30 Brian Somers <brian@Awfulhak.org> + Key fingerprint = 2D 91 BD C2 94 2C 46 8F 8F 09 C4 FC AD 12 3B 21 + +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: 2.6.3ia + +mQCNAzNmogUAAAEEALdsjVsV2dzO8UU4EEo7z3nYuvB2Q6YJ8sBUYjB8/vfR5oZ9 +7aEQjgY5//pXvS30rHUB9ghk4kIFSljzeMudE0K2zH5n2sxpLbBKWZRDLS7xnrDC +I3j9CNKwQBzMPs0fUT46gp96nf1X8wPiJXkDUEia/c0bRbXlLw7tvOdmanQhAAUR +tCFCcmlhbiBTb21lcnMgPGJyaWFuQGF3ZnVsaGFrLm9yZz6JAJUDBRAzbedc77Ox +BWZTbW0BAVtFA/42QelA3RBXYUtIcYGob+QsWkA1kGyBKQGPSS9coHdUVjClBRl3 +UZFmZhxAODb7cBRXmpvx2ZuMrhn/MpXTMqPOJaE3FYm+5SoeArphsRU+T8XofxfL +vRHkM3JURUjIVZdAQNvxxBso8NJG5KayP0Q96Vw+3sEwFK49jt14RCJy4IkAlQMF +EDNzvb1sq+iWcxFJBQEBfZwD/R3KNFf9ype9Dea8j1YIeNZ1E3e03en1I8fMj6Em +S1/L1WfFzMnfFCxZs7JgPtkBuB3CqP8f+LOdDt6PHPqNakmI9E6fiuGfJZ3jFZYA +TXa0XKuIoxIJNKhqkpbF8ixJZFTxFwAAwVYM3+sqr4qQ8FzVc5entxjyxPFNkwJw +RWV+iQCVAwUQM2aiBQ7tvOdmanQhAQE7LgQAiN6Hz+zd8bh0nO6VizbJxWFRHPbr +QWnJXGoMYyy88DyszAXC4zRshlyGUDQdHeP/1DFCXDEu78GfDCLaJ1bm25yVR7kL +xDZaEUQEbWqxfiwuzizAjkaxrW7dBbWILwWqrYF5TXClw+oUU/oIUW4t6t+GpAO1 +8PLYhSMXVYErrAA= +=EdyZ +-----END PGP PUBLIC KEY BLOCK----- + + + + + diff --git a/ja/handbook/policies/chapter.sgml b/ja/handbook/policies/chapter.sgml new file mode 100644 index 0000000000..dfc9a09cb4 --- /dev/null +++ b/ja/handbook/policies/chapter.sgml @@ -0,0 +1,368 @@ + + + + ソースツリーのガイドラインおよび方針 + + 原作: &a.phk;. + + 訳者: &a.jp.mihoko; + 6 September 1996 . + + 本章は, FreeBSD + のソースツリーについてのさまざまなガイドラインや + ポリシーについて書かれています. + + + Makefile 中の <makevar>MAINTAINER</makevar> + + 1996年6月. + + FreeBSD 配布物の特定の部分が, 一人の人やグループによって保守 + されている場合は, ソースツリーの当該 + Makefile に + + +MAINTAINER= email-addresses + + が付け加えられています. これを記述することによって, + この部分が誰 + に保守管理されているかを世界中のユーザに + 伝えることができます. + + この意味は次のとおりです: + + 保守担当者がそのコードを所有し, そのコードに対する責任を持っ + ています. すなわち, + その人がそのコードに関するバグの修正やトラブル報告 + に対する回答をします. また, + そのコードが寄贈ソフトウェアの場合には, そのソフトウェアの + 新しいバージョンに適切に追従させる作業をその人が行い + ます. + + 保守担当者が決められているディレクトリに対して + 変更をおこなう場合は, 変更をおこなう前に, + その変更内容を保守担当者に送って, + 保守担当者にレビューをしてもらってください. 保守担当者が, + 電子メールに一定期間応答しない場合にのみ, + 保守担当者がレビューすることなしに, + 変更をおこなうことが認められます. しかしながら, + そのような場合でも可能な限り, 変更点を第三者にレビュー + してもらうようにしてください. + + もちろん, この義務を引き受けることができない人やグループを + 保守管理者として追加することはできません. また, + 保守管理者がソースツリー管理者 ("committer") である必要は + ありません. + + + + 寄贈ソフトウェア + + 原作: &a.phk; and &a.obrien;. + 訳者: &a.jp.mihoko; + + 1996年6月. + + FreeBSD 配布物のうちのいくつかのソフトウェアは FreeBSD + プロジェクト 以外のところで保守されています. 歴史的な経緯から, + 私たちはこれを 寄贈 ソフトウェアと + 呼んでいます. perl や gcc, patch などがその例です. + + ここ数年来, この種のソフトウェアの取り扱いには, + さまざまな方法が 取られてきましたが, + どの方法にもいくつかの利点と欠点があります. + これまで欠点のない明確な方法はありませんでした. + + 議論した結果, これらの方法のうちの一つが + “公式な”方法として選択され ました. その方法が, 今後, + この種のソフトウェアを取り込む場合に, 使用 されます. その上, + この方法では, だれもが(cvs + にアクセス権のない人でさえ)“公式” + バージョンのソースに対する差分を簡単に得ることができます. + これは古い方法にはなかった大きな利点です. ですから, + 既存の寄贈ソフトウェアも, + この方法に収束していくことを強く望んでいます. + この方法を使用することにより, 寄贈ソフトウェアの主な開発者に, + 変更 点を返すのがとても容易になります. + + しかしながら結局, 寄贈ソフトウェアの取扱は, + 実際に作業を行って いる人々に委ねられています. + もしこの方法を使用することが, その人が扱っているパッケージには + 極端に合わないような場合には, コアチームの承認さえあれば, + これらの ルールに反しても, + 他の開発者の一般的な合意は得られるでしょう. + 将来にわたってパッケージを保守できるということは, + 大変重要な事柄に なってきます. + + + RCS のファイルフォーマットと CVS + のベンダブランチの使用には不幸な設計上の制限があります. + したがって, + ベンダブランチの内容をいまだに引きずっているファイルに + 対して小さな, 些細な変更, そして / あるいは + 膨大な変更を加えることには, + 強い反対があります. + “誤字訂正”はもちろんこの中に入りますし, + しかも“膨大な”の範疇に入るので, リビジョンが + 1.1.x.x + であるファイルに対する誤字訂正は避けられることになっています. + 一文字の変更したことによるリポジトリの肥大は, + 非常に劇的なものになり得るのです. + + + プログラミング言語 Tcl は, + この方法が活用されているよい例になっています: + + src/contrib/tcl には, + このパッケージの保守管理者が 配布したソースが含まれています. + この中からは FreeBSD に完全には適用 + できない部分が削除されています. Tcl の場合は, + mac, win, + compat というサブディレクトリは, FreeBSD + に取り込む前に削除されて いました. + + src/lib/libtcl には, + ライブラリを生成したり, ドキュ + メントをインストールする際に使用される, 標準の + bsd.lib.mk の 規則を使用した「bmake + スタイル」の Makefile だけが + 含まれています. + + src/usr.bin/tclsh には, + bsd.prog.mk 規則 を使用して, + tclsh + プログラムや関連するマニュアルページを生成 /インストール する + bmake スタイルの Makefile + だけが含まれています. + + src/tools/tools/tcl_bmake には, tcl + ソフトウェアを更新する必要が生じたときの助けになる2つのシェルス + クリプトが含まれています. これらは, + ソフトウェアを構築するのに使用し たり, + インストール対象になるソフトウェアではありません. + + ここ重要なのは, src/contrib/tcl + ディレクトリが, 規則にしたがっ て作られているということです. + つまり, できるだけ FreeBSD に特化した + 変更をおこなわないようにしたソースを(RCS + のキーワードを拡張しないで, CVS のベンダブランチに)おくようにし + ています. freefall + 上の「簡易取り込み」ツールは, 寄贈ソフトウェアを取り込む + 手助けとなります. けれども, + このツールの実行方法に疑問が生じた場合は, まずはじめに質問して, + 失敗をしないようにしてください. そして, + その疑問を“解決して”からツールを使用してください. + CVS に寄贈ソフトウェアを取り込む際には, + 事故があってはいけません. + よくあるような間違いをおかさないように, + 十分注意してください. + + 先ほど述べたように, 残念なことに CVS + にはベンダブランチという設計制限があります. このため, CVS + に寄贈ソフトウェアを取り込むには, オリジナル配布ソースに + 適用されるベンダからの“公式”パッチと, + ベンダブランチに逆輸入された 結果が必要です. + ベンダブランチの一貫性を破壊したり, 将来, + 新しいバージョンを取り込む + 時に衝突を起こしてしまったりというような + 困難な事態に陥らないように しなければなりません. そのために, + FreeBSD が管理しているバージョンに 対して, + 公式パッチを決して当ててはいけませんし, 公式パッチを "commit" + してはいけません. + + 多くのパッケージが, 他のアーキテクチャや他の環境と FreeBSD + との互換性を保ためのファイルをいくつか含んでいます. そこで, + スペースを節約するために, FreeBSD + にとっては無意味な配布ツリー上の一 + 部を削除することが許されています. けれども, + 削除されずに残ったファイルに対する, 著作権の通知やリリース + ノートのような情報を含んだファイルは, 決して削除しては + いけませ ん . + + bmake Makefile + が何らかのユーティリティによって, 配布ツリー + から自動的に生成できると, うまくいけば, 新しいバージョンへの + アップグレードをより簡単におこなうことができます. + もしこのようなユーティリティを作成できた場合には, 将来の管理者に + とって便利になるように, 移植の際に, + src/tools ディレクトリ上に, (必要に応じて) + そのユーティリティを必ずチェックインしてください. + + src/contrib/tcl + レベルのディレクトリには, FREEBSD-upgrade + と 呼ばれるファイルが追加されており, そのファイルでは + 次のような内容が 記述されています. + + + + ディレクトリ上に存在するファイル + + + + オリジナルの配布物をどこから入手すればよいか また, + 公式配布 サイトはどこか + + + + オリジナルの作者にパッチを送り返すためには, + どこに送ればよいか + + + + FreeBSD に特化した変更点の概要 + + + + しかしながら, 寄贈ソースと一緒に + FREEBSD-upgrade ファイルを + 取り込まないでください. それよりむしろ, + (訳注:このファイルを)初回に取り込んだ後は, コマンド cvs + add FREEBSD-upgrade ; cvs ci を実行してください. + src/contrib/cpio を例にすると, + 次のようになります: + + +このディレクトリは「ベンダ」ブランチ上のオリジナル配布ファイル +の初期ソースが含まれています. いかなる事情があっても, +パッチや cvs コミットによってこのディレクトリ上のファイルを +アップグレードしてはいけません. +(訳注:ベンダから配布された)新しいバージョンや公式パッチだけが +(訳注:このディレクトリに)取り込まれなくてはいけません. +ベンダの RCS Id が CVS に入ってしまうのを避けるために, "-ko" オプ +ションをつけてインポートすることを忘れないで下さい. + +GNU cpio 2.4.2 を取り込むためには, 以下のファイルが削除されました: + + INSTALL cpio.info mkdir.c + Makefile.in cpio.texi mkinstalldirs + +cpio を新しいバージョンにアップデートするためには, 次の作業を +おこないます: + + 1. 空のディレクトリに新しいバージョンを取り出します. + [ファイルに「いかなる変更」も加えてはいけません] + + 2. 上記にリストされたファイルと, FreeBSD には無意味な + ファイルを削除します. + + 3. 次のコマンドを実行します: + cvs import -ko -m 'Virgin import of GNU cpio v<version>' \ + src/contrib/cpio GNU v<version> + + 例えば, バージョン 2.4.2 を取り込むためには, 次のように + タイプします: + cvs import -ko -m 'Virgin import of GNU v2.4.2' \ + src/contrib/cpio GNU v2.4.2 + + 4. FreeBSD に対するローカルな変更と, 新しいバージョンとの間での + 矛盾を解消するために, ステップ 3 で出力された命令を実行します. + +いかなる事情があっても, この手順から外れてはいけません. + +cpio にローカルな変更を加えたい場合には, メインブランチ(別名 HEAD)に対して +パッチを実行し, コミットしてください. +決して GNU のブランチにローカルな変更を加えないでください. + +ローカルにおこなわれたすべての変更を次のリリースに含めるために, +"cpio@gnu.ai.mit.edu" に提出してください. + +obrien@freebsd.org - 30 March 1997 + + + + 共有ライブラリ + + Contributed by &a.asami;, &a.peter;, and &a.obrien;. + 9 December 1996. + + もしあなたが共有ライブラリをサポートする機能を port + に追加した り, + 共有ライブラリをサポートしていない他のソフトウェアに追加する + 場合には, 共有ライブラリのバージョン番号を次の規則にしたがって + つけてください. 一般的には, この規則は, + ソフトウェアのリリースバージョンとは 全く関係ありません. + + 共有ライブラリを作成する三つの重要な規則は + 次の通りです: + + + + 1.0 から始める + + + + 過去のバージョンに互換性のある変更の場合は, + マイナー番号を増やす + + + + 互換性のない変更の場合は, メジャー番号を増やす + + + + 例えば, 機能追加とバグ吸収の場合は, + マイナー番号を増やします. 機能削除, + 関数呼び出しのシンタックスなどが変更された場合は, + 強制的にメジャー番号を変更します. + + メジャー.マイナーー + (x,y) + の形式のバージョン番号を使用します. FreeBSD + のダイナミックリンカは, + x.y.z + という形式のバージョン番号 は扱えません. + この場合, y の後のバージョン番号 + (つまり三つ目の数字)は, + どのライブラリがリンクされているかを決めるために, 共有ライブラ + リ番号を比較する際に, すべて無視されます. + “小さな”リビジョンだけが + 異なる二つの共有ライブラリが指定 されると, + ld.so は, + リビジョンの大きい方の共有ライブラリを リンクします. すなわち, + もしあなたが libfoo.so.3.3.3 をリンク + していたとすると, リンカは頭の 3.3 + という部分だけを認識し, libfoo.so.3 + ではじまり その後に 3 + 以上の数字が続くもののうち, + 最も大きい番号 + の付いているライブラリをリンクします. + + + ld.so はいつも最も大きい + “マイナー” リビジョンのものを使うことに + 注意してください. 例えば, プログラムがはじめ + libc.so.2.0 を リンクしていたとしても, + libc.so.2.0 よりも + libc.so.2.2 を優先 して使用します. + + + 移植されていないライブラリに対しては, + リリースごとに共有ライブラリの + バージョン番号を一度だけ変更するのが私たちのポリシーです. + あなたがシステムライブラリのバージョン番号を上げた場合は, + Makefile の commit ログを確認してください. + 結果としてそのリリースには, 共有ライブラリのバージョン番号が + アップデートされた Makefile + に入るので, 最初にその変更を 確かめるのがソースツリー管理者 + ("committer") の責務です. その後のどんな変更も, + そのリリースには入りません. + + + + diff --git a/ja/handbook/ports/chapter.sgml b/ja/handbook/ports/chapter.sgml new file mode 100644 index 0000000000..40d992c56d --- /dev/null +++ b/ja/handbook/ports/chapter.sgml @@ -0,0 +1,1139 @@ + + + + アプリケーションのインストール : ports コレクション + + 原作: &a.jraynard;. + + 訳: &a.jp.masaki;, &a.jp.saeki;. + 11 November 1996. + + FreeBSD の ports コレクションを利用すると, 最小限の労力で + 非常に幅広くのアプリケーションのコンパイルとインストールがおこなえます. + + やってみたことのある方はよくご存知でしょうが, + オープンな規格とは 全くの誇大広告であって, + あるプログラムを異なるバージョンの Unix 上で + 動作させることは退屈で手間のかかる仕事です. + 求めているプログラムが自分のシステムでうまくコンパイルでき, + 正しいところにインストールできて, + 完璧に動作するとしたらとてもラッキーです. しかし, + あいにくこれは滅多にないことなのです. + ほとんどのプログラムについて, + あなたは髪を掻きむしることになるでしょうし, + かなりのプログラムでは, 白髪混じりの頭になってしまったり, + あるいは慢性の 脱毛症にすら なってしまうかもしれません... + + いくつかのソフトウェアディストリビューションでは, + 設定用のスクリプトを + 配布することでこの問題を解決しようとしています. + これらのスクリプトの中には非常に精巧なものもありますが, + 残念ながら, 中にはこれまで + 聞いたこともないようなシステムの名前をしゃあしゃあと + 言い放ったうえに, まるでシステムレベルの Unix + プログラミングに関する 最終試験のような, + たくさんの質問をしてくる場合があります. (例えば, + このシステムの gethitlist 関数は fromboz への const + ポインタを 返しますか? それとも const fromboz + へのポインタを返しますか?, このシステムには + Foonix スタイルの, 容認できない例外処理をおこなう + ルーチンがありますか? もしもないとしたら, + それはなぜですか?) + + 幸いなことに, ports コレクションがあれば, + これらのきつい作業はすべて 完了しています. make + install とタイプするだけで, 動作するプログラムを + 入手することができるのです. + + + なぜ ports コレクションを作ったのか? + + FreeBSD の基本システムは, + 非常に多くのツールやユーティリティから 構成されています. しかし, + よく使われるプログラムのうち多くのものが, + この基本システムには含まれていません. その理由は:- + + + + ある Lisp ベースのエディタのように, + それがないと生きていけないと 言う人もいれば, + ディスクの無駄だと言う人もいるようなプログラム. + + + + 基本システムに組み込むには特殊すぎるプログラム. (CAD + やデータベースなど.) + + + + “時間のある時に, + ちょっと見ておかなければ”というような類の, + それがシステムに含まれていないことが + 致命的とは言えないプログラム. (おそらく, + 何らかの言語などでしょう.) + + + + FreeBSD + のような真面目なオペレーティングシステムの一部として + 供給するには遊びが過ぎるようなプログラム. ;-) + + + + たくさんのプログラムを基本システムに組み込んだとしても, + もっともっと 組み込みたいという要求が出てくるので, + どこかで制限を引かなくてはならないため. (そうしなければ + FreeBSD の配布物は, + とてつもなく膨大になってしまうでしょう.) + + + + すべての人が自分のお気に入りの + プログラムを手作業で移植しなければ ならないとしたら, + (途方もない膨大な作業の繰り返しをさておいたとしても) + それは明らかに不合理な話です. そこで, FreeBSD プロジェクトでは, + 標準のツールを使って移植のプロセスを + 自動化する巧妙な方法を考え出しました. + + なお, + これは単純ながら非常に柔軟なツールを組み合わせることで, + 非常に強力な働きをさせるという“Unix + 流”の作業の優れた実例です. + + + + ports コレクションはどのように動くのでしょうか? + + インターネットでは通常, tarball の形で + プログラムが配布されています. これは, Makefile + とソースコードで構成され, 普通は何らかの説明書 (あいにく, + いつもわかりやすく書かれているとは 限りませんが) + が付属しています. ことによるとコンフィグレーションスクリプトも + 含まれているかもしれません. + + 標準的な手順では, FTP で tarball を入手して, + 適当なディレクトリで展開します. 次に説明書を読んで, + 必要な変更をおこないます. そして, 設定スクリプトを実行し, 標準の + make + コマンドを使ってソースのコンパイルとインストールを + おこないます. + + FreeBSD の ports も tarball の仕組みを利用していますが, + これはユーザが 苦労して作業することを期待したものではなく, + どのようにすれば FreeBSD 上で + そのプログラムが動くようになるかという「ノウハウ」を スケルトン + を使用して収めているものです. スケルトンは, カスタマイズ済みの + Makefile も + 提供していますので, ほとんどすべての ports + は同じ手順でインストールすることが できます. + + もしあなたが (あなたの + FreeBSD システム または + FTP サイト にある) ports スケルトンを見ていて, + そこに潜んでいる あらゆる種類の先端的な + ロケット工学的なものを見つけられると期待していると, + つまらなそうなファイルやディレクトリがそこにあるだけなのを見て, + がっかりするかもしれません. + (ports を手に入れる方法については, すぐに + FreeBSD ports コレクションの入手方法 + の節でお話します.) + + “一体どうしたらいいんだ? ここにはソースコードが + ないじゃないか?” + というあなたの叫びが聞こえるようです. + + 心配いりません. おとなしく読んでいけば, すべてが (たぶん) + 明らかに なるでしょう. 試しに ports をインストールして, + 何が起きるのかを見てみましょう. + ここではサンプルとして開発者向けの便利なツール, + ElectricFence を選択します. + このスケルトンを選んだ理由は, 他の ports + に比べても素直で理解しやすく 書かれているからです. + + + 自宅で試してみる場合には, root + になる必要があるでしょう. + + + + + &prompt.root; cd /usr/ports/devel/ElectricFence +&prompt.root; make install +>> Checksum OK for ElectricFence-2.0.5.tar.gz. +===> Extracting for ElectricFence-2.0.5 +===> Patching for ElectricFence-2.0.5 +===> Applying FreeBSD patches for ElectricFence-2.0.5 +===> Configuring for ElectricFence-2.0.5 +===> Building for ElectricFence-2.0.5 +[大量のメッセージをコンパイラが出力します...] +===> Installing for ElectricFence-2.0.5 +===> Warning: your umask is "0002". + If this is not desired, set it to an appropriate value + and install this port again by ``make reinstall''. +install -c -o bin -g bin -m 444 /usr/ports/devel/ElectricFence/work/ElectricFence-2.0.5/libefence.a /usr/local/lib +install -c -o bin -g bin -m 444 /usr/ports/devel/ElectricFence/work/ElectricFence-2.0.5/libefence.3 /usr/local/man/man3 +===> Compressing manual pages for ElectricFence-2.0.5 +===> Registering installation for ElectricFence-2.0.5 + + + ここではあなたが混乱しないように, コンパイル時の出力を + すべて取り除いてあります. + + もしもあなた自身で実行されたら, 最初にこのような + 出力結果が得られるはずです:- + + + &prompt.root; make install +>> ElectricFence-2.0.5.tar.gz doesn't seem to exist on this system. +>> Attempting to fetch from ftp://ftp.doc.ic.ac.uk/Mirrors/sunsite.unc.edu/pub/Linux/devel/lang/c/. + + + make プログラムは, + あなたの手元にソースコードがないことを検出し, + 処理を続けられるようにソースを FTP でダウンロードしようとします. + この例では, あらかじめ手動でソースコードを用意してあったので, + 持ってくる必要はありませんでした. + + では, 続けて make + プログラムが何をしているのか見てみましょう. + + + + ソースコード tarball のありかを + 確認します. 手元にファイルが存在しなければ, FTP + サイトから入手しようとします. + + + + チェックサム + テストを実行して, その tarball + が事故か何かで途中で切れていたり, ASCII モードで + ダウンロードされていたり, + 転送中にニュートリノによって傷められたりして + 改変されたりしていないかどうかを確認します. + + + + tarball を一時的な作業用ディレクトリに展開します. + + + + FreeBSD 上でコンパイルしたり, 動作させるのに必要な + すべての パッチ + をソースコードに当てます. + + + + 構築のために必要な + コンフィグレーションスクリプトを実行します. + コンフィグレーションスクリプトの + 質問には正確に答えてください. + + + + (いよいよ!) ソースコードをコンパイルします. + + + + 実行形式のプログラム, マニュアル, + その他のサポートファイルを, + システムのプログラムと混ざってしまわないように + /usr/local 以下に インストールします. + ports はすべて同じ場所にインストールされ, + システムのあちこちにばらまかれることはありません. + + + + インストール結果はデータベースに登録されます. + これにより, + インストールしたプログラムがもしも気に入らなかったときも, + システムから すべての痕跡をきれいに 消去 + することができます. + + + + 以上のステップが make + の出力と一致しているかどうか確認してください. + 今まで確認していなかったのなら, + 今からするようにしてください! + + + + FreeBSD ports コレクションの入手 + + あるプログラムの FreeBSD port + を入手するには二つの方法があります. ひとつは FreeBSD CD-ROM を使う方法で, + もうひとつは インターネット接続 + を使う方法です. + + + CD-ROM からコンパイルする + + FreeBSD CD-ROM がドライブに入っており, + /cdrom にマウントされていると仮定すると + (マウントポイントが /cdrom + である必要があります), ただ普通に実行するだけで ports + を構築できるようになり, tarball + をネットワーク経由でダウンロードするのではなく + /cdrom/ports/distfiles/ + からさがすようになります (そこにあればの話ですが). + + CD-ROM にある port スケルトンを使いたければ, 他に + /etc/make.conf の + 変数を以下のようにセットする方法があります: + + +PORTSDIR= /cdrom/ports +DISTDIR= /tmp/distfiles +WRKDIRPREFIX= /tmp + + (任意の十分な空きスペースの場所を /tmp + とおいています). + 次に, /cdrom/ports 下の適宜のサブディレクトリに + cd して, 例のごとく + make install とタイプします. + WRKDIRPREFIX は port に + /tmp/cdrom/ports の下でビルドさせようとします; + 例えば, games/oneko は + /tmp/cdrom/ports/games/oneko の下で + ビルドされるでしょう. + + + ライセンスの制限により, いくつかの ports + でオリジナルのソースコードを CD-ROM + に入れることができなかったものがあることに注意してください. + この場合, インターネット経由で + ports をコンパイルする の + 節を参照してください. + + + + インターネット経由で ports をコンパイルする + + CD-ROM を持っていなかったり, その ports + の最新バージョンを確実に入手したい 場合は, その ports の スケルトン を + ダウンロードする必要があります. ところで, これは落し穴が + たくさんある作業に見えるかもしれませんが, + 実際には非常に簡単です. + + 初めに, あなたの動かしている FreeBSD + がリリースバージョンなら ports ページ + でその FreeBSD 用の “アップグレードキット” + を手にいれてください. このパッケージには, 最新の ports + をコンパイルするのに必要な, + リリース以降に更新されたファイルが含まれています. + + FreeBSD の FTP サーバーがその場で tarball + を作成できることを利用してスケルトンを入手すると + 非常に便利です. ここでは例として databases ディレクトリにある + gnats プログラムを使って説明します. + (角型かっこの中の文はコメントなので, 実際に実行する場合には, + これをタイプしないでください!):- + + + &prompt.root; cd /usr/ports +&prompt.root; mkdir databases +&prompt.root; cd databases +&prompt.root; ftp ftp.freebsd.org +[ユーザ名 `ftp' でログインし, パスワードを要求されたら, あなたの電子メール +アドレスを入力してください. バイナリモードを (イメージモードと呼ばれることも +あります) 使うのをお忘れなく!] +> cd /pub/FreeBSD/ports/ports/databases +> get gnats.tar +[gnats スケルトンの tarballs を取得] +> quit +&prompt.root; tar xf gnats.tar +[gnats スケルトンの展開] +&prompt.root; cd gnats +&prompt.root; make install +[gnats の構築とインストール] + + + さて何が起きるでしょうか? FTP + サイトにいつも通りに接続して, データベースの + サブディレクトリに移動します. get gnats.tar + とコマンドを入力すると, FTP サイトでは gnats ディレクトリを + tarred + にしてくれるのです. + + gnats スケルトンを展開したら, gnats ディレクトリへ移動して + ports を構築します. すでに + 説明したように, make の過程で + 手元にソースコードがないことを検出すると, + ソースコードを取得してから 展開し, + パッチ当てと構築をおこないます. + + それでは, 少し冒険をしてみましょう. 一つの ports + スケルトンを 取得するかわりに, たとえば ports + コレクションの中のデータベースの スケルトンをすべて, + サブディレクトリ全体を取得してみましょう. + やり方はほとんど同じです:- + + + &prompt.root; cd /usr/ports + &prompt.root; ftp ftp.freebsd.org + [ユーザ名 `ftp' でログインし, パスワードを要求されたら, あなたの電子メール +アドレスを入力してください. バイナリモードを (イメージモードと呼ばれることも +あります) 使うのをお忘れなく!] + > cd /pub/FreeBSD/ports/ports + > get databases.tar [データベースディレクトリの tarballs を取得] + > quit + &prompt.root; tar xf databases.tar [すべてのスケルトンを展開] + &prompt.root; cd databases + &prompt.root; make install [データベース ports 全部の構築とインストール] + + + + わずかばかりの簡単なコマンドで, この FreeBSD + マシン上にデータベース + プログラムを一揃い手に入れてしまいました! 一つの ports + スケルトンを取ってきて それを構築する場合との違いは, + すべてのディレクトリを一度に取得して, + 全部を一度にコンパイルしたということだけです. + かなり感動的だと思いませんか? + + たくさんの ports をインストールする つもりなら, + おそらくすべての ports ディレクトリをダウンロードしておく + 価値があるでしょう. + + + + + スケルトン + + スケルトン (訳注: skeleton とは骸骨のことです) とは, + 締め切りを守るため, 食事をするのを忘れるほど仕事にのめり込んだ + ハッカーたちのなれの果ての ことでしょうか? FreeBSD + の屋根裏に潜む, なにか気持ちの悪いものでしょうか? いいえ, + ここでスケルトンの意味するところは, ports の魔術を実現するのに + 必要とされるすべてのものを提供する最小の骨組みのことです. + + + <filename>Makefile</filename> + + スケルトンのもっとも重要な要素は Makefile です. Makefile + は ports を どのようにコンパイルし, + インストールをおこなうかを指示する + いろいろな命令を含んでいます. 以下に ElectricFence の Makefile + を示します:- + + +# New ports collection makefile for: Electric Fence +# Version required: 2.0.5 +# Date created: 13 November 1997 +# Whom: jraynard +# +# $Id$ +# + +DISTNAME= ElectricFence-2.0.5 +CATEGORIES= devel +MASTER_SITES= ${MASTER_SITE_SUNSITE} +MASTER_SITE_SUBDIR= devel/lang/c + +MAINTAINER= jraynard@freebsd.org + +MAN3= libefence.3 + +do-install: + ${INSTALL_DATA} ${WRKSRC}/libefence.a ${PREFIX}/lib + ${INSTALL_MAN} ${WRKSRC}/libefence.3 ${PREFIX}/man/man3 + +.include <bsd.port.mk> + + "#" で始まる行は, 人間のためのコメント行です. + (ほとんどの Unix のスクリプトと同じですね.) + + DISTNAMEtarball + の名前から拡張子を取ったものです. + + CATEGORIES + はこのプログラムの種類を示します. この場合, + 開発者向けのユーティリティということになります. + 完全なリストはこのハンドブックの カテゴリ + をみてください. + + MASTER_SITES はマスタ FTP サイトの URL + です. もしローカルシステムに tarball がない場合には, + ここから取得します. これは信頼できると考えられているサイトで, + 通常はそのプログラムを + インターネット上で公式に配布しているサイトです. + (そのソフトウェアがインターネット上で「公式に」 + 配布されているとしたら) + + MAINTAINER は, + 例えば新しいバージョンのプログラムが出た場合に, 必要であれば + スケルトンの更新をおこなう保守担当者の + 電子メールアドレスです. + + 次の数行はとりあえず飛ばします. + + .include <bsd.port.mk> + + この行は, この ports に必要なその他の命令やコマンドは + bsd.port.mk に + 入っているということを示しています. + これらはすべての ports で共通のものなので, + それぞれの Makefile に書いておく必要はありません. + そのため単一の標準ファイルに + まとめられているのです. + + ここでは Makefile + がどう働くかを詳細に調査するのが目的ではありませんので, + MAN3 で始まる行は, インストールの後に + ElectricFence のマニュアルを 圧縮するために使用される, + と言っておくだけで充分でしょう. これにより, + 貴重なディスクスペースが保護されているわけです. オリジナルの + port では install + ターゲットが用意されていないので, + do-install からの 3 行が この ports + によって生成されたファイルを + 正しい場所に置くために使用されます. + + + + <filename>files</filename> ディレクトリ + + ports のチェックサム算出には MD5 + アルゴリズムを使用しているので, この チェックサム を含んでいる + ファイルは md5 と呼ばれます. + ちょっと混乱するかもしれませんが, このファイルは + files という + 名前のディレクトリに置かれています. + + このディレクトリは, ports に必要だけれども, + 他のどこにも属さない 雑多なファイルも含んでいます. + + + + <filename>patches</filename> ディレクトリ + + このディレクトリには, FreeBSD + ですべてを正常に動作させるのに 必要な パッチ が含まれています. + + + + <filename>pkg</filename> ディレクトリ + + このディレクトリには, + 非常に役立つ三つのファイルが含まれています:- + + + + COMMENT — + プログラムについての 1 行の説明. + + + + DESCR — より詳細な説明. + + + + PLIST — + プログラムのインストール時に作成される, + すべてのファイルのリスト. + + + + + + + ports が動かないのですが, どうしたらよいでしょう + + おやおや. では, 次の四つのどれかをやってみてください: + + + + 自分で修正する. ports + の仕組みに関する技術的な詳細については, + アプリケーションの移殖方法をご覧ください. + + + + 苦情をいう. これは電子メールで だけ + にしてください! このようなメールの宛先は &a.ports; です. + なお, 必ず port の名前やバージョン, その port のソースや + distfile(s) を どこから入手したか, + どんなエラーが発生したのかを書いておいてください. + + + + 忘れてしまう. これはほとんどの場合最も簡単な方法です. + ports + のプログラムのうち必要不可欠な物はごくわずかです. + + + + FTP サイトからコンパイル済みのパッケージを入手する. + “マスター”パッケージコレクションは FreeBSD の + FTP サイトの + パッケージディレクトリ に置いてありますが, + まずあなたの近くのローカルミラーサイトを確認してください! + ソースからのコンパイルに挑戦するよりも, + パッケージを使うほうが (全体的に見て) + ずっと確実に動作するでしょうし, + より手っ取り早い方法でもあります. + システムにパッケージをインストールするには, &man.pkg.add.1; + を使ってください. + + + + + + 質問と回答集 + + + + Q. 私はモデムについての議論を + しているのかと思っていました??! + + A.なるほど, あなたはきっとコンピュータの背面についている + シリアルポートのことだと思ってしまったのでしょう. + あるバージョンの Unixから別のバージョンの Unix + へとプログラムを 移殖することを “porting” + というのですが, ここで我たちは “porting” の結果 + という意味で “port” を使っています. + (コンピュータに関わる人々の悪しき習慣として, + ひとつの同じ言葉を複数の + まったく違う意味として使うことがあるのです.) + + + + Q. 私は, 標準以外のプログラムのインストールには packages + を使うと 思っていたのですが. + + A. そのとおり. 通常は packages + が最も手早くて簡単な方法です. + + + + Q. それではどうして面倒な ports があるのですか? + + A. いくつかの理由があります:- + + + + いくつかのソフトウェアのライセンス条件には, + バイナリではなくソースコードでの + 配布を求めているものがあります. + + + + バイナリ配布を信用していない人もいます. + 少なくともソースコード があれば, ソースコードを読んで, + (理論的には) 潜在的な問題点を自分で + 見つけ出すこともできるはずです. + + + + ローカルなパッチを入手した場合, + それを自分で追加するために + ソースコードが必要になります. + + + + プログラムがいかにコンパイルされるべきかについて, + あなたはパッケージを作った人とは + 異なる見解を持っているかもしれません. + どんな最適化オプションをつけるべきかとか, + デバッグバージョンを作ってから それを strip + するべきだとか, いや, そうするべきでない, などなど, + 確固たる見解を持っている人もいるでしょう. + + + + ソースコードを手元に置いておきたい人たちもいます. + 彼らは, 退屈したときに眺めたり, あちこち解析してみたり, + ソースコードを 借用したり (もちろん, + ライセンスが許せばの話ですが) するのです. + + + + あなたがソースコードを持っていなければ, + それはソフトウェアとは 言えませんね! ;-) + + + + + + + Q. パッチとは何ですか? + + A. パッチとは, + あるバージョンから他のバージョンへどのように変更するかを + 示す, (通常は) 小さなファイルです. “23 + 行目を削除”, “468 行目の後に これらの 2 + 行を追加”, または“197 + 行目をこのように変更”というような 内容を含んでいます. + これは, “diff” + という名前のプログラムで生成されます. + + + + + Q. tarball とは一体何ですか? + + A. .tar または + .tar.gz という拡張子を持つファイルです. + (.tar.Z のようなバリエーションも + ありますし, DOS のファイルシステム用に + .tgz + と短縮される場合もあります.) + + これは基本的に, 一つのファイルに固めた + (.tar) ディレクトリツリーです. + 圧縮されている (.gz) 場合もあります. + これは元々 Tape + ARchives (訳注: テープアーカイブ) + (このため tar という名前なのです) + で使われていたものなのですが, + インターネット上でプログラムのソースコードを配布するために + 広く使われている方法です. + + これらのファイルの中身を見たり, + 展開したりすることもできます. FreeBSD + の基本システムに付属する Unix 標準の tar + コマンドを使ってみると 次のようになります:- + + + &prompt.user; tar tvzf foobar.tar.gz +&prompt.user; tar xzvf foobar.tar.gz +&prompt.user; tar tvf foobar.tar +&prompt.user; tar xvf foobar.tar + + + + + + + Q. チェックサムとは何ですか? + + A. これは, + チェックしたいファイル中のすべてのデータを加えて生成した + 数値です. 何か文字が書き換わっていたら, + チェックサムが一致しなくなります. そのため, + 単純な比較だけで違いを見つけることができるのです. + (実際には, 文字の位置が入れ替わるなどの, + 単純な加算ではわからない問題も + 見つけることができる複雑な方法で計算されています.) + + + + Q. 私は, CD-ROM から ports + をコンパイルする にしたがって ports + をインストールしていました. kermit + をインストールしようとするまではうまくいっていました:- + + + &prompt.root; make install +>> cku190.tar.gz doesn't seem to exist on this system. +>> Attempting to fetch from ftp://kermit.columbia.edu/kermit/archives/. + + + なぜ cku190.tar.gz が見つからないのでしょうか? 不良品の + CD-ROM を買ってしまったのでしょうか? + + A. Kermit の権利を持つチームは, 私たちの CDROM に kermit + の tarball を 入れることを許可しませんでした. + 申し分けありませんが, 手動でファイルを 入手してください. + このようなエラーメッセージが出たのは, + あなたがそのときインターネットに 接続していなかったためです. + あらかじめ上記のサイトのいずれかからファイルを + ダウンロードしておけば, プロセスを再開することができます. + (ダウンロードの際には, + あなたに最も近いサイトを選ぶようにしてください. そうすれば, + 時間とインターネットの帯域の節約になります) + + + + Q. kermit の tarball を入手しましたが, + /usr/ports/distfiles に + ファイルを置こうとすると, + 書き込み権がないというエラーがでます. + + A. ports のしくみは + /usr/ports/distfiles から tarball + を探します. しかし, これは read-only の CD-ROM + へのシンボリックリンクなので, + ここにファイルを置くことはできません. 次のようにすれば, + 他の場所を探すよう ports に指示することができます. + + + &prompt.root; make DISTDIR=/where/you/put/it install + + + + + Q. ports では, すべてを /usr/ports + に置いたときだけ動作するのでしょうか? + システムの管理者によると, 私の個人的なファイルは + /u/people/guests/wurzburger + に入れなければならないのですが, これでは + うまくいかないように思います. + + A. PORTSDIR 変数と + PREFIX 変数を変更することで, + 違うディレクトリを 使用することができます. 例えば, + + + &prompt.root; make PORTSDIR=/u/people/guests/wurzburger/ports install + + + とすると, ports は + /u/people/guests/wurzburger/ports + でコンパイルされ, すべて /usr/local + 以下にインストールされます. + + + &prompt.root; make PREFIX=/u/people/guests/wurzburger/local install + + + この場合, コンパイルは /usr/ports + でおこない, + /u/people/guests/wurzburger/local + にインストールします. もちろん, + 以下のように両者を組み合わせることも可能です. + + + &prompt.root; make PORTSDIR=.../ports PREFIX=.../local install + + + (省略せずに記述したら, + このページに収めるには長すぎるのですが, + 考え方は理解していただけたと思います) + + もし ports をインストールするたびに, + これらを毎回タイプするのが 気に入らないのであれば, + (正直に言って, 誰もそう思わないでしょう) + これらを環境変数にセットしてしまうという手があります. + + + + Q. 私は, FreeBSD の CD-ROM を持っていませんが, + 私はすべての tarball を 私のシステムに置いておきたいのです. + そうすれば, 私は ports をインストール するたびに, + 毎回ダウンロードが終わるのを待たなくてすむでしょう. + これを一度におこなう簡単な方法はありませんか? + + A. ports コレクション全体の tarball を持ってくるには, + 次のようにしてください. + + + &prompt.root; cd /usr/ports +&prompt.root; make fetch + + + ports の下のディレクトリひとつの tarball + を持ってくるには, 次のように してください. + + + &prompt.root; cd /usr/ports/directory +&prompt.root; make fetch + + + ports をひとつだけ持ってくる方法は, + きっと既にご存知だと思います. + + + + Q. マスタ FTP サイトから tarball を持ってくるより, + 近くにある FreeBSD の + ミラーサイトから持ってきた方が速いはずです. MASTER_SITES + に書かれている サイト以外から持ってくるように ports + に指示する方法はありませんか? + + A. もちろんあります. 例えば ftp.FreeBSD.ORG が + MASTER_SITES に書かれている + サイトより近いとしたら, 以下のようにしてください. + + + &prompt.root; cd /usr/ports/directory +&prompt.root; make MASTER_SITE_OVERRIDE=ftp://ftp.FreeBSD.ORG/pub/FreeBSD/ports/distfiles/ fetch + + + + + Q. ダウンロードをする前に, + どんなファイルが必要なのか知りたいのですが. + + A. make fetch-list とすると, ports + に必要なファイルの一覧を表示できます. + + + + Q. ports のコンパイルを途中で止める方法はありますか? + 私はインストールをする前に + いろいろとソースコードを解析したいのですが, 毎回 control-C + を打たなければならないのが少し面倒です. + + A. make extract を実行すると, + ファイル転送とソースコードの展開まで + おこなったところで停止します. + + + + Q. 自分で ports を作ろうとしています. 私の作ったパッチが + 正しく処理できることを確認できるように, + コンパイルを止めたいのです. パッチのための make + extract のようなものはありませんか? + + A. あります. make patch + があなたのお望みのものです. おそらく + PATCH_DEBUG オプションも同様に + お役に立つことでしょう. ところで, + あなたの努力に感謝いたします!! + + + + Q. あるコンパイルオプションはバグの + 原因になるという話を聞きました. 本当なのでしょうか? + どうやったら正しい設定で ports + をコンパイルできますか? + + A. 本当です. gcc の バージョン 2.6.3 + (FreeBSDの 2.1.0 と 2.1.5 に付属している バージョン) では, + オプションを + オプションなしで + 使うと, バグのあるコードを出力します (ほとんどの ports は + オプションを 使いません). + コンバイラオプションは次のように定義 すべき + です. + + + &prompt.root; make CFLAGS='-O2 -fno-strength-reduce' install + + + これを /etc/make.conf + に書いておくこともできますが, 残念なことに すべての ports + がこの指定を尊重してくれる 訳ではありません. + もっとも確実なのは make configure + を実行し, ソースディレクトリの Makefile + を見て手で修整することですが, ソースが + 多くのサブディレクトリにわかれていて, 各々に Makefile + がある場合は 大変な仕事になります. + + + + Q. ports がたくさんありすぎて, + 私の欲しいものがなかなか見つけられません. どんな ports + が使えるのか, リストはどこかにありませんか? + + A. /usr/ports の中にある + INDEX ファイルを見てみましょう. + あるキーワードで ports コレクションを検索したければ, + それも可能です. たとえば, + 以下のようにすればプログラミング言語 LISP に関連した ports + を見つけることができます: + + &prompt.user; cd /usr/ports +&prompt.user; make search key=lisp + + + + Q. foo ports + をインストールしたいのですが, それのコンパイルは + すぐに停止して, bar ports + のコンパイルが始まってしまいます. 一体どうして? + + A. foo ports が, + bar ports + の提供する何らかの機能を必要としているからです. 例えば + foo が画像を使うとすると, + bar は画像処理に必要な + ライブラリを持っている, などです. または, + barfoo + をコンパイルするのに必要なツールなのかもしれません. + + + + Q. ports から + grizzle + プログラムをインストールしましたが, まったく + ディスクスペースの浪費です. 削除したいのですが, + すべてのファイルが どこへインストールされたのかわかりません. + 何か手がかりはありませんか? + + A. 大丈夫, 次のようにしてください. + + + &prompt.root; pkg_delete grizzle-6.5 + + + + + Q. ちょっと待ってください. + 削除しようとするコマンドのバージョン番号を + 知っていなくてはならないのでしょうか? あなたは, + 私がバージョン番号を + 覚えていることを本気で当てにしているのでしょうか? + + A. そんなことはありません. + バージョン番号は次のようにすればわかります. + + + &prompt.root; pkg_info -a | grep grizzle +Information for grizzle-6.5: +grizzle-6.5 - the combined piano tutorial, LOGO interpreter and shoot 'em up arcade game. + + + + + Q. ディスク容量のことなのですが, ports + のディレクトリは非常に膨大な容量を 使うように見えます. + 残しておいた方がよいのでしょうか? 削除してしまっても + よいのでしょうか? + + A. はい. インストールが首尾よく終わり, + もうソースコードが必要でないと思うなら, + それらを残しておく理由はないでしょう. 一番よい方法は, + 次の通りです. + + + &prompt.root; cd /usr/ports +&prompt.root; make clean + + + これは, すべての ports のサブディレクトリを調べ, 各 + ports のスケルトン以外の削除をおこないます. + + + + Q. これを試してみたのですが, tarball や ports + で使われたファイルが distfiles + ディレクトリに残っています. + これも削除してしまっても大丈夫ですか? + + A. はい. それを使った作業が終わったのであれば, + 削除してしまっても大丈夫です. + + + + Q. + 私はとてもとてもたくさんのプログラムを楽しみたいのです. + 一度にすべての ports + をインストールする方法はありませんか? + + A. 次のようにしてください. + + + &prompt.root; cd /usr/ports +&prompt.root; make install + + + + + Q. やってみました. 時間がとてもかかるだろうと思ったので, + そのまま実行を 続けさせて, 私は寝ました. + 翌朝コンピュータを見てみると, 三つ半の ports しか + 処理が終わっていませんでした. + なにか悪かったのでしょうか? + + A. これは ports の中には私たちの決められないこと + (例えば, あなたが A4 の 用紙に印刷したいのか, US + レターサイズの用紙に印刷したいのかなど) について + 質問してくるものがあるからです. + それらの質問には手動で答える必要があります. + + + + Q. + 私は一日中モニタの前に座って過ごしたりしたくないのですが. + 何かよいアイデアはありませんか? + + A. では, あなたが寝に / 仕事に / + 公園にいく前に以下を実行してください:- + + + &prompt.root; cd /usr/ports +&prompt.root; make -DBATCH install + + + これでユーザの入力を要求しないすべての ports + をインストールします. そして, 戻ってきてから, + 次のように実行してください. + + + &prompt.root; cd /usr/ports +&prompt.root; make -DIS_INTERACTIVE install + + + そして, 残りの作業を実行してください. + + + + Q. 私たちは ports コレクションにある + frobble を使っています. ですが, + 私たちの必要に応じて ports を変更したところがあるのです. + 自分でパッケージを作って, それを私たちのサイトのまわりに + 簡単に配布できるような方法がありますか? + + A. もちろんあります. + 変更点をパッチにする方法は知っていますよね:- + + + &prompt.root; cd /usr/ports/somewhere/frobble +&prompt.root; make extract +&prompt.root; cd work/frobble-2.8 +[あなたのパッチを当ててください] +&prompt.root; cd ../.. +&prompt.root; make package + + + + + Q. この ports の技術は本当に賢いですね. + どのようにして動いているのか + 私はどうしても知りたいと思います. その秘密は何ですか? + + A. 秘密は一切ありません. Makefiles + ディレクトリ にある + bsd.ports.mk と + bsd.ports.subdir.mk + ファイルを見るだけです. + + + 複雑なシェルスクリプトを嫌う読者は, + このリンクを追いかけないほうが よいでしょう. + + + + + + + diff --git a/ja/handbook/ppp-and-slip/chapter.sgml b/ja/handbook/ppp-and-slip/chapter.sgml new file mode 100644 index 0000000000..ba38c1dc4d --- /dev/null +++ b/ja/handbook/ppp-and-slip/chapter.sgml @@ -0,0 +1,2810 @@ + + + + PPP と SLIP + + もしあなたがモデムを使ってインターネットに接続したり, + 他の人々に FreeBSD によるインターネットへのダイヤルアップ接続を + 提供しようとしているのでしたら, PPP または SLIP + 接続を選択することができます. PPP 接続には, 2 + 種類の方法が提供されています: ユーザPPP + (iijppp とも呼ばれます) + とカーネルPPP です. 両方の PPP の設定手順と, + SLIP の設定方法については以下の章に書かれています. + + + ユーザ ppp の設定 + + ユーザ ppp は FreeBSD 2.0.5-RELEASE において, + 既存のカーネル実装版の PPP に加えて導入されました. それでは, + これまでの pppd との違い, すなわち この新しい PPP + が追加された理由とは いったい何なのでしょうか? + マニュアルから引用してみます: + +
+ これはユーザプロセス PPP ソフトウェアパッケージです. + 通常, PPP は (例えば pppd + でそうなっているように) カーネルの一部として + 実装されていますので, デバッグや動作の変更が少々困難です. + しかし, この実装では, PPP はトンネルデバイスドライバ (tun) の + 助けにより, ユーザプロセスとして実装されています. +
+ + 本質として, これは常に PPP デーモンを実行しておかなくても, + 必要な時に ppp プログラムを実行できるということを意味します. + このプログラムはカーネルとのデータ送受のために + 一般のトンネルデバイスを 使うことができるため, PPP + インターフェースをカーネルに組み込んでおく + 必要がありません. + + 以降では, ユーザ ppp と pppd のような他の + PPP クライアント/サーバ + ソフトウェアとを区別する必要が無い場合には, ユーザ ppp を単に + ppp とだけ 呼びます. 特に断らない限り, + このセクションのすべてのコマンドは root 権限で + 実行する必要があります. + + バージョン 2 の ppp では, + 数多くの機能強化がおこなわれています. どのバージョンの ppp + がインストールされているのかを調べるには, 引数なしで ppp + を起動し, プロンプトが表示されたら show + version とタイプしてください. 最新版の ppp + にアップグレードするのは, (どのバージョンの FreeBSD においても) + 難しいことではありません. www.Awfulhak.org + から最新版のアーカイブをダウンロードしてください. + + + スタートの前に + + このドキュメントでは, あなたが + およそ以下のような状況にあると仮定しています: + + PPP 接続の使えるインターネットサービスプロバイダ (ISP) + のアカウントを 持っている. さらに, 接続済みのモデム + (またはその他のデバイス) があり, + プロバイダとの接続が可能なように正しく設定されている. + + 以下の情報を手に入れておく必要があるでしょう: + + + + プロバイダの電話番号. + + + + ログイン名とパスワード. これは通常の unix + 形式のログイン名と パスワードの組という場合もありますし, + PPP PAP または CHAP の + ログイン名とパスワードの組という場合もあります. + + + + 一つ以上のネームサーバの IP アドレス. 通常, + プロバイダから IP アドレスを二つ指示されている はずです. + 自分でネームサーバを立ち上げている場合を除き, バージョン + 1.X の PPP + を使用している場合には, + この情報は絶対に必要です. バージョン + 2 の PPP からは, + ネームサーバアドレスの 自動設定機能が追加されています. + この機能をプロバイダ側でもサポートしていれば, ppp + の設定ファイルに enable dns + と書いておくことで PPP + がネームサーバアドレスの設定をおこなうようになります. + + + + + プロバイダからは以下の情報が提供されているはずですが, + どうしても必要というわけではありません: + + + + プロバイダのゲートウェイの IP アドレス. + ゲートウェイとは, あなたがそこに接続をおこなって, + “デフォルトルート” + として設定することになるマシンです. + プロバイダがこのアドレスを明示していなくても, 最初は + 適当に設定しておいて, 接続時にプロバイダの PPP サーバから + 正しいアドレスを教えてもらうことができます. + + このアドレスは, 以降 HISADDR + と呼ぶことにします. + + + + プロバイダのネットマスク設定. + プロバイダが明示していないとしても, ネットマスクとして + 255.255.255.0 + を使用しておけば問題ありません. + + + + もしプロバイダから固定の IP + アドレスとホスト名の割り当てを 受けていれば, + その情報を指定しておくこともできます. + 割り当てを受けていなければ, 接続先から適切な IP + アドレスを指定してもらいます. + + + + もし, 必要な情報が不足していれば, プロバイダに連絡を取って + 確認しておいてください. + + + + ppp 対応カーネルの構築 + + 説明でも述べているように, ppp + はカーネルの tun デバイスを使います. + そのため, このデバイスがカーネルに組み込まれているかどうかを + 確認しておかなくてはいけません. + + これを確認するには, カーネルコンパイルディレクトリ + (/sys/i386/conf または + /sys/pc98/conf) に移動して, + カーネルコンフィグレーションファイルを調べます. + 以下の行がどこかに含まれている必要があります. + + +pseudo-device tun 1 + + 元々の GENERIC カーネルは + 標準でこれを含んでいますので, + カスタムカーネルをインストールしているのではなかったり, + /sys ディレクトリが存在しないのであれば, + 何も変更する必要はありません. + + この行がカーネルコンフィグレーションファイルに + 含まれていなかったり, tun デバイスが一つでは足りない場合 + (例えば, 同時に 16 本の ダイアルアップ PPP + 接続を処理できるサーバを立ち上げるとしたら, + 1 のかわりに 16 + を指定する必要があるでしょう), この行を追加して + カーネルの再コンパイルとインストールをおこなう必要があります. + それからこの新しいカーネルを使ってブートしてください. + カーネルコンフィグレーションの詳細については, FreeBSD + カーネルのコンフィグレーション + を参照してください. + + 以下のコマンドを実行することで, + 現在のカーネルにトンネルデバイスが + いくつ組み込まれているかを調べることができます: + + &prompt.root; 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 + + この例ではトンネルデバイスが四つ存在し, そのうち二つに + 設定がおこなわれ, 使用中であることがわかります. 上の例で + RUNNING フラグがオンになっている + ものがありますが, これは + そのインターフェースが何かに使用されていることを示している + だけであるということに注意してください. つまり, + RUNNING になっていない + インターフェースがあったとしても, それはエラーではありません. + + + トンネルデバイスがカーネルに組み込まれておらず, + 何らかの理由で + カーネルの再構築ができない場合でも, + 方法がないわけではありません. + 動的にデバイスをロードすることができるはずです. + 詳細については + &man.modload.8; や &man.lkm.4; など, + 適切なマニュアルを参照してください. + + この機会にファイアウォールも + 設定しておきたいと思っているのであれば, 詳細についてはファイアウォールセクションを + 参照してください. + + + + tun デバイスの確認 + + ほとんどのユーザは tun デバイス + (/dev/tun0) が一つあれば充分でしょう. + より多くのデバイスを使う場合 (すなわち, + カーネルコンフィグレーション ファイルで pseudo-device + tun の行に 1 + 以外の数値を指定している場合), 以下で + tun0 と書かれている部分をすべて, + あなたが使うデバイスの番号に + あわせて読みかえてください. + + tun0 + デバイスが正しく作成されていることを確認する最も簡単な方法は, + それを作り直すことです. そのためには, + 以下のコマンドを実行します: + + &prompt.root; cd /dev +&prompt.root; ./MAKEDEV tun0 + + カーネルに 16 個のトンネルデバイスを組み込んだのであれば, + tun0 だけでなく他の tun + デバイスも作成しておく必要があるでしょう: + + &prompt.root; cd /dev +&prompt.root; ./MAKEDEV tun15 + + また, カーネルが正しく設定されているかどうかを調べるために + 以下のコマンドを実行して, + このような出力が得られることを確認します: + + &prompt.root; ifconfig tun0 +tun0: flags=8050<POINTOPOINT,RUNNING,MULTICAST> mtu 1500 + + まだ RUNNING + フラグがセットされていない場合もあります. + その時は以下のような出力が得られるでしょう: + + &prompt.root; ifconfig tun0 +tun0: flags=8010<POINTOPOINT,MULTICAST> mtu 1500 + + + + 名前の解決に関する設定 + + リゾルバ (resolver) はシステムの一部分で, IP + アドレスとホスト名との 変換をおこないます. IP + アドレスとホスト名を対応させるためのマップを, + 二つの場所のうちの一つから探すように設定できます. 一つめは + /etc/hosts (man 5 + hosts) と呼ばれるファイルです. 二つめはインターネット + ドメインネームサービス (DNS) と呼ばれる + 分散データベースですが, これに関する議論は + このドキュメントで扱う範囲を 越えていますので, + これについての説明はおこないません. + + このセクションではリゾルバの + 設定方法について簡単に説明します. + + リゾルバは名前のマッピングを + おこなうシステムコールの集合体です. ただし + どこからマッピング情報を見つけるのかは, + 最初に指示しておく必要があります. これは まず + /etc/host.conf + ファイルを編集することでおこないます. 混乱の元になりますので, + このファイルを /etc/hosts.conf と + 呼んだりしてはいけません (余分な + s がついていますね). + + + <filename>/etc/host.conf</filename> ファイルの編集 + + このファイルには 以下の 2 行が (この順番で) + 書かれているはずです: + + +hosts +bind + + これは, 最初に /etc/hosts + ファイルを調べ, そこで目的の名前が 見つけられなかった場合に + DNS を引きにいくようリゾルバに指示します. + + + + /etc/hosts(5) ファイルの編集 + + + このファイルはローカルネットワーク上に存在するマシンの + IP アドレスと ホスト名を含んでいるはずです. 最低でも ppp + を動作させるマシンのエントリが 含まれている必要があります. + そのマシンのホスト名が foo.bar.com で, IP アドレスが + 10.0.0.1 であると仮定すると, + /etc/hosts は + 以下の行を含んでいなければいけません: + + +127.0.0.1 localhost +10.0.0.1 foo.bar.com foo + + 一つめの行は localhost + を現在のマシンの別名として定義しています. マシン固有の IP + アドレスが何であっても, この行の IP アドレスは 常に 127.0.0.1 でなければいけません. + 二つめの行はホスト名 foo.bar.com (と, その省略形 + foo) を IP アドレス 10.0.0.1 にマップします. + + もしプロバイダから固定の IP + アドレスとホスト名を割り当てられて いるのであれば, それを + 10.0.0.1 + エントリのかわりに使ってください. + + + + <filename>/etc/resolv.conf</filename> ファイルの編集 + + /etc/resolv.conf + はリゾルバの振舞いを指定します. もし自前の DNS + サーバを走らせているのなら, このファイルは空のままに + しておくこともできます. 通常は, + 以下のように書いておく必要があるでしょう: + + +nameserver x.x.x.x +nameserver y.y.y.y +domain bar.com + + x.x.x.x + と y.y.y.y + はプロバイダから指示されたアドレスで, + 接続するプロバイダが提供しているネームサーバを + すべて書いてください. domain + に指定するのは このマシンのデフォルトのドメイン名で, + おそらく 書かなくても問題は無いでしょう. + このファイルの各エントリの詳細については, + resolv.conf + のマニュアルページを参照してください. + + バージョン 2 以降の ppp を使用している場合には, + enable dns + コマンドを使用してネームサーバのアドレスを + プロバイダに問い合わせるように指示することができます. + 上の指定とは異なるアドレスをプロバイダが指定してきた場合 + (または /etc/resolv.conf + でネームサーバが指定されていない場合), ppp + はプロバイダが指定したアドレスで + resolv.conf を書きかえます. + + + + + <command>ppp</command> の設定 + + ユーザ ppp と pppd (カーネルレベルの + PPP 実装) は どちらも /etc/ppp + ディレクトリに置かれた設定ファイルを使います. + ここには設定ファイルのサンプルが用意されていて, ユーザ ppp + の設定を おこなう際に大変参考になりますので, + 削除したりしないでください. + + ppp の設定をするためには, + 必要に応じていくつかのファイルを編集する必要が あります. + 書き込む内容は, プロバイダが静的に IP アドレスを割り当てる + (つまり, 固定の IP アドレスを一つ与えられて, 常にそれを使う) + か, または動的に IP アドレスを割り当てる (つまり, PPP + セッションごとに IP アドレスが変化する可能性がある) + かということに ある程度依存します. + + + 静的 IP アドレスによる PPP 接続 + + まず /etc/ppp/ppp.conf + という設定ファイルを作成する必要があります. + これは以下の例とほとんど同じようなものになるでしょう. + + + : で終る行は 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\\T TIMEOUT 40 CONNECT" +5 provider: +6 set phone "(0123) 456 7890" +7 set login "TIMEOUT 10 \"\" \"\" gin:-BREAK-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 は + &man.chat.8; 言語に似た, 受信待ち文字列と + 送信文字列の対からなるスクリプトを使用します. + この言語の機能に関しては, + マニュアルページを参照してください. + + + + Line 5: + + 接続するプロバイダの名前 “provider” を + エントリ名として指定します. + + + + Line 6: + + このプロバイダの電話番号を指定します. + 複数の電話番号を : や + | で区切って指定することができます. + これら区切り文字の違いについては, ppp + のマニュアルページに 詳しく書かれています. + 要約すると, 毎回違う番号に かけたいのであれば + : を使います. 常に + まず先頭の番号にかけてみて, つながらない時にだけ 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 を + + モードで動作させることはできません. + + + + Line 10: + + プロバイダのゲートウェイへの経路を + デフォルトルートとして 追加します. 特殊文字列 + HISADDR は, 9 行目で指定された + ゲートウェイのアドレスで置きかえられます. + HISADDR は 9 + 行目までは初期化されていませんので, + その行よりも後でしか使えないことに + 注意してください. + + + + Line 11: + + ネームサーバのアドレスが正しいか + どうかを確認するため, + プロバイダに問い合わせをおこなうよう ppp に指示します. + プロバイダがこの機能をサポートしていれば, ppp は + /etc/resolv.conf + のネームサーバエントリを + 正しいアドレスに更新することができます. + + + + + 静的な IP アドレスを持っていて, + 接続が完了する前にルーティングテーブルの + エントリが正しく設定されているのであれば, + ppp.linkup に + エントリを追加する必要はありません. しかし, + この場合でもエントリを追加して, 接続が完了した時点で + プログラムを呼び出したいことがあるかもしれません. + これについては後ほど sendmail を例として説明します. + + これらの設定ファイルのサンプルが + /etc/ppp ディレクトリに + 置かれています. + + + + 動的 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 を指定してはいけません. + さもないと, + モードで動作させる際に + 初期経路を設定することができなくなります. + + + + + バージョン 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 + アドレスで置きかえられます. + + + + + 詳細なサンプルについては, + /etc/ppp/ppp.conf.sample ファイル中の + pmdemand エントリと + /etc/ppp/ppp.linkup.sample + を参照してください. + + バージョン 2 の ppp から “sticky routes” + が導入されました. MYADDR や + HISADDR を含む add + コマンドと delete コマンドを記憶して, + MYADDRHISADDR の + アドレスが変化した際には経路の再設定をおこないます. + したがって, これらのコマンドを + ppp.linkup に + 繰り返し記述する必要は無くなりました. + + + + かかってきた電話を <command>ppp</command> + で受けるには + + このセクションでは ppp + をサーバとして設定する方法について説明します. + + かかってきた電話を ppp + が受けるように設定する際に, そのマシンが LAN + に接続されているのであれば, パケットを LAN + に転送するかどうかを決定する必要があります. + 転送をおこなう場合には, その LAN のサブネットから IP + アドレスを ppp クライアントに割り当て, + 以下のコマンドを指定するのが良いでしょう. + + +enable proxy + + また, /etc/rc.conf + に以下のオプションが指定してあることを + 確認しておいてください. (以前のバージョンの FreeBSD では, + このファイルは /etc/sysconfig + と呼ばれていました): + + + +gateway_enable=YES + + + どの getty を使いますか? + + getty + でダイアルアップサービスをおこなう場合の優れた解説が FreeBSD + でダイアルアップサービスをおこなうための設定 + にあります. + + getty に代わるものとしては, + mgetty があります. これは + getty をより柔軟にしたもので, + ダイアルアップ回線での使用を意図して + 設計されています. + + mgetty を使う場合の利点は, + mgetty + が積極的にモデムと通信する + ということです. つまり, もし + /etc/ttys でポートを閉じている場合, + モデムは電話をとらなくなります. + + 最近のバージョンの mgetty (0.99beta + 以降) では, PPP ストリームの + 自動検出もサポートされています. これにより, + クライアント側で スクリプトを準備しなくてもサーバに + アクセスすることができます. + + mgetty に関する, + より詳細な情報については Mgetty と AutoPPP + を参照してください. + + + + ppp の実行許可 + + ppp は通常, ID 0 のユーザ (root) + として動作しなければいけませんが, 以下で説明するように, + ppp + を通常のユーザとしてサーバモードで実行させたい 場合には, + そのユーザを /etc/group の + network グループに 追加して, ppp + を実行する許可を与えておかなければいけません. + + また, そのユーザが設定ファイル内の目的のエントリに + アクセスできるように, 以下のように + allow + コマンドで許可を与えておく必要があります: + + +allow users fred mary + + このコマンドがデフォルトエントリに + 書かれている場合には, 指定されたユーザは + すべてのエントリをアクセスできるようになります. + + + + 動的 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 + という名前で このスクリプトへのリンクを作成します: + + &prompt.root; 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 + + + + 静的 IP ユーザのための PPP シェルの設定 + + 上記と同じように ppp-shell + ファイルを作成し, 静的な IP + アドレスを割り当てるアカウントそれぞれについて + ppp-shell + へのシンボリックリンクを作成します. + + 例えば, クラス C ネットワークの経路制御を必要とする, + 三人のダイアルアップユーザ fred, + sam, mary + がいるとすると, + 以下のコマンドを実行することになります: + + &prompt.root; ln -s /etc/ppp/ppp-shell /etc/ppp/ppp-fred +&prompt.root; ln -s /etc/ppp/ppp-shell /etc/ppp/ppp-sam +&prompt.root; ln -s /etc/ppp/ppp-shell /etc/ppp/ppp-mary + + これらのユーザのダイアルアップアカウントでは, + 上で作成した それぞれのシンボリックリンクを + ログインシェルとして設定しておきます. (つまり, ユーザ + mary のログインシェルは + /etc/ppp/ppp-mary に + なります). + + + + 動的 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 + + + + 上の例のように段をつける (インデントする) + 必要があることに注意してください. + + + default: + エントリはセッションごとにロードされます. + /etc/ttys + で有効にしてある各ダイアルアップ回線ごとに一つ, 上記の + ttyd0: のようなエントリを作成します. + 各行の相手側アドレスとして, それぞれ別の IP アドレスを + 動的 IP ユーザのための IP + アドレスのプールから割り当てておく必要があります. + + + + 静的 IP ユーザのための <filename>ppp.conf</filename> + の設定 + + 上のサンプルの /etc/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 + + + + <command>mgetty</command>, AutoPPP, + マイクロソフト拡張の詳細 + + + <command>mgetty</command> と 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 + + オプションを (/etc/ppp/ppp.conf に) + 追加しておく必要があるでしょう. + + ユーザに静的な IP アドレスを割り当てる場合には, + そのアドレスを /etc/ppp/ppp.secret + の第三引数として指定することができます. + サンプルについては, + /etc/ppp/ppp.secret.sample + を参照してください. + + + + マイクロソフト拡張 + + クライアントからの要求に応じて, ppp が DNS や + NetBIOS ネームサーバの アドレスを通知するように + 設定をおこなうこともできます. + + これらの拡張機能を + /etc/ppp/ppp.conf + ファイルで有効にした例を 以下に示します. + + バージョン 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 + に書かれているネームサーバのアドレスを使用します. + + + + + + + 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 + + という行を追加しておくのも良いでしょう. + + + + + + + 動作中の ppp の設定変更 + + 適切な診断ポートが設定されている場合には, + バックグラウンドで動作中の ppp + プログラムと通信することができます. + この設定をおこなうためには, + 以下の行を設定ファイルに追加しておきます: + + +set server /var/run/ppp-tun%d DiagnosticPassword 0177 + + これにより, ppp は指定された unix ドメインの + ソケットをモニタして, + クライアントから正しいパスワードを受け取った後に + アクセスを許可します. このソケット名に含まれる + %d は, この ppp が使用している tun + デバイスの デバイス番号で置きかえられます. + + 一旦ソケットの設定が終了したら, スクリプト中で + &man.pppctl.8; を 使用して, 動作中の ppp + を操作することができるでしょう. + + + + + システムの最終設定 + + これで 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= + + + ifconfig_tun0 変数が空で, + /etc/start_if.tun0 という名前の + ファイルが作成されていなければなりません. + このファイルの内容は以下のようになります. + + +ppp -auto mysystem + + このスクリプトはネットワークの設定時に実行され, ppp + デーモンを自動モードで立ち上げます. このマシンがもし LAN + のゲートウェイであれば, + スイッチも使用したいと思うかもしれません. 詳細に関しては, + マニュアルページを参照してください. + + + 以下のようにルータプログラムを NO + に設定します. + + +router_enable=NO (/etc/rc.conf) +router=NO (/etc/sysconfig) + + routed は, ppp + が作成したデフォルトのルーティングテーブル + エントリを削除してしまう場合がありますので, + (初期設定では起動されるようになっている) + routed デーモンが + 起動されないようにしておくことが重要です. + + sendmail_flags 行が + オプションを含まないように 設定しておいた方がよいでしょう. + さもないと, sendmail が + アドレスを調べようとして発信をおこなってしまう場合があります. + 以下のような設定で良いでしょう: + + +sendmail_flags="-bd" + + この結果, PPP リンクを立ち上げた時には + いつでも以下のコマンドを実行して, キューにたまっているメールを + sendmail + に送信させる作業が必要になるでしょう. + + &prompt.root; /usr/sbin/sendmail -q + + ppp.linkup 中で + !bg コマンドを使用することで, + これを自動的に おこなうこともできます: + + +1 provider: +2 delete ALL +3 add 0 0 HISADDR +4 !bg sendmail -bd -q30m + + こうするのが嫌であれば, SMTP + トラフィックをブロックするように “dfilter” + を設定しておくこともできます. + 詳細についてはサンプルファイルを参照してください. + + 後はマシンをリブートするだけです. + + リブートが終ったら, + + &prompt.root; ppp + + コマンドを実行し, 続いて PPP セッションを開始させるために + dial provider と入力することもできますし, + (start_if.tun0 + スクリプトを作成していない場合に), + 外部へのトラフィックが発生した時に, ppp + が自動的に セッションを確立してくれるようにしたいのであれば, + 以下のコマンドを実行することもできます. + + &prompt.root; ppp -auto provider + + + + まとめ + + 要約すると, 初めて ppp を設定する際には, + 以下のステップが不可欠です: + + クライアント側: + + + + カーネルに tun + デバイスが組み込まれていることを確認. + + + + /dev ディレクトリに + tunX + デバイスファイルが 存在することを確認. + + + + /etc/ppp/ppp.conf + にエントリを作成. ほとんどのプロバイダでは, + pmdemand の例で充分でしょう. + + + + 動的 IP アドレスを使用するなら, + /etc/ppp/ppp.linkup に + エントリを作成. + + + + /etc/rc.conf (または + sysconfig) ファイルを更新. + + + + 必要に応じてダイヤル (demand dialing) + したいのであれば, start_if.tun0 + スクリプトを作成. + + + + サーバ側: + + + + カーネルに tun + デバイスが組み込まれていることを確認. + + + + /dev ディレクトリに + tunX + デバイスファイルが 存在することを確認. + + + + (&man.vipw.8; コマンドを使って) + /etc/passwd にエントリを作成. + + + + このユーザのホームディレクトリに ppp -direct + direct-server + か何かを実行するプロファイルを作成. + + + + /etc/ppp/ppp.conf + にエントリを作成. direct-server + の例で充分でしょう. + + + + /etc/ppp/ppp.linkup + にエントリを作成. + + + + /etc/rc.conf (または sysconfig) ファイルを更新. + + + + + + + 謝辞 + + ハンドブックの このセクションは, 1998 年 8 月 10 日 (月) + に &a.brian; によって 更新されました. + + 以下の人々による情報提供, 批評そして提案に感謝します: + + &a.nik; + + &a.dirkvangulik; + + &a.pjc; + +
+ + + カーネル PPP の設定 + + 原作: &a.gena;. + + 訳: &a.jp.graphite;. + 6 September 1996. + + PPP の設定を始める前に, pppd が + /usr/sbin にあり, また + /etc/ppp という + ディレクトリが存在することを確認してください. + + pppd はふたつのモードで動作します. + + + + “クライアント”モード. + シリアル接続やモデムを利用して, そのマシンを + 外部のネットワークに PPP 接続したい場合に用います. + + + + “サーバ”モード. + そのマシンがネットワーク上にあるときに, PPP を使って + ほかのコンピュータを接続する際に用います. + + + + どちらの場合でも, オプションファイルを設定する必要があります + (/etc/ppp/options または, そのマシン上で + PPP を使用する人が 複数いる場合には + ~/.ppprc). + + また, ダイヤルとリモートホストへの接続をおこなうために, + シリアル接続やモデムを 操作する, + なんらかのソフトウェアが必要です (kermit + が適しているでしょう). + + + 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 + + 接続方法: + + + + kermit (またはその他のモデム操作プログラム) + を使ってリモートホストに ダイヤルし, 接続してください. + そして, あなたのユーザ名とパスワード (必要 であれば, + その他にもリモートホストで PPP を有効にするための操作) + を入力 します. + + + + kermit を抜けてください. (回線を切断せずに) + + + + 下記のように入力します: + + &prompt.root; /usr/src/usr.sbin/pppd.new/pppd /dev/tty01 19200 + + (通信速度とデバイス名には, + あなたの環境に適したものを入れてください) + + + + これでこのコンピュータは PPP で接続されました. もし, + なんらかの理由で 接続に失敗したならば, + /etc/ppp/options ファイルに + オプションを追加して, + 問題点を突き止めるために, コンソールに表示される + メッセージを調べてください. + + 下記の /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 を使う方法です. + + 原作: &a.rhuff;. + + 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 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 <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: + + (実際には一行になります.) + + +ABORT BUSY ABORT 'NO CARRIER' "" AT OK ATDT<phone.number> + CONNECT "" TIMEOUT 10 ogin:-\\r-ogin: <login-id> + TIMEOUT 5 sword: <password> + + 正しくインストールし編集した後は, + 必要な事はこれだけです + + &prompt.root; pppd + + このサンプルは主に Trev Roydhouse + <Trev.Roydhouse@f401.n711.z3.fidonet.org> + から寄せられた情報に基づいており, + 承諾を得て使用しています. + + + + 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 mode +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: + + + + + SLIPクライアントのセットアップ + + 原作: &a.asami;8 Aug 1995. + + 訳: &a.hanai;8 August 1996. + + ここには FreeBSD + マシンを静的アドレスのネットワークにつなげる場合の + SLIPのセットアップの一つの方法を書いてあります. + ホスト名を動的に割り当てる(つまり, + ダイヤルアップするたびにアドレスが かわる)ためには, + おそらくもっと凝ったことが必要です. + + まず, + モデムがどのシリアルポートにつながっているか決めましょう. 私は + /dev/cuaa1 から + /dev/modemへというシンボリックリンクを張り, + コンフィグレーションではその名前だけを使っています. + /etc.kermrc + など, システム全体に散らばっているファイルを修正する + 必要がでるとまったく煩わしいのです! + + + ここで, /dev/cuaa0は + COM1であり, + cuaa1COM2です. + + + カーネルのコンフィグレーションファイルに + + +pseudo-device sl 1 + + という記述があるのを確認してください. + これは GENERIC カーネルに含まれている + ので削除していない限り大丈夫でしょう. + + + 最初の設定 + + + + /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 + + 余談ですが, + silviaというのは私が日本にいた時に持っていた + 車の名前です(米国では2?0SXと呼ばれています). + + + + /etc/host.conf ファイル中で + + よりも前にあること を確認してください. + さもないとヘンなことが起こるかもしれません. + + + + /etc/rc.conf + ファイルを編集してください. なお, お使いの FreeBSD が + 2.2.2 よりも前のバージョンのものの場合は, + /etc/sysconfig + を編集してください. + + + + + + +hostname=myname.my.domain + + を編集してホスト名をセットしてください. + 完全なInternetホスト名を与えるべきです. + + + + + + +network_interfaces="lo0" + + + + +network_interfaces="lo0 sl0" + + へ変更することにより + ネットワークインタフェースのリストに sl0 + を加えてください. + + + + + + +ifconfig_sl0="inet ${hostname} slip-gateway netmask 0xffffff00 up" + + を加えて sl0 + のスタートアップフラグをセットしてください. + + + + + + +defaultrouter=NO + + + + +defaultrouter=slip-gateway + + へ変更してデフォルトのルータを + 指定してください. + + + + + + 次の + + +domain HIP.Berkeley.EDU +nameserver 128.32.136.9 +nameserver 128.32.136.12 + + という内容を含むファイル + /etc/resolv.conf を作ってください. + 見ればわかるように, + これらはネームサーバホストを設定しています. もちろん, + 実際のドメイン名やアドレスは + あなたの環境に依存します. + + + + root と toor + (及びパスワードを持っていない他のアカウントすべて) + のパスワード を設定してください. + passwdコマンドを使いましょう. + /etc/passwd や + /etc/master.passwd + といったファイルを編集してはいけません! + + + + マシンを再起動して正しいホスト名で + 立ち上がることを確認してください. + + + + + + SLIP接続をおこなう + + + + モデムを起動, つながったらプロンプトで + 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とタイプするだけです. + + + ファイルシステムのどんなところにもプレインテキスト + にパスワードを書いておくのは一般的にはよくありません. + 覚悟の上で やってください. + 私は単に不精なだけです. + + + + + ここでkermitから抜け出し + (zでkermitをサスペンドできます), root + で + + &prompt.root; slattach -h -c -s 115200 /dev/modem + + と入力しましょう. もしルータの向う側のホストへ + ping できるなら接続成功です! もしうまく + いかなければslattachへの引数として + の代わりにとやってみてください. + + + + + + 接続の切り方 + + slattachを殺すためにrootで + + &prompt.root; kill -INT `cat /var/run/slattach.modem.pid` + + とタイプしてください. そして kermit に戻り + (もしkermitをサスペンドしていたなら + fg), kermitから抜けてください + (q). + + slattachのマニュアルページにはインタフェースを落すために + ifconfig sl0 + downをしなければいけないと書いていますが, + 私には差がないように見えます. (ifconfig + sl0とやっても同じ結果が得られる.) + + 時にはモデムがキャリアを落すのを + 拒絶するかもしれません(私のは よくそうなります). + その時は単にkermitをスタートしてまた終了 してください. + 普通は2回目で落ちます. + + + + トラブルシューティング + + もし動かなければ自由に私に質問してください. + 今までいろんな人がつまずいた のは次のようなことです. + + + + slattach で + を使わなかった(私はなぜこれが致命的になり得るのか + わかりませんが, このフラグを付けることで少なくとも一人の + 問題は解決しました.) + + + + の代わりに + を使った(いくつかのフォントでは見分けるのは難しい + かもしれません). + + + + インタフェースの状態を見るために ifconfig + sl0 をやってみてください. 私は, + + &prompt.root; ifconfig sl0 +sl0: flags=10<POINTOPOINT> + inet 136.152.64.181 --> 136.152.64.1 netmask ffffff00 + + となります. + + + + また, pingが "no route to host" + というメッセージを返す時には netstat + -rでルーティングテーブルを確認しましょう. + 私のは, + + &prompt.root; 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) + + となります. + (これはたくさんのファイルを転送した後でのもので, + あなたの見る数字はもっと小さいかも + しれません). + + + + + + + SLIPサーバのセットアップ方法 + + 原作: &a.ghelmer;. + v1.0, 15 May 1995. + + 訳: &a.jp.ts;. + 6 September 1996. + + この文書の目的は, SLIPサーバ機能を + FreeBSDシステムのもとで設定するため の助言を提供することです. + SLIPサーバ機能を設定するということは, リモー トの + SLIPクライアントがログインできるようにするために, 自動的に接続処 + 理をおこなうようにすることです. + この文書は著者の経験に基づいておりますが, + 実際のシステム構成や要望は異なりますから, + すべての疑問にこの文書が答え ることはできません. なお, + ここでの助言を試みた結果, あなたのシステムへ + の悪影響やデータの損失が生じたとしても, + 著者が責任を持つことはできませ + んのでご了解をお願いします. + + 当初この文書は, FreeBSD 1.xシステムでの + SLIPサーバ機能のために書きまし た. その後, FreeBSD + 2.xの初期バージョンでのパス名の変更や SLIPインタフェー + ス向け圧縮フラグの削除といった変更点を反映するために, + 書き換えをおこないま した. これらが + FreeBSDのバージョン間の主要な変更点だったからです. もし + この文書の間違いを見つけられましたら, ぜひ, + 訂正に十分な情報とともに電 + 子メールでお知らせいただければ助かります. + + + 前提 + + この文書の内容はテクニカルなものなので, + 前提知識が必要です. すなわち, + 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 + やそれに類似した名前の文書をお読みください. 関連す + るマニュアルページとしては, + シリアルポート向けデバイスドライバについて + の &man.sio.4; をはじめ, モデムからのログインを + 受理できるようにシステ + ムを設定するための &man.ttys.5;, &man.gettytab.5;, &man.getty.8;, + &man.init.8; など, さらには, シリアルポート関連パラメタ ( たと + えば直接接続シリアルインタフェースの + clocal ) についての + &man.stty.1; なども助けになるかもしれません. + + + + 概要 + + 一般的な設定内容で FreeBSDを SLIPサーバとして利用すると, + その動作は次 のようになります. まず, SLIPユーザが FreeBSD + による SLIPサーバへ電話し て, SLIP専用IDでログインします. + なお, このIDを持ったユーザはシェルとし て + /usr/sbin/sliplogin を使います. この + sliplogin は, ファ イル + /etc/sliphome/slip.hosts の中から, + ログインIDと一致する 記述行を探します. もし一致する行があれば, + ログインしたシリアル回線を, 利用可能な + SLIPインタフェースへ接続し, その後にシェルスクリプト + /etc/sliphome/slip.login で + SLIPインタフェースを設定します. + + + 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 へ記録します + ( &man.syslogd.8; や + &man.syslog.conf.5; のマニュアルページを参照のうえ, さらに + /etc/syslog.conf を調べて + syslogd がどのファイルへ記 + 録するかを確認のこと) . + + 例はこのくらいにして, + さっそくシステムのセットアップを始めてみましょう. + + + + + カーネルのコンフィグレーション + + FreeBSD のデフォルトのカーネルには, 通常, 二つの + SLIPインタフェースが 準備されています + (sl0sl1) + . これらのインタフェー + スが使用中のカーネルに準備されているかどうかを調べるには, + 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 の出力に + sl0sl1 + のインタフェー スが含まれているということから, + カーネルには二つの SLIPインタフェー + スが組み込まれているということを示しています. + (sl0sl1 + に付いたアスタリスクは, 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 変数を + としてください. もし古いシステ ムで + /etc/sysconfig ファイルすらないときには, + 次のコマン ドを /etc/rc.local + へ追加してください. + + +sysctl -w net.inet.ip.forwarding = 1 + + この新しい設定を有効とするには, + リブートする必要があります. + + デフォルトのカーネルコンフィグレーションファイル + (/sys/i386/conf/GENERIC) の最後の部分に, + 次のような行がありま す. + + +pseudo-device sl 2 + + この行によって, 使用可能な SLIPデバイスの総数が決まります. + すなわち, 行 末の数値が, 同時に動作可能な + SLIP接続の最大数となります. + + カーネルの再構築については, FreeBSDカー + ネルのコンフィグレーション を参照ください. + + + + Sliploginのコンフィグレーション + + すでにご説明したように, + /usr/sbin/sliplogin のコンフィグレー + ションのために, + 3種類のファイルが/etc/sliphome + ディレクトリに あります (sliplogin + についての実際のマニュアルページとしては + &man.sliplogin.8; を参照のこと) . + ファイル slip.hosts は + SLIPユーザおよびその IPアドレスを決めます. 通常, ファイル + slip.login は, + SLIPインタフェースを設定することだけに使 + 用します. slip.logout + はオプションのファイルで, + slip.login で設定した内容を, + シリアル接続が終了した時点で解除 + するときに使用します. + + + <filename>slip.hosts</filename> + のコンフィグレーション + + /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 + + それぞれの行の最後には, + 次に示すオプションを一つ以上指定できます. + + + + — ヘッダを圧縮しない + + + + — ヘッダを圧縮する + + + + — + リモートの設定に応じて, ヘッダを圧縮する + + + + — + ICMPパケットを禁止する + (“ping”パケットは送出されず, + バンド幅を占有しない) + + + + なお, FreeBSDバージョン2の初期リリースの + sliplogin は, 旧 FreeBSD + 1.xでは有効であった上記のオプションを無視していましたので, + , , + , そして + などのオ プションは 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サーバのサブネットの範囲から + 選んで割り当てるとともに, + &man.arp.8; コマンドを使うために + /etc/sliphome/slip.login + と/etc/sliphome/slip.logout + のスクリプトを修正して, SLIPサー + バにおける ARPテーブル内のプロキシ ARPエントリへ + 反映させる必要がありま + す. + + + + <filename>slip.login</filename> + のコンフィグレーション + + ファイル /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 であると + 読みます. なお &man.arp.8; における MAC + アドレスの指定に際しては, + コマンド netstat -i が付けた + Ethernet MACアドレスのピリオド記 + 号をコロン記号と置き換え, かつ単一桁の 16 + 進数にはゼロを先頭に加える必 + 要があります. この指定についての正確な情報は &man.arp.8; + を参照く + ださい. + + + /etc/sliphome/slip.login と + /etc/sliphome/slip.logout + を作成したならば, ファイル属性の“実行”ビット + (すなわち chmod 755 /etc/sliphome/slip.login + /etc/sliphome/slip.logout) を + 設定しなければなりません. さもなければ + sliplogin が + うまく実行されません. + + + + + <filename>slip.logout</filename> + のコンフィグレーション + + ファイル /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 ) + . + + + + + ルーティングについての考慮点 + + “プロキシ ARP”方式を利用せずに + SLIPクライアントとその他のネットワーク (Internetも含む) + の構成要素との間でパケットをルーティングするときには, + SLIPサーバ経由で + SLIPクライアントが属するサブネットまでの経路を, 最も + 近いデフォルトのルータ群へ静的な経路情報として + 追加しなければならないか, または gated を + FreeBSDによる SLIPサーバへインストールして, SLIP + サブネットについての経路情報を, + 適当なルーティングプロトコルでルー + タ群へ通知できるように設定するか, + のどちらかをおこなわなければなりません. + + + 静的な経路 + + 静的な経路を最も近いデフォルトの + ルータ群へ追加することが困難なことがあ ります + (経路情報を追加できる権限がなければそもそも不可能となる). + もし あなたの組織に複数のルータで構成された + ネットワークがあるならば, ある種 のルータ (たとえば Ciscoや + Proteonなど) は, 静的な経路を SLIPサブネッ + トへ使うようにルータを設定しなければならないだけでなく, + その静的経路を 他のどのルータへ知らせるのかもあらかじめ + 指定しておく必要がありますから, + 静的経路に基づくルーティングを軌道に乗せるには + それなりの専門的技術やト + ラブルシューティングやコツが必要だと思います. + + + + <command>gated</command>の稼働 + + 静的経路についての頭痛への代替手段は, + gated を FreeBSDによる SLIPサー + バへインストールして, 適切なルーティングプロトコル + (RIP/OSPF/BGP/EGP) を使って + SLIPサブネットについての経路情報を他のルータへ知らせるように + 設定することです. ports + コレクションから gated + を用いることもできますし, + the 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 + のマニュアルページを参照してください. + + + + + 謝辞 + + このチュートリアルについての + コメントやアドバイスを寄せてくれた次の方々 + に感謝します. + + + &a.wilko; + + + + + + Piero Serini + + Piero@Strider.Inet.IT + + + + + +
+ + diff --git a/ja/handbook/printing/chapter.sgml b/ja/handbook/printing/chapter.sgml new file mode 100644 index 0000000000..791d4d4e90 --- /dev/null +++ b/ja/handbook/printing/chapter.sgml @@ -0,0 +1,5407 @@ + + + + プリンタの利用 + + 著者 &a.kelly; + 30 September 1995 + + 訳者 &a.jp.kimura;. + 3 September 1996 + + FreeBSD でプリンタを使用するためには, バークレイラインプリンタ + スプーリングシステム (LPDスプーリングシステムとしても知られて + います) が機能するようにプリンタをセットアップする必要がありま す. + 本節では, LPDスプーリングシステム (大抵の場合, 単にLPDと呼 ばれる) + について紹介します. + + もし, LPDや他のプリンタスプーリングシステムについて既に詳しい + 知識をお持ちの方は, 「 + スプーリングシステムのセットアップ」から読み始めて + も結構です. + + + スプーラは何をするか + + LPDはあるホストのプリンタに関する制御の一切をおこないます. + こ こで言う制御としては, 次のことが挙げられます. + + + + ホストに接続されたプリンタ, あるいはネットワーク + 上の他ホストに接続されたプリンタに対するアクセスを制御しま + す. + + + + ファイルをプリントする要求に対して許可を与えます. + この要求は特に ジョブ + と呼ばれています. + + + + 各々のプリンタの キュー + を管理することにより, + 複数のユーザがあるプリンタに対して同時にアクセスすることを + 防ぎます. + + + + ヘッダページ + (バナー または + バースト ページとしても知られています) + をプリントすることができます. これにより, + プリントアウトの山の中から自分がプリントしたジョ + ブを見つけ易くなります. + + + + シリアルポートに接続したプリンタ用に通信パラ + メータを管理します. + + + + ネットワーク経由で他のホスト上の, 別のLPDスプーラにジョ + ブを送ることができます. + + + + 様々なプリンタ言語やプリンタの能力に応じてジョブの + 形式を整えるため, + 特別なフィルタを起動することができます. + + + + プリンタの使用に対して + 課金をおこなうことができます. + + + + 設定ファイルを通して, また, 特別なフィルタプログラムを供給 + することにより, 多種多様なプリンタ機器に対して, 上述の機能の + 全部または一部をLPDシステムにおこなわせることができます. + + + + どうしてスプーラを使うべきなのか + + あなたのシステムを利用するのがあなた一人だけだとしたら, ア + クセス制御もヘッダページも + プリンタ利用に対する課金も必要ないのに, + なぜわざわざスプーラに煩わされなければならないのか疑問に思うか + もしれません. + プリンタに対する直接アクセスを許可することもできるので すが, + とにかくスプーラを使用するべきです. その理由は, + + + + LPDはジョブをバックグラウンドで処理します. データが + プリンタに送信されるまで待つ必要はありません. + + + + LPDではジョブをフィルタを通してプリントすることが簡 + 単にできます. これにより, 印刷物のヘッダに時刻や日付を入れ + たり, 特別なファイル形式 (TeX の DVI ファイルなど) をプリン + タが処理できる形式に変更することができます. これらの作業を + 手動でおこなう必要がなくなります. + + + + プリント処理をおこなうフリーのまたは商用のプログラムの + ほとんどは, システムのスプーラとやりとりするように作られて + います. スプーリングシステムをセットアップすることで, 今後 + 加えるかもしれない, あるいは, 既に持っている別のソフトウエ + アをより簡単にサポートすることができるでしょう. + + + + + + スプーリングシステムのセットアップ + + LPDスプーリングシステムを用いてプリンタを使用するためには, + プリンタ機器とLPD用ソフトウェアの両方を準備する必要があります. + 本ドキュメントでは次の2段階のレベルに分けて説明をします. + + + + プリンタを接続する方法, プリンタにどの + ように通信するかをLPDに指示する方法や, プレインテキスト + をプリンタで印字する方法については, 「 + プリンタの簡単な設定」をご覧ください. + + + + 様々な形式のファイルを印字する方法, ヘッダページを + 印字する方法, ネットワーク経由でプリンタに印字する方法, + プリンタを制御する方法, プリンタの使用に対する課金をおこなう + 方法については「 + プリンタ設定上級編」をご覧ください. + + + + + + プリンタ設定導入編 + + この節では, プリンタ機器やプリンタを使用するためのLPD用ソフ + トウェアを設定する方法について述べます. この節の概要は次の通り + です. + + + + + プリンタ機器の設定」では, + プリンタをコンピュータに接 + 続するためのヒントがいくつか書かれています. + + + + + ソフトウェアの設定」では, LPDのスプーラ設定ファイル + /etc/printcap + の設定方法について書かれています. + + + + データをプリンタに送るためにシリアルまたは + パラレルインタフェー スではなく, + ネットワークプロトコルを使用する場合は, 「 + ネットワークにおけるデータストリームの + インタフェースを持つプリンタ」をご覧くださ い. + + この節のタイトルは“プリンタ設定導入編”ですが, + 実際の設定は かなり複雑です. プリンタをコンピュータに接続し, + LPDスプーラを 起動させることは一番困難な作業です. + ヘッダページを出力させたり, 課金したりするオプションの設定は, + 一度プリンタがうまく動くよう になれば, とても簡単です. + + + プリンタ機器の設定 + + この節では, プリンタにPCを接続するための様々な方法について + 説明しています. ここでは, ポートやケーブルの種類, FreeBSDが + プリンタとの通信に必要なカーネルコンフィグレーションについて + も言及しています. + + もし, プリンタが既に接続されていて, + 他のオペレーティングシステ + ム上でプリンタからの印字に成功している場合は, 「 + ソフトウェアの設定」まで読み飛 + ばすことが多分できるでしょう. + + + ポートとケーブル + + 最近のPC用のプリンタほとんどには次のインタフェースの一つ + もしくは両方がついています. + + + + シリアルインタフェースでは, + プリンタにデータを + 送信するためにコンピュータにあるシリアルポートが使用され + ます. シリアルインタフェースはコンピュータ業界で共通し + て使用されています. そのケーブルは容易に手に入り, また, + 簡単に自作することもできます. + シリアルインタフェースには, + 特別なケーブルが必要なことがときどきあり, また, 何か複 + 雑な通信方式選択の設定が必要になることがあります. + + + + パラレルインタフェースでは, + プリンタにデータを + 送信するためにコンピュータにあるパラレルポートを使用しま + す. パラレルインタフェースはPC業界では共通して使われてい + ます. ケーブルの入手は容易ですが, 自作するのはシリアルよ + りも難しいです. パラレルインタフェースには通常, + 通信方式の選 択はなく, このため, + 設定が極めて単純になっています. + + パラレルインタフェースは + “セントロニクス”インタフェー + スとして知られています. これは, プリンタ用のコネクタタ + イプとして採用された後に名付けられました. + + + + シリアルインタフェースはパラレルインタフェースより + も普通はデータの伝送速度が遅くなります. + パラレルインタフェースで は, 通常, + (コンピュータからプリンタへの) 単方向通信のみをおこな + うのに対して, + シリアルインタフェースは双方向通信をおこないます. + 最近のパラレルポートの多くはプリンタ側からデータを受けとる + こともできますが, コンピュータ側にデータを送り返すことが必 + 要となるプリンタはほとんどありません. さらに, FreeBSDでは + 双方向のパラレル通信をまだサポートしていません. + + 通常, プリンタで双方向通信が必要となるのは, プリンタが + PostScript 言語に対応しているときだけです. PostScript プリ + ンタは非常に冗長に動作させることができます. 事実, PostScript + によるジョブでは, プログラムを本当にプリンタ に送信します. + このことは, 印字作業を必ずしもする必要がない ことを意味し, + また, プログラムの結果をコンピュータに直接返 + されるかもしれません. PostScript プリンタでは, 双方向 + 通信を使って, PostScript プログラムのエ + ラーや紙づまりといった問題をコンピュータに報告します. ユー + ザはそれらの情報を知りたいと思うかもしれません. さらに, + PostScript プリンタで課金作業をもっとも効率よくおこなうため + には双方向通信が必要となります. この方法では, まず, プ + リンタの現在のページカウント (起動してから今まで何枚の紙を + 印字したか) の情報を得ます. 次に, ユーザのジョブをおこない, + 終 了後, 再びページカウントを得ます. この2数を差によって, 課 + 金対象となる紙の枚数を知ることができます. + + それでは, + どちらのインタフェースを使うべきなのでしょうか. + + + + 双方向通信が必要なら, シリアルポートを使ってくださ + い. + FreeBSDではパラレルポート上での双方向通信はまだサポー + トされていません. + + + + 双方向通信の必要がなく, パラレルかシリアルかの選 + 択ができる場合はパラレルインタフェースを使うのが好ましい + です. これにより, シリアルポートを他の周辺機器 (端末やモ + デムのなど) のために残しておくことができます. また, パラ + レルインタフェースの方がほとんどの場合高速であり, 設定も + より簡単になっています. + + + + 結局のところは + 動いてくれるものを使えばよいのです. + + + + + + パラレルポート + + プリンタをパラレルインタフェースを使って接続する場合は, + セントロニクスケーブルでプリンタと + コンピュータをつないでくださ い. 詳しい説明はプリンタ, + コンピュータ, あるいは両方に付属す + る説明書に書かれているはずです. + + その際, + どのパラレルポートを使用したかを覚えておいてください. + FreeBSDでは最初のポートは /dev/lpt0, + 2番目は /dev/lpt1 であ り, + 3番目以降も同様に続きます. + + + + シリアルポート + + シリアルインタフェースを使ってプリンタを使う場合は, 適切 + なシリアルケーブルでプリンタ + とコンピュータを接続してください. 詳しい説明はプリンタ, + コンピュータ, あるいは両方に付属する説 + 明書に書かれているはずです. + + “適切なシリアルケーブル” + がよくわからないときは, 次のどれか + を試してみてください. + + + + モデム用ケーブルでは, + それぞれのピンは他方の + コネクタの対応するピンと線でつながっています. このタイプ + のケーブルは, “DTE-DCE” + 間ケーブルとしても知られています. (訳注: + 日本ではストレートケーブルという名前で売られています) + + + + + ヌルモデム用ケーブルでは, + あるピンは対応するピ ント接続していますが, あるピン + (例えば, データ送信用とデー タ受信用のピン) + が交差して接続したり, いくつかのピンは内部 + で短絡していたりします. このタイプのケーブルは, + “DTE-DTE” 間ケーブルと呼ばれています. + (訳注:日本ではクロスケーブル + という名前で売られています) + + + + A シリアルプリンタ用ケーブルは, + ある特定のプ リンタで必要とされ, + ヌルモデムケーブルと似ていますが, 内 + 部で短絡させる代わりに, ある信号を他方側に送るために使用 + しています. + + + + この他に, + プリンタ用の通信パラメータを設定する必要がありま す. 通常, + プリンタのフロントパネルやDIPスイッチによって制 御します. + コンピュータとプリンタの双方で設定できる最高の通 信速度[bps] + (ビット/秒. + ボーレートと示されているときも ある) + を選んでください. そして, データビット (7または8), パリ ティ + (偶/奇/なし), ストップビット (1または2) を選んでください. + そして, フローコントロールの有無 (制御なし, または + XON/XOFF(“イン・バンド” または + “ソフトウェア”フローコ ントロールとも呼ばれる)) + を選びます. 以下に続くソフトウェア の設定のために, + ここでの設定を覚えておいてください. + + + + + ソフトウェアの設定 + + 本節では FreeBSD の LPD + スプーリングシステムで印字をおこなうために + 必要となるソフトウェアの設定について説明しています. + + 本節の概要は次のようになります. + + + + プリンタで使用するポートのために, 必要があれば, カー + ネルの書き変えをおこないます. 「カーネルの変更」で, + このためにしなくてはなら ないことを説明しています. + + + + パラレルポートを使用している場合は, パラレルポートの + ための通信モードの設定します. 詳細は, 「 + パラレルポートの通信モードを設定する + 」で説明しています. + + + + オペレーティングシステムからプリンタにデータが送ら + れているかをテストします. 「 + プリンタとの通信状況を調べる」で, どのように + テストするかの提案をいくつかおこなっています. + + + + ファイル/etc/printcapを変更し, + LPDの設定を おこないます. 「/etc/printcap + ファイル」で, どのように変更するかを + 説明しています. + + + + + カーネルの変更 + + オペレーティングシステムのカーネルの + コンパイルをおこなうこと によって, + 指定されたのデバイスが機能するようになります. シリ アル, + または, パラレルインタフェースをプリンタで使用する場合, + 必要なデバイスがこの指定の中に含まれていなくてはなりません. + したがって, + 必要なデバイスがカーネルに組み込まれていない場合, 追 + 加のシリアル, または, パラレルポートをサポートするために, + カー ネルの再コンパイルが必要となるかもしれません. + + シリアルポートが現在使用しているカーネルで + サポートされている かどうかを調べるためには, + 次のように入力します. + + &prompt.root; dmesg | grep sioN + + ここで, N + はシリアルポートの番号を示し, この番号は0から 始まります. + 次のような出力があった場合, カーネルはそのポー + トをサポートしています. + + sio2 at 0x3e8-0x3ef irq 5 on isa +sio2: type 16550A + + パラレルポートが現在使用しているカーネルで + サポートされている かどうかを調べるためには, + 次のように入力します. + + &prompt.root; dmesg | grep lptN + + ここで, N + はパラレルポートの番号を示し, この番号は0から 始まります. + 次のような出力があった場合, カーネルはそのポー + トをサポートしています. + + lpt0 at 0x378-0x37f on isa + + 上記の出力が得られない場合, プリンタを使うため, + オペレーティ ングシステムにパラレル, または, + シリアルポートを認識し, 使用 できるようにするためには + カーネルを変更する必要があります. + + シリアルポートをサポートさせるには, 「 + FreeBSDカーネルのコンフィグレーション」の節をご覧く + ださい. パラレルポートをサポートさせる場合も, その節と, + あ わせて, + この節に続く節もご覧ください. + + + ポート用エントリを <filename>/dev</filename> + に追加する + + カーネルがシリアル, または, パラレルポートを通じての通 + 信をサポートしていたとしても, システム上で動いているプログ + ラムがデータの送受信をおこなうための + ソフトウェアインタフェース がさらに必要になります. + そのインタフェースは, /dev + ディレクトリにあるエントリに相当します. + + /dev + エントリにポートを加えるために + + + + &man.su.1; コマンドで root になります. suコマンド + でパスワードを聞かれたら, ルート用のパスワードを入力し + ます. + + + + /dev + ディレクトリに移動します. + + &prompt.root; cd /dev + + + + 次のように入力します. + + &prompt.root; ./MAKEDEV port + + ここで, port は, + 作成するポート名です. 1番目 のパラレルポートのときは + lpt0 に, 2番目のときは + lpt1 になり, 以降同様になります. + 1番目のシリア ルポートのときは, + ttyd0 に, 2番目のときは + ttyd1 になり, + これも以降同様となります. + + + + 次を入力し, デバイスのエントリができたか確認し + ます. + + &prompt.root; ls -l port + + + + + + パラレルポートの通信モードを設定する + + パラレルインタフェースを使用している場合, FreeBSDでは, + 割り込み駆動型にするか, + プリンタとの通信の状況をカーネルに監 + 視させるかのいずれかを選択できます. + + + + GENERIC + カーネルでは割り込み駆動方式が, + デフォルトになっています. この方式では, + オペレーティングシ + ステムはプリンタがデータを受け付けられるかどうかを調べ + るために, IRQ ラインを一つ使用します. + + + + 監視方式では, + オペレーティングシステムにプ + リンタがもっとデータを受け付けられるかどうかを繰り返し + 尋ねるように指示します. そして, 受け付けるという応答を + 受けたとき, + カーネルはさらなるデータを送信します. + + + + 割り込み駆動方式は, いくらか高速になりますが, 貴重な + IRQ ラインを一つ消費します. + うまく機能するものをお使いください. + + 通信モードを設定するためには2つの方法があります. + 1つはカー + ネルを変更することで, もう一つは + &man.lptcontrol.8; プログラムを使用する方法です. + + カーネルを設定することによって, + 通信モードを変更する. + + + + カーネルコンフィグレーションファイルを変更しま す. + lpt0 + のエントリを探すか追加してください. 2番目 + のパラレルポートを設定するときは, 代わりに + lpt1 を使います. 以下, + 3番目のポートは lpt2 となってい + きます. + + + + イベント駆動方式にする場合は, + irq 指 定を追加します. + + +device lpt0 at isa? port? tty irq N vector lptintr + + ここで, N + はパラレルポート用の IRQ 番号で す. + + + + 監視方式を使用する場合は, + irq を追加 してはいけません. + + + +device lpt0 at isa? port? tty vector lptintr + + + + + + ファイルをセーブし, config プログラムを起動 し, + カーネルの構築, インストールをおこないます. そして, リ + ブートしてください. 詳細は, 「 + FreeBSDカーネルのコンフィグレーション」を参照 + してください. + + + + &man.lptcontrol.8; + で通信モードを設定する場合 + + + + lptN + をイベント駆動方式に設定する場合は, + 次のように入力します. + + &prompt.root; lptcontrol -i -u N + + + + lptN + を監視方式に設定する場合は, 次のように入力します. + + + &prompt.root; lptcontrol -p -u N + + + + これらのコマンドを /etc/rc.local + ファイルに追加 + しておくと, システムをブートする度に通信モードを設定する + ことができます. 詳細については, + &man.lptcontrol.8; をご覧ください. + + + + プリンタとの通信状況を調べる + + スプーリングシステムの設定に進む前に, オペレーティング + システムがプリンタにデータを送ることに成功しているかどうか + を確かめるべきでしょう. これにより, 印字がうまくいかないと + き, プリンタとの通信が問題なのか, スプーリングシステムが問 + 題なのかを分けて調べることがかなり容易になります. + + プリンタをテストするためには, + プリンタに何かのテキストを送 + 信してみます. 送信した文字をすぐに印字してくれるプリンタに + は, &man.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 のような言語を仮定しており, Hewlett Packard + の PCL は考慮していません. PCL は非常に機能的なの + ですが, + プレインテキストにエスケープシーケンスを混ぜること + ができます. PostScript ではプレインテキストを直接印字 + することはできません. + このような種類のプリンタ言語に対して は, + 特別な対応をおこなわなければなりません. + + + + パラレルポートのプリンタとの接続を調べる + + この節では, FreeBSDがパラレルポートに接続されたプリ + ンタと通信できているかどうかを調べる方法について説明し + ています. + + + パラレルポートのプリンタをテストするために + + + + + &man.su.1; コマンドで root になります. + + + + プリンタにデータを送ります. + + + + プリンタがプレインテキストを印字できる場合, + &man.lptest.1; コマンドを使います. + 次のように入力してください. + + &prompt.root; lptest > /dev/lptN + + ここで, N + はパラレルポートの番号で, 番号は + 0から始まります. + + + + プリンタが PostScript か他のプリンタ + 言語を使用している場合, そのプリンタに簡単なプロ + グラムを送信してください. 次のように入力します. + + + &prompt.root; cat > /dev/lptN + + そして, 一行一行, + プログラムを慎重に入力して + 下さい. RETUREN または ENTER キーを入力してしま + うと, その行は編集できなくなります. プログラムの + 入力が終わったら, CONTROL+Dか, あなたが設定して + いるファイル終了のキーを押してください. + + もしくは, プログラムを入力したファイルがある + 場合は, 次のように入力してください. + + &prompt.root; cat file > /dev/lptN + + ここで, file + はプログラムが格納されていて, + プリンタに送信するファイルの名前です. + + + + + + これで何かがプリントされることでしょう. + 印字されたテキ + ストがおかしくても心配しなくても構いません. それについ + ては, 後で修正します. + + + + シリアルポートのプリンタとの接続を調べる + + この節では, FreeBSDがシリアルポートに接続されたプリ + ンタと通信できているかどうかを調べる方法について述べられ + ています. + + + シリアルポートのプリンタをテストするために + + + + + + &man.su.1; コマンドで root になります. + + + + /etc/remote + ファイルを編集します. 次の エントリを加えてください. + + + +printer:dv=/dev/port:br#bps-rate:pa=parity + + ここで, port + シリアルポート (ttyd0, + ttyd1 など) のデバイスエントリで, + bps-rateは + プリンタとの通信の転送速度[bit/秒], + parityはプリ + ンタとの通信で必要とされるパリティ + (even, odd, + none, + zeroのいずれか) を表わしていま + す. + + 次の例は, + プリンタをシリアルケーブルでパリティなし, 転送速度 + 19200bpsで第3番目のシリアルポートに接続した場 + 合です. + + +printer:dv=/dev/ttyd2:br#19200:pa=none + + + + &man.tip.1; コマンドでプリンタと接続します. 次のよ + うに入力してください. + + &prompt.root; tip printer + + これがうまくいかなかった場合は, + /etc/remoteを 編集して, + + /dev/ttydN + の代わりに + /dev/cuaaN + を試してみてください. + + + + プリンタにデータを送ります. + + + + プリンタがプレインテキストを印字できる場合, + &man.lptest.1; コマンドを使います. + 次のように入力してください. + + ~$lptest + + + + プリンタが PostScript か他のプリンタ + 言語を使用している場合, そのプリンタに簡単なプロ + グラムを入力します. 一行一行, + プログラムを慎 + 重に入力してください. + バックスペースキーや他の編 集用のキーは, + プリンタの制御コードに割り当てられ + ているかもしれません. プログラムが終了したことを + プリンタに伝えるための特別なファイル終了キーを入 + 力する必要があるかもしれません. PostScript + プリンタの場合, CONTROL+Dを入力します. + + もしくは, プログラムを入力したファイルがある + 場合は, 次のように入力してください. + + ~>file + + ここで, file + はプログラムが格納されている + ファイル名です. + &man.tip.1; コマンドでファイルを送 + 信した後は, ファイル終了を表わすキーを入力する必要 + があります. + + + + + + これで何かがプリントされることでしょう. + 印字されたテキ + ストがおかしくても心配しなくても構いません. それについ + ては, 後で修正します. + + + + + + スプーラに許可を与える: + <filename>/etc/printcap</filename> ファイル + + ここまでで, プリンタはコンピュータに接続され, (必要なら) + プリンタと通信できるようにカーネルを変更し, 簡単なデータをプ + リンタに送信することができているはずです. これで, LPDにプリ + ンタへのアクセスを + 制御させる設定をおこなう準備が整いました. + + LPDの設定は /etc/printcap + を編集することでおこないます. + LPDスプーリングシステムはスプーラが使われる毎にこのファイル + を参照します. そのため, ファイルを更新するとすぐにその変更が + 反映されます. + + &man.printcap.5; ファイルの書式は簡単です. + /etc/printcap + の編集はお好みのテキストエディタをお + 使いください. このファイルの書式は, + /usr/share/misc/termcap や + /etc/remote + といった他のケイパビリティファイルと一致しています. + この書式 + のついての詳細な情報については + &man.cgetent.3; をご覧ください. + + スプーラの単純な設定法は, + 次のステップでおこないます. + + + + プリンタに名前 (と簡単な別名2〜3個) を付け, それを + /etc/printcap ファイルに記述します. + これについ ては, 「 + プリンタに名前を付ける」 + を参照してください. + + + + sh の項目を追加することで, + ヘッダページの出 力を禁止します (デフォルトは許可). + これについては, 「 + ヘッダページの印字を禁止する」 + を参照してください. + + + + スプール用のディレクトリを作成し, その位置を + sd 項目で指定します. これについては, + 「 + スプーリングディレクトリの作成」 + を参照してください. + + + + プリンタを使用するために /dev + エントリを 設定し, /etc/printcap の + lp 項目でそのエ ントリを指定します. + これについては, 「 + プリンタデバイスの特定」 を参照してください. + プリンタをシリアルポートに接続した場合は, + fs, fc, + xs, xc + の項目を設定する必要があります. こちらについては, + 「 + スプーラのための通信パラメータの設定」 + を参照してください. + + + + プレインテキスト用の入力フィルタのインストールを + おこないます. 「 + テキストフィルタのインストール」 + を参照してください. + + + + &man.lpr.1; コマンドで何かを印字することで設定のテス + トをおこないます. + 印字してみよう と + + トラブルシューティング を参照してください. + + + + + PostScript プリンタのような, プリンタ言語を + 使用しているプリンタには, プレインテキストを直接印字させる + ことができません. 上にアウトラインを示し, 以下の節で説明す + る簡単な設定方法の説明では, そのようなプリンタを設置してい + る場合は, プリンタが認識できるファイルだけを印字の対象とし + ているという仮定をしています. + + + 多くの場合, + 利用者はシステムに設置されているプリンタすべてでプ + レインテキストが印字できることを期待しています. 印字作業を + おこなうためにLPDのインタフェースを利用するプログラムでも, + 通 常, そのような仮定を置きます. + プリンタ言語を使用するプリン タを設置しており, + そのプリンタ言語で記述されたジョブと, + これに加えて, + プレインテキストのジョブも印字できるよ うにしたいならば, + 上で示した簡単な設定方法に加えて, さら + なる設定をおこなうことを強くお勧めします. すなわち, + 原始的なプ レインテキストから PostScript (もしくは, + 他のプリンタ 言語) + に変換するプログラムをインストールしてください. 「 + プレインテキストのジョブを PostScript + プリンタで印字する」 + で, そ れをどのようにおこなえばよいのかが + 説明されています. + + + 日本語を印字したい場合は, プリンタ言語を使用し + ていない「日本語プリンタ」についても, + プリンタ固有のエスケー プシーケンスを送る必要があります. + また, 漢字コードをプリン + タが設定しているものに変換したりする必要があり, 各プリンタ + 毎に, 日本語用のフィルタが必要になります. + + + + プリンタに名前を付ける + + 最初の (簡単な) ステップで, プリンタの名前を考えます. + プ リンタには別名をいくつか付けることもできるので, + 機能的な名前 + でも風変わりな名前でもどちらを選んでもまったく + 問題はありません. + + 少なくとも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 が付けられていま す. + + + + ヘッダページの印字を禁止する + + 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 + ひとつ分だけ 字下げします. 最後の行以外のすべての行は, + 行末にバックスラッ シュを記述します. + + + + スプーリングディレクトリの作成 + + スプーラの簡単な設定の次のステップでは, + スプーリン + グディレクトリを作成します. + プリンタに送られるジョブ は, + その印字が終了するまでこのディレクトリに置かれます. また, + 他のたくさんのスプーラもこのディレクトリにファイ + ルを置きます. + + 様々な事情によりスプーリングディレクトリは, 通常, 慣例 + として /var/spool の下に置きます. + また, スプーリングディレクトリの内容はバックアップをす + る必要はありません. + &man.mkdir.1; によってディレクトリを + 作るだけでスプーリングディレクトリの復旧は完了します. + + + スプーリングディレクトリの名前は, これも慣例ですが, 次 + のようにプリンタの名前と同じにします. + + &prompt.root; mkdir /var/spool/printer-name + + しかしながら, ネットワーク上に使用可能なプリンタがたく + さんあるならば, LPDで印字するための専用のディレクトリに + スプーリングディレクトリを置きたいと思うかもしれません. + 例に出てきたプリンタ rattan と + bamboo につい て, この方式を採用すると, + 次のようになります. + + &prompt.root; mkdir /var/spool/lpd +&prompt.root; mkdir /var/spool/lpd/rattan +&prompt.root; mkdir /var/spool/lpd/bamboo + + + 各ユーザが印字するジョブのプライバシを守りた + いと考えているならば, スプーリングディレクトリを保護し + て, これを誰からでもアクセスできないようにしたいと思う + かもしれません. スプーリングディレクトリは, deamon ユー + ザと daemon グループに所有され, 読み込み, 書き込み, 検 + 索可能であり, 他からはアクセスできないようにするべきで + す. 例題のプリンタに対して, 次のようにすることにしましょ + う. + + &prompt.root; chown daemon.daemon /var/spool/lpd/rattan +&prompt.root; chown daemon.daemon /var/spool/lpd/bamboo +&prompt.root; chmod 770 /var/spool/lpd/rattan +&prompt.root; 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 + デフォルト値として使用します. + + + + プリンタデバイスの特定 + + ポート用エントリを /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 には存在していません. + + 設置したプリンタがパラレルポートに + 接続されている場合は, + 「 + テキストフィルタのインストール」 + まで読み飛ばしてください. + そうでない場合は, 次節の説明に続いてください. + + + + スプーラのための通信パラメータの設定 + + シリアルポートにプリンタを接続した場合, プリンタにデー + タを送信するフィルタプログラムに代わり, 通信速度やパリ + ティ, その他のシリアル通信パラメータを設定することがで + きます. このことによる利点は, + + + + /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[bit/秒] + のいずれかです. + + + + + fc#clear-bits + + デバイスをオープンした後で, + sgttyb 構造体の + clear-bits + フラグビットをクリアします. + + + + + fs#set-bits + + sgttyb 構造体の + clear-bits + フラグビットをセッ トします. + + + + + xc#clear-bits + + デバイスをオープンした後で, ローカルモードビット + clear-bits + をクリアします. + + + + + xs#set-bits + + ローカルモードビット + set-bits + をセットします. + + + + + fc, fs, + xc, そして xs + のビットに関 する詳しい情報については, + /usr/include/sys/ioctl_compat.h + を参照してく ださい. + + 項目 lp で指定されたデバイスを LPD + がオープンする とき, LPD は sgttyb + 構造体のフラグビットを読み出 します. そして, 項目 + fc の全ビットをクリアします. 次に, + 項目 fs のビットをセットし, + その結果を設定 します. + ローカルモードビットに関しても同様におこなわれます. + + 例題のプリンタで6番目のシリアルポートに接続されたプリ + ンタの設定を追加してみましょう. 通信速度は38400bpsに設 + 定します. フラグビットとして, TANDEM, ANYP, LITOUT, + FLUSHO, PASS8 をセットします. ローカルモードビットでは, + LITOUT と PASS8 フラグをセットします. + + +bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ + :sh:sd=/var/spool/lpd/bamboo:\ + :lp=/dev/ttyd5:fs#0x82000c1:xs#0x820: + + + + テキストフィルタのインストール + + ここまでで, + プリンタにジョブを送るために使うテキストフィ ルタを 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 + + そして, このファイルを実行可能にします. + + &prompt.root; 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:fs#0x82000e1:xs#0x820:\ + :if=/usr/local/libexec/if-simple: + + + + 印字してみよう + + 簡単な LPD 設定も終わりにたどり着きました. 残念ながら, + 設定はこれでおしまいというわけではありません. なぜなら, + さらに, 設定をテストし, すべての問題点を解決しなくては + ならないからです. 設定をテストするために, 何かを印字し + てみましょう. LPD システムで印字をするためには, + &man.lpr.1; コマンドを使います. このコマンドは, 印字する + ためのジョブを投入する働きをします. + + &man.lpr.1; コマンドを + 「 + プリンタとの通信状況を調べる」で紹介した, + あるテスト用のテキストを生成してくれる + &man.lptest.1; プログラムと一緒に使うこともできます. + + 簡単な LPD + 設定をテストするために: + + 次のように入力してください. + + &prompt.root; lptest 20 5 | lpr -Pprinter-name + + ここで, printer-name + は /etc/printcap + で指定したプリンタ名 (もしくはその別名) です. デフォルト + のプリンタを使用する場合は, + 引数を付けないで + &man.lpr.1; を打ち込んでください. もう一度述べますが, ポス + トスクリプトを期待しているプリンタをテストするならば, + &man.lptest.1; を使う代わりに PostScript で書かれたプ + ログラムをプリンタに送ってください. プログラムを送るた + めには, プログラムをファイルに格納して, lpr + file + と打ち込みます. + + PostScript プリンタの場合, 送信したプログラムによ + る結果が得られるでしょう. + &man.lptest.1; を使った場合は, + 以下のような結果が見られるでしょう. + + +!"#$%&'()*+,-./01234 +"#$%&'()*+,-./012345 +#$%&'()*+,-./0123456 +$%&'()*+,-./01234567 +%&'()*+,-./012345678 + + 更にプリンタをテストしたい場合は, (言語ベースのプリン + タのための) もっと大きなプログラムを送信するか, 引数を + 変えて + &man.lptest.1; を実行します. 例えば, lptest + 80 60 で それぞれ80文字の行を60 + 行生成します. + + プリンタがうまく動かなかった場合は, 次の節, 「 + トラブルシューティング」をご覧ください. + + + + トラブルシューティング + + &man.lptest.1; を使った簡単なテストをおこなった結果, + 正しい出 + 力を得られずに, 以下に示すような出力が得られるかもしれ + ません. + + + しばらくしたら出力される, または, + 紙の全体が出て こない + + プリンタは上で示されたような印字を + おこなったのですが, しばら くして止まってしまい, + 動かなくなってしまいました. 印字 + された結果をプリンタから取り出すためには, + プリンタにある PRINT REMAINING ボタン, また は, FORM + FEED ボタンを押す必要があるようです. + + この場合は, + おそらくジョブはプリントをする前に更にデー + タが送られてこないか待ち続けているのでしょう. + この問題を解決するためには, プリンタに FORM FEED + 文字 (あるいは特定の必要な文字コード) を + 送るテキストフィルタを使ってください. + プリンタ内部に残っ + たデータをプリンタにすぐに印字させるには, 普通は, + これ で十分です. + 次のジョブが前のジョブの最終ページの中央の + どこかから印字を開始させないためにも, + 紙の途中で印字の + ジョブが終了したかどうかを確認するのは有益です. + + シェルスクリプト + /usr/local/libexec/if-simple + を次のように変更して, プリンタへジョブを送信した後に + FROM 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) + をペアで使います. (訳注:Machintosh では CR + のみで表現されています). 大抵のプリンタでは, + 改行を表わすために MS-DOS の慣習にしたが + います. + + FreeBSD で印字する場合, 印字したテキストは LF + 文字だけ が使われていました. プリンタでは LF + 文字を見つけると, 紙を1行分送り出しました. しかし, + 次の文字を印字するた + めの紙の水平方向の位置は維持されました. すなわち, CR + 文字が意味することは, + 次の文字を印字する位置を紙の左端 + に動かすことです. + + FreeBSD + がプリンタに動作をして欲しいと思っている動作を + 以下に示します. + + + + + + プリンタが CR を受け取ったとき + CR 動作 (復帰) をおこなう + + + + プリンタが LF を受け取ったとき + CR + LF 動作 (復帰, 改行) をおこなう + + + + + + このように動作させるための方法が + いくつかあります. + + + + これらの文字の解釈を変えるために, プリンタ + の設定スイッチかコントロールパネルを操作する方 + 法. どのようにして設定をするかはプリンタのマニュ + アルを参照してください. + + + FreeBSD 以外のオペレーティン + グシステムを切り替えて使う場合, CR と LF 文字 + の解釈をそのオペレーティングシステムで使われて + いるようにプリンタを + 再設定する必要がある + かもしれません. 以下に示す解決方法のいずれかを + 選ぶのがよいかもしれませんね. + + + + + 自動的に LF を CR+LF に変換してくれる + FreeBSD 用のシリアルドライバを入手する方法. も + ちろん, このドライバはプリンタ専用に接続される + シリアルポート + のみで動作します. この機能 + を許可するためには, + /etc/printcap ファ + イルで対象プリンタの fs + 項目で CRMOD ビッ トをセットします. + + + + 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. Writes a form feed character +# after printing job. + +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 のフロー制御をサポート + している場合は, 項目 fs で + TANDEM ビット をセットして, FreeBSD + にこの機能を使用させて ください. + + + + プリンタがキャリアフロー制御をサポートして + いる場合は, 項目 fs で MDMBUF + ビットをセッ トして下さい. それから, + プリンタとコンピュータ + を接続しているシリアルケーブルがキャリアフロー + 制御用に正しく配線されたものかどうかを確認して + ください. + + + + プリンタがフロー制御をまったく + サポートしていな い場合は, 項目 + fs の NLDELAY と TBDELAY, + CRDELAY, VTDELAY, BSDELA のいくつかのビッ + トを組み合わせて使い, プリンタへ送るデータの流 + れに適当な遅延を加えてください. + + + + + + + プリンタは意味不明な + 文字列を印字した + + プリンタはランダムなゴミのように + 見えるものを印字しまし たが, + 意図したテキストは印字してくれませんでした. + + この問題は, 通常, + シリアルポートに接続したプリンタでの + 通信パラメータの誤りからくる前項とは別の症状です. + br 項目の通信速度と + fsfc + 項目のパリ ティビットの設定を共に調べてみてください. + また, プリン タでの設定が + /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 を使います. + + + + + + + + + + プリンタを使う + + この節では, FreeBSD で設定したプリンタを使う方法について説明 + します. ここでは, ユーザレベルでのコマンドを概説します. + + + &man.lpr.1; + + 印字をおこないます. + + + + &man.lpq.1; + + プリンタキューを調べます. + + + + &man.lprm.1; + + プリンタキューにあるジョブを削除します. + + + + + 管理者用コマンド &man.lpc.8; もありますが, + これは 「プリンタを管理する」 + に記 + します. このコマンドは, プリンタやそのキューの制御のために用い + られます. + + &man.lpr.1;, &man.lprm.1;, そして &man.lpq.1; の 3 + コマンドは, + オプションをとり, これによって, + /etc/printcap のように操作の対象となる + プリンタやキュー + を指定します. これによって, 様々なプリンタに対してジョブを送る + , 取り消す, 調査することができます. + が使われなかった場 + 合は, これらのコマンドは + PRINTER 環境変数で指定されたプリンタ + を使用します. + そして, PRINTER 環境変数がなかった場合は, これ + らのコマンドはデフォルトのプリンタ + lp を使います. + + 以下では, デフォルトプリンタ + という用語が意味するプリンタ は, PRINTER + 環境変数で指定されたプリンタ, もしくは, PRINTER + 環境変数がない場合は, lp + という名前のプリンタです. + + + 印字する + + ファイルを印字するためには, + 次のように入力してください. + + &prompt.user; lpr filename ... + + これにより, + 入力されたファイルのそれぞれをデフォルトのプリンタ + から印字します. ファイル名が与えられなかった場合, + &man.lpr.1; + は標準入力から印字するデータを読み込みます. 例えば, 次のコマン + ドにより, ある重要なシステムファイルが印字されます. + + &prompt.user; lpr /etc/host.conf /etc/hosts.equiv + + 印字させるプリンタを選択するためには, + 次のように入力します. + + &prompt.user; lpr -P printer-name filename ... + + 次の例では, プリンタ rattan に, + カレントディレクトリにあ + るファイルの詳細なリストを印字しています. + + &prompt.user; ls -l | lpr -P rattan + + 上記の &man.lpr.1; コマンドではファイル名の指定がないので, + lpr は標準入力から印字するデータ, + この場合, ls -l + コマンドの出力, を読み込みます. + + &man.lpr.1; コマンドでは, + 出力の整形を制御したり, ファイル変換を + 適用したり, 複数部数のコピーを作成したり, などといた様々な幅広 + いオプションを受け付けることもできます. + 詳細については, + 「 + その他の印字オプション」をご + 覧ください. + + + + ジョブの処理状況を調べる + + &man.lpr.1; コマンドを使って印字をする場合, プリントしようと + するデータは “プリントジョブ” + と呼ばれる箱に一緒に置かれ, こ + れが LPD スプーリングシステムに送られます. プリンタにはそれぞ + れ, ジョブ用のキューがあり, + 送られてきたジョブはあなたや他のユー + ザからの別のジョブと一緒にそのキューで並んで, + 処理される順番を + 待ちます. + プリンタは到着順にこれらのジョブの印字をおこないます. + + デフォルトプリンタのキューの状態を表示するには, + &man.lpq.1; と入 + 力します. プリンタを指定するときは, + オプションを使い + ます. 例えば, 次のコマンド + + &prompt.user; 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つのファイルを処理します. すなわち, + &man.lpr.1; + のコマンドラインに複数のファイル名が与えられたときは, + 1つのジョブとして扱われるのです. このジョブは, 現在, アクティ + ブジョブ (“Rank” + の欄の active という後に注目) になってい + ます. これは, プリンタからそのジョブが現在印字されているはずで + あることを意味しています. 2番目のジョブでは, + &man.lpr.1; コマン + ドに標準入力からデータが与えられています. + 3番目のジョブはユー + ザ mary から与えられました. + このジョブのサイズはとても大きくなっ + ています. 彼女がプリントしようとしたファイルのパス名はここで表 + 示させるには長すぎるため, + &man.lpq.1; コマンドはドットを3つだけ + 表示しています. + + &man.lpq.1; からの + 出力で一番最初の行もまた有益な情報を与えていま + す. この行から, プリンタが現在何をしているか (あるいは, 少なく + とも LPD がプリンタが + していると思っていること) が分かります. + + &man.lpq.1; コマンドは + オプションもサポートしています. こ + れにより, + 詳しい情報が表示されます. 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 + + + + ジョブの削除 + + 印字するようジョブを + 送った後で印字を中断したくなったときは, + &man.lprm.1; コマンドで, + キューの中からそのジョブを削除することが + できます. 大抵の場合, アクティブジョブでさえも + &man.lprm.1; を使っ + て削除することができますが, + そのジョブの一部またはすべてが印字さ + れてしまうかもしれません. + + デフォルトプリンタへのジョブを削除するためには, 最初に, + &man.lpq.1; を使ってそのジョブ番号を調べます. + すなわち, それから, + 次のように入力して, ジョブを削除します. + + &prompt.user; lprm job-number + + 特定のプリンタへのジョブを削除するときは, + オプション + を使ってそのプリンタを指定します. + 例えば, プリンタ bamboo + のキューからジョブ番号 + 10のジョブを削除するには次のようにします. + + &prompt.user; lprm -P bamboo 10 + + &man.lprm.1; コマンドには略記法がいくつかあります. + + + lprm - + + あなたが (デフォルトプリンタへ) + 送ったジョブをすべて削除し ます. + + + + lprm user + + ユーザ user が + (デフォルトプリンタへ) 送ったジョブ をすべて削除します. + 他のユーザのジョブを削除できるのはスー パユーザだけです. + あなたは, あなた自身のジョブしか削 + 除することはできません. + + + + lprm + + ジョブ番号もユーザ名もシンボル + も指定されない + ときは, &man.lprm.1; は現在のアクティブジョブを, そのジョ + ブを送ったのがあなた自身であるときに限り, デフォルトプ + リンタから削除します. ただし, スーパユーザは任意のア + クティブジョブを削除することができます. + + + + + 上記の略記法をデフォルトプリンタではなく + 特定のプリンタに対して おこなうときは, + オプションでそのプリンタを指定するだけよ いのです. 例えば, + プリンタ rattan のキューへあなたが送っ + たジョブをすべて削除するためには次のようにします. + + &prompt.user; lprm -P rattan - + + + ネットワーク環境で作業をしている場合, あるホストか + ら送られたプリンタジョブは, これを送ったホストで + &man.lprm.1; を + 使った場合に限って, + これを削除することができます. 他のホストで + 同じプリンタを使えたとしても, + このジョブを削除することはできま + せん. + 次の例では, 他ホストからジョブを削除することを試みていま + す. + + &prompt.user; lpr -P rattan myfile +&prompt.user; rlogin orchid +&prompt.user; lpq -P rattan +Rank Owner Job Files Total Size +active seeyan 12 ... 49123 bytes +2nd kelly 13 myfile 12 bytes +&prompt.user; lprm -P rattan 13 +rose: Permission denied +&prompt.user; logout +&prompt.user; lprm -P rattan 13 +dfA013rose dequeued +cfA013rose dequeued + + + + + + その他の印字オプション + + &man.lpr.1; コマンドには, テキストの整形や, + 図や他のファイル形 + 式の変換, 複数部コピーの生成, ジョブの扱いなどをを制御すること + ができます. + この節では, これに関するオプションについて記してい + ます. + + + 整形と変換に関するオプション + + 以下の &man.lpr.1; 用のオプションはジョブにおける + ファイルの + 整形の制御に関するものです. + このオプションは, ジョブにプレイン + テキストが含まれない場合や + &man.pr.1; ユーティリティを使ってプレイ + ンテキストを整形する場合に用いてください. + + 次の例では, プリンタ + bamboo に (TeX 組版システムによる) + DVI ファイル + fish-report.dvi を印字しています. + + &prompt.user; lpr -P bamboo -d fish-report.dvi + + このオプションは, + ジョブに含まれるすべてのファイルに対して適用さ れます. + したがって, 1つのジョブに (例えば) DVI ファイルと ditroff + ファイルを混在させることはできません. その代わりに, + ファイルを 形式毎に別々のジョブに分け, + それぞれのジョブでその形式用の変換 + オプションを使って印字してください. + + + + を除くすべてのオプションを使用 するためには, + 出力先プリンタ用の変換フィルタが必要です. 例えば, + オプションを使用するには, DVI + 用の変換フィルタが必要 です. 詳細については, 「 + 変換フィルタ」で説明しています. + + + + + + cifplot ファイルを印字します. + + + + + + DVI ファイルを印字します. + + + + + + FORTRAN プログラムを印字します. + + + + + + plot のデータを印字します. + + + + + + 出力に対して, number + カラム分の字下げをおこないます. + number が省略されると, + 8カラム分字下げされます. + このオプションはある変換フィルタと一緒の指定されたとき + のみに機能します. + + + + と数字の間に空白を入れてはいけません. + + + + + + + 制御文字を含む文字通りの + テキストデータを印字します. + + + + + + ditroff (device independent troff) データ + を印字します. + + + + -p + + 印字する前に &man.pr.1; + によってプレインテキストを整形し + ます. 詳細については &man.pr.1; をご覧ください. + + + + + + &man.pr.1; コマンドにより生成されるヘッダを, + ファイル名の + 代わりに title とする. + このオプションは, + と一緒に使ったときのみ機能する. + + + + + + troff データを印字します. + + + + + + ラスタのデータを印字します. + + + + + 次の例では, &man.ls.1; の + マニュアルを美しく整形したものをデフォ + ルトプリンタで印字しています. + + &prompt.user; zcat /usr/share/man/man1/ls.1.gz | troff -t -man | lpr -t + + &man.zcat.1; コマンドで + &man.ls.1; のマニュアルのソースファイルの圧 + 縮を復元し, これを + &man.troff.1; コマンドに渡しています. これによ + り, ソースファイルが整形され, GNU troff の形式となります. そ + の結果は &man.lpr.1; に渡され, + LPD スプーラへジョブの要求が発せ + られます. &man.lpr.1; には + オプションが使われているため, + スプーラにて, GNU troff の形式からジョブを印字したときにデフォ + ルトプリントが解釈できる形式へと変換されます. + + + + ジョブに関するオプション + + 以下のオプションは, &man.lpr.1; によって, そのジョブを特殊 + な扱いにするよう LPD に指示するためのものである. + + + -# copies + + ジョブに含まれるファイルのそれぞれを + 1部だけ印字するの ではなく, + copies + 部のコピーを生成させるものです. 管理者によっては, + プリンタの消耗を避け, コピー機による + 複製を奨励するためにこのオプションの使用が禁止されてい + るかもしれません. これに関しては, 「 + 複数部のコピーの印字を制限する + 」をご覧ください. + + 次の例では, デフォルトプリンタで + parser.c を3 部コピーし, 次に, + parser.h を3部コピーしています. + + + &prompt.user; lpr -#3 parser.c parser.h + + + + -m + + 印字ジョブが完了した後で, メールを送ります. + このオプショ ンを付けると, LPD + システムはジョブの扱いが終了したと きに, + あなたのアカウントにメールを送ります. メールのメッ + セージには, ジョブが正常終了したのか, あるいは, 何か異 + 常があり, (しばしば) + その異常が何であったのかが書かれて います. + + + + -s + + 印字ファイルをスプールディレクトリにコピーせず, + 代わりに, + シンボリックリンクを作成するよう指示します. + + 印字させるジョブのサイズが大きいとき, このオプショ + ンを使うと便利かもしれません. このオプションにより, + スプー ルディレクトリの容量が節約されます (それに, + 巨大なジョ + ブのお陰でスプールディレクトリのあるファイルシステムの + 空き容量がなくなってしまうかもしれません). さらに, + LPD + がいちいちすべてのデータをコピーする必要がなくなりま + すので, 時間の節約にもなります. + + ただし, 欠点もあります. LPD + はオリジナルのファイルを 直接参照するので, + 印字が終了するまでそのファイルを変更 + したり削除することができません. + + + リモートのプリンタで印字している場合, LPD は, + 結局のところ, ローカルホストからリモートホストにファ + イルをコピーする必要があります. したがって, + オプ + ションはローカルのスプーリングディレクトリの + 空き容量を 節約するだけで, + リモート側では節約されません. それに も関わらず, + このオプションはそれでも有用です. + + + + + -r + + ジョブに含まれるファイルを, + スプーリングディレクトリに + ファイルをコピーした後に削除します. もしくは, + オプションと一緒に使われた場合は, + 印字終了後に削除され ます. + このオプションの使用には十分注意して下さい. + + + + + + + ヘッダページ用オプション + + 以下のオプションにより, + ジョブのヘッダページに通常印字さ + れるテキストを + &man.lpr.1; に調整させることができます. 対象のプリ + ンタからヘッダページが出力されない場合は, + これらのオプションは + 何の効力も持ちません. + ヘッダページの設定に関する情報については, + 「 + ヘッダページ」を参照してください. + + + -C text + + ヘッダページに印字されるホスト名を + text に置き換 えます. なお, + ホスト名の場所には, 通常, ジョブの要求が + あったホストの名前が印字されます. + + + + -J text + + ヘッダページに印字されるジョブ名を + text に置き換 えます. + ジョブ名の場所には, 通常, ジョブの最初のファイ ル名, + または, 標準入力からデータが印字されたときは + stdinが印字されます. + + + + -h + + ヘッダページを出力を禁止します. + + + サイトによっ ては, + そのヘッダページの生成方法により, このオプション + の効果が現れないかもしれません. 詳細は, 「 + ヘッダページ」をご覧ください. + + + + + + + + + プリンタを管理する + + プリンタの管理者として, プリンタの設置, 設定, + そして, それ + らのテストをおこなう必要がありました. + &man.lpc.8; コマンドにより, + これまでとは別な管理方法がプリンタと対話的におこなわれます. + &man.lpc.8; により, 次のことが可能となります. + + + + プリンタの起動, 停止をおこなう. + + + + キューへの入力の許可, 禁止をおこなう. + + + + それぞれのキューにあるジョブの順番を変更する. + + + + 最初に用語に関する注意をしておきます. + プリンタが停止してい るとは, + キューの中にあるどのジョブも印字されることがない状態 + を言います. この状態においても, + ユーザはまだジョブの要求をおこなう ことができますが, + これらのジョブはキューの中で, + プリンタがスタートする状態になるまで, + あるいは, キューの内容が削除され + るまで待たされることになります. + + キューが禁止状態にあるとは, (root + 以外の) すべてのユーザが + プリンタにジョブを要求することができない状態のことを言います. + キューが許可状態にある場合は, + ジョブの入力が許可されます. + キューが禁止状態にある場合でも, + プリンタをスタートす + る状態にすることは可能です. この場合は, + キューが空になるまで, + キュー内のジョブの印字が続けられます. + + 一般的に, + &man.lpc.8; コマンドを使用するには root の権限を持って + いる必要があります. 一般のユーザも + &man.lpc.8; コマンドを使うこと + はできますが, プリンタの状態を取得することとハングしたプリンタ + を再スタートすることだけに使用が制限されています. + + 以下に, + &man.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 は, ユーザが + &man.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 をおこなっ + たことと等しくなります. + + + + + コマンドラインから上記のコマンドを入力すると, + &man.lpc.8; はこれ + を受け付けます. コマンドが入力されなかった場合は, + &man.lpc.8; は + 対話モードに入り, + exit, quit, + または, ファイル終端 + 文字が入力されるまでコマンドの入力ができます. + + + + + プリンタ設定上級編 + + この節では, 特殊な形式のファイルを印字するためのフィルタ, + ヘッ ダページ, ネットワーク越しのプリンタへの印字, そして, + プリンタ 使用の制限や課金について説明しています. + + + フィルタ + + LPD では, ネットワークプロトコル, キュー, アクセス制御, そ + して, 印字のためのその他の側面について扱いますが, + 実際の 作業のほとんどは + フィルタ によっておこなわれています. + フィルタ は, プリンタと通信し, + プリンタのデバイス依存性や特殊な要求を扱 うプログラムです. + 簡単なプリンタ設定では, プレインテキストのた + めのフィルタをインストールしました. このプレインテキストフィル + タは, ほとんどのプリンタで機能する極めて単純なものでした. + (「 + テキストフィルタのインストール」を参照) + + しかしながら, 形式変換やプリンタ課金, 特定のプリンタの癖, + など をうまく利用するためには, + フィルタがどのように機能するかという + ことを理解しておくべきです. これらの側面を扱うためには, 最終的 + には, フィルタの責任であるからです. そして, これは悪い情報です + が, ほとんどの場合において, + あなた自身がフィルタを供給す + る必要があるということです. また都合のよいことには, + たくさんのフィルタが 一般的に利用できるということです. + もしフィルタがなかったとし ても, 普通は, + フィルタを作るのは簡単です. + + FreeBSD にも, プレインテキストを印字させることができる + /usr/libexec/lpr/lpf + というフィルタが1つ付いています. + (このフィルタはファイルに含まれるバックスペースやタブを扱いま + す. また, 課金をすることもできますが, できることはこれだけしか + ありません.) いくつかのフィルタとフィルタの構成要素が FreeBSD + の ポート集にもあります. + + この節で述べることは次の通りです. + + + + + フィルタはどのように機能しているか」では, + 印字の過程におけ るフィルタの役割を概説します. + この節を読むことで, 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 を検討するべきです. + + + + + フィルタはどのように機能しているか + + 既に言及したように, フィルタとは, プリンタにデータを送る + 際に, デバイスに依存した部分を取り扱うために LPD + によって起動 される実行プログラムです. + + LPD がジョブ中のファイルを印字しようとするとき, LPD + はフィル タプログラムを起動します. このとき, + フィルタの標準入力を印字す るファイルに, + 標準出力をプリンタに, そして, 標準エラー出力をエ + ラーログファイル (/etc/printcap 内の + lf 項目で指 定されたファイル, または, + 指定されていない場合は, デフォルトと して + /dev/console) にセットします. + + LPD が起動するフィルタと, その引数が何であるかは, + /etc/printcap + ファイルの内容と, ジョブの起動時に + ユーザが指定した + &man.lpr.1; コマンドの引数に依存しています. 例え + ば, ユーザが lpr -t と入力した場合は, + LPD は出力先のプリ + ンタ用の tf 項目で指定されている troff + 用のフィルタを起動 + させるでしょう. + ユーザがプレインテキストの印字を指示したときは, + if で指定されたフィルタが + 起動されるでしょう (このことはほ + とんどの場合にあてはまります. + 詳細については, 「 + 出力フィルタ」をご覧ください). + + /etc/printcap + で指定可能なフィルタは次の3種類がありま す. + + + + + テキストフィルタ + (LPD のドキュメントでは紛ら + わしいことに + 入力フィルタと呼んでいますが) は一般の + テキストの印字を扱います. これはデフォルトのフィルタと + 考えてください. LPD では, すべてのプリンタに対して, デフォ + ルトでプレインテキストが印字できることを期待しています. + さらに, バックスペースやタブを正しく扱い, また, 他の特 + 殊な文字が入力されてもプリンタに混乱を来さないようにす + るのはテキストフィルタの仕事であると考えています. + + プリンタの使用に対して課金をしなくてはならない環境にあ + るときは, テキストフィルタが印字したページ数を数える作 + 業もしなくてはなりません. この作業は, 通常, 印字した行 + 数を数え, これをプリンタが1ページ当たりに印字できる行 + 数と比較することでおこなわれます. + + テキストフィルタは, 次のような引数を付けて起動されます. + + + filter-name + -c + -wwidth + -llength + -iindent + -n login + -h host + acct-file + + + ここで, + + + + + 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 + -xpixel-width + -ypixel-height + -n login + -h host + acct-file + + + ここで, pixel-width は, + px 項目で指定され + た値 (デフォルトは0), + pixel-height は, + py 項 + 目で指定された値 (デフォルトは0) です. + + + + 出力フィルタは, + テキストフィルタが指定されて + おらず, かつ, ヘッダページの出力が許可されている場合に + のみ使われます. + 「 + 出力フィルタ」で, これらのことについて説明し + ます. アウトプットフィルタに対する引数は次の2つだけです. + + + filter-name + -wwidth + -llength + + + ここで, は, + テキストフィルタの場合 + と同じです. + + + + フィルタは, 次に示すの終了状態をもってプログラムを + exit するべきです. + + + exit 0 + + フィルタがファイルを正常に印字した場合. + + + + exit 1 + + フィルタはファイルの印字に失敗したが, LPD + に再度ファ イルの印字を試みて欲しい場合. + この終了状態で終了した場 合, LPD + はフィルタを再スタートします. + + + + exit 2 + + フィルタはファイルの印字に失敗し, かつ, LPD + に再出力 を試みて欲しくない場合. この場合, LPD + はそのファイル を放棄します. + + + + + FreeBSD に付属するテキストフィルタ + /usr/libexec/lpr/lpf は, FROM FEED + 文字が送られたと + きやプリンタ使用に対する課金をどのようにするかを + 決定するために, ページ幅やページ長の引数を利用します. また, + 課金用のエントリを 作成するため, ログイン名, ホスト名, + 課金ファイル名の引数を利用 します. + + もし, フィルタの購入を検討しているならば, LPD + と互換性がある かどうかを確認してください. もしそうならば, + 上述の引数リストをサ ポートしていなければなりません. + 一般向けの使用のためにフィルタ + を作成する計画をしている場合は, + 同じ引数リストと終了コードをサ ポートしてください. + + + + プレインテキストのジョブを PostScript プリン + タで印字する + + コンピュータと PostScript (または, 他の言語に対応し た) + プリンタをあなたしか使用しない場合は, プリンタにプレ + インテキストを絶対に送らない, そして, + プリンタにプレインテキス + トを送りたがっている様々なプログラムの機能を決して + 使わないこと にしてください. そうすれば, + この節に書かれたことに心を煩わせる必 + 要はまったくなくなります. + + しかし, PostScript + とプレインテキストの両方のジョブをプリン + タへ送りたいと思っている場合は, + プリンタ設定についての要求が増 えるでしょう. + 両者をプリンタへ送信するためには, 到着 + したジョブがプレインテキストであるか PostScript であるかを + 検出するテキストフィルタが必要です. PostScript のジョブは + すべて %! + で始まらなければならないことになっています + (他のプリンタ言語に関しては, + プリンタのドキュメントをご覧くだ さい). + ジョブの最初の2文字がこれならば, PostScript である + ことが分かります. したがって, + ジョブのそれ以降の部分をプリンタに直 接送ることができます + (訳注:PostScript では, % + 以降はコメントとして扱われるので, 最初の %! の行を 読み捨てても問題はない). + 最初の2文字が %! でない場 + 合は, フィルタはテキストを PostScript に変換し, その結果を + 使って印字をおこないます. + + この作業をどうやってやればよいのでしょうか. + + シリアルポートにプリンタを接続した場合は, + lprps をインス + トールすることをお勧めします. lprps は + PostScript 用のフィルタで, + プリンタとの双方向通信をおこないます. このフィルタでは, + プリンタか らの冗長な情報を得ることで, + プリンタの状況を示すファイルが更新 されていきます. + したがって, ユーザや管理者は + (トナー残量少や + 紙詰まりといった) + プリンタの状況を正確に知ることができます. しかし, + もっと重要なことは, psif + と呼ばれるプログラムが 含まれているということです. + このプログラムは, 入力されたジョブ + がプレインテキストかどうかを検出し, これを PostScript に変 + 換するために, textps + (lprps に付属する別のプログラ ム) + を呼び出します. そして, このジョブをプリンタに送るために, + lprps が使われます. + + lprps は FreeBSD + のポート集に含まれています (「 + ポートコレクション」を参照してください). + もちろん,自分自身でプログラムを取ってきて, コンパイルし, + インストールす ることもできます. lprps + をインストールした後は, lprps + の一部である psif + プログラムのパス名を指定する だけです. ポート集から + lprps をインストールしたときは, + /etc/printcap の中のシリアル接続した + PostScript プリンタのエントリに対して, 次を使ってください. + + + +:if=/usr/local/libexec/psif: + + LPD + にプリンタをリード・ライトモードでオープンさせるために, + rw 項目も指定すべきです. + + パラレルポートに接続したプリンタの場合 (すなわち, + 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 +# + +read 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 の ポート集 (「ポートコレクション」 + を参照してください) には, a2ps + と呼ばれるテキストから PostScript に変換するプログラムが + 入っています. + + + 訳注: 上記スクリプトでは, + 先頭の行を読み込むために read を使っていますが, + 困ったことに, read は読み込んだ文字列の先頭 + の空白文字を取り除いてしまいます. 従って, + これらの空白文字は印 字されないことになり, + 印字結果がファイルのイメージと異なる場合 が出てきます. + この事情は csh を利用した場合でも変わりません. 仮に, + 先頭の空白文字を除去しない read コマンドを作ったとしても, + 「echo $first_line」の $first_line + 変数の内容をシェルが展開す る際に $first_line + の先頭の空白文字が失われるため, 問題の解決 にはなりません. + 残念ながら, 訳者はこの問題をシェルプログラムだ + けで解決する方法をしりません. perl か C + 言語の力を借りないと解 決できないと思います. + + + + + 非 PostScript プリンタで PostScript + をシミュレートする + + PostScript + は質の高い組版と印字をおこなうための事実 + 上の標準です. しかしながら, PostScript は, + 高価な標 準です. ありがたいことに, + Alladin Enterprises から + Ghostscript と呼ばれる, + PostScript 互換の動作をするフリー + のプログラムが出されていて, FreeBSDで動きます. Ghostscript + はほとんどの PostScript ファイルを読むことができ, これらの + 各ページをたくさんのブランドの非 PostScript プリンタを含む + 様々なデバイス用に変換することができます. Ghostscript をイン + ストールし, + プリンタ用の特別なテキストフィルタを使うことによっ て, 非 + PostScript プリンタをあたかも本物の PostScript + プリンタであるかのように動作させることができます. + + Ghostscript はポート集に入っていますので, + そこからインストール することができます. また, + 自分でソースプログラムを持ってきて, コンパイルし, インストー + ルすることもできます. この作業はとても簡単にできます. + + PostScript プリンタをシミュレートさせる場合は, + テキストフィ ルタに PostScript + ファイルを印字しようとしているかどうかを 検出させます. + PostScript ファイルでない場合は, フィルタは + そのファイルを直接プリンタに送ります + (訳注:テキストファイルを直 接印字できない場合は, もちろん, + 変換フィルタを通す必要がありま す). PostScript の場合は, + まず, Ghostscript を使い, ファ + イルをそのプリンタが理解できる形式へ変換します. + + 次の例のスクリプトは, Hewlett Packard DeskJet 500 + プリンタ用 のテキストフィルタです. + 他のプリンタで用いるときは, + 引数を gs (Ghostscript) + コマンドに変えてくだ さい. (gs -h + と入力すると, 現在インストールされている Ghostscript + でサポートされているデバイスのリストが得られます). + + +#!/bin/sh +# +# ifhp - Print Ghostscript-simulated PostScript on a DeskJet 500 +# Installed in /usr/local/libexec/hpif + +# +# Treat LF as CR+LF: +# +printf "\033&k2G" || exit 2 + +# +# Read first two characters of the file +# +read first_line +first_two_chars=`expr "$first_line" : '\(..\)'` + +if [ "$first_two_chars" = "%!" ]; then + # + # It is PostScript; use Ghostscript to scan-convert and print it + # + /usr/local/bin/gs -dSAFER -dNOPAUSE -q -sDEVICE=djet500 -sOutputFile=- - \ + && exit 0 + +else + # + # Plain text or HP/PCL, so just print it directly; print a form + # at the end to eject the last page. + # + echo "$first_line" && cat && printf "\f" && exit 0 +fi + +exit 2 + + 最後に, if 項目を通して, LPD + にこのフィルタを教えてやる 必要があります. + + +:if=/usr/local/libexec/hpif: + + これでおしまいです. lpr plain.text + とか lpr whatever.ps + と入力してみましょう. どちらも正常に印字されるは + ずです. + + + 訳注: 日本語を印字する場合は, + 日本語対応の Ghostscript が必要で す. 日本語対応版の + Ghostscript もポート集に入っているはずです. + + + + + 変換フィルタ + + プリンタ設定導入編」 + に書かれた簡単な設定が完了したら, 最初に, やってみたいと思 + うことは, 多分(プレイン ASCII テキストに加えて) + 好みのファイル形式 + のための変換フィルタをインストールすることでしょう. + + + なぜ, 変換フィルタをインストールするのか? + + 変換フィルタによって, 様々な種類のファイルを印字するこ + とが簡単になります. 例えば, TeX + 組版システムでたくさんの仕事 をしたと仮定しましょう. + そして, PostScript プリンタが接続 されているとします. + すると, TeX で DVI ファイルを作成する度に, DVI + ファイルを印字するために, これを PostScript ファイルに + 変換する必要があります. + このコマンドは次のようになるでしょう. + + &prompt.user; dvips seaweed-analysis.dvi +&prompt.user; lpr seaweed-analysis.ps + + DVI ファイル用の変換フィルタがインストールしてあると, + LPD に 変換を肩代わりさせることで毎回毎回 + おこなわなければならなかった面倒 + な変換作業を省くことができます. つまり, DVI を生成したら, + 次のような1回のコマンド入力だけで, これが印字されます. + + + &prompt.user; lpr -d seaweed-analysis.dvi + + LPD に DVI ファイルの変換をさせるためには, + オプション を指定します. + 変換オプションのリストは「 + 整形と変換に関するオプション」 + に載せてあります. + + 変化のオプションのそれぞれをプリンタに + サポートさせるためには, + 変換フィルタをインストールし, + そのパス名を /etc/printcap + の中で指定しなくてはなりません. 変換フィ ルタは, + プレインテキストを印字する代わりに, フィルタはファイル + をプリンタが理解できる形式に変換するところを除けば, + 「プリンタ の簡単な設定」で説明したテキストファイル + (「 + テキストフィルタのインストール」 を見て下さい) + に似ています. + + + + どの変換フィルタをインストールすべきか? + + 使いたいと思う変換フィルタをインストールすべきです. + DVI のデータを頻繁に印字するならば, DVI 変換フィルタ + をインストールするのが適切でしょう. 印字しなくてはなら + ない troff を大量に抱えている場合は, 多分, troff フィ + ルタが欲しくなるはずです. + + 次の表は, LPD で動作するフィルタと, + /etc/printcap + ファイルでのエントリする項目, そして, + lpr + コマンドで呼び出す方法をまとめたもの です. + + + + + + ファイル形式 + /etc/printcap項目 + lpr オプション + + + + + + cifplot + cf + + + + DVI + df + + + + plot + gf + + + + ditroff + nf + + + + FORTRAN text + rf + + + + troff + tf + + + + raster + vf + + + + プレインテキスト + if + なし, , または + + + + + + + 先の例のように, lpr -d + を使うためには, 出力先の プリンタの + /etc/printcap 内のエントリで, + df + 項目が必要であることが分かります. + + 反論はあるかも知れませんが, FORTRAN テキストや plot + のような形式は, 多分, 廃れ てていくでしょう. + あなたのサイトで, 自前のフィルタをイ ンストールするだけで, + プリントオプションのいくつか, あ るいは, + 全部に新しい意味を与えることができます. 例えば, + Prinerleaf ファイル (Interleaf デスクトップパブリッシン + グプログラムによるファイル) を直接印字したいとします. + そして, Printerleaf 用の変換フィルタを + gf 項目で + 指定したパスにインストールすれば, lpr + -g の意味 は“Printerleaf + ファイルを印字する”意味だとユーザに教 + えることができます. + + + + 変換フィルタのインストール + + 変換フィルタは FreeBSD + の基本システムのインストールとは別 + にインストールするプログラムなので, 変換フィルタは, 多 分, + /usr/local ディレクトリの下に置くべ + きです. フィルタは LPD だけが実行する特別なプログラム, + すなわち, 一般ユーザが実行する必要すらない + プログラムなので, /usr/local/libexec + ディレ クトリに置くのが普通です. + + 変換フィルタを使用可能にするためには, + /etc/printcap + の目的のプリンタの適切な項目に + フィルタがあるパス名を指定します. + + DVI 変換フィルタをプリンタ bamboo + のエントリに加 えてみましょう. プリンタ + bamboodf 項目を + 新たに加えた/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:fs#0x82000e1:xs#0x820: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 + をフィルタモード (引数 ) で, + 標準入力上で起動しています. 標準入力は印字 するジョブです. + それから, PostScript プリンタ用フィ ルタ + lprps (これについては「 + プレインテキストのジョブを PostScript + プリンタで印字する」 を参照してください) を LPD + に与えられた引数を付けて起動 します. + lprps + はこれらの引数を印字されたページ分 + の課金をおこなうために使われます. + + + + 変換フィルタのその他の例 + + 変換フィルタのインストールには決まったステップがないの + で, その代わりに, 例をもっと挙げることにします. これを, + 自分でフィルタを作る際のガイドにしてください. 適当な例が + あったら, それをそのまま使ってください. + + 次のスクリプト例は, 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 "\f" && 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 のポート集 (「ポートコレクション」 + を参照してください) には, それがあ ります. + 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 + + + + 自動変換: その他の変換フィルタ + + ここまでに述べてきたフィルタによって, 印字環境の能率が + 上がったことと思います. しかし, これはどのフィルタを使 + うかを ( &man.lpr.1; のコマンドライン上で) ユーザが指定しな + くてはならないという代価を支払って実現されています. コ + ンピュータの事情にあまり詳しくないユーザにとって, フィ + ルタのオプションを指定させられるということはいらいらさ + せられるものになるでしょう. 更に悪いことに, 間違ったフィ + ルタオプションを指定されると, 間違った形式のファイルが + そのフィルタに適用されることになり, その結果, 何百枚も + の紙を掃き出すことになるかもしれません. + + そのような結果になるならば, 変換フィルタをインストール + するよりもむしろ, テキストフィルタ (これがデフォルトフィ + ルタなので) に印字するよう要求されたファイルの形式を検 + 出させ, 自動的に, 適切な変換フィルタを起動するようにし + たいと思うかもしれません. ここでは file + コマンド のようなツールを役立たせることができます. + もちろん, いくつかの + ファイル形式の違いを見分けることは難しい ことでしょう. + そして, もちろん, それらのファイルに対し ては, + 変換フィルタを提供するだけで済ますこともできるの + です. + + FreeBSD のポート集には, apsfilter + と呼ばれる自 動変換をおこなうテキストフィルタがあります. + このフィルタは プレインテキスト, PostScript, DVI + ファイルを検 出し, 適当な変換をおこなった後, + データを印字することができ ます. + + + + + 出力フィルタ + + LPD スプーリングシステムでは, + ここまでにまだ取り上げていな いフィルタ形式, + 出力フィルタをサポートしています. 出力 フィルタは, + テキストフィルタのように, プレインテキスト + のみを印字するために意図されたものですが, 非常に簡単化 + されています. テキストフィルタを用いずに, 出力フィルタ + を使っている場合は, 次のようになります. + + + + LPD はジョブ中の各ファイルに一度ではなく, ジョブ + 全体に対して一度だけ出力フィルタを起動します. + + + + LPD は出力フィルタに対し, ジョブ中のファイルの先 + 頭や末尾を特定するための対策を一切 + おこなっていません. + + + + LPD はユーザのログイン名やホスト名をフィルタに渡 + しません. したがって, 課金の処理をおこなうことは考えてい + ません. 実際, 出力フィルタには, 以下2つの引数しか与え + られません. + + + filter-name + -wwidth + -llength + + + ここで, width + は対象となるプリンタの pw 項 目, + length は + pl 項目に指定された数です. + + + + 出力フィルタの簡便さに誘惑されてはいけません. もし, ジョ + ブ中のそれぞれのファイルに別のページ番号を付加しようと + しても, + 出力フィルタはうまく動作しないでしょう. + そのような動作を期待しているならば, (入力フィルタとし + ても知られている) テキストフィルタを使ってください. 詳 + しくは, 「 + テキストフィルタのインストール」をご覧ください. + さらに, 出力 フィルタは, 実のところ, + もっと複雑になっています. まず, + 特殊なフラグ文字を検出するために, フィルタに送ら + れてくるバイトストリームを検査する必要があります. また, LPD + に代わって, 自分自身にシグナルを送らなければなりま + せん. + + しかしながら, ヘッダページの印字をおこないたい場合, + また, + エスケープシーケンスやヘッダページを印字できるようにす + るその他の初期化文字列を送信する必要がある場合, 出力ファ + イルが必要です. + + 1台のプリンタに対し, LPD では出力フィルタとテキスト, + または, 他のフィルタを両方使うことができます. このよう + な場合, LPD はヘッダページ (「 + ヘッダページ」 を参照してください) + だけを印字させるために, 出 力フィルタを起動させます. + それから LPD では, アウトプッ トフィルタに2バイトの文字 + (ASCII 031 の次に ASCII 001) を送ることで, + 出力フィルタが自力で停止することを + 期待しています. 2バイト (031, 001) が出力フィルタに送られ + たとき, 出力フィルタは自分自身にシグナル SIGSTOP を送 + ることによって停止するべきです. LPD がその他のフィル + タの起動を完了したとき, LPD は出力フィルタにシグナル + SIGCONT を送ることで, 出力フィルタを再起動させます. + + 出力フィルタがあり, + テキストフィルタがない場合, LPD + はプレインテキストのジョブをおこなう際に, 出力フィル + タを使います. 前述したように, 出力フィルタでは, ジョブ + 中の各ファイルの並びの間に FROM FEED 文字や紙を排出す + る他の文字を入れることはしません. この動作は多分, あな + たが求めているものとは + 異なっているでしょう. ほと + んどすべての場合において, テキストフィルタが必要とされる + はずです. + + プログラム lpf は, + テキストフィルタの項で既に紹介 しましたが, + 出力フィルタとしても動作させることができま す. もし, + 簡便で極悪な出力フィルタが必要で, かつ, バイ + トストリームを検査したりシグナルを送るコードを書きたく + ないときには, lpf をお試しください. + あるいは, プ リントが要求する初期化コードを送るために, + lpf を + シェルスクリプトに包んで使うこともできます. + + + + テキストフィルタ <command>lpf</command> + + プログラム /usr/libexec/lpr/lpf は, + FreeBSD の バイナリ配布に付属しているテキストフィルタ + (入力フィル タ) で, 出力を字下げしたり (lpr + -i でジョブが入力さ れたとき), + 文字を未処理のままプリンタに送ったり (lpr + -l でジョブが入力されたとき), ジョブ中のバッ + クスペースやタブの印字位置を調節したり, 印字したページ + に対して課金したりすることができます. また, このフィル + タは出力フィルタとしても動作させることができます. + + lpf + は多くの印字環境において使用することに適して います. + このフィルタには, プリンタに初期化文字列を送る + 機能はありませんが, 必要とされる初期化をおこない, それから + lpf + を実行させるためのシェルスクリプトを作成する + のはたやすいことです. + + lpf に対して, + 印字ページへの課金を正確におこなわせる ためには, + /etc/printcap ファイルの中の + pwpl + の項目に正確な値を入れておく必要が あります. これらの値は, + どのくらいの量のテキストがペー ジにフィットするか, また, + ユーザのジョブが何ページある のかを調べるために使われます. + プリンタの課金についての 詳しい情報については, 「 + プリンタの利用に対する課金」をご覧ください. + + + + + ヘッダページ + + あなたが管理するシステムのユーザが + たくさんおり, ユー + ザ全員が様々なプリンタを使用する場合, 多分, 必要悪である + ヘッダページ + を印字させることを検討したいと思うかもしれま せん. + + ヘッダページは, バナー とか + バーストページ としても知ら れていますが, + 出力されたジョブが誰によるものなのかを特定させる + 働きがあります. 印字結果の山の中において, ユーザのジョブによっ + て印字された本物のドキュメント部分よりも際立たせるために, ヘッ + ダページは, 通常, 多分, 縁が装飾されている大きな太文字で印字さ + れます. ヘッダページにより, ユーザは自分が出したジョブがどこに + あるのかをすばやく見つけることができます. + ヘッダページの欠点は, 明らかに, すべてのジョブに対して, + 紙が1枚余分に印字されるという ことです. + この紙の有効期間は短く, 2〜3 分も続きません. 最終的に, + これらの紙は再利用紙入れの中か + くずの山に入れられることでしょう. + (ヘッダページはジョブ中の各ファイル毎に印字されるのではなく, + ジョブ毎に印字されるということに注意してください. したがって, + 紙の 消費はそれほどひどくはないかもしれません). + + もし, + プリンタがプレインテキストを直接印字できるならば, LPD + システムは印字物に対して自動的にヘッダページを付けることが + できます. PostScript プリンタを使っている場合は, ヘッダペー + ジを生成する外部プログラムが必要になります. これについては, + 「PostScript + プリンタでのヘッダページ」をご覧ください. + + + ヘッダページの印字を許可する + + プリンタ設定導入編 + 」 では, /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 によってジョ + ブを入力することで, + ヘッダページの印字を止めることができます. + これ以外の + &man.lpr.1; のオプションについては, + 「 + ヘッダページ用オプション」 + をご覧ください. + + + LPD では, ヘッダページの最後に, FROM FEED 文字が印 + 字されます. プリンタに紙排出をさせるために, 別な文字, + もしくは, 別な文字列が利用されている場合は, + /etc/printcap 中の + ff 項目で指定することができます. + + + + + ヘッダページを制御する + + ヘッダページの印字が許可されていると, 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 はこのテキストの終わりに FROM 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/printcaphl + (header last) を指定 してください. + + + + ヘッダページに対する課金 + + LPD に備わっているヘッダページ出力機能を使うと, 入力され + たジョブに対して課金をおこなうことができても, + ヘッダページは無 + 料で提供しなくてはならない, + という特有のやり方を強要されます. + + なぜでしょうか. + + 出力フィルタは単なる外部プログラムなので, + 課金をするための制御 をおこなうとすれば, + それはヘッダページを印字するときですが, 出力フィ ルタには, + ユーザ名とホスト名 + の情報や課金情報を格納するファ イルがどれな + のかということが知らされません. それゆえ, 出力ファイルには, + 誰 + にプリンタ利用の課金をおこなえばよいのかが分からないのです. + テキス トフィルタやその他の変換フィルタ + (これらのフィルタはユーザやホ ストの情報が知らされます) + が出力ページの枚数に“1ページ分水増し + する”だけでは十分ではありません. なぜなら, ユーザは + lpr -h に + よってヘッダページの出力を止めることができるからです. + やみくも に1ページを水増しすると, + 印字されてもいないヘッダページに対する + 料金をとることになります. 基本的に, lpr + -h は環境に優し + い心を持つユーザに好まれるオプションですが, + これを使うように奨 励することもできません. + + 各々のフィルタに独自のヘッダページを生成させる + (その結果, ヘッ ダページに課金することができる) + という方法でも十分であると + はいえません. この場合, LPD はフィルタに + の情報を送 りませんので, lpr + -h によってヘッダページを印字しないオ + プションを選択したとしても, + 依然としてヘッダページは印字され, + その分の課金がおこなわれてしまいます. + + では, どのような選択肢があるのでしょうか. + + ヘッダページへの課金に関しては, + 次のことができます. + + + + LPD のやり方を受け入れ, + ヘッダページは無料とする. + + + + LPDng や PLP といった LPD の代替品をインストール + する. LPD と入れ替えが可能な他のスプーリングソフトウェ + アに関しては, 「 + 標準スプーラの代替品」をご覧ください. + + + + + スマートな + 出力フィルタを作成する. 通常, 出力 + フィルタはプリンタを初期化するか, 単純な文字列変換をす + る程度の働きしかしません. (テキスト (入力) フィルタがな + い場合) 出力フィルタはヘッダページとプレインテキストの + 印字をおこなうのに適しています. + + プレインテキストを印字するためのテキストフィルタがない + 場合, LPD はヘッダページを印字するためだけの目的で出 + 力フィルタを起動します. そして, LPD が生成するヘッダ + ページのテキストを解析することにより, 出力フィルタはヘッ + ダページに課金するために必要なユーザ名とホスト名を取得 + することができます. この方式の唯一の問題点は, 出力フィ + ルタは課金情報を格納するデータファイルの名前を知ることが + できないということです + (af 項目で指定されたファイ + ル名は出力ファイルに渡されません). しかし, 既知の + 名前の課金データファイルを使うのならば, その名前を出 + 力フィルタのプログラム中に埋め込むことができます. + + 解析の手順を簡単にするためには, + /etc/printcap + で sh 項目 (短いヘッダを指 + 定) を使うとよいでしょう. + + そしてまた, ここまでの方法は少なからぬトラブルを生じさ + せるかもしれません. + そうなれば, もちろんユーザはヘッダペー + ジを無料で + 提供してくれる気前のよいシステム管理者に感謝することで + しょう. + + + + + + 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 + で“ヘッダページを印字しない”オプション + ( オプション) が 使えなくなっています. + ユーザが森林資源を (あるいは, ヘッダペー + ジが課金されているならば, その僅かな金額を), + 節約したいと望んでい る場合でも, + すべてのフィルタがすべてのジョブ毎にヘッダページを印字 + することになっているので, 節約することはできません. + + ジョブ毎に印字されるヘッダページを + ユーザが抑制できるようにする ためには, 「 + ヘッダページに対する課金」で紹介したトリックを + 使う必要があります. すな わち, LPD + が生成するヘッダページの解析をおこない, PostScript + 版のヘッダページを出力させる出力フィルタを作るのです. この場 + 合, ユーザが lpr -h でジョブを入力すると, + LPD はヘッダペー ジを生成しなくなり, また, + 出力フィルタも起動されません. そうで ないならば, + 作成した出力フィルタが LPD からのテキストを読み込 み, + ヘッダページを印字する適当な PostScript のコードがプリ + ンタに送られるでしょう. + + PostScript プリンタがシリアルポートに接続されている場合, + 出力フィルタとして lprps を, + 上記の動作をおこなうものとして psof + を使うことができます. ただし, psof + はヘッダペー + ジに対して課金をおこないませんので注意してください. + + + + + リモートプリンタからの出力 + + FreeBSD では, ネットワーク越しの印字, すなわち, ジョブをリ + モートプリンタに送ることをサポートしています. リモートプリンタ + からの出力をするには, 一般に, 次の2つを参照してください. + + + + + リモートホストに接続されたプリンタにアクセスする方 法. + プリンタがあるホストのシリアル, または, パラレルイ + ンタフェースに接続されている場合, ネットワーク上の他の + ホストからこのプリンタにアクセスできるように LPD を設 + 定します. 「リモートホストに + 接続されたプリンタ」 + でどのよう にするかを説明します. + + + + ネットワークに直接接続されているプリンタにアクセ + スする方法. プリンタに, 旧来のシリアル, または, パラレ + ルインタフェースに加えて (もしくは, これらに代わって) ネッ + トワーク用のインタフェースがある場合. そのようなプリン + タは次のように動作するでしょう. + + + + そのプリンタが LPD のプロトコルを理解でき, リモー + トホストからのジョブを + キューに入れることさえできる場合. この場合, + プリンタは, LPD が起動している一般のホスト + のように振る舞います. そのようなプリンタを設定するため + に, 「 + リモートホストに接続されたプリンタ」 + と同様の手 順をおこなってください. + + + + そのプリンタが, データストリームによるネットワー + ク接続をサポートしている場合. この場合, ネットワーク上 + の1つのホストとしてプリンタを“接続”します. + このホス トは, ジョブをスプーリングする責任を負い, + スプーリング されたジョブはプリンタに送られます. + そのようなプリンタ + をインストールするためのいくつかの提案が「 + ネットワークにおけるデータストリームの + インタフェースを持つプリンタ」にあります. + + + + + + + リモートホストに接続されたプリンタ + + LPD スプーリングシステムでは LPD (または LPD 互換のシス + テム) + が起動している他のホストへジョブを送る機能が始めからサポー + トされています. この機能により, + あるホストに接続されたプリンタ へ, + 他のホストからアクセスできるようになります. また, LPD プ + ロトコルを理解するネットワークインタフェースを持った + プリンタに 対しても, この機能は働きます. + + リモートプリンタへの出力を許可するためには, 最初に, + あるホスト (これを, + プリンタホストと呼びます) + にプリンタを接続します. そして, 「 プリンタ設定導入編」 + に書かれた簡単なプリンタの設定をおこなってください. + 必要ならば, 「プリンタ設定上級編」 + にあ る, 更に進んだ設定をおこなってください. そして, + そのプリンタをテス トしてうまく動作することを確認し, LPD + に許可した機能がうまく働 くかどうかを見てください. さらに + ローカルホスト が + プリンタホスト の LPD サービスの使用を + 許可されているか確認して 下さい (「 + リモートホストからのプリンタの利用を制限する + 」参照). + + LPD + 互換のネットワークインタフェースを持つプリンタを使用してい + る場合は, そのプリンタ自身が以下で説明する + プリンタホスト になります. そして, + プリンタ名とは, そのプリンタに設定し + た名前のことを指します. これについては, プリンタ, および + (また は), + プリンタのネットワークインタフェースに付属するドキュメン + トを参照してください. + + 次に, + そのプリンタにアクセスしたいと思っている他ホストにおいて, + そのホストの /etc/printcap + ファイルに次にあげるエント リを作ります. + + + + 名前のエントリ. どんな名前でもよいのですが, 簡単 + のため, 多分, プリンタホストで設定されたプリンタ名や別 + 名と同じものを使いたいと思うでしょう. + + + + lp + 項目で指定されるデバイスは明示的に空にす る + (:lp=: とする). + + + + スプーリングディレクトリを作成し, + sd 項目で その位置を指定する. LPD + では, プリンタホストにジョブ を送信するまでの間, + このディレクトリにジョブを格納しま す. + + + + rm + 項目でプリンタホストの名前を指定します. + + + + rp 項目で + プリンタホスト に接続したプリン + タ名を指定します. + + + + これで終わりです. + 変換フィルタやページの大きさやその他の事項を + /etc/printcap + に加える必要はありません. + + 次に, + リモートホストに接続されたプリンタで印字するための設定例 + を示します. ホスト rose には2台のプリンタ + bamboorattan + が接続されています. これらのプリンタをホスト 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 + で必要となる作業はスプーリングディレクトリを + 作ることだけです. + + &prompt.root; mkdir -p /var/spool/lpd/rattan /var/spool/lpd/bamboo +&prompt.root; chmod 770 /var/spool/lpd/rattan /var/spool/lpd/bamboo +&prompt.root; chown daemon.daemon /var/spool/lpd/rattan /var/spool/lpd/bamboo + + これで, orchid のユーザが + rattanbamboo で印字す + ることができるようになりました. + 例えば, orchid のユーザが次の + ように入力したとします. + + &prompt.user; lpr -P bamboo -d sushi-review.dvi + + すると, orchid の LPD システムは, ジョブをスプーリングディレ + クトリ /var/spool/lpd/bamboo + にコピーし, これが DVI + ファイルを印字するジョブであることを記録します. + ホスト rose の + bamboo + 用のスプーリングディレクトリに十分な容量が確保でき + 次第, 両者の LPD は, ジョブのファイルを rose に転送します. こ + のファイルは, そのすべてが印字されるまで, rose + のキューに留まり + ます. (bamboo は PostScript プリンタなので) DVI から PostScript + への変換は rose でおこなわれます. + + + + ネットワークにおけるデータストリームのインタ + フェースを持つプリンタ + + プリンタのネットワークインタフェースカードは, 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 + + + + + プリンタの利用に制約を与える + + 本節では, プリンタの利用に制約を与えるための情報を記して + います. LPD システムでは, プリンタ (ローカル, リモートのいずれ + に接続されていても) にアクセスできる人を制限する機能, 複数部の + コピーの印字の可否を制御する機能, ジョブのサイズの最大値やプリ + ンタキューに入るジョブの最大個数を制御する + 機能を提供しています. + + + 複数部のコピーの印字を制限する + + LPD + システムではユーザが複数部のコピーの印字を簡単におこなう + 機能を提供しています. ユーザが, (例えば) lpr + -#5 コマ ンドを使ってジョブを印字すると, + ジョブのそれぞれのファイルのコ ピーを5部得ることができます. + これがよい機能であると思うかどう + かは人それぞれでしょう. + + 複数部のコピーの印字によってプリンタが + 必要以上に消耗してしまう + と感じるならば, /etc/printcap + ファイルに sc 項 + 目を加えてください. これにより, + &man.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:fs#0x82000e1:xs#0x820: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 -# の使用を防 + ぐことができます. しかし, この状態では + &man.lpr.1; を複数回起動し + たり, 1回のジョブで次のように同じファイルを + 複数個指定すること + を防ぐまでには至っていません. + + &prompt.user; lpr forsale.sign forsale.sign forsale.sign forsale.sign forsale.sign + + このような悪用を防ぐ方法は + (その指示を無視することも含めて) たく さんあります. + 各自で調べてみてください. + + + + プリンタを使用できる人を限定する + + それぞれのプリンタを使用できる人を限定するには, UNIX の + グループ権限のメカニズムを利用し, さらに, + /etc/printcaprg + 項目を指定することでおこないます. + あるプリンタにアクセスさせてもよいと思うユーザすべてを + UNIXのある グループに入れてください. そして, + そのグループ名を rg で 指定します. + + このとき, そのグループに含まれないユーザ + (root も含む) が + rg + の指定がされたプリンタを使用すると, 次のようなメッセー + ジが表示され, プリンタの使用はできません. + + + 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:fs#0x82000e1:xs#0x820:rw:\ + :if=/usr/local/libexec/psif:\ + :df=/usr/local/libexec/psdf: + + これ以外の /etc/printcap ファイル + (ホスト orchid のもの) + はそのままにしておくことにします. もちろん, + orchid のユーザは 全員 + bamboo を利用することができます. これは, + orchid に + は特定のユーザのみにしかアクセスさせておらず, + そのユーザにはプ + リンタを利用させたいと思っているからなのかもしれませんし, + そう でないかもしれません. + + + 1台のプリンタを複数グループのユーザに利用させること + はできません. + + + + + 入力可能なジョブのサイズを制限する + + たくさんのユーザからプリンタが利用される場合には, 多分, + ユーザが印字要求を出すことができるファイルのサイズに + 上限値を置 く必要が生じるでしょう. 結局のところ, + スプーリングディレクトリ + が置かれているファイルシステムの空き容量がその + 上限値になる訳で すが, + あるユーザがこれを独占的に使用すること避けるために, 他ユー + ザからのジョブ用の空き容量を確保する必要もあります. + + LPD では, mx + 項目を指定することにより, ジョブ中の個々のファ + イルのサイズの上限値を制限する機能を提供しています. + 指定される ファイルサイズの単位は BUFSIZ ブロックで, 1 + BUFSIZ ブロックは 1024バイトを表わします. この mx 項目の値として0が指定される と, + ファイルサイズの制限はなくなります. + + + この制限はジョブ中の各 + ファイルに対して適用されるものであり, + ジョブ全体のサイズ + を制限するものではありません. + + + ところで, + プリンタに設定された上限値を超えるファイルサイズのファ + イルが入力された場合でも, LPD はこれを拒否しません. その代わ + りに, このファイルは, + その先頭から上限値のファイルサイズまでし + かキューに入れられません. そして, その部分までが印字され, + 残り の部分は捨てられます. + これが正しい動作といえるのかどうかは議 + 論の余地があるところです. + + それでは, 設定例に登場しているプリンタ + rattanbamboo + の印字可能なファイルサイズに制限を加えてみましょう. artists + グループの人達が作る PostScript ファイルのサイズは + 巨大になる傾向があるので, 上限値を5Mバイトとします. + それから, + プレインテキスト用のラインプリンタは無制限とします. + + +# +# /etc/printcap for host rose +# + +# +# No limit on job size: +# +rattan|line|diablo|lp|Diablo 630 Line Printer:\ + :sh: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:fs#0x82000e1:xs#0x820:rw:\ + :if=/usr/local/libexec/psif:\ + :df=/usr/local/libexec/psdf: + + この場合もそうですが, この制限はローカル (ホスト rose) + のユーザ のみに適用されます. + リモートホストからプリンタを利用できるよう + に設定している場合は, + そのリモートホストのユーザはこの制限を受 けません. + これらのユーザにも制限を加える場合は, リモートホスト の + /etc/printcapmx + を指定する必要があります. + リモートホストから印字するための詳しい情報については, + 「 + リモートホストに接続されたプリンタ」 + を参照してください. + + リモートホストに接続されたプリンタへのジョブの + サイズを制限する 特別な方法は他にもあります. これについては, + 「 + リモートホストからのプリンタの利用を制限する」 + を参照してください. + + + + リモートホストからのプリンタの利用を制限する + + LPD スプーリングシステムでは, リモートホストから要求され + たジョブの印字を制限するための方法がいくつか + 提供されています. + + + ホストの制限 + + ローカルの LPD + が印字要求を受け付けるリモートホストは, ファイル + /etc/hosts.equiv と + /etc/hosts.lpd + によって制御することができます. LPD では, + あるホストから印字の要求がきたとき, このホス + トの名前がこれら2つのファイルのどちらかに含まれている + かどうかを調べます. これが含まれていない場合は, LPD + はこの要求を拒否します. + + これらのファイルの形式は単純です. + 各行にホストの名前を + 1つずつ書いていきます. ファイル + /etc/hosts.equiv の方は + &man.ruserok.3; プロトコル + でも利用され, &man.rsh.1; や &man.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:fs#0x82000e1:xs#0x820:rw:mx#5000:\ + :if=/usr/local/libexec/psif:\ + :df=/usr/local/libexec/psdf: + + スプーリングディレクトリは + sd で指定されます. LPD + がリモートホストからのジョブを受け付けるために必要 + なファイルシステムの空き容量を3Mバイト + (=6144ディスクブ ロック) にすることにしましょう. + + + &prompt.root; echo 6144 > /var/spool/lpd/bamboo/minfree + + + + 利用ユーザの制限 + + /etc/printcap の + rs 項目を指定することで, + ローカルプリンタを利用できるリモートホストのユーザを制 + 限することができます. ローカルホストに接続されたプリン + タ用のエントリに rs + 項目が指定されている場合, LPD + は印字を要求したユーザのアカウントと同じログイン名 + がローカルホストに登録されている/em/場合に限り/, その + ジョブが受け付けられます. そうでないユーザからのジョブ + は LPD は拒否します. + + この機能は, (例えば) + 複数の部署がネットワークを共有して おり, + この内のあるユーザが部署の境界を越えて活動してい + る場合には特に有用です. そのようなユーザに対して, シス + テムのアカウントを与えるだけで, これらのユーザは自分が + 所属する部署のシステムからそのシステムに接続されている + プリンタを使用することができます. これらのユーザにはむ + しろ, プリンタの使用だけを認め, + その他のコンピュー タ資源を利用させたくないときは, + それらのユーザにはホー ムディレクトリを与えず, + ログインシェルはシェルとしては 何の役にも立たない + /usr/bin/false などを指定 して, + これらのユーザのアカウントはプリンタ用の“形式的 + な”ものとします. + + + + + + + + プリンタの利用に対する課金 + + という訳で, 印字するためには料金をとることが必要です. 取ら + ない理由などありましょうか. 紙やインクにはお金がかかります. そ + して, プリンタの維持費もかかります. プリンタには可動部分が搭載 + されており, これらの部分は壊れやすいという傾向があります. プリ + ンタや, その利用形態, 維持費について調査をし, 1ページ (1フィー + ト, 1メートルなど) 当たりにかかるコストを調べておいてください. + これに基づき, プリンタの利用に対する課金を, 実際に, どのように + 始めればよいのでしょうか. + + さて, 残念ながら, この部分に関しては LPD + スプーリングシステム はほとんど役に立ちません. + 課金は使用しているプリンタの種類, 印 + 字するもののファイルの形式, + プリンタの利用に対する課金での + あなた自身の要求に大きく左右されます. + + 課金システムを実現するためには, プリンタのテキストフィルタ + (プ レインテキストのジョブに対して課金するため) と変換フィルタ + (その 他のファイル形式に対して課金するため) を変更して, + 印字したペー ジを数えたり, + プリンタに印字したページ数を取得するための要求を + 送る必要があります. ただし, 出力フィルタのみを利用している場合 + は, 課金をおこなうことができません. フィルタに関しては, + 「 + フィルタ」をご覧く ださい. + + 一般に, 課金方式には次の2つがあります. + + + + 定期的に課金する方法 + はよく利用される方法です. この理由は, 恐らく, + 比較的簡単に実現できるからです. 誰 + かがジョブを印字する度に, フィルタはそのユーザ名, ホス + ト名, 印字したページ数を課金データファイルに記録します. + 毎月, 毎学期, 毎年, あるいは, お好みの時期に, 様々なプ + リンタの課金用ファイルを集め, それぞれのユーザが印字し + たページ数を合計し, その分の課金をおこないます. 次回の課金 + 時期のためのデータを0にして課金を再開するために, この + 処理をおこなった後, すべてのログファイルを削除し, + + + + 利用毎に課金する方法 + はあまり利用されていません. これは, + 実現するのが比較的難しいからです. この方式では, + プリンタを使用したらすぐに, フィルタがユーザにその利用 + に対する課金をおこないます. ディスククオータのように, 課金 + 作業は瞬時におこなわれます. この方式では, ユーザのアカウン + トが赤字になる場合に, ユーザが印字をおこなうことを拒否する + ことができます. また, ユーザに“プリンタ版 + quota”を 調べたり, + 調整したりする方法を提供したいと思うかもしれ ません. + これを実現するためには, ユーザとその quota を + 追跡するために, あるデータベース用のコードが必要となり + ます. + + + + LPD スプーリングシステムでは, 両方式を簡単にですがサポー + トしています. これは, (ほとんどの場合で) 印字作業をフィ + ルタがおこなっていたように, 課金作業もこのためのコードも用 + 意することで実現されています. しかし, 明るい面もありま す. + それは, 課金方式に関して, 非常に大きな柔軟性が与え + られたということです. 例えば, 「定期的に課金する方法」 か, + 「利用毎に課金する方法」のどちらかを選びまず, そし て, + どんな情報 (ユーザ名, ホスト名, ジョブのタイプ, 印 + 字された頁数, 使用した紙の大きさ, 印字をするために要した + 時間など) をログに記録するかを決めます. 以上のことをおこな + うには, 上記の情報を保持するために, フィルタを変更しな + くてはなりません. + + + 手軽なプリンタ課金方法 + + FreeBSD には, 「定期的に課金する方法」による課金をすぐに + 設定できるように, 2個のプログラムを添付しています. そ + の内の1つはテキストフィルタ lpf で, + これについて + は, 「 + テキストフィルタ lpf」をご覧ください. もう1つは, + &man.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 項目を使いま す. + + プリンタの利用に対してユーザに課金する準備ができたら, + スプーリングディレクトリに移動した後, + &man.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 + + &man.pac.8; が受け付ける引数には + 次のようなものがあります. + + + + + プリンタ printer + の利用に対する課金リストを作成し ます. + このオプションは, /etc/printcap + の af + が絶対パスで指定されていた場合に限り, 動作しま + す. + + + + + + ユーザ名のアルファベット順ではなく, + 課金額の低い順にリ ストを並べます. + + + + + + 課金データファイルにあるホスト名を無視します. + このオプショ ンを使用すると, ホスト + alpha のユーザ + smith とホスト + gamma のユーザ + smith は同一人物として扱われます. + この オプションが指定されない場合は, + 両者は別なユーザとして 扱います. + + + + + + /etc/printcap の + pc 項目で指定された値, または, + デフォルトの値 (2セント) に代わり, 紙1ページ, ま たは, + 1フィート当たりの価格を指定します. + price として, + 浮動小数点数を指定することができます. + + + + + + リストの並べる順番を逆順にします. + + + + + + 課金リストを作成し, + 課金データファイルを削除します. + + + + name + + ユーザ names + に対する課金情報のみを表示します. + + + + + &man.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 + + 課金額を決めるために, + &man.pac.8; は /etc/printcap ファ + イルの pc + 項目で指定された値 (デフォルト値は200, すなわち1 + ページ当たり2セント) + を使います. この項目で, 印字物に課金したい + と思う1ページ当たり, + または, 1フィート当たりの価格を100分の1セ + ント単位で指定します. + &man.pac.8; を オプション付きで起動 + すると, この値を置き換えることができます. + この オプショ + ンで指定する額の単位は, + 100分の1セント単位ではなく, ドル単位で + す. 例えば, 次の指定では, + 1ページ当たりの単価が1ドル50セントに + なります. + + &prompt.root; pac -p1.50 + + このオプションを使うと, + 実際の課金額を集計することができます. + + 最後に, pac -s + を起動すると, 課金情報は課金データ累計ファ + イルに保存されます. + このファイルの名前は, プリンタの課金データ + ファイルの後ろに + _sum を付けたものとなります. そして, 課 + 金データファイルは削除されます. 次に + &man.pac.8; が起動されると, + その時点までの累計金額を得るために, + 課金データ累計ファイルが読 + み込まれ, 通常の課金データファイルからの情報に + 加算されます. + + + + 印字されたページ数をどのように数えるか? + + 課金を, リモートホストからの印字でさえも, + 正確におこなうため には, + ジョブで使用された紙が何ページであるかを特定でき + る必要があります. このことは, プリンタ利用に対する課金 + をおこなう上の根本的な問題です. + + プレインテキストのジョブの場合, 問題を解決するのはさほ + ど難しくはありません. ジョブが何行であったかを数え, プ + リンタがサポートしている紙1ページに印字できる最大の行 + 数と比較すればよいのです. 重ね打ちするために利用される + ファイル中のバックスペース文字や, 物理的に複数の行に渡 + る長い論理行に対する取り扱いを + 忘れずにおこなってください. + + (「テキストフィ,ルタ + lpf」で紹介した) テキストフィルタ + lpf では, 課金をおこなうときに, + これらの取り扱いをおこなってくれます. 課 + 金をおこなうために必要なテキストフィルタを作成している方は, + lpf + のソースコードが参考になるでしょう. + + これに対して, 他のファイル形式の処理はどのようにすれば + よいのでしょうか. + + まず, DVI から LaserJet, または, DVI から PostScript + への変換の場合, フィルタが dvilj や + dvips の 出力メッセージを解析することで, + 何ページ分の変換がおこなわ れたかを知ることができます. + 他のファイル形式とその変換 プログラムに関しても, + 同様のことができるかもしれません. + + しかし, この方式には問題点があります. それは, 変換され + たページがすべて印字されるとは限らないということです. 例 + えば, プリンタが紙詰まりを起こしたり, トナー切れになっ たり, + はたまた, 爆発したりするかもしれません. そのよう + な状況により印字が途中で中止されたとしても, この方式で は, + ユーザは全ページ分の料金を課されてしまうのです. + + それでは, どのような対策をたてることができるのでしょう + か. + + 正確な + 課金をおこなうための唯一の確実な方法は, + 何 ページ印字したのかを知らせることができるプリンタを入手 + し, これをシリアルポートかネットワークに接続することで す. + ほとんどすべての PostScript プリンタではこの概念 + がサポートされています. 他のプリンタも同様です (Imagen + レーザプリンタをネットワーク接続するなど). それぞれの + プリンタのフィルタを, ジョブを印字した後で印字ページ数 + を得るように, 変更してください. そして, 課金情報はここ + で得られた値のみに + 基づいて記録してください. 行数 を数えたり, + エラーが生じやすいファイルの調査は必要とさ れません. + + もちろん, 気前よく印字料 + 金をすべて無料にすることもできます. + + + + + + 標準スプーラの代替品 + + このマニュアルを最初から通読されている方ならば, ここまでで, + FreeBSD 付属の LPD スプーリングシステムに関して知っておくべき + ことすべてを学ばれたことと思います. 多分, このシステムに + あるたくさんの欠点について認識できたことでしょう. すると, + “(FreeBSD 上で動作する) + スプーリングシステムには他にどのような + ものがあるのか”という疑問が自然と湧いてきます. + + 残念ながら, 著者は代替のスプーラを 2つ + だけしか探し出すこと ができませんでした. そして, + それぞれはほとんど同一のものです. 以下に, + 両システムの紹介をおこないます. + + + PLP (Portable Line Printer スプーリングシステム) + + PLP は Patrick Powell によって開発されたソフトウエアを + ベースにされており, インタネット規模のグループの開発者 + によって管理されていました. このソフトの主要サイトは「 + + ftp://ftp.iona.ie/pub/plp」です. + 「 + web page」にもあります. + + PLP は BSD LPD スプーラと極めて似ていますが, 以下のも + のを含むホストの機能が自慢です. + + + + ネットワークサポートの強化. ネットワーク接続され + るプリンタのサポートや NIS で管理可能な printcap ファ + イル, NFS マウントされるスプーリングディレクトリの機 + 能が組み込まれています. + + + + 洗練されたなキュー管理. 1つのキューで複数のプリン + タに対応可能. キュー間でジョブを転送したり, キューのリ + ダイレクトができます. + + + + リモートプリンタの制御機能 + + + + ジョブの優先順位付け + + + + 拡張性のあるセキュリティとアクセスオプション + + + + + + LPRng + + LPRng は, その称するところの意味は“LPR: the Next + Generation”ですが, PLP を完全に書き換えたものになっ + ています. Patrick Powell と Justin Mason (PLP の主要 + なの管理者) の共同で LPRng が作成されました. LPRng の + 主要サイトは「 + ftp://dickory.sdsu.edu/pub/LPRng」です. + + + + + + + 謝辞 + + このドキュメントの開発の手助けをして頂いた以下の方々に感謝の + 意を表わしたいと思います. + + + Daniel Eischen deischen@iworks.interworks.org + + 精読するためのあり余るほどの HP 用フィルタを提供してく + れたことに. + + + + &a.jehamby; + + 提供して頂いた Ghostscript から HP + へのフィルタに. + + + + 私の妻, Mary Kelly urquhart@argyre.colorado.edu + + 彼女と一緒にいるよりもずっと長い時間を FreeBSD のため + に費やすことを許してくれたことに. + + + + + + + diff --git a/ja/handbook/quotas/chapter.sgml b/ja/handbook/quotas/chapter.sgml new file mode 100644 index 0000000000..5707a188e8 --- /dev/null +++ b/ja/handbook/quotas/chapter.sgml @@ -0,0 +1,296 @@ + + + + ディスク クォータ + + 原作: &a.mpp; + 26 February 1996 . + + 訳者: &a.jp.mihoko;. + 6 September 1996 . + + クォータシステムは, + オペレーティングシステムのオプション機能で, + 各ファイルシステム上で ユーザやグループのメンバが使用するディスク + スペースの総量を規制したり, 作成できるファイルの個数を制限したりす + ることができます. この機能は, 各ユーザ, + 各グループごとに使用できる資源の総量を制限で + きるようなタイムシェアリングシステム上で + もっともよく使用されていま す. これは, 一人のユーザが, + 使用可能な全てのディスクスペースを使い + きってしまうことを防止できます. + + + ディスククォータを使用するための設定 + + ディスククォータを使用しようとする前に, + あなたが使用しているカー + ネルで, クォータが組み込まれているかどうかを + 確認する必要があります. + クォータを使用できるカーネルを構築するためには, + カーネルコンフィギュ レーションファイルに, + 次の行を追加してください: + + +options QUOTA + + 標準の GENERIC + カーネルでは, この機能は有効になっていません. + したがって, ディスククォータを使用するためには, + カーネルをコンフィグレーションして構築しなおし, そのカーネ + ルをインストールしなければいけません. カーネルの構築方法について + の詳細情報は, FreeBSD + カーネルのコンフィグレーション + を参照してください. + + 次に, ファイル /etc/sysconfig の中で, + ディスククォー + タ機能を、使用可能に設定する必要があります. + そのためには, 以下の行を変更します: + + +quotas=NO + + を次のように: + + +quotas=YES + + FreeBSD 2.2.2 以降では, /etc/rc.conf + でこの設定を行いま + す. また, 変数の変更は以下のようにします. + + +check_quotas=YES + + 最後に, 各ファイルシステム毎にディスククォータを設定する + ために, ファイル /etc/fstab + を編集する必要があります. + 全てのファイルシステムに対して, + ユーザ又はグループのいずれかのクォー タ + を設定することも, + ユーザとグループの両方のクォータを設定すること + もできます. + + ファイルシステム上で, ユーザ毎のクォータを設定するためには, + userquota オプションを, ファイル + /etc/fstab の中 で, + クォータを設定したいファイルシステムの + エントリののオプションフィー ルドに追加してください. + 例えば: + + +/dev/sd1s2g /home ufs rw,userquota 1 2 + + 同様に, グループのクォータを設定するためには, + groupquota オプションを + userquota の代わりに使用 してください. + ユーザとグループの両方のクォータを設定するためには, + 次のようにエントリを変更してください: + + +/dev/sd1s2g /home ufs rw,userquota,groupquota 1 2 + + デフォルトでは, クォータファイルは ファイルシステムの root + ディ レクトリ上に, ユーザとグループのクォータに対して それぞれ + quota.user と + quota.group という名前で置いてあり + ます. 詳細情報は, man fstab を御覧ください. + man + ページには, クォータファイルを別な場所に置くことができると書い + てありますが, さまざまな + クォータユーティリティのうち, この機能を + 適切に処理できていないものがあるので, + クォータファイルをデフォルト + の場所以外に置くことは勧められません. + + ここまで準備ができたら, 新しいカーネルを使って, + システムを立ち 上げ直してください. /etc/rc + ファイルが, 自動的に適切なコマンドを起動してくれ, あなたが + /etc/fstab + ファイルで使用可能にした全てのクォー + タに対して, 初期クォータファイルを作成してくれます. + したがって, 手動で サイズ 0 + のクォータファイルを作成する必要はあり ません. + + 通常の作業の流れでは, 手動で quotacheck, + quotaon, または quotaoff + コマンドを起動すべきで はありません. しかしながら, + それらの作業について詳しく知りたい場合に は, man + ページを御覧ください. + + + + クォータ制限の設定 + + 一旦システムのクォータを有効に設定したら, + 本当にクォータが使用可能になっていることを確かめてください. + これを簡単に確かめるには, + + &prompt.root; quota -v + + コマンドを実行してみて ください. ディスク使用量の総計と, + クォータが設定されている各ファイ + ルシステム毎の現在のクォータ制限が表示されます. + + さてこれで, edquota + コマンドによって, クォータ制限をか ける準備ができました. + + ユーザまたはグループが使用できるディスクスペースの総計や, + 作成 することのできるファイル数に制限をかけるための + オプションがいくつか あります. ディスクスペース容量規制 + (ブロッククォータ) または ファイ ル数制限 (iノードクォータ) + またはその両方を行うことができます. + これらの個々の制限は, 二つのカテゴリ, すなわち ハード制限とソ + フト制限, でもっと細かく分類できます. + + ハード制限は越えることができません. + ユーザがハード制限に到達す ると, 該当するファイルシステム上で + ディスクスペースを確保することが できなくなります. + 例えば, もしユーザがファイルシステム上で 500 ブ + ロックのハード的制限をされていて, かつ, 現在, 490 + ブロック使用して いたとすると, ユーザはあと 10 + ブロックしか確保できません. + 11 ブロック目を確保しようとすると, 失敗します. + + 一方, ソフト制限は, + 定められたある一定の期間以内ならば制限を越 + えることができます. この一定期間は, 猶予期間と呼ばれています. + 猶予期間のデフォルトは + 1週間です. もし、ユーザが猶予期間を過ぎても + ソフト制限を越えて使用し続けていた場合には, + ソフト制限はハード制限 に切り替わり, もはやこれ以上は, + ディスクスペースを確保できなくなり + ます. ユーザのディスク使用量がソフト制限以下に戻った時に, + 猶予期間 がリセットされます. + + 以下は, edquota + コマンドを実行した時の出力例です. edquota + コマンドが起動されると, EDITOR 環境変数 + で定義されたエディタ, または, EDITOR + 環境変数が設定されて いない場合には vi + エディタが起動され, クォータ制限を編集 + することができます. + + &prompt.root; 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行の表示が + 行われます. 1行は, ブロック制限に関する情報で, + もう1行は, i ノード + 制限に関する情報です. + クォータ制限の値を変更したい値に書き換えてく + ださい. 例えば, ユーザのブロック制限を, 50 ブロックまでのソ + フト制限と 75 ブロックまでのハード制限から, + 500 ブロックまでのソフ + ト制限と 600 ブロックまでのハード制限にしたい場合は, + 次のように書き換えます: + + +/usr: blocks in use: 65, limits (soft = 50, hard = 75) + + を次のように: + + +/usr: blocks in use: 65, limits (soft = 500, hard = 600) + + 新しいクォータ制限は, + エディタを終了した時に置き換えられます. + + uid の範囲によってクォータを設定する個とも可能です. + そのためには edquota + コマンドで, オプションを + 使用します. まずはじめに, + かけたいクォータ制限を, 一人のユーザに対 + して設定します. それから次のコマンドを実行します + edquota -p protouser startuid-enduid. + 例えば, もし, ユーザ test + がクォータ制限をかけられていた + とすると, 次のコマンドは, 同じ制限を, uid 10,000 から 19,999 + まで のユーザにかけることができます: + + &prompt.root; edquota -p test 10000-19999 + + uid の範囲によって制限をかけることができる機能は, 2.1 + がリリー スされたあとに追加されました. もし、2.1 + のシステム上で, この機能を 必要とする場合には, 新しい edquota + を入手する必要があります. + + 詳細情報は man edquota を御覧ください. + + + + クォータ制限およびディスク使用状況のチェック + + クォータ制限およびディスク使用状況をチェックするには, + quota または repquota + コマンドを使用することがで きます.quota + コマンドは, 各ユーザ, 各グループ毎のクォー + タ制限およびディスク使用状況をチェックすることができます. + スーパーユーザだけが, + 他のユーザまたは自分が所属していないグループに + 関するクォータ制限とディスク使用状況を調べることができます. + repquota + コマンドは, クォータが設定されているファイルシス テムに対する, + 全てのクォータ制限およびディスク使用状況の総計を表示 + します. + + 以下は, 2つのファイルシステム上で + クォータ制限がかけられているユー ザに対して 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 + コマンドによる出力では表示されません. + オプションを付けると, 上の例の /usr/var + ファ イルシステムのように, + これらのファイルシステムも表示します. + + + + * NFS ファイルシステム上でのクォータ + + このセクションはまだ作成中です. + + + + diff --git a/ja/handbook/security/chapter.sgml b/ja/handbook/security/chapter.sgml new file mode 100644 index 0000000000..42003d26dd --- /dev/null +++ b/ja/handbook/security/chapter.sgml @@ -0,0 +1,1901 @@ + + + + セキュリティ + + + DES, MD5, と Crypt + + 原作: &a.wollman; + 24 September 1995. + + 訳: &a.hanai; + 12 September 1996. + + UN*X システムにおいてパスワードを保護し, + 簡単に覗かれるのを防 ぐために, + 従来パスワードはある方法によりスクランブルされてきました. + ベル研の Unix 第7版に始まって以来, + パスワードはセキュリティの専門家がい うところの + “一方向ハッシュ関数” + というものを用いることにより暗号化されるようになりました. + つまり, 可能な限りのパスワード空間を検索するという強引な + 方法以外にそのオリジナルを得ることができない, + といった方法でパスワードは変換 されるのです. 不幸なことに, + その当時 AT&T の研究者たちが手に入れることができ + た唯一の暗号化方法は DES(Data Encryption Standard) + に基づいたものでし た. + これは営利企業にとっては大して問題ではありませんが, FreeBSD のよ + うにすべてのソースコードが自由に手に入る + オペレーティングシステムにとっ ては重大な問題となります. + なぜなら, 多くの政府は DES やその他の暗号化ソフ + トウェアが国境を越えることに + 制限をつけようとしているからです. + + ここで, FreeBSD チームは一つのジレンマに直面しました. + つまり, どうす れば法に触れることなく国外にあるそれらの UNIX + システムのすべてに互換性を持 たせることができるか, + ということです. 私たちは ``dual track approach'' を + 取ることに決めました. + 規制されていないパスワードスクランブラのみを含む + 配布用物件を作り, DES + に基づいたパスワードハッシュを付加ライブラリ + として分けて供給するのです. + パスワードをスクランブルさせる関数は, C ライブラリから + libcrypt と呼ばれる(それを実行する C 関数が + crypt と + いう名前だからです)別のライブラリへ移されました. FreeBSD 1.x + 及び 2.0 のリリース前のスナップショットでは, + その規制されていないスクランブラは Nate Williams + によって書かれた安全でない関数を使っていますが, 次の + リリースでは RSA Data Security 社の一方向ハッシュ関数の MD5 + を使う方法 に置き換えられました. + これらの関数はどれも暗号化を含んでいないため, + 合衆国から持ち出し, + 他の多くの国へ持ち込めるものであるとされています. + + 一方, DES + に基づいたパスワードハッシュ関数に関する作業もまた進行中 でした, + まず, 合衆国及び他の国で書かれたコードの同期をとりながら, + 合衆国の外で書かれた crypt + のあるバージョンが持ち込まれました. そしてライブラリは修正され, + 二つにわけられました. すなわち DES libcrypt + は一方向パスワードハッシュをおこなうのに必要なコード のみを含み, + それとは別の libcipher + は実際に暗号化をおこなう + ためのエントリポイントとして生成されました. + コンパイルされたライブラリに対 + して国外に持ち出す許可を得るのを簡単にするために, + コードはこのように分け られたのです. + + + <command>crypt</command> メカニズムを理解する + + あるパスワード文字列を作るのに, DES + に基づいたハッシュ関数を使っ たのか, + MD5に基づいたハッシュ関数を使ったのかは非常に簡単にわかります. + MD5 を使ったパスワード文字列は必ず + $1$ という文字 で始まります. + DESを使ったパスワード文字列はどんな特定の文字も持っていま + せんが, MD5を使ったパスワードよりも短く, + $ という文字 + を持たない64文字のアルファベットで構成されています. + したがって, ドル記号で 始まっていない比較的短い文字列は DES + を使ったパスワードである可能性が非常 に高いです. + + あなたのシステムで, + どちらのライブラリが使われているかを決めるの は, + スタティックにリンクされている init + のようなもの(その ようなプログラムに対する唯一の方法は + わかっているパスワードを試してみ + て動くかどうかを確認することです.) + を除いたほとんどのプログラムについ ては非常に簡単なことです. + crypt を使うようなプログラムは + libcrypt にリンクされています. + そしてそれぞれのライブラリに 対する libcrypt + は適切な実装へのシンボリックリンクとなってい ます. 例えば, DES + 版を使っているようなシステムにおいては次のようになって + います: + + &prompt.user; cd /usr/lib +&prompt.user; ls -l /usr/lib/libcrypt* +lrwxr-xr-x 1 bin bin 13 Sep 5 12:50 libcrypt.a -> libdescrypt.a +lrwxr-xr-x 1 bin bin 18 Sep 5 12:50 libcrypt.so.2.0 -> libdescrypt.so.2.0 +lrwxr-xr-x 1 bin bin 15 Sep 5 12:50 libcrypt_p.a -> libdescrypt_p.a + + MD5 に基づいたライブラリを使っているシステムにおいては, + 同じようなリンクが 見られるでしょうが, そのターゲットは + libdescrypt ではなく + libscrypt になっているでしょう. + + + + + S/KEY + + 原作: &a.wollman; + 25 September 1995. + + 訳: &a.jp.hino;. + 24 September 1996. + + S/KEY は一方向ハッシュ関数 (ここで述べているバージョンでは, + 過去と の互換性を保つために MD4 を用いています. S/KEY + の他のバージョンでは MD5 や DES-MAC を用いているものもあります) + を基にしたワンタイムパスワー ド方式です. S/KEY は, バージョン + 1.1.5 以降のすべての FreeBSD に標準的 に含まれています. S/KEY は + FreeBSD 以外の数多くのシステムの上でも利用 可能であり, + その実装の数も増えています. S/KEY ば Bell Communications + Research, Inc. の登録商標です. + + 以下の説明では, 三種類の異なる「パスワード」が使われます. + まず一つ 目は, あなたが普段使っている普通の UNIX スタイルの, + もしくは Kerberos でのパスワードです. ここではこれを + “UNIX パスワード” と呼ぶことにし ます. 二つ目は, + S/KEY の key プログラムによって生成され, + keyinit + プログラムとログインプロンプトが受け付ける, 一回限りの + パスワードです. ここではこれを + “ワンタイムパスワード” と呼ぶことにし ます. + 三つ目のパスワードは, key (と場合により + keyinit) + プログラムに対してユーザが入力する秘密のパスワードで, + ワンタイムパスワー ドを生成するのに使われます. ここではこれを + “秘密のパスフレーズ” もし くは単に + “パスフレーズ” と呼ぶことにします. (訳注: + ユーザが頭の中だ けにしまっておくべきものが, + この秘密のパスフレーズです. なお, 原文では + これをパスワードと表記していますが, + 混乱を避けるために訳文ではすべて “ + 秘密のパスフレーズ” に統一しています.) + + 秘密のパスフレーズは, UNIX + パスワードと同じである必要はありませんし, また UNIX + パスワードと何らかの関連性を持たなければならないということも + ありません (両者を同一に設定することは可能ですが, + お奨めしません). UNIX パスワードは長さが 8 + 文字に制限されています (訳注: FreeBSD で DES + を導入していない場合はもっと長いパスワードも認識されます). + これに対し, S/KEY + では秘密のパスフレーズを好きなだけ長くすることができます (訳注: + 実装上, `key' + コマンドなどのバッファ長で制限されてしまう可能性が あります. + 200文字程度に押えておいた方がよいでしょう :-). 筆者は 7 語か + らなる文を使っています. 通常の設定では, S/KEY システムは UNIX + のパスワー + ドシステムと完全に独立して動作するようになっています. + + S/KEY システムでは他に二種類のデータを使用します. 一つは + “シード (種)” または (混乱を招きますが) + “キー” と呼ばれるもので, (訳注: デ フォルトでは) + 二つの文字と五つの数字で構成されます. もう一つは + “シー ケンス番号 で, 1 以上の整数です. + シーケンス番号は特に指定しなければ 100以下です (訳注: + ``keyinit' プログラムでは 9999 + まで指定できま す). S/KEY + はここまでに述べたデータを利用してワンタイムパスワードを生 + 成します. その方法は, まずシードと秘密のパスフレーズを連結し, + それに対 してシーケンス番号の回数だけ一方向ハッシュ (RSA Data + Security, Inc. に よる MD4 セキュアハッシュ関数) + を繰り返し計算します. そしてその結果を 六つの英単語に変換します + (訳注: ハッシュ計算の後, 64ビットに収まるよう + にデータを処理したものが厳密な意味でのワンタイムパスワードです. + 通常は ユーザの便宜のために, この + 64ビットデータと六つの英単語との間で変換処 理をおこなっています) + . login プログラムと su + プログラム は, + 前回最後に受け付けられたワンタイムパスワードを記録しています. + そし て, その前回のワンタイムパスワードと, + ユーザが入力したワンタイムパスワー + ドを一回ハッシュ関数にかけた結果とが一致した場合に, + このユーザは認証さ れます. 一方向ハッシュ関数を使うことにより, + もし (ログイン等に成功した) + ワンタイムパスワードが一回盗聴されたとしても, + 次回以降に使われる複数の + ワンタイムパスワードを生成することは不可能です. + シーケンス番号はログイ ン (等) + が成功するたびに一つずつ減らされて, ユーザとログインプログラム + の間で同期が取られます. (シーケンス番号が 1 になったら, S/KEY + を再度初 期化する必要があります.) + + 次に, S/KEY 関連の四つのプログラムについて説明します. + key プ ログラムは, シーケンス番号と, + シードと, 秘密のパスフレーズを受け付けて, + ワンタイムパスワードを生成します. keyinit + プログラムは, S/KEY を初期化するのに使用され, + また秘密のパスフレーズやシーケンス番号やシー + ドを変更するためにも使用されます. このプログラムを実行するには, + 秘密の パスフレーズか, または, + シーケンス番号とシードとワンタイムパスワードの 一組かの, + どちらかが必要になります. keyinfo + プログラムは, /etc/skeykeys + というファイルを調べて, このプログラムを起動し + たユーザの現在のシーケンス番号とシードを表示します. 最後に, + loginsu + プログラムについてですが, これらは S/KEY の + ワンタイムパスワードを, (訳注:システムが) + ユーザを認証するものとして受 理する処理をおこないます. + login プログラムは, 指定された特定の + アドレスからの接続に対して, UNIX + パスワードの使用を認めなくする機能, 逆に言えば S/KEY + の利用を強制する機能も持っています. + + このドキュメントでは, 四種類の異なる操作について説明します. + 一つ目 は, keyinit + プログラムを信頼できる通信路上で利用する場合で, 一 番始めに + S/KEY を設定する操作や, 使い始めたあとで秘密のパスフレーズや + シードを変更する操作です. 二つ目は, keyinit + プログラムを信頼で きない通信路上で利用する場合で, + 操作の目的は一つ目と同じです. この場合 には + key プログラムを併用する必要があります. + 三つ目は, key プログラムを使い, + 信頼できない通信路を通じてログインする操 作です. 四番目は, + key プログラムを使って, 複数のワンタイムパス + ワードを一気に生成する操作です. + ここで生成した複数のワンタイムパスワー ドは, + メモしたり印刷したりして携帯し, 信頼できる通信路が一切ないところ + (例えば展示会場など) で利用することができます. (訳注: + ワンタイムパスワー ドを記録した紙をなくさないこと! + 電話番号やIPアドレス, ユーザ名を一緒に + メモしていたら最悪です!!) + + + 信頼できる通信路での初期化 + + 信頼できる通信路 (例えばあるマシンのコンソール画面など) + を利用して いるときに, S/KEY の初期化, S/KEY + の秘密のパスフレーズの変更, またはシー + ドの変更をおこなうことができます. そのためには, + まずあなた自身がログイ ンし, keyinit + コマンドを以下のようにパラメタなしで実行します: + + &prompt.user; keyinit +Updating wollman: ) この部分は始めて S/KEY を使 +Old key: ha73895 ) うときには表示されません. +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 wollman s/key is 99 ha73896 ) あとで説明します. +SAG HAS FONT GOUT FATE BOOM ) + + 上の例で出てきた事柄について説明しましょう. Enter + secret password: + というプロンプトに対してあなたが考えた秘密のパスフレーズを + 入力します (筆者は 7 + 単語以上の文を秘密のパスフレーズにしています). こ + の秘密のパスフレーズは後でログインするために + 必要になるものです. `ID' から始まる行は, S/KEY + における一回分のパラメタであり, あなたのログイ + ン名とシーケンス番号とシードです. (訳注: + `keyinit' コマンドは次回 + にログインするときに使われるパラメタを参考のために + ここで表示しま す. ) S/KEY を使ってログインするときには, + システム側が自動的にこれらの パラメタを表示してくれますから, + これらのパラメタを覚えておく必要は ありません. 最後の行が, + 今述べたパラメタと入力された秘密のパスフレー + ズから計算されたワンタイムパスワードです. この例を実行した後, + 次にログ インするときに打ち込むべきワンタイムパスワードが + これです. + + + + 信頼できない通信路での初期化 + + 信頼できない通信路を使って S/KEY を初期化, + または秘密のパスフレーズ やシードを変更するためには, + 信頼できる通信路として, その信頼できない通 + 信路とは別のものを用意する必要があります. + その信頼できる通信路は key + プログラムを実行するために必要となるもので, 例えばそれは, + あなたが信頼できる Macintosh + のデスクアクセサリや信頼できるマシンのシェ + ルプロンプトだったりするでしょう + (そこでの操作に関しては後述します). (訳注: + ここでの通信路とはマシンそのものになります. 信頼できるマシンと + は, 信頼できる人がしっかり管理しているマシンということです.) + 他に準備 しておくものとして, シーケンス番号 + (100は適切な値といえるでしょう) と, + 場合によっては自分で考えた, + またはランダムに生成されたシードがあります. あなたが S/KEY + を初期化しようとしているマシンへの通信路が, 信頼できな + いものである場合には keyinit -s + コマンドを以下のように使用しま す: + + + &prompt.user; keyinit -s +Updating wollman: +Old key: kh94741 +Reminder you need the 6 English words from the skey command. + ) `keyinit' コマンドが出力する注意です. 訳すと, + ) 注意 - skey コマンドの出力する 6 英単語が必要になります. +Enter sequence count from 1 to 9999: 100 ) ここを入力. +Enter new key [default kh94742]: ) リターンのみ入力. +s/key 100 kh94742 + + デフォルトのシード (keyinit + プログラムは困ったことにこれを key と + 読んでいるのですが, 混乱しないよう注意してください) + で構わなければ, リ ターンキーを押してください. 次に, + あらかじめ用意しておいた信頼できる通 信路 + (信頼できるマシンや信頼できる S/KEY デスクアクセサリなど) + へ移っ て, 先ほどと同じパラメタを入力します. + + $prompt.user; key 100 kh94742 +Reminder - Do not use this program while logged in via telnet or rlogin. +Enter secret password: ) ここで秘密のパスフレーズを入力します. +HULL NAY YANG TREE TOUT VETO + + ここで信頼できない通信路の方に戻って, + key コマンドが出力したワ + ンタイムパスワードをコピーして keyinit + プログラムに入力します. + + s/key access password: HULL NAY YANG TREE TOUT VETO +ID wollman s/key is 100 kh94742 +HULL NAY YANG TREE TOUT VETO + + 後は, 前章で説明したことと同様です. + + + + ちょっと寄り道: ログインプロンプトについて + + どうやってワンタイムパスワードを生成するかを説明する前に, + S/KEY を 使う場合のログインプロンプトを + 見ておいた方がよいでしょう. + + &prompt.user; telnet himalia +Trying 18.26.0.186... +Connected to himalia.lcs.mit.edu. +Escape character is '^]'. +s/key 92 hi52030 +Password: + + パスワードを要求する前に, + ログインプログラムがシーケンス番号とシードを + 表示していることがわかります. + この二つのパラメタを使ってワンタイムパ + スワードを計算することになります. + ここではまだ使っていませんが, 便利な + 機能がログインプログラムに備わっています: + パスワードプロンプトに対して, + 何も入力せずにリターンを押すとエコーモードに切り替わります. + つまりタイ プした文字がそのまま見えるようになるのです. これは + S/KEY のワンタイム パスワードを紙に印刷していた場合など, + ワンタイムパスワードを手で入力し + なければならない場合に特に役立つ機能です. + + このログインしようとしてるマシンが, + あなたが今使っているマシンから UNIX + パスワードを使ってログインすることができないように + 設定されている 場合があります. その場合には, + ログインプロンプトには S/KEY のワンタイ + ムパスワードの利用が必要であることを示す (s/key + required) という注釈が表示されます. + + + + ワンタイムパスワードを生成する + + 次に前章のログインプロンプトに対して入力するための + ワンタイムパスワー ドを生成しましょう. そのために, + 信頼できるマシンと key プログラ + ムを使用します. (key プログラムには DOS や + Windows の上で動くも の, + Macintoshのデスクアクセサリとして動くものなどもあります.) + コマンド ラインで key + プログラムを起動するときには, シーケンス番号とシー + ドを引数として指定します. 入力が面倒な人は, + ログインプロンプトに表示さ れたもののうちで + key からその行の最後までを, + そのままカットア ンドペーストすることもできます. + key プログラムの実行は以下のよ + うになります: + + &prompt.user; key 92 hi52030 ) 前章の例からペースト. +Reminder - Do not use this program while logged in via telnet or rlogin. +Enter secret password: ) 秘密のパスフレーズを入力. +ADEN BED WOLF HAW HOT STUN + + そして別のウィンドウで: + + s/key 92 hi52030 ) 前章の例の続き. +Password: ) ここでリターンキーを押した. + (turning echo on) +Password:ADEN BED WOLF HAW HOT STUN +Last login: Wed Jun 28 15:31:00 from halloran-eldar.l +[以下略.] + + 以上の手順は, 信頼できるマシンが利用できる場合 + のみに 使えるもっ とも簡単な方法です. + Java S/Key の key applet もあり, The Java + OTP Calculator からダウンロードして Java + をサポートするブラウザ上でローカルに + 実行することができます. + + + + 複数のワンタイムパスワードを生成する + + 都合によっては, + 信頼できるマシンや信頼できる通信路が一切確保できな + いようなところで S/KEY を使う必要があるでしょう. + このような場合には, key + コマンドを使って複数のワンタイムパスワードを一気に生成する + ことが可能です. + そして結果を紙に印刷して携帯していくことができます. 例 + えば: + + &prompt.user; key -n 25 57 zz99999 +Reminder - Do not use this program while logged in via telnet or rlogin. +Enter secret password: +33: WALT THY MALI DARN NIT HEAD +34: ASK RICE BEAU GINA DOUR STAG +[...] +56: AMOS BOWL LUG FAT CAIN INCH +57: GROW HAYS TUN DISH CAR BALM + + という引数によって 25 + 個のワンタイムパスワードの生成を要 求します. ここで + は, + 最後に表示されている (もっとも大き い) + シーケンス番号です. 残りのパラメタは前出の例と同様です. + 出力は普 通に使う順番とは + に出力されていることに注意してください (訳注: + 一番最初に使うワンタイムパスワードは + 一番最後に出力されたものです). こ + の結果をカットアンドペーストして lpr + コマンドを使って印刷すると よいでしょう. + もしあなたがセキュリティに偏執するなら, この結果を紙と鉛 + 筆を使って手で書き移した方がよいかもしれません. ここで, + 出力の各行はシー + ケンス番号とそれに対応する一回分のワンタイムパスワードです. + 消費済みの ワンタイムパスワードの行をペンで消していくと + 便利でしょう. + + + + UNIX パスワードの利用を制限する + + 設定ファイル /etc/skey.access + を使って UNIX パスワードの利 + 用を制限することができます. この場合の判断基準として, + ログインを受け付 + ける際のホスト名, ユーザ名, 端末のポート, IP + アドレスなどが利用できま + す. この設定ファイルの詳細に関してはマニュアル + &man.skey.access.5; を + ご覧ください. マニュアルにはこの機能に関わるセキュリティに + ついて, いく + つかの警告が記述してあります. この機能を使って + セキュリティを高めようと + するのならば絶対にこのマニュアルを読んでください. + + もし /etc/skey.access + ファイルが存在しないならば (FreeBSD + をインストールした直後の状態では存在しません), + すべてのユーザが UNIX パスワードを利用することができます. + 逆に, もしファイルが存在するならば, + /etc/skey.access + ファイルに明示的に記述されていない限り, すべ てのユーザは + S/KEY の利用を要求されます. どちらの場合においても, その + マシンのコンソールからはいつでも UNIX + パスワードを使ってログインするこ とが可能です. + + 以下によく使われるであろう + 三種類の設定を含む設定ファイルの例を示し ます: + + +permit internet 18.26.0.0 255.255.0.0 +permit user jrl +permit port ttyd0 + + はじめの行 (permit internet) で, telnet + などで接続するときの IP のソースアドレス (注意: + これは偽造されるおそれがあります) が特定の値と + マスクに一致している場合に, UNIX + パスワードの利用を許可することを指定 しています. + この設定自体はセキュリティを高めるための機能ではありません. + そうではなく, ログインの権利を持つ許可されたユーザに対して, + 現在そのユー + ザが使っているネットワークが信頼できないと考えられるので S/KEY + を使う べきである, + ということを気づかせるための機能であると考えてください. + + 二行目 (permit user) によって, + ある特定のユーザに対して, い つでも UNIX + パスワードの利用を許可するように指定しています. 一般的には + この設定をおこなうべきではありません. key + プログラムがどうして も使えない環境にいる人や, + ダム端末しかない環境にいる人, または何度教え + ても聞く耳を持たないような人を + サポートする必要がある場合にのみ設定をお + こなってください. + + 三行目 (permit port) によって, + ある特定の端末ポートからログ + インしようとするすべてのユーザに対して UNIX + パスワードの利用を許可する ように指定しています. + この設定はダイヤルアップ回線に対する設定として利 + 用できるでしょう. + + + + + Kerberos + + 原作: &a.markm; + (&a.md; からの寄稿に基づいています). + + 訳: &a.jp.arimura;. + + Kerberosは, + サーバのサービスによってユーザが安全に認証を受けられる + ようにするための, ネットワークの付加システム及びプロトコルです. + リモートログイン, リモートコピー, + システム間での安全なファイルのコピ + ーやその他のリスクの高い仕事がかなり安全に, + そしてこれまでより制御 できるようになります. + + 以下の文章は, + FreeBSD用として配布されているKerberosをセットアップ + する際のガイドとして読むことができます. しかし, + 完全な説明が必要な場合には, マニュアルページを読んだ方がよい + でしょう. + + FreeBSDのKerberosは, + オリジナルの4.4BSD-Liteの配布に含まれている ものではなく, + FreeBSD 1.1.5.1のときに移植されたeBonesです. + これはアメリカ/カナダの外で作成されており, + これら以外の国の人々にも 手に入れられるものです. + + このソフトウェアを合法的な配布物として得るために, アメリカも + しくはカナダのサイトから + 持ってこないでください. でないと, + そのサイトが大変な問題に巻き込まれます. + 合法的な配布は, 南アフリカのftp.internat.freebsd.orgや, FreeBSD + の公式ミラーサイトから入手することができます. + + + 初期データベースの作成 + + この作業はKerberosサーバだけでおこないます. まず, + 古いKerberosの データベースが存在しないことを確認してください. + ディレクトリ/etc/kerberosIVに移って, + 次のファイルだけが 存在することをチェックします: + + &prompt.root; cd /etc/kerberosIV +&prompt.root; 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 + というファイルを次のように編集してください: + + &prompt.root; 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は次のようになります: + + &prompt.root; 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コ + マンドを次のように実行してください: + + &prompt.root; 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コマンドを使用します. + + &prompt.root; kstash + +Enter Kerberos master key: + +Current Kerberos master key version is 1. + +Master key entered. BEWARE! + + これで暗号化されたマスタパスワードが + /etc/kerberosIV/master_key + に保存されました. + + + + すべてが動くようにするための設定 + + Kerberosを導入する それぞれの + システムのデータベースに, 2つ のprincipal (主体名) + を追加する必要があります. その名前は + kpasswdrcmdです. + これら2つのprincipalは, 個々 のシステムにおいて, + システム名と同じ名前のインスタンスと組にして作成 + されます. + + これらの kpasswd と + rcmd というデーモンによって, 他の + システムからKerberosのパスワードを変更したり, + rcprlogin, + rshといったコマンドを実行したりできるよ + うになります. + + それでは実際にこれらのエントリを追加しましょう: + + &prompt.root; 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: <---- 何も入力しないと終了します + + + + サーバファイルの作成 + + 次に, 各マシンにおけるサービスを定義している, + すべてのインスタンス を展開します. + これにはext_srvtabというコマンドを使用しま + す. このコマンドで作成されるファイルは, Kerberosの各クライアン + トの/etc/kerberosIVディレクトリに + 安全な方法でコピーまたは + 移動する必要があります. このファイルはそれぞれのサーバとクラ + イアントに存在しなければならず, + またKerberosの運用において重要なも のです. + + &prompt.root; ext_srvtab grunt + +Enter Kerberos master key: + +Current Kerberos master key version is 1. + +Master key entered. BEWARE! +Generating 'grunt-new-srvtab'.... + + このコマンドは一時的なファイルを作成するだけです. + ファイル名をすべ てのサーバが読めるような + srvtab という名前に変更しな + ければなりません. + mvコマンドを用いてシステムの場所に移動 + してください. + + &prompt.root; mv grunt-new-srvtab srvtab + + そのファイルがクライアントに配るためのもので, + ネットワークが安全で はないと思われる場合には, + client-new-srvtab + を移動 + 可能なメディアにコピーして物理的に安全な方法で運んでください. + クラ + イアントの/etc/kerberosIVディレクトリで, + 名前を srvtabに変更し, + modeを600にするのを忘れないでください: + + &prompt.root; mv grumble-new-srvtab srvtab +&prompt.root; chmod 600 srvtab + + + + データベースへのユーザの追加 + + ここで, + ユーザのエントリをデータベースに追加する必要があります. + 始めに, + ユーザjaneのエントリを作成してみましょう. + kdb_edit + を用いて次のように作成してください: + + &prompt.root; 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: <---- 何も入力しないと終了します + + + + すべてのテスト + + まず始めにKerberosデーモンを起動する必要があります. + /etc/rc.conf + ファイルを正しく編集してあれば, マシンを再 + 起動することでに自動的にデーモンが起動します. + これはKerberosサー バでのみ必要です. + Kerberosクライアントは/etc/kerberosIVか + ら必要なものを自動的に入手します. + + &prompt.root; 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 +&prompt.root; 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コマンドで得ることができます: + + &prompt.user; kinit jane +MIT Project Athena (grunt.grondar.za) +Kerberos Initialization for "jane" +Password: + + klist コマンドを用いてトークンを見て, + きちんとチケットを持って いるかどうか確認してください: + + &prompt.user; 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 + データベースに対して認証されるかどうかチェックして + ください: + + &prompt.user; passwd +realm GRONDAR.ZA +Old password for jane: +New Password for jane: +Verifying password +New Password for jane: +Password changed. + + + + <command>su</command>特権の追加 + + root権限が必要なユーザは誰でも, + suコマンドのパス + ワードをユーザ毎に別のもの + として持つことができます. + rootsu + できる権利を与えられたidを追加します. これは, + principalに付いているroot + というインスタンスに よって制御されています. + kdb_editを用いて + jane.rootというエントリを + Kerberosデータベースに作成します: + + &prompt.root; 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: <---- 何も入力しないと終了します + + 実際にトークンをもらって, + ちゃんと働いているかどうか確認しましょう: + + &prompt.root; kinit jane.root +MIT Project Athena (grunt.grondar.za) +Kerberos Initialization for "jane.root" +Password: + + ここでrootユーザの .klogin + ファイルにユーザを追加する必要が あります. + + &prompt.root; cat /root/.klogin +jane.root@GRONDAR.ZA + + suしてみましょう: + + &prompt.user; su +Password: + + どのトークンを持っているか見てみましょう: + + &prompt.root; 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 + + + + 他のコマンドの使用 + + ここまでの例では, jane という principal + を root とい + うインスタンス付きで作成しました. + これはユーザと同じ名前をprincipalと しており, + Kerberosのデフォルトの値です; + <username>.root + という形式の + <principal>.<instance>で, + 必要なエント + リがrootのホームディレクトリの + .kloginファイルに あれば, + <username>がrootに + suすることができま す. + + &prompt.root; cat /root/.klogin +jane.root@GRONDAR.ZA + + 同様に, ユーザのホームディレクトリの + .kloginファイルに次の + ような行がある場合には: + + &prompt.user; cat ~/.klogin +jane@GRONDAR.ZA +jack@GRONDAR.ZA + + jane または jack + という名前で (前述のkinit によって) + 認証されている GRONDAR.ZA + という管理領域のユーザ なら誰でもrlogin や + rsh, rcp等によってこ + のシステム (grunt) + のjaneのアカウントまたはファ + イルにアクセスできます. + + 例えば, Janeが他のシステムにKerberos + を用いてloginします: + + &prompt.user; kinit +MIT Project Athena (grunt.grondar.za) +Password: +&prompt.user; 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 + をインスタンスなしで設定してあ ります. + + &prompt.user; kinit +&prompt.user; 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 + + + + + ファイアウォール + + 原作: &a.gpalmer;, &a.alex;. + + 訳: &a.jp.saeki;. + 11 November 1996. + + ファイアウォールは, + インターネットに参加している人はもちろんのこと, + プライベートネットワークのセキュリティ向上のための + アプリケーションを 探している人にとっても, + ますます興味深くなりつつある分野です. + このセクションではファイアウォールとは何か, + ファイアウォールの使用法, + そしてファイアウォールを構築するために FreeBSD のカーネルで + 提供されているファシリティ (機能) + の使用法について説明したいと思います. + + + 社内のネットワークと “巨大かつ信頼のおけない + インターネット” との間にファイアウォールを構築することで + セキュリティ上のすべての問題が解決できると考える人がいます. + ファイアウォールはセキュリティ上の問題を + 解決する助けになる場合もありますが, + 充分な設定がなされていないファイアウォールは, + まったくファイアウォールを + 持たない場合よりもセキュリティ上の危険を増大させてしまいます. + ファイアウォールにできることは, + あなたのシステムにもう一つのセキュリティ層を + 追加することだけで, + 本気でアタックをしかけてくるクラッカーが内部ネットワークに + 侵入するのを妨げることはできません. + ファイアウォールを侵入不可能と過信して + 内部のセキュリティをおろそかにすることは, + 単にクラッカーの仕事を少し簡単にするだけでしか + ありません. + + + + ファイアウォールとは何か ? + + 現在インターネットで普通に使用されている + ファイアウォールには 二つの異なるタイプがあります. 一つは, + 厳密には パケットフィルタリングルータ + と 呼ばれるタイプのものです. これはマルチホームのホストマシン + (複数の ネットワークに接続されているマシン) のカーネルが, + ある規則にしたがって + パケットを転送したりブロックしたりするものです. もう一つは, + proxy (代理) サーバ + として知られているタイプのものです. これは, + おそらくはマルチホームのホストマシン上で, + カーネルによるパケット転送を 禁止して, + デーモンにより認証の提供とパケットの転送とを + おこなうものです. + + 二つのタイプのファイアウォールを組み合わせて使用して, + 特定のマシン ( 要塞ホスト と呼ばれる) + だけが パケットフィルタリングルータを通して内部ネットワークへ + パケットを送ることができるよう設定している + サイトがしばしば存在します. proxy (代理) + サービスは通常の認証メカニズムよりもセキュリティを + 強化してある 要塞ホストで動作させます. + + FreeBSD は (IPFW + として知られる) カーネルパケットフィルタ込みで + 提供されています. このセクションの後の方では, + このフィルタについての 説明を集中しておこないます. + サードパーティから提供されるソフトウェアを使用することにより, + Proxy サーバを FreeBSD 上に構築することができます. しかし, + 現在入手可能な proxy サーバは + たいへんバラエティに富んでいるので, + このドキュメントでそれらすべてを + カバーすることは不可能です. + + + パケットフィルタリングルータ + + ルータとは, 二つまたはそれ以上のネットワークの間で + パケットの転送をおこなう マシンのことです. + パケットフィルタリングルータは, そのカーネルの内部に, + 一つ一つのパケットをルールリストと比較して + 転送するかしないかを決める 特別なコードを持っています. + 最近の IP ルーティングソフトウェアのほとんどは, 内部に + パケットのフィルタリングをおこなうためのコードを持っていて, + デフォルトでは すべてのパケットを転送するようになっています. + このフィルタを有効にするためには, + パケットの通過を許すべきかどうかを決める + ルールを自分で定義する必要があります. + + パケットを通すべきか通すべきでないかを決めるために, + パケットヘッダの内容にマッチするものが + ルールリストから探されます. マッチするルールが見つかると, + ルールアクションが実行されます. ルールアクションには, + パケットを捨てる, パケットを転送する, + またはパケットの発信元に ICMP + メッセージを送り返すというものがあります. + ルールの検索は先頭から順番におこなわれ, + 通常は最初にマッチしたものだけが 適用されます. そのため, + このルールリストは “ルールチェーン” + と呼ばれることもあります. + + パケットマッチングの基準は使用するソフトウェアに + よって異なりますが, 通常はパケットの発信元 IP アドレス, + 宛先 IP アドレス, 発信元ポート番号, 宛先ポート番号 + (ポート番号はポートをサポートするプロトコルの場合のみ), + パケットタイプ (UDP, TCP, ICMP など) + に基づくルールを指定することができます. + + + + Proxy サーバ + + Proxy サーバとは通常のシステムデーモン (telnetd, ftpd + など) を 特別なサーバで置き換えたマシンのことです. + これらのサーバは, + 通常は中継をおこなって特定方向への接続だけを許すため, + proxy サーバ と呼ばれます. (例えば) + proxy telnet + サーバをファイアウォールホストで走らせておきます. + 外部からユーザがファイアウォールに対して telnet + を実行すると, proxy telnet サーバが応答して, + 何らかの認証メカニズムを実行します. これを通過した後で, + 内部ネットワークへのアクセスがおこなえるように なるのです. + (内部ネットワークからの信号は proxy + サーバがかわりに受け取り, 外へ向けて送り出します.) + + Proxy サーバは通常, + 普通のサーバより堅固に構築されていて, しばしば + “使い捨て” パスワードシステムなどを含む, + 多様な認証メカニズムを持っています. + “使い捨て”パスワードシステムとは, + どういうものなのでしょうか. 仮に誰かが何らかの方法で, + あなたが使用したパスワードを手に入れたとします. しかし, + 一度使用したことで, + そのパスワードは既に無効になっているのです. ですから, + そのパスワードをもう一度使用したとしても, あなたのシステムへ + アクセスすることはできないというわけです. + これらのサーバは中継をおこなうだけで, + 実際のところサーバホスト自身への + アクセスをユーザに許してはいません. そのため, + 何者かがセキュリティシステムに + 侵入用の裏口を取り付けることは, + より困難になっています. + + proxy サーバはアクセス制限の方法をいくつも持っていて, + 特定のホスト + だけがサーバへのアクセス権を得ることができるように + なっていることがあり ます. + そして目的のマシンと通信できるユーザを制限するように + 設定することもできます. もう一度言いますが, + どんなファシリティ (機能) が使えるかは, どんな proxy + サービスをおこなうソフトウェアを選ぶかに大きく + 依存します. + + + + + IPFW で何ができるか + + FreeBSD とともに配布されている + IPFW は, カーネル内部にあって + パケットのフィルタリングとアカウンティングを + おこなうシステムであり, + ユーザ側のコントロールユーティリティである &man.ipfw.8; を + 含んでいます. ルーティングの決定をおこなう際に, + これらは互いに協力して, + カーネルで使用されるルールを定義したり, + 現在使用されているルールを + 問い合わせたりすることができます. + + IPFW + は互いに関連する二つの部分からなっています. + ファイアウォールセクションは + パケットフィルタリングをおこないます. また, IP + アカウンティングセクションはファイアウォールセクションのものと + 似たルールに基づいてルータの使用を追跡します. これにより, + (例えば) 特定のマシンからルータへのトラフィックがどのくらい + 発生しているか調べたり, どれだけの WWW (World Wide Web) + トラフィックが + フォワードされているかを知ることができます. + + IPFW は, + ルータではないマシンにおいても入出力コネクションの + パケットフィルタリングのために + 使用することができるように設計されています. これは一般的な + IPFW + の使用法とは異なる特別な使い方ですが, + こういった状況でも同じコマンドと + テクニックが使用されます. + + + + FreeBSD で IPFW を有効にする + + IPFW + システムの中心となる部分はカーネル内部にあります. そのため, + どのファシリティ (機能) を必要とするかによって, 一つまたは + それ以上のオプションをカーネルコンフィグレーション + ファイルに追加し, + カーネルを再コンパイルする必要があるでしょう. + カーネルの再コンパイル方法の詳細については, カーネルコンフィグレーション + を参照してください. + + 現在, IPFW + に関係するカーネルコンフィグレーションオプションは + 三つあります: + + + options IPFIREWALL + + パケットフィルタリングのためのコードを + カーネルに組み込みます. + + + + + options IPFIREWALL_VERBOSE + + &man.syslogd.8; を通じて + パケットのログを取るためのコードを有効にします. + フィルタルールでパケットのログを取るように指定しても, + このオプションが指定されていなければ, + ログを取ることはできません. + + + + + options IPFIREWALL_VERBOSE_LIMIT=10 + + &man.syslogd.8; を通じて + ログを取るパケットの数をエントリ毎に制限します. + 敵対的な環境においてファイアウォールの + 動作のログを取りたいけれど, + syslog の洪水によるサービス拒絶攻撃に対し + 無防備でありたくないという場合に, + このオプションを使用したいと思うことが + あるかもしれません. + + チェーンエントリのログが指定された制限数に達すると, + そのエントリに関するログ取りは停止されます. + ログ取りを再開するには, &man.ipfw.8; + ユーティリティを使用して + 関連するカウンタをリセットする必要があります: + + &prompt.root; ipfw zero 4500 + + 4500 とは, + ログ取りを続行したいチェーンエントリの番号です. + + + + + 以前のバージョンの FreeBSD は + IPFIREWALL_ACCT というオプションを + 持っていました. しかし, + ファイアウォールコードがアカウンティングファシリティ (機能) を + 自動的に含むようになったため, + 現在では使用されることはなくなっています. + + + + IPFW の設定 + + IPFW ソフトウェアの設定は + &man.ipfw.8; ユーティリティを + 通じておこないます. このコマンドの構文は非常に + 複雑に見えますが, + 一旦その構造を理解すれば比較的単純です. + + このユーティリティでは今のところ四つの異なる + コマンドカテゴリが 使用されています: それは追加 / 削除, 表示, + フラッシュ, およびクリアです. 追加 / + 削除はパケットの受け入れ, 拒絶, ログ取りをどのようにおこなうか + というルールを構築するのに使用します. 表示はルールリスト + (またはチェーン) と (アカウンティング用) パケットカウンタの + 内容を調べるのに使用します. + フラッシュはチェーンからすべてのエントリを + 取り除くのに使用します. + クリアは一つまたはそれ以上のアカウンティングエントリを + ゼロにするのに 使用します. + + + IPFW ルールの変更 + + この形式での使用法は: + + ipfw + -N + コマンド + index + アクション + log + プロトコル + アドレス + オプション + + + + この形式で使用する際に有効なフラグは一つだけです: + + + -N + + アドレスやサービス名を + 文字列に変換して表示します. + + + + + コマンド + は一意である限り短縮可能です. 有効な コマンド + は: + + + add + + ファイアウォール / アカウンティングルールリストに + エントリを追加します. + + + + delete + + ファイアウォール / + アカウンティングルールリストから + エントリを削除します. + + + + + 以前のバージョンの IPFW では, + ファイアウォールエントリと + パケットアカウンティングエントリが別々に利用されていました. + 現在のバージョンでは, それぞれのファイアウォールエントリ毎に + パケットアカウンティングエントリが備えられています. + + index が指定されていると, + エントリはチェーン中の 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) の + 場合にだけ指定可能です. + + は必須ではなく, + 特定のインターフェースを通ってきたパケット + だけにマッチするように, IP アドレスまたはローカル IP + インターフェースの ドメイン名, またはインターフェース名 + (例えば ed0) を + 指定することができます. + インターフェースユニット番号はオプションで, + ワイルドカードで指定することが できます. 例えば, + ppp* はすべてのカーネル PPP + インターフェースに マッチします. + + address/mask の指定は: + + address + + または + + address/mask-bits + + または + + address:mask-pattern + + + IP + アドレスのかわりに有効なホスト名を指定することも可能です. + + はアドレスマスクで上位何ビットを1にするべきかを + 示す十進数値です. 例えば次の指定, + 192.216.222.1/24 はクラス C のサブネット + (この場合 192.216.222) の任意のアドレスにマッチする + マスクを作成します. + + は与えられたアドレスと 論理 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 時間超過 + (&man.traceroute.8; で使用されているように, TTL + 満了を示すのに使用されます) です. + + + + + + + IPFW ルールリストの表示 + + この形式での使用法は: + + ipfw + -a + -t + -N + l + + + + この形式で使用する際に有効なフラグは三つあります: + + + -a + + リスト表示の際にカウンタの値も表示します. + このオプションは アカウンティングカウンタの + 内容を見る唯一の手段です. + + + + -t + + 各チェーンエントリが最後に + マッチした時刻を表示します. この時刻表示は + &man.ipfw.8; ユーティリティで使用される入力形式と + 互換性がありません. + + + + -N + + (可能であれば) + アドレスやサービス名を文字列に変換して表示します. + + + + + + + IPFW ルールのフラッシュ + + チェーンをフラッシュするには: + + ipfw + flush + + + + カーネルに固定されているデフォルトルール (インデックス + 65535 番) 以外の, + ファイアウォールチェーンの中のすべてのエントリを削除します. + デフォルトではすべてのパケットが拒絶されるので, + 一旦これを実行すると, + パケットを許可するエントリがチェーンに追加されるまで, + あなたのシステムがネットワークから切り放されてしまいます. + そのため, + ルールのフラッシュをおこなうときは注意が必要です. + + + + IPFW パケットカウンタのクリア + + 一つまたはそれ以上のパケットカウンタをクリアするためには: + + ipfw + zero + index + + + + index が指定されていなければ, + すべてのパケットカウンタが クリアされます. + index が指定されていれば, + 特定のチェーンエントリだけが クリアされます. + + + + + ipfw に対するコマンドの例 + + このコマンドはルータを介して転送される, ホスト evil.crackers.org から ホスト nice.people.org の telnet ポートへの + すべてのパケットを拒絶します: + + &prompt.root; ipfw add deny tcp from evil.crackers.org to nice.people.org 23 + + 次の例は, ネットワーク crackers.org (クラス C) 全体から + マシン nice.people.org + (の任意のポート) への 任意の TCP トラフィックを拒絶し, + ログを取ります. + + &prompt.root; ipfw add deny log tcp from evil.crackers.org/24 to nice.people.org + + あなたの内部ネットワーク (クラス C のサブネット) に対する + X セッションを 張れないようにする場合, + 以下のコマンドで必要なフィルタリングがおこなえます: + + &prompt.root; ipfw add deny tcp from any to my.org/28 6000 setup + + アカウンティングレコードを見るには: + + &prompt.root; ipfw -a list + + または短縮形式で + + &prompt.root; ipfw -a l + + 最後にチェーンエントリがマッチした + 時刻を見ることもできます. + + &prompt.root; ipfw -at l + + + + パケットフィルタリングファイアウォールの構築 + + + 以下の提案は, ただの提案にすぎません: + 必要な処理はそれぞれのファイアウォールで異なるため, + あなた独自の要求にあったファイアウォールを構築する方法を + ここで述べることはできないのです. + + + 最初にファイアウォールをセットアップするとき, + コントロールされた環境でファイアウォールホストの + 設定がおこなえるような + テストベンチセットアップが用意できない場合には, + カーネルのログ取りを + 有効にしてログ取り版のコマンドを使用することを + 強くおすすめします. そうすることで, + 大した混乱や中断なしに問題となる範囲の特定と処置を + 素早くおこなうことができます. + 初期セットアップフェーズが完了してからであっても, + アタックの可能性のあるアクセスをトレースしたり, + 要求の変化に応じてファイアウォールルールを + 変更したりできるので, `deny' + に対するログ取りをおこなうことをおすすめします. + + + accept + コマンドのログ取りをおこなっていると, + ファイアウォールをパケットが一つ通過する毎に 1 + 行のログが生成されるため 大量の + ログデータが発生します. そのため, 大規模な ftp/http + 転送などをおこなうと, システムが非常に 遅くなってしまいます. + また, パケットが通過するまでにカーネルにより + 多くの仕事を要求するため, パケットのレイテンシ (latency) + を増加させてしまいます. syslogd + もログをディスクに記録するなど, より多くの CPU タイムを + 使用し始め, 実に容易に /var/log + が置かれているパーティションを + パンクさせてしまう可能性があります. + + + 現状では, FreeBSD + はブート時にファイアウォールルールをロードする + 能力を持っていません. 私は /etc/netstart + スクリプトにロードをおこなうスクリプトを + 追加することをおすすめします. IP + インターフェースの設定がおこなわれる前に + ファイアウォールの設定がおこなわれるように, netstart + ファイル中の 充分に早い位置にルールをロードする + スクリプトを配置してください. こうすることで, + ネットワークがオープンな間は常に抜け道が塞がれている + ことになります. + + ルールをロードするために使用するスクリプトは, + あなたが作成しなければなりません. 現在のところ + ipfw は 1 コマンドで複数のルールを + ロードするユーティリティをサポートしていません. + 私が使用しているシステムでは以下のようにしています: + + &prompt.root; ipfw list + + ファイルに現在のルールリストを出力し, + テキストエディタを使用して すべての行の前に + ipfw と書き足します. こうすることで, + このスクリプトを /bin/sh に与えてルールをカーネルに再読み込み + させることができます. + これは最も効率的な方法とはいえないかもしれませんが, + きちんと動作しています. + + 次の問題は, ファイアウォールが実際には何を する + べきかです ! + これは外部からそのネットワークへのどんなアクセスを許したいか, + また内部から外界へのアクセスを + どのくらい許したいかに大きく依存します. + いくつか一般的なルールを挙げると: + + + + 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 から 入手可能です. + ftp://ftp.cert.org/pub/tech_tips/packet_filtering + + 前にも述べたように, これはただの ガイドライン + にすぎません. + ファイアウォールでどのようなフィルタルールを使用するかは, + あなた自身が 決めなければなりません. + これまでのアドバイスにしたがったにも関わらず, + 誰かがあなたのネットワークに 侵入してきたとしても, + 私は「いかなる」責任もとることはできません. + + + + + diff --git a/ja/handbook/serialcomms/chapter.sgml b/ja/handbook/serialcomms/chapter.sgml new file mode 100644 index 0000000000..20b76739bc --- /dev/null +++ b/ja/handbook/serialcomms/chapter.sgml @@ -0,0 +1,2350 @@ + + + + シリアル通信 + + + シリアル接続の基礎 + + Assembled from FAQ. + + このセクションには, + シリアルポートについての一般的な情報が書かれていま す. + あなたが求めている情報が, もしここで見つからなかった場合には, + ハン ドブックの端末とダイアルアップのセクションを見てください. + + + ttydX + (または cuaaX) + デバイスは, アプリケーション上 + でシリアルポートをオープンする時に使用する, + 標準的なデバイスです. プロセスがデバイスをオープンする際, 端末 + I/O 設定の デフォルトセットが使用されます. これらの設定内容は, + 次のコマンドで確認することができます. + + &prompt.root; stty -a -f /dev/ttyd1 + + このデバイスの設定を変更した場合, その設定はデバイスが + クローズされるまで有効です. デバイスが再びオープンされる時, + デフォルトの設定値に戻ります. + デフォルトの設定を変更するためには, + “初期状態”を設定した + いデバイスをオープンして調節することができます. 例えば, ttyd5 + というデバイスに対して, デフォルトで CLOCAL + モードを ON にして, 8 bits の設定をおこない, + XON/XOFF + フロー制御を行うように設定したい場合は, 次のようにします. + + + &prompt.root; stty -f /dev/ttyid5 clocal cs8 ixon ixoff + + このコマンドを記述するのに適しているファイルは, + /etc/rc.serial です. + アプリケーションがttyd5 + をオープンするときに, + デフォルトでこの設定をおこなうようになります. これらの設定は, + 好きなように変更することができます. + + また, “固定状態”のデバイスに調節を行うことで, + ある一定の設定が + アプリケーションに変更されることを防ぐこともできます. 例えば, + ttyd5 のスピードを 57600 bps + に固定したい場合には, 次のようにします. + + &prompt.root; stty -f /dev/ttyld5 57600 + + これで, ttyd5 をオープンして, + シリアルポートの転送スピードを + 変更しようとするアプリケーションは 57600 bps + に固定されるでしょう. + + 本来, デバイスの初期状態を変更したり設定を固定するのは, + root だけが行うべきです. + MAKEDEV + スクリプトがデバイスエントリを作成する時は, + これをおこないません. + + + + シリアル端末 + + 原作: &a.kelly; + 28 July 1996 + + 訳: &a.max; + + シリアル端末を利用することで, + コンピュータのコンソールのそばにいないと きや, + 手近にネットワーク接続されているコンピュータがないときでも, + FreeBSD の機能を便利に, かつ安価に利用することができます. + ここでは, FreeBSD + にシリアル端末を接続する方法を解説します. + + + 端末の種類と利用方法 + + もともと Unix システムにはコンソールがありませんでした. + ユー ザはコンピュータのシリアル + ポートに接続された端末からログインして + プログラムを利用していました. + ちょうどモデムと通信ソフトを使ってリモート + のコンピュータにログインし, テキスト + ベースのプログラムを利用するのと よく似ています. + + 最近の PC は, + 高品質の画像を表示できるコンソールを搭載していま すが, + ほとんどすべての Unix 系 OS には未だにシリアル + ポートを使ってログ インするための機能があり, FreeBSD + でもこの機能がサポートされています. + 現在使用されていないシリアル + ポートに端末を接続することでシステムに ログインし, + 通常はコンソールや Xウィンドウ システムの + xterm のウィ ンドウ上で起動しているテキスト + ベースのプログラムであれば何 + でも利用することができます. + + 職場での利用ということで考えるならば, FreeBSD + が動作しているコンピュー タに接続された何台ものシリアル端末を + 各社員の机に配置するというようなこ とが可能です. また, + 家庭での利用方法としては, 余っている古い IBM PC や Macintosh + を FreeBSD が動いているパワフルなコンピュータの端末として利 + 用することができます. 普通ならシングルユーザのコンピュータを, + パワフ + ルなマルチユーザのシステムに変えることができるのです. + + FreeBSD では, 以下に挙げる3種類の端末が利用できます. + + + + ダム (dumb) 端末 + + + + PCを利用した端末 + + + + X 端末 + + + + 以下は, それぞれについての解説です. + + + ダム端末 + + ダム端末は, シリアルライン経由でのコンピュータとの接続専 + 用のハードウェアです. ダム端末は, + テキストの送受信および表示ができる + 程度の計算能力しかもっていないので, “dumb” + (間抜け) というように呼ば れています. + この端末上でプログラムを実行することはできません. テキスト + エディタ, コンパイラ, E-mail, + ゲームなどなどのプログラムを実行するのは, + ダム端末を接続しているコンピュータの方です. + + Digital Equipment社の VT-100 や, Wyse社の WY-75 + を初めとして, 多くのメーカが何百種類もの + ダム端末を作っています. ほとんどどんな種 類のダム端末でも + FreeBSD に接続して使用できます. さらに, 高性能の端 + 末の中には画像を取り扱えるものもありますが, + 限られた数のソフトウェア + パッケージしかこういった機能には対応していません. + + ダム端末は, X ウィンドウ システムで提供されるようなグラ + フィックアプリケーションを必要としない + 職場で広く用いられています. + + + + PC を端末として利用する + + ダム端末 + がテキストの表示およ + び送受信の機能をそなえただけのものならば, 言うまでもなく, + どんなPC もダム端末になり得ます. + 必要なものは適切なケーブルと, そのPCの上 + で動作する端末エミュレーション + を行うソフトウェアのみです. + + このような環境は, 家庭においてよく利用されます. + たとえば, あなたの同居 人が FreeBSD + のコンソールを専有している時などに, あまりパワーのないコ + ンピュータを FreeBSD システムにシリアル端末として接続し, + その端末上で + テキストだけを用いる作業をおこなうことができます. + + + + X 端末 + + X 端末は, 既存のものの中で最も洗練された種類の端末といえ + ます. X 端末は, たいていの場合シリアル ポートではなく, + イーサネッ + トのようなネットワークを利用した接続をおこないます. また, + アプリケーション の利用においても, + テキストベースのものだけでなく, X アプリケーション + の利用が可能です. + + ここでは, 参考までに 端末について紹介しただけで, X 端 + 末の設定や利用についての解説は + おこないません. + + + + + ケーブルとポート + + シリアル端末を FreeBSD システムに接続するためには, + 適切なケー ブルと, + 端末を接続するためのシリアルポートが必要です. ここでは, これ + らについて説明します. もし既にあなたの利用したい端末と, + その端末 を接続するためのケーブルについてよく理解していれば, + 設定 + の章まで読み飛ばしてください. + + + ケーブル + + 端末の接続は, シリアルポートを利用します. そこで, 端末を + FreeBSD システムに接続するためには, シリアルケーブル + (RS-232C ケーブ ルとも呼ばれています) + が必要となります. + + シリアルケーブルには2種類のケーブルがあります. + どちらの種類の ケーブルを使わなければいけないかは, + どんな端末を接続したいかによります. + + + + もし, PC を端末として利用したい場合は, ヌルモデム ケーブル + (リバースケーブルもしくは + クロスケーブルと呼ばれることもしばしばあります) + を使用してください. ヌルモデムケーブルは, + コンピュータ同士や端末同士を接続するために用い + られるケーブルです. + + + + もし, 本物の端末を接続するのであれば, その端末につい + てきたドキュメントからどのようなケーブルを + 使うべきか調べてください. も しドキュメントがない場合は, + まず ヌルモデム + ケーブルを試してみて, うまくいかない場合は スタンダード ケーブル + (しばしばストレートケーブルと呼 ばれます) + を試してみてください. + + + + また, 端末側と FreeBSD 側の 両方の + シリア ポート の形状が, + あなたが使用しようとしているケーブルについているコネクタの形 + 状と一致していなければなりません. + + + ヌルモデムケーブル + + ヌルモデムケーブル (またはリバースケーブルあるいはクロ + スケーブル) は, たとえば “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 + + + + + + + DCD と RST では, コネクタ内部でピン4を5に接続し, + そして逆側のコネクタのピン8と接続します. + + + + + スタンダード RS-232C ケーブル + + スタンダードシリアルケーブル + (またはストレートケーブル) の場合は, すべての RS-232C + 信号をそのまま通します. つまり, 片方の “send + data” 信号のピンは, 逆側の “send data” + 信号のピンと繋がっています. モデムを FreeBSD + に接続するときや, 一部の端末を接続するときにこのタイプの + ケーブルを使用します. + + + + + ポート + + シリアルポートは, FreeBSDが動作しているホスト + コンピュータと端 + 末の間でデータのやりとりを行うために用いるデバイスです. + ここでは, 現在存在するポートの種類と FreeBSD + でのポートのアクセス方法について解 説します. + + + ポートの種類 + + シリアルポートには何種類かのものがあります. + ケーブルを購 入したり自作したりする前に, + そのケーブルのコネクタの形状が端末および FreeBSD + システムのポートの形状と一致していることを + 確認してください. + + ほとんどの端末は DB25 ポートを搭載しています. + FreeBSDが動作しているも のを含めて, PCは DB25 または DB9 + ポートを搭載しています. マルチポート + のシリアルカードの場合は, RJ-12 や RJ-45 + のポートを搭載しているかもし れません. + + 利用されているポートの種類に関しては, + ハードウェアについてきたドキュメ ントを参照してください. + また, 多くの場合, ポートの形状から判断すること + もできるでしょう. + + + + ポートの名前 + + FreeBSDでは, /dev + ディレクトリ内のエントリを介 + してシリアルポートへのアクセスがおこなわれます. + 2種類の異なったエン トリがあります. + + + + 着信用のポートの名前は, + /dev/ttydx ( + x は 0から始まるポート番号) + となっています. 一般に端末の接続には + 着信用ポートを用います. 着信用のポートでは, + シリアルラインのデータ キャリア検出 (DCD) + 信号がオンになっている必要があります. + + + + 発信用のポートの名前は, + /dev/cuaax + となっています. + 発信用のポートは普通モデムの接続に用い, 端末の接続には + 利用しません. ただ, + ケーブルまたは端末がキャリア検出信号を使えない + タイプのものの場合は, + 発信用のポートを使うとよいでしょう. + + + + 詳しくは, &man.sio.4; + のマニュアルをご覧ください. + + たとえば, 端末を一つ目のシリアルポート (DOS + でいうところの COM1) に接 + 続したとすると, /dev/ttyd0 + がこの端末を指すことになります. また, + 二つ目のシリアルポート (COM2) + ならば /dev/ttyd1 となり, + 以下この形式のデバイスエントリを使います. + + 各シリアルポート, + 特にマルチポートのシリアルカードを利用する ために, kernel + の設定をおこなう必要がある場合がありますので, 注意してくだ + さい. 詳しくは, FreeBSD + カーネルのコンフィグレーション + をご覧ください. + + + + + + 設定 + + ここでは, 端末からのログインを可能にするために必要な + FreeBSD 側の設定について解説します. + 既に端末を接続するポートが利用できるように kernel + の設定をおこない, 端末が接続されているものと考えて, 解説を進め + ます. + + 簡単に言えば, プロセス管理や初期化をおこなっている + init プロセス に対して, + ログイン名を読み込み login + プログラムを起動している getty + を実行するように指示します. + + これをおこなうには, /etc/ttys + の内容を編集する必要があります. まず, su + コマンドで root になって, /etc/ttys + に以下の 変更を加えてください. + + + + 端末を接続するポートの /dev + のエントリが含ま れている行がまだ存在しなければ, これを + /etc/ttys に追加してく ださい. + + + + /usr/libexec/getty + が対象となるポートに対して + 実行されるように指定してください. また, + /etc/gettytab ファイ ル内の適切な + getty + タイプのエントリを指定してください. + + + + デフォルトのターミナルタイプを指定してください. + + + + 対象となるポートを “on” + に設定してください. + + + + そのポートが “secure” + であるかどうかを指定してください. + + + + init に + /etc/ttys を読み込みなおさせてく + ださい. + + + + また, 必要に応じて /etc/gettytab + を変更し, 上の 2で使用する + getty のエントリを追加してください. + このドキュメントではこの方 + 法については特に解説しませんので, &man.gettytab.5; + および &man.getty.8; のマニュアルをご覧ください. + + 以下では, 上のステップについて詳しく解説します. + 実例を用いて, 何をす べきかを解説していきます. Wyse-50 と, + 古い IBM の 286 マシン上で通信 ソフト Procomm を使って VT-100 + エミュレーションをおこなっているものを端 + 末の例として紹介します. また, Wyse は 2番目のポートに, + 286マシンは 6 番目のポート + (マルチポートのシリアルカード上のポート) に接続します. + + /etc/ttys について, + より詳しくは, &man.ttys.5; のマニュアルをご覧 + ください. + + + <filename>/etc/ttys</filename> へのエントリの追加 + + 既にエントリがある場合を除いて, まず初めに + /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 + + + + <replaceable>getty</replaceable> タイプの指定 + + 次に, + 端末からのログインを処理するプログラムの指定をおこな います. + FreeBSDでは, 標準的には + /usr/libexec/getty をこの目的 + で利用しています. login: + プロンプトを送り出しているのは, このプロ グラムです. + + getty プログラムは, + コマンドラインパラメータとして, + getty タイプをとります. ただし, + このパラメータは必須ではあ りません. + getty タイプは, + ボーレートやパリティといった, 接続され + た端末の特徴を表すものです. getty + プログラムは, 与えられた getty + タイプに対応したこれらの特徴を + /etc/gettytab から 読み込みます. + + ファイル /etc/gettytab には, + 新旧の端末に関する多数のエントリ が記述されています. + ほとんどの場合, std + という文字列で始まる名前 のエントリを使えば, + 接続された端末に対してログインセッションを提供す + ることができます. これらのエントリを利用した場合, + パリティは無視されま す. 110 bps から 115200 bps + までのボーレートに対応した std のエン + トリがあります. 当然, + 新たなエントリを追加することも可能です. + &man.gettytab.5; のマニュアルに, + さらに詳しく解説されています. + + /etc/ttysgetty タイプの設定をする際は, + 端末側の通信 パラメータの設定が, 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 のタイプの指定が, + つぎのフィールドとして判断されてしまう可 能性があるので, + 十分注意することが必要です. + + + + デフォルトのターミナルタイプの指定 + + /etc/ttys の 3番目のフィールドには, + そのポートのター ミナルタイプのデフォルトを指定します. + ダイアルアップ用のポートの場合 は, + ユーザがどのタイプの端末あるいは + 通信ソフトを利用してダイアルアップ + してくるかは分からないので, unknown や + dialup を記述するの が一般的です. 一方, + 直結された端末の場合, ターミナルタイプが変わるこ + とはありませんから, + このフィールドには実際のターミナルタイプを記述し + ます. + + 一般に, ユーザは .login や + .profile などのファイル内で + tset コマンドを使って, + ターミナルタイプをチェックし, 必要ならば + ターミナルタイプの入力を求めるプロンプトを + 表示するようにします. この とき, + /etc/ttys + の中でターミナルタイプが指定されていれば, + このプロンプトを表示せずに先に進むことが可能です. + + FreeBSD 上で, どのターミナルタイプを利用できるかは, + /usr/share/misc/termcap をご覧ください. + このファイルには, お + よそ 600 のターミナルタイプが定義されています. + 必要ならば, 新たなエン + トリを追加することも可能です. 詳しくは &man.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 + + + + ポートを利用可能にする + + /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 + + + + ``secure'' なポートの指定 + + とうとう最後のフィールドの設定です. + (実際にはここでは触れ ませんが, + オプショナルなwindow + の設定のフィールドも存在するので, + ほぼ最後のフィールドといった方が正確かもしれません. ) + 最後のフィールド では, + そのポートが安全かどうかを指定します. + + ここで, “安全” + なポートとはどういうポートのことでしょう? + + これは, root のアカウント (または, ユーザ ID が 0 + のアカウント) がロ グインしてもよいポートということです. + 安全でないポートでは, root のロ + グインは許可されません. + + では, どのように安全なポートとそうでない + ポートを使えばよいでしょう? + + ポートを安全ではないとすることで, + そのポートに接続された端末からは, root + のログインを禁止することができます. FreeBSDシステムの root + のパス ワードを知っている人は, + まず一般ユーザとしてログインしなければなりませ ん. + スーパユーザの特権を得るためには, そのうえで + su コマンドを + 利用しなければいけません. + + + これによって, root アカウントが不正に利用された場合に, + その経過を調査 する上で二つの記録を利用できるようになります. + loginsu + コマンドは, 共にシステムのログに記録を残します (また, + ログイン は 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 + + + + <command>init</command> にファイル + <filename>/etc/ttys</filename> の再読み 込みをさせる + + FreeBSD をブートすると, 最初に起動されるプロセス, + init/etc/ttys + を読み込んで, 記述されているプログラムを利用可能な + ポートに対して実行し, + ログインプロンプトを送り出させます. + + /etc/ttys の編集が終わった後, + init に変更を認識させるた めに, わざわざ + FreeBSD をブートしなおしたくはないでしょう. このような + 場合のために, init は, + SIGHUP (hangup) シグナルを受信すると, + /etc/ttys + を読み込みなおすようになっています. + + /etc/ttys の変更を保存したら, + 以下のようなコマンドを実行して, init + に対して SIGHUP を送信します. + + &prompt.root; kill -HUP 1 + + (init プロセスのプロセス ID は + 常に 1です. ) + + すべての設定が正しくおこなわれ, + すべてのケーブルがただしく接続されてい て, + かつ端末の電源が入っていれば, + 端末にはログインプロンプトが表示され ているはずです. これで, + これらの端末からの最初のログインの準備が完了で す! + + + + + トラブルシューティング + + 細心の注意を払って設定をおこなっても, + ときには端末の接続がう まくいかない場合があるでしょう. 以下に, + よく見られる問題とその解決方法 を示します. + + + ログインプロンプトが表示されない + + 端末の電源が接続され, + スイッチが入っていることを確認してください. もし, PC + を端末として利用している場合は, + 通信ソフトが適切なシリアルポー + トを利用する設定になっているかどうか確かめてください. + + + ケーブルがしっかりと端末と + FreeBSDが動作しているコンピュータの両方に接続され + ていることを確認してください. また, + 正しい種類のケーブルを利用している + か確かめてください. + + 端末と FreeBSD + の間の通信速度とパリティの設定が一致していることを確認 + してください. + 出力をモニタに表示するタイプの端末の場合は, モニタ + のコントラストと明るさの設定を確認してください. また, + 出力が印刷 されるタイプの端末の場合は, + 紙とインクが十分にあるかどうかを確かめてく + ださい. + + getty が動いていて, + 端末を認識していることを確認してください. 以 + 下のコマンドで動作中の getty + プロセスのリストを得ることができます. + + &prompt.root; 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)”に変更してく ださい. + + + + + + + + ダイアルインサービス + + 原作: &a.ghelmer;. + + 訳: &a.max;. + 6 September 1996. + + このドキュメントでは, FreeBSD + で外部からのモデムによるアクセスを受け付 + けるための設定に関してまとめてあります. このドキュメントは筆者が + FreeBSD 1.0, 1.1 および 1.1.5.1 での経験と, 他の UNIX 系 OS + での経験を 基に書いたものですが, + 必ずしも十分な内容でないかもしれませんし, 掲載し + た実例もあなたが今お使いの環境とは一致しないかもしれません. + また, 筆者 はこのドキュメントに従って行われた作業で + データが失われたりシステムが破 壊されるようなことがあっても, + 一切責任をとれません. + + + 設定を始める前に + + 筆者は, 読者が FreeBSD + に関する基本的な知識をもっていることを仮定して + このドキュメントをまとめました. まず, FreeBSD + が既にインストールされ ていて, UNIX + 系環境においてファイルの編集の方法やシステムに付属のマニュ + アルを参照する方法を知っている必要があります. また, + 以下に示すように, FreeBSD + の特定のバージョンが必要となりますし, いくつかの用語に関する + 知識, + そしてモデムや多少の配線に関する知識も必要となります. + + + FreeBSD のバージョン + + まず, FreeBSD のバージョンは 1.1 以上を使用してください + (バージョン 2.x でもかまいません. ). FreeBSD 1.0 には, + 2種類のシリアル ドライバ が含まれているので, + 混乱の元となり得ます. また, FreeBSD のシリアル ディバイス + ドライバ (sio) は, + バージョンを追う毎に改善されてき ていますので, + より新しいバージョンの FreeBSD を使用することで, よりよ い, + より効率の高いドライバを利用することができるはずです. + + + + 用語解説 + + 以下, 簡単にいくつかの用語について解説しておきます. + + + 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 + という単位の方が実体に即しているか らです. (少なくとも, + こういう表現をしておけば, 意地の悪い人に怒られる + こともないのではないかと思います. ) + + + + 外づけモデムと内蔵モデムについて + + ダイアルアップのサービスに関していえば, + 外づけのモデムの方が適している ようです. これは, + 多くの外づけのモデムは設定を不揮発ラムに書き込んで半 + 永久的に保存することができますし, また RS-232 + に関する重要な情報を知る + ための点滅するライトによるインディケータが + 搭載されているからです. 点滅 するライトは, + システムを見に来た訪問者に強い印象を与えるという効果だけ + でなく, モデムが適切に動作しているかどうかを知るためにも + 有効です. + + 一方, たいていの内蔵型のモデムには + 不揮発性ラムが搭載されていないため, ディップ + スイッチの変更以外に設定を保存する方法がありません. また, も + しインディケータがついていても, おそらくコンピュータのケース + カバーが 外されていなければその状態を確認するのは + 難しいでしょう. + + + + モデムとケーブル + + 以下のことに関して, 予め知っておく必要があります. + + + + コンピュータとモデムの間での通信が + 行えるようにするための接続方 法. + (内蔵型の場合は接続の必要はありません) + + + + お使いのモデムのコマンドについての知識, + あるいはコマンドの解説 の在処 + + + + (通信ソフトを使っての) + モデムの不揮発ラムに保存可能な設定の変更 方法 + + + + 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 + への接続に慣 れている方にとっては, + ちょっとめんどうかもしれませんね. + + + + シリアル インタフェースについて + + FreeBSD では, NS8250-, NS16450-, NS16550- および + NS16550A- に基づ いた EIA RS-232C (CCITT V.24) + 規格のシリアル インタフェースをサポート しています. 8250 + および 16450 ベースのディバイスには1文字のキャラクタ + バッファが搭載されています. また, 16550 系のディバイスには, + 16文字分 のバッファが搭載されていて, + はるかによいパフォーマンスを得られます. (ただし, 無印の + 16550 では, バグがあって 16 文字バッファが利用できませ + んので, 可能であれば 16550A + 系のディバイスを利用してください. ) 1文字 のバッファの物は, + 16550 系のものと比べて OS にかける負荷が大きいので, 16550A + 系ディバイスの利用を強く推奨します. 多数のシリアル + ポートを利 用する場合や, 負荷の高いシステムにおいては, + 16550A 系ディバイスを使う ことで, + エラー発生率を低く押さえることができます. + + + + + 概要 + + 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 を起動して, + パスワードの入力を要求し, その + 後ユーザのシェルを起動します. + + それでは, 続いて設定についての解説です. + + + + kernel の設定 + + 通常, FreeBSD の kernel は, PC-DOS の世界で + COM1:, COM2: + , COM3: および + COM4: と呼ばれる四つのシリアル ポートを + 探す + ように設定されています. また, FreeBSD では, 現在のところ + Boca の 1008 + や 2016 のような, 単純なマルチポートのシリアル + インタフェースもサポー + トしています. (マルチポートのシリアル ボードに関しての + kernel の設定 + については, &man.sio.4; のマニュアルを参照してください. ) + デフォルト + の kernel は, COM ポートだけを探します. + + 搭載されているシリアル ポートのいずれかを, kernel + が認識しているかどう か確認したい場合は, kernel + 起動時のメッセージを注意深く見ているか, あ るいは + /sbin/dmesg コマンドを使って, + ブート時の出力メッセージ を確認してください. 特に, + sio で始まるメッセージをよく見てくださ い. + 参考までに, 以下のコマンドで sio + という文字列を含むメッセージ + だけを表示することができます. + + &prompt.root; /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/confcd + して作成してくださ い. 初めてコンフィギュレーション + ファイルを作る場合は, まず 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 のようなマルチポートの + シリアル ボードをお持ちの場合は, &man.sio.4; + のマニュアルを見て, マ + ルチポートのボードのためのコンフィギュレーション + ファイルの記述のし方 + に関して確認してください. ディバイスのフラグの + 指定方法がバージョンによっ + て異なりますので, 別のバージョンの FreeBSD + で利用していたコンフィギュ + レーション ファイルを流用する場合には + 十分注意してください. + + + なお, 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 の構築)” および + &man.config.8; のマニュアルにしたがって, + config コマンド を使って kernel + 構築のためのディレクトリを作成した後, kernel の構築, + インストールおよびテストを行ってください. + + + + ディバイス スペシャル ファイル + + kernel に組み込まれているほとんどのディバイスは, + /dev ディレ クトリにある, + “ディバイス スペシャル + ファイル”を介してアクセスされ ます. + sio ディバイスの場合は, 着信用の + /dev/ttyd? + およ び, 発信用の + /dev/cua0? + が利用されます. さらに, FreeBSD の 1.1.5 以降では, + 初期化ディバイス + (/dev/ttyi? と + /dev/cuai0?) + およびロッキング ディバイス + (/dev/ttyld? + と + /dev/cual0?) + も合わせて利用されます. 初期化ディバイスは, 通信 + ポートがオープンされる度に, + そのポートの初期設定を行うために使われます. たとえば, + CTS/RTS + によるフロー制御を行うモデムが接続されてい る場合の + crtscts + などのパラメータの初期化が行われます. ロッキング + ディバイスは, ポートの設定をロックし, + 他のユーザやプログラムにこれらを + 変更されることのないようにするために利用されます. + 通信ポートの設定, 初 期化とロックおよび設定の変更に関しては, + それぞれ &man.termios.4;, &man.sio.4; と &man.stty.1; + のマニュアルをご覧ください. + + + ディバイス スペシャル ファイルの作成 + + ディバイス スペシャル ファイルの管理は, ディレクトリ + /dev + にあるシェル スクリプト MAKEDEV + によって行います. (FreeBSD + 1.1.5 の &man.MAKEDEV.8; のマニュアルの COM + ポートに関する記述は, + かなりいい加減なので無視してください. ) + MAKEDEV を使って, + COM1: (ポート 0) + をダイアルアップのポートとして利用するためのディ + バイス スペシャル ファイルを作るには, + /devcd して + から, MAKEDEV ttyd0 と実行してください. + 同様に, MAKEDEV + ttyd1 とすることで, COM2: + (ポート 1) 用のディバイス スペシャル ファイル + を作成することができます. + + MAKEDEV は, + /dev/ttyd? + のディバイス ファイルだけでなく, + /dev/cua0? + (および FreeBSD 1.1.5 以降では総ての初期化ディバイ + スとロッキング ディバイスのスペシャル ファイル) + も作成します. さらに, もしシリアル端末用のスペシャル + ファイル + /dev/tty0? + が存在すれ ば, それらの削除も行います. + + ディバイス スペシャル ファイルの作成後, + これらのファイルのパーミション が適切に設定されていて, + これらのディバイスを利用してもよいユーザのみが + 読み書きできるようになっていることを確認してください. (特に + /dev/cua* + のパーミションには注意を払ってください. ) この確認 を怠ると, + 一般のユーザがあなたのモデムを使うことができるようなことにな + りかねません. デフォルトの /dev/cua* + のパーミションは, 以下の ようになっていて, + たいていの場合適切なものだと思います. + + crw-rw---- 1 uucp dialer 28, 129 Feb 15 14:38 /dev/cua01 +crw-rw---- 1 uucp dialer 28, 161 Feb 15 14:38 /dev/cuai01 +crw-rw---- 1 uucp dialer 28, 193 Feb 15 14:38 /dev/cual01 + + 上の設定では, ユーザ uucp と, + グループ dialer に属するユーザ + が発信用のディバイスを利用できます. + + + + + 設定ファイル + + 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 + インタフェースの速度が変化するような + 設定の方に偏った説明になってしまうと思います. + + + <filename>/etc/gettytab</filename> + + /etc/gettytab は, &man.getty.8; + の設定ファイルで, &man.termcap.5; + と同様の形式で記述されます. ファイルのフォーマットや定 + 義できる機能についての詳細については, &man.gettytab.5; + のマニュアルを + ご覧ください. + + + 固定速度の設定 + + モデムとコンピュータ間の通信速度を固定して使う場合, + おそらく /etc/gettytab + に特に変更を加える必要はないはずです. + + + + 可変速度の設定 + + 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” + エラーが発生するかもしれません. + + + + + <filename>/etc/ttys</filename> + + /etc/ttys には, + init が監視すべき tty + のリストを記 + 述します. さらに, /etc/ttys は, + login に対してセキュリ + ティに関する情報を提供します. (ユーザ + root は, secure とマー + クされている tty + のみからログインできます. ) 詳しくは + &man.ttys.5; のマニュアルをご覧ください. + + + /etc/ttys の既存の行を変更するか, + あるいは新しい行を追加して, init + が自動的に新しいダイアル アップ サービス用のポートに対して + getty + プロセスを起動するようにしてください. 書式は, 固定速度の設 + 定か可変速度の設定かに関わらず, 以下のとおりです. + + +ttyd0 "/usr/libexec/getty xxx" dialup on + + 1番目の項目は, このエントリで対象とするディバイス + スペシャル ファイル です. 上の例では + ttyd0 として, + /dev/ttyd0getty + に監視させることを表しています. 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 を + 読み込み直させてください. + + &prompt.root; kill -1 1 + + ただ, もし初めてシステムを設定しているのであれば, + モデムが適切に設定さ + れて接続されるまでは, init + に対してシグナルを送らない方がいいか + もしれません. + + + 固定速度の設定 + + 速度を固定する設定では, /etc/ttys + の中で, getty に対し + て固定速度のエントリを指定する必要があります. たとえば, + 以下の例はポー トのスピードが 19.2 Kbps + に固定されたモデムのための ttys + のエント リです. + + +ttyd0 "/usr/libexec/getty std.19200" dialup on + + 別の速度でモデムのポートのスピードを固定したい場合は, + /etc/gettytab + から適切なエントリを選んで, 上の例の + std.19200 の部分を + std.speed + として, 適切な速度のも のに置き換えてください. + + + + 可変速度の設定 + + 可変速度の設定では, ttys + のエントリが, /etc/gettytab + の中の適切な “自動速度調整” + の初期設定のエントリを参照していなければな りません. + たとえば, もし前述の 19.2 Kbps + から接続を試みる可変速度の設 定例 + (V19200 の + gettytab エントリ)をそのまま + ttys に追 加したのであれば, + ttys + エントリは以下のようになります. + + +ttyd0 "/usr/libexec/getty V19200" dialup on + + + + + <filename>/etc/rc.serial</filename> または + <filename>/etc/rc.local</filename> + + 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 には初期化のためのディバイス スペシャル + ファイルがないので, ディバイス + ファイルそのものにフラグを設定して, その後はフラグをクリア + してしまうような極悪人が現れないことを願うしかありません. + + + + + + モデムの設定 + + もし, あなたのモデムがパラメータを不揮発ラムに + 保存できるタイプならば, PC-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 + の間で延々と無意味なやりとりが続いたというケースを聞いたこ + とがあります. + + + 固定速度の設定 + + 固定速度の設定では, + モデムとコンピュータ間の通信速度をモデムとモデム間 + の接続速度に関係なく, 常に一定に保つように, + モデムを設定する必要があり ます. USRobotics Sportster の + 14,400 bps 外づけモデムの場合, 以下のコ マンドで, + モデムとコンピュータ間の速度が, コマンド送信時の速度に固定さ + れます. + + +ATZ +AT&B1&W + + + + 可変速度の設定 + + 可変速度の設定では, シリアル ポートの速度が, + 着信速度に応じて変化する ように設定しなければいけません. + USRobotics Sporster の 14,400 bps 外 づけモデムの場合, + 以下のコマンドで, エラー訂正機能を利用した通信の場合 は, + コマンドを送信した時の通信速度にシリアル + ポートの速度を固定し, エ ラー訂正機能を利用しない接続では, + シリアル ポートの速度が変化するよう に設定されます. + + +ATZ +AT&B2&W + + + + モデムの設定の確認 + + ほとんどの高速モデムには, + 現在の設定をある程度人間にも理解できる形式に + して表示させるコマンドがあります. USRobotics Sporster の + 14,400 bps 外づけモデムの場合は, ATI5 + コマンドで, 現在の不揮発ラムの設定を 表示することができます. + さらに, ディップ スイッチの設定も含めた現在の + 設定を確認するためには, ATZ + コマンドを送信してから, ATI4 + コマンドを送信してください. + + 他のメーカーのモデムをお使いの場合は, + モデムのマニュアルで設定値の確認 + 方法を確認してください. + + + + + トラブルシューティング + + 以下の手順でダイアル アップ + モデムの動作を確認することができます. + + + 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? を確認し, + 記述に誤りがないか, 足りないエ ントリがないか, + 足りないディバイス スペシャルファイルがないかといった + 点について調べてみてください. + + + + モデムで接続してみる + + 実際にモデムを使って別のコンピュータから + 接続してみてください. この時, 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 がオンになっているか + を確認してください. + + この確認のステップを数回繰り返しても + うまくいかない場合は, 一度休憩して, + しばらくたってから挑戦してみましょう. それでもだめなら, + おそらく &a.questions; + にあなたのモデムについての情報と問題を書いたメールを送れ ば, + メーリング + リストのメンバーが問題の解決を助けるべく努力してくれる + でしょう. + + + + + 謝辞 + + 以下の方々から, + 多くのコメントやアドバイスをいただきました. ここに謝意 + を表します. + + + Sean Kelly + + <kelly@fsl.noaa.gov> 多くのすばらしい助言をいた + だきました + + + + + + + + ダイアルアウトサービス + + 原作: FAQ からの情報 + + 訳: &a.jp.tmaruya;. + 31 December 1996. + + 以下はモデムを利用して他のコンピュータと + 接続する方法を説明しています. + これはリモートホストとターミナル接続を確立するための + 適切な方法です. + + これは BBS に接続するときによく使います. + + この種の接続は PPP 接続に問題がある場合, Internet + 上にあるファイルを 転送するのに非常に役に立ちます. FTP + で何らかのファイルを転送したいのに PPP + 接続を確立できない場合は, ファイルを FTP + 転送するためにターミナルセッション を利用します. そして ZMODEM + を利用してファイルを転送します. + + + <command>tip</command> や <command>cu</command> + が実行できないはなぜ? + + あなたのシステムで tip や + cu というプログラムは + uucpdialer + というグループに所属しているユーザのみが + 実行できるようになっているのでしょう. リモートホストやモデムを + 利用できる dialer + のグループにあなたのアカウントを 加えましょう. + + もしくは下記のコマンドを使うことによって, そのシステムで + tipcu + を誰でも使えるようになります: + + &prompt.root; chmod 4511 /usr/bin/tip + + このコマンドは cu + に対しておこなう必要はありません, それは + cutip + に対するハードリンクだからです. + + + + 私の 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 + を実行します. これでうまく動作するでしょう. + + + + これらの AT コマンドを入力するには? + + /etc/remote ファイルの中で + “direct” エントリを作ります. たとえばモデムが + 1番目のシリアルポートである /dev/cuaa0 + に接続されている場合, 次のようにします: + + +cuaa0:dv=/dev/cuaa0:br#19200:pa=none + + モデムがサポートする最大の bps レートを br + フィールドに使います. そして tip cuaa0 + を実行すると, モデムが利用できるようになります. + + /dev/cuaa0 + がシステムに存在しない場合は, 次のようにします: + + &prompt.root; cd /dev +&prompt.root; ./MAKEDEV cuaa0 + + または root になって以下のように cu + コマンドを実行します: + + &prompt.root; cu -lline -sspeed + + line + にはシリアルポートを指定します (例えば + /dev/cuaa0). そして + speed には接続する速度を指定します + (例えば 57600). その後 AT + コマンドを実行したら, ~. + と入力すれば終了します. + + + + pn 機能の <literal>@</literal> 記号が使えません! + + 電話番号 (pn) 機能の中での @ 記号は, + tip に /etc/phone + にある電話番号を参照するように伝えます. しかし + @ の文字は /etc/remote + のような 設定ファイルの中では特殊文字となります. + バックスラッシュを使ってエスケープをおこないます: + + +pn=\@ + + + + コマンドラインから電話番号を指定するには? + + “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: + + そして + + &prompt.root; 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: + + そして + + &prompt.root; cu 5551234 -s 115200 + + と実行します. + + + + 毎回 bps レートを入力しなければいけませんか? + + tip1200cu1200 + 用のエントリを記述し, 適切な通信速度を br + フィールドに設定します. tip は 1200 bps + が正しいデフォルト値であるとみなすので, + tip1200 エントリを参照します. もちろん 1200 + bps を使わなければならないわけではありません. + + + + ターミナルサーバを経由して + 複数のホストへアクセスしたいんです. + + 毎回接続されるのを待って + 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/cua02:br#38400:at=hayes:du:pa=none:pn=5551234: + + これで, tip pain や + tip muffin と実行すると + pain や muffin のホストに接続することができ, + tip deep13 + を実行するとターミナルサーバに接続します. + + + + 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 + ループに入れて 実行します. + + + + 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> + + + + 打ち込んだ文字が突然すべて大文字になりました?? + + CTRL+A を押してしまい, caps-lock + キーが壊れている場合のために設計された tip + の “raise character” モードに入ったのでしょう. + 既に述べたように ~s を使って, + raisechar をより適切な値に + 変更してください. もしこれら両方の機能を使用しないのであれば, + force 文字と同じ設定にすることもできます. + + + 以下は CTRL+2 や CTRL+A などを頻繁に使う必要のある Emacs + ユーザにうってつけの. tiprc ファイルのサンプルです: + + +force=^^ +raisechar=^^ + + ^^ は SHIFT+CTRL+6 です. + + + + <command>tip</command> でファイルを転送するには? + + もし他の UNIX のシステムと接続しているなら, + ~p(put) や ~t(take) + でファイルの送受信ができます. これらのコマンドは + 相手のシステムの上で cat や + echo を実行することで 送受信をします. + 書式は以下のようになります: + + + ~p + ローカルのファイル名 + リモートのファイル名 + + + ~t + リモートのファイル名 + ローカルのファイル名 + + + この方法ではエラーチェックをおこないませんので, zmodem + などの他のプロトコルを使った方がよいでしょう. + + + + <command>tip</command> から zmodem を実行するには? + + ファイルを受信するには, + リモート側で送信プログラムを起動します. そして ~C + rz と入力すると, ローカル側へのファイルの受信が + 始まります. + + ファイルを送信するには, + リモート側で受信プログラムを起動します. そして ~C sz + files と入力すると, + リモート側への ファイルの送信が始まります. + + + + + diff --git a/ja/handbook/staff/chapter.sgml b/ja/handbook/staff/chapter.sgml new file mode 100644 index 0000000000..deb736ebc7 --- /dev/null +++ b/ja/handbook/staff/chapter.sgml @@ -0,0 +1,782 @@ + + + + FreeBSDプロジェクトスタッフ + + 訳: &a.hanai;28 August 1996. + + FreeBSDプロジェクトは, + 以下の人々によって管理運営されています. + + + FreeBSD コアチーム + + FreeBSD コアチームは, + プロジェクトの “運用委員会” を形成し, FreeBSD + プロジェクトの全般的な目的や方針の決定を行います. さらに, + FreeBSDプロジェクトの 特定の分野の + 運用も行っています. + + (姓でアルファベット順): + + + + &a.asami; + + + + &a.jmb; + + + + &a.ache; + + + + &a.bde; + + + + &a.gibbs; + + + + &a.dg; + + + + &a.jkh; + + + + &a.phk; + + + + &a.rich; + + + + &a.gpalmer; + + + + &a.jdp; + + + + &a.sos; + + + + &a.peter; + + + + &a.wollman; + + + + &a.joerg; + + + + + + FreeBSD の開発者たち + + (CVSの)commitする権利を持っていて, FreeBSD + のソースツリーについて 作業をおこなっている人々がいます. + すべてのコアチームのメンバはま た 開発者でもあります. + + + + &a.ugen; + + + + &a.mbarkah; + + + + &a.stb; + + + + &a.pb; + + + + &a.abial; + + + + &a.jb; + + + + &a.torstenb; + + + + &a.dburr; + + + + &a.charnier; + + + + &a.luoqi; + + + + &a.ejc; + + + + &a.kjc; + + + + &a.gclarkii; + + + + &a.archie + + + + &a.cracauer; + + + + &a.adam; + + + + &a.dillon; + + + + &a.dufault; + + + + &a.uhclem; + + + + &a.tegge; + + + + &a.eivind; + + + + &a.julian; + + + + &a.rse; + + + + &a.se; + + + + &a.sef; + + + + &a.fenner; + + + + &a.jfieber; + + + + &a.jfitz; + + + + &a.scrappy; + + + + &a.lars; + + + + &a.dirk; + + + + &a.shige; + + + + &a.billf; + + + + &a.tg; + + + + &a.gallatin; + + + + &a.brandon; + + + + &a.graichen; + + + + &a.jgreco; + + + + &a.rgrimes; + + + + &a.jmg; + + + + &a.hanai; + + + + &a.thepish; + + + + &a.jhay; + + + + &a.helbig; + + + + &a.ghelmer; + + + + &a.erich; + + + + &a.nhibma; + + + + &a.flathill; + + + + &a.foxfair; + + + + &a.hosokawa; + + + + &a.hsu; + + + + &a.mph; + + + + &a.itojun; + + + + &a.mjacob; + + + + &a.gj; + + + + &a.nsj; + + + + &a.kato; + + + + &a.andreas; + + + + &a.motoyuki; + + + + &a.jkoshy; + + + + &a.kuriyama; + + + + &a.grog; + + + + &a.jlemon; + + + + &a.truckman; + + + + &a.imp; + + + + &a.smace; + + + + &a.mckay; + + + + &a.mckusick; + + + + &a.ken; + + + + &a.hm; + + + + &a.tedm; + + + + &a.amurai; + + + + &a.markm; + + + + &a.max; + + + + &a.alex; + + + + &a.newton; + + + + &a.rnordier; + + + + &a.davidn; + + + + &a.obrien; + + + + &a.danny; + + + + &a.ljo; + + + + &a.fsmp; + + + + &a.smpatel; + + + + &a.wpaul; + + + + &a.jmacd; + + + + &a.wes; + + + + &a.steve; + + + + &a.mpp; + + + + &a.dfr; + + + + &a.jraynard; + + + + &a.darrenr; + + + + &a.csgr; + + + + &a.martin; + + + + &a.paul; + + + + &a.roberto; + + + + &a.chuckr; + + + + &a.guido; + + + + &a.dima; + + + + &a.sada; + + + + &a.wosch; + + + + &a.ats; + + + + &a.jseger; + + + + &a.simokawa; + + + + &a.vanilla; + + + + &a.msmith; + + + + &a.des; + + + + &a.brian; + + + + &a.mks; + + + + &a.stark; + + + + &a.karl; + + + + &a.dt; + + + + &a.cwt; + + + + &a.pst; + + + + &a.hoek; + + + + &a.nectar; + + + + &a.swallace; + + + + &a.dwhite; + + + + &a.nate; + + + + &a.yokota; + + + + &a.jmz; + + + + + + FreeBSD ドキュメンテーションプロジェクト + + FreeBSD + ドキュメンテーションプロジェクトは複数のサービスを提供 + しています. それぞれのサービスは, 以下の担当者とその + 副担当者によって運用されています. + + + ドキュメンテーションプロジェクト担当 + + &a.nik; + + + + Web 管理責任者 + + &a.wosch; + + + + ハンドブックおよび FAQ 編集担当 + + &a.faq; + + + + ニュースフラッシュ編集担当 + + &a.nsj; + 副担当:&a.john; + + + + FreeBSD Really-Quick NewsLetter編集担当 + + Chris Coleman chrisc@vmunix.com + + + + ギャラリーページ担当 + + &a.nsj; + 副担当&a.cawimm; + + + + 商用ベンダーページ担当 + + &a.mbarkah; + + + + WEB 更新担当 + + &a.mbarkah; + + + + デザインやアートディレクション担当 + + &a.opsys; + + + + データベース技術担当 + + &a.mayo; + + + + CGI 技術担当 + + &a.stb; + + + + 雑務担当 + + &a.nsj; + + + + LinuxDoc から DocBook への移行 + + &a.nik; + + + + + + + 担当者 + + + 最高技術責任者 + + &a.dg; + + + + + ドキュメンテーションプロジェクト担当 + + &a.nik; + + + + 国際化 + + &a.ache; + + + + ネットワーク + + &a.wollman; + + + + + ポストマスタ + + &a.jmb; + + + + リリースコーディネータ + + &a.jkh; + + + + 広報および渉外担当 + + &a.jkh; + + + + + セキュリティ担当 + + &a.imp; + + + + + CVS ツリー管理者 + + 責任者: &a.peter; + 副責任者: &a.jdp; + 国際版 (暗号) 担当: &a.markm; + + + + + ports コレクション担当 + + &a.asami; + + + + XFree86 Project, Inc. との渉外担当 + + &a.rich; + + + + + Usenet サポート + + &a.joerg; + + + + + GNATS 管理者 + + &a.phk; と &a.steve; + + + + Web 管理者 + + &a.wosch; + + + + + + + diff --git a/ja/handbook/x11/chapter.sgml b/ja/handbook/x11/chapter.sgml new file mode 100644 index 0000000000..61241e1b37 --- /dev/null +++ b/ja/handbook/x11/chapter.sgml @@ -0,0 +1,26 @@ + + + + X ウィンドウシステム + + この節の完成は保留にしてあります. + The XFree86 Project, Inc + から提供されるドキュメントを参考にしてください. + + + diff --git a/ja_JP.eucJP/articles/contributing/article.sgml b/ja_JP.eucJP/articles/contributing/article.sgml new file mode 100644 index 0000000000..0a08cafdd0 --- /dev/null +++ b/ja_JP.eucJP/articles/contributing/article.sgml @@ -0,0 +1,10027 @@ + + + + FreeBSD への貢献 + + 原作: &a.jkh;. + + 訳: &a.jp.iwasaki;. + 27 April 1997. + + あなたも何か FreeBSD のために貢献したくなりましたか? + 素晴らしい! 私たちは常に支援を受ける用意がありますし, FreeBSD + は生き残るためにユー + ザベースの貢献に頼るようなシステムの一つです. + あなたの貢献は 感謝されるだけではなく, FreeBSD + が成長し続けるために極めて重要なものな のです! + + 一部の人達が言っているのとは逆に, + 貢献を受け付けてもらうために腕利 きのプログラマーになるとか + FreeBSD コアチームの人と親友になる必要はあ りません. FreeBSD + プロジェクトの開発は, 多くのそして益々増加する世界中 + の貢献者達によってなされており, 彼らの年齢, + 専門技術分野は多岐に渡りま す. + そして手の空いている人よりも + 成されるべき仕事の方が常に多いのです. + + FreeBSD + プロジェクトがカーネルや散在しているユーティリティよりも, + オペレーティングシステム環境 (と, そのインストール) + に対して責任を持つ ようになったため, + 私たちのTODOリストはドキュメンテーション, + ベータテ スト, + 高度に専門化されたタイプのカーネル開発の好例を紹介するなど非常に + 広い範囲のタスクに渡ります. あなたの技能レベルに関わらず, + プロジェクト を支援できることが必ず何かあります! + + FreeBSD + 関連の事業に従事している商業団体が私たちにコンタクトすること + も歓迎します. あなたの製品を (FreeBSD 上で) 動作させるには, + 特別な拡張 が必要ではありませんか? + あまりにも風変わりな要求でなければ, それを受け + 入れる用意が私たちにあるとわかるはずです. + 付加価値のある製品ですか? 私たちに知らせてください! 多分私たちは, + ある 面において共同して作業をすることができるでしょう. + フリーソフトウェア界 は, + ソフトウェアがそのライフサイクルを通してどのように開発され, + 売られ, 保守されていくかについて, 既存の仮説に挑戦しています. + 少なくとももう一 + 度考慮してみることを私たちは強くお奨めします. + + + 何が必要? + + 次のタスクとサブプロジェクトのリストは, コアチームの色々な + TODO リ + ストと最近2ヶ月で集めたユーザリクエストを合わせたものです. + 可能なとこ ろでは, 緊急度によってタスクがランクづけされています. + もしここにあるタ スクの実行に興味があるのでしたら, + コーディネータの名前をクリックしてメー ルを送ってください. + もしコーディネータが決まっていなければ, あなたがボ + ランティアしてみませんか? + + + 優先度の高いタスク + + 次のタスクは通常, ひどく壊れているとか, + とても必要とされている何かを 表しているため, + 急務と考えられています: + + + + 第3ステージ・ブート問題. 全体コーディネーション: + &a.hackers; + + + + 第3ステージがディスクの BIOS + ジオメトリの正確なマッピングを提供 できるように WinNT + コンパチブルなドライブの追跡をおこなう. + + + + + + ファイルシステム問題. 全体コーディネーション: + &a.fs; + + + + nullfs ファイルシステムコードのクリーンアップと + ドキュメンテーション. コーディネータ: &a.gibbs; + + + + union ファイルシステムの修正. コーディネータ: + &a.dg; + + + + + + カーネル vm86 及びユーザ vm86 サポート実装. + コーディネータ: &a.jlemon; + + + + Int13 vm86 ディスクドライバの実装. コーディネータ: + &a.hackers; + + + + カーネル問題. 全体コーディネーション: + &a.hackers; + + + + すべての現存ドライバの eisaconf 変換の達成. + + + + すべての割り込みルーチンを + ユニット番号を使う代わりに (void *) を + 取るように変更. + + + + EISA/PCI/ISAの割り込み登録コードの統合. + + + + PCI/EISA/ISA デバイス検出を bt742a.c(WIP) + のようなドライバから分割. + + + + syscons の ALT-Fn/vt 切替えによるハングの修正. + コーディネータ: &a.sos; + + + + 3c509と3c590 ドライバの統合 (本質的には PCI + デバイス検出の ep.c への提供). + + + + + + + + 優先度がさほど高くないタスク + + 次のタスクはやっておくべきではありますが, + 特にさし迫っているわけで はありません: + + + + MCA サポート? + これは続けるにしても止めてしまうにしても結論を出 + すべき. + + + + 完全な KLD ベースのドライバのサポート / + コンフィグレーションマネー ジャ. + + + + ld なしですべての LKM + の登録をおこなう方法を考案する. これは + カーネル中にある種のシンボルテーブルを + 持たせることを意味します. + + + + 穏やかな方法でハードウェアを検知する + コンフィグレーションマネージャ の作成 + (第3ステージ・ブートの中に?). ハードウェアが必要とする + KLD だけを 残す等. + + + + + + PCMCIA/PCCARD. コーディネータ: &a.msmith; と &a.phk; + + + + ドキュメンテーション! + + + + pcic ドライバの信頼性のある操作 (テスト要). + + + + sio.c + のリコグナイザとハンドラ (ほぼ完了). + + + + ed.c のリコグナイザとハンドラ + (ほぼ完了). + + + + ep.c のリコグナイザとハンドラ + (ほぼ完了). + + + + User-mode のリコグナイザとハンドラ + (部分的に完了). + + + + + + 先進的なパワーマネージメント. コーディネータ: &a.nate; + と &a.phk; + + + + APM サブドライバ (ほぼ完了). + + + + IDE/ATA ディスクサブドライバ (部分的に完了). + + + + syscons/pcvt サブドライバ. + + + + PCMCIA/PCCARD ドライバ群との統合 (サスペンド / + レジューム). + + + + + + + + 優先度の低いタスク + + 次のタスクは全くのあら隠し, + または誰もすぐにおこないそうもない投資 + のような仕事を表します: + + 最初の20項目は Terry Lambert + terry@lambert.org からのもので す. + + + + プロセッサ上で V86 モードを使用して, + プロテクトモードからの BIOS コールができるようにし, + マップされた割り込み IPC 機構を経由してプロテ + クトモードの呼出し元に結果を返すようにする. + + + + DOS と同じように, + 実際の下位ハードウェアから独立になるよう, BIOS + コール機構を使用したカーネルの中に組み込まれたドライバ. + これは DOS ベー スのローダプログラムで BSD + がロードされる前に DOS にロードされていたネッ + トワークドライバや ASPI ドライバも含みます. + このことは潜在的なポーリン グ, + つまりプロテクトモードカーネルによる V86 マシンのための + DOS-not-busy 割り込みの生成を意味します. + + + + ハードウェア固有のプロテクトモードの + ドライバがロードされて活性化 された後で, + デフォルトのカーネル実行形式の中の, そのようなドライバデー + タとテキストエリアを追跡して, + カーネルアドレス空間のその部分が回復され + るようにするためのイメージ形式. これは個々の BIOS + ベースのドライバを互いに分離することを含みます. なぜ + なら全く実行しないよりも, すべてのケースにおいて BIOS + ベースのドライバ と共に実行した方が良いためです. + + + + バスインタフェース機構の抽象化. 現在のところ, PCMCIA, + EISA そし て PCI バスはブリッジで ISA + バスに接続されていると仮定しています. こう + いった仮定はおこなうべきではありません. + + + + パワーマネージメントイベント, カードの挿入, 取り出し, + そしてバス (PNPISA と PCMCIA とのブリッジチップ) + 対カードのレベルのイベント管理を 含む PNP + イベントを解釈するコンフィグレーションマネージャ. + + + + 固定デバイスによる他の再割当可・不可の + デバイス空間リソースの使用 と衝突しない, + 再割当可能なアドレスの割り当てのためのトポロジカルソート + 機構. + + + + ハードウェアサービス登録のための登録ベースの機構. + 特にタイマ, サウンドおよび他の + システムクリティカルなサービス供給源のためのデバイス + 中心の登録機構. + 単一の独立していないサービス供給源の一つの例として + Timer2, Timer0 + そしてスピーカサービスを考慮する必要があります. + + + + ネットワークカードと一緒に提供される ODI + カードドライバを使用で きるようにする, NetWare サーバ + (プロテクトモードの ODI ドライバ) ロー ダとサブサービス. + NDIS ドライバと NetWare の SCSI ドライバについても同 + 様. + + + + 前のリビジョンの FreeBSD マシンではなく, Linux + マシンで動作する 「アップグレード + システム」オプション. + + + + 移植を簡単にするためと, X, ThinkPad, PS/2マウス, LED, + コンソール スイッチング, しつこい NumLock + などの問題を全部一度に片付けるためのコ + ンソールドライバの抽象レイヤへの分割. + + + + 機会が許したら, + 他の外部ドライバのための他のカーネルのエミュレー + ション環境. SCO と Solaris は UnixWare + などに続く良い候補です. + + + + 異なるアーキテクチャのバイナリの実行のための + プロセッサエミュレーション環境. + これはシステムコールインタフェースがあまり変わらなければ, + 思ったより簡単です. + + + + 商用のストリームドライバを使用可能にするための + ストリーム機構. + + + + カーネルのマルチスレッド化 + (カーネルのプリエンプションが必要). + + + + カーネルのプリエンプション付き対称マルチプロセッシング + (カーネル のプリエンプションが必要). + + + + ポータブルコンピュータのサポートにおける協調の試み. + これは PCMCIA + ブリッジング規則と電源管理イベント処理の変更により, いく + らかは処理できます. しかし, + 内蔵ディスプレイと外部ディスプレイの検出, この 2 + 種類のディスプレイがあるという事実に基づく + 異なる解像度の選択, マシンがドックにある場合には + ディスクのモータ停止を防止すること, マシンの + ブート能力に影響を与えずにドックベースのカードの消滅を + 可能にすること (PCMCIA と同じ問題) + などの問題があります. + + + + マルチプラットフォームへの移植のための + ソースツリーの再組織化. + + + + make + worldできちんと「世界を創造する」 + ができるようにする. (もしmake + regress(訳注: 後退する)と呼び方が適当であれば, + そのように 名前を変える) + + + + 最小必要メモリ 4MB 化 (もっと小さければなお良し!). + + + + + + もっと簡単なタスク + + 上のセクションで挙げたタスクは膨大な時間の投資または + FreeBSD のカーネルに関する深い知識を必要とします + (もしくはそのどちらも). しかしながら, + "週末ハッカー"やプログラミングのスキルを持 + たない人々に適した立派なタスクも数多くあります. + + + + FreeBSD-current を運用しており, + 状態の良いインターネット接続があ るならば, current.freebsd.org + という一日に一回フルリリースを行っている マシンがあります + — 時おり最新のリリースをそこからインストールし, その + 過程で何か問題があるなら報告して下さい. + + + + freebsd-bugs + メーリングリストを読んでください. そこではあなたが建 + 設的なコメントを付けたりテストできるパッチが + 提供されているような問題がある かもしれません. + もしくはそれらの問題の一つをあなた自身で修正することさえ + できるかもしれません. + + + + 定期的に FAQ とハンドブックを通して読んでみてください. + もしまずい説明や古い事柄や完全に間違っていることなどが + あれば我々に しらせて下さい. + さらに良いのは我々に修正案を送ることです (SGML + は学ぶのにそれほど難しくありませんが, + プレインテキストでも問題は ありません). + + + + (もしまだないならば) FreeBSD + のドキュメントを自分の母国語に翻訳 + するのを手伝ってください — + 作業している人がいるかどうか &a.doc; にメールを + 送って聞くだけです. とはいっても, + そうすることによってあなたが全ての FreeBSD + ドキュメントの翻訳に携わるように + なるというわけではないですから ね — 実際, + もっとも翻訳が必要とされているドキュメントはインストール方 + 法です. + + + + たまに(もしくは定期的に) freebsd-questions + メーリングリストや + comp.unix.bsd.freebsd.misc + を読んでください. これは, あなたの持ってい + る専門知識を共有したり誰かが抱えている問題を + 解決するのに非常に有効な ものになり得ることです. + 時にはあなた自身で新しいことを学ぶことさえ + できるかもしれません. + これらのフォーラムはやるべきことのアイディア + の源にもなり得るのです. + + + + -current に正しく当てられるがしばらく経っても(通常は + 2, 3 週間) -stable + に取り込まれてないようなバグフィックスがあるならば + コミッターに 丁寧に思い出させてください. + + + + 寄贈ソフトウェアをソースツリーの + src/contrib + に移動させてください. + + + + src/contrib + 以下のコードが最新のものであるか確認してください. + + + + 2000 年問題に関するバグを探してください(そして, + 見つけたら修正してください!). + + + + ソースツリー全体(もしくはその一部)を, + 警告を詳細に報告するようにして構築してみてください. + そして警告が出ないようにしてください. + + + + ports で, gets() を使っているとか malloc.h + をインクルードしている + などといった警告が出ないようにしてください. + + + + もしなんらかの ports に関わっているなら, + あなたのパッチを作者に フィードバックしてください + (次のバージョンが出た時にあなたが楽になります). + + + + このリストに追加するタスクを提案して下さい! + + + + + + + 貢献の仕方 + + 一般的に, システムへの貢献は次の 6 + つのカテゴリの1つ以上に分類されます: + + + バグ報告と一般的な論評 + + 報告するべきバグがあったり, 提案したいことがあれば: + + 一般的な + 技術的関心事に関するアイデアや提案は &a.hackers; + へメールしてください. 同様に, このような事柄に興味のある + (そして膨大なメール! に耐えられる) 人は, + &a.majordomo; へメールを送って hackers + メーリングリストに参加すると良いでしょう. 情報については + メーリングリスト + を参照してください. + + バグを発見したり変更を送付しようとしている場合は + &man.send-pr.1; プログラムか WEB ベースの + send-pr を使用して報告してください. + バグレポートの各項目を埋めるようにしてください. 65KB + を超えるのでなければ, レポート中に直接 + パッチを入れてくださって結構です. 20KB を超える場合は, + それらを compress して &man.uuencode.1; + することも検討してください. とても大きくなる場合は + ftp.freebsd.org:/pub/FreeBSD/incoming/ + を利用してください. + + + レポートがファイリングされれば, バグ報告の確認と + トラッキング番号をメールで受け取るはずです. + このトラッキング番号を覚えておき, 問題に関する詳細情報を + bug-followup@FreeBSD.ORG に + メールで送って更新できるようにしてください. 例えば + "Re: kern/3377" のように, + この番号をサブジェクト行に使用してください. + すべてのバグレポートの追加情報は, + この方法で送付されなければいけません. + + もしタイムリに (あなたの電子メール接続形態にもよりますが, + 3日から 1週間) 確認を受けとれないとか, 何らかの理由で + &man.send-pr.1; コマンドが 使用できない場合には, &a.bugs; + へメールを送り, 誰か代りにバグ報告を + 送付してもらうようたずねてください. + + + + 文書の変更 + + 文書の変更は &a.doc; が監督しています. バグ報告と一般的な論評 + に記述されているように send-pr + コマンドを使用して, 提案や変更 + (どんな些細なものでも歓迎します!) を送ってください. + + + + 現存のソースコードの変更 + + 現存のソースコードへの追加または変更は, + いくらかトリッキーな仕事で あり, core の FreeBSD + 開発の現状にあなたがどれだけ通じているかに大 きく依存します. + “FreeBSD-current”として知られる FreeBSD の特別な + 継続的リリースがあります. FreeBSD-current + は開発者の積極的な活動の 便宜のために, + 色々な方法で利用可能になっています. FreeBSD-current + の入手と使用方法についての詳しい情報については 最新の FreeBSD を追いかける + を参照してください. + + 不幸にして古いソースをもとに仕事をすることは, + 時々あなたの変更が時 代遅れ, または FreeBSD + への簡単な再統合に合わなくなっていることを意 味します. + システムの現状に関する議論がおこなわれている &a.announce; と + &a.current; へ参加することで, + この可能性を最小限にすることができます. + + 完全な最新のソースを変更のベースにできることが + 確実になったと仮定し て, 次のステップは FreeBSD + の保守担当者へ送る差分ファイルの生成です. これは &man.diff.1; + コマンドを使用しておこないますが, “context + diff”形式が好まれるようです. 例えば: + + &prompt.user; diff -c oldfile newfile + + または + + &prompt.user; diff -c -r olddir newdir + + これで指定されたソースファイルまたはディレクトリ階層に + 対するコンテ キスト形式の差分が生成されます. 詳しい説明は + &man.diff.1; のマ ニュアルページを参照してください. + + 差分ファイル (&man.patch.1; コマンドでテストできます) + を作ったら, それらを FreeBSD + に含めてもらうようメールで送ってください. バグ報告と一般的な論評 + に記述されているように &man.send-pr.1; + コマンドを使用してください. 差分ファイルだけを &a.hackers; + へ送ってはいけません. 途方にくれてしまいます! + 私たちは多忙なので, あなたの提案に大変感謝します + (これはボランティアのプロジェクトです!). + すぐに取りかかることはできませんが, 処理されるまでは ちゃんと + pr データベースに残っています. + + あなたがそうした方がいいと思う場合 (例えば, + ファイルの追加, 削除または名称変更など), 変更を + tar ファイルにまとめ, &man.uuencode.1; + プログラムにかけてください. Shar + アーカイブも歓迎します. + + 例えばあなたがそれ自身のさらなる配布を管理する + コピーライト問題を良 く分かっていないとか, + 単に厳しいレビューをおこなっておらず, リリース + する準備ができていないなど, + あなたの変更が潜在的に不安定な性質をも つものである場合, + &man.send-pr.1; で送付するよりむしろ &a.core; + へ直接送ってください. コアチームメーリングリスト宛のメールは, + 日々の仕 事のほとんどを FreeBSD でおこなっている人たちの, + より小さなグルー プに届きます. + このグループもまたとても忙しい + ことに注意し て, 本当に必要な場合にコアチームの彼らにメールを + 送るだけにしてください. + + コーディングスタイルに関する情報は man 9 + intro および man 9 style + を参照してください. コードを提出する前には, + 少なくともこの情報を意識しておいてくださるようお願いします. + + + + + 新たなコードやメジャーな付加価値の高いパッケージ + + 重要な大きい仕事の寄贈や, 重要な新しいフィーチャーを + FreeBSD に追加 する稀な場合には, 変更点を tar/uuencode + したファイルにして送るか, それらを私たちの ftp サイト + ftp://ftp.FreeBSD.ORG/pub/FreeBSD/incoming + へアップロードす ることのどちらかが通常必要になります. + + 大量のコードを伴った仕事の場合, + コピーライトの神経過敏な問題が常に 出てきます. FreeBSD + に含めるコードのコピーライトとして受け入れるこ とができるのは, + 以下の二つです: + + + + BSD コピーライト. + このコピーライトは“権利に縛られない”性格 + と商用企業にとって一般的な魅力をもつために最も好まれま す. + FreeBSD プロジェクトは商用利用を阻んだりせず, 何かを + FreeBSD + へ投資する気になった商業関係者による参加を積極的に奨励 + します. + + + + GNU一般公有使用許諾, または“GPL”. + このライセンスはコード + を商用目的に使用する場合に余分な努力が求められるため, + 私たち にあまり評判が良いというわけではありません. しかし, + 私たちは 既に GPL 下の高品質なコード (コンパイラ, + アセンブラ, テキスト フォーマッタ等) の提供を受けており, + 私たちは現在それを必要と しています. そのため, + このライセンスによる新たな貢献を拒絶す + るというのは愚かなことでしょう. GPL + 下のコードはソースツリー の別の部分, 現在のところ + /sys/gnu か + /usr/src/gnu に入っています. + そのため, GPL が問題と なるような人は, + 誰でも簡単にそれとわかるようになっています. + + + + これ以外のタイプのコピーライトによる寄贈は, FreeBSD + へ含めることを 考慮する前に, + 注意深いレビューを受けなければなりません. 作者が独自 + のチャネルを通して配布しており, + そのような変更をおこなうことを常に 奨励している場合でも, + 特に限定的な商用のコピーライトが適用される寄 + 贈は一般に拒否されます. + + あなたの作品に “BSD-スタイル” + のコピーライトを付けるには, 保護した + いソースコードファイルすべての一番最初に + 以下のテキストを入れて, %% + の間を適切な情報に置き換えください. + + +Copyright (c) %%適切な年%% + %%あなたの名前%%, %%あなたの州%% %%郵便番号%%. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer as + the first lines of this file unmodified. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY %%あなたの名前%% ``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 %%あなたの名前%% 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 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + $Id$ + + 便宜をはかるため, + このテキストのコピーは次の場所に置いてあります. + /usr/share/examples/etc/bsd-style-copyright. + + + (訳注: 以下は神田敏広氏より寄贈された bsd-style-copyright + の日本語訳です. + ソースファイルに含めるものは原文の方であることに注意して + ご利用ください. また, 原文との間に趣旨の差異が生じた場合, + 原文の内容が FreeBSD プロジェクトの + 意思であるものとします.) + + +Copyright (C) [年] + [あなたの名前] All rights reserved. + +ソースとバイナリ形式の再配布および使用は, 変更の有無にかかわらず以下の +条件を満たす場合に限り許可される: +1. ソースコードの再配布は, 上記の著作権表示・この条件のリスト・下記の + 否認声明文を保持しなければならない. + +2. バイナリ形式の再配布は, 上記の著作権表示・この条件のリスト・下記の + 否認声明文を, 配布物と共に提供される文書および/または他の資料の中に + 含めなければならない. + +(訳注:ここから「否認声明文」です) + +このソフトウェアは[あなたの名前]および貢献者によって ``あるがままの状態'' +で提供され, 商品性と特定の目的に対する適合性についての暗黙の保証に留ま +らず, いかなる明示および暗黙の保証を認めない. [あなたの名前]および貢献 +者は, あらゆる直接的・間接的・偶発的・特殊的・典型的・必然的な損害 (代 +替製品または代替サービスの獲得費; 効用・データ・利益の喪失; または業務 +中断を含み, またそれだけに留まらない損害) に対して, たとえどのようにし +て生じたとしても, そしてこのソフトウェアの使用によってどのようにであれ +生じる, 契約上であろうと, 厳密な責任内であろうと, あるいは不正行為 (過 +失やそうでない場合を含む) における場合であろうとも, いかなる責任論上も, +たとえそのような損害の可能性が予見されていたとしても, 一切の責任を持た +ない. + +翻訳: 神田敏広 +御協力 (五十音順・敬称略): + 池田研二, 内川 喜章, 藤村 英治, むらたしゅういちろう + 杢野 雅一, 横田@宇都宮 + + + + + 自分で port を作る + + 原作: &a.jkh;, &a.gpalmer;, &a.asami;, + &a.obrien; and &a.hoek;. 28 August 1996. + + 訳: &a.jp.simokawa;, &a.asami;. + 10 November 1996. + + 自分で port を作ることに興味がありますか, すばらしい! + + これから, FreeBSD 用のportを作る際の, + いくつかのガイドラインを 説明します. + 実際にportをコンパイルするときのほとんどの仕事は + /usr/share/mk/bsd.port.mk + というファイルでおこないます. + Portsコレクションについてのさらに細かい内部の働きについては, + そちらの ファイルを参照してください. + これにはコメントが細かく書いてありますので, Makefile + を読むのにあまり慣れていない人でも, 得るものはとても大きいで + しょう. + + + ここでは, 変更可能な変数の一部についてのみ記述しています. + ほとんどの変数はbsd.port.mk + の始めに記述があります. + また, このファイルは非標準のタブの設定になっています. + EmacsVim + はファイルのロード時にこれを認識しますが, + viexでは, + ファイルをロードしたら :set tabstop=4 + のようにして正しい値を設定する + ことができます. + + + + 3分porting + + この節では, 簡単なportの方法について説明します. + 多くの場合これ では不十分ですが, + まあうまくいくかどうか試してみて損はないでしょ う. + + まず, 元のtarファイルをDISTDIRに置きます. + デフォルトは/usr/ports/distfilesです. + + + 以下では, + ソフトウェアはそのままコンパイルされるとします. つまり, + FreeBSDのマシンで動かすために, 変更がまったく必要ない + とします. + もしなにか変更が必要な場合には次の節も参照する必要 + があります. + + + + <filename>Makefile</filename> の作成 + + 最小限のMakefile + は次のようなものです: + + +# New ports collection makefile for: oneko +# Version required: 1.1b +# Date created: 5 December 1994 +# Whom: asami +# +# $Id$ +# + +DISTNAME= oneko-1.1b +CATEGORIES= games +MASTER_SITES= ftp://ftp.cs.columbia.edu/archives/X11R5/contrib/ + +MAINTAINER= asami@FreeBSD.ORG + +MAN1= oneko.1 +MANCOMPRESSED= yes +USE_IMAKE= yes + +.include <bsd.port.mk> + + おわかりになりますでしょうか. + $Id$があ る行の内容については, + 気にしないでください. これはこのファイル + がportsツリーに書き込まれるときにCVSによって自動的に書 + き込まれます. もっと詳しい例が見たければ, Makefileのお手本 + の節をご覧ください. + + + + Package記述ファイルの作成 + + どのようなportでも, packageにするしないに関わらず, 3つ + の記述ファイルが必要です. + pkgサブディレクトリにある, + COMMENT, DESCR, + それに PLISTです. + + + <filename>COMMENT</filename> + + これには, そのportについての説明を1行で書きます. + Package の名前, バージョン番号等は + 含めないでください. たとえば, + こんな具合です: + + +A cat chasing a mouse all over the screen. + + + + <filename>DESCR</filename> + + これは, そのソフトウェアについての, + すこし長い説明を記述します. その port + が何をするのかについての数段落程度の + 簡潔な解説があれば十分です. + このファイルはマニュアルでもなければ, + 使用方法やコンパイル方法についての細かい + 説明書でもありません. 特に, + READMEファイル manpage + をコピーしようとしてしている場合には + 注意してください. これらは多くの場合, + そのポートの簡潔な説明に なっていなかったり, + 扱いにくい形式(manpage の場合, + 行を揃えるために空白が調整されます)になっていたりします. + もしこのソフトウエアに公式の WWW のホームページがあれば, + ここに書いて下さい. + + このファイルの最後にあなたの名前を書くことが + 推奨されています. たとえば, こんな具合です. + + +This is a port of oneko, in which a cat chases a poor mouse all over +the screen. + : +(うんぬん.) + +http://www.oneko.org/ + +- Satoshi +asami@cs.berkeley.edu + + + + <filename>PLIST</filename> + + このファイルには, + このportによってインストールされるファ + イルが列挙されます. このファイルはpackageを作る際のリス + トとして使われるため, `packing list' とも呼ばれます. + ここ に書かれているファイル名は, + インストール時のプレフィックス (普通は + /usr/local か + /usr/X11R6) からの 相対パスです. + MANn + 変数を使用する場合(使用することが推奨されています)には, + マニュアルはここに入れないでください. + + 簡単な例を載せておきましょう: + + +bin/oneko +lib/X11/app-defaults/Oneko +lib/X11/oneko/cat1.xpm +lib/X11/oneko/cat2.xpm +lib/X11/oneko/mouse.xpm +@dirrm lib/X11/oneko + + 'Packing list'の詳細については, &man.pkg.create.1; + の マニュアルを参照してください. + すべてファイルを列挙しなければなりませんが, + ディレクトリ名は必要ありません. また, ports + がインストール時にディレクトリを作成する場合には, + @dirrm の行を加えて, その port + が削除されるとき, + そのディレクトリも削除されるようにしてください. + + このファイルには, + ファイル名をアルファベット順に並べるようにしてください. + port のアップグレートのとき, + 楽に確認ができるようになります. + + + + + チェックサムファイルの作成 + + ただ, make makesum + と入力するだけです. bsd.port.mk + にルールがあるので, + 自動的にfiles/md5が生成されます. + + + + Portのテスト + + そのportが正しく動くことを, + package化を含めて確認してください. + 以下の重要なポイントを確認してください. + + + + PLIST にその port + がインストールしないものが含まれていないこと. + + + + PLIST にその port + がインストールする全てのものが含まれていること. + + + + reinstall + ターゲットを使うことによって, + 何度でもインストールが可能こと. + + + + deintall の際に 後片付け + をすること. + + + + + 推奨されるテストの手順 + + + make install + + + + make package + + + + make deinstall + + + + pkg_add `make package-name` + + + + make deinstall + + + + make reinstall + + + + make package + + + + package および + deinstall の段階で, + どんな警告(warning)も出力されないことを確認してください. + ステップ3の後, + 新しいディレクトリが全て正しく消去されているかを + 確認してください. また, + ステップ4の後にそのソフトウェアを使用してみて, package + からインストールされた場合に正しく動作するかを + 確認してください. + + + + <command>portlint</command> でチェック + + portlintを使って, あなたの port + が我々のガイドラインそっているかを確認してください. + portlint プログラムは ports + コレクションに含まれています. 特に, Makefile + が正しい形式になっているか, package + の名前が正しいか, をチェックするのに良いでしょう. + + + + Portの送付 + + まず, やってよいことといけないこと + についての節を読んでください. + + さあ, あなたのportに満足したら, + あとはそれをFreeBSDのメイ ンのportsツリーに置いて, + 皆に使ってもらうだけです. いまある + work ディレクトリや + pkgname.tgz + パッケージは必要ありませんから, まず消去してください. + あとは, バグレポートの中に shar `find + port_dir` の出力を, &man.send-pr.1; + プログラムを使用して送ってください. &man.send-pr.1; + についての詳細は, バグ報告と一般的な論評 + を参照してください.) もし, 圧縮していない状態で, + 20KB以上あるようなポートであれば, 圧縮して tar + ファイルにして, バグレポートに入れる前に &man.uuencode.1; + を使用してください. (20KB以下のものでも, tar + ファイルにして送ってもよいですが, あまり歓迎されません). + バクレポートの category は ports, class + は + change-requestを必ず使用してください. + (レポートを confidential (内密) + にしないようにしてください!) + + もう一度, オリジナルのソースファイル, + work ディレクトリ, make + package + で作成したパッケージが含まれていないこと + を確認してください. + + + 以前, 新しい port をわれわれの ftp サイト (ftp.freebsd.org) + にアップロードするようにお願いしたことがありますが, + 現在このサイトの incoming + ディレクトリは読み出し不可になっており, + いまでは推奨されていません. + 沢山の海賊版ソフトウェアがそこに置かれたためです. + + + 私たちは, 何か不明な点があったらあなたに確認したのち, + それをツリーへ置きます. あなたの名前は, FreeBSD + ハンドブックやその他のファイルの “Additional FreeBSD + contributors” のリストにも載るでしょう. う〜ん, + 素晴らし い. :) + + + + + + 本格的なport + + 残念ながら, 移植がそう簡単ではなく, + 動かすために多少の変更が 必要な場合も多いでしょう. + この節では, portsコレクション の方法論にのっとって, + そのような場合にどのように変更を施し, 動 + くようにしたらよいかを順を追って説明します. + + + port構築の詳細 + + まず, あなたがportのディレクトリで + make とタイ + プしてから起こる一連の出来事について,順を追って説明しま + す. ここを読むときには, 他のウィンドウで同時に + bsd.port.mk + も開いておくとよいかもしれません. + + しかし, + bsd.port.mkが何をしているのか, + 完全に理解 できなくても心配する必要はありません. + そう多くの人が理解して いるわけではないですから... f(^_^;) + + + + まず, fetch + というターゲットが実行されます. + このfetchターゲットは + ローカルディスクのDISTDIRに配布ファ + イルがあるようにするのが役目です. もし, + fetchが必要なファ + イルをDISTDIRに見つけることが + できなけ れば, Makefileに指定されているURL + MASTER_SITES, + そして私たちのFTPサイトで ある + ftp://ftp.freebsd.org/pub/FreeBSD/ports/distfiles/ + (ここ には, 私たちが取ってきたファイルを + バックアップとして置いてあ ります) に探しにいきます. + そして, ユーザのサイトがインター ネットに + 直接接続されている場合には, FETCH + を使って, その名前のファイルを取っ てきて, + DISTDIRに保存します. + + + + 次に実行されるのは + extract ターゲットです. + これは, DISTDIRにある, 配布ファイル + (普通は gzipされたtarファイル) を読み, + ソースを一時的な作業ディレ + クトリWRKDIR (デフォルトは + work) に展開します. + + + + 次に, patch + というターゲットが実行されます. まず, + PATCHFILESに定義されている, + すべてのパッ チをあてます. + 次にもしPATCHDIR (デフォ ルトは + patches サブディレクトリ) + にパッチが存在す れば, + これらをアルファベット順にあてます. + + + + 次に実行されるターゲットは + configureです. これには, い + ろいろな場合があります. + + + + もし存在すれば, + scripts/configure + が実行されます. + + + + もし, HAS_CONFIGURE + あるいは GNU_CONFIGURE + がセットされていれば, + WRKSRC/configure + が実行されます. + + + + もし, USE_IMAKE + がセットされていれば, XMKMF + (デフォルト: xmkmf -a) + が実行されます. + + + + + + 最後に, build + というターゲットが実行されます. これは, その port + の専用の作業ディレクトリ (WRKSRC) + にい き, コンパイルするのが役目です. もし + USE_GMAKE がセットされていれば, GNU + make が使用されます. + さもなければFreeBSDの make + が使用されます. + + + + 上記はデフォルトのルールです. さらに, + pre-何とか + や + post-何とか + というターゲット が定義してあったり, + そのような名前のスクリプトが + scripts サブディレクトリに + 置いてある場合には, それ らはデフォルトの動作の + 前後に実行されます. + + たとえば, post-extract + というターゲットがMakefile で定義されていて, + pre-build というファイルが, + scripts + サブディレクトリにあるとすると, + post-extractターゲットは, + 通常の展開動作のあとに呼 び出され, + pre-build + スクリプトはデフォルトのコンパイ + ルのルールが実行される前に実行されます. + もし動作が簡単であれ ば, Makefile + のターゲットを使用することが推奨されています. な ぜならば, + そのportが何らかのデフォルトではない動作を必要とす + るのかどうかが一箇所にまとめて書いてあった方が他の人に + 理解しやす いからです. + + デフォルトの動作は bsd.port.mk の + do- 何とか + + というターゲットでおこなわれます. たとえば, + portを展開するコマンドは, + do-extract + というターゲットにあります. もし, + デフォルトのターゲットに 不満があれば, + do- something + というターゲッ + トを再定義することによって, + どのようにでも直すことができます. + + + “メイン”のターゲット (例えば, + extract, + configure等) は, + すべての前段階が実行されていること を確認して, + 実際のターゲットやスクリプトを呼び出す以外のこと + はしません. + bsd.port.mkはこれらが変更されることは仮定してい + ませんので, もし, 例えば, 展開の仕方を直したいときには, + do-extract を直し, + 絶対にextractには手を + 触れないでください. + + + これで, ユーザが make + と入力したときに何が起こ るのかが理解できたと思います. + では, 完璧なportを手順を追っ て作ってみましょう. + + + + オリジナルのソースの入手 + + オリジナルのソースを, (普通は) + 圧縮されたtarファイルの形 ( + foo.tar.gz + あるいは + foo.tar.Z) + で入手して, それを DISTDIR + にコピーします. 可能なかぎり, 広 + く使われている主流の + ソースを使用するようにしてください. + + もし, ネットワークへの接続のよい FTP/HTTP + サイトを見つけるこ とができなかったり, + 頭にくるような非標準的な形式しか持ってい + ないサイトしか見つけられないときには, 自分で管理する確実な + ftp か http サーバ (たとえば, + あなたのホームページ)に置くこと ができます. + MASTER_SITES + に正しく反映されていることを確認してください. + + もしも, そのような都合の良く, + 安心な置き場所が見つけられない 場合(あなたが FreeBSD の + committer であれば, 自分の + public_html ディレクトリに置けます), + 私たちが, + + ftp://ftp.FreeBSD.ORG/pub/FreeBSD/ports/distfiles/LOCAL_PORTS/ + に置き場所を提供できます. + この場所は, 変数 MASTER_SITE_LOCAL + を使って参照してください. + これについての問い合わせのメールは &a.ports へお願いします. + + + その port の配布ファイルが特に理由もなく, + しょっちゅう変る場合には, + 配布ファイルをあなたのホームページに置いて + MASTER_SITESの最初に入れてください. + こうすることによって, ユーザ利用する場合に + checksum mismatch + エラーが起るのを防ぎ, 我々の ftp + サイトの保守の負担を減らすことができます. もし, master + site がたった一つしかない場合には, + あなたのサイトにバックアップを置いて + MASTER_SITES + の2番目に加えてください. + + もし, + あなたのportに必要ないくつかの追加パッチがインター + ネット上で手に入るのならば, それらも取ってきて, + DISTDIR に置きます. もし, + それらがメイン + のソースのtarファイルとは別のサイトにあっても, + 心配する必要 はありません. + そのような状況にはちゃんと対応できるようになっ ています. + (以下のPATCHFILESの記述 + をご覧ください). + + + + Portの修正 + + 適当なディレクトリにtarファイルを展開して, + FreeBSDの最新の バージョン上で, + 正しくコンパイルできるために必要なあらゆる変 更を施します. + 最終的に処理は自動化するわけですから, 何をおこなっ + たかを注意深く記録しておきましょう. + あなたのport が完成した暁には, ファイルの削除, 追加, + 修正を含むすべての処 理が, + 自動化されたスクリプトやパッチファイルで + おこなえるようになっ ていないといけません. + + もし, あなたの port + のコンパイルやインストールのために必要 + な手作業があまりに多いようならば, Larry Wall の模範的な + Configure + スクリプトでも参考にしたほうがいいかもしれませ ん. + 新しいportsコレクションは, 最小のディスクスペースで, + 個々のportがエンドユーザにできるだけ“プラグ & + プレ + イ”の状態でmakeできることをめざしています. + + + あなたが作成し FreeBSD の ports + に寄付されたパッチファイル, + スクリプトおよびその他のファイルは, + 明示的に記述されている場合 を除いては, + BSDの標準的な著作権条件によりカバーされていると見な + されます. + + + + + パッチをあてる + + port + の過程で追加されたり変更されたファイルは再帰的diffで変 + 更点を取り出すことができます. パッチは適当にまとめて, + patch-xx + という名前のファイルに入れてくだ さい. + xx + はパッチが適用される順番を示します — これらは, + アルファベット順, つまり + aa が 最初, つぎに + ab などとなります. これらのファイル + をPATCHDIRに置いておくと, + 自動的に適用さ れるようになっています. すべてのパッチは + WRKSRC (通常は, portのtarファイルが展 + 開されるところで, makeが実行されるところと同じです) + からの相 対パスになります. + 修正やアップグレードを容易にするため, 2つ + 以上のパッチが同じファイルを修正するのは避けてください. + (例, + patch-aaとpatch-abが共にWRKSRC/foobar.c + を修正する, など.) + + + + コンフィグレーション + + カスタマイズのために追加したいコマンドがあれば, + configure + という名前のスクリプトに入れて + scripts サブディレクトリに置きます. + 上で述べたよ うに, pre-configure + あるいは post-configure という + Makefile + のターゲットおよび/あるいはスクリプトで処理す + ることもできます. + + + + ユーザからの入力の扱い + + もし, そのportがビルド, コンフィグレーション, + インストー ルの際にユーザからの入力を必要とするならば, + Makefileで + IS_INTERACTIVEをセットしてください. + これによって, 深夜, + 自動的にたくさんのportをコンパイルすることが可能にな + ります. 環境変数BATCHがセットされていると + IS_INTERACTIVE + の定義されているportはスキップされ ます (そして, + ユーザがINTERACTIVEという変数をセッ + トすると入力を必要とする port + のみコンパイルされま す). + + もし, 適切なデフォルト設定があるのであれば, + PACKAGE_BUILDING 変数をチェックして, + それが設定されて いる場合には, + ユーザ入力のスクリプトを起動しないように してください. + こうすることによって, CD-ROM や ftp に 置く package + を我々が作成することができます. + + + + + + Makefileの作成 + + Makefileの作成は非常に単純です. 繰り返しになりますが, + 始める まえに, すでにある例を見てみることをお奨めします. + またこのハ ンドブックにはMakefileのお手本 + があります. それを見て, + Makefile内の変数の順番や空行を入れると + ころなどの参考にしてください. + そうすると他の人々にも読みやすい ものとなります. + + では, + Makefileをデザインするときに問題となるところを順に追っ + て見てみましょう. + + + オリジナルのソース + + ソースはDISTDIRに, + 標準的なgzipされた tarファイルとして置かれていますか? + そうであれば, 次のステッ プに進めます. そうでなければ, + 変数 EXTRACT_CMD, + EXTRACT_BEFORE_ARGS, + EXTRACT_AFTER_ARGS, + EXTRACT_SUFX, + DISTFILES + を適当に書き換えないといけません. + どれだけ変更しないといけないかは, あなたのportの + 配布ファイルがどの程度標準からかけはなれているかによりま + す. (最もよくある場合は, + gzipではなく普通のcompressコマンド + でtarファイルが圧縮されている場合で, + EXTRACT_SUFX=.tar.Z + とするだけです.) + + 最悪の場合には, 自分で + do-extract ターゲットを作 成して, + デフォルトを上書きすることもできます. しかし, そこま + でする必要があることはめったにないでしょう. + + + + <makevar>DISTNAME</makevar> + + DISTNAME には port + の名前の基幹部分を入れ ます. デフォルトのルールでは, + 配布ファイルのリスト (DISTFILES) は + DISTNAME + EXTRACT_SUFX という名前 になっています. + 例えば, foozolix-1.0.tar.gzの場 合, + 通常のtarファイルだと, + DISTNAME=foozolix-1.0 のようになります. + + さらにデフォルトのルールでは, tarファイルは + work/DISTNAME + というサブディレクトリ に展開されることを仮定しています, + 例えば work/foozolix-1.0/ + といった具合いです. + + これらの動作はもちろんすべて変更可能です. + デフォルトのルー + ルは最も標準的な場合を仮定しているだけです. まず, port + が複 数の配布ファイルを必要とするときには, 単に明示的に + DISTFILESを設定してください. もし, + DISTFILES + の一部だけが実際に展開される場合 には, + それらをEXTRACT_ONLY に設定してくだ + さい. この変数が定義されている場合には, 展開時に + DISTFILESに優先して利用されます. + 残りのファ + イルもDISTDIRに取ってきますが, 展開時に + はなにもせずに後で使うためにそのまま置いておかれます. + + + + + <makevar>PKGNAME</makevar> + + もし, DISTNAME が我々の package + の名前についてのガイドライン + に沿ったものでない場合には, PKGNAME + にもっと良い名前を設定してください. + 詳細は上記のガイドラインを参照してください. + + + + + <makevar>CATEGORIES</makevar> (分類) + + 完成した package の実体は + /usr/ports/packages/All に置かれます. + また, 1つかそれ以上の + /usr/ports/packages + のサブディレクトリからのシンボリッ クリンクが作られます. + それらのサブディレクトリの名前が + CATEGORIES + という変数によって指定されます. これは, + ユーザがFTPサイトやCD-ROMのpackageの山を渡り歩 + くことを容易にするためです. 現在存在する カテゴリを見て, そ + のportに適したもを選んでください. + + このリストは, この port が port tree のどこに import + されるかも決定します. 2つ以上のカテゴリを指定した場合には + 最初のカテゴリで指定されるサブディレクトリに置かれること + になります. 適切なカテゴリを選ぶ方法については, カテゴリ + の節を参照してください. + + もしその port + が本当に現在存在するすべてのものとは異なって いる場合には, + 新しいカテゴリ名を作ることもできます. その際には, &a.ports + 宛てに新しいカテゴリ名を提案する + メールを送ってください. + + カテゴリ名については, + なんのエラーチェックも行なわれません.ミスタイプがあっても + make package はなにも考えずに + 新しいディレクトリを作ってしまいますので, + 注意してください. + + + + <makevar>MASTER_SITES</makevar> + + オリジナルの配布ファイルを指し示す FTP または HTTP の + URL のディ レクトリ部分までを + MASTER_SITES に記録しま す. スラッシュ + (/) を最後につけることをお忘れなく. + 配布ファイルがシステム上に存在しないときに, + makeマクロは FETCH + でこの変数に指定されたサイトから取っ てきます. + + 複数の, + できれば異なる大陸のサイトをこのリストに入れておく + ことが推奨されています. これによって, + 広域ネットワークにトラ + ブルがあった場合でも成功する可能性が高くなります. + 私たちはさら に, 自動的に最も近いマスタサイトを検出して, + そこから取って + くるメカニズムの導入を計画しています. + + オリジナルのtar ファイルが, X-contrib, GNU, Perl CPAN, + TeX CTAN または Linux Sunsite + などの有名なアーカイブにある場合には, + MASTER_SITE_XCONTRIB, + MASTER_SITE_GNU, + MASTER_SITE_PERL_CPAN, + MASTER_SITE_TEX_CTAN および + MASTER_SITE_SUNSITE を利用することで, + 簡単にこれらのサイトを 指定することができます. あとは + MASTER_SITE_SUBDIR にアーカイ + ブ内でのパスを指定するだけです. 以下に例を示します. + + +MASTER_SITES= ${MASTER_SITE_XCONTRIB} +MASTER_SITE_SUBDIR= applications + + ユーザは/etc/make.conf中で + MASTER_SITE_* 変数を設定 + することによって, デフォルトの FTP サイトではなく, + これらの 有名なアーカイブの + ミラーの中で好みのものを使用することが可能 です. + + + + <makevar>PATCHFILES</makevar> + + もし, + オリジナルの配布ファイル以外にもFTPかHTTPで手に入る + パッチが必要な場合には, + PATCHFILESにファ イル名を, + PATCH_SITESにサイトとディレクト + リの名前を MASTER_SITES + と同様に設定してく ださい. + + そのパッチ内のファイル名ががソースツリーの + 一番上のディレク トリ (WKRSRC) + からの相対パスになっていな い場合には, + PATCH_DIST_STRIPを指定してく ださい. + 例えば, パッチ内のファイル名にすべて余計な + foozolix-1.0/ がついている場合には, + PATCH_DIST_STRIP=-p1としてください. + + これらのパッチは圧縮されていても大丈夫です. + ファイル名が .gz か + .Z で終わる場合には自動的に復元 + されるようになっています. + + もしパッチが, 文書などその他のファイルと一緒に gzip + された tarファイルで配布されている場合には,単純に + PATCHFILES を使うことはできません. + このような場合には, このパッチの tar + ファイルの名前と場所を DISTFILES と + MASTER_SITES に加えます. それから, + pre-patch ターゲットで, + パッチコマンドを走らせるか, パッチファイルを + PATCHDIR ディレクトリに + patch-xx + という名前でコピーするかして, + パッチを適用するようにします. + + + 普通の gzip か compress された tar ファイルであれば, + 通常のソースファイルと一緒にその時までに + 展開されていますので, 明示的に展開する必要はありません. + もし, 後者の方法を使用する場合には, + すでにそのディレクトリにある なにかを上書きしないように, + 注意する必要があります. さらに, + pre-clean + ターゲットにコピーしたパッチファイル + を削除するコマンドを追加するのを忘れないでください. + + + + + <makevar>MAINTAINER</makevar> + + あなたのメールアドレスをここに入れてください. + お願いします. + :) + + 保守担当者(maintainer)の責任についての詳細は, Makefile 中の + MAINTAINER の節をご覧ください. + + + + 依存関係 + + このプログラムが他のportに依存する場合には, + 必要なものが 自動的に作られるようにすることができます. + そのために, 以下の 5つの変数が用意されています. + よくあるケースのためにあらかじめ設定された依存変数や, + いくつかの依存関係の制御のための変数があります. + + + <makevar>LIB_DEPENDS</makevar> + + Port が必要とする非標準の共有ライブラリを + この変数で指定 します. これは + lib: + dir: + target という組のリストで, + うち lib + が共有ライブラリの名前, そして + dir + がそのライブラリが見つからない場合にインストールする + port のあるディレクトリで, + target + はそのディレクトリで呼ばれるターゲットです. 例えば, + LIB_DEPENDS= + jpeg.9:${PORTSDIR}/graphics/jpeg:install + と指定してあれば, + まずメジャーバージョンが9のjpegライブ + ラリがあるかどうか確認し, ない場合にはportsツリーの中の + graphics/jpeg + というサブディレクトリに移動し, そこ + でコンパイルとインストールを行ないます. + target の 部分は, + DEPENDS_TARGET (デフォルトは + install) + と等しいときには省略できます. + + + 前半の lib + 部分は ldconfig -r | grep -wF + への引数になります. + この変数には正規表現を入れられません. + + + + + この依存関係は2度チェックされます. まず + extract ターゲットで, 次に + install でチェックされます. + (これは, その port を作成するマシンとインストールする + マシンが違う場合でも, きちんとそのライブラリが利用できる + ことを確認するためです.) また, 依存するもの名前は + package の中にも含まれますので, + ユーザのシステムに存在しなければ, + pkg_add が自動的にインストールします. + + + + + <makevar>RUN_DEPENDS</makevar> + + Port + を使用する際に必要となるファイルまたはプログラムがある + ときにはこの変数で指定します. これは + path: + dir + :target とい + う組のリストで, path + がファイルまたはプログラムの 名前, そして + dir + がそれが見つからない場合に作成する + ためのディレクトリ名で target + はそのディレクトリで呼ばれるターゲットです. + path の最初の文字がスラッ + シュ (/) + の場合にはファイルかディレクトリ とみなし, その存在を + test -e でチェックします; + そうでない場合には 実行可能であると仮定し, + which -s を使って + そのプログラムがユーザのサーチパス上に + あるかどうか確認します. + + 例えばMakefileに以下のように書いてあるとします. + + +RUN_DEPENDS= ${PREFIX}/etc/innd:${PORTSDIR}/news/inn \ + wish8.0:${PORTSDIR}/x11-toolkits/tk80 + + まず, /usr/local/etc/innd + というファイルかディレクトリが存在 するか確認し, + ない場合にはportsツリーの中の + news/inn + というサブディレクトリから作られます. ま た, + wish8.0 + というプログラムがユーザのサーチパス中 + にあるかどうか探し, ない場合には同じくportsツリーの + x11-toolkits/tk80 + というサブディレクトリから作られます. + + + この例で, innd + は実際にはプログラムです; この ように, + プログラムであっても標準のサーチパス以外のところに + あるようなものの場合には, + 絶対パスで指定してください. + + + この依存関係はinstall + ステージのはじめでチェック されます. また, + packageを作る際に必要となるportのpackage名 が記録され, + pkg_addを使用すると + ユーザのシステムに存在しない場合には自動的にそちら + のpackageもインストールされるようになります. + target の部分は, + DEPENdS_TARGET + と同じ場合には省略可能です. + + + + + <makevar>BUILD_DEPENDS</makevar> + + Port + のコンパイルに必要なファイルまたはプログラムがある + ときは, この変数で指定してください. + RUN_DEPENDSと同 様に, これは + path: + dir + :target + という組のリストです. 例 えば, + BUILD_DEPENDS= + unzip:${PORTSDIR}/archivers/unzip は + unzip という名前のプログラムを探し, + 見つから + ない場合にはarchivers/unzip + サブディレクトリで作 れという意味になります. + + + ここでは “コンパイル” + と一口にいいましたが, この変数は実際 + にはファイルの展開から実際のコンパイル・リンクまで + 全部をま とめて面倒を見てくれます. + この依存関係は extract + ステージからチェックされます. + target の部分は + DEPENDS_TARGET + と同じ場合には省略可能です. + + + + + <makevar>FETCH_DEPENDS</makevar> + + この変数は, + portを取ってくるのに必要なファイルまたはプロ + グラムを指定するのに使います. 上の二つと同様に, これは + path: + dir + :target + + という組のリストです. 例えば, + FETCH_DEPENDS= + ncftp2:${PORTSDIR}/net/ncftp2 + としておけば, ncftp2 + という名前のプログラムを探 し, + 見つからない場合にはnet/ncftp2 + サブディレク トリにいってインストールします. + + この依存関係は fetch + ステージからチェックされます. + target の部分は + DEPENDS_TARGET + と同じ場合には省略可能です. + + + + <makevar>DEPENDS</makevar> + + 上記の四つのいずれにもあてはまらないような + 依存関係がある場 合, または他の port + がインストールされれているだけではなく, + ソースが展開されている必要がある場合にはこの変数 + を使います. これは + dir + :target という形式のリスト + になります. 上記の四つと違って特に + “確認”するものがありませんので. + + + + よくある依存関係を表す変数 + + もし ports が X Window System + を必要とするのであれば, USE_XLIB=yes + を定義してください. (これは + USE_IMAKEも意味します) BSD + make の代りに GNU + make を必要とする場合には, + USE_GMAKE=yes を定義. 動作するのに + GNU autoconf を必要とする場合には, + USE_AUTOCONF=yes を定義. 最新の qt + toolkit を使用 する場合には + USE_QT=yes を定義. perl + 言語のバージョン5 を必要とする場合には, + USE_PERL5=yes を定義してください. + (特に最後のは重要で, FreeBSD のいくつかの + バージョンでは基本システムに perl5 を含みますが, + 他のものは含んでいません.) + + + + 依存関係に関する注意 + + 上で述べたように, 依存する ports + が必要になったときに呼ばれるデフォルトのターゲットは + DEPENDS_TARGET で, + そのデフォルトは install です. + これは, ユーザの使用する変数で, port の + Makefile + で定義されるものではありません. もし, + あなたのportが特別な方法で, 依存関係を扱う必要が + ある場合には, DEPENDS_TARGET + を再定義するのではなく, *_DEPENDS + 変数の :target + の部分を利用してください. + + make clean とタイプしたときには, + 依存する port も自動的に clean されます. + もしそうしたくない場合には, + NOCLEANDEPENDS + を環境変数として設定してください. + + 無条件に他の port に依存させるには, 特別に + nonexistent という文字列を + BUILD_DEPENDS あるいは + RUN_DEPENDS + の最初のフィールドに使用してください. これは, 他の port + のソースが必要なときのみ使用してください. target + も指定することによって, + コンパイルの時間を節約することができます. 例えば, + BUILD_DEPENDS= + /nonexistent:${PORTSDIR}/graphics/jpeg:extract + これは, 常に JPEG port の directory + に行きソースの展開を行ないます. + + あなたがやりたいことが他の方法ではできない場合以外は, + DEPENDS を使わないでください. これは常に + 他の port の作成を行い(さらにデフォルトでインストール + を行い), package も作成します. もし本当にこれがあなたの + やりたいことでしたら, 代りにこれを + BUILD_DEPENDS と + RUN_DEPENDS で書くことをお勧めします + — 少なくとも意図が明確になります. + + + + + コンパイル時の特別な指定 + + GNUのmakeを使う場合には, + USE_GMAKE=yes と指定してください. Port + に GNU の configure が含まれ + ている場合には, GNU_CONFIGURE=yes + を使います(これは, HAS_CONFIGURE + も意味します). configure に追加の引数 + (デフォルトでは, GNU の configure では + --prefix=${PREFIX}, GNUでない + configure では空) + を渡したい場合には追加部分を + CONFIGURE_ARGS で指定してください. + そのパッケージが autoconf + を使用する場合には, USE_AUTOCONF=yes + を使います. これは, GNU_CONFIGURE + も意味し, configure の前に + autoconf を実行します. + + + X Window Systemのアプリケーションなど, + imakeを 使って + Imakefile から + Makefile を作成するportの場合には + USE_IMAKE=yes を指定してください. + コンフィグレー ションステージで自動的にxmkmf + -a が実行されます. も し + フラグが問題をもたらすなら, さらに + XMKMF=xmkmfとしてください. + + もし, port が imake + を使用するけれども, install.man + ターゲットがない場合には, + NO_INSTALL_MANPAGES=yes + を指定してください. ついでに, その port + のオリジナルの作者を探し出して八つ裂きにすると + いいでしょう.:> + + Portの Makefile が + all 以外のものをメインのター + ゲットとしている場合には, ALL_TARGET + でそ れを指定してください. + install と + INSTALL_TARGET も同様です. + + もし, port の元の Makefile が + all + 以外のターゲットをメインのターゲットとしている場合には, + ALL_TARGET + をそれに合わせて設定してください. + install と + INSTALL_TARGET + についても同様です. + + + + + + <makevar>NO_INSTALL_MANPAGES</makevar> + + あなたの port がimakeは使うものの + install.man + ターゲットを持っていない場合, + NO_INSTALL_MANPAGES=yes + を指定してください. つい でに, + 作者を探し出して八つ裂きにするといいでしょ う. (-_-#) + + + + + 特別な配慮 + + Portを作成する場合, + 考慮しなくてはいけないことがさらにいくつかあります. + この節では, + それらのうちもっともありがちなものについて説明します. + + + ldconfig + + 共有ライブラリをインストールするときには, + 共有ライブラリのキャッシュを更新するために port の + Makefile の + post-installtarget + から${LDCONFIG} -m + を走らせてください. + このコマンドの引数は共有ライブラリのインストールしてある + ディレクトリ (通常 + PREFIX/lib) + です. + + また, pkg/PLIST@exec + /sbin/ldconfig -m@unexec + /sbin/ldconfig -R の組を入れて, package + をインストールした場合にも共有ライブラリがすぐ使え, + 削除の際にも, システムがまだライブラリが存在すると + 誤認しないようにしてください. + この行は共有ライブラリを指定する行のすぐ後に + 書くのがよいでしょう: + + +lib/libtvl80.so.1 +@exec /sbin/ldconfig -m %D/lib +@unexec /sbin/ldconfig -R + + 絶対に引数なしでただ + ldconfig とだけ書いてある行を + Makefile や + pkg/PLIST + ファイルに入れないでください. このコマンドを実行すると, + 共有ライブラリのキャッシュが /usr/lib + の内容のみとなり, + ユーザのマシンにさまざまな問題をもたらします (「ぎゃぁ! + このportをインストールしたら xinit + が使えなくなっちゃった!」). この掟を破った者は, + 永久に地獄の底で苦しみ続けるように, + 閻魔様に頼んでおきます. + + + + + ELF 対応 + + FreeBSD は 3.0-RELEASE で ELF に移行しましたので, + シェアードライブラリを作成するたくさんの port を ELF 対応 + にする必要があります. 3.0 システムは ELF としても a.out + としてmも 動作しますし, 我々は非公式ではありますが, + できるだけ長い間 2.2 + システムのサポートをしたいと思っていますので, + 複雑な状況です. 以下は a.out のみに対応している port + をどのように a.out と ELF 両方に対応させるかのガイドライ + ンです. + + このリストの一部は, + 移行時にしかあてはまらないものもありますが, 古い port + をアップグレードしたい場合に参考になるように, + しばらくのあいだは残しておきます. + + + a.out ライブラリの退避 + + a.out ライブラリは, + /usr/local/lib から, + aout サブディレクトリ + に移動しなくはなりません. (もし移動しないと, ELF ports + がそれらをあっさり上書きして しまいます.) 3.0-CURRENT の + src/Makefile にある + move-aout-libs ターゲット + (aout-to-elf から呼ばれます) + がその移動をしてくれます. a.out + ライブラリを移動するだけなので, ELF と a.out + の両方のライブラリが標準的な + ディレクトリにあるシステムでは, + このターゲットを実行しても安全です. + + + + フォーマット + + port ツリーは package + をそのマシンのフォーマットで作成します. つまり, 2.2 では + a.out, また 3.0 では `objformat` + の結果によって, a.out か ELF になります. また, いったん + a.out ライブラリをサブディレクトリに移動すると a.out + ライブラリの作成はサポートされません. (つまり, + あなたがにをすれば良いのかを理解しているのならば, + うまく作成できるかもしれませんが, + 自力でやらなければならないということです) + + + もし port が aout でしか動作しないのなら, + BROKEN_ELF + に原因を説明する文字列を設定してください. + この変数が設定された port は, ELF + システム上でのビルドの際スキップされます. + + + + + PORTOBJFORMAT + + bsd.port.mk において + PORTOBJFORMAT は + aoutelf + に設定され, 環境変数 CONFIGURE_ENV, + SCRIPTS_ENV, MAKE_ENV の中で + export されます. (2.2-STABLE では常に + aout になります). また, + PORTOBJFORMAT=${PORTOBJFORMAT} として + PLIST_SUB に渡されます. + (以下にある ldconfig + に関するコメントを参照して下さい.) + + この変数は, 以下のようにして + bsd.port.mk 中で設定されます. + + +PORTOBJFORMAT!= test -x /usr/bin/objformat && /usr/bin/objformat || echo aout + + この変数を使って, port の make + の過程で何をすべきかを決定すべきですが, もし port の + configure スクリプトが元々, ELF + システムを自動的に検出するのであれば, + PORTOBJFORMAT + を参照する必要はありません. + + + + 共有ライブラリの作成 + + 以下は, a.out と ELF + での共有ライブラリの扱いの違いです. + + + + 共有ライブラリのバージョン + + ELF の共有ライブラリは, + libfoo.so.M + という名前になっていなければなりません. ここで + M は単一の + バージョン番号を表します. 一方 a.out のライブラリは + libfoo.so.M. + N + という名前で, M + はメジャーバージョン番号, N + はマイナーバージョン番号になっている必要があります. + これらを混同しないでください. + libfoo.so.N. + M + という名のELF 共有ライブラリや + libfoo.so.N + という名の a.out 共有ライブラリ + (あるいはシンボリックリンク) は + 絶対にinstallしないでください. + + + + リンカコマンドライン + + 直接 ld を使用せずに, + cc -shared を使用してください. + たった一つの違いは, ELF には, + コマンドラインにを加える必要があることです. + + + + + ELF のリンカを満足させるためには, + libfoo.so から + libfoo.so.N + へのシンボリックリンクを作る必要があります. これは, + PLIST にも加えなくては いけませんし, + a.out の場合でも害にはならないので (一部の port + ではダイナミックリンクローディングのために + 必要でもあります), PORTOBJFORMAT + の設定を気にせずに, + ただ単純にリンクを作成してください. + + + + <makevar>LIB_DEPENDS</makevar> + + すべての port の Makefile を編集して, + LIB_DEPENDS + からマイナー番号を除去する必要があり, + 正規表現のサポートも除去する必要があります. (例えば, + foo\\.1\\.\\(33|40\\) から + foo.2) マッチングは grep + -wF を使って行われます. + + + + <filename>PLIST</filename> + + PLIST は, a.out + のマイナー番号が0であれば, 短い (ELFの) + 共有ライブラリの名前を含み, さもなくば長い (a.outの) + 名前を含んでいる必要があります. + bsd.port.mk は 自動的に, + PORTOBJFORMAT が + aout であれば, .0 を + 短い共有ライブラリの名前の行に付け加え, + PORTOBJFORMATelf + であれば, マイナー番号を + 長い共有ライブラリの名前から削除します. + + ELF システムで 2 + つのバージョン番号を持つ共有ライブラリを + インストールしたり, aout システムで 1 + つのバージョン番号しか持たない共有ライブラリを + インストールするのが避けられない場合 + (例えば他のオペレーティングシステム用の + 互換ライブラリをインストールする port など), + NO_FILTER_SHLIBS 変数を定義すれば, + 前節で説明されている PLIST + 編集の機能が停止されます. + + + + <literal>ldconfig</literal> + + + Makefile 中の ldconfig + の行は以下のようになります. + + +${SETENV} OBJFORMAT=${PORTOBJFORMAT} ${LDCONFIG} -m .... + + また PLIST 中では: + + +@exec /usr/bin/env OBJFORMAT=%%PORTOBJFORMAT%% /sbin/ldconfig -m ... +@unexec /usr/bin/env OBJFORMAT=%%PORTOBJFORMAT%% /sbin/ldconfig -R + + となります. これは, + システムのデフォルトフォーマットではなく + パッケージのフォーマットに応じて, 正しい + ldconfig + が呼ばれることを保証するためのものです. + + + + + <makevar>MASTERDIR</makevar> + + もし, あなたの port が 変数(例えば + 解像度とか紙のサイズなど)を変えたりした, + ちょっと違うバージョンを作成する必要があるときには, + ユーザが分りやすいように, package + ごとに別々のサブディレクトリを作成し, ただし, できるだけ + port 間でファイルを共有するようにしてください. + 典型的な例では, うまく変数を使えば, + とても短いMakefileだけ, + 1つ以外のすべてのディレクトリに置くだけで済みます. その短い + Makefile には + MASTERDIR を使って, + 残りのファイルがあるディレクトリを指定できます. また PKGNAME + の一部に変数に使って, package + が別々の名前を持つようにしてください. + + 以下が, とても良い例になるでしょう. これは + japanese/xdvi300/Makefile + の一部です: + + +PKGNAME= ja-xdvi${RESOLUTION}-17 + : +# default +RESOLUTION?= 300 +.if ${RESOLUTION} != 118 && ${RESOLUTION} != 240 && \ + ${RESOLUTION} != 300 && ${RESOLUTION} != 400 + @${ECHO} "Error: invalid value for RESOLUTION: \"${RESOLUTION}\"" + @${ECHO} "Possible values are: 118, 240, 300 (default) and 400." + @${FALSE} +.endif + + japanese/xdvi300 は通常のパッチ, + package ファイルももっています. そこで, + make と入力すると, + デフォルトの解像度(300)を使って, 普通に port + の作成を行います. + + 他の解像度に関してですが, これが, + xdvi118/Makefile の(コメントを除いた) + すべてです. + + +RESOLUTION= 118 +MASTERDIR= ${.CURDIR}/../xdvi300 + +.include ${MASTERDIR}/Makefile + + (xdvi240/Makefile と + xdvi400/Makefile も同様です). + MASTERDIR が + bsd.port.mk に + PATCHDIRPKGDIR + などの通常のサブディレクトリが xdvi300 + にあることを教えます. RESOLUTION=118 + の行が, xdvi300/Makefile の + RESOLUTION=300 の行を無効にし, port + は解像度を118として作成されます. + + + + 共有ライブラリのバージョン + + まず, + 共有ライブラリのバージョンについての指針 を読んで, + 共有ライブラリのバージョンを + 一般的にどうすれば良いかを理解してください. 盲目的に, + ソフトウエアの作者がちゃんと理解していると + 信じててはいけません, 多くの場合違います. + 細い点まで考慮することは大変重要なことです, + なぜなら我々は互換性がないかもしれない大量の + ソフトウェアを共存させようとする, 特殊な状況にあるからです. + 不注意な port の導入が共有ライブラリに関して, + 多大な問題を引き起したことが過去にあります (今まで, + jpeg-6b がなぜ 9.0 + といバージョン番号を持っているか不思議に + 思ったことはありませんか?). もし, 疑問があれば, &a.ports; + にメールを送ってください. ほとんどの時間は, + 正しいシェアードライブラリのバージョンを決めることと, + それを実現するためのパッチを作成することに終始します. + + しかしながら, が同じソフトウェアの違ったバージョンの + ソフトウェアが既にツリーにあるばあいには, + 状況は非常に複雑です. つまり, FreeBSD では, + ユーザがリンカにどのバージョンの共有ライブラリを + 使用するかを指定できないからです + (リンカは常にもっとも高いバージョンを選びます). これは, + もし, libfoo.so.3.2 と + libfoo.so.4.0 + がシステムに存在するときには, + リンカに特別なアプリケーションだけ + libfoo.so.3.2 + をリンクするように指示する方法がないことを意味します. + これは, + コンパイル時のリンクという意味では完全に見劣りします. + この場合の唯一の解決方法は, 共有ファイルの名前の + ベース 部分を変えることです. 例えば, + libfoo.so.4.0 を + libfoo4.so.1.0 へ変えることによって, + バージョン 3.2 とバージョン 4.0 共に他の port + からリンクされることができるようになります. + + + + マニュアル + + MAN[1-9LN] 変数を使用すると, + 自動的にすべてのマニュアルを pkg/PLIST + に加えます (つまり, マニュアルを PLIST + に加えては いけませんPLIST の生成 + を参照してください). またマニュアルを + /etc/make.conf 中の + NOMANCOMPRESS の設定に応じて, + install時に自動的に圧縮したり伸長したりします. + + マニュアルをインストール時に圧縮するかどうかを + 指定するには, MANCOMPRESSED + 変数を使用します. この変数は, 3つの値をとることができます, + yes, no そして + maybe です. yes + はマニュアルが既に圧縮されて インストールされている, + no はされていない, + maybe はそのソフトウェアがすでに, + NOMANCOMPRESS に合わせており + bsd.port.mk + が特別なにもする必要がないことを意味します. + + USE_IMAKE がセットされていて, + NO_INSTALL_MANPAGES + がセットされていなければ, MANCOMPRESSED + は自動的に yes に設定され, + それ以外の場合には, no になります. + デフォルトがあなたの port + に合わない場合以外は明示的に設定する必要がありません. + + PREFIX 以外のディレクトリの下に + マニュアルを置くような port では + MANPREFIX を指定することができます. + さらに, 特定のセクションのマニュアルだけ, + 標準ではない場所にインストールする場合, 例えばいくつかの + Perl のモジュールの ports など, には個々のマニュアルのパスを + MANsectPREFIX + (sect は, 1-9, + または, LN + を表わします) によって指定できます. ができます. + + + マニュアルが, 言語特有のサブディレクトリに + 置かれる場合には, 言語名を MANLANG + に設定してください. この変数のデフォルト値は, + "" になっています (つまり, 英語のみ). + + + これは, 全部をまとめた例です. + + +MAN1= foo.1 +MAN3= bar.3 +MAN4= baz.4 +MANLANG= "" ja +MAN3PREFIX= ${PREFIX}/share/foobar +MANCOMPRESSED= yes + + 以下の6個のファイルがこの port でインストールされます. + + + +${PREFIX}/man/man1/foo.1.gz +${PREFIX}/man/ja/man1/foo.1.gz +${PREFIX}/share/foobar/man/man3/bar.3.gz +${PREFIX}/share/foobar/man/ja/man3/bar.3.gz +${PREFIX}/man/man4/baz.4.gz +${PREFIX}/man/ja/man4/baz.4.gz + + + + Motifを必要とするport + + 最近はコンパイルに Motif + を必要とするアプリケーションが増えて きました. + (Motif自体は有料のものがいくつかの会社から手に入りま すし, + 多くのアプリケーションがコンパイル可能な無料の互換ライブラリ + が x11-toolkits/lesstifにあります) + Motifはかなり広く使われていますし, 製品のライ + センスではライブラリを静的にリンクした + 実行形式は再配布が認めら れている場合が多いので, + Motifを必要とするソフトウェアを簡単に 動的(port + からコンパイルする人々のために)/静的(package を配布 + する人々のために)にリンクできるような + しくみが用意されています. + + + <makevar>REQUIRES_MOTIF</makevar> + + Motif + がないとコンパイルできないportのMakefileではこの変 + 数を指定してください. これによって, + Motifを持っていない人が + このportをコンパイルしようとするのを未然に防ぎます. + + + + <makevar>MOTIFLIB</makevar> + + この変数は bsd.port.mk によって + Motif ライブラリの指 定に置き換えられます. + ソース内のMakefileやImakefileで Motif + ライブラリを指定しているところをこの変数に置き換えるよ + うにパッチをあててください. + + 代表的な例としては以下の二つがあげられます: + + + + MakefileかImakefileの中でMotifライブラリが + として使われている場合には, + かわりに MOTIFLIB + と書いてください. + + + + Imakefileの中で XmClientLibs + が使われている 場合には, それを + ${MOTIFLIB} ${XTOOLLIB} + ${XLIB} と書きかえてください. + + + + + MOTIFLIB は通常 + -L/usr/X11R6/lib -lXm か + /usr/X11R6/lib/libXm.a に置き換えら + れます. したがって前に や + をつけ る必要はありません. + + + + + + X11 のフォント + + もし, あなたの port が X window system + のフォントをインストールするのであれば, それらを + X11BASE/lib/X11/fonts/local + に置くようにしてください. このディレクトリは XFree86 release + 3.3.3 で新設されたものです. もし, + それが存在しなければ作成し, ユーザに XFree86 を 3.3.3 + かそれより新しいものに更新か, すくなくとも, + このディレクトリを /etc/XF86Config の + font path + に加えるように促すメッセージを出力するようにしてください. + + + + + Info ファイル + + 新しい版の texinfo(2.2.2-RELEASE + およびそれ以降に入っています) には, + install-info + というコマンドが含まれており, dir + ファイルに項目を追加したり, 削除したりすることがで きます. + もし, あなたの port が info ドキュメントをインストー + ルするのであれば, 以下の指示に従って, その port および + package が正しく, ユーザの + ${PREFIX}/info/dir ファイル + を更新するようにしてください. (この節は, + とても長くてすいません, しかし info + ファイルを作りあげるためには, これらは不可欠 です. + 正しく行なえば, 美しい + リストができますので, 辛抱してください! :) + + まず, これを知っておかなければなりません: + + &prompt.user; install-info --help +install-info [OPTION]... [INFO-FILE [DIR-FILE]] + Install INFO-FILE in the Info directory file DIR-FILE. + (訳注: Info ディレクトリの INO-FILE を DIR-FILE にインストールする) +Options: +--delete Delete existing entries in INFO-FILE; + don't insert any new entries. + (訳注: INFO-FILE の中の項目を削除, + 新しい項目は一切追加しない.) + : +--entry=TEXT Insert TEXT as an Info directory entry. + (訳注: TEXT を Info ディレクトリの項目として追加する.) + : +--section=SEC Put this file's entries in section SEC of the directory. + (訳注: このファイルの項目を Info ディレクトリの SEC + という節に置く.) + : + + + このプログラムは, 実際には info + ファイルをインストール しません, 単に + dir + ファイルにエントリーを挿入したり削除し + たりするだけです. + + + これから, install-info + を使用するように, ports を変換す る7段階の工程を示します. + 例として editors/emacsを + 使用します. + + + + まず, texinfo のソースを見て, + @dircategory と + @direntry 文がないファイルについて, + それらを追加するパッチを作成します. 以下は, + ここでの例での patchの一部です: + + +--- ./man/vip.texi.org Fri Jun 16 15:31:11 1995 ++++ ./man/vip.texi Tue May 20 01:28:33 1997 +@@ -2,6 +2,10 @@ + + @setfilename ../info/vip + @settitle VIP ++@dircategory The Emacs editor and associated tools ++@direntry ++* VIP: (vip). A VI-emulation for Emacs. ++@end direntry + + @iftex + @finalout + : + + フォーマットについては見ればわかると思います. + dir + というファイルに必要な項目を書いておいてくれる作者 + も多いので, まず自分で書く前にさがしてみてください. + また, 関係 する ports も調べて, 節(section)の名前や, + インデントなどが + きちんと合っているかどうかを確認してください + (項目のテキスト は, すべて4つめのタブ・ストップ(tab + stop)から始めることを推 奨します). + + + 1つのファイルに対して1つの info + の項目しか書けないことに注 意してください, これは, + install-info --delete が, そのバグにより, + @direntry セクションに複数の項目を書 + いても, + 初めの1つの項目しか削除してくれないからです. + + + texinfo のソースにパッチをあてるかわりに, + dir の項目 を + install-info の + 引数((, + ) として与えることもできます. + これはあまり良い方法とは 思えません, なぜなら, + 同じ情報を3ヶ所(Makefile, + PLIST の + @exec/@unexec: + 以下参照) に重複して, 書く必要があるからです. + しかしながら, もし日本語(あるいは, + 他のマルチバイト文字)の info ファイルがあるのならば, + install-info + の特別な引数を使用する必要があるでしょう, なぜならば, + makeinfo がこのような texinfo + ソースファイル を扱えないからです. + (このようなものをどう扱うかの例としては, + japanese/skk の + Makefile と + PLIST を見て ください.) + + + + portのディレクトリに戻って, make clean; + make をして, info ファイルが texinfo + ソースファイルから再び生成さ れることを確認してください. + texinfo ソースファイルのほうが info + ファイルよりも新しいので, make + とタイプすれば, info ファイルは再構築されるはずですが, + 多くの Makefile には info + ファイルの正しい依存関係が書かれていません. + emacs の場合, info + ファイルの再構築ため, man + サブディレクトリ に降りていくようにするために, メインの + Makefile.in にパッ + チをあてる必要がありました. + + +--- ./Makefile.in.org Mon Aug 19 21:12:19 1996 ++++ ./Makefile.in Tue Apr 15 00:15:28 1997 +@@ -184,7 +184,7 @@ + # Subdirectories to make recursively. `lisp' is not included + # because the compiled lisp files are part of the distribution + # and you cannot remake them without installing Emacs first. +-SUBDIR = lib-src src ++SUBDIR = lib-src src man + + # The makefiles of the directories in $SUBDIR. + SUBDIR_MAKEFILES = lib-src/Makefile man/Makefile src/Makefile oldXMenu/Makefile lwlib/Makefile +--- ./man/Makefile.in.org Thu Jun 27 15:27:19 1996 ++++ ./man/Makefile.in Tue Apr 15 00:29:52 1997 +@@ -66,6 +66,7 @@ + ${srcdir}/gnu1.texi \ + ${srcdir}/glossary.texi + ++all: info + info: $(INFO_TARGETS) + + dvi: $(DVI_TARGETS) + + man + サブディレクトリでのデフォルトターゲットは, + info で呼ばれるのに対して, + メインの Makefile では, + all で呼びたいので, + 2つめのpatchが必要でした. また, + info info + ファイルのインストールも削除しました, なぜなら, + 同じものが同じ名前で既に + /usr/share/info にあるからです. + (このパッチはここにはありません.) + + + + もし, Makefile に + dir ファイルをインストールす + る個所があれば, 削除します. あなたの port がインストー + ルしてはいけません. また, dir + ファイルを壊してしまうよう + なコマンドの類も削除します. + + +--- ./Makefile.in.org Mon Aug 19 21:12:19 1996 ++++ ./Makefile.in Mon Apr 14 23:38:07 1997 +@@ -368,14 +368,8 @@ + if [ `(cd ${srcdir}/info && /bin/pwd)` != `(cd ${infodir} && /bin/pwd)` ]; \ + then \ + (cd ${infodir}; \ +- if [ -f dir ]; then \ +- if [ ! -f dir.old ]; then mv -f dir dir.old; \ +- else mv -f dir dir.bak; fi; \ +- fi; \ + cd ${srcdir}/info ; \ +- (cd $${thisdir}; ${INSTALL_DATA} ${srcdir}/info/dir ${infodir}/dir); \ +- (cd $${thisdir}; chmod a+r ${infodir}/dir); \ + for f in ccmode* cl* dired-x* ediff* emacs* forms* gnus* info* message* mh-e* sc* vip*; do \ + (cd $${thisdir}; \ + ${INSTALL_DATA} ${srcdir}/info/$$f ${infodir}/$$f; \ + chmod a+r ${infodir}/$$f); \ + + + + (これは, 既存のportを修正するときのみ必要です.) + pkg/PLIST を見て, + info/dir にパッチをあて + ようとするものすべてを削除します. これらは, + pkg/INSTALL + やその他のファイルにもあるかもしれない ので, + いろいろさがしてみてください. + + +Index: pkg/PLIST +=================================================================== +RCS file: /usr/cvs/ports/editors/emacs/pkg/PLIST,v +retrieving revision 1.15 +diff -u -r1.15 PLIST +--- PLIST 1997/03/04 08:04:00 1.15 ++++ PLIST 1997/04/15 06:32:12 +@@ -15,9 +15,6 @@ + man/man1/emacs.1.gz + man/man1/etags.1.gz + man/man1/ctags.1.gz +-@unexec cp %D/info/dir %D/info/dir.bak +-info/dir +-@unexec cp %D/info/dir.bak %D/info/dir + info/cl + info/cl-1 + info/cl-2 + + + + post-install ターゲットを + Makefile に加えて, + dir + ファイルが存在しなければ作成するようにします. また, + インストールされた info ファイルについては, + install-info + を実行するようします. + + +Index: Makefile +=================================================================== +RCS file: /usr/cvs/ports/editors/emacs/Makefile,v +retrieving revision 1.26 +diff -u -r1.26 Makefile +--- Makefile 1996/11/19 13:14:40 1.26 ++++ Makefile 1997/05/20 10:25:09 1.28 +@@ -20,5 +20,11 @@ + post-install: + .for file in emacs-19.34 emacsclient etags ctags b2m + strip ${PREFIX}/bin/${file} + .endfor ++ if [ ! -f ${PREFIX}/info/dir ]; then \ ++ ${SED} -ne '1,/Menu:/p' /usr/share/info/dir > ${PREFIX}/info/dir; \ ++ fi ++.for info in emacs vip viper forms gnus mh-e cl sc dired-x ediff ccmode ++ install-info ${PREFIX}/info/${info} ${PREFIX}/info/dir ++.endfor + + .include <bsd.port.mk> + + 新しい info ファイルを作成するのに, + /usr/share/info/dir と上のコマンド, + 以外は使用しな いでください. 実際のところ, もし port + する人がこれに関して PLIST + に自らまったく手を加える必要がないのであれば, 上 + のパッチのはじめの3行を bsd.port.mk + に加えたでしょう. + + + + PLIST を編集して, + 同じ働きをする @exec 文, そ + れにpkg_delete のために + @unexec 文を加えてくださ い. + @unexec を使用して + info/dir を削除する必 + 要はありません. + + +Index: pkg/PLIST +=================================================================== +RCS file: /usr/cvs/ports/editors/emacs/pkg/PLIST,v +retrieving revision 1.15 +diff -u -r1.15 PLIST +--- PLIST 1997/03/04 08:04:00 1.15 ++++ PLIST 1997/05/20 10:25:12 1.17 +@@ -16,7 +14,15 @@ + man/man1/etags.1.gz + man/man1/ctags.1.gz ++@unexec install-info --delete %D/info/emacs %D/info/dir + : ++@unexec install-info --delete %D/info/ccmode %D/info/dir + info/cl + info/cl-1 +@@ -87,6 +94,18 @@ + info/viper-3 + info/viper-4 ++@exec [ -f %D/info/dir ] || sed -ne '1,/Menu:/p' /usr/share/info/dir > %D/info/dir ++@exec install-info %D/info/emacs %D/info/dir + : ++@exec install-info %D/info/ccmode %D/info/dir + libexec/emacs/19.34/i386--freebsd/cvtmail + libexec/emacs/19.34/i386--freebsd/digest-doc + + + @unexec install-info --delete + コマンドは, info ファイル自身より先に置き, + コマンドがファイルを読めるようにし + ておかなければならないことに注意してください. また, + @exec install-info コマンドは info + ファイルおよび dir ファイルを作る + @exec コマンドより後に + おかなければなりません. + + + + + テスト + をして出来栄えに感服しましょう :) 各段階の前後に, + dir + ファイルをチェックしましょう. + + + + + + <filename>pkg/</filename> サブディレクトリ + + まだ触れていない, いくつかのこつが + pkg/ サブディレクトリにはあり, + 時として便利でしょう. + + + <filename>MESSAGE</filename> + + もし, インストールする人にメッセージを表示する + 必要がある場合には, そのメッセージを + pkg/MESSAGE に置けます. この機能は, + pkg_add + の後の追加のインストール手続きを表示するときなどに, + 重宝します. + + + + pkg/MESSAGE ファイルは + pkg/PLIST に加える必要はありません. + また, もしユーザが package ではなく port を使用して + いる場合には自動的には表示されませんので, 明示的に + post-install + で表示するようにするべきでしょう. + + + + + <filename>INSTALL</filename> + + バイナリパッケージが pkg_add + でインストールされるときに, 実行される必要がある + コマンドがあれば, pkg/INSTALL + スクリプトを使って実行することができます. + このスクリプトは自動的に package に加えられ, + pkg_add によって2度実行されます. + はじめは INSTALL ${PKGNAME} + PRE-INSTALL と実行され, 2度目には, + INSTALL ${PKGNAME} POST-INSTALL + と実行されます. どちらのモードで実行されているかは, + $2 + を調べることによってわかります. 環境変数 + PKG_PREFIX には package + がインストールされるディレクトリが設定されます. 詳細は + &man.pkg.add.1; を見てください. + + + + port を make install で + インストールするときには, + このスクリプトは自動的に実行されません. もし, + 実行される必要があるならば, port の Makefile + から明示的に呼ぶ必要があります. + + + + + + <filename>REQ</filename> + + port が(インストールされるシステムの状態によって) + インストールされるべきか, されないべきか区別する必要が + あるときには, “要件(requirements)” スクリプト + pkg/REQ を作ることができます. これは, + インストール及びデインストール (package + の削除)の時に自動的に実行され, + それらが処理されるべきかを決定します. + + + + make の変数にあわせた <filename>PLIST</filename> + の変更 + + いくつかの port, 特に p5- portsなど, は configure + のオプション (あるいは, p5- ports の場合は perl + のバージョン)によって, PLIST + を変える必要があります. これを容易に実現するために, + PLIST 中の + %%OSREL%%, + %%PERL_VER%%, + %%PERL_VERSION%% は, + 適切に置き換えられるようになっています. + %%OSREL%% の値は, + オペレーティングシステムの数字で表されたリビジョンです + (例えば, 2.2.7). + %%PERL_VERSION%% は perl + のバージョン番号全体(例えば, 5.00502 + )で, %%PERL_VER%% はバージョン番号から, + パッチレベルを引いてものです(例えば, + 5.005). + + 他の置き換えが必要であれば, + PLIST_SUB 変数に + VAR=VALUE + + という形式のペアのリストを設定することによって, + PLIST 中の + %%VAR%% は + VALUE に置き換えられます. + 例えば, バージョンに固有の沢山のファイルを + インストールする場合には, Makefile + に + + + +OCTAVE_VERSION= 2.0.13 +PLIST_SUB= OCTAVE_VERSION=${OCTAVE_VERSION} + + と書いて, PLIST + 中のバージョン番号が表われるすべてのところに, + %%OCTAVE_VERSION%% と書きます. + このようにしておけば, port をアップグレードするときに, + 何十行(ときとして, 何百行)も PLIST + を書き替えないですみます. + + この書き換えは ( + マニュアル の追加も) + do-install と + post-install ターゲット + のあいだに, PLIST を読み + TMPPLIST (デフォルトは, + WRKDIR/.PLIST.mktmp ) + に書き込むことによって行なわれます. もし, あなたの port が + PLIST を実行時に生成するのであれば, + do-install のあいだか, + その前に行うようにしてください. また, + 書きかえられたあとのファイルを編集する必要がある場合には, + post-install で, + TMPPLIST を書きかえてください. + + + + <filename>pkg</filename> + サブディレクトリにあるファイル名の変更 + + pkg + サブディレクトリにあるファイルは全て, 変数を + 使用して定義されていますので, 必要であれば + Makefile 中で 変更可能です. + いくつかの ports で 一つの pkg + サブディレクトリを共有する場合や, 上記のファイルに書き込む + 必要があるときなど, 特に便利です. + (pkg + サブディレクトリに直接書き込むのが良くない理由に ついては + WRKDIR + 以外への書きこみ を参照してください.) + + 以下が変数名とそのデフォルト値の表です. + + + + + + Variable + Default value + + + + + + COMMENT + ${PKGDIR}/DESCR + + + + DESCR + ${PKGDIR}/DESCR + + + + PLIST + ${PKGDIR}/PLIST + + + + PKGINSTALL + ${PKGDIR}/PKGINSTALL + + + + PKGDEINSTALL + ${PKGDIR}/PKGDEINSTALL + + + + PKGREQ + ${PKGDIR}/REQ + + + + PKGMESSAGE + ${PKGDIR}/MESSAGE + + + + + + PKG_ARGSを上書きせずに, + これらの変数を変更 するようにしてください. + PKG_ARGSを変更すると これらのファイルは + port から正しく /var/db/pkg + にインストールされなくなります. + + + + + ライセンス上の問題 + + ソフトウェアによっては制限の厳しい + ライセンスがついてきたり, 法律的に問題があるかもしれません. + (PKPの公開鍵暗号化, ITAR (暗 号化ソフトウェアの輸出) + などが例としてあげられます). それらを + どう扱えばいいかはライセンスの文面によって + さまざまな場合があり ます. + + + ソフトウェア移植者として, + あなたにはライセンスをよく読み, FreeBSD プロジェクトが FTP + または CD-ROM で配布してはいけないソフ + トウェアを配布してしまうことのないよう, + 注意する義務があります. なにか疑問がある場合には, + &a.ports;に聞いてみてください. + + + よく見られるケースに対処するために, + 二つの変数が用意されてい ます: + + + + ソフトウェアに “有償再配布を禁ずる” + という趣旨のライセン スがついてきた場合には + NO_CDROM + という変数にその理由を記述して ください. + 私たちはこれがついているportはCD-ROMリリースに入 + れないようにしますが, + オリジナルのソースファイルとpackage + はFTPでは取れるようにしておきます. + + + + もしも, 生成される package + が個々のサイトで独自に構築さ れる必要があったり, + ライセンスによって生成されるバイナリが + 配布できない場合には, NO_PACKAGE + 変数にその理由を記述してくだ さい. そのような package が + FTP サイトに置かれたり, リリース 時の CD-ROM + へ入らないようにします. ただし, いずれの場合も distfile + は(FTP や CD-ROM に)含まれるようになります. + + + + Portが, 使用者によっては法律上の問題が生じる時 + (暗号化ソフ トウェアなど), + または“商用利用を禁ずる”とライセンスに書い + てある場合には + RESTRICTEDという変数にその理由を入れ + てください. この場合には, + ソースファイルやpackageは私たちの + FTPサイトにも置かれません. + + + + + GNU一般公有使用許諾書 (GPL) はバージョン1, 2とも + port作成上は何ら問題にはなりません. + + + + もしあなたが,ソースツリー管理者 (committer) + であれば, ソースツリーにこのようなportを入れる際に, + ports/LEGAL + ファイルを書き換えるのを忘れないようにし + てください. + + + + + アップグレード + + Port + のバージョンが原作者からのものに比べて古いことに気がつ + いたら, まずはあなたの持っているportが私たちの最新のもの + (ミラー サイトの ports/ports-current + というディレクトリにあります) + であることを確認してください. + + 次に, portの Makefile + にMAINTAINER (保守担当者) の + アドレスが書いてある場合には, + その人にメールを出してみましょう. + 保守担当者の人がすでにアップグレードの準備を + しているかもしれま せんし, + (新しいバージョンの安定度に問題があるなど) あえてアッ + プグレードをしない理由があるのかもしれません. + + 保守担当者にアップグレードをしてくれと頼まれた場合, + あるいは + そもそもportのMakefileに保守担当者が書いてない場合などは, あ + なたがアップグレードをしてくださると助かります. + その場合にはアッ プグレードをしたのち, + 変更前と変更後のディレクトリの再帰的diff (unified diff と + context diff のどちらでもいいのですが, port のコミッター達は + unified diff のほうを好むようです) をとって送ってください. + (例えば, 変更前のディレクトリが + superedit.bak という名前でとってあり, + 変更後のもの が superedit + に入っているなら, diff -ruN superedit.bak + superedit の結果を送ってください. ) diff + の出力を見て, すべての変更が正しくなされているか確認して + ください. 変更箇所については, &man.send-pr.1; (カテゴリーは, + ports)に diff の出力結果を添えて, + 私たちに送ってもらうのが一 番よいです. commit する際に CVS + に明確に記述しなければならない ので, + 付け加えたり削除したりしたファイルがあったら, それについ + て書いておいてください. もし diff の大きさが 20 KB 程度を + 超えるようであれば, 圧縮したものを uuencode して下さい. + そうでなければそのまま PR に入れるだけでいいです. + + 繰り返しになりますが, ports の変更を送るときには, + &man.shar.1; ではなく &man.diff.1; + を使用してください. + + + + やっていいことといけないこと + + この節では, + ソフトウェアをportする上でよくある落し穴などにつ + いて説明します. このリストを使って, あなた自身が作成した + port のチェックはもとより, PR データベースにある, + 他の人が作成した port のチェックもできます. + あなたがチェックした port について のコメントを バグ報告と一般的な論評 + にしたがって, 送ってください. PR データベースにある port を + チェックすることによって, 私達がそれらを commit + するのを早くし, + あなたが何をしているか理解していることも示します. + + + バイナリのstrip + + バイナリは strip してください. + オリジナルのソースがバイナリを strip + してくれる場合は良いですが, そうでない場合には + post-install ターゲットを指定して strip + するようにするとよいでしょう. 例えば, + こんな風になります: + + +post-install: + strip ${PREFIX}/bin/xdl + + インストールされた実行形式がすでに strip + されているかどうかは file + コマンドで確認できます. これが`not + stripped'と言わなければ, + stripされているということです. + + + + <makevar>INSTALL_*</makevar> マクロ + + あなた自身の *-install + ターゲットでファイルの正しいモードと + オーナを保証するために, + 必ずbsd.port.mkで提供されて + いるマクロを使用してください. + マクロは以下のようなものがあります. + + + + ${INSTALL_PROGRAM} + は実行可能なバイナリを + インストールするコマンドです. + + + + ${INSTALL_SCRIPT} + は実行可能なスクリプトを + インストールするコマンドです. + + + + ${INSTALL_DATA} + は共有可能なデータを + インストールするコマンドです. + + + + ${INSTALL_MAN} + はマニュアルとその他のドキュメ + ントをインストールするコマンドです. + (圧縮はしません) + + + + これらは基本的に install + コマンドに適当なフラグを与え たものです. + どのようにこれらを使用するかは以下の例を見てください. + + + + + <makevar>WRKDIR</makevar> + + WKRDIR + の外のファイルにはなにも書き込まないように してください. WRKDIR は + ports のビルド中に書き込こめる + ことが保証されている唯一の場所です( CDROM から ports + をコンパイルを参照). PKGDIR + にあるファイルを修正する必要がある ときには, 変数の再定義 + によって行ない, 上書きはしないでください. + + + + <makevar>WRKDIRPREFIX</makevar> + + WRKDIRPREFIX + を尊重していることを確認してください. 特に, 別の port の + WRKDIR を参照している + ときには気を付けてください. 正しい場所は, + WRKDIRPREFIX + PORTSDIR + /subdir/ + name/work, です, + + PORTSDIR/subdir/ + name/work とか + + .CURDIR/../../subdir + /name/work + とかではありません. + + また, 自分で WRKDIR + 定義するときには, 頭に + ${WRKDIRPREFIX}${.CURDIR} + が付いている 事を確認してください. + + + + OS や OS のバージョンの区別 + + Port の過程で, 修正や, どのバージョンの UNIX + で動くかによる条件つきコンパイルなどが + 必要なコードに出会うかもしれません. + そのような条件つきコンパイルなどのための + 変更をおこなうときには, FreeBSD 1.x システムへの移植や, + CSRGの4.4BSD, BSD/386, 386BSD, NetBSD, OpenBSD + などの他のBSDシステムへの移植が可能なように, + できるだけ普遍的な変更をおこなうことを + 心がけてください. + + 4.3BSD/Reno (1990) およびそれより新しい BSD + 版を古いバージョンと区別するには BSD + マクロを利用するのがよいでしょう. これは + <sys/param.h> + で定義されています. + このファイルがすでにインクルードされていればよいのですが, + もしそうでない場合には以下のコードを, その + .c + ファイルの適当な場所に加えてください. + + +#if (defined(__unix__) || defined(unix)) && !defined(USG) +#include <sys/param.h> +#endif + + これらの 2 + つのシンボルが定義されているすべてのシステムには + sys/param.h があるはずです. もし, + そうでないシステムを発見したら我々にも教えてください. + &a.ports; までメールを送ってください. + + あるいは, GNU の Autoconf + のスタイルを使用することもできます, + + +#ifdef HAVE_SYS_PARAM_H +#include <sys/param.h> +#endif + + この方法を使用するときには, + Makefile 中の + CFLAGSに + -DHAVE_SYS_PARAM_H + を加えることを忘れないようにしてください. + + いったん sys/param.h + がインクルードされると, + + +#if (defined(BSD) && (BSD >= 199103)) + + このようにしてそのコードが 4.3 Net2 コードベース, + またはそれより新しいもの (例: FreeBSD 1.x, 4.3/Reno, + NetBSD 0.9, 386BSD, BSD/386 1.1とそれ以前) + の上でコンパイルされているかを検出できます. + + +#if (defined(BSD) && (BSD >= 199306)) + + これは, 4.4コードベース, またはそれより新しいもの (例: + FreeBSD 2.x, 4.4, NetBSD 1.0, BSD/386 2.0とそれ以後) + の上でコンパイルされているかどうかを + 検出するために使用します. + + 4.4BSD-Lite2 コードベースでは, BSD + マクロの値は 199506 になっています. + これは参考程度の意味合いしかありません. 4.4-Lite ベースの + FreeBSD と 4.4-Lite2 での変更がマージされたバージョンとを + 区別するのに使用するべきものではありません. + この目的のためには, __FreeBSD__ + マクロをかわりに使用してください. + + 以下は控え目に使ってください. + + + + __FreeBSD__ + はFreeBSDのすべての版で定義されています. 変更が + FreeBSD + だけに適用されるとき以外は使用しないでください. + Portでよくある, strerror() + ではなく sys_errlist[] + を使うなどは, FreeBSDでの変更ではなく, BSD + の流儀です. + + + + FreeBSD 2.xでは __FreeBSD__ が + 2 と定義されています. + それ以前の版では 1 になっています. + その後の版では, + そのメジャー番号に合うように上がっていきます. + + + + もし, FreeBSD 1.x システムと FreeBSD 2.x あるいは + FreeBSD 3.x システムを区別する必要があれば, 上で述べた + BSDマクロを使用するのが, + 大抵の場合において正しい答です. もし, + FreeBSD特有の変更であれば (ld + を使うときのシェアードライブラリ用のなオプションなど), + + __FreeBSD__を使い #if + __FreeBSD__ > 1 のようにFreeBSD 2.x + および, それ以降のシステムを検出するのはかまいません. + もし, + 2.0-RELEASE以降のFreeBSDシステムを細かく検出したけれ + ば, 以下を使用することができます. + + +#if __FreeBSD__ >= 2 +#include <osreldate.h> +# if __FreeBSD_version >= 199504 + /* 2.0.5+ release specific code here */ +# endif +#endif + + + + + + Release + _FreeBSD_version + + + + + + 2.0-RELEASE + 119411 + + + + 2.1-CURRENT's + 199501, 199503 + + + + 2.0.5-RELEASE + 199504 + + + + 2.1 以前の 2.2-CURRENT + 199508 + + + + 2.1.0-RELEASE + 199511 + + + + 2.1.5 以前の 2.2-CURRENT + 199512 + + + + 2.1.5-RELEASE + 199607 + + + + 2.1.6 以前の 2.2-CURRENT + 199608 + + + + 2.1.6-RELEASE + 199612 + + + + 2.1.7-RELEASE + 199612 + + + + 2.2-RELEASE + 220000 + + + + 2.2.1-RELEASE + 220000 (2.2-RELEASE と同じです) + + + + 2.2.1-RELEASE 以後の 2.2-STABLE + 220000 (これも同じです) + + + + texinfo-3.9 以後の 2.2-STABLE + 221001 + + + + top 導入以後の 2.2-STABLE + 221002 + + + + 2.2.2-RELEASE + 222000 + + + + 2.2.2-RELEASE 以後の 2.2-STABLE + 222001 + + + + 2.2.5-RELEASE + 225000 + + + + 2.2.5-RELEASE 以後の 2.2-STABLE + 225001 + + + + ldconfig -R 以後の 2.2-STABLE + 225002 + + + + 2.2.6-RELEASE + 226000 + + + + 2.2.7-RELEASE + 227000 + + + + 2.2.7-RELEASE 以後の 2.2-STABLE + 227001 + + + + semctl(2) 変更後の 2.2-STABLE + 227002 + + + + 2.2.8-RELEASE + 228000 + + + + 2.2.8-RELEASE 以後の 2.2-STABLE + 228001 + + + + mount(2) 変更以前の 3.0-CURRENT + 300000 + + + + mount(2) 変更以後の 3.0-CURRENT + 300001 + + + + semctl(2) 変更以後の 3.0-CURRENT + 300002 + + + + ioctl 引数変更後の 3.0-CURRENT + 300003 + + + + ELF 移行後の 3.0-CURRENT + 300004 + + + + 3.0-RELEASE + 300005 + + + + 3.0-RELEASE 以後の 3.0-CURRENT + 300006 + + + + 3/4 の分岐後の 3.0-STABLE + 300007 + + + + 3.1-RELEASE + 310000 + + + + 3.1-RELEASE 以後の 3.1-STABLE + 310001 + + + + 3/4 の分岐後の 4.0-CURRENT + 400000 + + + + + + + + + (2.2-STABLE は, 2.2.5-RELESE 以後, + “2.2.5-STABLE” と呼ばれることがあります.) + 見ての通り, + これは年・月というフォーマットになっていましたが, + バージョン 2.2 から, + より直接的にメジャー/マイナー番号を使う + ように変更になりました. + 並行していくつかのブランチ(枝分かれし + たバージョン)を開発する場合には, + リリースされた日付でそれらの + リリースを分類することが不可能だからです. (あなたが今 + port を作成するときに, 古い -CURRENT 達について心配 + する必要はありません. + これは参考のために挙げられているにすぎま せん.) + + + これまで, 何百ものportが作られてきましたが, + __FreeBSD__ が正しく使われたのは, + 1つか2つの場合だけでしょう. + 以前のportが誤った場所でそのマクロを使っているからと + いって, それをまねする理由はありません. + + + + <filename>bsd.port.mk</filename> の後に書くこと + + .include <bsd.port.mk> + の行の後には なにも書かないようにしてください. + 大抵の場合は Makefile の + 中程のどこかで, bsd.port.pre.mk を + include して, 最後に bsd.port.pre.mk + を include することによって避けることができます. + + + + pre.mk/post.mk + のペアか bsd.port.mk + だけのどちらかだけを include してください. + 2つを混ぜないでください. + + + 前者は, いくつかの変数の定義だけ をして, + Makefile でのテストに使用し, + 後者は残りを定義します. + + + 以下は bsd.port.pre.mk + で定義される重要な変数です. (これは, すべてではありません. + 完全なリストは bsd.port.mk + を参照してください.) + + + + + + + 変数名 + 解説 + + + + + + ARCH + uname -m で返される + アーキテクチャ. (例, i386). + + + + + OPSYS + uname -s で返される + オペレーティングシステム (例, + FreeBSD). + + + + OSREL + オペレーティングシステムの + リリースバージョン + (例., 2.1.5, + 2.2.7). + + + + OSVERSION + 数字形式のオペレーティングシステム + のバージョン, + 上記の + __FreeBSD_version + と同じです. + + + + PORTOBJFORMAT + システムのオブジェクト + フォーマット (aout あるいは + elf). + + + + LOCALBASE + “local” ツリーのベース. + (例, /usr/local/). + + + + + X11BASE + “X11” ツリーのベース. + (例, /usr/X11R6/). + + + + + PREFIX + portsのインストール先 + ( + PREFIXについてを参照). + + + + + + + + USE_IMAKE, + USE_X_PREFIX あるいは + MASTERDIR + などの変数を定義する必要がある場合には, + bsd.port.pre.mk + を include する前に定義してください. + 他のものは, bsd.port.pre.mk + の前でも後でもかまいません. + + + 以下は bsd.port.pre.mk + の後に書けるものの例です: + + +# no need to compile lang/perl5 if perl5 is already in system +.if ${OSVERSION} > 300003 +BROKEN= perl is in system +.endif + +# only one shlib version number for ELF +.if ${PORTOBJFORMAT} == "elf" +TCL_LIB_FILE= ${TCL_LIB}.${SHLIB_MAJOR} +.else +TCL_LIB_FILE= ${TCL_LIB}.${SHLIB_MAJOR}.${SHLIB_MINOR} +.endif + +# software already makes link for ELF, but not for a.out +post-install: +.if ${PORTOBJFORMAT} == "aout" + ${LN} -sf liblinpack.so.1.0 ${PREFIX}/lib/liblinpack.so +.endif + + + + 付加的ドキュメント + + 普通のマニュアルや info + ファイルのほかにユーザにとって有用だ + と思えるようなドキュメントがある場合には, + PREFIX/share/doc + の下にインストールしてく ださい. これは前記と同様, + post-installターゲットの + 中からするのがいいでしょう. + + まず, あなたのportのために新しいディレクトリを作りま + す. どのportのドキュメントか簡単にわかるような名前にする必 + 要がありますので, 普通は PKGNAME + からバージョ ン番号を除いた部分を使うといいでしょう. + もちろん, ユーザが異 + なるバージョンのものを同時に使うことが予想される port + の場合 には, PKGNAME + をそのまま使ってかまいません. + + ユーザが /etc/make.conf + でこの部分を禁止するために NOPORTDOCS + という変数をセットしている場合には, + これらのドキュメントが + インストールされないようにしてください. こんな具合です. + + + +post-install: +.if !defined(NOPORTDOCS) + ${MKDIR}${PREFIX}/share/doc/xv + ${INSTALL_MAN} ${WRKSRC}/docs/xvdocs.ps ${PREFIX}/share/doc/xv +.endif + + これらのファイルを pkg/PLIST + に入れるのを忘れないよ うにしてください. + (packageが/etc/make.conf内の + 変数を読む方法は今のところ存在しませんので, + NOPORTDOCS + については気にしないでください.) + + インストール時に pkg/MESSAGE + ファイルを利用して, メッセージを表示することができます. + 詳細は pkg/MESSAGE を使う + の節を参照してください. + + + + MESSAGE ファイルは + pkg/PLIST に加える必要はありま + せん. + + + + + <makevar>DIST_SUBDIR</makevar> + + /usr/ports/distfiles + ディレクトリ内をあまり散らかさ ないようにしてください. + たくさんのファイルを取ってくるport や, + 数は少なくてもほかのportのファイルと混同されるおそれが + あるファイル (Makefile など) + がある場合には, DIST_SUBDIR に port + の名前 (PKGNAME + からバージョン番号を取った部分を 使うといいでしょう) + を入れてください. すると, + DISTDIRがデフォルトの + /usr/ports/distfiles から + /usr/ports/distfiles/DIST_SUBDIR + に変更され, + 取ってきたファイルはすべてそのサブディレクトリの中に置か + れるようになります. + + また, + ファイルを取ってくるときにバックアップサイトとして使わ + れる ftp.freebsd.org + のディレクトリ名にもこの変数の 値が使われます. + (DISTDIRを明示的に指定し た場合には, + ローカルのファイルを置くところは変わりますが, こ + のサイトのディレクトリ名は変わりませんので, 必ず + DIST_SUBDIRを使うようにしてください.) + + + この変数はMakefile中で明示的に指定された + MASTER_SITES + には影響しないことに注意して ください. + + + + + RCS文字列 + + RCS + が特別な意味を与えている文字列をパッチ内に入れないように + してください. + ファイルを私たちのソースツリーに入れる時にこれら + の文字列はCVSによって書き換えられてしまい, + あとでまたパッチ + を使おうとした時にうまくいかないことがあります. + RCS文字列は ドル記号 ($) + で囲まれており, $Id や + $RCS などで始まり ます. + + + + パッチ作成上の注意 + + diffの再帰 () + フラグを使って再帰的なパッ チを作るのは大変結構なのですが, + でき上がったパッチは必ず目で + チェックして余計なゴミが入っていないことを確認してくださ + い. よくあるのはバックアップファイル同士の変更点, あるいは + Imake や GNU + configure を使うソフトウェアの + Makefile + の変更点が入っている場合などです. また, + configure.in を編集して, + autoconf を使って + configure を作り直す ときには, + configure の diff は含めずに (それらは, + 数千行になることもしばしばです), + USE_AUTOCONF=yes を定義して, + configure.in の diff + をとってください. + + ファイルをまるごと消す場合にはパッチを使わずに + post-extract + ターゲットで消す方が簡単です. できあがった + 差分に満足したら, それらをソースのファイルごとに別々の + パッチファイルに分割してください. + + + + <makevar>PREFIX</makevar> + + なるべく port は PREFIX + に対する相対パス + にインストールすることができるように心がけてください. + (この変数の値は USE_X_PREFIXか + USE_IMAKEが指定してある時には + X11BASE + (デフォルト/usr/X11R6), + そうでない場合にはLOCALBASE + (デフォルト/usr/local) + にセットされます.) + + サイトによってフリーソフトウェアが + インストールされる場所が 違いますので, ソース内で + /usr/local や + /usr/X11R6 + を明示的に書かないようにしてください. X のプログラムで + imake を使うものについては, + これは問題に はなりません. それ以外の場合には, + ソース中のMakefileやスク リプトで /usr/local + (imakeを使わないXのプログラ ムは + /usr/X11R6) と書いてあるところを + PREFIX に書き換えてください. この値は + portのコンパイル, + およびインストール時に自動的に環境変数として + 下位makeに渡されます. + + USE_X_PREFIXは本当に必要な時 + (つまり, X のライブラリなどとリンクしたり, + X11BASE 以下にある + ファイルを参照したりする必要がある時) + 以外には設定しないでください. + + 変数 PREFIX の値は port の + Makefile やユーザの環境で変更することもできます. しかし, + 個々の port が Makefile + でこの変数の値を明示的に設定することはなるべくしない + でください. + + また, 他の port + からインストールされるプログラムやファイル + を指定するときには, 上で述べた変数を使用してください. + 例えば, less のフルパスを + PAGER というマクロに入れた い場合は, + コンパイラに + -DPAGER=\"/usr/local/bin/less\" + と渡すかわりに + -DPAGER=\"${PREFIX}/bin/less\" + (Xを使うportの時は + -DPAGER=\"${LOCALBASE}/bin/less\" ) + を渡し てください. こうしておけば, `/usr/local' + がまるごとどこか他 の場所に移してあるサイトでも, + あなたのportがそのまま使える 可能性が高くなります. + + + + ディレクトリ構成 + + インストール時には PREFIX + の正しいサブディ + レクトリにファイルを置くように心がけてください. + ソフトウェア によっては新しいディレクトリを + 一つ作ってファイルを全部それに + 入れてしまうものがありますが, それはよくありません. また, + バ イナリ, ヘッダファイルとマニュアル以外のすべてを + lib + というディレクトリに入れてしまうportもあります が, + これもBSD的なファイルシステム構成からいうと正しくありま + せん. これは以下のように分散すべきです. + etc にセッ + トアップ/コンフィグレーションファイル, + libexec に 内部で使用されるプログラム + (コマンドラインから呼ばれることの ないコマンド), + sbin に管理者用のコマンド, + info に GNU Info 用のドキュメント, + そして share + にアーキテクチャに依存しないファイルが入り ます. + 詳細については man &man.hier.7; を見てくださ い. + /usrの構成方針はほとんどそのまま + /usr/localにもあてはまります. USENET + “ニュース”を 扱う ports は例外です. これらは, + ファイルのインストール先として + PREFIX/news + を使用します. + + + + 空のディレクトリの除去 + + ports は デインストール(削除) の際には, + 自分自身を消去したあとに, (ディレクトリの) + 除去をするようにしてください. これは, 大抵の場合 + @dirrm の行を ports + が作成するすべてのディレクトリについて + 加えることによって実現できます. 親ディレクトリは, + 子ディレクトリを先に消さないと + 消せないことに気をつけて下さい. + + + : +lib/X11/oneko/pixmaps/cat.xpm +lib/X11/oneko/sounds/cat.au + : +@dirrm lib/X11/oneko/pixmals +@dirrm lib/X11/oneko/sounds +@dirrm lib/X11/oneko + + といった感じです. + + しかし, ときとして, 他の port + をディレクトリを共有しているために + @dirrm がエラーを返すことがあります. + rmdir@unexec + から呼びだすことによって, 警告(warning)なしで + 空のディレクトリのみを削除することができます: + + + +@unexec rmdir %D/share/doc/gimp 2>/dev/null || true + + + これを使えば, たとえ, 他の port がファイルを + インストールしていて, + PREFIX/share/doc/gimp + が空でない場合でも エラーメッセージは表示されませんし, + pkg_delete + が異常終了することもありません. + + + + UID + + もしあなたの + portがインストールされるシステム上に特定のユー + ザを必要とする場合は, pkg/INSTALL + スクリプトから pw + コマンドを実行して自動的にそのユーザを追加するよ + うにしてください. net/cvsup-mirror + の portが参考になるでしょう. + + もしあなたの port が, バイナリのパッケージとしてとして + インストールされるときにも, + コンパイルされたときと同じユーザー/グループ ID + を使わなければならないのなら, 50 から 99 の間で空いている + UID を選んで登録してください. + japanese/Wnn の port + が参考になるでしょう. + + 既にシステムや他の portで利用されている + UIDを使わないように 十分注意してください. 現在の 50から + 99までの間の UIDは以下の とおりです. + + +majordom:*:54:54:Majordomo Pseudo User:/usr/local/majordomo:/nonexistent +cyrus:*:60:60:the cyrus mail server:/nonexistent:/nonexistent +gnats:*:61:1:GNATS database owner:/usr/local/share/gnats/gnats-db:/bin/sh +uucp:*:66:66:UUCP pseudo-user:/var/spool/uucppublic:/usr/libexec/uucp/uucico +xten:*:67:67:X-10 daemon:/usr/local/xten:/nonexistent +pop:*:68:6:Post Office Owner (popper):/nonexistent:/nonexistent +wnn:*:69:7:Wnn:/nonexistent:/nonexistent +ifmail:*:70:66:Ifmail user:/nonexistent:/nonexistent +pgsql:*:70:70:PostgreSQL pseudo-user:/usr/local/pgsql:/bin/sh +ircd:*:72:72:IRCd hybrid:/nonexistent:/nonexistent +alias:*:81:81:QMail user:/var/qmail/alias:/nonexistent +qmaill:*:83:81:QMail user:/var/qmail:/nonexistent +qmaild:*:82:81:QMail user:/var/qmail:/nonexistent +qmailq:*:85:82:QMail user:/var/qmail:/nonexistent +qmails:*:87:82:QMail user:/var/qmail:/nonexistent +qmailp:*:84:81:QMail user:/var/qmail:/nonexistent +qmailr:*:86:82:QMail user:/var/qmail:/nonexistent +msql:*:87:87:mSQL-2 pseudo-user:/var/db/msqldb:/bin/sh + + このリストを最新の状態に保つためにも, + この範囲の UID や GID を予約するような port を作ったり, + 既存の port にそのような改変を行って我々に送るときには, + UID の予約に関する注意書きをつけてください. + + + + 合理的な port + + Makefile + は単純かつ適切であるべきです. もし, + Makefile を数行短かくできたり, + もっと読みやすくできるのであれば, そうしてください. + 例えば, shell の if 構文を使う代りに, + make の .if 構文を使う, + EXTRACT* + の再定義で代用できるのであれば, + do-extract を再定義しない, + CONFIGURE_ARGS += + --prefix=${PREFIX} とするかわりに, + GNU_CONFIGURE とする, などです. + + + + <makevar>CFLAGS</makevar> の尊重 + + CFLAGS 変数は尊重すべきです. その + port がこれを無視するのであれば, + NO_PACKAGE=ignores cflags を + Makefile に加えてください. + + + + コンフィグレーション(設定)ファイル + + もしあなたの port が設定ファイルを + PREFIX/etc + に置く必要がある場合には, それを単純にインストールしたり, + pkg/PLIST + に加えてはいけません. + こうしてしまうと, pkg_delete が + ユーザが苦労して作ったファイルを消してしまったり, 新しく + インストールすると上書きされてしまったりします. + + 代りに, 見本となるファイルを suffix ( + + filename.sample + が良いでしょう) を付けて インストールして, message を表示して, + ソフトウエアを動かす前に, ユーザがそのファイル + をコピーして編集をしなければならないことを知らせましょう. + + + + + Portlint + + 送付や commit をする前に portlint + を使ってチェックしましょう. + + + + フィードバック + + Portを作るためにソフトウェアに変更を加えたら, + なるべく原作者にその旨を伝えてパッチ等を送ってください. + これらが次のリリースに取り入れられれば, + アップグレードが楽になります. + + + + その他諸々 + + pkg/DESCR, + pkg/COMMENT, + pkg/PLIST などのファイルは, + それぞれ2重にチェックしてください. + 再検討してもっと良い記述があれば, + それに置きかえてください. + + GNU General Public License + (GNU一般公有使用許諾)のコピーは + (すでにあるので)コピーしないでください, + おねがいします. + + 法律に関することには, 十分注意をはらってください. + 私達に法律に反するような形でソフトフェアの配布をさせない + でください! + + + + 困ったら.... + + 私たちに質問を送る前に, + 既存のportの例とbsd.port.mkを + ちゃんと読んでください! ;) + + それでもわからないことがあったら, + 一人で悩まないでどんどん 質問してください! :) + + + + + <filename>Makefile</filename> のお手本 + + これはportの Makefile + を作る際のお手本です. かぎかっこ + ([])内のコメントは忘れずに取ってください. + + 変数の順番, 段落の間の空行など, + Makefile を作るときはなるべくこ + の形式にしたがってください. + この形式は重要な情報が簡単に見つけられるように + 設計されています. portlint を使って + Makefile をチェックすることが + 推奨されています. + + +[ヘッダ -- どのようなportのMakefileかすぐにわかるようになっています] +# New ports collection makefile for: xdvi +# Version required: pl18 ["1.5alpha" みたいなのでも結構です] +[この Makefile の最初の版が作成された日付です. この port をアップグ + レードするときには変えないでください.] +# Date created: 26 May 1995 +[このソフトウェアを最初に FreeBSD に port した人の名前, つまり, + この Makefile の最初の版を書いた人です. この port をアップグレー + ドするとき, この行も変えないでください.] +# Whom: Satoshi Asami <asami@FreeBSD.ORG> +# +# $Id$ +[ ^^^^ この部分は, CVS ツリーに入れる時に自動的に RCS の ID 文字列に + 置き換えられます.] +# + +[Port自体, およびオリジナルのソースを取ってくるところを記述する部分. + 最初は必ずDISTNAME, そして必要ならPKGNAME, CATEGORIES, 続いて + MASTER_SITESがおかれ, さらに MASTER_SITE_SUBDIR がおかれることもあり + ます. そのあと, EXTRACT_SUFX か DISTFILES を指定することも可能です] +DISTNAME= xdvi +PKGNAME= xdvi-pl18 +CATEGORIES= print +[MASTER_SITE_* マクロを使用しない場合は, +最後のスラッシュを忘れないように ("/")!] +MASTER_SITES= ${MASTER_SITE_XCONTRIB} +MASTER_SITE_SUBDIR= applications +[ソースファイルが標準の ".tar.gz" 形式でない時にこれを使いましょう] +EXTRACT_SUFX= .tar.Z + +[配布パッチのセクション -- ない場合もあります] +PATCH_SITES= ftp://ftp.sra.co.jp/pub/X11/japanese/ +PATCHFILES= xdvi-18.patch1.gz xdvi-18.patch2.gz + +[保守責任者 -- これは *必ず* 必要です. 担当者 (あなた) 自身, あるいは + 担当者に素早く連絡をとれる人のアドレスを書いてください. どうしてもこ + こに自分のアドレスを書くのがいやな人は "ports@FreeBSD.ORG" と書いて + もいいです] +MAINTAINER= asami@FreeBSD.ORG + +[依存するport -- ない場合もあります] +RUN_DEPENDS= gs:${PORTSDIR}/print/ghostscript +LIB_DEPENDS= Xpm.5:${PORTSDIR}/graphics/xpm + +[ここには標準のbsd.port.mkの変数で, 上のどれにもあてはまらないものを + 書きます] +[コンフィグレーション, コンパイル, インストールなどの時に質問をする + なら...] +IS_INTERACTIVE=yes +[${DISTNAME}以外のディレクトリにソースが展開されるなら...] +WRKSRC= ${WRKDIR}/xdvi-new +[配布されているパッチが ${WRKSRC} に対する相対パスで作られてい + い場合にこの変数の指定が必要かも...] +PATCH_DIST_STRIP= -p1 +[GNU autoconfによって生成された "configure" スクリプトを走らせたいなら...] +GNU_CONFIGURE= yes +[/usr/bin/makeでなく, GNU makeを使わないといけないなら...] +USE_GMAKE= yes +[これがXのアプリケーションで "xmkmf -a" を走らせたいなら...] +USE_IMAKE= yes +[などなど] + +[下の方のルールで使う非標準の変数] +MY_FAVORITE_RESPONSE= "yeah, right" + +[そして, 特別なターゲット, 使用順に] +pre-fetch: + i go fetch something, yeah + +post-patch: + i need to do something after patch, great + +pre-install: + and then some more stuff before installing, wow + +[最後には必ず] +.include <bsd.port.mk> + + + + Packageの名前 + + Package の名前は以下のルールにしたがってつけてください. + こ れは package のディレクトリを見やすくするためで, + 無秩序な名前 + がたくさん並んでいるとユーザが使いづらくなるのでは + という心配か らです. + (FTPサイトなどにはたくさんpackageがありますからね.) + + Packageの名前は以下のようにしてください. + + 言語-名前-オプション + バージョン.番号 + + + DISTNAME + が上記の形式になっていない場合に は, + PKGNAME をそのようにしてください. + + + + FreeBSD + はユーザの慣れ親しんだ言語のサポートに力を入れて います. + 特定の言語のためのportのpackage名には + 言語- に ISO-639 + で定義されている言語名の略称を入れ てください. 例えば, + 日本語なら ja, ロシア語なら + ru, ベト ナム語なら + vi, 中国語なら zh, + 韓国語ならば ko, ドイツ 語なら + de, といった具合です. + + + + 名前 + の部分は原則的にはすべて英小文字 を使います. + 例外はたくさんのプログラムが入っている巨大なport + の場合で, XFree86 (ほんとにあるんですよ) やImageMagickな + どがこれにあたります. そうでない場合には, + 名前の大文字を小文 字に (少なくとも最初の一字だけは) + 変えてください. もし, + 大文字であることが重要な場合(例えば, 1文字の名前, + R とか V)には, + あなたの裁量で大文字を使うのも良いでしょう. Perl 5 + のモジュールでは, 頭に p5- を付け, + 2重コロン (::) + のセパレータをハイフン( - ) + に置きかえるしきたりになっています. 例えば, + Data::Dumper は + p5-Data-Dumper になります. また, その + ソフトウェアの名前として通常使われるものに番号, + ハイフン, あ るいは下線が入っている場合には, + それらを使うことも構いません + (kinput2 など). + + + + コンパイル時に環境変数や make + の引数などで + ハードコードされたデフォルト + を変えてコンパイルできる場合, + -compiled.specifics + にそのコンパイル時のデフォルトを入れてください + (ハイフンはあってもなくてもかまいません). 用紙のサイズ, + あるいはフォントの解像度などがこれにあたります. + + + + バージョン番号は数字とアルファベットからなり, + ピリオド (.) で区切ります. + アルファベットは二文字以上続けてはいけませ ん. + ただ一つの例外は「パッチレベル」を意味する + pl で, それ 以外にバージョン番号が + まったくついていない場合にのみ使うことがで + きます. + + + + では, DISTNAMEを正しい + PKGNAMEに直す例を見てみましょう: + + + + + + DISTNAME + PKGNAME + 理由 + + + + + + mule-2.2.2. + mule-2.2.2 + まったく問題なし + + + + XFree86-3.1.2 + XFree86-3.1.2 + 同上 + + + + EmiClock-1.0.2 + emiclock-1.0.2 + プログラム一つだけの時は小文字のみ + + + + gmod1.4 + gmod-1.4 + + `<名前>' のあとにハイフンが必要 + + + + xmris.4.0.2 + xmris-4.0.2 + 同上 + + + + rdist-1.3alpha + rdist-1.3a + alphaのような文字列は使えない + + + + + es-0.9-beta1 + es-0.9b1 + 同上 + + + + v3.3beta021.src + tiff-3.3 + なんなんでしょう ;) + + + + tvtwm + tvtwm-pl11 + バージョン番号は必ず必要 + + + + piewm + piewm-1.0 + 同上 + + + + xvgr-2.10pl1 + xvgr-2.10.1 + pl + が使えるのは他にバージョン番号がない場合のみ + + + + gawk-2.15.6 + ja-gawk-2.15.6 + 日本語バージョン + + + + psutils-1.13 + psutils-letter-1.13 + コンパイル時に用紙のサイズを指定 + + + + pkfonts + pkfonts300-1.0 + 300dpiフォント用のpackage + + + + + + オリジナルのソースにまったくバージョン情報が見当たらず, + また原作 + 者が新しいバージョンをリリースする可能性が低いときには, + バージョ ン番号として 1.0 + を使えばいいでしょう (上記のpiewmの例がこ れにあたります). + そうでない場合には, 原作者に聞くか, 日付 + ( + 年. + .) + を使うなどしてください. + + + + カテゴリ + + すでに御存知のように, ports はいくつかのカテゴリに + 分類されています. これを有効に利用するためには, port を + 行う人々とユーザが, そろぞれのカテゴリが何であるか, + どのようにしてカテゴリに分類するかを理解する必要が + あります. + + + 現在のカテゴリのリスト + + まず, これが現在の port のカテゴリーのリストです. + アスタリスク(*) が付いているものは, + バーチャル(virtual) カテゴリです -- + これらには対応するサブディレクトリが port + ツリーにはありません. + + + + バーチャルカテゴリでないものは, + そのサブディレクトリ内の pkg/COMMENT + に1行の記述があります + (例, archivers/pkg/COMMENT). + + + + + + + Category + Description + + + + + + afterstep* + Ports to support AfterStep window manager + + + + archivers + Archiving tools. + + + + astro + Astronomical ports. + + + + audio + Sound support. + + + + benchmarks + Benchmarking utilities. + + + + biology + Biology-related software. + + + + cad + Computer aided design tools. + + + + chinese + Chinese language support. + + + + comms + Communication software. Mostly software to talk to + your serial port. + + + + converters + Character code converters. + + + + databases + Databases. + + + + deskutils + Things that used to be on the desktop before + computers were invented. + + + + devel + Development utilities. Do not put libraries here just + because they are libraries—unless they truly don't + belong to anywhere else, they shouldn't be in this + category. + + + + editors + General editors. Specialized editors go in the + section for those tools (e.g., a mathematical-formula + editor will go in math). + + + + elisp + Emacs-lisp ports. + + + + emulators + Emulators for other operating systems. Terminal + emulators do not belong + here—X-based ones should go to + x11 and text-based ones to either + comms or misc, + depending on the exact functionality. + + + + games + Games. + + + + german + German language support. + + + + graphics + Graphics utilities. + + + + japanese + Japanese language support. + + + + kde* + Ports that form the K Desktop Environment + (kde). + + + + korean + Korean language support. + + + + lang + Programming languages. + + + + mail + Mail software. + + + + math + Numerical computation software and other utilities + for mathematics. + + + + mbone + MBone applications. + + + + misc + Miscellaneous utilities—basically things that + doesn't belong to anywhere else. This is the only category + that should not appear with any other non-virtual + category. If you have misc with + something else in your CATEGORIES line, + that means you can safely delete misc + and just put the port in that other subdirectory! + + + + net + Miscellaneous networking software. + + + + news + USENET news software. + + + + offix* + Ports from the OffiX suite. + + + + palm + Software support for the 3Com Palm(tm) series. + + + + perl5* + Ports that require perl version 5 to run. + + + + plan9* + Various programs from Plan9. + + + + print + Printing software. Desktop publishing tools + (previewers, etc.) belong here too. + + + + python* + Software written in python. + + + + russian + Russian language support. + + + + security + Security utilities. + + + + shells + Command line shells. + + + + sysutils + System utilities. + + + + tcl75* + Ports that use tcl version 7.5 to run. + + + + tcl76* + Ports that use tcl version 7.6 to run. + + + + tcl80* + Ports that use tcl version 8.0 to run. + + + + tcl81* + Ports that use tcl version 8.1 to run. + + + + textproc + Text processing utilities. It does not include + desktop publishing tools, which go to print/. + + + + tk41* + Ports that use tk version 4.1 to run. + + + + tk42* + Ports that use tk version 4.2 to run. + + + + tk80* + Ports that use tk version 8.0 to run. + + + + tk81* + Ports that use tk version 8.1 to run. + + + + vietnamese + Vietnamese language support. + + + + windowmaker* + Ports to support the WindowMaker window + manager + + + + www + Software related to the World Wide Web. HTML language + support belong here too. + + + + x11 + The X window system and friends. This category is + only for software that directly support the window system. + Do not put regular X applications here. If your port is + an X application, define USE_XLIB + (implied by USE_IMAKE) and put it in + appropriate categories. Also, many of them go into other + x11-* categories (see below). + + + + x11-clocks + X11 clocks. + + + + x11-fm + X11 file managers. + + + + x11-fonts + X11 fonts and font utilities. + + + + x11-toolkits + X11 toolkits. + + + + x11-wm + X11 window managers. + + + + + + + + 適切なカテゴリの選択 + + 多くのカテゴリに重なるので, どれを '第一' + カテゴリにするかを決めなければならないことが + たびたびあるでしょう. これを + うまく決めるルールがいくつかあります. + 以下はその優先順のリストで, 優先度の高いものから + 低いものの順に書いてあります. + + + + 言語特有のカテゴリがまず最初です. + 例えば日本語の X11 のフォントをインストールする + port の場合, CATEGORIES 行は + japanese x11-fonts となるでしょう. + + + + + より特徴的なカテゴリが, 一般的なカテゴリより + 優先されます. 例えば, HTML エディタの場合は + www editors となり, + 逆順にはしないでください. また, port が + mail, mbone, + news, security, + www のいづれかに属するとには, + net は必要ありません. + + + + x11 を第2カテゴリにするのは, + 第1カテゴリが自然言語の場合のみにしてください. 特に X + のアプリケーションには x11 + を指定しないでください. + + + + もし, あなたの port が他のどのカテゴリにも + 属しないばあいには, misc + にしてください. + + + + もし, あなたがカテゴリについて自信が持てない場合には, + そのことを send-pr するときに + 書き加えてください. そうすれば import するまえに + それについて議論できます. (もしあなたが commiter であれば, + そのことを &a.ports に送って, 先に議論 + するようにしてください — 新しい port + が間違ったカテゴリに import されて, + すぐ移動されることが多いので.) + + + + + このドキュメントと ports システムの変更 + + もしあなたが, たくさんの ports の保守を + しているのであれば, &a.ports メーリングリストの内容を + フォロウすることを考えてください. Ports + のしくみについての重要な変更点はここに アナウンスされます. + 最新の変更点については, いつでも, + the bsd.port.mk CVS log + で詳細な情報を得ることができます. + + + + + やっとおしまい! + + いやはや, 長い文章ですみません. + ここまで読んでくださった方に は感謝, 感謝でございます. (_ _) + + さあ, portの作り方がわかったところで, + 世界中のソフトウェア をport化しましょう. + FreeBSDプロジェクトに貢献するには, それ + がもっとも簡単な方法です! :) + + + + + 金銭, ハードウェアまたはインターネットアクセス + + FreeBSD プロジェクトの目的を進めるための寄付や, + 私たちと同じような ボランティアの細く長い ! 努力を, + 私たちは常に喜んで受け入れています. + また一般的に私たちは自分達で + 周辺機器を買う資金が不足しているため, + 周辺機器のサポートを充実させるのに + ハードウェアの寄付はとても重要です. + + + 資金の寄付 + + FreeBSD プロジェクトは501(C3) (非営利) 企業ではないため, + いかなる寄 + 付に対しても特別な税金の優遇措置を提供することができません. + このような 寄付はプロジェクトを代表して FreeBSD, Inc + により感謝をもって受け入れら れるでしょう. + + FreeBSD, Inc.は FreeBSD + プロジェクトの推進とプロジェクトに企業とし + ての最小限の体裁を持たせることを目的として, 1995年の初めに + &a.jkh; と &a.dg; により設立されました. + 寄付されたすべての資金は (最終的に FreeBSD, + Inc.によりもたらされるであろうすべての利益も同様に) + プロジェク + トの目標を推進するためだけに使われるでしょう. + + 支払い先を FreeBSD, Inc. とした小切手を, + 次の住所気付けで送ってください: + +
+ FreeBSD, Inc. + c/o Jordan Hubbard + 4041 Pike Lane, Suite F + Concord + CA, 94520 +
+ + [現在 私書箱が開設されるまで一時的に Walnut Creek CDROM + の住所を使用] + + 電信振替は次の所まで直接送れるでしょう: + +
+ Bank Of America + Concord Main Office + P.O. Box 37176 + San Francisco + CA, 94137-5176 + + Routing #: 121-000-358 + Account #: 01411-07441 (FreeBSD, Inc.) +
+ + 寄付に関することは全て電子メールもしくは上記 FreeBSD, + Inc. の住所宛の郵政省メールにて Jordan Hubbard + jkh@FreeBSD.org + までお送りくださるようお願いします. + + もし 寄贈者ギャラリー + の節で匿名を希望される 方は, 寄付の際にその旨お伝えください. + Thanks! +
+ + + ハードウェアの寄贈 + + FreeBSD プロジェクトは, + 次の3つのカテゴリのどんなハードウェアの寄贈 も, + 喜んで受け付けます: + + + + ディスクドライブ, + メモリまたは完全なシステムといった一般用途のハー + ドウェアは, 資金の寄付の節にある + FreeBSD, Inc. の住所まで送っ てください. + + + + 進行中の受け入れテストのための + ハードウェアが必要とされていま す. + 新たなリリース毎に適切な逆行テストができるように, + 私たちは現在, FreeBSD + がサポートするすべてのコンポーネントの + テストラボを設置しよう としています. 私たちにはまだ, + たくさんの重要な部品 (ネットワークカード, + マザーボードなど) が不足していますので, + このような寄贈をしたいと思って いるならば, &a.dg; + へコンタクトしてどの部品がまだ必要とされているか + の情報を得てください. + + + + 現在 FreeBSD にサポートされていないハードウェアで, + サポートに追 加して欲しいもの. + 私たちが新しいハードウェアを受けとる前にそのタスクを + 引き受けてくれる開発者を探す必要があるため, + その部品を送る前に &a.core; + にコンタクトを取ってください. + + + + + + インターネットアクセスの寄付 + + 私たちは常に FTP, WWW や cvsup + の新しいミラーサイトを募集しています. + ミラーサイトになりたい場合には the FreeBSD project + administrators admin@FreeBSD.ORG + にコンタクトを取って, 詳し + い情報を手に入れてください. + +
+
+ + + 寄贈者ギャラリー + + FreeBSD プロジェクトは次の寄贈者に恩義を受けており, + ここに公表して 感謝の意を表したいと思います. + + + + + セントラルサーバプロジェクトへの寄贈者: + + 次に挙げる個人および企業からは, + セントラルサーバマシンのための 部品の寄贈を頂いており, + それによって freefall.freebsd.org + をリプレースして新たに FreeBSD + プロジェクトのセントラルサーバマシンを + 構築することができました: + + + + Ade Barkah mbarkah@freebsd.org + と彼の所属する Hemisphere Online + は, Pentium Pro (P6) 200Mhz CPU + を寄贈してくださいました. + + + + ASA + Computers は, Tyan 1662 + マザーボード + を寄贈してくださいました. + + + + ViaNet + Communications の Joe McGuckin + joe@via.net は, Kingston + イーサネットコントローラ + を寄贈してくださいました. + + + + Jack O'Neill + jack@diamond.xtalwind.net は, + NCR 53C875 SCSI コントローラカード + を寄贈してくださいました. + + + + Alameda + Networks の Ulf Zimmermann + ulf@Alameda.net は, 128MB + のメモリ, そして 4 GB + のディスクドライブと匡体 + を寄贈してくださいました. + + + + + + 直接的な資金提供: + + 次に挙げる個人および企業からは FreeBSD + プロジェクトに対する直接的な + 資金提供を頂いております: + + + + Annelise Anderson + ANDRSN@HOOVER.STANFORD.EDU + + + + Matt Dillon dillon@best.net + + + + + Epilogue Technology Corporation + + + + Sean Eric Fagan + + + + Don Scott Wilde + + + + Gianmarco Giovannelli + gmarco@masternet.it + + + + Josef C. Grosch joeg@truenorth.org + + + + Robert T. Morris + + + + Chuck Robey chuckr@freebsd.org + + + + + Imaginary Landscape, LLC. + の Kenneth P. Stox + ken@stox.sa.enteract.com + + + + Dmitry S. Kohmanyuk dk@dog.farm.org + + + + 日本の + Laser5 + はいくつかの FreeBSD CD の販売利益の一部を + 寄付してくれました. + + + + + 蕗出版 は, はじめての FreeBSD + の売り上げの一部を FreeBSD プロジェクト及び + XFree86 プロジェクトへ寄付してくれました. + + + + アスキー + は FreeBSD 関連の書籍の売り上げの一部を FreeBSD + プロジェクト及び FreeBSD 友の会へ寄付してくれました. + + + + + + 横河電機株式会社 からは FreeBSD + プロジェクトへ多大な寄付をいただきました. + + + + BuffNET + + + + Pacific + Solutions + + + + + + ハードウェアの寄贈者: + + 次に挙げる個人および企業からは, + テストやデバイスドライバの開発 / サポート + のためのハードウェアの寄贈を頂いております: + + + + Walnut Creek CDROM は, + ネットワークへのアクセスおよび + 他のハードウェアリソースの寄贈はいうまでもなく, + 開発に使うための Pentium P5-90 と 486/DX2-66 EISA/VL + のシステム数台を 提供してくださいました. + + + + TRW Financial Sysytems社は, PC 130台, 68 GB + のファイルサーバ 3台, 12のイーサネット, + ディスクレスコードのデバッグをおこなうための ルータ + 2台及び ATM スイッチを提供してくださいました. また, + 彼らは 2, 3人の FreeBSD ハッカーを雇って, FreeBSD + に専念させて くださっております. + ありがとうございます! + + + + Dermot McDonnell は, 東芝 XM3401B CD-ROM ドライブを + 寄贈してくださいました. その CD-ROM ドライブは現在 + freefall で使用されています. + + + + &a.chuck; は, 実験用のフロッピーテープストリーマを + 寄付してくださいました. + + + + Larry Altneu larry@ALR.COM と + &a.wilko;は, wt + ドライバを改良するために Wangtek と Archive の QIC-02 + テープドライブを提供してくださいました. + + + + Ernst Winter ewinter@lobo.muc.de は, + このプロジェクトへ 2.88 MB + のフロッピードライブを提供してくださいました. + うまくいけば, + これでフロッピーディスクドライバを書き直すための + プレッシャーが増えるでしょう. ;-) + + + + Tekram + Technologies は NCR ドライバや AMD + ドライバと自社のカードの逆行テストのため FAST/ULTRA + SCSI ホストアダプタ DC-390, DC-390U, DC-390F を + 各1枚提供してくださいました. また, フリーな OS + のためのドライバの ソースを自社の FTP サーバ + ftp://ftp.tekram.com/scsi/FreeBSD + で公開されていることも 称賛に値するでしょう. + + + + Larry M. Augustin lma@varesearch.com + は Symbios Sym8751S SCSI + カードを寄贈してくださっただけでなく, Ultra-2 や LVD + をサポートする次期チップ Sym53c895 のものを含む + データブックのセットと, 最新の Symbios SCSI + チップが持つ先進的機能を 安全に使う方法について書かれた + 最新のプログラミングマニュアルも 寄贈してくださいました. + 本当にありがとうございます ! + + + + Christoph Kukulies kuku@freebsd.org + は, IDE CD-ROM ドライバ開発用の FX120 12 倍速 Mitsumi + CD-ROM ドライブ を提供してくださいました. + + + + + + 特筆すべき寄贈者: + + + + Walnut Creek + CDROM は, + 言い表せないほど多くの寄付をしてくださいました (詳細は + FreeBSD 小史を参照). + 特に, 私たちのもともとのプライマリ開発マシンである + freefall.FreeBSD.ORG, + テストおよびビルドマシンである thud.FreeBSD.ORG + で使用しているハードウェアに対し 感謝したいと思います. + また彼らには, 数年にわたる色々な貢献者への資金提供や, + インターネット への T1 + コネクションの無制限使用を提供して + 頂いた恩義があります. + + + + interface + business GmbH, Dresden は, &a.joerg; + を根気よく サポートしてくださいました. 彼は本職より + FreeBSD の仕事を好みがちであり, 彼個人の接続があまりに + 遅くなったり途切れたりして仕事にならない時は必ず + interface business の (非常に高価な) EUnet + インターネット接続に頼ったものです... + + + + Berkeley Software + Design, Inc. は, 同社の DOS + エミュレータのコードを BSD コミュ + ニティ全体に対して提供してくれました. このコードは, + dosemu + コマンドに利用されています. + + + + + + + + コアチームの卒業生 + + 次に挙げる人々は()で記した期間, FreeBSD + コアチームのメンバーでした. FreeBSD + プロジェクトにおける彼らの努力に感謝の意を表します. + + + だいたいの年代順: + + + + Guido van Rooij (1995 - 1999) + + + + John Dyson (1993 - 1998) + + + + Nate Williams (1992 - 1996) + + + + Rod Grimes (1992 - 1995) + + + + Andreas Schulz (1992 - 1995) + + + + Geoff Rehmet (1993 - 1995) + + + + Paul Richards (1992 - 1995) + + + + Scott Mace (1993 - 1994) + + + + Andrew Moore (1993 - 1994) + + + + Christoph Robitschko (1993 - 1994) + + + + J. T. Conklin (1992 - 1993) + + + + + + BSD派生ソフトウェアへのコントリビュータ + + このソフトウェアは最初は William F. Jolitz の 386BSD release + 0.1 から派生しましたが, オリジナルの 386BSD + に固有のコードはほとんど 残っていません. + このソフトウェアは基本的にはカリフォルニア大学 バークレイ校の + Computer Science Research Group (CSRG) とその共同研究者 + たちによる 4.4BSD-Lite リリースから再実装されました. + + また, NetBSD や OpenBSD の一部も FreeBSD + に取り込まれています. したがって私たちは NetBSD と OpenBSD + へ貢献した人々すべてに感謝します. + + + + その他の FreeBSD へのコントリビュータ + + (名前でアルファベット順に): + + + + + + + + ABURAYA Ryushirou rewsirow@ff.iij4u.or.jp + + + + AMAGAI Yoshiji amagai@nue.org + + + + Aaron Bornstein aaronb@j51.com + + + + Aaron Smith aaron@tau.veritas.com + + + + Achim Patzner ap@noses.com + + + + Ada T Lim ada@bsd.org + + + + Adam Baran badam@mw.mil.pl + + + + Adam Glass glass@postgres.berkeley.edu + + + + Adam McDougall mcdouga9@egr.msu.edu + + + + Adrian Colley aecolley@ois.ie + + + + Adrian Hall adrian@ibmpcug.co.uk + + + + Adrian Mariano adrian@cam.cornell.edu + + + + Adrian Steinmann ast@marabu.ch + + + + Adrian T. Filipi-Martin + atf3r@agate.cs.virginia.edu + + + + Ajit Thyagarajan unknown + + + + Akio Morita + amorita@meadow.scphys.kyoto-u.ac.jp + + + + Akira SAWADA unknown + + + + Akira Watanabe + akira@myaw.ei.meisei-u.ac.jp + + + + Akito Fujita fujita@zoo.ncl.omron.co.jp + + + + Alain Kalker + A.C.P.M.Kalker@student.utwente.nl + + + + Alan Bawden alan@curry.epilogue.com + + + + Alan Cox alc@cs.rice.edu + + + + Alec Wolman wolman@cs.washington.edu + + + + Aled Morris aledm@routers.co.uk + + + + Alex garbanzo@hooked.net + + + + Alex D. Chen + dhchen@Canvas.dorm7.nccu.edu.tw + + + + Alex G. Bulushev bag@demos.su + + + + Alex Le Heux alexlh@funk.org + + + + Alexander B. Povolotsky tarkhil@mgt.msk.ru + + + + Alexander Leidinger + netchild@wurzelausix.CS.Uni-SB.DE + + + + Alexandre Snarskii snar@paranoia.ru + + + + Alistair G. Crooks agc@uts.amdahl.com + + + + Allan Saddi asaddi@philosophysw.com + + + + Allen Campbell allenc@verinet.com + + + + Amakawa Shuhei amakawa@hoh.t.u-tokyo.ac.jp + + + + Amancio Hasty hasty@star-gate.com + + + + Amir Farah amir@comtrol.com + + + + Amy Baron amee@beer.org + + + + Anatoly A. Orehovsky tolik@mpeks.tomsk.su + + + + Anatoly Vorobey mellon@pobox.com + + + + Anders Nordby nickerne@nome.no + + + + Anders Thulin Anders.X.Thulin@telia.se + + + + Andras Olah olah@cs.utwente.nl + + + + Andre Albsmeier + Andre.Albsmeier@mchp.siemens.de + + + + Andre Oppermann andre@pipeline.ch + + + + Andreas Haakh ah@alman.robin.de + + + + Andreas Kohout shanee@rabbit.augusta.de + + + + Andreas Lohr andreas@marvin.RoBIN.de + + + + Andreas Schulz unknown + + + + Andreas Wetzel mickey@deadline.snafu.de + + + + Andreas Wrede andreas@planix.com + + + + Andres Vega Garcia unknown + + + + Andrew Atrens atreand@statcan.ca + + + + Andrew Gillham gillham@andrews.edu + + + + Andrew Gordon andrew.gordon@net-tel.co.uk + + + + Andrew Herbert andrew@werple.apana.org.au + + + + Andrew J. Korty ajk@purdue.edu + + + + Andrew L. Moore alm@mclink.com + + + + Andrew McRae amcrae@cisco.com + + + + Andrew Stevenson andrew@ugh.net.au + + + + Andrew Timonin tim@pool1.convey.ru + + + + Andrew V. Stesin stesin@elvisti.kiev.ua + + + + Andrew Webster awebster@dataradio.com + + + + Andrey Zakhvatov andy@icc.surw.chel.su + + + + Andy Farkas andyf@speednet.com.au + + + + Andy Valencia ajv@csd.mot.com + + + + Andy Whitcroft andy@sarc.city.ac.uk + + + + Angelo Turetta ATuretta@stylo.it + + + + Anthony C. Chavez magus@xmission.com + + + + Anthony Yee-Hang Chan yeehang@netcom.com + + + + Anton Berezin tobez@plab.ku.dk + + + + Antti Kaipila anttik@iki.fi + + + + Are Bryne are.bryne@communique.no + + + + Ari Suutari ari@suutari.iki.fi + + + + Arjan de Vet devet@IAEhv.nl + + + + Arne Henrik Juul arnej@Lise.Unit.NO + + + + Assar Westerlund assar@sics.se + + + + Atsushi Furuta furuta@sra.co.jp + + + + Atsushi Murai amurai@spec.co.jp + + + + Bakul Shah bvs@bitblocks.com + + + + Barry Bierbauch pivrnec@vszbr.cz + + + + Barry Lustig barry@ictv.com + + + + Ben Hutchinson benhutch@xfiles.org.uk + + + + Ben Jackson unknown + + + + Ben Smithurst ben@scientia.demon.co.uk + + + + Ben Walter bwalter@itachi.swcp.com + + + + Benjamin Lewis bhlewis@gte.net + + + + Bernd Rosauer br@schiele-ct.de + + + + Bill Kish kish@osf.org + + + + Bill Trost trost@cloud.rain.com + + + + Blaz Zupan blaz@amis.net + + + + Bob Van Valzah Bob@whitebarn.com + + + + Bob Willcox bob@luke.pmr.com + + + + Boris Staeblow balu@dva.in-berlin.de + + + + Boyd R. Faulkner faulkner@asgard.bga.com + + + + Brad Karp karp@eecs.harvard.edu + + + + Bradley Dunn bradley@dunn.org + + + + Brandon Gillespie brandon@roguetrader.com + + + + &a.wlloyd + + + + Bob Wilcox bob@obiwan.uucp + + + + Boyd Faulkner faulkner@mpd.tandem.com + + + + Brent J. Nordquist bjn@visi.com + + + + Brett Lymn blymn@mulga.awadi.com.AU + + + + Brett Taylor + brett@peloton.physics.montana.edu + + + + Brian Campbell brianc@pobox.com + + + + Brian Clapper bmc@willscreek.com + + + + Brian Cully shmit@kublai.com + + + + Brian F. Feldman green@unixhelp.org + + + + Brian Handy + handy@lambic.space.lockheed.com + + + + Brian Litzinger brian@MediaCity.com + + + + Brian McGovern bmcgover@cisco.com + + + + Brian Moore ziff@houdini.eecs.umich.edu + + + + Brian R. Haug haug@conterra.com + + + + Brian Tao taob@risc.org + + + + Brion Moss brion@queeg.com + + + + Bruce A. Mah bmah@ca.sandia.gov + + + + Bruce Albrecht bruce@zuhause.mn.org + + + + Bruce Gingery bgingery@gtcs.com + + + + Bruce J. Keeler loodvrij@gridpoint.com + + + + Bruce Murphy packrat@iinet.net.au + + + + Bruce Walter walter@fortean.com + + + + Carey Jones mcj@acquiesce.org + + + + Carl Fongheiser cmf@netins.net + + + + Carl Mascott cmascott@world.std.com + + + + Casper casper@acc.am + + + + Castor Fu castor@geocast.com + + + + Cejka Rudolf cejkar@dcse.fee.vutbr.cz + + + + Chain Lee chain@110.net + + + + Charles Hannum mycroft@ai.mit.edu + + + + Charles Henrich henrich@msu.edu + + + + Charles Mott cmott@srv.net + + + + Charles Owens owensc@enc.edu + + + + Chet Ramey chet@odin.INS.CWRU.Edu + + + + Chia-liang Kao clkao@CirX.ORG + + + + Chiharu Shibata chi@bd.mbn.or.jp + + + + Chip Norkus unknown + + + + Choi Jun Ho junker@jazz.snu.ac.kr + + + + Chris Csanady cc@tarsier.ca.sandia.gov + + + + Chris Dabrowski chris@vader.org + + + + Chris Dillon cdillon@wolves.k12.mo.us + + + + Chris Piazza cpiazza@home.net + + + + Chris Shenton + cshenton@angst.it.hq.nasa.gov + + + + Chris Stenton jacs@gnome.co.uk + + + + Chris Timmons skynyrd@opus.cts.cwu.edu + + + + Chris Torek torek@ee.lbl.gov + + + + Christian Gusenbauer + cg@fimp01.fim.uni-linz.ac.at + + + + Christian Haury Christian.Haury@sagem.fr + + + + Christian Weisgerber + naddy@bigeye.rhein-neckar.de + + + + Christoph P. Kukulies kuku@FreeBSD.org + + + + Christoph Robitschko + chmr@edvz.tu-graz.ac.at + + + + Christoph Weber-Fahr + wefa@callcenter.systemhaus.net + + + + Christopher G. Demetriou + cgd@postgres.berkeley.edu + + + + Christopher T. Johnson + cjohnson@neunacht.netgsi.com + + + + Chrisy Luke chrisy@flix.net + + + + Chuck Hein chein@cisco.com + + + + Clive Lin clive@CiRX.ORG + + + + Colman Reilly careilly@tcd.ie + + + + Conrad Sabatier conrads@neosoft.com + + + + Coranth Gryphon gryphon@healer.com + + + + Cornelis van der Laan + nils@guru.ims.uni-stuttgart.de + + + + Cove Schneider cove@brazil.nbn.com + + + + Craig Leres leres@ee.lbl.gov + + + + Craig Loomis unknown + + + + Craig Metz cmetz@inner.net + + + + Craig Spannring cts@internetcds.com + + + + Craig Struble cstruble@vt.edu + + + + Cristian Ferretti cfs@riemann.mat.puc.cl + + + + Curt Mayer curt@toad.com + + + + Cy Schubert cschuber@uumail.gov.bc.ca + + + + DI. Christian Gusenbauer + cg@scotty.edvz.uni-linz.ac.at + + + + Dai Ishijima ishijima@tri.pref.osaka.jp + + + + Damian Hamill damian@cablenet.net + + + + Dan Cross tenser@spitfire.ecsel.psu.edu + + + + Dan Lukes dan@obluda.cz + + + + Dan Nelson dnelson@emsphone.com + + + + Dan Walters hannibal@cyberstation.net + + + + Daniel Baker dbaker@crash.ops.neosoft.com + + + + Daniel M. Eischen + deischen@iworks.InterWorks.org + + + + Daniel O'Connor doconnor@gsoft.com.au + + + + Daniel Poirot poirot@aio.jsc.nasa.gov + + + + Daniel Rock rock@cs.uni-sb.de + + + + Danny Egen unknown + + + + Danny J. Zerkel dzerkel@phofarm.com + + + + Darren Reed avalon@coombs.anu.edu.au + + + + Dave Adkins adkin003@tc.umn.edu + + + + Dave Andersen angio@aros.net + + + + Dave Blizzard dblizzar@sprynet.com + + + + Dave Bodenstab imdave@synet.net + + + + Dave Burgess burgess@hrd769.brooks.af.mil + + + + Dave Chapeskie dchapes@ddm.on.ca + + + + Dave Cornejo dave@dogwood.com + + + + Dave Edmondson davided@sco.com + + + + Dave Glowacki dglo@ssec.wisc.edu + + + + Dave Marquardt marquard@austin.ibm.com + + + + Dave Tweten tweten@FreeBSD.org + + + + David A. Adkins adkin003@tc.umn.edu + + + + David A. Bader dbader@umiacs.umd.edu + + + + David Borman dab@bsdi.com + + + + David Dawes dawes@XFree86.org + + + + David Filo filo@yahoo.com + + + + David Holland dholland@eecs.harvard.edu + + + + David Holloway daveh@gwythaint.tamis.com + + + + David Horwitt dhorwitt@ucsd.edu + + + + David Hovemeyer daveho@infocom.com + + + + David Jones dej@qpoint.torfree.net + + + + David Kelly dkelly@tomcat1.tbe.com + + + + David Kulp dkulp@neomorphic.com + + + + David L. Nugent davidn@blaze.net.au + + + + David Leonard d@scry.dstc.edu.au + + + + David Malone dwmalone@maths.tcd.ie + + + + David Muir Sharnoff muir@idiom.com + + + + David S. Miller davem@jenolan.rutgers.edu + + + + David Wolfskill dhw@whistle.com + + + + Dean Gaudet dgaudet@arctic.org + + + + Dean Huxley dean@fsa.ca + + + + Denis Fortin unknown + + + + Dennis Glatting + dennis.glatting@software-munitions.com + + + + Denton Gentry denny1@home.com + + + + Derek Inksetter derek@saidev.com + + + + Dima Sivachenko dima@Chg.RU + + + + Dirk Keunecke dk@panda.rhein-main.de + + + + Dirk Nehrling nerle@pdv.de + + + + Dmitry Khrustalev dima@xyzzy.machaon.ru + + + + Dmitry Kohmanyuk dk@farm.org + + + + Dom Mitchell dom@myrddin.demon.co.uk + + + + Don Croyle croyle@gelemna.ft-wayne.in.us + + + + &a.whiteside; + + + + Don Morrison dmorrisn@u.washington.edu + + + + Don Yuniskis dgy@rtd.com + + + + Donald Maddox dmaddox@conterra.com + + + + Doug Barton studded@dal.net + + + + Douglas Ambrisko ambrisko@whistle.com + + + + Douglas Carmichael dcarmich@mcs.com + + + + Douglas Crosher dtc@scrooge.ee.swin.oz.au + + + + Drew Derbyshire ahd@kew.com + + + + Duncan Barclay dmlb@ragnet.demon.co.uk + + + + Dustin Sallings dustin@spy.net + + + + Eckart "Isegrim" Hofmann + Isegrim@Wunder-Nett.org + + + + Ed Gold + vegold01@starbase.spd.louisville.edu + + + + Ed Hudson elh@p5.spnet.com + + + + Edward Wang edward@edcom.com + + + + Edwin Groothus edwin@nwm.wan.philips.com + + + + Eiji-usagi-MATSUmoto usagi@clave.gr.jp + + + + ELISA Font Project + + + + Elmar Bartel + bartel@informatik.tu-muenchen.de + + + + Eric A. Griff eagriff@global2000.net + + + + Eric Blood eblood@cs.unr.edu + + + + Eric J. Haug ejh@slustl.slu.edu + + + + Eric J. Schwertfeger eric@cybernut.com + + + + Eric L. Hernes erich@lodgenet.com + + + + Eric P. Scott eps@sirius.com + + + + Eric Sprinkle eric@ennovatenetworks.com + + + + Erich Stefan Boleyn erich@uruk.org + + + + Erik E. Rantapaa rantapaa@math.umn.edu + + + + Erik H. Moe ehm@cris.com + + + + Ernst Winter ewinter@lobo.muc.de + + + + Eugene M. Kim astralblue@usa.net + + + + Eugene Radchenko genie@qsar.chem.msu.su + + + + Evan Champion evanc@synapse.net + + + + Faried Nawaz fn@Hungry.COM + + + + Flemming Jacobsen fj@tfs.com + + + + Fong-Ching Liaw fong@juniper.net + + + + Francis M J Hsieh mjshieh@life.nthu.edu.tw + + + + Frank Bartels knarf@camelot.de + + + + Frank Chen Hsiung Chan + frankch@waru.life.nthu.edu.tw + + + + Frank Durda IV uhclem@nemesis.lonestar.org + + + + Frank MacLachlan fpm@n2.net + + + + Frank Nobis fn@Radio-do.de + + + + Frank Volf volf@oasis.IAEhv.nl + + + + Frank ten Wolde franky@pinewood.nl + + + + Frank van der Linden frank@fwi.uva.nl + + + + Fred Cawthorne fcawth@jjarray.umn.edu + + + + Fred Gilham gilham@csl.sri.com + + + + Fred Templin templin@erg.sri.com + + + + Frederick Earl Gray fgray@rice.edu + + + + FUJIMOTO Kensaku + fujimoto@oscar.elec.waseda.ac.jp + + + + FUJISHIMA Satsuki k5@respo.or.jp + + + + FURUSAWA Kazuhisa + furusawa@com.cs.osakafu-u.ac.jp + + + + Gabor Kincses gabor@acm.org + + + + Gabor Zahemszky zgabor@CoDe.hu + + + + Garance A Drosehn gad@eclipse.its.rpi.edu + + + + Gareth McCaughan gjm11@dpmms.cam.ac.uk + + + + Gary A. Browning gab10@griffcd.amdahl.com + + + + Gary Howland gary@hotlava.com + + + + Gary J. garyj@rks32.pcs.dec.com + + + + Gary Kline kline@thought.org + + + + Gaspar Chilingarov nightmar@lemming.acc.am + + + + Gea-Suan Lin gsl@tpts4.seed.net.tw + + + + Geoff Rehmet csgr@alpha.ru.ac.za + + + + Georg Wagner georg.wagner@ubs.com + + + + Gerard Roudier groudier@club-internet.fr + + + + Gianmarco Giovannelli + gmarco@giovannelli.it + + + + Gil Kloepfer Jr. gil@limbic.ssdl.com + + + + Gilad Rom rom_glsa@ein-hashofet.co.il + + + + Ginga Kawaguti + ginga@amalthea.phys.s.u-tokyo.ac.jp + + + + Giles Lean giles@nemeton.com.au + + + + Glen Foster gfoster@gfoster.com + + + + Glenn Johnson gljohns@bellsouth.net + + + + Godmar Back gback@facility.cs.utah.edu + + + + Goran Hammarback goran@astro.uu.se + + + + Gord Matzigkeit gord@enci.ucalgary.ca + + + + Graham Wheeler gram@cdsec.com + + + + Greg A. Woods woods@zeus.leitch.com + + + + Greg Ansley gja@ansley.com + + + + Greg Troxel gdt@ir.bbn.com + + + + Greg Ungerer gerg@stallion.oz.au + + + + Gregory Bond gnb@itga.com.au + + + + Gregory D. Moncreaff + moncrg@bt340707.res.ray.com + + + + Guy Harris guy@netapp.com + + + + Guy Helmer ghelmer@cs.iastate.edu + + + + HAMADA Naoki hamada@astec.co.jp + + + + HONDA Yasuhiro + honda@kashio.info.mie-u.ac.jp + + + + HOSOBUCHI Noriyuki hoso@buchi.tama.or.jp + + + + Hannu Savolainen hannu@voxware.pp.fi + + + + Hans Huebner hans@artcom.de + + + + Hans Petter Bieker zerium@webindex.no + + + + Hans Zuidam hans@brandinnovators.com + + + + Harlan Stenn Harlan.Stenn@pfcs.com + + + + Harold Barker hbarker@dsms.com + + + + Havard Eidnes + Havard.Eidnes@runit.sintef.no + + + + Heikki Suonsivu hsu@cs.hut.fi + + + + Heiko W. Rupp unknown + + + + Helmut F. Wirth hfwirth@ping.at + + + + Henrik Vestergaard Draboel + hvd@terry.ping.dk + + + + Herb Peyerl hpeyerl@NetBSD.org + + + + Hideaki Ohmon ohmon@tom.sfc.keio.ac.jp + + + + Hidekazu Kuroki hidekazu@cs.titech.ac.jp + + + + Hideki Yamamoto hyama@acm.org + + + + Hidetoshi Shimokawa + simokawa@sat.t.u-tokyo.ac.jp + + + + Hideyuki Suzuki + hideyuki@sat.t.u-tokyo.ac.jp + + + + Hirayama Issei iss@mail.wbs.ne.jp + + + + Hiroaki Sakai sakai@miya.ee.kagu.sut.ac.jp + + + + Hiroharu Tamaru tamaru@ap.t.u-tokyo.ac.jp + + + + Hironori Ikura hikura@kaisei.org + + + + Hiroshi Nishikawa nis@pluto.dti.ne.jp + + + + Hiroya Tsubakimoto unknown + + + + Hiroyuki NAKAJI + nakaji@zeisei3.dpri.kyoto-u.ac.jp + + + + Holger Veit Holger.Veit@gmd.de + + + + Holm Tiffe holm@geophysik.tu-freiberg.de + + + + Horance Chou + horance@freedom.ie.cycu.edu.tw + + + + Horihiro Kumagaio kuma@jp.freebsd.org + + + + Horikawa Kazuo k-horik@mail.yk.rim.or.jp + + + + Hr.Ladavac lada@ws2301.gud.siemens.co.at + + + + Hubert Feyrer hubertf@NetBSD.ORG + + + + Hugh F. Mahon hugh@nsmdserv.cnd.hp.com + + + + Hugh Mahon h_mahon@fc.hp.com + + + + Hung-Chi Chu hcchu@r350.ee.ntu.edu.tw + + + + IMAI Takeshi take-i@ceres.dti.ne.jp + + + + IMAMURA Tomoaki + tomoak-i@is.aist-nara.ac.jp + + + + Ian Dowse iedowse@maths.tcd.ie + + + + Ian Holland ianh@tortuga.com.au + + + + Ian Struble ian@broken.net + + + + Ian Vaudrey i.vaudrey@bigfoot.com + + + + Igor Khasilev igor@jabber.paco.odessa.ua + + + + Igor Roshchin str@giganda.komkon.org + + + + Igor Sviridov siac@ua.net + + + + Igor Vinokurov igor@zynaps.ru + + + + Ikuo Nakagawa ikuo@isl.intec.co.jp + + + + Ilya V. Komarov mur@lynx.ru + + + + Issei Suzuki issei@jp.FreeBSD.org + + + + Itsuro Saito saito@miv.t.u-tokyo.ac.jp + + + + J. Bryant jbryant@argus.flash.net + + + + J. David Lowe lowe@saturn5.com + + + + J. Han hjh@best.com + + + + J. Hawk jhawk@MIT.EDU + + + + J.T. Conklin jtc@cygnus.com + + + + J.T. Jang keith@email.gcn.net.tw + + + + Jack jack@zeus.xtalwind.net + + + + Jacob Bohn Lorensen jacob@jblhome.ping.mk + + + + Jagane D Sundar jagane@netcom.com + + + + Jake Hamby jehamby@lightside.com + + + + James Clark jjc@jclark.com + + + + James D. Stewart jds@c4systm.com + + + + James Jegers jimj@miller.cs.uwm.edu + + + + James Raynard + fhackers@jraynard.demon.co.uk + + + + James T. Liu jtliu@phlebas.rockefeller.edu + + + + James da Silva jds@cs.umd.edu + + + + Jan Conard + charly@fachschaften.tu-muenchen.de + + + + Jan Koum jkb@FreeBSD.org + + + + Janick Taillandier + Janick.Taillandier@ratp.fr + + + + Janusz Kokot janek@gaja.ipan.lublin.pl + + + + Jarle Greipsland jarle@idt.unit.no + + + + Jason Garman init@risen.org + + + + Jason Thorpe thorpej@NetBSD.org + + + + Jason Wright jason@OpenBSD.org + + + + Jason Young + doogie@forbidden-donut.anet-stl.com + + + + Javier Martin Rueda jmrueda@diatel.upm.es + + + + Jay Fenlason hack@datacube.com + + + + Jaye Mathisen mrcpu@cdsnet.net + + + + Jeff Bartig jeffb@doit.wisc.edu + + + + Jeff Forys jeff@forys.cranbury.nj.us + + + + Jeff Kletsky Jeff@Wagsky.com + + + + Jeffrey Evans evans@scnc.k12.mi.us + + + + Jeffrey Wheat jeff@cetlink.net + + + + Jens Schweikhardt + schweikh@ito.uni-stuttgart.de + + + + Jeremy Allison jallison@whistle.com + + + + Jeremy Chatfield jdc@xinside.com + + + + Jeremy Lea reg@shale.csir.co.za + + + + Jeremy Prior unknown + + + + Jeroen Ruigrok/Asmodai asmodai@wxs.nl + + + + Jesse Rosenstock jmr@ugcs.caltech.edu + + + + Jian-Da Li jdli@csie.nctu.edu.tw + + + + Jim Babb babb@FreeBSD.org + + + + Jim Binkley jrb@cs.pdx.edu + + + + Jim Carroll jim@carroll.com + + + + Jim Flowers jflowers@ezo.net + + + + Jim Leppek jleppek@harris.com + + + + Jim Lowe james@cs.uwm.edu + + + + Jim Mattson jmattson@sonic.net + + + + Jim Mercer jim@komodo.reptiles.org + + + + Jim Mock jim@phrantic.phear.net + + + + Jim Wilson wilson@moria.cygnus.com + + + + Jimbo Bahooli + griffin@blackhole.iceworld.org + + + + Jin Guojun jin@george.lbl.gov + + + + Joachim Kuebart unknown + + + + Joao Carlos Mendes Luis jonny@jonny.eng.br + + + + Jochen Pohl jpo.drs@sni.de + + + + Joe "Marcus" Clarke marcus@miami.edu + + + + Joe Abley jabley@clear.co.nz + + + + Joe Jih-Shian Lu jslu@dns.ntu.edu.tw + + + + Joe Orthoefer j_orthoefer@tia.net + + + + Joe Traister traister@mojozone.org + + + + Joel Faedi Joel.Faedi@esial.u-nancy.fr + + + + Joel Ray Holveck joelh@gnu.org + + + + Joel Sutton sutton@aardvark.apana.org.au + + + + Johan Granlund johan@granlund.nu + + + + Johan Karlsson k@numeri.campus.luth.se + + + + Johan Larsson johan@moon.campus.luth.se + + + + Johann Tonsing jtonsing@mikom.csir.co.za + + + + Johannes Helander unknown + + + + Johannes Stille unknown + + + + John Baldwin jobaldwi@vt.edu + + + + John Beckett jbeckett@southern.edu + + + + John Beukema jbeukema@hk.super.net + + + + John Brezak unknown + + + + John Capo jc@irbs.com + + + + John F. Woods jfw@jfwhome.funhouse.com + + + + John Goerzen + jgoerzen@alexanderwohl.complete.org + + + + John Hay jhay@mikom.csir.co.za + + + + John Heidemann johnh@isi.edu + + + + John Hood cgull@owl.org + + + + John Kohl unknown + + + + John Lind john@starfire.mn.org + + + + John Mackin john@physiol.su.oz.au + + + + John P johnp@lodgenet.com + + + + John Perry perry@vishnu.alias.net + + + + John Preisler john@vapornet.com + + + + John Rochester jr@cs.mun.ca + + + + John Sadler john_sadler@alum.mit.edu + + + + John Saunders john@pacer.nlc.net.au + + + + John W. DeBoskey jwd@unx.sas.com + + + + John Wehle john@feith.com + + + + John Woods jfw@eddie.mit.edu + + + + Jon Morgan morgan@terminus.trailblazer.com + + + + Jonathan H N Chin jc254@newton.cam.ac.uk + + + + Jonathan Hanna + jh@pc-21490.bc.rogers.wave.ca + + + + Jorge Goncalves j@bug.fe.up.pt + + + + Jorge M. Goncalves ee96199@tom.fe.up.pt + + + + Jos Backus jbackus@plex.nl + + + + Jose M. Alcaide jose@we.lc.ehu.es + + + + Josef Grosch + jgrosch@superior.mooseriver.com + + + + Josef Karthauser joe@uk.freebsd.org + + + + Joseph Stein joes@seaport.net + + + + Josh Gilliam josh@quick.net + + + + Josh Tiefenbach josh@ican.net + + + + Juergen Lock nox@jelal.hb.north.de + + + + Juha Inkari inkari@cc.hut.fi + + + + Jukka A. Ukkonen jua@iki.fi + + + + Julian Assange proff@suburbia.net + + + + Julian Coleman j.d.coleman@ncl.ac.uk + + + + Julian H. Stacey jhs@freebsd.org + + + + Julian Jenkins kaveman@magna.com.au + + + + Junichi Satoh junichi@jp.freebsd.org + + + + Junji SAKAI sakai@jp.freebsd.org + + + + Junya WATANABE junya-w@remus.dti.ne.jp + + + + K.Higashino a00303@cc.hc.keio.ac.jp + + + + KUNISHIMA Takeo kunishi@c.oka-pu.ac.jp + + + + Kai Vorma vode@snakemail.hut.fi + + + + Kaleb S. Keithley kaleb@ics.com + + + + Kaneda Hiloshi vanitas@ma3.seikyou.ne.jp + + + + Kapil Chowksey kchowksey@hss.hns.com + + + + Karl Denninger karl@mcs.com + + + + Karl Dietz Karl.Dietz@triplan.com + + + + Karl Lehenbauer karl@NeoSoft.com + + + + Kato Takenori + kato@eclogite.eps.nagoya-u.ac.jp + + + + Kauzo Horikawa h-horik@yk.rim.or.jp + + + + Kawanobe Koh kawanobe@st.rim.or.jp + + + + Kazuhiko Kiriyama kiri@kiri.toba-cmt.ac.jp + + + + Kazuo Horikawa horikawa@jp.FreeBSD.org + + + + Kees Jan Koster kjk1@ukc.ac.uk + + + + Keith Bostic bostic@bostic.com + + + + Keith E. Walker unknown + + + + Keith Moore unknown + + + + Keith Sklower unknown + + + + Ken Hornstein unknown + + + + Ken Key key@cs.utk.edu + + + + Ken Mayer kmayer@freegate.com + + + + Kenji Saito marukun@mx2.nisiq.net + + + + Kenji Tomita tommyk@da2.so-net.or.jp + + + + Kenneth Furge kenneth.furge@us.endress.com + + + + Kenneth Monville desmo@bandwidth.org + + + + Kenneth R. Westerback krw@tcn.net + + + + Kenneth Stailey kstailey@gnu.ai.mit.edu + + + + Kent Talarico kent@shipwreck.tsoft.net + + + + Kent Vander Velden graphix@iastate.edu + + + + Kentaro Inagaki JBD01226@niftyserve.ne.jp + + + + Kevin Bracey kbracey@art.acorn.co.uk + + + + Kevin Day toasty@dragondata.com + + + + Kevin Lahey kml@nas.nasa.gov + + + + Kevin Street street@iname.com + + + + Kevin Van Maren vanmaren@fast.cs.utah.edu + + + + Kiroh HARADA kiroh@kh.rim.or.jp + + + + Klaus Klein kleink@layla.inka.de + + + + Klaus-J. Wolf Yanestra@t-online.de + + + + Koichi Sato copan@ppp.fastnet.or.jp + + + + Kostya Lukin lukin@okbmei.msk.su + + + + Kouichi Hirabayashi kh@mogami-wire.co.jp + + + + Kurt D. Zeilenga Kurt@Boolean.NET + + + + Kurt Olsen kurto@tiny.mcs.usu.edu + + + + L. Jonas Olsson + ljo@ljo-slip.DIALIN.CWRU.Edu + + + + Lars Köller + Lars.Koeller@Uni-Bielefeld.DE + + + + Larry Altneu larry@ALR.COM + + + + Laurence Lopez lopez@mv.mv.com + + + + Lee Cremeans lcremean@tidalwave.net + + + + Liang Tai-hwa + avatar@www.mmlab.cse.yzu.edu.tw + + + + Lon Willett lon%softt.uucp@math.utah.edu + + + + Louis A. Mamakos louie@TransSys.COM + + + + Louis Mamakos loiue@TransSys.com + + + + Lucas James Lucas.James@ldjpc.apana.org.au + + + + Lyndon Nerenberg lyndon@orthanc.com + + + + M.C. Wong unknown + + + + MANTANI Nobutaka nobutaka@nobutaka.com + + + + MIHIRA Sanpei Yoshiro sanpei@sanpei.org + + + + MITA Yoshio mita@jp.FreeBSD.ORG + + + + MITSUNAGA Noriaki + mitchy@er.ams.eng.osaka-u.ac.jp + + + + MOROHOSHI Akihiko moro@race.u-tokyo.ac.jp + + + + Magnus Enbom dot@tinto.campus.luth.se + + + + Mahesh Neelakanta mahesh@gcomm.com + + + + Makoto MATSUSHITA matusita@jp.freebsd.org + + + + Makoto WATANABE + watanabe@zlab.phys.nagoya-u.ac.jp + + + + Malte Lance malte.lance@gmx.net + + + + Manu Iyengar + iyengar@grunthos.pscwa.psca.com + + + + Marc Frajola marc@dev.com + + + + Marc Ramirez mrami@mramirez.sy.yale.edu + + + + Marc Slemko marcs@znep.com + + + + Marc van Kempen wmbfmk@urc.tue.nl + + + + Marcel Moolenaar marcel@scc.nl + + + + Mario Sergio Fujikawa Ferreira + lioux@gns.com.br + + + + Mark Andrews unknown + + + + Mark Cammidge mark@gmtunx.ee.uct.ac.za + + + + Mark Diekhans markd@grizzly.com + + + + Mark Huizer xaa@stack.nl + + + + Mark J. Taylor mtaylor@cybernet.com + + + + Mark Krentel krentel@rice.edu + + + + Mark Mayo markm@vmunix.com + + + + Mark Thompson thompson@tgsoft.com + + + + Mark Tinguely tinguely@plains.nodak.edu + + + + Mark Treacy unknown + + + + Mark Valentine mark@linus.demon.co.uk + + + + Martin Birgmeier + + + + Martin Ibert mib@ppe.bb-data.de + + + + Martin Kammerhofer dada@sbox.tu-graz.ac.at + + + + Martin Renters martin@tdc.on.ca + + + + Martti Kuparinen + erakupa@kk.etx.ericsson.se + + + + Masachika ISHIZUKA + ishizuka@isis.min.ntt.jp + + + + Mas.TAKEMURA unknown + + + + Masafumi NAKANE max@wide.ad.jp + + + + Masahiro Sekiguchi + seki@sysrap.cs.fujitsu.co.jp + + + + Masanobu Saitoh msaitoh@spa.is.uec.ac.jp + + + + Masanori Kanaoka kana@saijo.mke.mei.co.jp + + + + Masanori Kiriake seiken@ncs.co.jp + + + + Masatoshi TAMURA + tamrin@shinzan.kuee.kyoto-u.ac.jp + + + + Mats Lofkvist mal@algonet.se + + + + Matt Bartley mbartley@lear35.cytex.com + + + + Matt Thomas matt@3am-software.com + + + + Matt White mwhite+@CMU.EDU + + + + Matthew C. Mead mmead@Glock.COM + + + + Matthew Cashdollar mattc@rfcnet.com + + + + Matthew Flatt mflatt@cs.rice.edu + + + + Matthew Fuller fullermd@futuresouth.com + + + + Matthew N. Dodd winter@jurai.net + + + + Matthew Stein matt@bdd.net + + + + Matthias Pfaller leo@dachau.marco.de + + + + Matthias Scheler tron@netbsd.org + + + + Mattias Gronlund + Mattias.Gronlund@sa.erisoft.se + + + + Mattias Pantzare pantzer@ludd.luth.se + + + + Maurice Castro + maurice@planet.serc.rmit.edu.au + + + + Max Euston meuston@jmrodgers.com + + + + Max Khon fjoe@husky.iclub.nsu.ru + + + + Maxim Bolotin max@rsu.ru + + + + Micha Class + michael_class@hpbbse.bbn.hp.com + + + + Michael Butler imb@scgt.oz.au + + + + Michael Butschky butsch@computi.erols.com + + + + Michael Clay mclay@weareb.org + + + + Michael Elbel me@FreeBSD.ORG + + + + Michael Galassi nerd@percival.rain.com + + + + Michael Hancock michaelh@cet.co.jp + + + + Michael Hohmuth hohmuth@inf.tu-dresden.de + + + + Michael Perlman canuck@caam.rice.edu + + + + Michael Petry petry@netwolf.NetMasters.com + + + + Michael Reifenberger root@totum.plaut.de + + + + Michael Searle searle@longacre.demon.co.uk + + + + Michal Listos mcl@Amnesiac.123.org + + + + Michio Karl Jinbo + karl@marcer.nagaokaut.ac.jp + + + + Miguel Angel Sagreras + msagre@cactus.fi.uba.ar + + + + Mihoko Tanaka m_tonaka@pa.yokogawa.co.jp + + + + Mika Nystrom mika@cs.caltech.edu + + + + Mikael Hybsch micke@dynas.se + + + + Mikael Karpberg + karpen@ocean.campus.luth.se + + + + Mike Del repenting@hotmail.com + + + + Mike Durian durian@plutotech.com + + + + Mike Durkin mdurkin@tsoft.sf-bay.org + + + + Mike E. Matsnev mike@azog.cs.msu.su + + + + Mike Evans mevans@candle.com + + + + Mike Grupenhoff kashmir@umiacs.umd.edu + + + + Mike Hibler mike@marker.cs.utah.edu + + + + Mike Karels unknown + + + + Mike McGaughey mmcg@cs.monash.edu.au + + + + Mike Meyer mwm@shiva.the-park.com + + + + Mike Mitchell mitchell@ref.tfs.com + + + + Mike Murphy mrm@alpharel.com + + + + Mike Peck mike@binghamton.edu + + + + Mike Spengler mks@msc.edu + + + + Mikhail A. Sokolov mishania@demos.su + + + + Mikhail Teterin mi@aldan.ziplink.net + + + + Ming-I Hseh PA@FreeBSD.ee.Ntu.edu.TW + + + + Mitsuru IWASAKI iwasaki@pc.jaring.my + + + + Monte Mitzelfelt monte@gonefishing.org + + + + Morgan Davis root@io.cts.com + + + + Mostyn Lewis mostyn@mrl.com + + + + Motoyuki Kasahara m-kasahr@sra.co.jp + + + + Motoyuki Konno motoyuki@snipe.rim.or.jp + + + + Munechika Sumikawa sumikawa@kame.net + + + + Murray Stokely murray@cdrom.com + + + + N.G.Smith ngs@sesame.hensa.ac.uk + + + + NAGAO Tadaaki nagao@cs.titech.ac.jp + + + + NAKAJI Hiroyuki + nakaji@zeisei.dpri.kyoto-u.ac.jp + + + + NAKAMURA Kazushi nkazushi@highway.or.jp + + + + NAKAMURA Motonori + motonori@econ.kyoto-u.ac.jp + + + + NIIMI Satoshi sa2c@and.or.jp + + + + NOKUBI Hirotaka h-nokubi@yyy.or.jp + + + + Nadav Eiron nadav@barcode.co.il + + + + Nanbor Wang nw1@cs.wustl.edu + + + + Naofumi Honda + honda@Kururu.math.sci.hokudai.ac.jp + + + + Naoki Hamada nao@tom-yam.or.jp + + + + Narvi narvi@haldjas.folklore.ee + + + + Nathan Dorfman nathan@rtfm.net + + + + Neal Fachan kneel@ishiboo.com + + + + Neil Blakey-Milner nbm@rucus.ru.ac.za + + + + Niall Smart rotel@indigo.ie + + + + Nick Barnes Nick.Barnes@pobox.com + + + + Nick Handel nhandel@NeoSoft.com + + + + Nick Hilliard nick@foobar.org + + + + Nick Sayer nsayer@quack.kfu.com + + + + Nick Williams njw@cs.city.ac.uk + + + + Nickolay N. Dudorov nnd@itfs.nsk.su + + + + Niklas Hallqvist niklas@filippa.appli.se + + + + Nisha Talagala nisha@cs.berkeley.edu + + + + No Name ZW6T-KND@j.asahi-net.or.jp + + + + No Name adrian@virginia.edu + + + + No Name alex@elvisti.kiev.ua + + + + No Name anto@netscape.net + + + + No Name bobson@egg.ics.nitch.ac.jp + + + + No Name bovynf@awe.be + + + + No Name burg@is.ge.com + + + + No Name chris@gnome.co.uk + + + + No Name colsen@usa.net + + + + No Name coredump@nervosa.com + + + + No Name dannyman@arh0300.urh.uiuc.edu + + + + No Name davids@SECNET.COM + + + + No Name derek@free.org + + + + No Name devet@adv.IAEhv.nl + + + + No Name djv@bedford.net + + + + No Name dvv@sprint.net + + + + No Name enami@ba2.so-net.or.jp + + + + No Name flash@eru.tubank.msk.su + + + + No Name flash@hway.ru + + + + No Name fn@pain.csrv.uidaho.edu + + + + No Name gclarkii@netport.neosoft.com + + + + No Name gordon@sheaky.lonestar.org + + + + No Name graaf@iae.nl + + + + No Name greg@greg.rim.or.jp + + + + No Name grossman@cygnus.com + + + + No Name gusw@fub46.zedat.fu-berlin.de + + + + No Name hfir@math.rochester.edu + + + + No Name hnokubi@yyy.or.jp + + + + No Name iaint@css.tuu.utas.edu.au + + + + No Name invis@visi.com + + + + No Name ishisone@sra.co.jp + + + + No Name iverson@lionheart.com + + + + No Name jpt@magic.net + + + + No Name junker@jazz.snu.ac.kr + + + + No Name k-sugyou@ccs.mt.nec.co.jp + + + + No Name kenji@reseau.toyonaka.osaka.jp + + + + No Name kfurge@worldnet.att.net + + + + No Name lh@aus.org + + + + No Name lhecking@nmrc.ucc.ie + + + + No Name mrgreen@mame.mu.oz.au + + + + No Name nakagawa@jp.freebsd.org + + + + No Name ohki@gssm.otsuka.tsukuba.ac.jp + + + + No Name owaki@st.rim.or.jp + + + + No Name pechter@shell.monmouth.com + + + + No Name pete@pelican.pelican.com + + + + No Name pritc003@maroon.tc.umn.edu + + + + No Name risner@stdio.com + + + + No Name roman@rpd.univ.kiev.ua + + + + No Name root@ns2.redline.ru + + + + No Name root@uglabgw.ug.cs.sunysb.edu + + + + No Name stephen.ma@jtec.com.au + + + + No Name sumii@is.s.u-tokyo.ac.jp + + + + No Name takas-su@is.aist-nara.ac.jp + + + + No Name tamone@eig.unige.ch + + + + No Name tjevans@raleigh.ibm.com + + + + No Name tony-o@iij.ad.jp amurai@spec.co.jp + + + + No Name torii@tcd.hitachi.co.jp + + + + No Name uenami@imasy.or.jp + + + + No Name uhlar@netlab.sk + + + + No Name vode@hut.fi + + + + No Name wlloyd@mpd.ca + + + + No Name wlr@furball.wellsfargo.com + + + + No Name wmbfmk@urc.tue.nl + + + + No Name yamagata@nwgpc.kek.jp + + + + No Name ziggy@ryan.org + + + + Nobuhiro Yasutomi nobu@psrc.isac.co.jp + + + + Nobuyuki Koganemaru + kogane@koganemaru.co.jp + + + + Norio Suzuki nosuzuki@e-mail.ne.jp + + + + Noritaka Ishizumi graphite@jp.FreeBSD.ORG + + + + Noriyuki Soda soda@sra.co.jp + + + + Olaf Wagner wagner@luthien.in-berlin.de + + + + Oleg Sharoiko os@rsu.ru + + + + Oliver Breuninger ob@seicom.NET + + + + Oliver Friedrichs oliver@secnet.com + + + + Oliver Fromme + oliver.fromme@heim3.tu-clausthal.de + + + + Oliver Laumann + net@informatik.uni-bremen.de + + + + Oliver Oberdorf oly@world.std.com + + + + Olof Johansson offe@ludd.luth.se + + + + Osokin Sergey aka oZZ ozz@freebsd.org.ru + + + + Pace Willisson pace@blitz.com + + + + Paco Rosich rosich@modico.eleinf.uv.es + + + + Palle Girgensohn girgen@partitur.se + + + + Parag Patel parag@cgt.com + + + + Pascal Pederiva pascal@zuo.dec.com + + + + Pasvorn Boonmark boonmark@juniper.net + + + + Patrick Gardella patrick@cre8tivegroup.com + + + + Patrick Hausen unknown + + + + Paul Antonov apg@demos.su + + + + Paul F. Werkowski unknown + + + + Paul Fox pgf@foxharp.boston.ma.us + + + + Paul Koch koch@thehub.com.au + + + + Paul Kranenburg pk@NetBSD.org + + + + Paul Mackerras paulus@cs.anu.edu.au + + + + Paul Popelka paulp@uts.amdahl.com + + + + Paul S. LaFollette, Jr. unknown + + + + Paul Saab paul@mu.org + + + + Paul Sandys myj@nyct.net + + + + Paul T. Root proot@horton.iaces.com + + + + Paul Vixie paul@vix.com + + + + Paulo Menezes paulo@isr.uc.pt + + + + Paulo Menezes pm@dee.uc.pt + + + + Pedro A M Vazquez vazquez@IQM.Unicamp.BR + + + + Pedro Giffuni giffunip@asme.org + + + + Pete Bentley pete@demon.net + + + + Peter Childs pjchilds@imforei.apana.org.au + + + + Peter Cornelius pc@inr.fzk.de + + + + Peter Haight peterh@prognet.com + + + + Peter Jeremy perer.jeremy@alcatel.com.au + + + + Peter M. Chen pmchen@eecs.umich.edu + + + + Peter Much peter@citylink.dinoex.sub.org + + + + Peter Olsson unknown + + + + Peter Philipp pjp@bsd-daemon.net + + + + Peter Stubbs PETERS@staidan.qld.edu.au + + + + Phil Maker pjm@cs.ntu.edu.au + + + + Phil Sutherland + philsuth@mycroft.dialix.oz.au + + + + Phil Taylor phil@zipmail.co.uk + + + + Philip Musumeci philip@rmit.edu.au + + + + Pierre Y. Dampure pierre.dampure@k2c.co.uk + + + + Pius Fischer pius@ienet.com + + + + Pomegranate daver@flag.blackened.net + + + + Powerdog Industries + kevin.ruddy@powerdog.com + + + + R. Kym Horsell + + + + Rajesh Vaidheeswarran rv@fore.com + + + + Ralf Friedl friedl@informatik.uni-kl.de + + + + Randal S. Masutani randal@comtest.com + + + + Randall Hopper rhh@ct.picker.com + + + + Randall W. Dean rwd@osf.org + + + + Randy Bush rbush@bainbridge.verio.net + + + + Reinier Bezuidenhout + rbezuide@mikom.csir.co.za + + + + Remy Card Remy.Card@masi.ibp.fr + + + + Ricardas Cepas rch@richard.eu.org + + + + Richard Henderson richard@atheist.tamu.edu + + + + Richard Hwang rhwang@bigpanda.com + + + + Richard J Kuhns rjk@watson.grauel.com + + + + Richard M. Neswold + rneswold@drmemory.fnal.gov + + + + Richard Seaman, Jr. dick@tar.com + + + + Richard Stallman rms@gnu.ai.mit.edu + + + + Richard Straka straka@user1.inficad.com + + + + Richard Tobin richard@cogsci.ed.ac.uk + + + + Richard Wackerbarth rkw@Dataplex.NET + + + + Richard Winkel rich@math.missouri.edu + + + + Richard Wiwatowski rjwiwat@adelaide.on.net + + + + Rick Macklem rick@snowhite.cis.uoguelph.ca + + + + Rick Macklin unknown + + + + Rob Austein sra@epilogue.com + + + + Rob Mallory rmallory@qualcomm.com + + + + Rob Snow rsnow@txdirect.net + + + + Robert Crowe bob@speakez.com + + + + Robert D. Thrush rd@phoenix.aii.com + + + + Robert Eckardt + roberte@MEP.Ruhr-Uni-Bochum.de + + + + Robert Sanders rsanders@mindspring.com + + + + Robert Sexton robert@kudra.com + + + + Robert Shady rls@id.net + + + + Robert Swindells swindellsr@genrad.co.uk + + + + Robert Watson robert@cyrus.watson.org + + + + Robert Withrow witr@rwwa.com + + + + Robert Yoder unknown + + + + Robin Carey + robin@mailgate.dtc.rankxerox.co.uk + + + + Roger Hardiman roger@cs.strath.ac.uk + + + + Roland Jesse jesse@cs.uni-magdeburg.de + + + + Ron Bickers rbickers@intercenter.net + + + + Ron Lenk rlenk@widget.xmission.com + + + + Ronald Kuehn kuehn@rz.tu-clausthal.de + + + + Rudolf Cejka unknown + + + + Ruslan Belkin rus@home2.UA.net + + + + Ruslan Ermilov ru@ucb.crimea.ua + + + + Ruslan Shevchenko rssh@cam.grad.kiev.ua + + + + Russell L. Carter rcarter@pinyon.org + + + + Russell Vincent rv@groa.uct.ac.za + + + + Ryan Younce ryany@pobox.com + + + + SANETO Takanori sanewo@strg.sony.co.jp + + + + SAWADA Mizuki miz@qb3.so-net.ne.jp + + + + SUGIMURA Takashi sugimura@jp.FreeBSD.ORG + + + + SURANYI Peter + suranyip@jks.is.tsukuba.ac.jp + + + + Sakari Jalovaara sja@tekla.fi + + + + Sam Hartman hartmans@mit.edu + + + + Samuel Lam skl@ScalableNetwork.com + + + + Sander Vesik sander@haldjas.folklore.ee + + + + Sandro Sigala ssigala@globalnet.it + + + + Sascha Blank blank@fox.uni-trier.de + + + + Sascha Wildner swildner@channelz.GUN.de + + + + Satoh Junichi junichi@astec.co.jp + + + + Satoshi Taoka + taoka@infonets.hiroshima-u.ac.jp + + + + Scot Elliott scot@poptart.org + + + + Scot W. Hetzel hetzels@westbend.net + + + + Scott A. Kenney saken@rmta.ml.org + + + + Scott Blachowicz + scott.blachowicz@seaslug.org + + + + Scott Burris scott@pita.cns.ucla.edu + + + + Scott Hazen Mueller scott@zorch.sf-bay.org + + + + Scott Michel scottm@cs.ucla.edu + + + + Scott Reynolds scott@clmqt.marquette.mi.us + + + + Sebastian Strollo seb@erix.ericsson.se + + + + Seigou TANIMURA + tanimura@naklab.dnj.ynu.ac.jp + + + + Serge A. Babkin babkin@hq.icb.chel.su + + + + Serge V. Vakulenko vak@zebub.msk.su + + + + Sergei Chechetkin + csl@whale.sunbay.crimea.ua + + + + Sergei S. Laskavy laskavy@pc759.cs.msu.su + + + + Sergey Gershtein sg@mplik.ru + + + + Sergey Potapov sp@alkor.ru + + + + Sergey Shkonda serg@bcs.zp.ua + + + + Sergey V.Dorokhov svd@kbtelecom.nalnet.ru + + + + Sergio Lenzi lenzi@bsi.com.br + + + + Shaun Courtney shaun@emma.eng.uct.ac.za + + + + Shawn M. Carey smcarey@mailbox.syr.edu + + + + Sheldon Hearn axl@iafrica.com + + + + Shigio Yamaguchi shigio@wafu.netgate.net + + + + Shunsuke Akiyama akiyama@jp.freebsd.org + + + + Simon simon@masi.ibp.fr + + + + Simon Burge simonb@telstra.com.au + + + + Simon J Gerraty sjg@melb.bull.oz.au + + + + Simon Marlow simonm@dcs.gla.ac.uk + + + + Simon Shapiro shimon@simon-shapiro.org + + + + Sin'ichiro MIYATANI siu@phaseone.co.jp + + + + Slaven Rezic eserte@cs.tu-berlin.de + + + + Soochon Radee slr@mitre.org + + + + Soren Dayton csdayton@midway.uchicago.edu + + + + Soren Dossing sauber@netcom.com + + + + Soren S. Jorvang soren@dt.dk + + + + Stefan Bethke stb@hanse.de + + + + Stefan Eggers seggers@semyam.dinoco.de + + + + Stefan Moeding s.moeding@ndh.net + + + + Stefan Petri unknown + + + + Stefan `Sec` Zehl sec@42.org + + + + Steinar Haug sthaug@nethelp.no + + + + Stephane E. Potvin sepotvin@videotron.ca + + + + Stephane Legrand stephane@lituus.fr + + + + Stephen Clawson + sclawson@marker.cs.utah.edu + + + + Stephen F. Combs combssf@salem.ge.com + + + + Stephen Farrell stephen@farrell.org + + + + Stephen Hocking sysseh@devetir.qld.gov.au + + + + Stephen J. Roznowski sjr@home.net + + + + Stephen McKay syssgm@devetir.qld.gov.au + + + + Stephen Melvin melvin@zytek.com + + + + Steve Bauer sbauer@rock.sdsmt.edu + + + + Steve Deering unknown + + + + Steve Gerakines steve2@genesis.tiac.net + + + + Steve Gericke steveg@comtrol.com + + + + Steve Piette steve@simon.chi.il.US + + + + Steve Schwarz schwarz@alpharel.com + + + + Steven G. Kargl + kargl@troutmask.apl.washington.edu + + + + Steven H. Samorodin samorodi@NUXI.com + + + + Steven McCanne mccanne@cs.berkeley.edu + + + + Steven Plite splite@purdue.edu + + + + Steven Wallace unknown + + + + Stuart Henderson + stuart@internationalschool.co.uk + + + + Sue Blake sue@welearn.com.au + + + + Sugiura Shiro ssugiura@duo.co.jp + + + + Sujal Patel smpatel@wam.umd.edu + + + + Sune Stjerneby stjerneby@usa.net + + + + Suzuki Yoshiaki + zensyo@ann.tama.kawasaki.jp + + + + Tadashi Kumano kumano@strl.nhk.or.jp + + + + Taguchi Takeshi taguchi@tohoku.iij.ad.jp + + + + Takahashi Yoshihiro nyan@dd.catv.ne.jp + + + + Takahiro Yugawa yugawa@orleans.rim.or.jp + + + + Takanori Watanabe + takawata@shidahara1.planet.sci.kobe-u.ac.jp + + + + Takashi Mega mega@minz.org + + + + Takashi Uozu j1594016@ed.kagu.sut.ac.jp + + + + Takayuki Ariga a00821@cc.hc.keio.ac.jp + + + + Takeru NAIKI naiki@bfd.es.hokudai.ac.jp + + + + Takeshi Amaike amaike@iri.co.jp + + + + Takeshi MUTOH mutoh@info.nara-k.ac.jp + + + + Takeshi Ohashi + ohashi@mickey.ai.kyutech.ac.jp + + + + Takeshi WATANABE + watanabe@crayon.earth.s.kobe-u.ac.jp + + + + Takuya SHIOZAKI + tshiozak@makino.ise.chuo-u.ac.jp + + + + Tatoku Ogaito tacha@tera.fukui-med.ac.jp + + + + Tatsumi HOSOKAWA hosokawa@jp.FreeBSD.org + + + + Ted Buswell tbuswell@mediaone.net + + + + Ted Faber faber@isi.edu + + + + Ted Lemon unknown + + + + Terry Lambert terry@lambert.org + + + + Terry Lee terry@uivlsi.csl.uiuc.edu + + + + Tetsuya Furukawa tetsuya@secom-sis.co.jp + + + + Theo de Raadt deraadt@OpenBSD.org + + + + Thomas thomas@mathematik.uni-Bremen.de + + + + Thomas D. Dean tomdean@ix.netcom.com + + + + Thomas David Rivers rivers@dignus.com + + + + Thomas G. McWilliams tgm@netcom.com + + + + Thomas Gellekum + thomas@ghpc8.ihf.rwth-aachen.de + + + + Thomas Graichen + graichen@omega.physik.fu-berlin.de + + + + Thomas König + Thomas.Koenig@ciw.uni-karlsruhe.de + + + + Thomas Ptacek unknown + + + + Thomas Stromberg tstrombe@rtci.com + + + + Thomas Valentino Crimi + tcrimi+@andrew.cmu.edu + + + + Thomas Wintergerst thomas@lemur.nord.de + + + + Þórður Ívarsson + totii@est.is + + + + Tim Kientzle kientzle@netcom.com + + + + Tim Singletary + tsingle@sunland.gsfc.nasa.gov + + + + Tim Wilkinson tim@sarc.city.ac.uk + + + + Timo J. Rinne tri@iki.fi + + + + Todd Miller millert@openbsd.org + + + + Tom root@majestix.cmr.no + + + + Tom tom@sdf.com + + + + Tom Gray - DCA dcasba@rain.org + + + + Tom Hukins tom@eborcom.com + + + + Tom Jobbins tom@tom.tj + + + + Tom Pusateri pusateri@juniper.net + + + + Tom Rush tarush@mindspring.com + + + + Tom Samplonius tom@misery.sdf.com + + + + Tomohiko Kurahashi + kura@melchior.q.t.u-tokyo.ac.jp + + + + Tony Kimball alk@Think.COM + + + + Tony Li tli@jnx.com + + + + Tony Lynn wing@cc.nsysu.edu.tw + + + + Torbjorn Granlund tege@matematik.su.se + + + + Toshihiko ARAI toshi@tenchi.ne.jp + + + + Toshihiko SHIMOKAWA toshi@tea.forus.or.jp + + + + Toshihiro Kanda candy@kgc.co.jp + + + + Toshiomi Moriki + Toshiomi.Moriki@ma1.seikyou.ne.jp + + + + Trefor S. trefor@flevel.co.uk + + + + Trevor Blackwell tlb@viaweb.com + + + + URATA Shuichiro s-urata@nmit.tmg.nec.co.jp + + + + Ugo Paternostro paterno@dsi.unifi.it + + + + Ulf Kieber kieber@sax.de + + + + Ulli Linzen ulli@perceval.camelot.de + + + + Ustimenko Semen semen@iclub.nsu.ru + + + + Uwe Arndt arndt@mailhost.uni-koblenz.de + + + + Vadim Chekan vadim@gc.lviv.ua + + + + Vadim Kolontsov vadim@tversu.ac.ru + + + + Vadim Mikhailov mvp@braz.ru + + + + Van Jacobson van@ee.lbl.gov + + + + Vasily V. Grechishnikov + bazilio@ns1.ied-vorstu.ac.ru + + + + Vasim Valejev vasim@uddias.diaspro.com + + + + Vernon J. Schryver vjs@mica.denver.sgi.com + + + + Vic Abell abe@cc.purdue.edu + + + + Ville Eerola ve@sci.fi + + + + Vincent Poy vince@venus.gaianet.net + + + + Vincenzo Capuano + VCAPUANO@vmprofs.esoc.esa.de + + + + Virgil Champlin champlin@pa.dec.com + + + + Vladimir A. Jakovenko + vovik@ntu-kpi.kiev.ua + + + + Vladimir Kushnir kushn@mail.kar.net + + + + Vsevolod Lobko seva@alex-ua.com + + + + W. Gerald Hicks wghicks@bellsouth.net + + + + W. Richard Stevens rstevens@noao.edu + + + + Walt Howard howard@ee.utah.edu + + + + Warren Toomey wkt@csadfa.cs.adfa.oz.au + + + + Wayne Scott wscott@ichips.intel.com + + + + Werner Griessl + werner@btp1da.phy.uni-bayreuth.de + + + + Wes Santee wsantee@wsantee.oz.net + + + + Wietse Venema wietse@wzv.win.tue.nl + + + + Wilfredo Sanchez wsanchez@apple.com + + + + Wiljo Heinen wiljo@freeside.ki.open.de + + + + Wilko Bulte wilko@yedi.iaf.nl + + + + Willem Jan Withagen wjw@surf.IAE.nl + + + + William Jolitz withheld + + + + William Liao william@tale.net + + + + Wojtek Pilorz + wpilorz@celebris.bdk.lublin.pl + + + + Wolfgang Helbig helbig@ba-stuttgart.de + + + + Wolfgang Solfrank ws@tools.de + + + + Wolfgang Stanglmeier wolf@FreeBSD.org + + + + Wu Ching-hong woju@FreeBSD.ee.Ntu.edu.TW + + + + Yarema yds@ingress.com + + + + Yaroslav Terletsky ts@polynet.lviv.ua + + + + Yen-Shuo Su yssu@CCCA.NCTU.edu.tw + + + + Ying-Chieh Liao ijliao@csie.NCTU.edu.tw + + + + Yixin Jin yjin@rain.cs.ucla.edu + + + + Yoshiaki Uchikawa yoshiaki@kt.rim.or.jp + + + + Yoshihiko OHTA yohta@bres.tsukuba.ac.jp + + + + Yoshihisa NAKAGAWA + y-nakaga@ccs.mt.nec.co.jp + + + + Yoshikazu Goto gotoh@ae.anritsu.co.jp + + + + Yoshimasa Ohnishi + ohnishi@isc.kyutech.ac.jp + + + + Yoshishige Arai ryo2@on.rim.or.jp + + + + Yuichi MATSUTAKA matutaka@osa.att.ne.jp + + + + Yujiro MIYATA + miyata@bioele.nuee.nagoya-u.ac.jp + + + + Yukihiro Nakai nacai@iname.com + + + + Yusuke Nawano azuki@azkey.org + + + + Yuval Yarom yval@cs.huji.ac.il + + + + Yves Fonk yves@cpcoup5.tn.tudelft.nl + + + + Yves Fonk yves@dutncp8.tn.tudelft.nl + + + + Zach Heilig zach@gaffaneys.com + + + + Zahemszhky Gabor zgabor@code.hu + + + + Zhong Ming-Xun zmx@mail.CDPA.nsysu.edu.tw + + + + arci vega@sophia.inria.fr + + + + der Mouse mouse@Collatz.McRCIM.McGill.EDU + + + + frf frf@xocolatl.com + + + + Ege Rekk aagero@aage.priv.no + + + + + + 386BSD パッチキットへのパッチ提供者 + + (名前でアルファベット順): + + + + Adam Glass glass@postgres.berkeley.edu + + + + Adrian Hall adrian@ibmpcug.co.uk + + + + Andrey A. Chernov ache@astral.msk.su + + + + Andrew Herbert andrew@werple.apana.org.au + + + + Andrew Moore alm@netcom.com + + + + Andy Valencia ajv@csd.mot.com + jtk@netcom.com + + + + Arne Henrik Juul arnej@Lise.Unit.NO + + + + Bakul Shah bvs@bitblocks.com + + + + Barry Lustig barry@ictv.com + + + + Bob Wilcox bob@obiwan.uucp + + + + Branko Lankester + + + + Brett Lymn blymn@mulga.awadi.com.AU + + + + Charles Hannum mycroft@ai.mit.edu + + + + Chris G. Demetriou + cgd@postgres.berkeley.edu + + + + Chris Torek torek@ee.lbl.gov + + + + Christoph Robitschko + chmr@edvz.tu-graz.ac.at + + + + Daniel Poirot poirot@aio.jsc.nasa.gov + + + + Dave Burgess burgess@hrd769.brooks.af.mil + + + + Dave Rivers rivers@ponds.uucp + + + + David Dawes dawes@physics.su.OZ.AU + + + + David Greenman dg@Root.COM + + + + Eric J. Haug ejh@slustl.slu.edu + + + + Felix Gaehtgens + felix@escape.vsse.in-berlin.de + + + + Frank Maclachlan fpm@crash.cts.com + + + + Gary A. Browning gab10@griffcd.amdahl.com + + + + Gary Howland gary@hotlava.com + + + + Geoff Rehmet csgr@alpha.ru.ac.za + + + + Goran Hammarback goran@astro.uu.se + + + + Guido van Rooij guido@gvr.org + + + + Guy Harris guy@auspex.com + + + + Havard Eidnes + Havard.Eidnes@runit.sintef.no + + + + Herb Peyerl hpeyerl@novatel.cuc.ab.ca + + + + Holger Veit Holger.Veit@gmd.de + + + + Ishii Masahiro, R. Kym Horsell + + + + J.T. Conklin jtc@cygnus.com + + + + Jagane D Sundar jagane@netcom.com + + + + James Clark jjc@jclark.com + + + + James Jegers jimj@miller.cs.uwm.edu + + + + James W. Dolter + + + + James da Silva jds@cs.umd.edu et al + + + + Jay Fenlason hack@datacube.com + + + + Jim Wilson wilson@moria.cygnus.com + + + + Jörg Lohse + lohse@tech7.informatik.uni-hamburg.de + + + + Jörg Wunsch + joerg_wunsch@uriah.heep.sax.de + + + + John Dyson + + + + John Woods jfw@eddie.mit.edu + + + + Jordan K. Hubbard jkh@whisker.hubbard.ie + + + + Julian Elischer julian@dialix.oz.au + + + + Julian Stacey jhs@freebsd.org + + + + Karl Dietz Karl.Dietz@triplan.com + + + + Karl Lehenbauer karl@NeoSoft.com + karl@one.neosoft.com + + + + Keith Bostic bostic@toe.CS.Berkeley.EDU + + + + Ken Hughes + + + + Kent Talarico kent@shipwreck.tsoft.net + + + + Kevin Lahey kml%rokkaku.UUCP@mathcs.emory.edu + kml@mosquito.cis.ufl.edu + + + + Marc Frajola marc@dev.com + + + + Mark Tinguely tinguely@plains.nodak.edu + tinguely@hookie.cs.ndsu.NoDak.edu + + + + Martin Renters martin@tdc.on.ca + + + + Michael Clay mclay@weareb.org + + + + Michael Galassi nerd@percival.rain.com + + + + Mike Durkin mdurkin@tsoft.sf-bay.org + + + + Naoki Hamada nao@tom-yam.or.jp + + + + Nate Williams nate@bsd.coe.montana.edu + + + + Nick Handel nhandel@NeoSoft.com + nick@madhouse.neosoft.com + + + + Pace Willisson pace@blitz.com + + + + Paul Kranenburg pk@cs.few.eur.nl + + + + Paul Mackerras paulus@cs.anu.edu.au + + + + Paul Popelka paulp@uts.amdahl.com + + + + Peter da Silva peter@NeoSoft.com + + + + Phil Sutherland + philsuth@mycroft.dialix.oz.au + + + + Poul-Henning Kampphk@FreeBSD.ORG + + + + Ralf Friedl friedl@informatik.uni-kl.de + + + + Rick Macklem root@snowhite.cis.uoguelph.ca + + + + Robert D. Thrush rd@phoenix.aii.com + + + + Rodney W. Grimes rgrimes@cdrom.com + + + + Sascha Wildner swildner@channelz.GUN.de + + + + Scott Burris scott@pita.cns.ucla.edu + + + + Scott Reynolds scott@clmqt.marquette.mi.us + + + + Sean Eric Fagan sef@kithrup.com + + + + Simon J Gerraty sjg@melb.bull.oz.au + sjg@zen.void.oz.au + + + + Stephen McKay syssgm@devetir.qld.gov.au + + + + Terry Lambert terry@icarus.weber.edu + + + + Terry Lee terry@uivlsi.csl.uiuc.edu + + + + Tor Egge Tor.Egge@idi.ntnu.no + + + + Warren Toomey wkt@csadfa.cs.adfa.oz.au + + + + Wiljo Heinen wiljo@freeside.ki.open.de + + + + William Jolitz withheld + + + + Wolfgang Solfrank ws@tools.de + + + + Wolfgang Stanglmeier wolf@dentaro.GUN.de + + + + Yuval Yarom yval@cs.huji.ac.il + + + +
+ + diff --git a/ja_JP.eucJP/books/handbook/Makefile b/ja_JP.eucJP/books/handbook/Makefile index 3f0039b4dc..3f9c2fb8df 100644 --- a/ja_JP.eucJP/books/handbook/Makefile +++ b/ja_JP.eucJP/books/handbook/Makefile @@ -1,29 +1,415 @@ -# $Id: Makefile,v 1.28 1999-03-02 18:08:34 motoyuki Exp $ -# Original revision: 1.34 -# The FreeBSD Japanese Documentation Project +# +# Id: Makefile,v 1.17 1999/03/27 16:03:49 nik Exp +# $Id: Makefile,v 1.29 1999-04-08 15:45:06 kuriyama Exp $ +# +# Required ports (common): +# textproc/jade +# textproc/docbook +# textproc/dsssl-docbook-modular +# textproc/iso8879-1986 +# +# for HTML: +# textproc/html +# www/tidy +# +# for plain text: +# www/lynx +# +# for DVI: +# japanese/ptex-common +# japanese/ptex-euc +# japanese/platex-common +# japanese/platex-euc +# +# +# Build the FreeBSD Handbook. Will eventually split in two, a generic .mk +# file which can be used by many Makefiles, and a much smaller Makefile +# which uses the generic.mk file. +# +# Note: Doing all this in a Makefile is a little odd. This is because there +# is typically not a 1:1 mapping between the .sgml files and the .html, +# .rtf, .ps, and other formats. For most of them, all the .sgml files will +# become one file in the chosen output format. For HTML, many .html files +# will be produced, but they won't be named after the corresponding .sgml +# files. -.NOTPARALLEL: +MAINTAINER=kuriyama@FreeBSD.ORG -DOC= handbook -DOCDIR=${SHAREDIR}/doc/ja -FORMATS?= html roff -SGMLOPTS+=-e EUC-JP -SGMLOPTS+=-links +JADEOPTS= -ilang.ja -SRCS= anoncvs.sgml authors.sgml backups.sgml basics.sgml bibliography.sgml boothelp.sgml -SRCS+= booting.sgml contrib.sgml crypt.sgml ctm.sgml current.sgml cvsup.sgml -SRCS+= cyclades.sgml development.sgml dialup.sgml dialout.sgml -SRCS+= disks.sgml diskless.sgml dma.sgml eresources.sgml esdi.sgml -SRCS+= firewalls.sgml german.sgml glossary.sgml goals.sgml -SRCS+= handbook.sgml history.sgml hw.sgml install.sgml isdn.sgml -SRCS+= kerberos.sgml kernelconfig.sgml kerneldebug.sgml kernelopts.sgml -SRCS+= lists.sgml mail.sgml makeworld.sgml memoryuse.sgml vm.sgml -SRCS+= mirrors.sgml nfs.sgml nutshell.sgml pgpkeys.sgml policies.sgml -SRCS+= porting.sgml ports.sgml ppp.sgml printing.sgml -SRCS+= quotas.sgml relnotes.sgml routing.sgml russian.sgml -SRCS+= serial.sgml scsi.sgml scsihd.sgml sections.sgml sio.sgml skey.sgml -SRCS+= slipc.sgml slips.sgml stable.sgml submitters.sgml synching.sgml -SRCS+= term.sgml userppp.sgml uart.sgml linuxemu.sgml -SRCS+= jcontrib.sgml jmembers.sgml +# +# DOC is the root name of file(s) that will be generated (i.e, for +# foo.rtf, foo.ps, etc, DOC=foo. HTML generation ignores this, it +# is assumed that the stylesheet names this. If not set, DOC defaults +# to the name of the current directory. +# +DOC?= handbook -.include +# +# FORMATS lists the output formats that should be generated. Valid values +# are +# +# txt html html-split ps pdf rtf tar +# +# html-split is the file split into (probably) many individual HTML files, +# linked from one index.html file. +# +# This setting also affects which files will be removed with 'make clean'. +# If you 'make' with one setting, and 'make clean' with another, don't +# be surprised if it doesn't work. +FORMATS?= html-split + +# +# INSTALL_COMPRESSED lists the compressed versions to be installed by the +# install-* targets. Valid values are +# +# gz zip bz2 +# +# If left empty then no files will be installed compressed. +# +INSTALL_COMPRESSED?= gz + +# +# INSTALL_ONLY_COMPRESSED is non-empty if you only want to install the +# compressed versions of built files. +# +INSTALL_ONLY_COMPRESSED?= + +# +# SRCS lists the individual SGML files that make up the document. Changes +# to any of these files will force a rebuild +# + +# SGML content +SRCS= handbook.sgml +SRCS+= advanced-networking/chapter.sgml +SRCS+= backups/chapter.sgml +SRCS+= basics/chapter.sgml +SRCS+= bibliography/chapter.sgml +SRCS+= contrib/chapter.sgml +SRCS+= cutting-edge/chapter.sgml +SRCS+= disks/chapter.sgml +SRCS+= eresources/chapter.sgml +SRCS+= hw/chapter.sgml +SRCS+= install/chapter.sgml +SRCS+= internals/chapter.sgml +SRCS+= introduction/chapter.sgml +SRCS+= kernelconfig/chapter.sgml +SRCS+= kerneldebug/chapter.sgml +SRCS+= kernelopts/chapter.sgml +SRCS+= l10n/chapter.sgml +SRCS+= linuxemu/chapter.sgml +SRCS+= mail/chapter.sgml +SRCS+= mirrors/chapter.sgml +SRCS+= pgpkeys/chapter.sgml +SRCS+= policies/chapter.sgml +SRCS+= ppp-and-slip/chapter.sgml +SRCS+= printing/chapter.sgml +SRCS+= quotas/chapter.sgml +SRCS+= security/chapter.sgml +SRCS+= serialcomms/chapter.sgml +SRCS+= staff/chapter.sgml +SRCS+= x11/chapter.sgml +SRCS+= ports/chapter.sgml + +# Entities +SRCS+= authors.ent +SRCS+= chapters.ent +SRCS+= mailing-lists.ent + +# ------------------------------------------------------------------------ +# +# You shouldn't need to change definitions below here + +VOLUME?= ja/${.CURDIR:T} +DOC?= ${.CURDIR:T} +DISTRIBUTION?= doc/ja + +JADE= /usr/local/bin/jade +DSLHTML= ../../share/sgml/freebsd.dsl +DSLPRINT= ../../share/sgml/freebsd.dsl + +FREEBSDCATALOG= ../../share/sgml/catalog +DOCBOOKCATALOG= /usr/local/share/sgml/docbook/3.0/catalog +JADECATALOG= /usr/local/share/sgml/jade/catalog +DSSSLCATALOG?= /usr/local/share/sgml/docbook/dsssl/modular/catalog + +JADEFLAGS?= ${JADEOPTS} -c ${FREEBSDCATALOG} -c ${DSSSLCATALOG} -c ${DOCBOOKCATALOG} -c ${JADECATALOG} + +KNOWN_FORMATS= html html-split txt rtf ps pdf tex dvi tar + +# ------------------------------------------------------------------------ +# +# Look at ${FORMATS} and work out which documents need to be generated. +# It is assumed that the HTML transformation will always create a file +# called index.html, and that for every other transformation the name +# of the generated file is ${DOC}.format. +# +# ${_docs} will be set to a list of all documents that must be made +# up to date. +# +# ${CLEANFILES} is a list of files that should be removed by the "clean" +# target. ${COMPRESS_EXT:S/^/${DOC}.${_cf}.&/ takes the COMPRESS_EXT var, +# and prepends the filename to each listed extension, building a second +# list of files with the compressed extensions added. +# + +# Note: ".for _curformat in ${KNOWN_FORMATS}" is used several times in this +# file. I know they could have been rolled together in to one, much larger, +# loop. However, that would have made things more complicated for a newcomer +# to this file to unravel and understand, and a syntax error in the loop +# would have affected the entire build/compress/install process, instead +# of just one of them, making it more difficult to debug. + +# Note: It is the aim of this file that *all* the targets be available, +# not just those appropriate to the current ${FORMATS} and +# ${INSTALL_COMPRESSED} values. +# +# For example, if FORMATS=html and INSTALL_COMPRESSED=gz you could still +# type +# +# make book.rtf.bz2 +# +# and it will do the right thing. Or +# +# make install-rtf.bz2 +# +# for that matter. But don't expect "make clean" to work if the FORMATS +# and INSTALL_COMPRESSED variables are wrong. +# + +.for _curformat in ${FORMATS} +_cf=${_curformat} +.if ${_cf} == "html-split" +_docs+= index.html HTML.manifest +CLEANFILES+= `xargs < HTML.manifest` HTML.manifest +.elif ${_cf} == "html" +_docs+= ${DOC}.html +CLEANFILES+= ${DOC}.html +.elif ${_cf} == "txt" +_docs+= ${DOC}.txt +CLEANFILES+= ${DOC}.html ${DOC}.txt +.elif ${_cf} == "dvi" +_docs+= ${DOC}.dvi +CLEANFILES+= ${DOC}.aux ${DOC}.dvi ${DOC}.log ${DOC}.tex +.elif ${_cf} == "ps" +_docs+= ${DOC}.ps +CLEANFILES+= ${DOC}.aux ${DOC}.dvi ${DOC}.log ${DOC}.tex ${DOC}.ps +.elif ${_cf} == "pdf" +_docs+= ${DOC}.pdf +CLEANFILES+= ${DOC}.aux ${DOC}.dvi ${DOC}.log ${DOC}.tex ${DOC}.pdf +.elif ${_cf} == "rtf" +_docs+= ${DOC}.rtf +CLEANFILES+= ${DOC}.rtf +.elif ${_cf} == "tar" +_docs+= ${DOC}.tar +CLEANFILES+= ${DOC}.tar +.endif +.endfor + +# +# Build a list of install-${format}.${compress_format} targets to be +# by "make install". Also, add ${DOC}.${format}.${compress_format} to +# ${_docs} and ${CLEANFILES} so they get built/cleaned by "all" and +# "clean". +# +.if !empty(INSTALL_COMPRESSED) +.for _curformat in ${FORMATS} +_cf=${_curformat} +.for _curcomp in ${INSTALL_COMPRESSED} +.if ${_cf} == "html-split" +_curinst+= install-html-split.tar.${_curcomp} +_docs+= ${DOC}.html-split.tar.${_curcomp} +.else +_curinst+= install-${_curformat}.${_curcomp} +_docs+= ${DOC}.${_curformat}.${_curcomp} +CLEANFILES+= ${DOC}.${_curformat}.${_curcomp} +.endif +.endfor +.endfor +.endif + +# ------------------------------------------------------------------------ +# +# Targets +# + +# +# Build Targets +# + +# If no target is specifed then .MAIN is made +.MAIN: all + +all: ${_docs} + +index.html HTML.manifest: ${SRCS} + ${JADE} -V html-manifest -ioutput.html ${JADEFLAGS} -d ${DSLHTML} -t sgml ${DOC}.sgml + -tidy -i -m -f /dev/null -raw *.html + +${DOC}.html: ${SRCS} + ${JADE} -ioutput.html -V nochunks ${JADEFLAGS} -d ${DSLHTML} -t sgml ${DOC}.sgml > ${DOC}.html + -tidy -i -m -f /dev/null -raw ${DOC}.html + +${DOC}.html-split.tar: HTML.manifest + tar cf ${.TARGET} `xargs < HTML.manifest` + +${DOC}.txt: ${DOC}.html + lynx -nolist -dump ${DOC}.html > ${DOC}.txt + +${DOC}.rtf: ${SRCS} + ${JADE} -ioutput.print ${JADEFLAGS} -d ${DSLPRINT} -t rtf ${DOC}.sgml + +${DOC}.tex: ${SRCS} + ${JADE} -ioutput.print ${JADEFLAGS} -d ${DSLPRINT} -t tex ${DOC}.sgml + +${DOC}.dvi: ${DOC}.tex + @echo "==> TeX pass 1/3" + -tex "&jadetex" ${DOC}.tex + @echo "==> TeX pass 2/3" + -tex "&jadetex" ${DOC}.tex + @echo "==> TeX pass 3/3" + -tex "&jadetex" ${DOC}.tex + +${DOC}.pdf: ${DOC}.tex + @echo "==> PDFTeX pass 1/3" + -pdftex "&pdfjadetex" ${DOC}.tex + @echo "==> PDFTeX pass 2/3" + -pdftex "&pdfjadetex" ${DOC}.tex + @echo "==> PDFTeX pass 3/3" + pdftex "&pdfjadetex" ${DOC}.tex + +${DOC}.ps: ${DOC}.dvi + dvips -o ${DOC}.ps ${DOC}.dvi + +${DOC}.tar: + tar cf ${.TARGET} ${SRCS} + +# ------------------------------------------------------------------------ +# +# Compress targets +# + +# +# The list of compression extensions this Makefile knows about. If you +# add new compression schemes, add to this list (which is a list of +# extensions, hence bz2, *not* bzip2) and extend the _PROG_COMPRESS_* +# targets. +# +KNOWN_COMPRESS= gz bz2 zip + +# +# You can't build suffix rules to do compression, since you can't wildcard +# the source suffix. So these are defined .USE, to be tacked on as +# dependencies of the compress-* targets. +# + +_PROG_COMPRESS_gz: .USE + gzip -9 -c ${.ALLSRC} > ${.TARGET} + +_PROG_COMPRESS_bz2: .USE + bzip2 -9 -c ${.ALLSRC} > ${.TARGET} + +_PROG_COMPRESS_zip: .USE + zip -j -9 ${.TARGET} ${.ALLSRC} + +# +# Build a list of targets for each compression scheme and output format. +# Don't compress the html-split output format. +# +.for _curformat in ${KNOWN_FORMATS} +_cf=${_curformat} +.for _curcompress in ${KNOWN_COMPRESS} +.if ${_cf} == "html-split" +${DOC}.${_cf}.tar.${_curcompress}: ${DOC}.${_cf}.tar _PROG_COMPRESS_${_curcompress} +.else +${DOC}.${_cf}.${_curcompress}: ${DOC}.${_cf} _PROG_COMPRESS_${_curcompress} +.endif +.endfor +.endfor + +# +# Install targets +# +# Build install-* targets, one per allowed value in FORMATS. Need to build +# two specific targets; +# +# install-html-split - Handles multiple .html files being generated +# from one source. Uses the HTML.manifest file +# created by the stylesheets, which should list +# each .html file that's been created. +# +# install-* - Every other format. The wildcard expands to +# the other allowed formats, all of which should +# generate just one file. +# +# "beforeinstall" and "afterinstall" are hooks in to this process. +# Redefine them to do things before and after the files are installed, +# respectively. +# +install: beforeinstall realinstall afterinstall + +# +# Build a list of install-format targets to be installed. These will be +# dependencies for the "realinstall" target. +# +.if empty(INSTALL_ONLY_COMPRESSED) +_curinst+= ${FORMATS:S/^/install-/g} +.endif + +realinstall: ${_curinst} + +.for _curformat in ${KNOWN_FORMATS} +_cf=${_curformat} +.if !target(install-${_cf}) +.if ${_cf} == "html-split" +install-${_cf}: index.html + @if [ ! -f HTML.manifest ]; then \ + echo "HTML.manifest file does not exist, can't install";\ + exit 1; \ + fi + ${INSTALL} ${COPY} -o ${DOCOWN} -g ${DOCGRP} -m ${DOCMODE} \ + `xargs < HTML.manifest` ${DESTDIR}${DOCDIR}/${VOLUME}; \ + if [ -f ${.OBJDIR}/${DOC}.ln ]; then \ + (cd ${DESTDIR}${DOCDIR}/${VOLUME}; \ + sh ${.OBJDIR}/${DOC}.ln); \ + fi +.for _compressext in ${KNOWN_COMPRESS} +install-${_cf}.tar.${_compressext}: ${DOC}.${_cf}.tar.${_compressext} + ${INSTALL} ${COPY} -o ${DOCOWN} -g ${DOCGRP} -m ${DOCMODE} \ + ${.ALLSRC} ${DESTDIR}${DOCDIR}/${VOLUME} +.endfor +.else +install-${_cf}: ${DOC}.${_cf} + ${INSTALL} ${COPY} -o ${DOCOWN} -g ${DOCGRP} -m ${DOCMODE} \ + ${.ALLSRC} ${DESTDIR}${DOCDIR}/${VOLUME} + +.for _compressext in ${KNOWN_COMPRESS} +install-${_cf}.${_compressext}: ${DOC}.${_cf}.${_compressext} + ${INSTALL} ${COPY} -o ${DOCOWN} -g ${DOCGRP} -m ${DOCMODE} \ + ${.ALLSRC} ${DESTDIR}${DOCDIR}/${VOLUME} +.endfor +.endif +.endif +.endfor + +.for __target in beforeinstall afterinstall depend _SUBDIR +.if !target(${__target}) +${__target}: +.endif +.endfor + +# +# Distribution target +# +# Like "install", but places the files into the correct distribution +# +.if !target(distribute) +distribute: +.for dist in ${DISTRIBUTION} + cd ${.CURDIR}; $(MAKE) install DESTDIR=${DISTDIR}/${dist} +.endfor +.endif + +.include +.include diff --git a/ja_JP.eucJP/books/handbook/advanced-networking/chapter.sgml b/ja_JP.eucJP/books/handbook/advanced-networking/chapter.sgml new file mode 100644 index 0000000000..c11c0c3b2d --- /dev/null +++ b/ja_JP.eucJP/books/handbook/advanced-networking/chapter.sgml @@ -0,0 +1,1079 @@ + + + + 高度なネットワーク + + + ゲートウェイとルート + + 原作: &a.gryphon;. + 6 October 1995. + + 訳: &a.jp.yuki;. + 6 September 1996. + + ある計算機が他の計算機をみつけることができるようにするには, + ある計算機から他の計算機へ, + どのようにたどり着くかを適切に記述するた めの仕組みが必要です. + この仕組みをルーティングと呼びます. “ルート(経路)”は + “destination (目的地) ”と “gateway (ゲー + トウェイ) ”の 2つのアドレスの組で定義します. あなたが + destination へアクセスしようとした場合, + gateway + を通って送られることをこのペアは示しています. destination + には個々のホスト, サブネット, “デフォルト”の 3つの + タイプがあります. + “デフォルトルート”は他への経路が適用できない + 場合に使われます. のちほどデフォルトルートについて少し述べること + するとして, ここでは, 個々のホスト, インタフェース + (“リンク”と も呼ばれます), + イーサネットハードウェアアドレスという 3つのタイ + プのゲートウェイについて説明します. + + + + + 以下に示す 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.25510.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: イーサネットハードウェアへの参照を含む + 経路です. + + + + + + + + デフォルトルート + + ローカルシステムからリモートホストにコネクションを張る + 必要がある場合, 既知のパスが存在するかどうかを確認するためにル + ーティングテーブルをチェッ クします. + 到達するためのパスを知っているサブネットの内部にリモ + ートホストがある場合 (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) + + + + + マルチホームホスト + + ここで扱うべき他のタイプの設定があります. + それは2つの異なるネットワー クにまたがるホストです. + 技術的にはゲートウェイとして機能するマシン (上 の例では + PPPコネクションを用いています) はマルチホームホストで す. + しかし実際にはこの言葉は, + 2つのローカルエリアネットワーク上のサ + イトであるマシンを指す言葉としてのみ使われます. + + 2枚のイーサネットカードを持つマシンが, 別のサブネット + 上にそれぞれアドレスを持っている場合があります. あるいは, + イーサネットカードを1枚持っているマシンで, + ifconfigのエイリアスを使っているかもしれません. + 物理的に分かれている2つのイーサネットのネットワークが使われて + いるならば前者が用いられます. 後者は, 物理的には1つのネットワ + ークセグメントで, 論理的には分かれている 2つのサブネットとする + 場合に用いられます. + + どちらにしても, + このマシンがお互いのサブネットへのゲートウェイ (inbound + route) として定義されていることが分かるように, おのお + ののサブネットでルーティングテーブルを設定します. このマシンが + 2 つのサブネットの間のブリッジとして動作するという構成は, パケ + ットのフィルタリングを実装する必要がある場合や, 一方向または双 + 方向のファイアウォールを利用したセキュリティを構築する場合によ + く用いられます. + + + + ルーティングの伝播 + + すでに外部との経路をどのように定義したらよいかは + 説明しました. + しかし外部から私たちのマシンをどのようにして + 見つけるのかについては説明していません. + + ある特定のアドレス空間 (この例では class-C のサブネット) + にお けるすべてのトラフィックが, + 到着したパケットを内部で転送するネ + ットワーク上の特定のホストに送られるようにルーティングテーブル + を設定することができるのは分かっています. + + あなたのサイトにアドレス空間を割り当てる場合, + あなたのサブネッ トへのすべてのトラフィックがすべて + PPPリンクを通じてサイトに送 + ってくるようにサービスプロバイダはルーティングテーブルを設定し + ます. しかし, 国境の向こう側のサイトはどのようにしてあなたの + ISPへ送ることを知るのでしょうか? + + 割り当てられているすべてのアドレス空間の経路を維持する + (分散し ている DNS 情報とよく似た) システムがあり, + そのインターネット バックボーンへの接続点を定義しています. + “バックボーン” とは国を越え, + 世界中のインターネットのトラフィックを運ぶ主要 + な信用できる幹線のことです. どのバックボーンマシンも, + あるネット + ワークから特定のバックボーンのマシンへ向かうトラフィックと, + そのバックボーンのマシンからあなたのネットワークに届くサービス + プロバイダまでのチェーンのマスタテーブルのコピーを持っていま + す. + + あなたのサイトが接続(プロバイダからみて内側にある + ことになります) したということを, プロバイダからバックボー + ンサイトへ通知することはプロバイダの仕事です. これが経 + 路の伝搬です. + + + + トラブルシューティング + + ルーティングの伝搬に問題が生じて, いくつかのサイトが + 接続をおこなうことができなくなることがあります. + ルーティングがどこでおかしくなっているかを明らかにするのに + 最も有効なコマンドはおそらく &man.traceroute.8; コマンドでしょ + う. このコマンドは, + あなたがリモートマシンに対して接続をおこなう + ことができない(例えば &man.ping.8; に失敗するような場合) + 場合も, 同じように有効です. + + &man.traceroute.8; コマンドは, + 接続を試みているリモートホスト を引数にして実行します. + 試みているパスの経由する ゲートウェイホストを表示し, + 最終的には目的のホストに たどり着くか, + コネクションの欠如によって終ってしまうかのどちら + かになります. + + より詳しい情報は, &man.traceroute.8; + のマニュアルページをみてください. + + + + + NFS + + 原作: &a.jlind;. + + 訳: &a.jp.tomo;. + 6 September 1996. + + ISA用のイーサネットアダプタの中には性能が悪いため, + ネットワーク, 特に NFS で深刻な問題がおきるものがあります. + これは FreeBSD に限ったことでは ありませんが, FreeBSD + でも起こり得ます. + + この問題は, + (FreeBSDを使用した) PC がシリコン・グラフィックス社や + サン・マイクロ システムズ社などの高性能な WS + にネットワーク接続されている場合に頻繁に起こります. + NFS マウントはうまく行きます. また, + いくつかの操作もうまく働きますが, 他のシステム (WS) + に対する要求や応答は続いていても, 突然サーバ が + クライアントの要求に対して反応しなくなります. + これは, クライアントが FreeBSD か上記の WS であるとき, + にクライアント側に起きる 現象です. + 多くのシステムでは, いったんこの問題が起きたら解決できないので, + 行儀よくシャットダウンするしかありません. + 唯一の解決策は, この状況に陥る前にクライアントを + リセットすることです. なぜなら, 一旦この状況に陥ると + NFS を解除することさえできないからです. + + + “正しい”解決法は, + より高性能のイーサネットアダプタをFreeBSDシステムに + インストールすることですが, + 満足な操作ができるような簡単な方法があります. もし, + FreeBSDシステムがサーバになるのなら, + クライアントからのマウント時に + オプションをつけて下さい. + もしFreeBSDシステムがクライアントになる + のなら, NFSファイルシステムを + オプションつきでマウントして下さい. + これらのオプションは自動的にマウントをおこなう場合には + クライアントの fstab + エントリの4番目のフィールドに指定してもよいですし, + 手動マウントの場合は mount コマンドの + パラメータで指定してもよいでしょう. + + NFSサーバとクライアントが別々のネットワーク上にあるような + 場合, これと間違えやすい他の問題が起きることに注意して下さい. + そのような場合は, ルータが必要な UDP 情報をきちんと + ルーティングしているかを確かめて下さい. + そうでなければ, たとえあなたが何をしようと解決できないでしょう. + + + 次の例では, fastwsは高性能のWSのホスト + (インタフェース)名で, + freeboxは低性能のイーサネットアダプタを備えた + FreeBSDシステムのホスト(インタフェース)名です. + + また, /sharedfs はエクスポートされる + NFS ファイルシステムであり (man exports + を見て下さい), /project + はエクスポートされたファイルシステムの + クライアント上のマウントポイントとなります. + 全ての場合において, , + といった追加オプションが + アプリケーションにより要求されるかもしれないことに + 注意して下さい. + + クライアント側 FreeBSD システム (freebox) + の例は: + + freebox/etc/fstab + に次のように書いて下さい: + + +fastws:/sharedfs /project nfs rw,-r=1024 0 0 + + freebox 上で手動で mount + コマンドを実行する場合は次のようにして下さい: + + &prompt.root; mount -t nfs -o -r=1024 fastws:/sharedfs /project + + サーバ側FreeBSDシステムの例は: fastws の + /etc/fstab に次のように書いて下さい: + + +freebox:/sharedfs /project nfs rw,-w=1024 0 0 + + fastws 上で手動で mount + コマンドで実行する場合は次のようにして下さい: + + &prompt.root; mount -t nfs -o -w=1024 freebox:/sharedfs /project + + 近いうちにどのような 16 ビットのイーサネットアダプタでも + 上記の読み出し, + 書き込みサイズの制限なしの操作ができるようになるでしょう. + + 失敗が発生したとき何が起きているか関心のある人に, + なぜ回復不可能なのか も含めて説明します. NFSは通常 + (より小さいサイズへ分割されるかもしれませんが) + 8Kの“ブロック” サイズで働きます. + イーサネットのパケットサイズは最大1500バイト程度なので, + 上位階層のコードにとっては1つのユニットのままなのですが, + NFS“ブロック”は + 複数のイーサネットパケットに分割されます. そして受信され, + 組み立て直されてから 肯定応答されなければなりません. + 高性能のWSは次々に NFSユニットを構成するパケットを, + 基準の範囲内で間隔を詰めて 次々に送り出すことができます. 小さく, + 容量の低いカードでは, 同じユニットの + 前のパケットがホストに転送される前に, 後のパケットがそれを + 「踏みつぶし」てしまいます. + このため全体としてのユニットは再構成もされないし, + 肯定応答もされません. その結果, + WSはタイムアウトして再送を試みますが, + 8Kのユニット全体を再送しようとするので, このプロセスは + 際限無く繰り返されてしまいます. + + ユニットサイズを イーサネットのパケットサイズの + 制限以下に抑えることにより, 受信された完全な + イーサネットパケットは個々に肯定応答を受けられることが + 保証されるので, + デッドロック状態を避けることができるようになります. + + 高性能のカードを使っている場合でも, 高性能な WS + が力任せに次々と PC システムにデータを送ったときには + 「踏みつぶし」 が起きるかもしれません. + そのような「踏みつぶし」は NFS “ユニット” + では保証されていません. 「踏みつぶし」が起こったとき, + 影響を受けたユニットは再送されます. そして受信され, + 組み立てられ, + 肯定応答される公平な機会が与えられるでしょう. + + + + Diskless operation + + 原作: &a.martin; + + 訳: &a.jp.yasu; + + netboot.com/netboot.rom + によって, ディスクのないクライアントで ネットワーク経由で + FreeBSD マシンのブートを行い FreeBSD を走らせることができます. + 2.0 ではローカルなスワップを持つことができます. + NFS 経由のスワッピングもサポートされています. + + サポートされているイーサネットカード: + Western Digital/SMC 8003, 8013, 8216 とその互換ボード, + NE1000/NE2000 とその互換カード (再コンパイルが必要) + + + セットアップの手順 + + + + サーバにするマシンを見つけます. + このマシンには, FreeBSD 2.0のバイナリとbootpを + 記憶するだけの十分なディスクスペースが必要です. + tftp と NFS も使えます. + + テストしたマシン: + + + + HP9000/8xx / HP-UX 9.04以降 + (9.04以前では動きません) + + + + Sun/Solaris 2.3. (bootpが必要) + + + + + + クライアントに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: + + + + + クライアントにブート情報を提供する 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 + + クライアントのIPアドレスの表示/セット + + + + server + + bootp/tftp サーバのアドレスの表示/セット + + + + netmask + + netmaskの表示/セット + + + + hostname name + hostnameの表示/セット + + + + kernel + + カーネル名の表示/セット + + + + rootfs + + root ファイルシステムの表示/セット + + + + swapfs + + swap ファイルシステムの表示/セット + + + + swapsize + + diskless swapsize を Kbytes単位でセット + + + + diskboot + ディスクからのブート + + + + autoboot + ブートプロセスの続行 + + + + trans + | + トランシーバのオン|オフ + + + + flags + + + + ブートフラグの設定 + + + + + + 完全にディスクレスな場合の一般的な 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 + + + + + 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 + + + + NFS経由でスワッピングを行う場合 + (完全にディスクレスな場合の設定), クライアントが使用する + swap ファイルを dd で作成します. + もし, swapfs コマンドが上記の例のように + 引数 /swapfsを持ちそのサイズが 20000 + である場合, myclientに対するスワップファイルは + /swapfs/swap.X.X.X.X + で呼び出されます. ここで + X.X.X.X はクライアントの IP + アドレスです. 例: + + &prompt.root; dd if=/dev/zero of=/swapfs/swap.192.1.2.4 bs=1k count=20000 + + また, スワッピングが開始されるとクライアントの + スワップスペースはセンシティブな情報を含むようになるので, + 不正なアクセスを防止するため, このファイルへの + 読み書きのアクセス制限がなされていることを確認して下さい: + + + &prompt.root; chmod 0600 /swapfs/swap.192.1.2.4 + + + + クライアントがそれぞれのrootファイルシステムとして使う + ディレクトリにrootファイルシステムを展開します. + (上記の例では/rootfs/myclient). + + + + HP-UX システム: サーバはHP9000/800 + シリーズのマシンで, HP-UX 9.04 以降が必要です. + これ以前のバージョンでは NFS + を経由するデバイスファイルが 作成ができません. + + + + /rootfs/myclient に + /dev を + 展開する際に, いくつかのシステム (HPUX) では + FreeBSD に合った デバイスファイルが作成されないので + 注意してください. + その際には最初の起動時にシングルユーザモードに + 移行して (ブートの段階でCtrl-Cを押す), + /dev に移って + sh ./MAKEDEV all として, + クライアントからこれを 修正してください. + + + + + + クライアントで netboot.com + を実行するか, netboot.rom + ファイルから EPROMを作成します. + + + + + + <filename>/</filename> および <filename>/usr</filename> + ファイルシステムを共有して使用する + + 今のところ, これを行う公式に認められた方法はありませんが, + 私はそれぞれのクライアントで /usr + ファイルシステムと 個々の / + ファイルシステム を共有して使っています. + どなたかこれをきちんと行うやり方の提案がありましたら, + 私に, もしくは &a.core; グループに知らせてください. + + + + 特定の設定についてnetbootをコンパイルする + + /sys/i386/boot/netboot/Makefile + の中の設定を変更して + コンパイルすることで, netbootでNE1000/2000 + カードをサポートします. + このファイルの先頭にあるコメントを見てください. + + + + + ISDN + + 最終更新: &a.wlloyd;. + + 訳: &a.jp.kiroh;. + 11 December 1996. + + ISDN 技術とハードウェアに関しては, Dan Kegel's ISDN + Page がよい参考になるでしょう. + + ISDN の導入手順は, 簡単にいって以下のようになります. + + + + ヨーロッパ在住の方は, ISDN + カードの節に進んでください. + + + + ISDN を使って, + インターネットプロバイダに(専用線は使用せず), ダ + イアルアップ接続しようとしている場合は, + ターミナルアダプタの使用を考え てみてください. + この方法はもっとも柔軟性があり, プロバイダを変更した場 + 合の問題も少ないでしょう. + + + + 2つの LAN の間を接続しようする場合や, ISDN + 専用線を使用する場合 には, + スタンドアローンルータ/ブリッジの使用を勧めます. + + + + どの方法を用いるかを決定するには, + 費用が重要な要素になってきます. 以下に, 最も安価な方法から, + 高価な方法まで順に説明していきます. + + + ISDN カード + + 著者:&a.hm;. + + このセクションの記述は, DSS1/Q.931 ISDN + 標準がサポートされている国のユーザにのみ有効です. + + 最近増えてきている PC ISDN カードのうちいくつかは, FreeBSD + 2.2.x 以降で isdn4bsd + ドライバパッケージによりサポートされています. + 依然として開発中ではありますが, + ヨーロッパ中でうまく動作しているという報告があります. + + 最新の isdn4bsd は, ftp://isdn4bsd@ftp.consol.de/pub から入手できます. + この ftp サイトでは, ユーザ名として isdn4bsd + を使い, パスワードにメールアドレスを使ってログインする + 必要があります. ログインできたら pub + ディレクトリに移動してください. ユーザー名 + ftpanonymous + によるログインでは, 必要なファイルにたどりつけません. + + 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 と記入したメールを + &a.majordomo; 宛てに送ってください. + + + + 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 を使う際の最大の問題点は, + モデムの場合と同じく良いシリアルカー + ドが必要であるということです. + + シリアルデバイスの詳細, + そして非同期シリアルポートと同期シリアルポート の差については, + ハンドブックのシリアルポート の + 節を参照してください. + + 標準の PC シリアルポート(非同期)に接続された TA は, 128Kbs + の接続を行っ ていても, 最大通信速度が 115.2Kbs + に制限されてしまいます. 128Kbs の ISDN + の性能を最大限に生かすためには, TA + を同期シリアルカードに接続しな ければなりません. + + 内蔵 TA を購入して, + 同期/非同期問題を片付けてしまおうとは思わないでく ださい. + 内蔵 TA には, 単に標準 PC シリアルポートのチップが内蔵されてい + るだけです. 内蔵 TA の利点といえば, + シリアルケーブルを買わなくていいと いうことと, + 電源コンセントが一つ少なくて済むということくらいでしょう. + + + 同期カードと TA の組合せは 386 の FreeBSD + マシンの場合でも, スタンドア + ローンのルータと同程度の速度は確保できます. + またこの組合せでは, ルータ より柔軟な設定が可能です. + + 同期カード/TA を選ぶか, スタンドアローンルータを選ぶかは, + 多分に宗教的 な問題です. + メーリングリストでもいくつか議論がありました. 議論の内容に + ついては, archives + を参照してください. + + + + スタンドアローン ISDN ブリッジ/ルータ + + ISDN ブリッジやルータは, OS 特有のものではありません. + もちろん FreeBSD 特有のものでもありません. + ルーティングやブリッジング技術に関す る詳細は, + ネットワークの参考書をご覧ください. + + このページでは, + ルータとブリッジにどちらでもあてはまるように記述します. + + ISDN ルータ/ブリッジは, + ローエンドの製品のコストが下がってきている こともあり, + より一般的に使用されるようになるでしょう. ISDN ルータは, + 外見は小さな箱で, + ローカルのイーサネットネットワーク(もしくはカード)と 直接, + 接続します. また, + 自身で他のブリッジ/ルータとの接続を制御します. PPP + や他のプロトコルを使用するためのソフトウェアは, + すべて組み込まれて います. + + ルータは, 完全な同期 ISDN 接続を使用するため, 通常の TA + と比較してスルー プットが大幅に向上します. + + ISDN ルータ/ブリッジを使用する場合の最大の問題点は, + 各メーカーの製品間 に相性の問題がまだ存在することです. + インターネットプロバイダとの接続を 考えている場合には, + プロバイダと相談することをお勧めします. + + 事務所の LAN と家庭の LAN の間など, 二つの LAN + セグメントの間を接続 しようとしている場合は, + ブリッジ/ルータの使用がもっともメンテナンスが 簡単で, + 努力が少なくてすむ方法です. 両側の機材を購入するのであれば, + メー カー間の接続性の問題もないでしょう. + + たとえば家庭の LAN や出張所の LAN + を本社のネットワークに接続するために は, + 以下のような設定が使用できます. + + + 出張所 LAN または 家庭 LAN + + ネットワークは, 10 Base T イーサネットです. + ルータとネットワークの間は, 必要に応じて AUI/10BT + トランシーバを使って接続します. + + + +---Sun ワークステーション +| +---FreeBSD マシン +| +---Windows 95 (別に勧めているわけじゃありません) +| +スタンドアローンルータ + | +ISDN BRI ライン + + + 家庭/出張所 LAN で, + 一台しかコンピュータを接続しないのであれば, クロス + のツイストペアケーブルを使用して, + スタンドアローンルータと直結も可能で す. + + + + 本社 LAN や他の LAN + + ネットワークは, ツイストペアイーサネットです. + + + + -------Novell サーバ + | | + |ハ ---Sun + | | + | ---FreeBSD + | | + |ブ ---Windows 95 + | | + |___---スタンドアローンルータ + | + ISDN BRI ライン + + + + ほとんどのルータ/ブリッジでは, 別々の二つのサイトに対して, + 同時にそれ + ぞれ独立した二つの PPP 接続が可能です. + これは, 通常の TA ではサポート されない機能で, + ルータ/ブリッジ接続の大きな利点です (シリアルポートを + 二つもつ特殊(そして高価な) TA では可能です). + チャンネル割り当てや MPP などと混同しないでください. + + これは, 大変便利な機能です. + たとえば事務所で専用線インターネット ISDN 接続を使用していて, + 別の ISDN ラインを購入したくないとします. この場合, + 事務所のルータは, 一つの専用線 B + チャンネル接続(64Kbs)を維持しつつ, 別 の B + チャンネルを他の用途に使用することができます. たとえば, + 他の場所 とのダイアルイン, ダイアルアウトに使用したり, + バンド幅を増やすために, + インターネットとの接続への動的に割り当て(MPP + など)に使用したりすること が可能です. + + またイーサネットブリッジは, IP パケットだけでなく IPX/SPX + などすべての + プロトコルのパケットを中継することが可能です. + + + + + + diff --git a/ja_JP.eucJP/books/handbook/authors.ent b/ja_JP.eucJP/books/handbook/authors.ent new file mode 100644 index 0000000000..2668aa9bd8 --- /dev/null +++ b/ja_JP.eucJP/books/handbook/authors.ent @@ -0,0 +1,348 @@ + + +abial@FreeBSD.ORG"> + +ache@FreeBSD.ORG"> + +adam@FreeBSD.ORG"> + +alex@freebsd.org"> + +amurai@FreeBSD.ORG"> + +andreas@FreeBSD.ORG"> + +archie@FreeBSD.ORG"> + +asami@FreeBSD.ORG"> + +ats@FreeBSD.ORG"> + +awebster@pubnix.net"> + +bde@FreeBSD.ORG"> + +billf@FreeBSD.ORG"> + +brandon@FreeBSD.ORG"> + +brian@FreeBSD.ORG"> + +cawimm@FreeBSD.ORG"> + +charnier@FreeBSD.ORG"> + +chuckr@glue.umd.edu"> + +chuckr@FreeBSD.ORG"> + +cracauer@FreeBSD.ORG"> + +csgr@FreeBSD.ORG"> + +cwt@FreeBSD.ORG"> + +danny@FreeBSD.ORG"> + +darrenr@FreeBSD.ORG"> + +davidn@blaze.net.au"> + +dburr@FreeBSD.ORG"> + +dcs@FreeBSD.ORG"> + +des@FreeBSD.ORG"> + +dfr@FreeBSD.ORG"> + +dg@FreeBSD.ORG"> + +dillon@FreeBSD.ORG"> + +dima@FreeBSD.ORG"> + +dirk@FreeBSD.ORG"> + +Dirk.vanGulik@jrc.it"> + +dt@FreeBSD.ORG"> + +dufault@FreeBSD.ORG"> + +dwhite@FreeBSD.ORG"> + +dyson@FreeBSD.ORG"> + +eivind@FreeBSD.ORG"> + +ejc@FreeBSD.ORG"> + +erich@FreeBSD.ORG"> + +faq@freebsd.org"> + +fenner@FreeBSD.ORG"> + +flathill@FreeBSD.ORG"> + +foxfair@FreeBSD.ORG"> + +fsmp@FreeBSD.ORG"> + +gallatin@FreeBSD.ORG"> + +gclarkii@FreeBSD.ORG"> + +gena@NetVision.net.il"> + +ghelmer@cs.iastate.edu"> + +gibbs@FreeBSD.ORG"> + +mjacob@FreeBSD.ORG"> + +gj@FreeBSD.ORG"> + +gpalmer@FreeBSD.ORG"> + +graichen@FreeBSD.ORG"> + +grog@FreeBSD.ORG"> + +gryphon@healer.com"> + +guido@FreeBSD.ORG"> + +hanai@FreeBSD.ORG"> + +handy@sxt4.physics.montana.edu"> + +helbig@FreeBSD.ORG"> + +hm@FreeBSD.ORG"> + +hoek@FreeBSD.ORG"> + +hosokawa@FreeBSD.ORG"> + +hsu@FreeBSD.ORG"> + +imp@FreeBSD.ORG"> + +itojun@itojun.org"> + +jb@cimlogic.com.au"> + +jdp@FreeBSD.ORG"> + +jehamby@lightside.com"> + +jfieber@FreeBSD.ORG"> + +james@nexis.net"> + +jgreco@FreeBSD.ORG"> + +jhay@FreeBSD.ORG"> + +jkh@FreeBSD.ORG"> + +jkoshy@FreeBSD.ORG"> + +jlemon@FreeBSD.ORG"> + +john@starfire.MN.ORG"> + +jlrobin@FreeBSD.ORG"> + +jmacd@FreeBSD.ORG"> + +jmb@FreeBSD.ORG"> + +jmg@FreeBSD.ORG"> + +jmz@FreeBSD.ORG"> + +joerg@FreeBSD.ORG"> + +john@FreeBSD.ORG"> + +jraynard@freebsd.org"> + +jseger@freebsd.org"> + +julian@FreeBSD.ORG"> + +jvh@FreeBSD.ORG"> + +karl@FreeBSD.ORG"> + +kato@FreeBSD.ORG"> + +kelly@fsl.noaa.gov"> + +ken@FreeBSD.ORG"> + +kjc@FreeBSD.ORG"> + +kris@FreeBSD.ORG"> + +kuriyama@FreeBSD.ORG"> + +lars@FreeBSD.ORG"> + +ljo@FreeBSD.ORG"> + +luoqi@FreeBSD.ORG"> + +markm@FreeBSD.ORG"> + +martin@FreeBSD.ORG"> + +max@FreeBSD.ORG"> + +mark@vmunix.com"> + +mbarkah@FreeBSD.ORG"> + +mckay@FreeBSD.ORG"> + +mckusick@FreeBSD.ORG"> + +md@bsc.no"> + +mks@FreeBSD.ORG"> + +motoyuki@FreeBSD.ORG"> + +mph@FreeBSD.ORG"> + +mpp@FreeBSD.ORG"> + +msmith@FreeBSD.ORG"> + +nate@FreeBSD.ORG"> + +nectar@FreeBSD.ORG"> + +newton@FreeBSD.ORG"> + +n_hibma@FreeBSD.ORG"> + +nik@FreeBSD.ORG"> + +nsj@FreeBSD.ORG"> + +obrien@FreeBSD.ORG"> + +olah@FreeBSD.ORG"> + +opsys@open-systems.net"> + +paul@FreeBSD.ORG"> + +pb@fasterix.freenix.org"> + +pds@FreeBSD.ORG"> + +peter@FreeBSD.ORG"> + +phk@FreeBSD.ORG"> + +pjchilds@imforei.apana.org.au"> + +proven@FreeBSD.ORG"> + +pst@FreeBSD.ORG"> + +rgrimes@FreeBSD.ORG"> + +rhuff@cybercom.net"> + +ricardag@ag.com.br"> + +rich@FreeBSD.ORG"> + +rnordier@FreeBSD.ORG"> + +roberto@FreeBSD.ORG"> + +rse@FreeBSD.ORG"> + +sada@FreeBSD.ORG"> + +scrappy@FreeBSD.ORG"> + +se@FreeBSD.ORG"> + +sef@FreeBSD.ORG"> + +shige@FreeBSD.ORG"> + +simokawa@FreeBSD.ORG"> + +smace@FreeBSD.ORG"> + +smpatel@FreeBSD.ORG"> + +sos@FreeBSD.ORG"> + +stark@FreeBSD.ORG"> + +stb@FreeBSD.ORG"> + +steve@FreeBSD.ORG"> + +swallace@FreeBSD.ORG"> + +tedm@FreeBSD.ORG"> + +tegge@FreeBSD.ORG"> + +tg@FreeBSD.ORG"> + +thepish@FreeBSD.ORG"> + +torstenb@FreeBSD.ORG"> + +truckman@FreeBSD.ORG"> + +ugen@FreeBSD.ORG"> + +uhclem@FreeBSD.ORG"> + +ulf@FreeBSD.ORG"> + +vanilla@FreeBSD.ORG"> + +wes@FreeBSD.ORG"> + +whiteside@acm.org"> + +wilko@yedi.iaf.nl"> + +wlloyd@mpd.ca"> + +wollman@FreeBSD.ORG"> + +wosch@FreeBSD.ORG"> + +wpaul@FreeBSD.ORG"> + +yokota@FreeBSD.ORG"> + diff --git a/ja_JP.eucJP/books/handbook/backups/chapter.sgml b/ja_JP.eucJP/books/handbook/backups/chapter.sgml new file mode 100644 index 0000000000..1964c09290 --- /dev/null +++ b/ja_JP.eucJP/books/handbook/backups/chapter.sgml @@ -0,0 +1,750 @@ + + + + バックアップ + + ハードウェアコンパチビリティの問題は現在のコンピュータ業界 + でもっとも多く起きる種類の問題であり, + FreeBSD もこれに無縁ではありません. + 市場にある驚くほど多様な種類の製品をサポートすることによって, + FreeBSDは 安価に普及している PC ハードウェアで + 動かすことができるという利点はこの点では不利でもあります. + FreeBSD のサポートするハードウェアを徹底的に調べて + 提供することは不可能ですが, このセクションでは FreeBSD + に含まれるデバイスドライバとそのドライバがサポートする + ハードウェアのカタログを示します. 可能で適切なものについては + 特定の製品についての注釈を含めました. + また,このハンドブックの + コンフィグレーションファイル のセクションにも + サポートされているデバイスのリストがありますので + そちらもご覧ください. + + FreeBSD はボランティアプロジェクトでテスト部門には + 資金がありませんから, より多くの情報をこのカタログに載せるには + あなたがたユーザに頼らなければなりません. + あなた自身の経験により, あるハードウェアが FreeBSD + で動くか動かないかがわかったとしたら &a.doc; へ e-mail + して知らせてください. サポートされているハードウェアについての + 質問は, &a.questions; (詳しいことは + メーリングリストを参照してください) へ宛ててください. + 情報を提供したり質問をする時は FreeBSD のバージョンと使っている + ハードウェアのできるだけ詳しい情報を含めることを + 忘れないでください. + + + * フロッピーへのバックアップはどうでしょう? + + + + + + テープメディア + + 一般的なテープメディアには 4mm, 8mm, QIC, ミニカートリッジ + DLT があります. + + + 4mm (DDS: Digital Data Storage) + + 4mm テープはワークステーションのバックアップメディアとして + QIC から置き換えられつつあります. この傾向は + QICドライブの製造のリーダであった Archiveを Connerが買収し + QICドライブの製造を中止したことで加速しました. + 4mmドライブは小型で静かですが 8mm + ドライブの持っているような信頼性の評判はありません. + カートリッジは 8mmカートリッジよりも安価で小型 (3 x 2 x 0.5 + インチ; 76 x 51 x 12 mm) です. 4mmドライブ は + 8mm同様にヘリカルスキャン (訳注: + VTRと同様の回転ヘッドを使う方式) + を使用しているという理由でヘッドの寿命は短いです. + + これらのドライブのデータスループットは + 150kB/s程度から最大で500kB/s程度の範囲です. データ容量は + 1.3GBから 2.0GBです. ハードウェア圧縮が多くのドライブで可能で, + およそ 2倍の容量になります. + マルチドライブテープライブラリユニットは1つの筐体に + 6ドライブを持つことができ自動的にテープを交換します. + ライブラリの容量は 240GBに達します.1つの例外です) + 送りだしリールと巻き取りリールの両方が + カートリッジの中にあります. + + + 4mmドライブは 8mmドライブ同様にヘリカルスキャンを使います. + ヘリカルスキャンの利点と欠点は 4mm ドライブ と 8mm + ドライブ共通です. + + テープの寿命は 2000 回のパスあるいは 100 + 回のフルバックアップ です. + + + + 8mm (Exabyte) + + 8mm テープは SCSI + テープドライブとして最もよく使われているもので, + データ交換用として最良の選択です. ほとんどのサイトには Exabyte + の 2GB 8mm テープドライブがあるでしょう (訳注: Unix + ワークステーションを何台も置いているようなサイトには 1 + 台くらいはあるというような意味です). 8mm + ドライブは信頼性が高く, 使いやすく, 静かです. + カートリッジは安価で小型です (4.8 x3.3 x 0.6 インチ; 122 x 84 + x 15 mm). 欠点は, テープとヘッドの相対的な速度が高速なために + 比較的ヘッドとテープの寿命が短いことです. + + データスループットは 250kB/s 程度から 500kB/s + 程度の範囲です. データ容量は 300MB から 7GB です. + ハードウェア圧縮が多くのドライブで可能で,およそ 2 + 倍の容量になります. 単一のユニットのドライブから, 1 + つの筐体に 6 台のドライブと 120 + 巻のテープを持ったマルチドライブテープライブラリまで + 利用することができます. ライブラリではテープはユニットにより + 自動的に交換されます. ライブラリの容量は 840GB + 以上に達します. + + データはヘリカルスキャンを使ってテープに記録されます. + ヘリカルスキャン方式ではヘッドはメディアに対してある傾き + (約6度) に配置されます. テープはヘッドのある円筒の周の + 270度にわたって接触します. テープが円筒面を走行する間, + 円筒は回転しています. この結果, + 高密度のデータのつまったトラックは, + 狭い間隔でテープの上端と下端の間を斜めに横切ります. + + + + 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 インチ幅のテープについては別に議論します. + テープライブラリやチェンジャはありません. + + データスループットは 150kB/s から 500kB/s の範囲です. + データ容量の範囲は 40MB から 15GB です. ハードウェア圧縮が + 最近の多くのドライブで使えるようになっています. QIC ドライブは + DAT ドライブに置き換えられつつあり, + あまり頻繁には利用されなくなっています. + + データは複数のトラックにわかれてテープに記録されます. + トラックはテープメディアの + 長さ方向の一端からもう一方の端までです. (訳注: 1トラックの + read/write が終わるとテープの 走行方向を反転させ次のトラックの + read/write を行います) トラックの数と, + それに対応するトラックの幅は テープの容量によって変わります. + すべてではありませんがほとんどの最近のドライブは + 少なくとも読み出しについては (場合によっては書き込みも) + 下位互換性があります. QIC + はデータの安全性についてはよいといわれています + (ヘリカルスキャンドライブに比べて機構は単純でより丈夫です). + + + テープは 5000回のバックアップで寿命となるでしょう. + + + + * ミニカートリッジ + + + + + + DLT + + DLTはここに示したドライブのタイプの中で + 最高速のデータ転送レートです. 1/2 インチ (12.5mm) + テープが単リールのカートリッジ (4 x 4 x 1 インチ; 100 x 100 x + 25 mm) に入っています. + カートリッジのひとつの側面全体がスイングゲートになっています. + ドライブの機構がこのゲートを開け, テープリーダを引き出します. + テープリーダには楕円形の穴があり, + ドライブがテープを引っ掛けるのに使います. + 巻き取りのためのリールはドライブの中にあります. + ここに挙げた他のカートリッジはすべて ( 9 + トラックテープはただ1つの例外です) + 送りだしリールと巻き取りリールの両方がカートリッジの中に + あります. + + データスループットは約1.5MB/sで, 4mm, 8mm, QIC + テープドライブの3倍です. データ容量は単一のドライブで 10GBから + 20GBの範囲です. + マルチテープチェンジャ,マルチテープドライブ,5から + 900巻のテープを1から20ドライブで扱う + マルチドライブテープライブラリがあり, 50GB から 9TB + の容量が得られます. + + データは ( QIC テープのように) + テープの走行方向と並行に複数あるトラックへ記録されます. 2 + つのトラックに同時書き込みを行います. Read/Write + ヘッドの寿命は比較的長いと言えます. + テープの走行が止まればヘッドと + テープの間の相対運動はありません. + + + + 新品のテープを最初に使う場合 + + 新品の完全な空テープを読もうとしたり書き込もうとすると処理 + は失敗するでしょう. + 次のようなコンソールメッセージが出るでしょう. + + st0(ncr1:4:0): NOT READY asc:4,1 +st0(ncr1:4:0): Logical unit is in process of becoming ready + + テープに識別ブロック (Identifire Block:block number 0) + がありません.QIC-525標準の採用されている + QICテープドライブのすべてで識別ブロックをテープに書きます. + 2つの解決方法があります. + + (訳注: 方法1)mt fsf 1 + によってテープドライブは識別ブロックをテープに書きます. + + (訳注: + 方法2)フロントパネルのボタンを押してテープをとりだします. + + + 再びテープを入れ,データをテープに &man.dump.8; します. + + &man.dump.8; はそのうちに DUMP: End of tape + detected と表示し, コンソールには + HARDWARE FAILURE info:280 + asc:80,96と表示されるでしょう. + + mt + rewindを使ってテープを巻戻します. + + この次からはテープの操作は成功するでしょう. + + + + + バックアッププログラム + + よく使われる3つのプログラムは &man.dump.8;, &man.tar.1;, + &man.cpio.1; です. + + + ダンプとリストア + + &man.dump.8; と &man.restore.8; は伝統的な + Unixのバックアッププログラムです. + これらはドライブのファイルシステム上のファイル, リンク, + ディレクトリをディスクブロックの集まりとして処理します. + &man.dump.8; + はデバイスやファイルシステム全体をバックアップし, + 一部分のバックアップや, &man.ln.1; によるソフトリンクや + 他のファイルシステムをマウントを行った, 1 + つ以上のファイルシステムにまたがる + ディレクトリツリーのバックアップはできません. &man.dump.8; + はファイルやディレクトリを構成する + データブロックをテープに書くだけで, + ファイルやディレクトリをテープに書くことはありません. + &man.dump.8; には初期の ATT UNIX のバージョン 6 (1975 + 年ごろ) に由来する癖が残っています. デフォルトのパラメタは 9 + トラックテープ (6250 bpi) + に適したものになっていて現在の高密度メディア (最大 62,182 + ftpi) に適していません. + 現在のテープドライブの容量を有効に利用するため, + デフォルト値をコマンドラインで置き換えなければなりません. + + + &man.rdump.8; と &man.rrestore.8; + は他のコンピュータに接続されているテープドライブに + ネットワーク経由でバックアップをします. + どちらのプログラムもリモートテープドライブにアクセスするために + &man.rcmd.3; と &man.ruserok.3; に依存しています. + このためユーザがバックアップを実行するためには + rhosts によるリモートアクセスが必要です. + &man.rdump.8; と &man.rrestore.8; + の引数はリモートコンピュータに適切なものを用います. + &man.rrestore.8; + はリモートコンピュータから使うのに適しています. (例えば + FreeBSD コンピュータより komodo という名前の + Sun に接続されている Exabyte テープドライブへ + /sbin/rdump 0dsbfu 54000 13000 126 komodo:/dev/nrst8 + /dev/rsd0a 2>&1 として + rdumpしたような場合の restoreに使います) + 警告: セキュリティは + rhostsの管理にかかっています. + あなたの状況を注意深く調べてください. + + + + Tar + + &man.tar.1; ATT Unix のバージョン 6 (1975ごろ) + にさかのぼる事ができます. &man.tar.1; + はファイルシステムと協調して機能し, + ファイルやディレクトリをテープに書きます. &man.tar.1; は + &man.cpio.1; + で使えるようなフルレンジのオプションは持ちませんが + &man.cpio.1; + で使うような奇妙なコマンドパイプラインは必要ありません. + + 大部分の &man.tar.1; + にはネットワーク経由のバックアップの機能はありませんが, + FreeBSD で使用されている GNU の &man.tar.1; は, + rdump + とおなじ構文でリモートデバイスを扱うことができます. komodo + というホスト名の Sun に繋いである Exabyte + のテープデバイスに対して &man.tar.1; を実行するには, + 次のようにします. + /usr/bin/tar cf komodo:/dev/nrst8 . + 2>&1 リモートデバイスをサポートしていない tar + を使用している場合は, パイプラインと &man.rsh.1; を使うことで, + リモートテープデバイスにデータを送る事ができます. + (コマンド使用例はまだです) + + + + Cpio + + &man.cpio.1; は本来, Unix + ファイルを磁気メディアで交換するためのプログラムです. + &man.cpio.1; はバイトスワッピング, + 多くの異なるアーカイブフォーマットの書き込みのオプション + (それ以外にも多数のオプションがあります)があり, + パイプで他のプログラムにデータを渡す事もできます. + この最後に挙げた特徴により, &man.cpio.1; + はインストールメディアについては優れた選択です. &man.cpio.1; + は STDIN からの入力でなければならず, + ディレクトリツリーの探索や + ファイルリストについての機能はありません. + + &man.cpio.1; + はネットワーク経由のバックアップの機能はありません. + リモートテープドライブにはパイプラインと &man.rsh.1; + を使って送る事ができます. (コマンド使用例はまだです) + + + + Pax + + &man.pax.1; は tar と + cpio に対する IEEE/POSIX の回答です. + 長年の間, 様々なバージョンの tar や + cpio は, + 互いにわずかながら非互換性を有していました. + 各々をしらみ潰しに標準化する代わりに, POSIX + は新しいアーカイブユーティリティを作ることにしました. + pax + は専用に開発された新しいフォーマットに加えて, いくつもの cpio + や tar のフォーマットの読み書きに対応しようと試みています. + コマンド群は tar よりも + cpio の方にいくぶん似ています. + + + + Amanda + + Amanda + (Advanced Maryland Network Disk Archiver) + は単一のプログラムではなくクライアント / + サーバ型のバックアップシステムです. Amanda サーバは, Amanda + クライアントであるネットワークで + サーバに接続された複数のコンピュータから + 一つのテープドライブへバックアップをおこないます. + このような場合の一般的な問題はいくつもの大容量の + ディスクからデータディレクトリをテープにバックアップするには + 時間がかかりすぎてしまうという事です. Amanda + はこの問題を解決します. Amanda + は同時に複数のファイルシステムのバックアップを おこなう時に + 「ホールディングディスク」を使う事ができます. + Amandaの設定ファイルに書いたすべてのファイルシステムの + フルバックアップを特定の間隔でとるために「アーカイブセット」 + と呼ばれるテープグループを作ります. + これには夜間に作られるすべてのファイルシステムの増分 + (あるいは差分として) のバックアップも含みます. + 障害の起きたファイルシステムの回復には最も新しい + フルバックアップと増分のバックアップが必要です. + + 設定ファイルでバックアップのコントロールと Amanda + によるネットワークトラフィック量を設定します. Amanda + はデータをテープに書くのにバックアッププログラムの + いずれかを使うでしょう. Amanda + はその一部分でもパッケージでも利用可能ですが, + デフォルトではインストールされません. + + + + 何もしない + + “何もしない” + というのはコンピュータのプログラムではありませんが, + バックアップの戦略として最も広く採用されている物です. + これには初期投資が必要ありません. + したがわなければならないバックアップスケジュールもありません. + ただ何もしないだけです. もしデータに何かが起きたら, + 苦笑いして耐えてください. + + あなたにとって時間やデータの価値が少ないか + あるいはまったくないのであれば “何もしない” + のはあなたのコンピュータに最も適した + バックアッププログラムでしょう. しかし注意してください. Unix + は便利なツールです. 6 ヶ月も使っていれば価値のあるファイルの + 山ができ上がっているでしょう. + + “何もしない” は + /usr/obj やその他の, + コンピュータによってつくり出された + ディレクトリツリーについては適切な方法です. + 一つの例はこのハンドブックのファイルで, これらは + SGML のファイルより生成された物です. + HTML + ファイルのバックアップを作る必要はありません. + SGML + のソースファイルは定期的にバックアップします. + + + + どのバックアッププログラムが最適でしょう? + + 定期的に &man.dump.8; しましょう. + Elizabeth D. Zwicky はここで検討したプログラムすべてについて + 拷問的なテストをおこないました. すべてのデータと + Unixファイルシステムの状態すべてを保存するには明らかに + &man.dump.8; でしょう. Elizabeth + は大きく変化に富んだ異常な状態 + (いくつかはあまり異常でもない状態のものもあります) + になっているファイルシステムで, + それぞれのプログラムでファイルシステムの + バックアップとリストアを行ってテストしました. + 特色のある状態には, ホールを持つファイル, + ホールとヌルブロックを持つファイル, + 奇妙な文字をファイル名に持つファイル, 読み出し不可, + 書き込み不可のファイル, デバイスファイル, + バックアップ中にファイルのサイズを変更する, + バックアップ中にファイルの作成/削除をおこなうなどがあります. + 彼女は1991年10月の LISA Vで結果の発表をしています.torture-testing Backup and Archive Programs を参照してください. + + + + 緊急時のリストア手順 + + + 災難の起きる前に + + 起き得るどのような災難に対しても以下の + 4ステップだけが必要な準備です. + + ステップ 1では, + ファイルシステムテーブル(/etc/fstab) + やブートメッセージで示されるすべてのディスクの + disklabelをそれぞれ2コピーづつプリント (例えば + disklabel sd0 | lpr を実行します) + します. + + + ステップ 2では, boot.flp と + fixit.flp + にそのシステムのすべてのデバイスドライバが + 含まれているか確認します. 最も簡単な確認の方法は, + フロッピーをドライブに入れてリブートし, + ブートメッセージを確認することです. + あなたのシステムのデバイスがすべて含まれ, 機能していれば, + step 3へ飛んでください. + + そうでないなら, + そのシステムのすべてのディスクをマウントでき, + テープドライブにもアクセスできる + 2種類のカスタムブートフロッピーディスクを作る必要があります. + これらのフロッピーには &man.fdisk.8;, &man.disklabel.8;, + &man.newfs.8;, &man.mount.8;, + と利用したいバックアッププログラムが + 入っていなければなりません. + これらのプログラムはスタティックリンクされた + プログラムである必要があります. &man.dump.8; + を使うのであればフロッピーに &man.restore.8; + を入れる必要があります. + + ステップ 3では, 通常の方法でバックアップを作ります. + 最新のバックアップの後でおこなわれた変更は + 回復することはできません. + バックアップテープにライトプロテクトをしてください. + + ステップ 4では, フロッピー + (boot.flp と + fixit.flp あるいはステップ + 2で作った2枚のカスタムブートフロッピーディスクです) + とバックアップテープのテストをします. + 手順のノートを作りましょう. + このノートはブートフロッピーディスク, + バックアップテープに入れておきプリントアウトしておきます. + あなたがリストアをおこなうような時は + おそらく錯乱状態でしょうからこのノートはバックアップを + 破壊してしまうようなことを防ぐのに役立つでしょう + (どのようにして破壊するって? tar xvf + /dev/rst0 とする替りに偶然 tar cvf + /dev/rst0 + とタイプしてバックアップテープに上書きしてしまうかも + しれません). + + 訳注: 上書きはライトプロテクトをしておけば防げますが, + なんらかの原因でプロテクトがはずれているかもしれません. + ちなみに訳者の経験から言えば上のようなミスタイプは + 結構起きます. + + 安全性を増すために, + 毎回ブートフロッピーディスクを作り, 2 + 巻のバックアップテープを取ります. + 一方を離れた場所に保管します. + 離れた場所は同じ建物の地下室ではいけません. + 世界貿易センタービルにあった数多くの会社は + 苦い経験よりこの教訓を得ました. + 離れた場所とはコンピュータやディスクドライブから + かなり離れていて物理的に分離されていなければなりません. + + ブートフロッピーディスクを作るスクリプトの一例 + + + /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 sd0 +./MAKEDEV sd1 +./MAKEDEV sd2 +./MAKEDEV st0 +./MAKEDEV pty0 +cd / + +# +# create minimum filesystem table 最小限のファイルシステムテーブル +# +cat > /mnt/etc/fstab < /mnt/etc/passwd < /mnt/etc/master.passwd < + + + + 災難の後に + + 重要な問題は, ハードウェアが生き残ったかどうかです. + 定期的なバックアップを取っていれば + ソフトウェアについて心配する必要はありません. + + ハードウェアがダメージを受けていたら, + 最初にそのダメージを受けた部品を交換してください. + + ハードウェアに問題がなければ, + フロッピーをチェックしてください. + カスタムブートフロッピーディスクを使っているのであれば + シングルユーザ(boot: プロンプトの出た時に + -s とタイプしてください) + でブートしてください. それから次の + 「ファイルシステムを1つずつ回復する」 + を読んでください. + + boot.flp と + fixit.flp + を使っているのであればこのまま読み続けてください. + boot.flp を入れてブートしてください. + 本来のインストールメニューが表示されるはずです. (ここで) + fixit XXXオプションを選びます. 指示の通り + fixit.flp を入れてください. + restore とその他の必要なプログラムは + /mnt2/standに置かれています. + + + ファイルシステムを一つずつ回復する + + 最初のディスクのrootパーティションを &man.mount.8; + (例えば mount /dev/sd0a /mnt のように) + マウントして見てください. + ディスクラベルが破壊されている場合は &man.disklabel.8; + を使ってあらかじめプリントしておいた通りに + パーティションを作り直しラベルをつけてセーブしてください. + &man.newfs.8; を使いファイルシステムを作り直します. + ルートパーティションを読み書き可能にマウント (mount + -u -o rw /mnt) しなおします. + バックアッププログラムとバックアップテープを使って + このファイルシステムのデータを回復します (例えば + restore vrf /dev/st0とします). + ファイルシステムをアンマウント (umount + /mntなど) して, + 障害を受けたファイルシステムそれぞれについて + 繰り返してください. + + システムが動き出したら, + 新しいテープにデータをバックアップしてください. + どのような理由で再び事故が起きたりデータが + 失われるかはわかりません. これに時間を費す事で, + 後々の災難から救われる事になります. + + + + * 災難対策をしていませんでした. + どうしたらいいでしょう? + + + + + + + + diff --git a/ja_JP.eucJP/books/handbook/basics/chapter.sgml b/ja_JP.eucJP/books/handbook/basics/chapter.sgml new file mode 100644 index 0000000000..762e0058ed --- /dev/null +++ b/ja_JP.eucJP/books/handbook/basics/chapter.sgml @@ -0,0 +1,152 @@ + + + + Unix の基礎知識 + + 訳: &a.jp.nakai;. + 12 October 1996. + + + オンラインマニュアル + + FreeBSD についてのもっとも包括的なドキュメントは + マニュアルページの形式になっているものです. + FreeBSD システム上のほとんどすべてのプログラムには基本的な + 操作方法とさまざまな引数を説明しているリファレンスマニュアル + がついています. これらのマニュアルは man + コマンドで見ることができます. man + コマンドの使い方は簡単です : + + &prompt.user; man コマンド名 + + + コマンド名 + のところには知りたいコマンドの名前を入れます. たとえば, + ls コマンドについて知りたい場合には + 次のように入力します: + + &prompt.user; man ls + + オンラインマニュアルは 数字のついたセクションに + 分けられています : + + + + ユーザコマンド + + + + システムコールとエラー番号 + + + + C のライブラリ関数 + + + + デバイスドライバ + + + + ファイル形式 + + + + ゲームとほかのお楽しみ + + + + そのほかの情報 + + + + システムの管理と操作のためのコマンド + + + + 場合によっては, 同じことがらでもオンラインマニュアルでは + 複数のセクションに記載されていることがあります. たとえば, + chmod ユーザコマンドと + chmod() + システムコールがあります. この場合, man + コマンドでどちらを参照したいかをセクションで指定することが + できます : + + &prompt.user; man 1 chmod + + とすればユーザコマンドとしての chmod + のマニュアルページが表示されます. オンラインマニュアル上の特定の + セクションへの参照は通常, 書かれているドキュメントの + 括弧の中に示されています. ですから, &man.chmod.1; は + chmod + ユーザコマンドを, &man.chmod.2; + はシステムコールの方を示しています. + + コマンドの名前を知っていて, 単純にその使い方が分かる場合は + よいのですが, もしコマンドの名前を思い出せない場合には + どうしたらいいのでしょう? man に + スイッチをつければ, + コマンドデスクリプション中のキーワードから検索することができます + : + + &prompt.user; man -k mail + + このコマンドを使うことで, + “mail”というキーワードを含むコマンドの + 一覧を参照することができます. 実を言うと + apropos + コマンドを使うのと機能的には同じです. + + それから, /usr/bin + にある優れたコマンドすべてを目にしても, + それらの大半がどういった働きをするのか + まったく見当もつかないときは どうしたらよいでしょう. 単純に, + + &prompt.user; cd /usr/bin; man -f * + + あるいは同じ働きをする + + &prompt.user; cd /usr/bin; whatis * + + としましょう. + + + + GNU の Info ファイル + + FreeBSD には Free Software Foundation (FSF) + によるアプリケーションや + ユーティリティがたくさんあります. こうしたプログラムには + manページに加えて, “info” ファイルと呼ばれる + ハイパーテキスト形式のドキュメントが付属になっていて, + info コマンドや, emacs + をインストールしているなら emacs の info + モードで見ることができます. + + &man.info.1; コマンドを使うには, 単にこう入力します. + + &prompt.user; info + + おおまかなイントロダクションを + 見るには, h と入力します. + クイックコマンドリファレンスは ? + とします. + + + + diff --git a/ja_JP.eucJP/books/handbook/bibliography/chapter.sgml b/ja_JP.eucJP/books/handbook/bibliography/chapter.sgml new file mode 100644 index 0000000000..0d6c15be74 --- /dev/null +++ b/ja_JP.eucJP/books/handbook/bibliography/chapter.sgml @@ -0,0 +1,638 @@ + + + + 参考図書 + + 訳: &a.jp.nakai;. + 12 October 1996. + + FreeBSD オペレーティングシステムの個々の部分については + マニュアルページで定義のような説明がなされていますが, + それらにはどうやってその部分どうしをつなぎあわせて + オペレーティングシステム全体を円滑に動作させるかを + 説明していないという欠点がよく指摘されます. + それを補うためには UNIX システム管理についてのよい本や, + すぐれた利用者向けのマニュアルが欠かせません. + + + FreeBSDのためだけの書籍 & 雑誌 + + 非英語文化圏の 書籍 & 雑誌: + + + + + FreeBSD 入門與應用 (in Chinese). + + + + 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 インストール & 活用マニュアル, + published by + 毎日コミュニケーションズ. + + + + 英語の書籍 & 雑誌: + + + + + The Complete FreeBSD, + published by + Walnut Creek CDROM. + + + + + + 利用者向けのガイド + + + + 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 + + + + + Ohio State University has written + a + UNIX Introductory Course which is available online + in HTML and postscript format. + + + + + FreeBSD 友の会 jpman プロジェクト. FreeBSD User's + Reference Manual (日本語訳). 毎日コミュニケーションズ + , 1998. ISBN4-8399-0088-4 P3800E. + + + + + + 管理者向けのガイド + + + + Albitz, Paul and Liu, Cricket. DNS and + BIND, 2nd Ed. + O'Reilly & Associates, Inc., 1997. + ISBN ISBN 1-56592-236-0 + (訳注: 邦訳は以下のものが出版されています. + 高田広章 / 小島育夫 監訳 , 小舘光正 訳. + DNS & BIND 改訂版. + オライリー・ジャパン, 1998. + ISBN 4-900900-42-7) + + + + 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章が「リファレンス」 + に対応します.) + ただし2分冊となり,原著のリファレンスの部分に当たる Volume2 + は 1998年3月の時点では出版されていません. + 中村 素典 監訳, 鈴木 克彦 訳. + 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. + O'Reilly & Associates, Inc., 1992. + ISBN 0-937175-82-X + (訳注: 邦訳は以下のものが出版されています. + 村井純 監訳. + TCP/IP ネットワーク管理. + インターナショナル・トムソン・パブリッシング・ジャパン, 1994. + ISBN 4-900718-01-7) + + + + Nemeth, Evi. UNIX System Administration + Handbook. 2nd Ed. Prentice Hall, 1995. + ISBN 0131510517 + (訳注: 邦訳は以下のものが出版されています. + 井上尚司監訳. + UNIX システム管理入門. + ソフトバンク, 1992. + ISBN 4-89052-362-6 + 原本は第2版だが, 訳出は第1版のみ) + + + + Stern, Hal Managing NFS and NIS + O'Reilly & Associates, Inc., 1991. + ISBN 0-937175-75-7 + + + + + FreeBSD 友の会 jpman プロジェクト. FreeBSD System + Administrator's Manual (日本語訳). + 毎日コミュニケーションズ, + 1998. ISBN4-8399-0109-0 P3300E. + + + + + + プログラマ向けのガイド + + + + Asente, Paul. X Window System + Toolkit. Digital Press. + ISBN 1-55558-051-3 + + + + 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) + + + + 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) + + + + Wells, Bill. “Writing Serial Drivers for UNIX”. + Dr. Dobb's Journal. 19(15), December + 1994. pp68-71, 97-99. + + + + + + オペレーティングシステム内部 + + + + 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 + + + + 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 + + + + Vahalia, Uresh. + UNIX Internals -- The New Frontiers. + Prentice Hall, 1996. + ISBN 0-13-101908-2 + + + + Wright, Gary R. and W. Richard Stevens. + TCP/IP Illustrated, Volume 2: + The Implementation. + Reading, Mass. : Addison-Wesley, 1995. + ISBN 0-201-63354-X + + + + + + セキュリティの参考資料 + + + + 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 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 + + + + + + ハードウェアの参考資料 + + + + 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. 3rd ed. Reading, Mass. : + Addison-Wesley, 1995. ISBN + 0-201-40993-3 + + + + Van Gilluwe, Frank. The Undocumented PC. + Reading, Mass: Addison-Wesley Pub. Co., 1994. + ISBN 0-201-62277-7 + + + + + + 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 Dictonary, + 3rd edition. MIT Press, 1996. + ISBN 0-262-68092-0 + Also known as the + 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年. + + + ftp://ftp.freebsd.org/pub/FreeBSD/FreeBSD-current/src/share/misc/bsd-family-tree + または, FreeBSD-current マシンの + + ローカルファイル. + + + + 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 + ファイルが含まれています. + + + + + + 雑誌とジャーナル + + + + + 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 + + + + + + diff --git a/ja_JP.eucJP/books/handbook/book.sgml b/ja_JP.eucJP/books/handbook/book.sgml index 88ecf8f4f7..9f35d9b3db 100644 --- a/ja_JP.eucJP/books/handbook/book.sgml +++ b/ja_JP.eucJP/books/handbook/book.sgml @@ -1,210 +1,151 @@ - - - + - - - + +%man; - - -%authors; + %chapters; + %authors; + %jauthors; + %mailing-lists; - - -%jmembers; - - - -%lists; - - - -%sections; - - - ]> - - + + + FreeBSD ハンドブック - FreeBSD ハンドブック + - FreeBSD ドキュメンテーションプロジェクト + FreeBSD ドキュメンテーションプロジェクト - 1999年2月 + -FreeBSD へようこそ! このハンドブックはFreeBSD Release -&rel.current;のインストールおよび, 日常での使い方について記述したもので, -FreeBSD ドキュメンテーションプロジェクトによって編集されています. + 1999 年 2 月 + + + + FreeBSD へようこそ! このハンドブックは + FreeBSD Release &rel.current; + のインストールおよび, 日常での使い方について記述したもので, + FreeBSD ドキュメンテーションプロジェクトによって + 編集されています. 日本語版の作成は FreeBSD + 日本語ドキュメンテーションプロジェクトがおこなって います. + 本書は現在進行中の作業であって, + 多くの個人の手からなる 仕事です. + 多くのセクションはまだ存在しませんし, いま存在するセクションの + いくつかはアップデートが必要です. この FreeBSD + ドキュメンテーション プロジェクトに協力したいと思ったら, + &a.doc; まで (英語で) 電子メールを 送ってください. + ハンドブックそのものに関する議論は, こちらで + おこなわれています. (もちろん英語でです.) 日本語訳および, + 日本語版のみに関することは FreeBSD + 日本語ドキュメンテーションプロジェクト doc-jp@jp.FreeBSD.ORG + において日本語で 議論されています. + 必要に応じて日本語ドキュメンテーションプロジェクトから + 本家ドキュメンテーションプロジェクトに対して + フィードバックをおこないますので, 英語が得意でない方は FreeBSD + 日本語ドキュメンテーションプロジェクト doc-jp@jp.FreeBSD.ORG + まで日本語でコメントをお寄せください. + このドキュメントの最新バージョンは, いつでも 日本国内版 FreeBSD World + Wide Web サーバFreeBSD World Wide Web + サーバ で見ることができますし, HTML 形式のものを HTTP + でダウンロードすることもできます. これらを gzip + で圧縮したものが FreeBSD FTP + サーバ や, たくさんのミラーサイトに置かれています. また, + + ハンドブックの検索も可能です. + + + + + 導入 + + &chap.introduction; + &chap.install; + &chap.basics; + &chap.ports; + + + + システム管理 + + &chap.kernelconfig; + &chap.security; + &chap.printing; + &chap.disks; + &chap.backups; + &chap.quotas; + &chap.x11; + &chap.hw; + &chap.l10n; + + + + ネットワーク通信 + + &chap.serialcomms; + &chap.ppp-and-slip; + &chap.advanced-networking; + &chap.mail; + + + + さらに進んだ話題 + + &chap.cutting-edge; + &chap.contrib; + &chap.policies; + &chap.kernelopts; + &chap.kerneldebug; + &chap.linuxemu; + &chap.internals; + + + + 付録 + + &chap.mirrors; + &chap.bibliography; + &chap.eresources; + &chap.staff; + &chap.pgpkeys; + &chap.jcontrib; + + -日本語版の作成は FreeBSD 日本語ドキュメンテーションプロジェクトがおこなって -います. 本書は現在進行中の作業であって, 多くの個人の手からなる -仕事です. 多くのセクションはまだ存在しませんし, いま存在するセクションの -いくつかはアップデートが必要です. この FreeBSD ドキュメンテーション -プロジェクトに協力したいと思ったら, &a.doc; まで (英語で) 電子メールを -送ってください. ハンドブックそのものに関する議論は, こちらで -おこなわれています. (もちろん英語でです.) -日本語訳および, 日本語版のみに関することは &a.doc-jp; において日本語で -議論されています. 必要に応じて日本語ドキュメンテーションプロジェクトから -本家ドキュメンテーションプロジェクトに対してフィードバックをおこないますので, -英語が得意でない方は &a.doc-jp; まで日本語でコメントをお寄せください. -このドキュメントの最新バージョンは, いつでも -や - -で見ることができますし, - 形式のものを -HTTP でダウンロードすることもできます. これらを gzip で圧縮したものが - -や, たくさんのに置かれています. -また, も可能です. - - - - - - - 導入 - - はじめに -

FreeBSD は, Intel アーキテクチャ (x86) ベースの PC のための -4.4BSD-Lite をベースとしたオペレーティングシステムです. -FreeBSD の概要については, -をご覧ください. -このプロジェクトの歴史については, -をご覧ください. 最新のリリースについての記述は, -をご覧ください. -FreeBSD プロジェクトへの何らかの貢献 (ソースコード, 機器, 資金の提供など) -について興味があれば, -の章をご覧ください. - - &nutshell; - &history; - &goals; - &development; - &relnotes; - - &install; - &basics; - - &ports; - - - - システム管理 - - &kernelconfig; - セキュリティ - &crypt; - &skey; - &kerberos; - &firewalls; - - &printing; - - - - &backups; - - "as; - - X ウィンドウシステム -

この節の完成は保留にしてあります. - - から提供されるドキュメントを参考にしてください. - - &hw; - - ローカル化 - &russian; - &german; - - - - ネットワーク通信 - - シリアル通信 - &serial; - &term; - &dialup; - &dialout; - - PPP と SLIP - -

もしあなたがモデムを使ってインターネットに接続したり, -他の人々に FreeBSD によるインターネットへのダイヤルアップ接続を -提供しようとしているのでしたら, PPP または SLIP 接続を選択することができます. -PPP 接続には, 2 種類の方法が提供されています: -ユーザPPP (iijppp とも呼ばれます) とカーネルPPP です. -両方の PPP の設定手順と, SLIP の設定方法については以下の章に書かれています. - - &userppp; - &ppp; - &slipc; - &slips; - - 高度なネットワーク - &routing; - &nfs; - &diskless; - &isdn; - - &mail; - - - - さらに進んだ話題 - 開発の最前線: FreeBSD-current と FreeBSD-stable -

あるリリースから次のリリースまでの期間にも, FreeBSD の開発は - 休みなく続けられています. この開発の最前線に興味を持っている人のために, - 手元のシステムを最新の開発ツリーに同期させておくための, - とても使いやすい仕掛けが何種類も用意されています. - 注意: 開発の最前線は, 誰でもが扱えるという性質のものではありません! - もしもあなたが, 開発途中のシステムを追いかけようか, それともリリース - バージョンのどれかを使い続けようかと迷っているのなら, - きっとこの章が参考になるでしょう.

- - ¤t; - &stable; - &synching; - &makeworld; -
- - &submitters; - &policies; - &kernelopts; - &kerneldebug; - &linuxemu; - FreeBSD の内部 - &booting; - &memoryuse; - &dma; - &vm; - - - - - 付録 - - &mirrors; - &bibliography; - &eresources; - &contrib; - &pgpkeys; - &jcontrib; - - - -
-
diff --git a/ja_JP.eucJP/books/handbook/chapter.decl b/ja_JP.eucJP/books/handbook/chapter.decl new file mode 100644 index 0000000000..2762efb110 --- /dev/null +++ b/ja_JP.eucJP/books/handbook/chapter.decl @@ -0,0 +1,9 @@ + + + diff --git a/ja_JP.eucJP/books/handbook/chapters.ent b/ja_JP.eucJP/books/handbook/chapters.ent new file mode 100644 index 0000000000..fa8a1e0cce --- /dev/null +++ b/ja_JP.eucJP/books/handbook/chapters.ent @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ja_JP.eucJP/books/handbook/contrib/chapter.sgml b/ja_JP.eucJP/books/handbook/contrib/chapter.sgml new file mode 100644 index 0000000000..9777941552 --- /dev/null +++ b/ja_JP.eucJP/books/handbook/contrib/chapter.sgml @@ -0,0 +1,10027 @@ + + + + FreeBSD への貢献 + + 原作: &a.jkh;. + + 訳: &a.jp.iwasaki;. + 27 April 1997. + + あなたも何か FreeBSD のために貢献したくなりましたか? + 素晴らしい! 私たちは常に支援を受ける用意がありますし, FreeBSD + は生き残るためにユー + ザベースの貢献に頼るようなシステムの一つです. + あなたの貢献は 感謝されるだけではなく, FreeBSD + が成長し続けるために極めて重要なものな のです! + + 一部の人達が言っているのとは逆に, + 貢献を受け付けてもらうために腕利 きのプログラマーになるとか + FreeBSD コアチームの人と親友になる必要はあ りません. FreeBSD + プロジェクトの開発は, 多くのそして益々増加する世界中 + の貢献者達によってなされており, 彼らの年齢, + 専門技術分野は多岐に渡りま す. + そして手の空いている人よりも + 成されるべき仕事の方が常に多いのです. + + FreeBSD + プロジェクトがカーネルや散在しているユーティリティよりも, + オペレーティングシステム環境 (と, そのインストール) + に対して責任を持つ ようになったため, + 私たちのTODOリストはドキュメンテーション, + ベータテ スト, + 高度に専門化されたタイプのカーネル開発の好例を紹介するなど非常に + 広い範囲のタスクに渡ります. あなたの技能レベルに関わらず, + プロジェクト を支援できることが必ず何かあります! + + FreeBSD + 関連の事業に従事している商業団体が私たちにコンタクトすること + も歓迎します. あなたの製品を (FreeBSD 上で) 動作させるには, + 特別な拡張 が必要ではありませんか? + あまりにも風変わりな要求でなければ, それを受け + 入れる用意が私たちにあるとわかるはずです. + 付加価値のある製品ですか? 私たちに知らせてください! 多分私たちは, + ある 面において共同して作業をすることができるでしょう. + フリーソフトウェア界 は, + ソフトウェアがそのライフサイクルを通してどのように開発され, + 売られ, 保守されていくかについて, 既存の仮説に挑戦しています. + 少なくとももう一 + 度考慮してみることを私たちは強くお奨めします. + + + 何が必要? + + 次のタスクとサブプロジェクトのリストは, コアチームの色々な + TODO リ + ストと最近2ヶ月で集めたユーザリクエストを合わせたものです. + 可能なとこ ろでは, 緊急度によってタスクがランクづけされています. + もしここにあるタ スクの実行に興味があるのでしたら, + コーディネータの名前をクリックしてメー ルを送ってください. + もしコーディネータが決まっていなければ, あなたがボ + ランティアしてみませんか? + + + 優先度の高いタスク + + 次のタスクは通常, ひどく壊れているとか, + とても必要とされている何かを 表しているため, + 急務と考えられています: + + + + 第3ステージ・ブート問題. 全体コーディネーション: + &a.hackers; + + + + 第3ステージがディスクの BIOS + ジオメトリの正確なマッピングを提供 できるように WinNT + コンパチブルなドライブの追跡をおこなう. + + + + + + ファイルシステム問題. 全体コーディネーション: + &a.fs; + + + + nullfs ファイルシステムコードのクリーンアップと + ドキュメンテーション. コーディネータ: &a.gibbs; + + + + union ファイルシステムの修正. コーディネータ: + &a.dg; + + + + + + カーネル vm86 及びユーザ vm86 サポート実装. + コーディネータ: &a.jlemon; + + + + Int13 vm86 ディスクドライバの実装. コーディネータ: + &a.hackers; + + + + カーネル問題. 全体コーディネーション: + &a.hackers; + + + + すべての現存ドライバの eisaconf 変換の達成. + + + + すべての割り込みルーチンを + ユニット番号を使う代わりに (void *) を + 取るように変更. + + + + EISA/PCI/ISAの割り込み登録コードの統合. + + + + PCI/EISA/ISA デバイス検出を bt742a.c(WIP) + のようなドライバから分割. + + + + syscons の ALT-Fn/vt 切替えによるハングの修正. + コーディネータ: &a.sos; + + + + 3c509と3c590 ドライバの統合 (本質的には PCI + デバイス検出の ep.c への提供). + + + + + + + + 優先度がさほど高くないタスク + + 次のタスクはやっておくべきではありますが, + 特にさし迫っているわけで はありません: + + + + MCA サポート? + これは続けるにしても止めてしまうにしても結論を出 + すべき. + + + + 完全な KLD ベースのドライバのサポート / + コンフィグレーションマネー ジャ. + + + + ld なしですべての LKM + の登録をおこなう方法を考案する. これは + カーネル中にある種のシンボルテーブルを + 持たせることを意味します. + + + + 穏やかな方法でハードウェアを検知する + コンフィグレーションマネージャ の作成 + (第3ステージ・ブートの中に?). ハードウェアが必要とする + KLD だけを 残す等. + + + + + + PCMCIA/PCCARD. コーディネータ: &a.msmith; と &a.phk; + + + + ドキュメンテーション! + + + + pcic ドライバの信頼性のある操作 (テスト要). + + + + sio.c + のリコグナイザとハンドラ (ほぼ完了). + + + + ed.c のリコグナイザとハンドラ + (ほぼ完了). + + + + ep.c のリコグナイザとハンドラ + (ほぼ完了). + + + + User-mode のリコグナイザとハンドラ + (部分的に完了). + + + + + + 先進的なパワーマネージメント. コーディネータ: &a.nate; + と &a.phk; + + + + APM サブドライバ (ほぼ完了). + + + + IDE/ATA ディスクサブドライバ (部分的に完了). + + + + syscons/pcvt サブドライバ. + + + + PCMCIA/PCCARD ドライバ群との統合 (サスペンド / + レジューム). + + + + + + + + 優先度の低いタスク + + 次のタスクは全くのあら隠し, + または誰もすぐにおこないそうもない投資 + のような仕事を表します: + + 最初の20項目は Terry Lambert + terry@lambert.org からのもので す. + + + + プロセッサ上で V86 モードを使用して, + プロテクトモードからの BIOS コールができるようにし, + マップされた割り込み IPC 機構を経由してプロテ + クトモードの呼出し元に結果を返すようにする. + + + + DOS と同じように, + 実際の下位ハードウェアから独立になるよう, BIOS + コール機構を使用したカーネルの中に組み込まれたドライバ. + これは DOS ベー スのローダプログラムで BSD + がロードされる前に DOS にロードされていたネッ + トワークドライバや ASPI ドライバも含みます. + このことは潜在的なポーリン グ, + つまりプロテクトモードカーネルによる V86 マシンのための + DOS-not-busy 割り込みの生成を意味します. + + + + ハードウェア固有のプロテクトモードの + ドライバがロードされて活性化 された後で, + デフォルトのカーネル実行形式の中の, そのようなドライバデー + タとテキストエリアを追跡して, + カーネルアドレス空間のその部分が回復され + るようにするためのイメージ形式. これは個々の BIOS + ベースのドライバを互いに分離することを含みます. なぜ + なら全く実行しないよりも, すべてのケースにおいて BIOS + ベースのドライバ と共に実行した方が良いためです. + + + + バスインタフェース機構の抽象化. 現在のところ, PCMCIA, + EISA そし て PCI バスはブリッジで ISA + バスに接続されていると仮定しています. こう + いった仮定はおこなうべきではありません. + + + + パワーマネージメントイベント, カードの挿入, 取り出し, + そしてバス (PNPISA と PCMCIA とのブリッジチップ) + 対カードのレベルのイベント管理を 含む PNP + イベントを解釈するコンフィグレーションマネージャ. + + + + 固定デバイスによる他の再割当可・不可の + デバイス空間リソースの使用 と衝突しない, + 再割当可能なアドレスの割り当てのためのトポロジカルソート + 機構. + + + + ハードウェアサービス登録のための登録ベースの機構. + 特にタイマ, サウンドおよび他の + システムクリティカルなサービス供給源のためのデバイス + 中心の登録機構. + 単一の独立していないサービス供給源の一つの例として + Timer2, Timer0 + そしてスピーカサービスを考慮する必要があります. + + + + ネットワークカードと一緒に提供される ODI + カードドライバを使用で きるようにする, NetWare サーバ + (プロテクトモードの ODI ドライバ) ロー ダとサブサービス. + NDIS ドライバと NetWare の SCSI ドライバについても同 + 様. + + + + 前のリビジョンの FreeBSD マシンではなく, Linux + マシンで動作する 「アップグレード + システム」オプション. + + + + 移植を簡単にするためと, X, ThinkPad, PS/2マウス, LED, + コンソール スイッチング, しつこい NumLock + などの問題を全部一度に片付けるためのコ + ンソールドライバの抽象レイヤへの分割. + + + + 機会が許したら, + 他の外部ドライバのための他のカーネルのエミュレー + ション環境. SCO と Solaris は UnixWare + などに続く良い候補です. + + + + 異なるアーキテクチャのバイナリの実行のための + プロセッサエミュレーション環境. + これはシステムコールインタフェースがあまり変わらなければ, + 思ったより簡単です. + + + + 商用のストリームドライバを使用可能にするための + ストリーム機構. + + + + カーネルのマルチスレッド化 + (カーネルのプリエンプションが必要). + + + + カーネルのプリエンプション付き対称マルチプロセッシング + (カーネル のプリエンプションが必要). + + + + ポータブルコンピュータのサポートにおける協調の試み. + これは PCMCIA + ブリッジング規則と電源管理イベント処理の変更により, いく + らかは処理できます. しかし, + 内蔵ディスプレイと外部ディスプレイの検出, この 2 + 種類のディスプレイがあるという事実に基づく + 異なる解像度の選択, マシンがドックにある場合には + ディスクのモータ停止を防止すること, マシンの + ブート能力に影響を与えずにドックベースのカードの消滅を + 可能にすること (PCMCIA と同じ問題) + などの問題があります. + + + + マルチプラットフォームへの移植のための + ソースツリーの再組織化. + + + + make + worldできちんと「世界を創造する」 + ができるようにする. (もしmake + regress(訳注: 後退する)と呼び方が適当であれば, + そのように 名前を変える) + + + + 最小必要メモリ 4MB 化 (もっと小さければなお良し!). + + + + + + もっと簡単なタスク + + 上のセクションで挙げたタスクは膨大な時間の投資または + FreeBSD のカーネルに関する深い知識を必要とします + (もしくはそのどちらも). しかしながら, + "週末ハッカー"やプログラミングのスキルを持 + たない人々に適した立派なタスクも数多くあります. + + + + FreeBSD-current を運用しており, + 状態の良いインターネット接続があ るならば, current.freebsd.org + という一日に一回フルリリースを行っている マシンがあります + — 時おり最新のリリースをそこからインストールし, その + 過程で何か問題があるなら報告して下さい. + + + + freebsd-bugs + メーリングリストを読んでください. そこではあなたが建 + 設的なコメントを付けたりテストできるパッチが + 提供されているような問題がある かもしれません. + もしくはそれらの問題の一つをあなた自身で修正することさえ + できるかもしれません. + + + + 定期的に FAQ とハンドブックを通して読んでみてください. + もしまずい説明や古い事柄や完全に間違っていることなどが + あれば我々に しらせて下さい. + さらに良いのは我々に修正案を送ることです (SGML + は学ぶのにそれほど難しくありませんが, + プレインテキストでも問題は ありません). + + + + (もしまだないならば) FreeBSD + のドキュメントを自分の母国語に翻訳 + するのを手伝ってください — + 作業している人がいるかどうか &a.doc; にメールを + 送って聞くだけです. とはいっても, + そうすることによってあなたが全ての FreeBSD + ドキュメントの翻訳に携わるように + なるというわけではないですから ね — 実際, + もっとも翻訳が必要とされているドキュメントはインストール方 + 法です. + + + + たまに(もしくは定期的に) freebsd-questions + メーリングリストや + comp.unix.bsd.freebsd.misc + を読んでください. これは, あなたの持ってい + る専門知識を共有したり誰かが抱えている問題を + 解決するのに非常に有効な ものになり得ることです. + 時にはあなた自身で新しいことを学ぶことさえ + できるかもしれません. + これらのフォーラムはやるべきことのアイディア + の源にもなり得るのです. + + + + -current に正しく当てられるがしばらく経っても(通常は + 2, 3 週間) -stable + に取り込まれてないようなバグフィックスがあるならば + コミッターに 丁寧に思い出させてください. + + + + 寄贈ソフトウェアをソースツリーの + src/contrib + に移動させてください. + + + + src/contrib + 以下のコードが最新のものであるか確認してください. + + + + 2000 年問題に関するバグを探してください(そして, + 見つけたら修正してください!). + + + + ソースツリー全体(もしくはその一部)を, + 警告を詳細に報告するようにして構築してみてください. + そして警告が出ないようにしてください. + + + + ports で, gets() を使っているとか malloc.h + をインクルードしている + などといった警告が出ないようにしてください. + + + + もしなんらかの ports に関わっているなら, + あなたのパッチを作者に フィードバックしてください + (次のバージョンが出た時にあなたが楽になります). + + + + このリストに追加するタスクを提案して下さい! + + + + + + + 貢献の仕方 + + 一般的に, システムへの貢献は次の 6 + つのカテゴリの1つ以上に分類されます: + + + バグ報告と一般的な論評 + + 報告するべきバグがあったり, 提案したいことがあれば: + + 一般的な + 技術的関心事に関するアイデアや提案は &a.hackers; + へメールしてください. 同様に, このような事柄に興味のある + (そして膨大なメール! に耐えられる) 人は, + &a.majordomo; へメールを送って hackers + メーリングリストに参加すると良いでしょう. 情報については + メーリングリスト + を参照してください. + + バグを発見したり変更を送付しようとしている場合は + &man.send-pr.1; プログラムか WEB ベースの + send-pr を使用して報告してください. + バグレポートの各項目を埋めるようにしてください. 65KB + を超えるのでなければ, レポート中に直接 + パッチを入れてくださって結構です. 20KB を超える場合は, + それらを compress して &man.uuencode.1; + することも検討してください. とても大きくなる場合は + ftp.freebsd.org:/pub/FreeBSD/incoming/ + を利用してください. + + + レポートがファイリングされれば, バグ報告の確認と + トラッキング番号をメールで受け取るはずです. + このトラッキング番号を覚えておき, 問題に関する詳細情報を + bug-followup@FreeBSD.ORG に + メールで送って更新できるようにしてください. 例えば + "Re: kern/3377" のように, + この番号をサブジェクト行に使用してください. + すべてのバグレポートの追加情報は, + この方法で送付されなければいけません. + + もしタイムリに (あなたの電子メール接続形態にもよりますが, + 3日から 1週間) 確認を受けとれないとか, 何らかの理由で + &man.send-pr.1; コマンドが 使用できない場合には, &a.bugs; + へメールを送り, 誰か代りにバグ報告を + 送付してもらうようたずねてください. + + + + 文書の変更 + + 文書の変更は &a.doc; が監督しています. バグ報告と一般的な論評 + に記述されているように send-pr + コマンドを使用して, 提案や変更 + (どんな些細なものでも歓迎します!) を送ってください. + + + + 現存のソースコードの変更 + + 現存のソースコードへの追加または変更は, + いくらかトリッキーな仕事で あり, core の FreeBSD + 開発の現状にあなたがどれだけ通じているかに大 きく依存します. + “FreeBSD-current”として知られる FreeBSD の特別な + 継続的リリースがあります. FreeBSD-current + は開発者の積極的な活動の 便宜のために, + 色々な方法で利用可能になっています. FreeBSD-current + の入手と使用方法についての詳しい情報については 最新の FreeBSD を追いかける + を参照してください. + + 不幸にして古いソースをもとに仕事をすることは, + 時々あなたの変更が時 代遅れ, または FreeBSD + への簡単な再統合に合わなくなっていることを意 味します. + システムの現状に関する議論がおこなわれている &a.announce; と + &a.current; へ参加することで, + この可能性を最小限にすることができます. + + 完全な最新のソースを変更のベースにできることが + 確実になったと仮定し て, 次のステップは FreeBSD + の保守担当者へ送る差分ファイルの生成です. これは &man.diff.1; + コマンドを使用しておこないますが, “context + diff”形式が好まれるようです. 例えば: + + &prompt.user; diff -c oldfile newfile + + または + + &prompt.user; diff -c -r olddir newdir + + これで指定されたソースファイルまたはディレクトリ階層に + 対するコンテ キスト形式の差分が生成されます. 詳しい説明は + &man.diff.1; のマ ニュアルページを参照してください. + + 差分ファイル (&man.patch.1; コマンドでテストできます) + を作ったら, それらを FreeBSD + に含めてもらうようメールで送ってください. バグ報告と一般的な論評 + に記述されているように &man.send-pr.1; + コマンドを使用してください. 差分ファイルだけを &a.hackers; + へ送ってはいけません. 途方にくれてしまいます! + 私たちは多忙なので, あなたの提案に大変感謝します + (これはボランティアのプロジェクトです!). + すぐに取りかかることはできませんが, 処理されるまでは ちゃんと + pr データベースに残っています. + + あなたがそうした方がいいと思う場合 (例えば, + ファイルの追加, 削除または名称変更など), 変更を + tar ファイルにまとめ, &man.uuencode.1; + プログラムにかけてください. Shar + アーカイブも歓迎します. + + 例えばあなたがそれ自身のさらなる配布を管理する + コピーライト問題を良 く分かっていないとか, + 単に厳しいレビューをおこなっておらず, リリース + する準備ができていないなど, + あなたの変更が潜在的に不安定な性質をも つものである場合, + &man.send-pr.1; で送付するよりむしろ &a.core; + へ直接送ってください. コアチームメーリングリスト宛のメールは, + 日々の仕 事のほとんどを FreeBSD でおこなっている人たちの, + より小さなグルー プに届きます. + このグループもまたとても忙しい + ことに注意し て, 本当に必要な場合にコアチームの彼らにメールを + 送るだけにしてください. + + コーディングスタイルに関する情報は man 9 + intro および man 9 style + を参照してください. コードを提出する前には, + 少なくともこの情報を意識しておいてくださるようお願いします. + + + + + 新たなコードやメジャーな付加価値の高いパッケージ + + 重要な大きい仕事の寄贈や, 重要な新しいフィーチャーを + FreeBSD に追加 する稀な場合には, 変更点を tar/uuencode + したファイルにして送るか, それらを私たちの ftp サイト + ftp://ftp.FreeBSD.ORG/pub/FreeBSD/incoming + へアップロードす ることのどちらかが通常必要になります. + + 大量のコードを伴った仕事の場合, + コピーライトの神経過敏な問題が常に 出てきます. FreeBSD + に含めるコードのコピーライトとして受け入れるこ とができるのは, + 以下の二つです: + + + + BSD コピーライト. + このコピーライトは“権利に縛られない”性格 + と商用企業にとって一般的な魅力をもつために最も好まれま す. + FreeBSD プロジェクトは商用利用を阻んだりせず, 何かを + FreeBSD + へ投資する気になった商業関係者による参加を積極的に奨励 + します. + + + + GNU一般公有使用許諾, または“GPL”. + このライセンスはコード + を商用目的に使用する場合に余分な努力が求められるため, + 私たち にあまり評判が良いというわけではありません. しかし, + 私たちは 既に GPL 下の高品質なコード (コンパイラ, + アセンブラ, テキスト フォーマッタ等) の提供を受けており, + 私たちは現在それを必要と しています. そのため, + このライセンスによる新たな貢献を拒絶す + るというのは愚かなことでしょう. GPL + 下のコードはソースツリー の別の部分, 現在のところ + /sys/gnu か + /usr/src/gnu に入っています. + そのため, GPL が問題と なるような人は, + 誰でも簡単にそれとわかるようになっています. + + + + これ以外のタイプのコピーライトによる寄贈は, FreeBSD + へ含めることを 考慮する前に, + 注意深いレビューを受けなければなりません. 作者が独自 + のチャネルを通して配布しており, + そのような変更をおこなうことを常に 奨励している場合でも, + 特に限定的な商用のコピーライトが適用される寄 + 贈は一般に拒否されます. + + あなたの作品に “BSD-スタイル” + のコピーライトを付けるには, 保護した + いソースコードファイルすべての一番最初に + 以下のテキストを入れて, %% + の間を適切な情報に置き換えください. + + +Copyright (c) %%適切な年%% + %%あなたの名前%%, %%あなたの州%% %%郵便番号%%. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer as + the first lines of this file unmodified. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY %%あなたの名前%% ``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 %%あなたの名前%% 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 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + $Id$ + + 便宜をはかるため, + このテキストのコピーは次の場所に置いてあります. + /usr/share/examples/etc/bsd-style-copyright. + + + (訳注: 以下は神田敏広氏より寄贈された bsd-style-copyright + の日本語訳です. + ソースファイルに含めるものは原文の方であることに注意して + ご利用ください. また, 原文との間に趣旨の差異が生じた場合, + 原文の内容が FreeBSD プロジェクトの + 意思であるものとします.) + + +Copyright (C) [年] + [あなたの名前] All rights reserved. + +ソースとバイナリ形式の再配布および使用は, 変更の有無にかかわらず以下の +条件を満たす場合に限り許可される: +1. ソースコードの再配布は, 上記の著作権表示・この条件のリスト・下記の + 否認声明文を保持しなければならない. + +2. バイナリ形式の再配布は, 上記の著作権表示・この条件のリスト・下記の + 否認声明文を, 配布物と共に提供される文書および/または他の資料の中に + 含めなければならない. + +(訳注:ここから「否認声明文」です) + +このソフトウェアは[あなたの名前]および貢献者によって ``あるがままの状態'' +で提供され, 商品性と特定の目的に対する適合性についての暗黙の保証に留ま +らず, いかなる明示および暗黙の保証を認めない. [あなたの名前]および貢献 +者は, あらゆる直接的・間接的・偶発的・特殊的・典型的・必然的な損害 (代 +替製品または代替サービスの獲得費; 効用・データ・利益の喪失; または業務 +中断を含み, またそれだけに留まらない損害) に対して, たとえどのようにし +て生じたとしても, そしてこのソフトウェアの使用によってどのようにであれ +生じる, 契約上であろうと, 厳密な責任内であろうと, あるいは不正行為 (過 +失やそうでない場合を含む) における場合であろうとも, いかなる責任論上も, +たとえそのような損害の可能性が予見されていたとしても, 一切の責任を持た +ない. + +翻訳: 神田敏広 +御協力 (五十音順・敬称略): + 池田研二, 内川 喜章, 藤村 英治, むらたしゅういちろう + 杢野 雅一, 横田@宇都宮 + + + + + 自分で port を作る + + 原作: &a.jkh;, &a.gpalmer;, &a.asami;, + &a.obrien; and &a.hoek;. 28 August 1996. + + 訳: &a.jp.simokawa;, &a.asami;. + 10 November 1996. + + 自分で port を作ることに興味がありますか, すばらしい! + + これから, FreeBSD 用のportを作る際の, + いくつかのガイドラインを 説明します. + 実際にportをコンパイルするときのほとんどの仕事は + /usr/share/mk/bsd.port.mk + というファイルでおこないます. + Portsコレクションについてのさらに細かい内部の働きについては, + そちらの ファイルを参照してください. + これにはコメントが細かく書いてありますので, Makefile + を読むのにあまり慣れていない人でも, 得るものはとても大きいで + しょう. + + + ここでは, 変更可能な変数の一部についてのみ記述しています. + ほとんどの変数はbsd.port.mk + の始めに記述があります. + また, このファイルは非標準のタブの設定になっています. + EmacsVim + はファイルのロード時にこれを認識しますが, + viexでは, + ファイルをロードしたら :set tabstop=4 + のようにして正しい値を設定する + ことができます. + + + + 3分porting + + この節では, 簡単なportの方法について説明します. + 多くの場合これ では不十分ですが, + まあうまくいくかどうか試してみて損はないでしょ う. + + まず, 元のtarファイルをDISTDIRに置きます. + デフォルトは/usr/ports/distfilesです. + + + 以下では, + ソフトウェアはそのままコンパイルされるとします. つまり, + FreeBSDのマシンで動かすために, 変更がまったく必要ない + とします. + もしなにか変更が必要な場合には次の節も参照する必要 + があります. + + + + <filename>Makefile</filename> の作成 + + 最小限のMakefile + は次のようなものです: + + +# New ports collection makefile for: oneko +# Version required: 1.1b +# Date created: 5 December 1994 +# Whom: asami +# +# $Id$ +# + +DISTNAME= oneko-1.1b +CATEGORIES= games +MASTER_SITES= ftp://ftp.cs.columbia.edu/archives/X11R5/contrib/ + +MAINTAINER= asami@FreeBSD.ORG + +MAN1= oneko.1 +MANCOMPRESSED= yes +USE_IMAKE= yes + +.include <bsd.port.mk> + + おわかりになりますでしょうか. + $Id$があ る行の内容については, + 気にしないでください. これはこのファイル + がportsツリーに書き込まれるときにCVSによって自動的に書 + き込まれます. もっと詳しい例が見たければ, Makefileのお手本 + の節をご覧ください. + + + + Package記述ファイルの作成 + + どのようなportでも, packageにするしないに関わらず, 3つ + の記述ファイルが必要です. + pkgサブディレクトリにある, + COMMENT, DESCR, + それに PLISTです. + + + <filename>COMMENT</filename> + + これには, そのportについての説明を1行で書きます. + Package の名前, バージョン番号等は + 含めないでください. たとえば, + こんな具合です: + + +A cat chasing a mouse all over the screen. + + + + <filename>DESCR</filename> + + これは, そのソフトウェアについての, + すこし長い説明を記述します. その port + が何をするのかについての数段落程度の + 簡潔な解説があれば十分です. + このファイルはマニュアルでもなければ, + 使用方法やコンパイル方法についての細かい + 説明書でもありません. 特に, + READMEファイル manpage + をコピーしようとしてしている場合には + 注意してください. これらは多くの場合, + そのポートの簡潔な説明に なっていなかったり, + 扱いにくい形式(manpage の場合, + 行を揃えるために空白が調整されます)になっていたりします. + もしこのソフトウエアに公式の WWW のホームページがあれば, + ここに書いて下さい. + + このファイルの最後にあなたの名前を書くことが + 推奨されています. たとえば, こんな具合です. + + +This is a port of oneko, in which a cat chases a poor mouse all over +the screen. + : +(うんぬん.) + +http://www.oneko.org/ + +- Satoshi +asami@cs.berkeley.edu + + + + <filename>PLIST</filename> + + このファイルには, + このportによってインストールされるファ + イルが列挙されます. このファイルはpackageを作る際のリス + トとして使われるため, `packing list' とも呼ばれます. + ここ に書かれているファイル名は, + インストール時のプレフィックス (普通は + /usr/local か + /usr/X11R6) からの 相対パスです. + MANn + 変数を使用する場合(使用することが推奨されています)には, + マニュアルはここに入れないでください. + + 簡単な例を載せておきましょう: + + +bin/oneko +lib/X11/app-defaults/Oneko +lib/X11/oneko/cat1.xpm +lib/X11/oneko/cat2.xpm +lib/X11/oneko/mouse.xpm +@dirrm lib/X11/oneko + + 'Packing list'の詳細については, &man.pkg.create.1; + の マニュアルを参照してください. + すべてファイルを列挙しなければなりませんが, + ディレクトリ名は必要ありません. また, ports + がインストール時にディレクトリを作成する場合には, + @dirrm の行を加えて, その port + が削除されるとき, + そのディレクトリも削除されるようにしてください. + + このファイルには, + ファイル名をアルファベット順に並べるようにしてください. + port のアップグレートのとき, + 楽に確認ができるようになります. + + + + + チェックサムファイルの作成 + + ただ, make makesum + と入力するだけです. bsd.port.mk + にルールがあるので, + 自動的にfiles/md5が生成されます. + + + + Portのテスト + + そのportが正しく動くことを, + package化を含めて確認してください. + 以下の重要なポイントを確認してください. + + + + PLIST にその port + がインストールしないものが含まれていないこと. + + + + PLIST にその port + がインストールする全てのものが含まれていること. + + + + reinstall + ターゲットを使うことによって, + 何度でもインストールが可能こと. + + + + deintall の際に 後片付け + をすること. + + + + + 推奨されるテストの手順 + + + make install + + + + make package + + + + make deinstall + + + + pkg_add `make package-name` + + + + make deinstall + + + + make reinstall + + + + make package + + + + package および + deinstall の段階で, + どんな警告(warning)も出力されないことを確認してください. + ステップ3の後, + 新しいディレクトリが全て正しく消去されているかを + 確認してください. また, + ステップ4の後にそのソフトウェアを使用してみて, package + からインストールされた場合に正しく動作するかを + 確認してください. + + + + <command>portlint</command> でチェック + + portlintを使って, あなたの port + が我々のガイドラインそっているかを確認してください. + portlint プログラムは ports + コレクションに含まれています. 特に, Makefile + が正しい形式になっているか, package + の名前が正しいか, をチェックするのに良いでしょう. + + + + Portの送付 + + まず, やってよいことといけないこと + についての節を読んでください. + + さあ, あなたのportに満足したら, + あとはそれをFreeBSDのメイ ンのportsツリーに置いて, + 皆に使ってもらうだけです. いまある + work ディレクトリや + pkgname.tgz + パッケージは必要ありませんから, まず消去してください. + あとは, バグレポートの中に shar `find + port_dir` の出力を, &man.send-pr.1; + プログラムを使用して送ってください. &man.send-pr.1; + についての詳細は, バグ報告と一般的な論評 + を参照してください.) もし, 圧縮していない状態で, + 20KB以上あるようなポートであれば, 圧縮して tar + ファイルにして, バグレポートに入れる前に &man.uuencode.1; + を使用してください. (20KB以下のものでも, tar + ファイルにして送ってもよいですが, あまり歓迎されません). + バクレポートの category は ports, class + は + change-requestを必ず使用してください. + (レポートを confidential (内密) + にしないようにしてください!) + + もう一度, オリジナルのソースファイル, + work ディレクトリ, make + package + で作成したパッケージが含まれていないこと + を確認してください. + + + 以前, 新しい port をわれわれの ftp サイト (ftp.freebsd.org) + にアップロードするようにお願いしたことがありますが, + 現在このサイトの incoming + ディレクトリは読み出し不可になっており, + いまでは推奨されていません. + 沢山の海賊版ソフトウェアがそこに置かれたためです. + + + 私たちは, 何か不明な点があったらあなたに確認したのち, + それをツリーへ置きます. あなたの名前は, FreeBSD + ハンドブックやその他のファイルの “Additional FreeBSD + contributors” のリストにも載るでしょう. う〜ん, + 素晴らし い. :) + + + + + + 本格的なport + + 残念ながら, 移植がそう簡単ではなく, + 動かすために多少の変更が 必要な場合も多いでしょう. + この節では, portsコレクション の方法論にのっとって, + そのような場合にどのように変更を施し, 動 + くようにしたらよいかを順を追って説明します. + + + port構築の詳細 + + まず, あなたがportのディレクトリで + make とタイ + プしてから起こる一連の出来事について,順を追って説明しま + す. ここを読むときには, 他のウィンドウで同時に + bsd.port.mk + も開いておくとよいかもしれません. + + しかし, + bsd.port.mkが何をしているのか, + 完全に理解 できなくても心配する必要はありません. + そう多くの人が理解して いるわけではないですから... f(^_^;) + + + + まず, fetch + というターゲットが実行されます. + このfetchターゲットは + ローカルディスクのDISTDIRに配布ファ + イルがあるようにするのが役目です. もし, + fetchが必要なファ + イルをDISTDIRに見つけることが + できなけ れば, Makefileに指定されているURL + MASTER_SITES, + そして私たちのFTPサイトで ある + ftp://ftp.freebsd.org/pub/FreeBSD/ports/distfiles/ + (ここ には, 私たちが取ってきたファイルを + バックアップとして置いてあ ります) に探しにいきます. + そして, ユーザのサイトがインター ネットに + 直接接続されている場合には, FETCH + を使って, その名前のファイルを取っ てきて, + DISTDIRに保存します. + + + + 次に実行されるのは + extract ターゲットです. + これは, DISTDIRにある, 配布ファイル + (普通は gzipされたtarファイル) を読み, + ソースを一時的な作業ディレ + クトリWRKDIR (デフォルトは + work) に展開します. + + + + 次に, patch + というターゲットが実行されます. まず, + PATCHFILESに定義されている, + すべてのパッ チをあてます. + 次にもしPATCHDIR (デフォ ルトは + patches サブディレクトリ) + にパッチが存在す れば, + これらをアルファベット順にあてます. + + + + 次に実行されるターゲットは + configureです. これには, い + ろいろな場合があります. + + + + もし存在すれば, + scripts/configure + が実行されます. + + + + もし, HAS_CONFIGURE + あるいは GNU_CONFIGURE + がセットされていれば, + WRKSRC/configure + が実行されます. + + + + もし, USE_IMAKE + がセットされていれば, XMKMF + (デフォルト: xmkmf -a) + が実行されます. + + + + + + 最後に, build + というターゲットが実行されます. これは, その port + の専用の作業ディレクトリ (WRKSRC) + にい き, コンパイルするのが役目です. もし + USE_GMAKE がセットされていれば, GNU + make が使用されます. + さもなければFreeBSDの make + が使用されます. + + + + 上記はデフォルトのルールです. さらに, + pre-何とか + や + post-何とか + というターゲット が定義してあったり, + そのような名前のスクリプトが + scripts サブディレクトリに + 置いてある場合には, それ らはデフォルトの動作の + 前後に実行されます. + + たとえば, post-extract + というターゲットがMakefile で定義されていて, + pre-build というファイルが, + scripts + サブディレクトリにあるとすると, + post-extractターゲットは, + 通常の展開動作のあとに呼 び出され, + pre-build + スクリプトはデフォルトのコンパイ + ルのルールが実行される前に実行されます. + もし動作が簡単であれ ば, Makefile + のターゲットを使用することが推奨されています. な ぜならば, + そのportが何らかのデフォルトではない動作を必要とす + るのかどうかが一箇所にまとめて書いてあった方が他の人に + 理解しやす いからです. + + デフォルトの動作は bsd.port.mk の + do- 何とか + + というターゲットでおこなわれます. たとえば, + portを展開するコマンドは, + do-extract + というターゲットにあります. もし, + デフォルトのターゲットに 不満があれば, + do- something + というターゲッ + トを再定義することによって, + どのようにでも直すことができます. + + + “メイン”のターゲット (例えば, + extract, + configure等) は, + すべての前段階が実行されていること を確認して, + 実際のターゲットやスクリプトを呼び出す以外のこと + はしません. + bsd.port.mkはこれらが変更されることは仮定してい + ませんので, もし, 例えば, 展開の仕方を直したいときには, + do-extract を直し, + 絶対にextractには手を + 触れないでください. + + + これで, ユーザが make + と入力したときに何が起こ るのかが理解できたと思います. + では, 完璧なportを手順を追っ て作ってみましょう. + + + + オリジナルのソースの入手 + + オリジナルのソースを, (普通は) + 圧縮されたtarファイルの形 ( + foo.tar.gz + あるいは + foo.tar.Z) + で入手して, それを DISTDIR + にコピーします. 可能なかぎり, 広 + く使われている主流の + ソースを使用するようにしてください. + + もし, ネットワークへの接続のよい FTP/HTTP + サイトを見つけるこ とができなかったり, + 頭にくるような非標準的な形式しか持ってい + ないサイトしか見つけられないときには, 自分で管理する確実な + ftp か http サーバ (たとえば, + あなたのホームページ)に置くこと ができます. + MASTER_SITES + に正しく反映されていることを確認してください. + + もしも, そのような都合の良く, + 安心な置き場所が見つけられない 場合(あなたが FreeBSD の + committer であれば, 自分の + public_html ディレクトリに置けます), + 私たちが, + + ftp://ftp.FreeBSD.ORG/pub/FreeBSD/ports/distfiles/LOCAL_PORTS/ + に置き場所を提供できます. + この場所は, 変数 MASTER_SITE_LOCAL + を使って参照してください. + これについての問い合わせのメールは &a.ports へお願いします. + + + その port の配布ファイルが特に理由もなく, + しょっちゅう変る場合には, + 配布ファイルをあなたのホームページに置いて + MASTER_SITESの最初に入れてください. + こうすることによって, ユーザ利用する場合に + checksum mismatch + エラーが起るのを防ぎ, 我々の ftp + サイトの保守の負担を減らすことができます. もし, master + site がたった一つしかない場合には, + あなたのサイトにバックアップを置いて + MASTER_SITES + の2番目に加えてください. + + もし, + あなたのportに必要ないくつかの追加パッチがインター + ネット上で手に入るのならば, それらも取ってきて, + DISTDIR に置きます. もし, + それらがメイン + のソースのtarファイルとは別のサイトにあっても, + 心配する必要 はありません. + そのような状況にはちゃんと対応できるようになっ ています. + (以下のPATCHFILESの記述 + をご覧ください). + + + + Portの修正 + + 適当なディレクトリにtarファイルを展開して, + FreeBSDの最新の バージョン上で, + 正しくコンパイルできるために必要なあらゆる変 更を施します. + 最終的に処理は自動化するわけですから, 何をおこなっ + たかを注意深く記録しておきましょう. + あなたのport が完成した暁には, ファイルの削除, 追加, + 修正を含むすべての処 理が, + 自動化されたスクリプトやパッチファイルで + おこなえるようになっ ていないといけません. + + もし, あなたの port + のコンパイルやインストールのために必要 + な手作業があまりに多いようならば, Larry Wall の模範的な + Configure + スクリプトでも参考にしたほうがいいかもしれませ ん. + 新しいportsコレクションは, 最小のディスクスペースで, + 個々のportがエンドユーザにできるだけ“プラグ & + プレ + イ”の状態でmakeできることをめざしています. + + + あなたが作成し FreeBSD の ports + に寄付されたパッチファイル, + スクリプトおよびその他のファイルは, + 明示的に記述されている場合 を除いては, + BSDの標準的な著作権条件によりカバーされていると見な + されます. + + + + + パッチをあてる + + port + の過程で追加されたり変更されたファイルは再帰的diffで変 + 更点を取り出すことができます. パッチは適当にまとめて, + patch-xx + という名前のファイルに入れてくだ さい. + xx + はパッチが適用される順番を示します — これらは, + アルファベット順, つまり + aa が 最初, つぎに + ab などとなります. これらのファイル + をPATCHDIRに置いておくと, + 自動的に適用さ れるようになっています. すべてのパッチは + WRKSRC (通常は, portのtarファイルが展 + 開されるところで, makeが実行されるところと同じです) + からの相 対パスになります. + 修正やアップグレードを容易にするため, 2つ + 以上のパッチが同じファイルを修正するのは避けてください. + (例, + patch-aaとpatch-abが共にWRKSRC/foobar.c + を修正する, など.) + + + + コンフィグレーション + + カスタマイズのために追加したいコマンドがあれば, + configure + という名前のスクリプトに入れて + scripts サブディレクトリに置きます. + 上で述べたよ うに, pre-configure + あるいは post-configure という + Makefile + のターゲットおよび/あるいはスクリプトで処理す + ることもできます. + + + + ユーザからの入力の扱い + + もし, そのportがビルド, コンフィグレーション, + インストー ルの際にユーザからの入力を必要とするならば, + Makefileで + IS_INTERACTIVEをセットしてください. + これによって, 深夜, + 自動的にたくさんのportをコンパイルすることが可能にな + ります. 環境変数BATCHがセットされていると + IS_INTERACTIVE + の定義されているportはスキップされ ます (そして, + ユーザがINTERACTIVEという変数をセッ + トすると入力を必要とする port + のみコンパイルされま す). + + もし, 適切なデフォルト設定があるのであれば, + PACKAGE_BUILDING 変数をチェックして, + それが設定されて いる場合には, + ユーザ入力のスクリプトを起動しないように してください. + こうすることによって, CD-ROM や ftp に 置く package + を我々が作成することができます. + + + + + + Makefileの作成 + + Makefileの作成は非常に単純です. 繰り返しになりますが, + 始める まえに, すでにある例を見てみることをお奨めします. + またこのハ ンドブックにはMakefileのお手本 + があります. それを見て, + Makefile内の変数の順番や空行を入れると + ころなどの参考にしてください. + そうすると他の人々にも読みやすい ものとなります. + + では, + Makefileをデザインするときに問題となるところを順に追っ + て見てみましょう. + + + オリジナルのソース + + ソースはDISTDIRに, + 標準的なgzipされた tarファイルとして置かれていますか? + そうであれば, 次のステッ プに進めます. そうでなければ, + 変数 EXTRACT_CMD, + EXTRACT_BEFORE_ARGS, + EXTRACT_AFTER_ARGS, + EXTRACT_SUFX, + DISTFILES + を適当に書き換えないといけません. + どれだけ変更しないといけないかは, あなたのportの + 配布ファイルがどの程度標準からかけはなれているかによりま + す. (最もよくある場合は, + gzipではなく普通のcompressコマンド + でtarファイルが圧縮されている場合で, + EXTRACT_SUFX=.tar.Z + とするだけです.) + + 最悪の場合には, 自分で + do-extract ターゲットを作 成して, + デフォルトを上書きすることもできます. しかし, そこま + でする必要があることはめったにないでしょう. + + + + <makevar>DISTNAME</makevar> + + DISTNAME には port + の名前の基幹部分を入れ ます. デフォルトのルールでは, + 配布ファイルのリスト (DISTFILES) は + DISTNAME + EXTRACT_SUFX という名前 になっています. + 例えば, foozolix-1.0.tar.gzの場 合, + 通常のtarファイルだと, + DISTNAME=foozolix-1.0 のようになります. + + さらにデフォルトのルールでは, tarファイルは + work/DISTNAME + というサブディレクトリ に展開されることを仮定しています, + 例えば work/foozolix-1.0/ + といった具合いです. + + これらの動作はもちろんすべて変更可能です. + デフォルトのルー + ルは最も標準的な場合を仮定しているだけです. まず, port + が複 数の配布ファイルを必要とするときには, 単に明示的に + DISTFILESを設定してください. もし, + DISTFILES + の一部だけが実際に展開される場合 には, + それらをEXTRACT_ONLY に設定してくだ + さい. この変数が定義されている場合には, 展開時に + DISTFILESに優先して利用されます. + 残りのファ + イルもDISTDIRに取ってきますが, 展開時に + はなにもせずに後で使うためにそのまま置いておかれます. + + + + + <makevar>PKGNAME</makevar> + + もし, DISTNAME が我々の package + の名前についてのガイドライン + に沿ったものでない場合には, PKGNAME + にもっと良い名前を設定してください. + 詳細は上記のガイドラインを参照してください. + + + + + <makevar>CATEGORIES</makevar> (分類) + + 完成した package の実体は + /usr/ports/packages/All に置かれます. + また, 1つかそれ以上の + /usr/ports/packages + のサブディレクトリからのシンボリッ クリンクが作られます. + それらのサブディレクトリの名前が + CATEGORIES + という変数によって指定されます. これは, + ユーザがFTPサイトやCD-ROMのpackageの山を渡り歩 + くことを容易にするためです. 現在存在する カテゴリを見て, そ + のportに適したもを選んでください. + + このリストは, この port が port tree のどこに import + されるかも決定します. 2つ以上のカテゴリを指定した場合には + 最初のカテゴリで指定されるサブディレクトリに置かれること + になります. 適切なカテゴリを選ぶ方法については, カテゴリ + の節を参照してください. + + もしその port + が本当に現在存在するすべてのものとは異なって いる場合には, + 新しいカテゴリ名を作ることもできます. その際には, &a.ports + 宛てに新しいカテゴリ名を提案する + メールを送ってください. + + カテゴリ名については, + なんのエラーチェックも行なわれません.ミスタイプがあっても + make package はなにも考えずに + 新しいディレクトリを作ってしまいますので, + 注意してください. + + + + <makevar>MASTER_SITES</makevar> + + オリジナルの配布ファイルを指し示す FTP または HTTP の + URL のディ レクトリ部分までを + MASTER_SITES に記録しま す. スラッシュ + (/) を最後につけることをお忘れなく. + 配布ファイルがシステム上に存在しないときに, + makeマクロは FETCH + でこの変数に指定されたサイトから取っ てきます. + + 複数の, + できれば異なる大陸のサイトをこのリストに入れておく + ことが推奨されています. これによって, + 広域ネットワークにトラ + ブルがあった場合でも成功する可能性が高くなります. + 私たちはさら に, 自動的に最も近いマスタサイトを検出して, + そこから取って + くるメカニズムの導入を計画しています. + + オリジナルのtar ファイルが, X-contrib, GNU, Perl CPAN, + TeX CTAN または Linux Sunsite + などの有名なアーカイブにある場合には, + MASTER_SITE_XCONTRIB, + MASTER_SITE_GNU, + MASTER_SITE_PERL_CPAN, + MASTER_SITE_TEX_CTAN および + MASTER_SITE_SUNSITE を利用することで, + 簡単にこれらのサイトを 指定することができます. あとは + MASTER_SITE_SUBDIR にアーカイ + ブ内でのパスを指定するだけです. 以下に例を示します. + + +MASTER_SITES= ${MASTER_SITE_XCONTRIB} +MASTER_SITE_SUBDIR= applications + + ユーザは/etc/make.conf中で + MASTER_SITE_* 変数を設定 + することによって, デフォルトの FTP サイトではなく, + これらの 有名なアーカイブの + ミラーの中で好みのものを使用することが可能 です. + + + + <makevar>PATCHFILES</makevar> + + もし, + オリジナルの配布ファイル以外にもFTPかHTTPで手に入る + パッチが必要な場合には, + PATCHFILESにファ イル名を, + PATCH_SITESにサイトとディレクト + リの名前を MASTER_SITES + と同様に設定してく ださい. + + そのパッチ内のファイル名ががソースツリーの + 一番上のディレク トリ (WKRSRC) + からの相対パスになっていな い場合には, + PATCH_DIST_STRIPを指定してく ださい. + 例えば, パッチ内のファイル名にすべて余計な + foozolix-1.0/ がついている場合には, + PATCH_DIST_STRIP=-p1としてください. + + これらのパッチは圧縮されていても大丈夫です. + ファイル名が .gz か + .Z で終わる場合には自動的に復元 + されるようになっています. + + もしパッチが, 文書などその他のファイルと一緒に gzip + された tarファイルで配布されている場合には,単純に + PATCHFILES を使うことはできません. + このような場合には, このパッチの tar + ファイルの名前と場所を DISTFILES と + MASTER_SITES に加えます. それから, + pre-patch ターゲットで, + パッチコマンドを走らせるか, パッチファイルを + PATCHDIR ディレクトリに + patch-xx + という名前でコピーするかして, + パッチを適用するようにします. + + + 普通の gzip か compress された tar ファイルであれば, + 通常のソースファイルと一緒にその時までに + 展開されていますので, 明示的に展開する必要はありません. + もし, 後者の方法を使用する場合には, + すでにそのディレクトリにある なにかを上書きしないように, + 注意する必要があります. さらに, + pre-clean + ターゲットにコピーしたパッチファイル + を削除するコマンドを追加するのを忘れないでください. + + + + + <makevar>MAINTAINER</makevar> + + あなたのメールアドレスをここに入れてください. + お願いします. + :) + + 保守担当者(maintainer)の責任についての詳細は, Makefile 中の + MAINTAINER の節をご覧ください. + + + + 依存関係 + + このプログラムが他のportに依存する場合には, + 必要なものが 自動的に作られるようにすることができます. + そのために, 以下の 5つの変数が用意されています. + よくあるケースのためにあらかじめ設定された依存変数や, + いくつかの依存関係の制御のための変数があります. + + + <makevar>LIB_DEPENDS</makevar> + + Port が必要とする非標準の共有ライブラリを + この変数で指定 します. これは + lib: + dir: + target という組のリストで, + うち lib + が共有ライブラリの名前, そして + dir + がそのライブラリが見つからない場合にインストールする + port のあるディレクトリで, + target + はそのディレクトリで呼ばれるターゲットです. 例えば, + LIB_DEPENDS= + jpeg.9:${PORTSDIR}/graphics/jpeg:install + と指定してあれば, + まずメジャーバージョンが9のjpegライブ + ラリがあるかどうか確認し, ない場合にはportsツリーの中の + graphics/jpeg + というサブディレクトリに移動し, そこ + でコンパイルとインストールを行ないます. + target の 部分は, + DEPENDS_TARGET (デフォルトは + install) + と等しいときには省略できます. + + + 前半の lib + 部分は ldconfig -r | grep -wF + への引数になります. + この変数には正規表現を入れられません. + + + + + この依存関係は2度チェックされます. まず + extract ターゲットで, 次に + install でチェックされます. + (これは, その port を作成するマシンとインストールする + マシンが違う場合でも, きちんとそのライブラリが利用できる + ことを確認するためです.) また, 依存するもの名前は + package の中にも含まれますので, + ユーザのシステムに存在しなければ, + pkg_add が自動的にインストールします. + + + + + <makevar>RUN_DEPENDS</makevar> + + Port + を使用する際に必要となるファイルまたはプログラムがある + ときにはこの変数で指定します. これは + path: + dir + :target とい + う組のリストで, path + がファイルまたはプログラムの 名前, そして + dir + がそれが見つからない場合に作成する + ためのディレクトリ名で target + はそのディレクトリで呼ばれるターゲットです. + path の最初の文字がスラッ + シュ (/) + の場合にはファイルかディレクトリ とみなし, その存在を + test -e でチェックします; + そうでない場合には 実行可能であると仮定し, + which -s を使って + そのプログラムがユーザのサーチパス上に + あるかどうか確認します. + + 例えばMakefileに以下のように書いてあるとします. + + +RUN_DEPENDS= ${PREFIX}/etc/innd:${PORTSDIR}/news/inn \ + wish8.0:${PORTSDIR}/x11-toolkits/tk80 + + まず, /usr/local/etc/innd + というファイルかディレクトリが存在 するか確認し, + ない場合にはportsツリーの中の + news/inn + というサブディレクトリから作られます. ま た, + wish8.0 + というプログラムがユーザのサーチパス中 + にあるかどうか探し, ない場合には同じくportsツリーの + x11-toolkits/tk80 + というサブディレクトリから作られます. + + + この例で, innd + は実際にはプログラムです; この ように, + プログラムであっても標準のサーチパス以外のところに + あるようなものの場合には, + 絶対パスで指定してください. + + + この依存関係はinstall + ステージのはじめでチェック されます. また, + packageを作る際に必要となるportのpackage名 が記録され, + pkg_addを使用すると + ユーザのシステムに存在しない場合には自動的にそちら + のpackageもインストールされるようになります. + target の部分は, + DEPENdS_TARGET + と同じ場合には省略可能です. + + + + + <makevar>BUILD_DEPENDS</makevar> + + Port + のコンパイルに必要なファイルまたはプログラムがある + ときは, この変数で指定してください. + RUN_DEPENDSと同 様に, これは + path: + dir + :target + という組のリストです. 例 えば, + BUILD_DEPENDS= + unzip:${PORTSDIR}/archivers/unzip は + unzip という名前のプログラムを探し, + 見つから + ない場合にはarchivers/unzip + サブディレクトリで作 れという意味になります. + + + ここでは “コンパイル” + と一口にいいましたが, この変数は実際 + にはファイルの展開から実際のコンパイル・リンクまで + 全部をま とめて面倒を見てくれます. + この依存関係は extract + ステージからチェックされます. + target の部分は + DEPENDS_TARGET + と同じ場合には省略可能です. + + + + + <makevar>FETCH_DEPENDS</makevar> + + この変数は, + portを取ってくるのに必要なファイルまたはプロ + グラムを指定するのに使います. 上の二つと同様に, これは + path: + dir + :target + + という組のリストです. 例えば, + FETCH_DEPENDS= + ncftp2:${PORTSDIR}/net/ncftp2 + としておけば, ncftp2 + という名前のプログラムを探 し, + 見つからない場合にはnet/ncftp2 + サブディレク トリにいってインストールします. + + この依存関係は fetch + ステージからチェックされます. + target の部分は + DEPENDS_TARGET + と同じ場合には省略可能です. + + + + <makevar>DEPENDS</makevar> + + 上記の四つのいずれにもあてはまらないような + 依存関係がある場 合, または他の port + がインストールされれているだけではなく, + ソースが展開されている必要がある場合にはこの変数 + を使います. これは + dir + :target という形式のリスト + になります. 上記の四つと違って特に + “確認”するものがありませんので. + + + + よくある依存関係を表す変数 + + もし ports が X Window System + を必要とするのであれば, USE_XLIB=yes + を定義してください. (これは + USE_IMAKEも意味します) BSD + make の代りに GNU + make を必要とする場合には, + USE_GMAKE=yes を定義. 動作するのに + GNU autoconf を必要とする場合には, + USE_AUTOCONF=yes を定義. 最新の qt + toolkit を使用 する場合には + USE_QT=yes を定義. perl + 言語のバージョン5 を必要とする場合には, + USE_PERL5=yes を定義してください. + (特に最後のは重要で, FreeBSD のいくつかの + バージョンでは基本システムに perl5 を含みますが, + 他のものは含んでいません.) + + + + 依存関係に関する注意 + + 上で述べたように, 依存する ports + が必要になったときに呼ばれるデフォルトのターゲットは + DEPENDS_TARGET で, + そのデフォルトは install です. + これは, ユーザの使用する変数で, port の + Makefile + で定義されるものではありません. もし, + あなたのportが特別な方法で, 依存関係を扱う必要が + ある場合には, DEPENDS_TARGET + を再定義するのではなく, *_DEPENDS + 変数の :target + の部分を利用してください. + + make clean とタイプしたときには, + 依存する port も自動的に clean されます. + もしそうしたくない場合には, + NOCLEANDEPENDS + を環境変数として設定してください. + + 無条件に他の port に依存させるには, 特別に + nonexistent という文字列を + BUILD_DEPENDS あるいは + RUN_DEPENDS + の最初のフィールドに使用してください. これは, 他の port + のソースが必要なときのみ使用してください. target + も指定することによって, + コンパイルの時間を節約することができます. 例えば, + BUILD_DEPENDS= + /nonexistent:${PORTSDIR}/graphics/jpeg:extract + これは, 常に JPEG port の directory + に行きソースの展開を行ないます. + + あなたがやりたいことが他の方法ではできない場合以外は, + DEPENDS を使わないでください. これは常に + 他の port の作成を行い(さらにデフォルトでインストール + を行い), package も作成します. もし本当にこれがあなたの + やりたいことでしたら, 代りにこれを + BUILD_DEPENDS と + RUN_DEPENDS で書くことをお勧めします + — 少なくとも意図が明確になります. + + + + + コンパイル時の特別な指定 + + GNUのmakeを使う場合には, + USE_GMAKE=yes と指定してください. Port + に GNU の configure が含まれ + ている場合には, GNU_CONFIGURE=yes + を使います(これは, HAS_CONFIGURE + も意味します). configure に追加の引数 + (デフォルトでは, GNU の configure では + --prefix=${PREFIX}, GNUでない + configure では空) + を渡したい場合には追加部分を + CONFIGURE_ARGS で指定してください. + そのパッケージが autoconf + を使用する場合には, USE_AUTOCONF=yes + を使います. これは, GNU_CONFIGURE + も意味し, configure の前に + autoconf を実行します. + + + X Window Systemのアプリケーションなど, + imakeを 使って + Imakefile から + Makefile を作成するportの場合には + USE_IMAKE=yes を指定してください. + コンフィグレー ションステージで自動的にxmkmf + -a が実行されます. も し + フラグが問題をもたらすなら, さらに + XMKMF=xmkmfとしてください. + + もし, port が imake + を使用するけれども, install.man + ターゲットがない場合には, + NO_INSTALL_MANPAGES=yes + を指定してください. ついでに, その port + のオリジナルの作者を探し出して八つ裂きにすると + いいでしょう.:> + + Portの Makefile が + all 以外のものをメインのター + ゲットとしている場合には, ALL_TARGET + でそ れを指定してください. + install と + INSTALL_TARGET も同様です. + + もし, port の元の Makefile が + all + 以外のターゲットをメインのターゲットとしている場合には, + ALL_TARGET + をそれに合わせて設定してください. + install と + INSTALL_TARGET + についても同様です. + + + + + + <makevar>NO_INSTALL_MANPAGES</makevar> + + あなたの port がimakeは使うものの + install.man + ターゲットを持っていない場合, + NO_INSTALL_MANPAGES=yes + を指定してください. つい でに, + 作者を探し出して八つ裂きにするといいでしょ う. (-_-#) + + + + + 特別な配慮 + + Portを作成する場合, + 考慮しなくてはいけないことがさらにいくつかあります. + この節では, + それらのうちもっともありがちなものについて説明します. + + + ldconfig + + 共有ライブラリをインストールするときには, + 共有ライブラリのキャッシュを更新するために port の + Makefile の + post-installtarget + から${LDCONFIG} -m + を走らせてください. + このコマンドの引数は共有ライブラリのインストールしてある + ディレクトリ (通常 + PREFIX/lib) + です. + + また, pkg/PLIST@exec + /sbin/ldconfig -m@unexec + /sbin/ldconfig -R の組を入れて, package + をインストールした場合にも共有ライブラリがすぐ使え, + 削除の際にも, システムがまだライブラリが存在すると + 誤認しないようにしてください. + この行は共有ライブラリを指定する行のすぐ後に + 書くのがよいでしょう: + + +lib/libtvl80.so.1 +@exec /sbin/ldconfig -m %D/lib +@unexec /sbin/ldconfig -R + + 絶対に引数なしでただ + ldconfig とだけ書いてある行を + Makefile や + pkg/PLIST + ファイルに入れないでください. このコマンドを実行すると, + 共有ライブラリのキャッシュが /usr/lib + の内容のみとなり, + ユーザのマシンにさまざまな問題をもたらします (「ぎゃぁ! + このportをインストールしたら xinit + が使えなくなっちゃった!」). この掟を破った者は, + 永久に地獄の底で苦しみ続けるように, + 閻魔様に頼んでおきます. + + + + + ELF 対応 + + FreeBSD は 3.0-RELEASE で ELF に移行しましたので, + シェアードライブラリを作成するたくさんの port を ELF 対応 + にする必要があります. 3.0 システムは ELF としても a.out + としてmも 動作しますし, 我々は非公式ではありますが, + できるだけ長い間 2.2 + システムのサポートをしたいと思っていますので, + 複雑な状況です. 以下は a.out のみに対応している port + をどのように a.out と ELF 両方に対応させるかのガイドライ + ンです. + + このリストの一部は, + 移行時にしかあてはまらないものもありますが, 古い port + をアップグレードしたい場合に参考になるように, + しばらくのあいだは残しておきます. + + + a.out ライブラリの退避 + + a.out ライブラリは, + /usr/local/lib から, + aout サブディレクトリ + に移動しなくはなりません. (もし移動しないと, ELF ports + がそれらをあっさり上書きして しまいます.) 3.0-CURRENT の + src/Makefile にある + move-aout-libs ターゲット + (aout-to-elf から呼ばれます) + がその移動をしてくれます. a.out + ライブラリを移動するだけなので, ELF と a.out + の両方のライブラリが標準的な + ディレクトリにあるシステムでは, + このターゲットを実行しても安全です. + + + + フォーマット + + port ツリーは package + をそのマシンのフォーマットで作成します. つまり, 2.2 では + a.out, また 3.0 では `objformat` + の結果によって, a.out か ELF になります. また, いったん + a.out ライブラリをサブディレクトリに移動すると a.out + ライブラリの作成はサポートされません. (つまり, + あなたがにをすれば良いのかを理解しているのならば, + うまく作成できるかもしれませんが, + 自力でやらなければならないということです) + + + もし port が aout でしか動作しないのなら, + BROKEN_ELF + に原因を説明する文字列を設定してください. + この変数が設定された port は, ELF + システム上でのビルドの際スキップされます. + + + + + PORTOBJFORMAT + + bsd.port.mk において + PORTOBJFORMAT は + aoutelf + に設定され, 環境変数 CONFIGURE_ENV, + SCRIPTS_ENV, MAKE_ENV の中で + export されます. (2.2-STABLE では常に + aout になります). また, + PORTOBJFORMAT=${PORTOBJFORMAT} として + PLIST_SUB に渡されます. + (以下にある ldconfig + に関するコメントを参照して下さい.) + + この変数は, 以下のようにして + bsd.port.mk 中で設定されます. + + +PORTOBJFORMAT!= test -x /usr/bin/objformat && /usr/bin/objformat || echo aout + + この変数を使って, port の make + の過程で何をすべきかを決定すべきですが, もし port の + configure スクリプトが元々, ELF + システムを自動的に検出するのであれば, + PORTOBJFORMAT + を参照する必要はありません. + + + + 共有ライブラリの作成 + + 以下は, a.out と ELF + での共有ライブラリの扱いの違いです. + + + + 共有ライブラリのバージョン + + ELF の共有ライブラリは, + libfoo.so.M + という名前になっていなければなりません. ここで + M は単一の + バージョン番号を表します. 一方 a.out のライブラリは + libfoo.so.M. + N + という名前で, M + はメジャーバージョン番号, N + はマイナーバージョン番号になっている必要があります. + これらを混同しないでください. + libfoo.so.N. + M + という名のELF 共有ライブラリや + libfoo.so.N + という名の a.out 共有ライブラリ + (あるいはシンボリックリンク) は + 絶対にinstallしないでください. + + + + リンカコマンドライン + + 直接 ld を使用せずに, + cc -shared を使用してください. + たった一つの違いは, ELF には, + コマンドラインにを加える必要があることです. + + + + + ELF のリンカを満足させるためには, + libfoo.so から + libfoo.so.N + へのシンボリックリンクを作る必要があります. これは, + PLIST にも加えなくては いけませんし, + a.out の場合でも害にはならないので (一部の port + ではダイナミックリンクローディングのために + 必要でもあります), PORTOBJFORMAT + の設定を気にせずに, + ただ単純にリンクを作成してください. + + + + <makevar>LIB_DEPENDS</makevar> + + すべての port の Makefile を編集して, + LIB_DEPENDS + からマイナー番号を除去する必要があり, + 正規表現のサポートも除去する必要があります. (例えば, + foo\\.1\\.\\(33|40\\) から + foo.2) マッチングは grep + -wF を使って行われます. + + + + <filename>PLIST</filename> + + PLIST は, a.out + のマイナー番号が0であれば, 短い (ELFの) + 共有ライブラリの名前を含み, さもなくば長い (a.outの) + 名前を含んでいる必要があります. + bsd.port.mk は 自動的に, + PORTOBJFORMAT が + aout であれば, .0 を + 短い共有ライブラリの名前の行に付け加え, + PORTOBJFORMATelf + であれば, マイナー番号を + 長い共有ライブラリの名前から削除します. + + ELF システムで 2 + つのバージョン番号を持つ共有ライブラリを + インストールしたり, aout システムで 1 + つのバージョン番号しか持たない共有ライブラリを + インストールするのが避けられない場合 + (例えば他のオペレーティングシステム用の + 互換ライブラリをインストールする port など), + NO_FILTER_SHLIBS 変数を定義すれば, + 前節で説明されている PLIST + 編集の機能が停止されます. + + + + <literal>ldconfig</literal> + + + Makefile 中の ldconfig + の行は以下のようになります. + + +${SETENV} OBJFORMAT=${PORTOBJFORMAT} ${LDCONFIG} -m .... + + また PLIST 中では: + + +@exec /usr/bin/env OBJFORMAT=%%PORTOBJFORMAT%% /sbin/ldconfig -m ... +@unexec /usr/bin/env OBJFORMAT=%%PORTOBJFORMAT%% /sbin/ldconfig -R + + となります. これは, + システムのデフォルトフォーマットではなく + パッケージのフォーマットに応じて, 正しい + ldconfig + が呼ばれることを保証するためのものです. + + + + + <makevar>MASTERDIR</makevar> + + もし, あなたの port が 変数(例えば + 解像度とか紙のサイズなど)を変えたりした, + ちょっと違うバージョンを作成する必要があるときには, + ユーザが分りやすいように, package + ごとに別々のサブディレクトリを作成し, ただし, できるだけ + port 間でファイルを共有するようにしてください. + 典型的な例では, うまく変数を使えば, + とても短いMakefileだけ, + 1つ以外のすべてのディレクトリに置くだけで済みます. その短い + Makefile には + MASTERDIR を使って, + 残りのファイルがあるディレクトリを指定できます. また PKGNAME + の一部に変数に使って, package + が別々の名前を持つようにしてください. + + 以下が, とても良い例になるでしょう. これは + japanese/xdvi300/Makefile + の一部です: + + +PKGNAME= ja-xdvi${RESOLUTION}-17 + : +# default +RESOLUTION?= 300 +.if ${RESOLUTION} != 118 && ${RESOLUTION} != 240 && \ + ${RESOLUTION} != 300 && ${RESOLUTION} != 400 + @${ECHO} "Error: invalid value for RESOLUTION: \"${RESOLUTION}\"" + @${ECHO} "Possible values are: 118, 240, 300 (default) and 400." + @${FALSE} +.endif + + japanese/xdvi300 は通常のパッチ, + package ファイルももっています. そこで, + make と入力すると, + デフォルトの解像度(300)を使って, 普通に port + の作成を行います. + + 他の解像度に関してですが, これが, + xdvi118/Makefile の(コメントを除いた) + すべてです. + + +RESOLUTION= 118 +MASTERDIR= ${.CURDIR}/../xdvi300 + +.include ${MASTERDIR}/Makefile + + (xdvi240/Makefile と + xdvi400/Makefile も同様です). + MASTERDIR が + bsd.port.mk に + PATCHDIRPKGDIR + などの通常のサブディレクトリが xdvi300 + にあることを教えます. RESOLUTION=118 + の行が, xdvi300/Makefile の + RESOLUTION=300 の行を無効にし, port + は解像度を118として作成されます. + + + + 共有ライブラリのバージョン + + まず, + 共有ライブラリのバージョンについての指針 を読んで, + 共有ライブラリのバージョンを + 一般的にどうすれば良いかを理解してください. 盲目的に, + ソフトウエアの作者がちゃんと理解していると + 信じててはいけません, 多くの場合違います. + 細い点まで考慮することは大変重要なことです, + なぜなら我々は互換性がないかもしれない大量の + ソフトウェアを共存させようとする, 特殊な状況にあるからです. + 不注意な port の導入が共有ライブラリに関して, + 多大な問題を引き起したことが過去にあります (今まで, + jpeg-6b がなぜ 9.0 + といバージョン番号を持っているか不思議に + 思ったことはありませんか?). もし, 疑問があれば, &a.ports; + にメールを送ってください. ほとんどの時間は, + 正しいシェアードライブラリのバージョンを決めることと, + それを実現するためのパッチを作成することに終始します. + + しかしながら, が同じソフトウェアの違ったバージョンの + ソフトウェアが既にツリーにあるばあいには, + 状況は非常に複雑です. つまり, FreeBSD では, + ユーザがリンカにどのバージョンの共有ライブラリを + 使用するかを指定できないからです + (リンカは常にもっとも高いバージョンを選びます). これは, + もし, libfoo.so.3.2 と + libfoo.so.4.0 + がシステムに存在するときには, + リンカに特別なアプリケーションだけ + libfoo.so.3.2 + をリンクするように指示する方法がないことを意味します. + これは, + コンパイル時のリンクという意味では完全に見劣りします. + この場合の唯一の解決方法は, 共有ファイルの名前の + ベース 部分を変えることです. 例えば, + libfoo.so.4.0 を + libfoo4.so.1.0 へ変えることによって, + バージョン 3.2 とバージョン 4.0 共に他の port + からリンクされることができるようになります. + + + + マニュアル + + MAN[1-9LN] 変数を使用すると, + 自動的にすべてのマニュアルを pkg/PLIST + に加えます (つまり, マニュアルを PLIST + に加えては いけませんPLIST の生成 + を参照してください). またマニュアルを + /etc/make.conf 中の + NOMANCOMPRESS の設定に応じて, + install時に自動的に圧縮したり伸長したりします. + + マニュアルをインストール時に圧縮するかどうかを + 指定するには, MANCOMPRESSED + 変数を使用します. この変数は, 3つの値をとることができます, + yes, no そして + maybe です. yes + はマニュアルが既に圧縮されて インストールされている, + no はされていない, + maybe はそのソフトウェアがすでに, + NOMANCOMPRESS に合わせており + bsd.port.mk + が特別なにもする必要がないことを意味します. + + USE_IMAKE がセットされていて, + NO_INSTALL_MANPAGES + がセットされていなければ, MANCOMPRESSED + は自動的に yes に設定され, + それ以外の場合には, no になります. + デフォルトがあなたの port + に合わない場合以外は明示的に設定する必要がありません. + + PREFIX 以外のディレクトリの下に + マニュアルを置くような port では + MANPREFIX を指定することができます. + さらに, 特定のセクションのマニュアルだけ, + 標準ではない場所にインストールする場合, 例えばいくつかの + Perl のモジュールの ports など, には個々のマニュアルのパスを + MANsectPREFIX + (sect は, 1-9, + または, LN + を表わします) によって指定できます. ができます. + + + マニュアルが, 言語特有のサブディレクトリに + 置かれる場合には, 言語名を MANLANG + に設定してください. この変数のデフォルト値は, + "" になっています (つまり, 英語のみ). + + + これは, 全部をまとめた例です. + + +MAN1= foo.1 +MAN3= bar.3 +MAN4= baz.4 +MANLANG= "" ja +MAN3PREFIX= ${PREFIX}/share/foobar +MANCOMPRESSED= yes + + 以下の6個のファイルがこの port でインストールされます. + + + +${PREFIX}/man/man1/foo.1.gz +${PREFIX}/man/ja/man1/foo.1.gz +${PREFIX}/share/foobar/man/man3/bar.3.gz +${PREFIX}/share/foobar/man/ja/man3/bar.3.gz +${PREFIX}/man/man4/baz.4.gz +${PREFIX}/man/ja/man4/baz.4.gz + + + + Motifを必要とするport + + 最近はコンパイルに Motif + を必要とするアプリケーションが増えて きました. + (Motif自体は有料のものがいくつかの会社から手に入りま すし, + 多くのアプリケーションがコンパイル可能な無料の互換ライブラリ + が x11-toolkits/lesstifにあります) + Motifはかなり広く使われていますし, 製品のライ + センスではライブラリを静的にリンクした + 実行形式は再配布が認めら れている場合が多いので, + Motifを必要とするソフトウェアを簡単に 動的(port + からコンパイルする人々のために)/静的(package を配布 + する人々のために)にリンクできるような + しくみが用意されています. + + + <makevar>REQUIRES_MOTIF</makevar> + + Motif + がないとコンパイルできないportのMakefileではこの変 + 数を指定してください. これによって, + Motifを持っていない人が + このportをコンパイルしようとするのを未然に防ぎます. + + + + <makevar>MOTIFLIB</makevar> + + この変数は bsd.port.mk によって + Motif ライブラリの指 定に置き換えられます. + ソース内のMakefileやImakefileで Motif + ライブラリを指定しているところをこの変数に置き換えるよ + うにパッチをあててください. + + 代表的な例としては以下の二つがあげられます: + + + + MakefileかImakefileの中でMotifライブラリが + として使われている場合には, + かわりに MOTIFLIB + と書いてください. + + + + Imakefileの中で XmClientLibs + が使われている 場合には, それを + ${MOTIFLIB} ${XTOOLLIB} + ${XLIB} と書きかえてください. + + + + + MOTIFLIB は通常 + -L/usr/X11R6/lib -lXm か + /usr/X11R6/lib/libXm.a に置き換えら + れます. したがって前に や + をつけ る必要はありません. + + + + + + X11 のフォント + + もし, あなたの port が X window system + のフォントをインストールするのであれば, それらを + X11BASE/lib/X11/fonts/local + に置くようにしてください. このディレクトリは XFree86 release + 3.3.3 で新設されたものです. もし, + それが存在しなければ作成し, ユーザに XFree86 を 3.3.3 + かそれより新しいものに更新か, すくなくとも, + このディレクトリを /etc/XF86Config の + font path + に加えるように促すメッセージを出力するようにしてください. + + + + + Info ファイル + + 新しい版の texinfo(2.2.2-RELEASE + およびそれ以降に入っています) には, + install-info + というコマンドが含まれており, dir + ファイルに項目を追加したり, 削除したりすることがで きます. + もし, あなたの port が info ドキュメントをインストー + ルするのであれば, 以下の指示に従って, その port および + package が正しく, ユーザの + ${PREFIX}/info/dir ファイル + を更新するようにしてください. (この節は, + とても長くてすいません, しかし info + ファイルを作りあげるためには, これらは不可欠 です. + 正しく行なえば, 美しい + リストができますので, 辛抱してください! :) + + まず, これを知っておかなければなりません: + + &prompt.user; install-info --help +install-info [OPTION]... [INFO-FILE [DIR-FILE]] + Install INFO-FILE in the Info directory file DIR-FILE. + (訳注: Info ディレクトリの INO-FILE を DIR-FILE にインストールする) +Options: +--delete Delete existing entries in INFO-FILE; + don't insert any new entries. + (訳注: INFO-FILE の中の項目を削除, + 新しい項目は一切追加しない.) + : +--entry=TEXT Insert TEXT as an Info directory entry. + (訳注: TEXT を Info ディレクトリの項目として追加する.) + : +--section=SEC Put this file's entries in section SEC of the directory. + (訳注: このファイルの項目を Info ディレクトリの SEC + という節に置く.) + : + + + このプログラムは, 実際には info + ファイルをインストール しません, 単に + dir + ファイルにエントリーを挿入したり削除し + たりするだけです. + + + これから, install-info + を使用するように, ports を変換す る7段階の工程を示します. + 例として editors/emacsを + 使用します. + + + + まず, texinfo のソースを見て, + @dircategory と + @direntry 文がないファイルについて, + それらを追加するパッチを作成します. 以下は, + ここでの例での patchの一部です: + + +--- ./man/vip.texi.org Fri Jun 16 15:31:11 1995 ++++ ./man/vip.texi Tue May 20 01:28:33 1997 +@@ -2,6 +2,10 @@ + + @setfilename ../info/vip + @settitle VIP ++@dircategory The Emacs editor and associated tools ++@direntry ++* VIP: (vip). A VI-emulation for Emacs. ++@end direntry + + @iftex + @finalout + : + + フォーマットについては見ればわかると思います. + dir + というファイルに必要な項目を書いておいてくれる作者 + も多いので, まず自分で書く前にさがしてみてください. + また, 関係 する ports も調べて, 節(section)の名前や, + インデントなどが + きちんと合っているかどうかを確認してください + (項目のテキスト は, すべて4つめのタブ・ストップ(tab + stop)から始めることを推 奨します). + + + 1つのファイルに対して1つの info + の項目しか書けないことに注 意してください, これは, + install-info --delete が, そのバグにより, + @direntry セクションに複数の項目を書 + いても, + 初めの1つの項目しか削除してくれないからです. + + + texinfo のソースにパッチをあてるかわりに, + dir の項目 を + install-info の + 引数((, + ) として与えることもできます. + これはあまり良い方法とは 思えません, なぜなら, + 同じ情報を3ヶ所(Makefile, + PLIST の + @exec/@unexec: + 以下参照) に重複して, 書く必要があるからです. + しかしながら, もし日本語(あるいは, + 他のマルチバイト文字)の info ファイルがあるのならば, + install-info + の特別な引数を使用する必要があるでしょう, なぜならば, + makeinfo がこのような texinfo + ソースファイル を扱えないからです. + (このようなものをどう扱うかの例としては, + japanese/skk の + Makefile と + PLIST を見て ください.) + + + + portのディレクトリに戻って, make clean; + make をして, info ファイルが texinfo + ソースファイルから再び生成さ れることを確認してください. + texinfo ソースファイルのほうが info + ファイルよりも新しいので, make + とタイプすれば, info ファイルは再構築されるはずですが, + 多くの Makefile には info + ファイルの正しい依存関係が書かれていません. + emacs の場合, info + ファイルの再構築ため, man + サブディレクトリ に降りていくようにするために, メインの + Makefile.in にパッ + チをあてる必要がありました. + + +--- ./Makefile.in.org Mon Aug 19 21:12:19 1996 ++++ ./Makefile.in Tue Apr 15 00:15:28 1997 +@@ -184,7 +184,7 @@ + # Subdirectories to make recursively. `lisp' is not included + # because the compiled lisp files are part of the distribution + # and you cannot remake them without installing Emacs first. +-SUBDIR = lib-src src ++SUBDIR = lib-src src man + + # The makefiles of the directories in $SUBDIR. + SUBDIR_MAKEFILES = lib-src/Makefile man/Makefile src/Makefile oldXMenu/Makefile lwlib/Makefile +--- ./man/Makefile.in.org Thu Jun 27 15:27:19 1996 ++++ ./man/Makefile.in Tue Apr 15 00:29:52 1997 +@@ -66,6 +66,7 @@ + ${srcdir}/gnu1.texi \ + ${srcdir}/glossary.texi + ++all: info + info: $(INFO_TARGETS) + + dvi: $(DVI_TARGETS) + + man + サブディレクトリでのデフォルトターゲットは, + info で呼ばれるのに対して, + メインの Makefile では, + all で呼びたいので, + 2つめのpatchが必要でした. また, + info info + ファイルのインストールも削除しました, なぜなら, + 同じものが同じ名前で既に + /usr/share/info にあるからです. + (このパッチはここにはありません.) + + + + もし, Makefile に + dir ファイルをインストールす + る個所があれば, 削除します. あなたの port がインストー + ルしてはいけません. また, dir + ファイルを壊してしまうよう + なコマンドの類も削除します. + + +--- ./Makefile.in.org Mon Aug 19 21:12:19 1996 ++++ ./Makefile.in Mon Apr 14 23:38:07 1997 +@@ -368,14 +368,8 @@ + if [ `(cd ${srcdir}/info && /bin/pwd)` != `(cd ${infodir} && /bin/pwd)` ]; \ + then \ + (cd ${infodir}; \ +- if [ -f dir ]; then \ +- if [ ! -f dir.old ]; then mv -f dir dir.old; \ +- else mv -f dir dir.bak; fi; \ +- fi; \ + cd ${srcdir}/info ; \ +- (cd $${thisdir}; ${INSTALL_DATA} ${srcdir}/info/dir ${infodir}/dir); \ +- (cd $${thisdir}; chmod a+r ${infodir}/dir); \ + for f in ccmode* cl* dired-x* ediff* emacs* forms* gnus* info* message* mh-e* sc* vip*; do \ + (cd $${thisdir}; \ + ${INSTALL_DATA} ${srcdir}/info/$$f ${infodir}/$$f; \ + chmod a+r ${infodir}/$$f); \ + + + + (これは, 既存のportを修正するときのみ必要です.) + pkg/PLIST を見て, + info/dir にパッチをあて + ようとするものすべてを削除します. これらは, + pkg/INSTALL + やその他のファイルにもあるかもしれない ので, + いろいろさがしてみてください. + + +Index: pkg/PLIST +=================================================================== +RCS file: /usr/cvs/ports/editors/emacs/pkg/PLIST,v +retrieving revision 1.15 +diff -u -r1.15 PLIST +--- PLIST 1997/03/04 08:04:00 1.15 ++++ PLIST 1997/04/15 06:32:12 +@@ -15,9 +15,6 @@ + man/man1/emacs.1.gz + man/man1/etags.1.gz + man/man1/ctags.1.gz +-@unexec cp %D/info/dir %D/info/dir.bak +-info/dir +-@unexec cp %D/info/dir.bak %D/info/dir + info/cl + info/cl-1 + info/cl-2 + + + + post-install ターゲットを + Makefile に加えて, + dir + ファイルが存在しなければ作成するようにします. また, + インストールされた info ファイルについては, + install-info + を実行するようします. + + +Index: Makefile +=================================================================== +RCS file: /usr/cvs/ports/editors/emacs/Makefile,v +retrieving revision 1.26 +diff -u -r1.26 Makefile +--- Makefile 1996/11/19 13:14:40 1.26 ++++ Makefile 1997/05/20 10:25:09 1.28 +@@ -20,5 +20,11 @@ + post-install: + .for file in emacs-19.34 emacsclient etags ctags b2m + strip ${PREFIX}/bin/${file} + .endfor ++ if [ ! -f ${PREFIX}/info/dir ]; then \ ++ ${SED} -ne '1,/Menu:/p' /usr/share/info/dir > ${PREFIX}/info/dir; \ ++ fi ++.for info in emacs vip viper forms gnus mh-e cl sc dired-x ediff ccmode ++ install-info ${PREFIX}/info/${info} ${PREFIX}/info/dir ++.endfor + + .include <bsd.port.mk> + + 新しい info ファイルを作成するのに, + /usr/share/info/dir と上のコマンド, + 以外は使用しな いでください. 実際のところ, もし port + する人がこれに関して PLIST + に自らまったく手を加える必要がないのであれば, 上 + のパッチのはじめの3行を bsd.port.mk + に加えたでしょう. + + + + PLIST を編集して, + 同じ働きをする @exec 文, そ + れにpkg_delete のために + @unexec 文を加えてくださ い. + @unexec を使用して + info/dir を削除する必 + 要はありません. + + +Index: pkg/PLIST +=================================================================== +RCS file: /usr/cvs/ports/editors/emacs/pkg/PLIST,v +retrieving revision 1.15 +diff -u -r1.15 PLIST +--- PLIST 1997/03/04 08:04:00 1.15 ++++ PLIST 1997/05/20 10:25:12 1.17 +@@ -16,7 +14,15 @@ + man/man1/etags.1.gz + man/man1/ctags.1.gz ++@unexec install-info --delete %D/info/emacs %D/info/dir + : ++@unexec install-info --delete %D/info/ccmode %D/info/dir + info/cl + info/cl-1 +@@ -87,6 +94,18 @@ + info/viper-3 + info/viper-4 ++@exec [ -f %D/info/dir ] || sed -ne '1,/Menu:/p' /usr/share/info/dir > %D/info/dir ++@exec install-info %D/info/emacs %D/info/dir + : ++@exec install-info %D/info/ccmode %D/info/dir + libexec/emacs/19.34/i386--freebsd/cvtmail + libexec/emacs/19.34/i386--freebsd/digest-doc + + + @unexec install-info --delete + コマンドは, info ファイル自身より先に置き, + コマンドがファイルを読めるようにし + ておかなければならないことに注意してください. また, + @exec install-info コマンドは info + ファイルおよび dir ファイルを作る + @exec コマンドより後に + おかなければなりません. + + + + + テスト + をして出来栄えに感服しましょう :) 各段階の前後に, + dir + ファイルをチェックしましょう. + + + + + + <filename>pkg/</filename> サブディレクトリ + + まだ触れていない, いくつかのこつが + pkg/ サブディレクトリにはあり, + 時として便利でしょう. + + + <filename>MESSAGE</filename> + + もし, インストールする人にメッセージを表示する + 必要がある場合には, そのメッセージを + pkg/MESSAGE に置けます. この機能は, + pkg_add + の後の追加のインストール手続きを表示するときなどに, + 重宝します. + + + + pkg/MESSAGE ファイルは + pkg/PLIST に加える必要はありません. + また, もしユーザが package ではなく port を使用して + いる場合には自動的には表示されませんので, 明示的に + post-install + で表示するようにするべきでしょう. + + + + + <filename>INSTALL</filename> + + バイナリパッケージが pkg_add + でインストールされるときに, 実行される必要がある + コマンドがあれば, pkg/INSTALL + スクリプトを使って実行することができます. + このスクリプトは自動的に package に加えられ, + pkg_add によって2度実行されます. + はじめは INSTALL ${PKGNAME} + PRE-INSTALL と実行され, 2度目には, + INSTALL ${PKGNAME} POST-INSTALL + と実行されます. どちらのモードで実行されているかは, + $2 + を調べることによってわかります. 環境変数 + PKG_PREFIX には package + がインストールされるディレクトリが設定されます. 詳細は + &man.pkg.add.1; を見てください. + + + + port を make install で + インストールするときには, + このスクリプトは自動的に実行されません. もし, + 実行される必要があるならば, port の Makefile + から明示的に呼ぶ必要があります. + + + + + + <filename>REQ</filename> + + port が(インストールされるシステムの状態によって) + インストールされるべきか, されないべきか区別する必要が + あるときには, “要件(requirements)” スクリプト + pkg/REQ を作ることができます. これは, + インストール及びデインストール (package + の削除)の時に自動的に実行され, + それらが処理されるべきかを決定します. + + + + make の変数にあわせた <filename>PLIST</filename> + の変更 + + いくつかの port, 特に p5- portsなど, は configure + のオプション (あるいは, p5- ports の場合は perl + のバージョン)によって, PLIST + を変える必要があります. これを容易に実現するために, + PLIST 中の + %%OSREL%%, + %%PERL_VER%%, + %%PERL_VERSION%% は, + 適切に置き換えられるようになっています. + %%OSREL%% の値は, + オペレーティングシステムの数字で表されたリビジョンです + (例えば, 2.2.7). + %%PERL_VERSION%% は perl + のバージョン番号全体(例えば, 5.00502 + )で, %%PERL_VER%% はバージョン番号から, + パッチレベルを引いてものです(例えば, + 5.005). + + 他の置き換えが必要であれば, + PLIST_SUB 変数に + VAR=VALUE + + という形式のペアのリストを設定することによって, + PLIST 中の + %%VAR%% は + VALUE に置き換えられます. + 例えば, バージョンに固有の沢山のファイルを + インストールする場合には, Makefile + に + + + +OCTAVE_VERSION= 2.0.13 +PLIST_SUB= OCTAVE_VERSION=${OCTAVE_VERSION} + + と書いて, PLIST + 中のバージョン番号が表われるすべてのところに, + %%OCTAVE_VERSION%% と書きます. + このようにしておけば, port をアップグレードするときに, + 何十行(ときとして, 何百行)も PLIST + を書き替えないですみます. + + この書き換えは ( + マニュアル の追加も) + do-install と + post-install ターゲット + のあいだに, PLIST を読み + TMPPLIST (デフォルトは, + WRKDIR/.PLIST.mktmp ) + に書き込むことによって行なわれます. もし, あなたの port が + PLIST を実行時に生成するのであれば, + do-install のあいだか, + その前に行うようにしてください. また, + 書きかえられたあとのファイルを編集する必要がある場合には, + post-install で, + TMPPLIST を書きかえてください. + + + + <filename>pkg</filename> + サブディレクトリにあるファイル名の変更 + + pkg + サブディレクトリにあるファイルは全て, 変数を + 使用して定義されていますので, 必要であれば + Makefile 中で 変更可能です. + いくつかの ports で 一つの pkg + サブディレクトリを共有する場合や, 上記のファイルに書き込む + 必要があるときなど, 特に便利です. + (pkg + サブディレクトリに直接書き込むのが良くない理由に ついては + WRKDIR + 以外への書きこみ を参照してください.) + + 以下が変数名とそのデフォルト値の表です. + + + + + + Variable + Default value + + + + + + COMMENT + ${PKGDIR}/DESCR + + + + DESCR + ${PKGDIR}/DESCR + + + + PLIST + ${PKGDIR}/PLIST + + + + PKGINSTALL + ${PKGDIR}/PKGINSTALL + + + + PKGDEINSTALL + ${PKGDIR}/PKGDEINSTALL + + + + PKGREQ + ${PKGDIR}/REQ + + + + PKGMESSAGE + ${PKGDIR}/MESSAGE + + + + + + PKG_ARGSを上書きせずに, + これらの変数を変更 するようにしてください. + PKG_ARGSを変更すると これらのファイルは + port から正しく /var/db/pkg + にインストールされなくなります. + + + + + ライセンス上の問題 + + ソフトウェアによっては制限の厳しい + ライセンスがついてきたり, 法律的に問題があるかもしれません. + (PKPの公開鍵暗号化, ITAR (暗 号化ソフトウェアの輸出) + などが例としてあげられます). それらを + どう扱えばいいかはライセンスの文面によって + さまざまな場合があり ます. + + + ソフトウェア移植者として, + あなたにはライセンスをよく読み, FreeBSD プロジェクトが FTP + または CD-ROM で配布してはいけないソフ + トウェアを配布してしまうことのないよう, + 注意する義務があります. なにか疑問がある場合には, + &a.ports;に聞いてみてください. + + + よく見られるケースに対処するために, + 二つの変数が用意されてい ます: + + + + ソフトウェアに “有償再配布を禁ずる” + という趣旨のライセン スがついてきた場合には + NO_CDROM + という変数にその理由を記述して ください. + 私たちはこれがついているportはCD-ROMリリースに入 + れないようにしますが, + オリジナルのソースファイルとpackage + はFTPでは取れるようにしておきます. + + + + もしも, 生成される package + が個々のサイトで独自に構築さ れる必要があったり, + ライセンスによって生成されるバイナリが + 配布できない場合には, NO_PACKAGE + 変数にその理由を記述してくだ さい. そのような package が + FTP サイトに置かれたり, リリース 時の CD-ROM + へ入らないようにします. ただし, いずれの場合も distfile + は(FTP や CD-ROM に)含まれるようになります. + + + + Portが, 使用者によっては法律上の問題が生じる時 + (暗号化ソフ トウェアなど), + または“商用利用を禁ずる”とライセンスに書い + てある場合には + RESTRICTEDという変数にその理由を入れ + てください. この場合には, + ソースファイルやpackageは私たちの + FTPサイトにも置かれません. + + + + + GNU一般公有使用許諾書 (GPL) はバージョン1, 2とも + port作成上は何ら問題にはなりません. + + + + もしあなたが,ソースツリー管理者 (committer) + であれば, ソースツリーにこのようなportを入れる際に, + ports/LEGAL + ファイルを書き換えるのを忘れないようにし + てください. + + + + + アップグレード + + Port + のバージョンが原作者からのものに比べて古いことに気がつ + いたら, まずはあなたの持っているportが私たちの最新のもの + (ミラー サイトの ports/ports-current + というディレクトリにあります) + であることを確認してください. + + 次に, portの Makefile + にMAINTAINER (保守担当者) の + アドレスが書いてある場合には, + その人にメールを出してみましょう. + 保守担当者の人がすでにアップグレードの準備を + しているかもしれま せんし, + (新しいバージョンの安定度に問題があるなど) あえてアッ + プグレードをしない理由があるのかもしれません. + + 保守担当者にアップグレードをしてくれと頼まれた場合, + あるいは + そもそもportのMakefileに保守担当者が書いてない場合などは, あ + なたがアップグレードをしてくださると助かります. + その場合にはアッ プグレードをしたのち, + 変更前と変更後のディレクトリの再帰的diff (unified diff と + context diff のどちらでもいいのですが, port のコミッター達は + unified diff のほうを好むようです) をとって送ってください. + (例えば, 変更前のディレクトリが + superedit.bak という名前でとってあり, + 変更後のもの が superedit + に入っているなら, diff -ruN superedit.bak + superedit の結果を送ってください. ) diff + の出力を見て, すべての変更が正しくなされているか確認して + ください. 変更箇所については, &man.send-pr.1; (カテゴリーは, + ports)に diff の出力結果を添えて, + 私たちに送ってもらうのが一 番よいです. commit する際に CVS + に明確に記述しなければならない ので, + 付け加えたり削除したりしたファイルがあったら, それについ + て書いておいてください. もし diff の大きさが 20 KB 程度を + 超えるようであれば, 圧縮したものを uuencode して下さい. + そうでなければそのまま PR に入れるだけでいいです. + + 繰り返しになりますが, ports の変更を送るときには, + &man.shar.1; ではなく &man.diff.1; + を使用してください. + + + + やっていいことといけないこと + + この節では, + ソフトウェアをportする上でよくある落し穴などにつ + いて説明します. このリストを使って, あなた自身が作成した + port のチェックはもとより, PR データベースにある, + 他の人が作成した port のチェックもできます. + あなたがチェックした port について のコメントを バグ報告と一般的な論評 + にしたがって, 送ってください. PR データベースにある port を + チェックすることによって, 私達がそれらを commit + するのを早くし, + あなたが何をしているか理解していることも示します. + + + バイナリのstrip + + バイナリは strip してください. + オリジナルのソースがバイナリを strip + してくれる場合は良いですが, そうでない場合には + post-install ターゲットを指定して strip + するようにするとよいでしょう. 例えば, + こんな風になります: + + +post-install: + strip ${PREFIX}/bin/xdl + + インストールされた実行形式がすでに strip + されているかどうかは file + コマンドで確認できます. これが`not + stripped'と言わなければ, + stripされているということです. + + + + <makevar>INSTALL_*</makevar> マクロ + + あなた自身の *-install + ターゲットでファイルの正しいモードと + オーナを保証するために, + 必ずbsd.port.mkで提供されて + いるマクロを使用してください. + マクロは以下のようなものがあります. + + + + ${INSTALL_PROGRAM} + は実行可能なバイナリを + インストールするコマンドです. + + + + ${INSTALL_SCRIPT} + は実行可能なスクリプトを + インストールするコマンドです. + + + + ${INSTALL_DATA} + は共有可能なデータを + インストールするコマンドです. + + + + ${INSTALL_MAN} + はマニュアルとその他のドキュメ + ントをインストールするコマンドです. + (圧縮はしません) + + + + これらは基本的に install + コマンドに適当なフラグを与え たものです. + どのようにこれらを使用するかは以下の例を見てください. + + + + + <makevar>WRKDIR</makevar> + + WKRDIR + の外のファイルにはなにも書き込まないように してください. WRKDIR は + ports のビルド中に書き込こめる + ことが保証されている唯一の場所です( CDROM から ports + をコンパイルを参照). PKGDIR + にあるファイルを修正する必要がある ときには, 変数の再定義 + によって行ない, 上書きはしないでください. + + + + <makevar>WRKDIRPREFIX</makevar> + + WRKDIRPREFIX + を尊重していることを確認してください. 特に, 別の port の + WRKDIR を参照している + ときには気を付けてください. 正しい場所は, + WRKDIRPREFIX + PORTSDIR + /subdir/ + name/work, です, + + PORTSDIR/subdir/ + name/work とか + + .CURDIR/../../subdir + /name/work + とかではありません. + + また, 自分で WRKDIR + 定義するときには, 頭に + ${WRKDIRPREFIX}${.CURDIR} + が付いている 事を確認してください. + + + + OS や OS のバージョンの区別 + + Port の過程で, 修正や, どのバージョンの UNIX + で動くかによる条件つきコンパイルなどが + 必要なコードに出会うかもしれません. + そのような条件つきコンパイルなどのための + 変更をおこなうときには, FreeBSD 1.x システムへの移植や, + CSRGの4.4BSD, BSD/386, 386BSD, NetBSD, OpenBSD + などの他のBSDシステムへの移植が可能なように, + できるだけ普遍的な変更をおこなうことを + 心がけてください. + + 4.3BSD/Reno (1990) およびそれより新しい BSD + 版を古いバージョンと区別するには BSD + マクロを利用するのがよいでしょう. これは + <sys/param.h> + で定義されています. + このファイルがすでにインクルードされていればよいのですが, + もしそうでない場合には以下のコードを, その + .c + ファイルの適当な場所に加えてください. + + +#if (defined(__unix__) || defined(unix)) && !defined(USG) +#include <sys/param.h> +#endif + + これらの 2 + つのシンボルが定義されているすべてのシステムには + sys/param.h があるはずです. もし, + そうでないシステムを発見したら我々にも教えてください. + &a.ports; までメールを送ってください. + + あるいは, GNU の Autoconf + のスタイルを使用することもできます, + + +#ifdef HAVE_SYS_PARAM_H +#include <sys/param.h> +#endif + + この方法を使用するときには, + Makefile 中の + CFLAGSに + -DHAVE_SYS_PARAM_H + を加えることを忘れないようにしてください. + + いったん sys/param.h + がインクルードされると, + + +#if (defined(BSD) && (BSD >= 199103)) + + このようにしてそのコードが 4.3 Net2 コードベース, + またはそれより新しいもの (例: FreeBSD 1.x, 4.3/Reno, + NetBSD 0.9, 386BSD, BSD/386 1.1とそれ以前) + の上でコンパイルされているかを検出できます. + + +#if (defined(BSD) && (BSD >= 199306)) + + これは, 4.4コードベース, またはそれより新しいもの (例: + FreeBSD 2.x, 4.4, NetBSD 1.0, BSD/386 2.0とそれ以後) + の上でコンパイルされているかどうかを + 検出するために使用します. + + 4.4BSD-Lite2 コードベースでは, BSD + マクロの値は 199506 になっています. + これは参考程度の意味合いしかありません. 4.4-Lite ベースの + FreeBSD と 4.4-Lite2 での変更がマージされたバージョンとを + 区別するのに使用するべきものではありません. + この目的のためには, __FreeBSD__ + マクロをかわりに使用してください. + + 以下は控え目に使ってください. + + + + __FreeBSD__ + はFreeBSDのすべての版で定義されています. 変更が + FreeBSD + だけに適用されるとき以外は使用しないでください. + Portでよくある, strerror() + ではなく sys_errlist[] + を使うなどは, FreeBSDでの変更ではなく, BSD + の流儀です. + + + + FreeBSD 2.xでは __FreeBSD__ が + 2 と定義されています. + それ以前の版では 1 になっています. + その後の版では, + そのメジャー番号に合うように上がっていきます. + + + + もし, FreeBSD 1.x システムと FreeBSD 2.x あるいは + FreeBSD 3.x システムを区別する必要があれば, 上で述べた + BSDマクロを使用するのが, + 大抵の場合において正しい答です. もし, + FreeBSD特有の変更であれば (ld + を使うときのシェアードライブラリ用のなオプションなど), + + __FreeBSD__を使い #if + __FreeBSD__ > 1 のようにFreeBSD 2.x + および, それ以降のシステムを検出するのはかまいません. + もし, + 2.0-RELEASE以降のFreeBSDシステムを細かく検出したけれ + ば, 以下を使用することができます. + + +#if __FreeBSD__ >= 2 +#include <osreldate.h> +# if __FreeBSD_version >= 199504 + /* 2.0.5+ release specific code here */ +# endif +#endif + + + + + + Release + _FreeBSD_version + + + + + + 2.0-RELEASE + 119411 + + + + 2.1-CURRENT's + 199501, 199503 + + + + 2.0.5-RELEASE + 199504 + + + + 2.1 以前の 2.2-CURRENT + 199508 + + + + 2.1.0-RELEASE + 199511 + + + + 2.1.5 以前の 2.2-CURRENT + 199512 + + + + 2.1.5-RELEASE + 199607 + + + + 2.1.6 以前の 2.2-CURRENT + 199608 + + + + 2.1.6-RELEASE + 199612 + + + + 2.1.7-RELEASE + 199612 + + + + 2.2-RELEASE + 220000 + + + + 2.2.1-RELEASE + 220000 (2.2-RELEASE と同じです) + + + + 2.2.1-RELEASE 以後の 2.2-STABLE + 220000 (これも同じです) + + + + texinfo-3.9 以後の 2.2-STABLE + 221001 + + + + top 導入以後の 2.2-STABLE + 221002 + + + + 2.2.2-RELEASE + 222000 + + + + 2.2.2-RELEASE 以後の 2.2-STABLE + 222001 + + + + 2.2.5-RELEASE + 225000 + + + + 2.2.5-RELEASE 以後の 2.2-STABLE + 225001 + + + + ldconfig -R 以後の 2.2-STABLE + 225002 + + + + 2.2.6-RELEASE + 226000 + + + + 2.2.7-RELEASE + 227000 + + + + 2.2.7-RELEASE 以後の 2.2-STABLE + 227001 + + + + semctl(2) 変更後の 2.2-STABLE + 227002 + + + + 2.2.8-RELEASE + 228000 + + + + 2.2.8-RELEASE 以後の 2.2-STABLE + 228001 + + + + mount(2) 変更以前の 3.0-CURRENT + 300000 + + + + mount(2) 変更以後の 3.0-CURRENT + 300001 + + + + semctl(2) 変更以後の 3.0-CURRENT + 300002 + + + + ioctl 引数変更後の 3.0-CURRENT + 300003 + + + + ELF 移行後の 3.0-CURRENT + 300004 + + + + 3.0-RELEASE + 300005 + + + + 3.0-RELEASE 以後の 3.0-CURRENT + 300006 + + + + 3/4 の分岐後の 3.0-STABLE + 300007 + + + + 3.1-RELEASE + 310000 + + + + 3.1-RELEASE 以後の 3.1-STABLE + 310001 + + + + 3/4 の分岐後の 4.0-CURRENT + 400000 + + + + + + + + + (2.2-STABLE は, 2.2.5-RELESE 以後, + “2.2.5-STABLE” と呼ばれることがあります.) + 見ての通り, + これは年・月というフォーマットになっていましたが, + バージョン 2.2 から, + より直接的にメジャー/マイナー番号を使う + ように変更になりました. + 並行していくつかのブランチ(枝分かれし + たバージョン)を開発する場合には, + リリースされた日付でそれらの + リリースを分類することが不可能だからです. (あなたが今 + port を作成するときに, 古い -CURRENT 達について心配 + する必要はありません. + これは参考のために挙げられているにすぎま せん.) + + + これまで, 何百ものportが作られてきましたが, + __FreeBSD__ が正しく使われたのは, + 1つか2つの場合だけでしょう. + 以前のportが誤った場所でそのマクロを使っているからと + いって, それをまねする理由はありません. + + + + <filename>bsd.port.mk</filename> の後に書くこと + + .include <bsd.port.mk> + の行の後には なにも書かないようにしてください. + 大抵の場合は Makefile の + 中程のどこかで, bsd.port.pre.mk を + include して, 最後に bsd.port.pre.mk + を include することによって避けることができます. + + + + pre.mk/post.mk + のペアか bsd.port.mk + だけのどちらかだけを include してください. + 2つを混ぜないでください. + + + 前者は, いくつかの変数の定義だけ をして, + Makefile でのテストに使用し, + 後者は残りを定義します. + + + 以下は bsd.port.pre.mk + で定義される重要な変数です. (これは, すべてではありません. + 完全なリストは bsd.port.mk + を参照してください.) + + + + + + + 変数名 + 解説 + + + + + + ARCH + uname -m で返される + アーキテクチャ. (例, i386). + + + + + OPSYS + uname -s で返される + オペレーティングシステム (例, + FreeBSD). + + + + OSREL + オペレーティングシステムの + リリースバージョン + (例., 2.1.5, + 2.2.7). + + + + OSVERSION + 数字形式のオペレーティングシステム + のバージョン, + 上記の + __FreeBSD_version + と同じです. + + + + PORTOBJFORMAT + システムのオブジェクト + フォーマット (aout あるいは + elf). + + + + LOCALBASE + “local” ツリーのベース. + (例, /usr/local/). + + + + + X11BASE + “X11” ツリーのベース. + (例, /usr/X11R6/). + + + + + PREFIX + portsのインストール先 + ( + PREFIXについてを参照). + + + + + + + + USE_IMAKE, + USE_X_PREFIX あるいは + MASTERDIR + などの変数を定義する必要がある場合には, + bsd.port.pre.mk + を include する前に定義してください. + 他のものは, bsd.port.pre.mk + の前でも後でもかまいません. + + + 以下は bsd.port.pre.mk + の後に書けるものの例です: + + +# no need to compile lang/perl5 if perl5 is already in system +.if ${OSVERSION} > 300003 +BROKEN= perl is in system +.endif + +# only one shlib version number for ELF +.if ${PORTOBJFORMAT} == "elf" +TCL_LIB_FILE= ${TCL_LIB}.${SHLIB_MAJOR} +.else +TCL_LIB_FILE= ${TCL_LIB}.${SHLIB_MAJOR}.${SHLIB_MINOR} +.endif + +# software already makes link for ELF, but not for a.out +post-install: +.if ${PORTOBJFORMAT} == "aout" + ${LN} -sf liblinpack.so.1.0 ${PREFIX}/lib/liblinpack.so +.endif + + + + 付加的ドキュメント + + 普通のマニュアルや info + ファイルのほかにユーザにとって有用だ + と思えるようなドキュメントがある場合には, + PREFIX/share/doc + の下にインストールしてく ださい. これは前記と同様, + post-installターゲットの + 中からするのがいいでしょう. + + まず, あなたのportのために新しいディレクトリを作りま + す. どのportのドキュメントか簡単にわかるような名前にする必 + 要がありますので, 普通は PKGNAME + からバージョ ン番号を除いた部分を使うといいでしょう. + もちろん, ユーザが異 + なるバージョンのものを同時に使うことが予想される port + の場合 には, PKGNAME + をそのまま使ってかまいません. + + ユーザが /etc/make.conf + でこの部分を禁止するために NOPORTDOCS + という変数をセットしている場合には, + これらのドキュメントが + インストールされないようにしてください. こんな具合です. + + + +post-install: +.if !defined(NOPORTDOCS) + ${MKDIR}${PREFIX}/share/doc/xv + ${INSTALL_MAN} ${WRKSRC}/docs/xvdocs.ps ${PREFIX}/share/doc/xv +.endif + + これらのファイルを pkg/PLIST + に入れるのを忘れないよ うにしてください. + (packageが/etc/make.conf内の + 変数を読む方法は今のところ存在しませんので, + NOPORTDOCS + については気にしないでください.) + + インストール時に pkg/MESSAGE + ファイルを利用して, メッセージを表示することができます. + 詳細は pkg/MESSAGE を使う + の節を参照してください. + + + + MESSAGE ファイルは + pkg/PLIST に加える必要はありま + せん. + + + + + <makevar>DIST_SUBDIR</makevar> + + /usr/ports/distfiles + ディレクトリ内をあまり散らかさ ないようにしてください. + たくさんのファイルを取ってくるport や, + 数は少なくてもほかのportのファイルと混同されるおそれが + あるファイル (Makefile など) + がある場合には, DIST_SUBDIR に port + の名前 (PKGNAME + からバージョン番号を取った部分を 使うといいでしょう) + を入れてください. すると, + DISTDIRがデフォルトの + /usr/ports/distfiles から + /usr/ports/distfiles/DIST_SUBDIR + に変更され, + 取ってきたファイルはすべてそのサブディレクトリの中に置か + れるようになります. + + また, + ファイルを取ってくるときにバックアップサイトとして使わ + れる ftp.freebsd.org + のディレクトリ名にもこの変数の 値が使われます. + (DISTDIRを明示的に指定し た場合には, + ローカルのファイルを置くところは変わりますが, こ + のサイトのディレクトリ名は変わりませんので, 必ず + DIST_SUBDIRを使うようにしてください.) + + + この変数はMakefile中で明示的に指定された + MASTER_SITES + には影響しないことに注意して ください. + + + + + RCS文字列 + + RCS + が特別な意味を与えている文字列をパッチ内に入れないように + してください. + ファイルを私たちのソースツリーに入れる時にこれら + の文字列はCVSによって書き換えられてしまい, + あとでまたパッチ + を使おうとした時にうまくいかないことがあります. + RCS文字列は ドル記号 ($) + で囲まれており, $Id や + $RCS などで始まり ます. + + + + パッチ作成上の注意 + + diffの再帰 () + フラグを使って再帰的なパッ チを作るのは大変結構なのですが, + でき上がったパッチは必ず目で + チェックして余計なゴミが入っていないことを確認してくださ + い. よくあるのはバックアップファイル同士の変更点, あるいは + Imake や GNU + configure を使うソフトウェアの + Makefile + の変更点が入っている場合などです. また, + configure.in を編集して, + autoconf を使って + configure を作り直す ときには, + configure の diff は含めずに (それらは, + 数千行になることもしばしばです), + USE_AUTOCONF=yes を定義して, + configure.in の diff + をとってください. + + ファイルをまるごと消す場合にはパッチを使わずに + post-extract + ターゲットで消す方が簡単です. できあがった + 差分に満足したら, それらをソースのファイルごとに別々の + パッチファイルに分割してください. + + + + <makevar>PREFIX</makevar> + + なるべく port は PREFIX + に対する相対パス + にインストールすることができるように心がけてください. + (この変数の値は USE_X_PREFIXか + USE_IMAKEが指定してある時には + X11BASE + (デフォルト/usr/X11R6), + そうでない場合にはLOCALBASE + (デフォルト/usr/local) + にセットされます.) + + サイトによってフリーソフトウェアが + インストールされる場所が 違いますので, ソース内で + /usr/local や + /usr/X11R6 + を明示的に書かないようにしてください. X のプログラムで + imake を使うものについては, + これは問題に はなりません. それ以外の場合には, + ソース中のMakefileやスク リプトで /usr/local + (imakeを使わないXのプログラ ムは + /usr/X11R6) と書いてあるところを + PREFIX に書き換えてください. この値は + portのコンパイル, + およびインストール時に自動的に環境変数として + 下位makeに渡されます. + + USE_X_PREFIXは本当に必要な時 + (つまり, X のライブラリなどとリンクしたり, + X11BASE 以下にある + ファイルを参照したりする必要がある時) + 以外には設定しないでください. + + 変数 PREFIX の値は port の + Makefile やユーザの環境で変更することもできます. しかし, + 個々の port が Makefile + でこの変数の値を明示的に設定することはなるべくしない + でください. + + また, 他の port + からインストールされるプログラムやファイル + を指定するときには, 上で述べた変数を使用してください. + 例えば, less のフルパスを + PAGER というマクロに入れた い場合は, + コンパイラに + -DPAGER=\"/usr/local/bin/less\" + と渡すかわりに + -DPAGER=\"${PREFIX}/bin/less\" + (Xを使うportの時は + -DPAGER=\"${LOCALBASE}/bin/less\" ) + を渡し てください. こうしておけば, `/usr/local' + がまるごとどこか他 の場所に移してあるサイトでも, + あなたのportがそのまま使える 可能性が高くなります. + + + + ディレクトリ構成 + + インストール時には PREFIX + の正しいサブディ + レクトリにファイルを置くように心がけてください. + ソフトウェア によっては新しいディレクトリを + 一つ作ってファイルを全部それに + 入れてしまうものがありますが, それはよくありません. また, + バ イナリ, ヘッダファイルとマニュアル以外のすべてを + lib + というディレクトリに入れてしまうportもあります が, + これもBSD的なファイルシステム構成からいうと正しくありま + せん. これは以下のように分散すべきです. + etc にセッ + トアップ/コンフィグレーションファイル, + libexec に 内部で使用されるプログラム + (コマンドラインから呼ばれることの ないコマンド), + sbin に管理者用のコマンド, + info に GNU Info 用のドキュメント, + そして share + にアーキテクチャに依存しないファイルが入り ます. + 詳細については man &man.hier.7; を見てくださ い. + /usrの構成方針はほとんどそのまま + /usr/localにもあてはまります. USENET + “ニュース”を 扱う ports は例外です. これらは, + ファイルのインストール先として + PREFIX/news + を使用します. + + + + 空のディレクトリの除去 + + ports は デインストール(削除) の際には, + 自分自身を消去したあとに, (ディレクトリの) + 除去をするようにしてください. これは, 大抵の場合 + @dirrm の行を ports + が作成するすべてのディレクトリについて + 加えることによって実現できます. 親ディレクトリは, + 子ディレクトリを先に消さないと + 消せないことに気をつけて下さい. + + + : +lib/X11/oneko/pixmaps/cat.xpm +lib/X11/oneko/sounds/cat.au + : +@dirrm lib/X11/oneko/pixmals +@dirrm lib/X11/oneko/sounds +@dirrm lib/X11/oneko + + といった感じです. + + しかし, ときとして, 他の port + をディレクトリを共有しているために + @dirrm がエラーを返すことがあります. + rmdir@unexec + から呼びだすことによって, 警告(warning)なしで + 空のディレクトリのみを削除することができます: + + + +@unexec rmdir %D/share/doc/gimp 2>/dev/null || true + + + これを使えば, たとえ, 他の port がファイルを + インストールしていて, + PREFIX/share/doc/gimp + が空でない場合でも エラーメッセージは表示されませんし, + pkg_delete + が異常終了することもありません. + + + + UID + + もしあなたの + portがインストールされるシステム上に特定のユー + ザを必要とする場合は, pkg/INSTALL + スクリプトから pw + コマンドを実行して自動的にそのユーザを追加するよ + うにしてください. net/cvsup-mirror + の portが参考になるでしょう. + + もしあなたの port が, バイナリのパッケージとしてとして + インストールされるときにも, + コンパイルされたときと同じユーザー/グループ ID + を使わなければならないのなら, 50 から 99 の間で空いている + UID を選んで登録してください. + japanese/Wnn の port + が参考になるでしょう. + + 既にシステムや他の portで利用されている + UIDを使わないように 十分注意してください. 現在の 50から + 99までの間の UIDは以下の とおりです. + + +majordom:*:54:54:Majordomo Pseudo User:/usr/local/majordomo:/nonexistent +cyrus:*:60:60:the cyrus mail server:/nonexistent:/nonexistent +gnats:*:61:1:GNATS database owner:/usr/local/share/gnats/gnats-db:/bin/sh +uucp:*:66:66:UUCP pseudo-user:/var/spool/uucppublic:/usr/libexec/uucp/uucico +xten:*:67:67:X-10 daemon:/usr/local/xten:/nonexistent +pop:*:68:6:Post Office Owner (popper):/nonexistent:/nonexistent +wnn:*:69:7:Wnn:/nonexistent:/nonexistent +ifmail:*:70:66:Ifmail user:/nonexistent:/nonexistent +pgsql:*:70:70:PostgreSQL pseudo-user:/usr/local/pgsql:/bin/sh +ircd:*:72:72:IRCd hybrid:/nonexistent:/nonexistent +alias:*:81:81:QMail user:/var/qmail/alias:/nonexistent +qmaill:*:83:81:QMail user:/var/qmail:/nonexistent +qmaild:*:82:81:QMail user:/var/qmail:/nonexistent +qmailq:*:85:82:QMail user:/var/qmail:/nonexistent +qmails:*:87:82:QMail user:/var/qmail:/nonexistent +qmailp:*:84:81:QMail user:/var/qmail:/nonexistent +qmailr:*:86:82:QMail user:/var/qmail:/nonexistent +msql:*:87:87:mSQL-2 pseudo-user:/var/db/msqldb:/bin/sh + + このリストを最新の状態に保つためにも, + この範囲の UID や GID を予約するような port を作ったり, + 既存の port にそのような改変を行って我々に送るときには, + UID の予約に関する注意書きをつけてください. + + + + 合理的な port + + Makefile + は単純かつ適切であるべきです. もし, + Makefile を数行短かくできたり, + もっと読みやすくできるのであれば, そうしてください. + 例えば, shell の if 構文を使う代りに, + make の .if 構文を使う, + EXTRACT* + の再定義で代用できるのであれば, + do-extract を再定義しない, + CONFIGURE_ARGS += + --prefix=${PREFIX} とするかわりに, + GNU_CONFIGURE とする, などです. + + + + <makevar>CFLAGS</makevar> の尊重 + + CFLAGS 変数は尊重すべきです. その + port がこれを無視するのであれば, + NO_PACKAGE=ignores cflags を + Makefile に加えてください. + + + + コンフィグレーション(設定)ファイル + + もしあなたの port が設定ファイルを + PREFIX/etc + に置く必要がある場合には, それを単純にインストールしたり, + pkg/PLIST + に加えてはいけません. + こうしてしまうと, pkg_delete が + ユーザが苦労して作ったファイルを消してしまったり, 新しく + インストールすると上書きされてしまったりします. + + 代りに, 見本となるファイルを suffix ( + + filename.sample + が良いでしょう) を付けて インストールして, message を表示して, + ソフトウエアを動かす前に, ユーザがそのファイル + をコピーして編集をしなければならないことを知らせましょう. + + + + + Portlint + + 送付や commit をする前に portlint + を使ってチェックしましょう. + + + + フィードバック + + Portを作るためにソフトウェアに変更を加えたら, + なるべく原作者にその旨を伝えてパッチ等を送ってください. + これらが次のリリースに取り入れられれば, + アップグレードが楽になります. + + + + その他諸々 + + pkg/DESCR, + pkg/COMMENT, + pkg/PLIST などのファイルは, + それぞれ2重にチェックしてください. + 再検討してもっと良い記述があれば, + それに置きかえてください. + + GNU General Public License + (GNU一般公有使用許諾)のコピーは + (すでにあるので)コピーしないでください, + おねがいします. + + 法律に関することには, 十分注意をはらってください. + 私達に法律に反するような形でソフトフェアの配布をさせない + でください! + + + + 困ったら.... + + 私たちに質問を送る前に, + 既存のportの例とbsd.port.mkを + ちゃんと読んでください! ;) + + それでもわからないことがあったら, + 一人で悩まないでどんどん 質問してください! :) + + + + + <filename>Makefile</filename> のお手本 + + これはportの Makefile + を作る際のお手本です. かぎかっこ + ([])内のコメントは忘れずに取ってください. + + 変数の順番, 段落の間の空行など, + Makefile を作るときはなるべくこ + の形式にしたがってください. + この形式は重要な情報が簡単に見つけられるように + 設計されています. portlint を使って + Makefile をチェックすることが + 推奨されています. + + +[ヘッダ -- どのようなportのMakefileかすぐにわかるようになっています] +# New ports collection makefile for: xdvi +# Version required: pl18 ["1.5alpha" みたいなのでも結構です] +[この Makefile の最初の版が作成された日付です. この port をアップグ + レードするときには変えないでください.] +# Date created: 26 May 1995 +[このソフトウェアを最初に FreeBSD に port した人の名前, つまり, + この Makefile の最初の版を書いた人です. この port をアップグレー + ドするとき, この行も変えないでください.] +# Whom: Satoshi Asami <asami@FreeBSD.ORG> +# +# $Id$ +[ ^^^^ この部分は, CVS ツリーに入れる時に自動的に RCS の ID 文字列に + 置き換えられます.] +# + +[Port自体, およびオリジナルのソースを取ってくるところを記述する部分. + 最初は必ずDISTNAME, そして必要ならPKGNAME, CATEGORIES, 続いて + MASTER_SITESがおかれ, さらに MASTER_SITE_SUBDIR がおかれることもあり + ます. そのあと, EXTRACT_SUFX か DISTFILES を指定することも可能です] +DISTNAME= xdvi +PKGNAME= xdvi-pl18 +CATEGORIES= print +[MASTER_SITE_* マクロを使用しない場合は, +最後のスラッシュを忘れないように ("/")!] +MASTER_SITES= ${MASTER_SITE_XCONTRIB} +MASTER_SITE_SUBDIR= applications +[ソースファイルが標準の ".tar.gz" 形式でない時にこれを使いましょう] +EXTRACT_SUFX= .tar.Z + +[配布パッチのセクション -- ない場合もあります] +PATCH_SITES= ftp://ftp.sra.co.jp/pub/X11/japanese/ +PATCHFILES= xdvi-18.patch1.gz xdvi-18.patch2.gz + +[保守責任者 -- これは *必ず* 必要です. 担当者 (あなた) 自身, あるいは + 担当者に素早く連絡をとれる人のアドレスを書いてください. どうしてもこ + こに自分のアドレスを書くのがいやな人は "ports@FreeBSD.ORG" と書いて + もいいです] +MAINTAINER= asami@FreeBSD.ORG + +[依存するport -- ない場合もあります] +RUN_DEPENDS= gs:${PORTSDIR}/print/ghostscript +LIB_DEPENDS= Xpm.5:${PORTSDIR}/graphics/xpm + +[ここには標準のbsd.port.mkの変数で, 上のどれにもあてはまらないものを + 書きます] +[コンフィグレーション, コンパイル, インストールなどの時に質問をする + なら...] +IS_INTERACTIVE=yes +[${DISTNAME}以外のディレクトリにソースが展開されるなら...] +WRKSRC= ${WRKDIR}/xdvi-new +[配布されているパッチが ${WRKSRC} に対する相対パスで作られてい + い場合にこの変数の指定が必要かも...] +PATCH_DIST_STRIP= -p1 +[GNU autoconfによって生成された "configure" スクリプトを走らせたいなら...] +GNU_CONFIGURE= yes +[/usr/bin/makeでなく, GNU makeを使わないといけないなら...] +USE_GMAKE= yes +[これがXのアプリケーションで "xmkmf -a" を走らせたいなら...] +USE_IMAKE= yes +[などなど] + +[下の方のルールで使う非標準の変数] +MY_FAVORITE_RESPONSE= "yeah, right" + +[そして, 特別なターゲット, 使用順に] +pre-fetch: + i go fetch something, yeah + +post-patch: + i need to do something after patch, great + +pre-install: + and then some more stuff before installing, wow + +[最後には必ず] +.include <bsd.port.mk> + + + + Packageの名前 + + Package の名前は以下のルールにしたがってつけてください. + こ れは package のディレクトリを見やすくするためで, + 無秩序な名前 + がたくさん並んでいるとユーザが使いづらくなるのでは + という心配か らです. + (FTPサイトなどにはたくさんpackageがありますからね.) + + Packageの名前は以下のようにしてください. + + 言語-名前-オプション + バージョン.番号 + + + DISTNAME + が上記の形式になっていない場合に は, + PKGNAME をそのようにしてください. + + + + FreeBSD + はユーザの慣れ親しんだ言語のサポートに力を入れて います. + 特定の言語のためのportのpackage名には + 言語- に ISO-639 + で定義されている言語名の略称を入れ てください. 例えば, + 日本語なら ja, ロシア語なら + ru, ベト ナム語なら + vi, 中国語なら zh, + 韓国語ならば ko, ドイツ 語なら + de, といった具合です. + + + + 名前 + の部分は原則的にはすべて英小文字 を使います. + 例外はたくさんのプログラムが入っている巨大なport + の場合で, XFree86 (ほんとにあるんですよ) やImageMagickな + どがこれにあたります. そうでない場合には, + 名前の大文字を小文 字に (少なくとも最初の一字だけは) + 変えてください. もし, + 大文字であることが重要な場合(例えば, 1文字の名前, + R とか V)には, + あなたの裁量で大文字を使うのも良いでしょう. Perl 5 + のモジュールでは, 頭に p5- を付け, + 2重コロン (::) + のセパレータをハイフン( - ) + に置きかえるしきたりになっています. 例えば, + Data::Dumper は + p5-Data-Dumper になります. また, その + ソフトウェアの名前として通常使われるものに番号, + ハイフン, あ るいは下線が入っている場合には, + それらを使うことも構いません + (kinput2 など). + + + + コンパイル時に環境変数や make + の引数などで + ハードコードされたデフォルト + を変えてコンパイルできる場合, + -compiled.specifics + にそのコンパイル時のデフォルトを入れてください + (ハイフンはあってもなくてもかまいません). 用紙のサイズ, + あるいはフォントの解像度などがこれにあたります. + + + + バージョン番号は数字とアルファベットからなり, + ピリオド (.) で区切ります. + アルファベットは二文字以上続けてはいけませ ん. + ただ一つの例外は「パッチレベル」を意味する + pl で, それ 以外にバージョン番号が + まったくついていない場合にのみ使うことがで + きます. + + + + では, DISTNAMEを正しい + PKGNAMEに直す例を見てみましょう: + + + + + + DISTNAME + PKGNAME + 理由 + + + + + + mule-2.2.2. + mule-2.2.2 + まったく問題なし + + + + XFree86-3.1.2 + XFree86-3.1.2 + 同上 + + + + EmiClock-1.0.2 + emiclock-1.0.2 + プログラム一つだけの時は小文字のみ + + + + gmod1.4 + gmod-1.4 + + `<名前>' のあとにハイフンが必要 + + + + xmris.4.0.2 + xmris-4.0.2 + 同上 + + + + rdist-1.3alpha + rdist-1.3a + alphaのような文字列は使えない + + + + + es-0.9-beta1 + es-0.9b1 + 同上 + + + + v3.3beta021.src + tiff-3.3 + なんなんでしょう ;) + + + + tvtwm + tvtwm-pl11 + バージョン番号は必ず必要 + + + + piewm + piewm-1.0 + 同上 + + + + xvgr-2.10pl1 + xvgr-2.10.1 + pl + が使えるのは他にバージョン番号がない場合のみ + + + + gawk-2.15.6 + ja-gawk-2.15.6 + 日本語バージョン + + + + psutils-1.13 + psutils-letter-1.13 + コンパイル時に用紙のサイズを指定 + + + + pkfonts + pkfonts300-1.0 + 300dpiフォント用のpackage + + + + + + オリジナルのソースにまったくバージョン情報が見当たらず, + また原作 + 者が新しいバージョンをリリースする可能性が低いときには, + バージョ ン番号として 1.0 + を使えばいいでしょう (上記のpiewmの例がこ れにあたります). + そうでない場合には, 原作者に聞くか, 日付 + ( + 年. + .) + を使うなどしてください. + + + + カテゴリ + + すでに御存知のように, ports はいくつかのカテゴリに + 分類されています. これを有効に利用するためには, port を + 行う人々とユーザが, そろぞれのカテゴリが何であるか, + どのようにしてカテゴリに分類するかを理解する必要が + あります. + + + 現在のカテゴリのリスト + + まず, これが現在の port のカテゴリーのリストです. + アスタリスク(*) が付いているものは, + バーチャル(virtual) カテゴリです -- + これらには対応するサブディレクトリが port + ツリーにはありません. + + + + バーチャルカテゴリでないものは, + そのサブディレクトリ内の pkg/COMMENT + に1行の記述があります + (例, archivers/pkg/COMMENT). + + + + + + + Category + Description + + + + + + afterstep* + Ports to support AfterStep window manager + + + + archivers + Archiving tools. + + + + astro + Astronomical ports. + + + + audio + Sound support. + + + + benchmarks + Benchmarking utilities. + + + + biology + Biology-related software. + + + + cad + Computer aided design tools. + + + + chinese + Chinese language support. + + + + comms + Communication software. Mostly software to talk to + your serial port. + + + + converters + Character code converters. + + + + databases + Databases. + + + + deskutils + Things that used to be on the desktop before + computers were invented. + + + + devel + Development utilities. Do not put libraries here just + because they are libraries—unless they truly don't + belong to anywhere else, they shouldn't be in this + category. + + + + editors + General editors. Specialized editors go in the + section for those tools (e.g., a mathematical-formula + editor will go in math). + + + + elisp + Emacs-lisp ports. + + + + emulators + Emulators for other operating systems. Terminal + emulators do not belong + here—X-based ones should go to + x11 and text-based ones to either + comms or misc, + depending on the exact functionality. + + + + games + Games. + + + + german + German language support. + + + + graphics + Graphics utilities. + + + + japanese + Japanese language support. + + + + kde* + Ports that form the K Desktop Environment + (kde). + + + + korean + Korean language support. + + + + lang + Programming languages. + + + + mail + Mail software. + + + + math + Numerical computation software and other utilities + for mathematics. + + + + mbone + MBone applications. + + + + misc + Miscellaneous utilities—basically things that + doesn't belong to anywhere else. This is the only category + that should not appear with any other non-virtual + category. If you have misc with + something else in your CATEGORIES line, + that means you can safely delete misc + and just put the port in that other subdirectory! + + + + net + Miscellaneous networking software. + + + + news + USENET news software. + + + + offix* + Ports from the OffiX suite. + + + + palm + Software support for the 3Com Palm(tm) series. + + + + perl5* + Ports that require perl version 5 to run. + + + + plan9* + Various programs from Plan9. + + + + print + Printing software. Desktop publishing tools + (previewers, etc.) belong here too. + + + + python* + Software written in python. + + + + russian + Russian language support. + + + + security + Security utilities. + + + + shells + Command line shells. + + + + sysutils + System utilities. + + + + tcl75* + Ports that use tcl version 7.5 to run. + + + + tcl76* + Ports that use tcl version 7.6 to run. + + + + tcl80* + Ports that use tcl version 8.0 to run. + + + + tcl81* + Ports that use tcl version 8.1 to run. + + + + textproc + Text processing utilities. It does not include + desktop publishing tools, which go to print/. + + + + tk41* + Ports that use tk version 4.1 to run. + + + + tk42* + Ports that use tk version 4.2 to run. + + + + tk80* + Ports that use tk version 8.0 to run. + + + + tk81* + Ports that use tk version 8.1 to run. + + + + vietnamese + Vietnamese language support. + + + + windowmaker* + Ports to support the WindowMaker window + manager + + + + www + Software related to the World Wide Web. HTML language + support belong here too. + + + + x11 + The X window system and friends. This category is + only for software that directly support the window system. + Do not put regular X applications here. If your port is + an X application, define USE_XLIB + (implied by USE_IMAKE) and put it in + appropriate categories. Also, many of them go into other + x11-* categories (see below). + + + + x11-clocks + X11 clocks. + + + + x11-fm + X11 file managers. + + + + x11-fonts + X11 fonts and font utilities. + + + + x11-toolkits + X11 toolkits. + + + + x11-wm + X11 window managers. + + + + + + + + 適切なカテゴリの選択 + + 多くのカテゴリに重なるので, どれを '第一' + カテゴリにするかを決めなければならないことが + たびたびあるでしょう. これを + うまく決めるルールがいくつかあります. + 以下はその優先順のリストで, 優先度の高いものから + 低いものの順に書いてあります. + + + + 言語特有のカテゴリがまず最初です. + 例えば日本語の X11 のフォントをインストールする + port の場合, CATEGORIES 行は + japanese x11-fonts となるでしょう. + + + + + より特徴的なカテゴリが, 一般的なカテゴリより + 優先されます. 例えば, HTML エディタの場合は + www editors となり, + 逆順にはしないでください. また, port が + mail, mbone, + news, security, + www のいづれかに属するとには, + net は必要ありません. + + + + x11 を第2カテゴリにするのは, + 第1カテゴリが自然言語の場合のみにしてください. 特に X + のアプリケーションには x11 + を指定しないでください. + + + + もし, あなたの port が他のどのカテゴリにも + 属しないばあいには, misc + にしてください. + + + + もし, あなたがカテゴリについて自信が持てない場合には, + そのことを send-pr するときに + 書き加えてください. そうすれば import するまえに + それについて議論できます. (もしあなたが commiter であれば, + そのことを &a.ports に送って, 先に議論 + するようにしてください — 新しい port + が間違ったカテゴリに import されて, + すぐ移動されることが多いので.) + + + + + このドキュメントと ports システムの変更 + + もしあなたが, たくさんの ports の保守を + しているのであれば, &a.ports メーリングリストの内容を + フォロウすることを考えてください. Ports + のしくみについての重要な変更点はここに アナウンスされます. + 最新の変更点については, いつでも, + the bsd.port.mk CVS log + で詳細な情報を得ることができます. + + + + + やっとおしまい! + + いやはや, 長い文章ですみません. + ここまで読んでくださった方に は感謝, 感謝でございます. (_ _) + + さあ, portの作り方がわかったところで, + 世界中のソフトウェア をport化しましょう. + FreeBSDプロジェクトに貢献するには, それ + がもっとも簡単な方法です! :) + + + + + 金銭, ハードウェアまたはインターネットアクセス + + FreeBSD プロジェクトの目的を進めるための寄付や, + 私たちと同じような ボランティアの細く長い ! 努力を, + 私たちは常に喜んで受け入れています. + また一般的に私たちは自分達で + 周辺機器を買う資金が不足しているため, + 周辺機器のサポートを充実させるのに + ハードウェアの寄付はとても重要です. + + + 資金の寄付 + + FreeBSD プロジェクトは501(C3) (非営利) 企業ではないため, + いかなる寄 + 付に対しても特別な税金の優遇措置を提供することができません. + このような 寄付はプロジェクトを代表して FreeBSD, Inc + により感謝をもって受け入れら れるでしょう. + + FreeBSD, Inc.は FreeBSD + プロジェクトの推進とプロジェクトに企業とし + ての最小限の体裁を持たせることを目的として, 1995年の初めに + &a.jkh; と &a.dg; により設立されました. + 寄付されたすべての資金は (最終的に FreeBSD, + Inc.によりもたらされるであろうすべての利益も同様に) + プロジェク + トの目標を推進するためだけに使われるでしょう. + + 支払い先を FreeBSD, Inc. とした小切手を, + 次の住所気付けで送ってください: + +
+ FreeBSD, Inc. + c/o Jordan Hubbard + 4041 Pike Lane, Suite F + Concord + CA, 94520 +
+ + [現在 私書箱が開設されるまで一時的に Walnut Creek CDROM + の住所を使用] + + 電信振替は次の所まで直接送れるでしょう: + +
+ Bank Of America + Concord Main Office + P.O. Box 37176 + San Francisco + CA, 94137-5176 + + Routing #: 121-000-358 + Account #: 01411-07441 (FreeBSD, Inc.) +
+ + 寄付に関することは全て電子メールもしくは上記 FreeBSD, + Inc. の住所宛の郵政省メールにて Jordan Hubbard + jkh@FreeBSD.org + までお送りくださるようお願いします. + + もし 寄贈者ギャラリー + の節で匿名を希望される 方は, 寄付の際にその旨お伝えください. + Thanks! +
+ + + ハードウェアの寄贈 + + FreeBSD プロジェクトは, + 次の3つのカテゴリのどんなハードウェアの寄贈 も, + 喜んで受け付けます: + + + + ディスクドライブ, + メモリまたは完全なシステムといった一般用途のハー + ドウェアは, 資金の寄付の節にある + FreeBSD, Inc. の住所まで送っ てください. + + + + 進行中の受け入れテストのための + ハードウェアが必要とされていま す. + 新たなリリース毎に適切な逆行テストができるように, + 私たちは現在, FreeBSD + がサポートするすべてのコンポーネントの + テストラボを設置しよう としています. 私たちにはまだ, + たくさんの重要な部品 (ネットワークカード, + マザーボードなど) が不足していますので, + このような寄贈をしたいと思って いるならば, &a.dg; + へコンタクトしてどの部品がまだ必要とされているか + の情報を得てください. + + + + 現在 FreeBSD にサポートされていないハードウェアで, + サポートに追 加して欲しいもの. + 私たちが新しいハードウェアを受けとる前にそのタスクを + 引き受けてくれる開発者を探す必要があるため, + その部品を送る前に &a.core; + にコンタクトを取ってください. + + + + + + インターネットアクセスの寄付 + + 私たちは常に FTP, WWW や cvsup + の新しいミラーサイトを募集しています. + ミラーサイトになりたい場合には the FreeBSD project + administrators admin@FreeBSD.ORG + にコンタクトを取って, 詳し + い情報を手に入れてください. + +
+
+ + + 寄贈者ギャラリー + + FreeBSD プロジェクトは次の寄贈者に恩義を受けており, + ここに公表して 感謝の意を表したいと思います. + + + + + セントラルサーバプロジェクトへの寄贈者: + + 次に挙げる個人および企業からは, + セントラルサーバマシンのための 部品の寄贈を頂いており, + それによって freefall.freebsd.org + をリプレースして新たに FreeBSD + プロジェクトのセントラルサーバマシンを + 構築することができました: + + + + Ade Barkah mbarkah@freebsd.org + と彼の所属する Hemisphere Online + は, Pentium Pro (P6) 200Mhz CPU + を寄贈してくださいました. + + + + ASA + Computers は, Tyan 1662 + マザーボード + を寄贈してくださいました. + + + + ViaNet + Communications の Joe McGuckin + joe@via.net は, Kingston + イーサネットコントローラ + を寄贈してくださいました. + + + + Jack O'Neill + jack@diamond.xtalwind.net は, + NCR 53C875 SCSI コントローラカード + を寄贈してくださいました. + + + + Alameda + Networks の Ulf Zimmermann + ulf@Alameda.net は, 128MB + のメモリ, そして 4 GB + のディスクドライブと匡体 + を寄贈してくださいました. + + + + + + 直接的な資金提供: + + 次に挙げる個人および企業からは FreeBSD + プロジェクトに対する直接的な + 資金提供を頂いております: + + + + Annelise Anderson + ANDRSN@HOOVER.STANFORD.EDU + + + + Matt Dillon dillon@best.net + + + + + Epilogue Technology Corporation + + + + Sean Eric Fagan + + + + Don Scott Wilde + + + + Gianmarco Giovannelli + gmarco@masternet.it + + + + Josef C. Grosch joeg@truenorth.org + + + + Robert T. Morris + + + + Chuck Robey chuckr@freebsd.org + + + + + Imaginary Landscape, LLC. + の Kenneth P. Stox + ken@stox.sa.enteract.com + + + + Dmitry S. Kohmanyuk dk@dog.farm.org + + + + 日本の + Laser5 + はいくつかの FreeBSD CD の販売利益の一部を + 寄付してくれました. + + + + + 蕗出版 は, はじめての FreeBSD + の売り上げの一部を FreeBSD プロジェクト及び + XFree86 プロジェクトへ寄付してくれました. + + + + アスキー + は FreeBSD 関連の書籍の売り上げの一部を FreeBSD + プロジェクト及び FreeBSD 友の会へ寄付してくれました. + + + + + + 横河電機株式会社 からは FreeBSD + プロジェクトへ多大な寄付をいただきました. + + + + BuffNET + + + + Pacific + Solutions + + + + + + ハードウェアの寄贈者: + + 次に挙げる個人および企業からは, + テストやデバイスドライバの開発 / サポート + のためのハードウェアの寄贈を頂いております: + + + + Walnut Creek CDROM は, + ネットワークへのアクセスおよび + 他のハードウェアリソースの寄贈はいうまでもなく, + 開発に使うための Pentium P5-90 と 486/DX2-66 EISA/VL + のシステム数台を 提供してくださいました. + + + + TRW Financial Sysytems社は, PC 130台, 68 GB + のファイルサーバ 3台, 12のイーサネット, + ディスクレスコードのデバッグをおこなうための ルータ + 2台及び ATM スイッチを提供してくださいました. また, + 彼らは 2, 3人の FreeBSD ハッカーを雇って, FreeBSD + に専念させて くださっております. + ありがとうございます! + + + + Dermot McDonnell は, 東芝 XM3401B CD-ROM ドライブを + 寄贈してくださいました. その CD-ROM ドライブは現在 + freefall で使用されています. + + + + &a.chuck; は, 実験用のフロッピーテープストリーマを + 寄付してくださいました. + + + + Larry Altneu larry@ALR.COM と + &a.wilko;は, wt + ドライバを改良するために Wangtek と Archive の QIC-02 + テープドライブを提供してくださいました. + + + + Ernst Winter ewinter@lobo.muc.de は, + このプロジェクトへ 2.88 MB + のフロッピードライブを提供してくださいました. + うまくいけば, + これでフロッピーディスクドライバを書き直すための + プレッシャーが増えるでしょう. ;-) + + + + Tekram + Technologies は NCR ドライバや AMD + ドライバと自社のカードの逆行テストのため FAST/ULTRA + SCSI ホストアダプタ DC-390, DC-390U, DC-390F を + 各1枚提供してくださいました. また, フリーな OS + のためのドライバの ソースを自社の FTP サーバ + ftp://ftp.tekram.com/scsi/FreeBSD + で公開されていることも 称賛に値するでしょう. + + + + Larry M. Augustin lma@varesearch.com + は Symbios Sym8751S SCSI + カードを寄贈してくださっただけでなく, Ultra-2 や LVD + をサポートする次期チップ Sym53c895 のものを含む + データブックのセットと, 最新の Symbios SCSI + チップが持つ先進的機能を 安全に使う方法について書かれた + 最新のプログラミングマニュアルも 寄贈してくださいました. + 本当にありがとうございます ! + + + + Christoph Kukulies kuku@freebsd.org + は, IDE CD-ROM ドライバ開発用の FX120 12 倍速 Mitsumi + CD-ROM ドライブ を提供してくださいました. + + + + + + 特筆すべき寄贈者: + + + + Walnut Creek + CDROM は, + 言い表せないほど多くの寄付をしてくださいました (詳細は + FreeBSD 小史を参照). + 特に, 私たちのもともとのプライマリ開発マシンである + freefall.FreeBSD.ORG, + テストおよびビルドマシンである thud.FreeBSD.ORG + で使用しているハードウェアに対し 感謝したいと思います. + また彼らには, 数年にわたる色々な貢献者への資金提供や, + インターネット への T1 + コネクションの無制限使用を提供して + 頂いた恩義があります. + + + + interface + business GmbH, Dresden は, &a.joerg; + を根気よく サポートしてくださいました. 彼は本職より + FreeBSD の仕事を好みがちであり, 彼個人の接続があまりに + 遅くなったり途切れたりして仕事にならない時は必ず + interface business の (非常に高価な) EUnet + インターネット接続に頼ったものです... + + + + Berkeley Software + Design, Inc. は, 同社の DOS + エミュレータのコードを BSD コミュ + ニティ全体に対して提供してくれました. このコードは, + dosemu + コマンドに利用されています. + + + + + + + + コアチームの卒業生 + + 次に挙げる人々は()で記した期間, FreeBSD + コアチームのメンバーでした. FreeBSD + プロジェクトにおける彼らの努力に感謝の意を表します. + + + だいたいの年代順: + + + + Guido van Rooij (1995 - 1999) + + + + John Dyson (1993 - 1998) + + + + Nate Williams (1992 - 1996) + + + + Rod Grimes (1992 - 1995) + + + + Andreas Schulz (1992 - 1995) + + + + Geoff Rehmet (1993 - 1995) + + + + Paul Richards (1992 - 1995) + + + + Scott Mace (1993 - 1994) + + + + Andrew Moore (1993 - 1994) + + + + Christoph Robitschko (1993 - 1994) + + + + J. T. Conklin (1992 - 1993) + + + + + + BSD派生ソフトウェアへのコントリビュータ + + このソフトウェアは最初は William F. Jolitz の 386BSD release + 0.1 から派生しましたが, オリジナルの 386BSD + に固有のコードはほとんど 残っていません. + このソフトウェアは基本的にはカリフォルニア大学 バークレイ校の + Computer Science Research Group (CSRG) とその共同研究者 + たちによる 4.4BSD-Lite リリースから再実装されました. + + また, NetBSD や OpenBSD の一部も FreeBSD + に取り込まれています. したがって私たちは NetBSD と OpenBSD + へ貢献した人々すべてに感謝します. + + + + その他の FreeBSD へのコントリビュータ + + (名前でアルファベット順に): + + + + + + + + ABURAYA Ryushirou rewsirow@ff.iij4u.or.jp + + + + AMAGAI Yoshiji amagai@nue.org + + + + Aaron Bornstein aaronb@j51.com + + + + Aaron Smith aaron@tau.veritas.com + + + + Achim Patzner ap@noses.com + + + + Ada T Lim ada@bsd.org + + + + Adam Baran badam@mw.mil.pl + + + + Adam Glass glass@postgres.berkeley.edu + + + + Adam McDougall mcdouga9@egr.msu.edu + + + + Adrian Colley aecolley@ois.ie + + + + Adrian Hall adrian@ibmpcug.co.uk + + + + Adrian Mariano adrian@cam.cornell.edu + + + + Adrian Steinmann ast@marabu.ch + + + + Adrian T. Filipi-Martin + atf3r@agate.cs.virginia.edu + + + + Ajit Thyagarajan unknown + + + + Akio Morita + amorita@meadow.scphys.kyoto-u.ac.jp + + + + Akira SAWADA unknown + + + + Akira Watanabe + akira@myaw.ei.meisei-u.ac.jp + + + + Akito Fujita fujita@zoo.ncl.omron.co.jp + + + + Alain Kalker + A.C.P.M.Kalker@student.utwente.nl + + + + Alan Bawden alan@curry.epilogue.com + + + + Alan Cox alc@cs.rice.edu + + + + Alec Wolman wolman@cs.washington.edu + + + + Aled Morris aledm@routers.co.uk + + + + Alex garbanzo@hooked.net + + + + Alex D. Chen + dhchen@Canvas.dorm7.nccu.edu.tw + + + + Alex G. Bulushev bag@demos.su + + + + Alex Le Heux alexlh@funk.org + + + + Alexander B. Povolotsky tarkhil@mgt.msk.ru + + + + Alexander Leidinger + netchild@wurzelausix.CS.Uni-SB.DE + + + + Alexandre Snarskii snar@paranoia.ru + + + + Alistair G. Crooks agc@uts.amdahl.com + + + + Allan Saddi asaddi@philosophysw.com + + + + Allen Campbell allenc@verinet.com + + + + Amakawa Shuhei amakawa@hoh.t.u-tokyo.ac.jp + + + + Amancio Hasty hasty@star-gate.com + + + + Amir Farah amir@comtrol.com + + + + Amy Baron amee@beer.org + + + + Anatoly A. Orehovsky tolik@mpeks.tomsk.su + + + + Anatoly Vorobey mellon@pobox.com + + + + Anders Nordby nickerne@nome.no + + + + Anders Thulin Anders.X.Thulin@telia.se + + + + Andras Olah olah@cs.utwente.nl + + + + Andre Albsmeier + Andre.Albsmeier@mchp.siemens.de + + + + Andre Oppermann andre@pipeline.ch + + + + Andreas Haakh ah@alman.robin.de + + + + Andreas Kohout shanee@rabbit.augusta.de + + + + Andreas Lohr andreas@marvin.RoBIN.de + + + + Andreas Schulz unknown + + + + Andreas Wetzel mickey@deadline.snafu.de + + + + Andreas Wrede andreas@planix.com + + + + Andres Vega Garcia unknown + + + + Andrew Atrens atreand@statcan.ca + + + + Andrew Gillham gillham@andrews.edu + + + + Andrew Gordon andrew.gordon@net-tel.co.uk + + + + Andrew Herbert andrew@werple.apana.org.au + + + + Andrew J. Korty ajk@purdue.edu + + + + Andrew L. Moore alm@mclink.com + + + + Andrew McRae amcrae@cisco.com + + + + Andrew Stevenson andrew@ugh.net.au + + + + Andrew Timonin tim@pool1.convey.ru + + + + Andrew V. Stesin stesin@elvisti.kiev.ua + + + + Andrew Webster awebster@dataradio.com + + + + Andrey Zakhvatov andy@icc.surw.chel.su + + + + Andy Farkas andyf@speednet.com.au + + + + Andy Valencia ajv@csd.mot.com + + + + Andy Whitcroft andy@sarc.city.ac.uk + + + + Angelo Turetta ATuretta@stylo.it + + + + Anthony C. Chavez magus@xmission.com + + + + Anthony Yee-Hang Chan yeehang@netcom.com + + + + Anton Berezin tobez@plab.ku.dk + + + + Antti Kaipila anttik@iki.fi + + + + Are Bryne are.bryne@communique.no + + + + Ari Suutari ari@suutari.iki.fi + + + + Arjan de Vet devet@IAEhv.nl + + + + Arne Henrik Juul arnej@Lise.Unit.NO + + + + Assar Westerlund assar@sics.se + + + + Atsushi Furuta furuta@sra.co.jp + + + + Atsushi Murai amurai@spec.co.jp + + + + Bakul Shah bvs@bitblocks.com + + + + Barry Bierbauch pivrnec@vszbr.cz + + + + Barry Lustig barry@ictv.com + + + + Ben Hutchinson benhutch@xfiles.org.uk + + + + Ben Jackson unknown + + + + Ben Smithurst ben@scientia.demon.co.uk + + + + Ben Walter bwalter@itachi.swcp.com + + + + Benjamin Lewis bhlewis@gte.net + + + + Bernd Rosauer br@schiele-ct.de + + + + Bill Kish kish@osf.org + + + + Bill Trost trost@cloud.rain.com + + + + Blaz Zupan blaz@amis.net + + + + Bob Van Valzah Bob@whitebarn.com + + + + Bob Willcox bob@luke.pmr.com + + + + Boris Staeblow balu@dva.in-berlin.de + + + + Boyd R. Faulkner faulkner@asgard.bga.com + + + + Brad Karp karp@eecs.harvard.edu + + + + Bradley Dunn bradley@dunn.org + + + + Brandon Gillespie brandon@roguetrader.com + + + + &a.wlloyd + + + + Bob Wilcox bob@obiwan.uucp + + + + Boyd Faulkner faulkner@mpd.tandem.com + + + + Brent J. Nordquist bjn@visi.com + + + + Brett Lymn blymn@mulga.awadi.com.AU + + + + Brett Taylor + brett@peloton.physics.montana.edu + + + + Brian Campbell brianc@pobox.com + + + + Brian Clapper bmc@willscreek.com + + + + Brian Cully shmit@kublai.com + + + + Brian F. Feldman green@unixhelp.org + + + + Brian Handy + handy@lambic.space.lockheed.com + + + + Brian Litzinger brian@MediaCity.com + + + + Brian McGovern bmcgover@cisco.com + + + + Brian Moore ziff@houdini.eecs.umich.edu + + + + Brian R. Haug haug@conterra.com + + + + Brian Tao taob@risc.org + + + + Brion Moss brion@queeg.com + + + + Bruce A. Mah bmah@ca.sandia.gov + + + + Bruce Albrecht bruce@zuhause.mn.org + + + + Bruce Gingery bgingery@gtcs.com + + + + Bruce J. Keeler loodvrij@gridpoint.com + + + + Bruce Murphy packrat@iinet.net.au + + + + Bruce Walter walter@fortean.com + + + + Carey Jones mcj@acquiesce.org + + + + Carl Fongheiser cmf@netins.net + + + + Carl Mascott cmascott@world.std.com + + + + Casper casper@acc.am + + + + Castor Fu castor@geocast.com + + + + Cejka Rudolf cejkar@dcse.fee.vutbr.cz + + + + Chain Lee chain@110.net + + + + Charles Hannum mycroft@ai.mit.edu + + + + Charles Henrich henrich@msu.edu + + + + Charles Mott cmott@srv.net + + + + Charles Owens owensc@enc.edu + + + + Chet Ramey chet@odin.INS.CWRU.Edu + + + + Chia-liang Kao clkao@CirX.ORG + + + + Chiharu Shibata chi@bd.mbn.or.jp + + + + Chip Norkus unknown + + + + Choi Jun Ho junker@jazz.snu.ac.kr + + + + Chris Csanady cc@tarsier.ca.sandia.gov + + + + Chris Dabrowski chris@vader.org + + + + Chris Dillon cdillon@wolves.k12.mo.us + + + + Chris Piazza cpiazza@home.net + + + + Chris Shenton + cshenton@angst.it.hq.nasa.gov + + + + Chris Stenton jacs@gnome.co.uk + + + + Chris Timmons skynyrd@opus.cts.cwu.edu + + + + Chris Torek torek@ee.lbl.gov + + + + Christian Gusenbauer + cg@fimp01.fim.uni-linz.ac.at + + + + Christian Haury Christian.Haury@sagem.fr + + + + Christian Weisgerber + naddy@bigeye.rhein-neckar.de + + + + Christoph P. Kukulies kuku@FreeBSD.org + + + + Christoph Robitschko + chmr@edvz.tu-graz.ac.at + + + + Christoph Weber-Fahr + wefa@callcenter.systemhaus.net + + + + Christopher G. Demetriou + cgd@postgres.berkeley.edu + + + + Christopher T. Johnson + cjohnson@neunacht.netgsi.com + + + + Chrisy Luke chrisy@flix.net + + + + Chuck Hein chein@cisco.com + + + + Clive Lin clive@CiRX.ORG + + + + Colman Reilly careilly@tcd.ie + + + + Conrad Sabatier conrads@neosoft.com + + + + Coranth Gryphon gryphon@healer.com + + + + Cornelis van der Laan + nils@guru.ims.uni-stuttgart.de + + + + Cove Schneider cove@brazil.nbn.com + + + + Craig Leres leres@ee.lbl.gov + + + + Craig Loomis unknown + + + + Craig Metz cmetz@inner.net + + + + Craig Spannring cts@internetcds.com + + + + Craig Struble cstruble@vt.edu + + + + Cristian Ferretti cfs@riemann.mat.puc.cl + + + + Curt Mayer curt@toad.com + + + + Cy Schubert cschuber@uumail.gov.bc.ca + + + + DI. Christian Gusenbauer + cg@scotty.edvz.uni-linz.ac.at + + + + Dai Ishijima ishijima@tri.pref.osaka.jp + + + + Damian Hamill damian@cablenet.net + + + + Dan Cross tenser@spitfire.ecsel.psu.edu + + + + Dan Lukes dan@obluda.cz + + + + Dan Nelson dnelson@emsphone.com + + + + Dan Walters hannibal@cyberstation.net + + + + Daniel Baker dbaker@crash.ops.neosoft.com + + + + Daniel M. Eischen + deischen@iworks.InterWorks.org + + + + Daniel O'Connor doconnor@gsoft.com.au + + + + Daniel Poirot poirot@aio.jsc.nasa.gov + + + + Daniel Rock rock@cs.uni-sb.de + + + + Danny Egen unknown + + + + Danny J. Zerkel dzerkel@phofarm.com + + + + Darren Reed avalon@coombs.anu.edu.au + + + + Dave Adkins adkin003@tc.umn.edu + + + + Dave Andersen angio@aros.net + + + + Dave Blizzard dblizzar@sprynet.com + + + + Dave Bodenstab imdave@synet.net + + + + Dave Burgess burgess@hrd769.brooks.af.mil + + + + Dave Chapeskie dchapes@ddm.on.ca + + + + Dave Cornejo dave@dogwood.com + + + + Dave Edmondson davided@sco.com + + + + Dave Glowacki dglo@ssec.wisc.edu + + + + Dave Marquardt marquard@austin.ibm.com + + + + Dave Tweten tweten@FreeBSD.org + + + + David A. Adkins adkin003@tc.umn.edu + + + + David A. Bader dbader@umiacs.umd.edu + + + + David Borman dab@bsdi.com + + + + David Dawes dawes@XFree86.org + + + + David Filo filo@yahoo.com + + + + David Holland dholland@eecs.harvard.edu + + + + David Holloway daveh@gwythaint.tamis.com + + + + David Horwitt dhorwitt@ucsd.edu + + + + David Hovemeyer daveho@infocom.com + + + + David Jones dej@qpoint.torfree.net + + + + David Kelly dkelly@tomcat1.tbe.com + + + + David Kulp dkulp@neomorphic.com + + + + David L. Nugent davidn@blaze.net.au + + + + David Leonard d@scry.dstc.edu.au + + + + David Malone dwmalone@maths.tcd.ie + + + + David Muir Sharnoff muir@idiom.com + + + + David S. Miller davem@jenolan.rutgers.edu + + + + David Wolfskill dhw@whistle.com + + + + Dean Gaudet dgaudet@arctic.org + + + + Dean Huxley dean@fsa.ca + + + + Denis Fortin unknown + + + + Dennis Glatting + dennis.glatting@software-munitions.com + + + + Denton Gentry denny1@home.com + + + + Derek Inksetter derek@saidev.com + + + + Dima Sivachenko dima@Chg.RU + + + + Dirk Keunecke dk@panda.rhein-main.de + + + + Dirk Nehrling nerle@pdv.de + + + + Dmitry Khrustalev dima@xyzzy.machaon.ru + + + + Dmitry Kohmanyuk dk@farm.org + + + + Dom Mitchell dom@myrddin.demon.co.uk + + + + Don Croyle croyle@gelemna.ft-wayne.in.us + + + + &a.whiteside; + + + + Don Morrison dmorrisn@u.washington.edu + + + + Don Yuniskis dgy@rtd.com + + + + Donald Maddox dmaddox@conterra.com + + + + Doug Barton studded@dal.net + + + + Douglas Ambrisko ambrisko@whistle.com + + + + Douglas Carmichael dcarmich@mcs.com + + + + Douglas Crosher dtc@scrooge.ee.swin.oz.au + + + + Drew Derbyshire ahd@kew.com + + + + Duncan Barclay dmlb@ragnet.demon.co.uk + + + + Dustin Sallings dustin@spy.net + + + + Eckart "Isegrim" Hofmann + Isegrim@Wunder-Nett.org + + + + Ed Gold + vegold01@starbase.spd.louisville.edu + + + + Ed Hudson elh@p5.spnet.com + + + + Edward Wang edward@edcom.com + + + + Edwin Groothus edwin@nwm.wan.philips.com + + + + Eiji-usagi-MATSUmoto usagi@clave.gr.jp + + + + ELISA Font Project + + + + Elmar Bartel + bartel@informatik.tu-muenchen.de + + + + Eric A. Griff eagriff@global2000.net + + + + Eric Blood eblood@cs.unr.edu + + + + Eric J. Haug ejh@slustl.slu.edu + + + + Eric J. Schwertfeger eric@cybernut.com + + + + Eric L. Hernes erich@lodgenet.com + + + + Eric P. Scott eps@sirius.com + + + + Eric Sprinkle eric@ennovatenetworks.com + + + + Erich Stefan Boleyn erich@uruk.org + + + + Erik E. Rantapaa rantapaa@math.umn.edu + + + + Erik H. Moe ehm@cris.com + + + + Ernst Winter ewinter@lobo.muc.de + + + + Eugene M. Kim astralblue@usa.net + + + + Eugene Radchenko genie@qsar.chem.msu.su + + + + Evan Champion evanc@synapse.net + + + + Faried Nawaz fn@Hungry.COM + + + + Flemming Jacobsen fj@tfs.com + + + + Fong-Ching Liaw fong@juniper.net + + + + Francis M J Hsieh mjshieh@life.nthu.edu.tw + + + + Frank Bartels knarf@camelot.de + + + + Frank Chen Hsiung Chan + frankch@waru.life.nthu.edu.tw + + + + Frank Durda IV uhclem@nemesis.lonestar.org + + + + Frank MacLachlan fpm@n2.net + + + + Frank Nobis fn@Radio-do.de + + + + Frank Volf volf@oasis.IAEhv.nl + + + + Frank ten Wolde franky@pinewood.nl + + + + Frank van der Linden frank@fwi.uva.nl + + + + Fred Cawthorne fcawth@jjarray.umn.edu + + + + Fred Gilham gilham@csl.sri.com + + + + Fred Templin templin@erg.sri.com + + + + Frederick Earl Gray fgray@rice.edu + + + + FUJIMOTO Kensaku + fujimoto@oscar.elec.waseda.ac.jp + + + + FUJISHIMA Satsuki k5@respo.or.jp + + + + FURUSAWA Kazuhisa + furusawa@com.cs.osakafu-u.ac.jp + + + + Gabor Kincses gabor@acm.org + + + + Gabor Zahemszky zgabor@CoDe.hu + + + + Garance A Drosehn gad@eclipse.its.rpi.edu + + + + Gareth McCaughan gjm11@dpmms.cam.ac.uk + + + + Gary A. Browning gab10@griffcd.amdahl.com + + + + Gary Howland gary@hotlava.com + + + + Gary J. garyj@rks32.pcs.dec.com + + + + Gary Kline kline@thought.org + + + + Gaspar Chilingarov nightmar@lemming.acc.am + + + + Gea-Suan Lin gsl@tpts4.seed.net.tw + + + + Geoff Rehmet csgr@alpha.ru.ac.za + + + + Georg Wagner georg.wagner@ubs.com + + + + Gerard Roudier groudier@club-internet.fr + + + + Gianmarco Giovannelli + gmarco@giovannelli.it + + + + Gil Kloepfer Jr. gil@limbic.ssdl.com + + + + Gilad Rom rom_glsa@ein-hashofet.co.il + + + + Ginga Kawaguti + ginga@amalthea.phys.s.u-tokyo.ac.jp + + + + Giles Lean giles@nemeton.com.au + + + + Glen Foster gfoster@gfoster.com + + + + Glenn Johnson gljohns@bellsouth.net + + + + Godmar Back gback@facility.cs.utah.edu + + + + Goran Hammarback goran@astro.uu.se + + + + Gord Matzigkeit gord@enci.ucalgary.ca + + + + Graham Wheeler gram@cdsec.com + + + + Greg A. Woods woods@zeus.leitch.com + + + + Greg Ansley gja@ansley.com + + + + Greg Troxel gdt@ir.bbn.com + + + + Greg Ungerer gerg@stallion.oz.au + + + + Gregory Bond gnb@itga.com.au + + + + Gregory D. Moncreaff + moncrg@bt340707.res.ray.com + + + + Guy Harris guy@netapp.com + + + + Guy Helmer ghelmer@cs.iastate.edu + + + + HAMADA Naoki hamada@astec.co.jp + + + + HONDA Yasuhiro + honda@kashio.info.mie-u.ac.jp + + + + HOSOBUCHI Noriyuki hoso@buchi.tama.or.jp + + + + Hannu Savolainen hannu@voxware.pp.fi + + + + Hans Huebner hans@artcom.de + + + + Hans Petter Bieker zerium@webindex.no + + + + Hans Zuidam hans@brandinnovators.com + + + + Harlan Stenn Harlan.Stenn@pfcs.com + + + + Harold Barker hbarker@dsms.com + + + + Havard Eidnes + Havard.Eidnes@runit.sintef.no + + + + Heikki Suonsivu hsu@cs.hut.fi + + + + Heiko W. Rupp unknown + + + + Helmut F. Wirth hfwirth@ping.at + + + + Henrik Vestergaard Draboel + hvd@terry.ping.dk + + + + Herb Peyerl hpeyerl@NetBSD.org + + + + Hideaki Ohmon ohmon@tom.sfc.keio.ac.jp + + + + Hidekazu Kuroki hidekazu@cs.titech.ac.jp + + + + Hideki Yamamoto hyama@acm.org + + + + Hidetoshi Shimokawa + simokawa@sat.t.u-tokyo.ac.jp + + + + Hideyuki Suzuki + hideyuki@sat.t.u-tokyo.ac.jp + + + + Hirayama Issei iss@mail.wbs.ne.jp + + + + Hiroaki Sakai sakai@miya.ee.kagu.sut.ac.jp + + + + Hiroharu Tamaru tamaru@ap.t.u-tokyo.ac.jp + + + + Hironori Ikura hikura@kaisei.org + + + + Hiroshi Nishikawa nis@pluto.dti.ne.jp + + + + Hiroya Tsubakimoto unknown + + + + Hiroyuki NAKAJI + nakaji@zeisei3.dpri.kyoto-u.ac.jp + + + + Holger Veit Holger.Veit@gmd.de + + + + Holm Tiffe holm@geophysik.tu-freiberg.de + + + + Horance Chou + horance@freedom.ie.cycu.edu.tw + + + + Horihiro Kumagaio kuma@jp.freebsd.org + + + + Horikawa Kazuo k-horik@mail.yk.rim.or.jp + + + + Hr.Ladavac lada@ws2301.gud.siemens.co.at + + + + Hubert Feyrer hubertf@NetBSD.ORG + + + + Hugh F. Mahon hugh@nsmdserv.cnd.hp.com + + + + Hugh Mahon h_mahon@fc.hp.com + + + + Hung-Chi Chu hcchu@r350.ee.ntu.edu.tw + + + + IMAI Takeshi take-i@ceres.dti.ne.jp + + + + IMAMURA Tomoaki + tomoak-i@is.aist-nara.ac.jp + + + + Ian Dowse iedowse@maths.tcd.ie + + + + Ian Holland ianh@tortuga.com.au + + + + Ian Struble ian@broken.net + + + + Ian Vaudrey i.vaudrey@bigfoot.com + + + + Igor Khasilev igor@jabber.paco.odessa.ua + + + + Igor Roshchin str@giganda.komkon.org + + + + Igor Sviridov siac@ua.net + + + + Igor Vinokurov igor@zynaps.ru + + + + Ikuo Nakagawa ikuo@isl.intec.co.jp + + + + Ilya V. Komarov mur@lynx.ru + + + + Issei Suzuki issei@jp.FreeBSD.org + + + + Itsuro Saito saito@miv.t.u-tokyo.ac.jp + + + + J. Bryant jbryant@argus.flash.net + + + + J. David Lowe lowe@saturn5.com + + + + J. Han hjh@best.com + + + + J. Hawk jhawk@MIT.EDU + + + + J.T. Conklin jtc@cygnus.com + + + + J.T. Jang keith@email.gcn.net.tw + + + + Jack jack@zeus.xtalwind.net + + + + Jacob Bohn Lorensen jacob@jblhome.ping.mk + + + + Jagane D Sundar jagane@netcom.com + + + + Jake Hamby jehamby@lightside.com + + + + James Clark jjc@jclark.com + + + + James D. Stewart jds@c4systm.com + + + + James Jegers jimj@miller.cs.uwm.edu + + + + James Raynard + fhackers@jraynard.demon.co.uk + + + + James T. Liu jtliu@phlebas.rockefeller.edu + + + + James da Silva jds@cs.umd.edu + + + + Jan Conard + charly@fachschaften.tu-muenchen.de + + + + Jan Koum jkb@FreeBSD.org + + + + Janick Taillandier + Janick.Taillandier@ratp.fr + + + + Janusz Kokot janek@gaja.ipan.lublin.pl + + + + Jarle Greipsland jarle@idt.unit.no + + + + Jason Garman init@risen.org + + + + Jason Thorpe thorpej@NetBSD.org + + + + Jason Wright jason@OpenBSD.org + + + + Jason Young + doogie@forbidden-donut.anet-stl.com + + + + Javier Martin Rueda jmrueda@diatel.upm.es + + + + Jay Fenlason hack@datacube.com + + + + Jaye Mathisen mrcpu@cdsnet.net + + + + Jeff Bartig jeffb@doit.wisc.edu + + + + Jeff Forys jeff@forys.cranbury.nj.us + + + + Jeff Kletsky Jeff@Wagsky.com + + + + Jeffrey Evans evans@scnc.k12.mi.us + + + + Jeffrey Wheat jeff@cetlink.net + + + + Jens Schweikhardt + schweikh@ito.uni-stuttgart.de + + + + Jeremy Allison jallison@whistle.com + + + + Jeremy Chatfield jdc@xinside.com + + + + Jeremy Lea reg@shale.csir.co.za + + + + Jeremy Prior unknown + + + + Jeroen Ruigrok/Asmodai asmodai@wxs.nl + + + + Jesse Rosenstock jmr@ugcs.caltech.edu + + + + Jian-Da Li jdli@csie.nctu.edu.tw + + + + Jim Babb babb@FreeBSD.org + + + + Jim Binkley jrb@cs.pdx.edu + + + + Jim Carroll jim@carroll.com + + + + Jim Flowers jflowers@ezo.net + + + + Jim Leppek jleppek@harris.com + + + + Jim Lowe james@cs.uwm.edu + + + + Jim Mattson jmattson@sonic.net + + + + Jim Mercer jim@komodo.reptiles.org + + + + Jim Mock jim@phrantic.phear.net + + + + Jim Wilson wilson@moria.cygnus.com + + + + Jimbo Bahooli + griffin@blackhole.iceworld.org + + + + Jin Guojun jin@george.lbl.gov + + + + Joachim Kuebart unknown + + + + Joao Carlos Mendes Luis jonny@jonny.eng.br + + + + Jochen Pohl jpo.drs@sni.de + + + + Joe "Marcus" Clarke marcus@miami.edu + + + + Joe Abley jabley@clear.co.nz + + + + Joe Jih-Shian Lu jslu@dns.ntu.edu.tw + + + + Joe Orthoefer j_orthoefer@tia.net + + + + Joe Traister traister@mojozone.org + + + + Joel Faedi Joel.Faedi@esial.u-nancy.fr + + + + Joel Ray Holveck joelh@gnu.org + + + + Joel Sutton sutton@aardvark.apana.org.au + + + + Johan Granlund johan@granlund.nu + + + + Johan Karlsson k@numeri.campus.luth.se + + + + Johan Larsson johan@moon.campus.luth.se + + + + Johann Tonsing jtonsing@mikom.csir.co.za + + + + Johannes Helander unknown + + + + Johannes Stille unknown + + + + John Baldwin jobaldwi@vt.edu + + + + John Beckett jbeckett@southern.edu + + + + John Beukema jbeukema@hk.super.net + + + + John Brezak unknown + + + + John Capo jc@irbs.com + + + + John F. Woods jfw@jfwhome.funhouse.com + + + + John Goerzen + jgoerzen@alexanderwohl.complete.org + + + + John Hay jhay@mikom.csir.co.za + + + + John Heidemann johnh@isi.edu + + + + John Hood cgull@owl.org + + + + John Kohl unknown + + + + John Lind john@starfire.mn.org + + + + John Mackin john@physiol.su.oz.au + + + + John P johnp@lodgenet.com + + + + John Perry perry@vishnu.alias.net + + + + John Preisler john@vapornet.com + + + + John Rochester jr@cs.mun.ca + + + + John Sadler john_sadler@alum.mit.edu + + + + John Saunders john@pacer.nlc.net.au + + + + John W. DeBoskey jwd@unx.sas.com + + + + John Wehle john@feith.com + + + + John Woods jfw@eddie.mit.edu + + + + Jon Morgan morgan@terminus.trailblazer.com + + + + Jonathan H N Chin jc254@newton.cam.ac.uk + + + + Jonathan Hanna + jh@pc-21490.bc.rogers.wave.ca + + + + Jorge Goncalves j@bug.fe.up.pt + + + + Jorge M. Goncalves ee96199@tom.fe.up.pt + + + + Jos Backus jbackus@plex.nl + + + + Jose M. Alcaide jose@we.lc.ehu.es + + + + Josef Grosch + jgrosch@superior.mooseriver.com + + + + Josef Karthauser joe@uk.freebsd.org + + + + Joseph Stein joes@seaport.net + + + + Josh Gilliam josh@quick.net + + + + Josh Tiefenbach josh@ican.net + + + + Juergen Lock nox@jelal.hb.north.de + + + + Juha Inkari inkari@cc.hut.fi + + + + Jukka A. Ukkonen jua@iki.fi + + + + Julian Assange proff@suburbia.net + + + + Julian Coleman j.d.coleman@ncl.ac.uk + + + + Julian H. Stacey jhs@freebsd.org + + + + Julian Jenkins kaveman@magna.com.au + + + + Junichi Satoh junichi@jp.freebsd.org + + + + Junji SAKAI sakai@jp.freebsd.org + + + + Junya WATANABE junya-w@remus.dti.ne.jp + + + + K.Higashino a00303@cc.hc.keio.ac.jp + + + + KUNISHIMA Takeo kunishi@c.oka-pu.ac.jp + + + + Kai Vorma vode@snakemail.hut.fi + + + + Kaleb S. Keithley kaleb@ics.com + + + + Kaneda Hiloshi vanitas@ma3.seikyou.ne.jp + + + + Kapil Chowksey kchowksey@hss.hns.com + + + + Karl Denninger karl@mcs.com + + + + Karl Dietz Karl.Dietz@triplan.com + + + + Karl Lehenbauer karl@NeoSoft.com + + + + Kato Takenori + kato@eclogite.eps.nagoya-u.ac.jp + + + + Kauzo Horikawa h-horik@yk.rim.or.jp + + + + Kawanobe Koh kawanobe@st.rim.or.jp + + + + Kazuhiko Kiriyama kiri@kiri.toba-cmt.ac.jp + + + + Kazuo Horikawa horikawa@jp.FreeBSD.org + + + + Kees Jan Koster kjk1@ukc.ac.uk + + + + Keith Bostic bostic@bostic.com + + + + Keith E. Walker unknown + + + + Keith Moore unknown + + + + Keith Sklower unknown + + + + Ken Hornstein unknown + + + + Ken Key key@cs.utk.edu + + + + Ken Mayer kmayer@freegate.com + + + + Kenji Saito marukun@mx2.nisiq.net + + + + Kenji Tomita tommyk@da2.so-net.or.jp + + + + Kenneth Furge kenneth.furge@us.endress.com + + + + Kenneth Monville desmo@bandwidth.org + + + + Kenneth R. Westerback krw@tcn.net + + + + Kenneth Stailey kstailey@gnu.ai.mit.edu + + + + Kent Talarico kent@shipwreck.tsoft.net + + + + Kent Vander Velden graphix@iastate.edu + + + + Kentaro Inagaki JBD01226@niftyserve.ne.jp + + + + Kevin Bracey kbracey@art.acorn.co.uk + + + + Kevin Day toasty@dragondata.com + + + + Kevin Lahey kml@nas.nasa.gov + + + + Kevin Street street@iname.com + + + + Kevin Van Maren vanmaren@fast.cs.utah.edu + + + + Kiroh HARADA kiroh@kh.rim.or.jp + + + + Klaus Klein kleink@layla.inka.de + + + + Klaus-J. Wolf Yanestra@t-online.de + + + + Koichi Sato copan@ppp.fastnet.or.jp + + + + Kostya Lukin lukin@okbmei.msk.su + + + + Kouichi Hirabayashi kh@mogami-wire.co.jp + + + + Kurt D. Zeilenga Kurt@Boolean.NET + + + + Kurt Olsen kurto@tiny.mcs.usu.edu + + + + L. Jonas Olsson + ljo@ljo-slip.DIALIN.CWRU.Edu + + + + Lars Köller + Lars.Koeller@Uni-Bielefeld.DE + + + + Larry Altneu larry@ALR.COM + + + + Laurence Lopez lopez@mv.mv.com + + + + Lee Cremeans lcremean@tidalwave.net + + + + Liang Tai-hwa + avatar@www.mmlab.cse.yzu.edu.tw + + + + Lon Willett lon%softt.uucp@math.utah.edu + + + + Louis A. Mamakos louie@TransSys.COM + + + + Louis Mamakos loiue@TransSys.com + + + + Lucas James Lucas.James@ldjpc.apana.org.au + + + + Lyndon Nerenberg lyndon@orthanc.com + + + + M.C. Wong unknown + + + + MANTANI Nobutaka nobutaka@nobutaka.com + + + + MIHIRA Sanpei Yoshiro sanpei@sanpei.org + + + + MITA Yoshio mita@jp.FreeBSD.ORG + + + + MITSUNAGA Noriaki + mitchy@er.ams.eng.osaka-u.ac.jp + + + + MOROHOSHI Akihiko moro@race.u-tokyo.ac.jp + + + + Magnus Enbom dot@tinto.campus.luth.se + + + + Mahesh Neelakanta mahesh@gcomm.com + + + + Makoto MATSUSHITA matusita@jp.freebsd.org + + + + Makoto WATANABE + watanabe@zlab.phys.nagoya-u.ac.jp + + + + Malte Lance malte.lance@gmx.net + + + + Manu Iyengar + iyengar@grunthos.pscwa.psca.com + + + + Marc Frajola marc@dev.com + + + + Marc Ramirez mrami@mramirez.sy.yale.edu + + + + Marc Slemko marcs@znep.com + + + + Marc van Kempen wmbfmk@urc.tue.nl + + + + Marcel Moolenaar marcel@scc.nl + + + + Mario Sergio Fujikawa Ferreira + lioux@gns.com.br + + + + Mark Andrews unknown + + + + Mark Cammidge mark@gmtunx.ee.uct.ac.za + + + + Mark Diekhans markd@grizzly.com + + + + Mark Huizer xaa@stack.nl + + + + Mark J. Taylor mtaylor@cybernet.com + + + + Mark Krentel krentel@rice.edu + + + + Mark Mayo markm@vmunix.com + + + + Mark Thompson thompson@tgsoft.com + + + + Mark Tinguely tinguely@plains.nodak.edu + + + + Mark Treacy unknown + + + + Mark Valentine mark@linus.demon.co.uk + + + + Martin Birgmeier + + + + Martin Ibert mib@ppe.bb-data.de + + + + Martin Kammerhofer dada@sbox.tu-graz.ac.at + + + + Martin Renters martin@tdc.on.ca + + + + Martti Kuparinen + erakupa@kk.etx.ericsson.se + + + + Masachika ISHIZUKA + ishizuka@isis.min.ntt.jp + + + + Mas.TAKEMURA unknown + + + + Masafumi NAKANE max@wide.ad.jp + + + + Masahiro Sekiguchi + seki@sysrap.cs.fujitsu.co.jp + + + + Masanobu Saitoh msaitoh@spa.is.uec.ac.jp + + + + Masanori Kanaoka kana@saijo.mke.mei.co.jp + + + + Masanori Kiriake seiken@ncs.co.jp + + + + Masatoshi TAMURA + tamrin@shinzan.kuee.kyoto-u.ac.jp + + + + Mats Lofkvist mal@algonet.se + + + + Matt Bartley mbartley@lear35.cytex.com + + + + Matt Thomas matt@3am-software.com + + + + Matt White mwhite+@CMU.EDU + + + + Matthew C. Mead mmead@Glock.COM + + + + Matthew Cashdollar mattc@rfcnet.com + + + + Matthew Flatt mflatt@cs.rice.edu + + + + Matthew Fuller fullermd@futuresouth.com + + + + Matthew N. Dodd winter@jurai.net + + + + Matthew Stein matt@bdd.net + + + + Matthias Pfaller leo@dachau.marco.de + + + + Matthias Scheler tron@netbsd.org + + + + Mattias Gronlund + Mattias.Gronlund@sa.erisoft.se + + + + Mattias Pantzare pantzer@ludd.luth.se + + + + Maurice Castro + maurice@planet.serc.rmit.edu.au + + + + Max Euston meuston@jmrodgers.com + + + + Max Khon fjoe@husky.iclub.nsu.ru + + + + Maxim Bolotin max@rsu.ru + + + + Micha Class + michael_class@hpbbse.bbn.hp.com + + + + Michael Butler imb@scgt.oz.au + + + + Michael Butschky butsch@computi.erols.com + + + + Michael Clay mclay@weareb.org + + + + Michael Elbel me@FreeBSD.ORG + + + + Michael Galassi nerd@percival.rain.com + + + + Michael Hancock michaelh@cet.co.jp + + + + Michael Hohmuth hohmuth@inf.tu-dresden.de + + + + Michael Perlman canuck@caam.rice.edu + + + + Michael Petry petry@netwolf.NetMasters.com + + + + Michael Reifenberger root@totum.plaut.de + + + + Michael Searle searle@longacre.demon.co.uk + + + + Michal Listos mcl@Amnesiac.123.org + + + + Michio Karl Jinbo + karl@marcer.nagaokaut.ac.jp + + + + Miguel Angel Sagreras + msagre@cactus.fi.uba.ar + + + + Mihoko Tanaka m_tonaka@pa.yokogawa.co.jp + + + + Mika Nystrom mika@cs.caltech.edu + + + + Mikael Hybsch micke@dynas.se + + + + Mikael Karpberg + karpen@ocean.campus.luth.se + + + + Mike Del repenting@hotmail.com + + + + Mike Durian durian@plutotech.com + + + + Mike Durkin mdurkin@tsoft.sf-bay.org + + + + Mike E. Matsnev mike@azog.cs.msu.su + + + + Mike Evans mevans@candle.com + + + + Mike Grupenhoff kashmir@umiacs.umd.edu + + + + Mike Hibler mike@marker.cs.utah.edu + + + + Mike Karels unknown + + + + Mike McGaughey mmcg@cs.monash.edu.au + + + + Mike Meyer mwm@shiva.the-park.com + + + + Mike Mitchell mitchell@ref.tfs.com + + + + Mike Murphy mrm@alpharel.com + + + + Mike Peck mike@binghamton.edu + + + + Mike Spengler mks@msc.edu + + + + Mikhail A. Sokolov mishania@demos.su + + + + Mikhail Teterin mi@aldan.ziplink.net + + + + Ming-I Hseh PA@FreeBSD.ee.Ntu.edu.TW + + + + Mitsuru IWASAKI iwasaki@pc.jaring.my + + + + Monte Mitzelfelt monte@gonefishing.org + + + + Morgan Davis root@io.cts.com + + + + Mostyn Lewis mostyn@mrl.com + + + + Motoyuki Kasahara m-kasahr@sra.co.jp + + + + Motoyuki Konno motoyuki@snipe.rim.or.jp + + + + Munechika Sumikawa sumikawa@kame.net + + + + Murray Stokely murray@cdrom.com + + + + N.G.Smith ngs@sesame.hensa.ac.uk + + + + NAGAO Tadaaki nagao@cs.titech.ac.jp + + + + NAKAJI Hiroyuki + nakaji@zeisei.dpri.kyoto-u.ac.jp + + + + NAKAMURA Kazushi nkazushi@highway.or.jp + + + + NAKAMURA Motonori + motonori@econ.kyoto-u.ac.jp + + + + NIIMI Satoshi sa2c@and.or.jp + + + + NOKUBI Hirotaka h-nokubi@yyy.or.jp + + + + Nadav Eiron nadav@barcode.co.il + + + + Nanbor Wang nw1@cs.wustl.edu + + + + Naofumi Honda + honda@Kururu.math.sci.hokudai.ac.jp + + + + Naoki Hamada nao@tom-yam.or.jp + + + + Narvi narvi@haldjas.folklore.ee + + + + Nathan Dorfman nathan@rtfm.net + + + + Neal Fachan kneel@ishiboo.com + + + + Neil Blakey-Milner nbm@rucus.ru.ac.za + + + + Niall Smart rotel@indigo.ie + + + + Nick Barnes Nick.Barnes@pobox.com + + + + Nick Handel nhandel@NeoSoft.com + + + + Nick Hilliard nick@foobar.org + + + + Nick Sayer nsayer@quack.kfu.com + + + + Nick Williams njw@cs.city.ac.uk + + + + Nickolay N. Dudorov nnd@itfs.nsk.su + + + + Niklas Hallqvist niklas@filippa.appli.se + + + + Nisha Talagala nisha@cs.berkeley.edu + + + + No Name ZW6T-KND@j.asahi-net.or.jp + + + + No Name adrian@virginia.edu + + + + No Name alex@elvisti.kiev.ua + + + + No Name anto@netscape.net + + + + No Name bobson@egg.ics.nitch.ac.jp + + + + No Name bovynf@awe.be + + + + No Name burg@is.ge.com + + + + No Name chris@gnome.co.uk + + + + No Name colsen@usa.net + + + + No Name coredump@nervosa.com + + + + No Name dannyman@arh0300.urh.uiuc.edu + + + + No Name davids@SECNET.COM + + + + No Name derek@free.org + + + + No Name devet@adv.IAEhv.nl + + + + No Name djv@bedford.net + + + + No Name dvv@sprint.net + + + + No Name enami@ba2.so-net.or.jp + + + + No Name flash@eru.tubank.msk.su + + + + No Name flash@hway.ru + + + + No Name fn@pain.csrv.uidaho.edu + + + + No Name gclarkii@netport.neosoft.com + + + + No Name gordon@sheaky.lonestar.org + + + + No Name graaf@iae.nl + + + + No Name greg@greg.rim.or.jp + + + + No Name grossman@cygnus.com + + + + No Name gusw@fub46.zedat.fu-berlin.de + + + + No Name hfir@math.rochester.edu + + + + No Name hnokubi@yyy.or.jp + + + + No Name iaint@css.tuu.utas.edu.au + + + + No Name invis@visi.com + + + + No Name ishisone@sra.co.jp + + + + No Name iverson@lionheart.com + + + + No Name jpt@magic.net + + + + No Name junker@jazz.snu.ac.kr + + + + No Name k-sugyou@ccs.mt.nec.co.jp + + + + No Name kenji@reseau.toyonaka.osaka.jp + + + + No Name kfurge@worldnet.att.net + + + + No Name lh@aus.org + + + + No Name lhecking@nmrc.ucc.ie + + + + No Name mrgreen@mame.mu.oz.au + + + + No Name nakagawa@jp.freebsd.org + + + + No Name ohki@gssm.otsuka.tsukuba.ac.jp + + + + No Name owaki@st.rim.or.jp + + + + No Name pechter@shell.monmouth.com + + + + No Name pete@pelican.pelican.com + + + + No Name pritc003@maroon.tc.umn.edu + + + + No Name risner@stdio.com + + + + No Name roman@rpd.univ.kiev.ua + + + + No Name root@ns2.redline.ru + + + + No Name root@uglabgw.ug.cs.sunysb.edu + + + + No Name stephen.ma@jtec.com.au + + + + No Name sumii@is.s.u-tokyo.ac.jp + + + + No Name takas-su@is.aist-nara.ac.jp + + + + No Name tamone@eig.unige.ch + + + + No Name tjevans@raleigh.ibm.com + + + + No Name tony-o@iij.ad.jp amurai@spec.co.jp + + + + No Name torii@tcd.hitachi.co.jp + + + + No Name uenami@imasy.or.jp + + + + No Name uhlar@netlab.sk + + + + No Name vode@hut.fi + + + + No Name wlloyd@mpd.ca + + + + No Name wlr@furball.wellsfargo.com + + + + No Name wmbfmk@urc.tue.nl + + + + No Name yamagata@nwgpc.kek.jp + + + + No Name ziggy@ryan.org + + + + Nobuhiro Yasutomi nobu@psrc.isac.co.jp + + + + Nobuyuki Koganemaru + kogane@koganemaru.co.jp + + + + Norio Suzuki nosuzuki@e-mail.ne.jp + + + + Noritaka Ishizumi graphite@jp.FreeBSD.ORG + + + + Noriyuki Soda soda@sra.co.jp + + + + Olaf Wagner wagner@luthien.in-berlin.de + + + + Oleg Sharoiko os@rsu.ru + + + + Oliver Breuninger ob@seicom.NET + + + + Oliver Friedrichs oliver@secnet.com + + + + Oliver Fromme + oliver.fromme@heim3.tu-clausthal.de + + + + Oliver Laumann + net@informatik.uni-bremen.de + + + + Oliver Oberdorf oly@world.std.com + + + + Olof Johansson offe@ludd.luth.se + + + + Osokin Sergey aka oZZ ozz@freebsd.org.ru + + + + Pace Willisson pace@blitz.com + + + + Paco Rosich rosich@modico.eleinf.uv.es + + + + Palle Girgensohn girgen@partitur.se + + + + Parag Patel parag@cgt.com + + + + Pascal Pederiva pascal@zuo.dec.com + + + + Pasvorn Boonmark boonmark@juniper.net + + + + Patrick Gardella patrick@cre8tivegroup.com + + + + Patrick Hausen unknown + + + + Paul Antonov apg@demos.su + + + + Paul F. Werkowski unknown + + + + Paul Fox pgf@foxharp.boston.ma.us + + + + Paul Koch koch@thehub.com.au + + + + Paul Kranenburg pk@NetBSD.org + + + + Paul Mackerras paulus@cs.anu.edu.au + + + + Paul Popelka paulp@uts.amdahl.com + + + + Paul S. LaFollette, Jr. unknown + + + + Paul Saab paul@mu.org + + + + Paul Sandys myj@nyct.net + + + + Paul T. Root proot@horton.iaces.com + + + + Paul Vixie paul@vix.com + + + + Paulo Menezes paulo@isr.uc.pt + + + + Paulo Menezes pm@dee.uc.pt + + + + Pedro A M Vazquez vazquez@IQM.Unicamp.BR + + + + Pedro Giffuni giffunip@asme.org + + + + Pete Bentley pete@demon.net + + + + Peter Childs pjchilds@imforei.apana.org.au + + + + Peter Cornelius pc@inr.fzk.de + + + + Peter Haight peterh@prognet.com + + + + Peter Jeremy perer.jeremy@alcatel.com.au + + + + Peter M. Chen pmchen@eecs.umich.edu + + + + Peter Much peter@citylink.dinoex.sub.org + + + + Peter Olsson unknown + + + + Peter Philipp pjp@bsd-daemon.net + + + + Peter Stubbs PETERS@staidan.qld.edu.au + + + + Phil Maker pjm@cs.ntu.edu.au + + + + Phil Sutherland + philsuth@mycroft.dialix.oz.au + + + + Phil Taylor phil@zipmail.co.uk + + + + Philip Musumeci philip@rmit.edu.au + + + + Pierre Y. Dampure pierre.dampure@k2c.co.uk + + + + Pius Fischer pius@ienet.com + + + + Pomegranate daver@flag.blackened.net + + + + Powerdog Industries + kevin.ruddy@powerdog.com + + + + R. Kym Horsell + + + + Rajesh Vaidheeswarran rv@fore.com + + + + Ralf Friedl friedl@informatik.uni-kl.de + + + + Randal S. Masutani randal@comtest.com + + + + Randall Hopper rhh@ct.picker.com + + + + Randall W. Dean rwd@osf.org + + + + Randy Bush rbush@bainbridge.verio.net + + + + Reinier Bezuidenhout + rbezuide@mikom.csir.co.za + + + + Remy Card Remy.Card@masi.ibp.fr + + + + Ricardas Cepas rch@richard.eu.org + + + + Richard Henderson richard@atheist.tamu.edu + + + + Richard Hwang rhwang@bigpanda.com + + + + Richard J Kuhns rjk@watson.grauel.com + + + + Richard M. Neswold + rneswold@drmemory.fnal.gov + + + + Richard Seaman, Jr. dick@tar.com + + + + Richard Stallman rms@gnu.ai.mit.edu + + + + Richard Straka straka@user1.inficad.com + + + + Richard Tobin richard@cogsci.ed.ac.uk + + + + Richard Wackerbarth rkw@Dataplex.NET + + + + Richard Winkel rich@math.missouri.edu + + + + Richard Wiwatowski rjwiwat@adelaide.on.net + + + + Rick Macklem rick@snowhite.cis.uoguelph.ca + + + + Rick Macklin unknown + + + + Rob Austein sra@epilogue.com + + + + Rob Mallory rmallory@qualcomm.com + + + + Rob Snow rsnow@txdirect.net + + + + Robert Crowe bob@speakez.com + + + + Robert D. Thrush rd@phoenix.aii.com + + + + Robert Eckardt + roberte@MEP.Ruhr-Uni-Bochum.de + + + + Robert Sanders rsanders@mindspring.com + + + + Robert Sexton robert@kudra.com + + + + Robert Shady rls@id.net + + + + Robert Swindells swindellsr@genrad.co.uk + + + + Robert Watson robert@cyrus.watson.org + + + + Robert Withrow witr@rwwa.com + + + + Robert Yoder unknown + + + + Robin Carey + robin@mailgate.dtc.rankxerox.co.uk + + + + Roger Hardiman roger@cs.strath.ac.uk + + + + Roland Jesse jesse@cs.uni-magdeburg.de + + + + Ron Bickers rbickers@intercenter.net + + + + Ron Lenk rlenk@widget.xmission.com + + + + Ronald Kuehn kuehn@rz.tu-clausthal.de + + + + Rudolf Cejka unknown + + + + Ruslan Belkin rus@home2.UA.net + + + + Ruslan Ermilov ru@ucb.crimea.ua + + + + Ruslan Shevchenko rssh@cam.grad.kiev.ua + + + + Russell L. Carter rcarter@pinyon.org + + + + Russell Vincent rv@groa.uct.ac.za + + + + Ryan Younce ryany@pobox.com + + + + SANETO Takanori sanewo@strg.sony.co.jp + + + + SAWADA Mizuki miz@qb3.so-net.ne.jp + + + + SUGIMURA Takashi sugimura@jp.FreeBSD.ORG + + + + SURANYI Peter + suranyip@jks.is.tsukuba.ac.jp + + + + Sakari Jalovaara sja@tekla.fi + + + + Sam Hartman hartmans@mit.edu + + + + Samuel Lam skl@ScalableNetwork.com + + + + Sander Vesik sander@haldjas.folklore.ee + + + + Sandro Sigala ssigala@globalnet.it + + + + Sascha Blank blank@fox.uni-trier.de + + + + Sascha Wildner swildner@channelz.GUN.de + + + + Satoh Junichi junichi@astec.co.jp + + + + Satoshi Taoka + taoka@infonets.hiroshima-u.ac.jp + + + + Scot Elliott scot@poptart.org + + + + Scot W. Hetzel hetzels@westbend.net + + + + Scott A. Kenney saken@rmta.ml.org + + + + Scott Blachowicz + scott.blachowicz@seaslug.org + + + + Scott Burris scott@pita.cns.ucla.edu + + + + Scott Hazen Mueller scott@zorch.sf-bay.org + + + + Scott Michel scottm@cs.ucla.edu + + + + Scott Reynolds scott@clmqt.marquette.mi.us + + + + Sebastian Strollo seb@erix.ericsson.se + + + + Seigou TANIMURA + tanimura@naklab.dnj.ynu.ac.jp + + + + Serge A. Babkin babkin@hq.icb.chel.su + + + + Serge V. Vakulenko vak@zebub.msk.su + + + + Sergei Chechetkin + csl@whale.sunbay.crimea.ua + + + + Sergei S. Laskavy laskavy@pc759.cs.msu.su + + + + Sergey Gershtein sg@mplik.ru + + + + Sergey Potapov sp@alkor.ru + + + + Sergey Shkonda serg@bcs.zp.ua + + + + Sergey V.Dorokhov svd@kbtelecom.nalnet.ru + + + + Sergio Lenzi lenzi@bsi.com.br + + + + Shaun Courtney shaun@emma.eng.uct.ac.za + + + + Shawn M. Carey smcarey@mailbox.syr.edu + + + + Sheldon Hearn axl@iafrica.com + + + + Shigio Yamaguchi shigio@wafu.netgate.net + + + + Shunsuke Akiyama akiyama@jp.freebsd.org + + + + Simon simon@masi.ibp.fr + + + + Simon Burge simonb@telstra.com.au + + + + Simon J Gerraty sjg@melb.bull.oz.au + + + + Simon Marlow simonm@dcs.gla.ac.uk + + + + Simon Shapiro shimon@simon-shapiro.org + + + + Sin'ichiro MIYATANI siu@phaseone.co.jp + + + + Slaven Rezic eserte@cs.tu-berlin.de + + + + Soochon Radee slr@mitre.org + + + + Soren Dayton csdayton@midway.uchicago.edu + + + + Soren Dossing sauber@netcom.com + + + + Soren S. Jorvang soren@dt.dk + + + + Stefan Bethke stb@hanse.de + + + + Stefan Eggers seggers@semyam.dinoco.de + + + + Stefan Moeding s.moeding@ndh.net + + + + Stefan Petri unknown + + + + Stefan `Sec` Zehl sec@42.org + + + + Steinar Haug sthaug@nethelp.no + + + + Stephane E. Potvin sepotvin@videotron.ca + + + + Stephane Legrand stephane@lituus.fr + + + + Stephen Clawson + sclawson@marker.cs.utah.edu + + + + Stephen F. Combs combssf@salem.ge.com + + + + Stephen Farrell stephen@farrell.org + + + + Stephen Hocking sysseh@devetir.qld.gov.au + + + + Stephen J. Roznowski sjr@home.net + + + + Stephen McKay syssgm@devetir.qld.gov.au + + + + Stephen Melvin melvin@zytek.com + + + + Steve Bauer sbauer@rock.sdsmt.edu + + + + Steve Deering unknown + + + + Steve Gerakines steve2@genesis.tiac.net + + + + Steve Gericke steveg@comtrol.com + + + + Steve Piette steve@simon.chi.il.US + + + + Steve Schwarz schwarz@alpharel.com + + + + Steven G. Kargl + kargl@troutmask.apl.washington.edu + + + + Steven H. Samorodin samorodi@NUXI.com + + + + Steven McCanne mccanne@cs.berkeley.edu + + + + Steven Plite splite@purdue.edu + + + + Steven Wallace unknown + + + + Stuart Henderson + stuart@internationalschool.co.uk + + + + Sue Blake sue@welearn.com.au + + + + Sugiura Shiro ssugiura@duo.co.jp + + + + Sujal Patel smpatel@wam.umd.edu + + + + Sune Stjerneby stjerneby@usa.net + + + + Suzuki Yoshiaki + zensyo@ann.tama.kawasaki.jp + + + + Tadashi Kumano kumano@strl.nhk.or.jp + + + + Taguchi Takeshi taguchi@tohoku.iij.ad.jp + + + + Takahashi Yoshihiro nyan@dd.catv.ne.jp + + + + Takahiro Yugawa yugawa@orleans.rim.or.jp + + + + Takanori Watanabe + takawata@shidahara1.planet.sci.kobe-u.ac.jp + + + + Takashi Mega mega@minz.org + + + + Takashi Uozu j1594016@ed.kagu.sut.ac.jp + + + + Takayuki Ariga a00821@cc.hc.keio.ac.jp + + + + Takeru NAIKI naiki@bfd.es.hokudai.ac.jp + + + + Takeshi Amaike amaike@iri.co.jp + + + + Takeshi MUTOH mutoh@info.nara-k.ac.jp + + + + Takeshi Ohashi + ohashi@mickey.ai.kyutech.ac.jp + + + + Takeshi WATANABE + watanabe@crayon.earth.s.kobe-u.ac.jp + + + + Takuya SHIOZAKI + tshiozak@makino.ise.chuo-u.ac.jp + + + + Tatoku Ogaito tacha@tera.fukui-med.ac.jp + + + + Tatsumi HOSOKAWA hosokawa@jp.FreeBSD.org + + + + Ted Buswell tbuswell@mediaone.net + + + + Ted Faber faber@isi.edu + + + + Ted Lemon unknown + + + + Terry Lambert terry@lambert.org + + + + Terry Lee terry@uivlsi.csl.uiuc.edu + + + + Tetsuya Furukawa tetsuya@secom-sis.co.jp + + + + Theo de Raadt deraadt@OpenBSD.org + + + + Thomas thomas@mathematik.uni-Bremen.de + + + + Thomas D. Dean tomdean@ix.netcom.com + + + + Thomas David Rivers rivers@dignus.com + + + + Thomas G. McWilliams tgm@netcom.com + + + + Thomas Gellekum + thomas@ghpc8.ihf.rwth-aachen.de + + + + Thomas Graichen + graichen@omega.physik.fu-berlin.de + + + + Thomas König + Thomas.Koenig@ciw.uni-karlsruhe.de + + + + Thomas Ptacek unknown + + + + Thomas Stromberg tstrombe@rtci.com + + + + Thomas Valentino Crimi + tcrimi+@andrew.cmu.edu + + + + Thomas Wintergerst thomas@lemur.nord.de + + + + Þórður Ívarsson + totii@est.is + + + + Tim Kientzle kientzle@netcom.com + + + + Tim Singletary + tsingle@sunland.gsfc.nasa.gov + + + + Tim Wilkinson tim@sarc.city.ac.uk + + + + Timo J. Rinne tri@iki.fi + + + + Todd Miller millert@openbsd.org + + + + Tom root@majestix.cmr.no + + + + Tom tom@sdf.com + + + + Tom Gray - DCA dcasba@rain.org + + + + Tom Hukins tom@eborcom.com + + + + Tom Jobbins tom@tom.tj + + + + Tom Pusateri pusateri@juniper.net + + + + Tom Rush tarush@mindspring.com + + + + Tom Samplonius tom@misery.sdf.com + + + + Tomohiko Kurahashi + kura@melchior.q.t.u-tokyo.ac.jp + + + + Tony Kimball alk@Think.COM + + + + Tony Li tli@jnx.com + + + + Tony Lynn wing@cc.nsysu.edu.tw + + + + Torbjorn Granlund tege@matematik.su.se + + + + Toshihiko ARAI toshi@tenchi.ne.jp + + + + Toshihiko SHIMOKAWA toshi@tea.forus.or.jp + + + + Toshihiro Kanda candy@kgc.co.jp + + + + Toshiomi Moriki + Toshiomi.Moriki@ma1.seikyou.ne.jp + + + + Trefor S. trefor@flevel.co.uk + + + + Trevor Blackwell tlb@viaweb.com + + + + URATA Shuichiro s-urata@nmit.tmg.nec.co.jp + + + + Ugo Paternostro paterno@dsi.unifi.it + + + + Ulf Kieber kieber@sax.de + + + + Ulli Linzen ulli@perceval.camelot.de + + + + Ustimenko Semen semen@iclub.nsu.ru + + + + Uwe Arndt arndt@mailhost.uni-koblenz.de + + + + Vadim Chekan vadim@gc.lviv.ua + + + + Vadim Kolontsov vadim@tversu.ac.ru + + + + Vadim Mikhailov mvp@braz.ru + + + + Van Jacobson van@ee.lbl.gov + + + + Vasily V. Grechishnikov + bazilio@ns1.ied-vorstu.ac.ru + + + + Vasim Valejev vasim@uddias.diaspro.com + + + + Vernon J. Schryver vjs@mica.denver.sgi.com + + + + Vic Abell abe@cc.purdue.edu + + + + Ville Eerola ve@sci.fi + + + + Vincent Poy vince@venus.gaianet.net + + + + Vincenzo Capuano + VCAPUANO@vmprofs.esoc.esa.de + + + + Virgil Champlin champlin@pa.dec.com + + + + Vladimir A. Jakovenko + vovik@ntu-kpi.kiev.ua + + + + Vladimir Kushnir kushn@mail.kar.net + + + + Vsevolod Lobko seva@alex-ua.com + + + + W. Gerald Hicks wghicks@bellsouth.net + + + + W. Richard Stevens rstevens@noao.edu + + + + Walt Howard howard@ee.utah.edu + + + + Warren Toomey wkt@csadfa.cs.adfa.oz.au + + + + Wayne Scott wscott@ichips.intel.com + + + + Werner Griessl + werner@btp1da.phy.uni-bayreuth.de + + + + Wes Santee wsantee@wsantee.oz.net + + + + Wietse Venema wietse@wzv.win.tue.nl + + + + Wilfredo Sanchez wsanchez@apple.com + + + + Wiljo Heinen wiljo@freeside.ki.open.de + + + + Wilko Bulte wilko@yedi.iaf.nl + + + + Willem Jan Withagen wjw@surf.IAE.nl + + + + William Jolitz withheld + + + + William Liao william@tale.net + + + + Wojtek Pilorz + wpilorz@celebris.bdk.lublin.pl + + + + Wolfgang Helbig helbig@ba-stuttgart.de + + + + Wolfgang Solfrank ws@tools.de + + + + Wolfgang Stanglmeier wolf@FreeBSD.org + + + + Wu Ching-hong woju@FreeBSD.ee.Ntu.edu.TW + + + + Yarema yds@ingress.com + + + + Yaroslav Terletsky ts@polynet.lviv.ua + + + + Yen-Shuo Su yssu@CCCA.NCTU.edu.tw + + + + Ying-Chieh Liao ijliao@csie.NCTU.edu.tw + + + + Yixin Jin yjin@rain.cs.ucla.edu + + + + Yoshiaki Uchikawa yoshiaki@kt.rim.or.jp + + + + Yoshihiko OHTA yohta@bres.tsukuba.ac.jp + + + + Yoshihisa NAKAGAWA + y-nakaga@ccs.mt.nec.co.jp + + + + Yoshikazu Goto gotoh@ae.anritsu.co.jp + + + + Yoshimasa Ohnishi + ohnishi@isc.kyutech.ac.jp + + + + Yoshishige Arai ryo2@on.rim.or.jp + + + + Yuichi MATSUTAKA matutaka@osa.att.ne.jp + + + + Yujiro MIYATA + miyata@bioele.nuee.nagoya-u.ac.jp + + + + Yukihiro Nakai nacai@iname.com + + + + Yusuke Nawano azuki@azkey.org + + + + Yuval Yarom yval@cs.huji.ac.il + + + + Yves Fonk yves@cpcoup5.tn.tudelft.nl + + + + Yves Fonk yves@dutncp8.tn.tudelft.nl + + + + Zach Heilig zach@gaffaneys.com + + + + Zahemszhky Gabor zgabor@code.hu + + + + Zhong Ming-Xun zmx@mail.CDPA.nsysu.edu.tw + + + + arci vega@sophia.inria.fr + + + + der Mouse mouse@Collatz.McRCIM.McGill.EDU + + + + frf frf@xocolatl.com + + + + Ege Rekk aagero@aage.priv.no + + + + + + 386BSD パッチキットへのパッチ提供者 + + (名前でアルファベット順): + + + + Adam Glass glass@postgres.berkeley.edu + + + + Adrian Hall adrian@ibmpcug.co.uk + + + + Andrey A. Chernov ache@astral.msk.su + + + + Andrew Herbert andrew@werple.apana.org.au + + + + Andrew Moore alm@netcom.com + + + + Andy Valencia ajv@csd.mot.com + jtk@netcom.com + + + + Arne Henrik Juul arnej@Lise.Unit.NO + + + + Bakul Shah bvs@bitblocks.com + + + + Barry Lustig barry@ictv.com + + + + Bob Wilcox bob@obiwan.uucp + + + + Branko Lankester + + + + Brett Lymn blymn@mulga.awadi.com.AU + + + + Charles Hannum mycroft@ai.mit.edu + + + + Chris G. Demetriou + cgd@postgres.berkeley.edu + + + + Chris Torek torek@ee.lbl.gov + + + + Christoph Robitschko + chmr@edvz.tu-graz.ac.at + + + + Daniel Poirot poirot@aio.jsc.nasa.gov + + + + Dave Burgess burgess@hrd769.brooks.af.mil + + + + Dave Rivers rivers@ponds.uucp + + + + David Dawes dawes@physics.su.OZ.AU + + + + David Greenman dg@Root.COM + + + + Eric J. Haug ejh@slustl.slu.edu + + + + Felix Gaehtgens + felix@escape.vsse.in-berlin.de + + + + Frank Maclachlan fpm@crash.cts.com + + + + Gary A. Browning gab10@griffcd.amdahl.com + + + + Gary Howland gary@hotlava.com + + + + Geoff Rehmet csgr@alpha.ru.ac.za + + + + Goran Hammarback goran@astro.uu.se + + + + Guido van Rooij guido@gvr.org + + + + Guy Harris guy@auspex.com + + + + Havard Eidnes + Havard.Eidnes@runit.sintef.no + + + + Herb Peyerl hpeyerl@novatel.cuc.ab.ca + + + + Holger Veit Holger.Veit@gmd.de + + + + Ishii Masahiro, R. Kym Horsell + + + + J.T. Conklin jtc@cygnus.com + + + + Jagane D Sundar jagane@netcom.com + + + + James Clark jjc@jclark.com + + + + James Jegers jimj@miller.cs.uwm.edu + + + + James W. Dolter + + + + James da Silva jds@cs.umd.edu et al + + + + Jay Fenlason hack@datacube.com + + + + Jim Wilson wilson@moria.cygnus.com + + + + Jörg Lohse + lohse@tech7.informatik.uni-hamburg.de + + + + Jörg Wunsch + joerg_wunsch@uriah.heep.sax.de + + + + John Dyson + + + + John Woods jfw@eddie.mit.edu + + + + Jordan K. Hubbard jkh@whisker.hubbard.ie + + + + Julian Elischer julian@dialix.oz.au + + + + Julian Stacey jhs@freebsd.org + + + + Karl Dietz Karl.Dietz@triplan.com + + + + Karl Lehenbauer karl@NeoSoft.com + karl@one.neosoft.com + + + + Keith Bostic bostic@toe.CS.Berkeley.EDU + + + + Ken Hughes + + + + Kent Talarico kent@shipwreck.tsoft.net + + + + Kevin Lahey kml%rokkaku.UUCP@mathcs.emory.edu + kml@mosquito.cis.ufl.edu + + + + Marc Frajola marc@dev.com + + + + Mark Tinguely tinguely@plains.nodak.edu + tinguely@hookie.cs.ndsu.NoDak.edu + + + + Martin Renters martin@tdc.on.ca + + + + Michael Clay mclay@weareb.org + + + + Michael Galassi nerd@percival.rain.com + + + + Mike Durkin mdurkin@tsoft.sf-bay.org + + + + Naoki Hamada nao@tom-yam.or.jp + + + + Nate Williams nate@bsd.coe.montana.edu + + + + Nick Handel nhandel@NeoSoft.com + nick@madhouse.neosoft.com + + + + Pace Willisson pace@blitz.com + + + + Paul Kranenburg pk@cs.few.eur.nl + + + + Paul Mackerras paulus@cs.anu.edu.au + + + + Paul Popelka paulp@uts.amdahl.com + + + + Peter da Silva peter@NeoSoft.com + + + + Phil Sutherland + philsuth@mycroft.dialix.oz.au + + + + Poul-Henning Kampphk@FreeBSD.ORG + + + + Ralf Friedl friedl@informatik.uni-kl.de + + + + Rick Macklem root@snowhite.cis.uoguelph.ca + + + + Robert D. Thrush rd@phoenix.aii.com + + + + Rodney W. Grimes rgrimes@cdrom.com + + + + Sascha Wildner swildner@channelz.GUN.de + + + + Scott Burris scott@pita.cns.ucla.edu + + + + Scott Reynolds scott@clmqt.marquette.mi.us + + + + Sean Eric Fagan sef@kithrup.com + + + + Simon J Gerraty sjg@melb.bull.oz.au + sjg@zen.void.oz.au + + + + Stephen McKay syssgm@devetir.qld.gov.au + + + + Terry Lambert terry@icarus.weber.edu + + + + Terry Lee terry@uivlsi.csl.uiuc.edu + + + + Tor Egge Tor.Egge@idi.ntnu.no + + + + Warren Toomey wkt@csadfa.cs.adfa.oz.au + + + + Wiljo Heinen wiljo@freeside.ki.open.de + + + + William Jolitz withheld + + + + Wolfgang Solfrank ws@tools.de + + + + Wolfgang Stanglmeier wolf@dentaro.GUN.de + + + + Yuval Yarom yval@cs.huji.ac.il + + + +
+ + diff --git a/ja_JP.eucJP/books/handbook/cutting-edge/chapter.sgml b/ja_JP.eucJP/books/handbook/cutting-edge/chapter.sgml new file mode 100644 index 0000000000..690d88d88b --- /dev/null +++ b/ja_JP.eucJP/books/handbook/cutting-edge/chapter.sgml @@ -0,0 +1,2528 @@ + + + + 開発の最前線: FreeBSD-current と FreeBSD-stable + + あるリリースから次のリリースまでの期間にも, FreeBSD の開発は + 休みなく続けられています. + この開発の最前線に興味を持っている人のために, + 手元のシステムを最新の開発ツリーに同期させておくための, + とても使いやすい仕掛けが何種類も用意されています. 注意: + 開発の最前線は, 誰でもが扱えるという性質のものではありません! + もしもあなたが, 開発途中のシステムを追いかけようか, + それともリリース + バージョンのどれかを使い続けようかと迷っているのなら, + きっとこの章が参考になるでしょう. + + + 最新のFreeBSDを追いかける + + 原作: &a.jkh;. + + 訳: &a.hanai; + 6 November 1996. + + + FreeBSD-current ってなに? + + FreeBSD-current とは,文字通りに,日々変更されている + FreeBSD のソース + のスナップショット以外の何ものでもありません. + 中には現在開発途上の ソフトウェア, 実験的な変更, + あるいは過渡的な機能などが含まれています. また, + この中に入っている機能がすべて次の公式リリースに + 入るとはかぎりません. FreeBSD-current + をソースからほとんど毎日コンパイルしている人はたくさん + いますが, 時期によっては FreeBSD-current + はコンパイルさえできない状態に なっていることもあります. + これらの問題は一般的には可能な限り素早く解決 されますが, + FreeBSD-current のソースが不幸をもたらすか, それとも非常に + 素晴らしい機能をもたらすかというのは文字通り, + ある与えられた24時間の間 + のどの部分であなたがソースを手に入れたか, + による場合もあります. + + + + 誰が FreeBSD-current を必要としてるの? + + FreeBSD-current は, + 主に次の三つの重要なグループを対象としています. + + + + ソースツリーのある部分に関して活発に作業している + FreeBSD グループのメンバー. 彼らにとっては + “最新のもの” にしておくのが + 絶対に必要なことなのです. + + + + 活発にテストをする FreeBSD グループのメンバー. 彼らは, + FreeBSD-current を “健全である” + ことを出来るだけ確認するために種々の問題と戦うのに + 時間を費やすのを厭わない人々です. 彼らはまた, + 様々な変更に関する提案や FreeBSD + の大まかな方向付けを行ないたいと思っている + 人々でもあります. + + + + 単に, 様々な事に目を向け, 参考のために + (例えば,動かすためではなく 読むため + に) 最新のソースを使いたいと思って いる FreeBSD + (または他の) グループのまわりにいるメンバー. + これらの人々はまた, + 時々コメントやコードを寄稿してくれます. + + + + + + FreeBSD-current + に期待しては<emphasis>いけない</emphasis>ことは? + + + + なにか新しくカッコイイモノがあると聞き, 自分の周囲では + 一番にそれを持ちたいがためにリリース前のコードの断片を + 追いかけること. + + + + バグを修正するための素早い方法. + + + + 我々によって “公式にサポートされている” + こと. 私たちは 3 つの “公式な” FreeBSD-current + のグループの一つに実際に属する + 人々を助けるのにベストを尽くしますが, + 技術的なサポートを行なうには 単に「時間が足りない」のです. + これは我々が外の人を助けるの好まない, + ケチで意地悪い人間だと いうことではなく (もしそうなら + FreeBSD なんかやっていません), 文字通り 我々は一日に 400 + ものメッセージに答え かつ FreeBSD + の作業をする ことなど出来ない! ということなのです. もし, + たくさんの質問に答えるか, それとも FreeBSD + を良くする作業を続けるかという選択が与えられた場合, + あなた方のほとんどは後者を支持する, + と私は確信しています. + + + + + + FreeBSD-current を使う + + + + &a.current;と&a.cvsall;に加わって下さい. + これは単に良い考えであるというだけでなく, + 必須のことなのです. もし + FreeBSD-current + メーリングリストに入っていなければ, + 様々な人がシステムの現在の状態について + 述べているコメントを決して見ることは ありませんし, + 従って他の人が既に見つけて解決している多くの問題に 戸惑っ + てあきらめてしまうでしょう. さらに言うと, + システムを正常に保つための + 重要な情報を見逃してしまう可能性もあります. + + cvs-all メーリングリストでは, + それぞれの変更についての commit + ログを見ることができますし, + それに関して起こり得る副作用の情報を得ることができ, + もう一つの加わるに値するメーリングリストです. + + これらのメーリングリストに入るには, &a.majordomo; + へ + + +subscribe freebsd-current +subscribe cvs-all + + と書いたメールを送って下さい. オプションとして本文に + help と書けば, Majordomo + はあなたへ我々がサポ ートする様々なメーリングリストに参加 + / 脱退する方法に関する詳しい ヘルプを送ります. + + + + ftp.FreeBSD.ORG + からのソースの入手. 以下の3つの方法で行なうこと + が出来ます. + + + + 下に述べられているCTMを用いる. + 均一なレートの, 良質の TCP/IP + 接続を持っていない人には, + これが一番いい方法でしょう. + + + + cvsup を この supfile + を用いて使用する. これは 2 番目に推薦される方法です. + なぜなら, cvsup によって一度全体 を入手し, + 後は変更されたところだけを入手することが + 出来るからです. + たくさんの人が自動的にソースを最新のもに保つために + cvsup を cron から起動しています. + これを行なうための非常に簡単な 方法は, 単に + + &prompt.root; pkg_add -f ftp://ftp.FreeBSD.org/pub/FreeBSD/development/CVSup/cvsupit.tgz + + とタイプすることです. + + + + ftp を使う. FreeBSD-current + のソースツリーは常に + ftp://ftp.FreeBSD.ORG/pub/FreeBSD/FreeBSD-current + に “公開” されています. + 我々はまた全体を compress/tar して入手できる + wu-ftpd を使ってい ます. 例えば, + + usr.bin/lex + + があったとすると, + + ftp> cd usr.bin + ftp> get lex.tar.Z + + とすることにより, ディレクトリ全体(この場合, + usr.bin/lex以下全体) を compress された tar + ファイルとして入手することができます. + + + + + + 以上のことをまとめると, + 必要に応じて迅速なアクセスをする必要があり, + 接続のバンド幅が問題ではなければ cvsup + か ftp を使いましょう. そうではなければ + CTM を使いましょう. + + + + もしソースを, + 眺めるだけでなく走らせるために入手しているので あれば, + 一部だけ選ぶのではなく, current + の全体を手に入れてください. なぜなら, + ソースの様々な部分が他の部分の更新に依存しており, + 一部のみを コンパイルしようとすると, + ほぼ間違いなくトラブルを起こすからです. + + + + current をコンパイルする前に + /usr/src にある Makefile + をよく読んでください. アップグレードの処理の一部として, + 少なくとも一回は最初に make + world を行なうべきでしょう. &a.current; を読めば, + 次のリリースへ向けて, 時々必要になる + 他のブートストラップの方法に関して + 常に最新情報を得ることが出来ます. + + + + アクティブになって下さい! もし FreeBSD-current + を走らせているなら 我々はそれに関するコメント, + 特に拡張やバグ潰しに関する提案, を欲して います. + コードを伴う提案はもっとも歓迎されるものです! + + + + + + + FreeBSD の安定状態の持続 + + 原作: &a.jkh;. + + 訳: &a.jp.iwasaki;. + + + FreeBSD-stable ってなに? + + FreeBSD-stable は, + 次の本流のリリースを目指した新機能をあまり採り入 + れない保守的な変更のための開発の支流です. + 実験的またはテスト未完の変更 はこの支流には取り入れられません + (最新の FreeBSD を追いかける + 参照). + + + + 誰が FreeBSD-stable を必要としているの? + + もしあなたが仕事で使用しているとか, なによりも FreeBSD + システムの安 定性を最重要視するなら, + stable を追いかけることを考えるべきで + しょう. stable + の支流は前のリリースに関して効果的にバグフィッ + クスされた流れであるため, 最新のリリース ( + &rel.current;-RELEASE 執筆時点) + をインストールしているのであれば, 特に そうです. + + + stable + ツリーが常に完全に互換性があり安定するように努力し + ていますが, たまに間違いがあることに注意してください (結局, + 内容が吟味 + されずに素早く送られた変更を含むソースがまだあるのです). + また, current を + stable + へ移行する前に完璧なテストフィック スに最善を尽くしますが, + 私たちのテストはすべてのケースを十分に網羅して + いるとは限りません. もし何か stable + で不具合があるようでした ら, + 私たちにすぐに教えてください + (次の節参照). + + + + + FreeBSD-stable を使う + + + + &a.stable; へ加わってください. このメーリングリスト + では, stable の構築に関連する事柄や, + その他の注意すべき点 に関する情報が流れています. + また開発者は議論の余地がある修正や変更 を考えている場合に, + このメーリングリストで公表し, 提案された変更に + 関して問題が生じるかどうかを返答する機会を + ユーザに与えます. + + また, cvs-all メーリングリストでは, + それぞれの変更がなされると + 起こりうる副作用に関するすべての適切な情報と一緒に commit + log を 読むことができます. subscribe + しておきたいもう一つのメーリングリストです. + + メーリングリストに参加するには, &a.majordomo + へメッセージの本文に + 次のように書いたメールを送ってください: + + +subscribe freebsd-stable +subscribe cvs-all + + オプションとして本文に `help' と書けば, Majordomo + は私たちがサポー トする様々なメーリングリストに参加 / + 脱退する方法に関する詳しいヘ ルプを送付します. + + + + もし, あなたが新しいシステムを可能な限り -stable + に近いものにインストールしようとする場合には, + 最新のブランチの snapshot を + ftp://releng3.freebsd.org/pub/FreeBSD + から取得し, これを一般のリリースのものと同様に + インストールしてください. + + もし, 既に 2.2 系列の前のリリースが動いている場合で, + これをソースからアップグレードしようとするならば, ftp.FreeBSD.ORG より簡単に + これを行う事が出来ます. これには次の 3つの方法があります. + + + + + CTM + 機能を使用する. 転送レートが 安定している TCP/IP + 接続でない場合は, この方法が適して います. + + + + cvsup を + この supfile を用いて使用する. + 一度コレクション全体を入手してしまえば, + 前回からの変更部分だけですむので, 2 + 番目に推奨される方法です. + 多くの人が cron から cvsup を実行し, + 自動的にソースコー ドを最新の状態に保っています. + これを簡単に扱うには次のようにタイプしてください. + + &prompt.root; pkg_add -f ftp://ftp.FreeBSD.org/pub/FreeBSD/development/CVSup/cvsupit.tgz + + + + ftp を使用する. FreeBSD-stable + 用のソースツリーは + 常に次のところで“公開”されています : + ftp://ftp.FreeBSD.ORG/pub/FreeBSD/FreeBSD-stable + + 私たちはまた, tar/compress + でツリー全体を入手できる wu-ftpd + を使用しています. 例えば : + + usr.bin/lex + + に対して: + + ftp> cd usr.bin + ftp> get lex.tar.Z + + とすることにより, ディレクトリ全体を compress + された tar + ファイルとして入手することができます. + + + + + + + 基本的には, + ソースに迅速でオンデマンドなアクセスが必要で, + 接続のバンド幅が問題でなければ, cvsup + か ftp を使いましょう. そうで + ない場合は CTM + を使いましょう. + + + + stable をコンパイルする前に, + /usr/src にある Makefile をよ + く読んでください. + 少なくとも一回はアップグレードの処理の一部として 最初に + make world + を実行するべきでしょう. &a.stable; を読めば, + 次のリリースに移行する + に当たって時々必要となる既存システムからの + 新システムの構築手順に + ついての最新情報が得られるでしょう. + + + + + + + インターネットを通じたソースツリーの同期 + + 原作: &a.jkh;. + + 訳: &a.jp.iwasaki;. + 13 September 1997. + + インターネット接続 (または電子メール) を使用して, + あなたの興味の対 象によって FreeBSD + プロジェクトのソースのある一部分または全体の最新を + 追いかける方法は色々あります. + 私たちが提供している基本的なサービスは Anonymous CVS, CVSup と CTM + です: + + Anonymous CVS と + CVSuppull + 同期モデルを採用しています. + CVSup の場合, ユーザ + (または cron スクリプト) が cvsup + 起動し, どこかにある cvsupd + サーバとやりとりしてファイルを + 最新状態にします. + 届けられる更新情報はその時点の最新のものであり, + また必要な時にだけ取り寄せられます. + 興味のある特定のファイルやディレクトリに + 限定して更新することも簡単にできます. + クライアント側のソースツリーの状態・ + 設定ファイルの指定に従い, サーバによって更新情報が + 素早く生成されます. + Anonymous CVS は, + このプログラムがリモートの CVS リポジトリから直接変更点を + pull できるようにした &man.cvs.1; への拡張であるという点で, + CVSup よりもずっと単純です. + CVSup + は効率の点ではるかにまさっていますが, + Anonymous CVS の方が簡単に利用できます. + + + 一方, CTM + はあなたが持っているソースとマスタアーカイブ上に + あるそれとの対話的な比較をおこないませんし, + あるいは向こう側から変更点を pull したりもしません. + そのかわりに, 前回の実行時からの変更を認識するスクリプトが + マスタ CTM マシン上で一日に数回実行され, + すべての変更を compress して通し番号を振り, + さらに電子メールで転送できるようにエンコードします + (印字可能な ASCII + キャラクタのみです). 受信した後は, + これらの “CTM のデルタ” は自動 + 的にデコード, 検査してユーザのソースのコピーに変更を適用する + &man.ctm.rmail.1; によって処理可能となります. + この処理は CVSup や + Anonymous CVS よりずっと効率 + 的であり, pull モデルというよりむしろ + push モデルで + あるため, 私たちのサーバ資源の負荷は軽くなります. + + もちろん他のトレードオフもあります. うっかりアーカイブ + の一部を消してしまっても, CVSup + は壊れた部分を検出して再構築してくれます. + CTM はこれをやってくれませんし, + Anonymous CVS + はおそらく他の何よりも深く混乱してしまうことが多いでしょう. + もしソースツリーの一部を消してしまったら, (最新の CVS + “ベースデルタ”から) 一からやり直し, CTM か anoncvs + を使って悪い部分を消去し, 再同期させることによって + すべてを再構築しなければなりません. + + Anonymous CVS, + CTM, CVSup + についての 詳しい情報については, + 以下の節を参照してください: + + + Anonymous CVS + + 原作: &a.jkh; + 訳: &a.jp.sugimura;. + 19 July 1998. + + + <anchor id="anoncvs-intro">導入 + + Anonymous CVS (もしくは, anoncvs + として知られています) は離れたところにある CVS + リポジトリと同期を取るために FreeBSD に付属している CVS + ユーティリティに含まれている機能です. 他にもありますが, + それは FreeBSD のユーザが, 特別な権限なしに FreeBSD + プロジェクトの公式な anoncvs サーバに読み取り専用で CVS + の操作をすることができるようにするためのものです. + それを使うには, 単に CVSROOT + 環境変数を設定して適切な anoncvs サーバを指定し, そして + &man.cvs.1; + コマンドを使って手元にある + リポジトリのようにアクセスするだけです. + + CVSup と + anoncvs + のサービスは本質的に同じ機能ではないか + ということも言われていますが, + ユーザが同期を取る方法を選ぶときに影響を与えるような + さまざまなトレードオフが存在します. 要約して言えば, + CVSup + はネットワーク資源の使い方においては非常に効率がよく, + またはるかに技術的に洗練されたものですが, + 相当な手間がかかります. CVSup + を使うには, + 特別なクライアントをまずインストールして設定しなくては 1bit + も取ってくることができず, またそのとき + CVSup では + collections + と呼んでいるかなり大きなかたまりだけからしか + 取ってこれません. + + それに対して anoncvs では, + CVS モジュールの名前を指定することで特定のプログラムの + (lsgrep のような) + 個々のファイルから調べることができます. もちろん, + anoncvs は CVS + リポジトリの読み取り専用の操作に対してのみ適しているので, + もしあなたが FreeBSD プロジェクトのものと共有されたなにか + ローカルなリポジトリを作ってそこでの開発を + 行おうというときには, CVSup + だけが唯一の手段となってしまいます. + + + + <anchor id="anoncvs-usage">Anonymous CVS を使う + + &man.cvs.1; を設定して Anonymous CVS + リポジトリを使うには単に CVSROOT + 環境変数を設定して FreeBSD プロジェクトの + anoncvs サーバを指定するだけのことです. + この文書を書いているときには, + 次のサーバが利用できるようになっています. + + + + USA: + anoncvs@anoncvs.freebsd.org:/cvs + + + + CVS はかつて存在した (もしくは, + 時にはこれから存在するものも :) + ほとんどどんなバージョンの FreeBSD のソースを “check + out” することができますが, あなたは &man.cvs.1; の + リビジョン () のオプションや FreeBSD + プロジェクトのリポジトリの中で + それをどのように指定したらいいものかということを + よく知っておく必要があります. + + タグには 2 種類あって, + リビジョンタグとブランチタグがあります. + リビジョンタグは特定の改訂版を指しており, + それはいつも同じものを意味しています. 一方ブランチタグは, + 指定されたときの指定された開発の流れにおける + 最も新しい改訂版を示しています. + ブランチタグは特定の改訂版を指していないために, + その意味はきょうと明日では違うものになっているでしょう. + + + ユーザが興味を持つであろうブランチタグの一覧です. + + + + HEAD + + 主要部をなす流れ, すなわち FreeBSD-current + のための名前です. また, + どのリビジョンも + 指定されなかったときにはこれになります. + + + + + RELENG_3 + + FreeBSD-3.x の開発のための流れです. + FreeBSD-stable としても知られています. ports + コレクションには無効です. + + + + + RELENG_2_2 + + FreeBSD-2.2.x の開発のための流れです. 2.2-stable + としても知られています. ports + コレクションにはふさわしくありません. + + + + + RELENG_2_1_0 + + FreeBSD-2.1.x の開発のための流れです - + このブランチは大部分がすたれています. ports + コレクションにはふさわしくありません. + + + + + ユーザが興味を持つであろうリビジョンタグの一覧です. + + + + RELENG_2_2_6_RELEASE + + FreeBSD-2.2.6. ports + コレクションにはふさわしくありません. + + + + + RELENG_2_2_5_RELEASE + + FreeBSD-2.2.5. ports + コレクションにはふさわしくありません. + + + + + RELENG_2_2_2_RELEASE + + FreeBSD-2.2.2. ports + コレクションにはふさわしくありません. + + + + + RELENG_2_2_1_RELEASE + + FreeBSD-2.2.1. ports + コレクションにはふさわしくありません. + + + + + RELENG_2_2_0_RELEASE + + FreeBSD-2.2.0. ports + コレクションにはふさわしくありません. + + + + + RELENG_2_1_7_RELEASE + + FreeBSD-2.1.7. ports + コレクションにはふさわしくありません. + + + + + RELENG_2_1_6_1_RELEASE + + FreeBSD-2.1.6.1. ports + コレクションにはふさわしくありません. + + + + + RELENG_2_1_6_RELEASE + + FreeBSD-2.1.6. ports + コレクションにはふさわしくありません. + + + + + RELENG_2_1_5_RELEASE + + FreeBSD-2.1.5. ports + コレクションにはふさわしくありません. + + + + + RELENG_2_1_0_RELEASE + + FreeBSD-2.1.0. ports + コレクションにはふさわしくありません. + + + + + ブランチタグを指定したときには, + 普通はその開発の流れにおける + 最も新しいバージョンのファイルを受け取ることができます. + もし以前のバージョンのものが欲しいときには, 日付を + + オプションを使って指定すればよいです. + + + + + + 本当はなにかする前には &man.cvs.1; + のマニュアルページの全体を + ちゃんと読んでからのほうがいいのですが, Anonymous CVS + の使い方の本質的なところを簡単に例を挙げて説明します. + + + -current (ls(1)) + をちょっと確認してから消してみます. + + + &prompt.user; setenv CVSROOT + anoncvs@anoncvs.freebsd.org:/cvs + &prompt.user; cvs co ls + &prompt.user; cvs release -d + ls + + + + ls(1) のバージョンを 2.2-stable + ブランチから調べてみます. + + + + &prompt.user; setenv CVSROOT + anoncvs@anoncvs.freebsd.org:/cvs + &prompt.user; cvs co -rRELENG_2_2 + ls &prompt.user; cvs release -d + ls + + + + FreeBSD 2.2.2 と FreeBSD 2.2.6 とで ls(1) + の変更点のリストを (unidiff で) 作ってみます. + + + &prompt.user; setenv CVSROOT + anoncvs@anoncvs.freebsd.org:/cvs + &prompt.user; cvs rdiff -u + -rRELENG_2_2_2_RELEASE -rRELENG_2_2_6_RELEASE + ls + + + + 他のどんなモジュールの名前が + 使われているか検索してみます. + + + &prompt.user; setenv CVSROOT + anoncvs@anoncvs.freebsd.org:/cvs + &prompt.user; cvs co modules + &prompt.user; more + modules/modules &prompt.user; cvs + release -d modules + + + + + 他の資料 + + 次の資料は CVS を学ぶのに役に立つでしょう. + + + + CVS チュートリアル. Cal Poly によります. + + + + Cyclic + Software, 商用として CVS を維持しています. + + + + CVSWeb + は FreeBSD Project の CVS のための web + インターフェースです. + + + + + + + <application>CTM</application> + + 原作: &a.phk;. 更新: 19-October-1997. + + 訳: &a.hanai; + 13 September 1997. + + CTM + はリモートのディレクトリツリーを中央のツリーに同期させるための + 手段です. + これはFreeBSDのソースツリーの配布を行なうために開発されまし + たが, 時が経つにつれて別の目的にも有用であることがわかるかも + しれません. + デルタを作り出す処理に関するドキュメントは現在ほとんど + ありません. 従って, もしあなたがCTM + を他のことに使いたいなら + &a.phk;にさらなる情報を問い合わせてください. + + + なぜ<application>CTM</application>を使うの? + + CTM を使うことにより FreeBSD + ソースツリーのローカルコピー を手にいれることができます. + ソースツリーが使えることの魅力は数多くあります. 完全な cvs + ツリーを追いかけるにしても, ひとつのブランチを追いかける + にしても CTM + は必要な情報を与えてくれます. + もしあなたがFreeBSDのアクティブな開発者であるにもかかわらず + お粗末なTCP/IP接続しか持っていなかったり, またはTCP/IP接続が + 行なえないとしたら, あるいは単に変更が自動的に送られてきて + ほしいというのであれば CTM + はそんなあなたのために 作られたのです. + アクティブなブランチでは 1 + 日に最大三つまでのデルタを受け取る必 要があります. + これが自動的に e-mail で送られてくるという方法を + ぜひ検討してみてください. + デルタのサイズは常にできるだけ小さく保たれています. + 大抵の場合5KBよりも小さく, + たまに(10回に1回程度)10-50KBになり, + ときおり100KBかもっと大きくなる でしょう. + + 開発ソースから直接に得られたものを使うことについては, + あらかじめ パッケージにされたリリースとは違い, + いろいろと注意することが あります. これは特に + “current” のソースを選んでいるときは 重要です. + 最新の FreeBSD + を追いかけるを読むことを お勧めします. + + + + <application>CTM</application>を使うには何が必要? + + 二つのものが必要でしょう: CTM + プログラムとそれに与える (“current” + レベルを得るための)最初のデルタです. + + CTM + プログラムはバージョン2.0のリリース以来FreeBSDの一部にな + りました. もしソースのコピーを持っているなら + /usr/src/usr.sbin/CTMにあります. + + もしFreeBSDの2.0以前のバージョンなら, + 最新のCTMのソースを直接 + + ftp://ftp.FreeBSD.ORG/pub/FreeBSD/FreeBSD-current/src/usr.sbin/ctm + + から入手できます. CTM + に与える “デルタ” は二つの方法, FTPまたはe-mail, + で得ること ができます. + もしインターネットにFTPアクセスできるなら, + 次のFTPサイト: + + ftp://ftp.FreeBSD.ORG/pub/FreeBSD/CTM + + または, その ミラーサイト が + CTM へのアクセスをサポートします. + 適切なディレクトリに FTP して README + ファイルを入手し, そこから スタートしてください. + + e-mail によってデルタを得たいという場合は: + + CTM + 配布メーリングリストのいずれかに参加するために &a.majordomo; + へ subscribe のメールを送ってください. + “ctm-cvs-cur” は完全な cvs ツリー + をサポートします. “ctm-src-cur” + は開発先端ブランチをサポートします “ctm-src-2_2” + は 2.2 リリースのブランチのサポートです. + (もしmajordomoを使って参加する方法を知らない のであれば, + 最初にhelp + という語を含むメッセージを送ってください. — + 使い方の説明が送られてくるでしょう.) + + メールで CTM + による更新ファイルを受け取り始めると, 中身を取り出して使用 + するために ctm_rmail + プログラムを使うかもしれません. それを完全 + に自動で行ないたいなら, /etc/aliases + から ctm_rmailプロ + グラムを直接使うこともできます. + さらに詳しいことはctm_rmail + manページを御覧ください. + + + CTM + デルタを得るためにどの方法を使うのであっても, + ctm-announce@FreeBSD.ORG + メーリングリストに参加するべきです. + このメーリングリストは将来的には + CTMシステムの操作に関する + アナウンスがポストされる唯一の場になるでしょう. + メーリングリストに加わるためにはsubscribe + ctm-announce と書いた一行だけのメールを + &a.majordomo; へ送ってください. + + + + + はじめて<application>CTM</application>を使い始める + + CTM + デルタを使い始めるためには, これは以降作られる全ての + デルタの出発点を手にいれる必要があります. + 最初にあなたが何をすでに持っているかをはっきりさせましょう. + すべての人は + “空”のディレクトリから始めなければなりません. + ツリーをサポートしてるあなたの + CTM を稼働するためには + 指定した“空” + のデルタを使う必要があります. いくつかの分岐点 + では, あなたの都合により CD + 内に分配されている“スタータ” + デルタを使用できるようになっています. しかしながら, これは + 頻繁に行われることではありません. + + + 適切な出発点が決まれば, その出発点を + CTM が + 維持するツリーへ変換するための “スタータ” + 初期デルタを使う必要が あります. + + 移行デルタは番号の後ろに X + をつけたものがそうです + (たとえばsrc-cur.3210XEmpty.gz). + X + の後ろは最初の開始ポイントに対応します. + Empty は 空のディレクトリです. + ルールとして Empty からの移行デルタは + 100 デルタごとに 作られます. ところで, + これらは非常に大きいです! + XEmptyのデルタは 数十MBの + gzip + で圧縮されたデータというのが普通です. + + 一度スタートするためのベースデルタを得ると, + それに続く多数の 全てのデルタも必要になるでしょう. + + + + <application>CTM</application>を日常で使う + + デルタを適用するためには, 単に + + &prompt.root; cd /where/ever/you/want/the/stuff +&prompt.root; ctm -v -v /where/you/store/your/deltas/src-xxx.* + + とします. + + CTM + はどれがgzipされているか理解します. + 従って最初に gunzipしておく必要はありません. + ディスクの節約にもなります. + + 全体の処理に関して確信するまでは + CTM は(ソース)ツリーに対して + 何もしません. また, デルタを確かめるためには + フラグを使うことができます. + このフラグがあると CTM + はツリーに対して実際には何も行ないません. + 単にデルタの完全性を確認し, + 現在のツリーに問題なく使用できるかを確認 + するだけです. + + CTM + には他にもオプションがあります. 詳細に関しては + マニュアルページを参照するかソースを見てください. + + もし誰かが “ユーザ インターフェース” + の部分に関して助けてくれるなら 私はとても嬉しいです. + なぜならどういうオプションが何を, どのよう に, + いつ行なうようにするべきか決めかねているからです. + + 以上でやることは本当に全部です. + 新しいデルタを入手した時には, + ソースを最新のものにするためにそれを + CTMに通すだけです. + + もしデルタを再ダウンロードするのが + 骨の折れる作業であれば, デルタを 消さないでおいてください. + なにかおかしなことが起こった場合には置いておけば良かった + と思うかもしれません. + もしフロッピーディスクしか持っていない状況 + であってもコピーを取るのに + fdwriteを使うことを考えてください. + + + + ローカルの変更を保存する + + 開発者としてはソースツリー中のファイルを + 使って実験したり変更したく なるものです. + CTM + はローカルの変更を制限つきでサポートします: ファイル + foo の存在をチェックする前に, + foo.ctm を参照しにいきます. + このファイルが存在する場合, CTM は foo + の代りにこれを処理します. + + この動作はローカルの変更を保持する簡単な手段を + 提供します: 単に変更したいファイルを拡張子 + .ctm 付きのファイル名で + コピーするだけです. あとは自由にコードをハックでき, + .ctm ファイルの方は CTM + が最新状態に保ってくれます. + + + + <application>CTM</application> + のその他の面白いオプション + + + 更新で変更されるファイルを正確に知る + + CTM + のソースリポジトリに対する変更のリストを + + オプションを使って決定することができます. + + これは, 変更のログを保存したい, + 変更されたファイルをなんらかの方法で 前・後処理したい, + または単にこだわりたい :-) 場合には, + 役に立つでしょう. + + + + 更新前にバックアップを取る + + CTM + の更新によって変更されるファイルすべてのバックアップを + 取りたくなることがあります. + + オプションを指定すると + CTM は + デルタで変更されるファイルすべてを + backup-file + としてバックアップするようになります. + + + + 更新で変更されるファイルを制限する + + CTM + の更新の範囲を制限したり一連のデルタのから + ほんの数ファイルを 抽出したくなることがあります. + + + オプションを用い正規表現を 指定することで, + CTM + が処理するファイルのリストを制御することが + できます. + + 例えば, lib/libc/Makefile + の最新のコピーを保存してある CTM + デルタのコレクションから抽出するには, + 以下のコマンドを実行します. + + &prompt.root; cd /where/ever/you/want/to/extract/it/ +&prompt.root; ctm -e '^lib/libc/Makefile' ~ctm/src-xxx.* + + CTM + デルタで指定されたファイルごとに, + そして + オプションがコマンドラインで指定された順序で 適用されます. + すべての そして + オプションが適用された後に更新対象と選択された場合に限り, + CTM + はそのファイルを処理します. + + + + + <application>CTM</application>の将来計画 + + 重要なもの + + + + なんらかの CTM システムへの認証機構を用い, 不正な + CTM の更新の 検出を可能とする. + + + + CTM + へのオプションを整理する. さもないと混乱し, + 直観に反したもの になります. + + + + 残念なことに私は非常に忙しいです. + 従ってこれを行なうどんな手助け でも歓迎します. その際, + 自分が何をやりたいかを私に 言うのを忘れずに. + + + + その他 + + “DESに染まった” (例えば, + 国外への持ち出しが規制された)ソースは まったく含まれません. + 手に入るのは“国際”バージョンだけです. + もし興味のある人が多いようであれば, + 我々はsec-curシーケンスも + セットアップするつもりです. ports + コレクションに対するデルタのシーケンスもあります. しかし, + まだあまり興味は持たれていないようです. + もしこれに対するメーリング + リストが欲しい時も私に言ってください. + 我々はセットアップすることを 考えます. + + + + ありがとう! + + + &a.bde; + + 辛辣なペンと価値のないコメントに対して. + + + + &a.sos; + + よく辛抱してくれました. + + + + Stephen McKay + + ctm_[rs]mailを書いてくれました. + とても感謝して います. + + + + &a.jkh; + + 彼が頑固として譲らなかったため, 私もこの + CTM をもっと良いものに + しないわけにはいきませんでした. + 彼の頑固さに感謝します. + + + + ユーザの人みんな + + 気に入ってくれることを願っています... + + + + + + + + <application>CVSup</application> + + 原作: &a.jdp;. + + 訳: &a.jp.iwasaki;. + 27 February 1997. + + + <application>CVSup</application> の紹介 + + 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 + プロジェクトでは使用されていません. + + + + <application>CVSup</application> のインストール + + FreeBSD 2.2 以降を使用している場合, + CVSup をインストールするもっとも + 簡単な方法は, FreeBSD ports + コレクション の port + または対応する + バイナリ package を使うことです. + どちらを使うかは, + CVSupを自分で作りたいかどうかによります. + + FreeBSD-2.1.6 または 2.1.7 を使用している場合は, + 残念ながら FreeBSD-2.1.{6,7} には存在しないバージョンの C + ライブラリが必要となるため バイナリ package + は使用できません. しかし, + port は FreeBSD 2.2 とまったく同じように + 簡単に使うことができます. + 単に tar ファイルを展開し, cvsup ディレクトリへ cd して + make install とタイプするだけです. + + CVSup + Modula-3 で書かれているため, package と port + 両方とも Modula-3 ランタイムライブラリが + インストールされていることが必要です. + これらは port の + lang/modula-3-lib + および package の + lang/modula-3-lib-3.6 にあります. + これらのライブラリの port や package に対して + cvsup と同じ管理方法を取っていれば, + CVSup の port や package + をインストールする際に, これらのライブラリも自動的に + コンパイルそして/またはインストールされます. + + Modula-3 ライブラリはかなり大きく, + これらの転送やコンパイルはすぐに 終わるものではありません. + この理由から, 三つめの選択肢が提供されています. + 以下のアメリカ合衆国にある配布サイトのどちらからでも, + FreeBSD 用の スタティックリンクされた + CVSup + 実行形式が入手可能です: + + + + ftp://ftp.freebsd.org/pub/FreeBSD/development/CVSup/cvsup-bin-16.0.tar.gz + (GUI 込みのクライアント). + + + + ftp://ftp.freebsd.org/pub/FreeBSD/development/CVSup/cvsup.nogui-bin-16.0.tar.gz + (GUI なしのクライアント). + + + + ftp://ftp.freebsd.org/pub/FreeBSD/development/CVSup/cvsupd-bin-16.0.tar.gz + (サーバ). + + + + また, 世界中にあるたくさんの FreeBSD FTP ミラーサイト + からも入手可能です. : + + ほとんどのユーザはクライアントのみが必要になるでしょう. + これらの 実行形式は完全に自己完結しており, FreeBSD-2.1.0 + から FreeBSD-current までの, + どのバージョンでも動作します. + + まとめると, CVSup + をインストールするための選択肢は以下の通りです: + + + + FreeBSD-2.2以降: スタティックバイナリ, port, package + + + + FreeBSD-2.1.6, 2.1.7: スタティックバイナリ, port + + + + FreeBSD-2.1.5 以前: スタティックバイナリ + + + + + + <application>CVSup</application> + のコンフィグレーション + + CVSup の動作は, supfile + と呼ばれるコンフィグレーションファイルで 制御します. + FreeBSD-2.2 からは, supfile + のサンプルがディレクトリ /usr/share/examples/cvsup + の下にあります. 2.2 以前のシステムを + 使用している場合は, これらの サンプルを + + ftp://ftp.freebsd.org/pub/FreeBSD/FreeBSD-current/src/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 + フィールドの デフォルトを設定するために利用できます. + 個々のコレクションで固有の値を 指定すると, + デフォルト値を無効にできます. また + 行を追加すると, supfile + の途中からデフォルト値の変更や追加が可能になります. + + これまでの予備知識を基に, FreeBSD-current + のメインのソースツリーを受け取って更新するための + supfile を 組み立ててみましょう. + + + + どのファイルを受け取りたいのか? + + CVSup + を通して入手できるファイルは “コレクション” + と呼ばれる名前の付けられたグループにまとめられています. + 利用可能なコレクションについては ここ で説明しています. + ここでは, FreeBSD システムのメインのソースツリー全体 + を受け取るための設定例を紹介します. + 輸出規制されている暗号化サポートの + コード以外のすべてを含む src-all + という 単一の大きなコレクションがあります. + この例では私たちがアメリカ合衆国か + カナダにいるものと仮定します. その場合, + cvs-crypto という一つの付化的な + コレクションで暗号化コードを入手することができます. + supfile + を組み立てる最初のステップとして, + これらのコレクションを一行に一つづつ 記述します: + + +src-all +cvs-crypto + + + + どのバージョンのものが欲しいのか? + + CVSup を使用すると, + かつて存在していたことのある, 事実上どのバージョンの + ソースでも受け取ることができます. これは cvsupd + サーバがすべてのバージョンを含む CVS + リポジトリに基づいて動作することにより, + 実現されています. tag= および + の value フィールドを使用して, + 欲しいバージョンの 一つを指定します. + + + tag= + のフィールドの指定は正確に行うように十分注意 + してください. いくつかのタグは特定のコレクションに + 対してのみ有効です. + タグの綴りが違っていたり不適切なタグを指定すると, + CVSupはユーザが消し + たくないファイルまで削除してしまいます. 特に + ports-* のコレクション に対しては + tag=. だけ + を指定するようにしてください. + + + tag= + フィールドはリポジトリ中のシンボリックタグを指定します. + tag には revision tag と branch tag の二種類があります. + revision tag は特定のリビジョンを指します. これは, + 毎日同じ状態に保つことになります. 一方 branch tag は, + ある時点での開発分流の最新のリビジョンを指します. + branch tag + は特定のリビジョンを指定している訳ではないので, + 今日と明日では + 異なるリビジョンを参照することになるかもしれません. + + 以下はユーザが興味を持っていると思われる branch tag + です: + + + tag=. + + メインの開発分流であり, FreeBSD-current + として知られています. + + + 注意: . + は句読点ではありません. tag の名称です. + このタグの指定は総ての + コレクションに対して有効です. + + + + + tag=RELENG_3 + + FreeBSD-3.x 用の開発分流であり, FreeBSD-stable + として知られています. このタグの指定は ports-* + のコレクションに対しては無効です. + + + + tag=RELENG_2_2 + + FreeBSD-2.2.x 用の開発分流であり, 2.2-stable + として知られています. このタグの指定は ports-* + のコレクションに対しては無効です. + + + + tag=RELENG_2_1_0 + + FreeBSD-2.1.x 用の開発分流です. + この分流はほとんど利用されていません. + このタグの指定は ports-* + のコレクションに対しては無効です. + + + + + 以下はユーザが興味を持っていると思われる revision + tag です: + + + tag=RELENG_3_0_0_RELEASE + + FreeBSD-3.0. このタグの指定は ports-* + のコレクションに対しては無効です. + + + + tag=RELENG_2_2_8_RELEASE + + FreeBSD-2.2.8. このタグの指定は ports-* + のコレクションに対しては無効です. + + + + tag=RELENG_2_2_7_RELEASE + + FreeBSD-2.2.7. このタグの指定は ports-* + のコレクションに対しては無効です. + + + + tag=RELENG_2_2_6_RELEASE + + FreeBSD-2.2.6. このタグの指定は ports-* + のコレクションに対しては無効です. + + + + tag=RELENG_2_2_5_RELEASE + + FreeBSD-2.2.5. このタグの指定は ports-* + のコレクションに対しては無効です. + + + + tag=RELENG_2_2_2_RELEASE + + FreeBSD-2.2.2. このタグの指定は ports-* + のコレクションに対しては無効です. + + + + tag=RELENG_2_2_1_RELEASE + + FreeBSD-2.2.1. このタグの指定は ports-* + のコレクションに対しては無効です. + + + + tag=RELENG_2_2_0_RELEASE + + FreeBSD-2.2.0. このタグの指定は ports-* + のコレクションに対しては無効です. + + + + tag=RELENG_2_1_7_RELEASE + + FreeBSD-2.1.7. このタグの指定は ports-* + のコレクションに対しては無効です. + + + + tag=RELENG_2_1_6_1_RELEASE + + FreeBSD-2.1.6.1. このタグの指定は ports-* + のコレクションに対しては無効です. + + + + tag=RELENG_2_1_6_RELEASE + + FreeBSD-2.1.6. このタグの指定は ports-* + のコレクションに対しては無効です. + + + + tag=RELENG_2_1_5_RELEASE + + FreeBSD-2.1.5. このタグの指定は ports-* + のコレクションに対しては無効です. + + + + tag=RELENG_2_1_0_RELEASE + + FreeBSD-2.1.0. このタグの指定は ports-* + のコレクションに対しては無効です. + + + + + + tag + 名を示した通りにタイプされているか十分注意してく + ださい. CVSup は tag + 名が正しいかどうかを見分けることはできません. tag + が間違っていた場合, + たまたまファイルがまったく存在しない正しい tag が + 指定されたものとしてCVSup + は動作します. その場合は, 現在あるソースが削 + 除されるでしょう. + + + branch tag を指定した際には, + 通常はその開発分流の最新バージョンの + ファイルを受け取ります. + いくらか前のバージョンを受け取りたい場合は, + の value + フィールドを使って日付を指定することで, + これを実現することが できます. &man.cvsup.1; + のマニュアルページで, + その方法を説明しています. + + 例として, FreeBSD-current を受け取りたいとします. + 次の行を supfile + の始めに追加します: + + +*default tag=. + + tag= フィールドも + date= + フィールドも指定しなかった場合に + 動き出す重要な特殊なケースがあります. そのケースでは, + 特定のバージョンの ファイルを受け取るのではなく, + サーバの CVS リポジトリから実際の RCS + ファイルを直接受け取ります. + 一般的に開発者はこの処理のモードが 好きなようです. + 彼らのシステム上にリポジトリそのものの + コピーを維持することで, + リビジョン履歴を閲覧し過去のバージョンの + ファイルを検査できるようになります. しかし, + これには大きなディスクスペースが必要になります. + + + + どこから入手したいのか? + + 更新情報をどこから入手するかを + cvsup に伝えるために + host= フィールドを使用します.CVSup ミラーサイト + のどこからでも入手できますが, + ネット上での最寄りのサイトを選ぶべきでしょう. + この例では, 仮想上の FreeBSD 配布サイト cvsup666.FreeBSD.org + を使用します: + + +*default host=cvsup666.FreeBSD.org + + CVSup を実行する前にホスト名を + 実在のものに変更する必要があります. どのように + cvsup を実行しても, この設定は + + を + 使用してコマンドラインで変更することができます. + + + + 自分のマシンのどこに置きたいのか? + + prefix= フィールドは, + cvsup + に受け取ったファイルをどこに置くかを 伝えます. + この例では, ソースファイルを直接メインのソースツリー + /usr/src に置きます. + src + ディレクトリはすでにファイルを受け取るために + 選択したコレクションで暗黙に指定しているので, + これは正しい仕様となります: + + +*default prefix=/usr + + + + どこに status ファイルを置きたいのか? + + cvsup クライアントは “base” + ディレクトリと呼ばれる場所に, ある status + ファイルを維持しています. + すでに受け取った更新情報を追従し続け ることで, + これらのファイルは CVSup + がより効果的に動作することを支援し ます. 標準の base + ディレクトリ /usr/local/etc/cvsup + を使用します: + + +*default base=/usr/local/etc/cvsup + + supfile に指定がない場合は, + この設定をデフォルトで使用しますので, + 実際には上の行は必要ありません. + + base + ディレクトリが存在しない場合は作成しておきましょう. base + ディレクトリが存在しない場合, cvsup + クライアントは実行を拒否します. + + + + その他もろもろの supfile + の設定: + + 通常 supfile + に入れておくべき行がもう一つあります: + + +*default release=cvs delete use-rel-suffix compress + + release=cvs は, サーバがメインの + FreeBSD CVS リポジトリから + その情報を取得するように指示します. + ほとんどの場合はこのようにしておきますが, + ここでの説明の範疇をこえるような + 状況では他の指定をすることも可能です. + + delete は + CVSup + にファイルを削除することを許可します. + CVSup が + ソースツリーを完全に最新の状態に + 保てるようにするためには, これは常に + 指定しておくべきでしょう. + CVSup は, + これらの責任範囲のファイルだけを 慎重に削除します. + たまたま存在する他の余分なファイルについては, + まったく手をつけずに残しておきます. + + use-rel-suffix は ... + 神秘的なものです. これについて本当に 知りたい人は, + &man.cvsup.1; のマニュアルページをご覧ください. + でなければ, 何も考えずに指定してみてください. + + compress は通信チャネルで gzip + 形式の圧縮の使用を有効にします. + ご使用のネットワーク接続が T1 speed 以上である場合, + この圧縮を 使用しない方がよいかもしれません. + そうでない場合は十分に役に立ちます. + + + + supfile の例のまとめ: + + 以下は supfile の例の全体です: + + +*default tag=. +*default host=cvsup666.FreeBSD.org +*default prefix=/usr +*default base=/usr/local/etc/cvsup +*default release=cvs delete use-rel-suffix compress + +src-all +cvs-crypto + + + + + + <application>CVSup</application> の実行 + + さて, 更新の準備ができました. + これを実行するコマンドラインは 実に簡単です: + + &prompt.root; cvsup supfile + + もちろん, ここでの + supfile + は作成したばかりの supfile のファイル名です. X11 + 環境で実行するものと仮定して, cvsup は + 通常の操作に必要なボタンを持つ GUI ウィンドウを表示します. + “go” ボタンを押して, + 実行を監視してください. + + この例では実際の /usr/src + ツリーを更新しているので, cvsup + にファイルを更新するのに必要なパーミッションを与えるために, + ユーザ root で実行する必要があります. + コンフィグレーションファイルを作ったばかりで, + しかも以前にこのプログラムを実行したことがないので, + 神経質になるのは 無理もない話だと思います. + 大切なファイルに触らずに試しに実行する簡単な 方法があります. + どこか適当な場所に空のディレクトリを作成して, + コマンドラインの引数で指定するだけです: + + &prompt.root; mkdir /var/tmp/dest +&prompt.root; cvsup supfile /var/tmp/dest + + 指定したディレクトリは, すべての更新されるファイルの + 更新先ディレクトリとして使用します. + CVSup は + /usr/src の下の ファイルを検査しますが, + 変更や削除はまったくおこないません. かわりに + /var/tmp/dest/usr/src + に更新されたすべてのファイルが 置かれるようになります. + この方法で実行した場合は, CVSup + は base ディレクトリの status + ファイルを更新せずにそのままにします. + これらのファイルの新しいバージョンは指定されたディレクトリ + に書き込まれます. /usr/src + の読み取り許可がある限り, このような 試し実行のためにユーザ + root になる必要はありません. + + X11 を利用していないとか単に GUI が気に入らない場合は, + cvsup 起動時にコマンドラインに + 二つほどオプションを追加する必要があります: + + &prompt.root; cvsup -g -L 2 supfile + + オプションは cvsup に GUI + を使用しないように伝えます. X11 + を利用していない場合には自動的に指定されますが, + そうでない場合は 明示的に指定します. + + オプションは cvsup + にファイル更新中の詳細情報をプリントアウト + するように伝えます. 冗長性には から + までの三つのレベル があります. + デフォルトは 0 であり, エラーメッセージ以外はまったく出力 + しません. + + たくさんの他のオプション変数があります. + それらの簡単な一覧は cvsup -H + で表示されます. + より詳しい説明はマニュアルページをご覧ください. + + 動作している更新の方法に満足したら, &man.cron.8; + を使って cvsup を定期的に + 実行させる準備をすることができます. cron から起動する際には, + 明示的に cvsup が GUI + を使わないようにする必要があります. + + + + <application>CVSup</application> ファイルコレクション + + CVSup + 経由で入手できるファイルコレクションは + 階層的に組織化されています. + いくつか大きなコレクションがあり, + それらは小さなサブコレクションに 分割されています. + 大きなコレクションは, そのサブコレクション毎に + 受信することと同じことになります. + 下の一覧ではコレクション間の階層関係を + 字下げして表現します. + + 最も一般的に使用するコレクションは + src-all, cvs-crypto, + そして ports-all です. + 他のコレクションは特別な目的を持つ人達だけが 使用しており, + ミラーサイトはそれらのすべてを + 持っていないかもしれません. + + + cvs-all release=cvs + + メインの FreeBSD CVS リポジトリであり, + 輸出規制された暗号化コードは含まれていません. + + + + distrib release=cvs + + FreeBSD + の配布とミラーに関連するファイルです. + + + + + doc-all release=cvs + + FreeBSD + ハンドブックおよびその他のドキュメントの + ソースです. + + + + + ports-all release=cvs + + FreeBSD の ports コレクションです. + + + + ports-archivers release=cvs + + + アーカイビングのツール. + + + + + ports-astro release=cvs + + 天文学関連の ports. + + + + + ports-audio release=cvs + + サウンドサポート. + + + + + ports-base release=cvs + + /usr/ports + のトップにあるその他のファイル. + + + + + 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-editors release=cvs + + + エディタ. + + + + + ports-emulators release=cvs + + + 他の OS のエミュレータ. + + + + + ports-games release=cvs + + ゲーム. + + + + + ports-german release=cvs + + + ドイツ語サポート. + + + + + ports-graphics release=cvs + + + グラフィックユーティリティ. + + + + + ports-japanese release=cvs + + + 日本語サポート. + + + + + 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-net release=cvs + + ネットワーキングソフトウェア. + + + + + ports-news release=cvs + + USENET ニュースのソフトウェア. + + + + + ports-plan9 release=cvs + + Plan9 からの色々なプログラム. + + + + + ports-print release=cvs + + 印刷ソフトウェア. + + + + + ports-russian release=cvs + + + ロシア語サポート. + + + + + ports-security release=cvs + + + セキュリティユーティリティ. + + + + + ports-shells release=cvs + + + コマンドラインシェル. + + + + + ports-sysutils release=cvs + + + システムユーティリティ. + + + + + ports-textproc 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-fm release=cvs + + + X11 上で動作するファイラ. + + + + + ports-x11-fonts release=cvs + + + X11 のフォントとフォントユーティリティ. + + + + + ports-x11-toolkits release=cvs + + + X11 のツールキット. + + + + + ports-x11-wm release=cvs + + + X11 のウィンドウマネージャ. + + + + + + + + src-all release=cvs + + メインの FreeBSD ソース群であり, + 輸出規制された暗号化コードは + 含まれていません. + + + + src-base release=cvs + + /usr/src + のトップにあるその他のファイル. + + + + + src-bin release=cvs + + シングルユーザモードで必要な + ユーザユーティリティ + (/usr/src/bin). + + + + + src-contrib release=cvs + + FreeBSD プロジェクト外部からの + ユーティリティおよびライブラリ, + 比較的無修正 + (/usr/src/contrib). + + + + + 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-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-sbin release=cvs + + シングルユーザモード用の + システムユーティリティ + (/usr/src/sbin). + + + + + src-share release=cvs + + 多様なシステム間で共有可能なファイル + (/usr/src/share). + + + + + src-sys release=cvs + + カーネル + (/usr/src/sys). + + + + + 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 + + World Wide Web のデータ用のソースです. + + + + + + + cvs-crypto release=cvs + + 輸出規制された暗号化コードです. + + + + src-crypto release=cvs + + 輸出規制された FreeBSD + プロジェクト外部からのユーティリティおよび + ライブラリ, 比較的無修正 + (/usr/src/crypto). + + + + + src-eBones release=cvs + + Kerberos および DES + (/usr/src/eBones). + + + + + src-secure release=cvs + + DES (/usr/src/secure). + + + + + + + distrib release=self + + CVSup + サーバ自身のコンフィグレーションファイルです. CVSup + ミラーサイトが使用します. + + + + + gnats release=current + + GNATS バグトラッキングデータベースです. + + + + + mail-archive release=current + + FreeBSD 関連メーリングリストのアーカイブ. + + + + www release=current + + インストールされた World Wide Web のデータです. + WWW ミラーサイトが使用します. + + + + + + + 詳細について + + CVSup の FAQ や CVSup に関するその他の情報については + + The CVSup Home Page をご覧ください. + + CVSup のほとんどの FreeBSD + 関連の議論は &a.hackers; で おこなわれています. + ソフトウェアの新しいバージョンは &a.announce; で + アナウンスされます. + + 質問とバグ報告はプログラムの作者, + cvsup-bugs@polstra.com へ + 送ってください. + + + + + + <command>make world</command> でシステムを再構築する + + Contributed by &a.nik;. + + 訳: &a.jp.y-koga;. + 16 March 1998. + + FreeBSD のどれか特定のバージョン (stable, + current など) + について, ローカルのソースツリーを同期させたら, + そのソースツリーを使ってシステムを + 再構築しなければなりません. + + その方法については, http://www.nothing-going-on.demon.co.uk/FreeBSD/make-world/make-world.html が今のところ一番よいチュートリアル資料です. + + このチュートリアルの次のバージョンは, ハンドブックに統合される予定です. + + + + diff --git a/ja_JP.eucJP/books/handbook/disks/chapter.sgml b/ja_JP.eucJP/books/handbook/disks/chapter.sgml new file mode 100644 index 0000000000..81329e0185 --- /dev/null +++ b/ja_JP.eucJP/books/handbook/disks/chapter.sgml @@ -0,0 +1,211 @@ + + + + ディスク + + 原作 &a.obrien; 26 April 1998 + 訳: &a.jp.yoshiaki;. 19 July 1998. + + 1台だけディスクのあるマシンに新しい SCSI ディスクを追加する + 場合について述べましょう. まず, コンピュータの電源を切り, + コンピュータにコントローラとドライブを接続します. これには + 様々な手順がありえるため詳細についてはこのドキュメントの範囲外 + です. + + rootユーザとして login します. + ドライブを接続した + あとで /var/run/dmesg.boot を調べて, + 新しいドライブが + 認識されたことを確認します. 以下の例では, あたらしく加える + ドライブは sd1 で + /1 へマウントしたいとします. + (IDE ドライブを加える場合はsd の代りに + wdを使います) + + FreeBSD は IBM-PC 互換コンピュータで動作しますので, + (訳注: 通常の場合では) + ディスクは PC BIOS パーティションに属しなければなりません. + これは伝統的な BSD パーティションとは異なります. PC のディスク + は最大4までのエントリを持ちます. もしディスク全体を FreeBSD に + わりあてるのであれば, + ディスク全体を使用を選ぶことが + できます. そうでないなら PC BIOS パーティションの一つに + FreeBSD を入れることになります. FreeBSD では PC BIOS + パーティションのことを slices と呼びます. + 伝統的な + BSD パーティションと混同するのを防ぐためです. FreeBSD のために + つくったスライスをつかうこともできますし, ほかの OS を + インストールしてあるスライスをつかうこともできます. + これは他のオペレーティングシステムの fdisk + ユーティリティの混乱を引き起こしません. + + スライスをつかう場合, ドライブは + /dev/sd1s1e のよう + な形で加えられます. これは, SCSI ディスクの, ユニット番号1 + (2台目の SCSI ディスク), スライス1 (PC BIOS パーティション1), + e BSD パーティションという意味です. + 全体を割り当てる場合は, ドライブは /dev/sd1e + という単純な形になります. + + + sysinstall を利用する + + + /stand/sysinstallを利用すると, + 新しいディスクの + パーティションやディスクラベルの設定をメニューから簡単に + 行うことができます. + rootユーザで login するか + su コマンドを使います. + /stand/sysinstall を動かし, + カスタム メニューに入ります. + カスタムメニュー で + パーティション + を選びます. そうするとシステムに接続されているハードディスクの + リストがあらわれるでしょう. sd1 + がリストに無い場合は接続と + /var/run/dmesg.boot にある + dmesg の出力を + チェックする必要があります. + + + sd1を選び, FDISK + パーティションエディタ に入ります. ディスク全体を + FreeBSD でつかうのであれば A を選びます. + 正しいパーティションエントリを保持して, このドライブには + 将来的に他のオペレーティングシステムを + 同居させる余地を残しますか? と聞かれますので, + そうしたい場合はYES を選んでください. + 変更をディスクに書き込むにはW + コマンドを使います. FDISK + エディタを終了するにはqコマンドを使います. + FDISK エディタを終了すると Master Boot Record + について質問されます. + すでに動いているシステムにディスクを追加するのですから + None を選びます. + + 次に ディスクラベルエディタに入ります. + ここで BSD の伝統的パーティションをつくります. + ディスクには a から h + までのラベルがついた + 8区画のパーティションをつくることができます. + 一部のパーティションのラベルについては特別に扱われます. + a パーティションは root パーティション + (/) に + 使われます. したがって, システムディスク(すなわち ブートを行う + ディスク)に 1つだけa + パーティションをつくるべきです. + b + パーティションは swap パーティションとして使われ + ます. swap パーティションは複数のディスク上につくっても + かまいません. c + パーティションは「ディスク全体を使用」 + としている場合はディスク全体をさします. スライスを利用している + 場合は FreeBSD のスライス全体をさします. そのほかの + パーティションは一般的な目的に利用します. + + sysinstall のラベルエディタは root や swap 以外の + パーティションでは e + をつかうように勧めます. + ラベルエディタでは単一のファイルシステムを作成するには + C コマンドをつかいます. + FS (ファイルシステム) か swap かを聞いてきますので + FS を + 選びマウントポイントを入力(/mnt + のように)します. + インストール後の設定のモードではディスクの追加をするときに, + sysinstall は /etc/fstab + にエントリを作成しません. + したがってここでのマウントポイントの入力は + 重要ではありません. + + これでディスクへのディスクラベルの書き込みと + ファイルシステムの作成の準備ができました. + W を + 押してください. sysinstall が新しいパーティションがマウント + できないことについてエラーを出しますが無視してください. + ラベルエディタから抜けて sysinstall を終了してください. + + 最後のステップは /etc/fstab + の編集で, 新しいディスクのエントリを追加します. + + + + コマンドラインユーティリティの利用 + + + * スライスを利用する + + + + + + ディスク全体を利用する + + 新しいドライブを別のオペレーティングシステムで共有しない + 場合, ディスク全体を利用 (dedicated mode) + することも + できます. このモードではダメージが与えられるということは + ありませんが Microsoft のオペレーティングシステムが混乱する + ということを覚えておいてください. + IBM の OS/2 では認識できない場合, すべて占有されていると + 解釈します. + + &prompt.root; dd if=/dev/zero of=/dev/rsd1 bs=1k count=1 +&prompt.root; disklabel -Brw sd1 auto +&prompt.root; disklabel -e sd1 # `e' パーティションの作成 +&prompt.root; newfs -d0 /dev/rsd1e +&prompt.root; mkdir -p /1 +&prompt.root; vi /etc/fstab # /dev/sd1e のエントリ +&prompt.root; mount /1 + + 別の方法は: + + &prompt.root; dd if=/dev/zero of=/dev/rsd1 count=2 +&prompt.root; disklabel /dev/rsd1 | disklabel -BrR sd1 /dev/stdin +&prompt.root; newfs /dev/rsd1e +&prompt.root; mkdir -p /1 +&prompt.root; vi /etc/fstab # /dev/sd1e のエントリ +&prompt.root; mount /1 + + + + + * 伝統的なものとは異なるドライブ + + + * Zip ドライブ + + + + + + * Jazz ドライブ + + + + + + * Sequest ドライブ + + + + + + + diff --git a/ja_JP.eucJP/books/handbook/eresources/chapter.sgml b/ja_JP.eucJP/books/handbook/eresources/chapter.sgml new file mode 100644 index 0000000000..c9a5567c30 --- /dev/null +++ b/ja_JP.eucJP/books/handbook/eresources/chapter.sgml @@ -0,0 +1,1318 @@ + + + + インターネット上のリソース + + 原作: &a.jkh;. + + 訳: &a.jp.yuki;. + 28 August 1996 + + FreeBSD の進歩が急速であるため, + 最新の開発をフォローするためには, + 印刷したメディアは実用的でなくなっています. 大抵の場合, + 最新情報を入手する方法としては, 電子的なリソースが ベストです. + FreeBSDはボランティアの努力によって, ユーザコミュニティ自体が, + 一種の“テクニカルサポート部門”としての + 役割も通常果たしており, + 電子メールやUsenetのニュースがこれらのコミュ + ニティにたどり着く最も効果的な方法になっています. + + 以下に, FreeBSD + ユーザコミュニティに連絡を取る場合の最も重要な点についての + 概略を示します. + もしここに書かれていない他のリソースに気がついた場合は, それらを + &a.doc; に送って頂ければ, + それらをここに含めるかもしれません. + + + メーリングリスト + + 多くのFreeBSDの開発メンバはUSENETを読むことができますが, + もし, comp.unix.bsd.freebsd.* + のグループの一つに質問を投稿したとしても + タイムリにその質問を受け取るということは保証できません. + 質問を適切なメーリングリストに投稿すれば, + 私たちかFreeBSDの関係者から, よりよい + (そして少なくともより早い) + 反応がいつでも得られることでしょう. + + さまざまなメーリングリストの憲章を + このドキュメントの最後に記載しま す. 私たちは, + メーリングリストの質, 特に技術面に関する質を高く保つ + ために努力しているので, + メーリングリストに参加する前にその憲章を読んで ください. + 私たちのメーリングリストの参加者のほとんどは, + 現在非常 にたくさんの FreeBSD + に関連したメッセージを毎日受け取っており, メーリン + グリストに対するふさわしい + 用いられ方をするための憲章やルールを決めるこ とによって, + メーリングリストの S/N 比を高くする保つように励んでいます. + そうしないと, 結果的に, メーリングリストがプロジェクトにとって + 事実上のコミュニケーションの手段になってしまうでしょう. + + メーリングリストはいずれもアーカイブされており, それらは + FreeBSD World Wide Web + server で検索することができます. + キーワード検索可能なアーカイブの提供は, + 良くある質問に対する回答を見つけるすぐれた方法ですから, + 質問を投稿する前に調べてみるべきでしょう. + + + メーリングリストの概説 + + 一般的なメーリングリスト: + 以下のものは誰でも自由に参加できる (そしておすすめの) + 一般的なものです: + + + + + + リスト + 目的 + + + + + + freebsd-advocacy + FreeBSD の福音伝道 + + + + freebsd-announce + 重要なイベントやプロジェクトのマイルストン + + + + freebsd-bugs + バグレポート + + + + freebsd-chat + FreeBSD + コミュニティに関連する技術的ではない話題 + + + + freebsd-current + FreeBSD-current の使用に関連する議論 + + + + freebsd-isp + FreeBSD を用いている + インターネットサービスプロバイダの話題 + + + + freebsd-jobs + FreeBSD 関連の雇用機会に関する話題 + + + + freebsd-newbies + FreeBSD 初心者ユーザの活動と議論 + + + + freebsd-questions + ユーザからの質問と技術サポート + + + + freebsd-stable + FreeBSD-stable の使用に関連する議論 + + + + + + 技術的なメーリングリスト: + 以下のメーリングリストは, 技術的な 議論のためのものです. + それらの利用や内容のためにしっかりとしたガイドラ + インがあるので, これらのメーリングリストに入ったり, + どれか一つにメール を送ったりする前には, + それらのメーリングリストの憲章を注意深く読むべきで す. + + + + + + リスト + 目的 + + + + + + freebsd-afs + FreeBSD へのAFSの移植 + + + + freebsd-alpha + FreeBSD の Alpha への移植 + + + + freebsd-doc + FreeBSD 関連ドキュメントの作成 + + + + freebsd-database + FreeBSD + 上でのデータベースの利用や開発に関する議論 + + + + freebsd-emulation + Linux/DOS/Windows + のような他のシステムのエミュレーション + + + + freebsd-fs + ファイルシステム + + + + freebsd-hackers + 一般的な技術の議論 + + + + freebsd-hardware + FreeBSD の走るハードウェアの一般的な議論 + + + + freebsd-isdn + ISDN 開発者 + + + + freebsd-java + Java 開発者や, FreeBSD へ JDK + を移植する人たち + + + + freebsd-mobile + モーバイルコンピューティングについての議論 + + + + freebsd-mozilla + mozilla の FreeBSD への移植に関する議論 + + + + freebsd-net + ネットワークおよび TCP/IP + ソースコードに関する議論 + + + + freebsd-platforms + Intel 以外のアーキテクチャのプラットフォームへの移植 + + + + freebsd-ports + ports コレクションに関する議論 + + + + freebsd-scsi + SCSI サブシステム + + + + freebsd-security + セキュリティに関する話題 + + + + freebsd-small + 組み込みアプリケーションにおける FreeBSD の利用 + + + + freebsd-smp + 対称 / 非対称の + マルチプロセッシングの設計に関する議論 + + + + freebsd-sparc + FreeBSD の Sparc への移植 + + + + freebsd-tokenring + FreeBSD でのトークンリングのサポート + + + + + + 制限されているメーリングリスト: + 以下のメーリングリストは参加 + するにはcore@FreeBSD.ORGの 認可が必要ですが, + それぞれの憲章の範囲内であれば, 提案やコメントは誰で + も自由に投稿することができます. + + + + + + メーリングリスト + 目的 + + + + + + freebsd-admin + 管理に関する話題 + + + + freebsd-arch + アーキテクチャや設計の議論 + + + + freebsd-core + FreeBSDコアチーム + + + + freebsd-hubs + ミラーサイトを運営している人達 + (基盤のサポート) + + + + freebsd-install + インストール関係の開発 + + + + freebsd-security-notifications + セキュリティに関する通知 + + + + freebsd-user-groups + ユーザグループの調整 + + + + + + CVSメーリングリスト: + 以下のメーリングリストはソースツリーの + さまざまな場所の変更のログメッセージを見ることに + 興味のある人向けです. + これらは読み専用のリストで, + これらにメールを送る事は出来ません. + + + + + + メーリングリスト + ソースの範囲 + (ソースの) 範囲の説明 + + + + + + cvs-all + /usr/src + ツリーのすべての変更 (スーパーセット) + + + + + + + + 参加方法 + + どのメーリングリストもFreeBSD.ORGにあるので, + メーリングリストにメールを送るには, ただ + listname@FreeBSD.ORG + にメールを送るだけです. すると, + メーリングリストに登録されている世界中のメンバに + 再配布されます. + + メーリングリストに参加するには, + subscribe <listname> [<optional + address>] + という内容をメッセージの本文に含むメールを &a.majordomo; + に送ります. 例えば, freebsd-announce + に参加したい場合は次のようにします: + + &prompt.user; mail majordomo@FreeBSD.ORG +subscribe freebsd-announce +^D + + もし, あなたが, 自分自身を違う名前 (メールアドレス) + で登録したい場合, あるいは, ローカルなメーリングリスト + (もしあなたのサイトに, 興味を持った仲間がいるなら, + これはより有効ですし, 私たちにとっても非常に嬉しいことです.) + を登録する申し込みをおこないたいのであれば, 次のようにします: + + + &prompt.user; mail majordomo@FreeBSD.ORG +subscribe freebsd-announce local-announce@somesite.com +^D + + 最後に, majordomo に対して + 他のタイプのコントロールメッセージを送ることで + メーリングリストから脱退したり, + メーリングリストの他のメンバのリストを 得たり, + 再びメーリングリストのリストを見たりすることも可能です. + 利用できるコマンドの完全なリストを入手するには, + 次のようにします: + + &prompt.user; mail majordomo@FreeBSD.ORG +help +^D + + 再度言いますが, + 私たちは技術的なメーリングリストでは技術的な議論を保つよう + 要求します. もし, + “高いレベル”にのみ興味があるなら, freebsd-announce + に参加するように勧めます. + これは少ないトラフィックの予定です. + + + + + メーリングリストの憲章 + + 全て 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-ADMIN + + 管理上の話題 + このリストは, 純粋に + freebsd.org + 関係の議論のためのメーリングリストで,プ + ロジェクトの資源の問題や乱用の報告を行ないます. + これはクローズドなリ ストですが, + 誰でも問題(私達のシステムを含みます!) + を報告できます. + + + + FREEBSD-ANNOUNCE + + 重要なイベント/マイルストン + これは, 単にたまに発表される重要な freebsd + のイベントに関心がある人のた めのメーリングリストです. + これは, スナップショットやその他のリリースに + ついてのアナウンスを含みます. + そのアナウンスは新しいFreeBSDの機能のア + ナウンスを含んでいます. + ボランティア等の呼びかけがあるかもしれませ ん. + これは流通量の少ないメーリングリストで, + 完全なモデレートメーリン グリストです. + + + + FREEBSD-ARCH + + アーキテクチャと設計の議論 + これは, FreeBSD + の設計に関する議論を行うモデレートメーリングリストです. + 内容は, 技術的な内容にほぼ限定されます. 稀に, + 全てのリスト登録者に配送する必要があると + 思われるメッセージを, モデレータが送る場合もあります. + 適切な話題の例: + + + + + 複数のカスタマイズされたビルドを同時に行うには, + ビルドシステムをどういじり直せばよいか + + + + VFS で Heidemann レイヤを動作させるには, + 何を修正する必要があるか + + + + 同一のドライバを複数のバスや + アーキテクチャで美しく使うには + デバイスドライバインターフェースを + どう改変すれば良いか + + + + + ネットワークドライバを + かくにはどうすればいいか + + + + 議長はこのリストに投稿されたメッセージに対し, + たいして重要ではない編集(スペルチェック, + 文法の修正と整頓) を行う権限を持っています. + このメーリングリストの流通量は少ないでしょう. + 活発な議論が行われている場合は, + 論議がおさまるまで新たなトピックの投稿を + 遅らせなければならないかも知れません. + + + + FREEBSD-BUGS + + バグレポート + これは, FreeBSD + のバグレポートのためのメーリングリストです. 可能である + 場合はいつでも, バグは &man.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つのメールにして送り出します. + 平均のサイズは約40kbyteです. こ + のメーリングリストは 読み専用で, + メールを送るような事はしない で下さい. + + + + FREEBSD-DOC + + ドキュメンテーションプロジェクト + + このメーリングリストは, の発行物や FreeBSD + 用のドキュメントの作成に関 + わるプロジェクトに関する議論を行なうためのものです. + このメーリングリストに参加しているメンバーを “ + FreeBSD ドキュメンテーションプロジェクト” + と呼びます. + このメーリングリストは公開されているので自由に参加 + ・投稿することができます. + + + + FREEBSD-FS + + ファイルシステム + FreeBSDのファイルシステムに関する議論 + これは技術的なメーリングリストなので, + 完全に技術的な内容を要求します. + + + + FREEBSD-ISDN + + ISDNコミュニケーション + このメーリングリストは, + FreeBSDに対するISDNサポートの開発の議論を + おこなう人のためのものです. + + + + FREEBSD-JAVA + + Javaの開発 + このメーリングリストは, FreeBSD + 向けのの重要なJavaアプリケーションの開発や, JDK + の移植やメンテナンスの + 議論をする人のためのものです. + + + + FREEBSD-HACKERS + + 技術的な議論 + これはFreeBSDに関する技術的な議論のための + フォーラムです. + これは最もテクニカルなメーリングリストです. + このメーリングリストは, FreeBSD + 上でアクティブに活動をしている人のためのもので, + 問題を持ち出したり, 代わりの解決法を議論します. + 技術的な議論をフォローするのに興味がある人も歓迎します. + これは技術的なメーリングリストなので, + 完全に技術的な内容を要求します. + + + + FREEBSD-HACKERS-DIGEST + + 技術的な議論 + freebsd-hackersメーリングリストのダイジェスト版です. + このダイジェスト はfreebsd-hackers + に送られたすべてのメッセージをまとめたものを, 1つのメー + ルにして送り出します. 平均のサイズは約40kbyteです. + このメーリングリス トは読み専用で, + メールを送るような事はしないで下さい. + + + + FREEBSD-HARDWARE + + FreeBSDのハードウェアの一般的な議論 + + FreeBSDが走っているハードウェアのタイプや, + 何を買ったり避けたりするかに関する様々な問題や, + 提案に関する議論. + + + + FREEBSD-INSTALL + + インストールに関する議論 + このメーリングリストは将来のリリースの + インストールに関する開発の 議論のためのもので, + クローズドなメーリングリストです. + + + + FREEBSD-ISP + + + インターネットサービスプロバイダのについての話題 + + このメーリングリストは, + FreeBSDを用いたインターネット サービスプロバイダ (ISP) + に関する話題の議論のためのものです. + これは技術的なメーリングリストなので, + 完全に技術的な内容を要求します. + + + + FREEBSD-NEWBIES + + 初心者の活動の議論 + どのメーリングリストでも扱われていなかった + 初心者の活動すべてをカバーします. 独学や問題解決, + リソースの見つけ方や使い方, 質問のしかた, + メーリングリストの使い方, + どのメーリングリストを読めばいいのか, 普通の世間話, + 間違いの犯し方, 自慢話, アイディアの共有, 物語, 道徳的な + (技術的でない) お手伝い, FreeBSD + コミュニティでの貢献のしかたなどの話題をが含まれます. + これらの問題を取り扱い, freebsd-questions + へ質問できるようサポートします. また, + 初心者の頃にはまった同じ事柄に悩んでいる + 他の初心者との出会いの場としてfreebsd-newbies + を活用してください. + + + + FREEBSD-PLATFORMS + + Intel以外のプラットフォームへの移植 + + クロスプラットフォームのFreeBSDの問題. Intel + 以外のプラットフォームへの FreeBSD + の移植についての一般的な議論や提案. + これは技術的なメーリングリストなので, + 完全に技術的な内容を要求します. + + + + FREEBSD-PORTS + + “ports” の議論 + FreeBSD の “ports コレクション” + (/usr/ports) や, 移植の提案, ports + コレクションの基盤の変更, + 一般的な整合化活動についての議論. + これは技術的なメーリングリストなので, + 完全に技術的な内容を要求します. + + + + FREEBSD-QUESTIONS + + ユーザからの質問 + FreeBSDに関する質問のためののメーリングリストです. + その質問がかなり技術的だと思わないのであれば, + “どのようにして” + という質問を技術的なメーリングリストに + 送るべきではありません. + + + + FREEBSD-QUESTIONS-DIGEST + + ユーザからの質問 + freebsd-questions + メーリングリストのダイジェスト版です. このダイジェストは + freebsd-questions + に送られたすべてのメッセージをまとめたものを, + 1つのメールにして送り出します. + 平均のサイズは約40kbyteです. + + + + 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 + + ユーザグループの調整のメーリングリスト + + これは, ローカルなユーザグループがお互いに, または, + コアチームが指定した個人と問題を議論する, + それぞれのローカルエリアのユーザグループからの + 調整人向けの メーリングリストです. + このメーリングリストはユーザグループ間の + ミーティングの概要やプロジェクトの調整に + 制限されるべきです. + これはクローズドなメーリングリストです. + + + + + + + + Usenet ニュースグループ + + 2つのFreeBSD用のニュースグループがあります. ここでは + FreeBSDの議論をするたくさんの様々な人がおり, + 他にもFreeBSD関連するユーザがいます. + これらのいくつかのニュースグループは Warren Toomey + wkt@cs.adfa.oz.au によって + Keyword searchable archives で, + 検索できるようになっています. + + BSD用のニュースグループ + + + + comp.unix.bsd.freebsd.announce + + + + comp.unix.bsd.freebsd.misc + + + + + + 関連する他の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 + + + + + + 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 + + + + + + + World Wide Web サイト + + + + + http://www.FreeBSD.ORG/ + — 本家のサーバ. + + + + + http://www.au.freebsd.org/FreeBSD/ + — オーストラリア/1. + + + + + http://www.au.freebsd.org/FreeBSD/ + — オーストラリア/2. + + + + + http://www.au.freebsd.org/FreeBSD/ + — オーストラリア/3. + + + + + http://www.au.freebsd.org/www.freebsd.org/ + — ブラジル/1. + + + + + http://www.br2.freebsd.org/www.freebsd.org/ + — ブラジル/2. + + + + + http://www3.br.freebsd.org/ + — ブラジル/3. + + + + + http://www.bg.freebsd.org/ + — ブルガリア. + + + + + http://www.bg.freebsd.org/ + — カナダ/1. + + + + + http://freebsd.kawartha.com/ + — カナダ/2. + + + + + http://www.dk.freebsd.org/ + — デンマーク. + + + + + http://www.ee.freebsd.org/ + — エストニア. + + + + + http://www.fi.freebsd.org/ + — フィンランド. + + + + + http://www.fr.freebsd.org/ + — フランス. + + + + + http://www.de.freebsd.org/ + — ドイツ/1. + + + + + http://www1.de.freebsd.org/ + — ドイツ/2. + + + + + http://www2.de.freebsd.org/ + — ドイツ/3. + + + + + http://www.hu.freebsd.org/ + — ハンガリー. + + + + + http://www.is.freebsd.org/ + — アイスランド. + + + + + http://www.ie.freebsd.org/ + — アイルランド. + + + + + http://www.jp.freebsd.org/www.freebsd.org/ + — 日本. + + + + + http://www.kr.freebsd.org/ + — 韓国. + + + + + http://www.lv.freebsd.org/ + — ラトビア. + + + + + http://rama.asiapac.net/freebsd/ + — マレーシア. + + + + + http://www.nl.freebsd.org/ + — オランダ. + + + + + http://www.no.freebsd.org/ + — ノルウェー. + + + + + http://www.pl.freebsd.org/ + — ポーランド. + + + + + http://www.pt.freebsd.org/ + — ポルトガル/1. + + + + + http://www2.pt.freebsd.org/ + — ポルトガル/2. + + + + + http://www3.pt.freebsd.org/ + — ポルトガル/3. + + + + + http://www.ro.freebsd.org/ + — ルーマニア. + + + + + http://www.ru.freebsd.org/ + — ロシア/1. + + + + + http://www2.ru.freebsd.org/ + — ロシア/2. + + + + + http://www3.ru.freebsd.org/ + — ロシア/3. + + + + + http://www4.ru.freebsd.org/ + — ロシア/4. + + + + + http://www.sk.freebsd.org/ + — スロバキア. + + + + + http://www.si.freebsd.org/ + — スロベニア. + + + + + http://www.es.freebsd.org/ + — スペイン. + + + + + http://www.za.freebsd.org/ + — 南アフリカ/1. + + + + + http://www2.za.freebsd.org/ + — 南アフリカ/2. + + + + + http://www.se.freebsd.org/ + — スウェーデン. + + + + + http://www.tr.freebsd.org/ + — トルコ. + + + + + http://www.ua.freebsd.org/ + — ウクライナ/1. + + + + + http://www2.ua.freebsd.org/ + — ウクライナ/2. + + + + + http://www.uk.freebsd.org/ + — イギリス. + + + + + http://freebsd.advansys.net/ + — アメリカ/インディアナ. + + + + + http://www6.freebsd.org/ + — アメリカ/オレゴン. + + + + + http://www2.freebsd.org/ + — アメリカ/テキサス. + + + + + + diff --git a/ja_JP.eucJP/books/handbook/hw/chapter.sgml b/ja_JP.eucJP/books/handbook/hw/chapter.sgml new file mode 100644 index 0000000000..17e64ae5dc --- /dev/null +++ b/ja_JP.eucJP/books/handbook/hw/chapter.sgml @@ -0,0 +1,6230 @@ + + + + PC ハードウェアコンパチビリティ + + 訳: &a.jp.yoshiaki;. + 23 March 1998. + + ハードウェアコンパチビリティの問題は現在の + コンピュータ業界でもっ とも多く起きる種類の問題であり, + FreeBSDもこれに無縁ではありません. + 市場にある驚くほど多様な種類の製品をサポートしたことで, + 安価に普及し ている PCハードウェアで動かすことができるという + FreeBSDの利点はこの 点では不利でもあります. + FreeBSDのサポートするハードウェアを徹底的に調べて提供することは不 + 可能ですが, このセクションでは + FreeBSDに含まれるデバイスドライバとそ + のドライバがサポートするハードウェアのカタログを示します. + 可能で適切 なものについては特定の製品についての注釈を含めました. + また, このハンドブックの コンフィグレーション + ファイル のセクションにも + サポートされているデバイスのリストがありますので + そちらもご覧ください. + + FreeBSD + はボランティアプロジェクトでテスト部門には資金がありません から, + より多くの情報をこのカタログに載せるにはあなたがたユーザに + 頼らなければなりません. あなた自身の経験により, + あるハードウェアが + FreeBSDで動くか動かないかがわかったとしたら&a.doc; へ + e-mailして知らせてください. サポートされているハードウェアについて + の質問は, &a.questions;(詳しいことは メーリングリスト + を参照してください) へ 宛ててください. + 情報を提供したり質問をする時は FreeBSDのバージョンと使っ + ているハードウェアのできるだけ詳しい情報を含めることを + 忘れないでくだ さい. + + + インターネット上のリソース + + 以下のリンクはハードウェアを選ぶのに役に立ちます. + FreeBSDに対して は必要のない (あるいは適用できない) + ように見えるかもしれませんが, ここ + からのハードウェアの情報のほとんどは OSに依存しないものです. + 購入をする前にはあなたの選んだものがサポートされているか + FreeBSDハード ウェアガイドを注意して読んでください. + + + + Toms's Hardware & Performance Guide + + + + 訳注: 日本国内でFreeBSDの動くハードウェアの情報を提供してい + るWWWサーバがあります. + + + + FreeBSD POWERED hardwares + + + + これ以外にも情報を提供しているサーバはあります. いくつかの + URLについて はFreeBSD + Japan. からたどることができます. + + + + 組合せの見本 + + 以下のハードウェアの組合せのサンプルリストは + ハードウェアベンダや FreeBSD + プロジェクトが保証するものではありません. この情 + 報は公共の利益のために公開しているものであり, + 極めて数多くあるであろう + 異なったハードウェアの組合せの中からのある経験の + カタログに過ぎません. やり方はいろいろあります. + 場合によってはうまく行かないこともあります. + 十分気をつけてください. + + + Jordan氏の選んだ組合せ + + 私の作ったワークステーションとサーバの構成は + まずまずうまく行っ ています. + 私はこれを保証できるわけでもありませんし, ここにあげた組 + 合せがずっと “best buys”であるわけではありません. + 私はできればリス + トを更新して行きますがそれがいつになるかはわかりません. + + 訳注: &a.jkh; 氏は FreeBSDプロジェクト FreeBSD + コアチームのメンバです. + + + マザーボード + + Pentium Pro (P6)システム用で気に入っているのは Tyan + S1668 デュアルプロセッサマザーボードです. これは Intel + PR440FX 同様 オンボードの WIDE SCSI と 100/10MB Intel + Etherexpress NIC が ついています. + これを使えば最高の小型のシングルあるいは + デュアルプロセッサシステム (FreeBSD + 3.0ではサポートされています)を作ることができます. Pentium + Pro 180/256K チップの価格は非常に安くなっていますが, + いつまで手にはいるかはわかりません.. + + Pentium II には, どちらかと言えばひいき目ですが, Adaptec + SCSI WIDE コントローラのついた ASUS P2l97-S マザーボードです. + + For Pentium machines, the ASUS http://www.asus.com.tw/Products/Motherboard/Pentium/P55tp4/index.html + はミッドレンジからハイエンドの Pentium + サーバあるいはワークステーションシステムには + よい選択です. + + フォルトトレラントシステムを構築したいのであれば + パリティメモリを 使い, + 真に24時間/週7日間動作させ続けるアプリケーションであれば + ECCメモリを使うべきでしょう. + + + ECCメモリはいくらか性能のトレードオ フがあります + (それが重要なものであるかそうでないかはあなたのアプ + リケーションによりますが). しかし, + メモリエラーに対しては明らかに + フォルトトレランス性が強化されます. + + + + + ディスクコントローラ + + これはいくらかトリッキーです. 私は ISAから + PCIまですべてコンパチブ ルな Buslogic コント + ローラを使うようにすすめていましたが, 現在では ISAでは + Adaptec 1542CF, + EISA では Bt747c, PCIでは Adaptec 2940UW + をすすめるよう変わってきています. + + NCR/Symbios の + PCIカードも私のところではうまく動いています, ただ し + BIOS-less モデルのボード(SCSI ボード上に ROMらしいものがない + 場合は, マザーボード上に SCSIアダプタのための BIOSが必要な + ボードである可能性があります 訳注: SC-200など) + を使うのであれば + マザーボードがそれをサポートしているかどうか + 注意しなくてはなりま せん. + + PCIマシンで2つ以上の + SCSIコントローラが必要となるのであれば, + PCIバスの不足を防ぐために Adaptec 3940 + カードを考えてもいいでしょ う. これは1つのスロットで2台の + SCSIコントローラ(と内部バス)を持ち ます. + + + + ます. 市場には2つのタイプの 3940 がありますので + 注意しましょう. — 古いモデルでは AIC 7880 + チップを使っていますが, 新しいモデルでは AIC 7895 + を使っています. 新しいモデルでは CAM + ドライバのサポートが必要です. + これはまだ FreeBSD の一部では ありません. + 自分で付け加えるか, CAM binary snapshot リリースから + インストールする必要があります(URLを参照してください). + + + + + + ディスクドライブ + + 私は, 極々特殊な状況を除いて + “それだけのお金をかけることができる なら SCSIは + IDEよりもよい” と言っています. + 小規模なデスクトップ構成 のシステムでも, + SCSIであればディスクが安くなっていった時にサーバの + (古い入れ換えた) + ディスクを比較的簡単に移し替えることができます. あ + なたが複数のマシンの管理をしているのであれば単純に + 容量について考え るのではなく, 食物連鎖のように考えましょう. + 重要なサーバの場合は議論の余地はありません. + SCSI機器と品質の良いケーブルを使いましょう. + + + + CDROM ドライブ + + 私は SCSIの方が好みであるのでもちろん SCSI + CDROMを選びました. 東芝 のドライブは + 常に(スピードがどうであっても)お気に入りでしたが, 古い + Plextor PX-12CS + ドライブも好きです. 高々 12倍速のドライブですが, + 高い性能と信頼性を提供して くれています. + + 一般的には, 大部分の SCSI CDROM + ドライブは私の見た限りではほと んどしっかりした構造ですので + 多分 HPや NECの SCSI CDROMでも問題が起き + ることはないでしょう. SCSI CDROM + の価格はここ数ヶ月でかなり下落したよ うで, 技術的に + 優れた方法でありながら 現在では IDE CDROMと同じ程度の価 + 格になって います. もし IDE と SCSI の CDROM + ドライブの間で選択す ることができるのなら, 特に IDE + を選ぶ理由はないでしょう. + + + + CD-R (CD Recordable: WORM) ドライブ + + この原稿を書いている時点で, FreeBSDは 3種類の + CDRドライブ (私は これらすべては結局は + Phillips社のドライブであるのではない かと考えているのですが) + をサポートしています : Phillips CDD 522 (Plasmon + のドライブと同様の動作をします), PLASMON RF4100, HP 6020i + です. 私は HP 6020i を CDROMを焼くのに使っています(2.2 + 以降の システムで動きます. — それ以前のリリースの + SCSIコードでは動きません). 非常に調子よく動いています. + システムの /usr/share/examples/worm + を見てください. + ISO9660ファイルシステムイメージ (RockRidge拡張) + を作 るスクリプトと それを HP6020i CDR + で焼くためのスクリプトの例があり ます. + + + + テープドライブ + + 私はたまたま Exabyte8mm drivesHP4mm (DAT) を持っています. + + バックアップのためであれば, より本質的に丈夫な (また, + より容量が大きい) Exabyteの + 8mmテープの方がおすすめできます. + + + + ビデオカード + + もし (米国では) 99USドルをかけて商品の XサーバをXi Graphics, Inc. (以前の X + Inside, Inc.)から買うことができる なら間違いなく + Matrox Millenium + IIカードをおすすめします. + このカードは無償提供されている XFree86 + (現在のバージョンは 3.3.2です) + のサーバでも非常によく動きます. + + Number 9の S3 + Vision 868と 968 ベースのカード (the 9FX series) + はわりあいと速く, XFree86の S3サーバで + うまくサポートされています, 加えて現在では非常に低価格です. + まず問題も起きないでしょう. + + + + モニタ + + 私の持っている Sony Multiscan 17seII monitors + は非常に調子がいいので, 同じ (トリニトロン) + ブラウン管を使っている Viewsonic をおすすめします. + 17"よりも 大きなモニタ, 例えば 21" + のモニタが実際に必要だとしたらこの文章の執筆時点では + 2,000USドル以下のもの (20"のモニタでは 1,700USドル以下のもの) + はまったくすすめられません. + 20" 以上のク ラスでよいモニタは(いくつも) ありますし, + 20" クラスで安いモニタもあり ます. + うまくいかないことに安くてよいモニタはほとんどありません! + + + + + ネットワーキング + + まず最初に, Intel EtherExpress Pro/100B + カードをすすめます. ISA カードでは SMC Ultra 16 + コントローラ, いくらか安めのPCIベースのカード では SMC + 9392DST, SMC EtherPower と Compex ENET32カードがおすすめ + できます. 一般的に DECの DC2104x + イーサネットコントローラチップを 使っている Zynx ZX342 や + DEC DE435 などのカードはうまく動く でしょうし, (firewall や + roouter に便利な) 2-port 品や 4-port 品を + よく見つけることができますが, Pro/100B カードは最も少ない + オーバーヘッドで最高の性能を出すでしょう. + + もう一方, + できるだけ低コストでそこその性能で動くものを探しているなら, + ほとんどの NE2000のクローンは極めて低価格で + うまく動いてくれます. + + + + (特殊な) シリアル + + 高速のシリアル ネットワーク インタフェース + (同期シリアルカード) を探しているのであれば Digi International製の + SYNC/570 + シリーズのド ライバが今の FreeBSD-currentにあります. Emerging Technologies + も 提供 するソフトウェアにより T1/E1 + の性能が得られるボードを製造しています. + もっとも私が直接これらの製品を動かした + 経験があるわけではありません. + + 訳注:Emerging TechnologiesのWeb + ページを見るとカードのスペックに Operating Systems: MS-DOS, + MS-WINDOWS, System V UNIX, BSD/OS, FreeBSD, NetBSD and Linux + と書いてあります. また "BSD/OS, FreeBSD and LINUX Router + Card Solutions" というページ + もあってサポートは良さそうです. + + マルチポートカードの選択の幅はかなり広いですが, + FreeBSDがサポー トするいう点では Cyclades + の製品が最も信頼できるでしょう. この最大の理由はこ + の会社が私たちに十分な評価用ボードとスペックを + 供給することを約束し てくれているからです. 私は Cyclom-16Y + が最高の性能価格比であると聞 + いていましたが最近は価格のチェックはしていません. + + 訳注: cycladesの WWWサーバでも Supported Operating + Systemsに Linuxや BSDi, FreeBSD が明記されています. + + 他のマルチポートカードで評判がよいのは BOCAおよび + ASTのカードと Stallion + Technologiesで, このカードには ここ + で非公式なドライバが提供されてい るようです. + + + + オーディオ + + 私は現在 Creative + Labs AWE32 を 使っています. + もっともクリエイティブラボ製品が現在一般的にうまく + 動いているから, ということにすぎませんが. + 他のタイプのサウンド + カードは同様にうまくは動かないと聞いています. 単に私の経験が + 乏しいということにすぎないと言うことなのかも知れませんが. + (私は以前は GUS のファンでしたが, Gravis はサウンドカード + から撤退してしまいました). + + + + ビデオキャプチャー + + ビデオキャプチャーについては2つのいい選択肢があります + — Hauppage や WinTV などの Brooktree BT848 + チップベースのボードは FreeBSD で 非常にうまく動きます. + もう一つの動作するボードは Matrox Meteor + カードです. FreeBSD はクリエィティブラボの古い + video spigotカードの + サポートはしていますがこれは見つけるのは非常に + むずかしいでしょう. Meteor は 440FX + チップセットベースのマザーボードでは + 動きませんので注意してください. + 詳細はマザーボードの節を参照してください. + このような場合には BT848 ベースの + ボードを使った方がよいでしょう. + + + + + + 中心部/プロセッサ + + + + マザーボード, バス, チップセット + + + * ISA + + + + + + * EISA + + + + + + * VLB + + + + + + PCI + + 原作: &a.obrien; 投稿者: &a.rgrimes;. + 25 April 1995. + + 更新: &a.jkh;.最終更新 + 26 August 1996. + + 訳: &a.jp.yoshiaki;. + 12 October 1996. + + Intelの PCIチップセットについて, 以下にさまざまな種類 + の既知の不具合と問題の程度のリストを示します. + + + Mercury: + + ISAバスマスタがISAとPCIブリッジの向 + こう側にある場合は,キャッシュコヒーレンシ(一貫性)の + 問題があります. このハードウェア欠陥に対処してうま + く動かす方法はキャッシュを + offにする以外にはありません. + + + + Saturn-I + (82424ZX の rev 0, 1 ,2): + + ライトバックキャッシュのコヒーレンシに + 問題があります. + このハードウェア欠陥に対処してうまく動かす方法は + 外部キャッ + シュをライトスルーにすること以外にはありませ ん. + Saturn-IIにアップデートしましょう. + + + + Saturn-II + (82424ZX の rev 3 or 4): + + 問題なく動きます. + ただし多くのマザーボードではライトバッ ク動作に必要な + 外部ダーティビット SRAMが実装されていま せん. + 対策としてはライトスルーモードで動かすか, ダーティ + ビット SRAMをインストールするかがあります. (これは + ASUS PCI/I-486SP3G の rev 1.6 + 以降で使われています) + + + + Neptune: + + 2つより多くの(3台以上の)バスマスタデ + バイスを動かすことができません. Intelは設計の欠陥を + 認めています. 2つを越えるバスマスタを許さない, 特別な + 設計のハードウェアで PCIバスアービタを置き換えることに + より解決されています. (Intelの Altair boardや他にはい + くつかの Intelサーバグループマザーボードに見られます). + そして, もちろん Intelの公式の回答は Triton + チップセットへの 移行で, + “こちらでは修整した”ということです. + + + + Triton (430FX): + + 知られているキャッシュコヒーレンシ + やバスマスタの問題はありませんがパリティチェック機能が + ありません. パリティを使いたいような場合は, 可能であ + れば Triton-II + ベースのマザーボードを選びましょう. + + + + Triton-II (430HX): + + このチップセット + を使っているマザーボードに関するすべての + 報告によれば今の ところ好評です. + 既知の問題はありません. + + + + Orion: + + このチップセットの初期のバージョンでは PCI + write-posting にバグがあり, 大量の PCIバストラフィッ + クのあるアプリケーションでは性能の著しい低下があるとい + う障害がありました. B0以降のリビジョンのチップセットで + は問題は解決されています. + + + + + 440FX: + + これは + Pentium Pro に対応したチップセットで, + 初期の Orion チップセットにあったような問題は見られず, + 問題なく動 いているようです. + また, これは ECCやパリティを含んだ広い + 種類のメモリに対応しています. + 既知の問題は Matrox Meteor + ビデオキャプチャカードに関するものだけです. + + + + + + + + CPU/FPU + + 原作 &a.asami;. + 27 December 1997. + + + P6 クラス (Pentium Pro/Pentium II) + + Pentim Pro, Pentim IIとも + FreeBSDで使うのに全く問題はありません. 実際, 私たちのメイン + FTPサイトである ftp.freebsd.org + (世界一大きな FTPサイト "ftp.cdrom.com" + としても知られています) では Pentium Proで + FreeBSDを使っています. 詳しいことが知りたい人は, + コンフィグレーション へどうぞ. + + + + Pentium クラス + + Intel Pentium (P54C), Pentium MMX (P55C), AMD K6と + Cyrix/IBM 6x86MXプロセッサは全て + FreeBSDで動作確認がされています. どの + CPUが速いかということはここでは述べません. + インターネットを探せばあれが + 速いとかこっちの方がいいとか教えてくれるサイトは + いっぱいありますので, そちらをご覧ください. :) + + + 一つ注意しないといけないのは, CPU + によって必要な電源電圧や冷却の仕様が 異なるということです. + マザーボードが指定された電圧を供給できることを + 必ず確認しましょう. 例えば, 最近の + MMX チップにはコアと入出力で違う電圧を使うもの (コア 2.9V, + 入出力 3.3V など) がたくさんあります. また, AMDと + Cyrix/IBMのチップには + Intelの製品より熱くなるものがいくつかあります. + その場合には強力なヒートシンク/ファンを使いましょう. + (各社のホームページにお勧めの部品のリストがあります.) + + + + + クロックスピード + + 原作 &a.rgrimes;. + 1 October 1996. + + 更新 &a.asami;. + 最終更新 27 December 1997. + + Pentium クラスのマシンはシステムの + いくつかの部分で異なったクロックスピードを使っています. + これは CPU, 外部メモリバス, PCIバスです. + 別々のクロックスピードが使われるために“高速な” + CPUを使ったシステムが “低速な” + システムよりも必ずしも速いとは限りません. + それぞれの場合の違いを以下の表に示します. + + + + + + CPUクロック MHz + 外部クロックとメモリバス MHz + 外部クロックと内部クロックの比 + PCIバスクロック MHz + + + + + + 6060 + 1.030 + + 6666 + 1.033 + + 7550 + 1.525 + + 9060 + 1.530 + + 10050 + 225 + + 10066 + 1.533 + + 12060 + 230 + + 13366 + 233 + + 15060 + 2.530 (Intel, AMD) + + 15075 + 237.5 (Cyrix/IBM 6x86MX) + + 16666 + 2.533 + + 16666 + 2.533 + + 18060 + 330 + + 20066 + 333 + + 23366 + 3.533 + + + + + + 66 MHz は実際には 66.667 MHzかもしれませんが, + そうだと決まっているわけでもありません. + + Pentium 100 は 50MHzの外部クロックの 2 + 倍または 66MHz の 1.5 倍の両方で + 動かすことができます. + + + 3 倍クロック以上の CPU ではメモリアクセス速度が + 不足気味であるという点には注意していただきたいですが, + 上の表を見るかぎりでは 100, 133, 166, 200, 233 + MHzを使うのが最良だというのがわかります. + + + + AMD K6のバグ + + AMDの K6プロセッサで大きなコンパイルをすると, + セグメンテーションフォルトで + プロセスが落ちることがあるという事例が + 1997年に多数報告されました. これは + '97年の第3四半期に直ったようです. 情報を総合すると, + チップ上の製造年週が “9733” (97年の + 第33週に製造) + 以降のものは大丈夫ということのようです. + + + + + * 486 クラス + + + + + + * 386 クラス + + + + + + 286 クラス + + FreeBSDは 80286マシンでは動きません. 現在の巨大なフ + ルスペックの + UNIXをこのようなハードウェアで動かすことはほとんど + 不可能でしょう. + + + + + メモリ + + FreeBSDをインストールするのに最低限必要なメモリ量は 5 + MBです. いったんシステムが起動してカスタムカーネルを + 作ることができるならば, もっと少ないメモリ + で動かすこともできます. boot4.flp + を使えば 4 MB しかメモリがなく + てもインストールできます. + + + + * BIOS + + + + + + + 入力/出力デバイス + + + * ビデオカード + + + + + + * サウンドカード + + + + + + シリアルポートとマルチポートカード + + + UART とは何か, そしてどのように動作するか + + Copyright © 1996 &a.uhclem;, + All Rights Reserved. + 13 January 1996. + + 訳: &a.jp.saeki;, &a.jp.iwasaki;. + 11 November 1996. + + ( ここからは &a.jp.saeki; が翻訳を担当) + + 汎用非同期送受信コントローラ (UART) + はコンピュータのシリアル通信 サブシステムの鍵となる部品です. + UART は何バイトかのデータを受けとり, これを 1 + ビットずつ順番に送信します. 受信側では, もう一つの UART が + このビット列を完全なバイト列に組み立て直します. + + シリアル転送は, + モデムやコンピュータ間の非ネットワーク型の通信, + ターミナルその他のデバイスで広く使われています. + + シリアル転送には主に同期と非同期という + 二つの形式があります: 通信サブシステムの名前は, + そのハードウェアでサポートされている + 通信モードによって変化します. 通常, + 非同期通信をサポートしているものは文字 A + を含み, 同期通信をサポートしているものは文字 + S を含みます. + 以下で両方の形式について詳しく説明します. + + 通常使われている略号は以下の通りです: +
+ UART 汎用非同期送受信装置 (Universal + Asynchronous Receiver/Transmitter) +
+ +
+ USART 汎用同期-非同期送受信装置 (Universal + Synchronous-Asynchronous Receiver/Transmitter) +
+ + + 同期シリアル転送 + + 同期シリアル転送では, + 送信側と受信側がクロックを共有している 必要があります. + さもなければ, 送信側がストローブまたは + その他のタイミング信号を供給して, + 受信側にデータの次のビットを いつ“読み込” + めばよいのかを知らせる必要があります. + + ほとんどの同期シリアル通信では, + 常に何らかのデータが転送され続けます. そのため, + 転送のタイミングまでに送信データが用意できていなければ, + 通常のデータのかわりに「埋め草」 (fill character) + が送られます. 同期通信では, + 送信側と受信側との間でデータビットのみが転送されるため, + 同じビット速度の非同期シリアル通信に比べて効率的です. + しかし, + 送信側と受信側でクロック信号を共有するために余分な電線と + 回路が必要となる場合には, + よりコスト高となる可能性があります. + + プリンタやハードディスクでも同期転送の + 一種が使用されています. このときデータが 1 + 組みの電線で送られる一方, クロック信号または + ストローブ信号が別の電線で送られます. + プリンタやハードディスクは通常, + シリアルデバイスではありません. + ほとんどのハードディスクのインターフェース規格では, + データを送るための + 線とは別にクロックまたはストローブ信号を + 送るための線を持っていて, ストローブ 1 + 回毎に一つのデータ全体を送ります. PC 産業界では, + これらはパラレルデバイスとして知られています. + + PC の標準的なシリアル通信ハードウェアは, + 同期モードをサポートして いません. + ここで同期モードについて述べたのは, 非同期モードとの + 比較のために過ぎません. + + + + 非同期シリアル転送 + + 非同期転送は, + 送信側がクロック信号を受信側に送らなくても + データを転送することができます. そのかわり, + 送信側と受信側は + あらかじめタイミングパラメータや同期のために追加される + 特別なビットについて + 取り決めをおこなっておかなければなりません. + + 非同期転送をおこなうために UART + にデータが与えられると, 「スタートビット」 + と呼ばれるビットが転送データの先頭に追加されます. + スタートビットはデータの転送開始を受信側に + 知らせるために使われ, + これにより受信側のクロックを送信側のクロックに + 同期させます. この二つのクロックは, + 転送データの残りのビットを転送する間に 10% + 以上ふらつかないように正確なものでなければなりません. + (この条件は機械式テレタイプの時代に定められたものなので, + 現代の電子装置であれば容易に満足させることができます). + + + スタートビットが送られた後, データの各ビットが最下位 + (LSB) から 順番に送られます. + 転送されるビットの長さはすべて同じになっていて, + 受信側はそれぞれのビットの中央部でそれが + 10 + かを判断します. 例えば, 仮に 1 ビットを送るのに 2 + 秒かかるとすると, 受信側は + スタートビットの始まりを認識した 1 秒後に信号が + 10 かを調べ, + その後 2 + 秒ごとに次のビットの値を調べるという動作を繰り返します. + + + 送信側は, いつ受信側がビットの値を “見た” + のかはわかりません. 送信側はクロックにしたがって + 次々にビットを転送するだけです. + + 設定によっては, 1 ワードのデータ全体が送られたあとに + 送信側が内部で生成したパリティビットを + 付加する場合があります. + パリティビットは受信側で簡単なエラーチェックを + するために使われます. その後に, 最低でも 1 + ビットのストップビットが送られます. + + 1 ワードのすべてのビットを受信すると, + 受信側がパリティビットの + チェックをおこなうように設定することができます. + (パリティビットを 使用するかどうか, + 送信側と受信側であらかじめ取り決めておかなければ + なりません). + それから受信側はストップビットをチェックします. + もしもストップビットが期待通りの位置に存在しなければ, UART + は 転送エラーが発生したと判断して, + ホストがデータを読もうとした時に + フレーミングエラーが起きたと報告します. 通常, + フレーミングエラーは + 送信側と受信側のクロックが一致していなかったり, + 信号に割り込みが 入った時に起こります. + + データが正しく受信されたかどうかにかかわらず, UART + はスタート, パリティ, ストップビットを自動的に捨てます. + 送信側と受信側で設定が正しく一致していれば, + これらのビットが + 誤ってホストに転送されることはありません. + + 1 + 回の転送が終了する前に次のデータの転送準備ができていれば, + 前のデータのストップビットを送った後, 間を空けずに + 次のデータのスタートビットを送ることができます. + + 非同期転送データは“自己同期”なので, + 転送するべきデータがない場合は + 転送路は空き状態になります. + + + + UART のその他の機能 + + 転送のためにデータをパラレルからシリアルに変換し, + 受信時に + シリアルからパラレルに戻すという基本的な機能の他に, UART + は通常, 転送路の状態を示したり, + リモートデバイスで次のデータを受けとる準備が + できていない場合にデータの流れを抑制するのに + 使われる信号のための 付加回路も持っています. 例えば UART + に接続されているデバイスがモデムの場合, モデムは + 回線上に搬送波 (carrier) + が存在していることを報告するかもしれません. 一方, + コンピュータはこれらの付加信号を操作することにより + モデムのリセットをおこなったり, + かかってきた電話を取らないように + モデムに指示するかもしれません. + これらの付加信号の機能はそれぞれ EIA RE232-C + 規格で定義されています. + + + + RS-232C と V.24 規格 + + ほとんどのコンピュータシステムでは, UART は EIA + RS-232C 規格に + 準拠した信号を生成するための回路に接続されています. また, + RS-232C の仕様を反映した, V.24 という CCITT 規格に + 準拠したシステムも存在しています. + + + RS-232C のビット割り当て (マークとスペース) + + RS-232C では, 1 + の値をマーク, 0 + の値をスペースと 呼びます. + 通信路にデータが流れていない時, + 回線は“マーキング” であるとか, + 1 + の値を連続して転送し続けているとか言われます. + + スタートビットは常に 0 (スペース) + で, ストップビットは常に 1 (マーク) + です. このことは, + たとえ複数のデータが連続して転送されている場合でも, + それぞれのデータの転送開始時には必ず, マーク (1) から + スペース (0) + への遷移が回線上で起こるということを意味しています. + + これによって, + 転送されるデータビットの内容にかかわらず, + 送信側と受信側の + クロックを同期させることができるのです. + + ストップビットとスタートビットの間の空き時間は, + その通信路で 1 + ビットを転送するのに必要な時間の正確な倍数である + 必要はありません. (倍数にはゼロを含みます). しかし, + ほとんどの UART では 設計の単純化のために, + 倍数になるように設計されています. + + RS-232C では, 「マーク」信号 (1) + は -2V から -12V の間の電圧で, 「スペース」信号 + (0) は 0V から +12V + の間の電圧で示されます. 送信部は +12V または -12V + を送ることになっていて, 受信部では + 長いケーブルによるいくらかの電圧ロスを + 許容するように定められています. + (ポータブルコンピュータなどで使用されている) + 低消費電力デバイスの 送信部では しばしば +5V と -5V + のみを使用していますが, 短いケーブルを使用するならば, + これらの電圧も RS-232C 受信部の + 許容範囲に入っています. + + + + RS-232C のブレーク信号 + + RS-232C は ブレーク + と呼ばれる信号についても定めています. これは + (スタートビットもストップビットも無しで) 連続して + スペースの値を送ることで発生されます. + データ回路に電流が流れていない場合は, 回線は + ブレーク + を送り続けているものと解釈されます. + + ブレーク 信号は完全な 1 + バイトとスタート, ストップ, パリティ + ビットを送るために必要な時間よりも + 長い間続かなければなりません. ほとんどの UART + はフレーミングエラーとブレークを区別することが + できますが, もしも これを区別できない UART があった場合, + フレーミングエラーの検出をブレークの識別のために + 使用することができます. + + テレタイプの時代には, + 国中でおびただしい数のテレタイプが + (ニュースサービスなどで) 電線で直列に接続されていました. + 任意のテレタイプユニットは, + 電流が流れないように一時的に回路を オープンにすることで + ブレーク + 信号を発生させることができました. これは, + 他のテレタイプが情報を送信している間に, 緊急ニュースを + 送る必要のあるテレタイプが + 割り込みをかけるために使われました. + + 現在のシステムでは, + ブレーク信号には二つのタイプがあります. + もしブレーク信号が 1.6 秒よりも長ければ, それは + 「モデムブレーク」であると解釈されます. + モデムがこの信号を検出すると, + 通信を終了して電話を切ったり, コマンドモードに入るように + プログラムされていることがあります. もしブレーク信号が + 1.6 秒よりも短ければ, それはデータブレークを 示します. + この信号に応答するのはリモートコンピュータの仕事です. + この形のブレークは, + しばしば注意喚起または割り込みのための信号として 使われ, + ASCII の CONTROL-C + 文字の代用とされることもあります. + + マークとスペースは紙テープシステムでの + “穴空き” と “穴無し” に + 相当しています. + + + ブレーク信号は, + 紙テープまたはその他のバイト列から生成できない + ことに注意してください. + なぜならバイト列は常にスタートビットや + ストップビットとともに送られるからです. UART + には通常, ホストプロセッサからの特別なコマンドにより + 連続したスペース信号を生成する能力があります. + + + + + RS-232C の DTE デバイスおよび DCE デバイス + + RS-232C 規格は二つのタイプの装置を定めています: + それはデータターミナル装置 (DTE) とデータキャリア装置 + (DCE) です. 通常, DTE デバイスはターミナル + (またはコンピュータ) で, DCE は モデムです. + 電話回線を介した通信のもう一方の端である受信側のモデムも + また DCE デバイスで, + そのモデムに接続されているコンピュータは DTE + デバイスです. DCE デバイスが信号を受け取るピンは DTE + デバイスが 信号を送るピンであり, + また逆も同様です. + + 二つのデバイスがともに DTE であったり, ともに DCE + であって, + モデムやそれに類似したメディア変換装置を介さずに + 接続する必要が ある場合, ヌルモデム (NULL modem) + を使わなければなりません. + ヌルモデムはケーブルを電気的に再配列し, + 一方のデバイスの送信出力が + もう一方のデバイスの受信入力に接続され, + その逆もまた同様に 接続されるようにしてくれます. + 同様の変換はすべての制御信号についておこなわれ, + それぞれのデバイスが 他方のデバイスからの DCE (または + DTE) 信号を受けとれるようになります. + + DTE デバイスと DCE + デバイスで生成される信号の数は等しくありません. DTE + デバイスが DCE デバイスのために生成する信号の数は, DTE + デバイスが DCE デバイスから受けとる信号の数よりも + 少なくなっています. + + + + RS-232C のピン割当て + + EIA の RS-232C 規格 (およびこれに相当する ITU の + V.24 規格) は 25 ピンのコネクタ (通常 DB25 が使われます) + を要求し, そのコネクタのほとんどのピンの + 使用目的を定義しています. + + IBM PC および類似のシステムでは, RS-232C + 信号のサブセットが 9 ピンのコネクタ (DB9) + で提供されています. 主に同期モードで使用される信号は PC + のコネクタには含まれていませんが, もともと + この転送モードは IBM が IBM PC で使用することにした UART + ではサポートされていません. + + メーカーによっては RS-232C 用のコネクタに DB25 か + DB9, + またはその両タイプのコネクタを使っている場合があります. + (IBM PC はパラレルプリンタインターフェースにも DB25 + コネクタを 使っているので, このことは + しばしば混乱を引き起こします.) + + 以下は DB25 および DB9 コネクタにおける RS-232C + 信号の割り当て表です. + + + + + + DB25 RS232-C 端子 + DB9 IBM PC 端子 + EIA 回路符号 + CCITT 回路符号 + 一般名称 + 信号源 + 説明 + + + + + + 1 + - + AA + 101 + PG/FG + - + 保安用接地 + + + + 2 + 3 + BA + 103 + TD + DTE + 送信データ + + + + 3 + 2 + BB + 104 + RD + DCE + 受信データ + + + + 4 + 7 + CA + 105 + RTS + DTE + 送信要求 + + + + 5 + 8 + CB + 106 + CTS + DCE + 送信可 + + + + 6 + 6 + CC + 107 + DSR + DCE + データセットレディ + + + + 7 + 5 + AV + 102 + SG/GND + - + 信号用接地 + + + + 8 + 1 + CF + 109 + DCD/CD + DCE + 受信キャリア検出 + + + + 9 + - + - + - + - + - + 予約 (テスト用) + + + + 10 + - + - + - + - + - + 予約 (テスト用) + + + + 11 + - + - + - + - + - + 未割当て + + + + 12 + - + CI + 122 + SRLSD + DCE + 従局受信キャリア検出 + + + + 13 + - + SCB + 121 + SCTS + DCE + 従局送信可 + + + + 14 + - + SBA + 118 + STD + DTE + 従局送信データ + + + + 15 + - + DB + 114 + TSET + DCE + 送信信号エレメントタイミング + + + + 16 + - + SBB + 119 + SRD + DCE + 従局受信データ + + + + 17 + - + DD + 115 + RSET + DCE + 受信信号エレメントタイミング + + + + 18 + - + - + 141 + LOOP + DTE + ローカルループバック + + + + 19 + - + SCA + 120 + SRS + DTE + 従局送信要求 + + + + 20 + 4 + CD + 108.2 + DTR + DTE + データ端末レディ + + + + 21 + - + - + - + RDL + DTE + リモートデジタルループバック + + + + 22 + 9 + CE + 125 + RI + DCE + 被呼表示 + + + + 23 + - + CH + 111 + DSRS + DTE + データ信号速度選択 + + + + 24 + - + DA + 113 + TSET + DTE + 送信信号エレメントタイミング + + + + 25 + - + - + 142 + - + DCE + テストモード + + + + + + + + + ビット, ボー, そしてシンボル + + ボーとは非同期通信における転送速度の単位です. + モデム通信技術の進歩により, 新しいデバイスのデータ速度を + 表記するにあたって, この用語が + しばしば誤って使われるようになりました. + + ボーレートは伝統的に, + 通信路を通して実際に送られるビットの数を 表します. ある + DTE デバイスからもう一方へと実際に移動した + データの量を表すものではありません. ボーレートは, 送信側 + UART で生成されて受信側 UART で取り除かれる スタート, + ストップ, パリティといったオーバーヘッドビットをも + 含んでいます. これは 1 ワード 7 + ビットのデータを送るためには, 実際には 10 ビットの + データが完全に転送される必要があるということを意味します. + そのため, もしパリティを使い, + スタートビットとストップビットが それぞれ 1 + ビットずつ存在する場合には, 1 秒あたり 300 ビットの + 転送能力を持つモデムでは, 7 ビットのワードを通常 30 個しか + 転送することができません. + + もし 1 ワード 8 + ビットのデータとパリティビットを使用する場合には, + データ転送速度は 1 秒あたり 27.27 ワードまで低下します. + なぜなら 8 ビットのワードを送るのに 11 ビットが必要で, + このモデムは 1 秒間に 300 + ビットしか送ることができないからです. + + 1 秒あたりの転送バイト数をボーレートに変換したり, + その逆をおこなう 計算式は, + エラー訂正をおこなうモデムが現れるまでは単純でした. + エラー訂正をおこなうモデムは, ホストコンピュータの UART + から シリアルのビット列を受けとり, + それをバイト列に戻します. + (内蔵モデムを使用している場合でさえ, データは今まで通り + 頻繁にシリアル化されます) + その後これらのバイトはパケットに変換され, + 同期転送方式を用いて 電話回線を通じて送信されます. これは + DTE (コンピュータ) 中の UART で追加されたストップ, + スタート およびパリティビットは, + モデムから送り出される前に, モデムによって + 取り除かれるということを意味します. + これらのバイト列がリモートモデムに受信されると, + リモートモデムは スタート, + ストップおよびパリティビットを追加して, それらを + シリアル形式に変換し, リモートコンピュータの受信側 UART + に送ります. そしてリモートコンピュータの UART はスタート, + ストップおよび パリティビットを取り除きます. + + これらの特別な変換はすべて, + 二つのモデムの間でエラー訂正が + 実行できるようにするためおこなわれています. + エラー訂正とは, 受信側のモデムが正しいチェックサムで + 受信できなかったデータブロックの再送を, + 送信側のモデムに要求することができるということです. + この作業はモデムにより処理されて, DTE デバイスは + このようなプロセスがおこなわれていることに, + 通常気がつきません. + + スタート, + ストップおよびパリティビットを取り除くことにより, + エラー訂正のために二つのモデムの間で共有しなければならない + 追加のビットを, + 実効転送速度を低下させずに送ることができます. そのため, + 送受信 DTE にはエラー訂正がおこなわれているかどうかが + ほとんど見えなくなります. 例えば, もしモデムが 10 個の 7 + ビットデータをもう一方のモデムに送る 際に, スタート, + ストップ, およびパリティビットを送る必要がなければ, + その分の 30 ビットの情報を, + 真のデータの転送速度に影響を与えることなく + エラー訂正のために追加することができるわけです. + + データ圧縮をおこなうモデムでは, + ボーという言葉の使い方は さらに混乱することになります. + 例えば電話回線を通じて送られた二つの 8 ビットデータは, + 送信側モデムに送られた 12 + バイトのデータを表すかもしれません. + 受信側モデムはそのデータを本来の内容に展開し, 受信側の DTE + に渡します. + + また, 最近のモデムはバッファを内蔵しており, (DCE から + DCE へ) 電話線を 流れるデータの転送速度と, 両端の DTE と + DCE の間で流れるデータの + 転送速度とを別々に設定することができます. + モデムによる圧縮を使用する場合, 通常は DTE と DCE + の間の速度を DCE と DCE + の間の速度より速くしておきます. + + 1 バイトを記述するのに必要なビットの数は, + 二つのマシンの間でも DTE-DCE と DCE-DCE + のリンクでそれぞれ変化する場合がありますし, そのうえ, + それぞれのビット転送速度が異なる場合もあります. そのため, + 全体としての通信速度を表現するために + ボーという言葉を使うことは 問題でもありますし, + 真の転送速度を正しく伝えない場合があります. 1 + 秒あたりの転送ビット数 (bps) は DCE と DCE + の間のインターフェースに + おける転送速度を記述するために使うなら正しい用語ですし, + ボーまたは 1 秒あたりのビット数は, + 二つのシステムが電線で直接 接続されていたり, + エラー訂正や圧縮をおこなわないモデムが + 使われている場合には, 許容可能な用語です. + + 最近の高速モデム (2400, 9600, 14,400, 19,200bps + などのもの) も, 実際には 2,400 ボー (正確には 2,400 + シンボル/秒) か, それ以下の 速度で通信しています. + 高速モデムでは, 複数のビットを一つのシンボルで + 伝送する技術 (多値符合化など) を用いて, シンボル速度 + (シンボル/秒) よりも 高い通信速度 (ビット/秒) + を達成しています. これが電話の限られた音声帯域で + 高い伝送速度を得られる理由です. 28,800bps + やそれ以上のモデムでは, シンボル速度自体が + 可変になっていますが, + それ以外は同様の技術が用いられています. + + + + IBM PC の UART + + 元祖 IBM PC を設計した際に, IBM + はナショナル・セミコンダクタ社の INS8250 UART を IBM PC + パラレル/シリアルアダプタで使用することに + 決めました. + + IBM 自身やその他のベンダが作っている後継世代の AT + 互換機でも, INS8250 + そのものやナショナル・セミコンダクタの UART ファミリの + 改良版を使い続けられています. + + + ナショナル・セミコンダクタの UART + ファミリ系統図 + + INS8250 UART + にはいくつかのバージョンと後継の部品があります. + 主要なバージョンを以下に示します. + + + +INS8250 -> INS8250B + \ + \ + \-> INS8250A -> INS82C50A + \ + \ + \-> NS16450 -> NS16C450 + \ + \ + \-> NS16550 -> NS16550A -> PC16550D + + + INS8250 + + この部品は元祖 IBM PC と IBM PC/XT で + 使われていました. この部品は本来 INS8250 ACE + (Asynchronous Communications Element) と + いう名前で, NMOS 技術で作られていました. + + 8250 は八つの I/O ポートを占有し, 送信バッファ + 1 バイトと 受信バッファ 1 バイトを持っています. + この元祖の UART はいくつかの + 競合状態などに関する欠陥を持っています. 元祖の + IBM BIOS + はこれらの欠陥を回避してうまく動くようなコードを + 含んでいましたが, そのために BIOS + が欠陥の存在に依存するように なってしまいました. + このため, 元祖 IBM PC や IBM PC/XT では 8250A, + 16450, または 16550 のような後継部品を使うことは + できませんでした. + + + + INS8250-B + + これは NMOS 技術で作られた INS8250 + の低速版です. これもオリジナルの INS8250 + と同じ問題を含んでいます. + + + + INS8250A + + XMOS 技術を使い, + さまざまな機能的欠陥を修正した INS8250 + の改良版です. INS8250A は当初, + “クリーン”な BIOS を 使用したベンダの + PC クローンで使用されていました. + なぜなら欠陥が修正されたことにより, この部品は + INS8250 や INS8250B の ために書かれた BIOS + で使うことはできなかったからです. + + + + INS82C50A + + これは INS8250A の CMOS 版 (低消費電力版) で, + INS8250A と同じ機能特性を持っています. + + + + NS16450 + + より高速な CPU バスにも対応できるように + 改良されたこと以外は NS8250A と同じです. IBM + はこの部品を IBM AT で使うことに決め, もはや IBM + BIOS が INS8250 + のバグに依存しなくなるように + 変更をおこないました. + + + + NS16C450 + + これは NS16450 の CMOS 版 (低消費電力版) + です. + + + + NS16550 + + 送信バッファと受信バッファをそれぞれ 16 + バイトに 変更したこと以外は NS16450 と同じですが, + バッファの設計に 欠陥があるため, + 信頼して使用することはできません. + + + + NS16550A + + バッファの欠陥が修正されたこと以外は NS16550 + と 同じです. 割り込みへの反応が遅い OS + でも高い信頼性で高速なデータを + 扱うことができることから, 16550A とその後継部品は + PC 産業界で 最も一般的に使われる UART + となりました. + + + + NS16C552 + + これは 2 個の NS16C550A CMOS UARTを + 一つのパッケージに入れた部品です. + + + + PC16550D + + ささいな欠陥が修正されたこと以外は NS16550A と + 同じです. これは 16550 ファミリの D リビジョンで, + ナショナル・セミコンダクタ社から + 提供されている最新の部品です. + + + + + + + NS16550AFとPC16550Dは同じもの + + ( ここからは &a.jp.iwasaki; が翻訳を担当) + + ナショナル・セミコンダクタは + 数年前に部品番号体系を再編成して おり, NS16550AFN + という名称はもはや存在しません. (もしあなたが + NS16550AFN を持っていたら, + 部品の日付コードを見てください. それは 通常 9 + から始まる4桁の数字です. 最初の2桁の数字は年度, 次の2桁 + は部品がパッケージされた年度の週です. あなたの持っている + NS16550AFN は, おそらく数年前のものでしょう.) + + 新しい番号は PC16550DV の様に, + パッケージ材料と形状により接尾辞 に小さな違いがあります + (番号体系についての記述は後述します). + + ここで注意しなければいけないことがあります. 例えば, + ある店に行って 1990年製の NS16550AFN + を15米ドルで売っているとします. ところが, + そのすぐ隣には ナショナル・セミコンダクタが AFN + を生産開始してから それにマイナーな変更を加えて作った + PC16550DN があり, そちらは 最近 + 6ヶ月に作られたものなのに, 簡単に入手できるため + NS16550AFN の 半額 (たくさん一度に買うと + 5米ドルまで下がることもあります) 位で + 買えたりすることがあるのです. + + NS16550AFN のチップ供給は減少し続けているため, + PC16550DN が古い + 部品番号のものとまったく同じ機能を持っていることに, + より多くの人が 気付いて受け入れるまでは, + 価格はおそらく上昇し続けるでしょう. + + + + ナショナル・セミコンダクタの部品番号体系 + + 古い NSnnnnnrqp + の部品番号は, 現在 + PCnnnnnrgp + というフォーマットになっています. + + r + はリビジョンのフィールドです. 現在のナショナルセ + ミコンダクタの 16550 + のリビジョンはDです. + + p + はパッケージタイプのフィールドです. タイプは以下 + の通りです: + + + + + + "F" + QFP + (quad flat pack) L lead type + + + + "N" + DIP + (dual inline package) through hole straight + lead type + + + + "V" + LPCC + (lead plastic chip carrier) J lead type + + + + + + 訳注: 具体的なパッケージ形状についての情報は http://www.national.com/packaging/plastic.html を参照 してください. + + g + は製品グレードのフィールドです. もしパッケージタイ + プの文字の前にIがあれば, + “工業用”グレード部品を表し, 標準 + 部品より高いスペックを持ちますが, Miltary 仕様 (Milspec) + ほど高 くはありません. + これは付加的なフィールドです. + + 私たちがかつて NS16550AFN (DIP パッケージ) + と呼んでいたものは, 現在 は PC16550DN または PC16550DIN + と呼ばれています. + + + + + 他のベンダと類似の UART + + 長年に渡り, 8250, 8250A, 16450 そして 16550 + はライセンスされ, + または他のチップベンダにコピーされてきました. 8250, 8250A + そして 16450 の場合は, そのものの回路 + (“megacell”: LSIの中に組み込む + ことのできるライブラリ化された回路の大規模な物) が Western + Digital と Intel + を含むたくさんのベンダにライセンスされまし た. + 他のベンダは部品を + リバースエンジニアリングした物か同じように + 動作する互換品を製造しました. + + 内蔵モデムにおいては, + モデム設計者はモデムのマイクロプロセッサで 8250A/16450 + をエミュレートすることはよくおこなわれます. + このエミュレート による (互換の) UART + は数百バイトの隠れたバッファを持つでしょう. + バッファのサイズのため, + このような互換品は高速データ処理の能力では 16550A + と変わらない信頼性を持つことができます. しかし, それでも + ほとんどのオペレーティングシステムは UART は 8250A か + 16450 である と報告し, 特殊なドライバが使用されなければ + エミュレートによる UART の余分に存在する + バッファリングの効果的な使用はおこないません. + + 幾つかのモデムメーカーは, + 市場における競争を有利にするために数百バ + イトのバッファを持ち 16550A + の置き換えができるはずの設計を, たとえ + 性能が低下する事になったとしても + 棄てざるを得なくなるような市場の圧 + 力を受けています. + + 一般的にある誤解は, “16550A” + と書かれたすべての部品が同じ性能であると いうことです. + それらは異なるものであり, 状況によってはまちがいなく + 欠陥と呼べるものがこれらの 16550A + クローンのほとんどにあります. + + NS16550 が開発された時に, + ナショナル・セミコンダクタは設計に関する + 幾つかの特許を取得し, + 彼らはライセンスを制限して他のベンダが類似 + の特徴を持つチップを供給することを困難にしました. + 特許のため, リバー + スエンジニアリングによる設計とエミュレーションは, + 特許がカバーする + 請求権を侵害を回避しなくてはなりませんでした. 結果として, + これらの コピーのほとんどは, + 多くのコンピュータとモデムのメーカーは支払いた + くはない程の価格であった本物の部品の NS16550A または + PC16550D とまった + く同じような動作をさせることはできませんでした. + + 16550A のクローンに存在する相違点のうち + いくつかは些細なものですが, そのほかに + 特定のオペレーティングシステムやドライバでは + 全然使いものにならないような相違が存在する場合もあります. + あるドライバでは問題なく動作しても, + 別のドライバを使用した場合には + 問題が発生することもありますし, Windows + のドライバにおいても + 充分にテストや考慮がおこなわれなかったイベントの組合わせが + 起こった場合には, + これらの相違点が明らかになるかもしれません. + これはほとんどのモデムベンダと 16550 クローンメーカーが, + NS16550A との互換性のプライマリテストとして Windows for + Workgroups 3.11 と Microsoft MSD ユーティリティの + Microsoft ドライバを使用しているか らです. + この安易過ぎる規準は, もし異なるオペレーティングシステムが + 使用されたらクローンと + 本物の部品の微妙な違いのために問題が発生し得 る, + ということを意味しています. + + ナショナル・セミコンダクタは, どんな OS + のドライバからも独立した互 換性テストを実行する + COMTEST + という名前の入手可能なプログラムを作 成しました. + このタイプのプログラムの目的は, 競合製品にある欠陥のデ + モンストレーションであることをおぼえておくべきです. + ですからそのプ ログラムは, + テスト中の部品の動作の重要な問題と極めてささいな相違を + 同じように報告するでしょう. + + この文書の著者が 1994 + 年に実行した一連のテストでは, ナショナルセミ コンダクタ, + TI, StarTech そして CMD が製造した部品は megacell 及び + COMTEST + でテストされた内蔵モデムに埋め込まれたエミュレーションと同 + 等です. + これらの部品のの幾つかで注目される相違点を以下に示します. + これらのテストは1994年に実行されたので, + これらはベンダから供給さ + れた製品の現在の性能には反映されないでしょう. + + 極端に多くの問題やあるタイプの問題が検出された場合に, + COMTEST は通 常は実行を中止することに注意してください. + このテストの一部では, たと + え何回相違点に遭遇しても中止しないように COMTEST + を修正しました. + + + + + + ベンダ + 部品番号 + 報告された「相違点」として知られるエラー + + + + + + National + (PC16550DV) + 0 + + + + National + (NS16550AFN) + 0 + + + + National + (NS16C552V) + 0 + + + + TI + (TL16550AFN) + 3 + + + + CMD + (16C550PE) + 19 + + + + StarTech + (ST16C550J) + 23 + + + + Rockwell + Reference modem with internal 16550 or an + emulation (RC144DPi/C3000-25) + 117 + + + + Sierra + Modem with an internal 16550 + (SC11951/SC11351) + 91 + + + + + + + この文書の著者は今まで, COMTEST プログラムを + 使用して相違点がゼロと報告されるナショナル・ + セミコンダクタ以外の部品を一つも発見しませんでした. + ナショナル・セミコンダクタは長年に渡り 16550 + の五つのバージョンを持っており, 最新の部品は + 機能性のために, ベンチマークを考慮した古い + NS16550AFN と少し異なる振る舞いをすることに + 注意するべきです. + COMTEST はナショナル・セミコンダクタの製品ラインの + 相違点については見て見ぬふりをするようになり, + 部品のリビジョン A, B そして C にあるバグが + 記述されている公式な正誤表がある時でも, + (オリジナルの 16550 を除いては) ナショナル・ + セミコンダクタの部品についてエラーを + 報告しなくなったので, この COMTEST のひいきを + 考慮にいれるべきです. + + + COMTEST からの相違点の単純なカウントが, + 何の相違点が重要であり どれがそうでないのかについて + 多くを明らかにしないことを 理解すること が大切です. + 例えば, 内蔵の UART を持つ上記の二つのモデムで報告され + た相違点の約半分が, + 5及び6ビットキャラクタモードをサポートしないク ローンの + UART によって引き起こされました. 本物の 16550, 16450 そし + て 8250 UART すべてはこれらのモードをサポートし, COMTEST + はこれらの モードの機能性をチェックするので, + 50を越える相違点が報告されました. しかし, + 5及び6ビットキャラクタモードを + サポートするモデムは殆どなく, + 特ににこれらはエラー修正と圧縮機能付のものです. + これは5及び6ビット キャラクタモードに関連した相違点は + 差し引いて考えることができること を意味しています. + + COMTEST が報告した相違点の多くは, + タイミングに関する点でしょう. 多くのクローンの設計では, + ホストが一つのポートから読み込んだ時に他 + のあるポートのステータスビットは, + 本当の NS16550AFN と同じ + 長さの時間内で更新されない (あるものは速く, + あるものは遅く) かもしれ ませんが, COMTEST + はこれらの相違点を探します. これは相違点の数は誤 + 解を招き易いものです. + あるデバイスには一つか二つの相違点しかありま + せんがそれらは非常に重大かもしれません. + また別のデバイスは基準部品 と比べて速くまたは遅く status + レジスタを更新するために (適切に書か + れたドライバの操作にはまったく影響しないかもしれません) + 多くの相違点を 報告されるかもしれません. + + COMTEST は問題を引き起こすかも知れない, + または特殊なケースとして処 + 理しなければならない潜在的に矛盾した部品の存在に対して, + 管理者に警 + 告を出すスクリーニングツールとして使用できます. + + もしモデムの中にある 16550 + やシリアルポート接続されているモデムに 対して COMTEST + を実行する場合, モデムがテストキャラクタをエコーし + ないように最初に ATE0&W + コマンドをモデムに発行する必要がありま す. + これをおこなうことを忘れた場合, COMTEST + は少なくともこの相違点を 報告するでしょう: + + Error (6)...Timeout interrupt failed: IIR = c1 LSR = 61 + + + + 8250/16450/16550 のレジスタ + + 8250/16450/16550 UART は八つの連続する I/O + ポートアドレスを予約 しています. IBM PC + ではこれらの八つのポートに対して二つの定義された + 位置があり, それらは集合的に COM1 と COM2 + として知られています. PC + クローンとアドオンカードのメーカーは COM3 と COM4 + として知られる二つ の付加的な領域を作成しましたが, + 幾つかのシステムではこれらの余分な COM + ポートは他のハードウェアと衝突します. 最もよく起きるものは + IBM 8514 + エミュレーションを提供するビデオアダプタとの衝突です. + + + COM1 には 0x3f8 から 0x3ff が割り当てられ, 通常 IRQ 4 + が使用されます. COM2 には 0x2f8 から 0x2ff が割り当てられ, + 通常 IRQ 3 が使用されます. COM3 には 0x3e8 から 0x3ef + が割り当てられ, IRQ は標準化されていません. COM4 には + 0x2e8 から 0x2ef が割り当てられ, IRQ + は標準化されていません. + + 8250/16450/16550 UART + のI/Oポートの詳細は以下に提供されています. + + + + + + I/O ポート + 許可されたアクセス + 説明 + + + + + + +0x00 + write (DLAB==0) + Transmit Holding Register (THR). + このポートに書き込まれた情報は + データ命令として 処理され, UART + により送信されます. + + + + +0x00 + read (DLAB==0) + Receive Buffer Register (RBR). + シリアル接続から UART + によって受信されたすべての データ命令は, + このポートを読むことによってホス + トによりアクセスされます. + + + + +0x00 + write/read (DLAB==1) + Divisor Latch LSB (DLL) + マスタ入力クロックの周波数を + このレジスタに入っ ている値で割ることにより, + UART の周波数が決定 されます (IBM PCでは, + マスタクロックの周波数は 1.8432MHzです). + このレジスタには上記の除数の下 + 位8ビットが入っています. + + + + +0x01 + write/read (DLAB==1) + Divisor Latch MSB (DLH) + マスタ入力クロックの周波数をこの + レジスタに入っ ている値で割ることにより, UART + の周波数が決定 されます (IBM PCでは, + マスタクロックの周波数は 1.8432MHzです). + このレジスタには上記の除数の上 + 位8ビットが入っています. + + + + +0x01 + write/read (DLAB==0) + + + + + + + Interrupt Enable + Register (IER) + 8250/16450/16550 の UART + はイベントを四つのカテ + ゴリの一つに分類します. + それぞれのカテゴリは設 定可能です. + それぞれのカテゴリは, どんな類のイ + ベントの発生時に割り込みを + 生成するように設定可 能です. + 8250/16450/16550 の UART は, 有効になっ + ているカテゴリ内でいくつの + イベントが発生してい るかに関わらず, + 単一の外部割り込みシグナルを生 成します. + 割り込みに応答し有効になっている割り + 込みカテゴリ + (通常すべてのカテゴリが有効になって + いる割り込みを持ちます) + を割り込みの本当の原因 + を決定するためにポーリングするかは, + ホストのプ + ロセッサ次第です. + + + + Bit 7 + 予約済み, 常に 0. + + + + Bit 6 + 予約済み, 常に 0. + + + + Bit 5 + 予約済み, 常に 0. + + + + Bit 4 + 予約済み, 常に 0. + + + + Bit 3 + Enable Modem Status Interrupt (EDSSI). + このビットを「1」に設定することで, + 一つ以上の状態ラインで変更が発生した時 + に, UART が割り込みを生成可能となりま + す. + + + + Bit 2 + Enable Receiver Line Status Interrupt (ELSI) + このビットを「1」に設定することで, 入っ + てくるデータにエラー (または BREAK シ + グナル) が検知された時に, UART が割り + 込みを生成するようになります. + + + + Bit 1 + Enable Transmitter Holding Register + Empty Interrupt (ETBEI) + このビットを「1」に設定することで, UART + に送信される一つ以上の付加的な文 + 字に対する空きが生じた時に, UART が割 + り込みを生成するようになります. + + + + Bit 0 + Enable Received Data Available + Interrupt (ERBFI) + このビットを「1」に設定することで, UART が + FIFO のトリガーレベルを越え + る十分な文字を受け取るか, FIFO のタイ + マが期限切れとなるか (古くなったデータ), + FIFO が無効の場合にシグナル文字が受信 + された時に, UART が割り込みを生成する + ようになります. + + + + + + + +0x02 + write + + + + + + + + + + + FIFO Control Register (FCR) + (このポートは 8250 と 16450 の UART では + 存在しません.) + + + + Bit 7 + Receiver Trigger Bit + #1 + + + + Bit 6 + Receiver Trigger + Bit #0この二つのビットは FIFO + が機能している + 場合にレシーバがどの時点で割り込みを生 + 成するかを制御します. + + + + 7 + 6 + 割り込み生成前にいくつの命令 + が 受信されたか. + + + + 0 + 0 + 1 + + + + 0 + 1 + 4 + + + + 1 + 0 + 8 + + + + 1 + 1 + 14 + + + + Bit 5 + 予約済み, 常に 0. + + + + Bit 4 + 予約済み, 常に 0. + + + + Bit 3 + DMA Mode Select. Bit 0 + が「1」 (FIFO 有効) に設定されて いる場合, + このビットの設定は -RXRDY と -TXRDY + の処理を Mode 0 から Mode 1 へ 変更します. + + + + + Bit 2 + Transmit FIFO Reset. + このビットに「1」が書き込まれている場 合, + FIFO の内容は破棄されます. 現在送 + 信されているすべての命令は損なわれずに送 + られるでしょう. この機能は送信中止の場 + 合に役に立ちます. + + + + Bit 1 + Receiver FIFO Reset. + このビットに「1」が書き込まれている場 合, + FIFO の内容は破棄されます. 現在 shift + レジスタ内で組み立てられているすべ + ての命令は損なわれずに受信されるでしょ う. + + + + + Bit 0 + 16550 FIFO Enable. + 設定されている場合, 送信 / 受信両方の FIFO + が有効になります. holding レジス タ, shift + レジスタまたは FIFO 内のすべて の内容は, + FIFO が有効または無効になっ + た時点で失われます. + + + + + + + +0x02 + read + + + + + + + + + + + + Interrupt Identification + Register + + + + Bit 7 + FIFO有効. + 8250/16450 UART では, このビットはゼロ. + + + + Bit 6 + FIFO有効. + 8250/16450 UART では, このビットはゼロ. + + + + Bit 5 + 予約済み, 常に0. + + + + Bit 4 + 予約済み, 常に0. + + + + Bit 3 + Interrupt ID Bit #2. + 8250/16450 UART では, このビットはゼロ. + + + + + Bit 2 + Interrupt ID Bit #1 + + + + Bit 1 + Interrupt ID Bit #0. + これらの3つのビットは進行中の割り込み + を引き起こしたイベントのカテゴリを併せ + て報告します. これらのカテゴリは優先度 + を持つため, イベントの複数のカテゴリが + 同時に発生した場合, UART は最初に最も + 重要なイベントを報告し, ホストは報告さ + れた順に解決するでしょう. 現在の割り込 + みを引き起こしたすべてのイベントは, 新し + い割り込みが生成される前に解決されなけ + ればなりません (これは PC のアーキテク + チャの制限です). + + + + 2 + 1 + 0 + 優先度 + 説明 + + + + 0 + 1 + 1 + First + レシーバエラー (OE, PE, BI, + また FE) + + + + 0 + 1 + 0 + Second + 有効な受信データ + + + + 1 + 1 + 0 + Second + トリガーレベル識別子 + (受信バッファ中の古いデータ) + + + + 0 + 0 + 1 + Third + トランスミッタに + 命令用の空きがある + (THRE) + + + + 0 + 0 + 0 + Fourth + モデムの状態が + 変わった (-CTS, + -DSR, -RI, または + -DCD) + + + + Bit 0 + Interrupt Pending Bit. + このビットが「0」に設定されている場合, + 少なくとも一つの割り込みがペンディング + されています. + + + + + + + +0x03 + write/read + + + + + + + + + + + + Line Control + Register (LCR) + + + + Bit 7 + Divisor Latch Access + Bit (DLAB). 設定されている場合, + transmit/receive register (THR/RBR) と + Interrupt Enable Register (IER) + へのアクセスが無効にな ります. + 現在これらのポートへのすべてのア クセスは + Divisor Latch Register へリダ + イレクトされます. このビットの設定, Divisor + Register のローディング, そし て DLAB + のクリアは割り込みが無効になっ + ている状態でおこなわれるべきです. + + + + Bit 6 + Set Break. + 「1」に設定されている場合, トランスミッ + タはこのビットが「0」に設定されるまで + スペースを切り目なく送信します. これは + 送信されている文字のすべてのビットに優先 + します. + + + + Bit 5 + Stick Parity. parity + が有効になっている場合, このビッ + トの設定はビット4の値に基づき parity + を常に「1」か「0」にします. + + + + Bit 4 + Even Parity Select + (EPS). parity が有効でビット5が「0」の場合, + このビットの設定は偶数 parity が送信そ + して要求されるようにします. そうでなけ + れば奇数 parity が使用されます. + + + + Bit 3 + Parity Enable (PEN). + 「1」に設定されている場合, データの最 + 後のビットとストップビットの間に parity + ビットが挿入されます. また UART + は受信データに存在する parity を要求す + るでしょう. + + + + Bit 2 + Number of Stop Bits + (STB). 「1」に設定されている場合, 5-bit デー + タ命令を使用して, 1.5の Stop ビットが + 送信され各データ命令内に要求されま す. 6, 7 + そして 8-bit データ命令に対し ては, 2つの + Stop ビットが送信され要求 されます. + このビットが「0」に設定され ている場合, + 1つの Stop ビットが各デー + タ命令で使用されます. + + + + Bit 1 + Word Length Select Bit #1 + (WLSB1) + + + + Bit 0 + Word Length Select Bit #0 + (WLSB0) + + + + これらのビットは共に + 各データ命令内のビッ トの数を指定します. + + + + + 1 + 0 + 命令長 + + + + 0 + 0 + 5 Data + Bits + + + + 0 + 1 + 6 Data + Bits + + + + 1 + 0 + 7 Data + Bits + + + + 1 + 1 + 8 Data + Bits + + + + + + + +0x04 + write/read + + + + + + + Modem Control Register + (MCR) + + + + Bit 7 + 予約済み, 常に 0. + + + + Bit 6 + 予約済み, 常に 0. + + + + Bit 5 + 予約済み, 常に 0. + + + + Bit 4 + Loop-Back Enable. + 「1」に設定されている場合, UART のトラ + ンスミッタとレシーバは診断処理のために + 内部的に相互に接続されます. 付け加えて UART + のモデム制御出力はモデム制御入力 + に接続されます. CTS は RTS へ, DTR は + DSRへ, OUT 1 は R1 へ, OUT 2 は DCD へ + 各々接続されます. + + + + Bit 3 + OUT 2. ホストのプロセッサが high または + low に設定するであろう補助的な出力. IBM PC + のシリアルアダプタ (とクローンの殆ど) では, + OUT 2 は 8250/16450/16550 UART + からの割り込み信号をハイインピーダンス + (無効) にするのに使用されます. + + + + Bit 2 + OUT 1. ホストのプロセッサが high または + low に設定するであろう補助的な出力. IBM PC + のシリアルアダプタではこの出力は使用 + されません. + + + + Bit 1 + Request to Send (RTS). + 「1」に設定されている場合, UART の -RTS + ラインの出力は Low (有効) となり ます. + + + + + Bit 0 + Data Terminal Ready (DTR). + 「1」に設定されている場合, UART の -DTR + ラインの出力は Low (有効) となり ます. + + + + + + + + +0x05 + write/read + + + + + + + Line Status Register + (LSR) + + + + Bit 7 + Error in Receiver FIFO. 8250/16450 UART + では, このビットはゼロ です. + FIFOの中に次のエラー条件が一つ以 + 上含まれている場合, このビットは「1」 + に設定されます: PE, FE, または BI. + + + + Bit 6 + Transmitter Empty (TEMT). + 「1」に設定されている場合, 送信 FIFO + または送信 shift レジスタ中に残ってい + る命令はありません. トランスミッタは完 + 全に働いていません. + + + + Bit 5 + Transmitter Holding Register Empty + (THRE). 「1」に設定されている場合, 現在 FIFO + (または holding レジスタ) には少なくと + も一つの送信される付加的な命令に対する + 空きあります. このビットが「1」に設定 + されている時は, 多分トランスミッタはま + だ送信しています. + + + + Bit 4 + Break Interrupt (BI). レシーバは Break + シグナルを検知しました. + + + + Bit 3 + Framing Error (FE). Start + ビットが検知されましたが, Stop + ビットは要求された時間内には現れません + でした. 受信された命令はおそらく勝手に + 解釈されます. + + + + Bit 2 + Parity Error (PE). parity + ビットが受信された命令に対して 不正です. + + + + + Bit 1 + Overrun Error (OE). + 新しい命令が受信され, 受信バッファに空 + きがありませんでした. shift レジスタに + 新たに到着した命令は破棄されます. + 8250/16450 UART では, holding レジスタ + 内の命令は破棄され新たに到着した命令は + holding レジスタに置かれます. + + + + Bit 0 + Data Ready (DR) + 一つ以上の命令がホストが読むであろう受 信 + FIFO にあります. このビットが設定さ + れる前に, 命令は完全に受信され shift + レジスタから FIFO (または 8250/16450 + の設計では holding レジスタ) へ移動さ + れなければなりません. + + + + + + + +0x06 + write/read + + + + + + + Modem Status Register + (MSR) + + + + Bit 7 + Data Carrier Detect (DCD). UART の DCD + ラインの状態を反映します. + + + + Bit 6 + Ring Indicator (RI). UART の RI + ラインの状態を反映します. + + + + Bit 5 + Data Set Ready (DSR). UART の DSR + ラインの状態を反映します. + + + + Bit 4 + Clear To Send (CTS). UART の CTS + ラインの状態を反映します. + + + + Bit 3 + Delta Data Carrier Detect (DDCD). + ホストによって MSR が最後に読み込まれ + た時点から, -DCD ラインが状態を一回以 + 上変えた場合に「1」に設定されます. + + + + Bit 2 + Trailing Edge Ring Indicator (TERI). + ホストによって MSR が最後に読み込まれ + た時点から, -RI ラインが low から high + へ移り変わった場合に「1」に設定されま + す. + + + + Bit 1 + Delta Data Set Ready (DDSR). + ホストによって MSR が最後に読み込まれ + た時点から, -DSR ラインが状態を一回以 + 上変えた場合に「1」に設定されます. + + + + Bit 0 + Delta Clear To Send (DCTS). + ホストによって MSR が最後に読み込まれ + た時点から, -CTS ラインが状態を一回以 + 上変えた場合に「1」に設定されます. + + + + + + + +0x07 + write/read + Scratch Register (SCR). このレジスタは UART + では機能しません. この場所 には + どんな値でもホストによって書き込まれるこ とができ, + その後ホストによって読み込むことが可 + 能です. + + + + + + + + 16550A UART を越えて + + ナショナル・セミコンダクタは付加的な機能を持つ 16550 + と互換 性のある部品を提供していませんが, + 色々な他のベンダがそれを持っ ています. + これらの部品の幾つかは以下に記述されています. 効果的 + にこれらの改良を使用するためには, + 殆どのポピュラーなオペレーティ ングシステムが 16550 + が提供する機能以上のものをサポートしない ため, + ドライバはチップベンダから提供されなければならないことを + 理解しておく必要があります. + + + ST16650 + + デフォルトではこの部品は NS16550A + と似ていますが, 拡 + 張された32バイトの送受信バッファを + オプションで有効にで きます. Startech + により製造されました. + + + + TIL16660 + + デフォルトではこの部品は NS16550A + と類似した振舞いを しますが, + 拡張された64バイトの送受信バッファをオプショ + ンで有効にできます. Texas Instruments + により製造されま した. + + + + Hayes ESP + + この専売特許のプラグインカードは, + 2048バイトの送受 信バッファを含み, 230.4Kbit/sec + のデータレートをサポー トします. Hayes + により製造されました. + + + + + これらの“ダム”UART に加え, + たくさんのベンダがインテリジェ + ントシリアルコミニュケーションボードを製造しています. こ + のタイプの設計は通常マイクロプロセッサを提供しており, + このマイ クロプロセッサは幾つかの UART + へのインタフェースとなってデータ を処理 / + バッファリングし, そして必要な時にメインの PC のプロセッ + サへ警告を出します. UART + はこのタイプのコミニュケーションシ ステムにおいて PC + のプロセッサによって直接アクセスされないため, + ベンダにとっては 8250, 16450, または 16550 UART + と互換性のある UART を使用する必要はありません. + これにより設計者は, より良い + 性能特性を持つ部品が自由に利用できます. + +
+ + + <devicename>sio</devicename>ドライバの設定 + + sio ドライバは, NS8250-, + NS16450-, NS16550とNS16550A ベースの EIA RS-232C(CCITT V.24) + 通信用インタフェースをサポートします. ま た, + いくつかのマルチポートシリアルカードもサポートされています. + 技術的 な詳細についてはマニュアル &man.sio.4; + を見てください. + + + Digi International (DigiBoard) PC/8 + + 原作: &a.awebster;. + 1995年8月26日. + + 訳: &a.jp.masaki;.6 + September 1996. + + 以下にDigi International + PC/8Dと16550チップを動作させるための, カーネ + ルconfigの部分を示します. このボードは, + 8本の回線にすべてモデムを接続 + した場合でも良好に動作します. + + options COM_MULTIPORT + を加えるのを忘れないでください. 忘れる + とうまく動作しません! + + +device sio4 at isa? port 0x100 tty flags 0xb05 device + sio5 at isa? port 0x108 tty flags 0xb05 device + sio6 at isa? port 0x110 tty flags 0xb05 device + sio7 at isa? port 0x118 tty flags 0xb05 device + sio8 at isa? port 0x120 tty flags 0xb05 device + sio9 at isa? port 0x128 tty flags 0xb05 device + sio10 at isa? port 0x130 tty flags 0xb05 device + sio11 at isa? port 0x138 tty flags 0xb05 irq 9 vector + siointr + + ここで各 SIO + ポートが割り込みを共有する一つのグループであることを表現 + するために, トリッキーな設定をしなければなりません. フラグ + (flags の後 ろの 16 進数) の下から 2 + バイト目にこのグループの最後の SIO ポートの番 + 号を設定します. この例では 11 (16進数では 0x0b) ですから, + 各デバイスの フラグは 0xb05 となります. + + + + Boca 16 + + 寄贈 &a.whiteside;. + 1995年8月26日 + + FreeBSD で Boca 16pord + のボードを動かすことは簡単ですが, そのた + めにはいくつかの作業が必要です. : + + + + 2.0.5 のデフォルトのカーネルは, + マルチポートのサポートをして + いない ので, + あなたは各ポート毎にデバイスエントリを追加する必要が + あります. つまり必要なオプションを付けて, + カーネルの再構築をしなければ なりません. そのためには, + あなたのマシンにカーネルのソースコードが既に + インストールされているか, + あなたの替わりの誰かにカーネル再構築をやって + もらう必要があります. + + + + 2番目に, + あなたはカーネルオプションを正しく設定するために, あな + たのBoca Boardの IO + と割り込みの値を知っている必要があります. + + + + ひとつ重要なことがあります. Boca 16 + に使われている実際の UART チップ は, Boca 16 + のボードではなく, + 外付けのコネクタボックスの中に存在します. + コネクタボックスを接続しないと, + ポートの検出に失敗するでしょう. 私は, + 接続しないまま起動したり, + 後から接続しなおしたりした時にどうなるかをテ + ストしていません. + どちらも実行しないようお奨めします. + + もしあなたがカスタマイズ済みのカーネル + コンフィグレーションファイルを持っ ていなければ, + 一般的な事柄については, FreeBSD + カーネルのコンフィグレーション + を参考にしてください. 以下にBoca 16のボード + に関係する部分だけを記述します. この例では, + あなたがMYKERNELという名前 のカーネルを使っていて, + エディタには viを使っていることを仮定していま す. + + + + 次の1行をconfigファイルに追加してください. + + +options COM_MULTIPORT + + + + この device + sionという行を, + 必要に応じて 16 個のデバイス分を追加してください. + 最後のデバイスにだけ, このボード + の割り込みベクタを記述します. (詳細は &man.sio.4; + のマニュア ルページを参照してください.) 以下の例は, + 割り込み 3, ベース IO アドレス 100h の値を持つ Boca + Board の場合です. 各ポートのための IO アドレスは, + 100h, 108h, 110h, ... のよ うに 16 進法で 8 + づつ加えていきます. + + +device sio1 at isa? port 0x100 tty flags 0x1005 device sio2 at isa? + port 0x108 tty flags 0x1005 device sio3 at isa? port + 0x110 tty flags 0x1005 device sio4 at isa? port 0x118 + tty flags 0x1005 … device sio15 at isa? port + 0x170 tty flags 0x1005 device sio16 at isa? port 0x178 + tty flags 0x1005 irq 3 vector siointr + + フラグエントリは, + あなたが全く同じsioの割り当てを使っていない限り + 必ず + 上記の例から変更してください. フラグは, + 次のように設定します. 0x M + YY + のMは, マスタポート (Boca + 16に搭載された最後 + のポート)のマイナー番号を指定します. さらに + YY の部分はFIFOが + 有効または無効であること (この場合は有効), 割り込みを + (ボード内で) 共 有しているか (この場合はYES), そして, + AST/4 と互換性のある持つ割り込み + 制御レジスタを持っているか (この場合はNO) + を指定します. この例では, + + +flags 0x1005 + + というフラグによって, + マスタポートが sio16 であることを示します. も + し同じボードをもう一枚追加し, sio17 から sio28 + を割り当てるなら, 新しい方の + ボードに対応する 16 個のポートのフラグはすべて 0x1C05 + に なります. 28 (== 0x1C) + は新しいボードのマスタポートのマイナー番号で す. + フラグの 05 の部分は変更しないでください. + + + + カーネルコンフィグレーションファイルを + 保存してカーネルの設定を完了しま す. + カーネルをコンパイル後, インストールし, + 新しいカーネルでリブートし てください. + 再コンパイルされたカーネルがうまくインストールされて, + そのカーネルに正 + しいアドレスと割り込みが設定されていたならば, + ブートメッセージは次の ように Boca + ポートの検出に成功するはずです: (sioの番号, + IOとIRQの値は, この例とは異なっているでしょう) + + sio1 at 0x100-0x107 flags 0x1005 on isa +sio1: type 16550A (multiport) +sio2 at 0x108-0x10f flags 0x1005 on isa +sio2: type 16550A (multiport) +sio3 at 0x110-0x117 flags 0x1005 on isa +sio3: type 16550A (multiport) +sio4 at 0x118-0x11f flags 0x1005 on isa +sio4: type 16550A (multiport) +sio5 at 0x120-0x127 flags 0x1005 on isa +sio5: type 16550A (multiport) +sio6 at 0x128-0x12f flags 0x1005 on isa +sio6: type 16550A (multiport) +sio7 at 0x130-0x137 flags 0x1005 on isa +sio7: type 16550A (multiport) +sio8 at 0x138-0x13f flags 0x1005 on isa +sio8: type 16550A (multiport) +sio9 at 0x140-0x147 flags 0x1005 on isa +sio9: type 16550A (multiport) +sio10 at 0x148-0x14f flags 0x1005 on isa +sio10: type 16550A (multiport) +sio11 at 0x150-0x157 flags 0x1005 on isa +sio11: type 16550A (multiport) +sio12 at 0x158-0x15f flags 0x1005 on isa +sio12: type 16550A (multiport) +sio13 at 0x160-0x167 flags 0x1005 on isa +sio13: type 16550A (multiport) +sio14 at 0x168-0x16f flags 0x1005 on isa +sio14: type 16550A (multiport) +sio15 at 0x170-0x177 flags 0x1005 on isa +sio15: type 16550A (multiport) +sio16 at 0x178-0x17f irq 3 flags 0x1005 on isa +sio16: type 16550A (multiport master) + + もしメッセージの表示が速くて読み取れないときは, + + &prompt.root; dmesg | more + + とするとブート時のメッセージを + ゆっくり見ることができます. + + + + 次に, root になってから, + デバイスにあわせたエントリを + /dev/MAKEDEV + スクリプトを使って/dev + に追加します. + + &prompt.root; cd /dev +&prompt.root; ./MAKEDEV tty1 +&prompt.root; ./MAKEDEV cua1 +(中略) +&prompt.root; ./MAKEDEV ttyg +&prompt.root; ./MAKEDEV cuag + + もし, 何らかの理由で発信するデバイスが不要な場合, + cua* デバ + イスを作らないで済ますこともできます. + + + + デバイスが確実に動作しているかどうか + 確認する手っ取り早い方法は, あなたが (rootになって) + 各ポートにモデムを接続してみて, あなたが作成し + た各デバイス毎に + + &prompt.root; echo at> ttyd* + + とやってみてください. 各ポー トが動作していれば + RXの表示が光るのが見えるはず + です. + + + + + + + <devicename>cy</devicename> ドライバのコンフィグ + + 原作: &a.alex;. + 6 June 1996. + + 訳: &a.jp.yuki;. + 6 September 1996. + + Cyclades 社のマルチポートカードは, + 他のマルチポートカードが 使う sio + の代わりに cyドライバを使います. + コンフィグレーションは非常に簡単で, + + + + cy デバイスをあなたの カーネルの + コンフィグレーションに足します. (注意. + あなたのirqやiomemの設定が違っているかもしれません) + + +device cy0 at isa? tty irq 10 iomem 0xd4000 iosiz 0x2000 vector cyintr + + + + 新しいカーネルの 再構成と + インストール をします. + + + + デバイスノード + を次(8ポートと仮定しています.) + のように打って作ります: + + &prompt.root; cd /dev +&prompt.root; for i in 0 1 2 3 4 5 6 7;do ./MAKEDEV cuac$i ttyc$i;done + + + + もし, 必要なら シリアルデバイス + (ttyd) とそっくりにコピーして dialupエントリを作り, + ttydの代わりに + ttycを使います. 例: + + +ttyc0 "/usr/libexec/getty std.38400" unknown on insecure +ttyc1 "/usr/libexec/getty std.38400" unknown on insecure +ttyc2 "/usr/libexec/getty std.38400" unknown on insecure +… +ttyc7 "/usr/libexec/getty std.38400" unknown on insecure + + + + 新しいカーネルで立ち上げます. + + + +
+ + + * パラレルカード + + + + + + * モデム + + + + + + * ネットワークカード + + + + + + * キーボード + + + + + + * マウス + + + + + + * その他 + + + +
+ + + 記憶装置 + + + ESDIハードディスクの使い方 + + 原作および Copyright © 1995, &a.wilko;. + 24 September 1995. + + 訳: &a.jp.ts; + 2 September 1996. + + ESDIとは Enhanced Small Device Interfaceの略語です. + この技術は, 馴染み 深い ST506や + ST412といったインタフェースに基づくものであり, 世界初の普 及型 + 5.25インチのウィンチェスタディスクを造ったSeagate + Technology社に よって最初に作られました. + + ESDIの Eは拡張 (Enhanced) を表しており, + 実際そのとおりです. まず, イン タフェースの速度は速く, 10 + ないし 15Mビット/秒であり, ST412インタフェー + スに接続したドライブの 5Mビット/秒よりも高速です. また, + 上位レベルのコ マンドがいくつか追加されて, + オペレーティングシステムレベルのドライバ作 成者にとって, + ESDIインタフェースはある程度インテリジェントなものとなり + ました. ただし SCSIほどにインテリジェントではありません. + ESDIは ANSIが 標準化をおこなっています. + + トラックごとのセクタ数を増やすことで, + ESDIドライブの記憶容量は引き上げ られました. 通常, + トラックあたり 35セクタですが, 今までに筆者がみたド + ライブの中で大容量のものは, トラックあたり + 54セクタもありました. + + ESDIは IDEや + SCSIといったインタフェースの普及によって消えつつあります が, + 無料あるいは在庫処分の 格安なドライブが入手可能であることを + 考えると, 少ない (もしくは現状の) + 予算で縛られたシステムにとって, ESDIドライブは + 理想的です. + + + ESDIのコンセプト + + + 物理的な接続 + + ESDIインタフェースでは, + ドライブごとに2つのケーブルを接続します. 第 1 + のケーブルは34ピンのフラットケーブルエッジコネクタで, + コントローラとド ライブ間のコマンドおよびステータスの + 両信号のやりとりのためのものです. コマンド用ケーブルは, + すべての ESDIドライブをデイジーチェーンで結び ますから, + すべてのドライブを接続したバスを構成することに + なります. + + 第 2 のケーブルは 20 ピンのフラットケーブル + エッジコネクタで, ドライブへの データ入出力に使います. + このケーブルは放射状に接続しますから, ドライブ + ごとにコントローラへの専用接続を持つことに + なるわけです. + + 筆者の経験によれば, PC向け ESDI コントローラには, + コントローラあたり最 大 2 + 台までのデバイス接続が可能という制限がありました. これは, + ドライ ブのアドレス割り当てのために, + 単一ビットだけを用意したという WD1003 か + ら持ち越された互換 (?) 機能なのだと思われます. + + + + デバイスのアドレス指定 + + 1本のコマンドケーブルには最大で 7つのデバイスと + 1つのコントローラを接 続することができます. + どのドライブをコントローラがアドレスしているのか + を個別に認識できるようにするために, ESDIデバイスは, + デバイスアドレスを + 設定するためのジャンパかスイッチを備えています. + + PC向けコントローラでは, + 最初のドライブにはアドレス0を設定し, 第2番目の + ディスクへはアドレス1を設定します. + いつも留意すべきことは, + ディスクごとに固有のアドレスを必ず設定するということです! + つまり, コン トローラあたり最大2台のドライブというような + PC向けのものでは, 第1 ドラ イブは第0番ドライブで, + 第2ドライブは第1番ドライブだということです. + + + + ターミネート処理 (termination) + + デイジーチェーン接続用コマンドケーブル + (34ピンのケーブルであることを覚 えていますか? ) では, + 最後のチェーン接続ドライブでターミネートしなけれ + ばなりません. このために, + ESDIドライブにはターミネート用抵抗ネットワー + クが付属しており, + ターミネートする必要がないときにはその抵抗をドライブ + から外したり, またはジャンパで無効 (disable) + にすることができるようになっ ています. + + したがって, ひとつのドライブ, + すなわちコマンドケーブルの最終端に位置す + るドライブだけが, + そのターミネート用抵抗を有効 (installまたは enable) + にすることができます. + コントローラは自動的にコマンドケーブルのもう一方 + の端のターミネート用抵抗を有効にします. + ご注意いただきたいのは, コント + ローラは必ずコマンドケーブルのいずれかの + 端に位置しなければならず, けっ + して途中に位置するようにしては + いけない ということです. + + + + + ESDIディスクの FreeBSDでの使い方 + + ESDI を初めて動かすようにすることが, + どうしてこうも大変なことなのでしょ うか ? + + ESDIディスクを FreeBSD + で動かそうと試みた人たちが激烈なイライラを募らせ + たことは知られています. 今までまったく + ESDIを知らない場合には, 複数の 要因の組み合わせが悪く働いて, + ESDIへの理解を妨げることになるかもしれま せん. + + このことは, ESDIと + FreeBSDの組み合わせは選んではいけないという俗説も生 + み出しました. 以下の節において, 落し穴のすべてとその解決策を + 述べてみようと思います. + + + ESDI速度の違い + + すでに簡単に紹介したように, + ESDIは2種類の速度を持っています. 旧式のド + ライブとコントローラは 10Mビット/秒のデータ転送速度ですが, + 新しいもの では 15Mビット/秒が利用できます. + + 仮に 10Mビット/秒のコントローラへ + 15Mビット/秒のドライブを接続したよ + うな場合に問題が生じることを予想することは簡単です. + したがって必ず, コ ントローラ および + ドライブのマニュアルを参照して, それぞれの 転送速度が + 一致しているかどうかを調べるようにしてください. + + + + トラックについて + + 主流の ESDIドライブは, + トラックあたり34ないし36個のセクタを持ちます. + しかし大部分の (古い) + コントローラは36個以上のセクタを扱うことができま + せん. + + 新しい大容量のドライブでは, + トラックごとにさらに多くの数のセクタを持つ ことができます. + たとえば筆者の 670MBのドライブは, トラックあたり 54セ + クタも持たせることができます. + + 筆者のコントローラは 54 + セクタ数をサポートしていませんでしたが, トラック あたり 35 + セクタという設定で, 問題なく動作しました. しかし, + これが意味す + るのは大量のディスク容量を失うということです. + + もう一度, + 詳しい情報についてハードウェアのドキュメントを + 調べてください. + この例のような仕様からはずれた設定をしたときには, + うまく動くかもしれま せんが, 動かないこともあります. + そのようなときには, 別のより多くの機能 + をもつコントローラで試してみるようにしてください. + + + + ハードセクタとソフトセクタ + + 多くの ESDIドライブでは, + ハードセクタまたはソフトセクタによる処理を, + ジャンパ設定で指定することができます. ハードセクタとは, + 新しいセクタの 開始位置において, + ESDIドライブにセクタパルス (sector pulse) を発生させ + ることです. コントローラはこのパルスを利用して, + 書き込みや読み取りのタ イミングを指示します. + + ハードセクタではセクタのサイズを選ぶことができます + (通常はフォーマット 後セクタあたり256, 512, + および1024バイト). FreeBSDは512バイトのセクタ + サイズを使います. トラックあたりのセクタ数は, + 同じように選択に幅があり ますが, + フォーマット後のセクタのバイト数はすべて同じです. + セクタごとの 未フォーマット + のバイト数は, コントローラがどの程度の調整用の + バイト数を必要とするかによって異なります. + トラックあたりのセクタ数を多 くすれば記憶容量は増えますが, + もしドライブから与えられるバイト数よりも + 多くのものをコントローラが必要とするのであれば, + 問題を生じることがあり ます. + + ソフトセクタでは, + コントローラ自身が読み書きの始まりと終りの位置を決め ます. + なお, ESDI (筆者が知り得たものすべて) では, + ハードセクタがデフォ ルトのようです. + ソフトセクタを試みる必要性は感じたことがありません. + + 通常, FreeBSDをインストールする以前に, + まずセクタ処理の設定を試される ことをおすすめします. + というのも, セクタ処理の設定を変えるたびに, 物理 + フォーマット (low-level format) + をしなければならないからです. + + + + 物理フォーマット処理 + + ESDIドライブは, 使い始める前に, + 物理フォーマットをおこなう必要があります. + もしトラックあたりのセクタ数を変えたり, + ドライブの物理的な設置方法 (水 平や垂直方向) + を変えたときには, ふたたびフォーマットする必要があります + から, よく検討した後でフォーマットしてください. + フォーマット処理の所要 時間を短く予想してはいけません. + 大容量のディスクでは数時間を要します. + + 物理フォーマットが終わったならば, サーフィススキャン + (surface scan) を おこない, + バッドセクタの検出とフラグの処理をします. + ほとんどのディスクには, + メーカが作成したバッドブロックリストを + 記録した用紙またはステッカーが付 いています. さらに, + ほとんどのディスク内にもバッドブロックリストが記録 + されています. + メーカが作成したリストを利用するようにしてください. この + 時点で不良部分をマップし直す方が, + FreeBSDのインストール後におこなうよりも, + はるかに簡単です. + + 物理フォーマットプログラムのなかでも, + トラックの中にひとつでもバッドセ クタがあれば, + 同じトラック内の残りのすべてのセクタを不良とするようなプ + ログラムがありますから, + そのようなものは利用しないようにしてください. + ディスクスペースの浪費だけでなく, より重大な + bad144と関連した悲劇の原 因にもなるからです + (bad144の節を参照のこと). + + + + トランスレーション + + トランスレーションが, + ESDIだけに限定された問題ではないにもかかわらず, + 重大な困難になることがあります. + トランスレーションにはいくつかの側面が あります. + 多くに共通なものは, IBM + PC/ATのオリジナルの設計に起因するディ + スクジオメトリに関する制限を, + うまく回避するような調整を試みるものです (IBM に感謝 ! + ). + + まずはじめに, 1024シリンダに関する (悪) + 名高い制限があります. すなわ ち, + ブート可能なシステムについて, システム関連ファイルは + (オペレーティ ングシステムがどのようなものであっても) , + ディスクの先頭部分の 1024シ リンダ内になければいけない, + という制限です. シリンダ番号を表すためには + 10ビットしか与えられていません. セクタの総数については, + 上限は 64 (0か ら 63) です. この1024シリンダの制限を, + 16ヘッドの制限 (これも ATの仕様 による) と組み合わせると, + かなり限定されたディスク容量しか利用できませ ん. + + この難点を解消するために, PC 向け + ESDIコントローラのメーカは, 自社のコ ントローラボードへ + BIOS PROM拡張を施しました. この BIOS拡張の内容は, + ブート時のディスクI/Oを (OSによっては + すべて のディスクI/Oも) , + トランスレーションを用いておこなうというものです. + すなわち, 大容量のディ スクを, あたかも 32 + ヘッドかつトラックあたり 64 セクタであるようなデバイス + として OSへ知らせるのです. この結果, 総シリンダー数は + 1024よりも少なく なりますから, + 上記の難点などなかったものとして大容量ディスクを使うこと + ができるようになります. なお, 注目いただきたいことは, + FreeBSDカーネル の起動以降, FreeBSDはこの + BIOS拡張機能を使わないということです. 詳しく + は後ほどご説明いたします. + + トランスレーションの第 2 の存在理由は, + 多くの旧いシステムBIOSが, トラッ クあたり 17 + セクタのドライブだけしか扱えない (ST412 という古い仕様) + から, というものです. 比較的新しい BIOSは通常, + 自由な値を設定できるドライブ タイプ + (多くの場合ドライブタイプ47) を持っています. + + + この文書を読み終えられた後で, + どのようにトランスレーションを利用す るにせよ, + ぜひご留意いただきたいことがあります. もし複数の + OSをひとつ のディスクにインストールするときには, + 必ず同じトランスレーションを使わ なければなりません. + + + + トランスレーションに関して, + 筆者が使用したコントローラは, ひとつのドラ + イブを複数のパーティションに論理的に + 分けることができる機能を BIOS のオ + プションとして持っていました + (このような製品はいくつかあると思われる). しかし, + ひとつのドライブにはひとつのパーティションに限定しました. + なぜ なら, このコントローラはパーティション情報を + ディスクへ書き出すからです. つまり, 電源を入れると, + コントローラはこの情報を読み取り, OSに対してディ + スクから読みとった情報に基づくデバイスとして + 知らせるからです. + + + + 代替セクタ処理 + + 多くの ESDI コントローラはバッドセクタを + 取り替える機能を備えています. + ディスクの物理フォーマット処理の途中もしくは終了時に, + バッドセクタであ ることを記録して, + 代わりのセクタを壊れたセクタの位置へ (論理的に) 置き + ます. + + 通常この置き換え処理は, トラック内の N-1 + 個のセクタを実際のデータ記録に 使い, + 第N番目のセクタだけを代替セクタとすることで実現します. + ここでNと いう値はトラック内の物理的セクタの総数です. + このアイデアが生まれた背景 は, + オペレーティングシステムが壊れたセクタを持たない 「完全」 + なディスク を想定している, というものです. しかし + FreeBSDではこのアイデアを使うこ とはできません. + + 理由は, 使用不可 (bad) から + 使用可能 への変換をおこなう のが + ESDIコントローラ上の BIOSだからなのです. FreeBSDは, 真の + 32ビット のオペレーティングシステムであるために, + ブート後には BIOSを使いません. 代わりに + FreeBSDが使うのは, + ハードウェアと直接「対話」するデバイスドラ + イバというものです. + + 結論: + 代替セクタ処理やバッドブロックマッピングなど, + コントローラ・ メーカがなんと呼ぶかは判りませんが, + それらに似た機能を FreeBSDのディス + クへは使わないでください. + + + + バッドブロックの取り扱い + + 前節から残された問題があります. すなわち, + コントローラによるバッドブロッ + ク処理は利用できない状況であるにもかかわらず, + FreeBSDのファイルシステ + ムが想定しているのはあくまで完全無欠なディスクである, + という問題で す. これを解消するために, FreeBSDは + bad144 というツールを採用 しています. + この bad144 (この名前は + DEC社の標準となったバッドブロック 処理に由来している) は, + FreeBSDのスライスごとにバッドブロックを調べま す. + バッドブロックを見つけ出すと, bad144 + は傷ついたブロック番号によるテー ブルを + FreeBSDスライスの末尾へ書き込みます. + + ディスクが動作し始めると, + ディスクから読みとられたテーブルを基に, ディ + スクアクセスを調べます. この bad144 + リストに記録されたブロック番号への 要求が起こると, + 代わりのブロック (同じく FreeBSDスライスの末尾に位置す る) + を使います. このように, bad144 + による置換手続きによって 「完全」 なディ スクを FreeBSD + ファイルシステムへ提供しているのです. + + bad144 + の使用により陥るかもしれない落し穴があります. まず, + ひとつのス ライスには 126 + 個以上のバッドセクタを持てません. もしドライブに 126 + 個以上 のバッドセクタがあったときには, 複数の FreeBSD + のスライスに分けて, 各ス ライスのバッドセクタが 126 + 個以下となるようにする必要があります. くれぐ れも, + ひとつのトラック内にたったひとつの欠陥セクタが + 見つかっただけで, そのトラック内セクタ + すべて + を傷ついたものとして記録するよう + な物理フォーマットプログラムを使わないようにしてください. + 簡単にお解り いただけると思いますが, + このような物理フォーマットをおこなえば, 126個の制 + 限は短時間で達成してしまいます. + + 次に, もしスライスが root + ファイルシステムを含んでいるときには, 1024シ + リンダ以内という BIOSの制限を守っていなければなりません. + ブート処理の ときですから, bad144 リストは BIOS + を使って読み取りますので, このリスト が 1024 + シリンダ限界以内に位置していなければ読みとれません. + + + この制限は root + ファイルシステム だけ + が1024シリンダ限界以内にあれば十分ということではなく, + rootシステムを含 んだ スライス + 全体が1024シリンダ限界以内におさまっている必要 + があります. + + + + + カーネルのコンフィグレーション + + ESDIディスクを扱うドライバは, IDEや ST412 + MFMディスクなどと同じ wd ドライバです. + この wd ドライバは, すべての WD1003 + 互換インタフェースにも利用できるはずです. + + 大部分のハードウェアは, ジャンパの設定によって, + ふたつの I/Oアドレス範 囲と IRQ 値のうちから, + それぞれひとつを選ぶことができます. したがって, wd + タイプのふたつのコントローラを + ひとつのシステムで使うことができます. + + もし設定しようとしているハードウェアが + 標準以外の割り当てをサポートして いれば, + 適切な設定情報をカーネルのコンフィグレーションファイルに + 記述す ることで, この非標準割り当てを利用できます. + 次にカーネルのコンフィグレー ションファイルの例を示します + (このファイルがあるディレクトリは + /sys/i386/conf である). + + +# First WD compatible controller +controller wdc0 at isa? port "IO_WD1" bio irq 14 vector wdintr +disk wd0 at wdc0 drive 0 +disk wd1 at wdc0 drive 1 + +# Second WD compatible controller +controller wdc1 at isa? port "IO_WD2" bio irq 15 vector wdintr +disk wd2 at wdc1 drive 0 +disk wd3 at wdc1 drive 1 + + + + + ESDIハードウェアの例 + + + Adaptec 2320コントローラ + + 筆者は, ACB-2320でコントロールされた ESDIディスクへ, + FreeBSDをインストー ルすることができました. なお, + このディスクには他のオペレーティングシス + テムをインストールしていません. + + インストールするために, まず, + NEFMT.EXE (www.adaptec.com から + ftp可能) + でディスクを物理フォーマットし, かつトラックを代替セ + クタとともにフォーマットするかどうかの設問に + NOと答えました. また ACB-2320の + BIOSは使わないように設定しました. そしてシステム + BIOSがブー トできるように, システム + BIOSの自由に設定可能 + オプションを使いまし た. + + 実は, NEFMT.EXEを使う以前に, まず + ACB-2320 の BIOSに組み込まれているフォー + マットプログラムでディスクをフォーマットしてみましたが, + 使えないことが 判りました. なぜなら, + 代替セクタの処理をおこなわないようにするオプションが + 用意されていないからです. + 代替セクタ処理をおこなうようにすると, FreeBSDの + インストール作業は + bad144の実行の段階で失敗しました. + + もし ACB-232xy + をお持ちであれば, そのバージョン番号に注意してください. + 文字 x には + 02 が入りまして, + ボード上にフロッピーコントローラがあるかど + うかを見分けることができます. + + + 文字 yはさらに興味深いもので, + ブランクか, A-8か, または + Dのいずれかで す. ブランクは, + 単純な10Mビット/秒のコントローラであることを表します. + A-8は, 15Mビット/秒のコントローラで, + かつ 52セクタ/トラックをサポート + しているものであることを表します. Dは, + 15Mビット/秒のコントローラで, かつ 36セクタ/トラック以上 + (52セクタも可能か?) のドライブをサポートし + ているものであることを表します. + + このコントローラのすべてのバージョンはインターリーブ比 + 1:1に対応してい るはずです. FreeBSDは充分高速なので, ぜひ + 1:1と指定してください. + + + + Western Digital WD1007コントローラ + + 筆者は, WD1007でコントロールされた ESDIディスクへ, + FreeBSDをインストー ルすることができました. 正確には + WD1007-WA2というコントローラでした. + これ以外の複数のバージョンも WD1007にあります. + + 利用できるようにするために, + セクタトランスレーションとWD1007の BIOSと + を使わないように設定しました. この設定の意味は, + BIOSに組み込まれた物理 + フォーマットプログラムを使えないようにしたということです. + 代わりに, www.wdc.comから + WDFMT.EXEを入手して, + ディスクをフォーマットし ました. 以後, + 順調に動いています. + + + + Ultrastor U14Fコントローラ + + ネットに流れたいくつかの報告によれば, Ultrastorの + ESDIボードも FreeBSD で動作するようです. + 実際の設定についての詳しい情報はありません. + + + + + 追加資料 + + 本格的に ESDIのプログラミングを計画している方は, + 次の公式規格仕様書を 入手なさることをおすすめします. + + 最新の ANSI X3T10 委員会の文書は次のものです: + + Enhanced Small Device Interface (ESDI) + [X3.170-1990/X3.170a-1991] [X3T10/792D Rev 11] + + USENETのニュースグループ comp.periphs は, + 詳しい情報を得ることができる注目すべきもので す. + + World Wide Web (WWW) もまた便利な情報源です. Adaptec社の + ESDIコントロー ラについては http://www.adaptec.com/ を参照ください. Western Digital 社のコントローラについては http://www.wdc.com/ を参照ください. + + + + 感謝 + + Andrew Gordon氏より, テスト用の Adaptec + 2320コントローラと ESDIディス + クを送っていただきました. + + + + + SCSIとは? + + 原作:&a.wilko;. + July 6, 1996. + + 訳: &a.jp.yoshiaki;. + 4 November 1996. + + SCSI は Small Computer Systems Interface + (小規模コンピュータシ ステムインタフェース) + の頭文字をとったものです. + これはANSI標準でコンピュータ業界においては最もよく使われるI/O + バスの一つになっています. SCSIはシュガート社 + (ミニフロッピーディ スクを世界で最初に販売しました) の開発した + SASI (Shugart Associates Standard Interface) + バスが元になって規格化されました. + + その後の業界の努力により, + 異なるベンダのデバイスが混在して使え + るようにより厳密な規格へと規格化されました.この結果が ANSIの + SCSI-1規格として認可されました. SCSI-1の仕様は (1985年ごろ + に規格化されました 訳注: SCSI-1の最終案決定は1985年, + ANSIの標準 規格としての認可は1986年です) + すでに現在では時代遅れです. 現在の標準は SCSI-2 (さらに詳しい情報 + を参照してください) で, SCSI-3へ移行していくでしょう. + + 物理的な相互接続の規格に加えて, + SCSIではディスクドライブに不可欠な 論理的な規格 + (コマンドセット) も定義しています. + この規格は標準コマンドセット (CCS : Common Command Set) + と呼ばれ, ANSIのSCSI-1とほぼ同時期に制定されました. + SCSI-2には (改定された) CCSが規格の一部として組み込まれました. + コマンドはデバイスの 種類によって変わります. + 例えばスキャナでは Writeコマンドは意味が ありません. + + SCSIバス は多くの種類があるパラレルバスです. 最も古く, + 最も利用されているのが 8 bit 幅, シングルエンド (不平衡) 信号, + 50線の信号線のバスです. + (もしシングルエンドの意味が分からなくても気にするこ + とはありません. このドキュメントはまさにそのような人たちのため + のものです.) より新しい設計では 16 + bit幅で平衡信号のバスを使います. この場合, 転送速度は + 20Mbytes/second まで, ケーブルの長さは 25mまで可能です. + SCSI-2では追加のケーブルを使った最大32 bitのバス幅までが + 定義されています. 最近急速に増えているものに Ultra SCSI + (Fast-20とも呼ばれます) があります. また, SCSI-2には Ultra2 + (Fast-40ともいいます) というものも定義されています. + Fast-20は1秒間に2000万回の転送 (8bitバスで20Mbyte/sec), + Fast-40は1秒間に 4000万回の転送 (8bitバスで 40Mbytes/sec) + をおこないます. 最近売られているハードディスクの + ほとんどは不平衡信号の Ultra SCSI (8ビットまたは 16ビット) + です. + + + 訳注: ここでは電気的な用語としては平衡, 不平衡を用いて, + バスの名称としては基本的にはシングルエンド, + ディファレンシャルとしました. + + + もちろん SCSIバスにはデータ信号だけではなく, + 多くのコントロール信号線があります. + 複数のデバイスがバスを効率よく共有するための + 複雑なプロトコルも規格の一部です. + SCSI-2ではデータは常に独立したパリティ信号を + 使ってチェックされます. + SCSI-2以前ではパリティはオプションでした. + + SCSI-3ではさらに高速なバスタイプが導入され, + それと共にケーブルの線数を減らし, + より最大バス長を伸ばしたシリアルSCSIが導入されます. SSAや + Fiberchannelといった名前を聞いたことはありませんか? + シリアルバスは現在ではまだいずれの方式も普及していません + (特に一般的な FreeBSD環境では). + このためシリアルバスタイプについてはここでは + これ以上は触れません. + + 今までの記述から想像されるように + SCSIデバイスはインテリジェント です. これは SCSIの規格 + (この文書は2インチ以上の厚さがあります) + と切り離すことはできません. + このため例えばハードディスクでは特定のブロックをさすのに + ヘッド/シリンダ/セクタ + によって決めるのではなく単に必要なブロック番号を指定します. + 巧妙なキャッシュ動作や, + 不正ブロックの自動置き換えなどの機能はこの + 「インテリジェントデバイス」 + のアプローチによって可能になっています. + + SCSI バスでは任意のデバイスの組で通信することが可能です. + (訳注: 任意のデバイスがイニシエータになれるという意味です.) + デバイスの機能がそれを許すかどうかは また別の問題ですが, + 規格では 禁止されていません. + 信号の衝突を防ぐために2つのデバイスはバスを使う前に調停 + (arbitrate) をおこなう必要があります. + + SCSI の考え方として古い規格のデバイスと + 新しい規格のデバイスが + 同じバスの上で動くように規格を作っています. したがって, 古い + SCSI-1の デバイスは SCSI-2バスの上でも普通は動きます. 普通は, + とことわった理由は, + ある古いデバイスが新しいバスでも問題ない程に (古い) + 規格に対して十分沿った実装になっているかどうかは絶対的に + 保証はできないということです. + 一般に最近のデバイスはよりうまく動作します. + その理由は規格化がより厳密になり, + またメーカーがデバイスの製造に + おいてよりきちんと規格に従うようになってきているからです. + + + 一般的に言って, 単一のバス上で動かすデバイスは SCSI-2 + あるいはより新しいデバイスであれば + うまく動く可能性は高いと言えます. これは新しい + 2GBのディスクを手に入れたとしたら + 古いデバイスを捨ててしまわなければならないという + 意味ではありません. 私のシステムでは SCSI-1以前のディスク, + SCSI-2の QICテープユニット, + SCSI-1のヘリカルスキャンテープユニット (訳注: + VTRのような回転ヘッドを 持ったテープ装置のことです. + DATテープドライブもその一つです), 2台の SCSI-1 + ディスクが一緒に問題なく動いています. + ただし効率の点から古いデバイスと新しい (= 速い) + デバイスを分けたいかもしれません. (訳注: 古いデバイスの中には + disconnectをサポートしないために一連のコマンド実行中に + SCSIバスを占有してしまうデバイスもあります.) + + + SCSIの構成要素 + + 先に述べたように, SCSIデバイスはインテリジェントです. + つまりハードウェア細部にからむ知識は SCSIデバイス自身に + 持たせてしまおうという考え方です. この考え方では + SCSIデバイスはそれ自身のハードウェアの詳細を知っています. + この場合, ホストシステムはハードディスクがいくつのヘッド + を持ち, テープデバイスがいくつのトラックを持つかというような + ことを知る必要がありません. もしあなたが知りたいのであれば, + 規格で定義されているコマンドを + 使ってデバイスにハードウェアの詳細について + 質問することができます. + + インテリジェントデバイスの利点は明らかです. + ホストのデバイスドライバはより一般的に書くことができ, + 新しいデバイスを導入する場合でも変更の必要がありません. + + + + 接続でおこなうべきこと, してはならないこと + + ケーブルの接続には鉄則があります. + よい部品を使うことです. バスの速度を上げることができ, + 多くの災難を防ぐことができます. + + ですから, 金メッキのコネクタ, シールドケーブル, + 固定器具付きの頑丈なコネクタカバーなどを + 選ぶのは正しいことです. 2つ目の鉄則は, + ケーブルを必要以上に長くしないことです. + 私は以前にあるマシンでトラブルの 原因を探すのに + 3日間悩んでいましたが, SCSIバスを 1m 短く + することで問題を解決したことがあります. もちろん, + 元のバスの長さでもSCSIの仕様はきちんと + 満たしていたのですが. + + + + + SCSI バスのタイプ + + 電気的に互換性のない 2種類のバスのタイプがあります. + シングルエンドとディファレンシャルのバスです. これは SCSI + デバイスとコントローラは同一のバス上に混在することのできない + 2つのグループにに大きく分けられるということを意味しています. + しかし, 特別なハードウェアを使えばシングルエンドバスを + ディファレンシャルバスに (その逆も) 変換することはできます. + これらのバスのタイプの違いは次のセクションで説明します. + + + SCSI関連のドキュメントでは + 異なるタイプのバスを一種の用語とし て略語で表します. + これを次の表に示します. + + + + FWD: Fast Wide Differential (高速 ワイド 平衡) + + + + FND: Fast Narrow Differential (高速 ナロー 平衡) + + + + SE: Single Ended (不平衡) + + + + FN: Fast Narrow (高速 ナロー) + + + + etc. + + + + 少し想像力を働かせればどのような + 意味であるかはわかるでしょう. + + ワイド (Wide) はいくらか曖昧で, 16 または 32 + bitのバスを示します. 私の知る限りでは, 32 bit + のインタフェースは (まだ) 使われていませんので Wide は通常 + 16 bitを意味します. + + 高速 (Fast) はバスのタイミングがいくつかの点で異なり, + ナロー (8 bit) バスでは 低速 (slow) SCSIバスの 5 Mbytes/sec + に対して 10 Mbytes/sec の能力があります. 前にも述べたように, + 20Mbytes/sec や 40Mbytes/sec + のバス速度を持つものも現れてきています (Fast-20 == Ultra + SCSI で Fast-40 == Ultra2 SCSI です). + + + データ線の上位 (> 8) + はデータの転送とデバイスの指定だけに利用されています. + コマンドの送出とステータスメッセージ等は下位側の 8 + bitのデータ線のみを使います. この規格により + ナローデバイスはワイドバス上でも 動作する事ができます. + 利用できるバスの幅はデバイス間で調停 (ネゴシエーション) + されます. デバイスの + IDについてはワイドとナローが混在する時には + 気をつけなければなりません. + + + + シングルエンドバス (不平衡バス) + + シングルエンド SCSIバスは 5Vと 0Vの電圧 + (つまりTTLレベルです) を信号として使い, + それらは共通のグラウンド (GND) レベルを基準 にします. + シングルエンド SCSI 8 bitバスは約25本のグラウンド線 + を持ち, すべてのデバイスを「直線状」に接続します. + 基準ではシングルエンドバスは最大の長さは 6mです. Fast-SCSI + デバイスを使う場合には, この最大長さは 3mに短くなります. + Fast-SCSIでは 5Mbytes/sec ではなく 10Mbytes/sec の転送速度 + が可能になります. + + Fast-20 (Ultra SCSI) と + Fast-40ではそれぞれ1秒間に2000万 (20M) ないしは 4000万 + (40M) 回の転送ができます. したがって, Fast-20では + 8bitバスで 20Mbytes/sec, 16bitバスで 40Mbytes/secとなりま + す. Fast-20ではバスの最大の長さは 1.5m, Fast-40では + 0.75mに なります. Fast-20は限界を相当に広げるものなので + SCSIバス + に雑音が多い場合はその影響を即座に受けます. + + + バス上のいずれかのデバイスが 「高速の」 + 転送を利用する場合は + Fastバスの長さの制限を受けます. + + + 最近の Fast-SCSI デバイスではバスの長さが実際の問題に + なりつつあるのが明らかになっています. + これがディファレンシャル + SCSIバスがSCSI-2の規格に導入された理由です. + + コネクタのピン配置やコネクタの種類については + SCSI-2の規格 (さらに詳しい情報) + を参照してください.コネクタ等について + 詳細なリストがあります. + + 非標準のケーブルを使うデバイスに気をつけてください. + 例えば Apple (の Macintosh は) 25pin の D-type のコネクタ + (シリアルポートやパラレルプリンタに使われているコネクタ -- + 訳注: 日本では一般的に D-sub 25pinと言っています) + を使っています. 公式なSCSIバスでは50 pin + が必要である事からこのコネクタでは + 「独創的なピン配置」が必要な事が想像できるでしょう. ここ + でおこなわれているようにグラウンド線の数を + 減らすことはよい考え ではありません. SCSIの規格通りの 50 + pinの接続の方が望まし いです. Fast-20 や 40 + でこのようなケーブルを使おうなんて + 考えてはいけません. + + + + + ディファレンシャル (平衡) バス + + ディファレンシャル SCSIバスは最大長が 25m です. + シングルエンド Fast-SCSIバスの 3mとはまったく違います. + 平衡信号の背景と なっている考え方は, + それぞれのバスの信号はそれぞれ + 独立したリターン信号線を持つというものです. つまり, + それぞれの信号は (できればより線の) ペアの信号線で + 伝えられます. + これら2つの信号線の差分の電圧で信号が「真」(assert) で + あるか「偽」(de-assert) であるか判定されます. + かなりの電圧 + がグラウンド電位と信号線ペアの間にかかったとしても影響があ + りません (だからといって 10kVの電圧をかけてみたりしないで + ください.. ). + + なぜ平衡信号が よいのかについての説明は + このドキュメントの 範囲を越えています. + 電気的に平衡信号はノイズマージンの点で + 非常に優れたものとして利用されているということを + 受け入れて ください. + ディファレンシャルバスは普通は外部接続に 利用されています. + これは低コストのシングルエンドバスが筐体内の短 + い距離のバスでは非常に多く利用されているからです. + + FreeBSDを使うにおいて, FreeBSD でサポートされている + デバイスドライバがあるのであれば + ディファレンシャルバスの利用で 問題になることは + 何もありません. 例をあげれば, アダプテックの + AHA1740はシングルエンドで, + AHA1744はディファレンシャルです. + 双方のソフトウェアインタフェースはまったく同一です. + + + + ターミネータ + + SCSIにおける用語でのターミネータとはインピーダンスの + マッチングを正確におこなうための抵抗ネットワークです. + インピーダンス マッチングは反射やリンギングを抑え, + バスの信号をきれいにす る重要なものです. たとえば, + あまり状態のよくない回線で長距 + 離の電話をかけた時にあなたは反射をどんなものか + 感じるかもしれません. 20Mbytes/sec で信号の伝わる + SCSIバスでは信号のエコーはあ りがたくありません. + + 訳注: + 電気信号のパルスは進行波としての性格を持っています. + このため, 一般的には信号線の両端で反射が起きます. + 3mのバスの端からパルスを入れた場合, + 反対の端からの反射波は 20ns後 - 本当は電線中の信号の伝達は + 光速よりも少し遅くなるのでもう少し時間がかかりますが - + に返ってきます. 低速のバスの場合タイミング的な余裕があり, + 反射を繰り返しているうちに反射波は減衰してしまうのですが + 高速のバスの場合は, 反射波の影響が落ち着く前に信号の + 読み込みなどを行うために波形の乱れが誤動作の原因に + なる場合があります. + このためターミネータを使用して反射波の発生をできるだけ + おさえます. + + ターミネータはいろいろな - + 洗練されたものもそうでないものも - 実現方法があります. + もちろん, 内蔵のものと外部という 区別もあります. 多くの + SCSIデバイスにはいくつかの ソケットがあり, + その中には抵抗ネットワーク (集合抵抗) が + 入っているものもあるかもしれません (いや, おそらく + 間違いなくあるでしょう). ターミネータを + デバイスから外す時は大事にしまっておいてください. SCSIの接 + 続の変更をしようと思った時に必要になるかもしれません. ま + た, + それらしい抵抗ネットワークが見つからないこともあります. + この場合, SCSIデバイスは内蔵ターミネータの有効と無効を切替 + えるジャンパがあります. フラットケーブルに取り付ける特別 + なターミネータもあります. 他には外部コネクタのような形をし + たものやケーブルのないコネクタヘッドだけのものもあります. + いろいろと見られるように多くの選択があります. + + + どのような場合に単純な抵抗 (パッシブ) ターミネータから + アクティブターミネータへ切替えるかという問題があります. + アクティブターミネータはいくらか精巧な回路が信号をより + きれいにするために入っています. + 一般的に受け入れられている意見としては, 長いバスを使ったり + 高速なデバイスを使う場合はアクティブターミネータの + 有効性は増加すると言えます. SCSI バスですでに問題が起きて + いるならアクティブターミネータを試すことを考えていいで + しょう. まず借りることができないか探してみてください. + アクティブターミネータは非常に高価だそうですから. + + ディファレンシャルと + シングルエンドバスのターミネータは互換 + 性がないということを覚えておいてください. これらの2つの種 + 類を + 混在させることはできません. + + OK, ではあなたは + ターミネータをどこに入れればいいでしょうか? これは + SCSIで最も多く誤解されているところです. しかし, これ + は極めて単純なことです.. ここでのルールは + SCSIバスの線 一本一本は必ず両端に + 2個のターミネータを入れる ということです. + つまり 2個であって1個でも3個でもありません. + このルールを受け入れてしたがってください. そうすれば終りの + ない苦しみから救われるでしょう. + なぜなら間違ったターミネーションは不可解なバグを引き起こす + 可能性が非常に高いからです. (ここの “可能性” + に注意; 一見動いているように見える + ことがあるのがやっかいです.) + + よく陥りやすい落し穴はマシンの内部 (フラット) + ケーブルと外部 + ケーブルがコントローラにつながっている場合です. よく見られ + るのはコントローラのターミネータを外すのを忘れることです. + ターミネータは最後の外部デバイスで必要で, コントローラ + には必要ありません! 一般的に, SCSIバスの接続の変更をする場 + 合はこのようなことに注意をしなければなりません. + + + ターミネータの位置は + 信号線ごとに決まることに注意して下さい. + ナローとワイドのケーブルを + 両方コントローラにつないでいる場 合には, + ケーブルの両端とともにコントローラ上ではバスの上位 + 8ビットをターミネートしないといけません. + + + 私自身は, + すべてのデバイスとコントローラのターミネータを外し + ています. 2個の外部ターミネータをセントロニクスタイプ + (訳注: 日本ではケーブルに対してこういう言い方は + あまりしないのでは ないでしょうか) + 外部ケーブルと内部フラットケーブルの + コネクタの両端に接続しています. + こうすることにより接続の変更はかなり簡単になります. + + 最近のデバイスは, + ICターミネータが使われることもあります. + コントロールピンにより無効 / 有効を設定できる 特別の IC + があります. + これは物理的にデバイスから外す必要がありません. + 新しいホストアダプタではセットアップツール等を使って + ソフトウェア的に設定をおこなう場合があります. + また, 中には端子に接続されたケーブルを検出して + ターミネータ を必要に応じて自動的に + 有効にするものもあります. いずれにしろ, マニュアルを見てく + ださい. + + + + ターミネータの電源 + + ここまでの章で議論したターミネータは + 正常に動作するためには 電源が必要です. + SCSIバス上にはこの目的のために利用される線があります. + だから特に気にする必要はないと思いますか? + + ところがそうではないのです. + それぞれのデバイスはデバイス上 + にあるターミネータソケットに電源を供給することはできます. + けれども外部ターミネータがある場合やSCSIバスにターミネータ + の電源を供給するデバイスのスイッチがオフになっているような + 場合にはトラブルが起きるかもしれません. + + イニシエータ (ここではバスの動作を開始-initiate-させる + デバイスを指します -- 訳注: + 簡単に言えばホスト側のアダプタですがSCSIの 規格によれば, + 例えばディスク側がコマンドを発行するような + システムがあってもかまわないことになっているので + こういう言い方をしています) は + ターミネータ電源を供給しなければなりません. + すべてのSCSIデバイスはターミネータの電源を供給することが + できます (必ずしも供給しなければならないというわけ + ではありません). + + + スイッチがオフになっているデバイスが + バス上に存在することを 許すために, + ターミネータの電源はダイオードを通して供給され + なければなりません. これはスイッチを切ったデバイスに電流 + が逆流することを防ぐためです. + + 最悪の事態を避けるために, + ターミネータの電源は普通はヒュー ズが入っています. + 当然ヒューズは飛ぶかもしれません. この + 場合でもバスが機能停止するとは限りません. 複数のデバイスが + ターミネータの電源を供給しているのであれば, ヒューズが一つ + 飛んでも全体の機能には影響しません. ただ一つの供給線の + ヒューズが飛んだのであれば確かに問題になるでしょう. + 外部ターミネータによっては LED でターミネータ電源 + が与えられていることを示すものもあります. + + 最新の設計ではある程度の時間がたつと 「リセット」され + 自動復帰するヒューズが使われることもあります. + + + + デバイス アドレッシング + + SCSIバスでは接続された異なるデバイスを区別して指定 + できなければなりません. + + これには SCSIではターゲットIDが使われます. + それぞれのデバイ スは特定のターゲットIDを持ちます. + デバイスの IDはジャンパや DIPスイッチなどで設定できます. + ブート時のメニューからIDを + 変更できるようになっているコントローラもあります. (また, + IDを 7から変えることができないコントローラもあります.) + より詳しい情報はデバイスのマニュアルを見てください. + + 複数のデバイスを使う場合は + IDの重複に気をつけてください. + 重複すると普通は混乱状態になります. 同じ IDを共有している + デバイスのうちの一つがI/Oリクエストに答えられたりすると + 非常にやっかいなことになります. + + 8 bitバスでは, 最大8台のターゲットまで可能です. + 最大8台で ある理由は, + バスの8本のデータ線がデバイスの選択に使われる からです. + ワイドなバスでは使えるデバイスの数は増えます + (通常は16になるわけです). + + + ナロー SCSI デバイスは 8 以上のターゲット ID + を持つデバイスとは 通信できないことに注意してください. + ですから, コントローラ + のターゲットIDを8以上にするのはあまりいい考えとは + いえません (CD-ROMが使えなくなったりします). + + + 同時にバス使用の要求が発生した場合, 最も + IDの大きいデバイス が優先されるという調停がおこなわれます. + このことは SCSIホストアダプタの + IDは通常7番が使われる理由でもあり ます. ただし, + ワイドバスでは下位8ビットが上位8ビットより優 + 先度が高いことに注意してください. つまり, ワイドSCSIのシス + テムではターゲットIDの優先度は高い順に [7 6 .. 1 0 15 14 + .. 9 8] となります. + (どうして下位8ビットの方が優先度が高いかは, + 一つ前の段落を読んで考えてみて下さい.) + + さらにサブユニットとして, 規格では ロジカルユニット, + 短縮形で LUNを持つことができます. + 一つのターゲットIDが複数の LUNを 持つことができます. + 例えば, テープチェンジャを持つテープ ドライブは LUN + 0をテープドライブ自身, LUN 1を テープチェンジャ + に与えることができます. このようにして, + ホストシステムはテープチェンジャの目的の + テープユニットの部分を指定することができます. + + + + バスの形状 + + SCSIバスは直線状です. つまり, Y接続, スター接続, + 円形, クモの巣状の接続などの直線以外の接続ではありません. + 初心者が + よくやる間違いとしてはワイドSCSIのコントローラの端子3つと + もにケーブルをつないでしまうというものがあります. (外部, + 内部ナロー, 内部ワイド.) + よほど運がよければこんなトポロジー + でもちゃんと動くように見えるかもしれませんが, えてしてこう + いうシステムは一番大切な時に使えなくなったりするものです + (これを“マーフィーの法則”といいます). + + 先に議論したターミネータの問題は直線状以外の場合では + より困難になるだろうということに注意してください. また, + 内部バス用の ケーブルの端子の数よりデバイスの + 数の方が少ない場合には, + 必ず両端の端子にはデバイスをつなぐようにしてください. + 内側の端子を使ってケーブルの端を余らせておくと, + ターミネータの効果が半減します. + + 電気的特性はそのノイズマージンや全体の信頼性において, + 直線状のバスのルールに強く依存しています. + + 直線状バスであるというルールに + したがってください! + + + + + FreeBSD で SCSIを使う + + トランスレーション, BIOS, そしてマジック... + + まず始める前に, + 電気的に問題のないバスであるか調べておいてく + ださい. + + SCSIディスクをPCでブートディスクとして使う場合に, PC + BIOSに 関する気まぐれについて知っておく必要があります. PC + BIOSは ハードディスクへの低レベル物理インタフェースを + 利用するように 実現されています. したがって, BIOSに + (セットアップツールやBIOSビルトイン セットアップを使って) + ディスクの物理パラメタを教えてやる 必要があります. + これはヘッドの数, シリンダの数, + トラックあたりのセクタなどがあり, + プリコンペンセーションや書き込み電流を 減少させるトラック, + などのあまりよく知られていないものもあります. + + SCSIディスクはこれらのことをユーザは + 気にする必要がないはず だと考えるかもしれません. しかし, + 不思議なことに (これらの項 目の) + セットアップはいまだにあるのです. システム BIOSはブート + 時にFreeBSDのカーネルを読み込むためにSCSIディスクに + /ヘッド/シリンダ/セクタ を指定する方法でアクセスするため, + パラメタを知る必要があるのです. + + AT/EISA/PCIバスなどにあり, ディスクに接続される + SCSIホストアダプタや SCSIコントローラは + それ自身のオンボードBIOSを持っています. + システムの起動時に, SCSI BIOSは + システムBIOSのハードディスクの + インタフェースルーチンを乗っ取ります. + システムBIOSをごまかすために + システムセットアップでは普通は `No hard disk' とします. + 簡単ですね? + + 訳注: BIOS で `No hard disk' という設定をおこなうのは + SCSI ドライブから直接起動させるためのテクニックです. + 現在のマザーボードでは SCSI ドライブから起動させるための + オプションを持つ BIOS を使用しているものもあります. また, + ブートセレクタを使って IDEドライブのブートブロックから + SCSIドライブ上の FreeBSDをブートすることもできます. + + SCSI BIOS はドライブの + トランスレーション と呼ばれる + 機能を持ちます. + これはPCがブートするために作られたドライブテー + ブルをごまかすものです. このトランスレーションは多くは + (すべての場合ではありません) + トラックあたり64あるいは32個のヘッドを + 持つ仮想的なドライブを使います. + シリンダの数を変更することで SCSI BIOS + は実際のドライブのサイズに適合させます. 総セクタ数 を 32 * + 64 / 2 で割った結果がメガバイト単位のドライブのサイズ + になります. 2で割っているのは, 通常 512バイトのサイズの + セクタを kByte 単位に変換するためです. + + ではこれですべてうまくいくのでしょうか. いいえ, + そういう訳で はありません. + ブート可能なハードディスクのシリンダ数は 1024よ + り多くすることはできないのです. + トランスレーションを使った 場合でもディスクの + 1GB以上の領域は見えません. ディスクの容量 + がどんどん増加していくにつれこれは問題になってきました. + + + 幸いにして, 単純な解決方法があります. + 単に別のトランスレーショ ンを使えばよいのです. 例えば, + 32個に代わり, 128個のヘッドを使います. ほとんどの場合, + 古いSCSIホストアダプタをアップグレードす + るための新しいバージョンの SCSI BIOS が用意されています. + 新しいアダプタではジャンパ やセットアップソフトによって + SCSI BIOSの使う + トランスレーションを選択できる物もあります. + + ここで非常に重要なことは, + ディスク上のすべての + オペレーティングシステムが + 同一のトランスレーションを使って + 正しいパーティションを得ることです. つまり + FreeBSDをインストールする時に, + ヘッド/シリンダなどについての + 質問にあなたのホストアダプタが + 使用しているトランスレートされた + 値を使わなくてはなりません. + + トランスレーションに関する失敗でよく見られるものは, + ブートしないシステムができたり, 他のパーティションを + 上書きしてしまうことです. すべてのシステムが見えるように + fdiskを使うべきです. + + あなたはデバイスについて + これとは食い違った話を聞いたことが あるかもしれません. + 古い FreeBSDのカーネルはブートする時に SCSI + ディスクのジオメトリ情報を報告していました. + 私のシステムの一つの例を示しましょう. + + aha0 targ 0 lun 0: <MICROP 1588-15MB1057404HSP4> + sd0: 636MB (1303250 total sec), 1632 cyl, 15 head, 53 sec, bytes/sec 512 + + 最近のカーネルは, 普通はこのような情報を報告しません. + たとえば, このようになっています. + + (bt0:0:0): "SEAGATE ST41651 7574" type 0 fixed SCSI 2 + sd0(bt0:0:0): Direct-Access 1350MB (2766300 512 byte sectors) + + なぜこのように変わったのでしょう? + + この情報は SCSIディスク自身から得られます. + 最近のディスクで はよくゾーンビット記録方式 (zone bit + recording) という 技術が使われています. + これはドライブの外側のシリンダは + 内側よりもスペースが広いのでトラックあたりのセクタ数を + 増やすことができるというアイディアです. この結果, + 外側のシリンダ上のトラックの容量は内側の + シリンダよりも大きくなり, + 全体ではより大きな容量となります. この場合, + ドライブのジオメトリについての報告は, + 最善のものかどうか疑わしく, + ほとんどの場合誤解を招くものであ ることがわかるでしょう. + ジオメトリを調べる場合, ほとんどの場合は BIOSの用い + ている値を与える方がよい結果となり, + BIOSがそのディスクに + ついてまったく関知しないのであれば + (例えばブートディスクで はないなら) + 都合のよい仮想のジオメトリを与えればいいでしょう. + + + + SCSI サブシステムの設計 + + FreeBSDでは階層的な SCSIサブシステムを用いています. + それぞれ 異なるコントローラカードの + デバイスドライバが書かれています. + このドライバはコントローラのハードウェアの + 詳細を知っています. ドライバは + SCSIサブシステムのより上位の階層のコマンドを受け取り, + ステータスを報告するインタフェースを持ちます. + + カードのドライバの最上位には, デバイスのクラスのための + いくつかの一般的なドライバがあります. 具体的にいうと, + テープドライブのためのドライバ (略号は: st), 磁気ディスク + (sd), CD-ROM (cd) などです. これらのソースコードは + /sys/scsiにあります. + マニュアルページ (man) のセクション 4 にはより詳しい内容が + あるので見てください. + + 多階層の設計は低レベルとより高位の + レベルを分離させることが できます. + 新たに他の種類のハードウェアのサポートを加えることを + より処理しやすい問題にします. + + + + カーネルコンフィグレーション + + あなたのハードウェア構成にしたがって, カーネルの + コンフィグファイルに ホストアダプタについて + 1行あるいは数行程度の記述をする 必要があります. これには + I/O アドレスや割り込みなどについての内容も 含みます. + あなたのアダプタのドライバについてのマニュアルページ + にはより多くの情報があるのでよく読んでください. + これとは別に /sys/i386/conf/LINT + にはカーネルコンフィグファイルについての 概要があります. + LINT + には一般的なものについては可能なすべての + オプションが含まれています. ただし, + LINT + では実際に動作するカーネルを作ることは + できません. + + 当然のことを言うようで恐縮ですが, + カーネルコンフィグファイルは実際のハードウェア構成を + 反映すべきです. そのように割り込みやI/Oアドレス等に + 合わせてカーネルコンフィグファイルを書か + なければなりません. + システムのブート時のメッセージは実際に + 見つけたハードウェアの設定を表示します. + + + ほとんどの EISA/PCI 用のドライバ (具体的には + ahb, + ahc, + ncr と + amdです) + はブート時にコントローラから直接パラメータ + を読みこみます. これらについては, 何も引数をつ + けずにただ controller ahc0 + のように書けば大丈夫で す. + + + 例として FreeBSD 2.2.5-Releaseのいくつかのコメント + ([]の中) をつけた LINT + カーネルコンフィグファイルを示 します. + + +# SCSI host adapters: `aha', `ahb', `aic', `bt', `nca' +# +# aha: Adaptec 154x +# ahb: Adaptec 174x +# ahc: Adaptec 274x/284x/294x +# aic: Adaptec 152x and sound cards using the Adaptec AIC-6360 (slow!) +# amd: AMD 53c974 based SCSI cards (e.g., Tekram DC-390 and 390T) +# bt: Most Buslogic controllers +# nca: ProAudioSpectrum cards using the NCR 5380 or Trantor T130 +# ncr: NCR/Symbios 53c810/815/825/875 etc based SCSI cards +# uha: UltraStore 14F and 34F +# sea: Seagate ST01/02 8 bit controller (slow!) +# wds: Western Digital WD7000 controller (no scatter/gather!). +# + +[ Adaptec AHA274x/284x/294x/394x などのコントローラ] +controller ahc0 + +[ NCR/Symbios 53c875 コントローラ] +controller ncr0 + +[Ultrastor アダプタ] +controller uha0 at isa? port "IO_UHA0" bio irq ? drq 5 vector uhaintr + +# Map SCSI buses to specific SCSI adapters +controller scbus0 at ahc0 +controller scbus2 at ncr0 +controller scbus1 at uha0 + +# The actual SCSI devices +disk sd0 at scbus0 target 0 unit 0 [SCSI ディスク 0 は scbus 0, LUN 0] +disk sd1 at scbus0 target 1 [unit を省略すると暗黙で LUN 0] +disk sd2 at scbus1 target 3 [uha0 上の SCSIディスク] +disk sd3 at scbus2 target 4 [ncr0 上の SCSIディスク] +tape st1 at scbus0 target 6 [SCSI テープ は ターゲット (ID)6] +device cd0 at scbus? [最初に見つけた CD-ROM, 固定にしない] + + 上の例では カーネルは ahc (Adaptec 274x) + コントローラをまず探し, その次に NCR/Symbios + のボードというように順番に探して 行きます. その下の行の + controller の記述ではデバイスの詳細 を記述して, + 対応するバスでターゲット ID と LUN が指定された + ものと一致する場合だけ + 認識するようにカーネルに 伝えています. + + 固定された (Wired down) デバイスは + “最初に”ユニット番号が 与えられるので, + “固定”されていないデバイスは同じ種類の + “固定”されたユニット + 番号の最も大きい番号の1つ上の番号から割り当てられます. + したがって, ターゲットID 2の SCSIテープを加えると, + ターゲットID 6 + のテープがユニット番号1に固定されているので, + それはst2に設定 されるでしょう. + + + ブート時に見つからなくても固定されたデバ + イスにはユニット番号が常に割り当てられます. + 固定のデバイスに 割り当てられたユニット番号は, + もしそのデバイスのスイッチが + ブート時に切られていてもそのデバイスに + リザーブされています. これは, + 電源を入れて接続した時のユニット番号が与えられます. + デバイスのユニット番号は SCSIバスのターゲットID とは + 何の関係もない + ことに注意してください. + + + 下の例は FreeBSD のバージョン 2.0.5 以前の + カーネルコンフィ グファイルです. + 最初の例との違いはデバイスの“固定 (wired + down)” がないことです. “固定” + によりどのSCSIターゲットをどの + デバイスに割り当てるかを記述できるようになりました. + + 下のコンフィグファイルにより + 構築されたカーネルでは最初に見つ けた SCSIディスクが + sd0になり, 次に見つけたディスクが sd1に, + という具合に割り当てられます. + もしディスクの削除や追加をおこなう と, + 他の同じタイプのデバイス (この場合はディスク) のすべてが + 「移動して」しまうかもしれません. これによりそのたびに + /etc/fstab + を変更する必要があります. + + 古いスタイルでも動きますが, + 新しいスタイルを使うことが強 く + 推奨されています. これにより SCSIバスのハードウェアを + どのように変更した場合でもトラブルを避けることができます. + ですから, 2.0.5.R以前の + FreeBSDからアップグレードした後に古い + 信頼できるコンフィグファイルを再利用する時はこの部分を + チェックして直してください. + + +[Adaptec 174x用のドライバ] +controller ahb0 at isa? bio irq 11 vector ahbintr +[Adaptec 154x用のドライバ ] +controller aha0 at isa? port "IO_AHA0" bio irq 11 drq 5 vector ahaintr +[Seagate ST01/02インタフェースのドライバ] +controller sea0 at isa? bio irq 5 iomem 0xc8000 iosiz 0x2000 vector seaintr +controller scbus0 + +device sd0 [4台のSCSI ディスクのサポート, sd0 から sd3] + +device st0 [2台の SCSI テープのサポート] + +[CD-ROMのドライバ] +device cd0 #Only need one of these, the code dynamically grows + + 両方の例で SCSIディスクがサポートされています. + ブート中に 「固定」の記述がされているタイプ(例えば sd + ディスク) のデバ イスで記述より多くのデバイスが見つかると, + システムは単純に最後の “固定” + のデバイスの番号より + 1つずつ増加させた番号をデバイスに割り当てて行きます. もし + “固定” のデバイスがなければユニット番号は 0 + から始まります. + + man 4 scsi によって + SCSIサブシステムの最新の情報を チェックしてください. + より詳細なホストアダプタドライバの使い 方は, たとえば + Adaptec 294xドライバの場合はman 4 ahc + にあります. + + + + カーネルセットアップでの SCSI チューニング + + 経験的に SCSIバスリセット (ブート時におきます) + 後のINQUIRYコマ + ンドに対して応答が遅くなるデバイスがあります. + INQUIRYコマンドは ブート時にカーネルがどの種類のデバイス + (ディスク, テープ, CD-ROMなど) + がどのターゲットIDに接続されているかを調べるために + 発行します. ちなみにこのプロセスをデバイスプロービング + (デバイス検出) と言います. + + 「応答の遅いデバイス」の問題を解決するために, + FreeBSDは SCSIバスをリセットした後に SCSIデバイスの検出を + おこなうまでのディレイタイムを調整することができます. + カーネルコンフィグレーションファイルの下に示すような + 行にディレイタイムを設定してください. + + +options SCSI_DELAY=15 #Be pessimistic about Joe SCSI device + + この行ではディレイタイムは 15秒です. 私のシステムでは, + 信頼できる古い + CD-ROMが認識できるように3秒の値を使っています. もし + デバイスの認識で問題が起きる時は大きな値 (30秒であるとか) + から 始めてください. うまく動いたら, + 値を減らしてちょうどよい値 + にチューニングしてください. + + + + Rogue な SCSI デバイス + (訳注: rogue は有名なゲーム, ではなくて 悪党, + 群から離れた, 凶暴な, という意味) + + SCSI の規定は完全で簡潔なものにしようという + 努力はされましたが, 複雑な規定となり, + 正確に実現するのは簡単なことではありません. + いくつかのベンダは他よりもよい仕事をしています. + + ここで “イカレた” + デバイスが現れることになります. このような デバイスは + FreeBSD のカーネルにいくらか標準的 + ではない振舞をするものと認識されます. + “イカレた”デバイスは + ブート時にカーネルによって報告されます. 次の例は私の2つの + カートリッジテープユニットです. + + Feb 25 21:03:34 yedi /kernel: ahb0 targ 5 lun 0: <TANDBERG TDC 3600 -06:> +Feb 25 21:03:34 yedi /kernel: st0: Tandberg tdc3600 is a known rogue + +Mar 29 21:16:37 yedi /kernel: aha0 targ 5 lun 0: <ARCHIVE VIPER 150 21247-005> +Mar 29 21:16:37 yedi /kernel: st1: Archive Viper 150 is a known rogue + + 例えば, + あるターゲットIDから実際には1つのデバイスしかないの + にすべての + LUNからの応答があるようなデバイスがあるとします. カー + ネルはその特定のターゲットIDに8個の + LUNがあると誤解してしまう かもしれません. + このような混乱の起きる原因については読者へ + の課題にしておきます. + + FreeBSDの SCSIサブシステムは 検出時の + INQUIRYの応答を見て + 悪い習慣を持つデバイスの認識をしています. + INQUIRYの応答には + デバイスのファームウェアのバージョン番号が含まれるため, + 異なる 動作をするファームウェアのバージョンを + 区別することも可能です. 例えば, + /sys/scsi/st.c や + /sys/scsi/scsiconf.c を 見てください. + どのように行っているか, より多くの情報があります. + + この方法はうまく行きますが, + もちろん既知のデバイスがつながっ + ている場合だけうまくいくということに + 気をつける必要があります. もしあなた以前に Mumbletech + SCSI CD-ROM (訳注: 架空のメーカ のデバイスです) + を接続した人がいないとしたら, どんな 「ワザ」 + を使ってそれを使うか自分で見つけないと + いけないかもしれません. + + あなたの Mubletech を動かすことができたらその成果を + FreeBSDの 次のリリースへ含めるために + FreeBSD開発チームへ送ってくださ い. 他の + Mumbletechの利用者たちはあなたに感謝するでしょう. + + + + 複数の LUNを持つデバイス + + 単一の SCSI ID上に複数の論理ユニット (LUN) + を持つデバイスを使う ような場合もあるかもしれません. + 多くの場合では FreeBSDは LUN 0 のみを検出します. + このような例としては2台の SCSIではないハード ディスクを + SCSIバスにつなぐブリッジボード (例えば古い Sunシステ + ムに見られる Emulex MD21) があります. + + LUN + が0ではないデバイスは普通はシステムブート時の検出では + 見つかりません. この問題にうまく対処するには + /sys/scsi/scsiconf.c + に適切なエントリを加えてカーネルを再構築 + しなければなりません. + + 以下のように初期化されている構造体を探します. + + +{ + T_DIRECT, T_FIXED, "MAXTOR", "XT-4170S", "B5A", + "mx1", SC_ONE_LU +} + + LUNが複数あるあなたの Mumbletech BRIDGE2000 + はハードディスク として働きます. + またファームウェアのリビジョン123などを次のよ + うに書き加えます. + + +{ + T_DIRECT, T_FIXED, "MUMBLETECH", "BRIDGE2000", "123", + "sd", SC_MORE_LUS +} + + 訳注: 複数 LUNに対応するためには構造体の最後の要素を + SC_MORE_LUSにします. エントリを作る必要がある場合は + scsiconf.c にある + MBR-7等のエントリを参考にするといいでしょう. + + カーネルは + INQUIRYに一致するデータをブート時にテーブルから + 探してこれにしたがってふるまいます. より多くの情報は + ソースコードを見てください. + + + + タグ コマンド キューイング + + 最近の SCSI デバイス, 特に磁気ディスクではタグ + コマンド キューイング (tagged command queuing: TCQ) + がサポートされています. + + 要約すれば, TCQ は複数の I/O + リクエストを同時に受けることを可能 にすることです. + デバイスはインテリジェントですから,リクエスト + キューにある処理 (ヘッドのポジショニングなど) の最適化を + おこなうことができます. RAID (Redundant Array of + Independent Disks) + のようなSCSIデバイスではTCQ機能はデバイスの持つ並列性の + 利点を生かすために不可欠です. + + 各々の I/O リクエストは単一の “tag” (タグ + コマンド キューイン グの名前の由来) が与えられます. + FreeBSDはこの tagによりデバ イスドライバのキューの中のどの + I/Oリクエストが完了したかの 識 別をおこないます. + + TQC のリクエストはデバイスドライバが + サポートしていたとしても + あるデバイスのファームウェアではインプリメントが + “正しくない” かもしれません. + このような問題に出会うと非常に不可解な問題に つながります. + このような場合は TCQ を無効にしてみてください. + + + + バスマスタ ホストアダプタ + + すべてではありませんが多くの SCSIホストアダプタは + バスマスタコントローラです. これはホストCPUにデータ転送の + 負荷をかけず, ボード自身がI/Oをおこないます. + + これは + FreeBSDのようなマルチタスクのオペレーティングシステム + では大きな利点になります. しかし, + 何らかの問題の起きることも あります. + + 例えば Adaptec 1542 コントローラは ホストバス + (ここでは ISA または AT バス) + を異なった転送速度に設定できます. コントローラが + 異なるレートに設定できるのは すべてのマザーボードで + 高速な転送が できるわけではないからです. + マザーボードに合っていない高速の + データ転送速度を用いた時には, + ハングアップやデータの損傷等の + 問題が起きるかもしれません. + + これを解決する方法は明らかです. + より低いデータ転送速度に設定 + してうまく動くか確かめることです. + + Adaptec 1542 の場合, + 可能な限り高速な転送レートを動的に読み取って, + 正しい決定をおこなうためのオプションを + カーネルコンフィグファイルに 追加することができます. + このオプションはデフォルトでは無効に なっています. + + +options "TUNE_1542" #dynamic tune of bus DMA speed + + あなたの使うホストアダプタについてのマニュアルページを + チェックしてください. + また最終的な手段としては究極のドキュメントを + 使ってください + (つまりドライバのソースを読んでくださいというこ + とです). + + 訳注: 2.1.5R + の時点ではすべてのドライバに関してマニュアルページ + があるわけではありません. また上の例の + TUNE_1542のオプション も man aha + にはないようです. ソースのコメントだけで + も一度見ておいてもいいかもしれません. + + + + + 問題を突き止める + + 以下は SCSI + で一般的に問題が起きた場合に解決をするためのチェッ + クリストの試みです. これは完全な物ではありません. + + + + コネクタとケーブルがゆるんでいないかチェックする. + + + + + ターミネータの場所と数を念には念を入れて + チェックする. + + + + 少なくとも 1 + つのターミネータの電源の供給源があるかチェック する + (特に外部ターミネータを使う場合). + + + + ターゲットIDが重複していないかチェックする. + + + + 使用するすべてのデバイスの電源が ON + になっているかチェックする. + + + + 必要最小限のデバイスだけの構成を試してみる. + + + + 可能であれば, + ホストアダプタのスピードを遅くする. + + + + 問題をより単純にするために, + タグコマンドキューイングを可能 であれば無効にする. + (NCRベースのホストアダプタについては man ncrcontrol + を見てください) + + + + カーネルのコンパイルができるのであれば, + SCSIDEBUGオプショ ンをつけて + makeして, デバイスをデバッグモードにしてアクセ + スしてみてください. もしそれでも起動時にデバイスが検出 + されないのであれば, デバイスの設定アドレスが間違っている + のかもしれません. また, /sys/scsi/scsidebug.h に + あるデバッグレベルを変えてみてください. 検出はされるが + 動かないのであれば, &man.scsi.8; コマンドで + (SCSIDEBUG をつけてmakeした) + カーネルが動いている状態で動的にデバッグ + レベルを設定することができます. これは guru (UNIXの達人) + で も混乱してしまうほどの非常に大量のデバッグ情報を + 出すでしょ う. man 4 scsi + にはより正確な情報があります. またman + 8 scsi も見てください. + + + + + + さらに詳しい情報 + + もしあなたがいくらかは本気で + SCSIハッキングをする気があるなら + たぶん正規の規格を持っていたくなるでしょう. + + 承認ずみのアメリカ工業規格は ANSI から購入できます. + 住所と電話番号は + +
+ 13th Floor + 11 West 42nd Street + New York + NY 10036 + Sales Dept: (212) 642-4900 +
+ + です.
+ + また, ANSIの規格および委員会の規格案 (ドラフト) + のほとんどは Global Engineering Documents + より買うことができます. 連絡先は + +
+ 15 Inverness Way East + Englewood + CO, 80112-5704 + Phone: (800) 854-7179 + Outside USA and Canada: (303) 792-2181 + Fax: (303) 792- 2192 +
+ + です.
+ + X3T10 のドラフトの多くは電子的に利用できる形で SCSI BBS + (719-574-0424) と ncrinfo.ncr.com の Anonymous FTP + (誰でも ファイルを取ってくることができるFTPサービス) + サイトから得るこ とができます. + + 最新の X3T10委員会のドキュメントは: + + + + AT Attachment (ATA or IDE) [X3.221-1994] + (Approved) + + + + ATA Extensions (ATA-2) [X3T10/948D Rev 2i] + + + + Enhanced Small Device Interface (ESDI) + [X3.170-1990/X3.170a-1991] + (Approved) + + + + Small Computer System Interface — + 2 (SCSI-2) [X3.131-1994] (Approved) + + + + SCSI-2 Common Access Method Transport and + SCSI Interface Module (CAM) + [X3T10/792D Rev 11] + + + + 追加情報を得ることのできる出版物は: + + + + “SCSI: Understanding the Small Computer + System Interface”, NCR社 + 編. 出版: Prentice Hall, Englewood Cliffs, NJ, 07632 + Phone: (201) 767-5937 ISBN 0-13-796855-8 + + + + “Basics of SCSI”, + a SCSI tutorial, Ancot Corporation 編 + Ancot の連絡先: + Phone: (415) 322-5322 Fax: (415) 322-0455 + + + + “SCSI Interconnection Guide Book”, + AMP社の出版物 (発行 4/93, カ + タログ 65237) 色々な + SCSI コネクタのリスト と ケーブル接続方法のガイド. + AMP 社より入手可能. (800) 522-6752 + または (717) 564-0100 + + + + “Fast Track to SCSI”, + 富士通によるプロダクトガイド, + 入手先: Prentice Hall, Englewood Cliffs, NJ, 07632 + 電話: (201) 767-5937 ISBN 0-13-307000-X + + + + “The SCSI Bench Reference”, + “The SCSI Encyclopedia”, “SCSI Tutor”, + ENDL Publications, 14426 Black Walnut Court, Saratoga CA, 95070 + 電話: (408) 867-6642 + + + + “Zadian SCSI Navigator” + (クイックリファレンス) および + “Discover the Power of SCSI” + (最初の本は1時間のビデオとチュートリアルが付属), + Zadian Software, + Suite 214, 1210 S. Bascom Ave., + San Jose, CA 92128, (408) 293-0800 + + + + Usenet のニュースグループ comp.periphs.scsi と + comp.periphs + は特により多くの情報を得るには注目すべき場所です. + また定期的に ポストされる + SCSI-FAQをここから得ることができます. + + 多くの主要な SCSIデバイスとホストアダプタの供給元は FTP + サイト や BBSを開いています. + これらはあなたの持っているデバイスに関す + る貴重な情報源となるでしょう. +
+
+ + + * ディスク/テープ コントローラ + + + * SCSI + + + + + + * IDE + + + + + + * フロッピー + + + + + + + ハードディスクドライブ + + + SCSI ハードディスク装置 + + 寄稿: &a.asami; . + 17 February 1998. + + 訳: &a.jp.miyasita;. + 20 February 1998. + + SCSI の章で述べたように, + 実際, 現在販売されている SCSI ハードディスク装置はすべて + SCSI-2 互換であり, サポートされている SCSI ホストアダプタに + 接続すればそれらは正常に動作するでしょう. + 人々が直面する問題の多くは, ケーブル接続が間違っていたり + (ケーブルが長過ぎる, スター型接続になっている, など), + ケーブル終端の処理が不十分だったり, + 部品が故障していたりのうちのどれかです. + SCSI ハードディスク装置が動作しないときには, まず + SCSI の章を参照して下さい. + しかし SCSI ハードディスク装置を購入するときに + 気を付けておきたいことがふたつあります. + + + 回転速度 + + 現在販売されている SCSI ドライブの回転速度の範囲は + 4,500RPM から 10,000RPM であり, その大部分は 5,400RPM か + 7,200RPM です. 一般的に 7,200RPM + のドライブの方がデータ転送は速いのですが, 5,400RPM + の同容量のものと比べてとても熱くなります. + 現在のディスク装置の故障の大半は熱によるものです. もし PC + のケースの中が非常によく冷却されていなければ, 5,400RPM + かそれ以下のドライブにしておいた方がよいでしょう. + + より高密度で記録するようになっている新しいドライブは + 以前のものに比べてより多くのビットを + 各回転毎に転送することが + できるということに気をつけて下さい. 現在, 5,400RPM + の最高級機種では 1, 2 世代前の 7,200RPM の + ドライブに匹敵する転送速度が出せます. + 仕様一覧からバンド幅の数値を探すには “内部データ + (または転送) 速度” という欄を見て下さい. + 通常その数値は Mbits/s で書かれているので, それを 8 + で割ればそのドライブで出せる速度が Mbytes/s で + おおよそ見当をつけることができます. + + (もしあなたがスピード狂で, + あなたの愛する小さなパソコンちゃんに 10,000RPM + のドライブを載せたいのならそうしても構いませんが, + そのようなドライブはものすごく熱くなります. ドライブへ + 直接 風を当てられるようなファンや + きちんと換気されているディスク区画を持っていないときには + そういうことは考えない方がよいでしょう.) + + 最新の 10,000RPM のドライブや 7,200RPM + のドライブは当然 最新の 5,400RPM + のドライブよりも多くのデータを転送することが できますから, + 絶対的なバンド幅がアプリケーションにとって 必要ならば, + より速いドライブを選ぶしかありません. また, + レイテンシを小さくする必要があるときも, + より速いドライブが適当です. なぜなら, + より速いドライブの方が平均シーク時間が 少ないだけでなく, + 回転遅延という尺度において + 低回転速度のドライブが高回転速度のものに + 勝ることはないからです. (平均回転レイテンシはディスクが 1 + 回転するために要する時間を半分に したものです. すなわち, + 10,000RPM のドライブでは 3 ms, 7,200RPM のドライブでは 4.2 + ms, 5,400RPM のドライブでは 5.6 ms となります.) + レイテンシはシーク時間と回転遅延との和になります. + しかしここで, レイテンシの少ないドライブが欲しいのか, 1 + 秒あたりのアクセス数を増やす方がよいのかを + はっきりさせておかなければいけません. 後者の場合 (例 : + ニュースサーバ) では, 大きな速いドライブを 1 + つ購入することは最適解とはならないでしょう. + 遅いドライブを複数個使ってストライピングされた + ディスクアレイを 作る ccd (連結ディスク) + ドライバを用いることによって, + 全体に必要な費用の点で同様かまたはより + 良い結果を得ることができます. + + ドライブのまわりに適切な空気の + 流れを作るようにする必要が あります. + 高回転速度のドライブを使おうとしているときには特に + 注意してください. 一般的に, ドライブの上下には少なくとも + 1/2 インチ (1.25cm) の すき間が必要です. PC + のケース内の空気がどんなふうに流れているか + 理解しておいてください. + 多くのケースには背面から空気を吸い込む電源が付いています. + どこから空気が入ってくるかを確かめて, まわりに最大量の + 冷たい空気が流れるようにドライブを設置してください. + 効果的に冷却するためには, 不要な穴をいくつか塞いだり + 新しいファンを追加する必要があるかも知れません. + + もうひとつ考慮するべき事柄は騒音です. 7,200RPM + やそれより速い回転速度のドライブの多くは高い周波数の + 音を発生し, この音は多くの人をとても不快にします. + それに加えて, 冷却のために追加されたファンによっても, + 7,200RPM + やそれより速い回転速度のドライブはオフィスや家の環境に + そぐわないものになるかもしれません. + + + + 形状 + + 現在販売されている大部分の SCSI ドライブは 3.5 + インチの 大きさです. それらは高さが 1.6 インチ + (“ハーフハイト”) のものと 1 インチ + (“ロープロファイル”) のものとの 2 + 種類に分類されます. ハーフハイトのドライブは CD-ROM + ドライブと同じ高さです. しかし前節で述べたすき間についての + ルールを忘れないでください. 3.5 インチドライブ用のベイが 3 + 段用意されているときに, ハーフハイトのドライブ 3 個を + (焦がすことなく) + そこに設置することはできないでしょう. + + + + インタフェース + + 現在売られている SCSI ハードドライブの多くは Ultra + または Ultra-wide SCSI です. Ultra SCSI の最大バンド幅は + 20MB/s, Ultra-wide SCSI の場合は 40MB/s です. Ultra と + Ultra-wide の間にケーブル最大長の相違はありませんが, + 同一バスに接続されるデバイスが増えれば増えるほど + 早い時期にバスの整理に関する問題を + 抱えることになるでしょう. + うまく設計されたディスク区画を持っているのでなければ, 5 + 個か 6 個以上の Ultra SCSI ドライブを 1 本のバスに + 接続することは容易なことではありません. + + 一方, 多数のドライブを接続する必要があるときに + Fast-wide SCSI を利用することは悪くないアイデアでしょう. + これは Ultra (narrow) SCSI + と同じ最大バンド幅であると同時に “正しく” + 接続することが電気的にとても容易です. + アドバイスとしてはこのようになるでしょうか : + ディスクを多数接続したいときには wide SCSI のドライブを + 選んで下さい. 通常 wide SCSI の方が少し高価ですが, + 将来きっと役に立ちます. (なお, + 価格差を補う余裕がないときにはディスクアレイを + 作るべきではありません.) + + wide SCSI ドライブには 68 ピンのものと 80ピン SCA + (単コネクタ型) のものとの 2 種類があります. SCA + ドライブには 4 ピンの電源コネクタがなく, SCSI ID も 80 + ピンコネクタを通じて設定されます. + 真面目に大規模な記憶システムを作成するような場合には, SCA + ドライブと SCA 筺体 (2 + 種類の電圧が供給できる電源と少なくとも 1 + 個のファンが付いたもの) を使ってください. その方が 68 + ピンの同様のドライブよりも電気的に優れています. なぜなら, + 68 ピンのドライブで作ったディスクアレイに 見られるような + SCSI バスの “スタブ” + がディスクキャニスタの内部に 存在しないからです. + それらはより簡単に設置することができます + (キャニスタの中にドライブをねじで固定すればよいだけで, + (SCSI ID やディスクアクセス LED 用の線のような) + 細かいケーブルを全部持ち上げるために狭いところへ指を入れて + 握らなくてもよいのです). + + + + + * IDE ハードディスクドライブ + + + + + + + テープドライブ + + 原作: &a.jmb;. + 2 July 1996. + + 訳: &a.jp.yoshiaki;. + 13 October 1996. + + + 一般的なテープアクセスコマンド + + &man.mt.1; はテープドライブへの一般的なアクセス方法を提 + 供します. rewind, + erase, statusなど + の共通コマンドがあります. マニュアルページの &man.mt.1; を見 + てください. より詳しい解説があります. + + + + コントローラインタフェース + + テープドライブにはいくつかの異なったインタフェースがあり + ます. SCSI, IDE, フロッピー, パラレルポートのインタフェース + です. + 非常に多くの種類のテープドライブがこれらのインタフェー + スで使えます. コントローラについての議論はディスク/テープ + のコントローラにあります(訳注:現在未完成です). + + + + SCSI ドライブ + + &man.st.4; ドライバは 8mm (Exabyte), 4mm (DAT: Digital + Audio Tape), QIC (1/4インチカートリッジ), + DLT (デジタルリニアテープ), + QIC ミニカートリッジ, 9トラック (大きなリールがハリウッドの + コンピュータルームで回っているのを見たことがあるでしょう) + をサポートします. + &man.st.4; マニュアルページにより詳しい解説があります. + + + 以下のドライブリストは現在 FreeBSDコミュニティのメンバが + 使っているものです. これらだけが FreeBSDで動くドライブという + わけではありません. + これらは単にたまたま私たちのうちの誰かが使っ + ているというだけです. + + + 4mm (DAT: Digital Audio Tape ) + + Archive Python + HP C1533A + HP C1534A + HP 35450A + HP 35470A + HP 35480A + SDT-5000 + Wangtek 6200 + + + + 8mm (Exabyte) + + EXB-8200 + EXB-8500 + EXB-8505 + + + + QIC (1/4 インチカートリッジ) + + Archive Anaconda 2750 + Archive Viper 60 + Archive Viper 150 + Archive Viper 2525 + Tandberg TDC 3600 + Tandberg TDC 3620 + Tandberg TDC 4222 + Wangtek 5525ES + + + + DLT (Digital Linear Tape) + + Digital TZ87 + + + + Mini-Cartridge + + Conner CTMS 3200 + Exabyte 2501 + + + + Autoloaders/Changers + + Hewlett-Packard HP C1553A Autoloading DDS2 + + + + + * IDE ドライブ + + + + + + フロッピードライブ + + Conner 420R + + + + * パラレルポートドライブ + + + + + + 詳細な情報 + + + Archive Ananconda 2750 + + このドライブのブートメッセージの識別子は + ARCHIVE ANCDA 2750 28077 -003 type 1 removable + SCSI 2 です. + + これは QIC テープドライブです. + + QIC-1350テープを利用した場合の標準の容量は 1.35GBです. + このドライブは QIC-150 (DC6150), QIC-250 (DC6250), QIC-525 + (DC6525) の + テープを問題なく読み書きすることができます. + + &man.dump.8; を使った時のデータ転送レートは + 350kB/sです. Amanda + における転送レートは 530kB/sと報告されています. + + このドライブは既に生産中止になっています. + + このテープドライブの + SCSIバスコントローラは他のほとんどの + SCSIドライブとピン配置が逆です. Anaconda + テープドライブの前後でSCSIケー + ブルを1/2ひねることができるくらい SCSI + ケーブルが長いことを確認しておく か, 他の + SCSIデバイスのピン配置を入れ換えておく必要 + があります. + + そして, このドライブではカーネルコードの変更が + 2箇所必要です. そ のままではうまく動かないでしょう. + + SCSI-2コントローラを持っているなら, ジャンパの + 6番をショート してください. そうしないとこのドライブは + SCSI-1として働きます. SCSI-1の デバイスとして動作する時, + このドライブはテープのfsf (早送り), rewind (巻 + 戻し),rewoffl (巻戻してオフラインにする) + 等を含む操作を行っている間, + SCSIバスを“ロック”します. + + NCR SCSIコントローラを使う場合, + /usr/src/sys/pci/ncr.c (以 + 下を参照してください)にパッチを行って, カーネルを作り直し, + 新しいカーネ ルをインストールしてください. + + +*** 4831,4835 **** }; ! if (np->latetime>4) { /* + ** Although we tried to wake it up, --- 4831,4836 + ---- }; ! if (np->latetime>1200) { /* + ** Although we tried to wake it up, + + 報告者: &a.jmb; + + + + Archive Python + + このドライブのブートメッセージの識別子は + ARCHIVE Python 28454-XXX4ASB + type 1 removable SCSI 2 + density code 0x8c, 512-byte blocks + です. + + これは DDS-1 テープドライブです. + + 90m テープを使った場合の標準容量は 2.5GBです. + + データ転送速度は不明です. + + このドライブは Sun マイクロシステムが再パッケージして + model 411として出しています. + + 報告者: Bob Bishop rb@gid.co.uk + + + + Archive Viper 60 + + このドライブのブートメッセージ識別子は + ARCHIVE VIPER 60 21116 -007 + type 1 removable SCSI 1 です. + + これは QICテープドライブです. + + 標準の容量は 60MB です. + + データ転送レートは不明です. + + このドライブは生産中止になっています. + + 報告者: Philippe Regnauld regnauld@hsc.fr + + + + Archive Viper 150 + + このドライブのブートメッセージの識別子は + ARCHIVE VIPER 150 21531 -004 + Archive Viper 150 is a known rogue + type 1 removable SCSI 1です. + このドライブのファームウェアには多くのリビジョ + ンがあります. + あなたのドライブではことなった数字が表示されるかもしれま + せん(例えば 21247 -005). + + これは QICテープドライブです. + + 標準容量は 150/250MBです. 150MB (DC6150) テープと + 250MB (DC6250)テープの記録フォーマットがあります. + 250MBテープは およそ67% 150MBテープより長いです. + このドライブは 120MBのテープを問題 なく読むことができます. + 120MBテープに書き込むことはできません. + + データ転送レートは100kB/sです. + + このドライブは DC6150 (150MB) と DC6250 (250MB) + テープの読み 書きができます. + + このドライブの奇妙な癖は + SCSIテープデバイスドライバはあら かじめ (&man.st.4;) + にあらかじめ組み込まれています. + + FreeBSD 2.2-currentでは, + ブロックサイズの設定を設定するためmt blocksize + 512としてください. (ファームウェアリビジョンが + 21247 -005 である場合の問題です. + 他のリビジョンのファームウェアでは異 なる場合があります.) + これ以前の + FreeBSDバージョンにはこの問題はありません. + + このドライブは生産中止になっています. + + 報告者: Pedro A M Vazquez + vazquez@IQM.Unicamp.BR + + Mike Smith + msmith@atrad.adelaide.edu.au + + + + Archive Viper 2525 + + このドライブのブートメッセージの識別子は + ARCHIVE VIPER 2525 25462 -011 + type 1 removable SCSI 1です. + + これは QICテープドライブです. + + 標準容量は 525MBです. + + データ転送レートは 90inch/secの場合で 180kB/sです. + + QIC-525, QIC-150, QIC-120, + QIC-24のテープを読むことができま す. QIC-525, QIC-150, + QIC-120 に書き込むことができます. + + ファームウェアのリビジョンが 25462 + -011 以前の物はバグが 多く, + 正しく機能しません. + + このドライブは生産中止になっています. + + + + Conner 420R + + このドライブのブートメッセージの識別子は + Conner tape です. + + これはフロッピーコントローラを + 使うミニカートリッジテープド ライブです. + + 標準容量は不明です. + + データ転送レートは不明です. + + このドライブは QIC-80テープドライブを使います. + + 報告者: Mark Hannon mark@seeware.DIALix.oz.au + + + + Conner CTMS 3200 + + このドライブのブートメッセージの識別子は + CONNER CTMS 3200 7.00 type 1 + removable SCSI 2 です. + + これはミニカートリッジテープドライブです. + + 標準容量は不明です. + + データ転送レートは不明です. + + このドライブは QIC-3080テープカートリッジを使います. + + 報告者: Thomas S. Traylor tst@titan.cs.mci.com + + + + <ulink URL="http://www.digital.com/info/Customer-Update/931206004.txt.html">DEC TZ87</ulink> + + このドライブのブートメッセージの識別子は DEC + TZ87 (C) DEC 9206 type 1 removable + SCSI 2 density code 0x19 + です. + + これは DLTテープドライブです. + + 標準容量は 10GBです. + + このドライブはハードウェアデータ圧縮の機能があります. + + データ転送レートは 1.2MB/sです. + + このドライブは Quantum DLT2000と同一の物です. + このドライブ のファームウェアは Exabyteの + 8mmドライブ等のよく知られたいくつかのドラ + イブのエミュレートをおこなうよう設定ができます. + + 報告者: &a.wilko; + + + + <ulink URL="http://www.Exabyte.COM:80/Products/Minicartridge/2501/Rfeatures.html">Exabyte EXB-2501</ulink> + + このドライブのブートメッセージ識別子は + EXABYTE EXB-2501です. + + これはミニカートリッジテープドライブです. + + MC3000XLミニカートリッジを使った時の標準容量は 1GBです. + + データ転送レートは不明です. + + このドライブは DC2300 (550MB), DC2750 (750MB), MC3000 + (750MB), MC3000XL (1GB) + ミニカートリッジの読み書きができます. + + 注意: このドライブは SCSI-2の仕様に適合していません. + このドライブは, フォーマット済みのテープ以外を入れた場合, + SCSI MODE_SELCTコマンドで完全にロックアップしてしまいます. + このドライブを使 う前に, + テープブロックサイズを次のように設定します. + + &prompt.root; mt -f /dev/st0ctl.0 blocksize 1024 + + ミニカートリッジは最初に使う前に + フォーマットしなければなりません. FreeBSD 2.1.0-RELEASE + およびそれ以前の場合は + + &prompt.root; /sbin/scsi -f /dev/rst0.ctl -s 600 -c "4 0 0 0 0 0" + + (あるいは, FreeBSD 2.1.5/2.2から + scsiformatシェルスクリプトを + コピーして持ってきた場合と) FreeBSD + 2.1.5およびそれ以降の場合は &prompt.root; + /sbin/scsiformat -q -w + /dev/rst0.ctl とします. + + 今のところ, + FreeBSDではこのドライブはあまりおすすめできません. + + 報告者: Bob Beaulieu ez@eztravel.com + + + + Exabyte EXB-8200 + + このドライブのブートメッセージの識別子は + EXABYTE EXB-8200 252X type 1 + removable SCSI 1です. + + これは8mmテープドライブです. + + 標準容量は 2.3GBです. + + データ転送レートは 270kB/sです. + + このドライブはブート時の + SCSIバスへの応答はわりあい遅いです. + カスタムカーネルが必要かもしれません (SCSI_DELAYを + 10秒に設定しましょう). 訳注: GENERICカーネルの設定では + 15秒になっています. + + このドライブには非常に多くのファームウェアの + 構成があります. + あるドライブでは特定のベンダのハードウェアに + カスタマイズしてあります. ファームウェアは + EPROMを置き換えることで変更できます. + + このドライブは生産中止になっています. + + 報告者: Mike Smith msmith@atrad.adelaide.edu.au + + + + Exabyte EXB-8500 + + このドライブのブートメッセージの識別子は + EXABYTE EXB-8500-85Qanx0 0415 + type 1 removable SCSI 2 です. + + これは 8mmテープドライブです. + + 標準容量は 5GBです. + + データ転送レートは 300kB/sです. + + 報告者: Greg Lehey grog@lemis.de + + + + <ulink URL="http://www.Exabyte.COM:80/Products/8mm/8505XL/Rfeatures.html">Exabyte EXB-8505</ulink> + + このドライブのブートメッセージ識別子は + EXABYTE EXB-85058SQANXR1 05B0 + type 1 removable SCSI 2です. + + これは 圧縮機能を持った 8mmテープドライブで, EXB-5200 + と EXB-8500に対する上位互換品です. + + 標準容量は 5GBです. + + このドライブは + ハードウェアデータ圧縮機能があります. + + データ転送レートは 300kB/sです. + + 報告者: Glen Foster gfoster@gfoster.com + + + + Hewlett-Packard HP C1533A + + このドライブのブートメッセージの識別子は HP + C1533A 9503 type 1 removable SCSI + 2です. + + これはDDS-2テープドライブです. DDS-2 + とはデータ容量を増や すためにハードウェア圧縮と + 狭いトラックを採用したものです. + + 120mテープを使った場合の標準容量は4GBです. + このドライブは + ハードウェアデータ圧縮機能があります. + + データ転送レートは510kB/sです. + + このドライブはヒューレットパッカード社の 6000eU および + 6000i テー プドライブ, C1533A DDS-2 DAT + ドライブに使われています. + + このドライブは 8接点のディップスイッチがあります. + FreeBSDで の適切な設定は 1 ON; 2 ON; 3 OFF; 4 ON; 5 ON; 6 + ON; 7 ON; 8 ON です. + + + + + + スイッチ 1 + スイッチ 2 + 結果 + + + + + + On + On + 電源投入時に圧縮 ON, + ホストによるコントロール可能 + + + + On + Off + 電源投入時に圧縮 ON, + ホストによるコントロール不可 + + + + Off + On + 電源投入時に圧縮 OFF, + ホストによるコントロール可能 + + + + Off + Off + 電源投入時に圧縮 OFF, + ホストによるコントロール不可 + + + + + + スイッチ 3 は MRS (Media Recognition System + :メディア認識システ ム) をコントロールします. MRS + テープは透明なテープリーダ部分にしま模 様があります. + これはテープが DDS (Digital Data Storage) グレードである + ことを示します. + しま模様のないテープはライトプロテクトされたものとして + 扱います. スイッチ3をOFFにすると MRSが有効になります. + スイッチ3をONに すると MRSは無効になります. + + 訳注: 安価な音楽用のDATテープを使うには + MRSをOFFにしておきます + + このドライブの設定についてのより詳しい情報は HP SureStore + Tape Products および Hewlett-Packard Disk and Tape Technical Information をご覧ください. + + 注意: + これらのドライブの品質管理は非常に幅がありま す. ある + FreeBSDコアチームのメンバは + このドライブを2つ返品しました. + + 報告者: &a.se; + + + + Hewlett-Packard HP 1534A + + このドライブのブートメッセージの識別子は HP + HP35470A T503 type 1 removable SCSI + 2 Sequential-Access density code + 0x13, variable blocksです. + + これは DDS-1テープドライブです. DDS-1 は最初の DAT + テープフォーマットです. + + 90m テープを使った場合の標準容量は 2GBです. + + データ転送レートは 183kB/sです. + + ヒューレットパッカード社の SureStore 2000i + テープドライブ, C35470A DDS フォーマット + DATドライブ, C1534A DDS フォーマット DATドライブ, HP + C1536A DDS フォーマット DATドライブと + 同じ機構を使用しています. + + HP C1534A DDSフォーマット + DATドライブはグリーンと黄色(アンバー) + の2つの表示ランプがあります. グリーンのランプは動作状 + 態を示し, ローディング中はゆっくり点滅, + ローディングが終了すると点灯, + read/write動作中は速く点滅します. 黄色のランプは警告灯で, + クリーニング + が必要であるかまたはテープが寿命に近くなるとゆっくり点滅, + 致命的なエラー + の場合は点灯します(工場での修理が必要かもしれません). + + + 報告者:Gary Crutcher + gcrutchr@nightflight.com + + + + Hewlett-Packard HP C1553A Autoloading DDS2 + + このドライブのブートメッセージの識別子は未確認です. + + + これはテープチェンジャ付の DDS-2テープドライブです. + DDS-2 とはデータ容量を増や + すためにハードウェア圧縮と狭いトラックを + 採用したものです. + + 120mテープを使用した場合の標準容量は 24GB です. + このドライブはハードウェアデータ圧縮機能があります. + + データ転送レートは510kB/s (標準) です. + + このドライブはヒューレットパッカード社の SureStore + + 12000e テープドライブに使われています. + + このドライブはリアパネルに2つの選択スイッチがあります. + ファンに近いスイッチは SCSI IDです. もうひとつは + 7に設定しておきます. + + 内部に 4個のスイッチがあります. これらは 1 ON; 2 ON; + 3 ON; 4 OFF に設定しておきましょう. + + 現在のカーネルドライバはボリュームの終りで + 自動的にテープを 交換しません. ここに示す + shellスクリプトでテープを交換できます. + + +#!/bin/sh +PATH="/sbin:/usr/sbin:/bin:/usr/bin"; export PATH + +usage() +{ + echo "Usage: dds_changer [123456ne] raw-device-name + echo "1..6 = Select cartridge" + echo "next cartridge" + echo "eject magazine" + exit 2 +} + +if [ $# -ne 2 ] ; then + usage +fi + +cdb3=0 +cdb4=0 +cdb5=0 + +case $1 in + [123456]) + cdb3=$1 + cdb4=1 + ;; + n) + ;; + e) + cdb5=0x80 + ;; + ?) + usage + ;; +esac + +scsi -f $2 -s 100 -c "1b 0 0 $cdb3 $cdb4 $cdb5" + + + + Hewlett-Packard HP 35450A + + このドライブのブートメッセージの識別子は HP + HP35450A -A C620 type 1 removable + SCSI 2 Sequential-Access density code + 0x13 です. + + これは DDS-1テープドライブです. DDS-1 は最初の DAT + テープフォーマットです. + + 標準容量は 1.2GBです. + + データ転送レートは 160kB/sです. + + 報告者: mark thompson + mark.a.thompson@pobox.com + + + + Hewlett-Packard HP 35470A + + このドライブのブートメッセージの識別子は HP + HP35470A 9 09 type 1 removable SCSI + 2です. + + これは DDS-1テープドライブです. DDS-1は最初の DAT + テープフォーマットです. + + 90mテープを使用した時の標準容量は 2GBです. + + データ転送レートは 183kB/sです. + + これはヒューレットパッカード社の SureStore 2000i + テープドライブ, C35470A + DDSフォーマットDATドライブ, C1534A + DDSフォーマットDATドライブ, HP C1536A DDS + フォーマットDATドライブと同 じ機構が使われています. + + 注意: + これらのドライブの品質管理には非常に大き な幅があります. + ある FreeBSDコアチームのメンバは 5台のドライブを返品し + ました. 9ヶ月以上もったものはありません. + + 報告者: David Dawes + dawes@rf900.physics.usyd.edu.au (9 09) + + + + Hewlett-Packard HP 35480A + + このドライブのブートメッセージの識別子は HP + HP35480A 1009 type 1 removable SCSI + 2 Sequential-Access density code + 0x13 です. + + これは DDS-DCテープドライブです. + DDS-DCはハードウェアデータ 圧縮のついたDDS-1です. + DDS-1は最初のDATテープフォーマットです. + + 90mテープを使った場合の標準容量は 2GBです. + 120mテープは使用 できません. + このドライブはハードウェア圧縮機能があります. + 適切なスイッチ設定に関しては, HP C1533A + の節を参照してください. + + データ転送レートは 183kB/sです. + + このドライブはヒューレットパッカード社の SureStore + + 5000eU , 5000i + テープドラ イブ, C35480A DDS フォーマット DAT + ドライブと同じ機構を使っています. + + このドライブは時々, テープの eject操作 (mt + offline) + を行っている時にハングアップすることがあります. + テープをejectさせたり, + ドライブを回復させるにはフロントパネルのボタンを + 押してください. + + 注意: HP 35480-03110 では特有の問題がありました. + 少なくとも2回, FreeBSD 2.1.0 で IBM Server 320に 2940W + SCSIコントローラ + をつけてこのドライブを使っている時にすべての + SCSIディスクのパーティショ ンが失われたことがあります. + この問題は解析も解決もできていません. + + + + <ulink URL="http://www.sel.sony.com/SEL/ccpg/storage/tape/t5000.html">Sony SDT-5000</ulink> + + これらには少なくとも DDS-1のものと + DDS-2のものの2つのモデルが あります. DDS-1のものは + SDT-5000 3.02です. DDS-2のものは + SONY SDT-5000 327M です. + DDS-2バージョンには 1MBのキャッシュがあります. この + キャッシュによりあらゆる状況で + テープのデータの流れを途切れさせません. + + このドライブのブートメッセージの識別子は SONY + SDT-5000 3.02 type 1 removable SCSI + 2 Sequential-Access density code + 0x13です. + + 120mテープを使用した場合の標準容量は 4GBです. + このドライブ + はハードウェアデータ圧縮機能があります. + + データ転送レートはドライブのモデルによります. + SONY SDT-5000 327M + でデータ圧縮を行った場合のレートは 630kB/s です. + SONY SDT-5000 3.02では + 225kB/sです. + + Kenneth Merry + ken@ulc199.residence.gatech.eduの報告によれば + このドライブからデータを読むためには, ブロックサイズを + 512バイトにしま す (mt blocksize + 512). + + SONY SDT-5000 327M の情報は Charles + Henrich henrich@msu.edu による報告です. + + 報告者: &a.jmz; + + + + Tandberg TDC 3600 + + このドライブのブートメッセージの識別子は + TANDBERG TDC 3600 =08: type 1 + removable SCSI 2です. + + このドライブはQIC テープドライブです. + + 標準容量は150/250MBです. + + このドライブには奇妙な癖があることが知られていますが, + SCSIテープドライバ (&man.st.4;) + には問題なく動くコードが含まれてい + ます. 問題の修整とSCSI + 2へのコンパチビリティを得るためにファームウェ アをある + (具体的には不明の) バージョンより上にしてください. + + データ転送レートは80kB/sです. + + IBMと Emerald製品のユニットは動かないでしょう. + 問題を解決するためにファームウェア + EPROMを交換してください. + + 報告者: Michael Smith + msmith@atrad.adelaide.edu.au + + + + Tandberg TDC 3620 + + これは Tandberg TDC + 3600ドライ ブに非常によく似ています. + + 報告者: &a.joerg; + + + + Tandberg TDC 4222 + + このドライブのブートメッセージの識別子は + TANDBERG TDC 4222 =07 type 1 + removable SCSI 2です. + + これは QICテープドライブです. + + 標準容量は2.5GBです. このドライブは 60M (DC600A) + 以上のすべての カートリッジを読むことができ, 150MB + (DC6150) 以上のすべてのカートリッジを 読み書きできます. + ハードウェア圧縮は 2.5GB カートリッジを使用した時の + オプションとしてサポートされています. + + このドライブには奇妙な癖がありますが, FreeBSD の + 2.2-current以降の SCSIテープデバイスドライバ (&man.st.4;) + には対応が組み込まれています. それ以前のバージョンの + FreeBSDではmtを用いてテープから1ブロッ + ク読み, テープを巻戻してからバックアッププログラムを + 実行してください. (mt fsr 1; mt rewind; dump + ...). + + データ転送レートは 600kB/s + (データ圧縮時のベンダによる公称) で, start/stop モードでも + 350kB/s にはなります. 容量の小さいカー + トリッジを使った場合にはレートは下がります. + + 報告者: &a.joerg; + + + + Wangtek 5525ES + + このドライブのブートメッセージの識別子は + WANGTEK 5525ES SCSI REV7 3R1 + type 1 removable SCSI 1 + density code 0x11, 1024-byte + blocksです. + + これは QICテープドライブです. + + 標準容量は 525MBです. + + データ転送レートは 180kB/sです. + + 60, 120, 150, 525MB のテープを読むことができます. 60MB + (DC600カートリッジ) には書き込むことはできません. + 120および150テー プに確実に上書きするには, + 先にテープを消去 (mt erase) します. + 120および 150のテープは + 525MBのテープより幅の広いトラックを使用してい + ます(テープ当たりのトラック数は少なくなります). + トラックの幅の“外側”には上書きされませんので, + テープが消去されない限り 両側に古いデータが残ったまま + 新しいデータが置かれることになります. + + このドライブの奇妙な癖は知られていて, SCSI + テープドライバ (&man.st.4;) に組み込まれています. + + 他のファームウェアのリビジョンで動くことが + 確認されているも のは M75Dです. + + 報告者: Marc van Kempen + marc@bowtie.nl REV73R1 + Andrew Gordon Andrew.Gordon@net-tel.co.uk + M75D + + + + Wangtek 6200 + + このドライブのブートメッセージの識別子は + WANGTEK 6200-HS 4B18 type 1 + removable SCSI 2 Sequential-Access + density code 0x13です. + + これは DDS-1テープドライブです. + + 90mテープを使用した場合の標準容量は 2GBです. + + データ転送レートは 150kB/sです. + + 報告者: Tony Kimball alk@Think.COM + + + + + * 問題のあるドライブ + + + + + + + CD-ROM ドライブ + + 原作: &a.obrien;. + 23 November 1997. + + Jordan + 氏の選んだ組合せ でふれられているように + FreeBSD プロジェクトでは一般的には IDE + CDROM よりも SCSI CDROM の方が好まれています. しかし全ての + SCSI CDROM ドライブが同じであるというわけではありません. + いくつかの SCSI CDROM ドライブの品質は IDE CDROM + ドライブよりも 低いものであると感じている人もいます. + 東芝は信頼性が高いという評判が ありましたが, 12倍速の XM-5701A + は, SCSI メーリングリストでは ( オーディオ CDROM の再生で) + 何種類かのオーディオ再生ソフトウェアで + ボリュームのコントロールができない, という不満のメールを大量に + 見ることがありました. + + SCSI CDROM のメーカー間の競争のもう一つの局面は, SCSI + 規格に対する忠実度です. 多くの SCSI CDROM は + ターゲットアドレス(ID)の マルチ LUN に応答します. + 既知の規格違反デバイスにはティアックの6倍速ドライブ CD-56S + 1.0D があります. + + + + * その他 + + + +
+ + + * その他 + + + * PCMCIA + + + + +
+ + diff --git a/ja_JP.eucJP/books/handbook/install/chapter.sgml b/ja_JP.eucJP/books/handbook/install/chapter.sgml new file mode 100644 index 0000000000..0bdfb1ff7f --- /dev/null +++ b/ja_JP.eucJP/books/handbook/install/chapter.sgml @@ -0,0 +1,1285 @@ + + + + FreeBSDのインストール + + 原作: 不明 + + 訳: &a.jp.mita;, &a.hanai;, + &a.jp.iwasaki;. 26 January 1997. + + それでは, FreeBSD のインストールに挑戦してみましょう. + この章には, あなたが何をする必要があるかの簡単なガイドが + 書いてあります. FreeBSD は, CD-ROM, フロッピーディスク, + 磁気テープ, MS-DOSのパーティション, + ネットワーク接続しているところでは anonymous FTP や NFS + を通じてインストールすることができます. + + どのインストールメディアを利用する場合も, まず後で説明するよう + なインストールディスクの作成から始めます. + すぐにイン + ストールするわけではない場合であってもこのディスクであなたのコ + ンピュータを立ち上げることで, FreeBSD とあなたのハードウェアと + の相性に関する重要な情報を手に入れることができ, このハードウェ + アではどんなインストールオプションが使えるかを指定することがで + きます. もしもあなたが anonymous FTP を使用してインストールす + る予定なら, + インストールフロッピーだけをダウンロードして作成するだけで OK です + - インストールプログラム自身がさらに必要なも のを (Ethernet + 接続やモデムによるダイアルアップなどを用いて) + 直接ダウンロードしてくれます. + + + FreeBSDの配布に関する情報は, 付録の FreeBSD の入手方法 + をご覧ください. + + 仕事にとりかかるには, 以下のような手順を踏みます. + + + + このインストールガイドの サポートされている設定一覧 + の節を読んで, あなたのハードウェアが FreeBSD + でサポートされていることを確認します. SCSI コントローラだとか, + イーサネットアダプタだとか, サウンドカードだとかの, + あなたのマシンが + 装備している特別なカードのリストを作っておくと便利です. この + リストには, 割り込み番号 (IRQ) とか, IO + ポートのアドレスとかの, カードに + 関係する設定も書いておきましょう. + + + + FreeBSD を CDROM メディアからインストールする場合, いく + つかの異なる選択肢があります. + + + + もし CD のマスターが El Torrito ブートサポートで焼か + れており, あなたのシステムが CDROM + からのブートをサポートして いるなら(多くの古いシステムは + サポートしていません), + 単にドライブに CD を入れてブートするだけです. + + + + もしDOS を動かしていて CD へアクセスするための適切な + ドライバを持っているならば, CD に入っている install.bat + スクリ プトを起動します. これは, DOS から直接 FreeBSD + のインストール へと進みます. + + + これは本当の DOS から行なわなければいけま せん. + Windows の DOS プロンプトからでは駄目です. + + + また, DOS パーティションから FreeBSD + をインストールしたい場合 (恐らく, CDROM ドライブが + FreeBSD で全くサポートされていない場合でしょ う), setup + プログラムを起動します. setup プログラムは, まず CD + から適切なファイルを DOS パーティションにコピーし, + インストー ルへと進みます. + + + + 上記二つのうちのどちらかがうまくいったなら, この節の + 残りは必要ありません. そうでないならば, 最後の選択肢は + floppies\boot.flp + イメージからブートフロッピーを作る + ことです—そのやり方の説明はステップ 4 + へ進みます. + + + + + + もし CDROM を持っていないなら, ブートディスクのイメージ ファイルをあなたの ハードディスクにダウンロードしてきます. + + + ブラウザのコマンドでは, display + ではなくて save + を選ぶことに注意してください. + + + + 注意: + このディスクイメージは, 1.44 メガバイトの 3.5 + インチフロッピーディスクのみで使用可能です. + + + + このイメージファイルからブートディスクを作成します, + + + + + MS-DOSを使っている場合: + fdimage.exe をダウンロードするか, CDROM から + tools\fdiomage.exe を取り, + これを実行します. + + E:\> tools\fdimage floppies\boot.flp a: + + このプログラムは, A: + ドライブをフォーマットした後 boot.flp + の内容を書き込みます (ここでは通常の通り, FreeBSD + の配布物のトップレベルディレクトリにおり, + フロッピーイメージ は floppies + ディレクトリにあると仮定しています). + + + + UNIX システムを使っている場合: + + &prompt.root; dd if=boot.flp of=disk_device + + を実行します. ここで, + disk_device + はフロッピードライブに 対応する + /devの中のエントリです. FreeBSD では, + /dev/rfd0 が + A:ドライブに, + /dev/rfd1 が + B:ドライブに + 対応しています. + + + + + + インストールディスクを A:ドライブに入れて, コンピュータを + 立ち上げ直します. + そうすると次のようなプロンプトが出てくるはずです. + + +>> FreeBSD BOOT ... +Usage: [[[0:][wd](0,a)]/kernel][-abcCdhrsv] +Use 1:sd(0,a)kernel to boot sd0 if it is BIOS drive 1 +Use ? for file list or press Enter for defaults +Boot: + + + ここで何もタイプしない場合, 5秒間の待ち時間の後に FreeBSD + は 自動的にデフォルトの設定で立ち上がります. 立ち上げの際, + どんな ハードウェアが装備されているかを検出 (プローブ) します. + この結果は スクリーン上に表示されます. + + + + 立ち上げプロセスが終了したら, FreeBSD + インストールメニューが 表示されます. + + + + もしも問題が起こった場合 + + PC アーキテクチャの制限のため, + 100パーセントの信頼をもって検出する ことは不可能です. + もしもあなたのハードウェアが間違って認識されたり, + 検出途中でコンピュータが固まってしまうようなことが起こった場合, + まずこのガイドの サポートされている設定一覧 + の節を読んで, あなたのハードウェアが本当に FreeBSD + でサポートされているかどうかを確かめてください. + + ハードウェアがサポートされていた場合, リセットして + Boot: プロンプトが出てきたところで, + -c と打ち込んで ください. こうすると, FreeBSD + はコンフィグレーションモードになり, ハードウェアに関する情報を + FreeBSD に与えることができるようになります. インストールディスクの + FreeBSD カーネルは, 多くのデバイスの IRQ, IO + アドレスが工場出荷時の値に設定されているものと + 仮定して作られています. + もしもあなたのハードウェアの設定を変更したなら, + -c オプションで立ち上げて, + 設定がどうなっているかを指定してあげること + が必要になるでしょう. + + 存在しないデバイスを検出すると, + 実際に存在している他のデバイスの 検出に失敗することが考えられます. + そのような場合は, 衝突している + デバイスを無効にしなくてはなりません. スクリーンデバイス + (sc0) + などインストールに必要なデバイスを無効にしてはいけません. + + コンフィグレーションモードでは, + + + + カーネルに組み込まれているデバイスドライバの + 一覧を表示する + + + + あなたのシステムにないハードウェアのデバイスドライバを + 無効にする + + + + デバイスドライバの IRQ, DRQ, IO + ポートアドレスなどの変更する + + + + などができます. + + config> プロンプトが出ているところで, + help と打ち込むと, + 使用可能なコマンドについての詳しい説明が出てきます. + あなたのマシンのハードウェア設定に合うようにカーネルを変更したら, + config> プロンプトが出たところで + quit と打ち込んで, + 新しい設定でマシンを立ち上げます. + + FreeBSD のインストールがひとたび終了した後は, + コンフィグレーションモード での変更はずっと保持されますので, + 立ち上げのたびに設定変更をする必要は なくなりますが, + あなたのシステムの性能を高めるために, + カスタムカーネルを作るのが好ましいでしょう. + カスタムカーネルの作成に関しては, FreeBSD + カーネルのコンフィグレーション の章をご覧ください. + + + サポートされている設定一覧 + + 現在 FreeBSD は, ISA, VL, EISA, PCI バスや, 386SX から + Pentium クラス までのさまざまな種類の PC で動作します + (386SXはおすすめではありません). IDE, ESDIドライブや, + さまざまな SCSI コントローラ, ネットワークカードや + シリアルカードにも対応しています. + + FreeBSD を走らせるには, 最低 4メガバイトの RAM が必要です. X + Window System を 走らせるには最低でも 8メガバイトの RAM + が推奨されます. + + 以下のリストでは, FreeBSD + で動作が確認されているディスクコントローラ + やイーサネットカードです. 他の設定でもうまく動いてくれると + 思いますが, 私たちのところには情報は入ってきていません. + + + ディスクコントローラ + + + + WD1003 (あらゆる MFM/RLL) + + + + WD1007 (あらゆる IDE/ESDI) + + + + IDE + + + + ATA + + + + Adaptec 1505 ISA SCSI コントローラ + + + + Adaptec 152x シリーズ ISA SCSI コントローラ + + + + Adaptec 1535 ISA SCSI コントローラ + + + + Adaptec 154x シリーズ ISA SCSI コントローラ + + + + Adaptec 174x シリーズ EISA SCSI コントローラ + (スタンダード, エンハンスドモード) + + + + Adaptec 274x/284x/2940/2940U/3940 + (Narrow/Wide/Twin) + シリーズ EISA/VLB/PCI SCSI コントローラ + + + + Adaptec AIC7850 オンボード SCSI コントローラ + + + + Adaptec AIC-6360系のボード + AHA-152x や SoundBlaster SCSI などがこれにあたります. + + + Soundblaster カードには, オンボード BIOS + が載っていないので, このカードからは FreeBSD + を起動できません. オンボード BIOS とは, システム BIOS + の I/O ベクタにブートデバイスを + 登録するときに必要なものです. + このカードは外部テープであるとか, CD-ROM + であるとかその他の場合には十分利用可能です. 同じことは, + ブート ROM の載っていない AIC-6x60 + 系のカードにもいえます. + いくつかのシステムでは実際にブート ROM を持っています. + それは電源を入れるかリセットしたとき, + 最初に表示されます. + 詳しくはあなたのシステムやボードの解説書をご覧ください. + + + + + + Buslogic 545S & 545c + + + Buslogic 社は古くは “ Bustek ” + 社といっていました. + + + + + Buslogic 445S/445c VLバス SCSI コントローラ + + + + Buslogic 742A, 747S, 747c EISA SCSI コントローラ. + + + + Buslogic 946c PCI SCSI コントローラ + + + + Buslogic 956c PCI SCSI コントローラ + + + + NCR 53C810 , 53C825 PCI SCSI コントローラ. + + + + NCR5380/NCR53400 (“ProAudio Spectrum”) + SCSI コントローラ. + + + + DTC 3290 EISA SCSI コントローラ (1542 + エミュレーション) + + + + UltraStor 14F, 24F, 34F SCSI コントローラ. + + + + Seagate ST01/02 SCSI コントローラ. + + + + Future Domain 8xx/950 シリーズ SCSI コントローラ. + + + + WD7000 SCSI コントローラ. + + + + サポートされている SCSI コントローラのすべてで, ディスク, + テープドライブ (含む DAT), CD-ROM + ドライブなどの周辺機器との通信に SCSI-I, SCSI-II + が利用可能です. + + 現在, 次にあげるタイプの CD-ROM + ドライブがサポートされてます. + + + + Soundblaster SCSI , ProAudio Spectrum SCSI + (cd) + + + + ミツミ (全モデル) 独自のインタフェース + (mcd) + + + + 松下 / Panasonic (Creative) + CR-562/CR-563 インタフェース (matcd) + + + + ソニー インタフェース (scd) + + + + ATAPI IDE インタフェース + (まだまだお試し段階で, クオリティは低いです) + (wcd) + + + + + + イーサネットカード + + + + Allied-Telesis AT1700, RE2000 カード + + + + SMC Elite 16 WD8013 Ethernet インタフェース, + その他多くの WD8003E, WD8003EBT, WD8003W, WD8013W, + WD8003S, WD8003SBT や WD8013EBTなどの互換品. SMC Elite + Ultra 及び 9432TX + ベースのカードもサポートされています. + + + + DEC EtherWORKS III ネットワークインタフェースカード + (DE203, DE204, DE205) + + + + DEC EtherWORKS II ネットワークインタフェースカード + (DE200, DE201, DE202, DE422) + + + + DEC DC21040/DC21041/DC21140 + ベースのネットワークインタフェースカード: + + + + ASUS PCI-L101-TB + + + + Accton ENI1203 + + + + Cogent EM960PCI + + + + Compex CPXPCI/32C + + + + D-Link DE-530 + + + + DEC DE435 + + + + Danpex EN-9400P3 + + + + JCIS Condor JC1260 + + + + Kingston KNE100TX + + + + Linksys EtherPCI + + + + Mylex LNP101 + + + + SMC EtherPower 10/100 (Model 9332) + + + + SMC EtherPower (Model 8432) + + + + SMC EtherPower (2) + + + + Zynx ZX314 + + + + Zynx ZX342 + + + + + + DEC FDDI (DEFPA/DEFEA) + ネットワークインタフェースカード + + + + 富士通 FMV-181, FMV-182 + + + + 富士通 MB86960A/MB86965A + + + + Intel EtherExpress + + + + Intel EtherExpress Pro/100B 100Mbit. + + + + Isolan AT 4141-0 (16 bit) + + + + Isolink 4110 (8 bit) + + + + Lucent WaveLAN + ワイアレスネットワークインターフェイス + + + + Novell NE1000, NE2000, NE2100 + イーサネットインタフェース + + + + 3Com 3C501 カード + + + + 3Com 3C503 Etherlink II + + + + 3Com 3c505 Etherlink/+ + + + + 3Com 3C507 Etherlink 16/TP + + + + 3Com 3C509, 3C579, 3C589 (PCMCIA) Etherlink III + + + + 3Com 3C590, 3C595 Etherlink III + + + + 3Com 3C90x カード + + + + HP PC Lan Plus (27247B と 27252A) + + + + 東芝 イーサネットカード + + + + IBM , National Semiconductor社 PCMCIA + イーサネットカードもサポートされています. + + + + + FreeBSD は今のところ, いくつかのイーサネットカードの PnP + (プラグ&プレイ) 機能には対応していません. もし PnP + で問題が起こる ようでしたら, PnP + 機能を無効にしてください. + + + + + その他のデバイス + + + + AST 4 ポート シリアルカード (シェアード IRQ 使用) + + + + ARNET 8 ポート シリアルカード (シェアード IRQ 使用) + + + + BOCA IOAT66 6 ポート シリアルカード (シェアード IRQ + 使用) + + + + BOCA 2016 16 ポート シリアルカード (シェアード IRQ + 使用) + + + + Cyclades Cyclom-y シリアルボード + + + + STB 4 ポート カード (シェアード IRQ 使用) + + + + SDL Communications Riscom/8 シリアルボード + + + + SDL Communications RISCom/N2 と N2pci + 同期シリアルカード + + + + Digiboard Sync/570i high-speed 同期シリアルカード + + + + Decision-Computer Intl. “Eight-Serial” 8 + ポートシリアルカード (シェアード IRQ 使用) + + + + Adlib, SoundBlaster, SoundBlaster Pro, + ProAudioSpectrum, Gravis UltraSound, Gravis UltraSound MAX + Roland MPU-401 などのサウンドカード + + + + Matrox Meteor video フレームグラバー + + + + Creative Labs Video spigot フレームグラバー + + + + Omnimedia Talisman フレームグラバー + + + + Brooktree BT848 チップベースのフレームグラバー + + + + X-10 power コントローラ + + + + PC ジョイスティックおよびスピーカ + + + + FreeBSD は今のところ, + IBM社のマイクロチャネルアーキテクチャ (MCA) バスには + 対応していません. + + + + + インストールの下準備 + + FreeBSD のインストール方法はさまざまあります. それぞれの + インストール方法に対して, + どのような下準備が必要かをこれから説明します. + + + CD-ROM からインストールする前に + + あなたの CD-ROM + ドライブがサポートされていないタイプの場合は, ハードディスクの MS-DOS + パーティションからインストールする前に + に飛んでください. Walnut Creek の FreeBSD CD-ROM + からインストールする場合は, 大した下準備 + をしないでもうまくインストールできることでしょう (その他の + CD-ROM でもうまくいくでしょうが, その CD-ROM + がどうやって作られているか, 私たち + はわかりませんので確実なことは言えません). Walnut Creek の + CD-ROM に収録されている, install.bat + で直接 FreeBSD を立ち上げることもできますし, + makeflp.bat でブートフロッピーディスクを + つくることもできます. + + + もし FreeBSD 2.1-RELEASE を使っていて IDE CD-ROM + ドライブを持っている場合, install.bat のかわりに + inst_ide.bat もしくは + atapiflp.bat を使ってください. ] + + + DOS から最も楽なインタフェースを使いたい場合は + view と打ち込みます. そうすると DOS + でのメニューが立ち上がって, 可能なオプション + すべてを選択できます. + + あなたが UNIX + マシンでブートフロッピーディスクを作成している場合は, FreeBSD のインストール + を参考にしてください. + + DOS から, もしくはフロッピーディスクから起動をおこなうと, + メニュー ``Media'' から, インストールメディアとして CDROM を + 選択することで, + 配布ファイルをロードすることができるようになります. + 他の種類のインストールメディアは不要なはずです. + + + CD-ROM を取り出す前には umount /cdrom + と打ち込まなくてはならない ことを覚えておいてください. + 単純にドライブから取り出さないように! + + + インストールに入る前に, 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:// あなたのマシンのアドレス + を入力します. + + + + フロッピーディスクからのインストールの前に + + あなたがフロッピーディスクからのインストールをしなくては + ならない場合, + その理由はハードウェアがサポートされてなかったためか, + 単にいばらの道を通ることを楽しんでいるからでしょうが, + インストール用の + フロッピーディスクを用意する必要があります. + + 最低でも bin (基本配布ファイル) + ディレクトリ内のすべてのファイル を入れられるだけの 1.44 + メガバイトか 1.2 メガバイトのフロッピーディスク が必要です. + これらのフロッピーディスクを DOS で作成している場合は, + フロッピーディスクは「MS-DOS の FORMAT + コマンドでフォーマット」 されなくてはなりません. Windows + をお使いの場合は, Windowsの + ファイルマネージャの初期化コマンドを使用してください. + + 工場での初期化済みディスクを「信用しないでください」. + 念のためにあなた 自身でフォーマットし直してください. + ユーザからのトラブル報告の多くは + ちゃんと初期化されていないディスクを + 使用していたことが原因となっています. + 私が特にフォーマットし直してくださいと述べているのも, + この理由からです. + + 他の FreeBSD マシンでフロッピーディスクを作成している場合, + フォーマットすることは悪いことではありません. いちいち DOS + ファイルシステムのフロッピーディスクを作成する必要は + ありませんので, disklabel コマンドと + newfs コマンドを使って, 次のような手順で + (3.5 インチ 1.44 メガバイトディスク用の) UFS + ファイルシステムを 作成することもできます. + + &prompt.root; fdformat -f 1440 fd0.1440 +&prompt.root; disklabel -w -r fd0.1440 floppy3 +&prompt.root; newfs -t 2 -u 18 -l 1 -i 65536 /dev/rfd0 + + + + 5.25 インチの 1.2 メガバイトディスクの場合は "fd0.1200" + と "floppy5" にしてください + + + これで他のファイルシステムと同様に mount + して書き込むことができます. + + フォーマットされたフロッピーディスクを用意したら, + それらにファイル をコピーしなくてはなりません. + 配布ファイルはいくつかのかたまり にわかれていて, + これらのかたまり五つで一般的な 1.44 メガバイトの + フロッピーディスクに収まるようになっています. + フロッピーディスクに 入るだけファイルを入れていって, + 配布ファイルをすべてコピーしてください. + それぞれの配布ファイルはサブディレクトリに + コピーする必要があります. 例えば, + a:\bin\bin.aaとか, + a:\bin\bin.abといった感じです. + + インストールメディアの選択場面になったら, + “Floppy” を選択して, + 残りの指定をやってください. + + + + ハードディスクの MS-DOS + パーティションからインストールする前に + + ハードディスクの MS-DOS + パーティションからインストールするときは, まずファイルを + C:\FREEBSD にコピーします. CD-ROM + にあるディレクトリ構造を反映してコピーしなくてはなりません. + DOS の xcopy + コマンドの使用をおすすめします. + + 例えば, FreeBSD の最低限のインストールをするには, + このような手順で コピーします. + + C:\> MD C:\FREEBSD +C> XCOPY /S E:\BIN C:\FREEBSD\BIN\ +C> XCOPY /S E:\MANPAGES C:\FREEBSD\MANPAGES\ + + ここで, C: + ドライブには十分なディスクスペースが残っており, CD-ROM は + E: + ドライブに接続されているものとします. + + MS-DOS からたくさんの 配布ファイル + (DISTS) をインストールしたい + (そしてディスクの余裕がある) 場合は, それぞれ + C:\FREEBSD ディレクトリにコピーします + — BIN 配布ファイルは, + 最低限必要なものです. + + + + QIC/SCSI テープからのインストールの前に + + テープからのインストールは, おそらく FTP + を利用したオンライン インストールか, CD-ROM + を利用したインストールができない場合の, + もっとも簡単な方法でしょう. インストールプログラムは, + 以下のような コマンドを使用して, + 単純に配布ファイルがテープ上に tar されていることを + 期待しています. + + &prompt.root; cd /freebsd/distdir +&prompt.root; tar cvf /dev/rwt0 (または /dev/rst0) dist1 .. dist2 + + インストールに入る前に, テンポラリ (一時使用) + ディレクトリに 十分なディスクスペースを確保して, + 作成したテープのすべての + ファイルを格納できることを確認してください + (テンポラリディレクトリは 自分で選ぶことができます). + テープの特性上, ランダムにアクセスするこ とができませんので, + 一時的に極めて大量の容量を必要とします. + テープに準備しただけの量のディスクスペースを + 一時的に使用することに 留意してください. + + + インストールに入るときは, ブートフロッピーディスク + から立ち上げる + にテープをドライブに入れておかなくてはなりません. + さもないとインストール時のデバイス検出のときにテープを + 見つけられません. + + + + + ネットワーク経由のインストールの前に + + 三つの物理的な接続形態で, ネットワーク経由のインストールを + おこなうことができます. + + + シリアルポート + + SLIP もしくは PPP 方式. + + + + パラレルポート + + PLIP (laplink ケーブル使用) + + + + イーサネット + + 標準的なイーサネットコントローラ + (いくつかの PCMCIA カードにも対応) + + + + + SLIP のサポートはまだまだ原始的とも呼べる方法なので, + ラップトップと + 他のコンピュータをシリアルケーブルで接続するといった具合いに, + 直接接続してなくてはいけません. SLIP インストールは, + ダイヤル機能を 持っていませんので, + インストールするためには直接接続しなくてはなりません. PPP + インストールではダイヤルアップ接続が可能ですので, できれば PPP + 接続の 方を選択しましょう. + + もしもあなたがモデムを使用しているなら, + あなたに残された選択肢は ほぼ間違いなく PPP + インストールでしょう. インストール時に必要になりますので, + サービスプロバイダ (ISP) に関する情報を用意しておきましょう. + PPP ダイヤルの際は, + とてもシンプルな端末エミュレーターで作業する + ことになりますので, お手持ちのモデムで ISP にダイヤルするため + の“ATコマンド”の使い方を知っておく必要があります. + もし PAP や CHAP を用いるなら, + termを入力する前にset + authnameset authkey + といったコマンドを入力する必要があるでしょう. + これ以上の情報については, handbook や FAQ のユーザー PPP + エントリーを参照して下さい. 問題が起きた場合には, set + log local ... + コマンドを用いてログを画面に吐くこともできます. + + FreeBSD (2.0R 以降) + の動いている別のマシンと直接接続が可能でしたら, + “laplink” + パラレルポートケーブルで接続することを考えてみましょう. + パラレルポート経由のデータ転送スピードは, シリアルラインでの + 一般的なスピード (最高 50kbit/sec) よりもずっと高速ですので, + 高速にインストールすることができます. + + 最後になりますが, + ネットワークインストールのうちでもっとも高速なものとしては + イーサネットアダプタを使用するのがあげられます. FreeBSD + ではきわめて多くの PC イーサネットカードをサポートしています. + サポートされている カードの表 (と, 必要な設定) は, サポートされている設定一覧 + に書いてあります. サポートされている PCMCIA + カードを使っている場合には, ラップトップの電源を + 入れる「前」に差し込んでおくことにも注意してください. + 残念ながら今の FreeBSD は, + インストール時の活線挿抜には対応していません. + + ネットワークでの IP アドレス, + あなたのアドレスクラスに対応した ネットマスク, + マシン名を知っておくことも必要です. ネットワーク管理者の方に + たずねればどんな値を使ったらよいかを教えてくれるでしょう. + もしも他のホストを IP アドレスではなくて名前で引きたい場合, + ネームサーバとゲートウェイ のアドレスも知らなくてはなりません + (PPP をご使用の場合は, プロバイダの IP アドレスになります). + これらのうちのすべて, またはいくつかを 知らない場合は, + イーサネット経由でのインストールを始める前に「まず」 + ネットワーク管理者に相談してください. + + 何らかのネットワーク接続ができたら, 続けてインストールを + NFS か FTP 経由でおこないます. + + + NFS インストールのための下準備 + + NFS インストールはまったく単純明解です. FreeBSD + の配布ファイルを サーバの好きな場所にコピーしておいて, + メディア選択で NFS を選択します. + + もしサーバが “privileged (特権) ポート” + へのアクセスのみをサポート している場合, (Sun + ワークステーションの標準ではこうなっています) + インストールを進める前に Options メニューを選択して, + ``privileged port'' オプションを選択してください. + + イーサネットカードの性能が悪くて, + 転送速度が遅くて困っている場合も, 適当な Options + を選択するとよいでしょう. + + NFS 経由でインストールするためには, サブディレクトリも + 含めたマウントにサーバが対応している必要があります. 例えば, + FreeBSD &rel.current; の配布ファイルが + ziggy:/usr/archive/stuff/FreeBSD + にあるとすると, マシン ziggy では + /usr や + /usr/archive/stuff だけではなく, + /usr/archive/stuff/FreeBSD + の直接マウントが可能に なっていなければなりません. + + FreeBSD の /etc/exports + ファイルでは, このことは + オプションによって制御されています. 他の NFS + サーバの場合だとまた話が違ってくるかもしれません. + もしもサーバから Permission Denied + というメッセージが 返ってくるようでしたら, + サブディレクトリマウントをちゃんと + 有効にできていないことが考えられます. + + + + FTP インストールのための下準備 + + FTP 経由のインストールは, FreeBSD &rel.current; + の最新バージョンを ミラーしているどのサイトからでも可能です. + 世界中の妥当な FTP サイトの + 選択肢をメニューに並べておきました. + + このメニューに出ていない他の FTP サイトからインストール + する場合や, ネームサーバの設定に問題が生じた場合は, + メニューでサイト “Other” を選ぶところで, + お好みの URL でサイトを指定することができます. URL + として直接 IP アドレスで指定してもよく, + 直接指定した場合はネームサーバ がなくても FTP + インストールが可能になります. 例えば, + + ftp://165.113.121.81/pub/FreeBSD/&rel.current;-RELEASE + + のような感じですね. + + FTP 経由のインストールモードとして, このようなものが + 使用可能です: + + + FTP Active + + すべての FTP 転送の際に “Active” + モードを使用します. + ファイアウォール内部のマシンではうまく動きませんが, + passive モードをサポートしていない古い FTP サーバでも + 動作します. passive モードでの FTP 転送 (こちらが + デフォルトです) が失敗した場合は, active + を使ってください. + + + + FTP Passive + + すべての FTP 転送の際に “Passive” + モードを使用します. このモードを使用することで, + ランダムポートアクセスインを + 許さないファイアウォールを + 越えることができるようになります. + + + + + + Active, passive モードは “proxy” + 接続と同じではありません! proxy FTP サーバは FTP 要求 + を受け付け実際の FTP サーバへ転送します. + + + 通常 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 + からファイルをもってきます). + + + + + + FreeBSD のインストール + + インストールの下準備を適切に書き留めておけば, なんの + 問題もなく FreeBSD のインストールができることと思います. + + 何かうまくいかなかった場合は, あなたが使おうとしている + インストールメディアのことが書いてある箇所まで戻って + もう一度読むとよいでしょう. おそらく最初読んだときに + 見落していた, 有効なヒントがあるものと思います. + ハードウェアの問題が出てきたとか, FreeBSD がまったく + 立ち上がらない場合は, boot フロッピーディスクに提供されている + Hardware Guide を読んで, + 何か解決方法はないか探してください. + + FreeBSD のブートフロッピーディスクには, + インストールをおこなうために + 必要と思われるすべてのオンラインドキュメントを用意してあります. + もしもそのドキュメントがお望みのものでないようでしたら, + 私たちはあなたが何にもっとも困っているのかを知りたいと思います. + コメントを &a.doc; にお送りください. FreeBSD + のインストールプログラム (sysinstall) を, うっとうしい + “step-by-step” ガイドなしに, + プログラム自身で使用方法がわかるようにするのが最終目標です. + 目標達成までには時間がかかりそうですが, ともかくそれが + 目標なのであります. + + 閑話休題. ここに, + “典型的なインストールの手順”を まとめてみましたので, + お役にたてるものと思います. + + + + ブートフロッピーディスクから起動します. + ハードウェアの性能に よりますが, 起動には 30秒から + 3分かかります. 起動したら 初期選択画面が出てくるでしょう, + もしもフロッピーディスクから まったく起動しなかったり, + どこかの段階で起動が止まってしまった 場合は, + ハードウェアガイドの Q&A を読んで, 理由を + 探ってみます. + + + + F1 キーを叩きます. + メニューシステムとインストールプログラム + 全般に対しての使い方が表示されます. このメニューシステムを + 使ったことがない場合は, + 徹底的に読んでください. + + + + Options を選択し, 他に必要な特別な選択を + おこないます. + + + + 典型的なインストールでおまかせしたい方は Novice を, + インストールのそれぞれの段階をいちいちコントロールしたい方は + Custom を, (可能であれば適切なデフォルトを使用して) + 簡単にさっさと済ませたい方は Express を, + それぞれ好みに応じて選んでください. FreeBSD + を初めて使う方には, Novice を一番におすすめします. + + + + final configuration メニューからは, メニュー形式のさらに + 進んだ設定をおこなうことができます. ネットワーク周りの + 設定は, 特に CD-ROM / テープ / フロッピーディスクから + インストールして, まだネットワーク設定をおこなっていない + 人にとっては特に重要でしょう. インストールの時点できちんと + 設定しておけば, ハードディスクからシステムを立ち上げ直した + 時点でネットワーク接続ができるようになっていることでしょう. + + + + + + + MS-DOS ユーザのためのQ&A + + 多くのFreeBSD ユーザは, MS-DOS が入っている PC に FreeBSD を + インストールしたいと考えます. そのようなシステムに FreeBSD + をインストールする際によく聞かれる質問を集めて あります. + + 助けて! ディスクスペースが余ってないのです. + 最初に MS-DOS のファイルを全部削除しないといけませんか? + + + もしあなたのマシンですでに MS-DOS が走っていて, FreeBSD の + インストール用の空きスペースが少ないか, まったくない場合でも + 大丈夫です. FreeBSD の CD-ROM や, FTP サイトの + tools ディレクトリに FIPS + プログラムというのがありますが, これが非常に役立ちます. + + FIPS を使えば, すでに存在している MS-DOS のパーティションを + 二つに分けることができ, さらにもともとのパーティションは + 残してくれて, 二つめのパーティションを FreeBSD の + インストールに使用することができるようになります. まず DOS6.xx + についてくる DEFRAG か, Norton Disk ツールを使って, MS-DOS + パーティションからフラグメント情報を取り去って, その後に FIPS + を走らせます. FIPS ユーティリティから必要な情報が 手に入ります. + その後マシンを立ち上げ直して, 空いた場所に FreeBSD + をインストールします. どのくらいの空きスペースが + インストールに必要かは, Distributions + メニューを 参考にしてください. + + FreeBSD で MS-DOS の圧縮ファイルシステムにアクセス + できますか? + + いいえ. もし Stacker(tm) や DoubleSpace(tm) のような + ユーティリティをお使いの場合, FreeBSD は非圧縮の部分にしか + アクセスできません. 残りの場所は一つの大きなファイルとして + (stack された, もしくは doublespace されたファイルとして) + 見えます. + そのファイルを削除しないでください!! + 削除してしまうと後できっと後悔します. + + 非圧縮の MS-DOS の基本区画を作って, そちらを MS-DOS と + FreeBSD とのやり取りに使うのがよろしいでしょう. + + MS-DOS + 拡張フォーマットをマウントできますか? + + はい. DOS 拡張パーティションは FreeBSD + の他の“スライス”の最後に マップされます. 例えば + D:ドライブ が + /dev/sd0s5, + E:ドライブが + /dev/sd0s6, といった具合いです. もちろん, + この例では拡張 パーティションが SCSI ドライブ 0 + にあることを仮定しています. IDE ドライブでは当然, + sdwd となります. + 他の DOS ドライブを マウントするのと同様に, + 次のようにして拡張パーティションもちゃんと + マウントできます: + + &prompt.root; mount -t msdos /dev/sd0s5 /dos_d + + MS-DOS のバイナリを FreeBSD + で実行できますか? + + BSDI が BSD のコミュニティに対して寄贈した DOS + エミュレータが あり, これが FreeBSD 用に移植されています. + + またこれとは別に, ports + コレクション には, pcemu という (技術的に) + 素晴らしいアプリケーションがあり, これをつか うことで多くの + MS-DOS のテキストモードで動くプログ ラムを完全な 8088CPU + のエミュレーション環境で走らせることがで きます. + + + + diff --git a/ja_JP.eucJP/books/handbook/internals/chapter.sgml b/ja_JP.eucJP/books/handbook/internals/chapter.sgml new file mode 100644 index 0000000000..d510f32188 --- /dev/null +++ b/ja_JP.eucJP/books/handbook/internals/chapter.sgml @@ -0,0 +1,2046 @@ + + + + FreeBSD の内部 + + + FreeBSDのブート処理の流れ + + 原作: &a.phk;. v1.1, April 26th. + + 訳: &a.jp.nakai;. September 6 1996. + + FreeBSDのブートには基本的に3つの段階があります: + カーネルの読み込み, ルートのファイルシステムの決定, そして + ユーザ領域にあるものの初期化です. このことは下に述べる + いくつかの興味深い可能性につながっています. + + + カーネルの読み込み + + 現在, カーネルの読み込みには基本的に下に挙げる3つの方法が + あります: + これらはカーネルが次に何をしたらいいのかという情報をカーネルに + 与えます. + + + Biosboot + + Biosboot は “ブートブロック” + に相当するもので, 2つのファイル から構成されており, + フロッピーディスクやハードディスクのブートを + 開始する側の 8K + バイトにインストールされています. + + Biosboot は FreeBSD のファイルシステムからカーネルを + 読み込むことができます. + + + + Dosboot + + Dosbootは DI. Christian + Gusenbauerによって書かれましたが, + 不幸にしてこの場合には, コードのある一部分が + マイクロソフトの + コンパイラ向けに書かれているため, FreeBSD + 単体ではコンパイル することはできません. + + Dosboot は MS-DOS のファイルから, またはディスクの + FreeBSD ファイルシステムのパーティションから + カーネルをブートします. これは MS-DOS + システムのハイメモリ領域に潜んでいる + メモリマネージャ等の + さまざまな怪しい代物とメモリの取り合いをして, + なんとかブートしています. + + + + Netboot + + Netboot + はサポートされているイーサネットカードを検出し, BOOTP + や TFTP, NFS + を使ってブートするカーネルを探そうとします. + + + + + + + ルートファイルシステムの決定 + + カーネルが読み込まれ, + ブートプログラムがカーネルに移行したら, + カーネルは自身の初期化をし, + どんなハードウェアが組み込まれいるか を決定し, + それからルートファイルシステムを探さなくてはなりません. + + 現在サポートされているルートファイルシステムは + 次の通りです : + + + UFS + + UFS は, もっとも一般的なタイプのルートシステムです. + フロッピーディスクやハードディスク上に存在します. + + + + MSDOS + + 技術的に可能ですが, あまり有用ではありません. + なぜならば, FAT + ファイルシステムではリンクやデバイスノードなどの + “UNIX 主義” を実現できないからです. + + + + MFS + + MFS はカーネル内部に組み込みになっている UFS + ファイルシステムです. つまり MFS を機能させるのに + ディスクやフロッピーディスクなどのハードウェアは + 必要ではありません. + + + + CD9660 + + CD9660 は CD-ROM + をルートファイルシステムに使用したものです. + + + + NFS + + これはルートシステムにファイルサーバを使用していて, + 基本的に ディスクレスのマシンのためにあります. + + + + + + + ユーザ領域にあるものの初期化 + + ユーザ領域で動作させるようにするために, + カーネルが初期化を終えると, カーネルは pid == + 1のプロセスを生成し, ルートファイルシステム + 上のプログラムを実行します. このプログラムは通常 + /sbin/init です. + + /sbin/init + を別なプログラム置き換えてしまうことは可能ですが, そのプロセス + には以下のような制約があります: + + pid が 1 のプロセスには stdin/stdout/stderr + は割り当てられていませんので, + プログラムは自分でこれらをオープンしないとなりません. + このプロセスが終了するとカーネルはパニックメッセージを表示して + 停止します. + また, このプロセスに対するシグナル処理は特殊です. + + この例として, インストール用のフロッピーディスクにある + /stand/sysinstallがあります. + + + + 興味深い連係 + + カーネルを MFS でブートするのには次のような特別の + /sbin/init を使います. + + + A — DOS を使う場合 + + + + C: を + /C: にマウントします. + + + + C:/freebsd.fs を + /dev/vn0 + にアタッチします. + + + + /dev/vn0 を + /rootfs + にマウントします. + + + + シンボリックリンクを作ります. + /rootfs/bin -> + /bin + /rootfs/etc -> + /etc + /rootfs/sbin -> + /sbin (etc...) + + + + これでハードディスクのパーティションを切り直さずに + FreeBSD を 使うことができます. + + + + B — NFS を使う場合 + + NFS はサーバ:~you/FreeBSD を + /nfs にマウントし, + ルートディレクトリを /nfs + に変更して, そこで /sbin/init + を実行します. + + これで FreeBSD をディスクレスで実行できますが, NFS + サーバを コントロールできないままです... + + + + C — X-server を起動する場合 + + これで X ターミナルが手に入りました. これは, + これでハードウェア に費用を割いたりするよりはいい, + と上司が主張した, Windows で + 動作する遅くて何がおこなわれているのか + 見ることができるような すすけた X Window + エミュレータなんかよりよいものです. + + + + D — テープを使う場合 + + /dev/rwd0 + のコピーを取って, リモートにあるテープ + ステーションやファイルサーバに書き込んでください. + + これで一年前に取っておくべきだった + バックアップをやっと 取ることができました. + + + + E — ファイアウォール/Web + サーバとして動作させる場合 + (私の知っている範囲で...) + + + これは特に面白いもので, + 書き込み禁止のフロッピーディスクから ブートができて, + ルートのファイルシステムに書き込むことができる + というものです. + + + + + + + + PC におけるメモリの利用 + + 原作: &a.joerg;. + 16 Apr 1995. + + 訳: &a.jp.tomo;. + 29 Oct 1996. + + FreeBSD が i386 + プラットフォーム上でどのようにメモリを使うかに + ついての説明です. + + ブート部分は0:0x7c00にロードされ, + すぐに自分自身を 0x7c0:0に移します. + (これは手品ではなく, 単なる%cs + セレクタのための調節であり, + ljmpにより行われます. ) + + それから最初の 15 セクタを 0x10000 + (biosboot の Makefile のなかの + BOOTSEG部分)にロードし, 作業領域のスタックを + 0x1fff0以下に セットします. このあと, boot2 + に飛びます. つまり, boot1 自身と (ダミーの) DOS + パーティションテーブルを飛び越えて, %csセレクタを 調節します + — この時点ではまだ16ビットモードです. + + boot2 はブートファイルを要求し, + a.outヘッダを調べます. + 0x00ffffffによってファイルエントリポイントを + (通常は0xf0100000に)マスクし, ロードします. + このため, 通常のロードポイントは 1MB + (0x00100000) になります. ロードしている間, + リアルモードでBIOSを使うため, ブートコードは, + リアルモードとプロテクトモードの間を行ったり来たりします (訳注: + これは, BIOSがリアルモード用に書かれていて, + ロードすべき領域がリアルモードではアクセスできない1MBより上位の + アドレスであることから, ブートコードがリアルモードと + プロテクトモードを切り替えながら動作するためです). + + ブートコード自身はプロテクトモードで + %cs%ds/%es 用に + セグメントセレクタ 0x18 と + 0x20 を使い, + リアルモードに戻るのに0x28を使います. + 最終的にカーネルはアドレス空間全体をカバーできるようなダミーの + ディスクリプタを参照して%cs + 0x08%ds/%es/%ss + 0x10でスタートします. + + カーネルはそのロードポイントで起動されます. + 別の(高位)アドレスにリンクされるので, + ページテーブルやページディレクトリなどが適切に設定され, + ページングが有効になり, カーネルがリンクされたアドレスで + 動作するようになるまでは, カーネルはロードアドレスからの + 相対アドレス (PIC: position independent code) を用いて + 実行されなければなりません. + + 寄贈: &a.dg;. + 16 Apr 1995. + + カーネルの BSS セグメントの直後の物理ページ (実メモリ) に + proc0 (訳注: プロセス番号 0, swapper) のページディレクトリや + ページテーブル, Uページが配置されます. + 仮想記憶機構が初期化された少しあと, + 0x1000-0x9ffffの実メモリとカーネル (text + + data + bss + 上記の proc0 に関わるもの + その他) + の後ろの実メモリは, 通常の仮想記憶ページの形で利用可能となり, + グローバルな空きページリストに追加されます. + + + + DMAとはどういったものでどういう働きをするのか + + 原作: &a.uhclem; + 訳: &a.jp.yasu; + 10 December 1996. 最終更新日 8 October 1997. + + Direct Memory Access (DMA)は, 中央演算処理装置 + (CPU)からの干渉なく + データを計算機中である場所から別の場所に動かすための手法です. + + + DMA 機能の実装の方法はそれぞれの + 計算機アーキテクチャ間で異なるもので あるため, + ここでの議論はIBMパーソナルコンピュータ(PC), PC/AT + とその互換機における DMA + サブシステムの実装と働きに限定します. + + PCの DMAサブシステムは, Intelの 8237 + DMAコントローラをベースにして います. + 8237はそれぞれ独立にプログラムできる4つのDMAチャネルを持ち, + それぞれどのチャネルもいつでもアクティブにできます. + これらのチャネルは順に 0, 1, 2, 3となっています. PC/ATからは, + セカンド 8237 チップが追加され,それらは 4, 5, 6, 7と + なっています. + + オリジナルの DMAコントローラ(0, 1, 2, 3)は, + 1回の転送で1バイト 転送します. セカンドDMAコントローラ(4, 5, 6, + 7)は1回で 隣接する2つのメモリ番地から 16ビット転送します. + ここで, 最初のバイトは通常偶数のアドレスになります. + 2つのコントローラは全く同じものであり, 転送量が異なるのは + セカンドコントローラがシステムに直結しているためです. + + 8237 は個々のチャネルについて, + DRQと-DACKという2つの電気信号を 持っています. その他に, HRQ + (Hold Request), HLDA (Hold Acknowledge), -EOP (End of + Process)があり, バス制御信号として -MEMR (Memory Read), -MEMW + (Memory Write), -IOR (I/O Read), and -IOW (I/O + Write)があります. + + 8237 DMACは, いわゆる“fly-by” + DMAコントローラです. これは, データの移動を行う際に, データは + DMACチップを通過せず, DMACチップに格納されないことを意味します. + また, DMACはI/Oポートとメモリアドレス間でのみデータを + 転送することができますが, + 2つのI/Oポートもしくは2つのメモリアドレス + 間ではできません. + + + 8237 は, 非 “fly-by”モードでは, + 互いに接続された + 2つのチャネルでのメモリ-メモリ間でのDMA操作を許可します. + しかし, PC メーカは, + ただでさえ乏しいこのリソースをこんなふうに 使ったりしません. + なぜなら, + CPUを使用してメモリ間のデータを動かす方が早いからです. + + + PC アーキテクチャでは, それぞれのDMAチャネルは, 通常 + 与えられた DMA + チャネルを使用するハードウェアがそのチャネルについて + DRQ線を使って転送を要求した時のみ動作します. + + + DMA転送の例 + + DMA転送の発生と処理の手順の例をあげてみましょう. + この例では, フロッピーディスクコントローラ (FDC)が + ディスケットから1バイト読み込んで, + DMAを使って,メモリの0x00123456番地に 格納したいとします. + 処理は, FDCが, DRQ2信号(DMAチャンネル2に + 対するDRQ線)を有効にして + DMAコントローラに要求を伝えることで開始されます. + + DMAコントローラは DRQ2 + シグナルが有効になったことを記録します. + するとDMAコントローラはDMAチャネル2がプログラムされ, マスクが + かかっていない(有効になっている)ことを確認します. 同様に, + DMAコントローラは, 他のDMAチャネルがアクティブまたは + アクティブになろうとしていないこと, + そしてより高い優先度を持って いないことを確認します. + 一旦これらのチェックが完了すると, DMACはDMACがバスを使うために + バスを開放するようにCPUに要求します. + DMACはCPUにHRQ信号を送ってバスを要求します. + + CPUはHRQ信号を検出し, 現在の指示の実行を完了します. + 一旦プロセッサがバスを開放することができる状態になると, 解放を + 行います. 通常は CPU により駆動される信号 (-MEMR, -MEMW, + -IOR, -IOW, その他)を すべてハイインピーダンス + (ハイともローとも指定しない)状態にした後, CPUは + HLDA信号を有効にして DMAコントローラにバスを明け渡したことを + 伝えます. + + プロセッサによっては, CPUはバスを使用しないいくつかの + 命令を追加して実行することもできますが, + しかし,プロセッサの内部キャッシュや + パイプライン以外のメモリから + 何か読み出すといった指示に到達したら結局 CPU + は待たなくてはなりません. + + ここで,DMACが バスを“託される”と, DMACはその + -MEMR, -MEMW, -IOR, -IOW 出力信号をアクティブにし, + DMACから出力されるアドレスは 0x3456にセットされます.これは + 転送しようとする特定のメモリ番地をバイトで + 指示するのに使われます. + + すると DMAC は DMA + 転送をリクエストしたデバイスに転送が始まることを + 知らせます.これは -DACK + 信号をアクティブにすることで行われます. + フロッピーディスクコントローラの場合は, -DACK2を + アクティブにすることで行われます. + + バスのデータ線に転送されるバイトにを出力することについては + フロッピーディスクコントローラが責任をもつことになります. + もし,フロッピーディスクコントローラがバス上にバイトデータを + 出力するのに余計な時間を必要としなければ + (もし周辺装置がもっと時間を必要とする場合には, READY信号を + 経由してDMACに通知します), DMAは 1 DMAクロック待ち, + メモリにバス上のバイトデータを格納するために -MEMW および -IOR + 信号を解除します. そして + FDCはバイトデータが転送されたことを認識します. + + DMAサイクルは1度に1バイトしか転送しないので, + FDCはDRQ2信号を止めて, DMACに転送が終了したことを知らせます. + DMACは-DACK2信号を解除して, FDCはバス上へのデータ出力を + 停止しなくてはならないことを知らせます. + + 次にDMACは他のDMAチャネルのいずれかに要求がきていないか + チェックを行います. + もしどのチャネルのDRQも有効になっていなければ, + DMAコントローラは処理を完了して, -MEMR, -MEMW, -IOR, -IOW + および アドレス信号をハイインピーダンス状態にします. + + 最後に, DMAはHRQ信号を解除します. + CPUはこれを見ると,HOLDA信号を 解除します. そしてCPUは自らの + -MEMR, -MEMW, -IOR, -IOW 信号および アドレス線を有効にし, + 命令の実行やメインメモリや周辺機器へのアクセスを + 再開します. + + 典型的なフロッピーディスクの1セクタについては, + 上記のプロセスが それぞれのバイトについて1回行われ, + 全部で512回繰り返されます. 1 バイト転送される毎に, DMAC + 内のアドレスレジスタはインクリメントされ, 同じくDMAC内にある, + 何バイト転送すればよいかを示すカウンタが + デクリメントされます. + + カウンタが0になると, DMAはEOP信号を送ります. この信号は + カウンタが0であり, DMAコントローラがCPUによって再び + プログラムされるまで, これ以上データは転送されないことを + 示すものです. + + このイベントはターミナルカウント(TC)とも呼ばれます. + EOP信号は1本しかありません. そして, 一度にアクティブにできる + DMAチャネルは一本だけなので, + 現在アクティブであるDMAチャネルこそが, + たった今処理を終了したDMAチャネルだと言うことができます. + + もし, + バッファの転送が完了した時に周辺機器から割り込みを発生させたい + とき, 周辺機器は + -DACKn信号およびEOP信号の両方が同時に発信されたか + どうかをテストします. その場合, DMACはCPUの介在がなければ + これ以上はその周辺機器についての情報を転送しません. その後で, + 周辺機器はプロセッサに割り込みを生じさせるために, + 何らかの割り込み信号を発生させることができます. + PCアーキテクチャ においては, + DMAチップ自身が割り込みを生じさせることはできません. + 周辺機器とそれに関連するハードウェアが割り込みを生成する責任を + 持ちます. また, DMAを使用する周辺機器が割り込みを使用しない + 可能性もあります. + + DMAC が要求を出したときには CPU は常にバスを DMAC + に開放しますが, この動作は, DMAC + がアクティブになった時にプロセッサが命令を実行するのに + かかる時間がわずかに変化することを除いては, アプリケーション, + オペレーティングシステムの両方からはわからないということを + 理解することが重要です. そのため, + プロセッサが確かにDMA転送が完了したことを知るためには, + 周辺装置や DMA + チップ中のレジスタを調べたり,周辺装置からの割り込みを + 受け取る必要があります. + + + + DMA ページレジスタ および 16メガ アドレス空間制限 + + これまで述べたのとは異なり, DMACはアドレス線を 0x0123456 + にセットする 代わりに 0x3456 + だけをセットすることにあなたは気づいたかも しれません. + この理由について少し説明します. + + オリジナルのIBM PCがデザインされた時, IBMは, + DMACと割込み制御チップの 両方を, 8085(8ビットプロセッサで, + 16ビットのアドレス空間(64k)を持つ)と + 組み合わせて使うように設計されたチップを使うことを選びました. + IBM PCが64k以上のメモリをサポートしていたため, + DMACが64kを越えるメモリ番地に読み込み又は書き込みを行うために + 変更を行う必要が生じました. + この問題を解決するためにIBMが行ったのは, + それぞれのDMAチャネルに, + 読み込み元または書き込み先のアドレスの + 上位ビットを保持するための 外部的なラッチを追加することでした. + DMAチャネルがアクティブな時はいつでも, + このラッチの内容はアドレスバスに書かれて, + そのチャネルのDMA操作が 終了するまでそこに保持されます. IBM + はこれらのラッチを “ページレジスタ” + と呼んでいます. + + そのため上記に示した例では, + DMACはアドレスの0x3456の部分をバス上に 置き, + DMAチャネル2に対するページレジスタは, 0x0012xxxxをバス上に + 置きます. + これらの2つの値が組み合わされてアクセスされるメモリ中の完全な + アドレスを形成します. + + ページレジスタのラッチはDMAチップとは独立であるので, + 読み込まれる又は書き込まれるメモリ領域は, 64kの物理的境界を + またいではなりません. 例えば, もし + DMACがメモリの0xffff番地をアクセスした場合, データの転送後, + DMACはアドレスレジスタをインクリメントし, + 0x0000番地にある次のバイトを アクセスします. + 0x10000番地ではありません. + これはおそらく意図されたものとは異なっているでしょう. + + + “物理的な” 64Kの境界を 8086モードの + 64k“セグメント”と混同してはいけません. + セグメントは, セグメント + レジスタに数学的にオフセットレジスタを + 加算して作られるものです. + ページレジスタにはアドレスのオーバーラップも無く, 数学的に + OR を取られることもありません. + + + さらに複雑なことには, PC/ATでは外部のDMAアドレスのラッチは + 8ビットしか保持しません. よって8+16で24ビットになり, これは + DMAが0から16メガの間のメモリ番地しか指し示せないことを + 意味します. + 16メガ以上のメモリを持ったより新しいマシンにおいても, + 標準的なPCコンパチブルなDMAでは16メガ以上のメモリ番地には + アクセスできません. + + この制限を避けるために, オペレーティングシステムは 16 + メガ以下にある物理的な 64k の境界をまたがない領域に RAM + バッファを 予約します. そして, + DMACはデータを周辺機器からそのバッファに + 転送するようにプログラムされます. 一旦DMACがこのバッファに + データを動かすと, オペレーティングシステムは本当にデータを + 格納したいアドレスにバッファからデータをコピーします. + + 16メガを越えるアドレスからDMAベースの周辺機器にデータを + 書き込む際には, データは16メガ以下に位置したバッファから最初に + コピーされなくてはならず, その後, + DMACはバッファからハードウェアに + データをコピーすることができます. FreeBSDでは, + これらの予約バッファは + “バウンスバッファ”と呼ばれます. MS-DOSの世界では, + これらは“スマートバッファ”などと呼ばれます. + + + 82374と呼ばれる8237の新しい実装においては, + ページレジスタを16ビットで指定して, + バウンスバッファを使用しなくても, 32 + ビットのアドレス空間全体にアクセスすることが可能です. + + + + + DMA操作モードとその設定 + + 8237 DMA はいくつかのモードで動作します. 主なモードは, + 以下のとおりです. + + + シングル転送モード + + シングルバイト(もしくはワード)が転送されます. + DMAは1バイト毎にバスを開放し, + 再び要求しなくてはなくてはなりません. これは一般に, + すぐにはデータのブロック全てを転送できないデバイスに + よって使用されます. + 周辺装置は次の転送の準備ができる毎にDMAを要求します. + + + 標準的な PC + コンパチブルなフロッピーディスクコントローラ(NEC 765)は + 1バイトのバッファしか持たないので, + このモードを使用します. + + + + ブロック/デマンド転送モード + + 一旦 DMAC がシステムバスを取得すると, + 最大64kまでのデータブロック 全体が転送されます. + もし周辺装置が余分に時間を必要とするときは, + 転送を一時中断するためにREADY信号を有効にします. + READY信号は過度に使われるべきではなく, + 遅い周辺装置の転送の場合は + シングル転送モードを代わりに使うべきです. + + ブロック転送モードとデマンド転送モードの違いは, + 一旦ブロック転送が 始まると, 転送カウンタか 0 + になるまでそれが行われるところです. DRQ は -DACK + が有効になるまでの間は有効でなければなりません. + デマンドモードは DRQ が有効な間転送が続けられます. + DRQが有効でなくなった場合, DMA はその時点で転送を中断し, + バスを解放して CPU に返します. + その後, DRQが有効になると, + 転送は中断したところから再開されます. + + データの転送, + 特に転送に使われるメモリ番地が16Mを越える場合に, CPU + を使った方が効率がよくなるまで CPU + の速度が向上する以前の + 古いハードディスクコントローラはデマンドモードを + 使っていました. + + + + カスケード転送モード + + このメカニズムは DMA + チャネルがバスを要求することを許可する ものですが, + 接続されたデバイスはバス上のアドレス情報の配置に + ついてDMACに代わって責任を持ちます. + これは“バスマスタ” + と呼ばれる技術の実装に利用されます. + + カスケードモードの DMA + チャネルがバスのコントロールを受け取ると, DMA + は通常行われるようなバス上のアドレスと I/O + コントロール信号の 出力を行いません. 代わりに, + DMAはアクティブなチャネルの -DACK信号を + 有効にします. + + この時点で, アドレスとバスコントロール信号の供給は + DMAチャネルに接続された周辺機器が担当します. + 周辺機器はシステムバスの完全なコントロールを行い, 16 + メガ以下の任意のアドレスの読み込みおよび書き込みを + 行うことが できます. 周辺機器はバスの使用を終えると DRQ + 線を無効にするので, DMA コントローラは CPU + もしくは他のDMAチャネルに制御を返すことが + できます. + + カスケードモードは複数の DMA + コントローラを相互接続するのに 使われます. + PC内ではDMAチャネル4がまさにこの用途に使われています. + 周辺機器がDMAチャネル0, 1, 2, 3でバスを要求すると, + スレーブDMAコントローラは HLDREQ を有効にしますが, + この線はCPUではなく, + 実際にはプライマリDMAコントローラのDRQ4に + 接続されています. その後, + チャンネル4になにか仕事があるものと見なしたプライマリの + DMAコントローラは HLDREQ を使ってCPUにバスを 要求します. + バスが与えられると, -DACK4が有効になりますが, + この線は実際にはスレーブDMAコントローラの HLDA信号に + 接続されています. + スレーブDMAコントローラはその後要求したDMAチャネル (0, + 1, 2, 3) に対してデータを転送するか, + SCSIコントローラのような + バスマスタリングを要求する周辺機器にバスを許可します. + + + このような配線がおこなわれているため, + PC/ATシステムの 周辺機器ではDMAチャネルは 0, 1, 2, 3, 5, + 6, 7のみが使用できます. + + + 初期のIBM PCコンピュータでは, DMAチャネル0は操作の + リフレッシュのために予約されていますが, + 最近のシステムでは通常, + 周辺機器によって使用することができます. + + + 周辺機器がバスマスタリングを行っている時は, + システムバスを保持している間絶えずメモリに + もしくはメモリから データを転送することが重要です.もし, + 周辺機器がこのように できないときは, + システムがメインメモリのリフレッシュを + 行なえるようにしばしばバスを開放しなくては + なりません. + + 全ての PC でメインメモリとして使われるダイナミック + RAM は, 中身が “満たされている” + ビットを保持するため + 頻繁にアクセスされなくてはなりません. ダイナミック RAM + は, それぞれが 1 ビットのデータを記憶するコンデンサが + たくさん集まって構成されています. + これらのコンデンサは充電された 状態で + 1, 充電されていない状態で + 0 を表します. + 全てのコンデンサは放電するため, 1 + の値を保持するために, + 一定の間隔で電力を加える必要があります. 実際に RAM + チップは RAM の適切な場所に電力を送る作業を行ないますが, + メモリのリフレッシュ作業が RAM を普通にアクセスする時と + 衝突しないように, それをいつ行なうかを + コンピュータが休止状態の時に知らせなくてはなりません. + もしコンピュータがメモリのリフレッシュを + 行なえない場合は, + メモリの中身はわずか数ミリ秒で壊れてしまいます. + + メモリの読み込みと書き込みのサイクルは + リフレッシュサイクルとして カウントされる(ダイナミック + RAM のリフレッシュサイクルは + 実際には不完全なメモリ読み込みサイクルになります)ので, + 周辺機器のコントローラが連続するメモリ番地から + データの読み込み または書き込みを行う間は, + メモリの全てがリフレッシュされます. + + バスマスタリングはいくつかの SCSI + ホストインターフェースやその他の + ハイパフォーマンスな周辺機器コントローラに + 見られます. + + + + 自動初期化転送モード + + このモードにおいてDMAはバイト, ブロック, + デマンド転送を行いますが, DMA転送カウンタが0になると, + カウンタとアドレスはDMAチャネルが + もともとプログラムされた時のものに戻されます. これは, + 周辺機器が転送を要求している間は転送が続けられることを + 意味します. + 転送領域としてDMACにプログラムされた固定バッファの中で, + 出力操作でDMACがデータを読み出す前もって新しいデータを + 書き込んだり入力操作でDMACが書き込んだあとに, + そこから新しいデータを読み出す作業は CPU + が受け持ちます. + + このテクニックは, “サンプリング” + 用のバッファが小さいもしくは + それを持たないオーディオデバイスによく使われます. + この“環状” バッファの管理は更なる CPU + オーバーヘッドになりますが, DMAカウンタが0になり, + 再プログラムされるまでDMAが停止してしまう + ことによって起きる遅延は, + この方法でしかなくす事ができない 場合もあります. + + + + + + + DMAのプログラミング + + プログラムされるDMAチャネルは, 通常, 設定を行う前に + “マスクする”べきです. + これはハードウェアが予期せずそのチャンネルに対してDRQを有効に + した場合, たとえ全てのパラメータが + 満たされてない場合や更新されていない場合でも, DMACは + それに応答してしまう可能性があるからです. + + マスクを行ってから,ホストは転送の方向(メモリからI/O, + もしくはI/Oからメモリ)と, 転送に使用するDMA操作のモード + (シングル, ブロック, デマンド, カスケードなど)を設定し, 最後に + アドレスや転送の長さを設定します. + 設定される長さはDMACに転送させたい量よりも1少なくなります. + アドレスや転送長のLSBとMSBは同じ8ビットI/O + ポートに書き込まれます. そのためDMACが最初のバイトをLSBとして, + 2番目のバイトをMSBとして 受け取ることを保証するために, + 最初に別のポートに書き込みを行なって LSBとMSB + の判別を行なうフリップフロップをクリアしておく必要があります. + + + そして,DMAのページレジスタを更新します. + これはDMACの外部にあり I/O + ポートの別のセットを通してアクセスされます. + + すべての設定ができると, + DMAチャネルはマスクを解除することができます. + そのDMAチャネルは“準備ができた”とみなされ, + そのチャンネルのDRQが 有効になると応答します. + + 8237のプログラミングの正確な詳細については, + ハードウェアデータブックを参照してください. PCシステムにおける + I/O マップについても参照する必要があるでしょう. このマップには + DMA およびページレジスタのポートがどこに位置するのかを + 書いてあります. + 以下に完全なポートのマップテーブルを示します. + + + + DMAポートのマップ + + IBM-PCとPC/ATに基づくすべてのシステムでは, + 同じI/Oポートに配置された DMAハードウェアを持っています. + その完全なリストを以下に示します. + DMAコントローラ2に割り当てられたポートは, AT以外のデザインでは + 未定義になっています. + + + 0x00 – 0x1f DMA コントローラ #1 (Channels 0, 1, 2 + and 3) + + DMA アドレス および カウントレジスタ + + + + + + 0x00 + write + Channel 0 starting address + + + + 0x00 + read + Channel 0 current address + + + + 0x01 + write + Channel 0 starting word count + + + + 0x01 + read + Channel 0 remaining word count + + + + 0x02 + write + Channel 1 starting address + + + + 0x02 + read + Channel 1 current address + + + + 0x03 + write + Channel 1 starting word count + + + + 0x03 + read + Channel 1 remaining word count + + + + 0x04 + write + Channel 2 starting address + + + + 0x04 + read + Channel 2 current address + + + + 0x05 + write + Channel 2 starting word count + + + + 0x05 + read + Channel 2 remaining word count + + + + 0x06 + write + Channel 3 starting address + + + + 0x06 + read + Channel 3 current address + + + + 0x07 + write + Channel 3 starting word count + + + + 0x07 + read + Channel 3 remaining word count + + + + + + DMA コマンドレジスタ + + + + + + 0x08 + write + Command Register + + + + 0x08 + read + Status Register + + + + 0x09 + write + Request Register + + + + 0x09 + read + - + + + + 0x0a + write + Single Mask Register Bit + + + + 0x0a + read + - + + + + 0x0b + write + Mode Register + + + + 0x0b + read + - + + + + 0x0c + write + Clear LSB/MSB Flip-Flop + + + + 0x0c + read + - + + + + 0x0d + write + Master Clear/Reset + + + + 0x0d + read + + Temporary Register + (新しいバージョンでは利用不可) + + + + 0x0e + write + Clear Mask Register + + + + 0x0e + read + - + + + + 0x0f + write + Write All Mask Register Bits + + + + 0x0f + read + Read All Mask Register Bits (Intel + 82374にのみ存在する) + + + + + + + + 0xc0 – 0xdf DMA コントローラ #2 (Channels 4, 5, 6 + and 7) + + DMA アドレス および カウントレジスタ + + + + + + 0xc0 + write + Channel 4 starting address + + + + 0xc0 + read + Channel 4 current address + + + + 0xc2 + write + Channel 4 starting word count + + + + 0xc2 + read + Channel 4 remaining word count + + + + 0xc4 + write + Channel 5 starting address + + + + 0xc4 + read + Channel 5 current address + + + + 0xc6 + write + Channel 5 starting word count + + + + 0xc6 + read + Channel 5 remaining word count + + + + 0xc8 + write + Channel 6 starting address + + + + 0xc8 + read + Channel 6 current address + + + + 0xca + write + Channel 6 starting word count + + + + 0xca + read + Channel 6 remaining word count + + + + 0xcc + write + Channel 7 starting address + + + + 0xcc + read + Channel 7 current address + + + + 0xce + write + Channel 7 starting word count + + + + 0xce + read + Channel 7 remaining word count + + + + + + DMA コマンドレジスタ + + + + + + 0xd0 + write + Command Register + + + + 0xd0 + read + Status Register + + + + 0xd2 + write + Request Register + + + + 0xd2 + read + - + + + + 0xd4 + write + Single Mask Register Bit + + + + 0xd4 + read + - + + + + 0xd6 + write + Mode Register + + + + 0xd6 + read + - + + + + 0xd8 + write + Clear LSB/MSB Flip-Flop + + + + 0xd8 + read + - + + + + 0xda + write + Master Clear/Reset + + + + 0xda + read + + Temporary Register (Intel 82374には存在しない) + + + + 0xdc + write + Clear Mask Register + + + + 0xdc + read + - + + + + 0xde + write + Write All Mask Register Bits + + + + 0xdf + read + Read All Mask Register Bits (Intel + 82374にのみ存在する) + + + + + + + + 0x80 – 0x9f DMA ページレジスタ + + + + + + 0x87 + r/w + Channel 0 Low byte (23-16) page Register + + + + 0x83 + r/w + Channel 1 Low byte (23-16) page Register + + + + 0x81 + r/w + Channel 2 Low byte (23-16) page Register + + + + 0x82 + r/w + Channel 3 Low byte (23-16) page Register + + + + 0x8b + r/w + Channel 5 Low byte (23-16) page Register + + + + 0x89 + r/w + Channel 6 Low byte (23-16) page Register + + + + 0x8a + r/w + Channel 7 Low byte (23-16) page Register + + + + 0x8f + r/w + Low byte page Refresh + + + + + + + + 0x400 – 0x4ff 82374 Enhanced DMA Registers + + Intel 82374 EISA System Component + (ESC)は1996年の初めに発表されました. この中 + には機能的には8237のスーパーセットであり, + 1つのパッケージの中にその他の PC + 互換機のコアとなる周辺コンポーネントをも含んだ DMA + コントローラも含まれています. このチップはEISAとPCI + 両方のプラットホームをターゲットにしたものであり, + scatter-gather I/O やリングバッファを始めとして, + システムDMAをして32ビットの + アドレス空間全体に直接アクセスする能力も提供しています. + + + これらの機能を使用する場合でも, + 過去16年間のPC互換機で利用されてきた + 同等機能を提供するコードも含めておく必要があります. + 互換性の問題から, 82374の レジスタの一部は, + 従来の8237のレジスタをプログラムした + に, 転送の度にプログラムされる必要があります. + 8237のレジスタに書き込みを行うとき, + ソフトウェアの下位互換性のために, + 82374で追加された一部のレジスタの内容が + 強制的に0にクリアされるからです. + + + + + + 0x401 + r/w + Channel 0 High byte (bits 23-16) word count + + + + 0x403 + r/w + Channel 1 High byte (bits 23-16) word count + + + + 0x405 + r/w + Channel 2 High byte (bits 23-16) word count + + + + 0x407 + r/w + Channel 3 High byte (bits 23-16) word count + + + + 0x4c6 + r/w + Channel 5 High byte (bits 23-16) word count + + + + 0x4ca + r/w + Channel 6 High byte (bits 23-16) word count + + + + 0x4ce + r/w + Channel 7 High byte (bits 23-16) word count + + + + 0x487 + r/w + Channel 0 High byte (bits 31-24) page + Register + + + + 0x483 + r/w + Channel 1 High byte (bits 31-24) page + Register + + + + 0x481 + r/w + Channel 2 High byte (bits 31-24) page + Register + + + + 0x482 + r/w + Channel 3 High byte (bits 31-24) page + Register + + + + 0x48b + r/w + Channel 5 High byte (bits 31-24) page + Register + + + + 0x489 + r/w + Channel 6 High byte (bits 31-24) page + Register + + + + 0x48a + r/w + Channel 6 High byte (bits 31-24) page + Register + + + + 0x48f + r/w + High byte page Refresh + + + + 0x4e0 + r/w + Channel 0 Stop Register (bits 7-2) + + + + 0x4e1 + r/w + Channel 0 Stop Register (bits 15-8) + + + + 0x4e2 + r/w + Channel 0 Stop Register (bits 23-16) + + + + 0x4e4 + r/w + Channel 1 Stop Register (bits 7-2) + + + + 0x4e5 + r/w + Channel 1 Stop Register (bits 15-8) + + + + 0x4e6 + r/w + Channel 1 Stop Register (bits 23-16) + + + + 0x4e8 + r/w + Channel 2 Stop Register (bits 7-2) + + + + 0x4e9 + r/w + Channel 2 Stop Register (bits 15-8) + + + + 0x4ea + r/w + Channel 2 Stop Register (bits 23-16) + + + + 0x4ec + r/w + Channel 3 Stop Register (bits 7-2) + + + + 0x4ed + r/w + Channel 3 Stop Register (bits 15-8) + + + + 0x4ee + r/w + Channel 3 Stop Register (bits 23-16) + + + + 0x4f4 + r/w + Channel 5 Stop Register (bits 7-2) + + + + 0x4f5 + r/w + Channel 5 Stop Register (bits 15-8) + + + + 0x4f6 + r/w + Channel 5 Stop Register (bits 23-16) + + + + 0x4f8 + r/w + Channel 6 Stop Register (bits 7-2) + + + + 0x4f9 + r/w + Channel 6 Stop Register (bits 15-8) + + + + 0x4fa + r/w + Channel 6 Stop Register (bits 23-16) + + + + 0x4fc + r/w + Channel 7 Stop Register (bits 7-2) + + + + 0x4fd + r/w + Channel 7 Stop Register (bits 15-8) + + + + 0x4fe + r/w + Channel 7 Stop Register (bits 23-16) + + + + 0x40a + write + Channels 0-3 Chaining Mode Register + + + + 0x40a + read + Channel Interrupt Status Register + + + + 0x4d4 + write + Channels 4-7 Chaining Mode Register + + + + 0x4d4 + read + Chaining Mode Status + + + + 0x40c + read + Chain Buffer Expiration Control Register + + + + 0x410 + write + Channel 0 Scatter-Gather Command Register + + + + 0x411 + write + Channel 1 Scatter-Gather Command Register + + + + 0x412 + write + Channel 2 Scatter-Gather Command Register + + + + 0x413 + write + Channel 3 Scatter-Gather Command Register + + + + 0x415 + write + Channel 5 Scatter-Gather Command Register + + + + 0x416 + write + Channel 6 Scatter-Gather Command Register + + + + 0x417 + write + Channel 7 Scatter-Gather Command Register + + + + 0x418 + read + Channel 0 Scatter-Gather Status Register + + + + 0x419 + read + Channel 1 Scatter-Gather Status Register + + + + 0x41a + read + Channel 2 Scatter-Gather Status Register + + + + 0x41b + read + Channel 3 Scatter-Gather Status Register + + + + 0x41d + read + Channel 5 Scatter-Gather Status Register + + + + 0x41e + read + Channel 5 Scatter-Gather Status Register + + + + 0x41f + read + Channel 7 Scatter-Gather Status Register + + + + 0x420-0x423 + r/w + Channel 0 Scatter-Gather Descriptor Table Pointer + Register + + + + 0x424-0x427 + r/w + Channel 1 Scatter-Gather Descriptor Table Pointer + Register + + + + 0x428-0x42b + r/w + Channel 2 Scatter-Gather Descriptor Table Pointer + Register + + + + 0x42c-0x42f + r/w + Channel 3 Scatter-Gather Descriptor Table Pointer + Register + + + + 0x434-0x437 + r/w + Channel 5 Scatter-Gather Descriptor Table Pointer + Register + + + + 0x438-0x43b + r/w + Channel 6 Scatter-Gather Descriptor Table Pointer + Register + + + + 0x43c-0x43f + r/w + Channel 7 Scatter-Gather Descriptor Table Pointer + Register + + + + + + + + + + FreeBSD VM システム + + 原作: &a.dillon;. 6 Feb 1999 + + + 物理メモリ管理 — <literal>vm_page_t</literal> + + 物理メモリはページ単位に, + vm_page_t構造体を用いて管理されます. + 物理メモリのページは, ページキューの一つに存在する, + それぞれの vm_page_t + 構造体の配置によって分類されます. + + ページは, wired(ワイヤード), active(活性状態), + inactive(非活性状態), cache(キャッシュ状態), + free(使われていない状態)の 各状態をとります. wired + 状態を除いて, ページは通常 + その状態を示す二重連結リストのキューに置かれます. wired + 状態のページがキューに置かれることはありません. + + FreeBSD は, ページカラーリング(page + coloring)を実装するため, cache 状態, free + 状態にあるページ用に, + さらに複雑なページキューを実装しています. その各々の状態は, + プロセッサの L1, L2 キャッシュサイズに応じて最適化された + 多重キューを利用します. FreeBSD は, + 新たなページを確保(allocate)することが + 必要になった場合に確保される VM オブジェクトのために, L1, L2 + キャッシュに対して合理的にアライン(align)されたページを + 得ようと試みます. + + 加えて, ページは参照カウントとともに保持され, + ビジーカウントとともにロックされます. VM システムは, + ページフラグとして PG_BUSY を使う “完全ロック状態” + も実装しています. + + + 一般的には, 各々のページキューは最長不使用 (LRU) + 方式で動作します. ページは普通, 最初に wired, もしくは active + 状態に置かれます. wired 状態の場合, + そのページはどこかにあるページテーブルに 関連づけられています. + VM システムはアクティブなキュー内のページをスキャンし, wired + 状態のページにエイジング (訳注: + ページ参照頻度を量る手法の一つ; aging) を施します. そして, + そのページはあまりアクティブでないキューへ + 移動することになります. cache キューに移動させられたページは, + 再利用の候補になっている VM + オブジェクトに割り付けられています. free + キューにあるページは, 完全に自由の状態にあります. FreeBSD は, + free キューにあるページ数を最小限にとどめようと 試みますが, + 割り込み発生時のページ確保を融通するため, + 完全に自由なページをいくつか持っていなければなりません. + + + プロセスがページテーブルに存在しない, + ページキューの一つ(例えば, inactive, cache キュー等)に + 存在するページをアクセスしようとしたとき, + 比較的負荷の小さなページ再活性化フォールトが起こります. + システムメモリに全く存在していないページの場合は, + ディスクからページを読み出す間, + そのプロセスはブロック(block)されます. + + FreeBSD は, ページキューを動的に調節し, + 同期済(clean)のページ, 同期していない(dirty)ページの分類を + 合理的に保つのと同様に, それぞれのキューにあるページが合理的な + 比率に保つように試みます. 再バランス化処理が起こる量は, + システムのメモリ負荷に依存します. この再バランス化処理は + ページアウトデーモンによって実装されていて, + (補助記憶とページを同期して)同期していないページの + クリーニングすることや, (LRU + キュー内でのページ位置を再配置したり, + ページをキューの間を移動することで)ページが頻繁に + 参照状態にあることに注目すること, キューを均等にするための + キュー間ページ移動等を伴います. + ページが実際にどれだけ使われているかを決定するために, FreeBSD + の VM システムは, ページの再活性化フォールトを 自発的に, + 合理的な数だけ発生します. これは, + ページをスワップアウトしたり, クリーニングする時期を + より良く決めることに繋がります. + + + + 統合バッファキャッシュ — + <literal>vm_object_t</literal> + + FreeBSD は, 一般化した “VM オブジェクト” + という考え方を実装しています. VM オブジェクトは, + 様々な種類の補助記憶(backing store) — 補助記憶なし, + スワップ, 物理デバイス, ファイル, に割り付けられます. + ファイルシステムは + ファイルと関連するインコアデータを管理するのに, 同じ VM + オブジェクトを利用するため, + 統合バッファキャッシュと呼ばれます. + + VM オブジェクトは, シャドウ化 + することができます. シャドウ化とは, + オブジェクトがそれぞれ互いの上に + スタック(stack)されるということです. 例えば, MAP_PRIVATE + mmap() の 動作を実装するために, ファイルに割り付けられた VM + オブジェクトの上にスタックされた, スワップに割り付けられた VM + オブジェクトが存在しているでしょう. このスタッキングは, fork + されたアドレス空間のための 様々な共有属性, + コピーオンライト(訳注: ページ共有のための 手法の一つ; + cow,copy-on-write) を実装するのにも利用されています. + + vm_page_t は, 同時に一つの VM + オブジェクトしか割り付けられることが + できないことに注意しなければなりません. VM + オブジェクトのシャドウ化は, 複数のインスタンスが同じページに + 共有できるように実装されています. + + + + ファイルシステム I/O — <literal>struct + buf</literal> + + + 補助記憶にファイルを使う VM オブジェクトのように, v + ノードを使う VM オブジェクトは通常, + 処理されているかどうかという情報を, + VMシステムが管理する処理情報から独立して + 管理される必要があります. 例えば, VM + システムが物理ページと補助記憶を同期させようとしたとき, VM + システムは, 実際に書き戻す前に, + ページがクリーニング済であるという + マークを付ける必要があるわけです. さらに, ファイルシステムは, + KVM 内で操作できるように, ファイルや, + ファイルメタデータの一部分を KVM にマッピングすることが + できなくてはなりません. + + これを管理するために使われる実体は, + ファイルシステムバッファ, struct buf, + bp として知られています. + ファイルシステムに VM オブジェクトの一部を操作することが + 必要となるときは通常, オブジェクトの部分が struct buf に + マッピングされ, KVM に struct buf + 内のページがマッピングされます. 同じ方法で, ディスク I/O + はオブジェクトの部分を バッファ構造体内にマッピングし, + その時バッファ構造体上の I/O を 発行することで発行されます. + 基礎となっている vm_page_t は, I/O 処理の間 + ビジー(busy)状態になります. ファイルシステムにも + 独立したビジー状態があり, それはハードウェア上の VM + ページの代わりに ファイルシステムバッファで動作する + ファイルシステムドライバのコードに とって有用です. + + FreeBSD は, マッピングを保持するためにある量に制限された + KVM を 予約していますが, KVM + がマッピングを保持するためだけに使われ, + キャッシュデータの能力を制限しないということは + 明確にされるべきでしょう. + 物理データキャッシュを行うことは厳密に + vm_page_t の機能になっており, + ファイルシステムバッファの機能ではありません. しかし, + ファイルシステムバッファは placehold I/O に使われるため, + それは実質的に同時処理可能な I/O 処理量を制限します. + 通常は二, 三千のファイルバッファが利用可能ですから, + このことは問題にならないでしょう. + + + + マッピングページテーブル — + <literal>vm_map_t</literal>, + <literal>vm_entry_t</literal> + + + FreeBSD は, 物理ページテーブルの形態を VM + システムと分離しています. + ハードウェア上にある全てのプロセス毎のページテーブルは, + その場その場で再構成され, 通常, 使い捨てだとみなされています. + KVM を管理するような特殊なページテーブルは, + 最初に永続的な確保が 行われ, + これらのページテーブルが破棄されることはありません. + + + FreeBSD は, vm_objects の部分を, + 仮想メモリのアドレス範囲に vm_map_t と + vm_entry_t 構造体を通して割り付けます. + ページテーブルは, vm_map_t + /vm_entry_t/vm_object_t + という階層から 直接つくられます. “物理ページは, + 直接一つの vm_object に + 割り付けられる” と私が述べたことを思い出して下さい. + ええと, そうですね, しかしそれはいつでも完全に当てはまる, + というわけでもないのです. vm_page_t のは, + 実際に割り付けられた ページテーブルにもリンクされています. + 一つの vm_page_t は + ページテーブルが呼ばれた時, いくつかの + pmaps と リンクされることがあります. + しかし, そのような階層的な割り付けは, 同じ + vm_page_t を参照するオブジェクト内の, + 同じページへの参照全てを保持しているため, その結果, + 常にバッファキャッシュの統合を得ることができるわけです. + + + + + KVM メモリマッピング + + FreeBSD は, 様々なカーネル構造体を保持するため, KVM + を利用します. ファイルシステムバッファキャッシュは, KVM + 内で最も大きなものです. それはつまり, struct + buf の実体に対するマッピングに他なりません. + + Linux と異なり, FreeBSD は全ての物理メモリを KVM + にマッピングしません. これは, FreeBSD が 32 + ビットプラットフォームで 4G バイトまでの メモリを扱える, + ということを意味します. 実際, MMU + がそれを可能にしているならば, 理論上, FreeBSD は 32 + ビットプラットフォームで 8TB + までのメモリを扱うことができることになります. しかし, + 大部分の 32 ビットプラットフォームは 4G バイトの RAM しか + マッピングできないようになっている, + ということには議論の余地があるでしょう. + + + + KVM は, いくつかのメカニズムによって管理されています. + 中心となっているのは, ゾーンアロケータ(zone + allocator)です. ゾーンアロケータは, + 特定の構造体型を確保するために KVM の部分(chunk)を得て, + 一定の大きさのメモリブロックに分割します. vmstat + -m コマンドで, ゾーンによって 分割された, 現在の + KVM 利用状況一覧を得ることができます. + + + + + FreeBSD VM システムのチューニング + + FreeBSD カーネルでは, + 動的に自分自身をチューニングするために, + 協調的な努力が行なわれています. 普通は, + maxusersNMBCLUSTERS + という カーネルオプション, つまり, + /usr/src/sys/i386/conf/CONFIG_FILE で 指定されるもの以外, 変更する必要はありません. 可能なカーネルオプションの一覧は, /usr/src/sys/i386/conf/LINT に 記載されています. + + 大きなシステムに対しては, maxusers + を増やしたいと思うかも知れませんね. この値は普通, 10 から 128 + の間の値にします. + maxusers を増やしすぎるとシステムの利用可能な + KVM がオーバフローしてしまい, + 予測できない動作に陥ってしまうことに注意して下さい. + maxusers はある適度な値にとどめておいて, + 特定のリソースを制御する NMBCLUSTERS + のような, 他のオプションを増加させる方が良いでしょう. + + + もし, システムが負荷の高いネットワーク用途に使われるなら, + NMBCLUSTERS を増やしたいと望むことでしょう. + この値は普通, 1024 から 4096 の間です. + + + NBUF パラメータも, + 伝統的にシステムの規模を決めるのに使われます. これは, + システムがファイルシステムバッファを I/O のために + マッピングするのに使われる, KVA + の大きさを決めるのに使われます. このパラメータは, + 統合バッファキャッシュには何の影響も与えません. これは + 3.0-RELEASE 以降のカーネルでは動的にチューニングされるため, + 普通は手作業で調整されるべきものではありません. + NBUF パラメータは, + 指定しようとしないことを推奨します. + システムに選択させれば良いのです. + 小さすぎる値は極端に非効率的なファイルシステム動作を招き, + 一方で, 大きすぎる値は wired 状態のページを数多くつくりだし, + ページキューを枯渇させてしまうでしょう. + + デフォルトでは, FreeBSD カーネルは最適化されていません. + カーネルコンフィグにある makeoption + ディレクティブを使って + 最適化とデバッグフラグをセットすることができます. ただし, + それによって得られる大きな (7MB + 超の)カーネルを相手にするのが嫌なら, + オプションは使ってはいけません. + + makeoptions DEBUG="-g" +makeoptions COPTFLAGS="-O2 -pipe" + + sysctl は, 実行時にカーネルパラメータをチューニングする + 手段を提供しています. しかし, 普通は sysctl 変数, 特に VM + に関連したものを変更する必要が + 生じるようなことはありません. + + 実行時の VM とシステムのチューニングは, 比較的単純です. + まず, 可能ならば UFS/FFS ファイルシステムで softupdates + を使いましょう. + /usr/src/contrib/sys/softupdates/README + のファイルに, + 設定方法に関する手順(と制限)について書かれています. + + + 次に, 十分なスワップを設定します. “作業” + ディスクを含む 各物理ディスク装置毎に一つずつ + (最大四つまで)のスワップパーティションを 設定すべきです. + 少なくとも, メインメモリの 2 倍の スワップ空間が望ましく, + メモリがあまりない場合には, + おそらくそれより多く必要になります. また, + スワップパーティションのサイズは, + 後でパーティションをつくり直しする必要がないように + マシンに設定したいメモリ設定の最大値を基準に + 決めるべきでしょう. もし, クラッシュダンプをとりたい場合, + スワップパーティションは最低限メインメモリと同じの大きさで, + /var/crash にはダンプを保持するのに十分な + 空きがなければなければなりません. + + NFS 経由のスワップは, -4.x + 以降のシステムで完全に動作しますが, NFS サーバ側では, + ページングがその負荷の主な原因になることに + 注意しなければなりません. + + + + + diff --git a/ja_JP.eucJP/books/handbook/introduction/chapter.sgml b/ja_JP.eucJP/books/handbook/introduction/chapter.sgml new file mode 100644 index 0000000000..4d78c6bb1a --- /dev/null +++ b/ja_JP.eucJP/books/handbook/introduction/chapter.sgml @@ -0,0 +1,724 @@ + + + + はじめに + + FreeBSD は, Intel アーキテクチャ (x86) ベースの PC のための + 4.4BSD-Lite をベースとしたオペレーティングシステムです. FreeBSD + の概要については, FreeBSD + とはをご覧ください. このプロジェクトの歴史については, + FreeBSD 小史 をご覧ください. + 最新のリリースについての記述は, 現在のリリースについてをご覧ください. + FreeBSD プロジェクトへの何らかの貢献 (ソースコード, 機器, + 資金の提供など) について興味があれば, FreeBSD への貢献 + の章をご覧ください. + + + FreeBSD とは + + 原作: 不明. + + 訳: &a.jp.tomo;. + + FreeBSDはIntel社の (SXやDXも含めた) 386や486, Pentium + プロセッサ といった CPU + アーキテクチャに基づくパーソナルコンピュータ用としては + 現在求めうる最高水準のオペレーティングシステムです. + AMD社やCyrix社のIntel互換CPUもサポートされています. FreeBSDは, + 以前は高価なコンピュータでしか利用できなかった多くの + 高度な機能を提供します. + FreeBSDには次のような機能があります: + + + + アプリケーションとユーザとの間で円滑かつ公平に + コンピュータを 共有することを保証する, + 優先度を動的に調節する機能を備えた + プリエンプティブマルチタスキング. + + + + 多くの人々が1つのFreeBSD + システムをさまざまな目的で同時に 使うことを可能にする + マルチユーザ アクセス. また, + プリンタやテープドライブのようなシステムの周辺機器も + すべてのユーザ間で適切に共有されます. + + + + SLIPやPPP, NFS, NISのサポートを含んだ完全な + TCP/IPネットワーキング. これによって, + FreeBSDマシンが商用サーバと同じように相互に運用でき, NFS + (リモートファイルアクセス) + や電子メールサービスのような極めて 重要な機能を提供します. + また, WWWやftp, ルーティング, ファイアウォール + (セキュリティ) サービスを用いてインターネットと + 接続できます. + + + + アプリケーション (あるいはユーザ) がお互いに干渉できない + ようにするメモリ保護機能. + アプリケーションがクラッシュしても, どのような場合でも + 他のアプリケーションには影響を与えません. + + + + FreeBSD は 32ビット + のオペレーティングシステムであり, + 最初からそのようにこつこつと設計されました. + + + + 業界標準であるX Windowシステム + (X11R6) は, 普通のVGAカードやモニタでグラフィカルユーザ + インタフェース (GUI) を提供し, + すべてのソースコードも一緒に提供されます. + + + + SCOやBSDI, NetBSD, Linux, 386BSD用に作られた多くの + プログラムにおけるバイナリ互換性. + + + + 何百もの すぐに実行可能な + アプリケーションが FreeBSDの ports や + packages コレクション で利用可能です. + ここに用意されているものは + ネットを探し回る必要がありません + + + + インターネット上で入手可能な, + 移植が容易な + 何千ものアプリケーションを追加できます. FreeBSD + は最も評判の よい商用の Unix + システムとソースコードレベルで互換性があります. このため, + ほとんどのアプリケーションは, もしあったとしてもほんの + 少しの変更でコンパイルすることができます. + + + + デマンドページング 仮想メモリ + とそれに “付随の VM/buffer キャッシュ”の設計は, + 多くのメモリを要求する + アプリケーションに対して効率よくメモリを + 与えるようにする一方で, + 他のユーザに対しても対話的な応答を維持します. + + + + 共有ライブラリ + (MS-WindowsのDLLと同等のUnixの 機能) によって, + ディスクスペースとメモリを効果的に使用する + ことができます. + + + + 完全な 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 サーバ + + + + Gopher サーバ + + + + 電子メールサーバ + + + + USENET ニュース + + + + 電子掲示板システム + + + + さらにいろいろ... + + + + まずは高価ではない386クラスのPCで始めておいて, + 仕事の成長に合わせてアップグレードできます. + + + + 教育: + あなたは計算機科学または工学の学生ですか? + オペレーティングシステムやコンピュータアーキテクチャ, + ネットワーキングを学習するなら, FreeBSDを手に + 経験するのが一番よい方法です. 自由に利用できるCADや数学, + グラフィックデザインのパッケージもいくつもあり, + コンピュータに関心を持った人が 他の人 + の成果を 手に入れて利用するのにとても役に立ちます. + + + + 研究: + システム全体のソースコードが利用できるため, + FreeBSDはオペレーティングシステムの研究だけでなく, + 計算機科学の他の部門においても優れたプラットフォームです. + 自由に利用できるFreeBSDの特長は, オープンフォーラムで + 議論される特別なライセンスの同意や制限について + 心配することなく, 離れたグループでもアイディアや開発の共有に + よる共同研究を可能にします. + + + + ネットワーキング: + 新しいルータが必要? ネームサーバ (DNS) は? + 内部のネットワークを人々から守る ファイアウォールは? + FreeBSDはすみに眠っている使われていない386や486のPCを簡単に + 洗練されたパケットフィルタリング機能を持つ高級なルータに + 変えることができます. + + + + X Windowワークステーション: + 自由に利用できるXFree86サーバやX Inside社から提供される + 優れた商業サーバを使うことによって, 安価なX端末 + としてFreeBSDを使うこともできます. X端末とは違ってFreeBSDは + 多くのアプリケーションをローカルに走らせることもでき, + 中心のサーバの負荷を軽減することも可能です. + FreeBSDは“ディスクレス”でもブート可能であり, + 個々のワークステーションを安価で, 容易に管理することさえ + 可能にします. + + + + ソフトウェア開発: + 基本的なFreeBSDシステムには + 有名なGNUのC/C++コンパイラやデバッガ含んだ完全な開発ツールが + ついてきます. + + + + FreeBSDはCDROMまたはanonymous ftpによってソース, + バイナリとも 利用可能です. 詳しくは, FreeBSD の入手方法 + を見てください. + + + + FreeBSD 小史 + + 原作: &a.jkh;. + + 訳: &a.jp.masaki;, &a.jp.hino;. + 19 December 1996. + + 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 + 社に連絡してみまし た. CDROM を使って FreeBSD + を配布することによって, インターネットに容 + 易に接続できない多くの人々が FreeBSD + を簡単に入手できるようになると考 えたからです. Walnut Creek + CDROM 社は FreeBSD を CD で配布するというア + イデアを採用してくれたばかりか, + 作業するためのマシンと高速なインターネッ + ト回線を私たちのプロジェクトに提供してくれました. + 当時は海のものとも山 + のものともわからなかった私たちのプロジェクトに対して, Walnut + Creek CDROM 社が信じられないほどの信頼を寄せてくれたおかげで, + FreeBSD は短期 間のうちにここまで大きく成長したのです. + + CDROM による最初の配布 (そしてネットでの, + ベータ版ではない最初の一般向 け配布) は 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年の + 12月までかかり ました. そして 1995年の 1月に FreeBSD 2.0 + をネットと CDROM を通じて公 開しました. これは, + かなり粗削りなところが残っていたにもかかわらず, か + なりの成功を収めました. そしてその後に, より信頼性が高く, + そしてインス トールが簡単になった 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 年 7 + 月の終わりには最新版の 2.2.7 が登場しました. FreeBSD 3.0 + の初めての公式なリリースが 1998 年 10 月上旬に登場し, 2.2 + 開発分流からの最後のリリースである 2.2.8 が 1998 年 11 + 月に登場しまし た. + + 1999 年 1 月 20 日には, FreeBSD + の開発ツリーが再び分岐しました. 4.0-current と 3.x-stable + の分流です. 3.x-stable からは 3.1 が 1999 年 2 月 15 + 日にリリースされる予定です. + + 長期的な開発プロジェクトは 4.0-current 開発分流で続けられ, + スナップショットの CDROM (もちろん, ネットワーク上でも) + で公開されます. + + + + FreeBSDプロジェクトの目的 + + 原作: &a.jkh; + + 訳: &a.jp.kiroh; + 24 September 1996. + + FreeBSD + プロジェクトの目的は, いかなる用途にも使用でき, 何ら制限のない + ソフトウェアを供給することです. + 私たちの多くは, コード(そしてプロジェ + クト)に対してかなりの投資をしてきており, + これからも多少の無駄はあって も投資を続けて行くつもりです. ただ, + 他の人達にも同じような負担をするよ + うに主張しているわけではありません. FreeBSD + に興味を持っている一人の残 らず全ての人々に, + 目的を限定しないでコードを提供すること. これが, + 私たちの最初のそして最大の “任務” + であると信じています. そうすれば, コード は可能な限り広く使われ, + 最大の恩恵をもたらすことができるでしょう. これ + が, 私たちが熱烈に支持しているフリーソフトウェアの + 最も基本的な目的であ ると, 私は信じています. + + 私たちのソースツリーに含まれるソースのうち, + GNU一般公有使用許諾(GPL)ま + たはGNUライブラリ一般公有使用許諾(GLPL) + に従っているものについては, 多 少制限が科されています. ただし, + ソースコードへのアクセスの保証という, + 一般の制限とはいわば逆の制限(訳注1)です. + ただしGPLソフトウェアを商用で + 利用する場合, さらに複雑になるのは避けられません. + そのため, それらのソ フトウェアを, より制限の少ない BSD + 著作権に従ったソフトウェアで置き換え + る努力を, 可能な限り日々続けています. + + (訳注1) GPL では, 「ソースコードを実際に受け取るか, + あるいは, 希望しさ えすればそれを入手することが可能であること」 + を求めています. + + + + FreeBSDの開発モデル + + 原作: &a.asami;. + 18 October 1996. + + 訳: &a.asami;. + 31 October 1996. + + FreeBSD の開発は非常に開かれた, 柔軟性のあるプロセスです. + コントリビュータのリスト + を見ていただければわかる とおり, + FreeBSDは文字通り世界中の何百という人々の努力によって開発され + ています. 新しい開発者はいつでも大歓迎ですので, &a.hackers; + にメールを 送ってください. また, + 大勢で議論するよりは一人で静かに開発にふけりた + いという人は私たちのFTPサイト + ftp.freebsd.org + を使ってパッチや開発中のソースを公開してくださっ て結構です. + &a.announce; もありますので, 他のFreeBSDユーザに自分のやっ + ていることを宣伝したい時にはどうぞ使ってください. + + あと, FreeBSD プロジェクトとその開発プロセスについて, + どなたにも知って + いていただきたいのは以下のようなことです. + + + CVSリポジトリ + + + FreeBSDのソースツリーは + CVS (Concurrent Versions System) + によってメンテナンスされています. CVSはソー + スコード管理用のフリーソフトウェアで, + FreeBSDのリリースにも含まれてい ます. FreeBSD の メインの CVS + リポジトリ + は米国カリフォルニア州のコンコルド市に存在 し, + そこから世界中のたくさんのミラーサイトに + コピーされています. CVSツ リーそのもの, + そしてそのチェックアウトされたバージョンである-currentと-stableはあな + たのマシンにも簡単に取ってくることができます. + これについては + ソースツリーの同期 の章をご覧ください. + + + + ソースツリー管理者 + + + + ソースツリー管理者はCVSツリー + への書き込み権限を持っている人, + つまりFreeBSDのソースに変更を加えるこ とができる人です. + (CVSでリポジトリに変更を加えるには &man.cvs.1; + commit というコマンドを使うので, + これらの人々は英語では “committers” + と呼ばれます.) 開発者にコードを送って見てもらうのに一 + 番いい方法は &man.send-pr.1; コマンドを使うことです. もし, + 何か問題があって send-pr + が使えないならcommitters@freebsd.orgにメー + + ルを送っていただいても結構です. + + + + FreeBSDコアチーム + + + FreeBSD + コアチームはFreeBSDプロジェク + トが会社だとすると取締役会にあたるものです. + コアチームとして一番重要 な役割は FreeBSD + プロジェクトが全体としてよい方向に向かっていることを確 + 認することです. + 責任感あふれる開発者を上記のソースツリー管理者として + 招くこと, また仕事上の都合などでコアチームを + やめた人たちの後任を見つけ ることもコアチームの役割です. + 現在のコアチームのほとんどは最初は単な + る一開発者としてプロジェクトに関わりはじめ, + ずるずるといつのまにか深み + にはまってしまった人です. + + コアチームのうち何人かは特定の 担当分野 を持っており, + システムのうち一部に特に重点をおいて + 面倒を見ています. + + + 忘れてほしくないのはコアチームのほとんどは FreeBSD + についてはボラ ンティアであり, FreeBSD + プロジェクトからは何ら金銭的な支援を受けていな + いということです. ですから, ここでの “責任” + は “保証されたサポート” ではありません. + そういう意味で, + 上記の“取締役会”という例えはあまりよく + ないかもしれません. むしろ, + FreeBSDのために人生を棒に振ってしまった人 + の集まりといった方が正しいかも.... ;) + + + + + その他のコントリビュータ + + 最後になりますが, + もっとも重要で多数をしめる開発者はフィードバック + やバグフィクスをどんどん送ってくれるユーザ自身です. + FreeBSDの開発に外 郭から関わっていきたいという人は + &a.hackers; ( + メーリングリスト情報 を見てください) + に参加するといいでしょう. + + FreeBSD + のソースツリーに入っている何かを書いた人の リスト + は日に日に長くなっています. あ なたも今日, + 何か送ることからはじめてみませんか? :-) + + もちろんFreeBSD + に貢献するにはコードを書くほかにもいろいろな方法があ + ります. 助けが求められている分野については, + このハンドブックの 貢献の仕方 + の節を見てください. + + + + + ひとことで言うと, FreeBSD + の開発組織はゆるやかな同心円状になっています. + ともすると中央集権的に見えがちなこの組織は, + FreeBSDのユーザが + きちんと管理されたコードベースを + 容易に追いかけられるようにデザインされ ているもので, + 貢献したいという人を締め出す意図は全くありません! 私た + ちの目標は安定したオペレーティングシステムと + 簡単にインストールして使う ことのできるアプリケーションを提供することであ り, + この方法は結構うまくはたらくのです. + + これからFreeBSDの開発にたずさわろうという人に, + 私たちが望むことはただ 一つです: + FreeBSDの成功を継続的なものにするために, 現在の開発者と同じ + ような情熱を持って接してください! + + + + 現在のリリースについて + + FreeBSD は自由に利用でき Intel + i386/i486/Pentium/PentiumPro/Pentium II (とその互換 CPU) の + PCで動作する, 4.4BSD-Lite ベースの全ソー スつきのリリースです. + これはもともとカリフォルニア大学バーク レイ校 + CSRGグループのソフトウェアがベースとなっており, NetBSD, OpenBSD, + 386BSD, そして Free Software Foundation の + ソフトウェアなどにより拡張されています. + + 95年1月の FreeBSD 2.0 のリリースからみると, FreeBSD は性能, + 機能, 安定性の面で劇的に改善されました. + もっとも大きな変化は仮想メモリシステムに おける改良で, + 統合化された VM/file バッファキャッシュを用いる + ことで性能を向上させながらも FreeBSD + のメモリの使用量を減らすことが できたことです. おかげで, 最低 + 5MB メモリという制約上でも動作する ようになりました. + その他の拡張としては NIS のクライアントとサーバの 完全サポート, + トランザクション TCP のサポート, ダイヤルオンデマンド PPP, 改良 + SCSI サブシステム, ISDN の初期サポート, FDDI や Fast Ethernet + (100Mbps) などのサポート, Adaptec 2940 (WIDE と narrow) + のサポートの改良と数百件のバグの修正, などがあります. + + 私たちはたくさんのユーザからのコメントや + 提案をまじめに受け取り, 私たちが正しいと考え, + かつ導入の手順が分かりやすいものを提供しようと 努力しています. + この (継続的に進化する) プロセスに対するあなたの意見を + 心からお待ちしています. + + FreeBSD では基本配布セットに加え, 移植されたソフトウェア集 + として 数百の人気の高いプログラムを提供しています. 98年8月 + 下旬の時点で 1700 以上の ports (移植ソフトウェア) が存在します. + ports には http (WWW) サーバから, ゲーム, 言語, + エディタまでありとあらゆるものが含まれています. + portsはオリジナル + ソースに対する“差分”という形で表現されており, + すべての portsを 集めても 26MB程度にしかなりません. + こうすることで ports の更新を 容易にし, + portsに必要なディスクスペースを小さくすることができます. + portsをコンパイルするには, + インストールしたいと思っているプログラムの ディレクトリに移動し, + make all と実行してコンパイルが成 功したら, + make install とすると, あとはすべてシステムが + やってくれます. どの portsもオリジナルの配布セットを動的に + CDROM または近くの FTP サーバから取ってくるので, ディスクは + 構築したいと思っている portsの分だけを準備しておけば十分です. + ほとんどの portsは, すでにコンパイルされた状態で + “package” として提供されており, + ソースコードからコンパイルしたくない場 合, これを使うと (pkg_add + というコマンドで) 簡単にインストー ルできます. + + FreeBSD 2.1 以降のマシンであれば, + /usr/share/doc + ディレクトリにインストールの手順や FreeBSD を利用する上で有用な + ドキュメントがたくさんあります. + これらのローカルにインストールされたドキュメントは, HTML + ブラウザを使って, 以下の URL から 参照することができます. + + + FreeBSD ハンドブック (英文オリジナル) + + file:/usr/share/doc/handbook/handbook.html + + + + FreeBSD に関する FAQ + + file:/usr/share/doc/FAQ/FAQ.html + + + + + また, http://www.freebsd.org + にはマスタ (かなり頻繁に更新されます) がありますので, + こちらも参照してください. + + 合衆国の輸出規制のため, FreeBSD のコア配布セットには DES + のコードは 含まれていません. 合衆国国内に限り, DES + を使うプログラムなどが, + コア配布セットに加えるパッケージとして提供されています. + 誰でも使えるパッケージは, 別途, 合衆国国外で提供されています. + 合衆国国外からも自由に取得可能な DES の配布セットに関する + 詳細は, FreeBSD FAQ + にあります. + + FreeBSD 上で必要とされるセキュリティがパスワードだけであり, + Sun や DEC + などの別のホストから暗号化されたパスワードをコピーする必要が + ないのであれば, FreeBSD の MD5 ベースのセキュリティで十分です. + この標準のセキュリティモデルは DES + よりも適していると私たちは思って いますし, また, + やっかいな輸出規制にもひっかかることはありません. + あなたが合衆国国外にいるなら (あるいは国内にいても) + 一度試してみて ください! + + + + diff --git a/ja_JP.eucJP/books/handbook/jauthors.ent b/ja_JP.eucJP/books/handbook/jauthors.ent new file mode 100644 index 0000000000..cfe025cb9e --- /dev/null +++ b/ja_JP.eucJP/books/handbook/jauthors.ent @@ -0,0 +1,82 @@ + + +arimura@jp.FreeBSD.org"> + +candy@fct.kgc.co.jp"> + +condle@mcu.or.jp"> + +g92k0323@cfi.waseda.ac.jp"> + +graphite@jp.FreeBSD.org"> + +hino@ccm.cl.nec.co.jp"> + +ikuo@jp.FreeBSD.org"> + +iwasaki@jp.FreeBSD.ORG"> + +katsu@baum.kiyose.tokyo.jp"> + +kimura@netlab.is.tsukuba.ac.jp"> + +kiroh@jp.FreeBSD.org"> + +kmiyakoda@ctn.co.jp"> + +masaki@po.iijnet.or.jp"> + +Mihoko_Tanaka@yokogawa.co.jp"> + +mita@jp.FreeBSD.ORG"> + +miyasita@hashilab.ee.ous.ac.jp"> + + + +mrt@mickey.ai.kyutech.ac.jp"> + +nakai@mlab.t.u-tokyo.ac.jp"> + +nao@tom-yam.or.jp"> + +saeki@jp.FreeBSD.org"> + +shou@kt.rim.or.jp"> + +simokawa@jp.FreeBSD.org"> + +taka-su@is.aist-nara.ac.jp"> + +tmaruya@nnc.or.jp"> + +tomo@jp.FreeBSD.ORG"> + +ts@icu.ac.jp"> + +y-koga@ccs.mt.nec.co.jp"> + +yasu@hike.te.chiba-u.ac.jp"> + +yoshiaki@kt.rim.or.jp"> + +yuki@jp.FreeBSD.org"> + diff --git a/ja_JP.eucJP/books/handbook/jcontrib/chapter.sgml b/ja_JP.eucJP/books/handbook/jcontrib/chapter.sgml new file mode 100644 index 0000000000..c43843a7d1 --- /dev/null +++ b/ja_JP.eucJP/books/handbook/jcontrib/chapter.sgml @@ -0,0 +1,247 @@ + + + + FreeBSD Handbook 日本語化について + + FreeBSD 日本語ドキュメンテーションプロジェクトは, FreeBSD + 関係の日本語 ドキュメントが少ないことを嘆いた数人の FreeBSD + ユーザの提唱によって 1996年2月26日にスタートし, + その最初の作業として, FreeBSD Handbook + の日本語への翻訳を始めました. + 当初の予定から大幅に遅れながらもなんとか + 完成することができましたが, これで終りではありません. オリジナルの + FreeBSD Handbook は日毎に更新されており, 私たちもまた + これに追い付くために作業を続けていきます. もちろん, + 新しいメンバも大歓迎 です. 日本語翻訳版について, + 何かお気づきの点がありましたら, FreeBSD + 日本語ドキュメンテーションプロジェクト doc-jp@jp.FreeBSD.ORG + までご連絡ください. また, もし私たちの作業を手伝ってくれるなら, + FreeBSD + 日本語ドキュメンテーションプロジェクトのページ + をご覧の上, 是非参加してください. + + + 翻訳者 (五十音順) + + + + &a.asami; + + + + &a.jp.arimura; + + + + &a.jp.graphite; + + + + &a.jp.iwasaki; + + + + &a.jp.yoshiaki; + + + + &a.jp.candy; + + + + &a.jp.kimura; + + + + &a.jp.y-koga; + + + + &a.jp.masaki; + + + + &a.motoyuki; + + + + &a.jp.saeki; + + + + &a.jp.simokawa; + + + + &a.jp.sugimura; + + + + &a.jp.yasu; + + + + &a.jp.mihoko; + + + + &a.jp.ts; + + + + &a.jp.nakai; + + + + &a.jp.ikuo; + + + + &a.max; + + + + &a.hanai; + + + + &a.jp.kiroh; + + + + &a.jp.hino; + + + + &a.jp.shou; + + + + &a.jp.yuki; + + + + &a.jp.tmaruya; + + + + &a.jp.mita; + + + + &a.jp.kmiyakoda; + + + + &a.jp.miyasita; + + + + &a.jp.condle; + + + + &a.jp.tomo; + + + + + + 査読者 (五十音順) + + + + &a.asami; + + + + &a.jp.iwasaki; + + + + &a.jp.yoshiaki; + + + + &a.jp.g92k0323; + + + + &a.jp.y-koga; + + + + &a.jp.saeki; + + + + &a.jp.sugimura; + + + + &a.max; + + + + &a.hanai; + + + + &a.jp.nao; + + + + &a.jp.kiroh; + + + + &a.jp.hino; + + + + &a.jp.shou; + + + + &a.jp.yuki; + + + + &a.jp.mrt; + + + + + + ツール作成者 + + + + &a.jp.katsu; + + + + &a.jp.iwasaki; + + + + + + diff --git a/ja_JP.eucJP/books/handbook/kernelconfig/chapter.sgml b/ja_JP.eucJP/books/handbook/kernelconfig/chapter.sgml new file mode 100644 index 0000000000..4ab47cf1bc --- /dev/null +++ b/ja_JP.eucJP/books/handbook/kernelconfig/chapter.sgml @@ -0,0 +1,1698 @@ + + + + FreeBSDカーネルのコンフィグレーション + + 原作: &a.jehamby;. + 6 October 1995. + + 訳: &a.jp.tomo;, &a.jp.yoshiaki;. + 2 November 1996. + + この章はシステムに合わせたカーネルの再構築の基礎について + 述べたものです. この章は, システム管理の初心者から Unix + システム管理に十分な経験を積んだ人までを対象としています. + + + なぜカスタムカーネルを作るか? + + システムに合わせたカーネルの構築はすべての + Unixシステム管理者が + 避けて通ることのできない最も重要な通過儀礼の1つです. + この作業は, 多くの時間を必要としますが, あなたの FreeBSD + システムに多くの利益をもたらします. + GENERICカーネルは, + めったに使われることのないハードウェアをサポートするとともに, + 考えられるすべての SCSIカードやネットワークカードをサポート + しなければなりませんが, システムに合わせたカーネルは + あなたの PC + のハードウェアのみをサポートします. これは, + 次にあげるような利益をもたらします. + + + + あなたが持っていない + ハードウェアについては検出をおこなわな いので, + ブートにかかる時間が短くなります. + + + + システムに合わせたカーネルは多くの場合メモリ使用量が + 減ります. カーネルはいつもメモリ上に存在するので, + 不必要なコードがあると本来プログラムが利用できるはずの RAM + (実メモリ) を占めてしまいますのでこれは重要なことだ + といえます. したがって, メモリが少ないシステムでは, + カーネルの再構築は大変重要です. + + + + 必要に応じていくつかのカーネルオプションは調整すること + ができ, またサウンドカードのような GENERICカーネルには + ない + デバイスドライバをカーネルに含めることが できます. + + + + + + カスタムカーネルの構築とインストール + + まず, + カーネル再構築に必要なディレクトリをざっと見てみましょう. + ここではディレクトリはすべて + /usr/src/sys以下の相対位 置で示します. + また, /sysからもアクセス可能です. + ここには, カーネルの各部分を構成するサブディレクトリが + いくつもあります. しかし, 私たちの目的では 最も重要なのは + i386/confです. ここで, あなたの + システムに合わせてカーネル コンフィグレーションを編集します. + それから compileディレクトリ, + ここはカーネルが作られる 場所です. + サポートされているデバイスやファイルシステムのディレ + クトリツリーがオプション毎にサブディレクトリに分かれている論理 + 的構成に注意してください. また, + i386のディレクトリは + PCのハードウェアのみを扱い, + i386以外のディレクトリは + FreeBSDが他のプラットフォームに移植される際には共有されるコー + ドです. + + + もし, あなたのシステムに/usr/src/sys + 以下のディレクトリがなければ, + カーネルのソースが インストールされていません. + もっとも簡単な方法は (rootで) + /stand/sysinstall + を用いて以下のようにします. 設定(Configure) + を選んでから 配布ファイル(Distribution) + を選択し, src の中の sys + をインストールしてください. + + + + つぎに, i386/confに移動して, + GENERIC + コンフィグレーションファイルをカーネルに与えたい名前に + コピーしてください. たとえば: + + &prompt.root; cd /usr/src/sys/i386/conf +&prompt.root; cp GENERIC MYKERNEL + + 慣習として, この名前はすべて大文字でつづられます. もし, + いくつかの異なるハードウェアの FreeBSDマシンを扱うなら, + この名前にホスト名を含めるとよいでしょう. ここでは, 例として + MYKERNEL と呼ぶことにします. + + + この作業は root権限でおこなう必要があります. + そうでなければ, permission + deniedというエラーが出ます. + + + では, MYKERNEL + をあなたの好きなエディタで編集してください. もし, + システムをインストールしたばかりならば, 利用できる エディタは + viだけかもしれません. ここでは使い方 + の説明はしませんが, 参考図書 + にあるような多くの本で詳しく説明 されていますので, + そちらを参照してください. + まずファイルの最初の方のコメント行を編集し, あなたのコンフィグ + レーションに合せて変更した点などを記述して + GENERIC と区別がつく + ようにしておきましょう. + + もし SunOSや他の BSDオペレーティングシステムでカーネルの + 再構築をしたことがあれば, このファイルはとても親しみ + やすいでしょう. しかし, DOSのようなその他の + オペレーティングシステムしか知らない人から見れば, + GENERIC + コンフィグレーションファイルはとても + なじみにくいものかもしれません. そのような場合は, コンフィグレーションファイル + の節をゆっくりと注意深く読んでください. + + + 古いバージョンの FreeBSD からアップグレードを + おこなう場合, + 新しいカーネルソースを得た場所より新しいバージョンの + &man.config.8; を取ってくる必要があるかもしれません. これは + /usr/src/usr.sbinにあります. + したがってこれらのソースをダ ウンロードする必要があります. + 次のコマンドを実行する前に + (configを)作りインストールをしておいてください. + + + 編集し終ったら, 次のコマンドによってコンパイル, インストール + を行ってください. + + &prompt.root; /usr/sbin/config MYKERNEL +&prompt.root; cd ../../compile/MYKERNEL +&prompt.root; make depend +&prompt.root; make +&prompt.root; make install + + 新しいカーネルはルートディレクトリに + /kernelという 名前でコピーされ, + 今までのカーネルは /kernel.old + という名前へ変更されます. では, システムをシャットダウン, リブー + トして新しいカーネルを使ってください. うまく行かない場合は, + この章の終りの 問題が起きた場合には + を参照してください. この章の新しい カーネルがブートしない + 場合のリカバリの方法を注意深く読んでおいてください. + + + (サウンドカードのような)新しいデバイスを 追加した場合は, + 使う前に /devディレクトリで + デバイスノードを追加しなければならないかもしれません. + 詳しくは, デバイスノード + を読んでください. + + + + + コンフィグレーション ファイル + + コンフィグレーション ファイルの一般的なフォーマット + はとてもシンプルです. 各行は1つのキーワードと1つ以上の + 引数を含んでいます. 見やすくするために, ほとんどのキーワードは + 引数を1つしか書いてありません. + #に続くものはすべてコメントとして扱われ, + 無視されます. ここでは, それぞれのキーワードについて だいたい + GENERIC に出てくる順番で説明します. しかし, + お互いに関係のあるキーワードは, 実際には + GENERIC ファイル上に + バラバラに現れていても, (ネットワーキングのように)1つにまとめ + てあります. おびただしい数の + オプションの一覧が + GENERICと同じディレクトリの + LINT コンフィグ + レーションファイルにあります. もし, ある行の目的や必要性に疑 + 問を持ったら最初に LINT + をチェックしてください. + + カーネルは現在, オプションを扱う方法をよりよい機構に移行しよ + うとしています. 従来は, 各々のオプションは単純にカーネルの + Makefile中の CFLAGS行の + スイッチに変換されて いました. + 自然とオプションは際限なく増えて行きます. だれも実際に + はどのオプションがどのファイルで参照されているかは知りません. + + + 新しい方法では, すべてのオプション依存の + #ifdefは当該オプショ ンを + opt_foo.h + (これらのファイルはconfigによって + compileディレ クトリに作られます) + から読み込むように変わりました. config + の有効なオプションのリストは2つのファイルにお かれます. + アーキテクチャに依存しないオプションは + /sys/conf/optionsに置かれ, + アーキテクチャ依存のオプショ ンは + /sys/arch/conf/options + に置かれます. arch の部分は例えば + i386となります. + + + 必須キーワード + + ここにあるキーワードはカーネルの構築に必要不可欠です. + + + + machine "i386" + + 最初のキーワードは machineです. + FreeBSDは Intelの 386とその互換チップ上でしか + 動かないので, i386を指定します. + + + 数字を含むキーワードはすべて + クォーテーションマークで囲む必要があります. + そうしないと, configは混乱し, + 386を実際の数値として扱ってしまいます. + + + + + cpu "cpu_type" + + 次のキーワードは cpuです. + FreeBSDでサポートしている CPUの中から記述します. + cpu_typeとして指定可能な値は + 次の通りです. + + + + I386_CPU + + + + I486_CPU + + + + I586_CPU + + + + I686_CPU + + + + GENERIC カーネルのように + cpuの行の + cpu_type + が異なった値を持つものが 複数あってもかまいません. + カスタムカーネルでは, あなたが持っている + cpuを1つだけ指定するのが 一番です. 例えば, もし Intelの + Pentiumを持っていれば, + cpu_typeには, + I586_CPU を使ってください. + + + + ident machine_name + + 次は, + カーネルの識別名となるidentです. + GENERIC + からあなたがカーネルに与えたい名前に 変えてください. + ここでは, MYKERNEL とします. + identに与えた名前はカーネルの + ブート時に表示されるので, 普段のカーネルとは別に + カーネルに違う名前を与えたいとき(例えば, + 実験用のカーネルを作りたい時など), 便利でしょう. + 数字を含む名前にしたい場合は + machinecpu + の時と同じようにクォーテーションマークで + 囲む必要があります. + + C コンパイラに + スイッチで渡されるので, + DEBUGのような名前にしたり, + vax + といった他のCPUの名前など紛らわしい名前にしないで + ください. + + + + maxusers number + + これは, 重要なシステムテーブルのサイズを決めます. + ここ + で与えられる数字はマシンに同時にログインすると考えられ + るおよそのユーザ数です. しかし, 通常の使用環境であれば, + 特に X Window System を立ち上げたり, ソフトウェアを + コンパイルするような使用であれば + maxusersには少 なくとも + 4 以上を指定したほうがいいでしょう. + その理由は, maxusers + で決るテーブルで最も重要なものはプロセス + の最大数であるからです. プロセス最大数は 20 + + 16 * maxusersで与えられ, + maxusers1 + にすると36プロセスしか同時には持てません. この中にはブー + ト時にシステムによって起動する18個ぐらいのプロセス, Xを + 起動する時の15程度のプロセスも含みます. + manページを読むという1つのタスクでさえ, フィ + ルタやファイル伸長や表示のために9つのプロセスを起動し + ます. maxusers4 + にすれば, 同時に84個のプロセ + スを持つことができるのでどんな人でも十分な数だといえる + でしょう. それでも他のプログラムを起動した場合に, + あるいは, (Walnut Creek CDROMのFTPサイトのように) + 同時に多くの ユーザを抱えるサーバを走らせた場合に + proc table full + というおぞましいエラーが起きる場合はこの値を増や し, + カーネルを再構築してください. + + + maxuserはあなたのマシン + にログインできるユーザの数を制限するものでは + ありません. 単に, + あなたのシステムに + ログインするユーザ数の最大値と各々のユーザが + いくつのプロセスを走らせるかを考慮することに + よってさまざまなテーブルの値を適切な値に設定 + するだけです. これに対し, pseudo-device pty + 16の remote + loginsというキーワードは + 同時にリモートログインできるユーザ数を制限 + します. + + + + + config kernel_name root on root_device + + これはカーネルの位置と名前を特定します. + 伝統的にカーネルは + vmunixと呼ばれますが, FreeBSDでは + kernelとふさわしい名前になりました. + kernel_nameにはいつも + kernel を 使ってください. + 名前を変えると多くのシステム + ユーティリティが使えなくなります. 2番目の部分は + ルートファイルシステムとカーネルのあるディスクと + パーティションを指定してください. + SCSIドライブでなければ, wd0を, + SCSIドライブならば sd0です. + + + + + + + 一般的なオプション + + 以下はカーネルのサポートするさまざまなファイルシステムおよ + びその他のオプションです. + + + options MATH_EMULATE + + これは, 数値演算コプロセッサがない コンピュータ + (386や486SX) で数値演算コプロセッサ + のエミュレーションを可能にします. もし, Pentiumや 486DX, + あるいは387や487があれば, コメントアウト + できます. + + + FreeBSD付属の数値演算 + コプロセッサエミュレータはあまり正確では + ありません. + 非常に正確な計算をおこないたい ならば, より優れた + GNUのエミュレータである + GPL_MATH_EMULATEに変えることを + おすすめします. これはライセンスの関係でデフォルトでは + 含まれていません. + + + + + options "COMPAT_43" + + 4.3BSDとの互換性のためのオプションです. + そのままにしておいてください. コメントアウトすると, + いくつかのプログラムで動作がおかしくなります. + + + + options BOUNCE_BUFFERS + + ISAデバイスやISA互換モードで動作する EISAデバイス + では DMA (Direct Memory Access) は16MB以下のメモリに対し + てのみ動作します. このオプションによりメモリが16MB以上 + のシステムで DMA + を使うデバイスを動作させることができます. + + + + options UCONSOLE + + ユーザがコンソールを横取り (grab) + できるようにします. これは X Window System + 上で便利です. 例えば, コ ンソール xtermを xterm + -Cとタイプして作ると, そこに + write, talk + などのメッセージがカーネルからコ + ンソールへ送られるメッセージと同じように表示されます. + + + + + options SYSVSHM + + このオプションは System V の共有メモリを提供します. + X Window System の XSHM拡張での利用がもっとも一般に見 + られる例で, 多くのグラフィックを多用したプログラム + (movie player の Xanimや Linux DOOMなど) ではこれを + 利用することで速度が増加するというメリットがあります. X + Window System を利用するのであればこれは間違いな + く含めたくなるでしょう. + + + + options SYSVSEM + + System V のセマフォをサポートします. + 一般的に利用される + ことは少ないですがカーネルサイズの増加は数百バイトだ + けです. + + + + options SYSVMSG + + System V のメッセージをサポートします. + これを指定した場 + 合もカーネルサイズの増加は数百バイトだけです. + + + &man.ipcs.1; コマンドは これらの System V + の機構を利用しているプロセスを表示し ます. + + + + 訳注: 共有メモリ, セマフォ, + メッセージ(メッ セージキュー) は System V系 + で一般的なプロセス間通信の機 構です. くわしくは System + Vのプロセス間通信に関する文 献, 「詳解 + UNIXプログラミング」 (ソフトバンク) , 「UNIXネッ + トワークプログラミング」 (トッパン) + などを参照してくださ い. + + + + + + + + ファイルシステムオプション + + これらのオプションはさまざまなファイルシステムへのサポート + を追加します. 少なくともブートするためのデバイスのサポートを含 + める必要があります. 標準的にはハードディスクからブートするので + あれば FFS , + ディスクレスワークステーションとしてイー + サネットからブートするのであれば NFSです. + 一般的に利用される他のファイルシステムをカーネルに含め, あまり + 利用しないファイルシステム (多分 MS-DOSファイルシステム?) + のサポー トをコメントアウトすることができます. これは Loadable + Kernel Module ディレクトリ /lkm から, + 最初にそのタイプのファイ ルシステムがマウントされる時に + 動的にドライバがロードされるからです. + + + options FFS + + 基本的なハードドライブ ファイルシステムです. + ハードディ + スクからブートする場合は残しておいてください. + + + + options NFS + + ネットワーク ファイルシステムです. Ethernet経由で + Unixファ + イルサーバからパーティションをマウントする予定がない場 + 合はコメントアウトすることができます. + + + + options MSDOSFS + + MS-DOS ファイルシステムです. ブート時に + DOSフォーマット のハード + ドライブをマウントする予定のない場合はコメン + トアウトしても安全です. 先に示したように, DOSパーティ + ションをマウントする時に自動的にロードされます. また + (ports コレクションにある) + mtools という素晴 + らしいソフトウェアにより mount , unmountなしで DOSフロッ + ピーにアクセスすることができます (これは MSDOSFSも必要 + ありません). + + + + options "CD9660" + + CD-ROMのための ISO 9660 ファイルシステムです. + CD-ROMを 持っていないか, 時々 データ + CDをマウントするだけならコ メントアウトしましょう + (データ CDを最初にマウントする + 時に動的にロードされます). オーディオ CDはこのファイル + システムは必要ありません. + + + + options PROCFS + + プロセス ファイルシステムです. + これは疑似的なファイルシ ステムで + /proc にマウントされ, + &man.ps.1; などのプロ + グラムがプロセスに関してより詳しい情報を与えてくれるよ + うになります. + + + + options MFS + + メモリマップド ファイルシステムです. + これは基本的に一時 ファイルを記憶するための高速な + RAMディスクで, 大きな swap領域がある場合に有効です. + MFSパーティションをマウ + ントするに適した場所は多くのプログラムが一時ファイルを + 置く /tmpです. MFS RAMディスクを + /tmp にマウントするには以下の内容を + /etc/fstabに追 加してリブートするか + mount /tmpとタイプします. + + +/dev/wd1s2b /tmp mfs rw 0 0 + + + /dev/wd1s2bをあなたが使用して + いるswap パーティションに置き換えてください. これは以 + 下のように /etc/fstab + に書かれているでしょう. + + + +/dev/wd1s2b none swap sw 0 0 + + + + また, MFS ファ + イルシステムは動的にロードすることは + できません . + したがって使いたい場合はコンパイル時に カーネルに + 含める必要があります. + + + + + options "EXT2FS" + + Linux のファイルシステム. ext2fs のサポートにより, + Linux パーティションを読み書きすることができます. + これは, FreeBSD と Linux + のデュアルブートシステムにおいて + 両者でデータを共有したい場合に有用です. + + + + options QUOTA + + ディスククォータを有効にします. + アクセスが公開されてい るシステムで (一人のユーザが) + /homeパーティショ ン (全体) + をあふれさせることができないようにそれぞれのユーザ + にディスククォータを発行することができます. + ディスククォータについての詳しい内容はディスク + クォータの章を見てください. + + + + + + + 基本的なコントローラとデバイス + + この節では FreeBSDでサポートされているディスク, テー プ, + CD-ROMコントローラについて示します. SCSI コントローラと ネットワーク + カードについ ては別の節になっています. + + + controller isa0 + + FreeBSD のサポートするすべての PCで必要です. IBM + PS/2 (マイ クロチャネルアーキテクチャ) では現時点では + FreeBSDは動 きません. + + + + controller pci0 + + PCIバスを持つマザーボードの場合は含めます. + これにより PCIカードの自動認識と PCIから + ISAバスへのゲートウェイが 可能になります. + + + + controller fdc0 + + フロッピードライブコントローラです. + fd0A: + ドライブで fd1 は + B: ドライブです. + ft0 は + フロッピーコントローラに接続する QIC-80 テープドライブで + す. 対応するデバイスがない場合はそれぞれの行をコメント + アウトしてください. + + + QIC-80テープのサポートは別に + &man.ft.8; というフィルタプログラムが必要です. + くわしくはマニュアルページを見てください. + + + + + controller wdc0 + + プライマリIDEコントローラです. + wd0 と + wd1はそれぞれマスタ, + スレーブドライブで す. wdc1 は + セカンダリの IDEコントローラで3台 目, + 4台目のハードディスクまたは IDE CD-ROMのある場合に + 使います. 利用しない行はコメントアウトしてください (例え + ば, SCSIハードディスクのみを使う場合は6行全部をコメント + アウトしてもよいかもしれません). + + + + device wcd0 + + このデバイスは IDE CD-ROMのサポートをします. + wdc0を有効にしておく必要があり, もし + 2つ以上の IDE コントローラがあり, そのうちの + 2つ目のカードに CD-ROMを接 続する場合 + wdc1 も必要です. また + options + ATAPIを書いておく必要もあります. + + + + device npx0 at isa? port "IO_NPX" irq 13 vector npxintr + + npx0 は FreeBSD + ハードウェアコプロセッサとソフト + ウェアエミュレータ両方の浮動小数点演算ユニットへのインタ + フェースです. これは 不可欠 + です. + + + + device wt0 at isa? port 0x300 bio irq 5 drq 1 vector wtintr + + Wangtek と Archive の QIC-02/QIC-36 + テープドライブのサポートです. + + + + Proprietary CD-ROM support + + 以下のようなドライブを + proprietary(独自の) CD-ROM + ドライブと呼ぶことにします. これらのドライブは専 + 用のコントローラを持つか, サウンドブラスタ16などのサウ + ンドカードに接続します. これらは IDEでも + SCSIでもあ りません. + 多くの標準速や2倍速の古い CD-ROMはこれら + のインタフェースを持っていますが, より新しい四倍速の + ものは IDE か + SCSI + でしょう. + + + device mcd0 at isa? port 0x300 bio irq 10 vector mcdintr + + ミツミ製 CD-ROM (LU002, + LU005, FX001D)です. + + + + device scd0 at isa? port 0x230 bio + + ソニー製 CD-ROM (CDU31,CDU33A)です. + + + + controller matcd0 at isa? port ? bio + + 松下/パナソニック製 CD-ROM (サウンドブラスタ用 + クリエィティブ ラボ製として販売されていました) + です. + + + + + + + + + + SCSI デバイスのサポート + + この節では FreeBSDのサポートするいろいろな SCSIコント + ローラとデバイスのサポートについて書きます. + + + SCSI コントローラ + + 以下の十数行は異る種類の + SCSIコントローラのサポートです. + 使用しているもの以外の部分は + コメントアウトしてください. + + + controller bt0 at isa? port "IO_BT0" bio irq ? vector btintr + + ほとんどの Buslogic社のコントローラです. + + + + controller uha0 at isa? port "IO_UHA0" bio irq ? drq 5 vector uhaintr + + UltraStor 14F と 34F です. + + + + controller ahc0 + + Adaptec 274x/284x/294x です. + + + + controller ahb0 at isa? bio irq ? vector ahbintr + + Adaptec 174x です. + + + + controller aha0 at isa? port "IO_AHA0" bio irq ? drq 5 vector ahaintr + + Adaptec 154x です. + + + + controller aic0 at isa? port 0x340 bio irq 11 vector aicintr + + Adaptec 152x や + サウンドカードなどに使われている Adaptec AIC-6360 + チップです. (slow!) + + + + controller nca0 at isa? port 0x1f88 bio irq 10 vector ncaintr + + NCR 5380を使っている ProAudioSpectrum や + Trantor T130 で す. + + + + controller sea0 at isa? bio irq 5 iomem 0xc8000 iosiz 0x2000 vector seaintr + + Seagate ST01/02 8 ビットコントローラです. + (slow!) + + + + controller wds0 at isa? port 0x350 bio irq 15 drq 6 vector wdsintr + + Western Digital WD7000コントローラです. + + + + controller ncr0 + + NCR 53C810, 53C815, 53C825, 53C860, 53C875 + チップを使った PCI SCSI コントローラです. + + + + + + + options "SCSI_DELAY=15" + + このオプションによりカーネルはそれぞれの + SCSIデバイスを プローブする前に 15秒間待ちます. + IDEドライブのみを使用 している場合は無視して構いません. + ブートを速くするため にこの数値を + 5秒ぐらいまで小さくしたいでしょう. そうし た場合, + FreeBSDが SCSIデバイスを認識しにくくなるかもし れません. + その時は, もちろんこのオプションの値は元に戻 + さないといけません. + + + + controller scbus0 + + SCSIコントローラがある場合, この行で + SCSI全般のサポー トを与えます. SCSIのない場合, + この行と以下の3つの行をコメ + ントにすることができます. + + + + device sd0 + + SCSIハードディスクのサポートです. + + + + device st0 + + SCSIテープドライブのサポートです. + + + + device cd0 + + SCSI CD-ROM のサポートです. + + 上のエントリについている + 0はいくらか誤解を招き + やすいかもしれません. これらのデバイスはすべてカーネルが + 見つけた時に割り当てがおこなわれ, + SCSIバスに何台つながってい るか, ターゲット + IDが何番であるかはここの記述とは関係あ りません. + + 明示的に “固定的な”ターゲット + IDの特定のデバイスへの 割り当てをおこないたい場合は + LINT + カーネルコンフィグレーションファイルの + 該当する部分の説明を参照してください. + + + + + + + コンソール, バスマウス, Xサーバのサポート + + 2 つのタイプのコンソールからどちらか 1 + つを選ぶ必要があります. 標準ではない方の vt220 + コンソールを選んだ場合, X Window System を利用するには XSERVER + オプションを有効にする必要があります (訳注: sc0 には XSERVER + オプション相当の機能が始めから入っています). + またバスマウスと PS/2 マウスのオプションもあります. + + + device sc0 at isa? port "IO_KBD" tty irq 1 vector scintr + + sc0 + はデフォルトのコンソールドライバで SCOコン + ソールに似ています. このデバイス, あるいは VT220コンパ + チブルドライバの + vt0いずれを使う場合もほとんど + のフルスクリーンプログラムは + termcapなどのターミ + ナルデータベースライブラリを通してアクセスしますので, + あまり違いはないでしょう. + このコンソールを使う場合でフルスクリーンプログラムでト + ラブルが起きる場合にはログインした時に + TERM変数の値を + “scoansi”にしてください. + + + + device vt0 at isa? port "IO_KBD" tty irq 1 vector pcrint + + + これはVT-220コンパチブルコンソールドライバで + VT100/102の 上位互換です. これは + sc0の使えない種類のラッ + プトップ機でもうまく動きます. ログイン時に + TERM変数の値 を>vt100 + か vt220にしてください. また, + このドラ + イバはネットワークを介して多くの異るマシンから接続する + 場合も便利です. + sc0デバイスのための + termcapや + terminfoエントリは必ずしも + 利用できるわけではありませんが — + vt100はいずれの + プラットフォームでも利用可能でしょう. + + + options "PCVT_FREEBSD=210" + + vt0 + コンソールドライバを使う場合に必要で す. + + + + options XSERVER + + vt0 + コンソールドライバを使う時のみ有効です. これは + vt0 コンソールドライバのもとで + XFree86 X + サーバを動かすのに必要なコードを含めます. + + + + + + + device mse0 at isa? port 0x23c tty irq 5 vector ms + + Logitech や + ATIのバスマウス入力カードを利用する場合のデ + バイスです. + + + シリアルマウスを使う場合にはこれら2つ + の行(バスマウスとPS/2マウスに関する行) は無視して, + 代わりに シリアル + ポート(おそらくはCOM1)を有効にしてくだ さい. + + + + + device psm0 at isa? port "IO_KBD" conflicts tty irq 12 vector psmintr + + このデバイスは + PS/2マウスポートにマウスを接続する場合に + 使います. + + + + + + + シリアル, パラレルポート + + ほとんどすべてのシステムにこれらはあります. + プリンタを接続す る場合は プリンタの利用の章が非常 + に役に立つでしょう. モデムを使う場合は ダイヤルアップ アクセス + に非常に詳しいシリアルポートの設定とデ + バイスの使い方があります. + + + device sio0 at isa? port "IO_COM1" tty irq 4 vector siointr + + sio0からsio3は + MS-DOSにおける COM1から + COM4に相当する4本のシリアルポートです. + COM4に内蔵モデムがあり COM2を使う場合, FreeBSDからアク + セスするためにはモデムのIRQを2へ変更する必要があるとい + うことを注意しておきます (技術的な理由より IRQ 2 = IRQ + 9となります). + マルチポートシリアルカードを使う場合にマニュアルページ + の &man.sio.4; にはこのオプションで使う値などのよ + り多くの情報があります. ビデオカードの中には (特に S3 + チップベースのものには) IOアドレスの + 0x*2e8から を利用するものがあり, + また多くの安価なシリアルカードは + IOアドレス空間を16-bitフルデコードしていませんので, こ + れらのカードは衝突します. この場合 COM4ポートは実質上 + 利用できません. + + それぞれのシリアルポートは + (割込みの共有をサポートした + マルチポートカードを利用していないのであれば) 別々の IRQ + を割り当てる必要がありますので COM3と COM4のデフォルトの + IRQは利用できません. + + + + device lpt0 at isa? port? tty irq 7 vector lptintr + + lpt0 から + lpt2は利用可能な3本のプリン + タポートです. 多くの場合は1本のみですので他の2本はない + のであればコメントアウトして構いません. + + + + + + + ネットワーク + + FreeBSDでは他の一般的な + Unixと同様にネットワークが非常に + 重視されています. イーサネットカードが + なくても必須のオプションとダイヤルアップ ネットワークのサポー + トに注意してください. + + + options INET + + ネットワーキングのサポートです. + ネットワークに接続する予定がな + くても残しておいてください. + 多くのプログラムは少なくともループ + バックネットワーキングが必要です(つまり, + PCの中でネットワーク コネクションをおこないます). + したがってこのオプションは本質的 に不可欠です. + + + + Ethernet cards + + 以下にさまざまなイーサネットカードを + 有効にするオプショ ンを示します. + ネットワークカードがなければこれらすべてを + コメントアウトすることができます. そうでなければ利用す + る特定のイーサネットカードをサポートするオプションを残 + しておきます. + + + device de0 + + DECの DC21040, DC21041, DC21140チップを使った + PCIイー サネットアダプタです. + + + + device fxp0 + + Intel EtherExpress Pro/100B + 高速イーサネットカード です. + + + + device vx0 + + 3Com の 3C590, 3C595です (いくらか + bugがあります). + + + + device cx0 at isa? port 0x240 net irq 15 drq 7 vector cxintr + + Cronyx/Sigma の + マルチポート同期/非同期カードです. (with Cisco or + PPP framing) + + + + device ed0 at isa? port 0x280 net irq 5 iomem 0xd8000 vector edintr + + Western Digital と SMC の 80xx, 8216 Elite + Ultra ; ノベル NE1000, NE2000; 3Com の 3C503; + HPの PC Lan Plus (HP27247B とHP27252A) + です. + + + + device el0 at isa? port 0x300 net irq 9 vector elintr + + 3Com の 3C501 です. (slow!) + + + + device eg0 at isa? port 0x310 net irq 5 vector egintr + + 3Com の 3C505です. + + + + device ep0 at isa? port 0x300 net irq 10 vector epintr + + 3Com の 3C509 です(バグがあります). + + + + device fe0 at isa? port 0x240 net irq ? vector feintr + + 富士通 MB86960A/MB86965A + ベースのイーサネットカード です. + + + + device fea0 at isa? net irq ? vector feaintr + + DEC DEFEA EISA FDDI アダプタです. + + + + device ie0 at isa? port 0x360 net irq 7 iomem 0xd0000 vector ieintr + + AT&T StarLAN 10 と EN100; 3Com の 3C507; + NI5210; Intel EtherExpress 16 です. + + + + device le0 at isa? port 0x300 net irq 5 iomem 0xd0000 vector le_intr + + DEC の EtherWorks 2 and EtherWorks + 3 (DEPCA, DE100, DE101, DE200, DE201, DE202, + DE203, DE204, DE205, DE422)です. + + + + device lnc0 at isa? port 0x300 net irq 10 drq 0 vector lncintr + + Lance/PCnet カード (Isolan, Novell NE2100, + NE32-VL)です. + + + + device ze0 at isa? port 0x300 net irq 5 iomem 0xd8000 vector zeintr + + IBM/ナショナルセミコンダクタの PCMCIA + イーサネット コントローラです. + + + + device zp0 at isa? port 0x300 net irq 10 iomem 0xd8000 vector zpintr + + 3Com の PCMCIA Etherlink III です. + + + + + + いくつかのカードでは (特に NE2000では) + “標準値” がありませんので + IOポートやIRQの値を変更す + る必要がある場合があります. + + + + + pseudo-device loop + + loop は + TCP/IPの一般的なループバックデバイスで す. telnet や + FTPを localhost (127.0.0.1) + に対して行なうとこの疑似デバイスを通して帰ってきます. + 不可欠です. + + + + pseudo-device ether + + ether + はイーサネットカードがある場合のみ必要で + 一般的なイーサネットプロトコルを含めます. + + + + pseudo-device sl number + + sl は SLIP (Serial Line Internet + Protocol) をサポー トします. これはほとんど完全に, + より簡単に設定ができ, モ デム to モデム接続に適した, + よりパワフルな PPPに取って代 わられています. + slの後の + number は同 時にいくつの + SLIPセッションをサポートするかを示します. + SLIPの設定のより詳しい情報はこのハンドブックの + 「PPPとSLIP」の章の SLIPクライアントのセットアップ + と SLIP + サーバのセットアップ方法 + について書かれた節にあります. + + + + pseudo-device ppp number + + pppはダイヤルアップ + インターネット接続のための カーネルモード PPP + (Point-to-Point Protocol) をサポート します. + ユーザアプリケーションとしてtun + を 利用する PPPの実装もあり, + こちらはより柔軟性がありデマ + ンドダイアリング(プログラムが接続要求を出した時に自動 + 的にダイヤルをおこなう)などの機能もあります. それでもこ + の PPPドライバを利用したい場合は カーネル PPP の設定 + の節を読んでください. + slデバイスと同じように + numberは同時 に + PPP接続できる数を示します. + + + + pseudo-device tun number + + tun はユーザモード + PPPソフトウェアが利用しま す. + このプログラムは設定が簡単で非常に高速です. + また自動ダイヤル オン デマンドなどの機能を持ちます. + tunの後のnumber + は同時におこなうことのできる + PPPセッションの数を示します. ユーザ PPP のセットアップ + の節により多くの情報があ ります. + + + + pseudo-device bpfilter number + + バークレイ パケットフィルタです. + この疑似デバイスはネッ トワークインタフェースを無差別 + (promiscuous) モードにし てネットワーク + (例えば単一のイーサネット) にブロードキャス + トされるすべてのパケットを取り入れることを可能にします. + こ れらのパケットはディスクに取り入れられたり + &man.tcpdump.1; によって検査されます. この機能の実現 + はネットワーク全体のセキュリティとの微妙な妥協点であるこ + とに注意してください. bpffilter の後の + numberは同時に検査することの + できるインタフェースの数を示します. + 危険の可能性について十分解っている場合を除いてこのオプ + ションは奨めません. すべてのネットワークカードでこの機能 + をサポートをしてはいません. + + + + + + + サウンドカード + + ここは + GENERICカーネルに含まれていない最初のセクションです. + サウンドカードのサポートをするためには LINTコンフィグレーショ + ンファイル(これには すべての + デバイスが含まれています)か + ら以下のような適切な行をコピーする必要があります. + + + controller snd0 + + サウンドドライバ一般のコードです. + pca + を除く以下のすべてのサウンドカードで必要で す. + + + + device pas0 at isa? port 0x388 irq 10 drq 6 vector pasintr + + ProAudioSpectrum のオーディオ と MIDI です. + + + + device sb0 at isa? port 0x220 irq 7 conflicts drq 1 vector sbintr + + SoundBlaster です. + + + SoundBlaster の IRQが標準と異る値, 例えば + 5になっている場合, irq + 7irq 5に書き換え, + キーワード conflictsを削除し + てください. さらに options + "SBC_IRQ=5"の行を + 加える必要があります. + + + + + device sbxvi0 at isa? drq 5 + + SoundBlaster 16 の 16-bit オーディオです. + + + SB16の DMAチャネルが標準と異っている( 例えば + 6か7)キーワード drq + 5を適切な値に書き直 して, (DMA 6の場合) + options "SB16_DMA=6"を付け + 加えてください. + + + + + device sbmidi0 at isa? port 0x330 + + SoundBlaster 16 の MIDI インタフェースです. + SoundBlaster 16を使う場合必ずこの行を含めてコンパイル + してください. + + + + device gus0 at isa? port 0x220 irq 10 drq 1 vector gusintr + + Gravis Ultrasound です. + + + + device mss0 at isa? port 0x530 irq 10 drq 1 vector adintr + + Microsoft Sound System です. + + + + device opl0 at isa? port 0x388 conflicts + + AdLib FMシンセサイザオーディオです. AdLib, + SoundBlaster, ProAudioSpectrum を使い + playmidi (ports にあります) + などのプログラムで + MIDIの演奏をしたい場合にこの行を含めます. + + + + device mpu0 at isa? port 0x330 irq 6 drq 0 + + Roland MPU-401 カードです. + + + + device uart0 at isa? port 0x330 irq 5 vector "m6850intr" + + MIDIインタフェースの 6850 UART です. + + + + device pca0 at isa? port "IO_TIMER1" tty + + PC のスピーカーを使ったオーディオです. + これは非常に品質 が悪く, CPUの性能, + 負荷に強く依存します, と言っておき ます + (サウンドカードは必要ありませんが). + + + + + + 追加のドキュメントが + /usr/src/sys/i386/isa/sound/sound.doc + にあります. また, これらのデバイスを追加する場合は, + サウンドデバイスノード + を作る必要があり ます. + + + + + 疑似デバイス + + 疑似デバイスドライバはデバイスドライバと同様に働きますがマ + シン上に対応する実際のハードウェアがないカーネルの部分です. + ネットワーク関連の + 疑似デバイスはそちらのセクションに示しました. ここでは残りにつ + いて示します. + + + pseudo-device gzip + + gzipは + gzipによって圧縮された FreeBSDの + プログラムを実行できるようにします. /standにあるプログ + ラムは圧縮されているのでカーネルにこのオプションをつけ + ておくのはいい考えでしょう. + + + + pseudo-device log + + log + はカーネルエラーのログを取るのに使います. + 不可欠です. + + + + pseudo-device pty number + + pty + は“仮想ターミナル”や仮想ログインポート です. + 外部からの telnetや + rloginセッ ション, xterm, + emacsなどのアプリケーションが使います. + numberは作ることのできる + ptyの数を示 します. + GENERICのデフォルトは16で, 同時の + xtermウィンドウやリモー + トログインのために増やす場合は最大で 64までです. + + + + pseudo-device snp number + + スヌープデバイスです. + この疑似デバイスはあるターミナル セッションが + &man.watch.8; command によって他のター + ミナルを監視することを可能にします. この機能の実現はセ + キュリティとプライバシに対して極めて微妙な関係があり + ます. snp の後の number + は同時におこなうことのでき + るスヌープセッションの総数です. 選択可能です. + + + + pseudo-device vn + + V ノードドライバです. ファイルを &man.vnconfig.8; + コマンドによって + デバイスとして取り扱うことを可能にします. + このドライバによりフロッピーディスクイメージを + 操作したりファ イルをスワップデバイスとして (MS + Windowsのスワッ プファイルなどを)用いることができます. + 選択可能です. + + + + pseudo-device ccd number + + ccd (concatenated + disk)デバイスはいくつかのディスクパーティ + ションを融合して大きなディスクのように + 見せることができます. ccdの後の + number + は同時に作ることのできる疑似ディスクの数です. + (詳しいことは &man.ccd.4; と &man.ccdconfig.8; のマニュ + アルを参照してください.) 選択可能です. + + + + + + + ジョイスティック, スピーカー, その他 + + この節は FreeBSDのここまでに示した以外のハードウェア + デバイスへのサポートについて示します. これらは GENERICカーネル + には含まれませんのでこのハンドブックや LINT (このファイルには + すべてのデバイスのサポートが含まれます) + からコピーする必 要があります. + + + device joy0 at isa? port "IO_GAME" + + PC のジョイスティックです. + + + + pseudo-device speaker + + IBM BASIC スタイルの PC内蔵スピーカーのサポートです. + シェルスクリプトで簡単な演奏をする + /usr/sbin/spkrtest + やキーボードを使って単純なピ + アノのように演奏することができる + /usr/games/piano + (gamesパッケージをイ + ンストールした場合にはあります) のようないくつかのプロ + グラムで使われます. また素晴らしいテキストロールプレイ + ングゲームである NetHack + (ports コレクションにあります) + はゲーム中の楽器の演奏でこのデバイスを使うように設定を + することができます (訳注:日本語化されたJNetHackもportsに + あります). + + pca0 デバイスの + 項も参照してください. + + + + + + + + デバイスノードを作る + + カーネル内のほとんどすべてのデバイスは対応する + “node” エント リが /dev + ディレクトリにあります. これらのノードは普 + 通のファイルのように見えますが, 実際にはプログラムがデバイスに + アクセスするのに用いるカーネル内への特別なエントリです. + シェルスクリプトである + /dev/MAKEDEVはオペレーティング + システムを最初にインストールする時に実行され, サポートされてい + る大部分のデバイスのノードを作ります. しかし, + すべての + ノードが作られるわけではありませんので + 新しいデバイスのサポートを加える時は対応するエントリがこのディ + レクトリにあるかどうか確認してもしなければ, 作ってください. + 以下に例を示します. + + IDE CD-ROMのサポートをカーネルに加えるとします. 次の行 + を加えます. + + +controller wcd0 + + これにしたがって, /devディレクトリに + wcd0で始ま るエントリを捜してください. + 1文字が後ろにつくかもしれません. 後 ろについた文字が + cであるか先に + rのつくエントリは “raw”デバ + イスを示します. + それらのファイルがないことが明らかになったとします. そこで + /dev + ディレクトリに移動して次のようにタイプします. + + &prompt.root; sh MAKEDEV wcd0 + + スクリプトの実行が終ったら /devに + wcd0crwcd0c + エントリがあることを確認してください. これによ + り正しく実行されたことがわかります. + + サウンドカードの場合のコマンドは次の通りです. + + &prompt.root; sh MAKEDEV snd0 + + これにより対応するエントリが作られます. + + + サウンドカードのようなデバイスのノードを作る場合で, もし他 + の人がマシンにアクセスするようであれば, そのデバイスを + /etc/fbtab + ファイルに追加して外部からのアクセスから + 保護するのが望ましいでしょう. このファイルの詳細については + man fbtab を参照してください. + + + GENERIC + に含まれていないデバイスはエントリがありませんから,以上 + の簡単な手順をおこなうことになります. + + + すべての SCSI コントローラは同じ /dev + の エントリを使用しますのでノードを作る必要はありません. + またネッ トワークカードと SLIP/PPP 疑似デバイスは + /dev にはエント + リがありませんのでこれらについても作る必要がありません. + + + + + 問題が起きた場合には + + カスタムカーネルを作る場合に起きるトラブルは 4 + 種類に分けられま す. + + + Config コマンドの失敗 + + カーネルにあなたの設定をおこなった場合で + configコ マンドが失敗したのであれば, + 多分どこかで単純な間違いを やっているのでしょう. さいわい, + configはトラ + ブルの起きた行番号を出力しますので + viで素早く 見つけることができます. + 例えばもし次のように出力されれ ば, config: line + 17: syntax error + viのコマンドモードで + 17Gとタイプすればあな + たは問題のところへ飛ぶことができます. + GENERIC カーネル + のファイルや他のリファレンスと比較して注意深く修正して + ください. + + + + Make コマンドの失敗 + + make コマンドが失敗した場合には, + カーネル設定で config + がとらえられなかったような間違いをして + いることが多いようです. ふたたびコン + フィグレーションを見直してください. それでも問題を解決 + することができなければ &a.questions; + へあなたのカーネルのコンフィグレーションをつけてメー + ルしてください. 誰かが素早く間違いを見つけてくれるで + しょう. + + + + カーネルがブートしない + + + 新しいカーネルがブートしなかったり, + デバイスの認識をしな い場合でもあわてないでください! + さいわい, BSDは利用で + きないカーネルから復帰する優れたメカニズムがあります. + FreeBSDの bootプロンプトでリターンキーを押すかわりに + 単にブートさせたいカーネルの名前 (例えば + kernel.old) をタイプするだけです. + カーネルの再設定 + をおこなう場合に現在のカーネルを利用できるように取ってお + くのはよい考えです. + + 問題のないカーネルでブートした後に + あなたのコンフィグレー ションファイルを調べ, + 再び構築を試みてください. + /var/log/messages + ファイルにはすべての成功した + ブートのカーネルのメッセージやその他の記録があり, これ + は助けになる情報の一つでしょう. また, + &man.dmesg.8; コマンドは現在のブート時のカーネルメッ + セージを出力します. + + + カーネルの構築中にトラブルが起きた時に使うために + GENERICや他のカーネルを次の構築で消されない + ように異る名前で保存するようにしてください. kernel.old + は新しいカーネルをインストールする 時に, + その一つ前にインストールしたうまく動かないかもしれ + ないカーネルで上書きされてしまいますので当てにできませ + ん. またできる限り早く動作しているカーネルを本来の + kernelの位置に移動させてください. + そうしないと + &man.ps.1; のようなコマンドが正しく動きません. + make + でインストールされたカーネルのファイルを + (別のカーネルに戻すために) + “アンロック” するための特別 + のコマンドは + + &prompt.root; chflags noschg + /kernel + + です. また, + 新しい置き換えたカーネルあるいは重要ファイ + ルを動かしたり変更されないように + “ロック” するには 次のようにします. + + &prompt.root; chflags schg + /kernel + + + + + カーネルは動くが + ps は動かない! + + + システムユーティリティと異る + バージョンのカーネルをインス トールした場合, 例えば + 実験的に “2.2.0” のカーネルを 2.1.0-RELEASE + システム上にインストールするような場合, + &man.ps.1; や &man.vmstat.8; のような多くのシ + ステムステータスコマンドは動かなくなります. + libkvm を + 再コンパイルしてこれらのユーティリティを作りなおす + 必要がありま す. これは, + オペレーティングシステムのそれ以外の部分と異るバージョ + ンのカーネルを使うことが普通はあまりよくない + 理由の一つです. + + + + + + + diff --git a/ja_JP.eucJP/books/handbook/kerneldebug/chapter.sgml b/ja_JP.eucJP/books/handbook/kerneldebug/chapter.sgml new file mode 100644 index 0000000000..4e1a45a5fb --- /dev/null +++ b/ja_JP.eucJP/books/handbook/kerneldebug/chapter.sgml @@ -0,0 +1,689 @@ + + + + カーネルデバッグ + + 原作 &a.paul; and &a.joerg; + + 訳: &a.jp.yoshiaki;. + 18 March 1997. + + + <command>kgdb</command> + によるカーネルのクラッシュダンプのデバッグ + + ここではクラッシュダンプ (crash dump : 訳注 この文脈では + kernel 自身 + の異常によって停止した場合に出力されるイメージを指します) + によるカー ネルデバッグの方法を示します. + + ここではダンプするための十分なスワップ + (swap) の容量があるものとします. + もし複数のスワップパーティションを持ち, + 最初のパーティションがダンプ + を保持するのに十分な大きさを持たない場合は + 別のダンプデバイスを使うよ + うに (config kernel 行で) + カーネルのコンフィグをおこなうか, &man.dumpon.8; + コマンドを使って別のデバイスを示すことができます. &man.dumpon.8; + を使うもっともよい方法は変数 dumpdev を + /etc/rc.conf で設定することです. 一般的には + /etc/fstab で設定されているスワップデバイスが + 使われるでしょう. + スワップに使えないデバイスへのダンプ, + 例えばテープへのダンプは現在サポートさ + れていません. カーネルのコンフィグは + config -g によって行ってください. + FreeBSD + カーネルのコンフィグレーション + には FreeBSD のカーネルの設定の詳細がありますので + 参照してください. + + &man.dumpon.8; コマンドを使ってどこへダンプするか + カーネルに伝えてください + (&man.swapon.8; によってそのパーティションが + スワップとして設定された + 後でなければならないことに注意してください). これは普通は + /etc/rc.conf/etc/rc + で設定されます. あるいは + 別の方法としてカーネルコンフィグレーションファイルの + config 行の dump 節 で + ダンプデバイスをハードコードすることができます. + この方法はあまりよくは + ありません. カーネルがブート時に crash + する場合のクラッシュダンプを取り + たい時だけ使うべきです. + + + 以下では kgdbという用語は + gdbを “カーネルデバッグモード” + で動かしていることを意味します. gdbを + オプションをつけて起動するか + kgdbという名前でリン + クして起動することでこのモードになります. デフォルトでは + このリンク は作られていません. また, このアイデアは + GNU関係者たちが彼らのツール + を別の名前で呼び出した時に異なった動作をするということを + 好まない, と いう点で不評です. + あるいは将来この機能を廃止することになるかもしれません. + + + カーネルを作った時にそのコピーを + kernel.debug という名前で作 りましょう. + また, オリジナルに対して strip + -dを実行します. + オリジナルを普通にインストールします. また strip + していないカーネル も同様にインストールすることができますが, + シンボルテーブルの参照時間 + がいくつかのプログラムでは劇的に増加するでしょう. また, + カーネル全体 はブート時に読み込まれ + スワップアウトされないため数メガバイトの物理メ + モリが無駄になります. + + 例えばブートプロンプトで + 新しいカーネルの名前をタイプすることによって, + 新しいカーネルをテストした場合で, + 再びシステムを動かすのに別のカーネ + ルで立ち上げることが必要な場合はブートプロンプトで + フラグ + を使いシングルユーザの状態にしてください. + そして以下のような操作をおこな います. + + &prompt.root; fsck -p +&prompt.root; mount -a -t ufs # /var/crash 用のファイルシステムを書き込み可能にする +&prompt.root; savecore -N /kernel.panicked /var/crash +&prompt.root; exit # ...マルチユーザモードへ移行 + + ここに示した &man.savecore.8; は (現在動いているものとは別の) + カーネルのシンボル名の抽出をおこなうために使っています. + 抽出はデフォルトで + は現在動いているカーネルに対しておこなわれ, + クラッシュダンプとカーネルシンボ + ルのくい違いのためにまったく何もしません + (訳注:そのためにオプション + で実際にダンプをおこしたカーネルを指定します). + + クラッシュダンプの起きた後に + /sys/compile/WHATEVERへ行き + kgdbを動かします. kgdb + より次のようにします. + + symbol-file kernel.debug +exec-file /var/crash/kernel.0 +core-file /var/crash/vmcore.0 + + こうすると, + クラッシュダンプを使ってカーネルソースを他のプログラムと同様に + デバッグすることができます. + + 次に kgdb + での手順のセッションのログを示します. 長い行は読 + みやすくするために改行しました. また, + 参照のために行番号を入れてあり ます. ただし, これは実際の + pcvtコンソールドライバの開発中の実際のエ + ラーのトレースです. + + 1:Script started on Fri Dec 30 23:15:22 1994 + 2:&prompt.root; cd /sys/compile/URIAH + 3:&prompt.root; kgdb kernel /var/crash/vmcore.1 + 4:Reading symbol data from /usr/src/sys/compile/URIAH/kernel...done. + 5:IdlePTD 1f3000 + 6:panic: because you said to! + 7:current pcb at 1e3f70 + 8:Reading in symbols for ../../i386/i386/machdep.c...done. + 9:(kgdb) where +10:#0 boot (arghowto=256) (../../i386/i386/machdep.c line 767) +11:#1 0xf0115159 in panic () +12:#2 0xf01955bd in diediedie () (../../i386/i386/machdep.c line 698) +13:#3 0xf010185e in db_fncall () +14:#4 0xf0101586 in db_command (-266509132, -266509516, -267381073) +15:#5 0xf0101711 in db_command_loop () +16:#6 0xf01040a0 in db_trap () +17:#7 0xf0192976 in kdb_trap (12, 0, -272630436, -266743723) +18:#8 0xf019d2eb in trap_fatal (...) +19:#9 0xf019ce60 in trap_pfault (...) +20:#10 0xf019cb2f in trap (...) +21:#11 0xf01932a1 in exception:calltrap () +22:#12 0xf0191503 in cnopen (...) +23:#13 0xf0132c34 in spec_open () +24:#14 0xf012d014 in vn_open () +25:#15 0xf012a183 in open () +26:#16 0xf019d4eb in syscall (...) +27:(kgdb) up 10 +28:Reading in symbols for ../../i386/i386/trap.c...done. +29:#10 0xf019cb2f in trap (frame={tf_es = -260440048, tf_ds = 16, tf_\ +30:edi = 3072, tf_esi = -266445372, tf_ebp = -272630356, tf_isp = -27\ +31:2630396, tf_ebx = -266427884, tf_edx = 12, tf_ecx = -266427884, tf\ +32:_eax = 64772224, tf_trapno = 12, tf_err = -272695296, tf_eip = -26\ +33:6672343, tf_cs = -266469368, tf_eflags = 66066, tf_esp = 3072, tf_\ +34:ss = -266427884}) (../../i386/i386/trap.c line 283) +35:283 (void) trap_pfault(&frame, FALSE); +36:(kgdb) frame frame->tf_ebp frame->tf_eip +37:Reading in symbols for ../../i386/isa/pcvt/pcvt_drv.c...done. +38:#0 0xf01ae729 in pcopen (dev=3072, flag=3, mode=8192, p=(struct p\ +39:roc *) 0xf07c0c00) (../../i386/isa/pcvt/pcvt_drv.c line 403) +40:403 return ((*linesw[tp->t_line].l_open)(dev, tp)); +41:(kgdb) list +42:398 +43:399 tp->t_state |= TS_CARR_ON; +44:400 tp->t_cflag |= CLOCAL; /* cannot be a modem (:-) */ +45:401 +46:402 #if PCVT_NETBSD || (PCVT_FREEBSD >= 200) +47:403 return ((*linesw[tp->t_line].l_open)(dev, tp)); +48:404 #else +49:405 return ((*linesw[tp->t_line].l_open)(dev, tp, flag)); +50:406 #endif /* PCVT_NETBSD || (PCVT_FREEBSD >= 200) */ +51:407 } +52:(kgdb) print tp +53:Reading in symbols for ../../i386/i386/cons.c...done. +54:$1 = (struct tty *) 0x1bae +55:(kgdb) print tp->t_line +56:$2 = 1767990816 +57:(kgdb) up +58:#1 0xf0191503 in cnopen (dev=0x00000000, flag=3, mode=8192, p=(st\ +59:ruct proc *) 0xf07c0c00) (../../i386/i386/cons.c line 126) +60: return ((*cdevsw[major(dev)].d_open)(dev, flag, mode, p)); +61:(kgdb) up +62:#2 0xf0132c34 in spec_open () +63:(kgdb) up +64:#3 0xf012d014 in vn_open () +65:(kgdb) up +66:#4 0xf012a183 in open () +67:(kgdb) up +68:#5 0xf019d4eb in syscall (frame={tf_es = 39, tf_ds = 39, tf_edi =\ +69: 2158592, tf_esi = 0, tf_ebp = -272638436, tf_isp = -272629788, tf\ +70:_ebx = 7086, tf_edx = 1, tf_ecx = 0, tf_eax = 5, tf_trapno = 582, \ +71:tf_err = 582, tf_eip = 75749, tf_cs = 31, tf_eflags = 582, tf_esp \ +72:= -272638456, tf_ss = 39}) (../../i386/i386/trap.c line 673) +73:673 error = (*callp->sy_call)(p, args, rval); +74:(kgdb) up +75:Initial frame selected; you cannot go up. +76:(kgdb) quit +77:&prompt.root; exit +78:exit +79: +80:Script done on Fri Dec 30 23:18:04 1994 + + 上の出力についてのコメントをします. + + + line 6: + + これは DDB (後述) からのダンプです. このため + “because you said to!” という + panicコメントがつき, ページフォルトのト ラップによって + DDBに入ったことが原因の, やや長いスタックトレー + スがあります. + + + + line 20: + + スタックトレースでのこれは + trap()関数の位置で す. + + + + line 36: + + 新しいスタックフレームの使用を指定しています. これは現 + 在は必要ありません. trapの場合ではスタックフレームは正 + しい場所を指していると考えられます. (私は新しいコアダンプ + を持っていません. 私のカーネルは長い間 panicを起こしていま + せん.) ソースコードの + 403行を見ると,“tp”ポインタのアク + セスが失敗しているか配列のアクセスが範囲外である可能性が高 + いことがわかります. + + + + line 52: + + 怪しいポインタですが, + アクセスは正常におこなえました. + + + + line 56: + + ところが, 明らかにポインタはゴミを指しています. これで + エラーを見つけました! (ここのコードの部分からはよくわかり + ませんが, + tp->t_lineはコンソールデバイスの規定 + する行を参照しているので, + もっと小さな整数でなければなりませ ん. ) + + + + + + + DDD によるクラッシュダンプのデバッグ + + カーネルのクラッシュダンプは ddd + のようなグラフィカルなデバッガで調べることもできます. + 通常はコマンドラインで オプションをつけて + ddd を起動します. たとえば: + + &prompt.root; ddd -k /var/crash/kernel.0 /var/crash/vmcore.0 + + クラッシュダンプを ddd + のグラフィカルなインターフェースを使って + 見ることができます. + + + + 突然ダンプした場合の解析 + + カーネルが予想もしない時にコアダンプして config + -g + を行ってコンパイルされていなかった場合にはどうしたら + よいでしょう. すべてが失われるわけではありません. + パニックを起こさないでください. + + もちろん, クラッシュダンプを使えるようにする必要があります. + 使い方は前述の部分を見てください. + + カーネルのコンパイルディレクトリで, (Makefileの) + COPTFLAGS?=-O とある行を編集します. + オプショ ンをここに加えます + (オプティマイズオプションのレベルは 変更しな + いでください ). + もし大まかにコードのどこで問題が起きているか (例 えば, + 上の例では pcvtドライバ) + わかっているのでしたら, その部 + 分のコードについてのすべてのオブジェクトファイルを + 消してください. カーネ ルを再構築しましょう. + Makefileのタイムスタンプの変更により, 例えば trap.o + などのいくつかの他のオブジェクトファイルも作り直さ + れます. 少しの幸運があれば, + オプションが追加されても作ら + れるコードは変更されず, いくらかのデバッグシンボル以外には + 問題を + 起こしたコードとそっくりな新しいカーネルを手に入れることが + できます. 少なくとも &man.size.1; + コマンドで古い方と新しい方のサイズを比較すべ きです. + これが食い違っていれば, + 多分あきらめなければならないでしょう. + + ダンプを使って前述のように動かして調べます. + デバッグシンボルは 必ずしも十分ではありません. + 上の例ではスタックトレースでいくつかの関 + 数の行番号や引数リストが表示されないかもしれません. + もしより多くのデ バッグシンボルが必要であれば,十分になるまで + 適切なオブジェクトファイ ルを消して (makeして) + kgdbセッションを繰り返してください. + + これは必ずしもうまく動くと保証はできません. + しかしほとんどの場合でう まくいくでしょう. + + + + DDBを使ったオンラインカーネルデバッグ + + kgdb + は非常に高レベルのユーザインタフェースを提 + 供するオフラインデバッガですが, いくつかのことはできません. + (できないことの中で) + 極めて重要なことはカーネルコードへのブレークポイ + ントの設定とシングルステップ実行です. + + カーネルの低レベルデバッグが必要であれば, DDBと呼ばれる + on-lineデバッ ガが使えます. ブレークポイントの設定, + シングルステップのカーネルの実 行, + 変数の検査と変更などができます. + ただし,これはカーネルのソースファ + イルにアクセスすることはできません. + kgdbのようにすべてのデ + バッグ情報にはアクセスできず, globalと + staticのシンボルにアクセス することができるだけです. + + カーネルに DDB + を含めるためにはコンフィグファイルに次のようなオプショ + ンを加えて, + + +options DDB + + 再構築をおこないます. ( + FreeBSDのカーネルの設定の詳細については FreeBSD + カーネルのコンフィグレーションを参照してくださ + い. + + + もしブートブロックが古いバージョンですと, + デバッガのシンボルが完 + 全にはロードされないかもしれませんので注意してください. DDB + シンボル がロードされるようにブートブロックを + 最新の物にアップデートしてくださ い) + + + DDB カーネルの実行において, + DDBに入るいくつかの方法があります. 最初 の, + 最も早い方法はブートプロンプトが出ている時に + のブート フラグをタイプすることです. + カーネルはデバッグモードで起動し, デバ イスのプローブ以前に + DDBに入ります. したがって, デバイスのプローブ/初期 + 設定ファンクションのデバッグができます. + + 2つ目のシナリオはキーボードのホットキーで, 通常は + Ctrl-Alt-ESCです. syscons ではホットキーは再設定することができ, + 配付されているいくつかの キーマッピングでは別のキーに + 再設定されていますので確認しておいてください. シリアルラインの + BREAKを使って シリアルコンソールから DDBへ入ることを可 + 能にするオプションもあります + (カーネルコンフィグレーションファイルの options + BREAK_TO_DEBUGGER). これは 多くのつまらないシリ + アルアダプタが, 例えばケーブルを引き抜いた時に + BREAK状態を意味もなく + 作り出してしまうのでデフォルトでは無効になっています. + + 3つ目は, DDB + を使うようになっているカーネルがパニック状態になると DDB + へ入るというものです. このため, + 無人運転するマシンのカーネルにDDBを + 入れるのは賢明ではありません. + + DDB のコマンドはおおまかには gdb + のいくつかのコマンドと似て + います. おそらく最初にブレークポイントを + 設定する必要があるでしょう. + + b function-name +b address + + 数値はデフォルトでは16進数で, + シンボル名とはまったく異ります. 16進数で a-f + の文字で始まる場合は, 先頭に 0x + をつける必要があります(それ以外の数字の場合はどちらでもか + まいません). function-name + + 0x103のような単純な式を使うこ とができます. + + 割り込みされたカーネルから処理を続行するためには, + + c + + とタイプするだけです. + スタックのトレースには + + trace + + とします. + + + DDB にホットキーで入った場合は, カーネルはその + (ホットキーの) 割り込み + の処理を行っていますのでスタックトレースは + あまり役にたたないことに注 意してください. + + + ブレークポイントを削除したい場合は, + + del +del address-expression + + とします. + 最初の形式はブレークポイントにヒットしたすぐ後で使うことが でき, + 現在のブレークポイントを削除します. 2番目の形式では任意のブレー + クポイントを削除することができますが, + 次の形式で得られるような正確な + アドレスを与えることが必要です. + + show b + + カーネルをシングルステップ実行させるには + + s + + としてみてください. これは関数呼出し先までステップ実行 (step + into function) するでしょう. + 次のステートメントが終了するまでのDDBトレースは + + n + + によっておこなうことができます. + + + これは gdbnext + 命令とは異ります. gdbの + finish命令と似ています. + + + メモリ上のデータを調べるには (例として) 次のようにします. + + x/wx 0xf0133fe0,40 +x/hd db_symtab_space +x/bc termbuf,10 +x/s stringbuf + + word/halfword/byte 単位でアクセスをおこない, hex (16進) + /dec (10進) / + char (文字) /string (文字列) で表示します. + カンマの後ろの数字はオブジェク + トカウントです. 次の 0x10個の要素を表示するには, 単純に + + x ,10 + + とします. 同様に次のように使うことができます. + + x/ia foofunc,10 + + foofunc + の最初の 0x10個の命令語をディスアセンブルし, + foofunc + の先頭からのオフセットとともに表示します. + + メモリの内容を変更するには writeコマンドを使います. + + w/b termbuf 0xa 0xb 0 +w/w 0xf0010030 0 0 + + コマンドモディファイアの + (b/h/w) + はデータを 書くサイズを定義し, + これに続く最初の式は書き込むアドレス, 残りがこれ + に続く連続するメモリアドレスに書き込まれるデータになります. + + + 現在のレジスタ群の内容を知りたい場合は + + show reg + + とします. また, 単一のレジスタの値を表示するには, 例えば + + p $eax + + とします. また値の変更は + + set $eax new-value + + とします. + + DDBからカーネルの関数を呼び出す必要がある場合は, 単に + + call func(arg1, arg2, ...) + + とします. return 値が出力されます. + + 動いているプロセスの &man.ps.1; スタイルの概要は + + ps + + です. + + カーネルの失敗の原因の調査が終わったらリブートすべきです. + それまでの 不具合によりカーネルのすべての部分が期待するような + 動作をしているわけ ではないということを忘れないでください. + 以下のうちいずれかの方法でシ + ステムのシャットダウンおよびリブートを行ってください. + + call diediedie() + + カーネルをコアダンプしてリブートしますので, 後で + kgdbによってコアの高 レベル解析をすることができます. + このコマンドは通常 + continue命令にエイリアスされています. + panicにエイリアスされている + + call boot(0) + + は動いているシステムを `clean' に shut + downするよい方法です. すべて のディスクを + sync()して最後にリブートします. + ディスクとカー + ネルのファイルシステムインタフェースが破損していない限り, + ほぼ完全 に `clean'にシャットダウンするよい方法でしょう. + + + call cpu_reset() + + は大惨事を防ぐための最後の手段で 「赤い大きなボタン」 + を押すのとほとんど 同じです.(訳注: + リセットボタンを押すのとほぼ同じであるという意味です) + + 短いコマンドの要約は + + help + + をタイプします. ただし, デバッグセッションのために + &man.ddb.4; の + マニュアルページのプリントアウトを用意しておくことを + 強くお奨めします. + カーネルのシングルステップ中にオンラインマニュアルを + 読むことは難しい ということを覚えておいてください. + + + + リモート GDB を使ったオンラインカーネルデバッグ + + この機能は FreeBSD 2.2 からサポートされました. + これは本当にすばらし い機能です. + + GDB はすでにかなり以前より + リモートデバッグ をサポートしてい ます. + これはシリアル回線を使い非常に単純なプロトコルで行ないます. + もちろん, この方法では今までに示した方法とは違い, + 2台のマシンが必 要になります. 1台はデバッグ環境のためのホストで, + すべてのソースとす + べてのシンボルを含んだバイナリのコピーを持っています. もう 1台は + ターゲットマシンで, 同一のカーネルのコピー (ただしデバッグ情報は + 取り除いてあるもの) を単に実行するためのものです. + + この場合, カーネルのコンフィグレーションは config + -g で行な い, + を含めなくてはなりません. そうして通常通りコンパイルし ます. + こうして作ったバイナリファイルはデバッグ情報のために非常に大き + くなります. このカーネルをターゲットマシンにコピーして + strip -x でデバッグシンボルを取り除きます. + そして ブートオプションを使いブートします. + ターゲットマシンの 1番目の シリアル回線をデバッグホストの + いずれかのシリアル回線につないでおきま しょう. + それからデバッグ(訳注:ホスト)マシン上で, ターゲットとなって + いるカーネルのコンパイルディレクトリで gdb を起動します: + + &prompt.user; gdb -k kernel +GDB is free software and you are welcome to distribute copies of it + under certain conditions; type "show copying" to see the conditions. +There is absolutely no warranty for GDB; type "show warranty" for details. +GDB 4.16 (i386-unknown-freebsd), +Copyright 1996 Free Software Foundation, Inc... +(kgdb) + + リモートデバッグセッションの初期化 + (1番目のシリアルポートを使用する ことの設定) + を以下のように行ないます. + + (kgdb) target remote /dev/cuaa0 + + 次にターゲットマシン (デバイスのプローブ直前で DDB + に入っています) で次のように入力します: + + Debugger("Boot flags requested debugger") +Stopped at Debugger+0x35: movb $0, edata+0x51bc +db> gdb + + DDB は次のような出力を返すでしょう. + + Next trap will enter GDB remote protocol mode + + gdbと入力するたびに リモート GDB + とローカル DDB が交互に切り替わ ります. + トラップをすぐに起こすために単に ``s'' (step) と入力して下 さい. + そうするとホストの GDB はターゲットのカーネルの制御を行なうよ + うになります. + + Remote debugging using /dev/cuaa0 +Debugger (msg=0xf01b0383 "Boot flags requested debugger") + at ../../i386/i386/db_interface.c:257 +(kgdb) + + このセッションではソースコードへのフルアクセスや Emacs の + window 上 の gud-mode (これは別の Emacs window + に自動的にソースコードを表示し ます) で動かすなど, 通常の GDB + セッションでできることのほとんどのこ とができます. + + リモート GDB は LKM のデバッグも行なうことができます. + 最初に LKM を デバッグシンボルを含めた形で作ります. + + &prompt.root; cd /usr/src/lkm/linux +&prompt.root; make clean; make COPTS=-g + + そしてターゲットマシン上で + モジュールのこのバージョンをインストールし ます. + これをロードしてから, modstat + を使ってロードされている ことを確認してください: + + &prompt.root; linux +&prompt.root; modstat +Type Id Off Loadaddr Size Info Rev Module Name +EXEC 0 4 f5109000 001c f510f010 1 linux_mod + + 示されたロードアドレスに 0x20 + (a.outのヘッダはおそらくこの大きさでしょ う) を加えます. + それがモジュールコードの再配置されるアドレスです. GDB の + add-symbol-file + コマンドを使ってデバッガにモジュールの 情報をつたえます. + + + (kgdb) add-symbol-file /usr/src/lkm/linux/linux_mod.o 0xf5109020 +add symbol table from file "/usr/src/lkm/linux/linux_mod.o" at +text_addr = 0xf5109020? +(y or n) y +(kgdb) + + これで LKM + のすべてのシンボルにアクセスできるようになります. + + + + コンソールドライバのデバッグ + + DDBを動かすためにはコンソールドライバが必要ですから, + コンソールドラ イバ自身に不具合のある場合は複雑になります. + シリアルコンソールを利 用する方法 (ブートブロックを変更するか + Boot:プロンプトで + と入力する) を思い出してください. + そして標準ター ミナルを最初のシリアルポートに設定します. DDBは, + もちろんシリアルコ ンソールを含むいずれの + コンソールドライバの設定でも動作します. + + + + diff --git a/ja_JP.eucJP/books/handbook/kernelopts/chapter.sgml b/ja_JP.eucJP/books/handbook/kernelopts/chapter.sgml new file mode 100644 index 0000000000..6dc0f9cfdd --- /dev/null +++ b/ja_JP.eucJP/books/handbook/kernelopts/chapter.sgml @@ -0,0 +1,213 @@ + + + + カーネルコンフィグレーションの + 新しいオプションを追加する + + 原作: &a.joerg; + + 訳: &a.jp.yoshiaki;. + 29 December 1996. + + + この章をお読みになる前に FreeBSD + カーネルのコンフィグレーション の章の内容を + 理解しておいてください. + + + + そもそも<emphasis>カーネル + オプション</emphasis>って何? + + カーネルオプションの使い方は基本的には + FreeBSD + カーネルのコンフィグレーション + の章に書いてあります. + そこには “伝統的な形式” と “新しい形式” + のオプションの説明があります. + すべてのカーネルのオプションを新しい形式のものに置き換え, + コンフィグファイル + を修正して &man.config.8; を実行した後に + カーネルのコンパイルディレクトリで + make depend を実行すれば, + ビルドプロセスが自動的に変更された + オプションを検出し, 必要なファイルだけを + 再コンパイルするようにすることが + 最終的な目的です. &man.config.8; + を実行するたびに古いコンパイルディレクトリ + を消してしまう現在のやりかたは, + やがておこなわれなくなるでしょう. + + 基本的に, カーネルオプションはカーネルのコンパイルプロセスの + C プリプロセッサのマクロの定義にすぎません. 実際に選択的に make + できる ようにするためには, 対応する部分のカーネルソース + (またはカーネルの .h ファイル) + がオプションを使えるようにあらかじめ書かれていなければ + なりません. + つまりデフォルト値をコンフィグファイルのオプションで置き換え + られるようになっていなければなりません. + これは普通は次のようになっています. + + +#ifndef THIS_OPTION +#define THIS_OPTION (some_default_value) +#endif /* THIS_OPTION */ + + この場合, + 管理者がコンフィグファイルのオプションに別の値を記述すれば, + デフォルトの設定を打ち消して新しい値に置き換えられます. 当然, + 新しい値はプリプロセッサによってソースコード中で + 置き換えられるため, デフォルトの値が使われていた場所において C + の式として有効な値でなければ なりません. + + また, 単に特定のコードを有効にするか + 無効にするかを設定するための + 値を持たないオプションも作ることができます. + + +#ifdef THAT_OPTION + +[あなたのコードが入ります] + +#endif + + コンフィグファイルに THAT_OPTION + と記述するだけで (値の有無 にかかわらず) + 対応する部分のコードが組み込まれます. + + C 言語にくわしい人であれば + “コンフィグオプション” とされているもの + は少なくとも一つの #ifdef + で参照されているということはすぐに理解 できるでしょう. ところで, + ごく一部の人たちは次のようなものを試して + みようとするかもしれません. + + +options notyet,notdef + + このようにコンフィグファイルをしておくと, + カーネルのコンパイルは うまく行きません. :-) + + (訳注: たとえば MATH_EMULATE のように + 有効/無効のためのパラメタを 持たないオプションの場合, + 無効とするためのパラメタをつけて, オプション + で「無効とする」と明示することはできないという意味です) + + 明らかに, + 任意のオプション名がカーネルソースツリー全体でどのように + 使われているかを追いかけることは非常に難しいことです. このことが + 新しい形式 + のオプションの機構を採り入れる理由の背景です. + ここではそれぞれのオプションは + カーネルコンパイルディレクトリにある別々の + .h ファイルとなり, + opt_foo.h + という名前に されます. この方法では, 通常の Makefile + の依存関係が適用され, make + プログラムはオプションが変更された時に再コンパイルが必要な + ものを見つけることができます. + + 古い形式のオプションの機構は, + 局部的なオプションや実験的なオプション + のような一時的に利用されると考えられるオプションにおいては + 有効です. つまり #ifdef + をカーネルのソースに追加するのは簡単であり, + それがそのままカーネルコンフィグオプションになります. この場合, + 管理者はオプションの利用において + 依存関係を把握しておく責任があります (また, + 手動でカーネルの一部分を + 強制的に再コンパイルする必要があるかもしれません). + サポートされている + オプションのすべてについて一つでも変更があると, &man.config.8; + は サポートされていないオプションがコンフィグファイルの中に + あるという警告 を出しますが, カーネルの Makefile + 内にはそれを含めます. + + + + ではどのようにして追加するのでしょう? + + 最初に sys/conf/options (または + sys/i386/conf/options.<arch>, たとえば sys/i386/conf/options.i386) + を編集し, 新しいオプション を含めるのに最適な + opt_foo.h + ファイルを選びます. + + 新しいオプションの必要がなくなったとしたら, + これを取り除きます. たとえば, SCSI + サブシステムに関するすべてのふるまいについてのオプション + の変更は opt_scsi.h に入れられます. + デフォルトでは, 適切 なオプションファイルに単に記述されます. + たとえば FOO であれば 値は対応するファイルの + opt_foo.h に格納されます. これは右端に別 + のファイル名を書いて置き換えることができます. + + 新しいオプションを加えるのに使えそうな + opt_foo.h + がない場合は新しい名前を作ってください. 意味のある名前を作り + options[.<arch>] + ファイル に新しいセクションのコメントをつけてください. + &man.config.8; は自動的 + に変更を検出して, 次の実行からは (訳注: 新しい + .h) ファイル を作ります. + ほとんどのオプションはヘッダファイルに入れられます. + + 大量のオプションを一つの + opt_foo.h + にまとめると + コンフィグファイルの一つのオプションを変更したときに + 多くのファイルが 再コンパイルされる原因になります. + + 新しいオプションに依存するカーネルファイルは + 最終的には見つけ出 されます. ただし, + オプションを作っただけで対応するソースがどこにも + ない場合は別です. + + &prompt.user; find /usr/src/sys -name type f | xargs fgrep NEW_OPTION + + オプションに対応するソースを見つけるのに上記のコマンドは + 便利です. 見つけたすべてのファイルで編集, 追加をおこないます. + + #include "opt_foo.h" + + ファイルの先頭の, すべての + #include <xxx.h> より前に入れます. + この場合, オプションによって次のようにしてデフォルト値 + を持たせている標準のヘッダファイル内の値を置き換えるため, + 順番は非常に 重要です. + + #ifndef NEW_OPTION +#define NEW_OPTION (something) +#endif + + システムヘッダファイル (たとえば + /usr/include/sys/ にある ファイル) + をオプションで置き換えることは, ほとんどの場合で失敗します. + そうすると, ヘッダファイルを深刻な状態に破壊してしまうので, + include しないとオプションの値によって + 不整合が起きてしまう場合を除き, それらの ファイルに + opt_foo.h + を include しないでください. + そう, 現在このような例がいくつか存在していますが, + 必ずしも正しい方法 ではありません. + + + + diff --git a/ja_JP.eucJP/books/handbook/l10n/chapter.sgml b/ja_JP.eucJP/books/handbook/l10n/chapter.sgml new file mode 100644 index 0000000000..857d7e2069 --- /dev/null +++ b/ja_JP.eucJP/books/handbook/l10n/chapter.sgml @@ -0,0 +1,375 @@ + + + + ローカル化 + + + ロシア語 (KOI8-R encoding) + + Contributed by &a.ache; + 1 May 1997. + + 訳: &a.motoyuki;. + 18 June 1997. + + KOI8-R encoding についてのさらに詳しいことは, KOI8-R + References (Russian Net Character Set) + をご覧ください. + + + コンソールのセットアップ + + + + マウスカーソルのために用いられている文字コードを + KOI8-R 擬似グラフィックの範囲外に動かすために, + カーネルのコンフィグレーションファイルに + 以下の行を付け加えます. + + +options "SC_MOUSE_CHAR=0x03" + + + + /etc/rc.conf + でのロシア語コンソールの + エントリーは以下のようになります. + + +keymap=ru.koi8-r +keychange="61 ^[[K" +scrnmap=koi8-r2cp866 +font8x16=cp866b-8x16 +font8x14=cp866-8x14 +font8x8=cp866-8x8 + + + ^[ は + /etc/rc.conf, + に ^[ の文字列ではなく本当の + ESC キャラクターを入れることを意味します. + + + これは, KOI8-R キーボードで, KOI8-R encoding + の代替スクリーンフォントを 疑似グラフィックに割り当て, + 灰色のデリート キーを + &man.termcap.5; の FreeBSD + コンソールのロシア語エントリーに一致するように再配置する, + ということです. + + RUS/LAT スイッチは CapsLock + に割り当てられます. 元の CapsLock の機能は + Shift+CapsLock で使えます. CapsLock の + LED は CapsLock のモードではなく RUS + モードを示します. + + + + /etc/ttys の中の + ttyv? の各エントリの + ターミナルのタイプを cons25 から + cons25r に変更します, + つまり各エントリは以下のようになります + + +ttyv0 "/usr/libexec/getty Pc" cons25r on secure + + + + + + Locale のセットアップ + + Locale + のセットアップには二つの環境変数を使います: + + + + LANG + は POSIX &man.setlocale.3; ファミリの関数に; + + + + MM_CHARSET はアプリケーションの MIME + キャラクタセットに使われます. + + + + 一番良い方法は &man.passwd.5; エントリの login class + の場所で + /etc/login.conf の + russian ユーザの login class + を使うことです. + 詳しくは &man.login.conf.5; を参照してください. + + + Login Class の設定方法 + + まず最初に /etc/login.conf に + russian login class がある + ことを確認してください, + このエントリは以下のようになります: + + +russian:Russian Users Accounts:\ + :charset=KOI8-R:\ + :lang=ru_RU.KOI8-R:\ + :tc=default: + + + &man.vipw.8; ではどうするのか + + 新しいユーザを追加するのに &man.vipw.8; + を使うのであれば, + /etc/master.passwd + のエントリは以下のようになります: + + +user:password:1111:11:russian:0:0:User Name:/home/user:/bin/csh + + + + &man.adduser.8; ではどうするのか + + &man.adduser.8; を使って新しいユーザを追加するには: + + + + +defaultclass = russian + + /etc/adduser.conf + にセットする. (この場合, 全ての非ロシア語ユーザに + default class を入力しなけ + ればなりません); + + + + もう一つの方法は &man.adduser.8; の + + Enter login class: default []: + + という表示に russian + と答えるものです; + + + + また, ロシア語ユーザを追加する際に: + + &prompt.root; adduser -class russian + + とする方法もあります. + + + + + + &man.pw.8; ではどうするのか + + &man.pw.8; を使って新しいユーザを追加するには, + 次のようにします: + + &prompt.root; pw useradd user_name -L russian + + + + + シェルのスタートアップファイルでの設定方法 + + 何らかの理由で + login class の設定方法 + を使いたくない場合は, この + 二つの環境変数 + をシェルのスタートアップファイルに設定します: + + + + /etc/profile: + + +LANG=ru_RU.KOI8-R; export LANG +MM_CHARSET=KOI8-R; export MM_CHARSET + + + + /etc/csh.login: + + +setenv LANG ru_RU.KOI8-R +setenv MM_CHARSET KOI8-R + + + + もう一つの方法は, これらを以下のファイルに + 設定することです. + + + + /usr/share/skel/dot.profile: + + (上の /etc/profile と同様にします); + + + + + /usr/share/skel/dot.login: + + (上の /etc/csh.login と同様にします). + + + + + + + + プリンターのセットアップ + + ロシア語の文字を内蔵したプリンターのほとんどは 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: + + /etc/printcap ファイルの詳細については + &man.printcap.5; + を参照して下さい. + + + + MSDOS ファイルシステムとロシア語のファイル名 + + MSDOS ファイルシステムにおいてロシア語のファイル名を + サポートするには, 次の + &man.fstab.5; エントリーの例を参考にしてください. + + +/dev/sd0s1 /dos/c msdos rw,-W=koi2dos,-L=ru_RU.KOI8-R 0 0 + + + というオプションに関する詳細は + &man.mount.msdos.8; をご覧ください. + + + + X Window System のセットアップ + + 以下の順序で設定します: + + + + まず最初に X 以外の + locale のセットアップ の通りに行います. + + + ロシア語の KOI8-R locale + は XFree86 の古いリリース (3.3 より前) + では動かないかもしれません. + /usr/ports/x11/XFree86 の XFree86 + の port には XFree86 の最近のほとんどの + バージョンが入っています. したがってこの port から + XFree86 をインストール したのならきちんと動くでしょう. + 最新の FreeBSD ディストリビューションに付属する XFree86 + のバージョンも動くはず です (XFree86 のバージョンが 3.3 + より前でないことを確認して下さい). + + + + + /usr/ports/russian/X.language + ディレクトリに行き, ここで + + &prompt.root; make all install + + とします. このポートは最新バージョンの KOI8-R + フォントをインストールします. + XFree86 3.3 には既にいくつかの KOI8-R + フォントが含まれていますが, こちらの + フォントのほうがより釣り合いがとれています. + + /etc/XF86Config の + "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 の行を入れ替えます. + + + + ロシア語キーボードを有効にするには + + +XkbKeymap "xfree86(ru)" + + を /etc/XF86Config の + "Keyboard" セクションに追加します, + また XkbDisable が無効に + (コメントアウト) されていることをここで + 確認します. + + RUS/LAT スイッチは + CapsLockに割り当てられます. 元の + CapsLock の機能は Shift+CapsLock + で使えます (LAT モード内でのみ). + + + ロシア語 XKB キーボードは XFree86 + の古いバージョンでは動かないかもしれません, 詳しくは + locale note + を参照してください. ロシア語 XKB + キーボードはローカル化されていないアプリケーション + でも動かない かもしれません, + 最低限のローカル化されたアプリケーションでは + そのプログラムの 初期に XtSetLanguageProc(NULL, + NULL, NULL); 関数を呼ばなければ + なりません. + + + + + + + + ドイツ語(ISO 8859-1) + + Slaven Rezic + eserte@cs.tu-berlin.de + が FreeBSD上でウムラウトを使う方法についての + チュートリアルを書きました. + チュートリアルはドイツ語で書かれていて, + + http://www.de.freebsd.org/de/umlaute/ + でご覧になれます. + + + + diff --git a/ja_JP.eucJP/books/handbook/linuxemu/chapter.sgml b/ja_JP.eucJP/books/handbook/linuxemu/chapter.sgml new file mode 100644 index 0000000000..5ea6f7bd17 --- /dev/null +++ b/ja_JP.eucJP/books/handbook/linuxemu/chapter.sgml @@ -0,0 +1,923 @@ + + + + Linux エミュレーション + + 原作: &a.handy; and &a.rich; + + 訳: &a.jp.kiroh;. + 24 September 1996. + + + Linux エミュレータのインストール + + FreeBSD での Linux エミュレーションは, 大部分の Linux + バイナリ(a.out および ELF + フォーマット)を実行できる状態になっています. 2.1-STABLE ブラン + チでのエミュレーションでは, Linux DOOM や Mathematica + が実行できます. &rel.current;-RELEASE でのエミュレーションは, + さらに強化されており, Linux 用 の Quake, Abuse, IDL, netrek + など, 多数のソフトウェアが実行できます. + + Linux + オペレーティングシステムには, 特有の機能がいくつかあり, FreeBSD + でサポートされていないものもあります. Linux の + /proc ファイルシステム を使ったバイナリは, + FreeBSD では実行できません (FreeBSD で使用可能な + /proc + ファイルシステムとは仕様が異なっているためです). + また仮想8086モー ドを有効にするなど, i386 + に特有なシステムコールを使っている場合も実行 できません. + + Linux エミュレーションの設定方法は, 使用している FreeBSD + のバージョン によって多少異なっています. + + + 2.1-STABLE への Linux エミュレーションのインストール + + 2.1-STABLE の GENERIC カーネルは, + Linux との互換性を保つように構築 されていません. + カーネルの再構築が必要です. 再構築をおこなうには, 2つの方 + 法があります. 1つは, + エミュレータをカーネル自体にスタティックリンクす る方法. + もう1つは, 動的に Linux + ローダブルカーネルモジュール(LKM)をロー + ドするようにする方法です. + + エミュレータを有効にするには, + 以下をコンフィグレーションファイル + (/sys/i386/conf/LINT など) + に追加します. + + +options COMPAT_LINUX + + Linux DOOM などのアプリケーションを実行したい場合は, + 共有メモリも有効 にしておかなければなりません. + 以下を追加します. + + +options SYSVSHM + + Linux のシステムコールを使用するには, 4.3BSD + のシステムコールとの互換 性が保たれていることが必要です. + 以下の行が含まれていることを確認してく ださい. + + +options "COMPAT_43" + + LKM + を使用せずエミュレータをカーネルにスタティックにリンクしたい場合は, 以下の行を追加します. + + +options LINUX + + FreeBSD + カーネルのコンフィグレーション の節の記述に + したがって config と, + 新しいカーネルのインストールをおこなってください. + + LKM を使用する場合は, + ローダブルモジュールをインストールしなければなり ません. + カーネルとローダブルモジュールのバージョンが異なると, カーネル + がクラッシュする場合がありますので, 安全を期すためには, + カーネルをイン ストールするごとに, LKM + も再インストールしてください. + + &prompt.root; cd /usr/src/lkm/linux +&prompt.root; make all install + + カーネルと LKM のインストールが終了したら, root で `linux' + コマンドを 実行することで LKM をロードできます. + + &prompt.root; linux +Linux emulator installed +Module loaded as ID 0 +&prompt.root; + + LKM がロードされたかどうかを確認するには, + modstat を実行します. + + &prompt.user; modstat +Type Id Off Loadaddr Size Info Rev Module Name +EXEC 0 3 f0baf000 0018 f0bb4000 1 linux_emulator + + システムブート時に, LKM をロードするようにするには, + 2つの方法がありま + す. FreeBSD 2.2.1-RELEASE または 2.1-STABLE では, + /etc/sysconfig を, + + +linux=YES + + のように, NO を YES に変更してください. + FreeBSD 2.1-RELEASE およびそれ以 + 前のバージョンでは, そのような行はありませんので, + /etc/rc.local に以下 + の行を追加する必要があります. + + +linux + + + + 2.2-RELEASE への Linux エミュレーションのインストール + + options LINUXoptions + COMPAT_LINUX を指定する必要 はなくなりました. + Linux エミュレーションは + LKM(“ローダブルカーネルモジュール”) を使用して, + リブートせず簡単にインストールできます. スタートアッ + プファイルで以下のように指定します. + + + + /etc/rc.conf + に以下の行が必要です. + + +linux_enable=YES + + + + これは結果的に, /etc/rc.i386 + の以下の指定を有効にします. + + +# Start the Linux binary emulation if requested. +if [ "X${linux_enable}" = X"YES" ]; then echo -n ' + linux'; linux > /dev/null 2>&1 +fi + + + + 実行されたかどうかを確認するには, modstat + を使用します. + + + &prompt.user; modstat +Type Id Off Loadaddr Size Info Rev Module Name +EXEC 0 4 f09e6000 001c f09ec010 1 linux_mod + + 2.2-RELEASE とそれ以降のシステムの中には, + modstat の実行がうまくいかない + ものがあるという報告もあります. + 何らかの理由で, Linux LKM がロードできな + い場合は, + + +options LINUX + + をカーネルの設定ファイルに指定して, + エミュレータをスタティックにリンク + してください. + + FreeBSDカーネルのコンフィグレーション + の節の記述にしたがって config と, + 新しいカーネルのインストールをおこ + なってください. + + + + Linux ランタイムライブラリのインストール + + + linux_lib port を使用してのインストール + + 多くの Linux + アプリケーションはシェアードライブラリを使用しますので, + シェアードライブラリのインストールが終了しなければ, + エミュレータのイン ストールは終わったことになりません. + 手動でもインストールできますが, linux_lib port + を使用するのが簡単です. + + &prompt.root; cd /usr/ports/emulators/linux_lib +&prompt.root; make all install + + これで, Linux + エミュレータが動作するようになったはずです. 伝説(とメー + ルのアーカイブ :-) によれば, Linux + エミュレーションは, ZMAGIC ライブラ リとリンクされている + Linux バイナリに対して, 最もうまく動作するようで す. + Slackware V2.0 などに使われている QMAGIC ライブラリだと, + エミュレー タが胸やけするかもしれません. + マイナーバージョンの不一致などを + 報告するプログラムもありますが, + 普通は 問題にならないようです. + + + + 手動でのライブラリのインストール + + “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 + 以下にインストールする 必要があります. + + + FreeBSD 2.2-RELEASE 以降では, + /compat/linux + にかかわる動作が多少異なっており, + ライブラリだけでなくすべてのファイルが, “shadow + root” /compat/linux + から検索されるようになっています. + + Linux のプログラムが必要とする + シェアードライブラリを探す必要があるのは, FreeBSD + のシステムに Linux + のプログラムをインストールする最初の数回だ けでしょう. + それが過ぎれば, 十分な Linux のシェアードライブラリがシス + テムにインストールされ, 新しくインストールした Linux + のバイナリも, 余 + 計な作業をせずに動作させることができるようになります. + + + + シェアードライブラリの追加 + + linux_port をインストールした後に, + アプリケーションが必要なライブラリ + が存在しないというエラーを出したらどうしたらよいでしょうか? + Linux のバ イナリがどのシェアードライブラリを必要とし, + そしてどこで入手できるか, どのように探したらよいでしょうか? + 基本的には, 以下の2種類の方法があり + ます(以下の手順にしたがう場合には, + 必要なインストール作業をおこなう FreeBSD シ ステム上で root + として作業をおこなう必要があります). + + Linux システムを使用でき, + 必要なシェアードライブラリが調べられる場 合には, 単に + FreeBSD のシステムにそのライブラリをコピーするだけで す. + 例えば, DOOM の Linux バイナリを ftp で持ってきたとします. + 使用で きる Linux システムの上に転送して, ldd + linuxxdoom とやれば, 必要とす + るシェアードライブラリがチェックできます. + + &prompt.user; 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 + + + 最初のカラムに表示されているファイルと, + メジャーバージョンの同じ 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 + + + + シンボリックリンクのメカニズムは, Linux + バイナリにのみ必要 + なことに注意してください. FreeBSD のランタイムリンカは, + メジャーリビジョ + ン番号の一致したライブラリを検索しますから, + ユーザが気にする必要はあり ません. + + + + + <filename>ld.so</filename> の設定 — FreeBSD + 2.2-RELEASE およびそれ以降 + + このセクションは, FreeBSD 2.2-CURRENT + 以降にのみ当てはまります. 2.1-STABLE を使用している方は, + 飛ばしてください. + + 最後に, FreeBSD 2.2-RELEASE を使われている場合は, Linux + のランタイムリンカと + その設定ファイルがシステムに導入されていることを + 確認してください. これらのファイルは, FreeBSD + システムの適切な位置(/compat/linux + ツリー以 下)にコピーされている必要があります. + + /compat/linux/lib/ld.so +/compat/linux/etc/ld.so.config + + 使用できる Linux システムがない場合は, + 必要なファイルは近くの FTP サイ トから入手してください. + 各種ファイルの入手先についての情報を, 後に付 けておきます. + ここでは, 必要なファイルの入手先がわかっているものとしま + す. + + 以下のファイルを取得します + (バージョンの不一致を避けるために, すべて同一 の FTP + サイトから入手してください). 取得したファイルを + /compat/linux + 以下にインストールしてください(例えば, + /foo/bar は, + /compat/linux/foo/bar + にインストールされます). + + /sbin/ldconfig +/usr/bin/ldd +/lib/libc.so.x.y.z +/lib/ld.so + + ldconfigldd + は, /compat/linux + の下にある必要はありません. システム + のどこにあっても構いません. ただ, FreeBSD + の同名のコマンドと間違えないように 注意してください. + /usr/local/bin の中に, + ldconfig-linux, + ldd-linux とし + てインストールするのもよいアイディアでしょう. + + /compat/linux/etc/ld.so.conf + ファイルを作成し, Linux ラインタイムリンカ + がシェアードライブラリを検索する + ディレクトリを記述してください. このファ + イルはプレインテキストファイルで, + それぞれの行にディレクトリ名を含みま す. + /lib/usr/lib + は標準ですから, 以下のようなディレクトリが追加できま + す. + + +/usr/X11/lib +/usr/local/lib + + Linux バイナリが, /lib/libc.so + というライブラリを開いた場合, エミュレー タは内部で, + ファイル名を /compat/linux/lib/libc.so + にマップします. エ ミュレータがライブラリを検索するために, + すべての Linux のライブラリ + (/compat/linux/lib/libc.so, + /compat/linux/usr/X11/lib/libX11.so + など) は, /compat/linux + 以下にインストールされていなければなりません. + + FreeBSD 2.2-RELEASE を使用している場合は, Linux の + ldconfig プログラム を実行する必要があります. + + &prompt.root; cd /compat/linux/lib +&prompt.root; /compat/linux/sbin/ldconfig + + ldconfig + はスタティックリンクされていますから, + 実行するのにシェアードラ イブラリを必要としません. ldconfig + は, /compat/linux/etc/ld.so.cache + ファイルを作成し, + すべてのシェアードライブラリの名前を格納します. ライ + ブラリの追加をおこなった場合には, ldconfig を再実行して, + このファイルを作り 直さなければなりません. + + 2.1-STABLE では, + /compat/linux/etc/ld.so.cache + をインストールしたり, ldconfig + を実行したりしないでください. 2.1-STABLE では, システムコー + ルの実装方法が異なるため, ldconfig + は使用されません. + + これで, libc シェアードライブラリを必要とする Linux + バイナリを実行する設 定が終了しました. + lddldd + 自身に実行してテストしてください. + ldd-linux + としてインストールしている場合は, 以下のような結果になるはず + です. + + &prompt.root; ldd-linux `which ldd-linux` +libc.so.4 (DLL Jump 4.5pl26) => /lib/libc.so.4.6.29 + + ここまで終了すれば, 新しい Linux のバイナリを + インストールできます. + 新しい Linux バイナリをインストールするときは, + それがシェアードライブ + ラリを必要とするかどうか確認してください. 必要とする場合は, + /compat/linux 以下に + インストールされているかどうか確認してください. こ + れは, Linux の ldd を新しいプログラムに + 対して実行し, 出力を確認するこ + とによりおこなえます. + ldd + (&man.ldd.1; マニュアルページも参照してください)は, プ + ログラムが必要とするシェアードライブラリのリストを, + majorname + (jumpversion) => + fullname + という形式で出力します. + + fullname のかわりに + not found と出力される場合は, + ライブラリの追加をす る必要があります. + 必要なライブラリの名前は, majorname に libXXXX + .so.N.mm + という形式で示されています. Linux の FTP サイトで + libXXXX.so.N.mm + を探し, インストールしてください. + XXXX(名前)とN + (メジャー リビジョン番号)は一致している必要があります. + マイナー番号 mm は, それほ + ど重要ではありませんが, + なるべく最新のものをインストールするようにして + ください. + + + + + Linux の ELF バイナリをインストールする + + ELF のバイナリを使うためには, + “焼き印を押す(branding)” 作業が必要になります. + 焼き印を押していない ELF バイナリを実行しようとすると, + 以下のようなエラーメッセージを + うけとってしまうことでしょう. + + &prompt.user; ./my-linux-elf-binary +ELF binary type not known +Abort + + カーネルが FreeBSD の ELF バイナリと Linux のバイナリとを + 見分けられるようにするためには, &man.brandelf.1; + を以下のようにして使ってください: + + &prompt.user; brandelf -t Linux my-linux-elf-binary + + 今ではGNU のツールたちが, + ELFバイナリに自動的に適切な焼き印を押すようになったので, + 今後はこの作業もだんだんと必要なくなってゆくでしょう. + + + + ホストネームリゾルバの設定 + + 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 を削除してください. + + 最後になりますが, 2.1-STABLE を使用している場合は, + RESOLV_HOST_CONF 環境変数を指定して, + アプリケーションにホストテーブル + の検索方法を指定する必要があります. FreeBSD 2.2-RELEASE + かそれ以降を使用している場合 は, スキップしてください. + /bin/csh を使っている場合は, + 以下のようにし ます. + + &prompt.user; setenv RESOLV_HOST_CONF /compat/linux/etc/host.conf + + /bin/shの場合は, + 以下のようにします. + + &prompt.user; RESOLV_HOST_CONF=/compat/linux/etc/host.conf; export RESOLV_HOST_CONF + + + + 必要なファイルを探すには + + + 以下の情報は, この文書が書かれた時点では有効ですが, FTP + サイトの 名前, ディレクトリ, 配布ファイル名などは, + 変更されている可能性がありま す. + + + + 訳注: ここに取り上げられている FTP サイトは, + 日本国内にもミラーサイト が多数存在します. なるべく近くの + FTP サイトからファイルを入手してくだ さい. + + + Linux は, いくつかのグループが, + それぞれ独自のバイナリ配布セットを作成 して配布しています. + 配布セットは, “Slackware” や + “Yggdrasil” など の名前がつけられています. + これらの配布セットは, 多くの FTP サイトから 入手できます. + ファイルが展開されており, 必要なファイルのみを取得できる + 場合もありますが, + 通常は圧縮された配布セットの形で入手できます. 配布 セットは, + いくつかのサブディレクトリに, gzip で圧縮された tar ファイル + として格納されています. それぞれの配布セットの一次配布先は, + 以下の通り です. + + + + sunsite.unc.edu:/pub/Linux/distributions + + + + tsx-11.mit.edu:/pub/linux/distributions + + + + ヨーロッパのミラーサイトの例: + + + + ftp.luth.se:/pub/linux/distributions + + + + ftp.demon.co.uk:/pub/unix/linux + + + + src.doc.ic.ac.uk:/packages/linux/distributions + + + + 混乱を避けるために, ここでは Slackware だけを取り上げます. + この配布セッ トは, 多くのサブディレクトリ内にある + 別々のパッケージから構成されていま す. 通常, + パッケージはインストールプログラムにより自動的に制御されま + すが, “手動で”おこなうことも可能です. + まず配布セットの中の, contents + サブディレクトリの内容を書くにしてください. ここには多く + の小さなテキストファイルが含まれおり, + それぞれのパッケージの内容が記述 されています. + 必要なファイルを探している場合は, まず contents 内のテキ + ストファイルを取得し, そのファイルの中から grep + を使用して検索するのが, 最も速い方法でしょう. + 以下に必要となるであろうファイルを, grep を使用 + して検索した例を示します. + + + + + + Library + Package + + + + + ld.soldso + ldconfigldso + lddldso + libc.so.4shlibs + libX11.so.6.0xf_lib + libXt.so.6.0xf_lib + libX11.so.3oldlibs + libXt.so.3oldlibs + + + + + この場合は, ldso, shlibs, xf_lib, oldlibs + というパッケージが必要なこと がわかります. + それぞれのcontentsファイルの中で, PACKAGE + LOCATION と書いてある行を探してください. + その行に, パッケージが含まれている“ディ スク”, + 今回の場合はサブディレクトリ名が書かれています. たとえば, + 以下の ようになります. + + + + + Package + Location + + + + + ldso diska2 + shlibs diska2 + oldlibs diskx6 + xf_lib diskx9 + + + + + “diskXX” + というのは, 配布セットの + slackware/XX + サブディレクトリ を示します. それ以外の場合は, + contrib サブディレクトリに格納されて + います. 今回の場合は, + 以下のファイルを取得すればいいことがわかります (ファイル名は, + 配布セットのルートディレクトリからの相対パスで示してあ + ります). + + + + slakware/a2/ldso.tgz + + + + slakware/a2/shlibs.tgz + + + + slakware/x6/oldlibs/tgz + + + + slakware/x9/xf_lib.tgz + + + + gzip で圧縮された tar ファイルから必要なファイルを + /compat/linux ディ + レクトリに格納してください(必要なファイルのみを展開するか, + あるいは必 要でないファイルを後で削除してください). + これで作業は終了です. + + 参照: + + ftp.freebsd.org:pub/FreeBSD/2.0.5-RELEASE/xperimnt/linux-emu/README + + /usr/src/sys/i386/ibcs2/README.iBCS2 + + + + + FreeBSD への Mathematica のインストール + + 原作: &a.rich; and &a.chuck; + + 訳: &a.jp.kiroh;. + + この文書は, Mathematica 2.2 の Linux + バイナリディストリビューションを, FreeBSD 2.1 + にインストールする方法について説明します. + + Mathematica は, そのままでは FreeBSD + をサポートしていませんが, Linux は サポートしています. ですから, + Linux エミュレータの設定が終わってしまえ ば, Mathematica + を動作させる環境はほとんど整ったことになります. + + DOS 用のスチューデント版 Mathematica から Linux + バージョンへのアップグレー ド価格は, 執筆時点 (1996年5月) では, + $45.00 です. 直接 Wolfram(電話番号(217) 398-6500)に注文して, + 支払いはクレジットカー ドでおこなえます. + + + Mathematica ディストリビューションの展開 + + バイナリは, Wolfram から CDROM で配布されています. CDROM + には, 1ダー スほどの tar ファイルが含まれており, + それぞれサポートされているアーキテ クチャに対応しています. + Linux 用のファイルは, LINUX.TAR です. + 例えば /usr/local/Mathematica + 以下にインストールする場合は, 以下のようにしま す. + + &prompt.root; cd /usr/local +&prompt.root; mkdir Mathematica +&prompt.root; cd Mathematica +&prompt.root; tar -xvf /cdrom/LINUX.TAR + + + + Mathematica パスワードの取得 + + Mathematica を実行する前に, 使用するマシンに対応した + “machine ID” を Wolfram + から取得する必要があります. + + Linux 互換ランタイムライブラリがインストールされており, + mathematica の展 開が終了したら, Install ディレクトリで + mathinfo プログラムを使用す ることで + “machine ID” を得ることができます. + + &prompt.root; cd /usr/local/Mathematica/Install +&prompt.root; mathinfo +LINUX: 'ioctl' fd=5, typ=0x89(), num=0x27 not implemented +richc.isdn.bcm.tmc.edu 9845-03452-90255 + + ここで, richc の “machine ID” + は, 9845-03452-90255 となります. ioctl + のメッセージは無視してください. まだ FreeBSD + では実装されていません. Mathematica + を実行するたびに同様のメッセージが表示されますが, 実際の使 + 用に問題はありませんので, 無視してかまいません. + + 電子メールや電話, ファックスなどで Wolfram に + “machine ID” を知らせ て登録すると, + いくつかの番号のグループからなるパスワードが送り返されて + きます. パスワードを, マシン名, ライセンス番号とともに, + mathpass ファ イルに追加します. + + 追加は, 以下のようにおこないます. + + &prompt.root; cd /usr/local/Mathematica/Install +&prompt.root; math.install + + ライセンス番号と, Wolfram + から送られてきたパスワードを入力を求めます. + 入力を間違えたりして, math.install + の実行が失敗しても大丈夫です. mathpass + ファイルを手動で編集して, 情報を訂正してください. + + パスワードの入力後, math.install では, + インストール方法を, デフォルト 設定でのインストールか, + 自分で方法を指定するインストールから選ぶことが できます. + 筆者のようにインストールプログラムを信用していない場合は, 自 + 分でディレクトリを指定する方を選択するでしょう. + 自分で指定するインストー ルを選んだ場合, math.install + 自身ではディレクトリの作成はおこないません. 注意してください. + 別のウィンドウでシェルを開いて, 指定するディレクトリ + を作成してください. 存在しないディレクトリを指定して, + math.install が インストールに失敗した場合には, + ディレクトリを作成し, math.install を 再び実行してください. + 筆者らがインストール先に選んだディレクトリは, 以 下の通りです. + くれぐれもあらかじめ作成してから, + math.install で指定す + るようにしてください. + + + + + + + /usr/local/Mathematica/bin + for binaries + + + + + /usr/local/Mathematica/man/man1 + for man pages + + + + /usr/local/Mathematica/lib/X11 + for the XKeysymb file + + + + + + また, システムレコードファイルとして, + /tmp/math.record を使用するように + 設定することもできます. このファイルには, + セッションのログが記録されま す. この設定が終了すると, + math.install は残りのファイルを展開して, 必 + 要な場所に格納します. + + Mathematica ノートブックの機能は, X + フロントエンドとして本体とは別に含 まれています. X + フロントエンドを正しくインストールするには, + /usr/local/Mathematica/FrontEnd + ディレクトリに移動し, ./xfe.install シェ + ルスクリプトを実行します. + インストール先を指定しなければなりませんが, + あらかじめ作成する必要はありません. 必要なディレクトリは, + すべて math.install によって作成されているからです. + インストールが終了したら, + /usr/local/Mathematica/bin + ディレクトリに, mathematica という名前の + シェルスクリプトが新たに作成されているはずです. + + 最後に, Mathematica + がインストールしたシェルスクリプトを修正する必要 があります. + /usr/local/Mathematica/bin + に含まれるすべてのシェルスクリプ + トの先頭部分に以下の行を追加します. + + + XKEYSYMDB=/usr/local/Mathematica/lib/X11/XKeysymDB; export XKEYSYMDB + + これは, Mathematica が使用する Mathematica + バージョンのキーマップファイル XKeysymDB + の場所を指定するものです. + + 2.1-STABLE を使用している場合は, + 以下の行も追加してください. + + + RESOLV_HOST_CONF=/compat/linux/etc/host.conf; export RESOLV_HOST_CONF + + これは, Mathematica に Linux バージョンの host.conf + を使用するように指定し ます. FreeBSD の host.conf の文法は, + Linux のものと異なっているため, この 指定をおこなわないと, + /etc/host.conf + に関わるエラーが発生します. + + 新しいマニュアルページを利用したい場合は, さらに + /etc/manpath.config ファイ + ルを修正する必要があります. また自分の + ~/.cshrc を変更して, + /usr/local/Mathematica/bin + をパスに追加してください. + + これでインストール作業はすべて終了です. + mathematica とタイプすれば, 見栄えのする + Mathematica ノートブックが表示されるはずです. Mathematica + には, Motif ユーザインタフェースが含まれますが, + スタティックにリンクさ れているため, Motif + のライブラリは必要ありあません. 頑張って Mathematica + をインストールしてください. + + + + バグ + + ノートブックフロントエンドは, + 以下のようなエラーメッセージを表示して, + ハングすることがあることが知られています. + + File .../Untitled-1.mb appears to be broken for OMPR.257.0 + + 今のところ原因はわかっていませんが, + このバグが影響を及ぼすのは, ノートブッ クの X window + フロントエンドのみです. Mathematica エンジン本体に影響は + ありません. そのため, ``math'' + によって起動されるコマンドラインのインタ + フェースを使用している場合は, このバグは関係ありません. + + + + 謝辞 + + &a.sos;と&a.peter;に深く感謝します. + Linuxエミュレーションが現在の形に あるのは, 彼らのおかげです. + そして, 彼ら二人にハッパをかけて, 犬のよう に働かせた Michael + Smithに. 今やLinuxエミュレーションは, linuxよりうま + くlinuxバイナリを実行できます! :-) + + + + + diff --git a/ja_JP.eucJP/books/handbook/mail/chapter.sgml b/ja_JP.eucJP/books/handbook/mail/chapter.sgml new file mode 100644 index 0000000000..ec6b8f0ce6 --- /dev/null +++ b/ja_JP.eucJP/books/handbook/mail/chapter.sgml @@ -0,0 +1,692 @@ + + + + 電子メール + + 原作: &a.wlloyd;. + + 訳: &a.jp.mihoko;. 14 January 1997. + + 電子メールのコンフィグレーションは, 多くの システム管理 の書籍で主題 + として取り上げられています. + ネットワークに合わせたメールホスト構築の + 範疇を越えるようなことをする のは, 簡単にはいきません. + + 電子メールのコンフィグレーションの一部は, + ドメインネームシステム (DNS) によって制御されています. + あなた自身で DNS サーバを 立ち上げたい場合には, + /etc/namedb ファイルを + あなたのサーバに合うように変更してください. + さらに詳しい情報が必要な場合には,man -k named + コマンドを実行してください. + + + 基本事項 + + 電子メール交換の主要なプログラムや構成要素を, 次に示します. + “メールホスト” + はあなたのホストやネットワークに対するすべて + の電子メールを配送したり受け取ったりするサーバです. + + + ユーザプログラム + + これは, elm, + pine, + mail や, より洗練された WWW + ブラウザ のようなプログラムです. このプログラムは, 単純に + すべてのメールをローカルメールホスト転送します. この転送は, + sendmail を呼び出すか, + “メールホスト”に対して TCP 上 + の通信を使ってメールを配送するかの + いずれかによっておこないます. + + + + メールホストサーバデーモン + + 通常, このプログラムはバックグラウンドで実行されている + sendmail または smail + です. 実行をやめたり, コマンドライン引数を変更するには, + /etc/rc.conf ファイル (FreeBSD 2.2.2 + より前のバージョンの場合は /etc/sysconfig + ファイル)を編集します. 特別な理由(ファイアウォール を + 構築している場合など)がないかぎり, + 実行する設定にしておくべきです. + + sendmail + は安全なサイト上であっても潜在的にセキュリティ上の + 弱点になることを覚えておいてください. + sendmail のいくつかのバージョンでは, + セキュリティ上の問題が 知られています. + + sendmail は, 電子メールの配送, + 受信の二つの仕事をおこないます. + + sendmail は, + サイトの外側へメールを配送する必要が ある場合, DNS + を参照して配送先のメールを受け取る実際の + ホストを決定します. + + sendmail + が配送エージェントとして動作する場合は, + ローカルキューからメッセージを取り出し, 受信側 + コンピュータ上の sendmail + へインターネットを介して配送します. + + + + DNS — ネームサービス + + ドメインネームシステムとそのデーモン + named は, ホストから IP アドレス, および + ホスト名からメールホストへのマッピングをおこなう + データベースを持っています. IP アドレスは A + レコードで定義します. MX レコードでは, + あなた宛のメールを受け取るメールホストを定義します. もし + あなたのホスト宛のメールに対する MX + レコードを持っていない場合には, + メールはあなたのホストに直接配送されます. + + あなたが自分自身の DNS サーバを実行させていない場合には, + DNS 上の情報を自分で変更することはできません. + インターネットプロバイダを使用している場合には, + プロバイダに依頼して 変更してもらってください. + + + + POP サーバ + + このプログラムはメールボックスからメールを取り出し, + ブラウザにメールを渡します. POP サーバをあなたのマシン上で + 動かしたい場合には, 次の二つの作業をする必要があります. + + + + + pop ソフトウェアを ports コレクション + から入手 します. pop ソフトウェアは, + /usr/ports または + パッケージコレクションにあります. このハンドブックには, + ポート システム + についての完全な解説のセクションがあります. + + + + POP サーバを起動できるように, + /etc/inetd.conf + ファイルを編集します. + + + + 入手した pop プログラムには説明文が付属していますので, + それを読んで ください. + + + + + コンフィグレーション + + + 基本事項 + + あなたのマシンに FreeBSD を普通にインストールして, + /etc/resolv.conf ファイルを設定するか, + またはネームサーバを走らせれば, + 他のホストへ電子メールを送ることができるようになります. + あなたのホスト宛の + メールを特定のホストに配送するようにしたい場合 には, + 次の二つの方法があります. + + + + ネームサーバ (man -k named) + を実行し, あなた自身のドメイン smallminingco.com + を定義する. + + + + あなたのホストに対する現在の DNS + 名に配送されたメールを受け取る. つまり dorm6.ahouse.school.edu + 宛に送られたメールを受け取る. + + + + インターネットへ完全に接続された + あなたのホストに直接メールが配送される ためには, + ネームサーバのどのオプションを使用するかは + あまり重要なことではありません. 大切なのは, あなたが恒久的な + IP アドレスを持っていなくてはいけないと いうことです. + ダイナミック PPP で得られる IP アドレスではダメです. + もしあなたがファイアウォールの内側にいる場合は, + ファイアウォールが smtp トラフィックを + あなたのホストに渡すように設定されていなければいけません. + そのためには, ファイアウォールとなるホストの + /etc/services + + + +smtp 25/tcp mail #Simple Mail Transfer + + と書いておきます. + あなたのホスト上でメールを受けたい場合には, DNS の MX + エントリが あなたのホストアドレスを指しているか, + あなたのホストの DNS 名に対して MX エントリが存在しないことを + 確認してください. + + 次のコマンドを実行してみてください. + + &prompt.root; hostname +newbsdbox.freebsd.org +&prompt.root; host newbsdbox.freebsd.org +newbsdbox.freebsd.org has address 204.216.27.xx + + もしあなたのマシンが上記のメッセージだけを出力したならば, + root@newbsdbox.freebsd.org へのメールは, + 問題なく 配送されるでしょう. + + 上記のメッセージの代わりに, + + &prompt.root; host newbsdbox.freebsd.org +newbsdbox.FreeBSD.org has address 204.216.27.xx +newbsdbox.FreeBSD.org mail is handled (pri=10) by freefall.FreeBSD.org + + というメッセージが出力された場合は, + あなたのマシンに直接配送された すべてのメールは, + freefall + 上の同じユーザ名に配送されてます. + + この情報は, あなたのドメインネームサーバ上で設定します. + この設定をおこなうホストは, + /etc/resolv.conf + にプライマリネームサーバとして + 書いたホストと同じホストであるべきです. + + メールルーティング情報をもつ DNS レコードは, + メールエクスチェンジャエントリ (MX エントリ) です. MX + エントリが存在しない場合には, アドレスレコードにしたがって, + 直接宛先ホストに配送されます. + + freefall.freebsd.org + の現時点での MX エントリは, 次のようになっています. + + +freefall MX 30 mail.crl.net +freefall MX 40 agora.rdrop.com +freefall HINFO Pentium FreeBSD +freefall MX 10 freefall.FreeBSD.org +freefall MX 20 who.cdrom.com +freefall A 204.216.27.xx +freefall CNAME www.FreeBSD.org + + freefall は多くの MX + エントリを持っています. もっとも MX の値が小さいホストが, + 最終的にメールを受け取ります. もし freefall + が他の処理で忙しかったり, ダウンしているような場合には, + 他のホストが, 一時的にメールをキューにいれます. + + 使い勝手をよくするためには, 代替の MX サイトは, それぞれ + 別の経路でインターネットへ接続しているとよいでしょう. + インターネットプロバイダまたは他の関連サイトが, このサービスを + 提供することができます. + + dig, nslookup や + host コマンド を使うと, + とても便利です. + + + + あなたのドメイン (ネットワーク) に対するメール設定 + + ネットワークメールホストをセットアップするためには, + すべての + ワークステーション宛のメールを直接受ける必要があります. + 言いかえれば, *.smallminingco.com + 宛のすべてのメールを ハイジャックし, そのメールをあなたの + “メールホスト” である個々のマシンにに配送 + します. + + それらのワークステーション上のネットワークユーザは, + たいていメールを POP や telnet 等で受け取ります. + + 同じユーザ名のユーザアカウントが, + 両方のマシンに存在しなければな りません. 必要ならば, + アカウントを作成するために adduser + コマンドを使用してください. shell を + /nonexistant に設定すると, + ユーザはログインできなくなります. + + 使用する予定のメールホストは, + 各ワークステーションごとにメール交換が + できるように設定されていなければなりません. これは, DNS + (すなわち BIND や named) の設定が必要です. 詳細は, + ネットワークの本を参照してください. + + 基本的には, 以下の行を DNS サーバに追加する必要があります. + + + +pc24.smallminingco.com A xxx.xxx.xxx.xxx ; Workstation ip + MX 10 smtp.smallminingco.com ; Your mailhost + + 自前で DNS サーバを実行しているのでなければ, この作業は, + 自分では おこなえません. 自分で DNS + サーバを実行したくない場合は, + インターネットプロバイダ等に依頼して, + 作業をおこなってもらってください. + + この作業により, このワークステーション宛のメールは, MX + (メールエクスチェンジャ) ホストに送られるようになります. A + レコードがどのマシンを指しているかどいうことには関係なく, + メールは MX ホストに送られます. + + この機能は, 仮想電子メールホスト (Virtual E-Mail Hosting) + を実装するために使用されています. + + + + foo.bar というドメインを持つ顧客がいて, foo.bar + 宛のメールをすべて, わたしのマシン smtp.amalliap.com + に送りたいと思っています. このような場合, あなたの DNS + サーバ上で, 以下のようなエントリを作成 + しなければなりません: + + +foo.bar MX 10 smtp.smalliap.com ; your mailhost + + そのドメインに対して電子メールを送りたいだけなら, A + レコードは必要ありません. つまり, foo.bar + に対するアドレスレコードが存在しない限り, ping + foo.bar コマンドが動作することを期待しては + いけません + + メールボックスへの最終的な配送が行われる + メールを実際に受けている メールホスト上では, + sendmail はメールを受け付けているホストを + 知っている必要があります. + + そのためには, (FEATURE(use_cw_file) + を使用している場合) /etc/sendmail.cw + ファイルに pc24.smallminingco.com + を追加するか, /etc/sendmail.cf + ファイルに, Cw myhost.smalliap.com + の行を追加してください. + + もしあなたが本気で sendmail + を使って何かしようと思うなら, sendmail + のソースをインストールするべきです. ソースには, + たくさんのドキュメントも付いています. UUCP のセットアップ の節に + sendmail の + ソースを入手するのに必要な情報が掲載されています. + + + + UUCP のセットアップ + + よくある質問 (FAQ) より抜粋. + + FreeBSD に付属する sendmail + のコンフィグレーションは, + 直接インターネット接続しているサイトに合うように作られてい + ます. メールを UUCP 経由で交換するようにしたい場合には, 別の + sendmail + コンフィグレーションファイルをインストールし + なければなりません. + + /etc/sendmail.cf + を手動で作成することは, 純正主義者 + がおこなうことだと考えられています. sendmail のバージョン 8 + では, m4 プリプロセッサを使用して, + コンフィグレーションファイルを生成する方法が取られています. + この場合, 実際に手動で作成したコンフィグレーションは, + 実際のコンフィグレーションより簡潔です. + 以下の場所にあるコンフィグレーションファイルを + 使用してください. + /usr/src/usr.sbin/sendmail/cf + + システム上にすべてのソースをインストールして いない場合, + sendmail の設定ツールは不完全なままであり, + それは個別のソース配布物の中にあります. CD-ROM + をマウントしてあれば, 以下のようにします. + + &prompt.root; cd /usr/src +&prompt.root; tar -xvzf /cdrom/dists/src/ssmailcf.aa + + 驚かないでください. + これはたった数百キロバイトのサイズのファ イルです. + cf ディレクトリ上にある + README ファイル には, m4 + コンフィグレーションの基本的な紹介が書かれてい ます. + + UUCP での配送には, mailertable + 機能を使用すること をおすすめします. これは + sendamil が配送経路を決定するのに + 使用するデータベースファイルです. + + まずはじめに, .mc + ファイルを作成します. + /usr/src/usr.sbin/snemdail/cf/cf + ディレクトリに これらのファイルを置きます. + ここには既にいくつかの例が 置いてあるので, 見てください. + foo.mc という名前で作成したと仮定すると, + それを有効な sendmail.cf + に変換するためには, まず次のようにします: + + &prompt.root; cd /usr/src/usr.sbin/sendmail/cf/cf +&prompt.root; make foo.cf + + 続いて, もし /usr/obj + 以下のディレクトリが存在しなければ: + + &prompt.root; cp foo.cf /etc/sendmail.cf + + とし, 存在すれば次のようにします: + + &prompt.root; cp /usr/obj/`pwd`/foo.cf /etc/sendmail.cf + + 典型的な .mc + ファイルは次のような内容です: + + +include(`../m4/cf.m4') +VERSIONID(`Your version number') +OSTYPE(bsd4.4) + +FEATURE(nodns) +FEATURE(nocanonify) +FEATURE(mailertable) + +define(`UUCP_RELAY', your.uucp.relay) +define(`UUCP_MAX_SIZE', 200000) + +MAILER(local) +MAILER(smtp) +MAILER(uucp) + +Cw your.alias.host.name +Cw youruucpnodename.UUCP + + nodnsnocanonify + は, メール配送をおこなう 際に, DNS + を参照しないようにするための設定です. + UUCP_RELAY は, 必要な設定ですが, + ここでは理由を 説明できません. その理由について, + ここでは質問しないでください. .UUCP + 仮想ドメインアドレスを扱うことができるインターネット + ホスト名を書いてください. おそらく, 使用する ISP + のメール中継ホスト名をそこに記述する ことになります. + + この設定が終了したら, + /etc/mailertable と呼ばれる + ファイルが必要になります. + このファイルの典型的な例を示します: + + +# +# makemap hash /etc/mailertable.db < /etc/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:sax + + 見て分かるように, これは実際に使用されているファイルの一部 + です. はじめの三行は, ドメインアドレスが指定されたメールが + デフォルトルートに送信せずに, + 配送パスを“短縮”して, 隣接 UUCP + サイトにメールを送るための設定です. 次の行は, メールを SMTP + を使用して配送されているローカル + イーサネットドメイン上のマシンに送信するための設定です. + 最後に, UUCP 接続されているドメインが, .UUCP という仮想ド + メイン表記されている場合です. これは, + uucp-neighbor!recipient + をデフォルト規則で書換えるため です. 最終行は必ず + シングルドット (.) を指定します. + 上記のどのパターンにも当てはまらない送信先に対して, あなた + のメールの世界中へのゲートウェイとして動作してくれる隣接 UUCP + サイトに, UUCP を使って配送します. + uucp-dom: + というキーワードの後に書かれたすべての ノード名は, 隣接 UUCP + サイトでなければなりません. そのサイトと UUCP + 接続を行っているかどうかは, コマンド + uuname + を使用して確かめることができます. + + 実際に使用するには, このファイルを DBM データベースファイ + ルに変換する必要があることを忘れないでください. + これを実行するためのコマンド 行は, + mailertable + の先頭にコメントとして記述されています. 通常, このコマンドは, + mailertable を変更するたびに実行しな + ければなりません. + + 最終ヒント: もしいくつかの特定のメール経路が正しく動作する + かどうかが心配ならば, sendmail の + オプション を覚えておいてください. + このオプションは sendmail を + “アドレステストモード” で起動します. + メールの経路をテストするには, 0 + のあとにメール経路をテスト したいアドレスを入力してください. + 最後の行にあなたが使用する インターネットメールエージェント + (メール中継プログラム) と, + このエージェントに呼び出される宛先のホスト名と, + (翻訳可能な場合) アドレスがが表示されます. このモードを + 終了するには, Control-D を入力します. + + &prompt.user; sendmail -bt +ADDRESS TEST MODE (ruleset 3 NOT automatically invoked) +Enter <ruleset> <address> +> 0 foo@interface-business.de +rewrite: ruleset 0 input: foo @ interface-business . de +… +rewrite: ruleset 0 returns: $# uucp-dom $@ if-bus $: foo < @ interface-business . de + + + + + よくある質問 (FAQ) + + このセクションは, FAQ + から移動してきました. + + + どうして 同じサイトのホストに対して完全な形のドメイン名 + (FQDN) を使わなければいけないの? + + おそらく, + そのホストは実際には違うドメインに属しているのでしょう. + 例えば, もしあなたが foo.bar.edu + ドメインにいて, bar.edu + ドメインの中のmumble + というホストに接続したいと します. その場合あなたは, + mumbleではなく mumble.bar.edu + という完全な形のドメイン名 (FQDN) によっ + てそのホストを参照しなければなりません. + + 伝統的に, これは BSD BIND リゾルバでは許されていました. + しかしながら, FreeBSD に付属する現在の + BIND の バージョンでは, + 自分が属しているドメイン以外では, + 完全な形でないドメイン名に対するデフォルトの省略形は + 使用できません. ですから, 完全でないホスト名 + mumble は, mumble.foo.bar.edu として解決されるか, + ルートドメインに検索しにいくでしょう. + + これは, mumble.bar.edu, + mumble.edu + というように検索し続けるような過去の動作とは異なります. + なぜこれが悪い慣例, さらにはセキュリティーホールと考えられ + るようになった理由については, RFC1535 + を参照してください. + + この問題を回避するには, + + +search foo.bar.edu bar.edu + + という行を + + +domain foo.bar.edu + + に置き換えます.これを自分のマシン上の + /etc/resolv.conf ファイルに + 記述してください. しかしながら, 検索順序は, RFC 1535 に + 書かれている, “ローカル管理と公共の管理の間の境界線” + を越えないことを, あらかじめ確認してください. + + + + Sendmail が <errorname>mail loops back to + myself</errorname> というエラーを出します + + これについては, sendmail FAQ の中で, 次のように答えられて + います: + + +* 次のような 「Local configuration error」というメッセージが出ます: + +553 relay.domain.net config error: mail loops back to myself +554 <user@domain.net>... Local configuration error + +この問題をどうやって解決すればよいでしょうか? + +MX レコードを使って, あるドメイン(例: domain.net)宛にメールを +特定のホスト (この場合, relay.domain.net) に転送しようと設定したと +していますが, 中継ホストは自身が domain.net であるとは認識 +していません. +(FEATURE(use_cs_file) を使用している場合は) +/etc/sendmail.cw に, domain.net を追加してください. +または, 「Cw domain.net」を /etc/sendmail.cf に追加してください. + + sendmail FAQ は, + /usr/src/usr.sbin/sendmail に あります. + “ちょっと凝った”メール設定 をしたい場合は, FAQ + を読むことをおすすめします. + + + + ダイアルアップ PPP + ホストで電子メールを使うにはどうしたらいいの? + + LAN 上にある FreeBSD マシンを, + インターネットに接続したいと します. FreeBSD マシンは, その + LAN でのメールゲートウェイになります. FreeBSD + マシンは専用線接続ではありません + (訳注:ダイアルアップ接続など). + + これには, 少なくとも二つの方法があります. + + 一つは UUCP を使うことです. + + このとき鍵になるのは, あなたのドメインに対するセカンダリ + MX サービス + を提供してくれるインターネットサイトをみつけることです. + + 例: + + +bigco.com. MX 10 bigco.com. + MX 20 smalliap.com. + + 最終的なメール受信先としては, + 一つのホストだけが定義されるべきです (bigco.com 上の + /etc/sendmail.cf ファイルに, Cw + bigco.com を追加します). + + 送信側の sendmail が, + メールを配送しようとしている時, モデムの接続を + 介してあなたのところに接続しようとします. 大抵の場合, + あなたのマシンがオンラインでないために, 接続はタイムアウト + してしまうでしょう. sendmail は自動的に, + メールをセカンダリの MX サイト に + (あなたのインターネットプロバイダ) に配送します. セカンダリ MX + サイトは, (/etc/rc.conf ファイル に + sendmail_flag = "-bd + -q15m"と書かれている場合) 15 分ごとに, + プライマリ MX サイトにメールを配送しようと, + あなたのホストに接続しに いきます. + + ログインスクリプトとして, + このようなものを使うとよいでしょう. + + +#!/bin/sh +# Put me in /usr/local/bin/pppbigco +( sleep 60 ; /usr/sbin/sendmail -q ) & +/usr/sbin/ppp -direct pppbigco + + ユーザごとにログインスクリプトを作りたい場合には, 上記 + のスクリプトの代わりに, sendmail + -qRbigco.com を使用する こともできます. + このようにすると, キューの中の bigco.com に対する + すべてのメールは, すぐに強制的に処理されます. + + + さらに, 次のような改良もできます. + + 以下は, freebsd-isp + メイリングリストから抜粋してきたメッセージです. + + +> 私たちはお客様に対して, セカンダリ 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 レコードを定義してください. + + + + + diff --git a/ja_JP.eucJP/books/handbook/mailing-lists.ent b/ja_JP.eucJP/books/handbook/mailing-lists.ent new file mode 100644 index 0000000000..1469f5b360 --- /dev/null +++ b/ja_JP.eucJP/books/handbook/mailing-lists.ent @@ -0,0 +1,107 @@ + + +freebsd-announce@FreeBSD.ORG"> + +freebsd-advocacy@FreeBSD.ORG"> + +cvs-all@FreeBSD.ORG"> + +freebsd-database@FreeBSD.ORG"> + +freebsd-doc@FreeBSD.ORG"> + +freebsd-bugs@FreeBSD.ORG"> + +freebsd-chat@FreeBSD.ORG"> + +freebsd-current@FreeBSD.ORG"> + +freebsd-emulation@FreeBSD.ORG"> + +freebsd-fs@FreeBSD.ORG"> + +freebsd-hackers@FreeBSD.ORG"> + +freebsd-hardware@FreeBSD.ORG"> + +freebsd-isdn@FreeBSD.ORG"> + +freebsd-isp@FreeBSD.ORG"> + +freebsd-java@FreeBSD.ORG"> + +freebsd-jobs@FreeBSD.ORG"> + +freebsd-mobile@FreeBSD.ORG"> + +freebsd-mozilla@FreeBSD.ORG"> + +freebsd-multimedia@FreeBSD.ORG"> + +freebsd-net@FreeBSD.ORG"> + +new-bus-arch@bostonradio.org"> + +freebsd-newbies@FreeBSD.ORG"> + +freebsd-ports@FreeBSD.ORG"> + +freebsd-questions@FreeBSD.ORG"> + +freebsd-scsi@FreeBSD.ORG"> + +freebsd-security@FreeBSD.ORG"> + +freebsd-security-notifications@FreeBSD.ORG"> + +freebsd-small@FreeBSD.ORG"> + +freebsd-smp@FreeBSD.ORG"> + +freebsd-stable@FreeBSD.ORG"> + +freebsd-tokenring@FreeBSD.ORG"> + +majordomo@FreeBSD.ORG"> + +freebsd-core@FreeBSD.ORG"> diff --git a/ja_JP.eucJP/books/handbook/mirrors/chapter.sgml b/ja_JP.eucJP/books/handbook/mirrors/chapter.sgml new file mode 100644 index 0000000000..d103cb2707 --- /dev/null +++ b/ja_JP.eucJP/books/handbook/mirrors/chapter.sgml @@ -0,0 +1,1217 @@ + + + + FreeBSD の入手方法 + + + CD-ROM 出版社 + + FreeBSD は Walnut Creek CDROM から出されている CD-ROM + から入手できます: + +
+ Walnut Creek CDROM + 4041 Pike Lane, Suite F + Concord + CA, 94520 + USA + Phone: +1 925 674-0783 + Fax: +1 925 674-0821 + Email: info@cdrom.com + WWW: http://www.cdrom.com/ +
+
+ + + FTP サイト + + FreeBSD の公式な情報は anonymous FTP によって以下の場所から + 入手できます: + +
+ ftp://ftp.FreeBSD.ORG/pub/FreeBSD. +
+
+ + FreeBSD + ミラーサイトデーターベース FreeBSD ハンドブックの + “ミラーサイト一覧” + よりも正確です.というのはその情報を DNS から取得するので, + 静的に記述されたリストよりも信頼性が高いのです. + + さらに, FreeBSD は以下のミラーサイトから anonymous FTP + によって 入手できます. もし FreeBSD を anonymous FTP + によって手にいれる場合は, + 近くのサイトを利用するようにしてください. + + Argentina, + Australia, + Brazil, + Canada, + Czech Republic, + Denmark, + Estonia, + Finland, + France, + Germany, + Hong Kong, + Ireland, + Israel, + Japan, + Korea, + Netherlands, + Poland, + Portugal, + Russia, + South Africa, + Spain, + Slovak Republic, + Slovenia, + Sweden, + Taiwan, + Thailand, + UK, + Ukraine, + USA. + + + アルゼンチン + + 何か問題がある場合は,このドメインの + hostmaster hostmaster@ar.FreeBSD.ORG + に連絡してください. + + + + ftp.ar.FreeBSD.ORG/pub/FreeBSD + + + + + + オーストラリア + + 何か問題がある場合は, このドメインの hostmaster + hostmaster@au.FreeBSD.ORG + に連絡してください. + + + + ftp://ftp.au.FreeBSD.ORG/pub/FreeBSD + + + + ftp://ftp2.au.FreeBSD.ORG/pub/FreeBSD + + + + ftp://ftp3.au.FreeBSD.ORG/pub/FreeBSD + + + + ftp://ftp4.au.FreeBSD.ORG/pub/FreeBSD + + + + + + ブラジル + + 何か問題がある場合は, このドメインの hostmaster + hostmaster@br.FreeBSD.ORG + に連絡してください. + + + + ftp://ftp.br.FreeBSD.ORG/pub/FreeBSD + + + + ftp://ftp2.br.FreeBSD.ORG/pub/FreeBSD + + + + ftp://ftp3.br.FreeBSD.ORG/pub/FreeBSD + + + + ftp://ftp4.br.FreeBSD.ORG/pub/FreeBSD + + + + ftp://ftp5.br.FreeBSD.ORG/pub/FreeBSD + + + + ftp://ftp6.br.FreeBSD.ORG/pub/FreeBSD + + + + ftp://ftp7.br.FreeBSD.ORG/pub/FreeBSD + + + + + + カナダ + + 何か問題がある場合は, このドメインの hostmaster + hostmaster@ca.FreeBSD.ORG + に連絡してください. + + + + ftp://ftp.ca.FreeBSD.ORG/pub/FreeBSD + + + + + + チェコ + + + + ftp://sunsite.mff.cuni.cz/OS/FreeBSD + 連絡先: jj@sunsite.mff.cuni.cz. + + + + + + デンマーク + + 何か問題がある場合は,このドメインの hostmaster + hostmaster@dk.FreeBSD.ORG + に連絡してください. + + + + ftp://ftp.dk.freeBSD.ORG/pub/FreeBSD + + + + + + エストニア + + 何か問題がある場合は, このドメインの hostmaster + hostmaster@ee.FreeBSD.ORG + に連絡してください. + + + + ftp://ftp.ee.freebsd.ORG/pub/FreeBSD + + + + + + フィンランド + + 何か問題がある場合は, このドメインの hostmaster + hostmaster@fi.FreeBSD.ORG + に連絡してください. + + + + ftp://ftp.fi.freebsd.ORG/pub/FreeBSD + + + + + + フランス + + 何か問題がある場合は, このドメインの hostmaster + hostmaster@fr.FreeBSD.ORG + に連絡してください. + + + + ftp://ftp.fr.FreeBSD.ORG/pub/FreeBSD + + + + ftp://ftp2.fr.FreeBSD.ORG/pub/FreeBSD + + + + ftp://ftp3.fr.FreeBSD.ORG/pub/FreeBSD + + + + + + ドイツ + + 何か問題がある場合は, このドメインの hostmaster + hostmaster@de.FreeBSD.ORG + に連絡してください. + + + + ftp://ftp.de.FreeBSD.ORG/pub/FreeBSD + + + + ftp://ftp2.de.FreeBSD.ORG/pub/FreeBSD + + + + ftp://ftp3.de.FreeBSD.ORG/pub/FreeBSD + + + + ftp://ftp4.de.FreeBSD.ORG/pub/FreeBSD + + + + ftp://ftp5.de.FreeBSD.ORG/pub/FreeBSD + + + + ftp://ftp6.de.FreeBSD.ORG/pub/FreeBSD + + + + ftp://ftp7.de.FreeBSD.ORG/pub/FreeBSD + + + + + + 香港 + + + + ftp://ftp.hk.super.net/pub/FreeBSD +連絡先: ftp-admin@HK.Super.NET. + + + + + + アイルランド + + 何か問題がある場合は, このドメインの hostmaster + hostmaster@ie.FreeBSD.ORG + に連絡してください. + + + + ftp://ftp.ie.FreeBSD.ORG/pub/FreeBSD + + + + + + イスラエル + + 何か問題がある場合は, このドメインの hostmaster + hostmaster@il.FreeBSD.ORG + に連絡してください. + + + + ftp://ftp.il.FreeBSD.ORG/pub/FreeBSD + + + + ftp://ftp2.il.FreeBSD.ORG/pub/FreeBSD + + + + + + 日本 + + 何か問題がある場合は, このドメインの hostmaster + hostmaster@jp.FreeBSD.ORG + に連絡してください. + + + + ftp://ftp.jp.FreeBSD.ORG/pub/FreeBSD + + + + ftp://ftp2.jp.FreeBSD.ORG/pub/FreeBSD + + + + ftp://ftp3.jp.FreeBSD.ORG/pub/FreeBSD + + + + ftp://ftp4.jp.FreeBSD.ORG/pub/FreeBSD + + + + ftp://ftp5.jp.FreeBSD.ORG/pub/FreeBSD + + + + ftp://ftp6.jp.FreeBSD.ORG/pub/FreeBSD + + + + + + 韓国 + + 何か問題がある場合は, このドメインの hostmaster + hostmaster@kr.FreeBSD.ORG + に連絡してください. + + + + ftp://ftp.kr.FreeBSD.ORG/pub/FreeBSD + + + + ftp://ftp2.kr.FreeBSD.ORG/pub/FreeBSD + + + + + ftp://ftp3.kr.FreeBSD.ORG/pub/FreeBSD + + + + ftp://ftp4.kr.FreeBSD.ORG/pub/FreeBSD + + + + ftp://ftp5.kr.FreeBSD.ORG/pub/FreeBSD + + + + ftp://ftp6.kr.FreeBSD.ORG/pub/FreeBSD + + + + + + オランダ + + 何か問題がある場合は, このドメインの hostmaster + hostmaster@nl.FreeBSD.ORG + に連絡してください. + + + + ftp://ftp.nl.freebsd.ORG/pub/FreeBSD + + + + + + ポーランド + + 何か問題がある場合は,このドメインの hostmaster + hostmaster@pl.FreeBSD.ORG + に連絡してください. + + + + ftp://ftp.pl.freebsd.ORG/pub/FreeBSD + + + + + + ポルトガル + + 何か問題がある場合は, このドメインの hostmaster + hostmaster@pt.FreeBSD.ORG + に連絡してください. + + + + ftp://ftp.pt.freebsd.org/pub/FreeBSD + + + + ftp://ftp2.pt.freebsd.org/pub/FreeBSD + + + + + + ロシア + + 何か問題がある場合は, このドメインの + hostmaster hostmaster@ru.FreeBSD.ORG + に連絡してください. + + + + ftp://ftp.ru.freebsd.org/pub/FreeBSD + + + + ftp://ftp2.ru.freebsd.org/pub/FreeBSD + + + + ftp://ftp3.ru.freebsd.org/pub/FreeBSD + + + + ftp://ftp4.ru.freebsd.org/pub/FreeBSD + + + + + + 南アフリカ + + 何か問題がある場合は, このドメインの hostmaster + hostmaster@za.FreeBSD.ORG + に連絡してください. + + + + ftp://ftp.za.FreeBSD.ORG/pub/FreeBSD + + + + ftp://ftp2.za.FreeBSD.ORG/pub/FreeBSD + + + + ftp://ftp3.za.FreeBSD.ORG/pub/FreeBSD + + + + + + スロベニア + + 何か問題がある場合には, このドメインの hostmaster + hostmaster@si.FreeBSD.ORG + に連絡してください. + + + + ftp://ftp.si.freebsd.ORG/pub/FreeBSD + + + + + + スロヴァキア共和国 + + 何か問題がある場合には, このドメインの hostmaster + hostmaster@sk.FreeBSD.ORG + に連絡してください. + + + + ftp://ftp.sk.freebsd.ORG/pub/FreeBSD + + + + + + + スペイン + + 何か問題がある場合は, このドメインの hostmaster + hostmaster@es.FreeBSD.ORG + に連絡してください. + + + + ftp://ftp.es.freebsd.ORG/pub/FreeBSD + + + + + + スウェーデン + + 何か問題がある場合は, このドメインの hostmaster + hostmaster@se.FreeBSD.ORG + に連絡してください. + + + + ftp://ftp.se.FreeBSD.ORG/pub/FreeBSD + + + + ftp://ftp2.se.FreeBSD.ORG/pub/FreeBSD + + + + ftp://ftp3.se.FreeBSD.ORG/pub/FreeBSD + + + + + + 台湾 + + 何か問題がある場合は, このドメインの hostmaster + hostmaster@tw.FreeBSD.ORG + に連絡してください. + + + + ftp://ftp.tw.FreeBSD.ORG/pub/FreeBSD + + + + ftp://ftp2.tw.FreeBSD.ORG/pub/FreeBSD + + + + ftp://ftp3.tw.FreeBSD.ORG/pub/FreeBSD + + + + + + タイ + + + + ftp://ftp.nectec.or.th/pub/FreeBSD + 連絡先: ftpadmin@ftp.nectec.or.th. + + + + + + ウクライナ + + + + ftp://ftp.ua.FreeBSD.ORG/pub/FreeBSD + 連絡先: freebsd-mnt@lucky.net. + + + + + + イギリス + + 何か問題がある場合は, このドメインの hostmaster + hostmaster@uk.FreeBSD.ORG + に連絡してください. + + + + ftp://ftp.uk.FreeBSD.ORG/pub/FreeBSD + + + + ftp://ftp2.uk.FreeBSD.ORG/pub/FreeBSD + + + + ftp://ftp3.uk.FreeBSD.ORG/pub/FreeBSD + + + + ftp://ftp4.uk.FreeBSD.ORG/pub/FreeBSD + + + + + + アメリカ + + 何か問題がある場合は, このドメインの hostmaster + hostmaster@FreeBSD.ORG + に連絡してください. + + + + ftp://ftp.FreeBSD.ORG/pub/FreeBSD + + + + ftp://ftp2.FreeBSD.ORG/pub/FreeBSD + + + + ftp://ftp3.FreeBSD.ORG/pub/FreeBSD + + + + ftp://ftp4.FreeBSD.ORG/pub/FreeBSD + + + + ftp://ftp5.FreeBSD.ORG/pub/FreeBSD + + + + ftp://ftp6.FreeBSD.ORG/pub/FreeBSD + + + + + + + FreeBSD (2.0C またはそれ以降) の輸出規制コード (eBones と + secure) の 最新のバージョンは以下の場所から入手できます. + もしあなたがアメリカやカナダ以外にいるのであれば, secure (DES) + と eBones (Kerberos) を + 以下の外国向けの配布サイトから手にいれてください: + + + 南アフリカ + + このドメインの Hostmaster + hostmaster@internat.FreeBSD.ORG . + + + + ftp://ftp.internat.FreeBSD.ORG/pub/FreeBSD + + + + ftp://ftp2.internat.FreeBSD.ORG/pub/FreeBSD + + + + + + ブラジル + + このドメインの Hostmaster + hostmaster@br.FreeBSD.ORG . + + + + ftp://ftp.br.FreeBSD.ORG/pub/FreeBSD + + + + + + フィンランド + + + + ftp://nic.funet.fi/pub/unix/FreeBSD/eurocrypt +連絡先: count@nic.funet.fi. + + + + + +
+ + + CTM サイト + + CTM/FreeBSD + は以下のミラーサイトから anonymous FTP によって入手できます. + もし CTM を anonymous FTP によって手にいれる場合は, + 近くのサイトを利用するようにしてください. + + 何か問題がある場合は, &a.phk;に連絡してください. + + + カリフォルニア, サンフランシスコ近辺, + 公式なソース + + + + ftp://ftp.freebsd.org/pub/FreeBSD/CTM + + + + + + ドイツ, トリエル + + + + ftp://ftp.uni-trier.de/pub/unix/systems/BSD/FreeBSD/CTM + + + + + + 南アフリカ, ctm, sup, + CVSupなどの古い差分ファイルのバックアップサーバ + + + + ftp://ftp.internat.freebsd.org/pub/FreeBSD/CTM + + + + + + 台湾/中華民国, チャーイー(嘉義) + + + + ftp://ctm.tw.freebsd.org/pub/freebsd/CTM + + + + ftp://ctm2.tw.freebsd.org/pub/FreeBSD/CTM + + + + ftp://ctm3.tw.freebsd.org/pub/freebsd/CTM + + + + + + + 近くにミラーサイトがない場合やミラーが不完全な場合は, + + http://ftpsearch.ntnu.no/ftpsearch の + FTP search + を試してください. + FTP search はノルウェーの Trondheim にある, + フリーの素晴らしい アーカイブサーバです. + + + + CVSup サイト + + FreeBSD の CVSup + サーバは以下のサイトで稼働しています: + + + アルゼンチン + + + + cvsup.ar.FreeBSD.ORG + (maintainer msagre@cactus.fi.uba.ar) + + + + + + オーストラリア + + + + cvsup.au.FreeBSD.ORG + (maintainer dawes@physics.usyd.edu.au) + + + + + + ブラジル + + + + cvsup.br.FreeBSD.ORG + (maintainer cvsup@cvsup.br.freebsd.org) + + + + + + カナダ + + + + cvsup.ca.FreeBSD.ORG + (maintainer dm@globalserve.net) + + + + + + デンマーク + + + + cvsup.dk.FreeBSD.ORG + (maintainer jesper@skriver.dk) + + + + + + エストニア + + + + cvsup.ee.FreeBSD.ORG + (maintainer taavi@uninet.ee) + + + + + + フィンランド + + + + cvsup.fi.FreeBSD.ORG + (maintainer count@key.sms.fi) + + + + + + ドイツ + + + + cvsup.de.FreeBSD.ORG + (maintainer wosch@freebsd.org) + + + + cvsup2.de.FreeBSD.ORG + (maintainer petzi@freebsd.org) + + + + cvsup3.de.FreeBSD.ORG + (maintainer ag@leo.org) + + + + + + アイスランド + + + + cvsup.is.FreeBSD.ORG + (maintainer adam@veda.is) + + + + + + 日本 + + + + cvsup.jp.FreeBSD.ORG + (maintainer simokawa@sat.t.u-tokyo.ac.jp) + + + + cvsup2.jp.FreeBSD.ORG + (maintainer max@FreeBSD.ORG) + + + + cvsup3.jp.FreeBSD.ORG + (maintainer shige@cin.nihon-u.ac.jp) + + + + cvsup4.jp.FreeBSD.ORG + (maintainer + cvsup-admin@ftp.media.kyoto-u.ac.jp) + + + + cvsup5.jp.FreeBSD.ORG + (maintainer cvsup@imasy.or.jp) + + + + + + オランダ + + + + cvsup.nl.FreeBSD.ORG + (maintainer xaa@xaa.iae.nl) + + + + + + ノルウェー + + + + cvsup.no.FreeBSD.ORG + (maintainer Tor.Egge@idt.ntnu.no) + + + + + + ポーランド + + + + cvsup.pl.FreeBSD.ORG + (maintainer Mariusz@kam.pl) + + + + + + ロシア + + + + cvsup.ru.FreeBSD.ORG + (maintainer mishania@demos.su) + + + + cvsup2.ru.FreeBSD.ORG + (maintainer dv@dv.ru) + + + + + + スロヴァキア共和国 + + + + cvsup.sk.FreeBSD.ORG + (maintainer tps@tps.sk) + + + + cvsup2.sk.FreeBSD.ORG + (maintainer tps@tps.sk) + + + + + + 南アフリカ + + + + cvsup.za.FreeBSD.ORG + (maintainer markm@FreeBSD.ORG) + + + + cvsup2.za.FreeBSD.ORG + (maintainer markm@FreeBSD.ORG) + + + + + + スウェーデン + + + + cvsup.se.FreeBSD.ORG + (maintainer pantzer@ludd.luth.se) + + + + + + 台湾 + + + + cvsup.tw.FreeBSD.ORG + (maintainer + jdli@freebsd.csie.nctu.edu.tw) + + + + + + ウクライナ + + + + cvsup2.ua.FreeBSD.ORG + (maintainer freebsd-mnt@lucky.net) + + + + + + イギリス + + + + cvsup.uk.FreeBSD.ORG + (maintainer joe@pavilion.net) + + + + + + アメリカ + + + + cvsup1.FreeBSD.ORG + (maintainer + skynyrd@opus.cts.cwu.edu), ワシントン州 + + + + cvsup2.FreeBSD.ORG + (maintainer + jdp@FreeBSD.ORG), カリフォルニア + + + + cvsup3.FreeBSD.ORG + (maintainer + wollman@FreeBSD.ORG), マサチューセッツ + + + + cvsup4.FreeBSD.ORG + (maintainer shmit@rcn.com), バージニア + + + + cvsup5.FreeBSD.ORG + (maintainer + cvsup@adsu.bellsouth.com), ジョージア + + + + + + + FreeBSD の輸出規制されたコード (eBones と secure) は + CVSup 経由で以下 + の国際的なリポジトリから入手できます. + アメリカ合衆国やカナダ以外に居る 場合は, + このサイトを使って輸出規制されたコードを入手してください. + + + 南アフリカ + + + + cvsup.internat.FreeBSD.ORG + (maintainer markm@FreeBSD.ORG) + + + + + + + 以下の CVSup サイトは, CTMユーザのことを特に + 考慮して運用されています. 他の CVSup のミラーサイトとは異なり, + これら のサイトでは CTM + を使って最新の状態を保っています. つまり, もし以下の サイトから + cvs-allrelease=cvs で + CVSup すれば, + CTMcvs-cur + のデルタを使って更新するのに適した CVS のリポ ジトリ + (必須となる .ctm_status + ファイルも含まれています.) を 入手することができます. + これにより, これまで CVSup を使って + cvs-all 全部を入手していたユーザも + CTM のベースデルタを使って + 最初からリポジトリを構築し直すことなく + CVSup から + CTM へと移行すること + が可能です. + + + この機能は, リリースタグを cvs として + cvs-all ディ + ストリビューションを入手する時のみ + 利用できるものですので注意してくださ い. + 他のディストリビューションやリリースタグを + 指定した場合でも指定した ファイルを入手することは可能ですが, + これらのファイルを CTM で更新する + ことはできません. + + + + また, CTM + の現在のバージョンではタイムスタンプを保存しないため, 以 + 下のサイトのファイルのタイムスタンプは + 他のミラーとは異なる物となってい ますので注意が必要です. + 利用するサイトを以下のサイトと他のサイトの間で + 変更することはお勧めできません. + ファイルの転送は問題なくできますが, 少々 非能率的です. + + + + ドイツ + + + + ctm.FreeBSD.ORG + (maintainer blank@fox.uni-trier.de) + + + + + + + + + AFS サイト + + FreeBSD の AFS サーバは以下のサイトで稼働しています: + + + + スウェーデン + + ファイルは以下の場所にあります: + /afs/stacken.kth.se/ftp/pub/FreeBSD + + + + stacken.kth.se, + Stacken Computer Club, KTH, Sweden + + + + 130.237.234.3, milko.stacken.kth.se + + + + 130.237.234.43, hot.stacken.kth.se + + + + 130.237.234.44, dog.stacken.kth.se + + + + + + +
+ + diff --git a/ja_JP.eucJP/books/handbook/newsgroups.ent b/ja_JP.eucJP/books/handbook/newsgroups.ent new file mode 100644 index 0000000000..809207361b --- /dev/null +++ b/ja_JP.eucJP/books/handbook/newsgroups.ent @@ -0,0 +1,14 @@ + + +comp.unix.bsd.freebsd.misc + newsgroup"> + diff --git a/ja_JP.eucJP/books/handbook/pgpkeys/chapter.sgml b/ja_JP.eucJP/books/handbook/pgpkeys/chapter.sgml new file mode 100644 index 0000000000..5daeeb727d --- /dev/null +++ b/ja_JP.eucJP/books/handbook/pgpkeys/chapter.sgml @@ -0,0 +1,586 @@ + + + + PGP 公開鍵 + + 原作: 不明. + + 訳: &a.jp.kiroh;. + + 署名を検証したり, コアチームメンバやオフィサに暗号メー + ルを送りたい場合のために, PGPの公開鍵を添付します. + + + オフィサ + + + FreeBSD Security Officer + <email>security-officer@freebsd.org</email> + + +FreeBSD Security Officer <security-officer@freebsd.org> +Fingerprint = 41 08 4E BB DB 41 60 71 F9 E5 0E 98 73 AF 3F 11 + +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: 2.6.3i + +mQCNAzF7MY4AAAEEAK7qBgPuBejER5HQbQlsOldk3ZVWXlRj54raz3IbuAUrDrQL +h3g57T9QY++f3Mot2LAf5lDJbsMfWrtwPrPwCCFRYQd6XH778a+l4ju5axyjrt/L +Ciw9RrOC+WaPv3lIdLuqYge2QRC1LvKACIPNbIcgbnLeRGLovFUuHi5z0oilAAUR +tDdGcmVlQlNEIFNlY3VyaXR5IE9mZmljZXIgPHNlY3VyaXR5LW9mZmljZXJAZnJl +ZWJzZC5vcmc+iQCVAwUQMX6yrOJgpPLZnQjrAQHyowQA1Nv2AY8vJIrdp2ttV6RU +tZBYnI7gTO3sFC2bhIHsCvfVU3JphfqWQ7AnTXcD2yPjGcchUfc/EcL1tSlqW4y7 +PMP4GHZp9vHog1NAsgLC9Y1P/1cOeuhZ0pDpZZ5zxTo6TQcCBjQA6KhiBFP4TJql +3olFfPBh3B/Tu3dqmEbSWpuJAJUDBRAxez3C9RVb+45ULV0BAak8A/9JIG/jRJaz +QbKom6wMw852C/Z0qBLJy7KdN30099zMjQYeC9PnlkZ0USjQ4TSpC8UerYv6IfhV +nNY6gyF2Hx4CbEFlopnfA1c4yxtXKti1kSN6wBy/ki3SmqtfDhPQ4Q31p63cSe5A +3aoHcjvWuqPLpW4ba2uHVKGP3g7SSt6AOYkAlQMFEDF8mz0ff6kIA1j8vQEBmZcD +/REaUPDRx6qr1XRQlMs6pfgNKEwnKmcUzQLCvKBnYYGmD5ydPLxCPSFnPcPthaUb +5zVgMTjfjS2fkEiRrua4duGRgqN4xY7VRAsIQeMSITBOZeBZZf2oa9Ntidr5PumS +9uQ9bvdfWMpsemk2MaRG9BSoy5Wvy8VxROYYUwpT8Cf2iQCVAwUQMXsyqWtaZ42B +sqd5AQHKjAQAvolI30Nyu3IyTfNeCb/DvOe9tlOn/o+VUDNJiE/PuBe1s2Y94a/P +BfcohpKC2kza3NiW6lLTp00OWQsuu0QAPc02vYOyseZWy4y3Phnw60pWzLcFdemT +0GiYS5Xm1o9nAhPFciybn9j1q8UadIlIq0wbqWgdInBT8YI/l4f5sf6JAJUDBRAx +ezKXVS4eLnPSiKUBAc5OBACIXTlKqQC3B53qt7bNMV46m81fuw1PhKaJEI033mCD +ovzyEFFQeOyRXeu25Jg9Bq0Sn37ynISucHSmt2tUD5W0+p1MUGyTqnfqejMUWBzO +v4Xhp6a8RtDdUMBOTtro16iulGiRrCKxzVgEl4i+9Z0ZiE6BWlg5AetoF5n3mGk1 +lw== +=ipyA +-----END PGP PUBLIC KEY BLOCK----- + + + + &a.imp; + + +Warner Losh <imp@village.org> + aka <imp@freebsd.org> +Fingerprint = D4 31 FD B9 F7 90 17 E8 37 C5 E7 7F CF A6 C1 B9 +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: 2.6.2 + +mQCNAzDzTiAAAAEEAK8D7KWEbVFUrmlqhUEnAvphNIqHEbqqT8s+c5f5c2uHtlcH +V4mV2TlUaDSVBN4+/D70oHmZc4IgiQwMPCWRrSezg9z/MaKlWhaslc8YT6Xc1q+o +EP/fAdKUrq49H0QQbkQk6Ks5wKW6v9AOvdmsS6ZJEcet6d9G4dxynu/2qPVhAAUR +tCBNLiBXYXJuZXIgTG9zaCA8aW1wQHZpbGxhZ2Uub3JnPokAlQMFEDM/SK1VLh4u +c9KIpQEBFPsD/1n0YuuUPvD4CismZ9bx9M84y5sxLolgFEfP9Ux196ZSeaPpkA0g +C9YX/IyIy5VHh3372SDWN5iVSDYPwtCmZziwIV2YxzPtZw0nUu82P/Fn8ynlCSWB +5povLZmgrWijTJdnUWI0ApVBUTQoiW5MyrNN51H3HLWXGoXMgQFZXKWYiQCVAwUQ +MzmhkfUVW/uOVC1dAQG3+AP/T1HL/5EYF0ij0yQmNTzt1cLt0b1e3N3zN/wPFFWs +BfrQ+nsv1zw7cEgxLtktk73wBGM9jUIdJu8phgLtl5a0m9UjBq5oxrJaNJr6UTxN +a+sFkapTLT1g84UFUO/+8qRB12v+hZr2WeXMYjHAFUT18mp3xwjW9DUV+2fW1Wag +YDKJAJUDBRAzOYK1s1pi61mfMj0BARBbA/930CHswOF0HIr+4YYUs1ejDnZ2J3zn +icTZhl9uAfEQq++Xor1x476j67Z9fESxyHltUxCmwxsJ1uOJRwzjyEoMlyFrIN4C +dE0C8g8BF+sRTt7VLURLERvlBvFrVZueXSnXvmMoWFnqpSpt3EmN6TNaLe8Cm87a +k6EvQy0dpnkPKokAlQMFEDD9Lorccp7v9qj1YQEBrRUD/3N4cCMWjzsIFp2Vh9y+ +RzUrblyF84tJyA7Rr1p+A7dxf7je3Zx5QMEXosWL1WGnS5vC9YH2WZwv6sCU61gU +rSy9z8KHlBEHh+Z6fdRMrjd9byPf+n3cktT0NhS23oXB1ZhNZcB2KKhVPlNctMqO +3gTYx+Nlo6xqjR+J2NnBYU8p +=7fQV +-----END PGP PUBLIC KEY BLOCK----- + + + + + コアチームメンバ + + + &a.asami; + + +Satoshi Asami <asami@cs.berkeley.edu> + aka <asami@FreeBSD.ORG> +Fingerprint = EB 3C 68 9E FB 6C EB 3F DB 2E 0F 10 8F CE 79 CA + +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: 2.6.2 + +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----- + + + + &a.jmb; + + +Jonathan M. Bresler <jmb@FreeBSD.org> +f16 Key fingerprint16 = 31 57 41 56 06 C1 40 13 C5 1C E3 E5 DC 62 0E FB + +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: PGPfreeware 5.0i for non-commercial use + +mQCNAzG2GToAAAEEANI6+4SJAAgBpl53XcfEr1M9wZyBqC0tzpie7Zm4vhv3hO8s +o5BizSbcJheQimQiZAY4OnlrCpPxijMFSaihshs/VMAz1qbisUYAMqwGEO/T4QIB +nWNo0Q/qOniLMxUrxS1RpeW5vbghErHBKUX9GVhxbiVfbwc4wAHbXdKX5jjdAAUR +tCVKb25hdGhhbiBNLiBCcmVzbGVyIDxqbWJARnJlZUJTRC5PUkc+iQCVAwUQNbtI +gAHbXdKX5jjdAQHamQP+OQr10QRknamIPmuHmFYJZ0jU9XPIvTTMuOiUYLcXlTdn +GyTUuzhbEywgtOldW2V5iA8platXThtqC68NsnN/xQfHA5xmFXVbayNKn8H5stDY +2s/4+CZ06mmJfqYmONF1RCbUk/M84rVT3Gn2tydsxFh4Pm32lf4WREZWRiLqmw+J +AJUDBRA0DfF99RVb+45ULV0BAcZ0BACCydiSUG1VR0a5DBcHdtin2iZMPsJUPRqJ +tWvP6VeI8OFpNWQ4LW6ETAvn35HxV2kCcQMyht1kMD+KEJz7r8Vb94TS7KtZnNvk +2D1XUx8Locj6xel5c/Lnzlnnp7Bp1XbJj2u/NzCaZQ0eYBdP/k7RLYBYHQQln5x7 +BOuiRJNVU4kAlQMFEDQLcShVLh4uc9KIpQEBJv4D/3mDrD0MM9EYOVuyXik3UGVI +8quYNA9ErVcLdt10NjYc16VI2HOnYVgPRag3Wt7W8wlXShpokfC/vCNt7f5JgRf8 +h2a1/MjQxtlD+4/Js8k7GLa53oLon6YQYk32IEKexoLPwIRO4L2BHWa3GzHJJSP2 +aTR/Ep90/pLdAOu/oJDUiQCVAwUQMqyL0LNaYutZnzI9AQF25QP9GFXhBrz2tiWz +2+0gWbpcGNnyZbfsVjF6ojGDdmsjJMyWCGw49XR/vPKYIJY9EYo4t49GIajRkISQ +NNiIz22fBAjT2uY9YlvnTJ9NJleMfHr4dybo7oEKYMWWijQzGjqf2m8wf9OaaofE +KwBX6nxcRbKsxm/BVLKczGYl3XtjkcuJAJUDBRA1ol5TZWCprDT5+dUBATzXA/9h +/ZUuhoRKTWViaistGJfWi26FB/Km5nDQBr/Erw3XksQCMwTLyEugg6dahQ1u9Y5E +5tKPxbB69eF+7JXVHE/z3zizR6VL3sdRx74TPacPsdhZRjChEQc0htLLYAPkJrFP +VAzAlSlm7qd+MXf8fJovQs6xPtZJXukQukPNlhqZ94kAPwMFEDSH/kF4tXKgazlt +bxECfk4AoO+VaFVfguUkWX10pPSSfvPyPKqiAJ4xn8RSIe1ttmnqkkDMhLh00mKj +lLQuSm9uYXRoYW4gTS4gQnJlc2xlciA8Sm9uYXRoYW4uQnJlc2xlckBVU2kubmV0 +PokAlQMFEDXbdSkB213Sl+Y43QEBV/4D/RLJNTrtAqJ1ATxXWv9g8Cr3/YF0GTmx +5dIrJOpBup7eSSmiM/BL9Is4YMsoVbXCI/8TqA67TMICvq35PZU4wboQB8DqBAr+ +gQ8578M7Ekw1OAF6JXY6AF2P8k7hMcVBcVOACELPT/NyPNByG5QRDoNmlsokJaWU +/2ls4QSBZZlb +=zbCw +-----END PGP PUBLIC KEY BLOCK----- + + + + &a.ache; + + +Andrey A. Chernov <ache@FreeBSD.org> + aka <ache@nagual.pp.ru> +Key fingerprint = 33 03 9F 48 33 7B 4A 15 63 48 88 0A C4 97 FD 49 + +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: 2.6.3ia + +mQCNAiqUMGQAAAEEAPGhcD6A2Buey5LYz0sphDLpVgOZc/bb9UHAbaGKUAGXmafs +Dcb2HnsuYGgX/zrQXuCi/wIGtXcZWB97APtKOhFsZnPinDR5n/dde/mw9FnuhwqD +m+rKSL1HlN0z/Msa5y7g16760wHhSR6NoBSEG5wQAHIMMq7Q0uJgpPLZnQjrAAUT +tCVBbmRyZXkgQS4gQ2hlcm5vdiA8YWNoZUBuYWd1YWwucHAucnU+iQCVAwUQM2Ez +u+JgpPLZnQjrAQEyugP8DPnS8ixJ5OeuYgPFQf5sy6l+LrB6hyaS+lgsUPahWjNY +cnaDmfda/q/BV5d4+y5rlQe/pjnYG7/yQuAR3jhlXz8XDrqlBOnW9AtYjDt5rMfJ +aGFTGXAPGZ6k6zQZE0/YurT8ia3qjvuZm3Fw4NJrHRx7ETHRvVJDvxA6Ggsvmr20 +JEFuZHJleSBBLiBDaGVybm92IDxhY2hlQEZyZWVCU0Qub3JnPokAlQMFEDR5uVbi +YKTy2Z0I6wEBLgED/2mn+hw4/3peLx0Sb9LNx//NfCCkVefSf2G9Qwhx6dvwbX7h +mFca97h7BQN4GubU1Z5Ffs6TeamSBrotBYGmOCwvJ6S9WigF9YHQIQ3B4LEjskAt +pcjU583y42zM11kkvEuQU2Gde61daIylJyOxsgpjSWpkxq50fgY2kLMfgl/ftCZB +bmRyZXkgQS4gQ2hlcm5vdiA8YWNoZUBuaWV0enNjaGUubmV0PokAlQMFEDR5svDi +YKTy2Z0I6wEBOTQD/0OTCAXIjuak363mjERvzSkVsNtIH9hA1l0w6Z95+iH0fHrW +xXKT0vBZE0y0Em+S3cotLL0bMmVE3F3D3GyxhBVmgzjyx0NYNoiQjYdi+6g/PV30 +Cn4vOO6hBBpSyI6vY6qGNqcsawuRtHNvK/53MpOfKwSlICEBYQimcZhkci+EtCJB +bmRyZXkgQS4gQ2hlcm5vdiA8YWNoZUBuYWd1YWwucnU+iQCVAwUQMcm5HeJgpPLZ +nQjrAQHwvQP9GdmAf1gdcuayHEgNkc11macPH11cwWjYjzA2YoecFMGV7iqKK8QY +rr1MjbGXf8DAG8Ubfm0QbI8Lj8iG3NgqIru0c72UuHGSn/APfGGG0AtPX5UK/k7B +gI0Ca2po6NA5nrSp8tDsdEz/4gyea84RXl2prtTf5Jj07hflbRstGXK0MkFuZHJl +eSBBLiBDaGVybm92LCBCbGFjayBNYWdlIDxhY2hlQGFzdHJhbC5tc2suc3U+iQCV +AwUQMCsAo5/rGryoL8h3AQHq1QQAidyNFqA9hvrmMcjpY7csJVFlGvj574Wj4GPa +o3pZeuQaMBmsWqaXLYnWU/Aldb6kTz6+nRcQX50zFH0THSPfApwEW7yybSTI5apJ +mWT3qhKN2vmLNg2yNzhqLTzHLD1lH3i1pfQq8WevrNfjLUco5S/VuekTma/osnzC +Cw7fQzCJAJUDBRAwKvwoa1pnjYGyp3kBARihBACoXr3qfG65hFCyKJISmjOvaoGr +anxUIkeDS0yQdTHzhQ+dwB1OhhK15E0Nwr0MKajLMm90n6+Zdb5y/FIjpPriu8dI +rlHrWZlewa88eEDM+Q/NxT1iYg+HaKDAE171jmLpSpCL0MiJtO0i36L3ekVD7Hv8 +vffOZHPSHirIzJOZTYkAlQMFEDAau6zFLUdtDb+QbQEBQX8D/AxwkYeFaYxZYMFO +DHIvSk23hAsjCmUA2Uil1FeWAusb+o8xRfPDc7TnosrIifJqbF5+fcHCG5VSTGlh +Bhd18YWUeabf/h9O2BsQX55yWRuB2x3diJ1xI/VVdG+rxlMCmE4ZR1Tl9x+Mtun9 +KqKVpB39VlkCBYQ3hlgNt/TJUY4riQCVAwUQMBHMmyJRltlmbQBRAQFQkwP/YC3a +hs3ZMMoriOlt3ZxGNUUPTF7rIER3j+c7mqGG46dEnDB5sUrkzacpoLX5sj1tGR3b +vz9a4vmk1Av3KFNNvrZZ3/BZFGpq3mCTiAC9zsyNYQ8L0AfGIUO5goCIjqwOTNQI +AOpNsJ5S+nMAkQB4YmmNlI6GTb3D18zfhPZ6uciJAJUCBRAwD0sl4uW74fteFRkB +AWsAA/9NYqBRBKbmltQDpyK4+jBAYjkXBJmARFXKJYTlnTgOHMpZqoVyW96xnaa5 +MzxEiu7ZWm5oL10QDIp1krkBP2KcmvfSMMHb5aGCCQc2/P8NlfXAuHtNGzYiI0UA +Iwi8ih/S1liVfvnqF9uV3d3koE7VsQ9OA4Qo0ZL2ggW+/gEaYIkAlQMFEDAOz6qx +/IyHe3rl4QEBIvYD/jIr8Xqo/2I5gncghSeFR01n0vELFIvaF4cHofGzyzBpYsfA ++6pgFI1IM+LUF3kbUkAY/2uSf9U5ECcaMCTWCwVgJVO+oG075SHEM4buhrzutZiM +1dTyTaepaPpTyRMUUx9ZMMYJs7sbqLId1eDwrJxUPhrBNvf/w2W2sYHSY8cdiQCV +AwUQMAzqgHcdkq6JcsfBAQGTxwQAtgeLFi2rhSOdllpDXUwz+SS6bEjFTWgRsWFM +y9QnOcqryw7LyuFmWein4jasjY033JsODfWQPiPVNA3UEnXVg9+n8AvNMPO8JkRv +Cn1eNg0VaJy9J368uArio93agd2Yf/R5r+QEuPjIssVk8hdcy/luEhSiXWf6bLMV +HEA0J+OJAJUDBRAwDUi+4mCk8tmdCOsBAatBBACHB+qtW880seRCDZLjl/bT1b14 +5po60U7u6a3PEBkY0NA72tWDQuRPF/Cn/0+VdFNxQUsgkrbwaJWOoi0KQsvlOm3R +rsxKbn9uvEKLxExyKH3pxp76kvz/lEWwEeKvBK+84Pb1lzpG3W7u2XDfi3VQPTi3 +5SZMAHc6C0Ct/mjNlYkAlQMFEDAMrPD7wj+NsTMUOQEBJckD/ik4WsZzm2qOx9Fw +erGq7Zwchc+Jq1YeN5PxpzqSf4AG7+7dFIn+oe6X2FcIzgbYY+IfmgJIHEVjDHH5 ++uAXyb6l4iKc89eQawO3t88pfHLJWbTzmnvgz2cMrxt94HRvgkHfvcpGEgbyldq6 +EB33OunazFcfZFRIcXk1sfyLDvYE +=1ahV +-----END PGP PUBLIC KEY BLOCK----- + + + + &a.jkh; + + +Jordan K. Hubbard <jkh@FreeBSD.org> +Fingerprint = 3C F2 27 7E 4A 6C 09 0A 4B C9 47 CD 4F 4D 0B 20 + +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: 2.6.3ia + +mQCNAzFjX0IAAAEEAML+nm9/kDNPp43ZUZGjYkm2QLtoC1Wxr8JulZXqk7qmhYcQ +jvX+fyoriJ6/7ZlnLe2oG5j9tZOnRLPvMaz0g9CpW6Dz3nkXrNPkmOFV9B8D94Mk +tyFeRJFqnkCuqBj6D+H8FtBwEeeTecSh2tJ0bZZTXnAMhxeOdvUVW/uOVC1dAAUR +tCNKb3JkYW4gSy4gSHViYmFyZCA8amtoQEZyZWVCU0Qub3JnPokBFQMFEDXCTXQM +j46yp4IfPQEBwO8IAIN0J09AXBf86dFUTFGcAMrEQqOF5IL+KGorAjzuYxERhKfD +ZV7jA+sCQqxkWfcVcE20kVyVYqzZIkio9a5zXP6TwA247JkPt54S1PmMDYHNlRIY +laXlNoji+4q3HP2DfHqXRT2859rYpm/fG/v6pWkos5voPKcZ2OFEp9W+Ap88oqw+ +5rx4VetZNJq1Epmis4INj6XqNqj85+MOOIYE+f445ohDM6B/Mxazd6cHFGGIR+az +VjZ6lCDMLjzhB5+FqfrDLYuMjqkMTR5z9DL+psUvPlCkYbQ11NEWtEmiIWjUcNJN +GCxGzv5bXk0XPu3ADwbPkFE2usW1cSM7AQFiwuyJAJUDBRAxe+Q9a1pnjYGyp3kB +AV7XA/oCSL/Cc2USpQ2ckwkGpyvIkYBPszIcabSNJAzm2hsU9Qa6WOPxD8olDddB +uJNiW/gznPC4NsQ0N8Zr4IqRX/TTDVf04WhLmd8AN9SOrVv2q0BKgU6fLuk979tJ +utrewH6PR2qBOjAaR0FJNk4pcYAHeT+e7KaKy96YFvWKIyDvc4kAlQMFEDF8ldof +f6kIA1j8vQEBDH4D/0Zm0oNlpXrAE1EOFrmp43HURHbij8n0Gra1w9sbfo4PV+/H +U8ojTdWLy6r0+prH7NODCkgtIQNpqLuqM8PF2pPtUJj9HwTmSqfaT/LMztfPA6PQ +csyT7xxdXl0+4xTDl1avGSJfYsI8XCAy85cTs+PQwuyzugE/iykJO1Bnj/paiQCV +AwUQMXvlBvUVW/uOVC1dAQF2fQP/RfYC6RrpFTZHjo2qsUHSRk0vmsYfwG5NHP5y +oQBMsaQJeSckN4n2JOgR4T75U4vS62aFxgPLJP3lOHkU2Vc7xhAuBvsbGr5RP8c5 +LvPOeUEyz6ZArp1KUHrtcM2iK1FBOmY4dOYphWyWMkDgYExabqlrAq7FKZftpq/C +BiMRuaw= +=C/Jw +-----END PGP PUBLIC KEY BLOCK----- + + + + &a.phk; + + +Poul-Henning Kamp <phk@FreeBSD.org> +Fingerprint = A3 F3 88 28 2F 9B 99 A2 49 F4 E2 FA 5A 78 8B 3E + +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: 2.6.3ia + +mQCNAzAdpMIAAAEEALHDgrFUwhZtb7PbXg3upELoDVEUPFRwnmpJH1rRqyROUGcI +ooVe7u+FQlIs5OsXK8ECs/5Wpe2UrZSzHvjwBYOND5H42YtI5UULZLRCo5bFfTVA +K9Rpo5icfTsYihrzU2nmnycwFMk+jYXyT/ZDYWDP/BM9iLjj0x9/qQgDWPy9AAUR +tCNQb3VsLUhlbm5pbmcgS2FtcCA8cGhrQEZyZWVCU0Qub3JnPokAlQMFEDQQ0aZ1 +u244dqP3sQEBu4ID/jXFFeJgs2MdTDNOZM/FbfDhI4qxAbYUsqS3+Ra16yd8Wd/A +jV+IHJE2NomFWl8UrUjCGinXiwzPgK1OfFJrS9Og1wQLvAl0X84BA8MTP9BQr4w7 +6I/RbksgUSrVCIO8MJwlydjSPocWGBeXlVjbZxXzyuJk7H+TG+zuI5BuBcNIiQCV +AwUQMwYr2rNaYutZnzI9AQHiIQP/XxtBWFXaBRgVLEhRNpS07YdU+LsZGlLOZehN +9L4UnJFHQQPNOpMey2gF7Y95aBOw5/1xS5vlQpwmRFCntWsm/gqdzK6rulfr1r5A +y94LO5TAC6ucNu396Y4vo1TyD1STnRC466KlvmtQtAtFGgXlORWLL9URLzcRFd1h +D0yXd9aJAJUDBRAxfo19a1pnjYGyp3kBAQqyA/4v64vP3l1F0Sadn6ias761hkz/ +SMdTuLzILmofSCC4o4KWMjiWJHs2Soo41QlZi1+xMHzV32JKiwFlGtPHqL+EHyXy +Q4H3vmf9/1KF+0XCaMtgI0wWUMziPSTJK8xXbRRmMDK/0F4TnVVaUhnmf+h5K7O6 +XdmejDTa0X/NWcicmIkAlQMFEDF8lef1FVv7jlQtXQEBcnwD/0ro1PpUtlkLmreD +tsGTkNa7MFLegrYRvDDrHOwPZH152W2jPUncY+eArQJakeHiTDmJNpFagLZglhE0 +bqJyca+UwCXX+6upAclWHEBMg2byiWMMqyPVEEnpUoHM1sIkgdNWlfQAmipRBfYh +2LyCgWvR8CbtwPYIFvUmGgB3MR87iQCVAwUQMUseXB9/qQgDWPy9AQGPkwP/WEDy +El2Gkvua9COtMAifot2vTwuvWWpNopIEx0Ivey4aVbRLD90gGCJw8OGDEtqFPcNV +8aIiy3fYVKXGZZjvCKd7zRfhNmQn0eLDcymq2OX3aPrMc2rRlkT4Jx425ukR1gsO +qiQAgw91aWhY8dlw/EKzk8ojm52x4VgXaBACMjaJAJUDBRAxOUOg72G56RHVjtUB +AbL4A/9HOn5Qa0lq9tKI/HkSdc5fGQD/66VdCBAb292RbB7CS/EM07MdbcqRRYIa +0+0gwQ3OdsWPdCVgH5RIhp/WiC+UPkR1cY8N9Mg2kTwJfZZfNqN+BgWlgRMPN27C +OhYNl8Q33Nl9CpBLrZWABF44jPeT0EvvTzP/5ZQ7T75EsYKYiYkAlQMFEDDmryQA +8tkJ67sbQQEBPdsEALCj6v1OBuJLLJTlxmmrkqAZPVzt5QdeO3Eqa2tcPWcU0nqP +vHYMzZcZ7oFg58NZsWrhSQQDIB5e+K65Q/h6dC7W/aDskZd64jxtEznX2kt0/MOr +8OdsDis1K2f9KQftrAx81KmVwW4Tqtzl7NWTDXt44fMOtibCwVq8v2DFkTJy +=JKbP +-----END PGP PUBLIC KEY BLOCK----- + + + + &a.rich; + + +Rich Murphey <rich@FreeBSD.org> +fingerprint = AF A0 60 C4 84 D6 0C 73 D1 EF C0 E9 9D 21 DB E4 + +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: 2.6.2 + +mQCNAy97V+MAAAEEALiNM3FCwm3qrCe81E20UOSlNclOWfZHNAyOyj1ahHeINvo1 +FBF2Gd5Lbj0y8SLMno5yJ6P4F4r+x3jwHZrzAIwMs/lxDXRtB0VeVWnlj6a3Rezs +wbfaTeSVyh5JohEcKdoYiMG5wjATOwK/NAwIPthB1RzRjnEeer3HI3ZYNEOpAAUR +tCRSaWNoIE11cnBoZXkgPHJpY2hAbGFtcHJleS51dG1iLmVkdT6JAJUDBRAve15W +vccjdlg0Q6kBAZTZBACcNd/LiVnMFURPrO4pVRn1sVQeokVX7izeWQ7siE31Iy7g +Sb97WRLEYDi686osaGfsuKNA87Rm+q5F+jxeUV4w4szoqp60gGvCbD0KCB2hWraP +/2s2qdVAxhfcoTin/Qp1ZWvXxFF7imGA/IjYIfB42VkaRYu6BwLEm3YAGfGcSw== +=QoiM +-----END PGP PUBLIC KEY BLOCK----- + + + + &a.jdp; + + +John D. Polstra <jdp@polstra.com> +Fingerprint = 54 3A 90 59 6B A4 9D 61 BF 1D 03 09 35 8D F6 0D + +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: 2.6.2 + +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----- + + + + &a.guido; + + +Guido van Rooij <guido@gvr.win.tue.nl> +Fingerprint = 16 79 09 F3 C0 E4 28 A7 32 62 FA F6 60 31 C0 ED + +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: 2.6.2 + +mQCNAzGeO84AAAEEAKKAY91Na//DXwlUusr9GVESSlVwVP6DyH1wcZXhfN1fyZHq +SwhMCEdHYoojQds+VqD1iiZQvv1RLByBgj622PDAPN4+Z49HjGs7YbZsUNuQqPPU +wRPpP6ty69x1hPKq1sQIB5MS4radpCM+4wbZbhxv7l4rP3RWUbNaYutZnzI9AAUR +tCZHdWlkbyB2YW4gUm9vaWogPGd1aWRvQGd2ci53aW4udHVlLm5sPokAlQMFEDMG +Hcgff6kIA1j8vQEBbYgD/jm9xHuUuY+iXDkOzpCXBYACYEZDV913MjtyBAmaVqYo +Rh5HFimkGXe+rCo78Aau0hc57fFMTsJqnuWEqVt3GRq28hSK1FOZ7ni9/XibHcmN +rt2yugl3hYpClijo4nrDL1NxibbamkGW/vFGcljS0jqXz6NDVbGx5Oo7HBByxByz +iQCVAwUQMhmtVjt/x7zOdmsfAQFuVQQApsVUTigT5YWjQA9Nd5Z0+a/oVtZpyw5Z +OljLJP3vqJdMa6TidhfcatjHbFTve5x1dmjFgMX/MQTd8zf/+Xccy/PX4+lnKNpP +eSf1Y4aK+E8KHmBGd6GzX6CIboyGYLS9e3kGnN06F2AQtaLyJFgQ71wRaGuyKmQG +FwTn7jiKb1aJAJUDBRAyEOLXPt3iN6QQUSEBATwQA/9jqu0Nbk154+Pn+9mJX/YT +fYR2UqK/5FKCqgL5Nt/Deg2re0zMD1f8F9Dj6vuAAxq8hnOkIHKlWolMjkRKkzJi +mSPEWl3AuHJ31k948J8it4f8kq/o44usIA2KKVMlI63Q/rmNdfWCyiYQEVGcRbTm +GTdZIHYCOgV5dOo4ebFqgYkAlQMFEDIE1nMEJn15jgpJ0QEBW6kEAKqN8XSgzTqf +CrxFXT07MlHhfdbKUTNUoboxCGCLNW05vf1A8F5fdE5i14LiwkldWIzPxWD+Sa3L +fNPCfCZTaCiyGcLyTzVfBHA18MBAOOX6JiTpdcm22jLGUWBf/aJK3yz/nfbWntd/ +LRHysIdVp29lP5BF+J9/Lzbb/9LxP1taiQCVAwUQMgRXZ44CzbsJWQz9AQFf7gP/ +Qa2FS5S6RYKG3rYanWADVe/ikFV2lxuM1azlWbsmljXvKVWGe6cV693nS5lGGAjx +lbd2ADwXjlkNhv45HLWFm9PEveO9Jjr6tMuXVt8N2pxiX+1PLUN9CtphTIU7Yfjn +s6ryZZfwGHSfIxNGi5ua2SoXhg0svaYnxHxXmOtH24iJAJUDBRAyAkpV8qaAEa3W +TBkBARfQBAC+S3kbulEAN3SI7/A+A/dtl9DfZezT9C4SRBGsl2clQFMGIXmMQ/7v +7lLXrKQ7U2zVbgNfU8smw5h2vBIL6f1PyexSmc3mz9JY4er8KeZpcf6H0rSkHl+i +d7TF0GvuTdNPFO8hc9En+GG6QHOqbkB4NRZ6cwtfwUMhk2FHXBnjF4kAlQMFEDH5 +FFukUJAsCdPmTQEBe74EAMBsxDnbD9cuI5MfF/QeTNEG4BIVUZtAkDme4Eg7zvsP +d3DeJKCGeNjiCWYrRTCGwaCWzMQk+/+MOmdkI6Oml+AIurJLoHceHS9jP1izdP7f +N2jkdeJSBsixunbQWtUElSgOQQ4iF5kqwBhxtOfEP/L9QsoydRMR1yB6WPD75H7V +iQCVAwUQMZ9YNGtaZ42Bsqd5AQH0PAQAhpVlAc3ZM/KOTywBSh8zWKVlSk3q/zGn +k7hJmFThnlhH1723+WmXE8aAPJi+VXOWJUFQgwELJ6R8jSU2qvk2m1VWyYSqRKvc +VRQMqT2wjss0GE1Ngg7tMrkRHT0il7E2xxIb8vMrIwmdkbTfYqBUhhGnsWPHZHq7 +MoA1/b+rK7CJAJUDBRAxnvXh3IDyptUyfLkBAYTDA/4mEKlIP/EUX2Zmxgrd/JQB +hqcQlkTrBAaDOnOqe/4oewMKR7yaMpztYhJs97i03Vu3fgoLhDspE55ooEeHj0r4 +cOdiWfYDsjSFUYSPNVhW4OSruMA3c29ynMqNHD7hpr3rcCPUi7J2RncocOcCjjK2 +BQb/9IAUNeK4C9gPxMEZLokAlQMFEDGeO86zWmLrWZ8yPQEBEEID/2fPEUrSX3Yk +j5TJPFZ9MNX0lEo7AHYjnJgEbNI4pYm6C3PnMlsYfCSQDHuXmRQHAOWSdwOLvCkN +F8eDaF3M6u0urgeVJ+KVUnTz2+LZoZs12XSZKCte0HxjbvPpWMTTrYyimGezH79C +mgDVjsHaYOx3EXF0nnDmtXurGioEmW1J +=mSvM +-----END PGP PUBLIC KEY BLOCK----- + + + + &a.peter; + + +Peter Wemm <peter@FreeBSD.org> + aka <peter@spinner.dialix.com> + aka <peter@haywire.dialix.com> + aka <peter@perth.dialix.oz.au> +Key fingerprint = 47 05 04 CA 4C EE F8 93 F6 DB 02 92 6D F5 58 8A + +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: 2.6.3ia + +mQCNAy9/FJwAAAEEALxs9dE9tFd0Ru1TXdq301KfEoe5uYKKuldHRBOacG2Wny6/ +W3Ill57hOi2+xmq5X/mHkapywxvy4cyLdt31i4GEKDvxpDvEzAYcy2n9dIup/eg2 +kEhRBX9G5k/LKM4NQsRIieaIEGGgCZRm0lINqw495aZYrPpO4EqGN2HYnOMZAAUT +tCVQZXRlciBXZW1tIDxwZXRlckBoYXl3aXJlLmRpYWxpeC5jb20+iQCVAwUQMwWT +cXW7bjh2o/exAQEFkQP+LIx5zKlYp1uR24xGApMFNrNtjh+iDIWnxxb2M2Kb6x4G +9z6OmbUCoDTGrX9SSL2Usm2RD0BZfyv9D9QRWC2TSOPkPRqQgIycc11vgbLolJJN +eixqsxlFeKLGEx9eRQCCbo3dQIUjc2yaOe484QamhsK1nL5xpoNWI1P9zIOpDiGJ +AJUDBRAxsRPqSoY3Ydic4xkBAbWLA/9q1Fdnnk4unpGQsG31Qbtr4AzaQD5m/JHI +4gRmSmbj6luJMgNG3fpO06Gd/Z7uxyCJB8pTst2a8C/ljOYZxWT+5uSzkQXeMi5c +YcI1sZbUpkHtmqPW623hr1PB3ZLA1TIcTbQW+NzJsxQ1Pc6XG9fGkT9WXQW3Xhet +AP+juVTAhLQlUGV0ZXIgV2VtbSA8cGV0ZXJAcGVydGguZGlhbGl4Lm96LmF1PokA +lQMFEDGxFCFKhjdh2JzjGQEB6XkD/2HOwfuFrnQUtdwFPUkgtEqNeSr64jQ3Maz8 +xgEtbaw/ym1PbhbCk311UWQq4+izZE2xktHTFClJfaMnxVIfboPyuiSF99KHiWnf +/Gspet0S7m/+RXIwZi1qSqvAanxMiA7kKgFSCmchzas8TQcyyXHtn/gl9v0khJkb +/fv3R20btB5QZXRlciBXZW1tIDxwZXRlckBGcmVlQlNELm9yZz6JAJUDBRAxsRJd +SoY3Ydic4xkBAZJUA/4i/NWHz5LIH/R4IF/3V3LleFyMFr5EPFY0/4mcv2v+ju9g +brOEM/xd4LlPrx1XqPeZ74JQ6K9mHR64RhKR7ZJJ9A+12yr5dVqihe911KyLKab9 +4qZUHYi36WQu2VtLGnw/t8Jg44fQSzbBF5q9iTzcfNOYhRkSD3BdDrC3llywO7Ql +UGV0ZXIgV2VtbSA8cGV0ZXJAc3Bpbm5lci5kaWFsaXguY29tPokAlQMFEDGxEi1K +hjdh2JzjGQEBdA4EAKmNFlj8RF9HQsoI3UabnvYqAWN5wCwEB4u+Zf8zq6OHic23 +TzoK1SPlmSdBE1dXXQGS6aiDkLT+xOdeewNs7nfUIcH/DBjSuklAOJzKliXPQW7E +kuKNwy4eq5bl+j3HB27i+WBXhn6OaNNQY674LGaR41EGq44Wo5ATcIicig/z +=gv+h +-----END PGP PUBLIC KEY BLOCK----- + + + + &a.joerg; + + +Type Bits/KeyID Date User ID +pub 1024/76A3F7B1 1996/04/27 Joerg Wunsch <joerg_wunsch@uriah.heep.sax.de> + Key fingerprint = DC 47 E6 E4 FF A6 E9 8F 93 21 E0 7D F9 12 D6 4E + Joerg Wunsch <joerg_wunsch@interface-business.de> + Joerg Wunsch <j@uriah.heep.sax.de> + Joerg Wunsch <j@interface-business.de> + +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: 2.6.3ia + +mQCNAzGCFeAAAAEEAKmRBU2Nvc7nZy1Ouid61HunA/5hF4O91cXm71/KPaT7dskz +q5sFXvPJPpawwvqHPHfEbAK42ZaywyFp59L1GaYj87Pda+PlAYRJyY2DJl5/7JPe +ziq+7B8MdvbX6D526sdmcR+jPXPbHznASjkx9DPmK+7TgFujyXW7bjh2o/exAAUR +tC1Kb2VyZyBXdW5zY2ggPGpvZXJnX3d1bnNjaEB1cmlhaC5oZWVwLnNheC5kZT6J +AJUDBRA0FFkBs1pi61mfMj0BAfDCA/oCfkjrhvRwRCpSL8klJ1YDoUJdmw+v4nJc +pw3OpYXbwKOPLClsE7K3KCQscHel7auf91nrekAwbrXv9Clp0TegYeAQNjw5vZ9f +L6UZ5l3fH8E2GGA7+kqgNWs1KxAnG5GdUvJ9viyrWm8dqWRGo+loDWlZ12L2OgAD +fp7jVZTI1okAlQMFEDQPrLoff6kIA1j8vQEB2XQEAK/+SsQPCT/X4RB/PBbxUr28 +GpGJMn3AafAaA3plYw3nb4ONbqEw9tJtofAn4UeGraiWw8nHYR2DAzoAjR6OzuX3 +TtUV+57BIzrTPHcNkb6h8fPuHU+dFzR+LNoPaGJsFeov6w+Ug6qS9wa5FGDAgaRo +LHSyBxcRVoCbOEaS5S5EiQCVAwUQM5BktWVgqaw0+fnVAQGKPwP+OiWho3Zm2GKp +lEjiZ5zx3y8upzb+r1Qutb08jr2Ewja04hLg0fCrt6Ad3DoVqxe4POghIpmHM4O4 +tcW92THQil70CLzfCxtfUc6eDzoP3krD1/Gwpm2hGrmYA9b/ez9+r2vKBbnUhPmC +glx5pf1IzHU9R2XyQz9Xu7FI2baOSZqJAJUDBRAyCIWZdbtuOHaj97EBAVMzA/41 +VIph36l+yO9WGKkEB+NYbYOz2W/kyi74kXLvLdTXcRYFaCSZORSsQKPGNMrPZUoL +oAKxE25AoCgl5towqr/sCcu0A0MMvJddUvlQ2T+ylSpGmWchqoXCN7FdGyxrZ5zz +xzLIvtcio6kaHd76XxyJpltCASupdD53nEtxnu8sRrQxSm9lcmcgV3Vuc2NoIDxq +b2VyZ193dW5zY2hAaW50ZXJmYWNlLWJ1c2luZXNzLmRlPokAlQMFEDIIhfR1u244 +dqP3sQEBWoID/RhBm+qtW+hu2fqAj9d8CVgEKJugrxZIpXuCKFvO+bCgQtogt9EX ++TJh4s8UUdcFkyEIu8CT2C3Rrr1grvckfxvrTgzSzvtYyv1072X3GkVY+SlUMBMA +rdl1qNW23oT7Q558ajnsaL065XJ5m7HacgTTikiofYG8i1s7TrsEeq6PtCJKb2Vy +ZyBXdW5zY2ggPGpAdXJpYWguaGVlcC5zYXguZGU+iQCVAwUQMaS91D4gHQUlG9CZ +AQGYOwQAhPpiobK3d/fz+jWrbQgjkoO+j39glYGXb22+6iuEprFRs/ufKYtjljNT +NK3B4DWSkyIPawcuO4Lotijp6jke2bsjFSSashGWcsJlpnwsv7EeFItT3oWTTTQQ +ItPbtNyLW6M6xB+jLGtaAvJqfOlzgO9BLfHuA2LY+WvbVW447SWJAJUDBRAxqWRs +dbtuOHaj97EBAXDBA/49rzZB5akkTSbt/gNd38OJgC+H8N5da25vV9dD3KoAvXfW +fw7OxIsxvQ/Ab+rJmukrrWxPdsC+1WU1+1rGa4PvJp/VJRDes2awGrn+iO7/cQoS +IVziC27JpcbvjLvLVcBIiy1yT/RvJ+87a3jPRHt3VFGcpFh4KykxxSNiyGygl4kA +lQMFEDGCUB31FVv7jlQtXQEB5KgD/iIJZe5lFkPr2B/Cr7BKMVBot1/JSu05NsHg +JZ3uK15w4mVtNPZcFi/dKbn+qRM6LKDFe/GF0HZD/ZD1FJt8yQjzF2w340B+F2GG +EOwnClqZDtEAqnIBzM/ECQQqH+6Bi8gpkFZrFgg5eON7ikqmusDnOlYStM/CBfgp +SbR8kDmFtCZKb2VyZyBXdW5zY2ggPGpAaW50ZXJmYWNlLWJ1c2luZXNzLmRlPokA +lQMFEDHioSdlYKmsNPn51QEByz8D/10uMrwP7MdaXnptd1XNFhpaAPYTVAOcaKlY +OGI/LLR9PiU3FbqXO+7INhaxFjBxa0Tw/p4au5Lq1+Mx81edHniJZNS8tz3I3goi +jIC3+jn2gnVAWnK5UZUTUVUn/JLVk/oSaIJNIMMDaw4J9xPVVkb+Fh1A+XqtPsVa +YESrNp0+iQCVAwUQMwXkzcdm8Q+/vPRJAQEA4QQAgNNX1HFgXrMetDb+w6yEGQDk +JCDAY9b6mA2HNeKLQAhsoZl4HwA1+iuQaCgo3lyFC+1Sf097OUTs74z5X1vCedqV +oFw9CxI3xuctt3pJCbbN68flOlnq0WdYouWWGlFwLlh5PEy//VtwX9lqgsizlhzi +t+fX6BT4BgKi5baDhrWJAJUDBRAyCKveD9eCJxX4hUkBAebMA/9mRPy6K6i7TX2R +jUKSl2p5oYrXPk12Zsw4ijuktslxzQhOCyMSCGK2UEC4UM9MXp1H1JZQxN/DcfnM +7VaUt+Ve0wZ6DC9gBSHJ1hKVxHe5XTj26mIr4rcXNy2XEDMK9QsnBxIAZnBVTjSO +LdhqqSMp3ULLOpBlRL2RYrqi27IXr4kAlQMFEDGpbnd1u244dqP3sQEBJnQD/RVS +Azgf4uorv3fpbosI0LE3LUufAYGBSJNJnskeKyudZkNkI5zGGDwVneH/cSkKT4OR +ooeqcTBxKeMaMuXPVl30QahgNwWjfuTvl5OZ8orsQGGWIn5FhqYXsKkjEGxIOBOf +vvlVQ0UbcR0N2+5F6Mb5GqrXZpIesn7jFJpkQKPU +=97h7 +-----END PGP PUBLIC KEY BLOCK----- + + + + + 開発者 + + + &a.wosch; + + +Type Bits/KeyID Date User ID +pub 1024/2B7181AD 1997/08/09 Wolfram Schneider <wosch@FreeBSD.org> +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+iQCVAwUQNmrS +AzmN/mkrcYGtAQFQjAP8CthNueur8XDAZqC5q6NQcDs0PqqQ+raTUfQTv6Km6ykf +UzdpDlBoRC+CCyHfBfC5zo9N6mB7iV7qS1PljrdIh6VAwHxJN9iopB/x6+nsBvmy +0YSNt7eyfFrIVegCJvd4ALz5JBV8ZstznOwo8RAhDD0gX58F8nDhgWjy62JekGK0 +IldvbGZyYW0gU2NobmVpZGVyIDx3b3NjaEBhcGZlbC5kZT6JARUDBRA2Z9ZcCMks +sk6wLt0BAQBICACcTiDZ/AyYWRDLXsBOK+WMRoNk3+bQZ1cdy11nwJo+taT/389M +0r5TrEJ7CogpXC2rFUExTVWldSFZd8A1YIHtrTsP7YauUH0nA7k0wUnqDRYj8YJR +eMLFvc1OQ2y+mkvxF2BzzBzh/bcYbgJdWCB1MPahSNQfkGXtp+A5PjEs8Cp4+FLu +EUFScyxsD3g5/E+0d7mirJpe3pxcf9KCmFGHM89mrTKODQR/7N8dVqa9npeXZotm +ZK8Jz+tvRKFgNiLf2XL048+IE8ZtJXDYaDzTirHdcAqJMWQuxthCdG3ta4I+w5WM +WR8JtBLfVNpyU7LN6dl0IB7O5sYhyskApmMwiQCVAwUQM+z5oTmN/mkrcYGtAQGU +gAP/cJGro/SbV+L19s/Gem26KmegUH+bfIXoh2EzyRJ7heVdybu1LrSDFApmAE7d +sMDlAA1wd2XjVWD3nIEBl6k+J7qJB4ACjKVGs414jLpdKGPHdLRYqYDj4LyQFMv6 +/BpSoX1gnWp6xlC2xeWRan9ns3XZGS55UBVDvBE/B+fPoTe0JFdvbGZyYW0gU2No +bmVpZGVyIDxzY2huZWlkZXJAemliLmRlPokAlQMFEDZq0dI5jf5pK3GBrQEB38QD +/3NYyRPIejtXXq/okdDRyhWmA8cv0KG6gEupKCQKa7ep/OZTw/KxrN3ZOS8zlPod +tEn8mol+4SvY5AgSMdjQ0jTd1JdFcMKFnbJJrJ3b9IpwCqbkXy25rTUcQn9ICP47 +rFKC4qR/Ucrg5YVVhQ3pVJX6XuO2XvuG7euHAQNXV3e2 +=EpJQ +-----END PGP PUBLIC KEY BLOCK----- + + + + &a.brian; + + +Type Bits/KeyID Date User ID +pub 1024/666A7421 1997/04/30 Brian Somers <brian@Awfulhak.org> + Key fingerprint = 2D 91 BD C2 94 2C 46 8F 8F 09 C4 FC AD 12 3B 21 + +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: 2.6.3ia + +mQCNAzNmogUAAAEEALdsjVsV2dzO8UU4EEo7z3nYuvB2Q6YJ8sBUYjB8/vfR5oZ9 +7aEQjgY5//pXvS30rHUB9ghk4kIFSljzeMudE0K2zH5n2sxpLbBKWZRDLS7xnrDC +I3j9CNKwQBzMPs0fUT46gp96nf1X8wPiJXkDUEia/c0bRbXlLw7tvOdmanQhAAUR +tCFCcmlhbiBTb21lcnMgPGJyaWFuQGF3ZnVsaGFrLm9yZz6JAJUDBRAzbedc77Ox +BWZTbW0BAVtFA/42QelA3RBXYUtIcYGob+QsWkA1kGyBKQGPSS9coHdUVjClBRl3 +UZFmZhxAODb7cBRXmpvx2ZuMrhn/MpXTMqPOJaE3FYm+5SoeArphsRU+T8XofxfL +vRHkM3JURUjIVZdAQNvxxBso8NJG5KayP0Q96Vw+3sEwFK49jt14RCJy4IkAlQMF +EDNzvb1sq+iWcxFJBQEBfZwD/R3KNFf9ype9Dea8j1YIeNZ1E3e03en1I8fMj6Em +S1/L1WfFzMnfFCxZs7JgPtkBuB3CqP8f+LOdDt6PHPqNakmI9E6fiuGfJZ3jFZYA +TXa0XKuIoxIJNKhqkpbF8ixJZFTxFwAAwVYM3+sqr4qQ8FzVc5entxjyxPFNkwJw +RWV+iQCVAwUQM2aiBQ7tvOdmanQhAQE7LgQAiN6Hz+zd8bh0nO6VizbJxWFRHPbr +QWnJXGoMYyy88DyszAXC4zRshlyGUDQdHeP/1DFCXDEu78GfDCLaJ1bm25yVR7kL +xDZaEUQEbWqxfiwuzizAjkaxrW7dBbWILwWqrYF5TXClw+oUU/oIUW4t6t+GpAO1 +8PLYhSMXVYErrAA= +=EdyZ +-----END PGP PUBLIC KEY BLOCK----- + + + + + diff --git a/ja_JP.eucJP/books/handbook/policies/chapter.sgml b/ja_JP.eucJP/books/handbook/policies/chapter.sgml new file mode 100644 index 0000000000..dfc9a09cb4 --- /dev/null +++ b/ja_JP.eucJP/books/handbook/policies/chapter.sgml @@ -0,0 +1,368 @@ + + + + ソースツリーのガイドラインおよび方針 + + 原作: &a.phk;. + + 訳者: &a.jp.mihoko; + 6 September 1996 . + + 本章は, FreeBSD + のソースツリーについてのさまざまなガイドラインや + ポリシーについて書かれています. + + + Makefile 中の <makevar>MAINTAINER</makevar> + + 1996年6月. + + FreeBSD 配布物の特定の部分が, 一人の人やグループによって保守 + されている場合は, ソースツリーの当該 + Makefile に + + +MAINTAINER= email-addresses + + が付け加えられています. これを記述することによって, + この部分が誰 + に保守管理されているかを世界中のユーザに + 伝えることができます. + + この意味は次のとおりです: + + 保守担当者がそのコードを所有し, そのコードに対する責任を持っ + ています. すなわち, + その人がそのコードに関するバグの修正やトラブル報告 + に対する回答をします. また, + そのコードが寄贈ソフトウェアの場合には, そのソフトウェアの + 新しいバージョンに適切に追従させる作業をその人が行い + ます. + + 保守担当者が決められているディレクトリに対して + 変更をおこなう場合は, 変更をおこなう前に, + その変更内容を保守担当者に送って, + 保守担当者にレビューをしてもらってください. 保守担当者が, + 電子メールに一定期間応答しない場合にのみ, + 保守担当者がレビューすることなしに, + 変更をおこなうことが認められます. しかしながら, + そのような場合でも可能な限り, 変更点を第三者にレビュー + してもらうようにしてください. + + もちろん, この義務を引き受けることができない人やグループを + 保守管理者として追加することはできません. また, + 保守管理者がソースツリー管理者 ("committer") である必要は + ありません. + + + + 寄贈ソフトウェア + + 原作: &a.phk; and &a.obrien;. + 訳者: &a.jp.mihoko; + + 1996年6月. + + FreeBSD 配布物のうちのいくつかのソフトウェアは FreeBSD + プロジェクト 以外のところで保守されています. 歴史的な経緯から, + 私たちはこれを 寄贈 ソフトウェアと + 呼んでいます. perl や gcc, patch などがその例です. + + ここ数年来, この種のソフトウェアの取り扱いには, + さまざまな方法が 取られてきましたが, + どの方法にもいくつかの利点と欠点があります. + これまで欠点のない明確な方法はありませんでした. + + 議論した結果, これらの方法のうちの一つが + “公式な”方法として選択され ました. その方法が, 今後, + この種のソフトウェアを取り込む場合に, 使用 されます. その上, + この方法では, だれもが(cvs + にアクセス権のない人でさえ)“公式” + バージョンのソースに対する差分を簡単に得ることができます. + これは古い方法にはなかった大きな利点です. ですから, + 既存の寄贈ソフトウェアも, + この方法に収束していくことを強く望んでいます. + この方法を使用することにより, 寄贈ソフトウェアの主な開発者に, + 変更 点を返すのがとても容易になります. + + しかしながら結局, 寄贈ソフトウェアの取扱は, + 実際に作業を行って いる人々に委ねられています. + もしこの方法を使用することが, その人が扱っているパッケージには + 極端に合わないような場合には, コアチームの承認さえあれば, + これらの ルールに反しても, + 他の開発者の一般的な合意は得られるでしょう. + 将来にわたってパッケージを保守できるということは, + 大変重要な事柄に なってきます. + + + RCS のファイルフォーマットと CVS + のベンダブランチの使用には不幸な設計上の制限があります. + したがって, + ベンダブランチの内容をいまだに引きずっているファイルに + 対して小さな, 些細な変更, そして / あるいは + 膨大な変更を加えることには, + 強い反対があります. + “誤字訂正”はもちろんこの中に入りますし, + しかも“膨大な”の範疇に入るので, リビジョンが + 1.1.x.x + であるファイルに対する誤字訂正は避けられることになっています. + 一文字の変更したことによるリポジトリの肥大は, + 非常に劇的なものになり得るのです. + + + プログラミング言語 Tcl は, + この方法が活用されているよい例になっています: + + src/contrib/tcl には, + このパッケージの保守管理者が 配布したソースが含まれています. + この中からは FreeBSD に完全には適用 + できない部分が削除されています. Tcl の場合は, + mac, win, + compat というサブディレクトリは, FreeBSD + に取り込む前に削除されて いました. + + src/lib/libtcl には, + ライブラリを生成したり, ドキュ + メントをインストールする際に使用される, 標準の + bsd.lib.mk の 規則を使用した「bmake + スタイル」の Makefile だけが + 含まれています. + + src/usr.bin/tclsh には, + bsd.prog.mk 規則 を使用して, + tclsh + プログラムや関連するマニュアルページを生成 /インストール する + bmake スタイルの Makefile + だけが含まれています. + + src/tools/tools/tcl_bmake には, tcl + ソフトウェアを更新する必要が生じたときの助けになる2つのシェルス + クリプトが含まれています. これらは, + ソフトウェアを構築するのに使用し たり, + インストール対象になるソフトウェアではありません. + + ここ重要なのは, src/contrib/tcl + ディレクトリが, 規則にしたがっ て作られているということです. + つまり, できるだけ FreeBSD に特化した + 変更をおこなわないようにしたソースを(RCS + のキーワードを拡張しないで, CVS のベンダブランチに)おくようにし + ています. freefall + 上の「簡易取り込み」ツールは, 寄贈ソフトウェアを取り込む + 手助けとなります. けれども, + このツールの実行方法に疑問が生じた場合は, まずはじめに質問して, + 失敗をしないようにしてください. そして, + その疑問を“解決して”からツールを使用してください. + CVS に寄贈ソフトウェアを取り込む際には, + 事故があってはいけません. + よくあるような間違いをおかさないように, + 十分注意してください. + + 先ほど述べたように, 残念なことに CVS + にはベンダブランチという設計制限があります. このため, CVS + に寄贈ソフトウェアを取り込むには, オリジナル配布ソースに + 適用されるベンダからの“公式”パッチと, + ベンダブランチに逆輸入された 結果が必要です. + ベンダブランチの一貫性を破壊したり, 将来, + 新しいバージョンを取り込む + 時に衝突を起こしてしまったりというような + 困難な事態に陥らないように しなければなりません. そのために, + FreeBSD が管理しているバージョンに 対して, + 公式パッチを決して当ててはいけませんし, 公式パッチを "commit" + してはいけません. + + 多くのパッケージが, 他のアーキテクチャや他の環境と FreeBSD + との互換性を保ためのファイルをいくつか含んでいます. そこで, + スペースを節約するために, FreeBSD + にとっては無意味な配布ツリー上の一 + 部を削除することが許されています. けれども, + 削除されずに残ったファイルに対する, 著作権の通知やリリース + ノートのような情報を含んだファイルは, 決して削除しては + いけませ ん . + + bmake Makefile + が何らかのユーティリティによって, 配布ツリー + から自動的に生成できると, うまくいけば, 新しいバージョンへの + アップグレードをより簡単におこなうことができます. + もしこのようなユーティリティを作成できた場合には, 将来の管理者に + とって便利になるように, 移植の際に, + src/tools ディレクトリ上に, (必要に応じて) + そのユーティリティを必ずチェックインしてください. + + src/contrib/tcl + レベルのディレクトリには, FREEBSD-upgrade + と 呼ばれるファイルが追加されており, そのファイルでは + 次のような内容が 記述されています. + + + + ディレクトリ上に存在するファイル + + + + オリジナルの配布物をどこから入手すればよいか また, + 公式配布 サイトはどこか + + + + オリジナルの作者にパッチを送り返すためには, + どこに送ればよいか + + + + FreeBSD に特化した変更点の概要 + + + + しかしながら, 寄贈ソースと一緒に + FREEBSD-upgrade ファイルを + 取り込まないでください. それよりむしろ, + (訳注:このファイルを)初回に取り込んだ後は, コマンド cvs + add FREEBSD-upgrade ; cvs ci を実行してください. + src/contrib/cpio を例にすると, + 次のようになります: + + +このディレクトリは「ベンダ」ブランチ上のオリジナル配布ファイル +の初期ソースが含まれています. いかなる事情があっても, +パッチや cvs コミットによってこのディレクトリ上のファイルを +アップグレードしてはいけません. +(訳注:ベンダから配布された)新しいバージョンや公式パッチだけが +(訳注:このディレクトリに)取り込まれなくてはいけません. +ベンダの RCS Id が CVS に入ってしまうのを避けるために, "-ko" オプ +ションをつけてインポートすることを忘れないで下さい. + +GNU cpio 2.4.2 を取り込むためには, 以下のファイルが削除されました: + + INSTALL cpio.info mkdir.c + Makefile.in cpio.texi mkinstalldirs + +cpio を新しいバージョンにアップデートするためには, 次の作業を +おこないます: + + 1. 空のディレクトリに新しいバージョンを取り出します. + [ファイルに「いかなる変更」も加えてはいけません] + + 2. 上記にリストされたファイルと, FreeBSD には無意味な + ファイルを削除します. + + 3. 次のコマンドを実行します: + cvs import -ko -m 'Virgin import of GNU cpio v<version>' \ + src/contrib/cpio GNU v<version> + + 例えば, バージョン 2.4.2 を取り込むためには, 次のように + タイプします: + cvs import -ko -m 'Virgin import of GNU v2.4.2' \ + src/contrib/cpio GNU v2.4.2 + + 4. FreeBSD に対するローカルな変更と, 新しいバージョンとの間での + 矛盾を解消するために, ステップ 3 で出力された命令を実行します. + +いかなる事情があっても, この手順から外れてはいけません. + +cpio にローカルな変更を加えたい場合には, メインブランチ(別名 HEAD)に対して +パッチを実行し, コミットしてください. +決して GNU のブランチにローカルな変更を加えないでください. + +ローカルにおこなわれたすべての変更を次のリリースに含めるために, +"cpio@gnu.ai.mit.edu" に提出してください. + +obrien@freebsd.org - 30 March 1997 + + + + 共有ライブラリ + + Contributed by &a.asami;, &a.peter;, and &a.obrien;. + 9 December 1996. + + もしあなたが共有ライブラリをサポートする機能を port + に追加した り, + 共有ライブラリをサポートしていない他のソフトウェアに追加する + 場合には, 共有ライブラリのバージョン番号を次の規則にしたがって + つけてください. 一般的には, この規則は, + ソフトウェアのリリースバージョンとは 全く関係ありません. + + 共有ライブラリを作成する三つの重要な規則は + 次の通りです: + + + + 1.0 から始める + + + + 過去のバージョンに互換性のある変更の場合は, + マイナー番号を増やす + + + + 互換性のない変更の場合は, メジャー番号を増やす + + + + 例えば, 機能追加とバグ吸収の場合は, + マイナー番号を増やします. 機能削除, + 関数呼び出しのシンタックスなどが変更された場合は, + 強制的にメジャー番号を変更します. + + メジャー.マイナーー + (x,y) + の形式のバージョン番号を使用します. FreeBSD + のダイナミックリンカは, + x.y.z + という形式のバージョン番号 は扱えません. + この場合, y の後のバージョン番号 + (つまり三つ目の数字)は, + どのライブラリがリンクされているかを決めるために, 共有ライブラ + リ番号を比較する際に, すべて無視されます. + “小さな”リビジョンだけが + 異なる二つの共有ライブラリが指定 されると, + ld.so は, + リビジョンの大きい方の共有ライブラリを リンクします. すなわち, + もしあなたが libfoo.so.3.3.3 をリンク + していたとすると, リンカは頭の 3.3 + という部分だけを認識し, libfoo.so.3 + ではじまり その後に 3 + 以上の数字が続くもののうち, + 最も大きい番号 + の付いているライブラリをリンクします. + + + ld.so はいつも最も大きい + “マイナー” リビジョンのものを使うことに + 注意してください. 例えば, プログラムがはじめ + libc.so.2.0 を リンクしていたとしても, + libc.so.2.0 よりも + libc.so.2.2 を優先 して使用します. + + + 移植されていないライブラリに対しては, + リリースごとに共有ライブラリの + バージョン番号を一度だけ変更するのが私たちのポリシーです. + あなたがシステムライブラリのバージョン番号を上げた場合は, + Makefile の commit ログを確認してください. + 結果としてそのリリースには, 共有ライブラリのバージョン番号が + アップデートされた Makefile + に入るので, 最初にその変更を 確かめるのがソースツリー管理者 + ("committer") の責務です. その後のどんな変更も, + そのリリースには入りません. + + + + diff --git a/ja_JP.eucJP/books/handbook/ports/chapter.sgml b/ja_JP.eucJP/books/handbook/ports/chapter.sgml new file mode 100644 index 0000000000..40d992c56d --- /dev/null +++ b/ja_JP.eucJP/books/handbook/ports/chapter.sgml @@ -0,0 +1,1139 @@ + + + + アプリケーションのインストール : ports コレクション + + 原作: &a.jraynard;. + + 訳: &a.jp.masaki;, &a.jp.saeki;. + 11 November 1996. + + FreeBSD の ports コレクションを利用すると, 最小限の労力で + 非常に幅広くのアプリケーションのコンパイルとインストールがおこなえます. + + やってみたことのある方はよくご存知でしょうが, + オープンな規格とは 全くの誇大広告であって, + あるプログラムを異なるバージョンの Unix 上で + 動作させることは退屈で手間のかかる仕事です. + 求めているプログラムが自分のシステムでうまくコンパイルでき, + 正しいところにインストールできて, + 完璧に動作するとしたらとてもラッキーです. しかし, + あいにくこれは滅多にないことなのです. + ほとんどのプログラムについて, + あなたは髪を掻きむしることになるでしょうし, + かなりのプログラムでは, 白髪混じりの頭になってしまったり, + あるいは慢性の 脱毛症にすら なってしまうかもしれません... + + いくつかのソフトウェアディストリビューションでは, + 設定用のスクリプトを + 配布することでこの問題を解決しようとしています. + これらのスクリプトの中には非常に精巧なものもありますが, + 残念ながら, 中にはこれまで + 聞いたこともないようなシステムの名前をしゃあしゃあと + 言い放ったうえに, まるでシステムレベルの Unix + プログラミングに関する 最終試験のような, + たくさんの質問をしてくる場合があります. (例えば, + このシステムの gethitlist 関数は fromboz への const + ポインタを 返しますか? それとも const fromboz + へのポインタを返しますか?, このシステムには + Foonix スタイルの, 容認できない例外処理をおこなう + ルーチンがありますか? もしもないとしたら, + それはなぜですか?) + + 幸いなことに, ports コレクションがあれば, + これらのきつい作業はすべて 完了しています. make + install とタイプするだけで, 動作するプログラムを + 入手することができるのです. + + + なぜ ports コレクションを作ったのか? + + FreeBSD の基本システムは, + 非常に多くのツールやユーティリティから 構成されています. しかし, + よく使われるプログラムのうち多くのものが, + この基本システムには含まれていません. その理由は:- + + + + ある Lisp ベースのエディタのように, + それがないと生きていけないと 言う人もいれば, + ディスクの無駄だと言う人もいるようなプログラム. + + + + 基本システムに組み込むには特殊すぎるプログラム. (CAD + やデータベースなど.) + + + + “時間のある時に, + ちょっと見ておかなければ”というような類の, + それがシステムに含まれていないことが + 致命的とは言えないプログラム. (おそらく, + 何らかの言語などでしょう.) + + + + FreeBSD + のような真面目なオペレーティングシステムの一部として + 供給するには遊びが過ぎるようなプログラム. ;-) + + + + たくさんのプログラムを基本システムに組み込んだとしても, + もっともっと 組み込みたいという要求が出てくるので, + どこかで制限を引かなくてはならないため. (そうしなければ + FreeBSD の配布物は, + とてつもなく膨大になってしまうでしょう.) + + + + すべての人が自分のお気に入りの + プログラムを手作業で移植しなければ ならないとしたら, + (途方もない膨大な作業の繰り返しをさておいたとしても) + それは明らかに不合理な話です. そこで, FreeBSD プロジェクトでは, + 標準のツールを使って移植のプロセスを + 自動化する巧妙な方法を考え出しました. + + なお, + これは単純ながら非常に柔軟なツールを組み合わせることで, + 非常に強力な働きをさせるという“Unix + 流”の作業の優れた実例です. + + + + ports コレクションはどのように動くのでしょうか? + + インターネットでは通常, tarball の形で + プログラムが配布されています. これは, Makefile + とソースコードで構成され, 普通は何らかの説明書 (あいにく, + いつもわかりやすく書かれているとは 限りませんが) + が付属しています. ことによるとコンフィグレーションスクリプトも + 含まれているかもしれません. + + 標準的な手順では, FTP で tarball を入手して, + 適当なディレクトリで展開します. 次に説明書を読んで, + 必要な変更をおこないます. そして, 設定スクリプトを実行し, 標準の + make + コマンドを使ってソースのコンパイルとインストールを + おこないます. + + FreeBSD の ports も tarball の仕組みを利用していますが, + これはユーザが 苦労して作業することを期待したものではなく, + どのようにすれば FreeBSD 上で + そのプログラムが動くようになるかという「ノウハウ」を スケルトン + を使用して収めているものです. スケルトンは, カスタマイズ済みの + Makefile も + 提供していますので, ほとんどすべての ports + は同じ手順でインストールすることが できます. + + もしあなたが (あなたの + FreeBSD システム または + FTP サイト にある) ports スケルトンを見ていて, + そこに潜んでいる あらゆる種類の先端的な + ロケット工学的なものを見つけられると期待していると, + つまらなそうなファイルやディレクトリがそこにあるだけなのを見て, + がっかりするかもしれません. + (ports を手に入れる方法については, すぐに + FreeBSD ports コレクションの入手方法 + の節でお話します.) + + “一体どうしたらいいんだ? ここにはソースコードが + ないじゃないか?” + というあなたの叫びが聞こえるようです. + + 心配いりません. おとなしく読んでいけば, すべてが (たぶん) + 明らかに なるでしょう. 試しに ports をインストールして, + 何が起きるのかを見てみましょう. + ここではサンプルとして開発者向けの便利なツール, + ElectricFence を選択します. + このスケルトンを選んだ理由は, 他の ports + に比べても素直で理解しやすく 書かれているからです. + + + 自宅で試してみる場合には, root + になる必要があるでしょう. + + + + + &prompt.root; cd /usr/ports/devel/ElectricFence +&prompt.root; make install +>> Checksum OK for ElectricFence-2.0.5.tar.gz. +===> Extracting for ElectricFence-2.0.5 +===> Patching for ElectricFence-2.0.5 +===> Applying FreeBSD patches for ElectricFence-2.0.5 +===> Configuring for ElectricFence-2.0.5 +===> Building for ElectricFence-2.0.5 +[大量のメッセージをコンパイラが出力します...] +===> Installing for ElectricFence-2.0.5 +===> Warning: your umask is "0002". + If this is not desired, set it to an appropriate value + and install this port again by ``make reinstall''. +install -c -o bin -g bin -m 444 /usr/ports/devel/ElectricFence/work/ElectricFence-2.0.5/libefence.a /usr/local/lib +install -c -o bin -g bin -m 444 /usr/ports/devel/ElectricFence/work/ElectricFence-2.0.5/libefence.3 /usr/local/man/man3 +===> Compressing manual pages for ElectricFence-2.0.5 +===> Registering installation for ElectricFence-2.0.5 + + + ここではあなたが混乱しないように, コンパイル時の出力を + すべて取り除いてあります. + + もしもあなた自身で実行されたら, 最初にこのような + 出力結果が得られるはずです:- + + + &prompt.root; make install +>> ElectricFence-2.0.5.tar.gz doesn't seem to exist on this system. +>> Attempting to fetch from ftp://ftp.doc.ic.ac.uk/Mirrors/sunsite.unc.edu/pub/Linux/devel/lang/c/. + + + make プログラムは, + あなたの手元にソースコードがないことを検出し, + 処理を続けられるようにソースを FTP でダウンロードしようとします. + この例では, あらかじめ手動でソースコードを用意してあったので, + 持ってくる必要はありませんでした. + + では, 続けて make + プログラムが何をしているのか見てみましょう. + + + + ソースコード tarball のありかを + 確認します. 手元にファイルが存在しなければ, FTP + サイトから入手しようとします. + + + + チェックサム + テストを実行して, その tarball + が事故か何かで途中で切れていたり, ASCII モードで + ダウンロードされていたり, + 転送中にニュートリノによって傷められたりして + 改変されたりしていないかどうかを確認します. + + + + tarball を一時的な作業用ディレクトリに展開します. + + + + FreeBSD 上でコンパイルしたり, 動作させるのに必要な + すべての パッチ + をソースコードに当てます. + + + + 構築のために必要な + コンフィグレーションスクリプトを実行します. + コンフィグレーションスクリプトの + 質問には正確に答えてください. + + + + (いよいよ!) ソースコードをコンパイルします. + + + + 実行形式のプログラム, マニュアル, + その他のサポートファイルを, + システムのプログラムと混ざってしまわないように + /usr/local 以下に インストールします. + ports はすべて同じ場所にインストールされ, + システムのあちこちにばらまかれることはありません. + + + + インストール結果はデータベースに登録されます. + これにより, + インストールしたプログラムがもしも気に入らなかったときも, + システムから すべての痕跡をきれいに 消去 + することができます. + + + + 以上のステップが make + の出力と一致しているかどうか確認してください. + 今まで確認していなかったのなら, + 今からするようにしてください! + + + + FreeBSD ports コレクションの入手 + + あるプログラムの FreeBSD port + を入手するには二つの方法があります. ひとつは FreeBSD CD-ROM を使う方法で, + もうひとつは インターネット接続 + を使う方法です. + + + CD-ROM からコンパイルする + + FreeBSD CD-ROM がドライブに入っており, + /cdrom にマウントされていると仮定すると + (マウントポイントが /cdrom + である必要があります), ただ普通に実行するだけで ports + を構築できるようになり, tarball + をネットワーク経由でダウンロードするのではなく + /cdrom/ports/distfiles/ + からさがすようになります (そこにあればの話ですが). + + CD-ROM にある port スケルトンを使いたければ, 他に + /etc/make.conf の + 変数を以下のようにセットする方法があります: + + +PORTSDIR= /cdrom/ports +DISTDIR= /tmp/distfiles +WRKDIRPREFIX= /tmp + + (任意の十分な空きスペースの場所を /tmp + とおいています). + 次に, /cdrom/ports 下の適宜のサブディレクトリに + cd して, 例のごとく + make install とタイプします. + WRKDIRPREFIX は port に + /tmp/cdrom/ports の下でビルドさせようとします; + 例えば, games/oneko は + /tmp/cdrom/ports/games/oneko の下で + ビルドされるでしょう. + + + ライセンスの制限により, いくつかの ports + でオリジナルのソースコードを CD-ROM + に入れることができなかったものがあることに注意してください. + この場合, インターネット経由で + ports をコンパイルする の + 節を参照してください. + + + + インターネット経由で ports をコンパイルする + + CD-ROM を持っていなかったり, その ports + の最新バージョンを確実に入手したい 場合は, その ports の スケルトン を + ダウンロードする必要があります. ところで, これは落し穴が + たくさんある作業に見えるかもしれませんが, + 実際には非常に簡単です. + + 初めに, あなたの動かしている FreeBSD + がリリースバージョンなら ports ページ + でその FreeBSD 用の “アップグレードキット” + を手にいれてください. このパッケージには, 最新の ports + をコンパイルするのに必要な, + リリース以降に更新されたファイルが含まれています. + + FreeBSD の FTP サーバーがその場で tarball + を作成できることを利用してスケルトンを入手すると + 非常に便利です. ここでは例として databases ディレクトリにある + gnats プログラムを使って説明します. + (角型かっこの中の文はコメントなので, 実際に実行する場合には, + これをタイプしないでください!):- + + + &prompt.root; cd /usr/ports +&prompt.root; mkdir databases +&prompt.root; cd databases +&prompt.root; ftp ftp.freebsd.org +[ユーザ名 `ftp' でログインし, パスワードを要求されたら, あなたの電子メール +アドレスを入力してください. バイナリモードを (イメージモードと呼ばれることも +あります) 使うのをお忘れなく!] +> cd /pub/FreeBSD/ports/ports/databases +> get gnats.tar +[gnats スケルトンの tarballs を取得] +> quit +&prompt.root; tar xf gnats.tar +[gnats スケルトンの展開] +&prompt.root; cd gnats +&prompt.root; make install +[gnats の構築とインストール] + + + さて何が起きるでしょうか? FTP + サイトにいつも通りに接続して, データベースの + サブディレクトリに移動します. get gnats.tar + とコマンドを入力すると, FTP サイトでは gnats ディレクトリを + tarred + にしてくれるのです. + + gnats スケルトンを展開したら, gnats ディレクトリへ移動して + ports を構築します. すでに + 説明したように, make の過程で + 手元にソースコードがないことを検出すると, + ソースコードを取得してから 展開し, + パッチ当てと構築をおこないます. + + それでは, 少し冒険をしてみましょう. 一つの ports + スケルトンを 取得するかわりに, たとえば ports + コレクションの中のデータベースの スケルトンをすべて, + サブディレクトリ全体を取得してみましょう. + やり方はほとんど同じです:- + + + &prompt.root; cd /usr/ports + &prompt.root; ftp ftp.freebsd.org + [ユーザ名 `ftp' でログインし, パスワードを要求されたら, あなたの電子メール +アドレスを入力してください. バイナリモードを (イメージモードと呼ばれることも +あります) 使うのをお忘れなく!] + > cd /pub/FreeBSD/ports/ports + > get databases.tar [データベースディレクトリの tarballs を取得] + > quit + &prompt.root; tar xf databases.tar [すべてのスケルトンを展開] + &prompt.root; cd databases + &prompt.root; make install [データベース ports 全部の構築とインストール] + + + + わずかばかりの簡単なコマンドで, この FreeBSD + マシン上にデータベース + プログラムを一揃い手に入れてしまいました! 一つの ports + スケルトンを取ってきて それを構築する場合との違いは, + すべてのディレクトリを一度に取得して, + 全部を一度にコンパイルしたということだけです. + かなり感動的だと思いませんか? + + たくさんの ports をインストールする つもりなら, + おそらくすべての ports ディレクトリをダウンロードしておく + 価値があるでしょう. + + + + + スケルトン + + スケルトン (訳注: skeleton とは骸骨のことです) とは, + 締め切りを守るため, 食事をするのを忘れるほど仕事にのめり込んだ + ハッカーたちのなれの果ての ことでしょうか? FreeBSD + の屋根裏に潜む, なにか気持ちの悪いものでしょうか? いいえ, + ここでスケルトンの意味するところは, ports の魔術を実現するのに + 必要とされるすべてのものを提供する最小の骨組みのことです. + + + <filename>Makefile</filename> + + スケルトンのもっとも重要な要素は Makefile です. Makefile + は ports を どのようにコンパイルし, + インストールをおこなうかを指示する + いろいろな命令を含んでいます. 以下に ElectricFence の Makefile + を示します:- + + +# New ports collection makefile for: Electric Fence +# Version required: 2.0.5 +# Date created: 13 November 1997 +# Whom: jraynard +# +# $Id$ +# + +DISTNAME= ElectricFence-2.0.5 +CATEGORIES= devel +MASTER_SITES= ${MASTER_SITE_SUNSITE} +MASTER_SITE_SUBDIR= devel/lang/c + +MAINTAINER= jraynard@freebsd.org + +MAN3= libefence.3 + +do-install: + ${INSTALL_DATA} ${WRKSRC}/libefence.a ${PREFIX}/lib + ${INSTALL_MAN} ${WRKSRC}/libefence.3 ${PREFIX}/man/man3 + +.include <bsd.port.mk> + + "#" で始まる行は, 人間のためのコメント行です. + (ほとんどの Unix のスクリプトと同じですね.) + + DISTNAMEtarball + の名前から拡張子を取ったものです. + + CATEGORIES + はこのプログラムの種類を示します. この場合, + 開発者向けのユーティリティということになります. + 完全なリストはこのハンドブックの カテゴリ + をみてください. + + MASTER_SITES はマスタ FTP サイトの URL + です. もしローカルシステムに tarball がない場合には, + ここから取得します. これは信頼できると考えられているサイトで, + 通常はそのプログラムを + インターネット上で公式に配布しているサイトです. + (そのソフトウェアがインターネット上で「公式に」 + 配布されているとしたら) + + MAINTAINER は, + 例えば新しいバージョンのプログラムが出た場合に, 必要であれば + スケルトンの更新をおこなう保守担当者の + 電子メールアドレスです. + + 次の数行はとりあえず飛ばします. + + .include <bsd.port.mk> + + この行は, この ports に必要なその他の命令やコマンドは + bsd.port.mk に + 入っているということを示しています. + これらはすべての ports で共通のものなので, + それぞれの Makefile に書いておく必要はありません. + そのため単一の標準ファイルに + まとめられているのです. + + ここでは Makefile + がどう働くかを詳細に調査するのが目的ではありませんので, + MAN3 で始まる行は, インストールの後に + ElectricFence のマニュアルを 圧縮するために使用される, + と言っておくだけで充分でしょう. これにより, + 貴重なディスクスペースが保護されているわけです. オリジナルの + port では install + ターゲットが用意されていないので, + do-install からの 3 行が この ports + によって生成されたファイルを + 正しい場所に置くために使用されます. + + + + <filename>files</filename> ディレクトリ + + ports のチェックサム算出には MD5 + アルゴリズムを使用しているので, この チェックサム を含んでいる + ファイルは md5 と呼ばれます. + ちょっと混乱するかもしれませんが, このファイルは + files という + 名前のディレクトリに置かれています. + + このディレクトリは, ports に必要だけれども, + 他のどこにも属さない 雑多なファイルも含んでいます. + + + + <filename>patches</filename> ディレクトリ + + このディレクトリには, FreeBSD + ですべてを正常に動作させるのに 必要な パッチ が含まれています. + + + + <filename>pkg</filename> ディレクトリ + + このディレクトリには, + 非常に役立つ三つのファイルが含まれています:- + + + + COMMENT — + プログラムについての 1 行の説明. + + + + DESCR — より詳細な説明. + + + + PLIST — + プログラムのインストール時に作成される, + すべてのファイルのリスト. + + + + + + + ports が動かないのですが, どうしたらよいでしょう + + おやおや. では, 次の四つのどれかをやってみてください: + + + + 自分で修正する. ports + の仕組みに関する技術的な詳細については, + アプリケーションの移殖方法をご覧ください. + + + + 苦情をいう. これは電子メールで だけ + にしてください! このようなメールの宛先は &a.ports; です. + なお, 必ず port の名前やバージョン, その port のソースや + distfile(s) を どこから入手したか, + どんなエラーが発生したのかを書いておいてください. + + + + 忘れてしまう. これはほとんどの場合最も簡単な方法です. + ports + のプログラムのうち必要不可欠な物はごくわずかです. + + + + FTP サイトからコンパイル済みのパッケージを入手する. + “マスター”パッケージコレクションは FreeBSD の + FTP サイトの + パッケージディレクトリ に置いてありますが, + まずあなたの近くのローカルミラーサイトを確認してください! + ソースからのコンパイルに挑戦するよりも, + パッケージを使うほうが (全体的に見て) + ずっと確実に動作するでしょうし, + より手っ取り早い方法でもあります. + システムにパッケージをインストールするには, &man.pkg.add.1; + を使ってください. + + + + + + 質問と回答集 + + + + Q. 私はモデムについての議論を + しているのかと思っていました??! + + A.なるほど, あなたはきっとコンピュータの背面についている + シリアルポートのことだと思ってしまったのでしょう. + あるバージョンの Unixから別のバージョンの Unix + へとプログラムを 移殖することを “porting” + というのですが, ここで我たちは “porting” の結果 + という意味で “port” を使っています. + (コンピュータに関わる人々の悪しき習慣として, + ひとつの同じ言葉を複数の + まったく違う意味として使うことがあるのです.) + + + + Q. 私は, 標準以外のプログラムのインストールには packages + を使うと 思っていたのですが. + + A. そのとおり. 通常は packages + が最も手早くて簡単な方法です. + + + + Q. それではどうして面倒な ports があるのですか? + + A. いくつかの理由があります:- + + + + いくつかのソフトウェアのライセンス条件には, + バイナリではなくソースコードでの + 配布を求めているものがあります. + + + + バイナリ配布を信用していない人もいます. + 少なくともソースコード があれば, ソースコードを読んで, + (理論的には) 潜在的な問題点を自分で + 見つけ出すこともできるはずです. + + + + ローカルなパッチを入手した場合, + それを自分で追加するために + ソースコードが必要になります. + + + + プログラムがいかにコンパイルされるべきかについて, + あなたはパッケージを作った人とは + 異なる見解を持っているかもしれません. + どんな最適化オプションをつけるべきかとか, + デバッグバージョンを作ってから それを strip + するべきだとか, いや, そうするべきでない, などなど, + 確固たる見解を持っている人もいるでしょう. + + + + ソースコードを手元に置いておきたい人たちもいます. + 彼らは, 退屈したときに眺めたり, あちこち解析してみたり, + ソースコードを 借用したり (もちろん, + ライセンスが許せばの話ですが) するのです. + + + + あなたがソースコードを持っていなければ, + それはソフトウェアとは 言えませんね! ;-) + + + + + + + Q. パッチとは何ですか? + + A. パッチとは, + あるバージョンから他のバージョンへどのように変更するかを + 示す, (通常は) 小さなファイルです. “23 + 行目を削除”, “468 行目の後に これらの 2 + 行を追加”, または“197 + 行目をこのように変更”というような 内容を含んでいます. + これは, “diff” + という名前のプログラムで生成されます. + + + + + Q. tarball とは一体何ですか? + + A. .tar または + .tar.gz という拡張子を持つファイルです. + (.tar.Z のようなバリエーションも + ありますし, DOS のファイルシステム用に + .tgz + と短縮される場合もあります.) + + これは基本的に, 一つのファイルに固めた + (.tar) ディレクトリツリーです. + 圧縮されている (.gz) 場合もあります. + これは元々 Tape + ARchives (訳注: テープアーカイブ) + (このため tar という名前なのです) + で使われていたものなのですが, + インターネット上でプログラムのソースコードを配布するために + 広く使われている方法です. + + これらのファイルの中身を見たり, + 展開したりすることもできます. FreeBSD + の基本システムに付属する Unix 標準の tar + コマンドを使ってみると 次のようになります:- + + + &prompt.user; tar tvzf foobar.tar.gz +&prompt.user; tar xzvf foobar.tar.gz +&prompt.user; tar tvf foobar.tar +&prompt.user; tar xvf foobar.tar + + + + + + + Q. チェックサムとは何ですか? + + A. これは, + チェックしたいファイル中のすべてのデータを加えて生成した + 数値です. 何か文字が書き換わっていたら, + チェックサムが一致しなくなります. そのため, + 単純な比較だけで違いを見つけることができるのです. + (実際には, 文字の位置が入れ替わるなどの, + 単純な加算ではわからない問題も + 見つけることができる複雑な方法で計算されています.) + + + + Q. 私は, CD-ROM から ports + をコンパイルする にしたがって ports + をインストールしていました. kermit + をインストールしようとするまではうまくいっていました:- + + + &prompt.root; make install +>> cku190.tar.gz doesn't seem to exist on this system. +>> Attempting to fetch from ftp://kermit.columbia.edu/kermit/archives/. + + + なぜ cku190.tar.gz が見つからないのでしょうか? 不良品の + CD-ROM を買ってしまったのでしょうか? + + A. Kermit の権利を持つチームは, 私たちの CDROM に kermit + の tarball を 入れることを許可しませんでした. + 申し分けありませんが, 手動でファイルを 入手してください. + このようなエラーメッセージが出たのは, + あなたがそのときインターネットに 接続していなかったためです. + あらかじめ上記のサイトのいずれかからファイルを + ダウンロードしておけば, プロセスを再開することができます. + (ダウンロードの際には, + あなたに最も近いサイトを選ぶようにしてください. そうすれば, + 時間とインターネットの帯域の節約になります) + + + + Q. kermit の tarball を入手しましたが, + /usr/ports/distfiles に + ファイルを置こうとすると, + 書き込み権がないというエラーがでます. + + A. ports のしくみは + /usr/ports/distfiles から tarball + を探します. しかし, これは read-only の CD-ROM + へのシンボリックリンクなので, + ここにファイルを置くことはできません. 次のようにすれば, + 他の場所を探すよう ports に指示することができます. + + + &prompt.root; make DISTDIR=/where/you/put/it install + + + + + Q. ports では, すべてを /usr/ports + に置いたときだけ動作するのでしょうか? + システムの管理者によると, 私の個人的なファイルは + /u/people/guests/wurzburger + に入れなければならないのですが, これでは + うまくいかないように思います. + + A. PORTSDIR 変数と + PREFIX 変数を変更することで, + 違うディレクトリを 使用することができます. 例えば, + + + &prompt.root; make PORTSDIR=/u/people/guests/wurzburger/ports install + + + とすると, ports は + /u/people/guests/wurzburger/ports + でコンパイルされ, すべて /usr/local + 以下にインストールされます. + + + &prompt.root; make PREFIX=/u/people/guests/wurzburger/local install + + + この場合, コンパイルは /usr/ports + でおこない, + /u/people/guests/wurzburger/local + にインストールします. もちろん, + 以下のように両者を組み合わせることも可能です. + + + &prompt.root; make PORTSDIR=.../ports PREFIX=.../local install + + + (省略せずに記述したら, + このページに収めるには長すぎるのですが, + 考え方は理解していただけたと思います) + + もし ports をインストールするたびに, + これらを毎回タイプするのが 気に入らないのであれば, + (正直に言って, 誰もそう思わないでしょう) + これらを環境変数にセットしてしまうという手があります. + + + + Q. 私は, FreeBSD の CD-ROM を持っていませんが, + 私はすべての tarball を 私のシステムに置いておきたいのです. + そうすれば, 私は ports をインストール するたびに, + 毎回ダウンロードが終わるのを待たなくてすむでしょう. + これを一度におこなう簡単な方法はありませんか? + + A. ports コレクション全体の tarball を持ってくるには, + 次のようにしてください. + + + &prompt.root; cd /usr/ports +&prompt.root; make fetch + + + ports の下のディレクトリひとつの tarball + を持ってくるには, 次のように してください. + + + &prompt.root; cd /usr/ports/directory +&prompt.root; make fetch + + + ports をひとつだけ持ってくる方法は, + きっと既にご存知だと思います. + + + + Q. マスタ FTP サイトから tarball を持ってくるより, + 近くにある FreeBSD の + ミラーサイトから持ってきた方が速いはずです. MASTER_SITES + に書かれている サイト以外から持ってくるように ports + に指示する方法はありませんか? + + A. もちろんあります. 例えば ftp.FreeBSD.ORG が + MASTER_SITES に書かれている + サイトより近いとしたら, 以下のようにしてください. + + + &prompt.root; cd /usr/ports/directory +&prompt.root; make MASTER_SITE_OVERRIDE=ftp://ftp.FreeBSD.ORG/pub/FreeBSD/ports/distfiles/ fetch + + + + + Q. ダウンロードをする前に, + どんなファイルが必要なのか知りたいのですが. + + A. make fetch-list とすると, ports + に必要なファイルの一覧を表示できます. + + + + Q. ports のコンパイルを途中で止める方法はありますか? + 私はインストールをする前に + いろいろとソースコードを解析したいのですが, 毎回 control-C + を打たなければならないのが少し面倒です. + + A. make extract を実行すると, + ファイル転送とソースコードの展開まで + おこなったところで停止します. + + + + Q. 自分で ports を作ろうとしています. 私の作ったパッチが + 正しく処理できることを確認できるように, + コンパイルを止めたいのです. パッチのための make + extract のようなものはありませんか? + + A. あります. make patch + があなたのお望みのものです. おそらく + PATCH_DEBUG オプションも同様に + お役に立つことでしょう. ところで, + あなたの努力に感謝いたします!! + + + + Q. あるコンパイルオプションはバグの + 原因になるという話を聞きました. 本当なのでしょうか? + どうやったら正しい設定で ports + をコンパイルできますか? + + A. 本当です. gcc の バージョン 2.6.3 + (FreeBSDの 2.1.0 と 2.1.5 に付属している バージョン) では, + オプションを + オプションなしで + 使うと, バグのあるコードを出力します (ほとんどの ports は + オプションを 使いません). + コンバイラオプションは次のように定義 すべき + です. + + + &prompt.root; make CFLAGS='-O2 -fno-strength-reduce' install + + + これを /etc/make.conf + に書いておくこともできますが, 残念なことに すべての ports + がこの指定を尊重してくれる 訳ではありません. + もっとも確実なのは make configure + を実行し, ソースディレクトリの Makefile + を見て手で修整することですが, ソースが + 多くのサブディレクトリにわかれていて, 各々に Makefile + がある場合は 大変な仕事になります. + + + + Q. ports がたくさんありすぎて, + 私の欲しいものがなかなか見つけられません. どんな ports + が使えるのか, リストはどこかにありませんか? + + A. /usr/ports の中にある + INDEX ファイルを見てみましょう. + あるキーワードで ports コレクションを検索したければ, + それも可能です. たとえば, + 以下のようにすればプログラミング言語 LISP に関連した ports + を見つけることができます: + + &prompt.user; cd /usr/ports +&prompt.user; make search key=lisp + + + + Q. foo ports + をインストールしたいのですが, それのコンパイルは + すぐに停止して, bar ports + のコンパイルが始まってしまいます. 一体どうして? + + A. foo ports が, + bar ports + の提供する何らかの機能を必要としているからです. 例えば + foo が画像を使うとすると, + bar は画像処理に必要な + ライブラリを持っている, などです. または, + barfoo + をコンパイルするのに必要なツールなのかもしれません. + + + + Q. ports から + grizzle + プログラムをインストールしましたが, まったく + ディスクスペースの浪費です. 削除したいのですが, + すべてのファイルが どこへインストールされたのかわかりません. + 何か手がかりはありませんか? + + A. 大丈夫, 次のようにしてください. + + + &prompt.root; pkg_delete grizzle-6.5 + + + + + Q. ちょっと待ってください. + 削除しようとするコマンドのバージョン番号を + 知っていなくてはならないのでしょうか? あなたは, + 私がバージョン番号を + 覚えていることを本気で当てにしているのでしょうか? + + A. そんなことはありません. + バージョン番号は次のようにすればわかります. + + + &prompt.root; pkg_info -a | grep grizzle +Information for grizzle-6.5: +grizzle-6.5 - the combined piano tutorial, LOGO interpreter and shoot 'em up arcade game. + + + + + Q. ディスク容量のことなのですが, ports + のディレクトリは非常に膨大な容量を 使うように見えます. + 残しておいた方がよいのでしょうか? 削除してしまっても + よいのでしょうか? + + A. はい. インストールが首尾よく終わり, + もうソースコードが必要でないと思うなら, + それらを残しておく理由はないでしょう. 一番よい方法は, + 次の通りです. + + + &prompt.root; cd /usr/ports +&prompt.root; make clean + + + これは, すべての ports のサブディレクトリを調べ, 各 + ports のスケルトン以外の削除をおこないます. + + + + Q. これを試してみたのですが, tarball や ports + で使われたファイルが distfiles + ディレクトリに残っています. + これも削除してしまっても大丈夫ですか? + + A. はい. それを使った作業が終わったのであれば, + 削除してしまっても大丈夫です. + + + + Q. + 私はとてもとてもたくさんのプログラムを楽しみたいのです. + 一度にすべての ports + をインストールする方法はありませんか? + + A. 次のようにしてください. + + + &prompt.root; cd /usr/ports +&prompt.root; make install + + + + + Q. やってみました. 時間がとてもかかるだろうと思ったので, + そのまま実行を 続けさせて, 私は寝ました. + 翌朝コンピュータを見てみると, 三つ半の ports しか + 処理が終わっていませんでした. + なにか悪かったのでしょうか? + + A. これは ports の中には私たちの決められないこと + (例えば, あなたが A4 の 用紙に印刷したいのか, US + レターサイズの用紙に印刷したいのかなど) について + 質問してくるものがあるからです. + それらの質問には手動で答える必要があります. + + + + Q. + 私は一日中モニタの前に座って過ごしたりしたくないのですが. + 何かよいアイデアはありませんか? + + A. では, あなたが寝に / 仕事に / + 公園にいく前に以下を実行してください:- + + + &prompt.root; cd /usr/ports +&prompt.root; make -DBATCH install + + + これでユーザの入力を要求しないすべての ports + をインストールします. そして, 戻ってきてから, + 次のように実行してください. + + + &prompt.root; cd /usr/ports +&prompt.root; make -DIS_INTERACTIVE install + + + そして, 残りの作業を実行してください. + + + + Q. 私たちは ports コレクションにある + frobble を使っています. ですが, + 私たちの必要に応じて ports を変更したところがあるのです. + 自分でパッケージを作って, それを私たちのサイトのまわりに + 簡単に配布できるような方法がありますか? + + A. もちろんあります. + 変更点をパッチにする方法は知っていますよね:- + + + &prompt.root; cd /usr/ports/somewhere/frobble +&prompt.root; make extract +&prompt.root; cd work/frobble-2.8 +[あなたのパッチを当ててください] +&prompt.root; cd ../.. +&prompt.root; make package + + + + + Q. この ports の技術は本当に賢いですね. + どのようにして動いているのか + 私はどうしても知りたいと思います. その秘密は何ですか? + + A. 秘密は一切ありません. Makefiles + ディレクトリ にある + bsd.ports.mk と + bsd.ports.subdir.mk + ファイルを見るだけです. + + + 複雑なシェルスクリプトを嫌う読者は, + このリンクを追いかけないほうが よいでしょう. + + + + + + + diff --git a/ja_JP.eucJP/books/handbook/ppp-and-slip/chapter.sgml b/ja_JP.eucJP/books/handbook/ppp-and-slip/chapter.sgml new file mode 100644 index 0000000000..ba38c1dc4d --- /dev/null +++ b/ja_JP.eucJP/books/handbook/ppp-and-slip/chapter.sgml @@ -0,0 +1,2810 @@ + + + + PPP と SLIP + + もしあなたがモデムを使ってインターネットに接続したり, + 他の人々に FreeBSD によるインターネットへのダイヤルアップ接続を + 提供しようとしているのでしたら, PPP または SLIP + 接続を選択することができます. PPP 接続には, 2 + 種類の方法が提供されています: ユーザPPP + (iijppp とも呼ばれます) + とカーネルPPP です. 両方の PPP の設定手順と, + SLIP の設定方法については以下の章に書かれています. + + + ユーザ ppp の設定 + + ユーザ ppp は FreeBSD 2.0.5-RELEASE において, + 既存のカーネル実装版の PPP に加えて導入されました. それでは, + これまでの pppd との違い, すなわち この新しい PPP + が追加された理由とは いったい何なのでしょうか? + マニュアルから引用してみます: + +
+ これはユーザプロセス PPP ソフトウェアパッケージです. + 通常, PPP は (例えば pppd + でそうなっているように) カーネルの一部として + 実装されていますので, デバッグや動作の変更が少々困難です. + しかし, この実装では, PPP はトンネルデバイスドライバ (tun) の + 助けにより, ユーザプロセスとして実装されています. +
+ + 本質として, これは常に PPP デーモンを実行しておかなくても, + 必要な時に ppp プログラムを実行できるということを意味します. + このプログラムはカーネルとのデータ送受のために + 一般のトンネルデバイスを 使うことができるため, PPP + インターフェースをカーネルに組み込んでおく + 必要がありません. + + 以降では, ユーザ ppp と pppd のような他の + PPP クライアント/サーバ + ソフトウェアとを区別する必要が無い場合には, ユーザ ppp を単に + ppp とだけ 呼びます. 特に断らない限り, + このセクションのすべてのコマンドは root 権限で + 実行する必要があります. + + バージョン 2 の ppp では, + 数多くの機能強化がおこなわれています. どのバージョンの ppp + がインストールされているのかを調べるには, 引数なしで ppp + を起動し, プロンプトが表示されたら show + version とタイプしてください. 最新版の ppp + にアップグレードするのは, (どのバージョンの FreeBSD においても) + 難しいことではありません. www.Awfulhak.org + から最新版のアーカイブをダウンロードしてください. + + + スタートの前に + + このドキュメントでは, あなたが + およそ以下のような状況にあると仮定しています: + + PPP 接続の使えるインターネットサービスプロバイダ (ISP) + のアカウントを 持っている. さらに, 接続済みのモデム + (またはその他のデバイス) があり, + プロバイダとの接続が可能なように正しく設定されている. + + 以下の情報を手に入れておく必要があるでしょう: + + + + プロバイダの電話番号. + + + + ログイン名とパスワード. これは通常の unix + 形式のログイン名と パスワードの組という場合もありますし, + PPP PAP または CHAP の + ログイン名とパスワードの組という場合もあります. + + + + 一つ以上のネームサーバの IP アドレス. 通常, + プロバイダから IP アドレスを二つ指示されている はずです. + 自分でネームサーバを立ち上げている場合を除き, バージョン + 1.X の PPP + を使用している場合には, + この情報は絶対に必要です. バージョン + 2 の PPP からは, + ネームサーバアドレスの 自動設定機能が追加されています. + この機能をプロバイダ側でもサポートしていれば, ppp + の設定ファイルに enable dns + と書いておくことで PPP + がネームサーバアドレスの設定をおこなうようになります. + + + + + プロバイダからは以下の情報が提供されているはずですが, + どうしても必要というわけではありません: + + + + プロバイダのゲートウェイの IP アドレス. + ゲートウェイとは, あなたがそこに接続をおこなって, + “デフォルトルート” + として設定することになるマシンです. + プロバイダがこのアドレスを明示していなくても, 最初は + 適当に設定しておいて, 接続時にプロバイダの PPP サーバから + 正しいアドレスを教えてもらうことができます. + + このアドレスは, 以降 HISADDR + と呼ぶことにします. + + + + プロバイダのネットマスク設定. + プロバイダが明示していないとしても, ネットマスクとして + 255.255.255.0 + を使用しておけば問題ありません. + + + + もしプロバイダから固定の IP + アドレスとホスト名の割り当てを 受けていれば, + その情報を指定しておくこともできます. + 割り当てを受けていなければ, 接続先から適切な IP + アドレスを指定してもらいます. + + + + もし, 必要な情報が不足していれば, プロバイダに連絡を取って + 確認しておいてください. + + + + ppp 対応カーネルの構築 + + 説明でも述べているように, ppp + はカーネルの tun デバイスを使います. + そのため, このデバイスがカーネルに組み込まれているかどうかを + 確認しておかなくてはいけません. + + これを確認するには, カーネルコンパイルディレクトリ + (/sys/i386/conf または + /sys/pc98/conf) に移動して, + カーネルコンフィグレーションファイルを調べます. + 以下の行がどこかに含まれている必要があります. + + +pseudo-device tun 1 + + 元々の GENERIC カーネルは + 標準でこれを含んでいますので, + カスタムカーネルをインストールしているのではなかったり, + /sys ディレクトリが存在しないのであれば, + 何も変更する必要はありません. + + この行がカーネルコンフィグレーションファイルに + 含まれていなかったり, tun デバイスが一つでは足りない場合 + (例えば, 同時に 16 本の ダイアルアップ PPP + 接続を処理できるサーバを立ち上げるとしたら, + 1 のかわりに 16 + を指定する必要があるでしょう), この行を追加して + カーネルの再コンパイルとインストールをおこなう必要があります. + それからこの新しいカーネルを使ってブートしてください. + カーネルコンフィグレーションの詳細については, FreeBSD + カーネルのコンフィグレーション + を参照してください. + + 以下のコマンドを実行することで, + 現在のカーネルにトンネルデバイスが + いくつ組み込まれているかを調べることができます: + + &prompt.root; 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 + + この例ではトンネルデバイスが四つ存在し, そのうち二つに + 設定がおこなわれ, 使用中であることがわかります. 上の例で + RUNNING フラグがオンになっている + ものがありますが, これは + そのインターフェースが何かに使用されていることを示している + だけであるということに注意してください. つまり, + RUNNING になっていない + インターフェースがあったとしても, それはエラーではありません. + + + トンネルデバイスがカーネルに組み込まれておらず, + 何らかの理由で + カーネルの再構築ができない場合でも, + 方法がないわけではありません. + 動的にデバイスをロードすることができるはずです. + 詳細については + &man.modload.8; や &man.lkm.4; など, + 適切なマニュアルを参照してください. + + この機会にファイアウォールも + 設定しておきたいと思っているのであれば, 詳細についてはファイアウォールセクションを + 参照してください. + + + + tun デバイスの確認 + + ほとんどのユーザは tun デバイス + (/dev/tun0) が一つあれば充分でしょう. + より多くのデバイスを使う場合 (すなわち, + カーネルコンフィグレーション ファイルで pseudo-device + tun の行に 1 + 以外の数値を指定している場合), 以下で + tun0 と書かれている部分をすべて, + あなたが使うデバイスの番号に + あわせて読みかえてください. + + tun0 + デバイスが正しく作成されていることを確認する最も簡単な方法は, + それを作り直すことです. そのためには, + 以下のコマンドを実行します: + + &prompt.root; cd /dev +&prompt.root; ./MAKEDEV tun0 + + カーネルに 16 個のトンネルデバイスを組み込んだのであれば, + tun0 だけでなく他の tun + デバイスも作成しておく必要があるでしょう: + + &prompt.root; cd /dev +&prompt.root; ./MAKEDEV tun15 + + また, カーネルが正しく設定されているかどうかを調べるために + 以下のコマンドを実行して, + このような出力が得られることを確認します: + + &prompt.root; ifconfig tun0 +tun0: flags=8050<POINTOPOINT,RUNNING,MULTICAST> mtu 1500 + + まだ RUNNING + フラグがセットされていない場合もあります. + その時は以下のような出力が得られるでしょう: + + &prompt.root; ifconfig tun0 +tun0: flags=8010<POINTOPOINT,MULTICAST> mtu 1500 + + + + 名前の解決に関する設定 + + リゾルバ (resolver) はシステムの一部分で, IP + アドレスとホスト名との 変換をおこないます. IP + アドレスとホスト名を対応させるためのマップを, + 二つの場所のうちの一つから探すように設定できます. 一つめは + /etc/hosts (man 5 + hosts) と呼ばれるファイルです. 二つめはインターネット + ドメインネームサービス (DNS) と呼ばれる + 分散データベースですが, これに関する議論は + このドキュメントで扱う範囲を 越えていますので, + これについての説明はおこないません. + + このセクションではリゾルバの + 設定方法について簡単に説明します. + + リゾルバは名前のマッピングを + おこなうシステムコールの集合体です. ただし + どこからマッピング情報を見つけるのかは, + 最初に指示しておく必要があります. これは まず + /etc/host.conf + ファイルを編集することでおこないます. 混乱の元になりますので, + このファイルを /etc/hosts.conf と + 呼んだりしてはいけません (余分な + s がついていますね). + + + <filename>/etc/host.conf</filename> ファイルの編集 + + このファイルには 以下の 2 行が (この順番で) + 書かれているはずです: + + +hosts +bind + + これは, 最初に /etc/hosts + ファイルを調べ, そこで目的の名前が 見つけられなかった場合に + DNS を引きにいくようリゾルバに指示します. + + + + /etc/hosts(5) ファイルの編集 + + + このファイルはローカルネットワーク上に存在するマシンの + IP アドレスと ホスト名を含んでいるはずです. 最低でも ppp + を動作させるマシンのエントリが 含まれている必要があります. + そのマシンのホスト名が foo.bar.com で, IP アドレスが + 10.0.0.1 であると仮定すると, + /etc/hosts は + 以下の行を含んでいなければいけません: + + +127.0.0.1 localhost +10.0.0.1 foo.bar.com foo + + 一つめの行は localhost + を現在のマシンの別名として定義しています. マシン固有の IP + アドレスが何であっても, この行の IP アドレスは 常に 127.0.0.1 でなければいけません. + 二つめの行はホスト名 foo.bar.com (と, その省略形 + foo) を IP アドレス 10.0.0.1 にマップします. + + もしプロバイダから固定の IP + アドレスとホスト名を割り当てられて いるのであれば, それを + 10.0.0.1 + エントリのかわりに使ってください. + + + + <filename>/etc/resolv.conf</filename> ファイルの編集 + + /etc/resolv.conf + はリゾルバの振舞いを指定します. もし自前の DNS + サーバを走らせているのなら, このファイルは空のままに + しておくこともできます. 通常は, + 以下のように書いておく必要があるでしょう: + + +nameserver x.x.x.x +nameserver y.y.y.y +domain bar.com + + x.x.x.x + と y.y.y.y + はプロバイダから指示されたアドレスで, + 接続するプロバイダが提供しているネームサーバを + すべて書いてください. domain + に指定するのは このマシンのデフォルトのドメイン名で, + おそらく 書かなくても問題は無いでしょう. + このファイルの各エントリの詳細については, + resolv.conf + のマニュアルページを参照してください. + + バージョン 2 以降の ppp を使用している場合には, + enable dns + コマンドを使用してネームサーバのアドレスを + プロバイダに問い合わせるように指示することができます. + 上の指定とは異なるアドレスをプロバイダが指定してきた場合 + (または /etc/resolv.conf + でネームサーバが指定されていない場合), ppp + はプロバイダが指定したアドレスで + resolv.conf を書きかえます. + + + + + <command>ppp</command> の設定 + + ユーザ ppp と pppd (カーネルレベルの + PPP 実装) は どちらも /etc/ppp + ディレクトリに置かれた設定ファイルを使います. + ここには設定ファイルのサンプルが用意されていて, ユーザ ppp + の設定を おこなう際に大変参考になりますので, + 削除したりしないでください. + + ppp の設定をするためには, + 必要に応じていくつかのファイルを編集する必要が あります. + 書き込む内容は, プロバイダが静的に IP アドレスを割り当てる + (つまり, 固定の IP アドレスを一つ与えられて, 常にそれを使う) + か, または動的に IP アドレスを割り当てる (つまり, PPP + セッションごとに IP アドレスが変化する可能性がある) + かということに ある程度依存します. + + + 静的 IP アドレスによる PPP 接続 + + まず /etc/ppp/ppp.conf + という設定ファイルを作成する必要があります. + これは以下の例とほとんど同じようなものになるでしょう. + + + : で終る行は 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\\T TIMEOUT 40 CONNECT" +5 provider: +6 set phone "(0123) 456 7890" +7 set login "TIMEOUT 10 \"\" \"\" gin:-BREAK-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 は + &man.chat.8; 言語に似た, 受信待ち文字列と + 送信文字列の対からなるスクリプトを使用します. + この言語の機能に関しては, + マニュアルページを参照してください. + + + + Line 5: + + 接続するプロバイダの名前 “provider” を + エントリ名として指定します. + + + + Line 6: + + このプロバイダの電話番号を指定します. + 複数の電話番号を : や + | で区切って指定することができます. + これら区切り文字の違いについては, ppp + のマニュアルページに 詳しく書かれています. + 要約すると, 毎回違う番号に かけたいのであれば + : を使います. 常に + まず先頭の番号にかけてみて, つながらない時にだけ 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 を + + モードで動作させることはできません. + + + + Line 10: + + プロバイダのゲートウェイへの経路を + デフォルトルートとして 追加します. 特殊文字列 + HISADDR は, 9 行目で指定された + ゲートウェイのアドレスで置きかえられます. + HISADDR は 9 + 行目までは初期化されていませんので, + その行よりも後でしか使えないことに + 注意してください. + + + + Line 11: + + ネームサーバのアドレスが正しいか + どうかを確認するため, + プロバイダに問い合わせをおこなうよう ppp に指示します. + プロバイダがこの機能をサポートしていれば, ppp は + /etc/resolv.conf + のネームサーバエントリを + 正しいアドレスに更新することができます. + + + + + 静的な IP アドレスを持っていて, + 接続が完了する前にルーティングテーブルの + エントリが正しく設定されているのであれば, + ppp.linkup に + エントリを追加する必要はありません. しかし, + この場合でもエントリを追加して, 接続が完了した時点で + プログラムを呼び出したいことがあるかもしれません. + これについては後ほど sendmail を例として説明します. + + これらの設定ファイルのサンプルが + /etc/ppp ディレクトリに + 置かれています. + + + + 動的 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 を指定してはいけません. + さもないと, + モードで動作させる際に + 初期経路を設定することができなくなります. + + + + + バージョン 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 + アドレスで置きかえられます. + + + + + 詳細なサンプルについては, + /etc/ppp/ppp.conf.sample ファイル中の + pmdemand エントリと + /etc/ppp/ppp.linkup.sample + を参照してください. + + バージョン 2 の ppp から “sticky routes” + が導入されました. MYADDR や + HISADDR を含む add + コマンドと delete コマンドを記憶して, + MYADDRHISADDR の + アドレスが変化した際には経路の再設定をおこないます. + したがって, これらのコマンドを + ppp.linkup に + 繰り返し記述する必要は無くなりました. + + + + かかってきた電話を <command>ppp</command> + で受けるには + + このセクションでは ppp + をサーバとして設定する方法について説明します. + + かかってきた電話を ppp + が受けるように設定する際に, そのマシンが LAN + に接続されているのであれば, パケットを LAN + に転送するかどうかを決定する必要があります. + 転送をおこなう場合には, その LAN のサブネットから IP + アドレスを ppp クライアントに割り当て, + 以下のコマンドを指定するのが良いでしょう. + + +enable proxy + + また, /etc/rc.conf + に以下のオプションが指定してあることを + 確認しておいてください. (以前のバージョンの FreeBSD では, + このファイルは /etc/sysconfig + と呼ばれていました): + + + +gateway_enable=YES + + + どの getty を使いますか? + + getty + でダイアルアップサービスをおこなう場合の優れた解説が FreeBSD + でダイアルアップサービスをおこなうための設定 + にあります. + + getty に代わるものとしては, + mgetty があります. これは + getty をより柔軟にしたもので, + ダイアルアップ回線での使用を意図して + 設計されています. + + mgetty を使う場合の利点は, + mgetty + が積極的にモデムと通信する + ということです. つまり, もし + /etc/ttys でポートを閉じている場合, + モデムは電話をとらなくなります. + + 最近のバージョンの mgetty (0.99beta + 以降) では, PPP ストリームの + 自動検出もサポートされています. これにより, + クライアント側で スクリプトを準備しなくてもサーバに + アクセスすることができます. + + mgetty に関する, + より詳細な情報については Mgetty と AutoPPP + を参照してください. + + + + ppp の実行許可 + + ppp は通常, ID 0 のユーザ (root) + として動作しなければいけませんが, 以下で説明するように, + ppp + を通常のユーザとしてサーバモードで実行させたい 場合には, + そのユーザを /etc/group の + network グループに 追加して, ppp + を実行する許可を与えておかなければいけません. + + また, そのユーザが設定ファイル内の目的のエントリに + アクセスできるように, 以下のように + allow + コマンドで許可を与えておく必要があります: + + +allow users fred mary + + このコマンドがデフォルトエントリに + 書かれている場合には, 指定されたユーザは + すべてのエントリをアクセスできるようになります. + + + + 動的 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 + という名前で このスクリプトへのリンクを作成します: + + &prompt.root; 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 + + + + 静的 IP ユーザのための PPP シェルの設定 + + 上記と同じように ppp-shell + ファイルを作成し, 静的な IP + アドレスを割り当てるアカウントそれぞれについて + ppp-shell + へのシンボリックリンクを作成します. + + 例えば, クラス C ネットワークの経路制御を必要とする, + 三人のダイアルアップユーザ fred, + sam, mary + がいるとすると, + 以下のコマンドを実行することになります: + + &prompt.root; ln -s /etc/ppp/ppp-shell /etc/ppp/ppp-fred +&prompt.root; ln -s /etc/ppp/ppp-shell /etc/ppp/ppp-sam +&prompt.root; ln -s /etc/ppp/ppp-shell /etc/ppp/ppp-mary + + これらのユーザのダイアルアップアカウントでは, + 上で作成した それぞれのシンボリックリンクを + ログインシェルとして設定しておきます. (つまり, ユーザ + mary のログインシェルは + /etc/ppp/ppp-mary に + なります). + + + + 動的 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 + + + + 上の例のように段をつける (インデントする) + 必要があることに注意してください. + + + default: + エントリはセッションごとにロードされます. + /etc/ttys + で有効にしてある各ダイアルアップ回線ごとに一つ, 上記の + ttyd0: のようなエントリを作成します. + 各行の相手側アドレスとして, それぞれ別の IP アドレスを + 動的 IP ユーザのための IP + アドレスのプールから割り当てておく必要があります. + + + + 静的 IP ユーザのための <filename>ppp.conf</filename> + の設定 + + 上のサンプルの /etc/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 + + + + <command>mgetty</command>, AutoPPP, + マイクロソフト拡張の詳細 + + + <command>mgetty</command> と 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 + + オプションを (/etc/ppp/ppp.conf に) + 追加しておく必要があるでしょう. + + ユーザに静的な IP アドレスを割り当てる場合には, + そのアドレスを /etc/ppp/ppp.secret + の第三引数として指定することができます. + サンプルについては, + /etc/ppp/ppp.secret.sample + を参照してください. + + + + マイクロソフト拡張 + + クライアントからの要求に応じて, ppp が DNS や + NetBIOS ネームサーバの アドレスを通知するように + 設定をおこなうこともできます. + + これらの拡張機能を + /etc/ppp/ppp.conf + ファイルで有効にした例を 以下に示します. + + バージョン 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 + に書かれているネームサーバのアドレスを使用します. + + + + + + + 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 + + という行を追加しておくのも良いでしょう. + + + + + + + 動作中の ppp の設定変更 + + 適切な診断ポートが設定されている場合には, + バックグラウンドで動作中の ppp + プログラムと通信することができます. + この設定をおこなうためには, + 以下の行を設定ファイルに追加しておきます: + + +set server /var/run/ppp-tun%d DiagnosticPassword 0177 + + これにより, ppp は指定された unix ドメインの + ソケットをモニタして, + クライアントから正しいパスワードを受け取った後に + アクセスを許可します. このソケット名に含まれる + %d は, この ppp が使用している tun + デバイスの デバイス番号で置きかえられます. + + 一旦ソケットの設定が終了したら, スクリプト中で + &man.pppctl.8; を 使用して, 動作中の ppp + を操作することができるでしょう. + + + + + システムの最終設定 + + これで 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= + + + ifconfig_tun0 変数が空で, + /etc/start_if.tun0 という名前の + ファイルが作成されていなければなりません. + このファイルの内容は以下のようになります. + + +ppp -auto mysystem + + このスクリプトはネットワークの設定時に実行され, ppp + デーモンを自動モードで立ち上げます. このマシンがもし LAN + のゲートウェイであれば, + スイッチも使用したいと思うかもしれません. 詳細に関しては, + マニュアルページを参照してください. + + + 以下のようにルータプログラムを NO + に設定します. + + +router_enable=NO (/etc/rc.conf) +router=NO (/etc/sysconfig) + + routed は, ppp + が作成したデフォルトのルーティングテーブル + エントリを削除してしまう場合がありますので, + (初期設定では起動されるようになっている) + routed デーモンが + 起動されないようにしておくことが重要です. + + sendmail_flags 行が + オプションを含まないように 設定しておいた方がよいでしょう. + さもないと, sendmail が + アドレスを調べようとして発信をおこなってしまう場合があります. + 以下のような設定で良いでしょう: + + +sendmail_flags="-bd" + + この結果, PPP リンクを立ち上げた時には + いつでも以下のコマンドを実行して, キューにたまっているメールを + sendmail + に送信させる作業が必要になるでしょう. + + &prompt.root; /usr/sbin/sendmail -q + + ppp.linkup 中で + !bg コマンドを使用することで, + これを自動的に おこなうこともできます: + + +1 provider: +2 delete ALL +3 add 0 0 HISADDR +4 !bg sendmail -bd -q30m + + こうするのが嫌であれば, SMTP + トラフィックをブロックするように “dfilter” + を設定しておくこともできます. + 詳細についてはサンプルファイルを参照してください. + + 後はマシンをリブートするだけです. + + リブートが終ったら, + + &prompt.root; ppp + + コマンドを実行し, 続いて PPP セッションを開始させるために + dial provider と入力することもできますし, + (start_if.tun0 + スクリプトを作成していない場合に), + 外部へのトラフィックが発生した時に, ppp + が自動的に セッションを確立してくれるようにしたいのであれば, + 以下のコマンドを実行することもできます. + + &prompt.root; ppp -auto provider + + + + まとめ + + 要約すると, 初めて ppp を設定する際には, + 以下のステップが不可欠です: + + クライアント側: + + + + カーネルに tun + デバイスが組み込まれていることを確認. + + + + /dev ディレクトリに + tunX + デバイスファイルが 存在することを確認. + + + + /etc/ppp/ppp.conf + にエントリを作成. ほとんどのプロバイダでは, + pmdemand の例で充分でしょう. + + + + 動的 IP アドレスを使用するなら, + /etc/ppp/ppp.linkup に + エントリを作成. + + + + /etc/rc.conf (または + sysconfig) ファイルを更新. + + + + 必要に応じてダイヤル (demand dialing) + したいのであれば, start_if.tun0 + スクリプトを作成. + + + + サーバ側: + + + + カーネルに tun + デバイスが組み込まれていることを確認. + + + + /dev ディレクトリに + tunX + デバイスファイルが 存在することを確認. + + + + (&man.vipw.8; コマンドを使って) + /etc/passwd にエントリを作成. + + + + このユーザのホームディレクトリに ppp -direct + direct-server + か何かを実行するプロファイルを作成. + + + + /etc/ppp/ppp.conf + にエントリを作成. direct-server + の例で充分でしょう. + + + + /etc/ppp/ppp.linkup + にエントリを作成. + + + + /etc/rc.conf (または sysconfig) ファイルを更新. + + + + + + + 謝辞 + + ハンドブックの このセクションは, 1998 年 8 月 10 日 (月) + に &a.brian; によって 更新されました. + + 以下の人々による情報提供, 批評そして提案に感謝します: + + &a.nik; + + &a.dirkvangulik; + + &a.pjc; + +
+ + + カーネル PPP の設定 + + 原作: &a.gena;. + + 訳: &a.jp.graphite;. + 6 September 1996. + + PPP の設定を始める前に, pppd が + /usr/sbin にあり, また + /etc/ppp という + ディレクトリが存在することを確認してください. + + pppd はふたつのモードで動作します. + + + + “クライアント”モード. + シリアル接続やモデムを利用して, そのマシンを + 外部のネットワークに PPP 接続したい場合に用います. + + + + “サーバ”モード. + そのマシンがネットワーク上にあるときに, PPP を使って + ほかのコンピュータを接続する際に用います. + + + + どちらの場合でも, オプションファイルを設定する必要があります + (/etc/ppp/options または, そのマシン上で + PPP を使用する人が 複数いる場合には + ~/.ppprc). + + また, ダイヤルとリモートホストへの接続をおこなうために, + シリアル接続やモデムを 操作する, + なんらかのソフトウェアが必要です (kermit + が適しているでしょう). + + + 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 + + 接続方法: + + + + kermit (またはその他のモデム操作プログラム) + を使ってリモートホストに ダイヤルし, 接続してください. + そして, あなたのユーザ名とパスワード (必要 であれば, + その他にもリモートホストで PPP を有効にするための操作) + を入力 します. + + + + kermit を抜けてください. (回線を切断せずに) + + + + 下記のように入力します: + + &prompt.root; /usr/src/usr.sbin/pppd.new/pppd /dev/tty01 19200 + + (通信速度とデバイス名には, + あなたの環境に適したものを入れてください) + + + + これでこのコンピュータは PPP で接続されました. もし, + なんらかの理由で 接続に失敗したならば, + /etc/ppp/options ファイルに + オプションを追加して, + 問題点を突き止めるために, コンソールに表示される + メッセージを調べてください. + + 下記の /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 を使う方法です. + + 原作: &a.rhuff;. + + 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 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 <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: + + (実際には一行になります.) + + +ABORT BUSY ABORT 'NO CARRIER' "" AT OK ATDT<phone.number> + CONNECT "" TIMEOUT 10 ogin:-\\r-ogin: <login-id> + TIMEOUT 5 sword: <password> + + 正しくインストールし編集した後は, + 必要な事はこれだけです + + &prompt.root; pppd + + このサンプルは主に Trev Roydhouse + <Trev.Roydhouse@f401.n711.z3.fidonet.org> + から寄せられた情報に基づいており, + 承諾を得て使用しています. + + + + 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 mode +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: + + + + + SLIPクライアントのセットアップ + + 原作: &a.asami;8 Aug 1995. + + 訳: &a.hanai;8 August 1996. + + ここには FreeBSD + マシンを静的アドレスのネットワークにつなげる場合の + SLIPのセットアップの一つの方法を書いてあります. + ホスト名を動的に割り当てる(つまり, + ダイヤルアップするたびにアドレスが かわる)ためには, + おそらくもっと凝ったことが必要です. + + まず, + モデムがどのシリアルポートにつながっているか決めましょう. 私は + /dev/cuaa1 から + /dev/modemへというシンボリックリンクを張り, + コンフィグレーションではその名前だけを使っています. + /etc.kermrc + など, システム全体に散らばっているファイルを修正する + 必要がでるとまったく煩わしいのです! + + + ここで, /dev/cuaa0は + COM1であり, + cuaa1COM2です. + + + カーネルのコンフィグレーションファイルに + + +pseudo-device sl 1 + + という記述があるのを確認してください. + これは GENERIC カーネルに含まれている + ので削除していない限り大丈夫でしょう. + + + 最初の設定 + + + + /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 + + 余談ですが, + silviaというのは私が日本にいた時に持っていた + 車の名前です(米国では2?0SXと呼ばれています). + + + + /etc/host.conf ファイル中で + + よりも前にあること を確認してください. + さもないとヘンなことが起こるかもしれません. + + + + /etc/rc.conf + ファイルを編集してください. なお, お使いの FreeBSD が + 2.2.2 よりも前のバージョンのものの場合は, + /etc/sysconfig + を編集してください. + + + + + + +hostname=myname.my.domain + + を編集してホスト名をセットしてください. + 完全なInternetホスト名を与えるべきです. + + + + + + +network_interfaces="lo0" + + + + +network_interfaces="lo0 sl0" + + へ変更することにより + ネットワークインタフェースのリストに sl0 + を加えてください. + + + + + + +ifconfig_sl0="inet ${hostname} slip-gateway netmask 0xffffff00 up" + + を加えて sl0 + のスタートアップフラグをセットしてください. + + + + + + +defaultrouter=NO + + + + +defaultrouter=slip-gateway + + へ変更してデフォルトのルータを + 指定してください. + + + + + + 次の + + +domain HIP.Berkeley.EDU +nameserver 128.32.136.9 +nameserver 128.32.136.12 + + という内容を含むファイル + /etc/resolv.conf を作ってください. + 見ればわかるように, + これらはネームサーバホストを設定しています. もちろん, + 実際のドメイン名やアドレスは + あなたの環境に依存します. + + + + root と toor + (及びパスワードを持っていない他のアカウントすべて) + のパスワード を設定してください. + passwdコマンドを使いましょう. + /etc/passwd や + /etc/master.passwd + といったファイルを編集してはいけません! + + + + マシンを再起動して正しいホスト名で + 立ち上がることを確認してください. + + + + + + SLIP接続をおこなう + + + + モデムを起動, つながったらプロンプトで + 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とタイプするだけです. + + + ファイルシステムのどんなところにもプレインテキスト + にパスワードを書いておくのは一般的にはよくありません. + 覚悟の上で やってください. + 私は単に不精なだけです. + + + + + ここでkermitから抜け出し + (zでkermitをサスペンドできます), root + で + + &prompt.root; slattach -h -c -s 115200 /dev/modem + + と入力しましょう. もしルータの向う側のホストへ + ping できるなら接続成功です! もしうまく + いかなければslattachへの引数として + の代わりにとやってみてください. + + + + + + 接続の切り方 + + slattachを殺すためにrootで + + &prompt.root; kill -INT `cat /var/run/slattach.modem.pid` + + とタイプしてください. そして kermit に戻り + (もしkermitをサスペンドしていたなら + fg), kermitから抜けてください + (q). + + slattachのマニュアルページにはインタフェースを落すために + ifconfig sl0 + downをしなければいけないと書いていますが, + 私には差がないように見えます. (ifconfig + sl0とやっても同じ結果が得られる.) + + 時にはモデムがキャリアを落すのを + 拒絶するかもしれません(私のは よくそうなります). + その時は単にkermitをスタートしてまた終了 してください. + 普通は2回目で落ちます. + + + + トラブルシューティング + + もし動かなければ自由に私に質問してください. + 今までいろんな人がつまずいた のは次のようなことです. + + + + slattach で + を使わなかった(私はなぜこれが致命的になり得るのか + わかりませんが, このフラグを付けることで少なくとも一人の + 問題は解決しました.) + + + + の代わりに + を使った(いくつかのフォントでは見分けるのは難しい + かもしれません). + + + + インタフェースの状態を見るために ifconfig + sl0 をやってみてください. 私は, + + &prompt.root; ifconfig sl0 +sl0: flags=10<POINTOPOINT> + inet 136.152.64.181 --> 136.152.64.1 netmask ffffff00 + + となります. + + + + また, pingが "no route to host" + というメッセージを返す時には netstat + -rでルーティングテーブルを確認しましょう. + 私のは, + + &prompt.root; 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) + + となります. + (これはたくさんのファイルを転送した後でのもので, + あなたの見る数字はもっと小さいかも + しれません). + + + + + + + SLIPサーバのセットアップ方法 + + 原作: &a.ghelmer;. + v1.0, 15 May 1995. + + 訳: &a.jp.ts;. + 6 September 1996. + + この文書の目的は, SLIPサーバ機能を + FreeBSDシステムのもとで設定するため の助言を提供することです. + SLIPサーバ機能を設定するということは, リモー トの + SLIPクライアントがログインできるようにするために, 自動的に接続処 + 理をおこなうようにすることです. + この文書は著者の経験に基づいておりますが, + 実際のシステム構成や要望は異なりますから, + すべての疑問にこの文書が答え ることはできません. なお, + ここでの助言を試みた結果, あなたのシステムへ + の悪影響やデータの損失が生じたとしても, + 著者が責任を持つことはできませ + んのでご了解をお願いします. + + 当初この文書は, FreeBSD 1.xシステムでの + SLIPサーバ機能のために書きまし た. その後, FreeBSD + 2.xの初期バージョンでのパス名の変更や SLIPインタフェー + ス向け圧縮フラグの削除といった変更点を反映するために, + 書き換えをおこないま した. これらが + FreeBSDのバージョン間の主要な変更点だったからです. もし + この文書の間違いを見つけられましたら, ぜひ, + 訂正に十分な情報とともに電 + 子メールでお知らせいただければ助かります. + + + 前提 + + この文書の内容はテクニカルなものなので, + 前提知識が必要です. すなわち, + 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 + やそれに類似した名前の文書をお読みください. 関連す + るマニュアルページとしては, + シリアルポート向けデバイスドライバについて + の &man.sio.4; をはじめ, モデムからのログインを + 受理できるようにシステ + ムを設定するための &man.ttys.5;, &man.gettytab.5;, &man.getty.8;, + &man.init.8; など, さらには, シリアルポート関連パラメタ ( たと + えば直接接続シリアルインタフェースの + clocal ) についての + &man.stty.1; なども助けになるかもしれません. + + + + 概要 + + 一般的な設定内容で FreeBSDを SLIPサーバとして利用すると, + その動作は次 のようになります. まず, SLIPユーザが FreeBSD + による SLIPサーバへ電話し て, SLIP専用IDでログインします. + なお, このIDを持ったユーザはシェルとし て + /usr/sbin/sliplogin を使います. この + sliplogin は, ファ イル + /etc/sliphome/slip.hosts の中から, + ログインIDと一致する 記述行を探します. もし一致する行があれば, + ログインしたシリアル回線を, 利用可能な + SLIPインタフェースへ接続し, その後にシェルスクリプト + /etc/sliphome/slip.login で + SLIPインタフェースを設定します. + + + 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 へ記録します + ( &man.syslogd.8; や + &man.syslog.conf.5; のマニュアルページを参照のうえ, さらに + /etc/syslog.conf を調べて + syslogd がどのファイルへ記 + 録するかを確認のこと) . + + 例はこのくらいにして, + さっそくシステムのセットアップを始めてみましょう. + + + + + カーネルのコンフィグレーション + + FreeBSD のデフォルトのカーネルには, 通常, 二つの + SLIPインタフェースが 準備されています + (sl0sl1) + . これらのインタフェー + スが使用中のカーネルに準備されているかどうかを調べるには, + 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 の出力に + sl0sl1 + のインタフェー スが含まれているということから, + カーネルには二つの SLIPインタフェー + スが組み込まれているということを示しています. + (sl0sl1 + に付いたアスタリスクは, 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 変数を + としてください. もし古いシステ ムで + /etc/sysconfig ファイルすらないときには, + 次のコマン ドを /etc/rc.local + へ追加してください. + + +sysctl -w net.inet.ip.forwarding = 1 + + この新しい設定を有効とするには, + リブートする必要があります. + + デフォルトのカーネルコンフィグレーションファイル + (/sys/i386/conf/GENERIC) の最後の部分に, + 次のような行がありま す. + + +pseudo-device sl 2 + + この行によって, 使用可能な SLIPデバイスの総数が決まります. + すなわち, 行 末の数値が, 同時に動作可能な + SLIP接続の最大数となります. + + カーネルの再構築については, FreeBSDカー + ネルのコンフィグレーション を参照ください. + + + + Sliploginのコンフィグレーション + + すでにご説明したように, + /usr/sbin/sliplogin のコンフィグレー + ションのために, + 3種類のファイルが/etc/sliphome + ディレクトリに あります (sliplogin + についての実際のマニュアルページとしては + &man.sliplogin.8; を参照のこと) . + ファイル slip.hosts は + SLIPユーザおよびその IPアドレスを決めます. 通常, ファイル + slip.login は, + SLIPインタフェースを設定することだけに使 + 用します. slip.logout + はオプションのファイルで, + slip.login で設定した内容を, + シリアル接続が終了した時点で解除 + するときに使用します. + + + <filename>slip.hosts</filename> + のコンフィグレーション + + /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 + + それぞれの行の最後には, + 次に示すオプションを一つ以上指定できます. + + + + — ヘッダを圧縮しない + + + + — ヘッダを圧縮する + + + + — + リモートの設定に応じて, ヘッダを圧縮する + + + + — + ICMPパケットを禁止する + (“ping”パケットは送出されず, + バンド幅を占有しない) + + + + なお, FreeBSDバージョン2の初期リリースの + sliplogin は, 旧 FreeBSD + 1.xでは有効であった上記のオプションを無視していましたので, + , , + , そして + などのオ プションは 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サーバのサブネットの範囲から + 選んで割り当てるとともに, + &man.arp.8; コマンドを使うために + /etc/sliphome/slip.login + と/etc/sliphome/slip.logout + のスクリプトを修正して, SLIPサー + バにおける ARPテーブル内のプロキシ ARPエントリへ + 反映させる必要がありま + す. + + + + <filename>slip.login</filename> + のコンフィグレーション + + ファイル /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 であると + 読みます. なお &man.arp.8; における MAC + アドレスの指定に際しては, + コマンド netstat -i が付けた + Ethernet MACアドレスのピリオド記 + 号をコロン記号と置き換え, かつ単一桁の 16 + 進数にはゼロを先頭に加える必 + 要があります. この指定についての正確な情報は &man.arp.8; + を参照く + ださい. + + + /etc/sliphome/slip.login と + /etc/sliphome/slip.logout + を作成したならば, ファイル属性の“実行”ビット + (すなわち chmod 755 /etc/sliphome/slip.login + /etc/sliphome/slip.logout) を + 設定しなければなりません. さもなければ + sliplogin が + うまく実行されません. + + + + + <filename>slip.logout</filename> + のコンフィグレーション + + ファイル /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 ) + . + + + + + ルーティングについての考慮点 + + “プロキシ ARP”方式を利用せずに + SLIPクライアントとその他のネットワーク (Internetも含む) + の構成要素との間でパケットをルーティングするときには, + SLIPサーバ経由で + SLIPクライアントが属するサブネットまでの経路を, 最も + 近いデフォルトのルータ群へ静的な経路情報として + 追加しなければならないか, または gated を + FreeBSDによる SLIPサーバへインストールして, SLIP + サブネットについての経路情報を, + 適当なルーティングプロトコルでルー + タ群へ通知できるように設定するか, + のどちらかをおこなわなければなりません. + + + 静的な経路 + + 静的な経路を最も近いデフォルトの + ルータ群へ追加することが困難なことがあ ります + (経路情報を追加できる権限がなければそもそも不可能となる). + もし あなたの組織に複数のルータで構成された + ネットワークがあるならば, ある種 のルータ (たとえば Ciscoや + Proteonなど) は, 静的な経路を SLIPサブネッ + トへ使うようにルータを設定しなければならないだけでなく, + その静的経路を 他のどのルータへ知らせるのかもあらかじめ + 指定しておく必要がありますから, + 静的経路に基づくルーティングを軌道に乗せるには + それなりの専門的技術やト + ラブルシューティングやコツが必要だと思います. + + + + <command>gated</command>の稼働 + + 静的経路についての頭痛への代替手段は, + gated を FreeBSDによる SLIPサー + バへインストールして, 適切なルーティングプロトコル + (RIP/OSPF/BGP/EGP) を使って + SLIPサブネットについての経路情報を他のルータへ知らせるように + 設定することです. ports + コレクションから gated + を用いることもできますし, + the 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 + のマニュアルページを参照してください. + + + + + 謝辞 + + このチュートリアルについての + コメントやアドバイスを寄せてくれた次の方々 + に感謝します. + + + &a.wilko; + + + + + + Piero Serini + + Piero@Strider.Inet.IT + + + + + +
+ + diff --git a/ja_JP.eucJP/books/handbook/printing/chapter.sgml b/ja_JP.eucJP/books/handbook/printing/chapter.sgml new file mode 100644 index 0000000000..791d4d4e90 --- /dev/null +++ b/ja_JP.eucJP/books/handbook/printing/chapter.sgml @@ -0,0 +1,5407 @@ + + + + プリンタの利用 + + 著者 &a.kelly; + 30 September 1995 + + 訳者 &a.jp.kimura;. + 3 September 1996 + + FreeBSD でプリンタを使用するためには, バークレイラインプリンタ + スプーリングシステム (LPDスプーリングシステムとしても知られて + います) が機能するようにプリンタをセットアップする必要がありま す. + 本節では, LPDスプーリングシステム (大抵の場合, 単にLPDと呼 ばれる) + について紹介します. + + もし, LPDや他のプリンタスプーリングシステムについて既に詳しい + 知識をお持ちの方は, 「 + スプーリングシステムのセットアップ」から読み始めて + も結構です. + + + スプーラは何をするか + + LPDはあるホストのプリンタに関する制御の一切をおこないます. + こ こで言う制御としては, 次のことが挙げられます. + + + + ホストに接続されたプリンタ, あるいはネットワーク + 上の他ホストに接続されたプリンタに対するアクセスを制御しま + す. + + + + ファイルをプリントする要求に対して許可を与えます. + この要求は特に ジョブ + と呼ばれています. + + + + 各々のプリンタの キュー + を管理することにより, + 複数のユーザがあるプリンタに対して同時にアクセスすることを + 防ぎます. + + + + ヘッダページ + (バナー または + バースト ページとしても知られています) + をプリントすることができます. これにより, + プリントアウトの山の中から自分がプリントしたジョ + ブを見つけ易くなります. + + + + シリアルポートに接続したプリンタ用に通信パラ + メータを管理します. + + + + ネットワーク経由で他のホスト上の, 別のLPDスプーラにジョ + ブを送ることができます. + + + + 様々なプリンタ言語やプリンタの能力に応じてジョブの + 形式を整えるため, + 特別なフィルタを起動することができます. + + + + プリンタの使用に対して + 課金をおこなうことができます. + + + + 設定ファイルを通して, また, 特別なフィルタプログラムを供給 + することにより, 多種多様なプリンタ機器に対して, 上述の機能の + 全部または一部をLPDシステムにおこなわせることができます. + + + + どうしてスプーラを使うべきなのか + + あなたのシステムを利用するのがあなた一人だけだとしたら, ア + クセス制御もヘッダページも + プリンタ利用に対する課金も必要ないのに, + なぜわざわざスプーラに煩わされなければならないのか疑問に思うか + もしれません. + プリンタに対する直接アクセスを許可することもできるので すが, + とにかくスプーラを使用するべきです. その理由は, + + + + LPDはジョブをバックグラウンドで処理します. データが + プリンタに送信されるまで待つ必要はありません. + + + + LPDではジョブをフィルタを通してプリントすることが簡 + 単にできます. これにより, 印刷物のヘッダに時刻や日付を入れ + たり, 特別なファイル形式 (TeX の DVI ファイルなど) をプリン + タが処理できる形式に変更することができます. これらの作業を + 手動でおこなう必要がなくなります. + + + + プリント処理をおこなうフリーのまたは商用のプログラムの + ほとんどは, システムのスプーラとやりとりするように作られて + います. スプーリングシステムをセットアップすることで, 今後 + 加えるかもしれない, あるいは, 既に持っている別のソフトウエ + アをより簡単にサポートすることができるでしょう. + + + + + + スプーリングシステムのセットアップ + + LPDスプーリングシステムを用いてプリンタを使用するためには, + プリンタ機器とLPD用ソフトウェアの両方を準備する必要があります. + 本ドキュメントでは次の2段階のレベルに分けて説明をします. + + + + プリンタを接続する方法, プリンタにどの + ように通信するかをLPDに指示する方法や, プレインテキスト + をプリンタで印字する方法については, 「 + プリンタの簡単な設定」をご覧ください. + + + + 様々な形式のファイルを印字する方法, ヘッダページを + 印字する方法, ネットワーク経由でプリンタに印字する方法, + プリンタを制御する方法, プリンタの使用に対する課金をおこなう + 方法については「 + プリンタ設定上級編」をご覧ください. + + + + + + プリンタ設定導入編 + + この節では, プリンタ機器やプリンタを使用するためのLPD用ソフ + トウェアを設定する方法について述べます. この節の概要は次の通り + です. + + + + + プリンタ機器の設定」では, + プリンタをコンピュータに接 + 続するためのヒントがいくつか書かれています. + + + + + ソフトウェアの設定」では, LPDのスプーラ設定ファイル + /etc/printcap + の設定方法について書かれています. + + + + データをプリンタに送るためにシリアルまたは + パラレルインタフェー スではなく, + ネットワークプロトコルを使用する場合は, 「 + ネットワークにおけるデータストリームの + インタフェースを持つプリンタ」をご覧くださ い. + + この節のタイトルは“プリンタ設定導入編”ですが, + 実際の設定は かなり複雑です. プリンタをコンピュータに接続し, + LPDスプーラを 起動させることは一番困難な作業です. + ヘッダページを出力させたり, 課金したりするオプションの設定は, + 一度プリンタがうまく動くよう になれば, とても簡単です. + + + プリンタ機器の設定 + + この節では, プリンタにPCを接続するための様々な方法について + 説明しています. ここでは, ポートやケーブルの種類, FreeBSDが + プリンタとの通信に必要なカーネルコンフィグレーションについて + も言及しています. + + もし, プリンタが既に接続されていて, + 他のオペレーティングシステ + ム上でプリンタからの印字に成功している場合は, 「 + ソフトウェアの設定」まで読み飛 + ばすことが多分できるでしょう. + + + ポートとケーブル + + 最近のPC用のプリンタほとんどには次のインタフェースの一つ + もしくは両方がついています. + + + + シリアルインタフェースでは, + プリンタにデータを + 送信するためにコンピュータにあるシリアルポートが使用され + ます. シリアルインタフェースはコンピュータ業界で共通し + て使用されています. そのケーブルは容易に手に入り, また, + 簡単に自作することもできます. + シリアルインタフェースには, + 特別なケーブルが必要なことがときどきあり, また, 何か複 + 雑な通信方式選択の設定が必要になることがあります. + + + + パラレルインタフェースでは, + プリンタにデータを + 送信するためにコンピュータにあるパラレルポートを使用しま + す. パラレルインタフェースはPC業界では共通して使われてい + ます. ケーブルの入手は容易ですが, 自作するのはシリアルよ + りも難しいです. パラレルインタフェースには通常, + 通信方式の選 択はなく, このため, + 設定が極めて単純になっています. + + パラレルインタフェースは + “セントロニクス”インタフェー + スとして知られています. これは, プリンタ用のコネクタタ + イプとして採用された後に名付けられました. + + + + シリアルインタフェースはパラレルインタフェースより + も普通はデータの伝送速度が遅くなります. + パラレルインタフェースで は, 通常, + (コンピュータからプリンタへの) 単方向通信のみをおこな + うのに対して, + シリアルインタフェースは双方向通信をおこないます. + 最近のパラレルポートの多くはプリンタ側からデータを受けとる + こともできますが, コンピュータ側にデータを送り返すことが必 + 要となるプリンタはほとんどありません. さらに, FreeBSDでは + 双方向のパラレル通信をまだサポートしていません. + + 通常, プリンタで双方向通信が必要となるのは, プリンタが + PostScript 言語に対応しているときだけです. PostScript プリ + ンタは非常に冗長に動作させることができます. 事実, PostScript + によるジョブでは, プログラムを本当にプリンタ に送信します. + このことは, 印字作業を必ずしもする必要がない ことを意味し, + また, プログラムの結果をコンピュータに直接返 + されるかもしれません. PostScript プリンタでは, 双方向 + 通信を使って, PostScript プログラムのエ + ラーや紙づまりといった問題をコンピュータに報告します. ユー + ザはそれらの情報を知りたいと思うかもしれません. さらに, + PostScript プリンタで課金作業をもっとも効率よくおこなうため + には双方向通信が必要となります. この方法では, まず, プ + リンタの現在のページカウント (起動してから今まで何枚の紙を + 印字したか) の情報を得ます. 次に, ユーザのジョブをおこない, + 終 了後, 再びページカウントを得ます. この2数を差によって, 課 + 金対象となる紙の枚数を知ることができます. + + それでは, + どちらのインタフェースを使うべきなのでしょうか. + + + + 双方向通信が必要なら, シリアルポートを使ってくださ + い. + FreeBSDではパラレルポート上での双方向通信はまだサポー + トされていません. + + + + 双方向通信の必要がなく, パラレルかシリアルかの選 + 択ができる場合はパラレルインタフェースを使うのが好ましい + です. これにより, シリアルポートを他の周辺機器 (端末やモ + デムのなど) のために残しておくことができます. また, パラ + レルインタフェースの方がほとんどの場合高速であり, 設定も + より簡単になっています. + + + + 結局のところは + 動いてくれるものを使えばよいのです. + + + + + + パラレルポート + + プリンタをパラレルインタフェースを使って接続する場合は, + セントロニクスケーブルでプリンタと + コンピュータをつないでくださ い. 詳しい説明はプリンタ, + コンピュータ, あるいは両方に付属す + る説明書に書かれているはずです. + + その際, + どのパラレルポートを使用したかを覚えておいてください. + FreeBSDでは最初のポートは /dev/lpt0, + 2番目は /dev/lpt1 であ り, + 3番目以降も同様に続きます. + + + + シリアルポート + + シリアルインタフェースを使ってプリンタを使う場合は, 適切 + なシリアルケーブルでプリンタ + とコンピュータを接続してください. 詳しい説明はプリンタ, + コンピュータ, あるいは両方に付属する説 + 明書に書かれているはずです. + + “適切なシリアルケーブル” + がよくわからないときは, 次のどれか + を試してみてください. + + + + モデム用ケーブルでは, + それぞれのピンは他方の + コネクタの対応するピンと線でつながっています. このタイプ + のケーブルは, “DTE-DCE” + 間ケーブルとしても知られています. (訳注: + 日本ではストレートケーブルという名前で売られています) + + + + + ヌルモデム用ケーブルでは, + あるピンは対応するピ ント接続していますが, あるピン + (例えば, データ送信用とデー タ受信用のピン) + が交差して接続したり, いくつかのピンは内部 + で短絡していたりします. このタイプのケーブルは, + “DTE-DTE” 間ケーブルと呼ばれています. + (訳注:日本ではクロスケーブル + という名前で売られています) + + + + A シリアルプリンタ用ケーブルは, + ある特定のプ リンタで必要とされ, + ヌルモデムケーブルと似ていますが, 内 + 部で短絡させる代わりに, ある信号を他方側に送るために使用 + しています. + + + + この他に, + プリンタ用の通信パラメータを設定する必要がありま す. 通常, + プリンタのフロントパネルやDIPスイッチによって制 御します. + コンピュータとプリンタの双方で設定できる最高の通 信速度[bps] + (ビット/秒. + ボーレートと示されているときも ある) + を選んでください. そして, データビット (7または8), パリ ティ + (偶/奇/なし), ストップビット (1または2) を選んでください. + そして, フローコントロールの有無 (制御なし, または + XON/XOFF(“イン・バンド” または + “ソフトウェア”フローコ ントロールとも呼ばれる)) + を選びます. 以下に続くソフトウェア の設定のために, + ここでの設定を覚えておいてください. + + + + + ソフトウェアの設定 + + 本節では FreeBSD の LPD + スプーリングシステムで印字をおこなうために + 必要となるソフトウェアの設定について説明しています. + + 本節の概要は次のようになります. + + + + プリンタで使用するポートのために, 必要があれば, カー + ネルの書き変えをおこないます. 「カーネルの変更」で, + このためにしなくてはなら ないことを説明しています. + + + + パラレルポートを使用している場合は, パラレルポートの + ための通信モードの設定します. 詳細は, 「 + パラレルポートの通信モードを設定する + 」で説明しています. + + + + オペレーティングシステムからプリンタにデータが送ら + れているかをテストします. 「 + プリンタとの通信状況を調べる」で, どのように + テストするかの提案をいくつかおこなっています. + + + + ファイル/etc/printcapを変更し, + LPDの設定を おこないます. 「/etc/printcap + ファイル」で, どのように変更するかを + 説明しています. + + + + + カーネルの変更 + + オペレーティングシステムのカーネルの + コンパイルをおこなうこと によって, + 指定されたのデバイスが機能するようになります. シリ アル, + または, パラレルインタフェースをプリンタで使用する場合, + 必要なデバイスがこの指定の中に含まれていなくてはなりません. + したがって, + 必要なデバイスがカーネルに組み込まれていない場合, 追 + 加のシリアル, または, パラレルポートをサポートするために, + カー ネルの再コンパイルが必要となるかもしれません. + + シリアルポートが現在使用しているカーネルで + サポートされている かどうかを調べるためには, + 次のように入力します. + + &prompt.root; dmesg | grep sioN + + ここで, N + はシリアルポートの番号を示し, この番号は0から 始まります. + 次のような出力があった場合, カーネルはそのポー + トをサポートしています. + + sio2 at 0x3e8-0x3ef irq 5 on isa +sio2: type 16550A + + パラレルポートが現在使用しているカーネルで + サポートされている かどうかを調べるためには, + 次のように入力します. + + &prompt.root; dmesg | grep lptN + + ここで, N + はパラレルポートの番号を示し, この番号は0から 始まります. + 次のような出力があった場合, カーネルはそのポー + トをサポートしています. + + lpt0 at 0x378-0x37f on isa + + 上記の出力が得られない場合, プリンタを使うため, + オペレーティ ングシステムにパラレル, または, + シリアルポートを認識し, 使用 できるようにするためには + カーネルを変更する必要があります. + + シリアルポートをサポートさせるには, 「 + FreeBSDカーネルのコンフィグレーション」の節をご覧く + ださい. パラレルポートをサポートさせる場合も, その節と, + あ わせて, + この節に続く節もご覧ください. + + + ポート用エントリを <filename>/dev</filename> + に追加する + + カーネルがシリアル, または, パラレルポートを通じての通 + 信をサポートしていたとしても, システム上で動いているプログ + ラムがデータの送受信をおこなうための + ソフトウェアインタフェース がさらに必要になります. + そのインタフェースは, /dev + ディレクトリにあるエントリに相当します. + + /dev + エントリにポートを加えるために + + + + &man.su.1; コマンドで root になります. suコマンド + でパスワードを聞かれたら, ルート用のパスワードを入力し + ます. + + + + /dev + ディレクトリに移動します. + + &prompt.root; cd /dev + + + + 次のように入力します. + + &prompt.root; ./MAKEDEV port + + ここで, port は, + 作成するポート名です. 1番目 のパラレルポートのときは + lpt0 に, 2番目のときは + lpt1 になり, 以降同様になります. + 1番目のシリア ルポートのときは, + ttyd0 に, 2番目のときは + ttyd1 になり, + これも以降同様となります. + + + + 次を入力し, デバイスのエントリができたか確認し + ます. + + &prompt.root; ls -l port + + + + + + パラレルポートの通信モードを設定する + + パラレルインタフェースを使用している場合, FreeBSDでは, + 割り込み駆動型にするか, + プリンタとの通信の状況をカーネルに監 + 視させるかのいずれかを選択できます. + + + + GENERIC + カーネルでは割り込み駆動方式が, + デフォルトになっています. この方式では, + オペレーティングシ + ステムはプリンタがデータを受け付けられるかどうかを調べ + るために, IRQ ラインを一つ使用します. + + + + 監視方式では, + オペレーティングシステムにプ + リンタがもっとデータを受け付けられるかどうかを繰り返し + 尋ねるように指示します. そして, 受け付けるという応答を + 受けたとき, + カーネルはさらなるデータを送信します. + + + + 割り込み駆動方式は, いくらか高速になりますが, 貴重な + IRQ ラインを一つ消費します. + うまく機能するものをお使いください. + + 通信モードを設定するためには2つの方法があります. + 1つはカー + ネルを変更することで, もう一つは + &man.lptcontrol.8; プログラムを使用する方法です. + + カーネルを設定することによって, + 通信モードを変更する. + + + + カーネルコンフィグレーションファイルを変更しま す. + lpt0 + のエントリを探すか追加してください. 2番目 + のパラレルポートを設定するときは, 代わりに + lpt1 を使います. 以下, + 3番目のポートは lpt2 となってい + きます. + + + + イベント駆動方式にする場合は, + irq 指 定を追加します. + + +device lpt0 at isa? port? tty irq N vector lptintr + + ここで, N + はパラレルポート用の IRQ 番号で す. + + + + 監視方式を使用する場合は, + irq を追加 してはいけません. + + + +device lpt0 at isa? port? tty vector lptintr + + + + + + ファイルをセーブし, config プログラムを起動 し, + カーネルの構築, インストールをおこないます. そして, リ + ブートしてください. 詳細は, 「 + FreeBSDカーネルのコンフィグレーション」を参照 + してください. + + + + &man.lptcontrol.8; + で通信モードを設定する場合 + + + + lptN + をイベント駆動方式に設定する場合は, + 次のように入力します. + + &prompt.root; lptcontrol -i -u N + + + + lptN + を監視方式に設定する場合は, 次のように入力します. + + + &prompt.root; lptcontrol -p -u N + + + + これらのコマンドを /etc/rc.local + ファイルに追加 + しておくと, システムをブートする度に通信モードを設定する + ことができます. 詳細については, + &man.lptcontrol.8; をご覧ください. + + + + プリンタとの通信状況を調べる + + スプーリングシステムの設定に進む前に, オペレーティング + システムがプリンタにデータを送ることに成功しているかどうか + を確かめるべきでしょう. これにより, 印字がうまくいかないと + き, プリンタとの通信が問題なのか, スプーリングシステムが問 + 題なのかを分けて調べることがかなり容易になります. + + プリンタをテストするためには, + プリンタに何かのテキストを送 + 信してみます. 送信した文字をすぐに印字してくれるプリンタに + は, &man.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 のような言語を仮定しており, Hewlett Packard + の PCL は考慮していません. PCL は非常に機能的なの + ですが, + プレインテキストにエスケープシーケンスを混ぜること + ができます. PostScript ではプレインテキストを直接印字 + することはできません. + このような種類のプリンタ言語に対して は, + 特別な対応をおこなわなければなりません. + + + + パラレルポートのプリンタとの接続を調べる + + この節では, FreeBSDがパラレルポートに接続されたプリ + ンタと通信できているかどうかを調べる方法について説明し + ています. + + + パラレルポートのプリンタをテストするために + + + + + &man.su.1; コマンドで root になります. + + + + プリンタにデータを送ります. + + + + プリンタがプレインテキストを印字できる場合, + &man.lptest.1; コマンドを使います. + 次のように入力してください. + + &prompt.root; lptest > /dev/lptN + + ここで, N + はパラレルポートの番号で, 番号は + 0から始まります. + + + + プリンタが PostScript か他のプリンタ + 言語を使用している場合, そのプリンタに簡単なプロ + グラムを送信してください. 次のように入力します. + + + &prompt.root; cat > /dev/lptN + + そして, 一行一行, + プログラムを慎重に入力して + 下さい. RETUREN または ENTER キーを入力してしま + うと, その行は編集できなくなります. プログラムの + 入力が終わったら, CONTROL+Dか, あなたが設定して + いるファイル終了のキーを押してください. + + もしくは, プログラムを入力したファイルがある + 場合は, 次のように入力してください. + + &prompt.root; cat file > /dev/lptN + + ここで, file + はプログラムが格納されていて, + プリンタに送信するファイルの名前です. + + + + + + これで何かがプリントされることでしょう. + 印字されたテキ + ストがおかしくても心配しなくても構いません. それについ + ては, 後で修正します. + + + + シリアルポートのプリンタとの接続を調べる + + この節では, FreeBSDがシリアルポートに接続されたプリ + ンタと通信できているかどうかを調べる方法について述べられ + ています. + + + シリアルポートのプリンタをテストするために + + + + + + &man.su.1; コマンドで root になります. + + + + /etc/remote + ファイルを編集します. 次の エントリを加えてください. + + + +printer:dv=/dev/port:br#bps-rate:pa=parity + + ここで, port + シリアルポート (ttyd0, + ttyd1 など) のデバイスエントリで, + bps-rateは + プリンタとの通信の転送速度[bit/秒], + parityはプリ + ンタとの通信で必要とされるパリティ + (even, odd, + none, + zeroのいずれか) を表わしていま + す. + + 次の例は, + プリンタをシリアルケーブルでパリティなし, 転送速度 + 19200bpsで第3番目のシリアルポートに接続した場 + 合です. + + +printer:dv=/dev/ttyd2:br#19200:pa=none + + + + &man.tip.1; コマンドでプリンタと接続します. 次のよ + うに入力してください. + + &prompt.root; tip printer + + これがうまくいかなかった場合は, + /etc/remoteを 編集して, + + /dev/ttydN + の代わりに + /dev/cuaaN + を試してみてください. + + + + プリンタにデータを送ります. + + + + プリンタがプレインテキストを印字できる場合, + &man.lptest.1; コマンドを使います. + 次のように入力してください. + + ~$lptest + + + + プリンタが PostScript か他のプリンタ + 言語を使用している場合, そのプリンタに簡単なプロ + グラムを入力します. 一行一行, + プログラムを慎 + 重に入力してください. + バックスペースキーや他の編 集用のキーは, + プリンタの制御コードに割り当てられ + ているかもしれません. プログラムが終了したことを + プリンタに伝えるための特別なファイル終了キーを入 + 力する必要があるかもしれません. PostScript + プリンタの場合, CONTROL+Dを入力します. + + もしくは, プログラムを入力したファイルがある + 場合は, 次のように入力してください. + + ~>file + + ここで, file + はプログラムが格納されている + ファイル名です. + &man.tip.1; コマンドでファイルを送 + 信した後は, ファイル終了を表わすキーを入力する必要 + があります. + + + + + + これで何かがプリントされることでしょう. + 印字されたテキ + ストがおかしくても心配しなくても構いません. それについ + ては, 後で修正します. + + + + + + スプーラに許可を与える: + <filename>/etc/printcap</filename> ファイル + + ここまでで, プリンタはコンピュータに接続され, (必要なら) + プリンタと通信できるようにカーネルを変更し, 簡単なデータをプ + リンタに送信することができているはずです. これで, LPDにプリ + ンタへのアクセスを + 制御させる設定をおこなう準備が整いました. + + LPDの設定は /etc/printcap + を編集することでおこないます. + LPDスプーリングシステムはスプーラが使われる毎にこのファイル + を参照します. そのため, ファイルを更新するとすぐにその変更が + 反映されます. + + &man.printcap.5; ファイルの書式は簡単です. + /etc/printcap + の編集はお好みのテキストエディタをお + 使いください. このファイルの書式は, + /usr/share/misc/termcap や + /etc/remote + といった他のケイパビリティファイルと一致しています. + この書式 + のついての詳細な情報については + &man.cgetent.3; をご覧ください. + + スプーラの単純な設定法は, + 次のステップでおこないます. + + + + プリンタに名前 (と簡単な別名2〜3個) を付け, それを + /etc/printcap ファイルに記述します. + これについ ては, 「 + プリンタに名前を付ける」 + を参照してください. + + + + sh の項目を追加することで, + ヘッダページの出 力を禁止します (デフォルトは許可). + これについては, 「 + ヘッダページの印字を禁止する」 + を参照してください. + + + + スプール用のディレクトリを作成し, その位置を + sd 項目で指定します. これについては, + 「 + スプーリングディレクトリの作成」 + を参照してください. + + + + プリンタを使用するために /dev + エントリを 設定し, /etc/printcap の + lp 項目でそのエ ントリを指定します. + これについては, 「 + プリンタデバイスの特定」 を参照してください. + プリンタをシリアルポートに接続した場合は, + fs, fc, + xs, xc + の項目を設定する必要があります. こちらについては, + 「 + スプーラのための通信パラメータの設定」 + を参照してください. + + + + プレインテキスト用の入力フィルタのインストールを + おこないます. 「 + テキストフィルタのインストール」 + を参照してください. + + + + &man.lpr.1; コマンドで何かを印字することで設定のテス + トをおこないます. + 印字してみよう と + + トラブルシューティング を参照してください. + + + + + PostScript プリンタのような, プリンタ言語を + 使用しているプリンタには, プレインテキストを直接印字させる + ことができません. 上にアウトラインを示し, 以下の節で説明す + る簡単な設定方法の説明では, そのようなプリンタを設置してい + る場合は, プリンタが認識できるファイルだけを印字の対象とし + ているという仮定をしています. + + + 多くの場合, + 利用者はシステムに設置されているプリンタすべてでプ + レインテキストが印字できることを期待しています. 印字作業を + おこなうためにLPDのインタフェースを利用するプログラムでも, + 通 常, そのような仮定を置きます. + プリンタ言語を使用するプリン タを設置しており, + そのプリンタ言語で記述されたジョブと, + これに加えて, + プレインテキストのジョブも印字できるよ うにしたいならば, + 上で示した簡単な設定方法に加えて, さら + なる設定をおこなうことを強くお勧めします. すなわち, + 原始的なプ レインテキストから PostScript (もしくは, + 他のプリンタ 言語) + に変換するプログラムをインストールしてください. 「 + プレインテキストのジョブを PostScript + プリンタで印字する」 + で, そ れをどのようにおこなえばよいのかが + 説明されています. + + + 日本語を印字したい場合は, プリンタ言語を使用し + ていない「日本語プリンタ」についても, + プリンタ固有のエスケー プシーケンスを送る必要があります. + また, 漢字コードをプリン + タが設定しているものに変換したりする必要があり, 各プリンタ + 毎に, 日本語用のフィルタが必要になります. + + + + プリンタに名前を付ける + + 最初の (簡単な) ステップで, プリンタの名前を考えます. + プ リンタには別名をいくつか付けることもできるので, + 機能的な名前 + でも風変わりな名前でもどちらを選んでもまったく + 問題はありません. + + 少なくとも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 が付けられていま す. + + + + ヘッダページの印字を禁止する + + 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 + ひとつ分だけ 字下げします. 最後の行以外のすべての行は, + 行末にバックスラッ シュを記述します. + + + + スプーリングディレクトリの作成 + + スプーラの簡単な設定の次のステップでは, + スプーリン + グディレクトリを作成します. + プリンタに送られるジョブ は, + その印字が終了するまでこのディレクトリに置かれます. また, + 他のたくさんのスプーラもこのディレクトリにファイ + ルを置きます. + + 様々な事情によりスプーリングディレクトリは, 通常, 慣例 + として /var/spool の下に置きます. + また, スプーリングディレクトリの内容はバックアップをす + る必要はありません. + &man.mkdir.1; によってディレクトリを + 作るだけでスプーリングディレクトリの復旧は完了します. + + + スプーリングディレクトリの名前は, これも慣例ですが, 次 + のようにプリンタの名前と同じにします. + + &prompt.root; mkdir /var/spool/printer-name + + しかしながら, ネットワーク上に使用可能なプリンタがたく + さんあるならば, LPDで印字するための専用のディレクトリに + スプーリングディレクトリを置きたいと思うかもしれません. + 例に出てきたプリンタ rattan と + bamboo につい て, この方式を採用すると, + 次のようになります. + + &prompt.root; mkdir /var/spool/lpd +&prompt.root; mkdir /var/spool/lpd/rattan +&prompt.root; mkdir /var/spool/lpd/bamboo + + + 各ユーザが印字するジョブのプライバシを守りた + いと考えているならば, スプーリングディレクトリを保護し + て, これを誰からでもアクセスできないようにしたいと思う + かもしれません. スプーリングディレクトリは, deamon ユー + ザと daemon グループに所有され, 読み込み, 書き込み, 検 + 索可能であり, 他からはアクセスできないようにするべきで + す. 例題のプリンタに対して, 次のようにすることにしましょ + う. + + &prompt.root; chown daemon.daemon /var/spool/lpd/rattan +&prompt.root; chown daemon.daemon /var/spool/lpd/bamboo +&prompt.root; chmod 770 /var/spool/lpd/rattan +&prompt.root; 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 + デフォルト値として使用します. + + + + プリンタデバイスの特定 + + ポート用エントリを /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 には存在していません. + + 設置したプリンタがパラレルポートに + 接続されている場合は, + 「 + テキストフィルタのインストール」 + まで読み飛ばしてください. + そうでない場合は, 次節の説明に続いてください. + + + + スプーラのための通信パラメータの設定 + + シリアルポートにプリンタを接続した場合, プリンタにデー + タを送信するフィルタプログラムに代わり, 通信速度やパリ + ティ, その他のシリアル通信パラメータを設定することがで + きます. このことによる利点は, + + + + /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[bit/秒] + のいずれかです. + + + + + fc#clear-bits + + デバイスをオープンした後で, + sgttyb 構造体の + clear-bits + フラグビットをクリアします. + + + + + fs#set-bits + + sgttyb 構造体の + clear-bits + フラグビットをセッ トします. + + + + + xc#clear-bits + + デバイスをオープンした後で, ローカルモードビット + clear-bits + をクリアします. + + + + + xs#set-bits + + ローカルモードビット + set-bits + をセットします. + + + + + fc, fs, + xc, そして xs + のビットに関 する詳しい情報については, + /usr/include/sys/ioctl_compat.h + を参照してく ださい. + + 項目 lp で指定されたデバイスを LPD + がオープンする とき, LPD は sgttyb + 構造体のフラグビットを読み出 します. そして, 項目 + fc の全ビットをクリアします. 次に, + 項目 fs のビットをセットし, + その結果を設定 します. + ローカルモードビットに関しても同様におこなわれます. + + 例題のプリンタで6番目のシリアルポートに接続されたプリ + ンタの設定を追加してみましょう. 通信速度は38400bpsに設 + 定します. フラグビットとして, TANDEM, ANYP, LITOUT, + FLUSHO, PASS8 をセットします. ローカルモードビットでは, + LITOUT と PASS8 フラグをセットします. + + +bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ + :sh:sd=/var/spool/lpd/bamboo:\ + :lp=/dev/ttyd5:fs#0x82000c1:xs#0x820: + + + + テキストフィルタのインストール + + ここまでで, + プリンタにジョブを送るために使うテキストフィ ルタを 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 + + そして, このファイルを実行可能にします. + + &prompt.root; 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:fs#0x82000e1:xs#0x820:\ + :if=/usr/local/libexec/if-simple: + + + + 印字してみよう + + 簡単な LPD 設定も終わりにたどり着きました. 残念ながら, + 設定はこれでおしまいというわけではありません. なぜなら, + さらに, 設定をテストし, すべての問題点を解決しなくては + ならないからです. 設定をテストするために, 何かを印字し + てみましょう. LPD システムで印字をするためには, + &man.lpr.1; コマンドを使います. このコマンドは, 印字する + ためのジョブを投入する働きをします. + + &man.lpr.1; コマンドを + 「 + プリンタとの通信状況を調べる」で紹介した, + あるテスト用のテキストを生成してくれる + &man.lptest.1; プログラムと一緒に使うこともできます. + + 簡単な LPD + 設定をテストするために: + + 次のように入力してください. + + &prompt.root; lptest 20 5 | lpr -Pprinter-name + + ここで, printer-name + は /etc/printcap + で指定したプリンタ名 (もしくはその別名) です. デフォルト + のプリンタを使用する場合は, + 引数を付けないで + &man.lpr.1; を打ち込んでください. もう一度述べますが, ポス + トスクリプトを期待しているプリンタをテストするならば, + &man.lptest.1; を使う代わりに PostScript で書かれたプ + ログラムをプリンタに送ってください. プログラムを送るた + めには, プログラムをファイルに格納して, lpr + file + と打ち込みます. + + PostScript プリンタの場合, 送信したプログラムによ + る結果が得られるでしょう. + &man.lptest.1; を使った場合は, + 以下のような結果が見られるでしょう. + + +!"#$%&'()*+,-./01234 +"#$%&'()*+,-./012345 +#$%&'()*+,-./0123456 +$%&'()*+,-./01234567 +%&'()*+,-./012345678 + + 更にプリンタをテストしたい場合は, (言語ベースのプリン + タのための) もっと大きなプログラムを送信するか, 引数を + 変えて + &man.lptest.1; を実行します. 例えば, lptest + 80 60 で それぞれ80文字の行を60 + 行生成します. + + プリンタがうまく動かなかった場合は, 次の節, 「 + トラブルシューティング」をご覧ください. + + + + トラブルシューティング + + &man.lptest.1; を使った簡単なテストをおこなった結果, + 正しい出 + 力を得られずに, 以下に示すような出力が得られるかもしれ + ません. + + + しばらくしたら出力される, または, + 紙の全体が出て こない + + プリンタは上で示されたような印字を + おこなったのですが, しばら くして止まってしまい, + 動かなくなってしまいました. 印字 + された結果をプリンタから取り出すためには, + プリンタにある PRINT REMAINING ボタン, また は, FORM + FEED ボタンを押す必要があるようです. + + この場合は, + おそらくジョブはプリントをする前に更にデー + タが送られてこないか待ち続けているのでしょう. + この問題を解決するためには, プリンタに FORM FEED + 文字 (あるいは特定の必要な文字コード) を + 送るテキストフィルタを使ってください. + プリンタ内部に残っ + たデータをプリンタにすぐに印字させるには, 普通は, + これ で十分です. + 次のジョブが前のジョブの最終ページの中央の + どこかから印字を開始させないためにも, + 紙の途中で印字の + ジョブが終了したかどうかを確認するのは有益です. + + シェルスクリプト + /usr/local/libexec/if-simple + を次のように変更して, プリンタへジョブを送信した後に + FROM 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) + をペアで使います. (訳注:Machintosh では CR + のみで表現されています). 大抵のプリンタでは, + 改行を表わすために MS-DOS の慣習にしたが + います. + + FreeBSD で印字する場合, 印字したテキストは LF + 文字だけ が使われていました. プリンタでは LF + 文字を見つけると, 紙を1行分送り出しました. しかし, + 次の文字を印字するた + めの紙の水平方向の位置は維持されました. すなわち, CR + 文字が意味することは, + 次の文字を印字する位置を紙の左端 + に動かすことです. + + FreeBSD + がプリンタに動作をして欲しいと思っている動作を + 以下に示します. + + + + + + プリンタが CR を受け取ったとき + CR 動作 (復帰) をおこなう + + + + プリンタが LF を受け取ったとき + CR + LF 動作 (復帰, 改行) をおこなう + + + + + + このように動作させるための方法が + いくつかあります. + + + + これらの文字の解釈を変えるために, プリンタ + の設定スイッチかコントロールパネルを操作する方 + 法. どのようにして設定をするかはプリンタのマニュ + アルを参照してください. + + + FreeBSD 以外のオペレーティン + グシステムを切り替えて使う場合, CR と LF 文字 + の解釈をそのオペレーティングシステムで使われて + いるようにプリンタを + 再設定する必要がある + かもしれません. 以下に示す解決方法のいずれかを + 選ぶのがよいかもしれませんね. + + + + + 自動的に LF を CR+LF に変換してくれる + FreeBSD 用のシリアルドライバを入手する方法. も + ちろん, このドライバはプリンタ専用に接続される + シリアルポート + のみで動作します. この機能 + を許可するためには, + /etc/printcap ファ + イルで対象プリンタの fs + 項目で CRMOD ビッ トをセットします. + + + + 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. Writes a form feed character +# after printing job. + +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 のフロー制御をサポート + している場合は, 項目 fs で + TANDEM ビット をセットして, FreeBSD + にこの機能を使用させて ください. + + + + プリンタがキャリアフロー制御をサポートして + いる場合は, 項目 fs で MDMBUF + ビットをセッ トして下さい. それから, + プリンタとコンピュータ + を接続しているシリアルケーブルがキャリアフロー + 制御用に正しく配線されたものかどうかを確認して + ください. + + + + プリンタがフロー制御をまったく + サポートしていな い場合は, 項目 + fs の NLDELAY と TBDELAY, + CRDELAY, VTDELAY, BSDELA のいくつかのビッ + トを組み合わせて使い, プリンタへ送るデータの流 + れに適当な遅延を加えてください. + + + + + + + プリンタは意味不明な + 文字列を印字した + + プリンタはランダムなゴミのように + 見えるものを印字しまし たが, + 意図したテキストは印字してくれませんでした. + + この問題は, 通常, + シリアルポートに接続したプリンタでの + 通信パラメータの誤りからくる前項とは別の症状です. + br 項目の通信速度と + fsfc + 項目のパリ ティビットの設定を共に調べてみてください. + また, プリン タでの設定が + /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 を使います. + + + + + + + + + + プリンタを使う + + この節では, FreeBSD で設定したプリンタを使う方法について説明 + します. ここでは, ユーザレベルでのコマンドを概説します. + + + &man.lpr.1; + + 印字をおこないます. + + + + &man.lpq.1; + + プリンタキューを調べます. + + + + &man.lprm.1; + + プリンタキューにあるジョブを削除します. + + + + + 管理者用コマンド &man.lpc.8; もありますが, + これは 「プリンタを管理する」 + に記 + します. このコマンドは, プリンタやそのキューの制御のために用い + られます. + + &man.lpr.1;, &man.lprm.1;, そして &man.lpq.1; の 3 + コマンドは, + オプションをとり, これによって, + /etc/printcap のように操作の対象となる + プリンタやキュー + を指定します. これによって, 様々なプリンタに対してジョブを送る + , 取り消す, 調査することができます. + が使われなかった場 + 合は, これらのコマンドは + PRINTER 環境変数で指定されたプリンタ + を使用します. + そして, PRINTER 環境変数がなかった場合は, これ + らのコマンドはデフォルトのプリンタ + lp を使います. + + 以下では, デフォルトプリンタ + という用語が意味するプリンタ は, PRINTER + 環境変数で指定されたプリンタ, もしくは, PRINTER + 環境変数がない場合は, lp + という名前のプリンタです. + + + 印字する + + ファイルを印字するためには, + 次のように入力してください. + + &prompt.user; lpr filename ... + + これにより, + 入力されたファイルのそれぞれをデフォルトのプリンタ + から印字します. ファイル名が与えられなかった場合, + &man.lpr.1; + は標準入力から印字するデータを読み込みます. 例えば, 次のコマン + ドにより, ある重要なシステムファイルが印字されます. + + &prompt.user; lpr /etc/host.conf /etc/hosts.equiv + + 印字させるプリンタを選択するためには, + 次のように入力します. + + &prompt.user; lpr -P printer-name filename ... + + 次の例では, プリンタ rattan に, + カレントディレクトリにあ + るファイルの詳細なリストを印字しています. + + &prompt.user; ls -l | lpr -P rattan + + 上記の &man.lpr.1; コマンドではファイル名の指定がないので, + lpr は標準入力から印字するデータ, + この場合, ls -l + コマンドの出力, を読み込みます. + + &man.lpr.1; コマンドでは, + 出力の整形を制御したり, ファイル変換を + 適用したり, 複数部数のコピーを作成したり, などといた様々な幅広 + いオプションを受け付けることもできます. + 詳細については, + 「 + その他の印字オプション」をご + 覧ください. + + + + ジョブの処理状況を調べる + + &man.lpr.1; コマンドを使って印字をする場合, プリントしようと + するデータは “プリントジョブ” + と呼ばれる箱に一緒に置かれ, こ + れが LPD スプーリングシステムに送られます. プリンタにはそれぞ + れ, ジョブ用のキューがあり, + 送られてきたジョブはあなたや他のユー + ザからの別のジョブと一緒にそのキューで並んで, + 処理される順番を + 待ちます. + プリンタは到着順にこれらのジョブの印字をおこないます. + + デフォルトプリンタのキューの状態を表示するには, + &man.lpq.1; と入 + 力します. プリンタを指定するときは, + オプションを使い + ます. 例えば, 次のコマンド + + &prompt.user; 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つのファイルを処理します. すなわち, + &man.lpr.1; + のコマンドラインに複数のファイル名が与えられたときは, + 1つのジョブとして扱われるのです. このジョブは, 現在, アクティ + ブジョブ (“Rank” + の欄の active という後に注目) になってい + ます. これは, プリンタからそのジョブが現在印字されているはずで + あることを意味しています. 2番目のジョブでは, + &man.lpr.1; コマン + ドに標準入力からデータが与えられています. + 3番目のジョブはユー + ザ mary から与えられました. + このジョブのサイズはとても大きくなっ + ています. 彼女がプリントしようとしたファイルのパス名はここで表 + 示させるには長すぎるため, + &man.lpq.1; コマンドはドットを3つだけ + 表示しています. + + &man.lpq.1; からの + 出力で一番最初の行もまた有益な情報を与えていま + す. この行から, プリンタが現在何をしているか (あるいは, 少なく + とも LPD がプリンタが + していると思っていること) が分かります. + + &man.lpq.1; コマンドは + オプションもサポートしています. こ + れにより, + 詳しい情報が表示されます. 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 + + + + ジョブの削除 + + 印字するようジョブを + 送った後で印字を中断したくなったときは, + &man.lprm.1; コマンドで, + キューの中からそのジョブを削除することが + できます. 大抵の場合, アクティブジョブでさえも + &man.lprm.1; を使っ + て削除することができますが, + そのジョブの一部またはすべてが印字さ + れてしまうかもしれません. + + デフォルトプリンタへのジョブを削除するためには, 最初に, + &man.lpq.1; を使ってそのジョブ番号を調べます. + すなわち, それから, + 次のように入力して, ジョブを削除します. + + &prompt.user; lprm job-number + + 特定のプリンタへのジョブを削除するときは, + オプション + を使ってそのプリンタを指定します. + 例えば, プリンタ bamboo + のキューからジョブ番号 + 10のジョブを削除するには次のようにします. + + &prompt.user; lprm -P bamboo 10 + + &man.lprm.1; コマンドには略記法がいくつかあります. + + + lprm - + + あなたが (デフォルトプリンタへ) + 送ったジョブをすべて削除し ます. + + + + lprm user + + ユーザ user が + (デフォルトプリンタへ) 送ったジョブ をすべて削除します. + 他のユーザのジョブを削除できるのはスー パユーザだけです. + あなたは, あなた自身のジョブしか削 + 除することはできません. + + + + lprm + + ジョブ番号もユーザ名もシンボル + も指定されない + ときは, &man.lprm.1; は現在のアクティブジョブを, そのジョ + ブを送ったのがあなた自身であるときに限り, デフォルトプ + リンタから削除します. ただし, スーパユーザは任意のア + クティブジョブを削除することができます. + + + + + 上記の略記法をデフォルトプリンタではなく + 特定のプリンタに対して おこなうときは, + オプションでそのプリンタを指定するだけよ いのです. 例えば, + プリンタ rattan のキューへあなたが送っ + たジョブをすべて削除するためには次のようにします. + + &prompt.user; lprm -P rattan - + + + ネットワーク環境で作業をしている場合, あるホストか + ら送られたプリンタジョブは, これを送ったホストで + &man.lprm.1; を + 使った場合に限って, + これを削除することができます. 他のホストで + 同じプリンタを使えたとしても, + このジョブを削除することはできま + せん. + 次の例では, 他ホストからジョブを削除することを試みていま + す. + + &prompt.user; lpr -P rattan myfile +&prompt.user; rlogin orchid +&prompt.user; lpq -P rattan +Rank Owner Job Files Total Size +active seeyan 12 ... 49123 bytes +2nd kelly 13 myfile 12 bytes +&prompt.user; lprm -P rattan 13 +rose: Permission denied +&prompt.user; logout +&prompt.user; lprm -P rattan 13 +dfA013rose dequeued +cfA013rose dequeued + + + + + + その他の印字オプション + + &man.lpr.1; コマンドには, テキストの整形や, + 図や他のファイル形 + 式の変換, 複数部コピーの生成, ジョブの扱いなどをを制御すること + ができます. + この節では, これに関するオプションについて記してい + ます. + + + 整形と変換に関するオプション + + 以下の &man.lpr.1; 用のオプションはジョブにおける + ファイルの + 整形の制御に関するものです. + このオプションは, ジョブにプレイン + テキストが含まれない場合や + &man.pr.1; ユーティリティを使ってプレイ + ンテキストを整形する場合に用いてください. + + 次の例では, プリンタ + bamboo に (TeX 組版システムによる) + DVI ファイル + fish-report.dvi を印字しています. + + &prompt.user; lpr -P bamboo -d fish-report.dvi + + このオプションは, + ジョブに含まれるすべてのファイルに対して適用さ れます. + したがって, 1つのジョブに (例えば) DVI ファイルと ditroff + ファイルを混在させることはできません. その代わりに, + ファイルを 形式毎に別々のジョブに分け, + それぞれのジョブでその形式用の変換 + オプションを使って印字してください. + + + + を除くすべてのオプションを使用 するためには, + 出力先プリンタ用の変換フィルタが必要です. 例えば, + オプションを使用するには, DVI + 用の変換フィルタが必要 です. 詳細については, 「 + 変換フィルタ」で説明しています. + + + + + + cifplot ファイルを印字します. + + + + + + DVI ファイルを印字します. + + + + + + FORTRAN プログラムを印字します. + + + + + + plot のデータを印字します. + + + + + + 出力に対して, number + カラム分の字下げをおこないます. + number が省略されると, + 8カラム分字下げされます. + このオプションはある変換フィルタと一緒の指定されたとき + のみに機能します. + + + + と数字の間に空白を入れてはいけません. + + + + + + + 制御文字を含む文字通りの + テキストデータを印字します. + + + + + + ditroff (device independent troff) データ + を印字します. + + + + -p + + 印字する前に &man.pr.1; + によってプレインテキストを整形し + ます. 詳細については &man.pr.1; をご覧ください. + + + + + + &man.pr.1; コマンドにより生成されるヘッダを, + ファイル名の + 代わりに title とする. + このオプションは, + と一緒に使ったときのみ機能する. + + + + + + troff データを印字します. + + + + + + ラスタのデータを印字します. + + + + + 次の例では, &man.ls.1; の + マニュアルを美しく整形したものをデフォ + ルトプリンタで印字しています. + + &prompt.user; zcat /usr/share/man/man1/ls.1.gz | troff -t -man | lpr -t + + &man.zcat.1; コマンドで + &man.ls.1; のマニュアルのソースファイルの圧 + 縮を復元し, これを + &man.troff.1; コマンドに渡しています. これによ + り, ソースファイルが整形され, GNU troff の形式となります. そ + の結果は &man.lpr.1; に渡され, + LPD スプーラへジョブの要求が発せ + られます. &man.lpr.1; には + オプションが使われているため, + スプーラにて, GNU troff の形式からジョブを印字したときにデフォ + ルトプリントが解釈できる形式へと変換されます. + + + + ジョブに関するオプション + + 以下のオプションは, &man.lpr.1; によって, そのジョブを特殊 + な扱いにするよう LPD に指示するためのものである. + + + -# copies + + ジョブに含まれるファイルのそれぞれを + 1部だけ印字するの ではなく, + copies + 部のコピーを生成させるものです. 管理者によっては, + プリンタの消耗を避け, コピー機による + 複製を奨励するためにこのオプションの使用が禁止されてい + るかもしれません. これに関しては, 「 + 複数部のコピーの印字を制限する + 」をご覧ください. + + 次の例では, デフォルトプリンタで + parser.c を3 部コピーし, 次に, + parser.h を3部コピーしています. + + + &prompt.user; lpr -#3 parser.c parser.h + + + + -m + + 印字ジョブが完了した後で, メールを送ります. + このオプショ ンを付けると, LPD + システムはジョブの扱いが終了したと きに, + あなたのアカウントにメールを送ります. メールのメッ + セージには, ジョブが正常終了したのか, あるいは, 何か異 + 常があり, (しばしば) + その異常が何であったのかが書かれて います. + + + + -s + + 印字ファイルをスプールディレクトリにコピーせず, + 代わりに, + シンボリックリンクを作成するよう指示します. + + 印字させるジョブのサイズが大きいとき, このオプショ + ンを使うと便利かもしれません. このオプションにより, + スプー ルディレクトリの容量が節約されます (それに, + 巨大なジョ + ブのお陰でスプールディレクトリのあるファイルシステムの + 空き容量がなくなってしまうかもしれません). さらに, + LPD + がいちいちすべてのデータをコピーする必要がなくなりま + すので, 時間の節約にもなります. + + ただし, 欠点もあります. LPD + はオリジナルのファイルを 直接参照するので, + 印字が終了するまでそのファイルを変更 + したり削除することができません. + + + リモートのプリンタで印字している場合, LPD は, + 結局のところ, ローカルホストからリモートホストにファ + イルをコピーする必要があります. したがって, + オプ + ションはローカルのスプーリングディレクトリの + 空き容量を 節約するだけで, + リモート側では節約されません. それに も関わらず, + このオプションはそれでも有用です. + + + + + -r + + ジョブに含まれるファイルを, + スプーリングディレクトリに + ファイルをコピーした後に削除します. もしくは, + オプションと一緒に使われた場合は, + 印字終了後に削除され ます. + このオプションの使用には十分注意して下さい. + + + + + + + ヘッダページ用オプション + + 以下のオプションにより, + ジョブのヘッダページに通常印字さ + れるテキストを + &man.lpr.1; に調整させることができます. 対象のプリ + ンタからヘッダページが出力されない場合は, + これらのオプションは + 何の効力も持ちません. + ヘッダページの設定に関する情報については, + 「 + ヘッダページ」を参照してください. + + + -C text + + ヘッダページに印字されるホスト名を + text に置き換 えます. なお, + ホスト名の場所には, 通常, ジョブの要求が + あったホストの名前が印字されます. + + + + -J text + + ヘッダページに印字されるジョブ名を + text に置き換 えます. + ジョブ名の場所には, 通常, ジョブの最初のファイ ル名, + または, 標準入力からデータが印字されたときは + stdinが印字されます. + + + + -h + + ヘッダページを出力を禁止します. + + + サイトによっ ては, + そのヘッダページの生成方法により, このオプション + の効果が現れないかもしれません. 詳細は, 「 + ヘッダページ」をご覧ください. + + + + + + + + + プリンタを管理する + + プリンタの管理者として, プリンタの設置, 設定, + そして, それ + らのテストをおこなう必要がありました. + &man.lpc.8; コマンドにより, + これまでとは別な管理方法がプリンタと対話的におこなわれます. + &man.lpc.8; により, 次のことが可能となります. + + + + プリンタの起動, 停止をおこなう. + + + + キューへの入力の許可, 禁止をおこなう. + + + + それぞれのキューにあるジョブの順番を変更する. + + + + 最初に用語に関する注意をしておきます. + プリンタが停止してい るとは, + キューの中にあるどのジョブも印字されることがない状態 + を言います. この状態においても, + ユーザはまだジョブの要求をおこなう ことができますが, + これらのジョブはキューの中で, + プリンタがスタートする状態になるまで, + あるいは, キューの内容が削除され + るまで待たされることになります. + + キューが禁止状態にあるとは, (root + 以外の) すべてのユーザが + プリンタにジョブを要求することができない状態のことを言います. + キューが許可状態にある場合は, + ジョブの入力が許可されます. + キューが禁止状態にある場合でも, + プリンタをスタートす + る状態にすることは可能です. この場合は, + キューが空になるまで, + キュー内のジョブの印字が続けられます. + + 一般的に, + &man.lpc.8; コマンドを使用するには root の権限を持って + いる必要があります. 一般のユーザも + &man.lpc.8; コマンドを使うこと + はできますが, プリンタの状態を取得することとハングしたプリンタ + を再スタートすることだけに使用が制限されています. + + 以下に, + &man.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 は, ユーザが + &man.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 をおこなっ + たことと等しくなります. + + + + + コマンドラインから上記のコマンドを入力すると, + &man.lpc.8; はこれ + を受け付けます. コマンドが入力されなかった場合は, + &man.lpc.8; は + 対話モードに入り, + exit, quit, + または, ファイル終端 + 文字が入力されるまでコマンドの入力ができます. + + + + + プリンタ設定上級編 + + この節では, 特殊な形式のファイルを印字するためのフィルタ, + ヘッ ダページ, ネットワーク越しのプリンタへの印字, そして, + プリンタ 使用の制限や課金について説明しています. + + + フィルタ + + LPD では, ネットワークプロトコル, キュー, アクセス制御, そ + して, 印字のためのその他の側面について扱いますが, + 実際の 作業のほとんどは + フィルタ によっておこなわれています. + フィルタ は, プリンタと通信し, + プリンタのデバイス依存性や特殊な要求を扱 うプログラムです. + 簡単なプリンタ設定では, プレインテキストのた + めのフィルタをインストールしました. このプレインテキストフィル + タは, ほとんどのプリンタで機能する極めて単純なものでした. + (「 + テキストフィルタのインストール」を参照) + + しかしながら, 形式変換やプリンタ課金, 特定のプリンタの癖, + など をうまく利用するためには, + フィルタがどのように機能するかという + ことを理解しておくべきです. これらの側面を扱うためには, 最終的 + には, フィルタの責任であるからです. そして, これは悪い情報です + が, ほとんどの場合において, + あなた自身がフィルタを供給す + る必要があるということです. また都合のよいことには, + たくさんのフィルタが 一般的に利用できるということです. + もしフィルタがなかったとし ても, 普通は, + フィルタを作るのは簡単です. + + FreeBSD にも, プレインテキストを印字させることができる + /usr/libexec/lpr/lpf + というフィルタが1つ付いています. + (このフィルタはファイルに含まれるバックスペースやタブを扱いま + す. また, 課金をすることもできますが, できることはこれだけしか + ありません.) いくつかのフィルタとフィルタの構成要素が FreeBSD + の ポート集にもあります. + + この節で述べることは次の通りです. + + + + + フィルタはどのように機能しているか」では, + 印字の過程におけ るフィルタの役割を概説します. + この節を読むことで, 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 を検討するべきです. + + + + + フィルタはどのように機能しているか + + 既に言及したように, フィルタとは, プリンタにデータを送る + 際に, デバイスに依存した部分を取り扱うために LPD + によって起動 される実行プログラムです. + + LPD がジョブ中のファイルを印字しようとするとき, LPD + はフィル タプログラムを起動します. このとき, + フィルタの標準入力を印字す るファイルに, + 標準出力をプリンタに, そして, 標準エラー出力をエ + ラーログファイル (/etc/printcap 内の + lf 項目で指 定されたファイル, または, + 指定されていない場合は, デフォルトと して + /dev/console) にセットします. + + LPD が起動するフィルタと, その引数が何であるかは, + /etc/printcap + ファイルの内容と, ジョブの起動時に + ユーザが指定した + &man.lpr.1; コマンドの引数に依存しています. 例え + ば, ユーザが lpr -t と入力した場合は, + LPD は出力先のプリ + ンタ用の tf 項目で指定されている troff + 用のフィルタを起動 + させるでしょう. + ユーザがプレインテキストの印字を指示したときは, + if で指定されたフィルタが + 起動されるでしょう (このことはほ + とんどの場合にあてはまります. + 詳細については, 「 + 出力フィルタ」をご覧ください). + + /etc/printcap + で指定可能なフィルタは次の3種類がありま す. + + + + + テキストフィルタ + (LPD のドキュメントでは紛ら + わしいことに + 入力フィルタと呼んでいますが) は一般の + テキストの印字を扱います. これはデフォルトのフィルタと + 考えてください. LPD では, すべてのプリンタに対して, デフォ + ルトでプレインテキストが印字できることを期待しています. + さらに, バックスペースやタブを正しく扱い, また, 他の特 + 殊な文字が入力されてもプリンタに混乱を来さないようにす + るのはテキストフィルタの仕事であると考えています. + + プリンタの使用に対して課金をしなくてはならない環境にあ + るときは, テキストフィルタが印字したページ数を数える作 + 業もしなくてはなりません. この作業は, 通常, 印字した行 + 数を数え, これをプリンタが1ページ当たりに印字できる行 + 数と比較することでおこなわれます. + + テキストフィルタは, 次のような引数を付けて起動されます. + + + filter-name + -c + -wwidth + -llength + -iindent + -n login + -h host + acct-file + + + ここで, + + + + + 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 + -xpixel-width + -ypixel-height + -n login + -h host + acct-file + + + ここで, pixel-width は, + px 項目で指定され + た値 (デフォルトは0), + pixel-height は, + py 項 + 目で指定された値 (デフォルトは0) です. + + + + 出力フィルタは, + テキストフィルタが指定されて + おらず, かつ, ヘッダページの出力が許可されている場合に + のみ使われます. + 「 + 出力フィルタ」で, これらのことについて説明し + ます. アウトプットフィルタに対する引数は次の2つだけです. + + + filter-name + -wwidth + -llength + + + ここで, は, + テキストフィルタの場合 + と同じです. + + + + フィルタは, 次に示すの終了状態をもってプログラムを + exit するべきです. + + + exit 0 + + フィルタがファイルを正常に印字した場合. + + + + exit 1 + + フィルタはファイルの印字に失敗したが, LPD + に再度ファ イルの印字を試みて欲しい場合. + この終了状態で終了した場 合, LPD + はフィルタを再スタートします. + + + + exit 2 + + フィルタはファイルの印字に失敗し, かつ, LPD + に再出力 を試みて欲しくない場合. この場合, LPD + はそのファイル を放棄します. + + + + + FreeBSD に付属するテキストフィルタ + /usr/libexec/lpr/lpf は, FROM FEED + 文字が送られたと + きやプリンタ使用に対する課金をどのようにするかを + 決定するために, ページ幅やページ長の引数を利用します. また, + 課金用のエントリを 作成するため, ログイン名, ホスト名, + 課金ファイル名の引数を利用 します. + + もし, フィルタの購入を検討しているならば, LPD + と互換性がある かどうかを確認してください. もしそうならば, + 上述の引数リストをサ ポートしていなければなりません. + 一般向けの使用のためにフィルタ + を作成する計画をしている場合は, + 同じ引数リストと終了コードをサ ポートしてください. + + + + プレインテキストのジョブを PostScript プリン + タで印字する + + コンピュータと PostScript (または, 他の言語に対応し た) + プリンタをあなたしか使用しない場合は, プリンタにプレ + インテキストを絶対に送らない, そして, + プリンタにプレインテキス + トを送りたがっている様々なプログラムの機能を決して + 使わないこと にしてください. そうすれば, + この節に書かれたことに心を煩わせる必 + 要はまったくなくなります. + + しかし, PostScript + とプレインテキストの両方のジョブをプリン + タへ送りたいと思っている場合は, + プリンタ設定についての要求が増 えるでしょう. + 両者をプリンタへ送信するためには, 到着 + したジョブがプレインテキストであるか PostScript であるかを + 検出するテキストフィルタが必要です. PostScript のジョブは + すべて %! + で始まらなければならないことになっています + (他のプリンタ言語に関しては, + プリンタのドキュメントをご覧くだ さい). + ジョブの最初の2文字がこれならば, PostScript である + ことが分かります. したがって, + ジョブのそれ以降の部分をプリンタに直 接送ることができます + (訳注:PostScript では, % + 以降はコメントとして扱われるので, 最初の %! の行を 読み捨てても問題はない). + 最初の2文字が %! でない場 + 合は, フィルタはテキストを PostScript に変換し, その結果を + 使って印字をおこないます. + + この作業をどうやってやればよいのでしょうか. + + シリアルポートにプリンタを接続した場合は, + lprps をインス + トールすることをお勧めします. lprps は + PostScript 用のフィルタで, + プリンタとの双方向通信をおこないます. このフィルタでは, + プリンタか らの冗長な情報を得ることで, + プリンタの状況を示すファイルが更新 されていきます. + したがって, ユーザや管理者は + (トナー残量少や + 紙詰まりといった) + プリンタの状況を正確に知ることができます. しかし, + もっと重要なことは, psif + と呼ばれるプログラムが 含まれているということです. + このプログラムは, 入力されたジョブ + がプレインテキストかどうかを検出し, これを PostScript に変 + 換するために, textps + (lprps に付属する別のプログラ ム) + を呼び出します. そして, このジョブをプリンタに送るために, + lprps が使われます. + + lprps は FreeBSD + のポート集に含まれています (「 + ポートコレクション」を参照してください). + もちろん,自分自身でプログラムを取ってきて, コンパイルし, + インストールす ることもできます. lprps + をインストールした後は, lprps + の一部である psif + プログラムのパス名を指定する だけです. ポート集から + lprps をインストールしたときは, + /etc/printcap の中のシリアル接続した + PostScript プリンタのエントリに対して, 次を使ってください. + + + +:if=/usr/local/libexec/psif: + + LPD + にプリンタをリード・ライトモードでオープンさせるために, + rw 項目も指定すべきです. + + パラレルポートに接続したプリンタの場合 (すなわち, + 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 +# + +read 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 の ポート集 (「ポートコレクション」 + を参照してください) には, a2ps + と呼ばれるテキストから PostScript に変換するプログラムが + 入っています. + + + 訳注: 上記スクリプトでは, + 先頭の行を読み込むために read を使っていますが, + 困ったことに, read は読み込んだ文字列の先頭 + の空白文字を取り除いてしまいます. 従って, + これらの空白文字は印 字されないことになり, + 印字結果がファイルのイメージと異なる場合 が出てきます. + この事情は csh を利用した場合でも変わりません. 仮に, + 先頭の空白文字を除去しない read コマンドを作ったとしても, + 「echo $first_line」の $first_line + 変数の内容をシェルが展開す る際に $first_line + の先頭の空白文字が失われるため, 問題の解決 にはなりません. + 残念ながら, 訳者はこの問題をシェルプログラムだ + けで解決する方法をしりません. perl か C + 言語の力を借りないと解 決できないと思います. + + + + + 非 PostScript プリンタで PostScript + をシミュレートする + + PostScript + は質の高い組版と印字をおこなうための事実 + 上の標準です. しかしながら, PostScript は, + 高価な標 準です. ありがたいことに, + Alladin Enterprises から + Ghostscript と呼ばれる, + PostScript 互換の動作をするフリー + のプログラムが出されていて, FreeBSDで動きます. Ghostscript + はほとんどの PostScript ファイルを読むことができ, これらの + 各ページをたくさんのブランドの非 PostScript プリンタを含む + 様々なデバイス用に変換することができます. Ghostscript をイン + ストールし, + プリンタ用の特別なテキストフィルタを使うことによっ て, 非 + PostScript プリンタをあたかも本物の PostScript + プリンタであるかのように動作させることができます. + + Ghostscript はポート集に入っていますので, + そこからインストール することができます. また, + 自分でソースプログラムを持ってきて, コンパイルし, インストー + ルすることもできます. この作業はとても簡単にできます. + + PostScript プリンタをシミュレートさせる場合は, + テキストフィ ルタに PostScript + ファイルを印字しようとしているかどうかを 検出させます. + PostScript ファイルでない場合は, フィルタは + そのファイルを直接プリンタに送ります + (訳注:テキストファイルを直 接印字できない場合は, もちろん, + 変換フィルタを通す必要がありま す). PostScript の場合は, + まず, Ghostscript を使い, ファ + イルをそのプリンタが理解できる形式へ変換します. + + 次の例のスクリプトは, Hewlett Packard DeskJet 500 + プリンタ用 のテキストフィルタです. + 他のプリンタで用いるときは, + 引数を gs (Ghostscript) + コマンドに変えてくだ さい. (gs -h + と入力すると, 現在インストールされている Ghostscript + でサポートされているデバイスのリストが得られます). + + +#!/bin/sh +# +# ifhp - Print Ghostscript-simulated PostScript on a DeskJet 500 +# Installed in /usr/local/libexec/hpif + +# +# Treat LF as CR+LF: +# +printf "\033&k2G" || exit 2 + +# +# Read first two characters of the file +# +read first_line +first_two_chars=`expr "$first_line" : '\(..\)'` + +if [ "$first_two_chars" = "%!" ]; then + # + # It is PostScript; use Ghostscript to scan-convert and print it + # + /usr/local/bin/gs -dSAFER -dNOPAUSE -q -sDEVICE=djet500 -sOutputFile=- - \ + && exit 0 + +else + # + # Plain text or HP/PCL, so just print it directly; print a form + # at the end to eject the last page. + # + echo "$first_line" && cat && printf "\f" && exit 0 +fi + +exit 2 + + 最後に, if 項目を通して, LPD + にこのフィルタを教えてやる 必要があります. + + +:if=/usr/local/libexec/hpif: + + これでおしまいです. lpr plain.text + とか lpr whatever.ps + と入力してみましょう. どちらも正常に印字されるは + ずです. + + + 訳注: 日本語を印字する場合は, + 日本語対応の Ghostscript が必要で す. 日本語対応版の + Ghostscript もポート集に入っているはずです. + + + + + 変換フィルタ + + プリンタ設定導入編」 + に書かれた簡単な設定が完了したら, 最初に, やってみたいと思 + うことは, 多分(プレイン ASCII テキストに加えて) + 好みのファイル形式 + のための変換フィルタをインストールすることでしょう. + + + なぜ, 変換フィルタをインストールするのか? + + 変換フィルタによって, 様々な種類のファイルを印字するこ + とが簡単になります. 例えば, TeX + 組版システムでたくさんの仕事 をしたと仮定しましょう. + そして, PostScript プリンタが接続 されているとします. + すると, TeX で DVI ファイルを作成する度に, DVI + ファイルを印字するために, これを PostScript ファイルに + 変換する必要があります. + このコマンドは次のようになるでしょう. + + &prompt.user; dvips seaweed-analysis.dvi +&prompt.user; lpr seaweed-analysis.ps + + DVI ファイル用の変換フィルタがインストールしてあると, + LPD に 変換を肩代わりさせることで毎回毎回 + おこなわなければならなかった面倒 + な変換作業を省くことができます. つまり, DVI を生成したら, + 次のような1回のコマンド入力だけで, これが印字されます. + + + &prompt.user; lpr -d seaweed-analysis.dvi + + LPD に DVI ファイルの変換をさせるためには, + オプション を指定します. + 変換オプションのリストは「 + 整形と変換に関するオプション」 + に載せてあります. + + 変化のオプションのそれぞれをプリンタに + サポートさせるためには, + 変換フィルタをインストールし, + そのパス名を /etc/printcap + の中で指定しなくてはなりません. 変換フィ ルタは, + プレインテキストを印字する代わりに, フィルタはファイル + をプリンタが理解できる形式に変換するところを除けば, + 「プリンタ の簡単な設定」で説明したテキストファイル + (「 + テキストフィルタのインストール」 を見て下さい) + に似ています. + + + + どの変換フィルタをインストールすべきか? + + 使いたいと思う変換フィルタをインストールすべきです. + DVI のデータを頻繁に印字するならば, DVI 変換フィルタ + をインストールするのが適切でしょう. 印字しなくてはなら + ない troff を大量に抱えている場合は, 多分, troff フィ + ルタが欲しくなるはずです. + + 次の表は, LPD で動作するフィルタと, + /etc/printcap + ファイルでのエントリする項目, そして, + lpr + コマンドで呼び出す方法をまとめたもの です. + + + + + + ファイル形式 + /etc/printcap項目 + lpr オプション + + + + + + cifplot + cf + + + + DVI + df + + + + plot + gf + + + + ditroff + nf + + + + FORTRAN text + rf + + + + troff + tf + + + + raster + vf + + + + プレインテキスト + if + なし, , または + + + + + + + 先の例のように, lpr -d + を使うためには, 出力先の プリンタの + /etc/printcap 内のエントリで, + df + 項目が必要であることが分かります. + + 反論はあるかも知れませんが, FORTRAN テキストや plot + のような形式は, 多分, 廃れ てていくでしょう. + あなたのサイトで, 自前のフィルタをイ ンストールするだけで, + プリントオプションのいくつか, あ るいは, + 全部に新しい意味を与えることができます. 例えば, + Prinerleaf ファイル (Interleaf デスクトップパブリッシン + グプログラムによるファイル) を直接印字したいとします. + そして, Printerleaf 用の変換フィルタを + gf 項目で + 指定したパスにインストールすれば, lpr + -g の意味 は“Printerleaf + ファイルを印字する”意味だとユーザに教 + えることができます. + + + + 変換フィルタのインストール + + 変換フィルタは FreeBSD + の基本システムのインストールとは別 + にインストールするプログラムなので, 変換フィルタは, 多 分, + /usr/local ディレクトリの下に置くべ + きです. フィルタは LPD だけが実行する特別なプログラム, + すなわち, 一般ユーザが実行する必要すらない + プログラムなので, /usr/local/libexec + ディレ クトリに置くのが普通です. + + 変換フィルタを使用可能にするためには, + /etc/printcap + の目的のプリンタの適切な項目に + フィルタがあるパス名を指定します. + + DVI 変換フィルタをプリンタ bamboo + のエントリに加 えてみましょう. プリンタ + bamboodf 項目を + 新たに加えた/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:fs#0x82000e1:xs#0x820: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 + をフィルタモード (引数 ) で, + 標準入力上で起動しています. 標準入力は印字 するジョブです. + それから, PostScript プリンタ用フィ ルタ + lprps (これについては「 + プレインテキストのジョブを PostScript + プリンタで印字する」 を参照してください) を LPD + に与えられた引数を付けて起動 します. + lprps + はこれらの引数を印字されたページ分 + の課金をおこなうために使われます. + + + + 変換フィルタのその他の例 + + 変換フィルタのインストールには決まったステップがないの + で, その代わりに, 例をもっと挙げることにします. これを, + 自分でフィルタを作る際のガイドにしてください. 適当な例が + あったら, それをそのまま使ってください. + + 次のスクリプト例は, 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 "\f" && 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 のポート集 (「ポートコレクション」 + を参照してください) には, それがあ ります. + 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 + + + + 自動変換: その他の変換フィルタ + + ここまでに述べてきたフィルタによって, 印字環境の能率が + 上がったことと思います. しかし, これはどのフィルタを使 + うかを ( &man.lpr.1; のコマンドライン上で) ユーザが指定しな + くてはならないという代価を支払って実現されています. コ + ンピュータの事情にあまり詳しくないユーザにとって, フィ + ルタのオプションを指定させられるということはいらいらさ + せられるものになるでしょう. 更に悪いことに, 間違ったフィ + ルタオプションを指定されると, 間違った形式のファイルが + そのフィルタに適用されることになり, その結果, 何百枚も + の紙を掃き出すことになるかもしれません. + + そのような結果になるならば, 変換フィルタをインストール + するよりもむしろ, テキストフィルタ (これがデフォルトフィ + ルタなので) に印字するよう要求されたファイルの形式を検 + 出させ, 自動的に, 適切な変換フィルタを起動するようにし + たいと思うかもしれません. ここでは file + コマンド のようなツールを役立たせることができます. + もちろん, いくつかの + ファイル形式の違いを見分けることは難しい ことでしょう. + そして, もちろん, それらのファイルに対し ては, + 変換フィルタを提供するだけで済ますこともできるの + です. + + FreeBSD のポート集には, apsfilter + と呼ばれる自 動変換をおこなうテキストフィルタがあります. + このフィルタは プレインテキスト, PostScript, DVI + ファイルを検 出し, 適当な変換をおこなった後, + データを印字することができ ます. + + + + + 出力フィルタ + + LPD スプーリングシステムでは, + ここまでにまだ取り上げていな いフィルタ形式, + 出力フィルタをサポートしています. 出力 フィルタは, + テキストフィルタのように, プレインテキスト + のみを印字するために意図されたものですが, 非常に簡単化 + されています. テキストフィルタを用いずに, 出力フィルタ + を使っている場合は, 次のようになります. + + + + LPD はジョブ中の各ファイルに一度ではなく, ジョブ + 全体に対して一度だけ出力フィルタを起動します. + + + + LPD は出力フィルタに対し, ジョブ中のファイルの先 + 頭や末尾を特定するための対策を一切 + おこなっていません. + + + + LPD はユーザのログイン名やホスト名をフィルタに渡 + しません. したがって, 課金の処理をおこなうことは考えてい + ません. 実際, 出力フィルタには, 以下2つの引数しか与え + られません. + + + filter-name + -wwidth + -llength + + + ここで, width + は対象となるプリンタの pw 項 目, + length は + pl 項目に指定された数です. + + + + 出力フィルタの簡便さに誘惑されてはいけません. もし, ジョ + ブ中のそれぞれのファイルに別のページ番号を付加しようと + しても, + 出力フィルタはうまく動作しないでしょう. + そのような動作を期待しているならば, (入力フィルタとし + ても知られている) テキストフィルタを使ってください. 詳 + しくは, 「 + テキストフィルタのインストール」をご覧ください. + さらに, 出力 フィルタは, 実のところ, + もっと複雑になっています. まず, + 特殊なフラグ文字を検出するために, フィルタに送ら + れてくるバイトストリームを検査する必要があります. また, LPD + に代わって, 自分自身にシグナルを送らなければなりま + せん. + + しかしながら, ヘッダページの印字をおこないたい場合, + また, + エスケープシーケンスやヘッダページを印字できるようにす + るその他の初期化文字列を送信する必要がある場合, 出力ファ + イルが必要です. + + 1台のプリンタに対し, LPD では出力フィルタとテキスト, + または, 他のフィルタを両方使うことができます. このよう + な場合, LPD はヘッダページ (「 + ヘッダページ」 を参照してください) + だけを印字させるために, 出 力フィルタを起動させます. + それから LPD では, アウトプッ トフィルタに2バイトの文字 + (ASCII 031 の次に ASCII 001) を送ることで, + 出力フィルタが自力で停止することを + 期待しています. 2バイト (031, 001) が出力フィルタに送られ + たとき, 出力フィルタは自分自身にシグナル SIGSTOP を送 + ることによって停止するべきです. LPD がその他のフィル + タの起動を完了したとき, LPD は出力フィルタにシグナル + SIGCONT を送ることで, 出力フィルタを再起動させます. + + 出力フィルタがあり, + テキストフィルタがない場合, LPD + はプレインテキストのジョブをおこなう際に, 出力フィル + タを使います. 前述したように, 出力フィルタでは, ジョブ + 中の各ファイルの並びの間に FROM FEED 文字や紙を排出す + る他の文字を入れることはしません. この動作は多分, あな + たが求めているものとは + 異なっているでしょう. ほと + んどすべての場合において, テキストフィルタが必要とされる + はずです. + + プログラム lpf は, + テキストフィルタの項で既に紹介 しましたが, + 出力フィルタとしても動作させることができま す. もし, + 簡便で極悪な出力フィルタが必要で, かつ, バイ + トストリームを検査したりシグナルを送るコードを書きたく + ないときには, lpf をお試しください. + あるいは, プ リントが要求する初期化コードを送るために, + lpf を + シェルスクリプトに包んで使うこともできます. + + + + テキストフィルタ <command>lpf</command> + + プログラム /usr/libexec/lpr/lpf は, + FreeBSD の バイナリ配布に付属しているテキストフィルタ + (入力フィル タ) で, 出力を字下げしたり (lpr + -i でジョブが入力さ れたとき), + 文字を未処理のままプリンタに送ったり (lpr + -l でジョブが入力されたとき), ジョブ中のバッ + クスペースやタブの印字位置を調節したり, 印字したページ + に対して課金したりすることができます. また, このフィル + タは出力フィルタとしても動作させることができます. + + lpf + は多くの印字環境において使用することに適して います. + このフィルタには, プリンタに初期化文字列を送る + 機能はありませんが, 必要とされる初期化をおこない, それから + lpf + を実行させるためのシェルスクリプトを作成する + のはたやすいことです. + + lpf に対して, + 印字ページへの課金を正確におこなわせる ためには, + /etc/printcap ファイルの中の + pwpl + の項目に正確な値を入れておく必要が あります. これらの値は, + どのくらいの量のテキストがペー ジにフィットするか, また, + ユーザのジョブが何ページある のかを調べるために使われます. + プリンタの課金についての 詳しい情報については, 「 + プリンタの利用に対する課金」をご覧ください. + + + + + ヘッダページ + + あなたが管理するシステムのユーザが + たくさんおり, ユー + ザ全員が様々なプリンタを使用する場合, 多分, 必要悪である + ヘッダページ + を印字させることを検討したいと思うかもしれま せん. + + ヘッダページは, バナー とか + バーストページ としても知ら れていますが, + 出力されたジョブが誰によるものなのかを特定させる + 働きがあります. 印字結果の山の中において, ユーザのジョブによっ + て印字された本物のドキュメント部分よりも際立たせるために, ヘッ + ダページは, 通常, 多分, 縁が装飾されている大きな太文字で印字さ + れます. ヘッダページにより, ユーザは自分が出したジョブがどこに + あるのかをすばやく見つけることができます. + ヘッダページの欠点は, 明らかに, すべてのジョブに対して, + 紙が1枚余分に印字されるという ことです. + この紙の有効期間は短く, 2〜3 分も続きません. 最終的に, + これらの紙は再利用紙入れの中か + くずの山に入れられることでしょう. + (ヘッダページはジョブ中の各ファイル毎に印字されるのではなく, + ジョブ毎に印字されるということに注意してください. したがって, + 紙の 消費はそれほどひどくはないかもしれません). + + もし, + プリンタがプレインテキストを直接印字できるならば, LPD + システムは印字物に対して自動的にヘッダページを付けることが + できます. PostScript プリンタを使っている場合は, ヘッダペー + ジを生成する外部プログラムが必要になります. これについては, + 「PostScript + プリンタでのヘッダページ」をご覧ください. + + + ヘッダページの印字を許可する + + プリンタ設定導入編 + 」 では, /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 によってジョ + ブを入力することで, + ヘッダページの印字を止めることができます. + これ以外の + &man.lpr.1; のオプションについては, + 「 + ヘッダページ用オプション」 + をご覧ください. + + + LPD では, ヘッダページの最後に, FROM FEED 文字が印 + 字されます. プリンタに紙排出をさせるために, 別な文字, + もしくは, 別な文字列が利用されている場合は, + /etc/printcap 中の + ff 項目で指定することができます. + + + + + ヘッダページを制御する + + ヘッダページの印字が許可されていると, 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 はこのテキストの終わりに FROM 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/printcaphl + (header last) を指定 してください. + + + + ヘッダページに対する課金 + + LPD に備わっているヘッダページ出力機能を使うと, 入力され + たジョブに対して課金をおこなうことができても, + ヘッダページは無 + 料で提供しなくてはならない, + という特有のやり方を強要されます. + + なぜでしょうか. + + 出力フィルタは単なる外部プログラムなので, + 課金をするための制御 をおこなうとすれば, + それはヘッダページを印字するときですが, 出力フィ ルタには, + ユーザ名とホスト名 + の情報や課金情報を格納するファ イルがどれな + のかということが知らされません. それゆえ, 出力ファイルには, + 誰 + にプリンタ利用の課金をおこなえばよいのかが分からないのです. + テキス トフィルタやその他の変換フィルタ + (これらのフィルタはユーザやホ ストの情報が知らされます) + が出力ページの枚数に“1ページ分水増し + する”だけでは十分ではありません. なぜなら, ユーザは + lpr -h に + よってヘッダページの出力を止めることができるからです. + やみくも に1ページを水増しすると, + 印字されてもいないヘッダページに対する + 料金をとることになります. 基本的に, lpr + -h は環境に優し + い心を持つユーザに好まれるオプションですが, + これを使うように奨 励することもできません. + + 各々のフィルタに独自のヘッダページを生成させる + (その結果, ヘッ ダページに課金することができる) + という方法でも十分であると + はいえません. この場合, LPD はフィルタに + の情報を送 りませんので, lpr + -h によってヘッダページを印字しないオ + プションを選択したとしても, + 依然としてヘッダページは印字され, + その分の課金がおこなわれてしまいます. + + では, どのような選択肢があるのでしょうか. + + ヘッダページへの課金に関しては, + 次のことができます. + + + + LPD のやり方を受け入れ, + ヘッダページは無料とする. + + + + LPDng や PLP といった LPD の代替品をインストール + する. LPD と入れ替えが可能な他のスプーリングソフトウェ + アに関しては, 「 + 標準スプーラの代替品」をご覧ください. + + + + + スマートな + 出力フィルタを作成する. 通常, 出力 + フィルタはプリンタを初期化するか, 単純な文字列変換をす + る程度の働きしかしません. (テキスト (入力) フィルタがな + い場合) 出力フィルタはヘッダページとプレインテキストの + 印字をおこなうのに適しています. + + プレインテキストを印字するためのテキストフィルタがない + 場合, LPD はヘッダページを印字するためだけの目的で出 + 力フィルタを起動します. そして, LPD が生成するヘッダ + ページのテキストを解析することにより, 出力フィルタはヘッ + ダページに課金するために必要なユーザ名とホスト名を取得 + することができます. この方式の唯一の問題点は, 出力フィ + ルタは課金情報を格納するデータファイルの名前を知ることが + できないということです + (af 項目で指定されたファイ + ル名は出力ファイルに渡されません). しかし, 既知の + 名前の課金データファイルを使うのならば, その名前を出 + 力フィルタのプログラム中に埋め込むことができます. + + 解析の手順を簡単にするためには, + /etc/printcap + で sh 項目 (短いヘッダを指 + 定) を使うとよいでしょう. + + そしてまた, ここまでの方法は少なからぬトラブルを生じさ + せるかもしれません. + そうなれば, もちろんユーザはヘッダペー + ジを無料で + 提供してくれる気前のよいシステム管理者に感謝することで + しょう. + + + + + + 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 + で“ヘッダページを印字しない”オプション + ( オプション) が 使えなくなっています. + ユーザが森林資源を (あるいは, ヘッダペー + ジが課金されているならば, その僅かな金額を), + 節約したいと望んでい る場合でも, + すべてのフィルタがすべてのジョブ毎にヘッダページを印字 + することになっているので, 節約することはできません. + + ジョブ毎に印字されるヘッダページを + ユーザが抑制できるようにする ためには, 「 + ヘッダページに対する課金」で紹介したトリックを + 使う必要があります. すな わち, LPD + が生成するヘッダページの解析をおこない, PostScript + 版のヘッダページを出力させる出力フィルタを作るのです. この場 + 合, ユーザが lpr -h でジョブを入力すると, + LPD はヘッダペー ジを生成しなくなり, また, + 出力フィルタも起動されません. そうで ないならば, + 作成した出力フィルタが LPD からのテキストを読み込 み, + ヘッダページを印字する適当な PostScript のコードがプリ + ンタに送られるでしょう. + + PostScript プリンタがシリアルポートに接続されている場合, + 出力フィルタとして lprps を, + 上記の動作をおこなうものとして psof + を使うことができます. ただし, psof + はヘッダペー + ジに対して課金をおこないませんので注意してください. + + + + + リモートプリンタからの出力 + + FreeBSD では, ネットワーク越しの印字, すなわち, ジョブをリ + モートプリンタに送ることをサポートしています. リモートプリンタ + からの出力をするには, 一般に, 次の2つを参照してください. + + + + + リモートホストに接続されたプリンタにアクセスする方 法. + プリンタがあるホストのシリアル, または, パラレルイ + ンタフェースに接続されている場合, ネットワーク上の他の + ホストからこのプリンタにアクセスできるように LPD を設 + 定します. 「リモートホストに + 接続されたプリンタ」 + でどのよう にするかを説明します. + + + + ネットワークに直接接続されているプリンタにアクセ + スする方法. プリンタに, 旧来のシリアル, または, パラレ + ルインタフェースに加えて (もしくは, これらに代わって) ネッ + トワーク用のインタフェースがある場合. そのようなプリン + タは次のように動作するでしょう. + + + + そのプリンタが LPD のプロトコルを理解でき, リモー + トホストからのジョブを + キューに入れることさえできる場合. この場合, + プリンタは, LPD が起動している一般のホスト + のように振る舞います. そのようなプリンタを設定するため + に, 「 + リモートホストに接続されたプリンタ」 + と同様の手 順をおこなってください. + + + + そのプリンタが, データストリームによるネットワー + ク接続をサポートしている場合. この場合, ネットワーク上 + の1つのホストとしてプリンタを“接続”します. + このホス トは, ジョブをスプーリングする責任を負い, + スプーリング されたジョブはプリンタに送られます. + そのようなプリンタ + をインストールするためのいくつかの提案が「 + ネットワークにおけるデータストリームの + インタフェースを持つプリンタ」にあります. + + + + + + + リモートホストに接続されたプリンタ + + LPD スプーリングシステムでは LPD (または LPD 互換のシス + テム) + が起動している他のホストへジョブを送る機能が始めからサポー + トされています. この機能により, + あるホストに接続されたプリンタ へ, + 他のホストからアクセスできるようになります. また, LPD プ + ロトコルを理解するネットワークインタフェースを持った + プリンタに 対しても, この機能は働きます. + + リモートプリンタへの出力を許可するためには, 最初に, + あるホスト (これを, + プリンタホストと呼びます) + にプリンタを接続します. そして, 「 プリンタ設定導入編」 + に書かれた簡単なプリンタの設定をおこなってください. + 必要ならば, 「プリンタ設定上級編」 + にあ る, 更に進んだ設定をおこなってください. そして, + そのプリンタをテス トしてうまく動作することを確認し, LPD + に許可した機能がうまく働 くかどうかを見てください. さらに + ローカルホスト が + プリンタホスト の LPD サービスの使用を + 許可されているか確認して 下さい (「 + リモートホストからのプリンタの利用を制限する + 」参照). + + LPD + 互換のネットワークインタフェースを持つプリンタを使用してい + る場合は, そのプリンタ自身が以下で説明する + プリンタホスト になります. そして, + プリンタ名とは, そのプリンタに設定し + た名前のことを指します. これについては, プリンタ, および + (また は), + プリンタのネットワークインタフェースに付属するドキュメン + トを参照してください. + + 次に, + そのプリンタにアクセスしたいと思っている他ホストにおいて, + そのホストの /etc/printcap + ファイルに次にあげるエント リを作ります. + + + + 名前のエントリ. どんな名前でもよいのですが, 簡単 + のため, 多分, プリンタホストで設定されたプリンタ名や別 + 名と同じものを使いたいと思うでしょう. + + + + lp + 項目で指定されるデバイスは明示的に空にす る + (:lp=: とする). + + + + スプーリングディレクトリを作成し, + sd 項目で その位置を指定する. LPD + では, プリンタホストにジョブ を送信するまでの間, + このディレクトリにジョブを格納しま す. + + + + rm + 項目でプリンタホストの名前を指定します. + + + + rp 項目で + プリンタホスト に接続したプリン + タ名を指定します. + + + + これで終わりです. + 変換フィルタやページの大きさやその他の事項を + /etc/printcap + に加える必要はありません. + + 次に, + リモートホストに接続されたプリンタで印字するための設定例 + を示します. ホスト rose には2台のプリンタ + bamboorattan + が接続されています. これらのプリンタをホスト 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 + で必要となる作業はスプーリングディレクトリを + 作ることだけです. + + &prompt.root; mkdir -p /var/spool/lpd/rattan /var/spool/lpd/bamboo +&prompt.root; chmod 770 /var/spool/lpd/rattan /var/spool/lpd/bamboo +&prompt.root; chown daemon.daemon /var/spool/lpd/rattan /var/spool/lpd/bamboo + + これで, orchid のユーザが + rattanbamboo で印字す + ることができるようになりました. + 例えば, orchid のユーザが次の + ように入力したとします. + + &prompt.user; lpr -P bamboo -d sushi-review.dvi + + すると, orchid の LPD システムは, ジョブをスプーリングディレ + クトリ /var/spool/lpd/bamboo + にコピーし, これが DVI + ファイルを印字するジョブであることを記録します. + ホスト rose の + bamboo + 用のスプーリングディレクトリに十分な容量が確保でき + 次第, 両者の LPD は, ジョブのファイルを rose に転送します. こ + のファイルは, そのすべてが印字されるまで, rose + のキューに留まり + ます. (bamboo は PostScript プリンタなので) DVI から PostScript + への変換は rose でおこなわれます. + + + + ネットワークにおけるデータストリームのインタ + フェースを持つプリンタ + + プリンタのネットワークインタフェースカードは, 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 + + + + + プリンタの利用に制約を与える + + 本節では, プリンタの利用に制約を与えるための情報を記して + います. LPD システムでは, プリンタ (ローカル, リモートのいずれ + に接続されていても) にアクセスできる人を制限する機能, 複数部の + コピーの印字の可否を制御する機能, ジョブのサイズの最大値やプリ + ンタキューに入るジョブの最大個数を制御する + 機能を提供しています. + + + 複数部のコピーの印字を制限する + + LPD + システムではユーザが複数部のコピーの印字を簡単におこなう + 機能を提供しています. ユーザが, (例えば) lpr + -#5 コマ ンドを使ってジョブを印字すると, + ジョブのそれぞれのファイルのコ ピーを5部得ることができます. + これがよい機能であると思うかどう + かは人それぞれでしょう. + + 複数部のコピーの印字によってプリンタが + 必要以上に消耗してしまう + と感じるならば, /etc/printcap + ファイルに sc 項 + 目を加えてください. これにより, + &man.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:fs#0x82000e1:xs#0x820: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 -# の使用を防 + ぐことができます. しかし, この状態では + &man.lpr.1; を複数回起動し + たり, 1回のジョブで次のように同じファイルを + 複数個指定すること + を防ぐまでには至っていません. + + &prompt.user; lpr forsale.sign forsale.sign forsale.sign forsale.sign forsale.sign + + このような悪用を防ぐ方法は + (その指示を無視することも含めて) たく さんあります. + 各自で調べてみてください. + + + + プリンタを使用できる人を限定する + + それぞれのプリンタを使用できる人を限定するには, UNIX の + グループ権限のメカニズムを利用し, さらに, + /etc/printcaprg + 項目を指定することでおこないます. + あるプリンタにアクセスさせてもよいと思うユーザすべてを + UNIXのある グループに入れてください. そして, + そのグループ名を rg で 指定します. + + このとき, そのグループに含まれないユーザ + (root も含む) が + rg + の指定がされたプリンタを使用すると, 次のようなメッセー + ジが表示され, プリンタの使用はできません. + + + 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:fs#0x82000e1:xs#0x820:rw:\ + :if=/usr/local/libexec/psif:\ + :df=/usr/local/libexec/psdf: + + これ以外の /etc/printcap ファイル + (ホスト orchid のもの) + はそのままにしておくことにします. もちろん, + orchid のユーザは 全員 + bamboo を利用することができます. これは, + orchid に + は特定のユーザのみにしかアクセスさせておらず, + そのユーザにはプ + リンタを利用させたいと思っているからなのかもしれませんし, + そう でないかもしれません. + + + 1台のプリンタを複数グループのユーザに利用させること + はできません. + + + + + 入力可能なジョブのサイズを制限する + + たくさんのユーザからプリンタが利用される場合には, 多分, + ユーザが印字要求を出すことができるファイルのサイズに + 上限値を置 く必要が生じるでしょう. 結局のところ, + スプーリングディレクトリ + が置かれているファイルシステムの空き容量がその + 上限値になる訳で すが, + あるユーザがこれを独占的に使用すること避けるために, 他ユー + ザからのジョブ用の空き容量を確保する必要もあります. + + LPD では, mx + 項目を指定することにより, ジョブ中の個々のファ + イルのサイズの上限値を制限する機能を提供しています. + 指定される ファイルサイズの単位は BUFSIZ ブロックで, 1 + BUFSIZ ブロックは 1024バイトを表わします. この mx 項目の値として0が指定される と, + ファイルサイズの制限はなくなります. + + + この制限はジョブ中の各 + ファイルに対して適用されるものであり, + ジョブ全体のサイズ + を制限するものではありません. + + + ところで, + プリンタに設定された上限値を超えるファイルサイズのファ + イルが入力された場合でも, LPD はこれを拒否しません. その代わ + りに, このファイルは, + その先頭から上限値のファイルサイズまでし + かキューに入れられません. そして, その部分までが印字され, + 残り の部分は捨てられます. + これが正しい動作といえるのかどうかは議 + 論の余地があるところです. + + それでは, 設定例に登場しているプリンタ + rattanbamboo + の印字可能なファイルサイズに制限を加えてみましょう. artists + グループの人達が作る PostScript ファイルのサイズは + 巨大になる傾向があるので, 上限値を5Mバイトとします. + それから, + プレインテキスト用のラインプリンタは無制限とします. + + +# +# /etc/printcap for host rose +# + +# +# No limit on job size: +# +rattan|line|diablo|lp|Diablo 630 Line Printer:\ + :sh: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:fs#0x82000e1:xs#0x820:rw:\ + :if=/usr/local/libexec/psif:\ + :df=/usr/local/libexec/psdf: + + この場合もそうですが, この制限はローカル (ホスト rose) + のユーザ のみに適用されます. + リモートホストからプリンタを利用できるよう + に設定している場合は, + そのリモートホストのユーザはこの制限を受 けません. + これらのユーザにも制限を加える場合は, リモートホスト の + /etc/printcapmx + を指定する必要があります. + リモートホストから印字するための詳しい情報については, + 「 + リモートホストに接続されたプリンタ」 + を参照してください. + + リモートホストに接続されたプリンタへのジョブの + サイズを制限する 特別な方法は他にもあります. これについては, + 「 + リモートホストからのプリンタの利用を制限する」 + を参照してください. + + + + リモートホストからのプリンタの利用を制限する + + LPD スプーリングシステムでは, リモートホストから要求され + たジョブの印字を制限するための方法がいくつか + 提供されています. + + + ホストの制限 + + ローカルの LPD + が印字要求を受け付けるリモートホストは, ファイル + /etc/hosts.equiv と + /etc/hosts.lpd + によって制御することができます. LPD では, + あるホストから印字の要求がきたとき, このホス + トの名前がこれら2つのファイルのどちらかに含まれている + かどうかを調べます. これが含まれていない場合は, LPD + はこの要求を拒否します. + + これらのファイルの形式は単純です. + 各行にホストの名前を + 1つずつ書いていきます. ファイル + /etc/hosts.equiv の方は + &man.ruserok.3; プロトコル + でも利用され, &man.rsh.1; や &man.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:fs#0x82000e1:xs#0x820:rw:mx#5000:\ + :if=/usr/local/libexec/psif:\ + :df=/usr/local/libexec/psdf: + + スプーリングディレクトリは + sd で指定されます. LPD + がリモートホストからのジョブを受け付けるために必要 + なファイルシステムの空き容量を3Mバイト + (=6144ディスクブ ロック) にすることにしましょう. + + + &prompt.root; echo 6144 > /var/spool/lpd/bamboo/minfree + + + + 利用ユーザの制限 + + /etc/printcap の + rs 項目を指定することで, + ローカルプリンタを利用できるリモートホストのユーザを制 + 限することができます. ローカルホストに接続されたプリン + タ用のエントリに rs + 項目が指定されている場合, LPD + は印字を要求したユーザのアカウントと同じログイン名 + がローカルホストに登録されている/em/場合に限り/, その + ジョブが受け付けられます. そうでないユーザからのジョブ + は LPD は拒否します. + + この機能は, (例えば) + 複数の部署がネットワークを共有して おり, + この内のあるユーザが部署の境界を越えて活動してい + る場合には特に有用です. そのようなユーザに対して, シス + テムのアカウントを与えるだけで, これらのユーザは自分が + 所属する部署のシステムからそのシステムに接続されている + プリンタを使用することができます. これらのユーザにはむ + しろ, プリンタの使用だけを認め, + その他のコンピュー タ資源を利用させたくないときは, + それらのユーザにはホー ムディレクトリを与えず, + ログインシェルはシェルとしては 何の役にも立たない + /usr/bin/false などを指定 して, + これらのユーザのアカウントはプリンタ用の“形式的 + な”ものとします. + + + + + + + + プリンタの利用に対する課金 + + という訳で, 印字するためには料金をとることが必要です. 取ら + ない理由などありましょうか. 紙やインクにはお金がかかります. そ + して, プリンタの維持費もかかります. プリンタには可動部分が搭載 + されており, これらの部分は壊れやすいという傾向があります. プリ + ンタや, その利用形態, 維持費について調査をし, 1ページ (1フィー + ト, 1メートルなど) 当たりにかかるコストを調べておいてください. + これに基づき, プリンタの利用に対する課金を, 実際に, どのように + 始めればよいのでしょうか. + + さて, 残念ながら, この部分に関しては LPD + スプーリングシステム はほとんど役に立ちません. + 課金は使用しているプリンタの種類, 印 + 字するもののファイルの形式, + プリンタの利用に対する課金での + あなた自身の要求に大きく左右されます. + + 課金システムを実現するためには, プリンタのテキストフィルタ + (プ レインテキストのジョブに対して課金するため) と変換フィルタ + (その 他のファイル形式に対して課金するため) を変更して, + 印字したペー ジを数えたり, + プリンタに印字したページ数を取得するための要求を + 送る必要があります. ただし, 出力フィルタのみを利用している場合 + は, 課金をおこなうことができません. フィルタに関しては, + 「 + フィルタ」をご覧く ださい. + + 一般に, 課金方式には次の2つがあります. + + + + 定期的に課金する方法 + はよく利用される方法です. この理由は, 恐らく, + 比較的簡単に実現できるからです. 誰 + かがジョブを印字する度に, フィルタはそのユーザ名, ホス + ト名, 印字したページ数を課金データファイルに記録します. + 毎月, 毎学期, 毎年, あるいは, お好みの時期に, 様々なプ + リンタの課金用ファイルを集め, それぞれのユーザが印字し + たページ数を合計し, その分の課金をおこないます. 次回の課金 + 時期のためのデータを0にして課金を再開するために, この + 処理をおこなった後, すべてのログファイルを削除し, + + + + 利用毎に課金する方法 + はあまり利用されていません. これは, + 実現するのが比較的難しいからです. この方式では, + プリンタを使用したらすぐに, フィルタがユーザにその利用 + に対する課金をおこないます. ディスククオータのように, 課金 + 作業は瞬時におこなわれます. この方式では, ユーザのアカウン + トが赤字になる場合に, ユーザが印字をおこなうことを拒否する + ことができます. また, ユーザに“プリンタ版 + quota”を 調べたり, + 調整したりする方法を提供したいと思うかもしれ ません. + これを実現するためには, ユーザとその quota を + 追跡するために, あるデータベース用のコードが必要となり + ます. + + + + LPD スプーリングシステムでは, 両方式を簡単にですがサポー + トしています. これは, (ほとんどの場合で) 印字作業をフィ + ルタがおこなっていたように, 課金作業もこのためのコードも用 + 意することで実現されています. しかし, 明るい面もありま す. + それは, 課金方式に関して, 非常に大きな柔軟性が与え + られたということです. 例えば, 「定期的に課金する方法」 か, + 「利用毎に課金する方法」のどちらかを選びまず, そし て, + どんな情報 (ユーザ名, ホスト名, ジョブのタイプ, 印 + 字された頁数, 使用した紙の大きさ, 印字をするために要した + 時間など) をログに記録するかを決めます. 以上のことをおこな + うには, 上記の情報を保持するために, フィルタを変更しな + くてはなりません. + + + 手軽なプリンタ課金方法 + + FreeBSD には, 「定期的に課金する方法」による課金をすぐに + 設定できるように, 2個のプログラムを添付しています. そ + の内の1つはテキストフィルタ lpf で, + これについて + は, 「 + テキストフィルタ lpf」をご覧ください. もう1つは, + &man.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 項目を使いま す. + + プリンタの利用に対してユーザに課金する準備ができたら, + スプーリングディレクトリに移動した後, + &man.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 + + &man.pac.8; が受け付ける引数には + 次のようなものがあります. + + + + + プリンタ printer + の利用に対する課金リストを作成し ます. + このオプションは, /etc/printcap + の af + が絶対パスで指定されていた場合に限り, 動作しま + す. + + + + + + ユーザ名のアルファベット順ではなく, + 課金額の低い順にリ ストを並べます. + + + + + + 課金データファイルにあるホスト名を無視します. + このオプショ ンを使用すると, ホスト + alpha のユーザ + smith とホスト + gamma のユーザ + smith は同一人物として扱われます. + この オプションが指定されない場合は, + 両者は別なユーザとして 扱います. + + + + + + /etc/printcap の + pc 項目で指定された値, または, + デフォルトの値 (2セント) に代わり, 紙1ページ, ま たは, + 1フィート当たりの価格を指定します. + price として, + 浮動小数点数を指定することができます. + + + + + + リストの並べる順番を逆順にします. + + + + + + 課金リストを作成し, + 課金データファイルを削除します. + + + + name + + ユーザ names + に対する課金情報のみを表示します. + + + + + &man.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 + + 課金額を決めるために, + &man.pac.8; は /etc/printcap ファ + イルの pc + 項目で指定された値 (デフォルト値は200, すなわち1 + ページ当たり2セント) + を使います. この項目で, 印字物に課金したい + と思う1ページ当たり, + または, 1フィート当たりの価格を100分の1セ + ント単位で指定します. + &man.pac.8; を オプション付きで起動 + すると, この値を置き換えることができます. + この オプショ + ンで指定する額の単位は, + 100分の1セント単位ではなく, ドル単位で + す. 例えば, 次の指定では, + 1ページ当たりの単価が1ドル50セントに + なります. + + &prompt.root; pac -p1.50 + + このオプションを使うと, + 実際の課金額を集計することができます. + + 最後に, pac -s + を起動すると, 課金情報は課金データ累計ファ + イルに保存されます. + このファイルの名前は, プリンタの課金データ + ファイルの後ろに + _sum を付けたものとなります. そして, 課 + 金データファイルは削除されます. 次に + &man.pac.8; が起動されると, + その時点までの累計金額を得るために, + 課金データ累計ファイルが読 + み込まれ, 通常の課金データファイルからの情報に + 加算されます. + + + + 印字されたページ数をどのように数えるか? + + 課金を, リモートホストからの印字でさえも, + 正確におこなうため には, + ジョブで使用された紙が何ページであるかを特定でき + る必要があります. このことは, プリンタ利用に対する課金 + をおこなう上の根本的な問題です. + + プレインテキストのジョブの場合, 問題を解決するのはさほ + ど難しくはありません. ジョブが何行であったかを数え, プ + リンタがサポートしている紙1ページに印字できる最大の行 + 数と比較すればよいのです. 重ね打ちするために利用される + ファイル中のバックスペース文字や, 物理的に複数の行に渡 + る長い論理行に対する取り扱いを + 忘れずにおこなってください. + + (「テキストフィ,ルタ + lpf」で紹介した) テキストフィルタ + lpf では, 課金をおこなうときに, + これらの取り扱いをおこなってくれます. 課 + 金をおこなうために必要なテキストフィルタを作成している方は, + lpf + のソースコードが参考になるでしょう. + + これに対して, 他のファイル形式の処理はどのようにすれば + よいのでしょうか. + + まず, DVI から LaserJet, または, DVI から PostScript + への変換の場合, フィルタが dvilj や + dvips の 出力メッセージを解析することで, + 何ページ分の変換がおこなわ れたかを知ることができます. + 他のファイル形式とその変換 プログラムに関しても, + 同様のことができるかもしれません. + + しかし, この方式には問題点があります. それは, 変換され + たページがすべて印字されるとは限らないということです. 例 + えば, プリンタが紙詰まりを起こしたり, トナー切れになっ たり, + はたまた, 爆発したりするかもしれません. そのよう + な状況により印字が途中で中止されたとしても, この方式で は, + ユーザは全ページ分の料金を課されてしまうのです. + + それでは, どのような対策をたてることができるのでしょう + か. + + 正確な + 課金をおこなうための唯一の確実な方法は, + 何 ページ印字したのかを知らせることができるプリンタを入手 + し, これをシリアルポートかネットワークに接続することで す. + ほとんどすべての PostScript プリンタではこの概念 + がサポートされています. 他のプリンタも同様です (Imagen + レーザプリンタをネットワーク接続するなど). それぞれの + プリンタのフィルタを, ジョブを印字した後で印字ページ数 + を得るように, 変更してください. そして, 課金情報はここ + で得られた値のみに + 基づいて記録してください. 行数 を数えたり, + エラーが生じやすいファイルの調査は必要とさ れません. + + もちろん, 気前よく印字料 + 金をすべて無料にすることもできます. + + + + + + 標準スプーラの代替品 + + このマニュアルを最初から通読されている方ならば, ここまでで, + FreeBSD 付属の LPD スプーリングシステムに関して知っておくべき + ことすべてを学ばれたことと思います. 多分, このシステムに + あるたくさんの欠点について認識できたことでしょう. すると, + “(FreeBSD 上で動作する) + スプーリングシステムには他にどのような + ものがあるのか”という疑問が自然と湧いてきます. + + 残念ながら, 著者は代替のスプーラを 2つ + だけしか探し出すこと ができませんでした. そして, + それぞれはほとんど同一のものです. 以下に, + 両システムの紹介をおこないます. + + + PLP (Portable Line Printer スプーリングシステム) + + PLP は Patrick Powell によって開発されたソフトウエアを + ベースにされており, インタネット規模のグループの開発者 + によって管理されていました. このソフトの主要サイトは「 + + ftp://ftp.iona.ie/pub/plp」です. + 「 + web page」にもあります. + + PLP は BSD LPD スプーラと極めて似ていますが, 以下のも + のを含むホストの機能が自慢です. + + + + ネットワークサポートの強化. ネットワーク接続され + るプリンタのサポートや NIS で管理可能な printcap ファ + イル, NFS マウントされるスプーリングディレクトリの機 + 能が組み込まれています. + + + + 洗練されたなキュー管理. 1つのキューで複数のプリン + タに対応可能. キュー間でジョブを転送したり, キューのリ + ダイレクトができます. + + + + リモートプリンタの制御機能 + + + + ジョブの優先順位付け + + + + 拡張性のあるセキュリティとアクセスオプション + + + + + + LPRng + + LPRng は, その称するところの意味は“LPR: the Next + Generation”ですが, PLP を完全に書き換えたものになっ + ています. Patrick Powell と Justin Mason (PLP の主要 + なの管理者) の共同で LPRng が作成されました. LPRng の + 主要サイトは「 + ftp://dickory.sdsu.edu/pub/LPRng」です. + + + + + + + 謝辞 + + このドキュメントの開発の手助けをして頂いた以下の方々に感謝の + 意を表わしたいと思います. + + + Daniel Eischen deischen@iworks.interworks.org + + 精読するためのあり余るほどの HP 用フィルタを提供してく + れたことに. + + + + &a.jehamby; + + 提供して頂いた Ghostscript から HP + へのフィルタに. + + + + 私の妻, Mary Kelly urquhart@argyre.colorado.edu + + 彼女と一緒にいるよりもずっと長い時間を FreeBSD のため + に費やすことを許してくれたことに. + + + + + + + diff --git a/ja_JP.eucJP/books/handbook/quotas/chapter.sgml b/ja_JP.eucJP/books/handbook/quotas/chapter.sgml new file mode 100644 index 0000000000..5707a188e8 --- /dev/null +++ b/ja_JP.eucJP/books/handbook/quotas/chapter.sgml @@ -0,0 +1,296 @@ + + + + ディスク クォータ + + 原作: &a.mpp; + 26 February 1996 . + + 訳者: &a.jp.mihoko;. + 6 September 1996 . + + クォータシステムは, + オペレーティングシステムのオプション機能で, + 各ファイルシステム上で ユーザやグループのメンバが使用するディスク + スペースの総量を規制したり, 作成できるファイルの個数を制限したりす + ることができます. この機能は, 各ユーザ, + 各グループごとに使用できる資源の総量を制限で + きるようなタイムシェアリングシステム上で + もっともよく使用されていま す. これは, 一人のユーザが, + 使用可能な全てのディスクスペースを使い + きってしまうことを防止できます. + + + ディスククォータを使用するための設定 + + ディスククォータを使用しようとする前に, + あなたが使用しているカー + ネルで, クォータが組み込まれているかどうかを + 確認する必要があります. + クォータを使用できるカーネルを構築するためには, + カーネルコンフィギュ レーションファイルに, + 次の行を追加してください: + + +options QUOTA + + 標準の GENERIC + カーネルでは, この機能は有効になっていません. + したがって, ディスククォータを使用するためには, + カーネルをコンフィグレーションして構築しなおし, そのカーネ + ルをインストールしなければいけません. カーネルの構築方法について + の詳細情報は, FreeBSD + カーネルのコンフィグレーション + を参照してください. + + 次に, ファイル /etc/sysconfig の中で, + ディスククォー + タ機能を、使用可能に設定する必要があります. + そのためには, 以下の行を変更します: + + +quotas=NO + + を次のように: + + +quotas=YES + + FreeBSD 2.2.2 以降では, /etc/rc.conf + でこの設定を行いま + す. また, 変数の変更は以下のようにします. + + +check_quotas=YES + + 最後に, 各ファイルシステム毎にディスククォータを設定する + ために, ファイル /etc/fstab + を編集する必要があります. + 全てのファイルシステムに対して, + ユーザ又はグループのいずれかのクォー タ + を設定することも, + ユーザとグループの両方のクォータを設定すること + もできます. + + ファイルシステム上で, ユーザ毎のクォータを設定するためには, + userquota オプションを, ファイル + /etc/fstab の中 で, + クォータを設定したいファイルシステムの + エントリののオプションフィー ルドに追加してください. + 例えば: + + +/dev/sd1s2g /home ufs rw,userquota 1 2 + + 同様に, グループのクォータを設定するためには, + groupquota オプションを + userquota の代わりに使用 してください. + ユーザとグループの両方のクォータを設定するためには, + 次のようにエントリを変更してください: + + +/dev/sd1s2g /home ufs rw,userquota,groupquota 1 2 + + デフォルトでは, クォータファイルは ファイルシステムの root + ディ レクトリ上に, ユーザとグループのクォータに対して それぞれ + quota.user と + quota.group という名前で置いてあり + ます. 詳細情報は, man fstab を御覧ください. + man + ページには, クォータファイルを別な場所に置くことができると書い + てありますが, さまざまな + クォータユーティリティのうち, この機能を + 適切に処理できていないものがあるので, + クォータファイルをデフォルト + の場所以外に置くことは勧められません. + + ここまで準備ができたら, 新しいカーネルを使って, + システムを立ち 上げ直してください. /etc/rc + ファイルが, 自動的に適切なコマンドを起動してくれ, あなたが + /etc/fstab + ファイルで使用可能にした全てのクォー + タに対して, 初期クォータファイルを作成してくれます. + したがって, 手動で サイズ 0 + のクォータファイルを作成する必要はあり ません. + + 通常の作業の流れでは, 手動で quotacheck, + quotaon, または quotaoff + コマンドを起動すべきで はありません. しかしながら, + それらの作業について詳しく知りたい場合に は, man + ページを御覧ください. + + + + クォータ制限の設定 + + 一旦システムのクォータを有効に設定したら, + 本当にクォータが使用可能になっていることを確かめてください. + これを簡単に確かめるには, + + &prompt.root; quota -v + + コマンドを実行してみて ください. ディスク使用量の総計と, + クォータが設定されている各ファイ + ルシステム毎の現在のクォータ制限が表示されます. + + さてこれで, edquota + コマンドによって, クォータ制限をか ける準備ができました. + + ユーザまたはグループが使用できるディスクスペースの総計や, + 作成 することのできるファイル数に制限をかけるための + オプションがいくつか あります. ディスクスペース容量規制 + (ブロッククォータ) または ファイ ル数制限 (iノードクォータ) + またはその両方を行うことができます. + これらの個々の制限は, 二つのカテゴリ, すなわち ハード制限とソ + フト制限, でもっと細かく分類できます. + + ハード制限は越えることができません. + ユーザがハード制限に到達す ると, 該当するファイルシステム上で + ディスクスペースを確保することが できなくなります. + 例えば, もしユーザがファイルシステム上で 500 ブ + ロックのハード的制限をされていて, かつ, 現在, 490 + ブロック使用して いたとすると, ユーザはあと 10 + ブロックしか確保できません. + 11 ブロック目を確保しようとすると, 失敗します. + + 一方, ソフト制限は, + 定められたある一定の期間以内ならば制限を越 + えることができます. この一定期間は, 猶予期間と呼ばれています. + 猶予期間のデフォルトは + 1週間です. もし、ユーザが猶予期間を過ぎても + ソフト制限を越えて使用し続けていた場合には, + ソフト制限はハード制限 に切り替わり, もはやこれ以上は, + ディスクスペースを確保できなくなり + ます. ユーザのディスク使用量がソフト制限以下に戻った時に, + 猶予期間 がリセットされます. + + 以下は, edquota + コマンドを実行した時の出力例です. edquota + コマンドが起動されると, EDITOR 環境変数 + で定義されたエディタ, または, EDITOR + 環境変数が設定されて いない場合には vi + エディタが起動され, クォータ制限を編集 + することができます. + + &prompt.root; 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行の表示が + 行われます. 1行は, ブロック制限に関する情報で, + もう1行は, i ノード + 制限に関する情報です. + クォータ制限の値を変更したい値に書き換えてく + ださい. 例えば, ユーザのブロック制限を, 50 ブロックまでのソ + フト制限と 75 ブロックまでのハード制限から, + 500 ブロックまでのソフ + ト制限と 600 ブロックまでのハード制限にしたい場合は, + 次のように書き換えます: + + +/usr: blocks in use: 65, limits (soft = 50, hard = 75) + + を次のように: + + +/usr: blocks in use: 65, limits (soft = 500, hard = 600) + + 新しいクォータ制限は, + エディタを終了した時に置き換えられます. + + uid の範囲によってクォータを設定する個とも可能です. + そのためには edquota + コマンドで, オプションを + 使用します. まずはじめに, + かけたいクォータ制限を, 一人のユーザに対 + して設定します. それから次のコマンドを実行します + edquota -p protouser startuid-enduid. + 例えば, もし, ユーザ test + がクォータ制限をかけられていた + とすると, 次のコマンドは, 同じ制限を, uid 10,000 から 19,999 + まで のユーザにかけることができます: + + &prompt.root; edquota -p test 10000-19999 + + uid の範囲によって制限をかけることができる機能は, 2.1 + がリリー スされたあとに追加されました. もし、2.1 + のシステム上で, この機能を 必要とする場合には, 新しい edquota + を入手する必要があります. + + 詳細情報は man edquota を御覧ください. + + + + クォータ制限およびディスク使用状況のチェック + + クォータ制限およびディスク使用状況をチェックするには, + quota または repquota + コマンドを使用することがで きます.quota + コマンドは, 各ユーザ, 各グループ毎のクォー + タ制限およびディスク使用状況をチェックすることができます. + スーパーユーザだけが, + 他のユーザまたは自分が所属していないグループに + 関するクォータ制限とディスク使用状況を調べることができます. + repquota + コマンドは, クォータが設定されているファイルシス テムに対する, + 全てのクォータ制限およびディスク使用状況の総計を表示 + します. + + 以下は, 2つのファイルシステム上で + クォータ制限がかけられているユー ザに対して 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 + コマンドによる出力では表示されません. + オプションを付けると, 上の例の /usr/var + ファ イルシステムのように, + これらのファイルシステムも表示します. + + + + * NFS ファイルシステム上でのクォータ + + このセクションはまだ作成中です. + + + + diff --git a/ja_JP.eucJP/books/handbook/security/chapter.sgml b/ja_JP.eucJP/books/handbook/security/chapter.sgml new file mode 100644 index 0000000000..42003d26dd --- /dev/null +++ b/ja_JP.eucJP/books/handbook/security/chapter.sgml @@ -0,0 +1,1901 @@ + + + + セキュリティ + + + DES, MD5, と Crypt + + 原作: &a.wollman; + 24 September 1995. + + 訳: &a.hanai; + 12 September 1996. + + UN*X システムにおいてパスワードを保護し, + 簡単に覗かれるのを防 ぐために, + 従来パスワードはある方法によりスクランブルされてきました. + ベル研の Unix 第7版に始まって以来, + パスワードはセキュリティの専門家がい うところの + “一方向ハッシュ関数” + というものを用いることにより暗号化されるようになりました. + つまり, 可能な限りのパスワード空間を検索するという強引な + 方法以外にそのオリジナルを得ることができない, + といった方法でパスワードは変換 されるのです. 不幸なことに, + その当時 AT&T の研究者たちが手に入れることができ + た唯一の暗号化方法は DES(Data Encryption Standard) + に基づいたものでし た. + これは営利企業にとっては大して問題ではありませんが, FreeBSD のよ + うにすべてのソースコードが自由に手に入る + オペレーティングシステムにとっ ては重大な問題となります. + なぜなら, 多くの政府は DES やその他の暗号化ソフ + トウェアが国境を越えることに + 制限をつけようとしているからです. + + ここで, FreeBSD チームは一つのジレンマに直面しました. + つまり, どうす れば法に触れることなく国外にあるそれらの UNIX + システムのすべてに互換性を持 たせることができるか, + ということです. 私たちは ``dual track approach'' を + 取ることに決めました. + 規制されていないパスワードスクランブラのみを含む + 配布用物件を作り, DES + に基づいたパスワードハッシュを付加ライブラリ + として分けて供給するのです. + パスワードをスクランブルさせる関数は, C ライブラリから + libcrypt と呼ばれる(それを実行する C 関数が + crypt と + いう名前だからです)別のライブラリへ移されました. FreeBSD 1.x + 及び 2.0 のリリース前のスナップショットでは, + その規制されていないスクランブラは Nate Williams + によって書かれた安全でない関数を使っていますが, 次の + リリースでは RSA Data Security 社の一方向ハッシュ関数の MD5 + を使う方法 に置き換えられました. + これらの関数はどれも暗号化を含んでいないため, + 合衆国から持ち出し, + 他の多くの国へ持ち込めるものであるとされています. + + 一方, DES + に基づいたパスワードハッシュ関数に関する作業もまた進行中 でした, + まず, 合衆国及び他の国で書かれたコードの同期をとりながら, + 合衆国の外で書かれた crypt + のあるバージョンが持ち込まれました. そしてライブラリは修正され, + 二つにわけられました. すなわち DES libcrypt + は一方向パスワードハッシュをおこなうのに必要なコード のみを含み, + それとは別の libcipher + は実際に暗号化をおこなう + ためのエントリポイントとして生成されました. + コンパイルされたライブラリに対 + して国外に持ち出す許可を得るのを簡単にするために, + コードはこのように分け られたのです. + + + <command>crypt</command> メカニズムを理解する + + あるパスワード文字列を作るのに, DES + に基づいたハッシュ関数を使っ たのか, + MD5に基づいたハッシュ関数を使ったのかは非常に簡単にわかります. + MD5 を使ったパスワード文字列は必ず + $1$ という文字 で始まります. + DESを使ったパスワード文字列はどんな特定の文字も持っていま + せんが, MD5を使ったパスワードよりも短く, + $ という文字 + を持たない64文字のアルファベットで構成されています. + したがって, ドル記号で 始まっていない比較的短い文字列は DES + を使ったパスワードである可能性が非常 に高いです. + + あなたのシステムで, + どちらのライブラリが使われているかを決めるの は, + スタティックにリンクされている init + のようなもの(その ようなプログラムに対する唯一の方法は + わかっているパスワードを試してみ + て動くかどうかを確認することです.) + を除いたほとんどのプログラムについ ては非常に簡単なことです. + crypt を使うようなプログラムは + libcrypt にリンクされています. + そしてそれぞれのライブラリに 対する libcrypt + は適切な実装へのシンボリックリンクとなってい ます. 例えば, DES + 版を使っているようなシステムにおいては次のようになって + います: + + &prompt.user; cd /usr/lib +&prompt.user; ls -l /usr/lib/libcrypt* +lrwxr-xr-x 1 bin bin 13 Sep 5 12:50 libcrypt.a -> libdescrypt.a +lrwxr-xr-x 1 bin bin 18 Sep 5 12:50 libcrypt.so.2.0 -> libdescrypt.so.2.0 +lrwxr-xr-x 1 bin bin 15 Sep 5 12:50 libcrypt_p.a -> libdescrypt_p.a + + MD5 に基づいたライブラリを使っているシステムにおいては, + 同じようなリンクが 見られるでしょうが, そのターゲットは + libdescrypt ではなく + libscrypt になっているでしょう. + + + + + S/KEY + + 原作: &a.wollman; + 25 September 1995. + + 訳: &a.jp.hino;. + 24 September 1996. + + S/KEY は一方向ハッシュ関数 (ここで述べているバージョンでは, + 過去と の互換性を保つために MD4 を用いています. S/KEY + の他のバージョンでは MD5 や DES-MAC を用いているものもあります) + を基にしたワンタイムパスワー ド方式です. S/KEY は, バージョン + 1.1.5 以降のすべての FreeBSD に標準的 に含まれています. S/KEY は + FreeBSD 以外の数多くのシステムの上でも利用 可能であり, + その実装の数も増えています. S/KEY ば Bell Communications + Research, Inc. の登録商標です. + + 以下の説明では, 三種類の異なる「パスワード」が使われます. + まず一つ 目は, あなたが普段使っている普通の UNIX スタイルの, + もしくは Kerberos でのパスワードです. ここではこれを + “UNIX パスワード” と呼ぶことにし ます. 二つ目は, + S/KEY の key プログラムによって生成され, + keyinit + プログラムとログインプロンプトが受け付ける, 一回限りの + パスワードです. ここではこれを + “ワンタイムパスワード” と呼ぶことにし ます. + 三つ目のパスワードは, key (と場合により + keyinit) + プログラムに対してユーザが入力する秘密のパスワードで, + ワンタイムパスワー ドを生成するのに使われます. ここではこれを + “秘密のパスフレーズ” もし くは単に + “パスフレーズ” と呼ぶことにします. (訳注: + ユーザが頭の中だ けにしまっておくべきものが, + この秘密のパスフレーズです. なお, 原文では + これをパスワードと表記していますが, + 混乱を避けるために訳文ではすべて “ + 秘密のパスフレーズ” に統一しています.) + + 秘密のパスフレーズは, UNIX + パスワードと同じである必要はありませんし, また UNIX + パスワードと何らかの関連性を持たなければならないということも + ありません (両者を同一に設定することは可能ですが, + お奨めしません). UNIX パスワードは長さが 8 + 文字に制限されています (訳注: FreeBSD で DES + を導入していない場合はもっと長いパスワードも認識されます). + これに対し, S/KEY + では秘密のパスフレーズを好きなだけ長くすることができます (訳注: + 実装上, `key' + コマンドなどのバッファ長で制限されてしまう可能性が あります. + 200文字程度に押えておいた方がよいでしょう :-). 筆者は 7 語か + らなる文を使っています. 通常の設定では, S/KEY システムは UNIX + のパスワー + ドシステムと完全に独立して動作するようになっています. + + S/KEY システムでは他に二種類のデータを使用します. 一つは + “シード (種)” または (混乱を招きますが) + “キー” と呼ばれるもので, (訳注: デ フォルトでは) + 二つの文字と五つの数字で構成されます. もう一つは + “シー ケンス番号 で, 1 以上の整数です. + シーケンス番号は特に指定しなければ 100以下です (訳注: + ``keyinit' プログラムでは 9999 + まで指定できま す). S/KEY + はここまでに述べたデータを利用してワンタイムパスワードを生 + 成します. その方法は, まずシードと秘密のパスフレーズを連結し, + それに対 してシーケンス番号の回数だけ一方向ハッシュ (RSA Data + Security, Inc. に よる MD4 セキュアハッシュ関数) + を繰り返し計算します. そしてその結果を 六つの英単語に変換します + (訳注: ハッシュ計算の後, 64ビットに収まるよう + にデータを処理したものが厳密な意味でのワンタイムパスワードです. + 通常は ユーザの便宜のために, この + 64ビットデータと六つの英単語との間で変換処 理をおこなっています) + . login プログラムと su + プログラム は, + 前回最後に受け付けられたワンタイムパスワードを記録しています. + そし て, その前回のワンタイムパスワードと, + ユーザが入力したワンタイムパスワー + ドを一回ハッシュ関数にかけた結果とが一致した場合に, + このユーザは認証さ れます. 一方向ハッシュ関数を使うことにより, + もし (ログイン等に成功した) + ワンタイムパスワードが一回盗聴されたとしても, + 次回以降に使われる複数の + ワンタイムパスワードを生成することは不可能です. + シーケンス番号はログイ ン (等) + が成功するたびに一つずつ減らされて, ユーザとログインプログラム + の間で同期が取られます. (シーケンス番号が 1 になったら, S/KEY + を再度初 期化する必要があります.) + + 次に, S/KEY 関連の四つのプログラムについて説明します. + key プ ログラムは, シーケンス番号と, + シードと, 秘密のパスフレーズを受け付けて, + ワンタイムパスワードを生成します. keyinit + プログラムは, S/KEY を初期化するのに使用され, + また秘密のパスフレーズやシーケンス番号やシー + ドを変更するためにも使用されます. このプログラムを実行するには, + 秘密の パスフレーズか, または, + シーケンス番号とシードとワンタイムパスワードの 一組かの, + どちらかが必要になります. keyinfo + プログラムは, /etc/skeykeys + というファイルを調べて, このプログラムを起動し + たユーザの現在のシーケンス番号とシードを表示します. 最後に, + loginsu + プログラムについてですが, これらは S/KEY の + ワンタイムパスワードを, (訳注:システムが) + ユーザを認証するものとして受 理する処理をおこないます. + login プログラムは, 指定された特定の + アドレスからの接続に対して, UNIX + パスワードの使用を認めなくする機能, 逆に言えば S/KEY + の利用を強制する機能も持っています. + + このドキュメントでは, 四種類の異なる操作について説明します. + 一つ目 は, keyinit + プログラムを信頼できる通信路上で利用する場合で, 一 番始めに + S/KEY を設定する操作や, 使い始めたあとで秘密のパスフレーズや + シードを変更する操作です. 二つ目は, keyinit + プログラムを信頼で きない通信路上で利用する場合で, + 操作の目的は一つ目と同じです. この場合 には + key プログラムを併用する必要があります. + 三つ目は, key プログラムを使い, + 信頼できない通信路を通じてログインする操 作です. 四番目は, + key プログラムを使って, 複数のワンタイムパス + ワードを一気に生成する操作です. + ここで生成した複数のワンタイムパスワー ドは, + メモしたり印刷したりして携帯し, 信頼できる通信路が一切ないところ + (例えば展示会場など) で利用することができます. (訳注: + ワンタイムパスワー ドを記録した紙をなくさないこと! + 電話番号やIPアドレス, ユーザ名を一緒に + メモしていたら最悪です!!) + + + 信頼できる通信路での初期化 + + 信頼できる通信路 (例えばあるマシンのコンソール画面など) + を利用して いるときに, S/KEY の初期化, S/KEY + の秘密のパスフレーズの変更, またはシー + ドの変更をおこなうことができます. そのためには, + まずあなた自身がログイ ンし, keyinit + コマンドを以下のようにパラメタなしで実行します: + + &prompt.user; keyinit +Updating wollman: ) この部分は始めて S/KEY を使 +Old key: ha73895 ) うときには表示されません. +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 wollman s/key is 99 ha73896 ) あとで説明します. +SAG HAS FONT GOUT FATE BOOM ) + + 上の例で出てきた事柄について説明しましょう. Enter + secret password: + というプロンプトに対してあなたが考えた秘密のパスフレーズを + 入力します (筆者は 7 + 単語以上の文を秘密のパスフレーズにしています). こ + の秘密のパスフレーズは後でログインするために + 必要になるものです. `ID' から始まる行は, S/KEY + における一回分のパラメタであり, あなたのログイ + ン名とシーケンス番号とシードです. (訳注: + `keyinit' コマンドは次回 + にログインするときに使われるパラメタを参考のために + ここで表示しま す. ) S/KEY を使ってログインするときには, + システム側が自動的にこれらの パラメタを表示してくれますから, + これらのパラメタを覚えておく必要は ありません. 最後の行が, + 今述べたパラメタと入力された秘密のパスフレー + ズから計算されたワンタイムパスワードです. この例を実行した後, + 次にログ インするときに打ち込むべきワンタイムパスワードが + これです. + + + + 信頼できない通信路での初期化 + + 信頼できない通信路を使って S/KEY を初期化, + または秘密のパスフレーズ やシードを変更するためには, + 信頼できる通信路として, その信頼できない通 + 信路とは別のものを用意する必要があります. + その信頼できる通信路は key + プログラムを実行するために必要となるもので, 例えばそれは, + あなたが信頼できる Macintosh + のデスクアクセサリや信頼できるマシンのシェ + ルプロンプトだったりするでしょう + (そこでの操作に関しては後述します). (訳注: + ここでの通信路とはマシンそのものになります. 信頼できるマシンと + は, 信頼できる人がしっかり管理しているマシンということです.) + 他に準備 しておくものとして, シーケンス番号 + (100は適切な値といえるでしょう) と, + 場合によっては自分で考えた, + またはランダムに生成されたシードがあります. あなたが S/KEY + を初期化しようとしているマシンへの通信路が, 信頼できな + いものである場合には keyinit -s + コマンドを以下のように使用しま す: + + + &prompt.user; keyinit -s +Updating wollman: +Old key: kh94741 +Reminder you need the 6 English words from the skey command. + ) `keyinit' コマンドが出力する注意です. 訳すと, + ) 注意 - skey コマンドの出力する 6 英単語が必要になります. +Enter sequence count from 1 to 9999: 100 ) ここを入力. +Enter new key [default kh94742]: ) リターンのみ入力. +s/key 100 kh94742 + + デフォルトのシード (keyinit + プログラムは困ったことにこれを key と + 読んでいるのですが, 混乱しないよう注意してください) + で構わなければ, リ ターンキーを押してください. 次に, + あらかじめ用意しておいた信頼できる通 信路 + (信頼できるマシンや信頼できる S/KEY デスクアクセサリなど) + へ移っ て, 先ほどと同じパラメタを入力します. + + $prompt.user; key 100 kh94742 +Reminder - Do not use this program while logged in via telnet or rlogin. +Enter secret password: ) ここで秘密のパスフレーズを入力します. +HULL NAY YANG TREE TOUT VETO + + ここで信頼できない通信路の方に戻って, + key コマンドが出力したワ + ンタイムパスワードをコピーして keyinit + プログラムに入力します. + + s/key access password: HULL NAY YANG TREE TOUT VETO +ID wollman s/key is 100 kh94742 +HULL NAY YANG TREE TOUT VETO + + 後は, 前章で説明したことと同様です. + + + + ちょっと寄り道: ログインプロンプトについて + + どうやってワンタイムパスワードを生成するかを説明する前に, + S/KEY を 使う場合のログインプロンプトを + 見ておいた方がよいでしょう. + + &prompt.user; telnet himalia +Trying 18.26.0.186... +Connected to himalia.lcs.mit.edu. +Escape character is '^]'. +s/key 92 hi52030 +Password: + + パスワードを要求する前に, + ログインプログラムがシーケンス番号とシードを + 表示していることがわかります. + この二つのパラメタを使ってワンタイムパ + スワードを計算することになります. + ここではまだ使っていませんが, 便利な + 機能がログインプログラムに備わっています: + パスワードプロンプトに対して, + 何も入力せずにリターンを押すとエコーモードに切り替わります. + つまりタイ プした文字がそのまま見えるようになるのです. これは + S/KEY のワンタイム パスワードを紙に印刷していた場合など, + ワンタイムパスワードを手で入力し + なければならない場合に特に役立つ機能です. + + このログインしようとしてるマシンが, + あなたが今使っているマシンから UNIX + パスワードを使ってログインすることができないように + 設定されている 場合があります. その場合には, + ログインプロンプトには S/KEY のワンタイ + ムパスワードの利用が必要であることを示す (s/key + required) という注釈が表示されます. + + + + ワンタイムパスワードを生成する + + 次に前章のログインプロンプトに対して入力するための + ワンタイムパスワー ドを生成しましょう. そのために, + 信頼できるマシンと key プログラ + ムを使用します. (key プログラムには DOS や + Windows の上で動くも の, + Macintoshのデスクアクセサリとして動くものなどもあります.) + コマンド ラインで key + プログラムを起動するときには, シーケンス番号とシー + ドを引数として指定します. 入力が面倒な人は, + ログインプロンプトに表示さ れたもののうちで + key からその行の最後までを, + そのままカットア ンドペーストすることもできます. + key プログラムの実行は以下のよ + うになります: + + &prompt.user; key 92 hi52030 ) 前章の例からペースト. +Reminder - Do not use this program while logged in via telnet or rlogin. +Enter secret password: ) 秘密のパスフレーズを入力. +ADEN BED WOLF HAW HOT STUN + + そして別のウィンドウで: + + s/key 92 hi52030 ) 前章の例の続き. +Password: ) ここでリターンキーを押した. + (turning echo on) +Password:ADEN BED WOLF HAW HOT STUN +Last login: Wed Jun 28 15:31:00 from halloran-eldar.l +[以下略.] + + 以上の手順は, 信頼できるマシンが利用できる場合 + のみに 使えるもっ とも簡単な方法です. + Java S/Key の key applet もあり, The Java + OTP Calculator からダウンロードして Java + をサポートするブラウザ上でローカルに + 実行することができます. + + + + 複数のワンタイムパスワードを生成する + + 都合によっては, + 信頼できるマシンや信頼できる通信路が一切確保できな + いようなところで S/KEY を使う必要があるでしょう. + このような場合には, key + コマンドを使って複数のワンタイムパスワードを一気に生成する + ことが可能です. + そして結果を紙に印刷して携帯していくことができます. 例 + えば: + + &prompt.user; key -n 25 57 zz99999 +Reminder - Do not use this program while logged in via telnet or rlogin. +Enter secret password: +33: WALT THY MALI DARN NIT HEAD +34: ASK RICE BEAU GINA DOUR STAG +[...] +56: AMOS BOWL LUG FAT CAIN INCH +57: GROW HAYS TUN DISH CAR BALM + + という引数によって 25 + 個のワンタイムパスワードの生成を要 求します. ここで + は, + 最後に表示されている (もっとも大き い) + シーケンス番号です. 残りのパラメタは前出の例と同様です. + 出力は普 通に使う順番とは + に出力されていることに注意してください (訳注: + 一番最初に使うワンタイムパスワードは + 一番最後に出力されたものです). こ + の結果をカットアンドペーストして lpr + コマンドを使って印刷すると よいでしょう. + もしあなたがセキュリティに偏執するなら, この結果を紙と鉛 + 筆を使って手で書き移した方がよいかもしれません. ここで, + 出力の各行はシー + ケンス番号とそれに対応する一回分のワンタイムパスワードです. + 消費済みの ワンタイムパスワードの行をペンで消していくと + 便利でしょう. + + + + UNIX パスワードの利用を制限する + + 設定ファイル /etc/skey.access + を使って UNIX パスワードの利 + 用を制限することができます. この場合の判断基準として, + ログインを受け付 + ける際のホスト名, ユーザ名, 端末のポート, IP + アドレスなどが利用できま + す. この設定ファイルの詳細に関してはマニュアル + &man.skey.access.5; を + ご覧ください. マニュアルにはこの機能に関わるセキュリティに + ついて, いく + つかの警告が記述してあります. この機能を使って + セキュリティを高めようと + するのならば絶対にこのマニュアルを読んでください. + + もし /etc/skey.access + ファイルが存在しないならば (FreeBSD + をインストールした直後の状態では存在しません), + すべてのユーザが UNIX パスワードを利用することができます. + 逆に, もしファイルが存在するならば, + /etc/skey.access + ファイルに明示的に記述されていない限り, すべ てのユーザは + S/KEY の利用を要求されます. どちらの場合においても, その + マシンのコンソールからはいつでも UNIX + パスワードを使ってログインするこ とが可能です. + + 以下によく使われるであろう + 三種類の設定を含む設定ファイルの例を示し ます: + + +permit internet 18.26.0.0 255.255.0.0 +permit user jrl +permit port ttyd0 + + はじめの行 (permit internet) で, telnet + などで接続するときの IP のソースアドレス (注意: + これは偽造されるおそれがあります) が特定の値と + マスクに一致している場合に, UNIX + パスワードの利用を許可することを指定 しています. + この設定自体はセキュリティを高めるための機能ではありません. + そうではなく, ログインの権利を持つ許可されたユーザに対して, + 現在そのユー + ザが使っているネットワークが信頼できないと考えられるので S/KEY + を使う べきである, + ということを気づかせるための機能であると考えてください. + + 二行目 (permit user) によって, + ある特定のユーザに対して, い つでも UNIX + パスワードの利用を許可するように指定しています. 一般的には + この設定をおこなうべきではありません. key + プログラムがどうして も使えない環境にいる人や, + ダム端末しかない環境にいる人, または何度教え + ても聞く耳を持たないような人を + サポートする必要がある場合にのみ設定をお + こなってください. + + 三行目 (permit port) によって, + ある特定の端末ポートからログ + インしようとするすべてのユーザに対して UNIX + パスワードの利用を許可する ように指定しています. + この設定はダイヤルアップ回線に対する設定として利 + 用できるでしょう. + + + + + Kerberos + + 原作: &a.markm; + (&a.md; からの寄稿に基づいています). + + 訳: &a.jp.arimura;. + + Kerberosは, + サーバのサービスによってユーザが安全に認証を受けられる + ようにするための, ネットワークの付加システム及びプロトコルです. + リモートログイン, リモートコピー, + システム間での安全なファイルのコピ + ーやその他のリスクの高い仕事がかなり安全に, + そしてこれまでより制御 できるようになります. + + 以下の文章は, + FreeBSD用として配布されているKerberosをセットアップ + する際のガイドとして読むことができます. しかし, + 完全な説明が必要な場合には, マニュアルページを読んだ方がよい + でしょう. + + FreeBSDのKerberosは, + オリジナルの4.4BSD-Liteの配布に含まれている ものではなく, + FreeBSD 1.1.5.1のときに移植されたeBonesです. + これはアメリカ/カナダの外で作成されており, + これら以外の国の人々にも 手に入れられるものです. + + このソフトウェアを合法的な配布物として得るために, アメリカも + しくはカナダのサイトから + 持ってこないでください. でないと, + そのサイトが大変な問題に巻き込まれます. + 合法的な配布は, 南アフリカのftp.internat.freebsd.orgや, FreeBSD + の公式ミラーサイトから入手することができます. + + + 初期データベースの作成 + + この作業はKerberosサーバだけでおこないます. まず, + 古いKerberosの データベースが存在しないことを確認してください. + ディレクトリ/etc/kerberosIVに移って, + 次のファイルだけが 存在することをチェックします: + + &prompt.root; cd /etc/kerberosIV +&prompt.root; 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 + というファイルを次のように編集してください: + + &prompt.root; 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は次のようになります: + + &prompt.root; 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コ + マンドを次のように実行してください: + + &prompt.root; 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コマンドを使用します. + + &prompt.root; kstash + +Enter Kerberos master key: + +Current Kerberos master key version is 1. + +Master key entered. BEWARE! + + これで暗号化されたマスタパスワードが + /etc/kerberosIV/master_key + に保存されました. + + + + すべてが動くようにするための設定 + + Kerberosを導入する それぞれの + システムのデータベースに, 2つ のprincipal (主体名) + を追加する必要があります. その名前は + kpasswdrcmdです. + これら2つのprincipalは, 個々 のシステムにおいて, + システム名と同じ名前のインスタンスと組にして作成 + されます. + + これらの kpasswd と + rcmd というデーモンによって, 他の + システムからKerberosのパスワードを変更したり, + rcprlogin, + rshといったコマンドを実行したりできるよ + うになります. + + それでは実際にこれらのエントリを追加しましょう: + + &prompt.root; 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: <---- 何も入力しないと終了します + + + + サーバファイルの作成 + + 次に, 各マシンにおけるサービスを定義している, + すべてのインスタンス を展開します. + これにはext_srvtabというコマンドを使用しま + す. このコマンドで作成されるファイルは, Kerberosの各クライアン + トの/etc/kerberosIVディレクトリに + 安全な方法でコピーまたは + 移動する必要があります. このファイルはそれぞれのサーバとクラ + イアントに存在しなければならず, + またKerberosの運用において重要なも のです. + + &prompt.root; ext_srvtab grunt + +Enter Kerberos master key: + +Current Kerberos master key version is 1. + +Master key entered. BEWARE! +Generating 'grunt-new-srvtab'.... + + このコマンドは一時的なファイルを作成するだけです. + ファイル名をすべ てのサーバが読めるような + srvtab という名前に変更しな + ければなりません. + mvコマンドを用いてシステムの場所に移動 + してください. + + &prompt.root; mv grunt-new-srvtab srvtab + + そのファイルがクライアントに配るためのもので, + ネットワークが安全で はないと思われる場合には, + client-new-srvtab + を移動 + 可能なメディアにコピーして物理的に安全な方法で運んでください. + クラ + イアントの/etc/kerberosIVディレクトリで, + 名前を srvtabに変更し, + modeを600にするのを忘れないでください: + + &prompt.root; mv grumble-new-srvtab srvtab +&prompt.root; chmod 600 srvtab + + + + データベースへのユーザの追加 + + ここで, + ユーザのエントリをデータベースに追加する必要があります. + 始めに, + ユーザjaneのエントリを作成してみましょう. + kdb_edit + を用いて次のように作成してください: + + &prompt.root; 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: <---- 何も入力しないと終了します + + + + すべてのテスト + + まず始めにKerberosデーモンを起動する必要があります. + /etc/rc.conf + ファイルを正しく編集してあれば, マシンを再 + 起動することでに自動的にデーモンが起動します. + これはKerberosサー バでのみ必要です. + Kerberosクライアントは/etc/kerberosIVか + ら必要なものを自動的に入手します. + + &prompt.root; 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 +&prompt.root; 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コマンドで得ることができます: + + &prompt.user; kinit jane +MIT Project Athena (grunt.grondar.za) +Kerberos Initialization for "jane" +Password: + + klist コマンドを用いてトークンを見て, + きちんとチケットを持って いるかどうか確認してください: + + &prompt.user; 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 + データベースに対して認証されるかどうかチェックして + ください: + + &prompt.user; passwd +realm GRONDAR.ZA +Old password for jane: +New Password for jane: +Verifying password +New Password for jane: +Password changed. + + + + <command>su</command>特権の追加 + + root権限が必要なユーザは誰でも, + suコマンドのパス + ワードをユーザ毎に別のもの + として持つことができます. + rootsu + できる権利を与えられたidを追加します. これは, + principalに付いているroot + というインスタンスに よって制御されています. + kdb_editを用いて + jane.rootというエントリを + Kerberosデータベースに作成します: + + &prompt.root; 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: <---- 何も入力しないと終了します + + 実際にトークンをもらって, + ちゃんと働いているかどうか確認しましょう: + + &prompt.root; kinit jane.root +MIT Project Athena (grunt.grondar.za) +Kerberos Initialization for "jane.root" +Password: + + ここでrootユーザの .klogin + ファイルにユーザを追加する必要が あります. + + &prompt.root; cat /root/.klogin +jane.root@GRONDAR.ZA + + suしてみましょう: + + &prompt.user; su +Password: + + どのトークンを持っているか見てみましょう: + + &prompt.root; 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 + + + + 他のコマンドの使用 + + ここまでの例では, jane という principal + を root とい + うインスタンス付きで作成しました. + これはユーザと同じ名前をprincipalと しており, + Kerberosのデフォルトの値です; + <username>.root + という形式の + <principal>.<instance>で, + 必要なエント + リがrootのホームディレクトリの + .kloginファイルに あれば, + <username>がrootに + suすることができま す. + + &prompt.root; cat /root/.klogin +jane.root@GRONDAR.ZA + + 同様に, ユーザのホームディレクトリの + .kloginファイルに次の + ような行がある場合には: + + &prompt.user; cat ~/.klogin +jane@GRONDAR.ZA +jack@GRONDAR.ZA + + jane または jack + という名前で (前述のkinit によって) + 認証されている GRONDAR.ZA + という管理領域のユーザ なら誰でもrlogin や + rsh, rcp等によってこ + のシステム (grunt) + のjaneのアカウントまたはファ + イルにアクセスできます. + + 例えば, Janeが他のシステムにKerberos + を用いてloginします: + + &prompt.user; kinit +MIT Project Athena (grunt.grondar.za) +Password: +&prompt.user; 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 + をインスタンスなしで設定してあ ります. + + &prompt.user; kinit +&prompt.user; 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 + + + + + ファイアウォール + + 原作: &a.gpalmer;, &a.alex;. + + 訳: &a.jp.saeki;. + 11 November 1996. + + ファイアウォールは, + インターネットに参加している人はもちろんのこと, + プライベートネットワークのセキュリティ向上のための + アプリケーションを 探している人にとっても, + ますます興味深くなりつつある分野です. + このセクションではファイアウォールとは何か, + ファイアウォールの使用法, + そしてファイアウォールを構築するために FreeBSD のカーネルで + 提供されているファシリティ (機能) + の使用法について説明したいと思います. + + + 社内のネットワークと “巨大かつ信頼のおけない + インターネット” との間にファイアウォールを構築することで + セキュリティ上のすべての問題が解決できると考える人がいます. + ファイアウォールはセキュリティ上の問題を + 解決する助けになる場合もありますが, + 充分な設定がなされていないファイアウォールは, + まったくファイアウォールを + 持たない場合よりもセキュリティ上の危険を増大させてしまいます. + ファイアウォールにできることは, + あなたのシステムにもう一つのセキュリティ層を + 追加することだけで, + 本気でアタックをしかけてくるクラッカーが内部ネットワークに + 侵入するのを妨げることはできません. + ファイアウォールを侵入不可能と過信して + 内部のセキュリティをおろそかにすることは, + 単にクラッカーの仕事を少し簡単にするだけでしか + ありません. + + + + ファイアウォールとは何か ? + + 現在インターネットで普通に使用されている + ファイアウォールには 二つの異なるタイプがあります. 一つは, + 厳密には パケットフィルタリングルータ + と 呼ばれるタイプのものです. これはマルチホームのホストマシン + (複数の ネットワークに接続されているマシン) のカーネルが, + ある規則にしたがって + パケットを転送したりブロックしたりするものです. もう一つは, + proxy (代理) サーバ + として知られているタイプのものです. これは, + おそらくはマルチホームのホストマシン上で, + カーネルによるパケット転送を 禁止して, + デーモンにより認証の提供とパケットの転送とを + おこなうものです. + + 二つのタイプのファイアウォールを組み合わせて使用して, + 特定のマシン ( 要塞ホスト と呼ばれる) + だけが パケットフィルタリングルータを通して内部ネットワークへ + パケットを送ることができるよう設定している + サイトがしばしば存在します. proxy (代理) + サービスは通常の認証メカニズムよりもセキュリティを + 強化してある 要塞ホストで動作させます. + + FreeBSD は (IPFW + として知られる) カーネルパケットフィルタ込みで + 提供されています. このセクションの後の方では, + このフィルタについての 説明を集中しておこないます. + サードパーティから提供されるソフトウェアを使用することにより, + Proxy サーバを FreeBSD 上に構築することができます. しかし, + 現在入手可能な proxy サーバは + たいへんバラエティに富んでいるので, + このドキュメントでそれらすべてを + カバーすることは不可能です. + + + パケットフィルタリングルータ + + ルータとは, 二つまたはそれ以上のネットワークの間で + パケットの転送をおこなう マシンのことです. + パケットフィルタリングルータは, そのカーネルの内部に, + 一つ一つのパケットをルールリストと比較して + 転送するかしないかを決める 特別なコードを持っています. + 最近の IP ルーティングソフトウェアのほとんどは, 内部に + パケットのフィルタリングをおこなうためのコードを持っていて, + デフォルトでは すべてのパケットを転送するようになっています. + このフィルタを有効にするためには, + パケットの通過を許すべきかどうかを決める + ルールを自分で定義する必要があります. + + パケットを通すべきか通すべきでないかを決めるために, + パケットヘッダの内容にマッチするものが + ルールリストから探されます. マッチするルールが見つかると, + ルールアクションが実行されます. ルールアクションには, + パケットを捨てる, パケットを転送する, + またはパケットの発信元に ICMP + メッセージを送り返すというものがあります. + ルールの検索は先頭から順番におこなわれ, + 通常は最初にマッチしたものだけが 適用されます. そのため, + このルールリストは “ルールチェーン” + と呼ばれることもあります. + + パケットマッチングの基準は使用するソフトウェアに + よって異なりますが, 通常はパケットの発信元 IP アドレス, + 宛先 IP アドレス, 発信元ポート番号, 宛先ポート番号 + (ポート番号はポートをサポートするプロトコルの場合のみ), + パケットタイプ (UDP, TCP, ICMP など) + に基づくルールを指定することができます. + + + + Proxy サーバ + + Proxy サーバとは通常のシステムデーモン (telnetd, ftpd + など) を 特別なサーバで置き換えたマシンのことです. + これらのサーバは, + 通常は中継をおこなって特定方向への接続だけを許すため, + proxy サーバ と呼ばれます. (例えば) + proxy telnet + サーバをファイアウォールホストで走らせておきます. + 外部からユーザがファイアウォールに対して telnet + を実行すると, proxy telnet サーバが応答して, + 何らかの認証メカニズムを実行します. これを通過した後で, + 内部ネットワークへのアクセスがおこなえるように なるのです. + (内部ネットワークからの信号は proxy + サーバがかわりに受け取り, 外へ向けて送り出します.) + + Proxy サーバは通常, + 普通のサーバより堅固に構築されていて, しばしば + “使い捨て” パスワードシステムなどを含む, + 多様な認証メカニズムを持っています. + “使い捨て”パスワードシステムとは, + どういうものなのでしょうか. 仮に誰かが何らかの方法で, + あなたが使用したパスワードを手に入れたとします. しかし, + 一度使用したことで, + そのパスワードは既に無効になっているのです. ですから, + そのパスワードをもう一度使用したとしても, あなたのシステムへ + アクセスすることはできないというわけです. + これらのサーバは中継をおこなうだけで, + 実際のところサーバホスト自身への + アクセスをユーザに許してはいません. そのため, + 何者かがセキュリティシステムに + 侵入用の裏口を取り付けることは, + より困難になっています. + + proxy サーバはアクセス制限の方法をいくつも持っていて, + 特定のホスト + だけがサーバへのアクセス権を得ることができるように + なっていることがあり ます. + そして目的のマシンと通信できるユーザを制限するように + 設定することもできます. もう一度言いますが, + どんなファシリティ (機能) が使えるかは, どんな proxy + サービスをおこなうソフトウェアを選ぶかに大きく + 依存します. + + + + + IPFW で何ができるか + + FreeBSD とともに配布されている + IPFW は, カーネル内部にあって + パケットのフィルタリングとアカウンティングを + おこなうシステムであり, + ユーザ側のコントロールユーティリティである &man.ipfw.8; を + 含んでいます. ルーティングの決定をおこなう際に, + これらは互いに協力して, + カーネルで使用されるルールを定義したり, + 現在使用されているルールを + 問い合わせたりすることができます. + + IPFW + は互いに関連する二つの部分からなっています. + ファイアウォールセクションは + パケットフィルタリングをおこないます. また, IP + アカウンティングセクションはファイアウォールセクションのものと + 似たルールに基づいてルータの使用を追跡します. これにより, + (例えば) 特定のマシンからルータへのトラフィックがどのくらい + 発生しているか調べたり, どれだけの WWW (World Wide Web) + トラフィックが + フォワードされているかを知ることができます. + + IPFW は, + ルータではないマシンにおいても入出力コネクションの + パケットフィルタリングのために + 使用することができるように設計されています. これは一般的な + IPFW + の使用法とは異なる特別な使い方ですが, + こういった状況でも同じコマンドと + テクニックが使用されます. + + + + FreeBSD で IPFW を有効にする + + IPFW + システムの中心となる部分はカーネル内部にあります. そのため, + どのファシリティ (機能) を必要とするかによって, 一つまたは + それ以上のオプションをカーネルコンフィグレーション + ファイルに追加し, + カーネルを再コンパイルする必要があるでしょう. + カーネルの再コンパイル方法の詳細については, カーネルコンフィグレーション + を参照してください. + + 現在, IPFW + に関係するカーネルコンフィグレーションオプションは + 三つあります: + + + options IPFIREWALL + + パケットフィルタリングのためのコードを + カーネルに組み込みます. + + + + + options IPFIREWALL_VERBOSE + + &man.syslogd.8; を通じて + パケットのログを取るためのコードを有効にします. + フィルタルールでパケットのログを取るように指定しても, + このオプションが指定されていなければ, + ログを取ることはできません. + + + + + options IPFIREWALL_VERBOSE_LIMIT=10 + + &man.syslogd.8; を通じて + ログを取るパケットの数をエントリ毎に制限します. + 敵対的な環境においてファイアウォールの + 動作のログを取りたいけれど, + syslog の洪水によるサービス拒絶攻撃に対し + 無防備でありたくないという場合に, + このオプションを使用したいと思うことが + あるかもしれません. + + チェーンエントリのログが指定された制限数に達すると, + そのエントリに関するログ取りは停止されます. + ログ取りを再開するには, &man.ipfw.8; + ユーティリティを使用して + 関連するカウンタをリセットする必要があります: + + &prompt.root; ipfw zero 4500 + + 4500 とは, + ログ取りを続行したいチェーンエントリの番号です. + + + + + 以前のバージョンの FreeBSD は + IPFIREWALL_ACCT というオプションを + 持っていました. しかし, + ファイアウォールコードがアカウンティングファシリティ (機能) を + 自動的に含むようになったため, + 現在では使用されることはなくなっています. + + + + IPFW の設定 + + IPFW ソフトウェアの設定は + &man.ipfw.8; ユーティリティを + 通じておこないます. このコマンドの構文は非常に + 複雑に見えますが, + 一旦その構造を理解すれば比較的単純です. + + このユーティリティでは今のところ四つの異なる + コマンドカテゴリが 使用されています: それは追加 / 削除, 表示, + フラッシュ, およびクリアです. 追加 / + 削除はパケットの受け入れ, 拒絶, ログ取りをどのようにおこなうか + というルールを構築するのに使用します. 表示はルールリスト + (またはチェーン) と (アカウンティング用) パケットカウンタの + 内容を調べるのに使用します. + フラッシュはチェーンからすべてのエントリを + 取り除くのに使用します. + クリアは一つまたはそれ以上のアカウンティングエントリを + ゼロにするのに 使用します. + + + IPFW ルールの変更 + + この形式での使用法は: + + ipfw + -N + コマンド + index + アクション + log + プロトコル + アドレス + オプション + + + + この形式で使用する際に有効なフラグは一つだけです: + + + -N + + アドレスやサービス名を + 文字列に変換して表示します. + + + + + コマンド + は一意である限り短縮可能です. 有効な コマンド + は: + + + add + + ファイアウォール / アカウンティングルールリストに + エントリを追加します. + + + + delete + + ファイアウォール / + アカウンティングルールリストから + エントリを削除します. + + + + + 以前のバージョンの IPFW では, + ファイアウォールエントリと + パケットアカウンティングエントリが別々に利用されていました. + 現在のバージョンでは, それぞれのファイアウォールエントリ毎に + パケットアカウンティングエントリが備えられています. + + index が指定されていると, + エントリはチェーン中の 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) の + 場合にだけ指定可能です. + + は必須ではなく, + 特定のインターフェースを通ってきたパケット + だけにマッチするように, IP アドレスまたはローカル IP + インターフェースの ドメイン名, またはインターフェース名 + (例えば ed0) を + 指定することができます. + インターフェースユニット番号はオプションで, + ワイルドカードで指定することが できます. 例えば, + ppp* はすべてのカーネル PPP + インターフェースに マッチします. + + address/mask の指定は: + + address + + または + + address/mask-bits + + または + + address:mask-pattern + + + IP + アドレスのかわりに有効なホスト名を指定することも可能です. + + はアドレスマスクで上位何ビットを1にするべきかを + 示す十進数値です. 例えば次の指定, + 192.216.222.1/24 はクラス C のサブネット + (この場合 192.216.222) の任意のアドレスにマッチする + マスクを作成します. + + は与えられたアドレスと 論理 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 時間超過 + (&man.traceroute.8; で使用されているように, TTL + 満了を示すのに使用されます) です. + + + + + + + IPFW ルールリストの表示 + + この形式での使用法は: + + ipfw + -a + -t + -N + l + + + + この形式で使用する際に有効なフラグは三つあります: + + + -a + + リスト表示の際にカウンタの値も表示します. + このオプションは アカウンティングカウンタの + 内容を見る唯一の手段です. + + + + -t + + 各チェーンエントリが最後に + マッチした時刻を表示します. この時刻表示は + &man.ipfw.8; ユーティリティで使用される入力形式と + 互換性がありません. + + + + -N + + (可能であれば) + アドレスやサービス名を文字列に変換して表示します. + + + + + + + IPFW ルールのフラッシュ + + チェーンをフラッシュするには: + + ipfw + flush + + + + カーネルに固定されているデフォルトルール (インデックス + 65535 番) 以外の, + ファイアウォールチェーンの中のすべてのエントリを削除します. + デフォルトではすべてのパケットが拒絶されるので, + 一旦これを実行すると, + パケットを許可するエントリがチェーンに追加されるまで, + あなたのシステムがネットワークから切り放されてしまいます. + そのため, + ルールのフラッシュをおこなうときは注意が必要です. + + + + IPFW パケットカウンタのクリア + + 一つまたはそれ以上のパケットカウンタをクリアするためには: + + ipfw + zero + index + + + + index が指定されていなければ, + すべてのパケットカウンタが クリアされます. + index が指定されていれば, + 特定のチェーンエントリだけが クリアされます. + + + + + ipfw に対するコマンドの例 + + このコマンドはルータを介して転送される, ホスト evil.crackers.org から ホスト nice.people.org の telnet ポートへの + すべてのパケットを拒絶します: + + &prompt.root; ipfw add deny tcp from evil.crackers.org to nice.people.org 23 + + 次の例は, ネットワーク crackers.org (クラス C) 全体から + マシン nice.people.org + (の任意のポート) への 任意の TCP トラフィックを拒絶し, + ログを取ります. + + &prompt.root; ipfw add deny log tcp from evil.crackers.org/24 to nice.people.org + + あなたの内部ネットワーク (クラス C のサブネット) に対する + X セッションを 張れないようにする場合, + 以下のコマンドで必要なフィルタリングがおこなえます: + + &prompt.root; ipfw add deny tcp from any to my.org/28 6000 setup + + アカウンティングレコードを見るには: + + &prompt.root; ipfw -a list + + または短縮形式で + + &prompt.root; ipfw -a l + + 最後にチェーンエントリがマッチした + 時刻を見ることもできます. + + &prompt.root; ipfw -at l + + + + パケットフィルタリングファイアウォールの構築 + + + 以下の提案は, ただの提案にすぎません: + 必要な処理はそれぞれのファイアウォールで異なるため, + あなた独自の要求にあったファイアウォールを構築する方法を + ここで述べることはできないのです. + + + 最初にファイアウォールをセットアップするとき, + コントロールされた環境でファイアウォールホストの + 設定がおこなえるような + テストベンチセットアップが用意できない場合には, + カーネルのログ取りを + 有効にしてログ取り版のコマンドを使用することを + 強くおすすめします. そうすることで, + 大した混乱や中断なしに問題となる範囲の特定と処置を + 素早くおこなうことができます. + 初期セットアップフェーズが完了してからであっても, + アタックの可能性のあるアクセスをトレースしたり, + 要求の変化に応じてファイアウォールルールを + 変更したりできるので, `deny' + に対するログ取りをおこなうことをおすすめします. + + + accept + コマンドのログ取りをおこなっていると, + ファイアウォールをパケットが一つ通過する毎に 1 + 行のログが生成されるため 大量の + ログデータが発生します. そのため, 大規模な ftp/http + 転送などをおこなうと, システムが非常に 遅くなってしまいます. + また, パケットが通過するまでにカーネルにより + 多くの仕事を要求するため, パケットのレイテンシ (latency) + を増加させてしまいます. syslogd + もログをディスクに記録するなど, より多くの CPU タイムを + 使用し始め, 実に容易に /var/log + が置かれているパーティションを + パンクさせてしまう可能性があります. + + + 現状では, FreeBSD + はブート時にファイアウォールルールをロードする + 能力を持っていません. 私は /etc/netstart + スクリプトにロードをおこなうスクリプトを + 追加することをおすすめします. IP + インターフェースの設定がおこなわれる前に + ファイアウォールの設定がおこなわれるように, netstart + ファイル中の 充分に早い位置にルールをロードする + スクリプトを配置してください. こうすることで, + ネットワークがオープンな間は常に抜け道が塞がれている + ことになります. + + ルールをロードするために使用するスクリプトは, + あなたが作成しなければなりません. 現在のところ + ipfw は 1 コマンドで複数のルールを + ロードするユーティリティをサポートしていません. + 私が使用しているシステムでは以下のようにしています: + + &prompt.root; ipfw list + + ファイルに現在のルールリストを出力し, + テキストエディタを使用して すべての行の前に + ipfw と書き足します. こうすることで, + このスクリプトを /bin/sh に与えてルールをカーネルに再読み込み + させることができます. + これは最も効率的な方法とはいえないかもしれませんが, + きちんと動作しています. + + 次の問題は, ファイアウォールが実際には何を する + べきかです ! + これは外部からそのネットワークへのどんなアクセスを許したいか, + また内部から外界へのアクセスを + どのくらい許したいかに大きく依存します. + いくつか一般的なルールを挙げると: + + + + 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 から 入手可能です. + ftp://ftp.cert.org/pub/tech_tips/packet_filtering + + 前にも述べたように, これはただの ガイドライン + にすぎません. + ファイアウォールでどのようなフィルタルールを使用するかは, + あなた自身が 決めなければなりません. + これまでのアドバイスにしたがったにも関わらず, + 誰かがあなたのネットワークに 侵入してきたとしても, + 私は「いかなる」責任もとることはできません. + + + + + diff --git a/ja_JP.eucJP/books/handbook/serialcomms/chapter.sgml b/ja_JP.eucJP/books/handbook/serialcomms/chapter.sgml new file mode 100644 index 0000000000..20b76739bc --- /dev/null +++ b/ja_JP.eucJP/books/handbook/serialcomms/chapter.sgml @@ -0,0 +1,2350 @@ + + + + シリアル通信 + + + シリアル接続の基礎 + + Assembled from FAQ. + + このセクションには, + シリアルポートについての一般的な情報が書かれていま す. + あなたが求めている情報が, もしここで見つからなかった場合には, + ハン ドブックの端末とダイアルアップのセクションを見てください. + + + ttydX + (または cuaaX) + デバイスは, アプリケーション上 + でシリアルポートをオープンする時に使用する, + 標準的なデバイスです. プロセスがデバイスをオープンする際, 端末 + I/O 設定の デフォルトセットが使用されます. これらの設定内容は, + 次のコマンドで確認することができます. + + &prompt.root; stty -a -f /dev/ttyd1 + + このデバイスの設定を変更した場合, その設定はデバイスが + クローズされるまで有効です. デバイスが再びオープンされる時, + デフォルトの設定値に戻ります. + デフォルトの設定を変更するためには, + “初期状態”を設定した + いデバイスをオープンして調節することができます. 例えば, ttyd5 + というデバイスに対して, デフォルトで CLOCAL + モードを ON にして, 8 bits の設定をおこない, + XON/XOFF + フロー制御を行うように設定したい場合は, 次のようにします. + + + &prompt.root; stty -f /dev/ttyid5 clocal cs8 ixon ixoff + + このコマンドを記述するのに適しているファイルは, + /etc/rc.serial です. + アプリケーションがttyd5 + をオープンするときに, + デフォルトでこの設定をおこなうようになります. これらの設定は, + 好きなように変更することができます. + + また, “固定状態”のデバイスに調節を行うことで, + ある一定の設定が + アプリケーションに変更されることを防ぐこともできます. 例えば, + ttyd5 のスピードを 57600 bps + に固定したい場合には, 次のようにします. + + &prompt.root; stty -f /dev/ttyld5 57600 + + これで, ttyd5 をオープンして, + シリアルポートの転送スピードを + 変更しようとするアプリケーションは 57600 bps + に固定されるでしょう. + + 本来, デバイスの初期状態を変更したり設定を固定するのは, + root だけが行うべきです. + MAKEDEV + スクリプトがデバイスエントリを作成する時は, + これをおこないません. + + + + シリアル端末 + + 原作: &a.kelly; + 28 July 1996 + + 訳: &a.max; + + シリアル端末を利用することで, + コンピュータのコンソールのそばにいないと きや, + 手近にネットワーク接続されているコンピュータがないときでも, + FreeBSD の機能を便利に, かつ安価に利用することができます. + ここでは, FreeBSD + にシリアル端末を接続する方法を解説します. + + + 端末の種類と利用方法 + + もともと Unix システムにはコンソールがありませんでした. + ユー ザはコンピュータのシリアル + ポートに接続された端末からログインして + プログラムを利用していました. + ちょうどモデムと通信ソフトを使ってリモート + のコンピュータにログインし, テキスト + ベースのプログラムを利用するのと よく似ています. + + 最近の PC は, + 高品質の画像を表示できるコンソールを搭載していま すが, + ほとんどすべての Unix 系 OS には未だにシリアル + ポートを使ってログ インするための機能があり, FreeBSD + でもこの機能がサポートされています. + 現在使用されていないシリアル + ポートに端末を接続することでシステムに ログインし, + 通常はコンソールや Xウィンドウ システムの + xterm のウィ ンドウ上で起動しているテキスト + ベースのプログラムであれば何 + でも利用することができます. + + 職場での利用ということで考えるならば, FreeBSD + が動作しているコンピュー タに接続された何台ものシリアル端末を + 各社員の机に配置するというようなこ とが可能です. また, + 家庭での利用方法としては, 余っている古い IBM PC や Macintosh + を FreeBSD が動いているパワフルなコンピュータの端末として利 + 用することができます. 普通ならシングルユーザのコンピュータを, + パワフ + ルなマルチユーザのシステムに変えることができるのです. + + FreeBSD では, 以下に挙げる3種類の端末が利用できます. + + + + ダム (dumb) 端末 + + + + PCを利用した端末 + + + + X 端末 + + + + 以下は, それぞれについての解説です. + + + ダム端末 + + ダム端末は, シリアルライン経由でのコンピュータとの接続専 + 用のハードウェアです. ダム端末は, + テキストの送受信および表示ができる + 程度の計算能力しかもっていないので, “dumb” + (間抜け) というように呼ば れています. + この端末上でプログラムを実行することはできません. テキスト + エディタ, コンパイラ, E-mail, + ゲームなどなどのプログラムを実行するのは, + ダム端末を接続しているコンピュータの方です. + + Digital Equipment社の VT-100 や, Wyse社の WY-75 + を初めとして, 多くのメーカが何百種類もの + ダム端末を作っています. ほとんどどんな種 類のダム端末でも + FreeBSD に接続して使用できます. さらに, 高性能の端 + 末の中には画像を取り扱えるものもありますが, + 限られた数のソフトウェア + パッケージしかこういった機能には対応していません. + + ダム端末は, X ウィンドウ システムで提供されるようなグラ + フィックアプリケーションを必要としない + 職場で広く用いられています. + + + + PC を端末として利用する + + ダム端末 + がテキストの表示およ + び送受信の機能をそなえただけのものならば, 言うまでもなく, + どんなPC もダム端末になり得ます. + 必要なものは適切なケーブルと, そのPCの上 + で動作する端末エミュレーション + を行うソフトウェアのみです. + + このような環境は, 家庭においてよく利用されます. + たとえば, あなたの同居 人が FreeBSD + のコンソールを専有している時などに, あまりパワーのないコ + ンピュータを FreeBSD システムにシリアル端末として接続し, + その端末上で + テキストだけを用いる作業をおこなうことができます. + + + + X 端末 + + X 端末は, 既存のものの中で最も洗練された種類の端末といえ + ます. X 端末は, たいていの場合シリアル ポートではなく, + イーサネッ + トのようなネットワークを利用した接続をおこないます. また, + アプリケーション の利用においても, + テキストベースのものだけでなく, X アプリケーション + の利用が可能です. + + ここでは, 参考までに 端末について紹介しただけで, X 端 + 末の設定や利用についての解説は + おこないません. + + + + + ケーブルとポート + + シリアル端末を FreeBSD システムに接続するためには, + 適切なケー ブルと, + 端末を接続するためのシリアルポートが必要です. ここでは, これ + らについて説明します. もし既にあなたの利用したい端末と, + その端末 を接続するためのケーブルについてよく理解していれば, + 設定 + の章まで読み飛ばしてください. + + + ケーブル + + 端末の接続は, シリアルポートを利用します. そこで, 端末を + FreeBSD システムに接続するためには, シリアルケーブル + (RS-232C ケーブ ルとも呼ばれています) + が必要となります. + + シリアルケーブルには2種類のケーブルがあります. + どちらの種類の ケーブルを使わなければいけないかは, + どんな端末を接続したいかによります. + + + + もし, PC を端末として利用したい場合は, ヌルモデム ケーブル + (リバースケーブルもしくは + クロスケーブルと呼ばれることもしばしばあります) + を使用してください. ヌルモデムケーブルは, + コンピュータ同士や端末同士を接続するために用い + られるケーブルです. + + + + もし, 本物の端末を接続するのであれば, その端末につい + てきたドキュメントからどのようなケーブルを + 使うべきか調べてください. も しドキュメントがない場合は, + まず ヌルモデム + ケーブルを試してみて, うまくいかない場合は スタンダード ケーブル + (しばしばストレートケーブルと呼 ばれます) + を試してみてください. + + + + また, 端末側と FreeBSD 側の 両方の + シリア ポート の形状が, + あなたが使用しようとしているケーブルについているコネクタの形 + 状と一致していなければなりません. + + + ヌルモデムケーブル + + ヌルモデムケーブル (またはリバースケーブルあるいはクロ + スケーブル) は, たとえば “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 + + + + + + + DCD と RST では, コネクタ内部でピン4を5に接続し, + そして逆側のコネクタのピン8と接続します. + + + + + スタンダード RS-232C ケーブル + + スタンダードシリアルケーブル + (またはストレートケーブル) の場合は, すべての RS-232C + 信号をそのまま通します. つまり, 片方の “send + data” 信号のピンは, 逆側の “send data” + 信号のピンと繋がっています. モデムを FreeBSD + に接続するときや, 一部の端末を接続するときにこのタイプの + ケーブルを使用します. + + + + + ポート + + シリアルポートは, FreeBSDが動作しているホスト + コンピュータと端 + 末の間でデータのやりとりを行うために用いるデバイスです. + ここでは, 現在存在するポートの種類と FreeBSD + でのポートのアクセス方法について解 説します. + + + ポートの種類 + + シリアルポートには何種類かのものがあります. + ケーブルを購 入したり自作したりする前に, + そのケーブルのコネクタの形状が端末および FreeBSD + システムのポートの形状と一致していることを + 確認してください. + + ほとんどの端末は DB25 ポートを搭載しています. + FreeBSDが動作しているも のを含めて, PCは DB25 または DB9 + ポートを搭載しています. マルチポート + のシリアルカードの場合は, RJ-12 や RJ-45 + のポートを搭載しているかもし れません. + + 利用されているポートの種類に関しては, + ハードウェアについてきたドキュメ ントを参照してください. + また, 多くの場合, ポートの形状から判断すること + もできるでしょう. + + + + ポートの名前 + + FreeBSDでは, /dev + ディレクトリ内のエントリを介 + してシリアルポートへのアクセスがおこなわれます. + 2種類の異なったエン トリがあります. + + + + 着信用のポートの名前は, + /dev/ttydx ( + x は 0から始まるポート番号) + となっています. 一般に端末の接続には + 着信用ポートを用います. 着信用のポートでは, + シリアルラインのデータ キャリア検出 (DCD) + 信号がオンになっている必要があります. + + + + 発信用のポートの名前は, + /dev/cuaax + となっています. + 発信用のポートは普通モデムの接続に用い, 端末の接続には + 利用しません. ただ, + ケーブルまたは端末がキャリア検出信号を使えない + タイプのものの場合は, + 発信用のポートを使うとよいでしょう. + + + + 詳しくは, &man.sio.4; + のマニュアルをご覧ください. + + たとえば, 端末を一つ目のシリアルポート (DOS + でいうところの COM1) に接 + 続したとすると, /dev/ttyd0 + がこの端末を指すことになります. また, + 二つ目のシリアルポート (COM2) + ならば /dev/ttyd1 となり, + 以下この形式のデバイスエントリを使います. + + 各シリアルポート, + 特にマルチポートのシリアルカードを利用する ために, kernel + の設定をおこなう必要がある場合がありますので, 注意してくだ + さい. 詳しくは, FreeBSD + カーネルのコンフィグレーション + をご覧ください. + + + + + + 設定 + + ここでは, 端末からのログインを可能にするために必要な + FreeBSD 側の設定について解説します. + 既に端末を接続するポートが利用できるように kernel + の設定をおこない, 端末が接続されているものと考えて, 解説を進め + ます. + + 簡単に言えば, プロセス管理や初期化をおこなっている + init プロセス に対して, + ログイン名を読み込み login + プログラムを起動している getty + を実行するように指示します. + + これをおこなうには, /etc/ttys + の内容を編集する必要があります. まず, su + コマンドで root になって, /etc/ttys + に以下の 変更を加えてください. + + + + 端末を接続するポートの /dev + のエントリが含ま れている行がまだ存在しなければ, これを + /etc/ttys に追加してく ださい. + + + + /usr/libexec/getty + が対象となるポートに対して + 実行されるように指定してください. また, + /etc/gettytab ファイ ル内の適切な + getty + タイプのエントリを指定してください. + + + + デフォルトのターミナルタイプを指定してください. + + + + 対象となるポートを “on” + に設定してください. + + + + そのポートが “secure” + であるかどうかを指定してください. + + + + init に + /etc/ttys を読み込みなおさせてく + ださい. + + + + また, 必要に応じて /etc/gettytab + を変更し, 上の 2で使用する + getty のエントリを追加してください. + このドキュメントではこの方 + 法については特に解説しませんので, &man.gettytab.5; + および &man.getty.8; のマニュアルをご覧ください. + + 以下では, 上のステップについて詳しく解説します. + 実例を用いて, 何をす べきかを解説していきます. Wyse-50 と, + 古い IBM の 286 マシン上で通信 ソフト Procomm を使って VT-100 + エミュレーションをおこなっているものを端 + 末の例として紹介します. また, Wyse は 2番目のポートに, + 286マシンは 6 番目のポート + (マルチポートのシリアルカード上のポート) に接続します. + + /etc/ttys について, + より詳しくは, &man.ttys.5; のマニュアルをご覧 + ください. + + + <filename>/etc/ttys</filename> へのエントリの追加 + + 既にエントリがある場合を除いて, まず初めに + /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 + + + + <replaceable>getty</replaceable> タイプの指定 + + 次に, + 端末からのログインを処理するプログラムの指定をおこな います. + FreeBSDでは, 標準的には + /usr/libexec/getty をこの目的 + で利用しています. login: + プロンプトを送り出しているのは, このプロ グラムです. + + getty プログラムは, + コマンドラインパラメータとして, + getty タイプをとります. ただし, + このパラメータは必須ではあ りません. + getty タイプは, + ボーレートやパリティといった, 接続され + た端末の特徴を表すものです. getty + プログラムは, 与えられた getty + タイプに対応したこれらの特徴を + /etc/gettytab から 読み込みます. + + ファイル /etc/gettytab には, + 新旧の端末に関する多数のエントリ が記述されています. + ほとんどの場合, std + という文字列で始まる名前 のエントリを使えば, + 接続された端末に対してログインセッションを提供す + ることができます. これらのエントリを利用した場合, + パリティは無視されま す. 110 bps から 115200 bps + までのボーレートに対応した std のエン + トリがあります. 当然, + 新たなエントリを追加することも可能です. + &man.gettytab.5; のマニュアルに, + さらに詳しく解説されています. + + /etc/ttysgetty タイプの設定をする際は, + 端末側の通信 パラメータの設定が, 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 のタイプの指定が, + つぎのフィールドとして判断されてしまう可 能性があるので, + 十分注意することが必要です. + + + + デフォルトのターミナルタイプの指定 + + /etc/ttys の 3番目のフィールドには, + そのポートのター ミナルタイプのデフォルトを指定します. + ダイアルアップ用のポートの場合 は, + ユーザがどのタイプの端末あるいは + 通信ソフトを利用してダイアルアップ + してくるかは分からないので, unknown や + dialup を記述するの が一般的です. 一方, + 直結された端末の場合, ターミナルタイプが変わるこ + とはありませんから, + このフィールドには実際のターミナルタイプを記述し + ます. + + 一般に, ユーザは .login や + .profile などのファイル内で + tset コマンドを使って, + ターミナルタイプをチェックし, 必要ならば + ターミナルタイプの入力を求めるプロンプトを + 表示するようにします. この とき, + /etc/ttys + の中でターミナルタイプが指定されていれば, + このプロンプトを表示せずに先に進むことが可能です. + + FreeBSD 上で, どのターミナルタイプを利用できるかは, + /usr/share/misc/termcap をご覧ください. + このファイルには, お + よそ 600 のターミナルタイプが定義されています. + 必要ならば, 新たなエン + トリを追加することも可能です. 詳しくは &man.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 + + + + ポートを利用可能にする + + /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 + + + + ``secure'' なポートの指定 + + とうとう最後のフィールドの設定です. + (実際にはここでは触れ ませんが, + オプショナルなwindow + の設定のフィールドも存在するので, + ほぼ最後のフィールドといった方が正確かもしれません. ) + 最後のフィールド では, + そのポートが安全かどうかを指定します. + + ここで, “安全” + なポートとはどういうポートのことでしょう? + + これは, root のアカウント (または, ユーザ ID が 0 + のアカウント) がロ グインしてもよいポートということです. + 安全でないポートでは, root のロ + グインは許可されません. + + では, どのように安全なポートとそうでない + ポートを使えばよいでしょう? + + ポートを安全ではないとすることで, + そのポートに接続された端末からは, root + のログインを禁止することができます. FreeBSDシステムの root + のパス ワードを知っている人は, + まず一般ユーザとしてログインしなければなりませ ん. + スーパユーザの特権を得るためには, そのうえで + su コマンドを + 利用しなければいけません. + + + これによって, root アカウントが不正に利用された場合に, + その経過を調査 する上で二つの記録を利用できるようになります. + loginsu + コマンドは, 共にシステムのログに記録を残します (また, + ログイン は 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 + + + + <command>init</command> にファイル + <filename>/etc/ttys</filename> の再読み 込みをさせる + + FreeBSD をブートすると, 最初に起動されるプロセス, + init/etc/ttys + を読み込んで, 記述されているプログラムを利用可能な + ポートに対して実行し, + ログインプロンプトを送り出させます. + + /etc/ttys の編集が終わった後, + init に変更を認識させるた めに, わざわざ + FreeBSD をブートしなおしたくはないでしょう. このような + 場合のために, init は, + SIGHUP (hangup) シグナルを受信すると, + /etc/ttys + を読み込みなおすようになっています. + + /etc/ttys の変更を保存したら, + 以下のようなコマンドを実行して, init + に対して SIGHUP を送信します. + + &prompt.root; kill -HUP 1 + + (init プロセスのプロセス ID は + 常に 1です. ) + + すべての設定が正しくおこなわれ, + すべてのケーブルがただしく接続されてい て, + かつ端末の電源が入っていれば, + 端末にはログインプロンプトが表示され ているはずです. これで, + これらの端末からの最初のログインの準備が完了で す! + + + + + トラブルシューティング + + 細心の注意を払って設定をおこなっても, + ときには端末の接続がう まくいかない場合があるでしょう. 以下に, + よく見られる問題とその解決方法 を示します. + + + ログインプロンプトが表示されない + + 端末の電源が接続され, + スイッチが入っていることを確認してください. もし, PC + を端末として利用している場合は, + 通信ソフトが適切なシリアルポー + トを利用する設定になっているかどうか確かめてください. + + + ケーブルがしっかりと端末と + FreeBSDが動作しているコンピュータの両方に接続され + ていることを確認してください. また, + 正しい種類のケーブルを利用している + か確かめてください. + + 端末と FreeBSD + の間の通信速度とパリティの設定が一致していることを確認 + してください. + 出力をモニタに表示するタイプの端末の場合は, モニタ + のコントラストと明るさの設定を確認してください. また, + 出力が印刷 されるタイプの端末の場合は, + 紙とインクが十分にあるかどうかを確かめてく + ださい. + + getty が動いていて, + 端末を認識していることを確認してください. 以 + 下のコマンドで動作中の getty + プロセスのリストを得ることができます. + + &prompt.root; 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)”に変更してく ださい. + + + + + + + + ダイアルインサービス + + 原作: &a.ghelmer;. + + 訳: &a.max;. + 6 September 1996. + + このドキュメントでは, FreeBSD + で外部からのモデムによるアクセスを受け付 + けるための設定に関してまとめてあります. このドキュメントは筆者が + FreeBSD 1.0, 1.1 および 1.1.5.1 での経験と, 他の UNIX 系 OS + での経験を 基に書いたものですが, + 必ずしも十分な内容でないかもしれませんし, 掲載し + た実例もあなたが今お使いの環境とは一致しないかもしれません. + また, 筆者 はこのドキュメントに従って行われた作業で + データが失われたりシステムが破 壊されるようなことがあっても, + 一切責任をとれません. + + + 設定を始める前に + + 筆者は, 読者が FreeBSD + に関する基本的な知識をもっていることを仮定して + このドキュメントをまとめました. まず, FreeBSD + が既にインストールされ ていて, UNIX + 系環境においてファイルの編集の方法やシステムに付属のマニュ + アルを参照する方法を知っている必要があります. また, + 以下に示すように, FreeBSD + の特定のバージョンが必要となりますし, いくつかの用語に関する + 知識, + そしてモデムや多少の配線に関する知識も必要となります. + + + FreeBSD のバージョン + + まず, FreeBSD のバージョンは 1.1 以上を使用してください + (バージョン 2.x でもかまいません. ). FreeBSD 1.0 には, + 2種類のシリアル ドライバ が含まれているので, + 混乱の元となり得ます. また, FreeBSD のシリアル ディバイス + ドライバ (sio) は, + バージョンを追う毎に改善されてき ていますので, + より新しいバージョンの FreeBSD を使用することで, よりよ い, + より効率の高いドライバを利用することができるはずです. + + + + 用語解説 + + 以下, 簡単にいくつかの用語について解説しておきます. + + + 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 + という単位の方が実体に即しているか らです. (少なくとも, + こういう表現をしておけば, 意地の悪い人に怒られる + こともないのではないかと思います. ) + + + + 外づけモデムと内蔵モデムについて + + ダイアルアップのサービスに関していえば, + 外づけのモデムの方が適している ようです. これは, + 多くの外づけのモデムは設定を不揮発ラムに書き込んで半 + 永久的に保存することができますし, また RS-232 + に関する重要な情報を知る + ための点滅するライトによるインディケータが + 搭載されているからです. 点滅 するライトは, + システムを見に来た訪問者に強い印象を与えるという効果だけ + でなく, モデムが適切に動作しているかどうかを知るためにも + 有効です. + + 一方, たいていの内蔵型のモデムには + 不揮発性ラムが搭載されていないため, ディップ + スイッチの変更以外に設定を保存する方法がありません. また, も + しインディケータがついていても, おそらくコンピュータのケース + カバーが 外されていなければその状態を確認するのは + 難しいでしょう. + + + + モデムとケーブル + + 以下のことに関して, 予め知っておく必要があります. + + + + コンピュータとモデムの間での通信が + 行えるようにするための接続方 法. + (内蔵型の場合は接続の必要はありません) + + + + お使いのモデムのコマンドについての知識, + あるいはコマンドの解説 の在処 + + + + (通信ソフトを使っての) + モデムの不揮発ラムに保存可能な設定の変更 方法 + + + + 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 + への接続に慣 れている方にとっては, + ちょっとめんどうかもしれませんね. + + + + シリアル インタフェースについて + + FreeBSD では, NS8250-, NS16450-, NS16550- および + NS16550A- に基づ いた EIA RS-232C (CCITT V.24) + 規格のシリアル インタフェースをサポート しています. 8250 + および 16450 ベースのディバイスには1文字のキャラクタ + バッファが搭載されています. また, 16550 系のディバイスには, + 16文字分 のバッファが搭載されていて, + はるかによいパフォーマンスを得られます. (ただし, 無印の + 16550 では, バグがあって 16 文字バッファが利用できませ + んので, 可能であれば 16550A + 系のディバイスを利用してください. ) 1文字 のバッファの物は, + 16550 系のものと比べて OS にかける負荷が大きいので, 16550A + 系ディバイスの利用を強く推奨します. 多数のシリアル + ポートを利 用する場合や, 負荷の高いシステムにおいては, + 16550A 系ディバイスを使う ことで, + エラー発生率を低く押さえることができます. + + + + + 概要 + + 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 を起動して, + パスワードの入力を要求し, その + 後ユーザのシェルを起動します. + + それでは, 続いて設定についての解説です. + + + + kernel の設定 + + 通常, FreeBSD の kernel は, PC-DOS の世界で + COM1:, COM2: + , COM3: および + COM4: と呼ばれる四つのシリアル ポートを + 探す + ように設定されています. また, FreeBSD では, 現在のところ + Boca の 1008 + や 2016 のような, 単純なマルチポートのシリアル + インタフェースもサポー + トしています. (マルチポートのシリアル ボードに関しての + kernel の設定 + については, &man.sio.4; のマニュアルを参照してください. ) + デフォルト + の kernel は, COM ポートだけを探します. + + 搭載されているシリアル ポートのいずれかを, kernel + が認識しているかどう か確認したい場合は, kernel + 起動時のメッセージを注意深く見ているか, あ るいは + /sbin/dmesg コマンドを使って, + ブート時の出力メッセージ を確認してください. 特に, + sio で始まるメッセージをよく見てくださ い. + 参考までに, 以下のコマンドで sio + という文字列を含むメッセージ + だけを表示することができます. + + &prompt.root; /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/confcd + して作成してくださ い. 初めてコンフィギュレーション + ファイルを作る場合は, まず 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 のようなマルチポートの + シリアル ボードをお持ちの場合は, &man.sio.4; + のマニュアルを見て, マ + ルチポートのボードのためのコンフィギュレーション + ファイルの記述のし方 + に関して確認してください. ディバイスのフラグの + 指定方法がバージョンによっ + て異なりますので, 別のバージョンの FreeBSD + で利用していたコンフィギュ + レーション ファイルを流用する場合には + 十分注意してください. + + + なお, 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 の構築)” および + &man.config.8; のマニュアルにしたがって, + config コマンド を使って kernel + 構築のためのディレクトリを作成した後, kernel の構築, + インストールおよびテストを行ってください. + + + + ディバイス スペシャル ファイル + + kernel に組み込まれているほとんどのディバイスは, + /dev ディレ クトリにある, + “ディバイス スペシャル + ファイル”を介してアクセスされ ます. + sio ディバイスの場合は, 着信用の + /dev/ttyd? + およ び, 発信用の + /dev/cua0? + が利用されます. さらに, FreeBSD の 1.1.5 以降では, + 初期化ディバイス + (/dev/ttyi? と + /dev/cuai0?) + およびロッキング ディバイス + (/dev/ttyld? + と + /dev/cual0?) + も合わせて利用されます. 初期化ディバイスは, 通信 + ポートがオープンされる度に, + そのポートの初期設定を行うために使われます. たとえば, + CTS/RTS + によるフロー制御を行うモデムが接続されてい る場合の + crtscts + などのパラメータの初期化が行われます. ロッキング + ディバイスは, ポートの設定をロックし, + 他のユーザやプログラムにこれらを + 変更されることのないようにするために利用されます. + 通信ポートの設定, 初 期化とロックおよび設定の変更に関しては, + それぞれ &man.termios.4;, &man.sio.4; と &man.stty.1; + のマニュアルをご覧ください. + + + ディバイス スペシャル ファイルの作成 + + ディバイス スペシャル ファイルの管理は, ディレクトリ + /dev + にあるシェル スクリプト MAKEDEV + によって行います. (FreeBSD + 1.1.5 の &man.MAKEDEV.8; のマニュアルの COM + ポートに関する記述は, + かなりいい加減なので無視してください. ) + MAKEDEV を使って, + COM1: (ポート 0) + をダイアルアップのポートとして利用するためのディ + バイス スペシャル ファイルを作るには, + /devcd して + から, MAKEDEV ttyd0 と実行してください. + 同様に, MAKEDEV + ttyd1 とすることで, COM2: + (ポート 1) 用のディバイス スペシャル ファイル + を作成することができます. + + MAKEDEV は, + /dev/ttyd? + のディバイス ファイルだけでなく, + /dev/cua0? + (および FreeBSD 1.1.5 以降では総ての初期化ディバイ + スとロッキング ディバイスのスペシャル ファイル) + も作成します. さらに, もしシリアル端末用のスペシャル + ファイル + /dev/tty0? + が存在すれ ば, それらの削除も行います. + + ディバイス スペシャル ファイルの作成後, + これらのファイルのパーミション が適切に設定されていて, + これらのディバイスを利用してもよいユーザのみが + 読み書きできるようになっていることを確認してください. (特に + /dev/cua* + のパーミションには注意を払ってください. ) この確認 を怠ると, + 一般のユーザがあなたのモデムを使うことができるようなことにな + りかねません. デフォルトの /dev/cua* + のパーミションは, 以下の ようになっていて, + たいていの場合適切なものだと思います. + + crw-rw---- 1 uucp dialer 28, 129 Feb 15 14:38 /dev/cua01 +crw-rw---- 1 uucp dialer 28, 161 Feb 15 14:38 /dev/cuai01 +crw-rw---- 1 uucp dialer 28, 193 Feb 15 14:38 /dev/cual01 + + 上の設定では, ユーザ uucp と, + グループ dialer に属するユーザ + が発信用のディバイスを利用できます. + + + + + 設定ファイル + + 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 + インタフェースの速度が変化するような + 設定の方に偏った説明になってしまうと思います. + + + <filename>/etc/gettytab</filename> + + /etc/gettytab は, &man.getty.8; + の設定ファイルで, &man.termcap.5; + と同様の形式で記述されます. ファイルのフォーマットや定 + 義できる機能についての詳細については, &man.gettytab.5; + のマニュアルを + ご覧ください. + + + 固定速度の設定 + + モデムとコンピュータ間の通信速度を固定して使う場合, + おそらく /etc/gettytab + に特に変更を加える必要はないはずです. + + + + 可変速度の設定 + + 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” + エラーが発生するかもしれません. + + + + + <filename>/etc/ttys</filename> + + /etc/ttys には, + init が監視すべき tty + のリストを記 + 述します. さらに, /etc/ttys は, + login に対してセキュリ + ティに関する情報を提供します. (ユーザ + root は, secure とマー + クされている tty + のみからログインできます. ) 詳しくは + &man.ttys.5; のマニュアルをご覧ください. + + + /etc/ttys の既存の行を変更するか, + あるいは新しい行を追加して, init + が自動的に新しいダイアル アップ サービス用のポートに対して + getty + プロセスを起動するようにしてください. 書式は, 固定速度の設 + 定か可変速度の設定かに関わらず, 以下のとおりです. + + +ttyd0 "/usr/libexec/getty xxx" dialup on + + 1番目の項目は, このエントリで対象とするディバイス + スペシャル ファイル です. 上の例では + ttyd0 として, + /dev/ttyd0getty + に監視させることを表しています. 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 を + 読み込み直させてください. + + &prompt.root; kill -1 1 + + ただ, もし初めてシステムを設定しているのであれば, + モデムが適切に設定さ + れて接続されるまでは, init + に対してシグナルを送らない方がいいか + もしれません. + + + 固定速度の設定 + + 速度を固定する設定では, /etc/ttys + の中で, getty に対し + て固定速度のエントリを指定する必要があります. たとえば, + 以下の例はポー トのスピードが 19.2 Kbps + に固定されたモデムのための ttys + のエント リです. + + +ttyd0 "/usr/libexec/getty std.19200" dialup on + + 別の速度でモデムのポートのスピードを固定したい場合は, + /etc/gettytab + から適切なエントリを選んで, 上の例の + std.19200 の部分を + std.speed + として, 適切な速度のも のに置き換えてください. + + + + 可変速度の設定 + + 可変速度の設定では, ttys + のエントリが, /etc/gettytab + の中の適切な “自動速度調整” + の初期設定のエントリを参照していなければな りません. + たとえば, もし前述の 19.2 Kbps + から接続を試みる可変速度の設 定例 + (V19200 の + gettytab エントリ)をそのまま + ttys に追 加したのであれば, + ttys + エントリは以下のようになります. + + +ttyd0 "/usr/libexec/getty V19200" dialup on + + + + + <filename>/etc/rc.serial</filename> または + <filename>/etc/rc.local</filename> + + 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 には初期化のためのディバイス スペシャル + ファイルがないので, ディバイス + ファイルそのものにフラグを設定して, その後はフラグをクリア + してしまうような極悪人が現れないことを願うしかありません. + + + + + + モデムの設定 + + もし, あなたのモデムがパラメータを不揮発ラムに + 保存できるタイプならば, PC-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 + の間で延々と無意味なやりとりが続いたというケースを聞いたこ + とがあります. + + + 固定速度の設定 + + 固定速度の設定では, + モデムとコンピュータ間の通信速度をモデムとモデム間 + の接続速度に関係なく, 常に一定に保つように, + モデムを設定する必要があり ます. USRobotics Sportster の + 14,400 bps 外づけモデムの場合, 以下のコ マンドで, + モデムとコンピュータ間の速度が, コマンド送信時の速度に固定さ + れます. + + +ATZ +AT&B1&W + + + + 可変速度の設定 + + 可変速度の設定では, シリアル ポートの速度が, + 着信速度に応じて変化する ように設定しなければいけません. + USRobotics Sporster の 14,400 bps 外 づけモデムの場合, + 以下のコマンドで, エラー訂正機能を利用した通信の場合 は, + コマンドを送信した時の通信速度にシリアル + ポートの速度を固定し, エ ラー訂正機能を利用しない接続では, + シリアル ポートの速度が変化するよう に設定されます. + + +ATZ +AT&B2&W + + + + モデムの設定の確認 + + ほとんどの高速モデムには, + 現在の設定をある程度人間にも理解できる形式に + して表示させるコマンドがあります. USRobotics Sporster の + 14,400 bps 外づけモデムの場合は, ATI5 + コマンドで, 現在の不揮発ラムの設定を 表示することができます. + さらに, ディップ スイッチの設定も含めた現在の + 設定を確認するためには, ATZ + コマンドを送信してから, ATI4 + コマンドを送信してください. + + 他のメーカーのモデムをお使いの場合は, + モデムのマニュアルで設定値の確認 + 方法を確認してください. + + + + + トラブルシューティング + + 以下の手順でダイアル アップ + モデムの動作を確認することができます. + + + 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? を確認し, + 記述に誤りがないか, 足りないエ ントリがないか, + 足りないディバイス スペシャルファイルがないかといった + 点について調べてみてください. + + + + モデムで接続してみる + + 実際にモデムを使って別のコンピュータから + 接続してみてください. この時, 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 がオンになっているか + を確認してください. + + この確認のステップを数回繰り返しても + うまくいかない場合は, 一度休憩して, + しばらくたってから挑戦してみましょう. それでもだめなら, + おそらく &a.questions; + にあなたのモデムについての情報と問題を書いたメールを送れ ば, + メーリング + リストのメンバーが問題の解決を助けるべく努力してくれる + でしょう. + + + + + 謝辞 + + 以下の方々から, + 多くのコメントやアドバイスをいただきました. ここに謝意 + を表します. + + + Sean Kelly + + <kelly@fsl.noaa.gov> 多くのすばらしい助言をいた + だきました + + + + + + + + ダイアルアウトサービス + + 原作: FAQ からの情報 + + 訳: &a.jp.tmaruya;. + 31 December 1996. + + 以下はモデムを利用して他のコンピュータと + 接続する方法を説明しています. + これはリモートホストとターミナル接続を確立するための + 適切な方法です. + + これは BBS に接続するときによく使います. + + この種の接続は PPP 接続に問題がある場合, Internet + 上にあるファイルを 転送するのに非常に役に立ちます. FTP + で何らかのファイルを転送したいのに PPP + 接続を確立できない場合は, ファイルを FTP + 転送するためにターミナルセッション を利用します. そして ZMODEM + を利用してファイルを転送します. + + + <command>tip</command> や <command>cu</command> + が実行できないはなぜ? + + あなたのシステムで tip や + cu というプログラムは + uucpdialer + というグループに所属しているユーザのみが + 実行できるようになっているのでしょう. リモートホストやモデムを + 利用できる dialer + のグループにあなたのアカウントを 加えましょう. + + もしくは下記のコマンドを使うことによって, そのシステムで + tipcu + を誰でも使えるようになります: + + &prompt.root; chmod 4511 /usr/bin/tip + + このコマンドは cu + に対しておこなう必要はありません, それは + cutip + に対するハードリンクだからです. + + + + 私の 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 + を実行します. これでうまく動作するでしょう. + + + + これらの AT コマンドを入力するには? + + /etc/remote ファイルの中で + “direct” エントリを作ります. たとえばモデムが + 1番目のシリアルポートである /dev/cuaa0 + に接続されている場合, 次のようにします: + + +cuaa0:dv=/dev/cuaa0:br#19200:pa=none + + モデムがサポートする最大の bps レートを br + フィールドに使います. そして tip cuaa0 + を実行すると, モデムが利用できるようになります. + + /dev/cuaa0 + がシステムに存在しない場合は, 次のようにします: + + &prompt.root; cd /dev +&prompt.root; ./MAKEDEV cuaa0 + + または root になって以下のように cu + コマンドを実行します: + + &prompt.root; cu -lline -sspeed + + line + にはシリアルポートを指定します (例えば + /dev/cuaa0). そして + speed には接続する速度を指定します + (例えば 57600). その後 AT + コマンドを実行したら, ~. + と入力すれば終了します. + + + + pn 機能の <literal>@</literal> 記号が使えません! + + 電話番号 (pn) 機能の中での @ 記号は, + tip に /etc/phone + にある電話番号を参照するように伝えます. しかし + @ の文字は /etc/remote + のような 設定ファイルの中では特殊文字となります. + バックスラッシュを使ってエスケープをおこないます: + + +pn=\@ + + + + コマンドラインから電話番号を指定するには? + + “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: + + そして + + &prompt.root; 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: + + そして + + &prompt.root; cu 5551234 -s 115200 + + と実行します. + + + + 毎回 bps レートを入力しなければいけませんか? + + tip1200cu1200 + 用のエントリを記述し, 適切な通信速度を br + フィールドに設定します. tip は 1200 bps + が正しいデフォルト値であるとみなすので, + tip1200 エントリを参照します. もちろん 1200 + bps を使わなければならないわけではありません. + + + + ターミナルサーバを経由して + 複数のホストへアクセスしたいんです. + + 毎回接続されるのを待って + 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/cua02:br#38400:at=hayes:du:pa=none:pn=5551234: + + これで, tip pain や + tip muffin と実行すると + pain や muffin のホストに接続することができ, + tip deep13 + を実行するとターミナルサーバに接続します. + + + + 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 + ループに入れて 実行します. + + + + 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> + + + + 打ち込んだ文字が突然すべて大文字になりました?? + + CTRL+A を押してしまい, caps-lock + キーが壊れている場合のために設計された tip + の “raise character” モードに入ったのでしょう. + 既に述べたように ~s を使って, + raisechar をより適切な値に + 変更してください. もしこれら両方の機能を使用しないのであれば, + force 文字と同じ設定にすることもできます. + + + 以下は CTRL+2 や CTRL+A などを頻繁に使う必要のある Emacs + ユーザにうってつけの. tiprc ファイルのサンプルです: + + +force=^^ +raisechar=^^ + + ^^ は SHIFT+CTRL+6 です. + + + + <command>tip</command> でファイルを転送するには? + + もし他の UNIX のシステムと接続しているなら, + ~p(put) や ~t(take) + でファイルの送受信ができます. これらのコマンドは + 相手のシステムの上で cat や + echo を実行することで 送受信をします. + 書式は以下のようになります: + + + ~p + ローカルのファイル名 + リモートのファイル名 + + + ~t + リモートのファイル名 + ローカルのファイル名 + + + この方法ではエラーチェックをおこないませんので, zmodem + などの他のプロトコルを使った方がよいでしょう. + + + + <command>tip</command> から zmodem を実行するには? + + ファイルを受信するには, + リモート側で送信プログラムを起動します. そして ~C + rz と入力すると, ローカル側へのファイルの受信が + 始まります. + + ファイルを送信するには, + リモート側で受信プログラムを起動します. そして ~C sz + files と入力すると, + リモート側への ファイルの送信が始まります. + + + + + diff --git a/ja_JP.eucJP/books/handbook/staff/chapter.sgml b/ja_JP.eucJP/books/handbook/staff/chapter.sgml new file mode 100644 index 0000000000..deb736ebc7 --- /dev/null +++ b/ja_JP.eucJP/books/handbook/staff/chapter.sgml @@ -0,0 +1,782 @@ + + + + FreeBSDプロジェクトスタッフ + + 訳: &a.hanai;28 August 1996. + + FreeBSDプロジェクトは, + 以下の人々によって管理運営されています. + + + FreeBSD コアチーム + + FreeBSD コアチームは, + プロジェクトの “運用委員会” を形成し, FreeBSD + プロジェクトの全般的な目的や方針の決定を行います. さらに, + FreeBSDプロジェクトの 特定の分野の + 運用も行っています. + + (姓でアルファベット順): + + + + &a.asami; + + + + &a.jmb; + + + + &a.ache; + + + + &a.bde; + + + + &a.gibbs; + + + + &a.dg; + + + + &a.jkh; + + + + &a.phk; + + + + &a.rich; + + + + &a.gpalmer; + + + + &a.jdp; + + + + &a.sos; + + + + &a.peter; + + + + &a.wollman; + + + + &a.joerg; + + + + + + FreeBSD の開発者たち + + (CVSの)commitする権利を持っていて, FreeBSD + のソースツリーについて 作業をおこなっている人々がいます. + すべてのコアチームのメンバはま た 開発者でもあります. + + + + &a.ugen; + + + + &a.mbarkah; + + + + &a.stb; + + + + &a.pb; + + + + &a.abial; + + + + &a.jb; + + + + &a.torstenb; + + + + &a.dburr; + + + + &a.charnier; + + + + &a.luoqi; + + + + &a.ejc; + + + + &a.kjc; + + + + &a.gclarkii; + + + + &a.archie + + + + &a.cracauer; + + + + &a.adam; + + + + &a.dillon; + + + + &a.dufault; + + + + &a.uhclem; + + + + &a.tegge; + + + + &a.eivind; + + + + &a.julian; + + + + &a.rse; + + + + &a.se; + + + + &a.sef; + + + + &a.fenner; + + + + &a.jfieber; + + + + &a.jfitz; + + + + &a.scrappy; + + + + &a.lars; + + + + &a.dirk; + + + + &a.shige; + + + + &a.billf; + + + + &a.tg; + + + + &a.gallatin; + + + + &a.brandon; + + + + &a.graichen; + + + + &a.jgreco; + + + + &a.rgrimes; + + + + &a.jmg; + + + + &a.hanai; + + + + &a.thepish; + + + + &a.jhay; + + + + &a.helbig; + + + + &a.ghelmer; + + + + &a.erich; + + + + &a.nhibma; + + + + &a.flathill; + + + + &a.foxfair; + + + + &a.hosokawa; + + + + &a.hsu; + + + + &a.mph; + + + + &a.itojun; + + + + &a.mjacob; + + + + &a.gj; + + + + &a.nsj; + + + + &a.kato; + + + + &a.andreas; + + + + &a.motoyuki; + + + + &a.jkoshy; + + + + &a.kuriyama; + + + + &a.grog; + + + + &a.jlemon; + + + + &a.truckman; + + + + &a.imp; + + + + &a.smace; + + + + &a.mckay; + + + + &a.mckusick; + + + + &a.ken; + + + + &a.hm; + + + + &a.tedm; + + + + &a.amurai; + + + + &a.markm; + + + + &a.max; + + + + &a.alex; + + + + &a.newton; + + + + &a.rnordier; + + + + &a.davidn; + + + + &a.obrien; + + + + &a.danny; + + + + &a.ljo; + + + + &a.fsmp; + + + + &a.smpatel; + + + + &a.wpaul; + + + + &a.jmacd; + + + + &a.wes; + + + + &a.steve; + + + + &a.mpp; + + + + &a.dfr; + + + + &a.jraynard; + + + + &a.darrenr; + + + + &a.csgr; + + + + &a.martin; + + + + &a.paul; + + + + &a.roberto; + + + + &a.chuckr; + + + + &a.guido; + + + + &a.dima; + + + + &a.sada; + + + + &a.wosch; + + + + &a.ats; + + + + &a.jseger; + + + + &a.simokawa; + + + + &a.vanilla; + + + + &a.msmith; + + + + &a.des; + + + + &a.brian; + + + + &a.mks; + + + + &a.stark; + + + + &a.karl; + + + + &a.dt; + + + + &a.cwt; + + + + &a.pst; + + + + &a.hoek; + + + + &a.nectar; + + + + &a.swallace; + + + + &a.dwhite; + + + + &a.nate; + + + + &a.yokota; + + + + &a.jmz; + + + + + + FreeBSD ドキュメンテーションプロジェクト + + FreeBSD + ドキュメンテーションプロジェクトは複数のサービスを提供 + しています. それぞれのサービスは, 以下の担当者とその + 副担当者によって運用されています. + + + ドキュメンテーションプロジェクト担当 + + &a.nik; + + + + Web 管理責任者 + + &a.wosch; + + + + ハンドブックおよび FAQ 編集担当 + + &a.faq; + + + + ニュースフラッシュ編集担当 + + &a.nsj; + 副担当:&a.john; + + + + FreeBSD Really-Quick NewsLetter編集担当 + + Chris Coleman chrisc@vmunix.com + + + + ギャラリーページ担当 + + &a.nsj; + 副担当&a.cawimm; + + + + 商用ベンダーページ担当 + + &a.mbarkah; + + + + WEB 更新担当 + + &a.mbarkah; + + + + デザインやアートディレクション担当 + + &a.opsys; + + + + データベース技術担当 + + &a.mayo; + + + + CGI 技術担当 + + &a.stb; + + + + 雑務担当 + + &a.nsj; + + + + LinuxDoc から DocBook への移行 + + &a.nik; + + + + + + + 担当者 + + + 最高技術責任者 + + &a.dg; + + + + + ドキュメンテーションプロジェクト担当 + + &a.nik; + + + + 国際化 + + &a.ache; + + + + ネットワーク + + &a.wollman; + + + + + ポストマスタ + + &a.jmb; + + + + リリースコーディネータ + + &a.jkh; + + + + 広報および渉外担当 + + &a.jkh; + + + + + セキュリティ担当 + + &a.imp; + + + + + CVS ツリー管理者 + + 責任者: &a.peter; + 副責任者: &a.jdp; + 国際版 (暗号) 担当: &a.markm; + + + + + ports コレクション担当 + + &a.asami; + + + + XFree86 Project, Inc. との渉外担当 + + &a.rich; + + + + + Usenet サポート + + &a.joerg; + + + + + GNATS 管理者 + + &a.phk; と &a.steve; + + + + Web 管理者 + + &a.wosch; + + + + + + + diff --git a/ja_JP.eucJP/books/handbook/x11/chapter.sgml b/ja_JP.eucJP/books/handbook/x11/chapter.sgml new file mode 100644 index 0000000000..61241e1b37 --- /dev/null +++ b/ja_JP.eucJP/books/handbook/x11/chapter.sgml @@ -0,0 +1,26 @@ + + + + X ウィンドウシステム + + この節の完成は保留にしてあります. + The XFree86 Project, Inc + から提供されるドキュメントを参考にしてください. + + + diff --git a/ja_JP.eucJP/books/porter-handbook/book.sgml b/ja_JP.eucJP/books/porter-handbook/book.sgml new file mode 100644 index 0000000000..0bae98ef4c --- /dev/null +++ b/ja_JP.eucJP/books/porter-handbook/book.sgml @@ -0,0 +1,1139 @@ + + + + アプリケーションのインストール : ports コレクション + + 原作: &a.jraynard;. + + 訳: &a.jp.masaki;, &a.jp.saeki;. + 11 November 1996. + + FreeBSD の ports コレクションを利用すると, 最小限の労力で + 非常に幅広くのアプリケーションのコンパイルとインストールがおこなえます. + + やってみたことのある方はよくご存知でしょうが, + オープンな規格とは 全くの誇大広告であって, + あるプログラムを異なるバージョンの Unix 上で + 動作させることは退屈で手間のかかる仕事です. + 求めているプログラムが自分のシステムでうまくコンパイルでき, + 正しいところにインストールできて, + 完璧に動作するとしたらとてもラッキーです. しかし, + あいにくこれは滅多にないことなのです. + ほとんどのプログラムについて, + あなたは髪を掻きむしることになるでしょうし, + かなりのプログラムでは, 白髪混じりの頭になってしまったり, + あるいは慢性の 脱毛症にすら なってしまうかもしれません... + + いくつかのソフトウェアディストリビューションでは, + 設定用のスクリプトを + 配布することでこの問題を解決しようとしています. + これらのスクリプトの中には非常に精巧なものもありますが, + 残念ながら, 中にはこれまで + 聞いたこともないようなシステムの名前をしゃあしゃあと + 言い放ったうえに, まるでシステムレベルの Unix + プログラミングに関する 最終試験のような, + たくさんの質問をしてくる場合があります. (例えば, + このシステムの gethitlist 関数は fromboz への const + ポインタを 返しますか? それとも const fromboz + へのポインタを返しますか?, このシステムには + Foonix スタイルの, 容認できない例外処理をおこなう + ルーチンがありますか? もしもないとしたら, + それはなぜですか?) + + 幸いなことに, ports コレクションがあれば, + これらのきつい作業はすべて 完了しています. make + install とタイプするだけで, 動作するプログラムを + 入手することができるのです. + + + なぜ ports コレクションを作ったのか? + + FreeBSD の基本システムは, + 非常に多くのツールやユーティリティから 構成されています. しかし, + よく使われるプログラムのうち多くのものが, + この基本システムには含まれていません. その理由は:- + + + + ある Lisp ベースのエディタのように, + それがないと生きていけないと 言う人もいれば, + ディスクの無駄だと言う人もいるようなプログラム. + + + + 基本システムに組み込むには特殊すぎるプログラム. (CAD + やデータベースなど.) + + + + “時間のある時に, + ちょっと見ておかなければ”というような類の, + それがシステムに含まれていないことが + 致命的とは言えないプログラム. (おそらく, + 何らかの言語などでしょう.) + + + + FreeBSD + のような真面目なオペレーティングシステムの一部として + 供給するには遊びが過ぎるようなプログラム. ;-) + + + + たくさんのプログラムを基本システムに組み込んだとしても, + もっともっと 組み込みたいという要求が出てくるので, + どこかで制限を引かなくてはならないため. (そうしなければ + FreeBSD の配布物は, + とてつもなく膨大になってしまうでしょう.) + + + + すべての人が自分のお気に入りの + プログラムを手作業で移植しなければ ならないとしたら, + (途方もない膨大な作業の繰り返しをさておいたとしても) + それは明らかに不合理な話です. そこで, FreeBSD プロジェクトでは, + 標準のツールを使って移植のプロセスを + 自動化する巧妙な方法を考え出しました. + + なお, + これは単純ながら非常に柔軟なツールを組み合わせることで, + 非常に強力な働きをさせるという“Unix + 流”の作業の優れた実例です. + + + + ports コレクションはどのように動くのでしょうか? + + インターネットでは通常, tarball の形で + プログラムが配布されています. これは, Makefile + とソースコードで構成され, 普通は何らかの説明書 (あいにく, + いつもわかりやすく書かれているとは 限りませんが) + が付属しています. ことによるとコンフィグレーションスクリプトも + 含まれているかもしれません. + + 標準的な手順では, FTP で tarball を入手して, + 適当なディレクトリで展開します. 次に説明書を読んで, + 必要な変更をおこないます. そして, 設定スクリプトを実行し, 標準の + make + コマンドを使ってソースのコンパイルとインストールを + おこないます. + + FreeBSD の ports も tarball の仕組みを利用していますが, + これはユーザが 苦労して作業することを期待したものではなく, + どのようにすれば FreeBSD 上で + そのプログラムが動くようになるかという「ノウハウ」を スケルトン + を使用して収めているものです. スケルトンは, カスタマイズ済みの + Makefile も + 提供していますので, ほとんどすべての ports + は同じ手順でインストールすることが できます. + + もしあなたが (あなたの + FreeBSD システム または + FTP サイト にある) ports スケルトンを見ていて, + そこに潜んでいる あらゆる種類の先端的な + ロケット工学的なものを見つけられると期待していると, + つまらなそうなファイルやディレクトリがそこにあるだけなのを見て, + がっかりするかもしれません. + (ports を手に入れる方法については, すぐに + FreeBSD ports コレクションの入手方法 + の節でお話します.) + + “一体どうしたらいいんだ? ここにはソースコードが + ないじゃないか?” + というあなたの叫びが聞こえるようです. + + 心配いりません. おとなしく読んでいけば, すべてが (たぶん) + 明らかに なるでしょう. 試しに ports をインストールして, + 何が起きるのかを見てみましょう. + ここではサンプルとして開発者向けの便利なツール, + ElectricFence を選択します. + このスケルトンを選んだ理由は, 他の ports + に比べても素直で理解しやすく 書かれているからです. + + + 自宅で試してみる場合には, root + になる必要があるでしょう. + + + + + &prompt.root; cd /usr/ports/devel/ElectricFence +&prompt.root; make install +>> Checksum OK for ElectricFence-2.0.5.tar.gz. +===> Extracting for ElectricFence-2.0.5 +===> Patching for ElectricFence-2.0.5 +===> Applying FreeBSD patches for ElectricFence-2.0.5 +===> Configuring for ElectricFence-2.0.5 +===> Building for ElectricFence-2.0.5 +[大量のメッセージをコンパイラが出力します...] +===> Installing for ElectricFence-2.0.5 +===> Warning: your umask is "0002". + If this is not desired, set it to an appropriate value + and install this port again by ``make reinstall''. +install -c -o bin -g bin -m 444 /usr/ports/devel/ElectricFence/work/ElectricFence-2.0.5/libefence.a /usr/local/lib +install -c -o bin -g bin -m 444 /usr/ports/devel/ElectricFence/work/ElectricFence-2.0.5/libefence.3 /usr/local/man/man3 +===> Compressing manual pages for ElectricFence-2.0.5 +===> Registering installation for ElectricFence-2.0.5 + + + ここではあなたが混乱しないように, コンパイル時の出力を + すべて取り除いてあります. + + もしもあなた自身で実行されたら, 最初にこのような + 出力結果が得られるはずです:- + + + &prompt.root; make install +>> ElectricFence-2.0.5.tar.gz doesn't seem to exist on this system. +>> Attempting to fetch from ftp://ftp.doc.ic.ac.uk/Mirrors/sunsite.unc.edu/pub/Linux/devel/lang/c/. + + + make プログラムは, + あなたの手元にソースコードがないことを検出し, + 処理を続けられるようにソースを FTP でダウンロードしようとします. + この例では, あらかじめ手動でソースコードを用意してあったので, + 持ってくる必要はありませんでした. + + では, 続けて make + プログラムが何をしているのか見てみましょう. + + + + ソースコード tarball のありかを + 確認します. 手元にファイルが存在しなければ, FTP + サイトから入手しようとします. + + + + チェックサム + テストを実行して, その tarball + が事故か何かで途中で切れていたり, ASCII モードで + ダウンロードされていたり, + 転送中にニュートリノによって傷められたりして + 改変されたりしていないかどうかを確認します. + + + + tarball を一時的な作業用ディレクトリに展開します. + + + + FreeBSD 上でコンパイルしたり, 動作させるのに必要な + すべての パッチ + をソースコードに当てます. + + + + 構築のために必要な + コンフィグレーションスクリプトを実行します. + コンフィグレーションスクリプトの + 質問には正確に答えてください. + + + + (いよいよ!) ソースコードをコンパイルします. + + + + 実行形式のプログラム, マニュアル, + その他のサポートファイルを, + システムのプログラムと混ざってしまわないように + /usr/local 以下に インストールします. + ports はすべて同じ場所にインストールされ, + システムのあちこちにばらまかれることはありません. + + + + インストール結果はデータベースに登録されます. + これにより, + インストールしたプログラムがもしも気に入らなかったときも, + システムから すべての痕跡をきれいに 消去 + することができます. + + + + 以上のステップが make + の出力と一致しているかどうか確認してください. + 今まで確認していなかったのなら, + 今からするようにしてください! + + + + FreeBSD ports コレクションの入手 + + あるプログラムの FreeBSD port + を入手するには二つの方法があります. ひとつは FreeBSD CD-ROM を使う方法で, + もうひとつは インターネット接続 + を使う方法です. + + + CD-ROM からコンパイルする + + FreeBSD CD-ROM がドライブに入っており, + /cdrom にマウントされていると仮定すると + (マウントポイントが /cdrom + である必要があります), ただ普通に実行するだけで ports + を構築できるようになり, tarball + をネットワーク経由でダウンロードするのではなく + /cdrom/ports/distfiles/ + からさがすようになります (そこにあればの話ですが). + + CD-ROM にある port スケルトンを使いたければ, 他に + /etc/make.conf の + 変数を以下のようにセットする方法があります: + + +PORTSDIR= /cdrom/ports +DISTDIR= /tmp/distfiles +WRKDIRPREFIX= /tmp + + (任意の十分な空きスペースの場所を /tmp + とおいています). + 次に, /cdrom/ports 下の適宜のサブディレクトリに + cd して, 例のごとく + make install とタイプします. + WRKDIRPREFIX は port に + /tmp/cdrom/ports の下でビルドさせようとします; + 例えば, games/oneko は + /tmp/cdrom/ports/games/oneko の下で + ビルドされるでしょう. + + + ライセンスの制限により, いくつかの ports + でオリジナルのソースコードを CD-ROM + に入れることができなかったものがあることに注意してください. + この場合, インターネット経由で + ports をコンパイルする の + 節を参照してください. + + + + インターネット経由で ports をコンパイルする + + CD-ROM を持っていなかったり, その ports + の最新バージョンを確実に入手したい 場合は, その ports の スケルトン を + ダウンロードする必要があります. ところで, これは落し穴が + たくさんある作業に見えるかもしれませんが, + 実際には非常に簡単です. + + 初めに, あなたの動かしている FreeBSD + がリリースバージョンなら ports ページ + でその FreeBSD 用の “アップグレードキット” + を手にいれてください. このパッケージには, 最新の ports + をコンパイルするのに必要な, + リリース以降に更新されたファイルが含まれています. + + FreeBSD の FTP サーバーがその場で tarball + を作成できることを利用してスケルトンを入手すると + 非常に便利です. ここでは例として databases ディレクトリにある + gnats プログラムを使って説明します. + (角型かっこの中の文はコメントなので, 実際に実行する場合には, + これをタイプしないでください!):- + + + &prompt.root; cd /usr/ports +&prompt.root; mkdir databases +&prompt.root; cd databases +&prompt.root; ftp ftp.freebsd.org +[ユーザ名 `ftp' でログインし, パスワードを要求されたら, あなたの電子メール +アドレスを入力してください. バイナリモードを (イメージモードと呼ばれることも +あります) 使うのをお忘れなく!] +> cd /pub/FreeBSD/ports/ports/databases +> get gnats.tar +[gnats スケルトンの tarballs を取得] +> quit +&prompt.root; tar xf gnats.tar +[gnats スケルトンの展開] +&prompt.root; cd gnats +&prompt.root; make install +[gnats の構築とインストール] + + + さて何が起きるでしょうか? FTP + サイトにいつも通りに接続して, データベースの + サブディレクトリに移動します. get gnats.tar + とコマンドを入力すると, FTP サイトでは gnats ディレクトリを + tarred + にしてくれるのです. + + gnats スケルトンを展開したら, gnats ディレクトリへ移動して + ports を構築します. すでに + 説明したように, make の過程で + 手元にソースコードがないことを検出すると, + ソースコードを取得してから 展開し, + パッチ当てと構築をおこないます. + + それでは, 少し冒険をしてみましょう. 一つの ports + スケルトンを 取得するかわりに, たとえば ports + コレクションの中のデータベースの スケルトンをすべて, + サブディレクトリ全体を取得してみましょう. + やり方はほとんど同じです:- + + + &prompt.root; cd /usr/ports + &prompt.root; ftp ftp.freebsd.org + [ユーザ名 `ftp' でログインし, パスワードを要求されたら, あなたの電子メール +アドレスを入力してください. バイナリモードを (イメージモードと呼ばれることも +あります) 使うのをお忘れなく!] + > cd /pub/FreeBSD/ports/ports + > get databases.tar [データベースディレクトリの tarballs を取得] + > quit + &prompt.root; tar xf databases.tar [すべてのスケルトンを展開] + &prompt.root; cd databases + &prompt.root; make install [データベース ports 全部の構築とインストール] + + + + わずかばかりの簡単なコマンドで, この FreeBSD + マシン上にデータベース + プログラムを一揃い手に入れてしまいました! 一つの ports + スケルトンを取ってきて それを構築する場合との違いは, + すべてのディレクトリを一度に取得して, + 全部を一度にコンパイルしたということだけです. + かなり感動的だと思いませんか? + + たくさんの ports をインストールする つもりなら, + おそらくすべての ports ディレクトリをダウンロードしておく + 価値があるでしょう. + + + + + スケルトン + + スケルトン (訳注: skeleton とは骸骨のことです) とは, + 締め切りを守るため, 食事をするのを忘れるほど仕事にのめり込んだ + ハッカーたちのなれの果ての ことでしょうか? FreeBSD + の屋根裏に潜む, なにか気持ちの悪いものでしょうか? いいえ, + ここでスケルトンの意味するところは, ports の魔術を実現するのに + 必要とされるすべてのものを提供する最小の骨組みのことです. + + + <filename>Makefile</filename> + + スケルトンのもっとも重要な要素は Makefile です. Makefile + は ports を どのようにコンパイルし, + インストールをおこなうかを指示する + いろいろな命令を含んでいます. 以下に ElectricFence の Makefile + を示します:- + + +# New ports collection makefile for: Electric Fence +# Version required: 2.0.5 +# Date created: 13 November 1997 +# Whom: jraynard +# +# $Id$ +# + +DISTNAME= ElectricFence-2.0.5 +CATEGORIES= devel +MASTER_SITES= ${MASTER_SITE_SUNSITE} +MASTER_SITE_SUBDIR= devel/lang/c + +MAINTAINER= jraynard@freebsd.org + +MAN3= libefence.3 + +do-install: + ${INSTALL_DATA} ${WRKSRC}/libefence.a ${PREFIX}/lib + ${INSTALL_MAN} ${WRKSRC}/libefence.3 ${PREFIX}/man/man3 + +.include <bsd.port.mk> + + "#" で始まる行は, 人間のためのコメント行です. + (ほとんどの Unix のスクリプトと同じですね.) + + DISTNAMEtarball + の名前から拡張子を取ったものです. + + CATEGORIES + はこのプログラムの種類を示します. この場合, + 開発者向けのユーティリティということになります. + 完全なリストはこのハンドブックの カテゴリ + をみてください. + + MASTER_SITES はマスタ FTP サイトの URL + です. もしローカルシステムに tarball がない場合には, + ここから取得します. これは信頼できると考えられているサイトで, + 通常はそのプログラムを + インターネット上で公式に配布しているサイトです. + (そのソフトウェアがインターネット上で「公式に」 + 配布されているとしたら) + + MAINTAINER は, + 例えば新しいバージョンのプログラムが出た場合に, 必要であれば + スケルトンの更新をおこなう保守担当者の + 電子メールアドレスです. + + 次の数行はとりあえず飛ばします. + + .include <bsd.port.mk> + + この行は, この ports に必要なその他の命令やコマンドは + bsd.port.mk に + 入っているということを示しています. + これらはすべての ports で共通のものなので, + それぞれの Makefile に書いておく必要はありません. + そのため単一の標準ファイルに + まとめられているのです. + + ここでは Makefile + がどう働くかを詳細に調査するのが目的ではありませんので, + MAN3 で始まる行は, インストールの後に + ElectricFence のマニュアルを 圧縮するために使用される, + と言っておくだけで充分でしょう. これにより, + 貴重なディスクスペースが保護されているわけです. オリジナルの + port では install + ターゲットが用意されていないので, + do-install からの 3 行が この ports + によって生成されたファイルを + 正しい場所に置くために使用されます. + + + + <filename>files</filename> ディレクトリ + + ports のチェックサム算出には MD5 + アルゴリズムを使用しているので, この チェックサム を含んでいる + ファイルは md5 と呼ばれます. + ちょっと混乱するかもしれませんが, このファイルは + files という + 名前のディレクトリに置かれています. + + このディレクトリは, ports に必要だけれども, + 他のどこにも属さない 雑多なファイルも含んでいます. + + + + <filename>patches</filename> ディレクトリ + + このディレクトリには, FreeBSD + ですべてを正常に動作させるのに 必要な パッチ が含まれています. + + + + <filename>pkg</filename> ディレクトリ + + このディレクトリには, + 非常に役立つ三つのファイルが含まれています:- + + + + COMMENT — + プログラムについての 1 行の説明. + + + + DESCR — より詳細な説明. + + + + PLIST — + プログラムのインストール時に作成される, + すべてのファイルのリスト. + + + + + + + ports が動かないのですが, どうしたらよいでしょう + + おやおや. では, 次の四つのどれかをやってみてください: + + + + 自分で修正する. ports + の仕組みに関する技術的な詳細については, + アプリケーションの移殖方法をご覧ください. + + + + 苦情をいう. これは電子メールで だけ + にしてください! このようなメールの宛先は &a.ports; です. + なお, 必ず port の名前やバージョン, その port のソースや + distfile(s) を どこから入手したか, + どんなエラーが発生したのかを書いておいてください. + + + + 忘れてしまう. これはほとんどの場合最も簡単な方法です. + ports + のプログラムのうち必要不可欠な物はごくわずかです. + + + + FTP サイトからコンパイル済みのパッケージを入手する. + “マスター”パッケージコレクションは FreeBSD の + FTP サイトの + パッケージディレクトリ に置いてありますが, + まずあなたの近くのローカルミラーサイトを確認してください! + ソースからのコンパイルに挑戦するよりも, + パッケージを使うほうが (全体的に見て) + ずっと確実に動作するでしょうし, + より手っ取り早い方法でもあります. + システムにパッケージをインストールするには, &man.pkg.add.1; + を使ってください. + + + + + + 質問と回答集 + + + + Q. 私はモデムについての議論を + しているのかと思っていました??! + + A.なるほど, あなたはきっとコンピュータの背面についている + シリアルポートのことだと思ってしまったのでしょう. + あるバージョンの Unixから別のバージョンの Unix + へとプログラムを 移殖することを “porting” + というのですが, ここで我たちは “porting” の結果 + という意味で “port” を使っています. + (コンピュータに関わる人々の悪しき習慣として, + ひとつの同じ言葉を複数の + まったく違う意味として使うことがあるのです.) + + + + Q. 私は, 標準以外のプログラムのインストールには packages + を使うと 思っていたのですが. + + A. そのとおり. 通常は packages + が最も手早くて簡単な方法です. + + + + Q. それではどうして面倒な ports があるのですか? + + A. いくつかの理由があります:- + + + + いくつかのソフトウェアのライセンス条件には, + バイナリではなくソースコードでの + 配布を求めているものがあります. + + + + バイナリ配布を信用していない人もいます. + 少なくともソースコード があれば, ソースコードを読んで, + (理論的には) 潜在的な問題点を自分で + 見つけ出すこともできるはずです. + + + + ローカルなパッチを入手した場合, + それを自分で追加するために + ソースコードが必要になります. + + + + プログラムがいかにコンパイルされるべきかについて, + あなたはパッケージを作った人とは + 異なる見解を持っているかもしれません. + どんな最適化オプションをつけるべきかとか, + デバッグバージョンを作ってから それを strip + するべきだとか, いや, そうするべきでない, などなど, + 確固たる見解を持っている人もいるでしょう. + + + + ソースコードを手元に置いておきたい人たちもいます. + 彼らは, 退屈したときに眺めたり, あちこち解析してみたり, + ソースコードを 借用したり (もちろん, + ライセンスが許せばの話ですが) するのです. + + + + あなたがソースコードを持っていなければ, + それはソフトウェアとは 言えませんね! ;-) + + + + + + + Q. パッチとは何ですか? + + A. パッチとは, + あるバージョンから他のバージョンへどのように変更するかを + 示す, (通常は) 小さなファイルです. “23 + 行目を削除”, “468 行目の後に これらの 2 + 行を追加”, または“197 + 行目をこのように変更”というような 内容を含んでいます. + これは, “diff” + という名前のプログラムで生成されます. + + + + + Q. tarball とは一体何ですか? + + A. .tar または + .tar.gz という拡張子を持つファイルです. + (.tar.Z のようなバリエーションも + ありますし, DOS のファイルシステム用に + .tgz + と短縮される場合もあります.) + + これは基本的に, 一つのファイルに固めた + (.tar) ディレクトリツリーです. + 圧縮されている (.gz) 場合もあります. + これは元々 Tape + ARchives (訳注: テープアーカイブ) + (このため tar という名前なのです) + で使われていたものなのですが, + インターネット上でプログラムのソースコードを配布するために + 広く使われている方法です. + + これらのファイルの中身を見たり, + 展開したりすることもできます. FreeBSD + の基本システムに付属する Unix 標準の tar + コマンドを使ってみると 次のようになります:- + + + &prompt.user; tar tvzf foobar.tar.gz +&prompt.user; tar xzvf foobar.tar.gz +&prompt.user; tar tvf foobar.tar +&prompt.user; tar xvf foobar.tar + + + + + + + Q. チェックサムとは何ですか? + + A. これは, + チェックしたいファイル中のすべてのデータを加えて生成した + 数値です. 何か文字が書き換わっていたら, + チェックサムが一致しなくなります. そのため, + 単純な比較だけで違いを見つけることができるのです. + (実際には, 文字の位置が入れ替わるなどの, + 単純な加算ではわからない問題も + 見つけることができる複雑な方法で計算されています.) + + + + Q. 私は, CD-ROM から ports + をコンパイルする にしたがって ports + をインストールしていました. kermit + をインストールしようとするまではうまくいっていました:- + + + &prompt.root; make install +>> cku190.tar.gz doesn't seem to exist on this system. +>> Attempting to fetch from ftp://kermit.columbia.edu/kermit/archives/. + + + なぜ cku190.tar.gz が見つからないのでしょうか? 不良品の + CD-ROM を買ってしまったのでしょうか? + + A. Kermit の権利を持つチームは, 私たちの CDROM に kermit + の tarball を 入れることを許可しませんでした. + 申し分けありませんが, 手動でファイルを 入手してください. + このようなエラーメッセージが出たのは, + あなたがそのときインターネットに 接続していなかったためです. + あらかじめ上記のサイトのいずれかからファイルを + ダウンロードしておけば, プロセスを再開することができます. + (ダウンロードの際には, + あなたに最も近いサイトを選ぶようにしてください. そうすれば, + 時間とインターネットの帯域の節約になります) + + + + Q. kermit の tarball を入手しましたが, + /usr/ports/distfiles に + ファイルを置こうとすると, + 書き込み権がないというエラーがでます. + + A. ports のしくみは + /usr/ports/distfiles から tarball + を探します. しかし, これは read-only の CD-ROM + へのシンボリックリンクなので, + ここにファイルを置くことはできません. 次のようにすれば, + 他の場所を探すよう ports に指示することができます. + + + &prompt.root; make DISTDIR=/where/you/put/it install + + + + + Q. ports では, すべてを /usr/ports + に置いたときだけ動作するのでしょうか? + システムの管理者によると, 私の個人的なファイルは + /u/people/guests/wurzburger + に入れなければならないのですが, これでは + うまくいかないように思います. + + A. PORTSDIR 変数と + PREFIX 変数を変更することで, + 違うディレクトリを 使用することができます. 例えば, + + + &prompt.root; make PORTSDIR=/u/people/guests/wurzburger/ports install + + + とすると, ports は + /u/people/guests/wurzburger/ports + でコンパイルされ, すべて /usr/local + 以下にインストールされます. + + + &prompt.root; make PREFIX=/u/people/guests/wurzburger/local install + + + この場合, コンパイルは /usr/ports + でおこない, + /u/people/guests/wurzburger/local + にインストールします. もちろん, + 以下のように両者を組み合わせることも可能です. + + + &prompt.root; make PORTSDIR=.../ports PREFIX=.../local install + + + (省略せずに記述したら, + このページに収めるには長すぎるのですが, + 考え方は理解していただけたと思います) + + もし ports をインストールするたびに, + これらを毎回タイプするのが 気に入らないのであれば, + (正直に言って, 誰もそう思わないでしょう) + これらを環境変数にセットしてしまうという手があります. + + + + Q. 私は, FreeBSD の CD-ROM を持っていませんが, + 私はすべての tarball を 私のシステムに置いておきたいのです. + そうすれば, 私は ports をインストール するたびに, + 毎回ダウンロードが終わるのを待たなくてすむでしょう. + これを一度におこなう簡単な方法はありませんか? + + A. ports コレクション全体の tarball を持ってくるには, + 次のようにしてください. + + + &prompt.root; cd /usr/ports +&prompt.root; make fetch + + + ports の下のディレクトリひとつの tarball + を持ってくるには, 次のように してください. + + + &prompt.root; cd /usr/ports/directory +&prompt.root; make fetch + + + ports をひとつだけ持ってくる方法は, + きっと既にご存知だと思います. + + + + Q. マスタ FTP サイトから tarball を持ってくるより, + 近くにある FreeBSD の + ミラーサイトから持ってきた方が速いはずです. MASTER_SITES + に書かれている サイト以外から持ってくるように ports + に指示する方法はありませんか? + + A. もちろんあります. 例えば ftp.FreeBSD.ORG が + MASTER_SITES に書かれている + サイトより近いとしたら, 以下のようにしてください. + + + &prompt.root; cd /usr/ports/directory +&prompt.root; make MASTER_SITE_OVERRIDE=ftp://ftp.FreeBSD.ORG/pub/FreeBSD/ports/distfiles/ fetch + + + + + Q. ダウンロードをする前に, + どんなファイルが必要なのか知りたいのですが. + + A. make fetch-list とすると, ports + に必要なファイルの一覧を表示できます. + + + + Q. ports のコンパイルを途中で止める方法はありますか? + 私はインストールをする前に + いろいろとソースコードを解析したいのですが, 毎回 control-C + を打たなければならないのが少し面倒です. + + A. make extract を実行すると, + ファイル転送とソースコードの展開まで + おこなったところで停止します. + + + + Q. 自分で ports を作ろうとしています. 私の作ったパッチが + 正しく処理できることを確認できるように, + コンパイルを止めたいのです. パッチのための make + extract のようなものはありませんか? + + A. あります. make patch + があなたのお望みのものです. おそらく + PATCH_DEBUG オプションも同様に + お役に立つことでしょう. ところで, + あなたの努力に感謝いたします!! + + + + Q. あるコンパイルオプションはバグの + 原因になるという話を聞きました. 本当なのでしょうか? + どうやったら正しい設定で ports + をコンパイルできますか? + + A. 本当です. gcc の バージョン 2.6.3 + (FreeBSDの 2.1.0 と 2.1.5 に付属している バージョン) では, + オプションを + オプションなしで + 使うと, バグのあるコードを出力します (ほとんどの ports は + オプションを 使いません). + コンバイラオプションは次のように定義 すべき + です. + + + &prompt.root; make CFLAGS='-O2 -fno-strength-reduce' install + + + これを /etc/make.conf + に書いておくこともできますが, 残念なことに すべての ports + がこの指定を尊重してくれる 訳ではありません. + もっとも確実なのは make configure + を実行し, ソースディレクトリの Makefile + を見て手で修整することですが, ソースが + 多くのサブディレクトリにわかれていて, 各々に Makefile + がある場合は 大変な仕事になります. + + + + Q. ports がたくさんありすぎて, + 私の欲しいものがなかなか見つけられません. どんな ports + が使えるのか, リストはどこかにありませんか? + + A. /usr/ports の中にある + INDEX ファイルを見てみましょう. + あるキーワードで ports コレクションを検索したければ, + それも可能です. たとえば, + 以下のようにすればプログラミング言語 LISP に関連した ports + を見つけることができます: + + &prompt.user; cd /usr/ports +&prompt.user; make search key=lisp + + + + Q. foo ports + をインストールしたいのですが, それのコンパイルは + すぐに停止して, bar ports + のコンパイルが始まってしまいます. 一体どうして? + + A. foo ports が, + bar ports + の提供する何らかの機能を必要としているからです. 例えば + foo が画像を使うとすると, + bar は画像処理に必要な + ライブラリを持っている, などです. または, + barfoo + をコンパイルするのに必要なツールなのかもしれません. + + + + Q. ports から + grizzle + プログラムをインストールしましたが, まったく + ディスクスペースの浪費です. 削除したいのですが, + すべてのファイルが どこへインストールされたのかわかりません. + 何か手がかりはありませんか? + + A. 大丈夫, 次のようにしてください. + + + &prompt.root; pkg_delete grizzle-6.5 + + + + + Q. ちょっと待ってください. + 削除しようとするコマンドのバージョン番号を + 知っていなくてはならないのでしょうか? あなたは, + 私がバージョン番号を + 覚えていることを本気で当てにしているのでしょうか? + + A. そんなことはありません. + バージョン番号は次のようにすればわかります. + + + &prompt.root; pkg_info -a | grep grizzle +Information for grizzle-6.5: +grizzle-6.5 - the combined piano tutorial, LOGO interpreter and shoot 'em up arcade game. + + + + + Q. ディスク容量のことなのですが, ports + のディレクトリは非常に膨大な容量を 使うように見えます. + 残しておいた方がよいのでしょうか? 削除してしまっても + よいのでしょうか? + + A. はい. インストールが首尾よく終わり, + もうソースコードが必要でないと思うなら, + それらを残しておく理由はないでしょう. 一番よい方法は, + 次の通りです. + + + &prompt.root; cd /usr/ports +&prompt.root; make clean + + + これは, すべての ports のサブディレクトリを調べ, 各 + ports のスケルトン以外の削除をおこないます. + + + + Q. これを試してみたのですが, tarball や ports + で使われたファイルが distfiles + ディレクトリに残っています. + これも削除してしまっても大丈夫ですか? + + A. はい. それを使った作業が終わったのであれば, + 削除してしまっても大丈夫です. + + + + Q. + 私はとてもとてもたくさんのプログラムを楽しみたいのです. + 一度にすべての ports + をインストールする方法はありませんか? + + A. 次のようにしてください. + + + &prompt.root; cd /usr/ports +&prompt.root; make install + + + + + Q. やってみました. 時間がとてもかかるだろうと思ったので, + そのまま実行を 続けさせて, 私は寝ました. + 翌朝コンピュータを見てみると, 三つ半の ports しか + 処理が終わっていませんでした. + なにか悪かったのでしょうか? + + A. これは ports の中には私たちの決められないこと + (例えば, あなたが A4 の 用紙に印刷したいのか, US + レターサイズの用紙に印刷したいのかなど) について + 質問してくるものがあるからです. + それらの質問には手動で答える必要があります. + + + + Q. + 私は一日中モニタの前に座って過ごしたりしたくないのですが. + 何かよいアイデアはありませんか? + + A. では, あなたが寝に / 仕事に / + 公園にいく前に以下を実行してください:- + + + &prompt.root; cd /usr/ports +&prompt.root; make -DBATCH install + + + これでユーザの入力を要求しないすべての ports + をインストールします. そして, 戻ってきてから, + 次のように実行してください. + + + &prompt.root; cd /usr/ports +&prompt.root; make -DIS_INTERACTIVE install + + + そして, 残りの作業を実行してください. + + + + Q. 私たちは ports コレクションにある + frobble を使っています. ですが, + 私たちの必要に応じて ports を変更したところがあるのです. + 自分でパッケージを作って, それを私たちのサイトのまわりに + 簡単に配布できるような方法がありますか? + + A. もちろんあります. + 変更点をパッチにする方法は知っていますよね:- + + + &prompt.root; cd /usr/ports/somewhere/frobble +&prompt.root; make extract +&prompt.root; cd work/frobble-2.8 +[あなたのパッチを当ててください] +&prompt.root; cd ../.. +&prompt.root; make package + + + + + Q. この ports の技術は本当に賢いですね. + どのようにして動いているのか + 私はどうしても知りたいと思います. その秘密は何ですか? + + A. 秘密は一切ありません. Makefiles + ディレクトリ にある + bsd.ports.mk と + bsd.ports.subdir.mk + ファイルを見るだけです. + + + 複雑なシェルスクリプトを嫌う読者は, + このリンクを追いかけないほうが よいでしょう. + + + + + + + diff --git a/ja_JP.eucJP/books/porters-handbook/book.sgml b/ja_JP.eucJP/books/porters-handbook/book.sgml new file mode 100644 index 0000000000..0bae98ef4c --- /dev/null +++ b/ja_JP.eucJP/books/porters-handbook/book.sgml @@ -0,0 +1,1139 @@ + + + + アプリケーションのインストール : ports コレクション + + 原作: &a.jraynard;. + + 訳: &a.jp.masaki;, &a.jp.saeki;. + 11 November 1996. + + FreeBSD の ports コレクションを利用すると, 最小限の労力で + 非常に幅広くのアプリケーションのコンパイルとインストールがおこなえます. + + やってみたことのある方はよくご存知でしょうが, + オープンな規格とは 全くの誇大広告であって, + あるプログラムを異なるバージョンの Unix 上で + 動作させることは退屈で手間のかかる仕事です. + 求めているプログラムが自分のシステムでうまくコンパイルでき, + 正しいところにインストールできて, + 完璧に動作するとしたらとてもラッキーです. しかし, + あいにくこれは滅多にないことなのです. + ほとんどのプログラムについて, + あなたは髪を掻きむしることになるでしょうし, + かなりのプログラムでは, 白髪混じりの頭になってしまったり, + あるいは慢性の 脱毛症にすら なってしまうかもしれません... + + いくつかのソフトウェアディストリビューションでは, + 設定用のスクリプトを + 配布することでこの問題を解決しようとしています. + これらのスクリプトの中には非常に精巧なものもありますが, + 残念ながら, 中にはこれまで + 聞いたこともないようなシステムの名前をしゃあしゃあと + 言い放ったうえに, まるでシステムレベルの Unix + プログラミングに関する 最終試験のような, + たくさんの質問をしてくる場合があります. (例えば, + このシステムの gethitlist 関数は fromboz への const + ポインタを 返しますか? それとも const fromboz + へのポインタを返しますか?, このシステムには + Foonix スタイルの, 容認できない例外処理をおこなう + ルーチンがありますか? もしもないとしたら, + それはなぜですか?) + + 幸いなことに, ports コレクションがあれば, + これらのきつい作業はすべて 完了しています. make + install とタイプするだけで, 動作するプログラムを + 入手することができるのです. + + + なぜ ports コレクションを作ったのか? + + FreeBSD の基本システムは, + 非常に多くのツールやユーティリティから 構成されています. しかし, + よく使われるプログラムのうち多くのものが, + この基本システムには含まれていません. その理由は:- + + + + ある Lisp ベースのエディタのように, + それがないと生きていけないと 言う人もいれば, + ディスクの無駄だと言う人もいるようなプログラム. + + + + 基本システムに組み込むには特殊すぎるプログラム. (CAD + やデータベースなど.) + + + + “時間のある時に, + ちょっと見ておかなければ”というような類の, + それがシステムに含まれていないことが + 致命的とは言えないプログラム. (おそらく, + 何らかの言語などでしょう.) + + + + FreeBSD + のような真面目なオペレーティングシステムの一部として + 供給するには遊びが過ぎるようなプログラム. ;-) + + + + たくさんのプログラムを基本システムに組み込んだとしても, + もっともっと 組み込みたいという要求が出てくるので, + どこかで制限を引かなくてはならないため. (そうしなければ + FreeBSD の配布物は, + とてつもなく膨大になってしまうでしょう.) + + + + すべての人が自分のお気に入りの + プログラムを手作業で移植しなければ ならないとしたら, + (途方もない膨大な作業の繰り返しをさておいたとしても) + それは明らかに不合理な話です. そこで, FreeBSD プロジェクトでは, + 標準のツールを使って移植のプロセスを + 自動化する巧妙な方法を考え出しました. + + なお, + これは単純ながら非常に柔軟なツールを組み合わせることで, + 非常に強力な働きをさせるという“Unix + 流”の作業の優れた実例です. + + + + ports コレクションはどのように動くのでしょうか? + + インターネットでは通常, tarball の形で + プログラムが配布されています. これは, Makefile + とソースコードで構成され, 普通は何らかの説明書 (あいにく, + いつもわかりやすく書かれているとは 限りませんが) + が付属しています. ことによるとコンフィグレーションスクリプトも + 含まれているかもしれません. + + 標準的な手順では, FTP で tarball を入手して, + 適当なディレクトリで展開します. 次に説明書を読んで, + 必要な変更をおこないます. そして, 設定スクリプトを実行し, 標準の + make + コマンドを使ってソースのコンパイルとインストールを + おこないます. + + FreeBSD の ports も tarball の仕組みを利用していますが, + これはユーザが 苦労して作業することを期待したものではなく, + どのようにすれば FreeBSD 上で + そのプログラムが動くようになるかという「ノウハウ」を スケルトン + を使用して収めているものです. スケルトンは, カスタマイズ済みの + Makefile も + 提供していますので, ほとんどすべての ports + は同じ手順でインストールすることが できます. + + もしあなたが (あなたの + FreeBSD システム または + FTP サイト にある) ports スケルトンを見ていて, + そこに潜んでいる あらゆる種類の先端的な + ロケット工学的なものを見つけられると期待していると, + つまらなそうなファイルやディレクトリがそこにあるだけなのを見て, + がっかりするかもしれません. + (ports を手に入れる方法については, すぐに + FreeBSD ports コレクションの入手方法 + の節でお話します.) + + “一体どうしたらいいんだ? ここにはソースコードが + ないじゃないか?” + というあなたの叫びが聞こえるようです. + + 心配いりません. おとなしく読んでいけば, すべてが (たぶん) + 明らかに なるでしょう. 試しに ports をインストールして, + 何が起きるのかを見てみましょう. + ここではサンプルとして開発者向けの便利なツール, + ElectricFence を選択します. + このスケルトンを選んだ理由は, 他の ports + に比べても素直で理解しやすく 書かれているからです. + + + 自宅で試してみる場合には, root + になる必要があるでしょう. + + + + + &prompt.root; cd /usr/ports/devel/ElectricFence +&prompt.root; make install +>> Checksum OK for ElectricFence-2.0.5.tar.gz. +===> Extracting for ElectricFence-2.0.5 +===> Patching for ElectricFence-2.0.5 +===> Applying FreeBSD patches for ElectricFence-2.0.5 +===> Configuring for ElectricFence-2.0.5 +===> Building for ElectricFence-2.0.5 +[大量のメッセージをコンパイラが出力します...] +===> Installing for ElectricFence-2.0.5 +===> Warning: your umask is "0002". + If this is not desired, set it to an appropriate value + and install this port again by ``make reinstall''. +install -c -o bin -g bin -m 444 /usr/ports/devel/ElectricFence/work/ElectricFence-2.0.5/libefence.a /usr/local/lib +install -c -o bin -g bin -m 444 /usr/ports/devel/ElectricFence/work/ElectricFence-2.0.5/libefence.3 /usr/local/man/man3 +===> Compressing manual pages for ElectricFence-2.0.5 +===> Registering installation for ElectricFence-2.0.5 + + + ここではあなたが混乱しないように, コンパイル時の出力を + すべて取り除いてあります. + + もしもあなた自身で実行されたら, 最初にこのような + 出力結果が得られるはずです:- + + + &prompt.root; make install +>> ElectricFence-2.0.5.tar.gz doesn't seem to exist on this system. +>> Attempting to fetch from ftp://ftp.doc.ic.ac.uk/Mirrors/sunsite.unc.edu/pub/Linux/devel/lang/c/. + + + make プログラムは, + あなたの手元にソースコードがないことを検出し, + 処理を続けられるようにソースを FTP でダウンロードしようとします. + この例では, あらかじめ手動でソースコードを用意してあったので, + 持ってくる必要はありませんでした. + + では, 続けて make + プログラムが何をしているのか見てみましょう. + + + + ソースコード tarball のありかを + 確認します. 手元にファイルが存在しなければ, FTP + サイトから入手しようとします. + + + + チェックサム + テストを実行して, その tarball + が事故か何かで途中で切れていたり, ASCII モードで + ダウンロードされていたり, + 転送中にニュートリノによって傷められたりして + 改変されたりしていないかどうかを確認します. + + + + tarball を一時的な作業用ディレクトリに展開します. + + + + FreeBSD 上でコンパイルしたり, 動作させるのに必要な + すべての パッチ + をソースコードに当てます. + + + + 構築のために必要な + コンフィグレーションスクリプトを実行します. + コンフィグレーションスクリプトの + 質問には正確に答えてください. + + + + (いよいよ!) ソースコードをコンパイルします. + + + + 実行形式のプログラム, マニュアル, + その他のサポートファイルを, + システムのプログラムと混ざってしまわないように + /usr/local 以下に インストールします. + ports はすべて同じ場所にインストールされ, + システムのあちこちにばらまかれることはありません. + + + + インストール結果はデータベースに登録されます. + これにより, + インストールしたプログラムがもしも気に入らなかったときも, + システムから すべての痕跡をきれいに 消去 + することができます. + + + + 以上のステップが make + の出力と一致しているかどうか確認してください. + 今まで確認していなかったのなら, + 今からするようにしてください! + + + + FreeBSD ports コレクションの入手 + + あるプログラムの FreeBSD port + を入手するには二つの方法があります. ひとつは FreeBSD CD-ROM を使う方法で, + もうひとつは インターネット接続 + を使う方法です. + + + CD-ROM からコンパイルする + + FreeBSD CD-ROM がドライブに入っており, + /cdrom にマウントされていると仮定すると + (マウントポイントが /cdrom + である必要があります), ただ普通に実行するだけで ports + を構築できるようになり, tarball + をネットワーク経由でダウンロードするのではなく + /cdrom/ports/distfiles/ + からさがすようになります (そこにあればの話ですが). + + CD-ROM にある port スケルトンを使いたければ, 他に + /etc/make.conf の + 変数を以下のようにセットする方法があります: + + +PORTSDIR= /cdrom/ports +DISTDIR= /tmp/distfiles +WRKDIRPREFIX= /tmp + + (任意の十分な空きスペースの場所を /tmp + とおいています). + 次に, /cdrom/ports 下の適宜のサブディレクトリに + cd して, 例のごとく + make install とタイプします. + WRKDIRPREFIX は port に + /tmp/cdrom/ports の下でビルドさせようとします; + 例えば, games/oneko は + /tmp/cdrom/ports/games/oneko の下で + ビルドされるでしょう. + + + ライセンスの制限により, いくつかの ports + でオリジナルのソースコードを CD-ROM + に入れることができなかったものがあることに注意してください. + この場合, インターネット経由で + ports をコンパイルする の + 節を参照してください. + + + + インターネット経由で ports をコンパイルする + + CD-ROM を持っていなかったり, その ports + の最新バージョンを確実に入手したい 場合は, その ports の スケルトン を + ダウンロードする必要があります. ところで, これは落し穴が + たくさんある作業に見えるかもしれませんが, + 実際には非常に簡単です. + + 初めに, あなたの動かしている FreeBSD + がリリースバージョンなら ports ページ + でその FreeBSD 用の “アップグレードキット” + を手にいれてください. このパッケージには, 最新の ports + をコンパイルするのに必要な, + リリース以降に更新されたファイルが含まれています. + + FreeBSD の FTP サーバーがその場で tarball + を作成できることを利用してスケルトンを入手すると + 非常に便利です. ここでは例として databases ディレクトリにある + gnats プログラムを使って説明します. + (角型かっこの中の文はコメントなので, 実際に実行する場合には, + これをタイプしないでください!):- + + + &prompt.root; cd /usr/ports +&prompt.root; mkdir databases +&prompt.root; cd databases +&prompt.root; ftp ftp.freebsd.org +[ユーザ名 `ftp' でログインし, パスワードを要求されたら, あなたの電子メール +アドレスを入力してください. バイナリモードを (イメージモードと呼ばれることも +あります) 使うのをお忘れなく!] +> cd /pub/FreeBSD/ports/ports/databases +> get gnats.tar +[gnats スケルトンの tarballs を取得] +> quit +&prompt.root; tar xf gnats.tar +[gnats スケルトンの展開] +&prompt.root; cd gnats +&prompt.root; make install +[gnats の構築とインストール] + + + さて何が起きるでしょうか? FTP + サイトにいつも通りに接続して, データベースの + サブディレクトリに移動します. get gnats.tar + とコマンドを入力すると, FTP サイトでは gnats ディレクトリを + tarred + にしてくれるのです. + + gnats スケルトンを展開したら, gnats ディレクトリへ移動して + ports を構築します. すでに + 説明したように, make の過程で + 手元にソースコードがないことを検出すると, + ソースコードを取得してから 展開し, + パッチ当てと構築をおこないます. + + それでは, 少し冒険をしてみましょう. 一つの ports + スケルトンを 取得するかわりに, たとえば ports + コレクションの中のデータベースの スケルトンをすべて, + サブディレクトリ全体を取得してみましょう. + やり方はほとんど同じです:- + + + &prompt.root; cd /usr/ports + &prompt.root; ftp ftp.freebsd.org + [ユーザ名 `ftp' でログインし, パスワードを要求されたら, あなたの電子メール +アドレスを入力してください. バイナリモードを (イメージモードと呼ばれることも +あります) 使うのをお忘れなく!] + > cd /pub/FreeBSD/ports/ports + > get databases.tar [データベースディレクトリの tarballs を取得] + > quit + &prompt.root; tar xf databases.tar [すべてのスケルトンを展開] + &prompt.root; cd databases + &prompt.root; make install [データベース ports 全部の構築とインストール] + + + + わずかばかりの簡単なコマンドで, この FreeBSD + マシン上にデータベース + プログラムを一揃い手に入れてしまいました! 一つの ports + スケルトンを取ってきて それを構築する場合との違いは, + すべてのディレクトリを一度に取得して, + 全部を一度にコンパイルしたということだけです. + かなり感動的だと思いませんか? + + たくさんの ports をインストールする つもりなら, + おそらくすべての ports ディレクトリをダウンロードしておく + 価値があるでしょう. + + + + + スケルトン + + スケルトン (訳注: skeleton とは骸骨のことです) とは, + 締め切りを守るため, 食事をするのを忘れるほど仕事にのめり込んだ + ハッカーたちのなれの果ての ことでしょうか? FreeBSD + の屋根裏に潜む, なにか気持ちの悪いものでしょうか? いいえ, + ここでスケルトンの意味するところは, ports の魔術を実現するのに + 必要とされるすべてのものを提供する最小の骨組みのことです. + + + <filename>Makefile</filename> + + スケルトンのもっとも重要な要素は Makefile です. Makefile + は ports を どのようにコンパイルし, + インストールをおこなうかを指示する + いろいろな命令を含んでいます. 以下に ElectricFence の Makefile + を示します:- + + +# New ports collection makefile for: Electric Fence +# Version required: 2.0.5 +# Date created: 13 November 1997 +# Whom: jraynard +# +# $Id$ +# + +DISTNAME= ElectricFence-2.0.5 +CATEGORIES= devel +MASTER_SITES= ${MASTER_SITE_SUNSITE} +MASTER_SITE_SUBDIR= devel/lang/c + +MAINTAINER= jraynard@freebsd.org + +MAN3= libefence.3 + +do-install: + ${INSTALL_DATA} ${WRKSRC}/libefence.a ${PREFIX}/lib + ${INSTALL_MAN} ${WRKSRC}/libefence.3 ${PREFIX}/man/man3 + +.include <bsd.port.mk> + + "#" で始まる行は, 人間のためのコメント行です. + (ほとんどの Unix のスクリプトと同じですね.) + + DISTNAMEtarball + の名前から拡張子を取ったものです. + + CATEGORIES + はこのプログラムの種類を示します. この場合, + 開発者向けのユーティリティということになります. + 完全なリストはこのハンドブックの カテゴリ + をみてください. + + MASTER_SITES はマスタ FTP サイトの URL + です. もしローカルシステムに tarball がない場合には, + ここから取得します. これは信頼できると考えられているサイトで, + 通常はそのプログラムを + インターネット上で公式に配布しているサイトです. + (そのソフトウェアがインターネット上で「公式に」 + 配布されているとしたら) + + MAINTAINER は, + 例えば新しいバージョンのプログラムが出た場合に, 必要であれば + スケルトンの更新をおこなう保守担当者の + 電子メールアドレスです. + + 次の数行はとりあえず飛ばします. + + .include <bsd.port.mk> + + この行は, この ports に必要なその他の命令やコマンドは + bsd.port.mk に + 入っているということを示しています. + これらはすべての ports で共通のものなので, + それぞれの Makefile に書いておく必要はありません. + そのため単一の標準ファイルに + まとめられているのです. + + ここでは Makefile + がどう働くかを詳細に調査するのが目的ではありませんので, + MAN3 で始まる行は, インストールの後に + ElectricFence のマニュアルを 圧縮するために使用される, + と言っておくだけで充分でしょう. これにより, + 貴重なディスクスペースが保護されているわけです. オリジナルの + port では install + ターゲットが用意されていないので, + do-install からの 3 行が この ports + によって生成されたファイルを + 正しい場所に置くために使用されます. + + + + <filename>files</filename> ディレクトリ + + ports のチェックサム算出には MD5 + アルゴリズムを使用しているので, この チェックサム を含んでいる + ファイルは md5 と呼ばれます. + ちょっと混乱するかもしれませんが, このファイルは + files という + 名前のディレクトリに置かれています. + + このディレクトリは, ports に必要だけれども, + 他のどこにも属さない 雑多なファイルも含んでいます. + + + + <filename>patches</filename> ディレクトリ + + このディレクトリには, FreeBSD + ですべてを正常に動作させるのに 必要な パッチ が含まれています. + + + + <filename>pkg</filename> ディレクトリ + + このディレクトリには, + 非常に役立つ三つのファイルが含まれています:- + + + + COMMENT — + プログラムについての 1 行の説明. + + + + DESCR — より詳細な説明. + + + + PLIST — + プログラムのインストール時に作成される, + すべてのファイルのリスト. + + + + + + + ports が動かないのですが, どうしたらよいでしょう + + おやおや. では, 次の四つのどれかをやってみてください: + + + + 自分で修正する. ports + の仕組みに関する技術的な詳細については, + アプリケーションの移殖方法をご覧ください. + + + + 苦情をいう. これは電子メールで だけ + にしてください! このようなメールの宛先は &a.ports; です. + なお, 必ず port の名前やバージョン, その port のソースや + distfile(s) を どこから入手したか, + どんなエラーが発生したのかを書いておいてください. + + + + 忘れてしまう. これはほとんどの場合最も簡単な方法です. + ports + のプログラムのうち必要不可欠な物はごくわずかです. + + + + FTP サイトからコンパイル済みのパッケージを入手する. + “マスター”パッケージコレクションは FreeBSD の + FTP サイトの + パッケージディレクトリ に置いてありますが, + まずあなたの近くのローカルミラーサイトを確認してください! + ソースからのコンパイルに挑戦するよりも, + パッケージを使うほうが (全体的に見て) + ずっと確実に動作するでしょうし, + より手っ取り早い方法でもあります. + システムにパッケージをインストールするには, &man.pkg.add.1; + を使ってください. + + + + + + 質問と回答集 + + + + Q. 私はモデムについての議論を + しているのかと思っていました??! + + A.なるほど, あなたはきっとコンピュータの背面についている + シリアルポートのことだと思ってしまったのでしょう. + あるバージョンの Unixから別のバージョンの Unix + へとプログラムを 移殖することを “porting” + というのですが, ここで我たちは “porting” の結果 + という意味で “port” を使っています. + (コンピュータに関わる人々の悪しき習慣として, + ひとつの同じ言葉を複数の + まったく違う意味として使うことがあるのです.) + + + + Q. 私は, 標準以外のプログラムのインストールには packages + を使うと 思っていたのですが. + + A. そのとおり. 通常は packages + が最も手早くて簡単な方法です. + + + + Q. それではどうして面倒な ports があるのですか? + + A. いくつかの理由があります:- + + + + いくつかのソフトウェアのライセンス条件には, + バイナリではなくソースコードでの + 配布を求めているものがあります. + + + + バイナリ配布を信用していない人もいます. + 少なくともソースコード があれば, ソースコードを読んで, + (理論的には) 潜在的な問題点を自分で + 見つけ出すこともできるはずです. + + + + ローカルなパッチを入手した場合, + それを自分で追加するために + ソースコードが必要になります. + + + + プログラムがいかにコンパイルされるべきかについて, + あなたはパッケージを作った人とは + 異なる見解を持っているかもしれません. + どんな最適化オプションをつけるべきかとか, + デバッグバージョンを作ってから それを strip + するべきだとか, いや, そうするべきでない, などなど, + 確固たる見解を持っている人もいるでしょう. + + + + ソースコードを手元に置いておきたい人たちもいます. + 彼らは, 退屈したときに眺めたり, あちこち解析してみたり, + ソースコードを 借用したり (もちろん, + ライセンスが許せばの話ですが) するのです. + + + + あなたがソースコードを持っていなければ, + それはソフトウェアとは 言えませんね! ;-) + + + + + + + Q. パッチとは何ですか? + + A. パッチとは, + あるバージョンから他のバージョンへどのように変更するかを + 示す, (通常は) 小さなファイルです. “23 + 行目を削除”, “468 行目の後に これらの 2 + 行を追加”, または“197 + 行目をこのように変更”というような 内容を含んでいます. + これは, “diff” + という名前のプログラムで生成されます. + + + + + Q. tarball とは一体何ですか? + + A. .tar または + .tar.gz という拡張子を持つファイルです. + (.tar.Z のようなバリエーションも + ありますし, DOS のファイルシステム用に + .tgz + と短縮される場合もあります.) + + これは基本的に, 一つのファイルに固めた + (.tar) ディレクトリツリーです. + 圧縮されている (.gz) 場合もあります. + これは元々 Tape + ARchives (訳注: テープアーカイブ) + (このため tar という名前なのです) + で使われていたものなのですが, + インターネット上でプログラムのソースコードを配布するために + 広く使われている方法です. + + これらのファイルの中身を見たり, + 展開したりすることもできます. FreeBSD + の基本システムに付属する Unix 標準の tar + コマンドを使ってみると 次のようになります:- + + + &prompt.user; tar tvzf foobar.tar.gz +&prompt.user; tar xzvf foobar.tar.gz +&prompt.user; tar tvf foobar.tar +&prompt.user; tar xvf foobar.tar + + + + + + + Q. チェックサムとは何ですか? + + A. これは, + チェックしたいファイル中のすべてのデータを加えて生成した + 数値です. 何か文字が書き換わっていたら, + チェックサムが一致しなくなります. そのため, + 単純な比較だけで違いを見つけることができるのです. + (実際には, 文字の位置が入れ替わるなどの, + 単純な加算ではわからない問題も + 見つけることができる複雑な方法で計算されています.) + + + + Q. 私は, CD-ROM から ports + をコンパイルする にしたがって ports + をインストールしていました. kermit + をインストールしようとするまではうまくいっていました:- + + + &prompt.root; make install +>> cku190.tar.gz doesn't seem to exist on this system. +>> Attempting to fetch from ftp://kermit.columbia.edu/kermit/archives/. + + + なぜ cku190.tar.gz が見つからないのでしょうか? 不良品の + CD-ROM を買ってしまったのでしょうか? + + A. Kermit の権利を持つチームは, 私たちの CDROM に kermit + の tarball を 入れることを許可しませんでした. + 申し分けありませんが, 手動でファイルを 入手してください. + このようなエラーメッセージが出たのは, + あなたがそのときインターネットに 接続していなかったためです. + あらかじめ上記のサイトのいずれかからファイルを + ダウンロードしておけば, プロセスを再開することができます. + (ダウンロードの際には, + あなたに最も近いサイトを選ぶようにしてください. そうすれば, + 時間とインターネットの帯域の節約になります) + + + + Q. kermit の tarball を入手しましたが, + /usr/ports/distfiles に + ファイルを置こうとすると, + 書き込み権がないというエラーがでます. + + A. ports のしくみは + /usr/ports/distfiles から tarball + を探します. しかし, これは read-only の CD-ROM + へのシンボリックリンクなので, + ここにファイルを置くことはできません. 次のようにすれば, + 他の場所を探すよう ports に指示することができます. + + + &prompt.root; make DISTDIR=/where/you/put/it install + + + + + Q. ports では, すべてを /usr/ports + に置いたときだけ動作するのでしょうか? + システムの管理者によると, 私の個人的なファイルは + /u/people/guests/wurzburger + に入れなければならないのですが, これでは + うまくいかないように思います. + + A. PORTSDIR 変数と + PREFIX 変数を変更することで, + 違うディレクトリを 使用することができます. 例えば, + + + &prompt.root; make PORTSDIR=/u/people/guests/wurzburger/ports install + + + とすると, ports は + /u/people/guests/wurzburger/ports + でコンパイルされ, すべて /usr/local + 以下にインストールされます. + + + &prompt.root; make PREFIX=/u/people/guests/wurzburger/local install + + + この場合, コンパイルは /usr/ports + でおこない, + /u/people/guests/wurzburger/local + にインストールします. もちろん, + 以下のように両者を組み合わせることも可能です. + + + &prompt.root; make PORTSDIR=.../ports PREFIX=.../local install + + + (省略せずに記述したら, + このページに収めるには長すぎるのですが, + 考え方は理解していただけたと思います) + + もし ports をインストールするたびに, + これらを毎回タイプするのが 気に入らないのであれば, + (正直に言って, 誰もそう思わないでしょう) + これらを環境変数にセットしてしまうという手があります. + + + + Q. 私は, FreeBSD の CD-ROM を持っていませんが, + 私はすべての tarball を 私のシステムに置いておきたいのです. + そうすれば, 私は ports をインストール するたびに, + 毎回ダウンロードが終わるのを待たなくてすむでしょう. + これを一度におこなう簡単な方法はありませんか? + + A. ports コレクション全体の tarball を持ってくるには, + 次のようにしてください. + + + &prompt.root; cd /usr/ports +&prompt.root; make fetch + + + ports の下のディレクトリひとつの tarball + を持ってくるには, 次のように してください. + + + &prompt.root; cd /usr/ports/directory +&prompt.root; make fetch + + + ports をひとつだけ持ってくる方法は, + きっと既にご存知だと思います. + + + + Q. マスタ FTP サイトから tarball を持ってくるより, + 近くにある FreeBSD の + ミラーサイトから持ってきた方が速いはずです. MASTER_SITES + に書かれている サイト以外から持ってくるように ports + に指示する方法はありませんか? + + A. もちろんあります. 例えば ftp.FreeBSD.ORG が + MASTER_SITES に書かれている + サイトより近いとしたら, 以下のようにしてください. + + + &prompt.root; cd /usr/ports/directory +&prompt.root; make MASTER_SITE_OVERRIDE=ftp://ftp.FreeBSD.ORG/pub/FreeBSD/ports/distfiles/ fetch + + + + + Q. ダウンロードをする前に, + どんなファイルが必要なのか知りたいのですが. + + A. make fetch-list とすると, ports + に必要なファイルの一覧を表示できます. + + + + Q. ports のコンパイルを途中で止める方法はありますか? + 私はインストールをする前に + いろいろとソースコードを解析したいのですが, 毎回 control-C + を打たなければならないのが少し面倒です. + + A. make extract を実行すると, + ファイル転送とソースコードの展開まで + おこなったところで停止します. + + + + Q. 自分で ports を作ろうとしています. 私の作ったパッチが + 正しく処理できることを確認できるように, + コンパイルを止めたいのです. パッチのための make + extract のようなものはありませんか? + + A. あります. make patch + があなたのお望みのものです. おそらく + PATCH_DEBUG オプションも同様に + お役に立つことでしょう. ところで, + あなたの努力に感謝いたします!! + + + + Q. あるコンパイルオプションはバグの + 原因になるという話を聞きました. 本当なのでしょうか? + どうやったら正しい設定で ports + をコンパイルできますか? + + A. 本当です. gcc の バージョン 2.6.3 + (FreeBSDの 2.1.0 と 2.1.5 に付属している バージョン) では, + オプションを + オプションなしで + 使うと, バグのあるコードを出力します (ほとんどの ports は + オプションを 使いません). + コンバイラオプションは次のように定義 すべき + です. + + + &prompt.root; make CFLAGS='-O2 -fno-strength-reduce' install + + + これを /etc/make.conf + に書いておくこともできますが, 残念なことに すべての ports + がこの指定を尊重してくれる 訳ではありません. + もっとも確実なのは make configure + を実行し, ソースディレクトリの Makefile + を見て手で修整することですが, ソースが + 多くのサブディレクトリにわかれていて, 各々に Makefile + がある場合は 大変な仕事になります. + + + + Q. ports がたくさんありすぎて, + 私の欲しいものがなかなか見つけられません. どんな ports + が使えるのか, リストはどこかにありませんか? + + A. /usr/ports の中にある + INDEX ファイルを見てみましょう. + あるキーワードで ports コレクションを検索したければ, + それも可能です. たとえば, + 以下のようにすればプログラミング言語 LISP に関連した ports + を見つけることができます: + + &prompt.user; cd /usr/ports +&prompt.user; make search key=lisp + + + + Q. foo ports + をインストールしたいのですが, それのコンパイルは + すぐに停止して, bar ports + のコンパイルが始まってしまいます. 一体どうして? + + A. foo ports が, + bar ports + の提供する何らかの機能を必要としているからです. 例えば + foo が画像を使うとすると, + bar は画像処理に必要な + ライブラリを持っている, などです. または, + barfoo + をコンパイルするのに必要なツールなのかもしれません. + + + + Q. ports から + grizzle + プログラムをインストールしましたが, まったく + ディスクスペースの浪費です. 削除したいのですが, + すべてのファイルが どこへインストールされたのかわかりません. + 何か手がかりはありませんか? + + A. 大丈夫, 次のようにしてください. + + + &prompt.root; pkg_delete grizzle-6.5 + + + + + Q. ちょっと待ってください. + 削除しようとするコマンドのバージョン番号を + 知っていなくてはならないのでしょうか? あなたは, + 私がバージョン番号を + 覚えていることを本気で当てにしているのでしょうか? + + A. そんなことはありません. + バージョン番号は次のようにすればわかります. + + + &prompt.root; pkg_info -a | grep grizzle +Information for grizzle-6.5: +grizzle-6.5 - the combined piano tutorial, LOGO interpreter and shoot 'em up arcade game. + + + + + Q. ディスク容量のことなのですが, ports + のディレクトリは非常に膨大な容量を 使うように見えます. + 残しておいた方がよいのでしょうか? 削除してしまっても + よいのでしょうか? + + A. はい. インストールが首尾よく終わり, + もうソースコードが必要でないと思うなら, + それらを残しておく理由はないでしょう. 一番よい方法は, + 次の通りです. + + + &prompt.root; cd /usr/ports +&prompt.root; make clean + + + これは, すべての ports のサブディレクトリを調べ, 各 + ports のスケルトン以外の削除をおこないます. + + + + Q. これを試してみたのですが, tarball や ports + で使われたファイルが distfiles + ディレクトリに残っています. + これも削除してしまっても大丈夫ですか? + + A. はい. それを使った作業が終わったのであれば, + 削除してしまっても大丈夫です. + + + + Q. + 私はとてもとてもたくさんのプログラムを楽しみたいのです. + 一度にすべての ports + をインストールする方法はありませんか? + + A. 次のようにしてください. + + + &prompt.root; cd /usr/ports +&prompt.root; make install + + + + + Q. やってみました. 時間がとてもかかるだろうと思ったので, + そのまま実行を 続けさせて, 私は寝ました. + 翌朝コンピュータを見てみると, 三つ半の ports しか + 処理が終わっていませんでした. + なにか悪かったのでしょうか? + + A. これは ports の中には私たちの決められないこと + (例えば, あなたが A4 の 用紙に印刷したいのか, US + レターサイズの用紙に印刷したいのかなど) について + 質問してくるものがあるからです. + それらの質問には手動で答える必要があります. + + + + Q. + 私は一日中モニタの前に座って過ごしたりしたくないのですが. + 何かよいアイデアはありませんか? + + A. では, あなたが寝に / 仕事に / + 公園にいく前に以下を実行してください:- + + + &prompt.root; cd /usr/ports +&prompt.root; make -DBATCH install + + + これでユーザの入力を要求しないすべての ports + をインストールします. そして, 戻ってきてから, + 次のように実行してください. + + + &prompt.root; cd /usr/ports +&prompt.root; make -DIS_INTERACTIVE install + + + そして, 残りの作業を実行してください. + + + + Q. 私たちは ports コレクションにある + frobble を使っています. ですが, + 私たちの必要に応じて ports を変更したところがあるのです. + 自分でパッケージを作って, それを私たちのサイトのまわりに + 簡単に配布できるような方法がありますか? + + A. もちろんあります. + 変更点をパッチにする方法は知っていますよね:- + + + &prompt.root; cd /usr/ports/somewhere/frobble +&prompt.root; make extract +&prompt.root; cd work/frobble-2.8 +[あなたのパッチを当ててください] +&prompt.root; cd ../.. +&prompt.root; make package + + + + + Q. この ports の技術は本当に賢いですね. + どのようにして動いているのか + 私はどうしても知りたいと思います. その秘密は何ですか? + + A. 秘密は一切ありません. Makefiles + ディレクトリ にある + bsd.ports.mk と + bsd.ports.subdir.mk + ファイルを見るだけです. + + + 複雑なシェルスクリプトを嫌う読者は, + このリンクを追いかけないほうが よいでしょう. + + + + + + + diff --git a/ja_JP.eucJP/share/sgml/authors.ent b/ja_JP.eucJP/share/sgml/authors.ent new file mode 100644 index 0000000000..2668aa9bd8 --- /dev/null +++ b/ja_JP.eucJP/share/sgml/authors.ent @@ -0,0 +1,348 @@ + + +abial@FreeBSD.ORG"> + +ache@FreeBSD.ORG"> + +adam@FreeBSD.ORG"> + +alex@freebsd.org"> + +amurai@FreeBSD.ORG"> + +andreas@FreeBSD.ORG"> + +archie@FreeBSD.ORG"> + +asami@FreeBSD.ORG"> + +ats@FreeBSD.ORG"> + +awebster@pubnix.net"> + +bde@FreeBSD.ORG"> + +billf@FreeBSD.ORG"> + +brandon@FreeBSD.ORG"> + +brian@FreeBSD.ORG"> + +cawimm@FreeBSD.ORG"> + +charnier@FreeBSD.ORG"> + +chuckr@glue.umd.edu"> + +chuckr@FreeBSD.ORG"> + +cracauer@FreeBSD.ORG"> + +csgr@FreeBSD.ORG"> + +cwt@FreeBSD.ORG"> + +danny@FreeBSD.ORG"> + +darrenr@FreeBSD.ORG"> + +davidn@blaze.net.au"> + +dburr@FreeBSD.ORG"> + +dcs@FreeBSD.ORG"> + +des@FreeBSD.ORG"> + +dfr@FreeBSD.ORG"> + +dg@FreeBSD.ORG"> + +dillon@FreeBSD.ORG"> + +dima@FreeBSD.ORG"> + +dirk@FreeBSD.ORG"> + +Dirk.vanGulik@jrc.it"> + +dt@FreeBSD.ORG"> + +dufault@FreeBSD.ORG"> + +dwhite@FreeBSD.ORG"> + +dyson@FreeBSD.ORG"> + +eivind@FreeBSD.ORG"> + +ejc@FreeBSD.ORG"> + +erich@FreeBSD.ORG"> + +faq@freebsd.org"> + +fenner@FreeBSD.ORG"> + +flathill@FreeBSD.ORG"> + +foxfair@FreeBSD.ORG"> + +fsmp@FreeBSD.ORG"> + +gallatin@FreeBSD.ORG"> + +gclarkii@FreeBSD.ORG"> + +gena@NetVision.net.il"> + +ghelmer@cs.iastate.edu"> + +gibbs@FreeBSD.ORG"> + +mjacob@FreeBSD.ORG"> + +gj@FreeBSD.ORG"> + +gpalmer@FreeBSD.ORG"> + +graichen@FreeBSD.ORG"> + +grog@FreeBSD.ORG"> + +gryphon@healer.com"> + +guido@FreeBSD.ORG"> + +hanai@FreeBSD.ORG"> + +handy@sxt4.physics.montana.edu"> + +helbig@FreeBSD.ORG"> + +hm@FreeBSD.ORG"> + +hoek@FreeBSD.ORG"> + +hosokawa@FreeBSD.ORG"> + +hsu@FreeBSD.ORG"> + +imp@FreeBSD.ORG"> + +itojun@itojun.org"> + +jb@cimlogic.com.au"> + +jdp@FreeBSD.ORG"> + +jehamby@lightside.com"> + +jfieber@FreeBSD.ORG"> + +james@nexis.net"> + +jgreco@FreeBSD.ORG"> + +jhay@FreeBSD.ORG"> + +jkh@FreeBSD.ORG"> + +jkoshy@FreeBSD.ORG"> + +jlemon@FreeBSD.ORG"> + +john@starfire.MN.ORG"> + +jlrobin@FreeBSD.ORG"> + +jmacd@FreeBSD.ORG"> + +jmb@FreeBSD.ORG"> + +jmg@FreeBSD.ORG"> + +jmz@FreeBSD.ORG"> + +joerg@FreeBSD.ORG"> + +john@FreeBSD.ORG"> + +jraynard@freebsd.org"> + +jseger@freebsd.org"> + +julian@FreeBSD.ORG"> + +jvh@FreeBSD.ORG"> + +karl@FreeBSD.ORG"> + +kato@FreeBSD.ORG"> + +kelly@fsl.noaa.gov"> + +ken@FreeBSD.ORG"> + +kjc@FreeBSD.ORG"> + +kris@FreeBSD.ORG"> + +kuriyama@FreeBSD.ORG"> + +lars@FreeBSD.ORG"> + +ljo@FreeBSD.ORG"> + +luoqi@FreeBSD.ORG"> + +markm@FreeBSD.ORG"> + +martin@FreeBSD.ORG"> + +max@FreeBSD.ORG"> + +mark@vmunix.com"> + +mbarkah@FreeBSD.ORG"> + +mckay@FreeBSD.ORG"> + +mckusick@FreeBSD.ORG"> + +md@bsc.no"> + +mks@FreeBSD.ORG"> + +motoyuki@FreeBSD.ORG"> + +mph@FreeBSD.ORG"> + +mpp@FreeBSD.ORG"> + +msmith@FreeBSD.ORG"> + +nate@FreeBSD.ORG"> + +nectar@FreeBSD.ORG"> + +newton@FreeBSD.ORG"> + +n_hibma@FreeBSD.ORG"> + +nik@FreeBSD.ORG"> + +nsj@FreeBSD.ORG"> + +obrien@FreeBSD.ORG"> + +olah@FreeBSD.ORG"> + +opsys@open-systems.net"> + +paul@FreeBSD.ORG"> + +pb@fasterix.freenix.org"> + +pds@FreeBSD.ORG"> + +peter@FreeBSD.ORG"> + +phk@FreeBSD.ORG"> + +pjchilds@imforei.apana.org.au"> + +proven@FreeBSD.ORG"> + +pst@FreeBSD.ORG"> + +rgrimes@FreeBSD.ORG"> + +rhuff@cybercom.net"> + +ricardag@ag.com.br"> + +rich@FreeBSD.ORG"> + +rnordier@FreeBSD.ORG"> + +roberto@FreeBSD.ORG"> + +rse@FreeBSD.ORG"> + +sada@FreeBSD.ORG"> + +scrappy@FreeBSD.ORG"> + +se@FreeBSD.ORG"> + +sef@FreeBSD.ORG"> + +shige@FreeBSD.ORG"> + +simokawa@FreeBSD.ORG"> + +smace@FreeBSD.ORG"> + +smpatel@FreeBSD.ORG"> + +sos@FreeBSD.ORG"> + +stark@FreeBSD.ORG"> + +stb@FreeBSD.ORG"> + +steve@FreeBSD.ORG"> + +swallace@FreeBSD.ORG"> + +tedm@FreeBSD.ORG"> + +tegge@FreeBSD.ORG"> + +tg@FreeBSD.ORG"> + +thepish@FreeBSD.ORG"> + +torstenb@FreeBSD.ORG"> + +truckman@FreeBSD.ORG"> + +ugen@FreeBSD.ORG"> + +uhclem@FreeBSD.ORG"> + +ulf@FreeBSD.ORG"> + +vanilla@FreeBSD.ORG"> + +wes@FreeBSD.ORG"> + +whiteside@acm.org"> + +wilko@yedi.iaf.nl"> + +wlloyd@mpd.ca"> + +wollman@FreeBSD.ORG"> + +wosch@FreeBSD.ORG"> + +wpaul@FreeBSD.ORG"> + +yokota@FreeBSD.ORG"> + diff --git a/ja_JP.eucJP/share/sgml/jauthors.ent b/ja_JP.eucJP/share/sgml/jauthors.ent new file mode 100644 index 0000000000..cfe025cb9e --- /dev/null +++ b/ja_JP.eucJP/share/sgml/jauthors.ent @@ -0,0 +1,82 @@ + + +arimura@jp.FreeBSD.org"> + +candy@fct.kgc.co.jp"> + +condle@mcu.or.jp"> + +g92k0323@cfi.waseda.ac.jp"> + +graphite@jp.FreeBSD.org"> + +hino@ccm.cl.nec.co.jp"> + +ikuo@jp.FreeBSD.org"> + +iwasaki@jp.FreeBSD.ORG"> + +katsu@baum.kiyose.tokyo.jp"> + +kimura@netlab.is.tsukuba.ac.jp"> + +kiroh@jp.FreeBSD.org"> + +kmiyakoda@ctn.co.jp"> + +masaki@po.iijnet.or.jp"> + +Mihoko_Tanaka@yokogawa.co.jp"> + +mita@jp.FreeBSD.ORG"> + +miyasita@hashilab.ee.ous.ac.jp"> + + + +mrt@mickey.ai.kyutech.ac.jp"> + +nakai@mlab.t.u-tokyo.ac.jp"> + +nao@tom-yam.or.jp"> + +saeki@jp.FreeBSD.org"> + +shou@kt.rim.or.jp"> + +simokawa@jp.FreeBSD.org"> + +taka-su@is.aist-nara.ac.jp"> + +tmaruya@nnc.or.jp"> + +tomo@jp.FreeBSD.ORG"> + +ts@icu.ac.jp"> + +y-koga@ccs.mt.nec.co.jp"> + +yasu@hike.te.chiba-u.ac.jp"> + +yoshiaki@kt.rim.or.jp"> + +yuki@jp.FreeBSD.org"> +