گنو هرد، فراتر از لینوکس

   
نام نویسنده:
|
دسته بندی:
|
پکرنل به صورت ساده یکی از اعضای سیستم‌عامل است. اندرو تتن‌باوم در کتاب سیستم‌عامل پیشرفته پس از صحبت در باره ی این که نمی‌توان تعریف جامع و دقیقی از سیستم‌عامل ارائه داد، بهترین تلاش خود را برای تعریف سیستم‌عامل به این صورت بیان می‌کند: سیستم‌عامل عبارت است از کرنل و هر نرم‌افزاری که مستقیماً با کرنل کار می‌کند، مثل کتاب‌خانه‌ها، فیرم‌ورها، کامپایلرها و ابزارهای توسعه. کرنل در این میان بخشی است که مستقیماً با سخت‌افزار صحبت کرده و وظیفهٔ اختصاص منابع را برعهده دارد. ولی خود کرنل همان‌گونه که در بالا اشاره شد انواع مختلفی دارد.

Nikkhah80

کرنل

پکرنل به صورت ساده یکی از اعضای سیستم‌عامل است. اندرو تتن‌باوم در کتاب سیستم‌عامل پیشرفته پس از صحبت در باره ی این که نمی‌توان تعریف جامع و دقیقی از سیستم‌عامل ارائه داد، بهترین تلاش خود را برای تعریف سیستم‌عامل به این صورت بیان می‌کند: سیستم‌عامل عبارت است از کرنل و هر نرم‌افزاری که مستقیماً با کرنل کار می‌کند، مثل کتاب‌خانه‌ها، فیرم‌ورها، کامپایلرها و ابزارهای توسعه. کرنل در این میان بخشی است که مستقیماً با سخت‌افزار صحبت کرده و وظیفهٔ اختصاص منابع را برعهده دارد. ولی خود کرنل همان‌گونه که در بالا اشاره شد انواع مختلفی دارد.


کرنل یکپارچه (Monilithic kernel)

این نوع کرنل که لینوکس نمونه بارز آن است، همان‌گونه که از نامش پیداست تماماً از یک قسمت تشکیل شده و اجزای آن قابل تمایز از یک‌دیگر نیستند. به عبارت دیگر راه‌اندازهای سخت‌افزاری، ارتباطات میان‌پردازشی مانند سیگنال‌ها و سوکت‌ها، سرویس‌دهندهٔ پرونده‌ها و… همگی در فضای کرنل قرار داشته و با دسترسی ابرکاربر انجام می‌شوند. در مثال، کرنل یک‌پارچه به مانند یک سیب‌زمینی است که قدرت انعطاف بالایی ندارد.


میکروکرنل (Microkernel)

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


کرنل پیوندی (Hybrid kernel)

این نوع کرنل که ویندوز NT نمونه آن است، ساختاری است که تلاش کرده ویژگی‌های کرنل یک‌پارچه و میکروکرنل را با هم ادغام کند. این، به خاطر شباهتش به مدل یک‌پارچه، بسیار بحث‌برانگیز است. ایده اصلی پشت این ساختار این بوده که از ساختاری مشابه میکروکرنل برخوردار باشد، ولی به صورت یک کرنل یک‌پارچه پیاده‌سازی شود. برخلاف میکروکرنل، تقریباً همه سرویس‌دهنده‌های سیستم‌عامل در فضای کرنل قرار دارند و هم‌چنین نمی‌توان در زمان اجرای سامانه، ماژول‌هایی را از کرنل پیوندی حذف یا به آن اضافه کرد. در عمل اغلب پیاده‌سازی‌های این گونه از کرنل از هردو گونهٔ پیشین ضعیف‌تر ظاهر شده‌اند.

Nikkhah81

پروژه هرد

همان‌گونه که گفته شد، این پروژه در اواسط دهه ۹۰ میلادی تقریباً متوقّف شد. ولی مجموعه‌ای از دلایل موجب شد که توسعه این پروژه از سال ۲۰۱۳ دوباره به صورت جدّی از سر گرفته شود. از جملهٔ این دلایل می‌توان به عدم مهاجرت لینوکس به آخرین نسخه از پروانهٔ انتشار GPL و هم‌چنین احساس قدیمی شدن ساختار کرنل یک‌پارچه برای قرن بیست و یکم اشاره کرد. خروجی این پروژه به صورت عمومی به گنو هرد شهرت دارد، ولی از نظر تکنیکی شامل میکروکرنل گنو-ماخ (GNU-MACH) و مجموعه‌ای از سرویس‌دهنده‌ها به نام هرد می‌شود که بر روی آن اجرا می‌شوند. به همین صورت سیستم‌عامل کاملی که به‌جای کرنل لینوکس از گنو-ماخ و هرد استفاده می‌کند با نام عمومی گنو/هرد شناخته می‌شود، هرچند اطلاق نام‌هایی مانند گنو/ماخ با سرویس‌دهنده‌های هرد و حتا گنو هم به آن محلّی از اشکال ندارد.
تاریخچه

در ابتدا قرار بود سیستم‌عامل گنو از کرنل تریکس (TRIX) که در MIT توسعه یافته بود استفاده کند و از این رو توسعه‌دهندگانش اقدام به اعمال تغییرات لازم بر این کرنل کرده بودند، ولی در سال ۱۹۸۶ بنیاد نرم‌افزار آزاد طی مذاکراتی با پروفسور رشید از دانشگاه کارنگی-ملون بر سر توسعه مشترک کرنل ماخ به توافق رسید. این کار به آن‌ها اجازه می‌داد به‌جای تلاش برای تغییر کرنل TRIX، کرنل را به گونه‌ای که خودشان می‌خواستند توسعه دهند. با توسعه و بلوغ نسبی کرنل ماخ در پایان دههٔ ۸۰، بنیاد نرم‌افزار آزاد از سال ۱۹۹۰ کار بر روی سرویس‌دهنده‌های هرد را بر روی میکروکرنل ماخ آغاز کرد.
وضعیت کنونی

به گفته تیم توسعه دبیان، گنو هرد برای ورودش به این توزیع در انتشار جسی بیش از ۸۰٪ آماده است. با توجّه به این که کرنل FreeBSD هنگام ورودش در انتشار ویزی دارای آمادگی ۸۵٪ بود، امید است به زودی شاهد توزیع گسترده و عمومی آن باشیم. این کرنل در حال حاضر به صورت غیر رسمی توسّط دو توزیع‌کنندهٔ بزرگ دبیان و آرچ قابل دریافت و استفاده است که در میان آن‌ها، توزیع دبیان از وضعیت بهتری برخوردار بوده و تا حد زیادی توانایی انجام کارهای عادی روزمره را دارد.
کاستی‌ها

گنو هرد با تمام خوبی‌هایش، نواقصی نیز دارد که ناشی از کمبود نیروی انسانی داوطلب برای توسعه آن است. برای مثال در حال حاضر هنوز نسخه ۶۴ بیتی از آن موجود نیست و نمی‌تواند با دیسک‌های ساتا کار کند. هم‌چنین راه‌اندازهای سخت‌افزاری آن محدود هستند و ممکن است با خیلی از دستگاه‌ها کار نکند. گرچه برای مثال سرویس‌دهنده‌های پایگاه وب گنو هم‌اکنون به وسیلهٔ گنو/هرد راه‌اندازی شده اند، ولی برای داشتن یک تجربه کاربری بدون مشکل با این سیستم‌عامل برای کارهای روزمره، بهترین روش استفاده از آن بر روی یک مجازی‌ساز مانند kvm است، زیرا که راه‌اندازهای مربوط به دستگاه‌های شبیه‌سازی شده رایج برای گنو هرد نوشته شده اند.
هرد و لینوکس

ریچارد استالمن رابطه بین هرد و لینوکس را این‌گونه شرح می‌دهد:

    بعضی‌وقت‌ها مردم می‌پرسند «چرا بنیاد نرم‌افزار آزاد به‌جای استفاده از لینوکس، یک کرنل آزاد جدید را توسعه داد؟» این پرسش معقولی است. پاسخ آن به صورت خلاصه این است که ما با این پرسش مواجه نبودیم.

    هنگامی که ما در ۱۹۹۰ شروع به توسعه هرد کردیم، پرسشی که با آن مواجه بودیم این بود که «چگونه می‌توانیم کرنلی آزاد برای سیستم‌عامل گنو داشته باشیم؟» در آن زمان هیچ کرنل شبه یونیکس آزادی وجود نداشت و ما هیچ تلاش دیگری را هم برای نوشتنش نمی‌شناختیم. تنها راهی که می‌توانستیم برای داشتن یک کرنل آزاد انتظار داشته باشیم این بود که خودمان بنویسیمش، پس شروع کردیم.

    ما پس از انتشار لینوکس دربارهٔ آن شنیدیم. در آن زمان پرسشی که دربرابر ما قرار داشت این بود که «آیا باید پروژه هرد را لغو کنیم و به‌جایش از لینوکس استفاده کنیم؟» ما شنیدیم که لینوکس به هیچ‌وجه قابل انتقال نیست (این گزاره شاید امروزه درست نباشد، ولی در آن زمان این‌گونه گفته می‌شد). هم‌چنین ما شنیدیم که لینوکس از نظر معماری معادل دقیق یونیکس است، در حالی که کار ما به چیزی بسیار پرقدرت‌تر می‌انجامید.

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

    اگر ما با این پرسشی که مردم می‌پرسند مواجه بودیم (یعنی لینوکس موجود بود و می‌خواستیم تصمیم بگیریم که کرنل دیگری بنویسیم یا نه)، این کار را نمی‌کردیم. به جای آن پروژهٔ دیگری را برای کار بر رویش انتخاب می‌کردیم؛ چیزی که کاری را انجام دهد که هیج نرم‌افزار آزاد موجودی نمی‌توانست.

    ولی ما هرد را قبل از آن شروع کردیم و اکنون نیز آن را به مرحله اجرایی رسانده‌ایم و امیدواریم که معماری برتر آن، سیستم‌عامل‌های آزاد را قدرتمندتر کند.

نصب گنو/هرد

برای استفاده از گنو/هرد، آسان‌ترین راه استفاده از یک تصویر از پیش نصب شده است. این تصویر را برای توزیع دبیان می‌توان از این‌جا دریافت کرد:

$ wget http://ftp.debian-ports.org/debian-cd/hurd-i386/current/debian-hurd.img.tar.gz

و با این دستور از حالت فشرده خارج کرد:

$ tar xzf debian-hurd.img.tar.gz

حال می‌توان آن را مستقیماً روی kvm اجرا کرد:

$ kvm -drive file=debian-hurd*.img,cache=writeback -m 1G

یا آن را تبدیل به دیسک virtualbox کرد تا از داخل این برنامه آن را مدیریت کرد:

$ VBoxManage convertfromraw debian-hurd.img debian-hurd.vdi --format vdi

حال می‌توان به صورت عادی از آن استفاده کرد.

اخبار مرتبط

دیگر اخبار نویسنده

ارسال نظر


شخصی سازی Close
شما در این صفحه قادر به شخصی سازی نمیباشید