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?

vmlinuzrequiere kernel sin comprimir.La forma más fácil (y no hacky) de obtener
vmlinuxen Ubuntu es agregar el repositorio ddebs :e instalar símbolos de depuración del kernel:
vmlinuxentonces 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
vmlinuzarchivo está comprimido, y para fines de depuración, necesitavmlinuxuno sin comprimir (y preferiblemente uno construido con símbolos de depuración) que los predeterminados quevmlinuzvienen con Ubuntu no tienen, ya que están desprovistos de símbolos).Ahora, es posible descomprimir
vmlinuzunvmlinuxarchivo en un archivo; sin embargo, eso no es trivial; primero debe encontrar un desplazamiento de bytes en el lugarvmlinuzdonde comienza el archivo comprimido, y luego usarddyzcatdesempaquetar 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.ddebfuente
Esta es una pregunta antigua, y las respuestas antiguas ya no funcionan para mí (ubuntu 14.04).
En primer lugar,
vmlinuxes 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
unameobtener 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
vmlinuxarchivo 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 (tieneiimarca 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-386para una instalación Karmic reciente.Observe que
les 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