电子书新手学做网站,网站建设的要点是什么意思,苏州建筑类网站建设,wordpress 无限分类前言#xff1a; 为啥要用无人值守安装系统#xff1f;很简单的答案#xff01;就两个#xff01; 一个是方便日常工作#xff0c;另一个就是可以用来装逼#xff01; 常规装系统的办法有哪些#xff1f; 光盘安装系统一个服务器DVD内置光驱百千块#xff0c;百台服… 前言 为啥要用无人值守安装系统很简单的答案就两个 一个是方便日常工作另一个就是可以用来装逼 常规装系统的办法有哪些 光盘安装系统一个服务器DVD内置光驱百千块百台服务器都配光驱就浪费了因为一台服务器也就开始装系统能用的上以后用的机会屈指可数。用USB外置光驱插来插去也醉了。U盘安装系统还是同样的问题要一台一台服务器插U盘。网络安装系统(ftp,http,nfs) 这个方法不错只要服务器能联网就可以装系统了但还是需要一台台服务器去敲键盘点鼠标。 无人值守安装系统金坷垃好处都有啥谁说对了就给他 1对于个人作为一名程序猿而且是懂电脑的程序猿祖传的泡咪咪的办法就是帮咪咪装系统从此成为备胎之一 装系统大部分时间都浪费于下一步下一步等操作如果同时要泡大量咪咪广撒网捞鱼这时间是很宝贵的不如自己带个笔记本里面装个虚拟机做上无人值守安装系统不管是linux还是windows都开机就搞定这样就有了充分的时间和女神进行深入交流而不至于浪费了宝贵的时间。 2对于行业自打若干年前 Red Hat 推出了 Kickstart此后我们搞服务器的运维顿觉身价倍增。不再需要刻了光盘一台一台地安装 Linux只要搞定 PXE、DHCP、 TFTP还有那满屏眼花缭乱不知所云的 Kickstart 脚本我们就可以像哈里波特一样轻点魔棒瞬间安装上百台服务器。这一堆花里胡哨的东西可不是一般人都能整明白的没有大专以上学历通不过英语四级 根本别想玩转。总而言之这是一份多么有前途多么有技术含量的工作啊。 结语有时候真相真他妈残酷这就是我开始整无人值守安装系统的初衷知道真相的你是否会流下痛苦的眼泪这种在很多人眼中很高大上的技术就这么被我糟蹋贬低了 1.PXE是什么 PXE(Pre-boot Execution Environment预启动执行环境)是由Intel公司开发的最新技术工作于Client/Server的网络模式支持工作站通过网络从远端服 务器下载映像并由此支持通过网络启动操作系统在启动过程中终端要求服务器分配IP地址再用TFTPtrivial file transfer protocol或MTFTP(multicast trivial file transfer protocol)协议下载一个启动软件包到本机内存中执行由这个启动软件包完成终端基本软件设置从而引导预先安装在服务器中的终端操作系统。 严格来说PXE 并不是一种安装方式而是一种引导方式。进行 PXE 安装的必要条件是在要安装的计算机中必须包含一个 PXE 支持的网卡NIC即网卡中必须要有 PXE Client。PXE 协议可以使计算机通过网络启动。此协议分为 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那么它就可以通过 TFTP 协议到 TFTP Server 上下载所需的文件了。 详细工作流程请参考下面这幅图 PXE的超详细工作过程 PXE Client向DHCP发送请求当计算机开机时第一次登录网络的时候发现本机上没有任何IP地址设定。PXE Client会从自己的PXE网卡启动通过PXE BootROM(自启动芯片)会以UDP(简单用户数据报协议)发送一个广播请求源IP地址是0.0.0.0发送DHCP discover发现信息来寻找DHCP服务器即向目标IP地址是255.255.255.255发送特定的广播信息。网络上每一台安装了TCP/IP协议的主机都会接收到这个广播信息但只有DHCP服务器才会做出响应。DHCP服务器提供信息DHCP服务器收到客户端的请求验证是否来至合法的PXE Client的请求验证通过它将给客户端一个“提供”响应这个“提供”响应中包含了为客户端分配的IP地址和其他设置的DHCP offer信息。DHCP offer提供信息包括pxelinux启动程序(TFTP)位置以及PXE配置文件所在位置(该文件一般是放在一台TFTP服务器上)。DHCP客户机接收IP和服务器的互动DHCP客户端接受到DHCP offer提供信息之后选择第一个接收到的提供信息然后以广播的方式回答一个DHCP request请求信息该信息包含向它所选定的DHCP服务器请求IP地址的内容。当DHCP服务器收到DHCP客户端回答的DHCP request请求信息之后便向DHCP客户端发送一个包含它所提供的IP地址和其他设置的DHCP ack确认信息告诉DHCP客户端可以使用它提供的IP地址。然后DHCP客户机便将其TCP/IP协议与网卡绑定另外除了DHCP客户机选中的 服务器外其他的DHCP服务器将收回曾经提供的IP地址。这是第一次初始化网络。PXE客户端请求下载启动文件客户端收到服务器的“回应”后会回应一个帧以请求传送启动所需文件。这些启动文件包括pxelinux.0、pxelinux.cfg/default、vmlinuz、initrd.img等文件。Boot Server响应客户端请求并传送文件当服务器收到客户端的请求后他们之间之后将有更多的信息在客户端与服务器之间作应答, 用以决定启动参数。BootROM由TFTP通讯协议从Boot Server下载启动安装程序所必须的文件(pxelinux.0、pxelinux.cfg/default)。客户端取得pxelinux.0 文件后之执行该文件向服务器请求下载pxelinux.cfg文件。客户端pxelinux.cfg配置文件后请求vmlinuz文件和initrd.img文件。会根据 该文件中定义的引导顺序启动Linux安装程序的引导内核。请求下载自动应答文件客户端通过pxelinux.cfg/default文件成功的引导Linux安装内核后安装程序首先必须确定你通 过什么安装介质来安装linux如果是通过网络安装(NFS, FTP, HTTP)则会在这个时候初始化网络(这是第二次初始化网络)并定位安装源位置。接着会读取default文件中指定的自动应答文件ks.cfg所在位置根据该位置请求下载 该文件。PXE获取的是安装用的内核以及安装程序等而安装程序要获取的是安装系统所需的二进制包以及配置文件PXE模块和安装程序是相对独立的PXE的网络配置并不能传递给安装程序从而进行两次获取IP地址过程但IP地址在DHCP的租期内是一样的。客户端安装操作系统将ks.cfg文件下载回来后通过该文件找到OS Server并按照该文件的配置请求下载安装过程需要的软件包。OS Server和客户端建立连接后将开始传输软件包客户端将开始安装操作系统。安装完成后将提示重新引导计算机。 2.kickstart是什么 许多系统管理员宁愿使用自动化的安装方法来安装红帽企业 Linux.为了满足这种需要,红帽创建了kickstart安装方法.使用kickstart,系统管理员可以创建一个文件,这个文件包含了在典型的安装过程中所遇 到的问题的答案.Kickstart文件可以存放于单一的服务器上,在安装过程中被独立的机器所读取.这个安装方法可以支持使用单一kickstart文件在多台机器上安装红帽企业Linux,这对于网络和系统管理员来说是个理想的选择. Kickstart给用户提供了一种自动化安装红帽企业Linux的方法它的工作原理时在安装过程中记录典型的需要人工干预填写的各种参数并生成一个名为ks.cfg的文件。如果在安装过程中(不只局限于生成KickStart安装文件的机器)出现要填写参数的情况安装程序首选会去查找KickStart生成的文件如果找到合适的参数就采用所找到的参数;如果没有找到合适的参数便需要安装着手工干预了。所以如果KickStart文件涵盖了安装过程中可能出现的所有需要填写的参数那么安装着完全可以只告诉安装程序从何处去ks.cfg文件然后就去忙自己的事情。等安装完毕安装程序会根据ks.cfg中设置重启系统并结束安装。 3.PXEKickStart自动部署操作系统实战 (1)系统环境准备 [rootkickstart ~]# cat /etc/redhat-release #系统版本
CentOS release 6.5 (Final)
[rootkickstart ~]# uname -r #内核版本
2.6.32-431.el6.x86_64
[rootkickstart ~]# getenforce #检测selinux是否关闭(必须关闭)
Disabled
[rootkickstart ~]# /etc/init.d/iptables status #检测防火墙是否关闭(必须关闭)
iptables: Firewall is not running.
[rootkickstart ~]# ifconfig eth0|awk -F [ :] NR2 {print $4} #查看IP地址
10.0.0.72
[rootkickstart ~]# hostname #查看主机名
kickstart
[rootkickstart ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
--2016-05-24 22:42:45-- http://mirrors.aliyun.com/repo/epel-6.repo
Resolving mirrors.aliyun.com... 115.28.122.210, 112.124.140.210
Connecting to mirrors.aliyun.com|115.28.122.210|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1083 (1.1K) [application/octet-stream]
Saving to: “/etc/yum.repos.d/epel.repo” #安装epel源顺手而为
100%[] 1,083 --.-K/s in 0s 注意 虚拟机网卡采用桥接模式还是使用双网卡eth0为内网网卡(10.0.0.72)eth1为外网网卡(192.168.31.72)不使用NAT模式我们会搭建DHCP服务器在同一局域网多个DHCP服务会有冲突所以最好把路由器的DHCP服务关闭我搭建服务只喜欢用桥接模式就是与众不同不服 (2)安装DHCP服务 1.DHCP是什么 DHCP是一个局域网的网络协议使用UDP协议工作主要有两个用途给内部网络或网络服务供应商自动分配IP地址给用户或者内部网络管理员作为对所有计算机作中央管理的手段。 DHCP的几个概念 DHCP ClientDHCP客户端通过DHCP协议请求IP地址的客户端。DHCP客户端是接口级的概念如果一个主机有多个以太接口则该主机上的每个接口都可以配置成一个DHCP 客户端。交换机上每个Vlan接口也可以配置成一个DHCP客户端。 DHCP ServerDHCP 服务端负责为DHCP客户端提供IP地址并且负责管理分配的IP地址。 DHCP RelayDHCP中继器DHCP客户端跨网段申请IP地址的时候实现DHCP报文的转发功能。 DHCP SecurityDHCP安全特性实现合法用户IP地址表的管理功能 DHCP SnoopingDHCP监听记录通过二层设备申请到IP地址的用户信息 所有客户机的IP地址设定资料都由DHCP服务器集中管理并负责处理客户端的DHCP请求而客户端则会使用从服务器分配下来的IP地址。 DHCP工作原理 2).DHCP服务器IP分配方式 DHCP服务器提供三种IP分配方式 自动分配Automatic Allocation自动分配是当DHCP客户端第一次成功地从DHCP服务器端分配到一个IP地址之后就永远使用这个地址。 动态分配Dynamic Allocation动态分配是当DHCP客户端第一次从DHCP服务器分配到IP地址后并非永久地使用该地址每次使用完后DHCP客户端就得释放这个IP地址以给其他客户端使用。 手动分配手动分配是由DHCP服务器管理员专门为客户端指定IP地址。 3).DHCP服务工作流程 DHCP客户机在启动时会搜寻网络中是否存在DHCP服务器。如果找到则给DHCP服务器发送一个请求。DHCP服务器接到请求后为DHCP 客户机选择TCP/IP配置的参数并把这些参数发送给客户端。 如果已配置冲突检测设置则DHCP服务器在将租约中的地址提供给客户机之前会使用Ping测试作用域中每个可用地址的连通性。这可确保提供给客户的每个 IP地址都没有被使用手动TCP/IP配置的另一台非DHCP计算机使用。 根据客户端是否第一次登录网络DHCP的工作形式会有所不同。客户端从DHCP服务器上获得IP地址的所有过程可以分为以下六个步骤 其中新客户端的租约过程的4个步骤。 3.1) 工作过程1发现阶段(寻找DHCP服务器) 当DHCP客户端第一次登录网络的时候计算机发现本机上没有任何IP地址设定将以广播方式发送DHCP Discovery发现信息来寻找DHCP服务器即向255.255.255.255发送特定的广播信息。因为DHCP Server对应于DHCP客户端是未知的所以DHCP 客户端发出的DHCP Discovery报文是广播包源地址为0.0.0.0目的地址为255.255.255.255。网络上的所有支持TCP/IP的主机都会收到该 DHCP Discovery报文但是只有DHCP Server会响应该报文。 如果网络中存在多个DHCP Server则多个DHCP Server均会回复该DHCP Discovery报文。 如果同一个vlan内没有DHCP Server而该VlanIf配置了DHCP Relay功能则该Vlanif即为DHCP中继DHCP中继会将该DHCP报文的源IP地址修改为该Vlanif的IP地址而目的地址则为 DHCP Relay配置的DHCP Server的IP地址。同时修改DHCP报文中giaddress为VlanIf的IP地址。并以单播将DHCP Discovery发送到DHCP Server端。 3.2) 工作过程2提供阶段(分配IP地址) DHCP Server提供阶段即为DHCP Server响应DHCP Discovery所发的DHCP Offer阶段 DHCP Server收到DHCP Discovery报文后解析该报文请求IP地址所属的Subnet。并从dhcpd.conf文件中与之匹配的subnet中取出一个可用的IP地址 (从可用地址段选择一个IP地址后首先发送ICMP报文来ping该IP地址如果收到该IP地址的ICMP报文则抛弃该IP地址重新选择IP地址 继续进行ICMP报文测试直到找到一个网络中没有人使用的IP地址用以达到防治动态分配的IP地址与网络中其他设备IP地址冲突这个IP地址冲突检 测机制可配置)设置在DHCP Discovery报文中yiaddress字段中表示为该客户端分配的IP地址并且为该Lease设置该Subnet配置的Option例如默认 leases租期最大租期router等信息。 DHCP从地址池中选择IP地址以如下优先级进行选择 1、当前已经存在的Ip Mac的对应关系 2、Client以前的IP地址 3、读取Discovery报文中的Requested Ip Address Option的值如果存在并且IP地址可用 4、从配置的Subnet中选择IP地址 DHCP Server解析DHCP Discovery请求的IP所属的Subnet首先看该DHCP Discovery报文中giaddress是否有DHCP Relay如果有则从giaddress所述的subnet中可用IP地址段中获取并分配IP。如果giaddress没有IP地址则从该 DHCP Server绑定的接口的IP地址所属的网段分配IP地址。 3.3) 工作过程3选择阶段(接受IP地址) DHCP客户端接受到DHCP offer提供信息之后选择第一个接收到的提供信息然后以广播的方式回答一个DHCP request请求信息该信息包含向它所选定的DHCP服务器请求IP地址的内容。 DHCP Client收到若干个DHCP Server响应的DHCP Offer报文后选择其中一个DHCP Server作为目标DHCP Server。选择策略通常为选择第一个响应的DHCP Offer报文所属的DHCP Server。 然后以广播方式回答一个DHCP Request报文该报文中包含向目标DHCP请求的IP地址等信息。之所以是以广播方式发出的是为了通知其他DHCP Server自己将选择该DHCP Server所提供的IP地址。 3.4) 工作过程4确认阶段(IP地址分配确认) 当DHCP服务器收到DHCP客户端回答的DHCP request请求信息之后确认要为该DHCP Client提供的IP地址后便向DHCP客户端发送一个包含它所提供的IP地址和其他设置的DHCP ack确认信息告诉DHCP客户端可以使用它提供的IP地址。然后DHCP客户机便将其TCP/IP协议与网卡绑定另外除了DHCP客户机选中的 DHCP服务器外其他的DHCP服务器将收回曾经提供的IP地址。 3.5) 工作过程5重新登录 以后DHCP客户端每次重新登录网络时就不需要再发送DHCP discover发现信息了而是直接发送包含前一次所分配的IP地址的DHCP request请求信息。当DHCP服务器收到这一信息后它会尝试让DHCP客户机继续使用原来的IP地址并回答一个DHCP ack确认信息。如果客户端DHCP request 内的IP地址在服务器端没有被使用DHCP服务器回复DHCP ACK继续使用IP。如果此IP地址已无法再分配给原来的DHCP客户机使用时则DHCP服务器给DHCP客户机回答一个DHCP nack否认信息。当原来的DHCP客户机收到此DHCP nack否认信息后它就必须重新发送DHCP discover发现信息来请求新的IP地址。 3.6) 工作过程6更新租约 DHCP服务器向DHCP客户机出租的IP地址一般都有一个租借期限期满后DHCP服务器便会收回出租的IP地址。如果DHCP客户机要延长其 IP租约则必须更新其IP租约。DHCP客户机启动时和IP租约期限到达租约的50%时DHCP客户机都会自动向DHCP服务器发送DHCP Renew更新其IP租约的信息续约租期。 2.安装DHCP服务 [rootkickstart ~]# yum -y install dhcp #安装dhcp
#修改dhcpd.conf如下
[rootkickstart ~]# egrep -v ^$|^# /etc/dhcp/dhcpd.conf
ddns-update-style none; #设置与DHCP服务相关联的DNS数据动态更新模式实际的DHCP应用中很少用改参数,设置为none即可。
ignore client-updates; #不允许客户机更新DNS记录
allow booting;
allow bootp;
default-lease-time 21600; #设置默认的IP租用期限
max-lease-time 43200; #设置最大的IP租用期限
subnet 192.168.31.0 netmask 255.255.255.0 { #指定子网网段如果有这个网段的网卡进来dhcp会从这个子网里面找IP
option domain-name-servers 223.5.5.5; #设定DNS服务器
option routers 192.168.31.72; #为客户端设定默认网关
range dynamic-bootp 192.168.31.100 192.168.31.250; #可分配的起始IP到结束IP
option subnet-mask 255.255.255.0; #设置netmask
next-server 192.168.31.72;
filename /data/sys/kickstart/ks.cfg;
next-server 192.168.31.72; #告知客户端TFTP服务器ip
filename pxelinux.0; #告知客户端从TFTP根目录下载pexlinux.0
}
####以下代码是为了下面监听多个网卡特意写上去的如果你想给多个网段分配IP就像我这样干
subnet 10.0.0.0 netmask 255.255.255.0 {
option routers 10.0.0.72;
range dynamic-bootp 10.0.0.100 10.0.0.250;
option subnet-mask 255.255.255.0;
next-server 10.0.0.72;
filename pxelinux.0;
} DHCP指定监听网卡 经过我反复试验另外我看到有些人的博客里面这里写的有一点小小的错误特此说明下。 1监听所有的网卡默认不填就会监听所有的网卡 [rootkickstart dhcp]# vim /etc/sysconfig/dhcpd
# Command line options here
DHCPDARGS 2监听单个网卡后面写上你想监听的网卡的名字如想监听eth0eth1就填它的名字 [rootkickstart dhcp]# vim /etc/sysconfig/dhcpd
# Command line options here
DHCPDARGSeth1 3监听多个网卡填几个就会去监听那几个网卡以空格分开 [rootkickstart dhcp]# vim /etc/sysconfig/dhcpd
# Command line options here
DHCPDARGSeth0 eth1 3.安装TFTP服务 1)TFTP简介 TFTPTrivial File Transfer Protocol,简单文件传输协议是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议提供不复杂、开销不大的文件传输服务。端口号为69。 TFTP是一个传输文件的简单协议它基于UDP协议而实现但是我们也不能确定有些TFTP协议是基于其它传输协议完成的。此协议设计的时候是进行小文件传输的。因此它不具备通常的FTP的许多功能它只能从文件服务器上获得或写入文件不能列出目录不进行认证它传输8位数据。传输中有三种模式netascii这是8位的ASCII码形式另一种是octet这是8位源数据类型最后一种mail已经不再支持它将返回的数据直接返回给用户而不是保存为文件。 2)TFTP安装 [rootkickstart ~]# yum install -y tftp-server
##修改配置文件/etc/xinetd.d/tftp disabled修改为no
[rootkickstart ~]# sed -i s/disable.* yes/disable no/g /etc/xinetd.d/tftp
[rootkickstart ~]# cat /etc/xinetd.d/tftp
# default: off
# description: The tftp server serves files using the trivial file transfer \
# protocol. The tftp protocol is often 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 dgramprotocol udpwait yesuser rootserver /usr/sbin/in.tftpdserver_args -s /var/lib/tftpbootdisable noper_source 11cps 100 2flags IPv4
}
[rootkickstart ~]# /etc/init.d/xinetd start
Starting xinetd: [ OK ]
[rootkickstart ~]# netstat -lntup|grep 69
udp 0 0 0.0.0.0:69 0.0.0.0:* 26648/xinetd 3)TFTP安装web服务nginx 马丹我就是要与众不同大家都用httpd我就要用nginx显示哥的与众不同因为我玩的转不怕出问题。象哥这样出色的男人,无论在什么地方,都像漆黑中的萤火虫一样,那样的鲜明,那样的出众我那忧郁的眼神。。。。咳咳不吹了进入正文 [rootkickstart ~]# mkdir /application/tools -p
[rootkickstart ~]# cd /application/tools/
[rootkickstart tools]# yum install pcre pcre-devel openssl openssl-devel -y
###上官网发现最新的稳定版是1.10.0我去软件更新的速度太快了令人唏嘘啊
[rootkickstart tools]# wget http://nginx.org/download/nginx-1.10.0.tar.gz
--2016-05-26 02:29:39-- http://nginx.org/download/nginx-1.10.0.tar.gz
Resolving nginx.org... 206.251.255.63, 95.211.80.227, 2606:7100:1:69::3f, ...
Connecting to nginx.org|206.251.255.63|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 908954 (888K) [application/octet-stream]
Saving to: “nginx-1.10.0.tar.gz”100%[] 908,954 12.6K/s in 90s 2016-05-26 02:31:13 (9.81 KB/s) - “nginx-1.10.0.tar.gz” saved [908954/908954]
[rootkickstart tools]# tar xf nginx-1.10.0.tar.gz
[rootkickstart tools]# cd nginx-1.10.0
[rootkickstart nginx-1.10.0]# useradd nginx -s /sbin/nologin -M
[rootkickstart nginx-1.10.0]# ./configure --usernginx --groupnginx --prefix/application/nginx1.10.0 --with-http_stub_status_module --with-http_ssl_module
[rootkickstart nginx-1.10.0]# make make install
[rootkickstart nginx-1.10.0]# ln -s /application/nginx1.10.0/ /application/nginx
[rootkickstart nginx-1.10.0]# cd /application/
[rootkickstart application]# ll
total 8
lrwxrwxrwx 1 root root 25 May 26 02:37 nginx - /application/nginx1.10.0/
drwxr-xr-x 6 root root 4096 May 26 02:36 nginx1.10.0
drwxr-xr-x 3 root root 4096 May 26 02:32 tools####简单修改下配置文件
[rootkickstart conf]# grep -vE ^$|# /application/nginx/conf/nginx.conf
user nginx;
worker_processes 1;
error_log logs/error.log;
error_log logs/error.log notice;
error_log logs/error.log info;
pid logs/nginx.pid;
events {worker_connections 1024;
}
http {include mime.types;default_type application/octet-stream;sendfile on;keepalive_timeout 65;server {listen 80;server_name localhost;location / {root html;index index.html index.htm;}error_page 500 502 503 504 /50x.html;location /50x.html {root html;}}
}
[rootkickstart conf]# /application/nginx/sbin/nginx
##########启动后查看日志发现了一个报错缺少一个favicon.ico文件这玩意就是你现在浏览器打开百度后http字符串左边的那个小logo你可以百度在线生成一个
2016/05/26 02:47:03 [error] 29181#0: *4 open() /application/nginx1.10.0/html/favicon.ico failed (2: No such file or directory), client: 192.168.31.100, server: localhost, request: GET /favicon.ico HTTP/1.1, host: 192.168.31.72
###然后我网上百度了下favicon.ico在线制作做了一个然后放到了html目录里面效果就如下,就没有出现报错了 #现在将光盘里面的东西全部拷到nginx下面的html目录下面这次我拷的镜像是centos6.6的
[rootkickstart mnt]# mkdir /application/nginx/html/centos_6_6
[rootkickstart html]# mount /dev/cdrom /mnt/
mount: block device /dev/sr0 is write-protected, mounting read-only
[rootkickstart html]# cd /mnt/
[rootkickstart mnt]# ll
total 712
-r--r--r-- 2 root root 14 Oct 24 2014 CentOS_BuildTag
dr-xr-xr-x 3 root root 2048 Oct 24 2014 EFI
-r--r--r-- 2 root root 212 Nov 28 2013 EULA
-r--r--r-- 2 root root 18009 Nov 28 2013 GPL
dr-xr-xr-x 3 root root 2048 Oct 24 2014 p_w_picpaths
dr-xr-xr-x 2 root root 2048 Oct 24 2014 isolinux
dr-xr-xr-x 2 root root 686080 Oct 24 2014 Packages
-r--r--r-- 2 root root 1354 Oct 20 2014 RELEASE-NOTES-en-US.html
dr-xr-xr-x 2 root root 4096 Oct 24 2014 repodata
-r--r--r-- 2 root root 1706 Nov 28 2013 RPM-GPG-KEY-CentOS-6
-r--r--r-- 2 root root 1730 Nov 28 2013 RPM-GPG-KEY-CentOS-Debug-6
-r--r--r-- 2 root root 1730 Nov 28 2013 RPM-GPG-KEY-CentOS-Security-6
-r--r--r-- 2 root root 1734 Nov 28 2013 RPM-GPG-KEY-CentOS-Testing-6
-r--r--r-- 1 root root 3380 Oct 24 2014 TRANS.TBL
[rootkickstart mnt]# cp -r /mnt/* /application/nginx/html/centos_6_6/
[rootkickstart mnt]# ll /application/nginx/html/centos_6_6/
total 340
-r--r--r-- 1 root root 14 May 26 03:08 CentOS_BuildTag
dr-xr-xr-x 3 root root 4096 May 26 03:08 EFI
-r--r--r-- 1 root root 212 May 26 03:08 EULA
-r--r--r-- 1 root root 18009 May 26 03:08 GPL
dr-xr-xr-x 3 root root 4096 May 26 03:08 p_w_picpaths
dr-xr-xr-x 2 root root 4096 May 26 03:08 isolinux
dr-xr-xr-x 2 root root 278528 May 26 03:10 Packages
-r--r--r-- 1 root root 1354 May 26 03:10 RELEASE-NOTES-en-US.html
dr-xr-xr-x 2 root root 4096 May 26 03:10 repodata
-r--r--r-- 1 root root 1706 May 26 03:10 RPM-GPG-KEY-CentOS-6
-r--r--r-- 1 root root 1730 May 26 03:10 RPM-GPG-KEY-CentOS-Debug-6
-r--r--r-- 1 root root 1730 May 26 03:10 RPM-GPG-KEY-CentOS-Security-6
-r--r--r-- 1 root root 1734 May 26 03:10 RPM-GPG-KEY-CentOS-Testing-6
-r--r--r-- 1 root root 3380 May 26 03:10 TRANS.TBL 这个时候用浏览器访问http://http://192.168.31.72/centos_6_6/检验配置是否正确你会发现报错403 这个时候需要在nginx的配置文件里添加以下参数即可 46 autoindex on; 47 autoindex_exact_size on; 48 autoindex_localtime on; 然后重新访问就发现像不像很多mirrors源网站 4.配置pxe引导 1)PXE引导配置bootstrap syslinux是一个功能强大的引导加载程序而且兼容各种介质。它的目的是简化首次安装Linux的时间并建立修护或其它特殊用途的启动盘。它的安装很简单一旦安装syslinux好之后sysLinux启动盘就可以引导各种基于DOS的工具以及MS-DOS/Windows或者任何其它操作系统。不仅支持采用BIOS结构的主板而且从6.0版也开始支持采用EFI结构的新型主板。 注意SYSLINUX不支持NTFS文件系统所以磁盘必须是FAT(FAT16/FAT32)文件系统 [rootkickstart mnt]# yum -y install syslinux
[rootkickstart mnt]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
[rootkickstart mnt]# cp -a /application/nginx/html/centos_6_6/isolinux/* /var/lib/tftpboot/[rootkickstart mnt]# cd /var/lib/tftpboot/
[rootkickstart mnt]# cd /var/lib/tftpboot/
[rootkickstart tftpboot]# ll
total 38600
-r--r--r-- 1 root root 2048 May 26 03:08 boot.cat
-r--r--r-- 1 root root 84 May 26 03:08 boot.msg
-r--r--r-- 1 root root 334 May 26 03:08 grub.conf
-r--r--r-- 1 root root 34815427 May 26 03:08 initrd.img
-r--r--r-- 1 root root 24576 May 26 03:08 isolinux.bin
-r--r--r-- 1 root root 936 May 26 03:08 isolinux.cfg
-r--r--r-- 1 root root 165080 May 26 03:08 memtest
-rw-r--r-- 1 root root 26759 May 26 03:41 pxelinux.0
-r--r--r-- 1 root root 151230 May 26 03:08 splash.jpg
-r--r--r-- 1 root root 2215 May 26 03:08 TRANS.TBL
-r--r--r-- 1 root root 163728 May 26 03:08 vesamenu.c32
-r-xr-xr-x 1 root root 4152336 May 26 03:08 vmlinuz
在/var/lib/tftpboot/目录下建立一个pxelinux.cfg目录存放客户端的配置文件。
[rootkickstart tftpboot]# pwd
/var/lib/tftpboot
[rootkickstart tftpboot]# mkdir pxelinux.cfg
[rootkickstart tftpboot]# cp /application/nginx/html/centos_6_6/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default 2)default文件解析 [rootkickstart tftpboot]# vim /var/lib/tftpboot/pxelinux.cfg/default
default vesamenu.c32 # 默认加载一个菜单
#prompt 1 # 开启会显示命令行boot: 提示符。prompt值为0时则不提示将会直接启动default参数中指定的内容。
timeout 600 # timeout时间是引导时等待用户手动选择的时间设为1可直接引导单位为1/10秒。display boot.msg # 菜单背景图片、标题、颜色。menu background splash.jpg
menu title Welcome to CentOS 6.6!
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 #00000000label linux # label指定在boot:提示符下输入的关键字比如boot:linux[ENTER]这个会启动label linux下标记的kernel和initrd.img文件。menu label ^Install or upgrade an existing systemmenu defaultkernel vmlinuz # 指定要启动的内核。同样要注意路径默认是/tftpboot目录append initrdinitrd.img # 指定追加给内核的参数initrd.img是一个用来建立仿真目录的镜像详情请看我的centos系列启动流程和内核原理
label vesamenu label Install system with ^basic video driverkernel vmlinuzappend initrdinitrd.img xdrivervesa nomodeset
label rescuemenu label ^Rescue installed systemkernel vmlinuzappend initrdinitrd.img rescue
label localmenu label Boot from ^local drivelocalboot 0xffff
label memtest86menu label ^Memory testkernel memtestappend - 5.创建ks.cfg文件 通常我们在安装操作系统的过程中需要大量的和服务器交互操作为了减少这个交互过程kickstart就诞生了。使用这种 kickstart只需事先定义好一个Kickstart自动应答配置文件ks.cfg通常存放在安装服务器上并让安装程序知道该配置文件的位 置在安装过程中安装程序就可以自己从该文件中读取安装配置这样就避免了在安装过程中多次的人机交互从而实现无人值守的自动化安装。 生成kickstart配置文件的三种方法 方法1、 每安装好一台Centos机器Centos安装程序都会创建一个kickstart配置文件记录你的真实安装配置。如果你希望实现和某系统类似的安 装可以基于该系统的kickstart配置文件来生成你自己的kickstart配置文件。生成的文件名字叫anaconda-ks.cfg位于 /root/anaconda-ks.cfg 方法2、Centos提供了一个图形化的kickstart配置工具。在任何一个安装好的Linux系统上运行该工具就可以很容易地创建你自己 的kickstart配置文件。kickstart配置工具命令为redhat-config-kickstartRHEL3或system- config-kickstartRHEL4RHEL5.网上有很多用CentOS桌面版生成ks文件的文章如果有现成的系统就没什么可说。但没 有现成的也没有必要去用桌面版命令行也很简单。 方法3、阅读kickstart配置文件的手册。用任何一个文本编辑器都可以创建你自己的kickstart配置文件。 官网文档CentOS5 : http://www.centos.org/docs/5/html/Installation_Guide-en-US/s1-kickstart2-options.htmlCentOS6 : https://access.redhat.com/knowledge/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Installation_Guide/s1-kickstart2-options.html官网自带中文版选一下语言即可ks.cfg文件组成大致分为3段 1.命令段 键盘类型语言安装方式等系统的配置有必选项和可选项如果缺少某项必选项安装时会中断并提示用户选择此项的选项 2.软件包段 %packages groupname指定安装的包组 package_name指定安装的包 -package_name指定不安装的包 在安装过程中默认安装的软件包安装软件时会自动分析依赖关系。 3.脚本段可选 %pre:预安装脚本由于只依赖于启动镜像支持的命令很少 %post:后安装脚本基本支持所有命令 而具体的ks.cfg文件的配置我们只需要在已经安装好的linux的root家目录找到anaconda_ks.cfg这个ks文件就是在安装linux后根据用户的安装选项自动生成的 每个项目都由关键字来识别关键字可跟一个或多个参数如果某选项后面跟随了一个等号它后面就必须指定一个值。
关键字 含义install(可选) 明确指定系统此次进行的是全新安装系统而不是升级upgrade是默认项 cdrom(可选) 以本地CD-ROM为源安装系统harddrive (可选) 以硬盘分区中包含的镜像为源安装树安装新系统当以该种方式安装系统时即使指定clearpart --all项源所在分区也不会被重新抹去--partition 指定分区--dir 指定包含镜像的目录
例 harddrive --partition/dev/sdb2 --dir/data/isonfs (可选) 指定从NFS服务器上获取安装树 --server 指定NFS服务器主机名称或IP --dir 包含安装树的目录--opts 可以指定挂载NFS的目录时的挂载选项
例 nfs --server192.168.31.72 --dir/data/isourl (可选) 指定通过FTP或HTTP从网络获取安装树--url 指定资源位置
例 url --url ftp://username:passwordserver/dirurl --url bootloader 必需设定boot loader安装选项 --append 可以指定内核参数,要指定多个参数,使用空格分隔它们。--driveorder 设定设备BIOS中的开机设备启动顺序 --location 设定引导记录的位置,有效的值如下:mbr(默认值)partition(在包含内核的分区的第一个扇区安装引导装载程序)或none(不安装引导装载程序)。
例 bootloader --locationmbr --append“rhgb quiet” --driveordersda,sdbbootloader --locationmbr --driveordersda --appendcrashkernelauto rhgb rhgb quiet quietclearpart 可选在建立新分区前清空系统上原有的分区表默认不删除分区 --all 擦除系统上原有所有分区 --drives 删除指定驱动器上的分区 --initlabel 初始化磁盘卷标为系统架构的默认卷标 --linux 擦除所有的linux分区 --nonedefault不移除任何分区
例 clearpart --driveshda,hdb --all --initlabelzerombr 可选清除mbr引导信息会同时清空系统用原有分区表drivedisk 可选如果使用特殊存储方式时需要指定驱动程序盘位置以便加载存储驱动
1. 将驱动盘拷贝到本地硬盘某分区根目录 drivedisk partition [ --typefstype ]
2. 也可以指定一个网络位置加载驱动程序盘 drivedisk --sourceftp://path/to/drive.img drivedisk --sourcehttp://path/to/drive.img drivedisk --sourcenfs:host://path/to/drive.imgfirewall 可选配置系统防火墙选项
firewall -enable|--disable [ --trust ] device [ --port ] --enable 拒绝外部发起的任何主动连接 --disable 不配置任何iptables防御规则 --trust 指定完全信任网卡设备 --port 使用port:protocol格式指定可以通过防火墙的服务
例 firewall --enable --trust eth0 --trust eth1 --port80:tcpfirewall --disabledselinux 可选设置系统selinux状态默认为启用并处于enforcing模式
selinux [ --disabled|–enforcing|--premissive ]
例selinux --disabledreboot 可选 在系统成功安装完成后默认自动重启系统kickstart方法时在收到你敢装系统完成后会提示按任意键进行重启 在本文件中没有明确指明其他方法时就默认完成方式为reboot 使用 reboot 选项可能会导致安装的死循环这依赖于安装介质和方法。需要特别注意halt 可选 在系统成功安装完成后关机默认为reboot 其他选项还有shutdown、poweroff需要使用请自行参考官方文档。graphical 可选默认值在图形模式下进行kickstart方式安装text 可选以文本方式进行kickstart安装默认为图形界面key (可选) 设置一个安装码(installration number)用于获取RedHat官方的支持服务--skip 跳过key设置不进行设置如果不设置可能跳转到交互模式让用户选取动作keyboard 必需设置键盘类型一般设置为us
例keyboard uslang 必需设置安装过程使用的语言及系统的缺省语言文本模式安装时可能不支持某些语言中、韩...所以可能仍以默认的英文方式安装默认en_us装中文时需要后期%packages部分装上中文支持组件
例 lang en_US timezone 可选 设置系统的时区
timezone [ --utc ] timezone
例 timezone --utc Asia/Shanghaitimezone Asia/Shanghaiauth/authconfig (必需) 设置系统的认证方式默认为加密但不隐藏(shadow) --enablemd5 使用MD5加密方式 --useshadow或—enableshadow 使用隐藏密码 --enablenis 使用NIS认证方式 --nisdomain NIS域 --nisserver NIS服务器 还可以设置LDAP、SMB及Kerberos5认证方式详细请参考官方文档
例 authconfig --useshadow --enablemd5authconfig --enableshadow --passalgosha512 设置密码加密方式为sha512 启用shadow文件。 rootpw 必需 设置系统root账号的密码
rootpw [ --iscrypted ] passwd --iscrypted 表示设置的密码为加密过的串
例 rootpw pa4word rootpw --iscrypted $1$RPYyxobb$/LtxMNLJC7euEARg2Vu2s1rootpw --iscrypted $6$fvyDQYgM0a7kwvth$jAhWo.26MxcNMFwnJNl6011diLKv8Ai/3QapVZhfaXExPz9wAQfrxHfx.4RWK2SPb83OB33MyYX61Xd3h1hvB/network 可选 配置网络信息在网络安装NFS/HTTP/FTP时必须指定 --bootprotodhcp|bootp|static 指定ip获取方式默认为dhcp/bootp;static方法要求在kickstart文件里输入所有的网络信息。 --device 设置安装时激活来进行系统安装的网卡设备该参数只在kickstart文件为本地文件时有效若kickstart配置文件在网络上安装程序会先初始化网卡然后去寻找kickstart文件 --ip ip设置 --gateway 网关 --nameserver DNS设置 --nodns 不设置DNS --netmask 子网掩码 --hostname 设置安装后主机名称 --onboot 设置是否在系统启动时激活网卡 --class 设置DHCP的class值 --noipv4 禁用该设备的ipv4功能 --noipv6 禁用该设备的ipv6功能 如将网络模式设置为静态模式则必须在一行内写上ipnetmask、dns、gateway等信息
例 network –bootprotostatic –ip1.1.1.1 --metmask255.0.0.0 --gateway1.1.1.254 --nameserver1.1.1.2 netmask --bootprotodhcp --deviceeth0network --onboot yes --device eth0 --mtu1500 --bootproto static --ip 10.0.0.32 --netmask 255.255.255.0 --noipv6 --hostname openstack02 network --onboot yes --device eth1 --bootproto static --ip 192.168.31.32 --netmask 255.255.255.0 --gateway 192.168.31.1 --noipv6 --nameserver 223.5.5.5 --hostname openstack02skipx 可选如果该项存在就不对系统的X进行设置xconfig 可选配置X window 如果不给出选项在安装过程中需要手动调整设置当然不安装X时不应该添加该项 --driver 为显卡设置X驱动 --videoram 设置显卡的RAM大小 --defaultdesktop 设置GNOME/KDE作为默认桌面假定这两个桌面环境在%packages例已经安装 --startxonboot 使用图形界面登录系统 --resolution 设置图形界面的分辨率可用值有640*480、800*600、1024*768等确保设置指适合于显示卡及显示器 --depth 设置显示色深可用值有8/16/24/32确保设置值适合于显示设备
例: xconfig --startxonboot --resolution800*600 --depth16services 可选设置禁用或允许列出的服务 --disabled 设置服务为禁用 --enabled 启动服务
例 services --disabled autid,cups,smartd,nfslock 服务之间用逗号隔开不能有空格 iscsi可选指定额外的ISCSI设备
issci --ipaddr ipaddr [options]. --target --port --user --passwordpart/partition install模式必须建立新分区
part mntpoint|swap|pv.id|rdid.id options mntpoint:挂载点是在创建普通分区时指定新分区挂载位置的项挂载点需要格式正确 swap 创建swap分区 raid.id: 表示创建的分区类型为raid型必须用id号进行唯一区别 pv.id 表示所创建的分区类型为LVM型必须用唯一id号进行区别 --size 设置分区的最小值默认单位为M但是不能写单位 --grow 让分区自动增长利用可用的剩余磁盘空间或是增长到设置的maxsize值 --maxsize 设置分区自动增长(grow)时的最大容量值以M为单位但不能写单位 --onpart/--usepart 设置使用原有的分区 --noformat 设置不格式化指定的分区在跟—onpart一同使用时可以避免删除原有分区上的数据在新安装的系统中保留使用数据 --asprimary 强制制定该分区为主分区若指定失败分区会失败导致安装停止 --fstype 新增普通分区时指定分区的类型可以为ext2、ext3、ext4、swap、vfat及hfs --ondisk/--ondrive 设定该分区创建在一个具体的磁盘上 --start 指定分区以磁盘上那个磁道开始需要跟--ondisk参数一块使用 --end 指定分区以磁盘上那个磁道结束需要跟上述两个参数一起使用 --recommended让系统自行决定分区的大小在创建swap分区时若RAM2G则分区大小为2*RAM若RAM2G时分区大小为RAM2G --bytes-pre-inode 指定分区格式化时inode的大小默认值为4096 --fsoptions 指定创建fstab文件时该分区挂载参数项
例 part /boot --fstype“ext3” --size100 part swap --fstype“swap” –size512 part / --bytes-pre-inode4096 --fstype“ext4”--size10000 part /data --onpart/dev/sdb1 --noformat part raid.100 --size2000 part pv.100 --size1000part /boot --fstypeext4 --asprimary --size200 part swap --asprimary --size512 part / --fstypeext4 --grow --asprimary --size200raid (可选) 设置RAID。
raid 挂载点 --levellevel --devicemddevices_name raid组成分区
挂载点 选取根/时注意尽量避免/boot在RAID内除非为RAID1 --level 设置RAID级别 --device RAID设备名称如md0md1... --byte-pre-inode 设置该RAID分区上inode大小若分区文件系统类型不支持该参数会静默忽略参数 --spares 设置RAID的热备盘 --fstype 设置文件系统类型 --fsoptions 设置挂载该文件系统时自定义的一些参数参数写入fstab文件 --useexisting 使用现有的RAID设备并且重新格式化原设备 --noformat 在使用现有的RAID设备时不格式化原有RAID设备
例完整创建一个RAID1设备示例 part raid.10 --size1000 --ondisk/dev/sdb part raid.11 --size1000 --ondisk/dev/sdc raid /data --level1 --devicemd0 raid.10 raid.11volgroup (可选) 创建一个LVM卷组VG
volgroup vg_name partition [options] --useexiting 使用现有的VG并且重新格式化 --noformat 使用现有的VG时不做格式化 --pesize 设置PEphysical extents块大小
例 part pv.11 --size2000 volgroup myvg pv.11logvol (可选) 创建一个LVM逻辑卷LV logvel mnt_point --vgnamevg_name --sizelv_size --namelv_name
[options] --useexiting 使用现有的LV并且重新格式化 --noformat 使用现有的LV时不做格式化 --fstype 指定RAID分区类型 --fsoptions 设置挂载该文件系统时自定义的一些参数参数写入fstab文件 --byte-pre-inode 设置该RAID分区上inode大小 --precent 设定LV大小为VG可用空间的比例
例 part pv.20 --size5000 volgroup mvvg pv.20 logvol /data --vgnamemyvg --size3000 --namemydatafirstboot可选 负责协助配置redhat一些重要的信息。firstboot --disable logging可选 设置日志级别。logging --levelinfo 编写ks.cfg文件 [rootkickstart ~]# grub-crypt
Password:
Retype password:
$6$gWnhJacx.491bO3h$CH1A5OAOw7PVqfU8b5HzOfg4Al1jw.e/8EBrnrjhfQrMZULSGf9.wgcnPTU0XELbIKVc/iziGSOuSA0Lasebq/
[rootkickstart ~]# cat /application/nginx/html/config/ks.cfg
# Kickstart file automatically generated by anaconda.#versionDEVEL
install
url --urlhttp://192.168.31.72/centos_6_6/
lang en_US.UTF-8
keyboard us
network --device eth0 --bootprotodhcp --onbootyes --noipv6 --hostnameren --nameserver223.5.5.5
rootpw 123456
#rootpw --iscrypted $6$kVSaWPdxFSfDq79S$JV1UqfQo0wQK6lreQ0beWgoko/RXmq.CcwL42yIbPyQEXrIWj.G6nmJymMJE.ISJwjaXy6iF7rRfhz3T.SFAC1
firewall --disabled
authconfig --enableshadow --passalgosha512
selinux --disabled
timezone Asia/Shanghai
bootloader --locationmbr --driveordersda --appendnomodeset crashkernelauto rhgb quiet
firstboot --disable
logging --levelinfo
zerombr
# The following is the partition information you requested
# Note that any partitions you deleted are not expressed
# here so unless you clear all partitions first, this is
# not guaranteed to work
#clearpart --none#part /boot --fstypeext4 --asprimary --size200
#part swap --asprimary --size512
#part / --fstypeext4 --grow --asprimary --size200clearpart --all --initlabel
part /boot --fstypeext4 --asprimary --size200
part swap --asprimary --size1024
part / --fstypeext4 --grow --asprimary --size200
reboot#repo --nameCentOS --baseurlcdrom:sr0 --cost100%packages
base
compat-libraries
core
debugging
development
dial-up
hardware-monitoring
performance
server-policy
sgpio
device-mapper-persistent-data
systemtap-client
tree
lrzsz
telnet
nmap
%post
wget -O /tmp/youhua.sh http://192.168.31.72/config/youhua.sh /dev/null
/bin/sh /tmp/youhua.sh
%end 整合编辑default配置文件 [rootlinux-node1 ~]# vim /var/lib/tftpboot/pxelinux.cfg/default default ren prompt 0 label ren kernel vmlinuz append initrdinitrd.img kshttp://192.168.31.72/config/ks.cfg ksdeviceeth1 # 告诉安装程序ks.cfg文件在哪里 # ksdeviceeth1代表当客户端有多块网卡的时候要实现自动化需要设置从哪一块网卡开始安装不指定的话安装的时候系统会让你选择那就不叫全自动化了。如果在ks.cfg文件里是使用全部都是dhcp分配ip所有的网卡都会被分配ip这里只是选从哪个网卡开始安装而不是只给这个网卡进行分配ip其他没填的就不分配IP。会给所有的网卡都分配ip的如果你你选择dhcp方式分配ip不是static分配 新建虚拟机进行测试 成功 最后不要忘了将服务都加入开机自启动不要让机器重启后服务就挂了 [rootkickstart ~]# echo ######nginx is start for kickstart by ren /etc/rc.local
[rootkickstart ~]# echo /application/nginx/sbin/nginx /etc/rc.local
[rootkickstart ~]# chkconfig xinetd off
[rootkickstart ~]# chkconfig dhcpd off
[rootkickstart ~]# echo ######dhcpd is start for kickstart by ren /etc/rc.local
[rootkickstart ~]# echo /etc/init.d/dhcpd start /etc/rc.local
[rootkickstart ~]# echo ######tftp is start for kickstart by ren /etc/rc.local
[rootkickstart ~]# echo /etc/init.d/xinetd start /etc/rc.local 转载于:https://blog.51cto.com/renjunjie622/1782543