Oct 24, 2002
onlsbc1: コンパクトフラッシュ上のLinuxシステムの読み出し専用化
--- システムインストール #0
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(http://www-online.kek.jp/~inoue/para-CAMAC/
Work/SBC-RAM0.html)
高エネルギー加速器研究機構
素粒子原子核研究所
物理、オンライングループ
井上 栄二
目的
並列CAMACで使用するSBC上のLinuxシステムを、コンパクトフラッシュ上に
構築した。 コンパクトフラッシュ上に、現在構築してあるLinuxシステムは
通常のシステムと同じで、システムはコンパクトフラッシュに対して読み
書きを行っている。 ここで注意すべきことは、コンパクトフラッシュには
構造上書き込み回数に限界があるという点である。 したがって、コンパク
トフラッシュ上のシステムは、読み出し専用として構築するのが望ましい。
現在、512MBのコンパクトフラッシュ上に構築してあるLinuxシステムは、
壊したくないので、読み出し専用化システムの構築作業は、256MBのコンパ
クトフラッシュを使って行うことにする。 ここでは、512MBのコンパクト
フラッシュ上に構築してあるLinuxシステムとできるだけ同じ構成を256MBの
コンパクトフラッシュ上に構築するための、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ボタンマウスのエミュレート
を指定。
インストールの種類はサーバ。
ディスクパーティションの種類は、インストーラが自動的にパーティションの
設定を行うを選択。
自動パーティションの設定では、
自動パーティションを設定するドライブの:
システムの全てのLinuxパーティションを削除
このインストール方法をどのドライブに使用しますか?
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
binutils 3MB
make 1MB
njamd 1MB
patch 1MB
pkgconfig 1MB
デバッガ
gdb 2MB
ltrace 1MB
ライブラリ
glibc-devel 7MB
gpm-devel 1MB
hesiod-devel 1MB
krb5-devel 2MB
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
参考.
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++のヘッダーファイルが含まれます
が、ダイナミックリンク用のライブラリは別のパッケージに
収録されています。
インストールを開始する。
ディスクフォーマットの後、パッケージのインストールを始めようとしたところ
で以下のメッセージが表示された。
"選択パッケージのインストールに必要なディスク容量が不足しているよう
です。 次のファイルシステム上に空き領域が必要です。
マウントポイント 領域不足
/ 10M "
"開発"以下のパッケージをいくつかインストールするのをやめることにしよう。 以下のパッケージをインストールしないことにする。
開発
ツール
automake15 1MB
njamd 1MB
patch 1MB
pkgconfig 1MB
デバッガ
gdb 2MB
ltrace 1MB
ライブラリ
krb5-devel 2MB
言語
gcc-c++ 5MB
これで、インストールを続行する。
インストーラは、再度ディスクのフォーマットをやって、パッケージのインス
トールを始めた。 インストーラのステータス表示を見ると、180パッケージ、
425MBの容量となっている。
インストール完了。 リブートする。
現在、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システムは正常に立ち上がった。
onlsun3[37]% ssh onlsbc1
The authenticity of host 'onlsbc1 (130.87.153.3)' can't be established.
RSA key fingerprint is 08:a4:86:e5:5a:8b:3f:ad:0a:43:63:94:c1:fb:4a:b3.
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: Thu Oct 24 14:11:59 2002 from onlnote2.kek.jp
[inoue@onlsbc1 inoue]$ ls -l /
合計 114
drwxr-xr-x 2 root root 2048 10月 24 2002 bin
drwxr-xr-x 3 root root 1024 10月 24 2002 boot
drwxr-xr-x 18 root root 82944 10月 24 14:08 dev
drwxr-xr-x 31 root root 3072 10月 24 14:07 etc
drwxr-xr-x 4 root root 1024 10月 24 2002 home
drwxr-xr-x 2 root root 1024 6月 22 2001 initrd
drwxr-xr-x 6 root root 3072 10月 24 2002 lib
drwx------ 2 root root 12288 10月 24 2002 lost+found
drwxr-xr-x 3 root root 1024 10月 24 14:07 mnt
drwxr-xr-x 2 root root 1024 8月 24 1999 opt
dr-xr-xr-x 47 root root 0 10月 24 2002 proc
drwxr-x--- 2 root root 1024 10月 24 2002 root
drwxr-xr-x 2 root root 3072 10月 24 2002 sbin
drwxrwxrwt 3 root root 1024 10月 24 14:15 tmp
drwxr-xr-x 15 root root 1024 10月 24 2002 usr
drwxr-xr-x 16 root root 1024 10月 24 2002 var
[inoue@onlsbc1 inoue]$
[inoue@onlsbc1 inoue]$ df -k
Filesystem 1k-blocks Used Available Use% Mounted on
/dev/hdc1 241949 219444 10013 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 Oct 24 14:09
inoue pts/0 Oct 24 14:10 (onlsun4.kek.jp)
inoue pts/1 Oct 24 14:15 (onlsun3.kek.jp)
inoue ttyp0 Oct 24 14:18
inoue pts/2 Oct 24 14:27 (onlnote2.kek.jp)
[inoue@onlsbc1 inoue]$
[inoue@onlsbc1 inoue]$ ssh onlsun1
The authenticity of host 'onlsun1 (130.87.153.10)' can't be established.
RSA key fingerprint is da:0d:92:f8:82:a3:04:4b:9b:b0:42:47:79:4e:dd:00.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'onlsun1,130.87.153.10' (RSA) to the list of known ho
sts.
inoue@onlsun1's password:
Last login: Thu Oct 24 09:01:05 2002 from onlnote2.kek.jp
Sun Microsystems Inc. SunOS 5.8 Generic February 2000
Sun Microsystems Inc. SunOS 5.8 Generic February 2000
onlsun1[33]% who
inoue console Sep 27 09:09 (:0)
inoue pts/9 Oct 18 14:35 (onlsun2.kek.jp)
inoue pts/5 Sep 27 09:11 (:0.0)
inoue pts/6 Sep 27 09:12 (:0.0)
inoue pts/2 Oct 24 08:34 (onlnote2.kek.jp)
inoue pts/8 Oct 24 14:26 (onlsbc1.kek.jp)
onlsun1[34]%
ok. 正常に動作している。
---xxxx