Product SiteDocumentation Site

8.8. پیکربندی راه‌انداز اولیه

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

8.8.1. شناسایی دیسک‌ها

پیکربندی راه‌انداز اولیه باید هارد درایوهای مختلف با پارتیشن‌های مربوطه را شناسایی کند. لینوکس از فایل‌های ویژه “بلاک” که در /dev/ ذخیره می‌شوند به این منظور استفاده می‌کند. به این منظور، از دبیان Squeeze، شیوه نامگذاری هارد درایوها توسط کرنل لینوکس یکپارچه شده است و تمام هارد درایوها (IDE/SATA، SATA، SCSI، USB، IEEE 1394) اکنون توسط /dev/sd* شناخته می‌شوند.
هر پارتیشن با عدد مخصوص به خود روی دیسک شناسایی می‌گردد: برای نمونه، /dev/sda1 اولین پارتیشن روی اولین دیسک و /dev/sdb3 سومین پارتیشن روی دومین دیسک است.
معماری PC (یا “i386” به همراه “amd64”) تنها محدود به استفاده از قالب جدول پارتیشن “MS-DOS” بوده است، که تنها اجازه چهار پارتیشن “اولیه” روی هر دیسک را می‌دهد. برای غلبه بر این محدودیت یکی از پارتیشن‌ها باید به صورت “گسترش‌یافته” درآید و در آنجا می‌تواند شامل پارتیشن‌های “ثانویه” باشد. این پارتیشن‌های ثانویه از شماره ۵ آغاز می‌گردند. بنابراین اولیه پارتیشن ثانویه روی دیسک با /dev/sda5 شناخته می‌شود و به همین شکل ادامه می‌یابد.
دیگر محدودیت قالب جدول پارتیشن‌بندی MS-DOS این است که تنها قادر به شناسایی دیسک‌های تا ۲ ترابایت حافظه جانبی است که این مشکل امروزه با توجه به افزایش حجم دیسک‌ها جدی شده است.
قالب جدید پارتیشن‌بندی GPT به محدودیت‌های فعلی غلبه می‌کند که شامل تعداد پارتیشن‌ها (تا ۱۲۸ پارتیشن اصلی هنگام استفاده از تنظیمات استاندارد) و اندازه و حجم دیسک‌های مورد استفاده (بالغ بر ۸ زتابایت، که بیش از ۸ میلیارد ترابایت است) می‌باشد. اگر قصد ایجاد تعداد زیادی پارتیشن فیزیکی روی یک دیسک را دارید، باید اطمینان یابید که از قالب پارتیشن‌بندی GPT هنگام پارتیشن‌بندی دیسک‌ها استفاده می‌کنید.
به خاطر سپردن اینکه کدام دیسک به کدام کنترلر SATA متصل است، یا در کدام موقعیت زنجیره SCSI قرار دارد کار ساده‌ای نیست، به خصوص زمانی که نامگذاری هارد درایوهای جداشونده در هر مرتبه راه‌اندازی اولیه سیستم ممکن است تغییر کند. خوشبختانه، udev علاوه بر /dev/sd*، پیوندهای نمادین با نام‌های ثابت ایجاد می‌کند که می‌توانید از آن‌ها برای شناسایی یک هارد درایو به صورت مشخص استفاده کنید. این پیوندهای نمادین در فایل /dev/disk/by-id ذخیره می‌شوند. برای نمونه، در رایانه‌ای با دو دیسک فیزیکی می‌توان به اطلاعات زیر دست یافت:
mirexpress:/dev/disk/by-id# ls -l
total 0
lrwxrwxrwx 1 root root  9 23 jul. 08:58 ata-STM3500418AS_9VM3L3KP -> ../../sda
lrwxrwxrwx 1 root root 10 23 jul. 08:58 ata-STM3500418AS_9VM3L3KP-part1 -> ../../sda1
lrwxrwxrwx 1 root root 10 23 jul. 08:58 ata-STM3500418AS_9VM3L3KP-part2 -> ../../sda2
[...]
lrwxrwxrwx 1 root root  9 23 jul. 08:58 ata-WDC_WD5001AALS-00L3B2_WD-WCAT00241697 -> ../../sdb
lrwxrwxrwx 1 root root 10 23 jul. 08:58 ata-WDC_WD5001AALS-00L3B2_WD-WCAT00241697-part1 -> ../../sdb1
lrwxrwxrwx 1 root root 10 23 jul. 08:58 ata-WDC_WD5001AALS-00L3B2_WD-WCAT00241697-part2 -> ../../sdb2
[...]
lrwxrwxrwx 1 root root  9 23 jul. 08:58 scsi-SATA_STM3500418AS_9VM3L3KP -> ../../sda
lrwxrwxrwx 1 root root 10 23 jul. 08:58 scsi-SATA_STM3500418AS_9VM3L3KP-part1 -> ../../sda1
lrwxrwxrwx 1 root root 10 23 jul. 08:58 scsi-SATA_STM3500418AS_9VM3L3KP-part2 -> ../../sda2
[...]
lrwxrwxrwx 1 root root  9 23 jul. 08:58 scsi-SATA_WDC_WD5001AALS-_WD-WCAT00241697 -> ../../sdb
lrwxrwxrwx 1 root root 10 23 jul. 08:58 scsi-SATA_WDC_WD5001AALS-_WD-WCAT00241697-part1 -> ../../sdb1
lrwxrwxrwx 1 root root 10 23 jul. 08:58 scsi-SATA_WDC_WD5001AALS-_WD-WCAT00241697-part2 -> ../../sdb2
[...]
lrwxrwxrwx 1 root root  9 23 jul. 16:48 usb-LaCie_iamaKey_3ed00e26ccc11a-0:0 -> ../../sdc
lrwxrwxrwx 1 root root 10 23 jul. 16:48 usb-LaCie_iamaKey_3ed00e26ccc11a-0:0-part1 -> ../../sdc1
lrwxrwxrwx 1 root root 10 23 jul. 16:48 usb-LaCie_iamaKey_3ed00e26ccc11a-0:0-part2 -> ../../sdc2
[...]
lrwxrwxrwx 1 root root  9 23 jul. 08:58 wwn-0x5000c50015c4842f -> ../../sda
lrwxrwxrwx 1 root root 10 23 jul. 08:58 wwn-0x5000c50015c4842f-part1 -> ../../sda1
[...]
mirexpress:/dev/disk/by-id# 
برخی از دیسک‌ها چندین بار در این فهرست آورده شده‌اند (چرا که همزمان به صورت دیسک‌های ATA و SCSI رفتار می‌کنند) اما اطلاعات مربوطه در قسمت مدل و شماره سریال هر یک از دیسک‌ها است که از طریق ‌آن‌ها می‌توانید فایل‌های مربوطه را پیدا کنید.
فایل‌های پیکربندی نمونه که در قسمت‌های بعدی به آن‌ها اشاره می‌شود بر اساس یک تنظیم یکسان هستند: یک دیسک SATA واحد، که اولین پارتیشن آن یک نصب قدیمی از ویندوز است و پارتیشن دوم شامل دبیان گنو/لینوکس است.

8.8.2. پیکربندی LILO

LILO که مخفف LInux LOader است قدیمی‌ترین راه‌انداز اولیه در لینوکس است - قدیمی اما اصیل. نشانی فیزیکی کرنل برای راه‌اندازی را روی MBR می‌نویسد، به همین دلیل هر بروزرسانی LILO یا فایل‌های پیکربندی آن باید به همراه اجرای دستور lilo باشد. فراموش کردن این امر باعث می‌شود سیستم در حالتی قرار بگیرد که نشانی کرنل قبلی پاک شده باشد و کرنل جدید نیز اکنون در MBR موجود نباشد.
فایل پیکربندی LILO با نام /etc/lilo.conf شناخته می‌شود؛ یک فایل نمونه برای پیکربندی استاندارد در ادامه آورده می‌شود.

مثال 8.3. فایل پیکربندی LILO

# The disk on which LILO should be installed.
# By indicating the disk and not a partition.
# you order LILO to be installed on the MBR.
boot=/dev/sda
# the partition that contains Debian
root=/dev/sda2
# the item to be loaded by default
default=Linux

# the most recent kernel image
image=/vmlinuz
  label=Linux
  initrd=/initrd.img
  read-only

# Old kernel (if the newly installed kernel doesn't boot)
image=/vmlinuz.old
  label=LinuxOLD
  initrd=/initrd.img.old
  read-only
  optional

# only for Linux/Windows dual boot
other=/dev/sda1
  label=Windows

8.8.3. پیکربندی GRUB2

GRUB که مخفف GRand Unified Bootloader نسخه جدید راه‌اندازهای اولیه است. پس از بروزرسانی هر نسخه کرنل الزامی به فراخوانی مجدد آن نیست؛ GRUB خود می‌داند که چطور فایل‌سیستم را بخواند و موقعیت کرنل را روی دیسک تشخیص دهد. برای نصب آن روی MBR اولین دیسک، تنها کافی است دستور grub-install /dev/sda را وارد کنید.
پیکربندی GRUB2 در فایل /boot/grub/grub.cfg ذخیره می‌شود، اما این فایل (در دبیان) از سایر اسکریپت‌ها تشکیل شده است. دقت داشته باشید که آن را به صورت دستی تغییر ندهید، چرا که چنین تغییراتی در اجرای بعدی update-grub از بین خواهند رفت (که ممکن است طی بروزرسانی بسته‌های مختلف اجرا گردد). متداول‌ترین تغییرات در فایل /boot/grub/grub.cfg (برای نمونه، افزودن پارامترهای خط فرمان به کرنل جهت تغییر مدت زمان نمایش منو) از طریق متغیرهای موجود در /etc/default/grub صورت می‌گیرند. برای افزودن سطرهایی به منو، می‌توانید یک فایل /boot/grub/custom.cfg ایجاد کرده یا محتویات فایل /boot/grub/50_custom را ویرایش کنید. برای پیکربندی‌های پیچیده‌تر، می‌توانید سایر فایل‌های موجود در /etc/grub.d را ویرایش یا به آن‌ها فایلی اضافه کنید؛ این اسکریپت‌ها هنگام استفاده از برنامه‌های خارجی، تکه کدهای پیکربندی مورد نیاز را تولید می‌کنند. این‌ها اسکریپت‌هایی هستند که فهرست کرنل‌های موجود را بروزرسانی می‌کنند: 10_linux کرنل‌های نصب شده لینوکس را به حساب می‌آورد؛ 20_linux_xen سیستم‌های مجازی Xen را به حساب می‌آورد و 30_os-prober سایر سیستم عامل‌های موجود را فهرست می‌کند (ویندوز، مکینتاش، گنو هرد).

8.8.4. برای رایانه‌های مکینتاش (PowerPC): پیکربندی Yaboot

Yaboot راه‌انداز اولیه مورد استفاده در نسخه‌های قدیمی‌تر مکینتاش با استفاده از پردازنده‌های PowerPC است. آن‌ها مانند PC راه‌اندازی نمی‌گردند، بلکه به یک پارتیشن “راه‌انداز” وابسته هستند که از طریق آن BIOS یا OpenFirmware سیستم راه‌انداز را فراخوانی می‌کند و درون آن برنامه ybin اقدام به نصب yaboot و پیکربندی‌های مورد نیاز آن می‌نماید. تنها زمانی نیاز دارید این دستور را اجرا کنید که فایل /etc/yaboot.conf ویرایش شده باشد (که در پارتیشن راه‌انداز نیز قرار دارد و yaboot می‌داند چطور موقعیت کرنل‌ها روی دیسک را تشخیص دهد).
قبل از اجرای ybin، ابتدا باید یک فایل معتبر /etc/yaboot.conf داشته باشید. مثالی که در ادامه می‌آید حداقل پیکربندی مورد نیاز برای اینکار است.

مثال 8.4. فایل پیکربندی Yaboot

# bootstrap partition
boot=/dev/sda2
# the disk
device=hd:
# the Linux partition
partition=3
root=/dev/sda3
# boot after 3 seconds of inactivity
# (timeout is in tenths of seconds)
timeout=30

install=/usr/lib/yaboot/yaboot
magicboot=/usr/lib/yaboot/ofboot
enablecdboot

# last kernel installed
image=/vmlinux
        label=linux
        initrd=/initrd.img
        read-only

# old kernel
image=/vmlinux.old
        label=old
        initrd=/initrd.img.old
        read-only

# only for Linux/Mac OSX dual-boot
macosx=/dev/sda5

# bsd=/dev/sdaX and macos=/dev/sdaX
# are also possible