এটা কি সম্ভব?
ভাল, বেশিরভাগ তুচ্ছ এবং গুরুত্বপূর্ণ ইউটিলিটিগুলি ইনস্টল করা আছে /bin
এবং এখন আপনি সেগুলির সকলের অ্যাক্সেস হারিয়ে ফেলেছেন। আসলে, আপনি যদি রিবুট করেন তবে আপনার সিস্টেম আর বুট-আপ করতে সক্ষম হবে না।
যাইহোক, আমরা সমস্যাটি স্থির করতে যাচ্ছি /bin
যেখানেই সম্ভব যতটা সম্ভব বিষয়বস্তু তৈরি করা হবে। পার্থক্যটি কিছু প্রতীকী লিঙ্কগুলির হবে যা আমরা খুব ঠিক করব।
কিভাবে?
প্রথমত, আমাদের chroot
আপনার ভাঙা ব্যবস্থা থাকা উচিত , তবে একটি সামান্য পার্থক্য সহ ! এর পরে আমরা আপনার সিস্টেমে ইনস্টলড প্যাকেজগুলির একটি তালিকা পাব যার /bin
ডিরেক্টরিতে কোনও ইনস্টল করা ফাইল রয়েছে , তারপরে আমরা কেবল প্রয়োজনীয় প্যাকেজগুলি ডাউনলোড করতে যাব এবং প্রয়োজনীয় ফাইলগুলি এতে বের করতে যাচ্ছি /bin
। তারপরে আমাদের হয়ে যাবে।
উদাহরণস্বরূপ, পরে chroot
, আমরা প্যাকেজগুলির একটি তালিকা পেতে পারি যা /bin
ব্যবহারে ফাইলগুলি ইনস্টল করা রয়েছে :
dpkg --search /bin | cut -f1 -d: | tr ',' '\n'
এবং আমরা এটি ব্যবহার করতে পারি:
dpkg --listfiles PACKAGE-NAME | grep "^/bin/" # or awk '$0 ~ "^/bin/
এই প্যাকেজগুলি দ্বারা ইনস্টল করা ফাইলগুলিতে তালিকাভুক্ত করতে /bin
।
তারপরে আমরা কেবল আমাদের প্রয়োজনীয় সমস্ত প্যাকেজগুলির একটি তালিকা তৈরি করি, তারপরে সেগুলি ডাউনলোড করুন এবং এ জাতীয় /bin
কিছু দিয়ে এটিকে নিষেধ করুন :
xargs apt download < list-packages
dpkg-deb -x PACKAGE .
mv ./bin/* /bin
তবে আমাদের সিস্টেমে ইনস্টল করা সমস্ত প্যাকেজ পরীক্ষা করার জন্য আমাদের অবশ্যই একটি স্ক্রিপ্ট ব্যবহার করতে হবে, কারণ এটি নিজে হাতে করা কেবল উন্মাদনা।
সুতরাং আমি একটি স্ক্রিপ্ট লিখেছিলাম যা আমাদের প্রয়োজন সমস্ত কিছু করে। এটি আমাদের পুনরুদ্ধার করার জন্য প্রয়োজনীয় সমস্ত প্যাকেজ খুঁজে পায় /bin
, প্রতিটি প্যাকেজের নাম এবং তাদের সম্পর্কিত ফাইলগুলি আমাদের দেখায় /bin
। এখানে একটি স্ক্রিন শট হয়:
শেষে আমরা সমস্ত প্যাকেজ পুনরায় ইনস্টল করতে বা শুধুমাত্র প্রয়োজনীয় ফাইলগুলি ডাউনলোড এবং এক্সট্র্যাক্ট করতে বেছে নিই /bin
(যা প্রস্তাবিত বিকল্প):
আপনি এই স্ক্রিপ্টের একটি অনুলিপি গ্রহণ করতে পারেন বা সরাসরি এটি ডাউনলোড করতে পারেন ।
চল শুরু করি
chroot
আপনার ইনস্টলড উবুন্টুর মতো একই আর্কিটেকচারযুক্ত একটি সিস্টেমকে আপনার সিস্টেম বুট করুন, একটি টার্মিনাল খুলুন এবং রুট অ্যাক্সেস পান:
sudo -i
আপনার root
ফাইল সিস্টেমটি মাউন্ট করুন (আমার জন্য এটি /dev/sda1
):
mount /dev/sda1 /mnt
আমাদের ইন্টারনেটের সাথে সংযোগ প্রয়োজন, সুতরাং resolv.conf
লাইভ উবুন্টু থেকে আপনার মাউন্ট করা মূল পার্টিশনে অনুলিপি করুন :
cp /etc/resolv.conf /mnt/etc/resolv.conf
মাউন্ট করা পার্টিশনের কোথাও স্ক্রিপ্টটি অনুলিপি করুন, যেমন:
cp /media/ubuntu/usb/restore-bin.sh /mnt/restore-bin.sh
অথবা আপনি এটি wget
ইত্যাদি ব্যবহার করে ডাউনলোড করতে পারেন:
wget https://git.io/v9fRm -O /mnt/restore-bin.sh
অন্যান্য প্রয়োজনীয় পাথ মাউন্ট করুন:
mount --bind /dev /mnt/dev
mount --bind /sys /mnt/sys
mount -t proc /proc /mnt/proc
এবং এখানে সামান্য পার্থক্য : chroot
সেখানে কোনও /bin
ডিরেক্টরি নেই যখন আমরা একটি ভাঙ্গা সিস্টেমের কিভাবে করতে পারি ? আমাদের কোন শেল চালানো উচিত?
সুতরাং একটি অস্থায়ী বিন ডিরেক্টরি তৈরি করুন। যেমন: bintmp
আপনার ভাঙা সিস্টেমের মূলের মধ্যে নাম দেওয়া হয়েছে :
mkdir /mnt/bintmp
তারপরে লাইভটিকে আবদ্ধ করুন /bin
:
mount --bind /bin /mnt/bintmp
/bintmp/bash
আপনার লগইন শেল হিসাবে সেট করার সময় সিস্টেমে ক্রট করুন :
chroot /mnt /bintmp/bash
/bintmp
আপনার PATH
পরিবেশ পরিবর্তনশীল হিসাবে রফতানি করুন :
export PATH=/bintmp:$PATH
স্ক্রিপ্টটি সম্পাদনযোগ্য বিট দিন:
chmod +x restore-bin.sh
স্ক্রিপ্টটি চালান:
./restore-bin.sh
অনুসন্ধান শেষ হওয়ার জন্য অপেক্ষা করুন তারপরে আমরা স্ক্রিনশটটিতে যে প্রশ্নটি দেখেছি তার উত্তর দিন। এটি পুনরুদ্ধার শুরু হবে /bin
এবং আমরা প্রায় সম্পন্ন করেছি।
এটি সম্পন্ন হওয়ার পরে , পরিবেশ থেকে বেরিয়ে আসতে এবং মাউন্ট করা পাথগুলি আনমাউন্ট করার জন্য CTRL+ ব্যবহার করুন :Dchroot
umount -R /mnt
সিস্টেমটি পুনরায় বুট করুন।
এর মধ্যে লিঙ্কগুলি পুনরুদ্ধার করা হচ্ছে /bin
/bin
ডিরেক্টরি দ্বারা পরিচালিত প্রায় 5 টি প্রতীকী লিঙ্ক ব্যতীত এখন ডিরেক্টরিতে থাকা সমস্ত ফাইলই ফিরে আসে update-alternatives
।
আপনার চলমান সিস্টেমে, চালান:
sudo update-alternatives --all
এটি আপনাকে কিছু প্রশ্ন জিজ্ঞাসা করে; আপনি কেবল ENTERসেগুলি গ্রহণ করতে চাপতে পারেন ।
এবং এখন আমরা সম্পন্ন।
/bin
উবুন্টু শুধু করার জন্য একটি সিমবলিক লিঙ্ক উপর/usr/bin
এই দিন? সুতরাং আপনাকে যা করতে হবে তা হ'ল সিমলিংকটি পিছনে ফেলে দেওয়া উচিত?