Estoy tratando de trabajar con el inicio de oprofile , y me encuentro con un problema en este paso:
opcontrol --vmlinux=/path/to/vmlinux
Ubuntu no tiene un paquete llamado vmlinux, y cuando hago un locate vmlinux
, recibo muchos archivos:
/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
¿Cuál de estos es el que estoy buscando?
vmlinuz
requiere kernel sin comprimir.La forma más fácil (y no hacky) de obtener
vmlinux
en Ubuntu es agregar el repositorio ddebs :e instalar símbolos de depuración del kernel:
vmlinux
entonces se puede encontrar aquí:fuente
Hm, ¿solo quería poner esto como un comentario a la respuesta anterior de @paxdiablo, pero no puede encontrar el botón de comentario? De todos modos ..
La cuestión es que el
vmlinuz
archivo está comprimido, y para fines de depuración, necesitavmlinux
uno sin comprimir (y preferiblemente uno construido con símbolos de depuración) que los predeterminados quevmlinuz
vienen con Ubuntu no tienen, ya que están desprovistos de símbolos).Ahora, es posible descomprimir
vmlinuz
unvmlinux
archivo en un archivo; sin embargo, eso no es trivial; primero debe encontrar un desplazamiento de bytes en el lugarvmlinuz
donde comienza el archivo comprimido, y luego usardd
yzcat
desempaquetar solo la parte necesaria. En detalle, esto se explica en: " [ubuntu] ¿Cómo rastrear este error? - Foros de Ubuntu - post # 4 "; en resumen, a continuación se muestra mi registro de comandos de terminal de ejemplo, basado en esa publicación:Bueno, espero que esto ayude,
¡Salud!
fuente
extract-vmlinux
: git.kernel.org/?p=linux/kernel/git/torvalds/…puedes descargar la fuente y compilar la tuya usando el siguiente comando:
o puede descargar el paquete ddeb aquí e instalarlo
sudo dpkg -i linux-image-3.2.0-60-virtual-dbgsym_3.2.0-60.91_amd64.ddeb
fuente
Esta es una pregunta antigua, y las respuestas antiguas ya no funcionan para mí (ubuntu 14.04).
En primer lugar,
vmlinux
es opcional paraoprofile
, solo lo necesita para mostrar lo que está sucediendo dentro del núcleo, el perfil del espacio de usuario se puede hacer sin él. Lea más en el doc .Si aún lo necesita
vmlinux
, agregue el repositorio ddebs (tomado descaradamente de la wiki de ubuntu ):Luego instale símbolos de depuración para su núcleo . Debe hacer esto cada vez que actualice su kernel, después de reiniciar para
uname
obtener la versión correcta del kernel. Siéntase libre de eliminar paquetes asociados con núcleos antiguos.Una vez que este paquete esté instalado, encontrará el
vmlinux
archivo aquí :fuente
Ver https://bugs.launchpad.net/ubuntu/+source/linux/+bug/289087
fuente
Los paquetes que contienen kernel de Linux (el archivo vmlinuz) se llaman linux-image-VERSION-ARCH en Debian / Ubuntu.
Puede enumerarlos con el comando
dpkg -l linux-image-*
y para el paquete instalado (tieneii
marca en la primera columna) puede obtener una lista de archivos condpkg -L linux-image-VERSION-ARCH
, por ejemplo,dpkg -L linux-image-2.6.31-17-386
para una instalación Karmic reciente.Observe que
l
es minúscula en el primer comando y mayúscula en el segundo.fuente
Pruebe el siguiente comando:
generalmente vmlinux se ubica en / usr / lib / debug / después de la instalación
fuente
debería estar en su raíz (/). En ubuntu 8.10 es un enlace que apunta a /boot/vmlinuz-2.6.28-16-generic
hacer un
deberías encontrarlo
PD: no estoy seguro del nombre exacto de la ruta.
fuente