এম্বেডড সেটআপের জন্য কেবল পঠনযোগ্য রুট ফাইল সিস্টেমটি ব্যবহার করা কি ভাল ধারণা?


15

এম্বেডড ডিভাইসে অপারেটিং সিস্টেম হিসাবে লিনাক্স চালানোর কাজ আমাকে দেওয়া হয়েছে।

লক্ষ্যটিতে একটি x86 প্রসেসর রয়েছে এবং স্টোরেজের জন্য এটি 8 গিগাবাইট কমপ্যাক্টফ্ল্যাশ ডিভাইস রয়েছে।

আমি কার্নেল চিত্র এবং ক্রস সংকলন সরঞ্জামগুলি তৈরি করতে বিলড্রুট ব্যবহার করতে সক্ষম হয়েছি। আমি সিএফ ডিভাইসটিকে একটি ছোট এফএটি পার্টিশনে বিভক্ত করেছি যেখানে কার্নেল চিত্রটি বাস করার পাশাপাশি syslinuxবুট কনফিগারেশন এবং এমন একটি ext3ফাইল সিস্টেম যেখানে আমি বিল্ট্রুট দ্বারা উত্পাদিত মূল ফাইল সিস্টেমটি সঙ্কুচিত করেছি।

সিস্টেমটি সফলভাবে বুট syslinuxকরতে সাহায্য করে যেখানে আমার বিল্ড্রুট ফাইল সিস্টেমটি অবস্থিত সিএফ এক্সট্রি পার্টিশনে রুট ডিরেক্টরিটি সেট করে।

আমার প্রশ্নটি তাত্ক্ষণিকভাবে (এবং ঘন ঘন) পাওয়ার ক্ষতির মুখে দৃ of়তার প্রয়োজনীয়তার চারপাশে কেন্দ্রীভূত কারণ বিদ্যুৎ বিভ্রাটের পরে ডিভাইসটির জন্য সফলভাবে বুট করা খুব জরুরি। আমি পড়েছি যে কেবলমাত্র পঠন হিসাবে রুট ফাইল সিস্টেমটি মাউন্ট করা তথ্যের অখণ্ডতা নিশ্চিত করার একটি উপায়। এটি কি আমার এগিয়ে যাওয়ার পক্ষে কোনও বুদ্ধিমান উপায়?

একই জিনিস অর্জনের জন্য আমি র‍্যামের মধ্যে মূল ফাইল সিস্টেম লোড করার সম্ভাবনা সম্পর্কেও পড়েছি তবে কীভাবে এটি করতে হয় তা এখনও জানি না।

এই লক্ষ্য অর্জনের একটি পছন্দসই উপায় আছে এবং যদি তাই হয় তবে আমার এগিয়ে যাওয়ার সবচেয়ে ভাল উপায় কী?

উত্তর:


11

নতুন উত্তর (2015-03-22)

( দ্রষ্টব্য: এই উত্তরটি আগের তুলনায় সহজ, তবে আরও সুরক্ষিত নয় My আমার প্রথম উত্তরটি শক্তিশালী কারণ আপনি অনুমতিপত্রের ফ্ল্যাগের আগে কেবলমাত্র fs মাউন্ট অপশন দ্বারা ফাইলগুলি কেবল পঠন করতে পারেন So সুতরাং লেখার অনুমতি ছাড়াই কোনও ফাইল লিখতে বাধ্য করা কার্যকর হবে না) আদৌ।)

হ্যাঁ, ডেবিয়ানের অধীনে , একটি প্যাকেজ রয়েছে: fsprotect ( হোমপেজ )।

এটি লাইভ সেশন পরিবর্তনের অনুমতি দেওয়ার জন্য কিন্তু ডিফল্টরূপে র‌্যামে aufs(ডিফল্টরূপে, তবে অন্য unionfsসরঞ্জামটি ব্যবহার করতে পারে ) ব্যবহার করে , তাই সবকিছু পুনরায় বুটে ভুলে যায়।

আপনি কেবল চালিয়ে এগুলি ইনস্টল করতে পারেন:

apt-get install fsprotect

একবার হয়ে গেলে, অনলাইন ডক থেকে:

তারপর:

  • সম্পাদনা করুন /boot/grub/menu.lstবা /etc/default/grub2বা /etc/lilo.confএবং fsprotect=1Gকার্নেল পরামিতিগুলিতে " " যুক্ত করুন ।
  • প্রয়োজন অনুযায়ী 1 জি সংশোধন করুন।
  • পরিবর্তনগুলি প্রয়োগ করুন (যেমন চালানো update-grub)
  • /etc/default/fsprotectআপনি যদি বাদে ফাইল সিস্টেমগুলি সুরক্ষিত করতে চান তবে সম্পাদনা করুন /
  • পুনরায় বুট করার

আপনি গ্রাব বুটলোডারকে পাসওয়ার্ড রক্ষা করতে বা এতে কোনও পরিবর্তন নিষিদ্ধ করতেও পারেন।

সেখান থেকে, যদি কোনও ফাইল পরিবর্তনের বিরুদ্ধে সুরক্ষিত থাকে, তবে নমুনা দ্বারা

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/ 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

সুতরাং যখন RO মধ্যে remounting, কপি /varমধ্যে /dev/shmঅত্যধিক স্থান নেবে না অধিকাংশ ফাইল করার জন্য অনুপ্রাণিত হই /static-varএবং শুধুমাত্র symlinks RAM অনুলিপি যেতে চলেছে।

এটিকে সূক্ষ্মভাবে করার সর্বোত্তম উপায় হ'ল একটি সম্পূর্ণ শক্তিচক্র তৈরি করা, একদিন পূর্ণ পরিশ্রমের এবং সূক্ষ্মভাবে একটি কমান্ড চালানো যেমন:

find / -type f -o -type f -mtime -1

সুতরাং আপনি দেখতে পাবে কোন ফাইলগুলি পঠন-লেখার পার্টিশনে অবস্থিত।

লগিং

ইতিহাস এবং অন্যান্য লগ সংরক্ষণের জন্য এই হোস্টের মতো কোনও লেখার যোগ্য স্থির মেমরি উপস্থিত নেই, আপনাকে একটি রিমোট syslogসার্ভার কনফিগার করতে হবে ।

echo >/etc/syslog.conf '*.* @mySyslogServer.localdomain'

এই পদ্ধতিতে, যদি কোনও কারণে আপনার সিস্টেমটি ব্রেক হয়ে যায় তবে এর আগে সমস্ত কিছু লগইন।

আপগ্রেড

যখন কিছু থাক চলমান mount --bindব্যবহারে, এই ধরনের একটি আপগ্রেড করছেন জন্য সিস্টেম ব্যবহার করা হচ্ছে যখন (whithout চলমান প্রয়োজন init 1, সময় নিচে হ্রাস করার জন্য), simplier পথ পুনরায় বিল্ড একটি পরিষ্কার হয় রুট , আপগ্রেড করতে সক্ষম:

রিড- রাইটিং মোডে '/' পুনরায় মাউন্ট করার পরে :

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

আপনার উত্তরের জন্য ধন্যবাদ. আমার লিনাক্স দক্ষতা এই মুহুর্তে দুর্দান্ত না হওয়ায় আমি এটি পুরোপুরি বুঝতে পারি না। এটি এখনও খুব সহায়ক এবং এটি আমাকে গবেষণার জন্য আরও কিছু অঞ্চল দেয়।
গণিতবিদ

উত্তর সম্পাদিত! নতুন সমাধান এবং ব্যাখ্যা বিভিন্ন!
এফ। হাউরি

এটি প্রশ্নের উত্তর দেয় না, এটি একটি ডেবিয়ান ভিত্তিক সিস্টেমের জন্য দুর্দান্ত উত্তর, তবে বিল্ড্রুট ডেবিয়ান ভিত্তিক নয়।
ভালোবাসা থা

@ লাভসথাহা দেখুন পুরানো (প্রথম) উত্তরটি দেখুন ! এটি কম ডেবিয়ান ভিত্তিক এবং আপনি নীতিটি বুঝতে এবং কোনও প্রকারের বিতরণ / ইনস্টলেশনের জন্য একই পদ্ধতি প্রয়োগ করতে পারেন। (এমনকি যদি আপগ্রেড বিভাগটি দেবিয়ান কমান্ডগুলি দেখায়, ম্যানুয়াল আপগ্রেডিং বা অন্য কোনও বিতরণ ভিত্তিক আপগ্রেডের জন্যও আপনি একই কাজ করতে পারেন))
এফ। হাউরি

আপনার পুরানো উত্তরটি কেবল পঠনযোগ্য লিনাক্স সিস্টেম স্থাপনের বিষয়ে সাধারণ প্রশ্নের দুর্দান্ত উত্তর হবে answer একবার আমি আমাদের বিল্ড্রুটগুলির পঠন তৈরি করার জন্য আমার অনুসন্ধান শেষ করে ফেললে আমি আশা করি এখানে ফিরে আসব এবং এখানে নির্দিষ্ট প্রশ্নের একটি দুর্দান্ত বিস্তারিত উত্তর দেব। বিল্ড্রূট এর মধ্যে ইতিমধ্যে / var সিমলিঙ্কযুক্ত / tmp এর অস্থায়ী বিট রয়েছে যা একটি টেম্পস। / ইত্যাদি প্রোগ্রামগুলির জন্য স্ক্র্যাচ স্পেস হিসাবে ব্যবহার করা উচিত নয়, সুতরাং এটি বিশেষভাবে পরিচালনা করার প্রয়োজন হবে না।
শে

3

আমি কেবলমাত্র একটি সাম্প্রতিক বিল্ড্রুট (2014-02) ব্যবহার করার অভিজ্ঞতা পেয়েছি। সেই সংস্করণে আপনি কনফিগার ফাইলে 'রিমাউন্ট রুট ফাইল সিস্টেম রিড-রাইটিং ডিউইং বুট' অক্ষম করতে পারবেন:

BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW সেট করা নেই

আমি এমন একটি চিত্র তৈরি করতে পরিচালিত করেছি যা কেবল তার এক্সট 4 / পার্টিশনটি কেবল পঠন হিসাবে ব্যবহার করে তাই সিস্টেমের পাওয়ার প্লাগ লাগানো মোটেই ক্ষতি করে না। এটি দুর্দান্ত কাজ করে, সুতরাং আপনার যদি আপনার ফাইল সিস্টেমে লেখার প্রয়োজন না হয় তবে সম্ভবত এটি উল্লিখিতটির চেয়ে অনেক সহজ সমাধান (যা ডেবিয়ান সিস্টেমে কমবেশি প্রযোজ্য বলে মনে হচ্ছে এটি অ্যাপটি-গেটকে বোঝায়)।


উত্তরের জন্য ধন্যবাদ - তবে শেষ পর্যন্ত আমি সিদ্ধির বিকল্পের সাথে সিএফ ড্রাইভের সাথে ডেটা অধ্যবসায়ের জন্য মাত্র কয়েকটি ডিরেক্টরি মাউন্ট করে একটি ইন্ট্রামফ সেটআপ বেছে নিয়েছি। এটি আপাতত বেশ ভালভাবে আমাকে পরিবেশন করেছে।
গণিতবিদ

এটি যুক্ত করতে: পুরানো বিল্ডরুট সংস্করণগুলি ব্যবহার করে, পুনঃনির্মাণের /etc/inittabকিনা তা পরীক্ষা করে দেখুন/ সেখানে ঘটনা ঘটে তা । যদি তা হয় তবে এটি আপনার প্রয়োজনে পরিবর্তন করুন।
ইভানু

এই উত্তরটি এটি করার জন্য 'বিল্ডরোট ওয়ে' এর একটি গুরুত্বপূর্ণ অংশ। আরও জটিল সিস্টেমে কাজ করার জন্য গৃহীত উত্তরের বেশিরভাগ পরামর্শের প্রয়োজন হবে। সম্ভাবনাগুলি হ'ল যেটি করা দরকার তা হ'ল / টিএমপি (টেম্পফ) এবং কিছু কিছু কাজ করে কয়েকটি অতিরিক্ত সিমলিংক সেট আপ করা।
ভালোবাসা থা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.