/ ডি / এসডিএ-র মেমরি (কার্নেল) পার্টিশন টেবিলটি কীভাবে পড়বেন?


15

আমি ঘটনাক্রমে জিপিআর্ট ( এসকুবুন্টুতে সম্পূর্ণ গল্প ) দিয়ে আমার / dev / sda পার্টিশন টেবিলটি ওভাররাইট করে । যেহেতু আমি এখনও রিবুট করি নি এবং আমার ফাইল সিস্টেমটি এখনও নিখুঁতভাবে ব্যবহারযোগ্য, তাই আমাকে বলা হয়েছিল যে আমি সম্ভবত কার্নেল মেমরি থেকে পার্টিশন টেবিলটি পুনরুদ্ধার করতে সক্ষম হতে পারি। এটা কি সম্ভব? যদি তা হয় তবে আমি কীভাবে এটি পুনরুদ্ধার করব এবং এটি পুনরুদ্ধার করব?

এখানে চিত্র বর্ণনা লিখুন

উত্তর:


26

হ্যাঁ, আপনি /sysফাইল সিস্টেমের সাহায্যে এটি করতে পারেন ।

/sysকার্নেল ও কার্নেল ড্রাইভারদের দ্বারা গতিযুক্তভাবে তৈরি করা একটি জাল ফাইল সিস্টেম m
এই নির্দিষ্ট ক্ষেত্রে আপনি যেতে পারেন /sys/block/sdaএবং আপনি ড্রাইভের প্রতিটি বিভাজনের জন্য একটি ডিরেক্টরি দেখতে পাবেন। আপনার প্রয়োজনীয় ফোল্ডারে 2 টি নির্দিষ্ট ফাইল রয়েছে startএবং sizestartড্রাইভের শুরু থেকে অফসেট রয়েছে এবং sizeএটি পার্টিশনের আকার। পার্টিশনগুলি কেবল মুছুন এবং ঠিক একই প্রারম্ভিক এবং মাপ অনুসারে মাপের সাথে পুনরায় তৈরি করুন /sys

উদাহরণস্বরূপ, আমার ড্রাইভটি দেখতে এমন দেখাচ্ছে:

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048      133119       65536   83  Linux
/dev/sda2   *      133120   134340607    67103744    7  HPFS/NTFS/exFAT
/dev/sda3       134340608   974675967   420167680   8e  Linux LVM
/dev/sda4       974675968   976773167     1048600   82  Linux swap / Solaris

এবং এটি আমার মধ্যে রয়েছে /sys/block/sda:

sda1/
 start: 2048
 size: 131072
sda2/
 start: 133120
 size: 134207488
sda3/
 start: 134340608
 size: 840335360
sda4/
 start: 974675968
 size: 2097200


একটি চলমান সিস্টেমে পার্টিশন টেবিলটি সংশোধন করার পরে তথ্যটি নির্ভুল যাচাই করতে আমি এটি পরীক্ষা করে দেখেছি


1
কখনও কখনও যখন আমি কোনও প্রশ্ন আপভোট করি তখন এর অর্থ "ওহে এটি কার্যকর ছিল"। আপনার আপভোটটি "এটি আমার ত্বককে বাঁচিয়েছে" এর মতো। ধন্যবাদ!
অ্যালেক্স হিরজেল

আমি না /dev/sdb/start। এটির নামকরণ করা হয়েছে ext_range? কার্নেল:4.8.15-1-MANJARO
টম হেল

@TomHale এটা /sys/block/sdb/start, না/dev/sdb/start
প্যাট্রিক

দুঃখিত, আমি ভুল ডিরেক্টরি উদ্ধৃত করেছি। আমি একটি আছে statসেখানে, কিন্তু কোন start
টম হেল

পার্টিশনগুলি পুনরায় তৈরি করার সময়, আমি usind সুপারিশ করি fdiskকারণ এটি সরাসরি সেক্টরের সংখ্যা প্রবেশ করতে দেয় এবং আপনি ডিস্কে লেখার আগে মানগুলি পরীক্ষা করতে পারেন। আমি এই দ্বারা সফলভাবে একটি ডিস্ক পুনরুদ্ধার করেছি: প্রথম পার্টিশন তৈরি করা, সত্তা গ্রহণ করে, তারপরে শেষের জন্য "+ আকার" (উপরে থেকে) প্রবেশ করানো, দ্বিতীয় পার্টিশনটি start/ sys থেকে ... এবং "+ আকার" আবার প্রবেশ করানো হয়েছে ... পরীক্ষা করে দেখুন নতুন টেবিল লেখার আগে পার্টিশনের আকার শুভকামনা!
জার্গ গটসচ্লিচ

11

কোনও সমস্যা ছাড়াই এই সমস্যা সমাধানে সহায়তা করার জন্য আমি একটি স্ক্রিপ্ট তৈরি করেছি । (তবে আমি আমার ভার্চুয়াল মেশিনে পরীক্ষা করেছি)

প্রথম প্যারামিটারে ক্ষতিগ্রস্থ এইচডি সহ নিম্নলিখিত স্ক্রিপ্টটি চলছে:

user@host:~$ ./repart.sh sda

এর বিষয়বস্তু repart.sh:

#!/bin/bash

echo "unit: sectors" 
for i in /sys/block/$1/$1?/; do
    printf '/dev/%s : start=%d, size=%d, type=XX\n' "$(basename $i)" "$(<$i/start)" "$(<$i/size)"
done

আউটপুট একটি sfdisk ফর্ম্যাট। তবে সাবধানতা , ব্যবহার করতে এই ফাইলটি পরিবর্তন করতে হবে। প্রসারিত পার্টিশনের টাইপ = 5 এ, সমস্ত লজিক্যাল স্পেস যুক্ত প্লাস বাড়ানো এবং প্রথম লজিক্যাল পার্টিশনের শুরুর মধ্যবর্তী স্থান ব্যবহার করে আকার বাড়ান।

unit: sectors
/dev/sda1 : start=63, size=2040192, type=XX
/dev/sda2 : start=2040255, size=20482875, type=XX
/dev/sda3 : start=22523130, size=19197675, type=XX
/dev/sda4 : start=41720805, size=2, type=XX
/dev/sda5 : start=41720868, size=208782, type=XX

আপনাকে টাইপটি পরিবর্তন করতে হবে , এক্সএক্স থেকে পার্টিশনের ধরণের সংখ্যাতে। বুটযোগ্য পার্টিশনটি প্রথম লাইনে রাখুন ।

unit: sectors
/dev/sda1 : start=63, size=2040192, type=83, bootable
/dev/sda2 : start=2040255, size=20482875, type=83
/dev/sda3 : start=22523130, size=19197675, type=fd
/dev/sda4 : start=41720805, size=208845, type=5
/dev/sda5 : start=41720868, size=208782, type=82

এই পরিবর্তনগুলি প্রয়োগ করুন

cat repart.sfdisk | sfdisk -f /dev/sda

পার্টিশন টেবিলগুলি পুনরায় পড়ুন

partprobe 
/sbin/blockdev --rereadpt

গ্রাব পুনরায় ইনস্টল করুন

grub-install /dev/sda

1
Sfdisk- এর জন্য "-u বি" স্যুইচটি ব্যবহার করার বিষয়ে নিশ্চিত হন এবং সাবধান হন, আপনাকে পুনঃসূচনাতে মানগুলি সামঞ্জস্য করতে হতে পারে। সেফডিস্ক (তাদের দুটি সাধারণত ভাগ করে নিন), যদি sfdisk ব্লক আকারে গণনা করা হয় ("ইউনিট = ব্লকের জন্য পরীক্ষা করুন" 524 বাইট (সাধারণত আজকাল 1024) ব্যতীত "sudo sfdisk -u B -l / dev / sda") এ 1024 বাইট "।
ফ্লোরিয়ান

1
আমি প্রথমে ভুল লিখছি: আইডি = 5 দ্বারা আপনি পার্টিশন টাইপ 5 বলতে চাইছেন যা এসডিএ 4, এসডিএ 5 নয়। তদুপরি, আমার ক্ষেত্রে ls -d / sys / block / sda / sda * আমাকে কেবল sda1 এবং sda5 দেয়, সুতরাং মনে হচ্ছে যে ধারকটি অনুপস্থিত।
ওয়াও

আপনার ls পার্স করা উচিত নয়; পরিবর্তে সন্ধান করুন
বিড়াল

4

আপনি টেস্টডিস্ক চেষ্টা করেছেন ? এটি ডিস্কটি স্ক্যান করে এবং পুনরায় বুট করার পরেও হারিয়ে যাওয়া পার্টিশন টেবিলগুলি পুনরুদ্ধার করতে পারে।

এটি ডেবিয়ানের জন্য প্রাক-প্যাকেজড এবং সম্ভবত উবুন্টুর জন্য উপলভ্য। সম্ভবত অন্যান্য ডিস্ট্রোস।

আপনি যদি জিপিআর্টেড সিডি বুট করেন তবে এটি এটির উপর প্রাক ইনস্টল রয়েছে কিনা তা পরীক্ষা করে দেখার পক্ষে সম্ভবত worth


হ্যাঁ সে করেছে. কেবল ওপি-র লিঙ্কটি দেখুন (জিজ্ঞাসা করুন উবুন্টু)
মার্কো
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.