Linux ni nini: kernel, distro na mfumo wa faili kwa lugha rahisi
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.
| Familia | Mifano | Vifurushi | Zinapatikana wapi |
|---|---|---|---|
| Debian | Debian, Ubuntu, Linux Mint | .deb, apt | seva, wingu, kompyuta za kazi |
| Red Hat | RHEL, Fedora, Rocky Linux, AlmaLinux | .rpm, dnf | seva za makampuni |
| Alpine | Alpine Linux | apk | picha za Docker ambapo ukubwa ni muhimu |
| Arch | Arch Linux, Manjaro | pacman | wapenzi, 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.
| Saraka | Kilichomo |
|---|---|
/etc | usanidi wa mfumo na huduma: /etc/passwd, /etc/ssh/sshd_config, /etc/fstab |
/home | saraka za nyumbani za watumiaji: /home/alice |
/root | saraka ya nyumbani ya msimamizi mkuu root |
/var | data zinazobadilika: kumbukumbu katika /var/log, cache ya vifurushi, hifadhidata, foleni za barua |
/usr | programu na maktaba zilizosakinishwa: /usr/bin, /usr/lib |
/bin, /sbin | amri za msingi; katika distro za kisasa ni viungo vya /usr/bin na /usr/sbin |
/boot | kernel (vmlinuz-*), initramfs, na faili za bootloader |
/dev | faili za vifaa: /dev/sda, /dev/null |
/proc, /sys | mifumo ya faili ya kivirtuali: kernel huonyesha michakato na mipangilio kupitia hizi |
/tmp | faili za muda, mara nyingi husafishwa wakati wa kuwasha upya |
/opt | programu za watu wa nje zinazokuja zikiwa kamili |
/mnt, /media | pointi 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:
- Firmware (UEFI au BIOS) hukagua vifaa na kutafuta bootloader.
- Bootloader GRUB huonyesha menyu na kupakia kernel kutoka
/bootpamoja na picha ya initramfs kwenye kumbukumbu. - Kernel huanzisha vifaa na, kwa msaada wa initramfs, hupata na kuunganisha mfumo wa faili wa root.
- systemd huanza kama mchakato wenye PID 1 na kuanzisha huduma kwa mpangilio sahihi: mtandao, kumbukumbu, SSH, cron, na nyingine.
- 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, nadf— 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 bashhukupa 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.
Mada hii inafundishwa kwa kina pamoja na mazoezi katika kozi “Linux: с нуля до уверенного администрирования”.
- Linux: с нуля до уверенного администрирования
- Как устроена файловая система Linux: от корня до загрузки ядра