/dev/block/bootdevice/by-name目录下的链接是怎么创建的, 怎么实现SD卡启动的
时间: 2023-12-20 11:05:38 浏览: 25
`/dev/block/bootdevice/by-name` 目录下的链接是在系统启动时根据设备硬件信息和分区表信息动态创建的。这些链接是由 `init` 进程在启动时根据设备树(device tree)信息和硬件分区表(partition table)信息动态创建的。
对于SD卡启动,一般需要在设备的 bootloader 中设置引导顺序,指定 SD 卡为首选引导设备。然后在 SD 卡上准备好引导映像(boot image),包括内核、根文件系统等。当设备启动时,bootloader 会从 SD 卡读取引导映像并加载内核,启动系统。
在加载内核时,内核会根据硬件信息和分区表信息自动创建 `/dev/block/bootdevice/by-name` 目录下的链接。这些链接指向实际的硬件分区,使得应用程序可以方便地访问这些分区。
需要注意的是,不同的设备可能具有不同的硬件配置和分区表。因此,创建 `/dev/block/bootdevice/by-name` 目录下的链接的具体实现可能会因设备而异。
相关问题
/dev/block/bootdevice/by-name目录下的链接是怎么创建的
在Android系统启动过程中,/dev/block/bootdevice/by-name目录下的符号链接是由init进程动态创建的。具体来说,init进程会根据设备树和分区表信息来确定各个分区的设备节点名称,并将这些名称与各个分区的名称进行映射,创建相应的符号链接。
具体的实现方式是通过脚本文件来完成的。在Android系统启动过程中,init进程会执行一系列脚本文件,其中就包括创建/dev/block/bootdevice/by-name目录下的符号链接。
这些脚本文件通常存储在init.rc文件中,它们会在系统启动时由init进程按照一定的顺序执行。例如,在高通平台上,init.rc文件中会包含类似下面的代码:
```
# mount bootdevice partitions
on post-fs
mount_all /fstab.qcom
symlink /dev/block/bootdevice/by-name/userdata /dev/block/bootdevice/by-name/data
symlink /dev/block/bootdevice/by-name/misc /dev/block/bootdevice/by-name/apdp
symlink /dev/block/bootdevice/by-name/modem /dev/block/bootdevice/by-name/mdm
...
```
这个脚本文件会在文件系统挂载完成后执行,调用mount_all命令来挂载所有分区,然后创建各个分区的符号链接。例如,上面的代码会创建名为userdata、misc、modem等符号链接,映射到相应的设备节点上。
需要注意的是,不同的Android平台和设备可能会有不同的分区表和设备节点名称,因此/dev/block/bootdevice/by-name目录下的符号链接可能会因硬件设备的不同而有所差异。
怎样让/dev/block/bootdevice/by-name下的内容链接到SD
您可以使用以下命令将 `/dev/block/bootdevice/by-name` 下的内容链接到 SD 卡:
```
ln -s /dev/block/bootdevice/by-name /mnt/sdcard/by-name
```
这将在 SD 卡上创建一个名为 `by-name` 的符号链接,指向 `/dev/block/bootdevice/by-name` 目录下的内容。这样,在 SD 卡上访问 `/mnt/sdcard/by-name` 相当于直接访问 `/dev/block/bootdevice/by-name`。请注意,您需要在设备上拥有 root 权限才能执行此操作。