最新消息:

linux pxe全自动远程安装

Linux软件介绍 大步 2089浏览 0评论

转自:http://blog.163.com/koumm@126/blog/static/9540383720094781514312/

说明:PXE安装操作系统的方式在windows中也有,比如windows RIS服务,在一些特定的环境中有一定的应用价值,今天采用redhat 9成功实现linux pxe远程安装,对其它版本的linux版本也适用。

一、linux PXE远程安装介绍
PXE是由Intel设计的协议,它可以使计算机通过网络启动。协议分为client和server两端,PXE client在网卡的ROM中,当计算机引导时,BIOS把PXE client调入内存执行,并显示出命令菜单,经用户选择后,PXE client将放置在远端的操作系统通过网络下载到本地运行,无盘工作站就是通过PXE来进行启动的。PXE协议的成功运行需要解决以下两个问题:
1.IP地址的分配
可以用DHCP server来给PXE client分配一个IP地址,DHCP Server是用来给DHCP Client动态分配IP地址的协议,不过由于这里是给PXE Client分配IP地址,所以在配置DHCP Server时,需要增加相应的PXE特有配置。

2.下载Linux内核和根文件系统

PXE client所在的ROM中,已经存在了TFTP Client。PXE Client使用TFTP Client,通过TFTP协议到TFTP Server上下载所需的文件。
3.工作原理
PXE client是需要安装Linux的计算机,TFTP Server和DHCP Server运行在另外一台Linux Server上。Bootstrap文件、配置文件、Linux内核以及Linux根文件系统都放置在Linux Server上TFTP服务器的根目录下。PXE client在工作过程中,需要三个二进制文件:bootstrap、Linux 内核和Linux根文件系统。Bootstrap文件是可执行程序,它向用户提供简单的控制界面,并根据用户的选择,下载合适的Linux内核以及 Linux根文件系统。
linux pxe远程安装 - koumm - koumm的博客

说明:
/tftpboot是tftp server的根目录
/tftpboot/pxelinux.0就是Bootstrap文件,提供调用启动菜单的作用
/pxeboot/initrd.img   内核引导文件
/pxeboot/vmlinux
tftpboot/*.msg       各个引导模块的菜单选项

二、如何实验linux pxe安装

1 安装tftp和dhcp服务器
# rpm -ivh tftp-server-0.39-0.EL3.1.c0.i386.rpm
# rpm -ivh dhcp-3.0.1-10_EL3.i386.rpm
并且检查nfs服务的安装情况,说不定在实际的环境中还需要samba的地方进行文件的复制。
2 配置tftp
tftp是由xinetd超级守护进程来进行控制的,还需要地tftp进行启动。
# vi /etc/xinetd.d/tftp

service tftp
{
     disable = no     #默认是yes,改成no
socket_type      = dgram
protocol            = udp
wait                   = yes
user                  = root
server               = /usr/sbin/in.tftpd
server_args      = -u nobody -s /tftpboot     #tftp目录的根目录
per_source       = 11
cps                   = 100 2
flags                 = IPv4
}

3.配置dhcp
在安装dhcp服务时会为我们提供一个示例文件:/usr/share/doc/dhcp-3.0.1/dhcp.conf.sample  将其复制为/etc/dhcpd.conf 并在其基础上进行修改配置:
cp /usr/share/doc/dhcp-3.0.1/dhcpd.conf.sample  /etc/dhcpd.conf

vi /etc/dhcpd.conf

ddns-update-style interim;  /*dhcp支持的dns动态更新方式*/
ignore client-updates;      /*忽略客户端DNS动态更新*/
authoritative;   /*授权*/

allow booting;            /*支持PXE启动*/
allow bootp;               /*支持boottp*/
subnet 192.168.129.0 netmask 255.255.255.0 { /*作用域*/
range 192.168.129.30 192.168.129.78;          /*ip地址段范围*/
option routers 192.168.129.1;                         /*网关*/
option subnet-mask 255.255.255.0;                /*子网掩码*/
option domain-name-servers 203.103.24.68;   /*DNS服务器的地址*/
default-lease-time 21600;   /*租期,秒数*/
max-lease-time 43200;       /*最大租期,秒数*/
next-server 192.168.129.22;   /*TFTPServer的IP*/
filename "/pxelinux.0";        /*Bootstrap文件*/
}

4.配置支持PXE
mkdir /tftpboot         /*tftp的根目录,默认没有安装,需要手动的建立*/
cp /usr/lib/syslinux/pxelinux.0  /tftpboot

mount /dev/cdrom /mnt/cdrom     /*挂载第一张ISO光盘*/
把LINUX第一张安装光盘上/image/pxeboot/initrd.img和vmlinux 以及isolinux/*.msg考到/tftpboot目录下。
cp /mnt/cdrom/images/pxeboot/initrd.img  /tftpboot
cp /mnt/cdrom/images/pxeboot/vmlinux   /tftpboot
cp /mnt/cdrom/isolinux/*.msg  /tftpboot
*.msg也可以不拷,重点是initrd.img和vmlinuz,没有内核是无法引导的。

mkdir /tftpboot/pxelinux.cfg             /*注意是目录,而且是这个名称。*/
vi /tftpboot/pxelinux.cfg/default
      /*注意default的作用就是实现安装菜单的作用,见下图*/

default
prompt 1
timeout 30
display boot.msg
F1 boot.msg
F2 options.msg
F3 general.msg
F4 param.msg
F5 rescue.msg
F7 snake.msg
label local
localboot 0
label linux
kernel vmlinuz
append initrd=initrd.img devfs=nomount ramdisk_size=9216
label text
kernel vmlinuz
append initrd=initrd.img text devfs=nomount ramdisk_size=9216
label expert
ke
rnel vmlinuz
append expert initrd=initrd.img devfs=nomount ramdisk_size=9216
label ks
kernel vmlinuz
append ks initrd=initrd.img devfs=nomount ramdisk_size=9216
label nofb
kernel vmlinuz
append initrd=initrd.img devfs=nomount nofb ramdisk_size=9216
label lowres
kernel vmlinuz
append initrd=initrd.img lowres devfs=nomount ramdisk_size=9216
kernel vmlinuz
以上内容对应的安装界面的菜单。

linux pxe远程安装 - koumm - koumm的博客

5.配置NFS服务
# vi /etc/exports
/tmp/abc/      192.168.129.0/24(ro,sync)

# mkdir /tmp/abc

#exportfs -rv  重新输出NFS目录

拷贝安装LINUX的ISO文件回送挂载ISO到这个目录,也可以把光盘中的Redhat里的内容全部复制到/tmp/abc如果是DVD ISO光盘的话,可以通过mount -o loop /tmp/abc 挂载ISO光盘到该目录中。

#mount /dev/cdrom  /mnt/cdrom
#cp -ar /mnt/cdrom/RedHat  /tmp/abc
#cp /mnt/cdrom/.discinfo  /tmp/abc
#umount /dev/cdrom

linux pxe远程安装 - koumm - koumm的博客

图一

linux pxe远程安装 - koumm - koumm的博客

图二
6.需要开启的系统服务
service dhcpd restart
service nfs restart
service xinetd restart
当然在实际的环境中应具体的应用。

7.客户端安装
以上图片,显示整个的安装的过程。

 

总结:

1.我的一些想法,应该能通过linux pxe方式来实现windows中的一些pxe启动的一些应用,如网刻的应用,能不能移植过来,此外,对于linux pxe还有更深入一些的应用在这里没有介绍,在以后实践的过程中慢慢的去体去与了解linux pxe深入的内容。
2.下一步的内容是结合kickstart的ks.cfg文件来实验PXE无人值守全自动安装linux,经过实验多次,都没有成功,不知道问题出现在哪里。

注:经过多次的实现,以上问题已经解决:第一问题:dhcpd.conf文件中的授权参数打错了,这个问题通过查看安装时的日志记录时发现的。第二个问题:应全面确保各服务的应用没有问题。

3.ks.cfg PXE无人值守安装,需要在以上的基本上修改两个地方的内容。
一、default文件的修改,安装选项中应有指定采用ks.cfg文件进行自动安装选项。
二、ks.cfg自动安装文件的创建,最后还应把ks.cfg文件放在能够访问到的位置上。如http/ftp/nfs等。
4.附上default文件与ks.cfg文件,供以后参考。

 

附:default文件

default linux       /*自动进入linux选项进行安装*/
prompt 1
timeout 30
display boot.msg
F1 boot.msg
F2 options.msg
F3 general.msg
F4 param.msg
F5 rescue.msg
F7 snake.msg
label local
localboot 0
label linux
kernel vmlinuz
append ks=nfs:192.168.129.22:/tmp/abc/ks.cfg initrd=initrd.img devfs=nomount ramdisk_size=9216

label text
kernel vmlinuz
append initrd=initrd.img text devfs=nomount ramdisk_size=9216
label expert
kernel vmlinuz
append expert initrd=initrd.img devfs=nomount ramdisk_size=9216
label ks
kernel vmlinuz
append ks initrd=initrd.img devfs=nomount ramdisk_size=9216
label nofb
kernel vmlinuz
append initrd=initrd.img devfs=nomount nofb ramdisk_size=9216
label lowres
kernel vmlinuz
append initrd=initrd.img lowres devfs=nomount ramdisk_size=9216
kernel vmlinuz

附:ks.cfg   /*该文件可以用redhat-config-kickstart创建,也可以由/root/an*.cfg文件修改*/

lang en_US
langsupport zh_CN en_US --default=en_US
keyboard us
mouse
timezone Asia/Shanghai
rootpw 1234
reboot
#upgrade
install
#url --url http://192.168.14.202/rhas
nfs --server=192.168.129.22 --dir=/disk
text
bootloader --location=mbr
zerombr yes
clearpart --drives sda --initlabel
part /boot --fstype ext3 --size=100
part swap --size=500
part / --fstype ext3 --size=100 --grow
auth --useshadow --enablemd5
network --bootproto=dhcp --device=eth0
#network --device=eth0 --bootproto=static --ip=192.168.129.144 --netmask=255.255.255.0 --gateway=192.168.129.1 --nameserver=202.96.128.68 --hostname=test
firewall --disabled
skipx
%packages
@ Chinese Support
@ Development Tools
@ Dialup Networking Support
-gcc-java
-gcc-g77
-gcc-gnat
-cvs

%post

说明: 以上环境经过改进,写了一个pxe全自动安装脚本,只需要运行脚本,以上配置环境就安装好了。可以实现快速linux pxe全自动安装。pxe全自动配置脚本链接

转载请注明:大步's Blog » linux pxe全自动远程安装

SiteMap