Linuxun yüklənmə prosesi
Salam dostlar, bu gün biz linux əməliyyat sistemində boot prossesinin necə getdiyini müzakirə edəcəyik. Termin olaraq booting prosesi desək onda “booting”ə belə bir tərif vermək olar. İstifadəçi tərəfindən kompüter yandırılanda (power on düyməsi basılanda) əməliyyat sisteminin başlama prosesidir. Kompüter yandırıldığında boot ardıcıllığı kompüterin yerinə yetirdiyi əməliyyatları təyin edir. Aşağıdakı şəkil buna nümünədir.
İndi isə bunu gəlin ətraflı izah edək.
BIOS
- Açılışı – Basic Input/Output System
- Sistemin tamlığını yoxlayır (Qurğuların statusunu yoxlayır – POST)
- Boot loader proqramını axtarır, yükləyir və icra edir.
- Boot loaderi floppy, cd-rom, hard diskdə və s. axtarır. Siz hər hansı klavişi (F2, F12 sizin kompüterinizdən asılı olaraq) aktivləşdirdikdən sonra Bios ekranı gələcək və siz buradan boot keçib ardıcıllığı dəyişə bilərsiniz.
- Sadə olaraq desək, Bios MBR boot loaderi yükləyir və icra edir.
MBR
- Açılışı – Master Boot Record
- Bu boot oluna bilən diskin 1-ci sektorunda yerləşir. Misal olaraq /dev/hda və ya /dev/sda.
- MBR 512 baytdan kiçik ölçüdə olur. 3 komponentdən ibarətdir.
- 1-ci primary boot loader 446 bayt – boot loader icra oluna bilən kodları və düzgün olmayan mesaj formatlarını saxlayır.
- Növbəti partition cədvəli 64 bayt – 4 hissənin(partition) hər biri üçün məlumatlar saxlayır,hər bir məlumat partitionun statusu haqqında(aktive, passiv), olçüsü və sectorların başlangıcını və bitmə yerini saxlayır.
- MBR validation check (MBR –in düzgünlüyünün yoxlanılması) son 2 bayt da bunun üçün ayrılır.
- MBR GRUB haqqında informasiyanı saxlayır (LİLO –linux loader köhnə sistemlərdə)
- Sadə olaraq desək, MBR grub boot loaderini yükləyir və icra edir.
Bəzən elə ola bilər ki, MBR olan məlumatları ehtiyyat məqsədi ilə backup çıxartmaq lazım olur, misal üçün sistemin boot olmasında problem olarkən və s. MBR-in back up olunması qaydası:
GRUB
- Açılışı – Grand Unified BootLoader
- Sistemdə yüklü olan bir neçə sistem obrazı (sistem image) ola bilər, siz onlardan birini başlatmaq üçün seçə bilərsiniz.
- GRUB sistem açılanda qarşımıza çıxan ilk interfeysdir (Şəkil 1), seçim üçün bir neçə saniyə gözləyir, əgər heç birini seçməsək, o özü default kernel obrazını (image) yükləyəcək hansı ki, bu sistemdə grub konfiqurasiya faylında qeyd olunub.
- GRUB-da həmiçinin fayl sistemi haqqında məlumat var (köhnə linux loaderlərdə yəni LİLO fayl sistemlərini tanımırlar)
- GRUB konfiqurasiya faylı /boot/grub2/grub.cfg direktoriyasında yerləşir(ve ya /etc/grub2.cfg Centos 7 üçün)
- Sadə olaraq desək, GRUB kernel ve initrd, initramfs obrazlarını yükləyir və icra edir.
Şəkil 1.
KERNEL
- Kernel bütün prosessorların, I/O subsistemlərin, yaddaş qurğularının, ramı və müxtəlif cihazların kompüterə qoşulmasını yükləyir və konfiqurasiya edir.
- root fayl sisteminə mount olur,hansı ki bunu cfg faylında “root=” –a mənimsədilən hissə
- init və systemd linux kernel tərəfindən yüklənilir və həmişə process id 1 təyin edilir, “ps -ef | grep init” əmrini yazıb görə bilərsiniz, bu servislər sistem açılanda və söndürüləndə aktiv olur
- İnitrd açılışı – initial ram disk
- Initramfs – init ram file system
- Bir sözlə initrd və initramfs müvəqqəti (temporary) root fayl sistemidir hansı kı kernel tərəfindən istifadə edilir. Kernel boot və həqiqi root fayl sistemi mount olana qədər olan hissədir. Həmçinin initrd icra olunmuş drayverləri saxlayır, hard disk və başqa qurğulara girişi təmin edir
- Real root file sistemi aktiv olandan sonra kernel servis idarəedicini (init, systemd) icra edir
İNİT
Init prosesi boot ardıcıllığının sonuncu addımıdır, init sistemlər sənin sistemini yüklənmək üçün yazılmış proqramlardır. İnit sistemlər (SysV, SystemD) əməliyyat sistemi boot olanda uyğun drayverlərin yüklənməsi, şəbəkə konfiqurasiyalarının aktivləşdirilməsi, müxtəlif servislərin başladılması və nəhayət sistemə login olanda qrafik login ekranını görünməsindən məsuliyyətlidir. Əsasən 2 cür sistemi yükləyən proqramlar var: SysV və SystemD
- SysV sistemlər RHEL 1-6, Fedora 1-14: konfiqurasiya fayl /etc/inittab
- Systemd sistemlər Redhat 7 Fedora15+: /lib/systemd/system/default.target (Bu fayli simbolinkdir) və əsl fayllar /etc/systemd/system/ və /lib/systemd/system/ direktoriyasında altında yerləşir (istifadə edilən əmr isə systemctl)
- Ubuntu 12.04+, 14.04 hibrid(qarışıq) sistemlərdən istifadə edir hansi ki bu da öz növbəsində upstart adlanr.Bütün bu servislər üçün həm SysV runlevel scriptlər və həmdə systemd scriptlərində istifade edir((istifade edilən əmr isə initctl)
1.SysV
- /etc/inittab faylı – linux run səviyyələrinə baxmaq üçün
- Uygun run səviyyələrı
- 0 – halt (Sondürmək)
- 1 – Single user mode (1 istifadəçili user moduna keçmək)
- 2 – Multiuser, without NFS(çox istifadəçili amma Network File System olmadan)
- 3 – Full multiuser mode (çox istifdaçili mod consol olaraq)
- 4 – istifadə olunmur
- 5 – X11(qrafik mod)
- 6 – reboot (sistemi restart etmək )
- İnit /etc/inittab faylından defualt init səviyyəni yükləyir və ona uygn olan proqramları icra edir.
- Default run səviyyəyə baxmaq istəyirsinizsə “grep initdefault /etc/inittab” əmrini icra edib görə bilərsiniz
- Run səviyyələri dəyişmək istəsəniz həm fayldan həmdəki init 3, init 5 əmrlərini və s. yazıb fərqli run levellərə keçə bilərsiniz. /etc/inittab faylının tərkibi aşağıdakı kimidir
-
- # Default runlevel. The runlevels used by RHS are:
- # 0 – halt (Do NOT set initdefault to this)
- # 1 – Single user mode
- # 2 – Multiuser, without NFS (The same as 3, if you do not have networking)
- # 3 – Full multiuser mode
- # 4 – unused
- # 5 – X11
- # 6 – reboot (Do NOT set initdefault to this)
- #
- id:3:initdefault:
2.SystemD
- CentOS/Red Hat 7 əməliyyat sistemlərində isə bu faylda dəyişikliklər olunub(Aşagıdakı şəkildə daha ətraflı görə bilərsiniz).Əgər run leveləri dəyişmək istəsək və ya baxmaq istəsək.
Systemctl get-default – hazırkı run levelə baxmaq üçün
Systemctl set-default graphical.target – yazıb qrafiki interfeysə keçid edə bilərsiniz və s.
Systemd üçün inittab faylınin tərkibi aşağıdakı kimidir
RUNLEVELS proqramlar
- Linux sistemi yüklənəndə, müxtəlif servislərin başlandıgını görürük.Misal üçün “starting sendmail …. OK” və yaxud sönəndə ve s. Run level proqramlar vardır hansı ki run level direktoriyasında təyin olunurlar və hər run leveli(icra səviyyəsi) yerinə yetirmək üçün skriptlərdən istifadə edir.
SysV run levellər
- Default init sazlanmasından aslıdır, sistem aşağıda göstərilən proqramlardan birində icra oluna bilər
Runlevel | Skriptlər direktoriyası | Vəziyyəti |
0 | /etc/rc.d/rc0.d/ | shutdown/halt system(sistemi Sondürmək) |
1 | /etc/rc.d/rc1.d/ | Single user mode(1 istifadəçili user moduna keçmək) |
2 | /etc/rc.d/rc2.d/ | Multiuser, without NFS(çox istifadəçili amma Network File System olmadan |
3 | /etc/rc.d/rc3.d/ | Full multiuser mode (çox istifdaçili mod consol olaraq) |
4 | /etc/rc.d/rc4.d/ | Istifadə olunmur |
5 | /etc/rc.d/rc5.d/ | Gui mod |
6 | /etc/rc.d/rc6.d/ | Restart sistem |
- /etc/ direktoriyasının altında həmçinin smbolik linklərdən istifadə oluna bilər, bu zaman diqqətli olmaq lazımdır. Beleki , /etc/rc0.d proqramı /etc/rc.d/rc0.d proqramı ilə əlaqəlidir
- etc/rc.d/rc*.d/ direktoriyası altında S və K ilə başlayan proqramlar görəcəksiniz. Proqram S ilə başlayırsa bu system başlayan zaman istifadə olunur(for startup), yox əgər K ilə başlayirsa bu sistemi sondürmək üçün yəni kill prosesi (for kill).
SystemD runlevel (Butün icra səviyyələri /etc/systemd/system/ altında yerləşir)
Run level | Scriptlər direktoriyası
|
Vəziyyət |
0 | runlevel0.target , poweroff.target | shutdown/halt system(sistemi Sondürmək) |
1 | runlevel1.target, rescue.target | Single user mode(1 istifadəçili user moduna keçmək) |
2 | runlevel2.target | Multiuser, without NFS(çox istifadəçili amma Network File System olmadan |
3 | runlevel3.target , multi-user.target | Full multiuser mode (çox istifdaçili mod consol olaraq) |
4 | runlevel4.target | Istifade olunmur |
5 | runlevel5.target, graphical.target | Qrafik mod |
6 | runlevel6.target, reboot.target | Restart sistem |
Bu run levelden istifadə edərək siz öz sisteminizi restart, söndürmək, ancaq komand interfeysi, qrafik rejimlərində istifadə edə bilərsiniz.
Daha ətraflı məlumat üçün
http://www.yolinux.com/TUTORIALS/LinuxTutorialInitProcess.html
http://www.tecmint.com/linux-boot-process-and-manage-services/ baxa bilərsiniz.
Bu qədər dostlar ümidvaram ki, azacıqda olsa linuxun boot prosessini izah edə bildim.
Sag olun gələn görüşlərədək….
Şərhlər ( 1 )
Təşəkkürlər Babək bəy.