<!--<!DOCTYPE ARTICLE PUBLIC "-//OASIS//DTD DocBook V4.1//EN">-->
<!doctype article public "-//OASIS//DTD DocBook V3.1//EN">
<article id="index"> 
<artheader> 
<title>Small Memory mini-HOWTO</title>
<author> 
<firstname>Todd</firstname> 
<surname>Burgess</surname> 
<affiliation> 
<address><email>tburgess@uoguelph.ca</email></address> 
</affiliation> 
</author>
<othercredit role="translator" lang="ja">
<firstname>JF Project</firstname>
<surname></surname>
<contrib>日本語訳</contrib>
<affiliation>
 <address>JF@linux.or.jp</address>
</affiliation>
</othercredit>

<abstract> 
<para>
<!--
Describes how to run Linux on a system with a small amount of memory.
-->
メモリ容量が少ないシステム上で Linux を動かす方法
</para> 
</abstract> 
<pubdate>2000-12-12</pubdate> 
<revhistory> 
<revision> 
<revnumber>0.1</revnumber> 
<date>2000-12-01</date> 
<authorinitials>tb</authorinitials> 
</revision> 
</revhistory> 
</artheader> 

<sect1 id="Introduction"> 
<title><!--Introduction-->イントロダクション</title> 

<para>
<!--
Assuming buying more memory is out of the question there are many
things you can do to tighten up memory usage in Linux. 
-->
メモリを買って追加するという手もありますが、それ以外にも Linux が消費する
メモリの量を節約する方法はたくさんあります。
</para> 


<para>
<!--
Many Linux distributions out of the box are quite bloated from a
memory perspective. They run more services and offer more features than most of
us will ever need. By removing many of these services you can free up several
megabytes of real memory.
-->
メモリ消費の観点からすると、インストールした直後のディストリビューション
では、たいてい非常に無駄の多いメモリの使い方をしています。わたしたちの
大部分が使いもしないようなサービスや機能が動いているのです。そうした過剰な
サービスの多くを削除することで、数 MB の実メモリを解放できます。
</para> 

<para>
<!--
My own system is a 486DX2-66 with 12MB of physical memory and 12MB
of swap space. It has run Linux for the last 3 years quite happily, and
hopefully it will run Linux for several more years. :)
-->
著者自身のシステムは、486DX2 66MHz の CPU と 12 MB の物理メモリ、および 12 MB 
のスワップスペースという環境です。これでここ 3 年間なんの不満もなく Linux を
動かしています。たぶん、あと数年はこのまま Linux を動かし続けるでしょう。 :)
</para> 
</sect1> 

<sect1 id="linuxkernel"> 
<title><!--Linux Kernel-->Linux カーネル</title> 

<para>
<!--
All the Linux kernels which come with distributions are quite
bloated and contain more features than any of us will ever need or use. If you
have not re-compiled your own kernel, it is highly recommended that you do so.
How to re-compile a kernel is beyond the scope of this document, but many
excellent Linux books and guides cover this subject in intimate detail.
-->
ディストリビューション付属のカーネルは、どれも肥大しすぎであり、誰も使わない
ような機能まで付加されています。これまでカーネルを再コンパイルしたことがない
としても、この際、是非やってみることをおすすめします。カーネルの再コンパイル
の方法はこの文書の範疇を越えますが、それについて丁寧に解説された優れた Linux 
本やガイドはたくさんあります。
</para> 

<para>
<!--
If you do re-compile your kernel, remember to put in no more
features than you need. For instance: how many of you include PLIP support in
your kernel? How many of you who include it actually use it? Smaller kernels
require less time to load, use less memory, and use less CPU cycles. 
-->
カーネルを再コンパイルする場合は、必要な機能以外は一切組み込まないという方針
を忘れないでください。たとえば、読者のうち、カーネルの PLIP サポートを必要と
するひとがどれだけいるでしょうか？ その機能を組み込んだとして、実際に使う
ひとがどれだけいますか？ カーネルを小さくすれば、ロード時間が短くなり、
メモリの消費は減少し、CPU サイクルも短縮されます。
</para>

<para>
<!--
Another thing is modules. I personally do not use them because I
found them to be a cumbersome. If you use them and like them then they can help
to relieve "kernel bloat." 
-->
もうひとつ、モジュールの問題があります。モジュールは扱いがやっかいだと
思っているので、個人的には使っていません。しかし、もし使ってみて特に
問題だと感じないなら、「カーネルの肥大化」を抑えるには効果的です。
</para>

</sect1> 

<sect1 id="vconsole"> 
<title><!--Virtual Consoles-->仮想コンソール</title> 

<para>
<!--
VCs are a great way to free up memory. Most Linux distributions run
about 6 of them out of the box. On average running 6 VCs requires about 4MB of
memory. Removing a couple of them can free up a couple MBs of memory. Most
users can get away with running only 3 or 4 VCs. How many you choose to remove
is a matter personal preference. Just remember that the fewer you run, the more
memory your applications will have to run. 
-->
仮想コンソールの数を減らすと、使用メモリを大幅に節約できます。大部分の Linux 
ディストリビューションでは、初期状態で 6 個の仮想コンソールが作動していまが、
6 個の仮想コンソールを作動させると、だいたい平均で、約 4MB のメモリを消費
します。
この数を減らせば、数 MB 単位でメモリを節約できます。たいていのユーザは、
3 個か 4 個で充分です。いくつまで減らすかは使う人の好みにもよりますが、
仮想コンソールの数を減らせば減らすだけ、その分アプリケーションが使用できる
メモリの量が増えるということを忘れないでください。
</para> 

<para>
<!--
The file which outlines how many VCs get loaded is
<filename>/etc/inittab</filename>. In order to remove VCs: 
-->
仮想コンソールをいくつ動作させるかは、<filename>/etc/inittab</filename> 
に記述されています。仮想コンソールの数を減らすには、次のようにしてください。
</para>

<para>
<orderedlist> 

<listitem> 
<para>
<!--
Load <filename>/etc/inittab</filename> in a text editor.
-->
テキストエディタで、<filename>/etc/inittab</filename> を開きます。
</para> 
</listitem> 

<listitem> 
<para>
<!--
Look for a line which looks like the following line (the key
feature being a line which starts with c1): 
-->
次のように書かれている行を見つけます(先頭が c1 で始まっているところが
ポイントです)。
</para> 
<para>
<programlisting>
  c1:12345:respawn:/sbin/getty tty1 38400 linux
</programlisting> 
</para>
<para>
<!--
Start at the highest number (i.e. c6) and comment it out by
inserting a '#' in the first row. Repeat this step as many times as needed.
Remember every line you comment out is one less VC running. 
-->
このような行のうち、一番大きな数字で始まる行(たとえば、c6 )の行頭に # を
書き込んでコメントアウトします(左側に空白をいれないようにしてください)。
この作業を必要な回数だけ繰り返してください。1 行コメントアウトするごとに、
起動するコンソールがひとつ減ります。
</para> 
</listitem> 

<listitem> 
<para>
<!--
Re-boot the system for your changes to take effect. 
-->
システムを再起動すると、設定が有効になります。
</para> 
</listitem> 

</orderedlist> 
</para>
</sect1> 

<sect1 ID="Daemons"> 
<title><!--Daemons-->デーモンプロセス</title> 

<para>
<!--
Many Linux distributions run daemons most of us will never use.
Most of these daemons are loaded by scripts. Where these scripts are and what
they are called depends on your Linux distribution. Slackware set-up scripts
are buried in <filename>/etc/rc.d/rc.*</filename>.
-->
多くの Linux ディストリビューションでは、わたしたちのほとんどが使いもしない
ようなデーモンが起動するようになっています。そうしたデーモンの大部分は、
スクリプトによってロードされています。ただ、そのスクリプトの名前や置かれている
位置は、ディストリビューションによって異なっています。Slackware の場合だと、
セットアップスクリプトは <filename>/etc/rc.d/rc.*</filename> にあります
(訳注：Red Hat/Caldera/Debian でのデーモンの止め方は、<link 
linkend="debianconf">日本語訳について</link> をご覧ください)。
</para>

<para>
<!--
Before you proceed, a knowledge of Unix shell script programming
would be a definite asset. However, if you have no experience writing Unix
shell scripts, what follows is probably the quickest introduction to shell
script programming ever written.
-->
ここからの説明においては、Unix シェルスクリプト・プログラミングの知識があると
非常に役に立ちます。とはいえ、Unix シェルスクリプトを書いたことがないひとの
ために、以下に簡単ではありますが、シェルスクリプトの紹介をしようと思います。
</para>

<!--
<para>Take the following shell script:</para> 
-->
<para>次のシェルスクリプトをご覧ください。</para>

<para>
<programlisting>
  #!/bin/sh
  echo "hello world" 
  #echo "good bye cruel world"
</programlisting> 
</para>

<para>
<!--
The previous code will echo the string "hello world". Shell scripts
must contain the the line 
-->
上記のコードは、"hello world" という文字列を表示するものです。シェルスクリプト
には、まず次のような記述が、最初の行の先頭に含まれていなければなりません。
</para>

<para>
<programlisting>
  #!/bin/sh
</programlisting> 
</para>

<para>
<!--
at the very top line.
After that every line is executed as if you had typed it at the keyboard (think
of shell scripts as nothing more then glorified keyboard macros).
-->
それに続くすべての行では、実行に先立ってあらかじめキーボード上で打ち込んで
おいたコマンドがそのまま一行づつ実行されます(良くできたキーボードマクロの
ようなものと考えてください)。
</para> 

<para>
<!--
Lines which begin with a '#' are said to be commented out because
they do not get executed by the shell. Most start-up scripts when they load
daemons look like: 
-->
'#' で始まる行は、シェルによって実行されないので、コメントとなります。
デーモンをロードする場合、起動スクリプトのほとんどは次のようなかたちに
なっています。
</para> 

<para>
<programlisting>
  if somecondition 
    do something 
    fi
</programlisting> 
</para>

<para>
<!--
What you want to do is comment out every line starting with the 
-->
必要なのは、次の記述で始まり、
</para>

<para>
<programlisting>
  if
</programlisting>
</para>

<para>
<!--
statement and ending with the 
-->
次の記述で終わる行、
</para>

<para>
<programlisting>
  fi
</programlisting> 
</para>

<para>
<!--
statement. 
-->
こうした行をすべてコメントアウトすることです。
</para> 

<para>
<!--
If you want to find where a daemon is loaded, search the start-up scripts for 
the name of the daemon. If I wanted to find where <application>inetd
</application> is loaded in Slackware I would do the following: 
-->
特定のデーモンがどこで起動されているか知りたい場合は、そのデーモンの名前を
初期化スクリプト内で探してください。たとえば、<application>inetd</application> 
が Slackware のどこからロードされるのか知りたい場合、わたしなら次のように
します。
</para>

<para>
<screen>
  $ cd /etc/rc.d
  $grep -n inetd rc.*
</screen> 
</para> 

<sect2> 
<title><application>inetd</application></title> 

<para>
<!--
<application>inetd</application> allows people to do things like 
<command>telnet</command>, <command>ftp</command>, and send 
<command>talk</command> requests to your machine. If you never use your system 
as a server or need to access any of its services remotely you can remove 
<application>inetd</application>. 
-->
<application>inetd</application> は、<command>telnet</command> や <command>
ftp</command> コマンドを使ったり、あなたのマシンに <command>talk</command> 
リクエストを送ったりできるようにするデーモンです。自分のマシンをサーバとして
使ったり、リモートでアクセスしたりする必要がないなら、<application>inetd
</application> は削除してかまいません。
</para> 
</sect2> 

<sect2> 
<title><application>lpd</application></title> 

<para>
<!--
<application>lpd</application> is used to print files on your printer 
using the <command>lpr</command> command. If you never print on your Linux
box you can remove <application>lpd</application>. If, however, you own a HP 
Deskjet &trade; printer and would like to print, I highly recommend the 
package I put together called dj-printcap which is available at:
-->
<application>lpd</application> は、<command>lpr</command> コマンドを使って、
ファイルをプリンタで印刷する際に使用します。お手元の Linux で印刷をしない場合
は、<application>lpd</application> を削除してかまいません。ただ、もしお使いの
プリンターが HP Deskjet &trade; プリンタであり、それで印刷をするのであれば、
dj-printcap というパッケージをおすすめします。このパッケージは以下の場所で
入手できます。
</para> 

<para> 
<ulink 
url="ftp://ftp.redhat.com/pub/redhat/redhat-4.2/i386/RedHat/RPMS/dhcpcd-0.6-2.i386.rpm">
ftp://sunsite.unc.edu/pub/Linux/system/Printing/dj-printcap.tar.gz</ulink>
</para> 
</sect2> 

<sect2> 
<title><application>nfsd</application> <!--and-->と 
<application>mountd</application></title> 

<para>
<!--
These two daemons are used to run an NFS server. If you never use
your Linux system as an NFS server you can safely remove these two daemons.
-->
これらふたつのデーモンは、NFS サーバを稼働させる際に使用します。お使いの 
Linux システムを NFS サーバとして利用しないのであれば、このふたつのデーモンは
削除したほうが安全です。
</para> 
</sect2> 

<sect2> 
<title><application>portmap</application></title> 

<para>
<!--
The <application>portmap</application> daemon is used to handle RPC 
services. If you do not run an NFS server or any other RPC programs you can 
remove <application>portmap</application>. 
-->
<application>portmap</application> デーモンは、RPC サービスを処理する際に
使用します。NFS サーバやその多の RPC プログラムを稼働させないなら、
<application>portmap</application> は削除してかまいません。
</para> 
</sect2> 

<sect2> 
<title><application>sendmail</application></title> 

<para>
<!--
<application>sendmail</application> is another daemon which requires a 
fair bit of memory. If you never use your Linux box as a relay for sending 
e-mail or you never receive mail on your Linux box, you can probably remove 
<application>sendmail</application>. If you do send
e-mail from your Linux box most e-mail clients can be set-up to send e-mail
from another mail server.
-->
<application>sendmail</application> もかなり多くのメモリを消費するデーモン
です。お手元の Linux で送信メールを中継したり、送信されたメールを手元の Linux 
で直接受信したりしないのであれば、<application>sendmail</application> は
削除してかまわないでしょう。手元の Linux からメールを送信する場合は、たいてい
(プロバイダ等が提供する)別のメールサーバを使ってメール送信が可能なように、
メールクライアントを設定できるようになっています。
</para> 
</sect2> 

<sect2> 
<title>others</title> 

<para>
<!--
There may be other daemons your system starts up which you do
not need. Remove what you feel you have to. Two daemons which you must run are
<application>syslogd</application> and <application>klogd</application>. 
-->
システム上で起動されるデーモンのなかには、他にも不必要なものがあると思います。
不要だと思ったら削除してしまいましょう。削除してはいけないデーモンは、
<application>syslogd</application> と <application>klogd</application> の
ふたつです。
</para> 
</sect2> 
</sect1> 

<sect1 ID="Conclusion"> 
<title><!--Conclusions-->あとがき</title> 

<para>
<!--
The previous discussion illustrates the steps I took to tighten up
my memory usage on my Linux box. Hopefully I have provided you with some
insight into what you can do with your Linux box to conserve memory. Good luck
and happy hacking!
-->
これまで説明したことは、わたしが自分の Linux マシンのメモリ使用量をできる
限り節約するためにとった方法です。Linux マシンのメモリ使用量を抑えるための
方法について、ちょっとした参考になればさいわいです。Good luck and happy 
hacking!
</para> 
</sect1>

<sect1 id="trans">
<title>日本語訳について</title>

<sect2 id="debianconf">
<title>Red Hat/Caldera/Debian でのデーモンの起動の止め方(自己流)</title>
<para>
訳者は RedHat 4.2 を使っているため、この文書にあるデーモンの起動を止める
ための手順をそのまま適用することはできませんでした。ここで、私のとった手
順を紹介しておきます。(Debian は触ったことはありませんが、PCMCIA HOWTO 
によると System V 流のようなので、この手が使えるのではないでしょうか)
以下の方法はベストではないのかもしれませんが、少なくとも最悪の方法では
ないと信じています。^^;
</para>
<para>
(Debian ではディレクトリ配置が多少異なる場合がありますが、方法は
同じです。y.s.)
</para>
<para><caution><para>
注意!!： この方法に関して起きるいかなる損害も訳者は一切その責任は
とることはできません。*自分の責任* において行ってくださいね。
</para></caution></para>

<para>
◎手順
</para>
<para>
<orderedlist>
<listitem><para>
<filename class="directory">/etc/rc.d</filename> に移動し、root 権限で 
<command>cp -pdr rc3.d rc3.d.backup</command> と入力。
オリジナルのバックアップをとっておく。(以後の操作も root 権限で。)
なお、オプションは正確にいれてください！
</para></listitem>

<listitem><para>
<filename class="directory">/etc/rc.d/rc3.d</filename> に移動し、止めたいもの
を入れるディレクトリを作成する(ここでは <command>mkdir <replaceable>stop
</replaceable></command> とします)。
</para></listitem>

<listitem><para>
<filename class="directory">/etc/rc.d/rc3.d</filename> にあるのが個々の
デーモンを起動するために使用されるファイルなので、不要と思われる名前のものを 
2.で作成したディレクトリに移動する。 (例: <command>mv S60n* stop</command>) 
</para><para>
<note><title>注意 1</title><para>
決して消さないように。あくまでも移動です。
</para></note>
<note><title>注意 2</title><para>
十分な知識なしに一度にいくつも移動すると、問題が起こるかも
しれません。1回で移動するファイルは最小限にして一歩一歩進みましょう。
</para></note>
</para></listitem>

<listitem><para>
リブートする。
</para></listitem>
</orderedlist>
</para>

<para>
これら一連の作業を行う前に、起動直後のメモリの状態を <command>
cat /proc/meminfo</command> 等で調べておいて、作業後の値と比較すると
幸せになれるかもしれません。
</para>
<para>
この方式の利点は、
</para>

<para>
<orderedlist>
<listitem><para>
現在の状態から 1つ 1つ変更していけるので、問題が起こった時の原因の判
別がしやすい。
</para></listitem>

<listitem><para>
もし立ち上がらなくなっても、ブートフロッピーからブートして、最後に移
動したファイルを元のディレクトリ (<filename class="directory">
/etc/rc.d/rc3.d</filename>) にコピーするだけ
で 1つ前の状態に戻せる。
</para></listitem>

<listitem><para>
にっちもさっちもいかなくなった時は、ブートフロッピーからブートし、
1.でとったバックアップで rc3.d を置き換えてやれば、
(<command>cp -pdrf rc3.d.backup rc3.d</command>) 一番最初に戻れる。
</para></listitem>

<listitem><para>
<command>mkdir</command> と <command>cp</command> と <command>mv</command> 
しか使わない。(リカバリーも楽)
</para></listitem>
</orderedlist>
</para>
<para>
というわけで、私のような超初心者にはいいのではないかと思います。
</para>
</sect2>

<sect2 id="transcopy">
<title>訳者および謝辞</title>
<para><literallayout>
翻訳：中野正剛(1998/03/28)
</literallayout></para>
<para>
日本語版の謝辞: この文書の作成に当たっては、有益なご助言をいただいた
川岸 良治さん、中野 武雄 さん ほか、JF の皆さんに感謝いたします。
</para>
<para><literallayout>
更新：千旦裕司(2001/03/17)
</literallayout></para>
<para>
(<link linkend="debianconf">Red Hat/Caldera/Debian でのデーモンの
起動の止め方</link>は、中野正剛さんが作成しています。)
</para>

</sect2>
</sect1>


</article>
