天嵌 ARM开发社区

 找回密码
 注册
查看: 3231|回复: 5

学习韦东山嵌入式linux视频之自己制作最小根文系统

[复制链接]
huang301 发表于 2012-4-15 19:05:15 | 显示全部楼层 |阅读模式
本帖最后由 huang301 于 2012-4-15 19:08 编辑

一、移植Busybox
    所谓制作根文件系统,就是创建各种目录,并且在里面创建各种文件。对于创建一个最下根文件系统,只需要在/dev目录下创建必要的设备节点、在/etc目录下创建一些配置文件就可以了,如果Busybox使用动态链接库,那还要在/lib目录下包含库文件。Busybox支持uClibc库和glibc库,对Linux2.2.x之后的内涵支持良好。Busybox的源码可以从http://www.busybox.net/downloads/下载,我下载的是busybox-1.7.5.tar.bz2.
(1)解压busybox
$tar -jxvf busybox-1.7.5.tar.bz2
(2)配置busybox
$make menuconfig
   Busybox Settings  --->
     Build Options  --->
       [ ] Build BusyBox as a static binary (no shared libs) (是否编译成静态库,在这里我没选,使用动态库)
     Busybox Library Tuning  --->  
      
  •    Tab completion         (tab缩进功能)                                             
          
  •      Username completion                                    
          
  •    Fancy shell prompts  (这两项在创建/etc/profile文件时要用,这样可以命令行有提示符显示)   
    其它配置自己可以参考着修改,我就没动了。退出记得保存!
    (3)编译和安装Busybox
    3.1编译之前首先修改Makefiel,使用交叉编译器
    $vim Makefile
    175 ARCH        ?= arm
    176 CROSS_COMPILE   ?= arm-linux-gnu-
    然后执行"make"命令编译busybox
    如果出现什么错误,你尽可上网搜索,一般都可以解决。我这里没什么问题。
    3.2安装"make CONFIG_PREFIX=/home/minifs stall"
    CONFIG_PREFIX=/home/minifs为指定安装目录(前提你首先得在home目录创建minifs目录,只要mkdir /home/minifs)
    如果你没有指定只执行:make install 那么在默认的busybox-1.7.5目下会生成_stall目录,
    $ls /home/minifs
    bin  linuxrc  sbin  usr
    如果是make instll 那么busybox-1.7.5/_stall目录下会有一样的结果。
    二、使用glibc库
    在你安装交叉工具链时,已经生成了glibc库,可以直接使用它来构建根文件系统。
    在上面我用的是编译动态库,所以要拷贝一些应用程序使用的库,否则你交叉编译应用程序要加上-static表示静态链接
    这样生成的文件非常大。
    首先进入我/home/minifs
    $cd /home/minifs
    $mkdir lib
    $cp /crosstool/gcc-3.4.5-glibc-2.3.6/arm-linux-gnu/arm-linux-gnu/lib/*so* ./lib -a  
    注意:记得加-a否则非常大,-a可以把软连接形式保存,不用直接拷贝
    顺便可以给库瘦身,这样可以减小库的大小
    $arm-linux-gnu-strip lib/* sbin/* bin/*
    $du -h lib   (可以看出减小了很多,不信你不用瘦身试试)
    3.3M lib
    这样库就加好了!
    三、构建etc目录
    etc目录下的内容取决于要运行的程序,init进程根据/etc/inittab文件来创建其它进程,比如调用脚本文件配置IP地址、
    挂接其它文件系统,最后启动shell等。
    在这里我们只要仔etc目录下创建3个文件:etc/inittab、etc/init.d/rcS、etc/fstab、etc/profile。
    (1)创建etc/inittab文件
    内容如下:
    s3c2410_serial0::askfirst:-/bin/sh
    :restart:/sbin/init
    ::ctrlaltdel:/sbin/reboot
    ::shutdown:umount -a -r
    (2)创建etc/init.d/rcS文件
    内容如下:
    mount -a
    mkdir /dev/pts
    mount -t devpts devpts /dev/pts
    echo /sbin/mdev > /proc/sys/kernel/hotplug
    mdev -s
    (3)创建etc/fstab文件
    内容如下:
    #device       mount-point    type   options    dump  fsck  order
    proc          /proc          proc    defaults    0    0
    sysfs           /sys           sysfs   defaults    0   0
    tmpfs          /temp         tmpfs    defaults     0   0
    tmpfs           /dev          tmpfs   defaults    0    0
    (4)创建etc/profile文件 (前面配置busybox提到,用于命令行提示符号)
    内容如下:
    #!/bin/sh
    export HOSTNAME=caoyi
    export USER=root
    export HOME=root
    export PS1="[$USER@$HOSTNAME \W]\#"
    PATH=/bin:/sbin:/usr/bin:/usr/sbin
    LD_LIBRARY_PATH=/lib:/usr/lib:$LD_LIBRARY_PATH
    export PATH LD_LIBRARY_PATH
    四、创建其它目录
    创建一些常用的目录,只要执行命令:
    $cd /home/minifs
    $mkdir dev home temp proc sys
    五、还要创建两个基本的设备文件
    $cd /home/minifs/dev
    $mknod console c 5 1
    $mknod null c 1 3
        至此一个最小根文件系统已经制作成功,里面含有命令行提示符、mdev功能!那么你可以通过NFS挂载到你的开发板做其它实验。
    如果你觉得有点小,那么你可以在这个基础上扩展。


  • 陈世超 发表于 2012-4-15 19:38:51 | 显示全部楼层
    呵呵...不错,后面的驱动移植也分享吧
    honghaoyang 发表于 2012-4-16 12:23:55 | 显示全部楼层
    楼主这个是不是   嵌入式linux最小系统启动  哦?
     楼主| huang301 发表于 2012-4-16 19:02:16 | 显示全部楼层
    honghaoyang 发表于 2012-4-16 12:23
    楼主这个是不是   嵌入式linux最小系统启动  哦?

    可以直接用nfs挂载文件系统。。。。。我是参照韦东山那本书和他的视频做的
    honghaoyang 发表于 2012-4-16 20:18:02 | 显示全部楼层
    我是问:你发的这个帖是不是  最小系统启动?:)

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?注册

    x
     楼主| huang301 发表于 2012-4-17 15:31:53 | 显示全部楼层
    honghaoyang 发表于 2012-4-16 20:18
    我是问:你发的这个帖是不是  最小系统启动?

    恩 是最小系统驱动的
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

    Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号 )

    GMT+8, 2024-5-4 04:53 , Processed in 1.046882 second(s), 19 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

    快速回复 返回顶部 返回列表