ലിനക്സ് കുറിപ്പുകൾ/ലിനക്സ് സിസ്റ്റം സ്റ്റാർട്ടപ്പ്

ഒരു ലിനക്സ് സിസ്റ്റം പ്രവർത്തനമാരംഭിക്കുന്ന പ്രക്രിയ ആണ് ഈ പോസ്റ്റിൽ വിശദീകരിക്കാൻ ശ്രമിക്കുന്നത്. പ്രധാനമായും ഇന്റൽ x86 പ്രോസസ്സർ അടിസ്ഥാനമാക്കിയുള്ള ഒരു പിസിയിലും ARM പ്രോസസ്സർ അധിഷ്ഠിത സിസ്റ്റത്തിലും എങ്ങനെ ഒരു ലിനക്സ് സിസ്റ്റം ബൂട്ട് ചെയ്യുന്നു എന്ന് നോക്കാം.

സാധാരണ ഇന്റൽ പ്രോസസ്സർ (ഇത് നിർമ്മിക്കുന്നത് ഇന്റൽ തന്നെ ആകണമെന്നില്ല. ഇന്റൽ x86, x86_64 ഒരു ആർക്കിട്ടെക്ചർ ആണ്. എഎംഡി യും ഇതേ ആർക്കിട്ടെക്ചറിൽ പ്രോസസ്സറുകൾ നിർമ്മിക്കുന്നുണ്ട്) അധിഷ്ഠിതമായ പേഴ്സണൽ കമ്പ്യൂട്ടറുകൾ ഒക്കെ ഐബിഎം പിസി മാനദണ്ഡങ്ങൾ പാലിക്കുന്നവ ആണ്. ഇതിൽ ഓപ്പറേറ്റിങ്ങ് സിസ്റ്റത്തിന്റെ ലോഡിങ്ങ്, ബൂട്ടിങ്ങ് ഒക്കെ പ്രതിപാദിച്ചിട്ടുണ്ട്. എന്നാൽ ആം പ്രോസസ്സറുകൾ ഉപയോഗിക്കുന്ന കമ്പ്യൂട്ടറുകൾക്ക് ഇതുപോലെ വ്യക്തമായ ഒരു മാനദണ്ഡം ഒന്നുമില്ല. ഓരോന്നിലും ഓരോ രീതിയിൽ ആയിരിക്കും ബൂട്ടിങ്ങ്. ഈ വ്യത്യാസങ്ങൾ ഒക്കെ ലിനക്സ് കെർണൽ/മറ്റേതെങ്കിലും ഓപ്പറേറ്റിങ്ങ് സിസ്റ്റം ലോഡ് ചെയ്യുന്നത് വരെ മാത്രമേ കാണുകയുള്ളു. അതിനാൽ തന്നെ ലിനക്സിന്റെ സ്റ്റാർട്ടപ്പ് എല്ലാ സിസ്റ്റങ്ങളിലും ഒരുപോലെ തന്നെ ആയിരിക്കും.

ഒരു പിസി ഓൺ ചെയ്യുമ്പോൾ ആദ്യമായി പ്രവർത്തിച്ചുതുടങ്ങുക അതിലെ ബയോസ് (BIOS) ആണ്. ബയോസ് ആ കമ്പ്യൂട്ടറിൽ ഘടിപ്പിച്ചിരിക്കുന്ന ഉപകരണങ്ങളെ പ്രവർത്തിപ്പിക്കാൻ ആരംഭിക്കുകയും അവയുടെ പ്രവർത്തനത്തെ സംബന്ധിച്ച ചില അടിസ്ഥാന പരിശോധനകൾ നടത്തുകയും ചെയ്യുന്നു. ഇതിനെ പവർ ഓൺ സെൽഫ് ടെസ്റ്റ് (POST) എന്ന് വിളിക്കുന്നു. പോസ്റ്റിനു ശേഷം ബയോസ് സിസ്റ്റത്തിൽ ഘടിപ്പിച്ചിരിക്കുന്ന ഡിസ്കുകൾ പരിശോധിക്കുന്നു. അവയിലേതെങ്കിലും ഒരു ഓപ്പറേറ്റിങ്ങ് സിസ്റ്റം ഉൾക്കൊള്ളുന്നുണ്ടോ എന്നറിയാനാണ് ഈ പരിശോധന. അങ്ങനെ ഉള്ള ഡിസ്കുകളുടെ മാസ്റ്റർ ബൂട്ട് റെക്കോഡിൽ (MBR) ബൂട്ടബിൾ എന്ന് രേഖപ്പെടുത്തിയിരിക്കും. ഏതൊക്കെ ഡിസ്ക് ഡ്രൈവുകൾ ഏത് ക്രമത്തിൽ പരിശോധിക്കണം എന്ന് ക്രമീകരിക്കാനുള്ള സൗകര്യങ്ങൾ ആധുനിക ബയോസുകൾ എല്ലാം നൽകുന്നുണ്ട്. ബൂട്ടബിൾ ആയ ഡിസ്കുകളുടെ മാസ്റ്റർ ബൂട്ട് റെക്കോഡിൽ അതിലുള്ള ഓപ്പറേറ്റിങ്ങ് സിസ്റ്റത്തെ മെമ്മറിയിലേക്ക് കൊണ്ടുവരാനുള്ള പ്രോഗ്രാം ഉണ്ടായിരിക്കും. കൂടുതൽ വിശദീകരണം ഇവിടെ. ബയോസ് ഈ പ്രോഗ്രാമിനെ ഡിസ്കിൽ നിന്ന് വായിച്ച് കമ്പ്യൂട്ടറിന്റെ റാമിൽ മുൻകൂട്ടി നിശ്ചയിക്കപ്പെട്ട ഒരു മെമ്മറി വിലാസത്തിലേക്ക് പകർത്തുന്നു. അതിനുശേഷം ആ വിലാസത്തിലുള്ള നിർദ്ദേശങ്ങൾ പാലിക്കാൻ പ്രോസസ്സറിനോട് ആവശ്യപ്പെടുന്നു. ഇത്രയുമാണ് ബൂട്ടിങ്ങ് സമയത്തെ ബയോസിന്റെ കടമകൾ. റാമിൽ പകർത്തപ്പെട്ട ഈ പ്രോഗ്രാം ബൂട്ട് ലോഡർ എന്നറിയപ്പെടുന്നു. ഇന്ന് ബൂട്ട് ലോഡറുകൾ പല ഘട്ടങ്ങളായി ആണ് പ്രവർത്തിക്കുക. അതിനാൽ ബയോസ് ലോഡ് ചെയ്യുന്ന ഈ ചെറിയ ഭാഗത്തെ ബൂട്ട് ലോഡറിന്റെ ഒന്നാം ഘട്ടം എന്ന് വിളിക്കാം. ഈ ഒന്നാം ഭാഗത്തിന്റെ ജോലി ഡിസ്കിൽ നിന്ന് അല്പം കൂടി വലിപ്പമുള്ള രണ്ടാം ഘട്ട പ്രോഗ്രാമിനെ റാമിലേക്ക് പകർത്തൽ ആണ്. പിസി മാനദണ്ഡങ്ങൾ അടിസ്ഥാനമാക്കി പ്രവർത്തിക്കുന്ന ബയോസ് ആദ്യഘട്ടത്തിൽ ഡിസ്കിന്റെ എംബിആറിൽ നിന്ന് 512 ബൈറ്റുകൾ മാത്രമേ വായിക്കൂ എന്നതിനാലാണ് ഈ രീതി ആവശ്യമായി വരുന്നത്.

ആം പ്രോസസ്സർ അധിഷ്ഠിതമായ സിസ്റ്റങ്ങൾ ബൂട്ടിങ്ങിനായി പ്രത്യേക മാനദണ്ഡങ്ങൾ ഒന്നും ഉപയോഗിക്കുന്നില്ലെങ്കിലും ഈ പ്രവർത്തനം മിക്കവാറും സിസ്റ്റങ്ങളിൽ സമാനമാണ്. മിക്ക ആം അധിഷ്ഠിത സിസ്റ്റങ്ങളും ആം അധിഷ്ഠിത എസ്ഒ‌സി (സിസ്റ്റം ഓൺ ചിപ്പ്) ആണ് ഉപയോഗിക്കപ്പെടുന്നത്. ടിഐ ഒമാപ് (TI OMAP), ക്വാൽക്കോം സ്നാപ്‌ഡ്രാഗൺ, സാംസങ്ങ് എക്സിനോസ് തുടങ്ങിയവ ഒക്കെ പ്രസിദ്ധമായ ചില ആം അധിഷ്ഠിത എസ് ഓ സി കൾ ആണ്. എസ് ഓ സി യിൽ പ്രോസസ്സർ കോർ, റാം, റോം, ഐ/ഒ കണ്ട്രോളറുകൾ തുടങ്ങിയവ എല്ലാം ഒരൊറ്റ ചിപ്പിൽ തന്നെ ഉൾക്കൊള്ളിച്ചിരിക്കും. ഇവയിൽ എല്ലാം ഒരു റീഡ് ഒൺലി മെമ്മറിയിൽ ബൂട്ട് റോം എന്ന പേരിൽ ഒരു ചെറിയ പ്രോഗ്രാം ഉണ്ടാകും. ഈ ബൂട്ട് റോം പിസിയിലെ ബയോസിന് സമാനമാണെന്ന് പറയാം. എന്നാൽ ബൂട്ടിങ്ങിനു ശേഷം അനുബന്ധ ഉപകരണങ്ങളെ പ്രവർത്തിപ്പിക്കാൻ ഈ ബൂട്ട് റോമിന്റെ ആവശ്യമില്ല. മിക്കവാറും ഒരു ബൂട്ട് ലോഡറിനെയോ പ്രോഗ്രാമിനെയോ പ്രവർത്തിപ്പികുക, ഡിസ്കിൽ നിന്നോ മെമ്മറി കാർഡിൽ നിന്നോ, സീരിയൽ/യുഎസ്ബി ഇന്റർഫേസുകളിൽ നിന്നോ പ്രോഗ്രാമുകൾ/ഡാറ്റ സ്വീകരിച്ച് ഫ്ലാഷ് മെമ്മറിയിലേക്ക് എഴുതുക തുടങ്ങിയ പല കാര്യങ്ങൾ ബൂട്ട് റോമുകൾ പിന്തുണക്കാറുണ്ട്. ഇതിന്റെ പ്രവർത്തനത്തിനായുള്ള ക്രമീകരണങ്ങൾ പിന്നുകളും ജമ്പറുകളും ഉപയോഗിച്ചാണ് ചെയ്യാറ്. ഒരു ആം അധിഷ്ഠിത ഡെവലപ്പ്മെന്റ് ബോർഡ് വാങ്ങിയാൽ എസ് ഡി കാർഡിൽ നിന്ന് ബൂട്ട് ചെയ്യാൻ, യു എസ് ബി യിൽ നിന്ന് ബൂട്ട് ചെയ്യാൻ എന്നിങ്ങനെ ജമ്പർ ക്രമീകരണങ്ങൾ അതിൽ പ്രതിപാദിച്ചിരിക്കും. (നിർബന്ധമില്ല). മൊബൈൽ ഫോണുകളിലും മറ്റും ഓപ്പറേറ്റിങ്ങ് സിസ്റ്റം, ബൂട്ട് ലോഡർ തുടങ്ങിയവ ഉണ്ടാവുക ഫ്ലാഷ് മെമ്മറിയിൽ ആയിരിക്കും. ചില ബോർഡുകൾ എസ് ഡി കാർഡുകളും ഉപയോഗിക്കാറുണ്ട്. പവർ ഓൺ ചെയ്യുമ്പോൾ ആദ്യം എസ് ഓ സി യിലെ ബൂട്ട് ലോഡർ എസ് ഡി/ഫ്ലാഷ് കണ്ട്രോളറുകൾ പ്രവർത്തനക്ഷമമാക്കുകയും ബോർഡിൽ ആവശ്യമായ ക്രമീകരണങ്ങൾ നടത്തുകയും ചെയ്യും. അതിനുശേഷം ഫ്ലാഷ്/എസ് ഡി കാർഡിൽ നിന്ന് ബൂട്ട് ലോഡർ റാമിലേക്ക് പകർത്തുകയും അതിനെ പ്രവർത്തിപ്പിക്കുകയും ചെയ്യും.

ശേഷമുള്ള ഭാഗങ്ങൾ മിക്കവാറും എല്ലാ സിസ്റ്റങ്ങളിലും ഒരുപോലെ ആണ്. ഗ്രബ്, ലിലോ, യു-ബൂട്ട്, റെഡ് ബൂട്ട് തുടങ്ങിയവ ഇന്ന് വ്യാപകമായി ഉപയോഗിക്കപ്പെടുന്ന ചില ബൂട്ട് ലോഡറുകൾ ആണ്. ഗ്രബ്, ലിലോ തുടങ്ങിയവ സാധാരണയായി പിസിയിലും യു-ബൂട്ട് പോലുള്ളവ എംബെഡ്ഡഡ് ഉപകരണങ്ങളിലും ഉപയോഗിച്ച് വരുന്നു. ലിനക്സ് കെർണലിന് പ്രവർത്തിക്കാനാവശ്യമായ സാഹചര്യങ്ങൾ ഒരുക്കുക, അതിനെ മെമ്മറിയിലേക്ക് പകർത്തുക, പ്രോസസ്സറിനോട് അതിനെ പ്രവർത്തിപ്പിക്കാൻ ആവശ്യപ്പെടുക എന്നിവയാണ് പൊതുവേ ബൂട്ട് ലോഡറിന്റെ കടമകൾ. മിക്കവാറും ബൂട്ട് ലോഡറുകൾ ഈ സമയത്ത് ഒരു കമാന്റ് പ്രോംപ്റ്റ് നൽകാറുണ്ട്. ബൂട്ട് ലോഡർ പ്രോഗ്രാം പിന്തുണക്കുന്ന വിവിധ നിർദ്ദേശങ്ങൾ ഉപയോക്താവിന് ഇവിടെ ഉപയോഗിക്കാൻ സാധിക്കും. ഇത് വഴി ഏത് കെർണലാണ് പ്രവർത്തിപ്പിക്കേണ്ടത്, എന്തൊക്കെ വിവരങ്ങളാണ് കെർണലിനു നൽകണ്ടത് തുടങ്ങിയ വിവരങ്ങൾ ഉപയോക്താവിന് പരാമാർശിക്കാം. യു-ബൂട്ട് പോലുള്ള ബൂട്ട് ലോഡറുകൾ ഫ്ലാഷ് മെമ്മറിയിലെ വിവരങ്ങൾ മായിച്ച് കളയാനും പുതിയവ ചേർക്കാനും ഉള്ള സൗകര്യങ്ങളും നൽകുന്നുണ്ട്. ഈ സമയത്ത് ഉപയോക്താവിനായി കമാന്റ് പ്രോംപ്റ്റ് തുറക്കാൻ ആവശ്യമായ ഉപകരണങ്ങൾ കൂടി പ്രവർത്തിപ്പിക്കാനുള്ള വിവരങ്ങൾ (ഡ്രൈവറുകൾ) ബൂട്ട് ലോഡറിൽ ഉണ്ടായിരിക്കണം. യു എസ് ബി, സീരിയൽ പോർട്ട്, നെറ്റ്വർക്ക് ഇന്റർഫേസ് കാർഡ് തുടങ്ങിയവ ഒക്കെ മിക്കവാറും ബൂട്ട് ലോഡറുകൾക്ക് പ്രവർത്തിപ്പിക്കാൻ സാധിക്കും.

ലിനക്സ് കെർണൽ ഒരു മോണോലിത്തിക്ക് കെർണലാണ്. കമ്പൈൽ ചെയ്യപ്പെട്ട കെർണൽ ഒരൊറ്റ എക്സിക്യൂട്ടബിൾ ഫയൽ ആയിരിക്കും. ഈ ഫയൽ ഇ എൽ എഫ് ഫോർമാറ്റിൽ ആയിരിക്കും ഉണ്ടാവുക. മാത്രമല്ല വലിപ്പം കുറക്കാൻ ഇത് കമ്പ്രസ്സും ചെയ്തിരിക്കും. യു-ബൂട്ട് ബൂട്ട് ലോഡർ ആണ് ഉപയോഗിക്കുന്നതെങ്കിൽ അതിന് മനസ്സിലാകുന്ന യു ഇമേജ് എന്ന ഫോർമാറ്റിൽ ആയിരിക്കും കെർണൽ. ഇതിനെ ഡിസ്കിൽ നിന്ന് വായിച്ചെടുത്ത് മെമ്മറിയിലേക്ക് പകർത്തിയ ശേഷം അതിലെ ഇ എൽ എഫ് വിവരങ്ങൾ അനുസരിച്ച് അതിലെ വിവിധ സെഗ്മെന്റുകൾ മെമ്മറിയിൽ ക്രമീകരിക്കേണ്ടതുണ്ട്. ഇതും ബൂട്ട് ലോഡറിന്റെ കടമയാണ്. ലിനക്സ് കെർണലിനു മാത്രമല്ല, എല്ലാ എക്സിക്യൂട്ടബിൾ ഫയലുകൾക്കും പ്രവർത്തിക്കാൻ ഈ സഹായം ആവശ്യമാണ്. ലിനക്സ് കെർണൽ പ്രവർത്തിച്ച് തുടങ്ങിയാൽ കെർണൽ ഇത് ചെയ്തുകൊള്ളും.

ബൂട്ട് ലോഡർ ലിനക്സ് കെർണലിനെ മെമ്മറിയിൽ ക്രമീകരിച്ചതിനു ശേഷം നിയന്ത്രണം കെർണലിനു കൈമാറുന്നു. ഇവിടെ നിന്ന് സിസ്റ്റത്തിന്റെ പൂർണ്ണ നിയന്ത്രണം കെർണലിനായിരിക്കും.

ലിനക്സ് കെർണൽ ഇമേജ് കമ്പ്രസ്സ്ഡ് ആയിരിക്കും എന്ന് നേരത്തേ പറഞ്ഞിരുന്നല്ലോ. സാധാരണ കമ്പ്യൂട്ടറുകളിൽ /boot ഡയറക്ടറിയിൽ ഉള്ള കെർണൽ ഇമേജ് (vmlinuz) ഒരു ഡീ-കമ്പ്രസ്സർ പ്രോഗ്രാമിൽ ലിനക്സ് കെർണൽ ഇമേജ് കൂടി ഉൾപ്പെടുത്തിയ ഫയൽ ആണ്. ബൂട്ട് ലോഡർ ഈ ഇമേജിനെ മെമ്മറിയിൽ പകർത്തിയതിനുശേഷം അതിന്റെ പ്രവർത്തിപ്പിച്ച് തുടങ്ങുമ്പോൾ ഈ ഡീ-കമ്പ്രസ്സർ ആണ് ആദ്യം പ്രവർത്തിക്കുന്നത്. ബൂട്ട് ലോഡർ പ്രവർത്തനക്ഷമമാക്കി വച്ച സീരിയൽ പോർട്ടോ ഡിസ്പ്ലേ ഡിവൈസോ ആയിരിക്കും ഈ സമയത്ത് കെർണൽ ഉപയോഗിക്കുന്നത്. ഡീ കമ്പ്രസ്സ് ചെയ്ത ലിനക്സ് കെർണൽ മെമ്മറിയിൽ മുൻകൂട്ടി നിശ്ചയിക്കപ്പെട്ട സ്ഥലത്തായിരിക്കും ഉണ്ടാവുക. ഡീ കമ്പ്രഷൻ പൂർണ്ണമായ ശേഷം ഈ മെമ്മറി അഡ്രസ്സിൽ നിന്ന് പ്രവർത്തനം പുനരാരംഭിക്കപ്പെടുന്നു. എല്ലാ സി പ്രോഗ്രാമുകൾക്കും പ്രവർത്തിക്കുന്നതിനാവശ്യമായ ചുറ്റുപാടുകൾ കെർണലിനും ആവശ്യമാണല്ലോ. സ്റ്റാക്ക്, ഹീപ്പ് തുടങ്ങിയവ ഒക്കെ ആദ്യം ബൂട്ട് ലോഡർ തയ്യാറാക്കുമെങ്കിലും അത് ഡീ കമ്പ്രസ്സറിന്റെ ഉപയോഗത്തിനു വേണ്ടി ആണ്. ലിനക്സ് കെർണലിന് പ്രവർത്തിക്കാനാവശ്യമായ സ്റ്റാക്ക്, ഹീപ്പ് തുടങ്ങിയവ ഒക്കെ തയ്യാറാക്കുന്നത് ഡീ കമ്പ്രസ്സർ പ്രോഗ്രാം ആണ്. ഇതും ലിനക്സ് കെർണൽ സോഴ്സ് കോഡിന്റെ ഭാഗം തന്നെ ആണ്.

കെർണൽ പ്രവർത്തനമാരംഭിച്ചാൽ ആദ്യം ചെയ്യുന്നത് അത് പ്രവർത്തിക്കുന്ന കമ്പ്യൂട്ടർ ആർക്കിട്ടെക്ചറിന് പ്രത്യേകമായുള്ള ക്രമീകരണങ്ങൾ ആയിരിക്കും. സാധാരണ ഇന്റൽ പ്രോസസ്സർ അധിഷ്ഠിതമായ കമ്പ്യൂട്ടറുകളിൽ ഇത് സമാനമായിരിക്കുമെങ്കിലും ലിനക്സ് പ്രവർത്തിക്കുന്ന ഓരോ വ്യത്യസ്ത ആർക്കിട്ടെക്ചറിലും ഇത് വ്യത്യസ്തമായിരിക്കും. വ്യത്യസ്ത ആം പ്രോസസ്സറുകൾ അടിസ്ഥാനമാക്കിയുള്ള് ഉപകരണങ്ങളിൽ പോലും ഇത് വ്യത്യസ്തമായിരിക്കും. പ്രവർത്തിക്കുന്ന ഉപകരണത്തെക്കുറിച്ചുള്ള വിവരങ്ങൾ ലിനക്സിനു നൽകുന്നത് ബൂട്ട് ലോഡർ ആണ്. ആം അധിഷ്ഠിത ഉപകരണങ്ങളിൽ ബൂട്ട് ലോഡർ ATAGS എന്ന ഒരു സ്ട്രക്ചറിൽ ആയിരിക്കും ഈ വിവരങ്ങൾ കൈമാറുന്നത്. എല്ലാ ഉപകരണങ്ങളിലും ബൂട്ട് ലോഡർ ലിനക്സ് കെർണലിന് കമാന്റ് ലൈൻ ആർഗ്യുമെന്റ്സ് കൈമാറിയിരിക്കും. സാധാരണ ടെർമിനലിൽ പ്രോഗ്രാമുകൾ ഉപയോഗിക്കുമ്പോൾ അവക്ക് നൽകുന്ന ആർഗ്യുമെന്റിന് സമാനമാണിത്. ലിനക്സ് റൂട്ട് ഫയൽ സിസ്റ്റം ഉൾക്കൊള്ളുന്ന ഡിസ്ക്, ബൂട്ടിങ്ങ് സമയത്ത് സീരിയൽ കൺസോളായി ഉപയോഗിക്കേണ്ട ഉപകരണം, ഉപകരണത്തിൽ ലഭ്യമായ മെമ്മറി തുടങ്ങി വിവിധ വിവരങ്ങൾ ഇതിൽ ഉണ്ടായിരിക്കും. ഇത് ഉപകരണങ്ങൾക്കനുസരിച്ച് മാറിക്കൊണ്ടിരിക്കുകയും ചെയ്യും. ഇതിലെ ഒരു പ്രധാനപ്പെട്ട ഭാഗം വിർച്ച്വൽ മെമ്മറി ഉപയോഗത്തിനാവശ്യമായ സെഗ്മെന്റുകളും പേജുകളും ഹാർഡ്‌വെയറും ക്രമീകരിക്കുക എന്നതാണ്. മെമ്മറി മാനേജ്മെന്റ് യൂണിറ്റ് എല്ലാ ആധുനിക പ്രോസസ്സറുകളുടെയും ഭാഗമാണ്. ഇന്റൽ പ്രോസസ്സറുകളിൽ ഈ സമയത്ത് സിപിയു റിയൽ മോഡിൽ നിന്നും പ്രൊട്ടക്റ്റഡ് മോഡിലേക്കും മാറുന്നു.

ഉപകരണത്തിനാവശ്യമായ പ്രത്യേക ക്രമീകരണങ്ങൾക്ക് ശേഷം കെർണൽ സിസ്റ്റത്തിലെ വിവിധ ഉപകരണങ്ങളെ പ്രവർത്തനസജ്ജമാക്കുവാൻ ആരംഭിക്കുന്നു. ലിനക്സ് ഡിവൈസ് ഡ്രൈവറുകൾ രണ്ട് രീതിയിൽ കെർണലിലേക്ക് ചേർക്കാൻ സാധിക്കും. ഒന്ന് കെർണൽ കമ്പൈലേഷൻ സമയത്ത് കെർണലിൽ ഇമേജിൽ തന്നെ ഉൾപ്പെടുത്തുക, രണ്ട്, മൊഡ്യൂളുകൾ ആയി കമ്പൈൽ ചെയ്ത് കെർണൽ പ്രവർത്തിക്കുന്ന സമയത്ത് അതിലേക്ക് ചേർക്കുക. ആദ്യത്തെ രീതിയിൽ ഇമേജിൽ ഉൾപ്പെടുത്തിയിരിക്കുന്ന ഡ്രൈവറുകൾ ഈ ഘട്ടത്തിൽ പ്രവർത്തനസജ്ജമാക്കപ്പെടുന്നു. ഉപകരണങ്ങൾ ക്രമീകരിച്ചതിനു ശേഷം കെർണൽ അതിന്റെ പ്രവർത്തനത്തിന്റെ മൂന്നാം ഘട്ടത്തിലേക്ക് പ്രവേശിക്കുന്നു.

ഡീ കമ്പ്രസ്സിങ്ങ്, പ്രത്യേക ക്രമീകരണങ്ങൾ എന്നീ ഘട്ടങ്ങൾ ഓരോ ഉപകരണത്തിലും ഓരോ രീതിയിൽ ആണെങ്കിലും ശേഷമുള്ള മൂന്നാം ഭാഗം എല്ലാ ഉപകരണങ്ങളിലും ഒരുപോലെ ആണ്. ഇതിനെ ഹാർഡ്‌വെയർ ഇൻഡിപ്പൻഡന്റ് എന്ന് പറയാം. ഈ ഭാഗത്ത് കെർണൽ ആദ്യം ചെയ്യുന്നത് പ്രോസസ്സുകൾ ആരംഭിക്കാൻ ആവശ്യമായ ക്രമീകരണങ്ങൾ നടത്തുകയാണ്. ഈ ഘട്ടത്തിൽ എത്തുമ്പോൾ കമ്പ്യൂട്ടറിൽ ഒരു പ്രോസസ്സ് മാത്രമേ ഉണ്ടാവുകയുള്ളു. ഇതിന്റെ പി ഐ ഡി 0 ആയിരിക്കും. ഇത് ലിനക്സ് കെർണൽ പ്രോസസ്സ് ആണ്. ഇതിനെ സ്വാപ്പർ (Swapper) എന്നും വിളിക്കാറുണ്ട്. പ്രോസസ്സ് ടേബിൾ, ഷെഡ്യൂളിങ്ങിനാവശ്യമായ വിവരങ്ങൾ എന്നിവ ക്രമീകരിച്ച ശേഷം ലിനക്സ് കെർണൽ ആദ്യത്തെ യൂസർ പ്രോസസ്സ് ആരംഭിക്കുന്നു. ഇതാണ് ഇനിറ്റ് പ്രോസസ്സ്. ഇനിറ്റ് പ്രോസസ്സിന്റെ പി ഐ ഡി 1 ആയിരിക്കും. ഇനിറ്റ് ആരംഭിക്കുന്ന പ്രോസസ്സുകളുടെയും പേരന്റ് പ്രോസസ്സ് പ്രവർത്തനം അവസാനിപ്പിച്ച ചൈൽഡ് പ്രോസസ്സുകളുടെയും പേരന്റ് പ്രോസസ്സ് ഇനിറ്റ് ആണ്. ലിനക്സ് കെർണൽ നേരിട്ട് സൃഷ്ടിക്കുന്ന ഒരു പ്രത്യേക പ്രോസസ്സ് ആണിത്. ഇനിറ്റ് പ്രോസസ്സിന്റെ യൂസർ ഐഡി 0 (റൂട്ട്) ആയിരിക്കും. ഇനിറ്റ് പ്രോസസ്സിന്റെ എക്സിക്യൂട്ടബിൾ സാധാരണയായി /sbin/init ആണ്. മറ്റേതെങ്കിലും എക്സിക്യൂട്ടബിൾ ഇനിറ്റ് ആയി ഉപയോഗിക്കണമെങ്കിൽ ബൂട്ട് ലോഡറിന്റെ കമാന്റ് ലൈൻ ആർഗ്യുമെന്റ് ലിസ്റ്റിൽ init=<ഇനിറ്റ് പ്രോഗ്രാമിന്റെ പാത്ത്> എന്ന് ചേർക്കാവുന്നതാണ്.

ഇനിറ്റ് പ്രോസസ്സ് ആരംഭിക്കുന്നതോടെ എക്സിക്യൂഷൻ കെർണൽ സ്പേസിൽ നിന്ന് യൂസർ സ്പേസിലേക്ക് മാറുന്നു. യൂസർ സ്പേസ് സിസ്റ്റം കോളുകൾ ഉപയോഗിക്കുമ്പോളും ഉപകരണങ്ങളിൽന്നിന്നുള്ള ഇന്ററപ്റ്റുകൾ ഉണ്ടാവുകയും ചെയ്യുമ്പോൾ ആണ് എക്സിക്യൂഷൻ പിന്നീട് കെർണൽ സ്പേസിലേക്ക് മാറുന്നത്.

ഇനിറ്റ് പ്രോസസ്സ് ആണ് ലിനക്സ്/യൂണിക്സ് സിസ്റ്റങ്ങളിലെ ആദ്യത്തെ യൂസർ പ്രോസസ്സ് എന്ന് പറഞ്ഞുവല്ലോ. കെർണൽ കമ്പ്യൂട്ടറിലെ ഹാർഡ്‌‌വെയറിനെ പ്രവർത്തനസജ്ജമാക്കിയ ശേഷം ഉപഭോക്താവിന്‌ കമ്പ്യൂട്ടർ ഉപയോഗിക്കാൻ സജ്ജമാക്കുന്ന വിവിധ ക്രമീകരണങ്ങൾ നടത്തുന്നത് ഇനിറ്റ് പ്രോസസ്സ് ആണ്. ഇതിനായി ഇനിറ്റ് മുൻകൂട്ടി ക്രമീകരിച്ചിരിക്കുന്ന വിവിധ സർവ്വീസുകൾ ആരംഭിക്കുന്നു. യൂണിക്സ് സിസ്റ്റങ്ങളിൽ ഈ സർവ്വീസുകളെ ഡെമോൺ പ്രോസസ്സുകൾ എന്നാണ് വിളിക്കുന്നത്. യൂണിക്സ് കീഴ്‌‌വഴക്കം അനുസരിച്ച് ഈ പ്രോസസ്സുകളുടെ പേരിന്റെ അവസാനം d എന്ന അക്ഷരം ചേർക്കാറുണ്ട്. നിങ്ങളുടെ കമ്പ്യൂട്ടറീലെ ഡെമോൺ പ്രോസസ്സുകൾ ഏതൊക്കെയാണെന്നറിയാൻ ഒരു ടെർമിനൽ തുറന്ന് ps -e എന്ന് ടൈപ്പ് ചെയ്ത് എന്റർ അമർത്തി നോക്കൂ, udevd, syslogd, smbd തുടങ്ങി വിവിധ പ്രോസസ്സുകൾ കാണാൻ സാധിക്കും. ഇനിറ്റ് പ്രോസസ്സ് ഒരിക്കൽ ആരംഭിച്ചാൽ കമ്പ്യൂട്ടർ ഓഫ് ചെയ്യുന്നത് വരെ പ്രവർത്തിച്ചുകൊണ്ടിരിക്കും. ഈ പ്രോസസ്സ് പ്രവർത്തനം അവസാനിപ്പിച്ചാൽ കെർണൽ പാനിക്ക് അവസ്ഥ ഉണ്ടാകുകയും കമ്പ്യൂട്ടർ റീസ്റ്റാർട്ട് ആകുകയും ചെയ്യും. (ഈ അവസരത്തിലെ കെർണലിന്റെ പെരുമാറ്റം ഓരോ യൂണിക്സ് സിസ്റ്റങ്ങളിലും വ്യത്യസ്തമായിരിക്കും).

വിവിധ യൂണിക്സ് സിസ്റ്റങ്ങളിൽ വിവിധ ഇനിറ്റ് പ്രോഗ്രാമുകൾ ആയിരിക്കും ഉണ്ടായിരിക്കുക. ലിനക്സ് ഡിസ്ട്രിബ്യൂഷനുകൾ ഉപയോഗിക്കുന്ന ചില ഇനിറ്റ് പ്രോഗ്രാമുകൾ താഴെ കൊടുക്കുന്നു.

1. സിസ്‌‌ വി ഇനിറ്റ് (SysV Init)

യൂണിക്സ് സിസ്റ്റങ്ങളിൽ പരമ്പരാഗതമായി ഉപയോഗിച്ച് വന്നിരുന്ന ഇനിറ്റ് പ്രോഗ്രാമാണിത്. ഈ പ്രോഗ്രാമിന്റെ പ്രവർത്തനം /etc/inittab എന്ന ക്രമീകരണ ഫയലിനെ അടിസ്ഥാനമാക്കി ആണ്. /etc/init.d/ എന്ന ഡയറക്റ്ററിയിൽ ആണ് വിവിധ സർവ്വീസുകൾ നിർവചിച്ചിരിക്കുന്ന ഫയലുകൾ ഉണ്ടായിരിക്കുക. ഇത് സർവ്വീസുകളെ ഒന്നിനു ശേഷം ഒന്നായി ആരംഭിക്കുന്നു.

2. സിസ്റ്റംഡി (Systemd)

താരതമ്യേന പുതിയ ഒരു ഇനിറ്റ് പ്രോഗ്രാമാണ് സിസ്റ്റംഡി. സിസ്റ്റം ഡെമോൺ എന്നതിന്റെ ചുരുക്കമാണ് ഇത്. വിവിധ സർവ്വീസുകൾ നിർവചിക്കാനും നിയന്ത്രിക്കാനുമുള്ള ഒരു മെച്ചപ്പെട്ട് ചട്ടക്കൂട് ലഭ്യമാക്കുക എന്നതാണ് ഇതിന്റെ ലക്ഷ്യം. ഫെഡോറ, ആർച്ച് ലിനക്സ് തുടങ്ങിയ വിവിധ ലിനക്സ് സിസ്റ്റങ്ങളിലെ ഇനിറ്റ് പ്രോസസ്സായി ഇപ്പോൾ സിസ്റ്റംഡി ഉപയോഗിക്കപ്പെടുന്നു. ഒന്നിനു പുറകെ ഒന്നായി പ്രോസസ്സുകൾ ആരംഭിക്കുന്ന പരമ്പരാഗത രീതിയിൽ നിന്ന് വ്യത്യസ്തമായി സമാന്തരമായി തന്നെ പ്രോസസ്സുകൾ ആരംഭിക്കാൻ സിസ്റ്റംഡി ക്ക് സാധിക്കുന്നു. ഇതുവഴി കമ്പ്യൂട്ടർ ബൂട്ട് ചെയ്യാൻ ആവശ്യമായ സമയം കുറക്കാൻ സാധിക്കും.

3. അപ്‌‌സ്റ്റാർട്ട് (Upstart)

ഉബുണ്ടു ലിനക്സ് ഡിസ്ട്രിബ്യൂഷന്റെ നിർമ്മാതാക്കളായ കാനോനിക്കൽ കമ്പനി വികസിപ്പിച്ചെടുത്ത് ഇനിറ്റ് പ്രോഗ്രാം ആണ് അപ്‌‌സ്റ്റാർട്ട്. പരമ്പരാഗത രീതിയിൽ മുൻകൂട്ടി തീരുമാനിക്കപ്പെട്ട ക്രമത്തിൽ സർവ്വീസുകൾ ആരംഭിക്കുന്നതിൽ നിന്ന് വ്യത്യസ്തമായി വിവിധ സംഭവങ്ങളുടെ (events) അടിസ്ഥാനത്തിൽ സർവ്വീസുകൾ ആരംഭിക്കുകയും അവസാനിപ്പിക്കുകയും ചെയ്യുന്ന രീതി ആണ് അപ്‌‌സ്റ്റാർട്ട് പിൻതുടരുന്നത്. നോക്കിയയുടെ മെമോ, ഗൂഗിൾ ക്രോം ഓ എസ്, ഉബുണ്ടൂ തുടങ്ങിയവ അപ്‌‌സ്റ്റാർട്ട് ആണ് ഇനിറ്റ് പ്രോഗ്രാമായി ഉപയോഗിക്കുന്നത്. കമ്പ്യൂട്ടറിന്റെ ബൂട്ടിങ്ങ് സമയം പത്തുസെക്കന്റിലും താഴേക്ക് കുറക്കാൻ അപ്‌‌സ്റ്റാർട്ട് വഴി സാധ്യമായി.

4. ആൻഡ്രോയിഡ് ഇനിറ്റ്

ആൻഡ്രോയിഡ് ഒരു ലിനക്സ് കെർണൽ അധിഷ്ഠിത ഓപ്പറേറ്റിങ്ങ് സിസ്റ്റം ആണെന്നറിയാമല്ലോ. ആൻഡ്രോയിഡിനും സ്വന്തമായി ഒരു ഇനിറ്റ് പ്രോഗ്രാം ഉണ്ട്. പരമ്പരാഗത രീതി തന്നെ ആണ് ഈ ഇനിറ്റ് പ്രോഗ്രാമും പിൻതുടരുന്നത്.

ഇവക്ക് പുറമെ മാക് ഓഎസ്, സോളാരിസ്, ബിഎസ്‌‌ഡി തുടങ്ങിയ യൂണിക്സ് സിസ്റ്റങ്ങൾക്കൊക്കെ തന്നെ അവയുടെ ഇനിറ്റ് പ്രോഗ്രാമുകൾ ഉണ്ട്. കമ്പ്യൂട്ടറിന്റെ പ്രവർത്തന ആരംഭത്തിൽ സർവ്വീസുകൾ ആരംഭിക്കുന്നതോടെ ഇനിറ്റ് പ്രോസസ്സിന്റെ പ്രവർത്തനം അവസാനിക്കുന്നില്ല. ഈ സർവ്വീസുകൾ ഏതെങ്കിലും പ്രവർത്തനരഹിതമായാൽ അവയെ പുനരാരംഭിക്കൽ, വിവിധ റൺ ലെവലുകളിലെ ക്രമീകരണങ്ങൾ, സിസ്റ്റം ഷട്ട് ഡൗൺ ആരംഭിക്കുമ്പോൾ സർവ്വീസുകളെ അവസാനിപ്പിക്കൽ ഒക്കെ ഇനിറ്റ് പ്രോസസ്സിന്റെ കടമയാണ്.

യൂണിക്സ് സിസ്റ്റങ്ങളിൽ അവയുടെ ഓരോ സമയത്തെ പ്രവർത്തന സ്ഥിതിയെ റൺലെവൽ എന്ന് വിളിക്കുന്നു. ലിനക്സ് സിസ്റ്റങ്ങളിൽ 6 വ്യത്യസ്ത റൺ ലെവലുകൾ ഉണ്ട്.

  • റൺലെവൽ 0 - സിസ്റ്റം ഹാൾട്ട് (ഓഫ് ആയിരിക്കുന്ന അവസ്ഥ)
  • റൺലെവൽ 1 - സിങ്കിൽ യൂസർ മോഡ് (ഒരൊറ്റ ഉപയോക്താവ് മാത്രം. അഡ്മിനിസ്ട്രേറ്റർ യൂസറിന്റെ അനുവാദങ്ങളോടെ ഉള്ള അറ്റകുറ്റപ്പണികൾക്കായി ഉപയോഗിക്കപ്പെടുന്നു)
  • റൺലെവൽ 2 - നെറ്റ്‌‌വർക്കിങ്ങ് ഇല്ലാത്ത ഒന്നിലധികം ഉപയോക്താക്കളെ പിൻതുണക്കുന്ന അവസ്ഥ.
  • റൺലെവൽ 3 - നെറ്റ്‌‌വർക്കിങ്ങ് പിൻതുണ അടക്കം ഒന്നിലധികം ഉപയോക്താക്കളെ പിൻതുണക്കുന്ന അവസ്ഥ
  • റൺലെവൽ 4 - ഉപയോഗത്തിൽ ഇല്ല.
  • റൺലെവൽ 5 - നെറ്റ്‌‌വർക്കിങ്ങ് പിൻതുണ, ഒന്നിലധികം ഉപയോക്താക്കൾക്കുള്ള പിൻതുണ, ഗ്രാഫിക്കൽ യൂസർ ഇന്റർഫേസ്
  • റൺലെവൽ 6 - സിസ്റ്റം റീസ്റ്റാർട്ട്

ഇനിറ്റ് കമാന്റ് ഉപയോഗിച്ച് റൺലെവലുകൾ മാറ്റാൻ സാധിക്കും. init 6 എന്ന കമാന്റ് കമ്പ്യൂട്ടർ റീസ്റ്റാർട്ട് ചെയ്യാൻ ഉപയോഗിക്കാം. (ഇതൊരു സുരക്ഷിതമായ മാർഗ്ഗമല്ല).