问题描述
在某个设备上(如MTK基于的Aries_7O平板),有一个指向EMMC数据分区(/dev/block/mmcblk0p7
)的小型链接项 /emmc@usrdata
。为了实现更大容量的数据存储,用户创建了一个位于SD卡上的新的4GB EXT4格式化分区 (/dev/block/mmcblk1p2
)。然而,在 fstab
文件中用于挂载的设备名称仍然是 /emmc@usrdata
。尽管尝试直接更改为新分区,但在重启后仍然会回指向原始位置。
解决方案
方案1
请注意在进行此操作前备份相关配置文件和数据。
为了确保对 /dev/block/mmcblk1p2
的正确挂载并且使链接持久化,在设备首次启动时需要创建一个脚本,这个脚本用来在系统启动过程中更新 fstab
中的挂载信息并重定向挂载点至新的分区。具体操作如下:
步骤 1: 创建自定义的 fstab
编辑或新建 /etc/fstab
文件,在文件末尾加入针对新数据分区的内容:
/dev/block/mmcblk1p2 /data ext4 defaults,discard,noatime,nofail 0 0
这会将 /dev/block/mmcblk1p2
分区挂载到 /data
。
步骤 2: 创建启动脚本
在系统启动时,我们需要确保在进入 init 进程之前执行该命令以修改并应用新的 fsa。首先创建一个自定义的 rc.local 文件。
- 登录你的设备终端。
- 使用任何文本编辑器(如
nano
或vi
)创建或编辑/etc/rc.local
:
#!/bin/sh -e
# 更新 fstab 中的数据挂载点,指向 /dev/block/mmcblk1p2 分区
sed -i 's|/emmc@usrdata|/dev/block/mmcblk1p2|g' /etc/fstab
exit 0
步骤 3: 赋予执行权限
为了让 rc.local 文件能够被执行,需要为该脚本赋予执行权限:
chmod +x /etc/rc.local
方案2
使用 update-rc.d
命令和自定义启动脚本来替换旧的 fstab
配置。这种方法适用于支持 systemd
的系统:
- 编写一个 bash 脚本用于更新
fstab
,在上述步骤中创建并配置sed
指令。 - 将此脚本注册为
init.d
启动项:
sudo update-rc.d /etc/rc.local start 98 2 3 4 5 .
通过以上方式确保在每次启动时,新的数据分区可以被正确识别并挂载。
建议按照上述方案操作之前先从官方文档或其他可靠资源进行学习和验证。如果有疑问或不确定的具体命令,请参考设备制造商提供的详尽文档。
正文完