S5PV210根文件系统的制作(一)

一、基本概念

文件管理:数据管理算法

文件系统:管理文件算法的载体

文件系统的功能:管理分区上的数据(增删查改)

文件系统的分类:fat32/ntfs/ext3/ext4/yaffs/jffs/cramfs/.....

文件系统的表现形态:

  window--------->森林

  linux------------>树 ------->文件目录标准

文件系统与根文件系统:

  根文件系统:  系统启动时加载的助文件系统

  其他文件系统:  根系统启动后挂载的其他文件系统

二、需要用到的工具

busybox-1.20.2.tar,yaffs2-source,bash-4.0.tar

下载地址:http://pan.baidu.com/s/1ntmMh5Z

三、根文件系统镜像设计

1)建立标准的linux文件目录(必备)

  /sbin  ------->超级用户工具命令

  /etc  --------->系统配置文件

  /bin  ---------->通用工具命令

  /dev  ---------->设备文件目录

  /lib  ------------>库文件目录  --------------->静态库、动态库

  命令: 

1 mkdir  /home/gec/build_rootfs
2
3 cd  /home/gec/build_rootfs
4 mkdir rootfs   ----->  创建根文件系统主目录  ----->   /
5
6 cd rootfs
7 mkdir {sbin,bin,dev,lib,etc}

2)配置busybox

  1.解压,并进入目录

# tar jxvf busybox-1.20.2.tar.bz2
# cd busybox-1.20.2

  2.修改Makefile中的体系结构ARCH和交叉编译器前缀CROSS_COMPILE

# vim Makefile修改:
CROSS_COMPILE = /usr/local/arm/arm-2009q3/bin/arm-none-linux-gnueabi-
ARCH = arm

  3.通过menuconfig配置busybox

  BusyBox的配置程序和linux内核菜单项配置方式简直一模一样。熟悉用make menuconfig方式配置linux内核的朋友很容易上手。

# make menuconfig

选上以下几项:

Busybox Settings --->
  General Configuration  --->
     [*] Don‘t use /usr
  Build Options --->
      [*] Build BusyBox as a static binary (no shared libs)
这个选项是一定要选上,这样才能把BusyBox编译成静态链接的可执行文件,运行时才独立于其他函数库,否则需要其他库文件才能运行BusyBox。
  Busybox Library Tuning --->
      [*] vi-style line editing commands
选上VI风格的行编辑器命令。
      [*] Fancy shell prompts
  Installation Options ("make install" behavior)  --->
      (/home/gec/build_rootfs/rootfs) BusyBox installation prefix //安装目标路径
Linux Module Utilities --->
        [ ] Simplified modutils
        [*] insmod
        [*] rmmod
        [*] lsmod
        [*] modprobe
        [*] depmod
取消选中Simplified modutils,使用完整的模块工具命令:insmod、rmmod……

  确保支持mdev(mdev是udev设备文件系统的精简版),确保以下几项被选中:

Linux System Utilities ---> [*] mdev
       [*] Support /etc/mdev.conf
       [*] Support subdirs/symlinks
       [*] Support regular expressions substitutions when renaming dev
       [*] Support command execution at device addition/removal
       [*] Support loading of firmwares

  其它选项都是一些linux基本命令选项,自己需要哪些命令就编译进去,一般用默认的就可以了,配置好后退出并保存。

  4.编译BusyBox,并安装。

编译:
# make -j2         // j2表示创建两个线程进行编译

安装:
# make install

  在busybox-1.20.2目录下可以找到_install子目录,这就是刚才的安装目录。

下面的操作在rootfs目录进行

3)拷贝交叉编译器里的动态链接库到lib目录

  只需要拷贝交叉编译器里的动态链接库及其软链接到lib目录就好了,静态链接库不用拷贝:

# cp /usr/local/arm/arm-2009q3/arm-none-linux-gnueabi/libc/armv4t/lib/*so* lib -rdf

  注意:使用cp工具拷贝链接一定要使用d选项,表示拷贝的文件带链接属性。

4)对lib目录下的动态链接库进行裁剪

  动态链接库包括了符号信息,可以去掉不必要的符号信息,使用动态链接库变得更小巧:

# arm-none-linux-gnueabi-strip lib/*so*

5)修改脚本文件

  1.etc/inittab文件是启动流程文件。

#vi etc/inittab

内容:
::sysinit:/etc/init.d/rcS
::askfirst:/bin/sh    //::respawn:/bin/bash
::once:/etc/local.rc
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount -a -r
::restart:/sbin/init

  2./etc/init.d/rcS脚本。

#vi etc/init.d/rcS

内容:
#!/bin/sh
export PATH=/sbin:/bin:/usr/sbin:/usr/bin        //设置变量PATH

mount -a                                    //mount -a会读取etc/fstab完成文件系统挂载

echo /sbin/mdev > /proc/sys/kernel/hotplug           //当内核有热插拨事件时调用/sbin/mdev
mdev -s                                      //启动mdev

#ifconfig eth0 192.168.0.80               //配置以太网接口0的IP地址
                        

  3.etc/fstab文件。

# <file system> <mount point> <type> <options> <dump> <pass>
     proc                  /proc             proc    defaults      0           0
     sysfs                 /sys              sysfs   defaults      0           0
     tmpfs                 /dev              tmpfs   defaults     0          0
     tmpfs                /tmp              tmpfs   defaults     0           0
     tmpfs                /dev               tmpfs   defaults     0           0

  /proc目录挂载了procfs文件系统,/sys目录挂载了sysfs文件系统,var和tmp及dev目录挂载的是tmpfs临时文件系统。

  创建mdev.conf文件:

touch /rootfs/etc/mdev.conf

  附:修改好的etc目录:

  http://pan.baidu.com/s/1pJ4sX2j

6)设置动态库的加载路径

  修改 etc/init.d/rcS ,添加:

export LD_LIBRARY_PATH=/mylib:$LD_LIBRARY_PATH

7)添加bash

  1.配置,编译,生成。

配置bash:
#./configure   --host=arm-linux
编译:
#make

生成:
#make install
得到bash    -----> 放到开发板文件系统的/bin目录下,检查该程序所需的动态库是否具备

  2.修改inittab脚本

#!/bin/bash
::askfirst:/bin/bash

  3.修改其他脚本的声明

#!/bin/sh    -->  #!/bin/bash

  4.添加etc/profile  ---->  启动bash时系统默认的执行脚本

# Ash profile
# No core files by default

ulimit -S -c 0 > /dev/null 2>&1

USER="`id -un`"
LOGNAME=$USER
PS1=‘[\[email protected]\h \W]# ‘
PATH=$PATH
HOSTNAME=`/bin/hostname`
export USER LOGNAME PS1 PATH
export LD_LIBRARY_PATH=lib:/usr/lib:$LD_LIBRARY_PATH

四、构建根文件系统镜像

  1.获取mkyaffs2image工具的源码包

  下载地址:

  http://fatplus.googlecode.com/files/yaffs2-source.tar

  2. 编译mkyaffs2image工具

# tar xvf yaffs2-source.tar
# cd yaffs2/utils
# make
# cp mkyaffs2image /usr/local/bin/

  3.制作根文件系统镜像

  进入/root目录

# mkyaffs2image  rootfs  rootfs.img

五、根文件系统镜像rootfs.img下载与烧写

  下面的操作在开发板复位后的u-boot下载阶段进行:

SMDKV210 # nand erase 0xe00000 0xF200000
SMDKV210 # tftp 0x40000000 rootfs.img
SMDKV210 # nand write.yaffs 0x40000000 0xe00000 0x6aa340 (要把最后一个数字改为实际u-boot下载传输的字节数)
SMDKV210 # set bootargs root=/dev/mtdblock4 rootfstype=yaffs2  rw console=ttySAC0,115200

时间: 2024-10-13 10:40:08

S5PV210根文件系统的制作(一)的相关文章

根文件系统的制作

根文件系统的制作 嵌入式系统包含多个文件系统但是第一个(根文件系统)是必须的. 一.创建目录 # mkdir rootfs # cd rootfs # mkdir bin dev etc lib proc sbin sys usr mnt tmp var # mkdir usr/bin usr/lib usr/sbin lib/modules 二.创建设备文件 # cd rootfs/dev # mknod -m 666 console c 5 1 # mknod -m 666 null c 1

linux 内核移植和根文件系统的制作

1.1 Linux内核基础知识 在动手进行Linux内核移植之前,非常有必要对Linux内核进行一定的了解,下面从Linux内核的版本和分类说起. 1.1.1  Linux版本 Linux内核的版本号可以从源代码的顶层目录下的Makefile中看到,比如2.6.29.1内核的Makefile中: VERSION = 2 PATCHLEVEL = 6 SUBLEVEL = 29 EXTRAVERSION = .1 其 中的“VERSION”和“PATCHLEVEL”组成主版本号,比如2.4.2.5

Busybox构建根文件系统和制作Ramdisk

定制根文件系统的方法很多,最常用的是使用BusyBox来构建定制根文件系统.它集成压缩了Linux的许多工具和命令,可以使用户迅速方便地建立一套相对完整.功能丰富的文件系统,其中包括大量常用的应用程序.下面详细介绍有关Busybox定制根文件系统. 一.系统环境: 1.操作系统:Ubuntu140.4 2.交叉编译工具:gcc version 6.1.1 20160711 (Linaro GCC 6.1-2016.08) 3.busybox源码包:busybox-1.26.2 二.构建rootf

Linux 根文件系统的制作

一.建立根文件系统目录与文件 1. 创建目录 #mkdir rootfs #cd rootfs #mkdir bin dev etc lib proc sbin sys usr mnt tmp var #mkdir usr/bin usr/lib usr/sbin lib/modules 2. 创建设备文件 #cd rootfs/dev #mknod -m 666 console c 5 1 #mknod -m 666 null c 1 3 3. 加入配置文件 #tar etc.tar.gz #

根文件系统的制作(测试成功)

1     建立根文件系统目录与文件 (1)     创建目录 #mkdir rootfs #cd rootfs #mkdir bin dev etc lib proc sbin sys usr mnt tmp var #mkdir usr/bin usr/lib usr/sbin lib/modules (2)创建设备文件 #cd rootfs /dev #mknod –m 666 console c 5 1 #mknod –m 666 null c 1 3 (3)加入配置文件 #tar et

linux系统移植和根文件系统制作

1.1 Linux内核基础知识 在动手进行Linux内核移植之前,非常有必要对Linux内核进行一定的了解,下面从Linux内核的版本和分类说起. 1.1.1  Linux版本 Linux内核的版本号可以从源代码的顶层目录下的Makefile中看到,比如2.6.29.1内核的Makefile中: VERSION = 2 PATCHLEVEL = 6 SUBLEVEL = 29 EXTRAVERSION = .1 其中的“VERSION”和“PATCHLEVEL”组成主版本号,比如2.4.2.5.

根文件系统制作、NFS配置与安装及利用NFS挂载根文件系统

最近打算从头开始制作根文件系统,下面是开发过程. 一.根文件系统的制作 0.FHS(Filesystem Hierarchy Standard)标准介绍 该标准规定了根目录下各个子目录的名称及其存放的内容: 目录名 存放的内容 /bin 必备的用户命令,例如ls.cp等 /sbin 必备的系统管理员命令,例如ifconfig.reboot等 /dev 设备文件,例如mtdblock0.tty1等 /etc 系统配置文件,包括启动文件,例如inittab等 /lib 必要的链接库,例如C链接库.内

I.MX6Q(TQIMX6Q/TQE9)学习笔记——新版BSP之根文件系统挂载

经过前面的移植,新版BSP的uboot和kernel已经能够在tqimx6q开发板上运行了,接下来我们来挂载文件系统. DTB整理 前面的文章中提到,新版BSP的DTB管理感觉不是太好,在之前移植的BSP上我发现即便有根文件系统,内核也会挂掉,由于原来的DTS文件中配置内容太多,不好确定问题的源头,本文对DTS进行了整理,整理后只需要一个DTS文件,其内容如下: /* * Copyright 2012 Freescale Semiconductor, Inc. * Copyright 2011

2017.3.2学习笔记----------nfs以及根文件系统

根文件系统的制作烧写,nfs,驱动程序的编译 <1> 根文件系统的制作烧写: 类似于前一节,步骤可以参考手册,将补丁文件打入虚拟机,再安装即可. 具体步骤参考开发板应用手册3.4节 <2> 使用flash上的根文件系统启动沪,手工MOUNT NFS: mount -t nfs -o nolock,vers=2 192.168.1.132:/work/nfs_root /mnt ls  /mnt <3>使用nfs作为根文件系统来启动 进入uboot: set bootar