নিজের ইআরআরডি তৈরি করার সময় কীভাবে / ডেভ ডিরেক্টরিটি পপুলেট করবেন?


9

আমি আরআরআরডি সম্পর্কে জিনিস শিখার চেষ্টা করছি। আমি স্ক্র্যাচ থেকে আমার নিজের আরআরডি তৈরি করতে এই টিউটোরিয়ালটি অনুসরণ করেছি এবং আমি এতে ব্যস্তবক্স ইনস্টল করেছি। তারপরে আমি এর থেকে আইসোলিনাক্স দিয়ে একটি .iso তৈরি করেছি, যাতে আমি এটি ভার্চুয়ালবক্সে পরীক্ষা করতে পারি। এটি দুর্দান্ত কাজ করে!

আমার ব্যস্তবক্স থেকে প্রাথমিক কমান্ড রয়েছে, তাই আমি একটি ফাইল সিস্টেম মাউন্ট করতে চেয়েছিলাম। টিউটোরিয়ালটি অনুসরণ করার সময় আমি তৈরি করা কিছু ফাইল বাদে / dev ডিরেক্টরিটি প্রায় ফাঁকা (কোনও এসডিএ নয়)। আমি উদেব সম্পর্কে শিখেছি এবং আমি মনে করি এটি আমার প্রয়োজন। তবে আমি কীভাবে এটি করব তা নিশ্চিত নই।

আমি কি কেবল উদেব থেকে সর্বশেষতম উত্স কোডটি গ্রহন করব, এটি সংকলন করব এবং এটি আমার আরআরআরডিতে যুক্ত করব? এবং তারপরে / বিন / উদেবকে কল করুন বা আমার থ্রি স্ক্রিপ্টে এরকম কিছু? অথবা / দেব ডিরেক্টরিটি জনপ্রিয় করার জন্য অন্য কোনও / আরও ভাল উপায় আছে?

সম্পাদনা করুন: আমি ইতিমধ্যে যা করেছি তার অতিরিক্ত কিছু তথ্য এবং আপডেট।

  • আমি ভার্চুয়াল বাক্সে সবকিছু পরীক্ষা করি। আমি সবেমাত্র ভার্চুয়াল বাক্সে উবুন্টু ন্যূনতম ইনস্টল করেছি, আমার আরআরআর্ড থেকে একটি .iso তৈরি করেছি, এবং তারপরে আইসো থেকে ভার্চুয়ালবক্সে বুট করব।
  • আমি ভিএমলিনুজ ব্যবহার করেছি এবং /lib/modulesএটি একটি ডেবিয়ান-বিজনেসকার্ড.আইসোতে উপস্থিত ছিল এবং সেগুলি আমার আরআরডি-তে অনুলিপি করেছিলাম যা আমি পূর্বে সংযুক্ত টিউটোরিয়ালটি অনুসরণ করে তৈরি করেছি।
  • কার্নেল আছে CONFIG_DEVTMPFS=y
  • কিছু ডিভাইস /devtty0-tty63 এবং কিছু অন্যান্যর মতো দেখায় তবে এসডিএ / এইচডিএ হয় না।
  • দৌড়ে lspci -kআমার বর্তমানে চলমান অপারেটিং সিস্টেম এবং একটি ভার্চুয়াল বক্স চেক করতে যা মডিউল ব্যবহার করা হচ্ছে। SATA Controllerএটি ahciমডিউল হিসাবে ব্যবহার করে ।
  • আমি যখন চালানো modprobe -v ahci, কিন্তু যে পরে এটি ভালো কিছু ফেরৎ: এটা সম্পর্কে "ata_some_stuff অজানা প্রতীক" অনেক অভিযোগ SCSI Subsystem initialized, ATA-6: VBOX HARDDISKএবং Direct-Access ATA VBOX HARDDISK। তবে, এখনও কোনও হার্ডড্রাইভ ডিভাইস পাওয়া যায় নি /dev

আমার বর্তমান /init/স্ক্রিপ্টটি নিম্নরূপ:

#!/bin/ash
mount -t devtmpfs none /dev
mount -t proc /proc /proc
mount -t sysfs none /sys
modprobe -v ahci
echo "Hello world"
exec /bin/ash --login

আমি কী ভুল করছি এবং এর পরিবর্তে আমার কী করা উচিত সে সম্পর্কে কি কারও ধারণা আছে?

উত্তর:


12

গিলসের উত্তর সঠিক হলেও এটি পুরানো স্কুল :-)। নোটের আর একটি আইটেম (যে কোনও কিছুর চেয়ে পরিভাষায় আরও একটি নিটপিক) হ'ল যে নির্দেশিকাটির সাথে আপনি লিঙ্ক করেছেন সেটি হ'ল কীভাবে একটি ইআরআরএমডি নয়, কীভাবে একটি ইআরআরএমডি তৈরি করতে হয় সে সম্পর্কে নির্দেশাবলী। দুটি একই এবং একই উদ্দেশ্যে পরিবেশন করা হয় তবে চিত্রটি কীভাবে সঞ্চয় এবং লোড হয় তার চেয়ে আলাদা।

যাইহোক, আপনার প্রশ্নের উত্তর আসলেই সত্যই সহজ।

  1. devtmpfsকার্নেলটিতে সক্ষম করুন ( CONFIG_DEVTMPFS=y)
  2. mount -t devtmpfs none /devআপনার initস্ক্রিপ্টে প্রথম জিনিস হিসাবে চালান ।

এটাই. ডেডটিএমএফগুলি /devঠিক উদেবের মতোই জনবহুল হবে । এমনকি আপনি-জনপূর্ণ প্রাক প্রয়োজন হবে না /devমত মূলসূত্র সঙ্গে (initramfs -র ছবিতে) null, zeroঅথবা console


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

@ কার্লিটো এই কার্নেলটিতে কি ডিটটিএমপি সক্ষম করা আছে (কনফিগার ফাইলটি পরীক্ষা করুন)? দেবিয়ান সম্প্রতি ডেডটিএমপিএসে স্যুইচ করেছে।
গিলস 'অশুভ হওয়া বন্ধ করুন'

@ গিলস কোনও কনফিগার ফাইল সরবরাহ করা হয়নি, তবে আমি ডেবিয়ান থেকে প্রাপ্ত কার্নেলটি লোড করেছি, কনফিগারেশন ফাইলটি বলেছে CONFIG_DEVTMPFS=y, তবে আমি এখনও কোনও এসডিএ ডিভাইস পাই না। আমি মনে করি এটি কারণ আমি কোনও মডিউল লোড করি নি (lsmod কিছুই দেয় না)। ফাইলসিস্টেম ডিভাইসগুলি পাওয়ার জন্য আমার কোন মডিউলগুলি লোড করা উচিত? নাকি অন্য কিছু ভুলে গেছি?
কার্লিটো

@ কার্লিটো হ্যাঁ, যদি আপনি অন্যান্য জিনিসগুলি /devকেবল ড্রাইভগুলিতে দেখায় না তবে ডিভটিএমপিফগুলি কাজ করছে এবং আপনি সম্ভবত ডিস্ক নিয়ন্ত্রণকারী মডিউলটি অনুপস্থিত (যেমন আপনি অনুমান করেছিলেন)। দুর্ভাগ্যক্রমে কোন ড্রাইভার / মডিউলটি আপনার প্রয়োজন তা জানার একমাত্র উপায় হ'ল হয় কার্নেল কনফিগারেশনের প্রত্যেকটির জন্য তথ্য পড়া, বা lspci -kএকটি চলমান লিনাক্স সিস্টেমে চালানো (যা আপনাকে দেখায় যে আপনার সিস্টেমের বিভিন্ন উপাদানগুলি কী কার্নেল ড্রাইভার ব্যবহার করছে) ।
প্যাট্রিক

1
@ CiroSantilli709 init 抓捕 六四 事件 init এর CONFIG_DEVTMPFS_MOUNT=yinitramfs তে কোনও প্রভাব নেই। কার্নেল সহায়তা পাঠ্য থেকে: "এই বিকল্পটি initramfs ভিত্তিক বুটিংকে প্রভাবিত করে না, এখানে devtmpfs ফাইল সিস্টেমটি সর্বদা রুটফেসগুলি মাউন্ট করার পরে ম্যানুয়ালি মাউন্ট করা দরকার"
প্যাট্রিক

4

/devকার্নেলের মধ্যে লোড হওয়া ড্রাইভার এবং এই ড্রাইভারগুলি সনাক্ত করে এমন ডিভাইসের উপর ভিত্তি করে উদেব স্বয়ংক্রিয়ভাবে পপুলেশন করে । ডিভাইসগুলির নাম এবং তাদের অনুমতিগুলি নিয়মের একটি সেটের ভিত্তিতে যা প্রশাসকরা সূক্ষ্ম সুর করতে পারেন। বেশিরভাগ লিনাক্স সিস্টেমে udev ব্যবহার করা উচিত; ব্যতিক্রমগুলি হ'ল সিস্টেমগুলি (সাধারণত এম্বেড করা হয়) যেখানে সিস্টেমটি সেট আপ হওয়ার সময় হার্ডওয়্যার কনফিগারেশনটি জানা যায় এবং পরে পরিবর্তিত হয় না।

আপনি সাধারণত udevআপনার প্রারম্ভিক ক্রমের শুরুতে মোটামুটি কল করবেন । এর আগে আপনাকে কয়েকটি জিনিস (অবশ্যই?) করা উচিত তা হ'ল মাউন্ট /procএবং /sys। ডিমনটি শুরু করার পরে, udevadm trigger --action=add; udevadm settleকার্নেল ( trigger) থেকে সমস্ত পেন্ডিং ইভেন্টগুলিতে udev প্রক্রিয়া করার জন্য কল করুন এবং ঘটনাগুলি চালিয়ে যাওয়ার আগে প্রক্রিয়া না হওয়া পর্যন্ত অপেক্ষা করুন ( settle)। এরপরে আপনি রুট ফাইল সিস্টেম যুক্ত ডিভাইসটি সনাক্ত করতে এগিয়ে যেতে পারেন।

udevdবাইনারি ছাড়াও udevআপনার আরআরডি- র অন্যান্য অংশের প্রয়োজন হবে । এই কনফিগারেশন ফাইলগুলি অন্তর্ভুক্ত /etc/udev, এ বেস কনফিগারেশন /lib/udevসেইসাথে সাহায্যকারী বাইনেরিতে যেমন scsi_idএছাড়া /lib/udev। আপনার সমস্ত প্রোগ্রামের দরকার যা ইউডিডি বিধি থেকে ডাকা হয় যা আপনি আরআরআরডি অন্তর্ভুক্ত করেছেন।

প্রকৃত মূল বিভাজনে কন্ট্রোল স্থানান্তরিত করার আগে, আরআরডি শেষে, আপনাকে udevdআরআরডি থেকে অন্যান্য প্রোগ্রামের মতো থামানো দরকার । এটি থেকে কোনও ডিভাইস সরিয়ে নেই /devmount --move /dev /root/devমাউন্ট /devকরা আসল রুটে সরাতে ব্যবহার করুন ।

জেন্টুর একটি ইনি্রামফ গাইড এবং একটি ইনিরামফস উইকি পৃষ্ঠা রয়েছে যা অন্যান্য জিনিসের মধ্যে উদেবকে উল্লেখ করে। ইনিরামফস হ'ল আরডিআরের আধুনিক উত্তরসূরি, ফাইল সিস্টেম ইমেজের পরিবর্তে সিপিও আর্কাইভ ব্যবহার করে এবং আলাদা প্রসেস ইন্টারফেসের সাথে (একটি আরআরআডিতে, /linuxrcঅবশ্যই প্রস্থান করতে হবে, যেখানে একটি থ্রাইমফেসে /initঅবশ্যই execআসল রুট থেকে আরম্ভ করতে হবে ); বেশিরভাগ সিস্টেম আজকাল স্যুইচ করেছে (ফাইলটিকে এখনও আরআরডি বলা যেতে পারে)।


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

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

তবে আমি কীভাবে একটি পেতে পারি? আমি সবেমাত্র ডিবিয়ান-বিজনেসকার্ড.আইসোতে পাওয়া ভিএমলিনুজটি অনুলিপি করেছি (সম্ভবত সেরা ধারণা নয়)। উবুন্টু বা ডেবিয়ান থেকে প্রাপ্ত স্ট্যান্ডার্ড কার্নেলটি এবং পুরো / লিবিব / মডিউল ডিরেক্টরিগুলি কি কেবল আমার অনুলিপি করা উচিত?
কার্লিটো

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