Proxmox VE live iso镜像
本镜像支持无盘启动PVE,类似于PE,运行在RAM当中。开箱即用。
目前实现功能:
- 自由调整RAMDISK大小
- 支持PXE启动
- 已经开启IOMMU,随时可直通硬件
- 开机dhcp获取ip
- 保存PVE集群数据、网络配置主机名以及密码
- 可以在线升级系统,当然需要重启生效。
限制:
无法保存数据,重启之后数据会消失。这个必须要有硬盘或者网络存储保存数据才行,后期会实现这个功能。使其和Nutanix系统iso类似。不支持内核升降级。因为要dhcp,所以需要手动设置网桥,之后虚拟机才能上网。这点,在保存网络数据后,就不用这样。不支持传统模式启动- 当物理机内存低于3G的时候,会从U盘挂载文件系统,所以不支持在线升级,修改U盘数据等。当内存大于3G,系统会完全从内存中启动,因此开机会多占1.2G左右的内存。
期望的功能增强
- 目前数据保存在U盘,如果U盘故障,数据就会丢失,应该支持多种方式保存,比如iscsi,或者有其他定时备份。
更新日志:
2023.1.30:添加3个内核5.15 5.19 6.1供选择,支持保存PVE虚拟机数据。
2023.1.31: 加入了gnome桌面。https://www.bilibili.com/video/BV1o24y1z75u/
2023.2.5: 将gnome替换成kde,增加12代sriov,其他的kvmgt的gvt-g,增加了vgpu_unlock功能。添加了QQ,rustdesk应用程序。优化了分区格式,支持更多的录软件刻录ISO。https://www.bilibili.com/video/BV1884y1G7HA/
2023.2.16: 新增保存网络信息,保存主机名信息。可在grub上配置密码。删除GUI----v4版本
2023.3.1: 优化root的加载过程,现在支持在线U盘内容。当然修改后重启生效。-----v5版本
用法
将ISO刻录到U盘,或者无盘启动
1. 设置ramdisk大小
默认的ramdisk大小为RAM的一半,如果需要自定义,请在启动的时候,按e,添加tmpfssize=参数,如设置6G的ramdisk,添加tmpfssize=6G,如下图
2. 登录
没有设置root密码。进入终端 输入ip a或者在路由上查看dhcp ip,可以通过https://ip:8006访问,因为没有设置密码,所以用户名输入root,密码输入任意字符就可以登录到web。
3. 配置网络
先登录web页面,打开shell,安装ifupdown2,并且停用dhcp服务
apt update
apt install ifupdown2 -y
systemctl stop dhcpcd
随后在web上配置好网桥,点击应用配置即可。
如何保存数据
保存pve数据
使用一个U盘,或者其他的硬盘,新建一个fat32的小分区,1G也可以。只是用于保存PVE的数据。不是虚拟机磁盘数据,虚拟机磁盘应该存放在永久存储比较好。
使用fdisk创建分区,后将类型改成11,随后格式化,注意这里的sda1需要改成自己的盘号
mkfs.fat -F 32 /dev/sda1
接着使用进行修改label。
fatlabel /dev/sda1 pvedata
重启机器之后,下次开机就能保存数据
保存网络数据-2023.2.13更新
在U盘上创建一个ext4格式的分区,大小300M足以。并且修改label为pvenet
e2label /dev/sdb3 pvenet
配置完成之后,挂载到一个目录,如/media
mount /dev/sdb3 /media
此时在live上配置好网络,将网络配置拷贝到pvenet分区
cp -r /etc/network/* /media
编辑grub文件,在linux行的最后,添加network=1
如下图
重启之后,会自动生效网络。
设置主机名信息-2023.2.16更新
在grub上,添加hostname=xxx dn=xx.xxx
如果你的主机名为nas,dn为nass.com
那么就像下面一样设置
设置账户密码-2023.2.16更新
在grub的linux后面,添加password=xxxx,如下
注意,密码最好不要用特殊符号,最好是大小写字母。如果有特殊符号,脚本可能会出错
设置启动系统之后是图形界面还是命令行界面
在grub后面添加systemd.unit=multi-user.target
禁用驱动
在grub的linux行下添加
modprobe.blacklist=nouveau
iso下载地址
https://foxi.buduanwang.vip/pan/proxmox-edge/unofficialiso/Promxox-VE-Live/
Ventoy启动
如果要将Live数据分区和Ventoy共存,请在写入Ventoy的时候,勾选【在磁盘最后保留一段空间】。
使用Ventoy启动,会无法直接启动live,会报错[mount proxmoxdisk failed]
此时,请保持在根目录,输入命令
sh ventoy/ventoy_loop.sh
此时PVE的iso应该会加载成loop,于是再按键盘的ctrl+d
键重新进行启动。会进入PVE live
原理
将装好pve的rootfs打包成squashfs。
修改默认的init脚本,使其不寻找root,而是执行自定义的脚本,将squashfs用overlay方式挂载到/root,再由init脚本进行switch_root。
将pve的rootfs,initrd和vmlinuz替换iso中的文件。再删除掉一些不必要的文件。
/scripts/local文件内容如下
local_mount_root()
{
#加载overlay模块
insmod /overlay.ko
#创建临时挂载点
mkdir /mnt
mount -nt proc proc /proc
#如果识别到pxe启动的proxmox.iso,则将这个iso挂载。如果是本地启动,则将Lable为PVE的盘挂载。
if [ -f /proxmox.iso ];then
mount -t iso9660 -o loop,ro /proxmox.iso /mnt;
else
mount -t iso9660 -o loop,ro $(blkid -L PVE) /mnt
fi
#判断是否有tmpfssize,如果有则设置tmpfssize
if [ ! -n "$tmpfssize" ];then
mount -t tmpfs tmpfs /mnt/.workdir
else
mount -t tmpfs -o size=$tmpfssize tmpfs /mnt/.workdir
fi
#创建overlay挂载
mkdir /mnt/.workdir/upper
mkdir /mnt/.workdir/work
mount -t squashfs -o ro,loop "/mnt/pve-base.squashfs" /mnt/.base
mount -t overlay -o lowerdir=/mnt/.base,upperdir=/mnt/.workdir/upper,workdir=/mnt/.workdir/work none /root
mount -t devtmpfs devtmpfs /root/dev
}
作者:佛西
链接:https://foxi.buduanwang.vip/virtualization/pve/2192.html/
文章版权归作者所有,未经允许请勿转载
如需获得支持,请点击网页右上角
herbert
herbert
佛西@herbert
zzz
mjj
jjm
佛西@jjm
guitarbug@佛西
jjm
佛西@jjm