複数のCDからDVDを作成

移動先: 案内, 検索


はじめに

この記事ではSUSEディストリビューションを構成する複数のCDから1枚のDVDを作成する方法について書いてあります。ここに記した方法は現行の(2006年7月7日時点) SLED 10プレビュー版の公開データにも適用できます。 SUSEユーザの有志が、CDイメージからDVDイメージを簡単に作れるmakeSUSEdvd というプログラムを作りました。 まず、CDのイメージをダウンロードします。これは NOVELL のSUSE CD でも openSUSEのCD、またSLED 10 プレビュー版 でも構いません。 メディアに焼き付ける必要はありません。3つ、5つまたは6つのCDイメージをひとつのディレクトリに置くだけです。 作業にはrootパスワードが必要です。rootになれない立場にある人はこのプログラムを使えないので、DVD作成は全て手作業で行う必要があります。

SUSEの新しいバージョンにあわせてmakesusedvdも最新バージョンを使ってください。 これは SUSE 10.1(あるいはSLED10)用のバージョン 0.34です

準備

すでに一度このプログラム makeSUSEdvd を使ったことのある人は、ここを読む必要はありません。同じように使ってください。 最も簡単な方法は最新のRPMバージョンを用いることです。これがあれば以後の 準備 の内容は不要です。

初めて使うという人は、まずターミナルを開きます。システムに必要な空き容量があるか確認してください。もとのCDイメージが全部で4GB、かつ生成するDVDイメージのためにももう4GB必要です。

CDイメージは書き込み権限のある場所ならどのディレクトリでも構いません。ただし、そのディレクトリの中には他のファイルを混入させないでください。必要なら以下のコマンドで専用のディレクトリを新規作成します。

# mkdir SUSECD

DVDを生成するための空き容量がないのであれば、後述のようにスクリプト「makeSUSEdvd」の中身を書き換えます。 DVD_DIR="/tmp/DVD_DIR" の行を編集して、十分な空き容量のある場所を指定してください。

ホームディレクトリに ~/bin というディレクトリがあります。ユーザの実行バイナリを置く場所で、ユーザのコマンドサーチパスに入っています。SUSEの標準ではそう設定されていますが、もしないのであれば自分で作成します。自分のホームディレクトリに行ってmkdir ~/binとコマンドを打ってください。 準備ができたらmakeSUSEdvdをダウンロードして、以下のコマンドで展開します。

# gunzip makeSUSEdvd.gz

これを以下のコマンドで~/binディレクトリに置きます。

# mv makeSUSEdvd ~/bin/

これでmakeSUSEdvdプログラムのインストールは完了、あとは起動するだけです。もし、~/binがユーザの $PATHに入っていなければ, 以下のように絶対パスでこのファイルを指定すれば起動します。

# /home/yourlogin/bin/makeSUSEdvd

プログラムが他のディレクトリにあっても、絶対パスで指定すれば動きます。 ~/binディレクトリについては、ターミナルを再起動すれば$PATHに入るはずです。

プログラムの実行

CDイメージをダウンロードしたディレクトリに行って、以下のように打つだけです。

# makeSUSEdvd

ただし、必要なCDイメージ以外のファイルが同じディレクトリに混入していないことを確認してください。 出力されるインストラクションに従っていけば、生成物 dvd.iso は /tmp/DVD_DIR/ に置かれますので、これを好きな方法でDVDに焼いてください。 スクリプトを書き換えれば、この DVD iso の生成場所は自由に変更できます。 makeSUSEdvdプログラムでどのようなことができるかは、以下のコマンドで調べられます。

# makeSUSEdvd -h

スクリプトの設定

このスクリプトの標準の実行では、実行ディレクトリはCD ISOイメージのある場所、ISOイメージの出力先は /tmp/DVD_DIRという前提になっています。しかし、他にも実行できる作業や条件を設定できます。以下のようにパラメータをつけてください。

ヘルプを見るには

makeSUSEdvd -h これでどんなパラメータが使えるか一覧と解説が表示されます。

対話的操作

makeSUSEdvd -I スクリプトを対話的に操作するためのオプションです。他のオプションを自分で指定しなくとも、オプションのデフォルトが提案され、必要に応じそれを変更できます。

バージョンを確認するには

makeSUSEdvd -v これでプログラムのバージョンが表示されます。

CD ISO イメージの置き場所

makeSUSEdvd -d /dir/to/iso で、CD ISOイメージを置いた場所を指定できます。標準では、プログラムの実行場所とみなされます。

DVD ISOイメージの出力先

makeSUSEdvd -o /dir/to/output DVD ISOの書き込まれる場所を指定できます。

インストールソースを指定の場所に出力する

makeSUSEdvd -s /dir/to/source この作業でCDイメージから一時的に出力されるインストールソースを、再利用できるような所定のディレクトリに出力することができます。想定しているのは、後述の-iオプションでDVD ISOイメージを作らない設定とともに用い、ハードディスク中の/srv/ftp/suseのような場所に出力しネットワークインストールに用いるような場合です。

ISOイメージの変わりにCDを用いる

makeSUSEdvd -c ISOイメージの変わりに、CDからDVDイメージを作成します。このパラメータでコマンドを実行するにはCDをマウントした場所 (標準では/media/cdrom)に移動することが必要です。

DVD ISOイメージを作らない

makeSUSEdvd -i - DVD ISO イメージを作りません。これはGRUBLILOを書き換えて CDなしでインストールするような場合に用います。プログラムの実行後、その方法が表示されます。DVDやCDドライブのない場合でも起動してインストールが可能です。

ISO イメージを続けて作成する

makeSUSEdvd -C は、DVDイメージファイルを作成したあとに続けて、makeSUSEdvd -iを打つことにより~/.makeSUSEdvdrc を読み込んで実行するものです。 他のパラメータは使えません.

RPMs のディレクトリを追加する

makeSUSEdvd -a ISOイメージ中にRPMファイル用のディレクトリを置く場合にこれで指定します。ディレクトリとその全てのサブディレクトリが、ISOイメージ中の suse/ ディレクトリの下に追加されます。これには rpmでないファイルも含まれます. SUSEのインストールの過程で一緒にインストールしたいRPMファイルがあれば、たとえば makeSUSEdvd RPM を /usr/local/bin/RPMS/noarch/ に置いておくためには、 /usr/local/bin/RPMS と指定します。これで、SUSEのインストールの過程でmakeSUSEdvd も一緒にインストールされます。あるいはその後でも可能です。

使用する GPG キー

makeSUSEdvd -g FOO で、gpgキーを指定できます。これで、通常 gpg --list-secret-keys FOOで取得しているキーの先頭のものが選ばれます。キーが見つからなければ新規作成が求められ、それが使用されます。

上記のオプションの組合せ

-h と -v を一緒に指定することはできません。-c と-s もダメです。組合せの例としては、CD ISOイメージは別の場所にあり、かつインストールソースの形でftpディレクトリに出力する場合です。以下のように打ちます:

# makeSUSEdvd -d download/cd -s /srv/ftp/suse -i

あるいは、CDメディアから作成し、かつ一時ファイルの書き込みやDVDイメージの出力先として /tmp ディレクトリには十分な空き容量がないので他の場所にするという場合、以下のように打ちます:

# makeSUSEdvd -c -o /data1/DOS

プログラムの詳細

バージョン特有の詳細情報

  • makedvdのバージョン 0.30 では、ほとんどの操作にルートパスワードは不要ですが、インストールプログラムrpmyast の使用のために必要となります。
  • gpg がなければ、新規作成することになります。
  • 対話的操作が可能です。

プログラムについて

makeSUSEdvdを実行すると、まず必要なプログラムがインストールされているかどうかの確認がなされます。それらはcreate_package_descr, mkisofs 及び rpmです。 最初に探されるのはcreate_package_descr,これがないかもしくは適切な機能を持たなければ、rpmによりアップグレードするかどうか尋ねられます。それを行わない場合は、スクリプトは中断され手作業でインストールしなければなりません。gzファイルを用いるときは $PATH 中にそれを追加し、かつ chmod +x を行ってください。 その他の必要なプログラムは、なければYaSTでインストールするかどうかたずねられます。それを行わない場合は、手作業でインストールする必要があります。

必要なプログラムについて以下に解説します。

  1. create_package_descr これは perl スクリプトで、 SUSE のこの目的のために特別に書かれたものです。旧バージョンの create_package_descrNovell's page にありますが、これは機能しないので注意してください (makeSUSEdvd 0.29 and SUSE 10.1 RC3以降)その代わり、the Sourceforgeのサイトからダウンロードして、展開し、create_package_descr を環境変数$PATHに加えます。なおこのファイルには実行権限をつけておいてください(chmod 755). RPM をダウンロードしてインストールするほうが望まれます。
  2. rpmディストリビューションによっては最初から使えるものも、新たに導入しなければならないものもあります。これが利用できなければmakeSUSEdvdは使えません。
  3. mkisofs.これはisoファイルを作成するためのツールですが、DVDの焼きソフトがインストールされていれば一緒にインストールされているはずです。

これらのプログラムがなければ、makeSUSEdvdは使えません。

CDセットからDVDを手作業で作成する

この方法はopenSUSEのメーリングリストに投稿したものですが、ここでも公開したほうがよいと思います。これはSUSE Linux 9.3 professional,SUSE Linux10.0のBETA1 及び BETA2で行った方法です。以下に示すのはBETA2に適用した方法ですが BETA1 にも同様に使えます。この作業を行うには "autoyast" と "autoyast-utils" が必要です。

--Macmewes 11:17, 19 Aug 2005 (MDT)



  • まず、最寄りのミラーサイトからCDイメージを全てダウンロードする
    http://www.opensuse.org/JA-Download
  • 全てのCDイメージをループマウントする
    # mkdir -p /mnt/SL10B2CD01 && mount -o loop /path/to/iso/SUSE-10.0-CD-OSS-i386-Beta2-CD1.iso /mnt/SL10B2CD01
    # mkdir -p /mnt/SL10B2CD02 && mount -o loop /path/to/iso/SUSE-10.0-CD-OSS-i386-Beta2-CD2.iso /mnt/SL10B2CD02
    # mkdir -p /mnt/SL10B2CD03 && mount -o loop /path/to/iso/SUSE-10.0-CD-OSS-i386-Beta2-CD3.iso /mnt/SL10B2CD03
    # mkdir -p /mnt/SL10B2CD04 && mount -o loop /path/to/iso/SUSE-10.0-CD-OSS-i386-Beta2-CD4.iso /mnt/SL10B2CD04
    # mkdir -p /mnt/SL10B2CD05 && mount -o loop /path/to/iso/SUSE-10.0-CD-OSS-i386-Beta2-CD5.iso /mnt/SL10B2CD05
    
  • マウントした内容を全てひとつのディレクトリにコピーする。たとえば以下のように:
    # mkdir -p /tmp/sl10b2dvd
    # cp -rfvp /mnt/SL10B2CD01/* /tmp/sl10b2dvd
    # cp -rfvp /mnt/SL10B2CD02/* /tmp/sl10b2dvd
    # cp -rfvp /mnt/SL10B2CD03/* /tmp/sl10b2dvd
    # cp -rfvp /mnt/SL10B2CD04/* /tmp/sl10b2dvd
    # cp -rfvp /mnt/SL10B2CD05/* /tmp/sl10b2dvd
    
  • 全てをマウント解除する
    # umount /mnt/SL10B2CD01
    # umount /mnt/SL10B2CD02
    # umount /mnt/SL10B2CD03
    # umount /mnt/SL10B2CD04
    # umount /mnt/SL10B2CD05
    
  • CDイメージの内容をコピーしたディレクトリに移動する。これでメディアはひとつになったので、"media.1"という名前のディレクトリ以外を、以下のように全て消去する。
    # cd /tmp/sl10b2dvd
    # rm -rf media.2 media.3 media.4 media.5
    
  • "media.1" ディレクトリに行き、そこの "media"ファイルを適当なエディタで編集する。5枚のCDセットからのインストールを前提として書かれている"5"という数字を"1"に修正してファイルを保存する。
    # cd /tmp/sl10b2dvd/media.1
    # joe media
    # rm -f media~
    
  • create_package_descrによりパッケージ記述ファイルを作り直して、YaSTにその場所がわかるようにしてやります。その前に"boot"ディレクトリの内容全てに書き込みができるようにしておいてください。以下の作業中エラーメッセージが出るかもしれませんが無視して大丈夫です。
    # chmod 777 -Rv /tmp/sl10b2dvd/boot
    # cd /tmp/sl10b2dvd/suse
    # create_package_descr -x setup/descr/EXTRA_PROV -l english -l spanish -l french -l german -l czech -l hungarian -l italian
    
  • ではISOイメージを焼きます。以下のように一行で打ってください。
    # mkisofs -v -V SU100OSS.001 -r -J -l -L -P "SuSE Linux AG" \
         -b "boot/loader/isolinux.bin" \
         -c "boot/loader/boot.cat" \
         -no-emul-boot -boot-load-size 4 -boot-info-table \
         -graft-points -o /tmp/openSuSE-10.0-beta2-DVD.iso \
         /tmp/sl10b2dvd
    
  • この ISO-Imageは VMware のような仮想マシンで仮想DVDとしても使えますし、本物の DVD にも焼けます:-)

参考情報やリンク