[{"data":1,"prerenderedAt":1390},["ShallowReactive",2],{"wiki-page-/wiki/2024-03-30-linux-jiao-cheng/ch7-qemu-kvm-xu-ni-ji":3,"wiki-doc-items-/wiki/2024-03-30-linux-jiao-cheng/ch7-qemu-kvm-xu-ni-ji":1340},{"id":4,"title":5,"body":6,"chapter":1326,"chapterSort":1327,"date":1328,"description":12,"docKey":1329,"docRoot":1330,"docTitle":1331,"extension":1332,"isWikiDoc":213,"isWikiIndex":1333,"layout":1334,"meta":1335,"navigation":213,"path":1336,"seo":1337,"stem":1338,"wikiDepth":34,"__hash__":1339},"content/wiki/2024-03-30-Linux教程/ch7-QEMU-KVM虚拟机.md","QEMU-KVM虚拟机",{"type":7,"value":8,"toc":1317},"minimark",[9,13,17,20,86,89,123,130,153,160,164,167,186,201,204,260,263,293,296,299,324,331,335,342,384,398,404,407,410,417,424,439,442,730,733,751,754,757,781,784,793,796,799,802,811,818,821,826,829,834,839,850,874,881,886,889,929,932,957,960,970,1059,1062,1074,1084,1089,1092,1101,1115,1120,1136,1141,1184,1192,1195,1218,1221,1243,1246,1266,1273,1278,1281,1313],[10,11,12],"p",{},"QEMU-KVM是一个高性能的虚拟机,以下是以安装RockyLinux9为例.",[14,15,16],"h3",{"id":16},"安装必备软件",[10,18,19],{},"确保主机已经安装了 QEMU、KVM 和相关工具。以基于 Debian/Ubuntu 的系统为例，执行以下命令：",[21,22,27],"pre",{"className":23,"code":24,"language":25,"meta":26,"style":26},"language-bash shiki shiki-themes github-light github-dark","sudo apt update\nsudo apt install qemu-kvm qemu-img virt-manager virt-install virt-viewer libvirt libvirt-daemon libvirt-daemon-qemu bridge-utils virglrenderer\n","bash","",[28,29,30,46],"code",{"__ignoreMap":26},[31,32,35,39,43],"span",{"class":33,"line":34},"line",1,[31,36,38],{"class":37},"sScJk","sudo",[31,40,42],{"class":41},"sZZnC"," apt",[31,44,45],{"class":41}," update\n",[31,47,49,51,53,56,59,62,65,68,71,74,77,80,83],{"class":33,"line":48},2,[31,50,38],{"class":37},[31,52,42],{"class":41},[31,54,55],{"class":41}," install",[31,57,58],{"class":41}," qemu-kvm",[31,60,61],{"class":41}," qemu-img",[31,63,64],{"class":41}," virt-manager",[31,66,67],{"class":41}," virt-install",[31,69,70],{"class":41}," virt-viewer",[31,72,73],{"class":41}," libvirt",[31,75,76],{"class":41}," libvirt-daemon",[31,78,79],{"class":41}," libvirt-daemon-qemu",[31,81,82],{"class":41}," bridge-utils",[31,84,85],{"class":41}," virglrenderer\n",[10,87,88],{},"对于基于 Fedora/CentOS/Rocky Linux 的系统，命令可能是：",[21,90,92],{"className":23,"code":91,"language":25,"meta":26,"style":26},"sudo dnf install qemu-kvm qemu-img virt-manager virt-install virt-viewer libvirt libvirt-daemon libvirt-daemon-qemu bridge-utils virglrenderer\n",[28,93,94],{"__ignoreMap":26},[31,95,96,98,101,103,105,107,109,111,113,115,117,119,121],{"class":33,"line":34},[31,97,38],{"class":37},[31,99,100],{"class":41}," dnf",[31,102,55],{"class":41},[31,104,58],{"class":41},[31,106,61],{"class":41},[31,108,64],{"class":41},[31,110,67],{"class":41},[31,112,70],{"class":41},[31,114,73],{"class":41},[31,116,76],{"class":41},[31,118,79],{"class":41},[31,120,82],{"class":41},[31,122,85],{"class":41},[10,124,125,126,129],{},"安装完成后，确保当前用户在 ",[28,127,128],{},"kvm"," 组中（否则可能没有权限使用 KVM 加速）：",[21,131,133],{"className":23,"code":132,"language":25,"meta":26,"style":26},"sudo usermod -aG kvm $USER\n",[28,134,135],{"__ignoreMap":26},[31,136,137,139,142,146,149],{"class":33,"line":34},[31,138,38],{"class":37},[31,140,141],{"class":41}," usermod",[31,143,145],{"class":144},"sj4cs"," -aG",[31,147,148],{"class":41}," kvm",[31,150,152],{"class":151},"sVt8B"," $USER\n",[10,154,155,159],{},[156,157,158],"strong",{},"注意："," 修改组后可能需要注销重新登录才能生效。",[14,161,163],{"id":162},"打开kvm硬件加速","打开KVM硬件加速",[10,165,166],{},"运行以下命令检查 KVM 是否启用：",[21,168,170],{"className":23,"code":169,"language":25,"meta":26,"style":26},"egrep -c '(vmx|svm)' /proc/cpuinfo\n",[28,171,172],{"__ignoreMap":26},[31,173,174,177,180,183],{"class":33,"line":34},[31,175,176],{"class":37},"egrep",[31,178,179],{"class":144}," -c",[31,181,182],{"class":41}," '(vmx|svm)'",[31,184,185],{"class":41}," /proc/cpuinfo\n",[10,187,188,189,192,193,196,197,200],{},"如果输出 ",[28,190,191],{},"0","，说明 CPU 不支持 KVM 或未开启 VT-x（Intel）/ SVM（AMD），需要在 BIOS 里开启 ",[156,194,195],{},"Intel VT-x"," 或 ",[156,198,199],{},"AMD SVM"," 。",[10,202,203],{},"然后检查 KVM 模块是否加载：",[21,205,207],{"className":23,"code":206,"language":25,"meta":26,"style":26},"\n# 验证 KVM 加速可用\nlsmod | grep kvm\n\n# 验证当前用户有权限访问 /dev/kvm\nls -l /dev/kvm\n",[28,208,209,215,221,237,242,248],{"__ignoreMap":26},[31,210,211],{"class":33,"line":34},[31,212,214],{"emptyLinePlaceholder":213},true,"\n",[31,216,217],{"class":33,"line":48},[31,218,220],{"class":219},"sJ8bj","# 验证 KVM 加速可用\n",[31,222,224,227,231,234],{"class":33,"line":223},3,[31,225,226],{"class":37},"lsmod",[31,228,230],{"class":229},"szBVR"," |",[31,232,233],{"class":37}," grep",[31,235,236],{"class":41}," kvm\n",[31,238,240],{"class":33,"line":239},4,[31,241,214],{"emptyLinePlaceholder":213},[31,243,245],{"class":33,"line":244},5,[31,246,247],{"class":219},"# 验证当前用户有权限访问 /dev/kvm\n",[31,249,251,254,257],{"class":33,"line":250},6,[31,252,253],{"class":37},"ls",[31,255,256],{"class":144}," -l",[31,258,259],{"class":41}," /dev/kvm\n",[10,261,262],{},"如果没有输出，加载 KVM 模块：",[21,264,266],{"className":23,"code":265,"language":25,"meta":26,"style":26},"sudo modprobe kvm_intel  # Intel 处理器\nsudo modprobe kvm_amd    # AMD 处理器\n",[28,267,268,281],{"__ignoreMap":26},[31,269,270,272,275,278],{"class":33,"line":34},[31,271,38],{"class":37},[31,273,274],{"class":41}," modprobe",[31,276,277],{"class":41}," kvm_intel",[31,279,280],{"class":219},"  # Intel 处理器\n",[31,282,283,285,287,290],{"class":33,"line":48},[31,284,38],{"class":37},[31,286,274],{"class":41},[31,288,289],{"class":41}," kvm_amd",[31,291,292],{"class":219},"    # AMD 处理器\n",[14,294,295],{"id":295},"创建虚拟硬盘文件",[10,297,298],{},"你需要为虚拟机创建一个硬盘镜像文件。这里以 qcow2 格式、100GB 为例（你可以根据需要调整大小）。在终端中运行：",[21,300,302],{"className":23,"code":301,"language":25,"meta":26,"style":26},"qemu-img create -f qcow2 disk.qcow2 100G\n",[28,303,304],{"__ignoreMap":26},[31,305,306,309,312,315,318,321],{"class":33,"line":34},[31,307,308],{"class":37},"qemu-img",[31,310,311],{"class":41}," create",[31,313,314],{"class":144}," -f",[31,316,317],{"class":41}," qcow2",[31,319,320],{"class":41}," disk.qcow2",[31,322,323],{"class":41}," 100G\n",[10,325,326,327,330],{},"这将在当前目录下生成一个名为 ",[28,328,329],{},"disk.qcow2"," 的虚拟硬盘文件。",[14,332,334],{"id":333},"准备-ovmfuefi-固件文件","准备 OVMF（UEFI 固件）文件",[10,336,337,338,341],{},"安装 ",[28,339,340],{},"OVMF"," 包。例如，在 Ubuntu 上可通过以下命令安装：",[21,343,345],{"className":23,"code":344,"language":25,"meta":26,"style":26},"\n# 一般电脑都默认安装过了\nsudo apt install ovmf # Debian/Ubuntu\nsudo dnf install edk2-ovmf # RHEL/CentOS/Fedora\n",[28,346,347,351,356,370],{"__ignoreMap":26},[31,348,349],{"class":33,"line":34},[31,350,214],{"emptyLinePlaceholder":213},[31,352,353],{"class":33,"line":48},[31,354,355],{"class":219},"# 一般电脑都默认安装过了\n",[31,357,358,360,362,364,367],{"class":33,"line":223},[31,359,38],{"class":37},[31,361,42],{"class":41},[31,363,55],{"class":41},[31,365,366],{"class":41}," ovmf",[31,368,369],{"class":219}," # Debian/Ubuntu\n",[31,371,372,374,376,378,381],{"class":33,"line":239},[31,373,38],{"class":37},[31,375,100],{"class":41},[31,377,55],{"class":41},[31,379,380],{"class":41}," edk2-ovmf",[31,382,383],{"class":219}," # RHEL/CentOS/Fedora\n",[10,385,386,387,196,390,393,394,397],{},"安装后，查找文件路径，通常位于 ",[28,388,389],{},"/usr/share/OVMF/OVMF_CODE.fd",[28,391,392],{},"/usr/share/ovmf/OVMF.fd","。直接在命令中使用正确路径。(下方脚本中有例子,你只需要确保你的",[28,395,396],{},"/usr/share/OVMF/","下有这俩文件即可)",[10,399,400],{},[401,402],"img",{"alt":26,"src":403},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2024/03/30/image329.webp",[10,405,406],{},"也可以下载下面这个文件:",[10,408,409],{},"暂时无法在飞书文档外展示此内容",[411,412,413],"ol",{},[414,415,416],"li",{},"编写或调整 run.sh 脚本",[10,418,419,420,423],{},"将下面的内容写入你的 ",[28,421,422],{},"run.sh"," 文件（你可以使用文本编辑器）。",[21,425,427],{"className":23,"code":426,"language":25,"meta":26,"style":26},"sudo vim ./run.sh\n",[28,428,429],{"__ignoreMap":26},[31,430,431,433,436],{"class":33,"line":34},[31,432,38],{"class":37},[31,434,435],{"class":41}," vim",[31,437,438],{"class":41}," ./run.sh\n",[10,440,441],{},"下面的脚本示例使用 QEMU 启动虚拟机并加载 ISO 镜像：",[21,443,445],{"className":23,"code":444,"language":25,"meta":26,"style":26},"#!/bin/bash\n\nqemu-system-x86_64 \\\n    -machine q35,vmport=off,kernel_irqchip=on \\\n    -accel kvm \\\n    -cpu host,kvm=on,vmx=on,migratable=on,+invtsc \\\n    -smp 8,sockets=1,cores=4,threads=2 \\\n    -m 8G,slots=4,maxmem=32G \\\n    -device virtio-gpu-gl-pci,max_outputs=1 \\\n    -vga none \\\n    -display sdl,gl=on \\\n    -audiodev pa,id=pa1,server=unix:/run/user/1000/pulse/native \\\n    -device ich9-intel-hda \\\n    -device hda-micro,audiodev=pa1 \\\n    -device qemu-xhci,id=xhci \\\n    -device virtio-tablet-pci \\\n    -device usb-kbd,bus=xhci.0 \\\n    -bios OVMF-pure-efi64.fd \\\n    -boot d \\\n    -blockdev driver=qcow2,node-name=disk1,file.driver=file,file.cache.direct=on,file.aio=io_uring,file.filename=disk.qcow2 \\\n    -device virtio-blk-pci,drive=disk1 \\\n    -drive file=kubuntu-20.04.6-desktop-amd64.iso,media=cdrom,if=none,id=cdrom \\\n    -device usb-storage,drive=cdrom,removable=on \\\n    -nic user,model=virtio-net-pci,hostfwd=tcp::8022-:22 \\\n    -monitor stdio \\\n    -parallel none \\\n    -serial none \\\n    -msg timestamp=on\n\n",[28,446,447,452,456,464,474,483,493,507,518,532,543,554,565,575,585,595,605,615,626,637,648,658,669,679,690,701,711,721],{"__ignoreMap":26},[31,448,449],{"class":33,"line":34},[31,450,451],{"class":219},"#!/bin/bash\n",[31,453,454],{"class":33,"line":48},[31,455,214],{"emptyLinePlaceholder":213},[31,457,458,461],{"class":33,"line":223},[31,459,460],{"class":37},"qemu-system-x86_64",[31,462,463],{"class":144}," \\\n",[31,465,466,469,472],{"class":33,"line":239},[31,467,468],{"class":144},"    -machine",[31,470,471],{"class":41}," q35,vmport=off,kernel_irqchip=on",[31,473,463],{"class":144},[31,475,476,479,481],{"class":33,"line":244},[31,477,478],{"class":144},"    -accel",[31,480,148],{"class":41},[31,482,463],{"class":144},[31,484,485,488,491],{"class":33,"line":250},[31,486,487],{"class":144},"    -cpu",[31,489,490],{"class":41}," host,kvm=on,vmx=on,migratable=on,+invtsc",[31,492,463],{"class":144},[31,494,496,499,502,505],{"class":33,"line":495},7,[31,497,498],{"class":144},"    -smp",[31,500,501],{"class":41}," 8,sockets=1,cores=4,threads=",[31,503,504],{"class":144},"2",[31,506,463],{"class":144},[31,508,510,513,516],{"class":33,"line":509},8,[31,511,512],{"class":144},"    -m",[31,514,515],{"class":41}," 8G,slots=4,maxmem=32G",[31,517,463],{"class":144},[31,519,521,524,527,530],{"class":33,"line":520},9,[31,522,523],{"class":144},"    -device",[31,525,526],{"class":41}," virtio-gpu-gl-pci,max_outputs=",[31,528,529],{"class":144},"1",[31,531,463],{"class":144},[31,533,535,538,541],{"class":33,"line":534},10,[31,536,537],{"class":144},"    -vga",[31,539,540],{"class":41}," none",[31,542,463],{"class":144},[31,544,546,549,552],{"class":33,"line":545},11,[31,547,548],{"class":144},"    -display",[31,550,551],{"class":41}," sdl,gl=on",[31,553,463],{"class":144},[31,555,557,560,563],{"class":33,"line":556},12,[31,558,559],{"class":144},"    -audiodev",[31,561,562],{"class":41}," pa,id=pa1,server=unix:/run/user/1000/pulse/native",[31,564,463],{"class":144},[31,566,568,570,573],{"class":33,"line":567},13,[31,569,523],{"class":144},[31,571,572],{"class":41}," ich9-intel-hda",[31,574,463],{"class":144},[31,576,578,580,583],{"class":33,"line":577},14,[31,579,523],{"class":144},[31,581,582],{"class":41}," hda-micro,audiodev=pa1",[31,584,463],{"class":144},[31,586,588,590,593],{"class":33,"line":587},15,[31,589,523],{"class":144},[31,591,592],{"class":41}," qemu-xhci,id=xhci",[31,594,463],{"class":144},[31,596,598,600,603],{"class":33,"line":597},16,[31,599,523],{"class":144},[31,601,602],{"class":41}," virtio-tablet-pci",[31,604,463],{"class":144},[31,606,608,610,613],{"class":33,"line":607},17,[31,609,523],{"class":144},[31,611,612],{"class":41}," usb-kbd,bus=xhci.0",[31,614,463],{"class":144},[31,616,618,621,624],{"class":33,"line":617},18,[31,619,620],{"class":144},"    -bios",[31,622,623],{"class":41}," OVMF-pure-efi64.fd",[31,625,463],{"class":144},[31,627,629,632,635],{"class":33,"line":628},19,[31,630,631],{"class":144},"    -boot",[31,633,634],{"class":41}," d",[31,636,463],{"class":144},[31,638,640,643,646],{"class":33,"line":639},20,[31,641,642],{"class":144},"    -blockdev",[31,644,645],{"class":41}," driver=qcow2,node-name=disk1,file.driver=file,file.cache.direct=on,file.aio=io_uring,file.filename=disk.qcow2",[31,647,463],{"class":144},[31,649,651,653,656],{"class":33,"line":650},21,[31,652,523],{"class":144},[31,654,655],{"class":41}," virtio-blk-pci,drive=disk1",[31,657,463],{"class":144},[31,659,661,664,667],{"class":33,"line":660},22,[31,662,663],{"class":144},"    -drive",[31,665,666],{"class":41}," file=kubuntu-20.04.6-desktop-amd64.iso,media=cdrom,if=none,id=cdrom",[31,668,463],{"class":144},[31,670,672,674,677],{"class":33,"line":671},23,[31,673,523],{"class":144},[31,675,676],{"class":41}," usb-storage,drive=cdrom,removable=on",[31,678,463],{"class":144},[31,680,682,685,688],{"class":33,"line":681},24,[31,683,684],{"class":144},"    -nic",[31,686,687],{"class":41}," user,model=virtio-net-pci,hostfwd=tcp::8022-:22",[31,689,463],{"class":144},[31,691,693,696,699],{"class":33,"line":692},25,[31,694,695],{"class":144},"    -monitor",[31,697,698],{"class":41}," stdio",[31,700,463],{"class":144},[31,702,704,707,709],{"class":33,"line":703},26,[31,705,706],{"class":144},"    -parallel",[31,708,540],{"class":41},[31,710,463],{"class":144},[31,712,714,717,719],{"class":33,"line":713},27,[31,715,716],{"class":144},"    -serial",[31,718,540],{"class":41},[31,720,463],{"class":144},[31,722,724,727],{"class":33,"line":723},28,[31,725,726],{"class":144},"    -msg",[31,728,729],{"class":41}," timestamp=on\n",[10,731,732],{},"保存后给脚本执行权限：",[21,734,736],{"className":23,"code":735,"language":25,"meta":26,"style":26},"sudo chmod +x run.sh\n",[28,737,738],{"__ignoreMap":26},[31,739,740,742,745,748],{"class":33,"line":34},[31,741,38],{"class":37},[31,743,744],{"class":41}," chmod",[31,746,747],{"class":41}," +x",[31,749,750],{"class":41}," run.sh\n",[14,752,753],{"id":753},"启动虚拟机",[10,755,756],{},"确保当前目录下有以下文件：",[758,759,760,764,769,775],"ul",{},[414,761,762],{},[28,763,422],{},[414,765,766,768],{},[28,767,329],{},"（刚刚创建的虚拟硬盘）",[414,770,771,774],{},[28,772,773],{},"Rocky-9.4-x86_64-dvd.iso","（Rocky Linux 9 安装 ISO）",[414,776,777,780],{},[28,778,779],{},"OVMF-pure-efi64.fd","文件",[10,782,783],{},"然后在终端中运行脚本：",[21,785,787],{"className":23,"code":786,"language":25,"meta":26,"style":26},"./run.sh\n",[28,788,789],{"__ignoreMap":26},[31,790,791],{"class":33,"line":34},[31,792,786],{"class":37},[10,794,795],{},"此时，QEMU 应该会启动一个窗口，并加载 ISO 镜像进入安装界面。",[14,797,798],{"id":798},"安装系统",[10,800,801],{},"在虚拟机窗口中，你会看到 Linux 的安装界面。按照安装向导的步骤进行安装。安装完成后，你可能需要调整启动项，将硬盘作为启动介质（如果默认还是从 CD 启动）。",[10,803,804,807,808,810],{},[156,805,806],{},"建议："," 安装好系统后，关闭虚拟机，再修改 ",[28,809,422],{}," 将 ISO 镜像移除或改为可选启动设备，这样下次启动时就会直接从硬盘启动。",[10,812,813,814,817],{},"例如，将 ",[28,815,816],{},"-drive file=Rocky-9.5-x86_64-dvd.iso,media=cdrom"," 移除，或者更换为启动顺序参数。",[14,819,820],{"id":820},"其他操作",[822,823,825],"h4",{"id":824},"显卡直通谨慎不懂不要乱搞","显卡直通(谨慎,不懂不要乱搞)",[10,827,828],{},"此操作的意思是把显卡完全给虚拟机用,实体宿主机就没法用显卡了.",[411,830,831],{},[414,832,833],{},"主机和 IOMMU 配置",[10,835,836],{},[156,837,838],{},"(1) 启用 IOMMU（以 Intel 为例）",[10,840,841,842,845,846,849],{},"编辑 ",[28,843,844],{},"/etc/default/grub","，在 ",[28,847,848],{},"GRUB_CMDLINE_LINUX_DEFAULT"," 中加入：",[21,851,853],{"className":23,"code":852,"language":25,"meta":26,"style":26},"intel_iommu=on iommu=pt\n",[28,854,855],{"__ignoreMap":26},[31,856,857,860,863,866,869,871],{"class":33,"line":34},[31,858,859],{"class":151},"intel_iommu",[31,861,862],{"class":229},"=",[31,864,865],{"class":41},"on",[31,867,868],{"class":151}," iommu",[31,870,862],{"class":229},[31,872,873],{"class":41},"pt\n",[10,875,876,877,880],{},"对于 AMD 主机则设置 ",[28,878,879],{},"amd_iommu=on","。",[10,882,883],{},[401,884],{"alt":26,"src":885},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2024/03/30/image330.webp",[10,887,888],{},"更新 grub 后重启：",[21,890,892],{"className":23,"code":891,"language":25,"meta":26,"style":26},"sudo grub2-mkconfig -o /boot/grub2/grub.cfg   # CentOS/Fedora/Rocky 系列\n\n# 或者\nsudo update-grub   # Ubuntu/Debian 系统\n",[28,893,894,910,914,919],{"__ignoreMap":26},[31,895,896,898,901,904,907],{"class":33,"line":34},[31,897,38],{"class":37},[31,899,900],{"class":41}," grub2-mkconfig",[31,902,903],{"class":144}," -o",[31,905,906],{"class":41}," /boot/grub2/grub.cfg",[31,908,909],{"class":219},"   # CentOS/Fedora/Rocky 系列\n",[31,911,912],{"class":33,"line":48},[31,913,214],{"emptyLinePlaceholder":213},[31,915,916],{"class":33,"line":223},[31,917,918],{"class":219},"# 或者\n",[31,920,921,923,926],{"class":33,"line":239},[31,922,38],{"class":37},[31,924,925],{"class":41}," update-grub",[31,927,928],{"class":219},"   # Ubuntu/Debian 系统\n",[10,930,931],{},"可以在重启后用下面命令确认 IOMMU 是否启用：",[21,933,935],{"className":23,"code":934,"language":25,"meta":26,"style":26},"dmesg | grep -e DMAR -e IOMMU\n",[28,936,937],{"__ignoreMap":26},[31,938,939,942,944,946,949,952,954],{"class":33,"line":34},[31,940,941],{"class":37},"dmesg",[31,943,230],{"class":229},[31,945,233],{"class":37},[31,947,948],{"class":144}," -e",[31,950,951],{"class":41}," DMAR",[31,953,948],{"class":144},[31,955,956],{"class":41}," IOMMU\n",[10,958,959],{},"如果看到类似“DMAR: IOMMU enabled”之类的信息，就说明生效了。",[10,961,962,965,966,969],{},[156,963,964],{},"(2) 查找你的 NVIDIA 显卡设备 ID"," 使用 ",[28,967,968],{},"lspci -nn | grep NVIDIA"," 查找显卡，例如：",[21,971,973],{"className":23,"code":972,"language":25,"meta":26,"style":26},"tungchiahui@Dell-G15-5511:~/Downloads$ lspci -nn | grep NVIDIA \n01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GA106M [GeForce RTX 3060 Mobile / M\nax-Q] [10de:2560] (rev a1) \n01:00.1 Audio device [0403]: NVIDIA Corporation GA106 High Definition Audio Controller [10de:228\ne] (rev a1)\n",[28,974,975,996,1019,1033,1047],{"__ignoreMap":26},[31,976,977,980,983,986,988,990,993],{"class":33,"line":34},[31,978,979],{"class":37},"tungchiahui@Dell-G15-5511:~/Downloads$",[31,981,982],{"class":41}," lspci",[31,984,985],{"class":144}," -nn",[31,987,230],{"class":229},[31,989,233],{"class":37},[31,991,992],{"class":41}," NVIDIA",[31,994,995],{"class":151}," \n",[31,997,998,1001,1004,1007,1010,1013,1016],{"class":33,"line":48},[31,999,1000],{"class":37},"01:00.0",[31,1002,1003],{"class":41}," VGA",[31,1005,1006],{"class":41}," compatible",[31,1008,1009],{"class":41}," controller",[31,1011,1012],{"class":151}," [0300]: NVIDIA Corporation GA106M [GeForce RTX ",[31,1014,1015],{"class":144},"3060",[31,1017,1018],{"class":151}," Mobile / M\n",[31,1020,1021,1024,1027,1030],{"class":33,"line":223},[31,1022,1023],{"class":151},"ax-Q] [10de:2560] (",[31,1025,1026],{"class":37},"rev",[31,1028,1029],{"class":41}," a1",[31,1031,1032],{"class":151},") \n",[31,1034,1035,1038,1041,1044],{"class":33,"line":239},[31,1036,1037],{"class":37},"01:00.1",[31,1039,1040],{"class":41}," Audio",[31,1042,1043],{"class":41}," device",[31,1045,1046],{"class":151}," [0403]: NVIDIA Corporation GA106 High Definition Audio Controller [10de:228\n",[31,1048,1049,1052,1054,1056],{"class":33,"line":244},[31,1050,1051],{"class":151},"e] (",[31,1053,1026],{"class":37},[31,1055,1029],{"class":41},[31,1057,1058],{"class":151},")\n",[10,1060,1061],{},"记下上面的 PCI 地址和设备 ID。",[10,1063,1064,1067,1068,1070,1071],{},[156,1065,1066],{},"显卡"," PCI 地址：",[28,1069,1000],{}," 设备 ID：",[28,1072,1073],{},"10de:2560",[10,1075,1076,1067,1079,1070,1081],{},[156,1077,1078],{},"显卡音频",[28,1080,1037],{},[28,1082,1083],{},"10de:228e",[10,1085,1086],{},[156,1087,1088],{},"(3) 绑定设备到 vfio 驱动",[10,1090,1091],{},"另一种方式是创建一个 modprobe 配置文件，让 vfio-pci 在加载时绑定这些设备。",[411,1093,1094],{},[414,1095,1096,1097,1100],{},"创建文件（例如 ",[28,1098,1099],{},"/etc/modprobe.d/vfio.conf","）：",[21,1102,1104],{"className":23,"code":1103,"language":25,"meta":26,"style":26},"sudo vim /etc/modprobe.d/vfio.conf\n",[28,1105,1106],{"__ignoreMap":26},[31,1107,1108,1110,1112],{"class":33,"line":34},[31,1109,38],{"class":37},[31,1111,435],{"class":41},[31,1113,1114],{"class":41}," /etc/modprobe.d/vfio.conf\n",[411,1116,1117],{"start":48},[414,1118,1119],{},"在文件中写入：",[21,1121,1123],{"className":23,"code":1122,"language":25,"meta":26,"style":26},"options vfio-pci ids=10de:2560,10de:228e\n",[28,1124,1125],{"__ignoreMap":26},[31,1126,1127,1130,1133],{"class":33,"line":34},[31,1128,1129],{"class":37},"options",[31,1131,1132],{"class":41}," vfio-pci",[31,1134,1135],{"class":41}," ids=10de:2560,10de:228e\n",[411,1137,1138],{"start":223},[414,1139,1140],{},"保存文件后，更新 initramfs：",[21,1142,1144],{"className":23,"code":1143,"language":25,"meta":26,"style":26},"\n# debian系选这个\nsudo update-initramfs -u\n\n# 红帽系选这个\nsudo dracut --force\n",[28,1145,1146,1150,1155,1165,1169,1174],{"__ignoreMap":26},[31,1147,1148],{"class":33,"line":34},[31,1149,214],{"emptyLinePlaceholder":213},[31,1151,1152],{"class":33,"line":48},[31,1153,1154],{"class":219},"# debian系选这个\n",[31,1156,1157,1159,1162],{"class":33,"line":223},[31,1158,38],{"class":37},[31,1160,1161],{"class":41}," update-initramfs",[31,1163,1164],{"class":144}," -u\n",[31,1166,1167],{"class":33,"line":239},[31,1168,214],{"emptyLinePlaceholder":213},[31,1170,1171],{"class":33,"line":244},[31,1172,1173],{"class":219},"# 红帽系选这个\n",[31,1175,1176,1178,1181],{"class":33,"line":250},[31,1177,38],{"class":37},[31,1179,1180],{"class":41}," dracut",[31,1182,1183],{"class":144}," --force\n",[411,1185,1186,1189],{"start":239},[414,1187,1188],{},"重启系统。",[414,1190,1191],{},"检查设备绑定情况",[10,1193,1194],{},"重启后，你可以用下面命令检查设备是否已经被 vfio-pci 驱动接管：",[21,1196,1198],{"className":23,"code":1197,"language":25,"meta":26,"style":26},"lspci -nnk | grep -A3 \"10de:2560\"\n",[28,1199,1200],{"__ignoreMap":26},[31,1201,1202,1205,1208,1210,1212,1215],{"class":33,"line":34},[31,1203,1204],{"class":37},"lspci",[31,1206,1207],{"class":144}," -nnk",[31,1209,230],{"class":229},[31,1211,233],{"class":37},[31,1213,1214],{"class":144}," -A3",[31,1216,1217],{"class":41}," \"10de:2560\"\n",[10,1219,1220],{},"你应该能看到类似：",[21,1222,1226],{"className":1223,"code":1224,"language":1225,"meta":26,"style":26},"language-YAML shiki shiki-themes github-light github-dark","01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GA106M [GeForce RTX 3060 Mobile / Max-Q] [10de:2560]\n        Subsystem: ...\n        Kernel driver in use: vfio-pci\n","YAML",[28,1227,1228,1233,1238],{"__ignoreMap":26},[31,1229,1230],{"class":33,"line":34},[31,1231,1232],{},"01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GA106M [GeForce RTX 3060 Mobile / Max-Q] [10de:2560]\n",[31,1234,1235],{"class":33,"line":48},[31,1236,1237],{},"        Subsystem: ...\n",[31,1239,1240],{"class":33,"line":223},[31,1241,1242],{},"        Kernel driver in use: vfio-pci\n",[10,1244,1245],{},"同样用相似的命令检查音频设备（10de:228e）。",[21,1247,1249],{"className":23,"code":1248,"language":25,"meta":26,"style":26},"lspci -nnk | grep -A3 \"10de:228e\"\n",[28,1250,1251],{"__ignoreMap":26},[31,1252,1253,1255,1257,1259,1261,1263],{"class":33,"line":34},[31,1254,1204],{"class":37},[31,1256,1207],{"class":144},[31,1258,230],{"class":229},[31,1260,233],{"class":37},[31,1262,1214],{"class":144},[31,1264,1265],{"class":41}," \"10de:228e\"\n",[10,1267,1268,1269,1272],{},"如果看到 ",[28,1270,1271],{},"Kernel driver in use: vfio-pci","，说明绑定成功。",[10,1274,1275],{},[156,1276,1277],{},"(4) 启动选项",[10,1279,1280],{},"在run.sh里添加上下面两行",[21,1282,1284],{"className":23,"code":1283,"language":25,"meta":26,"style":26},"\n    # 直通 NVIDIA 显卡\n    -device vfio-pci,host=01:00.0,multifunction=on,x-vga=on \\\n    -device vfio-pci,host=01:00.1 \\\n",[28,1285,1286,1290,1295,1304],{"__ignoreMap":26},[31,1287,1288],{"class":33,"line":34},[31,1289,214],{"emptyLinePlaceholder":213},[31,1291,1292],{"class":33,"line":48},[31,1293,1294],{"class":219},"    # 直通 NVIDIA 显卡\n",[31,1296,1297,1299,1302],{"class":33,"line":223},[31,1298,523],{"class":37},[31,1300,1301],{"class":41}," vfio-pci,host=01:00.0,multifunction=on,x-vga=on",[31,1303,463],{"class":144},[31,1305,1306,1308,1311],{"class":33,"line":239},[31,1307,523],{"class":144},[31,1309,1310],{"class":41}," vfio-pci,host=01:00.1",[31,1312,463],{"class":144},[1314,1315,1316],"style",{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}",{"title":26,"searchDepth":48,"depth":48,"links":1318},[1319,1320,1321,1322,1323,1324,1325],{"id":16,"depth":223,"text":16},{"id":162,"depth":223,"text":163},{"id":295,"depth":223,"text":295},{"id":333,"depth":223,"text":334},{"id":753,"depth":223,"text":753},{"id":798,"depth":223,"text":798},{"id":820,"depth":223,"text":820},"7",7000000,"2024-03-30","2024-03-30-linux-jiao-cheng","/wiki/2024-03-30-linux-jiao-cheng","Linux教程","md",false,null,{},"/wiki/2024-03-30-linux-jiao-cheng/ch7-qemu-kvm-xu-ni-ji",{"title":5,"description":12},"wiki/2024-03-30-Linux教程/ch7-QEMU-KVM虚拟机","x_dMF5aBfYZEZ8PGR5v_ZL5GuOK1hWmNoSDbxMirkns",[1341,1346,1351,1357,1363,1369,1375,1376,1382,1387],{"path":1342,"stem":1343,"title":1344,"date":1328,"chapter":529,"chapterSort":1345,"docKey":1329,"docRoot":1330,"docTitle":1331,"isWikiDoc":213,"isWikiIndex":1333},"/wiki/2024-03-30-linux-jiao-cheng/ch1-fa-xing-ban-tui-jian","wiki/2024-03-30-Linux教程/ch1-发行版推荐","发行版推荐",1000000,{"path":1347,"stem":1348,"title":1349,"date":1328,"chapter":504,"chapterSort":1350,"docKey":1329,"docRoot":1330,"docTitle":1331,"isWikiDoc":213,"isWikiIndex":1333},"/wiki/2024-03-30-linux-jiao-cheng/ch2-linux-zhuang-ji-jiao-cheng","wiki/2024-03-30-Linux教程/ch2-Linux装机教程","Linux装机教程",2000000,{"path":1352,"stem":1353,"title":1354,"date":1328,"chapter":1355,"chapterSort":1356,"docKey":1329,"docRoot":1330,"docTitle":1331,"isWikiDoc":213,"isWikiIndex":1333},"/wiki/2024-03-30-linux-jiao-cheng/ch3-an-zhuang-bi-bei-pei-zhi","wiki/2024-03-30-Linux教程/ch3-安装必备配置","安装必备配置","3",3000000,{"path":1358,"stem":1359,"title":1360,"date":1328,"chapter":1361,"chapterSort":1362,"docKey":1329,"docRoot":1330,"docTitle":1331,"isWikiDoc":213,"isWikiIndex":1333},"/wiki/2024-03-30-linux-jiao-cheng/ch4-ming-ling-jiao-cheng-chang-qi-ji-lei","wiki/2024-03-30-Linux教程/ch4-命令教程(长期积累)","命令教程(长期积累)","4",4000000,{"path":1364,"stem":1365,"title":1366,"date":1328,"chapter":1367,"chapterSort":1368,"docKey":1329,"docRoot":1330,"docTitle":1331,"isWikiDoc":213,"isWikiIndex":1333},"/wiki/2024-03-30-linux-jiao-cheng/ch5-ge-zhong-huan-jing-pei-zhi","wiki/2024-03-30-Linux教程/ch5-各种环境配置","各种环境配置","5",5000000,{"path":1370,"stem":1371,"title":1372,"date":1328,"chapter":1373,"chapterSort":1374,"docKey":1329,"docRoot":1330,"docTitle":1331,"isWikiDoc":213,"isWikiIndex":1333},"/wiki/2024-03-30-linux-jiao-cheng/ch6-qi-ta-ke-xuan-pei-zhi","wiki/2024-03-30-Linux教程/ch6-其他可选配置","其他可选配置","6",6000000,{"path":1336,"stem":1338,"title":5,"date":1328,"chapter":1326,"chapterSort":1327,"docKey":1329,"docRoot":1330,"docTitle":1331,"isWikiDoc":213,"isWikiIndex":1333},{"path":1377,"stem":1378,"title":1379,"date":1328,"chapter":1380,"chapterSort":1381,"docKey":1329,"docRoot":1330,"docTitle":1331,"isWikiDoc":213,"isWikiIndex":1333},"/wiki/2024-03-30-linux-jiao-cheng/ch8-tuo-zhan-gong-neng","wiki/2024-03-30-Linux教程/ch8-拓展功能","拓展功能","8",8000000,{"path":1383,"stem":1384,"title":820,"date":1328,"chapter":1385,"chapterSort":1386,"docKey":1329,"docRoot":1330,"docTitle":1331,"isWikiDoc":213,"isWikiIndex":1333},"/wiki/2024-03-30-linux-jiao-cheng/ch9-qi-ta-cao-zuo","wiki/2024-03-30-Linux教程/ch9-其他操作","9",9000000,{"path":1330,"stem":1388,"title":1331,"date":1328,"chapter":1334,"chapterSort":1389,"docKey":1329,"docRoot":1330,"docTitle":1331,"isWikiDoc":213,"isWikiIndex":213},"wiki/2024-03-30-Linux教程/index",0,1778560328296]