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

  • 8
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
Linux0.11内核源码解读第一季——汇编启动部分》是一本深入解析Linux0.11内核源代码的书籍。汇编启动部分是整个内核启动过程中的重要环节,能够帮助读者深入理解操作系统的启动和初始化流程。 首先,汇编启动部分是内核启动的第一步。它通过软件中断机制在实模式下启动。通过设置系统段描述符和全局描述符表,为操作系统提供必要的运行环境。在启动过程中,汇编启动部分会初始化中断向量表、设置栈段(SS)和栈指针(SP),并跳转到引导扇区加载内核文件。 接着,书籍详细分析了引导扇区的装载过程。引导扇区会被BIOS加载到内存地址0x7C00处,然后执行引导扇区的代码。在引导扇区中,汇编启动部分会进行一些必要的初始化工作,如设置栈段和栈指针,加载中断描述符表以及读取磁盘上的内核文件。 此外,书籍还介绍了一些启动相关的概念和知识,如分段机制、实模式和保护模式之间的切换等。读者通过学习这些知识,可以更加清楚地了解硬件和操作系统之间的交互过程。 总之,汇编启动部分是Linux0.11内核启动的关键环节,对于理解操作系统的启动过程非常重要。《Linux0.11内核源码解读第一季——汇编启动部分》通过深入剖析源代码,让读者能够全面了解Linux内核启动过程,并通过这些知识来探索更深入的操作系统原理。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值