谷动谷力

 找回密码
 立即注册
查看: 1227|回复: 0
收起左侧

linux开发笔记--busybox根文件系统制作

[复制链接]
发表于 2022-11-23 23:16:56 | 显示全部楼层 |阅读模式
linux开发笔记--busybox根文件系统制作

一、什么根文件系统

文件系统:ntfs ext1\2\3\4 yaffs(nandflash) jffs2(norflash)
                 nfs:网络文件
                 cramfs //只读的文件系统

搭建一个系统

有三部分:
bootloader   ---  u-boot
系统镜像     ---  uImage
文件系统     ---  制作根文件系统

系统镜像如何找到文件系统

1、本地挂载 :一般用于真正的产品

硬盘启动
U盘启动
DVD驱动
---------------------------------
对于A9会从emmc或者sd卡挂载本地系统

2、网络挂载 : 主要用于调试,调试驱动

nfs文件系统挂载

二、编译、挂载根文件系统(busybox软件包)

专用:MP3 --- 为播放音乐 启动Linux系统后自动开启播放器
根文件系统:
1、配置文件
2、应用程序(ls cp tar pwd .....)
------------------
3、驱动:设备节点
4、库

--------------------------------------------------
http://www.busybox.net/  : 可以从此处下载busybox软件包
--------------------------------------------------
2.1、配置

1、修改Makefile -- 修改交叉编译器:arm-linux-
2、使用make menuconfig配置

Busybox Settings  --->
          Build Options  --->
                  //使不使用静态编译:一般不使用静态编译
                  [ ] Build BusyBox as a static binary (no shared libs) (NEW)
                   (arm-linux-) Cross Compiler prefix  //配置交叉编译器
         Installation Options ("make install" behavior)  --->

         Busybox Library Tuning
                
  •    Tab completion (NEW)  //tab功能补全
                   
    编译应用程序:有两种方式

    1、静态:链接 - 把相关库全部链接进应用程序
    优点:应用程序放到哪里都可以执行
    缺点: 空间比较大

    2、动态:  链接 -- 把相关库保留链接符号
    优点:编译出来应用程序比较小
    缺点:需要相应库

    gedit :g桌面 -- 编辑器
    kwrite: x桌面 -- 编辑器

    bin     :存放常用的linux命令  
    linuxrc : 链接文件:他是init进程 1号进程 ---Linux启动后第一执行应用程序
    sbin    : 存放系统命令
    usr     : 存放用户的命令
    lib     : 库
    etc     : 配置文件
    dev     : 设备文件
    打开/dev/console作为
    标准输入
    标准输出
    标准错误
                   
    crw------- 1 root root 5, 1 12-16 09:10 /dev/console                               
    用法:mknod 名称 类型 [MAJOR MINOR]
    在dev目录下创建两个设备节点:
    mknod console c 5 1
    mknod null c 1 3
    --------------------------------------

    2.2、编译

    make

    2.3、安装
    make install

    2.4、最小根文件系统

    添加lib dev etc
    1、拷贝lib  //  -d 链接文件保留为链接文件
    #cp /opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi/lib/* ./ -d -rf

    2、在dev目录下创建两个设备节点:
    # mknod console c 5 1
    # mknod null c 1 3
    ls /dev/console

    3、添加配置文件
    在etc目录下添加一个配置文件:inittab(格式)
    inittab格式:
    <id>:<runlevels>:<action>:<process>
    id :设备文件 //会在设备文件名添加/dev/
    runlevels : 运行级别 ignored
    action    : 运行时机
    process   :应用程序/linux命令/shell命令/脚本(bat批处理文件)
    # vim inittab
    #::sysinit:/etc/init.d/rcS   
    console::askfirst:/bin/sh         
    ::ctrlaltdel:/sbin/reboot   
    ::shutdown:/bin/umount -a -r
    ::restart:/sbin/init        

    2.5、nfs挂载根文件系统
    1、在redhat里开启nfs服务器
    # service nfs restart //检测nfs服务器是否存在
    # setup  //选上nfs 去掉iptables(防火墙)
    service iptables stop
    2、配置服务,设置nfs文件共享路径
    # vim /etc/exports
    添加
    nfs路径  ip地址(权限)
    /work/busybox/busybox-1.23.0/_intall *(rw,no_root_squash,sync)
    3、使共享路径生效
    # exportfs -r
    4、查看nfs路径有哪些
    # exportfs -v 或者 exportfs
    -----------------------------------------------------------
    验证nfs是否真正开启成功:直接使用redhat自己挂载nfs
    # ls /mnt
    # mount -t nfs 192.168.18.3:/work/busybox/busybox-1.23.0/tmp /mnt
    # ls /mnt
    # umount /mnt //卸载
    ------------------------------------------------------------
    使用开发板来挂载网络文件系统
    1、开发板要能ping通redhat(概念)
    2、配置
    2.1、虚拟机配置为桥接方式
    2.2、配置虚拟机-->编辑--->网络编辑

    3、重新配置虚拟机地址
    # service network restart

    4、关闭pc和redhat防火墙
    # service iptables stop
    --------------------------------------------------------------
    让Linux系统找到nfs文件系统:
    bootargs 知道从哪里启动文件系统
                     知道文件系统的格式
                     知道启动的第一个应用程序
                     知道以什么作为终端

    bootargs=
    root=/dev/nfs  //告诉Linux内核从什么设备挂载文件系统
    nfsroot=192.168.18.3:/work/busybox/busybox-1.23.0/tmp
           开发板ip     nfs服务器ip  网关          掩码    开发板的网卡
    ip=192.168.18.123:192.168.18.3:192.168.18.1:255.255.255.0::eth0ff //不启动自动分配ip地址
    init=/linuxrc
    console=ttySAC0
    --------------------------------------------------------------------
    set bootargs root=/dev/nfs nfsroot=192.168.43.46:/work/busybox/busybox-1.23.0/_install ip=192.168.43.123:192.168.43.46:192.168.43.1:255.255.255.0::eth0ff init=/linuxrc console=ttySAC0

    set bootargs root=/dev/nfs nfsroot=192.168.0.168:/work/root_nfs ip=192.168.0.99:192.168.0.168:192.168.0.1:255.255.255.0::eth0ff init=/linuxrc console=ttySAC0 115200 lcd=S70 ctp=2 skipcali=y


    set bootargs root=/dev/nfs nfsroot=192.168.88.168:/work/buildroot-2014.08/output/target ip=192.168.88.123:192.168.88.168:192.168.88.1:255.255.255.0::eth0ff init=/linuxrc console=ttySAC0 lcd=S70 ctp=2 skipcali=y

    /disk3/tiny4412_root
    set bootargs root=/dev/nfs nfsroot=192.168.0.101:/disk3/zxl4412_root ip=192.168.0.99:192.168.0.101:192.168.0.1:255.255.255.0::eth0ff init=/linuxrc console=ttySAC0

  • 回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|手机版|深圳市光明谷科技有限公司|光明谷商城|Sunshine Silicon Corpporation ( 粤ICP备14060730号|Sitemap

    GMT+8, 2024-4-18 22:53 , Processed in 0.084975 second(s), 34 queries .

    Powered by Discuz! X3.2 Licensed

    © 2001-2013 Comsenz Inc.

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