4、PXE/Cobbler

作者: Brinnatt 分类: ARM64 Linux 补充知识 发布时间: 2024-02-27 11:04

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 工作流程大致如下:

legacy_pxe

UEFI Bios PXE 工作流程大致如下:

uefi-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 的工作原理

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

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

则会收到如下报告:

cobbler_check1

问题 1 是因为 syslinux 没有 elilo.efi 和 yaboot 文件,可以忽略。

解决问题 2, 3:编辑 /etc/debmirror.conf 文件,注释如下两行。

# @dists="sid";
# @arches="i386";

执行以下命令使配置生效:

cobbler sync
  • cobbler 中配置的模板文件会 sync 到相关的服务配置中去,相当于集中在 cobbler 中配置,统一管理 dhcpd tftp httpd 等服务。

cobbler_check2

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/ 目录下为其建立一个目录并挂载,如下:

cobbler_check3

2、导入 ISO 镜像

成功挂载后,开始导入至 cobbler 中,如下:

cobbler import --path=/mnt/centos7/ --arch=x86_64 --name=centos7

导入成功后,会输出:TASK COMPLETE ,截图如下:

cobbler_check4

导入镜像的同时,cobbler 会自动生成该镜像的 profile 和 distro,可以通过 list 和 report 命令来查看细节,如下:

cobbler list

cobbler_check5

cobbler report

cobbler_check6

cobbler_check7

从上图可以看到我们导入的 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_check8

导入镜像的同时,Cobbler 会自动生成该镜像的 profile 和 distro,可以通过 list 和 report 命令来查看细节,如下:

cobbler_check9

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

标签云