Ubuntuインストールのvmlinuxはどこにありますか?


16

私はoprofileを起動しようとしていますが、このステップで問題に直面しています:

opcontrol --vmlinux=/path/to/vmlinux

Ubuntuにはvmlinuxというパッケージがありません。Aを実行するlocate vmlinuxと、多くのファイルが取得されます。

/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

これらのどれが私が探しているものですか?

回答:


2

それはあなたの/bootディレクトリにあるべきです-mu Ubuntuは実際には圧縮されたバージョンを持っていますvmlinuz-2.6.28-16-generic

oprofileがそれらで機能するかどうかは、私が答えられる質問ではありません。



5
oprofile vmlinuzは、非圧縮カーネルを必要とすると動作しません。
SaveTheRbtz

9
vmlinuxはvmlinuzと同じではありません
-gsingh2011

24

vmlinuxUbuntuで入手する最も簡単な(そしてハッキングでない)方法は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

カーネルデバッグシンボルをインストールします。

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

vmlinux ここにあります:

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

これは受け入れられた答えでなければなりません。
ダン

12

うーん、@ paxdiabloによる上記の回答へのコメントとしてこれを入れたいだけなのに、コメントボタンが見つかりませんか?いずれかの方法..

事は vmlinuzファイルが圧縮され -デバッグ目的では、圧縮vmlinuxされてvmlinuzいないファイルが必要です(そして、できればデバッグシンボルで構築されたもの-シンボルが取り除かれているため、Ubuntuに付属するデフォルトのesにはありません)。

これで、vmlinuzaをvmlinuxファイルに展開することが可能になりました-しかし、それは簡単なことではありません。最初vmlinuzに、圧縮ファイルの開始位置でバイトオフセットを見つけてから、とを使用ddzcatて必要な部分のみを解凍する必要があります。詳細については、「[ubuntu]このバグをトレースする方法?-Ubuntu Forums-post#4」で説明されています。」で説明しています。簡単に言えば、以下はその投稿に基づいたターミナルコマンドログの例です。

$ 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

これが役立つことを願って、

乾杯!


3
カーネルのgitには、そのための特別なスクリプトがあります。git.kernel.orgextract-vmlinux

@SaveTheRbtzに心から感謝します。
sdaau

これはデフォルトの回答としてマークする必要があります。ありがとう!
アモールセール

3

次のコマンドを使用してソースをダウンロードし、独自にコンパイルできます。

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  

または、ここからddebパッケージをダウンロードしてインストールできますsudo dpkg -i linux-image-3.2.0-60-virtual-dbgsym_3.2.0-60.91_amd64.ddeb


2

これは古い質問であり、古い回答はもう機能しません(ubuntu 14.04)。

  1. まず、のvmlinuxオプションです。oprofileカーネル内で何が起こっているかを示すためにのみ必要です。ユーザー空間のプロファイリングは、それなしでも実行できます。詳細はドキュメントをご覧ください

  2. それでも必要な場合はvmlinuxddebsリポジトリ追加(臆面もなく撮影したUbuntuのウィキからの):

    codename=$(lsb_release -c | awk  '{print $2}')
    sudo tee /etc/apt/sources.list.d/ddebs.list << EOF
    deb http://ddebs.ubuntu.com/ ${codename} main restricted universe multiverse
    deb http://ddebs.ubuntu.com/ ${codename}-security main restricted universe multiverse
    deb http://ddebs.ubuntu.com/ ${codename}-updates  main restricted universe multiverse
    deb http://ddebs.ubuntu.com/ ${codename}-proposed main restricted universe multiverse
    EOF
    sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys ECDCAD72428D7C01
    
  3. 次に、カーネルのデバッグシンボルをインストールしますuname適切なカーネルバージョンを取得するために、再起動後にカーネルをアップグレードするたびにこれを行う必要があります。古いカーネルに関連付けられているパッケージを削除してください。

    sudo apt-get update
    sudo apt-get install linux-image-$(uname -r)-dbgsym
    
  4. このパッケージをインストールすると、次のvmlinuxファイルが見つかります

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


0

Linuxカーネル(vmlinuzファイル)を含むパッケージは、Debian / Ubuntuではlinux-image-VERSION-ARCHと呼ばれます。

それらをcommand dpkg -l linux-image-*でリストできます。インストールされたパッケージ(ii最初の列にマークがあります)の場合は、最近のKarmicインストールなどでdpkg -L linux-image-VERSION-ARCH、その中のファイルのリストを取得できますdpkg -L linux-image-2.6.31-17-386

l最初のコマンドでは小文字であり、2番目では大文字であることに注意してください。


0

次のコマンドを試してください。

apt-get linux-image.*-dbg

通常、vmlinuxはインストール後に/ usr / lib / debug /に配置されます


-1

ルート(/)にある必要があります。ubuntu 8.10では、/ boot / vmlinuz-2.6.28-16-genericを指すリンクです

する

ls / -l | grep '^l'

あなたはそれを見つける必要があります

PS:正確なパス名がわからない。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.