虚拟机中利用qemu调试跟踪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

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值