नया उत्तर (2015-03-22)
( नोट: यह उत्तर पिछले की तुलना में सरल है, लेकिन अधिक सुरक्षित नहीं है। मेरा पहला उत्तर अधिक मजबूत है क्योंकि आप अनुमति झंडे से पहले एफएस माउंट विकल्पों द्वारा केवल पठन- पाठन को रख सकते हैं । इसलिए बिना लिखने की अनुमति के एक फाइल लिखने के लिए बाध्य करने से काम नहीं चलेगा। बिल्कुल भी।)
हां, डेबियन के तहत एक पैकेज है: एफएसप्रोटेक्ट ( होमपेज )।
यह लाइव सत्र परिवर्तनों को अनुमति देने के लिए aufs
(डिफ़ॉल्ट रूप से, लेकिन दूसरे unionfs
टूल का उपयोग कर सकता है ) लेकिन डिफ़ॉल्ट रूप से रैम में, इसलिए रिबूट में सब कुछ भूल गया है।
आप उन्हें बस चलाकर स्थापित कर सकते हैं:
apt-get install fsprotect
एक बार किया, ऑनलाइन डॉक्टर से:
उसके बाद:
- संपादित करें
/boot/grub/menu.lst
या /etc/default/grub2
या /etc/lilo.conf
" fsprotect=1G
" कर्नेल मापदंडों में जोड़ें ।
- आवश्यकतानुसार 1G संशोधित करें।
- परिवर्तन लागू करें (यानी चलाएँ
update-grub
)
- संपादित करें
/etc/default/fsprotect
यदि आप फाइलसिस्टम की रक्षा करना चाहते हैं तो इसके अलावा /
।
- रिबूट
आप grub बूटलोडर की सुरक्षा करना चाहते हैं या उसमें कोई भी बदलाव करने से मना कर सकते हैं।
वहाँ से, अगर कुछ फ़ाइल को परिवर्तनों के विरुद्ध संरक्षित किया जाता है, तो नमूने के लिए
chmod ugo-w myfile
यदि आप नमूने के लिए उपयोग करते हैं vi myfile
और कमांड के साथ उस पर लिखने की कोशिश करते हैं :w!
, तो यह काम करेगा और आपका myfile
परिवर्तन हो गया। आप अनमोल प्राप्त करने के लिए रीबूट कर सकते हैं myfile
।
यह मेरे पहले समाधान के बाद भी संभव नहीं है:
पुराना (पहला) उत्तर:
हाँ, यह एक मजबूत समाधान है, लेकिन शक्तिशाली!
आर / ओ प्रयोज्य बनाना
आपको rw , जैसे /var
, /etc
और शायद में कुछ निर्देशिकाओं को माउंट करना होगा /home
। यह aufs या Unionfs का उपयोग करके किया जा सकता है । मुझे यह पसंद है , एक और तरीका है , का उपयोग करना /dev/shm
और mount --bind
:
cp -a /var /dev/shm/
mount --bind /dev/shm/var /var
इससे पहले, आप उन सभी निर्देशिकाओं को स्थानांतरित कर सकते हैं, जिन्हें सामान्य ऑपरेशन में नहीं बदलना है static-var
, सहानुभूति / संस्करण में बनाने की तुलना में:
mkdir /static-var
mkdir /static-var/cache
mkdir /static-var/lib
mv /var/lib/dpkg /static-var/lib/dpkg
ln -s /static-var/lib/dpkg /var/lib/dpkg
mv /var/cache/apt /static-var/cache/apt
ln -s /static-var/cache/apt /var/cache/apt
... # an so on
इसलिए जब आरओ में रिमाउंटिंग होती है, तो कॉपी करने /var
में /dev/shm
बहुत ज्यादा जगह नहीं लगेगी क्योंकि ज्यादातर फाइलों को स्थानांतरित कर दिया जाता है /static-var
और केवल सिम्लिंक को राम में कॉपी किया जाता है।
इस बारीक काम को करने का सबसे अच्छा तरीका है, एक पूर्ण शक्ति-चक्र बनाना, एक दिन का पूरा काम और बारी-बारी से एक कमांड चलाना जैसे:
find / -type f -o -type f -mtime -1
तो आप देखेंगे कि किन फाइलों को रीड-राइट विभाजन पर स्थित होना चाहिए।
लॉगिंग
जैसा कि इस होस्ट में कोई लेखन योग्य स्थिर मेमोरी मौजूद नहीं है, इतिहास और अन्य लॉग को संग्रहीत करने के लिए, आपको एक दूरस्थ syslog
सर्वर को कॉन्फ़िगर करना होगा ।
echo >/etc/syslog.conf '*.* @mySyslogServer.localdomain'
इस तरह, यदि आपका सिस्टम किसी भी कारण से टूट जाता है, तो लॉग इन करने से पहले सब कुछ।
उन्नयन
जब कुछ mount --bind
उपयोग में चल रहा हो , तो इस तरह के अपग्रेड को करने के लिए, जबकि सिस्टम उपयोग में है ( init 1
डाउन-टाइम को कम करने के लिए, रनिंग की आवश्यकता को पूरा करें ), सरल तरीका यह है कि एक क्लीन रूट को फिर से बनाया जाए , जो अपग्रेड करने में सक्षम हो:
पठन-पाठन मोड में '/' को हटाने के बाद :
mount -o remount,rw /
for mpnt in /{,proc,sys,dev{,/pts}};do
mount --bind $mnpt /$mnt$mpnt;
done
chroot /mnt
apt-get update && apt-get dist-upgrade
exit
umount /mnt/{dev{/pts,},proc,sys,}
sync
mount -o remount,ro /
और अब:
shutdown -r now