ورود به دنیای گنو/لینوکس/آشنایی با مفاهیم اولیه در گنو/لینوکس

ویکی‎کتاب، کتابخانهٔ آزاد

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

هستهٔ لینوکس[ویرایش]

هستهٔ لینوکس بخش مرکزی تشکیل دهنده سیستم عامل گنو/لینوکس است. بخشی که به طور مستقیم با سخت افزار سیستم شما در ارتباط بوده و امکان استفاده از قابلیت‌های سخت افزار را برای کاربر فراهم می‌کند. هسته لینوکس نخستین بار توسط لینوس توروالدز دانشجوی فنلاندی در سال ۱۹۹۱ منتشر شد و همچنان توسط برنامه نویسان بسیاری و البته در راس آنها توروالدز با سرعت توسعه میابد.

ابزارهای گنو[ویرایش]

ابزارهای ایجاد شده توسط پروژه گنو هستند که با ترکیب هسته لینوکس تشکیل یک سیستم عامل کامل موسوم به گنو/لینوکس را می‌دهند. برخی از این ابزارها عبارتند از کتابخانهٔ زبان C، مجموعه کامپایلرهای GCC، ویرایشگر متن، پوسته فرمان یا مفسر خط فرمان، رابط کاربری و... این ابزارها توسط پروژه گنو که در سال ۱۹۸۳ توسط ریچارد استالمن آغازشد، و همچنان نیز با قدرت توسعه پیدا می‌کنند.

پوسته فرمان[ویرایش]

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

محیط X[ویرایش]

محیط X یا X Window ایجاد کننده زیرساخت‌های لازم برای برنامه‌های با رابط کاربری گرافیکی و میزکارهای مختلف است. مثلا این X است که نحوه کشیدن پنجره‌ها برروی صفحه نمایش و یا عملیات ماوس را بر روی پنجره‌ها در سطوح پایین کنترل می‌کند. با استفاده از امکانات X است که میزکارهای مختلف مانند GNOME و KDE می‌توانند کار کنند. X برای نخستین بار در سال ۱۹۸۴ در دانشگاه MIT ایجاد شد. توزیع‌های جدید گنو/لینوکس از سیستم X.Org که نواده سیستم X اولیه‌است استفاده می‌کنند.

میزکارهای گرافیکی[ویرایش]

همانطور که اشاره شد، میزکارهای گرافیکی رابط‌های کاربری هستند که از آن برای تعامل گرافیکی با سیستم استفاده می‌شود. تعداد زیادی میزکار گرافیکی برای گنو/لینوکس وجود دارد که مهمترین آنها عبارتند از GNOME، KDE، xFCE و IceWM.

ساختار فایل سیستم[ویرایش]

سیستم فایل هر کامپیوتر، امکان ذخیره سازی فایل‌ها و اطلاعات را روی آن فراهم می‌سازد. می‌توان گفت تا قبل از اینکه سیستم عامل، سیستم فایل را روی هر نوع ابزار ذخیره سازی مانند فلاپی دیسک‌ها، دیسک‌های سخت، درایوهای CD-ROM، درایوهای Zip و ... تشکیل ندهد آن ابزار قابل استفاده نیست. و یا به طور مثال وقتی می‌خواهید فایل یا سندی را بر روی سیستم ذخیره کنید این سیستم فایل است که تعیین می‌کند آن فایل کجا و چگونه ذخیره شود... بر خلاف مایکروسافت ویندوز که تنها از دو نوع فایل سیستم NTFS , FAT پشتیبانی می‌کند، سیستم‌فایل‌های گوناگونی برای سیستم عامل‌های مبتنی بر یونیکس و گنو/لینوکس ارائه شده‌اند که برخی از آنها عبارتند ext4 ،ext3 ،ext2 ،jfs ،xfs ،ReiserFS و... این سیستم فایل‌ها در جزئیات فنی دارای تفاوت‌هایی با هم هستند ولی از نظر ساختاری که‌ایجاد می‌کنند مشابه بوده و تفاوت چندانی باهم ندارند. در دنیای یونیکس و گنو/لینوکس، ساختار پیاده‌سازی سیستم فایل همانند یک درخت وارونه دارای شاخه‌های گوناگون است. مفهوم درایوهایی مانند C، D که در سیستم عامل‌هایی مانند داس و ویندوز با آنها برخورد داشته‌اید، دراینجا کاملاً بی‌معنی هستند. تمامی پارتیشن‌ها در محل‌هایی در زیر شاخه‌هایی درخت متصل (Mount) می‌شوند. در بالاترین بخش این درخت ریشه یا / قرار دارد و شاخه‌های بعدی در زیر ریشه ایجاد شده‌اند. اکنون به برسی برخی از دایرکتوری و یا شاخه‌های مهم در گنو/لینوکس می‌پردازیم، لازم به ذکر است هر یک از شاخه‌ها می‌توانند در صورت نیاز در پارتیشن‌های جداگانه‌ای متصل شوند.

‎/bin
در این شاخه، دستورات سیستم عامل که برای تمام کاربران قابل دستیابی هستند قرار می‌گیرند.
‎/boot
این شاخه که می‌تواند در یک پارتیشن جداگانه قرار گرفته و به پوشهٔ boot متصل شده شود، حاوی برنامه راه انداز بوت سیستم‌عامل و فایل‌های پیکربندی مدیر بوت است. دو مدیر بوت محبوب در گنو/لینوکس گراب و لیلو نام دارند که مدیر بوت پیش فرض در دبیان گراب است. مدیر بوت غالباً در ابتدایی ترین قسمت دیسک سخت، یعنی سکتور صفرم می‌نشیند و عملکرد آن بر خلاف مدیر بوت مایکروسافت ویندوز بدین شکل است که به صورت کاملاً هوشمندانه تمامی سیستم عامل‌های نصب شده بر روی سیستم را شناسایی می‌کند و با انتخاب یکی از آنها فایل‌های راه انداز آن سیستم‌عامل را یافته و سیستم را بارگذاری می‌کند.
‎/dev
محل قرارگیری فایل‌های دسترسی ابزارهای سخت افزاری است. هر وسیله (Device) سیستم، تمام پورت‌ها، پارتیشن‌ها، سخت‌افزارها و... در اینجا دارای حداقل یک فایل هستند. برای مثال فایل ‎/dev/fd نشان دهنده فلاپی درایو سیستم است. بسیاری از برنامه‌های کاربردی و حتی خود کاربر نیز می‌توانند از این فایل‌های دسترسی برای خواندن و نوشتن داده‌ها بر روی ابزار مورد نظرشان استفاده کنند. مثلاً یک برنامه کاربردی فایل ‎/dev/cdrom را باز کرده و در آن می‌نویسد، در حقیقت اطلاعات روی دیسکی که درون درایو قرار دارد، نوشته خواهد شد و ‎/dev/cdrom تنها یک فایل دسترسی است که می‌تواند در یک دایرکتوری و یا نقطه اتصال، متصل شود. لازم به ذکر است که همه چیز در دنیای گنو/لینوکس یک فایل است و به همه متعلقات سیستم اعم از سرویس‌های سیستمی، سخت افزارها، درگاه‌ها، سرویس‌های مختص سرویس دهنده، فایل‌های پیکربندی... به دید یک فایل نگاه می‌شود و این استراتژی لینوکسی کاربر را قادر می‌سازد تا در بدترین شرایط تنها با یک ویرایشگر ساده متن، گنو/لینوکس خود را تعمیر و یا تنظیم کند. البته نهراسید تمامی این امور در محیط گرافیکی نیز قابل انجام است.
‎/etc
در این شاخه فایلهای پیکربندی سرویس دهنده، برنامه‌های نصب شده برروی سیستم و برخی فایلهای سیستمی دیگر قرارمی‌گیرند. به طور مثال فایل پیکربندی سرویس دهنده وب آپاچی در سیستمهای مبتنی بر دبیان در ‎/etc/apache/http.conf قرار دارد.
‎/home
در این شاخه دایرکتوری‌های خانگی کاربران سیستم و اطلاعات آنها قرار می‌گیرد، یعنی به ازای هر کاربر یک داریکتوری به نام کاربر در این شاخه ساخته می‌شود که می‌تواند اطلاعات خود را در آنجا نگهداری کند. با تنطیم ساختار مجوزهای دسترسی تنها خود کاربر است که به این دایرکتوری و محتویات آن دسترسی دارد و دیگر کاربران مجاز به دسترسی نخواهند بود. بهتر است این شاخه در یک پارتیشن جداگانه قرار گرفته و متصل شود زیرا این کار حفاظت از داده‌های کاربران را بالاتر خواهد برد و ضمنا در صورت نیاز به فرمت و نصب مجدد سیستم، اطلاعات کاربران و تنظیمات شخصی آنها دست نخورده باقی خواهند ماندو پس از نصب مجدد، اطلاعات آن‌ها بدون هیچ گونه تغیری قابل دسترس است.
‎/lib
این شاخه همانطور که از نام آن نیز پیداست، محل قرارگیری فایلهای کتابخانه‌ای برنامه‌ها است. این کتابخانه‌ها توسط برنامه‌های کاربردی و ابزارهای برنامه نویسی به کار گرفته می‌شوند.
‎/mnt
این شاخه محل اتصال سنتی و موقتی دستگاه‌هایی مانند Flash Memory ،Camera ،CD-ROM ... است که کاربر موقتاً می‌خواهد آن را به سیستم فایل متصل کند، همچنین پارتیشن‌های دیسک سخت و اشتراکات شبکه را نیز می‌توانید در این شاخه متصل نمایید. البته برای استفاده از این دستگاه‌ها و مسیرها نیازی به انجام این مراحل نیست زیرا گنو/لینوکس در هربار بارگذاری با اجرای دستور mount -a به صورت خودکار تمامی این وسیله‌ها را در نقاط مشخص متصل می‌کند. کاربرد این شاخه همانطور که گفته شد برای زمانی است که کاربر نیاز به محلی برای اتصال موقت وسیله‌ای داشته باشد.
‎/media
این شاخه مسیر پیش فرض اتصال برخی از دستگاه‌ها مانند Flash Memory ،Camera ... است که گنو/لینوکس به صورت خودکار آنها را متصل می‌کند. البته در توزیع‌های مختلف کمی تفاوت در این موارد یافت می‌شود، برای حل اینگونه تفاوت‌ها استانداردی با نام FHS تدوین و منتشر شد تا شرکت‌های سازنده توزیع‌های مختلف گنو/لینوکس با رعایت این نکات همگام شوند. این استاندارد باعث می‌شود وطیفه و کاربرد هر شاخه مشخص و واضح شود، نرم افزارها راحت تر مسیر فایل‌های مهم و مورد نیاز خود را بیابند و... توزیع دبیان کاملا با این استاندارد منطبق و همسو است. به طور مثال در سیستم‌های مبتنی بر دبیان بنا به استاندارد، درایوهای Floppy و CD-ROM در شاخه‌های Floppy و CD-Rom که در زیر ریشه قرار دارند، متصل می‌شوند. اتصال و برداشتن اتصال پارتیشن‌ها و درایوها با استفاده از دستور mount صورت می‌گیرد که در بخش‌های آتی آن را فرا خواهید گرفت.
‎/proc
این شاخه یک سیستم فایل مجازی است که برخی اطلاعات مربوط به سیستم و هسته از آن قابل دستیابی است. مثلاً فایل version در این شاخهٔ حاوی اطلاعاتی مانند نام توزیع و مشخصات هسته سیستم عامل مانند نسخهٔ آن و ... است.
‎/sbin
دستورات و برنامه‌های مدیریتی سیستم در این شاخه قرار می‌گیرند و مخصوص کاربر یا کاربر ریشهٔ Super User) roo) است. یعنی فقط کاربر ریشه به این دستورات دسترسی دارد. مفاهیم کاربر ریشه و سطح دسترسی آن به سیستم در ادامه مفصلاً برسی خواهد شد.
‎/tmp
محل قرارگیری برخی فایلهای موقتی برنامه‌های کاربردی است.
‎/usr
بسیاری از برنامه‌های کاربردی در این شاخه نصب می‌شوند، همچنین برخی دستورات و برنامه‌های مدیریتی نیز در مسیرهای ‎/usr/bin و ‎/usr/sbin قرار می‌گیرند.
‎/var
این شاخه که معمولا در کامپیوترهای سرویس دهنده در یک پارتیشن جداگانه قرار میگیرد، مخصوص برنامه سرویس دهنده‌هایی مانند وب، ،Telnet،FTP بانکهای اطلاعاتی و... است. به طور مثال فایلهای مربوط به یک وب سایت در ‎/var/www قرار می‌گیرند. به دلیل این که در برخی از حملات DOS دیسک سخت سیستم با فایلهای اضافه پر می‌شود، این شاخه را در یک پارتیشن جداگانه قرار می‌دهند که در صورت حمله و پرشدن احتمالی دیسک سخت، کل سیستم عامل دچار وقفه نگردد و آسیب به همان قسمت محدود شود. همانطور که بالاتر نیز ذکر شد تمامی شاخه‌هایی که توضیح داده شد می‌توانند در پارتیشنهای جداگانه قرار داده شوند، اما این امر الزامی نیست.

پارتیشن‌ها[ویرایش]

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

روند نام گذاری بدین شکل است که دیسک‌های سخت SATA با نام sd و IDE نیز با نام hd نام گذاری و شناخته می‌شود، اولین دیسک سخت شناخته شده با پسوند a، دومین دیسک با پسوند b و دیگر دیسک‌ها به همین ترتیب با حروف انگلیسی شناخته می‌شوند. پارتیشن‌های هر دیسک نیز با ترتیب عددی شناخته می‌شود که فایل‌های دسترسی آن در شاخه dev قرار می‌گیرد. به طور مثال sda1 یعنی پارتیشن اول از دیسک اول که از نوع SATA است و به همین شکل sdb3یعنی پارتیشن سوم از دیسک دوم... این روند به همین شکل با نام hd برای دیسک‌های IDE است. با خروجی دستور mount می‌توان از پارتیشن‌های متصل به سیستم، نوع فایل سیستم آن، محل اتصال آن و... اطلاع حاصل نمود.

پارتیشن swap[ویرایش]

در روند نصب گنو/لینوکس، پارتیشنی به نام swap ساخته می‌شود. این پارتیشن که جایی متصل نمیشود، به نوعی حافطه مجازی سیستم است یعنی فایل سیستم آن فضایی شبیه به فضای سلول‌های RAM را پیاده سازی می‌کند و هنگامی که گنو/لینوکس با کمبود حافظه مواجه شود و نیاز به تخصیص حافظه بیشتر برای برنامه‌های کاربردی وجود داشته باشد، از فضای swap می‌تواند بعنوان حافظه مجازی استفاده کند... پیشنهاد می‌شود حجم آنرا برابر یا دو برابر حافظه سیستم خود تعیین نمایید. به طور مثال یکی از کاربردهای swap در Hibernation است، در مایکروسافت ویندوز از این فناوری با عنوان Virtual memory نام برده می‌شود.

مفاهیم مجوزهای دسترسی[ویرایش]

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

فایل‌های پیکربندی[ویرایش]

همانطور که میدانید یکی از مزیت‌های سیستم عامل گنو/لینوکس و سیستم عامل‌های خانواده یونیکس در این است که تنظیمات برنامه‌های کاربردی و سرویس دهنده‌های مختلف در فایلهای متنی ساده ذخیره می‌شوند. به این فایل‌های متنی ساده فایلهای پیکربندی (Configuration Files) اطلاق می‌گردد. بنابراین در هر شرایطی با یک ویرایشگر متنی ساده نیز می‌توان اشکالت ایجاد شده در تنظیمات را برطرف کرد و یا تنظیمات جدید را به سرعت و سادگی اضافه نمود. برای کاربران حرفه‌ای انجام برخی از تنظیمات بر روی فایل‌های پیکربندی ساده تر و سریعتر از استفاده از ابزارهای مدیریتی گرافیکی است.

کتابخانه (Library)[ویرایش]

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