【linux】【全志F133】基于全志F133的busybox编译学习记录以及对于经典根文件系统busybox的学习与理解

前言

待补全

参考链接(如有侵权,请联系删除)

【搞linux的旺仔】【根文件系统的构建】:busybox构建最简根文件系统_哔哩哔哩_bilibili

一、准备

平地铲开发板

ubuntu24.04

二、编译

2.1 声明编译工具链,架构方面没有对于某些应用的特化优化,无需指定架构

复制代码
export CROSS_COMPILE=/home/zky/ProjectsHub/Linux_Projects/pingdichan/riscv64-wangzai-linux-gnu-gcc/bin/riscv64-unknown-linux-gnu-

2.2 指定配置文件

复制代码
make freebsd_defconfig

2.3 修改配置选项,进入设置,配置为编译结果为静态库

复制代码
make menuconfig

2.4 执行命令编译并安装(根文件系统的默认安装路径为 busybox 的"_install"目录,由配置文件可指定)

复制代码
make -j$(nproc); make install

2.5 在busybox的主目录下会出现一个"_install"目录,这个就是最新鲜的最简根文件系统,可将其拷贝到制作sd卡文件夹中替换其中的根文件系统

复制代码
rm /home/zky/ProjectsHub/Linux_Projects/pingdichan/bootcard/wangzai_d1s_rootfs/* -rf


cp ./_install/* /home/zky/ProjectsHub/Linux_Projects/pingdichan/bootcard/wangzai_d1s_rootfs/ -rf

2.6 烧录到sd卡中进行验证,可以发现能使用的命令很少,因为是较为初始的根文件系统

不要自动挂载,umount取消挂载,然后烧录

复制代码
ls /dev/sd*


mount | grep /dev/sdb



sudo umount /dev/sdb1



sudo ./mkbootcard /dev/sdb

2.7 看到了根目录下的文件的烧录结果,与原作者给出版本是不是少了部分文件?是不是少了用户登陆步骤?那么就是这个根文件系统的初步制作,需要进一步完善

烧录成功的日志:

复制代码
zky@zky-virtual-machine:~/ProjectsHub/Linux_Projects/pingdichan/bootcard$ sudo ./mkbootcard /dev/sdb
Device /dev/sdb is a removable disk.
Creating image file /dev/sdb...
输入了 4+0 块记录
输出了 4+0 块记录
4194304 字节 (4.2 MB, 4.0 MiB) 已复制,0.471831 s,8.9 MB/s
Creating partitions...

欢迎使用 fdisk (util-linux 2.39.3)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。

设备不包含可识别的分区表。
创建了一个磁盘标识符为 0x1f049c0c 的新 DOS(MBR)磁盘标签。

命令(输入 m 获取帮助): 创建了一个磁盘标识符为 0xc77ecae3 的新 DOS(MBR)磁盘标签。

命令(输入 m 获取帮助): 分区类型
   p   主分区 (0个主分区,0个扩展分区,4空闲)
   e   扩展分区 (逻辑分区容器)
选择 (默认 p): 分区号 (1-4, 默认  1): 第一个扇区 (2048-62333951, 默认 2048): 最后一个扇区,+/-sectors 或 +size{K,M,G,T,P} (8192-62333951, 默认 62333951): 
创建了一个新分区 1,类型为"Linux",大小为 29.7 GiB。
分区 #1 包含一个 ext4 签名。

命令(输入 m 获取帮助): 
分区表已调整。
将调用 ioctl() 来重新读分区表。
正在同步磁盘。

create rootfs on/dev/sdb1
mke2fs 1.47.0 (5-Feb-2023)
/dev/sdb1 有一个标签为 "rootfs" 的 ext4 文件系统
	上一次挂载于 /,时间 Sun Jul 26 23:19:21 2026
无论如何也要继续?(y,N) y
创建含有 7790720 个块(每块 4k)和 1949696 个 inode 的文件系统
文件系统 UUID:0c1955cd-9032-4c33-bda8-e00146f989b5
超级块的备份存储于下列块: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
	4096000

正在分配组表: 完成                            
正在写入 inode表: 完成                            
创建日志(32768 个块): 完成
将文件复制到设备: 完成
写入超级块和文件系统账户统计信息: 已完成 

write bootloader: boot0_sdcard.fex
输入了 96+0 块记录
输出了 96+0 块记录
49152 字节 (49 kB, 48 KiB) 已复制,0.0311284 s,1.6 MB/s
write opensbi: fw_jump.bin
输入了 121+1 块记录
输出了 121+1 块记录
62008 字节 (62 kB, 61 KiB) 已复制,0.0915214 s,678 kB/s
write early dtb: wangzai-d1s-uboot.dtb
输入了 10+1 块记录
输出了 10+1 块记录
5344 字节 (5.3 kB, 5.2 KiB) 已复制,0.0206771 s,258 kB/s
write uboot: u-boot-nodtb.bin
输入了 1358+1 块记录
输出了 1358+1 块记录
695409 字节 (695 kB, 679 KiB) 已复制,0.368424 s,1.9 MB/s
相关推荐
三言老师1 小时前
mv移动文件、重命名文件实战案例
linux·服务器·网络·centos
AOwhisky2 小时前
云原生 DevOps 工具链从入门到实战(第二期)——Jenkins安装与基础配置——CICD核心引擎
linux·运维·ci/cd·云原生·jenkins·devops
一叶之秋14122 小时前
Linux网络初识
linux·服务器·网络
盐焗鹌鹑蛋2 小时前
【Linux】基础开发工具yum和vim
linux·运维·vim
AOwhisky2 小时前
Linux(CentOS)系统管理入门笔记(第十四期)——计划任务与进程调度管理:atcron 与 nicechrt
linux·运维·笔记·centos·云计算·进程调度·计划任务
小莫分享3 小时前
sshw:用交互搜索和 Web 配置高效管理 SSH Server
linux·运维·golang·开源·ssh
流浪0013 小时前
Linux系统22:——文件(六):目标文件与ELF深度解析:从编译到加载的全景揭秘
linux·运维·服务器
kidwjb4 小时前
Linux内核-内核信号处理函数
linux·内核·信号处理
其实防守也摸鱼4 小时前
镜像校验完成iso完整操作流程(Windows 环境,适配 Ubuntu 22.04 / 24.04)
linux·服务器·windows·学习·ubuntu·教程