在启动时挂载/ var on ramdisk - Bash脚本问题

时间:2012-06-17 23:00:59

标签: linux bash boot ramdisk slackware

我有一个嵌入式设备,我需要将我的/ var和/ tmp放在ram中,以减少驱动器上的写入次数(Compact flash)。我知道如何使用/ tmp,因为我不必在重启或关机时恢复任何东西。

但/ var目录有重要的东西。我一直在研究,我发现了这一点,但它似乎并没有起作用。

这是脚本:

# insert this on file 'rc.sys.init'
# after the mount of the root file system
# to create the /var on ramdisk


echo "Create ramdisk........."
#dd if=/dev/zero of=/dev/ram0 bs=1k count=16384
mkfs.ext2 -j -m 0 -q -L ramdisk /dev/ram0
if [ ! -d /mnt/ramdisk ]; then
     mkdir -p /mnt/ramdisk
fi
mount /dev/ram0 /mnt/ramdisk
if [ -L /var ]; then
     tar -xf /vartmp.tar -C /mnt/ramdisk
else
    tar -C / -cf /vartmp.tar var
    cp -a /var /mnt/ramdisk
    rm -rf /var
    ln -s /mnt/ramdisk/var /var
fi  

# insert this into file 'halt'
# to stop the ram disk properly on shutdown.
#

if [ -e /vartmp.tar ]; then
     rm -f /vartmp.tar
fi;
tar -C /mnt/ramdisk -cf /vartmp.tar var

这个脚本有问题吗?如果没有,我应该在其中包含他们的inicialization和终止脚本?

2 个答案:

答案 0 :(得分:0)

对于所有有同样问题的人,我已经解决了我的问题(种类)

我发布的两个脚本都是正确的并完成了这项工作。你需要小心的是你把它们放在哪里。

在Slackware中,第一个运行脚本是rc.S.起初我将我的第一个脚本粘贴到那个脚本的中间。它肯定应该在那里,而不是我把它放在哪里。您必须查看脚本rc.S从/ var调用特定目录或文件的位置。 ramdisk的创建应该在这些行之前。

应该在rc.6脚本(关闭脚本)的底部添加关闭脚本

另外我应该指出,虽然这会提高驱动器的预期寿命,但它有点不稳定,有时会随机重启,所以要小心。

答案 1 :(得分:0)

很好的剧本...但在我看来,由于几个原因它是不稳定的。首先你告诉系统max ramdisk size ...首先作为内核参数..... linux / vmlinuz ramdisk_size=204800 ......然后在rc mke2fs -t ext2 /dev/ram1 204800 .....和也许使用ram1而不是ram0 .......也可以使用脚本手动保存ramdisk内容到/var.....cp -a /mnt/ramdisk/var/. /var ........ backup real / var到另一个目录的tar压缩,但引入了tar压缩减少数据大小可能会引入滞后,延迟和不稳定性。在我看来就是这样。