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

اليوم سنتحدت عن ال mbr او Master Boot Record
ال mbr هى اول 512 بايت فى الهارد الخاص بيك وهى مقسمه الى :
1- 446 bytes وهى التى يوجد بها الكود الذى يسمح لك ببدء عمل الجرب او Grub والذى يسمح لك ببدء تحميل النظام التشغيل الخاص بكم
كود PHP:
266 bytes contain a 64-byte partition table and a 2-byte signature at the very end 
والجزء الثانى يوجد به 64 بايت لل partition table
وينتهى ب 2 بايت فى النهاية
وال partition table هى عبارة عن جدول يوجد به بيانات عن البارتشن الأساسى والبارتشنات الاخرى فمثلا اين تبدأ واين تنتهى وطبعا هذا يكون بال cylinder والعديد من البيانات المهمة عن ال partations الخاصة بك

تخيل ما يحدث لو ضاعت هذه ال 512 بايت ؟؟؟؟
ولذلك سنقوم بعمل باك اب من هذه ال 512 بايت

الاداة dd هتقوم بعمل باك اب back up للجزء المطلوب وهى من ادوات unix التى تقوم بتنفيذ المطلوب منها بكفاءة
وسنقوم الان بعمل الباك اب من خلال الامر التالى :

كود PHP:
sudo dd if=/dev/sda of=mbr_backup bs=512 count=
والاداة ببساطة ستقوم بعمل قراءة ونسخ من ال /dev/sda لأول 512بايت ويقوم بنسخهم الى الملف mbr_backup
وطبعا تقدر تنسخ الملف المطلوب وهوا الباك اب الى اى هارد ديسك اخر للحفاظ عليه او الى فلاش ميمورى او اى وسيط تخزين
ولعمل إستعادة لهذا ال back up من الملف الى ال MBR
طبعا سيكون الجهاز بالكامل مش شغال فستقوم بادخال ال rescue disk
او اى توزيعة لينوكس live CD وتقوم بكتابة الامر التالى فى ال terminal

كود PHP:
sudo dd if=mbr_backup of=/dev/sda bs=512 count=
ولتجربة الامر السابق يمكنك اتلاف ال mbr الخاص بك وذلك من خلال الامر التالى : ( يجب توخى الحذر التام لأن هذا الأمر قد يؤدى الى إتلاف الهارد ديسك الخاص بك بالكامل وليس ال mbr فقط )

كود PHP:
sudo dd if=/dev/zero of=/dev/sda bs=512 count=
سيقوم هذا بمسح ال MBR وسيضع بدلا منها 00 فى المساحة بالكامل المذكورة وهى mbr او اول 512 بايت فى البارتشن


إصلاح ال Partition Table يكون من خلال التالى :

سنستخدم الأداة الشهيرة gpart وطبعا ستكون داخل الجهاز ب live CD
ستقوم الأداة بفحص الهارد بالكامل وستبحث عن بدايات البارتشن لكل بارتشن ونهاية البارتشن وبعد ان تنتهى الأداة ستقوم بإخراج البيانات فى شكل منسق لك لتقوم بالقراءة والتعديل فى حالة رغبتك فى التعديل أو فى حالتنا هذه ستقوم بعمل write لهذه ال partition table مرة اخرى

كود PHP:
sudo gpart /dev/sda 
سيقوم الامر السابق بعمل اسكان للهارد ديسك ويحدد البارتشنات
كود PHP:
root@kareem-pc:/home# gpart /dev/sda

Begin scan...
Possible partition(DOS FAT), size(9005mb), offset(0mb)
Possible partition(Linux swap), size(1004mb), offset(9005mb)
Possible extended partition at offset(10009mb)
   
Possible partition(Linux ext2), size(10001mb), offset(10009mb)
   
Possible partition(DOS FAT), size(56305mb), offset(20010mb)
End scan.

Checking partitions...
Partition(DOS or Windows 95 with 32 bit FATLBA): primary 
Partition
(Linux swap or Solaris/x86): primary 
   Partition
(Linux ext2 filesystem): invalid logical 
   Partition
(DOS or Windows 95 with 32 bit FATLBA): orphaned logical 
Ok
.

Guessed primary partition table:
Primary partition(1)
   
type012(0x0C)(DOS or Windows 95 with 32 bit FATLBA)
   
size9005mb #s(18442557) s(63-18442619)
   
chs:  (0/1/1)-(1023/254/63)(0/1/1)-(1147/254/63)r

Primary partition
(2)
   
type130(0x82)(Linux swap or Solaris/x86)
   
size1004mb #s(2056320) s(18442620-20498939)
   
chs:  (1023/254/63)-(1023/254/63)(1148/0/1)-(1275/254/63)r

Primary partition
(3)
   
type015(0x0F)(Extended DOSLBA)
   
size10001mb #s(20482875) s(20498940-40981814)
   
chs:  (1023/254/63)-(1023/254/63)(1276/0/1)-(2550/254/63)r

Primary partition
(4)
   
type000(0x00)(unused)
   
size0mb #s(0) s(0-0)
   
chs:  (0/0/0)-(0/0/0)(0/0/0)-(0/0/0)
اذا اردنا كتابة النتيجة السابقة فعلا فى الهارد وتحديد البارتشنات كما اظهرها البرنامج ... مع الملاحظة انها مختفية وغير ظاهرة وال partation tables غير موجودة فسنوقم بكتابه النتيجة write على الهارد كما يلى

كود PHP:
sudo gpart -/dev/sda /dev/sda 
الى هنا قمنا بعرض وعمل التالى :
1- اخذ باك اب من ال MBR
2-إسترجاع ال partation tables

والان ننتقل إلى خطوة أخرى وهى :

إسترجاع ال Boot Code

فبعد ان قمنا باسترجاع ال partation tables نحتاج الى تكملة خطواتنا واسترجاع البوت كود كالتالى
اولا لديك طريقتين اما بالدخول الى اللينوكس على جهازك و هنا ستقوم بكتابه الامر التالى :
كود PHP:
sudo grub-install --recheck /dev/sda 
ولا تنسى ان تستبدل ال /dev/sda بالبارتشن الرئيسى لك او الاساسى

او تقوم بوضع ال live CD ولهذا ستحتاج الى الدخول الى البارتشن الروت الخاص بك الذى يوجد به ملفات السيستم من خلال chroot وتقوم منه بتسطيب الجرب GRUBمرة أخرى

فستقوم بذلك كالتالى :

كود PHP:
sudo mkdir /mnt/sda1
sudo mount /dev/sda1 /mnt/sda1
sudo chroot /mnt/sda1 /usr/sbin/grub-install 
وتختار من الذى يظهر لك :

كود PHP:
-recheck /dev/sda 
لا تنسى ان ال /dev/sda هوا البارتشن الروت الخاص بك

مع الملاحظة اذا لم يتم تنصيب الجرب من خلال ال chroot داخل الروت بارتشن فستقوم بعمل التالى :

كود PHP:
sudo /usr/sbin/grub-install --recheck 
وستقوم باختيار الخيار التالى :

كود PHP:
-root-directory /mnt/sda1 /dev/sda 
إلى هنا إنتهى الشرح

إن شاء الله يكون تولد لدينا جميعا إحترام لل MBR وأن نقوم بتطبيق الخطوات وعمل باك اب لل MBR

أتمنى من المولى تبارك وتعالى أن أكون وفقت فى إختيار ووضع الموضوع لكم وشرحه بشكل يستطيع الجميع فهمه
غن أصبت فبتوفيق من المولى تبارك وتعالى و إن أخطأت فمن الشيطان

يرجى وضع أى ملاحظات أو إضافات من قبلكم لإثراء الموضوع أكثر فأكثر...

دعواتكم لنا

لكم منا كل التحية والتقدير

كريم عبد القادر