linux系统建立文件系统,linux文件系统的建立

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生成根文件系统映像文件。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/508072.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux防火墙配置管理,Linux之Iptables防火墙管理与配置 -电脑资料

基本语法格式:iptables [ –t 表名 ] 命令选项 [ 链名 ] [ 条件匹配 ] [ –j 目标动作或跳转 ]Tip:若不指定表名,默认使用filter表,常用选项:-A:在指定链的末尾添加( –append )一条新规则。-D:…

linux双屏播放视频,Ubuntu Linux下双屏显示解决方案

Ubuntu从起后居然把Windows的设置给记住了。显示ok。我晕。以前倒是也有过这问题,在双系统情况下,外接键盘的灯会继承Windows的早就有心弄个显示器,把笔记本的外接上,倒不是说非要2个屏幕来工作如何如何?只是因为我的本…

d630 无线驱动 linux,fedora 8下DELL D630无线网卡驱动的安装

fedora 8下DELL D630无线网卡驱动的安装发布时间:2007-11-19 01:53:26来源:红联作者:Cantonese作者是dypang我的电脑是 DELL D630,无线网卡型号为 DELL wireless 1390 mini card。F8在 D630 上安装是很容易的,只是无线网卡的按照颇费了些周折。以下是我装…

鸟哥linux群,【鸟哥的linux私房菜-学习笔记】linux的帐号与群组

linux的帐号与群组使用者标识符: UID 与 GIDID 与账号的对应就在 /etc/passwd 当中;计算机只认得ID(即数字),并不能区别账号;每个登陆的使用者至少都会取得两个 ID ,一个是使用者 ID (User ID ,简称 UID)、…

linux网络编程 华清,Linux网络编程之套接字

一 :套接字属性套接字由域(domain),类型(type)和协议(protocol)三个属性确定其特性。1)套接字的域域指定套接字通信中使用的网络 介质,常见的套接字域是AF_INET,它指的是互联网络,许多LINUX局域网使用的都是该网络。服…

用数据结构c语言写成绩排序,C语言数据结构 快速排序实例详解

C语言数据结构 快速排序实例详解一、快速排序简介快速排序采用分治的思想,第一趟先将一串数字分为两部分,第一部分的数值都比第二部分要小,然后按照这种方法,依次对两边的数据进行排序。二、代码实现#include /* 将两个数据交换 *…

c语言进制转换pdf下载,C语言 十六进制和十进制间的转换.pdf

1.将十六进制转换为十进制.#include#includeint main(void){int convert(int,char *);int i,j ;char m[20];printf("请输入你要转换的数:");scanf("%s",m);i 0;while(*(mi)! \0){i;}j convert(--i,m);printf("转换为十进制是:%d\n",j );return 0…

c语言 为什么i%3cn 1,c语言中n+1个基础且容易出错的知识点

前言为什么称为是n1呢,因为我会持续更新本条博客。1.“/”与“%”基本用法除法运算符“/” :二元运算符,具有左结合性。参与运算的量均为整形时,结果为整型,舍去小数。如果运算量中有一个实型,结果为双精度…

第二次上机报告c语言,第二次C语言设计上机报告

任务一:显示美元与人民币的汇率。实验内容:编写一个“美元与人民币汇率”的C程序。实验目的:进一步掌握C程序的编写和运行的结果。我的程序//***********************************#includeint main(){int dollar,RMB;int lower,upper,step;lo…

c语言使用循环编写勾股数,刘徽《九章算术》中的勾股数

若A、B、C为满足A2B2C2的正整数。我国古代数学书《周髀算经》曾经提到“勾广三,股修四,径偶五”这三个边都是正整数的直角三角形。在公元263年时,我国数学家:刘徽写了一本数学书,书名叫作《九章算术》,其中…

c语言边序列构造邻接表,结构C语言版期末考试考试(有答案).doc

人生难得几回搏,此时不搏更待何时?"数据结构"期末考试试题一、单选题(每小题2分共12分)1.在一个单链表HL中若要向表头插入一个由指针p指向的结点则执行( )A. HL=ps p一>next=HLB. …

c语言打不开h文件,说那个“mem.h”头文件打不开 怎么改啊 高手们帮帮忙

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼#include "stdio.h"#include "stdlib.h"#include "string.h"#include "conio.h"#include "mem.h"#include "ctype.h"#include "alloc.h"struct score{char…

C语言中表示温度符号,摄氏度符号怎么打(SCI论文中摄氏度°C符号的正确输法)...

大家可能知道中文的摄氏度百思特网是一个字符,而且输入方法比较简单,可以用搜狗输入法,还可以输入 "sheshidu",第五个一般就是℃,甚至可以在网上或文献中复制粘贴。而英文的摄氏度C 却是两个字符&#xff0c…

利用spi发送接收信息c语言,SPI接收发送函数程序

unsigned char SPI_RW(unsigned char byte){?? ?unsigned char bit_ctr;?? ?for(bit_ctr0;bit_ctr<8;bit_ctr)?? ?{?? ??? ?NRF_MOSI(byte&0x80); // MSB TO MOSI?? ??? ?byte(byte<<1);?? ?// shift next bit to MSB?? ??? ?NRF_S…

android 跳转权限管理的代码,Android权限管理

Android权限管理说明在targetSdkVersion的值为23或者更高&#xff0c;就要进行权限管理&#xff0c;否则如果运行在Android6.0或以上的设备会没有相应权限而导致崩溃请求权限后&#xff0c;在onRequestPermissionsResult方法回调&#xff0c;在该方法判断三种状态&#xff1a;允…

android filehelper,为AndroidStudio开发mvp插件(MvpHelper)

如果觉得写mvp有点枯燥无味&#xff0c;我们可以做点 cool 的事情&#xff1a;做个 as 插件help.pngtodo-mvp: 基础的MVP架构。todo-mvp-loaders:基于MVP架构的实现&#xff0c;在获取数据的部分采用了loaders架构。todo-mvp-databinding: 基于MVP架构的实现&#xff0c;采用了…

android+5.q,MSM8909+Android5.1.1电池管理(2)--qpnp-linear-charger.txt驱动学习概要

MSM8909Android5.1.1电池管理(2)--qpnp-linear-charger.txt驱动学习概要参考文件\kernel\Documentation\power\qpnp-linear-charger.txt---下面是学习此文件\kernel\Documentation\devicetree\bindings\power\qpnp-linear-charger.txt1. 简介The QPNP linear charger drive…

岳阳鸿蒙数学培优阶梯训练,鸿蒙应用-呼吸训练app部分练习展示(开始)

本帖最后由 李洋水蛟龙 于 2020-12-20 18:11 编辑1.在主页面添加一个按钮并响应点击事件效果显示&#xff1a;图片1.png (404.17 KB, 下载次数: 0)2020-12-10 17:53 上传点击按钮“点我”下方便会显示“我被点击了”说明点击事件已完成代码如下&#xff1a;Index.hml文件中Hell…

Android无法优化应用,Android应用优化总结

原标题&#xff1a;Android应用优化总结内存泄漏最常见也是最严重的 &#xff1a;持有Activity 与Context引用&#xff0c;生命周期本该短于应用生命周期&#xff0c;该回收的没被回收掉&#xff0c;导致泄露检测手段&#xff1a;leakcanary mit等Handler泄露new Handler 替换为…

android日期选择滚轮框架,GitHub - liwenzhi/wheelview: 滚轮效果的View,日期选择器

#wheelview滚动效果的View这段时间需要用到一个时间选择器&#xff0c;但是不能使用日期对话框&#xff0c;因为它是筛选条件框架下的&#xff0c;只能是View&#xff01;这个WheelView改造后可以达到要求&#xff01;这个wheelview框架使用的类不多&#xff0c;就几个&#xf…