ساب‌سیستم دبیان برای پارچ (پبیان)

شاید راحت‌ترین راه استفاده از پبیان بدون نصب ایزو آن

ساب‌سیستم دبیانی پارچ (پبیان) راحت‌ترین راه برای تجربه پارچ دبیانی

داشتم به این فکر می‌کردم که یک ایزو برای پارچ دبیانی که هست، هرکسی بخواد استفاده کنه مجبور میشه بره توزیع رو دانلود کنه و نصب کنه. برای همین یک فکری کردم و اون به شرح زیر هستش:

بیشتر توزیع‌های جدید از فایل‌سیستم BTRFS استفاده می‌کنن و پارچ هم از این قاعده مستثنا نیست. BTRFS یه ویژگی جالب داره به اسم subvolume. یعنی می‌تونه روی یه پارتیشن چندتا فضای جدا بسازه که هرکدوم مثل یه فایل‌سیستم مستقل کار کنن، ولی در عمل همه از یه فضای دیسک مشترک استفاده می‌کنن.

حالا فرض کنید من بتونم پبیان رو داخل یکی از همین subvolumeها نصب کنم. کاربر فقط سیستم رو روشن می‌کنه، تو GRUB انتخاب می‌کنه که پارچ بالا بیاد یا پبیان، و تمومه. هیچ دردسری، هیچ پارتیشن‌بندی پیچیده، هیچ تنظیمات عجیب. این ایده بود که باعث شد پروژه ساب‌سیستم پبیان رو شروع کنم.

اولین چیزی که باید حل می‌شد، مسئله نصب بود. دبیان یه ابزار به اسم debootstrap داره که دقیقاً برای همین کار ساخته شده. می‌تونه یه سیستم دبیان کامل رو روی هر پوشه‌ای نصب کنه، حتی اگه خودت الان روی دبیان نباشی. debootstrap میاد، بسته‌های پایه رو دانلود می‌کنه، نصب می‌کنه و یه سیستم دبیان کامل برات می‌سازه.

بعد از نصب بیس دبیان، کار اصلی شروع می‌شه. باید تمام بسته‌ها و ابزارهای پارچ رو روی این بیس نصب کرد. مخزن پارچ رو اضافه کردم و تمام ابزارهای مخصوص پارچ مثل پارچ‌استور، پارچ درود و کلی ابزار دیگه رو نصب کردم. حالا در واقع یه پبیان داریم؛ یعنی پارچ لینوکس روی بیس دبیان.

اگه یه subvolume بسازیم و همین فرآیند رو روی اون اجرا کنیم، در واقع یه پبیان کامل داریم که روی همون دیسک پارچ نصب شده ولی کاملاً جداگانه کار می‌کنه. بعد فقط کافیه bootloader رو طوری تنظیم کنیم که هر دو سیستم قابل بوت باشن.

اما این کار برای یه کاربر عادی خیلی پیچیده‌ست. باید با خط‌فرمان کار کنه، با GRUB سر و کله بزنه و صدها تنظیم انجام بده. من سعی دارم تا کاری کنم که هر کسی بتونه راحت استفاده کنه پس قراره یک رابط‌گرافیکی نوشته بشه تا کار رو راحت‌تر کنه.

شروع کردم به طراحی رابط گرافیکی با Python و GTK چون هم ساده بود، هم می‌شد چیزایی که می‌خواستم رو پیاده کنم. برنامه طوری داره طراحی می‌شه که کاربر فقط چند تا کلیک کنه و همه چیز آماده باشه. وقتی برنامه رو باز می‌کنه، اول چک می‌کنه سیستم از BTRFS استفاده می‌کنه یا نه. اگه نه، یه پیام می‌ده که متأسفانه امکان نصب نیست. اگه بله، ادامه می‌ده. بعد فضای آزاد رو چک می‌کنه. حداقل ۲۰ گیگ فضا لازمه تا یه پبیان کامل با محیط گرافیکی نصب بشه.

بعد می‌رسیم به انتخاب محیط دسکتاپ. کاربر می‌تونه انتخاب کنه چی می‌خواد: GNOME، KDE، XFCE، Cinnamon، MATE یا حتی بدون محیط گرافیکی. هر کدوم یه توضیح کوتاه هم دارن که بدونی چه جوری هستن و چقدر فضا اشغال می‌کنن. همینطور تشخیص میده که روی پارچ از چه میزکاری استفاده میشه و همون رو به عنوان پیش‌فرض در نظر می‌گیره.

بعدش نوبت انتخاب بسته‌هاست. کاربر می‌تونه تعیین کنه چه برنامه‌هایی از همون اول نصب باشن: Firefox، LibreOffice، GIMP، VLC یا هر چیز دیگه‌ای که بخواد. همه اینا دسته‌بندی شدن تا انتخاب راحت باشه.

یکی از بخش‌های جالب برنامه، تنظیم home مشترک هست. کاربر می‌تونه انتخاب کنه که پوشه خانگی بین پارچ و پبیان مشترک باشه یا نه. اگه مشترک باشه، همه فایل‌ها، عکس‌ها، موزیک‌ها و سندها در هر دو سیستم قابل دسترسن. البته اگه نخواهید مشترک باشه، هر سیستم home جداگانه خواهد داشت و تداخلی پیش نمیاد.

وقتی همه انتخاب‌ها انجام شد، نصب شروع می‌شه. اول subvolume ساخته می‌شه، بعد debootstrap اجرا می‌شه و بیس دبیان نصب می‌شه. این مرحله حدود ۱۰ تا ۱۵ دقیقه طول می‌کشه بسته به سرعت اینترنت و سیستم.

بعد که بیس آماده شد، مخزن پارچ اضافه می‌شه، کلیدهای امنیتی نصب می‌شن و همه بسته‌های ضروری پارچ می‌رن بالا. ابزارهای انتخابی نصب می‌شن. بعد محیط دسکتاپ انتخابی نصب می‌شه. اگه GNOME انتخاب شده باشه، همه بسته‌ها و برنامه‌های GNOME می‌رن بالا. اگه KDE انتخاب شده باشه، Plasma با SDDM و برنامه‌های KDE نصب می‌شن. همین کار برای بقیه محیط‌ها هم انجام می‌شه.

در نهایت بسته‌هایی که کاربر انتخاب کرده نصب می‌شن. این قسمت ممکنه طول بکشه بسته به تعداد بسته‌ها و حجمشون. در طول نصب یک میله روند و پنجره گزارشات هست که نشون می‌ده چه مرحله‌ای در حال اجراست و اگه مشکلی پیش اومد، بفهمی کجا بوده.

وقتی نصب تموم شد، برنامه boot loader رو هم تنظیم می‌کنه. یه ورودی جدید به GRUB اضافه می‌شه که به پبیان اشاره می‌کنه. کاربر دیگه لازم نیست دستکاری GRUB کنه. بعد از ریستارت، GRUB دو گزینه داره: پارچ و پبیان. هرکدوم رو انتخاب کنی، سیستم جداگانه بالا میاد.

یکی از مزایای بزرگ این کار اینه که پایداری دبیان رو داری ولی امکانات پارچ رو از دست نمی‌دی. اگه آپدیت پارچ خراب شد، همیشه پبیان هست. اگه روی پبیان مشکلی پیش اومد، پارچ اصلی سالمه. اگه home مشترک باشه، همه فایل‌ها همواره در دسترس هستن، اگه هم جدا باشه، دو سیستم کاملاً مستقل داری.

یکی از چیزایی که خیلی روش کار کردم تجربه کاربری بود. نمی‌خواستم کاربر حس کنه داره با چیز پیچیده‌ای کار می‌کنه. برنامه مثل نصب یه برنامه عادیه: چند تا کلیک و همه چیز آماده. البته گزینه‌های پیشرفته هم هستن: انتخاب شاخه دبیان (stable، testing، unstable)، تنظیمات kernel و مخازن سفارشی.

یکی دیگه از ویژگی‌ها snapshot خودکاره. قبل از هر تغییر مهم، سیستم از حالت فعلی snapshot می‌گیره تا اگه مشکلی پیش اومد، راحت به حالت قبل برگردی. برای مدیریت فضای دیسک هم فشرده‌سازی BTRFS فعال شده و فایل‌های مشترک فقط یه بار ذخیره می‌شن، در عمل اضافه کردن پبیان معمولاً ۵ تا ۱۰ گیگ بیشتر فضا مصرف نمی‌کنه.

چرا این کارو انجام بدیم؟ چون به نظر ایده جالبی میاد که بشه پبیان رو مستقیماً بدون دریافت فایل ایزو از یک سیستمی که پارچ روش نصب شده نصب و تجربه کرد.

این پروژه هنوز کامل آماده نیست و دارم روی نسخه اول کار می‌کنم. هدف اینه که تا چند ماه دیگه منتشر بشه و تو مخزن رسمی پارچ قرار بگیره تا همه بتونن نصب کنن.