1 首先正常启动内核

我们需要启动内核后查询一些信息。

2. 查看系统内存信息

内核启动后通过

cat /proc/iomem

查看内存的分布,结果类似:

100000000-10dffffff : System RAM

但是我们会看到有很多条这样的项,我们主要关注”System RAM”这样的项,因为这代表系统内存。

3. 在System RAM的段,找一个地址最高的RAM项的结束地址,然后计算出预留的起始地址

例如,我需要预留4M内存,起始地址就是

 

0x10dffffff - 0x400000 = 0x10DBFFFFF

 

  这个是内存物理地址,你所选的预留内存的地址是需要由你自己来规划的。我这里之所以选择末端地址,是因为我的机器启动时,末端的地址基本上用不到。

4. 通过内核启动参数预留内存

在启动命令行添加如下参数:

memmap=4m$0x10DBFFFFF

这样就表示从0x10DBFFFFF处预留出4M内存。
注意:如果是通过grub启动,需要确定grub是否支持识别$,否则需要通过转义字符:

memmap=4m\$0x10DBFFFFF

5. 验证

最后要做的事情就是重启内核,等内核启动完成后,再通过cat /proc/iomem,观察我们预留的 0x10DBFFFFF ~ 0x10dFFFFFE是否是 “reserved”状态。

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

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注