<!doctype linuxdoctr system>
<!--<!doctype linuxdoc system>-->


<ARTICLE>


<TITLE>How To Build a Minimal Linux System from Source Code
<AUTHOR>Greg O'Keefe, <tt>gcokeefe@postoffice.utas.edu.au</tt>
<DATE>v0.8, September 2000
<trans>日本語訳 千旦裕司
<tdate>v0.8, December 2000


<ABSTRACT>
<!--
These are instructions for building a minimal linux system from source code.
It used to be part of 
<URL
URL="http://www.linuxdoc.org/HOWTO/From-PowerUp-To-Bash-Prompt-HOWTO.html"
NAME ="From PowerUp to Bash Prompt">
but I've separated it to keep both documents short and focussed.
The system we build here is <EM>very</EM> minimal, and not ready for
real work. If you want to build a practical system from scratch, see
Gerard Beekmans' 
<URL URL="http://www.linuxfromscratch.org" NAME="Linux From Scratch HOWTO"> 
instead.
-->
この文書は、ソースコードから最小限度の Linux System を構築する方法を述べたもの
である。以前は、<url 
url="http://www.linuxdoc.org/HOWTO/From-PowerUp-To-Bash-Prompt-HOWTO.html" 
name="From PowerUp to Bash Prompt"> (<url 
url="http://www.linux.or.jp/JF/JFdocs/From-PowerUp-To-Bash-Prompt-HOWTO.html" 
name="日本語訳">) 
の一部であったが、これを分離し、双方の文書を簡潔かつ明確な主題を持つものに
した。ここで構築するシステムは、<em>本当に</em> 最小限度のものであり、
実際の役に立つシステムではない。ソースコードから本格的なシステムを構築したい
なら、この文書ではなく、Gerard Beekmans の <url 
url="http://www.linuxfromscratch.org" 
name="Linux From Scratch HOWTO"> を参考にしてほしい。
</ABSTRACT>


<TOC>



<!--<SECT>What You Will Need-->
<sect> 何が必要か

<!--<P>We will install a Linux distribution like Red Hat in one partition,and 
use that to build a new Linux system in another partition. I will call the 
system we are building the ``target'' and the system we are using to build it 
with, the ``source'' (not to be confused with <EM>source code</EM> which we 
will also be using.)-->
<p>
本書では、ひとつのパーティションに Red Hat のようなディストリビューションを
インストールし、もうひとつのパーティションを新しい Linux システムの構築のため
に使うこととする。
構築中のシステムを 「ターゲットシステム」 と呼び、それを構築するため
に使っているシステムを 「ソースシステム」 と呼ぶ。(「ソースコード」という言葉
も使うが、そちらと混同しないようにしてほしい)

<!--<P>So you are going to need a machine with two spare partitions on it.
If you can, use a machine with nothing important on it. 
You could use an existing Linux installation as the source system, 
but I wouldn't recommend that. If you leave a parameter out of one
of the commands we will issue, you could accidentally install stuff to this 
system. This could lead to incompatibilites and strife.-->
<p>
それゆえ、ふたつの空いたパーティションのあるマシンが必要になる。可能なら、大
切なものが何も乗っていないマシンを使ってほしい。ソースシステムとして既にイン
ストールされた Linux を使うこともできるが、わたしはお薦めしない。実行するコマ
ンドのひとつにパラメータを付け忘れただけで、システムに偶然余計なものをインス
トールすることがある。それがシステムに不整合と不和を引き起こすことがあり得る
からである。

<!--<P>Older PC hardware, mostly 486's and earlier, have an annoying limitation
in their bios. They can not read from a hard disk past the first 512M.
This is not too much of a problem for Linux, because once it is up, it
does its own disk io, bypassing the bios. But for Linux to get loaded by 
these old machines, the kernel has to reside somewhere below 512M. If you 
have one of these machines you will need to have a separate partition 
completely below the 512M mark, to mount as <TT>/boot</TT> for any partitions 
that are over that 512M mark.-->
<p>
486 やそれ以前のふるい PC ハードウェアには、bios に困った制限がある。bios 
が、ハードディスクの最初の 512M を越えた領域を読み込めないのである。Linux の
場合、一旦立ち上がれば bios を通さずに直接ディスクにアクセスできるのでそれほ
ど問題ではないのだが、Linux がそうした旧いマシンにロードされるためには、カー
ネルが 512M 以下の領域になければならなくなる。もしそうしたマシンを持っている
なら、512M の境界を越えたパーティションを活かすために、512M の境界以下に <tt>
/boot</tt> としてマウントされることになる完全に独立したパーティションを作る
必要がある。

<!--<P>Last time I did this, I used Red Hat 6.1 as a source system. I installed
the base system plus-->
<p>
最近わたしが実験をした時には、ソースシステムとして Red Hat 6.1 を使った。そして
ベースシステムに加えて、次のパッケージをインストールした。

<ITEMIZE>
<ITEM>cpp
<ITEM>egcs
<ITEM>egcs-c++
<ITEM>patch
<ITEM>make
<ITEM>dev86 
<ITEM>ncurses-devel
<ITEM>glibc-devel 
<ITEM>kernel-headers 
</ITEMIZE> 

<!--I also had X-window and Mozilla so I could read documentation easily, 
but that's not really necessary.  By the time I had finished working, 
it had used about 350M of disk space. (Seems a bit high, I wonder why?)-->
<p>
わたしは文書が簡単に読めるように X-window と Mozilla(Netscape) も加えたが、
これは必須ではない。その作業が終わった時点で、350M のディスクスペースを使って
いた。(思ったよりも大きいのだが、なぜだろう？)

<!--<P>The finished target system took 650M, but that includes all the source 
code and intermediate build files. If space is tight, you should do a <TT>
make clean</TT> after each package is built. Still, this mind boggling bloat 
is a bit of a worry.-->
<p>
完成したターゲットシステムは 650M の容量を占めた。ただ、これにはすべてのソース
コードと構築のときの中間ファイルが含まれている。容量が厳しい場合は、それぞれ
のパッケージをビルドした後で <tt>'make clean'</tt> をすればよい。それにして
も、この予期せぬ肥大化は少し心配である。


<!--<P>Finally, you are going to need the source code for the system we are 
going to build. These are the ``packages'' that I have discussed in this 
document. These can be obtained from a source cd, or from the internet. I'll 
give URL's for the USA sites and for Australian mirrors.-->
<p>
最後に、これから構築しようとするシステムのためのソースコードが必要になる。
この文書で述べてきた「パッケージ」というのがあり、それらはソース CD やインター
ネット上で手に入る。USA のサイトと Australia のミラーサイトの URL を以下
に書いておく。(訳注:翻訳時において、この Australia のミラーサイトはアクセス
できませんでした)

<P><LABEL ID="downloads">
<ITEMIZE>
<ITEM>MAKEDEV:
<URL URL="ftp://tsx-11.mit.edu/pub/linux/sources/sbin" NAME="USA">Another 
<URL URL="ftp://sunsite.unc.edu/pub/Linux/system/admin" NAME="USA">site

<ITEM>Lilo: 
<URL URL="ftp://lrcftp.epfl.ch/pub/linux/local/lilo/" NAME="USA">,
<URL URL="ftp://mirror.aarnet.edu.au/pub/linux/metalab/system/boot/lilo/"
NAME="Australia">

<ITEM>Linux Kernel: 
<!--Use one of the mirrors listed at-->
ミラーサイトの一覧がこちら 
<URL URL="http://www.kernel.org" NAME="home page">
<!--rather than-->
にある。ここ 
<URL URL="ftp://ftp.kernel.org/pub/linux/kernel" NAME="USA">
<!--because they are always overloaded.-->
はいつも混んでいるのでやめたほうがいい。
<URL URL="ftp://kernel.mirror.aarnet.edu.au/pub/linux/kernel/" 
NAME="Australia"> 
(訳注: <url url="http://www.ring.gr.jp/archives/linux/kernel.org/kernel/" 
name="Japan">)

<ITEM>GNU libc: 
<!--itself, and the linuxthreads addon are at-->
これ自体と Linuxthreads のアドオン(addon)はこちら。
<URL URL="ftp://ftp.gnu.org/pub/gnu/glibc" NAME="USA"> 
<URL URL="ftp://mirror.aarnet.edu.au/pub/gnu/glibc" NAME="Australia"> 

<ITEM>GNU libc addons:
<!--You will also need the linuxthreads and libcrypt addons.
If libcrypt is not there it is because of some US export laws. 
You can get it at-->
 アドオンとして Linuxthreads と libcrypt も必要になる。
アメリカの輸出規制で libcrypt が見つからないときは、ここで手に入る。
<URL URL="ftp://ftp.gwdg.de/pub/linux/glibc" NAME="libcrypt"><newline> 

<!--The linuxthreads addon is in the same places as libc itself-->
Linuxthreads のアドオンは、libc 自体と同じ場所にある。 

<ITEM>GNU ncurses:
<URL URL="ftp://ftp.gnu.org/gnu/ncurses" NAME="USA">
<URL URL="ftp://mirror.aarnet.edu.au/pub/gnu/ncurses" NAME="Australia">

<ITEM>SysVinit: 
<URL URL="ftp://sunsite.unc.edu/pub/Linux/system/daemons/init" NAME="USA"> 
<URL URL="ftp://mirror.aarnet.edu.au/pub/linux/metalab/system/daemons/init"
 	 NAME="Australia"> 

<ITEM>GNU Bash: 
<URL URL="ftp://ftp.gnu.org/gnu/bash" NAME="USA"> 
<URL URL="ftp://mirror.aarnet.edu.au/pub/gnu/bash" NAME="Australia"> 

<ITEM>GNU sh-utils:
<URL URL="ftp://ftp.gnu.org/gnu/sh-utils" NAME="USA"> 
<URL URL="ftp://mirror.aarnet.edu.au/pub/gnu/sh-utils" NAME="Australia"> 

<ITEM>util-linux:
<URL URL="ftp://ftp.win.tue.nl/pub/linux/utils/util-linux/"
 NAME="Somewhere else">
<URL URL="ftp://mirror.aarnet.edu.au/pub/linux/metalab/system/misc"
NAME="Australia"> 
<!--This package contains <TT>agetty</TT> and <TT>login</TT>.-->
このパッケージには、<tt>agetty</tt> と <tt>login</tt> が含まれている。
(訳注: <url 
url="http://www.ring.gr.jp/archives/linux/kernel.org/utils/util-linux/" 
name="Japan">)

</ITEMIZE>

<!--<P>To sum up then, you will need:
<ITEMIZE>
<ITEM>A machine with two spare partitions of about 400M and 700M respectively
	though you could probably get away with less
<ITEM>A Linux distribution (eg. a Red Hat cd) and a way of installing it 
	(eg. a cdrom drive)
<ITEM>The source code tarballs listed above
</ITEMIZE>-->
<p>
以上を整理すると、構築に必要なのは、
<itemize>
<item>それぞれ 400M と 700M のふたつの空きパーティションがあるマシン。この容量
はおそらくもっと少なくても大丈夫だと思われる。
<item>Linux ディストリビューション(例えば Red Hat の CD)と、インストールする
手段(例えば、CD-ROM ドライブ)。
<item>上記に示したソースコードの圧縮ファイル(tarballs)。
</itemize>

<!--<P>I'm assuming that you can install the source system yourself, without 
any help from me. From here on, I'll assume that its done.-->
<p>
ソースシステムについては、手助けがなくとも、自分でインストールできると思う。
ここからは、すでにそれがなされていることを前提にする。

<!--<P>The first milestone in this little project is getting the kernel to 
boot up and panic because it can't find an <TT>init</TT>. This means we are 
going to have to install a kernel, and install lilo. To install lilo nicely 
though, we will need the device files in the target <TT>/dev</TT> directory. 
Lilo needs them to do the low level disk access necessary to write the boot
sector.  MAKEDEV is the script that creates these device files. 
(You can just copy them from the source system of course, but that's cheating!)
But first of all, we need a filesystem to put all of this into.-->
<p>
この小さなプロジェクトの最初の到達点は、カーネルが起動して、<tt>init</tt> 
を見つけられないためにパニックを起こすところまで持っていくことである。これは、
カーネルと <tt>lilo</tt> をインストールすることを意味する。しかし、
<tt>lilo</tt> をすんなりインストールするには、ターゲットシステムの 
<tt>/dev</tt> ディレクトリにデバイスファイルが必要となる。
<tt>lilo</tt> はブートセクタに書込みをするためにローレベル(low level)のディス
クアクセスを必要とするからである。<tt>MAKEDEV</tt> はそうしたデバイス
ファイルを作るスクリプトである。(もちろんソースシステムからそれらをコピーす
ることもできるが、それではごまかしになってしまう。)しかし、まず最初に、これら
すべてを収容するためのファイルシステムが必要だ。


<!--<SECT>The Filesystem-->
<sect>ファイルシステム


<!--<P>Our new system is going to live in a file system. So first, we have to 
make that file system using <TT>mke2fs</TT>. Then mount it somewhere. I'd 
suggest <TT>/mnt/target</TT>. In what follows, I'll assume that this is where 
it is. You could save yourself a bit of time by putting an entry in 
<TT>/etc/fstab</TT> so that it mounts there automatically when the source 
system comes up.-->
<p>
新しいシステムは、ファイルシステムの中で動作するので、まず初めに <tt>mke2fs
</tt> を使ってファイルシステムを作らなければならない。そしてそれを何らかの場
所にマウントするのだが、わたしは <tt>/mnt/target</tt> をお薦めする。なにかト
ラブルが起こった場合でも、ここなら心配ないと思われるからだ。ソースシステムが
立ち上がるとき自動的にマウントされるように、<tt>/etc/fstab</tt> にエントリー
を入れておくとわずかだが時間の節約ができる。

<!--<P>When we boot up the target system, the stuff that's now in 
<TT>/mnt/target</TT> will be in <TT>/</TT>.-->
<p> 
ターゲットシステムを起動したときには、今 <tt>/mnt/target</tt> にある
ものが ルートディレクトリ(<tt>/</tt>)に入る。

<!--<P>We need a directory structure on target. Have a look at the 
File Heirarchy Standard (see section <REF ID="FHS" NAME="Filesystem">) 
to work out what this should be, or just <TT>cd</TT>
to where the target is mounted and blindly do-->
<p>
ターゲットシステム上のディレクトリ階層が必要である。File Heirarchy Standard(
ママ) (<ref id="FHS" name="7.3ファイルシステム-参考文献等"> を参照)に
目を通して、どういう形になるべきなのかを理解すること。あるいは、ターゲットシ
ステムがマウントされている場所に <tt>cd</tt> して、以下を記述通りに打ち込むこ
と。

<VERB> 
	mkdir bin boot dev etc home lib mnt root sbin tmp usr var
	cd var; mkdir lock log run spool  
	cd ../usr; mkdir bin include lib local sbin share src
	cd share/; mkdir man; cd man 
	mkdir man1 man2 man3 ... man9
</VERB>

<!--Since the FHS and most packages disagree about where man pages should go, 
we need a symlink-->
FHS や大部分のパッケージではマニュアルページ(man page)の置き場所が上記と
異なるので、シンボリックリンクを張る必要がある。

<VERB> 
	cd ..; ln -s share/man man (訳注:/mnt/target/usr で ln の実行)
</VERB>

<!--<SECT>MAKEDEV-->
<sect>MAKEDEV

<!--<P>We will put the source code in the target <TT>/usr/src</TT> directory. 
So for example, if your target file system is mounted on <TT>/mnt/target</TT>
and your tarballs are in <TT>/root</TT>, you would do-->
<p>
ソースコードは、ターゲットシステムの <tt>/usr/src</tt> ディレクトリに置く。
例えば、ターゲットシステムのファイルシステムが <tt>/mnt/target</tt> にマウ
ントされていて、圧縮ファイルが(ソースシステムの) <tt>/root</tt> にあるとする
と、以下のようにすべきことになる。

<VERB> 
	cd /mnt/target/usr/src
	tar -xzvf /root/MAKEDEV-2.5.tar.gz
</VERB>

<!--<P>Don't be completely lame and copy the tarball to the place where you 
are going to extract it ;-> -->
<p>
全く起動できない状態に陥らないよう、圧縮ファイルを、解凍すべき場所にコピー
しておくとよい。

<!--<P>Normally when you install software, you are installing it onto the 
system that is running. We don't want to do that though, we want to install it
as though <TT>/mnt/target</TT> is the root filesystem. Different packages
have different ways of letting you do this. For MAKEDEV you do-->
<p>
ソフトウェアをインストールするときは、稼働中のシステム上にインストールするの
が普通である。しかしこの場合はそれを望んでおらず、 <tt>/mnt/target</tt> を
ルートファイルシステムとしてインストールしたい。それをする方法はパッケージご
とにそれぞれ違っている。<tt>MAKEDEV</tt> の場合は、以下のようにする。

<VERB>
	ROOT=/mnt/target make install
</VERB>

<!--<P>You need to look out for these options in the README and INSTALL files
or by doing a <TT>./configure &#045;&#045;help</TT>.-->
<p>
こうしたオプションを探すには、README や INSTALL ファイルを見るか、<tt>./
configure &#045;&#045;help</tt> とすることが必要となる。

<!--<P>Have a look in MAKEDEV's <TT>Makefile</TT> to see what it does with the
<TT>ROOT</TT> varible that we set in that command. Then have a look
in the man page by doing <TT>man ./MAKEDEV.man</TT> to see how it 
works. You'll find that the way to make our device files is to
<TT>cd /mnt/target/dev</TT> and do <TT>./MAKEDEV generic</TT>.
Do an <TT>ls</TT> to see all the wonderful device files it has made
for you.-->
<p>
上記のコマンドで <tt>ROOT</tt> という変数を付けて何をしたのかを理解するには、
<tt>MAKEDEV</tt> の <tt>Makefile</tt> を見ること。次に、 
<tt>man ./MAKEDEV.man</tt> と打ってマニュアルページを見て、そのプログラムがど
ういう働きをするか理解すること。そうすれば、この場合のデバイスファイルの作り
方は、<tt>cd /mnt/target/dev</tt> としてから、<tt>./MAKEDEV generic</tt> とす
ればいいということが分かるだろう。<tt>ls</tt> を実行して、作り出されたすばら
しいデバイスファイルを眺めてほしい。

<!--<SECT>Kernel-->
<sect>カーネル


<!--<P>Next we make a kernel. I presume you've done this before, so I'll be 
brief. It is easier to install lilo if the kernel it is meant to boot is 
already there. Go back to the target <TT>usr/src</TT> directory, and unpack 
the linux kernel source there. Enter the linux source tree (<TT>cd linux</TT>)
and configure the kernel using your favourite method, for example <TT>make 
menuconfig</TT>. You can make life slightly easier for yourself by configuring
a kernel without modules. If you configure any modules, then you
will have to edit the <TT>Makefile</TT>, find <TT>INSTALL_MOD_PATH</TT>
and set it to <TT>/mnt/target</TT>.-->
<p>
次はカーネルの作成である。これは前にやったことがあると思うので、簡単に説明
したい。ブートさせようとするカーネルがあった方が <tt>lilo</tt> のインストール
が楽になる。
ターゲットシステムの <tt>usr/src</tt> ディレクトリに行って、そこに Linux カー
ネルのソースコードを解凍・展開してほしい。そして <tt>cd linux</tt> として 
Linux のソースツリーのあるディレクトリに入り、例えば <tt>make menuconfig
</tt> のように好きな方法でカーネルを設定すること。モジュールなしの設定にする
とあとの作業が少しだけ簡単になる。モジュールを使う設定にした場合は、<tt>
Makefile</tt> ファイルを開いて、<tt>INSTALL_MOD_PATH</tt> という項目を見つ
け、それを <tt>/mnt/target</tt> と設定することが必要になる。

<!--<P>Now you can <TT>make dep</TT>, <TT>make bzImage</TT>, and if you 
configured modules: <TT>make modules</TT>, <TT>make modules_install</TT>. Copy
the kernel <TT>arch/i386/boot/bzImage</TT> and the system map 
<TT>System.map</TT> to the target boot directory <TT>/mnt/target/boot</TT>, 
and we are ready to install lilo.-->
<p>
次に、<tt>make dep</tt>; <tt>make bzImage</tt> とすること。もしモジュールを
設定したのなら、<tt>make modules</tt> そして <tt>make modules_install</tt> と
すればよい。<tt>arch/i386/boot/bzImage</tt> にあるカーネルと、 <tt>System.map
</tt> という名前のシステムマップをターゲットシステムのブートディレクトリで
ある <tt>/mnt/target/boot</tt> にコピーする。これで、<tt>lilo</tt> のインス
トールの準備が整った。

<!--<SECT>Lilo-->
<sect>Lilo

<!--<P>Lilo comes with a neat script called <TT>QuickInst</TT>. Unpack the lilo
source into the target source directory, run this script with the command
<TT>ROOT=/mnt/target ./QuickInst</TT>. It will ask you questions about
how you want lilo installed. -->
<p>
<tt>lilo</tt> には <tt>QuickInst</tt> と呼ばれる小さなスクリプトが付いている。
<tt>lilo</tt> のソースコードをターゲットシステムのソースディレクトリに
(解凍・)展開し、<tt>ROOT=/mnt/target ./QuickInst</tt> とコマンドを打ち込ん
で、このスクリプトを実行してほしい。スクリプトは、<tt>lilo</tt> をどういうふ
うにインストールしたいのかと尋ねてくるだろう。

<!--<P>Remember, since we have set <TT>ROOT</TT>, 
to the target partition, you tell it file names relative to that. So
when it asks what kernel you want to boot by default, answer 
<TT>/boot/bzImage</TT> <EM>not</EM> <TT>/mnt/target/boot/bzImage</TT>.
I found a little bug in the script, so it said-->
<p>
気を付けてほしいのは、<tt>ROOT</tt> 変数をターゲットシステムのパーティションに
設定しているので、ファイル名はそこを基準に伝えるということである。それゆえ、
どのカーネルをデフォルトでブートしたいのかと聞かれたら、<tt>/mnt/target/boot/
bzImage</tt> ではなく、<tt>/boot/bzImage</tt> と答えてほしい。わたしは、その
スクリプトの中の小さなバグを見つけた。そのため、以下のように表示された。

<VERB>

　　　　./QuickInst: /boot/bzImage: no such file 

</VERB>

<!--But if you just ignore it, it's ok.-->
しかし、これを無視しても、何の問題もない。

<!--<P>Where should we get <TT>QuickInst</TT> to put the boot sector? 
When we reboot we want to have the choice of booting into the source system
or the target system, or any other systems that are on this box. And we want 
the instance of lilo that we are building now to load the kernel of our new 
system. How are we going achieve both of these things? Let's digress a little 
and look at how lilo boots DOS on a dual boot Linux system. The <TT>lilo.conf
</TT> file on such a system probably looks something like this:-->
<p>
<tt>QuickInst</tt> を使ってどこにブートセクタを置くべきだろうか？リブートの
際には、ソースシステムかターゲットシステム、あるいはマシン上の他のシステムか
どれを起動するのかを選択できるようにしたい。それに、現在構築中の 
<tt>lilo</tt> が新しいシステムのカーネルを起動するところを実際に見てみたい。
このふたつを同時に実現するにはどうすればいいのか？少し脇道にそれて、デュアル
ブートの Linux システムにおいて <tt>lilo</tt> が DOS をブートする方法を見てみ
よう。そうしたシステムでの <tt>lilo.conf</tt> ファイルはおそらく下記のように
なっているだろう。


<P>
<VERB> 
prompt  
timeout = 50
default = linux

image = /boot/bzImage 
	label  = linux
	root   = /dev/hda1
	read-only

other = /dev/hda2
	label = dos
</VERB>


<!--<P>If the machine is set up this way, then the master boot record gets 
read and loaded by the bios, and it loads the lilo bootloader, which gives a 
prompt. If you type in <TT>dos</TT> at the prompt, lilo loads the boot sector 
from hda2, and it loads DOS.-->
<p>
マシンが上記のように設定されているなら、bios によってマスターブートレコード
が読み込まれてロードされ、次に(ロードされたプログラムが) <tt>lilo</tt> の
ブートローダをロードし、それがプロンプトを表示する。もしそのプロンプト画面で 
<tt>dos</tt> とタイプしたなら、<tt>lilo</tt> は <tt>hda2</tt> からブートセク
タをロードして、それが DOS をロードする。

<!--<P>What we are going to do is just the same, except that the boot sector in
hda2 is going to be another lilo boot sector - the one that <TT>QuickInst</TT>
is going to install. So the lilo from the Linux distribution will load the
lilo that we have built, and that will load the kernel that we have built.
You will see two lilo prompts when you reboot.-->
<p>
これからしようとしていることは、<tt>hda2</tt> のブートセクタがそれとは異なる 
<tt>lilo</tt> のブートセクタ(つまり <tt>QuickInst</tt> がこれからインストール
しようとしているセクタ)になるということを除けば、上記と全く同じことである。
ディストリビューションに付属の <tt>lilo</tt> が、構築したばかりの 
<tt>lilo</tt> をロードし、その <tt>lilo</tt> が、先だって構築したカーネルを
ロードするということになる。再起動時には、<tt>lilo</tt> プロンプトをふたつ
見るわけである。

<!--<P>To cut a long story short, when <TT>QuickInst</TT> asks you where to 
put the boot sector, tell it the device where your target filesystem is, 
eg. <TT>/dev/hda2</TT>.-->
<p>
要点だけを言うと、<tt>QuickInst</tt> がブートセクタをどこに置くか聞いてきたら、
ターゲットシステム上のファイルシステムがあるデバイス名を答えるとよい。たとえ
ば、<tt>/dev/hda2</tt> などである。

<!--<P>Now modify the <TT>lilo.conf</TT> on your source system, so it has
a line like-->
そして、ソースシステム上の <tt>lilo.conf</tt> を修正する。そうすると、以下の
ような行が加わる。

<VERB> 
other = /dev/hda2
	label = target
</VERB>

<!--run lilo, and we should be able to do our first boot into the target 
system.-->
ここで <tt>lilo</tt> と打てば、これで初めて、ターゲットシステムが起動可能に
なったはずだ。

<!--<SECT>Glibc-->
<sect>Glibc

<!--<P>Next we want to install <TT>init</TT>, but like almost every program 
that runs under Linux, <TT>init</TT> uses library functions provided by the
GNU C library, glibc. So we will install that first.-->
<p>
次は、<tt>init</tt> をインストールしたいのだが、Linux 上で走るすべてのプログ
ラムに共通する事柄として、<tt>init</tt> は GNU C library, すなわち 
<tt>glibc</tt> が提供するライブラリ関数を使用している。そこで、それを先にイン
ストールする。

<!--<P>Glibc is a very large and complicated package. It took 90 hours to build
on my old 386sx/16 with 8M RAM. But it only took 33 minutes on my Celeron
433 with 64M. I think memory is the main issue here. If you only have 8M
of RAM (or, shudder, less!) be prepared for a long build.-->
<p>
<tt>glibc</tt> は非常に巨大で複雑なパッケージである。わたしの古い 386/SX 
16MHz 8M RAM のマシンでは、コンパイルに 90 時間かかった。しかし、
Celeron 433MHz 64M RAM のマシンでは、33 分しかかからなかった。メモリがここで
は一番重要なのだと思う。もし 8M (あるいは、それ以下)の RAM しかないときは、
コンパイルに長時間かかることを覚悟してほしい。

<!--<P>The glibc install documentation recommends building in a separate 
directory. This enables you to start again easily, by just blowing that 
directory away. You might also want to do that to save yourself about 265M 
of disk space!-->
<p>
<tt>glibc</tt> のインストールに関する文書は、(実際にソースを展開している場所
とは)別のディレクトリでビルドすることを薦めている。そうしておけば、そのディレ
クトリを消してしまうだけで、簡単にやり直しができる。265M ものディスクスペースを
節約できるために、そうしたいと思うひともいるだろう。

<!--<P>Unpack the <TT>glibc-2.1.3.tar.gz</TT> (or whatever version) tarball 
into <TT>/mnt/target/usr/src</TT> as usual. Now, we need to unpack the ``
add-ons'' into glibc's directory. So <TT>cd glibc-2.1.3</TT>, and then unpack 
the <TT>glibc-crypt-2.1.3.tar.gz</TT> and <TT>glibc-linuxthreads-2.1.3.
tar.gz</TT> tarballs there.-->
<p>
<tt>glibc-2.1.3.tar.gz</tt> (あるいはこれに類するバージョン)の圧縮ファイルを
通常どおり<tt>/mnt/target/usr/src</tt> に展開する。そして、<tt>glibc</tt> の
ディレクトリにアドオンパッケージも展開する必要がある。したがって、
<tt>cd glibc-2.1.3</tt> としてから、その場所に 
<tt>glibc-crypt-2.1.3.tar.gz</tt> と 
<tt>glibc-linuxthreads-2.1.3.tar.gz</tt> の圧縮ファイルを展開すること。

<!--<P>Now we can create the build directory, configure, make and install 
glibc.These are the commands I used, but read the documentation yourself and
make sure you do what is best for your circumstances. Before you do though, 
you might want to do a <TT>df</TT> command to see how much free space you 
have. You can do another after you've built and installed glibc, to see what 
a space-hog it is.-->
<p>
これで、ビルド用ディレクトリを作成し、設定し、<tt>make</tt> し、インストール
する準備ができた。わたしが使ったコマンドがあるのだが、まずは自分で付属文書を
読んで、自分の環境にとってどうするのが最もよいのか確認してほしい。しかし、そ
の前に、どれだけ空いたスペースがあるか <tt>df</tt> コマンドで調べたいかもしれな
い。<tt>glibc</tt> をコンパイルしてインストールし終わったら、再度空き容量を調
べ、<tt>glibc</tt> の容量消費の激しさを確認すること。

<P><VERB>
	cd ..
 	mkdir glibc-build ;(訳注:cd glibc-build)
 	../glibc-2.1.3/configure &#045;-enable-add-ons &#045;-prefix=/usr
 	make
 	make install_root=/mnt/target install
</VERB>

<!--<P>Notice that we have yet another way of telling a package where to 
install.-->
<p>
パッケージをどこにインストールするか決める方法は、上記以外にもあるので、注意
すること。

<!--<SECT>SysVinit-->
<sect>SysVinit
 
<!--<P>Making and installing the SysVinit binaries is pretty straight forward. 
I'll just be lazy and give you the commands, assuming that you have unpacked 
and entered the SysVinit source code directory:-->
<p>
<tt>SysVinit</tt> は、<tt>make</tt> もバイナリのインストールも極めて簡単なの
で、ここでは読者が <tt>SysVinit</tt> のソースコードを展開してその展開先のディ
レクトリにいることを前提に、以下のコマンドだけ書いておく。

<P><VERB>
 cd src
 make
 ROOT=/mnt/target make install
</VERB>

<!--<P>There are also a lot of scripts associated with <TT>init</TT>.
There are example scripts with the SysVinit package, which work fine.
But you have to install them manually. They are set up in a heirarchy
under <TT>debian/etc</TT> in the SysVinit source code tree. You can
just copy them straight across into the target <TT>etc</TT> directory,
with something like <TT>cd ../debian/etc; cp -r * /mnt/target/etc</TT>.
Obviously you will want to have a look before you copy them across!-->
<p>
<tt>init</tt> に関係のあるスクリプトはたくさんある。<tt>SysVinit</tt> のパッ
ケージにも典型的なスクリプトが付いていて、問題なく動作する。しかし、読者は手動
でインストールすべきだ。それらは、<tt>SysVinit</tt> のソースコードツリーの中の 
<tt>debian/etc</tt> というディレクトリに階層的にセットアップされている
ので、それらをターゲットシステムの <tt>etc</tt> ディレクトリに直接コピー
するだけでいい。方法は、<tt>cd ../debian/etc; cp -r * /mnt/target/etc</tt> 
とすること。コピーする前に、読者はきっとそれを見たくなると思う。

<!--<P>Everything is in place now for the target kernel to load up <TT>init
</TT> when we reboot. The problem this time should be that the scripts won't
run, becasue <TT>bash</TT> isn't there to interpret them. Also, <TT>init</TT>
will try to run <TT>getty</TT>'s, but there is no <TT>getty</TT> for it to run.
Reboot now and make sure there is nothing else wrong.-->
<p>
これで再起動するにあたって、ターゲットシステムのカーネルが <tt>init</tt> を
ロードするためのすべての準備が整った。ここでの問題は、それらのスクリプトを解
釈すべき <tt>bash</tt> がまだ入っていないので、スクリプトが動かないということ
だろう。また、<tt>init</tt> は <tt>getty</tt> を実行しようとするが、実行すべ
き <tt>getty</tt> がまだそこにないということもある。とりあえず再起動して、な
にも問題がないことを確認してほしい。


<!--<SECT>Ncurses-->
<sect>Ncurses

<!--<P>The next thing we need is Bash, but bash needs ncurses, so we'll 
install it first. Ncurses replaces termcap as the way of handling text screens,
but it can also provide backwards compatibility by supporting the termcap
calls.  In the interests of having a clean simple modern system, I think its 
best to disable the old termcap method. You might strike trouble later on if 
you are compiling an older application that uses termcap. But at least you 
will know what is using what. If you need to you can recompile ncurses with 
termcap support.-->
<p>
次に、<tt>bash</tt> が必要なのだが、<tt>bash</tt> には <tt>ncurses</tt> が必
要なので、それを先にインストールする。<tt>ncurses</tt> はテキストスクリーンを
操作する方法として <tt>termcap</tt> に取って替わるものだが、<tt>termcap</tt> 
呼び出しもサポートすることで、上位互換性を提供している。
無駄のないシンプルな現代的システムを持ちたいなら、古い <tt>termcap</tt> の方
式を使えなくするのが最適だと思う。<tt>termcap</tt> を使う少し古いアプリケー
ションをコンパイルする場合など後のトラブルに遭遇することもあるが、少なくとも
何がどういうものを使っているのかが分かる。もしそうしたアプリケーションを使う
必要があるのなら、<tt>ncurses</tt> を <tt>termcap</tt> サポート(のオプション
付き)でコンパイルし直せばいい。

<!--<P>The commands I used are-->
わたしが使ったコマンドは以下である。

<P><VERB>
 	./configure &#045;&#045;prefix=/usr &#045;&#045with-install-prefix=/mnt/target &#045;&#045with-shared &#045;&#045disable-termcap 
 	make 
	make install
</VERB>

<!--<SECT>Bash-->
<sect>Bash

<!--<P>It me took quite a lot of reading and thinking and trial and error to 
get Bash to install itself where I thought it should go. The configuration 
options I used are-->
<p>
自分の思い通りの場所に <tt>bash</tt> をインストールするために、読んだり考えた
り、トライアンドエラーで、ずいぶん時間がかかった。わたしに必要だった設定オプ
ションは以下のようなものであった。

<P><VERB>
 ./configure &#045;&#045;prefix=/mnt/target/usr/local -&#045;exec-prefix=/mnt/target -&#045;with-curses 
</VERB>

<!--<P>Once you have made and installed Bash, you need to make a symlink like 
this <TT>cd /mnt/target/bin; ln -s bash sh</TT>. This is because scripts 
usually have a first line like this-->
<p>
<tt>bash</tt> のインストールが完了したら、
<tt>cd /mnt/target/bin; ln -s bash sh</tt> と打って、シンボリックリンクを張る
必要がある。これは、スクリプトには通常最初の一行に以下のように書かれてあるか
らである。

<P><VERB>
#!/bin/sh
</VERB>
 
<!--<P>If you don't have the symlink, your scripts won't be able to run, 
because they will be looking for <TT>/bin/sh</TT> not <TT>/bin/bash</TT>.-->
<p>
もしシンボリックリンクがなかったら、スクリプトは <tt>/bin/bash</tt> ではなく 
<tt>/bin/sh</tt> を探すので、それらは実行されないだろう。

<!--<P>You could reboot again at this point if you like. You should notice that
the scripts actually run this time, though you still can't login, because
there are no <TT>getty</TT> or <TT>login</TT> programs.-->
<p>
もしよければ、ここで再起動することもできる。その時にはスクリプトが実際に実行
されるが、<tt>getty</tt> もしくは <tt>login</tt> プログラムがないので、まだログ
インはできない。

<!--<SECT>Util-linux (getty and login)-->
<sect>Util-linux (getty と login)

<!--<P>The util-linux package contains <TT>agetty</TT> and <TT>login</TT>. 
We need both of these to be able to log in and get a bash prompt. After it is 
instlalled, make a symlink from <TT>agetty</TT> to <TT>getty</TT> in the
target <TT>/sbin</TT> directory. <TT>getty</TT> is one of the programs
that is supposed to be there on all Unix-like systems, so the link
is a better idea than hacking <TT>inittab</TT> to run <TT>agetty</TT>.-->
<p>
<tt>util-linux</tt> パッケージには、<tt>agetty</tt> と <tt>login</tt> とが含
まれている。<tt>bash</tt> プロンプトが表示されるには、この両方が必要だ。それ
らのインストールが終わったら、ターゲットシステムの <tt>/sbin</tt> ディレクト
リで、<tt>agetty</tt> から <tt>getty</tt> にシンボリックリンクを張ること。
<tt>getty</tt> は Unix 系のシステムでは必ず存在するプログラムの一つであると考
えられているので、<tt>inittab</tt> の設定を変更して <tt>agetty</tt> を実行さ
せるよりもリンクを張るほうが考え方としてよいと思う。


<!--<P>I have one remaining problem with the compilation of util-linux. The 
package also contains the program <TT>more</TT>, and I have not been able to 
persuade the <TT>make</TT> process to have <TT>more</TT> link against the 
ncurses 5 library on the target system rather than the ncurses 4 on the 
source system. I'll be having a closer look at that.-->
<p>
<tt>util-linux</tt> のコンパイルにはひとつ問題が残っている。このパッケージに
は <tt>more</tt> というプログラムも含まれていて、わたしは、<tt>make</tt> の過
程で、<tt>more</tt> がターゲットシステムの <tt>ncurses 5</tt> にリンクを張る
ようにしたかったのだが、ソースシステムの <tt>ncurses 4</tt> にリンクしてしま
うのを止めさせる方法が分からなかったのである。これについては、もっと調べるつ
もりだ。

<!--<P>You will also need a <TT>/etc/passwd</TT> file on the target system.
This is where the <TT>login</TT> program will check to find out if you are 
allowed in. Since this is only a toy system at this stage, we can do 
outrageous things like setting up only the root user, and not requiring any 
password!! Just put this in the target <TT>/etc/passwd</TT>-->
<p>
ターゲットシステム上には、<tt>/etc/passwd</tt> ファイルも必要である。このファイ
ルの情報に基づいて、<tt>login</tt> プログラムは、利用を許されているユーザかど
うかの確認作業をする。この段階ではまだおもちゃのシステムにすぎないので、ルー
トユーザだけセットアップしてパスワードを要求しないといった乱暴な設定も可能で
はある。以下の設定をターゲットシステムの <tt>/etc/passwd</tt> に書き込むこと。

<P><VERB>
root::0:0:root:/root:/bin/bash
</VERB>
 
<!--<P>The fields are separated by colons, and from left to right they are
user id, password (encrypted), user number, group number, user's name, home 
directory and default shell.-->
<p>
フィールドはコロンで区切られていて、左から順に、ユーザ id、パスワード
(暗号化されている)、ユーザ番号、グループ番号、ユーザ名、ホームディレクトリ、
デフォルトのシェルとなっている。

<p>(訳注:インストール方法がないので、<ref id="inst" 
name="日本語訳について">に付記しました。)

<!--<SECT>Sh-utils-->
<sect>sh-utils

<!--<P>The last package we need is GNU sh-utils. The only program we need from
here at this stage is <TT>stty</TT>, which is used in <TT>/etc/init.d/rc</TT> 
which is used to change runlevels, and to enter the initial runlevel. I 
actually have, and used a package that contains only <TT>stty</TT>, but I 
can't remember where it came from. Its a better idea to use the GNU package, 
because there is other stuff in there that you will need if you add to the 
system to make it useable.-->
<p>
必要な最後のパッケージは、GNU の <tt>sh-util</tt> である。今の段階では、この
パッケージのなかで必要なのは、<tt>stty</tt> だけである。このプログラムは、<tt>
/etc/init.d/rc</tt> のなかで呼び出されるプログラムであり、ランレベルを変更した
り、起動時のランレベルに入ったりするのに利用される。わたしは、以前 <tt>stty
</tt> だけが入ったパッケージを実際に持っていて使っていたのだが、どこから
それを取ってきたか忘れてしまった。しかし、システムをより使いやすくしようとす
ると必要になるプログラムが他にも入っていることから、GNU のパッケージを使うほ
うがより良いと思う。

<!--<P>Well that's it. You should now have a system that will boot up and 
prompt you for a login. Type in ``root'', and you should get a shell. You won't
be able to do much with it. There isn't even an <TT>ls</TT> command here for 
you to see your handiwork. Press tab twice so you can see the available 
commands. This was about the most satisfying thing I found to do with it.-->
<p>
これで出来上がりだ。ブートしてログインのためにプロンプトを表示するシステム
になった。"<tt>root</tt>" とタイプすれば、シェルが起動する。ただ、たいしたこ
とは出来ない。手作りのシステムを鑑賞するための <tt>ls</tt> コマンドすらここに
はない。タブキーを二度押すと、使えるコマンドが表示される。わたしの知る限りこの
状態で最も満足のゆく機能がこれだった。
(訳注: 例えば、'echo *' でファイル名が表示されます。)

<p>(訳注:インストール方法がないので、<ref id="inst" 
name="日本語訳について">に付記しました。)


<!--<SECT>Towards Useability-->
<sect>もっと使いやすくするために

<!--<P>It might look like we have made a pretty useless system here. But 
really, there isn't that far to go before it can do some work. One of the first
things you would have to do is have the root filesystem mount read-write.
There is a script from the SysVinit package, in <TT>/etc/init.d/mountall.sh
</TT> which does this, and issues a <TT>mount -a</TT> so that everything gets 
mounted the way you specify in <TT>/etc/fstab</TT>. Put a symlink called 
something like <TT>S05mountall</TT> to it in the target's <TT>etc/rc2.d</TT>.
-->
<p> 
ここまでだと、全く使い物にならないシステムを作ってしまったように思えるかもしれ
ない。しかし、本当は、多少の仕事ができるようになるまでもう少しなのである。最初
にしなければならないことは、ルートファイルシステムを読み書きできる状態(
read-write)でマウントすることである。<tt>SysVinit</tt> パッケージに入っていた
スクリプトで <tt>/etc/init.d</tt> にある <tt>mountall.sh</tt> を使えばそれが
出来る。そして、<tt>mount -a</tt> とすれば、<tt>/etc/fstab</tt> で指定した方
法で全てをマウントできるはずである。
ターゲットシステムの <tt>/etc/rc2.d</tt> に、そのスクリプトへの
<tt>S05mountall</tt> のような名前のシンボリックリンクを張ってほしい。


<!--<P>You may find that this script will use commands that you haven't 
installed yet. If so, find the package that contains the commands and install 
it. See section <REF ID="finding" NAME="Random Tips"> for clues on how to 
find packages.-->
<p>
このスクリプトを実行するには、まだインストールされていないコマンド類が必要に
なるかもしれない。もしそうなら、それらのコマンドを含んだパッケージを探して、
インストールしてほしい。<ref id="finding" name="Random Tips"> のセクション
を見れば、パッケージを探すときの手がかりが見つかるだろう。

<!--<P>Look at the other scripts in <TT>/etc/init.d</TT>. Most of them will
need to be included in any serious system. Add them in one at a time, make 
sure everthing is running smoothly before adding more.-->
<p>
<tt>/etc/init.d</tt> にある他のスクリプトを見ること。まともなシステムなら
それらの大部分が含まれている必要がある。ひとつずつ起動させて、数を増やす前に
全てがスムースに実行されているか確認すること。

<!--<P>Check the File Heirarchy Standard (see section <REF ID="FHS" 
NAME="Filesystem">). It has lists of the commands that should be in 
<TT>/bin</TT> and <TT>/sbin</TT>. Make sure that you have all these commands 
installed. Even better, find the Posix documentation that specifies this stuff.
-->
<p>
ファイル階層構造の標準的な形式を確認してほしい。(<ref id="FHS" 
name="Filesystem"> を見てほしい) <tt>/bin</tt> や <tt>/sbin</tt> に入るべきコ
マンドのリストがそこに掲載されている。それらのコマンドが全てインストールされ
ているか確認しよう。さらに進んで、これらのコマンドについて定めている POSIX の
文書を探してみよう。

<!--<P>From there, it's really just a matter of throwing in more and more 
packages until everything you want it there. The sooner you can put the build 
tools such as <TT>gcc</TT> and <TT>make</TT> in the better. Once that is done,
you can use the target system to build itself, which is much less 
complicated.-->
<p>
ここまで来れば、必要なものが全てそろうまで、パッケージをそこに投げ入れるだけの
問題である。<tt>gcc</tt> や <tt>make</tt> といった構築ツールを入れるくらいにな
れは、コマンド群の内容はずっとよくなっているだろう。それが済んだら、ターゲット
システムを使って必要なものを今までよりずっと簡単に構築できるようになる。

<!--<sect>More Informatin-->
<!--<SECT1>Random Tips-->
<sect>More Informatin
<sect1>Random Tips
<LABEL ID="finding">

<!--<P>If you have a command called <TT>thingy</TT> on a Linux system with 
RPM, and want a clue about where to get the source from, you can use the 
command:-->
<p>
もし、RPM の入った Linux システム上で <tt>thingy</tt> というコマンドがあった
として、そのソースコードがどこで手にはいるか手がかりが欲しいときは、以下の
ようなコマンドを使うことができる。

<VERB>
	rpm -qif `which thingy`
</VERB>

<!--And if you have a Red Hat source CD, you can install the source code 
using-->
また、Red Hat のソース CD を持っているなら、以下の方法でソースコードをインス
トールできる。

<VERB>
	rpm -i /mnt/cdrom/SRPMS/what.it.just.said-1.2.srpm
</VERB>

<!--<P>This will put the tarball, and any Red Hat patches into
<TT>/usr/src/redhat/SOURCES</TT>.-->
<p>
上記のようにすると、圧縮ファイル(tarball)と、Red Hat のパッチがあれば同時に 
そうしたファイルも、<tt>/usr/src/redhat/SOURCES</tt> ディレクトリに入る。 

<!--<SECT1>Links-->
<sect1>リンク
<P>
<ITEMIZE>
<ITEM> 
<!--There is a mini-howto on building software from source, the
<URL URL="http://www.linuxdoc.org/HOWTO/Software-Building.html" 
NAME="Software Building mini-HOWTO">-->
ソースからのソフトウェアのビルドに関する mini-HOWTO がある。
<url url="http://www.linuxdoc.org/HOWTO/Software-Building-HOWTO.html" 
name="Software Building mini-HOWTO"> (<url 
url="http://www.linux.or.jp/JF/JFdocs/Software-Building-HOWTO.html"
name="日本語訳">)
<ITEM> 
<!--There is also a HOWTO on building a Linux system from scratch. It focuses 
much more on getting the system built so it can be used, rather than just 
doing it as a learning exercise.-->
ソースから Linux システムを構築するための HOWTO もある。その文書は実際に使うための
システム構築に焦点を当てていて、単なる学習用の演習ではない。
<URL URL="http://www.linuxfromscratch.org"
NAME="The Linux From Scratch HOWTO">

<ITEM><LABEL ID="FHS">
<!--
<URL URL="ftp://tsx-11.mit.edu/pub/linux/docs/linux-standards/fsstnd/" 
NAME="Unix File System Standard"> 
Another <URL URL="http://www.pathname.com/fhs/" 
NAME="link"> to the Unix File System Standard.
This describes what should go where
in a Unix file system, and why. It also has minimum requirements for
the contents of <TT>/bin</TT>, <TT>/sbin</TT> and so on. This is a 
good reference if your goal is to make a minimal yet complete system.
-->
<URL URL="ftp://tsx-11.mit.edu/pub/linux/docs/linux-standards/fsstnd/" 
NAME="Unix File System Standard"> 
もしくは、Unix File System Standard に対する
<URL URL="http://www.pathname.com/fhs/" 
NAME="リンク">。
この文書では、Unix フィアルシステム内のどこに、何を置くべきなのかが述べられて
いる。また、<tt>/bin</tt> や <tt>/sbin</tt> 等の内容として最低限なにが必要なの
かが解説されている。もし最小だが完全なシステムを構築しようとしているのなら、
この文書は、リファレンスとして役に立つ。
</ITEMIZE>


<SECT>Administrivia
<SECT1>Copyright
<P>
<!--This document is copyright (c) 1999, 2000 Greg O'Keefe. You are welcome
to use, copy, distribute or modify it, without charge, under the terms of the 
<URL URL="http://www.gnu.org/copyleft/gpl.html" 
	NAME="GNU General Public Licence">.
Please acknowledge me if you use all or part of this in another document.-->
この文書の著作権： Copyright (c) 1999, 2000 Greg O'Keefe.
<p>
この文書の利用、配布、修正は、次のライセンスの条項に従う限り無料です。
<URL URL="http://www.gnu.org/copyleft/gpl.html" 
NAME="GNU General Public Licence"><newline>
他の文書においてこの文書の全体もしくは部分を利用するときは、著者まで連絡願い
ます。

<!--<SECT1>Homepage-->
<sect1>ホームページ
<!--<P>The lastest version of this document lives at
<URL URL="http://www.netspace.net.au/~gok/power2bash" 
NAME="From Powerup To Bash Prompt"> .-->
<p>
この文書の最新バージョンは、こちらにあります。
<url url="http://www.netspace.net.au/~gok/power2bash" 
name="From Powerup To Bash Prompt"><newline>

<!--<SECT1>Feedback-->
<sect1>フィードバック
<!--<P>I would like to hear any comments, criticisms and suggestions for 
improvement that you have. Please send them to me-->
<p>読者のコメント、批判、改善ついての提案など何なりと聞かせてください。
<newline>  
Greg O'Keefe gcokeefe@postoffice.utas.edu.au 

<SECT1>Acknowledgements
<LABEL ID="acknowledge">
<!--<P>Product names are trademarks of the respective holders, and are hereby
considered properly acknowledged.-->
<p>製品名はそれぞれの権利者の登録商標です。

<!--<P>There are some people I want to say thanks to, for helping to make 
this happen.-->
<p>この文書をつくるにあたって、お世話になった何人もの
方たちがいるので、ここに感謝のことばを述べたいと思います。

<P>
<DESCRIP>

<TAG>Michael Emery</TAG>
<!--For reminding me about Unios.-->
unios のことを思い出させてくれた。

<TAG>Tim Little</TAG>
<!--For some good clues about <TT>/etc/passwd</TT>-->
<tt>/etc/passwd</tt> に関するいくつかのよい手がかりを与えてくれた。

<TAG>sPaKr on #linux in efnet</TAG>
<!--Who sussed out that syslogd needs <TT>/etc/services</TT>, 
and introduced me to the phrase ``rolling your own'' to 
describe building a system from source code.-->
<tt>syslogd</tt> が <tt>/etc/services</tt> を必要とすることを指摘し、同時に
"rolling your own" という言葉がソースからシステムを作ることを指すのだと
教えてくれた。

<TAG>Alex Aitkin</TAG>
<!--For bringing Vico and his ``verum ipsum factum'' 
(understanding arises through making) to my attention.-->
Vico と "verum ipsum factum" が「理解はつくることから生まれる」
という意味であることを知らせてくれた。

<TAG>Dennis Scott</TAG>
<!--For correcting my hexidecimal arithmetic.-->
わたしの 16 進数の計算の間違いを指摘してくれた。

<TAG>jdd</TAG>
<!--For pointing out some typos.-->
誤植を指摘してくれた。
</descrip>

<!--<SECT1>Change History-->
<sect1>改訂履歴

<SECT2>0.8
<P>
<ITEMIZE>
<ITEM> 
<!--Initial version. Separated from "From PowerUp to Bash Prompt".-->
最初のバージョン。"From PowerUp to Bash Prompt" から分離した。
</ITEMIZE>

<SECT1>TODO
<P>
<ITEMIZE>
<ITEM> 
<!--Convert to docbook.-->
docbook 形式に変換すること。
</ITEMIZE>

<label id="inst">
<sect1>日本語訳について
<p>
蛇足ではありますが、util-linux と sh-util については、インストール方法の記述が
ないので、訳者が試みてなんとか上手くいった方法を書いておきたいと思います。 
(本当に参考程度です。)

<itemize>
<item>util-linux について<newline>
展開したディレクトリの中に、MCONFIG という設定ファイルがあるので、それを 開い
て、DESTDIR=/mnt/target という行を追加し、HAVE_SHADE=yes を no に、 LOCALEDIR 
を /mnt/target/usr/share/locale に変更します。 あとは、./configure ; make ; 
make install です。 

<item>sh-utils について<newline>
./configure --prefix=/mnt/target
make ; make install
です。 

</itemize>

<p>バージョンは、それぞれ 2.10f と 2.0 でした。いろいろな方法があると思うので、
詳しくは、プログラム付属の文書か Linux From Scratch をご覧ください。 

<verb>
翻訳: 千旦 裕司

校正: 山森 浩幸
      武井 伸光
      佐野 武俊
      川嶋 勤
</verb>
</ARTICLE>
