آموزش LPIC1 – بخش سوم

نصب BootManager

به هنگام بالا آمدن سیستم BIOS که حافظه فقط خواندنی است یکسری موارد را بررسی کرده و ادامه بالا آمدن سیستم را به پست منتقل میکند. پست یکسری تست است ;i سلامت سخت افزارها (رم و هارد) را بررسی میکند. (به طور مثال پیغام هایی که مبنی بر عدم شناخت KeyBoard و فشردن کلید F1 است.) سپس کنترل توسط BIOS به MBR منتقل میشود که محل ذخیره سازی اش 512 باید اول هارد دیسک است که وظیفه این 512 بایت بالا آوردن سیستم عامل است. همچنین قابلیت هایی نظیر امکان انتخاب سیستم عامل ها مختلف یا سیستم عاملی با کرنل های متفاوت و Run نمودن نرم افزارهایی جهت بازیابی اطلاعات (Recovery Mode) را فراهم می آورد.

 

LILO

در لینوکس در ابتدا مدیریت بوت هوشمند در اختیار LILO بود که قدیمی تر از همه بود و پس از آن GRUB و GRUB2 ارائه گردید.

نکته: Chain Load یا Chain Loading یعنی یک Boot Loader سیستم را در اختیار گرفته و تحویل یک Boot Loader دیگر بدهد. به طور مثال وقتی روی سیستمی دو سیستم عامل لینوکس و ویندوز امروزی را نصب کرده باشید، در ابتدا GRUB2 وظیفه در اختیار داشتن Boot Manager را به عهده میگیرد و پس از آن در صورتی که انتخاب کاربر ویندوز باشد، GRUB وظیفه Load سیستم عامل ویندوز را بر عهده ی Boot Loader خود ویندوز میگذارد و در اصطلاح عمل Chain Load را انجام میدهد.

LILO مخفف Linux Loader است و تنظیمات آن در مسیر etc/lilo.conf/ قرار میگرفت. سپس دستور usr/sbin/liloconfig/ اجرا میشد و با توجه به Config های موجود LILO فایلی مانند فایل زیر Generate میگردید.

# Originally generated by liloconfig - modified by Ian Shields

# This allows booting from any partition on disks with more than 1024
# cylinders.
lba32

# Specifies the boot device (floppy)
boot=/dev/fd0

# Specifies the device that should be mounted as root.
# If the special name CURRENT is used, the root device is set to the
# device on which the root file system is currently mounted. If the root
# has been changed with  -r , the respective device is used. If the
# variable ROOT is omitted, the root device setting contained in the
# kernel image is used. It can be changed with the rdev program.
root=/dev/sda7

# Bitmap configuration for /boot/coffee.bmp
bitmap=/boot/coffee.bmp
bmp-colors=12,,11,15,,8
bmp-table=385p,100p,1,10
bmp-timer=38,2,13,1

# Enables map compaction:
# Tries to merge read requests for adjacent sectors into a single
# read request. This drastically reduces load time and keeps the map
# smaller. Using COMPACT is especially recommended when booting from a
# floppy disk.
compact

# Install the specified file as the new boot sector.
# LILO supports built in boot sectors, you only need
# to specify the type, choose one from 'text', 'menu' or 'bitmap'.
# new: install=bmp      old: install=/boot/boot-bmp.b
# new: install=text     old: install=/boot/boot-text.b
# new: install=menu     old: install=/boot/boot-menu.b or boot.b
# default: 'menu' is default, unless you have a bitmap= line
# Note: install=bmp must be used to see the bitmap menu.
# install=menu
install=bmp

# Specifies the number of _tenths_ of a second LILO should
# wait before booting the first image.  LILO
# doesn't wait if DELAY is omitted or if DELAY is set to zero.
# delay=20

# Prompt to use certain image. If prompt is specified without timeout,
# boot will not take place unless you hit RETURN. Timeout is in tenths of
# a second.
prompt
timeout=200

# Enable large memory mode.
large-memory

# Specifies the location of the map file. If MAP is
# omitted, a file /boot/map is used.
map=/boot/map

# Specifies the VGA text mode that should be selected when
# booting. The following values are recognized (case is ignored):
#   NORMAL  select normal 80x25 text mode.
#   EXTENDED  select 80x50 text mode. The word EXTENDED can be
#     abbreviated to EXT.
#   ASK  stop and ask for user input (at boot time).
#   <number>  use the corresponding text mode. A list of available modes
#     can be obtained by booting with  vga=ask  and pressing [Enter].
vga=normal

# Defines non-standard parameters for the specified disk.
#disk=/dev/sda
#    bios=0x80

# If you are using removable USB drivers (with mass-storage)
# you will need to tell LILO to not use these devices even
# if defined in /etc/fstab and referenced in /proc/partitions.
# Adjust these lines to your devices:
#
# disk=/dev/sda inaccessible
# disk=/dev/sdb inaccessible

# These images were automagically added. You may need to edit something.

image=/boot/vmlinuz-2.6.31-14-generic
    label="Lin 2.6.31-14"
    initrd=/boot/initrd.img-2.6.31-14-generic
    read-only

image=/boot/vmlinuz-2.6.31-20-generic
    label="Lin 2.6.31-20"
    initrd=/boot/initrd.img-2.6.31-20-generic
    read-only

image=/boot/memtest86+.bin
    label="Memory Test+"
    read-only

# If you have another OS on this machine (say DOS),
# you can boot if by uncommenting the following lines
# (Of course, change /dev/sda1 to wherever your DOS partition is.)
other=/dev/sda6
        label="Fedora 8"

 other=/dev/sda1
   label="Windows XP"

لازم به ذکر است در فایل بالا # یعنی آن خط Comment بوده و برای توضیحات آورده شده است. مثلا در فایل بالا در روبروی boot دیسک Floppy آورده شده است. یعنی از اولین Floppy Disk که در سیستم شناخته شده است boot انجام پذیرد. مثلا ما میتوانستیم در این بخش dev/sda1/ را قرار دهیم تا از پارتیشن اول هارد boot انجام گردد. دقت داشته باشید که هنوز LILO نصب نگردیده و تنها فایل Config آن را ساخته و در حال ویرایش آن هستیم.

همچنین root مشخص میکند فایل سیستم اصلی سیستم عامل ما کجاست.

در قسمتی که از prompt استفاده گردیده است نیز بدین معناست که منتظر دریافت اطلاعاتی از سمت کاربر است و برای دریافت این اطلاعات نیز 20 ثانیه (200/10 ثانیه) منتظر میماند و اگر پاسخی دریافت نکرد با توجه به گزینه ی Default عمل میکند.

در قسمت map هم یک فایل معرفی میشود که در هنگام boot سیستم LILO این فایل را برای خودش می سازد تا بتواند سیستم عامل را به وسیله آن بالا بیاورد. نکته قابل توجه این است که این فایل بر خلاف سایر فایل ها که فایل تکست بودند، یک فایل باینری است.

در بخش images هم سیستم عامل ها و آپشن هایی که جهت بوت در اختیار کاربر قرار داده میشود مشخص میگردد. به طور مثال در image اول گفته شده که Image کرنل را از مسیر /boot/vmlinuz-2.6.31-14-generic بردار و با نام Lin 2.6.31-14 به عنوان یک آپشن جهت بوت در اختیار کاربران قرار بده. همچنین فایل /boot/initrd.img-2.6.31-14-generic به عنوان رم عمل میکند و به صورت Read Only یا فقط خواندنیست. لازم به ذکر است قبل از Load کرنل لازم است یکسری تعاملات با سخت افزارها نظیر دیسک ها و صفحه کلید انجام پذیرد و سپس کنترل به کرنل منتقل گردد. لازم به ذکر است تعاملات به وسیله این فایل انجام می پذیرد.

image=/boot/vmlinuz-2.6.31-14-generic
    label="Lin 2.6.31-14"
    initrd=/boot/initrd.img-2.6.31-14-generic
    read-only

image=/boot/vmlinuz-2.6.31-20-generic
    label="Lin 2.6.31-20"
    initrd=/boot/initrd.img-2.6.31-20-generic
    read-only

image=/boot/memtest86+.bin
    label="Memory Test+"
    read-only

همچنین در صورتی که قصد استفاده از عملیات Chain Loader را داشته باشیم میتوانیم موارد را در بخش Other تعریف کنیم. LILO به صورت خودکار عمل Chain Load را برای موارد قرار گرفته در Other انجام میدهد.

other=/dev/sda6
        label="Fedora 8"

 other=/dev/sda1
   label="Windows XP"

تا اینجا ما فایل Config را ساختیم و حالا باید LILO را نصب کنیم.

# lilo -v -v
LILO version 22.8, Copyright (C) 1992-1998 Werner Almesberger
Development beyond version 21 Copyright (C) 1999-2006 John Coffman
Released 19-Feb-2007, and compiled at 10:52:38 on Aug 25 2009
Running Linux kernel 2.6.31-14-generic on i686
Ubuntu

raid_setup returns offset = 00000000  ndisk = 0
 BIOS   VolumeID   Device
Reading boot sector from /dev/fd0
pf_hard_disk_scan: ndevs=1
  0800  54085408  /dev/sda
device codes (user assigned pf) = 0
device codes (user assigned) = 0
device codes (BIOS assigned) = 1
device codes (canonical) = 1
mode = 0x03,  columns = 80,  rows = 25,  page = 0
Using BITMAP secondary loader
Calling map_insert_data
Secondary loader: 19 sectors (0x3800 dataend).
Warning: The boot sector and map file are on different disks.
bios_boot = 0x00  bios_map = 0x80  map==boot = 0  map S/N: 54085408
Mapping bitmap file /boot/coffee.bmp
Calling map_insert_file
Compaction removed 592 BIOS calls.
Bitmap: 603 sectors.
BIOS data check was okay on the last boot

Boot image: /boot/vmlinuz-2.6.31-14-generic
Setup length is 26 sectors.
Compaction removed 7452 BIOS calls.
Mapped 7601 sectors.
Mapping RAM disk /boot/initrd.img-2.6.31-14-generic
Compaction removed 14696 BIOS calls.
RAM disk: 14930 sectors.
Added Lin_2.6.31-14 *

Boot image: /boot/vmlinuz-2.6.31-20-generic
Setup length is 26 sectors.
Compaction removed 7468 BIOS calls.
Mapped 7617 sectors.
Mapping RAM disk /boot/initrd.img-2.6.31-20-generic
Compaction removed 14704 BIOS calls.
RAM disk: 14938 sectors.
Added Lin_2.6.31-20

Boot image: /boot/memtest86+.bin
Setup length is 4 sectors.
Compaction removed 243 BIOS calls.
Mapped 254 sectors.
Added Memory_Test+

Boot other: /dev/sda6, loader CHAIN
Pseudo partition start: 43198848
Compaction removed 0 BIOS calls.
Mapped 6 (4+1+1) sectors.
Added Fedora_8

Boot other: /dev/sda1, on /dev/sda, loader CHAIN
Compaction removed 0 BIOS calls.
Mapped 6 (4+1+1) sectors.
Added Windows_XP

 BIOS   VolumeID   Device
  80    54085408    0800
Writing boot sector.
/boot/boot.0200 exists - no boot sector backup copy made.
Map file size: 336896 bytes.
RAID device mask 0x0000
One warning was issued.

تقریبا در هر جا از فلگ V استفاده کنیم به این معنی است که قصد داریم بدانیم دقیقا چه اتفاقاتی می افتد و درخواست داریم چیزهای زیادی برایمان روی صفحه نمایش داده شود. مثلا ما میتوانیم در LILO تا 5 بار فلگ v- بدهیم و هر بار استفاده باعث گزارش دهی بیشتر می شود. همانطور که مشاهده میکنید در این فایل تنظیمات فایل کانفیگی که ساخته ایم اعمال شده است، مثلا می گوید از Reading boot sector from /dev/fd0 اطلاعات خوانده شود که در فایل کانفیگ در بخش boot معرفی کرده بودیم.

همچنین Chain Loader ها هم مطابق Config ما ایجاد و در نظر گرفته شده اند.

Boot other: /dev/sda6, loader CHAIN
Pseudo partition start: 43198848
Compaction removed 0 BIOS calls.
Mapped 6 (4+1+1) sectors.
Added Fedora_8

Boot other: /dev/sda1, on /dev/sda, loader CHAIN
Compaction removed 0 BIOS calls.
Mapped 6 (4+1+1) sectors.
Added Windows_XP

همچنین سوئیچ های دیگری نیز دارد که به شرح زیر می باشد.

 

switch meaning
-q show information about the map file. map file is located at /boot/map and contains the boot configs
-R boot the system on the next reboot only. Used for remote systems
-l list information about the Kernel
-u uninstall lilo and restore previous boot record

مهمترین فلگ آن u- است که LILO را Uninstall نموده و MBR قبلی را جایگزین MBR فعلی می نماید. همچنین اگر سیستمی با LILO بوت شد می توان از  طریق Arrow Key ها در منوها بالا پایین رفت و گزینه ی TAB اجازه Edit گزینه ها را میدهد.

 

GRUB

از اسامی دیگر GRUB میتوان به grub نسخه 1 (از نظر فنی 09) و grub legacy اشاره کرد. فایل کانفیگ آن در مسیر /boot/grub/grub.conf و یا /boot/grub/menu.lst که یک symlink به مسیر قبلی است قابل دسترس است.

فایل کانفیگ آن به شرح زیر است.

# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You do not have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /, eg.
#          root (hd0,5)
#          kernel /boot/vmlinuz-version ro root=/dev/sda6
#          initrd /boot/initrd-version.img
#boot=/dev/sda6
default=1
timeout=10
splashimage=(hd0,5)/boot/grub/splash.xpm.gz
#hiddenmenu
password --md5 $1$RW1VW/$4XGAklxB7/GJk0uO47Srx1
title Upgrade to Fedora 11 (Leonidas)
    kernel /boot/upgrade/vmlinuz preupgrade \ 
      repo=hd::/var/cache/yum/preupgrade stage2=\
      hd:UUID=8b4c62e7-2022-4288-8995-5eda92cd149b:/boot/upgrade/install.img \
      ks=hd:UUID=8b4c62e7-2022-4288-8995-5eda92cd149b:/boot/upgrade/ks.cfg
    initrd /boot/upgrade/initrd.img
title Fedora (2.6.26.8-57.fc8)
    root (hd0,5)
    kernel /boot/vmlinuz-2.6.26.8-57.fc8 ro root=LABEL=FEDORA8 rhgb quiet
    initrd /boot/initrd-2.6.26.8-57.fc8.img
title Fedora (2.6.26.6-49.fc8)
    root (hd0,5)
    kernel /boot/vmlinuz-2.6.26.6-49.fc8 ro root=LABEL=FEDORA8 rhgb quiet
    initrd /boot/initrd-2.6.26.6-49.fc8.img
title GRUB Menu
    rootnoverify (hd0,1)
    chainloader +1
title Windows
    rootnoverify (hd0,0)
    chainloader +1

همانند LILO قسمتی با نام boot داریم که در اینجا Comment شده است. همچنین گزینه ای با نام default وجود دارد که روی 1 ست شده است. یعنی در لیست سیستم عامل هایی که جهت Load نمایش میدهد، گزینه دوم (گزینه ها از صفر شروع میشوند.) به عنوان پیش فرض در نظر گرفته شود. همچنین مدت زمان واکنش کاربر به انتخاب یکی از گزینه ها روی 10 ثانیه ست شده است.

بخش splashimage میگوید که تصویر Background مربوط به Boot Loader را از پارتیشن 5ام هارد اول در مسیر ذکر شده انتخاب کن.

اگر برای boot کلمه عبور داشته باشم، به صورت MD5 در بخش password نمایش داده میشود.

سپس گزینه ها معرفی میگردند.

title Fedora (2.6.26.8-57.fc8)
    root (hd0,5)
    kernel /boot/vmlinuz-2.6.26.8-57.fc8 ro root=LABEL=FEDORA8 rhgb quiet
    initrd /boot/initrd-2.6.26.8-57.fc8.img

تایتلی که به کاربر به هنگام بوت برای گزینه ها نمایش داده میشود در بخش title معرفی میگردد. سپس در بخش root دایرکتوری نصب فدورا و فایل سیستم ها مشخص میگردد که در اینجا پارتیشن 6ام هارد اول است. در بخش Kernel مسیر kernel ما قرار داده میشود و در آخر در بخش initrd مسیر Ram Drive که قبلا توضیح داده شد قرار میگیرد. همچنین در صورتی که عملیات Chain load مورد نظر باشد از عبارت chainloader +1 در بخش تعریف گزینه ها استفاده می شود.

نکته: Grub Legacy همیشه شمردن پارتیشن ها را از 0 شروع میکند، برخلاف GRUB2 که شمارش در آن از 1 شروع می شود.

چکیده ای از گزینه هایی که توضیح داده شد را در زیر مشاهده میکنید.

 

command meaning
# comment
default the default system to boot; starts from 0
timeout how long to wait before autobooting
splashimage background image
password Security is important! will ask this password
title Name of the entery
root The partion to boot. Counting starts from 0. root(hd0,2) is the 3rd partion on the first disk
kernel which kernel image should be loaded
initrd the name of the initial RAM disk. Modules needed by the kernel before the file system is mounted
savedefault remember the last booted item
chainloader another file will act as stage 1 loader. Used for booting Windows systems

در بالا savedefault یعنی به صورت اتوماتیک آخرین گزینه بوت کاربر را به عنوان پیش فرض قرار بده.

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

# grub-install /dev/fd0
# grub-install '(fd0)'

در دستور بالا نصب در پارتیشن انتخاب شده صورت میپذیرد، به طور مثال ما میتوانید sda1 را انتخاب نماییم.

همچنین با Arrow Key میتوان بین گزینه ها حرکت کرد، با گزینه ی e گزینه ای را Edit کرد و پس از Edit با گزینه b مورد Edit شده را Load کرد.

 

GRUB2

این نسخه، معمول ترین Boot Loader بوده که در اکثر توزیع های شناخته شده ی لینوکس مورد استفاده قرار میگیرد. فایل کانفیگ آن در /boot/grub/grub.cfg قرار داشته و در صورت عدم وجود نیز میتوان با دستور زیر نسبت به ایجاد آن اقدام نمود.

grub-mkconfig > /boot/grub/grub.cfg

مثال فایل کانفیگ:

### BEGIN /etc/grub.d/05_debian_theme ###                               
set menu_color_normal=white/black
set menu_color_highlight=black/white
### END /etc/grub.d/05_debian_theme ###                                 

### BEGIN /etc/grub.d/10_linux ###                                      
menuentry "Ubuntu, Linux 2.6.31-20-generic" {
        recordfail=1
        if [ -n ${have_grubenv} ]; then save_env recordfail; fi
        set quiet=1
        insmod ext2
        set root=(hd0,7)
        search --no-floppy --fs-uuid --set 8954fa66-e11f-42dc-91f0-b4aa480fa103
        linux   /boot/vmlinuz-2.6.31-20-generic \
          root=UUID=8954fa66-e11f-42dc-91f0-b4aa480fa103 ro   quiet splash
        initrd  /boot/initrd.img-2.6.31-20-generic
}
menuentry "Ubuntu, Linux 2.6.31-20-generic (recovery mode)" {
        recordfail=1
        if [ -n ${have_grubenv} ]; then save_env recordfail; fi
        insmod ext2
        set root=(hd0,7)
        search --no-floppy --fs-uuid --set 8954fa66-e11f-42dc-91f0-b4aa480fa103
        linux   /boot/vmlinuz-2.6.31-20-generic 
         root=UUID=8954fa66-e11f-42dc-91f0-b4aa480fa103 ro single
        initrd  /boot/initrd.img-2.6.31-20-generic
}

حال که فایل کانفیگ ایجاد شد، برای نصب میتوانیم از دستور grub-install /dev/sda استفاده کنیم. نمونه ای از گزینه های دیگر این دستور به شرح زیر است.

نکته: در برخی توزیع ها به جای grub-install از grub2-install استفاده میگردد.

$ grub-install --help
Usage: grub-install [OPTION] install_device
Install GRUB on your drive.

  -h, --help              print this message and exit
  -v, --version           print the version information and exit
  --modules=MODULES       pre-load specified modules MODULES
  --root-directory=DIR    install GRUB images under the directory DIR
                          instead of the root directory
  --grub-setup=FILE       use FILE as grub-setup
  --grub-mkimage=FILE     use FILE as grub-mkimage
  --grub-mkdevicemap=FILE use FILE as grub-mkdevicemap
  --grub-probe=FILE       use FILE as grub-probe
  --no-floppy             do not probe any floppy drive
  --recheck               probe a device map even if it already exists
  --force                 install even if problems are detected
  --disk-module=MODULE    disk module to use

INSTALL_DEVICE can be a GRUB device name or a system device filename.

grub-install copies GRUB images into the DIR/boot directory specified by
--root-directory, and uses grub-setup to install grub into the boot
sector.

Report bugs to <bug-grub@gnu.org>.

 

 

نویسنده: میلاد خوشدل

منابع:

-جادی
-sybex
-کتاب راهنمای جامع مدرک بین المللی Lpic1


پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

7 + سه =