<!doctype linuxdoctr system>
<!-- Draft 0: 19/11/2000 - 粗訳 : magotou@fubyshare.gr.jp-->
<!-- Draft 1: 20/11/2000 - 表現の見直し、術語統一（不完全）、問題のある文字の修正など
magotou@fubyshare.gr.jp -->
<article>
<!-- Draft 2: 21/11/2000 - 査読結果反映
  チェックいただいた方：
　　Setoguchi Takashi <setzer@mx3.tiki.ne.jp> さん
　　　一部訳候補
      Hirokazu Nomoto <hng@ps.ksky.ne.jp>さん
　　　FreeDict :-)と２枚以上の増設単位となるマザーについて。追加するかどうかは
　　　まだ検討中

訳者による追加
 - VIA と Intel チップセットでの振る舞いの違い
 - Windows で不良メモリを使う場合のTIPS
版権部分表示をverbとして、訳は参考としてつける。
その後、原著作者に連絡。近々アップデートを予定しているとのこと。
追補については「さらなるヒント」以外一部コメントにしておいておく(11/24)。
-->
<!-- Draft 3: 28/11/2000 - 追補に関して原著者とのやりとりの結果を反映。次のバージョンがでるまでにリリースしたい。
 - ハイエンドサーバ向けボードでのBadRAM適用は問題がでており、推奨しない（検証中）
 - EDORAMを使ったシステムではBadRAMは動作するが、30pinSIMMなど古いシステムでは動かない
 - VIA チップセットは不良領域の自動スキップ機能があるらしい（データシート上未発見なのでとりあえずトル）
 - WindowsにおけるTIPは話し合いの上、記載は先送り（先方で検証中らしい）
-->
<!-- Draft 4:06/12/2000 - 査読結果反映、あまりに長い行に適宜改行、こまかい訂正など

査読者のみなさん：
Tsutomu Kawashima <kawawa@mail.interq.or.jp>さん
 - Window関係のBadRAMのハンドリング = Postponeだが原著者に連絡
Yuji Senda <ysenda@pop01.odn.ne.jp>さん
 - 誤訳、スムースな訳への修正指摘など
Setoguchi Takashi <setzer@mx3.tiki.ne.jp>さん
 - "bit swapping"の解釈誤り指摘、誤訳指摘など
Hirokazu Nomoto <hng@ps.ksky.ne.jp>さん
 - step by step の確認、誤訳指摘など
-->

<!-- Title Information -->

<title>BadRAM-HOWTO
<author>Nico Schmoigl
<date>v1.0 17 August, 2000

<trans>日本語訳: 後藤雅晴と JF Project (<tt>jf@linux.or.jp</tt>)
<tdate>v1.0-j 12 Dec, 2000
<abstract>
<!--
 How to use bad memory modules in a Linux Box (still needs a special patch
for the kernel)
-->
 Linux ボックス（現時点では特別なパッチをカーネルのために必要とします）において、不良個所のあるメモリーモジュールを使う方法
 </abstract>

<!-- Table Of contents -->
<toc>

<!-- Begin the document -->
<sect><!--
 About this document
-->
 このドキュメントについて
<p>

 <sect1><!--
 New versions of this document
-->
 このドキュメントの新しいバージョンの入手について
 <p><!--
 This HOWTO is available in HTML and SGML. You can download it from
<url url="http://webrum.uni-mannheim.de/math/schmoigl/linux/"
name="http://webrum.uni-mannheim.de/math/schmoigl/linux/">.
 -->
 この HOWTO は HTML と SGML の両方の形式で、<url url="http://webrum.uni-mannheim.de/math/schmoigl/linux/"
name="http://webrum.uni-mannheim.de/math/schmoigl/linux/"> から入手できます。

 <sect1><!--
 Who maintains this?
-->
 誰がこの文書をメンテナンスするか？

 <p><!--
It's me ;-) Nico Schmoigl, <url
url="mailto:nico@writemail.com" name="nico@writemail.com">.
-->
それは私 ;-) Nico Schmoigl <url
url="mailto:nico@writemail.com" name="nico@writemail.com">
です。
 <sect1><!--
 Topic of this document
-->
 このドキュメントで取り扱う内容

 <p><!--
 This HOWTO is about how to use memory modules which have (some or even
many) bad bits. It should give you partical hints. Only theory which is
absolutely necessary for understanding will be mentioned. 
-->
 この HOWTO は、多少に関わらず不良ビットを有したメモリーモジュールを使う方法について述べています。実用的なヒントを与えることを目標としますが、それらの理解のために不可欠な理論についても言及することにしています。

 <sect1> <!--''I found a bug in this document!''-->
"このドキュメントに間違いを見つけたぞ!"
 <p><!--Errata humanum est! (latin: ''Making errors is human'') *g*
 But, please drop me short email so I can correct this.
-->
Errata humanum est!(ラテン語で、"間違いをするのが人間だよ"という意味) *g*
<p>私宛にメールをいただければ修正します。

 <p><!--Thank your very much for your support!-->
ご協力に感謝します。
 
 <sect1> <!--Copyright-->
著作権
<p>
（訳注：著作権に関する宣言は原文を尊重し、訳は参考にとどめます）
 <p>
I hereby declare this Document as 'Public Domain'. You may copy and
redistribute as often and via any type of media without any need of
notification. Please note that this Document (and its containing
information) is provided as it is; this means that I cannot made liable of
any damage which could (eventually) result off its usage.
<p>
参考訳：私は、このドキュメントを『パブリックドメイン』であると宣言します。あなたは私に通知することなく、どのような手段によってでもこのドキュメントを複製したり再配布することができます。このドキュメント（そして、含まれる情報）がそのまま提供される点に注意してください；私にはこのドキュメントを利用した結果に関するいかなる損害についても責任を負うものではありません。

 <p>The right of change remains at the author. If you like to add
something, please drop me a line and we will discuss it. Surely we can agree
on the issue somehow! Translation is
hereby accepted, but please send me a short note in which you tell me into
which language you translated this document. Thank you!
<p>
参考訳：変更の権利は、著者にあります。何か追加したいと思われたなら、私にご一報いただければ検討したいと思います。改変の必要性があるだろうことには同意しています。翻訳についても歓迎しますが、どのような言語に翻訳されたかを簡単に教えてください。よろしくおねがいします。
 <p>The LDP Project (especially its management members) has the right to
alter, redistribute, translate and/or reformat this Document as long as the
Copyright notice is not changed significantly and the sense of the Document
is not changed in basics.
<p>参考訳：版権表示が大幅に変わったり、あるいはこのドキュメントの基本が変更されないかぎり、LDP プロジェクト（特にその管理メンバ）はこのドキュメントを改変したり、再配布したり、翻訳したり、あるいは再フォーマットする権利を持っています。

<p>The BadRAM patch (about which is this Document about, though) version
1, 2 and 3 are Copyright by Rick van Rein. The BadRAM patch version 4 is
Copyright by Nico Schmoigl.
<p>
参考訳：BadRAM patch ( このドキュメントで説明されているものです）はバージョン 1,2 と 3 については、Rick van Rein に版権があります。BadRAM patch バージョン 4 は、Nico Schmoiglに版権があります。

<sect><!-- History of BadRAM-->
BadRAM の履歴
<p><!--Well, this chapter is very short as BadRAM is very young:

Being developed as additional patch for the 2.2.x kernel series, BadRAM was
programmed by Rick van Rein in early 2000. The concept he used is still the
same as today, allocating all bad ram areas during boot up phase.-->
BadRAM 自身まだ生まれて間がないため、この章も非常に簡潔です −

2.2.x カーネル・シリーズのために追加のパッチとして開発された BadRAM は西暦2000年の初めに Rick van Rein によってプログラムされました。彼が使った、ブート時に不良 RAM 領域を選り分けるという概念はまだ現在も同じです。

<p>
<!--The current version is <em>V3</em>. This is the stable release which is distributed
by Rick. As of writing, I (Nico) distribute an ,,alpha'' version of the
BadRAM patch which is in version <em>V4.5</em>. Please only use my version,
if you are familar with the kernel hacking process.-->
現在のバージョンは <em>V3</em> です。これは、Rick によって配布されている安定版リリースです。この文書を作成している現在、私（Nico）は BadRAM patch バージョン　<em>V4.5</em> の α 版を配布しています。カーネルハッキングに堪能な方だけ、私のバージョンをご使用ください。

<sect> <!--Basics / Concepts-->
基本概念

<sect1><!-- Some words before we start-->
説明を始める前に

<p><!--As you know from the chapter before, BadRAM is still very young. So, it is
very likely that many things will change very much in the future. Therefore,
please keep up to date and <em>ALWAYS</em> use the latest version of this
Document.-->
前出の通り、まだ BadRAM は生まれて間がありません。そのため、今後大幅な変更の可能性があります。したがって、常に最新の状況をチェックし、<em>常に</em>このドキュメントの最新のバージョンを使うようにしてください。

<sect1><!-- Requirements for the understanding of this Document -->
このドキュメントを理解するための必要事項

<p><!--The driver is still in its experimental phase. To be honest, I just
know three linux boxes on which BadRAM has worked yet (though, I do not know
any machine on which BadRAM does not work at all!). Therefore, it does not
make sense to write a huge documentation with all detailed steps in it where
as many things are standard anyway. As of these reasons I will assume that
you can-->
このドライバはまだ実験段階にあります。正直な話、私自身はまだ BadRAM が動作する linux ボックスをほんの3つしか知りません（しかしながら、BadRAM が全く動かないと言う話はまだ聞いたことはありません）。よって、全ての詳細な手順についてのべた膨大な標準ドキュメントを作成することは意味がありません。これらの理由から、私はこのドキュメントの読者が以下の事ができると仮定します。
<P>（訳注：実際には、複数メモリモジュールを増設単位とするハイエンド用途マザーボードや30ピン SIMM を使ったマザーボードでは動かないケースがあるとのことです。検証はこのドキュメントが書かれた時点では主に SDRAM について述べられていますが、EDORAM を使ったものは動作するとのことです。くれぐれもご注意ください）
<itemize>
<item><!--download, configure, compile and setup a specific Linux Kernel-->
Linux カーネルをダウンロードし、構成してコンパイルすること
<item><!--activate the Kernel via LILO-->
LILO によって、カーネルを有効にすること
<item><!--run a patch on top of the Kernel-->
カーネルツリーの先頭でパッチを施すことができること
</itemize>

<p><!--If you do not know these things then this HOWTO will not help you much. I
will only advise you to read the Kernel-HOWTO and the TIPS-HOWTO. So this
HOWTO is not directed towards the beginner, but towards the
novice/professional. Please keep this in mind while reading this Document.-->
あなたが、これらについて知らなければこの HOWTO はあまり手助けにはならないでしょう。私ができるアドバイスは Kernel-HOWTO と TIPS-HOWTO を読むことを勧めるだけです。私の HOWTO は初心者向けではなく、初級者から専門家に向けたものです。このドキュメントを読み進むにあたってはその点に注意してください。
<p>（訳注：
<itemize>
<item>Kernel-HOWTO の邦訳は <url url="http://www.linux.or.jp/JF/JFdocs/Kernel-HOWTO.html"> から参照できます。
<item>TIPS-HOWTO の邦訳は <url url="http://www.linux.or.jp/JF/JFdocs/Tips-HOWTO.html"> から参照できます。
</itemize>
あわせてご覧ください）
<sect1><!-- How does one know that you might have a bad ram module?-->
 不良のある RAM モジュールかどうかを知る方法

<p><!--There are two main classes of appearence:-->
主に 2種類の症状があります −

<sect2><!-- Lock ups-->
 ロックアップ
<p><!--You can be very happy if you encounter such a clear situation. If your
Kernel completely locks up with an Ooops (and you did not make any ,,bad
stuff' ;-) ), you can be quite sure that there is a hardware failure
somehow. Often the problem is caused by the ram modules. Some very clear
signs are-->
このような明確な状況に出くわしたとしたら、非常に幸運です。もしカーネルが Oops によってロックアップしたら（そして何か悪いことをした覚えがないなら ;-)）、明らかにハードウエアの障害が発生しているというわけです。
しばしば、不具合は RAM モジュールに原因があります。非常に明確な以下の 症状を示します―

<itemize>
<item><!--if your kernel halts with an Ooops and an error reference to a NULL
pointer assignment-->
カーネルが Oops で停止し、NULL pointer assignment (ナルポインタ割り当て)への参照を示すエラーを表示する
<item><!--if you can start up your system but ,,randomly'' processes are dying,
or suddenly you cannot start new programs.-->
システムを起動することはできるが、プロセスが無秩序に死んでしまうか、突然新しくプログラムを起動できなくなる
</itemize>
<p>

<sect2><!-- Errors at runtime-->
 実行時にエラーが発生する
<p><!--
Surprisingly many problems which are very very hard to track down are memory
problems. This is often caused by the fact that the memory modules are good
at first, but as the time goes by, the modules get warmer and warmer. Then
suddenly a chip on the module gets too hot, and it swaps one or more bits.
If you do not have allocated this memory area, it will not hurt you at all,
but if this page (=sepcific area of memory) is used for example by the
kernel... well, I will leave off what will happen - you can guess it. So,
typical signs are-->
非常に原因を突き止めがたい、驚くほど多くの問題はメモリの問題です。当初問題のないメモリモジュールでさえ、それらが時間の経過により暖まってくると問題を発生することがあります。それらのモジュールのチップは突如過熱してしまい、あるビットの内容が壊れてしまったりします。
まだ割り当てていないメモリ領域は、それだけでは全く問題ないのですが、そのページ（=メモリ上の特定の位置のこと）がたとえばカーネルによって使われていたとしたら．．．何が起こるかは言うに及びませんね。ありがちな症状としては、次のものがあります。

<itemize>
<item><!--if suddenly your compiler stops during runtime-->
コンパイラが動作時に突然止まる
<item><!--if your programs are receiving unwanted TERM or code 15
signals and therefore exit at once-->
プログラムが予期しない TERM や 15番シグナルによって一度に終了してしまう
<item><!--if you encounter memory ,,randomization'' at any kind (for example
if you writing a program in C, compile it and you are very sure that this
variable *MUST* have that value, but it does not have it!-->
あらゆる形のメモリの「不規則な」内容変化、たとえば C 言語で書いたプログラムを動作させてみると、
入る値が完全に分かりきっている変数に予想した値が入っていない、など。
</itemize>
<p><!--Oh, just some sentences about the usage of ,,random'': I am no friend of
this word especially if we are discussing about computer science. Nothing
really happens at random and after all if you look hard enough, you will
always find some good (but mainly only bad) reasons and explainations why
something happens or not. So I please do not understand my usage of
<em>random</em>  as totally ,,random'', but as ,,appearing as if it happens
randomly''.-->
おっと、「無秩序」の使い方について説明が必要でしたね。私にとってこういう言葉はコンピュータ科学について論じている場合には親しんでいるものではありません。何かが本当にでたらめに起こる事はあり得ません。 
十分注意深く調べれば、何かが起こったり、起こらなかったりする事へのちゃんとした( 主に悪い )理由や解釈を得る事ができるものです。ですからどうか、私の<em>「無秩序」</em>という表現は「全くのでたらめ」という意味ではなく「まるででたらめに起こるように見える」、という風に理解してください。

<sect1><!-- A bit of theory-->
 理論を少しばかり

<p><!--First of all, a bit of theory. What is this all about?-->
最初に少し理論について。どのように解決しているのか？

<p><!--As all your data is normally stored in RAM first, it harms your system
if one ore more modules are broken. Imagine the situation if you have a very
sophisticated program in your memory and one or another byte just changes
without that you notice. Now the CPU runs over this data and interprates
this totally differently. What must happen: The program does not do what it
should or even crashes. -->
いったんは、全てのデータが通常どおりに RAM に格納されたとしても、一つ以上の RAM モジュールが壊れていたとしたら、システム自体に害が及びます。次のような状況を想像してください。
メモリ内には非常に優秀なプログラムが格納されていますが、あなたの気付かないうちに、メモリ上のバイトが勝手に入れ替わっていきます。
CPU はデータを読み込んでゆき、まさにその地点に来たとき、データを全く異なって解釈します。その場合、起こりうることとして、プログラムが期待した動作をしないか、もしくはクラッシュしてしまうでしょう。


<p><!--What is the solution then? Well, there are even two solutions:-->
それではどうやって解決するのか。それには二つの解決方法があります。

<itemize>
<item><!--You can use 100%-always-ok chips and memory modules-->
常に 100% 動作保証されたメモリを使う
<item><!--You can use not-so-ok chips and memory modules but you must
take care then that you do not use such areas which are problematic-->
おおむね使える（訳注：完全に問題が無いわけではない）メモリを使うが、必要に応じて問題のある部分を使わないよう注意する

</itemize>
<p><!--Normally you do the first alternative. And therefore you pay a very high
price at your local dealer. Production of those 100% chips is very expensive
as the producer have around 60% of loss during process because of having no
100%-always-ok chips. So to speak, they kick out a vast amount of bad
modules.-->
通常は、最初の方法を採ることでしょう。が、近所の取り扱い店では結構高額を支払うことになるでしょう。これらの100% 保証のメモリを確実に作る方法がなく、製造者は 60% 程度のロスを伴うために非常に高価なのです。いわば、彼らはたくさんの不良モジュールを捨てているのですから。
<p><!--The BadRAM system hooks in there. It uses the sencond alternative
already mentioned. During boot up phase of your Linux kernel, it locks
certain areas of RAM. By doing that it ensures that the kernel never will
use this area and therefore will never trap in such bad memory. During
allocation it just skips those bad areas.-->
BadRAM システムの着眼点は先に述べた2番目の解決策です。Linux カーネルのブート過程で、システムは指定された RAM 領域を使わないものとしてロックしてしまいます。
そうすることにより、カーネルはこのメモリを決して使わなくなり、この手の不良なメモリによってシステムが問題を生じないようにすることができます。メモリを割り当てる際には、この問題のある場所はただ単にとばされるだけです。

<sect1><!-- Speaking conventions-->
表記規則について

<p><!--For a better understanding I now want to introduce the following
expressions:-->
理解を助けるために、次のような表現を取りたいと思います −

<itemize>
<item><!--<em>BadRAM</em> is a memory module which has one or more bad
memory areas.-->
<em>BadRAM</em> とは一つまたはそれ以上の不良箇所をふくんだメモリのことです。
<item><!--<em>GoodRAM</em> the opposite of BadRAM, that is your ram
you normally get, if you go to your local dealer.-->
<em>GoodRAM</em> とは、普通にそこらの店で買える BadRAM の反対のものです。

</itemize>
<p><!--If you are interested in a more detailed specification of these words,
please have a look at the BadRAM-4096 specification which is downloadable from
my page (URL is above).-->
もし、これらの用語に関して興味がおありなら、BadRAM-4096 仕様書を前出の私のページからダウンロードして見てください。

<sect1><!-- File requirements-->
必要なファイル
<p><!--<em>NOTICE: BadRAM currently does only work with i386 processors!
Alphas/Macs etc. are not supported yet. If you can do testing on these
machines, please contact Rick!</em>-->
<em>注意 - BadRAMパッチは現在 i386 プロセッサでのみ動作します！ Alpha/Macs などで動くものはまだサポートされていません。もし、これらのマシン上でのテストができるなら、 Rick までご連絡ください。</em>

<p><!--Now let's start with practice!-->
さあ、やってみよう

<p><!--You need the following files from the internet:-->
次のファイルをインターネットから取ってくる必要があります。
<itemize>
<item><!--<em>The BadRAM patch</em>: You can get it from one of the
two BadRAM sites <url
url="http://webrum.uni-mannheim.de/math/schmoigl/linux"
name="http://webrum.uni-mannheim.de/math/schmoigl/linux"> or <url
url="http://home.zonnet.nl/vanrein/badram"
name="http://home.zonnet.nl/vanrein/badram">.
Please note that you must use the right version for your kernel!
-->
<em>BadRAM パッチ</em> - 以下の二つの BadRAM パッチのサイトから取ってくることができます。
<p><url
url="http://webrum.uni-mannheim.de/math/schmoigl/linux"
name="http://webrum.uni-mannheim.de/math/schmoigl/linux"> または<url
url="http://home.zonnet.nl/vanrein/badram"
name="http://home.zonnet.nl/vanrein/badram">
<p>あなたが使っているカーネルに正しく合ったものを使うようにしてください。

<item><!--<em>The Linux Kernel</em>: You can get it from
<url name="www.kernel.org" url="http://www.kernel.org"> or any mirror of that. Please note that the kernel must fit
to the patch!!-->
<em>Linux カーネル</em> − これは<url name="www.kernel.org" url="http://www.kernel.org">またはミラーサイトから手に入れる事ができます。パッチにあったカーネルを入手するようにしてください。
<item><!--<em>memtest86</em>: This is the memory testing program. You
can download it from <url
url="http://reality.sgi.com/cbrady_denver/memtest86"
name="http://reality.sgi.com/cbrady_denver/memtest86">
-->
<em>memtest86</em> − これはメモリテストのためのプログラムです。このプログラムは<url
url="http://reality.sgi.com/cbrady_denver/memtest86"
name="http://reality.sgi.com/cbrady_denver/memtest86">
から入手することができます。
</itemize>
<p><!--If you expect many errors, it is very boring to see ticker up the error
numbers in memtest. Therefore I wrote a small patch which speeds up this
task very much! Please go to <url
url="http://webrum.uni-mannheim.de/math/schmoigl/linux"
name="http://webrum.uni-mannheim.de/math/schmoigl/linux"> and get the
memtest86-patch from there.
-->
たくさんエラーがでそうだと思われているときは、memtest で表示される膨大なエラーにうんざりすることでしょう。そういうときのために、私はこの作業を大幅にスピードアップするパッチを作成しました。<url
url="http://webrum.uni-mannheim.de/math/schmoigl/linux"
name="http://webrum.uni-mannheim.de/math/schmoigl/linux"> から、memtest86-patch を入手してみてください。

<sect><!-- Getting it work-->
 動くようにする

<p><!--There is a way of enabling BadRAM correctly without the need and use
of a screw driver, but I do not recommend this way because it is likely that
you will make this or that mistake which could leave your system in a
unstable condition. As I expect you not to be very familiar with BadRAM, I
will now describe a more secure way:-->
ねじ回しを使わずに（訳注：つまりコンピュータのケースのふたをはずして中をいじることをせずに、という意味）、BadRAMを正しく動作させる方法があるにはありますが、あなたのシステムを不安定な状態のままにしてしまうことになりかねないため、私からはお勧めできません。
私はみなさんに対して、不良メモリと慣れ親しんでいただくことを望んでいるわけではないので、ここではもっと安全な方法をお教えしておきます −

<sect1><!-- The most important thing: Proof!-->
もっとも大切なことは「確認」すること！
<p>
<!--There are two principles which you must always have in mind while doing
anything at all with BadRAM:-->
不良な RAM を扱う上において、常に気にとめておくべき２つの基本事項があります − 
<itemize>
<item><!--Proof everthing-->
全てを確認し
<item><!--Work thoroughly-->
手を抜かないこと
</itemize>
<p><!--From now on, I expect that you have at least two memory modules: one
which is ok (called the good module) and a supicious module. If you just
have one module, please read the "Only one module" section below later on.
Anyway, you should this section, too, because you will learn how to check
your RAM modules.-->
さて、ここからはあなたが２つのメモリを持っていることを期待して書き進みます − 
一つは問題のない(良い RAM モジュール、と呼びます）もの、もう一つは疑わしいものです。
もし、あなたが一つしかモジュールを持っていないなら、後に述べる「一つしかモジュールがない場合」を参照してください。いずれにせよどうやってメモリをチェックするかを学ぶためにはこの章も読んでおかなければならないでしょう。

<p><!--The first thing you should do, is to remove the memory module you
expect to be faulty. Then start your system normally. Do some work (approx.
10 minutes) and see if you encounter any traps, errors or bugs which could
be related to bad ram modules. If this happens, it is likely that you have
either-->
最初にすべきことは、怪しいと思われるモジュールを取り外すことです。それから、通常通りシステムを起動します。
ちょっとした作業をし（約10分ほどの作業です）、不良メモリに関係したトラップやエラーやバグが無いかを調べます。もし何かが起こるとしたら、次のようなことでしょう。
<itemize>
<item><!--taken the wrong module out of your PC (most
likely) - alignment of the memory modules vary heavy from board to board - or
-->
間違ったモジュールを PC から取り外してしまった（ありがちですね）。ボードごとにメモリの配置順番は結構違うので。
あるいは、
<item><!--you have two BadRAM modules (not very likely) or-->
２枚とも不良メモリだった（あまりありえないとは思いますが）。あるいは、

<item><!--you have a different problem as BadRAM! Possibly this could
be related to a bad driver, misconfiguration or whatever.-->
不良メモリとは違う原因の障害が発生しています！ドライバの不良やら、設定の間違いなどがあり得ます。
</itemize>
<p><!--If you do not encounter any problems, you can ''mark'' the memory module in
the PC as good for a while.-->
もし、何の問題もなかったならば、あなたは PC に入っているそのメモリを「とりあえず良いモジュール」としてしばらくマークしておきます。
<P>
（訳注：
複数のメモリモジュールを増設単位とするマザーボードもあります。たとえば古い（初期の）EDO-RAM を使うPentium 対応チップセットの中には、2枚単位でのモジュール装着を必要とするものもあります。
また、信頼性を要求するような用途に用いられるマザーボードにもそういうものがあります。そういう場合2枚以上のモジュールについて同時に作業しないといけません。詳しくはお手持ちの PC のマザーボードの説明書などをご覧ください）

<p><!--Now, download memtest86 (if you have not done this yet), unpack it
and compile it. Have a least a short look into documentation. Although often
stated contrarily, I recommend to install memtest86 to disk. Advantages and
disadvantages will be discussed later in the ''Further hints'' section.-->
さて、まだダウンロードしていないならここで memtest86 をダウンロードして、圧縮を解いてコンパイルしましょう。それから添付文書にちょっと目を通します。
私自身時々守らないこともあるのですが、 memtest86 はディスク（訳注：フロッピーディスクです）にインストールすることをお勧めします。こうすることの利点と欠点については後に「さらなるヒント」の章で説明します。

<p><!--Now start your PC with memtest86 and let it run at least through the
first three tests on your good RAM (from now on I will call this a ''quick
memtest'' as time consumption is relative low). If it finds some bad areas there (the
error number to the right top increases), you have a problem. Then you
*must* regard this module as bad! Try to use the memory module you took off
you PC shortly and redo the memtest on this module. If both modules are bad,
put aside one of the modules and go on with only only one module. Be sure
to have read the ''Only one module'' section, then!-->
それでは、memtest86 でPCを起動させ、少なくともその最初の3つのテストについては「とりあえず良いモジュール」について実施してください（これはあまり時間の掛からないやりかたですので「手早いメモリテスト」と呼ぶことにします）。
もし不良の領域が見つかったなら（右上の方に表示されるエラーの数が増えて行くことでわかります）、あなたのメモリには問題があります。その場合は、このモジュールを「悪いモジュール」として扱わなければなりません！
つづいて、先ほど一時的に取り外したメモリモジュールをPC に戻して、memtest を再度実行します。もしどちらのモジュールも不良だった場合、どちらかを脇に置いておいて、一つのモジュールだけを使って「一つしかモジュールがない場合」へ読み進んでください！

<p><!--As soon as one module has passed the quick memtest successfully, you
can call it GoodRAM. For everything we will do now, this module will remain
in the first bank of you motherboard (see your vendor's manual to see which
is it - mostly the first bank is called ,,Bank 0''). Do not remove it for
any test as you normally need at least some good area of RAM for loading the
Linux Kernel and memtest! -->
「手早いメモリテスト」を問題なくパスしたら、これを「良いメモリ」と呼んでいいでしょう。今すべきことは、このモジュールをマザーボードの最初の RAM バンクに残しておくことです（お手持ちのマザーボードの説明書をごらんになり、どれがそれかを確認してください。だいたい、最初のバンクは "Bank 0"と呼ばれているはずです）。
Linux カーネルやmemtestは通常の動作のために、これら良い領域を必要とするので、以降取り外したりしないでください！
<P>
（訳注：先に述べた、複数単位で装着しなければならないようなボードでは "Bank 0" と "Bank 1" ....と残します）

<p><!--Now add the bad module to your PC putting in a higher bank. Naturally
your total RAM size will increase - but note that the (maybe) faulty RAM is
now located above (!!) the good RAM. If you now start memtest, you can just
run the tests on the module you expect to be faulty. Configuration is done
by pressing the 'c' key. The configuration window there will help you.-->
つづいて、不良なモジュールを PC の高位バンク(訳注：先ほどの良いメモリを"Bank 0"に入れたなら、"Bank 1" に。一部のマザーボードなら "Bank 2" 以上からになるでしょう)に追加します。
当たり前の事ながら、RAM のサイズは増加するでしょうが、しかし、おそらく問題のある RAM が 良い RAM の高位に位置している事に注意してください。
memtest をそのまま実行しても、BadRAM パッチのために使う出力を得ることはできません。
memtest の画面で"C"キーを押すことで、設定を変更することができます。この設定画面はあなたを手助けしてくれるでしょう。

<!--Please note to switch to the BADRAM command line output by selecting (6) (2)
from the configuration menu. Now, take another cup of coffee or go sleeping.
I recommend to pass at least the first six tests to be sure what is up with
that memory module. While scanning the memory module memtest collects
information what is wrong. The badram line which is prompted to your screen
lists a combination what has to be locked by BadRAM if you want use this
module. Short tip: The more zeros are in every second hexadecimal number, the
worse is your memory module. Note that you might be interested in stopping
this test and patch memtest with my
make-it-quicker-on-a-huge-number-of-errors patch to increase the speed
dramatically (only works if you have more than 1024 errors!). Remember to
recompile memtest and copy it to your disk.  -->

BADRAMコマンドラインの出力の切り替えは (6) (2) を設定メニューから選ぶことで可能です
(訳注：memtest86-2.5beta では"C"を押した後"5" "2"とします)。
さて、ここでコーヒーをもう一杯入れてくるか、一眠りしましょう。
これらのメモリで何が起こっているのかを正確に知るには少なくとも最初の6つのテストを実行することをお勧めします。メモリモジュールを調べている間、memtest は何が問題なのかに関する情報を収集しています。
画面に表示される不良メモリに関する部分では、このモジュールを使おうとした場合に何が問題となるかを示す一連の表示が現れます。
ちょっとしたアドバイス − 16進数の二桁目に現れる"0"が多ければ多いほど、あなたのメモリには問題が多いことがわかります。
ここでテストを一旦中断して、私の作った「たくさんのエラーがでた場合にそれを早く済ませられる」パッチをあてて、劇的に作業を早く片づけることができます（1024個以上のエラーがでる場合しか、このパッチは動きませんが！）。memtest を再度コンパイルしてインストールすることをお忘れなく。

<p><!--As soon as the tests are through, copy the last badram command line
somewhere to a sheet of paper. We will need the parameters later for locking
the bad memory areas. If you do not have at least one line, all your RAM is
ok. You have then no need to install the BadRAM. The problems you might have
encountered before are most likely to be not memory related. Although you
could rerun the long test on the first memory module, you thought was ok.
Perhaps you can find a bad bit there...-->

テストが完了したら、最後の不正メモリに関するコマンド行をメモに書き写すかして控えておきましょう。不良領域のロックのために、あとでこのパラメータが必要になります。
もし一行も結果が得られなかった場合、全ての RAM には問題がありません。BadRAM パッチを組み込む必要はありません。以前に遭遇した問題は、おそらくメモリに関係したものではなく原因は別にあるということです。
しかし、最初に試して問題ないと思われたメモリについて長いメモリテストを実行することもいいかもしれません。そこであなたは改めて不良ビットを見つけるかもしれません。

<sect1><!-- Make BadRAM run-->
 BadRAM パッチを動かす

<p><!--First, take the bad module off the PC - BadRAM is not enabled yet and
therefore data will be written on bad areas. This would crash your system or
whatever. At least, it would be quite problematic compiling the kernel - and
this is the next aim.-->
最初に、不良なメモリモジュールを PC からはずします。BadRAM パッチはまだ有効になっていないので、データは問題のある領域にも書かれてしまいます。このままだと、あなたのシステムはクラッシュするかなにか障害を発生するでしょう。少なくとも、次の作業項目であるカーネルのコンパイルに関しては非常に問題があります。

<p><!--Download (if you have not done this), unpack, configure your kernel as
you are used to do it. Then apply the BadRAM patch on top of this kernel-->
まだ手に入れていないなら、ここで目的のカーネルをダウンロードして圧縮を解き、構成します。続いて、BadRAM パッチをカーネルツリーの先頭で適用します（訳注：具体的には /usr/src で。パッチのおかれている場所に応じて以下のコマンドライン列は書き換えが必要です）。

<verb>
patch -p0 < patch-name.diff
</verb>

<!--Have a look on the kernel configuration again. Note, that there are several
new options in the Gerneral Setup area controlling the BadRAM
options. I recommend the following configuration for BadRAM:-->
カーネルの構成をここで再度行います。BadRAMを制御するための新しいオプションが General Setup にいくつか追加されていることに注意してください。下記のような設定を推奨します。

<verb>
 [*] Work around bad spots in RAM (BadRAM-patch)
 [ ]   Enable BadRAM debug messages during kernel boot
 [*]   /proc fs support
 [*]   Extended Module support.
</verb>
<P>
（訳注：カーネルのバージョンや BadRAM パッチのバージョンによって、上記は多少異なります）

<p><!--The most important option is the last one - you must check it to remain
synchronous to this HOWTO!-->
最後のオプション最もが大切です。この HOWTO に従うなら、ここはチェックしておく必要があります！

<p><!--The next to do is to supply BadRAM with the layout of you memory
modules. This is done with the help of the configuration file
<em>/etc/badram.conf</em>. There you need the data you just got to know by
the tests of memtest. The configuration language is documented in
linux/Documentation/badram_conf.txt. From now on I call the first memory
module which is good, the module with name "good" and the bad one with the
name "bad". I recommend to use the same name in /etc/badram.conf. -->
次にするべき事は、BadRAM パッチにメモリモジュールの配置を与えてを有効にすることです。
これは設定ファイル <em>/etc/badram.conf</em> を使うことで行います。memtest によるテストで得られた結果がここで必要です。構成のための文法に関しては /usr/src/linux/Documentation/badram_conf.txt に記述があります。
最初のメモリモジュールを "good" 、問題のあるモジュールを "bad" と呼ぶことにします。この呼び方は /etc/badram.conf での記述と一致させておくと良いでしょう。

<p><!--As soon as you wrote your BadRAM configuration file, you can compile
the kernel as normal. Install it as you like it. Please append the following
command line to the kernel by adding it to the append line of LILO:-->
BadRAM の設定ファイルを書き込んだのち、あなたはカーネルをいつも通りコンパイルしてください。インストールもお好きな方法で結構です。次のコマンドラインを LILO の設定ファイルに追加して、コマンドに与えます −
<verb>
 badram=good,bad
</verb>
<!--This tells the driver to first lock the "good" module (well - it simply does
not have anything to lock) and then take the "bad" module. Do not forget to
run lilo!-->

このコマンドラインは、まず最初に "good" と名付けた方のモジュールの不良箇所をロックし (まあ、全くロックする箇所はありませんが ) 次に "bad" と名付けた方のモジュールの不良箇所をロックします。lilo コマンドを実行することを忘れずに！

<p><!--Reboot the system and put your broken RAM module into your PC. Boot
the new badram kernel and see rushing by the boot messages. Login as usual.
If you have selected /proc fs support above, you can have a look into the
file <em>/proc/badram</em>. It lists you all pages (area of 4096 bytes of
RAM) which are disable by BadRAM.-->
システムを再起動し、壊れた RAM モジュールを PC に入れます。新しい 不良メモリをサポートしたカーネルを起動して、画面に表示されるメッセージを見た後、普通にログインしましょう。
先に /proc fs support を有効にしていたなら、 <em>/proc/badram</em> ファイルを見ることができます。そこで、BadRAMによって無効にされた全てのページ（ページとは4096バイトの RAM 領域です）がリストされています。
<P>
（訳注：有効にするなら、再起動ではなくまずシャットダウンしてから、不良とおぼしき RAMモジュールを追加することになります。再起動して、新しいカーネルが問題なく動作することを確認し、その後シャットダウンしてメモリを入れ、起動。というのが正しいです）

<p><!--As long as you do not change anything on your memory configuration,
you can now run your system as normal. All wrong areas are marked as bad and
will not be used by neither the kernel nor any application. The system can be
used at full load.-->
メモリ構成を変更しない限り、普通通りにシステムを稼働させることができます。全ての不良な領域は不正としてマークされ、カーネルからもどのようなアプリケーションからも使われることはありません。
システムはこの状態で最大負荷にて稼働することができます。

<sect><!-- Only one module - - what is different? -->
モジュールが一つしかない場合 − 何が違うか？

<p><!--Well, you might encounter severe problems. If there are bad areas in
the low regions of your module, it is sure that Linux will have severe
problems booting up. Even memtest might have problems although it only uses
around 26k of RAM for itself. On rare situations it is even possible that your BIOS does
not work properly. But the biggest problem is, that you must use a bad
memory module in Bank 0.-->

深刻な問題に出くわしてしまいましたね。モジュールの低位部分に不良領域が合った場合、 Linux は起動時に深刻な問題を起こすことでしょう。memtest 自身も 26KB だけとはいえ、メモリを使いますので問題を生じることでしょう。
まれなケースとして、 BIOS すらまともに動作しないかもしれません。最も深刻な問題は、そういうメモリを Bank 0 として使わねばならないといことです。
<P>
（訳注：BIOS 自身を RAM に 複製して動作させているような場合は露見するでしょう。BIOS が格納されている ROM は読み出しは低速ですので、より高速な RAM に一旦複製して動作させるよう設定することができるのです。
しかし、これは古い時代のことです。最近は PC 自体の起動時以外は、 BIOS のコードを利用することはないので、この設定はデフォルトでは無効になっていると思われますし、おそらく意識して使うことはまずないでしょう）

<p><!--This causes that the kernel might be loaded into a bad area page. It
is not possible to lock a memory page which is already in use - and if the
kernel is there, it is not even in use, it is unreallocable because it is
blocked and reserved by the kernel. The kernel is the only piece of work
which must have linear and therefore error-free memory.-->
カーネルはこの問題のあるページに読み込まれてしまうことでしょう。すでに使われているメモリをロックすることは不可能なので、カーネルがすでに存在しているならば、たとえ現在使われていなくてもカーネルがそこを予約しているならば再配置することはできないのです。カーネルは唯一連続したエラーのないメモリを必要とする存在です。

<p><!--The only advice I can give to you, is to check whether you have a bad area in
that low region or not. If that happens, you will know it very soon. And if
you boot up with the BadRAM driver, the Kernels stops with an error message telling you that
you wanted to lock a kernel page, you know where the problem is.-->
唯一アドバイスできることは、不良領域がメモリの低位部分にあるかどうかを調べる事だけです。もしこういう現象（訳注：致命的なカーネルの障害）がすぐ起こったなら、即座にそのことがわかるでしょう。
そして、もしBadRAM ドライバを組み込んでいるなら、カーネルはページをロックしようとしたことを知らせるメッセージを表示して停止しますので、どこに問題があるかを知ることができるでしょう。

<p><!--In any case: I everybody advice to have at least one GoodRAM module in
Bank 0. This module need not be huge, but the Kernel should fit in there at
least. So 4-8MB should be the minimum.-->

 どのような場合でも、少なくとも問題のない GoodRAM を最初のバンクに使うことをお勧めします。このモジュールは大きなサイズである必要はありませんが、カーネルが入るだけの容量であればいいのです。4MB から 8MB 程度が最小でしょう。

<sect> <!--Further hints-->
さらなるヒント

<p><!--This section is a sort extract of my knowledge I learnt during the
programming of BadRAM. If you have different or new experience which should
be stated here, please email <url url="mailto:nico@writemail.com" name="me">.-->
この章は BadRAM のプログラミングの間に得た知識からの抜粋になります。もしここに書き記すべき新しい情報などがありましたら、<url url="mailto:nico@writemail.com" name="私">あてにメールください。

<sect1><!-- Troubleshooting - - if you have more than one module-->
問題解決 − ２つ以上のメモリがある場合

<p><!--During a test, I had two bad modules and two good ones. I installed them
randomly into the banks (my motherboard can take up to four SDRAM-DIMMs) and
ran Memtest over them. Then I reinstalled them in another combination and
Memtest then found totally different areas of bad RAM - not just the badram
command line was naturally different, but locking was different, too. Pages
which were bad, had been suddenly good and vice versa - not just by mistake
but by usage. I put it to some
different timing modes which the memory chip on my motherboard used during
tests, although I disabled all my automatic routines in my BIOS. -->
テストの間、2つの不良メモリと2つの良いメモリを使ったことがあります。これらを無作為にメモリバンクに取り付けて（私のマザーボードは4つまでの SDRAM-DIMM を取り付けることができました）、memtest を動かしました。
それから、メモリを別な組み合わせで再度取り付けたところ memtest は全く異なる不良領域を RAM に見つけてしまったのです。badram コマンドラインは当然ちがうのですが、ロックされるべき領域自体が違っていました。不正として扱われたページから突然問題なくなったり、あるいはその逆もありました。
これは私がなにか取り付けで間違いをしたからではなく、使い方の問題だったのです。私はBIOS の自動構成機能を禁止していたにも関わらず、違ったメモリのタイミングモードでテストをしていたのです。

<p><!--So, be careful with changing memory modules in the banks. And if you
do, only trust those reports you get in this combination!-->
こんなこともありますので、メモリモジュールを取り付けるバンクを変えるときには気をつけましょう。
もし変える場合は、この組み合わせは自分が確証をもてるものだけにしておきましょう（訳注：どこに何をさしたか、モジュールに印を付けるとか、メモを取るなどして、ということでしょう）。
<p><!--This is still an unsolved issue. Sadly, my memory knowledge is not big
enough to go into that area of memory usage.-->
これはまだ未解決な事項です。悲しいことに、メモリモジュールが実際にどう使われているかに関する知識はまだ十分ではありません。

<sect1><!-- BadRAM modules might change by the time-->
 毎回様子の異なる不良メモリ

<p><!--I have a very strange module here: It is a 64MB SDRAM-DIMM RAM,
PC-100, 8ns. This is not very strange by itself, but when I got it from my local dealer,
it had around 25 percent of bad pages. I ran memtest over it several times
(different tests) and suddenly all the bad pages disappeared! Until today, it
runs without any badram parameter - even if I disable BadRAM completely, it
works. And Wind*ws can use it without any crash! This is very amazing - I
cannot guess what is going on.-->
私は非常に不思議なメモリを一つ持っています。それは 64MB の SDRAM-DIMM RAM で、PC-100 規格でアクセスタイムは 8ns です。
それだけでは何の不思議もないのですが、これを近所の販売店から買ったときにはおよそ 25% もの不良ページがありました。memtest を実行して、何回か異なるテストを実行すると、突然全ての不良ページが無くなってしまったではありませんか！
今日まで不良であることをしめすパラメータはありませんし、BadRAM ドライバを無効にしても問題なく動いているのです。それから、Wind*ws ではクラッシュすることなく使えています。これは非常に奇妙なことですが、どうしてなのか未だにわかりません。


<sect1><!-- Advantages and disadvantages on installing Memtest86 on disk
or hard disk-->
<!-- タイトルと内容が合っていない、内容はFDに入れた場合のメリットとデメリットだからそれになおした -->
Memtest86 をフロッピーディスクに組み込む場合の利点と欠点

<p><!--The main advantages of installing Memtest86 to a disk are-->
Memtest86 をフロッピーディスクに組み込んだ場合の主な利点は次の通り。
<itemize>
<item><!--You can carry it to any place you like and run it on any PC
you desire-->
どこへでも持ち運んで好きな PC で実行することができる
<item><!--The binary files do not eat up much; so copying times are
quite low-->
バイナリファイルは小さいので、コピーするのに要する時間も少ない
<item><!--If you do not like the program (which I want to doubt), you can
really "trash" it ;-))-->
もしこのプログラムが気に召さない（まぁ、そんなことはないと思いますが）なら、本当に捨てても大丈夫です ;-)
</itemize>
<p><!--The main disadvantages are:-->
主な欠点は次の通り。
<itemize>
<item><!--If not formatted correctly, a disk can loose data-->
きちんと初期化していなければ、このディスクのデータは消える。
<item><!--You might dislike the usage of diskettes-->
たぶん、ディスケットの取り扱いはあんまり好きじゃないでしょ。
</itemize>

<sect><!-- The future-->
 今後

<p><!--The future is not yet clear to Rick and me. Support and response to
this new idea is quite low. But our next aims are:-->
今後についてはまだ Rick にとっても、私にとっても明らかにはなっていないし、サポートするかどうかの責任についても低いのですが、私たちの目標は次の通りです − 

<itemize>
<item><!--Find bugs, if possible-->
もしあるなら、バグを見つける
<item><!--Seek integration into the standard kernel code
serie-->
標準的なカーネルコード系列への統合

<item><!--Find testing support and more BadRAM modules to enhance our
working conditions and surrounding -->
より多数の不良メモリを手に入れ、テストしてくれる人たちを確保して私たちの作業環境を改善する
<item><!--Add other features like-->
以下のような機能を取り入れる
 <itemize>
 <item><!--small locking page sized with the new stubs code in the
Kernel-->
カーネルの新しいスタブコードを使い、ロックするページを小さくする
 <item><!--better configuration ways-->
構成方法の改良
 <item><!--global locking definitions in the configuration file-->
構成ファイルに全般的ロック定義を取り入れる
 <item><!--enhancing this (and other) documents to help you getting along
with BadRAM-->
このドキュメントおよび関連ドキュメントを役立つように改良していく
 </itemize>
<item><!--Make everything more handy for a usage by end-users and
distributions in the future-->
その他、配布および利用者に対する利便を図る事項全て
</itemize>
 
<sect>日本語訳について
<P>
日本語訳 初版：　2000年 12月 12日
JF Project
<P>
翻訳者　後藤雅晴 &lt;magotou@fubyshare.gr.jp&gt;
<P>
校閲者のみなさん（敬称略、姓にて50音順）
<itemize>
<item>Tsutomu Kawashima さん &lt;kawawa@mail.interq.or.jp&gt;
<item>Yuji Senda さん &lt;ysenda@pop01.odn.ne.jp&gt;
<item>Setoguchi Takashi さん &lt;setzer@mx3.tiki.ne.jp&gt;
<item>Hirokazu Nomoto さん &lt;hng@ps.ksky.ne.jp&gt;
</itemize>
訳注の追加については、原著者の Nico Schmoigl さんからもアドバイスをいただきました。
これらは新しいバージョンの BadRAM-HOWTO への盛り込みが検討されています。

</article>

