建立自己的文件系统

最近用busybox1.15.2成功建立自己的文件系统,下面将我的步骤说一下:

开发环境:
开发板       :TQ2440
交叉编译器版 : 3.4.1_softfloat(天嵌自带的交叉编译器)
linux内核版本:2.6.13(天嵌移植好的内核)
busybox版本  :busybox-1.15.2.tar.bz2

下面是配置busybox几个要注意的地方:
Build Options:
[*]Build BusyBox as a staitc binary
(arm-linux-)Cross Compiler prefis

Installation Options
[*]Don't use /usr
(/opt/EmbedSky/my_fs)BusyBox installation prefix

Busybox Library Tuning
下面是热心网友的解释:
在制作文件系统的时候,会用到 /etc/profile,里面有PS1变量,一般为:
PS1="[/u@/h /W]# "
/u等特殊字符分别表示的是当前用户、主机名和当前目录。但是我制作完以后进入到系统,发现还是原样显示上述字符。
网上找了半天没找到。
后来一个同事帮我搞定了,原来是busybox的配置问题,分享一下:
make menuconfig
busybox settings->busybox library tuning->username completion、fancy shell prompts选上。


Networking Utilities
Enable status reporting output
这个要选要,要不然ifconfig没有输出

保存,执行:
make
make install
会在 /opt/EmbedSky/下生成一个文件夹--my_fs,里面有:
bin,sbin,linuxrc
三个文件

执行:mkdir dev etc home lib mnt opt proc root tmp usr var建立系统需要的文件夹
执行:cp -f /opt/EmbedSky/crosstools_3.4.5_softfloat/gcc-3.4.5-glibc-2.3.6/arm-linux/arm-linux/lib/*so*  f /opt/EmbedSky/my_rf/lib  -a将库文件copy过来

将/opt/EmbedSky/root_busybox/etc/init.d/rcS  copy到 my_rf对应的文件夹下自己屏蔽一些不要的内容,我的如下:

#! /bin/sh

PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:
runlevel=S
prevlevel=N
umask 022
export PATH runlevel prevlevel

#
#        Trap CTRL-C &c only in this shell so we can interrupt subprocesses.
#
trap ":" INT QUIT TSTP
#hwclock -s

#SCSI modules

#Charactor modules

mknod /dev/pts/0 c 136 0
#ln -s /dev/v4l/video0 /dev/video0
#ln -s /dev/fb/0 /dev/fb0
#ln -s /dev/vc/0 /dev/tty1
#ln -s /dev/sound/dsp /dev/dsp
#ln -s /dev/sound/mixer /dev/mixer
#ln -s /dev/input/tsraw0 /dev/h3600_tsraw
mount -t proc none /proc
mount -t tmpfs none /tmp
mount -t tmpfs none /var

mkdir -p /var/lib
mkdir -p /var/run
mkdir -p /var/log

/etc/rc.d/init.d/netd start
/etc/rc.d/init.d/httpd start
#/etc/rc.d/init.d/leds start

#insmod /lib/s3c2440_camif.ko
#insmod /lib/SKY2440_OV9650.ko

ifconfig lo 127.0.0.1
#route add default gw 192.168.1.2
ifconfig eth0 192.168.1.6 up

/bin/hostname -F /etc/sysconfig/HOSTNAME

在/etc/sysconfig/文件夹下建立HOSTNAME文件,内容自定,里面的内容是主机名,我的是vin
将/opt/EmbedSky/root_busybox/etc下的rc.d文件夹和profile copy到 /opt/EmbedSky/my_fs/etc下

在my_rf/etc下建立inittab文件内容:
::sysinit:/etc/init.d/rcS
::askfirst:/sbin/getty 115200 console
执行chmod 777 inittab修改权限

在my_rf/dev下创建两个文件
mknod console c 5 1
mknod null c 1 3
手动添加用户,下面是 --紫域风灵的博客--“用busybox制作根文件系统”一文的一个片断:
需要在etc目录下增加passwd、group和shadow(在编译busybox时如果不选择shadow功能将不需要这个文件)3个文件。
生成这3个文件的方法有:
Ø        手动生成,按照格式规范自己编写内容;
Ø        通过busybox提供的工具adderuser自动生成
首先我们介绍一下如何手动添加。以增加root用户为例,增加passwd文件,其内容为:
#cat passwd
root:x:0:0:root:/root:/bin/sh
同时,此时要确定root目录已经存在。
passwd一共由7个字段组成,6个冒号将其隔开。它们的含义分别为:
1     用户名
2     是否有加密口令,x表示有,不填表示无,采用MD5、DES加密。
3     用户ID
4     组ID
5     注释字段
6     登录目录
7     所使用的shell程序
增加group文件,其内容为:
#cat group
root:x:0:
Group一共由4个字段组成,3个冒号将其隔开,它们的含义分别为:
1     组名
2     是否有加密口令,同passwd
3     组ID
4     指向各用户名指针的数组

我的只有两个文件:group和passwd,内容分别为:
passwd:
root::0:0:root:/root:/bin/sh
group:
root:x:0:
用myyaffsimage /opt/EmbedSkly/my_rf/ /opt/EmbedSky/myroot.img生成img文件
下载到TQ2440板上运行

你可能感兴趣的:(shell,library,compiler,编译器,networking,linux内核)