基于S3C2440的Linux内核移植和yaffs2文件系统制作--根文件系统

发布者:cyzcee最新更新时间:2019-03-07 来源: eefocus关键字:S3C2440  Linux  内核移植  根文件系统 手机看文章 扫描二维码
随时随地手机看文章

第二章 制作根文件系统

2.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、构建根文件按系统
2.2.1、建立根文件系统目录
进入到/opt/studyarm目录,新建建立根文件系统目录的脚本文件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.2、建立动态链接库
动态链接库直接用友善之臂的,先解压友善之臂的根文件包,拷贝lib的内容到新建的根文件目录lib内。

cd /mnt/hgfs/share

tar –zxvf root_qtopia.tgz –C /opt/studyarm

cp –rfd /opt/studyarm/root_qtopia/lib/* /opt/studyarm/rootfs/lib/*

2.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 /opt/studyarm

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

cd /opt/studyarm/busybox-1.13.3

修改:

       CROSS_COMPILE   ?=arm-linux-       //第164行

       ARCH                        ?=arm                  //第189行

3、配置busybox

输入make menuconfig进行配置

(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 buffer size ,in kilobytes      

[*]Use ioctl names rather than hex values 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消耗大量的内存。

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

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

Linux System Utilities  --->              

           [*]Support /etc/mdev.conf        

           [*]Support command execution at device addition/removal

4、 编译busybox

编译busybox到指定目录:

cd /opt/studyarm/busybox-1.13.3

make CONFIG_PREFIX=/opt/studyarm/rootfs install

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

2.2.4 建立etc目录下的配置文件
1、etc/mdev.conf文件,内容为空。

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

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

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 "****************Studying ARM*********************"

echo "Kernel version:linux-2.6.29.1"

echo "Student:Feng dong rui"

echo "Date:2009.07.15"

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.2.5 制作根文件系统映像文件
使用以下命令安装好yaffs文件系统制作工具:

cd /mnt/hgfs/share

tar –zxvf mkyaffs2image.tgz –C /

在/opt/studyarm目录下,使用命令mkyaffs2image rootfs rootfs.img生成根文件系统映像文件。


关键字:S3C2440  Linux  内核移植  根文件系统 引用地址:基于S3C2440的Linux内核移植和yaffs2文件系统制作--根文件系统

上一篇:基于S3C2440的Linux内核移植和yaffs2文件系统制作--启动系统
下一篇:基于S3C2440的Linux内核移植和yaffs2文件系统制作--编译内核

推荐阅读最新更新时间:2024-03-16 16:24

Linux驱动学习笔记之触摸屏驱动
触摸屏归纳为输入子系统,这里主要是针对电阻屏,其使用过程如下 当用触摸笔按下时,产生中断。 在中断处理函数处理函数中启动ADC转换x,y坐标。 ADC结束,产生ADC中断 在ADC中断处理函数里上报(input_event)启动定时器 再次启动定时器(可以处理滑动、长按) 松开按键 其驱动程序的写法和之前写输入子系统的写法基本上一致。 写出入口函数,出口函数并加以修饰,加入相关头文件,然后开始完善各函数,在入口函数中分配input_dev结构体,设置(能产生哪类事件,能产生这类事件中的哪些事件),注册设备,硬件相关的操作等。出口函数中主要对之前注册、分配的一些资源进行释放。 还应根据2440数据手册ADC转换和触摸屏那一章,对
[单片机]
从0开始学Keil下的S3C2440裸机开发-2使用外部SDRAM
和使用内部RAM一样,关键设置分散加载文件,同时设置JLINK初始化配置文件。 1、新增工程配置组。 2设置分散加载组 3设置ini文件 Ext_Ram内容: FUNC void SetupForStart (void) { // o Program Entry Point PC = 0x30000000; } FUNC void Init (void) { _WDWORD(0x4A000008, 0xFFFFFFFF); // Disable All Interrupts _WDWORD(0x53000000, 0x00000000); // Disable Watchdog Timer
[单片机]
从0开始学Keil下的<font color='red'>S3C2440</font>裸机开发-2使用外部SDRAM
s3c2440触摸屏测试
* 文件名:main.c * 功能:测试TFT屏的驱动函数 * 作者:jianqi * 版本:v1.0 #include 2440addr.h //包含2440相关寄存器的设置 #include TFT.h #include Touch.h #include MMU.h #include UART.h volatile int A,B,C,D,E,F,K; //校正参数 int flagTS=0; //触摸屏转换标志 int xdata,ydata; //触摸屏A/D转换数据 * 名称:Touch_Int * 功能:触摸屏中断程序,读取A/D转换的值 * 入口参数:无 * 出口参数:无 void __irq
[单片机]
s3c2440 ads程序移植到keil中(二) 初步完成
如果我把参数配置发生改变呢 然后再一次编译 要包错误 如下所示 错误如下 这个错误解决不了 最后查看了网上网友的方法 又可以修改 但是引入了nand文件 最后反正知道了2440init.s文件要修改许多 所以我就不再这里继续整了 浪费时间 直接运用网上网友的东西即可 网友编写的地址 https://blog.csdn.net/hannibaychty/article/details/44873327 从买板子到现在,想想也有2个月啦,开始就想跑裸奔的,可是工程都是在ADS下,win7系统根本不能用,于是就想着怎么在MDK跑,可是MDK上s3c2440的启动文件是不完整的,因此不推荐使用,为此蛋疼聊好长一段时间,查了很
[单片机]
<font color='red'>s3c2440</font> ads程序<font color='red'>移植</font>到keil中(二) 初步完成
s3c2440液晶屏驱动 (内核自带) linux-4.1.24
自带有一部分驱动的配置信息,只要修改这部分就能支援 不同的液晶屏 - /arch/arm/mach-s3c24xx/mach-smdk2440.c 另一部分在 /drivers/video/fbdev/s3c2410fb.c 先打开调试功能,这样内核在启动的时候,就可以输出这些信息,或者使用 dmesg 查看到这些信息。当然,你配置内核 make menuconfig 也可以打开,但是太麻烦了,不如这样。 1 #define CONFIG_FB_S3C2410_DEBUG 2 #define dprintk(msg...) 3 do { 4 if (debug) 5 printk(msg);
[单片机]
<font color='red'>s3c2440</font>液晶屏驱动 (<font color='red'>内核</font>自带) <font color='red'>linux</font>-4.1.24
linux 上 对 MSP430G2 系列进行 debug
本文介绍如何在 linux 系统上对 MSP430 程序进行 debug。包括程序的编译、下载、运行、调试以及 vim 编辑器自动补全设置。 工具 在本方案中,需要用到的主要工具包括 TI 官方提供的 IDE——CCS,mspdebug,msp430-elf-gdb,vim/neovim。 注意,CCS 的 linux 版本不支持连接 MSP430G2 系列的开发板,否则就没那么多麻烦了。在本方案中,该 IDE 只作为编译工具使用。 TI 官方提供的 msp430-gcc 虽然可以编译程序,但是缺少部分头文件。下面将介绍配置 GCC 的相关内容,但不建议作为编译工具使用。 配置 安装工具 安装 CCS、mspdeb
[单片机]
I2S音频总线学习(三)S3C2440的I2S控制器
在自己的产品测试中 子机正常模式下运行毫无问题 都正常 但是远程主机端 一直发送数据 ,就会导致产品lcd花屏 串口死机 而且显示lcd花屏 串口后面才死机的的 两者死机间隔时间有长有短 不必深究,通过其他没有接在总线上的子机对比来看 是串口惹的货。 lcd花屏 肯定是全局变量自己变化了的 是内存泄露或者覆盖问题 串口接收死机 并非子机死机 ,而是串口接收不到数据了。 实验中 接收不到数据的现象可以分为下面原因 1 这里的接收不到数据我们不能单一的理解为串口中断死掉了 这是不可能的(通常情况下) 2 我们接收中断被发射中断阻挡了即 发送中断 一直在发数据(之前是死循环等待发送完成 而呈现中有看门狗 所以
[单片机]
I2S音频总线学习(三)<font color='red'>S3C2440</font>的I2S控制器
卓然推出基于Linux的固件平台Inferno
卓然公司(纳斯达克证券交易所代码:ZRAN)宣布推出基于Linux操作系统的新固件开发平台 Inferno,它用于Quatro®系列处理器,可以协助制造商轻松集成新技术,支持高级功能,并提高打印机、多功能打印机(MFP)和扫描仪的性能。 原始设备制造商(OEM)面临持续竞争压力,需要以更低廉的价格制造更多功能全面的高速打印机、多功能打印机以及扫描仪。按照以往的惯例,OEM厂商一直选择封闭的私有环境。而卓然的Inferno另辟蹊径,采用常见的开放式源代码环境——即嵌入式Linux,为开发下一代打印机、多功能打印机及扫描仪提供了更加丰富的功能、应用和工具,并进一步提升产品性能。 采用Linux的Inferno平台的优势
[嵌入式]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
热门活动
换一批
更多
设计资源 培训 开发板 精华推荐

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

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

更多精选电路图
换一换 更多 相关热搜器件
更多每日新闻
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved