在我的 initramfs 中,我有;
[root@xilinx Peta_Microzed_15_05]# ls initramfs/dev/
console
[root@xilinx Peta_Microzed_15_05]# nano initramfs/dev/console
[root@xilinx Peta_Microzed_15_05]#
上面的 nano 打开一个空文件。
console
那么如果里面什么都没有的话, 这个文件是什么样的呢?
答案1
大多数文件/dev
是设备文件。这些是特殊的目录条目,不对应任何磁盘存储,而是调用内核中的函数,通常用于与硬件交互。
Unix 系统支持多种类型的文件(我省略了一些“外来”类型),这些文件由以下输出中的行的第一个字符指示ls -l
:
-
常规文件。对于磁盘支持的文件系统,这些文件被写入磁盘。当您读取这种类型的文件时,您会取回写入该文件的数据。d
目录。这些文件的唯一目的是包含其他文件。l
符号链接。这些文件的唯一目的是重定向到另一个文件。p
命名管道(也称为 FIFO):当一个进程写入命名管道时,另一个进程实时读取输出,并且写入器会阻塞,直到读取器进行读取为止。s
命名套接字- 类似于命名管道,但提供基于会话的双向通信(如网络套接字)。b
,c
块和字符设备。
块设备是一种行为非常类似于固定大小的常规文件的设备:当您从给定位置读回时,您将取回最后在该位置写入的数据。块设备通常是磁盘或磁盘分区或其他类似于磁盘的硬件。
字符设备是不以这种方式运行的设备。这些是多种多样的。有些设备是仅输出或仅输入的;即使字符设备同时支持输入和输出,写入的内容和读取的内容之间也不一定存在任何关系。例如,写入对应串口的设备的数据被发送到与该串口连接的外设;从该设备读取的数据是从该外围设备接收的数据。
/dev/console
指定系统控制台,即连接到计算机的键盘和屏幕。如果计算机没有键盘和屏幕,则/dev/console
存在,但写入可能会失败或被忽略。如果计算机有多个键盘和屏幕,则某些系统配置会确定/dev/console
连接到哪个或哪些键盘和屏幕。一些 Unix 版本提供虚拟控制台;例如,在Linux上,您可以通过按++ Ctrl、++等在控制台之间切换;每个控制台都有自己的一组连接到它的程序和自己的视频缓冲区,以及控制台接收键盘输入并显示在屏幕上的切换开关。AltF1CtrlAltF2
您可以阅读/dev/console
(假设您有许可)。 Nano 有点无用:它拒绝从任何设备文件中读取(这是非常明智的,因为“编辑”字符设备没有任何意义,并且块设备通常包含不应使用文本编辑的文件系统编辑器),但它不显示错误消息。
给定目录的名称,这是一个初始化文件系统树:文件树,旨在成为 Linux 系统的初始文件树。如果您组装 initramfs(通常作为内核构建的一部分完成)并从该 initramfs 引导,则该文件最终将在您引导的系统上console
出现。/dev/console