busybox rootfs 与 ubuntu rootfs_boot.img root

busybox rootfs 与 ubuntu rootfs_boot.img root下载busybox的源码,解压后,设定ARCH和CROSS_COMPILE的两个基本环境变量,选择defconfig作为默认配置,大部分的busybox工具都会被编译出来。如果不指定输出目录,默认输出到根目录的_install目录下面,如果需要指定目录,配置CONFIG_PREFIX=/a/b/c/rootfs,这样make生成的/bin,/sbin,/usr三个默认文件夹就直接在rootfs目录下。makeARCH=armCROSS_COMPILE=arm…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

 下载busybox的源码,解压后,设定ARCH 和 CROSS_COMPILE的两个基本环境变量,选择defconfig作为默认配置,大部分的busybox 工具都会被编译出来。
      如果不指定输出目录,默认输出到根目录的_install目录下面,如果需要指定目录,配置CONFIG_PREFIX=/a/b/c/rootfs, 这样make生成的 /bin, /sbin, /usr三个默认文件夹就直接在rootfs目录下。      

make ARCH=arm CROSS_COMPILE=arm-linux-gnu-eabihf-   defconfig

      这样,busybox的工具文件都生成了, 默认情况下,busybox的可执行文件,不是静态链接的, 可以用readelf -d命令查看busybox依赖的库,所以需要把刚才用的交叉编译comipler的lib文件,都copy到rootfs的lib目录下。(这里要删除*.a *.la *.o等文件,只保留*.so文件)     

 mkdir rootfs/lib
   cp -rf /toolchain/arm-linux-gnu-eabi/lib/libc /rootfs/lib

      这里, 默认的libc库文件都比较大,包含了调试信息,符号信息等,不适合在嵌入式的有限内存空间场景,因此需要做好裁剪,使用strip命令去除debug信息。
      同样的, libc/usr/lib/下面的库文件,也需要复制到rootfs下面。这里要删除*.a *.la *.o等文件,只保留*.so文件。 同时也用strip命令裁剪库文件。
      

mkdir -p rootfs/usr/lib
cp -rf /toolchain/arm-linux-gnu-eabi/lib/libc/usr/lib

     添加其他rootfs要用的默认目录文件,dev,proc, mnt, sys, tmp, root,etc。
     到这里,rootfs的骨架已经成型,接着要做的是添加kernel挂载rootfs后,要运行的init事务。
     kernel挂载rootfs为根目录,替换掉系统刚刚启动时创建的临时的vfs,并开始运行第一个程序,该程序默认存放在rootfs根目录下,名字是linuxrc或者是init(如果bootargs设置了init=/linuxrc就允许linuxrc)。
     linux先执行 /etc/inittab, 然后调用/etc/init.d/rcS, 最后是执行/etc/profile。
     所以我们要做的修改inittab,让kernel按指定的次序,依次执行启动脚本。下面是实际的inittab的例子:
     

::sysinit:/etc/bspinit
::sysinit:/etc/rc.sysinit
::respawn:-/bin/sh

bspinit内容如下

#!/bin/sh
mount -n -t tmpfs tmpfs /tmp
mount -n -t proc proc /proc
mount -n -t sysfs sysfs /sys
mount -n -t tmpfs -o mode=0755 udev /dev

# telnetd need later line.
mkdir /dev/pts
mount -t devpts devpts /dev/pts

# Oprofile
if [ -e /var/lib/oprofile ]; then
        mount -t tmpfs tmpfs /root
        mount -t tmpfs tmpfs /var/lib/oprofile
fi

[ -e /proc/sys/kernel/hotplug ] && echo "" > /proc/sys/kernel/hotplug
start-stop-daemon --start --quiet --exec /sbin/udevd -- --daemon
/sbin/udevadm trigger --subsystem-nomatch=usb
/sbin/udevadm settle --timeout=10

    在实际项目中,可以自己定义etc里面的内容,然后生成一个单独的emmc分区文件如etc_rw,系统启动的时候,挂载在rootfs的/etc/目录上,替换掉默认的etc内容。
    这样,一个完整可用的rootfs就创建完成。由嵌入式image生成脚本,完成后续的打包,放入不同的分区文件,写入emmc之中。

参考链接: https://blog.csdn.net/u012247418/article/details/106021389 
 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/185225.html原文链接:https://javaforall.net

(0)
上一篇 2022年10月6日 下午6:16
下一篇 2022年10月6日 下午6:16


相关推荐

  • phpstorm 激活码 suspend[在线序列号]

    phpstorm 激活码 suspend[在线序列号],https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月18日
    73
  • 私有云的构建组成

    私有云的构建组成无论在公有云还是私有云中 你都无需去考虑底层基础设施 而只需要通过虚拟机和网络处理业务 当然 硬件在供应商那里 如果你正在构建一个私有云 会有很多选项来决定如何去构建它 每个选项都有不同的特性 安全性能和成本 但是在任何一种情况下 你都必须保留大量的安全责任 私有云这些选项与传统的服务器部署模式类似 你可以部署在自己的服务器上 也可以在一个联合本地中心部署 你甚至可以在 托管但是专用 的基础上

    2026年1月19日
    3
  • currentstyle 织梦_dede织梦 arclist标签完美支持currentstyle属性[通俗易懂]

    currentstyle 织梦_dede织梦 arclist标签完美支持currentstyle属性[通俗易懂]由于客户需求,所以进行对文章的arclist标签进行设置当前样式(currentstyle),修改前记得备份。dede版本v5.7sp找到PHP修改:include/taglib/arclist.lib.php1、搜索:$channelid=$ctag->GetAtt(‘channelid’);在下面插入:$currentstyle=$ctag->GetAtt(‘current…

    2022年7月14日
    26
  • navicat 1146错误「建议收藏」

    navicat 1146错误「建议收藏」打开新安装的navicat后,有个test_3306的mysql连接,里面有写默认的mysql、information_schema、sys、performance_schema数据库,我以为这是没用的就删除了,之后建立自己的mysql连接后,打开连接报错1146-Table’historyhistoryperformance_schema.session_status’doesn’texist。查阅资料后了解mysql、information_schema、sys、performance_s

    2022年6月7日
    186
  • 浙江新增python编程_9月起,浙江省八年级新增Python编程课,未来编程是处理大数据的手段…「建议收藏」

    浙江新增python编程_9月起,浙江省八年级新增Python编程课,未来编程是处理大数据的手段…「建议收藏」原标题:9月起,浙江省八年级新增Python编程课,未来编程是处理大数据的手段最近一个非常火爆的话题在家长群引起热议——浙江省中小学学习编程。浙江官方教育部宣布:今年9月份开始的新学期,三到九年级信息技术课将替换新教材。其中,八年级将新增Python课程内容。新高一信息技术编程语言由VB替换为Python,大数据、人工智能、程序设计与算法等内容按照教材规划五六年级开始接触。下面我们来具体看一…

    2022年5月13日
    51
  • QList 用法

    QList 用法QList 是一种表示链表的模板类 QList lt T gt 是 Qt 的一种泛型容器类 它以链表方式存储一组值 并能对这组数据进行快速索引 还提供了快速插入和删除等操作 QList QLinkedList 和 QVector 提供的操作极其相似 对大多数操作来说 我们用 QList 就可以了 其 API 是基于索引 index 的 因此用起来比 QLinkedList 更方便 QLinkedList 的 AP

    2026年3月17日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号