আপনি কেবল ডিস্ক 0x00 এর প্রথম কয়েকটি বাইট তৈরি করে ডিভাইসটি বুটযোগ্য নয় re
সাধারণত (এবং এটি গ্রাব, গ্রাব 2 এবং এনটিএলডিআর আইক্রি উভয়ের ক্ষেত্রেই সত্য) আপনার ড্রাইভের প্রথম বাইটটি একটি x86 জেএমপি নির্দেশ হতে চলেছে। এটি ডিসক্লেবেলের আগেও ঘটেছিল, কারণ ডিভাইসটিকে বুটস্ট্র্যাপ করার জন্য এক্সিকিউশনটি পাস করার সময়, এটি সিপিইউটিকে কোড হিসাবে ডিভাইসের তথ্য চুষতে সেট করে। যদি এটিতে অবৈধ কোড থাকে তবে এটি একটি বাধা সৃষ্টি করে এবং BIOS ব্যতিক্রম পরিচালনা করে এবং পরবর্তী বুটেবল ডিভাইসে যায়।
উদাহরণস্বরূপ, আমার ডিস্কের শুরুটি এর সাথে শুরু হয়:
00000000 eb 63 90 d0 bc 00 7c fb 50 07 50 1f fc be 1b 7c |.c....|.P.P....||
প্রথম অংশটি হ'ল eb 63
জাম্পটি বর্তমান আইপি থেকে 0x63 অফসেট (সুতরাং 0x65)।
00000060 00 00 00 00 ff fa 90 90 f6 c2 80 74 05 f6 c2 70 |...........t...p|
00000070 74 02 b2 80 ea 79 7c 00 00 31 c0 8e d8 8e d0 bc |t....y|..1......|
এখানে থেকে ফাঁসি কার্যকর হয়।
সেক্টরের শেষটি দেখতে এইরকম দেখাচ্ছে:
000001b0 cd 10 ac 3c 00 75 f4 c3 ed db 96 d6 00 00 80 01 |...<.u..........|
000001c0 01 00 83 fe ff ff 3f 00 00 00 c1 07 a6 0e 00 fe |......?.........|
000001d0 ff ff 83 fe ff ff 00 60 00 11 00 00 38 29 00 fe |.......`....8)..|
000001e0 ff ff 82 fe ff ff 00 08 a6 0e 00 58 5a 02 00 00 |...........XZ...|
000001f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 aa |..............U.|
যদি আপনার ডিস্কটি এমবিআর পার্টিশন টেবিল হিসাবে ফর্ম্যাট করা থাকে তবে তার জন্য উপস্থিত থাকার জন্য কেবল দুটি জিনিস প্রয়োজন, পার্টিশন টেবিল যা অফসেটে রয়েছে 0x1be
এবং এমবিআর স্বাক্ষর, 55aa
যা অফসেটে সেক্টরের একেবারে শেষে হয় 0x1fe
। 0x1be
দশমিক 446।
নিম্নলিখিতটি (অবশ্যই) ডিভাইসটি আনবুটযোগ্য করে তুলবে। তবে এটি আপনি চান আপনি যদি নিজের ডিভাইসটি বুট করতে সক্ষম না করতে চান তবে এটি করবেন না, মিমি-কে? আমি ধরে নিচ্ছি আপনার ডিভাইসটি হ'ল /dev/sdz
, কারণ খুব বেশি লোকের কাছে /dev/sdz
এটি না থাকে এবং এটি কিছু বোকা নবজাতকের অন্ধভাবে অনুলিপি পেস্টিং কমান্ডের ঝুঁকি হ্রাস করে।
প্রথমে, ব্যাকআপের জন্য একটি ফাইলে এমবিআর অনুলিপি করুন।
sudo dd if=/dev/sdz of=/some/where/safe/preferably/not/on/dev/sdz/backup.mbr bs=512 count=1
এরপরে, সেই ফাইলটির একটি অনুলিপি তৈরি করুন:
cp backup.mbr backup.mbr.test
এর পরে, আমাদের একটি লুপব্যাক ডিভাইস তৈরি করতে হবে (যাতে সামগ্রীগুলি কাটা না যায়)
sudo losetup /dev/loop7 backup.mbr.test
sudo dd if=/dev/zero of=/dev/loop7 bs=446 count=1
sudo losetup -d /dev/loop7
hexdump
ফাইলটি নিশ্চিত করুন এবং নিশ্চিত করুন যে পুরো পার্টিশন টেবিলটি অক্ষত:
sudo hexdump -C backup.mbr.test
আপনার কিছু দেখতে হবে:
00000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
000001b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 01 |................|
000001c0 01 00 83 fe ff ff 3f 00 00 00 c1 07 a6 0e 00 fe |......?.........|
000001d0 ff ff 83 fe ff ff 00 60 00 11 00 00 38 29 00 fe |.......`....8)..|
000001e0 ff ff 82 fe ff ff 00 08 a6 0e 00 58 5a 02 00 00 |...........XZ...|
000001f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 aa |..............U.|
00000200
এখন, 0x1be
যেখানে আপনি 80
হেক্সডাম্পড আউটপুটে দেখতে পাচ্ছেন , এটিও হতে পারে 00
এবং এখনও বৈধ হতে পারে। (এটি পার্টিশন টেবিলের "বুটেবল" পতাকা, আপনি এটিকে একা রেখে যেতে পারেন, কারণ এটি বেশিরভাগ আধুনিক বায়োসেস দ্বারা একেবারে উপেক্ষা করা হয়েছে ...) 0x1bf
যদিও বাইটটি প্রায় কখনও হবে না0x00
(এটি সবচেয়ে সাধারণ 0x01
তবে এটি অন্যান্য মানগুলি নিতে পারে) আপনি backup.mbr
অতীতের কোনও 0x1be
পরিবর্তন হয় না তা নিশ্চিত করার জন্য এটি আপনার তুলনায় তুলনা করতে পারে ।
একবার আপনি সন্তুষ্ট হয়ে গেছেন যে আপনি পরিবর্তনটি সঠিকভাবে প্রয়োগ করেছেন তারপরে আপনি সরাসরি ডিস্কের প্রথম অংশে ফাইলটি অনুলিপি করতে পারবেন। আপনি /dev/zero
আবার ফাইলটির চেয়ে ফাইলটি করতে চান তার কারণ টাইপসের বিরুদ্ধে সুরক্ষা। আপনি যদি দুর্ঘটনাক্রমে বাদ দেন তবে count=1
আপনার খারাপ সময় হবে, অন্যদিকে কোনও ফাইল অনুলিপি করা কখনই ইওএফ ছাড়বে না। সুতরাং এটি নিরাপদ।
sudo dd if=backup.mbr.test of=/dev/sdz
hexdump
পরিবর্তনগুলি আশানুরূপভাবে গ্রহণ করেছে তা নিশ্চিত করার জন্য আপনার ডিস্কের পাশে ।
hexdump -C /dev/sdz | head
আপ তুলনা 0x200
বিরুদ্ধে backup.mbr.test
নিশ্চিত করুন যে এটি কি আপনি চান করতে পারেন।
অবশেষে, যদি কোনও কারণেই যদি স্ক্রু হয় তবে আপনি এমবিআর ব্যাকআপটি কেবল ড্রাইভে ফিরে অনুলিপি করতে পারবেন:
sudo dd if=backup.mbr of=/dev/sdz
আশাকরি এটা সাহায্য করবে.