Biorąc przykład Ubuntu, czy możemy stwierdzić, czy jądro zostało skompilowane na zamówienie, a nie co zawiera dystrybucję?
ubuntu
linux-kernel
bytefire
źródło
źródło
Odpowiedzi:
Jasne, po prostu sprawdź, czy
dpkg
o tym wie.Najpierw sprawdź uruchomioną wersję jądra.
Następnie powiedz,
dpkg
aby szukał pliku obrazu jądra wdpkg
bazie danych.Lub, lepiej, użyj
dlocate
zdlocate
pakietu.dlocate
Najpierw buduje pamięć podręczną zdpkg
bazy danych i korzysta z niej. Więc to jest szybkie.Na koniec sprawdź, czy archiwa Debiana zawierają ten pakiet.
Jeśli nie, to jest to pakiet niestandardowy. Oczywiście, jeśli dpkg nie wie o pliku obrazu, to twoje jądro w ogóle nie jest częścią pakietu, ale zostało skompilowane lokalnie.
Zauważ, że
apt
potrafi odróżnić pakiet w archiwum Debiana od kompilacji lokalnej o tej samej nazwie. Myślę, że sprawdza sumę md5 pakietu, ale nie pamiętam szczegółów, jak to robi. Pakiety binarne zawierają informacje o skrótach, patrzapt-cache show linux-image-3.2.0-4-amd64
na przykład na dole . na przykładźródło
apt-cache show ...
działa. Widzę, że się pomyliłem. Poprawianie teraz.Minimalnie
uname -r
da wersję jądra, taką jak3.18.6
. Jednak po skompilowaniu jądra można skonfigurować i dołączyć do niego dodatkowy ciąg, a dystrybucje zwykle robią to, aby wskazać własny poziom łatki (po myślniku) i smak, np3.18.6-32-generic
. To jedna wskazówka; oczywiście użycie własnego łańcucha podczas tworzenia niestandardowego jądra może być innym.uname -v
daje ciąg znaków, który domyślnie jest takiLiczba jest dowolna, tzn. Tyle razy jądro zostało zbudowane przy użyciu określonego drzewa źródłowego bez resetowania drzewa - może to być przydatne, gdy budujesz własne.
SMP
wskazuje jądro wielozadaniowe (tj. nie w czasie rzeczywistym), a PREEMPT jest kolejną opcją konfiguracyjną związaną z „modelem prewencyjnym” programu planującego. Ale najważniejszą wskazówką jest prawdopodobnie czas jej budowy. Można to wykorzystać do dopasowania znacznika czasu modyfikacji / zmiany w samym jądrze, pamiętając, że można to zmienić nptouch
. Za pomocą . Na przykładstat
w tym jądrze wygląda następująco:Co jest w zasadzie zgodne z
Mon Mar 9 13:55:25 EDT 2015
.źródło
Taki sam jak każdy inny
to wersja zainstalowana przez menedżera pakietów i
porównaj wersje
dla mnie to
i
które wskazują tę samą wersję
źródło
/boot
. Chodzi mi o to, że nie rozumiem, dlaczego miałbyś oczekiwać, że wynikuname
zmieni się, jeśli po prostu ponownie skompilujesz podczas zmiany niektórych opcji. W takim przypadku oczekiwałbym tegoapt-cache
iuname -r
zwróci te same informacje, mimo że dokonałeś ponownej kompilacji lokalnie.Powiedziałbym, że najogólniej prawdziwa odpowiedź brzmi „nie, nie możesz”. Istnieją różne metody, które mogą pomóc w niektórych przypadkach, które zostały już zasugerowane, ale wydaje się, że wszystkie tęsknią za faktyczną sytuacją. W rzeczywistości, jeśli używasz niestandardowego jądra, to jądro może zrobić wszystko, w tym ukryć swoją obecność lub wyglądać na inne jądro.
Byłbym zmartwiony, jeśli rzeczywiście używasz niestandardowego jądra i nie wiedziałeś o tym. Jedynym niezawodnym sposobem poznania używanego jądra jest dokładne śledzenie, które jądro skompilujesz i zainstalujesz.
Jeśli naprawdę nie jesteś pewien, z którego jądra działa system lub z jakich źródeł to jądro zostało zbudowane lub skąd ono pochodzi, poważnie zastanowiłbym się nad ponownym zainstalowaniem systemu operacyjnego ze znanego dobrego obrazu i bardziej ostrożnym w przyszłości o tym, które jądra próbujesz uruchomić z lub używać.
źródło