معروف أن لكل نظام بنية خاصة لملفاته التطبيقية أو ما يعرف ب Binary Executable، مما يستحيل تشغيلها في نظام آخر إلا بوسيط آخر كemulation الذي يقوم بعمل محاكاة، ليس شرطا أن يحاكي النظام كله ربما جزء منه كما يفعل FreeBSD لتشغيل الملفات التطبيقية للأنظمة الأخرى كSolaris, OpenSolaris, BSD based,Linux.
FreeBSD لديه قابلية تشغيل معظم برامج Linux مما يجعلك تضرب عصفورين بحجر واحد، يعتمد على ذلك بوحدة أو module، هذه الوحدة تقوم بمحاكاة system call's الخاصة ب Linux على FreeBSD مما يعطي القابلية لتشغيل ملفات Linux عليه.
كيفية تشغيل Linux emulation على FreeBSD:
أولا علينا تشغيل الوحدة linux، نقوم أولا بإضافة خاصية تشغيلها في الملف rc.conf:
ee /etc/rc.conf linux_enable=”YES”
kldload linux
هذا الأمر سيقوم بتشغيل الوحدة linux على مستوى النظام، للتأكد من تشغيلها ننفذ الآتي:
kldstat . . . 8 1 0xffffffff80c22000 1393f1 zfs.ko 9 1 0xffffffff80d5c000 1c39 opensolaris.ko 10 1 0xffffffff80d5e000 510b linprocfs.ko 11 1 0xffffffff80d64000 2564e linux.ko
/usr/compat/linux
يجب عدم الخلط ما بين الملفات الموجودة في المسار usr/compat/linux/lib/مثلا و الموجودة في المسارlib/، حتى لو وجدت بنفس الإسم إلا أن كل ملف يحمل معلومات خاصة بنظامه الأصلي.
تنصيب Linux emulation:
ال port الخاص بالمحاكاة نجده في:
/usr/ports/emulators/linux_base-f10
الآن نتوجه إلى المسار السابق و نقوم بتنصيب طبقة المحاكاة:
cd /usr/ports/emulators/linux_base-f10 make install clean
بعدها نقوم بالآتي حتى لا نضطر إلى إعادة تشغيل النظام:
/etc/rc.d/abi restart /etc/rc.d/sysctl restart
ee /etc/fstab linproc /usr/compat/linux/proc linprocfs rw 0 0 mount linproc
تشغيل Flash في المتصفح Firefox 3.x:
سنقوم الآن بتشغيل الفلاش على المتصفح Firefox، مثل ماهو معروف فإن أغلب المواقع تعتمد على Adobe Flash Player الذي لم توفر الشركة الأصلية نسخة للبيسداويين(لا علينا).
سنقوم بتشغيل Flash 10 الآن لكن قبل ذلك علينا أن نضيف الآتي
OVERRIDE_LINUX_BASE_PORT=f10 OVERRIDE_LINUX_NONBASE_PORTS=f10
etc/make.conf/، بهذا سنعتمد على الحزم الخاصة ب fedora 10 فقط.
cd /usr/ports/www/linux-f10-flashplugin10 make install clean
cd /usr/ports/www/nspluginwrapper make install clean
/usr/local/lib/npapi/linux-f10-flashplugin/libflashplayer.so
nspluginwrapper -v -i /usr/local/lib/npapi/linux-f10-flashplugin/libflashplayer.so
تنفيذ الأمر السابق سيجعل الفلاش يشتغل للمستخدم الحالي، إن أردت تششغيل عند أي مستخدم آخر عليك أولا أن تقوم إلى الدخول إليه، عبر الطرفية مثلا، بعدها تنفذ الأمر السابق.
$su Brother $nspluginwrapper -v -i /usr/local/lib/npapi/linux-f10-flashplugin/libflashplayer.so $exit
مثال 01:
كما قلنا سابقا أن FreeBSD يقوم بتضمين الملفات الاساسية فقط في المسار usr/compat/linux/، لذا فإنه من الممكن أن تجد وحدات ناقصة تعتمد عليها برامج أخرى عند تشغيلها، كل ماعليك فعله هو البحث عن الملفات الناقصة و وضعها في المسار الصحيح تحت usr/compat/linux/، هنا عند محاولتي لتشغيل skype صادفت الرسالة التالية:
./
فل ما كان علي فعله هو الذهاب إلى موقع http://rpm.pbone.net و البحث عن الحزمة المسؤولة عن الوحدة libasound.so.2 بعدها قمت بتحميلها عندي، إستخرجت الملفات من الحزمة و و ضعتها في مكانها المناسب، بلغة سطر الأوامر:
skype: error while loading shared libraries: libasound.so.2: cannot open shared object file: No such file or directory
$wget http://archive.fedoraproject.org/fedora/linux/updates/10/i386/alsa-lib-1.0.21-2.fc10.i386.rpm $rpm2cpio | cpio -idm $ls $lib usr etc $su #cp -R lib/ usr/compat/linux/lib/ #cp -R etc/ usr/compat/linux/etc/ #cp -R usr/ usr/compat/linux/usr
كرر هذه الخطوة مع كل ملف تجده ناقص :D.
مثال 02:
skype: error while loading shared libraries: /usr/lib/libvorbisenc.so.2: ELF file OS ABI invalid
[CODE]brandelf -t Linux /usr/compat/linux/usr/lib/libvorbisenc.so.2[/CODE
مصادر:
Linux® emulation in FreeBSD
Linux at FreeBSD Wiki
NSpluginwrapper: A cross-architecture browser plugin tool
HOW TO: Flash10 plugin, Firefox3 and FreeBSD 7.2 or higher
المصدر


Menu
Cat Widget