bugfix: 当物理机具有多个memory area的时候,无法正确使用这些区域的问题.以及在内核代码处出现内存空洞而导致无法正常运行的问题. (#448)

* bugfix: 当物理机具有多个memory area的时候,无法正确使用这些区域的问题.以及在内核代码处出现内存空洞而导致无法正常运行的问题.

解决方案:
1. 分区域把空闲页添加到buddy
2. 将内核链接到16M的位置,以避免uefi带来的内存空洞.

这个值是因为我看到linux的救援内核也是在16M的地址,因此猜测厂商不会使用这块内存.
尽管uefi规范讲的是固件可以采用任何地址,内核需要使用内核重定位技术去避免遇到内存空洞,但我没有这么做.
This commit is contained in:
LoGin
2023-11-19 11:42:53 +08:00
committed by GitHub
parent 46e234aef6
commit 99dbf38d2e
9 changed files with 275 additions and 157 deletions

View File

@ -62,7 +62,7 @@ if [ ! -f "${root_folder}/bin/disk.img" ]; then
--bios)
case "$2" in
uefi)
sudo bash ./create_hdd_image.sh -P GPT #GPT分区
sudo bash ./create_hdd_image.sh -P MBR #GPT分区
;;
legacy)
sudo bash ./create_hdd_image.sh -P MBR #MBR分区
@ -88,7 +88,7 @@ echo $LOOP_DEVICE
# 检测grub文件夹是否存在
if [ -d "${GRUB_INSTALL_PATH}" ]; then
echo "grub已安装"
INSTALL_GRUB_TO_IMAGE="0"
INSTALL_GRUB_TO_IMAGE="0"
else
mkdir -p ${GRUB_INSTALL_PATH}
fi