Linux项目环境的搭建 (Red hat 9.0Linux操作系统)
一、目的:
1.搭建Linux操作系统项目所需的项目环境构件;
2.了解 Linux的组成,学会编译内核。
二、内容:
安装Red hat 9.0Linux操作系统;
三、步骤:
3.1 正确安装Redhat9.0操作系统。
3.2 rpm -Uvh *.rpm
当安装完linux操作系统后,接下来要安装交叉编译器。启动主机,必须以root用户名登录,在主机的根目录/下,创建linuette目录,如: mkdir /linuette。在/mnt/cdrom目录下找到光盘,将光盘中/项目软件syrj/tools/目录下的RPMS文件夹拷贝到/linuette目录下,打开系统工具下的终端,此时,系统将弹出终端框,在里面改变目录到/linuette/RPMS下,输入如下命令:
rpm -Uvh *.rpm
等待系统安装,如果所有的RPMS内的文件全部正确安装,将会在根目录下的/opt文件夹内生成一个host文件夹,我们所需的交叉编译库就在该目录下。所以,所需的交叉编译环境就搭建好了。
3.3NFS网络文件系统配置与使用
在Linux系统中,驱动程序可以以动态模块的形式加载,这为项目和调试带来了极大的便利。通常做法是将编译好的动态模块和应用程序放在主机上的共享文件夹中,启动NFS网络文件系统服务,以便在项目系统上进行调试和加载模块。
3.4 配置NFS网络文件系统
-
关闭防火墙(如果安装了防火墙):
- 在Linux主机的终端上执行
setup
命令,弹出菜单界面后,选择Firewall configuration
。 - 回车进入系统服务选项菜单,选择
NO FIREWALL
关闭防火墙。设置完成后,退出setup
界面(setup里面显示防火墙设置为HIGH可以忽略)。
- 在Linux主机的终端上执行
-
启动NFS服务:
- 在
setup
界面选择System services
,回车进入系统服务选项菜单。 - 选中
[*]nfs
,按F12键退出,再选择方向键,退出setup
界面,返回到命令提示符下。 - 编辑
/etc/exports
文件,将内容修改为:/ (rw)
- 保存并退出。
- 切换目录到
/etc/rc.d/init.d/
下,执行如下命令启动NFS服务:./nfs start
- 启动成功后终端会输出:
Starting NFS services: [ 确定 ] Starting NFS quotas: [确定] Starting NFS daemon: [确定] Starting NFS mountd: [确定]
- 在
3.3. 主机与项目系统连接
-
硬件连接:
- 使用交叉网线将主机与项目系统连接。
-
配置minicom:
- 在终端下输入
minicom -s
,配置minicom为波特率115200,无奇偶校验,8位数据位。 - 在minicom中,给项目系统上电,系统启动后,利用
ifconfig eth0 xxx.xxx.xxx.xxx
命令改变项目系统的IP地址,使该地址的前三段与主机的前三段一致,最后一段为不重复的小于255的任意值。 - 例如,主机IP地址为192.168.0.1,则项目系统配置为:
ifconfig eth0 192.168.0.5
- 在终端下输入
-
测试连接:
- 在项目系统上执行
ping
命令,测试是否与主机连通:ping 192.168.0.1
- 在项目系统上执行
-
挂载NFS共享目录:
- 确保主机上的NFS共享目录拥有读写权限,若没有则执行:
chmod 777 /home/nfs
- 如果
/home
目录下没有nfs
文件夹,则创建此文件夹,将用于调试的驱动模块及应用程序放在该文件夹内。 - 在项目系统的终端中,输入如下命令将主机的
/home/nfs
目录挂载到项目系统的/mnt/yaffs
目录下:mount -o nolock 192.168.0.1:/home/nfs /mnt/yaffs
- 确保主机上的NFS共享目录拥有读写权限,若没有则执行:
3.4 编译内核
1. 动态加载驱动模块
- 利用NFS网络文件系统进行异地调试时,不需要重新编译内核,只需使用交叉编译器编译驱动模块和应用程序。
- 将驱动模块和应用程序放在主机的共享文件夹内,通过mount命令挂载到项目系统中。
2. 编译驱动模块进内核
- 需要将驱动模块编译进内核时,应进行以下步骤:
-
配置内核:
- 在内核目录下输入:
make menuconfig
- 选中新加入的驱动模块,保存配置并退出。
- 在内核目录下输入:
-
编译内核:
- 首次编译内核时,需依次执行以下命令:
make dep # 用于寻找各文件的依存关系 make clean # 清除以前构建内核时生成的所有目标文件、模块文件和临时文件 make zImage # 编译内核中的文件,生成内核
- 编译通过后,内核文件
zImage
会生成在/arch/arm/boot/
目录下。
- 首次编译内核时,需依次执行以下命令:
至此,您应对在Linux操作系统下的NFS网络文件系统配置、模块加载、及内核编译过程有一个大概的了解。
四、说明
1.关于linux-2.4.18.-rm7-pxa1
linux-2.4.18.-rm7-pxa1是linux移植到三星S3C2410处理器上的操作系统内核代码。一般在每个目录下,都有一个.depend 文件和一个 Makefile 文件,这两个文件都是编译时使用的辅助文件,仔细阅读这两个文件对弄清各个文件这间的联系和依托关系很有帮助;而且,在有的目录下还有Readme 文件,它是对该目录下的文件的一些说明,同样有利于我们对内核源码的理解。
Makefile 重构Linux内核可执行代码的make文件
Documention 有关Linux内核的文档
Arch arch 是内核中与具体CPU和系统结构相关的代码,具体的CPU对应具体的文件夹下的文件。相关的.h文件分别放在include/asm中。在每个CPU的子目录中,又进一步分为boot、mm、kernel、lib等子目录,分别包含与系统引导、内存管理、系统调用等相关的代码。
Drivers 设备的驱动程序。放置系统所有的设备驱动程序;每种驱动程序又各占用一个子目录:如,/block 下为块设备驱动程序,比如ide(ide.c)。
Fs 文件系统,每个子目录分别支持一个特定的文件系统,例如fat和 ext2。还有一些共同的源程序则用于虚拟文件系统。
Include 包含了所有的.h文件。和arch子目录一样,其下都有相应
CPU的子目录,而通用的子目录asm则根据系统的配置 “符号连接”到具体的CPU的专用子目录上。与平台无关的头文件在
include/linux子目录下,与ARM处理器相关的头文件在include/asm-arm子目录下,除此之外,还有通用的子目录linux,net等。
Init Linux内核的这个目录包含核心的初始化代码(注意:不是系统的引导代码),包含两个文件main.c和Version.c。
Ipc Linux内核的进程间的通信管理
Kernel Linux内核的进程管理和进程调度。主要的核心代码,此目录下的文件实现了大多数linux系统的内核函数,其中最重要的文件是sched.c;同样,和体系结构相关的代码在arch/*/kernel中;
Lib 此目录为通用的程序库。
Mm Linux内核的内存管理。这个目录包括所有独立于处理器体系结构的内存管理代码,如页式存储管理内存的分配和释放等。
Net 包含了各种不同网卡和网络的驱动程序。
Scripts 此目录包含用于配置核心的脚本文件。
以下是一个表格,用于概述Linux内核目录结构及其内容:
目录/文件 | 描述 |
---|---|
Makefile | 用于重构Linux内核可执行代码的make文件。 |
Documentation | 包含有关Linux内核的文档。 |
Arch | 包含与具体CPU和系统结构相关的代码,每个CPU的子目录下又分为boot、mm、kernel、lib等子目录,分别包含与系统引导、内存管理、系统调用等相关的代码。 |
Drivers | 包含系统所有的设备驱动程序,每种驱动程序又各占用一个子目录,如/block下为块设备驱动程序。 |
Fs | 包含文件系统相关的代码,每个子目录分别支持一个特定的文件系统,例如fat和ext2。 |
Include | 包含所有的.h文件,与平台无关的头文件在include/linux子目录下,与ARM处理器相关的头文件在include/asm-arm子目录下。 |
Init | 包含核心的初始化代码,不是系统的引导代码。 |
Ipc | 包含Linux内核的进程间的通信管理。 |
Kernel | 包含Linux内核的进程管理和进程调度,主要的核心代码。 |
Lib | 包含通用的程序库。 |
Mm | 包含Linux内核的内存管理。 |
Net | 包含各种不同网卡和网络的驱动程序。 |
Scripts | 包含用于配置核心的脚本文件。 |
2.关于RPMS交叉编译器包
RPMS是一个用于Linux-2.4.18-rmk7-pxa1内核的交叉编译器包,它其中包括交叉编译、汇编、链接、二进制文件转换工具、所需要的库函数等等。所谓交叉编译器就是一种在Redhat Linux操作系统 + X86的体系结构下,编译经过移植的linux操作系统,生成内核,该内核能够在另外一种软硬件环境下运行的编译工具,如linux操作系统 + ARM的体系结构。交叉编译其实就是在一个平台上生成能够在另一个平台上运行的代码。注意这里的平台,实际上包含两个概念:体系结构(Architecture)和操作系统(Operating System)。同一个体系结构可以运行不同的操作系统;同样,同一个操作系统也可以在不同的体系结构上运行。如我们常说的x86 Linux平台实际上是Intel x86体系结构和Linux for x86操作系统的统称;而x86 WinNT平台实际上是Intel x86体系结构和Windows NT for x86操作系统的简称。由于ARM硬件上无法安装我们所需的编译器,只好借助于宿主机,在宿主机上对即将运行在目标机上的应用程序进行编译,生成可在目标机上运行的代码格式,这就是安装交叉编译器真正意义所在。
3. 实现基于linux的应用系统的开发
建立或拥有一个完备的linux开发环境是十分必要的。基于linux操作系统的应用开发环境一般是由目标系统硬件系统和宿主PC机所构成。目标硬件系统(即本项目箱)用于运行操作系统和系统应用软件,而目标硬件系统所用到的操作系统的内核编译、应用程序的开发则需要通过宿主PC机来编译完成。双方之间通过以太网接口建立nfs网络文件系统关系,来调试编译好的驱动或应用程序。当编译、调试通过后,再添加到内核中去。
(1)开发环境构成
目标系统硬件系统:用于运行操作系统和系统应用软件。
宿主PC机:用于编译目标硬件系统所用到的操作系统的内核和应用程序。
网络文件系统(NFS):通过以太网接口建立宿主PC机和目标硬件系统之间的NFS关系,用于调试编译好的驱动或应用程序。
(2)开发流程
在宿主PC机上使用交叉编译器编译内核和应用程序。
将编译好的内核和应用程序通过NFS挂载到目标硬件系统上。
在目标硬件系统上调试和测试。
如果调试通过,将驱动或应用程序添加到内核中。
四、安装过程:
点击Linux项目环境的搭建 (Red hat 9.0Linux操作系统)——古月居可查看全文
相关文章:

Linux项目环境的搭建 (Red hat 9.0Linux操作系统)
一、目的: 1.搭建Linux操作系统项目所需的项目环境构件; 2.了解 Linux的组成,学会编译内核。 二、内容: 安装Red hat 9.0Linux操作系统; 三、步骤: 3.1 正确安装Redhat9.0操作系统。 3.2 rpm -Uvh *.…...

Study--Oracle-08-ORACLE数据备份与恢复(一)
一、ORACLE数据保护方案 1、oracle数据保护方案 2、数据库物理保护方案 oracle数据库备份可以备份到本地集群存储,也可以备份到云存储。 3、数据库逻辑数据保护方案 二、ORACLE数据体系 1、ORACLE 数据库的存储结构 2、oracle物理和逻辑存储结构 3、数据库进程 4、数据库日…...

FreeIPA安装
一、环境准备 主机名IP角色master. bhlu. com192.168.22.10服务端node1. bhlu. com192.168.22.11客户端 两台服务器关闭防火墙和 selinux配置好 yum 源 1.1 配置 chronyd 配置好 chronyd,使用 chronyc source -v 可以验证 # 这里写了一个playbook作为示例了 --…...
mysql数据库:SQL语言基础和基本查询
mysql数据库:SQL语言基础和基本查询 SQL语言简介 Structured Query Language, 结构化查询语言非过程性语言为加强SQL的语言能力,各厂商增强了过程性语言的特征如:Oracle的PL/SQL 过程性处理能力,SQL Server、Sybase的T-SQLSQL是用…...

strimzi operator 部署kafka集群(可外部访问)
Strimzi介绍 官方文档:https://strimzi.io/docs/operators/0.42.0/overview#kafka-components_str Strimzi介绍 Strimzi 是一个用于 Apache Kafka 在 Kubernetes 上部署和管理的开源项目。它提供了一组 Kubernetes 自定义资源定义(Custom Resource Definitions,CRDs)、控制…...

【网络安全】探索AI 聊天机器人工作流程实现RCE
未经许可,不得转载。 文章目录 前言正文前言 我发现了一个广泛使用的AI聊天机器人平台中的远程代码执行漏洞。该漏洞存在于聊天机器人的自定义工作流响应代码中,这些工作流允许开发人员通过创建定制的流程来扩展机器人的功能。 正文 在浏览自动化聊天机器人的多个特定功能…...
虚拟DOM、Vue渲染流程
虚拟DOM(Virtual DOM)是一种在前端开发中广泛使用的技术,它用JavaScript对象来表示真实DOM(文档对象模型)的结构和状态。虚拟DOM的核心思想是将页面的状态和结构保存在内存中,而不是直接操作真实的DOM。这一…...
centos7 启动python后端服务与停止服务的sh脚本
centos7 启动python后端服务与停止服务 分别在工程目录下新建启动脚本和停止脚本。 1、启动服务脚本 start_srv.sh: python3 start_srv.py运行 nohup ./start_srv.sh & 以守护进程的方式启动这个服务。 2、停止服务脚本 stop_srv.sh: sp_pidps -ef | grep start_srv…...

访问网站显示不安全怎么办?
访问网站时显示“不安全”,针对不同的原因有不同的解决方式,下面是常见的几种原因和对应的解决办法。 1.未启用HTTPS协议 如果网站仅使用HTTP协议,数据传输没加密,因此会被浏览器标记为“不安全”。解决办法是启用HTTPS协议,给…...
Scala与集合框架:高效数据处理的利器
Scala与集合框架:高效数据处理的利器 Scala 是一种现代化的编程语言,融合了面向对象编程和函数式编程的特性。其集合框架为处理数据提供了强大而灵活的工具,使得数据处理变得高效且富有表达力。本文将深入探讨 Scala 的集合框架,…...

基于 JWT 的模拟登录爬取实战
准备工作 1. 了解 JWT 相关知识 2. 安装 requests 库,并了解其基本使用 案例介绍 爬取网站: https://login3.scrape.center/ 用户名和密码是: admin 模拟登录 基于 JWT 的网站通常采用的是前后端分离式, 前后端的数据传输依…...
力扣(2024.08.06)
1. 144:二叉树的前序遍历 # Definition for a binary tree node. # class TreeNode: # def __init__(self, val0, leftNone, rightNone): # self.val val # self.left left # self.right right class Solution:def preorderTravers…...

如何快速入门 PyTorch ?
PyTorch是一个机器学习框架,主要依靠深度神经网络,目前已迅速成为机器学习领域中最可靠的框架之一。 PyTorch 的大部分基础代码源于 Ronan Collobert 等人 在 2007 年发起的 Torch7 项目,该项目源于 Yann LeCun 和 Leon Bottou 首创的编程语…...

Qt 快速部署环境(windeployqt.exe)
windeployqt.exe 是 Qt 框架提供的一个工具,主要用于将 Qt 应用程序部署到 Windows 环境中。它自动将所需的所有库、插件和文件复制到应用程序的目录中,以便用户能够直接运行应用程序,而无需额外的配置。 主要功能 自动识别依赖项ÿ…...
白骑士的PyCharm教学实战项目篇 4.2 数据分析与可视化
系列目录 上一篇:白骑士的PyCharm教学实战项目篇 4.1 Web应用开发 数据分析和可视化是现代数据科学和工程中的重要环节。借助PyCharm的强大功能,数据分析与可视化的开发工作变得更加高效和便捷。本文将详细介绍如何在PyCharm中进行数据分析工具的集成与…...

el-form-item,label在上方显示,输入框在下方展示
本来是两排展示去写,设计要求一排展示,label再上方,输入框、勾选框在下方;只能调整样式去修改;参考label-position这个属性 代码如下: <el-form ref"form" :model"formData" clas…...

Centos7.9操作系统kdump crash文件vmcore未生成问题
Centos7.9操作系统kdump crash文件未生成问题 一、背景说明1、问题背景 二、排查思路1、先了解下crashkernelcrashkernel设置方式示例如何配置crashkernel验证crashkernel配置 2、再了解下kdump2.1 Kdump 的基本概念2.1.1. 生产内核(Production Kernel)2…...

找不到符号 javax.servlet.WriteListener
1、问题 找不到符号2、原因 JDK1.8升级到高版本后,需要手动引入包。 在打包时,需要注意一下是否是在父类打包,而不是在某个model打包。 3、解决 引入 <dependency><groupId>javax.servlet</groupId><artifactId>…...

智能仪表板DevExpress Dashboard v24.1 - 新增级联参数过滤
使用DevExpress Analytics Dashboard,再选择合适的UI元素(图表、数据透视表、数据卡、计量器、地图和网格),删除相应参数、值和序列的数据字段,就可以轻松地为执行主管和商业用户创建有洞察力、信息丰富的、跨平台和设…...

计算机网络-CSP初赛知识点整理
历年真题 [2016-NOIP-普及-第3题] 以下不属于无线通信技术的是( ) A. 蓝牙 B. Wifi C. GPRS D. 以太网 [2015-NOIP-普及-第10题] FTP 可以用于( )。 A. 远程传输文件 B. 发送电子邮件 C. 浏览网页 D. 网上聊天 [2019-CSP-J-第1题] 中国的国家顶级域名是( ). A. .cn B. .ch C.…...

Xshell远程连接Kali(默认 | 私钥)Note版
前言:xshell远程连接,私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...

【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)
可以使用Sqliteviz这个网站免费编写sql语句,它能够让用户直接在浏览器内练习SQL的语法,不需要安装任何软件。 链接如下: sqliteviz 注意: 在转写SQL语法时,关键字之间有一个特定的顺序,这个顺序会影响到…...

微信小程序云开发平台MySQL的连接方式
注:微信小程序云开发平台指的是腾讯云开发 先给结论:微信小程序云开发平台的MySQL,无法通过获取数据库连接信息的方式进行连接,连接只能通过云开发的SDK连接,具体要参考官方文档: 为什么? 因为…...

QT: `long long` 类型转换为 `QString` 2025.6.5
在 Qt 中,将 long long 类型转换为 QString 可以通过以下两种常用方法实现: 方法 1:使用 QString::number() 直接调用 QString 的静态方法 number(),将数值转换为字符串: long long value 1234567890123456789LL; …...

如何理解 IP 数据报中的 TTL?
目录 前言理解 前言 面试灵魂一问:说说对 IP 数据报中 TTL 的理解?我们都知道,IP 数据报由首部和数据两部分组成,首部又分为两部分:固定部分和可变部分,共占 20 字节,而即将讨论的 TTL 就位于首…...
Java多线程实现之Thread类深度解析
Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...
Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信
文章目录 Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信前言一、网络通信基础概念二、服务端与客户端的完整流程图解三、每一步的详细讲解和代码示例1. 创建Socket(服务端和客户端都要)2. 绑定本地地址和端口&#x…...
PAN/FPN
import torch import torch.nn as nn import torch.nn.functional as F import mathclass LowResQueryHighResKVAttention(nn.Module):"""方案 1: 低分辨率特征 (Query) 查询高分辨率特征 (Key, Value).输出分辨率与低分辨率输入相同。"""def __…...

[免费]微信小程序问卷调查系统(SpringBoot后端+Vue管理端)【论文+源码+SQL脚本】
大家好,我是java1234_小锋老师,看到一个不错的微信小程序问卷调查系统(SpringBoot后端Vue管理端)【论文源码SQL脚本】,分享下哈。 项目视频演示 【免费】微信小程序问卷调查系统(SpringBoot后端Vue管理端) Java毕业设计_哔哩哔哩_bilibili 项…...

脑机新手指南(七):OpenBCI_GUI:从环境搭建到数据可视化(上)
一、OpenBCI_GUI 项目概述 (一)项目背景与目标 OpenBCI 是一个开源的脑电信号采集硬件平台,其配套的 OpenBCI_GUI 则是专为该硬件设计的图形化界面工具。对于研究人员、开发者和学生而言,首次接触 OpenBCI 设备时,往…...