跳到主要內容

PVE SATA controller 直通

SATA controller 比 RDM 直通複雜一些,但可以讓客體看到SMART。

參考

https://gist.github.com/emanuellopes/a43d978f1b3604b07209a12cdf951ae3

https://blog.csdn.net/Devout_programming/article/details/129109114

https://qiedd.com/1894.html

https://upsangel.com/htpc-nas/iommu-vfio-gpo-proxmox-pve-pcie%E7%9B%B4%E9%80%9A%E5%92%8C%E6%A0%B8%E9%A1%AFhdmi%E7%9B%B4%E9%80%9A%E8%A8%AD%E7%BD%AE%E5%8F%83%E6%95%B8%E8%A7%A3%E9%87%8B/

https://hackmd.io/@davidho9713/pve_pci_passthrough

裡面雖然有些是說GPU直通,但其實直通都會遇到類似的問題 (包括 nvme)


https://gist.github.com/r15ch13/ba2d738985fce8990a4e9f32d07c6ada

這個 sh 好用,可以看 IOMMU group。


原因: 多個裝置可能會被分在同一個 IOMMU group 下,如果你想把其中一個裝置直通給客體,那客體啟動時,可能會因為要抓裝置reset,影響到同 group 下的其他裝置導致整個系統不穩。

所以要利用 iommu、 vfio 和 ACS override 讓裝置盡量分到不同的 group 中。


1. 用上面附的 iommu.sh 看 group 


可以看到我的 ASM1166 被分配到了 group,我直接在 VM 使用會導致 host 跟著死機

 

2. 改開機設定,分為

2-1. grub (一般把PVE安裝在 ext4,會用這個引導開機)

https://blog.csdn.net/Devout_programming/article/details/129109114

https://docs.redhat.com/zh_hans/documentation/red_hat_virtualization/4.1/html/installation_guide/appe-configuring_a_hypervisor_host_for_pci_passthrough#appe-Configuring_a_Hypervisor_Host_for_PCI_Passthrough

編輯 grub

nano /etc/default/grub

找到 GRUB_CMDLINE_LINUX_DEFAULT,加上 amd_iommu=on pcie_acs_override=downstream,multifunction;如果是 intel CPU請把 amd_iommu 改成 intel_iommu

GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on pcie_acs_override=downstream,multifunction"

2.2. systemd-boot (如果把PVE安裝在 zfs 上,則會用這個引導開機)


ssh:
nano /etc/kernel/cmdline
root後方加入iommu的設定
root=ZFS=rpool/ROOT/pve-1 boot=zfs amd_iommu=on iommu=pt pcie_acs_override=downstream,multifunction
ssh:
proxmox-boot-tool refresh


3. 編輯 modules 加入 vfio 模組

nano /etc/modules
加入 vfio 模組
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd

啟用iommu unsafe interrupts

nano /etc/modprobe.d/iommu_unsafe_interrupts.conf

加入

options vfio_iommu_type1 allow_unsafe_interrupts=1

套用

update-grub
update-initramfs -u -k all 
reboot

4.再度用 iommu.sh 

 

可以看到 ASM1166 被配到獨立的 group 裡面了,此時就可以正常地把它直通客體了

後續直接用 VM web GUI,設定 PCI 裝置直通即可

 

 

留言

這個網誌中的熱門文章

PVE 相關工具網站

 UBU  https://winraid.level1techs.com/t/tool-guide-news-uefi-bios-updater-ubu/30357 魔都水滴的 blog,裡面也是整理,有 pve_source 的連結 https://blog.margrop.net/post/proxmox-ve-daily-maintain/ pve_source  (似乎不能訪問) https://bbs.x86pi.cn/thread?topicId=20   AMD核顯直通 顯示輸出 HDMI/DP 簡單方法完整版 vbios提取 無需定制OVMF 可顯示開機BIOS啓動畫面 附送pve_source使用方法 https://www.youtube.com/watch?v=BElSsyLSX5c   PVE7 AMD 5700G 核显直通 (iGPU Passthrough) https://www.bilibili.com/video/BV11d4y1G7Nk    

Debain12 安裝 nginx

1. 安裝 Debain12,安裝時記得勾ssh server  2. 安裝完後,如果想偷懶都用 root 登入,要修改一些東西,參考 https://www.cnblogs.com/awakenedy/articles/18027712   先用 user 登入 ssl 後 su - root (輸入 root 密碼) nano /etc/ssh/sshd_config  開這兩個設定  PermitRootLogin yes PasswordAuthentication yes  保存並重啟ssh  systemctl restart ssh  3. 安裝 docker,參考 https://docs.docker.com/engine/install/debian/   新手菜雞如我可以用 convenience-script 偷懶  如果沒有安裝 curl 要先安裝  apt-get update -y && apt-get install curl -y curl -fsSL https://get.docker.com -o get-docker.sh sh get-docker.sh 然後安裝 docker UI (參考 https://cutejaneii.wordpress.com/2017/04/17/docker-2-%E5%AE%89%E8%A3%9Ddocker%E5%8F%8Aportainer/ )  docker pull portainer/portainer docker run -d -p 9000:9000 --restart=always --name portainer -v /var/run/docker.sock:/var/run/docker.sock portainer/portainer  然後就可以回到區網內任何電腦,用 http://{guest_ip}:9000 訪問 docker UI,例如 http://192.168.1.123:9000  設定初始登入密碼,要12字, 如果覺得太長可以在登進去後去 Settings / Authentication / ...