使用buildroot构造nanopi-neo文件系统

nanopi相关系列开发板具有超高性价比,广受创客欢迎。在官网中下载到的镜像系统都是ubuntu,debian等linux发行版,这些发行版运行于linux上优点明显。而嵌入式平台上需要根据需要裁剪相关的库和命令。而构造文件系统使用普遍的工具是busybox和buildroot。

Buildroot是一款使用交叉编译来简化和自动化为嵌入式系统构建完整Linux系统的过程的工具。相比以前使用的busybox发现功能更强大,支持很多的库,以前使用busybox很多库需要自己去编译安装比如i2c-tools,alsa-lib还有网络,文件处理很多很多库和命令,而通过buildroot很多开源都可以一键make menuconfig配置就可以搞定。

buildroot源码下载
git clone git://git.buildroot.net/buildroot

make menuconfig 设置

  •  设置Target options
设置 Target Architecture为cortex-A7
      Target Architecture为ARM(little endian)
-   Target Architecture (ARM (little endian))  --->                        │ │
  │ │        Target Binary Format (ELF)  --->                                       │ │
  │ │        Target Architecture Variant (cortex-A7)  --->                          │ │
  │ │        Target ABI (EABIhf)  --->                                              │ │
  │ │        Floating point strategy (VFPv4-D16)  --->                              │ │
  │ │        ARM instruction set (ARM)  --->  

  •  设置工具链 ToolChain
  • 如下所示,设置使用外部工具链,选择已安装在本地的4.9版本的arm-linux-gcc编译器,注意外部编译器的内核头文件版本应该和菜单External toolchain kernel headers series这一项保持一致
  • C库选择glic/eglic,选择该编译器工具链支持SSP,RPC和C++
    Toolchain type (External toolchain)  --->                              │ │
  │ │        *** Toolchain External Options ***                                     │ │
  │ │        Toolchain (Custom toolchain)  --->                                     │ │
  │ │        Toolchain origin (Pre-installed toolchain)  --->                       │ │
  │ │    (/home/wu/arm-projiect/nanoPI_app_toolchain/gcc-x64/4.9.3/) Toolchain path │ │
  │ │    (arm-linux) Toolchain prefix                                               │ │
  │ │        External toolchain gcc version (4.9.x)  --->                           │ │
  │ │        External toolchain kernel headers series (3.10.x)  --->                │ │
  │ │        External toolchain C library (glibc/eglibc)  --->                      │ │
  │ │    [*] Toolchain has SSP support?                                             │ │
  │ │    [*] Toolchain has RPC support?                                             │ │
  │ │    [*] Toolchain has C++ support?                                       
  •  系统配置 System configuration
  • 进入 System configuration 菜单,对目标系统进行配置,包括主机名称( System hostname)、 欢迎旗标( System banner)、初始化系统( Init system)、设备管理方式( /dev management)、 登录方式和 Shell
    Root FS skeleton (default target skeleton)  --->                       │ │
  │ │    (wu) System hostname                                                       │ │
  │ │    (Welcome to Buildroot) System banner                                       │ │
  │ │        Passwords encoding (md5)  --->                                         │ │
  │ │        Init system (BusyBox)  --->                                            │ │
  │ │        /dev management (Dynamic using devtmpfs + mdev)  --->                  │ │
  │ │    (system/device_table.txt) Path to the permission tables                    │ │
  │ │    [ ] support extended attributes in device tables                           │ │
  │ │    [ ] Use symlinks to /usr for /bin, /sbin and /lib                          │ │
  │ │    [*] Enable root login with password                                        │ │
  │ │    ()    Root password                                                        │ │
  │ │        /bin/sh (busybox' default shell)  --->                                 │ │
  │ │    [*] Run a getty (login prompt) after boot  --->   
  •  软件包配置

   buidlroot相比busybox提供了很多软件包,比如alsa-utils,ffmpeg,iwlist等等,只需要在菜单里勾选然后编译

  •  编译buildroot

在终端输入 make 命令, Buildroot 即开始编译。在此过程中,会从远程服务器下载所选 中的软件包,整个过程时间取决于网络状况

  •  完善文件系统

编译完成后,在output/images目录下生成各种镜像文件,先使用网络文件系统mount nfs,将output/images目录下的rootfs.tar解压到nfs_root目录

  • cd nfsroot 增加/dev/null 文件

cd dev/
sudo mknod null c 1 3
  • 以 ramfs 方式挂载/dev 目录(以 ramfs 方式挂载/dev 目录,能够提高 mdev 生成设备文件的速度)
vim  etc/init.d/S10mdev 
在此配置文件 /sbin/mdev -s前面增加
mount -t ramfs mdev /dev
mkdir -p /dev/pts
mkdir -p /dev/shm
  • 添加命令提示符
修改etc/profile 添加 export PS1='\u@\h:\w\$ '
  • 修改uboot命令行的参数 支持挂接nfs
进入uboot命令行
bootcmd设置:setenv  bootcmd run boot_normal
bootargs设置: setenv bootargs console=${console} root=/dev/nfs rootwait init=${init} loglevel=${loglevel} nfsroot=192.168.1.168:/home/wu/buildroot/nfs_root ip=192.168.1.11:192.168.1.168:192.168.1.1:255.255.255.0::eth0:off
启动 : boot
  • 成功启动文件系统
Welcome to Buildroot
wu login: [   15.150068] eth0: no IPv6 routers present

Welcome to Buildroot
wu login: root
login[221]: root login on 'console'

猜你喜欢

转载自blog.csdn.net/qq_18737805/article/details/86411027
今日推荐