السلام عليكم ورحمة الله وبركاته
اليوم سنتحدت عن ال mbr او Master Boot Record
ال mbr هى اول 512 بايت فى الهارد الخاص بيك وهى مقسمه الى :
1- 446 bytes وهى التى يوجد بها الكود الذى يسمح لك ببدء عمل الجرب او Grub والذى يسمح لك ببدء تحميل النظام التشغيل الخاص بكم
كود PHP:
2- 66 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=1
والاداة ببساطة ستقوم بعمل قراءة ونسخ من ال /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=1
ولتجربة الامر السابق يمكنك اتلاف ال mbr الخاص بك وذلك من خلال الامر التالى : ( يجب توخى الحذر التام لأن هذا الأمر قد يؤدى الى إتلاف الهارد ديسك الخاص بك بالكامل وليس ال mbr فقط )
كود PHP:
$ sudo dd if=/dev/zero of=/dev/sda bs=512 count=1
سيقوم هذا بمسح ال 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 FAT, LBA): primary
Partition(Linux swap or Solaris/x86): primary
Partition(Linux ext2 filesystem): invalid logical
Partition(DOS or Windows 95 with 32 bit FAT, LBA): orphaned logical
Ok.
Guessed primary partition table:
Primary partition(1)
type: 012(0x0C)(DOS or Windows 95 with 32 bit FAT, LBA)
size: 9005mb #s(18442557) s(63-18442619)
chs: (0/1/1)-(1023/254/63)d (0/1/1)-(1147/254/63)r
Primary partition(2)
type: 130(0x82)(Linux swap or Solaris/x86)
size: 1004mb #s(2056320) s(18442620-20498939)
chs: (1023/254/63)-(1023/254/63)d (1148/0/1)-(1275/254/63)r
Primary partition(3)
type: 015(0x0F)(Extended DOS, LBA)
size: 10001mb #s(20482875) s(20498940-40981814)
chs: (1023/254/63)-(1023/254/63)d (1276/0/1)-(2550/254/63)r
Primary partition(4)
type: 000(0x00)(unused)
size: 0mb #s(0) s(0-0)
chs: (0/0/0)-(0/0/0)d (0/0/0)-(0/0/0)r
اذا اردنا كتابة النتيجة السابقة فعلا فى الهارد وتحديد البارتشنات كما اظهرها البرنامج ... مع الملاحظة انها مختفية وغير ظاهرة وال partation tables غير موجودة فسنوقم بكتابه النتيجة write على الهارد كما يلى
كود PHP:
sudo gpart -W /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
أتمنى من المولى تبارك وتعالى أن أكون وفقت فى إختيار ووضع الموضوع لكم وشرحه بشكل يستطيع الجميع فهمه
غن أصبت فبتوفيق من المولى تبارك وتعالى و إن أخطأت فمن الشيطان
يرجى وضع أى ملاحظات أو إضافات من قبلكم لإثراء الموضوع أكثر فأكثر...
دعواتكم لنا
لكم منا كل التحية والتقدير
كريم عبد القادر
المفضلات