OpenWrt增加package软件包

前言:

        目前手上有一款产品需要做部分维护工作,它是基于OpenWrt开发的,也就是Linux,只不过原来的维护工作主要是C逻辑层,本次任务需要重新开辟一个package来独立执行整个任务逻辑,避免嵌套在其他进程中,故以下是自己的学习及预研记录。


(1)、理论基础

Linux启动过程:
        ①内核引导。
                当计算机打开电源后,首先是BIOS开机自检,按照BIOS中设置的启动设备(通常是硬盘)来启动。操作系统接管硬件以后,首先读入 /boot 目录下的内核文件。

        ②运行init。
                内核文件加载以后,就开始运行第一个程序 /sbin/init,它的作用是初始化系统环境。init 程序首先是需要读取配置文件 /etc/inittab。由于init是第一个运行的程序,它的进程编 (pid)就是1。其他所有进程都从它衍生,都是它的子进程。

        ③系统初始化。
                在init的配置文件中有这么一行: si::sysinit:/etc/rc.d/rc.sysinit 它调用执行了/etc/rc.d/rc.sysinit,而rc.sysinit是一个bash shell的脚本,它主要是完成一些系统初始化的工作,rc.sysinit是每一个运行级别都要首先运行的重要脚本。  它主要完成的工作有:激活交换分区,检查磁盘,加载硬件模块以及其它一些需要优先执行任务。

 

        ④建立终端
                rc执行完毕后,返回init。这时基本系统环境已经设置好了,各种守护进程也已经启动了。  

        ⑤用户登录系统
                开机启动程序加载完毕以后,就要让用户登录了。

                一般有三种登录方式:
                        1)、命令行登录
                        2)、ssh登录
                        3)、图形界面登录

 

OpenWrt的启动流程主要:
        1.Bootloader->
        2.linux->
        3./etc/preinit->
        4./sbin/init->
        5./etc/inittab ->
        6./etc/init.d/rcS->
        7./etc/rc.d/S*

基于OpenWrt的应用程序的开发:
(增加package、修改Makefile、编译、运行)

增加package的开发步骤:
        ①进入 openwrt/package/目录下
        ②创建三个文件

1)src:存放源代码,并且包含指定交叉编译环境的Makefile
2)Makefile:这个文件是用来让openwrt查找、添加、编译这个目        录的
3)File:(可选)通常存放配置文件


(2)、实际应用

基本步骤:
①、在package目录下创建一个目录
②、在刚才的目录文件夹下建立src文件夹,用来存放源码
③、在src中添加源文件
④、在src目录下添加Makefile文件


(3)、主要问题

问题1:
在添加完package文件后,发现单个文件编译 错,错误如下:
首先根据错误提示“recipe for target xxx”和“没有匹配的文件路径”。

解决办法:
回看自己的添加的文件夹,发现,文件夹的名字和里面的.c文件名字不同,但是Makefile中写的路径却写成了.c文件的名字,更改相同的名字重新编译显示如下:(没有错误)

 

随后对整个工程文件进行编译,并烧录到LG220中进行启动测试。结果并没有显示线程启动,查看编译提示,发现有一个单独的提示信息:
WARNING: skipping learn_text — package not selected 这里我们需要    运行make menuconfig 在我们自己在Makefile中设置的目录下,找到

 

随后再重新进行编译,依然还有错误,错误提示如下图所示:

 

重新核对编译文件,当看到启动顺序的设置时,发现设置冲突,由原来的118更改为116之后便可正常运行。运行结果如下图所示:


 

至此,本次Makefile文件及package包的添加更改学习过程结束。

文章知识点与官方知识档案匹配,可进一步学习相关知识云原生入门技能树首页概览8755 人正在系统学习中

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年1月25日
下一篇 2022年1月25日

相关推荐