利用PXE自动化安装centos7
前言
PXE的功能及原理。大概解释一下意思就是:
- 启动计算机的时候如果没有插入U盘以及光驱等介质的话,boot启动项是有一个从PXE启动的选项,如果都没有则会从pxe启动。
- PXE上的DHCP客户端会向DHCP服务器,申请IP地址,DHCP服务器分配一个IP址地给它,同时DHCP服务器还会告诉客户端配置文件名称以及TFTP服务器的地址,让PXE客户端去下载。
- 配置文件(一般是pxelinux.0)告诉PXE客户端系统的安装启动项是在pxelinux.cfg目录下面的default这个文件里。
环境准备
这里我提前安装了一台centos7,来当服务器。
服务器需要安装:
dhcp服务:用来给刚开机的客户端分配ip地址以及告知配置文件和tftp服务器的IP地址。
tftp服务:用来给客户端提供所需配置文件的下载路径。
httpd/vsftpd服务:两者选一即可,用来让客户端下载镜像。
xinetd服务:用来接管tftp服务,来做一些策略。
syslinux: 需要从这里来拷贝pxelinux.0等文件。
总之一条命令:
[root@localhost tftpboot]
服务器需要的配置:
- 关闭防火墙
关闭防火墙
systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0
getenforce
把/etc/selinux/config 里的SELINUX=enforcing 改成 SELINUX=disabled
- 配置静态ip
因为dhcp服务器需要,所以需要把服务器更改成静态ip
[root@localhost ~]
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPADDR=192.168.2.1
NETMASK=255.255.255.0
NAME="ens37"
DEVICE="ens37"
ONBOOT="yes"
- 配置dhcp服务
[root@localhost ~]
subnet 192.168.2.0 netmask 255.255.255.0 {
range 192.168.2.10 192.168.2.100;
option routers 192.168.2.1;
option subnet-mask 255.255.255.0;
default-lease-time 600;
max-lease-time 7200;
next-server 192.168.2.1;
filename "pxelinux.0";
}
- 挂载镜像
mount /dev/sr0 /mnt
mkdir /var/www/html/rhel7.2
cp -a /mnt /var/www/html/rhel7.2
- 配置tftp目录和服务
1)首先配置一下tftp的文件目录
mkdir /tftpboot
mkdir /tftpboot/pxelinux.cfg
cp /usr/share/syslinux/pxelinux.0 /tftpboot/
cp /usr/share/syslinux/chain.c32 /tftpboot/
cp /usr/share/syslinux/mboot.c32 /tftpboot/
cp /usr/share/syslinux/memdisk /tftpboot/
cp /usr/share/syslinux/menu.c32 /tftpboot/
cp /var/www/html/media/images/pxeboot/vmlinuz /tftpboot/
cp /var/www/html/media/images/pxeboot/initrd.img /tftpboot/
cp /var/www/html/media/isolinux/isolinux.cfg /tftpboot/pxelinux.cfg/default
最后文件的目录结构是
/tftpboot/
├── chain.c32
├── initrd.img
├── mboot.c32
├── memdisk
├── menu.c32
├── pxelinux.0
├── pxelinux.cfg
│ └── default
└── vmlinuz
2)配置tftp服务使用xinetd托管,更改内容我用
vi /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
}
然后 systemctl stop tftp.socket 关闭tftp
使用xinetd打开tftp systemctl restart xinetd.service
- 配置tftp目录里pxelinux.cfg/default的文件内容
[root@localhost ~]
default menu.c32
timeout 100
prompt 0
menu title PXE MENU
label rescue
menu rescue red hat
kernel vmlinuz
append initrd=initrd.img repo=http://192.168.2.1/rhel7.2 rescue quiet
-
编译安装squashfs
从网站https://sourceforge.net/projects/squashfs/files/squashfs/ 下载 squashfs4.3.tar.gz
[root@localhost youyou]
[root@localhost youyou]
[root@localhost squashfs-tools]
[root@localhost squashfs-tools]
-
修改救援模式使用的镜像文件
[root@localhost youyou]
[root@localhost LiveOS]
[root@localhost LiveOS]
[root@localhost LiveOS]
[root@localhost LiveOS]
[root@localhost LiveOS]
[root@localhost LiveOS]
reboot
[root@localhost LiveOS]
[root@localhost LiveOS]
vgchange -a y
mkdir -p /youyou/boot
mount /dev/mapper/rhel-root /youyou
mount /dev/sda1 /youyou/boot
mount -o bind /dev /youyou/dev
mount -o bind /proc /youyou/proc
mount -o bind /run /youyou/run
mount -o bind /sys /youyou/sys
sshpass
tar xvf
sshpass
chroot /youyou/ grub2-mkconfig -o /boot/grub2/grub.cfg
touch /youyou/.autorelabel
reboot
[root@localhost LiveOS]
[Unit]
Description=jioaben
After=rc-local.service
[Service]
Type=forking
User=root
ExecStart=/etc/init.d/a.sh
[Install]
WantedBy=rescue.target
[root@localhost LiveOS]
[Unit]
Description=/etc/rc.d/rc.local Compatibility
ConditionFileIsExecutable=/etc/rc.d/rc.local
After=network.target
[Service]
Type=forking
ExecStart=/etc/rc.d/rc.local start
TimeoutSec=0
RemainAfterExit=yes
[Install]
WantedBy=rescue.target
[root@localhost LiveOS]
[root@localhost rescue.target.wants]
[root@localhost rescue.target.wants]
[root@localhost rescue.target.wants]
[root@localhost LiveOS]
[root@localhost LiveOS]
-
注意事项
编译安装squashfs,需要安装xz-devel,ziib-devel
打包进sshpass ssh -o StrictHostKeyChecking 选项可以免秘钥
touch .autolabel文件 在修改boot后,需要在原系统的目录的根目录,创建这个文件,否则用户无法登录
注意system启动顺序,通过systemd-analyze plot > boot.svg 查看启动顺序
开机自动运行就是把服务放在 wants里面的超链接,就行了
chroot /youyou ls chroot 可以单次切根,并在切过的目录执行一个命令
挂载激活lvm 注意原来的系统时放在lvm上,还是放在磁盘上的
mount -o bind 绑定切根之前的mout 切根之前需要绑定目录,否则会提示无法找到dev设备
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)