簡體   English   中英

如何調試我的Cross編譯的Linux內核?

[英]How to debug my Cross compiled Linux Kernel?

我已經交叉編譯了Linux內核(適用於i686上的ARM - 使用Cross-LFS)。 現在我正在嘗試使用QEMU啟動此內核。

$ qemu-system-arm -m 128 -kernel /mnt/clfs-dec4/boot/clfskernel-2.6.38.2 --nographic -M versatilepb

然后,它顯示這條線,等待無限的時間!

Uncompressing Linux... done, booting the kernel.

所以,我想調試內核,以便我可以研究究竟發生了什么。

我是這些內核版本的新手,有人可以幫我調試我的自定義內核,因為在該語句之后它甚至沒有顯示任何內容。 內核是否有可能被破壞? (我不這么認為,編譯時沒有出現任何錯誤)

我的目標是生成一個非常小的Linux操作系統的自定義構建。 關於任何工具鏈等的任何建議,根據我的要求,如司機等,容易和靈活,

謝謝

您可以使用GDB使用QEMU調試內核,您可以使用-s -S選項。 如果您想要一個簡單可靠的工具鏈,可以使用DENX的ELDK (http://www.denx.de/wiki/DULG/ELDK)。

你可以像這樣安裝它(它不是最后一個版本,但你明白了):

wget http://ftp.denx.de/pub/eldk/4.2/arm-linux-x86/iso/arm-2008-11-24.iso

sudo mkdir -p /mnt/cdrom (如有必要)

sudo mount -o loop arm-2008-11-24.iso /mnt/cdrom

/mnt/cdrom/install -d $HOME/EMBEDDED_TOOLS/ELDK/

上面的命令應該在$HOLE/EMBEDDED_TOOLS/ELDK下安裝工具鏈(如果需要,可以修改它)

echo "export PATH=$PATH:$HOME/EMBEDDED_TOOLS/ELDK/ELDK42/usr/bin" >> $HOME/.bashrc

然后,您可以看到ARM工具鏈的版本,如下所示:

arm-linux-gcc -v

您可以像這樣測試hello_world.c程序:

arm-linux-gcc hello_world.c -o hello_world

然后鍵入:file hello_wrold來查看二進制文件的目標體系結構,它應該是這樣的:

hello_wrold: ELF 32-bit LSB executable, ARM, version 1 (SYSV)

現在,如果你想編譯一個生產內核,你需要對它進行優化(我建議使用busybox ),如果你現在只需要一個用於測試,請嘗試以下步驟:

  1. 創建一個腳本來設置鏈工具set_toolchain.sh:

    #! /usr/bin/sh

    PATH=$PATH:$HOME/EMBEDDED_TOOLS/ELDK/ELDK42/usr/bin

    ARCH=arm

    CROSS_COMPILE=arm-linux-gnueabi-

    export PATH ARCH CROSS_COMPILE

並運行您的腳本( source ./set_toolchain.sh

  1. 下載一個linux內核並解壓縮它(讓我們假設2.6.x,它是一個舊內核,但它有很多機會在沒有編譯錯誤的情況下工作)。

在解壓縮的內核中:

cd ~/linux-2.6.29/arch/arm/configs
make versatile_defconfig

這里我們使用多功能芯片,您可能需要使用make menuconfig來修改選項OABI並將其設置為ARM EABI ,此選項位於Kernel features menu

完成所有這些步驟后,您可以編譯內核:

make

如果你想要詳細編譯make v=1

在此之后,你的內核在arch/arm/boot/zImage

希望這有幫助。

問候。

我建議通過激活配置文件的Kernel hacking部分中的選項來構建內核。 然后你可以使用更容易使用的kdbkgdb ,但需要另一台運行gdb機器。

`

您還可以連接Qemu和GDB。 Qemu具有運行GDB服務器的-s和-S選項,允許您通過TCP連接到localhost:1234。 然后,您可以在GDB中加載內核映像(解壓縮的映像),並查看內核啟動的程度。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM