انجمنهای فارسی اوبونتو
تازه کار => انجمن تازهکاران => نویسنده: ابو مصعب در 21 اسفند 1400، 01:32 بظ
-
سلام من ویرژوال باکس نصب کردم اما موقع ران کردم ویچوال ماشین یه همچین اروری میده
فایلی رو که میگه هم میخوام اجرا کنم میگه همچین فایلی موجود نیست
Kernel driver not installed (rc=-1908)
The VirtualBox Linux kernel driver is either not loaded or not set up correctly. Please try setting it up again by executing
'/sbin/vboxconfig'
as root.
If your system has EFI Secure Boot enabled you may also need to sign the kernel modules (vboxdrv, vboxnetflt, vboxnetadp, vboxpci) before you can load them. Please see your Linux system's documentation for more information.
where: suplibOsInit what: 3 VERR_VM_DRIVER_NOT_INSTALLED (-1908) - The support driver is not installed. On linux, open returned ENOENT.
-
(پیام پاک کردم، مشکل اشتباه فهمیده بودم)
-
دستور vboxconfig رو با دسترسی روت اجرا کنید و ببینید چی میگه. شاید اون دستور توی /sbin/ نیست و به همین خاطر نمیتونید مثل پایین اجراش کنید:
sudo /sbin/vboxconfig
secure boot فعاله؟ اگه نمیدونید، خروجی این دستور رو بررسی کنید. اگه عدد آخر 1 بود، secure boot فعاله، اگه 0 بود، غیرفعال.
od -A n -t u1 /sys/firmware/efi/efivars/SecureBoot-*
همینطور بررسی کنید که کرنل secure boot تشخیص داده یا نه.
sudo dmesg | grep -i 'secure'
-
دستور vboxconfig رو با دسترسی روت اجرا کنید و ببینید چی میگه. شاید اون دستور توی /sbin/ نیست و به همین خاطر نمیتونید مثل پایین اجراش کنید:
sudo /sbin/vboxconfig
secure boot فعاله؟ اگه نمیدونید، خروجی این دستور رو بررسی کنید. اگه عدد آخر 1 بود، secure boot فعاله، اگه 0 بود، غیرفعال.
od -A n -t u1 /sys/firmware/efi/efivars/SecureBoot-*
همینطور بررسی کنید که کرنل secure boot تشخیص داده یا نه.
sudo dmesg | grep -i 'secure'
به ترتیب :
➜ ~ sudo /sbin/vboxconfig
[sudo] password for mmj-sys:
sudo: /sbin/vboxconfig: command not found
➜ ~ od -A n -t u1 /sys/firmware/efi/efivars/SecureBoot-*
zsh: no matches found: /sys/firmware/efi/efivars/SecureBoot-*
➜ ~
➜ ~ sudo dmesg | grep -i 'secure'
[sudo] password for mmj-sys:
➜ ~
بعدشم مگه بایوس سکیور بوت داره ؟ من هرچی گشتم پیدا نکردم
-
به ترتیب :
➜ ~ sudo /sbin/vboxconfig
[sudo] password for mmj-sys:
sudo: /sbin/vboxconfig: command not found
گفتم ممکنه vboxconfig توی /sbin/ نباشه و به همین دلیل دستور بالا کار نمیده. نگفتم که اون رو دوباره بزنید. منظورم این بوده که این دستور رو بزنید.
sudo vboxconfig
خروجی این دستور رو هم قرار بدید.
command -v vboxconfig
➜ ~ od -A n -t u1 /sys/firmware/efi/efivars/SecureBoot-*
zsh: no matches found: /sys/firmware/efi/efivars/SecureBoot-*
➜ ~
➜ ~ sudo dmesg | grep -i 'secure'
[sudo] password for mmj-sys:
➜ ~
بعدشم مگه بایوس سکیور بوت داره ؟ من هرچی گشتم پیدا نکردم
فکر کردم کامپیوتر شما توی حالت uefi بوت میشه و secure boot فعاله. ولی از خروجی دستوراتی که گذاشتید، به نظر میاد کامپیوتر شما توی حالت legacy بوت میشه و قضیه secure boot کلا منتفیه.
چه توزیعی دارید؟
خروجی این حلقه for رو هم قرار بدید. (احتمالا خروجی طولانیه.)
for mod in vboxdrv vboxnetflt vboxnetadp vboxpci; do
modinfo "${mod}"
done
-
به ترتیب :
➜ ~ sudo /sbin/vboxconfig
[sudo] password for mmj-sys:
sudo: /sbin/vboxconfig: command not found
گفتم ممکنه vboxconfig توی /sbin/ نباشه و به همین دلیل دستور بالا کار نمیده. نگفتم که اون رو دوباره بزنید. منظورم این بوده که این دستور رو بزنید.
sudo vboxconfig
خروجی این دستور رو هم قرار بدید.
command -v vboxconfig
➜ ~ od -A n -t u1 /sys/firmware/efi/efivars/SecureBoot-*
zsh: no matches found: /sys/firmware/efi/efivars/SecureBoot-*
➜ ~
➜ ~ sudo dmesg | grep -i 'secure'
[sudo] password for mmj-sys:
➜ ~
بعدشم مگه بایوس سکیور بوت داره ؟ من هرچی گشتم پیدا نکردم
فکر کردم کامپیوتر شما توی حالت uefi بوت میشه و secure boot فعاله. ولی از خروجی دستوراتی که گذاشتید، به نظر میاد کامپیوتر شما توی حالت legacy بوت میشه و قضیه secure boot کلا منتفیه.
چه توزیعی دارید؟
خروجی این حلقه for رو هم قرار بدید. (احتمالا خروجی طولانیه.)
for mod in vboxdrv vboxnetflt vboxnetadp vboxpci; do
modinfo "${mod}"
done
ارچ دارم بنده دستور رو هم پیدا نکرد
خروجی دستور اخر هم این بود :
➜ ~ for mod in vboxdrv vboxnetflt vboxnetadp vboxpci; do
modinfo "${mod}"
done
modinfo: ERROR: Module vboxdrv not found.
modinfo: ERROR: Module vboxnetflt not found.
modinfo: ERROR: Module vboxnetadp not found.
modinfo: ERROR: Module vboxpci not found.
-
اصلا نتونسته اون ماژولها رو پیدا کنه. بستهای که ماژولهای مورد نیاز رو داره، نصب کردید؟ خروجی این دستور رو قرار بدید
pacman -Q | grep -E '^virtualbox|^linux'
خروجی این دستور رو هم قرار بدید
ls /lib/modules/$(uname -r)/extramodules/
-
اصلا نتونسته اون ماژولها رو پیدا کنه. بستهای که ماژولهای مورد نیاز رو داره، نصب کردید؟ خروجی این دستور رو قرار بدید
pacman -Q | grep -E '^virtualbox|^linux'
خروجی این دستور رو هم قرار بدید
ls /lib/modules/$(uname -r)/extramodules/
➜ ~ pacman -Q | grep -E '^virtualbox|^linux'
linux 5.16.10.arch1-1
linux-api-headers 5.16.8-1
linux-firmware 20220209.6342082-1
linux-firmware-whence 20220209.6342082-1
virtualbox 6.1.32-2
virtualbox-host-dkms 6.1.32-2
➜ ~ ls /lib/modules/$(uname -r)/extramodules/
ls: cannot access '/lib/modules/5.16.10-arch1-1/extramodules/': No such file or directory
-
ماژولهای مورد نیاز وجود ندارند.
با توجه به کرنلی که نصب کردید، دو راه دارید. یا بسته virtualbox-host-modules-arch رو نصب کنید تا ماژولهای از پیش کامپایل شده رو داشته باشید یا اینکه بسته linux-headers رو نصب کنید و بعد دستور sudo dkms autoinstall رو بزنید تا ماژولها برای کرنل فعلی شما کامپایل و نصب بشن.
ماژولهای مورد نیاز virtualbox، همراه کرنل نیستند و لازمه که جدا کامپایل بشن.
توی اکثر توزیعها، یه بسته وجود داره که شامل کدهای این ماژولها هست. این کدها توسط dkms کامپایل و ماژولهای بدست اومده نصب میشن.
dkms یه برنامه برای مدیریت ماژولهایی هست که همراه کرنل قرار ندارند.
برای کامپایل ماژول برای یه کرنل، لازمه حداقل header های اون کرنل دردسترس باشند. به همین دلیل معمولا header های کرنل هم همراه virtualbox نصب میشن.
توی آرچ لینوکس، کرنلهای متفاوتی قابل نصب هستند و توی بستههای متفاوتی قرار دارند. برای مثال بسته linux هست که شامل آخرین نسخه پایدار کرنل هست. یا linux-lts که آخرین نسخه با پشتیبانی طولانی مدت رو داره. یا linux-hardened که جوری کامپایل شده تا امنیت بیشتری داشته باشه. یا linux-zen و چندین کرنل دیگه.
برای کرنلی که همراه بسته linux نصب میشه، ماژولهای virtualbox از پیش کامپایل شدند و از طریق بسته virtualbox-host-modules-arch دردسترس قرار گرفتند. در نتیجه میشه خیلی راحت این بسته رو نصب کرد و ماژولهای virtualbox رو داشت.
توی این مورد، لازمه هر بار که یکی از این بستهها (linux یا virtualbox-host-modules-arch) ارتقا پیدا میکنه، اون یکی بسته هم ارتقا پیدا کنه چون ماژولهایی که برای نسخه قبلی کرنل موجود هستند، با نسخه جدید کرنل کار نمیکنند. لازمه ماژولها برای نسخههای متفاوت کرنل، دوباره کامپایل بشن.
هر وقت پیکربندی یا کد کرنل عوض بشه، باید ماژولها بر اساس اون تغییرات دوباره کامپایل بشن. ماژولهایی که با یه پیکربندی دیگه یا کد دیگه کامپایل شدند، با یه کرنل دیگه، هماهنگ نیستند.
اگه هر کرنل دیگهای به غیر از چیزی که همراه بسته linux هست، نصب کرده باشید، باید بسته virtualbox-host-dkms رو نصب کنید. این بسته کد ماژولها رو داره و صرف نظر از اینکه چه کرنلی دارید، ماژولهای درست رو برای شما کامپایل میکنه.
توی این مورد لازمه با هر بار ارتقا کرنل، header های جدید نصب و ماژولها دوباره کامپایل بشن.
اگه خود ماژولها ارتقا پیدا کنند، لازم نیست چیز دیگهای ارتقا پیدا کنه. فقط لازمه ماژولها دوباره کامپایل بشن.
اگه بسته linux رو نصب کردید، باز هم میتونید از نسخه dkms ماژولها استفاده کنید.
با این توضیحات و شرایط سیستم شما، بسته linux-headers رو نصب کنید و بعد این دستور رو بزنید تا ماژولها برای کرنل فعلی کامپایل بشن.
sudo dkms autoinstall
گزینه دیگه این هست که بسته virtualbox-host-modules-arch رو نصب کنید. در این حالت، به بسته virtualbox-host-dkms نیازی نیست و میتونید پاکش کنید.