ホーム > GNU/Linux > Fedora20をiSCSI bootする

Fedora20をiSCSI bootする

FreeBSD勉強会で温まった勢いでそのまま環境を作り、そのまま完成。

前提条件
・iSCSI targetはFedora
・インストールはkvm上で行い、起動は実機。「インストール用USBメモリを作るのもめんどくさい!」からです。
・複数台からの同時起動は考えない

はまりポイントダイジェスト:勉強会に出てた人はここだけ気を付けてください
・LinuxのtgtdはLUN番号が1からはじまるため、dhcpで渡すときに指定する必要がある。
・インストール時の起動順序はPXE→その他にする。iSCSI diskから起動・失敗させることでインストール時に一度iPXEを読ませてiBFTに情報を残してやる必要がある。
・インストーラ起動時のメニューでtabを押して、ip=ibftを追加する必要がある。
・dracutの設定をいじってネットワークカードのドライバをinitramfsに入れておく必要がある。

1. targetのセットアップ
# dd if=/dev/zero of=/mnt/vm/boot.img bs=1M count=30000
# yum install scsi-target-utils
# vim /etc/tgt/conf.d/bootimg.conf

<target iqn.2012-11.net.msmrrenda:eevee.boottest>
backing-store /mnt/vm/boot.img
</target>

# chkconfig tgtd on
# service tgtd start
2. dhcpdの設定
ISC-dhcpdはiPXEで必要な情報の設定に対応してないので、グローバル部分でそれらの仕様を定義してやる必要があるらしいです。
# vim /etc/dhcp/dhcpd.conf

option space ipxe;
option ipxe-encap-opts code 175 = encapsulate ipxe;
option ipxe.keep-san code 8 = unsigned integer 8;
option ipxe.no-pxedhcp code 176 = unsigned integer 8;
option ipxe.username code 190 = string;
option ipxe.password code 191 = string;

で、ホスト部分はこちら。tftpサーバが別マシンなのでnext-serverが変わっています。

Host msmr{
hardware ethernet (mac addr);
fixed-address 192.168.1.200;
if exists user-class and option user-class = "iPXE" {
filename "";
option root-path "iscsi:192.168.1.133:::1:iqn.2012-11.net.msmrrenda:eevee.boottest";
option ipxe.keep-san 1;
option ipxe.no-pxedhcp 1;
}else{
next-server 192.168.1.137;
filename "/undionly.kpxe";
}

}

# service dhcpd restart

3. tftpサーバの設定
# yum install tftp-server xinetd ipxe-bootimgs
# vim /etc/xinetd.d/tftp

disable = no

※iptablesで69/udpを通しておく
# cp /usr/share/ipxe/undionly.kpxe /var/lib/tftpboot/
# chkconfig xinetd on
# service xinetd start

4. インストール
virt-managerで適当にVMを作ります。ネットワークインストール(PXE)にするとcdromドライブがつかないので、つけます。
優先順位をPXE、cdromの順に変更。どちらにもチェックを入れておくのがポイント。
インストールディスクのメニューが出たら、tabを押してカーケルパラメータの最後に ip=ibftを追加。
うまくいっていれば、ネットワークはibft0を使用、ディスクはiSCSIディスクになっているはず。後は通常通り。

5. 再起動
KVMだと何も調整せずとも上がって来ると思います。
ここから実機向けの調整。
起動時に「reached basic target」で固まってしまい、タイムアウトしてdracutのレスキューコンソールに落ちてしまうことがあります。
iSCSIの処理をiPXEからカーネルが引き継ぐ際、initramfsにネットワークカードのドライバが入っていないとこうなります。
ということで、/etc/dracut.confをいじって

add_drivers+="e1000e"

とか追記し、dracut –forceでリビルド。これでドライバが入り、起動できるようになると思います。

広告
カテゴリー:GNU/Linux
  1. まだコメントはありません。
  1. 2014年7月22日 9:18 PM

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。