Trwa konkurs "Ogól naczelnego", w którym codziennie możecie wygrać najnowsze maszynki systemowe Hydro Connect 5 marki Wilkinson Sword.

Więcej informacji
Strona używa cookies (ciasteczek). Dowiedz się więcej o celu ich używania i zmianach ustawień. Korzystając ze strony wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki.    X

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. 

linux

Komentarze

0 nowych
tylko_prawda   11 #1 13.02.2017 10:30

Ciekawy wpis, przyjemnie się czytało. Czy wyniki się przydadzą? Mi nie, aczkolwiek może osoby twierdzące, iż starego Ubuntu w żadnym wypadku nie da się uruchomić na nowym sprzęcie, przekonają się, że tak nie jest.

Szafirek22   10 #2 13.02.2017 13:06

Zabawa dla zabawy ale w sumie dzięki temu można sie wiele nauczyć.

grapeli23   5 #3 13.02.2017 19:20

Przez bardzo długi czas użytkowałem PLD Ac - 2.0 z bardzo nowymi kernelami, włącznie z 4.10-rc1. Ac na świat wyszło w czasach kernela 2.4.x. Ostateczną wersją glibc został 2.3.6 (z linuxthreads), udev zatrzymał się bodajże na wersji 114, itd.

Takie rzeczy sprawdzają także developerzy kernela, ot Andi Kleen, pracownik Intela, twórca Syslinuxa i innych istotnych rzeczy. Testował Red Hat 4.1 z kernelem 3.7.
https://plus.google.com/107672941537404681483/posts/2GYcSm5injN
Jest poddawany szeregu poważnym testom w tym zakresie. Szczególnie przez firmy, które są tym wyjątkowo zainteresowane.
https://github.com/linux-test-project/ltp

Wzięcie najnowszego kernela wprost z repozytorium dystrybucji nie musi zakończyć się sukcesem. Wiele rzeczy w takim konfigu może przeszkadzać w starcie zabytkowego systemu. Szczególnie:
CONFIG_SYSFS_DEPRECATED is not set
czy choćby architektura procesora i686 nie będzie odpowiednia dla starszych maszyn i586, i486.

Autor edytował komentarz w dniu: 13.02.2017 22:35
GBM   21 #4 13.02.2017 19:46

Yup, ciekawy eksperyment :) Btw. obawiam się, że prędzej czy później system posypie się albo będzie walić głową w mur w kwestii zależności pakietów oraz... niewspieranych już innych. Aczkolwiek może nie będzie tak źle :)

Szkoda tylko, że te starsze wersje Gnome'a nie są już rozwijane... Również jak swoją przygodę z Linuxem zacząłem w mniejszym lub większym stopniu od Ubuntu w wersjach 9/10 :) A ten motyw brązowo-pomarańczowy był kapitalny jak dla mnie :P

grapeli23   5 #5 13.02.2017 20:20

@GBM: Jakby system miałby się sypać od kernela, to byłaby tragedia lub inny kernel panic.
Kernel sam w sobie nie jest związany choćby z biblioteką podstawową C, to całkowicie niezależny twór. Jedynie jego jedna specyficzna odmiana jest - User Mode Linux.
Owszem jest w pewien sposób powiązany z systemem, choćby takimi składnikami jak - depmod, który obecnie przeistoczył się w kmod, narzędziami do ładowania firmware, microcodu, itd.
Znacznie lepiej jest przygotować jego specjalny konfig na wyłącznie własne potrzeby do takich celów, bo tylko on może zapewnić prawidłowe działanie.

Jeszcze można poruszyć problem ewentualnej jego kompilacji starszymi wersjami kompilatora. Teoretycznie jest jeszcze możliwe zbudowanie nowej wersji z gcc 3.3, ale w jakimś bardzo wąskim konfigu. Generalnie obecnie mocno zalecane (lub sprawdzają się w boju) wyłącznie te z 4 z przodu (najlepiej nie niższym od 4.4).

Soren   8 #6 13.02.2017 20:29

@grapeli23: aż z ciekawości zajrzałem czy ten projekt (PLD) nadal żyje :) O dziwo nigdy nie próbowałem ;)

grapeli23   5 #7 13.02.2017 21:04

@Soren: Owszem ktoś go po tylu latach stara się utrzymywać przy życiu (pewnie ma do dziś działające serwery z php). Dostawał łatki na krytyczne dziury w glibc, bashu, openssl i w innych podstawowych komponentach jeszcze z rok temu.

Ja nim się bawiłem na komputerze z późnych lat 90. Z epoki dos-a, win95. Instalowanie czegokolwiek nowszego nie miało na nim żadnego sensu. Z resztą mój system to był miszmasz, a z pld głównie cały init, skrypty startowe, syslog, cron, bazowe glibc. Cała masa rzeczy od kompilatorów poprzez Xorga, gtk, skończywszy na przeglądarkach były zupełnie nowe (samodzielnie budowane), nie z repozytorium.

Autor edytował komentarz w dniu: 13.02.2017 21:09
  #8 14.02.2017 00:48

To akurat nie jest jakaś nowość, podobnie ma się sytuacja z instalacją starszych kerneli na nowszym systemie, np. instalacja kerneli z linii 3.x czy nawet 2.6.x, przy czym z jądrem 2.6 to czasami tak łatwo nie idzie, ale jak już jest zainstalowany to działa, jedynym problemem z jakim ja miałem dotychczas problem to własnościowe sterowniki do karty graficznej, poza tym wszystkie urządzenia u mnie działały, no poza kartą wifi która została dodana do jądra właśnie w wersji 2.6.coś_tam i poniżej tej wersji po prostu nie działała :-)

Fricco   2 #9 14.02.2017 10:58

Jak widzę stare Ubuntu, to odzywa mi się sentyment ;-) Sam zaczynałem od wersji 7.04 i jak patrzę na obecną 16.04 to nie wiem, czy starsze nie były lepsze. I jeszcze ten wygląd starej wersji, po prostu miodzio :D

  #10 14.02.2017 12:13

Ja zaczynałem od DSL i Debian 4.0 Etch.

dragon321   11 #11 14.02.2017 14:04

@tylko_prawda: Albo pewne znane osoby porównujące Ubuntu 9 do Windows 7 :D

@Szafirek22: Dokładnie, zabawa dla zabawy :)

@grapeli23: PLD jeszcze żyje?

Co do kernela, to fakt, obawiałem się, że kompilacja się nie powiedzie. Stąd też wykorzystanie binarnych pakietów.

@GBM: Minimalne szanse na to. To tylko podmiana kernela, która nijak się ma do pakietów i reszty systemu. To co mogłoby się posypać, to jakieś dodatkowe moduły kernela (np. dla VirtualBox), a reszta raczej poprostu by sobie działała identycznie jak bez podmianki.

Co do starego GNOME, to masz do wyboru Cinnamon albo MATE. Ten pierwszy to fork GNOME 3 mający go "unormalić", to drugie, to fork ostatniej wersji GNOME 2, który chce go podtrzymać przy życiu i dostosować do nowych technologii (trwa port na GTK+3, może po tym i Wayland też się pojawi).

@Fricco: Cóż, to chyba urok GNOME 2 :D

Chociaż jego młodszy brat, czyli GNOME 3 też daje się zmusić do współpracy. Trudniej, bo trudniej, ale jednak. Parę wtyczek i można mieć efekt zbliżony do starego środowiska.

Chociaż w sumie bardziej to pewnie urok sentymentu i staroci. MATE, będące kopią ostatniej wersji GNOME 2, nie używa mi się już tak samo, a to stare Ubuntu jak najbardziej. Poprostu przypominają mi się czasy, jak zapragnąłem wypróbować tego Linuksa i bawiłem się tą wersją Ubuntu. Jak to wszystko było obce dla kogoś, kto tylko Windowsa znał. Obce, ale jednocześnie pociągające paroma rzeczami. Ale cóż, wtedy to była tylko zabawa i z Linuksem dałem sobie spokój na kilka lat. Zresztą, pisałem o tym wpis, nie ma co się rozpisywać, jak jesteś ciekaw, to zapraszam na blog.

Autor edytował komentarz w dniu: 14.02.2017 14:11
Farkas   11 #12 14.02.2017 14:16

Ciekawy, fajny wpis :-)

dragon321   11 #13 14.02.2017 14:20

@Farkas: Dzięki :)

grapeli23   5 #14 14.02.2017 15:37

@dragon321: Ale niby czemu PLD Th ma nie żyć? To od zawsze była dystrybucja bazująca na Red Hat (jego odnoga) tworzona przez garstkę developerów z myślą o garstce bardziej zaawansowanych użytkownikach. Bez instalatora (miał go bodajże fork Ti). Oni nie potrzebują takowego graficznego upiększacza aby położyć LVM, podłączyć iSCSI. Wystarczy dobry Rescue z odpowiednimi narzędziami.

Jeśli spojrzysz na pakiety leżące w ready i test, to one specjalnie się nie różnią wydaniami od choćby Arch Linuxa.
ftp://ftp.pld-linux.org/dists/3.0/

W czasach przed OpenVZ, Dockerem, LXC mieli dobrze zintegrowany kernel z Linux-VServer + GRsecurity. Działało to od kopa bez żadnych ceregieli. Oczywiście mankamentów taka dystrybucja tworzona przez "dwóch" developerów ma też i całe mnóstwo.

Autor edytował komentarz w dniu: 14.02.2017 15:38
sr57be45   7 #15 14.02.2017 18:29

@grapeli23: Ale PLD 2.0 miał instalator graficzny i zwykły użytkownik mógł go sobie zainstalować. Było jeszcze Live-CD i rozszerzone 2.0 oprócz 3.0. Pamiętam wtedy JFS był wydajniejszy od ext3 na wolnym dysku.

DamiaX   4 #16 14.02.2017 20:44

Polecam zapoznać się z moim nowym dziełem KernUP służącemu automatycznej aktualizacji jądra. Wpis o programie na stronie Linux.pl oraz readme na stronie programu: https://github.com/DamiaX/KernUP

  #17 14.02.2017 22:43

to jeszcze wymień glibc :) a powodzenia
"uprzedzając pytanie „po co”, które pewnie się pojawi,"
ale po co o tym pisać?

dragon321   11 #18 16.02.2017 20:37

@grapeli23: Nie wiem dlatego pytam. Myślałem, że PLD umarło i zaskoczony jestem tym, że jednak żyje (pozytywnie oczywiście).

@DamiaX: Napisz o nim swój wpis, to dotrze do większej ilości osób niż tutaj. :)

Anonim (niezalogowany): "to jeszcze wymień glibc :) a powodzenia
"uprzedzając pytanie „po co”, które pewnie się pojawi,"
ale po co o tym pisać?"
glibc też zachowuje kompatybilność (a przynajmniej stara się to robić), wiec nie jest powiedziane, że by nie zadziałało. Pozatym nie ma to żadnego sensu. Wgrywając nowy kernel zyskuję obsługę nowego sprzętu, a wgrywając glibc nie mam namacalnych korzyści. Wgrywając nowe glibc wgrywałbym też inne pakiety i tym samym z Ubuntu 9.04 zrobiłbym Ubuntu 16.10. Można, ale po co?

Po co o tym pisać? Trochę dziwne pytanie, bo jak dla mnie porównywalne do pytania: A po co chodzić? Lubię pisać, to i napisałem. Nie ma w tym nic ukrytego.

  #19 20.02.2017 02:35

@dragon321: nie wiem jak w Ubuntu ale w Debianie kiedyś się dłubało i wstawiało nowszy glibc żeby złapać funkcjonalność nowych apek, które wymagały nowszego glibc bez konieczności całkowitego przechodzenia na gałąź testową a to stare czasy jak człowiek eksperymentował i dłubał z jajkiem to samo nawet się swoje sklejało teraz to juz cżłowiek leniwy i nie ma ani czasu ani chęci na takie zabawy, nowszy kernel z paczki na starym wydaniu to raczej oczywista oczywistość że wejdzie :)

Fhj   7 #20 20.02.2017 09:52

Zamiast ręcznie rozpakowywać pliki z pakietów .deb, można było edytować deb-y i usunąć zależności z nich.

dragon321   11 #21 20.02.2017 19:17

@Anonim (niezalogowany): "nowszy kernel z paczki na starym wydaniu to raczej oczywista oczywistość że "

Aż tak prosto nie było, ale masz rację. Apki zazwyczaj mają minimum kilka wersji wstecz. Ale faktycznie, o glibc mogłem pomyśleć. Cóż, może innym razem.

@Fhj: Można było. Nie znam się jednak aż tak na pakietach deb i ten sposób wydał mi się szybszy.

DamiaX   4 #22 25.02.2017 23:58

@dragon321: Pierwszy wpis napisany, ciekawe czy się przyjmie :)

dragon321   11 #23 02.03.2017 13:15

@DamiaX: Świetnie :)

aak111   6 #24 04.03.2017 20:40

Bardzo fajny wpis. Zwarta całość i przyjemne "pióro".
Ubuntu9 było piękne i jest piękne. Dla mnie wciąż ładniejsze od Unity.

dragon321   11 #25 05.03.2017 13:05

@aak111: Dziękuję :)

Nie przeszkadza mi Unity, aczkolwiek pewien sentyment do GNOME 2 jest. Obecnie używam GNOME 3 i też w sumie nie narzekam - po paru tweakach jest przyjemne bardzo.

  #26 10.03.2017 19:12

Co to znaczy przekopiować pliki kernel ręcznie. Jeżeli mam 3 pliki deb z kernelem to mam je rozpakować i gdzie pokopiować.

dragon321   11 #27 11.03.2017 12:34

@Fernando torez (niezalogowany): "Co to znaczy przekopiować pliki kernel ręcznie. Jeżeli mam 3 pliki deb z kernelem to mam je rozpakować i gdzie pokopiować.

"

Rozpakowywujesz je i po rozpakowaniu masz strukturę katalogów (np. usr/share/doc). Poprostu kopiujesz to w odpowiednie katalogi na partycji /.

Gratulacje!

znalezione maszynki:

Twój czas:

Ogól Naczelnego!
Znalazłeś(aś) 10 maszynek Wilkinson Sword
oraz ogoliłeś(aś) naszego naczelnego!
Przejdź do rankingu
Podpowiedź: Przyciśnij lewy przycisk myszki i poruszaj nią, aby ogolić brodę.