下载Busybox源码包并解压 tar -vxjf busybox-1.29.0 tar.bz2

修改Makefile,添加平台架构与编译器

ARCH ?= arm CROSS_COMPILE ?= /user/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-

上面CROSS_COMPILE使用的绝对路径!防止编译出错

Busybox中文字符支持

配置Busybox

编译Busybox,并指定编译结果的存放目录 make install CONFIG_PREFIX=/home/lituo/linux/nfs/rootfs,这样编译结束之后会将busybox的所有工具和文件保存在rootfs中

向根文件系统添加lib库

创建其他文件夹:在根文件中创建其他文件夹,eg:dev、proc、mnt、sys、tmp、root等

根文件系统初步测试:测试方法就是使用NFS挂载,这时候uboot里面的bootarg环境变量会设置“root”的值,所以我们将root的值改为NFS挂载即可,在linux内核源码里面有相应的文档讲解如何设置,

文档为 Documentation/filesystems/nfs/nfsroot.txt, 对应格式如下:

root=/dev/nfs nfsroot=[:][,] ip=::::::::

详情如下:

:服务器 IP 地址,也就是存放根文件系统主机的 IP 地址,那就是Ubuntu的IP地址,比如我的Ubuntu主机 IP 地址为 192.168.0.211

:根文件系统的存放路径,比如我的就是/home/lituo/linux/nfs/rootfs

:NFS 的其他可选选项,一般不设置

:客户端 IP 地址,也就是我们开发板的 IP 地址,Linux内核启动以后就会使用此 IP 地址来配置开发板。此地址一定要和 Ubuntu 主机在同一个网段内,并且没有被其他的设

备使用,在 Ubuntu 中使用 ping 命令 ping 一下就知道要设置的 IP 地址有没有被使用,如果不能

ping 通就说明没有被使用,那么就可以设置为开发板的 IP 地址,比如我就可以设置为

192.168.0.250

: 服务器 IP 地址,前面已经说了。

: 网关地址,我的就是 192.168.0.1。

:子网掩码,我的就是 255.255.255.0。

:客户机的名字,一般不设置,此值可以空着。

: 设备名,也就是网卡名,一般是 eth0, eth1….,作者的开

发板的 ENET2 为 eth0, ENET1 为 eth1。 如果你的电脑只有一个网卡,那么基本只能是 eth0。

这里我们使用 ENET2,所以网卡名就是 eth0。

: 自动配置,一般不使用,所以设置为 off。

: DNS0 服务器 IP 地址,不使用。

: DNS1 服务器 IP 地址,不使用。

由上面的格式分析bootargs环境变量的 root值为:

root=/dev/nfs/ rw nfsroot=192.168.1.250:/home/lituo/linux/nfs/rootfs ip=192.168.0.211:192.168.0.250:192.168.0.1:255.255.255.0::eth0:off

完善根文件系统之创建/etc/init.d/rcS文件,rcS本质是一个shell脚本,用来指定Linux内核启动以后需要启动的一些服务。

完善根文件系统之创建/etc/fstab文件,在上面的rcS这个shell脚本中,有一个“mount -a”,其是自动读取并挂载 /etc/fstab 里面的东西。/etc/fsatb 定义了该挂在哪些文件。

在rootfs中创建/etc/fstab文件,fsatab在Linux开机以后自动配置哪些需要自动挂载的分区,如下格式:

:要挂载的特殊的设备,也可以是块设备,比如/dev/sda 等等。

:挂载点。

:文件系统类型,比如 ext2、 ext3、 proc、 romfs、 tmpfs 等等。

:挂载选项,在 Ubuntu 中输入“man mount”命令可以查看具体的选项。一般使用 defaults,也就是默认选项,defaults包含了rw、suid、dev、exec、auto、nouser、async。

:为 1 的话表示允许备份,为 0 不备份,一般不备份,因此设置为 0。

:磁盘检查设置,为 0 表示不检查。根目录‘/’设置为 1,其他的都不能设置为 1,其他的分区从 2 开始。一般不在 fstab 中挂载根目录,因此这里一般设置为 0。

由上面的格式分析fstab文件内容如下:

#

proc /proc proc defaults 0 0

tmpfs /tmp tmpfs defaults 0 0

sysfs /sys sysfs defaults 0 0

完善根文件系统之创建/etc/inittab文件,init程序会读取/etc/inittab这个文件。

:::

:每个指令的标识符,不能重复。但是对于busybox的init来说,有着特殊意义。对于busybox而言用来指定启动进程的控制tty,一般我们将串口或者LCD屏幕设置为控制tty。

: 对 busybox 来说此项完全没用,所以空着。

:动作,用于指定可能用到的动作。

动作 描述

sysinit 在系统初始化的时候 process 才会执行一次。

respawn 当 process 终止以后马上启动一个新的。

askfirst 和 respawn 类似,在运行 process 之前在控制台上显示“Please press Enter to activate this console.”。只要用户按下“Enter”键以后才会执行 process。

wait 告诉 init,要等待相应的进程执行完以后才能继续执行。

once 仅执行一次,而且不会等待 process 执行完成。

restart 当 init 重启的时候才会执行 procee。

ctrlaltdel 当按下 ctrl+alt+del 组合键才会执行 process。

shutdown 关机的时候执行 process。

: 具体的动作,比如程序、脚本或命令等。

配置域名解析服务器的地址

在rootfs中新建/etc/resolv.conf,输入下面内容:

nameserver 114.114.114.114

nameserver 192.168.0.1

设置完成后,ping ww.baidu.com 来测试。

Linux配置/etc/resolv.conf详解请参考:https://www.cnblogs.com/yuhaohao/p/13889240.html

linux 一运行build卡,linux_system_build相关推荐

  1. linux编译运行build.sh,linux下libwebsockets编译及实例

    最近想自己搭建一个webscoket协议的服务器,打算用libwebsockts这个库. 下载代码编译. 编写一个shell脚本 #!/bin/sh # wget http://git.warmcat ...

  2. python打卡以及Linux自动运行python文件

    python打卡以及Linux自动运行python文件 前因 分析 python代码 实现linux自动运行python文件 了解crond 开机自启设置 定时运行python文件设置 crond踩坑 ...

  3. Kali Linux下运行Sniffjoke出错的解决

    Kali Linux下运行Sniffjoke出错的解决 由于Kali Linux版本的更新和Sniffjoke发布时间久远等问题,Sniffjoke在新版本的Kali Linux中运行存在各种问题.下 ...

  4. Docker在Linux上运行NetCore系列(一)配置运行DotNetCore控制台

    Docker在Linux上运行NetCore系列(一)配置运行DotNetCore控制台 原文:Docker在Linux上运行NetCore系列(一)配置运行DotNetCore控制台 转发请注明此文 ...

  5. 深度linux怎么运行windos软件,(转自深度技术)让Ubuntu也能运行Windows程序-Wine的安装与使用...

    花了这么多心血才搞好的,我觉得此贴已经具备了置顶的素质,望版主把此贴置顶,让更多的人能来学习Linux,用好Linux.转载请注明出处. 安好了ubuntu,摆弄了几天,基本上手了,已经爱上了Linu ...

  6. linux下运行和打包electron项目遇到的错误处理(打包使用electron-builder)

    记录一下 由于windows下无法成功使用electron-builder打出linux包 https://blog.csdn.net/weixin_42050406/article/details/ ...

  7. linux系统运行flash3d,在Linux上运行STM32,快来试试!

    原标题:在Linux上运行STM32,快来试试! STM32MP1多核微处理器,带有650Mhz主频的cortex-A7双核以及一个主频为209Mhz的cortex-M4核,即片内拥有三核.很多STM ...

  8. 如何在 Linux 中运行 DOS 程序!

    导读 传统的 DOS 操作系统支持的许多非常优秀的应用程序: 文字处理,电子表格,游戏和其它的程序.但是一个应用程序太老了,并不意味着它没用了. 如今有很多理由去运行一个旧的 DOS 应用程序.或许是 ...

  9. Linux服务器运行状况全面监测

    Linux服务器运行状况全面监测 随着Linux应用的日益广泛,有大量的网络服务器使用Linux操作系统.为了全面衡量网络运行状况,就需要对网络状态做更细致.更精确的测量.SNMP协议的制订为互联网测 ...

最新文章

  1. c语言运行时显示内存不足,请问:c或c++运行时 遇到虚拟内存不足时咋办,帮优化下代码...
  2. Sciences:用膳食纤维钓出15株缓解糖尿病的细菌!
  3. php爬取ckplayer,CKplayer站外调用示例附最终效果
  4. vc采集网页内frame框架下所有元素(不指定具体table/form)-升级版
  5. 为什么读书了,还不如那些初中毕业的同学
  6. html中相同结构标签怎么区分,html标签结构总结
  7. windows 路径
  8. qt creator纯C或C++项目在windows下的命令行中文乱码解决
  9. 黑客高手是这样上网的!Vimium、Vimperator 浏览器插件让你全程用键盘快捷高效浏览网页
  10. android弹球游戏小球运动,球球跳一跳跳舞弹球
  11. iOS 下载器实现-ASDownload
  12. 微信小程序代码大于2M的一种解决方法
  13. C++ day22 继承(二)基类指针数组通过虚方法实现智能的多态
  14. 23、动画及视野拓展
  15. Volo - Rust gRPC 框架入门
  16. 力扣解法汇总2045-到达目的地的第二短时间
  17. Spring Cloud Alibaba Sentinel--分布式系统的流量防卫兵
  18. T型反馈放大电路详解
  19. vue中使用math.js
  20. 前端三种本地存储方式+indexedDB浏览器数据库存储

热门文章

  1. 大数据分析的步骤有哪些
  2. 大数据可视化技术的挑战及应对
  3. 使用 Apache JMeter™工具进行性能测试
  4. python ui测试_uiautomator2 使用Python测试 Android应用
  5. python语言写九九乘法表_怎么使用Python语言写一个九九乘法表?
  6. python导入data数据_python实现从wind导入数据
  7. 现在论文用手写还是用计算机写,毕业论文计算机手写数字识别技术完整版.docx...
  8. HashMap的工作原理--重点----数据结构示意图的理解
  9. Centos7安装NVIDIA的驱动的坑
  10. 不规则物体形状匹配综述