Nov 15, 2002

        onlsbc1: コンパクトフラッシュ上のLinuxシステムの読み出し専用化
     			---  システムインストール(その2) #3
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
               (http://www-online.kek.jp/~inoue/para-CAMAC/
                                   Work/SBC-RAM3.html)



                        高エネルギー加速器研究機構
                            素粒子原子核研究所
                         物理、オンライングループ
                                井上 栄二

	目的

	    コンパクトフラッシュ上のシステムの読み出し専用化の作業中に、256MBの
	  コンパフラッシュ上に構築してあるLinuxシステムを壊してしまった。 
	    ここでは、Linuxシステムを再度インストールし直す。


	(1). ハードウェア構成
	(2). RedHat Linux 7.3 のインストール

  --------------------------------------------------------------------


 (1). ハードウェア構成

        SBCには256MBのコンパクトフラッシュを接続した。 IDEハードディスクは
        はずした。 ディスプレーには、EIZOの FlexScan L465を使用。 キーボードは
        DELLのPS/2日本語キーボードを使用。 マウスはLogitec のUSBマウスを使用。
        ディスプレー、キーボード、マウスはCPU切り替え器を通してSBCに接続した。
        CPU切り替え器は、SANWA SUPPLY のSW-CPU2UO を使用。


   (1-1).  Linuxインストールのための準備

	Linuxシステムのインストールは、FDDを使ってNFSインストールで行うことに
	する。 FDDは onlpc03に内蔵しているものを使用。

	NFSファイルサーバには onlsun4 を使用。 RedHat Linux 7.3のパッケージは
	onlsun4:/space2/RedHat7.3/disk1 に展開しておいた。 CD-ROMインストール
	と違って、NFSインストールでは途中でディスク交換の指示メッセージは表示
	されない。 したがって、disk2中の必要なファイルは前もって適切なディレ
	クトリーに配置しておく必要がある。 今回のインストールでは、
	/space2/RedHat7.3/disk2/RedHat/RPMS下のファイルは全て事前に
	/space2/RedHat7.3/disk1/RedHat/RPMSディレクトリーにコピーしておいた。
	さらに、このディレクトリが、onlsbc1 から見れるように share しておいた。

	FDブートNFSインストールをやるので、フロッピー・ディスクにブート用の
	イメージファイル RedHat7.3/disk1/images/bootnet.imgをコピーしておく。


 (2).   RedHat Linux 7.3 のインストール

   (2-1).  BIOS の設定

	LinuxシステムをインストールするにあたってBIOSの設定を変更確認しておく。

		Drive A			1.44M, 3.5in	<--- これを設定
		First Boot Device	Floppy                      <--- これを設定
		Second Boot Device	HDD-0
		

   (2-2).  Linuxインストール

	FDをセットして電源を入れる。

		boot: <--- ここで Enterキーを押す

	インストーラは /dev/hdc1 のコンパクトフラッシュを認識できた。
	言語は Japanese を指定。 キーボードは jp106 を指定。 NFSインストール
	を選択。 

	onlsbc1の IPアドレス、ネットマスク、ゲートウェイ、ネームサーバを設定。

	NFSサーバは onlsun4.kek.jp、RedHatディレクトリーは 
	/space2/RedHat7.3/disk1。

	マウスは Logitec の MouseMan Wheel (USB)、3ボタンマウスのエミュレート
	を指定。 

	インストールの種類はサーバ。 

	ディスクパーティションの種類は、インストーラが自動的にパーティションの
	設定を行うを選択。

	自動パーティションの設定では、
	    自動パーティションを設定するドライブの:
		システムの全てのパーティションを削除
		レビューにチェックを付ける。
	  このインストール方法をどのドライブに使用しますか?
		hdc: Sandisk SDCFB-256 - 245MB
	この設定で実行したら、
	  要求されたパーティションを設定できませんでした:
	  Partitioning failed: パーティションを確保できませんでした。
	と、エラーになってしまった。 その後、ディスク設定画面になった。

	   /dev/hdc1  1  976	244	ext3
	   を削除。 削除できた。

	新規にファイルシステムを作る。
	   マウントポイント: /
	   ファイルシステムタイプ: ext3
	  選択可能なドライブ: hdc: SanDisk SDCFB-256-245MB
	   容量(MB): 245
	   追加容量オプション
	     固定容量

	   注. 245MBを確保しようとしたらエラーになった。 244MB は ok。
	
	   /dev/hdc1   1  976	244	ext3
	       ok.  確保できた。

	ディスクパーティションの設定の後、以下のような警告のメッセージが表示
	された。

	    要求されたパーティション設定について次のような警告があります。

	    ルートパーティションが 250MB以下であり、通常の Red Hat Linuxインス
	    トールでは小さすぎる容量となっています。

	  スワップパーティションが未指定です。 これは常に必ず必要というわけ
	    ではありませんが大抵のインストールにおいて明らかに性能を向上させ
	  ます。

	    このパーティション設定のままでアップグレードを続行しますか?

	このままインストールを続行する。

	ブートローダの設定。 
	  GRUB をブートローダとして使用。
	  ブートローダをインストールする場所:
		/dev/hdc マスターブートレコード (MBR)
	    パーティション: /dev/hdc1		タイプ: ext3
	        標準のブートイメージ
		ブートラベル: Red Hat Linux

	ブートローダパスワードの設定。
	  設定しない。

	ネットワークの設定。
	  eth0 |
	    起動時にアクティブにする。
	  IPアドレス		130.87.-----
	    ネットマスク            255.255.----
	    ネットワーク            130.87.-----
	    ブロードキャスト	130.87.-----
	    ホスト名		onlsbc1.kek.jp
	    ゲートウェイ            130.87.-----
	    1番目のDNS		130.87.-----
	    2番目のDNS         	130.87.-----
	    3番目のDNS          

	ファイアウォールの設定。
	  セキュリティレベル:	中
	    カスタマイズ
		信頼するデバイス:	eth0
		侵入を許可する:	SSH
                                     WWW (http)
                                     FTP
	追加言語サポート。
	  システム標準の言語: Japanese

	タイムゾーンの選択。
	  アジア/東京

	アカウントの設定。
	  システムのルートのパスワード: ****
	  ユーザアカウント:             -------

	パッケージグループの選択
	    何も指定しない標準の状態で 945MBと表示されている。

	パッケージのインストール
	個々のパッケージの選択
	  アプリケーション
		CPAN
		    perl-DataManip                  1MB
		アーカイブ
		  何も選択しなかった。
		インターネット
		    openssh			1MB
		    openssh-clients		1MB
		エディタ
		  何も選択しなかった。
		エミュレータ
		  何も選択しなかった。
		エンジニアリング
		  何も選択しなかった。
		システム	
		  bind-utils			1MB
		    procifo			1MB
		テキスト
		    何も選択しなかった。
                データベース
                    何も選択しなかった。
                パブリッシング
                    何も選択しなかった。
                ファイル
                    何も選択しなかった。
                マルチメディア
                    何も選択しなかった。
                ユーティリティ
                    何も選択しなかった。
                生産性
                    何も選択しなかった。
                通信
                    何も選択しなかった。

	    アミューズメント
		グラフィック
		  何も選択しなかった。
                ゲーム
                  何も選択しなかった。

	    システム環境
		カーネル
		  何も選択しなかった。
		シェル
		  何も選択しなかった。
		デーモン
		  apache			2MB
		    openssh-server                   1MB
		    portmap			1MB
		ベース
		  何も選択しなかった。
		ライブラリ
		  expat                            1MB	<---  これを入れないと
                                                                      apacheの依存関係
                                                                      が保てない。
		    libusb			1MB
		    mm				1MB     <---  これを入れないと
                                                                  apacheの依存関係
                                                                  が保てない。

	    ドキュメント
		何も選択しなかった。

	    ユーザインターフェース
		X
		    何も選択しなかった。
                Xのハードウェアサポート
                    何も選択しなかった。
                デスクトップ
                    何も選択しなかった。

	    開発
		システム
		  glibc-kernheaders		4MB     <---  これを入れないと
                                                                   glibc-develの依存
							      関係が保てない。
		ツール
		  automake15			1MB <---256MBのCFではこれは削除
		    binutils			3MB
		    make                             1MB
		    njamd                            1MB <---256MBのCFではこれは削除
		    patch                            1MB <---256MBのCFではこれは削除
		    pkgconfig			1MB <---256MBのCFではこれは削除
		デバッガ
		    gdb				2MB <---256MBのCFではこれは削除
		    ltrace			1MB <---256MBのCFではこれは削除
		ライブラリ
		    glibc-devel			7MB
		    gpm-devel			1MB
		    hesiod-devel                     1MB
		    krb5-devel			2MB <---256MBのCFではこれは削除
		    kudzu-devel			1MB
		    libstdc++-devel		2MB
		    libusb-devel                     1MB
		    libuser-devel                    1MB
		    pciutils-devel                   1MB
		    readline-devel                   1MB
		言語
		    cpp				1MB
		    gcc				8MB
		    gcc-c++			5MB <---256MBのCFではこれは削除




		参考.
		    perl-DataManip
			perl用のライブラリのモジュール

		  openssh
			OpenSSHはSSH(Secure SHell)プロトコルのOpenBSDによる実装
			です。 SSHはloginやrshの代わりに使用するプログラムで
			信頼性の低い2台のホスト間で安全でないネットワークを経由
			して、暗号化された安全な通信を実行できます。 X11接続
			および任意のTCP/IPポートも安全なチャネル経由で転送できま			す。 共有鍵認証でサーバにパスワードなしでアクセスする
			こともできます。 このパッケージには、OpenSSHのクライ
			アントとサーバの両方に必要なコアファイルが含まれていま
			す。 このパッケージを利用するには、openssh-clients、
			または、openssh-server、あるいはその両方をインストール
			する必要があります。

		  openssh-clients
			OpenSSHはSSH(Secure SHell)プロトコルのOpenBSDによる実装
			です。 このパッケージには、SSHサーバに暗号化された接続
			を行うために必要なクライアントが含まれています。 
			OpenSSHクライアントにopensshパッケージもインストールする
			必要があります。

		  bind-utils
			bind-utilsにはDNS(Domain Name Service)ネームサーバに
			問い合わせを行い、インターネット上のホストに関する情報
			を得るためのユーティリティ群が含まれています。 これら
			のユーティリティを使うと、特定のホストに対応するIPアドレ
			スのほか、登録されたドメインやネットワークアドレスに関す
			る情報を得ることができます。 DNSネームサーバから情報を
			得る必要がある場合は、bind-utilsをインストールしてくだ
			さい。

		    procinfo
			procinfoコマンドは /procディレクトリ(カーネルファイル
			システム)からシステムデータを取得し、書式設定を行って
			から標準出力上に表示します。 procinfoを使用すれば、動作
			中のカーネルからシステムに関する情報を入手することができ
			ます。

                    apache
                        Apacheは強力で充実した機能を持つ無償の Webサーバです。
                        また、apacheはインターネット上で最も一般的に使用されて
                        いる Webサーバです。


		    openssh-server
			OpenSSH(Secure SHell)プロトコルのOpenBSDによる実装です。			このパッケージには、sshd(secure shell daemon)が含まれて
			います。 sshdデーモンを使うとSSHクライアントでSSHサーバ
			に安全に接続できます。 また、opensshのパッケージの
			インストールも必要です。

		    portmap
			portmapプログラムは、NIS(YP)やNFS、その他の重要な情報の
			不正利用を防ぐためのセキュリティツールです。 portmapは
			NFSやNISなどのプロトコルによって使われるRPC接続を管理
			します。 portmapパッケージは、RPCを使用するプロトコル
			のサーバとして動作するマシンのすべてにインストールする
			必要があります。

		    expat
			ExpatはXML解析用のCライブラリです。 Expatはストリーム系
			のXMLパーサです。 解析を開始する前に、パーサによって
			ハンドラが登録されます。 パーサが解析対象ドキュメント
			で関連する構造を発見すると、登録したハンドラがコールされ
			ます。 ハンドラを登録できる構造にはstartタグなどがあり
			ます。

		    libusb
			このパッケージはアプリケーションがUSBデバイスにアクセス
			する手段を提供します。

		  mm
			MMライブラリは抽象レイヤを提供します。 これにより、関連
			プロセスが共有メモリを使用してデータを共有するので簡単に
			なります。

		  glibc-kernheaders
			glibc-kernheadersには、LinuxカーネルのCヘッダファイルが
			含まれています。 ヘッダファイルは、標準的なプログラム
			をビルドしたり、glibcパッケージの再構築に必要な構造体や
			定数を定義するものです。

		  automake15
			automakeはMakefile生成ツールです。 automakeは、4.4BSDの
			makeとインクルードファイルの影響を受けていますが、その
			目的は移植性と、標準に準拠することにあります。

		    binutils
			binutilsは、一連のバイナリユーティリティで、ar(アーカイ
			ブの作成、変更、読み込みを行う)、as(GNUアセンブラファミ
			リー)、gprof(関数呼び出しグラフのプロファイルデータを
			表示する)、ld(GNUリンカー)、mm(オブジェクトファイルの
			シンボルを一覧表示する)、objcopy(オブジェクトファイルの
			コピーと変換を行う)、objdump(オブジェクトファイル内の
			情報を表示する)、ranlib(アーカイブ内容のインデックスを
			作成する)、size(オブジェクト/アーカイブファイルのセク
			ションサイズの一覧を表示する)、strings(ファイル内の印字
			可能文字列の一覧を表示する)、strip(シンボルを削除する)、			addr2line(アドレスをファイルや行に変換する)などが含まれ
			ます。

		    make
			プログラムのソースファイルから、実行可能ファイルやその他
			の非ソースファイルを生成する方法を制御するためのGNUツー
			ルです。 Makeを使用すれば、ユーザはビルドプロセスの詳細
			に関する特別な知識を持たなくても、パッケージの構築と
			インストールを行うことができます。 プログラムの構築方法
			に関する詳細を、プログラムのmakefileの中のmakeとして指定
			します。

		    njamd
			NJAMDはmallocデバッガで、実行バイナリを再コンパイル、
			さらには再リンクすることなしにオーバーフロー、アンダー
			フロー、開放メモリーへの書き込み、メモリーリークなどの
			すべての一般的な動的メモリーバグを探します。 NJAMDは
			malloc(3)、strdup(3)、GNUウィジェットアロケータ、さらに
			はC++のnewとdeleteなどのラップする任意のライブラリ関数
			を介してメモリーリークを追跡することができます。 NJAMD
			は日常的に使用できる程度に高速でありほとんどのアプリ
			ケーションをデバッグできる程度に軽量です。 ただし、
			大規模なアプリケーションのデバッグを快適に行うためには
			より多くのRAMが必要になります。

		    patch
			patchプログラムはオリジナルファイルにdiffファイルを適用
			します。 diffコマンドは、オリジナルファイルと変換後の
			ファイルを比較する際に使用されます。 diffはファイルに対
			する変更内容を一覧表示します。 この場合、オリジナル
			ファイルを持っている人は、patchコマンドとdiffファイルを
			使用すれば、オリジナルファイルに変更内容を追加(ファイル
			へのパッチ適用)することができます。 アプリケーションを
			アップグレードするための一般的な方法です。

		    pkgconfig
			pkgconfigツールはコンパイルオプションを決定します。
			必須の各ライブラリについて、設定ファイルを読み込み、
			必要なコンパイラフラグとリンカフラグを出力します。

		    gdb
			GNUデバッガであるGDBを使用すると、C、C++、他の言語で作成
			されたプログラムを制御して、そのデータを印刷することで、
			デバッグを行うことができます。

		    ltrace
			ltraceはデバッグプログラムであり、指定されたコマンドを
			実行し、そのコマンドが終了するまで動作し続けます。 
			コマンドの実行中にltraceは実行されたプロセスがコールした
			ダイナミックライブラリーコールと、実行されたプロセスが
			受信したシグナルの両方をインターセプトして記録します。
			ltraceはプロセスによってコールされたシステムコールを
			インターセプトして表示することもできます。

		    glibc-devel
			glibc-develパッケージには、標準Cライブラリを使用するプロ
			グラム(ほぼすべてのプログラムが使用)を開発するために必要
			なヘッダーとオブジェクトファイルが含まれています。 標準
			Cライブラリを使用するプログラムを開発する場合には、実行
			可能ファイルを作成するために、これらの標準ヘッダーや
			オブジェクトファイルをシステム内で利用できるようにする
			必要があります。 標準Cライブラリを使用するプログラムを
			開発する予定がある場合は、glibc-develをインストールして
			ください。

		    gpm-devel
			gpm-develパッケージには、マウス操作できるプログラムの
			開発に必要なライブラリおよびヘッダファイルが含まれていま			す。 このパッケージを使って、マウスを使用するテキスト
			モードのプログラムを開発できます。 マウスを使用するテキ
			ストモードのプログラムを開発する必要がある場合には、
			gpm-develをインストールしてください。

		    hesiod-devel
			Hesiodは不規則に変化する情報のデータベースへのアクセスを
			提供するのに既存のDNS機能を使用するシステムです。 しば
			しば、平常ではネットワークの/etc/passwd、/etc/group、
			そして/etc/printcapファイルの中に保存されている情報を
			配布するのに使用されます。 それが、マルチプルホスト間
			でのファイルの同期を確立する必要をなくしてくれます。
			このパッケージにはHesiodを使用するプログラム作成の為に
			必要なヘッダーファイルとライブラリが含まれます。

		    krb5-devel
			krb5-develはネットワーク認証システムです。 krb5-devel
			パッケージには、kerberos5プログラムをコンパイルするため
			に必要なヘッダーファイルとライブラリが含まれています。
			kerberos対応のプログラムを開発したい場合には、この
			パッケージをインストールする必要があります。

		    kudzu-devel
			kudzu-develパッケージにはハードウェア検出と設定に使用す
			るライブラリであるlibkudzuが含まれています。

		    libstdc++-devel
			libstdc++ライブラリは標準C++ライブラリのGNU実装版です。
			このパッケージには、STLのSGI実装を含むC++開発に必要な
			ヘッダーファイルとライブラリが含まれています。

		    libusb-devel
			このパッケージにはlibusbでアプリケーションを開発するのに
			必要なヘッダーファイルやドキュメントが含まれます。

		    libuser-devel
			libuser-develパッケージにはlibuserを利用するアプリケー
			ション開発のためのヘッダーファイル、静的リンクファイル、
			そして有用な .laファイルが収録されています。

		    pciutils-devel
			このパッケージには、PCIバスに接続されたデバイスを検査、
			設定するためのライブラリが含まれています。

		    readline-devel
			readlineライブラリは入力されたコマンドラインをユーザが
			編集できるようにするアプリケーションにおいて使用すること
			のできる機能のセットを提供します。 readlineライブラリを
			使用したプログラムを開発したい場合には、readline-devel
			パッケージをインストールする必要があります。

		    cpp
			cppはGNU C互換のコンパイラプリプロセッサです。 cppは、
			実際にコンパイルを行う前にプログラムを変換するために
			Cコンパイラから自動的に実行されるマクロプロセッサです。
			マクロプロセッサと呼ばれるのは、長い記述を簡略化したマク
			ロを定義できるためです。

		    gcc
			gccパッケージには、Cコードコンパイラ用のGNUコンパイラの
			ccとgccが含まれます。

		    gcc-c++
			gcc-c++パッケージを使用するとGNU CコンパイラにC++の
			サポートが加わります。 テンプレートや例外処理などを含む
			最新のC++使用のほとんどをサポートしています。 これには
			静的標準C++ライブラリとC++のヘッダーファイルが含まれます
			が、ダイナミックリンク用のライブラリは別のパッケージに
			収録されています。


	インストールを開始する。

	インストール完了。 リブートする。
        現在、BIOSの設定は、
          First Boot Device   [HDD-0]
          Second Boot Device  [HDD-1]
          Third Boot Device   [HDD-2]
        となっている。 このため、ブートアップ時には/dev/hda、/dev/hdb、/dev/hdc
        の順に調べてから立ち上がる。 最終的には First Boot Deviceに /dev/hdcを
	指定してよいだろう。 Linuxシステムは正常に立ち上がった。

[inoue@onlpara inoue]$ ssh onlsbc1
The authenticity of host 'onlsbc1 (130.87.153.3)' can't be established.
RSA key fingerprint is 0b:79:9e:79:ac:c3:9e:10:c6:98:cc:7c:46:3e:96:3e.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'onlsbc1,130.87.153.3' (RSA) to the list of known hos
ts.
inoue@onlsbc1's password:
Last login: Fri Nov 15 15:07:44 2002
[inoue@onlsbc1 inoue]$ ls -la
合計 13
drwx------    3 inoue    inoue        1024 11月 15 15:08 .
drwxr-xr-x    4 root     root         1024 11月 13 19:47 ..
-rw-------    1 inoue    inoue          37 11月 13 14:15 .bash_history
-rw-r--r--    1 inoue    inoue          24 11月 13 19:46 .bash_logout
-rw-r--r--    1 inoue    inoue         191 11月 13 19:46 .bash_profile
-rw-r--r--    1 inoue    inoue         124 11月 13 19:46 .bashrc
-rw-r--r--    1 inoue    inoue        5531 11月 13 19:46 .canna
drwx------    2 inoue    inoue        1024 11月 15 15:08 .ssh
[inoue@onlsbc1 inoue]$
[inoue@onlsbc1 inoue]$ df -k
Filesystem           1k-blocks      Used Available Use% Mounted on
/dev/hdc1               241949    219609      9848  96% /
none                    152332         0    152332   0% /dev/shm
[inoue@onlsbc1 inoue]$

        約220MBでインストールできている。 ネットワークからログインすれば日本語
        は正常に表示される。 コンソールでは kon をすれば日本語表示できる。

[root@onlsbc1 inoue]# /sbin/fdisk /dev/hdc

コマンド (m でヘルプ): p

ディスク /dev/hdc: ヘッド 16, セクタ 32, シリンダ 980
ユニット = シリンダ数 of 512 * 512 バイト

 デバイス ブート   始点      終点  ブロック   ID  システム
/dev/hdc1   *         1       976    249840   83  Linux

コマンド (m でヘルプ): q

[root@onlsbc1 inoue]#

[inoue@onlsbc1 inoue]$ who
inoue    tty1     Nov 15 15:07
inoue    ttyp0    Nov 15 15:07
inoue    pts/0    Nov 15 15:10 (onlpara.kek.jp)
[inoue@onlsbc1 inoue]$ ssh onlsun3
The authenticity of host 'onlsun3 (130.87.219.75)' can't be established.
RSA key fingerprint is 23:94:c7:5a:48:c7:c7:ec:9f:f4:e3:d1:59:40:20:35.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'onlsun3,130.87.219.75' (RSA) to the list of known ho
sts.
inoue@onlsun3's password:
Last login: Wed Nov 13 17:20:42 2002 from onlsbc1.kek.jp
Sun Microsystems Inc.   SunOS 5.8       Generic February 2000
Sun Microsystems Inc.   SunOS 5.8       Generic February 2000
onlsun3[33]% who
inoue      pts/3         9月 27日 09:14 (ccx128.kek.jp)
inoue      pts/2        11月 15日 15:23 (onlsbc1.kek.jp)
onlsun3[34]%

	ok.  正常に動作している。

---xxxx