前言
待补全
参考链接(如有侵权,请联系删除)
【搞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