S3C2410目标板移植三步曲之文件系统(3)

时间:2022-04-18 20:40:03

Linux内核在系统启动期间进行的最后操作之一就是安装根文件系统,这两天动手实践了一下,终于小成功了一把,下面在这里记录一下学习心得,以便日后回忆。


移植环境

1、操作系统Ubuntu 11.04

2linux内核版本2.6.38

3、交叉编译器 arm-unknown-linux-gnueabi-gcc-4.3.2


准备条件

1,硬件

实验室自己画的开发板(外设很少),内核CPUs3c2410AL-20(ARM920T处理器核)

S3C2410目标板移植三步曲之文件系统(3)



2,源码

1busybox源码--busybox-1.20.2.tar.bz2

下载地址:http://busybox.net/downloads/


2cramfs源码--cramfs-1.1.tar.gz

下载地址:http://sourceforge.net/projects/cramfs/files/cramfs/


解压源码包编译生成映像生成工具

1、解压


S3C2410目标板移植三步曲之文件系统(3)

2、编译

zujin@ubuntu:~/fs/cramfs-1.1$make

然后会在cramfs-1.1目录下看到映像生成工具mkcramfs,如下图:

S3C2410目标板移植三步曲之文件系统(3)

解压并配置busybox

1、解压

zujin@ubuntu:~/fs$ tar xjvfbusybox-1.20.2.tar.bz2


2、修改Makefile文件

1)找到CROSS_COMPILE ?=

改为:CROSS_COMPILE?=/home/zujin/fs/arm-unknown-linux-gnueabi/bin/arm-unknown-linux-gnueabi-

注意:首先把交叉编译器放到相应位置,再配置,否则会出错

2)找到ARCH?= $(SUBARCH)

改为:ARCH?= arm


3、配置

1BusyboxSettting ----->

Build Options ------>

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

CrossCompiler prefix //makefile中的 //CROSS_COMPILE保持一致

InstallationOptions----->

BusyBox installation prefix //改为你创建的rootfs, ///home/zujin/fs/rootfs/

2)退出,保存


准备建立文件系统

1、在rootfs目录中创建一个creatfs.sh的脚本

#!/bin/sh

mkdirbin dev etc lib proc sbin sys usr #8 dirs

mkdirusr/bin usr/lib usr/sbin lib/modules

 

mknod-m 600 dev/console c 5 1

mknod-m 666 dev/null c 1 3


mkdirmnt tmp var

chmod1777 tmp

mkdirmnt/etc mnt/jiffs2 mnt/yaffs mnt/data mnt/temp

mkdirvar/lib var/lock var/log var/run var/tmp

chmod1777 var/tmp


mkdirhome root boot


2、运行creatfs.sh脚本

root@ubuntu:/home/zujin/fs/rootfs#chmod 777 creatfs.sh

root@ubuntu:/home/zujin/fs/rootfs#./creatfs.sh

rootfs目录下会生成bindev等子目录


配置文件

1、复制配置文件到rootfs/etc目录下

root@ubuntu:/home/zujin/fs/rootfs#cd etc/

root@ubuntu:/home/zujin/fs/rootfs/etc#cp -r ../../busybox- 1.20.2/examples/bootfloppy/etc/* .


2、修改profile

# /etc/profile:system-wide .profile file for the Bourne shells


echo

echo -n "Processing/etc/profile... "


# Set search librarypath

exportLD_LIBRARY_PATH=/lib:/usr/lib


# set user path

exportPATH=/bin:/sbin:/usr/bin:/usr/sbin


#Set PS1

echo "Set PS1 in/etc/profile"

exportPS1="[\u@\h\W]\$"


echo "Done"

echo


3、修改inittab

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

::respawn:-/bin/sh

::restart:/sbin/init

tty2::askfirst:-/bin/sh

::ctrlaltdel:/bin/umount-a -r

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

::shutdown:/sbin/swapoff-a


4、修改fstab

proc /proc proc defaults 0 0

none /tmp ramfsdefaults 0 0

none /var ramfsdefaults 0 0

mdev /dev ramfsdefaults 0 0

sysfs /sys sysfsdefaults 0 0


5、修改init.d/rcS

#! /bin/sh

echo "----------mountall"

/bin/mount -a

echo"----------Starting mdev......"

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

mdev -s

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

echo " created byyzj "

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


6、为mdev创建配置文件,可以为空

root@ubuntu:/home/zujin/fs/rootfs/etc#touch mdev.conf


使用mkcramfs工具生成文件系统映像

root@ubuntu:/home/zujin/fs/cramfs-1.1#./mkcramfs ../rootfs/ rootfs.cramfs

Directory data: 7664bytes

Everything: 1172kilobytes

Super block: 76 bytes

CRC: 9eed376a

warning: gids truncatedto 8 bits (this may be a security concern)



烧写进nandflash

1、该nandflash被分为5个分区(bootloader被烧进板子背面的NORflash),如图:

S3C2410目标板移植三步曲之文件系统(3)

2、按下板子的Reset键,迅速按空格键,进入板子的bootloader,vivi,如图:


S3C2410目标板移植三步曲之文件系统(3)

3、将文件系统烧写进上图的第二个分区

1)首先将延时调长一些

S3C2410目标板移植三步曲之文件系统(3)

2)烧写

--键入命令loadnand 0x200000 0x3300000 x

--CtrlA

--S 然后,通过上下键选择xmodem

---选择文件rootfs.cramfs

S3C2410目标板移植三步曲之文件系统(3)


以上几个步骤,指法必须娴熟,如果失败多试几次。

S3C2410目标板移植三步曲之文件系统(3)

烧写完毕

S3C2410目标板移植三步曲之文件系统(3)

重新reset

S3C2410目标板移植三步曲之文件系统(3)