ARM 根文件系统制作

1 交叉编译busybox

版本:busybox-1.22.0.tar.bz2

修改 Makefile 添加交叉编译器路径

ARCH ?= arm

CROSS_COMPILE ?= /opt/arm-2009q1/bin/arm-none-linux-gnueabi-

配置busybox

Build Options  --->

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

General Configuration  --->

[*] Don‘t use /usr

Linux System Utilities  --->

[*] mount

[*]Support mounting NFS file systems on Linux < 2.6.23

make

make install

生成文件在新建目录 _install 里

2 创建目录 filesys

cd filesys

创建目录 bin boot dev etc home lib media mnt opt proc root sbin srv sys tmp usr var

3 复制编译出的busybox _install里的内容到 filesys

注意链接文件的复制

cp -rf "src" "dest"

4 配置/etc

4.1 添加文件

/etc/group  /etc/passwd  /etc/mdev.conf

内容:

/etc/group

root:*:0:

/etc/passwd

root::0:0:root:/home/root:/bin/sh

/etc/mdev.conf

4.2 创建文件

/etc/fstab

内容:

proc                  /proc                proc       defaults              0  0

tmpfs                 /tmp                 tmpfs      defaults,size=5M      0  0

#执行mount -a 命令时自动挂载

4.3 创建文件

/etc/inittab

内容:

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

::askfirst:/bin/sh

#ttyS0:2345:respawn:/sbin/getty 115200 ttyS0    # 还没有搞明白

::ctrlaltdel:/sbin/reboot

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

::restart:/sbin/init

#init 进程执行

4.4 创建文件

/etc/init.d/rcS

内容:

#!/bin/sh

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

runlevel=S

prevlevel=N

umask 022

export PATH runlevel prevlevel

echo "---------------mount all--------------"

mount -a

echo ‘mount nand flash file system...‘

mount -t jffs2 /dev/mtdblock4 /mnt/nand

# mount devpts in order to use telnetd

###########################################################################

##########               Telnet Server               ######################

echo "---------------mount devpts------------"

cp -rf /dev/* /tmp

mount -t tmpfs tmpfs /dev

cp -rf /tmp/* /dev

rm -rf /tmp/*

echo "---------------Start mdev-------------"

mount -t sysfs sysfs /sys

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

mdev -s

echo "........Start Telnetd Server........."

./etc/init.d/telnetd start

mount -t devpts devpts /dev/pts

sleep 1

##########               Telnet Server               ######################

###########################################################################

echo "**************************************"

echo "Kernel version:linux-2.6.24"

echo "DM6467T rootfs"

echo "Date:2010.12.22"

echo "**************************************"

ifconfig eth0 192.168.1.7

添加可执行权限

chomd +x /etc/init.d/rcS

4.5 创建文件 /etc/init.d/telnetd

内容:

#! /bin/sh

telnetd=/sbin/telnetd

test -x "$telnetd" || exit 0

case "$1" in

start)

echo -n "Starting telnet daemon"

start-stop-daemon --start --quiet --exec $telnetd

echo "."

;;

stop)

echo -n "Stopping telnet daemon"

start-stop-daemon --stop --quiet --pidfile /var/run/telnetd.pid

echo "."

;;

*)

echo "Usage: /etc/init.d/telnetd {start|stop}"

exit 1

esac

exit 0

添加可执行权限

chomd +x /etc/init.d/telnetd

5 telnet 服务

./etc/init.d/telnetd start

mount -t devpts devpts /dev/pts

配置方式 1:

在rcS中添加:

cp -rf /dev/* /tmp

mount -t tmpfs tmpfs /dev

cp -rf /tmp/* /dev

rm -rf /tmp/*

mount -t sysfs sysfs /sys

echo /bin/mdev > /proc/sys/kernel/hotplug

mdev -s    #映射系统驱动创建的设备节点(比较全)

配置方式 2:

手动创建节点 目录

mkdir /dev/pts

mknod ptmx c 5 2

mknod tty c 5 0

mknod tty0 c 4 0

mknod tty1 c 4 1

mknod tty2 c 4 2

mknod tty3 c 4 3

mknod tty4 c 4 4

6 配置/dev

创建节点

mknod  console c 5 1

mknod  null c 1 3

mknod  mtdblock4 b 31 4

......

......

7 添加动态链接库

复制交叉编译链中的动态库

/opt/arm-2009q1/arm-none-linux-gnueabi/libc/lib        /../..filesys/lib

/opt/arm-2009q1/arm-none-linux-gnueabi/libc/usr/lib    /../..filesys/usr/lib

否则 执行程序时报  error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory

到此 跟文件系统内容创建完毕

打包cramfs

工具mkcramfs 下载编译不是交叉编译

打包:

/opt/cramfs-1.1/mkcramfs /home/zhujinju/workspace/myrootfs/filesys cramfsImage_my6467T

解包:

cd /root/workspace/myfilefs

mkdir filesys

mkdir rdmnt2

mount -t cramfs -o loop cramfsImage_my6467T rdmnt2/

cd rdmnt2

tar -cf - . | tar -C ../filesys/ -xpf -

cd /root/workspace/dm6467t_root_fs

chown -R root filesys/

chmod -R a+rwx filesys/

umount rdmnt2/

烧写命令:

tftpboot 0x82000000 cramfsImage_my6467T          #把文件上传到内存地址0x82000000

nand erase 0x560000 0x1000000                    #擦除nand flash 地址0x560000 大小 (16M = 0x1000000)

nand write 0x82000000 0x560000 0x1000000         #把内存地址0x82000000 16M内容 写到nand flash 地址0x560000 大小 (16M = 0x1000000)

时间: 2024-10-16 00:48:19

ARM 根文件系统制作的相关文章

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链接库.内

嵌入式Linux根文件系统制作和挂载

嵌入式Linux系统由三部分组成: uboot.kernel.根文件系统, 还是这张老图 这里的根文件系统可以说是包含两个部分: 一个是根,一个是文件系统 那么什么是根呢?哈哈 其实根表示的就是第一个的意思 下面贴张图看看整个根文件系统制作的步骤: 第一步创建目录,这里是在我自己的一个目录下建立一个名为rootfs的目录: 第二步 :创建设备文件(比如操作串口,其实就是打开一个串口文件,向里面写入读出等) 这里有两个是必须的,其他的暂时不考虑(串口控制台)(这个在dev目录下执行) 第一个指令c

根文件系统制作命令小结

1.将根文件系统制作 成ramdisk #genext2fs -b 8192 -d /home/fs/myrootfs/  ramdisk 说明:这一步出现问题,后来发现是这个分配的空间太小,于是将8192改为120400 #genext2fs   -b   /home/xiongyao/rootfs/  ramdisk #gzip  -9  -f  ramdisk 这样就可以将ramdisk.gz下载到开发板上面去了 2.jffs2文件格式 命令使用实例:mkfs.jffs2 -d ~/tar

8、根文件系统制作final

根文件系统其实包含两个含义:1.是根.2.是文件系统. 根:就是第一个的意思.必须有的. 文件系统:就是我们在编译linux内核看到的: 上面的目录和文件就是文件系统的. 接下来我们就来创建文件系统: 这里我们需要下面文件: 把它解压开,在把它的内容拷贝到/rootfs/etc: 接着是添加内核模块: 首先是编译内核模块: Make modules ARCH=arm CROSS_COMPILE=arm-linux- 这个编译的过程会有点久. 最后编译好了内核模块,接下来就是拷贝到我们的跟文件系统

根文件系统制作

一.建立根文件系统目录与文件 1.创建目录 *mkdir  /home/ARM11/kernel/rootfs *cd /home/ARM11/kernel/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

tiny4412u-boot烧写及根文件系统制作(不进入终端问题)

http://m.blog.csdn.net/article/details?id=51400196(转) VMware12 环境:ubuntu12.4 开发板:tiny4412 首先烧写bootloader,我用一个8G的内存卡,现在不说sd卡的制作过程了,网上可以参考. 现在就把我给arm的emmc烧写过程开始说. 用sd卡启动,开发板的右下角有个开关控制启动方式,往下是sd卡启动,往上是mmc启动. 1,.先用sd卡启动 注意:把右下角的开关拨到下面.启动后的是[[email protec

根文件系统制作(二)

在前面已经把根文件系统所需要的文件.目录全部都制作好了,接下来讨论如何把它移植到嵌入式系统开发板上.要把根文件系统的所有目录和文件移植到arm开发板上,需要一个名叫mtd.utils的工具软件,它可以直接到官网(ftp://ftp.infradead.org/pub/mtd-utils/)上去下载源码,同时还需要zlib库(http://zlib.net/)和lzo库(http://www.oberhumer.com/opensource/lzo/)的支持,另外还有utils-linux工具(h

Linux 4.10.8 根文件系统制作(三)---制作yaffs文件系统

这里直接用的是韦东山提供的工具. yaffs文件系统是专门用于nandflash的文件系统 我们前面已经下载了yaffs 的源码,也做了文件系统目录的构建. 在yaffs2的源码目录中有一个utils 目录,里面就是制作文件印象的工具. 将工具拷贝到系统目录中去 加上可执行属性: 进入nfs_root目录,执行命令: mkyaffs2image fs_mini fs_mini.yaffs2 然后启动u-boot,进行烧写: nfs 30000000 192.168.0.192:/home/ubu