wds - 根文件系统

本文详细介绍了如何构建嵌入式Linux系统的最小根文件系统,包括使用Busybox制作根文件系统的过程,如解压、配置、安装、添加必要目录和文件,以及安装C库。此外,还讲解了内核如何启动第一个应用程序,并提到了如何生成和烧录yaffs2文件系统映像文件到开发板上。
摘要由CSDN通过智能技术生成

关系链

  • uboot的目的是启动内核
  • 内核的目的是启动应用程序
  • 应用程序的位置,在根文件系统中

什么是根文件系统

  • 类似于win下的CDE盘,Linux将存储设备分为几个分区,不同分区存放不同类别的文件;
  • 然而,Linux中有些 必要的、基本的文件,它们合称为【根文件系统】
    • 比如内核映像文件、第一个程序init,shell,依赖的库等
文件类型:

用busybox制作根文件系统

什么的busybox?

  • 所谓【制作根文件系统】,其实就是【创建各种目录及文件】
  • Busybox就是这样的工具

步骤

步骤一、解压busybox源码

tar xjf busybox-1.7.0.tar.bz2

步骤二、配置busybox

cd busybox-1.7.0
make menuconfig
参考【嵌入式linux应用开发完全手册】中的17.2.3章节
  • 配置交叉编译
  • tab
  • C库配置为使用动态库
  • 使能mdev
  • 。。。
make

步骤三、安装

【注意:这里不能直接make install,不然会直接安装到当前环境;破坏自己的Liunx环境】
需要新建一个目录,然后安装到该目录下
mkdir -p /kuan/first_fs
make CONFIG_PREFIX=/kuan/first_fs install
————此时,我们就得到了一个文件系统的大概雏形————

步骤四、添加dev目录

mkdir /kuan/first_fs/dev
cd /kuan/first_fs/dev

sudo mknod console c 5 1

sudo mknod null c 1 3

步骤五、添加etc目录

mkdir /kuan/first_fs/etc

vi etc/inittab
inittab中填入:
console::askfirst:-/bin/sh

步骤六、安装C库

打开你的gcc交叉工具的安装地址,然后复制so动态库文件到first_fs中去
交叉工具安装参考: 20210804 - JZ2440开发板新上手
cd [your arm-linux-gcc path]
mkdir /kuan/first_fs/lib

cp *.so* mkdir /kuan/first_fs/lib -d

步骤七(再完善)、挂载proc(虚拟文件系统)

mkdir /kuan/first_fs/proc

vi /kuan/first_fs/etc/inittab
添加一句:执行一个脚本文件
 
::sysinit:/etc/init.d/rcS

mkdir /kuan/first_fs/etc/init.d
vi /kuan/first_fs/etc/rcS
在rcS中加上:
 
mount -t proc none /proc

chomd +x /kuan/first_fs/etc/rcS

搞定!!


做好的跟文件系统如何烧录到板子上?
——需要做一个映像文件

如何制作yaffs文件系统映像文件?

步骤一、解压

tar xjf yaffs_source_util_larger_small_page_nand.tar.bz2

步骤二、编译生成yaff2的工具——mkyaffs2image

cd Development_util_ok/yaffs2/yaffs2

make

sudo cp mkyaffs2image /usr/local/bin
sudo chmod +x /usr/local/bin/mkyaffs2image

步骤三、生成映像文件

cd /kuan

mkyaffs2image first_fs first_fs.yaffs2

ok!得到 first_fs.yaffs2映像文件。

步骤四、烧写到板子

略。

内核怎么启动第一个应用程序?

1,打开设备

  • open(/dev/console)——创建控制台设备文件,设备描述符为0(stdin)
  • sys_dup(0)  ——复制,设备描述符为1(stdout)
  • sys_dup(0)  ——复制,设备描述符为2(stderr)
  • 所有标准输入、输出、错误,其实是同一个文件。

2,run_init_process——创建线程

如果创建成功,是不会返回的

 


最小的根文件系统包含哪些?

  1. dev/console dev/null
  2. init 就是busybox
  3. /etc/inittab
  4. 配置文件中指定的程序
  5. C库
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值