بیزیباکس ابزاری است قابل اجرا بر روی سیستمعاملهای شبه-یونیکس نظیر خانواده گنو/لینوکس، اندروید و FreeBSD که بطور ویژه برای سیستمهای با منابع کم طراحی گردیده است. سازندگانش به آن لقب «چاقوی سوئیسی لینوکس توکار» دادهاند (به استفاده از سیستمعامل گنو/لینوکس در گوشیها، تلویزیونهای هوشمند و... لینوکسِ توکار یا Embedded Linux گفته میشه)، چراکه فایل باینری آن به تنهایی میتواند بیش از ۳۰۰ دستور یونیکسی متداول را برای ما فراهم آورد. این برنامه تحت اجازهنامه GPL منتشر میگردد.
۵-۶ سال پیش مقالهای در مورد بیزیباکس نوشتم که مورد استقبال فارسی زبانان قرار گرفت، به همین دلیل امروز تصمیم گرفتم تا مقالهای به مراتب کاملتر و بروزتر در مورد این برنامه مهم و کاربردی بنویسم. در این مطلب میخواهیم به بررسی نقش بیزیباکس در سیستمعامل اندروید بپردازیم و آنرا از جنبههای مختلف بررسی کنیم.
تاریخچه
توسعه بیزیباکس در سال ۱۹۹۵ در زبان C توسط «بروس پرنز» آغاز شد و حدوداً یکسال بعد یعنی در سال ۱۹۹۶ بروس اعلام کرد که توسعه آن پایان یافته است. هدف توسعه بیزیباکس در ابتدا ساخت سیستمی بوتیبل برای قرار دادن بر روی فلاپی دیسکها بود تا بتوانند از آن هم به عنوان دیسک نجات و هم به عنوان نصاب توزیعهای دبین استفاده کنند. بروس پرنز پس از اتمام پروژه در سال ۱۹۹۶ توسعه اون رو رها کرد، اما پروژههای منشعب شده (Fork) از آن توسط «انریکه زَناردی» (برای دبین) و «دیو سینِج» (برای پروژه Linux Router) ادامه داشت.
نهایتاً در سال ۱۹۹۸ «اریک اندرسون» با یکپارچهسازی پروژههای «انریکه زناردی» و «دیو سینج»، ایجاد وبسایت، ریپازیتوری و ایمیل لیست، پروژه جدید بیزیباکس (همون چیزی که امروزه ازش استفاده میکنیم) رو کلید زد. هدف این پروژه جدید، ایجاد پکیجی از ابزارهای چند منظوره برای سیستمهای مبتبی بر لینوکس توکار بود. توسعه بیزیباکس از آن زمان تا به امروز بطور پیوسته و فعال ادامه دارد.
اهداف
شخصاً وقتی گوشی اندرویدی خودم رو روت میکنم بطور معمول اولین کاری که انجام میدم نصب بیزیباکس هست، اما چرا؟ برای چی باید بیزیباکس رو روی سیستم خودمون نصب کنیم و نصب کردنش واقعاً چه سودی داره؟ اصلاً بیزیباکس واقعاً چیه؟
به لطف برنامه toolbox گنجانده شده در سیستم عامل اندروید، ما امکان استفاده از برخی دستورات یونیکسی نظیر ls، cat، top و... را در ترمینال گوشی خود داریم، اما از آنجایی که GNU Core Utilities (یا همون coreutils) در سیستمعامل اندروید گنجانده نشده است، امکان استفاده از بسیاری از دستورات را نخواهیم داشت. اینجاست که بیزیباکس به کمک ما میآیند.
بیزیباکس نرمافزاری است که بسیاری از ابزارهای یونیکسی را برای ما فراهم میکند و در مقایسه با coreutils بسیار گستردهتر و کاملتر است. اگر شما هم از اسکریپتهایی استفاده میکنید که باعث Boost شدن گوشی شما میشود، قطعاً به این ابزار نیاز خواهید داشت، چراکه پایه بسیاری از این اسکریپتها دستوراتی است که در toolbox اندروید وجود ندارد و تنها با استفاده از بیزیباکس است که قادر خواهید بود این دستورها (در واقع برنامهها - هر دستور درواقع یک برنامه کامپیوتری است-) را به گوشی خود بیاورید. همچنین بسیاری از برنامههایی که نیازمند دسترسی روت هستند برای اینکه بتوانند جادوی خودشان را انجام دهند نیازمند بیزیباکس هستند، بطور مثال Titanium Backup یا WPS Connect و همونجور که گفتم تقریباً همه اسکریپتهای بوستر.
ویژگیها
بطور معمول ما در کامپیوترها برای هر برنامه یک فایل باینری جداگانه داریم، اما بیزیباکس تنها متشکل از یک فایل باینری است که میتوانیم با صدا کردن آن به همراه نام ابزار مربوطه، به تک تک برنامههای آن دسترسی داشته باشیم. بطور مثال جهت اجرای دستور (یا بهتر بگیم برنامه) ls به شکل زیر عمل میکنیم:
/bin/busybox ls
ممکنه با خودتون بگید که نوشتن busybox برای هر دستور باعث افزایش حجم کدنویسی، خطا و بی نظمی در اسکریپتهایمان خواهد شد، اما با Symbolic Link (یا Hard Link) کردن هر کدام از برنامههای موجود در بیزی باکس، میتوانیم دستور بالا و تمام دستورات دیگر را بدون نیاز به نوشتن کلمه busybox اجرا کنیم، پس با symlink کردن برنامههای موجود در بیزیباکس، دستور بالا به دستور زیر تبدیل خواهد شد:
/bin/ls
درست مثل دستورات (برنامههای) coreutils در توزیعهای گنو/لینوکس یا خط فرمان یونیکس.
چه کسانی نیازمند نصب بیزیباکس بر روی گوشی خود هستند؟
اگر از برنامهای استفاده میکنید که برای کار کردن نیازمند بیزیباکس است، باید بیزیباکس را نصب کنید. اگر گوشی خود را روت کردهاید و برای Boost کردن گوشیتان از اسکریپتهایی استفاده میکنید که به دستوراتی فراتر از دستورات اندک موجود در toolbox اندروید نیاز دارند، باید بیزیباکس را بر روی گوشی خود نصب کنید.
اما اگر جز آن دسته از کاربرانی هستید که همچنان نمیدانید بیزیباکس چیست و با نصب آن چه هدفی را دنبال میکنیم، به شما توصیه میکنم که هرگز به سراغ نصب بیزیباکس نروید. خیلی از دوستان رو دیدم که بیزیباکس رو بی دلیل بر روی گوشی خودشون نصب کردن و باعث سردرگمی و دردسرشون شده، چون نمیدونستن فلسه و کارایی اون چیه.
توجه داشته باشید که بیزیباکس به هیچوجه به درد کاربران مبتدی اندروید نخواهد خورد.
چگونه بیزیباکس را بر روی گوشی خود نصب کنیم؟
برنامههای نصاب بسیاری برای نصب بیزیباکس در مارکت گوگل پلی وجود دارد. تمامی این نصابها به غیر از برنامه BusyBox Non-Root برای اینکه بتوانند عمل نصب را انجام دهند نیازمند دسترسی روت هستند. شخصاً از برنامههای BusyBox Pro و BusyBox X برای نصب بیزیباکس استفاده کردهام که در ادامه نظرم را در مورد این دو برنامه بازتاب خواهم داد.
نصب بیزیباکس معمولاً در پوشه system/xbin/ انجام میگیرد، چراکه آخرین دایرکتوری قرار گرفته شده در متغیر PATH این مسیر است. در برنامه BusyBox Pro امکان تغییر مسیر نصب به پوشه system/bin/ یا هر پوشه دلخواه دیگری وجود دارد. در گوشیهای روت نشده که کاربران با استفاده از BusyBox Non-Rooot اقدام به نصب بیزیباکس میکنند مسیر نصب /data/data/burrows.apps.busybox/app_busybox/ خواهد بود که در نتیجه برای هر بار استفاده از بیزیباکس باید متغیر PATH را تغییر دهید.
برنامه نصب نباید دستورات موجود در مسیر نصب را بازنویسی (Override) کند، متاسفانه به هنگام استفاده از برنامه BusyBox X مشکلی که برام پیش اومد این بود که دستورات su و daemonsu نصب شده توسط CF-Auto-Root را بازنویسی کرد که در نهایت مجبور شدم مجدداً CF-Auto-Root را بر روی گوشی خودم فلش کنم. اگر این اتفاق برای یکی از دستورات نصب شده توسط فرمور گوشیم میافتاد اونوقت ریکاور کردن گوشیم میتونست به کاری سخت تبدیل بشه!
برنامه BusyBox Pro برای شما گزینه Uninstall را نیز فراهم کرده است تا با استفاده از آن بتوانید بطور خودکار تمام دستورات و symlinkهای ایجاد شده را حذف کنید. اما در BusyBox X این گزینه وجود ندارد و من مجبور شدم بصورت دستی دستور busybox و ۳۶۰ تا symlink ایجاد شده رو حذف کنم. توجه داشته باشید که از اندروید 4.3 به بعد پارتیشن سیستم بصورت فقط خواندنی Mount شده است، به همین دلیل برای حذف بیزیباکس مجبور شدم ابتدا آنرا به صورت خواندی-نوشتنی (read-wirte) درآوردم. برای این منظور میتوانید از دستور زیر استفاده کنید:
mount -o remount,rw,barrier=1 /system
برای بازگردانی پارتیشن به حالت قبل (یعنی read-only) نیز از این دستور استفاده میشود:
mount -o remount,ro,barrier=1 /system
در انتها لازمه بگم که تنها BusyBox Pro بود که تمامی شرایط مطلوب گفته شده در بالا رو داشت و اگر قصد نصب بیزیباکس رو دارید به شما هم توصیه میکنم که از BusyBox Pro استفاده کنید.
برنامه BusyBox Pro از ۲۹۶ دستور و BusyBox X از ۳۶۰ دستور پشتیبانی میکند، اما این به این معنی نیست که BusyBox Pro ناقص است، چراکه بسیاری از دستورات قرار داده شده در BusyBox X ربطی به سیستم عامل اندروید ندارد و کاملاً زائد است، بنابراین تعداد کمتر دستورات تحت پوشش به معنی تعداد کمتر دستورات غیر مرتبط با سیستم عامل اندروید است.
در زیر شما میتوانید نسخه ۵۱ برنامه BusyBox Pro را بصورت رایگان و با لینک مستقیم دریافت کنید:
چرا گوگل BusyBox را جایگزین Android toolbox نمیکند؟
امکان جایگزینی BusyBox با toolbox بطور مستقیم وجود ندارد، چرا که toolbox شامل دستوراتی است که در بیزیباکس وجود ندارد (بطور مثال دستورات مرتبط با SELinux). با اینکه میتوان نسخهای از بیزیباکس را ایجاد و کامپایل کرد که شامل دستورات ناموجود toolbox در بیزیباکس باشد، اما سیاست گوگل در «عدم استفاده از نرمافزارهای تحت اجازهنامه GPL در فضای کاربری» باعث میشود بیزیباکس نتواند به عنوان یک برنامه پیشفرض در اندروید وجود داشته باشد.
اما به هر حال این موضوع باعث نمیشود که شما نتوانید خودتان بیزیباکس را بر روی گوشی خود نصب کنید.