操作系统开发 - 在disk image上安裝grub2

本文提供了一套详细的步骤指南,用于在diskimage中安装grub2,包括创建分区、格式化文件系统、配置grub.cfg等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

網上很少關於grub2在disk image上的安裝方法,所以寫這編教程:


Makefile:

dd if=/dev/zero of=hd.img count=20 bs=1047675
./createPartition.sh
kpartx -a hd.img
mkfs.vfat /dev/mapper/loop0p1
mount /dev/mapper/loop0p1 1
mkdir -p 1/boot/grub
cp grub.cfg 1/boot/grub/grub.cfg
cp testing_kernel 1/boot



echo "(hd0) /dev/loop0" > device.map
echo "set prefix=(hd0,msdos1)/boot/grub" > mycfg.cfg
~/grub2/bin/grub-mkimage --config=mycfg.cfg -p /boot -O i386-pc -o 1/boot/grub/core.img loadenv chain biosdisk part_dvh part_msdos msdospart part_gpt exfat ext2 fat vbe vga ntfs echo test configfile minicmd hdparm normal
cp ~/grub2/lib/grub/i386-pc/boot.img 1/boot/grub/
~/grub2/sbin/grub-bios-setup -m device.map -d 1/boot/grub /dev/loop0
sleep 1
umount 1
kpartx -d hd.img


grub.cfg:

set timeout=15
set root=(hd0,msdos1)
#set default=0 # Set the default menu entry
 
menuentry "china ar" {
   insmod ext2
   set root=(hd0,msdos1)
   chainloader +1
#   multiboot /boot/testing_kernel   # The multiboot command replaces the kernel command
#   boot
}


menuentry "OS Name 2" {
   multiboot /boot/testing_kernel   # The multiboot command replaces the kernel command
   boot
}


creeatePartition.sh:

#!/bin/bash




cat <<EOM| fdisk hd.img
n
p
1




t
c
w
EOM


echo ok # you need this line


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值