Linux Gazette 2005年3月投稿記事
目次
OpenSSH とPuTTYを用いるファイアウォールの破壊
投稿者、mchirico:03/29/2005 - 02:11.
記事 |
システム管理
(以下は、上記Linux Gazette記事が紹介する本文の翻訳です)
Mike Chirico (mchirico@users.sourceforge.net) or (mchirico@comcast.net)
Copyright (c) 2005 (GPU Free Documentation License)
最終更新:Tue Mar 29 06:11:49 EST 2005
http://souptonuts.sourceforge.net/sshtips.htm
OpenSSH 及び PuTTY を用いるファイアウォールの破壊
システム管理者が故意にポート22(ssh)以外の単一サーバに対する通信をフィルタしても、ファイアウォールの後の他のコンピュータにはアクセスすることが出来る。この記事は、Linux及びWindowsの遠隔ユーザがファイアウォール・サンバ、メール及びhttpサーバにアクセスする方法を述べる。肝要なのは、ファイアウォールをいじることなく、openSSHとPuTTYを自分のホーム又は作業場所のためVPNソリューションとして使用する方法である。この記事は、ポート22を閉じることは薦めない。これらのステップはサーバ全部の上で有効を与えられるアカウントのみに可能であるが、読み進むと、ファイアウォールに穴を開けることなく自分の出来ることに驚くはずだ。ファイアウォールに穴を開けるのは良くない。
OpenSSH と Linux
Linux laptop 192.168.1.106から、ファイアウォールにより外界から遮断されているSAMBAサーバ、HTTPサーバ、メールサーバを含むファイアウォールの後のリソースに直接アクセスすることが可能になった。ファイアウォールは、ポート22を経由してのみSSHサーバへのアクセスを許可するが、お分かりのように、他のサーバにアクセスすることも出来る。
SSHサーバは外界からは66.35.250.203 として見られる。SSHサーバを通る通信路を Linuxラップトップ 192.168.0.8から通り抜けるするには、Linuxラップトップ上に、次ぎの "~/.ssh/config" ファイルを作成する。
~/.ssh/config
## Linux Laptop .ssh/config ##
Host work
HostName 66.35.250.203
User sporkey
LocalForward 20000 192.168.0.66:80
LocalForward 22000 192.168.0.66:22
LocalForward 22139 192.168.0.8:139
LocalForward 22110 192.168.0.5:110
Host http
HostName localhost
User donkey
Port 22000
このファイルは次の権利を持っていなければならない:
$ chmod 600 ~/.ssh/config
もう一度上のファイルを見る。"LocalForward 22000 192.168.0.66:22" の入力に注意して、これをネットワーク図と比べる。SSHサーバに対する接続は、Linuxラップトップ (192.168.1.106)から次のコマンドを走らせて作る。
$ ssh -l sporkey 66.35.250.203
ヒント:上のコマンドは、ユーザ名 "sporkey" 及び "HostName" は既にconfigファイルで指定しているので、短くすることが出来る。したがって、次に示すように "ssh work" を用いることが出来る。
$ ssh work
この接続を作った後、アカウント・ドンキイがこのサーバにアクセスと有すると仮定して、HTTPサーバに直接アクセスすることが出来る。下のコマンドを続けると、これはLinuxラップトップ(192.168.1.106)の上で実行される。左様、新しいウインドウのLinuxラップトップだ。繰り返すと、192.168.1.106 から新たなセッションで実行される。上の図を参照されたい。これは、Linuxラップトップの「ローカルホスト」である−お分かりだろうか?sshセッションはLinuxラップトップから起動される。
$ ssh -l donkey localhost -p 22000
configファイルは "http" をローカルホスト・ポート22にマップするので、上のコマンドは次のように短縮することが出来る:
$ ssh http
いや、もっと良い方法がある。一つを "ssh work" 用とし、次いで他を "ssh http" 用とするターミナル・セッション二つを作る代わりに、全部一つのコマンドに纏めると良い。
$ ssh -N -f -q work;ssh http
上のコマンドが、必要なポートを別のサービスに送って、働く接続を設定する。"-N" は「リモート・コマンドを実行するな」の意味で、"-f" はsshがバックグラウンドに行くこと、"-q" は警告とダイアゴナルのメッセージを全部を抑制することをあらわす。したがって、もっと短縮したいときは、別名 alias http='ssh -N -f -q work;ssh http' を作って、これを自分の "~.bashrc" ファイルに入れる。これで大分短くなる。コマンド行で http とタイプすればHTTPサーバに到達することが出来るからだ。
このサーバにファイルをコピイするには、下のコマンドを用いる。注意:"scp" には大文字 "-P" を続ける。自分が ".ssh" ディレクトリにいるときは、目的サーバ上の類似ファイルに追加したい "authorized_keys2" 及び多分 "authorized_keys"を見ている。これらのファイルは、例としてのみ示す。任意のファイルをコピイすることが出来るが、これらのファイルをリモートサーバにコピイし内容をリモートサーバの認証_key* ファイルに追加するときは、次回に接続をおこなうときパスワードの問い合わせがない。 100+ Linux TipsのTip 12を参照。
$ scp -P 22000 authorized_keys* donkey@localhost:.
しかし、"config" ファイルには全部入っているので、上のコマンドを次のように短縮することが出来る:
$ scp authorized_keys* http:.
次のコマンドをLinux ラップトップから実行すると、リモートサーバ(192.168.0.66)からウェブペイジをダウンロードする。
$ wget http://localhost:20000/
Linux ラップトップが会社のウェブサーバになる -- RemoteForwardの威力
Linuxラップトップがウェブサーバ上で働いているとする。社内の人は、HTTPサーバ(192.168.0.66)に接続すると、これ、ラップトップ(192.168.1.106)の上のウェブサーバ、を見ることが出来るだろうか?出来る。ここで示したのは、HTTPサーバに対する直接アクセスのないラップトップが、事実上会社のウェブサーバを乗っ取っていることであると考えればよい。全くその通りなのだが、(192.168.0.66),のポート80で走る会社のウェブサーバを乗っ取る代わりに、追加のウェブサーバがポート20080に追加される方法が分かるだろう。しかし、会社のウェブサーバを乗っ取朗と考えるなら、同様のステップをルートとしておこなう。優先ポートを乗っ取ることが出来るのはルートだけだからだ。しかし、先ずこの例で出発して、これをポート80でおこなう方法は分かるだろう。この魔術を実行するには、会社のウェブサーバ(192.168.0.66)の上の "/etc/ssh/sshd_config" で、変数 "GatewayPorts" を"yes" に設定していなければならない。さもないと、ラップトップのウェブペイジを見ることが出来るのは、HTTPサーバにログしているユーザのみとなる。代わりに、社内の誰にも追加ポートに対するアクセスを持たせるには、
GatewayPorts yes
変更を行った後、sshdを再スタートする。
$ /etc/init.d/sshd restart
Linux ラップトップの "~/.ssh/config" に、次のエントリRemoteForward 20080 localhost:80 を追加して、下記に示すように "~/.ssh/config" を完成する。
## Updated Linux Laptop .ssh/config ##
Host work
HostName 66.35.250.203
User sporkey
LocalForward 20000 192.168.0.66:80
LocalForward 22000 192.168.0.66:22
LocalForward 22139 192.168.0.8:139
LocalForward 22110 192.168.0.5:110
Host http
HostName localhost
User donkey
Port 22000
RemoteForward 20080 localhost:80
遠隔の会社ウェブサーバ192.168.0.66から "netstat -l" を実行すると、以下が見られる筈:
tcp 0 0 *:20080 *:* LISTEN
これは、社内の誰でもがポート80の上のウェブペイジhttp://192.168.0.66:20080/ を見ることが出来ることを意味する。自分が規定値httpポート、ポート80、になりたいときは、接続ユーザはルート優先権を持たなければならない。
"/etc/ssh/sshd_config" ファイルを変更しないと、"GatewayPorts" は規定値 "no" で、"netstat -l" (つまりell)を実行すると、次が返される:
tcp 0 0 ::1:20080 *:* LISTEN
上の制限により、コンピュータ 192.168.0.66 上のユーザだけが、ポート20080から192.168.1.106 上のウェブペイジを見る。これは、"GatewayPorts" がnoに設定されているため、規定値で起こることである。
参考までに、sshキイペアを作るに当たっては、リモート・ルート・アクセスからsshサーバを確保して、sshトンネルを通じてsambaを取付ける、この記事の最後に記載する100+ Linux Tips の中の(TIP 12, TIP 13, TIP 138)を参照。さらに、システム管理者であるときは、年間記録保管の (TIP 14)及び、ユーザとそれらの稼働中プロセスを殺す方法(TIP 26)を見ると良い。次の(TIP 10, TIP 11, TIP 15, TIP 24, TIP 47, TIP 52, TIP 89, TIP 104, TIP 148, TIP 150) はシステム・セキュリティに役立つだろう。
WindowsXP 用 PuTTY
Windows XP ラップトップから、ファイアウォールの後のリソース "SSHサーバ", "Mail サーバ", "HTTP サーバ" にアクセスしたいことがある。 "SSHサーバ" に入ることの許される唯一のポートは、ポート22である。sshトンネルを用いてラップトップから別のリソースにアクセスする方法は?
ステップ 1: (PuTTY のダウンロード)
putty.exe 及びand plink.exe. をダウンロードする。plink.exe は必要ないが、後で結局は使うことになる便利な機能がある。
ファイルを通常は "c:/bin" に入れ、次にこのディレクトリをパスに追加する。
ステップ 2: (自分のサーバの IP アドレスのロード)
自分のsshサーバのIPアドレスとしてIPアドレス 66.35.250.203を代入してセーブする。 66.35.250.203 は実際はsourceforgeなので、sourceforgeにアクセスする計画でないなら、別のIPアドレスにするのが良い。
ステップ 3: (必要なトンネルの作成)
アクセスする必要のある追加のサーバが二つある。"HTTP サーバ" 192.168.0.66と "Mail サーバ" 192.168.0.5だ。Tunnelをクリックして、次の値を入れる。"HTTP サーバはポート80で働くのでSource portに80を入れる。destinationは192.168.0.60:80。"Add" を叩いてこれを実行。
リストは以下のようになる筈。各エントリの頭に"L"が付いているのを確認すること。ローカルポート25がポート25の上でサーバ192.168.0.5 になっているが、ポート110と25がサーバ192.168.0.5 になっている。
ステップ 4: (接続の試験)
ここで "Sourceforge" 又は自分の付けた名前をクリックしてssh接続を開くと、ローカルホストをブラウザに記入して"HTTP サーバ"上のデータを閲覧することが出来る。これでこの段階における接続の「点検」になる−自分のサーバの正しいIPアドレスを入力すること。
ステップ 5: (メールの設定)
Mozilla Thunderbird は優れたメール・パケージである。仕事場のExchange、Postfix、Sendmailis サーバに接続すると、Microsoft Outlookの代わりに働く。
サーバの位置はローカルホストである。下のオプション"Leave messages on server"(サーバにメッセージを残す)に注意。自分のワークステーション上で働いている別の電子メールクライアントがいるときは、電子メールをサーバ上に残す方が良い。
ステップ 6: (Samba 共有に対するアクセス獲得 -- ループバック・アダプタ)
Windows XPコンピュータにMicosoft loopback Adapterを追加すると良い。コントロール・パネルから次のステップにしたがう。それはそうと、一つ以上のアダプタを追加することが出来る。
1. はい、ハードウエアは接続棲み
2. 新規ハードウエア装置を追加する(メニューの下部)
3. リストから選ぶハードウエアをインストールする(上級者)
4. ネットワーク・アダプタを選ぶ
5. Micosoft Loopback Adapter
アダプタを追加したら、IPアドレスを割当なければならない。最初のアダプタには 10.0.0.1を割当て、二番目以降は10.0.0.2などとする。
二番目のアダプタのIPアドレスは10.0.0.2となる。ネットワーク図にはsambaサーバが二つあるのを想記されたい。HTTP サーバと SAMBAサーバの両方がsambaを共有する。
ループバック・アダプタはコントロール・パネルにあらわれなければならない。l
ステップ 7: (Samba 共有に対するアクセス獲得 -- SSH 構成設定)
ここでPuttyコンフィギュレーションに戻る。"Source port" テキストボックスに、小さいが 10.0.0.1:139 を入力する:だが、下の画像では0.0.1:139しか示されていないのは、左にスクロールされているためなのに注意。またdestinationアドレスに192.168.0.66:139を記入する。終わったら"Add"をクリック。
記入を完了すると下記の通りになる筈:
samba共有がもっとあるときは上述の手順を繰り返す。示さないけれども同じ手順を10.0.0.2:139に使用するが、それは192.168.0.8のdestinationを有する。ここでも、ネットワーク図に二つのsamba共有がある。
ステップ 8: (Samba 共有に対するアクセス獲得 -- View It)
share共有を見るには、Start/Runをクリックして \\10.0.0.1\とタイプする
注記
多分再起動しなければならない。また、Microsoftから次の patch を読んでダウンロードすること。
また、両アダプタに関しMicrosoftネットワークの為のファイルとプリンタの共有を無効にすること。
TCP/IP上のNetBIOSを無効にするが、LMHostsルックアップは必ず有効にする。
ダウンロード
OpenSSH
http://www.openssh.org/
PuTTY
http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
追加の推薦読み物
100+ Linux Tips Linux関連ヒントと秘訣がある。暗号化、tar、cpio、1個のNIC上への複数IPアドレスの設定、マニュアル使用上のヒント、バックグラウンドへのジョブ入力、shredの使用、システム上で誰が何をしているかの監視、システム設定の傍受、IPC状態、ルートでも削除不能なようにファイルを不変にする方法、sshキイペア作成、システムログに12ヶ月分のバックアップ作成、低レベルtapコマンド(mt)、ISOイメージのファイルシステムとしての搭載、ハードドライブ上の情報獲得、cronジョブの設定、lookコマンド、大きい単語辞書の獲得、コマンドの別名発見、ASCIIコード、elinksの使用、画面コマンド、FTPオートログイン、Bash括弧拡大、Bash文字列オペレータ、Bash中のforループ、diffとpatch、scrupt、ライブラリパスの変更(ldconfig)、モニター・ファイル利用法、コマンド内の--parentsオプション、findコマンドの高級使用法、catトリック、SYN洪水攻撃に対する防御とping、特殊シェル変数、RPM利用法、IP及びMACアドレス発見法、DOSからUNIXへの転換、コマンド行スクリプト言語としてのPHP、Gnuplot、POVRAY及び動画GIF、などなど多数がある。
自家用ライブLinux CD の作成 これらのステップは、ソースからコンパイルされる最新2.6 kernelを持ち手機能的Linux システムを作る方法、及びDHCPインストレーションを含むBusyBox に統合するに加えて、このCDベースのシステム上でOpenSSHをコンパイルする方法を示す。システム起動に際してファイルシステムが作成され、CDの内容が解凍されてRAMに完全にロードされる−この時点で次のコンピュータ起動のためCDを取出すことが出来る。残る機能的システムは、完全なssh能力を有する。どのようなPCでも使用することが出来るが、勿論、適切なドライバを用いてkernelが構成されておりPCがCDから起動出来るとしてだが。
SQLite Tutorial この記事は、sqlite3の威力と簡便さを検討する。先ず、普通のコマンドとトリガーで出発し、次いでユニオン・オペレーションを持つ付加ステートメントを、別個のデータベースにある複数のテーブルが、データのコピイ又は移動の労力無しで一つの仮想テーブルに統合される方法で、導入する。次に、単純サイン関数と、この関数をSQLに用いる驚異的に強力な工夫がステートメントを選んで、データを通じる単一パスにより複雑な質問を、サイン関数が絶対値を定義する方法と、IF条件に関する短い数学問題を作った後解決することが、実証される。
Lemon Parser Tutorial Lemon は、小型で、スレッドに安全な試験済みのパーサー・ゼネレータで。D. Richard Hippの著作である。flexなどのスキャナと一緒にパーサ・ゼネレータを用いるのが、書くべきコードが少ないので、有利なことがある。パーサ用のプログラムを書くだけで済む。この記事は、用例の整ったLemonパーサ入門書である。
LiPod?
今日では
MP3プレーヤ機能が必要だがSimputerにはその能力がある。
音声メッセージの送付、又は手書きの電子メールも可能である。64メガバイトでは多くの音楽を保持しないが、これを拡張することの出来るUSBフラッシュ・スティックがある。 どんなUSBフラッシュ・スティックでも働くと思うが、サイトに依っては明らかでない。
互換性
Simputerをオンラインにするのが必須である。単純なテキスト電子メール及びウェブ閲覧には上手く働く。これは低収入の人の使用を目標にする装置には重要なことで、有用なマシンを廉価で提供することが出来る。
動画送付:自分のSimputer *が* マウス
この
Flip Flop技術は、最初の動画感知ゲーム・コントローラが出たときから欲しかったものの一つである。これをソフトウエアとハードウエアに組込んで、Simputerを殆どのPDA競争相手より優れた者にしている。
勿論Linuxで働く。
これは注目すべきマシンだ。どなたか一台手に入れて調査して頂くと有り難い。
solar PC http://solarlite.org/からのsolar liteは、最初に述べられた万人のPCに近い。
簡単で、信頼性があって、動く部分がなく長寿命の設計だ。12ボルト低圧作動の工業標準部品で作られており、頑丈、小型、軽量(1kg)で静かだ。マザーボードはAiO で、イーサネット、VGA、オーディオなどがついている。128MBのRAM、,0128MBコンパクト・フラッシュモジュール(最低)。ロイヤリティ無料で製造、組立は選択。FireFox ブラウザ、Knoppix/LTSPクライアント付きの DS Linuxを含む。
助けて頂けると思います。私の理解では、Simputerは、万人がPCのようなアクセスの出来るものです。費用効果が良く、使用位置を問いません。Amida Simputerは米国のPDA価格と殆ど同じだと全く誤解していました。第三世界諸国の一般的な人々がこれを$300 かそこらで買うことが出来ると思います。
Linpediaは、2004年12月24日に発足した初めての GNU/Linux オンライン百科事典である。現在の記事は1300編であるが、記事数は毎日増加している。Linpediaの使命は、各項目が適切に定義されたGNU/Linux 百科事典を作ることにある。これはmediawikiソフトウエアで働くので、誰でも読取って変更することが出来る。プロジェクトは
、http://www.linpedia.com/ ドメインにある。我々の使命に参加して、世界を良い場所にするのを助けて頂きたい。
SmartFLeXが、Linuxデスクトップ用OPTion、
仮想Thin Client Solutionをリリース
投稿者smartflextech:03/25/2005 - 20:11.
記事 |
一般関心
SmartFLeX Technology は、Linuxデスクトップ用 OPTion 、初めての仮想Thin Client Solutionを発表.
ナザレ、ペンシルバニア州2005年3月24日−Thin Client Solutionを基本とするLinuxの主要設計者兼開発者であるSmartFLeX Technologyは、 Linuxワークステーション・デスクトップ用の初めての仮想Thin Clientソリューション OPTion、を発表する。
OPTionは、Thin Client モジュールにおいて利用することの出来る個別のダウンロード、計算、インストール、コンフィギュア及び管理を終了させる。OPTionの機能性とクライアント効用は、Linuxデスクトップへの組込と相俟って、他の如何なるオープンソース・ソリューションの追随も許さない。営業的なサポートを提供して、Linuxデスクトップ・システム用Thin Client ソリューションを保守する。GNOME及びKDEとの互換性があるので、単一のアプリケーションを無料及び有料で利用することの出来るすべての主要ターミナル・サーバ環境に接続することが出来る。OPTionによりまた、ターミナル・エミュレータ一式の購入が不要になる。評判の良いEricom PowerTermターミナル・エミュレータ一式とRemoteView技術(RCPシームレス・アプリケーション)がOPTinソフトウエアに組込まれている。
「我が社はOPTionにより、デスクトップ上でLinux に対する移行を考慮中のカスタマに対する失われた輪を提供する。デスクトップにおけるLinuxの成長を認識し、市場に類似品のない直ちに働く製品を提供する機会を見ている。 製品系列に対するOPTionの追加により、考えられる顧客は Linux PCに基づくThin Client ソリューションを用いるか、又は任意の利用可能ターミナルサーバ又はホストに接続される完全機能の専用Thin Client を提供する我が社の NETionの何れかのオプションを有する」とSmartFLeX TechnologyのCEOハンス・ノブロッホは言う。
OPTionクライアント・モジュールは全部、一回の設定中に緊密に統合され構成される。クライアント設定、デバイス配置、ポート配置は全て仮想Thin Client設定に含まれる。クライアント・セッションは、セントラル・ランチャ内から集中的に管理され実行される。
クライアント・セッションに含まれるのは:
−標準XDMCP(全画面及び/又はデスクトップ・ウインドウ内)
−direct Xの確保
−Xログインの確保(全画面及び/又はデスクトップ・ウインドウ内)
−RDP(全画面及び/又はデスクトップ・ウインドウ内)
−WTS 2000/2003用 Ericomシームレス・アプリケーション(リモート・ビュー)及び無料−リモート・ビュー・ターミナル・サーバ・エージェント付き統合xRDP
−サーバとアプリケーション・ブラウザ付きの ICA r
− Ericom PowerTerm エミュレータ一式(全画面及び/又はデスクトップ・ウインドウ内)
−NoMachine NX クライアント、 NX Server 1.3 及び 1.4をサポート
− Native Tarantella
サポートする Linux ディストリビューション:
−Mandrake Corporate Desktop 3.0
− Mandrake Linux 10.1
−Fedora 2
− Fedora 3
−Novell 9/ Suse Linux 9.1 (March/April 2005)
Xandros Business Desktop 3.x (March/April 2005)
洗練されたインストレーションとライセンス・モジュールによりOPTionは、サポートする Linux ディストリビューション全部に容易且つ安全にインストールすることが出来る。OPTionは、個人ライセンスでも法人ライセンスでも利用することが出来る。OPTion個人ライセンス用小売価格はCD版で $ 89.00 、ダウンロード版で$ 79.00 である。
SmartFLeX Technologyについて:
SmartFLeX Technology は、米国を本拠とする個人所有のLinux IT設計せービス会社である。SmartFLeX Technology は、カスタマ指向のLinux の少数クライアント、デスクトップ及びサーバ・ソリューション会社のうち最も急速に伸びている会社である。
詳しくは下記を参照
MagumaがPHP (PHP-AT)用eBay AcelleratorツールキットのサポートをPHP IDE Maguma ワークベンチにを統合
Magumaは2005年4月初めに新しいモジュール、eBayの PHP AT を発表する。この新モジュールは、MagumaワークベンチのモジュラーPHP IDEに統合される。
PHP (PHP-AT)用アクセラレータ・ツールにより、eBay上で入手出来るデータを一連のカスタムPHPクラスを通じて統合することが出来る。PHP-ATは、完全にPHPで書かれるのでcURLとOpenSSL を用いて、PHPバージョン4.3x以上をコンパイルする必要があるだけである。将来のeBay PHP-AT バージョンもまた、Magumaワークベンチを用いて同じ方法でサポートされる。
PHP用dBayアクセラレータ・ツールをMagumaワークベンチに統合することにより、eBayにインストールされるeBayにインストールされる新たたなウェブアプリケーションを増加することが出来る。
Maguma ワークベンチは開発者用専門 PHP IDEで、このIDEは重要で新たな機能全部を含んでおり、PHPを用いるプログラム作成全部を容易で迅速にする。IDEには膨大な数の機能が含まれており、複雑なプロジェクトを少ない労力で作ることが出来る。Magumaワークベンチのモジュール方式は、新しいアドオンを苦労しないで作る可能性を与える。
使用が簡便なことと生来のコード性能によりMagumaワークベンチは市場で最良のPHP IDEとなる。
Linux ユーザになって数年経つが、各種統合開発環境に関する確固たるリソースがLinux の中にないのが不満だった。数年に渉ってコード開発者をサポートして来て、良いデバッガ、コード・エディタなどがないかと聞かれることが多い。ソースコード・エディタとしてはvim を、デバッガとしては gdb/ddd を使っているが、常時コード開発をしている訳ではない。勿論、これはソースコード保守や文書化はしない。
Linux 用に利用出来る書物も余り役に立たない。自分の処で入手出来るIDEが「虎の巻」だと言うディストリビューションは無きに等しく、その特徴の詳細も分からないし、使用法の指導書もない。IDE開発者自身からのIDE指導書は散在していることが多く、読者は専門プログラム作成方法に関する知識が豊富であると予測している。どこから始めるかを知るのは極めて困難だ。
自分に正しいIDEを教えて呉れる確かな場所は何処かにないものだろうか?「初心者用Kディベロップ」書や「自習書」はないものだろうか?どこから出発するのが良いだろうか?
オープンソースの非営利使用 は、Linux の付属品でIT Garageに見出すことが出来る。他の成功談をお聞きしたいと同時にご意見も承りたい。
仕事に疲れて16進文字26を覚えるのが面倒になった。そこで文章をタイプすると16進文字列を作ってくれるプログラムを作った。そのプログラムを示す。私はこれをexeにコンパイル中だが、コンパイルすれば Linux で使える。誰でもがコンパイルするためmakefileを用いてtarballを作るべきだがだが、ウエブサイトの立ち上げに少し時間が欲しい。
#include <iostream.h>
int main()
{
char input[1000], output[26];
int cont, x, y, inputnumbers[26];
cout<<"Please enter a phrase at least 14 characters long: ";
cin.getline(input, 1000);
for(cont=0; input[cont]!='\0';cont++)
{}
if(cont<=13)
{
cout<<"You must have at least 14 characters to continue\n";
return 1;
}
y=0;
for(x=0; x<=14; x++)
{
inputnumbers[y]=input[x]/16;
inputnumbers[y+1]=input[x]%16;
y+=2;
}
for(y=0; y<26;y++)
{
switch (inputnumbers[y])
{
case 10:
output[y]=65;
break;
case 11:
output[y]=66;
break;
case 12:
output[y]=67;
break;
case 13:
output[y]=68;
break;
case 14:
output[y]=69;
break;
case 15:
output[y]=70;
break;
default:
output[y]= (inputnumbers[y]+48);
}
}
cout<<"\nWEP Key created: ";
for(y=0; y<26; y++)
{
cout<<output[y];
}
return 0;
}
この小さいプログラムがお気に召したら、ウエブサイトの立ち上げを「催促」されたい。
この記事は問題解決のため書いた。−−家内は読書をするとき、分からない言葉の意味を私に聞く。ノートパソコンが膝に載っていると、立ち上がって本棚に行き、辞書を引き出してペイジをめくるのは面倒だ。だが、ウェブスターの1913年版が /usr/share/dicに入っている。使わない手はない。
以下は公開ドメインの"Webster's 1913 Dictionary."上に、辞書調査入力をおこなうスクリプトだ。このファイルはネット上の至る所、中でもProject Gutenbergにダウンロードすることが出来る。10メガ余りで働くが、オンラインでなく調査が出来るのが良い。
スクリプトは、私の"Advanced Bash Scripting Guide" (http://www.tldp.org/LDP/abs/)の更新に掲載するが、先ず試みられたい
I'll be putting the script into the next update of my "Advanced Bash Scripting Guide" (http://www.tldp.org/LDP/abs/), but you guys get first
shot at it.
============================================================
#!/bin/bash
# dict-lookup.sh
# 作者r: Mendel Cooper
# バージョン: 1.0 [07 March, 2005]
# ライセンス: GPL
# このスクリプトhはWebster辞書1913年版の定義を調査する.
# この Public Domain dictionaryはダウンロードで入手することが出来る
#+ 各種サイトからダウンロードで入手することが出来る.
# それをこのスクリプトで使用する前に
#+ DOS から UNIX フォーマットに転換すること (行末の LF のみ)
# Store the file in plain, uncompressed ASCII.
# ファイル名とパスに下記の DEFAULT_DICTFILE 変数を設定.
E_BADARGS=65
MAXCONTEXTLINES=50 # 表示最大行数
DEFAULT_DICTFILE="webster1913-dict.txt" # 規定値辞書ファイル name/path.
# 必要に応じて変更.
# 注記:
# ----
# Websterの1913年版は
#+ 各記載項目が大文字ではじまる
#+ (残りは小文字).
# 各項目の1行目だけ次のようにはじまるので、
#+ 下の検索アルゴリズムが働く.
if [[ -z $(echo "$1" | sed -n '/^[A-Z]/p') ]]
# 少なくとも調査する単語を指定し
#+ それは大文字で始めなければならないr.
then
echo "Usage: `basename $0` Word-to-define [dictionary-file]"
echo
echo "Note: Word to look up must start with capital letter,"
echo "with the rest of the word in lowercase."
echo "--------------------------------------------"
echo "Examples: Abandon, Dictionary, Marking, etc."
exit $E_BADARGS
fi
if [ -z "$2" ] # 別の辞書を指定してもよい.
then
dictfile=$DEFAULT_DICTFILE
else
dictfile="$2"
fi
# ---------------------------------------------------------
Definition=$(fgrep -A $MAXCONTEXTLINES "$1 \\" "$dictfile")
# Definitions in form "Word \..."
#
# また "fgrep" は大きいテキストファイルであっても
#+ 十分に速く検索する.
#ここで、定義ブロックだけを切り取る.
echo "$Definition" |
sed -n '1,/^[A-Z]/p' |
# 出力の1行目から
#+ 次の項目の1行目までをプリント.
sed '$d' | sed '$d'
# 出力の最後の2行を削除
#+ (blank line and first line of next entry).
# ---------------------------------------------------------
exit 0
# 推薦する変更:
# --------------
# 1) 任意の型のアルファベット入力を受けるよう変更し
# + (大文字、小文字、混合文字)それらを
# + 処理が受け入れるフォーマットに転換する.
# 18-20行を参照。
#
# 2) スクリプトをGUI アプリケーションに転換する
# + "gdialog" . . .のような何かを用いる
# この時スクリプトは最早アーギュメントを
# + コマンド行から受け取らない.
選択とは、どんなに機知に富んだ人でも例証し損ねる無数の英単語の一つだ。個人の「選択」の基礎になる理由付けは応用科学でも、経済学でも、論理学でも、政治学でも、社会学でも、ほとんど答えられていない。選択とは本当は何なのだろうか?どのよう定義することが出来るのだろうか?一つの選択を他と区別する秘密は何か?哲学的に、メタ心理学的に、又は実用的に答えることの出来ない疑問が幾つかある。この記事では、人間の本性をほのめかすことにより個人の選択が曇らされている例証を述べる。
二、三日前、古い友人に会った。彼は30才で、社会の評判も良く私の市の有名大学で工学博士の課程を修めている。(ビールを飲みながら)1時間ほどお喋りをしたが、最後にGNU哲学、Linux、フリー(オープンソース)ソフトウエアの運命が話題になった。彼は偶々色々な形のフリー(オープンソース)ソフトウエアしか使わないユーザだった。「ノー・マイクロソフト、ノー・営利ライセンス」が彼の持論だ。最後に話題が「選択」になった。私は聞いた「だが、デスクトップにはインテルのCPUを使っているだろう?それは営利商品だ。基礎になるハードウエアがフリーでない限り『ライセンスから完全に解放されている』とは言えない。どうだ?君の『選択の選択』自体が矛盾していないか」彼は冷静に答えた「当たり前だ。全部、日頃の行動を正当化するための選択の問題だ。だが、説明は出来ない。出来るのは、自分のコンピュータの一部はフリーで他はそうでないと了解した上で自分の選択に満足することだ」。そこで話は終わって別れた。
一連の選択肢があるとき、人々が行う特定の選択を例証しようとして、この記事を書くことにした。例としてコンピュータを取り上げる。基本的ハードウエア部品は全部商品だ(商品と言うとき、商業特許によりライセンスされる商品を指す)。ここで個人の選択の余地は極めて少ない。CPUをインテルにするかAMDにするか、他にあればそれにするかだ。重要なのは、個人に与えられる選択は既に決まっていて、あるのは商業的にライセンスされたものだ。自分のハードウエアを生かすためOSを選ぶのに、個人は二つのうち一つから選ばなければならない。商業的ライセンスのOS(Microsoft Windows, Apple Inc. Mac OSなど)か、フリーOS(FreeBSD, OpenBSD, NetBSD, Linux など)かだ。ここでも、色々な選択肢はあるが、限られている。その上、選択は不完全だ。あらゆる種類の商業的ライセンスは疑いもなく少数の人権を誤用している(個人の選択を少数に限るか、場合によっては単一選択にする)が、無料ダウンロード、無料改良更新、魅力的な加入権選択が出来るなどの利便も与える。したがって、一方では有害だが、一方では有益である。その軽い頭にはあらゆる種類のハードウエア/ソフトウエア関連の商業的ライセンスの害以外には何も見えないStallmanのような自己満足の理想家を除いて、多くの社会に取っては特定のライセンスを用いる効果の方に重要な意味がある。重要なのは「知識の収集」であって「その獲得方法」ではない。同じことがライセンスにも当て嵌まる。我々がコンピュータ・システムを持つとき、理想的は個人が生産高、つまりそのコンピュータを使って成し遂げる仕事、を考えるのであって、関係するソフトウエア/ハードウエアのライセンスではない。したがって、(観念的で哲学的に)知識が重要なのであって、「超知識」即ち知識に関する知識ではない。
誰かが、市場で手に入るハードウエア/ソフトウエア・ライセンスの入手が心を悩ますと判断するとき、その瞬間に知識の取得は存在を停止する。このとき人々は超知識取得の新たな征服を始める。理解すべき重要な点は、人々は知識の所有だけで存在し仕事を完成することが出来るけれども、超知識は彼らの知識に対する追加分で、役には立つが必須ではないと言うことである。この感覚は科学の少数部門では「内包」と呼ばれるであろうが、超知識の存在/不存在は内包と根本的に異なる。
そこで、フリー・ライセンスのソフトウエアを考える。(市販ソフトウエアに比べて)与えられる知識は同じであっても、超知識を考えるとき大きな相違がある。ソフトウエアに含まれるコードは、個人が自由に自分の希望に合わせられる。これはフリー・ライセンスに直結するけれども、特定の課題を満足させるための直接必須要件ではない。電子メールを書くためインターネットを探ろうと決心する人は、ブラウザとしてMicrosoft Internet ExplorerかMozillaか何れかを選ぶ。何れのソフトウエアを使っても結果は同じだが、超知識は異なる。このように、ソフトウエアの存在に関する知識は直接の要求であるが、そこに含まれるコードに関する超知識は異なる。個人又は団体のため商品の選択をこの観点で見るとき、フリー哲学は無用であることを自ら明らかにする。
結論
この記事は、与えられる選択の組としてフリー又は商業的ライセンスのソフトウエアを使用する極端な問題ではなく、「与えられる選択の組」に関し知識ベース又は超知識ベースの角度から判定するときの全体としての各種選択を扱う。このような角度から見るとき、ソフトウエアライセンスの両方の型は直接免責に連結している。ソフトウエア・プログラム選択の間、必須の正当化は、超知識ではなく「知識探求」の過程の直接充足でなければならない、知識に付いての知識は、着手した仕事が充足されたら、その後に取得することが出来る。知識の充足がなくては超知識自体が無用だからである。
著者について
Subhasish Ghosh は、モスコー電力工学研究所(技術大学)の「情報コンピュータ科学」四年生である。彼は、MCP, MCSD, MCSEその他産業レベルの技術/非技術の各種資格を持っている。 古典英文学、経済學の読書、執筆に興味がある。オックスフォード大学の経済学修士を申請中。ご意見やご質問はsubhasish_g@rediffmail.comに電子メールを頂きたい。
個人/団体が与えられた選択肢からの選択を考える根拠となる「効果」の角度から見るとき、リンゴに関する超知識、つまり国産か輸入かなど、は役に立たない。重要なのは「生存に必要な55カロリーがリンゴに含まれているか」だからである。「何処の産物か」により追加の選択をしても、直接にはリンゴに結びつかない。例えば、リンゴを食べた後で、リンゴはなくなるが「何処の産物か」の問題は残る。このように、これは手順に役立たないことを自ら示す。
インターネット・サーフを計画するとき、直接の意味は「インターネットをサーフする」であって、「インターネットのサーフに役立つ変更をすることの出来るソフトウエアの中のコード」ではない。全くその通りなのだが、人は、それに制御されるのではなく自分がそれを制御する商品を所持しているとの感覚を持っているとき、「自由」と「安全」の感覚を大切にする傾向がある。このような角度から、このリンゴは「何処の産物か」が改めて重要になる。どちらの角度が適切かは言えない。理想主義者に取っては二番目の角度が好ましいが、私のような実存主義者は、最初のものを好む。
生 Linux CD の作成−BusyBoxとOpenSSHを含む
Mike Chirico (mchirico@users.sourceforge.net) or (mchirico@comcast.net)
Copyright (c) 2005 (GPU Free Documentation License)
最新更新:2005年3月11日 03:22:50米国東部標準時、 本文書の最新版は:
生 Linux CD の作成−BusyBoxとOpenSSHを含む
これらのステップは、最新2.6 KernelのLinux システムをソースからコンパイルして作る方法と、DHCPのインストレーションを含めてBusyBoxユティリティを統合する方法を示す。それに、このCDベースのシステム上でOpenSSHをコンパイルする方法を示す。システム立ち上げに際して、ファイルシステムが作られCDからの内容を解凍して完全にRAMにロードする−この時点でCDは 別のコンピュータ立ち上げのため取り出すことが出来る。残りの機能システムは完全ssh能力を有する。任意のPCを採用することが出来る。勿論、適切なドライバを用いてkernelをコンフィギュアし、PCはCDから立ち上げることが出来ることが必要だが。
このシステムは、自分の選択するパケージに多くのコンパイルの余地を残す。OpenSSHインストールに用いる技術は、別のパケージにも使用することが出来る。手順をりかいすると、自分のシステムを自由に作ることが出来る。
迅速インストール: 全部が働く確認を得る
迅速ステップ 1:
"cdrom_linux_boot_proj1.iso" をダウンロードして、このisoをcdromに焼き付ける。次にシステムを再起動する。これは、必要なネットワーク、ビデオ、キイボード(USBを含む)ドライバとともに、現在のkernelがコンパイルされていることを見る点検だ。重要なドライバが認識されないときは、kernelに追加することが出来る。
迅速ステップ 2:
完全なプロジェクト環境 "proj1.tar.gz." をダウンロードする。これには、BusyBoxソース、ライブラリ、sshを初め "cdrom_linux_boot_proj1.iso" を構築してカスタム化するのに使用するもの全部が含まれている。ディレクトリ "_install" にssh、init、tcpdumpのため必要なライブラリが含まれる。2.6.11 kernel ".config" はdocumentsディレクトリにある。staging areaに、isolinuxブートローダと一緒にkernel bzImageのコピイが含まれている。 "proj1.tar.gz" ファイルは、kernelソースを除いて必要なものを何も彼も含んでいるので、約13Mである。kernelソースは以下のリンクからダウンロードする:
Step 8 には最新kernelのコンフィギュレーションとインストレーションが含まれる。この段階で、プロジェクト環境 "proj1.tar.gz" を以下のリンクからダウンロードする:
必要なキャラクタとブロック・デバイス全部を入手するには、このファイルをルートとして "tar -xzf" しなければならない。標準ユーザアカウントは、必要なキャラクタとブロック・デバイス全部を作ることは出来ない。ルート特典のないアカウントの下で "tar -xzf" を試し、"_install/dev" の下に作られるファイルの相違を見られたい。
キャラクタ・デバイスとブロック・デバイスとの間の相違に興味のある人は、下記の Linux Journal 記事を参照されたい:
纏めると、テープ・ドライブがブロック・デバイス上に見出されるデータを収容することが出来るなど、ブロック・デバイスだけにファイルシステムを取り付けることが出来る。
ダウンロードの点検:
a.md5sum を点検して完全なコピイを入手したことを確認し、次いでパケージ
$ md5sum proj1.tar.gz
を "tar -xzf" する。
b.ここでルートとして、 "dev/" デバイス全部を入手するよう、次のコマンドを実行する
[Must be done as root]
$ su -
# cd <to project directory>
# tar -xzf proj1.tar.gz
上をルートとして行うと、次が得られる筈である:
[root@third-fl-71 _install]# ls -l dev
total 8
crw------- 1 root root 5, 1 Feb 25 20:41 console
lrwxrwxrwx 1 root root 11 Mar 6 09:22 core -> /proc/kcore
brw-rw-rw- 1 root floppy 2, 0 Feb 20 17:37 fd0
brw-rw---- 1 root disk 3, 0 Mar 5 04:32 hda
brw-rw---- 1 root disk 3, 1 Mar 5 20:37 hda1
brw-rw---- 1 root disk 3, 2 Mar 5 20:38 hda2
brw-rw---- 1 root disk 3, 3 Mar 5 21:02 hda3
brw-rw---- 1 root disk 3, 4 Mar 5 21:02 hda4
drwxr-xr-x 2 root root 4096 Mar 5 21:13 mapper
crw-rw-rw- 1 root root 1, 3 Feb 20 17:37 null
crw-rw-rw- 1 root tty 5, 2 Feb 26 12:54 ptmx
drwxr-xr-x 2 root root 4096 Mar 4 05:33 pts
brw------- 1 root disk 1, 0 Feb 20 17:37 ram0
brw-rw-rw- 1 root disk 1, 1 Feb 20 17:37 ram1
brw-rw-rw- 1 root disk 1, 2 Feb 20 17:37 ram2
brw-rw-rw- 1 root disk 1, 3 Feb 20 17:37 ram3
crw-rw-rw- 1 root root 1, 8 Feb 26 03:23 random
brw-rw---- 1 root disk 8, 0 Mar 5 04:32 sda
brw-rw---- 1 root disk 8, 1 Mar 5 04:32 sda1
brw-rw---- 1 root disk 8, 2 Mar 5 04:32 sda2
brw-rw---- 1 root disk 8, 3 Mar 5 21:02 sda3
brw-rw---- 1 root disk 8, 4 Mar 5 21:02 sda4
lrwxrwxrwx 1 root root 15 Mar 6 09:22 stderr -> /proc/self/fd/2
lrwxrwxrwx 1 root root 15 Mar 6 09:22 stdin -> /proc/self/fd/0
lrwxrwxrwx 1 root root 15 Mar 6 09:22 stdout -> /proc/self/fd/1
crw-rw-rw- 1 root root 5, 0 Feb 21 18:32 tty
crw-rw-rw- 1 root root 4, 0 Feb 20 17:37 tty0
crw-rw-rw- 1 root root 4, 1 Feb 20 22:38 tty1
crw-rw-rw- 1 root root 4, 2 Feb 26 08:24 tty2
crw-rw-rw- 1 root root 4, 3 Feb 26 08:24 tty3
crw-rw-rw- 1 root root 4, 4 Feb 26 08:24 tty4
crw-rw-rw- 1 root root 4, 5 Feb 26 08:24 tty5
crw------- 1 root root 4, 6 Mar 1 19:34 tty6
crw-rw---- 1 root root 4, 7 Mar 1 14:33 tty7
crw-rw---- 1 root root 4, 8 Mar 1 14:33 tty8
crw-rw---- 1 root tty 4, 9 Mar 1 14:33 tty9
cr--r--r-- 1 root root 1, 9 Feb 26 03:23 urandom
crw------- 1 vcsa tty 7, 0 Mar 1 14:33 vcs
crw-rw-rw- 1 root root 1, 5 Feb 26 03:23 zero
標準アカウントを用いて上のステップを繰り返すと、多数のファイルがなくなる。
c.ファイル "proj1/createiso" を眺める。これは取付ポイント "./cdrom"を有するループバック・デバイス上にファイルシステムを作る。"_install" の内容をコピイする。これは必要なbusyboxコードを用いて既にコンパイルしてある。コピイしたら、"./cdrom" を取り外して圧縮出来るようにする。次いでこれはstaging areaにコピイされ、ここで "mkisofs" がブート可能CDイメージを作成する。ブートローダisolinuxは、必要なconfigファイルと一緒に、"proj1/staging_iso_image/boot/isolinux/"の中に見出すことが出来る。
上の課題を実行するバッシュスクリプト "createiso" を示す。
$ cd proj1
$ su
# ./createiso
"createiso" を見られたい。このバッシュスクリプトは仮想ファイルシステムを作成する。仮想ファイルシステム作成の詳細については、 Freshmeat 上の次の記事を参照されたい。 [ http://freshmeat.net/articles/view/1387/ ]
包括的指導: ダウンロード済みソースからすべてを構築する
成就の迅速インストールステップの結果を別個のディレクトリに保存して、以下の各ステップ完了後の結果と比較するとよい。
ステップ 1: BusyBoxのダウンロード
$ wget http://www.busybox.net/downloads/busybox-1.00.tar.gz
$ wget http://www.busybox.net/downloads/busybox-1.00.tar.gz.sign
$ md5sum busybox-1.00.tar.gz
次にファイルを拡張する:
$ tar -xzf busybox-1.00.tar.gz
注記: Erikのキイを検証するのであれば:
$ wget http://codepoet.org/andersen/erik/gpg.asc
$ gpg --import gpg.asc
$ gpg --verify busybox-1.00.tar.gz.sign
ここで、busybox-1.00.tar.gz.signの中をmd5sumについて眺める。 2.6 kernel を用いる(ステップ8参照)のと違っておこなっているのに注意。
ステップ 2: BusyBox のコンフィギュア
BusyBoxに関する私のconfigをダウンロードして ".config"と名称を変えるとよい。必要な機能を働かせている。
ダウンロードは下記から
http://prdownloads.sourceforge.net/souptonuts/chiricobusybox.config
$ cd busybox-1.00
[注記:別のミラーを選ぶ必要があるかも知れないのに注意]
$ wget http://osdn.dl.sourceforge.net/sourceforge/souptonuts/chiricobusybox.config
$ cp chiricobusybox.config .config
私が "make menuconfig" を走らせて設定したオプションをを見るか、又は "chiricobusybox.config" ディレクトリを見る。
$ make menuconfig
特に、"Support version 2.6.x Linux kernels" がチェックされる。"Login/Password Management Utilities" の下で、"Use internal password and group functions"を除いて、全部がチェックされる。この段階ではこのオプションを選ばない方が良い。 "/etc/passwd"、"/etc/shadow" 、"/etc/shadow-"が、 "_install/etc"ディレクトリにコンパイルされて代わりに使用されるからだ。
また、"lsmod", "modprobe", "rmmod"もチェックされる。初期の構築に必須ではないが、構築中のこのシステムは、ネットワーク作成をサポートする。勿論システムを走らせた後、結局、モジュール中でscpしてそれらをロードすることになる。
".config" を見た後、"make" と "make install" を走らせる。これは規定値で "_install" の下にすべてをインストールする。
$ make
$ make install
"make install" の最後の段階の間に、次のメッセージが表示される。
--------------------------------------------------
You will probably need to make your busybox binary
setuid root to ensure all configured applets will
work properly.
--------------------------------------------------
(コンフィギュアしたアプレット全部が正しく働くのを確実にするため、多分BusyBoxバイナリにルートをsetuid する必要がある)
各 "make install" を実行した後に次のコマンドを実行して、BusyBoxバイナリ上にルートをsetuidしなければならない。
$ chmod 4755 ./_install/bin/busybox
ステップ 3: 必要なディレクトリ
幾つかのディレクトリを "_install" の下に作る必要がある。今の内容を見る。
$ cd _install
$ ls
bin linuxrc sbin usr
次に、 "device entries" のため "dev" を作る。それらは後で次のコマンドを用い、"etc", "lib", "proc", "tmp", "var", "sys" などに居住させる。
$ mkdir -p dev sys etc/init.d lib proc tmp var/lib/misc var/lock var/log var/run var/tmp
$ chmod 1777 tmp
$ chmod 1777 var/tmp
ステップ 4: デバイス登録
"dev" ディレクトリはデバイス登録を用いて居住させる必要がある。これらは現在システムからコピイすることも出来るし "mknod -m " コマンドを用いて作ることも出来る。以下はルートとして行わなければならない。
沢山のファイルがあり、自分を "_install" に再構築する方が良いので、これらを一つのファイルに置くことを推奨する。以下では次の内容のファイル "createdev" が作られる:
#!/bin/bash
# put this in a file called createdev
#
cp -avp /dev/console dev
cp -avp /dev/core dev
cp -avp /dev/fd0 dev
cp -avp /dev/null dev
cp -avp /dev/ptmx dev
cp -avp /dev/pts dev
cp -avp /dev/ram0 dev
cp -avp /dev/ram1 dev
cp -avp /dev/ram2 dev
cp -avp /dev/ram3 dev
cp -avp /dev/random dev
cp -avp /dev/stderr dev
cp -avp /dev/stdin dev
cp -avp /dev/stdout dev
cp -avp /dev/tty dev
cp -avp /dev/tty0 dev
cp -avp /dev/tty1 dev
cp -avp /dev/tty2 dev
cp -avp /dev/tty3 dev
cp -avp /dev/tty4 dev
cp -avp /dev/tty5 dev
cp -avp /dev/tty6 dev
cp -avp /dev/tty7 dev
cp -avp /dev/tty8 dev
cp -avp /dev/tty9 dev
cp -avp /dev/urandom dev
cp -avp /dev/vcs dev
cp -avp /dev/zero dev
ここでこのコマンドを、"_install" におけるルートとして走らせる
$ su
# pwd
/home/chirico/busybox/busybox-1.00/_install
# chmod 700 createdev
# ./createdev
ここで "ls -al" コマンドが次の内容を示す。
# ls -l dev
total 4
crw------- 1 root root 5, 1 Feb 17 14:49 console
crw------- 1 root root 1, 6 Jan 30 2003 core
brw-rw---- 1 root floppy 2, 0 Jan 30 2003 fd0
crw-rw-rw- 1 root root 1, 3 Jan 30 2003 null
crw-rw-rw- 1 root root 5, 2 Mar 5 17:16 ptmx
drwxr-xr-x 2 root root 4096 Feb 17 09:48 pts
brw-rw---- 1 root disk 1, 0 Jan 30 2003 ram0
brw-rw---- 1 root disk 1, 1 Jan 30 2003 ram1
brw-rw---- 1 root disk 1, 2 Jan 30 2003 ram2
brw-rw---- 1 root disk 1, 3 Jan 30 2003 ram3
crw-r--r-- 1 root root 1, 8 Jan 30 2003 random
lrwxr-xr-x 1 root root 17 Mar 5 17:16 stderr -> ../proc/self/fd/2
lrwxr-xr-x 1 root root 17 Mar 5 17:16 stdin -> ../proc/self/fd/0
lrwxr-xr-x 1 root root 17 Mar 5 17:16 stdout -> ../proc/self/fd/1
crw-rw-rw- 1 root root 5, 0 Mar 3 21:20 tty
crw--w---- 1 root root 4, 0 Jan 30 2003 tty0
crw------- 1 root root 4, 1 Feb 17 14:49 tty1
crw------- 1 root root 4, 2 Feb 17 14:49 tty2
crw------- 1 root root 4, 3 Feb 17 14:49 tty3
crw------- 1 root root 4, 4 Feb 17 14:49 tty4
crw------- 1 root root 4, 5 Feb 17 14:49 tty5
crw------- 1 root root 4, 6 Feb 17 14:49 tty6
crw--w---- 1 root root 4, 7 Oct 24 2003 tty7
crw--w---- 1 root root 4, 8 Jan 30 2003 tty8
crw--w---- 1 root tty 4, 9 Jan 30 2003 tty9
crw-r--r-- 1 root root 1, 9 Feb 17 14:49 urandom
crw--w---- 1 vcsa tty 7, 0 Jan 30 2003 vcs
crw-rw-rw- 1 root root 1, 5 Jan 30 2003 zero
これらのファイルは全部 "mknod" を用いて作られた可能性がある。上の中程から下にある "tty" を見ると、これは5の主番号と0の副番号を持つ文字デバイスである。 rw-rw-rwの権利を有する。したがって、この "tty" デバイスはコマンド "mknod -m 666 dev/tty c 5 0"により作られた可能性がある。
したがって、ディスク・ドライブ、 ide (hda)とscsi (sda)を取り付けるときは、次のコマンドを考慮に入れなければならない:
mknod -m 660 dev/hda b 3 0
mknod -m 660 dev/hda1 b 3 1
mknod -m 660 dev/hda2 b 3 2
mknod -m 660 dev/hda3 b 3 3
mknod -m 660 dev/hda4 b 3 4
chown root.disk dev/hda*
mknod -m 660 dev/sda b 8 0
mknod -m 660 dev/sda1 b 8 1
mknod -m 660 dev/sda2 b 8 2
mknod -m 660 dev/sda2 b 8 3
mknod -m 660 dev/sda2 b 8 4
chown root.disk dev/sda*
PCをCDから起動した後、ディレクトリを取付ポイント "mkdir /h" として作ってから、これらのデバイスを取り付けることがことが出来る。このときこれは "mount -t ext2 /dev/hda2 /h" として取り付けられる。
ボリューム・グループを作ることも可能である。
mkdir -p dev/mapper
mknod -m 600 dev/mapper/VolGroup00-LogVol00 b 253 0
mknod -m 600 dev/mapper/VolGroup00-LogVol01 b 253 1
chown -R root.root dev/mapper
ディレクトリ "/v1" を作る。
mkdir -p /v1
このVolGroup は、多分取付ポイント "/v1" を作ってから行うことにより ext3 として取る付けられる。こととき "mount -t ext3 /dev/VolGroup00/LogVol01 /v1" となる。だが、kernelモジュールにロードするには、特に "# LVM2 initializtion" セクションの下に、適切なデバイス・ドライバと、 "/etc/rc.sysinit" の中の必要なコンフィギュレーションが必要である。これら全部は、この記事の将来の更新で論じる。
ステップ 5: 必要なファイルとディレクトリ("etc" と "var" の中のファイルとディレクトリ)
必要なファイルを "etc" の中に作る。この時点でルートの外に出て、システム "/etc" を上書きする機会がないようにする。 "/" がないだけでも悲劇になることに注意。警告: "/" で始まるディレクトリは現在走っているシステムなので、これには絶対に書き込まないこと。
[Exit out of root]
下記に "etc/passwd" ファイルを示す。ssh デーモンが走るので、そのためのアカウントが作られる。ログインのため sshd が "/bin/false" に設定されるのに注意。
[etc/passwd]
root:x:0:0:Linux User,,,:/root:/bin/sh
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/bin/false
下の "root" と "sshd" がグループに追加されている。
[etc/group]
root:x:0:root
sshd:x:74:
その下には、アカウント・ルートのためのパスワードがあることに注意。この暗号パスワードは "root" である。現存アカウント・パスワードを "/etc/shadow" と "/etc/shadow-" からコピイして自分のパスワードを作ることが出来る。アカウント "sshd" はパスワードとして "*" を持たなければならない。
[etc/shadow]
root:$1$$oCLuEVgI1iAqOA8pwkzAg1:12439:0:99999:7:::
sshd:*:11880:0:99999:7:-1:-1:0
[etc/shadown-]
root:$1$$hCYnkWaG0VVCE9xJiIJwU/:12439:0:99999:7:::
sshd:*:11880:0:99999:7:-1:-1:0
sshdに関する面白い質問:コンピュータにsshするとき何故 "/dev/pts" が必要なのか?確信がなければ、この行を削除して、sshを入れようとするとき、コマンド "ps aux" の結果を観測する。
[etc/fstab]
/dev/ram0 / ext2 defaults 0 0
proc /proc proc defaults 0 0
sysfs /sys sysfs defaults 0 0
none /dev/pts devpts gid=5,mode=620 0 0
initプログラムによりファイル "etc/inittab" が呼び出される。BusyBoxではラン・レベルがない。"tty2::respawn:/sbin/getty 38400 tty2" の行により、 "ctl-alt-F2" を入力してログイン画面を得ることが出来る。
[etc/inittab]
# This is run first except when booting in single-user mode.
#
::sysinit:/etc/init.d/rcS
#
#
::respawn:/sbin/getty 38400 tty1
#
# /sbin/getty invocations for selected ttys
#
#tty1::respawn:/sbin/getty 38400 tty1
tty2::respawn:/sbin/getty 38400 tty2
tty3::respawn:/sbin/getty 38400 tty3
tty4::respawn:/sbin/getty 38400 tty4
tty5::respawn:/sbin/getty 38400 tty5
tty6::respawn:/sbin/getty 38400 tty6
tty7::respawn:/sbin/getty 38400 tty7
tty8::respawn:/sbin/getty 38400 tty8
tty9::respawn:/sbin/getty 38400 tty9
#
#
# Example of how to put a getty on a serial line (for a terminal)
#
#::respawn:/sbin/getty -L ttyS0 9600 vt100
#::respawn:/sbin/getty -L ttyS1 9600 vt100
#
# Example how to put a getty on a modem line.
#::respawn:/sbin/getty 57600 ttyS2
#
# Stuff to do when restarting the init process
::restart:/sbin/init
#
# Stuff to do before rebooting
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount -a -r
::shutdown:/sbin/swapoff -a
上で、"inittab" が "etc/init.d/rcS" を呼び出すのに注意。ramドライブを取り付けなければならない。さもないと読取専用になる。また、システム起動のとき、DHCPが有効になる。コンピュータをネットワークに接続しないのであれば、これをコメントアウトする。こらが繰り返しIPアドレスを取得しようとするからだ。また、正しいNIC(ネットワーク・インターフェイス・カード)が見付からないときは、メッセージが氾濫する。
[etc/init.d/rcS]
#!/bin/sh
/bin/mount -a
# below getting rid of ram being mounted ro
/bin/mount -o remount /
#
# The following is for dhcp
#
ifconfig eth0 0.0.0.0
/sbin/udhcpc
#
# Instead, if you want static IP address
#
#ifconfig eth0 192.168.1.13 netmask 255.255.252.0
#route add default gw 192.168.1.1
#
# Run ssh daemon
/sbin/sshd
以下のファイルは、ライブラリ /lib/libnss_* とともにパスワード認証のため必要である。GNU Libc (glibc)の現行バージョンは Name Service Switch (NSS)を用いているからである。このファイルは、多分自分のシステムの "/etc/nsswitch.conf" ファイルからコピイすることが出来る。システムにこのファイルがないときは、"proj1.tar.gz" から必要なファイルを取る。
[etc/nsswitch.conf]
#
# /etc/nsswitch.conf
#
# An example Name Service Switch config file. This file should be
# sorted with the most-used services at the beginning.
#
# The entry '[NOTFOUND=return]' means that the search for an
# entry should stop if the search in the previous entry turned
# up nothing. Note that if the search failed due to some other reason
# (like no NIS server responding) then the search continues with the
# next entry.
#
# Legal entries are:
#
# nisplus or nis+ Use NIS+ (NIS version 3)
# nis or yp Use NIS (NIS version 2), also called YP
# dns Use DNS (Domain Name Service)
# files Use the local files
# db Use the local database (.db) files
# compat Use NIS on compat mode
# hesiod Use Hesiod for user lookups
# [NOTFOUND=return] Stop searching if not found so far
#
# To use db, put the "db" in front of "files" for entries you want to be
# looked up first in the databases
#
# Example:
#passwd: db files nisplus nis
#shadow: db files nisplus nis
#group: db files nisplus nis
passwd: files
shadow: files
group: files
#hosts: db files nisplus nis dns
hosts: files dns
# Example - obey only what nisplus tells us...
#services: nisplus [NOTFOUND=return] files
#networks: nisplus [NOTFOUND=return] files
#protocols: nisplus [NOTFOUND=return] files
#rpc: nisplus [NOTFOUND=return] files
#ethers: nisplus [NOTFOUND=return] files
#netmasks: nisplus [NOTFOUND=return] files
bootparams: nisplus [NOTFOUND=return] files
ethers: files
netmasks: files
networks: files
protocols: files
rpc: files
services: files
netgroup: files
publickey: nisplus
automount: files
aliases: files nisplus
このファイルは、ルート・ログインを許すデバイス名を含む。これで、ルートがテストのため多くの能力を持つ理由が理解出来る。"vc/1","vc/2" はコンソールをあらわす。
[etc/securetty]
console
tty
vc/1
vc/2
vc/3
vc/4
vc/5
vc/6
vc/7
vc/8
vc/9
vc/10
vc/11
tty0
tty1
tty2
tty3
tty4
tty5
tty6
下記は最低限のホストファイルである。DNSサーバなしでローカルLANを走らせているときは、追加の名称を付加する。注記:ローカルホストを呼び出して何も起こらないときは、lo を "ifconfig lo 127.0.0.1".とコンフィギュアする必要がある。何処に何が定義されているか分からないときは "ifconfig" がリストを示す。
[etc/hosts]
127.0.0.1 localhost
# Additional names can be added
#192.168.1.106 squeezel
以下はBusyBoxの最小conf. である。
[etc/busybox.conf]
[SUID]
su = ssx root.0 # applet su can be run by anyone and runs with euid=0/egid=0
su = ssx # exactly the same
dhcp経由でIPアドレスを取得するには以下を用いる。ここでの重要な設定はインターフェイスで、これは "eth0" に設定しなければならない。dhcpアドレス取得のための BusyBox規定値スクリプトは "_install/usr/share/udhcpc/default.script" を走らせることである。注記: "etc/init.d/rcS" が起動に際して "/sbin/udhcpc" を走らせる。これを削除して代わりにスタチックIPアドレスを指定することが出来る。
[etc/udhcpd.conf]
# Sample udhcpd configuration file (/etc/udhcpd.conf)
# The start and end of the IP lease block
# The interface that udhcpd will use
interface eth0 #default: eth0
# The maximim number of leases (includes addressesd reserved
# by OFFER's, DECLINE's, and ARP conficts
#max_leases 254 #default: 254
# If remaining is true (default), udhcpd will store the time
# remaining for each lease in the udhcpd leases file. This is
# for embedded systems that cannot keep time between reboots.
# If you set remaining to no, the absolute time that the lease
# expires at will be stored in the dhcpd.leases file.
#remaining yes #default: yes
# The time period at which udhcpd will write out a dhcpd.leases
# file. If this is 0, udhcpd will never automatically write a
# lease file. (specified in seconds)
#auto_time 7200 #default: 7200 (2 hours)
# The amount of time that an IP will be reserved (leased) for if a
# DHCP decline message is received (seconds).
#decline_time 3600 #default: 3600 (1 hour)
# The amount of time that an IP will be reserved (leased) for if an
# ARP conflct occurs. (seconds
#conflict_time 3600 #default: 3600 (1 hour)
# How long an offered address is reserved (leased) in seconds
#offer_time 60 #default: 60 (1 minute)
# If a lease to be given is below this value, the full lease time is
# instead used (seconds).
#min_lease 60 #defult: 60
# The location of the leases file
#lease_file /var/lib/misc/udhcpd.leases #defualt: /var/lib/misc/udhcpd.leases
# The location of the pid file
#pidfile /var/run/udhcpd.pid #default: /var/run/udhcpd.pid
# Everytime udhcpd writes a leases file, the below script will be called.
# Useful for writing the lease file to flash every few hours.
#notify_file #default: (no script)
#notify_file dumpleases # <--- usefull for debugging
# The following are bootp specific options, setable by udhcpd.
#siaddr 192.168.0.22 #default: 0.0.0.0
#sname zorak #default: (none)
#boot_file /var/nfs_root #default: (none)
# The remainer of options are DHCP options and can be specifed with the
# keyword 'opt' or 'option'. If an option can take multiple items, such
# as the dns option, they can be listed on the same line, or multiple
# lines. The only option with a default is 'lease'.
"who" コマンドのためutmpをコピイする。
$ cd proj1/_install/var/run/
$ cp -pav /var/run/utmp .
ステップ 6: ライブラリ
このコンフィギュレーションは GNU Libc (glibc)を使用する。対照的に、"uClibc" は小型でsshを用いてセットアップするのが容易である。 "getpwname" に対するC呼出をおこなうssh又はプログラムはどれでも、適切なName Service Switch (NSS)がコピイされていないと、glibcの下で不具合になるからである。具体的には、"/etc/nsswitch.conf", と "/lib/libnss_*" をコピイしなければならない。さもないと単純なsshコマンドを走らせるとき次のエラーを生じる。
$ ssh
you don't exist, go away!
"etc/passwd", "etc/shadow", "etc/shadow-" がある場合でも、このエラーが出ることがある。getpwname は "passwd" から正しい名称を引き出せないためである。この動作を試すプログラム見本を示す。この動作に興味があれば、次のリンクにあるプログラム "getpwuid.c"を参照されたい。[ http://prdownloads.sourceforge.net/cpearls/simple_but_common_cpp.tar.gz ]
大部分について、"ldd" コマンドを送ることによりどのライブラリがプログラムに動的にリンクされてを見出すことが出来る。
$ ldd /usr/bin/ssh
libcrypto.so.4 => /lib/libcrypto.so.4 (0x003b8000)
libutil.so.1 => /lib/libutil.so.1 (0x00dee000)
libz.so.1 => /usr/lib/libz.so.1 (0x00827000)
libnsl.so.1 => /lib/libnsl.so.1 (0x00d9b000)
libcrypt.so.1 => /lib/libcrypt.so.1 (0x06182000)
libselinux.so.1 => /lib/libselinux.so.1 (0x00db3000)
libgssapi_krb5.so.2 => /usr/lib/libgssapi_krb5.so.2 (0x00d28000)
libkrb5.so.3 => /usr/lib/libkrb5.so.3 (0x00c95000)
libk5crypto.so.3 => /usr/lib/libk5crypto.so.3 (0x00cfc000)
libcom_err.so.2 => /lib/libcom_err.so.2 (0x00c90000)
libresolv.so.2 => /lib/libresolv.so.2 (0x00966000)
libc.so.6 => /lib/tls/libc.so.6 (0x00607000)
libdl.so.2 => /lib/libdl.so.2 (0x00758000)
/lib/ld-linux.so.2 (0x005ee000)
上で分かるように、sshが必要とするライブラリ全部がここにある。しかし、 "/lib/libnss_*" に関するリストがないため、ここでも少し間違った方向に導かれることがある。
動的ライブラリは全部コピイする必要がある。以下にコピイするライブラリ全部を示す。これらをシステムから又はproj1 開発者環境からコピイしなければならない。
$ cd <into the proj1 directory>
$ find . -iname '*\.so\.*'
./_install/usr/lib/libz.so.1
./_install/usr/lib/libkrb5.so.3
./_install/usr/lib/libgssapi_krb5.so.2
./_install/usr/lib/libk5crypto.so.3
./_install/lib/libutil.so.1
./_install/lib/libacl.so.1
./_install/lib/libcrypt.so.1
./_install/lib/libselinux.so.1
./_install/lib/libpam.so.0
./_install/lib/libcrypto.so.4
./_install/lib/libdl.so.2
./_install/lib/ld-lsb.so.1
./_install/lib/libcom_err.so.2
./_install/lib/libnss_dns.so.1
./_install/lib/libpam_misc.so.0
./_install/lib/libnsl.so.1
./_install/lib/tls/libc.so.6
./_install/lib/libm.so.6
./_install/lib/libnss_files.so.2
./_install/lib/libattr.so.1
./_install/lib/libnss_dns.so.2
./_install/lib/ld-linux.so.2
./_install/lib/libnss_files.so.1
./_install/lib/libresolv.so.2
ステップ 7: SSH のコンパイルとコンフィギュア
sshをダウンロードしてconfigureしmakeする。次に、ファイル全部を、キイ、config、又は稼働中環境にインストールされているファイルを変えることなくそれぞれの "_install/*" ディレクトリにインストールしなければならない。更に、ライブラリ全部を正しくリンクする必要がある。基本的に、これは "chroot" 環境内で "make install" を走らせることを意味する。だが、 "chroot" すると "/bin/bash" を見出すことが出来ない。それに、makeを必要とするライブラリが少数ある。
opensshの最新版をダウンロードする。署名キイを点検しなければならないことに注意。
$ wget http://mirror.mcs.anl.gov/openssh/portable/openssh-3.9p1.tar.gz
[**** 特別セキュリティ・ノート ****]
一般的に、信用ある署名を用いてキイを検証するのが良い。ここでは述べないが、次の様なものになる。gpgを必要とする。参考文献のLinux ヒントを見ること
$ wget http://mirror.mcs.anl.gov/openssh/portable/openssh-3.9p1.tar.gz.sig
$ wget http://mirror.mcs.anl.gov/openssh/portable/DJM-GPG-KEY.asc
$ gpg --import DJM-GPG-KEY.asc
$ gpg --verify openssh-3.9p1.tar.gz.sig openssh-3.9p1.tar.gz
[**** 特別セキュリティ・ノート 終わり*]
ダウンロードした "proj1" ディレクトリで作業をしているときは、既存sshファイルを削除する必要がある。
$ cd proj1
$ find _install/usr/ -iname 'ssh*' -exec rm -f {} \;
$ find _install/etc/ -iname 'ssh*' -exec rm -f {} \;
$ find _install/bin/ -iname 'ssh*' -exec rm -f {} \;
$ find _install/sbin/ -iname 'ssh*' -exec rm -f {} \;
ファイル "proj1/removeSSH" を参照。
注記:これは "proj1/_install" ディレクトリをルートとしておこなう。
$ su -
$ cd proj1/_install
$ cp <location of openssh> .
$ tar -xzf openssh-3.9p1.tar.gz
$ cd openssh-3.9p1
$ ./configure --prefix=
これは以下を残す筈。ディレクトリを何も規定しないで "--prefix=" を使うときユーザ・バイナリと「システム・バイナリ」の位置に注意。
OpenSSH が次のオプションを用いてコンフィギュアされた:
ユーザ・バイナリ: /bin
システム・バイナリ: /sbin
コンフィギュレーション・ファイル: /etc
Askpass プログラム: /libexec/ssh-askpass
マニュアル: /man/manX
PID ファイル:: /var/run
特権分離 chroot パス:: /var/empty
sshd デフォルト・ユーザPATH: /usr/bin:/bin:/usr/sbin:/sbin
マニュアル書式: doc
PAM サポート: no
KerberosV サポート: no
スマートカード・サポート: no
S/KEY サポート: no
TCP ラッパー・サポート: no
MD5 パスワード・サポート: no
$DISPLAY ハックにおけるIPアドレス: no
v6 ハックにおけるv4翻訳: yes
BSD 認証サポート: no
乱数源: OpenSSL internal ONLY
ホスト: i686-pc-linux-gnu
コンパイラ: gcc
コンパイラ・フラッグ: -g -O2 -Wall -Wpointer-arith -Wno-uninitialized
プロセッサ・フラッグ:
リンカー・フラッグ:
ライブラリ: -lcrypto -lutil -lz -lnsl -lcrypt
ここで make を走らせる。
$ make
少数のファイルを変更する必要がある。これは現行ディレクトリを"_install/openssh-3.9p1"と仮定する。
$ mv ../../_install/usr/bin/install ../../_install/usr/bin/installBB
$ cp /usr/bin/install ../../_install/usr/bin/.
これを終えたとき、"cd" をして現行ディレクトリを "_install" にする。
$ cd ..
ここで、"chroot" をする。
.
$ chroot . /bin/sh -i
BusyBox v1.00 (2005.02.21-00:50+0000) Built-in shell (ash)
埋込コマンドのリストを見るには 'help' と入力
$ cd openssh-3.9p1/
$ make install
上手くいったら、chrootからexit。
$ exit
$ mv usr/bin/installBB usr/bin/install
mv: overwrite `usr/bin/install'? y
$ rm -rf openssh-3.9p1*
この時点で "etc" に対する正しいリファレンスを有する sshと、その他ファイル全部がインストールされている筈。
ステップ 8: Linux Kernelのコンパイル
更新毎にkernel全部をダウンロードする必要はない。注記: "linux-2.6.11.tar.gz" と共に、パス "patch-2.6.11.bz2" もある。このパスは、既にそれをダウンロードしていると仮定して "linux-2.6.10" kernelに適用される。
ダウンロードされたkenelがないと仮定する。
$ wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.11.tar.gz
$ wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.11.tar.gz.sign
次に、正しいキイを捕まえて署名を検証する。
$ gpg --keyserver wwwkeys.pgp.net --recv-keys 0x517D0F0E
$ gpg --verify linux-2.6.11.tar.gz.sign linux-2.6.11.tar.gz
この時点で、ソースコードが有効であることが分かる。"tar.gz" を展開する。
$ tar -xzf linux-2.6.11.tar.gz
[*******特別注記 - 2.6.10 kernel ソースがあるとき? ********]
この場合は、インストールする必要のあるもの全部は "patch-2.6.11.bz2" である。これは、 ".config" 設定をほぞんするので、好適な方法である。
$ wget http://www.kernel.org/pub/linux/kernel/v2.6/patch-2.6.11.bz2
$ wget http://www.kernel.org/pub/linux/kernel/v2.6/patch-2.6.11.bz2.sign
$ gpg --verify patch-2.6.11.bz2.sign patch-2.6.11.bz2
$ cd linux-2.6.10 <-- note this is my existing source
$ bzip2 -dc ../patch-2.6.11.bz2 | patch -p1
$ cd ..
[************** 特別注記終わり *****************]
kernel ".config"によりコピイするか、又は ""cdrom_linux_boot_proj1.iso"" をダウンロードすることによりドライバ全部が自分のコンピュータに見出されるかを見るのが良い。
$ wget
$ make xconfig -- This will allow you to graphically look at all
the options.
$ make bzImage -- Only do this
$ cp arch/i386/boot/bzImage ${PROJDIR}/proj1/staging_iso_image/boot/isolinux/linux26
圧縮kernelイメージを作成するため、追加ドライバを付加するのが必要なことがある。自分の現行システムで使っているドライバ・モジュールをを見るには、"/etc/modprobe.conf"をチェックする。
$ cat "/etc/modprobe.conf"
...
alias eth0 tg3
...
上で 私の現行システム上のネットワーク・インターフェイスカード "eth0" がモジュールをロードしていることに注意。 kernel "Makefile's" 全部の中で "tg3" を探すと、その "CONFIG_TIGON3" がそのkernelにコンパイルされている筈だと分かる。
$ find . -iname 'Makefile' -exec grep -H 'tg3' {} \;
./drivers/net/Makefile:obj-$(CONFIG_TIGON3) += tg3.o
自分のデバイス・ドライバをチェックして ".config"ファイル内でそれらをyesに設定する。お分かりのように proj1 のため使用される ".config" はこのオプションをyesに設定すると、kernelがこれを起動するとき自動的に必要なネットワーク・ドライバを見付けるようになっている。これらのステップは、起動時に必要なNIC又は USBデバイスのどれにも実行しなければならない。
$ cat .config |grep 'CONFIG_TIGON3'
CONFIG_TIGON3=y
ステップ 9: ISOLINUX ブートローダ
これはブートローダである。これはCDから走らせる最初のプログラムである。
"proj1/staging_iso_image/" の中の以下のディレクトリ配置に注意。
$ cd proj1/staging_iso_image
$ tree .
.
`-- boot
`-- isolinux
|-- boot.cat
|-- isolinux.bin
|-- isolinux.cfg
|-- linux26
`-- menu.txt
ここには、 "isolinux" の下のファイル全部とともに、二つのディレクトリ "boot" と"isolinux" がある。各ファイルの説明を下記に示す。
boot.cat - El Torito 仕様は "boot catalog" が作られることを要求する
isolinux.bin - これは ISOLINUX ブートローダ・プログラムである
isolinux.cfg - 直ぐ下のディレクトリに示すようなkernelロードのため必要な命令を含むコンフィギュレーション・ファイルである。kernelはファイル"linux26"でkernelがロードされた後、圧縮イメージファイル"initrd.bin" が "/dev/ram0"上に取り付けられる。取付の後、プログラム "/sbin/init"がスタートする
default 1
prompt 1
timeout 300
display menu.txt
label 1
kernel linux26
append ramdisk_size=128000 initrd=initrd.bin init=/sbin/init root=/dev/ram0
label 2
kernel linux26
append ramdisk_size=128000 initrd=initrd.bin init=/sbin/init root=/dev/ram0 ramdisk_size=128000 vga=788
label 3
kernel linux26
append ramdisk_size=128000 initrd=initrd.bin init=/sbin/init root=/dev/ram0 ramdisk_size=128000 vga=791
linux26 - これは kernel image、即ち "make bzImage"の結果である
menu.txt - "isolinux.cfg" に規定されるメニューを直ぐ下に示す
メニュー選択オプション