ভাঙ্গা লিনাক্স ইনস্টলেশন পুনরুদ্ধার করার জন্য ক্রুট প্রস্তুত করার সঠিক উপায় কী?


52

এই প্রশ্নটি প্রায়শই জিজ্ঞাসিত প্রশ্নগুলির সাথে সম্পর্কিত। পদ্ধতিটি প্রায়শই উল্লেখ করা হয় বা অফসাইটের সাথে সংযুক্ত করা হয়, তবে প্রায়শই পরিষ্কার এবং সঠিকভাবে বলা হয় না। এক জায়গায় দরকারী তথ্যকে কেন্দ্রীভূত করার লক্ষ্যে এই প্রশ্নটি এই পদ্ধতির জন্য একটি পরিষ্কার, সঠিক রেফারেন্স সরবরাহ করতে চায়।


পুনরুদ্ধারের পদ্ধতির জন্য ক্রুট পরিবেশ প্রস্তুত করার সঠিক পদক্ষেপগুলি কী কী ?

ইন অনেক পরিস্থিতিতে , একটি ভাঙ্গা Linux ইনস্টলেশন মেরামত সেরা ইনস্টলেশন মধ্যে থেকে সম্পন্ন করা হয়। তবে সিস্টেমটি বুট না হলে আপনি কীভাবে এটিকে এর ভিতর থেকে ঠিক করবেন?

ধরে নেওয়া যাক আপনি কোনও বিকল্প সিস্টেমে বুট করার ব্যবস্থা করেছেন। একবার সেখানে গেলে, এটির সমাধানের জন্য আপনাকে আপনার ভাঙা ইনস্টলেশনটি অ্যাক্সেস করতে হবে। অনেক পুনরুদ্ধার কীভাবে TOS ব্যবহার করার প্রস্তাব chroot অনুক্রমে যেন আপনি আসলে ভাঙা ইনস্টলেশন বুট করা হয় প্রোগ্রাম চালানো হয়।

  • প্রাথমিক পদ্ধতিটি কী?
  • অনুসরণ করার জন্য কি এখানে সেরা-অনুশীলন গ্রহণ করা আছে?
  • একটি নির্দিষ্ট পুনরুদ্ধারের কাজে বেসিক প্রস্তুতির পদক্ষেপগুলি অভিযোজিত করার জন্য কোন ভেরিয়েবলগুলি বিবেচনা করা দরকার?

যেহেতু এটি সম্প্রদায় উইকি, তাই এই প্রশ্নটিকে আরও উন্নত করতে এডিট করতে দ্বিধা বোধ করবেন।

উত্তর:


72

এখানে কিছু সংস্থান রয়েছে:

"রুট পরিবর্তন করা" বা "ক্রুটিং" আপনার ফাইল সিস্টেমের অংশটি জুম করার জন্য একটি পদ্ধতি, যাতে উদাহরণস্বরূপ, /pathযা আগে অ্যাক্সেসযোগ্য ছিল তা উল্লেখ করবে /mnt/path। "ক্রুট" এক্সপ্রেশনটির "রুট" /মূল ব্যবহারকারীকে নয়, মূল ফাইল সিস্টেমকে বোঝায় । (সাধারণত ক্রুট করার জন্য আপনার রুট ব্যবহারকারীর সুবিধাগুলি প্রয়োজন need)

প্রস্তুতি

  • এই গাইডের সমস্ত পদক্ষেপগুলি রুট ব্যবহারকারী হিসাবে সম্পাদন করতে হবে।

  • আমরা মনে করি আপনার হার্ড ডিস্কটি / dev / sda1 এ রয়েছে এবং এর ফাইল টাইপ এক্সট্রো 3। আপনি যদি নিজের ডিস্কের অবস্থান এবং ফাইল টাইপ না জানেন তবে এর ফলাফলটি পড়ুন fdisk -l

  • আপনি যে সিস্টেমে বুট করেছেন সেটির আর্কিটেকচার (যেমন এটি একটি 32 বিট লাইভসিডি) এবং আপনি যে সিস্টেমে প্রবেশ করতে চান সেটি (যেমন এটি আপনার হার্ড ড্রাইভের 32 বিট ইনস্টলেশন) ম্যাচটি নিশ্চিত করুন। আপনি যে আর্কিটেকচারটি ব্যবহার করে বুট করেছেন তা নির্ধারণ করতে পারেন uname -m

  • আপনার যে কোনও কার্নেল মডিউলগুলি লোড হয়েছে তা নিশ্চিত হয়ে নিন।

  • আপনার প্রয়োজন হলে আপনার নেটওয়ার্ক সেট আপ করুন (উদাহরণস্বরূপ, আপডেট প্যাকেজ ইনস্টল করার জন্য)।

  • প্রয়োজনে আপনার সোয়াপ পার্টিশনটি সূচনা করুন (যেমন, swapon /dev/sda3)।

ক্রুট পারফর্ম করছে

cd /
mount -t ext3 /dev/sda1 /mnt
mount -t proc proc /mnt/proc
mount -t sysfs sys /mnt/sys
mount -o bind /dev /mnt/dev

যদি আপনার /bootডিরেক্টরিটি আপনার থেকে আলাদা পার্টিশনে থাকে /এবং আপনি এতে ফাইলগুলি পরিচালনা করতে চান (উদাহরণস্বরূপ, আপনি যদি GRUB এর সাথে কাজ করছেন, কার্নেল আপগ্রেড করছেন ইত্যাদি), আপনাকেও সেই পার্টিশনটি মাউন্ট করতে হবে। এটি যদি / dev / sda2 এ থাকে এবং এর ফাইল টাইপটি এক্স 2 হয়, তবে করুন:

mount -t ext2 /dev/sda2 /mnt/boot

একইভাবে আপনার ফাইল সিস্টেমের অন্য কোনও অংশে ( /var, /usr) যা পৃথক পার্টিশনগুলিতে থাকে তবে আপনার অ্যাক্সেসের প্রয়োজন। সাধারণত যখন আপনি কোনও কিছু ঠিক করার জন্য ক্রুট করছেন তখন আপনার / বাড়িতে অ্যাক্সেসের প্রয়োজন হবে না, তাই আপনাকে এটি নিয়ে বিরক্ত করার দরকার নেই।

(ক্রোট করার পরে ফাইল সিস্টেমগুলি মাউন্ট করাও সম্ভব, তবে এটি আগে থেকে এটি করা আরও চৌকস। ক্রুট থেকে বেরিয়ে আসার আগে এগুলিকে সামঞ্জস্য করুন, এটি বন্ধ হয়ে গেলে সিস্টেম তাদের সঞ্চার করতে জানতে পারবে না This এটি ফাইল সিস্টেমগুলিকে ক্ষতি করতে পারে))

যদি আপনি নিজের নেটওয়ার্ক সেটআপ করেন এবং এটিকে ক্রোটেড সিস্টেমে ব্যবহার করতে চান তবে অনুলিপি করুন /etc/resolv.confযাতে আপনি ডোমেনের নামগুলি সমাধান করতে সক্ষম হবেন:

cp -L /etc/resolv.conf /mnt/etc/resolv.conf

এখন আপনি মাউন্ট করা ফাইল সিস্টেমে যাওয়ার জন্য প্রস্তুত:

chroot /mnt /bin/bash

(যদি এটি কোনও ত্রুটি chroot: cannot run command '/bin/bash': Exec format errorফেরায়, এটি সাধারণত নির্দেশ করে যে আপনি একটি আর্কিটেকচার (যেমন x86_32) দিয়ে বুট করেছেন এবং অন্যটিতে (যেমন x86_64) ক্রুট করার চেষ্টা করছেন x সমাধানটি হ'ল একটি লাইভসিডি ব্যবহার করা হবে যা আপনার সিস্টেমের মতো একই স্থাপত্য রয়েছে) মধ্যে chroot।)

এই মুহুর্তে, আপনি এখনও কার্নেল আপনার সাথে বুট চালাচ্ছেন, কিন্তু পাথ /pathকি ব্যবহার করা হয় উল্লেখ করব /mnt/path

আপনি যদি GRUB এর সাথে কিছু করছেন, আপনার /etc/mtabফাইলটি আপ-টু-ডেট রয়েছে তা নিশ্চিত হওয়া দরকার :

grep -v rootfs /proc/mounts > /etc/mtab

এটি করতে এই মুহুর্তে সহায়ক হতে পারে:

source /etc/profile
export PS1="(chroot) $PS1"  # add a reminder to your prompt

আপনার নোংরা কাজ করুন

এই মুহুর্তে, আপনার যা যা করা দরকার তা সমাধান করতে পারেন:

  • আপনার ডিস্কের এমবিআরতে পুনরায় ইনস্টল করুন GRUB
  • ভুলে যাওয়া পাসওয়ার্ড পুনরায় সেট করুন
  • কার্নেল আপগ্রেড করুন (বা ডাউনগ্রেড)
  • আপনার initramdisk পুনর্নির্মাণ
  • আপনার / ইত্যাদি / fstab ঠিক করুন
  • আপনার প্যাকেজ ম্যানেজার ব্যবহার করে প্যাকেজগুলি পুনরায় ইনস্টল করুন
  • যাই হোক

পরিষ্কার আপ

আপনি শেষ হয়ে গেলে, চলমান সমস্ত প্রোগ্রাম বন্ধ হয়ে গেছে তা নিশ্চিত করুন। তারপরে ক্রুট থেকে প্রস্থান করুন:

exit

এখন আপনি মাউন্ট করা সমস্ত পার্টিশন আনমাউন্ট করুন:

umount /mnt/boot # if you mounted this or any other separate partitions
umount /mnt/{proc,sys,dev}

অবশেষে আপনার হার্ড ড্রাইভটি আনমাউন্ট করার চেষ্টা করুন:

umount /mnt

/ Mnt (বা অন্য কোনও বিভাজন) ব্যস্ত বলে আপনি যদি ত্রুটি পান তবে এর অর্থ দুটি জিনিসের মধ্যে একটি হতে পারে:

  • ক্রুটের ভিতরে একটি প্রোগ্রাম চলমান ছিল।

  • বা আরও ঘন ঘন: এই মাউন্টটিতে একটি মাউন্ট পয়েন্ট এখনও বিদ্যমান। উদাহরণস্বরূপ, আনমাউন্ট / এমএনটি করার চেষ্টা করার সময় / mnt / usr এখনও মাউন্ট করা হয়।

পরবর্তী ক্ষেত্রে প্রথমে আপত্তিজনক মাউন্ট পয়েন্টটি আনমাউন্ট করুন। সমস্ত বর্তমান মাউন্ট পয়েন্টগুলির একটি অনুস্মারক পেতে, mountকোনও পরামিতি ছাড়াই চালান ।

অবশেষে:

reboot

10
প্রস্তুতি হিসাবে, আমি chroot.shব্যবহার করি এমন প্রতিটি সিস্টেমের মূলটিতে একটি স্ক্রিপ্ট রেখে যেতে চাই, যার বিষয়বস্তু কম-বেশি উপরের সাথে মেলে। যখন আমার কোনও লাইভসিডি বা অন্য কিছু থেকে সেই সিস্টেমে ক্রট করা দরকার তখন আমি কেবল রুট ফাইল সিস্টেমটি মাউন্ট করব এবং ক্রুট স্ক্রিপ্টটি চালাব run সঠিক কমান্ডগুলির জন্য আর কোনও ফ্র্যাঙ্কিক গুগলিং নেই।
রায়ান থম্পসন

4
আপনি স্যার, আমার বেকন সংরক্ষণ করেছেন - উজ্জ্বল লেখার আপ। এই জাতীয় পরিস্থিতিতে, আমি SO +1000 বোতাম আছে আশা করি।
জেলানিক্স

1
এটি ব্যবহার করুন: SHELL=/bin/bash chroot /mntলাইভসিডিএলের ডিফল্ট শেলটি ক্রোটেড পরিবেশে না থাকলে (সিস্টেমেস্কুয়েডস এর ডিফল্ট জ্যাশ উদাহরণ) ভিমে উদাহরণস্বরূপ !
আলয়েস মাহডাল

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