挂载新型文件系统遇到的棘手问题

来源:互联网 发布:linux截取日志 编辑:程序博客网 时间:2024/05/16 18:49
***

挂载新型文件系统遇到的棘手问题*


最近为了毕设的问题忙的焦头烂额,其中就涉及到pramfs(受保护的可持续的RAM文件系统)挂载的问题。

在sourceforge上下载了linux3.11版本对应的pramfs源码,相应的,就需要对CentOS的内核版本更换。pramfs版本和linux内核版本要对应,否则可能出现链接错误!

接下来,我把编译内核及安装并挂载pramfs的步骤贴出来。

1.下载linux-3.11 pramfs-1.5.0-3.11 和pramfs-Tools 并tar copy 到/usr/src/kernels 中
2.进入 pramfs-1.5.0-3.11 文件夹中,将pramfs补丁打入到内核中:
./patch-ker.sh ../linux-3.11
3.安装一些必备的链接库
4.进入linux-3.11内核文件夹
5. make mrproper清除配置文件
6. make menuconfig 选择编译的模块,勾选persistent and protected RAM file system,将其直接作为内核模块编译(M),而不是选择编译进内核!!!

在这一步的时候出现了很奇怪的错误,在后面我会提到。

7.开始编译内核:
make clean
make -j 4
make modules_install
make install
8.重启之后,进入新的linux-3.11内核,开始挂载pramfs
9.dmesg | less查看可以预留的内存区域:
这里写图片描述
:在Normal后面就是可以预留的起始地址
10.修改系统引导项,并预留256M的区域
vim /etc/grub.conf

  • 在centOS7之前,系统boot引导项都在/etc/grub.conf里面,自从CentOS7之后,引导文件就不在/etc目录下了。具体可以问度娘。

这里写图片描述
红线部分就是新添加的,为pramfs预分配256M的空间,总内存为4G。

11.最后一步,挂载pramfs:
mount -t pramfs -o physaddr=0x100000000,init=256M mypramfs /mnt/pramfs

  • -在/mnt/pramfs路径下,从物理地址0x100000000开始,分配256M内存区域,挂载pramfs文件系统。

12.通过dmesg | tail 你就可以看到pramfs挂载成功的消息!如果一直到这一步都没出错,我真的很羡慕你。我的的确确为了挂载pramfs,足足花费了近一个星期的时间,下面这个图就是我遇到的错误:
这里写图片描述

  • 这个错误出现在mount pramfs的时候,提示:错误的文件系统类型

近一个星期一直在搞这个,尝试了很多方法,比如装个双系统或者加了8G的内存条增大可分配空间,更换了内核版本,但还是没有成功。具体过程我不写了,直接说错误。

在提示的错误中,经实验室师姐的提醒,可能是编译过程出现了错误,我就逐一的分析可能出错的地方。
之前我在make menuconfig时,选择将pramfs编译进内核,并没有选择将它作为模块编译。在/lib/modules/fs里找不到pramfs的文件夹。我尝试了一次把pramfs作为模块编译,编译完成之后,果在/lib/modules/fs找到了pramfs,按照之前的步骤,没有出现其他错误。

今天写这篇博客的目的,更多的是为了提醒我自己,切勿轻言放弃,在这期间,我曾经很苦恼,很迷惑,但我在父母和女朋友的鼓励下还是一直坚持的做下去,并且真的发现了错误。

0 0
原创粉丝点击