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。

vmware虚拟机利用qeme调试linux内核

2. 虚拟机安装ubuntu18.04后不能上网问题

    虚拟机中使用上面的版本

vmware虚拟机利用qeme调试linux内核

还原一下就好了

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版本

vmware虚拟机利用qeme调试linux内核

查看Qemu支持的开发板

Qemu工具支持大量开发板的虚拟,现存的大部分常用开发板都能很好地支持。通过下面的命令操作可以看到当前版本的Qemu工具支持的开发板列表:

vmware虚拟机利用qeme调试linux内核.

4. 安装编译工具链

安装错误的解决方法:

[email protected]:/var/cache/apt/archives# sudo apt-get install gdb-arm-none-eabi

vmware虚拟机利用qeme调试linux内核

5. 编译内核

在Makefile中配置默认值,指定ARCH和CROSS_COMPILE,免得每次编译都需要带参数;

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

[email protected]:/home/alpha/share/linux-4.4.157# make vexpress_defconfig ARCH=arm O=./object

vmware虚拟机利用qeme调试linux内核

遇到的问题:

vmware虚拟机利用qeme调试linux内核

[email protected]:/home/alpha/share/linux-4.4.157# apt-get install libncurses5-dev libncursesw5-dev

vmware虚拟机利用qeme调试linux内核

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

[email protected]:/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目录;

启动脚本:

vmware虚拟机利用qeme调试linux内核

运行脚本后即可启动:./boot.sh

vmware虚拟机利用qeme调试linux内核

内核成功启动,内核的启动打印信息非常多。启动最后出错是因为没有挂载根文件系统。

6. 先安装busybox

6.1 生成配置文件

[email protected]:/home/alpha/share/busybox-1.31.1# make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- menuconfig

编译选择使用glibc动态库,因为静态库可能会出现一些未知的问题,取消掉

vmware虚拟机利用qeme调试linux内核

默认的安装目录是./_install,如果需要指定安装目录,可以在下边修改:

vmware虚拟机利用qeme调试linux内核

6.2 编译busybox

[email protected]:/home/alpha/share/busybox-1.31.1# make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi-

vmware虚拟机利用qeme调试linux内核

6.3 安装

修改顶层makfile

vmware虚拟机利用qeme调试linux内核

提示下边信息,表示安装成功:

vmware虚拟机利用qeme调试linux内核

或者直接使用CONFIG_PREFIX指定安装目录:

vmware虚拟机利用qeme调试linux内核

安装完成之后,生成的目标文件默认在./_install目录,这个目标文件目录就是下边要制作根文件系统需要用到的工具:

vmware虚拟机利用qeme调试linux内核

6.4 生成简易根文件系统

vmware虚拟机利用qeme调试linux内核

将编译器的库文件和_install 文件拷贝到此根文件系统内

6.5 制作SD卡文件系统镜像

1) 生成一个空的SD卡镜像:

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

vmware虚拟机利用qeme调试linux内核

2) 将SD卡格式化为exts文件系统:

# mkfs.ext3 rootfs.ext3

vmware虚拟机利用qeme调试linux内核

3) 将rootfs烧写到SD卡:

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

# sudo cp -rf rootfs/* /mnt/

# sudo umount /mnt

vmware虚拟机利用qeme调试linux内核

6.6启动脚本

vmware虚拟机利用qeme调试linux内核

6.7验证结果:

vmware虚拟机利用qeme调试linux内核

7.调试内核

安装调试工具

vmware虚拟机利用qeme调试linux内核

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

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

(gdb) target remote localhost:1234

(gdb) b start_kernel

(gdb) c

vmware虚拟机利用qeme调试linux内核