Linux kernel, kernel modulları, kernelin repozitoriya və mənbə kodundan istifadə edərək yüklənməsi 1-ci hissə

Salam dostlar, bu gün ki mövzumuz Linux Red Hat 7 əməliyyat sistemində linux kernelin rolunun anlaşılması, kernel modulları ilə işləməkkernelin yenilənməsindən ibarət olacaq. Linux kernel 1991-ci ildə Linus Torvalds tərəfindən yaradılmışdır. Demək olarki ənənəvi komputerlərdə,server, laptop, router, switch, simsiz access point,PBXes, FTA receivers, smart TVs, PVRs  və s. kimi cihazlarda yerləşdirilə bilər. Android əməliyyat sistemi olaraq tablet komputerlərdə, smartfonarda linux kernel başlıca rol oynayır. Hazırki dövrdə dünyada böyük kompaniyalar tərəfindən pulsuz və açıq-qaynaq kodlu olaraq GPLv2 lisenziyası altında inkişaf edirilir.Hər halda  Linux kerneli əməliyyat sisteminin ürəyi adlandırsaq yanılmarıq. Bu, istifadəçinin işlədiyi  shell mühiti ilə qurğu arasında olan bir laydır. Kernel program tərəfindən qəbul etdiyi giriş/çıxış instruksiyalarını idarə edir və CPU vasitəsi ilə prosessləri icra edərək kompüterdəki qurğulara uygun şəkildə çevirir. Aşağıdakı şəkilə baxsaq bunu daha aydın şəkildə başa düşə bilərik.1

Kernel fayllar /boot direktoriyası  daxilində saxlanılır. GRUB 2 boot yükləyici bütün kerneli avtomatik olaraq yükləyir. GRUB -la əlaqadar gələcək zamanlarda geniş məqaləmiz olacaq deyə ümid edirəm. /boot direktoriyası içərisində olan digər fayllara gəldikə isə, config faylı kernelə hansı xüsüsiyyət və modulların yükləndiyini deyir, System.map faylı  yaddaş idarə edilməsi ilə məşguldur, Initrd balaca RAM diskidir və akual kernel faylının çıxardılıb və ya icra edilməsindən ibarətdir. Vmlinuz fayli isə kernel faylıdır.

Ümümiyyətlə əsas  üç kernel tipi vardır.

  • Monolithic
  • Microkernel
  • Hybrid

Bu kernellərin özünə məxsus müsbət və mənfi cəhətləri vardır.Buradan daha ətraflı oxuya bilərsiniz amma linux kernel monolithic kernel tipidən istifadə edir.

Əməliyyat sistemi tapşırıqları(əməliyyatları) kernel tərəfindən yerinə yetirilir. Kerneldə öz növbəsində müxtəlif kernel threadlarından istifadə edərək bunu edir. Thread-i  proses kimi başa düşmək olar, amma bir prosess bir neçə threadlardan ibarət ola bilər. Kernel threadlarına linuxda ps aux komandasından istifadə edərək baxa bilərsiniz.Aşağıdakı şəkildə kvadrat mötərizələr çərçivəsində göstərilənlər threadlardır

# ps aux | head -n 10

 

2

Linux kerneldə başqa vacib məsələlərdən biri qurgunun tanınmasından ibarətdir. Yəni siz dəqiq bilməlisiniz ki, bu qurğu istifadə edilə bilər.Bunun üçün linux kernel drayverlərdən istifadə edir.Bildiyimi kimi kompüterdə hər bir qurğu müxtəlif xüsüsiyyətləri vardır və bu xüsüsiyyətlərdən istifadə etmək üçün drayverlər sistemdə yükülü olmalıdır.Linux kernel modulyardır. Modulyarlıq anlayışı sistemdə qurğu və ya hər hansı programı dəyişərkən(hər hansi drayver əlavə etmək, silmek) bunun sistemə heç bir təsiri olmadan baş verir. Drayverlər kernel modullarında istifadə edilərək yüklənilir.Bu haqda məqalənin irəliləyən anlarında danışacağıq.

Müxtəlif usullardan istifadə edərəl kernelin analiz olunması.

  • Dmesg
  • /proc fayl sistemi
  • Uname utiliti

Birinci utilit kernelin sistemdə nə iş gördüyü barədə ətraflı məlumat verir. Bu kernelin ring bufferinin tərkibini, yaddaş yeri( haradakı kernel log mesajlar burada saxlayır) haqqında olan informasıyanı göstərir.

Qeyd:Kernel ring buffer termini kernelin yerinə yetirdiyi əməliyyatlarla bağlı qeydləri saxlaya məlumat strukturdur.

 

# dmesg

3

Bu komadaya alternativ olaraq siz journalctl –dmesgjournalctl -k komandalarından da istifadə edərək kernel ilə  əlaqəli bütün mesajlara baxa bilərsiniz. Journalctl əmrindən istifadə edəndə kerneldə baş vermiş prosesin vaxtıda sətrin əvvəlində göstərilir.

/proc fayl sistemi linux kernel üçün interfeys rolunu oynayır, yəni bu fayl sistemi daxildə saxlanılan müxtəlif fayl və direktoriyalardan istifadə edərək sistemin statusu haqqında məlumat ala bilərsiniz. # ls /proc  əmrinin yazib daxilində olan fayl və direktoriyalara baxa bilərsiniz.Misal üçün bu fayl sitemində cpu, yaddaş, mountlar və s. Haqqında informasiya mövcuddur.

Uname  komandası  əməliyyat sistemi barəsində məlumat verir(ƏS-nin adı, kernel versiyasını və s).

# uname -a

4

Həmçinində siz # hostnamectl status , # uname -r , #cat /etc/redhat-release komandasındanda istifadə edərək kernel haqqında məlumat ala bilərsiniz.

Əvvələr linuxda drayverlər icra olunaraq(compile) olaraq yüklənirdi, amma 1990ci ildə linux kernel 2.0 buraxılışı ilə artıq icra olunmadı və modular olaraq formalaşdırıldı.Yəni kernel xüsüsiyyətləri modul olaraq yüklənə bilər.

Sistemə hər hansı qurğu(USB, DVD , HDD və s.) taxılarkən və ya çıxardılarkən həmin qurgunun tanınması prosesi aşağıdakı kimidir. Drayverlərin yüklənməsi avtomatik prosesdir amma təqribən aşağıda göstərilən formada gedir.

  1. Boot müddətində, kernel uygun qurguları yoxlayır

2.Qurğu komponentinin müəyyən edilməsindən asılı olaraq, systemd-udevd prosesi  uygun drayverin yüklənməsinin nəzarət edir və qurğu drayverini hazır vəziyyətə gətirir.

  1. Qurğunun necə yükləndiyini anlayandan sonra, systemd-udevd /usr/lib/udev/rules.d/ direktoriyasından qurgular barəsində olan qaydaları oxuyur. Bu direktoriyada yerləşən fayllardan dəyişiklik etmək məsləhət deyil.
  2. Növbəti mərhələdə systemd-udevd /etc/udev/rules.d/ direktoriyasında olan qaydaları oxuyur. Bu qaydaları oxumağının məqsədi
  3. Nəticə etibarı ilə tələb olunan kernel modulları avtomatik olaraq yüklənir. Kernel modulları və qurğunun vəziyyəti ilə bağlı məlumatlar isə sysfs fayl sisteminə yazılır və buda /sys direktoriyasına mount olunur. Systemd-udevd prosesi bir dəfə olmur hər dəfə sistemə yeni qurgu taxdıqda və ya çıxartdıda bu prosess davam edir. Bunu daha yaxşı anlamaq üçün # udevadm monitor komandasın yazıb sistemə hər hansı periferiya qurgusu taxib, misal üçün USB , bu zaman prosessin necə getdiyini görə bilərsiniz.

Kernel modullarının idarə edilməsi.

Linux kernel modulları qurgular üçün adətən avtomatik yüklənir, amma bəzən siz bu modulları manual olaraq yükləməli olacaqsınız. Kernel modullarının manual olaraq idarə edilməi üçün bəzi komandalar vardır. Bunlar aşağıdakılardır.

  • Lsmod – sistemdə yüklnəmiş modulları göstərir
  • modinfo – kernel modulu haqqında informasiya verir
  • modprobe – kernel modullarını bütün dependensiyaları daxil olmaqla yükləyir
  • modprobe -r – kernel modulunu bütün dependensiyaları daxil olmaqla silir

Qeyd:  Dependensiya(dependency) bir paketi yükləyərkən, həmin paketdən asılı olan diger paketlərə yüklənir. Linux-un əvvəlki versiyalarında insmodrmmod komandalarından modulun yüklənməsi və silinməsi üçün  istifadə edilirdi amma artıq edilmir çünki bu komandalar dependensiyanı həll etmirdi.

Nümünə: Burada head -n 5 komandası ilk 5 sətrdə olan informasiyanın göstərilməsi üçündür.

5

 

Müasir linux serverlərdə, bir çox aparat qurğuları dəstəklənir.Bəzən isə bəzi qurğunun dəstəklənmədiyi ilə rastlaşacaqsınız. Bunu həll etməyin yolu lspci komandasından istifadə etməkdir.  # lspci komandasını arqumentsiz yazanda bu  sizə PCİ şinində olan bütün qurğu cihazlarını göstərəcək. Amma # lcpci -k   komandasından istifadə etdikdə PCİ şini ilə bağlı olan bütün kernel modullarını göstərəcək.

# lspci -k | head -n 1

6

 

Əgər siz PCİ qurğunu taxıldığını amma kernel modulun yüklənmədiyini görsəniz bu zaman bu qurğunun dəstəklənmdiyini bilməlisiniz. Bunu həllə etmək  üçün siz gərək baglı mənbəli(Closed source)  kernel modulu tapmağa cəhd etməlisiniz.Bundan əlavə hər hansı qurğu alarkən onun linux sistem tərəfindən dəstəkləndiyinə əmn olun.

/etc/modprobe.d/ bu direktoriya sizə ona görə kömək edirki, bəzən siz hər hansı modulu manula olaraq yükləyərkən, həmin modul üçün əlavə xüsüsiyyət olmasını istəyirsiniz, onda bu direktoriyada modulun adı ilə eyni olan fayl yaradıb istədiyiniz xüsüsiyyəti ora yaza bilərsiniz. Bu zaman həmin modul xüsüsiyyəti birdəfəlik aktiv ediləcək. Misal üçün siz cdrom  modulunu debug=1  xüsüsiyyəti ilə yükləmək istəsəniz onda siz bu direktoriyada keçid edib , aşağıdakı əmri icra etməlisiniz.

 # echo “options cdrom debug=1” > cdrom

Hələlik dostlar, məqaləmizin ikinci hissəsində Linux kernelin yum komandasında və mənbə kodundan istifadə edərək yeni versiyasının yüklənmə qaydasını və köhnə kernelin avtomatik silinmə qaydasını göstərəcəm.

 

Səs: +60. Bəyənilsin Zəifdir

Müəllif: Babək Məmmədov

Şərh yazın