Exynos4412 文件系统制作(三)—— 文件系统移植

发布者:塞上老马最新更新时间:2021-12-16 来源: eefocus关键字:Exynos4412 手机看文章 扫描二维码
随时随地手机看文章

根文件系统一直以来都是所有类Unix操作系统的一个重要组成部分,也可以认为是嵌入式Linux系统区别于其他一些传统嵌入式操作系统的重要特征,它给Linux带来了许多强大和灵活的功能,同时也带来了一些复杂性。我们需要清楚的了解根文件系统的基本结构,以及细心的选择所需要的系统库、内核模块和应用程序等,并配置好各种初始化脚本文件,以及选择合适的文件系统类型并把它放到实际的存储设备的合适位置


Linux的根文件系统以树型结构组织,包含内核和系统管理所需要的各种文件和程序,一般说来根目录”/”下的顶层目录都有一些比较固定命名和用途。


下面列出了一个Linux根文件系统中的比较常见的目录结构:


/bin 存放二进制可执行命令的目录


该目录下存放所有用户都可以使用的、基本的命令,这些命令在挂接其它文件系统之前就可以使用,所以/bin目录必须和根文件系统在同一个分区中。


/bin目录下常用的命令有:cat,chgrp,chmod,cp,ls,sh,kill,mount,umount,mkdir,m knod,[,test等“[”命令其实就是test命令,我们在利用Busybox制作根文件系统时,在生成的bin目录下,可以看到一些可执行的文件,也就是可用的一些命令。


/dev 存放设备文件的目录


该目录下存放的是设备文件,设备文件是Linux中特有的文件类型,在Linux系统下,以文件的方式访问各种设备,即通过读写某个设备文件操作某个具体硬件。比如通过"dev/ttySAC0"文件可以操作串口0,通过"/dev/mtdblock1"可以访问MTD设备的第2个分区。


/etc 存放系统管理和配置文件的目录


该目录下存放着各种配置文件,对于PC上的Linux系统,/etc目录下的文件和目录非常多,这些目录文件是可选的,它们依赖于系统中所拥有的应用程序,依赖于这些程序是否需要配置文件。在嵌入式系统中,这些内容可以大为精减。


/home 用户主目录,比如用户user的主目录就是/home/user,可以用~user表示


用户目录,它是可选的,对于每个普通用户,在/home目录下都有一个以用户名命名的子目录,里面存放用户相关的配置文件。


/lib 存放动态链接共享库的目录


该目录下存放共享库和可加载(驱动程序),共享库用于启动系统。运行根文件系统中的可执行程序,比如:/bin /sbin 目录下的程序。


/sbin存放系统管理员使用的管理程序的目录


该目录下存放系统命令,即只有管理员能够使用的命令,系统命令还可以存放在/usr/sbin,/usr/local/sbin目录下,/sbin目录中存放的是基 本的系统命令,它们用于启动系统,修复系统等,与/bin目录相似,在挂接其他文件系统之前就可以使用/sbin,所以/sbin目录必须和根文件系统在同一个分区中。


/sbin目录下常用的命令有:shutdown reboot fdisk fsck等,本地用户自己安装的系统命令放在/usr/local/sbin目录下。


/tmp 公用的临时文件存储点


用于存放临时文件,通常是空目录,一些需要生成临时文件的程序用到的/tmp目录下,所以/tmp目录必须存在并可以访问。


/root 系统管理员的主目录


根用户的目录,与此对应,普通用户的目录是/home下的某个子目录。


/mnt 系统提供这个目录是让用户临时挂载其他的文件系统。


用于临时挂载某个文件系统的挂接点,通常是空目录,也可以在里面创建一引起空的子目录,比如/mnt/cdram /mnt/hda1 。用来临时挂载光盘、硬盘。


/proc 虚拟文件系统,可直接访问这个目录来获取系统信息。


这是一个空目录,常作为proc文件系统的挂接点,proc文件系统是个虚拟的文件系统,它没有实际的存储设备,里面的目录,文件都是由内核临时生成的,用来表示系统的运行状态,也可以操作其中的文件控制系统。


/usr 最庞大的目录,要用到的应用程序和文件几乎都在这个目录。


/usr目录的内容可以存在另一个分区中,在系统启动后再挂接到根文件系统中的/usr目录下。里面存放的是共享、只读的程序和数据,这表明/usr目录下的内容可以在多个主机间共享,这些主要也符合FHS标准的。/usr中的文件应该是只读的,其他主机相关的,可变的文件应该保存在其他目录下,比如/var。/usr目录在嵌入式中可以精减。


/var 某些大文件的溢出区


与/usr目录相反,/var目录中存放可变的数据,比如spool目录(mail,news),log文件,临时文件。


---------------------------------------------------------------------


一、移植环境:


1、  Ubuntu 10.10发行版


2、  u-boot.bin


3、  目标机:FS4412平台


4、  交叉编译器 arm-none-linux-gnueabi-gcc


---------------------------------------------------------------------


二、移植步骤


1、  源码下载


我们选择的版本是busybox-1.17.3.tar.bz2下载路径为:http://busybox.net/downloads/


2、  解压源码


$ tar xvf  busybox-1.17.3.tar.bz2

3、  进入源码目录


$ cd busybox-1.17.3

4、  配置源码


$ make menuconfig

Busybox Settings --->

       Build Options --->

              [*] Build BusyBox as a static binary (no shared libs)

              [ ] Force NOMMU build

              [ ] Build with Large File Support (for accessing files > 2 GB)

              (arm-cortex_a8-linux-gnueabi-) Cross Compiler prefix

              () Additional CFLAGS

5、  编译


$ make

6、  安装


busybox默认安装路径为源码目录下的_install


$ make install

7、  进入安装目录下


$ cd _install

$ ls

bin  linuxrc  sbin  usr

8、  创建其他需要的目录


$ mkdir  dev etc  mnt proc var tmp sys root

9、  添加库


在_install目录下创建一个lib文件夹,将工具链中的库拷贝到lib目录下


$ mkdir lib

$ cp /home/linux/x-tools/arm-cortex_a8-linux-gnueabi/arm-cortex_a8-linux-gnueabi/lib/*  ./lib/

删除lib下的所有目录、.o文件和.a文件,对库进行瘦身以减小文件系统的大小


$ rm *.o *.a

$ arm-cortex_a8-linux-gnueabi-strip  lib/*

10、 添加系统启动文件


在etc下添加文件inittab


$ vim /etc/inittab

文件内容如下:


#this is run first except when booting in single-user mode.

:: sysinit:/etc/init.d/rcS

# /bin/sh invocations on selected ttys

# Start an "askfirst" shell on the console (whatever that may be)

::askfirst:-/bin/sh

# Stuff to do when restarting the init process

::restart:/sbin/init

# Stuff to do before rebooting

::ctrlaltdel:/sbin/reboot

在etc下添加文件fstab


$ vim /etc/fstab

文件内容如下:


#device     mount-point     type        options         dump     fsck order

proc          /proc         proc        defaults        0          0

tmpfs      /tmp         tmpfs       defaults          0          0

sysfs         /sys          sysfs       defaults         0          0

tmpfs         /dev          tmpfs       defaults         0          0


这里我们挂在的文件系统有三个proc、sysfs和tmpfs,在内核中proc和sysfs默认都支持,而tmpfs是没有支持的,我们需要添加tmpfs的支持


修改内核配置:


$ make menuconfig

File systems --->

       Pseudo filesystems --->

              [*] Virtual memory file system support (former shm fs)

              [*] Tmpfs POSIX Access Control Lists

重新编译内核


$ make zImage

在etc下创建init.d目录,并在init.d下创建rcS文件


$ mkdir /etc/init.d -p

$ vim /etc/init.d/rcS

rcS文件内容为:


#!/bin/sh

# This is the first script called by init process

/bin/mount -a

为rcS添加可执行权限:


$ chmod  +x init.d/rcS

在etc下添加profile文件


$ vim /etc/profile

文件内容为:


#!/bin/sh

export HOSTNAME=farsight

export USER=root

export HOME=root

#export PS1="[u@h W]$ "

export PS1="[$USER@$HOSTNAME W]# "

PATH=/bin:/sbin:/usr/bin:/usr/sbin

LD_LIBRARY_PATH=/lib:/usr/lib:$LD_LIBRARY_PATH

export PATH LD_LIBRARY_PATH

11、 设备文件创建


根文件系统中有一个设备节点是必须的,在dev下创建console节点


$ mknod   dev/console  c 5 1

重要:新制作的文件系统尺寸若超出8M,删除不需要的库文件。

关键字:Exynos4412 引用地址:Exynos4412 文件系统制作(三)—— 文件系统移植

上一篇:Exynos4412 Uboot 移植(六)—— 相关知识补充
下一篇:Tiny4412裸机程序之代码重定位初体验

推荐阅读最新更新时间:2024-11-08 15:05

Exynos4412 Uboot 移植(四)—— Uboot引导内核过程分析
bootloader 要想启动内核,可以直接跳到内核的第一个指令处,即内核的起始地址,这样便可以完成内核的启动工作了。但是要想启动内核还需要满足一些条件,如下所示: 1、cpu 寄存器设置 * R0 = 0 * R1 = 机器类型 id * R2 = 启动参数在内存中的起始地址 2、cpu 模式 * 禁止所有中断 * 必须为SVC(超级用户)模式 3、Cache、MMU * 关闭 MMU * 指令Cache可以开启或者关闭 * 数据Cache必须关闭 4、设备 * DMA 设备应当停止工作 5、PC为内核的起始地址 这些需求都由 boot loader 实现
[单片机]
<font color='red'>Exynos4412</font> Uboot 移植(四)—— Uboot引导内核过程分析
Exynos4412 Uboot 的使用与烧写
Uboot版本:u-boot-2013.01 开发板:Exynos4412 本文主要是熟悉U-boot 的使用以及如何将Uboot 烧入Exynos4412。当然在这之前首先必须保证开发板上已经有了U-boot。如果没有,请先烧入一个已经编译好的Uboot.bin,可以利用JTAG或DNW。 一、环境搭建 为了方便开发,这里利用网络传输数据,主要用到 tftp 与 nfs。tftp用于数据传输,nfs用于挂载根文件系统。 1、tftp模式设置 具体配置可以移步 http://blog.csdn.net/zqixiao_09/article/details/50319877 ,这里使用tftp有两种模
[单片机]
基于S3C2440的busybox的移植 yaffs根文件系统制作
硬件平台:FL2440 操作系统:Linux2.6.28.7 交叉编译工具:arm-linux-gcc-3.4.1 飞凌公司默认的文件系统,不具有文件延伸功能,比如在/dev下有mmcblk0p1这个文件,在 挂载SD卡驱动时,需要敲入命令mount /dev/mmcblk0p1,如果具有延伸功能,在敲入mm后,可以直接按TAB键,如果/dev目录下只有一个以mm形状的文件,将会自动补全后面的字符。初步推断该功能应该为busybox集成,从网上下载busybox-1.9.2.tar.bz2,计划安装该版本的busybox。 第一步:下载busybox源代码:http://busybox.net/downloads/busybox-
[单片机]
基于S3C2440的busybox的移植 yaffs根<font color='red'>文件系统</font><font color='red'>制作</font>
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved