OneCDLinux作成キット

Last-modified: 2009-12-19 (土) 00:02:30

(2008-4-15)自分でも内容を忘れ気味な状態なのでキットの公開を停止します。


初出 2006-8-18
最終更新 2007-8-2
開発時期 2004-1~
(2007-8-2) 下記構想を具現化しました。今度のはDebian用です。
Debian Linux の OneCD(ライブDVD)化手順
少なくとも本ページより、↑このページの方が遥かにお薦めです。
このページは削除しようかなと思っているくらいです。
 

(2007-7-29) 現在運用中のOneCDLinuxによるルータ兼ファイヤーウォールの更新に関しての構想を書きます。次のはメンテナンス性をより高くするためOneCD方式を廃止し、512M~1G程度のCF+CF-IDE変換アダプタもしくはUSBメモリを利用しようと思います。ただ単に不揮発性メモリをHDDの代わりにするだけでは面白くないので、ルートファイルシステムをラムディスクとするOneCD方式以来の方式は継続し、不揮発性メモリはメンテナンス目的以外では読み込み専用にしようと思います。これは不揮発性メモリの長寿命化を図るためでもあります。そもそもOneCD化をおこなったのは、静穏化と長寿命化(※)の為ですが、そのようなOneCD方式のメリットは、ほぼ維持したいと思います。その上で現在は母艦上でメンテナンス・CD再作成をおこなっていますが、次のはルータ単体でメンテナンスがおこなえるようにしたいと思います。
※:ハードディスク故障がない,電源はハードディスクに電気を供給しなくて済む為に相当劣化しても使用可能となる

 

(2007-5-7) RedHat EL 5がリリースされましたが、我が家のEL4系のルーターは安定しているので、今のところEL5で検証をおこなう予定はありません。キットは基本的にEL5でも使用できると思いますが、EL5で使うと不具合が発生する可能性も多分にあります。不具合の状況を教えて頂ければ対応版を公開する”かも”しれませんが、不具合を見つけた方がご自身で修正することを推奨します。当キットを使いこなせる人なら大抵は修正することも可能だと思います。当キットはその程度の代物です。

 

当ページではCDブート非対応のディストリビューション(現行バージョンが検証しているのはRedHat EL4系)がインストールされた環境を、OneCD Linux化するキットを公開しています。

 

私自身が実用しているルータ用に開発したものです。

 

2006-9-27 以下の説明中ではCentOS4.3で使用していると記述してありますが、現在はCentOS4.4で使用しています。キット自体に変更は生じていません。


概要

OneCDLinux作成キット(以降、本キット)は、UnionFS導入前のKnoppix程度の(今の目から見ると簡素な)技術を、通常のディストリビューション環境に導入して、OneCD化するキットです。

基本の使い方

1.1台で使う

OneCD化したいLinux環境が入ったPC上でOneCDLinuxのCD-Rを作成し、HDDを取り外してOneCD運用します。

2.母艦方式

OneCD化したいOS環境をそのまま別マシン(母艦)にコピーし、母艦上でCD-Rの作成、クライアントOSのアップデート、CD-Rの再作成等をおこないます。

 

OSアップデート等のメンテナンス面を考慮すると、2.の母艦方式がお薦めです。

技術的な説明

基本的な技術自体は他のOneCDLinuxとほぼ同等ですが、大きな違いもあります。
「通常のOSに適用するキット」という性格上、カーネルの再コンパイル無しにOneCD化する為に、cloop等の圧縮ファイルシステムを採用していません。

 

本キットの技術的な要点を以下にまとめておきます。

  • CD-Rには通常のOS環境の/以下が、ほぼ全部、そのまま読める形でコピーされる。
  • CD-Rトップディレクトリ直下にCDブート用のisolinuxディレクトリが作成される。
  • isolinuxディレクトリ内にカーネルとCDブート専用の特製initrd(イニシャルラムディスク)が収められる。
  • 特製initrd内のinitスクリプトは起動時に、ラムディスクを作成し、そこに書込みの必要なディレクトリを作成し、その中にCD-Rから中身をコピーする。書込みの必要のないディレクトリについては、ラムディスクからCD-R内のディレクトリへシンボリックリンクを張る。
  • initスクリプトの最後でラムディスクを/にswitchrootし、それ以降は元のディストリビューション本来の起動プロセスが実行される。

対応OS

クライアント

本キットは、2005年春以降、RedhatEL4系クローンOSであるCentOS4系の環境を対象に開発・検証しています。
RedhatEL4系OS以外にもFedora Core系の環境であれば、多少の単純な変更のみで本キットを適用できると思います。

母艦

クライアントほど厳密ではありません。しかし、母艦上での作業はchrootが必須なので、母艦OSはLinuxのみ可です。カーネル2.4系でも曲りなりに可ですが、出来る限り2.6系であることが望ましいです。

 

私が現在実用しているクライアント環境は、CentOS4.0で構築した後、母艦上でオフラインアップデートを繰り返して現在はCentOS4.3になっています。

制限

圧縮ファイルシステムを採用していない為、OneCD化する環境の容量は700Mバイト程度が限度となります。
※CD-R、CD-RWの容量で足りないのであれば、代わりにDVD-R、DVD-RWを使えば飛躍的に容量を増やすことができます。
※本キットはOneCDLinux作成キットと銘打っていますが、そのままでDVD-R、DVD-RWにも対応しています。

メリット

馴染みのディストリビューション(Redhat系)をそのままOneCD化できることです。

著作権

Copyright(C) by disklessfun 2005-2006

ライセンス

本キットはかなり不親切なキットですが、BSDライセンスとします。

ダウンロード

onecdlinux-kit-0.10.tar.gz

OneCD化作業

ある程度Linuxに詳しい人向けの説明です。
以下、OneCD化したい環境の/以下の容量が大きい人は適宜CDをDVDと読み替えて下さい。
CDやDVDを焼く為のパッケージをどの環境にインストールする必要があるか等の説明は省いてあります。

準備

適宜、必要であれば以下の作業をおこなって下さい。

  • 不必要なパッケージをアンインストールする(母艦上のchroot環境下でも可能)。
  • OneCD化したい環境を母艦にコピーする。
  • mkisofsパッケージをインストールする。
  • dvd+rw-toolsパッケージをインストールする。

キットを使う

  1. キットを解凍します。
    1台で使う、母艦方式で使う、何れの場合においてもOneCD化したい環境の/以下のどこかでキットを解凍します。
  2. configファイルを編集します。
    キット内にある環境設定ファイルconfig.inを自分の環境に合わせて編集します。
    通常はCUR_VER、CUR_NAME、EXC_PATH(CDに焼く対象から除外するパス)の設定値を修正すれば済むでしょう。
    ※CUR_NAMEの設定値はisoファイルのヴォリューム名やファイル名に使用されます。
    ※EXC_PATHには本キットのディレクトリのパスを設定します。母艦方式の場合、chroot環境における本キットのディレクトリのパスを設定します。
  3. su - でrootになります。
  4. 母艦方式の場合、OneCD化した環境の/直下でchrootします。
  5. all-wrap.shを実行します。
    all-wrap.shはfilechg.shとinitrd-wrap.shを順に実行します。
  6. mkcdimage.shを実行します。
  7. 母艦方式の場合、chroot環境からexitします。
  8. CD-Rを焼きます。

運用のポイント

/etc内のディレクトリ構成が変化した場合

filechg.shを修正の上、実行して下さい。
filechg.shに必要な修正内容は、filechg.shを読めば直にわかると思います。
※キット同梱のutil.shを実行すれば/etc内のディレクトリのリストが得られます。

 

その後でCD-Rを再作成して下さい。

/etc内のread-onlyのディレクトリを読み込み可に変更したい場合

filechg.shを修正の上、実行して下さい。
filechg.shに必要な修正内容は、filechg.shを読めば直にわかると思います。
※キット同梱のutil.shを実行すれば/etc内のディレクトリのリストが得られます。

 

その後でCD-Rを再作成して下さい。

ラムディスクの容量を変えたい場合

new_files/initrd/initを修正して下さい。

 

その後、CD-Rを再作成して下さい。

カーネルを変更した場合、

config.inを修正の上、initrd-wrap.shを実行して下さい。

 

その後でCD-Rを再作成して下さい。

yum等で/etc/rc.d/init.d/haltが更新された場合

filechg.shを実行して下さい。

 

その後でCD-Rを再作成して下さい。

その他

メモリサイズに余裕のある場合

/etc全部をラムディスク内に確保するようにfilechg.sh、new_files/initrd/initを修正することが可能でしょう。

 

ご要望、ご意見、質問を下のフォームにどうぞ
(でもここより、掲示板書き込みフォームのページに書いて頂いた方が気づき易いと思います。)