در این مقاله می خواهیم در رابطه با استفاده از 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 و معماری پردازنده مرکزی سیستم عامل خود نوبت به دانلود درایور می رسد که برای این کار به سایت زیر میرویم
بعد از اتمام دانلود داریور آن را از حالت فشرده خارج کرده و به مسیر آن بروید
تبدیل درایور برای استفاده در 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 داریور را به مبدل معرفی کنیم.
بعد از معرفی کردن فایلهای فریم ویر درایور دو بار کلید enter را بزنید تا دوباره به منوی اصلی مبدل وارد شود.
در این مرحله باید درایور را تبدیل کنیم. برای این کار شماره ۳ را وارد و enter می کنیم
در ابتدا از ما فایلی با پسوند .inf را می خواهد که اسم فایل را کامل وارد می کنیم Enter زده و در قدم بعدی فایلی با پسوند .sys از ما میخواهد که در اینجا هم اسم فایل را وارد می کنیم و enter می زنیم.
بعد از معرفی فایلها چند سؤال می پرسد که شما با زدن کلید 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