zoukankan      html  css  js  c++  java
  • 用bosybox制作文件系统

     1 在orangepi_sdk/source/busybox-1.25.0目录里有源码.
     2 
     3     1).  先清除编译出来的文件及配置文件
     4         make distclean
     5 
     6     2).  配置busybox
     7      make menuconfig  //进入配置界面
     8 
     9      Busybox Settings  --->          
    10         Build Options  ---> 
    11             │[*] Build BusyBox as a static binary (no shared libs)  //静态编译busybox,编出来的程序不依赖其它动态库
    12             (arm-linux-gnueabihf-) Cross Compiler prefix  //光标移动这行后,按确认键进入输入模式. 指定使用交叉编译器
    13 
    14      保存退出后, 执行make编译    
    15  3).  执行make install, 会把文件系统生成在busybox源码根目录下的_install目录
    16          然后把_install整个目录复制到/disk3/, 并改名h3fs
    17 
    18  4). 在h3fs目录里创建文件系统所需的目录
    19            mkdir dev proc sys tmp var mnt
    20            mkdir var/log                                                              
    21            mkdir var/lock                                                             
    22            mkdir var/lib                                                              
    23            mkdir var/run
    24 
    25     5). 在h3fs目录里创建etc/init.d/rcS文件(用于进文件系统后的初始化工作, 相当于PC上的/etc/rc.local)
    26             mkdir etc/init.d -p
    27         touch etc/init.d/rcS
    28 
    29     6). 
    30         修改h3fs里的etc/init.d/rcS, 增加以下内容, 指定目录使用指定的文件系统类型格式
    31           mount -t proc none /proc
    32           mount -t sysfs none /sys
    33           mount -t tmpfs none /tmp
    34           mount -t ramfs none /dev
    35           mdev -s                    //让mdev自动根据相应的驱动产生相应的设备文件
    36 
    37           syslogd    //产生日志的守护进程
    38           echo /sbin/mdev > /proc/sys/kernel/hotplug   //当硬件驱动有变化时, 调用mdev -s产生或移除相应的设备文件
    39 
    40 
    41     7). 创建h3fs里的etc/inittab文件, 增加以下内容:
    42         ::sysinit:/etc/init.d/rcS    //用rcS作系统初始化
    43         ttyS0::askfirst:-/bin/sh    //使用ttyS0作板子的控制终端
    44 
    45 
    46         8). 增加环境变量:
    47         创建h3fs里的etc/profile文件, 增加以下内容
    48             export PS1="^_^ w # "            //用于命令行前面的提示符
    49 
    50 
    51     9). 把应用程序所需的动态库从交叉编译器里复制到h3fs里. 
    52         把交叉编译器里的arm-linux-gnueabihf/libc/lib/arm-linux-gnueabihf/里的内容 复制到h3fs/lib目录  (没有lib则创建)
    53         //注意: 如果程序执行时报"not found",而不是路径的问题时就是缺少动态库了
    54 
    55     10). 以上做完以后, 还需要给整个文件系统目录设权限
    56          chmod 0777 /disk3/h3fs -R  
    57 
    58     11). 把文件系统存放到SD卡的ext分区 
    59             进入h3fs目录下:
    60           tar cf fs.tar  *    //把整个文件系统打成一个包
    61          把板上的SD卡接入PC,如果有自动挂载,则"tar xf fs.tar -C /挂载目录"解包到SD卡上
    62          如果没有自动挂载,则手动把/dev/sdb2挂载到一个目录里再解包.
    63 
    64     12). 以上操作完成后, 把SD卡放回板子上启动, 还需在uboot上设置环境变量bootargs
    65         setenv bootargs "root=/dev/mmcblk0p2 rw console=ttyS0,115200"  //此参数是告诉内核,文件系统是在第0个mmc设备的第2个分区, 用ttyS0作控制终端,波特率为115200
    66 
    67          保存好环境变量后,启动内核:
    68          [    2.696791] devtmpfs: mounted
    69          [    2.700378] Freeing init memory: 316K   //只要出现这句表示内核已成功进入文件系统里
    70 
    71          Please press Enter to activate this console.

    参考:https://blog.csdn.net/jklinux/article/details/72679950

  • 相关阅读:
    springBoot异常处理
    webSocket
    Java正则
    String.format
    JSTL-taglib
    http meta
    chrome 常用插件下载安装
    mysql 命令行个性化设置
    Entity Framework Code First
    SignalR Connection has not been fully initialized
  • 原文地址:https://www.cnblogs.com/edan/p/9117825.html
Copyright © 2011-2022 走看看