向磁盘分区中添加g2ldr引导记录的工具,附源码
-
- 帖子: 17
- 注册时间: 2012-08-09 10:40
向磁盘分区中添加g2ldr引导记录的工具,附源码
windows下有bootsect.exe可以方便的向磁盘中添加ntldr或者bootmgr的引导文件,而Linux下我没有找到类似的工具,所以自己编了一个在此分享一下.
支持向fat16,fat32,ntfs分区添加引导记录,可以引导g2ldr文件,fat16模式虽然可以正确添加引导但是grub2对fat16支持好像不是很好.
工具: 源码:
支持向fat16,fat32,ntfs分区添加引导记录,可以引导g2ldr文件,fat16模式虽然可以正确添加引导但是grub2对fat16支持好像不是很好.
工具: 源码:
-
- 帖子: 4
- 注册时间: 2008-07-24 15:01
Re: 向磁盘分区中添加g2ldr引导记录的工具,附源码
好东西,用过bootice 。 试下楼主这个。
不过还是想知道如何手动添加。。。
不过还是想知道如何手动添加。。。
-
- 帖子: 17
- 注册时间: 2012-08-09 10:40
Re: 向磁盘分区中添加g2ldr引导记录的工具,附源码
你可以看看源代码就是向某几个扇区添加几段代码,可以用dd指令实现,不过还需要对分区类型进行判断evnious 写了:好东西,用过bootice 。 试下楼主这个。
不过还是想知道如何手动添加。。。
-
- 帖子: 1318
- 注册时间: 2005-09-13 4:56
- 系统: Ubuntu Jammy Jellyfi
Re: 向磁盘分区中添加g2ldr引导记录的工具,附源码
linux下怎么没有,mbr这个包就是干这个的
另外,/usr/lib/syslinux/下有一个mbr.bin,就是windows的主引导记录
另外,/usr/lib/syslinux/下有一个mbr.bin,就是windows的主引导记录
- careone
- 帖子: 839
- 注册时间: 2007-12-17 21:41
Re: 向磁盘分区中添加g2ldr引导记录的工具,附源码
烦请楼主贴出使用方法和参数
魁拔不死,天下不宁。
魁拔既死,天下不平。
--------------
Careone <emacslocale^126.com>
https://sourceforge.net/projects/emacslocale/files/
魁拔既死,天下不平。
--------------
Careone <emacslocale^126.com>
https://sourceforge.net/projects/emacslocale/files/
-
- 帖子: 17
- 注册时间: 2012-08-09 10:40
Re: 向磁盘分区中添加g2ldr引导记录的工具,附源码
参数只有一个,比如你使用的是64位系统,设备文件是/dev/sdb1就执行指令vbr64 /dev/sdb1careone 写了:烦请楼主贴出使用方法和参数
然后把g2ldr放进去
g2ldr 可以通过以下方法获得:
cat /boot/grub/lnxboot.img /boot/grub/core.img > g2ldr
也可以使用grub-mkimage自己定制
用这种方法可以比较方便的制作USB启动盘
-
- 帖子: 17
- 注册时间: 2012-08-09 10:40
Re: 向磁盘分区中添加g2ldr引导记录的工具,附源码
我这个工具是添加卷引导记录VBR也就是单个分区引导的,某些电脑可能除了VBR以外还需要添加MBR。我作的这个工具只是模仿windows下的bootsect工具funicorn 写了:linux下怎么没有,mbr这个包就是干这个的
另外,/usr/lib/syslinux/下有一个mbr.bin,就是windows的主引导记录
-
- 帖子: 17
- 注册时间: 2012-08-09 10:40
Re: 向磁盘分区中添加g2ldr引导记录的工具,附源码
再贴一段制作g2ldr定制的shell脚本,给需要的人
另附一个我写的配置文件:grub.cfg写好后跟shell脚本放在同一目录下
"/boot/grub/wzlboot.cfg"替换成你想用来存放grub菜单的文件路径
代码: 全选
#!/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
代码: 全选
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
-
- 帖子: 17
- 注册时间: 2012-08-09 10:40
Re: 向磁盘分区中添加g2ldr引导记录的工具,附源码
再加一个引导菜单的配置文件,全套的
/boot/grub/wzlboot.cfg:
把/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模式的)
/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
}
下载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模式的)
- youzhiyili
- 帖子: 2422
- 注册时间: 2012-03-22 20:42
- 系统: ubuntu22.04
Re: 向磁盘分区中添加g2ldr引导记录的工具,附源码
先顶后看 

@自由建客 @qy117121 @枫叶饭团 @cikekid @YeLee @jtshs256 @eexpress @ljj_jjl2008 @zhw2101024 @TeliuTe @月下叹逍遥 @leeaman @懒蜗牛Gentoo @灰色小狼 @photor @adagio @JiangHui @phoenixlzx @oneleaf
- niumao
- 帖子: 392
- 注册时间: 2010-10-27 20:43
- niumao
- 帖子: 392
- 注册时间: 2010-10-27 20:43