williamzhuone_1

导航

 

PXE+kickstart自动安装centos7操作系统

在配置前,首先关闭系统中的防火墙、selinux

1、配置网络服务器

方式1:http/https服务器充当iso源存放服务器

1 [root@localhost ~]# yum install httpd -y                      # 安装httpd服务
2 [root@localhost ~]# mkdir /media/rhel7-install                # 创建挂载目录
3 [root@localhost ~]# mount /dev/sr0 /media/rhel7-install       # 挂载光盘iso镜像
4 [root@localhost ~]# cp -r /media/rhel7-install /var/home/html/   # iso源文件复制到httpd服务访问目录下
6 [root@localhost ~]# systemctl enable --now httpd              # httpd服务开机自启
可通过 http://ip地址/rhel7-install/ 访问操作系统安装源

方式2:ftp服务器充当iso源存放服务器

[root@localhost ~]# yum install -y vsftpd                   # 安装vsftpd服务
[root@localhost ~]# mkdir /media/rhel7-install              # 创建镜像挂载目录
[root@localhost ~]# mount /dev/sr0 /media/rhel7-install     # 挂载ISO镜像到rhel7-install目录
[root@localhost ~]# cp -r /media/rhel7-install /var/ftp/   # 拷贝rhel7-install目录拷贝到vftpd的访问目录下
[root@localhost ~]# systemctl enable --now vsftpd.service   # vsftpd服务开机自启
[root@localhost ~]# systemctl start vsftpd.service          # 启动vsftpd服务
可通过 ftp://IP地址/rhel7-install 验证能否看到操作系统安装源(window打开文件管理器-->网络-->输入访问地址查看)

2、配置PXE网络引导服务

2.1、安装DHCP服务

step1:安装DHCP服务

[root@localhost ~]# yum install -y dhcp

step2:设置DHCP配置文件进行相关配置

[root@localhost ~]# vim /etc/dhcp/dhcpd.conf
# 内容如下:
option space pxelinux;
option pxelinux.magic code 208 = string;
option pxelinux.configflie code 209 = text;
option pxelinux.pathprefix code 210 = text;
option pxelinux.reboottime code 211 = unsigned integer 32;
option architecture-type code 93 = unsigned integer 16;
​
subnet 192.168.50.0 netmask 255.255.255.0 {  # DHCP所在网段(依据实际情况而改动)
    option routers 192.168.50.2;       # 网关(按具体情况修改)
    range 192.168.50.81 192.168.50.89;  # DHCP的IP地址池(按具体情况修改)
​
    class “pxeclients” {
        match if substring (option vendor-class-identifier, 0, 9) = “PXEClient”;    
        next-server 192.168.50.80;  # pxe server服务器的IP地址if option architecture-type = 00:07 {
            filename “uefi/shim.efi”;
        } else {
            filename “pxelinux/pxelinux.0”;
        }
    }
}

2.2、安装TFTP服务器用来存放bootloader引导

step1:安装tftp服务器,并启动tftp服务

[root@localhost ~]# yum install -y tftp-server xineted      # 安装tftp-server和xineted服务
[root@localhost ~]# vim /etc/xinetd.d/tftp
# 编辑内容如下:
    service tftp
    {
        socket_type             = dgram
        protocol                = udp
        wait                    = yes
        user                    = root
        server                  = /usr/sbin/in.tftpd
        server_args             = -s /var/lib/tftpboot  # tftpd服务默认的访问目录
        disable                 = no        # 将disable的值改为no,启动tfpd服务
        per_source              = 11
        cps                     = 100 2
        flags                   = IPv4
    }
[root@localhost ~]# systemctl restart xinetd.service   # 重启xinetd服务(tftpd受xinetd管理)
[root@localhost ~]# systemctl enable xinetd.service    # 设置开机自启

step2:安装syslinux,用来生成pxelinux.0文件

[root@localhost ~]# yum install -y syslinux
# 注意:syslinux是一个fat文件系统的内核加载器(安装完成后会在/usr/share/syslinux/目录下有个pxelinux.0文件)

step3:复制pxelinux.0文件到tftp共享目录(/var/lib/tftpboot/)中

[root@localhost ~]# mkdir /var/lib/tftpboot/pxelinux
[root@localhost ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/pxelinux

step4:在/var/lib/tftpboot/pxelinux目录下创建子目录images/RHEL-7用来存放boot镜像文件vmlinuz驱动文件

[root@localhost ~]# mkdir -p /var/lib/tftpboot/pxelinux/images/RHEL-7/
[root@localhost ~]# cp /var/ftp/rhel7-install/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/pxelinux/images/RHEL-7/

2.3、创建kickstart自动应答配置文件

kickstart用来实现在安装过程中自动应答启动的配置,实现自动启动操作系统。

kickstart的说明见如下:https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/installation_guide/chap-kickstart-installations

通过拷贝/root目录下的anaconda-ks.cfg文件,并自定义配置,并且把配置文件放在可以网络访问的位置:操作系统安装源的位置

注意:可以在https://access.redhat.com/labs/kickstartconfig/自动生成ks文件,但不支持一些高级分区功能。

制作简单的ks.cfg文件:

step1:拷贝anaconda-ks.cfg文件为ks.cfg文件,并编辑

[root@localhost ~]# cp /root/anaconda-ks.cfg  /root/ks.cfg
[root@localhost ~]# vim /root/ks.cfg
# 编辑的ks.cfg内容如下:
    #version=DEVEL
    # System authorization information
    auth --enableshadow --passalgo=sha512
    #firewall
    firewall --disable  
    #install mode
    install
    url --url ftp://192.168.50.80/rhel7-install/
    #after installation
    reboot
    # Use graphical install
    graphical
    # Run the Setup Agent on first boot
    firstboot --enable
    ignoredisk --only-use=sda
    # Keyboard layouts
    keyboard --vckeymap=cn --xlayouts='cn'
    # System language
    lang zh_CN.UTF-8
    # Network information
    network  --bootproto=dhcp --device=ens33 --onboot=on --ipv6=auto --activate
    network  --hostname=localhost.localdomain
    # Root password
    rootpw --plaintext 12345678
    # Selinux mode
    selinux --permissive
    # x configuration
    skipx
    # System services
    services --enabled="chronyd"
    # System timezone
    timezone Asia/Shanghai
    # System bootloader configuration
    bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda
    autopart --type=lvm
    # Partition clearing information
    clearpart --none --initlabel
​
    %packages
    @^minimal
    @core
    chrony
    kexec-tools
    %end
​
    %addon com_redhat_kdump --enable --reserve-mb='auto'
    %end
​
    %anaconda
    pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
    pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok
    pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty
    %end

step2:将编辑好的ks.cfg文件拷贝到网络源的镜像所在位置,如vstfp服务作为网络源时:

[root@localhost ~]# cp /root/ks.cfg /var/ftp/rhel7-install/
[root@localhost ~]# chmod 777 /var/ftp/rhel7-install/ks.cfg # 赋予ks.cfg文件具有读写、执行权限

2.4、创建内核引导配置文件

在tfpt服务器的目录(/var/lib/tftpboot/)下的pxelinux目录下创建内核引导配置文件:

step1、在/var/lib/tftpboot/pxelinux目录下创建pxelinux.cfg子目录

[root@localhost ~]# mkdir /var/lib/tftpboot/pxelinux/pxelinux.cfg

step2、在pxelinux.cfg目录下添加操作系统启动的配置文件 default

 

[root@localhost ~]# vim /var/lib/tftpboot/pxelinux/pxelinux.cfg/default
# 编辑内容如下:
default linux
prompt 1
timeout 60
display boot.msg
​
label linux
  menu label ^Install system
  menu default
  kernel images/RHEL-7/vmlinuz
  append initrd=images/RHEL-7/initrd.img ip=dhcp inst.repo=ftp://192.168.50.80/rhel7-install/ inst.ks=ftp://192.168.50.80/rhel7-install/ks.cfg
label vesa
 menu label Install system with ^basic video driver
 kernel images/RHEL-7/vmlinuz
 append initrd=images/RHEL-7/initrd.img ip=dhcp inst.xdriver=vesa nomodeset inst.repo=ftp://192.168.50.80/rhel7-install/
label rescue
  menu label ^Rescue installed system
  kernel images/RHEL-7/vmlinuz
  append initrd=images/RHEL-7/initrd.img rescue
label local
 menu label Boot from ^local drive
 localboot 0xffff

 

3、启动客户端,验证安装过程

注意:如果是虚拟机环境,必须手动创建虚拟机来指定虚拟机的硬件配置,并不能实现真正的全自动,对于大批量的部署相对比较麻烦;所以显然pxe+kickstart更适合于物理机环境,只要配置好pxe server,在每台物理机上按下电源键就能实现自动安装。

posted on 2022-08-31 09:13  williamzhuone_1  阅读(118)  评论(0编辑  收藏  举报