Shell脚本攻略:shell实现pxe无人值守安装

目录

一、实验

1.shell实现pxe无人值守安装


一、实验

1.shell实现pxe无人值守安装

(1)脚本截图

 1 echo 'set nu' > ~/.vimrc
  2 systemctl stop firewalld
  3 setenforce 0
  4 umount /dev/sr0 /mnt
  5 mount /dev/sr0 /mnt
  6 cd /etc/yum.repos.d/
  7 mkdir bake
  8 mv *.repo bake/
  9 echo "[local]
 10 name=local
 11 baseurl=file:///mnt
 12 enabled=1
 13 gpgcheck=0
 14 " > local.repo
 15 yum clean all && yum makecache
 16 yum -y install tftp-server
 17 yum -y install xinetd
 18 cat /etc/xinetd.d/tftp  | sed '/^wait/c wait=no'
 19 systemctl start tftp
 20 systemctl enable tftp
 21 systemctl start xinetd
 22 systemctl enable xinetd
 23 yum install -y dhcp
 24 cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
 25 sed -i '14 s/^#//' /etc/dhcp/dhcpd.conf
 26 sed -i '14a next-server 192.168.204.50;' /etc/dhcp/dhcpd.conf
 27 sed -i '15a filename "pxelinux.0";' /etc/dhcp/dhcpd.conf
 28 sed -i -e '34 s/10.254.239.0/192.168.204.0/' -e '34 s/255.255.255.224/255.255.255.0/' /etc/dhcp/dhcpd.conf
 29 sed -i '35c range 192.168.204.51 192.168.204.90;' /etc/dhcp/dhcpd.conf
 30 sed -i '36 s/rtr-239-0-1.example.org, rtr-239-0-2.example.org/192.168.204.50/' /etc/dhcp/dhcpd.conf
 31 systemctl start dhcpd
 32 systemctl enable dhcpd
 33 cd /mnt/images/pxeboot
 34 cp vmlinuz /var/lib/tftpboot/
 35 cp initrd.img /var/lib/tftpboot/
 36 yum -y install syslinux
 37 cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
 38 yum -y install vsftpd
 39 mkdir /var/ftp/centos7
 40 chmod 777 /var/ftp/centos7
 41 cp -rf /mnt/* /var/ftp/centos7/
 42 systemctl start vsftpd
 43 systemctl enable vsftpd
 44 yum install -y system-config-kickstart
 45 pwd=`grep root /etc/shadow | cut -d: -f2`
 46 echo "#platform=x86, AMD64, 或 Intel EM64T
 47 #version=DEVEL
 48 # Install OS instead of upgrade
 49 install
 50 # Keyboard layouts
 51 keyboard 'us'
 52 # Root password
 53 rootpw --iscrypted $pwd
 54 # Use network installation
 55 url --url="ftp://192.168.204.50/centos7"
 56 # System language
 57 lang zh_CN
 58 # Firewall configuration
 59 firewall --disabled
 60 # System authorization information
 61 auth  --useshadow  --passalgo=sha512
 62 # Use graphical install
 63 graphical   
 64 firstboot --disable 
 65 # SELinux configuration
 66 selinux --disabled
 67 # Do not configure the X Window System
 68 skipx 
 69 
 70 # Network information
 71 network  --bootproto=dhcp --device=ens33
 72 # Reboot after installation
 73 reboot
 74 # System timezone
 75 timezone Asia/Shanghai
 76 # System bootloader configuration
 77 bootloader --location=mbr 
 78 # Clear the Master Boot Record
 79 zerombr
 80 # Partition clearing information
 81 clearpart --all --initlabel
 82 # Disk partitioning information
 83 part /boot --fstype="xfs" --size=500
 84 part swap --fstype="swap" --size=4096
 85 part /home --fstype="xfs" --size=4096
 86 part / --fstype="xfs" --grow --size=1
 87 
 88 %post --interpreter=/bin/bash
 89 rm -rf /etc/yum.repos.d/*
 90 echo '[local]
 91 name=local
 92 baseurl=ftp://192.168.204.50/centos7
 93 enabled=1
 94 gpgcheck=0' > /etc/yum.repos.d/local.repo
 95 %end
 96 
 97 
 98 %packages
 99 @base
100 @core
101 @desktop-debugging
102 @dial-up
103 @directory-client
104 @fonts
105 @gnome-desktop
106 @guest-desktop-agents
107 @input-methods
108 @internet-browser
109 @java-platform
110 @multimedia
111 @network-file-system-client
112 @print-client
113 @x11
114 binutils
115 chrony
116 ftp
117 gcc
118 kernel-devel
119 kexec-tools
120 make
121 open-vm-tools
122 patch
123 python
124 
125 %end
126 " > /var/ftp/ks.cfg
127 mkdir /var/lib/tftpboot/pxelinux.cfg
128 echo "default auto
129 prompt 0
130 
131 label auto
132 kernel vmlinuz
133 append initrd=initrd.img method=ftp://192.168.204.50/centos7 ks=ftp://192.168.204.50/ks.cfg
134 
135 label linux text
136 kernel vmlinuz
137 append text initrd=initrd.img method=ftp://192.168.204.50/centos7
138 
139 label linux rescue
140 kernel vmlinuz
141 append rescue initrd=initrd.img method=ftp://192.168.204.50/centos7" > /var/lib/tftpboot/pxelinux.cfg/default
142 
                                                                                           
                                          

(2)运行结果

pxe 

Shell脚本攻略:shell实现pxe无人值守安装_第1张图片

无人值守

Shell脚本攻略:shell实现pxe无人值守安装_第2张图片 Shell脚本攻略:shell实现pxe无人值守安装_第3张图片    Shell脚本攻略:shell实现pxe无人值守安装_第4张图片 Shell脚本攻略:shell实现pxe无人值守安装_第5张图片

Shell脚本攻略:shell实现pxe无人值守安装_第6张图片

(3)问题

(1) 行定位

Shell脚本攻略:shell实现pxe无人值守安装_第7张图片

原因分析:通过关键词检索所在行,ddns1个可以立即搜索到,subnetnetmask存在多个,检索行时无法锁定目标行。

解决方法:设置vim永久显示编号,echo 'set nu' > ~/.vimrc

(2)dhcpd服务启动失败

原因分析:因为dhcp服务是需要先配置一下配置文件才能启动的,刚安装好的配置文件(/etc/dhcp/dhcpd.conf)是空的,所以启动不起来,报错。

解决方法:

       检查文件,发现sed命令替换缺少“/

修改前:

修改后:

解决方法:

Shell脚本攻略:shell实现pxe无人值守安装_第8张图片

      通过网卡配置文件,检查dhcp配置文件,发现服务器地址多了一个“/“,少了“; PXE 引导程序的文件名少了“;”和引号

 Shell脚本攻略:shell实现pxe无人值守安装_第9张图片

 修改前:

修改后:

地址池地址配置错误

Shell脚本攻略:shell实现pxe无人值守安装_第10张图片

 修改前:

修改后:

指定要下载的 PXE 引导程序的文件名引用错误

修改前:

修改后:

(3)无人值守配置文件ks.cfg密码不生效

Shell脚本攻略:shell实现pxe无人值守安装_第11张图片

Shell脚本攻略:shell实现pxe无人值守安装_第12张图片

原因分析:rootpw密码可以使用明文,也可以使用加密过的值。

解决方法:引用当前主机密码。

(4) xinetd没有可用软件包

  • 原因分析:无yum源下载软件

解决方法:配置本地yum

Shell脚本攻略:shell实现pxe无人值守安装_第13张图片

原因分析:拼写错误

解决方法:重新配置

修改前:

修改后:

(5) 虚拟机开机出现dracut:/#

Shell脚本攻略:shell实现pxe无人值守安装_第14张图片

原因分析:安装程序未能找到安装文件,无法加载所致。

解决方法:将Linux系统的内核文件复制到TFTP根目录下

(6)提供ks.cfg文件的服务宕机

原因分析:定位到SYSLINUX服务程序出现了问题,即是FTP在没在匿名用户下,要求FTP必须在匿名用户下。到这一步,表示内核与伪文件系统已经加载完毕,准备根据ks.cfg应答文件进行自动安装,但是提示连接服务,请求文件失败。

解决方法:centos7文件夹赋权。

修改后:

没有使用匿名用户模式,修改vsftpd配置文件。

修改前:

 

修改后:

修改前:

 Shell脚本攻略:shell实现pxe无人值守安装_第15张图片

修改后:

 

 

 

你可能感兴趣的:(数学建模)