انتشار مجموعه مینیمالیستی از ابزارهای سیستمی BusyBox 1.35

انتشار بسته BusyBox 1.35 با اجرای مجموعه ای از ابزارهای استاندارد یونیکس ارائه شده است که به صورت یک فایل اجرایی واحد طراحی شده و برای حداقل مصرف منابع سیستم با حجم مجموعه ای کمتر از 1 مگابایت بهینه شده است. اولین نسخه از شاخه جدید 1.35 به عنوان ناپایدار قرار می گیرد؛ تثبیت کامل در نسخه 1.35.1 ارائه می شود که حدود یک ماه دیگر انتظار می رود. کد پروژه تحت مجوز GPLv2 توزیع شده است.

ماهیت ماژولار BusyBox امکان تشکیل یک فایل اجرایی یکپارچه حاوی مجموعه دلخواه از ابزارهای پیاده سازی شده در بسته را فراهم می کند (هر ابزار به عنوان یک پیوند نمادین به این فایل در دسترس است). اندازه، ترکیب و عملکرد مجموعه ابزارها می تواند بسته به نیازها و قابلیت های پلت فرم تعبیه شده ای که مونتاژ برای آن انجام می شود، متفاوت باشد. بسته مستقل است، هنگامی که به صورت ایستا با uclibc ساخته می شود، برای ایجاد یک سیستم کار در بالای هسته لینوکس، فقط باید چند فایل دستگاه را در دایرکتوری dev ایجاد کنید و فایل های پیکربندی را آماده کنید. در مقایسه با نسخه قبلی 1.34، مصرف رم BusyBox 1.35 1726 بایت افزایش یافته است (از 1042344 به 1044070 بایت).

BusyBox ابزار اصلی در مبارزه با نقض GPL در سیستم عامل است. Software Freedom Conservancy (SFC) و Software Freedom Law Center (SFLC)، به نمایندگی از توسعه دهندگان BusyBox، بارها و بارها با موفقیت بر شرکت هایی که دسترسی به کد منبع برنامه های GPL را فراهم نمی کنند، چه از طریق دادگاه و چه از طریق خارج از کشور، تأثیر گذاشته اند. -قراردادهای دادگاه در همان زمان، نویسنده BusyBox شدیداً به چنین محافظتی اعتراض می کند - معتقد است که کسب و کار او را خراب می کند.

BusyBox 1.35 تغییرات زیر را برجسته می کند:

  • ابزار find گزینه -samefile name را برای بررسی اینکه آیا فایلی از همان inode فایل با نام مشخص شده استفاده می کند، پیاده سازی می کند. کد یکپارچه برای مقایسه زمان و افزودن گزینه های "-amin"، "-atime"، "-cmin" و "-ctime" برای بررسی زمان دسترسی و ایجاد فایل.
  • ابزار mktemp یک گزینه "--tmpdir" اضافه کرده است تا دایرکتوری پایه را مشخص کند که مسیرهای مرتبط با فایل های موقت محاسبه می شوند.
  • گزینه های "-ignore-devno" به ابزار cpio اضافه شده اند تا شماره واقعی دستگاه را نادیده بگیرد (0 همیشه نوشته می شود) و "-renumber-inodes" برای شماره گذاری مجدد inode قبل از ذخیره آن در بایگانی.
  • در ابزار awk، عبارت printf %% تنظیم شده است.
  • حدود دوازده تغییر به کتابخانه libbb اضافه شد. سازگاری بهبود یافته realpath با همتای خود از مجموعه coreutils.
  • تعداد زیادی اصلاحات برای پوسته های فرمان خاکستر و هوس با هدف بهبود سازگاری با پوسته های دیگر پیشنهاد شده است. Ash پشتیبانی از تله‌های ERR مانند bash، تنظیم -E و $FUNCNAME و بازیابی سریع‌تر رشته با استفاده از عبارت "${s:}" را اضافه کرده است. در خاکستر و خاموش، اجرای عملیات "${x//\*/|}" تسریع شده است.
  • ابزار basename گزینه های "-a" را برای ارسال چندین نام در یک تماس و "-s SUFFIX" را برای حذف کاراکترهای "SUFFIX" دنباله اجرا می کند.
  • گزینه "-f" (force) به ابزار blkdiscard اضافه شد.
  • httpd ارسال هدرهای Last-Modified/ETag/Content-Length برای صفحات دارای خطا را متوقف کرده است.
  • httpd و telnetd امکان تغییر پورت شبکه پیش فرض را فراهم می کنند.
  • یک آسیب‌پذیری در tar که باعث می‌شد هنگام پردازش آرشیوهایی با نام فایل‌های بسیار طولانی، تمام حافظه موجود مصرف شود، برطرف شد.
  • پیاده سازی P256 و x25519 در کد TLS دوباره کار شده است.
  • ابزار wget گزینه "--post-file" را برای ارسال فایل ها پیاده سازی می کند و به شما امکان می دهد محتویات هدر Content-Type را برای گزینه های "--post-data" و "--post-file" سفارشی کنید.
  • ابزار Timeout اکنون از گزینه "-k KILL_SECS" برای ارسال سیگنال SIGKILL پشتیبانی می کند اگر فرمان در KILL_SECS ثانیه اضافی تکمیل نشود.
  • پشتیبانی از تنظیم پارامتر netns برای دستگاه ها به ابزار آی پی اضافه شده است.
  • ابزار cal گزینه "-m" را برای نمایش ماه مشخص شده پیاده سازی می کند.
  • برنامه‌های کاربردی تاریخ و لمس امکان تعیین فاصله منطقه زمانی در تاریخ را فراهم می‌کنند.
  • در ویرایشگر vi، پشتیبانی از فایل ~/.exrc اضافه شده است و مدیریت "-c" و EXINIT تغییر کرده است.
  • در ابزار ed، نتیجه اجرای دستورات خواندن/نوشتن با مشخصات POSIX-1.2008 مطابقت دارد. پشتیبانی از گزینه "-p" اضافه شده است.
  • گزینه "-n N" را به ابزار cmp اضافه کرد تا مقایسه را به N بایت محدود کند.

علاوه بر این، چند روز پیش، Toybox 0.8.6 منتشر شد، آنالوگ BusyBox که توسط یک نگهدارنده سابق BusyBox توسعه یافته و تحت مجوز 0BSD توزیع شده است. هدف اصلی Toybox این است که به تولید کنندگان توانایی استفاده از مجموعه حداقلی از ابزارهای استاندارد را بدون باز کردن کد منبع اجزای اصلاح شده ارائه دهد. از نظر قابلیت‌ها، Toybox همچنان از BusyBox عقب است، اما 296 فرمان اصلی (217 به طور کامل و 83 به طور جزئی) از 374 دستور برنامه‌ریزی شده قبلاً اجرا شده است.

از جمله نوآوری های Toybox 0.8.6 می توان به بهبود اسکریپت ها برای ایجاد تصاویر سیستم، اضافه شدن دستورات sha256sum، sha224sum، sha384sum، sha512sum، linux32، strace و hexdump اشاره کرد. گزینه های پیاده سازی شده "date -s"، "pmap -p"، "tail -F -s"، "kill -0"، reboot/halt/poweroff -d، "tail –bytes –lines"، “i2cdetect -q” , "find -quit -lname -ilname -d"، "cut -d $'\n"، "cut -nb"، "cpio -ignore-devno -renumber-inodes"، "tar -selinux"، "split" -n، "grep -L".

منبع: opennet.ru

اضافه کردن نظر