আমি এতে অনিবদ্ধ lxc
পাত্রে ব্যবহার করি Arch Linux
। এখানে বেসিক সিস্টেম ইনফোগুলি রয়েছে:
[chb@conventiont ~]$ uname -a
Linux conventiont 3.17.4-Chb #1 SMP PREEMPT Fri Nov 28 12:39:54 UTC 2014 x86_64 GNU/Linux
এটি একটি কাস্টম / সংকলিত কার্নেল এর সাথে user namespace enabled
:
[chb@conventiont ~]$ lxc-checkconfig
--- Namespaces ---
Namespaces: enabled
Utsname namespace: enabled
Ipc namespace: enabled
Pid namespace: enabled
User namespace: enabled
Network namespace: enabled
Multiple /dev/pts instances: enabled
--- Control groups ---
Cgroup: enabled
Cgroup clone_children flag: enabled
Cgroup device: enabled
Cgroup sched: enabled
Cgroup cpu account: enabled
Cgroup memory controller: enabled
Cgroup cpuset: enabled
--- Misc ---
Veth pair device: enabled
Macvlan: enabled
Vlan: enabled
File capabilities: enabled
Note : Before booting a new kernel, you can check its configuration
usage : CONFIG=/path/to/config /usr/bin/lxc-checkconfig
[chb@conventiont ~]$ systemctl --version
systemd 217
+PAM -AUDIT -SELINUX -IMA -APPARMOR +SMACK -SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID -ELFUTILS +KMOD +IDN
দুর্ভাগ্যক্রমে, বর্তমানে systemd
ভাল খেলছে না lxc
। বিশেষত cgroups
একটি মূলবিহীন ব্যবহারকারীর জন্য সেটআপ করা ভালভাবে কাজ করছে বলে মনে হচ্ছে বা আমি কীভাবে এটি করব তা সম্পর্কে খুব অপরিচিত। lxc
এটি কেবল তখনই অনিবদ্ধ মোডে একটি ধারক শুরু করবে যখন এটি প্রয়োজনীয় সিগ্রুপ তৈরি করতে পারে /sys/fs/cgroup/XXX/*
। এটি তবে এর জন্য সম্ভব নয় lxc
কারণ সিগ্রুপের ক্রমবিন্যাসকে systemd
মাউন্ট করে । একটি কার্যবিধির মধ্যে নিম্নলিখিতটি করা মনে হচ্ছে:root
/sys/fs/cgroup/*
for d in /sys/fs/cgroup/*; do
f=$(basename $d)
echo "looking at $f"
if [ "$f" = "cpuset" ]; then
echo 1 | sudo tee -a $d/cgroup.clone_children;
elif [ "$f" = "memory" ]; then
echo 1 | sudo tee -a $d/memory.use_hierarchy;
fi
sudo mkdir -p $d/$USER
sudo chown -R $USER $d/$USER
echo $$ > $d/$USER/tasks
done
এই কোডটি একটি অনিবদ্ধ ব্যবহারকারীর জন্য শ্রেণিবিন্যাসে সম্পর্কিত cgroup
ডিরেক্টরিগুলি তৈরি করে cgroup
। যাইহোক, আমি বুঝতে পারি না এমন কিছু ঘটেছিল। পূর্বোক্তটি কার্যকর করার আগে আমি এটি দেখতে পাব:
[chb@conventiont ~]$ cat /proc/self/cgroup
8:blkio:/
7:net_cls:/
6:freezer:/
5:devices:/
4:memory:/
3:cpu,cpuacct:/
2:cpuset:/
1:name=systemd:/user.slice/user-1000.slice/session-c1.scope
পূর্বোক্ত কোডটি কার্যকর করার পরে আমি শেলটিতে দেখতে পেলাম এটিতে আমি এটি চালিয়েছি:
[chb@conventiont ~]$ cat /proc/self/cgroup
8:blkio:/chb
7:net_cls:/chb
6:freezer:/chb
5:devices:/chb
4:memory:/chb
3:cpu,cpuacct:/chb
2:cpuset:/chb
1:name=systemd:/chb
তবে অন্য যে কোনও শেলের মধ্যে আমি এখনও দেখতে পাচ্ছি:
[chb@conventiont ~]$ cat /proc/self/cgroup
8:blkio:/
7:net_cls:/
6:freezer:/
5:devices:/
4:memory:/
3:cpu,cpuacct:/
2:cpuset:/
1:name=systemd:/user.slice/user-1000.slice/session-c1.scope
অতএব, আমি lxc
উপরে উল্লিখিত কোডটি কার্যকর করেছি তবে অন্য কোনওটিতে নয় তবে আমার অনিবদ্ধ কনটেইনারটি শুরু করতে পারি ।
কেউ কি এই আচরণ ব্যাখ্যা করতে পারেন?
( )
cgroups
এর বর্তমান সংস্করণ সহ প্রয়োজনীয় সেট আপ করার জন্য কি আরও ভাল কোনও উপায় খুঁজে পেয়েছে ?systemd
>= 217