G.4 ZENworksイメージングリソースファイルの変更

独自のファイルを追加して、イメージングディストリビューションを変更する必要が生じる場合があります。追加のプログラム、スクリプト、データファイル、更新されたLinuxドライバなどです。

次の方法を使用すると、イメージングリソースファイルを更新できます。

次の各セクションでは、イメージングリソースファイルを変更する様々な方法について説明します。

G.4.1 イメージングブートCDへのファイルの追加

実際のイメージング処理(スクリプトなど。通常はドライバモジュールではありません)を開始するときに使用できるように、イメージングブートCDに追加するファイルがある場合は、イメージングCDの/addfilesディレクトリにそのファイルをコピーできます。initrdまたはrootファイルシステムを変更することなく、スクリプトまたはその他のファイルを配布に挿入するには、この方法が簡単です。ただし、これらのファイルは、ブート中およびモジュールロード中の段階では使用できません。

イメージングブートCDには/addfilesという名前のディレクトリがあり、ここにファイルを追加できます。このディレクトリの下位に、正しいディレクトリ名で保存する必要があります。こうすると、イメージング処理中に、このディレクトリ構造内で使用できるようになります。

ファイルの追加方法の例:

  1. 通常のイメージング処理の代わりに独自のスクリプトを実行する場合は、myscript.sという名前のスクリプトを作成し、ブートCDに配置します。たとえば、/addfiles/bin/myscript.sとします。

    重要:スクリプトファイルには、DOS CRやLFなどの行末文字ではなく、Linuxで必要となる適切なLF行区切りが必要です。つまり、スクリプトの作成にNotepad.exeは使用できません。Linuxと互換性のあるTextPadなどのテキストエディタを使用する必要があります。

  2. settings.txtファイルに次の行を含めるには、次のように入力します。

    export IMGCMD="/bin/myscript.s"
    

    イメージングを実行すると、通常のimg autoコマンドを使用する代わりに、/bin/myscript.sが実行されます。

G.4.2 initrdまたはrootファイルシステムへのファイルの追加

イメージングリソースファイルを更新するには、この方法が適しており、Linux環境で実行する必要があります。

次の手順を実行する前に、変更を予定しているファイル(特に/srv/tftp/boot/initrdファイル)のバックアップコピーを作成したことを確認してください。イメージングCD上のファイルを変更する場合は、ISOエディタ、またはbootcd.isoイメージファイル内のファイルを抽出および置換するためのその他の処理が必要です。

重要:initrdまたはrootファイルシステム内のファイルおよびLinuxドライバを更新または追加する場合は、変更内容を書き留めておいてください。Novellから更新されたリソースファイルを取得する際、それらのファイルには独自の変更内容は含まれていません。Novellからの新しいリソースファイルでカーネルバージョンが変更された場合は、メーカーから新しいバージョンを入手するか、正しいLinuxカーネルバージョンソースを使用してドライバを再コンパイルして、前回追加したドライバを更新する必要があります。

rootファイルシステムにファイルを追加するには、driverupdateファイルメソッドも使用できます(セクション G.4.3, driverupdateファイル方法の使用で説明)。

Initrdへの追加

initrdファイルシステムを変更するには、次の手順に従います。

  1. Linuxデバイスを使用して、作業ディレクトリを作成し、そのディレクトリに移動します。

  2. initrdをPXEサーバまたはブートCDから新しい作業ディレクトリにコピーするには、次のようにします。

    • PXEの場合は、\tftp\boot\initrdをLinuxワークステーションの作業ディレクトリにコピーします。

    • CDの場合は、ブートCDの/boot/i386/loaderディレクトリからinitrdを抽出し、抽出したinitrdをLinuxワークステーションの作業ディレクトリにコピーします。

  3. initrdinitrd.gzに名前変更するには、次のように入力します。

    mv initrd initrd.gz
    
  4. initrd.gzファイルを解凍するには、次のように入力します。

    gunzip initrd.gz
    
  5. 以降の手順でマウントポイントとして使用する、別の作業ディレクトリを作成するには、次のように入力します。

    mkdir work
    
    cd work
    
  6. initrd/workディレクトリに抽出するには、次のように入力します。

    cpio -idmuv <../initrd >/dev/null 2>&1
    
  7. ファイルまたは更新されたドライバをinitrdファイルシステムにコピーするには、次のように入力します。

    cp /your_path/module.ko lib/modules/2.6.5-override-default/initrd
    

    your_pathは、module.koファイルへのパスで、moduleはモジュール名です。

    initrdファイルシステムに追加するその他のファイルは、適切なディレクトリにコピーする必要があります。

  8. initrdファイルを再パッケージするには、次のように入力します。

    find . | cpio --quiet -o -H newc > ../initrd
    
    cd ..
    
  9. initrdファイルを圧縮するには、次のように入力します。

    gzip -v9c initrd > initrd.gz
    
  10. initrd.gzのファイル名をinitrdに戻すには、次のように入力します。

    mv initrd.gz initrd
    
  11. ファイルを元の場所にコピーするには、次のようにします。

    • PXEの場合は、更新されたinitrdファイルをPXEサーバの\tftp\bootディレクトリにコピーします。

    • CDの場合は、更新されたinitrdをブートcdの/boot/i386/loaderディレクトリにコピーします。

Rootへの追加

rootファイルシステムを変更するには、次の手順に従います。

  1. Linuxデバイスを使用して、作業ディレクトリを作成し、そのディレクトリに移動します。

  2. initrdをPXEサーバまたはブートCDから新しい作業ディレクトリにコピーするには、次のようにします。

    • PXEの場合は、\tftp\boot\initrdをLinuxワークステーションの作業ディレクトリにコピーします。

    • CDの場合は、ブートCDの/boot/i386/ディレクトリからrootを抽出し、抽出したrootをLinuxワークステーションの作業ディレクトリにコピーします。

  3. rootの名前をroot.gzに変更するには、次のように入力します。

    mv root root.gz
    
  4. root.gzファイルを圧縮解除するには、次のように入力します。

    gunzip root.gz
    
  5. 以降の手順でマウントポイントとして使用する、別の作業ディレクトリを作成するには、次のように入力します。

    mkdir work
    
  6. initrdファイルシステムを/workディレクトリにマウントするには、次のように入力します。

    mount -o loop root work
    
  7. ファイルまたは更新されたドライバをマウント済みのrootファイルシステムにコピーするには、次のように入力します。

    cp /your_path/module.ko work/lib/modules/2.6.5-override-default/initrd
    

    your_pathは、module.koファイルへのパスで、moduleはモジュール名です。

    initrdファイルシステムに追加するその他のファイルは、適切なディレクトリにコピーする必要があります。

  8. rootファイルシステムをアンマウントするには、次のように入力します。

    umount work
    
  9. 新しいrootファイルを圧縮するには、次のように入力します。

    gzip -v9c root > root.gz
    
  10. root.gzの名前をrootに戻すには、次のように入力します。

    mv root.gz root
    
  11. ファイルを元の場所にコピーするには、次のようにします。

    • PXEの場合は、更新されたrootファイルをPXEサーバの\tftp\bootディレクトリにコピーします。

    • CDの場合は、更新されたrootファイルをブートCDの/boot/i386/ディレクトリにコピーします。

G.4.3 driverupdateファイル方法の使用

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ファイルに保存するには、次の手順に従います。

  1. /workなど、イメージングサーバで作業ディレクトリを作成します。

  2. 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で作成されたものと同じディレクトリ構造が含まれています。

  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
    
  4. ツリープログラムを/binディレクトリにコピーするには、次のように入力します。

    cp /usr/bin/tree dirstruct/linux/suse/i386-9.2/inst-sys/bin/
    
  5. CRAMFSファイルを作成するには、次のように入力します。

    mkfs.cramfs work/ driverupdate
    

    SUSEディストリビューションではCRAMFSファイルが必須です。

  6. driverupdateファイルを/srv/tftp/bootにコピーするには、次のように入力します。

    cp driverupdate /srv/tftp/boot
    
  7. 次のラインを/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ファイルにすでに存在する可能性があります。

  8. PXE対応デバイスをリブートします。

    オペレーティングシステムの起動後、イメージング保守モードプロンプトにテキスト"ZENworks 10 Patch 1"が表示されます。

  9. ツリープログラムを実行します。

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ファイルがロードされます。