Środowisko hakerskie jądra


22

Pracowałem we wbudowanym systemie operacyjnym, takim jak uCOS, ThreadX. Chociaż kodowałem aplikacje w systemie Linux, teraz planuję rozpocząć naukę jądra systemu Linux. Mam kilka pytań dotyczących środowiska.

  1. Która z najlepszych dystrybucji zawiera łatwe w użyciu narzędzia do programowania jądra? (do tej pory korzystałem z RHEL i Fedory. Chociaż dobrze się z nimi czuję, wygląda na to, że Ubuntu ma wbudowane skrypty do łatwej kompilacji jądra make_kpkg, itp.)

  2. Czy możesz opisać najlepszą konfigurację do debugowania jądra? Podczas debugowania innych wbudowanych systemów operacyjnych użyłem portu szeregowego do zrzucenia postępu, JTAG itp. Z jakiego rodzaju konfiguracji korzystają deweloperzy jądra Linuksa? (Czy mój testowany komputer z portem szeregowym wystarczy na moje potrzeby? Jeśli tak, jak skonfigurować jądro, aby zrzut na port szeregowy?) Planuję przekierować komunikaty jądra do konsoli szeregowej, które zostaną odczytane na moim laptopie.

  3. Jakie narzędzie jest najlepsze do debugowania i śledzenia kodu jądra? Jak wspomniano wcześniej, czy konsola szeregowa jest jedynym sposobem? Czy istnieje jakiś interfejs IDE / JTAG na PC?


3
W przypadku nr 1 sam Linus korzysta z Fedory, więc prawdopodobnie coś mówi. Nie wiem wystarczająco dużo na ten temat, aby naprawdę dać odpowiedź, ale byłbym zainteresowany tym, co mówią inni ludzie.
jonescb 16.03.11

1
make_kpkg pochodzi z Debiana, na którym oparty jest Ubuntu i moja ulubiona dystrybucja;)
Usunięte konto

Odpowiedzi:


14

Moim osobistym gustem w tworzeniu jądra Linux jest Debian. Teraz twoje punkty:

  1. Jak zapewne się domyślacie, Ubuntu nie wprowadza niczego nowego do jądra, aby ułatwić rozwój, poza tym, co jest już dostępne w Debianie. Na przykład make_kpkg jest funkcją Debiana, a nie Ubuntu. Oto kilka linków ułatwiających rozpoczęcie typowych zadań programistycznych jądra Linux w Debianie:

  2. Najłatwiejszym sposobem debugowania jądra jest użycie QEMU i GDB. Kilka linków na początek:

    Należy jednak pamiętać, że ta metoda nie jest wykonalna w przypadku niektórych scenariuszy, takich jak debugowanie określonych problemów sprzętowych i takich, dla których lepiej byłoby użyć fizycznego debugowania szeregowego i prawdziwego sprzętu. W tym celu możesz użyć KGDB (działa również przy użyciu Ethernetu). KDB to również dobry wybór. A tak przy okazji, zarówno KGDB, jak i KDB zostały połączone w jądro Linuksa. Więcej o tych dwóch tutaj . Inną fajną metodą, która działa cudownie w przypadku problemów niezwiązanych ze sprzętem, jest użycie jądra Linux w trybie użytkownika . Uruchamianie jądra w trybie użytkownika, podobnie jak każdy inny proces, umożliwia debugowanie go tak jak każdego innego programu ( przykłady ). Więcej na temat Linuksa w trybie użytkownikaTutaj . UML jest częścią jądra Linuksa od wersji 2.6.0, więc możesz zbudować każdą oficjalną wersję jądra powyżej tej wersji w trybie UML, wykonując następujące kroki .

  3. Patrz punkt 2. Niestety nie ma tutaj najlepszej najlepszej metody, ponieważ każde narzędzie / metoda ma swoje zalety i wady.


Dzięki! po szczegółową odpowiedź. BTW: Interesuję się podsystemami FS i Bio w jądrze. jaki rodzaj konfiguracji byłby dla mnie najlepszy?
rajaganesh87

UML i QEMU to prawdopodobnie droga, ponieważ możesz łatwo grać z systemami plików bez żadnych kosztów.
Shinnok

Bardzo dobre linki, tylko jedna rzecz. Moim ulubionym jest również debian, ale Kernel Development można opracowywać z dowolną dystrybucją. Być może luz jest najlepszym sposobem, jeśli jesteś purystyczny, ponieważ używa jądra wanilii, ale konfiguracje nie są złe, znajdziesz najlepsze.
D4RIO,


6

Jeśli tworzysz platformę wbudowaną, która nie jest oparta na sprzęcie i386, musisz dokonać kompilacji krzyżowej. Projekt Emdebian zapewnia łańcuchy narzędzi do opracowania wielu architektur (ARM, m68k, MIPS i więcej) na komputerach PC (i386 lub amd64). Oznacza to, że pod Debianem możesz po prostu dodać repozytoria i apt-get zainstalować łańcuch narzędzi dla wybranych celów.


3

Sondy JTAG istnieją, ale są one dość drogie (a firmy je budujące mają umowy na wyłączność). Najlepszym sposobem debugowania kodu jądra jest uruchomienie go w kvm lub qemu z gdbserver w emulacji.


Jeszcze lepiej, użyj trybu użytkownika Linux. Linux jako zwykły proces użytkownika.
vonbrand

0

Zasadniczo każda główna dystrybucja powinna do tego dobrze działać (używają własnej dystrybucji do hakowania). Używaj czegokolwiek wygodniejszego.

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.