实验七 Linux 内核移植

【实验目的】

掌握 Linux 内核配置和编译的基本方法

【实验环境】

  1. ubuntu 14.04 发行版
  2. FS4412 实验平台
  3. 交叉编译工具:arm-none-linux-gnueabi-

【注意事项】

  1. 实验步骤中以“$”开头的命令表示在 ubuntu 环境下执行,以“#”开头的命令表
    示在开发板下执行

【实验步骤】

  1. 在 Linux 官网下载 Linux 内核源码(这里我们下载 linux-3.14.tar.xz)
    https://mirrors.edge.kernel.org/pub/linux/kernel/v3.x/

  2. 拷贝内核源码包到 ubuntu 的家目录下,解压并进入其顶层目录

     $ tar xvf linux-3.14.tar.xz$ cd linux-3.14
    
  3. 源码并不知道我们的处理器架构及交叉编译工具是什么,我们自己在 Makefile 中指定

     $ vi Makefile
    

	ARCH ?= $(SUBARCH)CROSS_COMPILE ?= $(CONFIG_CROSS_COMPILE:"%"=%)

修改为以下内容(注意后边不要有多余空格),然后保存退出

	ARCH ?= armCROSS_COMPILE ?= arm-none-linux-gnueabi- 
  1. 指定使用的处理器

    $ make exynos_defconfig
    

显示如下信息表示配置成功
在这里插入图片描述

  1. 进入内核配置界面

     $ make menuconfig
    

弹出如下图形化配置界面,在该界面下我们可以对 linux 进行进一步的修改和配置方向键可选择不同的选项,‘Enter’键进入子菜单,‘Y’键选中某项功能,‘N’键去除某项功能,‘M’键将该功能编译成内核模块,两次‘Esc’键退出界面,‘?’键为帮助选项,‘/’键为搜索选项
在这里插入图片描述
1:若显示如下信息,是因为 ubuntu 上没有安装对应的图形库
执行如下命令安装对应的图形库,然后重新执行 make menuconfig 即可
在这里插入图片描述

$ sudo apt-get install libncurses5-dev

2:若显示如下信息,是因为终端窗口太小,需将终端最大化后再执行
在这里插入图片描述

  1. 配置内核
    将‘System Type’菜单下的‘S3C UART…’修改为 2(即使用 UART2)

    System Type --->
    (2) S3C UART to use for low-level messages
    

设置完成后通过方向键选择‘Save’保存即可,然后选择‘Exit’退出该配置界面

  1. 编译内核(该过程可能需要二十分钟左右)

     $ make uImage
    

显示如下信息表示编译成功,即在源码的 arch/arm/boot/目录下生成了 uImage 镜像
在这里插入图片描述
注:如图所示,第一次在 ubuntu 上编译 Linux 内核会提示缺少一个 mkimage 命令
在这里插入图片描述
该命令可在 uboot 源码中 u-boot-2013.01/tools/目录下获取(必须是编译后的 uboot)
将该命令拷贝到 ubuntu 的/usr/bin 目录下即可正确编译内核

$ sudo cp u-boot-2013.01/tools/mkimage /usr/bin/

给该命令添加可执行权限

$ sudo chmod 777 /usr/bin/mkimage

完成后回到内核的顶层目录下重新编译内核即可
8. 编译设备树
内核源码中并没有 fs4412 平台的设备树文件,这里我们从源码支持的平台中找一个硬
件与我们最类似的,在其基础上进行修改,这里我们参考的是 samsung 公司的 origen
拷贝 origen 的设备树并将其重命名

$ cp arch/arm/boot/dts/exynos4412-origen.dts arch/arm/boot/dts/exynos4412-fs4412.dts

因为添加的设备树文件也要编译,所以对应的 Makefile 也要修改

$ vi arch/arm/boot/dts/Makefile

exynos4412-origen.dtb \

后添加如下内容,然后保存退出

exynos4412-fs4412.dtb \

回到源码的顶层目录下编译设备树

$ make dtbs

显示如下信息表示编译成功,即在arch/arm/boot/dts/目录下生成了exynos4412-fs4412.dtb
在这里插入图片描述
9. 测试内核和设备树
将编译生成的内核和设备树拷贝到 tftp 的工作目录

$ sudo cp arch/arm/boot/uImage /tftpboot
$ sudo cp arch/arm/boot/dts/exynos4412-fs4412.dtb /tftpboot/
$ sudo chmod 777 /tftpboot/* 

设置 uboot 的启动参数并保存

	# setenv ipaddr ***.***.***.***# setenv serverip xxx.xxx.xxx.xxx# setenv bootcmd tftp 41000000 uImage\;tftp 42000000 exynos4412-fs4412.dtb\;bootm41000000 - 42000000# setenv bootargs root=/dev/nfs nfsroot=xxx.xxx.xxx.xxx:/opt/4412/rootfs/ rwconsole=ttySAC2,115200 init=/linuxrc ip=***.***.***.***# saveenv

1:xxx.xxx.xxx.xxx 为 ubuntu 主机的 ip,..***.***为开发板的 ip,必须和 ubuntu主机的 ip 在同一个网段(根据自己电脑情况进行设置)
2:以上设置手动输入,命令粘贴可能会有中文符号
回到ubuntu重启 tftp 和 nfs 服务器

	$ sudo service tftpd-hpa restart$ sudo service nfs-kernel-server restart

重启开发板查看现象,如图所示,内核在启动到一半时会崩溃卡死,原因在于我们在该
实验中只是对 UART 进行了配置,而其他功能都保持默认选项,内核默认配置中没选
配我们使用的网卡驱动. nfs 等功能,所以在挂载根文件系统时导致内核崩溃,所以后
续我们还需要配置网卡驱动. nfs 等
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PHP 安装Composer,vue前端依赖包

电脑安装Composer 官网下载:https://getcomposer.org/Composer-Setup.exe 后端安装: 检查是否安装依赖: 安装Composer install 或 Composer i 前端安装: yarn install 安装依赖

vr内容编辑软件降低了虚拟现实项目开发门槛

VR虚拟场景编辑器是一种专门用于创建、修改和设计虚拟场景的工具。它利用vr虚拟现实技术,让用户可以在三维空间中直接对场景进行操作和编辑。这种编辑器的出现,使得用户可以更加直观、自由地进行场景设计和制作,为诸多领域带来了新的可能性。…

Linux(基础篇一)

Linux基础篇 Linux基础篇一1. Linux文件系统与目录结构1.1 Linux文件系统1.2 Linux目录结构 2. VI/VIM编辑器2.1 vi/vim是什么2.2 模式间的转换2.3 一般模式2.4 插入模式2.4.1 进入编辑模式2.4.2 退出编辑模式 2.5 命令模式 3. 网络配置3.1 网络连接模式3.2 修改静态ip3.3 配置…

AI夏令营第三期用户新增挑战赛学习笔记

1、数据可视化 1.数据探索和理解:数据可视化可以帮助我们更好地理解数据集的特征、分布和关系。通过可视化数据,我们可以发现数据中的模式、异常值、缺失值等信息,从而更好地了解数据的特点和结构。2.特征工程:数据可视化可以帮助…

WPF基础入门-Class5-WPF命令

WPF基础入门 Class5-WPF命令 1、xaml编写一个button&#xff0c;Command绑定一个命令 <Grid><ButtonWidth"100"Height"40" Command"{Binding ShowCommand}"></Button> </Grid>2、编写一个model.cs namespace WPF_Le…

033 - date 和 time

date类型&#xff1a; 该DATE类型用于具有日期部分但没有时间部分的值。MySQL检索并DATE以 格式显示 值 。支持的范围是 到。 YYYY-MM-DD1000-01-019999-12-31 -- 创建表&#xff0c;字段类型是date&#xff1a; create table test_date01 (a date); -- 正确格式插入数据 in…

OceanMind海睿思签约常州市建筑科学研究院,打造检验检测行业数字化转型标杆

近日&#xff0c;中新赛克海睿思 与 中国知名综合性建筑研究和科技创新型高科技企业——常州市建筑科学研究院集团股份有限公司&#xff08;以下简称“建科股份”&#xff09;达成深度战略合作&#xff0c;为建科股份提供行业领先的数据工程建设服务&#xff0c;携手推进检验检…

java八股文面试[JVM]——双亲委派模型

1.当AppClassLoader去加载一个class时&#xff0c;它首先不会自己去尝试加载这个类&#xff0c;而是把类加载请求委托给父加载器ExtClassLoader去完成。 2.当ExtClassLoader去加载一个class时&#xff0c;它首先也不会去尝试加载这个类&#xff0c;而是把类加载请求委托给父加载…

python面试题--1

目录 python面试题 1&#xff09;什么是Python&#xff1f;使用Python有什么好处&#xff1f; 2&#xff09;什么是PEP 8&#xff1f; 3&#xff09;什么是序列化和非序列化&#xff1f; 4&#xff09;如何解释Python&#xff1f; 5&#xff09;如何在Python中内存管理&a…

2023年国赛 高教社杯数学建模思路 - 案例:退火算法

文章目录 1 退火算法原理1.1 物理背景1.2 背后的数学模型 2 退火算法实现2.1 算法流程2.2算法实现 建模资料 ## 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 退火算法原理 1.1 物理背景 在热力学上&a…

微软宣布在 Excel 中使用 Python:结合了 Python 的强大功能和 Excel 的灵活性。

文章目录 Excel 中的 Python 有何独特之处&#xff1f;1. Excel 中的 Python 是为分析师构建的。高级可视化机器学习、预测分析和预测数据清理 2. Excel 中的 Python 通过 Anaconda 展示了最好的 Python 分析功能。3. Excel 中的 Python 在 Microsoft 云上安全运行&#xff0c;…

C++ 异常

一、异常概念 异常是一种处理错误的方式&#xff0c;当一个函数发现自己无法处理的错误时就可以抛出异常&#xff0c;让函数的直接或间接 的调用者处理这个错误。 throw: 当问题出现时&#xff0c;程序会抛出一个异常。这是通过使用 throw 关键字来完成的。 catch: 在您想要…

XSS盲打练习(简单认识反射型、存储型XSS和cookie欺骗)

文章目录 挖掘cms网站XSS漏洞利用XSS平台盲打CMS&#xff0c;获取后台管理cookiecookie欺骗登录管理员账户 挖掘cms网站XSS漏洞 来到cms网站主页&#xff0c;发现有一个搜索框&#xff0c;输入任意内容后搜索&#xff0c;发现内容会回显&#xff0c;这里可能存在反射型XSS漏洞…

华为星闪,一项将 “ 更稳 WiFi ” 和 “ 更好蓝牙 ” 融合起来的通信标准

兼顾多用途和专业化的 AI 大模型、移除安卓代码的 HarmonyOS NEXT 、给折叠屏应用提供适配方向的《 折叠屏/平板应用体验评估标准 》。。。 不过除了这些比较贴近我们普通用户&#xff0c;容易讲清楚的东西&#xff0c;华为还官宣了一个大家可能没注意的黑科技&#xff1a; 星…

ModaHub魔搭社区:WinPlan经营大脑数据采集

目录 WinPlan经营大脑数据采集介绍 WinPlan经营大脑数据采集模版 WinPlan经营大脑数据采集介绍 基于指标、维度来创建业务表单,通过业务表单的形式来采集实际数据,最终生成企业统一的经营数据库。由于需要客户创建数据采集模版(业务流程),然后可以基于各个业务模版作为…

Hadoop学习一(初识大数据)

目录 一 什么是大数据&#xff1f; 二 大数据特征 三 分布式计算 四 Hadoop是什么? 五 Hadoop发展及版本 六 为什么要使用Hadoop 七 Hadoop vs. RDBMS 八 Hadoop生态圈 九 Hadoop架构 一 什么是大数据&#xff1f; 大数据是指无法在一定时间内用常规软件工具对其内…

数据结构:线性表之-顺序表

目录 1.线性表概念 1.1 什么是顺序列表 1.2 线性表 2.顺序表实现 将有以下功能&#xff1a; 详细过程 顺序表的动态存储 顺序表初始化 尾插 扩容 头插 更改后的尾插 尾删 头删 打印 释放内存 优化顺序表 (任意位置插入删除) 优化后的头插尾插 优化后的头删尾…

采用typescript编写,实现ofd前端预览、验章

前言 浏览器内核已支持pdf文件的渲染&#xff0c;这极大的方便了pdf文件的阅读和推广。ofd文件作为国产板式标准&#xff0c;急需一套在浏览器中渲染方案。 本人研究ofd多年&#xff0c;分别采用qt、c# 开发了ofd阅读器。本人非前端开发人员&#xff0c;对js、typescript并不熟…

linux+c+qt杂记

虚拟机网络选择&#xff1b; 桥接模式&#xff1a;设置window宿主机的IP/dns,把虚拟机设置为桥接即可。 切换到终端&#xff1a;我的是 ctrlaltFnF1&#xff1f; 问题解决&#xff1a; Ubuntu系统下载&#xff08;清华大学开源软件镜像站&#xff09;&#xff08;ubuntu-20.…

[Go版]算法通关村第十三关白银——数字数学问题之数组实现加法、幂运算

目录 数组实现加法专题题目&#xff1a;数组实现整数加法思路分析&#xff1a;数组末尾开始&#xff0c;逐个元素1&#xff0c;10就进位&#xff0c;!10就退出复杂度&#xff1a;时间复杂度 O ( n ) O(n) O(n)、空间复杂度 O ( n ) O(n) O(n)Go代码 题目&#xff1a;字符串加法…