Eksperyment — nowe jądro w starym Ubuntu
Wstęp
Ostatnio zastanawiałem się czy da radę włożyć najnowszy kernel do starej dystrybucji Linuksa i czy będzie w ten sposób działać bez problemowo. Teoretycznie powinno się dać, gdyż kernel Linuksa ma stabilne ABI dla aplikacji od dawna (czego pilnuje Linus Torvalds), więc nie powinien mieć żadnych problemów z odpaleniem starego oprogramowania. A jak w praktyce? To właśnie chciałbym sprawdzić.Najnowsza stabilna wersja kernela na dzień dzisiejszy to 4.9.9. Wersja 4.10 ma jeszcze status RC (Release Candidate) więc skupie się na tej pierwszej. Jeżeli chodzi o Ubuntu, to wybrałem wersję 9.04 (kwiecień 2009 rok), ze względu na sentyment do niej (moja pierwsza wersja Ubuntu). Oficjalnie ostatnia wersja kernela w tej wersji Ubuntu to 2.6.28-19, jest to najwyższa wersja, jaką możecie znaleźć w archiwalnych repozytoriach. Z racji nie możności instalacji na fizycznym sprzęcie posłużę się maszyną wirtualną Qemu, jednak nie powinno być żadnej różnicy względem fizycznego sprzętu. Zainstaluję Polski remix Ubuntu zwany Jurny Jąrząbek, gdyż akurat mam pod ręką tą wersję, a różnice względem oryginalnej od Canonical są minimalne (domyślnie instalowane pakiety i język).
Uprzedzając pytanie „po co”, które pewnie się pojawi, odpowiadam: Po nic. To zwykły eksperyment mający na celu sprawdzenie czy tak się da i jak kernel Linuksa poradzi sobie ze wsteczną kompatybilnością. Cóż, 8 lat to nie jest jakaś straszna przepaść, choć w prężnie rozwijającym się wolnym oprogramowaniu to jednak całkiem sporo. To chyba tyle, jeżeli chodzi o wstęp, zapraszam do czytania.
Instalacja i przygotowanie Ubuntu
Zanim cokolwiek zaczniemy robić trzeba oczywiście zainstalować Ubuntu. Instalacji opisywać nie będę, gdyż jest to standardowa procedura i nie ma tutaj nic odkrywczego. Po pomyślnej instalacji czas na restart.
Jak widać bez żadnych problemów zainstalowany system wystartował. Teraz wypadałoby zaaktualizować wszystkie pakiety do najnowszych (dla tego Ubuntu oczywiście) wersji. Problem tylko jest taki, że repozytoria tego systemu już dawno wygasły. Na całe szczęście dostępne jest archiwum pod adresem old‑releases.ubuntu.com, które przechowuje najnowsze wersje pakietów dla danej wersji Ubuntu. Aby go użyć trzeba zmodyfikować plik /etc/apt/sources.list i pozmieniać adresy mirrorów na mirror archiwum. Po dokonanej podmianie bez problemu można zaaktualizować system komendami apt‑get update i apt‑get upgrade lub graficznym aktualizatorem.
Po aktualizacji i restarcie mamy już aktualny system. Teraz czas na główną część eksperymentu.
Dogranie nowego jądra
Teraz można przejść do pobierania kernela. Aby nie musieć go kompilować, postanowiłem użyć repozytorium kerneli dla Ubuntu dostępne pod tym adresem. Znajdziemy tam pakiety deb z kernelami. Pierwsze próbowałem po prostu zainstalować pobrane pakiety deb za pomocą dpkg, niestety ten wypluł błędy i nie mógł rozwiązać zależności. Plan A zawiódł, czas na plan B, czyli rozpakować pakiety deb i ręcznie przenieść pliki. Po wykonaniu tej czynności trzeba skonfigurować nowe jądro. Pierwszym krokiem jest wygenerowanie initramfs, za pomocą komendy update-initramfs. Niestety ten nie widział ręcznie zainstalowanego kernela, na całe szczęście pozwala ręcznie określić kernel za pomocą parametru -k. Użycie komendy w ten sposób:
update-initramfs -k 4.9.9-040909-generic -c
zadziałało i initramfs został wygenerowany. Skoro initramfs jest już gotowy, to czas teraz dodać nowy kernel do menu GRUB’a. Tutaj wystarczy komenda:
update-grub
i tyle. Nowy kernel zainstalowany, teraz czas na restart i sprawdzenie czy system odpali. Wybór nowego kernela w GRUB i...
Eksperyment zakończony sukcesem. System bez większych problemów wystartował na wgranym jądrze. Z aplikacjami też nie ma problemu, wszystkie działają bez zmian. Jak widać Linus Torvalds dobrze dba o kompatybilność wsteczną dla oprogramowania.
Zakończenie
I na tym zakończę ten krótki wpis. Eksperyment się udał. Teraz niewspierane od 7 lat Ubuntu da radę obsłużyć nowy sprzęt, tak samo jak najnowsze Ubuntu. Komu wyniki eksperymentu mogą się przydać? Raczej nikomu, to tylko ciekawostka. No chyba, że ktoś koniecznie chce używać starego systemu na nowym sprzęcie. Ale w świecie Linuksa takie działanie nie ma żadnego sensu. Jeżeli nie podobają nam się zmiany wprowadzone w nowym systemie, to zawsze możemy je zmienić. Tak więc dziękuję za przeczytanie i pozdrawiam czytelników.