تراشه های نهفته لینوکس: بازنگری

اخرین بروز رسانی توسط factronix

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

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

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

بسیاری از منابع اطلاعاتی موجود در این زمینه یا فرض را بر دانش بالای مخاطبان خود می‌گذارند و یا سریعا به سراغ کدهای منبع پیچیده، موضوعات تخصصی یا جزئیات جانبی دیگر می‌روند؛ اما لینوکس در بطن خود چیزی به جز یک نرم‌افزار کلاسیک، بسیار ساخت یافته و متشکل از قسمت‌های کاملا مجزا (modular) نیست.

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

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

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

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

ما هم در این سری از مقالات قصد داریم تقریبا به همان روش قدیمی عمل کنیم. سخت‌افزار ما یک برد فشرده شده شامل کلیه تجهیزات و قطعات مورد نیاز برای یک پروژه نهفته پیشرفته است (شکل 1): یک رابط USB، یک اتصال کارت SD و چندین نوع از قطعات توسعه‌ای. به‌علاوه، همان طور که در قسمت‌های بعد خواهیم دید، اتصال برد به شبکه اترنت نیز به آسانی امکان‌پذیر است.

این برد لینوکس براساس پروژه اپن‌سورس "Gnublin” طراحی شده که در ابتدا با اهداف آموزشی و در دانشگاه علوم کاربردی Augsburg ساخته شده است. روی ایــــــن برد هیچ قطعه تخصصی کار گذاشتـــه نشده است. برد مدار چاپی آن دارای دو لایه بوده و می‌توانید آن را از شرکــــت Elektor با قطعات نصب شده روی صفحه به صورت آماده تهیه نمایید (شکل 2).  برای تکمیل شدن بحث، دیاگرام مداری این برد را در شکل 3 آورده‌ایم که البته در قسمت دوم از این سری مقالات نگاهی دقیق‌تر به آن خواهیم انداخت.

 

 گام به گام

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

 

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

 

 زادگاه GNU و لینوکس

برای هر کسی که به طور جدی روی لینوکس کار می‌کند، ضروری است که از علت و چگونگی پیدایش نسخه رایگان GNU/Linux از یونیکس و سازمان یافتن آن آگاهی کافی داشته باشد. دانستن این مسائل کمک می‌کند تا مرزهای کاری سیستم‌عامل را بهتر بشناسیم و از آن مهم‌تر، درک کنیم که در صورت بروز هر مشکلی، کدام بخش نرم‌افزاری و سخت‌افزاری باعث به وجود آمدن آن مشکل شده است.

اولین پیشرفت‌های مهم در توسعه یونیکس از سال 1969 در آزمایشگاه Bell شروع شدند؛ جایی که اولین نسخه نرم‌افزار را کن تامسون درون اسمبلر نوشت. برای به دست آوردن ایده بهتری از نوع واسط‌ها و برنامه‌های راه‌انداز مورد نیاز برای این پروژه، او به همراه دنیس ریچی برنامه بازی کامپیوتری "سفر فضایی" را ساخت. از دید یک برنامه‌نویس میکروکنترلر، رویکردی که آن‌ها در پیش گرفته بودند تا حد زیادی قابل درک است: وقتی می‌خواهید یک سیستم نهفته را طراحی کنید، مهم این است که برای به حداکثر رساندن امکان استفاده مجدد از کدهای منبع، از ابتدا در مورد اینکه ساختار نرم‌افزار شما چگونه خواهد بود برنامه‌ریزی کاملی انجام دهید (که شامل در نظر گرفتن برنامه‌های راه‌انداز و توابع کاربردی مورد نیاز هم می‌شود). کن و دنیس به زودی فهمیدند که کدام قطعات به سیستم‌عامل تعلق دارند و کل اجزاء چطور باید سازمان‌دهی شوند. در فاصله سال‌های 1972 تا 1974، این دو نفر با شروع از نقطه صفر، هسته اصلی سیستم‌عامل را با استفاده از زبان برنامه‌نویسی C که خود آن هم مدتی پیش در آزمایشگاه‌های Bell ساخته شده بود، نوشتند. سپس این سیستم‌عامل به همراه یک تحلیل‌گر زبان C، به رایگان در اختیار دانشگاه‌های مختلف قرار گرفت.

در پایان دهه 1970، شرکت AT&T که پشتیبان اصلی آزمایشگاه‌های Bell بود، بالاخره متوجه شد که می‌تواند روی بازاریابی یونیکس و درآمد اقتصادی آن کار کند. تا آن زمان استفاده رایگان و تبادل آزادانه نرم‌افزارها امری عادی به شمار می‌رفت و هنوز کسی خبر از پدیده‌های امروزی مانند Pirating (استفاده غیرقانونی از نرم‌افزارها) و مسائلی مانند آن نداشت. در واقع نرم‌افزارها عمدتا با هدف توسعه ویژگی‌های اشتراکی آن‌ها توزیع می‌شدند. بقایای این حس درونی نسبت به یک نرم‌افزار و کاربران آن را هنوز هم می‌توانید در بطن جنبش نرم‌افزارهای رایگان اپن‌سورس مشاهده کنید.

پس از آنکه شرکت AT&T شروع به فروختن یونیکس کرد، امکان مبادله آزادانه آن به یک باره از بین رفت. در نتیجه، به خاطر قیمت بالای مجوز استفاده از یونیکس، به کار گرفتن آن در کلاس‌های دانشگاه یا به صورت خودآموز دیگر منطقی و مقرون به صرفه نبود. در این زمان، هر روز شرکت‌های بیشتری شروع به فروختن مجوزهایی برای نسخه‌های یونیکس اختصاصی خودشان کردند؛ مثلا نرم‌افزار SINIX شرکت زیمنس که ریشه آن به نسخه Xenix از سیستم‌عامل یونیکس مایکروسافت برمی‌گردد.

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

و به این ترتیب GNU (که متفاوت از یونیکس است) در 1983 متولد شد. حجم عظیمی از کارهای مختلف در برابر ریچارد استالمن قرار داشت: همه چیز باید از اول انجام می‌شد تا در نهایت یک سیستم‌عامل صددرصد رایگان به وجود می‌آمد. چیزهایی که او احتیاج داشت، از این قرار بودند:

 یک تحلیل‌گر اتصال دهنده و اسمبلر C (یک “زنجیره ابزار”)

 یک ویرایشگر متن برای نوشتن کدهای منبع

 یک هسته سیستم‌عامل (kernel)

 چندین برنامه خدمات عمومی (utility)

 یک سیستم ریشه فایل (root filesystem) برای سیستم‌عامل

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

 

 شروع لینوکس

تقریبا در همان وقت بود که یک دانشجوی فنلاندی به نام Linus Torvalds اولین کامپیوتر x86 خود را خرید و به عنوان تمرینی برای آشنایی بهتر با کامپیوتر شروع به نوشتن یک برنامه ترمینال ساده کرد. او برای این کار، Minix (یک نسخه پولی یونیکس که توسط یکی از اساتید دانشگاه آمستردام و تیم تحت نظر او ساخته شده و امروز هم هنوز مورد استفاده قرار می‌گیرد) را بر روی کامپیوترش نصب کرد. در حین کار بر روی برنامه ترمینال، Linus Torvalds متوجه شد که این برنامه هر روز بیشتر و بیشتر به یک سیستم‌عامل شباهت پیدا می‌کند؛ اما واضح بود که برای افزایش هر چه بیشتر سازگاری برنامه با گسترده‌ترین مجموعه از نرم‌افزارهای موجود در آن زمان، برنامه او باید منطبق با مقررات POSIX باشد. POSIX استانداردی است که مشخص می‌کند یک سیستم‌عامل یونیکس از بیرون باید چطور به نظر برسد. شاید این از خوش شانسی ما بوده باشد که در کتاب‌فروشی نزدیک خانه Torvalds Linus مدارک POSIX مربوط به این موضوع وجود داشت: احتمالا به شکل یک دفترچه راهنما برای کار با یکی از نسخه‌های مختلف یونیکس. نکته مهم اینجاست که او به قدر کافی در این مورد اطلاعات داشته که مثلا فراخوان‌های سیستم چطور نام‌گذاری شده و با چه آرگومان‌هایی مورد استفاده قرار می‌گرفتند.

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

GNU GPL (مجوز اپن‌سورس مورد استفاده در پروژه GNU) دقیقا همان چیزی بود که Linus Torvalds به دنبال آن بود. اما یک اتفاق پیش‌بینی نشده، این حلقه‌های زنجیر را به هم متصل کرد: انجمن نرم‌افزارهای اپن‌سورس خیلی زود تشخیص داد که هسته kernel نوشته شده توسط Linus Torvalds تنها عضو باقی مانده از پروژه GNU Richard Stallman است؛ دیگر مهم نبود که استالمن چندی پیش کار بر روی یک هسته GNU رایگان به نام  “Hurd”را شروع کرده است؛ اگرچه وجود این هسته هم به هیچ وجه از اهمیت کار Torvalds کم نمی‌کند.

حالا دیگر با کامل شدن پروژه GNU با کمک هسته لینوکس، برای نخستین بار یک سیستم‌عامل اپن‌سورس کامل و رایگان در دسترس همگان قرار گرفت.

البته اگر بخواهیم دقیق‌تر صحبت کنیم، بهتر است نام این سیستم‌عامل را GNU/Linux بگذاریم که در آن کلمه Linux مربوط به هسته سیستم و GNU مربوط به کلیه‌ قسمت‌های دیگر است که تحت عنوان پروژه GNU تولید شده‌اند.

 

دورنمای کامل‌تر

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

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

 

 ویرایشگر متن

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

برای اینکه به سرعت تغییرات کوچکی روی فایل‌های موجود برد لینوکس Elektor بدهیم، به یک ویرایشگر متن احتیاج داریم که بتوان از آن روی صفحه کاربری لینوکس استفاده کرد (شکل را ببینید).

ویرایشگرهای سنتی که مدت‌هاست مورد استفاده قرار می‌گیرند، مانند vi (یا در قالب کاربرپسندتر آن vim) و nano، به خوبی از پس این کار بر می‌آیند.

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

انتخاب دیگری که پیش روی شماست، استفاده از ویرایشگر مشهور Emacs است که احتمالا بعضی از شما سابقه کار با آن را دارید. ویرایشگر Emacs را ریچارد استالمن به عنوان بخشی از پروژه GNU طراحی و ساخته است.

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

 

 تحلیل‌گر + اتصال‌دهنده + اسمبلر = زنجیره ابزار

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

این سیستم مخصوصا به گونه‌ای طراحی شده که اضافه کردن یک سـری فرامین جدید یا چیزهای دیگر به آن کار ساده‌ای باشد و به همین دلیل نسخه‌های مختلفی از آن برای x86 ,AMD64 ,AVR ,ARM ,MIPS ,MSP430 و بسیاری پردازشگرهای دیگر نیز موجود است.

در طراحی برد یونیکس Elektor میکروکنترلر سازگار با ARM به کار رفته است؛ بنابراین ما هم از زنجیره ابزار مربوط به ARM استفاده می‌کنیم. اطلاعات بیشتر در این مورد را به زمان نصب آن موکول می‌کنیم.

 

 هسته (kernel)

هسته در قلب سیستم‌عامل قرار گرفته است. منشا این بخش نرم‌افزاری همان کدهای منبعی است که توسط Linus Torvalds نوشته شده با این تفاوت که از آن زمان تا به امروز چند ده هزار برنامه‌نویس دیگر هم بر روی کـــدهای این هسته کار کـــرده‌اند.

با این حال همیشه این Torvalds بوده که حرف آخر را در مورد پذیرفته شدن یا رد شدن یکسری تغییرات یا توسعه‌ها در ساختار هسته سیستم‌عامل زده است. البته هر برنامه‌نویسی که با نظر او مخالف باشد، آزاد است که نسخه جدیدی از هسته را با نام خود تولید کند؛ چراکه همه چیز کاملا اپن‌سورس بوده و در اختیار همگان قرار دارد. با وجود این تا به حال هیچ انشعاب مهم و قابل توجهی در کدهای هسته لینوکس پدید نیامده است.

توسعه نرم‌افزار با استفاده از لیست‌های پستی (mailinglists) سازمان‌دهی می‌شود و هر کسی می‌تواند به این لیست‌ها وارد شده و پیشنهادهای خود را ارائه دهد؛ سپس هر کدام از این پیشنهادها توسط دیگران مورد آزمایش و بحث قرار می‌گیرد.

به جز چند خط از کدهای برنامه، تمام هسته به زبان C نوشته شده است و می‌توان با کمک زنجیره ابزار GNU به راحتی آن را از زبان C به زمان ماشین تبدیل کرد. در ادامه این مقاله چگونگی این کار را با هم خواهیم دید.

 

 سیستم فایل

 همان طور که می‌دانید، در سیستم‌عامل ویندوز به وضوح مشخص است که فایل‌های کاربران به دایرکتوری Documents and Settings رفته، برنامه‌ها در مسیر C:\ProgramFiles نصب شده و فایل‌های سیستـــم‌عامل سطح پایین‌تر نیز در دایرکتوری System32 در مسیر C:\Windows نگهداری می‌شوند.

مانند هر سیستم‌عامل دیگری، ویندوز هم یک ساختار مخصوص به خود برای سازمان‌دهی صدها برنامه و فایل‌های اطلاعاتی دارد؛ پس منطقی است که بپرسیم برای سیستم‌های نهفته GNU/Linux این ساختار سازمانی چگونه است. طراحی این بخش از سیستم‌عامل دیگر به Linus Torvalds یا ریچارد استالمن برنمی‌گردد و می‌توان گفت که اساس مشترک همه سیستم‌ فایل‌های لینوکس و یونیکس، همین اواخر و تحت پوشش استاندارد POSIX طراحی و ساخته شده‌اند.

چیــــزی که آن را به عنوان ساختار سیستم فایل ریشه یا root filesystem structure می‌شنــــاسیم، به وسیله توزیع‌های شناخته‌ شده‌ای مانند Debian,SUSE و مانند این‌ها توسعه یافته است. هر کدام از این توزیع‌ها یک سیستم GNU/Linux کامل را در اختیار کاربر قرار می‌دهند که در آن، برنامـــه‌ها از قبل نصب شده و یک رابط کاربری گرافیکی و یک هسته سیستم‌عامل به روز شده نیز در کنار برنامه‌ها فراهم شده است.

با این حساب برای استفاده از لینوکس روی برد پروژه خودمان باید یک سیستم فایل نیز درست کنیم؛ اما برای پروژه ما یک نسخه رومیزی یونیکس با امکانات کامل زیادی سنگین و حجیم خواهد بود؛ بنابراین به جای آن از یک نسخه ساده شده از سیستم فایل با تعداد نسبتا کمی از برنامه‌ها و کتابخانه‌های مورد نیاز استفاده می‌کنیم.

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

 

 کتابخانه استاندارد C

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

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

 

کنسول سریال و پوسته

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

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

وقتی لینوکس روی یک کامپیوتر رومیزی شروع به بالا آمدن می‌کند، مانیتور و صفحه‌کلید، همان کنسول‌های ریشه قدیمی و شناخته شده سیستم خواهند بود (معمــولا می‌توانید با فشردن کلیدهای Control-shift-F1 از روی رابط گرافیکی کاربر به این کنسول تغییر حالت دهید).

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

اما انتخاب سومی هم وجود دارد که دسترسی به کنسول از طریق رابط RS-232 است. می‌توانید از یک کامپیوتر شخصی با یک پورت سریال در طرف دیگر این خط ارتباطی استفاده کنید که البته لازم است بر روی آن یک برنامه شبیه‌ساز ترمینال مانند HyperTerminal یا TeraTerm (برای ویندوز) و یا picocom (برای لینوکس) در حال اجرا باشد.