قالب این فایل بسیار ساده است. هر خط از یک کلیدواژه به همراه یک یا چند آرگومان تشکیل میشود. برای سادگی بیشتر، معمولا هر خط تنها یک آرگومان میگیرد. هر چیزی که بعد از کاراکتر # قرار گیرد به عنوان توضیح تفسیر شده و نادیده گرفته میشود. قرار دادن این کاراکتر در ابتدای خطوط، باعث نادیده گرفته شدن کل آن خط خواهد شد. در ادامه کلیدواژه های این فایل را بررسی میکنیم.
دایرکتیوی به نام include وجود دارد که برای درج یک فایل پیکربندی دیگر مورد استفاده قرار میگیرد. یعنی شما میتوانید دیگر فایلها را به صورت منطقی در فایل پیکربندی خود قرار دهید. مثلا اگر میخواهید تغییرات کوچکی در کرنل GENERIC اعمال کنید، میتوانید به صورت زیر عمل کنید:
include GENERIC ident MYKERNEL options IPFIREWALL options DUMMYNET options IPFIREWALL_DEFAULT_TO_ACCEPT options IPDIVERT
بیشتر افراد استفاده از این روش را ترجیح میدهند؛ چون لازم نیست کل فایل پیکربندی را مجددا بازنویسی کنند.
برای ساخت یک فایل که دربرگیرنده تمام گزینهها باشد، دستور زیر را توسط کاربر ریشه اجرا کنید:
# cd /usr/src/sys/i386/conf && make LINT
در ادامه گزینهها و دایرکتیوهای فایل GENERIC را بررسی میکنیم.
machine i386
این خط معماری ماشین را مشخص میکند. می تواند یکی از مقادیر amd64, i386, ia64, pc98, powerpc یا sparc64 را بگیرد.
cpu I486_CPU cpu I586_CPU cpu I686_CPU
خطوط بالا نوع پردازنده سیستم شما را مشخص میکنند. ممکن است چند نمونه مختلف از این خط داشته باشید (برای موقعی که مطمئن نیستید از چه نوع پردازندهای استفاده میکنید) اما برای ساخت یک هسته سفارشی، بهتر است خط مربوط به پردازنده خود را قرار داده و دیگر خطوط را پاک کنید. برای اینکه نوع پردازنده خود را تشخیص دهید، فایل /var/run/dmesg.boot را چک کنید.
ident GENERIC
با استفاده از کلیدواژه ident می توانید نام دلخواهی را برای هسته خود انتخاب کنید. هسته شما با این نام شناسایی خواهد شد. مثلا در مثال قبلی نام MYKERNEL را برای هسته خود برگزیدیم. این نام در هنگام بوت شدن هسته مورد نظر هم چاپ میشود. بنابراین بهتر است یک نام متفاوت برای این هسته انتخاب کنید تا بتوانید آن را از هسته معمول خود تشخیص دهید.
#To statically compile in device wiring instead of /boot/device.hints #hints "GENERIC.hints" # Default places to look for devices.
مکان پیش فرض این فایل در /boot/device.hints قرار دارد. می توان به جای وارد کردن تنظیمات در این فایل، آنها را مستقیما و به صورت ثابت در هسته قرار داد. بنابراین دیگر احتیاجی به ایجاد این فایل نخواهید داشت.
options SCHED_ULE # ULE scheduler
زمان بند پیش فرض سیستم را مشخص میکند. این خط را پاک نکنید.
options INET # InterNETworking
پشتیبانی از شبکه را فعال میکند. این خط را پاک نکنید؛ حتی اگر هیچ احتیاجی به شبکه ندارید. بیشتر برنامهها برای درست کار کردن حداقل به کارت شبکه loopback احتیاج دارند. (مثل X11) بنابراین وجود این گزینه لازم است.
options INET6 # IPv6 communications protocols
این خط پشتیبانی از پروتکل IPv6 را فعال میکند.
options FFS # Berkeley Fast Filesystem
اگر قرار است FreeBSD را از هارد دیسک بوت کنید، این خط را نگه دارید.
options SOFTUPDATES # Enable FFS Soft Updates support
این گزینه قابلیت Soft Updates را در هسته فعال میکند که این کار باعث میشود اطلاعات با سرعت بیشتری بر روی دیسک نوشته شوند. البته این قابلیت باید در دیسک مورد نظر هم فعال باشد و فعال کردن آن در اینجا به تنهایی کافی نیست. برای اینکه بفهمید این قابلیت در دیسک فعال است یا نه خروجی دستور mount را ببینید. اگر گزینه soft-updates در خروجی موجود بود، یعنی این قابلیت در دیسک هم فعال است. اما اگر این گزینه در خروجی وجود نداشت، باید آن را فعال کنید. برای فعال کردن این قابلیت می توانید از دستور tunefs (برای فایلسیستمهای موجود) و دستور newfs (برای فعال کردن در هنگام ساخت فایلسیستم جدید) استفاده کنید.
options UFS_ACL # Support for access control lists
این خط پشتیبانی از Access Control List یا همان ACL ها را فعال میکند. ACL ها به طور پیش فرض فعال هستند. اگر قبلا در فایلسیستمی از ACL ها استفاده کردهاید، نباید پشتیبانی از ACL را در هسته غیرفعال کنید.
options UFS_DIRHASH # Improve performance on big directories
این گزینه عملکرد سیستم را در هنگام کار با دایرکتوریهای بزرگ بهبود میبخشد. معمولا نباید این گزینه را غیرفعال کنید. در سیستمهایی که سرعت دسترسی به دیسک زیاد مهم نیست (مثل فایروالها) می توان آن را غیر فعال کرد.
options NFSCLIENT # Network Filesystem Client options NFSSERVER # Network Filesystem Server options NFS_ROOT # NFS usable as /, requires NFSCLIENT
این خطوط پشتیبانی از فایل سیستم شبکهای یا همان Network File System را فعال میکنند.
options MSDOSFS # MSDOS Filesystem
این خط پشتیبانی از فایلسیستم MS-DOS را فعال میکند. در صورتی که قصد ندارید این نوع فایلسیستم را در هنگام بوت سیستم mount کنید، می توانید این خط را غیر فعال کنید. هر وقت که فایلسیستمی از این نوع را مونت کردید، این ماژول هم به صورت خودکار بارگذاری میشود.
options CD9660 # ISO 9660 Filesystem
این خط پشتیبانی از فایل سیستم ISO9660 یا همان cd9660 را فعال میکند. اگر در رایانه خود درایو CDROM ندارید یا به ندرت از آن استفاده میکنید، میتوانید این خط را پاک کنید. وقتی که یک CD را مونت کردید، این ماژول هم به صورت خودکار بارگذاری میشود. سی دیهای صوتی یا همان Audio CD ها به این فایلسیستم احتیاج ندارند.
options PROCFS # Process filesystem (requires PSEUDOFS)
این خط پشتیبانی از procfs را فعال میکند. procfs یک فایلسیستم مجازی است که دربرگیرنده اطلاعاتی درباره پروسههای در حال اجرا در سیستم میباشد. این فایلسیستم به برنامههایی مثل ps اجازهمیدهد تا اطلاعات بیشتری را در اختیار شما قرار دهند. در بیشتر مواقع احتیاجی به این فایلسیستم نیست و بیشتر برنامهها میتوانند بدون این فایلسیستم به کار خود ادامه دهند. البته این گزینه خود به گزینه PSEUDOFS وابسته است.
options PSEUDOFS # Pseudo-filesystem framework
پشتیبانی از فایلسیستمهای مجازی مثل procfs را فعال میکند. اگر قرار است از procfs استفاده کنید، این گزینه را هم باید فعال کنید.
options GEOM_PART_GPT # GUID Partition Tables.
این خط پشتیبانی از GPT یا GUID Partition Table را فعال میکند. با استفاده از GPT میتوانید تعداد زیادی پارتیشن در یک دیسک داشته باشید (۱۲۸ تا به صورت پیش فرض)
options COMPAT_43 # Compatible with BSD 4.3 [KEEP THIS!]
برای سازگاری با ۴٫۳BSD. این خط را نگه دارید. بعضی از برنامهها رفتارهای عجیبی از خود نشان خواهند داد.
device eisa
اگر یک مادربرد EISA دارید، این خط را هم اضافه کنید. با اضافه کردن این خط، تمام دستگاهایی که از گذرگاه EISA استفاده میکنند، به صورت خودکار شناسایی و نصب خواهد شد.
device pci
اگر یک مادربرد PCI دارید، این خط را هم اضافه کنید. با اضافه کردن این خط، تمام دستگاهایی که از گذرگاه PCI استفاده میکنند، به صورت خودکار شناسایی و نصب خواهد شد.
# Floppy drives device fdc
این خط پشتیبانی از فلاپیدرایو را فعال میکند.
# ATA and ATAPI devices device ata
این درایور می تواند تمام دستگاههایی که از ATA و ATAPI استفاده میکنند را شناسایی کند.
device atadisk # ATA disk drives
برای شناسایی دیسک های ATA، این خط باید در کنار device ata وجود داشته باشد.
device atapicd # ATAPI CDROM drives
برای شناسایی CDROM های نوع ATAPI، این خط باید به همراه خط device ata وجود داشته باشد.
# SCSI Controllers device ahb # EISA AHA1742 family device ahc # AHA2940 and onboard AIC7xxx devices options AHC_REG_PRETTY_PRINT # Print register bitfields in debug # output. Adds ~128k to driver. device ahd # AHA39320/29320 and onboard AIC79xx devices options AHD_REG_PRETTY_PRINT # Print register bitfields in debug # output. Adds ~215k to driver. device amd # AMD 53C974 (Teckram DC-390(T)) device isp # Qlogic family #device ispfw # Firmware for QLogic HBAs- normally a module device mpt # LSI-Logic MPT-Fusion #device ncr # NCR/Symbios Logic device sym # NCR/Symbios Logic (newer chipsets + those of `ncr') device trm # Tekram DC395U/UW/F DC315U adapters device adv # Advansys SCSI adapters device adw # Advansys wide SCSI adapters device aha # Adaptec 154x SCSI adapters device aic # Adaptec 15[012]x SCSI adapters, AIC-6[23]60. device bt # Buslogic/Mylex MultiMaster SCSI adapters device ncv # NCR 53C500 device nsp # Workbit Ninja SCSI-3 device stg # TMC 18C30/18C50
کنترلرهای SCSI هستند. می توانید هر یک از این خطوط را بردارید؛ اگر دستگاهی از آن نوع را در سیستم ندارید. اگر سیستم شما تنها سختافزارهای نوع IDE دارد، می توانید تمام این خطوط را یک جا بردارید. خطوط *_REG_PRETTY_PRINT گزینههای مربوط به خطایابی برای اینها هستند.
# RAID controllers interfaced to the SCSI subsystem device amr # AMI MegaRAID device arcmsr # Areca SATA II RAID device asr # DPT SmartRAID V, VI and Adaptec SCSI RAID device ciss # Compaq Smart RAID 5* device dpt # DPT Smartcache III, IV - See NOTES for options device hptmv # Highpoint RocketRAID 182x device hptrr # Highpoint RocketRAID 17xx, 22xx, 23xx, 25xx device iir # Intel Integrated RAID device ips # IBM (Adaptec) ServeRAID device mly # Mylex AcceleRAID/eXtremeRAID device twa # 3ware 9000 series PATA/SATA RAID # RAID controllers device aac # Adaptec FSA RAID device aacp # SCSI passthrough for aac (requires CAM) device ida # Compaq Smart RAID device mfi # LSI MegaRAID SAS device mlx # Mylex DAC960 family device pst # Promise Supertrak SX6000 device twe # 3ware ATA RAID
کنترلر های RAID هستند. اگر هیچ دستگاهی از این نوع ندارید، می توانید این خطوط را بردارید.
device vga # VGA video card driver
درایور کارت گرافیک است.
# Power management support (see NOTES for more options) #device apm
این خط پشتیبانی از Advanced Power Managment را فعال میکند. برای استفاده در لپتاپ ها توصیه میشود. هر چند که به صورت پیش فرض در هسته GENERIC فعال نیست.
# PCCARD (PCMCIA) support # PCMCIA and cardbus bridge support device cbb # cardbus (yenta) bridge device pccard # PC Card (16-bit) bus device cardbus # CardBus (32-bit) bus
پشتیبانی از PCMCIA. اگر از یک لپتاپ استفاده میکنید، این خطوط را نگه دارید.
# Serial (COM) ports device sio # 8250, 16[45]50 based serial ports
درایور پورت سریال است. در سیستمعاملهای DOS\WINDOWS به پورت سریال اصطلاحا COM گفته میشود.
# PCI Ethernet NICs. device de # DEC/Intel DC21x4x (“Tulip”) device em # Intel PRO/1000 adapter Gigabit Ethernet Card device ixgb # Intel PRO/10GbE Ethernet Card device txp # 3Com 3cR990 (“Typhoon”) device vx # 3Com 3c590, 3c595 (“Vortex”)
درایورهای مختلف برای انواع مختلف کارت های شبکه. آنهایی که لازم نیستند را بردارید.
# Wireless NIC cards device wlan # 802.11 support
پشتیبانی از شبکه بیسیم و پروتکل ۸۰۲٫۱۱. این خط برای پشتیبانی از این شبکهها لازم است وجود داشته باشد.
device wlan_wep # 802.11 WEP support device wlan_ccmp # 802.11 CCMP support device wlan_tkip # 802.11 TKIP support
روش های مختلف رمزنگاری در شبکههای بیسیم.
device an # Aironet 4500/4800 802.11 wireless NICs. device ath # Atheros pci/cardbus NIC's device ath_hal # Atheros HAL (Hardware Access Layer) device ath_rate_sample # SampleRate tx rate control for ath device awi # BayStack 660 and others device ral # Ralink Technology RT2500 wireless NICs. device wi # WaveLAN/Intersil/Symbol 802.11 wireless NICs. #device wl # Older non 802.11 Wavelan wireless NIC.
درایورهای انواع مختلف کارت شبکههای بیسیم.
# Pseudo devices device loop # Network loopback
درایور کارت شبکه loopback است. این خط لازم است.
device ether # Ethernet support
پشتیبانی از اترنت را فعال میکند. اگر یک کارت شبکه اترنت دارید این خط را نگه دارید.
# USB support device uhci # UHCI PCI->USB interface device ohci # OHCI PCI->USB interface device ehci # EHCI PCI->USB interface (USB 2.0) device usb # USB Bus (required) #device udbp # USB Double Bulk Pipe devices device ugen # Generic device uhid # “Human Interface Devices” device ukbd # Keyboard device ulpt # Printer device umass # Disks/Mass storage - Requires scbus and da device ums # Mouse device ural # Ralink Technology RT2500USB wireless NICs device urio # Diamond Rio 500 MP3 player device uscanner # Scanners # USB Ethernet, requires mii device aue # ADMtek USB Ethernet device axe # ASIX Electronics USB Ethernet device cdce # Generic USB over Ethernet device cue # CATC USB Ethernet device kue # Kawasaki LSI USB Ethernet device rue # RealTek RTL8150 USB Ethernet
درایورهایی برای انواع مختلف دستگاههای USB.
# FireWire support device firewire # FireWire bus code device sbp # SCSI over FireWire (Requires scbus and da) device fwe # Ethernet over FireWire (non-standard!)
درایورهایی برای انواع مختلف دستگاههای FireWire