使用kickstart自动化安装

总体介绍

概述

用户可以使用kickstart工具进行openEuler系统的自动化安装,包括如下两种方式:

  • 半自动化安装:安装人员不需要手动设定操作系统的键盘、语言、分区等具体属性(通过kickstart实现自动化),但是需要手动指定kickstart文件的位置。
  • 全自动化安装:实现操作系统的安装过程全自动化。

优缺点对比

使用kickstart工具进行半自动化安装和全自动化安装的优缺点对比如表1所示,用户可以自行选择安装方式。

表 1 优缺点对比

安装方式

优点

缺点

半自动化安装

不需要准备tftp,pxe,dhcp等服务

需要手动指定kickstart文件的位置

全自动化安装

操作系统的全自动化安装

需要配置tftp,dhcpd,pxe等服务

背景知识

kickstart

kickstart是一种无人值守的安装方式。它的工作原理是在安装过程中记录典型的需要人工干预填写的各种参数,并生成一个配置文件(ks.cfg),在安装过程中,安装程序首先会去查找ks配置文件,如果找到合适的参数,就采用所找到的参数;如果没有找到合适的参数,便需要安装者手工设定。所以,如果kickstart文件涵盖了安装过程中需要设定的所有参数,安装者只需要告诉安装程序从何处取ks.cfg文件,就能实现系统安装的自动化。

kickstart 安装提供一个安装过程自动化的方法,可以是部分自动化,也可以是完全自动化。

PXE

PXE(Pre-boot Execution Environment,预启动执行环境),工作于Client/Server的网络模式,支持PXE的客户端在启动过程中,能够从DHCP服务器获取IP结合TFTP(trivial file transfer protocol)等协议可以实现客户端的网络引导和安装。

TFTP

TFTP(Trivial File Transfer Protocol,简单文件传输协议),该协议用来实现客户机与服务器之间的简单文件传输,它提供不复杂、开销不大的文件传输服务。

半自动化安装指导

环境要求

使用kickstart进行openEuler系统的半自动化安装的环境要求如下:

  • 物理机/虚拟机(虚拟机创建可参考对应厂商的资料)。包括使用kickstart工具进行自动化安装的计算机和被安装的计算机。
  • httpd:存放kickstart文件。
  • ISO: openEuler-21.09-aarch64-dvd.iso

操作步骤

使用kickstart进行openEuler系统的半自动化安装的操作步骤如下:

环境准备

使用kickstart自动化安装 - 图1 说明:
安装之前,请确保http服务器的防火墙处于关闭状态。关闭防火墙可参照如下命令:

  1. iptables -F
  1. httpd的安装与服务启动。

    1. # dnf install httpd -y
    2. # systemctl start httpd
    3. # systemctl enable httpd
  2. kickstart文件的准备。

    1. # mkdir /var/www/html/ks
    2. # vim /var/www/html/ks/openEuler-ks.cfg ===>根据已安装openEuler系统自动生成的anaconda-ks.cfg修改得到
    3. ====================================
    4. ***以下内容需要根据实际需求进行修改***
    5. #version=DEVEL
    6. ignoredisk --only-use=sda
    7. autopart --type=lvm
    8. # Partition clearing information
    9. clearpart --none --initlabel
    10. # Use graphical install
    11. graphical
    12. # Use CDROM installation media
    13. cdrom
    14. # Keyboard layouts
    15. keyboard --vckeymap=cn --xlayouts='cn'
    16. # System language
    17. lang zh_CN.UTF-8
    18. # Network information
    19. network --bootproto=dhcp --device=enp4s0 --ipv6=auto --activate
    20. network --hostname=openeuler.com
    21. # Root password
    22. rootpw --iscrypted $6$fQE83lxEZ48Or4zc$j7/PlUMHn29yTjCD4Fi44WTZL/RzVGxJ/7MGsZMl6QfE3KjIVT7M4UrhFXbafvRq2lUddAFcyWHd5WRmXfEK20
    23. # Run the Setup Agent on first boot
    24. firstboot --enable
    25. # Do not configure the X Window System
    26. skipx
    27. # System services
    28. services --disabled="chronyd"
    29. # System timezone
    30. timezone Asia/Shanghai --isUtc--nontp
    31. %packages
    32. @^minimal-environment
    33. @standard
    34. %end
    35. %anaconda
    36. pwpolicy root --minlen=8 --minquality=1 --notstrict --nochanges --notempty
    37. pwpolicy user --minlen=8 --minquality=1 --notstrict --nochanges --emptyok
    38. pwpolicy luks --minlen=8 --minquality=1 --notstrict --nochanges --notempty
    39. %end
    40. %post
    41. #enable kdump
    42. sed -i "s/ ro / ro crashkernel=1024M,high /" /boot/efi/EFI/openEuler/grub.cfg
    43. %end
    44. =====================================

    使用kickstart自动化安装 - 图2 说明:
    密码密文生成方式:

    1. # python3
    2. Python 3.7.0 (default, Apr 1 2019, 00:00:00)
    3. [GCC 7.3.0] on linux
    4. Type "help", "copyright", "credits" or "license" for more information.
    5. >>> import crypt
    6. >>> passwd = crypt.crypt("myPasswd")
    7. >>> print (passwd)
    8. $6$63c4tDmQGn5SDayV$mZoZC4pa9Jdt6/ALgaaDq6mIExiOO2EjzomB.Rf6V1BkEMJDcMddZeGdp17cMyc9l9ML9ldthytBEPVcnboR/0
  3. 将ISO镜像文件挂载到需要安装openEuler计算机的光驱上。

    另外,也可以选择NFS等网络安装,kickstart文件中需要指定安装源位置(默认是cdrom)。

安装系统

  1. 启动系统进入安装选择界面。

    1. 在“启动安装”中的“安装引导界面”中选择“Install openEuler 21.09”,并按下“e”键。
    2. 启动参数中追加“inst.ks=http://server ip/ks/openEuler-ks.cfg”。

      使用kickstart自动化安装 - 图3

    3. 按“Ctrl+x”,开始系统的自动安装。

  2. 确认系统安装完毕。

    系统安装完毕以后会自动重启,如果优先从光驱启动,会再次进入到安装界面,此时关闭计算机,调整启动顺序(优先从硬盘启动)。

    使用kickstart自动化安装 - 图4

全自动化安装指导

环境要求

使用kickstart进行openEuler系统的全自动化安装的环境要求如下:

  • 物理机/虚拟机(虚拟机创建可参考对应厂商的资料)。包括使用kickstart工具进行自动化安装的计算机和被安装的计算机。
  • httpd:存放kickstart文件。
  • tftp:提供vmlinuz和initrd文件。
  • dhcpd/pxe:提供DHCP服务。
  • ISO:openEuler-21.09-aarch64-dvd.iso。

操作步骤

使用kickstart进行openEuler系统的全自动化安装的操作步骤如下:

环境准备

使用kickstart自动化安装 - 图5 说明:
安装之前,请确保http服务器的防火墙处于关闭状态。关闭防火墙可参照如下命令:

  1. iptables -F
  1. httpd的安装与服务启动。

    1. # dnf install httpd -y
    2. # systemctl start httpd
    3. # systemctl enable httpd
  2. tftp的安装与配置。

    1. # dnf install tftp-server -y
    2. # vim /etc/xinetd.d/tftp
    3. service tftp
    4. {
    5. socket_type = dgram
    6. protocol = udp
    7. wait = yes
    8. user = root
    9. server = /usr/sbin/in.tftpd
    10. server_args = -s /var/lib/tftpboot
    11. disable = no
    12. per_source = 11
    13. cps = 100 2
    14. flags = IPv4
    15. }
    16. # systemctl start tftp
    17. # systemctl enable tftp
    18. # systemctl start xinetd
    19. # systemctl status xinetd
    20. # systemctl enable xinetd
  3. 安装源的制作。

    1. # mount openEuler-21.09-aarch64-dvd.iso /mnt
    2. # cp -r /mnt/* /var/www/html/openEuler/
  4. 设置和修改kickstart配置文件 openEuler-ks.cfg,参考3安装源的目录,此处选择http安装源。

    1. #vim /var/www/html/ks/openEuler-ks.cfg
    2. ====================================
    3. ***以下内容根据实际需求进行修改***
    4. #version=DEVEL
    5. ignoredisk --only-use=sda
    6. autopart --type=lvm
    7. # Partition clearing information
    8. clearpart --none --initlabel
    9. # Use graphical install
    10. graphical
    11. # Keyboard layouts
    12. keyboard --vckeymap=cn --xlayouts='cn'
    13. # System language
    14. lang zh_CN.UTF-8
    15. #Use http installation source
    16. url --url=http://192.168.122.1/openEuler/
    17. %post
    18. #enable kdump
    19. sed -i "s/ ro / ro crashkernel=1024M,high /" /boot/efi/EFI/openEuler/grub.cfg
    20. %end
    21. ...
  5. 修改pxe配置文件grub.cfg, 可参考如下内容(注意:openEuler当前不支持bls格式的cfg文件)。

    ```

    cp -r /mnt/images/pxeboot/* /var/lib/tftpboot/

    cp /mnt/EFI/BOOT/grubaa64.efi /var/lib/tftpboot/

    cp /mnt/EFI/BOOT/grub.cfg /var/lib/tftpboot/

    ls /var/lib/tftpboot/

    grubaa64.efi grub.cfg initrd.img TRANS.TBL vmlinuz

    vim /var/lib/tftpboot/grub.cfg

    set default=”1”

    function load_video { if [ x$feature_all_video_module = xy ]; then

    1. insmod all_video

    else

    1. insmod efi_gop
    2. insmod efi_uga
    3. insmod ieee1275_fb
    4. insmod vbe
    5. insmod vga
    6. insmod video_bochs
    7. insmod video_cirrus

    fi }

    load_video set gfxpayload=keep insmod gzio insmod part_gpt insmod ext2

    set timeout=60

  1. ### BEGIN /etc/grub.d/10_linux ###
  2. menuentry 'Install openEuler 21.03 ' --class red --class gnu-linux --class gnu --class os {
  3. set root=(tftp,192.168.1.1)
  4. linux /vmlinuz ro inst.geoloc=0 console=ttyAMA0 console=tty0 rd.iscsi.waitnet=0 inst.ks=http://192.168.122.1/ks/openEuler-ks.cfg
  5. initrd /initrd.img
  6. }
  7. ```
  1. DHCP的配置(可以使用dnsmasq代替 )。

    1. # dnf install dhcp -y
    2. #
    3. # DHCP Server Configuration file.
    4. # see /usr/share/doc/dhcp-server/dhcpd.conf.example
    5. # see dhcpd.conf(5) man page
    6. #
    7. # vim /etc/dhcp/dhcpd.conf
    8. ddns-update-style interim;
    9. ignore client-updates;
    10. filename "grubaa64.efi";    # pxelinux 启动文件位置;
    11. next-server 192.168.122.1;  # (重要)TFTP Server 的IP地址;
    12. subnet 192.168.122.0 netmask 255.255.255.0 {
    13. option routers 192.168.122.1; # 网关地址
    14. option subnet-mask 255.255.255.0; # 子网掩码
    15. range dynamic-bootp 192.168.122.50 192.168.122.200; # 动态ip范围
    16. default-lease-time 21600;
    17. max-lease-time 43200;
    18. }
    19. # systemctl start dhcpd
    20. # systemctl enable dhcpd

安装系统

  1. 在“Start boot option”界面按下“F2”选择从网络pxe启动,开始自动化安装。

    使用kickstart自动化安装 - 图6

    使用kickstart自动化安装 - 图7

    使用kickstart自动化安装 - 图8

  2. 进入系统全自动化安装界面。

  3. 确认系统安装完毕。

    使用kickstart自动化安装 - 图9