Friday, July 05, 2013

ലിനക്സ് സിസ്റ്റം സ്റ്റാർട്ടപ്പ് - 1

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

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

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

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

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

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

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

2 comments:

  1. നന്നായിട്ടുണ്ട്. അടുത്തതിനായി കാത്തിരിക്കുന്നു

    ReplyDelete