如何修改 Ubuntu 12.04(和 12.10)的默认行为以防止在启动时创建从 /dev/shm 到 /run/shm 的符号链接?

Pau*_*son 3 mount oracle 12.04 12.10 shm

在 Ubuntu 12.04 上按照Oracle 11gR2 Express Edition on Linux Ubuntu 11.10 howto安装 Oracle 11gR2 Express Edition 时遇到了 Oracle 内存目标问题/dev/shm(如该指南的第 7 节所述),因为/dev/shm现在默认作为符号实现链接如 Ubuntu 11.10 发行说明中所述,从/dev/shm/run/shm. 符号链接与 Oracle 期望的不兼容,这会导致数据库启动时出现 Oracle 错误 (ORA-00845: MEMORY_TARGET)。

对的“的Oracle 11gR2的Express版本的Linux操作系统Ubuntu 11.10 HOWTO”文件第7节)启动脚本/etc/init.d/oracle-shm,是为了配置/dev/shm使用Ubuntu的/run/shm,但是这并没有出现有在Ubuntu 12.04的预期效果和/dev/shm未安装按预期-想必它确实在 11.10 上工作。尽管已经注意到这一点并提出各种解决方案,但我选择以稍微不同的方式解决该问题,方法是添加一个条目/etc/fstab并修改/etc/init.d/oracle-shm脚本,如下所示:

  1. 为共享内存临时文件系统添加一个条目/etc/fstab,例如(对于 2 GB 的文件)

    shm /dev/shm    tmpfs   size=2g 0   0
    
    Run Code Online (Sandbox Code Playgroud)
  2. 从以下位置更改mount/etc/init.d/oracle-shm

    rm -f /dev/shm  
    mkdir /dev/shm
    mount -B /run/shm /dev/shm
    
    Run Code Online (Sandbox Code Playgroud)

    简单地

    rm -f /dev/shm
    mkdir /dev/shm 
    mount /dev/shm
    
    Run Code Online (Sandbox Code Playgroud)

无论如何,所有提议的解决方案都涉及在启动时撤消默认的 Ubuntu 行为,首先删除符号链接,然后实现所需的行为。

我希望能够通过以下方式一劳永逸地设置共享内存文件系统:

  1. 为共享内存临时文件系统添加一个条目/etc/fstab,例如(对于 2 GB 的文件)

    shm /dev/shm    tmpfs   size=2g 0   0
    
    Run Code Online (Sandbox Code Playgroud)
  2. 删除指向 /dev/shm 的现有符号链接并创建一个目录,如 sudo。

    rm –f /dev/shm
    mkdir /dev/shm
    
    Run Code Online (Sandbox Code Playgroud)
  3. 挂载共享内存临时文件系统

    mount /dev/shm
    
    Run Code Online (Sandbox Code Playgroud)

这一切正常,直到您重新启动,此时从/dev/shm到的符号链接/run/shm重新出现,而不是/dev/shm作为共享内存临时文件系统挂载。

那么问题来了。

我如何修改的Ubuntu 12.04(12.10)的默认行为,以防止一个符号链接/dev/shm/run/shm永远被摆在首位创建了开机?

action=show&redirect=OneiricOcelot/TechnicalOverview#Upgrades

Flo*_*sch 5

/etc/init/mounted-dev.conf删除行

 [ -e /dev/shm ] || ln -s /run/shm /dev/shm
Run Code Online (Sandbox Code Playgroud)