个人理解的大致原理如下:
客户机通过网卡启动,找dhcp服务器要ip地址和pxe文件所在位置,
pxe通过dhcp告知的tftp服务器去加载vmlinuz和initrd.img,
tftp配置会告知自动应答文件位置,然后客户机继续拉取ks.cfg
然后ks.cfg配置告知安装镜像位置,从而完成系统安装。
以下为步骤:
第一步:安装并配置dhcp服务器
yum -y install dhcp vi /etc/dhcp/dhcpd.conf #可以从/usr/share/doc/dhcp*/dhcpd.conf.sample复制范本 #dhcpd.conf #Sample configuration file for ISC dhcpd ddns-update-style interim; ignore client-updates; subnet 192.168.2.0 netmask 255.255.255.0{ range 192.168.2.240 192.168.2.250; option subnet-mask 255.255.255.0; #option domain-name vipjpw.com; option domain-name-servers 192.168.2.1; option routers 192.168.2.1; #作者:石头 #本文地址: 无人值守批量安装linux操作系统方法 #https://blog.linuxnb.com/index.php/post/51.html default-lease-time 600; max-lease-time 7200; next-server 192.168.2.162; #指定tftp服务器; filename "pxelinux.0"; #指定pxe文件 } service dhcpd start chkconfig dhcpd on #如果启动不成功,可以查看/var/log/messages里面的信息
第二步:安装配置tftp服务器
yum -y install tftp-server vim /etc/xinetd.d/tftp 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 } #共享路径为/tftpboot
第三步:安装syslinux
yum -y install syslinux cp /usr/share/syslinux/pxelinux.0 /tftpboot #复制pxelinux.0文件到共享目录 umount /dev/cdrom mount /dev/cdrom /media cp /media/isolinux/{vmlinuz,initrd.img} /tftpboot #复制vmlinuz和initrd.img到共享目录 mkdir /tftpboot/pxelinux.cfg cp /media/isolinux/isolinux.cfg /tftpboot/pxelinux.cfg/default #复制光盘镜像目录下的isolinux.cfg到共享目录如上并重命名为default chmod 644 /tftpboot/pxelinux.cfg/default vim /tftpboot/pxelinux.cfg/default default linux timeout 600 display boot.msg menu title Welcome to my CentOS #作者:石头 #本文地址: 无人值守批量安装linux操作系统方法 #https://blog.linuxnb.com/index.php/post/51.html label linux menu label ^Install or upgrade an existiong system menu default kernel vmlinuz append initrd=initrd.img ks=http://192.168.2.112/media/ks/ks.cfg #这里指定自动应答文件ks.cfg的位置,可以使用文件共享等方式,我这里使用nginx提供 lable rescue menu label ^Rescue installed system kernel vmlinuz append initrd=initrd.img rescue service xinetd restart chkconfig xinetd on service iptables stop
第四步:创建ks.cfg
yum -y install system-config-kickstart system-config-kickstart
这东西有图形界面,当大家看到图形界面就都知道了。如果不会的,可以虚拟机安装一个图形界面的系统玩玩,我这里就不贴图了,大家见谅。
生成好ks.cfg文件后大家可以看看这个配置文件,详细参数可以网上找找说明什么的,这东西我也搞不太清楚。
第五步:安装文件共享服务器提供安装镜像
(网上大部分教程都是使用的nfs服务器,我这里是用的nginx)
关于nginx安装配置我这里就不详细说了。
service nginx start chkconfig nginx on
防火墙开80端口,或者直接关掉防火墙服务
我的做法是直接把下载下来的系统镜像iso文件里面的文件全部复制到nginx服务的html目录。
umount /dev/cdrom mount /dev/cdrom /media cp -r /media/* /html/media/ #假设nginx的html目录为根下的/html目录
然后将生成的ks.cfg放入nginx服务的对应目录
ks=http://192.168.2.112/media/ks/ks.cfg
接下来将nginx服务网站目录下的/media/repodata下的文件全部根据repomd.xml改下后缀名,
比如 media/repodata/repomd.xml 文件内 有如下一段
<data type="primary_db">
<checksum type="sha256">0dafccfdbf892f02acca8267ade4bdcee7280a682e65dc7e29145f3341fd7a8c</checksum>
<open-checksum type="sha256">4b2eb9c43c432dde3528fe5bd88fc9ba4f01ef5eb5e0ca2ea8f7665eefd6dd86</open-checksum>
<location xml:base="media://1385726732.061157#1" href="repodata/0dafccfdbf892f02acca8267ade4bdcee7280a682e65dc7e29145f3341fd7a8c-primary.sqlite.bz2"/>
<timestamp>1385726992.5</timestamp>
<database_version>10</database_version>
<size>4595171</size>
<open-size>20478976</open-size>
</data>
接下来就是根据这一段将
media/repodata/0dafccfdbf892f02acca8267ade4bdcee7280a682e65dc7e29145f3341fd7a8c
这个文件改名
改成如下后缀名,文件名称不变
0dafccfdbf892f02acca8267ade4bdcee7280a682e65dc7e29145f3341fd7a8c-primary.sqlite.bz2
(意思就是根据xml文件改后缀)
同理,其余所有文件都这样改一下。
是根据xml文件里面的内容改后缀名,不是自己随便乱改。如果不改的话,客户机安装系统过程中会报错。
当然,如果你不是复制的镜像所有文件,而是直接挂载镜像的话,就不会有问题,这一步改后缀名可以忽略。
另外nginx提供的安装系统的文件在ks.cfg里面会有地址指定。
#作者:石头
#本文地址:https://blog.linuxnb.com/index.php/post/51.html
#无人值守批量安装linux操作系统方法
至此客户机开机F12就可以自动安装系统了。
下面我将贴出我生成的ks.cfg文件,更多说明请大家网上查找。
(注意:此ks.cfg文件会清空客户机sda硬盘并重新分区,请大家根据自己的需要修改,切记切记,数据无价,尽量使用虚拟机先玩)
#platform=x86, AMD64, 或 Intel EM64T #version=DEVEL # Firewall configuration firewall --disabled # Install OS instead of upgrade install # Use network installation url --url="http://192.168.0.174/media/" # 貌似这个地址最后面那个左斜线不能省略 # 这个地址是通过nginx提供的服务 # Root password rootpw --iscrypted $1$Hrp.zNEg$rpZnK6u7s.CUJey5iV9ym1 # root的密码:123456 # System authorization information auth --useshadow --passalgo=md5 # Use text mode install text # System keyboard keyboard us # System language lang zh_CN # SELinux configuration selinux --disabled # Do not configure the X Window System skipx # Installation logging level logging --level=info # Reboot after installation reboot # 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 --initlabel # Disk partitioning information part /boot --asprimary --fstype="ext4" --ondisk=sda --size=200 part swap --fstype="swap" --ondisk=sda --size=512 part / --fstype="ext4" --grow --ondisk=sda --size=1 #作者:石头 #本文地址:https://blog.linuxnb.com/index.php/post/51.html #无人值守批量安装linux操作系统方法 %packages --ignoremissing vim screen gcc gcc-c++ openssh openssh-server openssh-clients vim-enhanced %end
----------------------其它常见问题-------------------------------
如下报错
Unable to download the kickstart file. Please modify the kickstart parameter below or press Cancel to proceed as an interactive installation.
原因:
可能原因有四种:
(1)权限问题。
(2)NFS配置问题。
(3)ks配置文件路径错误。
(4)iptables和selinux设置问题。
(5)PXE server与Client时间不一致。
解决办法:
(1)检查ks配置文件的权限,是否为755或者更高。
(2)检查NFS的/etc/exports配置内容和服务,并测试是否能够访问。
(3)检查ks配置文件路径和,ks中指定的镜像路径是否正确。
(4)检查iptables配置和selinux的是否已关闭。
(5)用date检查PXE本地时间是否正确,并查看Client时间(无系统可查看BIOS),两者时间否是一致。
------------------------------------------
如果安装过程中出现这个,安装停止在这个界面,请将内存调到至少1G,然后再试试。
-
« 上一篇:
FastDFS-v5.0.8安装及配置心得
-
/var/log目录下的日志文件功能粗解
:下一篇 »