Ich bin auf der Suche, ob es möglich ist, den gleichen Linux Kerneltwice (gleiche Quellen, gleiche Umgebung, gleiche Optionen, gleicher Compiler) zu bauen und die gleiche Prüfsumme zu erhalten. Weiß jemand, wie man das macht?
Antworten
Zu viele Anzeigen?Das Datum der Erstellung ist in der Version enthalten, siehe init version.c :
const char linux_banner[] =
"Linux version " UTS_RELEASE " (" LINUX_COMPILE_BY "@"
LINUX_COMPILE_HOST ") (" LINUX_COMPILER ") " UTS_VERSION "\n";
und UTS_VERSION ist in include/linux/compile.h definiert:
/* This file is auto generated, version 1 */
/* PREEMPT */
#define UTS_MACHINE "arm"
#define UTS_VERSION "#1 PREEMPT Mon Jun 29 10:49:17 CEST 2009"
#define LINUX_COMPILE_TIME "10:49:17"
#define LINUX_COMPILE_BY "cynove"
#define LINUX_COMPILE_HOST "jp"
#define LINUX_COMPILE_DOMAIN "evonyc"
#define LINUX_COMPILER "gcc version 4.3.2 (crosstool-NG-1.4.0) "
compile.h wird von scripts/mkcompile_h generiert, wo Sie die folgende Zeile finden:
UTS_VERSION="$UTS_VERSION $CONFIG_FLAGS `LC_ALL=C LANG=C date`"
Durch das Entfernen der date
aus der vorigen Zeile, sollten Sie in der Lage sein, die Abhängigkeit von der Erstellungszeit loszuwerden.
Die Antwort von shodanex ist richtig, aber unvollständig. Nach einigen Nachforschungen habe ich herausgefunden, dass die Linux-Kernel-Binärdatei ein Standard-RAMFS einbettet, was ein weiterer Grund für die Unterschiede zwischen den Kompilierungen der beiden Kernel ist (CPIO RAMFS-Header bettet Datum ein). Es ist nicht möglich, diese Funktion zu deaktivieren, aber es ist möglich, ein Standard-RAMFS bereitzustellen. Wenn Sie dies tun, erhalten Sie genau die gleiche Prüfsumme.
Ich danke Ihnen. Ihre Antworten helfen mir sehr, mein Problem zu lösen.
@gsempe, das sollten Sie sich ansehen: "Kernel-Build deterministisch machen" ref. http://lwn.net/Articles/437864/
es ist möglich, bestimmte Lärmquellen zu beseitigen (Lärm liegt ... im Auge des Betrachters ;-)
Der schnellste Weg, dies zu überprüfen, wäre, eine Kopie zu machen, sie zu säubern und dann erneut zu machen. Wenn die Prüfsumme übereinstimmt, dann ist es möglich. Wenn nicht, dann deutet das darauf hin, dass Make einige Quelldateien auf irgendeine Weise verändert (Build-Nummerierung, Build-Datum usw.)
- See previous answers
- Weitere Antworten anzeigen
1 Stimmen
Edition von @RamenChef macht keinen Sinn... Ist es eigentlich möglich, dass StackOverflow so schlecht geworden ist?