Ядро Linux майже 25 років . Якби мені довелося придумати коротку версію з історії розвитку ядра Linux з 1991 року (дата її створення), а частково з 1994 року (1.0.0) до сьогодні, я б не зміг. Найкраще, що я міг би прочитати всі нотатки до випуску ядра, було б надати наступні, які є загальними особливостями випуску, доданими до ядра до версії 3.11 (примітки та посилання пропущені):
- Версія 1.0 ядра Linux була випущена 14 березня 1994 року. Цей випуск ядра Linux підтримував лише однопроцесорні комп'ютерні системи на базі i386. Переносність стала проблемою, і тому версія 1.2 (випущена 7 березня 1995 р.) Отримала підтримку комп'ютерних систем за допомогою процесорів, заснованих на архітектурах Alpha, SPARC та MIPS.
- Версія 2.0 була випущена 9 червня 1996 року. У серії було 41 випуск. Головною особливістю 2.0 була підтримка SMP (тобто підтримка декількох процесорів в одній системі) та підтримка більшої кількості процесорів.
- Версія 2.2 (випущена 26 січня 1999 р.) Усунула глобальний спінлок і забезпечила покращену підтримку SMP, додала підтримку архітектур m68k та PowerPC, а також нових файлових систем (включаючи підтримку NTFS Microsoft лише для читання).
- Версія 2.4.0 , випущена 4 січня 2001 року, містила підтримку ISA Plug and Play, USB та PC Card. Вона також включала підтримку процесора PA-RISC від Hewlett-Packard. Розвиток для 2.4.x трохи змінився тим, що було доступно більше функцій протягом усієї тривалості серії, зокрема: підтримка Bluetooth, Logical Volume Manager (LVM) версії 1, підтримка RAID, файлова система InterMezzo та ext3.
- Версія 2.6.0 була випущена 18 грудня 2003 року. Розробка для 2.6.x змінилася далі до включення нових функцій протягом усієї тривалості серії. Серед змін, які були внесені в серію 2.6: інтеграція µClinux в основні джерела ядра, підтримка PAE, підтримка декількох нових ліній процесорів, інтеграція ALSA в основні джерела ядра, підтримка до 2 32 користувачів ( з 2 16 ), підтримка до 2 29 ідентифікаторів процесів (лише 64-розрядні, 32-бітні арки все ще обмежені 2 15), значно збільшила кількість типів пристроїв та кількість пристроїв кожного типу, покращила 64-бітну підтримку, підтримку файлових систем, що підтримують розміри файлів до 16 терабайт, попередження в ядрі, підтримка Native knjižnica POSIX Thread (NPTL), інтеграція Linux у режимі користувача до основних джерел ядра, інтеграція SELinux в джерела основного ядра, підтримка InfiniBand та багато іншого. Також примітним є додавання декількох файлових систем у версії 2.6.x: FUSE, JFS, XFS, ext4 та багато іншого. Детальну інформацію про історію серії ядра 2.6 можна знайти у файлах ChangeLog у зоні випуску вихідного коду серії ядра 2.6 на kernel.org.
- Версія 3.0 була випущена 22 липня 2011 року. Торвальдс оголосив, що велика зміна - "НІЧОГО. Абсолютно нічого". 30 травня 2011 року Торвальдс оголосив: "... давайте переконаємось, що ми дійсно зробимо наступний реліз не просто новим блискучим номером, але і хорошим ядром". Після очікуваного 6-7 тижневого процесу розробки він буде випущений близько 20-ї річниці Linux.
- У грудні 2012 року Торвальдс вирішив зменшити складність ядра, усунувши підтримку процесорів i386, зробивши серію ядер 3.7 останньою, яка все ще підтримує оригінальний процесор. У цій же серії уніфікована підтримка процесора ARM.
- Версія 3.11 , випущена 2 вересня 2013 року, додає багато нових функцій, таких як новий прапор O_TMPFILE для відкритого (2) для зменшення тимчасових уразливостей файлів, експериментальне управління динамічною потужністю AMD Radeon, опитування мережі з низькою затримкою та zswap (стислий кеш своп).
Я міг би також додати , що в протягом багатьох років тепер Фонд Linux був звіти про розвиток ядра. Це основні моменти розвитку ядра 2012-2013:
- Майже 92 000 наборів змін було об'єднано у 3738 окремих розробників, що представляють 536 корпорацій (про що ми знаємо).
- Великий набір важливих нових функцій було об'єднано в основну лінію. До них відносяться повна галочка, простори імен користувачів, віртуалізація KVM та Xen для ARM, відстеження навантажень на сутність в планувальнику, контрольно-пропускний пункт / перезапуск користувача, підтримка 64-бітної архітектури ARM, флеш-орієнтована файлова система F2FS, безліч покращених мереж при проблемах із затримкою та буферним блоком, дві незалежні підсистеми, що забезпечують швидке кешування блокових пристроїв зберігання даних, та багато іншого.
- Багаторічна суперечка щодо особливостей ядра Android, повністю відійшла на другий план. Особливо обговорювана функція "несподіванок" була тихо замінена іншим основним рішенням, яке використовується в останніх пристроях Android.
- Використання автоматизованих інструментів для пошуку помилок у ядрах розвитку за цей період значно зросло. Такі інструменти, як тест-тест "трійця" та система збору та завантаження з нульовим днем, знаходять велику кількість помилок у ядрах перед випуском, скорочуючи цикл розробки та даючи змогу спільноті доставляти релізи більш високої якості.
- Внесок мобільної та вбудованої галузей продовжує зростати. Наприклад, Linaro, Samsung та TI разом внесли 4,4% змін у попередній версії цього документу; за період до 3.10 вони внесли майже 11% усіх змін.
- Проект ядра вперше брав участь у програмі Outreach for Women для жінок, що призвело до 41 заявки на 7 доступних посад. Під час процесу подання ядра було подано 374 патчі, а понад 1/3 цих патчів було прийнято у версії ядра 3.10. Зараз триває процес стажування, але результати цього не почнуть відображатися до наступних випусків ядра.
Крім того, кількісна оцінка того, що відбувається з ядром, не дуже складна, оскільки у нас є показники поза окремими комітетами . Наприклад, нам відомо, що ядро 1.0.0 в 1994 році мало 176 250 рядків коду; і ми знаємо, що сучасне ядро типу 3.10 має 15 803 499 рядків коду. Значно більше. Частота випуску ядра зросла (63 дні за 3,10), а також швидкість зміни (9 мит за годину і більше, як ми говоримо). Щоб цитувати Linux Foundation:
Можливість витримати цю зміну протягом багатьох років є безпрецедентною у будь-якому попередньому проекті публічного програмного забезпечення.
Але все це приносить мало розуміння на мою думку. Тому я б просив:
- Чи може ця еволюція чверті століття бути кваліфікованою за лінійним доповненням усіх перерахованих функцій, які складають це ядро з часом?
- І чи приносить це розуміння того, про що йдеться в ядрі Linux або куди воно йде? Після 25 років розвитку з цього приводу, безумовно, можна зробити якісь висновки?
Шукаю абстрактну відповідь непростою фразою, яка говорить все це, не вдаючись сказати все.