Friday, July 26, 2013

ലിനക്സ് കെർണൽ: സോഴ്സ് കോഡ്

ഫിൻലൻഡുകാരനായ ലിനസ് ടൊർവാൾഡ്സ് ഹെൽസിങ്കി യൂണിവേഴ്സിറ്റിയിൽ വിദ്യാർത്ഥി ആയിരിക്കുന്ന സമയത്ത് തന്റെ ഇരുപത്തി ഒന്നാം വയസ്സിൽ ഒരു ഹോബി ആയി വികസിപ്പിച്ച് തുടങ്ങിയ ഓപ്പറേറ്റിങ്ങ് സിസ്റ്റം കെർണൽ ആണ് ലിനക്സ് കെർണൽ. അക്കാലത്ത് ഓപ്പറേറ്റിങ്ങ് സിസ്റ്റങ്ങളെപ്പറ്റി പഠിക്കുന്ന വിദ്യാർത്ഥികൾക്കിടയിലും യൂണിവേഴ്സിറ്റികളിലും വളരെ പ്രചാരമുണ്ടായിരുന്ന മറ്റൊരു ഓപ്പറേറ്റിങ്ങ് സിസ്റ്റം ആയിരുന്നു മിനിക്സ്. ആൻഡ്ര്യൂ എസ് ടാനൻബോം ആയിരുന്നു ഈ ഓപ്പറേറ്റിങ്ങ് സിസ്റ്റത്തിന്റെ ശിൽപ്പി. മൈക്രോ കെർണൽ രീതിയിലുള്ള ഒരു ഓപ്പറേറ്റിങ്ങ് സിസ്റ്റമായിരുന്നു മിനിക്സ്. മിനിക്സിന്റെ പല രീതികളിലും അതൃപ്തനായിരുന്ന ടൊർവാൾഡ്സ് സ്വന്തമായി ഒരു ഓപ്പറേറ്റിങ്ങ് സിസ്റ്റം എഴുതാൻ ആരംഭിക്കുകയായിരുന്നു. 1991 ഇൽ ആണ് ലിനക്സ് കെർണലിന്റെ ആദ്യ പതിപ്പ് പുറത്തിറങ്ങിയത്. comp.os.minix എന്ന ന്യൂസ് ഗ്രൂപ്പിൽ ആയിരുന്നു ലിനസ് ഇതിന്റെ പ്രഖ്യാപനം നടത്തിയത്. പോസിക്സ് മാനദണ്ഡങ്ങൾ അനുസരിക്കുന്നതും ഇന്റൽ എക്സ് 86 പ്രോസസ്സറുകളിൽ മാത്രം പ്രവർത്തിക്കുന്നതും ആയിരുന്നു ആദ്യത്തെ ലിനക്സ് കെർണൽ.

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

ലോകമെമ്പാടുമുള്ള ആയിരക്കണക്കിനു പ്രോഗ്രാമർമാർ ലിനക്സ് കെർണലിനു സംഭാവനകൾ നൽകുന്നുണ്ട്. പൂർണ്ണമായും ഓപ്പൺ സോഴ്സ് ആണ് ലിനക്സ് കെർണൽ. ആർക്ക് വേണമെങ്കിലും ഇതിന്റെ സോഴ്സ് കോഡ് കാണാനും പകർത്താനും മാറ്റങ്ങൾ വരുത്തി ഉപയോഗിക്കാനും സാധിക്കും. ജിഎൻയു ജെനറൽ പബ്ലിക്ക് ലൈസൻസ് 2 അനുമതി പ്രകാരമാണ് ലിനക്സ് കെർണൽ വിതരണം ചെയ്യുന്നത്. ഇതിൽ നിന്ന് മാറ്റങ്ങൾ വരുത്തി ഉണ്ടാക്കുന്ന കെർണലുകൾക്കും ഇതിൽ വരുത്തുന്ന മാറ്റങ്ങൾക്കും ഇതേ അനുമതി ബാധകമായിരിക്കും.

ലിനക്സ് കെർണൽ https://www.kernel.org/pub/, https://www.kernel.org യിൽ നിന്ന് കമ്പ്രസ്സ്ഡ് ആർക്കൈവ് ആയി ഡൗൺലോഡ് ചെയ്യാൻ സാധിക്കും. ഡിസ്ട്രിബ്യൂട്ടഡ് ഡെവലപ്പ്‌മെന്റ് രീതി ആണ് ലിനക്സ് കെർണൽ വികസിപ്പിക്കാൻ ഉപയോഗിക്കുന്നത്. ഇതിനെ എളുപ്പത്തിലാക്കാൻ ലിനസ് ടൊർവാൾഡ്സ് തന്നെ രൂപകൽപ്പന ചെയ്ത ഗിറ്റ് (git) എന്ന വേർഷൻ കണ്ട്രോൾ സിസ്റ്റം ഉപയോഗിക്കുന്നു. ഇത് ഉപയോഗിക്കുന്നത് വഴി കെർണലിൽ വരുത്തിയ മാറ്റങ്ങൾ പിൻതുടരാനും ഈ മാറ്റങ്ങൾ പ്രധാന കെർണലിലേക്ക് സമർപ്പിക്കാനും വിവിധ പതിപ്പുകളെ ഒരേ സമയം കൈകാര്യം ചെയ്യാനും എല്ലാം എളുപ്പത്തിൽ സാധിക്കും. ഉദാഹരണത്തിന് ലിനക്സ് കെർണലിലെ പ്രധാന ഡെവലപ്പർമാർ എല്ലാം അവർ വികസിപ്പിക്കുന്ന ഭാഗങ്ങളിൽ മാത്രം മാറ്റങ്ങൾ വരുത്തുന്നവർ ആണ്. ഓരോരുത്തരും അവരുടെ ശാഖകൾ രൂപീകരിച്ച് ആ ശാഖകളിൽ മാത്രം പ്രവർത്തിക്കുന്നു. ആവശ്യമായ മാറ്റങ്ങൾ വരുത്തിക്കഴിയുമ്പോൾ പ്രധാന ശാഖയിലേക്ക് ഈ മാറ്റങ്ങൾ ചേർക്കുന്നു. ലിനക്സ് കെർണലിൽ പതിനായിരക്കണക്കിന് ഫയലുകൾ ഉണ്ട്. ഓരോരുത്തരും മാറ്റങ്ങൾ വരുത്തുന്ന ഫയലുകളിലെ മാറ്റങ്ങൾ പ്രധാന ശാഖയിൽ വരുത്തുന്നത് സാധാരണഗതിയിൽ വിഷമമേറിയ പ്രവർത്തി ആണ്. ഈ മാറ്റങ്ങൾ മറ്റേതെങ്കിലും ഭാഗത്തിന്റെ പ്രവർത്തനത്തെ ബാധിക്കുമെങ്കിൽ അവ നീക്കം ചെയ്യേണ്ടി വരും. ഈ കാര്യങ്ങളെല്ലാം ഗിറ്റ് ഉപയോഗിച്ച് എളുപ്പത്തിൽ ചെയ്യാൻ സാധിക്കുന്നു. കമ്പ്യൂട്ടറിൽ ഗിറ്റ് പ്രോഗ്രാം ഇൻസ്റ്റാൾ ചെയതാൽ https://git.kernel.org/cgit/ യിൽ നിന്നും ഗിറ്റ് ഉപയോഗിച്ചും ലിനക്സ് കെർണലിന്റെ ഒരു പതിപ്പ് ശേഖരിക്കാൻ സാധിക്കും.

ലിനക്സ് കെർണലിനെ മൊത്തത്തിൽ രണ്ട് ഭാഗമായി തരം തിരിക്കാം. 
1. ആർക്കിട്ടെക്ചറുകളുമായി ബന്ധപ്പെട്ട ഭാഗം - ഇത് കെർണലിലെ പോർട്ടബിൾ അല്ലാത്ത ഭാഗമാണ്. ഓരോ ആർക്കിട്ടെക്ചറുകൾക്കും ഈ ഭാഗത്തിൽ പ്രത്യേകമായ പ്രോഗ്രാമുകൾ/ഫയലുകൾ ഉണ്ടായിരിക്കും.
2. എല്ലാ ആർക്കിട്ടെക്ചറുകൾക്കും പൊതുവായ ഭാഗം - ഈ ഭാഗം പോർട്ടബിൾ ആയ ഭാഗമാണ്. ഇത് എല്ലാ ആർക്കിട്ടെക്ചറുകൾക്കും പൊതുവായുള്ളത് ആയിരിക്കും. ആർക്കിട്ടെക്ചറുകൾക്കനുസരിച്ച് ഈ ഭാഗങ്ങൾക്ക് മാറ്റമുണ്ടാകില്ല.

ലിനക്സ് കെർണൽ സോഴ്സിലെ വിവിധ ഡയറക്റ്ററികളെക്കുറിച്ച് അടുത്ത ഭാഗത്തിൽ.

3 comments:

  1. നന്നായി. അടുത്ത ഭാഗം എന്നുണ്ടാകും?

    ReplyDelete
  2. മിനിക്സ് ഉപജ്ഞാതാവ് എന്നതിനേക്കാളൂം നെറ്റ്‌വ്വർക്കിന്റെ പുസ്തകത്തിന്റെ രചയിതാവു് എന്ന നിലയിലാണു് എനിക്കു ടാനൻബാമിനെ അറിയുന്നതു്. പുസ്തകത്തിന്റെ ചട്ടയിൽ ആൻഡ്രൂ എ. ടാനൻബാമാണു്.

    ReplyDelete
  3. എ എസ് റ്റി എന്ന് ചുരുക്കി വിളിക്കും. ഞാൻ കരുതിയിരുന്നത് ഇലക്ട്രോണിക്സ് ബാച്ചുകാർക്ക് മാത്രമേ ടാനൻബോം ഈക്വൽ റ്റു കമ്പ്യൂട്ടർ കമ്യൂണിക്കേഷൻ/നെറ്റ്‌വർക്കിങ്ങ് പ്രശ്നം ഉള്ളു എന്നാണ് :)

    ReplyDelete