25 серпня — день народження Linux : як «хоббі на 386» стало основою світу IT

Сьогодні, 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 роки інновацій, відкритості та натхнення.

Більше цікавого:

Читайте также:

Історія двійкового коду: як нулі та одиниці визначили долю людства. Частина друга

Історія двійкового коду: як нулі та одиниці визначили долю людства. Частина перша

Історія зародження даркнету: від військових лабораторій до Tor Browser

Винаходи жінок, які змінили світ