Jak zbudować niestandardowe jądro z localmodconfig, które obsługują sprzęt wielu komputerów?


9

Podczas konfigurowania serwera do uruchamiania pojedynczego zadania, takiego jak urządzenie, może pojawić się potrzeba zbudowania niestandardowego jądra. Na przykład, aby zaoszczędzić miejsce na dysku.

Główny system plików Ubuntu Core 13.10 amd64 to 38 MB do pobrania, przy czym meta-pakiet „linux-image-generic” wraz z wymaganymi zależnościami pobierze 79 MB archiwów, a rozmiar pakietu kernel-image-xyz-generic nadal wynosi 14 MB .

make localmodconfigPolecenie to odpowiednie narzędzie do budowania jądra pozbawionego modułów, których sprzęt nie będzie używał . Jednak maszyna wirtualna z uruchomionym środowiskiem kompilacji i testowania ładuje inne moduły niż docelowy sprzęt do wdrażania. I / lub po pewnym czasie sprzęt do wdrażania może stać się eol i używany jest inny sprzęt. Częstotliwość wydawania aktualizacji jądra może być zbyt skomplikowana, aby zbudować niestandardowe jądro dla każdej konfiguracji sprzętu.

Jak szybko zbudować niestandardowe jądro Linuksa działające na kilku różnych urządzeniach?

Odpowiedzi:


11

make localmodconfigKomenda jest nadal odpowiednim narzędziem do pracy. W rzeczywistości make localmodconfigdziałascripts/kconfig/streamline_config.pl .

Plik wejściowy

Podczas odczytywania streamline_config.pl(źródłowego) kodu źródłowego istnieje nieudokumentowana funkcja, my $lsmod_file = $ENV{'LSMOD'};która umożliwia wprowadzanie pliku w celu wykrycia załadowanego modułu zamiast wyjścia z lsmodpolecenia.

Live CD

Ponieważ localmodconfig wykorzystuje dane wyjściowe lsmoddo wykrywania załadowanych modułów. Uruchamiamy Ubuntu Live CD na każdym z różnych ustawień sprzętowych, otwieramy terminal ( Ctrl+ Alt+ T), uruchamiamy lsmodi zapisujemy jego dane wyjściowe.

Łączenie wydajności

Łącząc lsmodpliki wyjściowe i usuwając kolejne linie nagłówków, możesz szybko utworzyć plik wejściowy, który obejmuje wszystkie wymagane moduły jądra. Lubimy przeglądać listę modułów ręcznie i stosować bardziej ręczny przepis:

  1. $ cd linux-3.11.0/
    lub przejdź do katalogu, w którym uruchomisz polecenie make

  2. $ lsmod > lsmod.txt
    tworzy plik tekstowy z załadowanymi modułami

  3. $ nano lsmod.txt
    otworzy nano edytor tekstu, oczywiście możesz użyć swojej ulubionej aplikacji do edytowania

  4. Dodaj żądane moduły, których jeszcze tam nie ma, na dole tego pliku (patrz przykład na dole tego anwer) i zapisz go, gdy będziesz gotowy.
    Uwaga: użyj spacji, a nie tabulatorów, aby dopasować pozycje tabulatora kolumny.

  5. $ make LSMOD="lsmod.txt" localmodconfig
    powie to localmodconfig, aby użył pliku lsmod.txt jako danych wejściowych do wykrywania załadowanych modułów

W odniesieniu do Stevena Rostedta - autora witryny steamline_config.pl - za zasugerowanie krótszej notacji w kroku 5.


Przykład elementów, które należy dołączać, a nie dołączać do lsmod.txt (krok 4):

Ponieważ płyta główna Intel D33217CK ma czujniki termiczne Intel, które chcielibyśmy przeczytać, dołączamy następujące linie:

x86_pkg_temp_thermal   13810  0
intel_powerclamp       14239  0

Ale nie chcemy uruchamiać maszyn wirtualnych na tym sprzęcie, dlatego pomijamy następujące linie:

kvm_intel             128218  0
kvm                   364766  1 kvm_intel

Posiada adapter Ethernet Apple (Broadcom) Gibabit podłączony do portu Thunderbolt, dlatego dołączamy:

tg3                   152066  0
ptp                    18156  1 tg3
pps_core               18546  1 ptp

Uważamy, że nie potrzebujemy kopii lustrzanej woluminu i dlatego nie dodajemy:

dm_mirror              21715  0
dm_region_hash         15984  1 dm_mirror
dm_log                 18072  2 dm_region_hash,dm_mirror

Nie potrzebujemy również grafiki (tekst będzie działał na bezgłowym serwerze), więc nie uwzględniamy:

i915                  589697  3
i2c_algo_bit           13197  1 i915
drm_kms_helper         46867  1 i915
drm                   242354  4 i915,drm_kms_helper

Do innej maszyny potrzebujemy dodatkowo tego sterownika Realtek Ethernet:

r8169                  61434  0
mii                    13654  1 r8169
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.