109.firefly-extboot的生成脚本

news2024/11/24 12:09:22

内核版本: 4.4.194 

在firefly的sdk 2.5.1c及以后的版本都是extboot.img(对应表中的extboot)

但是之前的并不是,而且一个boot.img,(对应表中rkboot)

rkboot的生成方法可以参考解决linux5.15编译时不生成boot.img 的问题-CSDN博客

对于sdk 2.5.1c及以后的版本,sdk直接提供命令,build.sh extboot 即可完成。

对于sdk 2.5.1c以前的sdk如何处理呢?我在这个脚本中截取extboot的生成部分,自己建立一个sh文件,放在kernel目录中。

前提也是内核自己编译成功的情况下哈!!!

注意:

1.修改自己的dts文件名称!!!!!

2.还有需要一个ramdisk.img

#! /bin/bash
	

RK_ARCH=arm64
RK_KERNEL_DTS=rk3399-sapphire-excavator-linux-gz
RK_KERNEL_IMG=arch/arm64/boot/Image


if [[ ! -f $RK_KERNEL_IMG ]]; then
    echo "请先编译好内核!!"                         
    exit 1    
fi

if [[ ! -f arch/${RK_ARCH}/boot/dts/rockchip/${RK_KERNEL_DTS}.dtb ]]; then
    echo "${RK_KERNEL_DTS}.dtb文件不存在,请注意修改该脚本后重新运行!!"                         
    exit 1    
fi



echo "============Start building kernel============"
echo "TARGET_ARCH          =$RK_ARCH"
echo "TARGET_KERNEL_CONFIG =$RK_KERNEL_DEFCONFIG"
echo "TARGET_KERNEL_DTS    =$RK_KERNEL_DTS"
echo "TARGET_KERNEL_CONFIG_FRAGMENT =$RK_KERNEL_DEFCONFIG_FRAGMENT"
echo "=========================================="
pwd


#make ARCH=$RK_ARCH $RK_KERNEL_DEFCONFIG $RK_KERNEL_DEFCONFIG_FRAGMENT     #对内核进行配置
#make ARCH=$RK_ARCH $RK_KERNEL_DTS.img -j$RK_JOBS                                                  #对内核进行编译

echo -e "\e[36m Generate extLinuxBoot image start\e[0m"

EXTBOOT_IMG=extboot.img
EXTBOOT_DIR=extboot
rm -rf ${EXTBOOT_DIR} && mkdir -p ./${EXTBOOT_DIR}/extlinux                     #删除原来的exboot目录,再新建一个,相当于清空文件夹

KERNEL_VERSION=$(cat include/config/kernel.release)
echo "label rk-kernel.dtb linux-$KERNEL_VERSION" > $EXTBOOT_DIR/extlinux/extlinux.conf        #写入extlinux.conf,第一次创建

cp $RK_KERNEL_IMG $EXTBOOT_DIR/Image-$KERNEL_VERSION
echo -e "\tkernel /Image-$KERNEL_VERSION" >> $EXTBOOT_DIR/extlinux/extlinux.conf               #写入extlinux.conf,第二次及之后都是追加


cp arch/${RK_ARCH}/boot/dts/rockchip/${RK_KERNEL_DTS}.dtb $EXTBOOT_DIR     #把dtb文件拷贝过去

ln -sf ${RK_KERNEL_DTS}.dtb $EXTBOOT_DIR/rk-kernel.dtb                                                                                    #dtb文件做一个软链接

echo -e "\tfdt /rk-kernel.dtb" >> $EXTBOOT_DIR/extlinux/extlinux.conf                              #写入extlinux.conf,追加

if [[ -e ramdisk.img ]]; then
    cp ramdisk.img $EXTBOOT_DIR/initrd-$KERNEL_VERSION                          #如果存在ramdisk,则拷贝
    echo -e "\tinitrd /initrd-$KERNEL_VERSION" >> $EXTBOOT_DIR/extlinux/extlinux.conf            #写入extlinux.conf,追加
fi

cp .config $EXTBOOT_DIR/config-$KERNEL_VERSION                                #拷贝配置文件
cp System.map $EXTBOOT_DIR/System.map-$KERNEL_VERSION
cp *.bmp $EXTBOOT_DIR/ || true

make ARCH=$RK_ARCH INSTALL_MOD_STRIP=1 INSTALL_MOD_PATH=$EXTBOOT_DIR modules_install                   #把驱动ko安装到extboot目录中

if [ -n "$FF_EXTBOOT_SIZE" ];then
	EXTBOOT_IMG_SIZE=$FF_EXTBOOT_SIZE
else
	EXTBOOT_IMG_SIZE=128M                                       #extboot 文件大小 128M
fi

rm -rf $EXTBOOT_IMG && truncate -s $EXTBOOT_IMG_SIZE $EXTBOOT_IMG                  #删除原来的extboot.img 并新建一个大小为128M的extboot.img文件
fakeroot mkfs.ext4 -Fq -L "boot" -d $EXTBOOT_DIR $EXTBOOT_IMG     #在内核目录下格式化extboot.img,并拷贝extboot目录到extboot.img中


echo -e "\e[36m Generate extLinuxBoot image done\e[0m"





只要内核编译过,dtb文件也是正确的,自动生成是没啥问题啦。

有问题留言吧。

这些只是一个使用方法,方便自己灵活去组合想要的文件。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1230015.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

二、什么是寄存器

目录 一、STM32芯片架构简图及系统框图 1.1 STM32芯片架构简图 1.1.1 FLASH是什么,用来做什么 1.1.2 SRAM是什么,用来做什么 1.1.3 片上外设是什么,用来做什么 1.2 系统框图 1.2.1 驱动单元 1.2.2 被动单元 二、什么是寄存器 2.1 存…

Cannot find proj.db

原因 编译GDAL完成后,我打了个包(包括.so)移动到了另外同环境的机器上。 应用gdal ogr2ogr时候提示找不到proj.db 解决办法: 把proj的share拷贝到另外环境上。 #gdal新建othershare,proj的share复制过去 mkdir -p /usr/local/gdal-3.6.2…

通达信的ebk文件

我们在通达信软件中 调出 “自定义板块设置” 这个菜单,点击“导出”,会提示你存储 “自选股.EBK”,其实就是对自定义板块里的目录进行备份的一种方式, 当我们打开 这个文件,你会发现其实就是存储了 股票代码&#xff…

python 自动化福音,30行代码手撸ddt模块

用 python 做过自动化的小伙伴,大多数都应该使用过 ddt 这个模块,不可否认 ddt 这个模块确实挺好用,可以自动根据用例数据,来生成测试用例,能够很方便的将测试数据和测试用例执行的逻辑进行分离。 接下来就带大家一起…

微服务:何为RPC框架

前言 最近在看有关分布式和微服务的知识,首先第一个碰到的就是RPC框架,常见的RPC框架其实有很多,比较常见的比如:阿里的Dubbo、ApacheThrift、谷歌的gRPC、腾讯的tRPC等等。RPC作为远程调用协议在微服务架构中可以说是比较常见了&…

基于GATK流程化进行SNP calling

在进行变异检测时,以群体基因组重测序数据为例,涉及到的个体基本都是上百个,而其中大多数流程均是重复的步骤。 本文将基于GATK进行SNP calling的流程写入循环,便于批量分析。 1 涉及变量 1.工作目录work_dir/ 2.参考基因组ref…

每天一点python——day74

#每天一点Python——74 #函数调用的参数传递:位置与关键字函数参数传递指的是函数调用时候的传递 一般有两种: 位置实参传递 关键字实参传递#位置实参传递 #我们昨天定义了一个函数 def jiafa(a,b):#我们定义了两个参数,a和b,他们…

用公式告诉你 现货黄金投资者要不要换策略?

看过笔者相关文章的朋友都知道,其实笔者是相当不鼓励投资者更改策略的。但这并不意味着,策略不能改或者换。之所以反对更改策略,是因为很多人对自己的策略还没上手,没了解清楚就急着换策略,这是没必要的。通过下面这个…

1688商品详情原数据(2023年11月最新版)

返回数据&#xff1a; 请求链接 {"item": {"desc_wdescContent": {"itemProperties": [],"offerId": "705844836943","wdescContent": {"content": "<div id\"offer-template-0\"&g…

【实用干货】如何用LightningChart创建WPF 2D热图?(一)

LightningChart.NET完全由GPU加速&#xff0c;并且性能经过优化&#xff0c;可用于实时显示海量数据-超过10亿个数据点。 LightningChart包括广泛的2D&#xff0c;高级3D&#xff0c;Polar&#xff0c;Smith&#xff0c;3D饼/甜甜圈&#xff0c;地理地图和GIS图表以及适用于科学…

如何看待阿里云发布的全球首个容器计算服务 ACS?

如何看待阿里云发布的全球首个容器计算服务 ACS&#xff1f; 本文目录&#xff1a; 前言 一、什么是ACS 二、ACS 的核心特性 三、ACS 的关键技术 四、本期话题讨论 4.1、你如何看待容器计算服务 ACS 的发布&#xff1f; 4.2、你认为 ACS 的产品设计能降低企业使用 K8s的…

Springboot+vue的机动车号牌管理系统(有报告)。Javaee项目,springboot vue前后端分离项目

演示视频: Springbootvue的机动车号牌管理系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot vue前后端分离项目 项目介绍&#xff1a; 本文设计了一个基于Springbootvue的前后端分离的机动车号牌管理系统&#xff0c;采用M&#xff08;model&#xff09…

【如何让你的建筑设计更高效】推荐7个3DMAX建筑设计的实用插件

3DMAX是创建具有复杂对象和照片级真实感材质的大型三维项目的绝佳工具。它有用于粒子模拟和参数化建模的内置工具&#xff0c;只要有足够的时间和练习&#xff0c;你就可以创建任何东西。然而&#xff0c;总有改进的余地。许多第三方开发人员已经发布了自己的扩展&#xff0c;也…

ChatGPT API 学习

参考&#xff1a;从零开始的 ChatGPT API 使用指南&#xff0c;只需三步&#xff01; - 知乎 (zhihu.com) ChatGPT API 是一种由 OpenAI 提供的 API&#xff0c;它可以用最简单的方式把 ChatGPT 的聊天能力接入到各种应用程序或服务中。 自然语言语音识别(Natural Language S…

Selenium IDE录制脚本

文章目录 1.环境搭建1.1 Chrome浏览器安装1.2 Chrome驱动安装1.3 Selenium IDE插件的安装 2.Selenium IDE插件介绍2.1 初始化界面2.2 菜单栏2.3 工具栏2.4 地址栏2.5 测试用例窗口2.6 测试脚本窗口2.7 日志和引用窗口 3.元素定位3.1 通过id进行元素定位3.2 通过name进行元素定位…

springboot上传文件后显示权限不足

前言&#xff1a; 最近一个老项目迁移&#xff0c;原本一直好好的&#xff0c;迁移后上传文件的功能使用不正常&#xff0c;显示文件没有可读取权限&#xff0c;这个项目并不是我们开发和配置的&#xff0c;由第三方开发的&#xff0c;我们只是接手一下。 前端通过api上传文件…

Unity中 Start和Awake的区别

Awake和Start在Unity中都是MonoBehaviour脚本中的生命周期函数 Awake函数在游戏对象首次被加载时调用&#xff0c;在游戏对象初始化之前调用。 start函数在游戏对象初始化完成后调用&#xff0c;在update第一次执行前调用。 这两个函数在其生命周期内都只会调用一次&#xf…

el-tree结合el-switch实现状态切换

<template><div><el-col :span"24"><el-card class"tree-card"><div class"sketch_content selectFile"><span class"span_title">组织列表 </span><div style"display: flex; jus…

windows通过命令给文件夹或文件增加权限

给Demo001追加everyone权限 D:\cmd>cacls Demo001 /p everyone:f /e 处理的目录: D:\cmd\Demo001D:\cmd> 给Demo001下的所有文件追加everyone权限 D:\cmd>cacls Demo001 /p everyone:f /e /t 处理的目录: D:\cmd\Demo001 处理的目录: D:\cmd\Demo001\A 处理的文件:…

Linux基础知识——(2)vim编辑器

目录 1 vi和vim简介2 vim三种模式3 vim命令模式3.1 光标移动3.2 复制操作3.3 剪切/删除3.4 撤销/恢复3.5 光标的快速移动 4 模式间的切换5 命令行模式5 编辑模式6 其他6.1 vim的配置文件6.2 异常退出6.3 退出方式“:x”6.4 vi编辑模式下Backspace无法退格删除6.5 修改只读【rea…