1

根文件系统

嵌入式Linux中都需要构建根文件系统,构建根文件系统的规则在FHS(Filesystem Hierarchy

Standard)文档中,下面是根文件系统顶层目录。

目录

内容

bin

存放所有用户都可以使用的、基本的命令。

sbin

存放的是基本的系统命令,它们用于启动系统、修复系统等。

usr

里面存放的是共享、只读的程序和数据。

proc

这是个空目录,常作为proc文件系统的挂载点。

dev

该目录存放设备文件和其它特殊文件。

etc

存放系统配置文件,包括启动文件。

lib

存放共享库和可加载块(即驱动程序),共享库用于启动系统、运行根文件系统中的可执行程序。

boot

引导加载程序使用的静态文件

home

用户主目录,包括供服务账号锁使用的主目录,如FTP

mnt

用于临时挂接某个文件系统的挂接点,通常是空目录。也可以在里面创建空的子目录。

opt

给主机额外安装软件所摆放的目录。

root

root用户的主目录

tmp

存放临时文件,通常是空目录。

var

存放可变的数据。

2、构建根文件按系统

2.1、建立根文件系统目录

进入到/opt/st

yarm目录,新建建立根文件系统目录的脚本文件create_rootfs_bash,使用命令chmod +x

create_rootfs_bash改变文件的可执行权限,./create_rootfs_bash运行脚本,就完成了根文件系统目录的创建。

#!/bin/sh

echo "------Create

rootfs directons start...--------"

mkdir

rootfs

cd

rootfs

echo

"--------Create root,dev....----------"

mkdir root dev etc

boot tmp var sys proc lib mnt home

mkdir etc/init.d

etc/rc.d etc/sysconfig

mkdir usr/sbin

usr/bin usr/lib usr/modules

echo "make node in

dev/console dev/null"

mknod -m 600

dev/console c 5 1

mknod -m 600

dev/null

c 1 3

mkdir mnt/etc

mnt/jffs2 mnt/yaffs mnt/data mnt/temp

mkdir var/lib

var/lock var/run var/tmp

chmod 1777

tmp

chmod 1777

var/tmp

echo "-------make

direction done---------"

改变了tmp目录的使用权,让它开启sticky位,为tmp目录的使用权开启此位,可确保tmp目录底下建立的文件,只有建立它的用户有权删除。尽管嵌入式系统多半是单用户,不过有些嵌入式应用不一定用root的权限来执行,因此需要遵照根文件系统权限位的基本规定来设计。

2.2、建立动态链接库

动态链接库直接用友善之臂的,先解压友善之臂的根文件包,拷贝lib的内容到新建的根文件目录lib内。

cd

/mnt/hgfs/share

tar

–zxvf root_qtopia.tgz –C /home

cp –rfd

/hmoe/root_qtopia/lib/* /fs/rootfs/lib/*

2.3

交叉编译Bosybox

Bosybox是一个遵循GPL v2协议的开源项目,它在编写过程总对文件大小进行优化,并考虑了系统资源有限(比如内存等)的情况,使用Busybox可以自动生成根文件系统所需的bin、sbin、usr目录和linuxrc文件。

1、解压busybox

cd

/mnt/hgfs/share

tar

–zxvf busybox-1.13.3.tar.tgz –C /home

2、进入源码,修改Makefile文件:

cd

/home/busybox-1.13.3

修改:

CROSS_COMPILE

?=arm-linux-

//第164行

ARCH

?=arm

//第189行

3、配置busybox

输入make men

onfig进行配置

(1)、Busybox

Settings--->

General Configuration--->

[*] Show verbose applet usage messages

[*] Store applet usage messages in compressed form

[*] Support –install [-s] to install applet links at

runtime

[*] Enable locale support(system needs locale for this to

work)

[*] Support for –long-options

[*] Use the devpts filesystem for unix98 PTYs

[*] Support writing pidfiles

[*] Runtime SUID/SGID configuration via

/etc/busybox.config

[*] Suppress warning message if

/etc/busybox.conf is not readable

Build

Options--->

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

[*] Build with Large File Support(for accessing

files>2GB)

Installation

Options->

[]Don’t use /usr

Applets links (as soft-links) --->

(./_install) BusyBox installation prefix

Busybox Library

Tuning --->

(6)Minimum password legth

(2)MD5:Trade Bytes for Speed

[*]Fsater /proc scanning code(+100bytes)

[*]Command line editing

(1024)Maximum length of input

[*] vi-style line

editing commands

(15) History size

[*] History

saving

[*] Tab

completion

[*]Fancy shell prompts

(4) Copy b?r size ,in

kilobytes

[*]Use ioctl names

rather than hex vals in error messages

[*]Support

infiniband HW

(2)、Linux Module

Utilities--->

(/lib/modules)Default directory containing modules

(modules.dep)Default name of modules.dep

[*]

insmod

[*]

rmmod

[*]

lsmod

[*]

modprobe

-----options common to multiple modutils

[ ]

support version 2.2/2.4 Linux kernels

[*]Support tainted module checking with new

kernels

[*]Support for module .aliases file

[*]

support for modules.symbols file

(3)、在busybox中配置对dev下设备类型的支持

dev的创建有三种方法:

手动创建:在制作根文件系统的时候,就在dev目录下创建好要使用的设备文件,系统挂接根文件系统后,就可以使用dev目录下的设备文件了。

使用devfs文件系统:这种方法已经过时,具有不确定的设备映射、没有足够的主/次设备号、devfs消耗大量的内存。

ev:它是个用户程序,能根据系统中硬件设备的状态动态的更新设备文件,包括设备文件的创建、删除等。它的操作相对复杂,但灵活性很高

mdev是busybox自带的一个简化版的 ev,适合于嵌入式的应用埸合。其具有使用简单的特点。它的作用,就是在系统启动和热插拔或动态加载驱动程序时,自动产生驱动程序所需的节点文件。在以busybox为基础构建嵌入式linux的根文件系统时,使用它是最优的选择。下面的选项将增加对mdev的支持。

Linux System

Utilities

--->

[*]Support

/etc/mdev.conf

[*]Support command execution at device addition/removal

4、 编译busybox

编译busybox到指定目录:

cd

/home/busybox-1.13.3

make

CONFIG_PREFIX=/fs/rootfs install

在rootfs目录下会生成目录bin、sbin、usr和文件linuxrc的内容。

2.4

建立etc目录下的配置文件

1、etc/mdev.conf文件,内容为空。

2、拷贝主机etc目录下的passwd、group、shadow文件到rootfs/etc目录下。

3、etc/sysconfig目录下新建文件HOSTNAME,内容为”MrHung”。

4、etc/inittab文件:

#etc/inittab

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

::askfirst:-/bin/sh

::ctrlaltdel:/sbin/reboot

::shutdown:/bin/umount -a –r

5、etc/init.d/rcS文件:

#!/bin/sh

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

runlevel=S

prevlevel=N

umask

022

export PATH

runlevel prevlevel

echo

"----------munt all----------------"

mount

-a

echo

/sbin/mdev>/proc/sys/kernel/hotplug

mdev -s

echo

"***********************************************"

echo

"****************St ying ARM*********************"

echo "Kernel

version:linux-2.6.32.2"

echo "St

ent:Huang"

echo

"Date:2011.07.9"

echo

"***********************************************"

/bin/hostname -F

/etc/sysconfig/HOSTNAME

使用以下命令改变rcS的执行权限:

Chmod

+x rcS

6、etc/fstab文件:

#device

mount-point

type

option

dump

fsck

order

proc

/proc

proc

defaults

0

0

none

/tmp

ramfs

defaults

0

0

sysfs

/sys

sysfs

defaults

0

0

mdev

/dev

ramfs

defaults

0

0

7、 etc/profile文件:

#Ash

profile

#vim:syntax=sh

#No core file by

defaults

#ulimit -S -c

0>/dev/null

2>&1

USER="id

-un"

LOGNAME=$USER

PS1='[\u@\h

\W]#'

PATH=$PATH

HOSTNAME='/bin/hostname'

export USER

LOGNAME PS1 PATH

2.5

制作根文件系统映像文件

使用以下命令安装好yaffs文件系统制作工具:

tar

–zxvf mkyaffs2image.tgz –C /

在/目录下,使用命令mkyaffs2image-128M

rootfs rootfs.img生成根文件系统映像文件。

linux系统建立文件系统,linux文件系统的建立相关推荐

  1. 嵌入式linux系统中常用的文件系统

    原文:https://blog.csdn.net/li_wen01/article/details/80090624 嵌入式linux系统中常用的文件系统: 闪存主要有NOR和NAND两种技术:因为F ...

  2. linux系统可支持多种文件系统类型,Linux文件系统类型简介及支持的文件系统汇总--Linux入门到精通系列...

    不同的操作系统需要使用不同类型的文件系统,为了与其他操作系统兼容,以相互交换数据,通常操作系统都能支持多种类型的文件系统,比如Windows 2000 Server,系统默认或推荐采用的文件系统是NT ...

  3. linux下efs加密技术,在Linux系统中的加密文件系统应用(EFS)

    在Linux系统中的加密文件系统应用(EFS) 开源系统在企业中尤其是在服务器的构建和数据存储中得到了普遍的应用和推广,其安全问题得到了大家的关注.基于这些考虑,开源系统在数据安全方面提供了许多优秀和 ...

  4. Linux系统如何支持NTFS文件系统?

    由于Linux系统默认是不支持NTFS文件系统的,因此,我们基本不能在Linux系统中挂载NTFS文件系统类型的硬盘或移动硬盘. 为此,最主要的问题是如何使Linux系统支持NTFS文件系统. 一般情 ...

  5. 外网访问arm嵌入式linux系统_嵌入式Linux系统移植的四大步骤

    最近在学习系统移植的相关知识,在学习和调试过程中,发现了很多问题,也解决了很多问题,但总是对于我们的开发结果有一种莫名其妙的感觉,纠其原因,主要对于我们的开发环境没有一个深刻的认识,有时候几个简单的命 ...

  6. imx6ull移植Linux系统第二篇——Linux内核的移植

    imx6ull移植Linux系统第二篇--Linux内核的移植 花了大概两周的时间,把Linux的移植认真学了一遍,期间踩了不少坑,花费了不少时间去解决各种奇奇怪怪的问题,最终完成了uboot.系统镜 ...

  7. Linux系统之部署Linux管理面板1Panel

    Linux系统之部署Linux管理面板1Panel 一.1Panel介绍 1.1Panel简介 2.1Panel特点 二.本地环境规划 1.本此实践目的 2.本地环境规划 三.检查本地环境 1.检查操 ...

  8. 连接linux系统的mysql,Linux系统MySQL开启远程连接

    1.远程连接上Linux系统,确保Linux系统已经安装上了MySQL数据库.登陆数据库.mysql -uroot -p(密码). 2.创建用户用来远程连接 GRANT ALL PRIVILEGES ...

  9. Alpine linux 小内存版,Alpine Linux系统-Alpine Linux系统【轻量级Linux】下载v3.11.0 最新版-西西软件下载...

    Alpine Linux系统[轻量级Linux],Alpine Linux其实就是一个清凉版的Linux系统,通过牺牲一些不常用的功能和特性来达到更加轻巧的体积以及更快的响应速度.Alpine Lin ...

  10. linux系统清理内存,Linux实验室:五个清理磁盘空间小妙招

    1删除安装包:清空系统APT缓存 玩儿电脑最怕的就是卡慢,那么电脑卡慢应该怎么解决呢?对于windows系统来说,你可能有各种免费的杀毒软件.全家桶帮你清空系统空间,那么Linux系统怎么办?今天笔者 ...

最新文章

  1. 剑指offer:面试题35. 复杂链表的复制
  2. 历年双11实战经历者:我们是如何做数据库性能优化及运维-CloudDBA和天象
  3. java冒泡排序_Java冒泡排序,鸡尾酒排序
  4. 计算机基础与应用23页思考与实训,《计算机基础与应用》实训作业三
  5. java模拟Digest.认证
  6. 《Linux From Scratch》第一部分:介绍 第一章:介绍-1.3. 更新日志
  7. 人工智能 信道估计 深度学习_深度学习人体姿态估计算法综述
  8. tensorflow只用CPU运行的方法
  9. python 连接数据库 慢_python自动结束mysql慢查询会话的实例代码
  10. 李沐亚马逊资深首席科学家 - 动手学深度学习v2 -2安装
  11. BXP千兆无盘网吧解决方案(转)
  12. 阿尔伯塔计算机硕士录取,阿尔伯塔大学计算机工程专业硕士.pdf
  13. C++ 小游戏 视频及资料集(3)
  14. SMAA算法详解 - SMAANeighborhoodBlendingPS
  15. Edge的新标签页设置
  16. Play 1.x 学习资料汇总
  17. tsc打印机android,使用热敏打印机Android打印条形码
  18. 等保2.0(信息安全等级保护)全面解读
  19. DeBreath 去除呼吸声vst插件中文文档(翻译)
  20. WIFI小车APP远程控制,无线智能小车之ESP8266例程

热门文章

  1. 使用SDK进行二次开发流程简述
  2. iOS中的XML解析
  3. python在统计专业的应用_Python:使用Counter进行计数统计
  4. HTML的格式化应用
  5. 企业门户网站服务器,企业或个人门户网站对服务器前的重要准备 - 酷番云
  6. dedecms 漏洞_dedescan一款织梦漏洞扫描器
  7. python处理滑块验证码_使用python实现滑动验证码
  8. 捷波朗STORM耳机设置中文_2020年 除了Airpods pro以外无线降噪蓝牙耳机如何选?五款热门入耳式蓝牙降噪耳机推荐...
  9. 【LeetCode笔记】剑指Offer 37. 序列化二叉树(Java、二叉树、序列化、BFS、队列)
  10. python中提供怎样的内置库、可以用来创建用户界面_使用外部GUI库在Autodesk中创建用户界面可能会...