Ubuntu git çekirdek deposu
debian/
Yapılandırmaları içeren meta veriler ve çekirdek ağaç salınımı başına tek git deposunda hem izlenir: http://kernel.ubuntu.com/git/ubuntu/ubuntu-bionic.git/
Repo sonra benim Ubuntu 18.04 her çekirdek paketi için bir etiket, örneğin vardır, ben pakete sahip linux-image-4.15.0-36-generic
ben etiketine karşılık gelir tahmin ediyorum,: Ubuntu-4.15.0-36.39
.
https://help.ubuntu.com/community/Kernel/Compile , çekirdeğin nasıl derleneceğini ve dolayısıyla nasıl yapılandırılacağını ve yapılandırmaların son yapılandırmayla nasıl birleştirileceğini açıklar.
Konfigürasyonların tümü, aşağıdakileri debian.master/config/ARCH
içeren görünüyor :
config.common.ubuntu
config.common.ports
amd64/config.common.amd64
amd64/config.flavour.generic
amd64/config.flavour.lowlatency
bu yüzden bunu tahmin ediyorum linux-image-4.15.0-36-generic
irade birleştirme config.common.ubuntu
, config.common.amd64
ve config.flavour.generic
.
Birleştirmeyi yapan komut dosyası debian / scriptler / misc / kernelconfig gibi görünüyor ve yorumu içeriyor:
# Merge configs
# We merge config.common.ubuntu + config.common.<arch> +
# config.flavour.<flavour>
YAPILACAKLAR: debian.master/config/annotations
her kemer için her yapılandırma için değer içeren bir dosya da var, bu nasıl kullanılıyor?
Birisi bir şekilde ayrıntılı modda derleme komut dosyaları çalıştırarak bunları doğrulamalıdır, ancak şimdi tembelim, şunları yapabilirsiniz:
git clone git://kernel.ubuntu.com/ubuntu/ubuntu-bionic.git linux
cd linux
git checkout Ubuntu-4.15.0-36.39
fakeroot debian/rules clean
debian/rules updateconfigs
fakeroot debian/rules build-generic
Daha sonra bu yerel olarak sahip olduğum aynı yapılandırmayı üreten doğruladı:
diff debian/build/build-generic/.config /boot/config-4.15.0-36-generic
Ubuntu çekirdeği git repo'sunun da yukarı akış Linux'un üzerinde binlerce yaması olduğunu unutmayın, bu nedenle sadece doğru yapılandırmayı elde etmek davranışı yeniden oluşturmak için yeterli olmayacaktır.
Ayrıca, oluşturduğumuz çekirdeğin dmesg
, aşağıdakileri içeren önyüklemenin başlangıcına bakarak paketlenmiş olanla eşleştiğini üç kez kontrol edebiliriz :
[ 0.000000] Linux version 4.15.0-36-generic (buildd@lgw01-amd64-031) (gcc version 7.3.0 (Ubuntu 7.3.0-16ubuntu3)) #39-Ubuntu SMP Mon Sep 24 16:19:09 UTC 2018 (Ubuntu 4.15.0-36.39-generic 4.15.18)
Yapılandırma .deb
Başkaları tarafından belirtildiği gibi, son tam yapılandırma ayrıca şu şekilde de bulunur:
/boot/config-4.15.0-36-generic
her Linux çekirdeği görüntüsüne karşılık gelen:
/boot/vmlinuz-4.15.0-36-generic
Yani, diğer versiyonlar için, bunların hangi paketten geldiğini bulabiliriz:
dpkg -S /boot/config-4.15.0-36-generic
hangi verir:
linux-modules-4.15.0-36-generic: /boot/config-4.15.0-36-generic
ve sonra sadece indirebilirsiniz .deb
gelen https://packages.ubuntu.com/bionic-updates/linux-modules-4.15.0-36-generic
ve yapılandırma almak için ayıklamak:
mkdir config
cd config
wget http://mirrors.kernel.org/ubuntu/pool/main/l/linux/linux-modules-4.15.0-36-generic_4.15.0-36.39_amd64.deb
ar x linux-modules-4.15.0-36-generic_4.15.0-36.39_amd64.deb
tar -xvf data.tar.xz
cat ./boot/config-4.15.0-36-generic
Ubuntu 18.04'te test edildi.
/boot-config-*
kullandıkları sihirbazı taklit etmeye çalışmaktan daha kolay . Çevrimiçi bir paketten bir dosya yakalamanın bir yolu olmadığına dair bir utanç (ya da var mı?)