Il modo più semplice (e non complicato) per ottenere vmlinux
sotto Ubuntu è aggiungere il repository ddebs:
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
e installa i simboli di debug del kernel:
sudo apt-get update
sudo apt-get install linux-image-$(uname -r)-dbgsym
vmlinux
allora può essere trovato qui:
/usr/lib/debug/boot/vmlinux-$(uname -r)
Hm, volevo solo metterlo come commento alla risposta sopra di @paxdiablo, ma non riesci a trovare il pulsante dei commenti? Comunque...
Il fatto è che il vmlinuz
il file è compresso e, per scopi di debug, è necessario un vmlinux
non compresso uno (e preferibilmente uno costruito con simboli di debugging - quale il vmlinuz
predefinito -es forniti con Ubuntu non hanno, in quanto sono privi di simboli).
Ora è possibile decomprimere un vmlinuz
in un vmlinux
file - tuttavia, non è banale; prima devi trovare un byte offset in vmlinuz
dove inizia il file compresso, quindi usa dd
e zcat
disimballare solo la parte necessaria. In dettaglio, questo è spiegato in:"[ubuntu] How to trace this bug? - Ubuntu Forums - post #4"; in breve, di seguito è riportato il mio esempio di registro dei comandi del terminale, basato su quel post:
$ 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
Beh, spero che questo ti aiuti,
Saluti!
puoi scaricare i sorgenti e compilarne uno tuo usando il seguente comando:
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
oppure puoi scaricare il pacchetto ddeb qui e installarlo con sudo dpkg -i linux-image-3.2.0-60-virtual-dbgsym_3.2.0-60.91_amd64.ddeb