এটি সম্পূর্ণরূপে আপনার ডিভাইসে কী কী পরিষেবা থাকতে চান তার উপর নির্ভর করে।
প্রোগ্রাম
আপনি লিনাক্স বুটটি সরাসরি শেল হিসাবে তৈরি করতে পারেন । এটি উত্পাদনে খুব কার্যকর নয় - যারা কেবল সেখানে শেল বসতে চান - তবে আপনার ইন্টারেক্টিভ বুটলোডার থাকলে এটি হস্তক্ষেপের প্রক্রিয়া হিসাবে কার্যকর: init=/bin/shকার্নেল কমান্ড লাইনে পৌঁছান। সকল লিনাক্স ব্যবস্থা (এবং সমস্ত ইউনিক্স সিস্টেম সমুহের) একটি বোর্ন / POSIX ধাঁচের শেল আছে /bin/sh।
আপনার শেল ইউটিলিটিগুলির একটি সেট প্রয়োজন হবে । ব্যজিবক্স একটি খুব সাধারণ পছন্দ; এটা ফাইল এবং টেক্সট ম্যানিপুলেশন (জন্য একটি শেল এবং সাধারণ ইউটিলিটি রয়েছে cp, grepনেটওয়ার্কিং সেটআপ,, ...) ( ping, ifconfig, ...), প্রক্রিয়া ম্যানিপুলেশন ( ps, nice, ...), এবং বিভিন্ন অন্যান্য সিস্টেম টুলস ( fdisk, mount, syslogd, ...)। ব্যাসিবক্স অত্যন্ত কনফিগারযোগ্য: আপনার অ্যাপ্লিকেশনের জন্য সঠিক আকার / কার্যকারিতা আপোস করার জন্য আপনি সংকলনের সময় কোন সরঞ্জামগুলি চান তা এমনকি ব্যক্তিগত বৈশিষ্ট্যগুলিও নির্বাচন করতে পারেন। এছাড়া sh, ন্যূনতমরূপে যে আপনি সত্যিই ছাড়া কিছু করতে পারেন না mount, umountএবং halt, কিন্তু এটি আছে না এটিপিকাল হবে cat, cp, mv, rm,mkdir, rmdir, ps, syncএবং কয়েক আরও অনেক কিছু। ব্যস্তবক্স busyboxপ্রতিটি ইউটিলিটির প্রতীকী লিঙ্ক সহ একটি একক বাইনারি হিসাবে পরিচিত হিসাবে ইনস্টল করে ।
একটি সাধারণ ইউনিক্স সিস্টেমে প্রথম প্রক্রিয়া বলা হয় init। এর কাজ অন্যান্য পরিষেবা শুরু করা। ব্যাসিবক্সে একটি ইনিও সিস্টেম রয়েছে। initবাইনারি ছাড়াও (সাধারণত অবস্থিত /sbin) আপনাকে এর কনফিগারেশন ফাইলগুলি (সাধারণত বলা হয় /etc/inittab- কিছু আধুনিক আরম্ভ প্রতিস্থাপন সেই ফাইলটি বাদ দেয় তবে আপনি এটি একটি ছোট এমবেডড সিস্টেমে পাবেন না) যা কোন পরিষেবাগুলি শুরু করতে হবে তা নির্দেশ করে that এবং কখন. ব্যাসিবক্সের জন্য, /etc/inittabএটি alচ্ছিক ; যদি এটি অনুপস্থিত থাকে তবে আপনি কনসোলে একটি রুট শেল পাবেন এবং স্ক্রিপ্ট /etc/init.d/rcS(ডিফল্ট অবস্থান) বুট করার সময় কার্যকর করা হবে।
অবশ্যই এটি আপনার প্রয়োজন, অবশ্যই সেই প্রোগ্রামগুলি যা আপনার ডিভাইসটিকে কিছু উপকারী করে তোলে। উদাহরণস্বরূপ, আমার হোম রাউটারে একটি ওপেনআরটি বৈকল্পিক চলমান , কেবলমাত্র প্রোগ্রামগুলি হ'ল ব্যাসিবক্স, nvram( এনভিআরএমে সেটিংস পড়তে এবং পরিবর্তন করতে) এবং নেটওয়ার্কিং ইউটিলিটিগুলি।
আপনার সমস্ত এক্সিকিউটেবল স্থিতিশীলভাবে সংযুক্ত না হলে আপনার গতিশীল লোডার ( ld.soযা libc পছন্দ এবং প্রসেসরের আর্কিটেকচারের উপর নির্ভর করে বিভিন্ন নামে ডাকা যেতে পারে) এবং সমস্ত গতিশীল লাইব্রেরি ( /lib/lib*.soসম্ভবত এগুলির মধ্যে কিছু /usr/lib) প্রয়োজন হবে এই এক্সিকিউটেবল।
ডিরেক্টরি কাঠামো
ফাইলসিস্টেম শ্রেণীক্রম স্ট্যান্ডার্ড লিনাক্স সিস্টেমের সাধারণ ডিরেক্টরির গঠন বর্ণনা করা হয়েছে। এটি ডেস্কটপ এবং সার্ভার ইনস্টলেশনের দিকে প্রস্তুত: এটি একটি এম্বেডড সিস্টেমে অনেকগুলি বাদ দেওয়া যেতে পারে। এখানে একটি সাধারণ সর্বনিম্ন।
/bin: এক্সিকিউটেবল প্রোগ্রাম (কিছু /usr/binপরিবর্তে হতে পারে )।
/dev: ডিভাইস নোড (নীচে দেখুন)
/etc: কনফিগারেশন ফাইল
/lib: ডায়নামিক লোডার সহ ভাগ করা লাইব্রেরি (সমস্ত এক্সিকিউটেবল স্থিতিশীলভাবে সংযুক্ত না হলে)
/proc: প্রোক ফাইল সিস্টেমের জন্য মাউন্ট পয়েন্ট
/sbin: এক্সিকিউটেবল প্রোগ্রাম। পার্থক্যটি /binহ'ল /sbinপ্রোগ্রামগুলির জন্য যা কেবলমাত্র সিস্টেম প্রশাসকের জন্য দরকারী তবে এম্বেড থাকা ডিভাইসে এই পার্থক্যটি অর্থবহ নয়। আপনি /sbinএকটি প্রতীকী লিঙ্ক করতে পারেন /bin।
/mnt: রক্ষণাবেক্ষণের সময় স্ক্র্যাচ মাউন্ট পয়েন্ট হিসাবে কেবল পঠনযোগ্য রুট ফাইল সিস্টেমগুলিতে ব্যবহার করা সহজ
/sys: সিস্টেফ ফাইল সিস্টেমের জন্য মাউন্ট পয়েন্ট
/tmp: অস্থায়ী ফাইলগুলির জন্য অবস্থান (প্রায়শই একটি tmpfsমাউন্ট)
/usr: উপ-ডিরেক্টরি অন্তর্ভুক্ত bin, libএবং sbin। /usrমূল ফাইল সিস্টেমে নেই এমন অতিরিক্ত ফাইলের জন্য উপস্থিত রয়েছে। আপনার যদি তা না থাকে তবে আপনি /usrমূল ডিরেক্টরিতে একটি প্রতীকী লিঙ্ক তৈরি করতে পারেন ।
ডিভাইস ফাইল
এখানে নূন্যতমটিতে কিছু সাধারণ এন্ট্রি রয়েছে /dev:
console
full (এটিকে লেখার ক্ষেত্রে সর্বদা "ডিভাইসে কোনও স্থান অবশিষ্ট থাকে না" বলে প্রতিবেদন করা হয়)
log(একটি সকেট যা প্রোগ্রামগুলি লগ এন্ট্রিগুলি প্রেরণের জন্য ব্যবহার করে), যদি আপনার কোনও syslogdডেমন থাকে (যেমন বুসিবক্স এর) থেকে
null (এমন ফাইলের মতো কাজ করে যা সর্বদা খালি থাকে)
ptmxএবং ptsডিরেক্টরি , যদি আপনি সিউডো-টার্মিনাল ব্যবহার করতে চান (যেমন কনসোল ব্যতীত অন্য কোনও টার্মিনাল) - উদাহরণস্বরূপ যদি ডিভাইসটি নেটওয়ার্কযুক্ত হয় এবং আপনি টেলনেট বা এসএসএস করতে চান
random (এলোমেলো বাইটগুলি ফেরত দেয়, ব্লক করে ঝুঁকি থাকে)
tty (সর্বদা প্রোগ্রামের টার্মিনালকে মনোনীত করে)
urandom (এলোমেলো বাইট ফেরত দেয়, কখনই ব্লক করে না তবে তাজা-বুট করা ডিভাইসে অ-র্যান্ডম হতে পারে)
zero (নাল বাইটের একটি অসীম অনুক্রম রয়েছে)
এর বাইরে আপনার নিজের হার্ডওয়্যারের জন্য প্রবেশের প্রয়োজন হবে (নেটওয়ার্ক ইন্টারফেস বাদে এগুলি এন্ট্রি পায় না /dev): সিরিয়াল পোর্ট, স্টোরেজ ইত্যাদি
এম্বেড থাকা ডিভাইসের জন্য, আপনি সাধারণত রুট ফাইল সিস্টেমে সরাসরি ডিভাইস এন্ট্রিগুলি তৈরি করতে পারেন। হাই-এন্ড সিস্টেমে একটি স্ক্রিপ্ট রয়েছে যা এন্ট্রিগুলি MAKEDEVতৈরি করার জন্য ডাকা হয় /dev, তবে এম্বেড থাকা সিস্টেমে স্ক্রিপ্টটি প্রায়শই চিত্রটিতে বান্ডিল হয় না। যদি কিছু হার্ডওয়্যার হটপ্লাগ করা যায় (উদাহরণস্বরূপ যদি ডিভাইসটির ইউএসবি হোস্ট পোর্ট থাকে) তবে ইউদেব/dev দ্বারা পরিচালনা করা উচিত (আপনার এখনও মূল ফাইল সিস্টেমে একটি ন্যূনতম সেট থাকতে পারে)।
বুট-সময় ক্রিয়া
রুট ফাইল সিস্টেমের বাইরেও আপনাকে সাধারণ অপারেশনের জন্য আরও কয়েকটি মাউন্ট করতে হবে:
- procfs চালু
/proc(বেশ অপরিহার্য)
- sysfs চালু
/sys(বেশ অপরিহার্য)
tmpfsফাইল সিস্টেম চালু /tmp(প্রোগ্রামগুলি অস্থায়ী ফাইলগুলি তৈরি করতে দেয় যা র্যামে থাকবে, মূল ফাইল সিস্টেম যা ফ্ল্যাশ বা কেবল পঠনযোগ্য হতে পারে তার চেয়ে বেশি হবে)
/devগতিশীল হলে tmpfs, devfs বা devtmpfs (উপরের "ডিভাইস ফাইলগুলিতে" udev দেখুন)
/dev/ptsআপনি যদি [সিউডো-টার্মিনালগুলি ব্যবহার করতে চান তবে উপরের দিকে তাকান ( ptsউপরের মন্তব্যটি দেখুন )
আপনি একটি /etc/fstabফাইল তৈরি করতে এবং কল করতে mount -aবা mountম্যানুয়ালি চালাতে পারেন ।
আপনার লগ লেখার কোনও জায়গা থাকলে সিসলগ ডেমন শুরু করুন (তেমনি klogdকার্নেল লগগুলির জন্য, যদি syslogdপ্রোগ্রামটি এটি যত্ন না করে)।
এর পরে, ডিভাইসটি অ্যাপ্লিকেশন-নির্দিষ্ট পরিষেবাগুলি শুরু করতে প্রস্তুত।
কিভাবে একটি রুট ফাইল সিস্টেম তৈরি করতে হয়
এটি একটি দীর্ঘ এবং বিচিত্র কাহিনী, সুতরাং আমি এখানে যা কিছু করব তা হল কয়েকটি পয়েন্টার।
মূল ফাইল সিস্টেমটি র্যামে রাখা যেতে পারে (রম বা ফ্ল্যাশ-এ একটি (সাধারণত সংক্ষেপিত) চিত্র থেকে লোড করা), অথবা ডিস্ক-ভিত্তিক ফাইল-সিস্টেমে (রম বা ফ্ল্যাশ-এ সঞ্চিত) রাখা যেতে পারে, বা প্রযোজ্য ক্ষেত্রে নেটওয়ার্ক থেকে লোড করা (প্রায়শই টিএফটিপি-র উপরে ) থাকতে পারে applicable । মূল ফাইল সিস্টেমটি যদি র্যামে থাকে তবে এটিকে initramfs করুন - এমন একটি র্যাম ফাইল সিস্টেম যা বুট করার সময় তৈরি হয়।
এম্বেড থাকা সিস্টেমগুলির জন্য মূল চিত্র একত্রিত করার জন্য অনেকগুলি ফ্রেমওয়ার্ক বিদ্যমান। ব্যাসিবক্স এফএকিউতে কয়েকটি পয়েন্টার রয়েছে । বিল্ডরুট একটি জনপ্রিয় যা আপনাকে লিনাক্স কার্নেল এবং ব্যাসিবক্সের মতো একটি সেটআপ সহ পুরো মূল চিত্র তৈরি করতে দেয় build ওপেন এম্বেড এমন আরও একটি কাঠামো।
উইকিপিডিয়ায় জনপ্রিয় এম্বেডড লিনাক্স বিতরণের একটি (অসম্পূর্ণ) তালিকা রয়েছে । আপনার কাছাকাছি থাকা এম্বেড থাকা লিনাক্সের একটি উদাহরণ হ'ল নেটওয়ার্ক অ্যাপ্লিকেশনগুলির জন্য অপারেটিং সিস্টেমের ওপেনআরটি পরিবার (টিনকার্সের হোম রাউটারগুলিতে জনপ্রিয়)। যদি আপনি অভিজ্ঞতার মাধ্যমে শিখতে চান তবে আপনি স্ক্র্যাচ থেকে লিনাক্স চেষ্টা করতে পারেন , তবে এটি এম্বেডড ডিভাইসের পরিবর্তে শখের জন্য ডেস্কটপ সিস্টেমগুলির দিকে তত্পর।
লিনাক্স বনাম লিনাক্স কার্নেলের উপর একটি নোট
লিনাক্স কার্নেলে যে একমাত্র আচরণ সেঁকেছে তা হ'ল প্রথম প্রোগ্রাম যা বুট সময়ে চালু হয়েছিল। (আমি ঢোকা করা হবে না হলে initrd এবং initramfs -র সুক্ষ্ণ বিষয়গুলো এখানে।) এই প্রোগ্রাম, ঐতিহ্যগতভাবে নামক Init , প্রক্রিয়া আইডি 1 এবং নির্দিষ্ট বিশেষাধিকার (ইমিউনিটি হয়েছে বধ সংকেত ) ও দায়িত্ব (শস্যচ্ছেদন এতিমদের )। আপনি লিনাক্স কার্নেল দিয়ে একটি সিস্টেম চালাতে পারেন এবং প্রথম প্রক্রিয়া হিসাবে যা যা শুরু করতে পারেন তবে লিনাক্স কার্নেলের উপর ভিত্তি করে আপনার কাছে একটি অপারেটিং সিস্টেম এবং সাধারণভাবে "লিনাক্স" - লিনাক্স নামে পরিচিত নয় শব্দটির, একটি ইউনিক্স- মত অপারেটিং সিস্টেম যার কার্নেলটি লিনাক্স কার্নেল। উদাহরণস্বরূপ, অ্যান্ড্রয়েড একটি অপারেটিং সিস্টেম যা ইউনিক্সের মতো নয় তবে লিনাক্স কার্নেলের উপর ভিত্তি করে।