制作根文件系统(修正版)

        前段时间,自己制作了一个yaffs2的根文件系统。系统正常启动了,所以便草草的写了一篇日志,记录一下。但是这两天在移植驱动的时候,忽然发现/dev目录下没有

任何设备文件,而且再上一个文件系统中也没有加载lib库,所以决定重新制作一下,并把步骤详细的记录一下。

1.安装busybox1.9.2.bz2

tar jxvf

2.修改其Makefile

ARCH                 ?= arm

CROSS_COMPILE     ?=/usr/local/arm/3.3.2/bin/arm-linux-

3.编译

Make

关于这一步,需要说明的是,busybox不一定非要使用我所使用的版本,可以更换成更新的,但是设置方法是一致

4,make menuconfig

这一步没有什么值得特别说明的,大概的设置是不需要更改的,

就是你需要哪些命令就添加哪些命令,这个就自己探索吧。

libbusybox         
    [*]   Produce additional busybox binary linked against libbusybox          
    [ ] Build with Large File Support (for accessing files > 2 GB)  
      
installation option-->
    [*] Don't use /usr                                                    
        Applets links (as soft-links) --->                                   
     (./_install) BusyBox installation prefix  

这个地方选中,把安装路径选择刚刚建立的目录 /home/skyily/rootfs
Busybox Library Tuning ---> 

                     
MD5: Trade Bytes for Speed                                      
[*] Faster /proc scanning code (+100 bytes)                            
[*] Support for /etc/networks                                    
 
[*] Support for /etc/networks
[*]   Additional editing keys
[*]   vi-style line editing commands
[*]   History saving
[*]   Tab completion
[*]   Username completion
[*]   Fancy shell prompts
 
Linux Module Utilities --->
[*] Support version 2.6.x Linux kernels
 
    [*] insmod  
    [*]   Enable load map (-m) option  
    [*]     Symbols in load map
    [*] rmmod  
    [*] lsmod
    [*]   lsmod pretty output for 2.6.x Linux kernels  
    [*] modprobe
    [ ]   Multiple options parsing
    [ ]   Fancy alias parsing
    ---   Options common to multiple modutils
    [ ] Support tainted module checking with new kernels
    [ ] Support version 2.2.x to 2.4.x Linux kernels
 
    [*] Support version 2.6.x Linux kernels

    #make             

   #make install

编译通过,就生成了busybox。

7.制动生成rootfs文件夹

书写脚本文件rootfsdir

#! /bin/sh

    echo "creatint rootfs dir......"

    mkdir rootfs

    cd rootfs

    echo "making dir : bin dev etc lib proc sbin sys usr"

    mkdir bin dev etc lib proc sbin sys usr #必备的8个目录

    mkdir usr/bin usr/lib usr/sbin lib/modules

# Don't use mknod ,unless you run this Script as root !

# mknod -m 600 dev/console c 5 1

# mknod -m 666 dev/null c 1 3

 

    echo "making dir : mnt tmp var"

    mkdir mnt tmp var

    chmod 1777 tmp

    mkdir mnt/etc mnt/jffs2 mnt/yaffs mnt/data mnt/temp

    mkdir var/lib var/lock var/log var/run var/tmp

    chmod 1777 var/tmp

 

    echo "making dir : home root boot"

    mkdir home root boot

    echo "done"

 #chmod 777 rootfsdir

#./rootfsdir

下面就是整理rootfs目录下的文件

6、以root身份建立节点文件/dev/console, /dev/null
 # mknod -m 600 dev/console c 5 1

 # mknod -m 666 dev/null c 3 1

7、建立配置文件如下:etc下

   可先把busybox-1.9.2/example/bootflopy/etc下的文件拷贝到rootfs下的etc下#cp -r ..../busybox-1.9.2/examples/bootfloppy/etc/* ./

  下面再做修改:

 1>修改profile文件: 

 

#!/bin/sh
#/etc/profile:system-wide .profile file for the Bourne shells
echo
echo -n "Processing /etc/profile......"
 
# Set search library path
export LD_LIBRARY_PATH=/lib:/usr/lib
 
# set user path
export PATH=/bin:/sbin:/usr/bin:/usr/sbin
 
#Set PS1

echo "Set PS1 in /etc/profile"
export PS1="[\u@\h\W]\$"

                     
echo "Done!"

 2>修改inittab文件:

::sysinit:/etc/init.d/rcS
::respawn:-/bin/sh
::restart:/sbin/init

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

 3>修改fstab文件:

proc /proc proc defaults 0 0
none /tmp ramfs defaults 0 0

none /var ramfs defaults 0 0
mdev /dev ramfs defaults 0 0
sysfs /sys sysfs defaults 0 0

 4>修改初始化脚本init.d/rcS

#! /bin/sh
echo "----------mount all"
/bin/mount -a

echo "----------Starting mdev......"
/bin/echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s

echo "*********************************************************"
echo " Be yourself"
echo " Do what you want"
echo "********************************************************"

 5>为mdev创建配置文件:(etc下)

[root@ etc]# touch mdev.conf

创建一个mdev.conf文件,内容可为空!!!!

 6>创建登陆账户

 把自己pc上的/etc下的group shadow passwd 文件拷贝到制作的..../etc下

 #cp /etc/group ./

 #cp /etc/passwd ./

 #cp /etc/shadow ./

8、动态编译时所要查的(所需动态链接库)

  # arm-linux-readelf busybox

Dynamic section at offset 0xb8014 contains 22 entries:
 Tag        Type                         Name/Value
 0x00000001 (NEEDED)                     Shared library:[libcrypt.so.1]
 0x00000001 (NEEDED)                     Shared library: [libm.so.6]
 0x00000001 (NEEDED)                     Shared library: [libc.so.6]
 0x0000000c (INIT)                       0xc04c
 0x0000000d (FINI)                       0xa26f0
 0x00000004 (HASH)                       0x80e8
 0x00000005 (STRTAB)                     0xa384
 0x00000006 (SYMTAB)                     0x8b24
.....
.....

复制lib 文件到lib目录下:
[root@centos lib]cp -d /usr/local/arm/3.4.1/arm-linux/lib/ld* .
[root@centos lib]cp -d /usr/local/arm/3.4.1/arm-linux/lib/libc-2.3.2.so .
[root@centos lib]cp -d /usr/local/arm/3.4.1/arm-linux/lib/libc.so.6 .
[root@centos lib]cp -d /usr/local/arm/3.4.1/arm-linux/lib/libm * .
[root@centos lib]cp -d /usr/local/arm/3.4.1/arm-linux/lib/libcrypt* .

关于lib库文件

可以用不同的版本

也可以从各个公司制作好的文件系统中抽取,也可以从交叉编译器中抽取,名字都差不多。

我也不太明白这些库都具体有什么作用,因为有一次制作忘记制作lib库了,系统照样可以运行。

等以后明白了再来加上这里吧,或者哪位兄台懂得话,留言指教啊。

关于user名字,添加自己喜欢的用户名,

只需要在rcS中添加

/bin/hostname -F /etc/hostname

然后再/etc目录下新建hostname ,编辑你想要的用户名。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值