• 用busybox构建根文件系统


    一、静态编译busybox

     

    1、创建根文件系统的目录

    mkdir rootfs

    cd rootfs

    mkdir bin dev etc lib proc sbin sys mnt usr  var

    mkdir 1777 tmp  (我变更了/tmp目录的使用权,让它开启sticky位。为/tmp目录的使用权开启此位,将可保/tmp目录下所建立的文件,只有建立它的用户才有权删除)

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

    2、创建设备文件

    cd dev/

    mknod -m 666 console c 5 1

    mknod -m 666 null c 1 3

    3、安装/etc

    tar etc.tar.gz -C /xxx/rootfs

    目的:使在etc目录下产生四个文件

    Cd dev/

    Mknod -m 666 console c 5 1

    Mknod -m 666 null c 1 3

    Cd ..

    内核在引导时设备节点console,null必须存在

     

    4make menuconfig如果编译错误,就yum install ncurses-dev

    5、配置busybox:

    1、busybox setting -> build options 选中静态编译:Build busybox as a static binary

                                              installation options ->选中“do not use /usr”,选中该选项可以避免busybox被安装到宿主系统的/usr目录下,破坏宿主系统

    6、make

         make CONFIG_PREFIX=/home/flinux/rootfs/rootfs install /home/flinux/rootfs/rootfs是安装目录

     

    成功!

     

    二、动态编译busybox

     

    1、创建根文件系统的目录

    mkdir rootfs

    cd rootfs

    mkdir bin dev etc lib proc sbin sys mnt usr tmp var

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

    2、make menuconfig

    配置busybox:

    1、busybox setting -> build options 选中静态编译:Build busybox as a static binary

                                              installation options ->选中“do not use /usr”,选中该选项可以避免busybox被安装到宿主系统的/usr目录下,破坏宿主系统

    2、make make CONFIG_PREFIX=/home/flinux/rootfs/rootfs install

     

    3、安装arm-linux-gcc 的lib动态库

    Mkdir -p /nfsroot/rootfs/lib

    Cp  /usr/local/arm/4.4.1/arm-linux*/libc/lib/*.so* /nfsroot/rootfs/lib -d

     

    4、构建根文件系统

    1、构建etc目录

    1、创建etc /inittab:   

         #/etc/inittab

        ::sysinit:/etc/init.d/rcS

        ttySAC0::askfirst:-/bin/sh

        ::ctrlaltdel:/sbin/reboot

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

     

    2、创建etc/init.d/rcS

    #!/bin/sh

    ifconfig eth0 192.168.1.17

    mount –a

    修改rcS的属性:

    Chmod +x etc/init.d/rcS

    3、创建etc/fstab

    文 件/etc/fstab存放的是系统中的文件系统信息。当正确的设置了该文件,则可以通过"mount /directoryname"命令来加载一个文 件系统,每种文件系统都对应一个独立的行,每行中的字段都有空格或tab键分开。同时fsck、mount、umount的等命令都利用该程序。

    #device     mount-point    type options           dump fsck   order

    proc        /proc      proc   defaults           0    0

    tmpfs   /tmp      tmpfs   defaults       0  0

     

    2、构建dev目录

          1、静态创建设备文件

           2、使用mdev创建设备文件

                 Console  mtdblock0  mtdblock1  mtdblock2  null  ttySAC0

          用这样的命令建立:

                sudo mknod console c 5 1

                sudo mknod null c 1 3

     

    3、制作/使用yaffs文件系统映像文件

  • 相关阅读:
    循环事件绑定和原型的应用
    小知识随手记(四)
    JavaScript数组与字符串常用方法总结
    jquery获得select option的值和对select option的操作
    前端图片上传前预览
    CSS 的优先级机制总结
    汇编语言学习笔记(8)——数据处理的基本问题
    SPOJ 1811LCS Longest Common Substring
    mysql 安装完毕后登陆不了mysql的 shell 即mysql>遇到:ERROR 1045 (28000): Access denied for user 'root'@'localhost‘
    [LeetCode]Power of Two
  • 原文地址:https://www.cnblogs.com/start530/p/3834413.html
Copyright © 2020-2023  润新知