PXE 网络自动安装

PXE(preboot execute environment)网络自动安装

Anaconda是RedHat、CentOS、Fedora等Linux的安装管理程序。它可以提供文本、图形等安装管理方式,并支持Kickstart等脚本提供自动安装的功能。此外,其还支持许多启动参数,熟悉这些参数可为安装带来很多方便。该程序的功能是把位于光盘或其他源上的数据包,根据设置安装到主机上。为实现该定制安装,它提供一个定制界面,可以实现交互式界面供用户选择配置(如选择语言,键盘,时区等信息)。Anaconda的大部分模块用Python编写,有少许的载入模块用C编写。
   Anaconda支持的管理模式:
   (1)Kickstart提供的自动化安装;
   (2)对一个RedHat实施upgrade;
   (3)Rescuse模式对不能启动的系统进行故障排除。
   要进入安装步骤,需要先有一个引导程序引导启动一个特殊的Linux安装环境系统;引导有多种方式:
   (1)基于网络方式的小型引导镜像,需要提供小型的引导镜像;
   (2)U盘引导,通过可引导存储介质中的小型引导镜像启动安装过程;  
   (3)基于PXE的网络安装方式,要提供PXE的完整安装环境;
   (4)其他bootloder引导(如GRUB)。
   可用的安装方式:本地CDROM、硬盘驱动器、网络方式(NFS、FTP、HTTP)。
   通过网络方式安装时,不论通过FTP、HTTP还是NFS方式共享安装,可以将安装光盘先拷贝到网络服务器上保存为iso镜像,然后loop挂载到共享目录或网页目录(当然,拷贝镜像中的所有文件到指定位置或直接挂载到共享目录也可),而通过NFS方式时,可以直接将光盘的iso文件放到共享目录即可,安装程序挂载共享目录后可以自动识别镜像。
   对于Kickstart,它是一个利用Anconda工具实现服务器自动化安装的方法。通过生成的kickstart配置文件ks.cfg,服务器安装可以实现从裸机到全功能服务的的非交互式(无人值守式)安装配置;ks.cfg是一个简单的文本文件,文件包含Anconda在安装系统及安装后配置服务时所需要获取的一些必要配置信息(如键盘设置,语言设置,分区设置等)。Anconda直接从该文件中读取必要的配置,只要该文件信息配置正确无误且满足所有系统需求,就不再需要同用户进行交互获取信息,从而实现安装的自动化。但是配置中如果忽略任何必需的项目,安装程序会提示用户输入相关的项目的选择,就象用户在典型的安装过程中所遇到的一样。一旦用户进行了选择,安装会以非交互的方式(unattended)继续。使用kickstart可以实现流线化自动化的安装、快速大量的裸机部署、强制建立的一致性(软件包,分区,配置,监控,安全性)、以及减少人为的部署失误。
   使用Kickstart方法安装的过程包括创建一个kickstart文件、创建有kickstart文件的引导介质或者使这个文件在网络上可用、筹备一个安装树、开始ks安装(anconda自身启动 -->选取ks安装模式--> 从ks文件读取配置 --> 最后安装)。创建kickstart配置文件可以使用任何文本编辑器,也可以使用图形化配置工具system-config-kickstat(需要安装system-config-kickstart.noarch包)。
工作原理:个人电脑开机后, 在获得控制权之前先做自我测试。
由¨ Bootprom 送出 DHCPDISCOVER ,进过三次握手,获取 IP 地址,tftp服务器地址及pxe程序(pxelinux.0) ;客户端会自动下载内核镜像文件(vmlinuz),RAM镜像(initrd.img),给系统的安装提供一个Linux安装引导平台,安装时这个画面上的引导菜单内容在default文件中,它指明了ks.cfg所在位置及根文件系统;
例子:

Centos 6.4系统的自动安装

需要ftp服务器、tftp 服务器 、dhcp server 及system-config-kickstart 工具


[root@localhost ~]# mount /dev/cdrom/mnt/cdrom

[root@localhost ~]# vim /etc/yum.repos.d/CentOS-Media.repo


[media]

name=CentOS-media

baseurl=file:///mnt/cdrom/

gpgcheck=1

enabled=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

~                                                      

[root@localhost ~]# yum install dhcp

[root@localhost ~]# yum install tftp

[root@localhost ~]# yum install tftp-server

[root@localhost ~]# yum install vsftpd


[root@localhost ~]# mkdir /tftpboot/

[root@localhost ~]# mkdir /tftpboot/pxelinux.cfg/

[root@localhost ~]# cp /mnt/cdrom/isolinux/isolinux.cfg /tftpboot/pxelinux.cfg/default

引导菜单

[root@localhost ~]# vim /tftpboot/pxelinux.cfg/default


default linux

#prompt 1

timeout 3


display boot.msg


menu background splash.jpg

menu title Welcome to CentOS 6.4!

menu color border 0 #ffffffff #00000000

menu color sel 7 #ffffffff #ff000000

menu color title 0 #ffffffff #00000000

menu color tabmsg 0 #ffffffff #00000000

menu color unsel 0 #ffffffff #00000000

menu color hotsel 0 #ff000000 #ffffffff

menu color hotkey 7 #ffffffff #ff000000

menu color scrollbar 0 #ffffffff #00000000


label linux

menu label ^Install or upgrade an existing system

menu default

kernel vmlinuz

append initrd=initrd.img ks=ftp://192.168.1.1/ks.cfg

label vesa

menu label Install system with ^basic video driver

kernel vmlinuz

append initrd=initrd.img xdriver=vesa nomodeset

label rescue

menu label ^Rescue installed system

kernel vmlinuz

append initrd=initrd.img rescue

label local

menu label Boot from ^local drive

localboot 0xffff

label memtest86

menu label ^Memory test

kernel memtest

append �C





[root@localhost ~]# cp /mnt/cdrom/images/pxeboot/vmlinuz /tftpboot/

[root@localhost ~]# cp /mnt/cdrom/images/pxeboot/initrd.img /tftpboot/

[root@localhost ~]# cp/usr/share/syslinux/pxelinux.0 /tftpboot/

vmlinuz 内核initrd.img 内核驱动、pxelinux.0 pxe专用启动文件(syslinux包中)


[root@localhost ~]# vim /etc/xinetd.d/tftp


# default: off

# description: The tftp server serves filesusing the trivial file transfer \

#      protocol.  The tftp protocol isoften used to boot diskless \

#      workstations, download configuration files to network-aware printers, \

#      and to start the installation process for some operating systems.

service tftp

{

      socket_type             = dgram

      protocol                = udp

      wait                    = yes

      user                    = root

      server                  =/usr/sbin/in.tftpd

       server_args             = -s /tftpboot

       disable                 = no

      per_source              = 11

      cps                     = 100 2

      flags                   = IPv4

}

[root@localhost ~]# vim /etc/dhcp/dhcpd.conf


ddns-update-style interim;

ignore client-updates;

allow booting;

allow bootp;

# A slightly different configuration for aninternal subnet.

subnet 192.168.1.0 netmask 255.255.255.0 {

range 192.168.1.2 192.168.1.100;

option routers 192.168.1.1;

 filename "/pxelinux.0";

 next-server 192.168.1.1;

default-lease-time 600;

max-lease-time 7200;

}


[root@localhost ~]# yum installsystem-config-kickstart

产生ks.cfg文件


[root@localhost ~]# vim /var/ftp/ks.cfg

#platform=x86, AMD64, or Intel EM64T

#version=DEVEL

# Firewall configuration

firewall --disabled

# Install OS instead of upgrade

install

# Use network installation

url--url="ftp://192.168.1.1/pub"

# Root password

rootpw --iscrypted$1$K9XvRXLA$yctwyy0BHpSRP5FMJdRHD0

# System authorization information

auth --useshadow  --passalgo=sha512

# Use text mode install

text

firstboot --disable

# System keyboard

keyboard us

# System language

lang zh_CN

# SELinux configuration

selinux --disabled

# Installation logging level

logging --level=info


# System timezone

timezone Asia/Shanghai

# Network information

network --bootproto=dhcp --device=eth0 --onboot=on

# System bootloader configuration

bootloader --location=mbr

# Partition clearing information

clearpart --all

# Disk partitioning information

part /boot --fstype="ext4"--size=200

part / --fstype="ext4"--size=10000

part swap --fstype="swap"--size=512

%packages

@chinese-support

@core

@server-policy

%end

reboot




[root@localhost ~]# service iptables stop

[root@localhost ~]# setenforce 0

[root@localhost ~]# service dhcpd restart

[root@localhost ~]# service xinetd restart

[root@localhost ~]# service vsftpd restart


[root@localhost ~]# mount /dev/cdrom/var/ftp/pub/


本文出自 “我爱技术” 博客,转载请与作者联系!

你可能感兴趣的:(linux,pxe,Anaconda,网络制动安装)