设为首页 收藏本站
查看: 203|回复: 0

[经验分享] Centos无人值守自动安装

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-8-17 09:37:08 | 显示全部楼层 |阅读模式
linuxPxe+Dhcp+Nfs+Kickstart无人值守自动安装linux系统
1PXE介绍
PXE(Pre-bootExecution Environment)是由Inter设计的协议,它可以使计算机通过网络启动,协议扥为serverclient两端,PXE client在网卡的ROM中,当计算机引导时,BIOSPXE client调入到内存中执行,并显示出菜单命令,经用户选择PXE启动后PXE client获得网络地址信息,然后将放置在远端服务器上的操作系统文件通过网络下载到本地运行。
既然是通过网络传输,就需要ip地址,就是说在PXE启动过程中,PXE客户机会向DHCP服务器请求分配ip地址,之后PXE client使用TFTPclient通过TFTPTrivial File Transfer Protocol)协议连接服务器下载启动安装程序所需的文件到本地。
2无人值守安装过程
1、         PXEclientDHCP server发送请求
首先,将支持PXE的网络接口卡的计算机的BIOS设置成以PXE方式优先启动,此时,PXE client通过PXE Boot ROM(自启动芯片)会以UDP(简单用户数据协议)的形式在网络中发送一个广播请求,请求DHCP服务器分配ip地址等相关信息。
2、         DHCP服务器应答PXE client
DHCP服务收到客户端的请求,验证是否来自合法的PXE client,验证通过后,它会回应PXE client,会应中包含了为PXE client分配的ip地址、pxelinux启动程序(tftp位置),以及配置文件所在的位置。
3、         PXE客户端请求下载启动文件
客户端收到服务端的回应后,会向tftp服务器请求传送启动系统安装所需的文件,这些启动文件包括:pxelinux.0、pxelinux.cfg/default、vmlinuz、initird.img等文件。
4、         TFTP服务器响应客户端请求并传送文件
当TFTP服务器收到客户端的请求后,它们之间将有更多的信息在客户端与服务端间进行应答,用以决定决动参数,BootROM由tftp通讯协议从boot server下载启动安装程序所必须的文件(pxelinux.0、pxelinux.cfg/default),default文件下载完成后,会根据文件中定义的引导顺序,启动linux安装程序的引导内核。
5、         请求下载自动应答文件
PXE client通过pxelinux.cfg/default文件成功的引导linux安装内核后,安装程序首先必须确定你通过什么安装介质进行安装linux,如果是通过网络安装(NFS、 HTTP、 FTP),则会在这个时候初始化网络,并定位安装系统所需的二进制包以及文件的位置,接着会读取该文件中指定的自动应答文件ks.cfg,然后根据ks.cfg文件请求下载相关文件。
6、         客户端安装操作系统
将ks.cfg文件下载回来后,通过该文件找到OS server(可以使NFS、 HTTP、 FTP)等,并按照该文件的配置请求下载安装过程所需的软件包。
OS server和客户端建立连接后,将开始传输软件包,客户端开始安装操作系统,安装完成后将提示重启计算机。
1配置NFS服务器,用于存放linux安装文件。
2配置TFTP服务器,用于提供客户端PXE引导所必需的文件。
3配置DHCP服务器,用于给客户端提供ip地址及其他信息。
4配置Kickstart,用于自动应答安装。
5使用PXE功能引导客户机。
1安装NFS服务及配置文件共享目录
1)         创建共享目录,并将光盘中的内容拷贝到共享目录中去
mkdir/data/ -p
mount/dev/sr0  /mnt/
cp -a/mnt/* /data/  (太慢)
mount/dev/sr0 /data/
2)         安装配置NFS,将目录共享出去
rpm -qa  nfs*
nfs-utils-1.2.3-39.el6.x86_64
nfs-utils-lib-1.1.5-6.el6.x86_64
echo "/data/ 192.168.0.0/24(ro,sync)" >> /etc/exports
cat /etc/exports
/data/ 192.168.0.0/24(ro,sync)
3)         启动NFS使配置生效
portmap服务在centos中被改名为rpcbind
/etc/init.d/rpcbind start
正在启动 rpcbind:                                 [确定]
/etc/init.d/nfsrestart
关闭 NFS 守护进程:      [确定]
关闭 NFS mountd:        [确定]
关闭 NFS quotas:         [确定]
关闭 NFS 服务:         [确定]
Shuttingdown RPC idmapd:  [确定]
启动 NFS 服务:         [确定]
关掉 NFS 配额:         [确定]
启动 NFS mountd:         [确定]
启动 NFS 守护进程:     [确定]
正在启动 RPC idmapd:    [确定]
配置portmap及nfs服务开机启动
chkconfig  nfs  on
chkconfig  rpcbind on
chkconfig  --list nfs
nfs              0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
chkconfig  --list rpcbind
rpcbind          0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用6:关闭
4)         检查目录是否被正确的共享出来
showmount -e 192.168.152.129
Export list for 192.168.152.129:
/data 192.168.0.0/24
2安装配置TFTP服务器
yum install  tftp-server*
配置tftp服务
#default: off
#description: The tftp server serves files using the trivial file transfer \
#protocol.  The tftp protocol is often used to bootdiskless \
#workstations,download configuration files to network-aware printers, \
# andto start the installation process for some operating systems.
servicetftp
{
socket_type       =dgram
protocol          = udp
wait             = yes
user             = root
server           = /usr/sbin/in.tftpd
server_args       = -s /tftpboot默认的tftp路径,把启动文件放在这里
disable           = no 将yes改成no
per_source       =11
cps             = 100 2
flags             = IPv4
}
重新启动xinetd使配置的tftp生效
/etc/init.d/xinetdrestart
正在启动 xinetd:  [确定]
chkconfigxinetd on
chkconfig--list xinetd
xinetd            0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
3 PXE引导配置(bootstrap)
pxe启动镜像文件由syslinux软件包提供,安装syslinux后生成一个pxelinux.0,将pxelinux.0复制到/tftpboot下即可。
mkdir/tftpboot
cp -a/usr/share/syslinux/pxelinux.0 /tftpboot/
ls -l/tftpboot/
总用量 28
-rw-r--r--.1 root root 26828 2月  22 2013 pxelinux.0
                 用于网络启动的内核配置
将安装光盘目录中的isolinux/{vmlinuz,initrd.img}启动文件复制到某个安装目录比如/tftpboot
cp isolinux/{vmlinuz,initrd.img} /tftpboot/
在/tftpboot目录下创建pxelinux.cfg目录
将光盘中的/isolinux/isolinux.cfg复制成pxelinux.cfg/default
cp /mnt/isolinux/isolinux.cfg pxelinux.cfg/default
default vesamenu.c32//text就是文本安装,linux就是图形安装
#prompt 1//显示boot改成0就不提示,就会直接启动default参数中指定的内容
timeout 600//用户输入前的超时时间,单位为0.1秒

display boot.msg

menu background splash.jpg
menu title Welcome to CentOS 6.5!
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 upgradean existing system
menu default
kernel vmlinuz
append initrd=initrd.imgks=nfs:192.168.152.129:/data/kickstart/ks.cfg
ksdevice=eth0   //如果有多块网卡用此参数
label vesa
  menu label Install system with^basic video driver
  kernel vmlinuz
  append initrd=initrd.imgxdriver=vesa nomodeset
label rescue
  menu label ^Rescue installedsystem
  kernel vmlinuz
  append initrd=initrd.img rescue
label local
  menu label Boot from ^localdrive
  localboot 0xffff
label memtest86
  menu label ^Memory test
  kernel memtest
  append –
label指定在boot提示符下输入的内容如:boot:linux 【enter】
这个会启动“label linux“下标记的kernel和initrd.img 文件
kernel参数指定要启动的内核,同样要注意,默认的路径/tftpboot
append指定追加给内核的参数,能够在grub里使用的追加给内核的参数,在这里也可以使用。
使用kickstart安装,可以在ks参数后直接指定kickstart文件的位置
4安装及配置DHCP服务
1配置dhcp
(1)修改vi /etc/dhcp/dhcpd.conf,指定ip地址等信息。
(2)vi /etc/dhcp/dhcpd.conf中增加tftp-server需要推送给客户端的启动文件(bootstrap),filename  “pxelinux.0”因为tftp默认目录是/tftpboot,所以文件的绝对路径就是/tftpboot/pxelinux.0,当然也可以指定别的目录,还需要指定next-server参数告诉客户端在获取到pxelinux.0文件之后去哪里去获取其余的指定文件next-server 192.168.152.129
vi/etc/dhcp/dhcpd.conf
ddns-update-stylenone;
ignoreclient-updates;
allowbooting; //允许PXE启动
allowbootp; //允许boottp
default-lease-time600;
max-lease-time21600;
optionrouters 192.168.152.1;
subnet192.168.152.0 netmask 255.255.255.0 {
   range192.168.152.110  192.168.152.120;
   next-server 192.168.1.129; //tftp serverip地址
   filename"/data/kickstart/ks.cfg";
   filename"/tftpboot/pxelinux.0" ; //pxelinux启动文件位置
}
启动dhcp并设置为开机自启动
/etc/init.d/dhcpdrestart
chkconfigdhcpd on
chkconfig--list dhcpd
dhcpd      0:关闭   1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
5kickstart安装配置
安装好一台linux服务器后,安装程序都会创建一个kickstart配置文件,记录真实的安装配置生成的文件名叫anaconda-ks.cfg(位置/root/anaconda-ks.cfg
图形化kickstart配置工具redhat-config-kickstart
cp/root/anaconda-ks.cfg /data/kickstart/ks.cfg
chmod644 /data/kickstart/ks.cfg
kickstart配置文件详解
# Kickstart file automaticallygenerated by anaconda.

#version=DEVEL
install  //表示系统安装不是升级
nfs –server=192.168.152.129  --dir=/data/centos nfs方式安装 –server为nfs的ip   --dir为nfs的共享路径
使用http方式
#url –url=http://192.168.152.129/centos5.8
lang zh_CN.UTF-8   字符集设置
keyboard us键盘设置
network --onboot yes --deviceeth0 --bootproto dhcp --noipv6
firewall  --disabled //禁用防火墙  
authconfig  --enableshadow  --passalgo=sha512//系统认证信息
selinux --disabled  //禁用selinux
timezone  --utc Asia/Shanghai
bootloader --location=mbr--driveorder=sda --append="crashkernel=auto rhgb quiet"  //系统引导
# The following is the partitioninformation you requested
# Note that any partitions youdeleted are not expressed
# here so unless you clear allpartitions first, this is
# not guaranteed to work
zerombr
#clearpart --linux --drives=sda
clearpart  --all
part  /boot   --fstype=ext3 --size=200  --asprimary
part  /home  --fstype=ext3 --size=5000
part  /usr  --fstype=ext3 --size=7000
part  /  --fstype=ext3 --size=13000   --asprimary
part  swap   --size=200
reboot
#part pv.008002 --grow --size=1
#volgroup vg_centos--pesize=4096 pv.008002
#logvol / --fstype=ext4--name=lv_root --vgname=vg_centos --grow --size=1024 --maxsize=51200
#logvolswap --name=lv_swap --vgname=vg_centos --grow --size=2016 --maxsize=2016
repo  --name="CentOS"  --baseurl=cdrom:sr0 --cost=100
%packages
@base
@chinese-support
@core
@basic-desktop
@desktop-platform
@directory-client
@fonts
@general-desktop
@graphical-admin-tools
@internet-applications
@internet-browser
@network-file-system-client
#repo  --name="CentOS"  --baseurl=cdrom:sr0 --cost=100
@base
@chinese-support
@core
@debugging
@basic-desktop
@desktop-debugging
@desktop-platform
@directory-client
@fonts
@general-desktop
@graphical-admin-tools
@internet-applications
@internet-browser
@network-file-system-client
@remote-desktop-clients
@server-platform
@server-policy
@workstation-policy
@x11
%end
%post
useradd zhuwei
echo “zhuwei” |passwd   --stdin zhuwei
注意:chmod 755 pxelinux.cfg/权限
chmod 700 /data/kickstart/ks.cfg


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-100088-1-1.html 上篇帖子: NFS服务详细分析 下篇帖子: samba服务器的安装与配置
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表