免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 980 | 回复: 0
打印 上一主题 下一主题

根文件系统构建 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-12-16 18:15 |只看该作者 |倒序浏览

                      根据网上结合自己的改了一下。
       
       
       
       
       
       
[color="#0000ff"]------------------[color="#0000ff"]修改编译配置选项--------------------
开始移植

1.      
下载busybox1.9.2,并解压缩。
下载busybox源代码:http://busybox.net/downloads/busybox-1.9.2.tar.bz2
交叉编译工具:arm-linux-gcc-3.4.1
解压源码:tar
-jxvf busybox-1.9.2.tar.bz2

2.      
修改Makefile中的174行的
arch和编译工具链头。
ARCH           
     ?= arm
CROSS_COMPILE      
?= /usr/local/arm/3.4.1/bin/arm-linux-

3.      
make menuconfig. 修改编译配置选项。
Busybox
Setting----->

       build
option-->
    [
] Build BusyBox as a static binary (no shared
libs)                     
   

  • Build shared
    libbusybox                                               
       
  •   
    Produce a binary for each applet, linked against 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

    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

    shell
    -

       

  • alias
    support

    其他的用默认值
    [color="#0000ff"]-----------------------[color="#0000ff"]编译busybox-----------------------
    make
    make
    install
    在busybox/_install
    目录下会生成我们需要的文件。
    修改_install/bin/busybox
    的属性。为4755
    chmod
    4755 ./_install/bin/busybox
    必须要修改属性,否则在busybox
    中很多命令会受限
    将编译好的busybox拷贝到/bin下面。
      
    [color="#800000"]-[color="#0000ff"]---------------------------------[color="#0000ff"]制作根文件系统-----------------------------------------
    [color="#0000ff"]busybox[color="#0000ff"]下建新文件系统根目录root

    [color="#0000ff"]拷贝_install[color="#0000ff"]下文件至新root
    [color="#0000ff"]在root先新建etc目录(主要就是系统的启动设置,都在这里)
    [color="#0000ff"]在root新建lib目录(系统的启动进程需要库的支持,一般都是动态链接,所以必须要加全了,文件系统拿什么编译的就拿该编译器的库)
    [color="#0000ff"]-----------------------/lib[color="#0000ff"]文件--------------------------------
    /lib的库其实就是进行busybox编译的库,即交叉编译器的库,我们这里使用的是3.4.1(位置/usr/local/arm/3.4.1)。
    #
    cd  /usr/local/arm/3.4.1/arm-linux/lib
    # for file in libc
    libcrypt libdl libm libpthread libresolv libutil
    > do
    >
    cp $file-*.so  rootfs/lib (复制到你做的文件系统的/lib目录下)
    >
    cp -d $file.so.[*0-9]  rootfs/lib (同上)
    >
    done
    # cp -d ld*.so*  rootfs/lib  
    (同上)
    [color="#0000ff"]-----------------[color="#0000ff"]系统配置文件的建立---------------------
    --========/etc目录============
    [color="#006400"](1)profile[color="#006400"]文件
    #Set
    search library path
    export
    LD_LIBRARY_PATH=/lib:/usr/lib:$LD_LIBRARY_PATH
    #Set user
    path
          
    PATH="/bin:/sbin:/usr/bin:/usr/sbin:"$PATH
    alias ll='ls
    -l'
            #Set
    PS1
       USER="`id
    -un`"
       LOGNAME=$USER
       PS1='[\u@\h
    \W]\$ '
    PATH=$PATH
          
    export USER LOGNAME PS1 PATH
      
    [color="#ff0000"](说明:sh
    [color="#ff0000"]的配置脚本:profile[color="#ff0000"])
    ([color="#006400"]2)fstab[color="#006400"]文件
    proc
    /proc proc  defaults  0 0
    none  /tmp  ramfs
    defaults  0 0
    mdev  /dev  ramfs defaults  0
    0
    sysfs /sys  sysfs defaults  0 0
    (说明:挂载文件系统的配置文件
    :fstab[color="#ff0000"])
      :[color="#ff0000"]挂装的设备
    [color="#ff0000"] :[color="#ff0000"]挂装点
    [color="#ff0000"] [color="#ff0000"]:[color="#ff0000"]文件系统类型
    [color="#ff0000"] :
    [color="#ff0000"]挂装选项
    [color="#ff0000"] 
    ro
        [color="#ff0000"]以只读模式加载该文件系统
    user
          [color="#ff0000"]允许普通用户加载该文件系统
    quota
        [color="#ff0000"]强制在该文件系统上进行磁盘定额限制
    noauto
      不再使用
    mount
    -a [color="#ff0000"]命令([color="#ff0000"]例如系统启动时)[color="#ff0000"]加载该文件系统
    3
    :使用
    dump
    [color="#ff0000"]命令备份文件系统的频率
     若不需要转储就设置该字段为
    [color="#ff0000"]0
    [color="#ff0000"]:[color="#ff0000"]规定检查文件系统的顺序
    [color="#ff0000"]根文件系统“/”对应该字段的值应该为
    1
    ,   其他文件系统应该为
    2[color="#ff0000"]。 若该文件系统无需在
    启动时扫描则设置该字段为
    [color="#ff0000"]0
    [color="#006400"](3)inittab[color="#006400"]文件
    ::sysinit:-/etc/init.d/rcS
    ::respawn:-/bin/sh
    ::ctrlaltdel:/bin/umount
    -a -r
    ::shutdown:/bin/umount -a -r
    ::shutdown:/sbin/swapoff -a
    [color="#ff3366"](说明:init
    [color="#ff3366"]进程执行需读取的配置文件:inittab[color="#ff3366"] 3
    KERNEL
    [color="#ff3366"]起来之后,[color="#ff3366"]将运行第一个进程--init,实际上执行的为
    Busybox
    [color="#ff3366"]/sbin/init
    [color="#ff3366"](这里直接就是linuxrc) init
    [color="#ff3366"]的工作是根据/etc/inittab
    [color="#ff3366"]脚本来进行系统的初始化
    [color="#ff3366"]2:格式:::runlevels:action:process
    sysinit
    --
    [color="#ff3366"]指定运行的第一个程序/[color="#ff3366"]脚本
    respawn
    --
    [color="#ff3366"]若该进程结束,init
    会再起
    一个进程执行同样的命令

    ctrlaltdel
    ——
    指定在用户按下
    Ctrl-Alt-Del
    [color="#ff3366"]时执行的命令
    3
    init
    [color="#ff3366"]进程运行脚本:
    /etc/init.d/rcS,

    (在
    rcS
    [color="#ff3366"]中挂载文件系统,[color="#ff3366"]并且执行脚本/usr/etc/rc.local--[color="#ff3366"]看具体配置如何)
    3

    rc.local
    [color="#ff3366"]中继续设置,最后运行用户的启动运行脚本
    init.sh
    [color="#ff3366"]
    [color="#006400"](4)[color="#006400"]创建/etc/init.d[color="#006400"]文件夹和rcS[color="#006400"],在rcS[color="#006400"]中添加
    #!
    /bin/sh

    echo "^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"
    echo
    "^     Welcome to YAFFS root filesystem!  
    ^"
    echo
    "^                  
    soso                 
    ^"
    echo
    "^^^^^^^^^^^^^^^^09-3-18^^^^^^^^^^^^^^^^^^^^"
    /bin/hostname
    -F /etc/host
    # mount all filesystem defined in "fstab"
    ln
    -s /dev/vc/0 /dev/tty1
    echo
    "# mount all..........."
    /bin/mount -a
    echo
    "# Starting mdev........."
    #/bin/echo /sbin/mdev >
    /proc/sys/kernel/hotplug
    #mdev -s
    #/sbin/ifconfig
    lo 127.0.0.1
    #/sbin/ifconfig eth0 192.168.0.55
    #/sbin/route add
    default gw 192.168.0.1
    (说明:
    [color="#003300"](5)[color="#003300"]创建host[color="#003300"]文件
    soso
    [color="#003300"](6)[color="#003300"]创建mdev.conf文件
    (空文件)

    [color="#003300"](7)[color="#003300"]复制主机/etc/[color="#003300"]下面的文件passwd,
    group, shadow
    [color="#003300"]文件到/etc
    #
    cp /etc/group .
    # cp /etc/passwd .
    # cp /etc/shadow .
    修改passwd中用户使用的shell名称。FC6上默认的为bash,而vivi只支持ash。
    root:x:0:0:root:/root:/bin/bash
    ----> root:x:0:0:root:/root:/bin/ash
    [color="#ff0000"](说明:
    [color="#ff0000"]格式:account:password:UID:GID:GECOS:directory:shell
    account
         [color="#ff0000"]用户段
    [color="#ff0000"] password
        [color="#ff0000"]密码段
    [color="#ff0000"] UID
             user id [color="#ff0000"]段
    [color="#ff0000"] GID
             group id [color="#ff0000"]段
    GECOS:
          [color="#ff0000"]信息段([color="#ff0000"]可选)
    [color="#ff0000"] directory
       [color="#ff0000"]用户登陆目录
    [color="#ff0000"] shell
           login 时运行的
    shell
    [color="#ff0000"])
    [color="#003300"](8)[color="#003300"]修改各文件和文件夹的权限
    #
    chmod 755 /rootfs/etc/init.d/rcS
    # chmod 755 /rootfs/etc/host
    [color="#000080"]-------------yaffs[color="#000080"]文件系统映像的制作---------
    使用mkyaffsimg程序可以把一个目录做成一个yaffs映像文件,然后使用usb下载到板子上。进入文件系统目录层,使用以下命令。
    #mkyaffsimage
    rootfs filesystem.yaffs   
    这样就会在该目录下生成rootfs.img映像文件,下载到开发板运行即可。
    [color="#0000ff"]--------------cramfs[color="#0000ff"]文件系统映像的制作(cramfs[color="#0000ff"]压缩率比较高)------------
    [color="#0000ff"]FTP[color="#0000ff"]中下载cramfs-1.1.tar.gz[color="#0000ff"],解压到自己设定的目录下,[color="#0000ff"]如:
    tar
    xzvf cramfs-1.1.tar.gz –C
    /home/
    [color="#0000ff"]进入生成有mkcramfs[color="#0000ff"]文件的目录下(一定要进入此目录,否则会提示找不到该命令)
    [color="#0000ff"]输入命令:#./mkcramfs
    / rootfs rootfs.cramfs
    [color="#0000ff"]在当前目录下即生成rootfs.cramfs[color="#0000ff"]映像文件。到此Linux[color="#0000ff"]操作系统移植完毕。
                   
                   
                   
                   
                   

    本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/108148/showart_2123181.html
  • 您需要登录后才可以回帖 登录 | 注册

    本版积分规则 发表回复

      

    北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
    未成年举报专区
    中国互联网协会会员  联系我们:huangweiwei@itpub.net
    感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

    清除 Cookies - ChinaUnix - Archiver - WAP - TOP