实践 uboot kernel编译下载

在学习Linux中犯了一个大禁忌,就是没动手,前期一直拖后期一点都不想动,光顾看课程越来越懵,幡然醒悟动手编译uboot和kernel不断找问题百度解决问题,总结下uboot和kernel过程的一些关键步骤吧,一个是uboot先进行配置,对于mini2440来说要先进行make mini2440_config命令进行相关的参数配置,具体怎么执行了可以在uboot主目录下的Makefile文件下搜索mini2440_config,具体要看厂商维护的Makefile文件,这里截图我找到的mini2440下的主Makefile文件下的一些参数配置信息。
在这里插入图片描述可以看到在执行了make mini2440_config后大概就是配置了芯片的相关架构等信息,而不需要在make编译时通过ARCH=arm 等方式来制定,然后就可以通过执行make -j16来进行uboot的编译了,
对于kernel的编译其实差不多,在kernel文件下的主Makefile文件搜索也能找到相关信息,通过make menuconfig可以通过图形化的方式来对内核的模块进行添加裁剪,编译成模块等配置,在通过make zImage -j16的方式来进行内核的编译,(题外话:不得不说5800x16线程让编译不到1分钟完成了编译,太舒服了),编译完成后在kernel文件下的arch/arm/boot/目录下即可找到编译生成的zImage内核镜像文件。
通过nfs方式下载内核到开发板上运行(虽然没配置好,而且没rootfs导致最终启动失败),这里要配置的有开发板上ip的配置,需要和Ubuntu的ip在同一个网段,以及网关,子网掩码等,首先就是要开发板能ping通我们虚拟机上的Ubuntu,把虚拟机的网络设置为桥接方式,最好在这之前把需要的nfs服务下载安转好,因为后面桥接方式Ubuntu无法上网,把虚拟网络编辑器的桥接设置到主机的网口上,因为后面要通过网线将开发板和主机连接下载内核,ping通后就可以下载了,前提是nfs服务要配置好,除了安装nfs服务外,需要修改两个文件夹
第一个文件夹:nfs服务文件夹,后期把内核镜像文件放在这,具体的文件是/etc/exports
在这里插入图片描述相关添加nfs文件夹的路径,至于后面的参数自行百度
第二设置开发板的ip和nfs文件夹路径(这步没对现象是下载内核到一半就报错:啥error来着):sudo vi /etc/hosts
在这里插入图片描述
nfs服务配置还有很多坑,遇到问题自行百度,这也是一种学习方法
最后通过
nfs 30008000 $serverip:/home/hawen/zyp_linux/nfs/zImage
下载内核bootm 30008000
启动!
在这里插入图片描述后面内核还是挂了,但是已经执行到这一步了,算是阶段性胜利吧。

### qemu运行uboot 可以利用qemu运行交叉编译uboot程序。运行命令示例如下: ```bash qemu-system-aarch64 \ -M virt \ -cpu cortex-a72 \ -smp 2 \ -m 2048M \ -kernel u-boot \ -nographic ``` 这里使用`qemu-system-aarch64`指定了QEMU用于模拟64位ARM架构的可执行文件,`-M virt`指定了模拟的机器类型为`virt`,`-cpu cortex-a72`指定了模拟的CPU类型,`-smp 2`表示模拟2个CPU核心,`-m 2048M`表示分配2048MB内存,`-kernel u-boot`指定了要加载的内核文件为`u-boot`,`-nographic`表示以非图形化模式运行 [^1][^2]。 ### qemu使用uboot加载kernel 使用qemu结合uboot加载kernel时,以vexpress-a9开发板为例,最终的qemu加载运行脚本如下: ```bash #!/bin/sh # 测试u-boot # 上级路径 top_path="/home/thinks2/ProgramProject/qemu_study/" src_path="tftpboot/u-boot" # 内核文件路径 kernel_path=${top_path}${src_path} qemu-system-arm \ -M vexpress-a9 \ -m 512M \ -kernel ${kernel_path} \ -nic tap,ifname=tap0 \ -append "root=/dev/mmcblk0 rw console=ttyAMA0" \ -sd rootfs.ext3 \ -nographic ``` 该脚本中,`-M vexpress-a9`指定模拟的开发板为`vexpress-a9`,`-m 512M`分配512MB内存,`-kernel ${kernel_path}`指定要加载的内核文件路径,`-nic tap,ifname=tap0`配置网络接口,`-append`参数传递内核启动参数,`-sd rootfs.ext3`指定根文件系统,`-nographic`以非图形化模式运行 [^5]。 ### qemu + gdb调试ubootkernel 有关于使用qemu + gdb调试ubootkernel的内容,但文档中未详细给出调试命令 [^3]。 ### qemu模拟开发板选择 由于qemu模拟vexpress资料最多,所以常使用vexpress-ca9开发板进行模拟,为了方便研究ubootkernel,可使用版本为uboot-2013.10和linux-2.6.39的相关程序 [^4]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值