ফ্রিবিএসডি 8.2, মুছে ফেলা / বিন / শ, বুট করতে পারে না


8

আমি আমার সার্ভারগুলির মধ্যে একটিতে খুব খারাপ সিদ্ধান্ত নিয়েছি।

আমি মুছে ফেলেছি /bin/sh। আমি সার্ভারটি পুনরায় চালু করেছি এবং সার্ভারটি চলবে না কারণ এটির /bin/shজন্য আরসি স্ক্রিপ্টগুলি শুরু করা দরকার । Sh এর প্রয়োজন হওয়ায় আমি একক ব্যবহারকারী মোডে অ্যাক্সেস করতে পারি না।

বোর্ন শেলটি পুনরায় ইনস্টল করার কোনও সহজ উপায় আছে?

আমি লাইভ সিডি থেকে শুল্ক অনুলিপি করার চেষ্টা করেছি, এটি ld-elf.so.1 লাইব্রেরিতে ব্যর্থ হয়েছে। তাই আমি লাইভসিডি থেকে আমার / পার্টিশনে / লিব্যাক্সে অনুলিপি করেছি। এরপরে এটির জন্য লাইবেডিট.স লাইব্রেরি প্রয়োজন এবং আমি এটি / লিবেক্সে অনুলিপি করেছিলাম তবে এটি এখন কাজ করছে না।

আমি এতে একটি সিমিলিংক চেষ্টা করেছি /usr/local/bin/bashকিন্তু এটি এখনও "sh খুঁজে পাচ্ছে না" টাইপ ত্রুটির সাথে উপস্থাপন করে। আমি ধরে নিচ্ছি যে এটি /usrএখনও মাউন্ট করা হয়নি কারণ এটি একটি আরসি স্ক্রিপ্ট থেকে সম্পন্ন হয়েছে।

কোন সাহায্য ব্যাপকভাবে প্রশংসা করা হয়।


2
আহারে. এটা ভাল, ভাল না। শেষ টেপটি টানার সময়।
MDMarra

আপনার লাইভসিডি হতাশা সম্ভবত কারণ এটি ফ্রিবিএসডি-র একটি ভিন্ন সংস্করণ (বা আপনার লাইভসিডি একটি জাদুকরী স্কোয়াশেড বাইনারি ব্যবহার করছে যা / বিন / অ্যাবঞ্চআফ স্টাফ বিভিন্ন নামের সাথে হার্ডলিঙ্কযুক্ত)। আপনি FreeBSD এর কোন সংস্করণটি চালাচ্ছেন?
voretaq7

হার্প-ডার্প সংস্করণ শিরোনামে রয়েছে। আমার কিছু মনে করবেন না। কফির দরকার।
voretaq7

3
তাই ... আহ ... কি করতে বাধ্য করল? আপনি এটাকে শব্দ করে তোলে যেন এটি ইচ্ছাকৃত।
ব্যবহারকারী 606723

উত্তর:


8

আপনাকে কোনও কিছু দিয়ে / বিন / শ প্রতিস্থাপন করতে হবে ; এটাই চাবি। আপনি যদি স্টার্টআপের সময় ফ্রিবিএসডি লোডারটিতে প্রবেশ করতে পারেন ("ঠিক আছে" প্রম্পট সহ) এরকম কিছু চেষ্টা করুন:

set init_shell=/bin/csh
unset init_script
unset init_path

আমি ফ্রিবিএসডি ম্যানুয়াল পৃষ্ঠা (অনলাইন) থেকে লোডার (8) এর কাছ থেকে এই তথ্যটি পেয়েছি । আমি এটি করিনি, তবে এটি কাজ করা উচিত (ধরে নেওয়া / / সিএসএস উপস্থিত এবং কার্যকর হবে))

যদি আপনার কাছে ফ্রিবিএসডি 8.2 সার্ভার থাকে এবং অন্য কোথাও চলমান থাকে তবে আপনি সেই উত্স থেকে / বিন / এস চুরি করে এবং যেখানে প্রয়োজন সেখানে সিস্টেমে রাখার চেষ্টা করতে পারেন।

পর্যায়ক্রমে, একটি স্থিতিশীলভাবে নির্মিত / বিন / শ পান এবং পরিবর্তে এটি স্থাপন করুন; স্ট্যাটিক্যালি বিল্টেড বাইনারি নিয়ে কোনও লাইব্রেরির সমস্যা থাকবে না।

সম্পাদনা: আমার উল্লেখ করা উচিত: আপনি যদি / বিন / সিএস বুট করেন তবে আপনাকে এখনও / বিন / শ এর পরিবর্তে কিছু ব্যবহার করতে হবে। আপনি এটি ইন্টারনেটে পেতে পারেন বা অন্য সিডি বা একটি প্যাকেজ বা কোনও কিছু থেকে এটি অনুলিপি করতে পারেন; বুট করতে / বিন / সিএসএস ব্যবহার করে আপনাকে মেশিনে নিয়ে যায়। নেটওয়ার্কে অনুলিপি করার জন্য আপনার নেটওয়ার্কটি আনতে হবে; অন্যথায়, একটি সিডিআরওএম থেকে অনুলিপি করুন।

ভবিষ্যতে এটি এড়ানোর সর্বোত্তম উপায়:

  1. / বিন থেকে মুছবেন না! (এটি সহজ অংশ)
  2. একটি স্থিতিশীলভাবে নির্মিত / বিন / শ করুন, গতিশীলভাবে সংযুক্ত নেই।
  3. /Bin/sh.static এর মতো একটি ব্যাকআপ শ করুন।

তিনটি করে।


এছাড়াও একটি দুর্দান্ত "আমাকে ফিরিয়ে আনুন যাতে আমি এই সমাধানটি ঠিক করতে পারি" সমাধানটি (আপনাকে বুট করার জন্য লাইভসিডি না লাগানোর গুণে)।
voretaq7

6

ঠিক আছে, প্রথম বক্তৃতা:

  1. সিস্টেমে বাইনারিগুলি দিয়ে কিছুই মেশবেন
    না/bin,/sbinএবং/rescueফ্রিবিএসডি-তে একা থাকতে হবে। আপনি কী করছেন তা যদি আপনি জানেন (আপনি কী করছেন আপনি যদি তাও জানেন তবে এটিও একা ছেড়ে দেওয়া উচিত They এগুলি সত্যই গুরুত্বপূর্ণ - এগুলি সবই!)

  2. মুছবেন না/bin/shকখনোই না। উপর কোন * কিসসু সিস্টেম এটি রয়েছে।
    সত্যিই। এটা করবেন না। একজন অনেক স্ক্রিপ্ট উপর নির্ভর/bin/shএকটি বোর্ন শেল হচ্ছে। এটি মহাবিশ্বকে ভেঙে দেয়।
    আপনি কি সত্যিই আপনি করতে চান তাহলে সম্ভবত নিরাপদে একটি সঙ্গে এটি প্রতিস্থাপন করতে পারেন কপি এরbashমত আদম জেড প্রস্তাব, কিন্তু আপনি কাজ করতে যাচ্ছেন আপনি চাইলে করতে পারে যে স্ট্যাটিক্যালি লিঙ্ক যে কপিbash- এটি লাইব্রেরি অনেক pulls, এবং আপনি সিস্টেমটি আপ না হওয়া এবং/usr/localমাউন্টনা হওয়া পর্যন্ত সেগুলি নাও থাকতে পারে।


এখন, গণ্ডগোল কিভাবে ঠিক করবেন? দুটি বিকল্প:

বিকল্প 1: http://www.freebie.org/ এ কিছুটা বেদনাদায়ক
মাথা(বা আপনার পছন্দের ফ্রিবিএসডি লাইভসিডি - আপনি সম্ভবত এটির জন্য http://www.freebsd.org থেকে পুনরুদ্ধার সিডিও ব্যবহার করতে পারেন)। লাইভসিডিটি ধরুন, এটি পুড়িয়ে ফেলুন এবং এটি বুট করুন।

একবার আপনি লাইভসিডি পরিবেশে উঠলে আপনার আবদ্ধ সিস্টেমের মূল পার্টিশনটি মাউন্ট করুন, /bin/shলাইভসিডি থেকে আপনার মেশিনে অনুলিপি করুন , তারপরে পুনরায় বুট করুন।

এটি আপনাকে ব্যাক আপ এবং চলমান হওয়া উচিত - আপনি "ওয়ার্ল্ড" পুনর্নির্মাণের নির্দেশাবলী অনুসরণ করতে পারেন , বা /bin/shআপনার চলমান সিস্টেমের সাথে মেলে এমন উত্স ট্রি থেকে কমপক্ষে পুনরায় সংকলন করতে পারেন।

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

পুনরায় বুট করুন এবং আপনার ঠিক থাকা উচিত - লাইভসিডি হিসাবে একই সতর্কতা যদিও /bin/shআপনি এটি ধরেন তবে এটি যুক্তিযুক্ত-নিকটবর্তী-অভিন্ন মেশিন থেকে নয়।


1
ফ্রিবিএসডি-র অন্য বিতরণ থেকে / বিন / ব্যাশ ব্যবহার করা কেবলমাত্র তখনই কাজ করবে যদি ভাগ করা লাইব্রেরিগুলি সঠিক সংস্করণ হয়। বিকল্প বিল্ডের পরিবর্তে ফ্রিবিএসডি 8.2 থেকে সরাসরি এমন কিছু ব্যবহার করা ভাল। যাইহোক, যে কোনও ফ্রিবিএসডি 8.x সিস্টেমে স্ট্যাটিক্যালি নির্মিত শেল সরবরাহ করতে সক্ষম হওয়া উচিত যা কাজ করবে।
মেই

@ ডেভিড গুড পয়েন্ট - /binস্থিরভাবে আর লিঙ্কযুক্ত নয়। আমি মনে করি ফ্রিবিএসডি-র যথাযথ মুক্তির জন্য রেসকিউ সিডির একটি ব্যবহারযোগ্য শেল রয়েছে (অর্থাত একটি যা কেবল জায়গায় ফেলে দেওয়া যেতে পারে) তবে আমি একটি বুট করার পরে কিছুক্ষণ হয়ে গেছে ...
voretaq7

4

Symlinking পরিবর্তে আপনার কপি bashমধ্যে /bin/shlddকমান্ডটি ব্যবহার করে যে কোনও লাইব্রেরি রুটফগুলি ব্যতীত ফাইল সিস্টেমে থাকতে পারে এবং সেগুলি rootfs এ অনুলিপি করতে পারে find


1
এটি একটি ভাল সমাধান, তবে এটি একটি লাইব্রেরির বিশৃঙ্খলা তৈরি করে যা পরবর্তী সময়ে পরিষ্কার-পরিচ্ছন্নতার প্রয়োজন হবে।
voretaq7

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