نحوه استفاده از Driver های مایکروسافت در FreeBSD

تاریخچه FreeBSD

در این مقاله می خواهیم در رابطه با استفاده از Driver های مایکروسافتی برای کارت های شبکه در FreeBSD آشنا شویم.

مقدمه

از آنجایی که اکثر کارت های شبکه وایرلس راه انداز بومی برای FreeBSD ندارند یک قابلیت جالب از Solaris برای سیستم‌های تحت یونیکس ارایه شد که می توان Driver های کارت های شبکه سیستم عامل ویندوز مایکروسافت را برای آن‌ها تبدیل کرد که در این مقاله به نحوه انجام این کار می پردازیم.

از مزایای این کار قابلیت های بیشتر داریورها می باشد.

اطلاع از chipset کارت شبکه و معماری پردازنده مرکزی سیستم عامل

در ابتدای کار ما باید بدانیم که کارت شبکه ما از chipset چه کمپانی استفاده می کند. برای این کار در سیستم عامل FreeBSD فرمان زیر را اجرا می کنیم

pciconf -lv

بعد از اجرای فرمان خروجی مانند زیر می بینید که اشاره به کارت شبکه شما کمپانی سازنده chipset و شماره chip می کند.

none2@pci0:4:0:0:       class=0x028000 card=0x04b514e4 chip=0x431514e4 rev=0x01 hdr=0x00
   vendor     = 'Broadcom Corporation'
   device     = 'BCM4312 802.11b/g LP-PHY'
   class      = network

همان طور که ملاحظه می کنید فرمان بالا به ما می گوید که یک چیپ از نوع ‘BCM4312 802.11b/g LP-PHY’ که سازنده آن Broadcom Corporation است در سیستم استفاده شده است و راه‌اندازی برای آن در کرنل بارگذاری نشده است.

برای اینکه بدانیم پردازنده مرکزی سیستم عامل ما چه معماری دارد در FreeBSD از دستور زیر استفاده می کنیم.

uname -a

بعد از اجرای دستور خروجی مانند زیر نمایش می دهد.

FreeBSD jopiter 9.2-RELEASE FreeBSD 9.2-RELEASE #0 r255898: Thu Sep 26 22:50:31 UTC 2013 root@bake.isc.freebsd.org:/usr/obj/usr/src/sys/GENERIC amd64

این خروجی نشان می دهد که معماری پردازنده مرکزی سیستم عامل ما ۶۴bit می‌باشد

بارگذاری download راه انداز سخت‌افزاری سیستم عامل ویندوز

بعد از مطلع شدن از نوع chipset و معماری پردازنده مرکزی سیستم عامل خود نوبت به دانلود درایور می رسد که برای این کار به سایت زیر می‌رویم

نکته:
سعی کنید داریورهای ویندوز XP را برای کارت شبکه خود دانلود کنید تا بهترین بازدهی را داشته باشید.

بعد از اتمام دانلود داریور آن را از حالت فشرده خارج کرده و به مسیر آن بروید

تبدیل درایور برای استفاده در FreeBSD

بعد از وارد شدن در مسیر درایور ویندوزی دستور زیر را در حالت root اجرا می کتیم.

ndisgen

بعد از اجرا منوی زیر را می بینید

       ==================================================================
       ------------------ Windows(r) driver converter -------------------
       ==================================================================
       This script is designed to guide you through the process
       of converting a Windows(r) binary driver module and .INF
       specification file into a FreeBSD ELF kernel module for use
       with the NDIS compatibility system.
       The following options are available:
       ۱] Learn about the NDIS compatibility system
       ۲] Convert individual firmware files
       ۳] Convert driver
       ۴] Exit
       Enter your selection here and press return: 

برای شروع به کار تبدیل، ابتدا شماره ۲ را وارد و enter می کنیم. به منویی مانند زیر وارد می‌شویم که باید فایل‌های framware داریور را به مبدل معرفی کنیم.

نکته:
فایل‌های فریم ویر معمولاً پسوند هایی مانند .cab و .dll دارند.
نکته:
اسم کامل فایل‌ها را با پسوند دقیقاً مانند همانی که در مسیر هستند وارد کنید.

بعد از معرفی کردن فایل‌های فریم ویر درایور دو بار کلید enter را بزنید تا دوباره به منوی اصلی مبدل وارد شود.

در این مرحله باید درایور را تبدیل کنیم. برای این کار شماره ۳ را وارد و enter می کنیم

در ابتدا از ما فایلی با پسوند .inf را می خواهد که اسم فایل را کامل وارد می کنیم Enter زده و در قدم بعدی فایلی با پسوند .sys از ما می‌خواهد که در اینجا هم اسم فایل را وارد می کنیم و enter می زنیم.

نکته:
بسته به نسخه کرنل ۳۲bit یا ۶۴bit شما از فایل .sys مناسب سیستم خود استفاده کنید و نام درست را وارد کنید.

بعد از معرفی فایل‌ها چند سؤال می پرسد که شما با زدن کلید enter از آنها رد می‌شود و کار تبدیل تمام می شود. حال در مسیری که هستیم یک فایل با اسمی مانند زیر وجود دارد

bcmwl564_sys.ko

راه‌اندازی کارت شبکه با درایور جدید

ابتدا فایلی که ساختیم را با دستور زیر در مسیر /boot/modules کپی می کنیم

cp bcmwl564_sys.ko /boot/modules

بعد فایل /boot/loader.conf را باز کرده و محتویات زیر را به آن اضافه می کنیم

ndis_load="YES"
if_ndis_load="YES"

سپس فایل /etc/rc.conf را باز کردع و محتویات زیر را در آن کپی می کنیم

kld_list="bcmwl564_sys"
network_interface="ndis0"
wlans_ndis0="wlan0"
ifconfig_wlan0="ssid <your ssid> WPA DHCP"

فایل را ذخیره می کنیم و می بندیم.

آخرین مرحله

سیستم را reboot می کنیم و اگر کارها را درست انجام داده باشیم در خروجی دستور ifconfig چیزی مانند زیر می بینید که می‌توانید از این به بعد از کارت شبکه بی سیم خود استفاده کنید.

ndis0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 2290
       ether 00:26:82:a2:b6:70
       nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
       media: IEEE 802.11 Wireless Ethernet autoselect mode 11g
       status: associated
wlan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
       ether 00:26:82:a2:b6:70
       inet 192.168.1.4 netmask 0xffffff00 broadcast 192.168.1.255
       nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
       media: IEEE 802.11 Wireless Ethernet OFDM/54Mbps mode 11g
       status: associated
       ssid Sun channel 8 (2447 MHz 11g) bssid 84:c9:b2:f0:7b:97
       country US authmode WPA2/802.11i privacy OFF powersavemode CAM
       powersavesleep 100 txpower 0 bmiss 7 mcastrate 6 mgmtrate 6
       scanvalid 60 protmode CTS roaming MANUAL