VGA GPU passthrough qemu虚拟桌面pci穿透

基于Intel 12代酷睿SR-IOV技术实现一机七用虚拟GPU方案 SR-IOV(单根I/O虚拟化)是一项关键的硬件虚拟化技术,它允许单个物理PCIe设备在硬件层面分割为多个独立的虚拟功能(VF),从而绕过传统虚拟化中的Hypervisor层,实现近乎原生的I/O性能。这项技术对于需要高吞吐、低延迟的应用场景(如虚拟桌面、图形渲染和网络功能虚拟化)具有重要价值。通过将SR-IOV应用于Intel 12代酷睿处理器的集成显卡,结合Proxmox VE虚拟化平台,可以将一台物理主机的GPU资源高效分割为多个虚拟GPU(vGPU),分配给多个虚拟机独立使用。这为小型工作室、家庭实 阅读详情

转载请注明:http://blog.youkuaiyun.com/hubbybob1/article/details/77101913
上一篇文章已经介绍过显卡穿透的linux内核准备过程了,下面就要讲述穿透的额过程。上篇文章:http://blog.youkuaiyun.com/hubbybob1/article/details/73920296
首先,查看cpu是否支持虚拟化:

egrep -o '(vmx|svm)' /proc/cpuinfo 
//如果支持就会显示如下
vmx
或者
svm

其次就是要查看cpu是否支持 GPU 的PIC穿透,其实这个操作对cpu的要求挺高的,要进入BIOS去查看VT-d。确定好这些就可以操作了。

一、linux下的穿透(主要侧重Ubuntu)

1.修改linux的启动项

//通过命令,修改引导文件
vim /etc/default/grub 
//如下内容
#GRUB_HIDDEN_TIMEOUT=0
GRUB_CMDLINE_LINUX_DEFAULT="text"
GRUB_CMDLINE_LINUX="intel_iommu=on iommu=pt default_hugepagesz=1G hugepagesz=1G hugepages=16 kvm.ignore_msrs=1 intremap=no_x2apic_optout video=efifb:off,vesafb:off"

//使修改的引导文件生效,这个Ubuntu和Centos7下的有所不一样
//ubuntu两个命令
update-grub
update-grub2
//centos7下,很多介绍是/boot/grub2/grub.conf,但是这个并不生效,真正生效的是下面的这个
grep2-mkconfig -o /boot/efi/EFI/centos/grub.conf

添加黑名单

编辑vim /etc/modprobe.d/blacklist.conf 

blacklist i915
blacklist efifb
blacklist radeon

执行完上面的操作时,重启,reboot
2.重启后查看启动项是否修改成功,

cat /proc/cmdline//查看修改的grub
dmesg | grep -e DMAR -e IOMMU//查看DMAR 的映射

两个命令截图如下:这样就是修改成功了
这里写图片描述
3.安装依赖库

//ubuntu下的安装
apt-get install libtool liblog4cpp5-dev libavcodec-dev libssl-dev xlibmesa-glu-dev libasound-dev libpng12-dev libfreetype6-dev libfontconfig1-dev libogg-dev libxrandr-dev kvm libgcrypt-dev libsdl-dev libnss3-dev libpixman-1-dev libxfixes-dev libjpeg8-dev libsasl2-dev python-pyparsing gtk+-3.0
apt-get install liblzo2-dev libsnappy-dev libgtk-3-dev librdmacm-dev libibverbs-dev xfslibs-dev libssh2-1-dev libaio-dev glusterfs-server libiscsi-dev libusb-1.0-0-dev libcap-dev libsdl2-dev
//centos7下的安装
yum install lzo-devel snappy-devel gtk2-devel gtk3-devel librdmacm-devel xfsprogs-devel libssh2-devel libaio-devel glusterfs-api-devel libiscsi-devel spice-server-devel libusb1-devel usbredir-devel libcap-devel libattr-devel SDL-devel

反正就是缺少什么就安装什么
4.安装相关的环境
a。celt-0.5.1.3.tar.gz
下载:http://www.celt-codec.org/downloads/ (最新的没用过,可以尝试一下)

tar zxvf celt-0.5.1.3.tar.gz
cd celt-0.5.1.3/
./configure
make
make install

b。安装libcacard-2.5.2.tar
下载:https://www.spice-space.org/page/Libcacard (这些下载都能通过spice官网下载)

tar xvf libcacard-2.5.2.tar 
cd libcacard-2.5.2/
./configure
make
make install

出现错误:
vscclient.o: undefined reference to symbol ‘pthread_create@@GLIBC_2.2.5’
error adding symbols: DSO missing from command line
修改Makefile 163行
LIBS= -lz -lrt -lm -lpthread
c。安装 spice-protocol-0.12.12.tar.bz2
下载:https://www.spice-space.org/download.html

tar jxvf spice-protocol-0.12.12.tar.bz2
cd spice-protocol-0.12.12/
./configure
make && make install

d。安装spice server spice-0.12.8.tar.bz2
下载:https://www.spice-space.org/download.html

tar jxvf spice-0.12.8.tar.bz2
cd spice-0.12.8/
./configure  --enable-smartcard --disable-xinerama --enable-opengl --enable-usbdir=yes --enable-usbredir=yes
make
make install

e。安装usb重定向sbredir-0.7.tar.bz2
下载:https://www.spice-space.org/download.html

tar jxvf usbredir-0.7.tar.bz2
cd usbredir-0.7/
./configure
make && make install

f。安装spice-gtk
下载:https://www.spice-space.org/download.html
可以手动安装也可以自动安装

//自动安装
apt-get install libspice-client-gtk-3.0-dev
//下载后解压安装,configure参数与spice server一样

g。最关键的安装就是QEMU的安装
下载:https://www.qemu.org/download/ (下载最新版本)

tar Jxvf qemu-2.10.1.tar.xz
cd qemu-2.10.1/

./configure  --target-list=x86_64-softmmu --enable-kvm --enable-gtk --with-gtkabi=3.0 --enable-virtfs --enable-tcg-interpreter --enable-xfsctl --enable-libiscsi --enable-glusterfs --enable-snappy --enable-lzo --enable-rdma --enable-linux-aio --enable-vhost-net --enable-spice --enable-smartcard  --enable-libusb --enable-usb-redir --enable-guest-agent  --enable-libssh2 --enable-sdl --audio-drv-list='oss alsa sdl' 

make && make install

到此相关的依赖库和环境就搭建完毕了。
5。编写穿透脚本
编写脚本vfio-bind文件如下

#!/bin/bash

modprobe vfio-pci

for dev in "$@"; do
        vendor=$(cat /sys/bus/pci/devices/$dev/vendor)
        device=$(cat /sys/bus/pci/devices/$dev/device)
        if [ -e /sys/bus/pci/devices/$dev/driver ]; then
                echo $dev > /sys/bus/pci/devices/$dev/driver/unbind
        fi
        echo $vendor $device > /sys/bus/pci/drivers/vfio-pci/new_id
done

将脚本命名为vfio-bind 并cp到/usr/bin/

cp vfio-bind /usr/bin/

然后你可以终端输入vfio然后tab键看是否能将此命令补全为vfio-bind
6。在虚拟机启动脚本内即命令qemu-system-x86_64命令下添加如下参数

//先加载模块
modprobe vfio
modprob vfio_pci
//解绑GPU PCI的ID
vfio-bind 0000:00:02.0 //这个命令相当于下面的命令
echo 0000:00:02.0 > /sys/bus/pci/devices/0000:00:02.0/driver/ubind
echo "vfio-pci" > /sys/bus/pci/devices/0000:00:02.0/driver_override
echo 8086 1912 > /sys/bus/pci/drivers/vfio-pci/new_id
//再解绑回来,就是解绑的反过程xhci_hcd,可以通过lspci命令查看,下面会讲到
echo 0000:00:14.0 > /sys/bus/pci/drivers/vfio-pci/unbind
echo0000:00:14.0 > /sys/bus/pci/drivers/xhci_hcd/bind
//qemu参数
-device vfio-pci,host=00:02.0,bus=pci.0,addr=ox2

如何查看VGA的ID呢( 0000:00:02.0)可以查看/sys/bus/pci/devices/下的

ls /sys/bus/pci/devices/ #查看有多少驱动
lspci          #查看每个ID对应的驱动

完成上面的命令就可以查看得知VGA对应的ID为0000:00:02.0,usb控制器对应的是0000:00:14.0,在确定穿透之前,先确定每个设备所在的分组,同一分组的设备必须同时穿透,不然穿透不成功的,如下方法测试,编写脚本group.sh如下:

#!/bin/bash
shopt -s nullglob
for d in /sys/kernel/iommu_groups/*/devices/*; do
	n=${d#*/iommu_groups/*}; n=${n%%/*}
	printf 'IOMMU Group:%s  ' "$n"
	lspci -nns "${d##*/}"
done;

查看后的结果如下:
这里写图片描述
可以查看到VGA在group1内,而且在组内只有一个,但是可以看到在,group 3内有两个设备 usb controller和signal processing controller两个,如果要穿透USB的话必须要同时加上signal processing controller (0000:00:14.2),同样可以看到group 7也是一样的。
因此VGA和USB同时穿透如下:

vfio-bind 0000:00:02.0 0000:00:14.2 0000:00:14.0 #解绑
//qemu-system-x86_64命令参数
-device vfio-pci,host=00:02.0,bus=pci.0,addr=0x2 \
-device vfio-pci,host=00:14.2 \
-device vfio-pci,host=00:14.0 \

解绑前后的对比,使用命令

lspci -nnk 
lspci -vvk #这个命令更详细一点

解绑前
这里写图片描述
解绑后,就不能使用本地的终端查看了,因为本地的usb已经不存在,所以只用通过远程ssh连接来查看。
这里写图片描述
通过对比可以看到,本地解绑后的驱动都变成vfio-pci.到此基本上VGA和USB的穿透也就基本结束了,看着过程很复杂其实很简单。
需要注意的是:
1,在穿透VAG时 的qemu启动命令的执行环境,不能是桌面环境,应为桌面环境VGA正在被占用,是没办法穿透的,必须在字符终端界面或者远程ssh连接终端的情况下才会穿透成功。
2.在穿透USB的情况是,一旦USB解绑了,在本地是无法使用的,而在虚拟机启动的过程中也是无法使用的,因为虚拟机windows下并没有USB的驱动,需要安装,那这就有问题了,一旦解绑了,在ubuntu下无法使用,在windows下也无法使用,这该怎么办,其实可以这样解决,下载安装带有USB3.0驱动的ISO镜像,不用在自己安装或者先穿透USB,不穿透VGA,通过spice远程连接,安装驱动精灵,安装usb驱动,安装好后,再重新启动VGA穿透,两种方法都能成功。
3.在上面的图中我们可以看到声卡的穿透也是可以的,但是要同时穿透4个设备,有的cpu的声卡和网卡是在一个组内,这样就不好穿透声卡了,影响网卡的使用,网卡尽量桥接,本地ubuntu能使用,虚拟机也能使用,如果两个设备在一起,就只能模拟声卡来解决了。(如何模拟声卡我会在另一篇文章中描述)
4.在使用显卡穿透时,一定要注意几个参数的使用,什么意思自己去查qemu文档

-full-screen \
-vga none \
-nodefaults \
-nographic

参考:
https://bbs.archlinux.org/viewtopic.php?id=162768
https://wiki.debian.org/VGAPassthrough

QEMU设备直通pass through的地址映射转换 DMA内存是有Guest driver通过dma_alloc_coherent等DMA API接口分配,由于Guest中没有开启IOMMU,多以dma_alloc_coherent分配的内存的物理地址GPA就是DMA地址。GPA地址被写到Host device的寄存器中,Host device从而可以访问GPA地址。在__domain_mapping里,将IOVA(即GPA)和HVA对应的物理地址HPA的PFN填充到IOMMU的二级翻译页表项的PTE中,实现GPA->HPA的转换。第六列:映射的文件名。 阅读详情

相关推荐

qemu:我对qemu的更改以实现传统的免费GPU传递-开源

我对qemu的更改以实现传统的免费GPU传递。 只有一个适配器可以同时使用旧版vga区域。 这是在没有传统vga访问图形卡的情况下实现qemu gpu直通的尝试。 通过MMIO访问来替换对VGA寄存器的旧版IO访问。 对vga内存的旧版访问将通过对纯帧缓冲区的访问来替换。 这避免了Linux内核中的vga仲裁程序问题。

VFIO简介

VFIO是一个可以安全的把设备I/O、中断、DMA等暴露到用户空间(userspace),从而可以在用户空间完成设备驱动的框架。

Uncle_Y的专栏 2万+

高通引导文件获取全攻略:ELF/MBN提取与EDL救砖实战

在智能手机底层维护中,引导加载程序(Bootloader)是系统启动的第一道关卡。高通平台通过PBL、SBL1/XBL等阶段完成硬件初始化和安全校验,一旦引导分区损坏,设备便可能陷入黑砖状态。此时,掌握ELF与MBN格式的引导镜像获取方法,成为维修工程师和刷机用户的核心技能。通过官方固件包解包或借助EDL模式直接从设备分区备份,均能获得原厂匹配的引导文件。配合Firehose工具和9008端口通信,即可实现分区级读写与救砖恢复。本文从启动链路原理出发,对比两种获取路径的适用场景,并针对驱动识别、文件校验、分

weixin_30175731的博客 428

Nova — 启动 GPU Passthrough 虚拟机(Nova Centric 模式)

目录 文章目录目录GPU Passthrough环境HostOS 配置OpenStack 配置 GPU Passthrough 环境 CentOS 7.9 OpenStack Train NVIDIA Tesla K40 HostOS 配置 BIOS 开启 Intel VT-x、VT-d(Intel VT for Directed I/O)硬件辅助虚拟化功能,以及 Onboard VGA(图像显示卡)功能。 egrep -c '(vmx|svm)' /proc/cpuinfo Linux Ker

烟云的计算 3255

GIS国土工具实战:从地类分析到坐标转换,一站式解决项目难题

本文详细介绍了GIS国土工具在国土整治项目中的高效应用,涵盖地类分析、坐标转换、影像加载等核心功能。通过实战案例展示如何利用该工具快速处理shp与txt文件转换、智能比对三调二调数据,以及优化影像加载策略,显著提升项目效率。特别适合需要处理复杂国土数据的专业人员使用。

weixin_28732953的博客 335

数码管动态扫描避坑指南:如何用188芯片实现50Hz无闪烁显示?

本文深入解析188数码管动态扫描技术,提供工业级无闪烁显示方案。通过优化轮询扫描机制、硬件电路设计和软件架构,实现50Hz高刷新率显示,解决亮度不均和鬼影问题,适用于医疗设备和工业控制面板等高要求场景。

hhh00的博客 977

【亲测免费】 GPU Passthrough 教程

GPU Passthrough 教程是一个开源项目,旨在帮助用户通过虚拟化技术将物理GPU直接分配给虚拟机(VM),从而在虚拟机中实现高性能的图形处理。该项目由 Bryan Steiner 维护,提供了详细的步骤和配置指南,适用于希望在虚拟机中运行图形密集型应用程序(如游戏或3D建模软件)的用户。 ## 项目快速启动 以下是快速启动 GPU Passthrough 的基本步骤和代码示例: #...

gitblog_00351的博客 1555

【03】海康MVS V4.3.0 ——安装教程、查看示例、库、头文件、开发指南

海康威视MVS机器视觉软件安装与使用指南:首先从官网下载MVS 4.3.0安装包,默认设置完成安装。安装后可在Development目录查看示例代码、开发文档及头文件,支持C++/C#/Python等多语言开发。软件内置虚拟相机功能,通过工具菜单添加虚拟设备后即可模拟真实相机操作,支持中英文界面切换、参数调节(曝光/增益等)及图像采集功能。虚拟相机虽仅能显示预设图像,但完整保留了参数调节功能,适合开发者进行功能测试。

程序员,他们想的是什么?他们想的永远都是技术,他们崇尚的也永远都是技术。 3317

qemu中的新版vga仿真

让我们先来了解一下历史: VGA起源: VGA 由IBM在1987年提出。 它有一些列的新功能,同时也兼容它的那些前辈如CGA跟EGA的所有功能: 1. 文本模式(80x25,字体小一下的话也可以支持80x50) 2. 16色模式(640x480,四位色) 3. 256色模式(320x240, 8位色) 4. 也支持用户自定义一些操作,例如双重扫描或者分屏操作   VGA 具有了2...

专注虚拟化的Linuxer 8559

UFS 3.1协议实战解析:从MIPI M-PHY到SCSI命令的完整链路拆解

本文深入解析UFS 3.1存储协议,从MIPI M-PHY物理层到SCSI命令层,完整拆解数据链路。通过分析协议栈三层架构(UIC、UTP、UCS),结合Wireshark抓包实战,详解UPIU数据包传输与SCSI命令封装,并探讨GEAR模式对性能与功耗的影响,为嵌入式存储开发与调试提供实用指南。

weixin_29207533的博客 423

PCL 基于法向距离的对应点获取

提出了一种基于法向量欧氏距离的点云配准方法。详细推导了法向量距离计算公式,并给出具体计算流程。在代码实现部分,采用PCL库完成了点云法向量计算和对应关系估计,通过可视化验证了算法有效性。实验结果表明,该方法能够准确获取点云间的对应关系,为后续点云配准奠定了基础。

点云侠的博客 227

VGA GPU passthrough qemu虚拟桌面pci穿透--Shell脚本检测与关机

转载注明:http://blog.youkuaiyun.com/hubbybob1/article/details/77199162 本文主要讲解在VGA GPU passthrough成功后,如果关闭虚拟机windows,虚拟机的进程qemu-system-x86_64结束,然而宿主机linux(ubuntu,centos7)并没有因为虚拟机的关闭而关机,而此时屏幕不再显示,鼠标键盘而无法使用,这样很不科学

hubbybob1专栏 1904

PCL 最小生成树用于法向量定向【2025最新版】

PCL 最小代价生成树用于点云法向量的定向。博客长期更新,本文最近更新时间为:2025年9月15日。

点云侠的博客 2068

虚拟化相关面试题集锦(1)—— 如何在QEMU/KVM中跑通AI相关训练

虚拟化相关面试题集锦(1)—— 如何在QEMU/KVM中跑通AI相关训练

phmatthaus的专栏 2658

移花接木,玩转CANoe的几种扩展接口应用(五)——串口设备

近期看到粉丝朋友在CANoe自动化测试方面的关注度很大,今天就围绕这个做一个专题,总结一下以往项目上用过的几种CANoe扩展接口,分享出来希望对相关领域的网友有所帮助。本文是该专题的第五篇文章,主要讲解了串口设备的功能配置、连接方法、配置方法、调用方法,最后分析了这种扩展借口应用的特点和适用场景。

Mr.Cssust的博客 2370

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

GPU显卡直通

文章目录一、云主机GPU显卡直通1.Passthrough直通模式2.Passthrough直通技术3.IOMMU技术代表 一、云主机GPU显卡直通 1.Passthrough直通模式 Passthrough是将PCI插槽上的物理设备不经过宿主机的os层,直接透传给虚拟机使用。而一般的I/O设备需要经过OS层面的设备驱动,识别该PCI设备,然后将物理设备模拟给虚拟机。 2.Passthrough直通技术 VFIO把设备通过IOMMU映射的DMA物理内存地址映射到用户态中,让用户态程序可以自行操纵数据的

JayTao102021的博客 2911

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

OpenStack下利用透传技术(passthrough)对GPU实现虚拟化

Tips:默认已安装好OpenStack相关必要组件并可以正常运行的情况下,本文只涉及GPU 虚拟化的相关配置说明。 一 配置GPU Passthrough的系统相关设置 1. 在BIOS中enable VT-x, VT-d, Onboard VGA. Onboard VGA 的enable可以避免一些错误的出现,具体参考Not only for miners GPU integration i...

bai0324lin的专栏 2759

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

使用GPUpassthrough方法发布带有GPU显卡的虚拟桌面

Xenserver 5.6及以后的版本已经支持GPU passthrough功能,利用这一特性,我们可以发布带有GPU显卡的虚拟桌面。基于此,用户在虚拟桌面中亦可以进行3D绘图等工作。不过目前一个GPU显卡还只能分配给一个虚拟机。安装前注意事项:1.       登陆citrix网站查询GPU passthrough对显卡的支持列表。(本人做实验时,先是拿了一块低端的FX370,结果实验失败,后来...

得峰的专栏 [网络收藏] 4589

KVM虚机GPU直通实践总结

【注意】目录/usr/lib/dracut/modules.d/下的每一个子目录都代表一个 dracut模块,每个模块至少包含一个module-setup.sh脚本(用于模块的安装和配置设定),20这个数字设置的原则是要小于被覆盖的驱动程序模块nvidia。采用如上GPU直通方式A,vfio-pci模块的绑定配置匹配的是供应商与设备ID,这会导致绑定主机上所有同一型号的GPU,不符合我们期望的部分GPU给宿主机的容器使用,部分GPU做直通给虚机使用的情形,为此需要考虑绑定设备PCI地址的方式。

smartvap_2012的博客 1万+

ubuntu使用kvmgt配置vGPU(qemu-kvm+libvirt+virt-manager)

ubuntu使用kvmgt配置vGPU 注意,ubuntu是支持intel gpu的显卡虚拟化的,只是默认没有开启该模块,所有linux系统,使用较新内核的话就可以支持这一特性,只要其硬件架构不是太老。但是,ubuntu的软件仓库里的软件版本实在过低,无法支持这一特性,igvt是从2015年开始实现,到2017年合流到linux内核中,而ubuntu软件仓库的qemu还是2.11版...

qq_25675517的博客 1万+

第二章 GPU虚拟化方案之——GPU直通模式

第二章GPU虚拟化方案之——GPU直通模式 目前流行的商用GPU虚拟化方案可以分为以下几类:GPU 直通模式,GPU SRIOV 模式,GPU 半虚拟化(mediated passthrough:包括Intel GVT-g和Nvidia GRID vGPU),VMWare的GPU全虚拟化(vSGA)。当然也有尚未成熟处于玩票性质的virtio GPU等等。 各种方案的架构如下图,相信大家简单...

HanBlogs 1万+

KVM+显卡直通(passthrough)配置方法及问题说明

1.硬件条件 首先要确定主板和CPU都支持VT-d技术,即Virtualization Technology for Direct I/O(英特尔虚拟技术)。近年的产品应该都支持此技术。 在BIOS里将 还要确定要直通的显卡支持PCI Pass-through。似乎A卡对于直通的支持比N卡好,但N卡性能比A卡好,这个大家都知道。目前市面上的显卡一般都支持直通。我用过的NVIDIA 的M60和GeF...

dwj1979的博客 5万+

在新Linux内核中体验GPU虚拟化

从内核4.10, 支持 virtual gpu 的代码开始汇入主线程。这部分代码主要由两部分组成: 首先, mediated 设备框架(mdev),基本上,这部分代码使得内核驱动开始用vfio框架跟接口来支持虚拟pci设备。nvidia 以及intel都采用了这种所谓的mdev机制,将宿主机中的物理GPU分割成多个虚拟设备,以便供多个虚拟机同时使用。 第二个, intel 的i915驱动也是采...

专注虚拟化的Linuxer 4885

RTX4090 云 GPU 在 GPU 直通虚拟机中的测试

本文系统阐述了NVIDIA RTX4090在KVM/QEMU虚拟化环境中通过GPU直通技术实现高性能计算与图形渲染的全流程,涵盖硬件配置、VFIO驱动绑定、虚拟机创建及性能优化,并通过深度学习、推理服务和三维渲染实测验证接近原生的性能表现。

weixin_28235889的博客 1172
上一篇: 在qemu kvm虚拟机中挂载硬盘分区的方法总结
下一篇: VGA GPU passthrough qemu虚拟桌面pci穿透--Shell脚本检测与关机
葫芦娃二娃
博客等级 码龄15年 1850粉丝 69原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值