เมื่อฉันพยายามเรียกใช้แอพ Android บนตัวจำลองฉันได้รับข้อผิดพลาดนี้:
ปฏิเสธการอนุญาต / dev / kvm
ฉันตรวจสอบสิทธิ์แล้วเพิ่มผู้ใช้ที่ฉันเข้าสู่ระบบด้วยกลุ่ม kvm เกิดอะไรขึ้น?
เมื่อฉันพยายามเรียกใช้แอพ Android บนตัวจำลองฉันได้รับข้อผิดพลาดนี้:
ปฏิเสธการอนุญาต / dev / kvm
ฉันตรวจสอบสิทธิ์แล้วเพิ่มผู้ใช้ที่ฉันเข้าสู่ระบบด้วยกลุ่ม kvm เกิดอะไรขึ้น?
คำตอบ:
ตามที่ระบุไว้ในความคิดเห็นที่เริ่มต้นด้วยUbuntu 18.04และลินุกซ์มิ้นท์ธาราsudo apt install qemu-kvm
คุณต้องแรก
เพื่อตรวจสอบความเป็นเจ้าของในการ/dev/kvm
ใช้งาน
ls -al /dev/kvm
ผู้ใช้เป็นกลุ่มroot
kvm
เพื่อตรวจสอบผู้ใช้ที่อยู่ในkvm
กลุ่มให้ใช้
grep kvm /etc/group
สิ่งนี้กลับมา
kvm:x:some_number:
ในระบบของฉัน: เนื่องจากไม่มีสิ่งใดที่ถูกต้องในรอบสุดท้าย:
จึงไม่มีผู้ใช้ในkvm
กลุ่ม
ในการเพิ่มผู้ใช้ของคุณไปยังกลุ่ม kvmคุณสามารถใช้
sudo adduser $USER kvm
grep kvm /etc/group
ซึ่งจะเพิ่มผู้ใช้ไปยังกลุ่มและตรวจสอบอีกครั้งกับ
ดังที่ @marcolz พูดถึงคำสั่งnewgrp kvm
ควรเปลี่ยนความเป็นสมาชิกกลุ่มแบบสดๆให้คุณ หากไม่ได้ผล @Knossos พูดถึงว่าคุณอาจต้องการออกจากระบบและกลับเข้ามาใหม่ (หรือรีสตาร์ท) เพื่อให้การอนุญาตมีผล หรือทำตามที่@nmirceac กล่าวถึงsu - $USER
อีกครั้งเข้าสู่ระบบในเปลือกเดียวกันผ่าน
root
root
เราควรเปลี่ยนกลุ่มหรือไม่
sudo adduser $USER kvm
sudo chown $USER /dev/kvm
นี่คือวิธีที่ฉันได้มาเพื่อทำงานในUbuntu 18.04
sudo apt install qemu-kvm
เพิ่มผู้ใช้ของคุณไปยังกลุ่ม kvm โดยใช้:
sudo adduser <Replace with username> kvm
หากยังคงแสดงสิทธิ์ที่ถูกปฏิเสธ :
sudo chown <Replace with username> /dev/kvm
ลองมัน.
/dev/kvm/
โฟลเดอร์ คุณควรเพิ่มผู้ใช้ในkvm
กลุ่มแทนในคำตอบนี้: stackoverflow.com/a/45749003/1213934
ลองสิ่งนี้มันใช้งานได้สำหรับฉัน:
sudo apt install qemu-kvm
sudo chown -R <username>:<username> /dev/kvm –
chown
- เพิ่มชื่อผู้ใช้ของคุณไปยังกลุ่มที่เหมาะสม - kvm หรือ libvirt ดูเอกสารสำหรับ [ help.ubuntu.com/community/KVM/Installation](Ubuntu)
–
คำต่อท้าย? นี่ทำให้เกิดข้อผิดพลาดอย่างแน่นอน
คุณได้ลองทำตามวิธีนี้แล้วก็ควรจะได้ผล:
sudo chown <username> /dev/kvm
sudo chmod o+x /dev/kvm
chmod o+x
ไม่มีประโยชน์อย่างสมบูรณ์ คำสั่งแรกทำให้มันทำงาน - แต่ดูความคิดเห็นอื่น ๆ ของฉันลงไปทำไมนี่เป็นความคิดที่ไม่ดี
/dev/kvm
ผิดเป็นปรับเปลี่ยนสิทธิที่จะเริ่มต้น ไม่ใช่ว่าจะไม่คงอยู่ระหว่างการรีบูตระบบ / การอัพเดท นอกจากนี้ยังมีผลบังคับใช้แก้ไขการตั้งค่าระบบ อยู่ห่าง ๆ.
นี่เป็นเพราะ/dev/kvm
ไม่สามารถเข้าถึงได้ ที่จะทำให้สามารถเข้าถึงได้จากสตูดิโอ Android เรียกใช้คำสั่งด้านล่าง
sudo chmod 777 -R /dev/kvm
มันจะขอรหัสผ่านของคุณ หลังจากนั้นให้รีสตาร์ท Android Studio
KVM
จำเป็นต้องใช้รัมอิมัลเตอร์ หากคุณยังไม่ได้ติดตั้งให้ติดตั้ง
sudo apt install qemu-kvm
-R
) เปลี่ยนการอนุญาตในไฟล์อุปกรณ์เดียว? นอกจากนี้สิทธิ์ดำเนินการจะไม่จำเป็น ในที่สุด udev อาจปรับเปลี่ยนการอนุญาตหลังจากการจำลองแต่ละครั้งเริ่มต้น
sudo chown $USER /dev/kvm
เพียงแค่เรียกใช้คำสั่งเดียวที่ทำงานกับฉันที่นี่ในเดือนกันยายน 2019 ที่ทำงานอยู่:
คำอธิบาย: Ubuntu 18.04.3
LTS ที่วางจำหน่าย: 18.04
สมญานาม: ไบโอนิค
/dev/kvm
ระหว่างรันไทม์
ฉันใช้ Ubuntu 18.04 ฉันกำลังเผชิญกับปัญหาเดียวกัน ฉันรันคำสั่งส่วนนี้ในเทอร์มินัลและแก้ไขปัญหาได้แล้ว
sudo chown $USER /dev/kvm
คำสั่งดังกล่าวสำหรับผู้ใช้ทั้งหมดที่มีอยู่ในระบบของคุณ
หากคุณต้องการให้สิทธิ์การเข้าถึงแก่ผู้ใช้ที่ระบุเท่านั้นให้รันคำสั่งนี้
sudo chown UserNameHere /dev/kvm
นี่เป็นคำตอบสั้น ๆ ของGerd
sudo groupadd -r kvm
sudo gedit /lib/udev/rules.d/60-qemu-system-common.rules
เพิ่มบรรทัดต่อไปนี้ลงในไฟล์ที่เปิดและบันทึก
KERNEL == "kvm", GROUP = "kvm", MODE = "0660"
ในที่สุดก็วิ่ง:
sudo usermod -a -G kvm <your_username>
รีบูทพีซีของคุณแล้วเสร็จ!
/lib/udev/rules.d
ไม่เคยแก้ไขโดยตรงภายใต้การกำหนดค่า udev udev มีกลไกการซ้อนทับที่วางไว้ในการตั้งค่ามีความสำคัญมากกว่าภายใต้พร้อมใช้งานอย่างใดอย่างหนึ่ง/etc/udev/rules.d
/lib/udev/rules.d
ฉันตอบโต้ปัญหาเดียวกันและเพื่อแก้ไขปัญหานี้เพียงพิมพ์คำสั่งต่อไปนี้ในเทอร์มินัลสำหรับไคลเอ็นต์ Linux
sudo apt-get install qemu-kvm
// type your password
sudo chmod 777 -R /dev/kvm
และหลังจากนั้นลองใช้โปรแกรมจำลองการทำงานมันจะทำงาน
ไม่จำเป็นต้องติดตั้งqemu-kvm
(และการอ้างอิงทั้งหมด) หากคุณต้องการเรียกใช้ Android Studio Emulator
สิ่งเดียวที่คุณต้องทำคือให้สิทธิ์ผู้ใช้ในการเข้าถึง (เช่นสิ่งที่คุณลงชื่อเข้าใช้ด้วย) /dev/kvm
-device
ทำในสามขั้นตอนง่ายๆ
ครั้งแรก:สร้างkvm
-Group
groupadd -r kvm
ตัวเลือก-r
จะสร้างกลุ่มระบบเช่นมี GID <= 999 (ดู/etc/login.defs
=>)SYS_GID_MAX
)
/dev/kvm
สิทธิ์ในการเปลี่ยนแปลง สิ่งนี้สามารถทำได้โดยเป็นส่วนหนึ่งของ - การqemu-kvm
ติดตั้งเนื่องจากหนึ่งในการพึ่งพากำลังติดตั้งqemu-system-common
(ในระบบ Ubuntu ปัจจุบันชื่อแพคเกจอาจแตกต่างกันไป) ซึ่งจะติดตั้งไฟล์/lib/udev/rules.d/60-qemu-system-common.rules
ที่มีสิ่งต่อไปนี้:
KERNEL=="kvm", GROUP="kvm", MODE="0660"
ดังนั้นหากคุณเพิ่งสร้างไฟล์/etc/udev/rules.d/60-qemu-permissions.rules
ที่มีบรรทัดข้างต้นคุณก็ทำขั้นตอนแรกเสร็จแล้ว
เพิ่มชื่อผู้ใช้ของคุณไปยังกลุ่มโดยดำเนินการ
usermod -a -G kvm <your_username>
- -a
สิ่งสำคัญคือการเพิ่มผู้ใช้ของคุณในกลุ่ม kvm หากไม่มีสิ่งนั้นคุณจะเขียนทับการตั้งค่ากลุ่มเพื่อให้ผู้ใช้เป็นของ "kvm" เท่านั้น ...
แค่นั้นแหละ.
สำหรับการตั้งค่ากฎ udev และการตั้งค่ากลุ่มใหม่จะมีผลง่ายที่สุดในการรีบูตและลงชื่อเข้าใช้อีกครั้ง
คุณยังสามารถดำเนินการ
udevadm control --reload-rules && udevadm trigger
สำหรับการโหลดกฎใหม่ แต่คุณยังต้องออกจากระบบและลงชื่อเข้าใช้อีกครั้งโดยคำนึงถึงกลุ่มใหม่
ฉันใช้ linux debian และฉันก็หันไปทางเดียวกัน ในAVDของฉันแสดงข้อความ "/ dev / kvm สิทธิ์ปฏิเสธ" และฉันพยายามหาวิธีแก้ปัญหาจากนั้นสิ่งที่ฉันทำเพื่อแก้มันคือในประเภท terminal นี้:
sudo chmod -R 777 /dev/kvm
มันจะให้สิทธิ์การเข้าถึงสำหรับโฟลเดอร์ / dev / kvm จากนั้นตรวจสอบอีกครั้งในAVDของคุณข้อผิดพลาดจะหายไปหวังว่ามันจะช่วย
sudo setfacl -m u:$USER:rwx /dev/kvm
ทำงานให้ฉัน
chown
ตัวอย่างทั้งหมดที่นี่ แต่ฉันจะละเว้นx
จากการอนุญาต
เพียงแค่การปรับปรุงเล็กน้อยในคำตอบของ Jerrinในการแก้ไขข้อผิดพลาดนี้กับ Ubuntu 18.04 โดยใช้$USER
ตัวแปรที่มีอยู่ใน bash terminal ดังนั้นคุณสามารถใช้คำสั่งต่อไปนี้สองคำสั่ง:
sudo apt install qemu-kvm
เพิ่มผู้ใช้ปัจจุบันไปยังกลุ่ม kvm
sudo adduser $USER kvm
อีกอย่างถ้าคุณยังมีปัญหาอยู่ปัญหาอีกอย่างหนึ่งสำหรับฉันคือวิธีที่ฉันติดตั้ง Ubuntu ฉันทำผิดพลาดในการตรวจสอบกล่องในระหว่างการติดตั้งสำหรับการติดตั้งซอฟต์แวร์ของบุคคลที่สามซึ่งเล่นได้ไม่ดีกับการ์ดกราฟิก nvidia ของฉันสำหรับการพัฒนา ดังนั้นผมจึงติดตั้งอูบุนตูกับซอฟต์แวร์ของบุคคลที่สามนี้ไม่ถูกตรวจสอบ
จากนั้นหลังจากการติดตั้งให้เปิดซอฟต์แวร์และอัปเดตแล้วไปที่แท็บไดรเวอร์เพิ่มเติม เลือกไดรเวอร์ที่เป็นกรรมสิทธิ์ล่าสุดที่ได้รับการทดสอบและใช้การเปลี่ยนแปลง ควรรีสตาร์ทเครื่องเพื่อให้การเปลี่ยนแปลงมีผล
สิ่งนี้ได้ผลสำหรับฉันบน Linux (x18) ☑หวังว่ามันจะใช้ได้ผลสำหรับคุณเช่นกัน
sudo chown hp /dev/kvm
ภายใต้ Ubuntu สิทธิ์/dev/kvm
มักจะมีลักษณะเช่นนี้:
$ ls -l /dev/kvm
crw-rw---- 1 root kvm 10, 232 May 24 09:54 /dev/kvm
ผู้ใช้ที่รัน Android emulator (เช่นผู้ใช้ของคุณ) จำเป็นต้องเข้าถึงอุปกรณ์นี้
ดังนั้นโดยทั่วไปมีวิธีการเข้าถึง 2 วิธี:
ตรวจสอบว่าผู้ใช้ของคุณเป็นส่วนหนึ่งของกลุ่ม kvm หรือไม่เช่น:
$ id
uid=1000(juser) gid=1000(juser) groups=1000(gms),10(wheel)
ถ้ามันไม่ได้เพิ่มไปกว่าด้วยเช่น:
$ sudo usermod --append --groups kvm juser
หลังจากการเปลี่ยนแปลงนั้นคุณต้องออกจากระบบและลงชื่อเข้าใช้อีกครั้งเพื่อให้การเปลี่ยนแปลงกลุ่มมีผล (ตรวจสอบอีกครั้งด้วย id
)
หรือคุณสามารถเพิ่มสิทธิ์ของ /dev/kvm
อุปกรณ์ได้
ตัวอย่าง:
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' \
| sudo tee /etc/udev/rules.d/99-kvm4all.rules
sudo udevadm control --reload-rules
sudo udevadm trigger --name-match=kvm
FWIW นี่เป็นค่าเริ่มต้นสำหรับการแจกแจงอื่น ๆ เช่น Fedora และ CentOS
ls
ตรวจสอบประสิทธิภาพของคำสั่งดังกล่าวกับผู้อื่น คุณควรเห็นผลลัพธ์ที่คล้ายกันด้วย:
$ ls -l /dev/kvm
crw-rw-rw-. 1 root kvm 10, 232 2020-05-16 09:19 /dev/kvm
ประโยชน์ใหญ่: คุณไม่จำเป็นต้องออกจากระบบและลงชื่อเข้าใช้อีกครั้งเพื่อให้การเปลี่ยนแปลงมีผล
chmod
และchown
โดยตรงบน/dev/kvm
- 1) การเปลี่ยนแปลงเหล่านี้ไม่คงอยู่ในการรีบูตและ 2) เนื่องจาก/dev/kvm
สิทธิ์ถูกควบคุมโดย udev daemon มันสามารถ 'แก้ไข' การอนุญาตได้ตลอดเวลาเช่นหลังจากแต่ละอีมูเลเตอร์ทำงาน/dev/kvm
- อีมูเลเตอร์ของคุณต้องการสิทธิ์ในการอ่านและเขียน/dev/kvm
- ฉันไม่รู้ว่าเกิดอะไรขึ้นกับมัน - ดูเหมือนว่าเป็นลัทธิคาร์โก้/dev/kvm
อุปกรณ์เปิด Terminal และบันทึกในฐานะผู้ดูแล
sudo su
ไปที่โฟลเดอร์ dev
cd /dev/
เปลี่ยนโหมด kvm
chmod 777 -R kvm
cd /dev
แทนที่จะเป็น sudo
chmod
ด้วย-R
? การเปลี่ยนการอนุญาตซ้ำ ๆ ในไฟล์อุปกรณ์เดียว/dev/kvm
นั้นไม่ได้มีประโยชน์มากนัก นอกจากนี้สิทธิ์การใช้งานจะไม่จำเป็นบนอุปกรณ์นั้น ในที่สุด udev อาจปรับ/dev/kvm
สิทธิ์หลังจากการเรียกใช้แต่ละครั้ง ดังนั้นวิธีนี้จึงไม่มีประสิทธิภาพมากนัก
ฉันอยู่ในสถานการณ์ที่คล้ายคลึงกันโดยมีข้อผิดพลาดเกี่ยวกับการอนุญาตบน / dev / kvm ฉันได้ทำการติดตั้งที่จำเป็น แต่ไม่ได้เพิ่มผู้ใช้ในกลุ่ม kvm สิ่งที่ฉันต้องทำคือ
sudo adduser <Replace with username> kvm
และแน่นอนอย่าลืมรีสตาร์ทอินสแตนซ์ Ubuntu ของคุณ
ในที่สุดสิ่งที่แก้ไขให้ฉันใน Ubuntu 18.04 คือ:
sudo apt install qemu-kvm
sudo adduser $USER kvm
sudo chown $USER /dev/kvm
ฉันได้รับข้อผิดพลาดนี้หลังจากอัปเดต Ubuntu เป็น 18.04.1 ฉันเพิ่งดาวน์โหลดอิมเมจระบบใหม่สำหรับอีมูเลเตอร์หรือคุณสามารถบอกได้ว่าดาวน์โหลดอีมูเลเตอร์ใหม่และใช้งานได้สำหรับฉัน
/dev/kvm
-permissions
พิมพ์ใน terminal:
sudo apt install qemu-kvm -y
sudo chown $USER /dev/kvm
แม้ว่า KVM จะเป็นโมดูลที่ติดตั้งไว้ในเคอร์เนล Linux แต่ก็ไม่ได้หมายความว่าแพ็คเกจที่จำเป็นทั้งหมดจะรวมอยู่ในการติดตั้ง Ubuntu / Linux ของคุณตามค่าเริ่มต้น คุณจะต้องเริ่มต้นใช้งานสักเล็กน้อยและสามารถติดตั้งได้ด้วยคำสั่งนี้ในเทอร์มินัล:
& sudo apt install qemu-kvm libvirt-clients libvirt-daemon-system bridge-utils virt-manager
กำหนดค่าบริดจ์เครือข่าย
เพื่อให้เครื่องเสมือนของคุณเข้าถึงอินเทอร์เฟซเครือข่ายของคุณและได้รับการกำหนดที่อยู่ IP ของตนเองเราจำเป็นต้องกำหนดค่าเครือข่ายบริดจ์ในระบบของเรา
ก่อนอื่นให้รันคำสั่ง Linux ต่อไปนี้เพื่อค้นหาว่าชื่อเครือข่ายของคุณได้รับมอบหมาย การรู้สิ่งนี้จะทำให้เราสามารถกำหนดค่าเพิ่มเติมได้ในภายหลัง
$ ip a
ในกรณีของฉันอินเทอร์เฟซเครือข่ายเรียกว่า enp2s0
ในกรณีของฉันเชื่อมต่อเครือข่ายที่เรียกว่าคุณจะมีชื่อคล้ายกันมาก
เพื่อบอก Ubuntu ว่าเราต้องการเชื่อมต่อกับบริดจ์เราจะต้องแก้ไขไฟล์กำหนดค่าอินเทอร์เฟซเครือข่าย การทำเช่นนี้จะไม่ส่งผลเสียต่อการเชื่อมต่อของคุณเลย มันจะอนุญาตให้มีการแบ่งปันการเชื่อมต่อกับ VMs
ใช้code
(Visual Studio Code) หรือโปรแกรมแก้ไขข้อความที่คุณชื่นชอบเพื่อเปิดไฟล์ต่อไปนี้:
$ code /etc/network/interfaces
เมื่อคุณเปิดไฟล์นี้ครั้งแรกมันอาจจะว่างเปล่าหรือมีเพียงไม่กี่บรรทัด บริดจ์อินเตอร์เฟสของคุณถูกเรียกใช้br0
ดังนั้นให้เพิ่มบรรทัดต่อไปนี้เพื่อให้อินเตอร์เฟสปรากฏตามค่าเริ่มต้น:
auto br0
ด้านล่างบรรทัดนี้เพิ่มบรรทัดต่อไปนี้สำหรับอินเทอร์เฟซเครือข่ายปัจจุบันของคุณ (ชื่อที่คุณกำหนดไว้ก่อนหน้านี้)
iface enp2s0 inet manual
ถัดไปคุณสามารถเพิ่มข้อมูลบริดจ์ บรรทัดเหล่านี้บอก Ubuntu ว่าบริดจ์ของคุณจะใช้ DHCP สำหรับการกำหนดที่อยู่ IP อัตโนมัติและบริดจ์ของคุณจะจัดการอินเทอร์เฟซปัจจุบันของคุณ
iface br0 inet dhcp
bridge_ports enp2s0
นี่คือวิธีที่ไฟล์ของคุณควรมีลักษณะเมื่อการเปลี่ยนแปลงทั้งหมดถูกนำไปใช้ (ถ้าคุณมีสองบรรทัดที่มีอยู่แล้วมันก็ดีที่จะมีมันด้วย):
บันทึกการเปลี่ยนแปลงของคุณและออกจากไฟล์
เพิ่มผู้ใช้ของคุณในกลุ่ม
ในการจัดการเครื่องเสมือนของคุณโดยไม่มีสิทธิ์รูทผู้ใช้ของคุณจะต้องอยู่ในกลุ่มผู้ใช้สองกลุ่ม รันคำสั่งต่อไปนี้เพื่อเพิ่มผู้ใช้ของคุณไปยังกลุ่มที่เหมาะสม (แทนที่ user1 ด้วยชื่อผู้ใช้ของคุณ):
$ sudo adduser user1 libvirt
$ sudo adduser user1 libvirt-qemu
$ sudo adduser user1 kvm
เมื่อเสร็จแล้วคุณควรเริ่มระบบของคุณใหม่เพื่อให้แน่ใจว่าการเปลี่ยนแปลงทั้งหมดที่ทำกับผู้ใช้และการกำหนดค่าเครือข่ายของคุณมีโอกาสที่จะมีผล
libvirt
และไม่จำเป็นต้องกำหนดค่าอินเทอร์เฟซ ...
ในการสร้างอุปกรณ์เสมือนใน Linux - ฉันต้องทำตามสามคำสั่งและช่วยฉันหลีกเลี่ยงปัญหาในการสร้างอุปกรณ์ avd - กระบวนการนี้ -
sudo apt install qemu-kvm
sudo adduser $USER kvm
sudo chown $USER /dev/kvm
ดังนั้นตอนนี้คุณก็ไปได้ดีเริ่ม android studio และเริ่มสร้าง application ด้วย emulator
ให้สิทธิ์ที่เหมาะสมกับคำสั่งนี้
sudo chmod 777 -R /dev/kvm
การรันคำสั่งด้านล่างใน Ubuntu 18.04 ใช้งานได้สำหรับฉัน sudo chown -R / dev / kvm
/dev/kvm
ไฟล์-R
ไม่มีผล --- ข้อสาม: chown
ต้องการnew owner
อาร์กิวเมนต์ --- ข้อที่สี่: หลังจากรีบูตเครื่องคุณต้องทำสิ่งนี้ซ้ำแล้วซ้ำอีก
หากคุณเปิด ide ของคุณด้วย sudo คุณจะไม่ได้มีปัญหานี้
qemu-kvm
และเพิ่มผู้ใช้ของฉันในกลุ่มkvm
มันไม่ทำงาน แต่มันทำหลังจากรีสตาร์ทคอมพิวเตอร์ (Ubuntu 18.04)