সহজ chroot

6 min

language: ja bn en es hi pt ru zh-cn zh-tw

নমস্কার, আমি অযোগ্য।
এই কারণে, আমি শুধু ভাবছিলাম যে ক্লাসিক্যাল ভার্চুয়ালাইজেশনের ইতিহাসে পুরানো chroot দিয়ে কিছু করা যায় কিনা। এবার আমি 64G USB-তে Arch ইনস্টল করব।

ড্রাইভ প্রস্তুত করা

$ lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
sda      8:0    0 238.5G  0 disk 
└─sda1   8:1    0 238.5G  0 part /var/lib/docker
                                 /
sdb      8:16   1  57.8G  0 disk 
└─sdb1   8:17   1  57.8G  0 part 
$ sudo fdisk /dev/sdb
$ sudo mkfs.ext4 /dev/sdb1
$ sudo mkdir /mnt/arch
$ sudo mount /dev/sdb1 /mnt/arch

কার্নেল এবং অন্যান্য প্রস্তুত করা

$ pacstrap /mnt/arch base linux linux-firmware man-db vim
bash: pacstrap: কমান্ড খুঁজে পাওয়া যায়নি

ওহ!

$ sudo pacman -S arch-install-scripts
$ sudo pacstrap /mnt/arch base linux linux-firmware man-db vim

arch-chroot করা

$ sudo arch-chroot arch
[alleycat /]# ls
bin  boot  dev  etc  home  lib  lib64  lost+found  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[alleycat /]# date
Fri Nov 29 14:36:48 UTC 2024
[alleycat /]# ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
[alleycat /]# date
Fri Nov 29 23:37:02 JST 2024
[alleycat /]# hwclock --systohc
[alleycat /]# date
Fri Nov 29 23:37:08 JST 2024

মনে হচ্ছে Devuan-এও আছে।

arch-install-scripts/stable এর সমতুল্য ইনস্টলেশন স্ক্রিপ্ট কি?

$ sudo apt search debian-installer 
সর্টিং হচ্ছে... সম্পন্ন
সম্পূর্ণ টেক্সট অনুসন্ধান... সম্পন্ন  
bf-utf-source/stable 0.08+nmu2 all
  Debian ইনস্টলার তৈরি করার জন্য প্রয়োজনীয় ফন্টের উৎস

cpio-win32/stable 2.13+dfsg-7.1 all
  GNU cpio -- ফাইলগুলির আর্কাইভ পরিচালনার জন্য একটি প্রোগ্রাম (win32 বিল্ড)

debian-installer/stable 20230607+deb12u8devuan1 amd64
  Devuan's debian installer

মনে হচ্ছে এটি সঠিকভাবে Devuan's debian installer
একই ধরনের প্রক্রিয়া ব্যবহার করে debootstrap দিয়ে একটি ন্যূনতম পরিবেশ তৈরি করা সম্ভব।
mmdebstrap দিয়ে একটি ন্যূনতম রুট ফাইল সিস্টেম তৈরি করা

এইবার chroot জেল ব্যবহার করার কারণটি কিছুটা খেলার জন্য, তবে যদি আপনি এই chroot পরিবেশটি সম্পূর্ণভাবে তৈরি করেন এবং SSH অনুমতি দেন, তাহলে সম্পদগুলি সহজেই ভাগ করা যেতে পারে এবং বিশ্ববিদ্যালয়ের বন্ধুদের জন্য একটি সমৃদ্ধ GNU/Linux এক্সিকিউশন পরিবেশ বিনামূল্যে ব্যবহার করা সম্ভব হতে পারে। তবে, SSH করা পরিবেশটি chroot এর বাইরে যেতে পারে না, তাই হোস্ট মেশিনের রুট ডিরেক্টরিতে পৌঁছানো সম্ভব নয়। আমি ভাবছিলাম যে kvm দিয়ে তৈরি করাও ভালো, কিন্তু এটি বেশ জটিল হতে পারে এবং স্কেল আউট করার প্রয়োজন না হলে এতদূর যাওয়ার দরকার আছে কি? এছাড়াও, যদি আমার একটি বিশেষ ইচ্ছা থাকে, যেমন হোস্ট OS ডিস্কে চালু করতে না চাওয়া পরিষেবাগুলি একটি আলাদা ডিস্কে তৈরি করতে চাই, তাহলে এই chroot পরিবেশটি বেশ কার্যকর হতে পারে।

মূলত, chroot জেলটি OpenBSD এর মতো নিরাপত্তা-সচেতনদের দ্বারাও সমর্থিত, তাই যদি এটি সেই পরিবেশে সঠিকভাবে চালানো হয় তবে এটি একটি শক্তিশালী বন্ধু, তবে এটি আয়ত্ত করা বেশ কঠিন বলে মনে হয়।
এটি আমার মনে দীর্ঘকাল ধরে ছিল, এবং আমি এটি ব্যবহারের জন্য কিছু উপায় খুঁজছিলাম যখন আমি আমার দৈনন্দিন জীবন চালিয়ে যাচ্ছিলাম, এবং মনে হচ্ছে আমি এটি খুঁজে পাব, যেমন BUMP OF CHICKEN এর 'তেনতাই কানসোকু' (নক্ষত্র পর্যবেক্ষণ) গানের একটি বাক্যাংশ।

উল্লেখ্য, এবার ইনস্টল করার পর ডিস্কের বাকি অংশটি এমন দেখায়।

$ df -h
~~~
/dev/sdb1         57G  2.0G   52G    4% /mnt/arch

কেন chroot নিরাপদ?

উদাহরণস্বরূপ, যদি হোস্ট মেশিনে এই ধরনের একটি PID এবং শেল থাকে:

$ sleep 10000 & echo $$
[1] 21235
3936

chroot পরিবেশ থেকে এটিকে শেষ করার চেষ্টা করলে (grep -v না করার জন্য দুঃখিত):

[alleycat /]# ps -ef | grep sleep
1000     21235  3936  0 00:30 ?        00:00:00 sleep 10000
root     21244 17618  0 00:31 ?        00:00:00 grep --colour=auto sleep
[alleycat /]# kill -9 21235
bash: kill: (21235) - No such process
[alleycat /]# kill -9 3936 
bash: kill: (3936) - No such process

PID দেখা গেলেও kill করা যায় না। উল্লেখ্য, বিপরীতটি সম্ভব।

সুতরাং, chroot এর মধ্যে চলমান একটি প্রক্রিয়া কোনোভাবে আক্রান্ত হলেও এটি হোস্ট মেশিনে পৌঁছাতে পারে না, তাই এটি নিরাপদ। এটি আমার সাধারণ ধারণা।

Plan9 প্রোটোকলের সাথেও কি এটি একত্রিত করা সম্ভব?

উদাহরণস্বরূপ, যদি এমন একটি ডিস্ক থাকে যা chroot পরিবেশ থেকেও অ্যাক্সেস করতে চান, তবে এটি শেয়ার করাও সম্ভব বলে মনে হয়।
এভাবেই Windows এর WSL তৈরি হয়েছে, তাই না?
WSL uses the 9P protocol to share files between Windows and WSL

WSL এখন
Windows Subsystem for Plan9/GNU/Linux
WSPGL, তাই না?

Related Posts