网络PXE自动化安装

(一)当我们安装虚拟机时会出现下面的界面:

网络PXE自动化安装

网络PXE自动化安装
在网络中,不少服务器采用的是Linux系统。为了进一步提高服务器的性能,可能需要根据特定的硬件需求重新编译Linux内核。编译Linux内核,需要根据规定的步骤进行,编译内核过程中涉及到几个重要的文件。比如对于RedHat Linux,在/boot目录下有一些与Linux内核有关的文件,进入/boot执行:ls –l。编译过RedHat Linux内核的人对其中的System.map 、vmlinuz、initrd-2.4.7-10.img印象可能比较深刻,因为编译内核过程中涉及到这些文件的建立等操作。那么这几个文件是怎么产生的?又有什么作用呢?
这里出现两个重要的文件:
1) vmlinuz
2)initrd.img

一、vmlinuz
vmlinuz是可引导的、压缩的内核。“vm”代表“Virtual Memory”。Linux 支持虚拟内存,不像老的操作系统比如DOS有640KB内存的限制。Linux能够使用硬盘空间作为虚拟内存,因此得名“vm”。vmlinuz是可执行的Linux内核,它位于/boot/vmlinuz,它一般是一个软链接。
vmlinuz的建立有两种方式。一是编译内核时通过“make zImage”创建,然后通过:“cp /usr/src/linux-2.4/arch/i386/linux/boot/zImage /boot/vmlinuz”产生。zImage适用于小内核的情况,它的存在是为了向后的兼容性。二是内核编译时通过命令make bzImage创建,然后通过:“cp /usr/src/linux-2.4/arch/i386/linux/boot/bzImage /boot/vmlinuz”产生。bzImage是压缩的内核映像,需要注意,bzImage不是用bzip2压缩的,bzImage中的bz容易引起误解,bz表示“big zImage”。 bzImage中的b是“big”意思。
zImage(vmlinuz)和bzImage(vmlinuz)都是用gzip压缩的。它们不仅是一个压缩文件,而且在这两个文件的开头部分内嵌有gzip解压缩代码。所以你不能用gunzip 或 gzip –dc解包vmlinuz。
内核文件中包含一个微型的gzip用于解压缩内核并引导它。两者的不同之处在于,老的zImage解压缩内核到低端内存(第一个640K),bzImage解压缩内核到高端内存(1M以上)。如果内核比较小,那么可以采用zImage 或bzImage之一,两种方式引导的系统运行时是相同的。大的内核采用bzImage,不能采用zImage。
vmlinux是未压缩的内核,vmlinuz是vmlinux的压缩文件。
二、initrd-x.x.x.img
initrd是“initial ramdisk”的简写。initrd一般被用来临时的引导硬件到实际内核vmlinuz能够接管并继续引导的状态。initrd-2.4.7- 10.img主要是用于加载ext3等文件系统及scsi设备的驱动。比如,使用的是scsi硬盘,而内核vmlinuz中并没有这个scsi硬件的驱 动,那么在装入scsi模块之前,内核不能加载根文件系统,但scsi模块存储在根文件系统的/lib/modules下。为了解决这个问题,可以引导一 个能够读实际内核的initrd内核并用initrd修正scsi引导问题。initrd-2.4.7-10.img是用gzip压缩的文件。
linuxrc这个脚本initrd实现加载一些模块和安装文件系统等。 initrd映象文件是使用mkinitrd创建的。mkinitrd实用程序能够创建initrd映象文件。这个命令是RedHat专有的。其它 Linux发行版或许有相应的命令。这是个很方便的实用程序。具体情况请看帮助:man mkinitrd。(转载)

总结:
1) vmlinuz是Linux 内核的镜像文件,可以被引导程序加载,从而启动Linux系统。
 2) initrd—-boot loader initialized RAM disk(全称),是一种启动Linux系统的方式。
3) 当前流行的Linux版本一般都采用模块化的内核,这种方式可以在不重新编译构建内核的情形下增加功能模块,但是如果你的Linux的root文件系统所在设备的驱动是一个模块(没有编译进内核映象),就不能被引导程序(例如loadlin)直接加载这时会用到initrd方式来启动你的Linux系统
这种方式包括两个阶段:
1)在一个RAM disk上建立一个临时的root文件系统,在这个RAM disk上包含着你需要的驱动模块

我们通过命令来了解一下:
网络PXE自动化安装

在镜像文件中有许多文件:

网络PXE自动化安装

其中有一个文件里就是我们安装界面的配置:

网络PXE自动化安装

网络PXE自动化安装
(二)实际操作:
在此之后前我们来看看pxelinux.0时在那个包中:
网络PXE自动化安装
所以要下syslinux,我们在系统中喇嘛观察是否下载:

网络PXE自动化安装
没有下载。
接下来我们先安装所需要的软件:

网络PXE自动化安装
查找tftp-server的所有文件与目录进入,将7.2镜像中的iso.linux中的东西复制到服务端:
网络PXE自动化安装

网络PXE自动化安装

网络PXE自动化安装

下载守护xinted 并且修改配置文件:

网络PXE自动化安装

网络PXE自动化安装
disable改为no:
网络PXE自动化安装
重启服务:

查看tftp端口:
网络PXE自动化安装

建立目录并将isolinux.cfg复制到下面:

网络PXE自动化安装

开始配置dhcp服务:
网络PXE自动化安装

网络PXE自动化安装

网络PXE自动化安装

网络PXE自动化安装

在客户端上调为从网卡启动:
网络PXE自动化安装

启动,进入安装界面:
pxe安装界面,库乎端正在等待dhcp分配ip
网络PXE自动化安装

网络PXE自动化安装
成功分配到ip,进入界面,如图,标题还有默认秒数可以在defaults中改:

网络PXE自动化安装

网络PXE自动化安装

这时我们可以在pxelinux.cfg/default中修改repo源与自动安装脚本:

我们先下载kickstart软件:
网络PXE自动化安装

网络PXE自动化安装

开启图形:
网络PXE自动化安装

一些基础设置之后将ks.cfg放到指定文件加:

网络PXE自动化安装

编辑脚本文件:

网络PXE自动化安装

编写安装后执行脚本:配置yum源:

网络PXE自动化安装

配置网络:

网络PXE自动化安装

安装http服务:
网络PXE自动化安装

检验脚本
网络PXE自动化安装

将repo源和ks写进文件中:

网络PXE自动化安装

此时用客户端主机测试,成功安装。