আমি কীভাবে 'ডিডি' দিয়ে তৈরি একটি ড্রাইভ চিত্রকে প্রতিটি পার্টিশনের জন্য পৃথক ফাইলগুলিতে বিভক্ত করতে পারি?


9

আমি এর সাথে একটি ব্যর্থ ড্রাইভের একটি চিত্র তৈরি করেছি:

dd if=/dev/sde of=/mnt/image001.dd

ড্রাইভে মাত্র দুটি পার্টিশন ছিল:

   Device Boot      Start         End      Blocks   Id  System
/dev/sde1   *           1          13      102400    7  HPFS/NTFS
/dev/sde2              13       60802   488282112    7  HPFS/NTFS

আমি কীভাবে চিত্র (চিত্র 1001.dd) কে দুটি বা তিনটি ফাইলে বিভক্ত করতে পারি (1: এমবিআর; 2: পার্টিশন 1; 3: পার্টিশন 2) যাতে আমি এতে ফাইল সিস্টেমগুলি মাউন্ট করতে পারি?

আমার যে সমাধানটি আমার পক্ষে কার্যকর হবে না তা হ'ল splitঅনেকগুলি 512 কে ফাইল তৈরি করা, তারপরে catএগুলি একসাথে তিনটি ফাইল (1: 512 কে, 2: 105 এম, 3: বাকী) রূপান্তর করা, তবে আমার কাছে নেই যে জন্য ডিস্ক স্পেস।

ইতিহাস:
আমি ইতিমধ্যে একটি নতুন ড্রাইভে পুরো চিত্রটি অনুলিপি করেছি এবং এটি বুট হয় এবং বেশিরভাগ ক্ষেত্রেই কাজ করে। মনে হচ্ছে পুরানো ব্যর্থ ড্রাইভে এফএস দূষিত হয়েছিল এবং ddদূষিত অংশগুলি অনুলিপি করেছিল (যেমনটি হওয়া উচিত) এবং আমি সেগুলি নতুন ড্রাইভে লিখেছি। আমার সমাধানটি হ'ল যে এফএস আমি অনুলিপি করেছি এবং কেবল ফাইলগুলি (ব্যবহার rsyncবা কিছু) অনুলিপি করা যাতে আশা করা যায় যে আমি খারাপ বিটগুলি অনুলিপি করব না।

আপডেট 1 : আমি চেষ্টা করেছি dd if=/mnt/image001.dd of=/mnt/image001.part1.dd bs=512 count=204800 skip=1কিন্তু mountঅভিযোগ করেছি NTFS signature is missing, তাই আমার মনে হয় আমি এটি সঠিকভাবে করি নি।

উত্তর:


17

আপনার এটিকে মোটেই বিভক্ত করার দরকার নেই।

partedপার্টিশন টেবিল সম্পর্কে বিশদ পেতে ব্যবহার করুন:

parted image001.dd

ইন parted, কমান্ডটি দিয়ে বাইট ইউনিটগুলিতে স্যুইচ করুন u, তারপরে B। এর পরে, কমান্ড জারি করুন print

আপনি এরূপ দেখতে পাওয়া একটি আউটপুট পাবেন (আউটপুট একটি বাস্তব সিস্টেম থেকে আসে, কোনও চিত্র নয়):

Model: Virtio Block Device (virtblk)
Disk /dev/vda: 25165824000B
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start         End           Size          Type     File system     Flags
 2      1048576B      400556031B    399507456B    primary  ext4            boot
 3      400556032B    21165506559B  20764950528B  primary  ext4
 1      21165506560B  25164775423B  3999268864B   primary  linux-swap(v1)

Startলুপব্যাক মাউন্টের জন্য আপনি অফসেট হিসাবে নম্বরটি ব্যবহার করতে পারেন :

mount -o loop,ro,offset=400556032 image001.dd /mnt/rescue

তৃতীয় পার্টিশন মাউন্ট হবে /mnt/rescue


এই উভয় এবং kpartxআমার সমস্যা সমাধান করুন। আমি এই উত্তরটি বেছে নিয়েছি কারণ আমি কল্পনা করেছি যে partedএটি আরও সাধারণ kpartx, তবে kpartxকিছুটা সহজ।
জো এ

16

এটি কেবল kpartxসরঞ্জাম ব্যবহার করা আরও ভাল ।

usage : kpartx [-a|-d|-l] [-v] wholedisk
    -a add partition devmappings
    -d del partition devmappings
    -l list partitions devmappings that would be added by -a
    ...

উদাহরণ:

# kpartx -l whole_disk # only listing
loop0p1 : 0 518144 /dev/loop0 2048
loop0p2 : 0 3674112 /dev/loop0 520192
# kpartx -a whole_disk 
# file -sL /dev/mapper/loop0p*
/dev/mapper/loop0p1: Linux/i386 swap file (new style), version 1 (4K pages), size 64767 pages, no label, UUID=e4990860-c87d-4850-9e8d-ecb0a0506516
/dev/mapper/loop0p2: SGI XFS filesystem data (blksz 4096, inosz 256, v2 dirs)

এই সময়ে আমি মাউন্ট করতে পারেন /dev/mapper/loop0p2

সাফ করার kpartx -d whole_diskজন্য আনমাউন্ট কল করার পরে ।


1
+1 এটি দুর্দান্ত, সেই সরঞ্জামটির কথা কখনও শুনেনি।
সেভেন

এই উভয় নীচে একটি SvenW উত্তর খুব ভাল কাজ! উভয়ই আমাকে ড্রাইভ চিত্রের মধ্যে একটি পার্টিশন মাউন্ট করতে দেয়।
জো এ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.