بعد از نصب یکی از آپدیتهای VirtualBox به مشکلی برخوردم که مدتها درگیرش بودم تا اخیرا وقت گذاشتم و ریشه مشکل را پیدا و حل کردم.
گفتم راهحل را اینجا بنویسم شاید بعدا هم برای یادآوری خودم مفید باشه و هم برای شاید به کسی کمک بشه.
من قبلتر برای تست رفته بودم و phpvirtualbox نصب کرده بودم ولی تنظیمهاش توی /etc/defaults/virtualbox/ مونده بود. همین باعث شده بود که root نصب تغییر کنه و ابزارهای شناسایی درگاه USB به جای نادرستی اشاره کنند.
این ابزار به صورت پیشفرض توی /usr/lib/virtualbox/ قرار دارند و فراخوانیشون با استفاده از udev و فایلهای تنظیمی است که در مسیر /etc/udev/rules.d/60-vboxdrv.rules/ قرارداره فراخوانی میشه.
این اولین نکته بود. حتما مطمئن بشید که مسیر ابزارها که در این فایل استفاده شده درست باشه و فایلها موجود باشند. به دلیلی که نمیدونم چیه اگه مسیر استاندارد نباشه این ابزارها نه در مسیر جدید و نه در مسیر استاندارد ایجاد نمیشوند.
فایل تنظیم درست udev برای virtualbox هم به صورت زیر است:
KERNEL=="vboxdrv", NAME="vboxdrv", OWNER="root", GROUP="root", MODE="0600" KERNEL=="vboxdrvu", NAME="vboxdrvu", OWNER="root", GROUP="root", MODE="0666" KERNEL=="vboxnetctl", NAME="vboxnetctl", OWNER="root", GROUP="root", MODE="0600" SUBSYSTEM=="usb_device", ACTION=="add", RUN+="/usr/lib/virtualbox/VBoxCreateUSBNode.sh $major $minor $attr{bDeviceClass}" SUBSYSTEM=="usb", ACTION=="add", ENV{DEVTYPE}=="usb_device", RUN+="/usr/lib/virtualbox/VBoxCreateUSBNode.sh $major $minor $attr{bDeviceClass}" SUBSYSTEM=="usb_device", ACTION=="remove", RUN+="/usr/lib/virtualbox/VBoxCreateUSBNode.sh --remove $major $minor" SUBSYSTEM=="usb", ACTION=="remove", ENV{DEVTYPE}=="usb_device", RUN+="/usr/lib/virtualbox/VBoxCreateUSBNode.sh --remove $major $minor"
اگه این فایل را پاک کنید و Virtual Box را مجدد نصب کنید این فایل ساخته میشه. (پیشنهاد من اینه که اول کامل پاک کنید و بعد مجدد نصب کنید)
البته فراموش نشه قبل از هر کاری کاربر شما به گروه vboxusers اضافه شده باشه. بدون اضافه شدن شما به این گروه امکان استفاده از usb در ماشینهای مجازی را ندارید! همینطور Oracle VM VirtualBox Extension Pack را هم حتما نصب کنید 🙂