Mengambil contoh Ubuntu, dapatkah kita tahu apakah kernel dikompilasi secara khusus dan bukan apa yang datang dengan distro?
ubuntu
linux-kernel
bytefire
sumber
sumber
Jawaban:
Tentu, periksa apakah
dpkg
tahu tentang hal itu.Pertama periksa versi kernel yang Anda jalankan.
Kemudian beri tahu
dpkg
untuk mencari file gambar kernel dalamdpkg
database.Atau, lebih baik, gunakan
dlocate
daridlocate
paket.dlocate
pertama membangun cache daridpkg
database, dan menggunakannya. Jadi cepat.Terakhir, periksa apakah arsip Debian mengandung paket ini.
Jika tidak, maka itu adalah paket khusus. Tentu saja, jika dpkg tidak tahu tentang file gambar, maka kernel Anda sama sekali bukan bagian dari paket, tetapi sudah dikompilasi secara lokal.
Catatan yang
apt
dapat memberi tahu perbedaan antara paket dalam arsip Debian dan yang dikompilasi secara lokal dengan nama yang sama. Saya pikir ia memeriksa paket md5sum, tapi saya lupa detail bagaimana melakukan itu. Paket biner berisi informasi tentang hash, lihat bagian bawahapt-cache show linux-image-3.2.0-4-amd64
, misalnya. misalnyasumber
apt-cache show ...
bekerja. Saya melihat saya salah mengetik. Memperbaiki sekarang.Minimal,
uname -r
akan memberikan versi kernal, seperti3.18.6
. Namun, ketika kernel dikompilasi, string tambahan dapat dikonfigurasikan dan dilampirkan padanya dan distro biasanya melakukan ini untuk menunjukkan tingkat patch mereka sendiri (setelah tanda hubung) dan rasa, seperti3.18.6-32-generic
. Itu satu petunjuk; jelas menggunakan string Anda sendiri ketika Anda membuat kernel kustom bisa menjadi yang lain.uname -v
memberikan string yang secara default adalah sesuatu seperti iniJumlahnya sewenang-wenang dalam arti bahwa ini adalah berapa kali kernel ini dibangun menggunakan pohon sumber tertentu tanpa pohon diatur ulang - ini mungkin berguna ketika Anda membangun sendiri.
SMP
menunjukkan kernel multi-tasking (yaitu, bukan waktu nyata) dan PREEMPT adalah opsi konfigurasi lain yang terkait dengan "model preemption" penjadwal. Tapi petunjuk besar di sini mungkin adalah waktu itu dibangun. Ini dapat digunakan untuk mencocokkan modifikasi / ubah stempel waktu pada kernel itu sendiri, dengan mengingat bahwa dapat diubah, misalnya dengantouch
. Sebagai contoh,stat
pada kernel itu terlihat seperti ini:Cukup banyak yang sejalan
Mon Mar 9 13:55:25 EDT 2015
.sumber
Sama seperti yang lainnya
adalah versi yang diinstal meskipun manajer paket dan
bandingkan versinya
bagi saya itu
dan
yang menunjukkan versi yang sama
sumber
/boot
. Maksud saya adalah bahwa saya tidak melihat mengapa Anda mengharapkan outputuname
untuk berubah jika Anda hanya mengkompilasi ulang saat mengubah beberapa opsi. Dalam hal ini, saya berharap ituapt-cache
danuname -r
akan mengembalikan informasi yang sama, terlepas dari kenyataan bahwa Anda telah dikompilasi ulang secara lokal.Saya akan mengatakan jawaban yang paling benar umumnya adalah "tidak, Anda tidak bisa". Ada berbagai metode yang dapat membantu dalam kasus-kasus tertentu dan ini sudah disarankan tetapi semua ini sepertinya merindukan bagaimana sebenarnya situasi ini terjadi. Sebenarnya, jika Anda menggunakan kernel khusus, kernel itu dapat melakukan apa saja, termasuk menyembunyikan keberadaannya atau tampaknya kernel lain.
Saya akan khawatir jika Anda memang menjalankan kernel khusus dan tidak tahu ini. Satu-satunya cara yang dapat diandalkan untuk mengetahui kernel apa yang digunakan adalah dengan hati-hati melacak kernel mana yang Anda kompilasi dan instal.
Jika Anda benar-benar tidak yakin kernel apa yang dijalankan sistem atau dari mana kernel ini dibangun atau dari mana asalnya, saya akan dengan serius mempertimbangkan untuk menginstal ulang OS dari gambar yang dikenal baik dan lebih berhati-hati di masa depan tentang kernel apa yang Anda coba booting. dari atau digunakan.
sumber