4、PXE/Cobbler
PXE(Pre-boot Execution Environment,预启动执行环境)是由 Intel 公司开发的技术,工作于 Client/Server 网络模式,支持客户端通过网络从远程服务器下载映像,通过网络启动操作系统。
严格来说,PXE 并不是一种安装方式,而是一种引导方式。进行 PXE 安装的必要条件是在要安装的计算机中必须包含一个 PXE 支持的网卡(NIC),即网卡中必须要有 PXE Client。
PXE 协议可以使计算机通过网络启动。此协议分为 Client 端和 Server 端,而 PXE Client 则在网卡的 ROM 中。当计算机引导时,BIOS 把 PXE Client 调入内存中执行,然后由 PXE Client 将放置在远端的文件通过网络下载到本地运行。
运行 PXE 协议需要设置 DHCP 服务器和 TFTP 服务器。DHCP 服务器会给 PXE Client(将要安装系统的主机)分配一个 IP 地址,由于是给 PXE Client 分配 IP 地址,所以在配置 DHCP 服务器时需要增加相应的 PXE 设置。
此外,在 PXE Client 的 ROM 中,已经存在了 TFTP Client,那么它就可以通过 TFTP 协议到 TFTP Server 上下载所需的文件了。
Legacy Bios PXE 工作流程大致如下:
UEFI Bios PXE 工作流程大致如下:
4.1、PXE Kickstart
4.1.1、DHCP 配置
安装 dhcpd 服务:
yum install dhcp -y
编辑 dhcp 配置文件:
vi /etc/dhcp/dhcpd.conf
#
# DHCP Server Configuration file.
# see /usr/share/doc/dhcp-server/dhcpd.conf.example
# see dhcpd.conf(5) man page
#
# 说明:option pxe-system-type,此选项可以指定x86或者ARM使用不同的引导文件,07和09为x86 UEFI;0b为ARM UEFI。
default-lease-time 600;
max-lease-time 7200;
ddns-update-style none;
option pxe-system-type code 93 = unsigned integer 16;
subnet 192.168.88.0 netmask 255.255.255.0 {
range 192.168.88.111 192.168.88.199;
option routers 192.168.88.118;
option broadcast-address 192.168.88.255;
option subnet-mask 255.255.255.0;
option ntp-servers 192.168.88.118;
option time-servers 192.168.88.118;
option domain-name-servers 192.168.88.118;
if option pxe-system-type = 00:07 {
filename "x86_uefi/BOOTX64.EFI";
} else if option pxe-system-type = 00:09 {
filename "x86_uefi/BOOTX64.EFI";
} else if option pxe-system-type = 00:0b {
filename "arm_uefi/BOOTAA64.EFI";
} else {
filename "pxelinux/pxelinux.0";
}
# filename "x86_uefi/BOOTX64.EFI";
# filename "arm_uefi/BOOTAA64.EFI";
next-server 192.168.88.118;
}
#绑定MAC地址和IP
host pc1{
hardware ethernet 2C:97:B1:C7:F3:6A;
fixed-address 192.168.88.113;
}
host pc2{
hardware ethernet b8:59:9f:bd:f7:92;
fixed-address 192.168.88.134;
}
重启 dhcp 服务:
systemctl restart dhcpd
systemctl status dhcpd
4.1.2、TFTP 配置
安装 TFTP 软件:
yum install tftp xinetd tftp-server –y
修改 TFTP 配置文件,默认情况下 TFTP 服务是禁用的,所以要修改 tftp 配置文件来开启服务将 disable 的值更改为 no 即可,其中 tftp 的默认根目录为 /var/lib/tftpboot,如下:
vi /etc/xinetd.d/tftp
# default: off
# description: The tftp server serves files using the trivial file transfer \
# protocol. The tftp protocol is often used to boot diskless \
# workstations, download configuration files to network-aware printers, \
# and to start the installation process for some operating systems.
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /var/lib/tftpboot
disable = no
per_source = 11
cps = 100 2
flags = IPv4
}
关闭防火墙,否则 TFTP 获取文件时会显示超时:
systemctl stop firewalld
systemctl disable firewalld
重启 TFTP 服务:
systemctl restart xinetd
systemctl restart tftp.socket
systemctl status tftp.socket
systemctl status xinetd
xinetd 是 tftp 的守护进程,重启 xinetd 服务会重新加载所有被 xinetd 守护的服务。
4.1.3、HTTP 配置
安装 HTTP 软件:
yum install httpd –y
systemctl restart httpd
systemctl status httpd
将 x86 和 ARM 版本的 OS 镜像上传到本地 root 目录下:
cd /var/www/html/
mkdir centos76_x86
mkdir centos76_arm
将 root 目录下的 ISO 镜像挂载到 /mnt 目录下:
mkdir /mnt/x86
mkdir /mnt/arm
mount /root/CentOS-7-x86_64-DVD-1810-76.iso /mnt/x86
mount /root/CentOS-7-aarch64-Everything-1810.iso /mnt/arm
然后把挂载目录中的文件全部复制到对应 http 文件夹中:
cp -r /mnt/x86/* /var/www/html/centos76_x86/
cp -r /mnt/arm/* /var/www/html/centos76_arm/
注意:如果测试 http 服务时出现欢迎界面,而不是文件索引,可以如下修改。
Options Indexes FollowSymLinks AllowOverride None Require all granted 如果 ks 文件放在 http 根目录下,需要开放根目录下载权限。
AllowOverride none Require all granted 另外,ks 文件本身也要有可读权限。
4.1.4、配置引导文件
4.1.4.1、获取引导文件
在 TFTP 目录下创建 UEFI x86、UEFI ARM 和 Legacy Bios 的引导文件夹:
cd /var/lib/tftpboot/
mkdir x86_uefi
mkdir arm_uefi
mkdir pxelinux
将 x86 和 ARM 的引导文件复制到对应目录:
cd /var/www/html/
# 复制UEFI x86所需文件
cp -r centos76_x86/EFI/BOOT/* /var/lib/tftpboot/x86_uefi/
cp centos76_x86/images/pxeboot/vmlinuz /var/lib/tftpboot/x86_uefi/
cp centos76_x86/images/pxeboot/initrd.img /var/lib/tftpboot/x86_uefi/
# 复制UEFI arm所需文件:
cp -r centos76_arm/EFI/BOOT/* /var/lib/tftpboot/arm_uefi/
cp centos76_arm/images/pxeboot/vmlinuz /var/lib/tftpboot/arm_uefi/
cp centos76_arm/images/pxeboot/initrd.img /var/lib/tftpboot/arm_uefi/
# 复制Legacy Bios所需文件
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/pxelinux
cp centos76_x86/images/pxeboot/vmlinuz /var/lib/tftpboot/pxelinux
cp centos76_x86/images/pxeboot/initrd.img /var/lib/tftpboot/pxelinux
注意:pxelinux.0 引导文件在 syslinux 软件包中,找到合适的源安装 syslinux 软件包。
yum install syslinux -y
或者下载到本地解压:
rpm2cpio syslinux-4.05-15.el7.x86_64.rpm | cpio -dimv ls -l usr/share/syslinux/pxelinux.0 cp usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/pxelinux
4.1.4.2、配置 grub 文件
UEFI BIOS:修改 x86 引导的 grub.cfg 文件。
cd /var/lib/tftpboot/x86_uefi/
vi grub.cfg
set default="0"
function load_video {
insmod efi_gop
insmod efi_uga
insmod video_bochs
insmod video_cirrus
insmod all_video
}
load_video
set gfxpayload=keep
insmod gzio
insmod part_gpt
insmod ext2
set timeout=5
### END /etc/grub.d/00_header ###
### BEGIN /etc/grub.d/10_linux ###
menuentry 'Install CentOS 7' --class fedora --class gnu-linux --class gnu --class os {
linuxefi x86_uefi/vmlinuz inst.ks=http://192.168.88.118/ks_x86.cfg quiet
initrdefi x86_uefi/initrd.img
}
set default="0"
指定默认选择的启动选项。
set timeout=5
指定在引导界面的超时时间。
inst.ks
可以指定 kickstart 文件的位置,kickstart 文件可以用来全自动安装。
UEFI BIOS:修改 ARM 的 grub.cfg 文件。
cd /var/lib/tftpboot/arm_uefi/
vi grub.cfg
set default="0"
function load_video {
if [ x$feature_all_video_module = xy ]; then
insmod all_video
else
insmod efi_gop
insmod efi_uga
insmod ieee1275_fb
insmod vbe
insmod vga
insmod video_bochs
insmod video_cirrus
fi
}
load_video
set gfxpayload=keep
insmod gzio
insmod part_gpt
insmod ext2
set timeout=5
### END /etc/grub.d/00_header ###
search --no-floppy --set=root -l 'CentOS 7 aarch64'
### BEGIN /etc/grub.d/10_linux ###
menuentry 'Install CentOS 7' --class red --class gnu-linux --class gnu --class os {
linux arm_uefi/vmlinuz inst.ks=http://192.168.88.118/ks_arm.cfg ro
initrd arm_uefi/initrd.img
}
Legacy Bios:在 pxelinux/
目录中创建目录 pxelinux.cfg
,添加名为 default
的配置文件。
mkdir /var/lib/tftpboot/pxelinux/pxelinux.cfg
vim /var/lib/tftpboot/pxelinux/pxelinux.cfg/default
## 可根据/media/isolinux/isolinux.cfg修改
## 设置背景图片,如 menu background splash.png,要将splash.png文件放在pxelinux目录下
## 设置菜单风格,如 default vesamenu.c32,要将vesamenu.c32文件放在pxelinux目录下
## 这里直接指定从哪个label启动,省去了进入菜单的时间
default linux
prompt 1
timeout 600
label linux
menu label ^Install system
kernel vmlinuz
append initrd=initrd.img ip=dhcp inst.repo=http://192.168.88.118/centos76_x86 inst.ks=http://192.168.88.118/ks_legacy.cfg
4.1.5、Kickstart 文件配置
Kickstart 文件需要放到 /var/www/html/ 文件夹下,确保可以通过 http 协议获取到。
cd /var/www/html/
touch ks_x86.cfg
touch ks_arm.cfg
touch ks_legacy.cfg
vim ks_x86.cfg
auth --enableshadow --passalgo=sha512
install
url --url=http://192.168.88.118/centos76_x86 //此处为安装镜像源地址
text
firstboot --disable
firewall --disabled
selinux --disabled
reboot
keyboard --vckeymap=us --xlayouts='us'
lang en_US.UTF-8
network --bootproto=dhcp --hostname=Centos7 --device=ens3f0 --activate
rootpw --plaintext 12345678
services --disabled="chronyd"
timezone Asia/Shanghai
bootloader crashkernel=auto --location=mbr --boot-drive=sda
clearpart --all --initlabel
#因为是UEFI引导,必须指定efi分区且分区的类型必须是efi,挂载到/boot/efi,size默认单位Mb
part /boot/efi --fstype="efi" --ondisk=sda --size=1024
part swap --fstype="swap" --size=2048
part /boot --fstype="ext4" --size=1024
part / --fstype="xfs" --size=1 --grow
# 自动分区
# autopart --type=lvm
# clearpart --all --initlabel
%pre
parted -s /dev/sda mklabel gpt
%end
%packages
@^minimal
@core
kexec-tools
%end
vim ks_arm.cfg
auth --enableshadow --passalgo=sha512
install
url --url=http://192.168.88.118/centos76_arm //此处为ARM安装源地址
text
firstboot --disable
firewall --disabled
selinux --disabled
reboot
keyboard --vckeymap=us --xlayouts='us'
lang en_US.UTF-8
network --bootproto=dhcp --hostname=Centos7 --device=ens3f0 --activate
rootpw --plaintext 12345678
services --disabled="chronyd"
timezone Asia/Shanghai
bootloader crashkernel=auto --location=mbr --boot-drive=sda
clearpart --all --initlabel
#因为是UEFI引导,必须指定efi分区且分区的类型必须是efi,挂载到/boot/efi
part /boot/efi --fstype="efi" --ondisk=sda --size=1024
part swap --fstype="swap" --size=2048
part /boot --fstype="ext4" --size=1024
part / --fstype="xfs" --size=1 --grow
# 自动分区
# autopart --type=lvm
# clearpart --all --initlabel
%pre
parted -s /dev/sda mklabel gpt
%end
%packages
@^minimal
@core
kexec-tools
%end
vim ks_legacy.cfg
install
url --url=http://192.168.88.118/centos76_x86
text
lang en_US.UTF-8
keyboard us
zerombr
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet" --location=mbr --driveorder=sda
network --bootproto=dhcp --device=enp0s3 --onboot=yes --noipv6 --hostname=CentOS7
timezone --utc Asia/Shanghai
authconfig --enableshadow --passalgo=sha512
rootpw --iscrypted $6$Ivywr2J3hw9DVOyM$YSNpObpKiJ7iRvOL9wpJf/mEY29cAuMG3drIvcXc56pQkyQIR68RuwfonNVSkt2CZMcgLwITASS/tlX98SfTZ0
clearpart --all --initlabel
part /boot --fstype xfs --size 1024
part swap --size 1024
part / --fstype xfs --size 8192
part /home --fstype xfs --size 1 --grow
services --enabled="chronyd"
firstboot --disable
selinux --disabled
firewall --disabled
logging --level=info
reboot
%packages
@^minimal
@core
chrony
kexec-tools
%end
kickstart 文件参数很多,如果找不到合适的 ks 文件,可以通过 system-config-kickstart 生成应答文件,
system-config-kickstart
是一款图形化工具,需要桌面环境或 X11 服务。yum install -y system-config-kickstart system-config-kickstart
安装 X11 支持,包括中文字体支持。
yum install -y xorg-x11-xauth yum install -y google-noto-sans-fonts wqy-unibit-fonts wqy-zenhei-fonts
4.1.6、重启服务
systemctl restart dhcpd
systemctl restart xinetd
systemctl restart httpd
安装过程中的日志可以通过 message 日志查看。
4.2、Cobbler
官网源码:https://github.com/cobbler/cobbler
官网文档:https://cobbler.readthedocs.io/en/latest/
Cobbler 实质上是 PXE 的二次封装,将多种安装参数封装到一起,并提供统一的管理方法。
Cobbler 安装系统需要一台专门提供各种服务的服务器,提供的服务包括(HTTP/FTP/NFS/TFTP/DHCP),也可以将这几个服务分别部署到不同服务器。
4.2.1、Cobbler 的工作原理
- Client 裸机配置了从网络启动后,开机后会广播请求 DHCP 服务器(Cobbler Server)发送一个 IP;
- DHCP 服务器(Cobbler Server)收到请求后作出响应,包含 IP 地址;
- Client 裸机拿到 IP 后再向 Cobbler Server 请求 OS 引导文件;
- Cobbler Server 告诉裸机 OS 引导文件的名字和 TFTP Server 的 IP 和 Port;
- Client 裸机通过 TFTP Server 地址下载引导文件;
- Client 裸机执行该引导文件,确认加载信息,选择要安装的 OS,然后再向 Cobbler Server 请求 Kickstart 文件和 OS Image;
- Cobbler Server 发送 Kickstart 和 OS Image;
- Client 裸机加载 Kickstart 文件;
- Client 裸机接收 OS Image,安装该 OS Image。
4.2.2、安装 Cobbler 及依赖服务
Cobbler 所依赖的服务包括 HTTPD,TFTP,DHCP 等,如果有 web 界面要求,还需要安装相关的组件。
yum install epel-release -y
yum install dhcp cobbler cobbler-web pykickstart httpd tftp-server -y
启动服务
systemctl enable --now cobblerd httpd tftp
- dhcpd 需要配置后才能启动。
配置文件
/etc/cobbler/settings #cobbler 主配置文件
/etc/cobbler/iso/ #iso模板配置文件
/etc/cobbler/pxe #pxe模板文件
/etc/cobbler/power #电源配置文件
/etc/cobbler/user.conf #web服务授权配置文件
/etc/cobbler/users.digest #web访问的用户名密码配置文件
/etc/cobbler/dhcp.template #dhcp服务器的的配置模板
/etc/cobbler/dnsmasq.template #dns服务器的配置模板
/etc/cobbler/tftpd.template #tftp服务的配置模板
/etc/cobbler/modules.conf #cobbler模块的配置文件
数据目录
/var/lib/cobbler/config/ #用于存放distros,system,profiles 等信息的配置文件
/var/lib/cobbler/triggers/ #用于存放用户定义的cobbler命令
/var/lib/cobbler/kickstarts/ #默认存放kickstart文件
/var/lib/cobbler/loaders/ #存放各种引导程序
镜像目录
/var/www/cobbler/ks_mirror/ #导入的发行版系统的所有数据
/var/www/cobbler/images/ #导入发行版kernel和initrd镜像用于远程网络启动
/var/www/cobbler/repo_mirror/ #yum 仓库存储目录
日志目录
/var/log/cobbler/installing #客户端安装日志
/var/log/cobbler/cobbler.log #cobbler日志
4.2.2.1、Cobbler 检查
启动服务后,开始进行相应检查。如下:
cobbler check
依次解决上面的错误:
问题 1, 2:
修改配置文件 /etc/cobbler/settings
server: 192.168.1.x #修改为cobbler server端所在机器IP
next_server: 192.168.1.x #修改为cobbler server端所在机器IP
问题 3:
开启 tftp 服务
vi /etc/xinetd.d/tftp # ==> disable = no
systemctl restart tftp
systemctl enable tftp
问题 4:
根据提示,安装 syslinux 后,重启 cobbler 服务并执行 cobbler sync /var/lib/cobbler/loaders
中会出现引导文件的软链接,并且会 sync 到 /var/lib/tftpboot
当中用以 pxe 引导。
也可以手动拷贝下面两个重要文件到 /var/lib/cobbler/loaders
,然后 cobbler sync,同步到 /var/lib/tftpboot
下。
cp -a /usr/share/syslinux/{pxelinux.0,menu.c32} /var/lib/cobbler/loaders
问题 5:
开启 rsync 服务
systemctl start rsyncd
systemctl enable rsyncd
问题 6:
安装 debmirror
yum install debmirror -y
问题 7:
修改配置文件 /etc/cobbler/settings
default_password_crypted: "$1$root$j0bp.KLPyr.u9kgQ428D10"
上面的加密密码使用下面的命令生成:
openssl passwd -1 -salt "test" "123456" #"test"可以为任意字符串, "123456"为密码
问题 8:
安装 fence-agents
yum install fence-agents -y
按照以上步骤修复完问题之后,重启 cobbler 服务,再次 check,如下:
systemctl restart cobblerd
cobbler check
则会收到如下报告:
问题 1 是因为 syslinux 没有 elilo.efi 和 yaboot 文件,可以忽略。
解决问题 2, 3:编辑 /etc/debmirror.conf
文件,注释如下两行。
# @dists="sid";
# @arches="i386";
执行以下命令使配置生效:
cobbler sync
- cobbler 中配置的模板文件会 sync 到相关的服务配置中去,相当于集中在 cobbler 中配置,统一管理 dhcpd tftp httpd 等服务。
4.2.2.2、Cobbler 配置
在 cobber server 端安装完并且 check 成功之后,接下来需要对 cobbler 做相应的配置,以便后续使用。
修改配置文件 /etc/cobbler/settings
,需要关注的配置如下:
manage_dhcp: 1 #启用dhcp管理
pxe_just_once: 1 #仅安装一次
修改配置文件 /etc/cobbler/dhcp.template
,需要关注的配置如下:
option routers 192.168.1.x; #修改为cobbler server端所在机器IP
option domain-name-servers 192.168.1.x; #修改为cobbler server端所在机器IP
- 注意,subnet 中配置的网段必须要跟 pxe 网卡的网段要一致。
在 cobber 配置更改之后,需要将所有的配置重新生成同步一次(尤其是 DHCP 配置文件),如下:
service cobblerd restart
cobbler sync
service cobblerd restart
由于启用了 DHCP 管理,因此需要运行并设置 DHCP 开机自启,如下:
systemctl start dhcpd
systemctl enable dhcpd
4.2.3、CentOS 安装配置
1、上传 ISO 镜像
将 Centos7、Centos6、Ubuntu16 镜像一次性拷贝至 cobbler server 服务器 /root/ 目录下,在 /mnt/ 目录下为其建立一个目录并挂载,如下:
2、导入 ISO 镜像
成功挂载后,开始导入至 cobbler 中,如下:
cobbler import --path=/mnt/centos7/ --arch=x86_64 --name=centos7
导入成功后,会输出:TASK COMPLETE ,截图如下:
导入镜像的同时,cobbler 会自动生成该镜像的 profile 和 distro,可以通过 list 和 report 命令来查看细节,如下:
cobbler list
cobbler report
从上图可以看到我们导入的 centos7 使用的 Kickstart 文件是 /var/lib/cobbler/kickstarts/sample_end.ks
。
3、配置 ISO 镜像自动值守安装文件
配置 ISO 镜像自动值守安装文件的目的是用来设定 ISO 镜像在安装过程中如何配置(也就是操作系统的那些设置,如硬盘分区、用户帐号、密码等)。
从第二步 cobbler report
中可以看到,导入的系统相关配置文件路径为 /var/lib/cobbler/kickstarts/sample_end.ks
,那么我们就可以修改该文件,在该文件中指定操作系统安装的设置(事实上,我们可以在第二步中指定具体的配置,未指定才会使用该默认文件),配置如下。
auth --useshadow --enablemd5
bootloader --location=mbr
clearpart --all --initlabel
graphical
firewall --enabled
firstboot --disable
keyboard us
lang en_US
url --url=$tree
$yum_repo_stanza
$SNIPPET('network_config')
reboot
#Root password
rootpw --iscrypted $default_password_crypted
selinux --disabled
skipx
timezone America/New_York
install
zerombr
autopart
%pre
$SNIPPET('log_ks_pre')
$SNIPPET('kickstart_start')
$SNIPPET('pre_install_network_config')
$SNIPPET('pre_anamon')
%end
%packages
$SNIPPET('func_install_if_enabled')
%end
%post --nochroot
$SNIPPET('log_ks_post_nochroot')
%end
%post
$SNIPPET('log_ks_post')
$yum_config_stanza
$SNIPPET('post_install_kernel_options')
$SNIPPET('post_install_network_config')
$SNIPPET('func_register_if_enabled')
$SNIPPET('download_config_files')
$SNIPPET('koan_environment')
$SNIPPET('redhat_register')
$SNIPPET('cobbler_register')
$SNIPPET('post_anamon')
$SNIPPET('kickstart_done')
%end
$SNIPPET('log_ks_pre')
是 cobbler 特有的,在安装过程中调用 /var/lib/cobbler/snippets/
目录下的脚本。
4.2.4、Ubuntu 安装配置
1、上传 ISO 镜像
将 ubuntu-16.04.6-server-i386.iso 镜像拷贝至 cobbler server 服务器 /root/ 目录下,在 /mnt/ 目录下为其建立一个目录并挂载,如下:
mkdir /mnt/ubuntu16
mount -t iso9660 -o loop,ro ubuntu-16.04.6-server-i386.iso /mnt/ubuntu16
2、导入 ISO 镜像
成功挂载后,开始导入至 cobbler 中,如下:
cobbler import --name=ubuntu16 --path=/mnt/ubuntu16/ --breed=ubuntu
导入成功后,会输出:TASK COMPLETE,截图如下:
导入镜像的同时,Cobbler 会自动生成该镜像的 profile 和 distro,可以通过 list 和 report 命令来查看细节,如下:
ubuntu16-hwe 是 ubuntu 自带的跟服务器硬件尽可能兼容的内核版本。
cobbler report
从报告中可以看到我们导入的 Ubuntu 16.04.6 使用的 preseed 文件是 /var/lib/cobbler/kickstarts/sample.seed
。
3、配置 ISO 镜像自动值守安装文件
这里的第三步和 CentOS 系统一样,也是用来设定 ISO 镜像在安装过程中如何配置。
d-i debian-installer/locale string en_US
d-i console-setup/ask_detect boolean false
d-i keyboard-configuration/toggle select No toggling
d-i keyboard-configuration/layoutcode string us
d-i keyboard-configuration/variantcode string
d-i netcfg/choose_interface select auto
d-i netcfg/get_hostname string $myhostname
d-i time/zone string US/Eastern
d-i clock-setup/utc boolean true
d-i clock-setup/ntp boolean true
d-i clock-setup/ntp-server string ntp.ubuntu.com
d-i mirror/country string manual
d-i mirror/http/hostname string $http_server
d-i mirror/http/directory string $install_source_directory
d-i mirror/http/proxy string
d-i live-installer/net-image string http://$http_server/cobbler/links/$distro_name/install/filesystem.squashfs
d-i partman/choose_partition select finish
d-i partman/confirm boolean true
d-i partman/confirm_nooverwrite boolean true
d-i partman-auto/method string lvm
d-i partman-lvm/device_remove_lvm boolean true
d-i partman-lvm/confirm boolean true
d-i partman-lvm/confirm_nooverwrite boolean true
d-i partman-md/device_remove_md boolean true
d-i partman-partitioning/confirm_write_new_label boolean true
d-i partman-auto/choose_recipe select atomic
d-i passwd/root-login boolean true
d-i passwd/root-password-crypted password $default_password_crypted
d-i passwd/make-user boolean false
$SNIPPET('preseed_apt_repo_config')
tasksel tasksel/first multiselect standard
d-i pkgsel/include string ntp ssh wget
d-i grub-installer/grub2_instead_of_grub_legacy boolean true
d-i grub-installer/bootdev string default
d-i debian-installer/add-kernel-opts string $kernel_options_post
d-i finish-install/reboot_in_progress note
d-i preseed/early_command string wget -O- \
http://$http_server/cblr/svc/op/script/$what/$name/?script=preseed_early_default | \
/bin/sh -s
d-i preseed/late_command string wget -O- \
http://$http_server/cblr/svc/op/script/$what/$name/?script=preseed_late_default | \
chroot /target /bin/sh -s
语法可参见官方文档:
https://wiki.debian.org/DebianInstaller/Preseed
https://www.debian.org/releases/stable/i386/apb.en.html
提示:旧版本的 Ubuntu 基于 preseed 自动化安装,语法难懂,新版本的 Ubuntu 可以用 cloud-init 自动化安装,很方便,参见 https://hmli.ustc.edu.cn/doc/linux/ubuntu-autoinstall/ubuntu-autoinstall.html