2013-05-12 4 views
5

, ilk birkaç ikiye bölme adımlar genellikle büyük fark yapmaz, çekirdek kaynağının büyük bir değiştirin. Ancak, ikiye kapsamı daraldıkça, her adımda daha az kaynak dosyası değiştirilir, bu nedenle kaynak ağacının temizlenmesi, yeniden oluşturulmasına gerek olmayan çok sayıda *.o dosyasını kaldıracaktır. make yanaHer bir bölümlendirme adımından sonra Linux çekirdeği kaynak ağacının temizlenmesi gerekli midir? İki nispeten uzak kaydedilmesini arasındaki Linux çekirdek kaynak ağacını bisecting zaman <code>make distclean</code> çalıştırmak olup olmadığını bu yüzden

ilişkili kaynak dosyalarının olduğu için kendi son değişiklik zamanı karşılaştırılarak yeniden inşa edilmesi gereken nesne dosyalarını algılar, ben her bisection adımdan sonra ağaç temizlemek için gerekli değildir varsayalım, ama ben ediyorum uzunluğunun ikiye bölünme sürecinin, en sonunda, söz konusu hatayla hiçbir ilgisi olmayan "kötü" bir taahhüt haline geldiği bir duruma girdikten sonra bir önlem olarak yapın.

somut hale getirmek için, burada ben ilk ikiye bölme girişiminde kullanılan adımlar (yanlış içine beni kesinleştirme) şunlardır:

cp /boot/config-`uname -r` .config 
make oldconfig 
make && sudo make modules_install && sudo make install 
# reboot 
# Then I repeat the following steps until the bisection ends. 
# test the kernel 
git bisect {good,bad} 
make && sudo make modules_install && sudo make install 
# reboot 

Tekrar aşağıdaki prosedürü kullanarak ve başardı bisected başarıyla hatalı taahhüt ulaşmak: birisi bir şekilde beni işaret misin diye kenrel inşa sisteminin iç yapıları çok bilgili değilim bu yana

make distclean 
cp /boot/config-`uname -r` .config 
make oldconfig 
make && sudo make modules_install && sudo make install 
# reboot 
# test the kernel 
git bisect {good,bad} 
# Then I repeat the steps above until the bisection ends. 

, bu iyi olurdu hangi 'un her bir bölüm basamağından sonra tüm çekirdeği temizlemesini ve yeniden oluşturmasını engelleyebilirim, çünkü bu bana çok fazla zaman kazandıracak ve bilişim işlemini kısaltacaktır.

cevap

2

the man

itibaren yapmak programı makefile veri tabanı ve dosyaların güncellenmesi gereken dosyaların karar vermek son değişiklik zamanları kullanır. Gördüğünüz gibi

ve hızlı bir deney

 
$ stat -c%y bar.txt 
2013-05-11 22:58:46.499826200 -0500 

$ git checkout HEAD~1 
HEAD is now at e7b9f1c... first 

$ stat -c%y bar.txt 
2013-05-11 22:58:52.583836900 -0500 

, bir checkout gerçekleştiren Dosyanın değiştirme süresini değiştirir ve bunu zorlayacaktır sırayla make ile derlenmesi gerekecektir. Bu nedenle, cevabı hayır, gerekli olan dosya yeniden derlenmiş olduğundan ağacı temizlemek gerekli değildir.

+1

Cevabınız için teşekkürler Steven. Biliyorum ki 'make' değişiklik zamanını kontrol eder ve ayrıca 'git checkout 'bunu değiştirir. Ama benim sorum, çekirdek yapı sisteminin işleri basit yapıp yapmadığı hakkında daha fazla şeydi, çünkü her adımdan sonra 'distcl' yapıp yapmadığıma bağlı olarak farklı ikilem sonuçlarıyla karşılaşıyorum. – Marwan

+0

Soruyu, bilişim sırasında karşılaştığım sorunla ve kullandığım komutlarla ilgili daha açık bilgilerle güncelledim. Umarım bu yardımcı olacak. – Marwan