vmware虛擬機利用qeme調試linux內核

1. samba配置 – 安裝編譯器

sudo apt-get update  更新源

sudo apt-get upgrade 更新已安裝的包

apt-get install build-essential   安裝編譯器

#阿里

deb http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse

sudo apt-get update  更新源

sudo apt-get upgrade 更新已安裝的包

apt-get install build-essential

sudo apt-get update  更新源

sudo apt-get upgrade 更新已安裝的包

sudo apt-get dist-upgrade 升級系統

update 是更新 /etc/apt/sources.list 和 /etc/apt/sources.list.d 中列出的源的地址,這樣才能獲取到最新的軟件包

upgrade 是升級已安裝的所有軟件包,升級之後的版本就是本地地址裏的,因此,在執行 upgrade 之前一定要執行 update, 這樣才能更新到最新的

系統更新源指的是你的更新的源頭,無論你使用APT工具還是dpkg、rpm等,他們都有一個文件,裏面存放了可以下載到軟件的“更新源”,就是那些軟件的下載網址。這個文件是/etc/apt/sources.list。

2. 虛擬機安裝ubuntu18.04後不能上網問題

    虛擬機中使用上面的版本

還原一下就好了

3. 安裝qmenu

3.1下載Qemu源碼編譯安裝

在這裏選擇qemu-4.2.0.tar.xz使用;

3.2安裝依賴

在配置qemu之前,需要安裝一些依賴的庫或者軟件包:

# sudo apt-get install zlib1g-dev

# sudo apt-get install libglib2.0-0

# sudo apt-get install libglib2.0-dev

# sudo apt-get install libtool

# sudo apt-get install libsdl1.2-dev

# sudo apt-get install autoconf

解壓源代碼:

# tar -xvf qemu-4.2.0.tar.xz

爲了防止編譯後文件比較亂,選擇創建build目錄作爲編譯中間目標路徑:

# cd qemu-4.2.0/

# mkdir build

# cd build/

配置、編譯並安裝Qemu:

# ../configure --target-list=arm-softmmu --audio-drv-list=

# make

# make install

3.3在編譯過程中可能出現的問題

# ../configure --target-list=arm-softmmu --audio-drv-list=

ERROR: pkg-config binary 'pkg-config' not found

缺少庫文件,按照上一步中的步驟安裝庫文件;

# ../configure --target-list=arm-softmmu --audio-drv-list=

ERROR: pixman >= 0.21.8 not present.

       Please install the pixman devel package.

可以通過apt-cache查詢缺少的依賴庫:

# apt-cache search pixman

libpixman-1-0 - pixel-manipulation library for X and cairo

libpixman-1-dev - pixel-manipulation library for X and cairo (development files)

安裝缺少的依賴庫:

# sudo apt-get install libpixman-1-0

# sudo apt-get install libpixman-1-dev

3.4查看Qemu版本

查看Qemu支持的開發板

Qemu工具支持大量開發板的虛擬,現存的大部分常用開發板都能很好地支持。通過下面的命令操作可以看到當前版本的Qemu工具支持的開發板列表:

.

4. 安裝編譯工具鏈

安裝錯誤的解決方法:

root@ubuntu:/var/cache/apt/archives# sudo apt-get install gdb-arm-none-eabi

5. 編譯內核

在Makefile中配置默認值,指定ARCH和CROSS_COMPILE,免得每次編譯都需要帶參數;

5.1生成配置文件 – 默認的配置文件

root@ubuntu:/home/alpha/share/linux-4.4.157# make vexpress_defconfig ARCH=arm O=./object

遇到的問題:

root@ubuntu:/home/alpha/share/linux-4.4.157# apt-get install libncurses5-dev libncursesw5-dev

5.2生成配置文件 – 修改配置文件

root@ubuntu:/home/alpha/share/linux-4.4.157# make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- menuconfig -j4 O=./object 指定輸出路徑

make vexpress_defconfig    //配置文件

# make zImage -j4     //編譯內核鏡像文件

# make modules -j4    // 編譯驅動模塊

# make dtbs     // 編譯設備樹

分別將編譯生成的zImagevexpress-v2p-ca9.dtb文件放到/home/alpha/share/qemu目錄;

啓動腳本:

運行腳本後即可啓動:./boot.sh

內核成功啓動,內核的啓動打印信息非常多。啓動最後出錯是因爲沒有掛載根文件系統。

6. 先安裝busybox

6.1 生成配置文件

root@ubuntu:/home/alpha/share/busybox-1.31.1# make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- menuconfig

編譯選擇使用glibc動態庫,因爲靜態庫可能會出現一些未知的問題,取消掉

默認的安裝目錄是./_install,如果需要指定安裝目錄,可以在下邊修改:

6.2 編譯busybox

root@ubuntu:/home/alpha/share/busybox-1.31.1# make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi-

6.3 安裝

修改頂層makfile

提示下邊信息,表示安裝成功:

或者直接使用CONFIG_PREFIX指定安裝目錄:

安裝完成之後,生成的目標文件默認在./_install目錄,這個目標文件目錄就是下邊要製作根文件系統需要用到的工具:

6.4 生成簡易根文件系統

將編譯器的庫文件和_install 文件拷貝到此根文件系統內

6.5 製作SD卡文件系統鏡像

1) 生成一個空的SD卡鏡像:

# dd if=/dev/zero of=rootfs.ext3 bs=1M count=32

2) 將SD卡格式化爲exts文件系統:

# mkfs.ext3 rootfs.ext3

3) 將rootfs燒寫到SD卡:

# sudo mount -t ext3 rootfs.ext3 /mnt -o loop

# sudo cp -rf rootfs/* /mnt/

# sudo umount /mnt

6.6啓動腳本

6.7驗證結果:

7.調試內核

安裝調試工具

apt-get -o Dpkg::Options::="--force-overwrite" install gdb-arm-none-eabi

在gdb命令行中,輸入如下命令

(gdb) target remote localhost:1234

(gdb) b start_kernel

(gdb) c

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章