1818 - [6.2. 构建文件系统](#62-构建文件系统)
1919 - [6.3. 将文件系统写入 sd-card](#63-将文件系统写入-sd-card)
2020 - [6.4. 上电启动](#64-上电启动)
21+ - [6.4.1. FAT 的例子](#641-fat-的例子)
22+ - [6.4.2. EXT4 的例子](#642-ext4-的例子)
2123- [ 7. FAQ] ( #7-faq )
2224- [ 8. 联系人信息] ( #8-联系人信息 )
2325
@@ -193,7 +195,7 @@ $ scons
193195
194196# 6. 大核 RT-Smart 启动并自动挂载根文件系统
195197
196- 大核启用 RT-Smart 后可以在启动阶段挂载根文件系统。目前 Duo 支持 ext4,fat 文件格式,下面以 fat 格式为例 ,具体操作说明如下:
198+ 大核启用 RT-Smart 后可以在启动阶段挂载根文件系统。目前 Duo 支持 ext4, fat 文件格式 ,具体操作说明如下:
197199
198200## 6.1. 内核构建配置
199201
@@ -204,6 +206,14 @@ $ scons
204206- 使能 ` BSP_USING_SDH ` : Enable Secure Digital Host Controller, 因为使用 sd-card 存放文件系统。
205207- 使能 ` BSP_USING_RTC ` : Enable RTC, 避免挂载文件系统后执行命令报错:` [W/time] Cannot find a RTC device! `
206208- 使能 ` BSP_ROOTFS_TYPE_DISKFS ` : Disk FileSystems, e.g. ext4, fat ..., 该配置默认已打开。
209+ - 内核默认支持 fat, 如果要挂载 ext4 的文件系统,则还需要额外安装 lwext4 软件包,即使能 ` PKG_USING_LWEXT4 ` (具体 menuconfig 路径是 (Top) -> RT-Thread online packages -> system packages -> lwext4: an excellent choice of ext2/3/4 filesystem for microcontrollers.)。如果在菜单中找不到该软件包,可以退出 menuconfig 并执行 ` pkgs --upgrade ` 更新软件包索引后再尝试使能软件包。
210+
211+ 勾选该选项后还需要执行如下操作更新软件并安装源码到 bsp 的 packages 目录下:
212+
213+ ``` shell
214+ source ~ /.env/env.sh
215+ pkgs --update
216+ ```
207217
208218保存后重新编译内核。
209219
@@ -229,9 +239,17 @@ xmake smart-image -f fat
229239
230240在 ` $WS/userapps/apps/build ` 路径下生成根文件系统镜像文件 ` fat.img ` 。
231241
242+ 如果是制作 ext4 格式的文件系统 image,则最后一步换成:
243+
244+ ``` shell
245+ xmake smart-image -f ext4
246+ ```
247+
248+ 生成根文件系统镜像文件 ` ext4.img ` 。
249+
232250## 6.3. 将文件系统写入 sd-card
233251
234- 将 SD 卡分为 2 个分区,第 1 个分区用于存放 ` fip.bin ` 和 ` boot.sd ` 文件,第 2 个分区用于存放文件系统,分区格式为 ` FAT32 ` 。
252+ 将 SD 卡分为 2 个分区,第 1 个分区的分区格式为 ` FAT32 ` ,用于存放 ` fip.bin ` 和 ` boot.sd ` 文件,第 2 个分区用于存放文件系统,分区格式需要和具体文件系统的格式一致。这里以 fat 为例介绍如何制作 sd-card 上的文件系统分区,ext4 的操作类似 。
235253
236254将 SD 卡插入 PC 主机系统,假设为 Ubuntu,识别为 ` /dev/sdb ` ,则第二个分区为 ` /dev/sdb2 ` 。将第二个分区挂载,假设挂载到 ` ~/ws/u-disk ` 。
237255
@@ -253,6 +271,8 @@ sudo umount /tmp
253271
254272## 6.4. 上电启动
255273
274+ ### 6.4.1. FAT 的例子
275+
256276启动完成后, 会看到 ` [I/app.filesystem] device 'sd1' is mounted to '/' as FAT ` 的输出,说明文件系统挂载成功。此时 ` msh ` 被替换为 ` /bin/ash ` 。
257277
258278``` shell
@@ -277,6 +297,47 @@ bin etc mnt root sbin tc usr
277297dev lib proc run services tmp var
278298```
279299
300+ ### 6.4.2. EXT4 的例子
301+
302+ 启动完成后, 会看到 ` [I/app.filesystem] device 'sd1' is mounted to '/' as EXT ` 的输出,说明文件系统挂载成功。此时 ` msh ` 被替换为 ` /bin/ash ` 。如果 ` ls /bin -l ` ,会看到大部分命令程序都是指向 busybox 的符号链接,符号链接是 EXT4 区别于 FAT 的重要特征。
303+
304+ ``` shell
305+ \ | /
306+ - RT - Thread Smart Operating System
307+ / | \ 5.2.0 build Dec 17 2024 14:04:27
308+ 2006 - 2024 Copyright by RT-Thread team
309+ lwIP-2.1.2 initialized!
310+ [I/sal.skt] Socket Abstraction Layer initialize success.
311+ [I/drivers.serial] Using /dev/ttyS0 as default console
312+ [I/SDIO] SD card capacity 30216192 KB.
313+ [I/SDIO] sd: switch to High Speed / SDR25 mode
314+
315+ found part[0], begin: 1048576, size: 128.0MB
316+ found part[1], begin: 135266304, size: 28.707GB
317+ [I/app.filesystem] device ' sd1' is mounted to ' /' as EXT
318+ Hello RT-Smart!
319+ msh /> [E/sal.skt] not find network interface device by protocol family(1).
320+ [E/sal.skt] SAL socket protocol family input failed, return error -3.
321+ / # ls
322+ bin lib proc sbin tmp
323+ dev lost+found root services usr
324+ etc mnt run tc var
325+ / # ls /bin -l
326+ lrwxrwxrwx 0 0 0 7 Dec 17 2024 arch -> busybox
327+ lrwxrwxrwx 0 0 0 7 Dec 17 2024 ash -> busybox
328+ lrwxrwxrwx 0 0 0 7 Dec 17 2024 base32 -> busybox
329+ lrwxrwxrwx 0 0 0 7 Dec 17 2024 base64 -> busybox
330+ lrwxrwxrwx 0 0 0 7 Dec 17 2024 bash -> busybox
331+ lrwxrwxrwx 0 0 0 7 Dec 17 2024 bbconfig -> busybox
332+ -rwxr-xr-x 0 0 0 1003000 Dec 17 2024 busybox
333+ lrwxrwxrwx 0 0 0 7 Dec 17 2024 cat -> busybox
334+ lrwxrwxrwx 0 0 0 7 Dec 17 2024 chattr -> busybox
335+ lrwxrwxrwx 0 0 0 7 Dec 17 2024 chgrp -> busybox
336+ lrwxrwxrwx 0 0 0 7 Dec 17 2024 chmod -> busybox
337+ lrwxrwxrwx 0 0 0 7 Dec 17 2024 chown -> busybox
338+ ......
339+ ```
340+
280341# 7. FAQ
281342
2823431 . 如遇到不能正常编译,请先使用 ` scons --menuconfig ` 重新生成配置。
0 commit comments