根文件系统制作

一、根文件系统制作

1、源码下载

我们选择的版本是busybox-1.17.3.tar.bz2下载路径为:

http://busybox.net/downloads/

2、解压源码

$ tar  xvf busybox-1.17.3.tar.bz2

3、进入源码目录,修改Makefile,选择自己的交叉工具

$ cd  busybox-1.17.3

busybox-1.17.3$ vim Makefile +164

#第164根190行
164 CROSS_COMPILE = arm-none-linux-gnueabi-
190 ARCH = arm

4、 配置源码

$ make menuconfig

Busybox Settings  --->

Build Options  ---> 
[*] Build BusyBox as a static binary (no shared libs)                                                           
                        [ ] Force NOMMU build (NEW)                                                                                
       
                 [ ] Build with Large File Support (for accessing files > 2 GB)                                                
      
         ()  Cross Compiler prefix (NEW)                                                                                
         
               ()  Additional CFLAGS (NEW)
Installation Options  ---> 
[*] Don't use /usr
Applets links (as soft-links)  --->
(./_install) BusyBox installation prefix (NEW)

5、编译

make

6、安装

make install 

busybox默认安装路径为源码目录下的_install

7、进入安装目录下

$ cd  _install

$ ls

bin  linuxrc  sbin

8、创建其他需要的目录

$ mkdir  dev  etc  mnt  proc  var tmp  sys  root lib home usr


9、拷贝_install到自己合适的路径下,重命名

cp -raf_install /home/linux myrootfs

10、添加动态库

cp /usr/local/toolchain-4.4.6/arm-cortex_a8-linux-gnueabi/lib/* lib/

注:根据自己的交叉工具链选择相应的路径

删除库文件中的符号表,也叫瘦身

$ rm -rflib/*.a

$ chmod a+w lib/*


$ arm-none-linux-gnueabi-strip lib/*


11、添加系统启动文件

在etc/下创建文件inittab,文件内容如下:


::sysinit:/etc/init.d/rcS
::askfirst:/bin/ash
::ctrlaltdel:/sbin/reboot
::shutdown:/sbin/swapoff -a
::shutdown:/bin/umount -a -r
::restart:/sbin/init

在etc下创建文件fstab,文件内容如下:

proc    /proc   proc    defaults        0       0
tmpfs   /tmp    tmpfs   defaults        0       0
sysfs   /sys    sysfs   defaults        0       0
tmpfs   /dev    tmpfs   defaults        0       0


(以下该步骤可不做)

这里我们挂载的文件系统有三个proc、sysfs和tmpfs。在内核中proc和sysfs默认都支持,而tmpfs是没有支持的,我们需要添加tmpfs的支持

修改内核配置:

File systems --->

    Pseudofilesystems --->

        [*] /proc file systemsupport (NEW) 
              [*]sysfs file system support (NEW) 
              [*]Virtual memory file system support (former shm fs) 
              [*]  Tmpfs POSIX Access Control Lists
重新编译内核

在etc下创建init.d目录,并在init.d下创建rcS文件,rcS文件内容为:

 #!/bin/sh

 echo "------------*_*-----my first rootfsstart--------"

 /bin/mount -a

 /sbin/mdev -s

 echo "------------^_^-----my first rootfsend----------"

为rcS添加可执行权限:

$ chmod   +x  init.d/rcS

12,在etc下添加profile文件,文件内容为:

#! /bin/sh

export  HOSTNAME=Linux
export  USER=root
export  HOME=root
export  PS1="[$USER@$HOSTNAME \W]\# "
PATH=/bin:/sbin:/usr/bin:/usr/sbin
LD_LIBRARY_PAHT=/bin:/usr/lib:$LD_LIBRARY_PAHT
export  PATH    LD_LIBRARY_PAHT

13、设备文件创建

根文件系统中有一个设备节点是必须的,在dev下创建console节点

$ sudo mknod   dev/console c  5  1

以上的步骤就完成了linux根目录所需要的所有文件,可以直接使用

NFS测试

1、将做好的根目录复制成/opt/myrootfs(如果你已经有这个目录,就要注意啦)

$ sudo  cp   -raf  myrootfs  /opt/

2, 在ubuntu中将/opt/myrootfs设置成nfs文件系统

 修改ubuntu的/etc/exports: 将/opt/myrootfs设置成nfs文件系统格式
 /opt/myrootfs           *(subtree_check,rw,no_root_squash,async)
 sudo service nfs-kernel-server restart
 测试

1》在用户主目录中创建一个挂载点:  mkdir ~/mnt

2》挂载文件系统:/opt/myrootfs

sudo mount192.168.x.x:/opt/myrootfs mnt (注:自己Linux的ip地址)

3》查看mnt下是否可以看到rootfs中的内容,如果可以看到,nfsOK

 









   

你可能感兴趣的:(u-boot移植,内核移植,根文制作件)