Misingi

Linux ni nini: kernel, distro na mfumo wa faili kwa lugha rahisi

Imesasishwa: · Skillaria.Top

Linux ni kernel ya mfumo wa uendeshaji wenye chanzo huria inayosimamia kichakataji, kumbukumbu, diski na mtandao; pamoja na huduma, meneja wa vifurushi na mfumo wa kuanzisha, kernel huunda distro kama Ubuntu, Debian au Fedora. Linux inaendesha seva nyingi, kontena na wingu, kwa hiyo ujuzi wa kufanya kazi ndani yake ni msingi kwa mhandisi wa DevOps na msimamizi wa mfumo.

Linux ni kernel ya mfumo wa uendeshaji wenye chanzo huria, ambayo mifumo mingi kamili hujengwa juu yake: ya seva, ya kompyuta za mezani, na ya vifaa vilivyopachikwa. Watu wanaposema "seva ya Linux", hawamaanishi programu moja, bali distro: kernel pamoja na seti ya huduma, maktaba, meneja wa vifurushi na mfumo wa kuanzisha. Hebu tuangalie Linux hasa ni nini, inajumuisha nini, na kwa nini karibu kila mhandisi wa DevOps anaihitaji.

Linux ni kernel, si mfumo mzima

Kwa usahihi, Linux ni kernel tu. Kernel ni programu inayoanza kwanza baada ya bootloader na inabaki kwenye kumbukumbu muda wote kompyuta inapofanya kazi. Inagawa muda wa kichakataji kati ya michakato, inatenga kumbukumbu, inafanya kazi na diski na kadi za mtandao kupitia madereva, na inasimamia ruhusa za ufikiaji.

Programu za kawaida hazigusi vifaa moja kwa moja. Mhariri anapohifadhi faili, hutuma system call (open, write, close), na kernel ndiyo huamua ni block gani ya diski iandikwe na kama mchakato una ruhusa ya kufanya hivyo. Mgawanyo huu hufanya mfumo uwe imara: programu iliyoanguka haiangushi kompyuta nzima.

Toleo la kernel laweza kuonekana kwa amri moja:

$ uname -r
6.8.0-45-generic

Kernel iliundwa na Linus Torvalds mwaka 1991, na tangu hapo inaendelezwa wazi: msimbo wake wa chanzo uko chini ya leseni ya GNU GPL toleo la 2, kwa hiyo mtu yeyote anaweza kuusoma, kuubadilisha na kuusambaza kwa masharti hayo hayo.

Distro ya Linux ni nini

Kernel peke yake haitoshi: unahitaji shell ya kuandika amri, huduma za kushughulikia faili, maktaba, na kisakinishi cha programu. Huduma nyingi za msingi (ls, cp, bash, grep) zilitolewa na mradi wa GNU, ndiyo maana mfumo huu wakati mwingine huitwa GNU/Linux. Kernel pamoja na seti hiyo yote, iliyojengwa na kujaribiwa kama kitu kimoja, huitwa distro.

Distro hutofautiana hasa kwa meneja wa vifurushi, sera ya masasisho, na walengwa wao.

FamiliaMifanoVifurushiZinapatikana wapi
DebianDebian, Ubuntu, Linux Mint.deb, aptseva, wingu, kompyuta za kazi
Red HatRHEL, Fedora, Rocky Linux, AlmaLinux.rpm, dnfseva za makampuni
AlpineAlpine Linuxapkpicha za Docker ambapo ukubwa ni muhimu
ArchArch Linux, Manjaropacmanwapenzi, matoleo mapya ya vifurushi

Unaweza kujua ni distro gani uliyo nayo kutoka faili /etc/os-release:

$ cat /etc/os-release
PRETTY_NAME="Ubuntu 24.04.1 LTS"
NAME="Ubuntu"
VERSION_ID="24.04"
ID=ubuntu
ID_LIKE=debian

Kwa kujifunza na kwa seva, chaguo zinazotumika zaidi ni Ubuntu LTS au Debian: zina nyaraka nyingi, na amri kutoka maelekezo ya mtandaoni karibu zote hufanya kazi bila mabadiliko.

Mfumo umepangwaje: kernel, shell, nafasi ya mtumiaji

Linux ni rahisi kuelewa kama tabaka. Chini kabisa kuna vifaa. Juu yake kuna kernel. Juu zaidi kuna nafasi ya mtumiaji: huduma za mfumo, maktaba (kwa mfano glibc), na programu. Kati ya binadamu na mfumo kuna shell, mara nyingi bash, inayopokea amri na kuendesha programu.

  • Kernel — michakato, kumbukumbu, mifumo ya faili, mtandao, madereva.
  • Mfumo wa kuanzisha — mchakato wa kwanza wenye PID 1; katika distro nyingi za kisasa ni systemd. Huanzisha huduma nyingine.
  • Huduma (daemons) — web server, seva ya SSH, cron, kumbukumbu za matukio.
  • Shell na huduma — ndicho unachofanya nacho kwenye terminal.

Kwenye seva kwa kawaida hakuna kiolesura cha picha kabisa: msimamizi huunganishwa kupitia SSH na kufanya kazi kwenye mstari wa amri. Ndiyo maana kujifunza Linux ni, kwanza kabisa, kujifunza terminal.

Mfumo wa faili wa Linux: kila kitu huanza kwenye root /

Katika Linux hakuna diski C: na D:. Kuna mti mmoja wa saraka unaoanzia kwenye root — /. Diski zote, flash drives na folda za mtandao huunganishwa (huitwa mount) kwenye saraka fulani ya mti huu. Kanuni nyingine: karibu kila kitu katika Linux kinawakilishwa kama faili — faili za kawaida, saraka, vifaa, hata taarifa kuhusu michakato.

$ ls /
bin   dev  home  lib64  mnt  proc  run   srv  tmp  var
boot  etc  lib   media  opt  root  sbin  sys  usr

Mpangilio wa saraka unaelezwa na kiwango cha FHS (Filesystem Hierarchy Standard), kwa hiyo katika distro yoyote faili za usanidi ziko karibu mahali pamoja.

SarakaKilichomo
/etcusanidi wa mfumo na huduma: /etc/passwd, /etc/ssh/sshd_config, /etc/fstab
/homesaraka za nyumbani za watumiaji: /home/alice
/rootsaraka ya nyumbani ya msimamizi mkuu root
/vardata zinazobadilika: kumbukumbu katika /var/log, cache ya vifurushi, hifadhidata, foleni za barua
/usrprogramu na maktaba zilizosakinishwa: /usr/bin, /usr/lib
/bin, /sbinamri za msingi; katika distro za kisasa ni viungo vya /usr/bin na /usr/sbin
/bootkernel (vmlinuz-*), initramfs, na faili za bootloader
/devfaili za vifaa: /dev/sda, /dev/null
/proc, /sysmifumo ya faili ya kivirtuali: kernel huonyesha michakato na mipangilio kupitia hizi
/tmpfaili za muda, mara nyingi husafishwa wakati wa kuwasha upya
/optprogramu za watu wa nje zinazokuja zikiwa kamili
/mnt, /mediapointi za kuunganisha diski na vyombo vinavyoweza kutolewa

Njia kamili na njia jamaa

Njia kamili huanza na / na haitegemei mahali ulipo: /var/log/syslog. Njia jamaa huhesabiwa kutoka saraka ya sasa: ../logs/app.log. Nukta . ni saraka ya sasa, nukta mbili .. ni saraka mzazi, na ishara ya tilde ~ ni saraka yako ya nyumbani.

$ pwd
/home/alice
$ cd /var/log
$ cd ..
$ pwd
/var
$ cd ~
$ pwd
/home/alice

/proc: mfumo kama mkusanyiko wa faili

Saraka /proc haihifadhiwi kwenye diski — kernel huiunda papo hapo. Kwa mfano, cat /proc/cpuinfo huonyesha vichakataji, cat /proc/meminfo huonyesha kumbukumbu, na kila mchakato una saraka /proc/<PID> yenye amri yake na faili zilizofunguliwa. Huduma nyingi kama ps na top husoma tu faili hizi.

Kuunganisha (mount)

Amri df -h huonyesha mifumo ya faili imeunganishwa wapi na kiasi gani cha nafasi kilichobaki:

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda2        40G   12G   26G  32% /
/dev/sda1       1.1G  6.1M  1.1G   1% /boot/efi
tmpfs           393M  1.2M  392M   1% /run

Pointi za kuunganisha za kudumu zinaelezwa katika /etc/fstab — mfumo unasoma faili hili wakati wa kuwasha.

Linux inavyowaka: kutoka kuwashwa hadi kuingia

Kuelewa mchakato wa kuwasha husaidia wakati seva "haiinuki" baada ya kuwasha upya. Kwa ufupi, mnyororo unaonekana hivi:

  1. Firmware (UEFI au BIOS) hukagua vifaa na kutafuta bootloader.
  2. Bootloader GRUB huonyesha menyu na kupakia kernel kutoka /boot pamoja na picha ya initramfs kwenye kumbukumbu.
  3. Kernel huanzisha vifaa na, kwa msaada wa initramfs, hupata na kuunganisha mfumo wa faili wa root.
  4. systemd huanza kama mchakato wenye PID 1 na kuanzisha huduma kwa mpangilio sahihi: mtandao, kumbukumbu, SSH, cron, na nyingine.
  5. Kidirisha cha kuingia huonekana kwenye kiweko au kupitia SSH.

Ujumbe wa kernel wakati wa kuwasha unaweza kuonekana kwa sudo dmesg au journalctl -k, na muda wa kila hatua ya kuwasha kwa systemd-analyze.

Watumiaji na ruhusa — ulinzi uliojengwa ndani

Linux tangu mwanzo ni mfumo wa watumiaji wengi. Kila faili ina mmiliki, kundi, na ruhusa za kusoma, kuandika na kutekeleza. Mtumiaji wa kawaida hawezi kuharibu faili za mfumo, na vitendo vya kiutawala hufanywa kupitia sudo. Msimamizi mkuu root anaweza kila kitu, kwa hiyo kufanya kazi kila wakati kama root hakupendekezwi.

$ ls -l /etc/passwd
-rw-r--r-- 1 root root 2847 Oct  1 10:12 /etc/passwd

Mstari huu unasomeka hivi: faili la kawaida, mmiliki root anaweza kusoma na kuandika, wengine wanaweza kusoma tu.

Kwa nini Linux ni muhimu kwa mhandisi wa DevOps

Kwa mhandisi wa DevOps, Linux si mada moja tu, bali mazingira ambamo kazi nzima hufanyika. Hapa ndipo anapokutana nayo kila siku:

  • Seva. Web servers, hifadhidata na foleni karibu zote zinaendeshwa kwenye Linux.
  • Kontena. Docker hutumia taratibu za kernel ya Linux — namespaces na cgroups. Kontena ni mchakato wa Linux uliotengwa, na picha zake zinajengwa juu ya distro kama Debian au Alpine.
  • Wingu na Kubernetes. Mashine pepe za wingu na nodi za makundi pia ni Linux.
  • CI/CD. Miundo (builds) kwenye pipeline hutekelezwa kwenye runners za Linux, na skripti za ujenzi huandikwa kwa bash.
  • Utambuzi wa matatizo. Huduma inapoanguka, jibu hutafutwa kwenye journalctl, top, ss, na df — bila kujua zana hizi, uchambuzi wa tukio hauwezekani.

Ujuzi wa chini kabisa: kusogea kwenye mfumo wa faili kwa ujasiri, kuelewa ruhusa, kusakinisha vifurushi, kusimamia huduma kwa systemctl, kusoma kumbukumbu, kufanya kazi na michakato, mtandao na SSH, na kuandika skripti rahisi za bash.

Jinsi ya kuanza kujifunza Linux

Si lazima usakinishe Linux badala ya mfumo wako mkuu. Kuna njia salama kadhaa za kujaribu:

  • Mashine pepe (VirtualBox, VMware) yenye Ubuntu Server — unaweza kuvunja na kurejesha kutoka snapshot.
  • WSL kwenye Windows — mazingira kamili ya Ubuntu kwenye terminal ya Windows: wsl --install.
  • Seva ya wingu — chaguo lililo karibu zaidi na kazi halisi, unaounganishwa kupitia SSH.
  • Kontena ya Docker — docker run -it --rm ubuntu bash hukupa shell ndani ya sekunde.

Anza na urambazaji (pwd, ls, cd), kisha faili na ruhusa, kisha vifurushi, michakato na huduma. Msaada uliojengwa ndani uko karibu kila wakati: man ls au ls --help.

Muhtasari

Linux ni kernel, na distro ni kernel pamoja na huduma, maktaba, meneja wa vifurushi na systemd. Mfumo mzima ni mti mmoja wa saraka unaoanzia kwenye root /, ambapo usanidi uko /etc, kumbukumbu ziko /var/log, na programu ziko /usr. Ukielewa Linux ni nini na jinsi inavyowaka, unapata msingi wa seva, kontena na wingu. Mfumo wa faili, kuwasha na usimamizi vinafundishwa kwa vitendo katika kozi ya Linux.

Maswali ya mara kwa mara

Linux ni mfumo wa uendeshaji au kernel?

Kwa maana rasmi Linux ni kernel, na mfumo wa uendeshaji huundwa na distro: kernel pamoja na huduma za GNU, maktaba, meneja wa vifurushi na mfumo wa kuanzisha. Katika mazungumzo ya kila siku, "Linux" kwa kawaida humaanisha mfumo mzima.

Je, Linux ni bure?

Kernel na distro nyingi (Ubuntu, Debian, Fedora) husambazwa bure chini ya leseni huria. Kinachokuwa cha kulipia mara nyingi ni usajili wa msaada, kwa mfano Red Hat Enterprise Linux.

Mtu anayeanza anapaswa kuchagua distro gani?

Kwa seva na kujifunza usimamizi, Ubuntu LTS na Debian zinafaa kwa sababu matoleo yake ni imara na nyaraka ni nyingi. Maarifa yanahamishika kati ya distro; tofauti kuu ni meneja wa vifurushi.

Je, unahitaji kujua Linux ili kutumia Docker?

Ndiyo, angalau misingi. Kontena zimejengwa juu ya taratibu za kernel ya Linux, picha ndani yake zina distro, na utatuzi unafanywa kwa amri za shell.

Linux inatofautianaje na Unix?

Unix ni familia ya mifumo iliyoibuka miaka ya 1970, wakati Linux ni kernel iliyoandikwa kwa kujitegemea ikiiga mawazo na violesura vya Unix (kiwango cha POSIX). Ndiyo maana amri na kanuni zake zinafanana sana.

Jifunze mada hii kwa video

Mada hii inafundishwa kwa kina pamoja na mazoezi katika kozi “Linux: с нуля до уверенного администрирования”.

Nenda kwenye kozi