downloadDownload FAQFAQ
Site Navigation:
 
 

8. Kernel

Ta sekcja omawia zmiany oraz ważne informacje dotyczące kernela bazowanego na wersji 2.6.18 w Fedorze Core 6. Kernel 2.6.18 zawiera:

8.1. Wersja

Fedora Core może zawierać dodatkowe patche dla ulepszenia kernela, rozwiązania błędów, lub dodatkowe cechy. W tej wersji, kernel Fedory Core może nie być linię w linię odpowiedni do tak zwanego kernela vanilla ze strony kernel.org:

http://www.kernel.org/

Aby otrzymać listę tych patchy, pobierz źródłowy pakiet RPM i wykonaj następujące polecenie względem niego:

rpm -qpl kernel-<wersja>.src.rpm

8.2. Changelog

Aby otrzymać log zmian w pakiecie, wykonaj następujące polecenie:

rpm -q --changelog kernel-<wersja>

Jeśli potrzebujesz przyjaznej dla użytkownika wersji changelog-a, odwiedź http://wiki.kernelnewbies.org/LinuxChanges. Krótki i pełny diff kernela jest dostępny z http://kernel.org/git. Wersja kernela Fedory jest bazowana na drzewie Linusa.

Przeróbki zastosowane w wersji Fedorowej są dostępne z http://cvs.fedora.redhat.com .

8.3. Warianty Kernela

Fedora Core 6 zawiera następujące kompilacje kernela:

  • Natywny kernel, do użycia w większości systemów. Skonfigurowane źródła są dostępne w pakiecie kernel-devel-<wersja>.<architektura>.rpm.

  • kernel-PAE, dla użycia w systemach x86 32-bitowych z > 4GB RAM-u, lub z procesoramu, które mają cechę 'NX (No eXecute). Ten kernel wspiera zarówno systemy uniprocesorowe, jak i multiprocesorowe.

  • Kernel wirutalizacji do użytku z pakietem emulatora Xen. Skonfiurowane źródła są dostępne w pakiecie kernel-xen-devel-<wersja>.<archiwum>.rpm.

  • Kernel Kdump do użytku z możliwościami kexec/kdump. Skonrigurowane źródla są dostępne w pakiecie kernel-kdump-devel-<wersja>.<archiwum>.rpm.

Możesz zainstalować nagłówki kernela dla wszystkich wariantów w tym samym czasie. Pliki te są instalowane w drzewie /usr/src/kernels/<wersja>-[xen|kdump]-<archiwum>/. Użyj następującej komendy:

su -c 'yum install kernel-{PAE,xen,kdump}-devel'

Wybierz jeden lub więcej z tych wariantów, oddzielonych przecinkami bez spacji, jak pokazano. Wprowadź hasło root-a kiedy zostaniesz poproszony.

[Notatka]Domyślnie Kernel Dostarcza SMP

Nie ma oddzielnego kernela SMP dostępnego dla Fedory Core 6 na i386, x86_64 oraz ppc64. Wsparcie multiprocesora jest dostarczane przez natywny kernel.

[Notatka]Wsparcie Kernela dla PowerPC

Nie ma wsparcia dla Xen lub kdump dla architektury PowerPC w Fedorze Core 6 test3. 32-bitowy PowerPC wciąż posiada oddzielny kernel SMP.

8.4. Raportowanie Błędów

Odwiedź http://kernel.org/pub/linux/docs/lkml/reporting-bugs.html aby uzyskać informacje na temat raportowania błędow w kernelu. Możesz użyć również http://bugzilla.redhat.com do raportowania błędów specyficznych dla Fedory.

8.5. Śledzenie Ogólnych Podręczników

Wiele tutoriali, przykładów, oraz podręczników o rozwijaniu kernela Linuksa zakładają, że źródła kernela są zainstalowane w katalogu /usr/src/linux/. Jeśli zrobisz link symboliczny, jak pokazano poniżej, powinieneś nie mieć problemów z wykorzystaniem tych materiałów z pakietami Fedory Core. Zainstlauj właściwe źródła kernela, jak to pokazano wcześniej, a następnie wykonaj następujące polecenie:

su -c 'ln -s /usr/src/kernels/<wersja>.<wersja>-<architektura> /usr/src/linux'

Wprowadź hasło root-a kiedy zostaniesz poproszony.

8.6. Przygotowanie do Rozwoju Kernela

Fedora Core 6 nie zawiera pakietu kernel-source dostarczanego w poprzednich wersjach, bowiem teraz jest wymagany tylko pakiet kernel-devel aby budować zewnętrzne moduły. Skonfigurowane źródła są dostępne, jak opisano w tej sekcji dotyczącej wariantów kernela.

[Notatka]Instrukcje Dotyczące Aktualnego Kernela

W celu uproszczenia następujących wskazówek, założyliśmy, że chcesz skonfigurować źródła kernela aby pasowały do Twojego aktualnie uruchumionego kernela. W krokach przedstawionych poniżej, wyrażenie <wersja> odnosi się do wersji kernela pokazywanej przez polecenie: uname -r.

Użytkownicy, którzy potrzebują dostępu do oryginalnych źródeł kernela Fedory Core, mogą znaleźć je w pakiecie .src.rpm. Aby stworzyć drzewo źródłowe z tego pliku, wykonaj następujące kroki:

[Notatka]Nie Buduj Pakietów jako Superużytkownik (root)

Budowanie pakietów jako superużytkownik jest niebezpieczne i niezalecane, nawet dla kernela. Te instrukcje pozwalają Ci zainstalować źródło kernela jako zwykły użytkownik. Wiele ogólnych stron informacyjnych odnosi się do /usr/src/linux w ich instrukcjach. Jeśli używasz tych instrukcji, po prostu zamień ~/rpmbuild/BUILD/kernel-<wersja>/linux-<wersja>.<archiwum>."]]

  1. Przygotuj środowisko do budowania pakietu RPM w Twoim katalogu domowym. Wykonaj następujące polecenia:

    su -c 'yum install rpmdevtools yum-utils' rpmdev-setuptree
  2. Wprowadź hasło root-a kiedy zostaniesz poproszony.

  3. Pobierz plik kernel-<wersja>.src.rpm. Włącz jakiekolwiek właściwe repozytoria źródłowe, jak na przykład Core, Updates, czy Testing, z opcją -e:

    yumdownloader -e core-source -e updates-source --source kernel
  4. Wprowadź hasło root-a kiedy zostaniesz poproszony.

  5. Zainstaluj kernel-<wersja>.src.rpm używając polecenia:

    rpm -Uvh kernel-<wersja>.src.rpm
  6. To polecenia zapisuje zawartość RPM-a do ${HOME}/rpmbuild/SOURCES oraz ${HOME}/rpmbuild/SPECS, gdzie ${HOME} jest Twoim katalogiem domowym.

    [Notatka]Wymagane Miejsce

    Pełny proces budowania kernela może wymagać kilka gigabajtów dodatkowego miejsca w systemie plików zawierającym Twój katalog domowy.

  7. Przygotuj źródła kernela używając tych poleceń:

    cd ~/rpmbuild/SPECS 
    rpmbuild -bp --target $(uname -m) kernel-2.6.spec
  8. Drzewo źródłowe kernela jest umieszczone w katalogu ~/rpmbuild/BUILD/kernel-<wersja>/linux-<wersja>.<archiwum>.

    Konfiguracje dla specyficznych kerneli dostarczanych wraz z Fedorą Core 6 są w katalogu ~/rpmbuild/BUILD/kernel-<wersja>/linux-<wersja>.<archiwum>/configs. Na przykład, plik konfiguracyjny i686 ma nazwę ~/rpmbuild/BUILD/kernel-<wersja>/linux-<wersja>.<archiwum>/configs/kernel-<wersja>-i686.config. Wykonaj następujące polecenie aby umieścić żądany plik konfiguracyjny we właściwym miejscu do budowania:

    cp configs/<żądany-plik-konfiguracyjny> .config
  9. Każdy kernel otrzymuje nazwę bazowaną na jego numerze wersji. Jest to wartość, którą wyświetla polecenie uname -r. Nazwa kernela jest zdefiniowana przez pierwsze cztery linijki Makefile kernela. Makefile został zminiony, aby generować kernel z nazwą inną od aktualnie uruchumionego.

    Na przykład, jeśli uname -r zwraca string 2.6.17-1.2345_FC6, zmień definicję EXTRAVERSION z tego:

    EXTRAVERSION = -prep 

    na to:

    EXTRAVERSION = -1.2345_FC6

    To jest, zamień wszystko od finalnego myślinka naprzód.

  10. Wykonaj następujące polecenie:

    make oldconfig

    Możesz wtedy postępować jak zwykle.

[Notatka]Budowanie Binarnych RPM-ów Kernela

Normalnie, kernele dla Fedory są budowane przy użyciu narzędzia rpmbuild i pliku spec. Twoje rezultaty mogą się różnić jeśli używasz wbudowanego obiektu kernela make rpm.

8.7. Budowanie Tylko Modułów Kernela

Drzewo źródłowe nie jest wymagane do budowy modułu kernela, jak na przykład Twojego własnego sterownika urządzenia, w odniesieniu do aktualnie używanego kernela. Tylko pakiet kernel-devel jest wymagany do budowy zewnętrznych modułów. Jeśli nie wybrałeś go podczas instalacji, użyj Pirut-a aby go zainstalować, idąc do AplikacjeDodaj/Usuń Aplikacje, lub użyj yum-a aby go zainstalować. Wykonaj następujące polecenie aby zainstalować pakiet kernel-devel używając yum-a.

su -c 'yum install kernel-devel' 

Na przykład, aby zbudować moduł foo.ko, stwórz następujący Makefile w katalogu zawierającym plik foo.c:

obj-m := foo.o 

KDIR  := /lib/modules/$(shell uname -r)/build
PWD   := $(shell pwd)

default:
    $(MAKE) -C $(KDIR) M=$(PWD) modules

Wykonaj polecenie make aby zbudować moduł foo.ko: