前口上
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メモリがいるはずなのでそれを選んでブートしてメニューを選ぶことになる。