本文在一个虚拟机(Ubuntu 11.04 server)中建立PXE Server, 然后在KVM中通过PXE安装一个虚拟机(Ubuntu 11.04 Server ). 这两个虚拟机显然都处在同一个局域网内.
因为PXE虚要裸机在启动时通过DHCP协议去找PXE server要IP, 所以对于跨局域网的PXE安装需要DHCP中继, 这不在本文的讨论范围内, 可参照: PXE跨局域网之系统自动安装
1.1 dnsmasq
apt-get install dnsmasq
vim /etc/dnsmasq.conf
bogus-priv
filterwin2k
interface=eth0
dhcp-range=192.168.100.172,192.168.100.180,12h
dhcp-host=52:54:00:ed:00:f7,192.168.100.178
dhcp-boot=pxelinux.0
enable-tftp
tftp-root=/var/ftpd
dhcp-authoritative
/etc/init.d/dnsmasq restart
注意:如果想要为pxe client分配固定IP,可使用dhcp-host参数.采用这种方式的好处是可以避免将已经网络的IP搞乱.
如果使用KVM提供的虚机作为pxe client来测试时, 应该每测试一次新建一个虚机(千万不能重复测试).
1.2 PXE
mkdir /var/www/ubuntu
mount -o loop/bak//kvmimages/ubuntu-11.10-server-amd64.iso /mnt
cp /mnt/preseed/ubuntu-server.seed /var/www/ubuntu
cp -a /mnt/* /var/www/ubuntu
cp -r /mnt/install/netboot/* /var/ftpd/
vim /var/ftpd/pxelinux.cfg/default
default linux
label linux
kernel ubuntu-installer/amd64/linux
append ks=http://192.168.100.171/ubuntu/ks.cfg preseed/url=http://192.168.100.171/ubuntu/ubuntu-server.seed vga=normal initrd=ubuntu-installer/amd64/initrd.gz --
注意, 上述ks,与preseed应该配置一个Web服务器指向/var/www/ubuntu目录.
1.3 Apache
apt-get install apache2
vi /etc/apache2/sites-available/default
<VirtualHost *>
ServerName ubuntu
DocumentRoot /var/www/ubuntu
<Directory /var/www/ubuntu>
Options ExecCGI FollowSymLinks
AllowOverride all
allow from all
Order allow,deny
</Directory>
ErrorLog/var/log/apache2/error-ubuntu.log
</VirtualHost>
sudo ln -s /etc/apache2/sites-available/default/etc/apache2/sites-enabled/ubuntu
/etc/init.d/apache2restart