制作嵌入式busybox rootfs系统

news/2024/11/28 13:34:30/

1、busybox下载

BusyBox

此篇使用版本BusyBox 1.31.1 (stable)

2、设置交叉编译环境变量

source environment-setup-aarch64-poky-linux或者其他架构的编译链工具

3、busybox编译设置

cd busybox-1.31.1

修改根目录Makefile中的CROSS_COMPILE和ARCH参数

比如ARCH ?= arm64 

也可以在make menuconfig中的选项进行配置:

对如下进行配置:

Path to sysroot--->/home/rd/xxx_test/tool/sysroots/aarch64-poky-linux

Additional CFLAGS--->--sysroot=/home/rd/xxx_test/tool/sysroots/aarch64-poky-linux)

Additional LDFLAGS进行配置--->--sysroot=/home/rd/xxx_test/tool/sysroots/aarch64-poky-linux)

另外建议选择动态库编译,静态会导致占用空间大

4、编译

make ARCH=arm64 CROSS_COMPILE=arm-linux-gnueabihf-

5、安装

make CONFIG_PREFIX=./installed install //安装到指定目录 或者选择其他目录

6、生成产物

ls

bin  dev  etc  home  lib  linuxrc  mnt  opt  proc  root  sbin  sys  tmp  usr  var

注意: 在rootfs 上添加目录 dev etc home mnt opt proc root sys tmp var

fstab内容:

proc                 /proc                proc       defaults              0  0
devpts               /dev/pts             devpts     mode=0620,gid=5       0  0
tmpfs                /tmp                 tmpfs      defaults              0  0
sysfs                /sys                 sysfs      defaults              0  0
inittab内容:

::sysinit:/etc/init.d/rcS

ttySTM0::respawn:-/bin/ash

::restart:/sbin/init

::shutdown:/bin/umount -a -r

或者

::sysinit:/etc/init.d/rcS
tty2::respawn:/bin/getty -L tty2 115200 vt100
console::askfirst:/bin/sh

profile内容:

export PS1="[\u@\h \W]# " if [ ! -z ${SSH_TTY} ]; then export PATH=/sbin:/usr/sbin:/bin:/usr/bin fi

group内容:

root:x:0:

passwd内容:

root:x:0:0:root:/root:/bin/sh

rcS内容:

echo "Starting rcS..."

echo "++ Mounting filesystem"
echo /sbin/mdev > /proc/sys/kernel/hotplug

也可参考如下:

#! /bin/sh
#
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:
runlevel=S
prevlevel=N
umask 022
export PATH runlevel prevlevel
#Charactor modules
/bin/mknod /dev/pts/0 c 136 0
/bin/ln -s /dev/v4l/video0 /dev/video0
/bin/ln -s /dev/fb/0 /dev/fb0
/bin/ln -s /dev/vc/0 /dev/tty1
/bin/ln -s /dev/scsi/host0/bus0/target0/lun0/part1 /dev/sda1
/bin/mount -t proc none /proc
/bin/mount -t tmpfs none /tmp
/bin/mount -t tmpfs none /var
/bin/mkdir -p /var/lib
/bin/mkdir -p /var/run
/bin/mkdir -p /var/log
/sbin/ifconfig lo 127.0.0.1
/sbin/ifconfig eth0 192.168.0.111 up
/bin/hostname -F /etc/hostname

注:

一些情况需要先创建节点“console”、“null”。否则在系统启动时内容会提示以下错误:
Warning: unable to open an initial console.
Kernel panic - not syncing: Attempted to kill init!
创建节点的命令如下:
# mknod dev/console c 5 1
# mknod dev/null c 1 3


http://www.ppmy.cn/news/109768.html

相关文章

基于ChatGPT的文本生成

ChatGPT是一种基于Transformer的自然语言处理模型,能够生成自然而流畅的文本序列。在文本生成领域,ChatGPT模型具有非常广泛的应用,可以用于实现文本摘要、文本生成、翻译等多种任务。 一、模型架构 基于ChatGPT的文本生成模型与基于ChatGP…

创建第一个.NET MAUI应用

1.打开VS2022,创建新项目,并选择.NET MAUI应用,然后点击下一步 2.输入项目相关配置,然后点击下一步 3. 选择框架版本,然后点击创建 4.项目创建成功后会自动打开概述页 5.平台框架切换 6.启动应用,如有下图提示,启动开发者模式 成功启动应用 7.修改应用 修改MainPage.xml如下图…

手写一个webpack插件(plugin)

熟悉 vue 和 react 的小伙伴们都知道,在执行过程中会有各种生命周期钩子,其实webpack也不例外,在使用webpack的时候,我们有时候需要在 webpack 构建流程中引入自定义的行为,这个时候就可以在 hooks 钩子中添加自己的方…

Java性能权威指南-总结2

Java性能权威指南-总结2 性能测试方法原则2:理解批处理流逝时间、吞吐量和响应时间批处理流逝时间吞吐量测试 原则3:用统计方法应对性能的变化 性能测试方法 原则2:理解批处理流逝时间、吞吐量和响应时间 性能测试的第2条原则是多角度审视应用性能。应该测量哪个指标取决于对…

python+django高校人事管理系统vue

本高校人事管理系统以Django作为框架,Python语言,B/S模式以及MySql作为后台运行的数据库。本系统主要包括以下功能模块:用户、院长、职称申报、工资信息、绩效信息、奖惩信息、招聘、科系分类等模块。 本文着重阐述了高校人事管理系统的分析、…

LeetCode 560 和为 K 的子数组

LeetCode 560 和为 K 的子数组 来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/subarray-sum-equals-k/description 博主Github:https://github.com/GDUT-Rp/LeetCode 题目: 给你一个整数数组 …

SOLIDWORKS钣金成形工具

SOLIDWORKS钣金成形工具主要用来创建使用冲制或压印制作的钣金特征。成形工具的工作原理是:几何体代表冲制或压印形成的凹陷区域,停止面是指工具要被应用到的钣金面,也可以定义移除面,若定义了移除面,则该面会形成通孔…

大数据NoSQL数据库HBase集群部署——详细讲解~

大数据NoSQL数据库HBase集群部署 简介 HBase 是一种分布式、可扩展、支持海量数据存储的 NoSQL 数据库。 和Redis一样,HBase是一款KeyValue型存储的数据库。 不过和Redis设计方向不同 Redis设计为少量数据,超快检索HBase设计为海量数据,…