操作系统开发 - 在disk image上安裝grub2
2012-10-05 12:45
155 查看
網上很少關於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
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
相关文章推荐
- 操作系统开发 - Grub2 bootloader之安裝
- 深度剖析E680G开发四.移植OPIE操作系统(中)-交叉编译Qte
- VC 64位程序开发心的——获得程序位数和操作系统位数
- BlackBerry Tablet OS SDK (操作系统开发工具包) UI指南(二)
- 谈谈你喜欢的开发环境。(例如操作系统,编辑器,浏览器,工具等等。)
- android开发-2操作系统安装
- 汽车电子软件开发中的几个问题(2):基于OSEK/VDX操作系统进行汽车电子软件开发
- 基于面向对象操作系统开发平台(OSKit)的分析与程序设计http://www.linuxk.com/SH/shell/3942.html
- 使用C语言开发操作系统(1)
- 博文视点Open Party第5期:操作系统与嵌入式开发 圆满结束
- 在进行嵌入式开发之前,首先要建立一个交叉编译环境,这是一套编译器、连接器和libc库等组成的开发环境。文章通过一个具体的例子说明了这些嵌入式交叉编译开发工具的制作过程。 随着消费类电子产品的大量开发和应用和Linux操作系统的不断健壮和强大,嵌入式系统越来
- ARM9开发之实现多任务操作系统的基本技术
- 嵌入式实时操作系统VxWorks入门――开发环境构建[转]
- 龙芯软件开发(30)-- 自动加载操作系统
- 试验开发第三代操作系统
- 嵌入式实时操作系统开发phoenix os简介
- ArcEngine开发——在64位操作系统下使用VS2010中开发ArcEngine应用程序的编译问题
- 用S60操作系统SDK开发NOKIA手机应用程序-学习笔记(2)
- 开发语言 .net c# java objective-c 数据库SQL ORACLE 操作系统 QQ群 77763608