Twórca | Linus Torvalds |
---|---|
Opracowany przez | Linus Torvalds i tysiące współpracowników |
Pierwsza wersja | 0,01 (17 września 1991) |
Ostatnia wersja | 5.12 (25 kwietnia 2021) |
Kaucja |
git: //git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git |
Stan projektu | W ciągłym rozwoju |
Napisane w | C , asembler i C ++ |
Środowisko | Typ UNIX |
Języki | język angielski |
Rodzaj | Modułowy rdzeń monolityczny |
Polityka dystrybucji | Wolny |
Licencja | GPLv2 , z wyjątkiem zastrzeżonych obiektów BLOB |
Stronie internetowej | www.kernel.org |
Jądro Linux to jądro z UNIX . Jest używany w kilku systemach operacyjnych, w tym GNU / Linux (powszechnie nazywanym „Linux”) i Android . Jądro Linuksa jest częściowo wolnym oprogramowaniem (zawierającym bloki BLOB i niewolne moduły — patrz Linux-libre ) opracowanym głównie w języku C przez tysiące ochotników i pracowników współpracujących w Internecie .
Jądro jest sercem systemu, to jest ten, który dba o dostarczanie oprogramowania z pomocą interfejsu programowania wykorzystania sprzętu. Jądro Linuksa zostało stworzone w 1991 roku przez Linusa Torvaldsa dla kompatybilności z PC . Pierwotnie zaprojektowany dla architektury procesora x86 , został później przeniesiony na wiele innych, w tym m68k , PowerPC , ARM , SPARC , MIPS i RISC-V . Znajduje zastosowanie w bardzo szerokiej gamie urządzeń, od systemów wbudowanych po superkomputery , w tym telefony komórkowe i komputery osobiste .
Jego główne cechy to wielozadaniowość i wielodostępność . Respektuje standardy POSIX, co czyni go godnym spadkobiercą systemów UNIX . Początkowo jądro zostało zaprojektowane jako monolityczne. Ten techniczny wybór był okazją do gorących debat między Andrew S. Tanenbaumem , profesorem Wolnego Uniwersytetu w Amsterdamie, który stworzył Minixa , a Linusem Torvaldsem . Andrew Tanenbaum argumentował, że współczesne jądra muszą być mikrojądrami, a Linus odpowiada, że wydajność mikrojądra nie jest dobra. Od wersji 2.0 jądro, mimo że nie jest mikrojądrem, jest modułowe, to znaczy niektóre funkcje mogą być dodawane lub usuwane z jądra w locie (w użyciu).
W 1991 roku na rynku komputerów osobistych zdominowały komputery kompatybilne z komputerami osobistymi i ogólnie współpracujące z systemami operacyjnymi MS-DOS , Windows lub OS/2 . Sprzedawane od 1986 roku komputery PC oparte na mikroprocesorze Intel 80386 zaczynają być przystępne cenowo. Jednak systemy konsumenckie nadal są zgodne ze starszymi 16- bitowymi procesorami Intela i niewłaściwie wykorzystują 32-bitowe możliwości i jednostkę zarządzania pamięcią 80386.
W tym roku fiński student Linus Torvalds , niedysponowany niską dostępnością serwera komputerowego UNIX na Uniwersytecie Helsińskim , podejmuje się opracowania jądra systemu operacyjnego , które później zostanie nazwane " Linux " . Linus chce więc przede wszystkim zrozumieć działanie swojego komputera opartego na procesorze Intel 80386.
Linus Torvalds uczył się z systemem operacyjnym Minix . Ponieważ projektant Minix - Andrew Tanenbaum - odmawia włączenia wkładu mającego na celu ulepszenie Minixa, Linus postanawia zaplanować zastępstwo dla Minixa. Zaczyna od stworzenia prostego emulatora terminala , za pomocą którego łączy się za pomocą modemu z serwerem komputera swojej uczelni. Po dodaniu różnych funkcji, w tym systemu plików zgodnego z systemem Minix, Linus kieruje swój projekt na coś bardziej ambitnego: jądro zgodne ze standardami POSIX . Do tego jądra dostosowuje wiele dostępnych komponentów systemu operacyjnego GNU , aby uzyskać pełniejszy system operacyjny.
25 sierpnia 1991, ogłasza na forum dyskusyjnym Usenet : comp.os.minix , że pisze system operacyjny, ale jako "hobby, które nie będzie tak duże i profesjonalne jak gnu". 5 października 1991, ogłasza dostępność wersji roboczej 0.02 swojego jądra, przy czym wersja 0.01 jest rozpowszechniana bardziej niż poufnie. Wreszcie wluty 1992, wersja 0.12 została wydana na licencji GNU General Public License (GNU GPL) zamiast licencji ad hoc, która wcześniej zakazywała komercyjnej redystrybucji.
Wersja 1.0.0 systemu Linux została wydana 14 marca 1994 z 176 250 liniami kodu.
Projekt, początkowo nazywany przez twórcę Freax , swoją ostateczną nazwę zawdzięcza Ari Lemmke , administratorowi serwera FTP ftp.funet.fi , który obsługuje prace Linusa Torvaldsa w katalogu o nazwie Linux . Było to pierwsze pojawienie się terminu składającego się z „Linus” i „UNIX”, który później stał się zarejestrowanym znakiem towarowym w imieniu Linusa Torvaldsa. Pingwin Tux , zaprojektowany przez Larry'ego Ewinga w 1996 roku, staje się maskotką projektu.
Wydanie kodu Linuksa wywołało duże zainteresowanie społeczności użytkowników Minixa. Od tego czasu w projekcie wzięło udział tysiące programistów-wolontariuszy na całym świecie. Model rozwoju Linuksa jest nadal uważany za typowego przedstawiciela organizacji charakterystycznego dla dużych kolektywów open source . Dziś w projekcie biorą udział setki pasjonatów i firm różnej wielkości, których koordynatorem jest Linus Torvalds. Eric Raymond opisuje w eseju La Cathédrale et le Bazar (2001) model rozwoju jądra Linuksa i części wolnego oprogramowania .
W systemach wbudowanych Linux jest często używany z narzędziami uClibc i BusyBox , które zostały opracowane dla sprzętu o szczególnie ograniczonej pojemności pamięci. Możliwość skompilowania jądra Linux z opcjami specjalnie dostosowanymi do sprzętu docelowego daje programistom wiele możliwości optymalizacji.
Jeśli na początku swojej historii rozwój jądra Linuksa był prowadzony przez programistów-wolontariuszy, dziś głównymi współtwórcami jest grupa firm, często konkurujących, takich jak Red Hat , Novell , IBM czy Intel .
IBM miał swój własny system UNIX o nazwie AIX, ale przejście na Linuksa – oprócz umożliwienia programistom i opiekunom systemu AIX przypisywania do innych projektów – ma również tę zaletę, że umożliwia odzyskiwanie bez trudności z przenoszeniem aplikacji lub nowych szkoleń dla zespołów IT , od serwerów PC z Linuksem do Linuksa w serii i, p i z.
Jądro Linux licencja jest GNU General Public License w wersji 2. Niniejsza licencja jest wolna, która pozwala na używanie, kopiowanie i modyfikowanie kodu źródłowego zgodnie z własnymi życzeniami i potrzebami. W ten sposób każdy, kto posiada niezbędną wiedzę, może uczestniczyć w testowaniu i ewolucji jądra .
Między marcem a Kwiecień 2005, liczba linii kodu podwoiła się (z 4,4 mln do 8,8 mln). Na początku 2009 r. wersja 2.6.30 jądra linuksowego składała się z ponad 11,5 miliona linii kodu w 28 000 plików, podczas gdy 2,8 miliona linii zostało dodanych między Bożym Narodzeniem 2008 astyczeń 2010.
Od 2005 roku do połowy 2009 roku w tworzeniu jądra uczestniczyło 5000 programistów i 500 firm. Liczba oferowanych łatek rośnie, zwłaszcza od wersji 2.6.25.
Linus Torvalds , twórca jądra Linuksa, jest oficjalnym opiekunem od jego powstania w 1991 roku . Jest rodzajem „życzliwego dyktatora”, autorytetu w zakresie wyborów technicznych i organizacyjnych. Różne wersje jądra opublikowane przez Linusa Torvaldsa nazywane są po angielsku „mainline” lub „vanilla”. Są to jądra waniliowe, które są integrowane przez dystrybutorów, czasami z dodatkiem łatek bezpieczeństwa, poprawek błędów lub optymalizacji.
Linus Torvalds wprowadził radykalną zmianę w sposobie tworzenia systemów operacyjnych, w pełni wykorzystując potęgę Internetu.
Proces rozwoju Linuksa jest publicznie dostępny w Internecie: źródła jądra są tam widoczne dla wszystkich, zmiany w tych źródłach są publikowane i przeglądane w Internecie, a także są widoczne dla wszystkich. Od samego początku przyjęto przyrostowy i szybki cykl rozwoju (dziś nowa wersja wypuszczana jest co około 9 tygodni), co umożliwiło zbudowanie wokół Linuksa i Internetu w kolejnych warstwach dynamicznej społeczności złożonej z programistów, firm i użytkowników.
Numery wersji jądra składają się z trzech liczb: pierwsza to numer główny, druga to numer pomocniczy. Przed wydaniem wersji 2.6.x nawet drobne liczby wskazywały na wersję stabilną, a nieparzyste liczby pomocnicze na wersję rozwojową. Tak więc wersje 2.2, 2.4 są stabilne, wersje 2.3 i 2.5 to wersje rozwojowe. Jednak od wersji jądra 2.6 ten stabilny / rozwojowy model numeracji został wycofany i dlatego nie ma specjalnego znaczenia dla liczb nieparzystych lub nawet mniejszych. Trzecia liczba oznacza wersję, która odpowiada poprawkom błędów, poprawkom bezpieczeństwa lub dodatkowi funkcjonalności, na przykład 2.2.26, 2.4.30 lub 2.6.11. O przejściu na wersję 3.0 zdecydował Linus Torvalds z okazji 20-lecia jądra Linuksa, nawet jeśli prawdziwy powód był dość arbitralny.
Od Marzec 2005(data wydania jądra 2.6.11), Greg Kroah-Hartman i Chris Wright próbują utrzymać stabilną gałąź jądra waniliowego Linusa Torvaldsa. Ich celem jest dalsza stabilizacja jądra poprzez zintegrowanie prostych i zwięzłych łatek naprawiających błędy, zabezpieczających lub optymalizujących, które spełniają surowe kryteria. Ta gałąź nie integruje nowych funkcjonalności. Ich publikacje są oznaczone czwartym numerem wersji, na przykład 2.6.11.1 lub 2.6.11.6. Funkcjonowanie techniczne i organizacyjne tej branży będzie testowane w czasie, w perspektywie średnio- i długoterminowej.
Istnieje wiele łatek dostępnych w Internecie w społeczności programistów jądra Linuksa. Najbardziej znane to te Andrew Mortona z przyrostkiem -mm, które integrują łatki funkcjonalności i wysoce pożądane optymalizacje oraz WOLK ( praca nad przeładowanym jądrem , przeciążone funkcjonalnie jądro).
Dystrybucja Ubuntu Studio zawiera również jądro o niskim opóźnieniu ( Low-latency Kernel ) zapewniające mniejsze opóźnienia dla aplikacji audio, jednak kosztem większego obciążenia samego systemu (z powodu pętli czujności, odpytywania ) i tym samym zmniejszenia w swojej przepustowości . To jądro jest rzadko używane poza tworzeniem muzyki, która wymaga jak najmniejszego opóźnienia między uderzeniem w klawisz a wytworzeniem odpowiedniego efektu.
Linux w czasie rzeczywistymŁaty Ingo Molnár z przyrostkiem -rt są używane przez multimedialne dystrybucje Linuksa, takie jak DeMuDi ; zapewniają wydajność w czasie rzeczywistym niezbędną do prawidłowego funkcjonowania profesjonalnej multimedialnej stacji roboczej. Ingo Molnar jest także twórcą debuggera jądra kgdb .
Wersja | Przestarzały | Główne ulepszenia |
---|---|---|
0,01 | 17 września 1991 | Poufna dystrybucja (10 000 linii kodów). |
0,02 | 5 października 1991 | Reklamy w usenecie, system prawie bezużyteczny. |
0,03 | Październik 1991 | bash i gcc dostępne w wersji binarnej. |
0,10 | grudzień 1991 | Pierwsze wkłady zewnętrzne, internacjonalizacja klawiatury. |
0,11 | Środek-grudzień 1991 | Sterownik do dyskietek, SCSI w fazie rozwoju. |
0,12 | 5 stycznia 1992 r. | Pamięć wirtualna, system użytkowy, więcej obsługiwanego sprzętu, dystrybuowane na licencji GNU GPL , konsole wirtualne. |
0,95 | 7 marca 1992 r. | Init / login, przeniesiono X Window , istnieje grupa dyskusyjna : alt.os.linux |
0,95a | 17 marca 1992 r. | Nowy opiekun dyskietki z systemem Linux : Jim Winstead . |
0,96 - 0,99 poziom aktualizacji 15Z | 2 lata rozwoju, w celu dodania funkcjonalności i poprawek, comp.os.linux * Fora są najczęściej odwiedzane w usenecie i są 3 razy reorganizowane, co oznacza, że społeczność rośnie i jest bardzo aktywna. | |
1,0 | Marzec 1994 | Jądro Linux jest stabilne dla produkcji i zapewnia usługi klasycznego systemu UNIX (176 000 linii kodu). |
1.2 | Marzec 1995 | Wiele innych architektur procesorów, ładowalnych modułów itp. (311 000 linii kodu) |
2,0 | Lipiec 1996 | PowerPC , Multiprocessor , więcej obsługiwanego sprzętu, pełniejsze zarządzanie siecią, wygląd maskotki Tux . |
2.1.80 | styczeń 1998 | Wstępne wsparcie dla architektur ARM |
2.2 | styczeń 1999 | Bufor ramki , NTFS , Joliet , IPv6 ,… (1,8 miliona linii kodu) |
2,4 | styczeń 2001 | USB , PCMCIA , I2O, NFS 3, x86-64 ... (3.378 milionów linii kodu) |
2,6 | grudzień 2003 | ALSA , preemptible kernel, ACL , NFS 4,… (5,93 miliona linii kodu) |
2.6.16 LTS | 20 marca 2006 r. | Pierwsza wersja z rozszerzoną obsługą, obsługą OCFS2, obsługą procesorów Cell , dodano 13 nowych wywołań systemowych dla platform x86 i x86_64, obsługę cpufreq dla Power Mac G5s , ulepszone zarządzanie energią dla niektórych urządzeń, obsługa protokołu IPv6 dla protokołu DCCP , zarządzanie ACL dla systemu plików CIFS , zarządzanie systemem plików HFSX , obsługa wykonywania plików wykonywalnych z systemu plików plan9,…. |
2.6.17 | 17 czerwca 2006 | Obsługa wielordzeniowych procesorów Sun firmy Niagara, obsługa chipsetu Wi-Fi Broadcom 43xx, optymalizacja obrazu jądra przy starcie na x86, nowy harmonogram zoptymalizowany pod kątem procesorów wielordzeniowych…. |
2.6.18 | 19 września 2006 | Narzędzie Lockdep, Dziedziczenie priorytetów, zarządzanie priorytetami za pomocą SMPnice, harmonogram CFQ,…. |
2.6.19 | 29 listopada 2006 | System plików GFS2, szyfrowanie eCryptfs, podsystem libata itp. |
2.6.20 | 4 lutego 2007 r. | Wirtualizacja KVM, obsługa UDP-Lite, asynchroniczne skanowanie SCSI,…. |
2.6.21 | 25 kwietnia 2007 r. | Interfejs parawirtualizacji VMI (Virtual Machine Interface), Dynticks i Clockevents,…. |
2.6.22 | 8 lipca 2007 r. | Całkowicie nowa warstwa Wi-Fi, alokator pamięci SLUB, harmonogram we/wy CFQ , nowe sterowniki… (8,499 mln linii kodu). |
2.6.23 | 9 października 2007 r. | Nowy harmonogram zadań CFS , środowisko obsługi sterowników przestrzeni użytkownika UIO zintegrowane z jądrem, domyślny alokator pamięci SLUB,…. |
2.6.24 | 24 stycznia 2008 | Ujednolicenie architektur i386 i x86-64 , wektorowe I/O , uwierzytelnianie urządzeń peryferyjnych USB, planowanie grupowe z CFS ,…. |
2.6.25 | 16 kwietnia 2008 | SMACK (alternatywa dla SELinux ), zarządzanie magistralą CAN , przeprojektowanie timerfd , usprawnienie zarządzania w czasie rzeczywistym …. |
2.6.26 | 13 lipca 2008 | Integracja debuggera jądra kgdb , początek wsparcia dla zunifikowanych sieci o topologii mesh , wsparcie dla ekranów brajlowskich , wsparcie dla PAT dla architektury x86 , montaż "--bind" tylko do odczytu, zarządzanie prawami bezpieczeństwa według procesów ( securebits ), ulepszona wirtualizacja z KVM …. |
2.6.27 LTS | 9 października 2008 | Zestaw sterowników kamer internetowych GSPCA , wieloplikowa warstwa sieciowa, UBIFS , system debugowania ftrace (en) …. |
2.6.28 | 24 grudnia 2008 | Menedżer pamięci dla kart graficznych GEM ( Graphics Execution Manager ), system plików ext4 , lepsza obsługa zarządzania pamięcią, zarządzanie sieciami UWB …. |
2.6.29 | 23 marca 2009 | Integracja Btrfs , squashfs , bateryjnego WiMAX , ulepszenie eCryptfs (w) , integracja KMS , itp.. |
2.6.30 | 9 czerwca 2009 | Integracja NILFS , lokalnej pamięci podręcznej dla zdalnych systemów plików , modułu bezpieczeństwa TOMOYO, obsługa sprzętu do obiektowej pamięci masowej (11.561 mln linii kodu). |
2.6.31 | 9 września 2009 | Obsługa USB 3.0, interfejs API wyglądu fsnotify do powiadamiania o zdarzeniach związanych z systemem plików, defragmentacja dysku hot do ext4 , monitor wydajności PerfCounters . |
2.6.32 LTS | 3 grudnia 2009 | Zapisywanie danych przez BDI, Zmiany w harmonogramie CFS, Dynamiczne zarządzanie energią, Zarządzanie integralnością TXT , devtmpfs do wyświetlania listy urządzeń, technika KSM zmniejszająca zużycie pamięci systemów zwirtualizowanych za pomocą KVM , gniazdo odpowiedzialne za funkcję TRIM przez Btrfs . |
2.6.33 LTS | 24 lutego 2010 | System plików DRBD , Nowy sterownik , Transakcja TCP przez plik cookie, kontroler IO-Block, obsługa funkcji TRIM przez ext4 . |
2.6.34 LTS | 16 maja 2010 | Systemy plików Ceph i LogFS, asynchroniczne czuwanie urządzeń, mechanizm bezpieczeństwa GTSM, Lockdep-RCU, VGA-Switcheroo. |
2.6.35 LTS | 2 sierpnia 2010 | Funkcja Cpu_stop, zarządzanie energią, kompresja pamięci, wydajność sieci z RPS i RFS, jakość usług z pm_qos, zarządzanie przerwaniami. |
2.6.36 | 20 października 2010 | AppArmor , przepisanie funkcji OOM Killer , narzędzie fanotify , optymalizacje VFS . |
2.6.37 | 5 stycznia 2011 | Poprawiona wydajność ext4 i śledzenie mechanizmów ( etykieta skoku ) obsługa FITRIM (a TRIM deferred) dla ext4 , wprowadzenie alokatora pamięci memblock do wymiany early_res, bateria PPTP , pierwszy sterownik wifi Broadcom (wszyscy główni twórcy wifi mają teraz darmowy sterownik). |
2.6.38 | 15 marca 2011 | Nowe makroskopowe zarządzanie stronicowaniem , optymalizacja rozdzielczości ścieżki dostępu . |
2.6.39 | 18 maja 2011 | Wątkowe podejście do podłączania urządzeń peryferyjnych , oficjalna integracja ipsetów, obsługa FITRIM ( opóźnionego TRIM ) przez Btrfs , koniec blokady globalnej ( Big Kernel Lock ). |
3,0 LTS | 22 lipca 2011 | Nowe buforowanie stron pamięci, ulepszenia Btrfs , nowy interfejs dostępu do alarmów BIOS , usuwanie prefetch, kompilator on-the-fly dla instrukcji porównujących stos sieciowy. |
3.1 | 24 października 2011 | Architektura OpenRISC , zarządzanie zużyciem przez cpupower , dodatki funkcji dla KVM , poprawa zarządzania pamięcią Xen , zarządzanie przepustowością dysku , wirtualny system plików , protokół BATMAN , dodanie sterowników NFC |
3.2 LTS | 4 stycznia 2012 | Poprawa CFS , ext4 , Btrfs , MPI sterowników i grafika, rozbudowany moduł kontrolny algorytmy weryfikacji kryptograficznej i zmniejszenie stopy proporcjonalny do TCP stos , zarządzanie cyfrowymi generatorów liczb losowych i sześciokątnym secAMD Bulldozer architektur , dynamicznego zapisu zwrotnego zarządzania , montaż realizacji SHA -1 , Blowfish i Twofish , RAID-5 dla EXOFS (en) , API Dynamic Voltage and Frequency Scaling , asynchroniczny odczyt dla SMB . Wersja 3.2.5 naprawia błąd, który istniał od wersji 2.6.38 w Active State Power Management (ASPM), który powodował nadmierne zużycie energii. |
3,3 | 19 marca 2012 | Integracja sterowników Android , libgcrypt , Open vSwitch, sterownik sieciowy „zespołowy”, architektura C6X, dodanie cgroup dla zasobów sieciowych, „naturalizacja” memcg, nowe limity infrastruktury „ kolejki bajtów ”, bufor DMA , PAE dla procesorów ARM , obsługa LLCP i NVM Express , nowy menedżer baterii, ulepszenie ext4 i Btrfs , „gorąca” rekonstrukcja RAID, wyjście audio przez HDMI |
3.4 | 20 maja 2012 r. | Architektura X32 , dm-verity na płytce peryferyjnej , ujednolicenie zarządzania zegarami dla architektury ARM , moduł bezpieczeństwa YAMA , rozszerzenie ext4 , Btrfs , sterowniki grafiki i perf , obsługa Universal Flash Storage i HSI , algorytm Camellia w asemblerze, domeny IRQ |
3,5 | 21 lipca 2012 | Algorytm CoDel dla stosu TCP, przebudowa tabeli wyjątków x86, lepsza obsługa EDAC , NUMA , przestrzeni nazw użytkowników i logów jądra, ulepszone sterowniki Btrfs , ext4 , perf oraz AMD i intel , metoda autosleep , filtrowanie wywołań systemowych przez Seccimp, sondy uprobes, tryb naprawy dla połączeń TCP |
3,6 | 30 września 2012 | Połączone czuwanie i hibernacja, oszczędzanie energii dla ATA i PCIe, ulepszenia TCP , Btrfs i ext4 , generowanie entropii i sterowniki graficzne, usuwanie pamięci podręcznej routingu IPv4, zamiana NFS, lepsza obsługa dysków SSD w macierzy RAID |
3,7 | 11 grudnia 2012 | Wieloplatformowa kompilacja, wirtualizacja i wersja 64-bitowa dla architektury ARM, Supervisor Mode Access Prevention , zarządzanie modułem sygnatur przez MODSIGN, Wii Balance Board , procesor SPARC T4 (w) , przepisanie KMS i Nowy, ulepszony sterownik Radeon, Systemy plików TCP , perf , Btrfs i ext4 , NAT IPv6 , VXLAN, czyszczenie nagłówków |
3,8 | 19 lutego 2013 r. | Koniec obsługi i386 , dodano obsługę POWER8 , ulepszony harmonogram NUMA , ulepszone sterowniki graficzne Tegra , Intel , Nouveau i Radeon , nowy system plików F2FS oraz ulepszone Btrfs i ext4 , ulepszony Netlink , ulepszone szyfrowanie algorytmów , zarządzanie Wi-Fi 802.11ac i 802.11ad , sieciowe przestrzenie nazw dla użytkowników, implementacja RFC5961. Dodano kontenery LXC . |
3,9 | 29 kwietnia 2013 r. | Nowy tryb czuwania, przegrupowanie architektur ARM, ulepszenie sterowników graficznych Intel , Nouveau i Radeon , RAID 5 i 6 dla Btrfs , ulepszenia IPv6 , nowy filtr w Netfilter , blokowanie filtrów na gnieździe , pamięć podręczna mappera w celu korzystania z jednego urządzenia jako pamięć podręczna innego, ulepszonego algorytmu LZO |
3.10 LTS | 30 czerwca 2013 r. | Dodano obsługę Unified Video Decoder (w) , integrację Bcache SSD / HDD , znacznie ulepszoną obsługę procesorów Intel Haswell , ulepszoną obsługę 64-bitowych procesorów ARM, ulepszone funkcje wirtualizacji i dodanie sterowników audio. Jak w przypadku każdej nowej wersji, dostępne są aktualizacje dla systemów plików ext4 i btrfs |
3.11 | 2 września 2013 r. | Kompresja stron wymiany, kompresja jądra w LZ4 dla architektury ARM, optymalizacja tworzenia plików tymczasowych, usprawnienia dla architektur ARM i Aarch64, sterowniki graficzne intel, nVidia i ATI/AMD, redukcja zużycia kart graficznych przez Dynamic Power Zarządzanie i zarządzanie energią w stanie aktywnym , ulepszenia ext4 , Btrfs, XFS, F2FS i Luster |
3.12 LTS | 3 listopada 2013 r. | Poprawiona wydajność cpufreq , węzły renderujące dla DRM , zarządzanie prawami dla buforów graficznych, ramki informacyjne HDMI i ultra HD, głęboki sen dla procesorów graficznych Haswell, automatyczne wyłączanie i dekodowanie sprzętowe VP3-VP4 dla kart nVidia, lepsze zarządzanie energią dla ATI / AMD karty, obsługa rdzeni graficznych Adreno, poprawiona wydajność ext4 i F2FS |
3,13 | 20 stycznia 2014 r. | Mechanizm UEFI Common Platform Error record , earlyprintk dla UEFI , seqcount/seqlocks in lockdep, automatyczne równoważenie NUMA, ograniczenie zużycia danych Intel, ulepszony sterownik dla kart GPU Adreno ARM i nVidia, dźwięk przez HDMI i GPU do zarządzania energią dla AMD/ATI, procesory zarządzania Broadwell (mikroarchitektura) (en) i Display Serial Interface , zastąpienie iptables przez nftables , wiele kolejek do zapisu plików przez systemy wielordzeniowe , lepsze zarządzanie loginuid , ulepszenie / dev / urandom |
3.14 LTS | 31 marca 2014 r. | Obsługa koprocesorów kryptograficznych AMD , chipset Intel Merrifield i nowe procesory ARM i MIPS, ulepszone sterowniki graficzne AMD i Intel, akceleracja dla procesorów graficznych nVidia GK110 / GK208, tymczasowe adresy IPv6 w przestrzeni użytkownika, autocap TCP, debugger dla filtra pakietów BSD , ulepszenie Btrfs i F2FS , usprawnienie wirtualizacji przez Xen . |
3.15 | 8 czerwca 2014 | Obsługuje tryb mieszany EFI , obsługuje zestaw instrukcji AVX-512 (w) , ulepszony harmonogram, porzucenie starych platform x86, ulepszone zarządzanie klawiszami jasności, ulepszone darmowe sterowniki graficzne, ulepszona ochrona przed atakami typu odmowa usługi , obsługiwany poziom bezpieczeństwa Bluetooth 4 , stabilizowane systemy plików ext3 / 4 i ulepszone XFS, Btrfs, F2FS |
3.16 LTS | 3 sie 2014 | Ulepszone darmowe sterowniki graficzne, TCP Fast Open dostępne dla IPv6, poprawki luk, ulepszenia systemów plików XFS, Btrfs, F2FS, Reiser4 i NFS |
3,17 | 5 października 2014 r. | Obsługa trybu bezczynności przez generację Broadwell (mikroarchitektura) (en) , obsługa nowych układów ARM, obsługa końcowych architektur IBM POWER3 i IBM RS64 , ulepszone bezpłatne sterowniki graficzne, poprawki luk w zabezpieczeniach, ulepszenia systemów plików F2FS, NFS, XFS i Btrfs |
3.18 LTS | 7 grudnia 2014 | Przyspieszony stan gotowości, ulepszona obsługa CLANG , bezpłatne ulepszenia sterowników graficznych, poprawki luk w zabezpieczeniach, ulepszenia systemu wirtualizacji Xen i KVM , F2FS, NFS, OverlayFS , ulepszenia systemu plików Ceph |
3.19 | 8 lutego 2015 r. | Obsługa nowych układów ARM , obsługa technologii Intel MPX (w) , ulepszone zarządzanie problemem roku 2038 , poprawa darmowych sterowników graficznych , poprawki luk w zabezpieczeniach , ulepszenia systemu plików f2fs , NFS , OverlayFS , Ceph , Btrfs i SquashFS , ulepszenia systemów wirtualizacji Xen |
4.0 | 12 kwietnia 2015 r. | Aktualizacja jądra w locie, obsługa chipów Trusted Platform Module 2.0, bezpłatne ulepszenia sterowników graficznych, poprawki luk w zabezpieczeniach, ulepszenia systemu plików F2FS, OverlayFS, Ceph i Btrfs, ulepszenia systemu wirtualizacji KVM i Virtio |
4.1 LTS | 21 czerwca 2015 | Obsługa nowych chipów (ARM, Xilinx , Qualcomm ), usprawnienie zarządzania energią, gruntowna aktualizacja architektury x86 , usunięcie luk, usprawnienie darmowych sterowników graficznych, systemów plików i systemów wirtualizacji |
4.2 | 30 sierpnia 2015 r. | Wsparcie dla nowych chipów (ARM, Hitachi H8 ), ulepszone blokady , ulepszona wydajność sieci, ulepszone moduły bezpieczeństwa, poprawione luki, ulepszone darmowe sterowniki graficzne, Btrfs, Ext4, FUSE, F2FS systemy plików i systemy Wirtualizacja KVM i Xen |
4,3 | 1 st listopad 2.015 | Grafika Intel Skylake włączona domyślnie, obsługa AMD Radeon R9 Fury, obsługa OpenGL dla VMware, przepisywanie sterowników NVIDIA / Nouveau, zniknięcie sterownika EXT3 (obsługiwane przez sterownik EXT4), wiele ulepszeń dla XFS, EXT4, F2FS , Btrfs, RAID5 / 6 i TRIM . |
4.4 LTS | 10 stycznia 2016 | Obsługa akceleracji grafiki w maszynie wirtualnej, usprawnienie I/O (bezpośrednie i asynchroniczne), obsługa dysków SSD z otwartym kanałem, logowanie RAID5 w warstwie MD (RAID/ LVM ), z programów eBPF mogą korzystać użytkownicy nieuprzywilejowani, nowi piloci . |
4,5 | 13 marca 2016 r. | Poprawia zarządzanie zużyciem energii. Wstępne wsparcie dla AMD PowerPlay (w) . Ogromna przeróbka architektur ARM v6 i ARM v7. |
4,6 | 15 maja 2016 r. | Dodanie systemu plików OrangeFS (pl) , dodano obsługę USB 3.1, obsługuje wersję 5 protokołu BATMAN . |
4,7 | 24 lipca 2016 r. | Zarządzanie kontrolerami Microsoft Xbox One, Apple/Intel Thunderbolt (interfejs) i USB/IP. |
4,8 | 4 września 2016 | Wspiera przetaktowywania z AMDGPU (poprzez OverDrive wsparcia). |
4,9 LTS | 11 grudnia 2016 | Ulepszenia bezpieczeństwa jądra. AMDGPU obsługuje AMD PowerPlay (w) . Kompatybilny z Raspberry Pi Zero. |
4.10 | 30 kwietnia 2017 r. | Ulepszenia (ex Amlogic S905) i poprawki (ex AMD Ryzen ). |
4.11 | 1 st May wykupu w 2017 r | Ulepszenia i poprawki. |
4.12 | 2 lipca 2017 r. | Zapewnia obsługę USB Type-C i IMSM ( Intel Matrix RAID (en) Storage Manager). |
4.13 | 3 września 2017 r. | Ulepszenia ( ext4 , I/O , akceleracja TLS ) i poprawki. |
4.14 LTS | 12 listopada 2017 r. | Zwiększona maksymalna pamięć RAM zarządzana na architekturach x86_64 , Wsparcie dla nowych urządzeń ARM i poprawek. |
4.15 | 28 stycznia 2018 | Ulepszenia dotyczące odporności na Meltdown (podatność) i Spectre (podatność) , wiele ulepszeń dotyczących AMDGPU . |
4.16 | 16 maja 2018 r. | Ulepszenia dotyczące odporności na luki w zabezpieczeniach procesorów. Dodanie drugiej części kodu dotyczącej AMD Secure Encrypted Virtualization (en) . |
4.17 | 3 czerwca 2018 r. | Ulepszenia dla jądra 4.17. |
4.18 | 12 sierpnia 2018 r. | Ulepszenia dla jądra 4.18. |
4.19 LTS | 22 października 2018 r. | Ulepszenia dla jądra 4.19. |
4.20 | 23 grudnia 2018 | Ulepszenia dla jądra 4.20. |
5.0 | 3 marca 2019 r. | Udoskonalenie darmowego sterownika dla AMD Radeon VII, podniesienie renderowania do poziomu, którego nie osiągnął żaden darmowy sterownik GPU, i konkurowanie bezpośrednio z zastrzeżonym sterownikiem dla Nvidii. . |
5.1 | 5 maja 2019 r. | Ulepszenia dotyczące VFS z dodatkiem fsopen, ulepszenia asynchronicznego io z integracją io_uring. .
|
5.2 | 7 lipca 2019 r. | Ulepszenia w jądrze 5.2. |
5,3 | 15 września 2019 r. | Ulepszenia dotyczące jądra 5.3. |
5.4 | 24 listopada 2019 r. | Ulepszenia dotyczące jądra 5.4. |
5,5 | 26 stycznia 2020 | Ulepszenia dla jądra 5.5. |
5,6 | 29 marca 2020 | Ulepszenia dla jądra 5.6. |
5,7 | 31 maja 2020 r. | Ulepszenia dla jądra 5.7. |
5,8 | 2 sie 2020 | Ulepszenia w jądrze 5.8. |
5,9 | 11 października 2020 r. | Ulepszenia w jądrze 5.9. |
5.10 | 13 grudnia 2020 r. | Ulepszenia dla jądra 5.10. |
5.11 | 14 lutego 2021 | Ulepszenia dla jądra 5.11. |
Źródło: www.kernel.org
Rdzeń od dawna utrzymywany był bez kontroli wersji systemu , głównie dlatego, że Linus Torvalds nie lubił scentralizowanych systemów kontroli wersji.
W 2002 r. jądro przeszło na Bitkeeper , zastrzeżony system kontroli wersji, który spełniał wymagania techniczne Linusa Torvaldsa. Korzystanie z tego oprogramowania było oferowane bezpłatnie programistom jądra . Jednak nie będąc wolnym oprogramowaniem , wybór tego produktu wywołał kontrowersje w społeczności. System nie był na przykład interoperacyjny z systemami kontroli wersji typu open source, takimi jak CVS i SVN .
W Kwiecień 2005, wysiłki Andrew Tridgella, by przeprowadzić inżynierię wsteczną Bitkeepera, doprowadziły BitMover, wydawcę tego oprogramowania, do zaprzestania wsparcia dla rozwoju Linuksa. W odpowiedzi Linus Torvalds i kilku innych opracowali nowy system kontroli wersji: Git . Pierwsza wersja Gita została napisana w ciągu kilku tygodni, a dwa miesiące później została wydana nowa wersja jądra opracowanego za pomocą Git. Rozwój i utrzymanie oprogramowania Git zostało następnie szybko pozostawione Junio Hamano i społeczności. Od tego czasu został szeroko przyjęty, między innymi przez społeczność wolnego oprogramowania.
Podobnie jak wszystkie programy komputerowe, jądro Linuksa jest napisane jako kod źródłowy i musi zostać przekształcone w wykonywalny plik binarny, aby mógł zostać zrozumiany przez mikroprocesor.
O ile kod źródłowy jądra Linuksa zawiera bardzo dużą ilość funkcjonalności, użytkownik może zdecydować się na integrację tylko tych, które są dla niego przydatne lub najlepiej dostosowane (wiele funkcjonalności jest współbieżnych): jest to etap konfiguracji jądra.
Zdecydowana większość dystrybucji GNU/Linux instaluje wstępnie skompilowane jądro, które spełnia potrzeby stacji roboczych i serwerów. Dlatego rzadko zdarza się, aby użytkownik Linuksa musiał skompilować jądro. Kompilacja umożliwia dostosowanie jądra do konkretnych potrzeb, takich jak obsługa nietypowego sprzętu, aktywacja eksperymentalnych funkcjonalności czy adaptacja do konkretnych platform, takich jak systemy wbudowane.
Kod źródłowy jądra Linux jest dostępny na kernel.org , ale dystrybucje GNU / Linux zapewniają również spakowane źródła ich depozytów.
Najważniejszym krokiem w budowaniu niestandardowego jądra jest konfiguracja jądra. Opcje konfiguracyjne są zadeklarowane w pliku .config, każda z nich odpowiada funkcjonalności jądra, z której decydujemy się używać lub nie. Generalnie możliwe są trzy opcje:
Niektóre opcje są wyborem binarnym: funkcja jest zawarta w obrazie jądra lub nie jest skompilowana.
Istnieje kilka narzędzi do dostosowania konfiguracji:
Kompilacja jądra i modułów odbywa się za pomocą polecenia make. Ta operacja może zająć dość dużo czasu, jednak użycie argumentu -jskraca czas kompilacji. To ze szkodą dla reaktywności innych programów, a tym samym systemu operacyjnego. Instalacja jest zautomatyzowana, polecenia make installi make modules_installodpowiednio umożliwiają instalację obrazu jądra i jego modułów.
Aby umożliwić uruchomienie systemu z nowym obrazem jądra, konieczne jest skonfigurowanie programu ładującego ( LILO , GRUB ), aby uruchamiał obraz jądra podczas startu. Z ( GRUB , GRUB2 ) polecenie update-grub automatyzuje konfigurację.
Dystrybucja Debiana zawiera narzędzie, make-kpkgktóre automatyzuje powyższe kroki i tworzy pakiety Debiana. Pozwala to na łatwe wdrożenie na dużej liczbie komputerów. W przeciwnym razie, nadal dla Debiana, możemy wprowadzić poleceniasudo su ; make menuconfig ; make deb-pkg ; cd ../ ; dpkg -i *deb
Chociaż początkowym celem projektu było dostarczenie jądra podobnego do UNIX na architekturach x86 , dostępność źródeł pozwoliła współtwórcom na dostosowanie go do bardzo dużej liczby architektur .
Linux może działać na komputerach konsumenckich, a także na 500 topowych superkomputerach. listopad 2011 : w tym rankingu Linux był obecny na 91,4% maszyn.
Jądro jest również używane w systemach wbudowanych, wyposażonych w skromniejszy sprzęt; niektóre z najbardziej znanych przykładów to systemy nawigacji satelitarnej TomTom lub telefony z dystrybucją Linux Android .
Podczas gdy większość aplikacji została opracowana do pracy z określonymi kodowaniami znaków , konstrukcja jądra Linuksa jest taka, że używane kodowanie znaków nie jest znane. W szczególności, tak jak w starym Unixie, nazwa plików jest traktowana jako ciąg bajtów, bez możliwości poznania w sposób deterministyczny, jaki konkretnie tekst reprezentuje, przy braku znajomości używanego kodowania znaków.
Jeśli chodzi o shebang , jądro Linuksa zakłada, że skrypty będą pisane w kodowaniu znaków rozszerzającym ASCII , bez dołączania bajtu flagi przed pierwszym znakiem , co może mieć miejsce w Unicode . Jednak tekst Unicode może przejść przez jądro, zwłaszcza podczas dostępu do systemów plików NTFS lub CIFS / Samba .
Proste hobby studenta na początku, jądro Linuksa umożliwiło pojawienie się wolnych systemów operacyjnych w bezpośredniej konkurencji z innymi komercyjnymi systemami operacyjnymi. Od momentu wydania na wiele architektur (po wersji 1.0) jest celem działań prawnych :
Brad Spengler , programista w grsecurity , oskarża jądro Linuksa o to, że czasami skupia swoje wysiłki na funkcjonalności ze szkodą dla bezpieczeństwa. Twierdzi, że Linus Torvalds powiedział mu, że nie jest zainteresowany dodawaniem użytecznych opcji bezpieczeństwa w celu uniknięcia przepełnienia bufora, ponieważ spowolniłoby to ładowanie aplikacji .
Krytykuje brak osoby oficjalnie odpowiedzialnej za bezpieczeństwo, z którą można by komunikować się prywatnie i całkowicie bezpiecznie. Zamiast tego jedynym rozwiązaniem jest wysłanie wiadomości e-mail na listę dyskusyjną dotyczącą problemów z bezpieczeństwem, gdzie wykryte luki są czasami wykorzystywane do złośliwych celów przed opublikowaniem aktualizacji zabezpieczeń, podczas gdy użytkownicy Linuksa nie są świadomi istnienia tej luki.
Wreszcie, kwestionuje implementację systemu LSM od wersji 2.6 jądra, która zostałaby zaimplementowana luźno i ułatwiłaby wstawianie niewidzialnych rootkitów do systemu, przekazując je jako moduły bezpieczeństwa. Ta recenzja nie jest już istotna dzięki zmianom wprowadzonym od wersji 2.6.24.