rootfs.bin_libhdfs

rootfs.bin_libhdfs忘了到底前几年看的一篇什么busybox的教程,写的及其复杂,以至于让我这么久以来一直不敢再去碰这个东西,直到今天又再次有了这个需求,特来再搞一次,没想到不到俩小时,一次搞定,特将这过程记录下来,以后也好有个参考。1环境宿主机:Ubuntu18.04交叉编译工具链:aarch64-linux-gnu-gcc7.4.0目标机:Armv8i.MX8EVKboard2下载…

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

Jetbrains全系列IDE稳定放心使用

忘了到底前几年看的一篇什么busybox的教程,写的极其复杂,以至于让我这么久以来一直不敢再去碰这个东西,直到今天又再次有了这个需求,特来再搞一次,没想到不到俩小时,一次搞定,将这过程记录下来,以后也好有个参考。

1 环境

宿主机: Ubuntu 18.04
交叉编译工具链: aarch64-linux-gnu-gcc 7.4.0
目标机: Armv8 i.MX 8 EVK board

2 下载

busybox官网下载:https://busybox.net/,我是直接git clone的最新的1_31_stable分支
git clone https://git.busybox.net/busybox -b 1_31_stable
在这里插入图片描述

3 编译

3.1 make defconfig

3.2 make menuconfig

这里我们的原则是在make defconfig的基础上尽可能少的改动这些config, 要改以下几个地方,括号里的是symbol,方便直接查找:

-> Settings
 --- Support --long-options
  [\*] Don't use /usr	#不要生成usr目录	(CONFIG_INSTALL_NO_USR)
 --- Build Options
  [\*] Build static binary (no shared libs)  #进行静态编译 (CONFIG_STATIC)
 --- Installation Options ("make install" behavior)
  What kind of applet links to install (<choice> [=y])
   (X) as soft-links	(CONFIG_INSTALL_APPLET_SYMLINKS)
 --- Library Tuning
  [\*]   Query cursor position from terminal	(CONFIG_FEATURE_EDITING_ASK_TERMINAL)

结束,保存一下

3.3 make all

make ARCH=aarch64 CROSS_COMPILE=aarch64-linux-gnu- all

No Error, 必须的

3.4 安装到指定目录

mkdir -p ./installed     //创建指定目录
make CONFIG_PREFIX=./installed  install    //安装到指定目录

在当前目录下会生成一个installed文件夹,到此我们的编译算是完成了。

4 建立ROOTFS目录结构

(起始路径为busybox的编译根目录,此处文件夹名为busybox)
# mkdir ../rootfs //创建一个rootfs目录
# cd ../rootfs //切换到rootfs目录下
# mkdir dev etc lib usr var proc tmp home root mnt sys
# cd ../busybox/ //切换到busybox目录下
# cp -ra installed/* ../rootfs
# cp -ra examples/bootfloppy/etc/* ../rootfs/etc //把fstab,init.d,inittab,profile拷贝过来,需修改
# cd ../rootfs/etc //切换到rootfs的etc目录下
# cp /etc/passwd . //拷贝宿主机的passwd文件到rootfs的etc目录中,需修改
# cp /etc/group . //拷贝宿主机的group文件到rootfs的etc目录中,需修改
# cp /etc/shadow . //拷贝宿主机的shadow文件到rootfs的etc目录中,需修改

5 修改上面的几个文件

此操作的根文件夹为rootfs文件夹内,目录名为rootfs

5.1 修改inittab

原始文件为:
		::sysinit:/etc/init.d/rcS
		::respawn:-/bin/sh
		tty2::askfirst:-/bin/sh
		::ctrlaltdel:/bin/umount -a -r

修改后为:
	---(1):开机免登陆直接进shell
	
		::sysinit:/etc/init.d/rcS
		console::askfirst:-/bin/sh
		::ctrlaltdel:/bin/umount -a -r

	---(2):开机需要登陆
	
		::sysinit:/etc/init.d/rcS
		::respawn:-/bin/login

5.2 修改profile

		PATH=/bin:/sbin:/usr/bin:/usr/sbin
		export LD_LIBRARY_PATH=/lib:/usr/lib
		/bin/hostname osee
		USER="`id -un`"
		LOGNAME=$USER
		HOSTNAME='/bin/hostname'
		PS1='[\u@\h \W]# '

5.3 修改 etc/init.d/rcS

/bin/mount -n -t ramfs ramfs /var
/bin/mount -n -t ramfs ramfs /tmp
/bin/mount -n -t sysfs none /sys
/bin/mount -n -t ramfs none /dev
/bin/mkdir -p  /var/tmp
/bin/mkdir -p  /var/modules
/bin/mkdir -p  /var/run
/bin/mkdir -p  /var/log
/bin/mkdir -p /dev/pts						//telnet服务需要
/bin/mkdir -p /dev/shm						//telnet服务需要
#echo /sbin/mdev > /proc/sys/kernel/hotplug//USB自动挂载需要
/sbin/mdev -s         						//启动mdev在/dev下自动创建设备文件节点
/bin/mount -a

#######配置网络################################
/sbin/ifconfig lo 127.0.0.1 netmask 255.0.0.0
/sbin/ifconfig eth0 192.168.1.70
/sbin/ifconfig eth0 netmask 255.255.255.0
/sbin/route add default gw 192.168.1.1 eth0
/sbin/ifconfig eth1 192.168.1.71 netmask 255.255.255.0
/sbin/route add default gw 192.168.1.1 eth1

5.4 修改etc/fstab

none   /dev/pts    devpts   mode=0622      0 0
tmpfs  /dev/shm    tmpfs    defaults       0 0

5.6 修改passwd/group/shadow文件,只保留第一行

6 拷贝宿主机的libc到rootfs

# cp -ra /usr/aarch64-linux-gnu/lib/* rootfs/lib/

7 拷贝编译安装内核模块到目标机

make modules
make modules_install INSTALL_MOD_PATH=/rootfs/lib/modules

8 打包

$ cd rootfs
$ find . | cpio -H newc -ov --owner root:root > ../initramfs.cpio
$ cd ..
$ gzip initramfs.cpio

9 解压cpio

$ cpio -idmv < initramfs.cpio

大功告成,快把卡插到目标机开发板上试下吧。

提供一个打包好的riscv64 linux可用的rootfs: https://download.csdn.net/download/wangyijieonline/85235425
提供一个打包好的arm64 linux可用的rootfs:[TBD]

参考文献:

1, 使用BusyBox制作嵌入式Linux根文件系统:https://www.cnblogs.com/Charles-Zhang-Blog/p/3419301.html
2, [Busybox]Busybox制作文件系统:https://www.cnblogs.com/aaronLinux/p/6886424.html

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • sqlserver数据库置疑_sqlserver2008数据库可疑

    sqlserver数据库置疑_sqlserver2008数据库可疑sqlsever数据库状态为置疑处理办法

    2022年8月20日
    9
  • java中random方法取值范围_Java Random.nextInt()方法,随机产生某个范围内的整数

    java中random方法取值范围_Java Random.nextInt()方法,随机产生某个范围内的整数首页>基础教程>常用类>常用Random类JavaRandom.nextInt()方法,随机产生某个范围内的整数Random.nextInt()方法,是生成一个随机的int值,该值介于[0,n)的区间,也就是0到n之间的随机int值,包含0而不包含n。语法intnextInt()//随机返回一个int型整数intnextInt(int…

    2022年7月22日
    13
  • Matlab更改计算机用户名[通俗易懂]

    Matlab更改计算机用户名[通俗易懂]Matlab更改计算机用户名Matlab在安装的时候需要填写本地计算机的用户名,会和它的激活Licence绑定,我使用的是校园版。如果安装好之后更改了自己的计算机用户名,通常是Administrator;就会导致Matlab打开报错,可以通过重新进行激活的方式来更改之前的用户名1、找到Matlab的安装路径;然后bin目录;然后winXX(XX代表计算机位数);然后找到下面的active_matlab执行这个程序,后面就按照提示就可以了(比如我的路径:E:\MATLAB\bin\win64\

    2022年10月14日
    2
  • 怎么提高网站访问速度_如何优化页面加载速度

    怎么提高网站访问速度_如何优化页面加载速度网站的加载速度不仅影响着用户体验,也会影响搜索引擎的排名,在百度推出“闪电算法”以来,将网站首屏打开速度被列入优化排名行列,并明确指定打开时间为2秒。作为前端开发的我们需要如果来优化网站的打开速度

    2022年8月5日
    9
  • 电脑蓝屏0x000000f4解决步骤_0x000000c4开机就蓝屏

    电脑蓝屏0x000000f4解决步骤_0x000000c4开机就蓝屏电脑蓝屏的问题是大家最常见到的电脑问题之一,大多时候蓝屏故障的出现都和软件有关,少数为硬件不兼容或者故障导致。这里粗略的分析下STOP:0x000000F4字段的问题,仅做参考!以下先来看看网友是怎么分析与解决问题的吧!蓝屏代码0x000000f4原因分析:知道了原因,那么就下手解决类似问题就轻松了。1.先从软处着手,如运行莫软件导致错误,建议重装该软件,一般均可解决。2.考虑是否有其它软件同时运行导致冲突的或者主机配置内存过小导致内存溢出或者耗竭的(如采用XP系统建议配置512MB内存以上或.

    2022年10月8日
    1
  • C#静态方法和非静态方法

    使用了static修饰的方法是静态方法,反之则为非静态方法。静态方法是一种特殊的方法,他不属于某个具体的实例。非静态方法可以访问类中的任何成员,而静态方法只能访问静态成员。http://www.cnb

    2021年12月21日
    85

发表回复

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

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