独自のファイルを追加して、イメージングディストリビューションを変更する必要が生じる場合があります。追加のプログラム、スクリプト、データファイル、更新されたLinuxドライバなどです。
次の方法を使用すると、イメージングリソースファイルを更新できます。
最も簡単な方法は、イメージングCDのルートまたはPXEブート用のZENworksイメージングサーバの/srv/tftp/bootにあるsettings.txtファイルを編集する方法です。
ZENworksパーティションを使用している場合は、手動またはメンテナンスモードでブートし、ZENworksパーティションをマウントし、変更したsettings.txtおよびinitrdまたはroot内のファイルをマウントされたZENworksパーティションにコピーします。
もう1つの簡単な方法は、PXEブート用のZENworksイメージングサーバの/srv/tftpにある.cfgファイルを編集する方法です。この方法は、設定ファイルがNovellバージョンのPXEでのみ提供されているため、Linuxイメージングサーバでのみ使用できます。
initrdまたはrootファイルシステム内のファイルを変更できますが、変更処理を行うにはLinux環境が必要です。初期セットアップ中(linuxrc処理時間中)に必要なファイル(LANドライバなど)は、initrdファイルシステム内に保存する必要があります。zenworks.sスクリプトファイルが制御を取得するまで必要にならないその他のファイルは、rootファイルシステム(イメージングスクリプトなど)に保存するか、driverupdateファイルを使用します。
この方法について、このセクションで説明します。
次の各セクションでは、イメージングリソースファイルを変更する様々な方法について説明します。
実際のイメージング処理(スクリプトなど。通常はドライバモジュールではありません)を開始するときに使用できるように、イメージングブートCDに追加するファイルがある場合は、イメージングCDの/addfilesディレクトリにそのファイルをコピーできます。initrdまたはrootファイルシステムを変更することなく、スクリプトまたはその他のファイルを配布に挿入するには、この方法が簡単です。ただし、これらのファイルは、ブート中およびモジュールロード中の段階では使用できません。
イメージングブートCDには/addfilesという名前のディレクトリがあり、ここにファイルを追加できます。このディレクトリの下位に、正しいディレクトリ名で保存する必要があります。こうすると、イメージング処理中に、このディレクトリ構造内で使用できるようになります。
ファイルの追加方法の例:
通常のイメージング処理の代わりに独自のスクリプトを実行する場合は、myscript.sという名前のスクリプトを作成し、ブートCDに配置します。たとえば、/addfiles/bin/myscript.sとします。
重要:スクリプトファイルには、DOS CRやLFなどの行末文字ではなく、Linuxで必要となる適切なLF行区切りが必要です。つまり、スクリプトの作成にNotepad.exeは使用できません。Linuxと互換性のあるTextPadなどのテキストエディタを使用する必要があります。
settings.txtファイルに次の行を含めるには、次のように入力します。
export IMGCMD="/bin/myscript.s"
イメージングを実行すると、通常のimg autoコマンドを使用する代わりに、/bin/myscript.sが実行されます。
イメージングリソースファイルを更新するには、この方法が適しており、Linux環境で実行する必要があります。
次の手順を実行する前に、変更を予定しているファイル(特に/srv/tftp/boot/initrdファイル)のバックアップコピーを作成したことを確認してください。イメージングCD上のファイルを変更する場合は、ISOエディタ、またはbootcd.isoイメージファイル内のファイルを抽出および置換するためのその他の処理が必要です。
重要:initrdまたはrootファイルシステム内のファイルおよびLinuxドライバを更新または追加する場合は、変更内容を書き留めておいてください。Novellから更新されたリソースファイルを取得する際、それらのファイルには独自の変更内容は含まれていません。Novellからの新しいリソースファイルでカーネルバージョンが変更された場合は、メーカーから新しいバージョンを入手するか、正しいLinuxカーネルバージョンソースを使用してドライバを再コンパイルして、前回追加したドライバを更新する必要があります。
rootファイルシステムにファイルを追加するには、driverupdateファイルメソッドも使用できます(セクション G.4.3, driverupdateファイル方法の使用で説明)。
initrdファイルシステムを変更するには、次の手順に従います。
Linuxデバイスを使用して、作業ディレクトリを作成し、そのディレクトリに移動します。
initrdをPXEサーバまたはブートCDから新しい作業ディレクトリにコピーするには、次のようにします。
PXEの場合は、\tftp\boot\initrdをLinuxワークステーションの作業ディレクトリにコピーします。
CDの場合は、ブートCDの/boot/i386/loaderディレクトリからinitrdを抽出し、抽出したinitrdをLinuxワークステーションの作業ディレクトリにコピーします。
initrdをinitrd.gzに名前変更するには、次のように入力します。
mv initrd initrd.gz
initrd.gzファイルを解凍するには、次のように入力します。
gunzip initrd.gz
以降の手順でマウントポイントとして使用する、別の作業ディレクトリを作成するには、次のように入力します。
mkdir work
cd work
initrdを/workディレクトリに抽出するには、次のように入力します。
cpio -idmuv <../initrd >/dev/null 2>&1
ファイルまたは更新されたドライバをinitrdファイルシステムにコピーするには、次のように入力します。
cp /your_path/module.ko lib/modules/2.6.5-override-default/initrd
your_pathは、module.koファイルへのパスで、moduleはモジュール名です。
initrdファイルシステムに追加するその他のファイルは、適切なディレクトリにコピーする必要があります。
initrdファイルを再パッケージするには、次のように入力します。
find . | cpio --quiet -o -H newc > ../initrd
cd ..
initrdファイルを圧縮するには、次のように入力します。
gzip -v9c initrd > initrd.gz
initrd.gzのファイル名をinitrdに戻すには、次のように入力します。
mv initrd.gz initrd
ファイルを元の場所にコピーするには、次のようにします。
PXEの場合は、更新されたinitrdファイルをPXEサーバの\tftp\bootディレクトリにコピーします。
CDの場合は、更新されたinitrdをブートcdの/boot/i386/loaderディレクトリにコピーします。
rootファイルシステムを変更するには、次の手順に従います。
Linuxデバイスを使用して、作業ディレクトリを作成し、そのディレクトリに移動します。
initrdをPXEサーバまたはブートCDから新しい作業ディレクトリにコピーするには、次のようにします。
PXEの場合は、\tftp\boot\initrdをLinuxワークステーションの作業ディレクトリにコピーします。
CDの場合は、ブートCDの/boot/i386/ディレクトリからrootを抽出し、抽出したrootをLinuxワークステーションの作業ディレクトリにコピーします。
rootの名前をroot.gzに変更するには、次のように入力します。
mv root root.gz
root.gzファイルを圧縮解除するには、次のように入力します。
gunzip root.gz
以降の手順でマウントポイントとして使用する、別の作業ディレクトリを作成するには、次のように入力します。
mkdir work
initrdファイルシステムを/workディレクトリにマウントするには、次のように入力します。
mount -o loop root work
ファイルまたは更新されたドライバをマウント済みのrootファイルシステムにコピーするには、次のように入力します。
cp /your_path/module.ko work/lib/modules/2.6.5-override-default/initrd
your_pathは、module.koファイルへのパスで、moduleはモジュール名です。
initrdファイルシステムに追加するその他のファイルは、適切なディレクトリにコピーする必要があります。
rootファイルシステムをアンマウントするには、次のように入力します。
umount work
新しいrootファイルを圧縮するには、次のように入力します。
gzip -v9c root > root.gz
root.gzの名前をrootに戻すには、次のように入力します。
mv root.gz root
ファイルを元の場所にコピーするには、次のようにします。
PXEの場合は、更新されたrootファイルをPXEサーバの\tftp\bootディレクトリにコピーします。
CDの場合は、更新されたrootファイルをブートCDの/boot/i386/ディレクトリにコピーします。
Novellイメージングディストリビューションをカスタマイズする場合、すべてのSUSEディストリビューションに組み込まれているドライバ更新メカニズムを利用することもできます。この場合、driverupdateという名前のファイルを変更します。このファイルは、イメージングサーバの/srv/tftp/bootディレクトリまたはイメージングブートCDのルート(/)にあります。
この方法は、initrdまたはrootファイルシステムを変更する方法よりやや簡単です。ブート時にイメージングオペレーティングシステムに追加される追加ファイルを作成します。
実行できるドライバ更新操作として、次の3つのタイプがあります。
カーネルモジュールまたはハードウェアドライバをインストールする
ファイルをインストールして、スクリプトを実行する
ファイルをオペレーティングシステムに保存する
このセクションでは、ファイルのインストールとスクリプトの実行方法について説明します。他の2つの方法の詳細については、『Novell Connection Magazine』の「Tech Talk #3 - Spittin’ Image」を参照してください。特に、この記事の「SUSE Linux Driver Updates」および「Adding files to the distro "root" file」の各セクションを参照してください。
このセクションの例では、イメージング分散では現在使用できないプログラム"ツリー"を使用して、ブート時にこれをインストールします。
ドライバ更新メカニズムでは、driverupdateファイルが検索されます。このファイルには、ZENworks分散でのデバイスブート後のオペレーティングシステムのディレクトリ構造によく似たディレクトリ構造が含まれています。存在する場合、linuxrcは、ブート時にダウンロードして、オペレーティングシステムに動的に追加します。
driverupdateファイルは、EXT3やREISERなどの任意のファイルシステムのファイルです。分かりやすいようにこの例では、CRAMFSファイルシステムを使用します。
ツリープログラムをdriverupdateファイルに保存するには、次の手順に従います。
/workなど、イメージングサーバで作業ディレクトリを作成します。
driverupdateファイルを使用している場合は、driverupdate.tgzファイルを/workディレクトリにダウンロードし、次のように入力してファイルを圧縮解除します。
mkdir work cd work wget http://www.novell.com/connectionmagazine/2005/11/download/driverupdate.tgz tar -xzvf driverupdate.tgz
driverupdate.tgzファイルには、ステップ 3で作成されたものと同じディレクトリ構造が含まれています。
ディレクトリを手動で作成する場合は、/workディレクトリ下に次の構造を作成します。
`-- linux `-- suse |-- i386-sles10 |-- dud.config |-- inst-sys `-- lib `-- bin |-- adddir.s
dud.configファイルの内容には、次に示す内容と同様のラインが必要です。独自のデータを提供して、キーワードを保守します。ただし、次のリストに示す値を使用できます。
UpdateName: ZENworks 10 Patch 1 UpdateID: a37f92556e4dd99e UpdatePriority: 100
adddir.sファイルは、次のラインを含む実行可能スクリプトでなければなりません。
echo "Processing: adddir.s" > /dev/tty3 2>&1 # driver update: add files to inst-sys for i in /update/[0-9]*/inst-sys ; do [ -d "$i" ] && adddir "$i" / done
# driver update: run update.pre scripts for i in /update/[0?9]*/install/update.pre ; do echo "Processing: $i" > /dev/tty3 2>&1 [ -x "$i" ] && "$i" done
ツリープログラムを/binディレクトリにコピーするには、次のように入力します。
cp /usr/bin/tree dirstruct/linux/suse/i386-9.2/inst-sys/bin/
CRAMFSファイルを作成するには、次のように入力します。
mkfs.cramfs work/ driverupdate
SUSEディストリビューションではCRAMFSファイルが必須です。
driverupdateファイルを/srv/tftp/bootにコピーするには、次のように入力します。
cp driverupdate /srv/tftp/boot
次のラインを/srv/tftp/boot/settings.txtファイルの最後に追加します。
# SUSE driver update for i in /update/[0?9]*/install/adddir.s ; do [ -x "$i" ] && "$i" rm $i done
これにより、adddir.sスクリプトが実行し、コピーされる新ファイルへのソフトリンクが作成されます。
これらのファイルは、settings.txtファイルにすでに存在する可能性があります。
PXE対応デバイスをリブートします。
オペレーティングシステムの起動後、イメージング保守モードプロンプトにテキスト"ZENworks 10 Patch 1"が表示されます。
ツリープログラムを実行します。
driverupdateファイルに配置したすべてのファイルは、ブート後、オペレーティングシステムの/updateディレクトリに置かれます。次に、adddir.sスクリプト(またはsettings.txtファイルに追加したコード(ステップ 7内))により、/updateディレクトリ構造下の対応するファイルを示すソフトリンクが/updateファイルシステム下に作成されます。次のように実行して、これを確認します。
/# which tree /bin/tree /# ll /bin/tree lrwxrwxrwx 1 root root 29 Aug 31 21:45 /bin/tree -> /update/000/inst-sys/bin/tree
新しいハードウェアドライバまたはカーネルモジュールをイメージングオペレーティングシステムに含めるだけの場合、.koファイルを/dirstruct/linux/suse/i386-9.2/modules/ディレクトリにコピーする方が簡単な場合があります。次に、イメージングオペレーティングシステムにより、このディレクトリの任意の.koファイルがロードされます。