راهنمای گراب


ترجمه: ابراهیم محمدی

مشارکت کنندگان: سعید زبردست


گراب چیست؟

گراب يك Boot Loader است. Boot Loader اولين چيزی است كه بعد از راه‌اندازی سيستم اجرا می‌شود. گراب به شما اجازه می‌دهد كه سيستم عامل‌های متفاوت و از هر كدام انواع مختلف را بر روی يك هارد ديسك واحد يا بر روی چندين هارديسك و بر روی يك سيستم داشته باشيد. براي مثال اگر شما هر دو سيستم عامل ويندوز و لينوكس را بر روي سيستم خود نصب كرده باشيد، گراب قبل ازهر دوی اين سيستم‌عامل‌ها اجرا می‌شود و به شما اين اجازه را می‌دهد كه يكي از آن را برای بوت‌ شدن انتخاب كنيد. شما همچنين با استفاده از گراب می‌توانيد يك فلاپی بوت درست كنيد تا در صورت وقوع اتفاق‌های غير منتظره از آن‌ استفاده كنيد.

ایجاد نسخه پشتیبان از تنظیمات گراب

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

sudo cp /boot/grub/menu.lst /boot/grub/menu.lst.back 

دستور بالا از فایل menu.lst یک پشتیبان تهیه می‌کند. بدین شکل در صورت بروز مشکل می‌توانید تنظیمات گراب را به حالت قبل بازگردانید.

ویرایش فایل menu.lst

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

اوبونتو

sudo gedit /boot/grub/menu.lst

کوبونتو

sudo kate /boot/grub/menu.lst

زوبونتو

gksudo mousepad /boot/grub/menu.lst

تغییر گزینه‌های بوت در گراب

اگر شما نياز داشته باشيد تا براي تغيير گزينه بوت يا انتخاب يك هسته متفاوت به داخل منوی گراب وارد شود، بايد بلافاصله بعد از اجرای گراب دكمه ESC را فشار دهيد. به طور پيش‌فرض شما بايد دكمه ESC را خيلي سريع فشار دهيد. براي افزايش اين زمان شما بايد فايل menu.lst را ويرايش كنيد و زمان وارد شده در قسمت timeout را كه برچسب ثانيه است را زياد كنيد.

همچنين شما می‌توانيد اين منو را هميشه در هنگام اجرای گراب داشته باشيد. براي اين كار، با برداشتن # از ابتدای 'hiddenmenu' آن را از حالت توضيحات خارج كنيد.

بعد از فشار دادن ESC ليستی از هسته‌ها‌ و سيستم عامل‌هایی كه شما قادر به بوت كردن سيستم به وسيله آن‌ها هستید، به شما ارائه خواهد شد. براي اصلاح گزينه بوت، سيستم عاملی كه می‌خواهيد ويرايش كنيد را انتخاب و سپس دكمه 'e' را فشار دهيد. در آن‌جا خط‌هایی كه با 'savedefault' , 'quiet , 'initrd' , 'kernel' و 'root' شروع می‌شوند به شما نشان داده خواهد شد. براي داشتن يك عمليات بوت طولانی ، شما مي‌توانيد خط 'quiet' را با انتخاب آن و زدن دكمه 'd' حذف كنيد. شما همچنين بايد خط 'kernel' را انتخاب و با زدن دكمه 'e' اين خط را ويرايش و كلمه 'splash' را از انتهای اين خط حذف كنيد. بعد از انجام اصلاحات لازم، شما می‌توانيد با فشار دادن'b' سيستم را با سيستم‌عامل انتخابی خود بوت كنيد. تغييرات انجام شده موقتی بوده در هنگام راه‌اندازی مجدد اعمال نخواهد شد.

تذكر: اگر برنامه نصاب اوبونتو در هنگام نصب، سيستم عامل ديگری را بر روی سيستم شما تشخيص دهد، منوی گراب به طور پيش‌فرض به نمايش درخواهد آمد و زمان 'timeout' افزايش خواهد يافت، بنابراين انجام مرحله بالا غيرضروری خواهد بود.

فهرست هسته‌های Automagic

اوبونتو از يك ابزار به نام update-grub براي ايجاد تغييرات در menu.lst استفاده مي‌كند. update-grub به طور خودكار تمام هسته‌هایی را كه شما در شاخه boot داريد شناسایی می‌کند و بر روی هر کدام تنظيمات مختلف سراسری را اعمال می‌كند. هر وقت كه شما هسته لينوكس را با استفاده از مخازن به روز می‌كنید update-grub برای تصحيح تنظيمات گراب اجرا می‌شود.

بخش‌هایی از menu.lst كه update-grub آن‌را مورد توجه قرار می‌دهد قسمت مابين دو خط "### BEGIN AUTOMAGIC KERNELS LIST" و "### END DEBIAN AUTOMAGIC KERNELS LIST" می‌باشد. توضيحات بعد از دو # می‌آيد. به طور مثال:(## اين يك توضيح است). گزينه‌های جهانی بعد از يك # می‌‌آيند. مانند خط زیر:

# groot=(hd0,4)

متداول‌ترين گزينه براي تغيير احتمالا گزينه groot می‌باشد. اين گزينه را در صورتی تغيير دهيد كه boot در پارتيشنی متفاوت از پارتيشن / قرار داشته باشد. قسمت مربوطه در همين مقاله را براي كسب اطلاعات بيشتر درباره پارتيشن متفاوت boot/ مطالعه كنيد. گزينه‌ ديگر برای تغيير Kopt می‌باشد كه مربوط به تنظيمات هسته می‌باشد و به تمام هسته‌های موجود در menu.lst اعمال می‌گردد.

تنظيم پارامترهای هسته

در menu.lst شما خطی مانند زير خواهيد يافت.

# kopt=root=/dev/sda1 ro

اين خط شبيه توضيحات می‌باشد ولي'#' در ابتدای خط را حذف نكنيد.

نكته مهم: گراب اين خط را به عنوان توضيحات فرض می‌كند و آن را ناديده می‌گيرد ولی اين خط به عنوان يك پارامتر پيكربندی توسط upsate-grub برای ساخت محتوای فايلی كه گراب آن‌را در هنگام بوت می‌خواند استفاده می‌شود.

اگر شما نياز به پارامترهای اضافی هسته داريد (به عنوان مثال شخصی از شما می‌خواهد تا عمليات بوت را براي آزمايش يك مشكل با پارامترهای خاصی امتحان كنيد.) كافی است آن‌ها را به انتهای اين خط اضافه كنيد. به عنوان مثال براي اضافه كردن noapic:

# kopt=root=/dev/sda1 ro noapic

بعد از ويرايش فايل دستور زير را در ترمينال اجرا كنيد.

sudo update-grub

توجه داشته باشيد كه شما می‌توانيد با فشار دادن 'e' در هنگام نمايش منوی گراب و ويرايش خط هسته، پارامترهای هسته را به صورت موقت تغيير بدهيد. همانطور كه می‌دانيد اين تغييرات فقط مختص عمليات بوت جاری می‌‌باشد و در راه‌اندازی‌های بعد اعمال نمی‌گردد.

اگر boot در شاخه‌ ديگری قرار داشته باشد

<!> این قسمت به زودی تکمیل خواهد شد ...

تغییر دیسکی که گراب در آن نصب شده است

فرض کنید در سیستمتان دو هارد( SATA(/dev/sda و (PATA(/dev/hdaرادارید .میخواهیدسیستم از روی SATAبوت شود اما BIOS برای بوت PATAرا به SATA ترجیح میدهد .برای حل این مشکل مراحل زیر را دنبال کنید :

مرحله اول : یافتن (groot (GRUB root

گراب نام درایوهارادر فایل boot/grub/device.map /،به صورت جدولی که شامل نام گرابی (برای مثال(hd0))و نام لینوکسی (برای مثال (/dev/hda))،لیست میکند .باید بدانیم کهboot/ در کدام درایو و پارتیشن قرار دارد برای این منظور از دستور df /boot استفاده میکنیم .خروجی این دستور نام پارتیشن لینوکسی است که boot/ در آنجا قرار دارد که خیلی راحت میتوان این خروجی را با اطلاعات داخل فایل boot/grub/device.map /هماهنگ کرد .

برای مثال

$ df /boot 
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda5              46M   15M   30M  33% /boot

$ cat /boot/grub/device.map 
(hd0)   /dev/hda
(hd1)   /dev/sda

در نتیجه groot باید بر روی (hda1,4)تنظیم شود.

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

## default grub root device 
## e.g. groot=(hd0,0)
# groot=(hd1,4)

مرحله دوم :یافتن kernel root

بایدبرای کرنل مشخص کنیم که / در کجا mount شده .برای این منظور از دستور/ df استفاده میکنیم .با استفاده از خروجی این دستور مقدار معادل kopt را در فایل menu.lst ویرایش میکنیم .

برای مثال :

$ df / 
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda3              14G  8.3G  5.0G  63% /

فایل menu.lst را به صورت زیر ویرایش میکنیم

## default kernel options 
## default kernel options for automagic boot options
## If you want special options for specifiv kernels use kopt_x_y_z
## where x.y.z is kernel version. Minor versions can be omitted.
## e.g. kopt=root=/dev/hda1 ro
# kopt=root=/dev/sda3 ro /

به طور خلاصه : groot محلی است که boot/ در آنجا قرار دارد و kopt=root محلی است که / در آنجا قرار دارد.

Boot Splash Image

گراب به شما اجازه می‌دهد تا از يك عكس در پس‌زمينه منوی گراب استفاده كنيد. شما مي‌توانيد در بسته 'grub-splashimages' يك مجموعه عكس مناسب پيدا كنيد يا می‌توانيد خودتان يك عكس براي اين كار بسازيد.

عكس بايد 488*640 پيكسل اندازه داشته باشد و بيش از 16 رنگ نداشته باشد (هر چند داشتن تعداد رنگ كمتر مانند 12 رنگ باعث می‌شود كه با انتخاب رنگ متفاوت براي متن منوی گراب نوشته‌های منو خواناتر شود) و به صورت قالب gzipped xpm باشد.

از برنامه گیمپ می‌توانيد برای تغيير اندازه عكس (Image -> Scale Image) و كاهش تعداد رنگ (Image -> Mode -> Indexed) استفاده كنيد. همچنين گيمپ قادر است تا عكس را به صورت xpm.gz ذخيره كند.

و یا در خط فرمان در صورتی که نرم افزار Image Magick نصب است استفاده نمایید :

sudo convert -resize 640x480 -colors 14 FILE_NAME.jpg splashimage.xpm

در انتها آن را با فرمت gz فشرده سازی نمایید :

sudo gzip splashimage.xpm

پيكربندی دستی

بعد از ساختن فايل مربوطه، خطي مانند زير را به menu.lst سيستم خود اضافه كنيد.

splashimage=(hd0,4)/boot/grub/splash.xpm.gz

يك ترفند سودمند براي اين قسمت ايجاد يك لينك از عكس واقعی با نام splash.xpm.gz می‌باشد.

cd /boot/grub
sudo ln -s my_image.xpm.gz splash.xpm.gz

گراب در هنگام بوت عكس را از داخل هارد ديسك لود می‌كند. عكس در داخل MBR وجود ندارد. اگر شما از لينك عكس استفاده كنيد ديگر مجبور به ويرايش menu.lst و نصب مجدد گراب برای تعويض عكس نخواهيد بود. شما فقط بايد لينك عكس را عوض كنيد. مطمئن شويد كه هيچ لينكی به فايل در پارتيشن متفاوتی اشاره نكند. براي مثال اگر شما boot را در پارتيشن مجزایی ساخته باشيد.

Splash Image به وسيله update–grub

دستور update–grub به طور خودكار عكس boot/grub/splash.xpm.gz را برداشته و فايل menu.lst را برای شما ويرايش می‌كند. update–grub مواظب hdx و شماره پارتيشن مناسب نيز خواهد بود. (شما نيازی به تايپ (hd0,4) نداريد.)

sudo apt-get install grub-splashimages
sudo ln -s /boot/grub/splashimages/my_image.xpm.gz /boot/grub/splash.xpm.gz
sudo update-grub

ساخت یک فلاپی بوت

ابتدا فلاپی را فرمت کرده و فایل سیستم FAT را در آن ایجاد میکنیم برای این کارها دستورات زیر را به ترتیب در ترمینال اجرا میکنیم

fdformat /dev/fd0
mkfs -t msdos /dev/fd0

برای کپی اطلاعات مورد نیاز در فلاپی آن را mount میکنم

sudo mount -t msdos /dev/fd0

اطلاعات مورد نیاز گراب را در فلاپی کپی میکنیم

sudo mkdir -p /mnt/floppy/boot/grub
sudo cp /boot/grub/stage* /mnt/floppy/boot/grub
sudo cp /boot/grub/menu.lst /mnt/floppy/boot/grub

در اینجا فلاپی را umount کرده ولی آن را از درایو خارج نمیکنیم

sudo umount /mnt/floppy

فلاپی برای نصب نهایی که نصب GRUB boot loader است آماده شده ، برای نصب نهایی وارد گراب میشویم

sudo grub

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

grub>root (fd0)
grub>setup (fd0)
grub>quit

فلاپی بوت ساخته شد

تغییر سیستم عامل پیش فرض

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

ویرایش menu.lst

خطوط زیر را در فایل menu.lst پیداکنید.

## default num
# Set the default entry to the entry number NUM. Numbering starts from 0, and
# the entry number 0 is the default if the command is not used.
...
default     0
...

حال عدد صفر را به یک عدد که متناظر با گزینه شما از منوی گراب می‌باشد تغییر دهید. این نکته را در نظر بگیرید که شمارش از صفر شروع می‌شود. به طور مثال اگر شما فهرستی مانند زیر داشته باشید و بخواهید سیستم عامل پیش فرض خود را به Microsoft Windows XP Professional تغییر یدهید بای پارامتر default را به ۴ تغییر بدهید.

title           Ubuntu, kernel 2.6.20-16-generic
...
title           Ubuntu, kernel 2.6.20-16-generic (recovery mode)
...
title           Ubuntu, memtest86+
...
title           Other operating systems:
...
title           Microsoft Windows XP Professional

این نکته را فراموش نکنید که هر خطی حتی 'Other operating systems' که در ابتدای آن خط در فایل menu.lst کلیدواژه title به کار رفته است را باید در شمارش به حساب آورید.

شما می‌توانید به جای تنظیم پارامتر default با یک عدد ، از کلیدواژه 'saved' استفاده کنید. با این کار انتخاب شما در آخرین بوت سیستم به عنوان انتخاب پیش فرض گراب قرار خواهد گرفت. برای این‌که گزینه‌ای قابل یادآوری باشد باید کلیدواژه 'savedefault' را داشته باشد. این کلیدواژه به طور پیش‌فرض برای نسخه های مختلف هسته موجود در/boot قرارداده خواهد شد. البته این کلیدواژه برای حالت‌های rercovery تنظیم نمی‌شود.

اخطار: اگر از dmraid استفاده می‌کنید ، پارامتر default را به کلیدواژه 'saved' تغییر ندهید. در صورت انجام این‌کار قادر به بوت کردن سیستم خود نخواهد بود.

نکته: update-grub همیشه نسخه‌های جدید هسته را به ابتدای فهرست menu.lst اضافه می‌کند. ای کار باعث تغییر در ترتیب قرار گرفتن گزینه‌های menu.lst و بروز خطا در صورت استفاده شما از default x می‌شود.

اگر ترجیح می‌دهید تا یک سیستم عامل غیر از اوبونتو (ویندوز ، فدورا کور ، سوزه و ...) گزینه پیش‌فرض گراب قرار بگیرد ، گزینه آن را بالای قسمتی که مورد بررسی update-grub قرار می‌گیرد قرار دهید و پارامتر default را به صورت زیر تنظیم کنید.

...
### BEGIN AUTOMATIC KERNELS LIST
...
### END DEBIAN AUTOMATIC KERNELS LIST
...

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

#
# Put static boot stanzas before and/or after AUTOMATIC KERNEL LIST
 ... exactly here ...
### BEGIN AUTOMATIC KERNELS LIST

...
default     0
...

بوت از طریق شبکه

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

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

سپس به www.rom-o-matic.com بروید و rom مناسب را بارگذاری کنید.

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

title LTSP
root (hd0,2)
kernel /boot/(rom you get from rom-o-matic)

تعمیر گراب بعد از نصب ویندوز

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

پس از باز شدن ترمینال دستور زیر را وارد کنید:

sudo grub 

این نوشته ها را می بینید و خط دریافت کننده دستورات هم به شکل <grub در می آید:

[ Minimal BASH-like line editing is supported. For
the first word, TAB lists possible command
completions. Anywhere else TAB lists the possible
completions of a device/filename. 

حالا باید این دستور را وارد کنید:

find /boot/grub/stage1 

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

(hdX,Y) 

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

root (hdX,Y) 

و سپس:

setup (hd0) 

و در نهایت:

quit 

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

پاک کردن گراب و نصب بوت‌ لودر ویندوز

اگر به هر دلیلی دیگه نمی‌خواهید که از گراب و لینوکس استفاده کنید و میخواهید گراب را پاک کرده و از همان روش معمولی بوت شدن ویندوز استفاده کنید، سیستم رو با CD ویندوز XP بوت کنید و وقتی به مرحله شروع نصب رسید، به جای اینکه بزنید ویندوز شروع به نصب کنه، دکمه R را بزنید تا وارد Recovery بشید. از اون دستور زیر رو اجرا کنید تا بوت لودر ویندوز جایگزین گراب بشه:

fixmbr 


ubuntu-ir wiki: GrubHowto (آخرین بروزآوری 21-08-2008 10:27:30 توسط MohammadBoozary)