天天看点

pxe+dhcp+nfs+tftp自动安装linux[kickstart]

转载地址:http://wowking.blog.51cto.com/1638252/960338

相关不错的文章:http://wgkgood.blog.51cto.com/1192594/530304  

                                http://blog.chinaunix.net/uid-20330385-id-1965396.html

原理和概念:

1.1 什么是PXE

严格来说,PXE 并不是一种安装方式,而是一种引导的方式。进行 PXE 安装的必要条件是要安装的计算机中包含一个 PXE 支持的网卡(NIC),即网卡中必须要有 PXE Client。PXE (Pre-boot Execution Environment)协议使计算机可以通过网络启动。协议分为 client 和 server 端,PXE client 在网卡的 ROM 中,当计算机引导时,BIOS 把 PXE client 调入内存执行,由 PXE client 将放置在远端的文件通过网络下载到本地运行。运行 PXE 协议需要设置 DHCP 服务器和 TFTP 服务器。DHCP 服务器用来给 PXE client(将要安装系统的主机)分配一个 IP 地址,由于是给 PXE client 分配 IP 地址,所以在配置 DHCP 服务器时需要增加相应的 PXE 设置。此外,在 PXE client 的 ROM 中,已经存在了 TFTP Client。PXE Client 通过 TFTP 协议到 TFTP Server 上下载所需的文件。

1.2 什么是KickStart

KickStart是一种无人职守安装方式。KickStart的工作原理是通过记录典型的安装过程中所需人工干预填写的各种参数,并生成一个名为ks.cfg的文件;在其后的安装过程中(不只局限于生成KickStart安装文件的机器)当出现要求填写参数的情况时,安装程序会首先去查找KickStart生成的文件,当找到合适的参数时,就采用找到的参数,当没有找到合适的参数时,才需要安装者手工干预。这样,如果KickStart文件涵盖了安装过程中出现的所有需要填写的参数时,安装者完全可以只告诉安装程序从何处取ks.cfg文件,然后去忙自己的事情。等安装完毕,安装程序会根据ks.cfg中设置的重启选项来重启系统,并结束安装。

1.3 PXE + KickStart安装的条件

执行 PXE + KickStart安装需要的设备为:

• DHCP 服务器;

• TFTP 服务器;

• KickStart所生成的ks.cfg配置文件

• 一台存放系统安装文件的服务器,如 NFS、HTTP 或 FTP 服务器。

• 带有一个 PXE 支持网卡的将安装的主机;

工作过程图  

pxe+dhcp+nfs+tftp自动安装linux[kickstart]

安装步骤

环境:

OS:CentOS 5.5 x86_64

ip adress:192.168.20.20

两台VM:一台做Server,一台来装系统

  (如果你的系统是CentOS 5.5 32位或者其它版本的Linux,请自行适合的修改)

1.mount CentOS DVD

mount /dev/cdrom /mnt     [挂载光驱]

2.install tftp-server

yum -y install tftp-server.x86_64

vim /etc/xinetd.d/tftp

  1. service tftp 
  2.         socket_type             = dgram 
  3.         protocol                = udp 
  4.         wait                    = yes 
  5.         user                    = root 
  6.         server                  = /usr/sbin/in.tftpd 
  7.         server_args             = -s /tftpboot 
  8.         disable                 = no                  #[将'yes'改为'no'] 
  9.         per_source              = 11 
  10.         cps                     = 100 2 
  11.         flags                   = IPv4 

 service xinetd start             [启动tftp服务]

3.configuration PXE

mkdir /tftpboot    [如果没有这个文件夹就创建]

cp /usr/lib/syslinux/pxelinux.0 /tftpboot/ 

cp /mnt/images/pxeboot/initrd.img /tftpboot/

cp /mnt/images/pxeboot/vmlinuz /tftpboot/

cp /mnt/isolinux/*.msg /tftpboot/    [复制linux开机引导文件]

mkdir /tftpboot/pxelinux.cfg

cp /mnt/isolinux/isolinux.cfg /tftpboot/pxelinux.cfg/default

4.install DHCP

yum -y install dhcp.x86_64

cp /usr/share/doc/dhcp-3.0.5/dhcpd.conf.sample /etc/dhcpd.conf

vim /etc/dhcpd.conf

  1. ignore client-updates; 
  2. next-server 192.168.20.20;     #[添加,next-server 是tftp server] 
  3. filename "/pxelinux.0";        #[添加] 
  4. subnet 192.168.20.0 netmask 255.255.255.0 {               #[网段申明] 
  5. # --- default gateway 
  6.         option routers                  192.168.20.254;     #[网关] 
  7.         option subnet-mask              255.255.255.0;      #[子网俺码] 
  8.         option nis-domain               "domain.org"; 
  9.         option domain-name              "domain.org"; 
  10.         option domain-name-servers      8.8.8.8;             #[DNS] 
  11.         option time-offset              -18000; # Eastern Standard Time 
  12. #       option ntp-servers              192.168.1.1; 
  13. #       option netbios-name-servers     192.168.1.1; 
  14. # --- Selects point-to-point node (default is hybrid). Don't change this unless 
  15. # -- you understand Netbios very well 
  16. #       option netbios-node-type 2; 
  17.         range dynamic-bootp 192.168.20.20 192.168.20.254;    #[ip pools]   
  18.         default-lease-time 21600; 
  19.         max-lease-time 43200; 
  20.         # we want the nameserver to appear at a fixed address 
  21. #       host ns { 
  22. #               next-server marvin.redhat.com; 
  23. #               hardware ethernet 12:34:56:78:AB:CD; 
  24. #               fixed-address 207.175.42.254; 
  25. #       }    #[由于本次实验中DHCP Server只用于安装无人值守安装,这些都用不着,注释最后几行。实际环境中,视情况而定] 

service dhcpd start

5.install NFS

yum -y install nfs-*      [CentOS默认是安装的]

mkdir /tftpboot/ks        [先在tftpboot目录下创建ks文件,一会存放ks.cfg时用]

vim /etc/exports 

  1. /mnt    *(ro)  #[添加这两个共享文件夹,'*'任何人可以访问,'(ro)'即read only]
  2. /tftpboot/ks/    *(ro) 

service portmap start     [首先启动这个服务,这是nfs的依赖服务]

service nfs start

6.install KickStart

yum -y install system-config-kickstart.noarch    [install kickstart]

yum -y groupinstall "X Window System"     [如果GNOME环境,请执行本行及下行命令。如果你不希望安装GNOME环境,KickStart也可以不安装,直接复制我这的ks.cfg代码合适的修改便可。当然其它版本的linux的ks.cfg代码不一样]

yum -y groupinstall "GNOME Desktop Environment"

startx                                     [进入desktop,kickstart必须在desktop环境下配置]

system-config-kickstart    [start kickstart]

定制KickStart              [下图只是例子,实际根据各自需求而定]

pxe+dhcp+nfs+tftp自动安装linux[kickstart]

因为CentOS安装盘挂载在/mnt,所以这里的目录是/mnt

pxe+dhcp+nfs+tftp自动安装linux[kickstart]
pxe+dhcp+nfs+tftp自动安装linux[kickstart]
pxe+dhcp+nfs+tftp自动安装linux[kickstart]
pxe+dhcp+nfs+tftp自动安装linux[kickstart]
pxe+dhcp+nfs+tftp自动安装linux[kickstart]
pxe+dhcp+nfs+tftp自动安装linux[kickstart]
pxe+dhcp+nfs+tftp自动安装linux[kickstart]

记得最少安装一个包,不然在安装系统的时候,会弹出一个对话框,让你手动选择需要安装的包

pxe+dhcp+nfs+tftp自动安装linux[kickstart]
pxe+dhcp+nfs+tftp自动安装linux[kickstart]
pxe+dhcp+nfs+tftp自动安装linux[kickstart]

下面是利用KickStart生成的ks.cfg,也可以直接在这里适当修改参数

  1. lang en_US 
  2. # Installation logging level 
  3. logging --level=info 
  4. # Use NFS installation media 
  5. nfs --server=192.168.20.20 --dir=/mnt 
  6. # Network information 
  7. network --bootproto=dhcp --device=eth0 --onboot=on 
  8. # Reboot after installation 
  9. reboot 
  10. #Root password 
  11. rootpw --iscrypted $1$SjnCI7rG$4JhDvTrZ4Xo4fdpjOriBU/ 
  12. # SELinux configuration 
  13. selinux --enforcing 
  14. # Do not configure the X Window System 
  15. skipx 
  16. # System timezone 
  17. timezone  Asia/Shanghai 
  18. # Install OS instead of upgrade 
  19. install 
  20. # Disk partitioning information 
  21. part swap --bytes-per-inode=4096 --fstype="swap" --size=2048 
  22. part /boot --bytes-per-inode=4096 --fstype="ext3" --size=100 
  23. part / --bytes-per-inode=4096 --fstype="ext3" --size=10240 
  24. part /data --bytes-per-inode=4096 --fstype="ext3" --grow --size=1 
  25. %packages 
  26. @editors 

cp /root/ks.cfg /tftpboot/ks/

chmod 777 /tftpboot/pxelinux.cfg/default

vim /tftpboot/pxelinux.cfg/default

  1. default ks  #[修改为'ks']
  2. prompt 1 
  3. timeout 3 
  4. display boot.msg 
  5. F1 boot.msg 
  6. F2 options.msg 
  7. F3 general.msg 
  8. F4 param.msg 
  9. F5 rescue.msg 
  10. label linux 
  11.   kernel vmlinuz 
  12.   append initrd=initrd.img 
  13. label text 
  14.   kernel vmlinuz 
  15.   append initrd=initrd.img text 
  16. label ks 
  17.   kernel vmlinuz 
  18.   append ks=nfs:192.168.20.20:/tftpboot/ks/ks.cfg initrd=initrd.img  #[这里是ks的路径] 
  19. label local 
  20.   localboot 1 
  21. label memtest86 
  22.   kernel memtest 
  23.   append - 

7.closed Firewall and SElinux

setup

pxe+dhcp+nfs+tftp自动安装linux[kickstart]
pxe+dhcp+nfs+tftp自动安装linux[kickstart]

8.验证奇迹的时刻来啦

开启需要安装的电脑,倒杯COFFEE,看它自动安装喽。。。。

默认情况下不需要任何设置,如果电脑自动不能找到PXE启动或叫Network boot from XX开机启动模式,就手动选择吧。

一般临时选择是按Esc或F12或F11再或者其它,因电脑品牌而异。。

如果在boot里将设置PXE设置成第一启动选项,记得安装完系统后,改回硬盘启动,否则电脑会一直装系统,,,

9.总结

VM安装需注意几点:

关闭网卡自带的DHCP;

网卡模式用桥接;

最后贴几张PC安装时的图吧

pxe+dhcp+nfs+tftp自动安装linux[kickstart]
pxe+dhcp+nfs+tftp自动安装linux[kickstart]
pxe+dhcp+nfs+tftp自动安装linux[kickstart]
pxe+dhcp+nfs+tftp自动安装linux[kickstart]

继续阅读