2014-09-25 63 views
0

Linux是否需要可写文件系统才能正常工作?我只是运行一个非常简单的init程序。目前我没有安装任何分区。内核已将根分区挂载为只读。只要我坚持使用malloc,readline和text到标准输出(puts),或Linux是否需要一个可写入的文件系统,甚至可以执行标准文本输入,Linux是否能够只使用只读文件系统来运行并输出?Linux是否需要可写文件系统

我问,因为我似乎正在得到关于堆栈的内核恐慌和投诉。我目前不想尝试运行一个有用的系统。我已经在另一个分区上有了一个有用的系统。我尽量保持简单,以便在添加额外的复杂层之前,我可以充分理解事情。

我正在运行一个相当标准的x86-64桌面。

+0

如果PID 1退出,内核将会出现混乱。如果您使用init =/your_program来测试可能是问题的事情。你真的应该运行/ sbin/init并将其配置为以单用户模式运行你的软件,而不是试图覆盖它(如果你是)。 – 2014-09-26 00:15:39

回答

0

是和否。不,如果几乎没有用,它不需要可写。
是的,你正在运行一个桌面,所以它需要是可写的。

许多进程实际上需要一个可写文件系统,因为许多系统调用都可以创建文件。例如Unix域套接字可以创建文件。

而且许多应用程序写入到/ var和/ tmp目录

来解决这个问题的方法是挂载读/只的文件系统,使用文件系统覆盖在内存中的文件系统来覆盖的。这样,该路径将是可写的,但他们去ram和重新启动时丢弃任何更改。

参见:overlayroot

+1

我认为你的第一段反驳了这个问题的含义。 – 2014-09-25 23:44:48

+1

谢谢,这是很好的发现 - 修复它。 – Matt 2014-09-26 00:42:20

0

不,不需要写文件系统。理论上可以使用唯一的只读文件系统来运行GNU/Linux。

在实践中,您可能希望将/ proc,/ sys,/ dev,可能/ dev/pts挂载到一切正常工作。请注意,甚至有些bash命令需要可写/ tmp。其他一些程序 - 可写/ var。

您始终可以将/ tmp和/ var挂载为ramdisk。

0

不,这不是必需的。例如,大多数发行版都有一个Live版本的Linux,用于启动cd或USB磁盘,并使用实际使用的和后端硬盘。

同样在正常安装情况下,当磁盘发生损坏时,根分区会更改为只读。这样系统仍然以只读分区的形式出现。

您需要捕获vmcore和恐慌形式的dmesg输出的堆栈跟踪以进一步分析。

相关问题