pxe 远程安装linux系统
PXE 远程安装linux系统 一: 什么是PXE
PXE(Pre-boot Execution Environment)是由Intel
的
,它可以使计算机通过网络启动。协议分为client和server两端,PXE client在网卡的ROM中,当计算机引导时,BIOS把PXE client调入内存执行,并显示出命令菜单,经用户选择后,PXE client将放置在远端的操作系统通过网络下载到本地运行。
PXE协议的成功运行需要解决以下两个问题:
1. 既然是通过网络传输,那么计算机在启动时,它的IP地址由谁来配置;
2. 通过什么协议下载Linux内核和根文件系统
对于第一个问题,可以通过DHCP Server解决,由DHCP server来给PXE client分配一个IP地址,DHCP Server是用来给DHCP Client动态分配IP地址的协议,不过由于这里是给PXE Client分配IP地址,所以在配置DHCP Server时,需要增加相应的PXE特有配置。至于第二个问题,在PXE client所在的ROM中,已经存在了TFTP Client。PXE Client使用TFTP Client,通过TFTP协议到TFTP Server上下载所需的文件。这样,PXE协议运行的条件就具备了,下面我们就来看看PXE协议的工作过程。
在上图中,PXE client是需要安装Linux的计算机,TFTP Server和DHCP Server运行在另外一台Linux Server上。Bootstrap文件、配置文件、Linux内核以及Linux根文件系统都放置在Linux Server上TFTP服务器的根目录下。
PXE client在工作过程中,需要三个二进制文件:bootstrap、Linux 内核和Linux根文件系统。Bootstrap文件是可执行程序,它向用户提供简单的控制界面,并根据用户的选择,下载合适的Linux内核以及Linux根文件系统。
具体配置过程如下:
一:首先是安装必要的服
务,DHCPD,TFTP-SERVER,NFS(一般默认就有了)
dhcpd和tftp-server都有对应的rpm,直接安装就可以了.
# 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 //-s
示用/tftpboot作为tftp目录的根目录.
per_source = 11
cps = 100 2
flags = IPv4 }
注:tftp是由xinted来启动的,修改完后要记得service xinetd restart
# vi /etc/dhcpd.conf
ddns-update-style interim;
ignore client-updates;
default-lease-time 21600;
max-lease-time 43200;
authourtative;
next-server 192.168.1.103;
subnet 192.168.1.0 netmask 255.255.255.0 {
option routers 192.168.1.1;
option subnet-mask 255.255.255.0;
range 192.168.1.1 192.168.1.100;
default-lease-time 21600;
max-lease-time 43200;
Next-server 主服务器地址 ;
filename "/pxelinux.0";
option domain-name-servers 202.106.0.20; }
二配置支持PXE
# mkdir /tftpboot
# cp /usr/lib/syslinux/pxelinux.0 /tftpboot 把LINUX第一张安装光盘上/image/pxeboot/initrd.img和vmlinuz 以及isolinux/*.msg考到/tftpboot目录下(*.msg也可以不拷,重点是initrd.img和vmlinuz,没有内核是无法引导的) # cd /tftpboot
# mkdir pxelinux.cfg
# vi default
default centos5
prompt 1
timeout 30
label centos5
kernel vmlinuz
append ks=nfs:192.168.1.103:/root/inst/ks initrd=initrd.img devfs=nomount ramdisk_size=9216
#append initrd=initrd.img devfs=nomount ramdisk_size=9216
这里的ks=nfs:192.168.1.103:/root/inst/ks 文件是指定kickstart配置文件,可以在安装中不用人工干预,自动按预设的参数安装.实现安装过程的全自动.
三:配置NFS服务
# vi /etc/exports
/root/inst 192.168.1.0/24(ro,sync) //这里是/root/inst 而不是/root/inst/ # mkdir /home/iso
拷贝安装LINUX的ISO文件到这个目录
四 需要开启的系统服务
/dhcpd/network/nfs/portmap/syslog/tftp/xinetd/ service dhcpd start
service portmap start
service nfs start
五:最后附上ks文件的内容.
install
nfs --server=192.168.1.103 --dir=/root/inst lang en_US.UTF-8
keyboard us
network --device eth0 --bootproto static --ip 192.168.1.220 --netmask 255.255.255.0 --gateway
192.168.1.1 --nameserver 192.168.1.1 #network --device eth0 --bootproto DHCP rootpw --iscrypted $1$WvFbqnpm$m94fa4AopXI/kfYOYbWMW.
firewall --enabled --port=22:tcp #firewall --disabled
authconfig --enableshadow --enablemd5 selinux --disabled
timezone --utc Asia/Shanghai
bootloader --location=mbr --driveorder=sda --append="rhgb quiet"
clearpart --all
zerombr yes
clearpart --linux --initlabel
part /boot --fstype ext2 --size=256 part / --fstype ext3 --size=8192 part /opt --fstype ext3 --size=8192 part /usr --fstype ext3 --size=16384 part swap --size=4096
part /home --fstype ext3 --size=1 --grow reboot //加入这行后装完系统后可以自动重启,需要注意的是机器的启动顺序不能是网卡优先,否则会循环装系统........
%packages --resolvedeps
@ everything
grub
kernel
kernel-devel
e2fsprogs
实验过程如下:
一:配置网络服务器(可以是NFS,FTP.HTTP)以有利于下在的安装; 注:由于用到最多的是NFS和FTP所以HTTP这里我就不说了,如果想学,自己下去之后自己学习。人一定要靠自己。
1:搭建FTP服务器:
之后添加一用户并上传IOS到相应的目录中:
注意:这里上传的是解压后的文件,不是IOS
另外COPY光盘上面images/pxeboot/下面的initrd.img 和vmlinux这两个文件放到/TFTPBOOT这个目录中。并创建一目录叫pxelinux.cfg显示如下:
进入pxelinux.cfg这个目录中手工创建一文件名为default并写入相应内容:
综上所述,在公司内部如果某天你找不到安装介质却有一台机器上面有LINUX的安装光盘
你就可以用这种方式安装了,其实在公司里面安装时多采用KICKSTAT安装与这种安装同步进行,大大减少工作量,有利于提高工作效率。自动安装会在后续的文档中慢慢讲出。先锻炼好最基础的安装吧。一部分一部分解决。
这里我们可以练习到以下知识点:
1:FTP服务器的配置
2:DHCP服务器的配置
3:内核映像的制作与源码的编写有利于我们理解OS的启动与内部实现机制 4:TFTP服务的开启与使用
5:NFS服务器的开启与配置步骤
如果可以还可以加入域名与NIS服务器,所以这个实现的量从某些角度对新手来说还是特别大的。我们好好练习一下。