برای هر کاربر گنو/لینوکس یا بطور کلی هر کاربر رایانهای که سیستمی بـا چند سیستمعامل دارد پیش میآیـد کــه بــه دلایل مختلف مدیر بوت سیستم [۱] دچار مشکل شده و سیستم امکان بــوت شــدن بــه سیستمعاملهای مختلف را از دست میدهد. این حالت به طور معمول زمانی بروز میکند کـه سیستمعامل جدیدی نصب میشود. متداولترین موارد، نصب یک نسخه از سیستمعاملهای ویندوز مایکروسافت یا نصب یک توزیع دیگر گنو/لینوکس بر روی سیستم است.
در مــورد سیستمعاملهای ویندوز بــه ایــن دلیــل کـه این سیستمعاملها امکان بوت چندگانه با سیستمعاملهایی غیر از خانواده سیستمعاملهای ویندوز مایکروسافت را ندارند، اختیار بوت سیستم را از مــدیر بوت گنو/لینوکس میگیرند. اما در مورد توزیعهای مختلف گنو/لینوکس، ممکن است این مشکل به دلایل متـفاوتی بروز کند. در این نوشته راهحلی برای رفع این مشکل و بازیابی تنظیمات یک مدیر بوت ارائه میکـنـیم. بــا وجــود ایـنـکه در سایتهای مختلف و به روشهای گوناگون راهحلهایی برای حل این مشکل ارائه شده اما به نظر میرسد ارائـه یـکـجـا و یـکـباره راهحل ایده بدی نباشد. گذشته از این، اضافه کردن یک راهحل به راهحلهای قبلی کار مضمومی نیست!
فرض بر این است که سیستم تنها یک هارد دیسک دارد و به عنوان مدیر بوت هم از GRUB استفاده میکند. سیستم را با یک هارد دیسک در نظر گرفتهام زیرا وجود بیش از یک هارد دیسک بر روی سیستم حالات بروز چنین مشکلی را متنوع و ارائه راهحل برای آن را پیچیده میکند. مدیر بوت GRUB هم به این دلیل انتخاب شده است که بیشتر توزیعهای جدید از این مدیر بوت استفاده میکنند. مدیر بوت GRUB امکانات متنوعی دارد و در نسخــههای اخـیــر کـمـتـر پـیـش آمده که در شناسایی سیستمعاملهای گوناگون دچار اشتباه شود.
از این مقدمات که بگذریم میرسیم به راهحــل؛ فرض کنید که شما یک توزیع گنو/لینوکس بر روی اولین پارتیشن منطقی [۲] هارد دیسک خود نصب کردهاید که مدیر بوت GRUB نصب شده بـــا این توزیع، کنترل بوت سیستم را بـرعهده دارد. به هر دلیل این مدیر بوت صدمه دیده و شما قصد احیای آن را دارید.
اولین کاری که باید انجام دهید این است که سیستم را بــا یــک دیسک زنــده بــوت کنید. من از پارسیکس [۳] استفاده کردم. اما تمام مراحل، غیر از یک قسمت، میبایست در سایر دیسکهای زنده هم به همین ترتیب باشد.
مشکلترین بخش کار و اختلافی کــه در دیسکهای زنــده گوناگون وجود دارد در ایـن بـخـش است. یعنـی در یافتن نام پارتیشنی که GRUB مورد نظر ما برای احیا، در آن پارتیشن نصب شده است.
به خاطر دارید کـه ما قصد احیای GRUB نصب شده بر اولین پارتیــشن منطقی [۲] روی هــارد دیسـک را داریــم. نــوع نامگذاری پارتیشنهای یک دیسک سخت IDE ما را به این نتیجه میرساند کـه نـام ایــن پـارتـیـشـن hda5 است یا چنین کاراکترهایی در نام پارتیشن وجود دارد. بــرای اطلاع از نــوع نــامــگـذاری پارتیشنهای هارد دیسک مقاله "نحوه نامگذاری پارتیشنها در لینوکس" [۴] را بخوانید. لینوکس سختافزارهای متصل شده به سیستم را در دایرکتوری dev ثبت میکند. بنابراین شما میبایست در این دایرکتوری بدنبال نام کامل پارتیشن مورد نظر خود یعنی hda5 باشید.
در دیسک زنده پارسیکس درون دایرکتوری dev نام پارتیشنهای دیســـک سخت در یـــک زیردایرکتوری [۵]به نام disk به چهار شکل و در چهار دایرکتوری ثبت شده است. که ما از دایــرکـتوری by-id استفاده میکنیم و در این دایرکتوری بدنبالpart5 میگردیم.
نام کامل hda5 مشخص شده است.
وقتی که نام کامل پارتیشن مورد نظر خود را یافتیم، بــا دســتـور mount آن را به دایرکتوری media/hda5/ متصل مینماییم. به عنوان مثال برای هارد دیسک سیستم من که در تصویر میبینید:
# mount /dev/disk/by-id/ata-Maxtor_4D040H2_D24H1D5E-part5 /media/hda5
در صورتی کــه بــرای پیدا کردن پارتیشن نصب شده خــود بـاز هم مشکل دارید، راه حل دیگری نیز وجود دارد. پارسیکس هنگام بوت تمامی پارتیشنهای دیسک سخت را شناســایی و در fstab اضافه میکنـد. بــا کلیک روی آیکون کامپیوتر بر روی میزکار میتوانید ببینید که چه پارتیشنهایی وجود دارد. با کلیک روی هرکدام خواهید توانست محتویات آنــرا دیده و سپس پارتیشن محل نصب خود را پیدا کنید (پارتیشنی خواهد بود که در آن تمامی شاخههای اصلی سیستم مانـنـد boot، dev، lib و... وجود دارند). پس از پیدا کردن پارتیشن ریشه، مجددا با کلیک راست بر روی آیکون آن که اینبار بر روی میزکار ایجاد شده است، آنرا unmount کرده و سپس دستور زیر را بصورت کاربر ریشه وارد کنید (فرض میکنیم پارتیشن ریشه همان hda5 میباشد):
# mount /dev/hda5 /media/hda5
حالا با دستور chroot مسیر media/hda5/ را به عنوان مسیر root جدید معرفی کنید:
# chroot /media/hda5
کار نزدیک به انجام است. فقط دو دستور دیگر باقی مانده:
# grub-install /dev/hda
# exit
GRUB نصب شده بر روی توزیع گنو/لینوکس موجود بر پارتیشن hda5 احیا شده است. توجه داشته باشید که فرض ما بر این است که لینوکس هارد دیسک IDE سیستم شما را با نام hda شناخته است. ممکن است لینوکس به دلایلی هارد دیسک IDE سیستم شما را hda نشناسد و مثلاً hdc شنــاسایی کــند. یا اینکه هارد دیسک سیستم شما از نوع IDE نباشد که دیگر خارج از بحث ماست. در این حالت بجای hda در دستور بالا باید نام هارد دیسک خود را بگذارید. این روش با توزیعهای دبیان، اوبونتو، پارسیکس و زوزه امتحان شده و موثر بوده است.