আমি কীভাবে লিনাক্সের অধীনে ব্লক ডিভাইসের (যেমন এইচডিডি) ডিডি-নির্মিত চিত্র থেকে একটি পার্টিশন মাউন্ট করতে পারি?


34

আমার সম্পূর্ণ ডিস্কের একটি চিত্র আছে যা ডিডি ব্যবহার করে তৈরি করা হয়েছিল । ডিস্ক কাঠামো নিম্নলিখিত:

kent@cow:~$ sudo fdisk -l

Disk /dev/sda: 750.1 GB, 750156374016 bytes
255 heads, 63 sectors/track, 91201 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x000b8508

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           5       90872   729929303+  83  Linux
/dev/sda2           90873       91201     2642692+   5  Extended
/dev/sda5           90873       91201     2642661   82  Linux swap / Solaris

চিত্রটি ব্যবহার করে তৈরি করা হয়েছিল:

dd if=/dev/sda of=image750.img

আমি কীভাবে এটি সম্ভব হলে ছবিটি থেকে মাউন্ট / ডেভ / এসডিএ 1 করব যাতে আমি সামগ্রীগুলি পড়তে পারি?

এটি আবার এইচডিডি ক্লোন করার কোনও বিকল্প নয়, আমি নিজেই যদি একক পার্টিশনটি ক্লোন করে রেখেছিলাম তবে এটি কীভাবে করবেন তা আমি জানি। আমি আশা করি এটি বর্তমান চিত্রের সাথে এখনও সম্ভব।



উত্তর:


48

আজকাল, আরও ভাল উপায় আছে, আর অফসেট বা কেপার্টেক্স ব্যবহার করার দরকার নেই:

losetup --partscan --find --show disk.img

mount /dev/loop0p1 /mnt

লুপ0 মুক্ত করতে, অ্যামাউন্টের পরে ব্যবহার করুন:

losetup -d /dev/loop0

8
আমার উবুন্টু 14.04 ইনস্টলেশনে, হারানোআপ কোনও - পার্টস্ক্যান বিকল্প সরবরাহ করে না।
কাটার

1
@ কিটার এটি ইউট-লিনাক্স ২.২১, উবুন্টু ১.0.০৪-এ যুক্ত করা হয়েছে। :-)
সিরো সান্তিলি 新疆 改造 中心 法轮功 六四 事件

kpartxপ্রথমটি ব্যবহার করার পরে , যা পার্টিশনগুলিকে মাউন্ট করে /dev/mapper/loop3p1, আমি কেবল তা নির্দেশ করতে losetupচাই যা ডিভাইসগুলি তৈরি করে /dev/loop0p1। উত্তরটি নোট করে, তবে আমি সম্ভবত এটি 10 ​​বার পড়েছি। : /
রেন্ডি সিরিয়িং

13

আমি আজ এই সমস্যায় পড়েছি এবং উত্তরগুলি কেবল নিজের জন্য অনুস্মারক হিসাবে আপডেট করতে চেয়েছিলাম। আপনার নিজের থেকে অফসেট গণনা করার পরিবর্তে, আপনি একটি সরঞ্জাম ব্যবহার করতে পারেন যা আপনাকে ডিডি চিত্র থেকে মাউন্টযোগ্য ডিভাইসগুলি সরবরাহ করে: kpartx

http://robert.penz.name/73/kpartx-a-tool-for-mounting-partitions-within-an-image-file/

http://linux.die.net/man/8/kpartx

প্রদত্ত ক্ষেত্রে এটির মতো কিছু লাগবে

sudo kpartx -a image750.img
sudo mount /dev/mapper/loop1p1 /mount/point -o loop,ro

যেখানে loop1p1 প্রথম পার্টিশনের জন্য বোঝায়, দ্বিতীয়টির জন্য লুপ 1 পি 2 ইত্যাদি for


6

আপনার প্রথম অংশটি পেয়েছে: শুরুতে অফসেটটি খুঁজে পেতে fdisk -l। এই সংখ্যাটি নিন, 512 দিয়ে গুণ করুন এবং আপনি মাউন্ট করার জন্য অফসেট বিকল্প পাবেন। সুতরাং, আপনার ক্ষেত্রে sda1 এর জন্য, 5 * 512 = 2560. তারপরে মাউন্টটি চালান:

mount -o loop,offset=2560 -t auto /path/to/image.dd /mount/point

4

লুপমাউন্টিং উত্তরের একটি অংশ।

পার্টিশনটি নির্দিষ্ট করতে সহায়তার জন্য http://wiki.edseek.com/guide:mount_loopback#accessing_specific_partitions_in_the_image দেখুন । আমি মনে করি মাউন্ট-ল লুপ, অফসেট = 32256 /path/to/image750.img / mnt আপনার পক্ষে কাজ করবে। তবে আপনার সত্যই উল্লিখিত টিউটোরিয়ালটি পড়া উচিত।


অফসেটটি ভুল দেখাচ্ছে; যা of৩ (<i> 63 * 512 = 32256 </i>) এর বিভাজন সূচনার সাথে সম্পর্কিত। বাউমার্টের উত্তরের অফসেটটি এই পরিস্থিতির জন্য আরও সঠিক দেখাচ্ছে। লিঙ্কটি একটি ভাল রেফারেন্স, তবে আপনি যদি এই পদ্ধতির জন্য প্রয়োজনীয় পদক্ষেপগুলি বা কমান্ডগুলি সংক্ষিপ্ত করতে সময় নেন তবে এটি আরও ভাল উত্তর হবে। ধন্যবাদ!
কোয়াকোট কোয়েসোট

1

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

Https://superuser.com/a/684707/128124 দ্বারা উল্লিখিত পদ্ধতি (ইউজ-লিনাক্স v2.21 এ যুক্ত উবুন্টু 16.04 যুক্ত হয়েছে), এটি আরও স্বয়ংক্রিয় করার জন্য এখানে ফাংশন রয়েছে। ব্যবহার:

$ 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 কনফিগার করুন

ব্যবহার-লিনাক্স v2.21 এর আগে শালীন পদ্ধতি।

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

মডিউল প্যারামিটার কীভাবে সেট করবেন সেগুলিও এখানে আচ্ছাদিত রয়েছে: https://askubuntu.com/questions/51226/how-to-add-kernel-module-paraters

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

sudo losetup -f --show my.img

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

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

আরো দেখুন


0

যদি আপনার ব্যবহারকারীর মোড ফাইল সিস্টেমগুলি ফিউজের মতো থাকে তবে ডেস্কটপ পরিবেশে জিনোম পছন্দ করে এবং জিনোম-ডিস্ক-চিত্র-মাউন্টারের মতো সরঞ্জাম ইনস্টল করে রেখেছেন, তবে ডান ক্লিক করেও এটি রুট ছাড়াই এবং এটি দিয়ে খুলুন।


0

আমি বিশ্বাস করি লুপমাউন্টিং এর উত্তর -

sudo mkdir /path/to/dir/
mount -o loop example.img /path/to/dir/

উপরের এটি ডিরেক্টরিতে এটি মাউন্ট করা উচিত।

এটি এটি আনমাউন্ট করা উচিত:

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