السلام عليكم ورحمة الله وبركاته

من بين المشاكل التي تواجه من له نظامين على جهازه، لينوكس و الويندوز بالتحديد، هو المشكله المتعلقه ب Grub. هذا البرنامج الصغير الذي يمكننا من اختيار النظام الذي نريد استخدامه عند إقلاع الجهاز. حذف هذا البرنامج، عمدا أو خطأ يؤدي إلى ضياع إمكانية الاختيار بين النظامين و بالتالي الدخول مباشرة لنظام واحد في حين تبقى إمكانية الدخول للنظام الآخر مستحيلة. من يعاني من هذا المشكل فهذا الدرس موجه له، و حتى من لم يسبق له أن واجهه و له نظامين على جهازه فهذا الدرس موجه له أيضا، تحسبا لوقوع المشكله مستقبلا.





1. لكن أولا ، ما هو Grub ؟

Grub، اختصار ل " GRand Unified Bootloader "، برنامج لتوزيعات لينوكس يحتوي على معلومات إقلاع الجهاز. تثبيت البرنامج يتم تلقائيا أثناء تثبيت التوزيعة.

حين التثبيت يقوم البرنامج بفحص الجهاز و البحث عن أنظمة التشغيل المثبتة عليه و بالتالي إضافتها إلى لائحته.
عمل Grub يتجلى عند إقلاع الجهاز، حيث يظهر لنا لائحة لأنظمة التشغيل المثبتة على جهازنا مع خيارات أخرى لكل نظام كخاصية الاسترجاع Recovery أو نسخ نواة سابقة لتوزيعات لينوكس.



من يستعمل الويندوز و لينوكس على جهاز واحد فبفضل استخدام Grub يتمكن من الاختيار بينهما كل مرة يقلع فيها جهازه.

إذن، منطقيا، حذف Grub يؤدي إلى فقدان هذه الإمكانية، أي إمكانية الاختيار بين الويندوز و لينوكس.

لكن ما الذي يمكن أن يؤدي إلى حذف Grub ؟



2. تثبيت الويندوز يحذف Grub !!


من يريد تثبيت الويندوز و لينوكس على جهازه فعليه تثبيت الويندوز أولا ثم لينوكس كي لا يواجه مشكلة حذف Grub. لأنه فى حين تثبيت الويندوز لا يقوم بفحص الجهاز لمعرفة أنظمة التشغيل المثبتة عليه بل يحذف كل ما في MBR، و هي ما يوجد فيها معلومات إقلاع الجهاز بما في ذلك Grub، و يثبت مدير الإقلاع الخاص به. هذا ما يفسر إذن حذف Grub كلما ثبتنا الويندوز.

تثبيت لينوكس على العكس من ذلك، يفحص الجهاز و يقوم بإضافة أنظمة التشغيل المثبتة عليه إلى لائحة Grub.


من يريد تثبيت الويندوز و أحد توزيعات لينوكس على جهازه عليه تثبيت الويندوز أولا ثم توزيعة لينوكس كي لا يواجه مشكلة حذف Grub.


حذف Grub بعد إعادة تثبيت الويندوز لا يعني حذف لينوكس لكن فقط إمكانية الوصول إليه تحذف، أما هو فلا يزال موجود على جهازنا. فكيف ندخل إليه إذن ؟

3. طريقة استرجاع Grub

3.1 استرجاع Grub من أوبنتو

أسهل طريقة : برنامج Boot repair
الآن، و بفضل الاهتمام و التطوير المتزايد لأوبنتو يمكن استرجاع Grub بكبسة زر دون الحاجة للمرور بسطر الأوامر. برنامج Boot repair يمكننا من ذلك. لنرى كيف.
سنحتاج أولا لتثبيت البرنامج على أوبنتو بإدخال الأوامر التالية تباعا :


كود PHP:
sudo add-apt-repository ppa:yannubuntu/boot-repair
sudo apt
-get update
sudo apt
-get install boot-repair-ubuntu 


لكن، يا حبيبي، أنا لا أستطيع الدخول لأوبنتو، فبالله عليك كيف أثبت عليه برنامجا ؟


لهذا قلت أننا سنحتاج قرص أوبنتو الحي. نقوم بالدخول لأوبنتو بالقرص الحي، تثبت البرنامج عليه و نستخدمه لإسترجاع Grub.


من ليس له قرص حي لأوبنتو فيمكنه تحميله من الموقع الرسمى الخاص بالتوزيعه www.ubuntu.com




إذن كما قلت، ندخل الأوامر التي أعطيت أعلاه على قرص أوبنتو الحي لتثبيت Boot repair. بعد التثبيت نشغل البرنامج إما بالبحث عنه في Dash واجهة يونيتي أو من System -> Administration -> Boot repair في واجهة جنوم الكلاسيكية.
يكفي إختيار أحد الخيارين الأولين و التأكيد بالظغط على Apply ليبدأ البرنامج عمله.




من الإعدادات المتقدمة يسار أسفل النافذة يمكن تشخيص بعض الخيارات كوقت الإنتظار و نظام التشغيل الإفتراضي و أين يثبت Grub.



بعد نهاية عملية الإسترجاع بنجاح يمكننا إعادة تشغيل جهازنا و إن شاء الله نجد لائحة Grub من جديد... و بخلفية أجمل من سواد اللائحة الرسمية.



يإستخدام سطر الأوامر


من يفضل سطر الأوامر يمكنه استرجاع Grub من قرص أوبنتو الحي CD Live ايضا. لكن قبل ذلك سنحتاج أول الأمر للتفريق بين نسختين منه، حيث أن طريقة استرجاع كل منهما تختلف عن الأخرى :


Grub2 : و هي النسخة الأخيرة من Grub. النسخة معتمدة في نسخة أوبنتو 9.10 و ما بعدها


Grub legacy : النسخة المعتمدة في نسخ أوبنتو قبل 9.10

ما هي إذن خطوات استرجاع Grub2 ؟


الإقلاع من القرص الحي لأوينتو


اختيار " تجريب أوبنتو دون تثبيته" من لائحة الاختيارات التي ستظهر


بعد الدخول لسطح المكتب نفتح سطر الأوامر من Applications - Accessories - Terminal


أفترض أن أوبنتو مثتب على البارتشن sda4 فتكون الأوامر الواجب إدخالها كالتالي :


كود PHP:
sudo mount /dev/sda4 /mnt
sudo grub
-install --root-directory=/mnt/ /dev/sda4 


ما هي خطوات استرجاع Grub legacy ؟


الإقلاع من القرص الحي لأوينتو


اختيار " تجريب أوبنتو دون تثبيته" من لائحة الاختيارات التي ستظهر


بعد الدخول لسطح المكتب نفتح سطر الأوامر من Applications - Accessories - Terminal


أدخل الأمر


كود PHP:
sudo grub 


في نافذة الترمنال التي ستظهر أدخل الأمر


كود PHP:
find /boot/grub/stage1 


ستظهر لك نتيجة على شكل (hd0, 7). حيث 0 و 7 متغيرين على حسب مكان وجود Grub في قرصك الصلب


أدخل الأمر

كود PHP:
root (hd07

مع تغيير 0 و 7 بالأرقام التي ظهرت لك في الأمر السابق


أدخل الأمر

كود PHP:
setup (hd0


مع تغيير 0 بالرقم المناسب، أي الذي ظهر لك كما في الأمر السابق


أخيرا أدخل الأمر

كود PHP:
quit 

للخروج.


أعد تشغيل الجهاز و ستجد لائحة Grub عادت إن شاء الله.

Grub2 يتعرف على التوزيعات التي تثبت Grub و يضيفها إلى لائحته، على عكس Grub legacy، فهو لا يستطيع ذلك. من يريد أن يثبت أكثر من توزيعة لينوكس على جهازه يجب أن ينتبه إلى أن التوزيعة التي يثبت أخيرا لها Grub2 إن كانت الأولى لها Grub2 أيضا.


استرجاع Grub من الويندوز


أول الأمر سنحتاج لملفات Grub4dos، نحمله من https://download.gna.org/grub4dos/
بعد تحميل الملف الأحدث، المتواجد أسفل اللائحة، نقوم بفك الظغط عنه و نقوم بالعمليات التالية حسب نسخة الويندوز :

على الويندوز Xp:

ننسخ الملف grldr من ملف grub4dos و ننسخه في جزء القرص الصلب، البارتشن، المثبت فيه الويندوز، عموما C:

بعد ذلك نقوم بتحرير ملف boot.ini المتواجد ب C: و الذي يكون مخفي افتراضيا. إذن بعد تفعيل إظهار الملفات المخفية نفتح الملف بالمذكرة و نضيف في اخره السطر التالي :

كود PHP:
c:/grldr="grub4dos" 


على الويندوز فيستا أو 7:

ننسخ الملفين grldr و grldr.mbr من ملف grub4dos إلى C:

في C: ننشىء ملف جديد boot.ini يكون محتواه كالتالي :

كود PHP:
1.[boot loader]
2.timeout=0
3.
default=c:\grldr.mbr
4.
[operating systems]
5.C:\grldr.mbr="Grub4Dos" 
الآن،سواء على Xp، فيستا أو الويندوز 7 نتابع بإنشاء ملف menu.lst في C: يكون محتواه :
كود PHP:
[LEFT]
1.timeout 0
2.
default 0
3.title grub2
4.find 
--set-root /boot/grub/core.img
5.kernel 
/boot/grub/core.img
6.boot
[/LEFT

بعدها يكفي إعادة تشغيل الجهاز، حيث ستظهر لنا بعد الإقلاع نافذة فيها خيارين :


الويندوز : الدخول بصفة عادية للويندوز


Grub4dos : للدخول لقائمة Grub و بالتالي إمكانية اختيار الدخول لأوبنتو أو الويندوز...


بعد الدخول لأوبنتو يجب تثبيت Grub لتجنب المرور دائما ب Grub4dos
كود PHP:
1.sudo grub-install /dev/sda 
في حال تمت العملية بنجاح و تم استرجاع Grub فيمكن حذف الملفات التي نسخنا و أنشأنا في C:

ويكده نكون انهينا المهمه بنجاح

اتمنى انكم تستفيدو واخيرا السلام عليكم ورحمة الله وبركاته