সমস্ত কর্নেল আর্গুমেন্ট সত্যই কার্নেল দ্বারা ব্যবহৃত হয়?


11

লিনাক্স কেন 'init = / বিন / বাশ' অনুমতি দেয়?

আমি এটি পড়েছি, উত্তরগুলি বলছে যে এটি এই এনআর প্রোগ্রামটি চালাচ্ছে কার্নেল।

তারপরে আমি ভাবতে শুরু করেছিলাম, লিনাক্স সাধারণত একটি ইনি্রামফ আসে, যা শেষ পর্যন্ত মাউন্ট এবং পিভট_রোটকে আসল রুট ফাইল সিস্টেমে নিয়ে যাবে। তাহলে এই initযুক্তির অর্থ কী? ইনিশ্রামে পথ? বা যেমন আমি অনুমান করেছি, এটি কার্নেল দ্বারা নয়, খ্রিস্টাল আরম্ভের জন্য আরম্ভকারী দ্বারা চালিত হয় by

এছাড়াও, root=UUID=xxxxযুক্তি, আসল রুট ফাইল সিস্টেমটি আবিষ্কার করার জন্য এটি কি সত্যিই কার্নেল দ্বারা বা কেবল ইন্রাম দ্বারা শুরু করা যায়?

দেখে মনে হচ্ছে যে আমি কার্নেল আর্গুমেন্ট হিসাবে আমার যে কোনও যুক্তিটি পাস করতে পারি, তাই সেগুলি কি কার্নেল দ্বারা পড়েছেন বা তাদের অন্তত কিছুটি কেবল ইউজারস্পেস প্রোগ্রামগুলির জন্য অর্থবোধক?

উত্তর:


18

কার্নেল কমান্ড লাইনে প্রদত্ত প্যারামিটারগুলি কার্নেলের জন্য অর্থবহ হতে হবে না: কার্নেল পরামিতি নথি বলছে

কার্নেল "-" পর্যন্ত কার্নেল কমান্ড লাইন থেকে প্যারামিটারগুলি পার্স করে; যদি এটি কোনও প্যারামিটারটি সনাক্ত না করে এবং এতে একটি '।' থাকে না, প্যারামিটারটি ডিআই-তে পৌঁছে যায়: '=' দিয়ে পরামিতি আরআইএম এর পরিবেশে চলে যায়, অন্যরা আরম্ভের সাথে কমান্ড লাইন আর্গুমেন্ট হিসাবে পাস হয়। “-” এর পরের সমস্ত কিছুই ইনিশ হিসাবে আর্গুমেন্ট হিসাবে পাস করা হয়।

এটি প্রযোজ্য নয় initএবং rootযা প্রকৃতপক্ষে কার্নেল পরামিতি, এবং কার্নেল দ্বারা পরিচালিত হয়। তারা উপস্থিত থেকে যেহেতু তারা ব্যবহারকারী-স্পেস দ্বারাও অভিনয় করতে পারে /proc/cmdline। (সুতরাং উদাহরণস্বরূপ systemd quietকার্নেল প্যারামিটারটিকে তার আউটপুট হ্রাস করতে অ্যাকাউন্টে নেয় takes

যখন কার্নেলটি একটি initramfs দিয়ে বুট করা হয় তখন rootপ্যারামিটারগুলি কার্নেল দ্বারা সরাসরি ব্যবহার করা হয় না এবং ব্যর্থ হলে initপ্যারামিটারটি কেবলমাত্র ব্যবহৃত rdinitহয়। initসূচনাটি হ্যান্ডেল করা হয় kernel_initযা নীচের মত কাজ করে:

  • যদি সেখানে একটি "র‌্যামডিস্ক এক্সিকিউট কমান্ড" থাকে (হয় rdinitকার্নেল কমান্ড লাইনে দেওয়া মান , বা /init) যা অ্যাক্সেসযোগ্য হয়, কার্নেল এটি চালানোর চেষ্টা করে;
  • যদি এটি ব্যর্থ হয় এবং সেখানে একটি "এক্সিকিউট কমান্ড" ( initকার্নেল কমান্ড লাইনে দেওয়া মান ) থাকে, কার্নেল এটি চালানোর চেষ্টা করে, এবং যদি তা না করতে পারে তবে আতঙ্কিত হয়;
  • শেষ উপায় হিসাবে, কার্নেল দৌড়ানোর চেষ্টা /sbin/init, /etc/init, /bin/init, এবং /bin/sh; এগুলির কোনওটি যদি চালানো না যায়, তা আতঙ্কিত

যখন কোনও ইনি্রামাফ থাকে, তখন এগুলি সমস্ত ঘটে এবং লক্ষ্য ভলিউম কার্নেল দ্বারা মাউন্ট হয় না। কার্নেল প্রথম প্রোগ্রাম চালানোর পরে যা ঘটেছিল init(সাধারণত, /initinitramfs এর স্ক্রিপ্ট) প্রোগ্রামটি কার্নেলের উপর নির্ভর করে না। ফাইল সিস্টেমে মাউন্ট করা থাকলে আর্গুমেন্টগুলি যা initএখনও পাস করা হয় তা এখনও পাওয়া যায় ।/proc/cmdline/proc


এছাড়াও কিছুটা কৌতূহল, যদি থ্রি-ইন-দ্য-ইন-ডিগ্রামগুলি সেট-ইউইড-নন-রুট ফাইল হয়? এক্সিকিউটেবল বিট ছাড়া একটি ফাইল? এটি কি যাইহোক রুট হিসাবে চালানো হবে? যদি এটি ld-linux.soইএলএফটি ভেঙে যায় বা ইএলএফ বা পুনরাবৃত্তি-খুব গভীর-স্ক্রিপ্ট না খুঁজে পায় বা কিছুই কার্যকর করা যায় না তবে কী হবে?
5 薯条 德里克

3
আমি নিশ্চিত যে কার্নেলটি initramfs থেকে "init =" এ উল্লিখিত প্রোগ্রামটি লোড করবে না pretty এটি কোনও initramfs ব্যবহারের পরে ব্যবহারকারীর দ্বারা সুনির্দিষ্ট init প্রোগ্রামটি চালানোর আগে এটি স্বাভাবিক হিসাবে চলবে বলে মনে হয় (এটি নিশ্চিত না যে এটি কার্নেলটি দেয় যা initramfs এ কোডটি দেয় বা না)।
প্লাগওয়াশ

@ 炸鱼 薯条 德里克 র‌্যামডিস্ক /initথেকে বুট করার পরিবর্তে বিকল্প প্রোগ্রাম নির্দিষ্ট করতে আপনি rdinit=/path/toবুট প্যারামিটার ব্যবহার করতে পারেন ।
পিজডলেক্ট করুন

3

কাস্ট স্টার্ট ইনস্টল চলাকালীন কাস্টম কার্নেল আর্গুমেন্ট পাস করার পদ্ধতি একটি সিস্টেমকে অনুকূলিতকরণের একটি উপায়, উদাহরণস্বরূপ একটি PXE সার্ভার সেট করতে পারে:

linuxefi /c7/vmlinuz ks=http://.../ks/c7 lab ksdevice=eth0 net.ifnames=0 biosdevname=0

labকিকস্টার্ট কনফিগারেশনে অন্য সিস্টেম বিল্ডের চেয়ে আলাদা কিছু করতে যেখানে ব্যবহৃত হয়:

%pre
...
case " $(cat /proc/cmdline)" in
   ...
   *\ lab*)
      filesystems_lab
      ;;
   *)
      filesystems_common
      ;;
...

অন্যান্য সিস্টেমের ধরণের চেয়ে আলাদা ফাইল সিস্টেম লেআউট সেটআপ করতে এখানে। আশা করা যায় যে কার্নেল দ্বারা ব্যবহৃত একক নেমস্পেসের পরিবর্তে স্থানীয় কাস্টমাইজেশনের জন্য বিভিন্ন লেবেল ব্যবহৃত হবে।

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