Jak dowiedzieć się więcej o jądrze Linuksa z własnego komputera



Wypróbuj Nasz Instrument Do Eliminowania Problemów

Nauka pracy z GNU / Linux na ogół pociąga za sobą naukę pracy w środowisku graficznym. Technologia motywów umożliwia tym środowiskom graficznym naśladowanie interfejsów urządzeń iOS, Microsoft Windows i OS X. Pomaga to zminimalizować ten problem. Wiele osób idzie dalej i uczy się administracji wierszem poleceń Uniksa z powłokami Bash lub tcsh. Jednak poznanie wewnętrznych elementów jądra Linuksa może pomóc w lepszym zrozumieniu, w jaki sposób różne elementy opkodu współdziałają ze sobą.



Niektórzy ludzie twierdzą, że najlepiej byłoby pójść o kilka kroków dalej i dodatkowo dowiedzieć się, jak kompilatory przekształcają kod C w instruktorów maszynowych dla mikroprocesora. Zwolennicy kodu asemblerowego twierdzą, że najlepiej jest nauczyć się ASM, aby naprawdę zrozumieć programowanie na platformach x86 i x86_64. Niezależnie od tych pozycji, podstawowe polecenia Linuksa mogą dostarczyć wielu informacji o tym, jak jądro widzi twój komputer. Uczenie się przez spojrzenie, ale nie dotykaj paradygmatu to świetny sposób na opanowanie samego jądra. Chociaż w przykładach na tej stronie użyto konta roota, zdecydowanie zaleca się przeglądanie katalogów powiązanych z jądrem tylko za pośrednictwem konta użytkownika.



Metoda 1: Katalog / proc

Katalog / proc znajduje się w jednym z głównych regionów katalogu głównego najwyższego poziomu w dowolnej strukturze plików systemu Unix. Zawiera tak zwany system plików proc, lepiej znany jako procfs, który zawiera informacje o sposobie, w jaki różne zasoby uzyskują dostęp do pamięci jądra. Jest mapowany na / proc w czasie uruchamiania systemu. Ponieważ ta struktura plików proxy służy jako interfejs do wewnętrznej struktury danych w jądrze Linuksa, po raz kolejny najlepiej jest zbadać to tylko na koncie użytkownika. Większość plików i tak jest klasyfikowanych przez widoczną strukturę plików systemowych jako tylko do odczytu, ale najlepiej jest zachować ostrożność.



To powiedziawszy, każdy z nich jest plikiem tekstowym, więc możesz je przeglądać, jeśli chcesz. Użyj polecenia cd, aby wejść do katalogu / proc, a następnie wydaj polecenie ls, aby zobaczyć, co tam jest. Użyj polecenia cat, mniej lub więcej z dowolnym plikiem, aby je obejrzeć. Plik cpuinfo jest dobrym miejscem do rozpoczęcia, ponieważ pokazuje, jak jądro widzi twój mikroprocesor. Spójrz na plik statystyk, aby zobaczyć uruchomione procesy.

2016-11-25_020006

Wpisując urządzenia dla kotów, zobaczysz, jakie rzeczy są podłączone do twojego komputera.



2016-11-25_020109

Nawiasem mówiąc, zawsze możesz wydać polecenie man proc, aby dowiedzieć się, w jaki sposób struktura pliku / proc odnosi się do jądra. Wyświetlana strona pochodzi z Podręcznika programisty systemu Linux.

2016-11-25_020156

Metoda 2: Katalog / sys

Następnym przystankiem w wycieczce po jądrze jest / sys, który jest kolejnym katalogiem odwzorowanym na udawaną strukturę plików. Jest to zgodne z tą samą ogólną koncepcją Uniksa, co / proc, ale zamiast tego aktywnie eksportuje informacje o powiązanych dyskach urządzeń i wielu podsystemach jądra. Jeśli kiedykolwiek pracowałeś z systemem opartym na BSD, być może lepiej znasz sysctl zapewniający te funkcje. Urządzenia magistrali PCI, USB i S / 390 są mapowane do katalogu / sys.

Użyj cd / sys, aby przejść do katalogu, a następnie wydaj polecenie ls lub dir. Możesz mieć katalogi zatytułowane blok, klasa, urządzenia, fs, jądro i być może inne. Możesz przeglądać te pliki, aby znaleźć dalsze proste pliki, które zawierają informacje o systemie, ale ponownie zrób to z konta użytkownika i obserwuj, ale nie zmieniaj mentalności o sobie.

Metoda 3: Katalog / dev

Użyj polecenia cd / dev, aby przejść do katalogu / dev, który może być jedyną wirtualną strukturą jądra, którą już najlepiej znasz. Nazwa oznacza urządzenia i zawiera reprezentację plików urządzeń podłączonych do systemu. Polecenie ls w tym katalogu zwróci wiele plików nawet w najprostszej dystrybucji na serwerze.

2016-11-25_020242

Kilka z nich jest bardzo wyjątkowych. Plik / dev / null jest pustym urządzeniem, które nic nie robi. Jeśli wpiszesz cat / dev / null, nic z tego nie uzyskasz. Nazywa się to zasobnikiem bitów, a dane wyjściowe można do niego przekierować, aby ekran był czysty. Plik o nazwie / dev / zero zawiera tylko zero danych, które można zapisać na dysku, aby je wyzerować. Pliki losowe i urandom zawierają losowe niepotrzebne dane do tworzenia skrótów bezpieczeństwa.

Jeśli kiedykolwiek sformatowałeś dysk, prawdopodobnie masz przynajmniej pewne doświadczenie ze sposobem, w jaki jądro Linuksa je widzi. Każdy dysk dołączony do systemu otrzymuje nazwę, taką jak sda, sdb itd. Dla każdego dysku. Różne typy dysków mają różne nazwy. Pamiętaj, że katalog / dev wykorzystuje jedną potencjalną, formalną definicję dysku, a nie sposób, w jaki zwykle używamy tego terminu. Oznacza to, że dysk twardy, dysk SSD, karta SD, karta microSDHC, zamontowany system plików smartfona podłączony przez USB, pendrive'y USB, a nawet zamontowane tablety to dyski w jądrze.

Każda nazwa dysku w systemie Linux otrzymuje następnie numer wskazujący numer partycji. Jeśli masz dysk SSD z dwiema podstawowymi partycjami, możesz mieć / dev / sda1 i / dev / sda2 jako prawidłowe woluminy. Bardziej niż prawdopodobne, jeśli używasz Linuksa na komputerze stacjonarnym lub laptopie z partycjonowaniem w stylu MBR, to masz / dev / sda1 ustawioną na partycję ext4, na której faktycznie jest zainstalowany Linux. Najprawdopodobniej / dev / sda2 jest partycją rozszerzoną, która zawiera wtedy / dev / sda5 jako partycję wymiany. Ten schemat jest powszechny, ale w żadnym wypadku nie jest konieczny. Zauważ, że ponieważ partycja wymiany w tym typowym przykładzie jest dyskiem logicznym wewnątrz partycji rozszerzonej, otrzymuje 5 zamiast 3 jako swoją liczbę.

Jeśli chcesz dowiedzieć się więcej o sposobie wyświetlania i formatowania partycji przez jądro, możesz wyświetlić listę obsługiwanych partycji za pomocą polecenia fdisk. Podczas fdisk nie pisze tablic partycji, dopóki tego nie powiesz, najlepiej jest spróbować tego z czymś, na czym nie zależy Ci na toastowaniu. Zaleca się skierowanie go na coś takiego jak pusta pamięć USB, którą można łatwo sformatować.

Powiedzmy, że Twój kij jest wyświetlany jako / dev / sdc , możesz użyć sudo fdisk / dev / sdc żeby go załadować. Jeśli masz w niej prawidłową partycję, wpisz t, aby zmienić typ i typ L, aby załadować listę kodów szesnastkowych. Zauważ, że schematy partycji MBR i GUID komunikują się z jądrem w różny sposób i dlatego mają różne przypisania.

2016-11-25_020331

Najczęściej dyski będą ustawione na typ 83, co oznacza dyski z systemem Linux, 82, czyli na partycje wymiany systemu Linux lub jeden z typów plików FAT. FAT sięga w takiej czy innej formie do 1977 roku i nadal jest preferowany dla wielu typów urządzeń mobilnych, a także wielu dysków wymiennych. Zauważ, że niektóre typy partycji, takie jak typ 0x0c, mają coś, co nazywa się obsługą LBA.

Kiedy programista projektuje jądro dla systemu operacyjnego, ma kilka różnych sposobów patrzenia na dyski. Jednym z nich jest podzielenie talerzy na cylindry, głowice i sektory. To był klasyczny sposób odwoływania się do dysków twardych przez najdłuższy czas. Oryginalna geometria dysku nigdy nie była tak naprawdę ważna dla Linuksa i niestety w tym schemacie zabraknie adresów po około 8 gigabajtach binarnych. Drugim sposobem jest użycie logicznego adresowania C / H / S, które robi to, ale następnie umożliwia kontrolerowi dysku mapowanie numerów cylindrów, głowic i sektorów, gdziekolwiek chcą. Dlatego system operacyjny mógłby teoretycznie twierdzić, że na karcie SD lub w pamięci USB były głowy, gdy jest to fizycznie niemożliwe.

Trzecia metoda polega na logicznym adresowaniu bloków, co oznacza LBA. Każdy fizyczny blok w woluminie otrzymuje numer w tym schemacie. System operacyjny mówi kontrolerowi dysku, aby zapisał w pewnym bloku o numerze, ale tak naprawdę nie wie, czy jest to bezpośredni blok na dysku. Jest to schemat najczęściej używany obecnie i na pewno był używany na większości dysków twardych od połowy lat 90.

Linux oferuje obsługę jądra umożliwiającą montowanie szerokiej gamy typów partycji bez bezpośredniego wprowadzania danych, ale nadal najlepiej nie wybierać ich zbyt dziwacznie. Możesz toastować za swoje dane, jeśli utworzyłeś bardzo dziwny typ partycji zgodnie z wyborem systemu plików.

Metoda 4: wywołania systemowe z podręcznika programisty systemu Linux

Wbudowane czytniki stron podręcznika systemowego dołączone do większości dystrybucji Linuksa mogą w rzeczywistości dać szybki kurs wywołań systemowych, co może ogromnie pomóc w poznawaniu jądra. Uruchom przeglądarkę graficznych stron podręcznika xman z linku .desktop, jeśli taki posiadasz, lub alternatywnie, przytrzymując jednocześnie klawisz super i R, a następnie wpisując xman i wciskając enter. Wybierz opcję „Strona ręczna”, a następnie wybierz „Sekcje”, a na koniec „(2) Połączenia systemowe” z menu rozwijanego.

2016-11-25_020430

Kiedyś opcja „ intro ”, Wybierz to. Powita Cię strona z Linux Programmer’s Manual, na której znajdziesz sporo informacji na temat wywołań systemowych.

2016-11-25_020518

6 minut czytania