যখন ডিস্কগুলি মাউন্ট করা হয় তখন কীভাবে আমি বুট সময়ে স্ক্রিপ্ট চালাতে পারি?


1

নোট: আমি না বুট করার সময় একটি পরিষেবা (বা যাই হোক না কেন) চালানোর বিষয়ে জিজ্ঞাসা করা (আমি কিভাবে তা করতে জানি)।

পটভূমি

একটি এসডি কার্ড থেকে সিস্টেম বুট, যার উপর পুরো সিস্টেম আছে। এটি সংযুক্ত একটি বাইরের ইউএসবি ডিস্ক, বা একটি SATA এসএসডি - বা কিছু ক্ষেত্রে কিছুই। আমি বাহ্যিক মাধ্যমের কিছু "উপাদান" আউটসোর্স করতে চাই, যেমন /var/log, যে মাধ্যম পাওয়া যায়। এটি উপলব্ধ না হলে, "অভ্যন্তরীণ" এসডি-কার্ড ব্যবহার করা উচিত। (এবং যদি আপনি আশ্চর্য হন: হ্যাঁ, এটি একটি ছোট একক-বোর্ড কম্পিউটার)।

সমস্যা

স্পষ্টতই, Init প্রক্রিয়া শুরু হওয়ার আগে, স্বাভাবিক ডিরেক্টরি গঠন অবশ্যই উপস্থিত থাকা আবশ্যক। ফাইল সিস্টেম মাউন্ট (থেকে /etc/fstab ) এর আগে কার্নেল দ্বারা করা হয়। উদাহরণ স্টিকিং /var/log (যার সাথে মোকাবিলা করা শুধুমাত্র একমাত্র নয়) এবং একটি বহিরাগত ড্রাইভ মাউন্ট করা হয় /mnt/external যখন উপস্থিত:

আমি কিভাবে স্থাপন করতে পারেন /var/log (উদাঃ symlink এর মাধ্যমে) /mnt/external যদি ড্রাইভ উপস্থিত থাকে, তবে এটি নীচে রাখুন যেমন /mnt/local অন্যথায় - একটি নিরাপদ এবং পরিষ্কার ভাবে?


আপনি উল্লেখ একটি উদাহরণ জন্য, আপনি একটি প্রয়োজন হয় না "লিপি" এবং এই যথেষ্ট হবে: superuser.com/questions/449922/...
sawdust

না, সম্পূর্ণ ভিন্ন জিনিস। এটা সম্পর্কে না পটভূমি আমার ক্ষেত্রে, কিন্তু পরে কি ঘটবে। আমি এই সময় একটি কাঁচা ধারণা পেয়েছেন, কিন্তু সম্ভব (এখনও) সম্ভাব্য প্রভাব সম্পর্কে সচেতন নই: সঠিক জায়গা আমার উপাদান থেকে জিনিস চলমান হবে /etc/init.d/mountall-bootclean.sh (যেখানে যেমন /tmp পরিষ্কার করা হয়েছে: সমস্ত স্ক্রিপ্ট মাউন্ট করা হয়েছে এই স্ক্রিপ্ট অবিলম্বে চালানো হয়)। কিন্তু এটা কোন জন্য চেক না *local* স্ক্রিপ্ট কল-যদি বিদ্যমান থাকে, তাই আমাকে সরাসরি এটি সংশোধন করতে হয়েছিল - আমার সংশোধনের বিপদটি কিছু সিস্টেম আপডেটের সাথে চলে গেছে।
Izzy

উত্তর:


0

আমি জানি আপনি "কোনও পরিষেবা চালানোর বিষয়ে জিজ্ঞাসা করছেন না", তবে দুর্ভাগ্যবশত প্রশ্নটির প্রকৃতির জন্য আপনাকে আপনার স্ক্রিপ্টটি একটি পরিষেবাতে রাখতে হবে এবং ডিস্কগুলি মাউন্ট হওয়ার পরে সঠিক জায়গায় এটি হুক করতে হবে।

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

আমি বিশ্বাস করি যে আপনি একবার এই বাধা অতিক্রম করেছেন, আপনি বাকিটি শেষ করতে সক্ষম হবেন তবে যদি আপনাকে আরও তথ্যের প্রয়োজন হয় তবে আমাকে জানান।


"যে পরিষেবাটিতে মোড়ানো স্ক্রিপ্টটি" খুব দেরী শুরু করবে: আপনি যা করতে পারেন সবকিছু /etc/rc.X একটি সময় চালানো হবে পরে মাউন্ট সম্পন্ন হয়। আমার ক্ষেত্রে, আমি মাউন্ট প্রসেসে প্লাগইন করতে হবে, যা কার্নেল দ্বারা সঞ্চালিত হয় ইনিট প্রক্রিয়া শুরু করার আগে । সুতরাং একটি স্ক্রিপ্ট যে স্ক্রিপ্ট নির্বাণ কাজ করতে পারে না। এবং হ্যাঁ, লিনাক্স থেকে আমার যা দরকার তা "সঠিক মুহুর্তে ট্রিগার / কল করুন" - কিন্তু দুর্ভাগ্যবশত, আমার ক্ষেত্রে এটি কেবল একটি "SXY-do_my_job" ফাইল স্থাপন করে ইনিট সিস্টেমের মাধ্যমে এটি করা যাবে না।
Izzy

ওহ, আপনি তারপর সিস্টেম ব্যবহার করা হয় না।
xpt

আমি SYS-V মডেলে ব্যবহার করছি, এবং systemd এর সাথে অনেক বেশি খেলেছি। এবং যখন SYS-V সর্বাধিক * নিক্স সিস্টেমগুলির দ্বারা সমর্থিত হয়, বিকল্পগুলি "বিতরণ" -এর মধ্যে আলাদা হয়: one systemd, অন্যান্য আপস্টার্ট এবং আরও অনেক কিছু ব্যবহার করে। এটি নিষ্পত্তি না হওয়া পর্যন্ত SYS-V এর "সাধারণ উত্তরাধিকারী" হবে, আমি "ভুল প্রার্থী" তে অনেক সময় বিনিয়োগ করতে চাইনি;) // তা সত্ত্বেও: এই বিষয়টি বরং "দার্শনিক" এটি বাস্তবায়িত করার সময় মনে মনে একটু জটিল লাগছিল (ত্রুটিগুলির জন্য খুব বেশি ঘর) - তাই আমি একটি সহজ বিকল্পের জন্য সিদ্ধান্ত নিলাম। তবুও আপনার ইনপুট জন্য ধন্যবাদ!
Izzy

0

এটি করার সঠিক জায়গাটি হল:

  • /etc/init.d/checkroot-bootclean.sh: রুট পার্টিশন (রান) / ) মাউন্ট করা হয়, কিন্তু অন্যান্য পার্টিশন উপলব্ধ হওয়ার পূর্বে। এটি সম্ভবত বর্ণিত ক্ষেত্রে সবচেয়ে উপযুক্ত জায়গা, কারণ অন্যান্য ফাইল সিস্টেমগুলির সিমলিংকগুলির লক্ষ্যগুলি স্থানান্তরিত হওয়ার আগে - এবং বিশেষ করে যেমন। একটি আউটসোর্স /var/log সিস্টেম লগ লিখতে শুরু করবে যখন সেখানে হবে
  • /etc/init.d/mountall-bootclean.sh: সমস্ত স্থানীয় ফাইল সিস্টেম মাউন্ট করা হয় যখন চালানো। এই যেখানে /tmp পরিষ্কার করা হবে - তবে লগগুলি ইতিমধ্যে অ্যাক্সেসযোগ্য হওয়ার দরকার কিনা তা আমি নিশ্চিত নই।

আদর্শভাবে, আমাদের স্ক্রিপ্ট "যারা দুই মধ্যে" স্থাপন করা হবে। এবং সিস্টেমের উপর নির্ভর করে, অন্যান্য জায়গা হতে পারে।

ডেবিয়ান (এবং ডেরিভেটিভস, আমার ক্ষেত্রে যেমন) আছে /etc/init/mountall.conf যেখানে মাউন্ট স্টাফ কনফিগার করা হয়:

# This helper mounts filesystems in the correct order as the devices
# and mountpoints become available.

এই এক কল mountall "সঠিক আদেশ" যত্ন নিতে, তাই কিছু বিবরণ পাওয়া যাবে man mountall কিন্তু দুর্ভাগ্যবশত না এই না /usr/share/doc/mountall/* কিভাবে হুক ইন বিস্তারিত প্রদান করে। একটি ইস্যু find জন্য mountall আমার জন্য আরও কয়েকটি ফাইল চালু করেছে, তবে আমাকে আরও কিছু নির্দেশ দিচ্ছে না - তাই যদি না আমি অন্য কিছু শিখি তবে উপরের দুটি অবস্থান "বর্তমান হুক" হবে।


আপনি জিজ্ঞাসা করার আগে: না, একটি "স্টার্টআপ স্ক্রিপ্ট" স্থাপন /etc/rc.X (অথবা SYS-V এর পরিবর্তে যা যা ব্যবহার করা হয় তার সমতুল্য) তা করা হবে না - ইনিট প্রক্রিয়া শুরু হওয়ার আগে কার্নেল দ্বারা মাউন্ট করা হয় এবং সিস্টেমগুলি লেখার শুরু হওয়ার আগে এই মাউন্টগুলির প্রয়োজন হয়। ডিস্ক লগ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.