一、简介
system/core/rootdir/ramdisk_node_list文件在Android中扮演着重要的角色,它包含了根文件系统中ramdisk部分的所有节点列表。这些节点可能包括设备节点、目录节点和文件节点。
ramdisk是一个临时文件系统,它通常被用作Android启动过程中的初始文件系统。在Android启动过程中,内核会将ramdisk加载到内存中,并将其挂载到根文件系统中。ramdisk通常包含了启动Android系统所需的驱动程序、库和应用程序。
system/core/rootdir/ramdisk_node_list文件的作用是告诉内核哪些节点应该被添加到ramdisk中。该文件中的每行都包含了一个节点的路径和类型。例如,以下行将创建一个名为“/dev/ttyS0”的设备节点:
/dev/ttyS0 dev
以下行将创建一个名为“/system/bin/sh”的文件节点:
/system/bin/sh file
以下行将创建一个名为“/system/etc”的目录节点:
/system/etc dir
system/core/rootdir/ramdisk_node_list文件通常是由Android构建系统自动生成的。构建系统会根据Android系统的配置生成该文件。
二、system/core/rootdir/ramdisk_node_list 内容
dir dev 0755 0 0
nod dev/null 0600 0 0 c 1 3
nod dev/console 0600 0 0 c 5 1
第一行:
dir dev 0755 0 0
- dir:表示这是一个目录节点。
- dev:表示这是一个设备节点。
- 0755:表示该节点的权限是0755,即该节点的所有者具有读、写和执行权限,该节点所在组的成员具有读和执行权限,其他用户具有执行权限。
- 0:表示该节点的所有者是root用户。
- 0:表示该节点所在组是root组。
第二行:
nod dev/null 0600 0 0 c 1 3
- nod:表示这是一个普通文件节点。
- dev/null:表示该节点的路径是/dev/null。
- 0600:表示该节点的权限是0600,即该节点的所有者具有读和写权限,其他用户没有任何权限。
- 0:表示该节点的所有者是root用户。
- 0:表示该节点所在组是root组。
- c:表示这是一个字符设备节点。
- 1:表示该节点的主设备号是1。
- 3:表示该节点的次设备号是3。
第三行:
nod dev/console 0600 0 0 c 5 1
- nod:表示这是一个普通文件节点。
- dev/console:表示该节点的路径是/dev/console。
- 0600:表示该节点的权限是0600,即该节点的所有者具有读和写权限,其他用户没有任何权限。
- 0:表示该节点的所有者是root用户。
- 0:表示该节点所在组是root组。
- c:表示这是一个字符设备节点。
- 5:表示该节点的主设备号是5。
- 1:表示该节点的次设备号是1。
总的来说,以上三行内容描述了三个节点:一个名为“dev”的目录节点、一个名为“/dev/null”的字符设备节点和一个名为“/dev/console”的字符设备节点。这些节点在Android启动过程中会被添加到ramdisk中。
在rootdir/ramdisk_node_list中增加一句nod dev/urandom 0600 0 0 c 1 9意味着在ramdisk中添加一个名为“/dev/urandom”的字符设备节点。
- nod:表示这是一个普通文件节点。
- dev/urandom:表示该节点的路径是/dev/urandom。
- 0600:表示该节点的权限是0600,即该节点的所有者具有读和写权限,其他用户没有任何权限。
- 0:表示该节点的所有者是root用户。
- 0:表示该节点所在组是root组。
- c:表示这是一个字符设备节点。
- 1:表示该节点的主设备号是1。
- 9:表示该节点的次设备号是9。
dev/urandom 是一个伪随机设备节点,它可以提供高质量的随机数据。dev/urandom 通常用于加密、密码生成和随机数生成等场景。
在Android系统中,dev/urandom 通常由Linux内核的随机数生成器(RNG)提供支持。RNG使用各种环境噪声(如键盘输入、鼠标移动和网络流量)来生成随机数据。
在ramdisk中添加dev/urandom节点可以使Android系统在启动过程中就可以访问高质量的随机数据。这对于某些应用程序(如加密应用程序)来说非常重要。
需要注意的是,dev/urandom节点只能提供有限数量的随机数据。如果应用程序需要大量随机数据,则应该使用其他方法来生成随机数据,例如使用硬件随机数生成器(RNG)。