উত্তর:
এটিউসের মতো ইউনিয়ন ফাইল সিস্টেম স্তর ব্যবহার করা সম্ভব ।
ডেমো:
# dd if=/dev/zero of=/tmp/image bs=1024 count=1024
1024+0 records in
1024+0 records out
1048576 bytes (1.0 MB) copied, 0.0028428 s, 369 MB/s
# mke2fs /tmp/image
...
# mkdir /tmp/imgmnt
# mount -o loop /tmp/image /tmp/imgmnt
# echo hello > /tmp/imgmnt/hello.txt
# umount /tmp/imgmnt
# mount -o loop,ro /tmp/image /tmp/imgmnt
# echo blah > /tmp/imgmnt/hello.txt
-su: /tmp/imgmnt/hello.txt: Read-only file system
# mkdir /tmp/rammnt
# mount -t tmpfs -o size=1M none /tmp/rammnt
# mkdir /tmp/combined
# mount -t aufs -o br:/tmp/rammnt:/tmp/imgmnt=ro none /tmp/combined
(কেবল পঠনযোগ্য) শীর্ষে br
স্ট্যাকিং /tmp/rammnt
(পঠন-লিখন) দ্বারা একটি নতুন "শাখা" ( ) তৈরি করার জন্য সেই মাউন্ট বিকল্প /tmp/imgmnt
। এই "শাখা" ফাইল সিস্টেমটি (পঠন-লিখন) হিসাবে দৃশ্যমান করা হয়েছে /tmp/combined
।
( সমস্ত বিবরণের জন্য আউফস (5) ম্যান পৃষ্ঠা দেখুন))
এখন যা হয়েছে তা এখানে আপনার কাছে যা রয়েছে:
# ls /tmp/combined
hello.txt lost+found
# cat /tmp/combined/hello.txt
hello
# echo bye > /tmp/combined/hello.txt
# cat /tmp/combined/hello.txt
bye
# cat imgmnt/hello.txt
hello
# cat rammnt/hello.txt
bye
সুতরাং tmpfs
ফাইল সিস্টেমে "স্টপ" লেখেন , তারা লুপ-মাউন্ট করা ইমেজ ফাইলটিতে আবার প্রচার করার চেষ্টা করেন না।
আপনি একটি সাধারণ ডিরেক্টরি (একটি পঠন / ফাইল ফাইলটিতে লিখতে) ব্যবহার করতে পারেন, বা সম্ভবত এটির জন্য কোনও ডিরেক্টরি /dev/shm
তৈরি করার পরিবর্তে যদি এটি আপনার জন্য কাজ করে তবে একটি ডিরেক্টরি ব্যবহার করতে পারেন tmpfs
।
এই কৌশলটি (বা এর বিভিন্নতা) কিছু বিতরণ লাইভসিডি দ্বারা ব্যবহৃত হয়। উইকিপিডিয়া এউফস এন্ট্রি কয়েকটি তালিকা।
/
এটির জন্য করতে চান তবে আমি বিশ্বাস করি আপনি একটি আরআরআরডি দিয়ে ভাল হবেন (এটি আমার বিশ্বাস লাইভসিডদের জন্য এটি করা হয়)। আপনি এটি একটি জটিল স্ক্রিপ্ট থেকে এটি করতে সক্ষম হতে পারেন যদিও এটি জটিল শোনায়।
মনে হচ্ছে উবুন্টুতে এটি করার আরও দুটি সহজ উপায় রয়েছে (কমপক্ষে পরবর্তী সংস্করণগুলি):
একটি সিস্টেম বুটযোগ্য তৈরি করার পদক্ষেপগুলি সহজ। আমি ব্যবহৃত এই সহায়িকার সঙ্গে একযোগে এই সহায়িকার জিনিসটা কিভাবে এটি সঠিকভাবে কাজ করছে, বাগ ছাড়া পেতে এবং ওয়েবে অনুসন্ধান একটি গুচ্ছ।
সারাংশ:
চালান:
sudo apt-get install fsprotect apparmor-utils
এই সংরক্ষণ /etc/initramfs-tools/scripts/init-bottom/__rootaufs
। আমি মনে করি না নামটি আসলে গুরুত্বপূর্ণ, তবে __
শুরুটি অর্ডার করার উদ্দেশ্যে ব্যবহৃত হতে পারে, তাই আপনি যদি নামটি পরিবর্তন করেন তবে আপনি আন্ডারস্কোরগুলি রাখতে চান। (এটি এই ফাইলটির একটি অনুলিপি ))
#!/bin/sh -e
case $1 in
prereqs)
exit 0
;;
esac
for x in $(cat /proc/cmdline); do
case $x in
root=*)
ROOTNAME=${x#root=}
;;
aufs=*)
UNION=${x#aufs=}
case $UNION in
LABEL=*)
UNION="/dev/disk/by-label/${UNION#LABEL=}"
;;
UUID=*)
UNION="/dev/disk/by-uuid/${UNION#UUID=}"
;;
esac
;;
esac
done
if [ -z "$UNION" ]; then
exit 0
fi
# make the mount points on the init root file system
mkdir /aufs /ro /rw
# mount read-write file system
if [ "$UNION" = "tmpfs" ]; then
mount -t tmpfs rw /rw -o noatime,mode=0755
else
mount $UNION /rw -o noatime
fi
# move real root out of the way
mount --move ${rootmnt} /ro
mount -t aufs aufs /aufs -o noatime,dirs=/rw:/ro=ro
# test for mount points on union file system
[ -d /aufs/ro ] || mkdir /aufs/ro
[ -d /aufs/rw ] || mkdir /aufs/rw
mount --move /ro /aufs/ro
mount --move /rw /aufs/rw
# strip fstab off of root partition
grep -v $ROOTNAME /aufs/ro/etc/fstab > /aufs/etc/fstab
mount --move /aufs /root
exit 0
ইন /etc/default/grub
, লাইনে যে দিয়ে শুরু হয় এটি GRUB_CMDLINE_LINUX_DEFAULT
, এবং কোট যে অনুসরণ ভিতরে, প্যারামিটার যোগ aufs=tmpfs
।
বোনাস: আপনার যদি মাঝে মধ্যে অস্থায়ীভাবে পুনঃনির্দেশটি বন্ধ করতে হয়, কেবল কার্নেল প্যারামিটার তালিকা থেকে এই যুক্তিটি সরিয়ে দিন। GRUB মেনুটি দেখাতে সিস্টেম বুট করার সময় আপনি সম্ভবত শিফট কী ধরে রেখে এটি করতে পারেন; তারপরে পরামিতিগুলি সম্পাদনা করতে e টিপুন এবং aufs=...
তালিকা থেকে প্যারামিটারটি মুছুন ।
এই লাইনগুলিতে যুক্ত করুন /etc/sysctl.conf
। ( সতর্কতা : সম্ভাব্য সুরক্ষা ঝুঁকি))
kernel.yama.protected_nonaccess_hardlinks = 0
kernel.yama.protected_sticky_symlinks = 0
এই লাইনগুলি চালান:
sudo aa-complain dhclient3
sudo chmod 0755 /etc/initramfs-tools/scripts/init-bottom/__rootaufs
sudo update-initramfs -k all -u
sudo update-grub
যদি সবকিছু ঠিকঠাক হয়, আপনি পুনরায় বুট করার সময় আপনি এটি একটি অস্থায়ী ফাইল সিস্টেমে করছেন। র্যামের অংশটি হবে /rw
এবং ডিস্ক চিত্রটি হবে /ro
, তবে অবশ্যই এটি কেবল পঠনযোগ্য।
তবুও, যদি আপনি একটি অস্থায়ী সিস্টেমে বুট করে থাকেন তবে স্থায়ী পরিবর্তন প্রয়োজন হয়, আপনি এই বলে /ro
ফাইল সিস্টেমটি পুনরায় মাউন্ট করতে পারেন
sudo mount -o remount,rw /ro
এটিকে লিখনযোগ্য করে তোলার জন্য এবং তারপরে আপনি সেই ডিরেক্টরিতে যা কিছু পরিবর্তন প্রয়োজন।
হ্যাঁ, unionfs দ্বারা দেখতে unionfs.filesystems.org । আপনার কাছে প্রথম পঠনযোগ্য কেবল ফাইল সিস্টেম মাউন্ট রয়েছে এবং ইউনিয়নফের মাধ্যমে দ্বিতীয় পাঠ্য-রাইটিং র্যাম ফাইল সিস্টেম হিসাবে।
উবুন্টুতে আপনি ইউনিয়নফস-ফিউজ প্যাকেজটি খুঁজে পেতে পারেন যা একই জিনিসগুলির আরেকটি বাস্তবায়ন, তবে ব্যবহারকারীর জায়গায়, কার্নেল মডিউল হিসাবে নয়।
আপনি এটিউসের মতো ইউনিয়ন ছাড়াই ডিভাইস স্তরেও এটি করতে পারেন। ডিভাইস-ম্যাপার দেখুন snapshot-origin
।
fstab
মাউন্ট পয়েন্টের সাথে এটি করা কি সম্ভব/
? (অর্থাত্ সিস্টেমটি একটি বাতিলযোগ্য চিত্র থেকে বুট হয়ে যায়, বেশ কিছুটা))