1. 程式人生 > >Qemu除錯Linux核心

Qemu除錯Linux核心

Qemu是很有名的ARM虛擬程式,可以在Qemu中執行除錯ARM平臺Linux核心。編譯Qemu,Linux核心,busybox的環境是安裝ubuntu 10.4系統的virtualbox。 
在安裝完ubuntu 10.4之後,最好先準備一下編譯環境。 
首先需要安裝編譯需要的庫

$ sudo apt-get install build-essential autoconf libtool zlib1g-dev

當然還需要安裝交叉編譯環境。

1. 下載編譯qemu-0.12.5.tar.gz解壓編譯

$ wget http://download.savannah.gnu.org/releases/qemu/qemu
-0.12.5.tar.gz$ tar xzf qemu-0.12.5.tar.gz$ cd qemu-0.12.5$ ./configure --enable-sdl --disable-kvm --enable-debug --target-list=arm-softmmu$ ./make

2.下載編譯Linux核心

$ wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-3.12.6.tar.bz2$ tar xjf linux-3.12.6.tar.bz2$ cd linux-3.12.6/$ make ARCH=arm versatile_defconfig$ 
make ARCH=arm menuconfig

在menuconfig這一步需要設定幾個才能在qemu中執行以及進行後續的除錯 
(1) 去掉Enable loadable module support左邊的[*] 
這裡寫圖片描述

(2)在Kernel Features裡邊點上Use the ARM EABI to compile the kernel左邊的[*] 
這裡寫圖片描述

(3)點上Kernel hacking裡邊的Compile the kernel with debug info左邊的[*] 
(4)然後exit -> save之後就執行下面的語句進行核心的編譯

$ make ARCH=arm CROSS_COMPILE=
arm-none-linux-gnueabi- all

3.下載編譯Busybox

$ tar busybox-1.21.1.tar.bz2
$ cd busybox-1.21.1$ make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- defconfig
$ make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- menuconfig

在menuconfig之後,進入Busybox Settings -> Build Options之後,點上Build BusyBox as a static binary (no shared libs)左邊的 [*]號 
這裡寫圖片描述

這裡寫圖片描述

這裡寫圖片描述

然後執行下面的語句編譯安裝

$ make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi-$ make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- install
$ cd _install
$ mkdir -p proc sys dev etc etc/init.d
$ cd etc/init.d
$ vi rcS

之後把下面的shell語句寫到rcS檔案

#!/bin/shmount -t proc none /proc
mount -t sysfs none /sys
/sbin/mdev -s

然後按照下面的語句生成Ram File System

$ cd ../../$ chmod +x etc/init.d/rcS$ find . | cpio -o --format=newc | gzip > ../../rootfs.img.gz$ cd ../../

4. 執行Linux核心+busybox

$./qemu-0.12.5/arm-softmmu/qemu-system-arm-M versatilepb -m128M -kernel linux-3.12.6/arch/arm/boot/zImage -initrd rootfs.img.gz -append"root=/dev/ram rdinit=/sbin/init"

5. 除錯方法

(1) 按4.執行Linux核心+busybox的命令一樣,只是後面加上"-s -S"。執行該命令之後就可以看到Qemu啟動,但看不到    有任何畫面,因為Qemu在等待除錯沒有執行核心。
$ ./qemu-0.12.5/arm-softmmu/qemu-system-arm-M versatilepb -m128M-kernel linux-3.12.6/arch/arm/boot/zImage-initrd rootfs.img.gz-append"root=/dev/ram rdinit=/sbin/init" -s -S
(2) 另外開啟一個終端,如數如下命令就可以看到程式停在start_kernel函式中
$ arm-none-linux-gnueabi-gdb> target remote : 1234> cd linux-3.12.6> file vmlinux> b start_kernel> c

相關推薦

Qemu除錯Linux核心

Qemu是很有名的ARM虛擬程式,可以在Qemu中執行除錯ARM平臺Linux核心。編譯Qemu,Linux核心,busybox的環境是安裝ubuntu 10.4系統的virtualbox。  在安裝完ubuntu 10.4之後,最好先準備一下編譯環境。  首先需要安裝

ubuntu14.04下qemu除錯linux核心

if (buf_len > 2 * rsa->sizeof_g_packet) { rsa->sizeof_g_packet = buf_len ; for (i = 0; i < gdbarch_num_regs (gdbarch); i++)

linux工具---用qemu除錯linux核心

一.qemu模擬x861.1 qemu的安裝        ubuntu 12.04下安裝qemu很簡單,         sudo apt-get install qemu1.2 linux核心的編譯    www.kernel.org 下載核心, 以linux-3.0.1為例    [email 

linuxqemu除錯linux核心

編譯核心 下載kernel原始碼 git clone git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git cd linux-stable/ -配置核心 mak

QEMU+gdb除錯Linux核心全過程

1、編譯原始碼(Linux kernel 4.6.2) make menuconfig 執行make menuconfig時報錯缺少庫檔案 需要安裝依賴庫 sudo apt-get install aptitude sudo aptitude i

除錯linux核心環境搭建方法(ddd+busybox+qemu+linux3.5.4核心

環境搭建 1.1.準備工作 (1).qemu虛擬機器 (2).busybox軟體 (3).linux-3.5.4核心 (4).ddd 除錯工具(終端中輸入 sudo apt-get install ddd 安裝) 1.2.編譯核心 (1)建立工作目錄:mkdir -p ~

利用eclipse + qemu| Vmware + gdb 除錯linux核心

      繼續回到eclipse中,這時候我們在選單中選擇Run -> Debug Configurations ,這時候開啟一個配置頁面。然後我們在C/C++ Application上雙擊滑鼠,這時在右側的頁面彈出了debug配置選項,然後我們在project一欄選擇 linux-kernel ,在

使用systemtap除錯Linux核心

最近在公司看Linux核心的nmi死鎖檢測功能的實現機制,當然,是因為它變了,所以我才看的,簡單來說就是在紅帽的某牛提交了一個核心patch:new nmi_watchdog using perf events,這個patch已經被合入到核心主線2.6.38版本,所以使用自該版本開始後核心的

qemu啟動linux核心

linux核心原始碼請自行下載了。 下面開始編譯Linux4.16.4的核心試試, 進入核心根目錄,先生成核心配置檔案: make ARCH=arm vexpress_defconfig 因為準備掛載ramdisk檔案系統,所以這裡還需要再配置一下核心, make ARCH=ar

使用gdb除錯linux核心

使用Gdb+qemu除錯核心: 我們除錯核心需要一個叫qemu的虛擬機器,qemu虛擬的一個好處便是可以讓cpu處於凍結狀態,從而讓作業系統處於暫停狀態,這樣我們才能很方便的除錯核心。首先使用qemu安裝一個作業系統,再將該作業系統的核心換成我們要除錯的。 安裝qemu

使用 ftrace 除錯 Linux 核心,第 1 部分-debugfs掛載和除錯介面

ftrace 是內建於 Linux 核心的跟蹤工具,從 2.6.27 開始加入主流核心。使用 ftrace 可以除錯或者分析核心中發生的事情。ftrace 提供了不同的跟蹤器,以用於不同的場合,比如跟蹤核心函式呼叫、對上下文切換進行跟蹤、檢視中斷被關閉的時長、跟蹤核心態中的延遲以及效能問題等。系統開發人員

在vmware中用kdb除錯linux核心和模組

環境: vmware:6.0.7 Ubuntu:12.04 LTS Linux kernel:4.3 KDB的工作原理是把kernel停下來,然後等待命令輸入,命令可以來自串列埠或鍵盤。輸出是到串列埠和console,但console上的輸出只能在退出KDB之後才能看到。

Vmware+gdb除錯Linux核心——工欲善其事,必先利其器

今天我終於忍受不了qemu的低速跟不可理喻的各種bug,開始尋找新的除錯核心的方法。然後想到了Vmware,那麼成熟的虛擬機器怎麼可能除錯不了核心。於是嘗試了一番,發現結果非常的棒!所以立馬奮筆疾書,把這個方法記錄下來。          我們這裡主要分成幾個步驟:    

gdb除錯Linux核心

原理: gdb可以支援遠端的除錯,串列埠連線和tpc/ip網路連結兩種。 在Ubuntu 9.10Linux下面,virtualbox 作為虛擬機器,裝有待除錯的Linux系統。a.建立連結。 這裡選擇串列埠方式除錯。在virtualbox的虛擬機器配置中,把串列埠設

使用 ftrace 除錯 Linux 核心

簡介: ftrace 是 Linux 核心中提供的一種除錯工具。使用 ftrace 可以對核心中發生的事情進行跟蹤,這在除錯 bug 或者分析核心時非常有用。本系列文章對 ftrace 進行了介紹,分為三部分。本文是第一部分,介紹了核心相關的編譯選項、使用者態訪問

第一步,用qemu啟動linux核心,從跑個Helloworld開始

       老生長談的內容了,就是自己編譯核心,然後製作initramfs,在用qemu跑 起來。不過在這之前先跑個helloworld玩玩。順便我在學校寫部落格的筆記本系統是ubuntu16.04,在實習單位玩的時候用的系統是centos7,兩個不同的地方我會盡量說明,

linux核心除錯+qemu+eclipse

一、除錯環境: 在ubuntu16.04下,在虛擬機器裡邊執行的ubuntu,裝32位的執行較快,選擇較新的ubuntu版本是因為安裝qemu、eclipse比較簡單,在安裝軟體上節約時間。 二、安裝

linux核心資料結構以及核心除錯

一、可移植性 1.1 資料型別可移植性 由於核心可能執行在不同的架構上,不同的架構具有不同的機器字長,因而可移植性對核心程式設計非常重要。核心資料使用的資料型別分為 3 個主要型別 標準C型別 明確大小的型別 用作特定核心物件的型別 1.1.1 標準 C 型別 使用標準

嵌入式Linux開發——(十六)Linux核心除錯技術

1、核心列印函式printk     ①printk函式與printf函式用法格式完全相同     ②它所列印的字串頭部可以加入“<n>”樣式字元,n=0---7表示這條資訊的記錄  級別     ③對於p

Linux 核心動態除錯

轉載地址:https://blog.csdn.net/u014782704/article/details/78092846 原始碼使用pr_debug(), pr_info(), pr_err()等pr_xxx()家族列印函式 需要列印時(即動態除錯), 在命令列輸入以下命令, 包含在fu