GNU/Linux >> Linux Esercitazione >  >> Linux

Dov'è vmlinux nella mia installazione di Ubuntu?

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


Linux
  1. Installazione Ubuntu 22.04 Cinnamon Desktop

  2. Installazione di Ubuntu 20.04 da USB

  3. Installazione Ubuntu 20.04 Cinnamon Desktop

  4. Installazione di Ubuntu 20.04 Tomcat

  5. Installazione del server Ubuntu 20.04

Installazione di Ubuntu 22.04 VLC

Installazione di Ubuntu 22.04 Eclipse

Installazione di Ubuntu 22.04 PostgreSQL

Installazione del browser Chromium di Ubuntu 22.04

Passaggi di installazione di VirtualBox 5.0 su Ubuntu 15.04 / 14.04

Installazione di Samba Server su Ubuntu 14.10