Сьогодні, 25 серпня 2025 року, ми знову повертаємося до короткого і трохи зухвалого послання в Usenet, яке 34 роки тому мало хто сприйняв серйозно. Студент із Гельсінкі написав, що «робить безплатну операційну систему, просто хобі, не таку велику та професійну, як GNU» — і випадково запустив один із найважливіших технологічних проєктів в історії. Якщо хочеться заглянути в першоджерело, архів того листа легко знаходиться у публічних дзеркалах, наприклад, у збірці «Linux history» у Карнегі-Меллона.
Точка старту: обмеження MINIX, зрілість GNU та допис, після якого все поїхало
Початок 90-х був часом, коли Unix залишався дорогим та закритим, а навчальний MINIX професора Ендрю Таненбаума — надто тісним для практичної роботи вдома. Паралельно спільнота GNU багато років збирала вільне середовище користувача, але ядра все ще не було. Лінус Торвальдс почав писати власне ядро для i386, надихаючись пристроєм Unix і відштовхуючись від обмежень MINIX, а в серпні 1991-го попросив зворотний зв’язок у спільнот – з цього й почалася історія Linux.
Кумедна деталь про імена. Лінус хотів назвати проєкт Freax (free + freak + «x» натяк на Unix). Адміністратор FTP-сервера Арі Леммке вирішив, що так не можна, і просто завів каталог linux. Назва приклеїлася, сподобалася публіці та залишилася назавжди. Короткий переказ цієї історії є у розділі про історію Linux.
Перші версії: від «ну ось воно збирається» до «цим можна працювати»
Відразу після того самого посту події прискорилися. Через кілька тижнів у мережу виклали вихідники першого знімка — версії 0.01. Це був ще не продукт, а скоріше запрошення до майстерні: код можна читати, збирати, пропонувати латки. Восени пішли швидкі інкременти, а в березні 1994 року вийшла 1.0 — уже досить стабільна, щоб на ній впевнено працювати та розгортати реальну інфраструктуру. З цього моменту Linux перестав бути «експериментом на коліні» і увійшов у довготривалий цикл дорослішання.
Коротка, але чесна хронологія: що справді змінювало гру
Дат в історії ядра багато, тому виділимо лише ті, після яких у Linux ставало помітно більше можливостей та відповідальності.
- 1993-1994 — оформляється «сімейне дерево» дистрибутивів: з’являються Slackware і Debian, незабаром до них додаються Red Hat і SUSE. Це база, з якої виростуть сьогоднішні флагмани серверного та настільного світу.
- 1996 — реліз 2.0: нормальний SMP, суттєво ширша підтримка архітектур, відчуття «це вже виробнича система», а не аматорське складання.
- 2003-2008 — гілка 2.6 і величезні внутрішні перебудови. На горизонті виростають контейнерні механіки: простору імен (namespaces) та контроль ресурсів (cgroups), вбудовується підсистема LSM, на базі якої приживаються SELinux та AppArmor, приходить новий планувальник та маса драйверів.
- 2007 — KVM стає частиною ядра (2.6.20). З цього моменту «віртуалізація» в Linux — не зовнішня милиця, а вбудована можливість: ВМ працюють як процеси, а залізні розширення VT-x/AMD-V дають потрібну продуктивність.
- 2010-2014 — консолідація ініціалізації навколо systemd. Проєкт швидко стає дефолтом у великих дистрибутивах (включаючи вибір Debian у 2014-му), скорочуючи зоопарк init-систем і спрощуючи супровід.
- з 2014 — eBPF перестає бути нішевою фічею фільтрації пакетів: це нова «платформа всередині ядра» для мережних прискорень, спостережуваності, безпеки та навіть профілювання.
- 2022-2025 — лінійка 6.x. Регулярні релізи, енергоощадження на нових архітектурах, глибокі покращення введення-виведення та BPF-стеку, швидкі LTS-відгалуження. Конкретні номери завжди краще дивитися на kernel.org – там актуальніше, ніж у будь-якій статті.
Як влаштовано ядро: моноліт, який не боїться модулів
Якщо суворо, Linux — монолітне ядро: підсистеми живуть в одному адресному просторі й розмовляють один з одним напряму. Але, за відчуттями, це «моноліт з характером конструктора»: драйвери, файлові системи, мережеві компоненти підвантажуються модулями, відключаються, замінюються — і це без циркових трюків. Такий компроміс дає смачну суміш продуктивності та гнучкості, через що одне ядро однаково доречне і в роутері, і в хмарному дата-центрі.
Механізми, які сьогодні визначають поведінку Linux
- Namespaces — окремі «шари реальності» для процесів: свої PID-дерева, свої мережеві стеки, свої точки монтування і навіть окремі ідентичності користувачів. З цих цеглинок «збираються» контейнери.
- cgroups — делікатний контроль ресурсів. Можна обмежити процесам CPU, пам’ять, I/O, задати пріоритети та облік. Перша версія з’явилася у 2.6, пізніше прийшла v2 з єдиною ієрархією та більш передбачуваною поведінкою.
- SELinux/AppArmor (через LSM) — політики, які жорстко визначають, кого і чого можна торкатися. Навіть якщо зловмисник прорветься в один сервіс, політики не дозволять йому гуляти системою без обмежень.
- eBPF — «мініпрограми» в ядрі з гарантією безпеки виконання. Це і надшвидка фільтрація пакетів (XDP), і точкові датчики телеметрії, та основа для сучасних засобів спостереження та EDR-класу інструментів.
- KVM — гіпервізор, вбудований у ядро. Віртуальні машини стають громадянами першого класу: плануються звичайним планувальником, використовують стандартні механізми пам’яті, а апаратні розширення процесорів забезпечують прийнятну швидкість.
Від серверної стійки до кишені: де живе Linux
На настільних системах Linux, як і раніше, не домінує, і це нормально: у людей є різні звички та завдання. Натомість на серверній стороні — стандартний стандарт: вебсервіси, бази даних, мікросервіси, контейнерні платформи. Docker та Kubernetes виросли саме на namespaces + cgroups, а сучасні засоби спостереження у великих кластерах все частіше спираються на eBPF.
На іншому полюсі — мобільний світ. Архітектурні схеми Android прямо говорять: в основі платформи – ядро Linux (у вигляді Android Common Kernel, заснованого на LTS-гілках). Це не «GNU/Linux» по простору користувача, зате саме ядро забезпечує драйвери, управління пам’яттю і безпеку. Документацію зручно починати з Android Platform та з архітектури ядра на source.android.com.
І, звичайно, TOP500: списки суперкомп’ютерів вже багато років повністю складаються із систем на Linux. Причина проста — ядро можна зібрати під конкретне залізо та стек завдань, а це надто серйозна перевага, щоб їх нехтувати.
Як ядро розвивається: хто всім цим керує та чому це працює
Зовні може здаватися, що такий хаос повинен розвалитися сам по собі, але насправді у ядра один з найбільш дисциплінованих процесів у світі open-source. Є мейнтейнери підсистем, регулярний ритм релізів (зазвичай нова mainline з’являється раз на 9–10 тижнів), прозорі правила приймання патчів та культура рев’ю. Виробники заліза давно навчилися upstream’ити драйвери, а користувачі — жити на розумному компромісі між LTS-ядром та свіжими фічами. Конкретні версії та терміни підтримки завжди актуальні на kernel.org.
Дистрибутиви: навіщо їх так багато і як не розгубитись
Якщо поглянути на генеалогію, «батьками» можна вважати Slackware та Debian, а з комерційних – Red Hat та SUSE. Пізніше до них додалася Ubuntu, яка спростила знайомство з Linux для розробників і домашніх користувачів. Від цих стовпів з’явилось безліч варіантів: корпоративні та серверні, полегшені для контейнерів, настільні зі свіжими стеками для робочих станцій. Ядро одне — стратегії складання, пакетні бази та моделі підтримки у всіх різні, звідси й багатство вибору.
Що робить ядро цілий день: пояснюємо на пальцях
Спробуємо уявити Linux як організм зі своїми рефлексами — так зрозуміліше, ніж перераховувати API.
- Процеси. Планувальник вирішує, кому дати час на CPU і коли відібрати. Для контейнерів діють ліміти та пріоритети із cgroups, тому «сусіди» не від’їдають все залізо.
- Пам’ять. Сторінка модель, NUMA-оптимізації, швидкі алокатори. Коли пам’яті не вистачає, ядро виштовхує на диск те, що не шкода, і дбайливо ставиться до кешів, щоб не вбити продуктивність.
- Файлова система. Від звичних ext4 і XFS до Btrfs зі снапшотами та мережевими NFS/SMB. У кожної — свій характер журналування та кешів; це можна тонко налаштовувати під навантаження.
- Мережа. Повний TCP/IP-стек, iptables/nftables, драйвери для високих швидкостей, XDP та eBPF-програми прямо в гарячому шляху пакетів, щоб заощаджувати мікросекунди там, де це важливо.
- Безпека. LSM-механізм із SELinux/AppArmor, простори імен, фільтри seccomp, рандомізація розташування ядра (KASLR) та захисні прапори компіляції — все це знижує шкоду навіть за невдалих сценаріїв.
- Віртуалізація. KVM + QEMU для повноцінних ВМ, LXC/Docker/Podman — для контейнерів на рівні процесів. Зручно те, що й те й інше живе одному світі з іншими підсистемами ядра.
Чому Linux виявився скрізь: три прозаїчні, але вирішальні причини
Гнучкість збирання. Моноліт з модулями дозволяє «зварити» ядро під конкретне завдання: додати ті драйвери та опції, які потрібні, і не тягнути зайвого.
Відкрита розробка та Git. Видимість кожного рядка, відтворюваність релізів і культура рев’ю прискорюють еволюцію. Коли виробники чіпів та пристроїв приходять з драйверами в upstream, виграють усі.
Ефект масштабу. Android підняв Linux у кишенях, хмари — у дата-центрах, наука – у HPC. Там, де потрібний контроль і передбачуваність, у закритих альтернатив просто менше маневру.
Що далі після 34-річчя
Гілка 6.x показує, що «старий добрий Linux» зовсім не старий. Розробники продовжують вичавлювати ефективність з нових архітектур та прискорювати введення-виведення, BPF-інструменти стають стандартом спостережуваності, а в мережах звичайною справою стають швидкості, де кожна мікросекунда на рахунку. Паралельно зміцнюються захисні механізми й на рівні планувальника, і через LSM-політики. А на боці дистрибутивів йде поступова уніфікація практик запуску та обслуговування без спроби «всіх зрівняти», але з турботою про сумісність.
У цьому сенсі день народження Linux хороший привід не тільки підняти кухоль за ностальгію, але й подивитися на свіжі теги: робота йде, патчі ллються, і проект залишається живим рівно настільки, наскільки живі його користувачі та розробники. Здається саме так і замислювалося.
З днем народження, Linux! Дякуємо за 34 роки інновацій, відкритості та натхнення.
Більше цікавого: