Hạt nhân Linux
Lịch sử

Xem thêm: Lịch sử Linux
Tháng 4/1991, Linus Torvalds, tại thời điểm đó là một sinh viên khoa học máy tính 21 tuổi tại Đại học Helsinki, Phần Lan, bắt đầu nghiên cứu một số ý tưởng đơn giản cho một hệ điều hành. Ông bắt đầu với một tác vụ switcher trong assembly Intel 80386 và một trình điều khiển thiết bị đầu cuối. Ngày 25/8/1991, Torvalds đã đăng thông tin sau lên Usenet comp.os.minix, trong đó có đoạn viết:
Tôi đang làm một hệ điều hành (miễn phí) (chỉ là một sở thích, sẽ không lớn và chuyên nghiệp như gnu) cho một bản sao của chip AT 386 (486). Việc này đã bắt đầu từ tháng 4 và đang bắt đầu sẵn sàng. Tôi muốn bất kỳ thông tin phản hồi về việc mọi người thích, hoặc không thích trong Minix như hệ điều hành của tôi tương tự nó (giống về cấu trúc vật lý của file system (vì nhiều lý do về áp dụng trong thực tế) và nhiều thứ khác. Hiện tôi đang port bash(1.08) và GCC(1.40) và mọi thứ dường như đang hoạt động ổn. Điều này ngụ ý rằng tôi sẽ tạo ra được thứ gì đó có thể chạy được trong vòng một vài tháng tới [...] P/s: Vâng - bất kì mã Minix đều miễn phí hết, và nó có một hệ thống fs đa luồng. Nó không protable  [sic] (sử dụng chuyển đổi tác vụ 386 vân vân), và nó có lẽ sẽ không bao giờ hỗ trợ bất cứ hệ thống nào ngoài ổ cứng AT, vì đó là tất cả những gì tôi hiện có:-(.
[...] nó chủ yếu viết bằng C, nhưng hầu hết mọi người sẽ không nói rằng những gì tôi viết (là C). Nó sử dụng tất cả các tính năng có thể có của 386 mà tôi có thể tìm thấy vì nó cũng là một dự án để dạy tôi về 386. Như đã đề cập, nó sử dụng MMU cho cả phân trang (chưa có khả năng ghi được vào đĩa) và phân đoạn. Khả năng phân đoạn làm cho nó thực sự phụ thuộc vào 386  (mỗi tác vụ có một phân đoạn 64Mb cho mã và dữ liệu - tối đa 64 tác vụ trong 4Gb. Ai sẽ cần hơn 64Mb/tác vụ cơ chứ - chỉ có thể là một tác vụ khó nhằn).
Sau đó, nhiều người đã đóng góp mã cho dự án. Ban đầu, cộng đồng MINIX đã đóng góp mã và ý tưởng cho nhân Linux. Vào thời điểm đó, Dự án GNU đã tạo ra nhiều thành phần cần thiết cho một hệ điều hành tự do, nhưng hạt nhân riêng của nó, GNU Hurd, không đầy đủ và không có sẵn. Hệ điều hành BSD vẫn chưa tự giải thoát khỏi các vụ kiện pháp lý. Mặc dù có các chức năng giới hạn của các phiên bản đầu, Linux nhanh chóng thu hút các nhà phát triển và người dùng.
Vào thời điểm này, dự án GNU đã hoàn thành nhiều cấu thành thiết yếu cho một hệ điều hành tự do, tuy nhiên phần hạt nhân (lõi - Linux Kernel) GNU Hurd của hệ điều hành này vẫn chưa được hoàn thành. Ngoài ra hệ điều hành BSD vẫn chưa được tự do hóa do các trở ngại về mặt pháp lý. Những điều này đã tạo ra một chỗ đứng thuận lợi cho hạt nhân Linux, nó nhanh chóng giành được sự quan tâm của các nhà phát triển cũng như người dùng.
Tháng 9/1991, hạt nhân Linux phiên bản 0.01 được phát hành trên máy chủ FTP (ftp.funet.fi) của Đại học Phần Lan và Mạng Nghiên cứu (FUNET). Nó có 10,239 dòng mã. Ngày 10/5/1991, phiên bản 0.02 của hạt nhân Linux đã được phát hành.
Tháng 12/1991, hạt nhân Linux 0.11 đã được phát hành. Phiên bản này là phiên bản đầu tiên được tự lưu trữ vì hạt nhân Linux 0.11 có thể được biên dịch bởi một máy tính chạy cùng phiên bản hạt nhân. Khi Torvald phát hành phiên bản 0.12 vào tháng 2/1992, ông đã thông qua Giấy phép Công cộng GNU (GPL) so với giấy phép tự soạn thảo trước đó của mình, điều này đã không cho phép phân phối lại thương mại.
Ngày 19/1/1992, bài đăng đầu tiên tới nhóm tin tức mới alt.os.linux đã được đăng tải. Ngày 31/3/1992, nhóm tin được đổi tên thành comp.os.linux. Việc Linux là một hạt nhân nguyên khối chứ không phải là một microkernel là chủ đề của cuộc tranh luận giữa Andrew S. Tanenbaum, người đã tạo ra MINIX, và Torvalds. Cuộc thảo luận này được gọi là cuộc tranh luận Tanenbaum–Torvalds và bắt đầu vào năm 1992 trên nhóm thảo luận Usenet comp.os.minix như một cuộc tranh luận chung về Linux và kiến trúc hạt nhân. Tanenbaum lập luận rằng microkernel vượt trội hơn so với hạt nhân nguyên khối và do đó Linux đã lỗi thời. Không giống như các hạt nhân nguyên khối truyền thống, trình điều khiển thiết bị trong Linux có thể dễ dàng được cấu hình dưới dạng các mô-đun hạt nhân có thể tải và được tải hoặc không tải trong khi chạy hệ thống. Chủ đề này đã được xem lại vào ngày 9 tháng 5 năm 2006, và vào ngày 12 tháng 5 năm 2006 Tanenbaum đã viết một tuyên bố về quan điểm.
Tháng 3 năm 1992, phiên bản 0.xx cuối cùng của Linux kernel được phát hành. Linux version 0.95 là phiên bản đầu tiên có khả năng chạy X, vì Hệ thống X Window đã được port sang Linux. Bước nhảy lớn này được thể hiện trong số hiệu phiên bản, từ 0.1x đến 0.9x, do kỳ vọng phiên bản 1.0, mà không có những phần thiếu sót lớn, sắp xảy ra. Tuy nhiên, điều này đã được chứng minh là sai và từ năm 1993 đến đầu năm 1994, 15 phiên bản phát triển của phiên bản 0.99 đã ra mắt. Ngày 14 tháng 3 năm 1994, phiên bản chính thức đầu tiên của Linux kernel được phát hành. Linux kernel 1.0.0 có 176,250 dòng lệnh. Linux kernel 1.0.0 đã khởi động một hệ thống đánh số phiên bản v.x.y tiêu chuẩn cho kernel,trong đó x đại diện cho một phiên bản chính. Các bản phát hành số lẻ là để thử nghiệm và phát triển. Vào thời điểm đó, chỉ có các phiên bản được đánh số chẵn là phát hành sản xuất. Chữ y được tăng lên khi các bản vá nhỏ được phát hành trong phiên bản chính. Vào tháng 3 năm 1995, Linux kernel 1.2.0 đã được phát hành, với 310.950 dòng mã.
Sau phiên bản kernel v1.3, Torvalds đã quyết định rằng đã có đủ các thay đổi đối với nhân Linux để đảm bảo việc phát hành phiên bản mới. Phiên bản 2.0.0 của Linux kernel được phát hành ngày 9 tháng 6 năm 1996. Trái ngược với Unix, tất cả mã nguồn của Linux kernel có sẵn miễn phí, bao gồm trình điều khiển, thư viện runtime và các công cụ phát triển. Thành công ban đầu của nhân Linux được thúc đẩy bởi sự hỗ trợ của các lập trình viên và người thử nghiệm trên toàn thế giới. Bằng cách cấu trúc nhân Linux theo các tiêu chuẩn POSIX, nó tương thích với một loạt các phần mềm và ứng dụng miễn phí đã được phát triển cho các trường đại học.
Các nhà phát triển đóng góp cho nhân Linux đã nghĩ rằng điều quan trọng là hạt nhân mà Torvald đã viết cho các PC của Intel hỗ trợ các kiến ​​trúc phần cứng khác nhau. Hiện nay hạt nhân Linux có thể chạy trên các CPU từ Intel (80386, 80486, 80686), Digital Equipment Corporation (Alpha), Motorola (MC680x0 and PowerPC), Silicon Graphics (MIPS) và Sun Microsystems (SPARC). Thông qua một trình giả lập FPU tích hợp, nhân Linux thậm chí có thể chạy trên các kiến ​​trúc phần cứng thiếu bộ đồng xử lý toán học dấu phẩy động. Các nhóm nhà phát triển được thành lập cho các kiến ​​trúc khác nhau và với việc phát hành Linux kernel phiên bản 2.0, các nguồn của kernel bao gồm tất cả các thành phần để cấu hình kernel cho các kiến ​​trúc khác nhau trước khi biên dịch nó. Làm cho nhân Linux tương thích với các hệ thống file khác nhau cũng được ưu tiên. Nhân Linux có thể vận hành các hệ thống tập tin đã được định dạng cho Minix, Xenix hoặc System V, trong khi định dạng umsdos thậm chí cho phép Linux được cài đặt trong phân vùng MS-DOS. Vào tháng 12 năm 1999, các bản vá máy tính lớn của IBM cho 2.2.13 đã được xuất bản, cho phép nhân Linux được sử dụng trên các máy cấp doanh nghiệp.
Tháng 12 năm 2003, với việc phát hành phiên bản kernel 2.6.0, 2.6.0, đã coi các hạt nhân Linux ổn định đến mức ông bắt đầu chu trình phát hành 2.6.x.y. Mỗi bản phát hành 2.6 là một hạt nhân để sản xuất, các bản phát hành phát triển được chỉ định bằng -rc ("release candidate") được gắn vào số hiệu phiên bản. Các bản phát hành kernel ổn định 2.6 bắt đầu được phát hành theo lịch trình đều đặn cứ sau 2 tháng 3, cho đến 2.6.39 tháng 5 năm 2011. Chu kỳ phát hành ngắn hơn là kết quả của các cuộc thảo luận giữa các nhà phát triển kernel về sơ đồ phát hành và phiên bản năm 2004.
Để đáp lại việc thiếu một nhánh ổn định, nơi mọi người có thể điều phối bộ sưu tập sửa lỗi như vậy, vào tháng 12 năm 2005 Adrian Bunk tuyên bố rằng anh ta sẽ tiếp tục phát hành hạt nhân 2.6.16.y khi nhóm ổn định chuyển sang 2.6.17. Ông cũng bao gồm một số cập nhật trình điều khiển, làm cho việc bảo trì loạt 2.6.16 rất giống với các quy tắc cũ để bảo trì một loạt ổn định như 2.4. Kể từ đó, "nhóm ổn định" đã được thành lập và nó sẽ tiếp tục cập nhật các phiên bản kernel với các sửa lỗi. Vào tháng 10 năm 2008, Adrian Bunk tuyên bố rằng ông sẽ duy trì 2.6.27 trong một vài năm để thay thế 2.6.16. Đội ngũ ổn định đã lên ý tưởng và tính toán năm 2010, họ tiếp tục duy trì phiên bản đó và phát hành các bản sửa lỗi cho nó, ngoài ra còn có các bản sửa lỗi khác. Andrew Morton quyết định tái sử dụng cây-mm của mình từ quản lý bộ nhớ để làm đích cho tất cả các mã mới và thử nghiệm. Vào tháng 9 năm 2007, Morton quyết định ngừng duy trì cây này. Vào tháng 2 năm 2008, Stephen Rothwell đã tạo ra cây linux-next để phục vụ như là một nơi mà các bản vá nhằm mục đích được hợp nhất trong chu kỳ phát triển tiếp theo được tập hợp lại. Một số nhà bảo trì hệ thống con cũng sử dụng hậu tố -next cho các cây có chứa mã được gửi để đưa vào chu kỳ phát hành tiếp theo. Tính đến  tháng 1 năm 2014, phiên bản đang phát triển của nhân Linux được giữ trong một nhánh không ổn định có tên linux-next.
Mã nguồn nhân Linux được bảo trì mà không cần sự trợ giúp của hệ thống quản lý mã nguồn tự động (SCM), chủ yếu là do Torvalds không thích các hệ thống SCM tập trung. Năm 2002, phát triển nhân Linux đã chuyển sang BitKeeper, một hệ thống SCM đáp ứng các yêu cầu kỹ thuật của Torvalds. BitKeeper đã được cung cấp miễn phí cho Torvalds và một số người khác miễn phí nhưng không phải là phần mềm tự do, đây là một nguồn gây tranh cãi. Hệ thống này đã cung cấp một số khả năng tương tác với các hệ thống SCM miễn phí như CVS và Subversion. Tháng 4 năm 2005, Vào tháng 4 năm 2005, những nỗ lực dò ngược hệ thống BitKeeper của Andrew Tridgell đã khiến BitMover, công ty duy trì BitKeeper, ngừng hỗ trợ cộng đồng phát triển Linux. Đáp lại, Torvalds và những người khác đã viết một hệ thống kiểm soát mã nguồn mới cho mục đích này, được gọi là Git. Hệ thống mới được viết trong vòng vài tuần và trong hai tháng, bản phát hành hạt nhân chính thức đầu tiên được thực hiện bằng Git.
Năm 2008, Greg Kroah-Hartman nói rằng từ năm 2005 hơn 3.700 nhà phát triển các nhân từ hơn 200 công ty khác nhau đã có đóng góp vào kernel. Kỷ niệm 20 năm nhân Linux được Torvalds tổ chức vào tháng 7 năm 2011 với việc phát hành phiên bản kernel 3.0.0. Mặc dù nó không có thay đổi công nghệ lớn khi so sánh với Linux 2.6.39 Linux Foundation đã kỷ niệm 20 năm hạt nhân trong phiên bản 2011 của nghiên cứu phát triển hạt nhân của họ. Kernel 3.0 có 15 triệu dòng lệnh và hơn 1.300 nhà phát triển các nhân có đóng góp cho phiên bản này của nhân Linux. Các nhà phát triển tình nguyện đóng góp 16% tất cả thay đổi của nhân Linux vào năm 2011. Những thay đổi khác đến từ những nhà phát triển phần mềm chuyên nghiệp, những người được các công ty thuê để gửi mã cho kernel. Năm 2011, các nhà phát triển Red Hat đã đóng góp 10% các thay đổi được thực hiện cho kernel, doanh nghiệp đóng góp lớn thứ hai là Intel, tiếp theo là IBM và Novell. Mặc dù lúc đó Nokia đã từ bỏ hệ điều hành cho điện thoại thông minh dựa trên nhân Linux của mình là MeeGo, nhưng năm 2011, các nhà phát triển Nokia vẫn đóng góp nhiều mã cho nhân Linux hơn so với các nhà phát triển được Google thuê, đã phát hành Android vào năm 2007 và Chrome OS vào năm 2009. Đến năm 2011, Microsoft dao động như là doanh nghiệp đóng góp nhiều thứ 17 cho hạt nhân. Các nhà phát triển của nó đã lần đầu tiên bắt đầu đóng góp cho kernel vào năm 2009 để cải thiện hiệu năng của các máy ảo Linux chạy trên trình ảo hóa Windows Hyper-V.
Các hạt nhân ổn định 3.x.y đã được phát hành cho đến 3.19 trong tháng 2 năm 2015, với các phiên bản phát triển mang ký hiệu -rc. Để giải thích cho bản phát hành bản vá đặc biệt thường xuyên, series v3 của kernel đã thêm một chữ số thứ tư vào đánh số phiên bản. tháng 4 năm 2015, Torvalds đã phát hành phiên bản kernel 4.0. Vào tháng 2 năm 2015, nhân Linux đã nhận được sự đóng góp của gần 12.000 lập trình viên từ hơn 1.200 công ty, bao gồm một số nhà cung cấp phần mềm và phần cứng lớn nhất thế giới. Phiên bản 4.1 của nhân Linux, được phát hành vào tháng 6 năm 2015, chứa hơn 19,5 triệu dòng mã được đóng góp bởi gần 14.000 lập trình viên.