Mengambil contoh Ubuntu, dapatkah kita tahu apakah kernel dikompilasi secara khusus dan bukan apa yang datang dengan distro?
Mengambil contoh Ubuntu, dapatkah kita tahu apakah kernel dikompilasi secara khusus dan bukan apa yang datang dengan distro?
Jawaban:
Tentu, periksa apakah dpkgtahu tentang hal itu.
Pertama periksa versi kernel yang Anda jalankan.
uname -a
Linux orwell 3.2.0-4-amd64 #1 SMP Debian 3.2.65-1+deb7u2 x86_64 GNU/Linux
Kemudian beri tahu dpkguntuk mencari file gambar kernel dalam dpkgdatabase.
dpkg -S /boot/vmlinuz-3.2.0-4-amd64
linux-image-3.2.0-4-amd64: /boot/vmlinuz-3.2.0-4-amd64
Atau, lebih baik, gunakan dlocatedari dlocatepaket. dlocatepertama membangun cache dari dpkgdatabase, dan menggunakannya. Jadi cepat.
dlocate /boot/vmlinuz-3.2.0-4-amd64
linux-image-3.2.0-4-amd64: /boot/vmlinuz-3.2.0-4-amd64
Terakhir, periksa apakah arsip Debian mengandung paket ini.
apt-cache policy linux-image-3.2.0-4-amd64
linux-image-3.2.0-4-amd64:
Installed: 3.2.68-1+deb7u1
Candidate: 3.2.68-1+deb7u1
Version table:
*** 3.2.68-1+deb7u1 0
500 http://security.debian.org/ wheezy/updates/main amd64 Packages
100 /var/lib/dpkg/status
3.2.65-1 0
500 http://httpredir.debian.org/debian/ wheezy/main amd64 Packages
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 bawah apt-cache show linux-image-3.2.0-4-amd64, misalnya. misalnya
Package: linux-image-3.2.0-4-amd64
Source: linux
Version: 3.2.68-1+deb7u1
Installed-Size: 105729
[...]
Size: 23483788
MD5sum: f9736f30f8b68ae79b2747d8a710ce28
SHA1: 64bfde903892801dccd04b52b12316901a02cd96
SHA256: 775814b3eff4a964b593c0bdeaac20587a4e3ddb1257a9d2bfcf1e9d3b9bfd15
apt-cache show ...bekerja. Saya melihat saya salah mengetik. Memperbaiki sekarang.
Minimal, uname -rakan memberikan versi kernal, seperti 3.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, seperti 3.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 ini
#4 SMP PREEMPT Mon Mar 9 13:55:25 EDT 2015
Jumlahnya 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. SMPmenunjukkan 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 dengan touch. Sebagai contoh, statpada kernel itu terlihat seperti ini:
File: ‘3.19-goldilocksSpecial’
Size: 6858880 Blocks: 13400 IO Block: 4096 regular file
Device: 801h/2049d Inode: 3156605 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2015-02-15 15:32:29.000000000 -0500
Modify: 2015-03-03 13:55:21.000000000 -0500
Change: 2015-03-03 14:02:26.767045553 -0500
Birth: -
Cukup banyak yang sejalan Mon Mar 9 13:55:25 EDT 2015.
Sama seperti yang lainnya
sudo apt-cache policy linux-generic
adalah versi yang diinstal meskipun manajer paket dan
uname -r
bandingkan versinya
bagi saya itu
linux-generic:
Installed: 3.19.0.15.14
Candidate: 3.19.0.15.14
dan
3.19.0-15-generic
yang menunjukkan versi yang sama
/boot. Maksud saya adalah bahwa saya tidak melihat mengapa Anda mengharapkan output unameuntuk berubah jika Anda hanya mengkompilasi ulang saat mengubah beberapa opsi. Dalam hal ini, saya berharap itu apt-cachedan uname -rakan 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.