Gentoo Logo

کتاب راهنمای لینوکس جنتو ایکس ۸۶

محتوی:

  • نصب کردن جنتو
    در این بخش شمافرامی گیرید که چگونه جنتو را بروی دستگاه خود نصب نمایید.
    1. درباره نصب لینوکس جنتو
      این فصل شما را با مطالب مربوط به نصب در این کتاب راهنما آشنا می نماید.
    2. انتخاب رسانه نصب صحیح
      شما می توانید جنتو را به روش های مختلف نصب نمایید. این فصل چگونگی نصب جنتو را با استفاده از لوح فشرده نصب کمینه توضیح می دهد
    3. پیکربندی نمودن شبکه شما
      برای پایین گزاری آخرین نسخه کد منبع، به راه اندازی شبکه نیاز خواهید داشت.
    4. مهیا ساختن لوح ها
      برای اینکه قادر به نصب جنتو باشید، باید پارتیشن های ضروری را ایجاد نمایید. این فصل چگونگی پاتیشن بندی یک دیسک برای استفاده بعدی را تشریح می کند.
    5. نصب کردن فایل های نصب جنتو
      نصب های جنتو بواسطه یک بایگانی طبقه۳ کار می کند. در این فصل ما نحوه استخراج بایگانی طبقه۳ و پیکر بندی پرتیج را شرح می دهیم.
    6. نصب کردن مبانی دستگاه جنتو
      پس از نصب کردن و پیکربندی یک طبقه۳، نتیجه احتمالی آنستکه شما مبانی دستگاه جنتو را در دسترس دارید. این فصل تشریح می کند که چگونه به آن مرحله برسید.
    7. پیکربندی کردن هسته
      کرنل لینوکس هسته هر توزیعی است. این فصل توضیح می دهد چگونه کرنل خود را پیکربندی نمایید.
    8. پیکربندی دستگاهتان
      شما نیازدارید تا برخی فایل های پیکربندی مهم را ویرایش نمایید. در این فصل شما به این فایل ها و توضیحی درباره چگونگی کار بروی آنها نگاهی می نمایید.
    9. نصب کردن ابزارهای ضروری دستگاه
      در این فصل ما به شما برای انتخاب و نصب برخی ابزارهای مهم کمک می نماییم.
    10. پیکربندی راه انداز دستگاه
      برای معماری ایکس ۸۶ چندین نوع راه انداز دستگاه وجود دارد.هر کدام از آنها مسیر پیکربندی خود را دارد. ما در مسیر اجرای پیکربندی یک راه انداز دستگاه مطابق با نیازهای شما گام برمی داریم.
    11. بپایان رساندن نصب جنتوی شما
      تقریبا آنرا انجام داده اید. ما فقط یک (یا تعدادی) کاربر برای دستگاه شما ایجاد می نماییم.
    12. از اینجا کجا برویم؟
      اکنون شما دستگاه جنتوی خود را دارید، اما بعد از آن چه؟
  • کارکردن با جنتو
    یادگیری کار با جنتو: نصب کردن نرم افزار، تغییر دادن متغییرها، تغییر دادن رفتارهای پرتیج و غیره.
    1. یک آشنائی با پرتیج
      این فصل به توضیح مراحل " ساده " آنچه که یک کاربر لازم دارد تا نرم افزار را بروی دستگاه خود نگهداری نماید می پردازد.
    2. یو اس ائی پرچم ها
      یو اس ائی پرچم ها جنبه مهمی از جنتو هستند. در این فصل، شما کار با یو اس ائی پرچم ها را یاد می گیرد و فعل و انفعال یو اس ائی پرچم ها و دستگاهتان را درک می نمایید.
    3. خصوصیات پرتیج
      پی بردن به خصوصیاتی که پرتیج دارد، مثلا پشتیبانی برای تالیف شدن توزیع سی کش و بیشتر.
    4. نوشتارها
      جنو از یک فرمت کدنوشته درونی خاص که از جمله دیگر خصوصیات، امکان تصمیم برای راندن-وابستگی و کدنوشته های مجازی، استفاده می نماید. این فصل همه این جنبه ها و نحوه سروکار داشتن با این کدها را تشریح می نماید.
    5. متغییرهای محیطی
      با جنتو شما براحتی می توانید متغییرهای محیطی دستگاهتان را مدیریت نمایید. این فصل نحوه انجام آنرا توضیح می دهد، و همینطور متغییرهای مکرر استفاده شده را تشریح می نماید
  • کارکردن با پرتیج
    بخش کارکردن با پرتیج پوشش عمیق تری از کار با ابزار مدیریت نرم افزار جنتو، پرتیج را فراهم می نماید.
    1. فایلها و دایرکتوری ها
      اگر بخواهید عمیقا پرتیج را بفهمید، نیاز دارید بدانید که فایل ها و اطلاعات را کجا نگهداری می نماید.
    2. پیکربندی کردن از طریق متغییرها
      پرتیج از طریق متغییرهای گوناگونی که می توانید در فایل های پیکربندی یا متغییرهای محیطی تنظیم نمایید، کاملا قابل پیکربندی است.
    3. آمیختن انشعاب های نرم افزار
      جنتو وابسته به پشتیبانی پایداری و معماری، نرم افزار را در چندین انشعاب مجزا فراهم می نماید. آمیختن انشعاب های نرم افزار شما را آگاه می نماید که چگونه این انشعاب ها را می توان پیکربندی نمود و چگونه شما می توانید بدلخواه این انفکاک را از بین ببرید.
    4. ابزارهای اضافی پرتیج
      پرتیج تعدادی ابزارهای اضافی دارد که ممکن است تجربه شما با جنتو را بهتر نماید، برای درک نحوه کار دیسپچ-کنف و دیگر ابزارها بخوانید.
    5. منحرف شدن از شجره رسمی
      منحرف شدن از شجره رسمی نکات و طرفندهائی از نحوه استفاده از شجره پرتیج خودتان را به شما می دهد، همگام نمودن مقوله هائی که فقط شما می خواهید، تزریق بسته ها و بیشتر.
    6. خصوصیات پرتیج پیشرفته
      بمرور زمان، پرتیج کاملتر و مبسوط تر می شود. خصوصیات جدیدی مداوما به آن افزوده می شود - بسیاری از آنها فقط توسط کاربران ماهرتر استفاده می شوند. این فصل به توضیح جزئیات بیشتر این خصوصیات خاص می پردازد.
  • پیکربندی شبکه جنتو
    یک راهنمای جامع شبکه نمودن جنتو.
    1. شروع کردن
      یک راهنما برای راه اندازی سریع واسط های شبکه و راه اندازی بیشتر محیط های عمومی.
    2. پیکربندی پیشرفته
      اینجا ما درباره چگونگی کارکرد پیکربندی می آموزیم - شما قبل از اینکه ما درباره شبکه ماژولار یادبگیریم، نیاز به دانستن آن دارید.
    3. شبکه سازی ماژولار
      جنتو شبکه سازی قابل انعطافی برای شما فراهم می آورد - اینجا به شما درباره انتخاب کاربران دی اچ سی پی مختلف، تنظیم باند کردن، پل زدن، وی لن ها و بیشتر گفته می شود.
    4. شبکه سازی بیسیم
      پیکربندی بیسیم می تواند مهارت آمیز باشد. امیدواریم کارکردتان را به شما بدهیم!
    5. افزودن تابعی
      اگر احساس خطر می کنید، می توانید توابع شبکه سازی خودتان را اضافه نمایید.
    6. مدیریت شبکه
      برای کاربران لپ تاپ یا کسانی که رایانه شان را در شبکه های مختلف استفاده می نمایند.

الف. نصب کردن جنتو

۱. درباره نصب لینوکس جنتو

۱.الف. مقدمه

خوش آمدید!

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

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

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

نصب ساختاریافته چگونه است؟

نصب جنتو را می توان بصورت یک روش ده مرحله ائی دید، متناظر با فصل ۲ - ۱۱ دست آورد هر مرحله در یک حالت قطعی است:

  • بعد از مرحله ۱، شما در محیط کاری آماده برای نصب جنتو هستید
  • بعد از مرحله ۲، ارتباط اینترنت شما آماده برای نصب جنتو است
  • بعد از مرحله ۳، دیسک سخت شما برای تبدیل به محل اقامت نصب جنتو ارزشیابی شده
  • بعد از مرحله ۴، نصب محیطی شما آماده گردیده و شما آماده اید که به محیط جدید سی اچ روت نمایید
  • بعد از مرحله ۵، بسته های هسته، که در همه نصب های جنتو مشابه هستند، نصب شده اند
  • بعد از مرحله ۶، شما در حال کامپایل کرنل لینوکس هستید
  • بعد از مرحله ۷، شما در حال نوشتن بیشتر فایل های پیکربندی دستگاه جنتو خودتان هستید
  • بعد از مرحله ۸، ابزارهای دستگاه لازم ( که می توانید آنها را از یک فهرست خوب انتخاب نمایید) نصب شده اند
  • بعد از مرحله ۹، راه انداز دستگاه انتخاب شده توسط شما نصب شده و پیکربندی شده و شما درحال ورود به نصب جنتوی جدیدتان هستید
  • بعد از مرحله ۱۰، محیط لینوکس جنتوی شما برای کنکاش آماده است

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

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

انتخاب های من چیست؟

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

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

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

اگر می خواهید نصب بدون استفاده از شبکه انجام دهید باید کتاب راهنمای ۲۰۰۸.۰ جنتو را بخوانید که حاوی دستورالعمل های نصب برای محیط بدون شبکه است.

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

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

همچنین شما چندین امکان دارید: می توانید دستگاه خود را سراسر خودتان کامپایل نمایید یا از محیط های از پیش کامپایل شده استفاده نمایید که می توانند محیط جنتوی شما را بدون تاخیر بالا آورده و راه اندازی نمایند. و البته راه های میانه ائی هم دارید که در آنها شما همه چیز را کامپایل نمی نمایید اما با یک دستگاه نیمه-حاضر آغاز می نمایید.

ایراد؟

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

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

اگر مردد هستید که ایراد ایراد کاربر هست (برخی اشکالاتی که با وجود اینکه مستندات را با دقت خوانده اید برایتان روی می دهد) یا یک مشکل نرم افزاری (برخی اشکالاتی که ما با وجود اینکه کدها را با دقت آزمایش می نماییم در نصب یا مستندات بوجود می آوریم) آزادید که از gentoo# بروی irc.freenod.net استفاده نمایید و البته به هر دلیلی هم به آن خوش آمدید :)

اگر هر سئوالی در رابطه با جنتو دارید، بخش سئوالات متداول ما را که در مستندات جنتو موجود است را بررسی نمایید. همچنین می توانید بخش سئوالات متداول در تالار گفتگوی ما را نیز بازبین نمایید. تالارهای گفتگو اگر پاسخ را در این مکان ها نیافتید آنرا در #gentoo کانال آی آر سی ما بروی irc.freenod.net بپرسید بله، تعدادی از ما وسواس نشستن همیشگی در آی آر سی را دارند :)

۲.انتخاب رسانه نصب صحیح

۲.الف لازمه های سخت افزاری

مقدمه

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

لازمه های سخت افزاری

لوح فشرده کمینه لوح فشرده زنده
CPU i486 یا بالاتر i686 یا بالاتر
حافظه ۲۵۶ MB ۵۱۲ MB
فضای دیسک ۲.۵ GB (به استثناء فضای سواپ)
فضای سواپ کمینه ۲۵۶ MB

۲.ب لوح های فشرده نصب جنتو

مقدمه

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

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

لوح فشرده کمینه نصب جنتو

به لوح فشرده کمینه نصب نصب-x86-کمینه-<release>.iso گفته می شود و تقریبا حدود ۱۴۰ مگابایت از فضای دیسک را اشغال می نماید. شما می توانید از این لوح فشرده نصب برای نصب جنتو استفاده نمایید، اما حتما فقط با یک ارتباط اینترنت قابل استفاده.

دی وی دی های زنده لینوکس جنتو

هر شش ماه (زودتر یا دیرتر)، یک دی وی دی اختصاصی متشکل از ده پروژه که می توانند برای نصب جنتو با همدیگر استفاده شوند تهیه می شود. دستورالعمل پایین این فصل بروی نصب بوسیله لوح های فشرده کمینه متمرکز گردیده درنتیجه ممکن است مقداری متفاوت باشد. هرچند، دی وی دی های زنده (یا هر محیط قابل خودراه انداز لینوکسی) که یک نشانک کاربر ریشه را با درخواستی بشکل sudo su - یا sudo -i در یک ترمینال به ما می دهند هم اینکار را پشتیبانی می نمایند.

تاربال طبقه۳

تاربال طبقه۳ یک آرشیو شامل یک محیط حداقل جنتو است، که برای ادامه نصب جنتو با استفاده از دستورالعمل موجود در این راهنما مناسب است. پیشتر، کتاب راهنمای جنتو نصب با استفاده از یکی از تاربالهای سه طبقه را شرح می داد. در شرایطی که جنتو هنوز طبقه۱ و طبقه۲ را ارائه می دهد، روش نصب رسمی از تاربال طبقه۳ استفاده می نماید. اگر به نحوه نصب جنتو با استفاده از تاربال مرحله۱ یا طبقه۲ علاقمندید، لطفا سئوالات متداول جنتو بروی چگونه جنتو را با استفاده از تاربال طبقه۱ یا طبقه۲ نصب نمایم؟ را مطالعه نمایید.

تاربالهای طبقه۳ می توانند از آدرس releases/x86/autobuilds/current-stage3/ بروی هرکدام از میرورهای رسمی جنتو پایین گذاری شوند و در دی وی دی های زنده موجود نیستند.

۲.ج پایین گذاری، رایت و راه اندازی یک لوح فشرده نصب جنتو

پایین گذاری و رایت لوح های فشرده نصب

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

شما می توانید هرکدام از لوح های فشرده نصب را از یکی از میرورها پایین گذاری نمایید. لوح های فشرده نصب در دایرکتوری releases/x86/autobuilds/current-iso/ قرار گرفته اند.

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

در این مورد که مشکوکید که فایل پایین گذاری شده خراب شده یا خیر، می توانید MD5 آنرا کنترل نمایید و آنرا با MD5 که ما تهیه نموده ایم مقایسه نمایید (شامل نصب-x86-کمینه-<release>.iso.DIGESTS ).شما می توانید MD5 را با استفاده از ابزار md5sum تحت لینوکس/یونیکس یا md5sum برای ویندوز کنترل نمایید.

راه دیگر بررسی سلامت پایین گذاری استفاده از GnuPG برای تایید امضاء کریپتوگرافی است که ما آنرا فراهم آورده ایم (فایلی که با .asc پایان می یابد). امضاء فایل را پایین گزاری نمایید یک کلید عمومی و مشخصات کلیدها در آدرس پایگاه پروژه مهندسی نسخ یافت می شود.

Code Listing 3.1: Obtaining the public key

(... Substitute the key ids with those mentioned on the release engineering site ...)
$ gpg --keyserver subkeys.pgp.net --recv-keys 96D8BF6D 2D182910 17072058

اکنون امضاء را تایید نمایید:

Code Listing 3.2: Verify the files

(Verify the cryptographic signature)
$ gpg --verify <downloaded iso.DIGESTS.asc>
(Verify the checksum)
$ sha1sum -c <downloaded iso.DIGESTS.asc>

برای رایت آی زو (های) پایین گذاری شده، شما یک نرم افزار رایت انتخاب می نمایید چراکه این کار بسیار به برنامه وابسته است.ما استفاده از K3B و cdrecord را در اینجا شرح می دهیم; اینجا،می توان اطلاعات بیشتری را بروی سئوالات متداول جنتو پیدا نمود.

  • بوسیله cdrecord, بسادگی تایپ کنید cdrecord dev=/dev/hdc <downloaded iso فایل> (جانشین شود /dev/hdc با لوح فشرده قابل رایت شدن drive's مسیر دستگاه).
  • بوسیله K3B گزینه Tools > Burn CD Image را انتخاب نمایید، سپس می توانید محل فایل آی زو خود را درون محیط تصویر رایت کن ، موقعیت دهی نمایید. در نهایت بروی دگمه Start کلیک نمایید.

راه اندازی لوح فشرده

به مجرد اینکه لوح فشرده نصب را رایت نمودید، زمان آن است که آنرا راه اندازی نمایید. همه لوح های فشرده را از دیسک خوان ها بیرون بیاورید، دستگاه را ریبوت نمایید و وارد BIOS شوید. اینکار وابسته به BIOS دستگاه شما معمولا با فشار دادن دگمه هائی مانند DEL، F۱ , ویا Esc انجام می شود. در سیستم BIOS مسیر راه اندازی شدن را بطوریکه دیسک خوان قبل از دیسک سخت راه اندازی شود، تغییر دهید. این گزینه معمولا در زیر قسمت CMOS Setup پیدا می شود. اگر اینکار را انجام ندهید، دستگاه شما با نادیده گرفتن لوح فشرده، فقط به توسط دیسک سخت راه اندازی می شود.

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

هنگامیکه خط فرمان راه انداز نشان داده شد، انتخاب های موجود از کرنل (F1) و انتخاب های راه اندازی (F2)به نمایش در می آیند. اگر در زمانی کمتر از ۱۵ ثانیه هیچ انتخابی انجام ندهید، (شامل اطلاعات یا انتخاب کرنل) پس لوح فشرده زنده برای راه اندازی توسط دیسک باز خواهد گردید. اینکار موجب خواهد گردید که نصب ریبوت شده و تلاشی برای راه اندازی محیط نصب شده بروی دیسک سخت، بدون نیاز به اینکه لوح فشرده را از دستگاه دیسک خوان خارج نمایید، انجام شود (چیز با ارزشی برای نصب های از راه دور است).

اکنون ما به کرنل مورد نظرمان اشاره می نماییم. در لوح های فشرده نصب ما، ما تعدادی کرنل تدارک دیده ایم. پیش فرض آنها gentoo است. دیگر کرنل ها برای نیازهای سخت افزاری خاص و -nofb به متغییرهائی دارند که فریم بافر را از کار می اندازند.

در زیر نگاه اجمالی به کرنل های موجود می اندازید:

کرنل شرح
gentoo کرنل ۲.۶ پیشفرض با پشتیبانی از چندین CPU
gentoo-nofb مشابه با gentoo اما بدون پشتیبانی از فریم بافر
memtest86 بررسی RAM سخت افزار شما

همچنین می توانید برای کرنل تنظیماتی در نظر بگیرید. آنها انتخاب هائی را که می توانید آنها را فعال یا غیرفعال نمایید را نشان می دهند.

تنظیمات سخت افزاری:

acpi=on
این گزینه پشتیبانی برای لود شدن ACPI و همچنین موجبات راه اندازی acpid daemon در هنگام راه اندازی دستگاه می شود. تنها در صورتی به این گزینه نیاز دارید که دستگاه شما برای راه اندازی توابع صحیح به ACPI نیاز داشته باشد.
acpi=off
بطور کامل ACPI را از کار می اندازد. این گزینه مفید برای برخی دستگاه های بسیار قدیمی و همچنین از نیازمندی های استفاده از APM است. این گزینه هرگونه پشتیبانی از Hyperthreading در پردازشگر شما را از کار می اندازد.
console=X
این گزینه دسترسی به سریال کنسول برای لوح فشرده را تنظیم می نماید. اولین انتخاب، دستگاه است که معولا بر روی x86 ttyS0 است، که بدنبال آن برخی انتخاب های ارتباطی می آیند، که بوسیله کاما از یکدیگر جدا می شوند. انتخاب پیش فرض 9600,8,n,1 است.
dmraid=X
این گزینه اجازه ارجاع دادن انتخاب ها به device-mapper RAID subsystem را فراهم می نماید. انتخاب ها باید در گیومه های نقل و قول بسته بندی شده باشند
doapm
این گزینه پشتیبانی از APM را لود می نماید. همچنین برای استفاده از این گزینه لازم است تا از گزینه acpi=off استفاده نمایید.
dopcmcia
این گزینه پشتیبانی از PCMCIA و سخت افزار Cardbus را فعال می نماید و همچنین موجب می شود تا pcmcia cardmgr بوسیله لوح فشرده در ابتدای راه اندازی آغاز گردد. این گزینه فقط زمانی لازم است که از روی دستگاه PCMCIA/Cardbus راه اندازی می نمایید.
doscsi
این گزینه پشتیبانی برای غالب کنترلگرهای SCSI را فراهم می نماید. همچنین این گزینه یکی از لازمه های راه اندازی غالب دستگاه های USB است، چنانچه آنها از زیردستگاه SCSI کرنل استفاده می نمایند.
sda=stroke
این گزینه به شما امکان می دهد تا چنانچه BIOS قادر به دسترسی به دیسک های بزرگ نیست،همه دیسک سخت را پارتیشن بندی نمایید. این گزینه فقط برای ماشین هائی با BIOS هائی بسیار قدیمی استفاده می شود. گزینه sda را با دستگاهی که این گزینه را لازم دارد جایگزین نمایید.
ide=nodma
این گزینه ازکارافتادن DMA در کرنل را اجباری می نماید و برای برخی IDE مورد نیاز است و همچنین برخی دستگاه های دیسک خوان. اگر دستگاه شما مشکلی با خواندن از روی دیسک خوان IDE دارد، این گزینه را امتحان نمایید. همچنین این گزینه تنظیمات پیش فرض hdparm برای راه خود-راه اندازی را از کار می اندازد.
noapic
این گزینه Advanced Programmable Interrupt Controller را که در برد مرجع های جدیدتر وجود دارد را از کار می اندازد. این به عنوان مشکل برخی سخت افزارهای قدیمی تر شناخته شده است.
nodetect
این گزینه همه بازرسی های خودکار توسط لوح فشرده را از کار می اندازد، که شامل کشف دستگاه های موجود و بررسی برای DHCP نیز می شود. این برای ایرادیابی از یک لوح فشرده یا درایور مفید است.
nodhcp
این گزینه بررسی DHCP در بازرسی کارت شبکه ها را از کار می اندازد. این گزینه فقط برای شبکه های با آدرس های ایستا مفید است.
nodmraid
از کار انداختن پشتیبانی از device-mapper RAID، مانند آنچه برای کنترلگرهای on-board IDE/SATA RAID استفاده شده است.
nofirewire
این گزینه ماژول های Firewire را از کار می اندازد. این گزینه تنها زمانی مورد نیاز است که سخت افزار Firewire شما موجب بروز ایرادی در راه اندازی لوح فشرده می شود.
nogpm
این گزینه پشتیبانی از کنسول موشواره gpm را از کار می اندازد.
nohotplug
این گزینه لود شدن init کدها بصورت hotplug and coldplug را در زمان راه اندازی از کار می اندازد. این برای ایراد یابی از یک درایور یا لوح فشرده خراب مفید است.
nokeymap
این گزینه گزینش keymap در انتخاب لایه های غیر آمریکائی صفحه کلید را از کار می اندازد.
nolapic
این گزینه APIC های محلی بروی پردازشگرهای عامه کرنلها را از کار می اندازد.
nosata
این گزینه لود شدن ماژولهای سریال ATA را از کار می اندازد. این گزینه تنها در صورتی که دستگاه شما با زیر دستگاه های SATA مشکل دارد ، مفید است.
nosmp
این گزینه SMP، یا چند پردازشگری متقارن، بروی کرنل های با قابلیت SMP-enabled را از کار می اندازد. این گزینه برای ایرادیابی پی آمد وابستگی های SMP با درایورها و برد مرجع ها مناسب است.
nosound
این گزینه پشتیبانی از صدا و حجم صدا را ازکار می اندازد. این گزینه برای دستگاه هائی مناسب است که پشتیبانی از صدا موجب بروز اشکالاتی در آنها می شود.
nousb
این گزینه راه اندازی خودکار ماژول های USB را از کار می اندازد. برای ایراد یابی پی آمدهای USB مفید است.
slowusb
این گزینه مقداری وقفه بیشتر برای جریان راه اندازی برای دیسک خوان ها و USB های کم سرعت تر اضافه می نماید، مثلا برای IBM BladeCenter

مدیریت حجم/دستگاه:

dolvm
این گزینه پشتیبانی برای مدیریت Logical Volume لینوکس را فراهم می آورد.

انتخاب های دیگر:

debug
قابلیت ایراد یابی کد. این ممکن است آشفتگی مانند نمایش مقدار زیادی اطلاعات درهم بروی صفحه نمایش دهد.
docache
کش نمودن خروجی runtime portion لوح فشرده بداخل RAM، که امکان آنمانت نمودن لوح فشرده و مانت نمودن دیسک خوان دیگری را فراهم می نماید. این گزینه نیازدارد تا شما کمینه دوبرابر مقدار حجم لوح فشرده Ram در اختیار داشته باشید.
doload=X
موجب می شود تا نخستین ramdisk همه ماژول های فهرست شده را بخوبی پیش نیازها لود نماید. بجای x نام ماژول را جایگزین نمایید.
چندین ماژول می توانند بوسیله جدا شدن به کمک کاما فهرست شوند.
dosshd
آغاز sshd در زمان راه اندازی، که برای نصب های کم دقت مناسب است.
passwd=foo
تنظیمات هرآنچه برابر رمز عبور ریشه است که از آنجا ئی که ما رمزعبور کاربر ریشه را تدارک دیده ایم، برای dosshd مورد نیاز است.
noload=X
موجب می شود تا نخستین ramdisk از روی لود شدن ماژول های اختصاصی که ممکن است موجب بروز اختلالاتی شوند، پرش نماید. نحو تطبیقی با doload.
nonfs
از کار اندازی portmap/nfsmount در زمان راه اندازی.
nox
موجب یک X-enabled در لوح فشرده زنده می شود تا x را بطور خودکار راه اندازی ننماید، اما بیشتر برای راه اندازی خط فرمان بجای آن.
scandelay
موجب وقفه ۱۰ ثانیه ائی لوح فشرده در حین بخش اصلی اجرای راه اندازی می شود تا امکان آماده شدن را برای دستگاه های کم سرعت تر برای استفاده فراهم آورد.
scandelay=X
این اجازه را به شما می دهد تا زمان تاخیری را مشخص نمایید، به ثانیه، تا به بخش اصلی اجرای راه اندازی اضافه شود تا به دستگاه های کم سرعت تر امکان آماده شدن برای استفاده را بدهد. مقدار x را با زمان وقفه مورد نظر به ثانیه جایگزین نمایید.

نکته: لوح فشرده پیش از بررسی تنظیمات بر اساس "do*" بدنبال بررسی تنظیمات بر اساس "no*" می رود، بنابر این شما می توانید در درخواست نهائی که تنظیم می نمایید، آنها را برای اجرا شدن باطل نمایید.

اکنون لوح فشرده تان را راه اندازی نمایید، یک کرنل انتخاب نمایید (اگر از کرنل پیش فرض gentoo رضایت ندارید) و تنظیمات را راه اندازی نمایید. به عنوان یک مثال ما به شما نشان می دهیم چگونه کرنل gentoo را, با dopcmcia به عنوان پارامتر کرنل راه اندازی نمایید:

Code Listing 3.3: Booting an Installation CD

boot: gentoo dopcmcia

پس از آن می توانید با یک صفحه راه اندازی و جریان آن ملاقات نمایید. اگر در حال نصب جنتو بروی یک دسنگاه با صفحه کلید غیر آمریکائی هستید، مطمئن شوید که فورا دگمه های Alt+F1 را برای گزیدن حالت مفصلتر فشار می دهید و فرامین خط فرمان را پیگیری می نمایید. اگر هیچ انتخابی در زمان ۱۰ ثانیه صورت نگیرد صفحه کلید پیش فرض (صفحه کلید آمریکائی) پذیرفته خواهد شد و مراحل راه اندازی ادامه خواهد یافت. به محض اینکه مراحل راه اندازی کامل گردید، بطور خودکار به کاربر ریشه جنتو لینوکس زنده وارد خواهید شد، کاربر اصلی. شما باید یک نشانک # ریشه در کنسولتان داشته باشید و بتوانید با فشار دادن Alt+F2, Alt+F3 و Alt+F4 به کنسول های دیگر رفته و با فشار دادن Alt+F1 به کنسولی که از آن آغاز نمودید، بازگردید.

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

پیکربندی سخت افزاری بیشتر

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

در مثال بعدی ما تلاش خواهیم نمود تا ماژول 8139too (که از برخی انواع رابط های شبکه پشتیبانی می نماید) را لود نماییم:

Code Listing 3.4: Loading kernel modules

# modprobe 8139too

انتخابی: حساب های کاربری:

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

برای تغییر رمزعبور کاربر ریشه، از امکان passwd استفاده نمایید:

Code Listing 3.5: Changing the root password

# passwd
New password: (Enter your new password)
Re-enter password: (Re-enter your password)

برای ایجاد یک حساب کاربری، ابتدا نام آن را و پس از آن رمز عبور آنرا وارد می نماییم. ما از دستور useradd و passwd برای اینکار استفاده می نماییم. در مثال بعدی، کاربری با نام john ایجاد می نماییم.

Code Listing 3.6: Creating a user account

# useradd -m -G users john
# passwd john
New password: (Enter john's password)
Re-enter password: (Re-enter john's password)

می توانید مشخصه کاربری تان را از ریشه به کاربر جدیدی که ایجاد نموده اید با استفاده از دستور su تغییر دهید:

Code Listing 3.7: Changing user id

# su - john

انتخابی: دیدن مستندات در حین مراحل نصب

اگر می خواهید کتاب راهنمای جنتو را در حین مراحل نصب ببینید، مطمئن شوید که یک حساب کاربری ایجاد نموده اید (بخش انتخابی: حساب های کاربری را ببینید). پس از آن دگمه های Alt-F2 را برای رفتن به ترمینال جدید فشار دهید.

می توانید کتاب راهنما را با استفاده از links، به مجرد اینکه فصل پیکربندی شبکه شما را تمام نمودید، ببینید (در غیر اینصورت قادر به رفتن در اینترنت برای دیدن مستندات نخواهید بود):

Code Listing 3.8: Viewing the Online Documentation

# links http://www.gentoo.org/doc/en/handbook/handbook-x86.xml

می توانید با فشار دادن دگمه های Alt-F1 به ترمینال اصلی بازگردید.

انتخابی: راه اندازی SSH Daemon

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

برای راه اندازی SSH Daemon ، دستور زیر را اجرا نمایید:

Code Listing 3.9: Starting the SSH daemon

# /etc/init.d/sshd start

برای اینکه بتوانید از sshd استفاده نمایید، ابتدا لازم است تا شبکه تان را تنظیم نمایید. با بخش پیکربندی شبکه شما ادامه دهید.

۳ . پیکربندی شبکه شما

۳.الف.بررسی خودکار شبکه

ممکن هست خودش کار کند؟

اگر دستگاه شما بکمک یک سرور DHCP به یک شبکه Ethernet متصل گردید، این بسیار محتمل است که پیکربندی شبکه شما همین حالا بطور خودکار برای شما تنظیم شده باشد. اگر اینگونه است، باید بتوانید از بسیاری از مزیت های دستورهای تحت- شبکه مانند ssh, scp, ping, irssi, wget and links و غیره در لوح فشرده نصب، بهره مند شوید.

اگر شبکه برای شما پیکربندی شده باشد، دستور /sbin/ifconfig باید فهرست برخی رابط های شبکه داخل lo ، مانند eth0 را برای شما ارائه نماید:

Code Listing 1.1: /sbin/ifconfig for a working network configuration

# /sbin/ifconfig
(...)
eth0      Link encap:Ethernet  HWaddr 00:50:BA:8F:61:7A
          inet addr:192.168.0.2  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::50:ba8f:617a/10 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1498792 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1284980 errors:0 dropped:0 overruns:0 carrier:0
          collisions:1984 txqueuelen:100
          RX bytes:485691215 (463.1 Mb)  TX bytes:123951388 (118.2 Mb)
          Interrupt:11 Base address:0xe800 

انتخابی: پیکربندی انواع پراکسی

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

در غالب موارد، می توانید تنها با استفاده از hostname متغییرها را تعریف نمایید. در مثال، ما فرض می نماییم پراکسی به proxy.gentoo.org و پورت 8080 خوانده می شود.

Code Listing 1.2: Defining proxy servers

(If the proxy filters HTTP traffic)
# export http_proxy="http://proxy.gentoo.org:8080"
(If the proxy filters FTP traffic)
# export ftp_proxy="ftp://proxy.gentoo.org:8080"
(If the proxy filters RSYNC traffic)
# export RSYNC_PROXY="proxy.gentoo.org:8080"

اگر پراکسی شما نیاز به یک نام کاربری و کلمه عبور دارد، باید نحو زیر را برای متغییر پیگیری نمایید:

Code Listing 1.3: Adding username/password to the proxy variable

http://username:password@proxy.gentoo.org:8080

آزمایش شبکه

ممکن است بخواهید با سرور DNS ISP خودتان (در /etc/resolv.conf پیدا می شود) و یک پایگاه اینترنتی به انتخاب خودتان پینگ نمایید، فقط برای اینکه مطمئن شوید که بسته های شما در حال رسیدن به شبکه هستند، تفکیک پذیری نام DNS بدرستی انجام می شود و غیره.

Code Listing 1.4: Further network testing

# ping -c 3 www.gentoo.org

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

۳.ب. پیکربندی خودکار شبکه

اگر شبکه فورا آغاز به کار ننمود، برخی رسانه های نصب شده امکان استفاده را به شما می دهند net-setup (برای شبکه های معمولی یا بی سیم)، pppoe-setup (برای کاربران ADSL) یا pptp (برای کابران PPTP - قابل استفاده بروی x86,amd64,alpha,ppc و ppc64).

اگر رسانه نصب شما حاوی این ابزارها نبود یا شبکه شما هنوز کار نمی کند، با پیکربندی دستی شبکه ادامه دهید.

پیش فرض: استفاده از net-setup

ساده ترین راه برای تنظیم شبکه درصورتیکه بطورخودکار پیکربندی نشد، اجرای کد net-setup است:

Code Listing 2.1: Running the net-setup script

# net-setup eth0

net-setup تعدادی سئوال درباره محیط شبکه از شما خواهد پرسید. وقتی همه چیز انجام شد، شما باید یک ارتباط شبکه درحال کارکردن داشته باشید. چنانچه پیشتر شرح داده شد، ارتباط شبکه خودتان را امتحان نمایید. اگر پاسخ امتحان مثبت بود، تبریک عرض می نماییم! اکنون آماده اید تا جنتو نصب نمایید. از ادامه این بخش پرش نمایید و با بخش مهیا ساختن لوح ها ادامه دهید.

اگر شبکه شما هنوز کار نمی کند، با بخش پیکربندی دستی شبکه ادامه دهید.

جایگزین: استفاده از PPP

فرض کنیم برای ارتباط با اینترنت نیاز به PPPOE دارید، لوح فشرده نصب (هر نسخه ائی) با شامل ppp بودن کارها را برای شما آسان نموده. از کد فراهم شده pppoe-setup برای پیکربندی ارتباطتان استفاده نمایید. بیدرنگ دستگاه ethernet را خواهید داشت که به مودم adsl ارتباط پیدا نموده، نام کاربری و کلمه عبور، IP ها از سرور DNS شما و اگر بخواهید یا نه یک دیوار آتش ابتدائی.

Code Listing 2.2: Using ppp

# pppoe-setup
# pppoe-start

اگر چیزی به خطا رفت، مجددا نام کاربری و کلمه عبور خود را در /etc/ppp/pap-secrets یا /etc/ppp/chap-secrets بررسی نمایید و مطمئن شوید که از دستگاه ethernet درست استفاده می نمایید. اگر دستگاه ethernet شما وجود ندارد، باید ماژول مناسب شبکه خود را لود نمایید. در اینصورت شما باید با پیکربندی دستی شبکه چنانکه آنجا شرح خواهیم داد، ماژول مناسب شبکه خود را لود نمایید.

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

جایگزین: استفاده از PPTP

اگر به پشتیبانی PPTP نیاز دارید، می توانید از pptpclient که بوسیله لوح های فشرده ما فراهم شده ، استفاده نمایید. اما ابتدا لازم دارید تا مطمئن شوید که پیکربندی تان دقیق است.فایل /etc/ppp/pap-secrets یا /etc/ppp/chap-secrets را ویرایش نمایید که حاوی ترکیب نام کاربری و کلمه عبور دقیق هستند:

Code Listing 2.3: Editing /etc/ppp/chap-secrets

# nano -w /etc/ppp/chap-secrets

سپس فایل /etc/ppp/options.pptp را در صورت لزوم همخوان نمایید:

Code Listing 2.4: Editing /etc/ppp/options.pptp

# nano -w /etc/ppp/options.pptp

هنگامیکه همه آن انجام شد، فقط pptp را اجرا نمایید ( همراه با تنظیماتی که نتوانستید در options.pptp پیاده نمایید) تا به سرور ارتباط پیدا نمایید:

Code Listing 2.5: Connection to a dial-in server

# pptp <server ip>

اکنون با مهیا ساختن لوح ها ادامه دهید.

۳.ج. پیکربندی دستی شبکه

لود نمودن ماژول های شبکه مناسب

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

اگر net-setup یا pppoe-setup بدرستی کار ننمود، این امکان وجود دارد که کارت شبکه شما بصورت فوری پیدا نشده است. این بدان معنی است که شما باید ماژول کرنل متناسب را بطور دستی لود نمایید.

برای اینکه بیابید چه ماژول های کرنلی برای شبکه کردن فراهم نموده ایم از ls استفاده نمایید:

Code Listing 3.1: Searching for provided modules

# ls /lib/modules/`uname -r`/kernel/drivers/net

اگر درایوری برای کارت شبکه تان پیدا نمودید، از modprobe برای لود نمودن ماژول کرنل استفاده نمایید:

Code Listing 3.2: Using modprobe to load a kernel module

(As an example, we load the pcnet32 module)
# modprobe pcnet32

برای بررسی اینکه کارت شبکه تان اکنون شناخته شد، از ifconfig استفاده نمایید. یک کارت شبکه شناخته شده باید نتیجه ائی مانند این ارائه دهد:

Code Listing 3.3: Testing availability of your network card, successful

# ifconfig eth0
eth0      Link encap:Ethernet  HWaddr FE:FD:00:00:00:00  
          BROADCAST NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

هرچند اگر پیغام خطائی مانند زیر دریافت نمودید، کارت شبکه شناخته نشده است:

Code Listing 3.4: Testing availability of your network card, failed

# ifconfig eth0
eth0: error fetching interface information: Device not found

اگر بروی دستگاهتان چند کارت شبکه دارید، به نامهای eth0 ، eth1 و غیره نامیده می شوند.از کارکرد درست کارت شبکه ائی که استفاده می نمایید مطمئن شوید و بخاطر بسپارید که از نام دقیق آن در حین این مستند استفاده نمایید. ما فرض می گیریم که کارت شبکه eth0 استفاده می شود.

با فرض اینکه اکنون یک کارت شبکه شناخته شده دارید، می توانید net-setup یا pppoe-setup را مجددا اجرا نمایید (که اکنون باید کار نمایند)، اما با قرار دادن شما در زمره مردمان کنجکاو ما چگونگی پیکربندی دستی شبکه تان را شرح خواهیم داد.

بر اساس راه اندازی شبکه مربوط به خودتان یکی از بخش های زیر را انتخاب نمایید:

استفاده از DHCP

DHCP ( مخفف پروتکل پیکربندی میزبان پویا) دریافت خودکار اطلاعات شبکه را ممکن می سازد ( مانند IP آدرس، netmask، آدرس Broadcast، دروازه ورودی ، نام سرور و غیره (. این ابزار تنها در صورتیکه شما بروی شبکه خود یک سرور DHCP داشته باشید، کار می نماید ( و یا اینکه فراهم کننده شما خدمات DHCP برای شما فراهم آورده باشد) . برای اینکه یک رابط شبکه این اطلاعات را برای شما بطور خودکار دریافت نماید، از dhcpcd استفاده نمایید:

Code Listing 3.5: Using dhcpcd

# dhcpcd eth0
Some network admins require that you use the
hostname and domainname provided by the DHCP server.
In that case, use
# dhcpcd -HD eth0

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

آماده شدن برای دسترسی بی سیم

نکته: پشتیبانی برای فرمان iwconfig تنها برای معماری های x86 و amd64 و ppc بروی لوح های فشرده موجود است. می توانید هنوز الحاقات را راه اندازی نمایید در غیر اینصورت ساختارهای موجود در اینجا را پیگیری نمایید.

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

Code Listing 3.6: Showing the current wireless settings

# iwconfig eth0
eth0      IEEE 802.11-DS  ESSID:"GentooNode"                                   
          Mode:Managed  Frequency:2.442GHz  Access Point: 00:09:5B:11:CC:F2    
          Bit Rate:11Mb/s   Tx-Power=20 dBm   Sensitivity=0/65535               
          Retry limit:16   RTS thr:off   Fragment thr:off                       
          Power Management:off                                                  
          Link Quality:25/10  Signal level:-51 dBm  Noise level:-102 dBm        
          Rx invalid nwid:5901 Rx invalid crypt:0 Rx invalid frag:0 Tx          
          excessive retries:237 Invalid misc:350282 Missed beacon:84            

نکته: برخی کارتهای بیسیم ممکن است نام هائی مانند wlan0 یا ra0 بجای eth0 داشته باشند. برای شناخت نام دقیق دستگاه دستور را بدون هیچ پارامتر خط فرمانی اجرا نمایید.

برای غالب کاربران، دو تنظیم وجود دارد که ممکن است تغییر دادن آنها مهم باشد، یکی ESSID (نام شبکه بیسیم آکا) یا کلید WEP. اگر ESSID و آدرس Access Point فهرست شده از روی Access Point شما آماده است و شما از WEP استفاده نمی نمایید، بنابر این شبکه بی سیم شما در حال کارکردن است. اگر نیاز دارید تا ESSID خود را تغییر دهید، یا یک کلید WEP اضافه نمایید، می توانید پیگیر دستورهای زیر شوید:

نکته: اگر شبکه بی سیم شما بوسیله WPA یا WPA2 برپا گردیده، نیاز دارید تا از wpa_supplicant استفاده نمایید.برای اطلاعات بیشتر در پیکربندی شبکه های بی سیم در لینوکس جنتو، لطفا بخش شبکه سازی بی سیم را در کتاب راهنمای جنتو بخوانید.

Code Listing 3.7: Changing ESSID and/or adding WEP key

(This sets the network name to "GentooNode")
# iwconfig eth0 essid GentooNode

(This sets a hex WEP key)
# iwconfig eth0 key 1234123412341234abcd

(This sets an ASCII key - prefix it with "s:")
# iwconfig eth0 key s:some-password

بعد از آن می توانید تنظیمات بیسیم خودتان را با استفاده از iwconfig مجددا تایید نمایید. یکبار که بیسیم شما راه اندازی گردید، می توانید با پیکربندی انتخاب های سطح IP شبکه چنانکه در بخش بعدی (درک اصطلاحات علمی شبکه) شرح داده شده یا با استفاده از ابزار net-setup که قبلتر توضیح داده شد، ادامه دهید.

درک اصطلاحات علمی شبکه

نکته: اگر IP آدرس ، آدرس broadcast ، netmask و نام سرور خود را می دانید، می توانید از این زیر-بخش پرش نمایید و با بخش استفاده از ifconfig and route ادامه دهید.

اگر همه کارهای بالا ناموفق از آب درامد باید شبکه خودتان را بطور دستی پیکربندی نمایید. این به هیچ وجه سخت نیست. هرچند، برای اینکه بتوانید شبکه خودتان را بطور رضایت بخشی پیکربندی نمایید، نیاز دارید تا با برخی اصطلاحات علمی شبکه آشنا باشید. پس از خواندن این زیر-بخش، خواهید دانست یک gateway چه چیزی است، یک سرور netmask برای چیست، یک آدرس broadcast چگونه شکل میگیرد و چرا به nameservers نیاز دارید.

دریک شبکه، میزبان ها با IP addressهایشان شناخته می شوند (آدرس پروتکل اینترنتی). یک نمونه آدرس تلفیقی از کنار هم قرارگیری چهار عدد بین ۰ تا ۲۵۵ است. خوب کمینه ما به اینگونه آنرا بهتر درک می کنیم. در حقیقت هر یک آدرس IP شامل ۳۲ بیت (صفر و یک) است.اجازه دهید یک مثال را با هم ببینیم:

Code Listing 3.8: Example of an IP address

IP Address (numbers):   192.168.0.2
IP Address (bits):      11000000 10101000 00000000 00000010
                        -------- -------- -------- --------
                           192      168       0        2

هر آدرس IP که به یک میزبان منتصب می شود در همه شبکه ائی که با هم ارتباط برقرار می نمایند، یک آدرس یکتا است (برای مثال هر میزبانی که می توانید به آن دسترسی داشته باشید باید یک آدرس IP یکتا داشته باشد). برای توانائی تشخیص میزبان های داخل و خارج یک شبکه، آدرس های IP به دو بخش تقسیم می شوند: بخش network و بخش host.

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

Code Listing 3.9: Example of network/host separation

IP-address:    192      168      0         2
            11000000 10101000 00000000 00000010
Netmask:    11111111 11111111 11111111 00000000
               255      255     255        0
           +--------------------------+--------+
                    Network              Host

به بیان بهتر، ۱۹۲.۱۶۸.۰.۴ هنوز بخشی از شبکه مثال ما است، اما ۱۹۲.۱۶۸.۱.۲ نیست.

آدرس broadcast یک IP-address است با بخش شبکه ائی مشابه شبکه شما، اما فقط متفاوت با بخش میزبان. هر کدام از میزبان های روی شبکه شما این آدرس IP را شنود می نمایند. این برای تایید صحت بسته های broadcast شده است.

Code Listing 3.10: Broadcast address

IP-address:    192      168      0         2
            11000000 10101000 00000000 00000010
Broadcast:  11000000 10101000 00000000 11111111
               192      168      0        255
           +--------------------------+--------+
                     Network             Host

برای اینکه قادر به چرخش در اینترنت باشید، باید بدانید کدام میزبان ارتباط اینترنت را به اشتراک می گذارد. به این میزبان gateway گفته می شود.از آنجا که این یک میزبان معمولی است، یک آدرس IP معمولی نیز دارد (برای مثال ۱۹۲.۱۶۸.۰.۱).

پیشتر بیان نمودیم که هر میزبان آدرس IP خودش را دارد. برای اینکه به این میزبان با یک نام دسترسی پیدا کنید (بجای یک آدرس IP) نیاز به خدماتی دارید که یک نام (مثلا dev.gentoo.org ) را به یک آدرس IP (مثلا 64.5.62.82 ) ترجمه نماید. به چنین خدماتی خدمات نامگذاری گفته می شود. برای استفاده از چنین امکانی، باید name servers لازم را در /etc/resolv.conf تعریف نمایید.

در برخی موارد، gateway شما همچنین یک nameserver ایجاد می نماید. در غیر اینصورت شما باید nameserver را که توسط ISP تان تهیه شده است را وارد نمایید.

برای خلاصه نمودن، شما به اطلاعات ذیل برای ادامه نیاز دارید:

Network Item Example
Your IP address 192.168.0.2
Netmask 255.255.255.0
Broadcast 192.168.0.255
Gateway 192.168.0.1
Nameservers 195.130.130.5, 195.130.130.133

استفاده از ifconfig and route

برپا نمودن شبکه شما مرکب از سه مرحله است. ابتدا ما با استفاده از ifconfig یک آدرس IP به خودمان منتصب می کنیم. پس از آن با استفاده از route مسیر gateway را مسیریابی می نماییم. سپس با قرار دادن IP های nameserver در /etc/resolv.conf کار را به پایان می رسانیم.

برای تخصیص یک آدرس IP شما به یک آدرس IP و broadcast و netmask نیاز خواهید داشت، پس دستور ذیل را با جایگزین نمودن ${IP_ADDR} با آدرس IP خودتان، ${BROADCAST} را با آدرس broadcast خودتان و ${NETMASK} را با netmask خودتان، اجرا نمایید:

Code Listing 3.11: Using ifconfig

# ifconfig eth0 ${IP_ADDR} broadcast ${BROADCAST} netmask ${NETMASK} up

اکنون مسیریابی را با استفاده از route ایجاد نمایید. متغییر را با آدرس gateway IP خودتان تعویض نمایید:

Code Listing 3.12: Using route

# route add default gw ${GATEWAY}

اکنون /etc/resolv.conf را با نرم افزار ویرایش متن مورد علاقه تان باز نمایید، (در مثال ما از nano استفاده نموده ایم):

Code Listing 3.13: Creating /etc/resolv.conf

# nano -w /etc/resolv.conf

اکنون نام سرور(های) خودتان را با استفاده از قالب زیر وارد نمایید. مطمئن شوید که ${NAMESERVER1} و ${NAMESERVER2} را با آدرس nameserverهای اختصاص داده به خودتان جانشین نمایید:

Code Listing 3.14: /etc/resolv.conf template

nameserver ${NAMESERVER1}
nameserver ${NAMESERVER2}

همه اش همین است. اکنون با پینگ نمودن برخی سرورهای اینترنتی (مثلا Google ) شبکه خودتان را امتحان نمایید. اگر این کار کرد، پس تبریک می گوییم. اکنون برای نصب جنتو آماده اید. با بخش مهیا ساختن لوح ها ادامه دهید.

۴. مهیا ساختن لوح ها

۴.الف.مقدمه ائی بر شیوه قالب بندی

شیوه های قالب بندی

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

برای شروع، به معرفی شیوه های بلوک بندی می پردازیم. مشهورترین شیوه بلوک بندی احتمالا آن است که در آن اولین درایو در یک دستگاه لینوکس /dev/sda نامیده می شود. درایوهای SCSI و Serial ATA هر دو بصورت /dev/sd* برچسب می خورند; حتی درایوهای IDE بوسیله فریم ورک برچسب جدید زننده کرنل بصورت /dev/sd* برچسب خورده می شوند. اگر از یک شیوه فریم ورک قدیمی استفاده می نمایید، پس اولین درایو IDE شما /dev/hda خواهد بود.

شیوه بلوک بندی بالا یک رابط خلاصه شده دیسک را به نمایش می گذارد. برنامه های کاربر می توانند از این شیوه بلوک بندی برای فعل و انفعال با دیسک شما بدون نگرانی از اینکه درایو شما IDE است یا SCSI یا هر چیز دیگری، استفاده نمایند. برنامه می تواند بسادگی محل ذخیره سازی بروی دیسک را بشکل خوشه های همجوار یا بلوک های ۵۱۲-بیتی اتفاقی انتخاب شده، آدرس دهی نماید.

پارتیشن ها

هرچند در تئوری امکان پذیر است که از همه دیسک برای اسکان دستگاه لینوکس استفاده نمود، در عمل تقریبا هرگز چنین چیزی اتفاق نمی افتد. دستگاههای بلوک بندی همه دیسک به دستگاههای کوچکتر و قابل مدیریت تر شکسته می شود. بروی دستگاه های x86 این پارتیشن ها نامیده می شود.

پارتیشن ها به سه نوع تقسیم بندی می شوند: primary, extended و logical.

یک پارتیشن primary پارتیشنی است که اطلاعاتش را در MBR (ثبت کننده راه انداز اصلی) نگاهداری می نماید. بدلیل اینکه MBR بسیار کوچک است (۵۱۲ بیت) فقط چهار پارتیشن primary را می تواند تعریف نماید ( برای مثال /dev/sda1 تا /dev/sda4 ).

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

یک پارتیشن logical پارتیشنی است در داخل یک پارتیشن extended. تعریف آنها در MBR قرار نمی گیرد، اما در داخل پارتیشن های extended اعلان می شوند.

ذخیره سازی پیشرفته

لوح های فشرده نصب x86 برای LVM2 پشتیبانی فراهم می نمایند. LVM2 برای پارتیشن بندی شما را انعطاف بیشتری ارمغان می آورد. در حین ساختارهای نصب، ما بروی پارتیشن های معمولی تمرکز می نماییم، اما هنوز این نکته خوبی است که بدانید که LVM2 هم بخوبی پشتیبانی می شود.

۴.ب. طراحی نمایه پارتیشن بندی

نمایه پارتیشن بندی پیش فرض

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

پارتیشن فایل سیستم اندازه توصیف
/dev/sda1 ext2 32M Boot partition
/dev/sda2 (swap) 512M Swap partition
/dev/sda3 ext3 Rest of the disk Root partition

اگر علاقمندید که بدانید یک پارتیشن می تواند تا به چه اندازه بزرگ باشد، یا اینکه به چه تعداد پارتیشن نیازمندید، به خواندن ادامه دهید. در غیر اینصورت با خواندن استفاده کردن از fdisk برای پارتیشن بندی دیسک یا استفاده کردن از parted برای پارتیشن بندی دیسک تان دیسک خود را پارتیشن بندی نمایید (هر دو ابزارهای پارتیشن بندی هستند، fdisk مشهور و پایدار، و parted کمی جدیدتر اما با پشتیبانی پارتیشن های بزرگتر از ۲ترابایت)

چه مقدار و چه اندازه بزرگ؟

شماره پارتیشن ها بشدت به محیط شما وابسته است. برای مثال، اگر تعداد زیادی کاربر دارید، به احتمال زیاد شما باید /home خود را برای بالا بردن امنیت و راحت تر نمودن گرفتن پشتیبان جدا نمایید. اگر جنتو را به عنوان یک mailserver نصب می نمایید، باید /var خود را جدا نمایید چراکه mailها در /var نگهداری می شوند. یک انتخاب مناسب فایل سیستمی کارائی شما را بالا خواهد برد. Gameservers یک /opt مجزا خواهند داشت چراکه بیشتر سرورهای بازی در آنجا نصب خواهند شد. علت مشابه /home است: امنیت و پشتیبانگیری. مطمئنا شما می خواهید /usr را بزرگتر بگیرید: نه فقط بخاطر اینکه غالب برنامه ها در آن نگهداری می شوند، شاخه های پرتیج به تنهائی ۵۰۰ مگابایت را خواهند گرفت به استثناء کدمنبع های بسیاری که در آن نگهداری خواهد شد.

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

  • می توانید فایل سیستم کاراتری برای هر پارتیشن یا ولوم انتخاب نمایید
  • اگر یک ابزار مرده به نوشتن فایل ها بروی یک پارتیشن یا ولوم ادامه داد، کل سیستم شما خارج از استفاده نخواهد شد.
  • اگر لازم باشد، بررسی فایل های سیستمی زمان کمتری خواهد برد، چنانکه بررسی چندگانه می تواند بطور همزمان اعمال گردد (همچنین این مزیت شامل دیسک های چندگانه با پارتیشن های چندگانه نیز می گردد)
  • امنیت می تواند با مانت نمودن برخی پارتیشن ها بصورت فقط-خواندنی، nosuid (چشم پوشی از setuid ) و noexec (چشم پوشی از خوداجرائی) و غیره، بالاتر برود،

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

همچنین محدودیتی ۱۵ پارتیشنی برای SCSI و SATA تا زمانی که از برچسب GPT استفاده نمایید، وجود دارد.

یک مثال برای پارتیشن بندی، که ما برای یک دیسک ۲۰ گیگابایتی نشان می دهیم، برای یک لپتاپ استفاده می شود (شامل وب سرور، مایل سرور، گنوم، ... ):

Code Listing 2.1: Filesystem usage example

$ df -h
Filesystem    Type    Size  Used Avail Use% Mounted on
/dev/sda5     ext3    509M  132M  351M  28% /
/dev/sda2     ext3    5.0G  3.0G  1.8G  63% /home
/dev/sda7     ext3    7.9G  6.2G  1.3G  83% /usr
/dev/sda8     ext3   1011M  483M  477M  51% /opt
/dev/sda9     ext3    2.0G  607M  1.3G  32% /var
/dev/sda1     ext2     51M   17M   31M  36% /boot
/dev/sda6     swap    516M   12M  504M   2% <not mounted>
(Unpartitioned space for future usage: 2 GB)

دایرکتوری /usr بیشترین فضا را (۸۳٪) در اینجا اشغال نموده، اما بمجرد اینکه همه نرم افزارها نصب گردیدند، قابلیت وسعت یافتن بیشتر را ندارد. اگرچه اختصاص دادن مقداری کمی از گیگابایت های فضا برای /varممکن است افراطی به نظر برسد، بخاطر داشته باشید که پورتیج این دایرکتوری را بطور پیش فرض برای کامپایل کردن بسته ها استفاده می نماید. اگر می خواهید /var را بصورت معقولانه تری نگهداری نمایید، مثلا ۱ گیگابایت، نیاز دارید تا متغیر خودتان را در /etc/portage/make.conf برای اعلام فضای آزاد لازم برای کامپایل نمودن بسته های بسیار بزرگتر مانند OpenOffice تغییر دهید.

۴.ج. استفاده کردن از fdisk برای پارتیشن بندی نمودن دیسکتان

بسیار مهم: اگر محیط شما با پارتیشن هائی بزرگتر از ۲ترابایت سروکار دارند، لطفا از ساختارهای Using parted to Partition your Disk بجای این بخش استفاده نمایید. fdisk قادر به کار با پارتیشن های بزرگ نیست.

بخش متعاقب شرح می دهد چگونه با استفاده از fdisk مانند مثال پارتیشن بندی نماییم. پارتیشن بندی مثال پیشتر اشاره گردید:

پارتیشن توصیف
/dev/sda1 Boot partition
/dev/sda2 Swap partition
/dev/sda3 Root partition

پارتیشن بندی را مطابق با اولویت های خودتان تغییر دهید.

چشم انداز پارتیشن بندی در جریان

نرم افزار fdisk ابزاری معروف و قدرتمند برای شکافتن دیسک شما به پارتیشن ها است. نرم افزار fdisk را بروی دیسک خودتان (در مثال ما از /dev/sda استفاده می نماییم) روشن نمایید:

Code Listing 3.1: Starting fdisk

# fdisk /dev/sda

بمجرد راه اندازی fdisk ، با خط فرمانی که شبیه به این است روبرو می شوید:

Code Listing 5.17: fdisk prompt

Command (m for help): 

برای بنمایش درامدن پیکربندی فعلی دیسکتان p را تایپ نمایید:

Code Listing 3.3: An example partition configuration

Command (m for help): p

Disk /dev/sda: 240 heads, 63 sectors, 2184 cylinders
Units = cylinders of 15120 * 512 bytes

   Device Boot    Start       End    Blocks   Id  System
/dev/sda1   *         1        14    105808+  83  Linux
/dev/sda2            15        49    264600   82  Linux swap
/dev/sda3            50        70    158760   83  Linux
/dev/sda4            71      2184  15981840    5  Extended
/dev/sda5            71       209   1050808+  83  Linux
/dev/sda6           210       348   1050808+  83  Linux
/dev/sda7           349       626   2101648+  83  Linux
/dev/sda8           627       904   2101648+  83  Linux
/dev/sda9           905      2184   9676768+  83  Linux

Command (m for help): 

این دیسک بخصوص برای میزبانی هفت لینوکس پیکربندی گردیده (هرکدام با واژه متناظر linux در مقابلش فهرست گردیده) و یک پارتیشن سواپ هم بخوبی تدارک دیده شده (با واژه متناظر linux swap در مقابلش فهرست گردیده).

پاک کردن همه پارتیشن ها

در ابتدا همه پارتیشن های موجود بروی دیسک را پاک می نماییم. d را برای حذف کردن یک پارتیشن تایپ نمایید. برای مثال برای پاک نمودن پارتیشن /dev/sda1 موجود:

Code Listing 3.4: Deleting a partition

Command (m for help): d
Partition number (1-4): 1

پارتیشن برای پاک شدن فهرست می شود. اکنون اگر p را تایپ نمایید آنرا دیگر مشاهده نخواهید نمود، اما پارتیشن تا هنگامی که تغییراتتان را ذخیره ننمایید پاک نخواهد شد.اگر اشتباهی کردید و خواستید تغییرات اعمال نگردند، حرف q را فورا تایپ نمایید و کلید اینتر را فشار دهید و پارتیشن شما پاک نخواهد شد.

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

Code Listing 3.5: An empty partition table

Disk /dev/sda: 30.0 GB, 30005821440 bytes
240 heads, 63 sectors/track, 3876 cylinders
Units = cylinders of 15120 * 512 = 7741440 bytes

Device Boot    Start       End    Blocks   Id  System

Command (m for help):

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

ایجاد پارتیشن راه اندازی

ابتدا یک پارتیشن راه اندازی کوچک ایجاد می نماییم. برای ایجاد یک پارتیشن جدید n را تایپ نمایید، سپس p را برای انتخاب یک پارتیشن primary، و پس از آن 1 برای انتخاب اولین پارتیشن primary. هنگامیکه خط فرمان برای اولین سیلندر پرسید، اینتر را فشار دهید. هنگامیکه خط فرمان برای سیلندر انتهائی پرسید، برای ایجاد یک پارتیشن با اندازه ۳۲مگابایتی +32M را تایپ نمایید و پرچم راه انداز شدن را برای آن تنظیم نمایید:

Code Listing 3.6: Creating the boot partition

Command (m for help): n
Command action
  e   extended
  p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-3876, default 1): (Hit Enter)
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-3876, default 3876): +32M

اکنون هنگامیکه p را تایپ می نمایید، باید پارتیشن ایجاد شده را ببینید:

Code Listing 3.7: Created boot partition

Command (m for help): p

Disk /dev/sda: 30.0 GB, 30005821440 bytes
240 heads, 63 sectors/track, 3876 cylinders
Units = cylinders of 15120 * 512 = 7741440 bytes

   Device Boot    Start       End    Blocks   Id  System
/dev/sda1             1        14    105808+  83  Linux

می خواهیم این پارتیشن راه انداز دستگاه باشد. حرف a را برای کنترل راه انداز بودن تایپ نمایید و 1 را انتخاب کنید. اکنون اگر مجددا p را تایپ نمایید، متوجه یک * در ستون راه انداز می شوید.

ایجاد پارتیشن سواپ

اجازه دهید اکنون پارتیشن سواپ را ایجاد نماییم. برای انجام این کار، ابتدا برای ایجاد یک پارتیشن جدید n را تایپ نمایید، سپس p را تا به fdisk بگویید می خواهید دومین پارتیشن primary را ایجاد نمایید. سپس 2 را تایپ نمایید تا دومین پارتیشن primary در /dev/sda2 ایجاد شود، هنگامیکه خط فرمان درباره اولین سیلندر این پارتیشن پرسید، اینتر را فشار دهید. هنگامیکه خط فرمان درباره سیلندر انتهائی این پارتیشن پرسید، +512M را برای ایجاد یک پارتیشن به اندازه ۵۱۲مگابایت تایپ نمایید. بعد از آنکه این کار را انجام دادید، برای تنظیم نوع پارتیشن t را تایپ نمایید و 2 را برای انتخاب پارتیشنی که ایجاد نمودید و سپس 82 را برای تنظیم گونه پارتیشن به عنوان linux swap تایپ نمایید. پس از بپایان بردن این مراحل، تایپ p باید یک جدول پارتیشن بندی مانند زیر به شما نشان دهد:

Code Listing 3.8: Partition listing after creating a swap partition

Command (m for help): p

Disk /dev/sda: 30.0 GB, 30005821440 bytes
240 heads, 63 sectors/track, 3876 cylinders
Units = cylinders of 15120 * 512 = 7741440 bytes

   Device Boot    Start       End    Blocks   Id  System
/dev/sda1   *         1        14    105808+  83  Linux
/dev/sda2            15        81    506520   82  Linux swap

ایجاد پارتیشن ریشه

نهایتا، اجازه دهید پارتیشن ریشه را ایجاد نماییم. برای انجام این کار، n را برای ایجاد یک پارتیشن جدید تایپ کنید، سپس p را تا به fdisk بگویید که می خواهید یک پارتیشن primary ایجاد نمایید. سپس 3 را تایپ نمایید تا سومین پارتیشن primary را در /dev/sda3 ایجاد نمایید. هنگامیکه خط فرمان درباره اولین سیلندر این پارتیشن پرسید، اینتر را فشار دهید. هنگامیکه خط فرمان از سیلندر آخرین این پارتیشن پرسید، اینتر را فشار دهید تا پارتیشنی ایجاد نمایید که باقیمانده فضای دیسک شما را در بر بگیرد. بعد از اتمام این مراحل، تایپ p باید جدول پارتیشن بندی مانند زیر را به شما نشان دهد:

Code Listing 3.9: Partition listing after creating the root partition

Command (m for help): p

Disk /dev/sda: 30.0 GB, 30005821440 bytes
240 heads, 63 sectors/track, 3876 cylinders
Units = cylinders of 15120 * 512 = 7741440 bytes

   Device Boot    Start       End    Blocks   Id  System
/dev/sda1   *         1        14    105808+  83  Linux
/dev/sda2            15        81    506520   82  Linux swap
/dev/sda3            82      3876  28690200   83  Linux

ذخیره لایه سازی پارتیشن ها

برای ذخیره لایه سازی پارتیشن ها و خروج از fdisk حرف w را تایپ نمایید.

Code Listing 3.10: Save and exit fdisk

Command (m for help): w

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

۴.د. استفاده کردن از parted برای پارتیشن بندی دیسک شما

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

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

پارتیشن توصیف
/dev/sda1 پارتیشن راه انداز
/dev/sda2 پارتیشن سواپ
/dev/sda3 پارتیشن ریشه

لایه بندی پارتیشن خود را مطابق با اولویت های خودتان تغییر دهید.

مشاهده لایه بندی پارتیشن های موجود

برنامه parted مقداری از برنامه fdisk جدیدتر است. این برنامه یک واسط کاربری ساده برای پارتیشن بندی دیسک های شما ارائه می دهد و از دیسک های خیلی بزرگ (بیشتر از ۲ترابایت) پشتیبانی می نماید. برنامه parted را بروی دیسک (در مثال ما از /dev/sda استفاده می کنیم) روشن نمایید:

Code Listing 4.1: Starting parted

# parted /dev/sda
GNU Parted 2.3
Using /dev/vda
Welcome to GNU Parted! Type 'help' to view a list of commands.

برای اینکه همه حالت های قابل پشتیبانی توسط parted را دریابید، help را تایپ نمایید و دگمه اینتر را فشار دهید. فعلا فقط با درخواست parted برای نمایش همه پارتیشن های مورد استفاده در دیسک ادامه می دهیم. دستور print نیز می تواند برای آن استفاده گردد.

Code Listing 4.2: An example partition configuration shown by parted

(parted) print
Model: SCSI Block Device
Disk /dev/sda: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type     File system     Flags
 1      512B    2148MB  2148MB  primary  ext4
 2      2148MB  3222MB  1074MB  primary  linux-swap(v1)
 3      3222MB  21.5GB  18.3GB  primary                  lvm

انتخابی: تنظیم کردن برچسب جی پی تی

غالب دیسک های موجود بروی x86/amd64 از یک برچسب msdos استفاده می نمایند. هرچند اگر نقشه دارید تا پارتیشن های بزرگ ایجاد نمایید (بزرگتر از ۲ترابایت)، باید برای دیسک خود از برچسب gpt استفاده نمایید ( GUID Partition Type ) با استفاده از parted این کار می تواند بوسیله mklabel gpt انجام گردد:

اخطار: تغییر نوع پارتیشن همه پارتیشن های موجود بروی دیسک شما را پاک خواهد نمود. همه اطلاعات روی دیسک از بین خواهند رفت.

Code Listing 4.3: Setting the GPT label

(parted) mklabel gpt

پاک کردن همه پارتیشن ها

اگر اینکار هنوز انجام نشده (مثلا در حین استفاده از mklabel ، یا به این خاطر که دیسک کاملا فرمت نشده و جدید است)، ابتدا باید همه پارتیشن های روی دیسک را پاک نماییم. تایپ نمایید rm <number> در شرایطی که بجای <number> عدد پارتیشنی جایگزین شود که می خواهید پاک شود.

Code Listing 4.4: Removing a partition from the disk

(parted) rm 2

همین کار را برای همه پارتیشن های دیگری که به آنها نیاز ندارید، انجام دهید. هرچند، مطمئن شوید که اشتباهی نمی نمایید، چراکه parted تغییرات را فورا اعمال می نماید (برخلاف fdisk که آنها را نمایش می داد و به کاربر این امکان را می داد که قبل از ذخیره سازی یا خروج از fdisk این تغییرات را بازگرداند).

ایجاد کردن پارتیشن ها

اکنون اجازه دهید پارتیشن هائی را که پیشتر اشاره نمودیم را ایجاد نماییم. ایجاد پارتیشن با parted کار سختی نیست - همه آنچه لازم است انجام دهیم مطلع نمودن parted از اطلاعات زیر است:

  • نوع پارتیشنی که استفاده می نماییم. این گزینه معمولا primary است. در این مورد بیش از ۴ پارتیشن نمی توانید انتخاب نمایید (با برچسب پارتیشن msdos). در غیر اینصورت نیاز دارید تا چهارمین پارتیشن خود را که در انتهای دیسک قرار می گیرد را extended انتخاب نمایید و پارتیشن های logical را در آن ایجاد نمایید. اگر از یک برچسب پارتیشن gpt استفاده می نمایید، هیچ محدودیتی برای تعداد پارتیشن های primary خود ندارید.
  • نوع فایل سیستمی که استفاده می گردد. برنامه parted از غالب فایل های سیستمی پشتیبانی می نماید و می داند که آنها چه نوع ID برای استفاده از این پارتیشن نیاز دارند. این بدان معنی نیست که parted فایل سیستمی بروی پارتیشن ایجاد می نماید (می توانید با دستور mkpartfs آنرا انجام دهید، اما ما از دستور رایج mkfs.* استفاده خواهیم نمود). ID پارتیشن معمولا بوسیله ابزارهای خود شناس برای اینکه دریابند با قسمتی از یک پارتیشن چکار نمایند، استفاده می شوند.
  • محل شروع یک پارتیشن (که می تواند در مگابایت یا گیگابایت بیان شود)
  • محل انتهای یک پارتیشن ( که می تواند در مگابایت یا گیگابایت بیان شود)

یکی از فواید parted این است که چنانکه در مثال بعد می بینید، می توانید بسادگی فقط با استفاده از اندازه پارتیشن میزان دقیق آغاز و پایان موقعیت آنرا پیدا نمایید.

Code Listing 4.5: Creating the partitions

# Create a 32 mbyte /boot partition
(parted) mkpart primary ext2 0 32mb
Warning: The resulting partition is not properly aligned for best performance.
Ignore/Cancel? i

# Create a 512 mbyte swap partition
(parted) mkpart primary linux-swap 32mb 542mb

# Create a partition that spans the remaining disk.
# -1s (minus one s) means the end of the disk
(parted) mkpart primary ext4 542mb -1s
Warning: You requested a partition from 542MB to 21.5GB.
The closest location we can manage is 542MB to 21.5GB.
Is this still acceptable to you?
Yes/No? y

اکنون می توانید از لایه بندی پارتیشن print بگیرید تا بررسی نمایید که همه چیز در حد انتظارات باشد. هنگامیکه راضی شدید، از دستور quit برای خروج از partedاستفاده نمایید.

۴.ه. ایجاد کردن فایل سیستم ها

مقدمه

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

Filesystem ها

کرنل لینوکس از انواع مختلفی از filesystem ها پشتیبانی می نماید. ما x86.xml ext2 ,ext3, ext4, ReiserFS, XFS و JFS که عموما بیشتر در filesystem های روی لینوکس استفاده می شوند را شرح خواهیم داد.

فایل سیستمی ext2 فایل سیستمی امتحان شده و با ثبات لینوکس است اما ژورنال متادیتا ندارد، که به این معنی است که روال بررسی فایل سیستمی ext2 در هنگام آغاز بکار می تواند بسیار وقت گیر باشد. اکنون فهرست کاملی از انتخاب نسخه های جدیدتر وجود دارند که می توانند بسرعت تطبیق پذیری آغازین را بررسی نمایند و عموما در نقطه مقابل نسخه های فاقد-ژورنال قرار می گیرند. ژورنال های فایل سیستم ها از اتلاف وقت در هنگام راه اندازی دستگاه شما جلوگیری می نمایند و شمای فایل سیستم های شما در شرایطی متناقض قرار نمی گیرند. اگر تصمیم به نصب جنتو بروی یک دیسک بسیار کوچک (کوچکتر از ۴ گیگابایت) دارید، نیازخواهید داشت تا هنگام ایجاد filesystem به ext2 بگویید تا inode کافی برای اینکار کنار بگذارد. برنامه mke2fs از "bytes-per-inode" برای تنظیم محاسبه اینکه یک فایل سیستمی چه مقدار inodes باید داشته باشد استفاده می نماید. با راه اندازی نمودن mke2fs -T small /dev/<device> تعداد inode ها معمولا بصورت چهارگانه مقدار کمتری "bytes-per-inode" از هر ۱۶ کیلوبایت به هر یک ۴ کیلوبایت به فایل سیستمی داده خواهد شد. می توانید با استفاده از mke2fs -i <ratio> /dev/<device> این مقدار را میزان نمایید.

فایل سیستمی ext3 نسخه ژورنال شده ائی از فایل سیستم ext2 است، که ژورنال متادیتائی برای ترمیم سریع در افزایش بالابردن سبک های دیگر ژورنال کردن مانند داده های پرشده و ژورنال کردن داده های خواسته شده فراهم می آورد. این فایل سیستم از یک فهرست HTree که قابلیت واکنش بالائی را در هر شرایطی برای آن ایجاد می نماید استفاده می کند. بطور خلاصه ext3 یک فایل سیستم خیلی خوب و قابل اطمینان است. فایل سیستم ext3 یک فایل سیستم پیشنهادی برای هر هدفی بروی هر سکوئی است. اگر تصمیم به نصب جنتو بروی یک دیسک بسیار کوچک (کوچکتر از ۴ گیگابایت) دارید، نیازخواهید داشت تا هنگام ایجاد filesystem به ext3 بگویید تا inode کافی برای اینکار کنار بگذارد. برنامه mke2fs از "bytes-per-inode" برای تنظیم محاسبه اینکه یک فایل سیستمی چه مقدار inode ها باید داشته باشد استفاده می نماید. با راه اندازی نمودن mke2fs -T small /dev/<device> تعداد inodes معمولا بصورت چهارگانه مقدار کمتری "bytes-per-inode" از هر ۱۶ کیلوبایت به هر یک ۴ کیلوبایت به فایل سیستمی داده خواهد شد. می توانید با استفاده از mke2fs -i <ratio> /dev/<device> این مقدار را میزان نمایید.

فایل سیستمی ext4 فایل سیستمی ایجاد شده از انشعاب ext3 است که موجب خصیصه های جدیدی مانند بهبود کارائی و حذف محدودیت فضا بوسیله تغییر نوع مدیریت در فرمت روی-دیسک شده است. این فایل سیستم می تواند محدوده ۱ EB با حداکثر فایل سیستم ۱۶ ترابایتی را پوشش دهد. بجای تخصیص بلوک های نقشه بیتی سنتی ext2/3 فایل سیستمی ext4 از extents استفاده می نماید که کارائی فایل های بزرگ را افزایش داده و فراگمنتیشن را کاهش می دهد. فایل سیستمی ext4 همچنین الگوریتم تخصیص بلوک های رده بالائی (تخصیص تاخیر و تخصیص چندبلوکی) را موجب می شود که به درایور فایل سیستمی راه های بیشتر برای بهینه سازی داده های بروی دیسک می دهد. فایل سیستمی ext4 یک مصالحه بین پایداری کد ارتقاء محصول و نیاز به معرفی الحاقات در تقریبا اکثر فایل سیستم های قدیمی است.

فایل سیستمی JFS یک فایل سیستمی باکارائی بالای IBM است. فایل سیستمی JFS یک فایل سیستم سبک،سریع و قابل اطمینان بر مبنای B+tree با کارکرد خوب در شرایط مختلف است.

فایل سیستمی ReiserFS یک فایل سیستمی برمبنای B+tree ژورنال شده است که در مجموع کارکرد خوبی دارد، خصوصا در هنگام کار با تعداد زیادی فایل های کوچک در چرخه های سنگین CPU. به نظر می رسد ReiserFS به نسبت دیگر فایل های سیستمی کمتر گسترش می یابد.

فایل سیستمی XFS یک فایل سیستم با ژورنال کردن متادیتا است که با تنظیمات-خصیصه پرقدرت می آید و برای scalability بهینه سازی شده. به نظر می رسد فایل سیستمی XFS ساده گذری کمتری در مشکلات گوناگون سخت افزاری دارد.

بکاربستن یک filesystem بروی یک پارتیشن

برای ایجاد یک فایل سیستمی بروی یک پارتیشن یا حجم، ابزارهائی برای هر فایل سیستمی وجود دارد:

Filesystem دستور ایجاد کردن
ext2 mkfs.ext2
ext3 mkfs.ext3
ext4 mkfs.ext4
reiserfs mkreiserfs
xfs mkfs.xfs
jfs mkfs.jfs

برای مثال، برای داشتن ext2 بروی پارتیشن راه انداز (در مثال ما /dev/sda1 ) و ext3 (در مثال ما /dev/sda3 ) بروی پارتیشن ریشه (چنانکه در مثال ما آمد)، شما لازم دارید اینکار را انجام دهید:

Code Listing 5.1: Applying a filesystem on a partition

# mkfs.ext2 /dev/sda1
# mkfs.ext3 /dev/sda3

اکنون فایل های سیستمی بروی پارتیشن های جدیدی که ایجاد نمودید (یا حجم محلی) سوار شد.

فعال نمودن پارتیشن سواپ

دستور mkswap دستوری برای دادن ارزش آغازین به پارتیشن های سواپ است:

Code Listing 5.2: Creating a Swap signature

# mkswap /dev/sda2

برای فعال نمودن پارتیشن سواپ، از دستور swapon استفاده نمایید:

Code Listing 5.3: Activating the swap partition

# swapon /dev/sda2

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

۴.ه. مانت کردن

اکنون که پارتیشن های شما ارزش آغازین گرفتند و فایل سیستم ها در آنها جای گیر شدند، زمان مانت نمودند آن پارتیشن ها رسیده است. از دستور mount استفاده نمایید. فراموش ننمایید که دایرکتوری های لازم برای مانت نمودن هر پارتیشنی که ایجاد نمودید را بوجود بیاورید. به عنوان یک مثال ما پارتیشن های راه انداز و ریشه را مانت می نماییم:

Code Listing 6.1: Mounting partitions

# mount /dev/sda3 /mnt/gentoo
# mkdir /mnt/gentoo/boot
# mount /dev/sda1 /mnt/gentoo/boot

نکته: اگر می خواهید /tmp شما در پارتیشنی مجزا قرار گیرد، مطمئن شوید پس از مانت نمودن آن پرمیژن آنرا تغییر دهید: chmod 1777 /mnt/gentoo/tmp. این دستور همچنین برای /var/tmp هم صادق است.

همچنین ما نیاز داریم تا فایل سیستم proc (یک واسط مجازی با کرنل) را نیز در /proc مانت نماییم. اما اول نیازداریم تا فایل های خودمان را در پارتیشن ها قرار دهیم.

با نصب کردن فایل های نصب جنتو ادامه دهید.

۵. نصب کردن فایل های نصب جنتو

۵. الف. نصب کردن یک تاربال استیج

تنظیم کردن درست تاریخ/زمان

قبل از ادامه لازم دارید تا تاریخ/زمان خودتان را بررسی و بروزرسانی نمایید. یک زمان پیکربندی نشده ممکن است در آینده به سمت نتایج ناشناخته ائی سوق دهد!

برای تایید تاریخ/زمان دقیق، دستور date را اجرا نمایید:

Code Listing 1.1: Verifying the date/time

# date
Fri Mar 29 16:21:18 UTC 2005

اگر تاریخ/زمان بصورت اشتباه نمایش داده می شوند، با دستور نحودار date MMDDhhmmYYYY آنرا بروزرسانی نمایید ( M برای ماه، D برای روز، h برای ساعت، m برای دقیقه و Y برای سال). در این وهله، شما باید از زمان UTC استفاده نمایید. بعدها قادر خواهید بود منطقه زمانی خودتان را تعریف نمایید. برای مثال، برای تنظیم تاریخ به ۲۹ مارچ سال ۲۰۰۵ و ساعت ۱۶:۲۱ بصورت زیر اعمال می نماییم:

Code Listing 1.2: Setting the UTC date/time

# date 032916212005

ساختن انتخابتان

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

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

۵. ب. پیش فرض: استفاده کردن از یک استیج در اینترنت

پایین گذاری تاربال استیج

به نقطه مانت که فایل سیستم هایتان را مانت نمودید بروید (معمولا /mnt/gentoo ):

Code Listing 2.1: Going to the Gentoo mountpoint

# cd /mnt/gentoo

وابسته به رسانه نصاب شما، تعداد زیادی ابزار برای پایین گذاری یک استیج در اختیارتان است. اگر links را دارید، پس می توانید فورا به کنکاش در فهرست میرورهای جنتو و انتخاب یک میرور نزدیک به خودتان بروید: تایپ نمایید links http://www.gentoo.org/main/en/mirrors.xml و اینتر را فشار دهید.

اگر links را ندارید باید lynx را در دسترس داشته باشید. اگر لازم است تا از یک پراکسی عبور نمایید، متغییرهای http_proxy و ftp_proxy را export نمایید:

Code Listing 2.2: Setting proxy information for lynx

# export http_proxy="http://proxy.server.com:port"
# export ftp_proxy="http://proxy.server.com:port"

ما اکنون فرض می نماییم که شما links را در اختیار دارید.

یک میرور در نزدیکی هایتان پیدا نمایید. معمولا میرورهای HTTP کافی هستند، اما پروتکل های دیگر هم بخوبی موجودند. به دایرکتوری releases/x86/autobuilds/ بروید. آنجا شما باید همه فایل های استیج موجود برای معماریتان را ببینید (آنها ممکن است درون زیردایرکتوری های نامگذاری شده ائی بعد از زیردایرکتوری معماری شما نگهداری شده باشند). یکی را انتخاب نموده و D را برای پایین گذاری آن فشار دهید. هنگامیکه تمام شد، Q را برای خروج از مرورگر فشار دهید.

غالب کاربران PC باید از بایگانی استیج۳ stage3-i686-<release>.tar.bz2 استفاده نمایند. همه PC های جدید به i686 مطرح می شوند. اگر شما از یک ماشین قدیمی استفاده می نمایید، می توانید فهرست سازگار با i686 processors را بروی ویکی پدیا بررسی نمایید. پردازشگرهای قدیمی مانند پنتیوم، K5 ، K6 یا Via C3 و مشابه آنها نیاز به استیج۳ عمومی x86 دارند. پردازشگرهای قدیمی تر از i486 پشتیبانی نمی شوند.

Code Listing 2.3: Surfing to the mirror listing with links

# links http://www.gentoo.org/main/en/mirrors.xml

(If you need proxy support with links:)
# links -http-proxy proxy.server.com:8080 http://www.gentoo.org/main/en/mirrors.xml

مطمئن شوید تاربال stage3 را دانلود می نمایید - نصب با استفاده از یک استیج۱ یا استیج۲ دیگر پشتیبانی نمی شوند.

اگر می خواهید سلامت تاربال استیج پایین گذاری شده را بررسی نمایید، از openssl استفاده نمایید و خروجی آنرا با checksums فراهم شده بروی میرور مقایسه نمایید. فایل های digests چندین checksums فراهم می آورند، که هرکدام با الگوریتمی متفاوت بدست آمده اند. پیشنهاد از میان آنها SHA512 و Whirlpool هستند.

Code Listing 2.4: Calculating the integrity checksum of a stage tarball

## Calculating the SHA512 checksum
# openssl dgst -r -sha512 stage3-i686-<release>.tar.bz2
or
# sha512sum stage3-i686-<release>.tar.bz2

## Calculating the Whirlpool checksum
# openssl dgst -r -whirlpool stage3-i686-<release>.tar.bz2

پس از آن خروجی این دستور را با مقدار ازپیش ذخیره شده در فایل های .DIGESTS که به راحتی می توانند بروی میرورها پیدا شوند، مقایسه نمایید. مقدار باید همخوانی داشته باشد، در غیر اینصورت فایل پایین گذاری شده ممکن است خراب باشد (یا فایل digests ).

گشودن بسته بندی تاربال استیج

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

Code Listing 2.5: Unpacking the stage

# tar xvjpf stage3-*.tar.bz2

مطمئن شوید که از انتخاب های مشابه استفاده می نمایید (xvjpf). نحو x برای بازگشائی ، v برای درازنویسی ، برای دیدن آنچه در حین مراحل بازگشائی انجام می شود (انتخابی)، j برای بازگشائی با بی زیپ تو ، p برای نگاه داشتن پرمیژن ها و f برای مشخص نمودن آنکه ما می خواهیم فایل را عینا بازگشائی نماییم، نه با ورودی استاندارد.

اکنون که استیج نصب گردید، با نصب کردن پرتیج ادامه دهید.

۵. ج. نصب کردن پرتیج

بازگشائی یک تصویر فوری پرتیج

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

پایین گذاری و نصب یک تصویر فوری پرتیج

به نقطه مانت کردن که فایل های سیستمی تان را مانت نمودید ( معمولا شبیه /mnt/gentoo ) بروید:

Code Listing 3.1: Going to the Gentoo mountpoint

# cd /mnt/gentoo

مرورگر links (یا lynx ) را روشن نمایید و به فهرست میرورهای جنتو بروید. یک میرور نزدیک به خودتان انتخاب نمایید و دایرکتوری snapshots/ را باز نمایید. آنجا آخرین تصویر فوری پرتیج (portage-latest.tar.bz2) را با انتخاب آن و فشار دادن D پایین گذاری نمایید.

Code Listing 3.2: Browsing the Gentoo mirrorlist

# links http://www.gentoo.org/main/en/mirrors.xml

اکنون با فشار دادن Q از مرورگرتان خارج شوید.شما اکنون یک تصویرفوری پرتیج که در /mnt/gentoo نگهداری می شود دارید.

اگر می خواهید سلامت تصویرفوری پایین گذاری شده را بررسی نمایید، از md5sum استفاده نمایید و خروجی آنرا با MD5 checksum فراهم آمده بروی میرور مقایسه نمایید.

Code Listing 3.3: Checking integrity of a Portage snapshot

# md5sum -c portage-latest.tar.bz2.md5sum
portage-latest.tar.bz2: OK

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

Code Listing 3.4: Extracting the Portage snapshot

# tar xvjf /mnt/gentoo/portage-latest.tar.bz2 -C /mnt/gentoo/usr

۵.د. پیکربندی خصیصه های کامپایل

مقدمه

برای بهینه سازی جنتو، می توانید تعدادی متغییر را تنظیم نمایید که روی رفتارهای پرتیج تاثیر می گذارند. همه آن متغییرها می توانند به عنوان متغییرهای محیطی (با استفاده از export ) تنظیم شوند اما پایدار نیستند. برای اینکه تنظیمات خودتان را بگیرید، پرتیج برای شما /etc/portage/make.conf را فراهم آورده، یک فایل پیکربندی برای پرتیج. این همین فایلی است که اکنون آنرا پیکربندی می نماییم.

نکته: فهرست تشریحی از همه متغییرهای ممکن را می توان در /mnt/gentoo/usr/share/portage/config/make.conf.example پیدا نمود. برای یک نصب موفق جنتو شما فقط به تنظیم متغییرهائی نیاز دارید که در ذیل به آنها اشاره گردیده.

ویرایشگر متن خود را راه اندازی نمایید (در این راهنما ما از nano استفاده می نماییم) تا بتوانیم متغییرهائی را که از این پس اشاره می نماییم را برای بهینه سازی تغییر دهیم.

Code Listing 4.1: Opening /etc/portage/make.conf

# nano -w /mnt/gentoo/etc/portage/make.conf

چنانکه متوجه شده اید، فایل make.conf.example بصورت عمومی ساخته شده: خطوط توضیحات با علامت # آغاز می شوند، خطوط دیگر که متغییرها را تعریف می نمایند از نحو VARIABLE="content" استفاده می نمایند. فایل make.conf از نحو مشابهی استفاده می نماید. تعدادی از آن متغییرها در آینده توضیح داده خواهند شد.

CFLAGS و CXXFLAGS

متغییرهای CFLAGS و CXXFLAGS بهینه سازی پرچمک هائی را به ترتیب برای کامپایلرهای gcc سی و سی پلاس پلاس تعریف می نمایند. چنانکه ما آنها را بطور عمومی در اینجا تعریف نمودیم، فقط زمانی بهترین کارکرد را از آنان خواهید داشت که این پرچمک ها را برای هر برنامه بطور جداگانه بهینه سازی نمایید.

در make.conf شما باید پرچم های بهینه سازی که فکر می کنید عموما دستگاه شما را فعالتر می نمایند را تعریف نمایید. تنظیمات آزمایشی در این متغییرها قرار ندهید; بهینه سازی خیلی شدید می تواند رفتار برنامه های شما را خراب نمایند (شکست ، یا بدتر از آن عملکرد غلط).

ما همه انتخاب های ممکن بهینه سازی را توضیح نخواهیم داد. اگر می خواهید همه آنها را بشناسید، راهنما(ها)ی برخط گنو یا صفحه اطلاعات gcc را بخوانید ( info gcc -- فقط بروی سیستم های در حال کار لینوکسی کار می کند). فایل make.conf.example همچنین خودش حاوی مقدار زیادی از مثال ها و اطلاعات است; فراموش ننمایید که آنها را نیز بخوانید.

اولین تنظیم پرچمک -march= یا -mtune= است، که نام معماری مخاطب را مشخص می نماید. انتخاب های ممکن در فایل make.conf.example (به عنوان توضیحات) شرح داده شده اند. یک مقدار عموما استفاده شده native است که به کامپایلر اعلام می نماید که معماری مخاطب همین دستگاه موجود است (همین که شما در حال نصب بروی آن هستید).

دومین آنها پرچمک -O است (که یک حرف O بزرگ است، نه یک صفر)، که پرچمک رده بهینه سازی gcc را مشخص می نماید. رده های ممکن s (برای بهینه سازی اندازه)، 0 (صفر - برای بدون بهینه سازی)، 1 ، 2 یا حتی 3 برای پرچمک های سرعت بخشیدن (هر رده پرچمک های مشابه نمونه قبلی خود را دارد به اضافه مقداری اضافات) هستند. -O2 پیش فرض پیشنهادی است. -O3 معروف است به موجب ایراد گردیدن در هنگامیکه دستگاه بطور وسیع استفاده می گردد، بنابر این ما پیشنهاد می نماییم که شما به همان -O2 بچسبید.

بهینه سازی محبوب دیگر -pipe است (استفاده از تونل های عبور سریعتر از فایل های موقت برای ارتباط بین طبقه های مختلف عملیات کامپایل). این گزینه، تماسی با کدهای ساخته شده ندارد، اما از حافظه بیشتری استفاده می نماید. در دستگاه هائی با حافظه کم، ممکن است gcc از کار بیافتد. در آن مورد از این پرچمک استفاده ننمایید.

استفاده از -fomit-frame-pointer (که در یک ثبت برای توابعی که نیازی به آنها نیست نگهدارنده فریم پوینتر ندارد) ممکن است واکنش جدی بروی اشکالزدائی برنامه ها داشته باشد.

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

Code Listing 4.2: Defining the CFLAGS and CXXFLAGS variable

CFLAGS="-O2 -march=i686 -pipe"
# Use the same settings for both variables
CXXFLAGS="${CFLAGS}"

نکته: همچنین ممکن است بخواهید برای اطلاعات بیشتر درباره اینکه تنظیمات عملیات کامپایل مختلف چگونه می توانند بروی دستگاه شما تاثیر بگذارند مایل باشید نگاهی به راهنمای بهینه سازی عملیات کامپایل بیاندازید.

MAKEOPTS

بوسیله MAKEOPTS تعریف می نمایید هنگامیکه یک بسته را نصب می نمایید، چه تعداد عملیات کامپایل باید بطور موازی با یکدیگر اجرا شوند.یک انتخاب خوب تعداد CPU ها (یا هسته های CPU) بروی دستگاه شخصی شما است، اما این مسیر راهنمائی همیشه بهترین گزینه نیست.

Code Listing 4.3: MAKEOPTS for a regular, 1-CPU system

MAKEOPTS="-j2"

آماده، هدف، آتش!

فایل /mnt/gentoo/etc/portage/make.conf خود را مطابق اولویت های خودتان بروز رسانی نمایید و آنرا ذخیره نمایید (کاربران nano باید Ctrl-X را فشار بدهند). اکنون آماده اید تا با نصب کردن مبانی دستگاه جنتو ادامه بدهید.

۶. نصب کردن مبانی دستگاه جنتو

۶. الف. Chrooting

انتخابی: انتخاب کردن میرورها

برای درخواست پایین گذاری سریع کد منبع پیشنهاد می شود که یک میرور با سرعت انتخاب نمایید. پرتیج بدنبال متغییر GENTOO_MIRRORS به فایل make.conf شما نگاه خواهد نمود و از میرورهای فهرست شده در آن استفاده خواهد نمود. می توانید به کنکاش در فهرست میرور بپردازید و بدنبال یک یا چند میرور نزدیک به خودتان (و آنکه از همه سرعت بیشتری دارد)، بگردید، اما ما هم یک ابزار مفید که به آن mirrorselect گفته می شود تهیه نموده ایم که شما را با یک رابط کاربری زیبا برای انتخاب میرورهائی که می خواهید مهیا می نماید. فقط در میان میرورها بالا و پایین نمایید و انتخاب نمایید و برای انتخاب یکی یا بیشتر از آنها دگمه اسپیس بار را فشار دهید.

Code Listing 1.1: Using mirrorselect for the GENTOO_MIRRORS variable

# mirrorselect -i -o >> /mnt/gentoo/etc/portage/make.conf

دومین تنظیمات مهم در make.conf تنظیمات SYNC است.این متغییر شامل سرورهای rsync است که در هنگامیکه می خواهید شاخه پرتیج (مجموعه ائی از ebuild ها، کدک هائی که حاوی همه اطلاعاتی که پرتیج برای پایین گذاری و نصب نرم افزارها لازم دارد) را بروز رسانی نمایید استفاده می شود. هرچند می توانید SYNC سرورها را بطور دستی برای خودتان وارد نمایید، mirrorselect می تواند آنرا براحتی برای شما اداره نماید:

Code Listing 1.2: Selecting an rsync mirror using mirrorselect

# mirrorselect -i -r -o >> /mnt/gentoo/etc/portage/make.conf

پس از اجرا نمودن mirrorselect عاقلانه است که مجددا تنظیمات خودتان را در /mnt/gentoo/etc/portage/make.conf بررسی نمایید!

نکته: اگر می خواهید سرورهای SYNC را بطور دستی در make.conf تنظیم نمایید باید برای پیدا نمودن نزدیک ترین میرور به خودتان فهرست میرورهای مجتمع را بررسی نمایید. ما پیشنهاد می نماییم یک rotation مانند rsync.us.gentoo.org انتخاب نمایید، علاوه بر آن یک میرور منفرد نیز انتخاب نمایید. اینکار کمک می نماید که یک فایل ایمن در مواقعی که یک میرور خاص برخط نیست لود و فراهم نمایید.

نسخه برداری اطلاعات DNS

قبل از اینکه وارد محیط جدید شویم، یک چیز هنوز باقی مانده که باید انجام شود و آن نسخه برداری از روی اطلاعات DNS موجود در /etc/resolv.conf است.باید اینکار را انجام دهید تا مطمئن شوید شبکه شما بعد از ورود به محیط جدید هنوز کار می کند. فایل /etc/resolv.conf حاوی nameserver های شبکه شماست.

Code Listing 1.3: Copy over DNS information

(The "-L" option is needed to make sure we don't copy a symbolic link)
# cp -L /etc/resolv.conf /mnt/gentoo/etc/

مانت کردن فایل سیستم های ضروری

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

فایل سیستم /proc را بروی /mnt/gentoo/proc مانت می نماییم تا به عملیات نصب امکان دهیم تا از اطلاعات فراهم شده-کرنل درون محیط chroot استفاده نماید، و بعد از آن فایل سیستم های /dev و /sys را بطور bind-مانت می نماییم.

Code Listing 1.4: Mounting /proc and /dev

# mount -t proc none /mnt/gentoo/proc
# mount --rbind /sys /mnt/gentoo/sys
# mount --rbind /dev /mnt/gentoo/dev

وارد شدن به محیط جدید

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

این chroot نمودن در طی سه مرحله انجام می پذیرد. ابتدا ما ریشه را از / (بروی رسانه نصب) به /mnt/gentoo (بروی پارتیشن) با استفاده از chroot تغییر می دهیم. پس از آن با استفاده از env-update محیط جدیدی ایجاد می نماییم که ضرورتا متغییرهای محیط را ایجاد می نماید. سر انجام، ما آن متغییرها را با استفاده از source در داخل حافظه لود می نماییم.

Code Listing 1.5: Chrooting into the new environment

# chroot /mnt/gentoo /bin/bash
# env-update
>> Regenerating /etc/ld.so.cache...
# source /etc/profile
# export PS1="(chroot) $PS1"

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

اگر هر زمان نیاز به ترمینال یا کنسول دیگری برای دسترسی به محیط chroot شده داشتید، همه آنچه نیاز به انجام آن دارید، اجرا نمودن مجدد مراحل بالا است.

۶. ب. پیکربندی کردن پرتیج

بروزرسانی کردن شاخه پرتیج

اکنون باید شاخه پرتیج خودتان را به آخرین نسخه بروزرسانی نمایید. دستور emerge --sync اینکار را برای شما انجام می دهد.

Code Listing 2.1: Updating the Portage tree

# emerge --sync
(If you're using a slow terminal like some framebuffers or a serial
console, you can add the --quiet option to speed up this process:)
# emerge --sync --quiet

اگر در پشت دیوار آتشی که تردد rsync را مسدود می نماید هستید، می توانید از emerge-webrsync استفاده نمایید که یک تصویرفوری پرتیج را برای شما پایین گذاری و نصب می نماید.

اگر به شما هشدار داده شد که نسخه جدید از پرتیج ایجاد شده و شما باید پرتیج خود را بروزرسانی نمایید، اکنون باید با استفاده از emerge --oneshot portage اینکار را انجام دهید.

انتخاب کردن پروفایل درست

ابتدا جای یک تعریف کوچک وجود دارد.

یک پروفایل یک بلوک قابل ساخت برای هر دستگاه جنتوئی است. نه فقط مقدارهای از پیش تعریف شده ائی را به متغییرهای USE و CFLAGS و دیگر متغییرهای مهم اضافه می نماید، بلکه سیستم را هم در طیف محرزی ار نسخه های بسته ها قفل می نماید.

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

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

Code Listing 2.2: Verifying system profile

# eselect profile list
Available profile symlink targets:
  [1]   default/linux/x86/10.0 *
  [2]   default/linux/x86/10.0/desktop
  [3]   default/linux/x86/10.0/server

چنانکه می بینید، برای برخی معماری ها زیرپروفایل های desktop و server آماده هستند. اجرای دستور eselect profile list همه پروفایل های آماده را نمایش می دهد.

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

Code Listing 2.3: Changing profiles

# eselect profile set 2

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

پیکربندی متغییر USE

متغییر USE یکی از قوی ترین متغییرهائی است که جنتو برای کاربران خود فراهم آورده. برنامه های مختلف می توانند با یا بدون پشتیبانی انتخابی برای اقلام قطعی کامپایل شوند. برای مثال، برخی برنامه ها می توانند با پشتیبانی-gtk یا پشتیبانی-qt کامپایل شوند. برخی دیگر می توانند با یا بدون پشتیبانی SSL کامپایل شوند. حتی برخی برنامه ها می توانند با پشتیبانی framebuffer ( svgalib ) بجای پشتیبانی X11 ( X-server ) کامپایل گردند.

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

در متغییر USE کلمات کلیدی را تعریف می نمایید که نقشه شرایط کامپایل را ترسیم می نمایند. برای مثال، ssl پشتیبانی-ssl را در برنامه هائی که آنرا پشتیبانی می نمایند، کامپایل خواهد نمود. -X پشتیبانی X-server را (به علامت منها در جلوی آن توجه نمایید) حذف خواهد نمود. gnome gtk -kde -qt4 برنامه های شما را با پشتیبانی gnome (و gtk) کامپایل خواهد نمود، و بدون پشتیبانی kde (و qt)، که دستگاه شما را مختص استفاده از GNOME خواهد ساخت.

تنظیمات پیش فرض USE در فایل های make.defaults در پروفایل شما قرار گرفته اند. می توانید فایل های make.defaults را در دایرکتوری /etc/portage/make.profile که بخوبی در بالای همه دایرکتوری ها قرار گرفته، پیدا نمایید. تنظیمات پیش فرض USE مجموع همه تنظیمات USE در همه فایل های make.defaults است. آنچه در /etc/portage/make.conf قرار می دهید در مقابل این تنظیمات پیش فرض قرار می گیرد. اگر چیزی به تنظیمات USE اضافه نمایید، به فهرست پیش فرض اضافه می گردد. اگر چیزی را در تنظیمات حذف نمایید (با قرار دادن یک منها در مقابل آن)، از فهرست پیش فرض حذف می گردد (البته اگر اصلا در فهرست پیش فرض قرار داشته باشد). هرگز چیزی را در داخل دایرکتوری /etc/portage/make.profile تغییر ندهید; این دایرکتوری هنگامی که پرتیج خود را بروزرسانی می نمایید، دوباره نویسی می شود!

توضیحات کامل درباره USE را می توان در بخش دوم کتاب راهنمای جنتو در بخش پرچمک های یو اس ائی پیدا نمود، توضیح کاملی درباره USE های موجود را می توان بروی دستگاهتان در /usr/portage/profiles/use.desc پیدا نمود.

Code Listing 2.4: Viewing available USE flags

# less /usr/portage/profiles/use.desc
(You can scroll using your arrow keys, exit by pressing 'q')

به عنوان یک مثال ما یک تنظیم USE برای یک دستگاه برمبنای-KDE به همراه DVD، ALSA و قابلیت ضبط لوح فشرده را نمایش می دهیم:

Code Listing 2.5: Opening /etc/portage/make.conf

# nano -w /etc/portage/make.conf

Code Listing 2.6: USE setting

USE="-gtk -gnome qt4 kde dvd alsa cdr"

۷. پیکربندی نمودن کرنل

۷.الف. منطقه زمانی

ابتدا لازم است تا منطقه زمانی خودتان را انتخاب نمایید تا دستگاه شما دریابد در چه موقعیتی قرار دارد. به منطقه های زمانی در /usr/share/zoneinfo نگاه بیاندازید و سپس آنرا در /etc/localtime رونوشت نمایید. لطفا از منطقه زمانی به شکل /usr/share/zoneinfo/Etc/GMT* دوری نمایید چون به عنوان یک نام، منطقه قابل توقعی را نشان نمی دهد. برای مثال GMT-8 درواقع GMT+8 است.

Code Listing 1.1: Setting the timezone information

# ls /usr/share/zoneinfo
(Suppose you want to use Europe/Brussels)
# cp /usr/share/zoneinfo/Europe/Brussels /etc/localtime
(Next set the timezone)
# echo "Europe/Brussels" > /etc/timezone

۷.ب.نصب کردن کدهای منبع

انتخاب یک کرنل

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

برای دستگاه های مبتنی بر x86 ما gentoo-sources را داریم (کدمنبع کرنل برای خصیصه های بیشتر).

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

Code Listing 2.1: Installing a kernel source

# emerge gentoo-sources

هنگامیکه نگاهی به /usr/src بیاندازید باید میانبری بنام linux به کدمنبع کرنل خودتان ببینید. در این مورد، کدمنبع gentoo-sources-3.3.8 است. نسخه شما ممکن است متفاوت باشد، پس این را بخاطر داشته باشید.

Code Listing 2.2: Viewing the kernel source symlink

# ls -l /usr/src/linux
lrwxrwxrwx    1 root   root    12 Oct 13 11:04 /usr/src/linux -> linux-3.3.8

اکنون زمان آن است که کد منبع کرنل خود را پیکربندی و کامپایل نمایید. برای اینکار می توانید از genkernel استفاده نمایید، که کرنل عمومی مانند آنکه توسط لوح فشرده نصب استفاده می شود، خواهد ساخت. ما ابتدا پیکربندی " دستی " را به خاطر اینکه بهترین راه برای بهینه سازی محیط شما است، شرح می دهیم.

اگر می خواهید کرنل خودتان را بطور دستی دیکربندی نمایید، با پیش فرض: پیکربندی دستی ادامه دهید. اگر می خواهید از genkernel استفاده نمایید، باید جایگزین: استفاده از genkernel را بجای آن بخوانید.

۷.ج. پیش فرض: پیکربندی دستی

مقدمه

پیکربندی دستی یک کرنل اغلب به عنوان سخت ترین کاری که یک کاربر لینوکس در تمام مدت انجام می دهد دیده می شود. این چیزی بیشتر از واقعیت است -- بعد از پیکربندی یک مشت از کرنل ها شما اصلا بخاطر نخواهید آورد که اینکار زمانی مشکل بوده ;)

هرچند، یک چیز درست است : شما باید هنگامیکه شروع به پیکربندی دستی یک کرنل می نمایید دستگاهتان را بخوبی بشناسید. غالب اطلاعات می توانند به کمک emergingemerge pciutils گردآوری شوند که شامل lspci نیز می شود. شما اکنون قادرید درون محیط chroot شده از lspci استفاده نمایید. ممکن است بطور ایمنی هر اخطار pcilib را نادیده بگیرید (شبیه pcilib: cannot open /sys/bus/pci/devices ) که lspci به بیرون می دهد. بطور جایگزین می توانید lspci را از یک محیط non-chrooted اجرا نمایید. نتیجه مشابه است. همچنین می توانید lsmod را برای اینکه ببینید لوح فشرده نصب از چه ماژول هائی استفاده نموده اجرا نمایید (اینکار ممکن است شما را به شکل زیبائی آگاه نماید که چه چیز را باید فعال نمایید).

اکنون به دایرکتوری کدمنبع کرنل خودتان بروید و make menuconfig را اجرا نمایید. این دستور یک فهرست انتخاب پیکربندی نیمه راهنمائی کننده را روشن خواهد نمود.

Code Listing 3.1: Invoking menuconfig

# cd /usr/src/linux
# make menuconfig

شما با چندین بخش پیکربندی ملاقات خواهید نمود. ما ابتدا برخی انتخاب ها را که شما باید فعال نمایید (در غیر اینصورت جنتو کارنخواهد نمود و یا بدون اضافات پیچیده بخوبی کار نخواهد نمود) را فهرست خواهیم نمود.

فعال نمودن انتخاب های مورد نیاز

مطمئن شوید که هر درایوری که برای راه اندازی دستگاه شما حیاتی است (مانند کنترل کننده های SCSI ، ...) همگی در داخل کرنل کامپایل می شوند و نه به شکل یک ماژول، در غیر اینصورت دستگاه شما قادر به راه افتادن کامل نخواهد بود.

اکنون خانواده پردازشگر صحیح را انتخاب نمایید:

Code Listing 3.2: Selecting correct processor family

Processor type and features --->
  (Change according to your system)
  (Athlon/Duron/K7) Processor family

در ادامه Maintain a devtmpfs file system to mount at /dev را انتخاب نمایید که فایل های دستگاه های بحرانی که هم اکنون در پردازشگر راه انداز وجود دارند هستند.

Code Listing 3.3: Enabling devtmpfs support

Device Drivers --->
  Generic Driver Options --->
    [*] Maintain a devtmpfs filesystem to mount at /dev
    [ ]   Automount devtmpfs at /dev, after the kernel mounted the rootfs

اکنون به File Systems بروید و پشتیبانی از فایل سیستمی را که استفاده می نمایید انتخاب نمایید. آنها را به عنوان ماژول کامپایل نکنید ، در غیر اینصورت دستگاه جنتوی شما قادر نخواهد بود پارتیشن های شما را مانت کند. همچنین Virtual memory و /proc file system را نیز انتخاب نمایید.

Code Listing 3.4: Selecting necessary file systems

File systems --->
(Select one or more of the following options as needed by your system)
  <*> Second extended fs support
  <*> Ext3 journalling file system support
  <*> The Extended 4 (ext4) filesystem
  <*> Reiserfs support
  <*> JFS filesystem support
  <*> XFS filesystem support
  ...
  Pseudo Filesystems --->
    [*] /proc file system support
    [*] Virtual memory file system support (former shm fs)

(Enable GPT partition label support if you used that previously)
  Partition Types --->
    [*] Advanced partition selection
      ...
      [*] EFI GUID Partition support

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

Code Listing 3.5: Selecting PPPoE necessary drivers

Device Drivers --->
  Network device support --->
    <*> PPP (point-to-point protocol) support
    <*>   PPP support for async serial ports
    <*>   PPP support for sync tty ports

دو انتخاب فشرده شده به هم آسیبی نمی زنند اما ضرورتی هم ندارند، هنگامیگه کرنل را پیکربندی می نمایید تا در حالت PPPoE باشد، انتخاب PPP over Ethernet که ممکن است فقط بوسیله ppp استفاده شوند، هیچ کاری انجام نمی دهند.

اگر به آن نیاز داشتید، فراموش ننمایید که پشتیبانی کرنل از کارت ethernet خودتان را هم وارد نمایید.

اگر یک CPU اینتل دارید که از HyperThreading (tm) پشتیبانی می نماید، یا دستگاهی با چند CPU دارید، باید " پشتیبانی از چند پردازشگری متوازن " را نیز انتخاب نمایید:

Code Listing 3.6: Activating SMP support

Processor type and features  --->
  [*] Symmetric multi-processing support

نکته: در دستگاه های چند هسته ائی، هر هسته یک پردازشگر به حساب می آید.

اگر بیش از ۴ گیگابایت RAM دارید، لازم است تا "High Memory Support (64G)" را فعال نمایید.

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

Code Listing 5.17: Activating USB Support for Input Devices

Device Drivers --->
  [*] HID Devices  --->
    <*>   USB Human Interface Device (full HID) support

اگر برای لپ تاپ خودتان پشتیبانی از PCMCIA می خواهید، فراموش ننمایید که پشتیبانی از کارت پل PCMCIA حاضر بروی دستگاهتان را فعال نمایید:

Code Listing 3.8: Enabling PCMCIA support

Bus options (PCI etc.)  --->
  PCCARD (PCMCIA/CardBus) support  --->
    <*> PCCard (PCMCIA/CardBus) support
(select 16 bit if you need support for older PCMCIA cards. Most people want this.)
    <*>   16-bit PCMCIA support
    [*]   32-bit CardBus support
(select the relevant bridges below)
    *** PC-card bridges ***
    <*> CardBus yenta-compatible bridge support (NEW)
    <*> Cirrus PD6729 compatible bridge support (NEW)
    <*> i82092 compatible bridge support (NEW)

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

کامپایل کردن و نصب کردن

اکنون که کرنل شما پیکربندی شد، زمان کامپایل کردن و نصب کردن آن رسیده. از پیکربندی خارج شوید و روند کامپایل کردن را آغاز نمایید:

Code Listing 3.9: Compiling the kernel

# make && make modules_install

هنگامیکه کامپایل شدن کرنل بپایان رسید، تصویر کرنل را به /boot رونوشت نمایید. از هر نامی که احساس می کنید برای کرنلتان مناسب است استفاده نمایید و بخاطر داشته باشید که به آن بعدا و هنگامیکه راه انداز دستگاهتان را پیکربندی می نمایید، نیاز خواهید داشت. بخاطر داشته باشید که kernel-3.3.8-gentoo را با نام نسخه کرنل خودتان تعویض نمایید.

Code Listing 3.10: Installing the kernel

# cp arch/x86/boot/bzImage /boot/kernel-3.3.8-gentoo

۷.ب. جایگزین: استفاده کردن از genkernel

اگر در حال خواندن این بخش هستید، انتخاب کرده اید که از کد genkernel ما برای پیکربندی کرنلتان استفاده نمایید.

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

اکنون اجازه دهید تا ببینیم genkernel چگونه کار می کند:

Code Listing 4.1: Emerging genkernel

# emerge genkernel

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

توجه داشته باشید که اگر پارتیشن راه انداز شما از فایل سیستم های ext2 یا ext3 استفاده نمی کند ممکن است لازم باشد تا کرنلتان را با استفاده از genkernel --menuconfig all بطور دستی پیکربندی نمایید و پشتیبانی برای فایل سیستمی تان را در کرنل فعال نمایید( مثلا نه به عنوان یک ماژول). کاربران LVM2 قطعا لازم دارند تا --lvm2 را به عنوان یک آرگومنت مهم اضافه نمایند.

Code Listing 4.2: Running genkernel

# genkernel all

بمجرد اینکه genkernel بپایان رسید، مجموعه کاملی از ماژول ها و initial ram disk ،(initramfs) ایجاد خواهند گردید. ما از کرنل و initrd هنگامیکه یک راه انداز دستگاه بعدا در همین مستند پیکربندی می نماییم، استفاده خواهیم نمود. نام کرنل و initrd را از آنجا که در هنگام پیکربندی فایل راه انداز نیاز خواهید داشت آنها را بنویسید، یادداشت نمایید. فایل initrd بعد از راه اندازی برای انجام اتصال خودکار سخت افزار (شبیه آنچه در لوح فشرده نصب انجام می شود) قبل از اینکه دستگاه واقعی شما آغاز بکار نماید، فورا شروع بکار می نماید.

Code Listing 4.3: Checking the created kernel image name and initrd

# ls /boot/kernel* /boot/initramfs*

۷.د. ماژول های کرنل

پیکربندی نمودن ماژول ها

شما باید ماژول هائی را که می خواهید بطور خودکار لود شوند را در /etc/conf.d/modules فهرست نمایید.می توانید انتخاب های بیشتری هم اگر بخواهید به ماژول ها اضافه نمایید.

برای دیدن همه ماژول های موجود، دستور find زیر را اجرا نمایید. فراموش نکنید که "<kernel version>" را با نسخه کرنلی که کامپایل نمودید جایگزین نمایید:

Code Listing 5.1: Viewing all available modules

# find /lib/modules/<kernel version>/ -type f -iname '*.o' -or -iname '*.ko' | less

برای نمونه، برای اینکه بطور خودکار ماژول 3c59x.ko را لود نمایید (که درایوری برای خانواده کارت شبکه های 3Com است)، فایل /etc/conf.d/modules را ویرایش نمایید و نام ماژول را در آن وارد نمایید.

Code Listing 5.2: Editing /etc/conf.d/modules

# nano -w /etc/conf.d/modules
modules_2_6="3c59x"

عملیات نصب را با پیکربندی کردن دستگاهتان ادامه دهید.

۸. پیکربندی کردن دستگاهتان

۸.الف.اطلاعات فایل سیستم

fstab چیست؟

در لینوکس، همه پارتیشن هائی که استفاده می شوند باید در /etc/fstab فهرست شوند. این فایل حاوی نقطه های مانت نمودن آن پارتیشن ها(که در ساختار فایل سیستم دیده می شوند)، چگونگی نحوه مانت شدن آنها و با هر انتخاب خاصی (بطور خودکار یا طوری دیگر، آیا کاربران می توانند آنها را مانت نمایند یا خیر و غیره) است.

ایجاد نمودن /etc/fstab

فایل /etc/fstab از نحو خاصی استفاده می نماید. هر خط شامل شش سطر است، که با فاصله آزاد (دگمه اسپیس، تب یا هردو) از هم جدا می شوند. هر سطر معنی مربوط به خود را دارد:

  • سطر اول شرح پارتیشن ها را نمایش می دهد (مسیر به فایل دستگاه آن پارتیشن)
  • سطر دوم mount point ها را که کدام پارتیشن باید در کجا مانت شود را نشان می دهد
  • سطر سوم فایل سیستمی که توسط پارتیشن استفاده می شود را نشان می دهد
  • سطر چهارم انتخاب های مانت که بوسیله mount در هنگامی که می خواهد پارتیشن را مانت نماید استفاده می شود را نمایش می دهد. از آنجا که هر فایل سیستمی انتخاب های نقطه مانت مربوط به خود را دارد، تشویقتان می کنیم که صفحه راهنمای مانت ( man mount ) را برای فهرست کامل، مطالعه نمایید. انتخاب های چندگانه با علامت کامل از هم جدا می شوند.
  • سطر پنجم از dump برای تعیین اینکه پارتیشن نیاز به dump بودن دارد یا نه استفاده می شود. عموما می توانید آنرا بشکل عدد صفر 0 رها کنید.
  • سطر ششم بوسیله fsck برای تعیین اینکه کدام فایل سیستم باید بررسی شود اگر سیستم بخوبی خاموش نشده بود، استفاده می شود. فایل سیستم ریشه باید 1 بخود بگیرد و زمان استراحت 2 (یا 0 اگر یک فایل سیستم لازم به بررسی ندارد).

مهم: فایل پیش فرض که بوسیله جنتو تهیه شده یک فایل fstab تایید شده و صحیح نیست . شما برای خودتان باید /etc/fstab ایجاد نمایید.

Code Listing 1.1: Opening /etc/fstab

# nano -w /etc/fstab

اجازه دهید نگاهی به اینکه چگونه یک انتخاب برای پارتیشن /boot بنویسم بیاندازیم. این فقط یک مثال است، اگر نمی توانید یا نمی خواهید یک پارتیشن /boot ایجاد نمایید، آنرا رونوشت برداری ننمایید.

در پارتیشن بندی x86 مثال پیش فرض ما ، معمولا /boot پارتیشن /dev/sda1 است، با فایل سیستم ext2 . این پارتیشن در حین راه اندازی نیاز به بررسی دارد، بنابر این ما اینگونه می نویسیم:

Code Listing 1.2: An example /boot line for /etc/fstab

/dev/sda1   /boot     ext2    defaults        0 2

برخی کاربران به خاطر مسايل امنیتی نمی خواهند پارتیشن /boot ایشان بطور خودکار راه اندازی شود. این افراد باید defaults را با noauto جایگزین نمایند. این به آن معنی است که شما باید هربار که می خواهید از این پارتیشن استفاده نمایید آنرا بطور دستی راه اندازی نمایید.

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

اکنون از مثال زیر برای ایجاد فایل /etc/fstab خودتان استفاده نمایید:

Code Listing 1.3: A full /etc/fstab example

/dev/sda1   /boot        ext2    defaults,noatime     0 2
/dev/sda2   none         swap    sw                   0 0
/dev/sda3   /            ext3    noatime              0 1

/dev/cdrom  /mnt/cdrom   auto    noauto,user          0 0

قانون auto فرمان mount را برای فایل سیستم احتمالی می نماید (که برای مدیاهای همراه پیشنهاد می شود چراکه آنها می توانند با استفاده از یکی از چندین فایل سیستم ایجاد شده باشند) و user این امکان را برای کاربران غیر ریشه ایجاد می نمایند که از درایور لوح خوان استفاده نمایند.

برای ارتقاء کارائی غالب کاربران مایلند تا noatime را به عنوان انتخاب مانت که به معنی دسترسی سریعتر سیستم به ثبت نشده هاست، استفاده نمایند (شما عموما به آن نیاز ندارید).

مجددا فایل /etc/fstab خودتان را بررسی نمایید ، آنرا ذخیره نموده و خارج شوید تا ادامه دهیم.

۸.ب. اطلاعات شبکه سازی

نام خانه، نام دامین و غیره

یکی از چیزهائی که کاربران انتخاب می نمایند نام رایانه شخصیشان است. این به نظر بسیار ساده می آید اما بسیاری از کاربران مشکلاتی با پیدا نمودن نام اختصاصی برای رایانه شخصی لینوکسی خود دارند. برای سرعت دادن به کارها، بدانید که هر نامی که انتخاب نمایید بعدها می تواند عوض شود. به نظر خیلی از ما، می توانید رایانه خود را tux بنامید و دامین شما homenetwork نامیده شود.

Code Listing 2.1: Setting the host name

# nano -w /etc/conf.d/hostname

(Set the hostname variable to your host name)
hostname="tux"

دوم، اگر یک نام دامین لازم دارید، آنرا در /etc/conf.d/net تنظیم نمایید. فقط درصورتی به یک نام دامین نیاز دارید که ISP یا مدیر شبکه شما اعلام نماید، یا اینکه شما یک سرور DNS دارید ولی نه در صورتیکه یک سرور DHCP دارید. اگر شبکه شما برای DHCP تنظیم شده نیاز به نگرانی درباره DNS یا نام دامین نیست.

Code Listing 2.2: Setting the domainname

# nano -w /etc/conf.d/net

(Set the dns_domain variable to your domain name)
dns_domain_lo="homenetwork"

نکته: اگر نام دامین را تنظیم ننمایید، می توانید با ویرایش /etc/issue پیام "This is hostname.(none)" را در تصویر ورود ویرایش نمایید. فقط رشته .\O را از این فایل حذف نمایید.

اگر یک دامین NIS دارید (اگر نمی دانید چه چیزی است، آنرا ندارید)، لازم دارید تا آنرا نیز تعریف نمایید:

Code Listing 2.3: Setting the NIS domainname

# nano -w /etc/conf.d/net

(Set the nis_domain variable to your NIS domain name)
nis_domain_lo="my-nisdomain"

نکته: برای اطلاعات بیشتر درباره پیکربندی DNS و NIS ، لطفا مثال های فراهم گردیده در /usr/share/doc/openrc-*/net.example.bz2 را مطالعه بفرمایید که می توانند با استفاده از bzless خوانده شوند. همچنین ممکن است برای مدیریت تنظیم نمودن DNS/NIS بخواهید openresolv را emerge نمایید.

پیکربندی کردن شبکه شما

قبل از اینکه احساس-" هی، ما آنرا همین حالا داشتیم" بگیرید، باید بخاطر داشته باشید که شبکه ائی که در شروع نصب تنظیم نمودیم فقط برای نصب بود. اکنون شما باید شبکه خودتان را بطور پایدار پیکربندی نمایید.

نکته: اطلاعات بیشتر درباره شبکه سازی، در موضوعات پیشرفته ائی مانند bonding, bridging, 802.1Q VLANs یا شبکه سازی بیسیم در بخش پیکربندی شبکه جنتو تحت پوشش قرار گرفته اند.

همه اطلاعات شبکه سازی در /etc/conf.d/net گردآوری شده است. اگر نمی دانید چگونه شبکه خود را پیکربندی نمایید این کاری نه سر راست است که مبتنی بر دانش نحوی است. اما نترسید، ما همه چیز را شرح خواهیم داد. مثال تماما تشریح شده ائی که پیکربندی های مختلفی را پوشش می دهد در /usr/share/doc/openrc-*/net.example.bz2 موجود است.

بطور پیش فرض DHCP استفاده می شود. برای اینکه DHCP کار نماید لازم دارید تا DHCP سمت کاربر را نصب نمایید. این بعدا در نصب کردن ابزارهای سیستم لازم شرح داده خواهد شد. فراموش ننمایید که DHCP سمت کاربر را نصب نمایید.

اگر می خواهید ارتباط شبکه را خودتان پیکربندی کنید به دلیل انتخاب های خاص برای DHCP یا بدلیل اینکه اصلا از DHCP استفاده نمی نمایید، /etc/conf.d/net را با ویرایشگر متن موردعلاقه تان باز نمایید (در این مثال از nano استفاده شده است):

Code Listing 2.4: Opening /etc/conf.d/net for editing

# nano -w /etc/conf.d/net

فایل زیر را خواهید دید:

Code Listing 2.5: Default /etc/conf.d/net

# This blank configuration will automatically use DHCP for any net.*
# scripts in /etc/init.d.  To create a more complete configuration,
# please review /usr/share/doc/openrc-*/net.example.bz2 and save
# your configuration in /etc/conf.d/net (this file :]!).

برای وارد نمودن آدرس IP خودتان، netmask و gateway لازم دارید تا هر دو متغییر config_eth0 و routes_eth0 را تنظیم نمایید:

Code Listing 2.6: Manually setting IP information for eth0

config_eth0="192.168.0.2 netmask 255.255.255.0 brd 192.168.0.255"
routes_eth0="default via 192.168.0.1"

برای استفاده از DHCP ، متغییر config_eth0 را تعریف نمایید:

Code Listing 2.7: Automatically obtaining an IP address for eth0

config_eth0="dhcp"

برای فهرستی شامل همه انتخاب ها لطفا /usr/share/doc/openrc-*/net.example.bz2 را مطالعه فرمایید. اگر لازم دارید تا انتخاب های اختصاصی برای DHCP انجام دهید، مطمئن شوید که صفحه راهنمای DHCP سمت کاربر را نیز مطالعه فرمایید.

اگر چندین رابط کاربری شبکه دارید، مراحل بالا را برای config_eth1 و config_eth2 و غیره تکرار نمایید.

پیکربندی ها را ذخیره نمایید و برای ادامه خارج شوید.

راه اندازی خودکار شبکه در زمان راه اندازی

برای راه اندازی رابط شبکه در زمان راه اندازی، لازم دارید تا آنها را به مرحله اجرای پیش فرض اضافه نمایید.

Code Listing 2.8: Adding net.eth0 to the default runlevel

# cd /etc/init.d
# ln -s net.lo net.eth0
# rc-update add net.eth0 default

اگر چند رابط کاربری شبکه دارید، لازم دارید تا net.eth1 ، net.eth2 و مانند آن را بطور خاص ایجاد نمایید. درست مانند آنچه با net.eth0 انجام دادید.

نوشتن اطلاعات شبکه خاموش

اکنون لازم است تا لینوکس را درباره شبکه تان آگاه نمایید. این در /etc/hosts تعریف می شود و کمک می نماید تا نام host ها در آدرس های IP که با نام سرور شما برطرف نمی شوند را برطرف نماید. لازم دارید که دستگاه خود را معرفی نمایید. اگر نمی خواهید دستگاه داخلی DNS خودتان را تنظیم نمایید، ممکن است تا همچنین نیاز داشته باشید تا دستگاهتان را در شبکه تان هم تعریف نمایید.

Code Listing 2.9: Opening /etc/hosts

# nano -w /etc/hosts

Code Listing 2.10: Filling in the networking information

(This defines the current system)
127.0.0.1     tux.homenetwork tux localhost

(Define extra systems on your network,
they need to have a static IP to be defined this way.)
192.168.0.5   jenny.homenetwork jenny
192.168.0.6   benny.homenetwork benny

برای ادامه ذخیره نمایید و ویرایشگر متن را ببندید.

اگر PCMCIA ندارید، می توانید اکنون با اطلاعات دستگاه ادامه دهید. کاربران PCMCIA باید موضوع زیر درباره PCMCIA را بخوانند.

انتخابی: وادار PCMCIA بکار

کاربران PCMCIA باید ابتدا بسته pcmciautils را نصب نمایند.

Code Listing 2.11: Installing pcmciautils

# emerge pcmciautils

۸.ج. اطلاعات دستگاه

رمز عبور ریشه

ابتدا رمز عبور ریشه را تنظیم می نماییم. تایپ نمایید:

Code Listing 3.1: Setting the root password

# passwd

اطلاعات دستگاه

جنتو از /etc/rc.conf برای پیکربندی خدمات، آغازبکار و خاموش نمودن دستگاه شما استفاده می نماید. فایل /etc/rc.conf را باز نمایید و از همه توضیحات درون فایل لذت ببرید.

Code Listing 3.2: Configuring services

# nano -w /etc/rc.conf

هنگامی که پیکربندی این دو فایل را بپایان بردید، آنها را ذخیره نموده و خارج شوید.

جنتو از /etc/conf.d/keymaps برای رفتار کردن با پیکربندی صفحه کلید استفاده می نماید. برای پیکربندی صفحه کلید خود آنرا ویرایش نمایید.

Code Listing 3.3: Opening /etc/conf.d/keymaps

# nano -w /etc/conf.d/keymaps

دقت ویژه درباره متغییر keymap بکار ببندید. اگر keymap اشتباه انتخاب نمایید، نتایج اشتباهی در هنگام کار با صفحه کلید خود بدست خواهید آورد.

هنگامیکه پیکربندی /etc/conf.d/keymaps را بپایان بردید، آنرا ذخیره نموده و خارج شوید.

جنتو از /etc/conf.d/hwclock برای تنظیم انتخاب های ساعت استفاده می نماید. آنرا مطابق با نیاز خود ویرایش نمایید.

Code Listing 3.4: Opening /etc/conf.d/hwclock

# nano -w /etc/conf.d/hwclock

اگر ساعت سخت افزار شما از UTC استفاده نمی نماید، نیاز دارید تا clock="local" را به فایل اضافه نمایید. در غیر اینصورت متوجه انحراف زمانی خواهید شد.

هنگامیکه پیکربندی /etc/conf.d/hwclock را بپایان بردید، آنرا ذخیره نموده و خارج شوید.

باید منطقه زمانی را که پیشتر در /etc/localtime رونوشت برداری نمودید را در فایل /etc/timezone رونوشت نمایید تا ارتقاء های بیشتر بسته sys-libs/timezone-data بتواند بطور خودکار /etc/localtime را بروزرسانی نماید. برای مثال اگر از منطقه زمانی Iran استفاده نمودید، باید Iran را در فایل /etc/timezone بنویسید.

پیکربندی کردن locales

قطعا از یک یا شاید دو موقعیت محلی در دستگاهتان استفاده می نمایید. باید موقعیت های محلی را که لازم دارید در /etc/locale.gen مشخص نمایید.

Code Listing 3.5: Opening /etc/locale.gen

# nano -w /etc/locale.gen

موقعیت های محلی مثال زیر مثالی برای گرفتن دو موقعیت انگلیسی (United State) و آلمان (Germany) با همراهی فرمت کاراکتر (مانند UTF-8) است.

Code Listing 3.6: Specify your locales

en_US ISO-8859-1
en_US.UTF-8 UTF-8
de_DE ISO-8859-1
de_DE@euro ISO-8859-15

نکته: می توانید موقعیت محلی مورد درخواست خود را از یک فهرست با اجرای locale -a انتخاب نمایید.

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

گام بعدی اجرا نمودن locale-gen است. این دستور همه موقعیت هائی را که در فایل /etc/locale.gen مشخص نمودید را ایجاد می نماید.

Code Listing 3.7: Running locale-gen

# locale-gen

هنگامیکه انجام شد، امکان آنرا دارید که زبان تنظیمات موقعیت محلی گستره دستگاهتان را در فایل /etc/env.d/02locale تنظیم نمایید:

Code Listing 3.8: Setting the default system locale in /etc/env.d/02locale

LANG="de_DE.UTF-8"
LC_COLLATE="C"

و محیط خودتان را مجددا لود نمایید:

Code Listing 3.9: Reload shell environment

# env-update && source /etc/profile

ما یک راهنمای محلی سازی کامل برای کمک به شما در این مراحل ساخته ایم. همچنین می توانید جزئیات راهنمای یو تی اف ۸ ما را برای اطلاعات بسیار تخصصی برای راه اندازی UTF-8 بروی دستگاهتان مطالعه بفرمایید.

لطفا با نصب کردن ابزارهای دستگاه لازم ادامه دهید.

۹. نصب کردن ابزارهای دستگاه لازم

۹.الف. واردگر دستگاه

برخی ابزارها در بایگانی stage3 وجود ندارند چراکه چندین بسته توابع مشابهی را فراهم می نمایند. اکنون زمان آن است که تصمیم بگیرید که کدام را می خواهید نصب نمایید.

اولین چیزی که باید درباره آن تصمیم بگیرید فراهم نمودن تسهیلات ورود به دستگاهتان است. یونیکس و لینوکس تاریخچه زیبائی از قابلیت های ورود دارند -- اگر بخواهید می توانید هر چیزی را که بروی دستگاهتان رخ می دهد را در فایل های ورود ثبت نمایید. این کار در هنگام ورودگر به دستگاه رخ می دهد.

جنتو برای انتخاب چندین ورودگر دستگاه ارائه می دهد. sysklogd که یک مجموعه خارق العاده دستگاه ورودگر سنتی است موجود است، syslog-ng ، یک ورودگر دستگاه پیشرفته و metalog که یک ورودگر با قابلیت پیکربندی بالا است. دیگر ابزارها هم ممکن است در پرتیج بخوبی موجود باشند - بسته های موجود ما بطور روزانه افزایش می یابند.

اگر نقشه دارید از sysklogd یا syslog-ng استفاده نمایید، ممکن است بخواهید بعد از آن logrotate را نصب نمایید چراکه آن ورودگر دستگاه ها سازوکار گردش برای فایل های log را فراهم نمی آورند.

برای نصب کردن ورودگر دستگاهی که انتخاب نموده اید آنرا emerge نمایید و آنرا به مرحله اجرای پیش فرض با استفاده از rc-update اضافه نمایید. مثال زیر syslog-ng را نصب می نماید. البته با ورودگر دستگاه خودتان آنرا جانشین نمایید:

Code Listing 1.1: Installing a system logger

# emerge syslog-ng
# rc-update add syslog-ng default

۹.ب. انتخابی: Cron Daemon

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

جنتو سه cron daemon ممکن را ارائه می دهد: dcron و fcron و vixie-cron . نصب یکی از آنها همانند نصب کردن یک ورودگر دستگاه است. هرچند dcron و fcron نیاز به یک دستور پیکربندی بیشتر دارند، بنام crontab /etc/crontab. اگر نمی دانید کدام را انتخاب نمایید vixie-cron را استفاده نمایید.

ما فقط vixie-cron را برای نصب های بیسیم فراهم می آوریم. اگر cron daemon دیگری را می خواهید، می توانید صبر نمایید و بعدا آنرا نصب نمایید.

Code Listing 2.1: Installing a cron daemon

# emerge vixie-cron
# rc-update add vixie-cron default
(Only if you have chosen dcron or fcron) # crontab /etc/crontab

۹.ج.انتخابی: شاخص گذاری فایل

اگر می خواهید فایل های دستگاهتان شاخص گذاری شوند تا قادر باشید بسرعت با استفاده از ابزار locate آنها را موقعیت یابی نمایید، نیاز است تا sys-apps/mlocate را نصب نمایید.

Code Listing 3.1: Installing mlocate

# emerge mlocate

۹.د. انتخابی: دسترسی از راه دور

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

Code Listing 4.1: Adding sshd to the default runlevel

# rc-update add sshd default

اگر دسترسی به سریال کنسول نیاز دارید (می تواند مثلا درمورد سرورهای ریموت کاربرد داشته باشد)، لازم است تا بخش سریال کنسول در /etc/inittab را از حالت توضیح بودن در آورید.

Code Listing 4.2: Editing /etc/inittab

# nano -w /etc/inittab

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

Code Listing 4.3: Uncommenting serial consoles in inittab

# SERIAL CONSOLES
s0:12345:respawn:/sbin/agetty 9600 ttyS0 vt100
s1:12345:respawn:/sbin/agetty 9600 ttyS1 vt100

۹.ه. ابزارهای فایل سیستم

وابسته به اینکه در حال استفاده از چه فایل سیستمی هستید، لازم دارید تا ابزارهای سودمند ضروری فایل سیستم را نصب نمایید (برای بررسی سلامت فایل سیستم، ایجاد فایل سیستم های اضافی و غیره.). لطفا توجه داشته باشید که ابزار مدیریت فایل سیستم های ext2/ext3 که (e2fsprogs) است هم اکنون به عنوان بخشی از دستگاه نصب گردیده.

جدول زیر ابزارهائی را که شما لازم دارید در صورتی که از آن فایل سیستم ها استفاده می نمایید را فهرست می نماید:

File System Tool Install Command
XFS xfsprogs emerge xfsprogs
ReiserFS reiserfsprogs emerge reiserfsprogs
JFS jfsutils emerge jfsutils

۹.و. Networking Tools

اگر به هیچ ابزار اضافه مربوط به شبکه ائی نیاز ندارید (مانند ppp یا یک dhcp سمت کاربر) با پیکربندی کردن راه انداز دستگاه ادامه دهید.

انتخابی: نصب کردن یک DHCP سمت کاربر

اگر احتیاج دارید تا جنتو بطور خودکار یک آدرس IP برای رابط کاربری (های) شبکه شما پیدا نماید، نیاز دارید dhcpcd را نصب نمایید (برای DHCP سمت کاربر های دیگر -- شبکه سازی ماژولار را برای دیدن فهرستی از DHCP سمت کاربرهای موجود بازبین فرمایید). اگر این کار را اکنون انجام ندهید، قادر به برقراری ارتباط با اینترنت بعد از پایان مراحل نصب نخواهید بود.

Code Listing 6.1: Installing dhcpcd

# emerge dhcpcd

انتخابی: نصب کردن PPPoE سمت کاربر

اگر به ppp برای ارتباط با شبکه نیاز دارید، لازم است تا آنرا نصب نمایید.

Code Listing 6.2: Installing ppp

# emerge ppp

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

۱۰. پیکربندی کردن راه انداز دستگاه

۱۰.الف. تصمیم به انتخابتان

مقدمه

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

برای x86، لینوکس جنتو GRUB و LILO را فراهم آورده.

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

انتخابی: فریم بافر

اگر کرنل خودتان را با پشتیبانی از فریم بافر پیکربندی نموده باشید (یا از پیکربندی کرنل پیش فرض genkernel استفاده نموده باشید)، می توانید آنرا با اضافه نمودن یک اعلان video در فایل پیکربندی راه انداز دستگاه فعال نمایید.

قبل از همه، لازم دارید تا دستگاه فریم بافر خودتان را بشناسید. باید از uvesafb به عنوان VESA driver استفاده نمایید.

اعلان video نمایش کنترل های فریم بافر. این لازم دارد که درایور فریم بافر در پی اعلان های کنترلی که می خواهید فعال شوند گرفته شود. همه متغییر ها در /usr/src/linux/Documentation/fb/uvesafb.txt فهرست شده اند. غالب انتخاب های استفاده شده به این صورت هستند:

Control Description
ywrap Assume that the graphical card can wrap around its memory (i.e. continue at the beginning when it has approached the end)
mtrr:n Setup MTRR registers. n can be:
0 - disabled
1 - uncachable
2 - write-back
3 - write-combining
4 - write-through
mode Set up the resolution, color depth and refresh rate. For instance, 1024x768-32@85 for a resolution of 1024x768, 32 bit color depth and a refresh rate of 85 Hz.

نتیجه می تواند چیزی شبیه به video=uvesafb:mtrr:3,ywrap,1024x768-32@85 باشد. این تنظیمات را رونوشت بردارید. بزودی به آن نیاز پیدا خواهید نمود.

اکنون با نصب کردن GRUB یا LILO ادامه دهید.

۱۰.ب. پیش فرض: استفاده کردن از گراب

درک اصطلاحات فنی گراب

مهمترین بخش درک نمودن گراب راحت بودن با چگونگی اشاره گراب به درایوهای دیسک سخت و پارتیشن هاست. پاتیشن لینوکس /dev/sda1 شما در گراب چیزی شبیه (hd0,0) خوانده می شود. به کروشه های اطراف hd0,0 توجه نمایید. آنها از الزامات هستند.

درایوهای سخت بجای شمارش از a از صفر شمرده می شوند و پارتیشن ها بجای شمارش از یک از صفر شمارش می شوند. دقت داشته باشید که در دستگاه های hd، فقط دیسک های سخت شمارش می شوند، نه دستگاه های apti-ide مانند پخش کننده لوح فشرده و رایترها. همچنین ساختار مشابهی برای درایوهای SCSI استفاده می شود. (بطور عادی آنها عدد بالاتری نسبت به درایوهای IDE می گیرند بغییر از مواقعی که BIOS پیکربندی شده است تا از دستگاه SCSI راه اندازی شود.) هنگامیکه از BIOS می خواهید تا از روی دیسک سخت متفاوتی (برای مثال پرایمری اسلاو تان) راه اندازی شود، که دیسک سخت به نظر hd0 می آید.

با فرض اینکه شما یک درایو سخت بروی /dev/sda و دوتای دیگر در /dev/sdb و /dev/sdc دارید، /dev/sdb7 به (hd1,6) ترجمه می شود. این ممکن است به نظر پیچیده بیاید و واقعا هم پیچیده است، اما چنانکه خواهیم دید، گراب مکانیسم جدول تکمیلی ارائه میدهد که در مواقعی که تعداد زیادی درایو سخت و پارتیشن دارید بسیار کار آمد است و خطا در نمایه عددی گراب را کم می نماید.

چنانکه احساس کردید، اینک زمان نصب گراب است.

نصب کردن گراب

برای نصب گراب ابتدا اجازه دهید آنرا emerge نماییم:

Code Listing 2.1: Installing GRUB

# emerge grub

هرچند گراب اکنون نصب گردیده اما هنوز ما نیاز داریم تا یک فایل پیکربندی برای آن بنویسیم و گراب را در MBR خودمان قرار دهیم تا گراب بطور خودکار کرنل جدیدا ساخته شده شما را راه اندازی نماید. فایل /boot/grub/grub.conf را با nano ایجاد نمایید (یا اگر قابل اجراست، هر ویرایشگر متن دیگری):

Code Listing 2.2: Creating /boot/grub/grub.conf

# nano -w /boot/grub/grub.conf

اکنون می رویم تا یک grub.conf بنویسیم. مطمئن شوید که از نام فایل تصویر کرنل خودتان و، اگر موجود است، نام فایل تصویر initrd مختص به خودتان استفاده نمایید.

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

نکته: اگر فایل سیستم ریشه شما JFS است، از آنجا که JFS نیاز دارد تا قبل از مانت کردن log قابلیت خواندنی-نوشتنی بگیرد شما باید یک " ro " به خط kernel اضافه نمایید.

Code Listing 2.3: Example grub.conf

# Which listing to boot as default. 0 is the first, 1 the second etc.
default 0
# How many seconds to wait before the default listing is booted.
timeout 30
# Nice, fat splash-image to spice things up :)
# Comment out if you don't have a graphics card installed
splashimage=(hd0,0)/boot/grub/splash.xpm.gz

title Gentoo Linux 3.3.8
# Partition where the kernel image (or operating system) is located
root (hd0,0)
kernel /boot/kernel-3.3.8-gentoo root=/dev/sda3

title Gentoo Linux 3.3.8 (rescue)
# Partition where the kernel image (or operating system) is located
root (hd0,0)
kernel /boot/kernel-3.3.8-gentoo root=/dev/sda3 init=/bin/bb

# The next four lines are only if you dualboot with a Windows system.
# In this case, Windows is hosted on /dev/sda6.
title Windows XP
rootnoverify (hd0,5)
makeactive
chainloader +1

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

Code Listing 2.4: GRUB snippet for initramfs-enabled kernel builds

title Gentoo Linux 3.3.8
root (hd0,0)
kernel /boot/3.3.8 real_root=/dev/sda3
initrd /boot/initramfs-genkernel-x86-3.3.8-gentoo

اگر از نمایه پارتیشن متفاوت و\یا تصویر کرنل متفاوتی استفاده می نمایید، فقط به آن اشاره نمایید. هرچند، مطمئن شوید که هر چیزی که یک دستگاه گراب دنبال می نماید (مثلا یک (hd0,0) ) به نقطه مانت اشاره می کند نه ریشه. به بیان بهتر، (hd0,0)/grub/splash.xpm.gz در واقعیت زمانیکه (hd0,0) نقطه مانت /boot است در /boot/grub/splash.xpm.gz خواهد بود.

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

اگر می خواهید انتخاب های بیشتری را به کرنل واگذار نمایید، بسادگی آنها را به انتهای خط کرنل اضافه نمایید. در حال حاضر ما یک انتخاب ( root=/dev/sda3 یا real_root=/dev/sda3 ) به آن ارجاع داده ایم، اما شما می توانید انتخاب های دیگری را هم بخوبی به آن ارجاع دهید، مثلا اعلان video برای فریم بافر چنانچه پیشتر توضیح داده شد.

اگر پیکربندی راه انداز دستگاه شما شامل یک پارامتر real_root است، برای تنظیم انتخاب های مانت فایل سیستم از پارامتر real_rootflags استفاده نمایید.

اگر از یک کرنل ۲.۶.۷ یا بالاتر استفاده می نمایید و بخاطر اینکه BIOS نمی تواند دیسک سخت های بزرگ را راه اندازی نماید، دیسک سختتان را پل بسته اید لازم دارید تا sda=stroke را نیز اضافه نمایید. نحو sda را با دستگاهی که در این انتخاب مورد نیاز است جایگزین نمایید.

کاربران genkernel باید بدانند که کرنل آنها از همان انتخاب هائی استفاده می نماید که در لوح فشرده نصب استفاده شده بود. برای مثال، اگر شما دستگاه SCSI دارید، باید doscsi را به انتخاب های کرنل اضافه نمایید.

اکنون فایل را ذخیره نموده و خارج شوید. هنوز نیاز دارید تا گراب را در MBR (نگهدارنده ارشد راه انداز) نصب نمایید تا هنگامیکه دستگاه تان را راه اندازی می نمایید گراب بطور خودکار اجرا گردد.

گسترش دهندگان گراب پیشنهاد می نمایند که از grub-install استفاده نمایید. هرچند اگر به هر دلیلی grub-install بخوبی کار نکرد هنوز گزینه نصب دستی گراب را خواهید داشت.

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

پیش فرض: نصب کردن گراب با استفاده از برنامه خودران نصب گراب

برای نصب کردن گراب نیاز دارید تا از توانمندی دستور grub-install استفاده نمایید. اگرچه، از آنجا که ما در پشت یک محیط chroot قرار داریم grub-install از داخل خط فرمان کار نمی کند. نیاز داریم تا /etc/mtab را که شامل فهرستی از همه فایل سیستم هائی که باید مانت شوند است را ایجاد نماییم. متاسفانه راه ساده ائی برای انجام دادن آن وجود دارد - کپی نمودن /proc/mounts به /etc/mtab، و حذف خط rootfs اگر یک پارتیشن مجزای راه انداز ندارید. دستور زیر در هر دو مورد کار خواهد نمود:

Code Listing 2.5: Creating /etc/mtab

# grep -v rootfs /proc/mounts > /etc/mtab

اکنون می توانیم با استفاده از grub-install گراب را نصب نماییم:

Code Listing 2.6: Running grub-install

# grub-install --no-floppy /dev/sda

اگر سئوالات بیشتری درباره گراب دارید، لطفا به کنکاش در سئوالات متداول گراب یا ویکی گراب بپردازید و یا info grub را در ترمینال خودتان مطالعه بفرمایید.

با راه اندازی مجدد دستگاه ادامه دهید.

جایگزین: نصب کردن گراب با استفاده از ساختارهای دستی

برای شروع پیکربندی گراب، تایپ نمایید grub .در خط فرمان با یک grub> روبرو خواهید شد. اکنون لازم است تا دستورات درست را برای نصب نگهدارنده راه انداز گراب در دیسک سخت خودتان تایپ نمایید.

Code Listing 2.7: Starting the GRUB shell

# grub --no-floppy

نکته: اگر دستگاه شما درایور فلاپی خوان ندارد، انتخاب --no-floppy را به دستور بالا اضافه نمایید تا از جستجوی گراب به دنبال (چیزی که وجود ندارد) جلوگیری نمایید.

در پیکربندی مورد مثال می خواهیم گراب نصب نماییم تا بتواند اطلاعات را از پارتیشن راه انداز /dev/sda1 بخواند، و همچنین گراب را بروی MBR درایو سخت (نگهدارنده راه انداز ارشد) نصب نماییم تا هنگامی که دستگاه را روشن می نماییم اولین چیزی که می بینیم خط فرمان گراب باشد. البته اگر شما پیکربندی مثال را در حین نصب دنبال نمی نمایید، مطابق با نیازتان دستورات را تغییر دهید.

جدول مکانیسم تکمیلی گراب می تواند درون گراب استفاده شود. برای مثال، اگر "root (" را تایپ نمایید و دگمه TAB را فشار دهید، فهرستی از دستگاه ها (مانند hd0 را مشاهده خواهید نمود). اگر تایپ نمایید "root (hd0," و دگمه TAB را فشار دهید، فهرستی از پارتیشن های موجود قابل انتخاب را خواهید دید (مانند hd0,0).

با تکمیل سازی دگمه tab، تنظیم کردن گراب نباید خیلی سخت باشد. اکنون برویم به پیکربندی گراب برسیم، می توانیم؟ :-)

Code Listing 2.8: Installing GRUB in the MBR

grub> root (hd0,0)    (Specify where your /boot partition resides)
grub> setup (hd0)     (Install GRUB in the MBR)
grub> quit            (Exit the GRUB shell)

نکته: اگر می خواهید گراب را بجای نصب در MBR در پارتیشن خودش نصب نمایید، باید به دستور setup اعلام نمایید تا در پارتیشن مورد نظر قرار گیرد. برای مثال، اگر می خواهید گراب در /dev/sda3 نصب گردد، پس دستور به صورت setup (hd0,2) تغییر خواهد نمود، هرچند تعداد کمی از کاربران چنین کاری را انجام می دهند.

اگر سئوالات بیشتری درباره گراب دارید، لطفا به کنکاش در سئوالات متداول گراب یا ویکی گراب بپردازید و یا info grub را در ترمینال خودتان مطالعه بفرمایید.

با راه اندازی مجدد دستگاه ادامه دهید

۱۰.ج. جایگزین: استفاده کردن از لیلو

نصب کردن لیلو

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

نصب نمودن لیلو ساده است; فقط آنرا emerge نمایید.

Code Listing 3.1: Installing LILO

# emerge lilo

پیکربندی نمودن لیلو

برای پیکربندی نمودن لیلو، شما باید /etc/lilo.conf ایجاد نمایید. ویرایشگر مطلوب خودتان را روشن نمایید (در این کتاب راهنما ما از nano استفاده می نماییم) و فایل را ایجاد نمایید.

Code Listing 3.2: Creating /etc/lilo.conf

# nano -w /etc/lilo.conf

چند بخش قبلتر ما از شما خواستیم نام تصویر کرنل خود را بخاطر بسپارید. در مثال بعدی lilo.conf ما از نمایه پارتیشن بندی مورد مثال خودمان استفاده می نماییم.

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

نکته: اگر فایل سیستم ریشه شما JFS است، از آنجا که JFS نیاز دارد تا قبل از مانت کردن log قابلیت خواندنی-نوشتنی بگیرد شما باید یک append="ro" به خط kernel اضافه نمایید.

Code Listing 3.3: Example /etc/lilo.conf

boot=/dev/sda             # Install LILO in the MBR
prompt                    # Give the user the chance to select another section
timeout=50                # Wait 5 (five) seconds before booting the default section
default=gentoo            # When the timeout has passed, boot the "gentoo" section

image=/boot/kernel-3.3.8-gentoo
  label=gentoo            # Name we give to this section
  read-only               # Start with a read-only root. Do not alter!
  root=/dev/sda3          # Location of the root filesystem

image=/boot/kernel-3.3.8-gentoo
  label=gentoo.rescue     # Name we give to this section
  read-only               # Start with a read-only root. Do not alter!
  root=/dev/sda3          # Location of the root filesystem
  append="init=/bin/bb"   # Launch the Gentoo static rescue shell

# The next two lines are only if you dualboot with a Windows system.
# In this case, Windows is hosted on /dev/sda6.
other=/dev/sda6
  label=windows

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

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

Code Listing 3.4: LILO snippet for initramfs-enabled kernel builds

image=/boot/kernel-3.3.8-gentoo
  label=gentoo
  read-only
  append="real_root=/dev/sda3"
  initrd=/boot/initramfs-genkernel-x86-3.3.8-gentoo

اگر نیاز دارید تا انتخاب هائی به کرنل اضافه نمایید، یک اعلان append به بخش اضافه نمایید. به عنوان یک مثال ما اعلان video را برای ایجاد امکان فریم بافر اضافه می نماییم:

Code Listing 3.5: Using append to add kernel options

image=/boot/kernel-3.3.8-gentoo
  label=gentoo
  read-only
  root=/dev/sda3
  append="video=uvesafb:mtrr,ywrap,1024x768-32@85"

اگر از یک کرنل ۲.۶.۷ یا بالاتر استفاده می نمایید و بخاطر اینکه BIOS نمی تواند دیسک سخت های بزرگ را راه اندازی نماید، دیسک سختتان را پل بسته اید لازم دارید تا sda=stroke را نیز اضافه نمایید. نحو sda را با دستگاهی که در این انتخاب مورد نیاز است جایگزین نمایید.

کاربران genkernel باید بدانند که کرنل آنها از همان انتخاب هائی استفاده می نماید که در لوح فشرده نصب استفاده شده بود. برای مثال، اگر شما دستگاه SCSI دارید، باید doscsi را به انتخاب های کرنل اضافه نمایید.

اکنون فایل را ذخیره نموده و خارج شوید. برای اتمام، لازم است تا /sbin/lilo را اجرا نمایید تا لیلو بتواند /etc/lilo.conf را برای سیستم شما بکار ببندد (مثلا خودش را در دیسک نصب نماید). در خاطر بسپارید که باید هر بار که کرنل جدیدی نصب می نمایید یا تغییراتی در فهرست انتخاب اعمال می نمایید /sbin/lilo را مجددا اجرا نمایید.

Code Listing 3.6: Finishing the LILO installation

# /sbin/lilo

اگر سئوالات بیشتری درباره لیلو دارید، لطفا به کنکاش در صفحه ویکی پدیا خودش بپردازید.

اکنون می توانید با راه اندازی مجدد دستگاه ادامه دهید.

۱۰.د. راه اندازی مجدد دستگاه

از محیط chroot خارج شوید و همه پارتیشن های مانت شده را از حالت مانت خارج نمایید. سپس آن دستور جادوئی که در انتظارش بودید را تایپ نمایید: reboot نمودن.

Code Listing 4.1: Unmounting all partitions and rebooting

# exit
cdimage ~# cd
cdimage ~# umount -l /mnt/gentoo/dev{/shm,/pts,}
cdimage ~# umount -l /mnt/gentoo{/boot,/proc,}
cdimage ~# reboot

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

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

۱۱. بپایان رساندن نصب جنتوی شما

۱۱.الف. کاربر مدیر دستگاه

افزودن یک کاربر برای استفاده های روزانه

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

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

Group Description
audio be able to access the audio devices
cdrom be able to directly access optical devices
floppy be able to directly access floppy devices
games be able to play games
portage be able to use emerge --pretend as a normal user
usb be able to access USB devices
video be able to access video capturing hardware and doing hardware acceleration
wheel be able to use su

برای مثال، برای ایجاد کاربری به نام john که عضوی از گروه های wheel و users و audio باشد، ابتدا با کاربر ریشه وارد شوید (فقط کاربر ریشه می تواند کاربر ایجاد نماید) و سپس دستور useradd را اجرا نمایید:

Code Listing 1.1: Adding a user for day-to-day use

Login: root
Password: (Your root password)

# useradd -m -G users,wheel,audio -s /bin/bash john
# passwd john
Password: (Enter the password for john)
Re-enter password: (Re-enter the password to verify)

اگر کاربری نیاز داشته باشد تا برخی کارها را در ریشه انجام دهد، می تواند از su - برای دریافت موقت امتیاز ریشه استفاده نماید. راه دیگر استفاده از بسته sudo است که اگر بخوبی پیکربندی شود، بسیار امن است.

۱۱.ب. پاک سازی دیسک

حذف کردن تاربال ها

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

Code Listing 2.1: Removing the stage3 tarball

# rm /stage3-*.tar.bz2*

Code Listing 2.2: Removing the Portage snapshot

# rm /portage-latest.tar.bz2*

۱۲. از اینجا به کجا بروم؟

۱۲.الف. مستندات

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

مشخصا باید نگاهی به بخش بعدی از کتاب راهنما بنام کارکردن با جنتو بیاندازید که تشریح می نماید که چگونه نرم افزارهای خود را بروز نگاه دارید، چگونه نرم افزارهای بیشتری نصب نمایید، پرچمک های USE چه چیزی هستند، دستگاه init جنتو چگونه کار می کند و غیره.

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

همچنین یک کتاب راهنمای امنیتی جنتو داریم که خواندنی ارزشمندی است.

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

سرانجام، ما همچنین یک ویکی جنتو رسمی برای اضافات، که در آن مستنداتی که توسط اجتماعمان گرداوری گردیده پیدا می شود داریم.

۱۲.ب. جنتو آنلاین

البته همیشه آمدن شما به تالارهای گفتگوی جنتو یا یکی از کانالهای IRC جنتو متعدد ما گرامی داشته می شود.

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

ما اکنون سکوت می نماییم و اجازه می دهیم شما از نصبتان لذت ببرید. :)

ب. کارکردن با جنتو

۱. یک آشنائی با پرتیج

۱.الف. به پرتیج خوش آمدید

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

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

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

Code Listing 1.1: Reading the emerge man page

$ man emerge

۱.ب. شاخه پرتیج

ائی بیلدها

هنگامیکه درباره بسته ها صحبت می نماییم غالباً به نام نرم افزارهائی که در شاخه پرتیج وجود دارند اشاره می نماییم. شاخه پرتیج مجموعه ائی از ebuilds و فایل هائی است که حاوی همه اطلاعاتی هستند که پرتیج برای برپا نمودن برنامه‌ها (نصب، جستجو، کنکاش … ) نیاز دارد. این ائی بیلدها به شکل پیش‌فرض در /usr/portage قرار دارند.

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

بروزرسانی شاخه پرتیج

پرتیج معمولاً بوسیله rsync که یک ابزار انتقال فایل سریع است بروزرسانی می شود. از آنجا که دستور emerge یک پوشش کامل برای rsync فراهم آورده، بروزرسانی کاری بسیار ساده است:

Code Listing 2.1: Updating the Portage tree

# emerge --sync

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

Code Listing 2.2: Running emerge-webrsync

# emerge-webrsync

امتیاز اضافه استفاده از emerge-webrsync آن است که به مدیران دستگاه این امکان را می‌دهد که فقط از تصویرهای فوری امضاء شده توسط کلیدهای GPG مهندسین توزیع جنتو استفاده نمایند. اطلاعات بیشتر در این باره را می‌توان در خصوصیات پرتیج در بخش دریافت تصویرهای فوری تأیید شده شاخه پرتیج پیدا نمود.

۱.ج. نگهداری کردن از نرم‌افزار

جستجو برای نرم‌افزار

برای جستجو در شاخه پرتیج به دنبال نام یک نرم‌افزار، می‌توانید از قابلیت درون ساز جستجوی emerge استفاده نمایید. به شکل پیش‌فرض emerge --search نام بسته هائی را که نام آن‌ها (کاملاً یا بخشی از آن) همخوان با شرط جستجوی داده شده باشد را باز می گرداند.

برای نمونه برای جستجو درباره همه بسته هائی که در نام آن‌ها کلمه pdf وجود دارد:

Code Listing 3.1: Searching for pdf-named packages

$ emerge --search pdf

اگر می‌خواهید در توضیحات نرم‌افزارها جستجو نمایید بخوبی می‌توانید از کلید --searchdesc یا -S استفاده نمایید:

Code Listing 3.2: Searching for pdf-related packages

$ emerge --searchdesc pdf

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

Code Listing 3.3: Example 'emerge --search' output

*  net-print/cups-pdf
      Latest version available: 1.5.2
      Latest version installed: [ Not Installed ]
      Size of downloaded files: 15 kB
      Homepage:    http://cip.physik.uni-wuerzburg.de/~vrbehr/cups-pdf/
      Description: Provides a virtual printer for CUPS to produce PDF files.
      License:     GPL-2

نصب کردن نرم‌افزار

هنگامیکه نرم افزاری را پیدا نمودید که از آن خوشتان آمد، می‌توانید آنرا بسادگی با emerge نمودن آن نصب نمایید. برای نمونه برای نصب نمودن gnumeric دستور دهید:

Code Listing 3.4: Installing gnumeric

# emerge gnumeric

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

Code Listing 3.5: Pretend to install gnumeric

# emerge --pretend gnumeric

هنگامیکه از پرتیج می‌خواهید بسته ائی را نصب نماید، کد منبع های مورد نیاز را (اگر چیزی مورد نیاز باشد) از اینترنت پایین گزاری می نماید و به شکل پیش‌فرض در /usr/portage/distfiles ذخیره می نماید. پس از آن، آن‌ها را از بسته بندی خارج نموده، کامپایل کرده و نصب می نماید. اگر می‌خواهید پرتیج بدون نصب بسته ها فقط آن‌ها را پایین گزاری نماید، یک گزینه --fetchonly به دستور emerge اضافه نمایید.

Code Listing 3.6: Download the sourcecode for gnumeric

# emerge --fetchonly gnumeric

یافتن مستندات بسته های نصب شده

بسیاری از بسته ها مستندات مربوط به خودشان را دارند. برخی مواقع پرچمک یو اس ائی doc تعیین می نماید که مستندات بسته ها باید نصب شوند یا خیر می‌توانید موجود بودن پرچمک یو اس ائی doc را با دستور emerge -vp <package name> بررسی نمایید.

Code Listing 3.7: Checking the existence of a doc USE flag

(alsa-lib is just an example, of course.)
# emerge -vp alsa-lib
[ebuild  N    ] media-libs/alsa-lib-1.0.14_rc1  -debug +doc 698 kB

بهترین راه برای فعال سازی پرچمک یو اس ائی doc استفاده از آن در اساس پیش سازه بسته در /etc/portage/package.use است. به این ترتیب شما فقط مستندات مربوط به بسته هائی را دریافت می نمایید که به آن علاقمندید. فعال نمودن سراسری این پرچمک می‌تواند باعث ایجاد ایرادات وابستگی‌های گردشی شود. برای اطلاعات بیشتر لطفاً بخش پرچمک های یو اس ائی را مطالعه بفرمایید.

هنگامیکه یک بسته نصب گردید، مستندات آن معمولاً در زیردایرکتوری با نام خود بسته در دایرکتوری /usr/share/doc پیدا می شود. همچنین می‌توانید همه فایل‌های نصب شده را با ابزار equery که بخشی از بسته app-portage/gentoolkit است، فهرست نمایید.

Code Listing 3.8: Locating package documentation

# ls -l /usr/share/doc/alsa-lib-1.0.14_rc1
total 28
-rw-r--r--  1 root root  669 May 17 21:54 ChangeLog.gz
-rw-r--r--  1 root root 9373 May 17 21:54 COPYING.gz
drwxr-xr-x  2 root root 8560 May 17 21:54 html
-rw-r--r--  1 root root  196 May 17 21:54 TODO.gz

(Alternatively, use equery to locate interesting files:)
# equery files alsa-lib | less
media-libs/alsa-lib-1.0.14_rc1
* Contents of media-libs/alsa-lib-1.0.14_rc1:
/usr
/usr/bin
/usr/bin/alsalisp
(Output truncated)

پاک کردن نرم‌افزار

هنگامیکه می‌خواهید یک نرم‌افزار را از دستگاه خود پاک نمایید، از emerge --unmerge استفاده نمایید. این دستور به پرتیج می‌گوید همه بسته های وابسته به این نرم‌افزار را پاک نماید بجز فایل‌های پیکربندی آن برنامه که خودتان بعد از نصب آن‌ها را تغییر داده اید. رها نمودن فایل‌های پیکربندی این امکان را به شما می‌دهد که اگر مجدداً تصمیم به نصب آن بسته گرفتید، بتوانید با آن کار نمایید.

هرچند یک اخطار بزرگ وجود دارد: پرتیج بررسی نمی کند که بسته ائی که پاک می‌کنید مورد نیاز بسته دیگری هست یا خیر. هرچند اگر بخواهید بسته های مهمی را که پاک کردن آن‌ها موجب اختلال کارکرد دستگاه شما خواهد شد را پاک نمایید به شما اخطار خواهد داد.

Code Listing 3.9: Removing gnumeric from the system

# emerge --unmerge gnumeric

هنگامیکه یک بسته را از دستگاه خود پاک می نمایید، وابستگی هائی که در هنگام نصب آن بسته به نصب شدن آن‌ها نیاز بوده و نصب گردیده اند، باقی می مانند. برای پاک کردن همه آن وابستگی‌ها از ساختار --depclean موجود برای emerge استفاده نمایید. ما درباره آن پس از این هم گفتگو خواهیم نمود.

بروز رسانی کردن دستگاهتان

برای نگهداری نمودن از دستگاهتان در بهترین شرایط (و غیر قابل ذکر است نصب آخرین بروزرسانی های امنیتی) نیاز دارید تا دستگاهتان را به شکل منظم بروز رسانی نمایید. از آنجا که پرتیج فقط ائی بیلد های موجود در شاخه پرتیج شما را بررسی می نماید، ابتدا باید شاخه پرتیج خود را بروزرسانی نمایید. هنگامیکه پرتیج شما بروزرسانی شد، می‌توانید دستگاهتان را با emerge --update world بروزرسانی نمایید. در مثال بعدی ما همچنین از کلید --ask هم استفاده می نماییم که به پرتیج خواهد گفت که فهرستی از بسته هائی که نیاز به ارتقاء دارند را نمایش دهد و از شما درباره بروزرسانی آن‌ها بپرسد.

Code Listing 3.10: Updating your system

# emerge --update --ask world

پس از آن پرتیج بدنبال نسخه جدیدتر برنامه هائی که شما نصب نموده‌اید می گردد. هرچند این فقط نسخه فهرست برنامه هائی که (در /var/lib/portage/world) نصب شده‌اند را تأیید می نماید. وابستگی‌های آن‌ها را بررسی نمی نماید. اگر می‌خواهید وابستگی‌های آن‌ها هم بخوبی بروزرسانی شود یک آرگومنت --deep به دستور اضافه نمایید:

Code Listing 3.11: Updating your system with dependencies

# emerge --update --deep world

این هنوز هم به معنی همه بسته ها نیست: برخی بسته های روی دستگاه شما در هنگام مراحل کامپایل و ساخته شدن بسته های دیگر مورد نیاز هستند، اما هنگامیکه آن بسته ها نصب شدند آن وابستگی‌ها دیگر بیش از آن مورد نیاز نیستند. پرتیج به آن‌ها وابستگی‌های هنگام نصب می گوید. برای وارد نمودن آن‌ها در چرخه بروزرسانی --with-bdeps=y اضافه نمایید.

Code Listing 3.12: Updating your entire system

# emerge --update --deep --with-bdeps=y world

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

اگر بعدها متوجه شدید که ممکن است بخواهید USE flags جدیدی با عنوان --newuse اضافه نمایید هم در هنگام این دستور بخوبی قابل اجرا است. پرتیج تأیید می نماید اگر بسته جدیدی لازم است نصب گردد یا بسته های موجود مجدداً کامپایل گردند:

Code Listing 3.13: Performing a full update

# emerge --update --deep --with-bdeps=y --newuse world

ابربسته ها

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

اگر بخواهید چنین بسته ائی را از روی دستگاه خود emerge --unmerge نمایید، وابستگی‌های بسیار آن از روی دستگاه شما پاک نخواهند شد.

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

همه این‌ها با سه دستور زیر برگزار می شوند:

Code Listing 3.14: Removing orphaned dependencies

# emerge --update --deep --newuse world
# emerge --depclean
# revdep-rebuild

دستور revdep-rebuild بوسیله بسته gentoolkit فراهم می شوند. فراموش ننمایید که ابتدا آنرا emerge نمایید:

Code Listing 3.15: Installing the gentoolkit package

# emerge gentoolkit

۱.د. مجوزها

با شروع به کار پرتیج نسخه ۲.۱.۷ شما قادر هستید نرم‌افزارها را بر اساس مجوز آن‌ها برای نصب قبول یا رد نمایید. همه بسته های موجود در شاخه، یک ورودی LICENSE در ائی بیلد خود دارند. اجرای emerge --search packagename به شما مجوز بسته را خواهد گفت.

به شکل پیش‌فرض پرتیج همه مجوزها را قبول می نماید، بغییر از مجوزهای مربوط به کاربر نهائی (EULAs) که نیازمند خواندن و امضاء یک موافقت نامه است.

متغییری که مجوز دادن به مجوزها را کنترل می نماید ACCEPT_LICENSE است که می‌تواند در /etc/portage/make.conf تنظیم شود:

Code Listing 4.1: Default ACCEPT_LICENSE in /etc/portage/make.conf

ACCEPT_LICENSE="* -@EULA"

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

می‌توانید ACCEPT_LICENSE را به شکل سراسری در /etc/portage/make.conf تنظیم نمایید و یا آنرا فقط برای یک بسته خاص در /etc/portage/package.license تنظیم نمایید.

برای مثال اگر فقط می‌خواهید مجوز truecrypt-2.7 را برای app-crypt/truecrypt تأیید نمایید، این را به /etc/portage/package.license اضافه نمایید:

Code Listing 4.2: Specifying a truecrypt license in package.license

app-crypt/truecrypt truecrypt-2.7

این اجازه نصب truecrypt را که مجوز نصب truecrypt-2.7 دارد را می دهد. اما نه نسخه هائی با مجوز truecrypt-2.8 را.

مهم: مجوز ها در /usr/portage/licenses نگهداری می‌شوند و گروه مجوزی در /usr/portage/profiles/license_groups تشکیل می گردد. اولین ورودی هر خط با حرف بزرگ انگلیسی نام گروه مجوز است و ورودی های پس از آن مجوزهای تکی.

گروه‌های مجوزی که در ACCEPT_LICENSE تعریف می‌شوند یک پیشوند @ دارند. اینجا نمونه ائی از دستگاهی است که مجوز توانمندی‌های GPL را بخوبی دیگر معدودی گروه‌ها و مجوزهای تکی، به شکل سراسری به گروه مجوزها می‌دهد:

Code Listing 4.3: ACCEPT_LICENSE in /etc/portage/make.conf

ACCEPT_LICENSE="@GPL-COMPATIBLE @OSI-APPROVED @EULA atheros-hal BitstreamVera"

اگر فقط نرم افزارهای آزاد و مستندات را بروی دستگاه خود می خواهید، ممکن است از تنظیماتی مانند این استفاده نمایید:

Code Listing 4.4: Use only free licenses

ACCEPT_LICENSE="-* @FREE"

در این مورد آزاد به عنوان FSF و OSI تلقی می شود. هر بسته ائی که مجوز آن با مجوز داده شده در این تنظیم تطبیق ننماید بروی دستگاه شما نصب نخواهد گردید.

۱.و. هنگامی که پرتیج شکایت می نماید ...

درباره SLOTs ، مجازی ها، انشعابات، معماری ها و پروفایل ها

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

با پرتیج نسخه های مختلف یک بسته می‌توانند در کنار هم قرار گیرند. در حالیکه دیگر توزیع‌ها به نام بسته هایشان توجه دارند (مانند freetype و freetype2 ) پرتیج از فن آوری به نام SLOT ها استفاده می نماید. یک ائی بیلد SLOT دقیق نسخه‌اش را شرح می دهد. ائی بیلدهائی با SLOT های مختلف می‌توانند در یک دستگاه همزیستی داشته باشند. برای مثال بسته freetype دارای SLOT="1" و SLOT="2" است.

همچنین بسته هائی هستند که ساختارهای مشابهی فراهم می‌آورند اما پیاده‌سازی متفاوتی دارند. برای نمونه metalogd و sysklogd و syslog-ng هر سه ورودگر دستگاه هستند. برنامه هائی هستند که به ورودگر دستگاه وابسته هستند. برای نمونه metalogd همانند دیگر ورودگرهای دستگاه وابستگی‌های مربوط به خود را دارد. پرتیج امکان مجازی سازی فراهم می آورد: هر ورودگر دستگاه به عنوان ورودگر دستگاه انحصاری در بسته مجازی logger از دسته بندی virtual فهرست می شود. بنابر این آن بسته ها می‌توانند به بسته virtual/logger وابستگی داشته باشند. هنگامیکه نصب پایان یافت، بسته در اولین ورود توجهات بسته را به دیگر بسته ها اعلام می نماید، مگر اینکه یک بسته ورودگر هم‌اکنون نصب شده باشد (که دراین مورد مجازی سازی خرسند کننده است).

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

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

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

بسته های قفل شده

Code Listing 5.1: Portage warning about blocked packages (with --pretend)

[blocks B     ] mail-mta/ssmtp (is blocking mail-mta/postfix-2.2.2-r1)

Code Listing 5.2: Portage warning about blocked packages (without --pretend)

!!! Error: the mail-mta/postfix package conflicts with another package.
!!!        both can't be installed on the same system together.
!!!        Please use 'emerge --pretend' to determine blockers. 

ائی بیلدها حاوی متن هائی هستند که به پرتیج درباره پیش نیازهای خودشان اطلاع می دهد. دو نوع پیش نیاز وجود دارد: وابستگی‌های ساختمانی اعلان شده در DEPEND و پیش نیازهای زمان اجرا، اعلان شده در RDEPEND . هنگامیکه یکی از این پیش نیازها یک بسته یا بسته مجازی را به عنوان ناکارآمد علامت گذاری می نماید، ماشه یک انسداد را می کشد.

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

برای برطرف نمودن انسداد می‌توانید انتخاب نمایید که بسته نصب نگردد و یا بسته ائی که دلیل ایجاد تداخل گردیده را unemerge نمایید. در مثال آورده شده می‌توانید انتخاب نمایید که postfix نصب نگردد و یا ssmtp ابتدا پاک گردد.

همچنین ممکن است ریزجزئیات بسته های مسدود شده را ببینید. مثلاً media-video/mplayer-1.0_rc1-r2 <. در این مورد بروزرسانی بسته به نسخه جدیدترش می‌تواند این انسداد را برطرف نماید.

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

بسته های ماسک زده

Code Listing 5.3: Portage warning about masked packages

!!! all ebuilds that could satisfy "bootsplash" have been masked. 

Code Listing 5.4: Portage warning about masked packages - reason

!!! possible candidates are:

- gnome-base/gnome-2.8.0_pre1 (masked by: ~x86 keyword)
- lm-sensors/lm-sensors-2.8.7 (masked by: -sparc keyword)
- sys-libs/glibc-2.3.4.20040808 (masked by: -* keyword)
- dev-util/cvsd-1.0.2 (masked by: missing keyword)
- games-fps/unreal-tournament-451 (masked by: package.mask)
- sys-libs/glibc-2.3.2-r11 (masked by: profile)
- net-im/skype-2.1.0.81 (masked by: skype-eula license(s))

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

  • نشانک ~arch keyword به این معنی است که بسته به اندازه کافی برای قرار گیری در شاخه بسته های پایدار امتحان نگردیده.
  • دو نشانک -arch keyword یا -* keyword به این معنی است که برنامه بروی معماری دستگاه شما کار نمی نماید. اگر باور دارید که کار می نماید یک ایراد در پایگاه اینترنتی bugzilla اعلام نمایید.
  • نشانک missing keyword به این معنی است که برنامه هنوز بروی معماری شما آزمایش نگردیده. از تیم آزمایشگر مربوط به معماری خودتان بخواهید آنرا آزمایش نمایند یا آنرا خودتان آزمایش نمایید و یافته هایتان را در پایگاه اینترنتی bugzilla ثبت نمایید.
  • نشانک package.mask به این معنی است که بسته خرابی دارد، ناپایدار است یا نگرانی وجود دارد که عمداً به عنوان از-آن-استفاده-نشود علامت گذاری گردیده.
  • نشانک profile به این معنی است که بسته برای پروفایل شما مناسب نیست. برنامه ممکن است در صورتی که آنرا نصب نمایید دستگاه شما را با شکست روبرو نماید و یا اصلاً قابلیت کارکرد با پروفایل شما را ندارد.
  • نشانک license به این معنی است که مجوز بسته با تنظیمات ACCEPT_LICENSE شما همخوانی ندارد. باید آشکارا مجوز استفاده از آن یا گروه مجوزی آنرا را در /etc/portage/make.conf یا /etc/portage/package.license صادر نمایید. به مجوزها مراجعه نمایید تا دریابید مجوزها چگونه کار می نمایند.

تغییرات پرچمک های USE لازم

Code Listing 5.5: Portage warning about USE flag change requirement

The following USE changes are necessary to proceed:
#required by app-text/happypackage-2.0, required by happypackage (argument)
>=app-text/feelings-1.0.0 test

پیام خطائی مانند آنچه در ادامه می‌آید ممکن است در صورتی که --autounmask تنظیم نشده باشد، مشاهده گردد:

Code Listing 5.6: Portage error about USE flag change requirement

emerge: there are no ebuilds built with USE flags to satisfy "app-text/feelings[test]".
!!! One of the following packages is required to complete your request:
- app-text/feelings-1.0.0 (Change USE: +test)
(dependency required by "app-text/happypackage-2.0" [ebuild])
(dependency required by "happypackage" [argument])

چنین اخطار یا ایرادی هنگامی رخ می‌دهد که می‌خواهید بسته ائی را نصب نمایید که نه فقط وابسته به هیچ پیش نیازی نیس دیگری نیست بلکه نیاز به پرچمک یو اس ائی مخصوص به خود (یا دسته ائی از پرچمک های یو اس ائی) را دارد. در نمونه آورده شده، بسته app-text/feelings نیاز دارد تا با USE="test" ساخته شود، اما این پرچمک USEبروی دستگاه شما تنظیم نگردیده.

برای حل این مشکل می توانید این پرچمک USE را به پرچمک های سراسری خودتان در /etc/portage/make.conf اضافه نمایید و یا آنرا برای این بسته خاص در /etc/portage/package.use تنظیم کنید.

وابستگی‌های مفقود شده

Code Listing 5.7: Portage warning about missing dependency

emerge: there are no ebuilds to satisfy ">=sys-devel/gcc-3.4.2-r4".

!!! Problem with ebuild sys-devel/gcc-3.4.2-r2
!!! Possibly a DEPEND/*DEPEND problem. 

برنامه ائی که تلاش می نمایید بروی دستگاهتان نصب نمایید به بسته دیگری وابسته است که برای دستگاه شما فراهم نگردیده. لطفاً bugzilla را بررسی نمایید که ایراد شناخته شده باشد و اگر نشده آنرا اعلام نمایید. تا هنگامیکه شاخه ها را با هم آمیخته ننمایید این اتفاق نباید رخ دهد در غیر اینصورت یک ایراد وجود دارد.

نام ائی بیلد دوپهلو

Code Listing 5.8: Portage warning about ambiguous ebuild names

[ Results for search key : listen ]
[ Applications found : 2 ]

*  dev-tinyos/listen [ Masked ]
      Latest version available: 1.1.15
      Latest version installed: [ Not Installed ]
      Size of files: 10,032 kB
      Homepage:      http://www.tinyos.net/
      Description:   Raw listen for TinyOS
      License:       BSD

*  media-sound/listen [ Masked ]
      Latest version available: 0.6.3
      Latest version installed: [ Not Installed ]
      Size of files: 859 kB
      Homepage:      http://www.listen-project.org
      Description:   A Music player and management for GNOME
      License:       GPL-2

!!! The short ebuild name "listen" is ambiguous. Please specify
!!! one of the above fully-qualified ebuild names instead.

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

وابستگی‌های گردشی

Code Listing 5.9: Portage warning about circular dependencies

!!! Error: circular dependencies: 

ebuild / net-print/cups-1.1.15-r2 depends on ebuild / app-text/ghostscript-7.05.3-r1
ebuild / app-text/ghostscript-7.05.3-r1 depends on ebuild / net-print/cups-1.1.15-r2 

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

شکست خوردن واکشی

Code Listing 5.10: Portage warning about fetch failed

!!! Fetch failed for sys-libs/ncurses-5.4-r5, continuing...
(...)
!!! Some fetch errors were encountered.  Please see above for details.

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

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

محافظت از پروفایل دستگاه

Code Listing 5.11: Portage warning about profile-protected package

!!! Trying to unmerge package(s) in system profile. 'sys-apps/portage'
!!! This could be damaging to your system.

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

واماندگی تأیید دایجست

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

Code Listing 5.12: Digest verification failure

>>> checking ebuild checksums
!!! Digest verification failed:

این نشانه آن است که چیزی در شاخه پرتیج اشتباه است – بیشتر هنگامی رخ می‌دهد که گسترش دهنده ائی در هنگام سپردن یک بسته به شاخه مرتکب اشتباه گردیده.

هنگامیکه تاییدیه دایجست وامانده می شود، تلاش نکنید تا خودتان بسته را ردایجست نمایید. اجرای ائی بیلد foo بازگشائی مشکل را حل نمی نماید; به احتمال بسیار زیاد این کار باعث بوجود آمدن مشکل جدی تری خواهد شد!

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

هنگامیکه مشاهده نمودید که ایراد برطرف گردیده، ممکن است بخواهید re-sync نمایید تا digest سالم را نصب نمایید.

مهم: این به آن معنی نیست که شما می‌توانید چندین بار re-sync نمایید! چنانکه در قوانین sync (هنگامی که emerge --sync را اجرا می نمایید) آمده، کاربرانی که مرتبا sync می نمایند، محدود می شوند. در‌واقع بهتر است که صبر نمایید تا نوبت بعدی جدولبندی syncتان فرا برسد تا سرور دچار سرریز نگردد.

۲. پرچمکها USE

۲.الف. پرچمک های USE چه چیزی هستند؟

ایده قرار گرفته در پشت پرچمک های یو اس ائی

هنگامیکه جنتو نصب می نمایید (یا هر توزیع دیگری یا حتی هر سیستم عامل دیگری در رابطه با این مطلب) انتخاب هائی درباره محیطی که در آن کار می نمایید انجام می دهید. تنظیمات مربوط به یک سرور با تنظیمات مربوط به یک جایگاه کار متفاوت است. یک جایگاه کار بازی با جایگاه کار سه بعدی متفاوت است.

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

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

تعریف کردن یک پرچمک یو اس ائی

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

اجازه دهید به یک نمونه ویژه اشاره نماییم: کلمه کلیدی kde. اگر در متغییرهای USE خودتان این کلمه کلیدی را ندارید، همه بسته هائی که به شکل انتخابی از kde پشتیبانی می نمایند، بدون پشتیبانی از آن کامپایل خواهند شد. همه بسته هائی که یک گزینه انتخابی پشتیبانی از KDE دارند، بدون نصب کتابخانه‌های KDE (به عنوان پیش نیاز) نصب خواهند شد. اگر کلمه کلیدی kde را تعریف نموده باشید، آن بسته ها با پشتیبانی از KDE کامپایل خواهند شد، و کتابخانه‌های KDE به عنوان پیش نیاز نصب خواهند گردید.

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

ماهیت یک پرچمک یو اس ائی چیست؟

دو نوع پرچمک یو اس ائی وجود دارد: پرچمک های سراسری و پرچمک های محلی.

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

یک فهرست از متغییرهای سراسری پرچمک های یو اس ائی می‌تواند به شکل آنلاین یا به شکل محلی در /usr/portage/profiles/use.desc پیدا شوند.

فهرستی از متغییرهای پرچمک های یو اس ائی را می‌توان به شکل محلی در /usr/portage/profiles/use.local.desc پیدا نمود.

۲.ب. استفاده نمودن از پرچمک های یو اس ائی

اعلام پایدار پرچمک های یو اس ائی

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

همانگونه که پیشتر اعلام شد، همه پرچمک های یو اس ائی درون متغییرهای USE اعلام می گردند. برای آسانتر نمودن جستجو و قرار دادن پرچمک های یو اس ائی توسط کاربران، به شکل پیش‌فرض یک تنظیماتی برای پرچمک های یو اس ائی فراهم آورده ایم. این تنظیمات مجموعه ائی از پرچمک ها هستند که ما فکر می‌کنیم به شکل عمومی توسط کاربران جنتو بکار گرفته می شوند. این تنظیمات پیش فرض، در make.defaults که بخشی از پروفایل شماست اعلان گردیده اند.

پروفایلی که دستگاه شما به آن گوش می نماید، در میانبر /etc/portage/make.profile اعلام گردیده. هر پروفایل بروی پروفایل بزرگتر دیگری کار می نماید، و در نتیجه محصول نهائی بخشی از همه پروفایل هاست. بالاترین پروفایل، پروفایل base است ( /usr/portage/profiles/base ).

اجازه دهید نگاهی به این تنظیمات پیش‌فرض در پروفایل 10.0 بیاندازیم:

Code Listing 2.1: Cumulative make.defaults USE variable for the 10.0 profile

(This example is the sum of the settings in base, default/linux,
 default/linux/x86 and default/linux/x86/10.0/)
USE="a52 aac acpi alsa branding cairo cdr dbus dts dvd dvdr emboss encode exif
fam firefox flac gif gpm gtk hal jpeg lcms ldap libnotify mad mikmod mng mp3
mp4 mpeg ogg opengl pango pdf png ppds qt3support qt4 sdl spell
startup-notification svg tiff truetype vorbis unicode usb X xcb x264 xml xv
xvid"

همانگونه که می بینید، این متغییر در حال حاضر شامل تعداد زیادی کلمه کلیدی است. فایل make.defaults را برای تعیین متغییرهای USE مورد نیازتان، تغییر ندهید: تغییرات در این فایل در هنگامی که پرتیج را بروزرسانی می نمایید، به شکل پیش‌فرض خود برخواهد گشت!

برای تغییر این تنظیمات پیش‌فرض لازم است تا کلمه های کلیدی را به متغییر USE اضافه یا از آن کم نمایید. اینکار با تعریف متغییر USE در /etc/portage/make.conf به شکل سراسری صورت می گیرد. در این متغییر، شما پرچمک های یو اس ائی را که نیاز دارید اضافه می نمایید، یا پرچمک های یو اس ائی را که نیاز ندارید را پاک می نمایید. این آخری بوسیله اضافه نمودن یک علامت منها در پیش از کلمه کلیدی انجام می‌گردد (“-”).

برای مثال برای حذف پشتیبانی از KDE و QT و اضافه نمودن پشتیبانی از ldap بجای آن، USE زیر را می‌توان در /etc/portage/make.conf تعریف نمود:

Code Listing 2.2: An example USE setting in /etc/portage/make.conf

USE="-kde -qt4 ldap"

اعلام پرچمک های USE برای بسته های منحصر به فرد

گاهی مواقع می‌خواهید پرچمک USE را برای یک (یا چند) برنامه اعلام نمایید اما نمی‌خواهید این پرچمک در همه دستگاه مورد استفاده قرار گیرد. برای انجام اینکار لازم دارید تا دایرکتوری /etc/portage را ایجاد نمایید (اگر هنوز وجود ندارد) و فایل /etc/portage/package.use را ویرایش نمایید. معمولاً این یک فایل تکی است، اما همچنین می‌تواند یک دایرکتوری باشد; برای اطلاعات بیشتر man portage را ببینید. مثال بعدی فرض بر این می‌گیرد که package.use یک فایل تکی است.

برای مثال اگر berkdb را به شکل سراسری نمی‌خواهید اما آنرا برای mysql می خواهید، می‌توانید اینگونه اضافه ائی داشته باشید:

Code Listing 4.11: /etc/portage/package.use example

dev-db/mysql berkdb

البته بخوبی هم می‌توانید پشتیبانی یک پرچمک را برای یگ برنامه خاص حذف نمایید. برای مثال اگر نمی‌خواهید java در PHP پشتیبانی شود:

Code Listing 2.4: /etc/portage/package.use 2nd example

dev-php/php -java

اعلام موقت پرچمک های یو اس ائی

گاهی مواقع فقط می‌خواهید یک بار تنظیم USE را اجرا نمایید. بجای دوبار ویرایش /etc/portage/make.conf (برای گذاردن و حذف پرچمک) می‌توانید متغییر USE را به عنوان متغییر محیطی اعلام نمایید. بخاطر داشته باشید که هنگامی که این برنامه را مجدداً نصب می نمایید یا آنرا بروزرسانی می نمایید (همینطور البته به عنوان بخشی از بروزرسانی دستگاه)، تغییرات شما از بین خواهند رفت!

به عنوان یک مثال می‌خواهیم java در تنظیمات USE در هنگام نصب seamonkey پاک گردد.

Code Listing 2.5: Using USE as environment variable

# USE="-java" emerge seamonkey

حق تقدم

البته پیشی گیری هم در اینکه کدام تنظیمات در بالای دیگر تنظیمات اجرا شوند وجود دارد. شما نمی‌خواهید از متغییر USE="-java" استفاده نمایید و ببینید که هنوز java به خاطر اعلام در تنظیماتی بالاتر در حال پشتیبانی شدن است. پیشی گیری تنظیمات به گونه زیر است (اولین، کمترین حق پیشی گیری را دارد):

  1. تنظیمات USE پیش‌فرض اعلام شده در فایل make.defaults شما به عنوان بخشی از پروفایل شما
  2. تنظیمات تعریف شده توسط کاربر در /etc/portage/make.conf
  3. تنظیمات تعریف شده توسط کاربر در /etc/portage/package.use
  4. تنظیمات تعریف شده توسط کاربر به عنوان متغییر محیطی

برای دیدن تنظیمات پایانی USE به شکلی که پرتیج آنرا می بیند، دستور emerge --info را اجرا نمایید. این دستور همه متغییرهای نهائی (شامل متغییر USE ) را به همراه مفادی که توسط پرتیج مورد استفاده قرار می‌گیرد را فهرست می نماید.

Code Listing 2.6: Running emerge --info

# emerge --info

سازگار نمودن تمام دستگاه با پرچمک های USE جدید

اگر پرچمک های USE خود را تغییر داده‌اید و دوست دارید دستگاه پایانی خود را با خصوصیت‌های پرچمک های جدید بروزرسانی نمایید، از انتخاب emerge --newuse استفاده نمایید:

Code Listing 2.7: Rebuilding your entire system

# emerge --update --deep --newuse world

پس از آن depclean پرتیج را اجرا نمایید تا وابستگی‌های شرایطی که پیشتر در دستگاه قدیمی شما مورد استفاده بودند اما اکنون بدون استفاده مانده اند، پاک گردند.

اخطار: اجرای دستور emerge --depclean دستور یا اعلانی خطرناک است و باید با دقت استفاده گردد. فهرست بسته هائی را که پاک می‌گردند را مجدداً برسی نمایید تا مطمئن شوید بسته ائی که مورد نیاز شما باشد، پاک نمی گردد. در نمونه بعدی ما یک کلید -p به دستور اضافه می نماییم تا به depclean بگوییم که فقط فهرست بسته ها را به نمایش در آورد بدون اینکه آن‌ها را پاک کند.

Code Listing 2.8: Removing obsoleted packages

# emerge -p --depclean

هنگامیکه depclean به پایان رسید، دستور revdep-rebuild را اجرا نمایید تا برنامه هائی را که به شکل سیال به اشتراک های بسته های پاک شده مربوط گردیده بودند، بازسازی شوند. دستور revdep-rebuild بخشی از بسته gentoolkit است; فراموش نکنید که ابتدا آنرا emerge نمایید.

Code Listing 2.9: Running revdep-rebuild

# revdep-rebuild

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

۲.ج. بسته ویژه پرچمک های یو اس ائی

دیدن متغییرهای پرچمک یو اس ائی

اجازه دهید نمونه ائی درباره seamonkey بیاوریم: چه پرچمک های USE برای آن فهرست می شوند؟ برای فهمیدن، ما از انتخاب های --pretend و --verbose برای emerge استفاده می نماییم:

Code Listing 3.1: Viewing the used USE flags

# emerge --pretend --verbose seamonkey
These are the packages that I would merge, in order:

Calculating dependencies ...done!
[ebuild   R   ] www-client/seamonkey-1.0.7  USE="crypt gnome java -debug -ipv6
-ldap -mozcalendar -mozdevelop -moznocompose -moznoirc -moznomail -moznopango
-moznoroaming -postgres -xinerama -xprint" 0 kB

دستور emerge تنها ابزار برای انجام این کار نیست. در حقیقت ما ابزاری مخصوص برای اطلاعات بسته ها به نام equery که در بسته gentoolkit قرار دارد، داریم. ابتدا بسته gentoolkit را نصب نمایید:

Code Listing 3.2: Installing gentoolkit

# emerge gentoolkit

اکنون دستور equery را با آرگومنت uses برای دیدن پرچمک های USE بسته مورد نظر، اجرا نمایید. برای مثال برای بسته gnumeric به شکل زیر اجرا نمایید:

Code Listing 3.3: Using equery to view used USE flags

# equery --nocolor uses =gnumeric-1.6.3 -a
[ Searching for packages matching =gnumeric-1.6.3... ]
[ Colour Code : set unset ]
[ Legend : Left column  (U) - USE flags from make.conf              ]
[        : Right column (I) - USE flags packages was installed with ]
[ Found these USE variables for app-office/gnumeric-1.6.3 ]
 U I
 - - debug  : Enable extra debug codepaths, like asserts and extra output.
              If you want to get meaningful backtraces see
              http://www.gentoo.org/proj/en/qa/backtraces.xml .
 + + gnome  : Adds GNOME support
 + + python : Adds support/bindings for the Python language
 - - static : !!do not set this during bootstrap!! Causes binaries to be
              statically linked instead of dynamically

۳. خصوصیات پرتیج

۳.الف. خصوصیت‌های پرتیج

پرتیج چندین خصوصیت اضافه هم دارد که تجربه کار با جنتو را برای شما بهتر می نمایند. بسیاری از این خصوصیات به ابزارهائی که موجب ارتقاء بهینه سازی، قابل اطمینان تر شدن، امنیت، … هستند، اتکا می نماید.

برای راه اندازی/از کار انداختن خصوصیت‌های پرتیج لازم دارید تا متغییر FEATURES را در فایل /etc/portage/make.conf که شامل کلمات کلیدی گوناگونی است، که با کاما از هم جدا شده اند، را ویرایش نمایید. در چند مورد هم لازم است تا ابزارهای اضافه ائی را که خصوصیت‌ها به آن‌ها متکی هستند را نصب نمایید.

همه خصوصیت هائی که پرتیج از آن‌ها پشتیبانی می نماید در اینجا فهرست نشده اند، برای یک بررسی کامل لطفاً به صفحه راهنمای make.conf مراجعه نمایید:

Code Listing 1.1: Consulting the make.conf man page

$ man make.conf

برای اینکه بیابید کدام FEATURES به شکل پیش‌فرض تنظیم گردیده، دستور emerge --info را اجرا نموده و بدنبال متغییر FEATURES در آن جستجو نمایید:

Code Listing 1.2: Finding out the FEATURES that are already set

$ emerge --info | grep FEATURES

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

استفاده نمودن از distcc

برنامه distcc برنامه ائی است برای توزیع نمودن کامپایل شده ها در چندین ماشین، که لزوماً برابر نباشند، بروی یک شبکه. سمت کاربر distcc همه اطلاعات لازم را به سرور distcc موجود (اجرا کردن distccd) ارسال می نماید، بنابر این سرور می‌تواند قطعات کد را برای سمت کاربر کامپایل نماید. کامپایل شبکه ائی نتیجه زمان سریعتر کامپایل را پیامد خواهد داشت.

می‌توانید اطلاعات بیشتر درباره distcc را (و همینطور چگونگی کارکرد آن با جنتو) را در مستندات discc جنتوی ما پیدا نمایید.

نصب کردن distcc

برنامه Distcc با یک تکلیف مانیتور به مانیتور گرافیکی که رایانه شما برای کامپایل نمودن ارسال می نماید، منتقل می گردد. اگر از میزکار Gnome استفاده می نمایید، پس 'gnome' را در متغییر USE خود قرار دهید. هرچند اگر از گنوم استفاده نمی نمایید و هنوز دوست دارید مانیتور داشته باشید، کلمه کلیدی 'gtk' را در متغییرهای USE خودتان قرار دهید.

Code Listing 2.1: Installing distcc

# emerge distcc

فعال نمودن پشتیبانی پرتیج

به متغییر FEATURES در /etc/portage/make.conf کلمه کلیدی distcc را اضافه نمایید. در ادامه متغییر MAKEOPTS را مطابق علاقه خودتان ویرایش نمایید. یک رهنمائی می‌تواند اینگونه باشد که در ”-jx” بجای x تعداد CPU هائی را که distccd را اجرا می نمایند (در رایانه ائی که بروی آن هستید) قرار دهید، اما ممکن است با اعداد دیگر نتیجه بهتری را بوجود آورید.

اکنون distcc-config را اجرا نمایید و فهرست متغییرهای سرور را وارد نمایید. برای یک نمونه ساده ما فرض می نماییم که سرور DistCC موجود ۱۹۲.۱۶۸.۱.۱۰۲ است (رایانه پیش رو)، ۱۹۲.۱۶۸.۱.۱۰۳ , ۱۹۲.۱۶۸.۱.۱۰۴ (دو رایانه راه دور):

Code Listing 2.2: Configuring distcc to use three available distcc servers

# distcc-config --set-hosts "192.168.1.102 192.168.1.103 192.168.1.104"

فراموش ننمایید که دایمون distccd را نیز راه اندازی نمایید:

Code Listing 2.3: Starting the distccd daemons

# rc-update add distccd default
# /etc/init.d/distccd start

۳.ج. کش کردن کامپایل

درباره c کش

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

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

اخطار: کش ccache دلیل تعداد زیادی از خطاهای زمان کامپایل شناخته می شود. گاهی مواقع ccache کدهای کهنه اشیاء یا فایل های خراب را نگه می دارد، که می تواند منجر به emerge نشدن بسته ها گردد. اگر چنین چیزی رخ داد (اگر پیام خطائی مانند "File not recognized: File truncated" دریافت نمودید)، تلاش کنید تا قبل از گزارش یک ایراد برنامه را با از کار انداختن ccache (FEATURES="-ccache" در /etc/portage/make.conf) دوباره کامپایل نمایید. در شرایطی غیر از اینکه کار گسترش انجام می دهید، سی کش را فعال ننمایید.

نصب کردن سی کش

برای نصب ccache دستور emerge ccache را اجرا نمایید:

Code Listing 3.1: Installing ccache

# emerge ccache

فعال نمودن پشتیبانی پرتیج

فایل /etc/portage/make.conf را باز نموده و ccache را به متغییر FEATURES اضافه نمایید. پس از آن متغییر جدیدی که به آن CCACHE_SIZE گفته می شود، اضافه نمایید و آنرا بروی ”2G” تنظیم نمایید:

Code Listing 4.11: Editing CCACHE_SIZE in /etc/portage/make.conf

CCACHE_SIZE="2G"

برای بررسی اینکه تابع های سی کش، از کش بخواهند که شما را به شکل ایستا تدارک ببینند، چراکه پرتیج از دایرکتوری سی کش متفاوتی استفاده می نماید، لازم دارید تا متغییر CCACHE_DIR را بدقت تنظیم نمایید:

Code Listing 3.3: Viewing ccache statistics

# CCACHE_DIR="/var/tmp/ccache" ccache -s

موقعیت /var/tmp/ccache دایرکتوری پیش فرض خانه کش پرتیج است. اگر می‌خواهید این تنظیمات را تغییر دهید، می‌توانید متغییر CCACHE_DIR را در /etc/portage/make.conf تنظیم نمایید.

هرچند اگر ccache را اجرا نمایید، از موقعیت پیش‌فرض ${HOME}/.ccache استفاده خواهد نمود که دلیل آن است که چرا باید متغییر CCACHE_DIR را هنگامیکه درباره سی کش (پرتیج) ایستا می پرسد، تنظیم نمایید.

استفاده از سی کش برای کامپایل C غیر پرتیجی

اگر علاقمندید از سی کش برای کامپایل کردن مواردی که در پرتیج نیستند استفاده نمایید، /usr/lib/ccache/bin را به متغییر PATH خودتان (قبل از /usr/bin ) اضافه نمایید. این کار می تواند با ویرایش .bash_profile در دایرکتوری خانه کاربرتان انجام شود. استفاده از .bash_profile یک راه برای تعریف نمودن PATH متغییرها است.

Code Listing 3.4: Editing .bash_profile

PATH="/usr/lib/ccache/bin:/opt/bin:${PATH}"

۳.د. پشتیبانی بسته های باینری

ساختن بسته های از پیش کامپایل شده

پرتیج نصب بسته های از پیش ساخته شده را پشتیبانی می نماید. با این حال جنتو خودش بسته های از پیش ساخته شده فراهم نمی آورد (بغییر از تصویرهای فوری GRP که از پیش ساخته اند). پرتیج می‌تواند کاملاً از بسته های از پیش ساخته آگاه باشد.

برای ساختن بسته های از پیش ساخته شده، می‌توانید اگر بسته در حال حاضر بروی دستگاه شما نصب گردیده، از quickpkg استفاده نمایید، یا آنرا با گزینه های --buildpkg و --buildpkgonly امرژ نمایید.

اگر می‌خواهید پرتیج از هر بسته ائی که نصب نموده‌اید بسته از پیش ساخته شده ائی تهیه نماید، کلمه کلیدی buildpkg را به متغییر FEATURES اضافه نمایید.

پشتیبانی بیشتر برای دسته های بسته های از پیش ساخته شده می‌تواند بوسیله catalyst فراهم آید. برای اطلاعات بیشتر درباره سازمان دهنده ها لطفاً پرسش های متداول سازمان دهندگان را مطالعه بفرمایید.

نصب کردن بسته های از پیش ساخته شده

هرچند جنتو یکی از آن‌ها را فراهم نمی آورد، می‌توانید یک مخزن مرکزی هنگامیکه بسته های از پیش ساخته شده را نگهداری می نمایید، ایجاد نمایید. اگر می‌خواهید از این مخزن استفاده نمایید، لازم دارید تا پرتیج را از وجود آن با اشاره متغییر PORTAGE_BINHOST به آن، آگاه نمایید. برای مثال اگر بسته های از پیش ساخته شده در آدرس ftp://buildhost/gentoo قرار دارند:

Code Listing 4.1: Setting PORTAGE_BINHOST in /etc/portage/make.conf

PORTAGE_BINHOST="ftp://buildhost/gentoo"

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

برای مثال برای نصب gnumeric از بسته های از پیش ساخته شده:

Code Listing 4.2: Installing the gnumeric prebuilt package

# emerge --usepkg --getbinpkg gnumeric

اطلاعات بیشتر درباره گزینه های بسته های از پیش ساخته شده امرژمی تواند در صفحه راهنمای امرژ یافت گردد:

Code Listing 4.3: Reading the emerge man page

$ man emerge

۳.ه. دریافت فایل‌ها

دریافت موازی

هنگامی که دسته ائی از بسته ها را امرژ می نمایید، پرتیج می‌تواند در هنگامیکه بسته ائی را کامپایل می نماید، بسته بعدی را که لازم است دریافت شود را دریافت نماید، بدینگونه زمان کامپایل کردن را کاهش دهد. برای استفاده از این قابلیت، گزینه "parallel-fetch" را به FEATURES خودتان اضافه نمایید. توجه داشته باشید که این گزینه به شکل پیش‌فرض فعال است، بنابر این لازم به فعال سازی آن ندارید.

دریافت کاربر

هنگامیکه پرتیج از کاربر ریشه راه اندازی می شود، گزینه FEATURES="userfetch" امتیاز فایل‌های منبع را به کاربر ریشه خواهد داد. این یک بهسازی امنیتی کوچک است.

۳.و. قرار دادن تصویرهای فوری شاخه پرتیج تأیید شده

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

برای پیکربندی پرتیج، ابتدا یک محل امن که تاییدیه کلیدهای مسئول زیر بنای جنتو برای امضاء نمودن تصویر فوری شاخه پرتیج را در آن پایین گذاری و قبول نمایید، ایجاد کنید. البته اگر می خواهید، می‌توانید این کلید های GPG را به عنوان خط راهنمای مناسب (شبیه بررسی کلیدهای پرینت انگشتی) تأیید نمایید. می‌توانید فهرستی از کلید های GPG را که توسط گروه مهندسی نسخ در صفحه پروژه شان استفاده می‌شود را بیابید.

Code Listing 6.1: Creating a truststore for Portage

# mkdir -p /etc/portage/gpg
# chmod 0700 /etc/portage/gpg
(... Substitute the keys with those mentioned on the release engineering site ...)
# gpg --homedir /etc/portage/gpg --keyserver subkeys.pgp.net --recv-keys 0x239C75C4 0x96D8BF6D
# gpg --homedir /etc/portage/gpg --edit-key 0x239C75C4 trust
# gpg --homedir /etc/portage/gpg --edit-key 0x96D8BF6D trust

پس از آن /etc/portage/make.conf را ویرایش نموده و پشتیبانی برای امضاء تصویرهای فوری شاخه پرتیج را (با استفاده از FEATURES="webrsync-gpg" است ) فعال نمایید و بروزرسانی پرتیج با استفاده از روش emerge --sync معمول را غیر فعال نمایید.

Code Listing 6.2: Updating Portage for signed tree validation

FEATURES="webrsync-gpg"
PORTAGE_GPG_DIR="/etc/portage/gpg"
SYNC=""

همه‌اش همین بود. هنگامیکه بار دیگر emerge-webrsync را اجرا نمایید، فقط تصویرهای فوری با امضاء تأیید شده بروی فایل‌های سیستمی شما پهن خواهد شد.

۴. Initscripts

۴.الف. مرحله های اجرا

راه اندازی نمودن دستگاه شما

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

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

این پردازش پس از آن مطمئن می‌شود که همه فایل سیستم‌ها (که در /etc/fstab تعریف شده اند) مانت شوند و برای استفاده آماده گردند. پس از آن تعدادی کد را که در /etc/init.d قرار دارند را اجرا می نماید، که خدماتی را آغاز می نمایند که برای راه اندازی موفق دستگاهتان به آن‌ها نیاز دارید.

سر انجام هنگامی که همه این کدها اجرا گردیدند، init ترمینال ها را با چسباندن مرحله ائی به آن‌ها که agetty نامیده می شود، راه اندازی می نماید (در بیشتر موارد کنسول های مجازی را که در پشت Alt-F1 و Alt-F2 و غیره پنهان گردیده اند). این پردازش پس از آن مطمئن می‌شود که شما قادر به ورود توسط این ترمینالها بوسیله اجرای login خواهید بود.

Init کدها

اکنون init تنها به اجرا اتفاقی کدهای موجود در /etc/init.d نمی پردازد. حتی بیشتر، آن همه کدهای داخل /etc/init.d را اجرا نمی نماید، بلکه تنها کدهائی را که به آن گفته شده را اجرا می نماید. آن با نگاه کردن به درون /etc/runlevels تصمیم می‌گیرد که چه کدهائی باید اجرا گردند.

ابتدا init همه کدهای /etc/init.d را که میانبری در /etc/runlevels/boot دارند را اجرا می نماید. معمولاً شروع به اجرای برنامه‌ها به ترتیب الف باء نام آن‌ها می نماید اما برخی کدها اطلاعات پیش نیازهائی را در خود دارند که به دستگاه می‌گویند که کد دیگری پیش از اجرای آن‌ها باید اجرا گردد تا آن‌ها بتوانند آغاز شوند.

هنگامیکه همه کدهای ارجاع داده شده در /etc/runlevels/boot اجرا گردیدند، init با اجرا نمودن کدهائی که در /etc/runlevels/default میانبری از آن‌ها وجود دارد، ادامه می دهد. مجدداً از ترتیب الف باء در نام آن‌ها استفاده می نماید، تا اینکه کدی اطلاعاتی درباره پیش نیازهائی در خود داشته باشد، که در این موردها برای ایجاد یک توالی تأیید شده آغاز روش را تغییر می دهد.

Init چگونه کار می‌کند

البته init همه این تصمیم ها را خودش نمی گیرد. نیاز به فایل پیکربندی دارد که مشخص نماید چه فعالیت هائی باید اعمال شود. این فایل پیکربندی /etc/inittab است.

اگر ترتیب راه اندازی را بخاطر داشته باشید، بخاطر دارید که اولین فعالیت init مانت نمودن همه فایل سیستم‌ها بود. این در خطی که در زیر به آن اشاره شده در /etc/inittab قرار دارد:

Code Listing 1.1: The system initialisation line in /etc/inittab

si::sysinit:/sbin/rc sysinit

این خط به init می‌گوید که باید /sbin/rc sysinit را برای ارزش آغازین دادن به دستگاه اجرا نماید. کد /sbin/rc مراقب ارزش آغازین دادن هست، بنابر این ممکن است شما بگویید init کار بیشتری انجام نمی دهد-این وظیفه به مرحله دیگری ارجاع داده می شود.

دوم، init شروع به اجرا همه کدهائی که میانبری در /etc/runlevels/boot دارند می نماید. این در خط زیر تعریف می شود:

Code Listing 1.2: The system initialisation, continued

rc::bootwait:/sbin/rc boot

دوباره کد rc وظایف لازم را انجام می دهد. توجه داشته باشید که انتخاب های داده شده به rc (راه اندازی) مشابه زیردایرکتوری است که /etc/runlevels استفاده می نماید.

اکنون init فایل پیکربندی آن‌ها را برای دیدن اینکه چه مرحله اجرائی باید اجرا شود، بررسی می نماید. برای تصمیم گیری برای اینکار، خط زیر را در /etc/inittab می خواند:

Code Listing 1.3: The initdefault line

id:3:initdefault:

در این مورد (که بیشتر کاربران جنتو از آن استفاده خواهند نمود)، نشانگر مرحله اجرا ۳ است. با استفاده از این اطلاعات، init بررسی می نماید که چه چیزی باید برای آغاز به کار مرحله اجرا ۳ ، اجرا شود:

Code Listing 1.4: The runlevel definitions

l0:0:wait:/sbin/rc shutdown
l1:S1:wait:/sbin/rc single
l2:2:wait:/sbin/rc nonetwork
l3:3:wait:/sbin/rc default
l4:4:wait:/sbin/rc default
l5:5:wait:/sbin/rc default
l6:6:wait:/sbin/rc reboot

خطی که مرحله ۳ را تعریف می نماید، دوباره از کد rc برای شروع خدمات (اکنون با آرگومنت های پیش فرض) استفاده می نماید. دوباره توجه داشته باشید که آرگومنت های rc مشابه آرگومنت های زیردایرکتوری /etc/runlevels هستند.

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

Code Listing 1.5: The virtual consoles definition

c1:12345:respawn:/sbin/agetty 38400 tty1 linux
c2:12345:respawn:/sbin/agetty 38400 tty2 linux
c3:12345:respawn:/sbin/agetty 38400 tty3 linux
c4:12345:respawn:/sbin/agetty 38400 tty4 linux
c5:12345:respawn:/sbin/agetty 38400 tty5 linux
c6:12345:respawn:/sbin/agetty 38400 tty6 linux

یک مرحله اجرا چیست؟

دارید می‌بینید که init از یک نمایه شماره بندی برای تصمیم درباره اینکه کدام مرحله اجرا باید فعال شود، استفاده می نماید. یک مرحله اجرا قسمتی است که دستگاه شما اجرا می نماید و شامل مجموعه ائی از کدها است (کدهای مرحله اجرا یا initscripts ) که باید در زمانی که شما به یک مرحله اجرا وارد یا خارج می شوید، اجرا گردند.

در جنتو هفت مرحله اجرا تعریف گردیده اند: سه مرحله اجرای داخلی. به این سه مرحله اجرای داخلی sysinit و shutdown و reboot گفته می‌شود و واقعاً همان چیزی را که نام آن‌ها بر آن دلالت می نماید را انجام می دهند: ارزش آغازی دادن به دستگاه، قطع نمودن برق و راه اندازی دوباره دستگاه.

مرحله اجراهای تعریف شده توسط کاربر آنهائی هستند که یک همراه در زیردایرکتوری /etc/runlevels دارند: boot, default, nonetwork و single. مرحله اجرای boot همه خدمات ضروری دستگاه که مورد استفاده همه مرحله اجراهای دیگر قرار می‌گیرند را راه اندای می نماید. سه مرحله اجرای باقی‌مانده در خدماتی که آن‌ها را راه اندازی می نمایند با هم متفاوت هستند: default برای مدیریت روز به روز استفاده می شود، nonetwork در مواردی که وجود یک شبکه مورد نیاز نیست استفاده می‌شود و single هنگامیکه می‌خواهید دستگاه را تعمیر نمایید مورد استفاده قرار می گیرد.

کارکردن با Init Scripts

کدهائی که فرایند rc آن‌ها را راه اندازی می نماید کدهای init نامیده می شوند. هر کد در /etc/init.d می‌تواند بوسیله آرگومنت های start, stop, restart, pause, zap, status, ineed, iuse,needsme, usesme یا broken اجرا گردد.

برای راه اندازی، توقف یا راه اندازی دوباره یک خدمت (و همه خدمات وابسته به آن)، آرگومنت های start, stop و restart باید استفاده گردند:

Code Listing 1.6: Starting Postfix

# /etc/init.d/postfix start

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

اگر می‌خواهید یک خدمت را متوقف نمایید، اما نه خدماتی را که به آن وابسته هستند، می‌توانید از آرگومنت pause استفاده نمایید:

Code Listing 1.7: Stopping Postfix but keep the depending services running

# /etc/init.d/postfix pause

اگر می‌خواهید ببینید یک خدمت چه وضعیتی دارد (راه اندازی، توقف، توقف موقت …) می‌توانید از آرگومنت status استفاده نمایید:

Code Listing 1.8: Status information for postfix

# /etc/init.d/postfix status

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

Code Listing 1.9: Resetting status information for postfix

# /etc/init.d/postfix zap

برای اینکه بپرسید هر خدمتی چه پیش نیازهائی دارد، می‌توانید از iuse یا ineed استفاده نمایید. با ineed می‌توانید خدماتی را که واقعاً مورد نیاز کارکردن دقیق و خدمات دیگر هستند را ببینید. در سمت دیگر iuse خدماتی را نشان می‌دهد که می‌توانند توسط خدمات استفاده شوند، اما برای کارکردن دقیق مورد نیاز نیستند.

Code Listing 1.10: Requesting a list of all necessary services on which Postfix depends

# /etc/init.d/postfix ineed

مشابها می توانید درباره خدمات مورد نیاز خدمت (needsme) یا خدماتی که می‌تواند استفاده نماید (usesme) بپرسید:

Code Listing 1.11: Requesting a list of all services that require Postfix

# /etc/init.d/postfix needsme

در نهایت می‌توانید درباره پیش نیازهائی که خدمت به آن‌ها نیاز دارد و وجود ندارند بپرسید:

Code Listing 1.12: Requesting a list of missing dependencies for Postfix

# /etc/init.d/postfix broken

۴.ب. کارکردن با rc-update

rc-update چیست؟

دستگاه init جنتو از یک شاخه-پیش نیازها استفاده می نماید تا تصمیم بگیرد چه خدمتی باید در ابتدای همه آغاز گردد. از آنجا که این کاری خسته‌کننده است که ما نمی‌خواهیم کاربرانمان آنرا به شکل دستی انجام دهند، ابزارهائی ایجاد نموده ایم که بسادگی مراحل اجرا و کدهای init را مدیریت می نمایند.

با rc-update می‌توانید یک کد init را به مرحله اجرا افزوده یا از آن پاک نمایید. پس از آن ابزار rc-update به شکل خودکار از کد depscan.sh می‌خواهد تا شاخه-پیش نیازها را دوباره بازسازی نماید.

اضافه کردن و پاک کردن خدمات

هم‌اکنون نیز درهنگامه مراحل نصب شما کدهای init را به مرحله اجرای "default" افزوده اید. در آن هنگام شما هیچ سرنخی درباره اینکه "default" چه چیزی است نداشتید اما اکنون باید داشته باشید. کد rc-update به آرگومنت دومی هم نیاز دارد که فعالیت را تعریف نماید: add، delیا show دادن.

برای افزودن یا پاک نمودن یک کد init در پی یک کد init و یک مرحله اجرا فقط به rc-update آرگومنت add یا del بدهید. برای مثال:

Code Listing 2.1: Removing Postfix from the default runlevel

# rc-update del postfix default

دستور rc-update -v show همه کدهای init و فهرستی از مرحله اجراهائی که آن‌ها را اجرا می نمایند را به شما نشان خواهد داد:

Code Listing 2.2: Receiving init script information

# rc-update -v show

همچنین فقط برای دیدن کدهای init در حال اجرا و مرحله اجراهای آن‌ها می‌توانید دستور rc-updaterc-update show را (بدون -v) اجرا نمایید.

۴.ج. پیکربندی کردن خدمات

پیکربندی بیشتر چه لزومی دارد؟

کدهای init می‌توانند کاملاً پیچیده باشند. به همین دلیل واقعا پسندیده نیست که کاربران به شکل مستقیم آن‌ها را ویرایش نمایند، چرا که این کار می‌تواند آن‌ها را بسیار مستعد خطا نماید. هرچند این هم بسیار مهم است که بتوانیم هر خدمتی را پیکربندی نماییم. برای مثال ممکن است بخواهید به یک خدمت انتخاب های بیشتری در خودش بدهید.

دلیل دوم اینکه این پیکربندی را در بیرون از مدهای init اعمال نمایید آن است که بتوانید بدون ترس از تغییر پیکربندی تان کدهای init را بروزرسانی نمایید.

دایرکتوری /etc/conf.d

جنتو راه ساده ائی برای پیکربندی هر خدمتی فراهم نموده است: هر کد init که بتواند پیکربندی شود، فایلی در /etc/conf.d دارد. برای مثال، apache2 initscript که (به آن /etc/init.d/apache2 گفته می شود) فایل پیکربندی که به آن /etc/conf.d/apache2 گفته می شود، دارد. که می‌تواند شامل انتخاب هائی باشد که شما می‌خواهید در هنگام راه اندازی به سرور آپاچی ۲ بدهید:

Code Listing 3.1: Variable defined in /etc/conf.d/apache2

APACHE2_OPTS="-D PHP5"

چنین فایل‌های پیکربندی حاوی متغییرها و خود متغییرها به تنهائی (شبیه به /etc/portage/make.conf ) پیکربندی خدمات را بسیار ساده می نمایند. همچنین ما را قادر می‌سازند تا اطلاعات بیشتری درباره متغییرها (به عنوان توضیح) فراهم آوریم.

۴.د. نوشتن کدهای init

آیا من هم می توانم؟

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

اگر کد init خدمتی مشخصاً برای جنتو نوشته نشده، از آن استفاده ننمایید: کدهای init جنتو با کدهای init دیگر توزیع‌ها سازگاری ندارند!

لایه ها

اساس لایه بندی یک کد init در زیر نشان داده شده است:

Code Listing 4.1: Basic layout of an init script

#!/sbin/runscript

depend() {
  (Dependency information)
}

start() {
  (Commands necessary to start the service)
}

stop() {
  (Commands necessary to stop the service)
}

همه کدهای init برای تعریف شدن نیاز به تابع start() دارند. دیگر بخش‌ها انتخابی هستند.

وابستگی‌ها

دو شبه-تنظیم وجود دارد که می‌توانید برای تأثیر بر مرحله شروع یا ترتیب اجرای کدهای init ، تعریف نمایید: use و need. پس از این دو روش مؤثر-بر درخواست وجود دارند که به نام های before و after نامیده می شوند. این آخری ها بخودی خود پیش نیاز نیستند – اگر آغاز یکی از آن‌ها زمانبندی نشده باشد، موجب خراب شدن اجرای کدهای init اصلی (یا خراب کردن راه اندازی) نمی شوند.

  • تنظیمات use دستگاه init را مطلع می‌سازد که کد حاضر از توابعی استفاده می نماید که با کدی انتخابی ارائه گردیده، اما مستقیماً به آن وابسته نیست. یک نمونه خوب می‌تواند use logger یا use dns باشد. اگر موجود باشند، در استفاده مفیدی قرار خواهند گرفت. اما اگر یک سرور DNS یا ورودگر نداشته باشید هم هنوز خدمات کار خواهند نمود. اگر خدمات موجود باشند، آن‌ها پیش از کدهائی که از آن‌ها استفاده می نمایند آغاز به کار می نمایند.
  • تنظیمات need وابستگی سختی است. این به آن معنی است که کدی که برای آغاز نیاز به کد دیگری دارد، بدون آغاز موفق کد دیگر راه نخواهد افتاد. همچنین اگر آن کد راه اندازی مجدد شود، این کد هم بخوبی راه اندازی مجدد خواهد شد.
  • هنگامیکه از before استفاده می نمایید، کد داده شده قبل از کد انتخاب شده دیگر استفاده می‌شود اگر آن کد دیگر بخشی از مرحله init باشد. بنابر این یک کد init مانند xdm که پیش از alsasound تعریف می شود، پیش از کد alsasound آغاز به کار خواهد نمود، اما فقط در زمانی که alsasound در برنامه شروع یک مرحله init قرار داده شده باشد. اگر alsasound برای شروع برنامه‌ریزی نشده باشد، این بخش تنظیمات بی تأثیر خواهد بود و xdm هرگه که دستگاه init فرض نماید که آغاز آن لازم است، شروع به کار خواهد نمود.
  • مشابها، پس از اینکه دستگاه init مطلع گردید که کد داده شده باید پیش از کد دیگری آغاز به کار نماید، اگر کد دیگر بخشی از مرحله init باشد، به همین ترتیب انجام خواهد گرفت. در غیر اینصورت تنظیمات بی تأثیر خواهد بود و کد تنها در زمانی که دستگاه init کارکرد آنرا ضروری بداند، بکار انداخته خواهد شد.

از مطالب بالا باید مشخص باشد که need تنها تنظیمات پیش نیاز صحیح است که بدون توجه به آغاز به کار کد یا خیر، تاثیرگذاری خود را حفظ خواهد نمود. دیگران تنها هشدار دهنده هائی هستند به دستگاه init که کدام کد درخواست شده می‌تواند (یا باید) راه اندازی گردد.

اکنون اگر به بسیاری از کدهای init جنتو نگاه بنمایید، متوجه خواهید شد که برخی از آن‌ها دارای پیش نیازهائی به چیزهائی هستند که به کدهای init وابسته نیستند. این چیزها را مجازی ها می خوانیم.

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

اجازه دهید نگاهی به اطلاعات پیش نیاز خدمت پسوندی بیاندازیم.

Code Listing 4.2: Dependency information for Postfix

depend() {
  need net
  use logger dns
  provide mta
}

همانگونه که می‌توانید ببینید، خدمت پسوندی:

  • نیازمند پیش نیاز مجازی net است (که برای نمونه توسط /etc/init.d/net.eth0 فراهم آورده می شود)
  • از یک پیش نیاز logger مجازی استفاده می نماید (که برای نمونه توسط /etc/init.d/syslog-ng فراهم آورده می شود)
  • از پیش نیاز های مجازی dns استفاده می نماید (که برای نمونه توسط /etc/init.d/named فراهم آورده می شود)
  • پیش نیاز (مجازی) mta را فراهم می‌آورد (که برای همه سرورها mail عمومی است)

کنترل کردن درخواست ها

چنانکه در بخش پیشین توضیح دادیم، می‌توانید به دستگاه init بگویید چه درخواستی برای کد آغاز (یا خاتمه) باید استفاده شود. این درخواست ها توسط دو تنظیمات use و need اداره می شوند. اما همچنین در حین تنظیمات before و after هم همینطور. چنانکه پیشتر توضیح دادیم، اکنون اجازه دهید نگاهی به خدمت Portmap به عنوان نمونه ائی برای کدهای init بیاندازیم:

Code Listing 4.3: The depend() function in the Portmap service

depend() {
  need net
  before inetd
  before xinetd
}

همچنین می‌توانید از نشانک "*" برای گرفتن همه خدمات یک مرحله اجرا استفاده نمایید، هرچند که اینکار خردمندانه نیست.

Code Listing 4.4: Running an init script as first script in the runlevel

depend() {
  before *
}

اگر خدمت شما باید در لوحه های محلی نوشته شود، به localmount نیاز دارد. اگر همه چیز مانند pisfile را در /var/run نگهداری می نماید، پس باید بعد از bootmisc راه اندازی شود:

Code Listing 4.5: Example depend() function

depend() {
  need localmount
  after bootmisc
}

توابع استاندارد

پس از تابع depend() ، همچنین لازم دارید تا تابع start() را تعریف نمایید. این یکی حاوی همه دستور هائی است که خدمت شما را ارزش آغازین می دهد. خردمندانه است که از توابع ebegin و eend برای اعلام آنچه در حال رخ دادن است به کاربرانتان استفاده نمایید:

Code Listing 4.6: Example start() function

start() {
  if [ "${RC_CMD}" = "restart" ];
  then
    # Do something in case a restart requires more than stop, start
  fi

  ebegin "Starting my_service"
  start-stop-daemon --start --exec /path/to/my_service \
    --pidfile /path/to/my_pidfile
  eend $?
}

هر دو --exec و --pidfile باید در توابع آغاز و پایان استفاده گردند. اگر خدمت یک pidfile ایجاد نمی نماید، اگر ممکن است از --make-pidfile استفاده نمایید، به هر حال باید آنرا امتحان نمایید تا مطمئن شوید. در غیر اینصورت از --make-pidfile استفاده ننمایید. همچنین می‌توانید --quiet را به انتخاب های start-stop-daemon اضافه نمایید. اما این تنها در شرایطی که خدمت بشدت دراز باشد پیشنهاد می شود. استفاده از --quiet موجب پنهان شدن ایرادیابی در صورتی که خدمت آغاز بکار ننماید می شود.

تنظیم قابل اشاره دیگری که در نمونه بالا استفاده گردیده بررسی محتوی متغییر RC_CMD است. بی شباهت به دستگاه کد init قبلی، دستگاه جدیدتر openrc از تابع راه اندازی مجدد مخصوص کد پشتیبانی نمی نماید. بجای آن کد نیازمند بررسی محتوی متغییر RC_CMD است تا ببیند یک تابع (تابع RC_CMD باشد یا تابع stop() ) راه اندازی مجدد گردد یا خیر.

نکته: مطمئن شوید که --exec واقعاً یک خدمت را فراخوانی می نماید نه فقط یک کد قابل اجرا در شل را که خدمت را فراخوانی می نماید و خارج می‌شود – این چیزی است که کد init از آن پشتیبانی می نماید.

اگر به نمونه‌های بیشتری از تابع start() نیاز دارید، لطفاً کد منبع کدهای init را که در دایرکتوری /etc/init.d دستگاه شما قرار دارند را مطالعه بفرمایید.

تابع دیگری که می‌توانید تعریف نمایید stop() است. هرچند اجباری برای تعریف این تابع ندارید! دستگاه init ما به اندازه کافی هوشمند هست که اگر شما از start-stop-daemon استفاده نمودید، خودش این تابع را بموقع به اجرا بگذارد.

اینجا نمونه ائی از تابع stop() آورده شده.

Code Listing 4.7: Example stop() function

stop() {
  ebegin "Stopping my_service"
  start-stop-daemon --stop --exec /path/to/my_service \
    --pidfile /path/to/my_pidfile
  eend $?
}

اگر خدمت شما کدهای دیگری را به اجرا می‌گذارد (برای مثال، bash ، python یا perl)، و این کدها بعداً نامشان عوض می‌گردد (مثلاً foo.py به foo)،نیاز دارید تا --name را به start-stop-daemon اضافه نمایید. باید نامی را که کد شما به آن نام تغییر می نمایید را مشخص نمایید. در این نمونه، یک خدمت foo.py را اجرا می نماید که به foo تغییر نام داده است:

Code Listing 4.8: A service that starts the foo script

start() {
  ebegin "Starting my_script"
  start-stop-daemon --start --exec /path/to/my_script \
    --pidfile /path/to/my_pidfile --name foo
  eend $?
}

اگر اطلاعات بیشتری می خواهید، start-stop-daemon یک صفحه راهنمای بسیار جذاب دارد:

Code Listing 4.9: Getting the man page for start-stop-daemon

$ man start-stop-daemon

نحو کد init جنتو بر اساس شل POSIX است. بنابر این آزادید که از توانائی های sh در داخل ساخت init خود استفاده نمایید. ساختارهای دیگر، مانند خصوصیات bash، را برای اطمینان از باقی ماندن کد بطور تابعی صرفنظر از اینکه جنتو ممکن است دستگاه init خود را تغییر دهد، از کد init خود دور نگاه دارید.

اضافه نمودن انتخاب های دلخواه

اگر می‌خواهید کد init شما از انتخاب هائی بیشتر از آن‌هائی که ما به آنها اشاره نمودیم پشتیبانی نماید، باید انتخاب های خودتان را به متغییر extra_commands اضافه نمایید، و تابعی با نام مشابه به عنوان انتخاب ایجاد نمایید. برای نمونه برای پشتیبانی از انتخابی به نام restartdelay اینگونه عمل می نماییم:

Code Listing 4.10: Supporting the restartdelay option

extra_commands="restartdelay"

restartdelay() {
  stop
  sleep 3    # Wait 3 seconds before starting again
  start
}

مهم: تابع restart() نمی‌تواند مجدداً در openrc بازنویسی گردد!

متغییرهای پیکربندی خدمات

چیز زیادی برای انجام دادن برای ایجاد پشتیبانی از یک فایل پیکربندی در /etc/conf.d ندارید: اگر کد init شما اجرا شد، فایل‌های زیر بطور خودکار منبع آن می‌شوند (برای نمونه متغییرهای که برای استفاده موجود هستند):

  • /etc/conf.d/<your init script>
  • /etc/conf.d/basic
  • /etc/rc.conf

همچنین اگر کد init شما پیش نیاز مجازی را فراهم می‌آورد (مانند net) فایل‌های همراه پیش نیاز هم (برای نمونه /etc/conf.d/net ) منبع می گردند.

۴.ه. تغییر دادن عادت های مرحله اجرا

چه کسی ممکن است از این منافعی ببرد؟

بسیاری از کاربران لپ تاپ موقعیت را می دانند: برخلاف راه ها که لازم نیست net.eth0 را راه اندازی نمایید (چراکه شبکه ائی موجود نیست)، در خانه باید net.eth0 را راه اندازی نمایید. با جنتو می‌توانید عادت‌های مرحله اجرا را به شکل دلخواه خود تغییر دهید.

برای مثال می‌توانید یک مرحله اجرای "default" دوم ایجاد نمایید که می‌توانید آنرا راه اندازی نمایید و کدهای init دیگر را به آن ارجاع نمایید. پس از آن می‌توانید در زمان راه اندازی انتخاب نمایید می‌خواهید کدام مرحله اجرا default را استفاده نمایید.

استفاده کردن از softlevel

اول از همه، دایرکتوری مرحله اجرائی برای دومین مرحله اجرا "default" خود ایجاد نمایید. به عنوان یک مثال ما یک مرحله اجرا offline ایجاد می نماییم:

Code Listing 5.1: Creating a runlevel directory

# mkdir /etc/runlevels/offline

کدهای init لازم را به مرحله اجرای تازه ایجاد شده اضافه نمایید. برای نمونه، اگر می‌خواهید کپی دقیقی از مرحله اجرا default فعلی خود بدون net.eth0 داشته باشید:

Code Listing 5.2: Adding the necessary init scripts

(Copy all services from default runlevel to offline runlevel)
# cd /etc/runlevels/default
# for service in *; do rc-update add $service offline; done
(Remove unwanted service from offline runlevel)
# rc-update del net.eth0 offline
(Display active services for offline runlevel)
# rc-update show offline
(Partial sample Output)
               acpid | offline
          domainname | offline
               local | offline
            net.eth0 |

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

اگر می‌خواهید hotplugging را فعال نمایید، اما فقط برای دسته انتخابی از کدها، از متغییر rc_hotplug در /etc/rc.conf استفاده نمایید:

Code Listing 5.3: Disabling device initiated services in /etc/rc.conf

# Allow net.wlan as well as any other service, except those matching net.*
# to be hotplugged
rc_hotplug="net.wlan !net.*"

نکته: برای اطلاعات بیشتر درباره خدمات راه انداخته شده دستگاه، لطفاً توضیحات موجود در داخل /etc/rc.conf را ببینید.

اکنون پیکربندی راه انداز خود را ویرایش نمایید و ورودی جدید برای مرحله اجرا offline را وارد نمایید. برای نمونه در /boot/grub/grub.conf اینگونه عمل می نماییم:

Code Listing 5.4: Adding an entry for the offline runlevel

title Gentoo Linux Offline Usage
  root (hd0,0)
  kernel (hd0,0)/kernel-2.4.25 root=/dev/hda3 softlevel=offline

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

استفاده کردن از مرحله اجرای راه انداز

استفاده نمودن از مرحله راه انداز کاملاً مشابه bootlevel است. تنها تفاوت در اینجا این است که شما بجای یک مرحله اجرا default ، یک مرحله اجرا boot تعریف می نمایید.

۵. متغییرهای محیطی

۵.الف. متغییرهای محیطی؟

آن‌ها چه هستند؟

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

نمونه‌های مهم

جدول زیر تعدادی از متغییرهائی را فهرست می نماید که بوسیله یک دستگاه لینوکس استفاده می‌شوند و استفاده آن‌ها را شرح می دهد. نمونه ائی از کاربرد آن در بعد از جدول آمده:

Variable Description
PATH متغییری حاوی یک فهرست با دونقطه از هم جدا شده است که دستگاه شما برای اجرای یک فایل به آن‌ها نگاه می نماید. اگر نام یک اجراگر را وارد نمایید (مانند ls ، rc-update یا emerge)، اما این اجرا گر در دایرکتوری های فهرست شده قرار داده نشده باشد، دستگاه شما آنرا اجرا نخواهد نمود (تا زمانیکه مسیر کامل آنرا به شکل یک دستور وارد نمایید. برای نمونه /bin/ls ).
ROOTPATH این متغییر تابع هائی مانند PATH دارد، اما این یکی دایرکتوری هائی را فهرست می نماید که هنگامیکه کاربر ریشه دستوری را وارد می نماید باید بررسی شوند.
LDPATH این متغییر حاوی فهرستی با دونقطه از هم جدا شده از دایرکتوری هائیست که linker بطور غیر پایا در آن‌ها به جستجو برای یافتن کتابخانه‌ها اقدام می نماید.
MANPATH این متغییر حاوی فهرستی با دونقطه از هم جدا شده از دایرکتوری هائیست که دستور man در آن‌ها به جستجوی صفحه های راهنما می گردد.
INFODIR این متغییر حاوی فهرستی با دونقطه از هم جدا شده از دایرکتوری هائیست که دستور info در آن‌ها به جستجوی صفحه های info می گردد.
PAGER این متغییر حاوی مسیر برنامه هائی است که برای فهرست نمودن محتوی فایل‌ها استفاده می‌شوند (مانند less یا more ).
EDITOR این متغییر حاوی فهرستی از برنامه هائی است که برای تغییر محتوی فایل‌ها استفاده می‌شوند (مانند nano یا vi).
KDEDIRS این متغییر حاوی فهرستی با دونقطه از هم جدا شده از دایرکتوری هائیست که شامل مواد لازم برای KDE است.
CONFIG_PROTECT این متغییر حاوی فهرستی با نشانگر space ایجاد کن از هم جدا شده از دایرکتوری هائیست که باید در هنگام بروزرسانی توسط پرتیج محافظت شوند.
CONFIG_PROTECT_MASK این متغییر حاوی فهرستی با نشانگر space ایجاد کن از هم جدا شده از دایرکتوری هائیست که نباید در هنگام بروزرسانی توسط پرتیج محافظت شوند.

در زیر نمونه ائی را می‌بینید که همه این متغییرها را تعریف نموده است:

Code Listing 3.3: Example definitions

PATH="/bin:/usr/bin:/usr/local/bin:/opt/bin:/usr/games/bin"
ROOTPATH="/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin"
LDPATH="/lib:/usr/lib:/usr/local/lib:/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2.3"
MANPATH="/usr/share/man:/usr/local/share/man"
INFODIR="/usr/share/info:/usr/local/share/info"
PAGER="/usr/bin/less"
EDITOR="/usr/bin/vim"
KDEDIRS="/usr"
CONFIG_PROTECT="/usr/X11R6/lib/X11/xkb /opt/tomcat/conf \
                /usr/kde/3.1/share/config /usr/share/texmf/tex/generic/config/ \
                /usr/share/texmf/tex/platex/config/ /usr/share/config"
CONFIG_PROTECT_MASK="/etc/gconf"

۵.ب. تعریف سراسری متغییرها

دایرکتوری /etc/env.d

برای مرکزیت بخشیدن به تعریف‌های این متغییرها، جنتو دایرکتوری /etc/env.d را معرفی می نماید. در داخل این دایرکتوری شما تعداد زیادی فایل مانند 00basic ،05gcc و غیره پیدا خواهید نمود. که حاوی متغییرهائی هستند که مورد نیاز برنامه هائی هستند که بوسیله نام آن‌ها نامگذاری شده اند.

برای نمونه هنگامیکه شما gcc را نصب می نمایید، فایلی به نام 05gcc بوسیله ائی بیلد ایجاد می‌شود که حاوی متغییرهای زیر است:

Code Listing 2.1: /etc/env.d/05gcc

PATH="/usr/i686-pc-linux-gnu/gcc-bin/3.2"
ROOTPATH="/usr/i686-pc-linux-gnu/gcc-bin/3.2"
MANPATH="/usr/share/gcc-data/i686-pc-linux-gnu/3.2/man"
INFOPATH="/usr/share/gcc-data/i686-pc-linux-gnu/3.2/info"
CC="gcc"
CXX="g++"
LDPATH="/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2.3"

توزیع‌های دیگر به شما می‌گویند هر تعریف متغییر محیطی را در /etc/profile یا مکانی دیگر تغییر داده یا اضافه نمایید. در سوئی دیگر جنتو نگهداری و مدیریت متغییرهای محیطی را فارغ بال از تعداد فایل هائی که می‌توانند متغییرهای محیطی را نگهداری نمایند، برای شما (و همینطور برای پرتیج) بسیار آسان می نماید.

برای نمونه هنگامیکه gcc بروزرسانی می شود، فایل /etc/env.d/05gcc هم بدون نیاز به هیچ واکنشی از سوی کاربر بروزرسانی می شود.

این نه فقط به نفع پرتیج است، بلکه برای شما به عنوان یک کاربر هم مفید است. گهگاه خواهید خواست برخی متغییرهای محیطی را برای سراسر دستگاه تنظیم نمایید. برای نمونه ما یک متغییر http_proxy را ارائه می دهیم. بجای اینکه نگران نبود آن در /etc/profile باشید، اکنون می‌توانید بسادگی فقط یک فایل (/etc/env.d/99local) ایجاد نمایید و تعریف (های) خود را در آن وارد نمایید:

Code Listing 2.2: /etc/env.d/99local

http_proxy="proxy.server.com:8080"

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

کد env-update

چندین فایل در /etc/env.d متغییر PATH تعریف می نمایند. این یک اشتباه نیست: هنگامیکه شما env-update را اجرا می نمایید، آن قبل از بروزرسانی متغییرهای محیطی، چندین تعریف را اضافه می نماید و به این ترتیب اضافه کردن تنظیمات متغییرهای محیطی شخصی بدون تداخل با مقدارهای موجود را برای بسته ها (یا کاربران) آسان می نماید.

کد env-update مقداری مرتب شده با الف باء را در درخواست های فایل‌های /etc/env.d اضافه می نماید. نام فایل باید با دو عدد دسیمال آغاز گردد.

Code Listing 2.3: Update order used by env-update

         00basic        99kde-env       99local
     +-------------+----------------+-------------+
PATH="/bin:/usr/bin:/usr/kde/3.2/bin:/usr/local/bin"

تسلسل متغییرها همیشه اتفاق نمی افتد، فقط با این متغییرها ADA_INCLUDE_PATH, ADA_OBJECTS_PATH, CLASSPATH, KDEDIRS, PATH, LDPATH, MANPATH, INFODIR, INFOPATH, ROOTPATH, CONFIG_PROTECT_MASK, CONFIG_PROTECT, PRELINK_PATH, PRELINK_PATH_MASK, PKG_CONFIG_PATH و PYTHONPATH .برای دیگر متغییرها آخرین مقدار تعریف شده (در ترتیب الف بائی درخواست فایل‌ها در /etc/env.d ) استفاده می شود.

می‌توانید متغییرهای بیشتر را با اضافه نمودن نام متغییر به هریک از متغییرهای COLON_SEPARATED یا SPACE_SEPARATED به این فهرست اضافه نمایید (همچنین داخل فایل env.d ).

هنگامیکه env-update را اجرا می نمایید، کد، همه متغییرهای محیطی را ایجاد نموده و آن‌ها را در /etc/profile.env قرار می‌دهد (که بوسیله /etc/profile استفاده می شود). همچنین اطلاعات را از LDPATH استخراج نموده و از آن‌ها برای ایجاد /etc/ld.so.conf استفاده می نماید. پس از آن ldconfig را اجرا می نماید تا فایل /etc/ld.so.cache را که توسط linker غیر پایا استفاده می‌شود را مجدداً ایجاد نماید.

اگر می‌خواهید فوراً پس از اجرا متوجه تغییرات env-update بشوید، دستور زیر را برای بروزرسانی محیط خودتان اجرا نمایید. کاربرانی که خودشان جنتو را نصب نموده اند مطمئنا آنرا از ساختار مراحل نصب به خاطر می آورند:

Code Listing 2.4: Updating the environment

# env-update && source /etc/profile

نکته: دستور بالا تنها محیط را در ترمینال موجود، کنسول جدید و وابسته های کوچکش بروزرسانی می نماید. بنا بر این اگر شما در X11 کار می نمایید، لازم دارید تا منبع source /etc/profile را در هر ترمینال جدیدی که باز می نمایید وارد نمایید یا X را راه اندازی مجدد نمایید که در نتیجه همه ترمینال های جدید متغییرهای جدید را خواهند گرفت. اگر از یک مدیریت ورود استفاده می نمایید، به کاربر ریشه تغییر موقعیت بدهید و تایپ نمایید /etc/init.d/xdm restart . اگر نه لازم دارید تا از دستگاه خارج و مجدداً داخل شوید تا X متغییرهای جدید را با وابسته های کوچکش تطبیق دهد.

مهم: نمی‌توانید از متغییرهای شل هنگامیکه متغییرهای دیگری تعریف نموده‌اید استفاده نمایید. این به معنی آن است که چیزهائی مانند FOO="$BAR" (در جائیکه $BAR متغییر دیگری است) ممنوع است.

۵.ج. تعریف کردن محلی متغییرها

مخصوص کاربر

شما همیشه نمی‌خواهید تا متغییرها را سراسری تعریف نمایید. برای نمونه ممکن است بخواهید دایرکتوری فعلی در حال کار (دایرکتوری که در آن هستید) و /home/my_user/bin را به PATH متغییر بیافزائید اما همچنین نخواهید همه کاربران موجود بروی دستگاهتان آنرا در PATH خود داشته باشند. اگر بخواهید یک متغییر را بطور محلی تعریف نمایید، باید از ~/.bashrc یا ~/.bash_profile استفاده نمایید:

Code Listing 3.1: Extending PATH for local usage in ~/.bashrc

(A colon followed by no directory is treated as the current working directory)
PATH="${PATH}:/home/my_user/bin:"

هنگامیکه مجدداً وارد شوید، متغییر PATH شما بروز خواهد بود.

مخصوص جلسه

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

در این مورد می‌توانید فقط متغییر PATH را برای جلسه ائی که در آن هستید با استفاده از دستور export تعریف نمایید. تا هنگامیکه از کاربر خارج نشوید، متغییر PATH از تنظیمات موقت استفاده خواهد نمود.

Code Listing 3.2: Defining a session-specific environment variable

# export PATH="${PATH}:/home/my_user/tmp/usr/bin"

ج. کارکردن با پرتیج

۱. فایل‌ها و ذایرکتوری‌ها

1.a. فایل‌های پرتیج

Configuration Directives

پرتیج با پیکربندی پیش فرضی که در /etc/make.globals نگاهداری می‌گردد می‌آید. هنگامیکه نگاهی به آن می‌اندازید، متوجه خواهید شد که همه پیکربندی‌های پرتیج از راه متغییرها اداره می‌گردند. اینکه پرتیج به چه متغییرهائی گوش می‌دهد و آنچه آنها معنی می‌دهند پستر شرح داده می‌شوند.

از آنجاکه بسیاری از رهنمودهای پیکربندی درمیان معماری‌ها فرق می‌کند، پرتیج یک پیکربندی پیش‌فرضی هم دارد که بخشی از پروفایل شماست. پروفایل شما با میانبر /etc/portage/make.profile به آن توجه می‌نماید; پیکربندی‌های پرتیج در فایل‌های make.defaults از پروفایل شما و همه فایل‌های مادر تنظیم می‌شوند. ما درباره پروفایل‌ها و دایرکتوری /etc/portage/make.profile پیشتر شرح خواهیم داد.

اگر طرحی برای تغییر یک متغییر پیکربندی دارید، در /etc/make.globals یا make.defaults تغییر ایجاد نکنید‌. بجای آن از /etc/portage/make.conf استفاده نمایید که بر فایل‌های پیشین اولویت دارد. همچنین یک /usr/share/portage/config/make.conf.example خواهید یافت. چنانکه از نام آن پیداست، این یک فایل نمونه است - پرتیج این فایل را نمی‌خواند.

همچنین می‌توانید یک متغییر پیکربندی پرتیج به عنوان متغییر محیطی تعریف نمایید، اما ما آنرا پیشنهاد نمی‌کنیم.

داده‌های مختص-پروفایل

اکنون با دایرکتوری /etc/portage/make.profile روبرو گردیده‌ایم. خوب، این در حقیقت یک دایرکتوری نیست اما یک پیوند میانبر به یک پروفایل است، بشکل پیش‌فرض یکی درون /usr/portage/profiles هرچند می‌توانید پروفایل‌های خودتان را در هرجا ایجاد نمایید و به آنها اشاره نمایید. پروفایلی که این میانبر به آن اشاره می‌نماید پروفایلی است که دستگاه شما به آن پایبند می‌شوند.

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

پیکربندی‌های مختص-کاربر

هنگامیکه می‌خواهید رفتارهای پرتیج را درباره نصب نرم‌افزار دوباره نویسی نمایید، آنرا با ویرایش فایل‌های درون /etc/portage بپایان می‌برید. به شما بسیار پیشنهاد می‌شود که از فایل‌های درون /etc/portage استفاده نمایید و بسیار زینهار داده می‌شود از دوباره‌نویسی رفتار در مسیر متغییرهای محیطی!

درون /etc/portage می‌توانید فایل‌های زیر را ایجاد نمایید:

  • متغییر package.mask که فهرستی از بسته‌هائی است که شما هرگز نمی‌خواهید بتوسط پرتیج نصب شوند
  • متغییر package.unmask که شامل فهرستی از بسته‌هائی است که می‌خواهید قادر به نصب آنها باشید هرچند گسترش‌دهندگان جنتو بشدت از امرژ نمودن آنها شما را دلسرد نمایند.
  • متغییر package.accept_keywords که فهرستی از بسته‌هائی است که می‌خواهید توانا به نصب آنها باشید هرچند برای دستگاه یا معماری شما مناسب نباشند (هنوز)
  • متغییر package.use که فهرستی از پرچمک‌های USE است که می‌خواهید برای بسته‌های مشخصی بدون درگیری با پرچمک‌های USE دستگاه شما استفاده شوند.

این ممکن است فایل نباشد; آنها می‌توانند دایرکتوری‌هائی باشند که حاوی یک فایل برای هر بسته باشند. داده‌های بیشتر درباره دایرکتوری /etc/portage و یک فهرست کامل از فایل‌های ممکن که می‌توانید ایجاد نمایید می‌تواند در صفحه‌راهنمای پرتیج یافت شوند:

Code Listing 1.1: Reading the Portage man page

$ man portage

عوض نمودن موقعیت فایل & دایرکتوری پرتیج

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

تمام هدف‌های این مقصدهای پیش‌فرض بخوبی-شناخته‌شده هستند اما می‌توانید آنها را به میل خودتان از راه /etc/portage/make.conf تغییر دهید. انتهای این بخش توضیح خواهد داد پرتیج از چه موقعیت‌هایی برای هدف‌های مشخص استفاده می‌نماید و چگونه مکان آنها را بروی فایل‌سیستمی شما تغییر خواهد داد.

این مستند نمی‌تواند به عنوان یک مرجع مورد استفاده قرار گیرد. اگر به پوشش ۱۰۰% نیاز دارید، خواهشمندیم به پرتیج و صفحه‌راهنمای make.conf بازگشت نمایید:

Code Listing 1.2: Reading the Portage and make.conf man pages

$ man portage
$ man make.conf

1.b. نگاهداری کردن فایل‌ها

شاخه پرتیج

موقعیت پیش‌فرض شاخه پرتیج /usr/portage است. این مکان با متغییر PORTDIR تعریف شده‌است. هنگامیکه (با تغییر دادن این متغییر) شاخه پرتیج را در مکانی دیگر نگاهداری می‌نمایید، فراموش ننمایید که پیوند میانبر /etc/portage/make.profile را هم هماهنگ با آن تغییر دهید.

اگر متغییر PORTDIR را تغییر دهید، ممکن است بخواهید متغییرهای زیر را هم از آنجا که متوجه تغییر PORTDIR نمی‌شوند تغییر دهید. این به دلیل چگونگی اداره نمودن متغییرها بتوسط پرتیج است: PKGDIR, DISTDIR, RPMDIR.

باینری‌های پیش‌ساخته

هرچند پرتیج بشکل پیش‌فرض از باینری‌های پیش‌فرض استفاده نمی‌نماید، با قدرت از آنها پشتیبانی می‌نماید. هنگامیکه از پرتیج می‌خواهید با بسته‌های پیش‌ساخته کار کند، به آنها در /usr/portage/packages نگاه می‌کند. این موقعیت با متغییر PKGDIR تعریف گردیده است.

کد منبع

بشکل پیش‌فرض کد منبع برنامه‌ها در /usr/portage/distfiles نگاهداری می‌شود. این موقعیت با متغییر DISTDIR تعریف شده‌است.

پایگاه‌داده پرتیج

پرتیج چگونگی دستگاه شما را (چه بسته‌هائی نصب شده‌اند، کدام فایل مربوط به کدام بسته است، ...) در /var/db/pkg نگاهداری می‌نماید. این فایل‌ها را بشکل دستی تغییر ندهید! این‌کار ممکن است دانسته‌های پرتیج از دستگاه شما را بشکند.

کش پرتیج

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

۱.ج. ساختن نرم‌افزار

فایل‌های پرتیج موقتی

فایل‌های موقتی پرتیج به شکل پیش‌فرض در /var/tmp نگاهداری می‌شوند. این با متغییر PORTAGE_TMPDIR تعریف می‌گردد.

اگر متغییر PORTAGE_TMPDIR را تغییر دهید، ممکن است بخواهید از آنجا که متغییرهای زیر متوجه تغییر PORTAGE_TMPDIR نمی‌شوند، آنها را هم تغییر دهید. این به چگونگی اداره نمودن متغییر بتوسط پرتیج مربوط می‌شود: BUILD_PREFIX.

ساختن دایرکتوری

پرتیج برای هر بسته امرژ شده یک دایرکتوری خاص در /var/tmp/portage ایجاد می‌نماید. این موقعیت با متغییر BUILD_PREFIX تعریف شده است.

موقعیت فایل‌سیستم زنده

بشکل پیش‌فرض پرتیج همه فایل‌ها را در فایل‌سیستم حاضر نصب می‌نماید (/)، اما می‌توانید این را با تنظیم متغییر محیطی ROOT تغییر دهید. این هنگامی سودمند است که می‌خواهید یک تصویر ساخته‌شده جدید ایجاد نمایید.

۱.پ. خصوصیت‌های واقعه‌نگاری

ائی‌بیلد واقعه‌نگاری

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

پرتیج کنترل بسیار خوبی را بروی واقعه‌نگاری با استفاده از elog ارائه می‌دهد:

  • متغییر PORTAGE_ELOG_CLASSES: این مکانی است که شما نوع پیام‌های واقعه نگاری را تنظیم می‌نمایید. می‌توانید از چند گزینه بوسیله فاصله جدا شده از info, warn, error, log, و qa استفاده نمایید.
    • info: لاگ‌های "einfo" پیام‌های چاپ شده بتوسط یک ائی‌بیلد
    • warn: لاگ‌های "ewarn" پیام‌های چاپ شده بتوسط یک ائی‌بیلد
    • error: لاگ‌های "eerror" پیام‌های چاپ شده بتوسط یک ائی‌بیلد
    • log: لاگ‌های "elog" پیام‌های پیدا‌شده در برخی ائی‌بیلدها
    • qa: لاگ‌ها "QA Notice" پیام‌های چاپ شده بتوسط یک ائی‌بیلد
  • متغییر PORTAGE_ELOG_SYSTEM: یک ماژو(هائی) را برای پردازش پیام‌های لاگ انتخاب می‌نماید. اگر خالی بماند، واقعه‌نگاری از کار می‌افتد. می‌توانید چندین گزینه با فاصله از هم جدا شده مانند save, custom, syslog, mail, save_summary, و mail_summary را بکار ببرید. برای درخواست استفاده از elog باید کمینه یک ماژول را انتخاب نمایید.
    • متغییر save: اگر $PORT_LOGDIR تعریف نشده باشد یک لاگ برای هر بسته در $PORT_LOGDIR/elog ،یا /var/log/portage/elog ذخیره می‌نماید.
    • متغییر custom: همه پیام‌ها را به یک دستور بتوسط کاربر شناخته شده در $PORTAGE_ELOG_COMMAND ارجاع می‌نماید; این در ادامه گفته خواهد شد.
    • متغییر syslog: همه پیام‌ها را به ورودگر دستگاه نصب شده می‌فرستد.
    • متغییر mail: همه پیام‌ها را به یک سرور‌پستی شناخته شده بتوسط کاربر در $PORTAGE_ELOG_MAILURI ارجاع می‌دهد; این در ادامه گفته خواهد شد. خصوصیت‌های پستی elog نیاز به >=portage-2.1.1 داد.
    • متغییر save_summary: بسان save ، اما اگر $PORT_LOGDIR تعریف نشده باشد این همه پیام‌ها را در $PORT_LOGDIR/elog/summary.log ، یا /var/log/portage/elog/summary.log می‌نویسد.
    • متغییر mail_summary: بسان mail، اما هنگامی‌که امرژ وجود داشته باشد همه پیام‌ها را به یک رایانامه تنها ارسال می‌نماید.
  • متغییر PORTAGE_ELOG_COMMAND: این تنها هنگامیکه استفاده می‌شود که ماژول custom فعال باشد. اینجا مکانی است که شما دستوری را برای پردازش پیام‌های لاگ مشخص می‌نمایید. دقت نمایید که می‌توانید از دو متغییر استفاده نمایید: ${PACKAGE} نام و نسخه بسته است، درحالیکه ${LOGFILE} راه مشخص به فایل لاگ است. اینجا یک امکان استفاده وجود دارد:
    • PORTAGE_ELOG_COMMAND="/path/to/logger -p '\${PACKAGE}' -f '\${LOGFILE}'"
  • متغییر PORTAGE_ELOG_MAILURI: حاوی تنظیم‌هائی برای ماژول mail مانند آدرس، کاربر، رمزعبور، سرور پستی، و عدد درگاه است.تنظیم‌های پیش‌فرض "root@localhost localhost" است.
  • اینجا نمونه‌ائی برای سرور smtp است که تایید نام‌کاربری و کلمه عبور ابتدائی را بروی یک درگاه اشتراکی (پیش‌فرض درگاه ۲۵ است) نیاز دارد:
    • PORTAGE_ELOG_MAILURI="user@some.domain username:password@smtp.some.domain:995"
  • متغییر PORTAGE_ELOG_MAILFROM: به شما اجازه می‌دهد تا آدرس "from" از پست‌های لاگ را تنظیم نمایید; پیش‌فرض‌ها در پرتیج تنظیم نگردیده‌اند.
  • متغییر PORTAGE_ELOG_MAILSUBJECT: به شما اجازه می‌دهد تا خط موضوعی برای پست لاگ ایجاد نمایید. دقت کنید که می‌توانید از دو متغییر استفاده نمایید: ${PACKAGE} نام و نسخه بسته را بنمایش می‌گذارد، درحالیکه ${HOST} نام کامل دامینی که خانه پرتیج بروی آن اجرا شده را تایید می‌نماید.
  • اینجا یک امکان استفاده وجود دارد:
    • PORTAGE_ELOG_MAILSUBJECT="package \${PACKAGE} was merged on \${HOST} with some messages"

مهم: اگر از enotice با پرتیج Portage-2.0.* استفاده نمایید، باید بشکل کامل enotice را پاک نمایید، چراکه با elog کار نمی‌کند.

۲. پیکربندی با استفاده از متغییرها

2.a. پیکربندی پرتیج

چنانکه پیشتر گفته شد، پرتیج بوسیله متغییرهای زیادی که می‌توانید آنها را در /etc/portage/make.conf تعریف نمایید، قابل پیکربندی است. خواهشمندیم به صفحه راهنمای make.conf برای داده‌های بیشتر و بیشتر بازگشت نمایید:

Code Listing 1.1: Reading the make.conf man page

$ man make.conf

2.b. انتخاب‌های Build-specific

انتخاب‌های همگردان و پیکربند

هنگامیکه پرتیج برنامه‌های را می‌سازد، مفهوم‌ متغییرهای زیر را به کدهای همگردان و پیکربند پاس می‌دهد:

  • متغییرهای CFLAGS & CXXFLAGS پرچمک‌های خواسته‌شده همگرداننده برای برگردان نمودن C و ++C .
  • متغییر CHOST داده‌های مکان ساخته‌شدن برای کد پیکربندی برنامه‌ها را تعریف می‌نماید
  • متغییر MAKEOPTS به دستور make بازگشت می‌دهد و بیشتر زمان‌ها برای تعریف مقدار همسوئی استفاده شده در هنگام کامپایل تنظیم می‌گردد. داده‌های بیشتر درباره انتخاب‌های make می‌تواند در صفحه راهنمای make پیدا شود.

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

انتخاب‌های دریافت

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

می‌توانید با EMERGE_DEFAULT_OPTS به emerge بگویید در هربار اجرا تنظیم‌های مشخصی را استفاده نماید. برخی انتخاب‌های مفید دیگر --ask, --verbose, --tree و بیش از آن هستند.

۲.ج حفاظت فایل پیکربندی

موقعیت محافظتی پرتیج

پرتیج یک نسخه جدید از یک برنامه را بروی نسخه پیشین آن دوباره‌نویسی می‌نماید اگر فایل‌ها در موقعیت protected قرار داده نشده باشند.این موقعیت‌های محافظتی بوسیله متغییر CONFIG_PROTECT تعریف می‌شوند و در موقعیت فایل پیکربندی همگانی هستند. دایرکتوری فهرست شده space-delimited است.

یک فایل که در یک چنین موقعیت حفاظت شده‌ائی قرار گرفته تغییر نام یافته و کاربر درباره وجود نسخه جدید (احتمالی ) فایل پیکربندی آن آگاهی می‌یابد.

می‌توانید درباره تنظیم‌های کنونی CONFIG_PROTECT از خروجی emerge --info چیزهائی بیابید:

Code Listing 3.1: Getting the CONFIG_PROTECT setting

$ emerge --info | grep 'CONFIG_PROTECT='

داده‌های بیشتر درباره حفاظت از فایل پیکربندی پرتیج در بخش CONFIGURATION FILES از صفحه راهنمای emerge وجود دارد:

Code Listing 3.2: More information about Configuration File Protection

$ man emerge

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

برای محافظت نکردن از زیردایرکتوری مشخصی از موقعیت حفاظت شده می‌توانید از متغییر CONFIG_PROTECT_MASK استفاده نمایید.

۲.د. انتخاب‌های پایین گذاری

موقعیت‌های سرور

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

  • متغییر GENTOO_MIRRORS فهرستی از موقعیت‌های سرور که حاوی کدمنبع (فایل‌های توزیع) است تعریف می‌نماید
  • متغییر PORTAGE_BINHOST موقعیت یک سرور ویژه حاوی بسته‌های پیش ساخته برای دستگاه شما را تعریف می‌نماید.

سومین تنظیم‌های درگیر با موقعیت سرور rsync که هنگام بروزرسانی شاخه پرتیج از آن استفاده می‌نمایید:

  • متغییر SYNC یک سرور ویژه که پرتیج برای دریافت از آن استفاده می‌نماید را تعریف می‌کند

متغییرهای GENTOO_MIRRORS و SYNC می‌تواند بشکل خودکار در برنامه mirrorselect تنظیم شوند. برای آن لازم دارید تا ابتدا emerge mirrorselect را برای استفاده از آن اجرا نمایید. برای داده‌های بیشتر، کمک برخط mirrorselect را ببینید:

Code Listing 4.1: More information about mirrorselect

# mirrorselect --help

اگر محیط شما از شما خواست تا از یک پروکسی استفاده نمایید، می‌توانید برای تعریف یک سرور پروکسی از متغییرهای http_proxy ، ftp_proxy و RSYNC_PROXY استفاده نمایید.

دستورهای دریافت

هنگامی‌که پرتیج به دریافت کد منبع نیاز دارد، بشکل پیش فرض از wget استفاده می‌نماید. می‌توانید آنرا در متغییر FETCHCOMMAND تغییر دهید.

پرتیج قابلیت ازسرگیری اندکی از کدمنبع پایین گذاری شده را داراست. بشکل پیش فرض برای اینکار از wget استفاده می‌نماید، اما این می‌تواند در متغییر RESUMECOMMAND تغییر نماید.

مطمئن شوید که متغییرهای FETCHCOMMAND و RESUMECOMMAND کد منبع شما را در موقعیت درست نگاه داری نمایند. در داخل متغییرها باید از \${URI} و \${DISTDIR} برای اشاره به موقعیت کد منبع و موقعیت مخزن فایل‌های سیستمی استفاده نمایید.

همچنین می‌توانید اداره کنندگان مختص پروتکل با استفاده از FETCHCOMMAND_HTTP, FETCHCOMMAND_FTP, RESUMECOMMAND_HTTP, RESUMECOMMAND_FTP و بیش از آن تعریف نمایید.

تنظیم‌های Rsync

نمی‌توانید دستور rsync استفاده شده بوسیله پرتیج برای بروزرسانی شاخه پرتیج را تغییر دهید، اما می‌توانید برخی متغییرهای مربوط به دستور rsync را تنظیم نمایید:

  • متغییر PORTAGE_RSYNC_OPTS تعدادی از متغییرهای پیش فرض مورد استفاده در هنگام sync را تنظیم می‌نماید. این متغییر نباید تغییر نماید مگر اینکه شما براستی بدانید در حال انجام چه چیزی هستید. توجه نمایید که در صورت خالی بودن PORTAGE_RSYNC_OPTS همان تنظیمات از پیش تعیین شده استفاده خواهند شد.
  • متغییر PORTAGE_RSYNC_EXTRA_OPTS می‌تواند برای تنظیم انتخاب‌های بیشتر در هنگام sync مورد استفاده قرار گیرد. هر انتخاب باید بوسیله یک فضای خالی جدا گردد.
    • متغییر --timeout=<number>: ثانیه‌های پیش از پایان دادن به زمان لازم برای ارتباط rsync را تعریف می‌نماید. پیش‌فرض این متغییر ۱۸۰ ثانیه است اما کاربران دیال‌آپ یا کاربران رایانه‌های آهسته ممکن است بخواهند آنرا بروی ۳۰۰ یا بیشتر تنظیم نمایند.
    • متغییر --exclude-from=/etc/portage/rsync_excludes: به یک فایل که بسته‌ها و/یا دسته‌بندی‌های rsync فهرست شده در آن باید در هنگام مرحله بروزرسانی نادیده گرفته شوند اشاره می‌نماید.در این مورد، به /etc/portage/rsync_excludes اشاره می‌نماید. خواهشمندیم برای آموختن نحو این فایل استفاده کردن از یک زیر تنظیم شاخه پرتیج را بخوانید.
    • --quiet: کاهش خروجی صفحه
    • --verbose: چاپ نمودن یک فرست فایل کامل
    • --progress: نمایش یک نشانگر پیشرفت برای هر فایل
  • متغییر PORTAGE_RSYNC_RETRIES تعریف می‌نماید rsync چندبار باید برای برقراری ارتباط با میرور پیش از بپایان بردن متغییر SYNC تلاش نماید. پیش‌فرض این متغییر ۳ است.

برای داده‌های بیشتر در این مورد و دیگر موردها، خواهشمندیم man rsync را بخوانید.

۲.چ. پیکربندی جنتو

انتخاب شاخه

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

خصیصه‌های پرتیج

می‌توانید خصیصه‌های مشخص پرتیج را در راستای متغییر FEATURES فعال نمایید. خصیصه‌های پرتیج در بخش‌های پیشین مانند Portage Features توضیح داده شد،

۲.ح. رفتار پرتیج

مدیریت کد

به کمک متغییر PORTAGE_NICENESS می‌توانید یک مقدار مفید را به اجرای پرتیج افزوده یا از آن بکاهید. مقدار PORTAGE_NICENESS به مقدار مطلوب حاضر افزوده می‌گردد.

برای داده های بیشتر در این باره صفحه راهنمای آنرا مشاهده نمایید:

Code Listing 6.1: More information about nice

$ man nice

رفتار خروجی

متغییر NOCOLOR که بشکل پیش‌فرض "false" است، در هنگامی تعریف می‌شود که پرتیج باید خروجی رنگی مورد استفاده را از کار بیاندازد.

۳. مخلوط نمودن شاخه‌های نرم‌افزاری

۳.الف. استفاده نمودن از یک شاخه

شاخه پایدار

متغییر ACCEPT_KEYWORDS تعریف می‌نماید که شما چگونه از یک شاخه نرم‌افزار بروی دستگاهتان استفاده نمایید. بشکل پیش‌فرض آن نرم‌افزارهای پایدار معماری شماست، برای نمونه x86 .

ما پیش‌نهاد می‌نماییم تنها از شاخه پایدار استفاده نمایید. هرچند، اگر برای شما پایداری زیاد اهمیت زیادی ندارد و می‌خواهید به جنتو بوسیله ثبت ایراد در http://bugs.gentoo.org کمک نمایید، به خواندن ادامه دهید.

شاخه در حال آزمایش

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

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

آگاه باشیدکه، ممکن است جواب‌های پایداری دریافت نمایید، یا جواب بسته‌های نیم‌کامل (برای نمونه اشتباه/نبود پیش‌نیازها)، یا بروزرسانی چندین باری (جوابی در بسیاری از سازه‌ها) یا بسته‌های شکسته. اگر نمی‌دانید جنتو چگونه کار می‌کند و چگونه مشکلات را برطرف نمایید، پیش‌نهاد می‌نماییم به شاخه‌های پایدار و آزمایشی بچسبید.

برای نمونه، برای انتخاب شاخه درحال آزمایش برای معماری x86 ، فایل /etc/portage/make.conf را ویرایش و تنظیم نمایید:

Code Listing 1.1: Setting the ACCEPT_KEYWORDS variable

ACCEPT_KEYWORDS="~x86"

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

۳.ب. مخلوط نمودن پایدار و در حال آزمایش

موقعیت package.accept_keywords

می‌توانید از پرتیج بخواهید اجازه دهد در برخی بسته‌ها از شاخه آزمایشی استفاده نماید اما برای اصل دستگاه از شاخه پایدار استفاده نماید. برای دستیابی به این، نام و دسته‌بندی بسته‌ائی را که می‌خواهید از شاخه آزمایشی استفاده گردد را به /etc/portage/package.accept_keywords بیافزایید. همچنین می‌توانید یک دایرکتوری (با نام هم‌سان) ایجاد نمایید و قایل‌ها را در آن دایرکتوری فهرست نمایید. برای نمونه، برای استفاده از شاخه آزمایشی برای gnumeric:

Code Listing 2.1: /etc/portage/package.accept_keywords setting for gnumeric

app-office/gnumeric

آزمایش نسخه‌های ویژه

اگر می‌خواهید از نسخه ویژه‌ائی از یک نرم‌افزار استفاده نمایید اما نمی‌خواهید پرتیج برای نسخه واپسین آن از شاخه آزمایشی استفاده نماید، می‌توانید آنرا در بخش نسخه در موقعیت package.accept_keywords بیافزایید. در این مورد، شما باید از گرداننده = استفاده نمایید. همچنین می‌توانید یک گستره از نسخه‌ها را با استفاده از گرداننده‌های <=, <, > or >= وارد نمایید.

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

در نمونه زیر از پرتیج می‌خواهیم gnumeric-1.2.13 را بپذیرد:

Code Listing 2.2: Enabling a particular gnumeric test version

=app-office/gnumeric-1.2.13

۳.ج. استفاده نمودن از بسته‌های ماسک شده

موقعیت package.unmask

مهم: گسترش‌دهندگان جنتو استفاده از این موقعیت را پشتیبانی نمی‌کنند. خواهشمندیم اخطارها را در هنگام استفاده نمودن از آن آزموده باشید. درخواست‌های پشتیبانی برای package.unmask و/یا package.mask پاسخ داده نخواهند شد. شما باید آگاه باشید.

هنگامیکه یک بسته بوسیله گسترش‌دهندگان جنتو ماسک می‌شود و شما با وجود این هنوز می‌خواهید از ان استفاده نمایید به جواب‌های موجود در package.mask توجه نمایید (موقعیت آن بشکل پیش‌فرض در /usr/portage/profiles است)، و نسخه دلخواه را (بیشتر زمان‌ها این خط هم‌سانی با profiles است) در فایل /etc/portage/package.unmask بیافزایید (یا در یک فایل در آن دایرکتوری اگر آن یک دایرکتوری است).

برای نمونه، اگر =net-mail/hotwayd-0.8 ماسک شده، می‌توانید آنرا با افزودن خطی هم‌شکل زیر به موقعیت package.unmask از ماسک شدگی بیرون آورید:

Code Listing 3.1: /etc/portage/package.unmask

=net-mail/hotwayd-0.8

نکته: اگر یک ورودی در /usr/portage/profiles/package.mask حاوی یک گستره از نسخه‌های یک بسته است، لازم خواهید داشت تا تنها نسخه‌(هائی) که واقعا می‌خواهید را از حالت ماسک‌شدگی بیرون آورید. خواهشمندیم برای یادگیری اینکه چگونه یک نسخه را در package.unmask مشخص نمایید بخش پیشین را بخوانید.

موقعیت package.mask

هنگامی‌که نمی‌خواهید پرتیج یک بسته مشخص را بگیرد یا یک نسخه مشخص از یک بسته در شمارش را می‌توانید خودتان آنرا با افزودن یک خط مناسب به موقعیت /etc/portage/package.mask ماسک نمایید (یا در آن فایل یا در یک فایل در آن دایرکتوری).

برای نمونه، اگر نمی‌خواهید پرتیج کد کرنل جدیدتری از gentoo-sources-2.6.8.1 را نصب نماید، خط واپسین را به موقعیت package.mask بیافزایید:

Code Listing 3.3: /etc/portage/package.mask example

>sys-kernel/gentoo-sources-2.6.8.1

۴. ابزارهای بیشتر پرتیج

۱۰.الف. dispatch-conf

ابزار dispatch-conf ابزاری است که به امرژ نمودن در فایل‌های ._cfg0000_<name> کمک می‌نماید. فایل‌های ._cfg0000_<name> هنگامیکه پرتیج می‌خواهد یک فایل را در یک دایرکتوری محافظت شده بوسیله متغییر CONFIG_PROTECT دوباره‌نویسی نماید بتوسط پرتیج ایجاد می‌گردند.

با dispatch-conf، به وارد نمودن بروزرسانی‌ها به فایل‌های پیکربندی‌تان در هنگامیکه همه تغییرات را در جای خود نگاه می‌دارید توانمند می‌شوید. dispatch-conf تفاوت‌های بین فایل‌های پیکربندی تغییریافته یا استفاده شده بتوسط RCS نسخه دستگاه را نگاه می‌دارد. این به آن معنی است که اگر هنگام بروزرسانی یک فایل پیکربندی اشتباهی نمایید، می‌توانید نسخه پیشین از آن فایل پیکربندی را در همان هنگام بازگردانید.

هنگامیکه از dispatch-conf استفاده می‌نمایید، می‌توانید بخواهید تا فایل پیکربندی جدید بمانند فایل پیشین باقی بماند، این یکی را ویرایش نمایید یا تغییرها را بشکل کنش و واکنشی ایجاد نمایید. dispatch-conf همچنین خصوصیت‌های زیبای بیشتری هم دارد:

  • بشکل خودکار بروزرسانی فایل‌های پیکربندی را نصب می‌نماید که تنها شامل بروزرسانی توضیح‌ها باشد.
  • بشکل خودکار بروزرسانی فایل‌های پیکربندی را نصب می‌نماید که تنها بین مقدار فضای خالی آنها تفاوت وجود داشته باشد

حتما ابتدا /etc/dispatch-conf.conf را ویرایش نمایید و دایرکتوری با ارجاع بوسیله متغییر archive-dir ایجاد نمایید.

Code Listing 1.1: Running dispatch-conf

# dispatch-conf

هنگامیکه dispatch-conf را اجرا می‌نمایید، در میان همه تغییرهای فایل پیکربندی خواهید بود، در هر زمان یکی. دگمه u را برای بروزرسانی (جایگزینی) فایل پیکربندی حاضر با یک فایل پیکربندی جدید فشار دهید و به فایل واپسین ادامه دهید. دگمه z را برای zap (پاک کردن) فایل پیکربندی جدید و ادامه به فایل واپسین فشار دهید. هنگامیکه همه فایل‌های پیکربندی مورد بررسی قرار گرفت، dispatch-conf خارج خواهد شد. همچنین می‌توانید دگمه q را در هر زمانی برای خروج فشار دهید.

برای داده‌های بیشتر، صفحه راهنمای dispatch-conf را بررسی نمایید. آن به شما خواهد گفت چگونه فایل پیکربندی حاضر و جدید را بشکل کنش و واکنشی نصب نمایید، فایل پیکربندی جدید را ویرایش نمایید، تفاوت بین فایل‌ها را امتحان نمایید، و بیشتر.

Code Listing 1.2: Reading the dispatch-conf man page

$ man dispatch-conf

۴.ب. etc-update

همچنین می‌توانید برای نصب فایل‌های پیکربندی از etc-update استفاده نمایید. این بسادگی استفاده از dispatch-conf نیست، و نه به خصوصیتمندی آن، اما یک مرحله نصب کنش و واکنشی نصب فراهم می‌آورد و می‌توانید همچنین تغییرات کوچک را بشکل خودکار انجام دهید.

هرچند، برخلاف dispatch-conf ، etc-update فایل پیکربندی نسخه قدیمی را نگاه نمی‌دارد. با یکبار بروزرسانی فایل، نسخه قدیمی برای همیشه از بین خواهد رفت! بنابر این بسیار دقت نمایید، که استفاده از etc-update بشکل قابل توجهی ایمنی کمتری نسبت به استفاده از dispatch-conf دارد.

Code Listing 2.1: Running etc-update

# etc-update

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

Code Listing 2.2: etc-update options

Please select a file to edit by entering the corresponding number.
              (-1 to exit) (-3 to auto merge all remaining files)
                           (-5 to auto-merge AND not use 'mv -i'):

اگر -1 را وارد نمایید، etc-update خارج خواهد شد و تغییرات را ادامه نمی‌دهد. اگر -3 یا -5 را وارد نمایید، همه فایل‌های پیکربندی فهرست شده با نسخه جدید دوباره‌نویسی خواهند شد. بسیار مهم است که ابتدا فایل‌های پیکربندی را که نباید بروز رسانی شوند را انتخاب نمایید. این بسادگی وارد نمودن عدد فهرست شده در سمت چپ فایل پیکربندی است.

به عنوان یک نمونه، ما فایل پیکربندی /etc/pear.conf را انتخاب نمودیم:

Code Listing 3.6: Updating a specific configuration file

Beginning of differences between /etc/pear.conf and /etc/._cfg0000_pear.conf
[...]
End of differences between /etc/pear.conf and /etc/._cfg0000_pear.conf
1) Replace original with update
2) Delete update, keeping original as is
3) Interactively merge original with update
4) Show differences again

اکنون می‌توانید تفاوت بین دو فایل را ببینید. اگر باور دارید فایل پیکربندی بروزرسانی‌شده بدون مشکل کار می‌کند، 1 را وارد نمایید. اگر باور دارید فایل بروز رسانی شده لازم نیست، 2 را وارد نمایید. اگر می‌خواهید بشکل کنش و واکنشی فایل پیکربندی حاضر را بروز رسانی نمایید، 3 را وارد نمایید.

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

Code Listing 2.4: Commands available for the interactive merging

ed:     Edit then use both versions, each decorated with a header.
eb:     Edit then use both versions.
el:     Edit then use the left version.
er:     Edit then use the right version.
e:      Edit a new version.
l:      Use the left version.
r:      Use the right version.
s:      Silently include common lines.
v:      Verbosely include common lines.
q:      Quit.

هنگامیکه فایل‌های پیکربندی مهم را بروزرسانی نمودید، اکنون می‌توانید دیگر فایل‌های پیکربندی را بشکل خودکار بروز رسانی نمایید. etc-update اگر فایل‌های پیکربندی قابل بروزرسانی بیشتری نیابد خارج خواهد شد.

۴.ج. quickpkg

با quickpkg می‌توانید بایگانی از بسته‌هائی که هم اکنون بروی دستگاهتان نصب هستند ایجاد نمایید. این بایگانی می‌تواند بمانند بسته‌های پیش ساخته استفاده گردد. اجرای quickpkg سرراست است: تنها نام بسته‌ائی را که می‌خواهید بایگانی شود را بیافزایید.

برای نمونه curl ، orage و procps:

Code Listing 3.1: Example quickpkg usage

# quickpkg curl orage procps

بسته‌های پیش ساخته در $PKGDIR (بشکل پیش‌فرض /usr/portage/packages/) نگاهداری خواهند شد. این بسته‌ها در $PKGDIR/<category> قرار خواهند گرفت.

۵. منحرف شدن از شاخه رسمی

۵.الف. استفاده نمودن از یک زیرمجموعه شاخه پرتیج

راه‌ندادن بسته‌ها/دسته‌بندی‌ها

می‌توانید بشکل انتخابی بسته‌ها/دسته‌بندی‌های مشخصی را بروزرسانی‌ نمایید و دیگر بسته‌ها/دسته‌بندی‌ها را نادیده بگیرید. به این با داشتن rsync با نادیده گرفتن دسته‌بندی‌ها/بسته‌ها در هنگام گام emerge --sync دست می‌یابیم.

لازم دارید تا نام فایلی را که می‌خواهید ممانعتی داشته باشد را در متغییر --exclude-from در /etc/portage/make.conf خودتان تعریف نمایید.

Code Listing 1.1: Defining the exclude file in /etc/portage/make.conf

PORTAGE_RSYNC_EXTRA_OPTS="--exclude-from=/etc/portage/rsync_excludes"

Code Listing 1.2: Excluding all games in /etc/portage/rsync_excludes

games-*/*

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

۵.ب. افزودن ائی‌بیلدهای غیر‌‌رسمی

تعریف نمودن یک دایرکتوری پوششی پرتیج

می‌توانید از پرتیج بخواهید از ائی‌بیلدهائی استفاده نماید که در شاخه رسمی پرتیج موجود نیستند. در مکانی که ائی‌بیلدهای غیر‌رسمی‌تان را نگاهداری می‌نمایید (برای نمونه /usr/local/portage ) یک دایرکتوری جدید ایجاد نمایید.از آن بشکل ساختار یک دایرکتوری رسمی استفاده نمایید!

سپس PORTDIR_OVERLAY را در /etc/portage/make.conf تعریف نمایید و آنرا متوجه دایرکتوری که پیشتر ساختید بنمایید. اکنون اگر شما از پرتیج استفاده نمایید، آن ائی بیلدها را بخوبی و بدون پاک‌نمودن/دوباره‌نویسی آن ائی بیلدها در بار دیگری که از emerge --sync استفاده می‌نمایید به حساب خواهد آورد.

کار کردن با چندین پوشش

برای کاربران توانمند که با چندین پوشش کار می‌کنند، امتحان نمودن بسته‌ها پیش از آنکه آنها به شاخه پرتیج افزوده شوند یا هنگامیکه تنها از ائی‌بیلدهای غیر رسمی از چندین منبع استفاده می‌شود، بسته app-portage/layman برای شما layman را می‌آورد، یک ابزار که به شما کمک می‌نمایدمخزن‌های پوششی را بروز رسانی نمایید.

نخست layman را چنانکه در Overlays Users' Guide نشان داده شده نصب و پیکربندی نمایید، و مخزن‌هائی را که دوست دارید با layman -a <overlay-name> بیافزایید.

گمان بر این است که شما دو مخزن با نام‌های java (برای ائی‌بیلدهای در حال ساخت java) و entapps (برای گسترش‌برنامه‌های سرمایه‌گذاری خودتان در خانه) دارید. می‌توانید با دستورهای زیر آنها را بروزرسانی نمایید:

Code Listing 2.1: Using layman to update all repositories

# layman -S

برای داده‌های بیشتر برای کار با لایه‌ها، خواهشمندیم man layman و layman/overlay users' guide را بخوانید.

5.c. نرم‌افزاهای بدون پرتیج گسترش‌یافته

استفاده نمودن از پرتیج با نرم‌افزاهای خود-گسترش‌دهنده

در برخی زمان‌ها می‌خواهید یک نرم‌افزار را خودتان بدون اجرا خودکار پرتیج پیکربندی، نصب و گسترش دهید، بشکلی که پرتیج بتواند عنوان نرم‌افزار را فراهم نماید. مورد‌های شناخته شده کد کرنل دارند و درایورهای nvidia. می‌توانید پرتیج را پیکربندی نمایید تا بداند این بسته مشخص بشکل دستی بروی دستگاه شما نصب گردیده. به این روند injecting گفته می‌شود و بوسیله پرتیج از مسیر فایل /etc/portage/profile/package.provided پشتیبانی می‌گردد.

برای نمونه، اگر می‌خواهید به پرتیج درباره gentoo-sources-2.6.11.6 که بشکل دستی آنرا نصب نموده‌اید آگاهی دهید، خط زیر را به /etc/portage/profile/package.provided بیافزایید:

Code Listing 3.1: Example line for package.provided

sys-kernel/gentoo-sources-2.6.11.6

۶. خصوصیت‌های پیشرفته پرتیج

۶.الف. مقدمه

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

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

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

Code Listing 1.1: Reading up on portage man pages

$ man portage
$ man make.conf

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

2.b. Per-Package Environment Variables

Using /etc/portage/env

بشکل پیش فرض، بسته‌های ساخته شده از متغییرهای محیطی تعریف شده در /etc/portage/make.conf استفاده می‌کنند، مانند CFLAGS ، MAKEOPTS و بیشتر. در گاهی زمان‌ها، ممکن است بخواهید برای بسته‌های خاصی متغییرهای متفاوتی فراهم آورید. برای چنین کاری پرتیج از /etc/portage/env و /etc/portage/package.env پشتیبانی می نماید.

فایل /etc/portage/package.env حاوی فهرستی از بسته‌هائی است که با استفاده از شناساگر متغییرهای تحریف شده باید کار نمایند که بخوبی به پرتیج تغییراتی را که شما می‌خواهید اعلام می‌نماید. نام شناساگر را که خودتان انتخاب می‌نمایید، پرتیج به متغییرهای موجود در /etc/portage/env/<identifier> نگاه می‌نماید.

نمونه: استفاده کردن از ایرادیابی برای بسته‌های خاص

برای نمونه، ما ایرادیابی برای بسته media-video/mplayer را فعال می‌نماییم.

نخست، متغییرهای ایرادیابی در فایلی به نام /etc/portage/env/debug-cflags را تنظیم می‌نماییم. نام فایل کاملا انتخابی است، البته اشتباه در نشانگذاری آن می‌تواند دلیل انحراف واکنش‌های پس از این باشد.

Code Listing 2.1: /etc/portage/env/debug-cflags content

CFLAGS="-O2 -ggdb -pipe"
FEATURES="${FEATURES} nostrip"

سپس، بسته media-video/mplayer را با استفاده از این مفهوم تگ می‌نماییم:

Code Listing 2.2: /etc/portage/package.env content

media-video/mplayer debug-cflags

۶.ج. چنگک‌زنی در روش امرژ نمودن

استفاده نمودن از /etc/portage/bashrc و مربوط نمودن فایل‌ها

هنگامیکه پرتیج با ائی‌بیلدها کار می‌نماید، از یک محیط bash که به آن تابع‌های سازه‌های گوناگون گفته می شود استفاده می‌نماید ( مانند src_prepare, src_configure, pkg_postinst, و دیگر از آن). اما پرتیج همچنین به شما امکان می‌دهد تا محیط bash را برای خودتان برپا نمایید.

مزیت استفاده نمودن از محیط bash خودتان آن است که هر مرحله‌ائی را که در هنگام امرژ نمودن اجرا می‌گردد را چنگک نمایید. اینکار می‌تواند برای هربار امرژ انجام گردد (در سراسر /etc/portage/bashrc ) یا بوسیله استفاده نمودن از محیط‌های ( در سراسر /etc/portage/env که پیشتر گفته شد).

برای چنگک‌زنی در جریان عمل، محیط bash می‌تواند به متغییرهای EBUILD_PHASE ، CATEGORY به خوبی متغییرهائی که گسترش‌دهندگان ائی‌بیلدها همیشه استفاده می نمایند (مانند P ، PF ، ...) گوش‌فرا دهد. پس از آن بر اساس این متغییرها، می تواند گام‌های بعدی را اجرا نمایید.

نمونه: بروزرسانی پایگاه‌‌داده

در این نمونه، ما از /etc/portage/bashrc برای فراخوانی برخی فایل‌ برنامه‌های پایگاه‌داده استفاده می‌نماییم تا اطمینان بیابیم که پایگاه‌داده با کمک دستگاه بروزرسانی می‌گردد. برنامه‌های استفاده شده در نمونه در aide هستند (یک ابزار مرتبط ساز ساختار) و updatedb (برای استفاده با locate )، اما این تنها یک نمونه است. به عنوان یک روش گام‌به‌گام استفاده ننمایید ;-)

برای استفاده از /etc/portage/bashrc برای این مورد، لازم است تا در تابع‌های postrm چنگک نماییم (پس از پاک‌سازی فایل‌ها) و postinst (پس از نصب فایل‌ها)، در هنگامیکه دستگاه فایل تغییر می‌یابد.

Code Listing 3.1: Example /etc/portage/bashrc

if [ "${EBUILD_PHASE}" == "postinst"] || [ "${EBUILD_PHASE}" == "postrm" ];
then
  echo ":: Calling aide --update to update its database";
  aide --update;
  echo ":: Calling updatedb to update its database";
  updatedb;
fi

۶.پ. اجرا نمودن کارها پس از --sync

موقعیت /etc/portage/postsync.d

تا این هنگام درباره چنگک‌زنی صحبت می‌نمودیم. هرچند، پرتیج تابع مهم دیگری هم دارد: بروز رسانی شاخه پرتیج. در درخواست اجرای کارها پس از بروز رسانی شاخه پرتیج، کدی درون /etc/portage/postsync.d قرار دهید و مطمئن شوید به شکل قابل اجرا برچسب بخورد.

نمونه: اجرا نمودن eix-update

اگر از eix-sync برای بروز رسانی شاخه استفاده ننمایید، هنوز می‌توانید بوسیله قرار دادن یک میانبر در /usr/bin/eix که به آن eix-update گفته می‌شود در /etc/portage/postsync.d پایگاه‌داده را پس از اجرا نمودن emerge --sync (یا emerge-webrsync ) بروز نگاه‌دارید.

Code Listing 4.1: Running eix-update after a sync operation

# ln -s /usr/bin/eix /etc/portage/postsync.d/eix-update

نکته: اگر از نام دیگری استفاده می‌نمایید، لازم دارید تا بجای آن کدی به نام /usr/bin/eix-update بسازید. باینری eix به آن نگاه می‌نماید تا بیابد کدام تابع را اجرا نماید. اگر میانبری در eix که به آن eix-update گفته می‌شود قرار ندهید، بخوبی اجرا نخواهد گردید.

۶.چ تنظیم‌های برجسته پروفایل

موقعیت /etc/portage/profile

بشکل پیش‌فرض، جنتو از تنظیم‌هائی که در /etc/portage/make.profile آمده (که یک میانبر به دایرکتوری پروفایل درست است) استفاده می‌نماید. این پروفایل‌ها همه تنظیم‌های مشخص شده را بخوبی تنظیم‌های جانشین شده از دیگر پروفایل‌ها (در سراسر فایل parent شان) تعریف می‌نماید.

با استفاده از /etc/portage/profile، می‌توانید تنظیم‌های برجسته مانند packages (چه بسته‌هائی برای بخشی از تنظیم‌های دستگاه مطرح شده)، اجبار برای استفاده از پرچمک‌ها و بیش از آن را انجام دهید.

نمونه: افزودن nfs-utils به تنظیم دستگاه

اگر از فایل‌های سیستمی بر اساس NFS برای بیشتر فایل سیستم‌های بحرانی استفاده می‌نمایید، ممکن است بخواهید net-fs/nfs-utils را حفاظت شده به عنوان یک بسته سیستمی داشته باشید، که سبب می شود پرتیج اگر پاک شد بشدت به شما اخطار دهد.

برای انجام دادن آن، ما بسته را به /etc/portage/profile/packages ، با توجه به یک * می‌افزاییم:

Code Listing 5.1: /etc/portage/profile/packages content

*net-fs/nfs-utils

۶.ح. بکاربستن وصله‌های غیر استاندارد

استفاده نمودن از epatch_user

برای مدیریت چندین ائی‌بیلد در یک روش مشابه، گسترش‌دهندگان ائی‌بیلدها از eclasses (که فهرست مرتبی از کتابخانه‌های شل است) استفاده می‌نمایند که تابع‌های عمومی مورد استفاده را تعریف می‌نماید. یکی از این کلاس‌های الکترونیکی eutils.eclass است که تابع جذابی که epatch_user نامیده می‌شود را ارائه می‌دهد.

تابع epatch_user هرآنچه از وصله‌های کد منبع را که در دایرکتوری موجود باشد فراهم می‌آورد که در /etc/portage/patches/<category>/<package>[-<version>[-<revision>]] یافت می‌شوند، متاسفانه، همه ائی‌بیلدها بطور خودکار این تابع را فراخوانی نمی‌نمایند بنابر این قرار دادن وصله‌تان در این موقعیت ممکن است همیشه کار نکند.

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

نمونه: فراهم آوردن وصله به فایرفاکس

بسته www-client/firefox یکی از معدود بسته‌هائی است که در حال حاضر epatch_user را از درون ائی‌بیلد فراخوانی می‌نماید، بنابر این لازم نیست تا چیزی را بشکل مشخص برجسته نمایید.

اگر می‌خواهید فایرفاکس را وصله نمایید (برای نمونه چراکه یک گسترش‌دهنده یک وصله فراهم آورده و از شما خواسته تا آنرا بررسی نمایید تا ایرادی که گزارش نموده‌اید را برطرف نماید)، وصله را در /etc/portage/patches/www-client/firefox قرار دهید (بهترین راه استفاده از نام کامل آن است، شامل نسخه تا وصله با نسخه‌های واپسین درگیر نشود) و فایرفاکس را دوباره سازی نمایید.

چ. پیکربندی شبکه جنتو

۱. شروع کار

۱.الف. شروع کار

نکته: این سند گمان می‌نماید شما با دقت کرنل خودتان و ماژول‌های آنرا برای سخت‌افزار خودتان پیکربندی نموده‌اید، و نام رابط کاربری سخت افزار خود را می‌دانید. همچنین ما گمان می‌نماییم شما eth0 را پیکربندی نموده اید، اما آن می‌تواند همچنین eth1 ، wlan0 یا دیگر از آن هم باشد.

برای شروع پیکربندی کارت شبکه‌تان، لازم دارید به دستگاه RC جنتو درباره آن بگویید. این کار با ایجاد یک لینک نمادین از net.lo به net.eth0 در /etc/init.d انجام می‌شود.

Code Listing 1.1: Symlinking net.eth0 to net.lo

# cd /etc/init.d
# ln -s net.lo net.eth0

اکنون دستگاه RC جنتو درباره رابط کاربری شما می‌داند. همچنین لازم دارد تا بداند چگونه رابط کاربری جدید را پیکربندی می‌نمایید. همه رابط های کاربری شبکه در /etc/conf.d/net پیکربندی شده‌اند. در زیر نمونه‌ پیکربندی برای DHCP و آدرس‌های پایدار آورده شده.

Code Listing 1.2: Examples for /etc/conf.d/net

# For DHCP
config_eth0="dhcp"

# For static IP using CIDR notation
config_eth0="192.168.0.7/24"
routes_eth0="default via 192.168.0.1"
dns_servers_eth0="192.168.0.1 8.8.8.8"

# For static IP using netmask notation
config_eth0="192.168.0.7 netmask 255.255.255.0"
routes_eth0="default via 192.168.0.1"
dns_servers_eth0="192.168.0.1 8.8.8.8"

نکته: اگر هیچ پیکربندی برای رابط کاربری خود مشخص ننمایید، فرض می شود از DHCP استفاده می‌نمایید.

نکته: گزینه CIDR برای کلاس‌های مسیریابی دامین‌های عمومی است. بطورکلی، آدرس‌های IPv4 بشکل A، B یا C دسته‌بندی می‌گردند. دستگاه‌های قدیمی‌تر برای یک اینترنت عمومی تدارک دیده نشده بودند، و استفاده از آنها در بیرون از آدرس انحصاری‌شان خطرناک بود. CIDR یک نمایه آدرس‌دهی است که امکان کماشتن یک ادرس IP به چندین آدرس IP را برقرار می‌نماید. یک آدرس IP از نوع CIDR شبیه یک آدرس IP معمولی است بجز آنکه با یک اسلش و یک عدد در انتتهای آن به پایان می‌رسد; برای نمونه، 192.168.0.0/16 . CIDR در RFC 1519 توضیح داده شده است.

اکنون که ما رابط کاربری مان را پیکربندی نمودیم، می‌توانیم آنرا با استفاده از دستورهای زیر روشن و خاموش نماییم:

Code Listing 1.3: Starting and stopping network scripts

# /etc/init.d/net.eth0 start
# /etc/init.d/net.eth0 stop

مهم: هنگامی‌که در حال ایرادیابی از شبکه هستید، نگاهی به /var/log/rc.log بیاندازید. بجز اینکه rc_logger="NO" را در /etc/rc.conf تنظیم نموده باشید، می‌توانید اطلاعات هنگام راه‌اندازی را که‌در log فایل ذخیره می‌شود را بیابید.

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

Code Listing 1.4: Configuring a network interface to load at boot time

# rc-update add net.eth0 default
# rc

۲. پیکربندی پیشرفته

۲.الف. پیکربندی پیشرفته

متغییر config_eth0 قلب یک پیکربندی رابط کاربری است.این یک فهرست ساختار سطح بالا برای پیکربندی رابط کاربری است ( در این مورد eth0). هر دستور در فهرست ساختار پیاپی انجام می‌شود. اگر کمینه یکی از دستورها کار نماید، رابط‌کاربری درست شمرده می‌شود.

در اینجا فهرستی از ساختارهای درون‌ساز وجود دارد.

Command Description
null Do nothing
noop If the interface is up and there is an address then abort configuration successfully
an IPv4 or IPv6 address Add the address to the interface
dhcp, adsl or apipa (or a custom command from a 3rd party module) Run the module which provides the command. For example dhcp will run a module that provides DHCP which can be one of either dhcpcd, dhclient or pump.

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

می توانید این دستورها را به هم پیوند دهید. اینجا چند نمونه دنیای راستین وجود دارد.

Code Listing 1.1: Configuration examples

# Adding three IPv4 addresses
config_eth0="192.168.0.2/24
192.168.0.3/24
192.168.0.4/24"

# Adding an IPv4 address and two IPv6 addresses
config_eth0="192.168.0.2/24
4321:0:1:2:3:4:567:89ab
4321:0:1:2:3:4:567:89ac"

# Keep our kernel assigned address, unless the interface goes
# down so assign another via DHCP. If DHCP fails then add a
# static address determined by APIPA
config_eth0="noop
dhcp"
fallback_eth0="null
apipa"

نکته: هنگامی که از ماژول ifconfig استفاده می‌نمایید و بیش از یک آدرس به آن می افزایید، نام مستعار رابط کاربری برای هر آدرس بیشتر ایجاد می‌گردد. به این ترتیب با دو نمونه بالا رابط کاربری eth0 ، eth0:1 و eth0:2 را خواهید گرفت. با این رابط‌های کاربری کار مشخصی نمی‌توانید انجام دهید تا هنگامی‌که کرنل و دیگر برنامه‌ها eth0:1 و eth0:2 را به عنوان eth0 تلقی می‌نمایند.

مهم: درخواست برگشت بسیار مهم است! اگر گزینه null را مشخص ننماییم دستور apipa فقط هنگامی اجرا خواهد شد که دستور noop اشکال بیابد.

نکته: APIPA و DHCP وا‍پس گفته خواهند شد.

۲.ب. وابستگی‌های شبکه

کدهای Init در /etc/init.d می‌توانند به یک رابط‌کاربری شبکه ویژه یا تنها به شبکه وابسته باشند. همه رابط‌های کاربری شبکه در دستگاه init جنتو چیزی را که به آن net گفته می‌شود را فراهم می‌آورند.

اگر در /etc/rc.conf گزینه rc_depend_strict="YES" تنظیم است، همه رابط‌های کاربری که شبکه فراهم می‌آورند باید پیش از وابستگی‌های شبکه پویا شوند. به زبان دیگر، اگر یک net.eth0 و net.eth1 دارید و یک کد init به "net" وابسته است، باید هر دو آنها پویا شوند.

در سوی دیگر، اگر rc_depend_strict="NO" تنظیم گردیده، وابستگی شبکه به شکل برطرف‌شده نشانگر خورده با این هدف که کمینه یک رابط‌کاربری شبکه روشن می‌باشد.

ولی درباره net.br0 که بروی net.eth0 و net.eth1 وابسته باشد چه؟ net.eth1 ممکن است یک بیسیم یا دستگاه PPP که پیش از آنکه به bridge افزوده گردد لازم است پیکربندی شود، باشد. از آنجا که /etc/init.d/net.br0 پیوند نمادینی به net.lo است، این کار نمی‌تواند انجام گردد.

پاسخ تعریف نمودن تنظیم‌های یک rc_need_ در /etc/conf.d/net است.

Code Listing 2.1: net.br0 dependency in /etc/conf.d/net

rc_need_br0="net.eth0 net.eth1"

تنها همین، هرچند کافی نیست. کدهای init شبکه‌سازی جنتو از وابستگی مجازی که به آن net گفته می‌شود استفاده می‌نمایند تا دستگاه را هنگامیکه شبکه برپا است، آگاه نماید. آشکارا، در نمونه بالا، شبکه تنها هنگامی به‌شکل هستی‌دار نشان می‌خورد که net.br0 برپا باشد، نه هنگامی‌که دیگران برپا هستند. بنابر این لازم است تا به آن در /etc/conf.d/net این‌را بگوییم:

Code Listing 2.2: Updating virtual dependencies and provisions for networking

rc_net_lo_provide="!net"
rc_net_eth0_provide="!net"
rc_net_eth1_provide="!net"

برای گفتگو‌های بیشتر درباره وابستگی‌ها، بخش نوشتن کدهای init را در کتاب‌راهنمای‌جنتو کنکاش نمایید. داده‌های بیشتر درباره /etc/rc.conf در فایل همراه آن موجود است.

۲.ج. نام‌ها و ارزش‌های متغییر

نام‌های متغییر نا‌ایستا هستند. در حالت عادی آنها ساختار موجود در variable_${interface|mac|essid|apmac} را پیگیری می‌نمایند. برای نمونه، متغییر dhcpcd_eth0 مقدار برای گزینه‌های dhcpcd برای eth0 را نگاه می‌دارد و dhcpcd_essid مقدار برای گزینه‌های dhcpcd در هنگامیکه هر رابط‌کاربری با ESSID "essid" ارتباط می‌یابد را نگهداری می‌نماید.

هرچند، قانون سریع و سختی وجود ندارد نام‌‌های حالت رابط کاربری باید به شکل ethx باشد. بدرستی، بسیاری از رابط‌کاربری‌های بیسیم نامی مانند wlanx یا rax بخوبی ethx دارند. همچنین، برخی کاربران رابط‌کاربری‌هائی تعریف می‌نمایند مانند bridgeها که می‌توانند نام‌هائی مانند foo داشته‌باشند. برای اینکه زندگی را بیشتر زیبا کنیم، نقطه‌های دسترسی بیسیم می توانند نام‌هائی با نشانک‌هایی بجز الف‌با و عددها داشته باشند - این مهم است چراکه می‌توانید پیکربندی پارامترهای شبکه را بوسیله ESSID انجام دهید.

سمت پایین همه این‌ها آن است که جنتو برای شبکه سازی از متغییرهای bash استفاده می‌نماید - و bash نمی‌تواند از چیزی بجز الف‌با و عددهای انگلیسی استفاده نماید. برای چیره شدن بر این دشواری ما هر نشانکی را که انگلیسی نباشد را با یک نشانک _ تغییر می دهیم.

دیگر سوی پایین bash درون‌مایه‌های متغییرها است - برخی نشانک‌ها نیاز دارند رد شوند. این می‌تواند با قرار دادن نشانک \ در برابر نشانکی که لازم به پرش دارد بدست آید. فهرست برابر نشانک‌ها لازم است تا به این شکل تغییر یابند: ", ' و \.

در این نمونه ما از ESSID بیسیم که می‌تواند دورنمایه بزرگی از نشانک‌ها را داشته باشد استفاده می‌نماییم. ما باید از ESSID به شکل My "\ NET استفاده نماییم:

Code Listing 3.1: variable name example

(This does work, but the domain is invalid)
dns_domain_My____NET="My \"\\ NET"

(The above sets the dns domain to My "\ NET when a wireless card
connects to an AP whose ESSID is My "\ NET)

۳. شبکه‌سازی ماژولار

۳.الف. ماژول‌های شبکه

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

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

نکته: همه تنظیم‌هائی که اینجا توضیح داده می‌شوند در /etc/conf.d/net نگاه‌داری می‌گردند مگر آنکه بشکل موردی مشخص شده باشند.

Code Listing 1.1: Module preference

# Prefer ifconfig over iproute2
modules="ifconfig"

# You can also specify other modules for an interface
# In this case we prefer pump over dhcpcd
modules_eth0="pump"

# You can also specify which modules not to use - for example you may be
# using a supplicant or linux-wlan-ng to control wireless configuration but
# you still want to configure network settings per ESSID associated with.
modules="!iwconfig"

۳.ب. نگاه‌دارنده‌های رابط

اکنون تنها دو نگاه‌دارنده رابط را فراهم می‌آوریم: ifconfig و iproute2 . به یکی از این دو برای هرگونه پیکربندی شبکه‌ائی نیاز دارید.

بشکل پیش‌فرض ifconfig نصب گردیده (بسته net-tools بخشی از پروفایل دستگاه است). iproute2 بسته‌ائی با قدرت بیشتر و قابلیت انعطاف بیشتر است، اما بشکل پیش‌فرض وجود ندارد.

Code Listing 2.1: To install iproute2

# emerge sys-apps/iproute2

# To prefer ifconfig over iproute2 if both are installed as openrc prefers
# to use iproute2 then
modules="ifconfig"

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

Code Listing 2.2: ifconfig and iproute2 examples

config_eth0="192.168.0.2/24"
config_eth0="192.168.0.2 netmask 255.255.255.0"

# We can also specify broadcast
config_eth0="192.168.0.2/24 brd 192.168.0.255"
config_eth0="192.168.0.2 netmask 255.255.255.0 broadcast 192.168.0.255"

۳.ج. DHCP

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

خدمت DHCP می‌تواند بوسیله dhclient ، dhcpcd ، یا pump فراهم گردد. هر ماژول DHCP گزینه‌های pros و cons خودش را دارد - اینجا یک راه‌انداز سریع وجود دارد.

DHCP Module Package Pros Cons
dhclient net-misc/dhcp Made by ISC, the same people who make the BIND DNS software. Very configurable Configuration is overly complex, software is quite bloated, cannot get NTP servers from DHCP, does not send hostname by default
dhcpcd net-misc/dhcpcd Long time Gentoo default, no reliance on outside tools, actively developed by Gentoo Can be slow at times, does not yet daemonize when lease is infinite
pump net-misc/pump Lightweight, no reliance on outside tools No longer maintained upstream, unreliable, especially over modems, cannot get NIS servers from DHCP

اگر بیش از یک DHCP نصب شده دارید، لازم است مشخص نمایید کدام یک استفاده گردد - در غیر اینصورت ما dhcpcd را اگر وجود داشته باشد به عنوان پیش فرض به حساب می‌آوریم.

برای فرستادن انتخاب‌های مشخص به ماژول DHCP، از module_eth0="..." (change module to the DHCP module you're using - i.e. dhcpcd_eth0) استفاده نمایید.

کوشش می‌نماییم DHCP بشکل نسبی ناوابسته باشد - برای نمونه ما از دستور پی‌آمد با استفاده از متغییر dhcp_eth0 پشتیبانی می‌نماییم. بشکل پیش‌فرض هیچکدام تنظیم نیست:

  • release - releases the IP address for re-use
  • nodns - don't overwrite /etc/resolv.conf
  • nontp - don't overwrite /etc/ntp.conf
  • nonis - don't overwrite /etc/yp.conf

Code Listing 3.1: Sample DHCP configuration in /etc/conf.d/net

# Only needed if you have more than one DHCP module installed
modules="dhcpcd"

config_eth0="dhcp"
dhcpcd_eth0="-t 10" # Timeout after 10 seconds
dhcp_eth0="release nodns nontp nonis" # Only get an address

نکته: هر دو dhcpcd و pump به شکل پیش فرض نام هاست درست را به سرور DHCP ارسال می‌نمایند بنابر این بیش از این نیاز به مشخص نمودن آن نیست.

۳.چ. ADSL با PPPoE/PPPoA

ابتدا لازم داریم تا نرم‌افزار ADSL را نصب نماییم.

Code Listing 4.1: Install the ppp package

# emerge net-dialup/ppp

پس از آن، ایجاد کد شبکه PPP و کد شبکه برای رابط کاربری ethernet که بوسیله PPP مورد استفاده قرار خواهد گرفت:

Code Listing 4.2: Creating the PPP and ethernet scripts

# ln -s /etc/init.d/net.lo /etc/init.d/net.ppp0
# ln -s /etc/init.d/net.lo /etc/init.d/net.eth0

مطمئن شوید rc_depend_strict را در /etc/rc.conf به "YES" تنظیم نموده اید.

لازم داریم /etc/conf.d/net را پیکربندی نماییم.

Code Listing 4.3: A basic PPPoE setup

config_eth0=null (Specify your ethernet interface)
config_ppp0="ppp"
link_ppp0="eth0" (Specify your ethernet interface)
plugins_ppp0="pppoe"
username_ppp0='user'
password_ppp0='password'
pppd_ppp0="
noauth
defaultroute
usepeerdns
holdoff 3
child-timeout 60
lcp-echo-interval 15
lcp-echo-failure 3
noaccomp noccp nobsdcomp nodeflate nopcomp novj novjccomp"

rc_need_ppp0="net.eth0"

همچنین می‌توانید کلمه رمز عبور خود را در /etc/ppp/pap-secrets تنظیم نمایید.

Code Listing 4.4: Sample /etc/ppp/pap-secrets

# The * is important
"username"  *  "password"

اگر از PPPoE با یک مودم USB استفاده می‌نمایید، نیاز دارید تا br2684ctl را امرژ نمایید. خواهشمندیم /usr/portage/net-dialup/speedtouch-usb/files/README را برای اطلاعات درباره چگونگی پیکربندی درست آن بخوانید.

مهم: خواهشمندیم با دقت بخش ADSL و PPP در /usr/share/doc/openrc-0.8.3-r1/net.example.bz2 را بخوانید. این شامل مقدار زیادی توضیحات دقیق از همه تنظیمات همه بخش‌های راه‌اندازی PPP که لازم دارید است. البته 0.8.3-r1 را با مقدار نسخه OpenRC نصب شده بروی دستگاه‌تان عوض نمایید.

۳.پ. APIPA (آدرس IP سازی خودکار)

گزینه APIPA تلاش می‌نماید تا یک آدرس آزاد در رنج 169.254.0.0-169.254.255.255 با تلاش اتفاقی برای یافتن آن در این رنج بیابد. اگر هیچ بازتابی یافت نشد، آنگاه ما آدرس را به رابط کاربری بشکل دستی می‌دهیم.

این تنها هنگامی مفید است که همه LAN‌ها سرور DHCP ندارند و نیازی به ارتباط آن به اینترنت ندارید و همه رایانه‌ها از APIPA استفاده می نمایند

برای پشتیبانی از APIPA یا net-misc/iputils و یا net-analyzer/arping را امرژ نمایید.

Code Listing 5.1: APIPA configuration in /etc/conf.d/net

# Try DHCP first - if that fails then fallback to APIPA
config_eth0="dhcp"
fallback_eth0="apipa"

# Just use APIPA
config_eth0="apipa"

۳.ث. پیوستگی

برای پیوند پیوستگی/گسستگی net-misc/ifenslave را امرژ نمایید.

از bonding برای افزایش پهنای‌باند شبکه استفاده می‌نماییم. اگر دو کارت شبکه دارید که از یک شبکه استفاده می نمایند، می‌تواند آنها را به هم بپیوندید تا برنامه‌های شما فقط یک رابط کاربری ببینند اما براستی آنها از هر دو کارت شبکه استفاده می‌نمایند.

Code Listing 6.1: bonding configuration in /etc/conf.d/net

# To bond interfaces together
slaves_bond0="eth0 eth1 eth2"

# You may not want to assign an IP to the bonded interface
config_bond0="null"

# Depend on eth0, eth1 and eth2 as they may require extra configuration
rc_need_bond0="net.eth0 net.eth1 net.eth2"

۳.ح. Bridging (802.1d پشتیبانی)

برای پشتیبانی پل زنی net-misc/bridge-utils را امرژ نمایید.

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

Code Listing 7.1: Bridge configuration in /etc/conf.d/net

# Configure the bridge - "man brctl" for more details
brctl_br0="setfd 0" "sethello 0" "stp off"

# To add ports to bridge br0
bridge_br0="eth0 eth1"

# You need to configure the ports to null values so dhcp does not get started
config_eth0="null"
config_eth1="null"

# Finally give the bridge an address - you could use DHCP as well
config_br0="192.168.0.1/24"

# Depend on eth0 and eth1 as they may require extra configuration
rc_need_br0="net.eth0 net.eth1"

مهم: برای استفاده از برخی تنظیم‌های پل‌زنی، ممکن است لازم داشته باشید مستندات نام متغییر را کنکاش نمایید.

۳.گ. MAC آدرس‌ها

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

Code Listing 8.1: MAC Address change example

# To set the MAC address of the interface
mac_eth0="00:11:22:33:44:55"

# To randomize the last 3 bytes only
mac_eth0="random-ending"

# To randomize between the same physical type of connection (e.g. fibre,
# copper, wireless) , all vendors
mac_eth0="random-samekind"

# To randomize between any physical type of connection (e.g. fibre, copper,
# wireless) , all vendors
mac_eth0="random-anykind"

# Full randomization - WARNING: some MAC addresses generated by this may
# NOT act as expected
mac_eth0="random-full"

۳.ژ. تونل‌ساختن

از آنجا که رابط کاربری آنرا برای شما انجام می‌دهد نیاز به امرژ نمودن چیزی برای تونل‌زنی ندارید.

Code Listing 9.1: Tunnelling configuration in /etc/conf.d/net

# For GRE tunnels
iptunnel_vpn0="mode gre remote 207.170.82.1 key 0xffffffff ttl 255"

# For IPIP tunnels
iptunnel_vpn0="mode ipip remote 207.170.82.2 ttl 255"

# To configure the interface
config_vpn0="192.168.0.2 peer 192.168.1.1"

۳.ز. VLAN (802.1q پشتیبانی)

برای پشتیبانی VLAN، بسته net-misc/vconfig را امرژ نمایید.

دسته LAN شبیه سازی‌شده گروهی از دستگاه‌های شبکه است که عادت به برقراری ارتباط با یک بخش مشخص از شبکه دارند - حتی اگر این‌کار ممکن نباشد. اعضاء VLAN می‌توانند تنها ععضوهای دیگر VLAN شریک در یک شبکه فیزیکی با خودشان را ببینند.

Code Listing 10.1: VLAN configuration in /etc/conf.d/net

# Specify the VLAN numbers for the interface like so
# Please ensure your VLAN IDs are NOT zero-padded
vlans_eth0="1 2"

# You can also configure the VLAN
# see for vconfig man page for more details
vconfig_eth0="set_name_type VLAN_PLUS_VID_NO_PAD"
vconfig_vlan1="set_flag 1" "set_egress_map 2 6"

# Configure the interface as usual
config_vlan1="172.16.3.1 netmask 255.255.254.0"
config_vlan2="172.16.2.1 netmask 255.255.254.0"

مهم: برای استفاده نمودن از تنظیمات VLAN، ممکن از لازم داشته باشید تا مستندات نام متغییر را کنکاش نمایید.

4. Wireless Networking

۷.الف. مقدمه

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

ساده‌ترین‌راه آن است که هنگامیکه در حال نصب نمودن یک محیط میزکار هستید از سمت‌کاربر گرافیکی استفاده نمایید. بیشتر سمت کاربرهای گرافیکی، مانند wicd و NetworkManager ، بخوبی خود-توضیح‌دهنده هستند. آنها یک رابط کاربری کاربردی نقطه-و-کلیک که در چند ثانیه شبکه‌ائی را برای شما برپا می‌سازند ارائه می‌دهند.

نکته: برنامه wicd علاوه‌بر رابط کاربری گرافیکی اصلی یک خط فرمان هم ارايه می‌دهد. می‌توانید آنرا با امرژ نمودن wicd با تنظیم پرچمک ncurses دریافت نمایید. این ابزار سودمند wicd-curses بویژه برای کسانی سودمند است که از محیط میزکارهای بر اساس gtk استفاده نمی‌نمایند، اما هنوز ابزار خط فرمانی لازم دارند که فایل پیکربندی که نیاز به ویرایش دستی داشته باشد، لازم نداشته باشد.

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

می‌توانید شبکه بیسیم را بروی خط فرمان با نصب wireless-tools یا wpa_supplicant برپا نمایید. مهمترین چیزی که باید بخاطر داشته باشید آن است که شبکه‌های بیسیم را بروی یک اساس جهانی پیکربندی می‌نمایید و نه یک اساس رابط کاربری.

برنامه wpa_supplicant گزینه بهتری است. برای فهرستی از درایورهای پشتیبانی شده، پایگاه اینترنتی wpa_supplicant را بخوانید.

تقریبا همه کارت‌ها و درایورها توسط wireless-tools پشتیبانی می‌شوند، نمی‌تواند به اکسس پوینت WPA-only ارتباط یابد. اگر شبکه شما تنها کدکننده WEP را ارایه می‌نماید یا بطور کامل باز است، ممکن است wireless-tools را ترجیح دهید.

هشدار: در این زمان درایور بوسیله لایه‌های پایه‌ائی پشتیبانی نمی‌گردد. این به آن دلیل است که linux-wlan-ng تنظیم‌های پیکربندی مربوط به خودش را دارد که برای هر کسی متفاوت است. گسترش‌دهندگان linux-wlan-ng اینگونه ادعا نموده‌اند که تنظیماتشان بروی wireless-tools را تغییر خواهند داد، بنابر این هرگاه این اتفاق بیافتد ممکن است بتوانید از linux-wlan-ng با لایه‌های پایه‌ائی استفاده نمایید.

۴.ب. WPA درخواست‌کننده

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

Code Listing 2.1: Install wpa_supplicant

# emerge net-wireless/wpa_supplicant

مهم: برای اینکه wpa_supplicant کار کند باید CONFIG_PACKET را بروی کرنل‌تان فعال نمایید. برای اینکه دریابید این گزینه بروی کرنلتان فعال است یا نه تلاش نمایید grep CONFIG_PACKET /usr/src/linux/.config را اجرا نمایید.

نکته: وابسته به پرچمک‌های USE تان، wpa_supplicant می‌تواند در یک رابط کاربری نوشته شده در Qt4 کار کند، که بخوبی توسط KDE درست شده است. برای گرفتن آن echo "net-wireless/wpa_supplicant qt4" >> /etc/portage/package.use را با سطح دسترسی ریشه پیش از امرژ نمودن wpa_supplicant اجرا نمایید.

اکنون بخاطر اینکه wpa_supplicant را بروی wireless-tools ترجیح می‌دهیم /etc/conf.d/net را پیکربندی می‌نماییم (اگر هر دو نصب باشند، wireless-tools پیش فرض است).

Code Listing 3.6: configure /etc/conf.d/net for wpa_supplicant

# Prefer wpa_supplicant over wireless-tools
modules="wpa_supplicant"

# It's important that we tell wpa_supplicant which driver we should
# be using as it's not very good at guessing yet
wpa_supplicant_eth0="-Dmadwifi"

نکته: اگر از درایور host-ap استفاده می‌نمایید، لازم دارید تا پیش از اینکه بتواند از wpa_supplicant بخوبی استفاده نماید، کارت را در حالت Managed mode قرار دهید. می‌توانید برای رسیدن به این از iwconfig_eth0="mode managed" در /etc/conf.d/net استفاده نمایید.

ساده است، اینگونه نیست؟ هرچند، ما هنوز باید خود wpa_supplicant را پیکربندی نماییم که تعیین می‌نماید که اکسس پوینتی که تلاش می‌کنید به آن ارتباط یابید تا چه میزان امنیت دارد. نمونه زیر برگرفته شده و ساده شده /usr/share/doc/wpa_supplicant-<version>/wpa_supplicant.conf.gz است که به wpa_supplicant فرستاده شده.

Code Listing 2.3: An example /etc/wpa_supplicant/wpa_supplicant.conf

# The below line not be changed otherwise we refuse to work
ctrl_interface=/var/run/wpa_supplicant

# Ensure that only root can read the WPA configuration
ctrl_interface_group=0

# Let wpa_supplicant take care of scanning and AP selection
ap_scan=1

# Simple case: WPA-PSK, PSK as an ASCII passphrase, allow all valid ciphers
network={
  ssid="simple"
  psk="very secret passphrase"
  # The higher the priority the sooner we are matched
  priority=5
}

# Same as previous, but request SSID-specific scanning (for APs that reject
# broadcast SSID)
network={
  ssid="second ssid"
  scan_ssid=1
  psk="very secret passphrase"
  priority=2
}

# Only WPA-PSK is used. Any valid cipher combination is accepted
network={
  ssid="example"
  proto=WPA
  key_mgmt=WPA-PSK
  pairwise=CCMP TKIP
  group=CCMP TKIP WEP104 WEP40
  psk=06b4be19da289f475aa46a33cb793029d4ab3db7a23ee92382eb0106c72ac7bb
  priority=2
}

# Plaintext connection (no WPA, no IEEE 802.1X)
network={
  ssid="plaintext-test"
  key_mgmt=NONE
}

# Shared WEP key connection (no WPA, no IEEE 802.1X)
network={
  ssid="static-wep-test"
  key_mgmt=NONE
  # Keys in quotes are ASCII keys
  wep_key0="abcde"
  # Keys specified without quotes are hex keys
  wep_key1=0102030405
  wep_key2="1234567890123"
  wep_tx_keyidx=0
  priority=5
}

# Shared WEP key connection (no WPA, no IEEE 802.1X) using Shared Key
# IEEE 802.11 authentication
network={
  ssid="static-wep-test2"
  key_mgmt=NONE
  wep_key0="abcde"
  wep_key1=0102030405
  wep_key2="1234567890123"
  wep_tx_keyidx=0
  priority=5
  auth_alg=SHARED
}

# IBSS/ad-hoc network with WPA-None/TKIP
network={
  ssid="test adhoc"
  mode=1
  proto=WPA
  key_mgmt=WPA-NONE
  pairwise=NONE
  group=TKIP
  psk="secret passphrase"
}

۴.پ. ابزارهای بیسیم

نخستین تنظیمات و حالت مدیریت

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

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

Code Listing 3.1: Install wireless-tools

# emerge net-wireless/wireless-tools

نکته: هرچند می‌توانید تنظم‌های بیسیم را در /etc/conf.d/wireless نگاهدارید، این راهنما پیشنهاد می‌نماید آنها را در /etc/conf.d/net نگاهداری نمایید.

مهم: لازم خواهید داشت به مستندات نام متغییر دقت نمایید.

Code Listing 3.2: sample iwconfig setup in /etc/conf.d/net

# Prefer iwconfig over wpa_supplicant
modules="iwconfig"

# Configure WEP keys for Access Points called ESSID1 and ESSID2
# You may configure up to 4 WEP keys, but only 1 can be active at
# any time so we supply a default index of [1] to set key [1] and then
# again afterwards to change the active key to [1]
# We do this incase you define other ESSID's to use WEP keys other than 1
#
# Prefixing the key with s: means it's an ASCII key, otherwise a HEX key
#
# enc open specified open security (most secure)
# enc restricted specified restricted security (least secure)
key_ESSID1="[1] s:yourkeyhere key [1] enc open"
key_ESSID2="[1] aaaa-bbbb-cccc-dd key [1] enc restricted"

# The below only work when we scan for available Access Points

# Sometimes more than one Access Point is visible so we need to
# define a preferred order to connect in
preferred_aps="'ESSID1' 'ESSID2'"

یافتن میزان سطح انتخاب نقطه اتصال

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

می‌توانید تصمیم بگیرید آیا ما تنها به نقطه ارتباط اصلی ارتباط بیابیم یا نه. به شکل پیش‌فرض اگر همه چیزهایی که پیکربندی نمودیم اشکال داشت و می‌توانیم به یک نقطه اتصال کدنشده ارتباط یابیم پس امکان پذیر است. این بوسیله متغییر associate_order کنترل می شود. اینجا جدولی است از مقادیر و آنچه آنها را کنترل می نماید.

Value Description
any Default behaviour
preferredonly We will only connect to visible APs in the preferred list
forcepreferred We will forceably connect to APs in the preferred order if they are not found in a scan
forcepreferredonly Do not scan for APs - instead just try to connect to each one in order
forceany Same as forcepreferred + connect to any other available AP

سرانجام ما برخی انتخاب های blacklist_aps و unique_ap را داریم. گزینه blacklist_aps مشابه روش preferred_aps کار می‌نماید. گزینه unique_ap یک مقدار yes یا no است که اگر رابط کاربری بیسیم بتواند با نقطه اتصال مشابه آن ارتباط یابد به عنوان نخستین رابط کاربری استفاده می‌گردد.

Code Listing 3.3: blacklist_aps and unique_ap example

# Sometimes you never want to connect to certain access points
blacklist_aps="'ESSID3' 'ESSID4'"

# If you have more than one wireless card, you can say if you want
# to allow each card to associate with the same Access Point or not
# Values are "yes" and "no"
# Default is "yes"
unique_ap="yes"

Ad-Hoc و حالت تسلط

همچنین اگر می‌خواهید به عنوان یک نود Ad-Hoc فعال باشید اگر هرگونه ارتباط حالت مدیریت نقاط اتصال اشکال داشت هم می‌توانید آنرا انجام دهید.

Code Listing 3.4: fallback to ad-hoc mode

adhoc_essid_eth0="This Adhoc Node"

درباره شبکه‌های Ad-Hoc یا اجرا در حالت رییس برای یک نقطه ارتباط شدن چه؟ اینجا پیکربندی تنها درباره آن وجود دارد! ممکن است نیاز داشته باشید کلیدهای WEP را مانند آنچه در بالا نشان داده شد، مشخص نمایید.

Code Listing 3.5: sample ad-hoc/master configuration

# Set the mode - can be managed (default), ad-hoc or master
# Not all drivers support all modes
mode_eth0="ad-hoc"

# Set the ESSID of the interface
# In managed mode, this forces the interface to try and connect to the
# specified ESSID and nothing else
essid_eth0="This Adhoc Node"

# We use channel 3 if you don't specify one
channel_eth0="9"

مهم: در زیر مستنداتی تحت اللفظی از BSD در مستندات NetBSD یافت می شود. ۱۴ کانال ممکن وجود دارد; ما می‌گوییم که کانال‌های ۱-۱۱ برای شمال آمریکا قانونی هستند، کانال‌های 1-13 برای بیشتر اروپا، کانال‌های ۱۰-۱۳ برای فرانسه و تنها کانال ۱۴ برای ژاپن. اگر مطمئن نیستید خواهشمندیم به مستنداتی که به همراه کارت یا نقطه اتصال شما می‌آید مراجعه نمایید. مطمئن شوید کانالی که انتخاب می‌نمایید مشابه کانالی باشد که نقطه اتصال (یا دیگر کارت‌ها در شبکه ad-hoc ) بروی آن قرار دارد. پیش فرض برای بیشتر کارت‌هایی که در شمال آمریکا و بیشتر اروپا فروخته می‌شوند ۳ است; پیش فرض برای کارت‌هایی که در فرانسه فروخته می شوند ۱۱ است، و پیش فرض برای کارت‌ها در ژاپن ۱۴ است.

ایراد یابی ابزارهای بیسیم

متغییرهای کم دیگری هم هستند که می‌توانند برای راه‌اندازی بیسیم شما به شما کمک نمایند و در هنگام مشکلات محیطی یا ایرادهای درایورها اجرا شوند. اینجا جدولی از چیزهای دیگری است که می‌توانید امتحان کنید.

Variable Default Value Description
iwconfig_eth0 See the iwconfig man page for details on what to send iwconfig
iwpriv_eth0 See the iwpriv man page for details on what to send iwpriv
sleep_scan_eth0 0 The number of seconds to sleep before attempting to scan. This is needed when the driver/firmware needs more time to active before it can be used.
sleep_associate_eth0 5 The number of seconds to wait for the interface to associate with the Access Point before moving onto the next one
associate_test_eth0 MAC Some drivers do not reset the MAC address associated with an invalid one when they lose or attempt association. Some drivers do not reset the quality level when they lose or attempt association. Valid settings are MAC, quality and all.
scan_mode_eth0 Some drivers have to scan in ad-hoc mode, so if scanning fails try setting ad-hoc here
iwpriv_scan_pre_eth0 Sends some iwpriv commands to the interface before scanning. See the iwpriv man page for more details.
iwpriv_scan_post_eth0 Sends some iwpriv commands to the interface after scanning. See the iwpriv man page for more details.

۴.ج. تعریف نمودن پیکربندی شبکه بوسیله ESSID

گاهی، هنگامیکه به ESSID1 ارتباط می یابید به IP ثابتی نیاز دارید و به DHCP در هنگامیکه به ESSID2 ارتباط می یابید. در حقیقت، بیشتر متغییرهای ماژول‌ها می‌توانند بوسیله ESSID تعریف شوند. اینجا توضیح می‌دهیم چگونه آنرا انجام می‌دهیم.

نکته: این تنها هنگامی کار می کند که از درخواست کننده WPA یا ابزارهای بیسیم استفاده می‌نمایید.

مهم: شما نیاز خواهید داشت مستندات نام متغییر را کنکاش نمایید.

Code Listing 4.1: override network settings per ESSID

config_ESSID1="192.168.0.3/24 brd 192.168.0.255"
routes_ESSID1="default via 192.168.0.1"

config_ESSID2="dhcp"
fallback_ESSID2="192.168.3.4/24"
fallback_route_ESSID2="default via 192.168.3.1"

# We can define nameservers and other things too
# NOTE: DHCP will override these unless it's told not too
dns_servers_ESSID1="192.168.0.1 192.168.0.2"
dns_domain_ESSID1="some.domain"
dns_search_domains_ESSID1="search.this.domain search.that.domain"

# You override by the MAC address of the Access Point
# This handy if you goto different locations that have the same ESSID
config_001122334455="dhcp"
dhcpcd_001122334455="-t 10"
dns_servers_001122334455="192.168.0.1 192.168.0.2"

5. Adding Functionality

۵.الف. چنگک‌های تابع استاندارد

چهار تابع می‌توانند در /etc/conf.d/net تعریف گردند که آنها را هدایتگرهای احاطه کننده start/stop فراخوانی می‌نمایند. تابع‌ها ابتدا با نام رابط کاربری‌شان فراخوانده می‌شوند بنابر این یک تابع می‌تواند چندین آداپتر را کنترل نماید.

مقدار برگشتی برای تابع‌های preup() و predown() باید ۰ (به معنی موفق) باشد تا نشان‌دهد پیکربندی یا خروج از پیکربندی می‌تواند ادامه بیابد. اگر preup() مقدار غیر صفری را بازگرداند، آنگاه رابط کاربر پیکربندی بی‌نتیجه می‌ماند. اگر predown() مقدار غیر صفری را بازگرداند، آنگاه رابط کاربری اجازه ادامه خارج سازی از پیکربندی را نخواهد داشت.

اگر مقدارهای بازگشتی برای تابع‌های postup() و postdown() شکست بخورند، از آنجا که چیزی برای انجام دادن وجود ندارد، نادیده انگاشته می شوند.

${IFACE} is set to the interface being brought up/down. ${IFVAR} is ${IFACE} converted to variable name bash allows.

Code Listing 1.1: pre/post up/down function examples in /etc/conf.d/net

preup() {
  # Test for link on the interface prior to bringing it up.  This
  # only works on some network adapters and requires the ethtool
  # package to be installed.
  if ethtool ${IFACE} | grep -q 'Link detected: no'; then
    ewarn "No link on ${IFACE}, aborting configuration"
    return 1
  fi

  # Remember to return 0 on success
  return 0
}

predown() {
  # The default in the script is to test for NFS root and disallow
  # downing interfaces in that case.  Note that if you specify a
  # predown() function you will override that logic.  Here it is, in
  # case you still want it...
  if is_net_fs /; then
    eerror "root filesystem is network mounted -- can't stop ${IFACE}"
    return 1
  fi

  # Remember to return 0 on success
  return 0
}

postup() {
  # This function could be used, for example, to register with a
  # dynamic DNS service.  Another possibility would be to
  # send/receive mail once the interface is brought up.
       return 0
}

postdown() {
  # This function is mostly here for completeness... I haven't
  # thought of anything nifty to do with it yet ;-)
  return 0
}

نکته: برای اطلاعات بیشتر برای نوشتن تابع‌های خودتان، خواهشمندیم /usr/share/doc/openrc-*/net.example.bz2 را بخوانید.

۵.ب. چنگک‌های تابع ابزارهای بیسیم

نکته: این با درخواست‌های WPA کار نخواهد نمود - اما متغییرهای ${ESSID} و ${ESSIDVAR} در تابع postup() وجود دارند.

دو تابع می توانند در /etc/conf.d/net تعریف گردند که تابع‌های هم‌پیوند محیطی را فراخوانی می‌نمایند. تابع‌ها ابتدا با نام رابط کاربری فراخوانی می‌گردند بنابر این یک تابع می‌تواند چندین آداپتر را کنترل نماید.

مقدار برگشتی برای تابع‌ preassociate() باید ۰ (به معنی موفق) باشد تا نشان‌دهد پیکربندی یا خروج از پیکربندی می‌تواند ادامه بیابد. اگر preassociate() مقدار غیر صفری را بازگرداند، آنگاه رابط کاربر پیکربندی بی‌نتیجه می‌ماند.

اگر مقدارهای بازگشتی برای تابع‌ postassociate() شکست بخورد، از آنجا که چیزی برای انجام دادن وجود ندارد، نادیده انگاشته می شود.

گزینه ${ESSID} به ESSID دقیقی که AP شما به آن ارتباط پیدا کرده تنظیم می‌گردد. گزینه ${ESSIDVAR} همان گزینه ${ESSID} است که به نام متغییر مجاز برای bash تبدیل گردیده.

Code Listing 2.1: pre/post association functions in /etc/conf.d/net

preassociate() {
  # The below adds two configuration variables leap_user_ESSID
  # and leap_pass_ESSID. When they are both configured for the ESSID
  # being connected to then we run the CISCO LEAP script

  local user pass
  eval user=\"\$\{leap_user_${ESSIDVAR}\}\"
  eval pass=\"\$\{leap_pass_${ESSIDVAR}\}\"

  if [[ -n ${user} && -n ${pass} ]]; then
    if [[ ! -x /opt/cisco/bin/leapscript ]]; then
      eend "For LEAP support, please emerge net-misc/cisco-aironet-client-utils"
      return 1
    fi
    einfo "Waiting for LEAP Authentication on \"${ESSID//\\\\//}\""
    if /opt/cisco/bin/leapscript ${user} ${pass} | grep -q 'Login incorrect'; then
      ewarn "Login Failed for ${user}"
      return 1
    fi
  fi

  return 0
}

postassociate() {
  # This function is mostly here for completeness... I haven't
  # thought of anything nifty to do with it yet ;-)

  return 0
}

نکته: گزینه‌های ${ESSID} و ${ESSIDVAR} در تابع‌های predown() و postdown() وجود ندارند.

مهم: برای داده‌های بیشتر برای نوشتن تابع‌های خود، خواهشمندیم /usr/share/doc/openrc-*/net.example.bz2 را بخوانید.

۶. مدیریت شبکه

۶.الف. مدیریت شبکه

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

اینجا می‌توانید برخی ابزارهایی را بیابید که به شما برای مدیریت این کار کمک می‌نمایند.

مهم: این سند تنها درباره ifplugd گفتگو می‌نماید، اما جایگزین‌هایی مانند netplug هم وجود دارند. netplug جایگزین‌ سبک وزنی برای ifplugd است، اما آن به کارکرد دقیق درایورهای شبکه موجود بروی کرنل شما وابسته است، و بسیاری از درایورها این‌کار را نمی‌کنند.

۶.ب. ifplugd

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

Code Listing 2.1: Installing ifplugd

# emerge sys-apps/ifplugd

همچنین پیکربندی برای ifplugd بسیار سرراست است. فایل پیکربندی در /etc/conf.d/net نگاه‌داری می گردد. برای جزئیات در متغییرهای موجود man ifplugd را اجرا نمایید. همچنین، برای نمونه‌های بیشتر /usr/share/doc/openrc-*/net.example.bz2 را ببینید.

Code Listing 2.2: Sample ifplug configuration

(Replace eth0 with the interface to be monitored)
ifplugd_eth0="..."

(To monitor a wireless interface)
ifplugd_eth0="--api-mode=wlan"

افزون بر آن در مدیریت ارتباط های چندگانه شبکه، ممکن است بخواهید ابزاری بیافزایید که کار کردن با DNS های چندگانه و پیکربندی‌هایشان را ساده نماید. هنگامی که یک آدرس آی‌پی DHCP دریافت می‌نمایید این کار بسیار ساده است. بسادگی openresolv را امرژ نمایید.

Code Listing 2.3: Installing openresolv

# emerge openresolv

برای دیدن ویژگی‌های بیشتر آن man resolvconf را ببینید.

چاپ کردن

آخرین بروز رسانی صفحه ۳۱ اکتبر ۲۰۱۲

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

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

گرانت گودیر
نویسنده

ریو مارپلز
نویسنده

دانیل رابینز
نویسنده

کریس هوسر
نویسنده

جری آلکساندراتوس
نویسنده

سیمنت کالین
گسترش دهندگان x86 جنتو

تاویس اورماندی
گسترش دهنگان آلفا جنتو

جیسن هابل
گسترش دهندگان AMD64 جنتو

گای مارتین
گسترش دهندگان HPPA جنتو

پیتر ون دن ابیلی
گسترش دهندگان PPC جنتو

جوی کالار
گسترش دهندگان SPARC جنتو

جان پی دیویس
ویرایشگر

پیر هنری جان دات
ویرایشگر

اریک استاکبریج
ویرایشگر

راجیو منگلانی
ویرایشگر

جانگ مینگ سئو
ویرایشگر

استویان ژکوف
ویرایشگر

جرد هودسن
ویرایشگر

کولین موری
ویرایشگر

جرج پائولو
ویرایشگر

کارل آندرسن
ویرایشگر

جان پورتنوی
ویرایشگر

زک گیلبارد
ویرایشگر

جک مورگان
ویرایشگر

بنی چانگ
ویرایشگر

اروین
ویرایشگر

جاشوا کینارد
ویرایشگر

توبیاس شرباوم
ویرایشگر

خاویر نیس
ویرایشگر

جاشوا سدلر
ویرایشگر

جرالد جی نرماندین جونیور
بازبین گر

دانی برخولز
بازبین گر

کن نواک
بازبین گر

لارز ویلر
اعانه دهنده

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

نگهداری مرز شخصی ۲۰۰۱- ۲۰۱۴ برای اساس جنتو. پرسش یا گفته‌اپی دارید؟ با ما تماس بگیرید.