一起撸linux内核29-编译内核并使用qemu运行起来

关注囧囧妹微信公众号了解更多内容。

一、开篇

最近在看qemu,所以尝试使用qemu来运行一个内核。

关于介绍就不多说了,可以直接网上搜索,这里记录下运行起来的过程。

二、编译内核

使用指令apt install gcc-arm-linux-gnueabi来安装交叉编译工具

apt install gcc-arm-linux-gnueabi

gcc-arm-linux-gnueabi和gcc-arm-linux-gnueabihf的区别:gcc-arm-linux-gnueabi是针对软浮点运算,gcc-arm-linux-gnueabihf针对硬浮点运算。

使用指令wget https://mirrors.tuna.tsinghua.edu.cn/kernel/v5.x/linux-5.10.99.tar.xz来下载内核,这里使用的国内镜像,速度快。

下载完成后通过tar -xvf linux-5.10.99.tar.xz来解压出内核。

进入内核目录,修改内核根目录Makefile如下:

在编译前我们先安装一些软件:

sudo apt-get install flex bison libncurses-devsudo apt-get install u-boot-tools

配置编译:

make vexpress_defconfigmake menuconfig

我这里用的默认的配置,感兴趣的可以在make menuconfig执行后来对内核进行裁剪。

配置完成后就可以编译了。​​​​​​​

make zImage -j2make modules -j2make dtbs -j2

然后指定内核的加载地址:

make LOADADDR=0x60003000 uImage -j2

这里我遇到了问题,需要通过sudo apt install u-boot-tools来安装uboot-tools。

然后把内核和设备树拷贝到一个目录里:​​​​​​​

cp arch/arm/boot/zImage ../../../tftpboot/  cp arch/arm/boot/uImage ../../../tftpboot/ cp arch/arm/boot/dts/vexpress-v2p-ca9.dtb ../../../tftpboot/

在同一个目录下,创建一个qemu的启动脚本start.sh:​​​​​​​​​​​​

qemu-system-arm        -M vexpress-a9 \
        -m 512M \
        -kernel zImage \
        -dtb vexpress-v2p-ca9.dtb \
        -nographic \
        -append "console=ttyAMA0"

通过source start.sh启动qemu:

上面就把一个内核引导启动起来了,但是在启动最后我们发现有个错误如下图,根据最后的kernel panic提示可以知道因为我们没有挂载文件系统导致的错误。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

影帝sunny

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值