Minimal

The Sign of Success

Our Services

Web Development

Pellentesqu ferentum eiros and varius dolor posuere lectus.

Motion Graphic

Pellentesqu ferentum eiros and varius dolor posuere lectus.

Branding Design

Pellentesqu ferentum eiros and varius dolor posuere lectus.

Furniture Design

Pellentesqu ferentum eiros and varius dolor posuere lectus.

Illustration

Pellentesqu ferentum eiros and varius dolor posuere lectus.

Industrial Design

Pellentesqu ferentum eiros and varius dolor posuere lectus.

About Us

Who We Are

Pellentesque fermentum eros varius dolor mattise et posuere lectus dignissim. Integer porta nunc sit amet felis alqu dssim. Sed viverra, urna ut pretium accumsan.

Stats

Our Achievements

25

SKILL

249

CLIENTS

299

PROJECTS

Creative Studio

Minimal creative studio since 1995

Pellentesque fermentum eros varius dolor mattise et posuere lectus dignissim. Integer porta nunc sit amet felis alqu dssim. Sed viverra, urna uaccumsan and. Vestibulum lacinia, ipsum sit amet laoreet rhoncus, orci nisl gravida tortor, ine molestie nisi mi id lorem. Etiam mi augue.

Passion

Professional

Experienced

می 21, 2023

| بدون دیدگاه

اهداف آزمون متخصص BSD

مبحث 711: نصب BSD و مدیریت نرم افزار

711.1 نصب سیستم عامل BSD(وزن: 3)

وزن3
توضیحاتداوطلب باید بتواند FreeBSD، NetBSD و OpenBSD را نصب کند. علاوه بر این، داوطلبها باید بتوانند یک نصب BSD موجود را ارتقا دهند.



حوزه های دانش کلیدی:

سیستم عامل های FreeBSD، NetBSD و OpenBSD را با استفاده از گزینه های پیش فرض نصب کنید.

سیستم عامل نصب شده FreeBSD، NetBSD یا OpenBSD موجود را ارتقا دهید.

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

در زیر لیستی جزئی از فایل ها، اصطلاحات و ابزارهای استفاده شده برای آزمون متخصص BSD آمده است:

711.2 نرم افزار و مدیریت بسته BSD (وزن: 4)

وزن4
توضیحاتداوطلبان باید قادر به نصب، مدیریت و به روز رسانی نرم افزار بر روی یک سیستم BSD باشند. این شامل استفاده از نرم افزار باینری از پیش کامپایل شده با استفاده از مدیر بسته و همچنین کامپایل نرم افزار از کد منبع و استفاده از پورت ها می شود.

حوزه های دانش کلیدی:

• داوطلبان باید مکانیسم های مدیریت نرم افزار در سیستم های BSD را درک کنند.

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

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

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

در زیر لیستی جزئی از فایل ها، اصطلاحات و ابزارهای استفاده شده برای آزمون متخصص BSD آمده است:

711.3 پیکربندی راه اندازی سیستم BSD (وزن: 3)

وزن3
توضیحاتداوطلبان باید فرآیند بوت BSD را درک کنند و بتوانند سرویسها را مدیریت کنند، از جمله پیکربندی سرویس‌هایی که در زمان راه‌اندازی شروع می‌شوند. علاوه بر این، داوطلبان باید بتوانند یک سیستم BSD را راه اندازی و راه اندازی مجدد کنند.

حوزه های دانش کلیدی:

• فرآیند بوت هر سیستم عامل BSD را درک کنید.

• نقش و اصول یک بوت لودر، از جمله مراحل بوت لودر BSD را درک کنید.

• از اسکریپت های راه اندازی rc برای شروع، توقف، راه اندازی مجدد و بررسی وضعیت سرویس ها استفاده کنید.

• پیکربندی سرویس ها برای شروع در زمان راه اندازی.

• یک سیستم BSD را راه اندازی و راه اندازی مجدد کنید.

• یک سیستم BSD را در حالت تک کاربره قرار دهید.

در زیر لیستی جزئی از فایل ها، اصطلاحات و ابزارهای استفاده شده آمده است:

711.4 پیکربندی سخت افزار (وزن: 2)

وزن2
توضیحاتداوطلبان باید بتوانند سخت افزار یک سیستم را بررسی کنند و نحوه عملکرد BSD با دستگاه های سخت افزاری را پیکربندی کنند. این شامل درک نقش ماژول های هسته و بارگیری و مدیریت ماژول های هسته موجود است.

حوزه های دانش کلیدی:

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

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

• ابزارهای ویژه BSD که می توانند برای عیب یابی و دستکاری دستگاه های PCI، ATA و SCSI استفاده شوند.

• مشاهده، بارگیری و بارگذاری ماژول های هسته.

• در دسترس بودن ماژول های هسته در سیستم عامل های مختلف BSD.

در زیر لیستی جزئی از فایل ها، اصطلاحات و ابزارهای استفاده شده آمده است:

711.5 پارامترهای هسته BSD و سطح امنیت سیستم(وزن: 2)

وزن2
توضیحاتداوطلب باید پارامترهای هسته قابل تنظیم (MIBs) را درک کند و باید بتواند پارامترهای هسته را مشاهده و تنظیم کند. این شامل درک و تنظیم سطوح امن BSD است.

حوزه های دانش کلیدی:

• مفهوم MIB های هسته را درک کنید.

• MIB ها را مشاهده کنید و MIB ها را در زمان اجرا و به طور دائم تغییر دهید.

• مفهوم و محدودیت های سطوح امن BSD را درک کنید.

• درک کنید که در چه شرایطی می توان سطح امن را بالا یا پایین برد.

در زیر لیستی جزئی از فایل ها، اصطلاحات و ابزارهای استفاده شده آمده است:

موضوع 712: دستگاه های ذخیره سازی و سیستم های فایل BSD

712.1 پارتیشن بندی BSD و برچسب های دیسک (وزن: 2)

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

حوزه های دانش کلیدی:

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

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

در زیر لیستی جزئی از فایل ها، اصطلاحات و ابزارهای استفاده شده آمده است:

712.2 ایجاد سیستم های فایل و حفظ یکپارچگی آنها (وزن: 1)

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

حوزه های دانش کلیدی:

• سیستم های فایل UFS و ZFS ایجاد کنید.

• استفاده از فضای دیسک و فضای موجود را تعیین کنید.

• سازگاری یک سیستم فایل UFS یا سلامت یک استخر ZFS را بررسی کنید.

• آگاهی از بکاپهای فوری ZFS.

در زیر لیستی جزئی از فایل ها، اصطلاحات و ابزارهای استفاده شده آمده است:

712.3 کنترل نصب و جداسازی سیستم های فایل (وزن: 2)

وزن2
توضیحاتداوطلبان باید بتوانند فایل سیستم های نصب شده را مشاهده کنند، سیستم های فایل را mount یا unmount کنند و تعیین کنند که کدام فایل سیستم در هنگام بوت نصب می شود.

حوزه های دانش کلیدی:

• تعیین کنید که کدام سیستم فایل محلی در حال حاضر نصب شده است.

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

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

• خطاهای نصب را برطرف کنید.

در زیر لیستی جزئی از فایل ها، اصطلاحات و ابزارهای استفاده شده آمده است:

712.4 مدیریت مجوزها و مالکیت فایل (وزن: 3)

وزن3
توضیحاتداوطلبان باید مالکیت و مجوزهای فایل را درک کنند و بتوانند آن را مدیریت کنند.

حوزه های دانش کلیدی:

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

• مشاهده و تغییر مجوزها با استفاده از سیمبولیک و اکتال.

• بیت SUID، بیت SGID و بیت استیکی را درک کرده و از آن استفاده کنید.

• مجوزهای فایل و دایرکتوری پیش فرض را تنظیم کنید.

• مشاهده و تغییر مالکیت فایل ها و دایرکتوری ها.

در زیر لیستی جزئی از فایل ها، اصطلاحات و ابزارهای استفاده شده آمده است:

712.5 ایجاد و تغییر پیوندهای سخت و نمادین (وزن: 1)

وزن1
توضیحاتداوطلبان باید بتوانند پیوندهای سیمبولیک و سخت را مدیریت کنند.

حوزه های دانش کلیدی:

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

• ایجاد، مشاهده و حذف هر دو نوع پیوند.

در زیر لیستی جزئی از فایل ها، اصطلاحات و ابزارهای استفاده شده آمده است:

712.6 جستجو و پیداکردن فایلها و پوشه ها ی BSD و چیدمانشان (وزن: 2)

وزن2
توضیحاتداوطلبان باید چیدمان دایرکتوری BSD را درک کنند و بتوانند فایل ها را بر اساس معیارهای مختلف جستجو و پیدا کنند.

حوزه های دانش کلیدی:

• چیدمان دایرکتوری مورد استفاده توسط سیستم های BSD را درک کنید.

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

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

• از Find برای مکان یابی فایل ها استفاده کنید، از جمله استفاده از معیارهای جستجو مانند زمان آخرین تغییر، اندازه، نوع، پرچم فایل، UID یا GID، مجوزها یا الگوی متنی.

در زیر لیستی جزئی از فایل ها، اصطلاحات و ابزارهای استفاده شده آمده است:

<

موضوع 713: مدیریت پایه سیستم BSD

713.1 مدیریت حساب های کاربری و گروه ها (وزن: 3)

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

حوزه های دانش کلیدی:

• ایجاد، تغییر و حذف حساب های کاربری و سیستم و همچنین گروه ها.

• مدیریت عضویت در گروه.

• قفل و باز کردن حساب ها.

• رمز عبور کاربر را تغییر دهید.

• ویژگی های کاربر، مانند پوسته پیش فرض را تغییر دهید.

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

در زیر لیستی جزئی از فایل ها، اصطلاحات و ابزارهای استفاده شده آمده است:

713.2 خودکارسازی وظایف مدیریت سیستم با زمانبندی کارها (وزن: 2)

وزن2
توضیحاتداوطلبان باید مکان اسکریپت های سیستم دوره ای را بدانند و بتوانند با استفاده از cron، اجرای خودکار دستورات خود را برنامه ریزی کنند.

حوزه های دانش کلیدی:

• اسکریپت های سیستم دوره ای را درک کنید.

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

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

• تفاوت بین crontab سیستم و crontabs کاربر، از جمله تمام فیلدهای موجود را درک کنید.

• از ویرایشگر crontab برای ایجاد یا ویرایش یک crontab کاربر استفاده کنید.

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

در زیر لیستی جزئی از فایل ها، اصطلاحات و ابزارهای استفاده شده آمده است:

713.3 حفظ زمان سیستم (وزن: 1)

وزن1
توضیحاتداوطلبان باید بتوانند زمان سیستم را تنظیم کنند و از NTP برای همگام سازی زمان استفاده کنند.

حوزه های دانش کلیدی:

• مفاهیم NTP را درک کنید.

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

در زیر لیستی جزئی از فایل ها، اصطلاحات و ابزارهای استفاده شده آمده است:

713.4 System Logging (وزن: 2)

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

حوزه های دانش کلیدی:

• لاگ سیستم و محل فایل های لاگ را درک کنید.

• مشاهده فایل های لاگ، از جمله لاگهای در حال ثبت ویا فشرده و آرشیو شده.

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

در زیر لیستی جزئی از فایل ها، اصطلاحات و ابزارهای استفاده شده آمده است:

713.5 اصول اولیه سیستم ارسال نامه الکترونیکی (MTA) (وزن: 1)

وزن1
توضیحاتداوطلبان باید نقش یک سیستم ارسال نامه را درک کنند و نام مستعار و ارسال نامه را در MTA محلی خود و همچنین ایمیل های خروجی را با استفاده از یک رله پیکربندی کنند.

حوزه های دانش کلیدی:

• نقش عامل انتقال نامه (MTA) را درک کنید.

• تعیین کنید که کدام MTA در سیستم استفاده می شود.

• یک نام مستعار ایمیل برای Sendmail و Postfix ایجاد کنید.

• Sendmail و Postfix را برای استفاده از یک رله برای نامه های خروجی پیکربندی کنید.

• صف ایمیل را مشاهده و پاک کنید.

• تفاوت بین نوع فرمت فایل مقصد ایمیل mbox و maildir را درک کنید.

در زیر لیستی جزئی از فایل ها، اصطلاحات و ابزارهای استفاده شده آمده است:

713.6 مدیریت جابهای چاپ و چاپ (وزن: 1)

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

حوزه های دانش کلیدی:

• سیستم چاپ BSD lpr را بشناسید.

• معنی ورودی های /etc/printcap را درک کنید.

• صف چاپ را مشاهده کنید و کارهای داخل صف را دستکاری کنید.

در زیر لیستی جزئی از فایل ها، اصطلاحات و ابزارهای استفاده شده آمده است:

713.7 مدیریت جلسات کاربر (وزن: 1)

وزن1
توضیحاتداوطلبان باید بتوانند شناسایی کنند که کدام کاربران در حال حاضر به سیستم وارد شده اند و تاریخچه ورود کاربران را بررسی کنند.

حوزه های دانش کلیدی:

• تعیین کنید چه کسانی در حال حاضر در سیستم هستند.

• آخرین باری که کاربر در سیستم بوده است را تعیین کنید.

در زیر لیستی جزئی از فایل ها، اصطلاحات و ابزارهای استفاده شده آمده است:

مبحث 714: مدیریت پایه شبکه BSD

714.1 مبانی پروتکل های اینترنتی (وزن: 2)

وزن2
توضیحاتداوطلبان باید پروتکل های مهم شبکه و همچنین آدرس دهی و زیرشبکه اولیه IPv4 و IPv6 را بدانند.

حوزه های دانش کلیدی:

• آدرس دهی و زیرشبکه IPv4 را درک کنید.

• آدرس دهی و زیرشبکه اولیه IPv6 را درک کنید.

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

• آدرس های میزبان معتبر و همچنین آدرس زیرشبکه برای IPv4و آدرس انتشار یک شبکه معین را تعیین کنید.

• ویژگی های کلیدی TCP، UDP و ICMP را درک کنید.

در زیر لیستی جزئی از فایل ها، اصطلاحات و ابزارهای استفاده شده آمده است:

714.2 پیکربندی اصلی شبکه (وزن: 3)

وزن3
توضیحاتداوطلبان باید بتوانند تنظیمات IP رابط های شبکه را پیکربندی کنند.

حوزه های دانش کلیدی:

• تنظیمات IP را به صورت موقت و دائم پیکربندی کنید.

• درک اساسی از اجاره نامه های DHCP را نشان دهید.

• تنظیمات ثبت شده از DHCP فعلی را مشاهده کنید، آن را آزاد کنید و تنظیمات را تمدید کنید.

• یک سرویس گیرنده DHCP را برای لغو تنظیمات دریافت شده از یک سرور DHCP پیکربندی کنید.

• درک و پیکربندی نام مستعار رابط.

• پیکربندی خودکار IPv6 را با استفاده از SLAAC و DHCPv6 درک کنید.

در زیر لیستی جزئی از فایل ها، اصطلاحات و ابزارهای استفاده شده آمده است:

714.3 عیب یابی پایه شبکه (وزن: 3)

وزن3
توضیحاتداوطلبان باید بتوانند مشکلات ساده اتصال شبکه را تجزیه و تحلیل و حل کنند.

حوزه های دانش کلیدی:

• پیکربندی IP فعلی یک سیستم را تعیین کنید.

• اتصال IPv4 و IPv6 را عیب یابی کنید.

• تعیین کنید کدام پورت های TCP یا UDP روی یک سیستم باز هستند.

• در دسترس بودن سرویس TCP/IP را بررسی کنید.

در زیر لیستی جزئی از فایل ها، اصطلاحات و ابزارهای استفاده شده آمده است:

714.4 پیکربندی DNS سمت مشتری (وزن: 2)

وزن2
توضیحاتداوطلبان باید اصول DNS را بدانند و بتوانند وضوح نام میزبان را پیکربندی کنند.

حوزه های دانش کلیدی:

• تئوری اساسی DNS، از جمله انواع سوابق منابع، جستجوهای معکوس، و انواع سرورهای DNS را درک کنید.

• یک سرور DNS را برای نوع خاصی از رکورد جستجو کنید.

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

• عیب یابی مشکلات DNS.

در زیر لیستی جزئی از فایل ها، اصطلاحات و ابزارهای استفاده شده آمده است:

مبحث 715: مهارت های پایه یونیکس

715.1 از Shell و خط فرمان استفاده کنید (وزن: 2)

وزن2
توضیحاتداوطلبان باید بتوانند از یک شل استفاده کرده و آن را سفارشی کنند و تفاوت بین شل های مختلف ارائه شده در سیستم BSD را درک کنند. داوطلبان همچنین باید بتوانند از manpages استفاده کنند.

حوزه های دانش کلیدی:

• تفاوت بین شل های استاندارد در سیستم های BSD را درک کنید.

• در استفاده از شل های sh، csh یا tcsh راحت باشید.

• مشاهده و تغییر متغیرهای محیطی، به صورت موقت و دائم.

• ورودی و خروجی را به/از فایل ها و دستورات هدایت کنید.

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

• بخش های manpage را درک کنید و از manpages استفاده کنید.

• رفتار شل را هم به طور موقت و هم به طور دائم تغییر دهید، از جمله جلوگیری از هنگ کردن فایل های موجود توسط شل و استفاده از جایگزینی هیستوری.

• نام مستعار دستور را تنظیم کنید و به طور موقت نام مستعار دستور را دور بزنید.

• یک فرمان را چندین بار با آرگومان های مختلف برای هر فراخوانی اجرا کنید.

در زیر لیستی جزئی از فایل ها، اصطلاحات و ابزارهای استفاده شده آمده است:

715.2 مدیریت فایل اولیه را انجام دهید(وزن: 3)

وزن3
توضیحاتداوطلبان باید بتوانند فایل‌ها را در سیستم BSD مدیریت کنند. این شامل شناسایی نوع فایل ها و ایجاد آرشیو فایل ها می شود.

حوزه های دانش کلیدی:

• کپی، انتقال، و حذف فایل ها و دایرکتوری ها.

• چندین فایل و دایرکتوری را به صورت بازگشتی کپی کنید.

• فایل ها و دایرکتوری ها را به صورت بازگشتی حذف کنید.

• تعیین کنید که یک فایل یک فایل باینری، متنی یا داده ای است.

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

در زیر لیستی جزئی از فایل ها، اصطلاحات و ابزارهای استفاده شده آمده است:

715.3 ایجاد، نظارت و کشتن پردازشها(وزن: 3)

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

حوزه های دانش کلیدی:

• بار کاری سیستم را در 1، 5 و 15 دقیقه آخر نظارت کنید.

• نظارت بر سیستم حافظه مجازی، از جمله نظارت بر مبادله و فعالیت صفحه بندی.

• فرآیندهای فعال را مشاهده کنید و مصرف بی رویه CPU را تشخیص دهید.

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

• تفاوت بین SIGTERM و SIGKILL را درک کنید.

• یک سیگنال به یک فرآیند فعال ارسال کنید.

• پایان دادن به یک فرآیند یا تغییر اولویت آن.

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

در زیر لیستی جزئی از فایل ها، اصطلاحات و ابزارهای استفاده شده آمده است:

715.4 از عبارات با قاعده ساده استفاده کنید(وزن: 2)

وزن2
توضیحاتکاندیداها باید بتوانند از عبارات منظم ساده و حروف عام برای جستجوی متن در فایل ها و جریان ها استفاده کنند.

حوزه های دانش کلیدی:

• الگوهای متن را هنگام تجزیه و تحلیل خروجی برنامه یا جستجو در میان فایل ها مطابقت دهید.

• محدوده ای از کاراکترها را در [] مشخص کنید، یک کلمه را مشخص کنید، از عملگر تکرار استفاده کنید، یک متاکاراکتر را تشیخیص دهید و یک فیلتر معکوس ایجاد کنید.

در زیر لیستی جزئی از فایل ها، اصطلاحات و ابزارهای استفاده شده آمده است:

715.5 عملیات اصلی ویرایش فایل را انجام دهید(وزن: 2)

وزن2
توضیحاتداوطلبان باید بتوانند از ویرایشگر vi برای ویرایش اولیه فایل استفاده کنند.

حوزه های دانش کلیدی:

• فایل ها را با استفاده از ویرایشگر vi ویرایش کنید.

• یک فایل فقط خواندنی را تغییر دهید یا بدون ذخیره هیچ گونه ویرایشی در فایل از vi خارج شوید.

در زیر لیستی جزئی از فایل ها، اصطلاحات و ابزارهای استفاده شده آمده است:

715.6 اسکریپت های ساده را سفارشی کنید یا بنویسید(وزن: 2)

وزن2
توضیحاتداوطلب باید مفهوم شل اسکریپت نویسی را درک کند و بتواند اسکریپت های ساده Bourne shell بنویسد.

حوزه های دانش کلیدی:

• مزایا و معایب استفاده از اسکریپت Bourne shell را به جای اسکریپت csh یا bash shell درک کنید.

• مجوزها، shebang، یادداشت و اسکریپت را درک کنید.

• از پارامترهای موقعیتی، پارامترهای خاص و حروف عام استفاده کنید.

• از نقل قول و بک اسلش استفاده کنید.

• از شرایط و حلقه ها استفاده کنید.

• عیب یابی یک اسکریپت.

در زیر لیستی جزئی از فایل ها، اصطلاحات و ابزارهای استفاده شده آمده است:

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

از آنجایی که تعداد سیستمعاملهای رسمی خانواده بی اس دی ۴ سیستم عامل (FreeBSD,NetBSD,OpenBSD,DragonflyBSD)


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

لذا گروهی به عنوان ‌BSDCG گروه گواهینامه BSD با مدیریت خانم (درو لیوینگ) تاسیس شد .این گروه گواهینامه را به دو بخش سطع تازه کار(BSDA) و حرفه ای (BSDP) تقسیم بندی و اقدام به برگزاری آزمون نمود.

درباره گروه صدور گواهینامه BSD (BSDCG)

BSD Certification Group (BSDCG) که در سال 2005 تأسیس شد، یک سازمان غیرانتفاعی است که متعهد به ایجاد و حفظ یک استاندارد گواهینامه جهانی برای مدیریت سیستم در سیستم عامل های مبتنی بر BSD است. BSDCG با جامعه BSD و sysadmin به منظور ارائه یک گواهینامه عملی و مرتبط کار می کند.

اما در ادامه: گروه BSDCG با گروه LPI به توافق همکاری رسیدند ،


همه چیز در باره مدارک BSD: توافقی که طی آن گواهینامه BSD بر اساس مباحث مطرح شده توسط BSDCG از طرف LPI صادر میشود.

موسسه (LPI)، بزرگترین سازمان صدور گواهینامه در جهان برای متخصصان لینوکس و متن باز، و گروه گواهی BSD (BSDCG)، سازمانی که استاندارد صدور گواهینامه را برای مدیران سیستم BSD تعیین می کند، ادغام BSDCG با LPI را اعلام کرده اند. این مشارکت شامل ایجاد یک کمیته مشورتی BSD است که با LPI و جامعه BSD همکاری خواهد کرد.

جی. متیو رایس، مدیر اجرایی LPI، گفت: «همکاری جدید برای دو طرف سودمند است. به گفته درو لاوین، رئیس BSDCG، “استفاده از BSD Unix با متخصصان BSD درگیر در هر صنعت به سرعت و در سطح جهانی در حال رشد است. پیوستن به با LPI به ما کمک می‌کند تا ارائه امتحان خود را در عین حفظ کیفیت برنامه صدور گواهینامه افزایش دهیم.”

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

درباره موسسه حرفه ای لینوکس (LPI)

حدود 20 سال است که ، LPI استاندارد جهانی گواهینامه و سازمان پشتیبانی حرفه ای برای متخصصان متن باز است. با بیش از 500000 آزمون ارائه شده، این اولین و بزرگترین مرجع صدور گواهینامه لینوکس و منبع باز در جهان است. LPI دارای متخصصین معتبر در بیش از 180 کشور است، امتحانات را به 9 زبان ارائه می دهد و بیش از 400 شریک آموزشی دارد.

حالا بر اساس استاندارد های LPI تغییراتی در ساختار مدارک BSD داده شده در ذیل توضیحات تکمیلی ارائه میگردد:

نکته مهم اینکه سیستم عامل DragonflyBSD از فهرست سیستم عاملهای این مدرک حذف شده .

گواهینامه متخصص BSD موسسه LPI سطح مقدماتی

گواهینامه تخصصی BSD بخشی از برنامه گواهینامه فناوری باز موسسه (LPI) است.

همه چیز در باره مدارک BSD: این آزمون بر مهارت های عملی مورد نیاز برای کار با موفقیت در محیط FreeBSD، NetBSD یا OpenBSD تمرکز دارد و دانش و مهارت های مورد نیاز برای مدیریت سیستم عامل های BSD را آزمایش می کند.

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

نسخه فعلی: 1.0 (کد امتحانی 702-100)

کد: 702-100

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

شرایط: قبولی در آزمون تخصصی BSD. آزمون 90 دقیقه ای شامل 60 سوال چند گزینه ای و جای خالی است.

مدت اعتبار: 5 سال

هزینه: برای قیمت آزمون در کشور خود اینجا را کلیک کنید.

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

زبان‌های امتحانات آنلاین از طریق OnVUE در دسترس هستند: انگلیسی

برای دریافت گواهینامه تخصصی BSD، داوطلب باید:

آشنایی با سیستم عامل های FreeBSD، NetBSD و OpenBSD
قادر به نصب، مدیریت و پیکربندی سیستم عامل BSD باشد
قادر به پیکربندی سخت افزار، تنظیم پارامترهای هسته و مدیریت امنیت سیستم باشد
دانش اولیه در مدیریت سیستم BSD، برنامه ریزی و اتوماسیون سیستم داشته باشد
دانش اولیه مدیریت شبکه را داشته باشد

سرفصل های آزمون BSD Specialistمشاغل اصلی برای متخصصان BSD
1- نصب BSD و مدیریت نرم افزارها
2- دستگاه های ذخیره سازی و سیستم های فایل BSD
3- مدیریت پایه سیستم BSD
4- مدیریت پایه شبکه BSD
5- مهارت های پایه یونیکس










مدیران سیستم

مدیر سیستم FreeBSD
مدیر سیستم NetBSD
مدیر سیستم OpenBSD
مدیر یونیکس
مدیر سرور
مدیر فناوری اطلاعات

مهندسان

کارشناس سیستم های امنیتی
مهندس شبکه
مهندس سیستم یونیکس
مهندس DevOps
مهندس قابلیت اطمینان سایت (SRE)
مفاد آزمون متخصص BSD

نسخه جدیدی از جعبه ابزار امنیتی IrBSD انتشار یافت .

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

 

دریافت نسخه x86-64 برای نصب بر روی فلش مموری

راهنمای نصب :

BSD: gunzip -c /path/to/irBSD.img.gz | sudo dd of=/dev/sd0 bs=1m
Linux: gunzip -c /path/to/irBSD.img.gz | sudo dd of=/dev/sda bs=1M

Username: irBSD
Password: irbsd.net

راهنمای کاربر

وب سایت 

Copyright © ۱۹۹۴-۲۰۱۸ The NetBSD Foundation, Inc. ALL RIGHTS RESERVED.
NetBSD® is a registered trademark of The NetBSD Foundation, Inc.

فیلمهای آموزشی

بحث و معرفی  M0n0wall فایروال و یوتی ام بر مبنای فری بی اس دی :عبدالرحمن همائی ، محمد عابدینی و محمد دشتی زاده(نیک خصال)


 

کنفرانس ۳ نفره بحث پیرامون فایروالها و معرفی PF فایروال OPEN (BSD) عبدالرحمن همائی ، محمد عابدینی و محمد دشتی زاده(نیک خصال)

 
 
 
کنفرانس ۳ نفره بحث پیرامون سیستم عاملهای خانواده بی اس دی (BSD) عبدالرحمن همائی ، محمد عابدینی و محمد دشتی زاده(نیک خصال)
 

آموزش نصب سیستم عامل NetBSD بهمراه محیط گرافیکی و ابزار های مربوطه

 

آموزش نصب سیستم عامل FreeBSD بهمراه محیط گرافیکی و ابزار های مربوطه

 

آموزش نصب سیستم عامل OpenBSD بهمراه محیط گرافیکی و ابزار های مربوطه

[wpforms id=”1740″]

قابلیت Trunking در OpenBSD

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

شما می توانید کارت شبکه را در قالب یک لینک بزرگتر قرار دهید و ترافیک را بین آنها تقسیم کنید.OpenBSD  از ۵ روش متفاوت برای توزیع ترافیک در بین کارتهای شبکه تقسیم کند که البته در همه محیط ها این پنچ روش قابل استفاده نیست. برای مشاهده لیست کامل از این پروتکلها به صفحه man مربوط به trunk(4) مراجعه کنید. در محیط واقعی سه روش Link Aggregation Control Protocol (LACP) ، roundrobin و failover استفاده می شود. روش LACP یک استانداردی است تجمیع کردن چند لینک در یک لینک، در این روش پهنای باند کارت شبکه مجازی شما می شود مجموع پهنای باند همه کارت های شبکه فیزیکی.  این روش شما را در برابر خطاهای پیش آمده شما را بسیار کمک می کند ولی شرط راه اندازی ان این است که سویچ شما از این قالیت پشتیبانی کند.

در متد roundrobin سیستم عامل OpenBSD با استفاده از مدل roundrobin اقدام به ارسال بسته ها در بین کارتهای شبکه می کند. این قابلیت نیازی به تنظیم در سیوچ شما ندارد فقط باید کارتهای شبکه شما در یک vlan قرار داشته باشند.

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

پیکربندی Trunk در OpenBSD:

در یک مثال ساده قصد دارید دو کارت شبکه em0  و em1  را با متد failover در یک trunk به نام trunk0 ایجاد کنیم. به این نکته هم توجه کنید که پیکربندی کارت های شبکه در بخش سخت افزاری  را انجام داده اید فقط در این بخش باید trunk رو ایجاد کنید و بعد به آن آدرس IP اضافه کنید. در بخش اول شما دو کارت شبکه را در حالت up قرار دهید با فرمان های زیر:

# ifconfig em0 up
# ifconfig em1 up

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

# ifconfig trunk0 trunkproto failover
# ifconfig trunk0 trunkport em0
# ifconfig trunk0 trunkport em1

حال شما باید با استفاده از فرمان ifconfig به کارت شبکه trunk0 ادرس ip دهید به صورت زیر:

# ifconfig trunk0 192.0.2.8 netmask 255.255.255.0
# route add default 192.0.2.1

قرار دادن تنطیمات trunk در حالت دایمی:

همانطوری که می دانید زمانی که شما از فرمان ifconfig استفاده می کنید این تنظیمات دایمی نیستن و بعد از راه اندازی سیستم از بین می روند. برای دایمی کردن این تنظیمات شما باید به فایل های مربوط به هر کارت شبکه مراجعه کنید و یک فایل برای کارت شبکه trunk0 ایجاد کنید. همانطوری که می دانید فایل های مذکور در زیر شاخه etc به صورت hostname.interfacename قرار دارند مثلا برای کارت شبکه em0 به فایلی به نام hostname.em0 نیاز دارید. برای اجرای بخش اول فرمانها کافیست فقط کلمه up را در دو فایل مربوط به کارت های شبکه قرار دهید.

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

trunkproto failover

trunkport em0

trunkport em1

netmask 255.255.255.0

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

چندید آدرس IP برروی یک کارت شبکه در OpenBSD

 

در OpenBSD یک کارت شبکه می تواند به چندین و چند درخواست و آدرس Ip پاسخ دهد، این امر از آن جهت مهم است که شاید شما نیاز به سروری داشته باشید که شامل صدها حوزه اسمی باشد و برای هریک از این حوزه ها شما نیاز به یک آدرس IP دارید.

برای اضافه کردن ادرس Ip های جدید به یک کارت شبکه باید از ادرس های alias، با استفاده از این نوع از آدرس های IP شما به کارت شبکه خود این امکان را می دهید که به درخواستهار جدید مربوط به آدرس جدید را هم پاسخ دهد. برای اضافه کردن این نوع آدرس شما باید از فرمان ifconfig با کلمه کلیدی alias بعد از نام کارت شبکه خود استفاده کنید. فقط به این نکته توجه کنید که بخش شبکه یا همان netmask همه آدرس های شما ۲۵۵٫۲۵۵٫۲۵۵٫۲۵۵ یا همان ۳۲/  باشد. در ادامه یک مثال در این مورد را مشاهده می کنید:

# ifconfig fxp0 alias 192.0.2.230/32
# ifconfig fxp0
 inet 192.0.2.226 netmask 0xfffffff0 broadcast 192.0.2.239
  inet 192.0.2.230 netmask 0xffffffff

 

در این مثال آدرس IP اصلی کارت شبکه fxp0 192.0.2.230 و آدرس alias آن ۱۹۲٫۰٫۲٫۲۳۹  است. به این نکته هم توجه کنید که همه ارتباط های خروجی از سمت سرور شما با آدرس اصلی برروی کارت شبکه شما انجام می شود. برای مثال شما ۱۰۰عدد آدرس مجازی دارید و شما از سرور خود یک نوع ارتباط  ssh برقرار می کنید، این ارتباط با آدرس IP اصلی شما انجام می شود.

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

 

پاک کردن یک آدرس alias:

 

برای پاک کردن یک آدرس alias شما باید از فرمان ifconfig با کلمه کلیدی delete استفاده کنید مثل فرمان زیر:

# ifconfig fxp0 delete 192.0.2.230

 

اعمال تنظیمات دایمی آدرس alias:

 

همانطوی که می دانید و در مقاله پیکربندی شبکه در OpenBSD برای شما توضیح داده شده در OpenBSD به ازای هر کارت شبکه یک فایل به صورت hostname.networkcard در زیر شاخه etc قرار دارد، برای مثال برای کارت شبکه fxp0 یک فایل به صورت زیر در شاخه مورد نظر قرار دارد /etc/hostname.fxp0 شما برای اعمال هر تغییر دایمی که در زمان راه اندازی سیستم اعمال شود نیاز به ویرایش این فایل دارید. برای اضافه کردن آدرس مجازی ابتدا باید آدرس اصلی و بعد آدرس مجازی را به صورت زیر در این فایل قرار دهید:

$ cat /etc/hostname.fxp0
inet 192.0.2.226 255.255.255.0
inet alias 192.0.2.230 255.255.255.255
inet alias 192.0.2.231 255.255.255.255

mount کردن flash در OpenBSD

یکی از مباحث مورد نیاز استفاده از فلش در OpenBSD است. این قابلیت با شبیه سازی از راه اندازی SCSI در OpenBSD انجام می شود. برای انجام این امر شما باید دسترسی کاربر root داشته باشید. این امر در چند بخش به صورت زیر انجام می شود:

اولین قدم پیدا کردن نام flash:

بعد از اتصال فلش به درگاه مربوطه فرمان sysctl را به روش زیر اجرا کنید تا نام دیسک فلش متصل شده را پیدا کنید(البته در ورژن جدید از هسته OpenBSD بعد از اتصال نام فلش توسط هسته نمایش داده می شود):

# sysctl hw.disknames

خروجی این فرمان به صورت زیر است:

hw.disknames=wd0:3af96a8b7d621ab2,cd0:,sd0:

اخرین نام یعنی sd0 نام فلش اضافه شده به سیستم است برای دریافت اطلاعات بیشتر از فرمان dmesg استفاده کنید به صورت زیر:

# dmesg | grep sd0

در این فرمان با استفاده از فرمان grep بخش هایی که با sd0 شروع می شود را نمایش می دهد به صورت زیر:

sd0 at scsibus1 targ 1 lun 0:  SCSI2 0/direct removable

sd0: 1956MB, 512 bytes/sector, 4005888 sectors

sd0 detached

sd0 at scsibus1 targ 1 lun 0:  SCSI2 0/direct removable

sd0: 1956MB, 512 bytes/sector, 4005888 sectors

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

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

# disklabel sd0

خروجی این فرمان شامل اطلاعات زیر است:

# /dev/rsd0c:

type: vnd

disk: vnd device

label: fictitious

duid: 97d41b01a9d85387

flags:

bytes/sector: 512

sectors/track: 100

tracks/cylinder: 1

sectors/cylinder: 100

cylinders: 5120

total sectors: 4005888

boundstart: 0

boundend: 512000

drivedata: 0

۱۶ partitions:

#                size           offset  fstype [fsize bsize  cpg]

  a:           ۵۱۲۰۰۰                ۰  ۴٫۲BSD   ۲۰۴۸ ۱۶۳۸۴    ۱

  c:          ۴۰۰۵۸۸۸                ۰  unused

#

قدم دوم ایجاد شاخه و استفاده از فرمان mount  :

به صورت سنتی شاخه به نام mnt در زیر / وجود داره که شما می توانید دیسک های اضافی مثل فلش، cd و غیره را در زیر شاخه های انتخابی خود به استفاده mount کنید برای این منظور و مرتب سازی برای هر دیسک یک شاخه ایجاد کنید به صورت زیر، این شاخه انتخابی است .

# mkdir /mnt/flash1

حال در مرحله آخر با استفاده از فرمان mount پارتیشن i فلش را به این شاخه mount کنید:

# mount /dev/sd0i / mnt/flash1

حال شما بعد از وارد شدن به این شاخه می توانید با استفاده از فرمان ls محتوای شاخه را مشاهده کنید.

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

# umount /mnt/ flash1

برنامه syslog در OpenBSD

یکی از بخش های مهم هر سیستمی بخش گزارشگیری است که در حقیقت ثبت وقایع اتفاق افتاده در زمانی هست که مدیری سیستم به سیستم وارد نشده و در روز می تواند با خواندن این گزارشات از وضعیت سرور و سیستم خود آگاه شود. قابلیت گزارشگیری در سیستم های مبتنی بر یونیکس با استفاده از برنامه syslog انجام می شود و در محل خاصی ذخیره می شود. در برنامه syslog دو متغییر وجود دارد برای تهیه کردن گزارش، Facility  و priority. همچنین این برنامه قابلیت ارسال کردن گزارشات خود را به یک سرور اصلی در شبکه را دارا می باشد. این برنامه با استفاده از دو قابلیت facility  و priority برنامه هایی را که به آن اعلام می شود را گزارشگیری می کند. در ادامه در مورد این دو قابلیت توضیحاتی داده می شود.

بخش facility (امکانات)

Facility در حقیقت منبع یک برنامه را مشخص می کند، در اصل هر برنامه ای که به یک فایل گزارش جداگانه نیاز دارد باید از facility استفاده کند. هر برنامه یا پروتکلی مثل ftp mail و … facility جداگانه ای را به خود اختصاص داند. در این برنامه یک سری facility های پیش فرض به صورت زیر وجود دارد:

auth     اطلاعاتی در مورد ورود کاربران به سیستم را ذخیره می کند، این امکان زمانی که کاربر به سیستم وارد شود یا از su استفاده کند فعال می شود.

Cron     پیامی هایی که از برنامه cron دریافت می شود با استفاده از این facility  قابل گزارشگیری است.

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

Ker       مربوط می شود به بخش هسته سیستم عامل.

Mail      پیام هایی که از سرور mail راه اندازی می شود با استفاده از این facility  قابل گزارشگری است.

Syslog   پیام هایی که از سرور syslog راه اندازی می شود با استفاده از این facility  قابل گزارشگری است.

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

بخش priority  (اولویت):

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

emerg:  گزارشات اضطراری سیستم. این پیام ها برروی ترمینال براینکه حیاتی و اضطراری هستند نمایش داده می شود. شما با استفاده از این اولویت پیغام های اضطراری هر سرویسی را گزارش گیری کنید.

critical : با این اولویت مشکلات بحرابی برای شما ذخیره می شود مثل از دست رفتن یک هارد دیسک.

alert:  این الویت به شما خبر می دهد مه سرویس در حال کار است ولی شاید در آینده نزدیک دچار خطا و مشکل شود.

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

warning: پیام های متفرقه در این بخش قرار می گیرند. این پیغام ها باعث توقف هیچ سرویسی برای سیستم شما نمی شود.

notic: اطلاعات مهم در مورد deamon ها مثل راه اندازی و خاموش شدن سرویس مورد نظر را برای شما ذخیره می کند.

info: اطلاعات پایه ای در این بخش نمایش و ذخیره می شوند. بیشتر برای سرویس هایی که اطلاعات منتقل می کنند استفاده می شودمثل پیغام های ارسال شده توسط mail server یا پرسجو در Web سرور.

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

فایل syslog.conf :

برنامه syslog پیغام هایی را دریافت می کنند که الویت و امکانات ان در فایل syslog.conf ذخیره شده است. این فایل به دو بخش تقسیم می شود، بخش اول نوع log را مشخص می کند که شامل الویت و امکانات است و بخش دوم محلی را مشخص می کند که پیغام ها در آنجا دخیره شود. یک مثال در زیر مشاهده می کنید:

daemon.info                      /var/log/daemon

شما می توانید در این بخش از قواعد ستاره (wildcards) به صورت زیر استفاده کنید:

mail.*                                    /var/log/mail

با استفاده از این خط برای سرویس میل تمام پیغام های خطا در فایل /var/log/mail ذخیره می شود. با استفاده از این قابلیت شما می توانید با استفاده از خط زیر همه همه پیغام ها را در فایل مورد نظر ذخیره کنید:

*.*                                         /var/log/all

شما می توانید با استفاده از ; بعضی از قابلیت ها را جدا کنید، مثل خط زیر که همه پیغام ها را ذخیره کن بجز authpriv.none :

*.*;authpriv.none           /var/log/all

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

auth,daemon,syslog,user.info   /var/log/info

اضافه کردن برنامه خواص به لیست:

در بعضی از موارد شما دوست دارید برنامه خاصی که در لیست امکانات نیست را گزارشگیری کنید، برای این کار شما باید اسم برنامه را در فایل syslog.conf اضافه کنید در قالب دو خط یک خط نام برنامه و خط بعدی نوع لاگ و محل لایگ مثل خط زیر:

!sudo

*.*         /var/log/sudo

با این خط همه گزارشاتی که برنامه sudo از خود ارسال می کند در فایل مورد نظر شما ذخیره می شود.

در بعضی از موارد شما قصد دارید که برنامه شما فقط در فایل مورد نظر فایل ذخیره کند نه در جای دیگری برای این منظور از دو علامت !! قبل از نام برنامه استفاده کنید به صورت زیر:

!!sudo

*.*         /var/log/sudo

!*

در خط پایانی هم باید از !* استفاده کنید.

سرویس نام دامنه (DNS) ان اس دی (NSD)

معرفی:

در این مقاله میخواهیم سرویس NSD را که به تازگی به عنوان DNS پیشفرض OpenBSD معرفی شده است را بررسی و نحوه راه اندازی آن را شرح دهیم.

این سرویس یک سرویس معتبر DNS است که هم primary  و هم secondary را پشتیبانی میکند و تنظیمات آن بسیار شبیه به سرویس bind است.

فایل های مربوط به تنظیمات این سرویس در مسیر /var/nsd قرار دارد و در واقع این سرویس موقع اجرا برای مسائل امنیتی به این مسیر change root میکند. در این مسیر دو دایرکتوری مهم به نام های  etc و zone وجود دارد در اولی فایل های تنظیمات سرویس nsd  قرار دارد و در دومی فایل های مربوط به zoneهای primary و secondary .

آموزش:

برای اینکه بتوانیم از این سرویس استفاده کنیم ابتدا باید یک zone برای آن تعریف کنیم به همین منظور به مسیر /var/nsd/zone/primary میرویم و مانند نمونه زیر یک فایل میسازیم.

# vi netbsd.ir.zone

$ORIGIN netbsd.ir.

$TTL 86400

@       ۳۶۰۰    SOA     ns.netbsd.ir. admin.netbsd.ir. (

                        ۲۰۱۶۰۱۲۸۲۰      ; serial

                        ۱۸۰۰            ; refresh

                        ۷۲۰۰            ; retry

                        ۱۲۰۹۶۰۰         ; expire

                        ۳۶۰۰ )          ; negative

#NS

Netbsd.ir.               IN     NS      ns.netbsd.ir.

#MX

Netbsd.ir.                IN   MX      ۰ ftp.netbsd.ir.

ns           IN    A       ۱۹۲٫۱۶۸٫۲۰٫۲۵

mail        IN   A       ۱۹۲٫۱۶۸٫۲۰٫۱۰۰

توجه داشته باسید که شما باید محتویات بالا را بسته به شبکه خود تنظیم کرده و در فایل netbsd.ir.zone قرار دهید و دخیره کنید.

بعد از انجام کار بالا و ساختن فایل zone نوبت به ویرایش فایل تنظیمات NSD میرسد.

برای این منظور به مسیر /var/nsd/etc رفته و در این مسیر فایل nsd.conf را مانند فایل نمونه زیر ویرایش میکنیم.

server:

    hide-version: yes

    ip-address: 192.168.20.15

remote-control:

    control-enable: yes

zone:

    name: “netbsd.ir”

    zonefile: “master/netbsd.ir.zone”

در زیر برای قسمت های مهمی که آورده ایم توضیحاتی آمده است:

Ip-address : در جلوی این قسمت ip آدرس سرور NSD را وارد میکنیم.

Zone : در این قسمت zoneی که ساخته ایم را به NSD معرفی میکنیم.

بعد از انجام تنظیمات بالا با استفاده از دستورات زیر سرویس NSD را فعال و اجرا میکنیم

rcctl enable nsd#

rcctl start nsd#

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

Dig ftp.netbsd.ir @192.168.20.15

ابزار doas در OpenBSD

در این مقاله میخواهیم با دستور doas آشنا بشویم. درواقع این دستور در openbsd جایگزین دستور sudo شده است و انعطاف پذیری زیادی را در اختیار مدیر سیستم برای دادن اختیارات مختلف به کاربران سیستم میدهد.

این دستور شامل یک فایل تنظیمات به اسم doas.conf در مسیر etc میباشد که در ادامه توضیحداده خواهد شد.

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

C-  با این آرگومان میتوانیم فایل صحت فایل کانفیک را بررسی کنیم

 doas –C /etc/doas.conf$

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

s – با این آرگومان پوسته فرمانی که در فایل /etc/passwd برای کاربر اختصاص داده شده است اجرا میشود.

u-  با این آرگومان فرمان با سطح دسترسی کاربری که معرفی میکنیم اجرا میشود.

 doas –u mohammad /usr/sbin/pkg_add$

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

این فایل به صورت پیشفرض در مسیر /etc/doas.conf قرار دارد .

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

Nopass با استفاده از این کلمه به doas میگوییم که آیا کاربر هنگام اجرای دستور کلمه عبور خود را وارد کند یا نه

Keepenv با استفاده از این کلمه میگوییم هنگام اجرای دستور با استفاده از doas دستور با متغییرهای محیطی کاربری که خصیصه هایش را قرض میگیریم اجرا شود یا نه

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

نکته: برای دادن دسترسی یک گروه بصورت زیر عمل میکنیم

:نام گروه  مثال =< :wheel

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

 

در زیر مثال هایی برای ویرایش فایل doas.conf آمده است.

permit nopass mohammad as root cmd /usr/sbin/pkg_add

در خط بالا به doas میگوییم که کاربر mohammad بتواند دستور /usr/sbin/pkg_add با سطح دسترسی root را اجرا کند.

permit nopass keepenv { ENV PS1 SSH_AUTH_SOCK } :wheel cmd /usr/sbin/pkg_add

در خط بالا به doas میگوییم کاربرانی که در گروه wheel هستند بتوانند بدون رمز عبور و با متغییرهای محیطی مربوطه دستور /usr/sbin/pkg_add را اجرا کنند

 

معرفی OpenSMTP در OpenBSD

برنامه opensmtpd بر اساس ساختار daemon در Unix ایجاد شده. OpenSMTP یک سرور ارسال و دریافت پست الکترونیکی برای یک سیستم محلی یا یک smtpسرور دیگر است. این سرور اولین بار به صورت رسمی در ۱۷ March 2013 در ورژن ۵٫۳ از سیستم عامل OpenBSD ارایه شده بعد از اولین ارایه آن در سال ۲۰۰۸٫ این برنامه توسط سه نفر از افراد پروژه OpenBSD به نام های Gilles Chehade, Eric Faurot   و Charles Longeau  طراحی شده است. هدف اصلی این پروژه امنیت، سادگی در پیکربندی و  قابلیت اعتماد سازی است. به دلیل ارایه کد این برنامه تحت حق کپی رایت  ISC license گستره بزرگی از کابران می توانند از آن استفاده کنند، حتی OpenSMTP  را می توانید در لینوکس هم نصب و راه اندازی کنید.

این سرور با قابلیت portable یعنی قابل حمل بودن در همه ساختار های کد باز طراحی شده است و شما می توانید OpenSMTP را در سیستم عامل های FreeBSD، NetBSD ،  DragonFlyBSD و بسیاری از سیستم عاملهای مبتنی بر لینوکس نصب کنید.

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

پس از یک دوره توسعه در این سرور اولین بار در ورژن ۴٫۶ از OpenBSD ارایه شد و در ورژن ۵٫۳ به عنوان بخش اصلی در این سیستم عامل به صورت سرویس میل پیش فرض قرار گرفت. در تست امنیتی که در ماه اکتبر سال ۲۰۱۵ برروی ورژن  ۵٫۴٫۴ از ان انجام شد تعداد نه عدد مشکل امنیتی در آن پیدا شد که در ورژن ۵٫۷٫۲ همه مشکلات آن برطرف شده است.

با مدیریت استفاده از CPU و حافظه سیستم این برنامه با کمترین مصرف این دو عامل به عنوان یک سرور میل بزرگ می تواند ایفای نقش کند.

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

برنامهSmtpd  :  برنامه اصلی راه اندازی OpenSMTP در بخش پس زمینه سیستم عامل است.

فایل smtpd.conf: فایل پیکربندی است که برنامه Smtpd از آن برای تغییرات در برنامه استفاده می کند.

فرمان smtpctl: از این فرمان برای مدیریت کردن Smtpd استفاده می شود.

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

فرمان makemap: این فرمان برای ایجاد کردن فایل map برای smpt استفاده می شود.

فایل aliases:  این فایل ساختار نوشتاری alias را نمایش می دهد.

برنامه smtpd:

این برنامه به عنوان یک daemon اصلی برای برنامه انتقال میل (Simple Mail Transfer Protocol ) است. برنامه smtpd هم می تواند بر روی کارت شبکه سرور شما به گوش دادن برای دریافت یک میل استفاده شود و هم می تواند رابطی برای برنامه های دیگری مثل sendmail  باشد. این برنامه می تواند از یک سرور دیگر پست الکترونیکی دریافت کند و با استفاده از کی از  دو روش mbox یا maildir پست دریافتی را به کاربر مورد نظر ارسال کند پیام دریافت شده را در صندوق پستی کاربر مربوطه قرار دهد. این برنامه بر اساس ساختار RFC 532 طراحی شده است و شما می توانید با استفاده از فرمان smtpctl با این برنامه ارتباط برقرار کند.

برای این برنامه گزینه های زیر در نظر گرفته شده است:

D macro=value-          با استفاده از این سویچ شما می توانید یک ست از متغییر ها را در یک خط بصورت مارو به سرور smptd خود ارسال کنید که الویت آن بر فایل پیکربندی مقدم است.

-d                                 اگر برنامه Smtpd را با این سویچ راه اندازی کنید همه وقایع معروف به log  در خروجی صفحه              نمایش برای شما نمایش داده می شود.

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

-n                                 فقط باعث چک شدن فایل پیکربندی می شود و سرور را راه اندازی نمی کند.

-v                                 در زمان راه اندازی پیغام های بیشتری از سمت Smtpd نمایش داده می شود.

دو سویچ دیگر به نامه های –P و –T هم در این بخش وجود دارد که با استفاده از فرمان smtpctl قابل اعمال تغییر است. این دو

بخش در بخش فرمان smtpctl بیان می شود.

معرفی سیستم عامل های بی اس دی(BSD)

بی‌ اس‌ دی به انگلیسی( BSD: Berkeley Software Distribution)  و به فارسی (توزیع نرم‌افزاری برکلی) یکی از مشتقات سیستم‌عامل یونیکس بود که در طی سال‌های ۱۹۷۷ تا ۱۹۹۵ در دانشگاه کالیفرنیا برکلی توسط گروه تحقیقاتی سیستم‌های کامپیوتری توسعه داده و منتشر می‌شد . امروزه واژه بی‌ اس‌ دی برای اشاره به خانواده‌ای از سیستم‌عامل‌های شبه‌یونیکس استفاده می‌شود که همگی از نوادگان همان بی‌اس‌دی یونیکس هستند.
گفتنی است  BSD تنها یک سیستم عامل نیست بلکه نرم‌افزاری است که از چند فرهنگ دانشگاهی مانند متن‌باز، نرم‌افزار رایگان و امن برخاسته است و برعکس لینوکس که به فردی ویژه تعلق دارد BSD به هیچ کس تعلق ندارد و متعلق به یک گروه است . در سال ۱۹۹۲ متن برنامه‌های BSD ازمتن‌های AT&T جدا شدند و BSDLight انتشار یافت .هم اکنون از نسخه های امروزی BSD می‌توان نمونه‌های زیر را نام برد:
OpenBSD,NetBSD , Mac OS X, DragonFly BSD, GhostBSD, FreeBSD, …

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

FreeBSD:

فری‌بی‌اس‌دی: در گسترش FreeBSD تاکید بر کارایی خوب ،کاربرپسندی و استفاده آسان است   و پرکاربردترین یونیکس است و برای نمونه هم اکنون بیش از دو میلیون سرور در دنیا از این سیستم عامل استفاده می کنند. که برای نمونه می توان Yahoo, TaraSolution و Apache را نام برد.شعار این سیستم عامل پایداری می باشد.

NetBSD:

نت بی اس دی: یک سیستم عامل قابل حمل وپرتابل است که بیش از ۵۷ پلتفرم را پشتیبانی میکند . شعار این سیستم عامل قابلیت نصب نت بی اس دی بر روی تُستر نان می باشد.این سیتسم عامل منظم ترین ساختار توسعه کدنویسی را در میان تمام سیستمهای نرم افزاری متن باز دارد . تیمی منسجم و بسیار فنی . از قابلیتهای مهم اراِئه شده توسط تیم توسعه آن می توان به مدیریت کننده بسته PKGSRC اشاره نمود که یکی از بهترینها در نوع خود می باشد .

OpenBSD:

اپن بی‌اس‌دی  بر اساس NetBSD ساخته شد و اعضای توسعه دهنده آن در واقع از موسسان تیم نت بی اس دی بودند که بر مبنای یک اختلاف نظر از این تیم جدا شده و اوپن بی اس دی (OpenBSD) را توسعه دادند  . کسانی که اپن بی‌ اس‌ دی (OpenBSD) گسترش دادند به دنبال یک سیستم عامل با امنیت بالا و متمرکز بر قابلیتهای امنیتی همچون رمز نگاری بودند. هم اکنون اپن بی‌ اس‌ دی(OpenBSD) امن‌ترین یونیکس برای کاربری همگانی است.این سیستم عامل از زمان ارائه تا کنون رکورد دار ثبت تنها دو حفره امنیتی بصورت پیش فرض پس از نصب می باشد که این در میان سیستم عاملها بی رقیب می باشد . الته یکی از این حفرهها مربوط به سرویس ssh1  بود. از نکات مهم تیم توسعه این سیستم عامل ارائه افتخارات و قابلیتهای بزرگی به دنیای حرفه ای فناوری اطلاعات می باشد که از ان جمله می توان به توسعه سرویس OpenSSH , OpenSMTPD ,OpenNTPD و دیواره آتش PF را نام برد .

Dragonfly BSD:

این سیستم عامل بر اساس فری بی اس دی نسخه ۴.۹ توسعه یافته و تمرکز بر توزیع پذیری و مجازی سازی دارد. از ویژگی های قابل توجه آن می توان به ارائه فایل سیستم هامر (Hammer) اشاره کرد که از قابلیتهای ویژه ای در دنیای فایل سیستم ها برخوردار است.

GhostBSD:

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

مک اُ اس ده (Mac OS X)

سیستم عامل بازرگانی است که بر پایه بی‌ اس‌ دی ساخته شده است. (مک اُ اس ده (Mac OS X) را با مک اُ اس اشتباه نکنید.) مک اُ اس ده (Mac OS X) با اینکه متن باز است تجاری هم هست که این همان فرهنگ BSD است .(Darwin and OpenDarwin) مک اُ اس ده (Mac OS X) امن ترین سیستم عامل تجاری به حساب آمده و بزرگ‌ترین بخش دنیای یونیکس برای کاربران مکینتاش است.بیشتر سیستم‌عامل‌های فعلی بی‌ اس‌ دی به صورت متن‌باز، بدون هیچ هزینه‌ای و همچنین تحت پروانه بی‌اس‌دی قابل دانلود شدن هستند، به جز مک اواس ده و آی‌اواس. این سیستم‌ها عموماً از یک هسته یکپارچه برخوردار هستند، به جز دراگون‌فلی بی‌ اس‌ دی و اواس ده که یک هسته ترکیبیدارند. پروژه‌های بی‌ اس‌ دی متن‌باز عموماً هم هسته سیستم‌عامل و هم برنامه‌های فضای کاربری و کتابخانه‌هارا با هم و در یک مخزن کد منبع نگهداری و مدیریت می‌کنند.

اطلاعات تخصصی بیشتر:

مقایسه سیستم‌عامل‌های خانواده بی‌اس‌دی

مدیریت کاربران در OpenBSD

یکی از بخش های مهم در مدیریت سیستم عامل ها بحث اضافه کردن و مدیریت کردن کاربران است. این بخش در سیستم عامل های مبتنی بر BSD  بخصوص OpenBSD با دقت طراحی و ایجاد شده است.
از دیرباز همه کاربران این نوع از سیستم عامل ها علاقه داشتند که با کاربر root   وارد سیستم شوند و اعمال مدیریتی خود را اعمال کنند.
امروز این امر کار خطرناکی محسوب می شود و حتما برای جلوگیری از خطر حمله به سرویس های موجود برروی سیستم شما و در دست گرفتن اختیار سیستم شما با دسترسی کاربر root کاربران سیستمی و جداگانه ای با
سطوح دسترسی کم طراحی و ایجاد شده است که در صورت بروز اشکالی در سرویس شما خطری برای سیستم شما ایجاد نکند. در ادامه این مقاله شما یاد خواهید گرفت که با استفاده از فرمان Adduser کاربر جدید در سیستم خود اضافه کنید.

ایجاد فایل adduser.conf

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

# adduser

Couldn’t find /etc/adduser.conf: creating a new adduser configuration file

Reading /etc/shells Enter your default shell: csh ksh nologin sh tcsh [ksh]: Your default shell is: ksh -> /bin/ksh

Default login class: authpf bgpd daemon default staff [default]:

Enter your default HOME partition: [/home]:

Copy dotfiles from: /etc/skel no [/etc/skel]:

 Send welcome message?: /path/file default no [no]: Do not send message(s)

Prompt for passwords by default (y/n) [y]:

Default encryption method for passwords: auto blowfish des md5 old [auto]:

 

بعد از راه اندازی این فرمان به دنبال فایلی به نام adduser.conf  در شاخه etc می گردد و اگر فایل مورد نظر در انجا وجود نداشت آن فایل را ایجاد می کند، به این نکته توجه کنید که بعدا شما می توانید با ویرایش کردن این فایل سوالات پیش فرض را تغییر دهید.

در خط بعد از شما خط فرمان پیش فرض همه کاربران اضافه شده را سوال می کند،
اطلاعات Shell های نصب شده برروی سیستم شما را این فرمان از طریق خواندن  فایل  /etc/shells به دست می اورد و به صورت پیش فرض خط فرمان موجود در OpenBSD به نام ksh را انتخاب می کند.

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

هر کاربر برای خود یک شاخه به نام home دارد که فایل های خود را در ان ذخیره می کند و فقط خودش بالاترین سطح دسترسی را به فایلها و زیر شاخه دارد. شما می توانید مسیر مورد نظر خود را در این بخش وارد کنید.

هر کاربر یک سری فایل های تنطیمات به نام dotfiles دارد که در شاخه کاربر اضافه شده کپی می شود. این فایلها شامل تنظیمات پیش فرض است.
به این دلیل به dotfiles معروف هستند که با نقطه شروع می شوند و هر فایل که با نقطه شروع می شود از دید کاربر مخفی می شود و به اصطلاح hiden است.
شما در این بخش محل پیش فرض این فایل ها را برای همه کاربران مشخص می کنید. مسیر پیش فرض در شاخه /etc/skel است. شما در این مسیر می توانید این فایلها را ویرایش کنید.

برای ایجاد یک کاربر شما به رمزعبور نیاز دارید اگر کاربری ایجاد شود که رمزعبور نداشته باشد این کاربر تا زمان تنظیم رمزعبور غیر فعال می باید در خط Prompt for passwords by default (y/n) [y] از شما سوال می شود که ایا در زمان ایجاد کاربر جدید رمز عبور از شما سوال شود یا خیر.

رمزعبور هر کاربری در قالب کد شده در فایل های passwd و masterpasswd قرار می گیرد.
شما در بخش پایانی این فرمان می توانید روش رمزنگاری رمزعبور در این فایل ها را انتخاب کنید گزینه پیش فرض و خوب در OpenBSD رمزنگاری blowfish است.

 

شما در این بخش با روش ایجاد کردن فایل adduser.conf  اشنا شدید در بخش بعدی با استفاده از فرمان Adduser روش ایجاد کردن یک کاربر جدید را مشاهده می کنید.

آشنا بیشتر با Boot Loader در OpenBSD:

همانطور که در بخش قبلی در مورد مراحل راه اندازی سیستم عامل OpenBSD بحث شد یکی از بخش های راه اندازی برنامه Boot Loader است که به شما در راه اندازی kernel  های خاص خود و وارد شدن به حالت single user mode کمک می کند. بخش single user mode در بخش قبلی توضیح داده شد، حال در این بخش به شما روش های بارگذاری هسته های انتخابی و مورد نظر خود را آموزش می دهیم.

نکته:

در بعضی از موارد وقنی شما سرور راه داری دارید که از طریق برنامه های vnc  به آن دسترسی دارید و قصد دارید به صورت کامل سیستم عامل فعلی خود را ارتقا، دهید به شرط اینکه تمام داده های دیسک سخت شما پاک شود می توانید هسته سیستم عامل ورژن بالاتر مورد نظر خود را از طریق شبکه برروی سیستم خود دانلود کرده و سیستم را راه اندازی کنید و در محل راه اندازی برنامه boot loader هسته قابل راه اندازی یا همان bsd.rd را راه اندازی کنید و به صورت نصب کامل سیستم عامل خود را نصب کنید. این بخش در ادامه آموزش داده می شود.

راه اندازی انواع هسته ها:

سیستم عامل OpenBSD دارای سه نوع هسته متفاوت است به نام های هسته تک پردازشی به نامه bsd هسته چند پردازشی به نام bsd.mp و هسته بروزرسانی و نصب به نام bsd.rd ، برای بارگذاری هر یک از این هسته ها شما می توانید در زمان راه اندازی boot Loader مسیر کامل هسته را بعد از فرمان boot ذکر کنید تا هسته مورد نظر شما بارگذاری شود مثل فرمان زیر:

boot> boot /bsd.rd

در این بخش حتی شما می توانید هسته ها را با گذینه های دلخواه راه اندزی کنید مثلا هسته چند پردازشی را در حالت single user mode راه اندازی کنید به صورت زیر:

boot> boot -s /bsd.sp

بارگذاری هسته موجود برروی دیسک سخت:

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

  1. پیدا کردن هارد دیسک
  2. پیدا کردن پارتیشن ها و پارتیشنی که شامل فایل مورد نظر شما است.
  3. راه اندازی کردن هسته مورد نظر شما.

 

پیدا کردن هارد دیسک:

نام دیسک های موجود در سیستم عامل های خانواده BSD  بصورت /dev/sd0  یا /dev/wd1 است، این مدل نام ها زمانی برای سیستم عامل قابل فهم است که هسته سیستم عامل راه اندازی شده باشد. برنامه Boot Loader از سیستم نامگذاری هارد در حالت Bios استفاده می کند. برای اینکه شما از برنامه Boot Loader در مورد نام دیسک های موجود برروی سیستم خود سوال کنید ابتدا باید فرمان machine diskinfo را در بخش خط فرمان Boot Loader به صورت زیر اجرا کنید تا خروجی آنرا مشاهده کنید:

boot> machine diskinfo

Disk    BIOS#   Type    Cyls    Heads   Secs    Flags   Checksum

fd0     ۰x0     *none*  ۸۰      ۲       ۱۸      ۰x4     ۰x0

hd0     ۰x80    label   ۱۰۲۴    ۲۵۵     ۶۳      ۰x2     ۰x51db843d

hd1     ۰x81    label   ۱۰۲۴    ۲۵۵     ۶۳      ۰x2     ۰x9329b723

hd2     ۰x82    label   ۱۰۲۴    ۲۵۵     ۶۳      ۰x2     ۰xcfadb343

boot>

همانطور که مشاهده می کنید در این بخش برنامه Boot Loader برای شما چهار دیسک پیدا کرده که اولی دیسک به نامه fd0 به فلاپی دیسک سیستم شما مربوط می شود و سه دیسک بعدی هارد دیسک هستن. هارد دیسک hd0 اولین دیسک شماست به صورت پیش فرض هسته اصلی برروی آن قرار دارد. اگر قصد دارید هسته دیگر برروی هارد دیگری را راه اندازی کنید باید پارتیشن مورد نظر را پیدا کنید.

 

پیدا کردن پارتیشن :

خب در این مرحله شما فرض می کنید که هسته شما برروی پارتیشن hd2 قرار دارد حال شما باید با استفاده از فرمان set device به برنامه boot loader بگویید که از این پارتیشن برای راه اندازی استفاده کنید به صورت زیر:

boot> set device hd2a

قبل از اجرا کردن فرمان boot شما برای اطمینان از وجود فایل هسته مورد نظر باید فرمان ls را اجرا کنید به صورت زیر:

boot> ls

stat(hd2a:/.): Invalid argument

boot>

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

boot> set device hd1a

boot> ls

drwxr-xr-x 0,0  ۵۱۲     .

drwxr-xr-x 0,0  ۵۱۲     ..

drwxr-xr-x 0,0  ۵۱۲     altroot

drwxr-xr-x 0,0  ۵۱۲     home

drwxr-xr-x 0,0  ۵۱۲     tmp

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

راه اندازی کردن هسته

برای راه اندازی هسته شما می توانید فرمان boot را اجرا کنید تا هسته مورد نظر شما راه اندازی کنید حتی شما می توانید برای چک کردن هسته وارد محیط single user mode شوید به صورت زیر:

boot> boot -s

booting hd1a:/bsd: 5669864+1601484+935608+0+617568 [89+499848+323884]=0xd351b8

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

boot> boot -s hd1a:/bsd

مراحل راه اندازی در OpenBSD

در مراحل راه اندازی همه سیستم ها ابتدا از Bios  شروع می کنند، برنامه Bios  در ابتدا دستکاه اصلی متصل شده به سیستم را چک می کند، مقدار Ram را چک کرده و CPU را در بعضی از بخش ها راه اندازی می کند، بعد از این مرحله Bios به سراغ Boot Loader می رود.
برنامه Boot Loader، برنامه کوچکی است که باعث راه اندازی Kernel  می شود.
در مرحله بعد هسته یا همان kernel همه دستگاه های متصل شده به سیستم را چک می کند و راه اندازهای آنها را تشخیص می دهد. در مرحله بعدی برنامه init راه اندازی می شودکه باعث راه اندازی برنامه های مورد نیاز کاربر، تنظیمات شبکه و سایر سرویس های مورد نیاز سیستم را راه اندازی می کند.
در بخش بعدی با جزییات بیشتری درباره این موارد صحبت خواهیم کرد.

 بخش Boot Loader

بعد از راه اندازی Bios شما وارد برنامه Boot Loader  می شوید این بخش را  در ادامه مشاهده می کنید:

OpenBSD/amd64 BOOT 3.18
boot>

هدف اصلی این برنامه پیدا کردن هسته است و هسته را در حافظه ram بارگذاری کند. در این بخش شما برای مشاهده کردن فرمان هایی که می توانید استفاده کنید از فرمان Help به صورت زیر استفاده کنید تا فرمانها را مشاهد کنید:

boot> help
commands: # boot echo env help ls machine reboot set stty time
machine: boot diskinfo memory

به صورت پیش فرض بعد از گذشت ۵ ثانیه هسته پیش فرض به صورت خودکار راه اندازی می شود، برای متوقف کردن این بخش کلید space را فشار دهید.
شما می توانید با استفاده از فرمان set timeout مقدار ۵ ثانیه را افزایش دهید به صورت زیر:

boot> set timeout 10

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

> boot

حالت single user mode

بعد از راه اندازی مرحله Boot Loader و بعد از راه اندازی شدن هسته به صورت کامل سیستم در حالت خاصی می تواند به نام single user mode  قرار گیرد. در این حالت به کاربر یک خط فرمان داده می شود تا بتواند فرمان خاص این محیط را راه اندازی کند. در این حالت هسته سیستم عامل همه سخت افزار های موجود را شناسایی کرده و برنامه init را راه اندازی کرده.

در این حال فایل سیستم ها ی موجود برروی دیسک سخت شما mount نمی شود فقط شاخه root در حالت فقط خواندن mount  می شود.
در این حالت سرویس شبکه سیستم شما راه اندازی نمی شود، بخش های امنیتی موجود در هسته بارگذاری نمی شود و همه سظوح دسترسی غیرفعال هستند.
****این بخش برای بازیابی رمزعبور کاربر root بسیار محیط خوبی است. ****

برای وارد شدن به این بخش کافیست که در برنامه Boot Loader در بخش خط فرمان از فرمان boot  با سویچ s استفاده کنید به صورت زیر:

boot> boot -s

 بارگذاری پارتیشن ها در Single User Mode

در حالت single user mode شما می توانید همه بخش های سیستم خود را مدیریت کنید و اگر فایلی را به اشباه ویرایش کرده اید که باعث عدم راه اندازی سیستم شما شود را به حالت قبلی خود ویرایش کنید.
به این نکته توجه کنید که اگر سیستم شما به یکباره خاموش شده باشد فایل سیستم شما به صورت کامل خاموش نشده است و باید از فرمان fsck  به صورت زیر استفاده کنید تا بعد بتوانید فایل سیستم ها را ذر حالت خواندن و نوشتن mount کنید، این فرمان به صورت زیر است:

# fsck -p
/dev/sd0a (e4bf0318329fe596.a): file system is clean; not checking

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

# mount -a

در حالت single user mode سرویس شبکه سیستم شما فعال نیست برای راه اندازی کردن سرویس شبکه خود ابتدا مراحل قبل را اجرا کنید و بعد فرمان /etc/netstart را به صورت زیر اجرا کنید:

# sh /etc/netstart

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

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

به این ترتیب می‌تونیم به دو هدف مهم برسیم:

 

برنامه‌هایی که تا به حال پورت شدند

ساغر

ساغر یک برنامه شعر فارسی است و از پایگاه داده ganjoor.net استفاده می‌کند. پایگاه داده گنجور در حال حاضر بسیار کامل است و اشعار بیشتر شعرای فارسی زبان را در بر می گیرد. این برنامه در حال حاضر پورت شده و در مسیر misc/saaghar قرار داره.

فونت‌های فارسی

لازم به توضیح نیست که وجود فونت های فارسی چقدر مهم می باشد. خوشبختانه تعدادی فونت فارسی از مدت‌ها پیش برای FreeBSD پورت شده و در درخت پورت ها در مسیر x11-fonts/farsifonts در دسترس است. این پورت، بیشتر فونت‌های رایج را دربرمی‌گیرد.

فرهنگ لغت

یکی از مهمترین برنامه‌ها برای یک کاربر فارسی زبان فرهنگ لغت هست که فرهنگ لغت های خوبی در درخت پورت ها وجود دارد و تنها کاری که ما باید بکنیم این است که یک پایگاه داده برای آن درست کنیم. پایگاه داده آریان پور یکی از کامل‌ترین پایگاه داده‌های موجود است که در حال حاضر در درخت پورت ها وجود دارد و در مسیر textproc/stardict-dict-fa_IR در دسترس می باشد. این پایگاه داده با برنامه stardict نسخه دو و سه سازگار است.

برنامه‌های خواسته شده

تقویم فارسی

دو پیاده‌سازی مختلف به نام‌های jcal و starcal وجود دارد. متأسفانه برنامه starcal قابلیت‌هایی دارد که باعث شده پورت کردن آن برای یک سیستم‌عاملی غیر از لینوکس سخت باشد.

پیش‌نیاز‌ها

اگر برنامه‌ای سراغ دارید که در لیست نیست، لطفاً آن را با ما در میان بگذارید.

پورت‌های FreeBSD شامل هزاران بسته نرم‌افزاری است که برای اجرا بر روی این سیستم‌عامل آماده شده‌اند. هر کسی می‌تواند برنامه جدیدی را برای FreeBSD پورت کرده یا همین طور برای مدیریت کردن پورت های موجود داوطلب شود.

به طور کلی می‌توان گفت مراحل زیر در هنگام نضب یک پورت انجام می‌پذیرد:

  1. دانلود کد‌های منبع به صورت یک آرشیو فشرده شده
  2. بررسی صحت فایل‌های دانلود شده
  3. استراج کدهای منبع
  4. اعمال کردن تغییرات و همین طور وصله های مورد نیاز
  5. پیکر‌بندی برنامه برای انجام عمل کامپایل
  6. کامپایل برنامه
  7. نصب برنامه درسیستم
  8. حذف برنامه

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

make به محض اینکه اجرا شد دایرکتوری جاری را برای پیدا کردن فایلی به نام Makefile جستجو کرده و با توجه به محتویات موجود در آن عملیاتی را انجام می‌دهد. ما از همین روش برای خودکار‌سازی فرآیند نصب یک نرم‌افزار استفاده می‌کنیم. در زیر نمونه‌ای از یک Makefile آورده شده است.

# New ports collection makefile for:   oneko
# Date created:        5 December 1994
# Whom:                asami
#
# $FreeBSD$
#

PORTNAME=      oneko
PORTVERSION=   1.1b
CATEGORIES=    games
MASTER_SITES=  ftp://ftp.cs.columbia.edu/archives/X11R5/contrib/

MAINTAINER=    asami@FreeBSD.org
COMMENT=       A cat chasing a mouse all over the screen

MAN1=          oneko.1
MANCOMPRESSED= yes
USE_IMAKE=     yes

.include <bsd.port.mk>

اگر محتویات این فایل برای شما غیر قابل فهم است نگران نباشید، بیشتر قسمت‌های مقاله درباره همین فایل بحث می‌کنند!

فایل بالا شامل متغیر‌هایی است که تعدادی از آنها را در اینجا خیلی کوتاه بررسی می‌کنیم (بعدا آنها را به طور مفصل و با جزئیات بررسی خواهیم کرد):

PORTNAME: این متغیر نام پورت مورد نظر را مشخص می‌کند و باید حتماً استفاده شود.

PORTVERSION: نسخه یا ورژن پورت را مشخص می‌کند. نسخه پورت نباید حاوی کاراکتر خط تیره (-) باشد. این متغیر اجباری است.

MASTER_SITES: این متغیر مشخص می کند که کد‌های منبع و فایل‌های برنامه باید از کجا دانلود شوند. می‌توانید چند آدرس مختلف را مشخص کنید که با کاراکتر خط فاصله از هم جدا شده‌اند.

 

فایل توضیحات

هر پورت دو فایل به نام‌های pkg-descr و pkg-plist دارد.

فایل pkg-descr

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

یک نمونه از این فایل را در زیر مشاهده می‌کنید:

This is a port of oneko, in which a cat chases a poor mouse all over
the screen.
 :
(etc.)

WWW: http://www.oneko.org/

فایل pkg-plist

این فایل دربرگیرنده لیست تمام فایل‌هایی است که توسط این پورت بر روی سیستم نصب می‌شوند. همیچنین اصطلاح packing list هم به این فایل اطلاق می‌شود. چون بسته‌های باینری از روی محتویات این فایل ایجاد می‌شوند. تمام مسیر‌های موجود در این فایل وابسته به مقدار متغیر ‎${PREFIX} هستند. (مقدار این متغیر معمولاً /usr/local یا /usr/X11R6 است) توجه داشته باشید که man page هایی که توسط برنامه در سیستم نصب می‌شوند نباید در این فایل لیست شوند. اگر برنامه در هنگام نصب تعدادی دایرکتوری‌ در سیستم ایجاد می‌کند، علاوه بر اینکه این دایرکتوری‌ها را لیست می‌کنید، عبارت ‎@dirrm‎ را هم در ابتدای خطوط قرار دهید تا در هنگام حذف برنامه، دایرکتوری‌های مرتبط با آن هم پاک شوند. یک نمونه از این فایل را در زیر مشاهده می‌کنید:

bin/oneko
lib/X11/app-defaults/Oneko
lib/X11/oneko/cat1.xpm
lib/X11/oneko/cat2.xpm
lib/X11/oneko/mouse.xpm
@dirrm lib/X11/oneko
نکته:
پیشنهاد می‌کنیم که لیست فایل‌ها را بر اساس حروف الفبا مرتب کنید تا بعداً در هنگام به روز‌رسانی پورت کارتان راحت‌تر شود.
نکته:
ایجاد فایل pkg-plist به صورت دستی می‌تواند بسیار وقت گیر و خسته‌کننده باشد؛ مخصوصاً اگر برنامه تعداد زیادی فایل در سیستم نصب می‌کند. یک روش خودکار برای ایجاد این فایل وجود دارد که بعداً درباره آن صحبت خواهیم کرد.

تمام پورت ها باید این فایل را داشته باشند. اما فقط در یک مورد می‌توان از آن صرف نظر کرد. اگر برنامه تعداد مشخص و اندکی فایل در سیستم نصب می‌کند، می توان لیست فایل‌ها و دایرکتوری‌ها را با استفاده از متغیر‌های PLIS_FILES و PLIST_DIRS در Makefile مشخص کرد. به عنوان مثال می توانیم با قرار دادن خطوط زیر در Makefile از ایجاد فایل pkg-plist خود‌داری کنیم:

PLIST_FILES=    bin/oneko \
                lib/X11/app-defaults/Oneko \
                lib/X11/oneko/cat1.xpm \
                lib/X11/oneko/cat2.xpm \
                lib/X11/oneko/mouse.xpm
PLIST_DIRS=     lib/X11/oneko

طبیعتا اگر برنامه هیچ دایرکتوری در سیستم ایجاد نمی‌کند می توان متغیر PKG_DIRS را بدون مقداردهی رها کرد.

بررسی صحت فایل‌های دانلود شده

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

اگر فایل‌های برنامه به صورت مکرر تغییر می‌کنند و شما مطمئن هستید که آنها را از جای مطمئنی دریافت می‌کنید، می توانید با استفاده از متغیر IGNOREFILES این فایل‌ها را نادیده گرفته تا هیچ بررسی جهت اطلاع از صحت آنها صورت نگیرد. در این صورت Checksum آن فایل در هنگام اجرای دستور make makesum محاسبه نخواهد شد.

آزمایش پورت

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

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

پیشنهاد می‌شود دستورات زیر را به ترتیب بر روی پورت مورد نظر اجرا کنید:

make install
make package
make deinstall
pkg_add package-name
make deinstall
make reinstall
make package

مطمئن شوید که در مراحل package و deinstall هیچ هشداری بر روی صفحه نمایش چاپ نمی‌شود. بعد از مرحله سوم چک کنید که تمام فایل‌ها و دایرکتوری‌ها از روی سیستم حذف شده باشند. بعد از مرحله چهارم برنامه را تست کرده و ببینید آیا وقتی که برنامه از روی یک بسته باینری هم نصب می‌شود به درستی کار می‌کند یا نه.

ارسال پورت

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

بعد از انجام این کار خروجی را با استفاده از send-pr یا معادل تحت وب آن ارسال کنید. برای انجام این کار، در قسمت Category گزینه ports و در قسمت class هم گزینه change-request را انتخاب کنید. همین طور در فیلد Description توضیح مختصری درباره پورت خود بنویسید و محتویات فایل shar را هم در فیلد Fix وارد کنید.

نکته:

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

New port: <category>/<portname> <short description of the port>

یا اگر پورتی که قبلاً موجود بوده را به روز‌رسانی کرده‌اید، اطلاعات فیلد Synopsis را در قالب زیر وارد کنید:

Update port: <category>/<portname> <short description of the update>

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

یک بار دیگر متذکر می‌شویم که کدهای منبع، دایرکتوری work و بسته‌باینری را ارسال نکنید.

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

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

بررسی جزئیات بیشتر

در ادامه خواهیم دید که وقتی کاربر دستور make را اجرا می‌کند چه اتفاقی می‌افتد.

دستور fetch اجرا می‌شود. دستور fetch دایرکتوری DISTDIR را چک کرده و مطمئن می‌شود که آیا فایل‌های مورد نیاز برای ساخت پورت وجود دارند یا نه؟ اگر فایل‌ها در دایرکتوری DISTDIR وجود نداشتند، آنها را از آدرس MASTER_SITES دریافت خواهد کرد. متغیر MASTER_SITES در Makefile تعریف می‌شود و دربرگیرنده لیستی از سایت‌هایی است که می‌توان فایل‌های برنامه را از آنجا دریافت کرد. علاوه بر این سایت‌ها، فایل‌های برنامه از مسیر ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles هم قابل دریافت هستند چون همیشه برای اطمینان یک نسخه از آنها در این دایرکتوری نگه‌داری می‌شود. سپس فایل‌ها با استفاده از برنامه‌ای که توسط متغیر FETCH مشخص شده، دانلود می‌شوند و در دایرکتوری DISTDIR قرار می‌گیرند.

دستور extract اجرا خواهد شد. این دستور کد‌های منبع برنامه را از دایرکتوری DISTDIR برداشته و آنها را در یک جای موقت (که توسط WRKDIR مشخص می‌شود) استخراج می‌کند. کد‌های منبع معمولاً فایل‌هایی با پسوند .tar.gz هستند و معمولاً در یک دایرکتوری به نام work استخراج می‌شوند.

دستور patch اجرا می‌شود. در ابتدا تمام patch هایی که توسط متغیر PATCHFILES مشخص شده‌اند بر روی کد‌های منبع اعمال می‌شوند. سپس تمام فایل‌هایی که patch-* نام دارند و در دایرکتوری PATCHDIR قرار گرفته‌اند به ترتیب حروف الفبا بر روی کد‌های منبع اعمال خواهند شد. مقدار پیش فرض دایرکتوری PATCHDIR بر روی files تنظیم شده است.

دستور configure اجرا خواهد شد. این دستور می‌تواند چند کار مختلف انجام دهد.

  1. در صورت وجود، اسکریپتی که در مسیر scripts/configure قرار دارد اجرا خواهد شد.
  2. اگر یکی از متغیر‌های HAS_CONFIGURE یا GNU_CONFIGURE تعریف شده باشند، اسکریپت WRKSRC/configure اجرا خواهد شد.
  3. اگر متغیر USE_IMAKE تعریف شده باشد، دستور XMKMF اجرا می‌شود (پیش فرض آن xmkmf -a است)

دستور build اجرا می‌شود. این دستور با استفاده از Makefile ای که در دایرکتوری کد‌های منبع وجود دارد، برنامه را کامپایل خواهد کد. در صورتی‌که متغیر USE_GMAKE تعریف شده باشد، از برنامه GNU make استفاده خواهد شد. در غیر این صورت از make استفاده می‌شود.

آنچه که با هم مرور کردیم عملیات پیش فرض بعد از اجرای دستور make بود. اگر این عملیات برای شما کافی نیست نگران نباشید. شما می‌توانید در Makefile دستوراتی به نام pre-something یا post-something تعریف کنید. مثلاً با تعریف دستور pre-configure می‌توانید عملیاتی را قبل از اجرای configure انجام دهید و به همین ترتیب حتی می‌توانید اسکریپت‌هایی با همین نام‌ها را در دایرکتوری scripts قرار دهید تا عملیات دلخواه خود را قبل یا بعد از اجرای عملیات‌های پیش فرض به انجام برسانید.

به عنوان مثالی دیگر، اگر در Makefile خود post-extract را تعریف کرده باشید، و فایلی به نام pre-build هم در دایرکتوری scripts قرار داشته باشد، بعد از اینکه فایل‌ها استخراج شدند، عملیات تعریف شده توسط post-extract اجرا شده و همین طور قبل از انجام عمل build، اسکریپت pre-build اجرا می‌شود.

عملیات‌های پیش فرض در فایل bsd.port.mk و در قالب do-something تعریف شده‌اند. مثلاً عملیات مربوط به دستور extract به صورت do-extract تعریف شده و به همین ترتیب. البته شما خودتان هم می‌توانید این عملیات‌ها را در Makefile پورت خود تنظیم کنید تا عملیات‌های پیش فرض را بی اثر کنید.

دریافت کد‌های منبع

این مرحله شامل دریافت کد‌های منبع یک برنامه (به صورت یک آرشیو فشرده شده مثل foo.tar.gz یا foo.tar.Z) و قرار دادن آنها در DISTDIR می‌شود.

شما باید وب سایت(های) اصلی برای دریافتِ کدهای منبع را با متغیر MASTER_SITES مشخص کنید. همان طور که ممکن است بدانید سایت هایی مانند Sourceforge و Github وجود دارند که میزبانی هزاران پروژه نرم‌افزاری را بر عهده دارند. تعدادی ماکرو برای استفاده راحت‌تر از این سایت ها در فایل bsd.sites.mk تعریف شده که می‌توانید از آنها استفاده کنید. نحوه استفاده از این ماکرو‌ها بعداً شرح داده خواهد شد. لطفاً تا جایی که ممکن است از این ماکرو‌ها استفاده کنید.

اگر نتوانستید هیچ سایت FTP یا HTTP مناسبی پیدا کنید، یا فقط سایت‌هایی پیدا کردید که نسخه ناقص و غیر استاندارد کد‌های منبع را دارند، شاید بهتر باشد که یک نسخه از کد‌های منبع را بر روی سروری که خودتان مالکیتش را بر عهده دارید قرار دهید.

تغییر دادن پورت

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

وصله‌ها یا patchها

به طور خلاصه، اگر فایلی نیاز به تغییر دارد، یک نسخه از آن را با پسوند .orig کپی کرده و سپس فایل اصلی را ویرایش کنید. در نهایت دستور make makepatch را اجرا کنید. برای مثال اگر فایلی به نام filename.c احتیاج به تغییر داشته باشد، ابتدا یک نسخه از آن را با پسنود .orig کپی می‌کنیم:

cp filename.c filename.c.orig

سپس تمام تغییرات مورد نظر خود را در filename.c اعمال کرده و سپس این دستور را اجرا می‌کنیم:

make makepatch

در هنگام آماده کردن یک پورت، می توانید تغییراتی که در فایل‌ها ایجاد می‌کنید را با diff ضبط کرده تا بعداً بتوانید آنها را مجدداً به صورت خودکار با استفاده از patch بر روی کد‌های منبع اعمال کنید. هر فایل patch ای که می‌خواهید بر روی کدهای منبع اعمال کنید، باید نامی در قالب patch-* داشته باشد که * مسیر فایلی است که patch باید بر روی آن اعمال شود. همانند patch-Imakefile یا مثلاً patch-src-config.h. این فایل‌ها باید در داخل دایرکتوری PATCHDIR قرار بگیرند. مقدار پیش فرض این دایرکتیو files است که در همان دایرکتوری پورت در کنار فایل‌های Makefile و pkg-plist قرار دارد. تمام patch ها باید وابسته به مسیر WRKSRC باشند (همان دایرکتوری که پورت شما خودش را در آن استخراج می‌کند)

لطفاً فقط از کاراکتر‌های [-+._a-zA-Z0-9] برای نام گذاری فایل‌های patch استفاده کنید.

اگر می‌خواهید از تمام فایل‌های موجود در یک دایرکتوری patch تهیه کنید، میتوانید از گزینه ‎-r‎ در دستور diff استفاده کنید. اما بعد از انجام این کار حتماً نتیجه را چک کرده تا مطمئن شوید که هیچ چیز اضافه و بدرد‌نخوری در خروجی قرار نداشته باشد.

اگر احتیاج به حذف کردن فایل‌(هایی) از کد‌های منبع دارید، می توانید این کار را در مرحله post-extract انجام دهید.

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

post-patch:
    @${REINPLACE_CMD} -e 's|for Linux|for FreeBSD|g' ${WRKSRC}/README
    @${REINPLACE_CMD} -e 's|-pthread|${PTHREAD_LIBS}|' ${WRKSRC}/configure

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

USE_DOS2UNIX=    yes
DOS2UNIX_REGEX=  .*\.(c|cpp|h)

مرحله پیکربندی پورت

تمام تغییرات لازم را در اسکریپت configure انجام داده و آن را در زیردایرکتوری scripts ذخیره کنید. همان طور که قبلاً گفته شد، می‌توانید در داخل Makefile و با استفاده از عملیات pre-configure و post-configure انجام دهید.

اگر برنامه شما یک اسکریپت configure دارد، باید خط زیر را به Makefile اضافه کنید تا این اسکریپت اجرا شود:

HAS_CONFIGURE=  yes

ممکن است اسکریپت configure به برنامه GNU Make و دیگر برنامه‌های مرتبط احتیاج داشته باشد. در این صورت به جای خط بالا باید خط زیر را اضافه کنید:

 GNU_CONFIGURE=  yes

پیکربندی Makefile

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

فایل فشرده شده کد‌ منبع

کد‌های منبع به صورت یک آرشیو فشرده شده منتشر می‌شوند که در فرهنگ اصطلاحات FreeBSD به آن‌ها distfile گفته می‌شود. اگر distfile پورت شما نامی در قالب foozolix-1.2.tar.gz دارد، می توانید از مطالعه این قسمت صرف نظر کنید. در غیر این صورت شما باید متغیر‌های DISTVERSION ،DISTNAME، EXTRACT_CMD ،EXTRACT_BEFORE_ARGS ،EXTRACT_AFTER_ARGS، EXTRACT_SUFX ،DISTFILES را مطابق با نیاز خود تنظیم کنید. در بد‌ترین حالت ممکن است مجبور باشید عملیات do-extract را مجدداً و با توجه به نیاز خود تعریف کنید.

نام‌گذاری

اولین قسمت هر MAkefile، در برگیرنده اطلاعات اساسی درباره پورت مورد نظر است. مانند نام پورت، نسخه پورت و دسته‌ای که پورت در آن قرار دارد.

همان طور که قبلاً گفته شد، شما باید نام پورت را با استفاده از متغیر PORTNAME و نسخه و ورژن آن را با متغیر PORTVERSION مشخص کنید.

متغیر EXTRACT_SUFX پسوند distfile را مشخص می‌کند و به صورت پیش فرض مقدار tar.gz برای آن درنظر گرفته شده است. اگر پسوند distfile شما چیز دیگری است، می توانید آن را با استفاده از همین متغیر مشخص کنید. مثلاً برای پسوند .tar.bz2 می‌توانید به صورت زیر عمل کنید:

USE_BZIP2=	yes

متغیر USE_BZIP2 هم تعیین می‌کند که باید از برنامه bzip2 برای استخراج پورت استفاده شود.

همین طور برای فایل‌های .zip:

USE_ZIP=	yes

برای مدیریت و دسترسی راحت‌تر پورت ها را با توجه به کاربردشان رده‌بندی می‌کنند. شما هم باید رده مناسبی را برای پورت خود انتخاب کنید. سپس با استفاده از متغیر CATEGORIES دسته مورد نظر خود را مشخص کنید.

قسمت دوم هر Makefile دربرگیرنده اطلاعاتی در مورد فایل‌هایی است که باید دانلود شوند و با استفاده از آن پورت را کامپایل کرد که این مورد شامل کد‌های منبع، patchها و … می‌شود.

اگر distfile شما نامی دارد که از قالب رایج تبعیت نمی‌کند، می توانید با متغیر DISTNAME نام آن را مشخص کنید.

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

نصب

ccache را می‌توانید از طریق پورت های FreeBSD نصب کنید:

# cd /usr/ports/devel/ccache && make install clean

و همین طور از طریق بسته‌های باینری:

# pkg_add -r ccache

پیکربندی

خطوط زیر را به فایل /etc/make.conf اضافه کنید:

.if (!empty(.CURDIR:M/usr/src*) || !empty(.CURDIR:M/usr/obj*))
.if !defined(NOCCACHE)
CC:=${CC:C,^cc,/usr/local/libexec/ccache/world/cc,1}
CXX:=${CXX:C,^c\+\+,/usr/local/libexec/ccache/world/c++,1}
.endif
.endif

البته می‌توایند مقادیر CC و CXX را متناسب با کامپایلر مورد علاقه خود تنظیم کنید. اما به یاد داشته باشید که برای کامپایل هسته و world حتماً باید از GCC یا Clang استفاده کنید.

هشدار:
هر بار که مقادیر CC یا CXX را تغییر می‌دهید، باید devel/libtool را مجدداً نصب کنید.

اگر از csh یا tcsh استفاده می‌کنید، خطوط زیر را به فایل /etc/csh.cshrc اضافه کنید:

 setenv PATH /usr/local/libexec/ccache:$PATH
 setenv CCACHE_PATH /usr/bin:/usr/local/bin
 setenv CCACHE_LOGFILE /var/log/ccache.log

اگر از Korn shell و یا Bourne Shell استفاده می‌کنید خطوط زیر را به فایل /etc/profile اضافه کنید:

 export PATH=/usr/local/libexec/ccache:$PATH
 export CCACHE_PATH=/usr/bin:/usr/local/bin
 export CCACHE_LOGFILE=/var/log/ccache.log

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

اگر از csh یا tcsh استفاده می‌کنید، خط زیر را به فایل /etc/csh.cshrc اضافه کنید:

setenv CCACHE_DIR "/usr/.ccache"

اگر از Korn shell و یا Bourne Shell استفاده می‌کنید خط زیر را به فایل /etc/profile اضافه کنید:

export CCACHE_DIR=/usr/.ccache

همان طور که گفته شد اندازه دایرکتوری کش به صورت پیش فرض ۱GB در نظر گرفته شده است. برای تغییر اندازه این دایرکتوری خطوط زیر را به فایل /etc/csh.cshrc اضافه کنید:

if ( -x /usr/local/bin/ccache ) then
  /usr/local/bin/ccache -M 512m > /dev/null
endif

البته به جای ۵۱۲m مقدار مورد نظر خود را قرار دهید.

در پایان، اگر در هنگام کامپایل به مشکلی برخوردید، متغیر NOCCACHE را مقدار‌دهی کرده و عملیات را دوباره شروع کنید:

make NOCCACHE=yes buildworld buildkernel