1. 本地网卡ROM中包含有PXE客户端软件。网卡启动时会发出DHCP请求,从PXE服务器端获得动态IP地址、网关及TFTP服务器信息后,
它会自动下载一个用于引导操作系统的启动软件包到本地内存,
再通过此软件加载操作系统启动文件,从而开始操作系统的安装工作。
1.1 使用 DHCP 服务器指定preseed.cfg
2. kickstart与preseed简介
kickstart是Red Hat公司针对自动安装Red Hat、Fedora与CentOS这3种同一体系的操作系统而制定的问答规范
kickstart配置文件通过命令行工具system-config-kickstart生成
preseed则是Debian/Ubuntu操作系统自动安装的问答规范
3. PXE服务器的准备
我们需要将CentOS、Ubuntu或Windows等操作系统安装光盘中的文件复制到PXE服务器中,然后当客户机通过PXE技术与服务器成功建立连接后,就可以自动引导操作系统的安装了。
如果我们选择Ubuntu作为PXE服务器的操作系统,那么它不仅可以支持自身的安装,也可以很好地支持CentOS的安装
4. Ubuntu操作系统的基本安装与更新
4.1 安装与配置DHCP、TFTP服务
apt-get install dnsmasq tftpd-hpa
配置TFTP服务时,只需要创建TFTP服务的根目录,这里我们指定/var/tftproot为根目录
接着配置dnsmasq的DHCP服务,其配置文件/etc/dnsmasq.conf的信息如下所示:
bogus-priv
filterwin2k
interface=eth0
domain=nova.com
dhcp-range=13.0.0.100,13.0.0.150,12h
dhcp-option=3,13.1.1.1
dhcp-option=6,61.139.2.69
dhcp-option=121,13.0.0.0/8
dhcp-boot=/var/tftproot/pxelinux.0
enable-tftp
tftp-root=/var/tftproot
dhcp-authoritative
13.0.0.100~13.0.0.150为客户端通过DHCP获得的IP地址范围。
13.1.1.1是互联网的网关
61.139.2.69 是域名服务器
网络掩码是 8,netmask=255.0.0.0
PXE客户端获得IP地址后,使用TFTP下载/var/tftproot/pxelinux.0文件作为PXE的启动文件
4.2 HTTP 服务的作用与安装
当客户端获得IP地址并成功引导了pxelinux.0文件后,需要进一步下载PXE上需要安装的操作系统文件
我们选择apache2作为HTTP的服务软件
apache2为preseed机制提供的支持会比Nginx更好
apt-get install apache2
4.3 kickstart与preseed配置文件的生成
kickstart配置文件可以使用命令行工具system-config-kickstart或在CentOS下使用图形界面生成,而preseed配置文件只能手动完成
5. 复制Ubuntu操作系统全目录、内核与启动镜像文件
5.1 复制Ubuntu操作系统全目录、内核与启动镜像文件
5.1.1 复制工作主要是将PXE启动文件与操作系统文件分别放入/var/tftproot和/var/www/ubuntu目录中。
前面我们将Ubuntu操作系统下载到服务器的目录中,然后我们准备将其挂载至/mnt目录,相关命令如下:
mount ubuntu-12.04-server-amd64.iso /mnt -o loop
接着复制PXE启动文件及操作系统文件,相关命令如下:
```cp -r /mnt/install/netboot/* /var/tftproot
mkdir -p /var/www/ubuntu
cp -a /mnt/* /var/www/ubuntu```
这里需要说明的是,Ubuntu操作系统的PXE启动文件位于ISO镜像的/install/netboot目录中,包含以下内容:
PXE启动所需要的pxelinux.0
pxelinux.cfg目录 :它下面有default 文件,用于指示客户PXE启动后的进一步动作,比如选择哪一个镜像文件菜单
default文件:它实际指向ubuntu-install/amd64/boot-screens/syslinux.cfg
ubuntu-install/amd64目录:这个目录下有initrd.gz与Linux内核这两个文件
5.2 复制CentOS操作系统全目录、内核与启动镜像文件
5.2.1 将CentOS 复制到 PXE操作系统
将整个CentOS文件复制到/var/www/CentOS目录下,相关命令如下:
mount CentOS-6.2-x86_64-bin-DVD1.iso /mnt -o loop
mkdir - p /var/www/CentOS
cp -rf /mnt/* /var/www/CentOS```
将CentOS的内核及启动镜像文件复制到/var/tftproot/CentOS目录下,相关命令如下:
```bash
mkdir -p /var/tftproot/CentOS
cp /mnt/images/pxeboot/initrd.img /var/tftproot/CentOS
cp /mnt/images/pxeboot/vmlinuz /var/tftproot/CentOS
CentOS的第二张光盘也应装入PXE操作系统中,这样在安装图形桌面时文件才齐全。具体方法是将第二张光盘中Packages中的rpm包复制到Packages
```bash
mount /home/romi/ISO/CentOS-6.2-x86_64-bin-DVD2.iso /mnt -o loop
cp -rf /mnt/Packages/* /var/www/CentOS/Packages
```
-
创建PXE客户端导示文件
6.1为了使PXE客户端启动时能够选择安装CentOS还是Ubuntu,需要准备一下引导菜单文件/var/tftproot/boot.msg
如下### START INSTALLING ###### Choose installation type(0/1/2),the DEFAULT is 100: 0 ubuntu basic: ubuntu install through ks.cfg 1 ubuntu comput node: Ubuntu-12.04-LTS-amd64-No RAID install,preseed …… 6 CentOS-6.2-64-No-RAID-Basic …… 10 CentOS-6.2-64-No-RAID-minidesktop-virtualization-for testing
0: ubuntu basic:通过kickstart 安装最基本的Ubuntu,使用的是美国软件源,安装速度基本无法接受。
1: ubuntu compute node:通过Ubuntu 特有的preseed机制进行安装,适合于OpenStack的计算节点。
6: 用于安装基本的CentOS无图形界面。
10: 用于安装包含最小图形界面环境、虚拟化运行与管理工具软件包的CentOS。
6.2 选择安装配置文件
当客户选择了安装相关操作系统所代表的数字后,就将由/var/tftproot/pxelinux.cfg/default文件进一步指定使用的相关配置文件
比如当客户选择0时,系统就通过HTTP服务将/var/www/cfg/ ubuntu-ks-noraid.cfg文件回应给客户端,
代码段 中的ks与preseed语句用于给出客户端取得的安装配置文件的URL地址。cfg文件实际存放在服务器的/var/www/cfg/目录下