Ubuntu kurulumumda vmlinux nerede?


16

Oprofile başlamak için çalışıyorum ve bu adımda bir sorunla karşılaşıyorum:

opcontrol --vmlinux=/path/to/vmlinux

Ubuntu'nun vmlinux adlı bir paketi yok ve yaptığımda locate vmlinuxçok fazla dosya alıyorum:

/usr/src/linux-headers-2.6.28-14/arch/h8300/boot/compressed/vmlinux.lds
/usr/src/linux-headers-2.6.28-14/arch/m68k/kernel/vmlinux-std.lds
/usr/src/linux-headers-2.6.28-14/arch/m68k/kernel/vmlinux-sun3.lds
/usr/src/linux-headers-2.6.28-14/arch/mn10300/boot/compressed/vmlinux.lds
/usr/src/linux-headers-2.6.28-14/arch/sh/boot/compressed/vmlinux_64.lds
/usr/src/linux-headers-2.6.28-14/arch/x86/boot/compressed/vmlinux_32.lds
/usr/src/linux-headers-2.6.28-14/arch/x86/boot/compressed/vmlinux_64.lds
/usr/src/linux-headers-2.6.28-14/include/asm-generic/vmlinux.lds.h
/usr/src/linux-headers-2.6.28-15/arch/h8300/boot/compressed/vmlinux.lds
/usr/src/linux-headers-2.6.28-15/arch/m68k/kernel/vmlinux-std.lds
/usr/src/linux-headers-2.6.28-15/arch/m68k/kernel/vmlinux-sun3.lds
/usr/src/linux-headers-2.6.28-15/arch/mn10300/boot/compressed/vmlinux.lds
/usr/src/linux-headers-2.6.28-15/arch/sh/boot/compressed/vmlinux_64.lds
/usr/src/linux-headers-2.6.28-15/arch/x86/boot/compressed/vmlinux_32.lds
/usr/src/linux-headers-2.6.28-15/arch/x86/boot/compressed/vmlinux_64.lds
/usr/src/linux-headers-2.6.28-15/include/asm-generic/vmlinux.lds.h
/usr/src/linux-headers-2.6.28-16/arch/h8300/boot/compressed/vmlinux.lds
/usr/src/linux-headers-2.6.28-16/arch/m68k/kernel/vmlinux-std.lds
/usr/src/linux-headers-2.6.28-16/arch/m68k/kernel/vmlinux-sun3.lds
/usr/src/linux-headers-2.6.28-16/arch/mn10300/boot/compressed/vmlinux.lds
/usr/src/linux-headers-2.6.28-16/arch/sh/boot/compressed/vmlinux_64.lds
/usr/src/linux-headers-2.6.28-16/arch/x86/boot/compressed/vmlinux_32.lds
/usr/src/linux-headers-2.6.28-16/arch/x86/boot/compressed/vmlinux_64.lds
/usr/src/linux-headers-2.6.28-16/include/asm-generic/vmlinux.lds.h

Aradığımdan hangisi?

Yanıtlar:


2

Dizininizde olmalıdır /boot- mu Ubuntu aslında satırlarında sıkıştırılmış sürümlere sahiptir vmlinuz-2.6.28-16-generic.

Oprofile'ın bunlarla çalışıp çalışamayacağı cevap verebileceğim bir soru değil.


3

5
oprofile onunla çalışamaz vmlinuzsıkıştırılmamış bir çekirdek gerektirir.
SaveTheRbtz

9
vmlinux vmlinuz ile aynı değil
gsingh2011 28:12

24

vmlinuxUbuntu altında elde etmenin en kolay (ve hacky olmayan) yolu ddebs deposu eklemektir :

echo "deb http://ddebs.ubuntu.com $(lsb_release -cs)-updates main restricted universe multiverse
deb http://ddebs.ubuntu.com $(lsb_release -cs)-security main restricted universe multiverse
deb http://ddebs.ubuntu.com $(lsb_release -cs)-proposed main restricted universe multiverse" | \
sudo tee -a /etc/apt/sources.list.d/ddebs.list

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 428D7C01

ve çekirdek hata ayıklama sembollerini yükleyin:

sudo apt-get update
sudo apt-get install linux-image-$(uname -r)-dbgsym

vmlinux o zaman burada bulabilirsiniz:

/usr/lib/debug/boot/vmlinux-$(uname -r)

Bu kabul edilen cevap olmalı.
Dan

12

Hm, bunu @paxdiablo'nun yukarıdaki cevabına bir yorum olarak koymak istedim, ancak yorum düğmesini bulamıyor musunuz? Neyse..

Mesele, vmlinuzdosyanın sıkıştırılmış olmasıdır - ve hata ayıklama amaçları için, sıkıştırılmamış bir dosyaya vmlinux(ve tercihen hata ayıklama simgeleriyle oluşturulmuş - vmlinuzUbuntu ile gelen varsayılan -es'lerin sembollerden arındırıldığından) sahip olmaması gerekir.

Şimdi, a'yı vmlinuzbir vmlinuxdosyaya açmak mümkündür - ancak bu önemsiz değildir; İlk sen bayt uzaklığına bulmak zorunda vmlinuzkullanmak o zaman nerede sıkıştırılmış dosya başlar ve ddve zcatsadece gerekli bir parçası açmak için. Ayrıntılı olarak, bu şu şekilde açıklanmaktadır: " [ubuntu] Bu hatayı nasıl izlerim? - Ubuntu Forumları - post # 4 "; kısaca, bu yazıyı temel alan örnek terminal komut günlüğüm aşağıdadır:

$ od -A d -t x1 /boot/vmlinuz-$(uname -r) | grep '1f 8b 08 00' --colour
0013920 f3 a5 fc 5e 8d 83 70 23 3d 00 ff e0 *1f 8b 08 00*

$ wcalc 13920+12
 = 13932

$ dd if=/boot/vmlinuz-$(uname -r) bs=1 skip=13932 | zcat > vmlinux-$(uname -r)
4022132+0 records in
4022132+0 records out
4022132 bytes (4,0 MB) copied, 42,1695 s, 95,4 kB/s

gzip: stdin: decompression OK, trailing garbage ignored


$ file vmlinux-2.6.32-25-generic 
vmlinux-2.6.32-25-generic: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, stripped

Umarım bu yardımcı olur,

Şerefe!


3
Bunun için çekirdeğin git kısmında özel bir komut dosyası vardır extract-vmlinux: git.kernel.org/?p=linux/kernel/git/torvalds/…
SaveTheRbtz

Çok teşekkürler, @SaveTheRbtz - bu konuda hiçbir fikrim yoktu .. Şerefe!
sdaau

Bu, varsayılan yanıt olarak işaretlenmelidir. Teşekkürler!
Amol Sale

3

aşağıdaki komutu kullanarak kaynak indirebilir ve kendinizinkini derleyebilirsiniz:

apt-get source linux-image-$(uname -r)
apt-get build-dep --no-install-recommends linux-image-$(uname -r)
cd linux-2.6.32/
fakeroot make -f debian/rules binary-generic skipdbg=false  

veya ddeb paketini buradan indirip kurabilirsiniz.sudo dpkg -i linux-image-3.2.0-60-virtual-dbgsym_3.2.0-60.91_amd64.ddeb


2

Bu eski bir soru ve eski cevaplar artık benim için işe yaramıyor (ubuntu 14.04).

  1. Her şeyden önce, vmlinuxisteğe bağlıdıroprofile , sadece çekirdeğin içinde neler olduğunu göstermeniz gerekir, kullanıcı alanı profili onsuz yapılabilir. Daha fazla bilgi için doc .

  2. Hala gerekiyorsa vmlinux, ddebs deposunu ekleyin (utanmadan alınan ubuntu kullanım vikiden ):

    codename=$(lsb_release -c | awk  '{print $2}')
    sudo tee /etc/apt/sources.list.d/ddebs.list << EOF
    deb http://ddebs.ubuntu.com/ ${codename} main restricted universe multiverse
    deb http://ddebs.ubuntu.com/ ${codename}-security main restricted universe multiverse
    deb http://ddebs.ubuntu.com/ ${codename}-updates  main restricted universe multiverse
    deb http://ddebs.ubuntu.com/ ${codename}-proposed main restricted universe multiverse
    EOF
    sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys ECDCAD72428D7C01
    
  3. Ardından çekirdeğiniz için hata ayıklama sembolleri yükleyin . Bunu, çekirdeği her yükselttiğinizde yeniden başlattıktan sonra unamedoğru çekirdek sürümünü alacak şekilde yapmanız gerekir . Eski çekirdeklerle ilişkili paketleri kaldırmaktan çekinmeyin.

    sudo apt-get update
    sudo apt-get install linux-image-$(uname -r)-dbgsym
    
  4. Bu paket yüklendikten sonra vmlinuxdosyayı burada bulabilirsiniz :

    /usr/lib/debug/boot/vmlinux-$(uname -r)
    


0

Linux çekirdeği (vmlinuz dosyası) içeren paketlere Debian / Ubuntu'da linux-image-VERSION-ARCH adı verilir.

Bunları komutla listeleyebilirsiniz dpkg -l linux-image-*ve yüklü paket için ( iiilk sütunda işaret vardır), içinde bulunan dosyaların bir listesini alabilirsiniz dpkg -L linux-image-VERSION-ARCH, örn dpkg -L linux-image-2.6.31-17-386. Yeni bir Karmic kurulumu için.

lİlk komutta küçük harf, ikinci komutta büyük harf olduğuna dikkat edin .


0

Aşağıdaki komutu deneyin:

apt-get linux-image.*-dbg

genellikle vmlinux kurulumdan sonra / usr / lib / debug / içinde bulur


-1

kökünüzde (/) olmalıdır. Ubuntu 8.10'da /boot/vmlinuz-2.6.28-16-generic'i gösteren bir bağlantıdır

bir yap

ls / -l | grep '^l'

bulmalısın

PS: tam yol adından emin değilim.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.