PXE+DHCP+HTTP/FTP/NFS+kickstart安装无人值守的LINUX

说的明白点,就是网络安装。以安装的主机为服务器,被安装的裸机为客户端,通过网络传输的方法服务器为客户端装LINUX系统,批量装机的必选方法。原理可以再网上搜出很多来,略过。

我使用的RHEL5.4系统

拓扑很简单如下:

  Server  ip:192.168.2.1/24 ----------- Client

我使用的是vmware做的实验。vmware做实验一定要注意一点的是必须关闭虚拟网卡的DHCP的功能。否则实验有很大的机会失败,会跳出一个提示,大致的意思就是无法下载到kickstart文件,要求修改路径。博主就在这个问题上面花费了大半个下午才发现,现在想想,获取的IP地址都不是和Server同一个网段的,下载到kickstart那就无从说起了,所以大家一定要注意。

关闭方法是可以通过vmware上面的编辑菜单下的虚拟网络设置里面来关闭。

 

接下来开始我们的实验,我们在http/ftp/nfs中选用http来做实验:

1.       安装http服务器

配置好yum的仓库之后,挂载cdromyum –y install httpd* 装好http服务

http装好后,无需修改配置文件,直接service httpd restart 启用http服务。

同时我们可以通过netstat –tunlp查看端口是否在监听

2.启动tftp服务

  由于tftp服务是由xinetd管理的,所以我们要修改/etc/xinetd.d/tftp这个文件

将其中的disable = yes改成no,not disable就是enable的意思啦,很容易理解吧。改好之后保存就能启动tftp服务了。由于这里tftp是由xinetd管理的服务,所以要启动xinetdservice tftp restart是不行的哦。。。。

Tftp服务启动了没有呢,同样netstat –tunlp查看端口是否监听:

没有tftp的,但是有xinetd,原因同上。

3DHCP服务。

同理,通过rpm包安装DHCP服务。

通过经验肯定是安装第一个了,所以rpm -ivh dhcp-3.0.5-21.el5.i386.rpm

安装很顺利:

DHCP是需要配置的,包括地址池,网关,掩码以及DNS服务器的配置。它的配置文件在/etc/dhcpd.conf,但是这个文件几乎是空的

但后面那句话写的相当精辟,我们只要把dhcpd.conf.sample拷过来并改名成dhcpd.conf覆盖掉原来的dhcpd.confok了。

进入dhcpd.conf

subnet 修改成 192.168.2.0  掩码255.255.255.0

option routers就是网关 192.168.2.1

option subnet-mask就是网关的掩码

dns服务器的一些信息我们可以忽略不计,不影响我们装系统,但是还是要改成192.168.2.1

range dynamic-bootp这句就是设置地址池,第一个是开始地址,第二个是末尾地址

最重要的还是要在subnet上面加2句话

next-server 192.168.2.1;

filename “/pxelinux.0”;

注意这里后面不能少掉分号。

全部设置好了就保存并且启动http服务。

4 关于pxe启动程序的一些配置

Pxe启动程序有这些

vmlinuz    这个是linux的内核文件

initrd.img  这个文件是文件系统镜像文件,里面包含一些特殊的硬件模块尤其是存储设备的模块,驱动。以下是网上关于initrd.img的一个解释:vmlinuz自然就是内核了,initrd.img是一个小的映象,包含一个最小的linux系统。通常的步骤是先启动内核,然后内核挂载initrd.img,并执行里面的脚本来进一步挂载各种各样的模块,然后发现真正的root分区,挂载并执行/sbin/init... ...initrd.img当然是可选的了,如果没有initrd.img,内核就试图直接挂载root分区。之所以要有initrd,那是为了启动的时候有更大的灵活性。比如,你把ext3支持编译成模块了。偏偏你的root分区又是ext3的。这下就麻烦了。因为内核需要挂载root分区之后才能加载ext3支持。但是没有ext3支持就没法挂载root分区。initrd就是用来解决这个问题的。类似的用这个东西还可以做其他的事情,比如从usb盘启动linux也会面临上面类似的问题。用initrd就能搞定了。甚至,我想在有些嵌入式设备里面都不需要真正的root分区,用initrd就足够搞定一切了。

pxelinux.0 tftp服务器将pxelinux.0推到客户端之后,客户端通过这个来读取pxelinux.cft/default这个文件。

pxelinux.cfg/default  定义启动的一些参数

 

vmlinuzinitrd.img以及default文件分别在光盘的isolinux文件夹里面有,直接拷贝到/tftpboot文件夹中就可以了,这个/tftpboot是在tftp的配置文件中定义的,名字不可以随便改的(除非把tftp服务器中的工作路径也改掉。)

其中default就是需要isolinux.cfg拷贝过来然后把名字改成default

pxelinux.0可以通过locate查找一下就可以了

这里因为我已经拷过来了,所以显示2个路径,一般都是显示下面个路径,拷过来就好了

如果locate找不到的话,可以用updatedb更新下数据库就能locate到了。

所以现在/tftpboot文件夹中有如下文件

pxelinux.cfg文件夹下面就是default文件

 

5  default文件

default文件里面是一些启动的参数

default linux   

prompt 1

timeout 600   

display boot.msg

F1 boot.msg

F2 options.msg

F3 general.msg

F4 param.msg

F5 rescue.msg

label linux

  kernel vmlinuz

  append ks=http://192.168.2.1/ks.cfg initrd=initrd.img

 

如果用的nfs的话就是 nfs:192.168.2.1:/tftpboot/ks.cfg

ftp的话就是ftp://192.168.2.1/ks.cfg  (其中ks.cfg/var/ftp/pub目录下面)

 

7.kickstart文件

先要安装system-config-kickstart

通过yum –y install system-config-kickstart

 

安装成功就能配置了,system-config-kickstart 图形化配置ks.cfg

按照左边的一步一步设置,设置过程省略了。设置好后点File然后保存到/var/www/html就可以了。

以下是我的ks.cfg文件,还有注意的一点就是

auth  --useshadow  --enablemd5

key --skip  这里要加上,不然在要输入install key的地方会停下来等待输入,这样就不能实现无人值守了

# System bootloader configuration

bootloader --location=mbr

# Clear the Master Boot Record

zerombr

# Partition clearing information

clearpart --all --initlabel

# Use text mode install

text

# Firewall configuration

firewall --disabled

# Run the Setup Agent on first boot

firstboot --disable

# System keyboard

keyboard us

# System language

lang en_US

# Installation logging level

logging --level=info

# Use network installation

url --url=http://192.168.2.1/

# Reboot after installation

reboot

#Root password

rootpw --iscrypted $1$A9D3/zQk$abL8S0RSyT.klUS2yZLr6.

 

# SELinux configuration

selinux --disabled

# System timezone

timezone  America/New_York

# Install OS instead of upgrade

install

# X Window System configuration information

xconfig  --defaultdesktop=GNOME --depth=8 --resolution=640x480

# Disk partitioning information

part / --bytes-per-inode=4096 --fstype="ext3" --size=10000

part /boot --bytes-per-inode=4096 --fstype="ext3" --size=100

part swap --bytes-per-inode=4096 --fstype="swap" --size=1000

 

%packages

@gnome-desktop

@chinese-support

@editors

 

 

好,ks.cfg文件搞定,pxe安装系统的前期准备工作已经完成。可以开始安装了。

启动一台裸机,进入BIOS设置boot方式为网络安装。

出现如下画面

输入linux,系统开始启动

以下是安装画面截图

由于我是在text模式下安装的,所以看不到任何图形画面,当然速度也应该更快的。

 

OK 完工。