আমার উবুন্টু ইনস্টলেশনতে vmlinux কোথায়?


16

আমি আফ্রোফাইল শুরু করার সাথে কাজ করার চেষ্টা করছি এবং আমি এই পদক্ষেপে একটি সমস্যায় পড়ছি:

opcontrol --vmlinux=/path/to/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

এগুলির সাথে ওপ্রোফিল কাজ করতে পারে কিনা আমি উত্তর দিতে পারি না এমন কোনও প্রশ্ন নয়।


3
এডিট দিয়ে কি আছে? superuser.com/posts/62576/revisions
জোনিক

5
অপ্রোফিল vmlinuzএটির সাথে কাজ করতে পারে না এটি সঙ্কুচিত কার্নেল প্রয়োজন।
SaveTheRbtz


24

vmlinuxউবুন্টুর আওতায় পাওয়ার সহজতম (এবং হ্যাকি) উপায় হ'ল ডিডেবস সংগ্রহস্থল যুক্ত করা :

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উবুন্টুর সাথে আগত ডিফল্ট-ই থাকে না, কারণ সেগুলি চিহ্নগুলি ছিনিয়ে নেওয়া হয়)।

এখন, vmlinuzএকটি vmlinuxফাইলের মধ্যে একটি আনপ্যাক করা সম্ভব - তবে, এটি তুচ্ছ নয়; প্রথমে আপনাকে একটি বাইট অফসেট সন্ধান করতে হবে vmlinuzযেখানে সংকুচিত ফাইলটি শুরু হয় এবং তারপরে কেবল প্রয়োজনীয় অংশটি ব্যবহার ddএবং zcatআনপ্যাক করুন। বিস্তারিতভাবে এটিকে ব্যাখ্যা করা হয়েছে: " [উবুন্টু] এই বাগটি কীভাবে সন্ধান করবেন? - উবুন্টু ফোরাম - পোস্ট # 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

অনেক ধন্যবাদ, @ সেভ দ্য আরবিটিজ - এর কোনও ধারণা ছিল না .. চিয়ার্স!
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

এটি একটি পুরানো প্রশ্ন এবং পুরানো উত্তরগুলি আমার পক্ষে আর কার্যকর হয় না (উবুন্টু ১৪.০৪)।

  1. প্রথমত, এর vmlinuxজন্য alচ্ছিকoprofile , আপনার কেবল কার্নেলের ভিতরে কী ঘটছে তা দেখাতে হবে, ব্যবহারকারী-স্পেস প্রোফাইলিং ছাড়া এটি করা যেতে পারে। ডকটিতে আরও পড়ুন

  2. আপনার যদি এখনও প্রয়োজন হয় vmlinux, ডিডিবস সংগ্রহস্থল যুক্ত করুন (নির্লজ্জভাবে উবুন্টুর উইকি থেকে নেওয়া ):

    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 ফাইল) রয়েছে তাদের ডিবান / উবুন্টুতে লিনাক্স-চিত্র-VERSION-ARCH বলা হয়।

আপনি এগুলি কমান্ডের সাথে তালিকাভুক্ত করতে পারেন dpkg -l linux-image-*, এবং ইনস্টল করা প্যাকেজটির জন্য (এটির iiপ্রথম কলামে চিহ্নিত রয়েছে) আপনি এতে ফাইলগুলির একটি তালিকা পেতে পারেন dpkg -L linux-image-VERSION-ARCH, যেমন dpkg -L linux-image-2.6.31-17-386সাম্প্রতিক কার্মিক ইনস্টলের জন্য for

লক্ষ্য করুন যে lপ্রথম কমান্ডে ছোট এবং দ্বিতীয়টিতে বড় হাতের অক্ষর।


0

নিম্নলিখিত কমান্ড চেষ্টা করুন:

apt-get linux-image.*-dbg

সাধারণত vmlinux / usr / lib / debug / ইনস্টলেশন পরে


-1

এটি আপনার মূলে থাকা উচিত (/)। উবুন্টু ৮.১০-তে এটি /boot/vmlinuz-2.6.28-16- জেনারিকের দিকে নির্দেশ করে একটি লিঙ্ক

একটি কর

ls / -l | grep '^l'

আপনার এটি খুঁজে পাওয়া উচিত

PS: সঠিক পথের নাম সম্পর্কে নিশ্চিত নয়।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.