目录
一、实验
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
无人值守
(3)问题
(1) 行定位
原因分析:通过关键词检索所在行,ddns是1个可以立即搜索到,subnet、netmask存在多个,检索行时无法锁定目标行。
解决方法:设置vim永久显示编号,echo 'set nu' > ~/.vimrc
(2)dhcpd服务启动失败
原因分析:因为dhcp服务是需要先配置一下配置文件才能启动的,刚安装好的配置文件(/etc/dhcp/dhcpd.conf)是空的,所以启动不起来,报错。
①解决方法:
检查文件,发现sed命令替换缺少“/“
修改前:
修改后:
②解决方法:
通过网卡配置文件,检查dhcp配置文件,发现服务器地址多了一个“/“,少了“;” PXE 引导程序的文件名少了“;”和引号
修改前:
修改后:
地址池地址配置错误
修改前:
修改后:
指定要下载的 PXE 引导程序的文件名引用错误
修改前:
修改后:
(3)无人值守配置文件ks.cfg密码不生效
原因分析:rootpw密码可以使用明文,也可以使用加密过的值。
解决方法:引用当前主机密码。
(4) xinetd没有可用软件包
- 原因分析:无yum源下载软件
解决方法:配置本地yum源
②原因分析:拼写错误
解决方法:重新配置
修改前:
修改后:
(5) 虚拟机开机出现dracut:/#
原因分析:安装程序未能找到安装文件,无法加载所致。
解决方法:将Linux系统的内核文件复制到TFTP根目录下
(6)提供ks.cfg文件的服务宕机
原因分析:定位到SYSLINUX服务程序出现了问题,即是FTP在没在匿名用户下,要求FTP必须在匿名用户下。到这一步,表示内核与伪文件系统已经加载完毕,准备根据ks.cfg应答文件进行自动安装,但是提示连接服务,请求文件失败。
解决方法:centos7文件夹赋权。
修改后:
没有使用匿名用户模式,修改vsftpd配置文件。
修改前:
修改后:
修改前:
修改后: