虽然可能并不是很详细。
首先是 https://github.com/moetayuko/intel-gpu-i915-backports 这个是宿主机的模块仓库,按照说明安装。6.8内核是可用的
然后有一些内核命令行参数比如 i915.enable_guc=3 i915.max_vfs=7 ,这些都是网上已经有详细说明如何设置的。还有用sysfs-utils创建vf,网上都有教程。
然后虚拟机的话,目前发现换pve内核最简单。
添加一个pve源,以及gpg密钥
wget https://enterprise.proxmox.com/debian/proxmox-release-bookworm.gpg -O /etc/apt/trusted.gpg.d/proxmox-release-bookworm.gpg
然后 apt install proxmox-kernel-6.8 apt install proxmox-headers-6.8
apt install ./intel-i915-dkms_1.24.1.19.240119.1.nodrm+i3-1_all.deb
再移除老内核apt remove linux-image-amd64 等等
这样就可以了。虚拟机配置选q35+ovmf实测可以出/dev/dri/renderD128。如果有问题一般是内核头版本不对之类的。
然后有个小坑,pve内核用portainer_agent,需要这样:
name: portainer_agent
services:
agent:
image: portainer/agent:latest
container_name: portainer_agent
restart: always
security_opt:
- apparmor:unconfined
ports:
- "192.168.2.215:9001:9001"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /var/lib/docker/volumes:/var/lib/docker/volumes
apparmor:unconfined 是为了防止docker.sock没权限。
另外还有一些其他的,比如使用docker的同时如果要保持iptables和ip6tables的forward是accept,需要先把sysctl这边转发开启来,然后daemon.json不要开ip6tables,使用ipv6nat。主要是docker自己操作ip6tables似乎会把规则变drop,而且不容易改回来。
{
"ipv6": true,
"ip6tables": false,
"fixed-cidr-v6": "fd00:aaaa:0000:0000::/64",
"default-address-pools": [
{"base": "172.17.0.0/16", "size": 24},
{"base": "fd00:aaaa:0000:1::/64", "size": 80}
]
}