首先需要做些准备工作:
1.安装xming及virt-manager, 安装过程网上很多,就不一一叙述了。安装完成后,使用putty登陆服务器,需要配置如下:
connection -> SSH -> X11 中将X11 forwarding中的Enable X11 forwarding选中,并在X display location中输入localhost:0
完成后,启动virt-manager。
2.安装nfs
apt-get install nfs-kernel-server
创建一个目录作为nfs目录:
mkdir /nfs
并配置其配置文件,/etc/exports如下:
/nfs *(rw,sync,no_root_squash,no_subtree_check)
3.安装tftp及syslinux
apt-get install tftpd-hpa
apt-get install syslinux
cp /usr/lib/syslinux/pxelinux.0 /var/lib/tftpboot
接下来在/var/lib/tftpboot 下创建启动引导的配置目录:
1> mkdir /var/lib/tftpboot/pxelinux.cfg
2> cd /var/lib/tftpboot/pxelinux.cfg 并创建启动的default文件:
DEFAULT ubuntu
TIMEOUT 5
LABEL ubuntu
kernel vmlinuz
append initrd=initrd.nfs boot=nfs root=/dev/nfs nfsroot=109.105.115.49:/nfs ip=dhcp rw
PROMPT 1
其中initrd.nfs是自己做的initrd.
在制作initrd前需要修改 initramfs的配置文件,使其启动时挂载文件系统的方式修改为nfs,如下:
vi /etc/initramfs-tools/initramfs.conf
将其中的BOOT=auto修改为BOOT=nfs
然后使用debootstrap制作文件系统,存放在/nfs目录下:
sudo debootstrap --arch amd64 trusty /nfs
先查看当前系统中的内核版本:
ls /lib/modules
3.13.0-24-generic 4.0.4
并选择其中的一个制作 initrd,这里选择4.0.4,如下:
mkinitramfs -o /var/lib/tftpboot/initrd.nfs 4.0.4
在tftp根目录下也要有kernel的image,可以直接从编译过的内核中拷贝一个,如下:
cp /boot/vmlinuz /var/lib/tftpboot/
这里的vmlinuz即是default文件里面的引导kernel文件名。这样tftp根目录下就有了pxe配置文件及目录、kernel及initrd。准备工作完成。
下面首先配置libvirt的default bridge,使它能允许pxe及tftp。
修改/etc/libvirt/qemu/networks/default.xml如下:
<network> <name>default</name> <bridge name="virbr0"/> <forward/> <ip address="192.168.122.1" netmask="255.255.255.0"> <tftp root="/var/lib/tftpboot"/> <dhcp> <range start="192.168.122.2" end="192.168.122.254"/> <bootp file="pxelinux.0"/> </dhcp> </ip> </network>
配置完成后重启服务器。
然后使用virt-manager创建虚拟机,选择从pxe启动,虚拟机会自动从/var/lib/tftpboot/下load kernel,initrd,及mount /nfs下的文件系统。