লিনাক্স কার্নেলটি চালানোর জন্য কোনও ফাইল সিস্টেমের প্রয়োজন?


19

আমার মতামত হ্যাঁ, এটি হ'ল, কারণ বাইরের বিশ্বের সমস্ত দরকারী এক্সপোজারের জন্য (অ-সুবিধাযুক্ত প্রসেসর মোড) প্রথমে বাইরের বিশ্বে চলমান একটি প্রক্রিয়া প্রয়োজন। এর জন্য একটি ফাইল সিস্টেম, এমনকি একটি অস্থায়ী, ইন-র্যাম, ফাইল সিস্টেমের প্রয়োজন হবে।

অন্য প্রকৌশলী আমার সাথে একমত নন, তবে আমি এটি (আমার অজানা) মামলার বাইরে প্রমাণ করতে পারি না।

এই প্রশ্নের উত্তর 'দৌড়' এর সংজ্ঞা উপর নির্ভর করে?


4
আমি মনে করি চলমান কার্নেলটি "প্রয়োজনীয়" হয় নাuseful exposure to the outside world
jsotola


1
আপনি যদি কার্নেলটিতে নতুন কোড যুক্ত করেন তবে আপনি যে কোনও কিছু করতে পারেন। যদি আপনি না করতে পারেন তবে এটি সূচনা করতে শুরু করবে যেখানে এটি চালানোর চেষ্টা করে init(প্রথম ব্যবহারকারী-স্থান প্রক্রিয়া) এবং এটি ব্যর্থ হবে।
ব্যবহারকারী 253751

1
"রান" সংজ্ঞায়িত করুন ...
থরবজর্ন রাভন অ্যান্ডারসন

উত্তর:


27

এটি বরং একটি অদ্ভুত প্রশ্ন কারণ আপনি কোনও প্রোগ্রাম চালানোর মতো কার্নেলটি চালান না। কার্নেলটি প্রোগ্রাম চালানোর জন্য একটি প্ল্যাটফর্ম। অবশ্যই সেটআপ এবং শাটডাউন কোড রয়েছে তবে কার্নেলটি নিজে থেকে চালানো সম্ভব নয়। সর্বদা একটি "প্রাথমিক" প্রক্রিয়া থাকতে হবে। এবং এটি না থাকলে কার্নেল আতঙ্কিত হবে। ডিএন কার্নেল থেকে বেরিয়ে যাওয়ার চেষ্টা করলে আতঙ্কিত হবে।

এই দিনগুলির init প্রক্রিয়াটি সিস্টেমডের মতো কিছু। অন্যথায় নির্দিষ্ট না করা থাকলে কার্নেলটি শুরু হওয়া অবস্থানের তালিকা থেকে একটি প্রোগ্রাম চালানোর চেষ্টা করবে /sbin/init। আপনি যে জরুরী অবস্থার সাহায্যে লিনাক্স বুট করতে পারেন তা জরুরী ক্ষেত্রে http://man7.org/linux/man-pages/man7/bootparam.7.html টি ডিগ্রি পরম দেখুন init=/bin/bash। তবে আপনি কীভাবে সর্বদা চালানোর জন্য ফাইল সিস্টেমে কোনও ফাইল নির্দিষ্ট করে তা লক্ষ্য করুন।

কার্নেলটি আতঙ্কিত হবে যদি এটির শুরু হয় তবে কোনও ফাইল সিস্টেম নেই কারণ এটি ব্যতীত ইনড লোড করার কোনও উপায় নেই।

মুরগির মাংস এবং ডিমের কারণে কিছু বিভ্রান্তি দেখা দিতে পারে যেখানে কার্নেলকে ফাইল ফাইল অ্যাক্সেস করতে ড্রাইভার লোড করতে হবে। এটির লক্ষ্যে যাওয়ার জন্য একটি প্রাথমিক র‌্যামডিস্ক ডিস্কের একটি চিত্র থেকে ভারী চালক এবং সেটআপ স্ক্রিপ্টগুলি সহ লোড করা হয়। ফাইল সিস্টেম লোড হওয়ার আগে এগুলি কার্যকর করা হয়। তবে কোনও ভুল করবেন না প্রাথমিক র‌্যামডিস্ক নিজেই একটি ফাইল সিস্টেম। প্রাথমিক র‌্যামডিস্ককে /initবলা হয় (যা প্রাথমিক র‌্যামডিস্কে সঞ্চিত থাকে)। অনেক বিতরণে শেষ পর্যন্ত এটি কল করে /sbin/init। আবার কোনও ফাইল সিস্টেম ছাড়া এটি অসম্ভব।


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

1
@PeterL। সেই সীমা শেলটি initrd / initramfs / আইআরসি থেকে যে কার্নেল বুট করেছে তা থেকে কিছু শেল।
মুরু

3
মনে রাখবেন আপনি কার্নেলের মধ্যে initramfs (একটি CPIO সংরক্ষণাগার যা একটি ramfs বা tmpfs ফাইল সিস্টেমে এক্সট্রাক্ট করা) তৈরি করতে পারেন। কার্নেল হিসাবে "ফাইল সিস্টেমের প্রয়োজন" হিসাবে গণনা করা বা না করা আপনার উপর নির্ভর করে, কারণ এর অর্থ আপনি কার্নেল এবং কার্নেল ছাড়া আর কিছুই বুট করতে পারবেন না এবং একটি কার্যকরী (যদি কিছুটা সীমাবদ্ধ থাকে) থাকতে পারেন। আরও মনে রাখবেন, এমনকি কার্নেলটি প্যাচ করার পরেও আর আর ডিআইআইয়ের প্রয়োজন নেই, এটি অভ্যন্তরীণ ভার্চুয়াল ফাইল সিস্টেমগুলি তৈরি করবে যা কখনই উন্মুক্ত হয় না।
বন

@ ফরেস্ট সিস্টেমটি "সীমাবদ্ধ" হতে হবে না - আপনি সিস্টেমেড এবং জিনোমকে আপনার ইআরআরডি-তে প্যাক করতে পারেন (একসাথে যা কার্যকরভাবে কার্যকর ;-))। Initramfs -র এক সীমাবদ্ধতা ছিল (এখনও?) এটি বর্ধিত বৈশিষ্ট্যাবলী সমর্থনকারী হয় নি - আমি করেনি initrd- র cpio সংরক্ষণাগার যা পরে থেকে একটি লুপ ডিভাইস হিসাবে মাউন্ট করা আছে সেখানে একটি ext4 এই ইমেজ অন্তর্ভুক্ত করে Android এর উপর এটি প্রায় কাজ init.$DEV.rcস্ক্রিপ্ট।
চাচা বিলি

1
@ ইসমাইল মিগুয়েল, না, এই জাতীয় উদ্যোগ একটি সিপিও সংরক্ষণাগার। স্কোয়াশএফএস এমবেডেড ফাইল-সিস্টেমের জন্য একটি ভাল পছন্দ, এবং এক একটি রূপে initrd (বনাম একটি initramfs -র) বানাতে পারে এটি ব্যবহার (পদ প্রায়ই interchangably ব্যবহার করা হয় কিন্তু তারা না হন বেশ একই জিনিস), কিন্তু এটা লিনাক্স unpacks মধ্যে বিন্যাস নয় তার initramfs -র। (প্রকৃতপক্ষে, স্কোয়াশফের চিত্রটি একেবারে ব্যবহার করার আগে প্যাক করা উচিত নয়; এটি যথাযথভাবে সূচকযুক্ত)।
চার্লস ডাফি

16

উত্তরটি কোনও ফাইল সিস্টেম ব্যতীত আপনি আক্ষরিক অর্থে কিনা বা প্রশ্নটি আসলে কীভাবে বর্ণিত হয়েছে তার থেকে কিছুটা আলাদা করে ব্যাখ্যা করার উদ্দেশ্যে করা হচ্ছে তার উপর নির্ভর করবে। প্রশ্নটি কীভাবে ব্যাখ্যা করা হয় তাতে সামান্যতম পরিবর্তনের জন্য উত্তরগুলি:

  • কোনও ব্লক ডিভাইস ছাড়াই লিনাক্স চালানো সম্পূর্ণরূপে সম্ভাব্য এবং কিছু বিশেষ ব্যবহারের ক্ষেত্রে কার্যকর।
  • কোনও ফাইল সিস্টেম ছাড়াই লিনাক্স চালানোর জন্য কার্নেল কোডের কিছু অংশ পুনর্লিখনের প্রয়োজন হয় এবং এটি কার্যকর প্রচেষ্টা হওয়ার সম্ভাবনা কম।
  • কোনও ফাইল বর্ণনাকারী ব্যবহার না করে লিনাক্স চালাতে প্রচুর প্রচেষ্টা প্রয়োজন। আমি দৃ sure় নিশ্চিত যে এটি প্রচেষ্টা সার্থক হবে না।

কোনও ফাইল সিস্টেম ছাড়াই একটি ওয়ার্কিং সিস্টেম তৈরির জন্য আপনাকে কার্নেল কোডের কিছু অংশ পুনরায় লেখার কারণগুলি হ'ল:

  • প্রতিটি থ্রেডের একটি রুট ডিরেক্টরি এবং একটি বর্তমান ওয়ার্কিং ডিরেক্টরি রয়েছে যা অবশ্যই কিছু ফাইল সিস্টেমের দিকে নির্দেশ করবে।
  • প্রোগ্রামগুলি execveকল কল দ্বারা শুরু হয় যার একটি ফাইল সিস্টেম থেকে এক্সিকিউটেবলের প্রয়োজন।
  • কার্নেল বুট প্রক্রিয়া চলাকালীন একটি মেমরি ভিত্তিক ফাইল সিস্টেম তৈরি করে।

কোনও প্রোগ্রাম ব্যবহার শুরু হওয়ার পরে execveএটি যে কার্যকর হতে শুরু হয়েছিল তা আনম্যাপ করা সম্ভব, যদিও তা করার সাথে সাথে তা তাত্ক্ষণিকভাবে ক্র্যাশ না করে প্রথমে একটি এক্সিকিউটেবল মেমরি ম্যাপিং তৈরি করতে হবে যা কোনও ফাইল দ্বারা ব্যাক হয় না, এবং এটিতে লাফানো এবং এক্সিকিউটেবলকে আনম্যাপিংয়ের আগে কিছু দরকারী কোড দিয়ে এটি শুরু করতে হবে।

সুতরাং একটি চলমান ব্যবহারকারী মোড প্রোগ্রাম এমন অবস্থায় উপস্থিত থাকতে পারে যেখানে ফাইলগুলির দ্বারা ব্যাক করা কোনও মেমরি ম্যাপিং নেই এবং এটি ফাইল দ্বারা ব্যাকযুক্ত সমস্ত ফাইল বিবরণকারী বন্ধ করতে পারে। এটি রুট ডিরেক্টরি এবং বর্তমান কার্যনির্বাহী ডিরেক্টরি থাকা বন্ধ করতে পারে না, তবে এটি সেগুলি থেকে বিরত থাকতে পারে।

যদিও এই অবস্থায় আপনি ফাইল সিস্টেমটিকে প্রোগ্রামের আওতা থেকে দূরে ফেলার জন্য কার্নেল কোডটি প্রয়োগ করতে পারেন এবং এটি চালিয়ে যেতে চান, এটি কার্যকর বলে মনে হয় না। এবং কোনও ফাইল সিস্টেম ব্যবহারের মধ্যবর্তী অবস্থার মধ্যে দিয়ে না গিয়ে সেই চূড়ান্ত অবস্থায় প্রবেশ করা কোনও কার্যকর সুবিধার জন্য আরও বেশি কাজ হতে চলেছে।

কিছু বিশেষ ব্যবহারের ক্ষেত্রে দরকারী সেটআপ

ব্লক ডিভাইসগুলির ব্যবহার এড়ানো কার্যকর হতে পারে। বুটের সময় কার্নেল একটি মেমরি ফাইল সিস্টেম তৈরি করে এবং cpioকার্যকর করার পূর্বে একটি ফাইল সংরক্ষণাগার থেকে এই ফাইল সিস্টেমটি তৈরি করতে পারে init। এই ভাবে আপনি কোনও সিস্টেমকে সম্পূর্ণরূপে মেমরি ভিত্তিক ফাইল সিস্টেম থেকে কোনও ব্লক ডিভাইস ব্যাক করার জন্য চালাতে পারবেন।

এটি এমন সিস্টেমে কার্যকর হতে পারে যেখানে আপনি কোনও রাজ্য সংরক্ষণ করতে চান না এবং সিস্টেমটি পুনরায় বুট করার পরে একটি পরিষ্কার স্লেট থেকে শুরু করতে চান।

অবশ্যই কার্নেলটি নিয়ন্ত্রণ দেওয়ার আগে কার্নেল এবং সিপিও সংরক্ষণাগারটিকে কোনওভাবে মেমরিতে উপস্থিত থাকতে হবে। তারা কীভাবে সেখানে পেল বুট লোডারটির জন্য একটি কাজ is চূড়ান্ত চলমান সিস্টেম ব্লক ডিভাইসগুলি ব্যবহার না করলেও বুট লোডার একটি ব্লক ডিভাইস থেকে লোড করতে পারত। তবে বুট লোডার দ্বারা কোনও ব্লক ডিভাইস ব্যবহার না করে নেটওয়ার্ক থেকে বুট করে কার্নেল এবং সিপিও সংরক্ষণাগার অর্জন করাও সম্ভব।


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

2
@PeterL। হ্যাঁ, আপনি যদি নতুন কিছু লিখেন না তবে লিনাক্সের জন্য একটি ফাইল সিস্টেমের প্রয়োজন হবে। লোকেরা যখন কোনও ফাইল সিস্টেম ছাড়াই লিনাক্সের ব্যবহারিক ব্যবহারের বিষয়ে কথা বলত তারা সাধারণত ব্লক ডিভাইস দ্বারা সমর্থিতদের উল্লেখ করে এবং আপনি কোনও ব্লক ডিভাইস দ্বারা ব্যাকৃত কোনও ফাইল সিস্টেম ছাড়াই লিনাক্স চালাতে পারেন। আপনার কাছে এখনও কিছু প্রকারের ফাইল সিস্টেম রয়েছে।
ক্যাস্পারড

3

লিনাক্সে প্রায় প্রতিটি ডিভাইসই একটি ফাইল , তাই এটি চালানোর জন্য আপনার কাছে একটি ফাইল সিস্টেম থাকতে হবে।


8
তবে অবশ্যই কোনও ডিভাইস ফাইল তাদের নির্দেশ করে কিনা তা নির্বিশেষে কার্নেলের অভ্যন্তরে ডিভাইস ড্রাইভার উপস্থিত রয়েছে।
ফিলিপ কুলিং

6
প্রতিটি ডিভাইস একটি ফাইল নয়। নেটওয়ার্ক ইন্টারফেস ( eth0, wlan0ইত্যাদি) উদাহরণস্বরূপ, হয় না।
রুস্লান

1
এটি একটি সাধারণ ভুল ধারণা হয়। তত্ত্ব অনুসারে, ইউএনআইএক্স এবং ইউএনআইএক্স-এর মতো সিস্টেমে সমস্ত কিছুই একটি ফাইল, এটি প্ল্যান 9 এর মতো উচ্চতর বিশেষায়িত সিস্টেমে কেবল সম্পূর্ণ সত্য (যদিও এটি উইন্ডোজের চেয়ে অনেক বেশি সত্য)। লিনাক্সের জন্য বেশ কয়েকটি জিনিস ফাইল নয়। এই আরো এবং আরো সত্য পেয়ে হিসাবে অনেক ড্রাইভার ব্যবহার Netlink বদলে চরিত্র ডিভাইসের ioctls (যা শুরু করেছেন হয় হয় ফাইল)।
বন

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

1
খুব সুন্দর যুক্তি: হয় ডেভস রয়েছে, যা সংজ্ঞা অনুসারে একটি ফাইল সিস্টেম, বা কোনও ডিফস নেই, সেক্ষেত্রে ডিভাইস নোডগুলি হোস্ট করার জন্য আপনার একটি ফাইল সিস্টেমের প্রয়োজন ...
22:47

-1

কার্নেল হ'ল একটি প্রোগ্রাম, যেমন অন্য কোনও। ডিফল্টরূপে লিনাক্স কার্নেল ফাইল সিস্টেম অ্যাক্সেস করার চেষ্টা করে, তবে এই আচরণটি তুচ্ছভাবে কর্নেল পরিবর্তন দ্বারা নির্মূল করা যেতে পারে (আসলে "একটি আর্চ_ক্যাল_রেস্ট_ইনিট ()" ফাংশনের একটি সংযোজন)। "দরকারী কাজ" সম্পাদন করার জন্য আমরা প্রত্যাশা করি যে বিকাশকারী কিছু পছন্দসই প্রারম্ভিককরণ এবং অ্যাপ্লিকেশন ধরণের ওয়ার্কলোড করতে কর্নেল থ্রেড (কাথ্রেডস), কাস্টম ড্রাইভারের মধ্যে পেরহাপস অন্তর্ভুক্ত করতে পারে। লিনাক্স কার্নেলটিতে ইতিমধ্যে অনেকগুলি কাঁথ্রেড রয়েছে, তবে প্রাথমিকভাবে কার্নেল বা ড্রাইভারের সাথে কাজ সম্পাদন করা হয়। কার্নেলের প্রসঙ্গের মধ্যে উপলব্ধ API গুলি লিনাক্স ব্যবহারকারী-স্পেসে থাকা থেকে পৃথক different সিস্টেম কল কার্যকারিতার একটি বৃহত ভগ্নাংশ কোনও নন-ফাইল সিস্টেমের দৃশ্যে অকেজো হয়ে যাবে।

হ্যাঁ, লিনাক্স ডিফল্টরূপে ফাইল সিস্টেমে অ্যাক্সেসের আশা করে। না, কোনও ফাইল সিস্টেমের ডাব্লু / ওও কার্যকর কাজের জন্য একটি পরিবর্তিত কার্নেল তৈরি করা যেতে পারে। লিনাক্স ডাব্লু / ও ফাইল সিস্টেমের ব্যবহারিক ব্যবহার আইএমও বেশ সীমাবদ্ধ তবে তা শূন্য নয়। এফডাব্লুআইডাব্লু, অতীতে অনেক রিয়েল-টাইম কার্নেলগুলি আরটি অ্যাপ্লিকেশনগুলির মতো একই নাম-স্থান এবং বাইনারি হিসাবে নির্মিত হয়েছিল।

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