无人值守批量安装linux操作系统方法

发表于 LINUX 分类,标签:

 

个人理解的大致原理如下:

客户机通过网卡启动,找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),两者时间否是一致。

 ------------------------------------------

 安装记录.png

如果安装过程中出现这个,安装停止在这个界面,请将内存调到至少1G,然后再试试。




0 篇评论

发表我的评论