от 10 239 строк кода до первого стабильного релизаfrom 10,239 lines of code to the first stable release
От студенческого поста в Usenet до 1.0.0 — как за три года непубличный учебный проект на 386-й архитектуре превратился в ядро с виртуальной памятью, GPL-лицензией, сетевым стеком и первыми портами на другое железо.From a student's Usenet post to 1.0.0 — how in three years a private learning project for the 386 architecture became a kernel with virtual memory, a GPL license, a network stack, and its first ports to other hardware.
Ветка 1.x охватывает весь путь Linux от первой строчки кода до статуса «production-ready» ядра: версии от 0.01 (сентябрь 1991) до 1.0.0 (март 1994) и далее до 1.2.13 (август 1995, формально уже отдельная минорная линия 1.2, но та же довводная эпоха однопроцессорных x86-систем). Ключевая особенность этого периода — единственный сопровождающий (Линус Торвальдс лично принимал патчи и собирал релизы вручную), отсутствие формального процесса релизов и стремительный рост числа контрибьюторов: от одного человека в 1991-м до сотни к 1993 году.The 1.x branch spans the whole path from Linux's first line of code to a "production-ready" kernel: versions from 0.01 (September 1991) to 1.0.0 (March 1994) and onward to 1.2.13 (August 1995 — technically a separate 1.2 minor line, but the same pre-SMP, x86-only era). The defining trait of this period is a single maintainer (Linus Torvalds personally accepted patches and assembled releases by hand), no formal release process, and explosive contributor growth — from one person in 1991 to about a hundred by 1993.
| версияversion | датаdate | что именно изменилосьwhat actually changed |
|---|---|---|
| 0.01 | 1991-09-17 | первая публикация исходников на ftp.funet.fi, 10 239 строк кода — не запускался напрямую, требовал уже установленного Minix для сборки; примитивная многозадачность, paging, файловая система по образцу Minix FS, горстка системных вызовов (read, write, fork)first source dump on ftp.funet.fi, 10,239 lines of code — not directly bootable, required an existing Minix install to build; primitive multitasking, paging, a Minix-FS-style filesystem, a handful of syscalls (read, write, fork) |
| 0.02 | 1991-10-05 | первая «официальная» версия по словам самого Торвальдса — масса багов, ещё нет драйвера флоппи, но уже запускает bash 1.08 и gcc 1.40 поверх Minixthe first "official" version by Torvalds's own words — full of bugs, still no floppy driver, but already runs bash 1.08 and gcc 1.40 on top of Minix |
| 0.03 | 1991-10 | быстрое исправление багов 0.02, публикуется в течение нескольких недель после неё — темп релизов в эти месяцы буквально недельныйa quick bugfix pass over 0.02, published within weeks of it — the release cadence in these months was literally weekly |
| 0.10 | 1991-11 | промежуточные релизы 0.04–0.10 постепенно добавляют драйверы устройств и устраняют баги самостоятельной загрузки, готовя почву для 0.11the intermediate 0.04–0.10 releases gradually add device drivers and fix standalone-boot bugs, laying the groundwork for 0.11 |
| 0.11 | 1991-12 | ключевая веха: полная самостоятельность от Minix — ядро загружается само, появляется драйвер гибких дисков и утилиты mkfs/fsck для собственной файловой системыa key milestone: full independence from Minix — the kernel boots on its own, a floppy driver appears, plus mkfs/fsck utilities for its own filesystem |
| 0.12 | 1992-01 | двойной перелом: переход на GPLv2 (вступил в силу 1 февраля 1992, отказ от прежней самописной некоммерческой лицензии) плюс настоящая виртуальная память — paging и swap, система комфортно работает при 2 МБ ОЗУa double turning point: the switch to GPLv2 (effective February 1, 1992, dropping the earlier self-written non-commercial license) plus real virtual memory — paging and swap, the system runs comfortably with 2 MB of RAM |
| 0.13 | 1992-02 | стабилизация сразу после смены лицензии — большинство изменений точечные, без новых крупных подсистемstabilization right after the license change — most changes are targeted fixes, no major new subsystems |
| 0.95 | 1992-03 | первый релиз, способный запустить X Window System — Linux перестаёт быть только консольной системой; с этой версии начинается практика частых патч-релизов между номерамиthe first release able to run the X Window System — Linux stops being console-only; frequent patch releases between numbered versions become the norm from here on |
| 0.96 | 1992 | рост числа поддерживаемых драйверов устройств параллельно с распространением X Window System среди пользователейgrowth in supported device drivers in step with X Window System adoption among users |
| 0.97 | 1992 | продолжение стабилизации файловой подсистемы и драйверов терминалаcontinued stabilization of the filesystem subsystem and terminal drivers |
| 0.98 | 1992-конец | осень 1992: Росс Биро (Ross Biro) пишет первый сетевой код ядра (NET-1) — зачаточная поддержка TCP/IP появляется именно в это время, ещё до отдельной ветки 0.99autumn 1992: Ross Biro writes the kernel's first networking code (NET-1) — rudimentary TCP/IP support appears right around this point, before the separate 0.99 branch |
| 0.99.0 – 0.99.9 | 1993 | начало самой долгой предрелизной ветки: добавляется поддержка SCSI-устройств (периферия за пределами IDE), Росс Биро прекращает активную разработку сети в мае 1993, эстафету принимает Фред ван Кемпенthe start of the longest pre-release branch: SCSI device support arrives (peripherals beyond IDE); Ross Biro stops active networking development in May 1993, and Fred van Kempen takes over |
| 0.99.10 | 1993-06-07 | переключение сетевого стека на переписанную ван Кемпеном реализацию NET-2 (net/inet) — динамический интерфейс устройств, задел на AX.25 (любительское радио), более модульная структура сетиthe network stack switches to van Kempen's rewritten NET-2 implementation (net/inet) — a dynamic device interface, groundwork for AX.25 (amateur radio), a more modular network design |
| 0.99.11 – 0.99.15 | 1993 – 1994-нач. | интенсивная стабилизация NET-2 (Алан Кокс продолжает как NET-2Debugged), доработка процессорного детектирования и обработки консоли перед финальным рывком к 1.0intensive NET-2 stabilization (Alan Cox continues it as NET-2Debugged), refinements to processor detection and console handling ahead of the final push to 1.0 |
| 1.0.0 | 1994-03-14 | первый релиз, публично названный production-ready; ~176 000 строк кода; полноценный TCP/IP-стек (наследие NET-1/NET-2), нацелен исключительно на Intel 386/486the first release publicly called production-ready; ~176,000 lines of code; a full TCP/IP stack (the NET-1/NET-2 legacy), Intel 386/486 only |
| 1.0.1 – 1.0.9 | 1994 | параллельная стабильная ветка — только багфиксы поверх 1.0.0, без новых возможностей; вся новая разработка в это время идёт в параллельной нечётной ветке 1.1.xa parallel stable branch — bugfixes only on top of 1.0.0, no new features; all new development at this point happens in the parallel odd-numbered 1.1.x branch |
| 1.1.0 | 1994-04 | открытие первой в истории ядра «нестабильной» ветки разработки параллельно со стабильной 1.0.x — зачаток будущей чётно/нечётной схемы версионирования, формализованной позже к 2.0the kernel's first-ever "unstable" development branch opens alongside the stable 1.0.x line — the seed of the even/odd versioning scheme later formalized around 2.0 |
| 1.1.52 | 1994-08 | Эрик Янгдейл (Eric Youngdale) добавляет поддержку формата ELF — начало вытеснения устаревшего a.out, полноценное динамическое связывание и более гибкая загрузка программEric Youngdale adds ELF format support — the start of a.out's replacement, proper dynamic linking, and more flexible program loading |
| 1.1.62 – 1.1.95 | 1994-осень | доработка ELF-инфраструктуры, продолжение сетевых улучшений и первые точечные патчи в сторону поддержки SMP-плат в SCSI-драйверах — ещё не полноценный SMP (тот придёт только в 2.0), но первые признаки многопроцессорного будущегоELF infrastructure refinement, continued networking improvements, and the first targeted patches toward SMP-board support in SCSI drivers — not full SMP yet (that arrives only in 2.0), but the first signs of a multiprocessor future |
| 1.2.0 | 1995-03-07 | слияние наработок 1.1.x в новую стабильную ветку: первые непроизводственные порты (DEC финансирует команду для Alpha, ранняя работа над SPARC/MIPS/PowerPC), зачаточный firewall-код, поддержка протокола IPXthe 1.1.x work merges into a new stable branch: the first non-x86 ports (DEC funds an Alpha team, early SPARC/MIPS/PowerPC work), rudimentary firewall code, IPX protocol support |
| 1.2.1 – 1.2.13 | 1995-03 – 1995-08 | финальная стабилизация ветки 1.2 — только багфиксы; 1.2.13 (август 1995) закрывает ветку 1.x перед переходом на 2.0 с полноценным SMPfinal 1.2-branch stabilization — bugfixes only; 1.2.13 (August 1995) closes out the 1.x branch before the move to 2.0 with full SMP |
Линус Торвальдс, студент Хельсинкского университета, купил себе PC на Intel 386 и хотел изучить его защищённый режим на практике, а не только по документации. Отправной точкой был Minix — учебная Unix-подобная ОС Эндрю Таненбаума, которую Торвальдс использовал как среду разработки и как источник вдохновения для структуры файловой системы. Задача изначально не ставилась как «написать операционную систему» — сначала это была простая программа-переключатель задач, которая печатала AAAA или BBBB в зависимости от нажатой клавиши, и только постепенно обросла файловым вводом-выводом, драйвером терминала и загрузчиком.Linus Torvalds, a University of Helsinki student, had bought himself a 386-based PC and wanted to learn its protected mode hands-on rather than just from documentation. His starting point was Minix — Andrew Tanenbaum's teaching Unix-like OS, which Torvalds used as his development environment and as an inspiration for the filesystem layout. The goal wasn't originally "write an operating system" — it began as a simple task-switching program that printed AAAA or BBBB depending on which key was pressed, and only gradually grew file I/O, a terminal driver, and a bootloader.
Знаменитый пост в группе Usenet comp.os.minix с заголовком «What would you like to see most in minix?» начинался словами: «Hello everybody out there using minix — I'm doing a (free) operating system (just a hobby, won't be big and professional like gnu) for 386(486) AT clones». Торвальдс сообщал, что уже портировал bash 1.08 и gcc 1.40 и просил обратную связь по тому, чего людям не хватает в Minix, поскольку его ОС структурно похожа на неё (в частности, файловая система). Тон поста — принципиально скромный: никакой заявки на будущее мирового господства, просто рабочий инструмент энтузиаста.The famous Usenet post in comp.os.minix, titled "What would you like to see most in minix?", opened with: "Hello everybody out there using minix — I'm doing a (free) operating system (just a hobby, won't be big and professional like gnu) for 386(486) AT clones." Torvalds noted he'd already ported bash 1.08 and gcc 1.40, and asked for feedback on what people found missing in Minix, since his OS resembled it structurally (notably the filesystem). The tone was deliberately modest — no claim of future world domination, just a hobbyist's working tool.
Версия 0.01 (10 239 строк кода) была выложена на ftp.funet.fi как символический жест для заинтересовавшихся — она не была самостоятельно загружаемой и требовала уже установленного Minix для компиляции и запуска. Уже здесь присутствовали примитивная многозадачность, управление памятью со страничной адресацией и минимальная файловая система, скопированная по структуре с Minix FS, плюс горстка системных вызовов (read, write, fork). 5 октября 1991 вышла версия 0.02, которую сам Торвальдс назвал первой «официальной» — с массой багов и без драйвера флоппи, но способная запускать bash, gcc и утилиты GNU. Именно с этого момента термин «hacker's kernel» (ядро для тех, кто готов сам чинить баги) стал самоописанием проекта.Version 0.01 (10,239 lines of code) was uploaded to ftp.funet.fi as a token gesture for the curious — it wasn't independently bootable and needed an existing Minix install to compile and run. It already had primitive multitasking, paged memory management, and a minimal filesystem copied in structure from Minix FS, plus a handful of system calls (read, write, fork). On October 5, 1991, version 0.02 arrived, which Torvalds himself called the first "official" one — full of bugs and missing a floppy driver, but able to run bash, gcc, and the GNU utilities. From this point on, "hacker's kernel" — one for people willing to fix their own bugs — became the project's self-description.
Версия 0.11 (декабрь 1991) сняла зависимость от Minix полностью: ядро могло загружаться самостоятельно, появился драйвер гибких дисков и утилиты mkfs/fsck для файловой системы. Версия 0.12 (январь 1992) — переломный момент по двум направлениям сразу. Технически: добавлена настоящая виртуальная память (paging и swap), позволившая системе комфортно работать даже на машинах с 2 МБ ОЗУ. Юридически: Торвальдс отказался от собственной самописной лицензии, которая запрещала коммерческое распространение, и перешёл на GNU GPL версии 2, вступившую в силу с 1 февраля 1992 года. Его собственное объяснение: стало ясно, что исходная лицензия была настолько ограничительной, что запрещала вполне легитимные способы использования, а GPL был жестом благодарности компилятору GCC, от которого Linux зависел с самого начала.Version 0.11 (December 1991) shed the Minix dependency entirely: the kernel could boot standalone, a floppy driver appeared, and mkfs/fsck utilities for the filesystem. Version 0.12 (January 1992) was a turning point on two fronts at once. Technically: real virtual memory arrived (paging and swap), letting the system run comfortably even on machines with 2 MB of RAM. Legally: Torvalds dropped his own hand-written license, which had forbidden commercial redistribution, and switched to the GNU GPL version 2, effective February 1, 1992. His own explanation: it had become clear the original license was so restrictive it prohibited entirely valid uses, and the GPL was a gesture of gratitude toward the GCC compiler Linux had depended on from the start.
Версия 0.95 (март 1992) стала первым релизом, способным запустить X Window System — момент, когда Linux перестал быть системой исключительно для консольной работы и начал выглядеть как полноценная десктопная Unix-альтернатива. К 1993 году над ядром уже работало более сотни разработчиков по всему миру — рост, немыслимый для проекта, у которого не было ни компании, ни формального плана, ни маркетинга, только Usenet, растущие списки рассылки и репутация «работает лучше, чем кажется по описанию».Version 0.95 (March 1992) became the first release able to run the X Window System — the moment Linux stopped being a console-only system and started looking like a full desktop Unix alternative. By 1993, over a hundred developers worldwide were already contributing to the kernel — growth unthinkable for a project with no company, no formal roadmap, and no marketing behind it, just Usenet, growing mailing lists, and a reputation for working better than its description suggested.
Ветка 0.99 растянулась почти на весь 1993 год и захватила начало 1994-го — необычно долгий для того времени предрелизный цикл, в течение которого добавлялась поддержка SCSI-устройств (расширение спектра поддерживаемой периферии за пределы IDE) и шла интенсивная стабилизация. 14 марта 1994 года вышла версия 1.0.0 — около 176 000 строк кода, первый релиз, который Торвальдс публично назвал готовым к продуктивной эксплуатации, а не экспериментом. Символическое значение этой цифры превышало техническое: 1.0 означало, что Linux формально вырос из статуса учебной поделки в систему, на которую можно полагаться.The 0.99 branch stretched across nearly all of 1993 and into early 1994 — an unusually long pre-release cycle for the era, during which SCSI device support was added (expanding supported peripherals beyond IDE) and intensive stabilization work took place. On March 14, 1994, version 1.0.0 shipped — around 176,000 lines of code, the first release Torvalds publicly called production-ready rather than an experiment. The symbolic weight of that number exceeded its technical one: 1.0 meant Linux had formally outgrown its status as a learning toy into a system people could rely on.
Версия 1.2.0 (7 марта 1995, финальная точка ветки — 1.2.13, август 1995) принесла первые признаки того, что Linux однажды перестанет быть исключительно x86-системой: DEC профинансировала небольшую команду разработчиков для портирования Linux на архитектуру Alpha и предоставила Торвальдсу тестовую машину; параллельно шла ранняя работа над поддержкой SPARC, MIPS (R3000/R4000) и PowerPC. 1.2 также добавила зачаточный сетевой firewall-код и поддержку протокола IPX — сигнал, что ядро уже рассматривалось как основа для серверных и сетевых ролей, а не только персональных рабочих станций.Version 1.2.0 (March 7, 1995; the branch's final point was 1.2.13, August 1995) brought the first signs that Linux would eventually stop being an x86-only system: DEC funded a small team to port Linux to the Alpha architecture and lent Torvalds a test machine, while early work also began on SPARC, MIPS (R3000/R4000), and PowerPC support. 1.2 also added rudimentary network firewall code and IPX protocol support — a sign the kernel was already being considered as a foundation for server and networking roles, not just personal workstations.
К релизу 1.0.0 ядро уже несло основные черты, которые определяют Linux и сегодня: монолитная архитектура (весь код ядра — планировщик, драйверы, файловая система, сеть — работает в одном привилегированном адресном пространстве, без микроядерной изоляции серверов через IPC), файловая система на базе идей Minix FS, вытесняющая многозадачность на уровне процессов и виртуальная память со страничным свопом. Одновременно система была принципиально однопроцессорной — поддержки SMP не было вовсе, и об этом ограничении речь пойдёт в ветке 2.x, где оно было снято. Целевая платформа — исключительно Intel 386/486 (AT-совместимые клоны); любые другие архитектуры к 1.0 не поддерживались, первые ростки этого появились только в 1.2 с Alpha.By the 1.0.0 release, the kernel already carried the core traits that still define Linux today: a monolithic architecture (all kernel code — scheduler, drivers, filesystem, networking — runs in one privileged address space, with no microkernel-style server isolation via IPC), a filesystem built on Minix FS ideas, preemptive process-level multitasking, and virtual memory with paged swap. At the same time the system was fundamentally single-processor — there was no SMP support at all, a limitation that gets lifted in the 2.x branch discussed elsewhere. The target platform was Intel 386/486 exclusively (AT-compatible clones); no other architecture was supported as of 1.0 — the first seeds of that appeared only in 1.2 with Alpha.
Важная методологическая деталь этой эпохи: до появления формальной чётно/нечётной схемы версионирования (введённой позже, во времена 1.2 → 2.0) релизы 0.x и 1.x не разделялись явно на «стабильные» и «нестабильные» ветки — Торвальдс единолично решал, когда код готов к очередному номеру, а разработка шла по существу линейно, без параллельных веток разработки в современном смысле.An important methodological detail of this era: before the formal even/odd versioning scheme appeared (introduced later, around the 1.2 → 2.0 transition), 0.x and 1.x releases weren't explicitly split into "stable" and "unstable" branches — Torvalds alone decided when code was ready for the next number, and development was essentially linear, without parallel development branches in the modern sense.
Популярная упрощённая версия истории пропускает почти три года разработки до 1.0.0 — версии 0.x были не просто препродакшн-заглушками, а реальными, рабочими (пусть и багованными) системами, которыми пользовались сотни энтузиастов и вокруг которых сложилось ядро будущего сообщества. Дата рождения проекта — 17 сентября 1991 (0.01) или 25 августа 1991 (публичный анонс), а не март 1994.The popularized shorthand version of the story skips nearly three years of development before 1.0.0 — the 0.x versions weren't just pre-production placeholders but real, working (if buggy) systems used by hundreds of enthusiasts, around which the core of the future community formed. The project's birth date is September 17, 1991 (0.01) or August 25, 1991 (the public announcement), not March 1994.
Лицензионная смена — одно из самых часто путаемых событий в истории проекта. Первая, самописная лицензия Торвальдса действовала лишь на версиях 0.01–0.11 и запрещала коммерческое распространение; переход на GPLv2 произошёl уже в 0.12, за два года до 1.0.0 — то есть Linux был свободным ПО в современном смысле практически с самого начала своей публичной истории, а не стал им «когда созрел».The license switch is one of the most frequently misremembered events in the project's history. Torvalds's original, self-written license applied only to versions 0.01–0.11 and forbade commercial redistribution; the move to GPLv2 happened already at 0.12, two years before 1.0.0 — meaning Linux was free software in the modern sense from almost the very start of its public history, not something it "grew into" later.
Фраза из анонса 1991 года часто цитируется как курьёз задним числом («вот как ошибался Торвальдс»), но в момент написания она была точным описанием: одиночный проект студента, без намерения конкурировать с GNU или коммерческими Unix-системами. Рост в сотню разработчиков к 1993-му и статус production-ready к 1994-му — результат органического интереса сообщества, а не изначального плана.The phrase from the 1991 announcement is often quoted retrospectively as a curiosity ("look how wrong Torvalds was"), but at the time it was written it was an accurate description: a lone student project with no intention of competing with GNU or commercial Unix systems. Growing to a hundred contributors by 1993 and reaching production-ready status by 1994 was the result of organic community interest, not an original plan.