পুরো ডিস্কের (ডিভাইস) চিত্র থেকে একক পার্টিশন মাউন্ট করুন


117

আমি আমার সম্পূর্ণ ডিস্কের সাথে একটি চিত্র তৈরি করেছি

dd if=/dev/sda of=/media/external_media/sda.img

এখন সমস্যাটি হ'ল আমি একটি ডিস্কে থাকা একটি ext4 ফাইল সিস্টেমটি মাউন্ট করতে চাই

mount -t ext4 -o loop /media/external_media/sda.img /media/sda_image

স্পষ্টতই একটি সুপারব্লক ত্রুটি দেয় কারণ চিত্রটি আমার কেবল প্রয়োজনীয় পার্টিশনটি না করে পুরো ডিস্ক (এমবিআর, অন্যান্য পার্টিশন) ধারণ করে। সুতরাং আমি অনুমান করি যে ডিস্ক চিত্রটি /dev/ফোল্ডারে দেখানোর জন্য আমার একটি উপায় খুঁজে পাওয়া উচিত ...

কেউ কীভাবে তা করতে জানেন?

পিএস: আমি সবসময় ddচিত্রটি মূল ডিস্কে ফিরে আসতে পারি তবে এটি খুব অসুবিধে হবে (আমি ওএস আপডেট করেছি এবং আমি এটি যেমন রাখি তা রাখতে চাই)

উত্তর:


142

চিত্রের পার্টিশন বিন্যাসটি পান

$ sudo fdisk -lu sda.img
...
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
...
  Device Boot      Start         End      Blocks   Id  System
sda.img1   *          56     6400000     3199972+   c  W95 FAT32 (LBA)

চিত্রের শুরু থেকে পার্টিশন শুরু পর্যন্ত অফসেট গণনা করুন

ক্ষেত্রের আকার * শুরু = (ক্ষেত্রে) 512 * 56 = 28672

অফসেটটি ব্যবহার করে এটি / dev / loop0 এ মাউন্ট করুন

sudo losetup -o 28672 /dev/loop0 sda.img

এখন পার্টিশনটি / dev / loop0 এ থাকে । আপনি এটি fsck করতে পারেন , এটি মাউন্ট ইত্যাদি

sudo fsck -fv /dev/loop0
sudo mount /dev/loop0 /mnt

আনমাউন্ট

sudo umount /mnt
sudo losetup -d /dev/loop0

তোমাকে অনেক ধন্যবাদ! মোহন মত কাজ! আপনি আমার দিনটি করেছেন (এবং নির্দোষ ওসেলোটকে নির্মমভাবে মুছে ফেলা থেকে বাঁচিয়েছিলেন; পি)
নিকোলা ফেল্ট্রিন

8
কমপক্ষে sudo losetup -o $((56*512)) /dev/loop0 sda.img
ব্যাশে

1
এটি কেবল সহায়ক নয়, এটি একেবারে দুর্দান্ত।
andho

.Img1 এবং .img2 থাকলে কী হবে? "win8.raw1 * 2048 718847 358400 7" এবং "win8.raw2 718848 52426751 25853952 7"
এনকৌইমি

6
এমনকি সহজ: mount -o loop,offset=$((56 * 512)) sda.img /mnt। সূত্র: madduck.net/blog/…
ostrokach

105

উবুন্টু 16.04 এর জন্য আপডেট: নতুনের সাথে এটি losetupএখন আরও সহজ:

sudo losetup -Pf disk_image.raw

উবুন্টুর পুরানো সংস্করণগুলির জন্য উত্তরটি দেখুন।


কেপার্টেক্স ব্যবহার করে একটি সহজ সমাধান : এটি পার্টিশন লেআউটটি সনাক্ত করবে এবং প্রতিটি ব্লক ডিভাইসে ম্যাপ করবে। এরপরে আপনাকে যা করতে হবে তা হ'ল মাউন্ট want

টার্মিনালটি খুলুন, ডিস্ক চিত্রটি সনাক্ত করুন এবং এই আদেশটি প্রবেশ করুন:

$ sudo kpartx -av disk_image.raw 
add map loop0p1 (252:2): 0 3082240 linear /dev/loop0 2048
add map loop0p2 (252:3): 0 17887232 linear /dev/loop0 3084288

এটি তৈরি loop0p1এবং এর loop0p2অধীনে /dev/mapper। আউটপুট থেকে আপনি পার্টিশনের আকার দেখতে পাবেন যা আপনাকে সনাক্ত করতে সহায়তা করে। আপনি যা চান তার সাথে মাউন্ট করতে পারেন:

$ sudo mount /dev/mapper/loop0p2 /mnt

বিকল্পভাবে, ব্লক ডিভাইসটি নটিলাস দ্বারা সনাক্ত করা হয়েছে এবং আপনি এটি পাশের বার থেকে মাউন্ট করতে পারেন:

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

আপনি হয়ে গেলে, আপনি যা মাউন্ট করেছিলেন তা আনমাউন্ট করুন এবং ডিভাইস ম্যাপিংটি সরান:

$ sudo umount /mnt
$ sudo kpartx -d disk_image.raw

চমত্কার উত্তর, দ্রুত এবং সহজ, গুণনের পদক্ষেপ এড়ানো ভাল
এল্ডার গীক

sudo apt-get install kpartx- কেপার্টেক্স অ্যাক্সেস পেতে। kpartxপোস্টের শুরুতে লিংক আমার মতে একটি 'ফাঁদ' হয়। লিঙ্কগুলি যা বোঝায় যে সফ্টওয়্যারটি ইনস্টল করা হ'ল একটি নং।
হান্নু

1
@ হান্নু, সফটওয়্যার সেন্টারের সাথে সংহত হওয়া লিঙ্কগুলি জিজ্ঞাসুবন্টুর একটি সাধারণ অভ্যাস , যদিও এই বিশেষ ক্ষেত্রে সাধারণত আইকন যুক্ত করা যেতে পারে এবং ইউআরএল আপডেট করা উচিত।
জনি

losetup -Pfপূর্বে Askubuntu.com/a/496576/52975 দ্বারা উল্লিখিত ছিল আমি আপনাকে সুপারিশ করছি কমপক্ষে সেই উত্তরের সাথে লিঙ্ক করুন।
সিরো সান্তিলি 新疆 改造 中心 法轮功 六四

1
এফওয়াইআই, losetup -Pf ..কমান্ডটি এমন ডিভাইস তৈরি করবে /dev/loopXpYযা আপনাকে এখনও মাউন্ট করতে হবে। কমান্ডের Xআউটপুট দেখে আপনি এটি খুঁজে পেতে পারেন losetupYপার্টিশন সংখ্যা।
গুনচার্স

26

সম্পাদনা করুন : ইউজন-লিনাক্স> = 2.21 এর সাথে কাজ করে । কেবলমাত্র ২.২০ সংস্করণ সহ উবুন্টু জাহাজ লেখার সময়

মানুষ হারানো থেকে :

       -P, --partscan
          force kernel to scan partition table on newly created loop device

তাই শুধু চালান

$ sudo losetup -f --show -P /path/to/image.img

প্রথম অব্যবহৃত লুপ ডিভাইসে আপনার ডিস্ক চিত্রের প্রতিটি বিভাজনের জন্য ডিভাইস নোডগুলি তৈরি করতে এবং স্টাডাউটে মুদ্রণ করতে। /dev/loop0ডিভাইসটি ব্যবহার করা হলে এটি কমপক্ষে তৈরি /dev/loop0p1করবে যে আপনি যথারীতি মাউন্ট করতে সক্ষম হবেন।


2
আমি এই সংস্করণটি কোথায় খুঁজে পাব losetup? উবুন্টু ১৪.০৪-এ আমার কাছে একটি জুলাই 2003 (ম্যানুয়াল-লিনাক্স) থেকে ম্যানপেজ রয়েছে এবং পার্টিশন স্ক্যান করার জন্য কোনও `-P` বিকল্প (বা অন্য কিছু) নেই।
হান্নু

1
দুঃখিত, আমি একটি ভুল করেছি, আমি আর্চ লিনাক্সে এই বিকল্পটি ব্যবহার করে যা ব্যবহার-লিনাক্স প্যাকেজের একটি সাম্প্রতিক সংস্করণ নিয়ে আসে। দেখে মনে হচ্ছে যে উবুন্টু দু: খজনকভাবে ২.২০.১ সংস্করণে আটকে আছে যা জানুয়ারী ২০১২ এ প্রকাশিত হয়েছে! --partscanবিকল্প চালু করা হয়েছে util-লিনাক্স 2.21
Ludovic Ronsin

1
ওয়েল, gnome-disksএকটি ডিস্ক চিত্র মাউন্ট করার একটি বিকল্প রয়েছে এবং এটির পার্টিশন রয়েছে। (<- এটি ইনস্টল করার জন্য এবং ব্যাশ / টার্মিনাল ব্যবহারের জন্য, Disksড্যাশটিতে এটি খুব সন্ধান করে)।
হান্নু 4'14

2
এটি গ্রহণযোগ্য উত্তর হওয়া উচিত ...
ম্যাথিডে

@ মমথিড কী কোনও গৃহীত উত্তর পরিবর্তন করা এমনকি সম্ভব ? এটি ভাল (এবং কেপিআরএক্স উত্তরটি আসলে এই সংস্করণটির উপর নির্ভরশীল losetup) তবে এটি গৃহীত উত্তরের চেয়ে প্রায় তিন বছরের বেশি নতুন — যা সেই সময়ে এটি করার উপায় ছিল।
অ্যাসপেক্স

9

চেষ্টা করুন gnome-disk-image-mounter:

gnome-disk-image-mounter sda.img

কোন sudoপ্রয়োজন নেই । এটি /media/your_user_name/partition_nameUSB ড্রাইভের মতোই মাউন্ট করা হবে ।


1
16.04 এ ভাল কাজ করছিল। আমি সবেমাত্র একটি নতুন 18.04 ইনস্টল করেছি এবং সরঞ্জামগুলি / dev / লুপএক্সএক্স ভার্চুয়াল ডিভাইসে অ্যাক্সেসের জন্য সুডো পাসওয়ার্ডের জন্য জিজ্ঞাসা করে :(
লরেন্ট

7

losetup -P স্বয়ংক্রিয়তা

losetup -Phttps://askubuntu.com/a/496576/52975 তে উল্লিখিত উবুন্টু ১.0.০৪-এ শুরু হওয়া সেরা পদ্ধতিটি , আরও যদি স্বয়ংক্রিয়ভাবে চালিত হয় তবে এখানে ফাংশন রয়েছে। ব্যবহার:

$ los my.img
/dev/loop0
/mnt/loop0p1
/mnt/loop0p2

$ ls /mnt/loop0p1
/whatever
/files
/youhave
/there

$ sudo losetup -l
NAME       SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE                                                                                      DIO
/dev/loop1         0      0         0  0 /full/path/to/my.img

$ # Cleanup.
$ losd 0
$ ls /mnt/loop0p1
$ ls /dev | grep loop0
loop0

উৎস:

los() (
  img="$1"
  dev="$(sudo losetup --show -f -P "$img")"
  echo "$dev"
  for part in "$dev"?*; do
    if [ "$part" = "${dev}p*" ]; then
      part="${dev}"
    fi
    dst="/mnt/$(basename "$part")"
    echo "$dst"
    sudo mkdir -p "$dst"
    sudo mount "$part" "$dst"
  done
)
losd() (
  dev="/dev/loop$1"
  for part in "$dev"?*; do
    if [ "$part" = "${dev}p*" ]; then
      part="${dev}"
    fi
    dst="/mnt/$(basename "$part")"
    sudo umount "$dst"
  done
  sudo losetup -d "$dev"
)

লুপ মডিউল max_part কনফিগার করুন

16.04 এর আগে এটি একটি শালীন পদ্ধতি।

loop একটি কার্নেল মডিউল যা উবুন্টু 14.04-এ কার্নেলের মধ্যে নির্মিত into

আপনি যদি এটি ঠিকভাবে কনফিগার করেন তবে লিনাক্স স্বয়ংক্রিয়ভাবে আপনার জন্য ডিভাইসগুলি বিভক্ত করে দেয়।

cat /sys/module/loop/parameters/max_part

কতগুলি পার্টিশন loopডিভাইস উত্পন্ন করতে পারে তা বলে।

এটি 0ডিফল্টরূপে উবুন্টু 14.04 এ রয়েছে যার কারণে কোনও স্বয়ংক্রিয় বিভাজন ঘটে না।

এটি পরিবর্তন করতে, আমরা হয় যোগ করতে পারেন:

options loop max_part=31

ফাইলগুলিতে /etc/modprobeবা:

GRUB_CMDLINE_LINUX="loop.max_part=31"

থেকে /etc/default/grubএবং তারপর sudo update-grub

মডিউল প্যারামিটার কীভাবে সেট করবেন সেগুলিও এখানে আচ্ছাদিত রয়েছে: কার্নেল মডিউল পরামিতিগুলি কীভাবে যুক্ত করবেন?

পুনরায় বুট করার পরে, আপনি যখন করবেন:

sudo losetup -f --show my.img

এটি কোনও /dev/loopXডিভাইসে চিত্রটি মাউন্ট করে এবং স্বয়ংক্রিয়ভাবে ডিভাইসে পার্টিশনগুলি মাউন্ট করে /dev/loopXpY

আপনি রিবুট করতে ইচ্ছুক হলে তাই এটি সবচেয়ে সুবিধাজনক পদ্ধতি।

আরো দেখুন


5

পুরো ডিস্ক চিত্রটি সংযুক্ত করতে লটআপ ব্যবহার করুন।

# sudo losetup /dev/loop2 sda.img

তারপরে একটি এমডি ডিভাইস তৈরি করতে এমডিএডিএম ব্যবহার করুন এবং সমস্ত পার্টিশনের জন্য ব্লক ডিভাইস তৈরি করা হবে।

# sudo mdadm --build --level=0 --force --raid-devices=1 /dev/md2 /dev/loop2
mdadm: array /dev/md2 built and started.

এখন আপনার পার্টিশন ডিভাইসগুলি দেখতে হবে।

nile-172-b0fef38-76:/mnt/sdb1 # ls -l /dev/md2*
brw-rw---- 1 root disk   9, 2 Oct 10 12:37 /dev/md2
brw-rw---- 1 root disk 259, 0 Oct 10 12:37 /dev/md2p1

এটি একটি মজার কৌশল :)
জোহান বুলি

4

সবচেয়ে সহজ উপায়, আমার মতে, স্ট্যাকওভারফ্লোতে এই উত্তরেmount -o loop,offset=... উল্লিখিত হিসাবে ব্যবহার করা হচ্ছে । নিম্নরূপ ধারণা:

fdisk -l $IMAGE
# calculate the offset in bytes
mount -o loop,offset=$OFFSET $IMAGE $MOUNTPOINT

পদ্ধতিটি সর্বোত্তম কারণ আপনার মাউন্ট করা পার্টিশনটি মাউন্ট করার পরে এটির জন্য লুপ ডিভাইস মোছার প্রয়োজন হয় না।

কার্যটি আরও সহজ করার জন্য (যা আপনি যদি এটি প্রায়শই করেন তবে প্রয়োজন হয়), আপনি আমার স্ক্রিপ্টটি mountimgআপনার জন্য সবকিছু করতে ব্যবহার করতে পারেন । এটি কেবল https://github.com/AlexanderAmelkin/mountimg থেকে পান এবং এটির মতো ব্যবহার করুন:

mountimg /media/external_media/sda.img 2 /media/sda_image

আপনি যদি চান তবে ফাইল সিস্টেমের ধরণ এবং অন্য কোনও অতিরিক্ত মাউন্ট বিকল্পগুলি নির্দিষ্ট করে দিতে পারেন:

mountimg /media/external_media/sda.img 2 /media/sda_image -t vfat -o codepage=866,iocharset=utf-8

পার্টিশনটি সম্পন্ন করার পরে, কেবল umountএটি:

umount /media/sda_image
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.