» 您尚未登录:请 登录 | 注册 | 标签 | 帮助 | 小黑屋 |


 22 12
发新话题
打印

[其他] J3455安装PVE折腾记录(直通GPU至Libreelec当HTPC+黑群+OMV)20190703更新简易版

你好,我在NUC6 J3455上尝试

按照Dump VGA romfile这步时
先后试了UEFI启动live U盘,cat rom时cat: rom: Input/output error
然后传统方式用live U盘和安装到硬盘上,cat rom没问题

以下是我操作步骤,不知道是不是修复方式不对,也是先试错几次

tt@tt-NUC6CAYH:~$ git clone https://github.com/awilliam/rom-parser
正克隆到 'rom-parser'...
remote: Enumerating objects: 26, done.
remote: Total 26 (delta 0), reused 0 (delta 0), pack-reused 26
展开对象中: 100% (26/26), 完成.
tt@tt-NUC6CAYH:~$ cd rom-parser/
tt@tt-NUC6CAYH:~/rom-parser$ make
gcc -o rom-parser rom-parser.c
gcc -DFIXER -o rom-fixer rom-parser.c
tt@tt-NUC6CAYH:~/rom-parser$ sudo ./
.git/       rom-fixer   rom-parser  
tt@tt-NUC6CAYH:~/rom-parser$ sudo ./rom-parser /tmp/image.rom
Valid ROM signature found @0h, PCIR offset 40h
        PCIR: type 0 (x86 PC-AT), vendor: 8086, device: 0406, class: 030000
        PCIR: revision 3, vendor revision: 0
        Last image
tt@tt-NUC6CAYH:~/rom-parser$ sudo ./rom-fixer /tmp/image.rom
Valid ROM signature found @0h, PCIR offset 40h
        PCIR: type 0 (x86 PC-AT), vendor: 8086, device: 0406, class: 030000
        PCIR: revision 3, vendor revision: 0

Modify vendor ID 8086? (y/n): n
Modify device ID 0406? (y/n): y
New device ID: 5a85
Overwrite device ID with 5a85? (y/n): y
        Last image
ROM checksum is invalid, fix? (y/n): y
tt@tt-NUC6CAYH:~/rom-parser$ sudo ./rom-parser /tmp/image.rom
Valid ROM signature found @0h, PCIR offset 40h
        PCIR: type 0 (x86 PC-AT), vendor: 8086, device: 5a85, class: 030000
        PCIR: revision 3, vendor revision: 0
        Last image
然后用这个rom启动虚拟机时,输出如下
复制内容到剪贴板
代码:
kvm: -device vfio-pci,host=00:02.0,addr=0x02,x-igd-gms=1,romfile=image.rom: Failed to mmap 0000:00:02.0 BAR 2. Performance may be slow
kvm: -device vfio-pci,host=00:02.0,addr=0x02,x-igd-gms=1,romfile=image.rom: IGD device 0000:00:02.0 cannot support legacy mode due to existing devices at address 1f.0
TASK OK
屏幕是许多井字形的错乱图
用没修复时又是和以前试过的一样,WEB连不上主机“死机”

分别用这两种试情况和上面说的一样,修复过的romfile井占满屏,没修复romfile的死机
args: -device vfio-pci,host=00:02.0,addr=0x02,x-igd-gms=1,romfile=[rom文件名].bin
hostpci0: 00:02.0,x-vga=on,romfile=[rom文件名].bin

[ 本帖最后由 egbluecats 于 2019-7-2 20:39 编辑 ]


TOP

复制内容到剪贴板
代码:
boot: cdn
bootdisk: sata0
cores: 1
ide2: none,media=cdrom
memory: 2048
name: LibreELEC
net0: virtio=AA:42:8E:B2:5F:88,bridge=vmbr0,firewall=1
numa: 0
ostype: l26
sata0: local-lvm:vm-100-disk-0,size=8G
sata1: local-lvm:vm-100-disk-1,size=552M
scsihw: virtio-scsi-pci
smbios1: uuid=389e684c-cf35-4e85-b16b-64a42181be87
sockets: 2
vmgenid: 4c392c9d-1b2e-45dc-80bc-b9884e6c1ad5
就是这,然后再加上你的那个
args: -device vfio-pci,host=00:02.0,addr=0x02,x-igd-gms=1,romfile=[rom文件名].bin
hostpci0: 00:0e,rombar=0
vga: none
或者这个
hostpci0: 00:02.0,x-vga=on,romfile=[rom文件名].bin

但是romfile修复的不能用啊,就是看看我这修复的方法正确吗?
vga: none这个我肯定加上了,只是在装LibreELEC时在控制台里操作,所以上面贴的就是默认
在尝试HDMI输出时,就是复制上面的args,在Web硬件里显示那自动变成无

机器的lspci那核显声卡和你的都一样
8086:5a85
8086:5a98

再贴一段Ubuntu装硬盘里的报告
复制内容到剪贴板
代码:
{
  "Version": "19.10",
  "OEM": {
    "Vendor": "Intel Corporation",
    "Product": "NUC6CAYH",
    "Family": "Intel NUC"
  },
  "BIOS": {
    "Vendor": "Intel Corp.",
    "Version": "AYAPLCEL.86A.0059.2018.1226.1422"
  },
  "CPU": {
    "OpMode": "32-bit, 64-bit",
    "CPUs": "4",
    "Threads": "1",
    "Cores": "4",
    "Sockets": "1",
    "Vendor": "GenuineIntel",
    "Family": "6",
    "Model": "92",
    "Stepping": "9",
    "Name": "Intel(R) Celeron(R) CPU J3455 @ 1.50GHz",
    "Virtualization": "VT-x"
  },
  "Arch": "amd64",
  "GPU": [
    {
      "Vendor": "8086",
      "Model": "5a85"
    }
  ],
  "RAM": 8,
  "Disks": [
    120,
    31
  ],
  "Partitions": [
    114.9,
    2.2
  ],
  "Screens": [
    {
      "Size": "527mmx296mm",
      "Resolution": "2560x1440",
      "Frequency": "59.95"
    }
  ],
  "Autologin": false,
  "LivePatch": false,
  "Session": {
    "DE": "ubuntu:GNOME",
    "Name": "ubuntu",
    "Type": "x11"
  },
  "Language": "zh_CN",
  "Timezone": "Asia/Shanghai",
  "Install": {
    "Media": "Ubuntu 19.10 \"Eoan Ermine\" - Alpha amd64 (20190630)",
    "Type": "GTK",
    "OEM": false,
    "PartitionMethod": "use_device",
    "DownloadUpdates": true,
    "Language": "zh_CN",
    "Minimal": true,
    "RestrictedAddons": false,
    "Stages": {
      "0": "language",
      "1": "language",
      "16": "console_setup",
      "19": "wireless",
      "21": "prepare",
      "37": "partman",
      "84": "start_install",
      "91": "timezone",
      "94": "usersetup",
      "111": "user_done",
      "439": "done"
    }
  }
}
现在我就想搞懂我这修复的方式到底正不正确,是不是我那样修复的,总之看报错说修复的那个romfile不支持。
这与宿主机是UEFI引导应该没关吧

再贴一段lspci的
复制内容到剪贴板
代码:
00:00.0 Host bridge: Intel Corporation Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series Host Bridge (rev 0b)
00:02.0 VGA compatible controller: Intel Corporation Device 5a85 (rev 0b)
00:0e.0 Audio device: Intel Corporation Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series Audio Cluster (rev 0b)
00:0f.0 Communication controller: Intel Corporation Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series Trusted Execution Engine (rev 0b)
00:12.0 SATA controller: Intel Corporation Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series SATA AHCI Controller (rev 0b)
00:13.0 PCI bridge: Intel Corporation Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series PCI Express Port A #1 (rev fb)
00:13.1 PCI bridge: Intel Corporation Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series PCI Express Port A #2 (rev fb)
00:13.2 PCI bridge: Intel Corporation Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series PCI Express Port A #3 (rev fb)
00:15.0 USB controller: Intel Corporation Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series USB xHCI (rev 0b)
00:16.0 Signal processing controller: Intel Corporation Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series I2C Controller #1 (rev 0b)
00:18.0 Signal processing controller: Intel Corporation Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series HSUART Controller #1 (rev 0b)
00:19.0 Signal processing controller: Intel Corporation Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series SPI Controller #1 (rev 0b)
00:19.1 Signal processing controller: Intel Corporation Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series SPI Controller #2 (rev 0b)
00:19.2 Signal processing controller: Intel Corporation Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series SPI Controller #3 (rev 0b)
00:1f.0 ISA bridge: Intel Corporation Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series Low Pin Count Interface (rev 0b)
00:1f.1 SMBus: Intel Corporation Atom/Celeron/Pentium Processor N4200/N3350/E3900 Series SMBus Controller (rev 0b)
01:00.0 Unassigned class [ff00]: Realtek Semiconductor Co., Ltd. RTS5229 PCI Express Card Reader (rev 01)
02:00.0 Network controller: Intel Corporation Device 24fb (rev 10)
03:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 15)



TOP

kvm: -device vfio-pci,host=00:02.0,addr=0x02,x-igd-gms=1,romfile=J3455_HD500.bin: IGD device 0000:00:02.0 cannot support legacy mode due to existing devices at address 1f.0
TASK OK

用上还是这样,我也不知道在哪看HDMI固件
和宿主机(PVE)是不是UEFI 引导无关吧?
装的LibreELEC是9.0.2
要是你身边有这个NUC6就好了

[ 本帖最后由 egbluecats 于 2019-7-3 18:12 编辑 ]


TOP

我在英特尔也搜了下,更新HDMI固件是在windows下进行的

但说回这个,默认的Machine就是 默认 (i440fx) 所以我这肯定不是q35

我这个LibreELEC 装是按照那个img2kvm转的
先创建虚拟机然后用这个img2kvm,在硬件里再把这硬盘添加上去
由于之前硬盘选过SCSI启动不了,就选成了SATA
先把转的那块第一启动然后,装到创建虚拟机时的那块里
这装的过程没问题吧是先在控制台选择安装到硬盘,然后再把显示设成none
其实UEFI的也装过,直接有个错误,还不像这个说缺失显卡

但我之前试过那个unRAID里的LibreELEC版本又老,装上后不设核显能用那个SPICE连,设置核显直通也和这一样就是宿主机死机

去年就试过了,后来看也弄不成就放弃了,最后是就是上面有人回复的那样,装了个桌面开机启动啥的
但那源里的KODI还是旧了,自己也不会在其他机器上编译打包,就装上源里的吃灰
今年买回个j4105时还得又试了下,还是失败
偶然看到这个帖,还想着这吃灰NUC又能起作用了
因为这外接硬盘显得累赘不如装虚拟机同时还能运行播放系统

TOP

我又试了下

当我在web里设置主GPU时
配置文件是这样hostpci0: 00:02.0,x-vga=1

启动输出是
kvm: -device vfio-pci,host=00:02.0,id=hostpci1,bus=pci.0,addr=0x11,x-vga=on: Failed to mmap 0000:00:02.0 BAR 2. Performance may be slow

当web勾选了rombar时
配置文件里rombar=0,此时会死机

强制关机重启后,又在配置里加上romfile
hostpci0: 00:02.0,x-vga=1,romfile=J3455_HD500.bin
启动输出如下,用我自己修复的也一样
kvm: -device vfio-pci,host=00:02.0,id=hostpci0,bus=pci.0,addr=0x10,x-vga=on,romfile=/usr/share/kvm/J3455_HD500.bin: Failed to mmap 0000:00:02.0 BAR 2. Performance may be slow
然后加了没修复的romfile,则也是死机

这下输出的少一行了,但我昨天试的都是井字花屏。
自己手动用args 把那addr填成上面的0x11,加上romfile错误也是一样
不改addr的话错误则是两行

[ 本帖最后由 egbluecats 于 2019-7-3 21:54 编辑 ]

TOP

引用:
原帖由 ChinaBoyFF 于 2019-7-4 10:34 发表
请教楼主,我的机器也是暴风矿渣j3455.按照你的教程,配置好后,但没法直通,基本都是花屏,最好的情况是灰屏,可以看到一个鼠标,可以移动,但没有其他反应。后边也用楼主给出最新配置文件配置了,还是不行。我发现 ...
你说的自己下载的 vga rom 就是echo 1 >rom 然后cat 到/tmp吧
那个生成出来的几个MD5都不一样
你看看启动虚拟机时输出了啥信息

TOP

/etc/default/grub
复制内容到剪贴板
代码:
# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.
# For full documentation of the options in this file, see:
#   info -f grub -n 'Simple configuration'

GRUB_DEFAULT=0
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="Proxmox Virtual Environment"
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on video=vesafb:off,efifb:off"
GRUB_CMDLINE_LINUX=""

# Disable os-prober, it might add menu entries for each guest
GRUB_DISABLE_OS_PROBER=true

# Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel that obtains
# the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)
#GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"

# Uncomment to disable graphical terminal (grub-pc only)
#GRUB_TERMINAL=console

# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
#GRUB_GFXMODE=640x480

# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
#GRUB_DISABLE_LINUX_UUID=true

# Disable generation of recovery mode menu entries
GRUB_DISABLE_RECOVERY="true"

# Uncomment to get a beep at grub start
#GRUB_INIT_TUNE="480 440 1"
/etc/modprobe.d/blacklist.conf
复制内容到剪贴板
代码:
blacklist snd_hda_intel
blacklist snd_soc_skl
blacklist snd_hda_codec_hdmi
blacklist i915
/etc/modprobe.d/vfio.conf
复制内容到剪贴板
代码:
options vfio-pci ids=8086:5a85,8086:5a98
/etc/modules
复制内容到剪贴板
代码:
# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd
/etc/pve/qemu-server/[vmid].conf
复制内容到剪贴板
代码:
boot: cdn
bootdisk: sata0
cores: 1
hostpci0: 00:02.0,x-vga=1
hostpci1: 00:0e.0,rombar=0
ide2: none,media=cdrom
memory: 2048
name: LibreELEC
net0: virtio=EE:56:5C:9B:FF:AB,bridge=vmbr0,firewall=1
numa: 0
ostype: l26
sata0: local-lvm:vm-100-disk-0,size=8G
sata1: local-lvm:vm-100-disk-1,size=552M
scsihw: virtio-scsi-pci
smbios1: uuid=e3af2eb4-9abc-425d-8d1e-2c534c3b21fb
sockets: 2
vga: none
vmgenid: fb17149a-0b6b-4d40-9a73-7795dfd0a660
这个反正我就用web里添加的,用args应该也一样。
而且用你的那个addr=0x02的话错误就是
IGD device 0000:00:02.0 cannot support legacy mode due to existing devices at address 1f.0

find /sys/kernel/iommu_groups/ -type l
复制内容到剪贴板
代码:
/sys/kernel/iommu_groups/7/devices/0000:00:16.0
/sys/kernel/iommu_groups/5/devices/0000:03:00.0
/sys/kernel/iommu_groups/5/devices/0000:00:13.2
/sys/kernel/iommu_groups/5/devices/0000:02:00.0
/sys/kernel/iommu_groups/5/devices/0000:00:13.0
/sys/kernel/iommu_groups/5/devices/0000:01:00.0
/sys/kernel/iommu_groups/5/devices/0000:00:13.1
/sys/kernel/iommu_groups/3/devices/0000:00:0f.0
/sys/kernel/iommu_groups/11/devices/0000:00:1f.0
/sys/kernel/iommu_groups/11/devices/0000:00:1f.1
/sys/kernel/iommu_groups/1/devices/0000:00:02.0
/sys/kernel/iommu_groups/8/devices/0000:00:18.0
/sys/kernel/iommu_groups/6/devices/0000:00:15.0
/sys/kernel/iommu_groups/4/devices/0000:00:12.0
/sys/kernel/iommu_groups/2/devices/0000:00:0e.0
/sys/kernel/iommu_groups/10/devices/0000:00:1a.0
/sys/kernel/iommu_groups/0/devices/0000:00:00.0
/sys/kernel/iommu_groups/9/devices/0000:00:19.2
/sys/kernel/iommu_groups/9/devices/0000:00:19.0
/sys/kernel/iommu_groups/9/devices/0000:00:19.1

TOP

引用:
原帖由 xif7456 于 2019-7-4 18:56 发表


上的兄弟把GPU ram调大后搞定了,你也试试?

还有你的虚拟机配置里有两个参数没加上
那也不是GPU ram 啊 调成4096也没用,还是之前的错误 我指的是Failed to mmap 0000:00:02.0 BAR 2. Performance may be slow
配置两个参数 是指的是args里的?反正那addr不能用。

TOP

引用:
原帖由 xif7456 于 2019-7-4 21:23 发表


把虚拟机内存分配到4G试试
IGD直通到虚拟机里的总线地址一定要在0x02,所以addr=0x02是必须的
x-igd-gms=1 这个参数如果不加会造成低于5G内存的虚拟机起不来

参考:https://patchwork.kernel.org/patch/985 ...
kvm: -device vfio-pci,host=00:02.0,addr=0x02,x-igd-gms=1,romfile=image.rom: Failed to mmap 0000:00:02.0 BAR 2. Performance may be slow
kvm: -device vfio-pci,host=00:02.0,addr=0x02,x-igd-gms=1,romfile=image.rom: IGD device 0000:00:02.0 cannot support legacy mode due to existing devices at address 1f.0
TASK OK
复制内容到剪贴板
代码:
boot: cdn
bootdisk: sata0
cores: 1
ide2: none,media=cdrom
memory: 4096
name: LibreELEC
net0: virtio=CA:E5:0A:70:2B:53,bridge=vmbr0,firewall=1
numa: 0
ostype: l26
sata0: local-lvm:vm-100-disk-0,size=8G
sata1: local-lvm:vm-100-disk-1,size=552M
smbios1: uuid=0075396c-a662-4a5a-9543-584229c7f5b6
sockets: 2
vga: none
vmgenid: 405006a1-d738-4605-a9a6-6eb55e5997ea
args: -device vfio-pci,host=00:02.0,addr=0x02,x-igd-gms=1,romfile=image.rom
hostpci0: 00:0e,rombar=0
vga: none

TOP

引用:
原帖由 xif7456 于 2019-7-4 22:03 发表


以下是qemu的源码,这个报错就是机器类型的问题。。。。
+    /*
+     * We need to create an LPC/ISA bridge at PCI bus address 00:1f.0 that we
+     * can stuff host values into, so if there's alre ...
可是默认就是
默认 (i440fx)

我自己手动填上machine:i440fx又启不来

只有填对了addr
才不会有IGD device 0000:00:02.0 cannot support legacy mode due to existing devices at address 1f.0
这个错误

填对是只先在web添加pci 然后启动错误里有那个addr 在vm100 vm101 addr 分别是0x10和0x11

[ 本帖最后由 egbluecats 于 2019-7-4 22:20 编辑 ]

TOP

死机后强制关了再开就这样了
复制内容到剪贴板
代码:
Filesystem            Size  Used Avail Use% Mounted on
udev                  3.8G     0  3.8G   0% /dev
tmpfs                 789M  8.9M  780M   2% /run
/dev/mapper/pve-root   28G   28G     0 100% /
tmpfs                 3.9G   37M  3.9G   1% /dev/shm
tmpfs                 5.0M     0  5.0M   0% /run/lock
tmpfs                 3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/sda2             511M  304K  511M   1% /boot/efi
/dev/fuse              30M   16K   30M   1% /etc/pve
两次了,真的想放弃,这几天这破NUC上反反复复装了十几次PVE了

TOP

引用:
原帖由 ChinaBoyFF 于 2019-7-5 09:08 发表


你现在的虚拟机是没直通gpu之前用控制台装好的吗?如果是的话,尝试用img引导开机,重装试下。我之前控制台装好的也开机花屏
现在不是花屏了,直接黑屏。
复制内容到剪贴板
代码:
()
kvm: -device vfio-pci,host=00:02.0,addr=0x02,x-igd-gms=1,romfile=image.rom: Failed to mmap 0000:00:02.0 BAR 2. Performance may be slow
kvm: -device vfio-pci,host=00:02.0,addr=0x02,x-igd-gms=1,romfile=image.rom: IGD device 0000:00:02.0 cannot support legacy mode due to existing devices at address 1f.0
TASK OK
就这两根本没法解决

[ 本帖最后由 egbluecats 于 2019-7-5 13:02 编辑 ]

TOP

引用:
原帖由 xif7456 于 2019-7-6 22:08 发表


不过说实话,如果你是想拿来跑docker+路由+libreelec的话建议你也别折腾了,上N1吧
N1刷Coreelec跑docker,然后docker里跑openwrt就可以当路由了,N1还能点亮HDR
我搞J3455直通GPU是为了兼做NAS,NUC也没办法上 ...
其实我也有三个N1,弄这个也仅仅是之前试过不行,然后那天搜那个啥某天搜J3455 HDR来着,结果搜到了本帖
还心想难道又有机会了,结果搞了将近一个礼拜,算了不弄了
(其实我又上了个华擎J3455 350全新的车 准备再搞这个 然后NUC就准备卖了)

TOP

今天华擎J3455到了试了也不行,
能加的都加了,就和之前那NUC一样黑屏,只有光标在闪,可能过一会会输出个宿主机的一行信息。

搞这个真的烦人,买回一块主板也不行。

我以为是LibreELEC过新的原因,换了应该和你图上KODI编译日期相符的9.0.1也不行

不会是PVE过新吧,我是每次装好后就升级了 现在最新是这个Virtual Environment 5.4-10
Linux pve 4.15.18-17-pve #1 SMP PVE 4.15.18-43 (Tue, 25 Jun 2019 17:59:49 +0200) x86_64 GNU/Linux

还有你们上面说的分组到一个里的那帖子我之前也见过,说是华擎的,难道是他们都装的旧的吗,反正我这个看见是没在一个组里

还有GRUB这个GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on video=efifbff,vesafbff"
我用这就启不来,在NUC和华擎J3455上都是,只有把后面两交换了才能起来vesafbff,video=efifbff

[ 本帖最后由 egbluecats 于 2019-7-7 21:15 编辑 ]

TOP

引用:
原帖由 xif7456 于 2019-7-7 23:52 发表


我的版本是5.4-3,用官网iso装的

直通GPU后再安装Libreelec可以不?如果显示task ok,宿主不死机的话应该是没有问题的
要不试试升级系统后,看还能成功吗。

直通GPU后是指,先能成功的让HDMI能输出然后再安装吗,
问题我这先黑屏怎么进行下一步啊,肯定都是TASK

TOP

 22 12
发新话题
     
官方公众号及微博