কম্পিউটার টিউটোরিয়াল

লিনাক্স ভার্চুয়াল ডিরেক্টরি স্ট্রাকচার বোঝা

লিনাক্স নতুনদের सामने বিশাল ইনফরমেশন মাউন্টিন। টার্মিনাল কী? সফটওয়ার আপডেট কীভাবে? কোন ডিস্ট্রো বেছে নেব? এগুলো কমন প্রশ্ন। কিন্তু অনেক এক্সপেরিয়েন্সড লিনাক্স ইউজারকেও 파고 দেয় একটা প্রশ্ন: লিনাক্স ভার্চুয়াল ডিরেক্টরি সিস্টেমের প্রতিটি ডিরেক্টরিতে কী আছে? / থেকে /boot পর্যন্ত সব কভার করা হলো এই গাইডে।

লিনাক্স ভার্চুয়াল ডিরেক্টরি সিস্টেম কী?

ভার্চুয়াল ডিরেক্টরি সিস্টেম হলো কম্পিউটার OS-এ ফাইল ও ডিরেক্টরি অর্গানাইজ করার পদ্ধতি। এটাকে 「ভার্চুয়াল」** বলা হয় কারণ কোনো একচুই ফিজিক্যাল কম্পোনেন্ট নেই—উইন্ডোজে C: ড্রাইভ, D: ড্রাইভ থাকে। লিনাক্সে সব ফিজিক্যাল ডিস্ক ভার্চুয়াল ডিরেক্টরি সিস্টেমে ফাইল হিসেবে ট्रीট হয়। এখান থেকে 「everything is a file」** ফরেজ আসে। আপনার OS যেটি ডিস্কে রান করছে সেটিও একটি ফাইল হিসেবে ট്രീট হয়।

ভার্চুয়াল ডিরেক্টরি সিস্টেম বোঝা

রুট ডিরেক্টরি: /

শুরু থেকে শুরু করা যাক। / (রুট) ডিরেক্টরি সিস্টেমের সব কিছু ধারণ করে। cd / চালালে আপনি সিস্টেমে যতটা যেন আউট জুম করেছেন। ls চালালে Documents, Downloads, Pictures নয়—bin, dev, home দেখবেন। ডিস্ট্রো অনুযায়ী কিছুটা ভিন্ন, কিন্তু কিছু কোর ডিরেক্টরি সবসময় থাকে। সব ডিরেক্টরির শুরুতে / থাকে কারণ এটাই সবকিছুর রুট—এতেই নাম রুট**।

বাইনারি ডিরেক্টরি: /bin

/bin ডিরেক্টরিতে সিস্টেমের সব বাইনারি প্রোগ্রাম থাকে। cd, ls যেন কমন কমান্ডগুলো পাবেন। which cd বা which ls দিয়ে খুঁজে পেতে পারেন। মডার্ন ডিস্ট্রোতে /bin প্রায়শই /usr/bin-এ লিংকড থাকে। /usr ডিরেক্টরি পরে কভার করা হয়েছে—সংক্ষেপে: /bin-এ সিস্টেম/অ্যাডমিন বাইনারি, /usr/bin-এ সিস্টেম ইউজার বাইনারি আলাদা রাখা হয়।

বুট ডিরেক্টরি: /boot

/boot ডিরেক্টরিতে সিস্টেম বুট করার সব বেসিক ইনফো থাকে। ইনস্টলড সব কার্নেল, সেগুলোর কনফিগ ফাইল, Grub ইনফো—সবকিছু। খুব গুরুত্বপূর্ণ ডিরেক্টরি, EFI সিস্টেম পার্টিশন হিসেবে আলাদা ট्रीট হয়। ম্যানুয়াল পার্টিশন বানাতে হলে কমপক্ষে / ও /boot আলাদা বানাতে হয়।

ডিভাইস ডিরেক্টরি: /dev

/dev ডিরেক্টরিতে সিস্টেমের সব ডিভাইস ফাইল থাকে—হার্ডওয়্যার কম্পোনেন্টস ও কিছু ভার্চুয়াল ডিভাইস (null, random)। দেখলে cpu, sda, tty, stderr, stdin, stdout দেখবেন—দিনব্যাপী ইন্টারঅ্যাক্ট করার গুরুত্বপূর্ণ ডিভাইস ফাইল।

Etc. ডিরেক্টরি: /etc

এটা র‍্যান্ডম স্টাফের জন্য। /etc (Etsy-মতো উচ্চারণ) সিস্টেমের অধিকাংশ কনফিগারেশন ফাইলের জায়গা। SSH, Pipewire, systemD, Firefox—সবের কনফিগ ফাইল এখানে। ভার্চুয়াল ডিরেক্টরি সিস্টেমের জাঙ্ক ড্রয়ার—সুপার ইম্পর্টেন্ট কিন্তু কী খুঁজে বের করা একটু কামনসোম।

হোম ডিরেক্টরি: /home

/home ডিরেক্টরিতে সব ইউজারর পার্সোনাল ফাইল থাকে। ইউজার তৈরি হলে সাধারণত /home ডিরেক্টরি ও সেখানে শুধু তাদের ফাইল এডিট করার পারমিশন দিয়ে দেয়া হয়। কিছু ইউজার অ্যাডমিন রাইটস পায় (sudo দিয়ে), কিন্তু সেটা রুট ইউজারের রাইটস অ্যাসাম করাই। whoami ও sudo whoami রান করলে বুঝতে পারবেন। এটি ডিরেক্টরিটি আপনার সবচেয়ে পরিচিত।

লাইব্রেরি ডিরেক্টরি: /lib, /lib32, /lib64

/lib ডিরেক্টরিগুলোতে স্পেসিফিক লাইব্রেরি থাকে যেগুলো /bin বা /sbin (পরে কভার) প্রোগ্রামগুলো ব্যবহার করে। ফার্মওয়্যার, কার্নেল পার্টস, কার্নেল মডিউল ইনস্টলের লাইব্রেরি এখানে। সিস্টার ডিরেক্টরি /lib32 ও /lib64 ৩২-বিট ও ৬৪-বিট OS-এর ভার্সন ধারণ করে—বেস /lib-এর সাথে প্রায় সেম।

মিডিয়া ডিরেক্টরি: /media এবং /mnt

এগুলো একসাথে গ্রুপ করলাম কারণ একই পর্পজ সার্ভ করে। /media-এ CD, DVD, রিমুভেবল মিডিয়ার কন্টেন্ট স্ট্রোর হয়। USB ড্রাইভ প্লাগ করলে অধিকাংশ সিস্টেমে /media-এ পপ আপ করে।

/mnt লং-টার্ম মাউন্টের জন্য। উদাহরণ: আরেকটি SSD অ্যাড করলে পরমানেন্ট মাউন্ট পয়েন্ট /mnt-এ বানাতে পারেন। বা হোম NAS মাউন্ট করলে /mnt-এ।

/opt

/opt ডিরেক্টরিতে ইউজারের জন্য অডিশনাল সফটওয়ার প্যাকেজ থাকে। চিন্তার চেয়ে ছোট—আমারটিতে শুধু Brave, Google Chrome, Sublime Text। সফটওয়ার রিপোজিটরি অ্যাড করলে সেটা /opt-এ পাবেন।

/proc

/proc ডিরেক্টরিতে হার্ডওয়্যার ইনফো ও অঙ্গো잉 প্রসেস ইনফো থাকে। সিস্টেম হার্ডওয়্যার ল্যান্ডস্কেপ বুঝতে পারে, সেটা /proc-এ স্ট্রোর হয়। উদাহরণ: cat /proc/cpuinfo দিলে CPU সম্পর্কে আপনার চিন্তা থেকে বেশি জানবেন।

/root

এটি শুধু রুট ইউজারের /home ডিরেক্টরি ভার্সন। রুট ইউজার হিসেবে বেশি কাজ করলে এখানে স্টাফ পাবেন।

/run

/run ডিরেক্টরি /proc-এর মতো—শুধু হার্ডওয়্যারের বদলে সফটওয়্যার ফোকাস। দুটোই volatile runtime data স্ট্রোর করে—রিবুটে ক্লিয়ার হয়, কিন্তু OS সিস্টেম ও ইউজেজ শিখতে সাথে সাথে হেল্পফুল ডেটা স্ট্রোর করে।

/sbin

/sbin ডিরেক্টরিতে শুধু রুট ইউজারের জন্য বাইনারি প্রোগ্রাম থাকে। উদাহরণ: সিস্টেম পাওয়ার অফ করার বাইনারি (poweroff) /sbin-এ থাকা উচিত।

/srv

ওয়েব-অ্যাক্সেসিবল সার্ভিসের (FTP, HTTP) সাইট-স্পেসিফিক ডেটা /srv-এ থাকে। আমি রান করছি না, তাই আমার /srv খালি।

/sys

/sys ডিরেক্টরিতে সিস্টেমের কী ডিভাইসের ইনফো থাকে। আমারটিতে /sys/dev, /sys/firmware, /sys/kernel দেখতে পাবেন। /dev ডিরেক্টরির সুপার ইম্পর্টেন্ট হার্ডওয়্যার ডিভাইসের চেরি-পিকিং।

/tmp

/tmp ডিরেক্টরিতে সিস্টেমের বিভিন্ন প্রোগ্রামের টেম্পোরারি ইনফো স্ট্রোর হয়। রিবুট ছাড়া কয়েক দিন থাকে—অন্য স্টোরেজ স্পেস ফ্রি রাখার জন্য টেম্পোরারি লক। অধিকাংশ ইউজারের /tmp-এ কিছু করতে হয় না।

/usr

/usr ডিরেক্টরি আজকাল বেশি টচ হয়। এখন /bin, /lib, /sbin /usr-এ তাদের ভার্সনে লিংকড। ll কমান্ড দিলে দেখবেন।

সফট লিংক হওয়ায় আনলিংক করা যায়, কিন্তু সিস্টেম /usr/bin বা /usr/sbin থেকে পড়ে—/bin বা /sbin থেকে নয়। হায়ারার্কি সিম্পলিফাই করার জন্য এবং প্রোগ্রাম খুঁজে পাওয়া সহজ করার জন্য। লিনাক্স থেকে ইউনিক্সে স্যুইচ বা ফিক্সড লোকেশন এড়াতে কোয়ালিটি-অফ-লাইফ ইমপ্রুভমেন্ট।

/var

/var ডিরেক্টরি /tmp-এর মত, কিন্তু ডেটা বেশি সময় রাখে। লগ ফাইল, KVM VM ডিস্ক ইমেজও এখানে থাকে।

দেখুন, লিনাক্স ভার্চুয়াল ডিরেক্টরি সিস্টেম ফাইলগুলো অর্গানাইজ করে সিস্টেম অ্যাডমিনিস্ট্রেশন ও ম্যানেজমেন্ট সিম্পল করে। আপনি যা চান করতে পারেন (এটাই লিনাক্সের সৌন্দর্য), কিন্তু ডিফল্ট রেখে ডেস্কটপ ইউজারদের জন্য ঠিকই আছে। ২০২১ সালে লিনাক্সের জন্য সেরা ফাইলসিস্টেম কী সেটাও জানুন।

  1. লিনাক্সে Spotify-কে সিস্টেম ট্রেতে মিনিমাইজ করার পদ্ধতি

  2. লিনাক্সে সিস্টেম রিসোর্স চেক করার ৪টি সেরা সিস্টেম মনিটর

  3. নতুন লিনাক্স ইউজারের জন্য ৬টি সবচেয়ে উপযোগী টার্মিনাল কমান্ড

  4. ভার্চুয়াল রিয়েলিটি বনাম অগমেন্টেড রিয়েলিটি: পার্থক্য বোঝার স্পষ্ট গাইড