Linus Torvalds ogłosił wydanie pierwszego jądra z nowej serii 3.x, które to upamiętnia 20 lat rozwoju tegoż oprogramowania. Zostało ono opóźnione o kilka dni, ponieważ znaleziono krytyczne błędy w VFS (Virtual File System). Torvalds poinformował o opóźnieniach w wydaniu za pomocą serwisu Google+.

Firma z Redmond dokonała wielu zmian w nowym jądrze Linuksa. Programista K. Y. Srinivasan z firmy Microsoft dokonał 343 zmian w jądrze Linuksa, co pozwoliło mu na sklasyfikowanie się na szczycie listy programistów, którzy dokonali najwięcej zmian w aktualnym cyklu wydawniczym. Lista ta tworzona jest przez serwis LWN.net. Ogólna ilość zmian w jądrze wykonanych przez Microsoft równa się 361 klasyfikując go na 7 miejscu w porównaniu do innych firm oraz grup, które dokonują zmian w jądrze. Dla porównania, niezależni programiści dokonali 1085, firma Red Hat – 1000, a Intel – 839.

Opisywane zmiany dokonane przez Microsoft, miały na celu ulepszenie sterownika dla interfejsu wirtualizacji Microsoft HyperV, opublikowanego dwa lata temu. Przez ten okres, kod był słabo rozwijany i został dwa razy usunięty z głównej gałęzi jądra przez opiekuna Grega Kroah-Hartmana. Jednakże kilka miesięcy temu, programiści Microsoftu wzięli się za poprawianie błędów, dzięki czemu znacząco poprawili jakość kodu. Zmiany te pozwoliły opiekunowi (Greg Kroah-Hartman), na włączenie sterownika do gałęzi jądra (staging).

Łączna liczba zmienionych linii kodu przez Microsoft wynosi 11 564 (1,3% całości zmian w jądrze). Dla porównania Intel dokonał 163 232 (18,1%). Zmiany dokonane przez Intela również zostały poddane krytyce, z powodu dodania nowego sterownika do ISCI, który nie został dokładnie przetestowany. Dodatkowo sterownik ten jest bardzo duży i został dodany do jądra bardzo późno. Nie było więc wystarczająco dużo czasu na wykonanie testów.

Sieć

Główne zmiany w obsłudze sieci zostały dokonane przez firmy Ralink oraz Realtek (obsługa RTL8105, RTL8111E, RTL8168E, RTL8168DP, RTL8192SE, RTL8191SE, RTL8192SE). Natomiast sterownik tg3 otrzymał wsparcie dla chipu Broadcom 5720. Większość sterowników Realteka dodał Larry Finger.

Zaimplementowano obsługę Wake-on-Wireless-LAN (WoWLAN) oraz nowy szybki filtr pakietów. Zawiera on kod Berkeley Packet Filter Just-in-Time Compiler dla architektury x86_64. Dzięki temu zaoszczędza się około 50 nanosekund na każdym pakiecie. Nowy kod jest domyślnie wyłączony. Aby z niego skorzystać należy wydać polecenie: echo "1" > /proc/sys/net/core/bpf_jit_enable.

Programista Samby – Anton Blanchard dodał nowe wywołanie systemowe – sendmmsg. Jest ono identyczne jak recvmmsg i pozwala wysyłać wiele wiadomości z wywołania jednej funkcji. Redukuje to przeciążenie wywołań syscall i zwiększa przepustowość sieci o około 20% dla transmisji UDP.

Zmiany pojawiły się również w obsłdze “Pinga”. Program ping korzysta od teraz z nowego soketu IPPROTO_ICMP, dzięki czemu nie są wymagane uprawnienia roota do wysyłania i odbioru pakietów ICMP_ECHO. Do tej pory konieczne było zastosowania bitów SUID.

-rwsr-xr-x 1 root root 34716 2010-11-15 09:08 /bin/ping

Podobną funkcjoanlność oferował system Mac OS X. Nowe jądro to również nowy sieciowy planista, który implementuje mechanizm Quick Fair Queue (QFQ).

Kolejne zmiany dotyczą sterownika carl9170. Kod jego został poprawiony i ustabilizowany. Obsługuje on te same urządzenia co usunięta starsza wersja – ar9170usb. Dodano również sterownik mwifiex dla chipów SD8787 oraz SDIO Wi-Fi, a sterownik ath9k otrzymał wsparcie dla Atheros AR9340.

Jądro Linux 3.0 otrzymało dużą liczbę sterowników dla kart Wi-Fi USB.

System plików

Twórcy jądra zoptymalizowali kod systemu plików Btrfs oraz poszerzyli go o nowe funkcje, które nadal są w fazie eksperymentalnej. Główny programista Oracla, Chris Mason powiedział, że są to największe zmiany w tym systemie plików jakie zostały do tej pory zacommitowane. Owe zmiany mogą zadecydować, czy Btrfs będzie domyślnym systemem plików w dystrybucji Fedora 16.

Ext4 wspiera technologię punch hole, która jest dostępna przez fallocate. Pozwala ona programom na informowanie systemu plików, o obszarach zajętych przez pliki, które nie zawierają danych. Systemy plików takie jak OCFS2 i XFS oferowały tę funkcjonalność od jądra 2.6.38.

Tmpfs oferuje od teraz wsparcie dla rozszerzonych atrybutów (EAs/Extended Attributes/xattr). Zaprojektował to programista Red Hata, dzięki czemu tymczasowe systemu plików mogą być uzywane do budowania pakietów RPM, które używają file capabilities.

XFS otrzymał wsparcie dla technologii online discard. Pozwala ona na bezpośrednie poinformowanie urządzenia do przechowywania danych, o zwalnianych obszarach pamięci podczas usuwania plików. Jest to bardzo interesujące rozwiązanie dla dysków SSD oraz dysków sieciowych lub macierzy. Dodatkowo Christoph Hellwig ulepszył funkcję Busy Extent Tracking.

Klient NFSa otrzymał sterownik pNFS Objects Layout dla NFSv4.1, który opisuje RFC5664.

Sterowniki

Dodano ogromną ilość sterowników do nowej wersji jądra. Nowy Kernel to wsparcie dla dużej ilości urządzeń. Jak zwykle oferuje ono wiele obejść na różnego rodzaju problemy sprzętowe.

Inżynierowie dodali nieoficjalne sterowniki do obsługi urządzenia Microsoft Kinect, jak i również cyfrowej telewizji naziemnej DVB-T2. Dodano również sterownik do obsługi chipu Sony CXD2820R DVB-T2, tuneru Micronas DRXD DVB-T.

Ulepszono sterownik XHCI dla USB 3.0 oraz k10temp, który będzie obsługiwał procesory AMD o nazwie kodowej Bulldozer. Oprócz tego sterownik fam15_power będzie pokazywał informacje na temat poboru mocy przez te procesory.

Grafiki
Intel i915-DRM/KMS, otrzymał obsługę chipów graficznych i procesorów w notebookach i komputrach PC. Niestety, ale nadal brak obsługi rdzenia graficznego procesorów Ivy Bridge, która zostanie dodana na początku przyszłego roku. Programistom nie udało się również włączyć techniki oszczędzania energią RC6.

Radeon DRM/KMS zawiera sporą liczbę ulepszeń dla wyjścia obrazu po przez DisplayPort. Sterownik zawiera także wsparcie dla rdzenia graficznego w procesorach Llano. W celu uniknięcia problemów z czarnym ekranem, wyjście dźwieku przez HDMI zostało tymczasowo wyłączone, ale można je włączyć parametrem radeon.audio=1. Warto dodać, że sterownik Radeon DRM/KMS wspiera teraz wszystkie karty graficzne Radeon.

Nouveau DRM/KMS otrzymał wsparcie technologii Pmpeg, używanej w chipsetach graficznych GeForce nv40 i nv84, w celu przeniesienia dekodowania materiuału MPEG na kartę graficzną. Do teraz nie było żadnego interfejsu w przestrzeni użytkownika do obsługi Pmpeg. Reszta zmian wsparcie technologii zmiany pomiędzy chipem graficznym w procesorze, a dedykowaną kartą graficzną, zwaną “Optimus”.

Infrastruktura

Po sześciu latach oczekiwania, jądro zawiera wszystkie składniki dla operacji Xen Dom0. Oznacza to, że można hostować system gościa jako Dom0 wraz z Xen Hypervisor. Torvalds jest rozczarowany, że się poddano podczas optymalizacji wielkości kodu. Jednakże, Jądro 3.0 wraz z Xen Hupervisorem nie oferuje bezpośredniego dostępu do USB dla systemów gości oraz nadal nie obsługuje Suspend-to-RAM.

Opóźnienie to spowodowane było priorytetem dodania KVM (Kernel-based Virtual Machine), ale dzięki temu jądro Linux 3.0 ma swojego własnego hypervisora. Wspiera on procesory VIA, wirtualny Time Stamp Counter (TSC). Ulepszono również wydajność emulatora, dzięki czemu zmniejszono obciążenia w wymianie danych pomiędzy gościem a gospodarzem.

Rozwojowy branch Qemu, od połowy maja, zawiera wszystkie potrzebne komponenty do emulowania sprzętu dla systemów gości Xen.

Dodano wsparcie dla Supervisor Mode Execution Protection (SMEP), które będzie dostępne w procesorach Intela. Funkcja ta ochrania przed bezpośrednim dostępem do kodu przez sterownik ring0.

Kernel 3.0 jest pierwszym, który wspiera 64 bitowe, wielordzeniowe procesory z architekturą Tilera (TILE-Gx). Oczyszczono również kod jądra związany z procesorami ARM.

Pojawiły się również zmiany związane z restartowaniem komputerów, które upodobniają sposób restartu Linuksa do systemu Windows. Modyfikacje objęły także ulepszenia i poprawki dla (Universal) Extensible Firmware Interface/UEFI, który zastąpić ma funkcję BIOSu, na płytach głównych. Dzięki temu nie będzie problemów z obsługą pamięci oraz dysków powyżej 2 Terabajtów.

Zmiany w jądrze 3.0 tyczyły się również jego optymalizacji. Wyłączono domyślnie opcję CC_OPTIMIZE_FOR_SIZE dla kompilatora. Usunięto również funkcję prefetching z wielu obszarów jądra. Ulepszono również zarządzanie pamięcią, obsługę funkcji cleancache (dla Core, FS, Btrfs, Ext3, Ext4).