【Linux系统开发】x210开发板根目录文件系统构建(上)

简介: 【Linux系统开发】x210开发板根目录文件系统构建

一、开发板配置

(使用secureCRT)

首先确保开发板完成以下配置:

主机IP:

set ipaddr192.168.1.10

服务器IP:

set serverip 192.168.1.141

网关:

set gatewayip 192.168.1.1

子网掩码:

set netmask 255.255.255.0

内核驱动设置:

set bootcmd 'tftp 30008000 zImage; bootm 30008000'

bootargs配置:

set bootargs root=/dev/nfs nfsroot=192.168.1.141:/root/rootfs/x210_bsp ip=192.168.1.10:192.168.1.141:192.168.1.1:255.255.255.0::eth0:off init=/linuxrc console=ttySAC2,115200

最后输入save保存一下,这样开发板的网络和内核配置就设置好了

二、了解rootfs

rootfs的两种表现形式:

1、nfs方式启动的文件夹形式的rootfs(主机)

2、用来烧录的镜像形式rootfs(开发板)

三、虚拟机文件配置

1.目录配置

首先我们需要root进入超级用户模式,在虚拟机的root目录下再次创建以下两个目录:

rootfs x210_bsp

这时候我们需要知道这两个文件夹下有什么:

  • x210_bsp:用于uboot烧录和配置
  • rootfs:用于挂载开发板根文件系统

2.x210_bsp配置

首先进入到该目录下,并将文件qt_x210v3s_160307.tar.bz2复制到该目录下解压

以上是解压qt_x210v3s_160307.tar.bz2内的文件内容,后面会说到这个目录如何使用

3.rootfs配置

首先我们需要在该目录下继续创建一个名为x210_rootfs的文件夹,并且进入到该文件夹下,将我们上面提到的busybox文件复制到此目录下并解压

以上是解压busybox-1.24.1(这是我选择的busybox版本)的全部文件

4.make menuconfig

进入x210_bsp/kernel 目录下,输入命令:make menuconfig进入图形化菜单

这里我们按下面操作完成网络配置

[*]Networking support --->
  Networking options --->

网络文件系统设置

File systems --->
  [*]Networking File Systems --->

有需要把开发板作为服务器端的也可以选择把NFS server support设置打开,这里我们仅实验客户端

以上配置结束后输入命令make编译,至此开发板uboot的网络和文件系统部分配置结束。

四、busybox的移植实战

1、了解busybox

busybox是一个集成了一百多个最常用linux命令和工具的软件,他甚至还集成了一个http服务器和一个telnet服务器,而所有这一切功能却只有区区1M左右的大小.我们平时用的那些linux命令就好比是分立式的电子元件,而busybox就好比是一个集成电路,把常用的工具和命令集成压缩在一个可执行文件里,功能基本不变,而大小却小很多倍。

2、busybox源码获取

busybox官网

注意:我们在文件系统构建中,内核编译和文件系统的程序编译都必须是使用的统一交叉编译器。(选择将虚拟机中的交叉编译文件复制一份到开发板构建的文件系统下)

3、busybox配置

(1)修改Makefile

首先进入~/rootfs/x210_rootfs/busybox-1.24.1目录下

输入命令vi Makefile进入脚本进行以下修改

173行:CROSS_COMPILE=/usr/local/arm/arm-2009q3/bin/arm-none-linux-gnueabi-

注意:此处的交叉编译链需要对照自己电脑的交叉编译链

191行:ARCH=arm

(2)make menuconfig配置

Tip:此处的图形化菜单需要ncurses库(联网下载),由于之前博主自己在这里没有很深的基础知识,走了很多弯路。

因为后面的文件系统的挂载需要虚拟机切换网络状态为桥接模式,但是我的虚拟机桥接网络总是会反复重连,所以建议先将该库下载好,方便后续使用。

make menuconfig

Busybox Settings--->
  Build Options--->
    [*]Build BusyBox as a static binary(no shared libs)
Busybox Library Tuning--->
  [*]vi-style line editing commands
  [*]Fancy shell prompts
Linux Module Utilities--->
  [ ]Simplified modutils
  [*]insmod
  [*]rmmod
  [*]lsmod
  [*]modprobe
  [*]depmod
Linux System Utilities--->[*]mdev
  [*]Support /etc/mdev.conf
  [*]Support subdirs/symlinks
  [*]Support regular expressions substitutions when renaming dev
  [*]Support command execution at device addition/removal
  [*]Support loading of firmwares

大家学习使用的时候跟着上面的进行配置即可

配置完成后,输入以下命令:

make -j4 (4代表我主机的内核数)

无报错继续下一步:

make install

解释:在Linux系统中安装软件的一般步骤:下载-配置-编译-安装,所以上面的make -j4就代表编译,make install代表安装

(3)设置busybox安装路径

  • make menuconfig
Busybox Settings --->
  Installation Options ("make install" behavior) --->
    (./)BusyBox installation prefix) //这里设置安装路径

(4)解决方案

在虚拟机的配置中,由于代码的复杂性时常让我们不能很全面清晰的看到自己所做的改变,有时候就会出现各种各样的状况。

make -j4编译可能遇到的问题:

  • sync.c(text.sync_main+0x78):undefined reference to 'syncfs'

分析:可能是gcc和当前busybox版本不兼容造成的,我们只需要将其禁用即可。

解决方法:

make menuconfig

点击/进入搜索,输入SYNC,根据提示禁用SYNC

最后再make -j4编译一下即可

其实还可以选择在源代码中解决这个问题,过程有些繁琐就不赘述,动手能力强的可以一试。

(5)make install简述

  • 默认安装位置:./_install
  • 文件包含有:bin linuxrc sbin usr

ls -l可以看到: linuxrc -> bin/busybox //这个linuxrc其实就是个符号链接

这里也不难发现,bin下的所有的符号链接都指向了busybox

(6)make menuconfig更改NFS挂载目录到/root/rootfs/x210_rootfs下

make menuconfig 
  Busybox Settings —> 
    Installation Options (“make install” behavior) —> 
      (/root/rootfs/x210_rootfs)BusyBox installation prefix

执行make install后,回到被挂载的目录下,可以发现这四个文件已经生成。

目录
相关文章
|
2月前
|
Linux
在 Linux 系统中,“cd”命令用于切换当前工作目录
在 Linux 系统中,“cd”命令用于切换当前工作目录。本文详细介绍了“cd”命令的基本用法和常见技巧,包括使用“.”、“..”、“~”、绝对路径和相对路径,以及快速切换到上一次工作目录等。此外,还探讨了高级技巧,如使用通配符、结合其他命令、在脚本中使用,以及实际应用案例,帮助读者提高工作效率。
104 3
|
2月前
|
存储 Linux Windows
linux常用目录
/sbin s就是super User的意思,这里存放的是系统管理员使用的系统管理程序。 /home 存放普通用户的主目录,在Linux中每个用户都有一个自己的目录,一版该目录名是以用户的账号命名的。 /root 该目录为系统管理员,也称为超级权限者的用户主目录。 /lib 系统开机所需要最基本的动态连接共享库,其作用类似于windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。 /etc 所有的系统管理所需要的配置文件和子目录。 /usr 这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于windows下的program fies目录。 /bo
49 2
|
3月前
|
安全 Linux 编译器
探索Linux内核的奥秘:从零构建操作系统####
本文旨在通过深入浅出的方式,带领读者踏上一段从零开始构建简化版Linux操作系统的旅程。我们将避开复杂的技术细节,以通俗易懂的语言,逐步揭开Linux内核的神秘面纱,探讨其工作原理、核心组件及如何通过实践加深理解。这既是一次对操作系统原理的深刻洞察,也是一场激发创新思维与实践能力的冒险。 ####
|
4天前
|
Ubuntu Linux 开发者
Ubuntu20.04搭建嵌入式linux网络加载内核、设备树和根文件系统
使用上述U-Boot命令配置并启动嵌入式设备。如果配置正确,设备将通过TFTP加载内核和设备树,并通过NFS挂载根文件系统。
32 15
|
9天前
|
Linux
linux查看目录下的文件夹命令,find查找某个目录,但是不包括这个目录本身?
通过本文的介绍,您应该对如何在 Linux 系统中查看目录下的文件夹以及使用 `find` 命令查找特定目录内容并排除该目录本身有了清晰的理解。掌握这些命令和技巧,可以大大提高日常文件管理和查找操作的效率。 在实际应用中,灵活使用这些命令和参数,可以帮助您快速定位和管理文件和目录,满足各种复杂的文件系统操作需求。
32 8
|
9天前
|
Ubuntu Unix Linux
Linux网络文件系统NFS:配置与管理指南
NFS 是 Linux 系统中常用的网络文件系统协议,通过配置和管理 NFS,可以实现跨网络的文件共享。本文详细介绍了 NFS 的安装、配置、管理和常见问题的解决方法,希望对您的工作有所帮助。通过正确配置和优化 NFS,可以显著提高文件共享的效率和安全性。
77 7
|
9天前
|
存储 运维 监控
Linux--深入理与解linux文件系统与日志文件分析
深入理解 Linux 文件系统和日志文件分析,对于系统管理员和运维工程师来说至关重要。文件系统管理涉及到文件的组织、存储和检索,而日志文件则记录了系统和应用的运行状态,是排查故障和维护系统的重要依据。通过掌握文件系统和日志文件的管理和分析技能,可以有效提升系统的稳定性和安全性。
26 7
|
16天前
|
负载均衡 Ubuntu 应用服务中间件
nginx修改网站默认根目录及发布(linux、centos、ubuntu)openEuler软件源repo站点
通过合理配置 Nginx,我们可以高效地管理和发布软件源,为用户提供稳定可靠的服务。
78 13
|
13天前
|
Prometheus 运维 监控
Prometheus+Grafana+NodeExporter:构建出色的Linux监控解决方案,让你的运维更轻松
本文介绍如何使用 Prometheus + Grafana + Node Exporter 搭建 Linux 主机监控系统。Prometheus 负责收集和存储指标数据,Grafana 用于可视化展示,Node Exporter 则采集主机的性能数据。通过 Docker 容器化部署,简化安装配置过程。完成安装后,配置 Prometheus 抓取节点数据,并在 Grafana 中添加数据源及导入仪表盘模板,实现对 Linux 主机的全面监控。整个过程简单易行,帮助运维人员轻松掌握系统状态。
99 3
|
1月前
|
安全 Linux 数据安全/隐私保护
深入Linux操作系统:文件系统和权限管理
在数字世界的海洋中,操作系统是连接用户与硬件的桥梁,而Linux作为其中的佼佼者,其文件系统和权限管理则是这座桥梁上不可或缺的结构。本文将带你探索Linux的文件系统结构,理解文件权限的重要性,并通过实际案例揭示如何有效地管理和控制这些权限。我们将一起航行在Linux的命令行海洋中,解锁文件系统的奥秘,并学习如何保护你的数据免受不必要的访问。