আর মুছে ফেলা হলে কি হবে?


22

কেবল একটি তাত্ত্বিক প্রশ্ন ...

কিন্তু init(ইন /sbin/init) অপসারণ করা হবে কি হবে?


Ln চেষ্টা করবেন না -L- এটি কাজ করবে না। cp /proc/fd/1/exe /sbin/init && chmod 755 /sbin/initযদিও কাজ করে। আপস্টার্টটি পুনরায় ইনস্টল করতে এপিটি ব্যবহার করা যতটা স্পষ্ট তা নয় dpkg, কারণ এটি জানেনা যে এটি ডিফল্টরূপে গেছে। "প্যাকেজ আপস্টার্ট ইতিমধ্যে বর্তমান সংস্করণে রয়েছে" " আপনি dpkg --force-depends --force-remove-essential -r upstartপ্রথম পারে ।
জোশুয়া

1
apt-get install --reinstall upstart। এছাড়াও, আমার /proc/fdডিরেক্টরি নেই। আর আমি শুধু চেক করা থাকে, ln -L /proc/1/exe /tmp/initকাজ দিয়ে /sbin/initনাম পালটে /sbin/init.bak, অর্থাত্ আমি সমস্যা ছাড়া পড়তে পারেন /tmp/initএর পরে।
Ruslan

@ মুরু ঠিক আছে আমি তখন একটি ট্যাগ প্রতিশব্দ যুক্ত করব।
কাজ ওল্ফ

উত্তর:


31

বুট লোডার কার্নেলটি লোড করবে, কার্নেল init চালানোর চেষ্টা করবে, এটি খুঁজে না পেয়ে আতঙ্কিত হবে।

এর থেকে বেরিয়ে আসার উপায় হ'ল পুনরায় বুট করা, বুট পরামিতিগুলি সম্পাদনা করা, সেইভাবে যুক্ত করা init=/bin/bashএবং বুট করা। কার্নেলটি init হিসাবে ব্যাশ ব্যবহার করবে। এটি আপনাকে কমান্ড চালানোর এবং সিস্টেমটি ঠিক করার সুযোগ দেবে।

সংশোধন করা
দৃশ্যত কার্নেল (ফাইল init / main.c ) করে:

if (!try_to_run_init_process("/sbin/init") ||
    !try_to_run_init_process("/etc/init") ||
    !try_to_run_init_process("/bin/init") ||
    !try_to_run_init_process("/bin/sh"))
        return 0;

panic("No working init found.  Try passing init= option to kernel. "
      "See Linux Documentation/init.txt for guidance.");

সুতরাং এটি / বিন / শ খুঁজে পাবে (যা ড্যাশের লিঙ্ক) এবং এটি আপনাকে একটি শেল এবং init=/bin/bashবুট প্যারামিটার ব্যবহার না করে এটি ঠিক করার সুযোগ দেয় ।


দুর্দান্ত উত্তর। জানতেন না যে কার্নেল এর চেয়ে বেশি কিছু অনুসন্ধান করে /sbin/init
রুসলান

আর /bin/shফাইল না থাকলে? অথবা /bin/bashঅথবা /bin/dashইত্যাদি? আপনি কীভাবে একই সাথে এই সমস্তগুলি মুছতে পারবেন তা নিশ্চিত নন তবে তাত্ত্বিকভাবে কী হবে?
ট্রিসিস

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

12

কিছুই না ঘটে, যতক্ষণ না আপনি রিবুট করার চেষ্টা করবেন। যতক্ষণ সিস্টেম চলছে, এবং আপনি /sbin/init এন চালিয়ে রানলেভেলগুলি স্যুইচ করার চেষ্টা করবেন না , আপনি বুঝতে পারবেন না যে এটি চলে গেছে।

প্রকৃতপক্ষে, /sbin/initআপনি যদি ভুলটি তাড়াতাড়ি বুঝতে পেরে থাকেন এবং শান্ত থাকেন তবে মুছে ফেলা অপরিহার্য। অপারেটিং সিস্টেমটি চালিয়ে যাওয়ার সময়ে সিস্টেম প্রশাসকরা অনেকগুলি "নেস্টোমাইট" থেকে পুনরুদ্ধার করেছেন

মুছে ফেলা থেকে পুনরুদ্ধার করার একটি উপায় /sbin/initহ'ল upstartএপিটি ব্যবহার করে প্যাকেজটি পুনরায় ইনস্টল করা ।

পুনরুদ্ধার করার মাচো উপায়টি হ'ল মেশিনে কেবলমাত্র সংস্থানগুলি ব্যবহার করা। আপনার পক্ষে একটি বিষয় /sbin/initহ'ল সর্বদা চলমান। অতএব, আপনি চালানোর rm /sbin/initসময় ফাইলটি কেবল ফাইল সিস্টেম থেকে লিঙ্কযুক্ত থাকে। ইনড এবং ফাইলের সামগ্রীগুলি পিআইডি 1 প্রস্থান না হওয়া অবধি ডিস্কে এবং মেমরিতে থাকে। আপনাকে কেবল /sbin/initউপযুক্ত ইনোড থেকে পুনরায় তৈরি করতে হবে ।

সবচেয়ে সহজ উপায় যে কাজ করা সম্ভব হল:

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