Poradniki > Software

[How To]Dostosowujemy kernel do indywidualnych potrzeb

(1/1)

sir_lucjan:
Jeśli domyślna konfiguracja wydaje się nam zbyt spuchnięta, to z pewnością mamy rację. W kernelu znajduje się domyślnie cała masa zbędnych ustawień, które można usunąć. W tym celu najczęściej edytujemy pliki konfiguracyjne. Jest to metoda skuteczna, ale czasochłonna i żmudna. Możemy jednak znacząco ułatwić sobie taki zabieg. Aby to zrobić, musimy posłużyć się pewną sztuczką.

Metoda dla leniwych - korzystanie z xconfig oraz gconfig

Edytujemy PKGBUILD i odszukujemy w nim poniższą frazę:


--- Kod: ---cd ${_srcname}
 msg "Running make bzImage and modules"
 make ${MAKEFLAGS} LOCALVERSION= bzImage modules
}
--- Koniec kodu ---

Aby skorzystać z graficznego narzędzia dla optymalizacji kernela, wystarczy dodać odpowiedni zapis:

A. Dla osób preferujących Qt


--- Cytuj ---cd ${_srcname}
 make xconfig
 msg "Running make bzImage and modules"
 make ${MAKEFLAGS} LOCALVERSION= bzImage modules
}
--- Koniec cytatu ---

B. Dla osób preferujących GTK


--- Cytuj ---cd ${_srcname}
make gconfig
 msg "Running make bzImage and modules"
 make ${MAKEFLAGS} LOCALVERSION= bzImage modules
}
--- Koniec cytatu ---

Uruchomimy w ten sposób graficzny edytor, w którym będziemy mogli odznaczyć wpisy, które nas nie interesują. Możemy także wybrać model procesora, pod jaki zostanie skompilowany kernel. Po zakończeniu prac, zapisujemy zmiany i zamykamy edytor. Kompilowanie kernela ruszy a czas niezbędny do wykonania tej operacji znacząco się skróci.

Zdecydowanie bardziej polecam edytor oparty o bibliotekę Qt, gdyż dysponuje poręczną wyszukiwarką.

Metoda zalecana - korzystanie z nconfig

Jeśli preferujemy metody bez GUI, nic straconego. Odszukujemy odpowiednie fragmenty:


--- Kod: ---# Tweak kernel options prior to a build via nconfig
_makenconfig=

--- Koniec kodu ---

lub


--- Kod: ---# Set these variables to ANYTHING (yes or no or 1 or 0 or "I like icecream") to enable them
_makenconfig= # tweak kernel options prior to a build via nconfig

--- Koniec kodu ---

oraz wprowadzamy niewielką modyfikację:


--- Cytuj ---# Tweak kernel options prior to a build via nconfig
_makenconfig=y

--- Koniec cytatu ---

lub


--- Cytuj ---# Set these variables to ANYTHING (yes or no or 1 or 0 or "I like icecream") to enable them
_makenconfig=1      # tweak kernel options prior to a build via nconfig
--- Koniec cytatu ---

Opis oraz przebieg kompilowania kernela z AUR opisany został w TYM temacie.
Alternatywna oraz uproszczona metoda kompilowania jądra pod procesor została szerzej opisana w TYM wątku.

Jeśli nie dysponujesz odpowiednią wiedzą, nie wykonuj żadnych zmian. Za wszelkie awarie winę ponosi tylko i wyłącznie użytkownik.


Aktualizacja poradnika:

Dostosowałem kernele znajdujące się pod moją opieką w AUR do poradnika. Zastosowałem w nich następujący zapis:


--- Kod: ---build() {
 cd ${_srcname}
 # Tweak kernel options prior to a build via gconfig
 #make gconfig
 # Tweak kernel options prior to a build via xconfig
 #make xconfig
# Tweak kernel options prior to a build via nconfig
 #make nconfig
 msg "Running make bzImage and modules"
 make ${MAKEFLAGS} LOCALVERSION= bzImage modules
}
--- Koniec kodu ---

Pierwsze dwie opcje (gconfig oraz xconfig) odpowiadają metodą przedstawionym w podpunktach A oraz B, ostatnia zaś opcji przedstawionej jako zalecana. Jeśli chcemy skorzystać z poszczególnej opcji, usuwamy # sprzed wpisu i gotowe.

Aktualizacja poradnika nr 2:

Ciekawą opcję podczas kompilowania kernela stanowi localmodcfg. Aby z niej skorzystać odszukujemy:


--- Kod: ---_localmodcfg= # compile ONLY probed modules
--- Koniec kodu ---

lub


--- Kod: ---# More at this wiki page ---> https://wiki.archlinux.org/index.php/Modprobed_db
_localmodcfg=
--- Koniec kodu ---

Zmieniamy na coś takiego


--- Cytuj ---_localmodcfg=y      # compile ONLY probed modules
--- Koniec cytatu ---

lub


--- Cytuj ---# More at this wiki page ---> https://wiki.archlinux.org/index.php/Modprobed_db
_localmodcfg=y
--- Koniec cytatu ---

Oczywiście, skorzystanie z punktu 3. Poradnika nie jest przeszkodą, do wykonania czynności opisanej w punkcie 1. Najlepiej jest w pierwszej kolejności wykonać punkt 3. Poradnika by następnie jeszcze bardziej okroić konfigurację korzystając z punktu 1.

Przykładowo, w swojej konfiguracji wyciąłem pozostałe schedulery (deadline oraz cfq), korzystając z bfq.


--- Kod: ---[    0.325029] io scheduler noop registered
[    0.325036] io scheduler bfq registered (default)
[    0.325037] BFQ I/O-scheduler version: v7r4
--- Koniec kodu ---


Aktualizacja poradnika nr 3:

Bardzo pomocnym narzędziem przy korzystaniu z localmodcfg jest modprobed-db

Instalujemy je za pomocą:


--- Kod: ---yaourt -S modprobed-db
--- Koniec kodu ---

Następnie wykonujemy polecenie:


--- Kod: ---modprobed-db store
--- Koniec kodu ---

Od tej pory podczas kompilowania kerneli udostępnianych przez OpenLinux.pl, linux-ck oraz linux-uksm za pomocą localmodcfg baza wczytanych modułów zostanie zaktualizowana automatycznie za pomocą polecenia:


--- Kod: ---modprobed-db recall
--- Koniec kodu ---

Nie musimy wykonywać tego osoboście. Odpowiada za to poniższy wpis w PKGBUILD:


--- Cytuj --- ### Optionally load needed modules for the make localmodconfig
    # See http://aur.archlinux.org/packages.php?ID=41689
    if [ -n "$_localmodcfg" ]; then
   msg "If you have modprobe_db installed, running it in recall mode now"
   if [ -e /usr/bin/modprobed_db ]; then
       [[ ! -x /usr/bin/sudo ]] && echo "Cannot call modprobe with sudo. Install via pacman -S sudo and configure to work with this user." && exit 1
       sudo /usr/bin/modprobed_db recall
   fi
   msg "Running Steven Rostedt's make localmodconfig now"
   make localmodconfig
    fi
}

--- Koniec cytatu ---

Listę modułów można zobaczyć za pomocą polecenia:


--- Kod: ---modprobed-db list
--- Koniec kodu ---

Aktualizacja poradnika nr 4:

Opcja _use_current spowoduje użycie pliku config aktualnie załadowanego kernela. W ten sposób, jeśli budujemy kernel używając w danej sesji wcześniej zbudowanego kernela, to użyje on jego opcji konfiguracyjnych. Równocześnie możemy zbudować nowy kernel w oparciu o config innego kernela, który z jakichś powodów jest dla nas atrakcyjny. Po prostu _use_current wczyta jego config zamiast domyślnie dostarczonego z tarballem


--- Kod: ---# Use the current kernel's .config file
# Enabling this option will use the .config of the RUNNING kernel rather than
# the ARCH defaults. Useful when the package gets updated and you already went
# through the trouble of customizing your config options.  NOT recommended when
# a new kernel is released, but again, convenient for package bumps.
_use_current=
--- Koniec kodu ---

bądź


--- Kod: ---_use_current= # use the current kernel's .config file
--- Koniec kodu ---

oraz wprowadzamy w zapisach odpowiednie zmiany:


--- Cytuj ---# Use the current kernel's .config file
# Enabling this option will use the .config of the RUNNING kernel rather than
# the ARCH defaults. Useful when the package gets updated and you already went
# through the trouble of customizing your config options.  NOT recommended when
# a new kernel is released, but again, convenient for package bumps.
_use_current=y
--- Koniec cytatu ---

bądź


--- Cytuj ---_use_current=yes      # use the current kernel's .config file
--- Koniec cytatu ---

Nawigacja

[0] Indeks wiadomości

Idź do wersji pełnej