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