Linux 之 rootfs、busybox、buildroot

制作一个文件系统

BUSYBOX

  1. 构建基本文件系统目录 /dev /etc /lib /bin //usr /var /proc /sys /tmp /home /root /mnt /sbin /opt /media
  2. 使用busybox 构建 /bin /slib linuxrc 目录及文件>
    编译busyBox download
    https://developer.arm.com/
	make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi-  menuconfig
	setting  - >  build as a static binary (空格) 
			 - >  cross-compile prefix
			 - >  username completion  Fancy shell prompts Query cur position from terminal 
			 - 按 ‘/’ 可搜索。
	make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- -j8
	make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- install 
	cd _install && ls
  1. 构建lib 目录:拷贝交叉编译工具的 lib即可。
  2. 构建 etc 目录
    1 ) 重要的文件 :
    inittab :linuxrc的配置脚本
    init.d/ rcS : inittab的第一个二进制汇编脚本。用于挂载系统必须的文件系统和必要的设备连接、设置ip地址、启动其他的开机任务脚本等 默认 的 mount -a
    fstab : 执行 mount -a ,按照此文件挂载系统(by uuid tag-name)
    profile:登陆shell后的脚本 系统环境,
    2 ) cd etc 拷贝busybox/example/bootflooopy/etc/* ./ 拿到模板。
	修改inittab 删除第三行代码  或者 见其他博客 具体修改
		id::这个子进程的控制台、runlevels、action、 process 等字段。
		
	修改etc/initial.d/rcS  文件
		linuxrc : 产生init进程 PID=1;initttab 启动的第一个进程为该脚本文件, init进程完成了从内核态向用户态的转变

	#!bin/sh	
	#1.挂载系统 盘符
		/bin/mount -a
	#2. 
		配置 telnetd 服务器时 需要的文件夹以及文件系统
		创建 目录 /var/tmp ...   /dev/pts...
		挂载临时目录系统 devpts....
		lib下创建 使用条件语句 用来创建文件夹 为驱动模块加载做准备
		创建设备节点 /sbin/mdev -s
	#3. 修改 /etc/fstab 文件  按照 实际的情况挂载 开机磁盘盘符及其格式挂在地址...
	#4. 修改 profiles文件  来初始化path环境变量 以及动态链接库的路径 
	#5. 用户名 密码 组信息 构建:   /etc/passwd    etc/group   etc/shadow 
  1. 其他目录保持不变即可。
    ALL DONE ,base filesystem built !

  2. 构建镜像 构建虚拟磁盘 qemu 加载启动rootfs(以下内容需要修改 to do )
    mkdir -p path
    mknod path /mydev1 c 128 512
    dd if=/media/.iso of=/dev/mydev1
    制作镜像形式的rootfs并烧录运行
    1、制作镜像形式的rootfs
    (1)新建一个用于挂在的文件这里是ext2_rootfs,这里的count值一定要够用
    dd if=/dev/zero of=rootfs.ext2 bs=1024 count=10240
    losetup /dev/loop1 rootfs.ext2
    ke2fs -m 0 /dev/loop1 10240
    mount -t ext2 /dev/loop1 ./ext2_rootfs/
    (2)向ext2_rootfs中复制内容
    (3)卸载
    umount /dev/loop1
    losetup -d /dev/loop1
    看待rootfs.ext2则制作成功
    2、设置合适的bootargs并烧录镜像
    bootargs为:set bootargs console=ttySAC2,115200 root=/dev/loop1 rw init=/linuxrc rootfstype=ext2
    bootcmd=tftp 0x60003000 uImage;tftp 0x60500000 vexpress-v2p-ca9.dtb;setenv bootargs ‘root=/dev/loop1 rw nfsroot=192.168.33.145:/home/nfs,proto=tcp,nfsvers=4,nolock init=/linuxrc ip=192.168.33.144 console=ttyAMA0’;bootm 0x60003000 - 0x60500000;

BUILDROOT

make list-defconfigs ARCH=arm CROSS_COMPILE=arm-linux-gnueabi-   

find -name "*" && ls configs | grep "your arch of CPU "

make XXXX_deconfig  ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- 

make menuconfig ARCH=arm CROSS_COMPILE=arm-linux-gnueabi-  
	target arch 						--> little
	Target Architecture Variant			--> arm920t,内核类型
	Target packages   				    --> cmake 工具等
	Bootloaders
	kernel
	Host utilities
	
	
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi-  


  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Code-keys

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值