005 单独获取树莓派linux内核编译并在zero w 上运行

前言

主机环境 Ubuntu20.04
设备 树莓派zero w
基于buildroot编译出来的根文件系统
参考文档https://www.raspberrypi.com/documentation/computers/linux_kernel.html#choosing_sources

目标

搭建一个纯裸的linux内核编译环境(不带根文件系统与u-boot)
经过前面的buildroot的编译,我们已经能够实现基于buildroot的内核根文件系统与第三方软件的一整套编译与运行,那么现在要做的linux内核单独编译,就有点多此一举了。其实主要原因是,buildroot不够灵活,如果我们只想操作除了根文件系统构建以外的内容呢?这时候在使用buildroot来编译就很麻烦了,编译时间久,而且首次编译还需要联网,总之有很多理由使我们只想构建一个linux内核开发环境,而并不想构建根文件系统。

获取linux内核源码

我们获取树莓派的linux类核源码时,通过GitHub获取,具体获取的分支由 -b rpi-5.10.y这个参数决定,如果不知道自己要获取哪一个分支可以,在当前已运行的树莓派中查看通过以下命令

uname -a

可以用查出来的版本信息前两组确定,最后一组表示的只是小改动,可以不关心
在这里插入图片描述
获取Linux内核

git clone --depth=1 -b rpi-5.10.y https://github.com/raspberrypi/linux.git

获取到内核以后可以进入Linux内核查看如下
在这里插入图片描述

编译Linux内核源码

接下来我们可以编写一个脚本完成每次编译都固定需要做的一些事情
在Linux目录下创建并打开一个脚本

gedit build.sh

在脚本中填写以下内容

#!/bin/bash
#表明我们使用的架构(ARCH)是arm    编译器(CROSS_COMPILE)是arm-linux- 使用的配置脚本是bcmrpi_defconfig
ERNEL=kerne
make ARCH=arm CROSS_COMPILE=arm-linux- bcmrpi_defconfig
make ARCH=arm CROSS_COMPILE=arm-linux- -j8 zImage modules dtbs


其中编译器需要我们提前准备好,还记得我们之前编译的buildroot吧。如果你使用过它,并且没有指定自己的编译器那么在这个目录就会生成一个编译工具链

buildroot/output/host/bin

进入到你的这个路径使用pwd命令查看并复制这个路径
在你的用户目录打开.bashrc,将它添加到你的环境变量
使用以下命令

sudo vi .bashrc 

在末尾添加
注意buildroot前面的路径请写你自己的

export PATH=$PATH:/home/growup/linux/buildroot/output/host/bin

在这里插入图片描述

之后保存,同步

source .bashrc 

好了现在回到linux目录将之前写的build.sh保存并赋予权限

sudo chmod 777 build.sh 

在运行脚本之前首先运行以下命令,确保你该安装的都已经安装了,不然可能报一些莫名其妙的错误

sudo apt install git bc bison flex libssl-dev make libc6-dev libncurses5-dev

运行脚本

./build.sh

编译完成后得到vmlinux,有这个基本也就表示编译成功了
在这里插入图片描述

将内核镜像添加到树莓派

首先挂载sd卡到主机,当然我这里是主机上的虚拟机
这个mnt目录随便创建在哪里,只要方便你拷贝我就创建在linux目录
使用lsblk命令可以查看挂在的sd卡在那个位置
在这里插入图片描述

mkdir mnt
mkdir mnt/fat32
mkdir mnt/ext4
sudo mount /dev/sdb1 mnt/fat32
sudo mount /dev/sdb2 mnt/ext4

安装驱动模块到sd卡

sudo env PATH=$PATH make ARCH=arm CROSS_COMPILE=arm-linux- INSTALL_MOD_PATH=mnt/ext4 modules_install

将设备树和镜像拷贝到sd卡

sudo cp mnt/fat32/$KERNEL.img mnt/fat32/$KERNEL-backup.img
sudo cp arch/arm/boot/zImage mnt/fat32/$KERNEL.img
sudo cp arch/arm/boot/dts/*.dtb mnt/fat32/
sudo cp arch/arm/boot/dts/overlays/*.dtb* mnt/fat32/overlays/
sudo cp arch/arm/boot/dts/overlays/README mnt/fat32/overlays/
sudo umount mnt/fat32
sudo umount mnt/ext4

现在就可以将sd卡插入树莓派运行了

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值