Mac OS X বুট প্রসেসে কি হয়?

Anonim

কখনও ভেবেছেন যে ম্যাক ওএস এক্স বুট এবং স্টার্টআপ প্রক্রিয়ার সময় কী ঘটে? ম্যাক ওএস এক্স-এর সাথে এটি আগের তুলনায় কিছুটা জটিল এবং ক্লাসিক ম্যাক ওএস (সিস্টেম 9, 8, 7, 6) এর দিনগুলি অনেক আগেই চলে গেছে, যেখানে আমাদের ম্যাকগুলিকে এক্সটেনশন এবং কন্ট্রোল প্যানেলগুলির একটি সিরিজের সাথে বুট করা দেখে আমরা সর্বদা একা তাদের আইকন দ্বারা সনাক্ত করতে পারি, এবং তারপরে ম্যাক বুটে কী লোড হচ্ছে এবং ঘটছে তা সহজেই সামঞ্জস্য করতে এক্সটেনশন ফোল্ডারে খনন করুন।আজ ম্যাক ওএস এক্স-এর ইউনিক্স আন্ডারপিনিংসের সাথে, অনেক ব্যবহারকারী পর্দার আড়ালে কী ঘটছে সে সম্পর্কে সম্পূর্ণরূপে অজ্ঞাত।

তাহলে Mac OS X বুট প্রক্রিয়ার সময় ঠিক কী ঘটে? ভার্বোস মোডে একটি ম্যাক বুট করে আপনি সর্বদা আরও ভাল চেহারা পেতে পারেন, তবে আপনি যা দেখছেন তার সমস্ত ব্যাখ্যা করে না। সৌভাগ্যবশত KernelThread-এ সেগমেন্টের মাধ্যমে একটি চমৎকার ব্যাখ্যা পাওয়া যায়, যা ম্যাক ওএস এক্স বুট ইভেন্টের ক্রম শুরু থেকে শেষ পর্যন্ত সাবধানে তালিকাভুক্ত করে। এটি মোটামুটি পুঙ্খানুপুঙ্খ এবং পড়ার যোগ্য, অনুসন্ধিৎসু ম্যাক ব্যবহারকারীদের জন্য নীচে পুনরাবৃত্তি করা হয়েছে৷

ote: একজন পাঠক যেমন উল্লেখ করেছেন, PPC OF (ওপেনফার্মওয়্যার) ব্যবহার করে, i386 EFI (এক্সটেনসিবল ফার্মওয়্যার ইন্টারফেস) ব্যবহার করে

তাহলে Mac OS X বুট প্রক্রিয়ার সময় কি হয়? আপনি আপনার ম্যাক চালু করেন এবং এটিই ঘটে:

  • পাওয়ার চালু আছে।
  • OF বা EFI কোড কার্যকর করা হয়েছে।
  • হার্ডওয়্যার তথ্য সংগ্রহ করা হয়েছে এবং হার্ডওয়্যার শুরু করা হয়েছে।
  • বুট করার জন্য কিছু (সাধারণত OS, কিন্তু Apple হার্ডওয়্যার টেস্ট ইত্যাদির মতো জিনিসও) বেছে নেওয়া হয়। ব্যবহারকারীকে কি বুট করতে হবে তা নির্বাচন করতে বলা হতে পারে।
  • নিয়ন্ত্রণ পাস /সিস্টেম/লাইব্রেরি/কোরসার্ভিসেস/বুটএক্স, বুট লোডার। BootX কার্নেল লোড করে এবং OS ব্যাজগুলিও আঁকে, যদি থাকে।
  • BootX ডিভাইস ড্রাইভারের পূর্বে ক্যাশ করা তালিকা লোড করার চেষ্টা করে (/usr/sbin/kextcache দ্বারা তৈরি/আপডেট করা হয়েছে)। এই ধরনের ক্যাশে mkext এবং একাধিক কার্নেল এক্সটেনশনের জন্য তথ্য অভিধান এবং বাইনারি ফাইল ধারণ করে। মনে রাখবেন যে যদি mkext ক্যাশে দূষিত বা অনুপস্থিত হয়, তাহলে BootX /System/Library/Extensions বর্তমান পরিস্থিতিতে প্রয়োজনীয় এক্সটেনশনগুলির জন্য দেখবে (যেমন দ্বারা নির্ধারিত এক্সটেনশনের বান্ডেলের OSBundleRequired সম্পত্তির মান Info.plist ফাইলে।
  • init কার্নেলের রুটিন সম্পাদিত হয়। বুটিং সিস্টেমের রুট ডিভাইস নির্ধারিত হয়। এই মুহুর্তে, ফার্মওয়্যার আর অ্যাক্সেসযোগ্য নয়৷
  • বিভিন্ন Mach/BSD ডাটা স্ট্রাকচার কার্নেল দ্বারা আরম্ভ করা হয়।
  • I/O কিট শুরু করা হয়েছে।
  • কার্ণেল শুরু হয় /sbin/mach_init, Mach সার্ভিস নামকরণ (বুটস্ট্র্যাপ) ডেমন। mach_init পরিষেবার নাম এবং ম্যাক পোর্টগুলির মধ্যে ম্যাপিং বজায় রাখে যা এই পরিষেবাগুলিতে অ্যাক্সেস প্রদান করে।

এখান থেকে, স্টার্টআপটি ব্যবহারকারী-স্তরে পরিণত হবে:

  • mach_init শুরু হয়েছে /sbin/init, ঐতিহ্যবাহী BSD init প্রক্রিয়া। init রানলেভেল নির্ধারণ করে, এবং চালায় /etc/rc.boot, যা একক-ব্যবহারকারী চালানোর জন্য যথেষ্ট মেশিন সেট আপ করে।

এটি কার্যকর করার সময়, rc.বুট এবং অন্যটি rc স্ক্রিপ্ট সোর্স /etc/rc.common , একটি শেল স্ক্রিপ্ট যাতে ইউটিলিটি ফাংশন থাকে, যেমন CheckForNetwork() (নেটওয়ার্ক চালু আছে কিনা তা পরীক্ষা করে), GetPID (), purgedir() (শুধুমাত্র ডিরেক্টরি বিষয়বস্তু মুছে দেয়, গঠন নয়), ইত্যাদি।

  • rc.boot বুটের ধরন (মাল্টি-ইউজার, সেফ, সিডি-রম, নেটওয়ার্ক ইত্যাদি)। নেটওয়ার্ক বুটের ক্ষেত্রে (sysctl ভেরিয়েবল kern.netboot সেট করা হবে 1 যে ক্ষেত্রে), এটি চলে /etc/rc.netboot একটি শুরু যুক্তি।

/etc/rc.netboot নেটওয়ার্ক বুটিংয়ের বিভিন্ন দিক পরিচালনা করে। উদাহরণস্বরূপ, এটি নেটওয়ার্ক এবং (যদি থাকে) স্থানীয় মাউন্টগুলি সম্পাদন করে। এটি /usr/bin/nbst রুট ডিভাইস হিসাবে ব্যবহৃত ডিস্ক ইমেজের সাথে একটি শ্যাডো ফাইল সংযুক্ত করতেও কল করে।ধারণাটি হল শ্যাডো ফাইলে লেখাগুলি পুনঃনির্দেশ করা, যা আশা করা যায় স্থানীয় স্টোরেজে রয়েছে।

  • rc.boot ফাইল সিস্টেমের সামঞ্জস্যতা পরীক্ষা প্রয়োজন কিনা তা বের করে। একক-ব্যবহারকারী এবং CD-ROM বুট fsck চালায় না। SafeBoot সর্বদা fsck চালায়। rc.boot fsck এর রিটার্ন স্ট্যাটাসও পরিচালনা করে।
  • যদি rc.boot সফলভাবে প্রস্থান করে, /etc/rc , মাল্টি-ইউজার স্টার্টআপ স্ক্রিপ্ট তারপর চালানো হয়। যদি একটি CD-ROM থেকে বুট করা হয়, স্ক্রিপ্টটি /etc/rc.cdrom (ইনস্টলেশন)এ সুইচ করে।
  • /etc/rc মাউন্ট স্থানীয় ফাইল সিস্টেম (HFS+, HFS, UFS, /dev/ fd, /.vol), নিশ্চিত করে যে ডিরেক্টরি /private/var/tmp বিদ্যমান, এবং চালায় /etc/rc.installer_cleanup, যদি একটি বিদ্যমান থাকে (রিবুট করার আগে একটি ইনস্টলার দ্বারা বাকি থাকে)।
  • /etc/rc.cleanup চালানো হয়। এটি অনেকগুলি ইউনিক্স এবং ম্যাক নির্দিষ্ট ডিরেক্টরি/ফাইল "পরিষ্কার" করে৷
  • BootCache শুরু হয়েছে।
  • বিভিন্ন sysctl ভেরিয়েবল সেট করা আছে (যেমন সর্বোচ্চ সংখ্যক vnodes, System V IPC, ইত্যাদি)। যদি /etc/sysctl.conf বিদ্যমান থাকে (প্লাস /etc/sysctl-macosxserver.conf Mac OS X সার্ভারে), এটি পড়া হয় এবং sysctl এতে থাকা ভেরিয়েবল সেট করা হয়।
  • syslogd শুরু হয়েছে।
  • Mach প্রতীক ফাইল তৈরি করা হয়েছে।
  • /etc/rc শুরু হয় kextd, ডেমন প্রক্রিয়া যা কার্নেল বা ক্লায়েন্ট প্রসেসের চাহিদা অনুযায়ী কার্নেল এক্সটেনশন লোড করে।
  • /usr/libexec/register_mach_bootstrap_servers / এর মধ্যে থাকা বিভিন্ন ম্যাক বুটস্ট্র্যাপ ভিত্তিক পরিষেবা লোড করার জন্য চালানো হয় etc/mach_init.d
  • portmap এবং netinfo শুরু হয়েছে।
  • যদি /System/Library/Extensions.mkext এর চেয়ে পুরানো হয় /System/Library/Extensions , /etc/rc বিদ্যমান mkext মুছে একটি নতুন তৈরি করে। এটি একটি তৈরি করে যদি একটি বিদ্যমান না থাকে৷
  • /etc/rc শুরু হয় /usr/sbin/update , ডেমন যা অভ্যন্তরীণ ফাইল সিস্টেম ক্যাশে ঘন ঘন ডিস্কে ফ্লাশ করে।
  • /etc/rc ভার্চুয়াল মেমরি সিস্টেম শুরু করে। /private/var/vm অদলবদল ডিরেক্টরি হিসাবে সেট আপ করা হয়েছে। /sbin/dynamic_pager যথাযথ আর্গুমেন্ট দিয়ে শুরু করা হয়েছে (অদলবদল ফাইলের নাম পাথ টেমপ্লেট, সোয়াপ ফাইলের আকার, উচ্চ এবং নিম্ন জল সতর্কতা ট্রিগারগুলি নির্দিষ্ট করে যে কখন অতিরিক্ত সোয়াপ তৈরি করতে হবে ফাইল বা বিদ্যমান ফাইল মুছে দিন)।
  • /etc/rc শুরু হয় /usr/libexec/fix_prebindingভুলভাবে প্রিবাউন্ড বাইনারি ঠিক করতে।
  • /etc/rc executes /etc/rc.cleanupফাইল এবং ডিভাইস পরিষ্কার এবং রিসেট করতে।
  • /etc/rc অবশেষে চালু হয়েছে /sbin/SystemStarter /System/Library/StartupItems এবং /Library/StartupItems থেকে স্টার্টআপ আইটেম পরিচালনা করতে একটি StartupItem হল একটি প্রোগ্রাম, সাধারণত একটি শেল স্ক্রিপ্ট, যার নাম ফোল্ডারের নামের সাথে মেলে। ফোল্ডারটিতে একটি সম্পত্তি তালিকা ফাইল রয়েছে যাতে কী-মানের জোড়া রয়েছে যেমন Description, প্রদান করে, প্রয়োজন, OrderPreference, স্টার্ট/স্টপ মেসেজ ইত্যাদি। আপনি চালাতে পারেন SystemStarter -n -D রুট হিসেবে প্রোগ্রাম প্রিন্ট ডিবাগিং এবং ডিপেন্ডেন্সি ইনফরমেশন (আসলে কিছু না চালিয়ে)।
  • CoreGraphics স্টার্টআপ আইটেম অ্যাপল টাইপ সার্ভিসেস ডেমন শুরু করে (ATSServer ) পাশাপাশি উইন্ডো সার্ভার (WindowServer)।

এবং তারপর আপনার ম্যাক বুট করা হয়েছে!

আপনি ভারবোস মোডের মাধ্যমে এই কার্যকলাপের কিছুটা নিজেই দেখতে পারেন (যা আপনি প্রতি বুটে ভার্বোস মোডে বুট করতে পারেন, অথবা আপনি যদি সবসময় দেখতে চান তবে আপনি একটি ম্যাককে সবসময় ভার্বোস মোডে বুট করার জন্য সেট করতে পারেন) ইউনিক্স শৈলী বুট), কিন্তু এটি একটি সুন্দর পুঙ্খানুপুঙ্খ ব্যাখ্যা৷

Apple-এর ম্যাক বুট প্রক্রিয়ার কিছু ডকুমেন্টেশনও রয়েছে এখানে তাদের ডেভেলপার ডকুমেন্টাইটন লাইব্রেরিতে পাওয়া যায়।

উল্লেখ্য যে উপরের তথ্য প্রদানকারী মূল URLটি আর সক্রিয় নেই, এইভাবে পোস্টটি ক্যাশের মাধ্যমে উত্তরসূরির জন্য উপরে অন্তর্ভুক্ত করা হয়েছে। মূল উৎসটি নিম্নলিখিত url-এ KernelThread-এ একটি থ্রেড ছিল: http://www.kernelthread.com/mac/osx/arch_startup.html যা বর্তমানে অফলাইন এবং একটি নতুন অবস্থানে পুনঃনির্দেশিত হয় না।

আপনার যদি ম্যাক ওএস এক্স বুট সিকোয়েন্সে যোগ করার জন্য কোনো টিডবিট বা অন্যান্য সংযোজন থাকে, তাহলে মন্তব্যে শেয়ার করুন!

Mac OS X বুট প্রসেসে কি হয়?