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

news/2024/5/18 5:07:53 标签: centos, linux kernel, 文件系统, 内核
***

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


最近为了毕设的问题忙的焦头烂额,其中就涉及到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,按照之前的步骤,没有出现其他错误。

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


http://www.niftyadmin.cn/n/1741951.html

相关文章

挂载PramFS遇到的关于SELinux的问题

挂载PramFS遇到的关于SELinux的问题 执行完mount之后,通过dmesg|tail 命令查看是否挂载成功 但是遇到过如下图的问题 前三行表示挂载pramfs的大小、块大小、节点数、块数目、还有最大的大小。但是最后一行出现了SELinux没有配置标签的错误。 本来认为无伤大雅&…

DPDK技术白皮书

https://www.renrendoc.com/p-81783063.html https://www.nowcoder.com/discuss/723093?type5&order0&pos22&page0&channel-1&source_iddiscuss_center_5_nctrack https://github.com/0voice/dpdk_engineer_manual

KMP算法的一点总结

KMP算法与传统模式匹配算法的区别 可以说字符串的模式匹配是计算机在进行文档处理时的最基本操作之一,它的时间复杂度对于文档处理十分重要。 传统的模式匹配算法,时间复杂度为O(n*m); 发现不匹配的情况下&#xff1…

迭代器iterator的一点总结

iterator 在回顾使用string和vector容器的时候,用到了iterator(迭代器),这里把一些容易忽略的要点总结如下: 为什么要用迭代器啊?直接采用下标运算符[ ]不可以吗? 首先要明确一点,iterator是提…

codeblock手动添加C++11标准

默认在官网下载的codeblock是不支持C11标准的,我们需要在设置中手动选择C11标准,如下图 选择上图中的GCC编译器并且勾选C11,点击OK即可!

rte_mbuf基本函数 rte_pktmbuf_prepend rte_pktmbuf_adj

https://blog.csdn.net/qq_15437629/article/details/79687002

SecureCRT Key exchange failed

Key exchange failed. No compatible key exchange method. The server supports these methods: ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256vim /etc/ssh/sshd_config添加以下内容 RSAAuthentication yes PubkeyAuthe…