linux学习——添加linux内核启动参数实现内存预留

添加linux内核启动参数实现内存预留

前言

本人想预留一块连续的物理内存用于DMA传输,经过摸索和查阅资料,发现通过修改linux内核启动参数可以实现连续物理内存预留。
其预留操作是通过限制内核使用的物理内存大小,来实现目的。

举例:一个主机内存为4G,可以通过添加内核启动参数限制内核使用的物理内存为3G,这样就可以预留出1G大小的连续物理内存供DMA使用。

下面介绍两种修改内核参数的方式,来实现内存预留

内核启动参数mem、reserve

根据内核启动参数中的介绍,可以获知,mem确定的内核允许使用内存的大小,reserve确定了你需要预留的那部分内存(我个人发现通过reserve预留的区域不能为内核使用的内存,举个例子,主机4G和内存,通过mem限制3G内存给内核,那么reserve就只能在剩余的1G中操作,否则不会生效)

  1. 查看当前内存分配情况,找到一块合适的内存进行预留sudo cat /proc/iomem;
    在这里插入图片描述
    我对这一块区域的内存进行预留,从0x3fed0000开始预留0xffff大小的内存

  2. 查看当前内核启动参数cat /proc/cmdline;
    在这里插入图片描述

  3. 开始修改内核启动参数vim /boot/grub/grub.cfg或sudo gedit /boot/grub/grub.cfg(我的虚拟机无法下载vim,所以只能用gedit);
    在这里插入图片描述
    找到这里,和第一步打印出来的内核启动参数一模一样,不过可能会有很多这样的代码,但是只修改第一条这样的就行了,因为后面的是advanced版本的内核启动参数(我不多介绍了,反正别管他)

我把他改成这样的,添加mem=0x3fed0000 reserve=0x3fed0000,0xffff
在这里插入图片描述
3. 修改完毕,重启系统reboot;
4. 查看内核启动参数;
改好啦
5. 查看内存分配情况;
预留成功啦

内核启动参数memmap

memmap比较直接,直接将想要预留的内存直接分出来。还是预留上面的那块内存,memmap=0xffff$0x3fed000(有些需要用转义符才能使用\$,我这里就加了转义符\)

  1. 修改内核启动参数;
    在这里插入图片描述
    添加memmap=0xffff\$x3fed000
    在这里插入图片描述
  2. 修改完毕,重启系统reboot;
  3. 查看内核启动参数;
    在这里插入图片描述
  4. 查看内存分配情况;
    在这里插入图片描述

参考文档

https://www.kernel.org/doc/html/latest/admin-guide/kernel-parameters.html

https://blog.csdn.net/wennuanddianbo/article/details/77720873

https://blog.csdn.net/yhc1991/article/details/78447657?depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1&utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1

https://www.cnblogs.com/dakewei/p/7499014.html

https://www.cnblogs.com/shengs/p/4608441.html

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值