前口上

ECS LivaのOSなしモデルを買ったのでOSをインストールすることに。
先人の調査により、少なくともLinuxカーネル3.13以降が必要なのがわかっているので、とりあえずFedora 21 64-bitをインストールしてみた。

Cobblerを使ってPXEブートでインストールしようとしたが、モニターが真っ黒になるだけで先に進まないのでとりあえず諦めて、USBメモリからブートしてCobblerが提供するkickstartファイルを使用してインストールを行った。

というわけで何らかの理由でPXEブートが使えない環境で、ネットワーク経由でRedHat系OSをインストールする方法をECS Livaでの手順を例に挙げ記述する。
手順はシステムのファームウェアモードがBIOSかUEFIかで多少異なる。LivaはUEFIモードしか使用できないが、少し古いコンピュータだとBIOSモードのみだし、最近のコンピュータは大抵どちらかを設定で選ぶことができる。

CentOS 7は同じ手順でできるはずだが、UEFIモードは利用可能な環境が手元にないため未確認。
CentOS 6だとBIOSモードなら以下の手順でできる。UEFIモードは未調査だがこの手順ではできない。
CentOS 5以前はやったことがないのでわからない。私には今さらインストールする機会はないだろう。

CobblerのOSイメージとしてFedora 21を追加

Cobbler自体のインストール手順はこちらで紹介している。CentOS 7をOSイメージとして追加する方法もこの中に書いてある。
さらにOSイメージとしてFedora 21を追加するためには以下のようにする。

2015-04-05追記: 現在私は別の方法でFedora 21のCobblerへの追加を行っている。→Cobblerの省力化のためにプロキシと組み合わせる

Cobbler 2.6.5(ソースを見る限り、この文章を書いている時点で最新の2.6.7でも)が持っているsignatureではFedora 21が追加できないのでmasterブランチの最新からsignatureを持ってくる。

# cobbler signature update

イメージの中身をどこから引っ張ってくるかは、私があまりFedoraに詳しくないので多少試行錯誤した。
結果、まずcobbler importはFedora 21 Serverから。

# cobbler import --name f21 --path rsync://ftp.iij.ad.jp/pub/linux/fedora/releases/21/Server/x86_64/os/

しかる後にPackagesとrepodataをEverythingから引っ張ってくる。
Packagesは40GB以上ある。

# rsync -avSHP --del rsync://ftp.iij.ad.jp/pub/linux/fedora/releases/21/Everything/x86_64/os/Packages/ /var/www/cobbler/ks_mirror/f21/Packages
# rsync -avSHP --del rsync://ftp.iij.ad.jp/pub/linux/fedora/releases/21/Everything/x86_64/os/repodata/ /var/www/cobbler/ks_mirror/f21/repodata

updatesリポジトリをCobblerに取り込む。

# cobbler repo add --name f21-updates --mirror http://ftp.iij.ad.jp/pub/linux/fedora/updates/21/x86_64/
# cobbler reposync --only f21-updates

kickstartファイルのテンプレートを、LivaにFedora 21をインストールする用に1ファイル作る。

# cp /var/lib/cobbler/kickstarts/sample_end.ks /var/lib/cobbler/kickstarts/f21.ks

ここまでのコマンドを打っていればFedora 21のプロファイル名は「f21-x86_64」になっているので取り込んだupdatesリポジトリ、およびkickstartファイルのテンプレートをこのプロファイルにセットする。

# cobbler profile edit --name f21-x86_64 --repos f21-updates --kickstart /var/lib/cobbler/kickstarts/f21.ks

kickstartファイルのテンプレートの修正

先程作ったkickstartファイルのテンプレートである /var/lib/cobbler/kickstarts/f21.ks には以下のような修正を行う。

インストール中USBメモリを差しているのでUSBメモリの中身を消されないようにする必要がある。
そのため、ignoredisk, bootloader, clearpartで内蔵ストレージだけを対象にするようにする。
Livaの内蔵ストレージのデバイス名はmmcblk0である。もっともこれは特別な例で、大抵のコンピュータではOSをインストールする対象のストレージはsdaになるだろう。しかしたまにUSBメモリがsdaになったりするので試行錯誤が必要になることがある。
CentOS 6ではbootloaderのオプションに–boot-driveはないので代わりに--driveorder=<デバイス名>とする。

ignoredisk --only-use=mmcblk0
bootloader --location=mbr --boot-drive=mmcblk0
clearpart --all --drives=mmcblk0

私は/homeパーティションを作られるのは自分1人で使う環境では好きではないため、autopartは使用せずpart等でパーティションの切り方を定義しているが、LivaのようにUEFIモードでOSをインストールしなければならないコンピュータでは/boot/efiパーティションを–fstype=efiで作る必要がある。
したがって、パーティションを作る辺りは以下のようにしている(part /boot/efi行以外はBIOSモードでも同じ)。
CentOS 6はルートパーティションにxfsは使えないので代わりにlogvol /のfstypeをext4とする。

part /boot/efi --fstype=efi --size=128
part /boot --fstype=ext4 --size=512
part pv.1 --size=1 --grow
volgroup vg1 --pesize=4096 pv.1
logvol swap --fstype=swap --name=lv_swap --vgname=vg1 --size=512
logvol / --fstype=xfs --name=lv_root --vgname=vg1 --size=1 --grow

その他はこちらに記載している。
なお、CentOS 7のbaseパッケージグループに当たるのはFedora 21ではstandardパッケージグループである。
よって%packagesと%endの間に指定するなら@baseではなく@standardになる。

USBメモリの準備

私はWindows上でこれを行っている。他のOSだとできるかどうかわからない。

OSのブータブルISO、Fedora 21だと Fedora-Server-netinst-x86_64-21.iso を例えば http://ftp.iij.ad.jp/pub/linux/fedora/releases/21/Server/x86_64/iso/Fedora-Server-netinst-x86_64-21.iso からダウンロードする。
ここでnetinstでなくDVD等でも目的を達することはできるが、ファイルサイズが一番小さいもので問題ない。

netinstのブータブルISOを使えばUSBメモリは容量が1GBもあれば十分である。
FAT32でフォーマットしておく。

UNetbootinをダウンロードし実行する。
“ディスクイメージ”にFedora-Server-netinst-x86_64-21.isoを選んでUSBメモリに焼く。焼いた後再起動は特に必要ない。

Cobblerが提供するf21-x86_64プロファイルのkickstartファイルのURLは http://<CobblerサーバのIPアドレス>/cblr/svc/op/ks/profile/f21-x86_64 となる。プロファイル名が違うなら「f21-x86_64」の部分を変える。
このURLを起動時に使用するkickstartファイルとして設定すれば良いが、BIOSモードかUEFIモードかで書き換えるファイルや書き方が違う。

UEFIモードでOSをインストールする場合

USBメモリに EFIBOOTgrub.cfg というファイルができているので、このkickstartファイルを使用してインストールする以下のメニューを追加する。場所は「menuentry ‘Install Fedora-Server 21’」の次にしておくと、選ぶ時にカーソル移動する必要がないし、時間切れで自動選択されるので良い。

menuentry 'Install from Cobbler Fedora 21 profile' --class fedora --class gnu-linux --class gnu --class os {
    linuxefi /images/pxeboot/vmlinuz inst.ks=http://<CobblerサーバのIPアドレス>/cblr/svc/op/ks/profile/f21-x86_64 quiet
    initrdefi /images/pxeboot/initrd.img
}

BIOSモードでOSをインストールする場合

USBメモリに syslinux.cfg というファイルができているので以下のメニューを追加する。場所はすべてのlabelの中で一番上にしておくと、選ぶ時にカーソル移動する必要がないし、時間切れで自動選択されるので良い。
CentOS 6でNICが複数ある場合にはksdevice=eth0などをappendのオプションに付ける必要があるはず。

label cobbler-fedora21-kickstart
kernel /isolinux/vmlinuz
append initrd=/isolinux/initrd.img ks=http://<CobblerサーバのIPアドレス>/cblr/svc/op/ks/profile/f21-x86_64

あとは

ブートメニューからUSBメモリを選んで EFIBOOTgrub.cfg あるいは syslinux.cfg に追加したメニューを選ぶと勝手にインストールが進む。

ECS LivaだとUSBメモリとキーボードを差して電源を入れ、DeleteキーでBIOSセットアップユーティリティに入り、ExitのBoot OverrideのところにUSBメモリがいるはずなのでそれを選んでブートしてメニューを選ぶことになる。

TOP