linux 一运行build卡,linux_system_build
下载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相关推荐
- linux编译运行build.sh,linux下libwebsockets编译及实例
最近想自己搭建一个webscoket协议的服务器,打算用libwebsockts这个库. 下载代码编译. 编写一个shell脚本 #!/bin/sh # wget http://git.warmcat ...
- python打卡以及Linux自动运行python文件
python打卡以及Linux自动运行python文件 前因 分析 python代码 实现linux自动运行python文件 了解crond 开机自启设置 定时运行python文件设置 crond踩坑 ...
- Kali Linux下运行Sniffjoke出错的解决
Kali Linux下运行Sniffjoke出错的解决 由于Kali Linux版本的更新和Sniffjoke发布时间久远等问题,Sniffjoke在新版本的Kali Linux中运行存在各种问题.下 ...
- Docker在Linux上运行NetCore系列(一)配置运行DotNetCore控制台
Docker在Linux上运行NetCore系列(一)配置运行DotNetCore控制台 原文:Docker在Linux上运行NetCore系列(一)配置运行DotNetCore控制台 转发请注明此文 ...
- 深度linux怎么运行windos软件,(转自深度技术)让Ubuntu也能运行Windows程序-Wine的安装与使用...
花了这么多心血才搞好的,我觉得此贴已经具备了置顶的素质,望版主把此贴置顶,让更多的人能来学习Linux,用好Linux.转载请注明出处. 安好了ubuntu,摆弄了几天,基本上手了,已经爱上了Linu ...
- linux下运行和打包electron项目遇到的错误处理(打包使用electron-builder)
记录一下 由于windows下无法成功使用electron-builder打出linux包 https://blog.csdn.net/weixin_42050406/article/details/ ...
- linux系统运行flash3d,在Linux上运行STM32,快来试试!
原标题:在Linux上运行STM32,快来试试! STM32MP1多核微处理器,带有650Mhz主频的cortex-A7双核以及一个主频为209Mhz的cortex-M4核,即片内拥有三核.很多STM ...
- 如何在 Linux 中运行 DOS 程序!
导读 传统的 DOS 操作系统支持的许多非常优秀的应用程序: 文字处理,电子表格,游戏和其它的程序.但是一个应用程序太老了,并不意味着它没用了. 如今有很多理由去运行一个旧的 DOS 应用程序.或许是 ...
- Linux服务器运行状况全面监测
Linux服务器运行状况全面监测 随着Linux应用的日益广泛,有大量的网络服务器使用Linux操作系统.为了全面衡量网络运行状况,就需要对网络状态做更细致.更精确的测量.SNMP协议的制订为互联网测 ...
最新文章
- c语言运行时显示内存不足,请问:c或c++运行时 遇到虚拟内存不足时咋办,帮优化下代码...
- Sciences:用膳食纤维钓出15株缓解糖尿病的细菌!
- php爬取ckplayer,CKplayer站外调用示例附最终效果
- vc采集网页内frame框架下所有元素(不指定具体table/form)-升级版
- 为什么读书了,还不如那些初中毕业的同学
- html中相同结构标签怎么区分,html标签结构总结
- windows 路径
- qt creator纯C或C++项目在windows下的命令行中文乱码解决
- 黑客高手是这样上网的!Vimium、Vimperator 浏览器插件让你全程用键盘快捷高效浏览网页
- android弹球游戏小球运动,球球跳一跳跳舞弹球
- iOS 下载器实现-ASDownload
- 微信小程序代码大于2M的一种解决方法
- C++ day22 继承(二)基类指针数组通过虚方法实现智能的多态
- 23、动画及视野拓展
- Volo - Rust gRPC 框架入门
- 力扣解法汇总2045-到达目的地的第二短时间
- Spring Cloud Alibaba Sentinel--分布式系统的流量防卫兵
- T型反馈放大电路详解
- vue中使用math.js
- 前端三种本地存储方式+indexedDB浏览器数据库存储
热门文章
- 大数据分析的步骤有哪些
- 大数据可视化技术的挑战及应对
- 使用 Apache JMeter™工具进行性能测试
- python ui测试_uiautomator2 使用Python测试 Android应用
- python语言写九九乘法表_怎么使用Python语言写一个九九乘法表?
- python导入data数据_python实现从wind导入数据
- 现在论文用手写还是用计算机写,毕业论文计算机手写数字识别技术完整版.docx...
- HashMap的工作原理--重点----数据结构示意图的理解
- Centos7安装NVIDIA的驱动的坑
- 不规则物体形状匹配综述