اصول فلسفی سیستم پنجره ایکس

در کامپیوتر، سیستم پنجره ایکس (که معمولا X11 یا X هم خوانده می‌شود)، سیستمی است، محصول پیاده سازی X که امکان نمایش پنجره‌ها روی صفحات نمایش را فراهم می‌کند. این سیستم ابزار و پروتکل‌های استاندارد برای ساختن رابط گرافیکی کاربر در سیستم‌های مشابه یونیکس و OpenVMS را فراهم می‌کند و در عین حال امروزه در بسیاری از سیستم عاملهای مدرن نیز شبیه سازی شده است.

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

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

پروژه ایکس اولین بار در دانشگاه ماساچوست و در سال ۱۹۸۴ شروع شد. نسخه فعلی (یعنی X11) در ۱۹۸۷ ظاهر شد و در حال حاضر به عنوان یک نرم‌افزار ازاد در حال توسعه است.

اصول اولیه طراحی ایکس

در ۱۹۸۴، باب شیفلر و جیم گتیس اصول اولیه ایکس را به این صورت تدوین کرند:

 هیچ قابلیت جدیدی اضافه نکنید مگر اینکه برنامه‌نویسی بدون آن قابلیت نتواند برنامه واقعی‌اش را تمام کند.

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

 تنها چیزی که از تعمیم دادن بر مبنای یک مثال بدتر است، تعمیم دادن بدون وجود حتی یک مثال است.

 اگر مشکل کاملا درک نشده باشد، بهترین کار این است که هیچ جوابی داده نشود.

 اگر می‌توانید ۹۰٪ خواسته‌ها را با ۱۰ درصد کار جواب دهید، از راه حل ساده تر استفاده کنید.

 تا جایی که ممکن است، پیچیدگی را ایزوله کنید.

 به جای خط مشی، مکانیزم ارائه دهید. به طور عام، خط مشی رابط کاربری را به کلاینت‌ها بسپارید.

در طول توسعه ایکس.۱۱، قانون اول به این شکل تغییر کرد: «هیچ قابلیت جدیدی اضافه نکنید مگر اینکه برنامه‌ای واقعی را بشناسید که به آن نیاز داشته باشد.»


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

فلسفه یونیکس

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

در این پست می خواهم به شکل خلاصه، درباره فلسفه یونیکس بنویسم. این فلسفه خلاصه ای است از صفحه ویکیپدیای Unix Philosophy. این مبانی نظری (فلسفه ها) نتایجی هستند که افراد درگیر این صنعت در پی سال ها تجربه نهفته پشت سر سیستم های مبتنی بر یونیکس (پوزیکس ها) به آن رسیده اند.

مکلوری: ربع قرن یونیکس

مک لوری که مبدع Unix Pipes و یکی از پایه گذاران یونیکس است فلسفه این سیستم عامل را به شکل زیر خلاصه کره:

  • برنامه هایی بنویسید که فقط یک کار انجام دهند اما به نحو احسن
  • برنامه هایی بنویسید که بتوانند با هم کار کنند
  • برنامه هایی بنویسید که با متن کار کنند چرا که متن رابطی عام است

مایک گانکارز: فلسفه یونیکس

مایک گانکارز در سال ۱۹۹۴ با مشاوره دیگر فعالان دنیای یونیکس قواعد زیر را ابداع کرد. او یکی از طراحان سیستم پنجره X است.

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

اریک ریموند: هنر برنامه نویسی یونیکس

ریموند با پایبندی به قاعده KISS یا Keep It Simple, Stupid قواعد زیر را برای برنامه نویسی یونیکس پیشنهاد می کند:

  • ماجولار بودن: بخش های کوچکی بنویسید که با رابط های تمیزی به هم وصلند.
  • وضوح: وضوح بهتر از هوشمندی است.
  • اتصال: برنامه هایی طراحی کنید که بتوانند به دیگر برنامه ها متصل شوند.
  • جدایی: سیاست را از مکانیزم جدا کنید، رابط باید از هسته اصلی جدا باشد.
  • سادگی: برای سادگی طراحی کنید، فقط وقتی مجبورید پیچیدگی اضافه کنید.
  • امساک: فقط وقتی برنامه‌ای بزرگ بنویسید که ثابت شده باشد هیچ برنامه دیگری فایده ندارد.
  • شفافیت: برای راحتی خواندن طراحی کنید تا بررسی و باگ زدایی ساده تر شود.
  • استحکام: استحکام فرزند شفافیت و سادگی است.
  • ارائه: Fold knowledge into data so program logic can be stupid and robust
  • حداقل سورپریز: در طراحی رابط، امور غیرمعمول را به حداقل برسانید.
  • سکوت: وقتی برنامه چیز عجیبی برای گفتن ندارد، بهتر است چیزی نگوید.
  • تعمیر: وقت شکست اجتناب ناپذیر است، زود و پر سر و صدا برنامه را بشکنید.
  • اقتصاد: وقت برنامه ارزشمند است، آن را مهمتر از زمان ماشین بدانید.
  • استمرار نسل: با دست هک نکنید، برنامه هایی بنویسید که برنامه هایی بنویسند.
  • بهینه سازی: قبل از ظریف کاری، یک نمونه عملی بسازید. قبل از بهینه سازی، برنامه باید درست کار کند.
  • تنوع: هر ادعایی مبنی بر «یک راه حقیقی» را با شک و تردید بنگرید.
  • ارتقاء پذیری: برای اینده طراحی کنید چرا که آینده زودتر از آنی که فکر می کنید فرا خواهد رسید.

موخره

نمی توانم آخر هر مطلب مرتبط با لینوکس و یونیکس نپرسم که «زیبا نیست؟» (: فقط قدرت و امنیت لینوکس نیست که باعث شده پیشرفت کند، این فلسفه پشت آزادی نرم افزار است که بهترین های دنیا را دور آن جمع کرده (:

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

یکی دیگه از دلایلی که من از گنو/لینوکس لذت می برم، کمک کردن به دیگران است. توی دنیای گنو، توانایی کمک به همسایه یک ضرب المثل است به معنی اینکه اگر همسایه ای برنامه مورد استفاده شما رو لازم داشت، می تونید بدون مشکل برنامه رو بهش بدهید.

اما برای من کمک به همسایه یک معنای جدید هم پیدا کرده: وقتی دوستان گیر می کنند می دونند که مشورت با یک لینوکس کار ممکنه راه حلی جلوی پاشون بذاره.

یک نمونه اش دوست خیلی خوبی بود که امروز با یک فایل هشتصد هزار خطی و ۴۵ مگابایتی درگیر بود. هر خط این فایل ۹ ستون داشت که با TAB از هم جدا می شدند و مشکل اصلی هم این بود که قرار بود بر اساس ستون نهم، فایل مرتب (سورت) بشه.

اولین تلاش در ویندوز، اکسل است و به شکل بامزه ای کشف می شود که بیشتر از ۶۵۵۳۶ خط را نمی تواند باز کند. به عبارتی برای به درد بخور بودن، بقیه از بقیه مسایل باید دوازده برابر ظرفیت بیشتری پیدا کند که محال است (:

انتخاب بعدی اکسس است که فایل را باز می کند ولی کار مفیدی روی آن نمی کند. در نهایت باید به همسایه ها کمک کرد. فایل را کپی می کنم (از مکالمه مربوط به احتمال ویروسی شدن کامپیوترم از طریق یو اس بی دیسک آلوده می گذرم) و در یک خط می نویسم:

sort -n -k 9 GPRS_ATTACH_FAIL_PROT_ERROR.txt > gprs_sorted.txt

مثل همیشه زیبا و ساده. فلسفه یونیکس این است: یک کار را انجام بده و به خوبی + امکان این را فراهم کن که کارها به هم بچسبند.

دستور sort فایل را مرتب می کند. k 9 می گوید که بر اساس ستون نهم مرتب کند و n هم اعلام می کند که به ستون ها به عنوان عدد نگاه کند. در نهایت با یک علامت بزرگتر، خروجی در فایل جدید ریخته شده است.


زیبا نیست ؟ (: همانطور که می بینید جلوی دستور یک time هم اضافه کرده ام تا دقیقا بگوید که چقدر طول کشیده. زیر نیم ثانیه از زمان سی پی یو برای اینکار مصرف شده و از نظر من هم کمتر از نیم دقیقه. دقت کنید که هشتصد هزار خط داشتیم که باید بر اساس ستون نهم مرتب می شدند. من خوشحالم که با یک ابزار خوب، در کمتر از نیم دقیقه به همسایه ام کمکی کرده ام که در غیر اینصورت ممکن بود سبب یک سردرد حسابی شود.


به روز رسانی:

الان یکی از دوستان خوب به اسم علی برام یک ایمیل فرستاد با اسکرین شات آفیس ۲۰۰۷ که می تونه تا یک میلیون و چهل و هشت هزار خط داشته باشه. احتمالا دلیلی که همسایه ام هنوز روی نسخه قدیمی ایستاده، ناسازگاری آفیس ۲۰۰۸ با نسخه های قدیمی تر است ولی به هرحال خیلی خوشحالم که این محدودیت تا حد زیادی برطرف شده. حیف که فایل بزرگه وگرنه لذت بخش بود فرستادن اون هشتصد هزار خط برای علی و دیدن اینکه آفیس چجوری / در چه مدتی مرتبش می کنه (:

ممنون علی (:

آشنایی با استاندارد پوزیکس

پوزیکس یا همان POSIX (که حداقل در ایران پوسیکس هم خوانده می شود) مخفف عبارت Portable Operating System Interface است و به مجموعه از استانداردهای IEEE گفته می شود که برای نوشتن برنامه های سازگار با یونیکس به کار می روند. البته این استاندارد را می توان در مورد هر سیستم عامل دیگری هم بکار گرفت. استاندارد اولیه پوزیکس، IEEE Std 1003.1-1988 بود که مجموعه به روز شده آن این روزها ISO/IEC 9945 خوانده می شود. وازه پوزیکس پیشنهاد بنیانگذار نرم افزار آزاد، ریچارد استالمن بود.

این استاندارد شامل ۱۷ سند جداگانه است که استانداردهای خط فرمان، رابط اسکریپت نویسی، برنامه‌های سطح کاربر، سرویس های و ابزارهایی مثل awk و echo و ed را به همراه ورودی خروجی های استاندارد (فایل، ترمینال، شبکه) و threadها و غیره را تعریف کرده است.

اسناد پوزیکس در حال در سه بخش تقسیم شده اند:

 APIهای کرنل

 دستورات و ابزارها

 تست‌های مربوط به بررسی تطابق با پوزیکس

برخی از سیستم‌هال عامل‌های کاملا سازگار با پوزیکس عبارت هستند از BSD/OS، HP-UX، Mac OS X، MINIX و سولاریس و OpenSolaris. لازم به ذکر است که سیستم عامل های FreeBSD، لینوکس، NetBSD، OpenBSD از جمله سیستم عامل هایی هستند که تا حد زیادی سازگاری با پوزیکس را حفظ کرده اند.

جالب است در انتها این را هم ذکر کنیم که طراحی خوب و کارای پوسیکس باعث شده تا سیستم‌ عامل‌های دیگر هم از طریق لایه‌های مترجم و ابزارهای تطبیق دهنده، به سمت سازگاری با پوزیکس حرکت کنند. از جمله این سیستم‌عامل‌ها می توان به سیمبین ۹، ویندوز NT و XP (پروفشینال با سرویس پک یک به بعد)، ویندوز سرور ۲۰۰۳ و ویندوز ویستا اشاره کرد.

مرتبط:

 مقاله انگلیسی ویکی پدیا که این نوشته ترجمه آزادی از آن است POSIX

 استاندارد پوزیکس

لینوکس هم ویروس دارد

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

اون مطلب کامنت های فراوانی داشت که مستقل از حواشی، دو نکته رو یادآوری می کردند:

لینوکس هم ویروس دارد (از جمله فهرست ۲۱ تایی ویروس های دنیای لینوکس که در صفحه بدافزارهای لینوکس در ویکیپدیا)

هیچ نرم افزاری کامل نیست و نباید در مورد هیچ نرم افزاری ( و از اون بالاتر هیچ چیزی) تعصب داشت.

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

اما گزاره اول. گزاره اول هم درست است. در دنیای لینوکس چیزی



به این فکر کنید که در یک اداره رییس زیر یک برگه کاغذ یکی از پرونده ها
بنویسد: «یک کاغذ اتفاقی از یک پرونده بیرون بیاورید و زیرش این جمله را

بنویسید و بدهید رییس امضا کند» و آن را امضا کند.

حدود بیست سی تا ویروس شناخته شده و مشهور وجود دارد. یعنی حداقل بیست یا سی بار تلاش شده ویروس لینوکسی تولید شود ولی هنوز هم می بینیم که هیچ کس نگران ویروس ها نیست. چرا؟

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

این تعریف از ویروس به هر چیزی قابل اعمال است و بسیار بسیار راحت قابل پیاده سازی. اما برداشت من از «ویروس» در آن مقاله ویروس به شکل عملی بود: خطری که هر بار کول دیسک را به کامپیوتر ویندوزی می زنیم ما را تهدید می کند. ترسی که از بازکردن هر فایل مشکوک داریم. نگرانی ای که با رفتن به سایت های مشکوک، تشدید می شود. دلهره ای که پیدا می کنیم وقتی می بینیم error های کامپیوتر در حال بیشتر و بیشتر شدن است و سرعتش در حال کمتر و کمتر شدن. در این مفهوم عملی از ویروس، تکرار می کن که لینوکس ویروس ندارد. اما چرا؟

بحث اول که در بالا هم به آن اشاره شد، آپدیت های دائمی نرم افزار است. ویندوز XP هنوز هم که هنوز است مشکل دریافت اسپم روی پورت ۹۳۵ (اگر درست بگویم) را دارد و هنوز هم که هنوز است ویروس هایی با تکنیک New Folder.exe به آن حمله می کنند ولی ویروسی مثل staog بیشتر از چند ساعت هم دوام نمی آورند و در بدترین حالت بعد از یکی دو روز که از مشاهده اولین نمونه بگذرد، سیستم اصلاح می شود. این به این معنا نیست که سیستم باگ ندارد بلکه به این معنا است که باگ ها بسیار سریع اصلا حمی شوند و افتخار بهترین هکرهای جهان هم می شود اصلاح کردن یک باگ در کرنل و نه نوشتن یک ویروس برای سوء استفاده از یک ضعف و نمایش قدرت به شرکت بزرگی مثل مایکروسافت.

نکته بعدی که به نظر من مهم تر هم هست، این است که در لینوکس چیزی به اسم «گرفتن برنامه از این و آن» نداریم. ویروس چطور به کامپیوتر ویندوزی می آید؟ از یک طرف از طریق ضعف سیستم عامل و پورت های باز و ضعف mount کردن و ضعف Internet Explorer و از طرف دیگر از طریق دیسک و کول دیسک الوده و برنامه های ویروسی و … در دنیای لینوکس من برنامه را مستقیما از نویسنده اصلی یا مستقیما از حامی توزیع مورد استفاده ام (مثلا ubuntu) دریافت و نصب می کنم. در روند نصب هیچ رابط میانی (حتی سی دی!) وجود ندارد و در نتیجه ویروس ها فرصت نمی کنند به چیزی بچسبند یا از جایی ظاهر شوند. در عین حال تمام برنامه های از طریق کدهای بخصوصی کنترل می شوند و در صورت تغییر حتی یک بیت در آن ها سیستم عاملم به من می گوید که برنامه ای که می خواهم نصب کنم، مشکوک است. با این روش اصولا ویروس ها زنده نمی مانند. ویروس برای زندگی نیاز دارد به یک چیزی بچسبد. در دنیای ویندوز حتی اگر شما برنامه را از فروشنده اصلی بخرید، آنقدر کپی غیرقانونی و برنامه اجرایی در وب وجود دارد که ویروس ها به راحتی به زندگی ادامه می دهند ولی در دنیای لینوکس عملا در اینترنت برنامه اجرایی ای وجود ندارد که به ویروس ها اجازه زنده ماندن بدهد.

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

در نهایت اضافه کنم که من نگران ویروس در کامپیوترم نیستم چون با لینوکس کار می کنم. این واقعیت دارد (: در عین حال این هم کاملا واقعیت دارد که بعضی ها توصیه می کنند که در دنیای لینوکس هم باید دائما ضد ویروس اجرا کرد. این تنوع عقیده است که دنیای لینوکس را جذاب می کند. فعلا هم که هیچ کدام از این دو عقیده ضرر نکرده است. حداقل جریان برای من این است که در یک شبکه ویندوزی، کامپیوتر من ایمن است و دوستانم بارها و بارها حافظه های جانبی شان را برای ویروس زدایی به من داده اند (:

آه اشتباه نشود! لینوکس کامل نیست. لینوکس ضعف هایی هم دارد. اتفاقا سه چهار روز است که قرار است در مورد یکیش تحقیق کنم و هنوز موفق نشده ام: bare metal backup. اگر من لینوکس را دوست دارم به خاطر کامل بودن یا حتی قوی تر بودنش نیست، به خاطر زیباتر بودنش است (: آنهم در سطح فلسفی (: برای اثبات ادعایم در مورد آگهی به نقاط ضعف لینوکس، برایتان در موردش خواهم نوشت (:


نیمه مرتبط: بدترین کرم‌های کامپیوتری در طول تاریخ

ضد ویروس های لینوکس چیستند و آیا اصولا به آن‌ها احتیاج داریم؟

مشهور است که لینوکس ویروس ندارد. این حرف کاملا درست است اما اگر اینطور است پس چرا در لینوکس برنامه‌های ضد ویروس داریم؟

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

در ویندوز، ضد ویروس برنامه ای است که در پشت زمینه اجرا می شود و هر فایلی که استفاده می کنید را از نظر داشتن ویروس بررسی می کند و در صورت کشف ویروس آژیر می کشد و اجازه اجرای فایل را نمی دهد.

در لینوکس اصولا جریان اینطور نیست چون ویروس های کامپیوتری توانایی صدمه زدن به لینوکس را ندارند و در نتیجه هیچ نیازی نداریم که یک برنامه دائما اجرا شود و همه فایل های مورد استفاده را چک کند.

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


همانطور که می بینید، تک تک فایل ها بررسی شده اند و هیچ ویروسی پیدا نشده. پس امن است که این فایل ها را روی یک کامپیوتر ویندوزی اجرا کنم.

اما وقتی در دنیای لینوکس ویروس نیست، چه کاری است که شما بخواهید فایل ها را بررسی کنید؟ منطقا هم هیچ وقت نیازی به این کار نیست چون این ویروس ها برای لینوکس خطرناک نیستند. اما در سه حالت این نیاز پیش می آید:

  •  بخواهید یک mailserver داشته باشید. در این حالت لازم است ایمیل های ورودی و خروجی را از نظر داشتن ویروس بررسی کنید.

  •  بخواهید یک file server داشته باشید. یعنی دستگاه لینوکسی شما مکانی باشد برای ذخیره فایل های دیگران

  •  بخواهید به دوستانتان لطف کنید و هر وقت فلش یا فایلی به شما دادند، برایشان آن را اسکن کنید و اطلاع بدهید که چه ویروسی دارند (:

جمع بندی

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

مرتبط
لینوکس هم ویروس دارد
جمعه‌ها: پاپیلوماویروس دوستمون نیست ولی خوبه باهاش آشنا بشیم
فرصتی برای استراحت: همین حالا به ویروس ساعت خوش مبتلا بشین

چگونه لینوکس و ویندوز را دوال بوت کنیم؛ طریقه نصب گنو/لینوکس پارسیکس در کنار ویندوز ایکس پی

توجه کنید که این مقاله بسیار سنگین است (تقریبا یک و نیم مگ) پس برای خواندن کامل آن، منتظر لود شدن همه عکس ها بشوید. در عین حال دقت کنید که این مقاله برای کسی نوشته شده که می خواهد لینوکس را امتحان کند، قرار نیست کسی با این مقاله، لینوکس کار شود (:

یکی دیگر از خوبی های لینوکس ( و نه لینوکسی ها) این است که به راحتی می تواند در کنار ویندوز نصب شود و با آن همزیستی کند. به اینکار اصطلاحا Dual Boot یا همان «بوت دوگانه» می گویند. در این مقاله می خواهم نشان بدهم که چطور می توانید پارسیکس را در کنار ویندوز ایکس پی نصب کنید. برای شروع اینکار نیاز به یک سی دی پارسیکس دارید. جدیدترین نسخه پارسیکس، ۱ است که چند روز قبل معرفی شده. این لینوکس زیبا و راحت، کاملا فارسی است و از بهترین قابلیت های لینوکس هم پشتیبانی می کند (: برای کاربران جدید، پیشنهاد من یا اوبونتو است یا پارسیکس و البته میز کار KDE. در اینجا سعی کرده ام با حداکثر جزییات مسایل را مطرح کنم ولی اگر جایی از آن گنگ بود،‌ شانسی جلو نروید و بیشتر بخوانید و بپرسید (:

مرحله اول: بوت آزمایشی پارسیکس

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

البته شاید تصویر شما آن پنگوئن را نداشته باشد ولی خوب است با آن آشنا شوید. اسمش تاکس است و نماد لینوکس. گزینه های مختلفی دارید و معمولا گزینه مناسب برای شما انتخاب اول است: بوت معمولی. همین را انتخاب می کنم و بوت شروع می شود.

مراحل بوت که تمام شد، صفحه اصلی پارسیکس را خواهید دید:

واقعیت این است که من تم های تیره را زیاد دوست ندارم و پارسیکس ۱، ترجیح داده تیره باشد (: در لحظه بعد از نصب می توانید هر تم دیگری که دوست دارید را تغییر دهید. البته بین خودمان باشد، به نظرم این تم خفن است و مناسب عشق هک ها (: به هرحال دیدید که پارسیکس به شکل معقول بوت می شود پس وقت آن است که برگردیم به ویندوز (: از منوی System کامپیوتر را با Quit خاموش کنید (البته بعد از بیرون آوردن سی دی ) و دوباره در ویندوز بوت کنید.

مرحله دو: بک آپ و Defrag کردن دیسک

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

در مرحله بعد از منوی استارت ویندوز، مثل شکل جلو بروید و دیسک را کاملا Defrag کنید. اگر از پس اینکار بر نیامدید، این راهنما به درد شما نمی خورد (:

مرحله سه: خالی کردن فضای خالی روی هارد

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

اگر بلد هستید که فضا را خالی کنید، این کار را بکنید و مثلا ۱۰ گیگ فضای خالی روی هارد داشته باشید و به مرحله بعد بپرید ولی من می خواهم این کار را با استفاده از برنامه Gparted در لینوکس انجام دهم پس بد نیست بخوانید.

کامپیوتر را به شیوه صحیح Shut Down کنید! اگر ری استارت کنید یا وسط بوت شدن ویندوز آن را قطع کنید، لینوکس حاضر نمی شود در وضعیت پارتیشن ها تغییری بدهد چون ممکن است ویندوز خراب شود.

بعد از شات دان صحیح، کامپیوتر را یکبار دیگر با لینوکس بوت کنید (این کار را در مرحله یک یاد گرفته اید). بعد از کامل شدن بوت روی صفحه Install Parsix کلیک کنید تا روند نصب شروع شود.

پارسیکس به شما می گوید که می‌خواهد نصب را شروع کند. دستش درد نکند.

اوه! گفت که هارد شما آماده نصب نیست. مشکلی نیست چون قرار است با هم تنظیمش کنیم.

حالا از ما خواسته که بگوییم می خواهیم چکار کنیم: پارتیشن بندی کنیم یا خارج شویم! اولی را انتخاب می کنیم.

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

روی بخش سفید کلیک می کنم و دگمه Resize را فشار می دهم. یک پنجره باز می شود:

سمت راست نوار را می گیرم و فضای سفید را کوچک می کنم. آن پایین به من نشان می دهد که چقدر فضا (بر حسب مگابایت) خالی شده.

برای اتمام کار، کلید Resize/Move را فشار می دهم و تغییر مورد نظرم، در کامپیوتر ثبت می شود اما هنوز به کامپیوتر دستور انجام آن را نداده ام.

برای انجام عملیات باید آیکون سبز رنگ Apply را بزنم.

دارد اخطار می دهد که باید بک آپ گرفته باشیم! امیدوارم این کار را کرده باشید و OK را بزنید

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

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

مرحله چهارم: ساخت پارتیشن‌های مورد نیاز

در ساده‌ترین حالت می توانید لینوکس را روی یک پارتیشن نصب کنید. نصب‌های حرفه‌ای تر نیازمند پارتیشن‌های بیشتری هستند. در وضع فعلی ما حالت میانه‌ای را در نظر گرفته‌ایم و می خواهیم با دو پارتیشن، لینوکس را نصب کنیم. پارتیشن اول حجم زیادی دارد (حداقل ۲
گیگ و حداکثرش با شما). سیستم فایل این پارتیشن سیستم فایل دوست داشتنی لینوکس یعنی ext3 است.

اما پارتیشن دوم! این پارتیشن یک چیز خاص است. پارتیشنی از جنس swap که معمولا دوبرابر حافظه کامپیوتر تعریف می شود. یعنی حالا که کامپیوتر من 512 مگابایت حافظه دارد، یک پارتیشن swap به اندازه یک گیگابایت تعریف می کنم و لینوکس خود به خود آن را می شناسد و از آن به عنوان یک نوع حافظه جانبی استفاده می کند.

پس ما دو پارتیشن داریم: یک پارتیشن swap به اندازه دوبرابر ram و یک پارتیشن اصلی از نوع ext3 که هر چقدر بزرگتر باشد بهتر است. کمربندها بسته! حرکت!


دگمه New را که فشار می دهم یک پنجره جدید باز می شود که از من می پرسد حجم و نوع پارتیشن مورد نظر و سیستم فایل آن چیست. خود سیستم فضای اولیه را کل فضای خالی موجود در نظر گرفته ولی من در بخش free space following عدد ۱۰۲۴ یعنی یک گیگابایت را وارد می کنم تا یک گیگ آخر را خالی بگذارم تا بعدا پارتیشن دوم ر در آنجا درست کنم. نوع پارتیشن را Primary انتخاب کرده ام و سیستم فایل آن را ext3. توجه کنید که تعداد پارتیشن های Primary روی هر هارد محدود است و در نتیجه اگر سه پارتیشن دیگر دارید، دیگر نمی توانید به این راحتی یک Primary جدید تعریف کنید. اگر این وضعیت را دارید در مورد پارتیشن بندی بیشتر بخوانید. تنها چیزی که لینوکس این وسط لازم دارم، یک پارتیشن از نوع ext3 با حجم بالای دو گیگابایت است. دراینجا من یک پارتیشن ۴۶ گیگابایتی ساخته ام که بعد از فشردن Add اینجوری می شود:


حالا می روم سراغ ساختن پارتیشن swap. یادتان که نرفته؟ دوبرابر رم یعنی ۱۰۲۴ مگ.


دوباره پیشنهاد اولیه خود سیستم، تمام فضا است که از مرحله قبل دقیقا یک گیگابایت شده. همین را می پذیرم و فقط نوع آن را Primary و فایل سیستم آن را linux-swap انتخاب می کنم. تکرار می کنم که شما نمی توانید هر چقدر که می خواهید پارتیشن Primary تعریف کنید. این ربطی به لینوکس ندارد و محدودیت پی سی است. اگر با این جریان مشکل دارید در مورد پارتیشن بندی بیشتر مطالعه کنید تا بتوانید دو پارتیشن مورد نظر لینوکس را بسازید. بازهم Add را فشار می دهم:


حالا دو کار منتظر انجام شدن هستند: ساختن پارتیشن اول و ساختن پارتیشن دوم. کافی است دگمه سبز رنگ Apply را بزنم تا این مراحل یکی یکی انجام شوند.


و حالا همه چیز آماده است:


فضای سفید بزرگ آنی است که برای لینوکس ساخته ام. هر پارتیشن یک اسم دارد و اسم این پارتیشن لینوکس من /dev/sda2 است. این را جایی یادداشت کنید چون بعدا لازمش دارید. آن کوچولوی سمت راست هم همان swap است. دقت کنید که آن پایین هم لیست همه پارتیشن ها نوشته شده و دقیقا dev/sda2 با رنگ آبی و فایل سیستم ext3 فهرست شده و حجم آن اینجا ۴۶ گیگابایت است. بازهم جایی می نویسم که پارتیشنی که قرار است لینوکس را روی آن نصب کنم sda2 است.

مبارک است! سخت ترین مرحله انجام شده و حالا فقط می ماند نصب.

مرحله پنجم: تنظیمات نصب

دیگر دنیا شیرین است. حداقل امیدوارم اینطور باشد. پنجره پارتیشن بندی را می بندید و این پنجره ظاهر می شود:


گزینه اول می گوید که می خواهید تنظیمات یک نصب جدید را انجام دهید. همین را انتخاب می کنید و OK می زنید.


اینجا باید پارتیشنی که می خواهید لینوکس روی آن نصب شود را انتخاب کنید. خودش بهترین گزینه را انتخاب کرده که به احتمال زیاد دقیقا همان چیزی است که در قسمت آخر مرحله چهارم نوشته بودید. برای من که همان sda2 است. ممکن است مال شما اسم دیگری داشته باشد ولی باید همانی باشد که در قسمت آخر مرحله قبل روی کاغذ نوشته بودید. حجم را هم چک کنید که درست باشد. مال من که ۴۶ گیگابایت است و دقیقا همان پارتیشن. پس می روم مرحله بعدی. مطمئن شوید که اشتباه نکرده اید تا ویندوز را از دست ندهید (:


حالا در مورد فرمت کردن پارتیشن سوال می کند. جواب ext3 همیشه خوب است (: Next را می زنم:


اسمم چیست؟ مال من که jadi بود، شما اسم خودتان را بدهید.


اسم کاربری مورد نظرم چیست؟ من بازهم همان اسم jadi را می خواهم، این کاربری خواهد بود که با آن به سیستم لاگین می کنم.


حالا باید پسورد مورد نظرم را بدهم. پسورد خیلی سختی انتخاب نمی کنم چون اسم کاربری بالا و این پسورد را باید هربار موقع ورود بدهم.


حالا باید پسورد مدیرسیستم که در لینوکس به آن root می گویند را بدهم.این را هم وارد می کنم تا وقتی خواستم کار خفنی در لینوکس بکنم، بتوانم ثابت کنم که مدیر سیستم هستم. حقیقت اش را بخواهید من با پسورد کاربر معمولی ام (jadi) یکی می گذارمش تا راحت باشم.


هنوز یک سوال دیگر دارد! اسم ماشینم!‌ من اینجا زدم testmachine. روی لپ تاپم زده ام japtop و شما می توانید هر اسم دیگری که برای کامپیوترتان دوست دارید را بدهید. حتی می توانید از اسم های باکلاسی مثل zerozone استفاده کنید ولی بهتر است space و اینجور چیزهای عجیب و غریب در آن نباشد!


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

مرحله ششم: نصب نهایی


تنظیمات نصب تمام شده و یکبار دیگر به پنجره اول برگشته ایم. حالا گزینه دوم یعنی Start Installation را انتخاب می کنیم و این پنجره را با دقت نگاه می کنیم:


در همان خط دوم به ما می گوید که می خواهد sda2 را فرمت کند. این را با کاغذی که قبلا نوشته ایم چک می کنیم! اگر این جا اشتباه کنیم یعنی داریم ویندوز را فرمت می کنیم! البته بک آپ گرفته ایم و خیلی وحشتناک نیست. Next را می زنیم.


نصب شروع شده. اول فرمت می‌کند و بعد…


… و جلو می رود و سیستم را نصب می کند تا تمام شود.


واو… لینوکس نصب شد! آنهم با تواضع در کنار ایکس پی (: سی دی را در می آوریم و برای ری استارت کامپیوتر،‌ از منوی System، Quit را می زنیم.

حالا بوت دوگانه پارسیکس و ویندوز را داریم

کامپیوتر که بوت می شود، در لحظه اول صفحه ای شبیه به این می بینیم:


از این منو می توانید انتخاب کنید که

 پارسیکس در حالت عادی بوت شود

 پارسیکس با تنظیمات خاص شما بوت شود (که فعلا با این کاری نداریم)

 ویندوز بوت شود

در صوٖرت انتخاب گزینه اول لینوکس بوت می شود و صفحه لاگین را خواهید دید:


اول باید نام کاربری خودتان را بدهید و بعد کلمه عبور را. می توانید برنامه ها را اجرا کنید:


و برای تنظیم شبکه (یا وصل شدن با مودم که من بلدش نیستم) از منوی Applications وارد بخش Parsix شوید و Network Configuration Tool را اجرا کنید.

از من می پرسد که آیا DHCP دارم؟ می گویم بله و شبکه خیلی زود و راحت راه می افتد!

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

به دنیای لینوکس خوش آمدید! فقط برای امتحان اینکه هنوز ویندوز سالم است یا نه یک بار دیگر کامپیوتر را شات دان می کنم و این بار در ویندوز بوت می کنم:


بعله سالم است به جز اینکه بازهم یک چیزی کشف کرده و از من می خواهد ری استارتش کنم! ری استارت می کنم و بر می گردم به لینوکس!

تکمیلی:

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

با هم همراهم

متاسفم که سایتم به سایت لینوکسی تبدیل شده ولی در چند روز آینده بازهم از لینوکس خواهم نوشت. ۱- کارهای قشنگی که با پارسیکستان می توانید بکنید. ۲- چگونه از زیباترین جنبه لینوکس استفاده کنید: جامعه لینوکسی. ۳- شما بگویید چه می خواهید.

مرتبط:

 توضیح خیلی دقیق بوت دوگانه اوبونتو و ویندوز ایکس پی در وبلاگ آپدیت بلاگhttp://www.updateblog.net/archive/2…]

 ویرایش منوی بوت دوگانه ی مابین ویندوز و اوبونتو که عملا تفاوتی با پارسیکس نداره.

لینوکس را دوست دارم چون مثل خمیر انطعاف پذیر، مثل لگو خلاق و مثل بولدوزر قوی است

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

امروز دوستی با یک سی دی پیشم بود. می خواست زود برود چون باید کل فایل ها را چک می کرد و از این یکی دو هزار فایل، آن‌هایی که اسم «فلانی» در آن‌ها بود را جدا می‌کرد. برای اینکار نیازی به تلف کردن کل شب خوبمان با باز و بسته کردن هزار تا فایل نبود. سی دی را در لینوکس گذاشتم و گفتم که بیتشر از سی ثانیه کار ندارد. در لینوکس من دستور «جستجو» را دارم و می نویسم:

grep فلانی *

جالب نیست؟‌ حالا دقیقا می گوید در کجای کدام فایل اسم «فلانی» آمده. اما من فقط اسم فایل ها را می خواهم:

grep فلانی * -l

بامزه نیست؟ l- می گوید: فقط اسم ها را چاپ کن، هر کدام را در یک خط. دوستم که هیجان زده شده می گوید خروجی را ذخیره کنم و اسم فایل ها را به او بدهم که جدایشان کند و یک فایل فشرده از همه آن‌ها درست کند. مگر لینوکس مرده؟

grep فلانی * -l | xargs tar -czf allfiles.tar.gz

واو… یکضرب خودش هم زیپ کرد! علامت | (پایپ) می گوید خروجی اول را بدهید به ورودی دومی و xargs هم می گوید هر خروجی را به پشت دستور بعدی اضافه کند و دستور را اجرا کند. tar -czf هم یک فایل فشرده از فایل هایی که به آن داده ایم می سازد! حالا من یک فایل فشرده ساخته ام از همه فایل هایی که اسم «فلانی» در آن هست. دوستم دیگر به لینوکس ایمان آورده و درخواست نمی کند که فایل را برایش کپی کنم تا از خانه ایمیلش کند. بلکه می پرسد: چجوری ایمیلش کنم؟

جواب عمومی ساده است: لاگین کن و attach کن و ایمیل کن. در لینوکس جریان ساده تر است. اگر بخواهم فیگور خط فرمان بیایم می نویسم:

grep فلانی * -l | xargs tar -czf allfiles.tar.gz && uuenpre allfiles.tar.gz allfiles.tar.gz | mail jadijadi@gmail.com -s "file hameye hesabhaye folani"

ولی با این خط عملا دیگر دارم خط فرمان را خز می کنم (: به جای اینکار من وارد برنامه ایمیلم می شوم (kmail) و یک ایمیل جدید باز می کنم و می نویسم: «فایل پیوست حاوی همه حساب هایی است که توشون اسم فلانی هست» و ایمیل را ارسال می کنم. خود برنامه از کلمه «پیوست» متوجه می شود که احتمالا می خواهم چیزی به نامه پیوست کنم و مسیر آن را از من می پرسد و به نامه پیوستش می کند! حالا مقایسه کنید که چند بار در ویندوز برایمان پیش آمده که ایمیل بزنیم «اوه ببخشید! یادم رفت فایل رو پیوست کنم. فایل به این یکی نامه پیوست شده!».

من لینوکس رو دوست دارم چون مثل یک لگو لذت بخش و مثل یک بولدوزر قوی و مثل خمیربازی شکل پذیر است (: