ডাব্লুউবি কীভাবে শাটডাউন করার পরে পার্টিশনগুলি পরিচালনা করে?


10

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

  1. ব্যস্তবক্স সেট আপ করুন এবং এমডেভির সাথে ডিভাইসগুলি পান
  2. কমান্ড লাইন বিকল্পগুলি পার্স করুন, প্রকৃত রুট বা লুপ রুটের জন্য জিজ্ঞাসা করছেন কিনা তা নির্ধারণ করুন
  3. যদি আসল রুট হয় তবে এটিকে মাউন্ট করুন /rootএবং রুটটি স্যুইচ করুন, কার্যকর করুন /sbin/init
  4. লুপ রুট হলে মাউন্ট হোস্ট পার্টিশনটি চালু করুন /host
  5. মাউন্ট লুপব্যাক ( /host/${LOOP}) চালু/root
  6. হোস্টের মাউন্টপয়েন্টটি সরান (ব্যস্তবক্সের mount -o move /host /root/hostজন্য)
  7. রুটে স্যুইচ করুন /rootএবং কার্যকর করুন/sbin/init

আমি initএখানে স্ক্রিপ্ট পেয়েছি :

#!/bin/sh

# Rescue shell in case of error.
rescue_shell() {
     echo "Something went wrong. Dropping you to a shell."
     exec /bin/sh
 }

parse_opt() {
        case "$1" in
                *\=*)
                        echo "$1" | cut -d= -f2-
                ;;
        esac
}

# Set up BusyBox...
busybox --install -s

# Mount the /proc and /sys filesystems.
mount -t proc none /proc
mount -t sysfs none /sys

# Populate /dev
echo ":: Populating /dev..."
echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s

# Get command line options...
for x in ${CMDLINE}
do
        case "${x}" in
                root\=*)
                        ROOT=`parse_opt "${x}"`
                ;;
                # Loadloop
                loop\=*)
                        LOOP=`parse_opt "${x}"`
                ;;
                ntfsroot)
                        NTFSROOT=1
  ;;
 esac
done


if [ "${NTFSROOT}" != 1 ]
then
 # Mount the root filesystem, plain and simple.
 echo ":: Mounting real root..."
 mount -o ro "${ROOT}" /mnt/root || rescue_shell
else
 # Load up an NTFS-based root.
 echo ":: NTFS Root mount requested. Mounting..."
 ntfs-3g "${ROOT}" /host

 if [ -f "/host/${LOOP}" ]
 then
  mount -o loop,ro  "/host/${LOOP}" /root || rescue_shell
  echo ":: Mounted. Moving host..."
  mount -o move /host /root/host || rescue_shell
  echo ":: Mounted."
 else
  "!! ERROR: Invalid/nonexistant loop given!"
  rescue_shell
 fi
fi

# Clean up.
umount /proc
umount /sys

# Boot the real thing.
echo ":: Switching to root and calling init..."
exec switch_root /root /sbin/init

আসলে কিছুই জটিল নয়। এনটিএফএস-থ্রি স্পষ্টতই ব্যস্তবক্স বাস্তবায়ন mountএবং স্টাফগুলির সাথে একমত নয় (এটি কোনও কারণে প্যারামিটার যুক্ত করে, এবং ntfs-3gক্রেপস আউট করে), সুতরাং আমি কেবল coreutilsবাস্তবায়ন বা কোনও কিছু অনুলিপি করার বিষয়টি বিবেচনা করছি । এটি, এবং লুপব্যাক পার্টিশনগুলি মাউন্ট করার জন্য আমার কী প্রয়োজন তা পরীক্ষা করা দরকার (যখন আমি নিজে লুপব্যাকটি মাউন্ট করার চেষ্টা করি তখন এটি "ফাইল খুঁজে পাওয়া যায় নি" এর মতো একটি ত্রুটি দেয়)। তবুও, আমি মনে করি এগুলি আমার নিজের থেকে বের করার পক্ষে যথেষ্ট সহজ।

যাইহোক, আমি যা সম্পর্কে ধরণের ভাবছি তা হ'ল শাটডাউন। একবার switch_rootসম্পূর্ণ হয়ে গেলে , সিস্টেমটি একটি /লুপব্যাক-মাউন্ট করা ফাইল এবং /dev/sda2(এটি একটি উইন্ডোজ 7 ইনস্টল) চালু থাকবে /host। এখন, আনমাউন্ট করার কোনও উপায় নেই /host, এটি ব্যবহৃত হিসাবে। যাইহোক, /রুটে একটি উপ-ডিরেক্টরিতে মাউন্ট করা ফাইল সিস্টেম থাকা অবস্থায় কেউ আনমাউন্ট করতে পারে না । ডাব্লুউবি-ভিত্তিক উবুন্টু ইনস্টলেশনগুলির অবশ্যই একই দ্বিধাদ্বন্দ্বের মুখোমুখি হতে হবে। কীভাবে কেউ এই বিষয়টিকে কাটিয়ে উঠতে পারে? এটি একটি মুরগি এবং ডিমের সমস্যা এবং এটি আমাকে সত্যিই বিরক্ত করে।

আমি একটি বুট স্ক্রিপ্টের লাইন ধরে এমন কিছু বিবেচনা করছিলাম যা একটি মৌলিক, মৌলিক মূলের জন্য (ইনি্রামফের মতো, তবে অন্যভাবে) ফাইলগুলির অস্থায়ী ক্যাশে ধারণ করে। এটি সর্বশেষে সঞ্চালিত হবে, কোনও টিএমপিএফ-তে ফাইলগুলি অনুলিপি করে, মূলটিকে পিভোটিং করা, সম্ভবত এটির সাহায্যে ডিগ্রিফের মূল বিন্যাসে ফিরে আসবে। আমি মূলত এটি করছিলাম:

  1. একটি মাউন্ট tmpfs/tmp/shutdown/বা কিছু।
  2. শাটডাউন ফাইলগুলি অনুলিপি করুন (সম্ভবত /usr/share/shutdown/বা কিছু)
  3. pivot_root/looptmpfs এ রুটটি এবং ক্রুটটি স্থানান্তর করতে ।
  4. mount --move/loop/hostথেকে/host
  5. আনমাউন্ট /loop
  6. আনমাউন্ট /host
  7. পরিষ্কারভাবে বন্ধ করুন, যেহেতু সমস্ত পার্টিশন আনমাউন্ট করা হয়নি।

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

সম্পাদনা :

আমি বুট কাজ পেয়েছি। coreutilsসংস্করণটি ব্যবহার করার mountমতো বিষয় যেমন আমি ভেবেছিলাম। যদিও শাটডাউন করার সময় আমার প্রত্যাশা ত্রুটিগুলি রয়েছে, যদিও; লুপব্যাক এফএস দিয়ে ফাইল সিস্টেম আনমাউন্ট করতে অক্ষম হওয়ার সাথে ত্রুটি এবং জার্নিংয়ের ত্রুটি। কীভাবে এখনও এটি ঠিক করা যায় তা আমার কোনও ধারণা নেই।

সম্পাদনা 2:

ঠিক আছে, ভাল, আমি কিছু যে কিছু ছিল ... কাজের বাছাই। আমি মূলত সম্পাদনা করেছি /etc/init.d/{halt.sh,reboot.sh,shutdown.sh}এবং নিম্নলিখিতগুলি করেছি:

  • যোগ করা হয়েছে /hostথেকে RC_NO_UMOUNTSপরিবর্তনশীল, যা জার্নালিং ত্রুটি সম্পর্কে আপ বিষম থেকে EXT4 মডিউল স্টপ
  • যোগ করা হয়েছে -o `pidof ntfs-3g`opts করার জন্য killall5(নিশ্চিত করুন যে এটি মেরে ফেলেনি NTFS-3G করতে)
  • শাটডাউন.শ এবং রিস্টার্ট.শকে সংশোধন করে / বুট / শাটডাউনফসে একটি টিএমপিএস মাউন্ট করতে এবং সেখানে কয়েকটি থ্রাইমার্ফ ফাইলের অনুলিপি করতে, মূলটিকে পিভট করুন, তারপরে ক্রোট করুন / হয় / ডাউন বা / পুনরায় আরম্ভ করুন।
  • এই দুটি স্ক্রিপ্টগুলি মূলত কিছু দ্রুত এবং নোংরা / প্রোক এবং / সিস্ট সেটআপ করে, / রুট / হোস্টকে / হোস্টে সরিয়ে দেয়, তারপরে অলস আনমাউন্টিং করে। আমি কাজ করার জন্য নিয়মিত আনমাউন্টগুলি পেলাম না (ফাইল সিস্টেমটি এখনও ব্যস্ত থাকবে), তবে কমপক্ষে এটি ফাইল সিস্টেমগুলিকে পুরোপুরি বমি থেকে বিরত করবে বলে মনে হচ্ছে।

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


আপনি কি কেবল WUBI ইনস্টল করতে পারেন এবং তারপরে কাজ করার পরে জেন্টুর সাথে সিস্টেম ফাইলগুলি স্যুইচ আউট করতে পারেন?
জাচ

উত্তর:


1

এখানে বিশেষজ্ঞ নন, তবে umountম্যানপেজটি পড়ার পরে আমি ল্যাপ মাউন্ট করা ডিভাইসগুলির জন্য নির্দিষ্ট একটি পতাকা দেখতে পাচ্ছি:

-d     In case the unmounted device was a loop device, also free this loop device.

এছাড়াও আরও পড়ার জন্য losetup(এখনও ম্যানাপেজেস), আমি আপনাকে সম্ভবত এটি ডিবাগ করতে ব্যবহার করার পরামর্শ দিচ্ছি কারণ এটি লুপ মাউন্ট করা ডিভাইসগুলির স্থিতি দেখতে ব্যবহার করা যেতে পারে।

আমি যে ম্যানপেজে উল্লেখ করছি তার লিঙ্কটি এখানে । এই বিকল্প:

-a     Show status of all loop devices.

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

যেহেতু আমি আপনার পরিস্থিতির প্রতিলিপি করতে পারছি না আমি কেবল নিজের উত্তরটি নিজের হাতে সন্ধানের উপায়গুলিই আপনাকে পরামর্শ দিতে পারি, দুঃখিত যে আমি আরও সাহায্য করতে পারি না।


0

man 8 umount:

-l

অলস অমাউন্ট। এখন ফাইল-সিস্টেমের স্তরক্রম থেকে ফাইল-সিস্টেম আলাদা করুন এবং কোনও ব্যস্ততা না হওয়ার সাথে সাথে ফাইল সিস্টেমের সমস্ত উল্লেখগুলি সাফ করুন। (কার্নেলটি ২.৪.১১ বা তার পরে প্রয়োজন)

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