우분투 설치에서 vmlinux는 어디에 있습니까?


16

oprofile 시작을 시도하고 있는데이 단계에서 문제가 발생합니다.

opcontrol --vmlinux=/path/to/vmlinux

우분투에는 vmlinux라는 패키지가 없으며을 할 때 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디렉토리 - 무 우분투는 사실의 라인을 따라 버전을 압축하고있다 vmlinuz-2.6.28-16-generic.

oprofile이 그와 함께 작동 할 수 있는지 여부는 의문의 여지가 없습니다.


3
편집 내용은 무엇입니까? superuser.com/posts/62576/revisions
Jonik

5
oprofile이 작동하지 않으면 vmlinuz압축되지 않은 커널이 필요합니다.
SaveTheRbtz

9
vmlinux는 vmlinuz와 동일하지 않습니다
gsingh2011

24

vmlinux우분투 에서 얻는 가장 쉬운 방법 은 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)

이것이 정답입니다.
Dan

12

흠, @paxdiablo의 위 답변에 대한 주석으로 이것을 넣고 싶었지만 주석 버튼을 찾을 수 없습니까? 어쨌든 ..

문제는 vmlinuz파일이 압축되어 있고 디버깅 목적으로 압축되지 않은 파일이 필요하다는 vmlinux것입니다 (그리고 바람직하게는 디버깅 기호로 빌드 된 파일- vmlinuz우분투와 함께 제공되는 기본 파일 에는 심볼이 제거되어 있지 않음).

이제, 압축을 해제 할 수 vmlinuzvmlinux, 사소한 아니라고, 그러나 - 파일 먼저는 오프셋 바이트 찾아야 vmlinuz사용 후 어디 압축 파일 시작하고, dd그리고 zcat오직 필요한 부분을 풀고. 자세한 내용은 다음과 같습니다 : " [우분투]이 버그를 추적하는 방법-우분투 포럼-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에는 특별한 스크립트가 있습니다 extract-vmlinux: git.kernel.org/?p=linux/kernel/git/torvalds/…
SaveTheRbtz

@SaveTheRbtz에게 많은 감사를 전합니다.
sdaau

기본 답변으로 표시되어야합니다. 감사!
Amol Sale

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

이것은 오래된 질문이며, 오래된 답변은 더 이상 작동하지 않습니다 (14.04의 우분투).

  1. 우선, vmlinux에 대한 선택 사항입니다oprofile . 커널 내부에서 일어나는 일을 보여주기 위해 필요합니다. 사용자 공간 프로파일 링은 커널없이 수행 할 수 있습니다. 문서에서 자세히 읽어보십시오 .

  2. 당신은 여전히 필요한 경우 vmlinux, ddebs 저장소 추가 (뻔뻔하게 촬영 우분투의 위키에서를 )

    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

리눅스 커널 (vmlinuz 파일)을 포함하는 패키지는 데비안 / 우분투에서 linux-image-VERSION-ARCH라고합니다.

당신은 명령으로 나열 할 수 있습니다 dpkg -l linux-image-*, 설치 패키지 (그것을 가지고 ii당신은 그것을에서 파일의 목록을 얻을 수있는 첫 번째 열에 표시) dpkg -L linux-image-VERSION-ARCH예를 들어, dpkg -L linux-image-2.6.31-17-386최근 카르마 설치를 제공하기위한 것.

공지 사항 l첫 번째 명령에 소문자와 두 번째에 대문자된다.


0

다음 명령을 시도하십시오 :

apt-get linux-image.*-dbg

일반적으로 vmlinux는 설치 후 / usr / lib / debug /에 있습니다.


-1

루트 (/)에 있어야합니다. 우분투 8.10에서는 /boot/vmlinuz-2.6.28-16-generic을 가리키는 링크입니다.

~을하다

ls / -l | grep '^l'

당신은 그것을 찾아야합니다

추신 : 정확한 경로 이름을 모릅니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.