关于javascript:Proxmox-VE镜像分析与定制

4次阅读

共计 14720 个字符,预计需要花费 37 分钟才能阅读完成。

    Proxmox VE(Proxmox Virtual Environment,简称 PVE)是一个开源的服务器虚拟化环境 Linux 发行版,基于 Debian,应用给予 Ubuntu 的定制内核。相比于其余虚拟化平台,PVE 具备的一个显著的特点就是无需 master 节点,装置实现后,无需非凡配置即可将多个节点组成集群。

因为工程要求,PVE 须要大规模部署在物理服务器上,所以定制镜像就显得很有必要。

定制指标包含

(1)批改 initrd 中 init 脚本的提示信息

(2)删除 GRUB 界面多余选项,间接进入装置界面

(3)增加预装软件

(4)在装置过程中对软件进行个性化配置

(5)批改 PVE 装置界面,在 PVE 装置界面中的所有输入框设置默认文本

Proxmox VE 镜像剖析

下载 Proxmox VE 6.4 版镜像后挂载,察看文件构造

$ tree -L 2
.
├── boot
│   ├── boot.cat
│   ├── grub
│   ├── initrd.img
│   ├── linux26
│   └── memtest86+.bin
├── COPYING
├── COPYRIGHT
├── debian -> .
├── dists
│   └── stretch
├── efi.img
├── EULA
├── mach_kernel
├── proxmox
│   ├── country.dat
│   ├── packages
│   └── pve-base.cnt
├── pve-base.squashfs
├── pve-installer.squashfs
├── Release.txt
└── System
    └── Library

9 directories, 14 files

其中:

grub 文件夹:蕴含疏导程序 GRUB 所用到的文件。initrd.img:零碎初始化所应用的镜像,外面蕴含一个最小化的零碎,蕴含了 /dev、/etc、/bin 等很多根本的目录,还有要害的 init 程序,负责驱动的加载和文件系统的初始化。linux26:Linux 2.6 内核
efi.img:零碎疏导镜像,内含 boot.efi、bootia32.efi、bootx64.efi。proxmox 文件夹:零碎预安装包的寄存目录
PVE 的根零碎默认安装包是在 proxmox 文件夹下的,只有不毁坏其依赖关系,能够将须要预装置的包及其依赖放到这个文件夹下。PVE 预安装包时候应用的是循环读取 proxmox/packages 中的 deb,而后应用的装置办法是先解压而后再配置,这样不会产生依赖关系而导致装不上 deb 的问题。pve-base.squashfs:装置的根零碎,也就是最终的零碎
pve-installer.squashfs:装置时须要的零碎 

Proxmox VE 装置流程

PVE 装置流程次要分为以下 4 个步骤:

(1)Boot Loader:由 BIOS 加载,用于将后续的 kernel 和 initrd 的装载到内存中。(PVE 装置时应用的是 UEFI 模式的装置,然而又不是传统意义上的 UEFI,它先是应用了 BIOS 加载 kernel 和 initrd 到内存,而后又跳到 UEFI 分区执行 efi.img 文件,调用 proxinstall 进入到零碎装置界面,而后是挂载 pve-base.squashfs 进行零碎装置)

(2)kernel:为 initrd 运行提供根底的运行环境,对应 boot 目录下的 linux26 文件

(3)initrd:检测并加载各种驱动程序,并执行 init,对应 boot 目录下的 initrd.img 文件

(4)rootfs:根文件系统,用户的各种操作都是基于这个被最初加载的文件系统,这里对应了 pve-base.squashfs

Proxmox VE 镜像定制

ISO 解压与压缩

在原先应用 ISO Master 作为解压缩 ISO 的工具中,产生的 ISO 文件能够间接作为 cdrom 启动,但刻录进 USB 设施后缺失 MBR 等重要局部所以无奈启动,因而改用命令行进行解压缩。

(1)ISO 提取

首先挂载镜像文件。

$ mount -o loop Desktop/proxmox-ve_6.4-1.iso cby/

挂载点目录中的文件是只读的,所以须要同步到工作目录下。

$ cd cby
$ sudo rsync -av /home/cby/cby/ /home/cby/

同步之后就即可批改 ISO 内的文件。

$ sudo umount /home/cby/cby 
$ ll
total 386672
dr-xr-xr-x 10 root root      4096 Apr 27 04:26 ./
dr-xr-xr-x 23 root root      4096 May 19 18:56 ../
dr-xr-xr-x  3 root root      4096 Apr 27 04:26 boot/
-r--r--r--  1 root root        89 Apr 27 04:26 .cd-info
-r--r--r--  1 root root     32386 Apr 27 04:26 COPYING
-r--r--r--  1 root root       955 Apr 27 04:26 COPYRIGHT
lrwxrwxrwx  1 root root         1 Apr 27 04:26 debian -> ./
dr-xr-xr-x  3 root root      4096 Apr 27 04:26 dists/
-r--r--r--  1 root root   2949120 Apr 27 04:26 efi.img
-r--r--r--  1 root root      4470 Apr 27 04:26 EULA
-r--r--r--  1 root root         0 Apr 27 04:26 mach_kernel
dr-xr-xr-x  3 root root      4096 Apr 27 04:26 proxmox/
dr-xr-xr-x  2 root root      4096 Apr 27 04:26 .pve-base/
-r--r--r--  1 root root 101306368 Apr 27 04:26 pve-base.squashfs
-r--r--r--  1 root root        37 Apr 27 04:26 .pve-cd-id.txt
dr-xr-xr-x  2 root root      4096 Apr 27 04:26 .pve-installer/
dr-xr-xr-x  2 root root      4096 Apr 27 04:26 .pve-installer-mp/
-r--r--r--  1 root root 291586048 Apr 27 04:26 pve-installer.squashfs
-r--r--r--  1 root root     15792 Apr 27 04:26 Release.txt
dr-xr-xr-x  3 root root      4096 Apr 27 04:26 System/
dr-xr-xr-x  2 root root      4096 Apr 27 04:26 .workdir/

(2)ISO 压缩

应用原镜像的 MBR(前 512 字节)作为定制镜像的 MBR

$ sudo dd if=/home/cby/proxmox-ve_6.4-1.iso bs=512 count=1 of=proxmox.mbr
1+0 records in
1+0 records out
512 bytes copied, 0.000134541 s, 3.8 MB/s

打包 ISO 镜像

$ sudo xorriso -as mkisofs -o proxmox-ve_6.4-1.iso -r -V 'inspur' --grub2-mbr proxmox.mbr --protective-msdos-label -efi-boot-part --efi-boot-image  -c '/boot/boot.cat' -b '/boot/grub/i386-pc/eltorito.img' -no-emul-boot -boot-load-size 4 -boot-info-table --grub2-boot-info -eltorito-alt-boot -e '/efi.img' -no-emul-boot .
xorriso 1.5.2 : RockRidge filesystem manipulator, libburnia project.

Drive current: -outdev 'stdio:proxmox-ve_6.4-1.iso'
Media current: stdio file, overwriteable
Media status : is blank
Media summary: 0 sessions, 0 data blocks, 0 data, 80.6g free
xorriso : WARNING : -volid text does not comply to ISO 9660 / ECMA 119 rules
Added to ISO image: directory '/'='/home/cby/chenby'
xorriso : UPDATE :    1421 files added in 1 seconds
xorriso : UPDATE :    1421 files added in 1 seconds
xorriso : NOTE : Copying to System Area: 512 bytes from file '/home/cby/chenby/proxmox.mbr'
xorriso : UPDATE :  1.00% done
xorriso : UPDATE :  42.39% done
xorriso : UPDATE :  86.68% done
ISO image produced: 453265 sectors
Written to medium : 453265 sectors at LBA 0
Writing to 'stdio:proxmox-ve_6.4-1.iso' completed successfully.

批改 initrd

    initrd.img 位于原始镜像的 boot 目录下,批改 initrd 的目标是批改装置过程中的输入文本,是一个比拟非凡的局部,要从 initrd 引入的目标讲起。

    initrd 的英文含意是 boot loader initialized RAM disk,就是由 boot loader 初始化的内存盘。initrd 的最后的目标是为了把 kernel 的启动分成两个阶段:在 kernel 中保留起码最根本的启动代码,而后把对各种各样硬件设施的反对以模块的形式放在 initrd 中,这样就在启动过程中能够从 initrd 所 mount 的根文件系统中装载须要的模块。这样的一个益处就是在放弃 kernel 不变的状况下,通过批改 initrd 中的内容就能够灵便的反对不同的硬件。在启动实现的最初阶段,根文件系统能够从新 mount 到其余设施上。也就是说因为 initrd 会在内存虚构一个文件系统,而后能够依据不同的硬件加载不同的驱动,而不须要从新编译整个外围。所以,大部分的发行版都会通过这种形式对驱动进行加载。

initrd 引入之后 Linux 的疏导会变成如下流程。

(1)boot loader 把内核以及 initrd 文件加载到内存的特定地位。

(2)内核判断 initrd 的文件格式,如果是 cpio 格局。

(3)将 initrd 的内容开释到 rootfs 中。

(4)执行 initrd 中的 /init 文件,执行到这一点,内核的工作全副完结,齐全交给 /init 文件解决。

    依据外围版本的不同,initrd 文件有两种格局:image 和 cpio。**kernel 2.4 只应用 image 格局,而 kernel 2.6 可同时反对两种格局。** 它们不单格局不一样,而且运作的机制和流程也齐全不同,甚至制作方法也不一样。pve 的 kernel 版本是 2.6,所以在此只讲 cpio 格局的 initrd 制作。

initrd 解压、批改与压缩流程:

(1)解压 proxmox-ve\_6.4-1.iso,boot 目录下的 initrd.img 就是 gz 格局的压缩文件

(2)将 initrd.img 备份后重命名为 initrd.org.img,并解压缩

$ sudo gzip -d -S ".img" ./initrd.org.img

执行 file 后查看格局

$ sudo file initrd.org
initrd.org: ASCII cpio archive (SVR4 with no CRC)

(3)创立 initrd.tmp 目录以寄存后续还原进去的文件,而后执行 cpio 命令将文件还原

$ sudo mkdir initrd.tmp
$ cd initrd.tmp
$ sudo cpio -id < ../initrd.org
241820 blocks
$ ls
bin  dev  devfs  etc  init  lib  lib64  mnt  proc  sbin  sys  tmp  usr

去除 GRUB 界面

    pve 在装置时应用了 GRUB2,所以想要去除掉 GRUB 界面须要找到原始镜像中 boot/grub/grub.cfg 文件,增加 set timeout=0,就能够间接进入默认选项 Install Proxmox VE 模式。如果有须要咱们也能够批改默认选项来实现间接进入其余模式的性能。

$ vim grub.cfg 
$ cat grub.cfg
insmod gzio
insmod iso9660
insmod png

loadfont /boot/grub/unicode.pf2

set gfxmode=640x400
# set kernel parameter vga=791
# do not specify color depth here (else efifb can fall back to 800x600)
set gfxpayload=1024x768
#set gfxmode=auto
#set gfxpayload=keep

set timeout=0

insmod all_video
insmod gfxterm

set theme=/boot/grub/pvetheme/theme.txt

...

定制预装软件

    Proxmox VE 所有的预装软件都以 deb 包的模式寄存在镜像的 proxmox/packages 下,并将在装置 pve 的过程中对立装置这些软件包,全副装置实现之后再进行配置,这样能够防止依赖关系呈现问题。

    所以定制预装软件只须要在 proxmox/packages 目录下放入须要的 deb 包,pve 将会主动装置并进行默认配置。

配置预装程序

    pve 在配置软件是只会依照默认的配置,如果心愿将软件配置成咱们想要的模式,则只须要批改 pve-installer.squashfs 里的 usr/bin/proxinstall 文件。pve-installer.squashfs 是 pve 装置时由 initrd 加载的零碎,装置过程中 proxinstall 负责所有业务逻辑,其中配置软件局部的代码如下:

# needed for postfix postinst in case no other NIC is active
syscmd("chroot $targetdir ifup lo");

my $cmd = "chroot $targetdir dpkg $dpkg_opts --force-confold --configure -a";
$count = 0; 
run_command ($cmd, sub {
    my $line = shift;
    if ($line =~ m/Setting up\s+(\S+)/) {update_progress ((++$count)/$pkg_count, 0.75, 0.95,
             "configuring $1");
    }    
});

# set apt mirror
if (my $mirror = $cmap->{country}->{$country}->{mirror}) {
    my $fn = "$targetdir/etc/apt/sources.list";
    syscmd ("sed -i's/ftp\\.debian\\.org/$mirror/''$fn'");
}

# create extended_states for apt (avoid cron job warning if that
# file does not exist)
write_config ('',"$targetdir/var/lib/apt/extended_states");

# allow ssh root login
syscmd(['sed', '-i', 's/^#\?PermitRootLogin.*/PermitRootLogin yes/', "$targetdir/etc/ssh/sshd_config"]);

    能够看出 pve 也是对局部程序进行了个性化的配置,所以对配置文件的编辑的代码只须要仿照后者,应用 syscmd 函数,将批改的命令作为参数,写在前者之后即可。

定制装置界面

    在 pve-installer.squashfs 里的 usr/bin/proxinstall 文件中,有 create\_main\_window 函数,这个函数的性能是创立图形界面窗口里的各种组件,通过剖析这个函数咱们能够失去装置 UI 的构造。

    顶部的 image、核心的 htmlview 窗口以及下方的 cmdbox 形成了咱们所看到的外观。在此只批改 image 和 htmlview。

定制装置界面

    在 pve-installer.squashfs 里的 usr/bin/proxinstall 文件中,有 create\_main\_window 函数,这个函数的性能是创立图形界面窗口里的各种组件,通过剖析这个函数咱们能够失去装置 UI 的构造。

    顶部的 image、核心的 htmlview 窗口以及下方的 cmdbox 形成了咱们所看到的外观。在此只批改 image 和 htmlview。

    顶部的 image 是在 1785 行加载 pve-installer 下 var/lib/pve-installer/pve-banner.png 来实现的,所以只须要用一个尺寸同样为 1024X164 的图像代替。

    核心的 htmlview 是通过在每个 create\_* 函数中调用 display\_html 函数来加载,加载的 html 文件都位于 var/lib/pve-installer/html 文件夹下,对应的只须要批改每个 html 文件就能够实现外观上的替换。

    另外因为窗口运行环境 openbox 的语言设置默认不是中文,所以应用中文字符展示会呈现乱码,因而能够由 html 加载含中文的图片,以此来展现中文。

    默认输出信息的批改就只须要在 proxinstall 中找到对应的输入框,批改预设文本。

应用命令 unsquashfs 将 unsquashfs 格局的镜像将其解压

$ sudo unsquashfs pve-installer.squashfs
Parallel unsquashfs: Using 16 processors
20078 inodes (25826 blocks) to write

[===========================================================\] 25826/25826 100%

created 19247 files
created 2620 directories
created 819 symlinks
created 0 devices
created 0 fifos

$ ll
total 3256748
dr-xr-xr-x 12 root root       4096 May 19 19:55 ./
dr-xr-xr-x 24 root root       4096 May 19 19:29 ../
-rw-r--r--  1 root root  348389376 May 19 19:42 pve-installer.squashfs
drwxr-xr-x 17 root root       4096 Apr 27 04:23 squashfs-root/

...

    解压实现后会呈现 pve-installer.squashfs 镜像盘的 squashfs-root/ 文件夹,进入该文件夹即可看到装置时的疏导零碎

$ ll
total 68
drwxr-xr-x 11 root root 4096 Mar 19 03:08 ./
dr-xr-xr-x 12 root root 4096 May 19 19:55 ../
drwxr-xr-x  2 root root 4096 Mar 19 03:08 boot/
drwxr-xr-x  2 root root 4096 Apr 27 04:25 cdrom/
drwxr-xr-x  2 root root 4096 Apr 27 04:25 devfs/
drwxr-xr-x 40 root root 4096 Apr 27 04:25 etc/
drwxr-xr-x  2 root root 4096 Apr 27 04:25 rpool/
-rwxr-xr-x  1 root root  376 Apr 26 09:53 .spice-vdagent.sh*
drwxr-xr-x  2 root root 4096 Apr 27 04:25 target/
drwxr-xr-x  2 root root 4096 Apr 27 04:25 tmp/
drwxr-xr-x  8 root root 4096 Mar 19 03:08 usr/
drwxr-xr-x  5 root root 4096 Apr 26 09:53 var/
-rw-r--r--  1 root root   87 Apr 26 09:53 .Xdefaults
-rw-r--r--  1 root root  140 Apr 26 09:53 .xinitrc

把筹备好的图片替换

$ sudo cp /home/cby/Desktop/pve-banner.png .

     应用命令解压实现后会呈现 pve-base.squashfs 镜像盘的 squashfs-root/ 文件夹

$ sudo unsquashfs pve-base.squashfs 
Parallel unsquashfs: Using 16 processors
12892 inodes (14248 blocks) to write

[===========================================================-] 14248/14248 100%

created 10856 files
created 1385 directories
created 2024 symlinks
created 9 devices
created 0 fifos

 进入该文件夹即可看到装置后的零碎根目录

$ ll
total 68
drwxr-xr-x 17 root root 4096 Apr 27 04:23 ./
dr-xr-xr-x 12 root root 4096 May 19 19:55 ../
lrwxrwxrwx  1 root root    7 Apr 27 04:22 bin -> usr/bin/
drwxr-xr-x  3 root root 4096 Apr 27 04:23 boot/
drwxr-xr-x  5 root root 4096 Apr 27 04:23 dev/
drwxr-xr-x 57 root root 4096 Apr 27 04:23 etc/
drwxr-xr-x  2 root root 4096 Mar 19 16:44 home/
lrwxrwxrwx  1 root root    7 Apr 27 04:22 lib -> usr/lib/
lrwxrwxrwx  1 root root    9 Apr 27 04:22 lib32 -> usr/lib32/
lrwxrwxrwx  1 root root    9 Apr 27 04:22 lib64 -> usr/lib64/
lrwxrwxrwx  1 root root   10 Apr 27 04:22 libx32 -> usr/libx32/
drwxr-xr-x  2 root root 4096 Apr 27 04:22 media/
drwxr-xr-x  2 root root 4096 Apr 27 04:22 mnt/
drwxr-xr-x  2 root root 4096 Apr 27 04:22 opt/
drwxr-xr-x  2 root root 4096 Mar 19 16:44 proc/
drwx------  2 root root 4096 Apr 27 04:23 root/
drwxr-xr-x  5 root root 4096 Apr 27 04:23 run/
lrwxrwxrwx  1 root root    8 Apr 27 04:22 sbin -> usr/sbin/
drwxr-xr-x  2 root root 4096 Apr 27 04:22 srv/
drwxr-xr-x  2 root root 4096 Mar 19 16:44 sys/
drwxrwxrwt  2 root root 4096 Apr 27 04:23 tmp/
drwxr-xr-x 13 root root 4096 Apr 27 04:22 usr/
drwxr-xr-x 11 root root 4096 Apr 27 04:22 var/

批改完须要定制的文件系统后,应用如下命进行打包

$ sudo mksquashfs  squashfs-root/ pve-installer.squashfs
Parallel mksquashfs: Using 16 processors
Creating 4.0 filesystem on pve-installer.squashfs-, block size 131072.
[===========================================================\] 25008/25008 100%

Exportable Squashfs 4.0 filesystem, gzip compressed, data block size 131072
  compressed data, compressed metadata, compressed fragments,
  compressed xattrs, compressed ids
  duplicates are removed
Filesystem size 340223.99 Kbytes (332.25 Mbytes)
  33.70% of uncompressed filesystem size (1009698.26 Kbytes)
Inode table size 225637 bytes (220.35 Kbytes)
  29.06% of uncompressed inode table size (776542 bytes)
Directory table size 235667 bytes (230.14 Kbytes)
  38.69% of uncompressed directory table size (609117 bytes)
Xattr table size 673 bytes (0.66 Kbytes)
  7.40% of uncompressed xattr table size (9096 bytes)
Number of duplicate files found 853
Number of inodes 22686
Number of files 19247
Number of fragments 1982
Number of symbolic links  819
Number of device nodes 0
Number of fifo nodes 0
Number of socket nodes 0
Number of directories 2620
Number of ids (unique uids + gids) 9
Number of uids 3
  root (0)
  man (6)
  syslog (104)
Number of gids 7
  root (0)
  shadow (42)
  bluetooth (112)
  utmp (43)
  staff (50)
  man (12)
  tss (111)

应用该名进行制作 ISO 镜像盘

$ sudo xorriso -as mkisofs -o proxmox-ve_6.4-1.iso -r -V 'inspur' --grub2-mbr proxmox.mbr --protective-msdos-label -efi-boot-part --efi-boot-image  -c '/boot/boot.cat' -b '/boot/grub/i386-pc/eltorito.img' -no-emul-boot -boot-load-size 4 -boot-info-table --grub2-boot-info -eltorito-alt-boot -e '/efi.img' -no-emul-boot .
xorriso 1.5.2 : RockRidge filesystem manipulator, libburnia project.

Drive current: -outdev 'stdio:proxmox-ve_6.4-1.iso'
Media current: stdio file, overwriteable
Media status : is blank
Media summary: 0 sessions, 0 data blocks, 0 data, 78.0g free
xorriso : WARNING : -volid text does not comply to ISO 9660 / ECMA 119 rules
Added to ISO image: directory '/'='/home/cby/chenby'
xorriso : UPDATE :   32892 files added in 1 seconds
xorriso : UPDATE :   32892 files added in 1 seconds
xorriso : NOTE : Copying to System Area: 512 bytes from file '/home/cby/chenby/proxmox.mbr'
libisofs: NOTE : Automatically adjusted MBR geometry to 1021/155/32
xorriso : UPDATE :  0.66% done
xorriso : UPDATE :  8.03% done
xorriso : UPDATE :  19.34% done
xorriso : UPDATE :  34.06% done, estimate finish Wed May 19 19:46:25 2021
xorriso : UPDATE :  48.84% done, estimate finish Wed May 19 19:46:24 2021
xorriso : UPDATE :  61.72% done, estimate finish Wed May 19 19:46:24 2021
xorriso : UPDATE :  73.41% done, estimate finish Wed May 19 19:46:25 2021
xorriso : UPDATE :  82.19% done, estimate finish Wed May 19 19:46:25 2021
xorriso : UPDATE :  92.15% done
xorriso : UPDATE :  97.28% done
ISO image produced: 1264917 sectors
Written to medium : 1264917 sectors at LBA 0
Writing to 'stdio:proxmox-ve_6.4-1.iso' completed successfully.

    应用新创建的 ISO 镜像盘启动后,已呈现批改过后的背景图,以此类推,通过批改根目录文件,能够实现齐全定制化的 pve 零碎。

    若批改装置后的治理后盾的页面,在 proxmox/packages 目录下找到 pve-manager 的 deb 安装包。

$ ls | grep manager
pve-ha-manager_3.1-1_amd64.deb
pve-manager_6.4-4_amd64.deb
$ mkdir extract,在当前目录下新建文件夹,用于寄存解压后的内容
$ mkdir extract/DEBIAN,新建 DEBIAN 目录用于寄存包的管制信息
$ sudo dpkg -X ./pve-manager_6.4-4_amd64.deb extract/,将要批改的 deb 包解压到 extract 目录下,能够看到:

    在其解压进去的包内批改所需的代码后,导入 debian 包的管制信息,能够应用命令再次打包成 deb 包。

$ sudo dpkg-deb -e ./pve-manager_6.4-4_amd64.deb extract/DEBIAN/
$ ls extract/DEBIAN/
conffiles  control  md5sums  postinst  postrm  preinst  prerm  triggers

$ sudo dpkg-deb -b ./extract 123.deb
dpkg-deb: building package 'pve-manager' in '123.deb'.

$ ll 123.deb 
-rw-r--r-- 1 root root 2042764 May 19 21:54 123.deb

查看 deb 包的详细信息。

$ dpkg-deb -I 123.deb 
 new Debian package, version 2.0.
 size 2042764 bytes: control archive=16976 bytes.
     320 bytes,    10 lines      conffiles            
    1532 bytes,    15 lines      control              
   56553 bytes,   574 lines      md5sums              
    3246 bytes,   101 lines   *  postinst             #!/bin/sh
    1645 bytes,    44 lines   *  postrm               #!/bin/sh
     192 bytes,     5 lines   *  preinst              #!/bin/sh
     626 bytes,    24 lines   *  prerm                #!/bin/sh
      33 bytes,     1 lines      triggers             
 Package: pve-manager
 Version: 6.4-4
 Architecture: amd64
 Maintainer: Proxmox Support Team <support@proxmox.com>
 Installed-Size: 9876
 Depends: apt-transport-https | apt (>= 1.5~), ca-certificates, cstream, dtach, fonts-font-awesome, gdisk, hdparm, ifenslave (>= 2.6) | ifupdown2 (>= 2.0.1-1+pve8), libapt-pkg-perl, libc6 (>= 2.14), libcrypt-ssleay-perl, libfile-readbackwards-perl, libfilesys-df-perl, libjs-extjs (>= 6.0.1), libjson-perl, liblwp-protocol-https-perl, libnet-dns-perl, libproxmox-acme-perl, libpve-access-control (>= 6.0-6), libpve-cluster-api-perl, libpve-cluster-perl (>= 6.1-6), libpve-common-perl (>= 6.2-2), libpve-guest-common-perl (>= 3.1-5), libpve-http-server-perl (>= 3.2-1), libpve-storage-perl (>= 6.3-6), librados2-perl, libtemplate-perl, libterm-readline-gnu-perl, liburi-perl, libuuid-perl, libwww-perl (>= 6.04-1), logrotate, lsb-base, lzop, zstd, novnc-pve, pciutils, perl (>= 5.10.0-19), postfix | mail-transport-agent, proxmox-mini-journalreader, proxmox-widget-toolkit (>= 2.5-2), pve-cluster (>= 6.0-4), pve-container (>= 2.0-21), pve-docs, pve-firewall, pve-ha-manager, pve-i18n (>= 1.0-3), pve-xtermjs (>= 0.1-1), qemu-server (>= 6.2-17), rsync, spiceterm, systemd, vncterm, wget
 Suggests: libpve-network-perl (>= 0.5-1)
 Conflicts: vlan, vzdump
 Breaks: libpve-network-perl (<< 0.5-1)
 Replaces: vlan, vzdump
 Provides: vlan, vzdump
 Section: admin
 Priority: optional
 Description: Proxmox Virtual Environment Management Tools
  This package contains the Proxmox Virtual Environment management tools.

    将打好的 deb 包放回到原目录后,在进行 ISO 的打包,这样在装置零碎后的镜像即可是定制化的页面。

正文完
 0