vmlinux อยู่ที่ไหนในการติดตั้ง Ubuntu ของฉัน


16

ฉันกำลังพยายามทำงานกับการเริ่มต้นใช้งานoprofileและฉันพบปัญหาในขั้นตอนนี้:

opcontrol --vmlinux=/path/to/vmlinux

Ubuntu ไม่มีแพ็คเกจที่เรียกว่า 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ภายใต้ Ubuntu คือการเพิ่มที่เก็บ 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

ตอนนี้มันเป็นไปได้ที่จะแกะไฟล์vmlinuzออกมาvmlinux- อย่างไรก็ตามนั่นไม่ใช่เรื่องเล็กน้อย ก่อนอื่นคุณต้องหาออฟเซ็ตไบต์vmlinuzที่ไฟล์บีบอัดเริ่มขึ้นจากนั้นใช้ddและzcatเพื่อแกะเฉพาะส่วนที่จำเป็นเท่านั้น รายละเอียดอธิบายไว้ใน: " [ubuntu] วิธีติดตามข้อผิดพลาดนี้ - ฟอรัม Ubuntu - โพสต์ # 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
มีสคริปต์พิเศษในคอมไพล์ของเคอร์เนลสำหรับสิ่งนั้น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

นี่เป็นคำถามเก่าและคำตอบเก่าไม่ได้สำหรับฉันอีกต่อไป (Ubuntu 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

แพ็คเกจที่มีเคอร์เนล linux (ไฟล์ vmlinuz) เรียกว่า linux-image-VERSION-ARCH ใน Debian / Ubuntu

คุณสามารถแสดงรายการไฟล์เหล่านั้นด้วยคำสั่งdpkg -l linux-image-*และสำหรับแพ็คเกจที่ติดตั้ง (มีiiเครื่องหมายในคอลัมน์แรก) คุณสามารถรับรายการไฟล์ที่มีdpkg -L linux-image-VERSION-ARCHเช่นdpkg -L linux-image-2.6.31-17-386สำหรับการติดตั้ง Karmic ล่าสุด

ขอให้สังเกตว่าlเป็นตัวพิมพ์เล็กในคำสั่งแรกและตัวพิมพ์ใหญ่ในวินาที


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.