『Linuxインストール』(三)リリース版制作


Fedoraリリース版の作成ツールは主にrevisorとpungiの2種類があります.revisorはグラフィック化されたツールで、コマンドラインも使用できますが、バグがよくあり、比較的肥大化しており、初級ユーザーに使われているような気がします.pungiはFedoraの公式制作(またはspinという)発行版のツールで、コマンドラインは、合計4、5つのpythonファイルです.
以下はpungiカスタマイズ(spin)を使用するコードです.
#!/bin/bash

echo "Set LANG=en_US.utf8" 
LANG=en_US.utf8

if [ $(getenforce) == Enforcing ]; then
    sudo setenforce 0
    echo "Turning Off SELinux enforcing." 
fi

#echo "removing destdir..." 
#sudo rm -rf `pwd`/work

sudo pungi --force --nosource --nosplitmedia -c `pwd`/ks.cfg --destdir=`pwd`/work   -G -C -B -I "$@"

注意:以上のコードはF 13で正常に動作することを保証し、pungiをインストールする際にupdateなどの倉庫を使用することはできません.
ks.cfg(kickstart)ファイルはISOにロードするパッケージのリストを定義しており(依存は自動的に解決されます)、簡単なKSは以下の通りです.
repo --name=test --baseurl=http://10.3.4.211/resrc/repo/fedora/releases/13/Everything/i386/os/

%packages --default
@core
@base
anaconda*
kernel
%end
注:repoはyumソースを指し、複数を指定できます.例のソースはローカルにあり、作成速度を速めるためにrsyncを使用してサーバのソースをローカルに同期しました.ksファイルは、system-config-kickstartパッケージに属するグラフィックスツールkickstartを使用して自動的に生成することもできます.
pungiの作業プロセスは主に4つの段階に分けられます.
  • -G(Gather stage)yumソースからksにリストされているパケットおよび依存をローカル、すなわちパケット収集フェーズ
  • にダウンロードする.
  • -C(Createrepo stage)これらのパッケージをローカルyumソース、すなわちcreaterepo
  • に作成します.
  • -B(BuildInstall stage)ISOのimageファイル等を生成する.F 13 buildinstallスクリプトを使用します.anacondaパッケージに属します.
  • -I(CreateISO stage)ISOルートディレクトリ(installtree)をISO、すなわちmkisofs
  • にする
    最も重要なのはbuildinstallフェーズ、すなわちimageファイルがどのように生成されるかです.logを表示するとbuildinstallスクリプトを呼び出すだけで、単独で実行できます.
    #!/bin/bash
    
    /usr/lib/anaconda-runtime/buildinstall --product Fedora --version 20120319 --release "Fedora 20120319" --output `pwd`/os http://10.3.4.211/resrc/repo/fedora/releases/13/Everything/i386/os/
    

    実行後の作業ディレクトリの構造は次のとおりです.
    $ tree -a os
    os
    |-- .discinfo
    |-- EFI
    |   `-- BOOT
    |       |-- BOOT.conf
    |       |-- BOOTIA32.conf
    |       `-- splash.xpm.gz
    |-- images
    |   |-- boot.iso
    |   |-- efiboot.img
    |   |-- efidisk.img
    |   |-- install.img
    |   |-- pxeboot
    |   |   |-- initrd.img
    |   |   |-- initrd-PAE.img
    |   |   |-- README
    |   |   |-- vmlinuz
    |   |   `-- vmlinuz-PAE
    |   `-- README
    |-- isolinux
    |   |-- boot.msg
    |   |-- grub.conf
    |   |-- initrd.img
    |   |-- isolinux.bin
    |   |-- isolinux.cfg
    |   |-- memtest
    |   |-- splash.jpg
    |   |-- vesamenu.c32
    |   `-- vmlinuz
    `-- .treeinfo
    
    5 directories, 24 files
    

    ISOの重要なファイルはbuildinstallスクリプトによって生成されていることがわかります.そのため、image生成原理を明らかにするにはbuildinstallをデバッグするだけでいいです.