我需要做一些棘手的事情:我需要在文件中创建 GRUB 分区。 我的系统是用 buildroot (x86) 构建的,grub 不是为主机构建的,只是为目标构建的,所以我不能使用 grub-install
我的步骤(ATM):
GRUB=grub.partition
MOUNTPOINT=/tmp/bootloader
sudo umount -f ${MOUNTPOINT} 2>/dev/null
dd if=/dev/zero of=${GRUB} bs=1M count=32 # 32 MB partition
echo -e "g\nn\n\n\n\nx\nA\nr\nw" | fdisk ${GRUB} -n
mke2fs -t ext2 -F -L LOADER ${GRUB}
mkdir -p ${MOUNTPOINT}
sudo mount -o rw -t ext2 ${GRUB} ${MOUNTPOINT}
sudo mkdir -p ${MOUNTPOINT}/boot/grub/i386-pc
sudo mkdir -p ${MOUNTPOINT}/boot/grub/fonts
GRUB_BUILD_DIR=path_to_grub_inside_of_buildroot
# copying *.mod
sudo cp ${GRUB_BUILD_DIR}/build-i386-pc/grub-core/*.mod ${MOUNTPOINT}/boot/grub/i386-pc
# copy grub.cfg
sudo cp default_grub.cfg ${MOUNTPOINT}/boot/grub/grub.cfg
sudo chown -R root:root ${MOUNTPOINT}/boot
sync
sudo umount ${MOUNTPOINT}
问题是:当我用 dd 刷新 grub.partition 时,我的设备可以看到 grub.cfg 但是在启动时它说“找不到命令”linux”... 我错过了哪些步骤? Buildroot 还创建 ./images/grub.img,我应该以某种方式使用它吗? 需要您的建议,提前致谢