定制 proxmox VE 4.4 , 并制作安装镜像
来源:互联网 发布:风暴大陆神器进阶数据 编辑:程序博客网 时间:2024/05/21 17:02
目前工作需要对proxmox VE 4.4 进行定制,网上资料少之又少,自己进坑也较多。所以写这篇帖子的目的是帮大家填坑,希望能帮到大家!!!
1、首先说一下proxmox VE的结构吧:
这是将pve的ISO解开之后的iso结构,对其中几个重要的文件介绍一下
efi.img是系统引导镜像(pve只支持UEFI的引导方式)
proxmox是系统预安装包的存放目录
pve-base.squashfs是系统安装的基系统
pve-installer.squashfs是系统安装时需要的系统
sync_pve_iso() { echo "......mount $ISO_NAME to $PVE_MNT_PATH" mount -o loop $PVE_ISO $PVE_MNT_PATH echo "......ok !!!!!!......" echo "......sync $PVE_MNT_PATH to $PVE_ISO_PATH......." echo "......doing......" cd $PVE_MNT_PATH rsync -av . $PVE_ISO_PATH > /dev/null echo "......ok !!!!!!......" cd $PVE_ISO_PATH umount $PVE_MNT_PATH}
2、pve安装流程简单介绍(个人理解,如有不正请大家批评指正)
各个模块之间的对应关系如下
Boot Loader:由 BIOS 加载,用于将后续的 Kernel 和 initrd 的装载到内存中
(这里重点说一下,pve安装时使用的是uefi模式的安装,但是又不是传统意义上的UEFI,它先是使用了bios加载hernel和initrd到内存,然后又跳到uefi分区执行img.efi
文件,调用proxinstaller进入到系统安装界面,然后是挂载pve-base进行系统安装)--------->>>>>个人理解!!!!!!!!!!!!!!!!
geremlijie
kernel:为 initrd 运行提供基础的运行环境,对应boot目录下的linux26文件
initrd:检测并加载各种驱动程序,对应boot目录下的initrd.img文件
rootfs:根文件系统,用户的各种操作都是基于这个被最后加载的文件系统,这里对应了pve-base.squashfs
PVE系统安装过程中的调用顺序是 Boot Loader->kernel->initrd->pve-installer.squashfs->pve-base.squashfs。
3、pve custom
pve的安装界面是使用perl+gtk3+openbox实现的
pve的基系统默认安装包是在proxmox文件夹下的,只要不破坏其依赖关系,可以将需要预安装的包及其依赖丢到这个文件夹下。
下面这段代码是proxinstall中的源码,说明pve预安装包ed时候使用的是循环读取proxmox/packages中的deb,然后使用的安装方法是先解压然后在配置,这样不会产生依赖关系而导致装不上deb的问题。
my $pkgdir = $opt_testmode ? "packages" : "/cdrom/proxmox/packages";my $pkg_count = 0;while (<$pkgdir/*.deb>) { $pkg_count++ };# btrfs/dpkg is extremely slow without --force-unsafe-iomy $dpkg_opts = $use_btrfs ? "--force-unsafe-io" : "";$count = 0;while (<$pkgdir/*.deb>) { chomp; my $path = $_; my ($deb) = $path =~ m/$pkgdir\/(.*\.deb)/;# if ($deb =~ m/^grub-efi-/ && $deb !~ m/^grub-${grub_plattform}/) {#$count++;#next;# } update_progress ($count/$pkg_count, 0.5, 0.75, "extracting $deb"); print "extracting: $deb\n"; syscmd ("cp $path $targetdir/tmp/$deb") == 0 ||die "installation of package $deb failed\n"; syscmd ("chroot $targetdir dpkg $dpkg_opts --force-depends --no-triggers --unpack /tmp/$deb") == 0 ||die "installation of package $deb failed\n"; update_progress ((++$count)/$pkg_count, 0.5, 0.75);}display_html ("extract4-virus.htm");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"); }});
4、定制代码如下(只需要在解压和打包直接写上自己的代码就ok):
#***************************# 5.Custom PVE_base#***************************custom_pve_base() { echo "......custom pve base ......" echo "......doing......" cd $PVE_ISO_PATH unsquashfs -f -dest $PVE_BASE_PATH -i $PVE_ISO_PATH/pve-base.squashfs //解压文件系统 cd $PVE_BASE_PATH #custom //定制,自己随意发挥啦!!! #... ....# Compress pve-base cd .. mksquashfs pve_base/ pve-base.squashfs -noappend -always-use-fragments -all-root -noF //生成文系统 rm -f $PVE_ISO_PATH/pve-base.squashfs mv ./pve-base.squashfs $PVE_ISO_PATH echo "......PVE base Done!!!......"}
5、废话不多说了直接上最终生成iso的代码吧:
create_iso() { echo "......create iso......" echo "......doing !!!!......" cd $PVE_ISO_PATH cd .. if [ -f proxmox.mbr ]; then echo echo "......the MBR file exits......" else echo echo "......make MBR file......" dd if=proxmox-ve_4.4-eb2d6f1e-2.iso bs=512 count=1 of=proxmox.mbr //需要用原来的iso中的前512字节做系统mbr echo "......doing......" fi cd - xorriso -as mkisofs -o ../$MY_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 . //最终打包ISO的命令,xorriso版本需要>=1.3.8,否则好多参数找不到哦 echo "......create complete !!!!! ......"}
请大家批评指正!!!!
- 定制 proxmox VE 4.4 , 并制作安装镜像
- 利用Proxmox制作KVM镜像
- debian 8.6 jessie 安装 Proxmox VE 安装失败解决方法
- proxmox VE 4.4 增加USB 重定向功能
- ubuntu安装镜像定制
- proxmox 上传镜像失败解决
- 利用Proxmox自定义OpenVZ镜像
- debian系统下快速搭建proxmox VE
- proxmox VE minimal 配置openbox自启动
- 定制LFS镜像及安装过程
- 定制自己的ubun安装镜像
- linux docker安装 制作Elasticsearch容器镜像 并上传docker hub
- 定制ubuntu镜像
- 树莓派安装系统和制作镜像
- docker安装、仓库以及镜像制作
- 无人值守Linux安装镜像制作
- LFS系统安装镜像制作
- dell服务器安装proxmox
- 面试-java基础
- Java编程思想笔记第十一章(持有对象)
- laravel 使用elasticsearch
- Oracle笔记(十一) 建表、更新、查询综合练习
- java基础系列(二)
- 定制 proxmox VE 4.4 , 并制作安装镜像
- 进程与线程的一个简单解释-阮一峰
- GreenPlum 启动失败 Failed to start Master instance in admin mode
- mybatis中根据多条件list查询
- GR:tensor
- HTML5新特性:范围样式<style scoped>
- Python入门项目——图片转字符画
- 雷霄骅博文地址
- redis key设计技巧