--- title: KVM で仮想環境を整えてみる – (4) author: kazu634 date: 2011-08-02 wordtwit_post_info: - 'O:8:"stdClass":13:{s:6:"manual";b:0;s:11:"tweet_times";i:1;s:5:"delay";i:0;s:7:"enabled";i:1;s:10:"separation";s:2:"60";s:7:"version";s:3:"3.7";s:14:"tweet_template";b:0;s:6:"status";i:2;s:6:"result";a:0:{}s:13:"tweet_counter";i:2;s:13:"tweet_log_ids";a:1:{i:0;i:5441;}s:9:"hash_tags";a:0:{}s:8:"accounts";a:1:{i:0;s:7:"kazu634";}}' categories: - kvm - linux ---
KVMでゲストOSをインストールする際に、PXEブート経由でインストールできるように仮想環境を整えてみます。なお、PXEブートを行う際にはDHCPを用いるため、NICはブリッジ接続にする必要があります。
PXEブートの環境構築については、PXEブート環境を作る – 基本は根性ナシな日記を参考にすると幸せになれます。PXEブートサーバはブリッジ接続したゲストOS の Ubuntu 11.04 で構築しています。
以下のコマンドを実行します:
$ sudo aptitude -y install dhcp3-server tftpd-hpa tftp-hpa syslinux nfs-kernel-server
次のコマンドを実行して設定変更をしていました。なお、アタリマエのことながら、DHCPサーバとなるサーバは IP アドレスを静的に設定している必要があります。
$ cd /etc/dhcp $ sudo cp -p dhcpd.conf dhcpd.conf.orig $ sudo vi dhcpd.conf $ diff -u dhcpd.conf.orig dhcpd.conf --- dhcpd.conf.orig 2011-04-20 00:02:15.000000000 +0900 +++ dhcpd.conf 2011-07-12 23:30:59.670034755 +0900 @@ -13,8 +13,8 @@ ddns-update-style none; # option definitions common to all supported networks... -option domain-name "example.org"; -option domain-name-servers ns1.example.org, ns2.example.org; +# option domain-name "example.org"; +# option domain-name-servers ns1.example.org, ns2.example.org; default-lease-time 600; max-lease-time 7200; @@ -30,6 +30,20 @@ # No service will be given on this subnet, but declaring it helps the # DHCP server to understand the network topology. +subnet 192.168.11. netmask 255.255.255. { + range dynamic-bootp 192.168.11.100 192.168.11.250; + + option routers ルーターのIPアドレス; + option subnet-mask 255.255.255.; + option domain-name-servers DNSサーバのIPアドレス; + + default-lease-time 21600; + max-lease-time 43200; + +# next-server 192.168.1.34; + filename "pxelinux.0"; +} + #subnet 10.152.187.0 netmask 255.255.255.0 { #}
TFTPサーバの公開ディレクトリはデフォルトは /var/lib/tftpboot/ です。ここに pxelinux.0 と menu.c32 をコピーします:
$ sudo cp -p /usr/lib/syslinux/pxelinux. /var/lib/tftpboot/ $ sudo cp -p /usr/lib/syslinux/menu.c32 /var/lib/tftpboot/
ここでは Ubuntu 11.04 をPXE経由でインストールしてみます。まずは netboot 用のブートイメージをダウンロード、解凍します:
$ cd /tmp
$ wget http://archive.ubuntu.com/ubuntu/dists/natty/main/installer-amd64/current/images/netboot/netboot.tar.gz
$ sudo ar xvzf netboot.tar.gz
解凍してできたディレクトリを /var/lib/tftpboot にコピーします:
$ sudo mv /tmp/ubuntu-installer /var/lib/tftpboot/ubuntu
ブートイメージ用設定ファイルを作成します:
$ sudo mkdir /var/lib/tftpboot/pxelinux.cfg/ $ cd /var/lib/tftpboot/pxelinux.cfg/ $ sudo vi default $ cat default DEFAULT menu.c32 PROMPT NOESCAPE TIMEOUT 150 TOTALTIMEOUT 600 MENU TITLE PXE Boot Menu LABEL Boot from Storage LOCALBOOT LABEL Ubuntu 11.04 KERNEL ubuntu/amd64/linux APPEND vga=normal initrd=ubuntu/amd64/initrd.gz
ホストOS側でゲストOSをpxeブートで起動してみます。例えばこんなコマンドを入力します:
$ sudo virt-install --name puppet --ram 512 --disk path=puppet.img,size=10 --vcpus 1 --network bridge=br0,model=virtio --graphic vnc,listen=... --pxe
後は VNC でのぞいていると、 PXE ブートの画面が表示されてくるはずです: