autoinstall_system—ftp
Syslinux:
一个功能强大的引导加载程序, 可以装在U盘上来引导系统
PXE简介:
预安装环境 . 是Intel公司推出的一款通过网络来引导操作系统的协议 . 广泛应用于网吧无盘系统 .
anaconda-ks.cfg文件介绍:
anaconda-ks.cfg 这个文件可以修改成自动安装的脚本,用于自动安装同样配置的系统。 inux系统在安装时会自动生成一个anaconda-ks.cfg 配置文件 ,文件位于/root 目录中 . anaconda-ks.cfg 里面记录的就是用户在安装系统时所作的操作 , 像选择语言环境 , 硬盘分区 , 安装的软件包 , 网卡IP设置 , 设置主机名 , root密码 ,新建普通等一系列操作
首先,将支持PXE的网络接口卡(NIC)的客户端BIOS设置为网络启动,通过PXE BootROM(自启动芯片)会以UDP协议发送一个广播请求,向网络中的DHCP服务器申请一个IP地址等信息。
DHCP服务器收到客户端的请求,验证是否来自合法的PXE Client请求,验证通过后向客户端返回响应信息,包括:客户端IP地址,pxelinux启动程序(TFTP)位置,以及配置文件所在位置等。
客户端请求传送启动所需文件,包括:pxelinux.0、pxelinux.cfg/default、vmlinuz、initrd.img等文件。
TFTP服务器收到客户端的请求后,彼此间进行通信应答,确定启动参数。BootROM由TFTP通信协议从Boot Server下载启动安装程序所必须文件(pxelinux.0、pxelinux.cfg/default)。default文件下载完成后,会根据该文件中定义的引导顺序,启动Linux安装程序的引导内核。
客户端通过pxelinux.cfg/default文件成功的引导Linux安装内核后,安装程序首先必须确定你通过什么安装介质来安装linux,如果是通过网络安装(NFS, FTP, HTTP),则会在这个时候初始化网络,并定位安装源位置。或许你会说,刚才PXE不是已经获取过IP地址了吗?为什么现在还需要一次?这是由于PXE获取的是安装用的内核以及安装程序等,而安装程序要获取的是安装系统所需的二进制包以及配置文件。由于它们需要的内容不同造成PXE模块和安装程序是相对独立的,PXE的网络配置并不能传递给安装程序。从而进行两次获取IP地址过程。
接着会读取该文件中指定的自动应答文件ks.cfg所在位置,根据该位置请求下载该文件。
将ks.cfg文件下载回来后,通过该文件找到OS Server,并按照该文件的配置请求下载安装过程需要的软件包。
OS Server和客户端建立连接后,将开始传输软件包,客户端将开始安装操作系统。安装完成后,将提示重新引导计算机。这个时候注意,在重新引导的过程中一定要将BIOS修改回从硬盘启动,不然的话又会重复的自动安装操作系统。
在上面介绍中PXE client是需要安装Linux的计算机,TFTP Server、DHCP Server和FTP Server(或NFS Server)运行在另外一台Linux Server上。Bootstrap文件、配置文件、Linux内核都放置在Linux Server上TFTP服务器的根目录下。而Linux根文件系统存放于FTP Server(或NFS Server)的共享目录中。
PXE client在工作过程中,需要三个二进制文件:bootstrap、Linux 内核和Linux根文件系统。Bootstrap文件是可执行程序,它向用户提供简单的控制界面,并根据用户的选择,下载合适的Linux内核以及Linux根文件系统。
VMware Workstation 下的一台Redhat8.2版本的Linux系统 Redhat主机的IP地址为:192.168.9.157
dnf install dhcp-server -y dnf install tftp-server -y dnf install vsftp -y
setenforce 0 systemctl stop firewalld
vim /etc/dhcp/dhcpd.conf
ddns-update-style interim; ignore client-updates; filename "pxelinux.0"; next-server 192.168.9.157; subnet 192.168.9.0 netmask 255.255.255.0 { option routers 192.168.9.1; option subnet-mask 255.255.255.0; option domain-name-servers 114.114.114.114; range dynamic-bootp 192.168.9.200 192.168.9.254; default-lease-time 60; max-lease-time 60; }
systemctl restart dhcpd
查看服务是否启动
systemctl status dhcpd
查看服务进程
netstat -lntup | grep dhcp
systemctl start tftp.socket
查看服务是否启动
systemctl status tftp
mkdir /var/lib/tftpboot/pxelinux.cfg cd /var/lib/tftpboot/pxelinux.cfg
dnf install syslinux -y
cp /mnt/images/pxeboot/initrd.img /var/lib/tftpboot/ cp /mnt/images/pxeboot/vmlinuz /var/lib/tftpboot/ cp /mnt/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
chmod 777 /var/lib/tftpboot/pxelinux.cfg/default
vim /var/lib/tftpboot/pxelinux.cfg/default
将default文件中的部分内容修改为以下内容
1 default linux 61 label linux 62 menu label ^Install Red Hat Enterprise Linux 8.2 63 kernel vmlinuz 64 append initrd=initrd.img ks=ftp://192.168.9.157/ks.cfg
cp /root/anaconda-ks.cfg /var/ftp/ks.cfg
vim /var/ftp/ks.cfg
#repo --name="AppStream" --baseurl=file:///run/install/sources/mount-0000-cdrom/AppStream url --url="ftp://192.168.9.157/pub" # System timezone timezone Asia/Shanghai --isUtc --nontp # Use CDROM installation media #cdrom(有的电脑需要注释他,有的不需要) #放到最后一行,注意不要在两个%之间 reboot
chmod 777 /var/ftp/ks.cfg
mkdir /var/ftp/pub mount /dev/sr0 /var/ftp/pub/
cp /mnt/isolinux/ldlinux.c32 /var/lib/tftpboot/
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
以上三条命令任选其一!
dnf install vsftpd -y
修改配置文件中匿名上传的相关选项
vim /etc/vsftpd/vsftpd.conf
在末尾添加
anon_umask=022 #anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES
找到第12行,将NO改为yes
anonymous_enable=YES
chmod 777 /var/ftp/pub/
[root@ldap var]# getsebool -a | grep ftpd_anon_write ftpd_anon_write --> on [root@ldap ftp]# setsebool ftpd_anon_write on
[root@ldap var]# ll -Z /var/ftp drwxr-xrwx. root root system_u:object_r:public_content_rw_t:s0 pub [root@ldap ftp]# chcon -t public_content_rw_t pub/
如果服务没有启动,就启动服务
systemctl restart vsftp
systemctl status dhcpd
systemctl status tftp
关键部分如同所示:
创建好一个空白虚拟机后,启动该虚拟机,然后等待。
reading…
然后新的Redhat8.2版本的Linux系统就安装好了