GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wo ist vmlinux auf meiner Ubuntu-Installation?

Der einfachste (und nicht hackige) Weg, um vmlinux zu erhalten unter Ubuntu ist das Ddebs-Repository hinzuzufügen:

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

und Kernel-Debug-Symbole installieren:

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

vmlinux dann finden Sie hier:

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

Hm, wollte dies nur als Kommentar zur obigen Antwort von @paxdiablo setzen, finde aber den Kommentar-Button nicht? Wie auch immer..

Die Sache ist, dass die vmlinuz Datei ist komprimiert - und für Debugging-Zwecke benötigen Sie eine unkomprimierte vmlinux eine (und vorzugsweise eine, die mit Debugging-Symbolen gebaut wurde - die standardmäßig vmlinuz -es, die mit Ubuntu kommen, haben keine, da sie von Symbolen befreit sind).

Jetzt ist es möglich, einen vmlinuz zu entpacken in vmlinux file - das ist aber nicht trivial; Zuerst müssen Sie einen Byte-Offset in vmlinuz finden wo die komprimierte Datei beginnt, und verwenden Sie dann dd und zcat nur das notwendige Teil auszupacken. Im Detail wird dies erklärt in:"[ubuntu] How to trace this bug? - Ubuntu Forums - post #4"; Kurz gesagt, unten ist mein Beispiel für ein Terminal-Befehlsprotokoll, das auf diesem Beitrag basiert:

$ 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

Nun, ich hoffe, das hilft,

Prost!


Sie können den Quellcode herunterladen und Ihren eigenen mit dem folgenden Befehl kompilieren:

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  

oder Sie können das ddeb-Paket hier herunterladen und mit sudo dpkg -i linux-image-3.2.0-60-virtual-dbgsym_3.2.0-60.91_amd64.ddeb installieren


Linux
  1. Ubuntu 22.04 Cinnamon Desktop-Installation

  2. Ubuntu 20.04-Installation von USB

  3. Ubuntu 20.04 Cinnamon Desktop-Installation

  4. Ubuntu 20.04 Tomcat-Installation

  5. Ubuntu 20.04 Serverinstallation

Ubuntu 22.04 VLC-Installation

Ubuntu 22.04 Eclipse-Installation

Ubuntu 22.04 PostgreSQL-Installation

Ubuntu 22.04 Chromium-Browser-Installation

Installationsschritte von VirtualBox 5.0 auf Ubuntu 15.04 / 14.04

Samba-Server-Installation auf Ubuntu 14.10