Yocto之fstab文件详解

在 Yocto 项目构建的嵌入式 Linux 系统中,fstab 文件(通常位于 /etc/fstab)起着至关重要的作用,它用于定义系统在启动时如何挂载文件系统。以下是对 Yocto 中 fstab 文件的详细解释:

1. fstab 文件的基本格式

fstab 文件由若干行组成,每行定义一个文件系统的挂载信息,每行包含 6 个字段,字段之间使用空格或制表符分隔,基本格式如下:

<device> <mount point> <filesystem type> <mount options> <dump> <fsck order>

下面对每个字段进行详细解释:

1.1 <device>

该字段指定要挂载的设备或文件系统的标识,可以是以下几种形式:

  • 设备节点:如 /dev/sda1/dev/mmcblk0p1 等,表示物理磁盘或存储设备的分区。
  • UUID(通用唯一识别码):每个文件系统都有一个唯一的 UUID,可以通过 blkid 命令查看。使用 UUID 挂载文件系统更加稳定,因为设备节点的名称可能会因硬件插拔或系统配置的变化而改变。例如:UUID=12345678-1234-1234-1234-1234567890ab
  • LABEL(标签):为文件系统设置的标签,使用 e2label 等工具可以为文件系统添加标签。例如:LABEL=MYDATA
1.2 <mount point>

指定文件系统要挂载到的目录,例如 / 表示根目录,/home 表示用户主目录,/media/usb 表示用于挂载 USB 存储设备的目录等。

1.3 <filesystem type>

指定文件系统的类型,常见的文件系统类型有:

  • ext4:Linux 系统中最常用的文件系统类型,支持日志功能,提供较好的数据安全性和性能。
  • xfs:高性能的日志文件系统,适用于大容量存储和高并发读写场景。
  • btrfs:支持多种高级特性,如快照、RAID、写时复制等。
  • vfat:Windows 系统使用的文件系统类型,常用于可移动存储设备,如 USB 闪存驱动器、SD 卡等。
  • proc:虚拟文件系统,用于提供内核和进程信息,通常挂载到 /proc 目录。
  • sysfs:虚拟文件系统,用于提供系统设备和驱动信息,通常挂载到 /sys 目录。
  • tmpfs:基于内存的临时文件系统,数据存储在内存中,系统重启后数据丢失,常用于存储临时文件,如 /run/tmp 等目录。
1.4 <mount options>

指定挂载文件系统时使用的选项,多个选项之间用逗号分隔。常见的挂载选项有:

  • defaults:使用默认的挂载选项,通常包括 rw(读写模式)、suid(允许设置用户 ID 位)、dev(解析文件系统中的设备文件)、exec(允许执行文件系统中的二进制文件)、auto(启动时自动挂载)、nouser(只有超级用户可以挂载)和 async(异步 I/O)。
  • ro:以只读模式挂载文件系统。
  • rw:以读写模式挂载文件系统。
  • noauto:禁止系统在启动时自动挂载该文件系统,需要手动挂载。
  • user:允许普通用户挂载和卸载该文件系统。
  • sync:使用同步 I/O 模式,数据在写入文件系统时会立即刷新到磁盘,保证数据的一致性,但会降低性能。
  • nosuid:禁止设置用户 ID 位,增强系统的安全性。
  • nodev:不解析文件系统中的设备文件,增强系统的安全性。
  • noexec:禁止执行文件系统中的二进制文件,增强系统的安全性。
1.5 <dump>

该字段用于指定是否使用 dump 命令备份文件系统,通常设置为 0 表示不备份,1 表示需要备份。在现代 Linux 系统中,该字段的使用已经很少见,通常设置为 0 表示不备份。

1.6 <fsck order>

数字 01 或 2

 该字段用于指定在系统启动时使用 fsck 命令检查文件系统的顺序,0 表示不检查,1 表示首先检查(通常用于根文件系统),2 表示在根文件系统检查之后检查。

2. fstab 文件示例

以下是一个典型的 fstab 文件示例:

# /etc/fstab: static file system information.
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
/dev/root       /               ext4    defaults        0       1
proc            /proc           proc    defaults        0       0
sysfs           /sys            sysfs   defaults        0       0
devpts          /dev/pts        devpts  mode=0620,gid=5 0       0
tmpfs           /run            tmpfs   mode=0755,nodev,nosuid,strictatime 0  0
tmpfs           /var/volatile   tmpfs   defaults        0       0
UUID=12345678-1234-1234-1234-1234567890ab /data ext4 defaults 0 2

对上述示例的解释如下:

  • /dev/root / ext4 defaults 0 1将根设备(通常由内核启动参数指定)以 ext4 文件系统类型挂载到根目录 /,使用默认的挂载选项,不备份,在系统启动时首先检查。

  • proc /proc proc defaults 0 0将 proc 虚拟文件系统挂载到 /proc 目录,使用默认的挂载选项,不备份,不检查。

  • sysfs /sys sysfs defaults 0 0将 sysfs 虚拟文件系统挂载到 /sys 目录,使用默认的挂载选项,不备份,不检查。

  • devpts /dev/pts devpts mode=0620,gid=5 0 0将 devpts 虚拟文件系统挂载到 /dev/pts 目录,设置文件权限为 0620,所属组 ID 为 5,不备份,不检查。

  • tmpfs /run tmpfs mode=0755,nodev,nosuid,strictatime 0 0将 tmpfs 临时文件系统挂载到 /run 目录,设置文件权限为 0755,禁止解析设备文件和设置用户 ID 位,使用严格的访问时间记录,不备份,不检查。

  • tmpfs /var/volatile tmpfs defaults 0 0将 tmpfs 临时文件系统挂载到 /var/volatile 目录,使用默认的挂载选项,不备份,不检查。

  • UUID=12345678-1234-1234-1234-1234567890ab /data ext4 defaults 0 2:将 UUID 为 12345678-1234-1234-1234-1234567890ab 的 ext4 文件系统挂载到 /data 目录,使用默认的挂载选项,不备份,在根文件系统检查之后检查。

3. 在 Yocto 中定制 fstab 文件

在 Yocto 项目中,可以通过以下几种方式定制 fstab 文件:

3.1 修改基础配方

可以修改 base-files 配方(该配方负责创建 /etc 目录下的基本文件)来定制 fstab 文件。在自定义的 .bbappend 文件中添加或修改 fstab 文件的内容,例如:

# 在 base-files_%.bbappend 文件中
FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
SRC_URI_append = " file://fstab"

do_install_append() {
    install -m 0644 ${WORKDIR}/fstab ${D}${sysconfdir}/fstab
}

然后在 files 目录下创建自定义的 fstab 文件,将所需的挂载信息添加到该文件中。

3.2 使用 rootfs_postcommands

可以在 local.conf 文件中使用 rootfs_postcommands 变量来在根文件系统创建完成后修改 fstab 文件,例如:

IMAGE_ROOTFS_POSTCommands_append = "echo 'UUID=12345678-1234-1234-1234-1234567890ab /data ext4 defaults 0 2' >> ${IMAGE_ROOTFS}/etc/fstab"

上述命令会在根文件系统的 fstab 文件末尾添加一行挂载信息。

4. 注意事项

  • 文件系统兼容性:在选择文件系统类型时,要确保目标设备和系统支持该文件系统类型。
  • 挂载选项的选择:根据文件系统的使用场景和安全需求,合理选择挂载选项。例如,对于存储敏感数据的文件系统,可以使用 nosuidnodev 和 noexec 选项增强安全性。
  • 备份和检查:虽然现代文件系统具有较好的稳定性,但对于重要的数据,仍然建议定期进行备份,并在系统启动时检查文件系统的一致性。

通过合理配置 fstab 文件,可以确保系统在启动时正确挂载所需的文件系统,提高系统的稳定性和可靠性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Liu-Eleven

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

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

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

打赏作者

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

抵扣说明:

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

余额充值