pve远程连接 spcie_proxmox折腾 篇一:解决j3455直通iommu分组问题,PVE内核编译教程...
更新:
2020.02.22更新內核pve-kernel-5.3.18-2,常規更新,今后不會一有新版本就更新了,估計大版本更新再編譯新內核了,每一次都挺折騰的,而且編譯出的內核有bug恢復起來挺麻煩鏈接?提取碼: 6cfx 12.13更新內核pve-kernel-5.3.13.1,常規更新。鏈接?提取碼: wc6n 12月6日更新內核pve-kernel-5.3.10.1 基于5.3版本內核的promox-ve6.1-2已經release了,5.3版本內核可以擺脫5.0版本內核獨立使用了。鏈接?提取碼: 7ngi 11月14日更新 內核5.3.7-1,一不小心跟著官方源碼跑到比正式版前面很多了,而5.0版本的Ubuntu源碼被我刪了,懶得再下,所以干脆編譯了這個版本,大家可以先行嘗試,或者等待官方更新到5.3內核版本后再使用鏈接?提取碼: nn91 9月4日更新pve內核 5.0.21-2鏈接提取碼: zcyv
本文教程內容是解決華擎J3455主板在PVE下開啟IOMMU不能分組的問題,解決辦法是編譯PVE內核,打上特制的ACS_override補丁并安裝。
提醒:安裝內核有宿主系統崩潰的風險,請務必先進行備份。
詳情我將寫一篇LVM下安裝的PVE利用snapshot創建快照實現宿主機備份與還原的帖子教程。
首先是常規的pve操作內容,請用root用戶,包括編譯部分也要用root用戶編譯,老外的建議,不清楚為什么。
1.開啟IOMMU分組功能。
編輯 /etc/default/grub,將以下部分修改如下:
GRUB_CMDLINE_LINUX_DEFAULT="quiet?intel_iommu=on pcie_acs_override=downstream"
amd的cpu請將intel_iommu=on 改為 amd_iommu=on
然后是修改/etc/modules文件, 添加如下內容:
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd
然后執行
update-initramfs -u -k all
再執行
dmesg | grep -e DMAR -e IOMMU -e AMD-Vi
查看是否開啟了IOMMU,如果有 IOMMU, Directed I/O or Interrupt Remapping is enabled之類的字樣那么說明IOMMU開啟了,這部分網上教程很多,我就不贅述了。
2.編譯內核
當然由于編譯過程較漫長,如有必要我可以提供pve6.0的5.0.18-1版本的已修改內核。廢話不多說,開始進入教程:
1).首先需要編譯環境,建議宿主機就老老實實宿主機,不要在pve系統里直接編譯,用其他機器或者開個虛擬機。Ubuntu和Debian都行,我用的是Debian buster。至少需要100G的空間,用以存放編譯PVE內核的源碼和編譯過程文件。
2) .安裝編譯所需軟件,由于摸索過程中安裝的軟件太多了,下面列的不一定全,請嘗試的小伙伴如果在編譯過程報錯,請回帖反饋給我,我來查查看是什么軟件忘記寫上來了
apt install git nano screen patch fakeroot build-essential devscripts libncurses5 libncurses5-dev libssl-dev bc flex bison libelf-dev libaudit-dev libgtk2.0-dev libperl-dev libperl-dev asciidoc xmlto gnupg gnupg2 rsync lintian debhelper libdw-dev libnuma-dev libiberty-dev libslang2-dev debhelper git-core lintian build-essential automake autoconf libtool sphinx-common dh-python
3) .獲取pve-kernel源碼,因為我本人網絡不好,我花了幾天時間從pve的git站拖到了國內的gitee,如果同志們的網絡好的話,可用嘗試用pve自己的源碼git
git clone git://git.proxmox.com/git/pve-kernel.git
或者用下面的我轉到gitee的(國內的代碼托管網站,不過可能有bug,我自己pull內核源碼有時候拉不下來)
git clone git://gitee.com/hahach/pve-kernel.git
以上兩個2選1 clone即可
4).這一步最關鍵 進入pve-kernel目錄,進入patches/kernel目錄,修改“0003-pci-Enable-overrides-for-missing-ACS-capabilities-4..patch”這個patch文件,未來其他版本的可能不是這個名字,但是一定會包含ACS 這個關鍵詞
將以下部分進行修改
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -194,6 +194,106 @@ static int __init pci_apply_final_quirks(void)
改為
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -194,6 +194,105 @@ static int __init pci_apply_final_quirks(void)
如果熟悉patch格式的應該看得明白,我可以解釋下,這里是把106改為105了,因為下面具體的補丁內容會刪減一行
接下來是關鍵的部分,作如下修改:
+ if (!pci_is_pcie(dev) ||
+ pci_find_ext_capability(dev, PCI_EXT_CAP_ID_ACS))
改為
+ if (!pci_is_pcie(dev))
注意別漏了加上的小括號
5).可以開始編譯了
cd pev-kernel
make
這里需要下載linux內核源碼,大約2g,需要很長時間,請耐心等待,另外編譯過程很智能,不需要make命令加線程,過程中會自動多線程。我j3455主板,debian虛擬機給了3核,下載加編譯用了6小時,僅供參考。
6).如果順利那么會在pve-kernel目錄得到4個deb文件
root@debian:~/pve-kernel# ll *.deb
-rw-r--r-- 1 root root 1286948 8月 2 22:31 linux-tools-5.0_5.0.18-1_amd64.deb
-rw-r--r-- 1 root root 4907164 8月 2 22:31 linux-tools-5.0-dbgsym_5.0.18-1_amd64.deb
-rw-r--r-- 1 root root 9576432 8月 2 22:31 pve-headers-5.0.18-1-pve_5.0.18-1_amd64.deb
-rw-r--r-- 1 root root 54006332 8月 2 22:34 pve-kernel-5.0.18-1-pve_5.0.18-1_amd64.deb
將以上4個deb文件一同傳到pve的root目錄下。
7).以防萬一,做好系統備份或者快照,zfs文件系統我不會,請自行查詢資料,我會寫一篇lvm文件系統下的pve系統備份攻略,詳見我的另外一個帖子,因為等級低沒法發帖子鏈接,湊合看吧:PVE在LVM文件系統下利用snapshot進行備份與還原
8).弄完系統備份后可以開始安裝型內核了。
運行
dpkg -i *.deb
安裝內核,等待安裝結束,重啟即可。
重啟后即可發現如下圖,IOMMU分組全都打斷了,每一個硬件一個分組,不過直通的時候有個問題需要注意
每一個PCIE id 只能一同直通,不能分別直通。例如我的82576網卡是 04:00.01和04:00.02,都是04:00,只能一起直通
12.13更新內核pve-kernel-5.3.13.1,常規更新。鏈接,提取碼: wc6n
12月6日更新內核pve-kernel-5.3.10.1 基于5.3版本內核的promox-ve6.1-2已經release了,5.3版本內核可以擺脫5.0版本內核獨立使用了。鏈接,提取碼: 7ngi
11月14日更新 內核5.3.7-1,一不小心跟著官方源碼跑到比正式版前面很多了,而5.0版本的Ubuntu源碼被我刪了,懶得再下,所以干脆編譯了這個版本,大家可以先行嘗試,或者等待官方更新到5.3內核版本后再使用鏈接, 提取碼: nn91
9月4日更新pve內核 5.0.21-2鏈接,提取碼: zcyv
總結
以上是生活随笔為你收集整理的pve远程连接 spcie_proxmox折腾 篇一:解决j3455直通iommu分组问题,PVE内核编译教程...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 去重之后统计条数_BOPET:12的普通
- 下一篇: alpinestars与丹尼斯_骑行靴|