アーカイブ

Archive for 2014年7月

SpeechCastExtra 1.0.7.1を公開しました

バグフィックスのみの更新です。
・長文モードの色情報が保存されないバグを修正 (thanks >>おみ氏)
・yy停止に伴いサポートURLのアドレスを差し替え

ダウンロードはこちらから

サポート掲示板はこちらに変更になりました。
(が、多分こちらのコメント欄の方が気付きやすいと思います)

広告
カテゴリー:プログラミング

Fedora20をiSCSI bootする Extra: grldrでiPXEマルチブート

【2014/8/2 ターゲットを切り替えるだけならiPXEだけでもメニューを出せます】

前回のiPXEを用いたdiskless bootでは飽きたらず、grubのメニューでいろいろ選択したい!と欲張った結果。
PXE→iPXE→grub2のchainloadに、もう一段grub4dosのgrldrをはさみます。
完成形:PXE→grldr→iPXE→grub2
なにが嬉しいかというと、grldr段階で既存のnfs diskless bootを動かしたり、chainloaderでローカルのwindowsを立ち上げたり、iPXEでbootに使うターゲットを切り替えたりできます。

tftpサーバ: 192.168.1.137
iSCSIターゲット: 192.168.1.133

1. grub4dosをセットアップ
ここからgrub4dosをダウンロード。アーカイブ中のgrldrを/var/lib/tftpboot/grldrとして配置します。
0.4.5以降でないと、以下の設定で&&をエスケープする方法がなく、そのまま書けばunrecognized commandとgrubに怒られ、\&\&と書けば\&\&がそのままipxeに渡り怒られます。

2. ipxe.lkrnをセットアップ
前回はundionlyを使用しましたが、今回はgrubからロードできるkernelになっている/usr/share/ipxe/ipxe.lkrnを使用します。
前回のように/var/lib/tftoboot/ipxe.lkrnとして配置。

3. grldrの設定を書く
前回はdhcpでiSCSIターゲットの場所を指定しましたが、これだと複数のターゲットを切り替えられないので、パラメータとして設定ファイルを渡します。
ターゲットを切り替える場合はこの2行をコピーして設定ファイルの場所を書き換えればok。
vim /var/lib/tftpboot/menu.lst/default

title iPXE
kernel (pd)/ipxe.lkrn dhcp \&\& chain tftp://192.168.1.137/ipxeconf/fedora20.ipxe

4. iPXEの設定ファイルを書く
たぶん、grubでdhcp && sanbootと書いても行けると思いますが、試行錯誤の過程でこうなりました。
vim /var/lib/tftpboot/ipxeconf/fedora20.ipxe

#!ipxe
sanboot iscsi:192.168.1.133:::1:iqn.2012-11.net.msmrrenda:eevee.boottest

これで完成。3はローカルのgrubにちょろっとiSCSI bootの選択肢を加えるような場合も応用できます。

カテゴリー:GNU/Linux

Fedora20をiSCSI bootする

2014年7月20日 1件のコメント

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