【S5P6818】最小文件系统制作

2023-11-13

00. 目录

01. BusyBox概述

BusyBox 是一个集成了三百多个最常用Linux命令和工具的软件。BusyBox 包含了一些简单的工具,例如ls、cat和echo等等,还包含了一些更大、更复杂的工具,例grep、find、mount以及telnet。有些人将 BusyBox 称为 Linux 工具里的瑞士军刀。简单的说BusyBox就好像是个大工具箱,它集成压缩了 Linux 的许多工具和命令,也包含了 Linux 系统的自带的shell。

BusyBox 将许多具有共性的小版本的UNIX工具结合到一个单一的可执行文件。这样的集合可以替代大部分常用工具比如的GNU fileutils , shellutils等工具,BusyBox提供了一个比较完善的环境,可以适用于任何小的嵌入式系统。

02. 下载BusyBox

官网:https://busybox.net/
在这里插入图片描述

csdn下载:busybox-1.36.1.tar.bz2

03. 编译BusyBox

3.1 解压文件

deng@local:~/arm$ tar -xjvf busybox-1.21.1.tar.bz2 

3.2 进入busybox目录

deng@local:~/arm$ cd busybox-1.21.1/
deng@local:~/arm/busybox-1.21.1$ pwd
/home/deng/arm/busybox-1.21.1
deng@local:~/arm/busybox-1.21.1$ 


3.3 执行make menuconfig

deng@local:~/arm/busybox-1.21.1$ 
deng@local:~/arm/busybox-1.21.1$ make menuconfig 

3.4 选择设置选项

在这里插入图片描述

3.5 选择编译选项
在这里插入图片描述

3.6 设置交叉编译前缀
在这里插入图片描述

3.7 输入arm-linux-
在这里插入图片描述

3.7 编译busybox

deng@local:~/arm/busybox-1.21.1$ make

3.8 安装busybox

deng@local:~/arm/busybox-1.21.1$ make install 


3.9 查看生成的文件

deng@local:~/arm/busybox-1.21.1$ ls _install
bin  linuxrc  sbin  usr
deng@local:~/arm/busybox-1.21.1$ 

04. 最小文件系统制作

4.1 创建共享目录

deng@local:~/arm/busybox-1.21.1$ mkdir ~/filesystem
deng@local:~/arm/busybox-1.21.1$ 

4.2 拷贝busybox编译好的文件到rootfs中

deng@local:~/arm/busybox-1.21.1$ cp _install/* /home/deng/filesystem/ -rf 
deng@local:~/arm/busybox-1.21.1$ 

4.3 拷贝etc目录

deng@local:~/arm/busybox-1.21.1$ cp examples/bootfloppy/etc ~/filesystem/ -rf 
deng@local:~/arm/busybox-1.21.1$ 

4.4 拷贝库文件

deng@local:~/arm/busybox-1.21.1$ cp /usr/local/arm/4.5.1/arm-none-linux-gnueabi/lib/* ~/filesystem/lib/ -rf 
deng@local:~/arm/busybox-1.21.1$

4.5 手动创建目录

deng@local:~/filesystem$ pwd
/home/deng/filesystem
deng@local:~/filesystem$ mkdir mnt media misc home sys proc tmp var dev boot net opt
deng@local:~/filesystem$ 

4.6 修改配置文件etc/profile

deng@local:~/filesystem$ pwd
/home/deng/filesystem
deng@local:~/filesystem$ cat etc/profile 
# /etc/profile: system-wide .profile file for the Bourne shells

echo "=============================="
echo "    welcom to deng system     "
echo "=============================="


export PS1="[root@deng \W]"
deng@local:~/filesystem$ 

4.7 修改rcS配置文件

deng@local:~/filesystem$ vim etc/init.d/rcS 
deng@local:~/filesystem$ cat etc/init.d/rcS 
#! /bin/sh

mount -t proc none /proc
mount -t sysfs none /sys
mount -t sysfs none /tmp
mount -t sysfs none /dev

/sbin/mdev -s

deng@local:~/filesystem$ pwd
/home/deng/filesystem
deng@local:~/filesystem$ 

4.8 修改inittab文件

deng@local:~/filesystem$ pwd
/home/deng/filesystem
deng@local:~/filesystem$ vim etc/inittab 
deng@local:~/filesystem$ cat etc/inittab 
::sysinit:/etc/init.d/rcS
#::respawn:-/bin/sh
ttySAC0::askfirst:-/bin/sh
#::ctrlaltdel:/bin/umount -a -r
deng@local:~/filesystem$ 

4.9 设置nfs共享

deng@local:~/filesystem$ sudo vim /etc/exports 

# 最后一行添加以下内容
/home/deng/filesystem *(rw,sync,no_root_squash)

4.10 重启nfs服务

deng@local:~/filesystem$ chmod -R 755 /home/deng/filesystem/
deng@local:~/filesystem$ sudo systemctl restart nfs-kernel-server
deng@local:~/filesystem$ 

05. 设置开发板参数

5.1 进入Uboot

DengJin# setenv bootargs  noinitrd root=/dev/nfs nfsroot=/fs ,rsize=1024,wsize=1024 ip=10.36.104.240:10.36.104.180:10.36.104.1:255.255.255.0::eth0:off init=/linuxrc console=ttySAC1,115200
DengJin# saveenv
Saving Environment to MMC...
Writing to MMC(2)... done
DengJin# 

参数分析:

(1)root=/dev/nfs
告诉内核根文件系统是NFS;

(2)nfsroot=10.36.104.180:/filesystem
告诉内核根文件系统在NFS服务器上的路径;
10.36.104.180:NFS服务器的ip地址;
/filesystem:根文件系统在NFS服务器上的路径;

(3)ip=10.36.104.240:10.36.104.180:10.36.104.1:255.255.255.0::eth0:off
第一个参数为开发板ip地址;
第二个为服务器ip地址;
第三个是网关;
第四个是掩码;
第五个是开发板名字,可以不填;
第六个将ip地址复制给哪个网卡;
第七个关闭动态ip获取;
(4)init=/linuxrc
告诉内核init进程的路径是"/linuxrc";
(5)console=ttySAC1,115200
指定控制台是串口ttySAC1,波特率是115200;
补充:可以指定nfs版本,用"nfsvers=3"

5.2 重新启动uboot

DengJin# 
DengJin# reset

5.3 启动之后的效果

[    4.935000] ALSA device list:
[    4.938000]   #0: I2S-alc5623
[    4.940000]   #1: SPDIF-Transciever
[    7.904000] PHY: stmmac-0:04 - Link is Up - 100/Full
[    9.969000] VFS: Mounted root (nfs filesystem) on device 0:11.
[    9.971000] devtmpfs: mounted
[    9.973000] Freeing init memory: 248K
[    9.976000] Write protecting the kernel text section c0008000 - c094d000
[    9.985000] rodata_test: attempting to write to read-only section:
[    9.989000] write to read-only section trapped, success
==============================
    welcom to deng system     
==============================
[deng@local /]# 

06. 讨论

嵌入式开发企鹅群: 143847203

07. 附录

参考:【Tiny4412】最小网络文件系统制作

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【S5P6818】最小文件系统制作 的相关文章

随机推荐

  • OpenCV——高斯滤波

    目录 一 高斯滤波 二 C 代码 三 python代码 四 结果展示 1 原始图像 2 5x5卷积 3 9x9卷积 一 高斯滤波 高斯滤波是一种线性平滑滤波 适用于消除高斯噪声 广泛应用于图像处理的减噪过程 1 通俗的讲 高斯滤波就是对整幅
  • PC端页面适应不同的分辨率的方法

    上周完成一个PC端的项目 对于我这样的小白来说 这个项目里面最大的问题就是 如何做到让HTML页面适应电脑的不同分辨率 通过师傅的指导和自己查阅资料 最终成功适配不同的分辨率 完成了这个项目 现在回头再来看这个项目 突然发现适配不同的分辨率
  • js弹出窗口总结6种弹窗方法

    关闭 父窗口弹出对话框 子窗口直接关闭 this Response Write 关闭 父窗口和子窗口都不弹出对话框 直接关闭 this Response Write 弹出窗口刷新当前页面width 200 height 200菜单 菜单栏
  • 【图像处理】OpenCV截图小工具

    还存在一些小Bug 需要改进 include
  • 查询表结构信息sql

    select DQMS 库名 A Table Name 表名 C comments 表中文名 A column name 字段名 B comments 备注 A data type 数据类型 A data length 长度 A data
  • 基于SpringBoot左岸小区车位管理系统的设计与实现

    随着信息化时代的到来 管理系统都趋向于智能化 系统化 小区车位管理系统也不例外 但目前不少小区车位的管理仍都使用人工管理 小区规模越来越大 入住率越高 小区车辆信息量也越来越庞大 人工管理显然已无法应对时代的变化 而小区车位管理系统能很好地
  • STM32裸机串口接收方案

    点击下面 进入总目录索引 STM32系列精品Demo集 总目录 一 UART接收方案汇总 补充说明 上述接收方案中有协议帧 本协议帧指的是有帧头帧尾这种协议 不包含类似AT指令这种协议方案 二 UART丢包问题分析 2 1 裸跑机制 裸跑时
  • SpringBoot配置日志每天输出到指定文件

    在使用springboot搭建项目时 它内部引入了logback作为日志框架 默认只有info级别的控制台日志输出 在线上环境都是输出到文件的 并且每日一个文件夹 自动更换文件 文件内容超出一定大小 自动切分 并且以递增的序号排列 不同级别
  • 前端 JavaScript js PDF转img PDF转base64 PDF转图片

    需求是将前端加载的PDF转化到base64上传服务器
  • 【解决】当你不小心将桌面文件位置直接位移到D盘,且桌面上出现D盘所有目录的解决办法!!!

    首先能够出现这个问题的话 必定是你想要将桌面文件位置放在D盘 而不是系统默认的C盘 这样你在桌面显示的东西都可以是占用D盘的内存而不是C盘的内存 在这其中有些人可能出现失误出现了如题目所示的麻烦 我们直接进入主题 首先 在开始菜单搜索 re
  • 【内网穿透】远程访问后端编写中的接口,可用于前后端Swagger远程调试,和https微信开发测试

    之前在家和项目组的同学分开了 无法在同一个路由下通过访问局域网下的ip进行接口对接 只有借助第三方工具 开进行远程访问 NATAPP 我们可以在这个网址购买隧道 与自己电脑上配置后 便可以远程发问idea项目运行的的链接 其次由于连接支持h
  • 海康SDK:C3690 应该为字符串文本,但找到的是用户定义的字符串文本; C4430 缺少类型说明符 - 假定为 int

    海康SDK C 严重性代码说明项目文件行禁止显示状态错误 C3690 应该为字符串文本 但找到的是用户定义的字符串文本 Alarm严重性代码 说明 项目 文件行禁止显示状态错误 C4430 缺少类型说明符 假定为 int 注意 C 不支持默
  • JS面试——宏任务与微任务

    JavaScript的宏任务与微任务 1 问题的由来 2 JavaScript的宏任务与微任务 2 1promise的使用方法 2 2async与await的使用方法 3 面试题实战分析 程序执行顺序 参考文献 1 问题的由来 我相信 你也
  • GAMES101笔记_Lec07~09_着色 Shading

    0 我们已经学了什么 What We ve Covered So Far 空间中定义了一个摄像机 通过某些变换使模型摆好姿势 Model 通过观测变换让摄像机放在原点 得到标准的 1 1
  • EL&&JSTL

    一 JSP技术 1 jsp脚本和注释 jsp脚本 1 内部的java代码翻译到service方法的内部 2 会被翻译成servlet的成员的内容 jsp注释 不同的注释可见范围是不同 1 Html注释 可见范围 jsp源码 翻译后的serv
  • 【C++入门】C++和C语言比较:新增的和有变化的关键字

    1 新增bool关键字 1 1 C语言的bool类型 define true 1 define false 0 C语言中的bool类型 typedef int bool 1 bool类型也叫逻辑类型 只存在两个值 true和false tr
  • Java中的反射(一)

    一 反射概念 反射 简单来说就是分析类信息的能力 类信息包括属性 方法 构造器等 Java反射机制的核心是在程序运行时动态加载类并获取类的详细信息 从而操作类或对象的属性和方法 本质是JVM得到类对象之后 再通过类对象进行反编译 从而获取对
  • discuz应用中心,discuz应用中心问题解决

    discuz应用中心 在很久很久以前 站长们想装个插件 装个模板很费力气的 首先是要去找 找到后不知道怎么装 装上后不满意卸载也很麻烦 不过 以后这种情况就会大大的改善了 因为discuz应用中心 可以让站长们快速找到想要的插件 安装插件变
  • 【深度学习目标检测系列 - 01】目标检测是什么

    目标检测 Object Detection 一直以来都是深度学习领域的热门话题 这个系列的文章会对其进行详细的梳理 1 目标检测是什么 图像分类任务回答的是 图像中的物体是什么 而目标检测任务回答的是 图像中的物体是什么 它处于图像的什么位
  • 【S5P6818】最小文件系统制作

    00 目录 文章目录 00 目录 01 BusyBox概述 02 下载BusyBox 03 编译BusyBox 04 最小文件系统制作 05 设置开发板参数 06 讨论 07 附录 01 BusyBox概述 BusyBox 是一个集成了三百