当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 12 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 向磁盘分区中添加g2ldr引导记录的工具,附源码
帖子发表于 : 2012-08-09 10:51 

注册: 2012-08-09 10:40
帖子: 17
送出感谢: 0 次
接收感谢: 3
windows下有bootsect.exe可以方便的向磁盘中添加ntldr或者bootmgr的引导文件,而Linux下我没有找到类似的工具,所以自己编了一个在此分享一下.
支持向fat16,fat32,ntfs分区添加引导记录,可以引导g2ldr文件,fat16模式虽然可以正确添加引导但是grub2对fat16支持好像不是很好.
工具:
附件:
文件注释: vbr32是32位版
vbr64是64位版

vbr.zip [8.1 KiB]
被下载 68 次

源码:
附件:
文件注释: 启动代码提取自bootsect.exe(不用于商业目的应该不算侵权吧)
vbr_src.zip [2.75 KiB]
被下载 69 次



_________________
评价: 7.41% careoneibear
 
页首
 用户资料  
 
2 楼 
 文章标题 : Re: 向磁盘分区中添加g2ldr引导记录的工具,附源码
帖子发表于 : 2012-08-13 22:41 

注册: 2008-07-24 15:01
帖子: 4
送出感谢: 0 次
接收感谢: 0 次
好东西,用过bootice 。 试下楼主这个。
不过还是想知道如何手动添加。。。


页首
 用户资料  
 
3 楼 
 文章标题 : Re: 向磁盘分区中添加g2ldr引导记录的工具,附源码
帖子发表于 : 2012-08-14 8:28 

注册: 2012-08-09 10:40
帖子: 17
送出感谢: 0 次
接收感谢: 3
evnious 写道:
好东西,用过bootice 。 试下楼主这个。
不过还是想知道如何手动添加。。。

你可以看看源代码就是向某几个扇区添加几段代码,可以用dd指令实现,不过还需要对分区类型进行判断


页首
 用户资料  
 
4 楼 
 文章标题 : Re: 向磁盘分区中添加g2ldr引导记录的工具,附源码
帖子发表于 : 2012-08-14 9:22 

注册: 2005-09-13 4:56
帖子: 1112
系统: Ubuntu QQ
送出感谢: 0 次
接收感谢: 46
linux下怎么没有,mbr这个包就是干这个的

另外,/usr/lib/syslinux/下有一个mbr.bin,就是windows的主引导记录


_________________
添加ppa后只更新此ppa:
update-ppa()
{ sudo apt-get update -o Dir::Etc::sourcelist="sources.list.d/$1.list" -o Dir::Etc::sourceparts="-" -o APT::Get::List-Cleanup="0"
}
写入~/.bashrc,source一下,就可以直接用,是不是很方便?觉得方便就按个赞。


页首
 用户资料  
 
5 楼 
 文章标题 : Re: 向磁盘分区中添加g2ldr引导记录的工具,附源码
帖子发表于 : 2012-08-14 9:53 
头像

注册: 2007-12-17 21:41
帖子: 783
送出感谢: 67
接收感谢: 23
烦请楼主贴出使用方法和参数


_________________
* 日本人说:就算我们不拜靖国神社,韩国人也不会买我们的东西;
就算我们拜靖国神社,中国人照样买我们的东西。

* 历史不相信眼泪。能挡住狼的不是篱笆,而是棍子和猎枪。
--------------
Careone <emacslocale^126.com>
https://sourceforge.net/projects/emacslocale/files/


页首
 用户资料  
 
6 楼 
 文章标题 : Re: 向磁盘分区中添加g2ldr引导记录的工具,附源码
帖子发表于 : 2012-08-14 10:07 

注册: 2012-08-09 10:40
帖子: 17
送出感谢: 0 次
接收感谢: 3
careone 写道:
烦请楼主贴出使用方法和参数

参数只有一个,比如你使用的是64位系统,设备文件是/dev/sdb1就执行指令vbr64 /dev/sdb1
然后把g2ldr放进去
g2ldr 可以通过以下方法获得:
cat /boot/grub/lnxboot.img /boot/grub/core.img > g2ldr
也可以使用grub-mkimage自己定制
用这种方法可以比较方便的制作USB启动盘


页首
 用户资料  
 
7 楼 
 文章标题 : Re: 向磁盘分区中添加g2ldr引导记录的工具,附源码
帖子发表于 : 2012-08-14 10:11 

注册: 2012-08-09 10:40
帖子: 17
送出感谢: 0 次
接收感谢: 3
funicorn 写道:
linux下怎么没有,mbr这个包就是干这个的

另外,/usr/lib/syslinux/下有一个mbr.bin,就是windows的主引导记录

我这个工具是添加卷引导记录VBR也就是单个分区引导的,某些电脑可能除了VBR以外还需要添加MBR。我作的这个工具只是模仿windows下的bootsect工具


页首
 用户资料  
 
8 楼 
 文章标题 : Re: 向磁盘分区中添加g2ldr引导记录的工具,附源码
帖子发表于 : 2012-08-14 10:23 

注册: 2012-08-09 10:40
帖子: 17
送出感谢: 0 次
接收感谢: 3
再贴一段制作g2ldr定制的shell脚本,给需要的人
代码:
#!/bin/sh
format_set="i386-pc"
rm g2ldr 2> /dev/null
rm core.img 2> /dev/null
rm memdisk.cpio 2> /dev/null
rm ./boot -r 2> /dev/null
mkdir ./boot
mkdir ./boot/grub
mkdir ./boot/grub/locale
cp /usr/lib/grub/$format_set/efiemu.mod ./boot/grub
cp /usr/lib/grub/$format_set/gfxmenu.mod ./boot/grub
cp /usr/lib/grub/$format_set/bitmap.mod ./boot/grub
cp /usr/lib/grub/$format_set/jpeg.mod ./boot/grub
cp /usr/lib/grub/$format_set/tga.mod ./boot/grub
cp /usr/lib/grub/$format_set/png.mod ./boot/grub
cp /usr/lib/grub/$format_set/play.mod ./boot/grub
cp /usr/lib/grub/$format_set/ufs1.mod ./boot/grub
cp /usr/lib/grub/$format_set/ufs2.mod ./boot/grub
cp /usr/lib/grub/$format_set/minix.mod ./boot/grub
cp /usr/lib/grub/$format_set/minix2.mod ./boot/grub
cp /usr/lib/grub/$format_set/terminal.mod ./boot/grub
cp /usr/lib/grub/$format_set/terminfo.mod ./boot/grub
cp /usr/lib/grub/$format_set/usb.mod ./boot/grub
cp /usr/lib/grub/$format_set/usb_keyboard.mod ./boot/grub
cp /usr/lib/grub/$format_set/usbms.mod ./boot/grub
cp /usr/lib/grub/$format_set/ohci.mod ./boot/grub
cp /usr/lib/grub/$format_set/multiboot2.mod ./boot/grub
cp /usr/lib/grub/$format_set/nilfs2.mod ./boot/grub
cp /usr/lib/grub/$format_set/ata.mod ./boot/grub
cp /usr/lib/grub/$format_set/hashsum.mod ./boot/grub
cp /usr/lib/grub/$format_set/xnu_uuid.mod ./boot/grub
cp /usr/lib/grub/$format_set/vbe.mod ./boot/grub
cp /usr/lib/grub/$format_set/vga.mod ./boot/grub
cp /usr/lib/grub/$format_set/video_bochs.mod ./boot/grub
cp /usr/lib/grub/$format_set/video_cirrus.mod ./boot/grub
cp /usr/lib/grub/$format_set/gfxterm.mod ./boot/grub
cp /usr/lib/grub/$format_set/gettext.mod ./boot/grub
cp /usr/lib/grub/$format_set/*.lst ./boot/grub
cp /usr/lib/grub/$format_set/*.o ./boot/grub
cp /usr/lib/syslinux/memdisk ./boot/grub
cp grub.cfg ./boot/grub/
#cp /usr/share/grub/unicode.pf2 ./boot/grub/
cp /boot/grub/locale/* ./boot/grub/locale
find boot | cpio -o -H ustar > memdisk.cpio
grub-mkimage -O $format_set -o core.img --prefix='(memdisk)/boot/grub' -m memdisk.cpio acpi affs afs befs biosdisk blocklist boot bsd btrfs bufio cat chain configfile cpio drivemap echo elf ext2 fat gzio halt help hfs hfsplus iso9660 jfs linux16 linux loadenv loopback ls lvm lzopio memdisk mmap multiboot ntfscomp ntfs ntldr part_acorn part_amiga part_apple part_bsd part_gpt part_msdos part_sun part_sunpc pxe raid reboot reiserfs scsi search_fs_file search_fs_uuid search_label search sfs tar udf xfs xnu xzio zfs gptsync pxecmd
cat /boot/grub/lnxboot.img ./core.img > g2ldr


另附一个我写的配置文件:grub.cfg写好后跟shell脚本放在同一目录下
代码:
function load_video {
  insmod vbe
  insmod vga
  insmod video_bochs
  insmod video_cirrus
}
function chroot {
  prefix=(${root})/boot/grub/
}
set timeout=5
search --no-floppy -f --set=fontdev /boot/grub/unicode.pf2
if loadfont ($fontdev)/boot/grub/unicode.pf2 ; then
  set gfxmode=auto
  load_video
  insmod gfxterm
  set locale_dir=(memdisk)/boot/grub/locale
  set lang=zh_CN
  insmod gettext
  terminal_output gfxterm
fi
set menu_color_normal=white/black
set menu_color_highlight=black/light-gray
if background_color 44,0,30; then
  clear
fi
insmod reboot
search --no-floppy -f --set=root /boot/grub/wzlboot.cfg
source /boot/grub/wzlboot.cfg


"/boot/grub/wzlboot.cfg"替换成你想用来存放grub菜单的文件路径
附件:
文件注释: 写好的文件和现成的g2ldr
g2ldr.zip [364.18 KiB]
被下载 66 次


页首
 用户资料  
 
9 楼 
 文章标题 : Re: 向磁盘分区中添加g2ldr引导记录的工具,附源码
帖子发表于 : 2012-08-14 10:44 

注册: 2012-08-09 10:40
帖子: 17
送出感谢: 0 次
接收感谢: 3
再加一个引导菜单的配置文件,全套的
/boot/grub/wzlboot.cfg:
代码:
menuentry '微型Linux TinyCore'{
   search --no-floppy --file --set=root /boot/iso/TinyCore.iso
   set isofile="/boot/iso/TinyCore.iso"
   loopback loop /boot/iso/TinyCore.iso
   linux (loop)/boot/vmlinuz iso-scan/filename=/boot/iso/TinyCore.iso quiet cde
   initrd (loop)/boot/core.gz
}
menuentry "运行 Ubuntu Linux" {
   search --no-floppy --file --set=root /boot/iso/ubuntu.iso
   loopback loop /boot/iso/ubuntu.iso
   linux   (loop)/casper/vmlinuz iso-scan/filename=/boot/iso/ubuntu.iso file=(loop)/cdrom/preseed/ubuntu.seed noapic nomodeset boot=casper locale=zh_CN.UTF-8 quiet splash --
   initrd   (loop)/casper/initrd.lz
}
menuentry "安装 Ubuntu Linux" {
   search --no-floppy --file --set=root /boot/iso/ubuntu.iso
   loopback loop /boot/iso/ubuntu.iso
   linux   (loop)/casper/vmlinuz iso-scan/filename=/boot/iso/ubuntu.iso file=(loop)/cdrom/preseed/ubuntu.seed noapic nomodeset boot=casper locale=zh_CN.UTF-8 only-ubiquity quiet splash --
   initrd   (loop)/casper/initrd.lz
}
menuentry "检查Linux安装盘的完整性" {
   search --no-floppy --file --set=root /boot/iso/ubuntu.iso
   loopback loop /boot/iso/ubuntu.iso
   linux   (loop)/casper/vmlinuz noapic boot=casper integrity-check locale=zh_CN.UTF-8 quiet splash --
   initrd   (loop)/casper/initrd.lz
}
menuentry '启动 Windows UEFI'{
   search --no-floppy --file --set=root /efi/microsoft/boot/bootmgfw.efi
   chainloader /efi/microsoft/boot/bootmgfw.efi
}
menuentry '安装 Windows7 UEFI(需要bootmgfw.efi)'{
   search --no-floppy --file --set=root /sources/install.wim
   chainloader /bootmgfw.efi
}
menuentry '安装 Windows8 UEFI'{
   search --no-floppy --file --set=root /sources/install.wim
   chainloader /efi/boot/bootx64.efi
}
menuentry '安装 Windows BIOS'{
   insmod ntldr
   ntldr /bootmgr
}
menuentry 'DiskGen磁盘分区工具'{
   insmod linux16
   linux16 ${prefix}/memdisk raw
   initrd16 /boot/img/diskgen.img
}
menuentry 'Win98DOS'{
   insmod linux16
   linux16 ${prefix}/memdisk raw
   initrd16 /boot/img/win98.img
}


把/usr/share/grub/unicode.pf2复制到启动盘的/boot/grub目录下可以支持中文显示
下载TinyCore的iso镜像放在/boot/iso/下改名TinyCore.iso可以用来引导TinyCore
下载ubuntu的live cd放在/boot/iso/下改名ubuntu.iso可以用来引导ubuntu live cd
把windows 7的光盘内容复制到启动盘的根目录可以用来引导windows7安装
这样一个可以安装ubuntu和windows7的混合引导盘就做好了(最近在研究grub-efi其中部分代码是UEFI模式的)


页首
 用户资料  
 
10 楼 
 文章标题 : Re: 向磁盘分区中添加g2ldr引导记录的工具,附源码
帖子发表于 : 2012-08-14 10:57 
头像

注册: 2012-03-22 20:42
帖子: 2419
送出感谢: 144
接收感谢: 36
先顶后看 :em11


_________________
@自由建客 @qy117121 @枫叶饭团 @cikekid @YeLee @jtshs256 @eexpress @ljj_jjl2008 @zhw2101024 @TeliuTe @月下叹逍遥 @leeaman @懒蜗牛Gentoo @灰色小狼 @photor @adagio @JiangHui @phoenixlzx @oneleaf


页首
 用户资料  
 
11 楼 
 文章标题 : Re: 向磁盘分区中添加g2ldr引导记录的工具,附源码
帖子发表于 : 2013-05-05 1:27 
头像

注册: 2010-10-27 20:43
帖子: 370
送出感谢: 2
接收感谢: 15
:em11 正需要这个呢。真大牛。


_________________
牛是牛顿的牛 毛是朱毛的毛


页首
 用户资料  
 
12 楼 
 文章标题 : Re: 向磁盘分区中添加g2ldr引导记录的工具,附源码
帖子发表于 : 2013-05-05 1:46 
头像

注册: 2010-10-27 20:43
帖子: 370
送出感谢: 2
接收感谢: 15
:em11 正需要这个呢。真大牛。


_________________
牛是牛顿的牛 毛是朱毛的毛


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 12 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:poloshiao 和 1 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译