瑞芯微Rockchip开发者社区
直播中

张龙祥

8年用户 1260经验值
擅长:连接器
私信 关注
[经验]

介绍一下Linux内核编译和更新的操作流程

  一、简介
  Firefly提供的ubuntu固件中存在不少的bug,比如说设置系统时间之后,图像界面会出现严重的bug,所有的窗口都无法拖动和关闭,只能重新启动,这样就无法执行更新系统时间的操作。由于官方没有提高最新Linux内核版本的烧写固件,为了解决一些比较严重的bug,需要自行编译Linux内核进行更新,接下来就介绍一下Linux内核编译和更新的操作流程。
  二、编译环境搭建
  本次Linux内核编译的主机系统是Ubuntu16.04。在进入内核编译之前,首先需要在主机系统上安装一些依赖包,否则编译过程中会出现一系列问题。使用以下命令安装依赖的包:
  sudo apt-get install build-essential lzop libncurses5-dev libssl-dev libc6:i386
  其中,如果使用的是64位的Ubuntu,必须安装libc6:i386
  接下来就可以下载firefly-rk3399的Linux内核和GCC交叉编译工具链了。可以在Ubuntu系统下使用Git工具克隆,但是速度可能会比较慢,最好是直接从Github上下载压缩文件后再在Ubuntu系统中解压,其中linux-kernel-firefly是Linux内核源码,prebuilts是交叉编译工具链。
  从Linux源代码中的顶层Makefile文件中可以发现,编译内核时,会使用内核源代码同一级目录中的prebuilts目录中的交叉工具编译链,所以需要确保交叉工具编译链的目录结构和名称符合该要求。
  三、Linux内核编译
  在内核源码的目录下,执行make ARCH=arm64 firefly_linux_defconfig命令,使用firefly-rk3399的默认配置。
  配置好内核之后,执行make ARCH=arm64 rk3399-firefly-linux.img -j4命令开始编译内核。
  内核编译时间视电脑配置而定,内核源代码已经成功完成编译。
  内核编译完成后会在内核源码目录下生成kernel.img和resource.img文件,这是我们更新内核所需要的镜像文件。
  四、Linux内核烧录
  将编译内核后生成的kernel.img和resource.img拷贝到一个目录下,打开瑞芯微的烧写工具,仅仅勾上名字为kernel和resource的勾,并且将得到的kernel.img和resource.img选中到该烧写工具中,最后点击执行开始更新内核。
  五、总结
  系统重新启动后,可以使用uname -a命令查看下内核信息,和内核更新前进行对比,发现,内核版本从4.4.52更新到了4.4.55,还能看到内核的具体编译时间。经过测试,发现设置时间引发图形界面卡死的问题得到了解决。
原作者:F_Developer_X

更多回帖

发帖
×
20
完善资料,
赚取积分