admin管理员组

文章数量:1531695

2024年7月1日发(作者:)

支持BIOS和uEFI启动的GRUB2引导盘

利用GRUB2启动程序,合并网上优秀资源(感谢原作者)生成一个启动的U盘/光盘。

根目录只有引导所需要的EFI、BOOT二个目录无其它内容,简洁清爽。

各种引用的ISO资源使用原版而没有解包出来,方便管理以及后期维护使用。现共享

相关的内容出来供有需要的朋友参考。

1、包含MAXDOS工具包(仅BIOS引导可用),Windows密码清除/绕过工具;

2、WinPE使用MEMDISK载入ISO镜像(仅BIOS引导时可用;uEFI引导因暂不支持

ISO装载不能使用,如需要可以使用EFIShell方式加载);

3、Parted_Magic、Linux Live CD使用linux/initrd方式载入。

添加LiveCD的一些光盘路径写法(findiso=$isofile、iso_filename=$isofile、

iso-scan/filename=$isofile),核心的引用参数可以参考各linuvCD内的配置文件,然后在配

置文件中加入ISO路径中引用即可。

4、镜像只有基础的引导程序,大家可根据实际需要放置相关文件,如各

种ISO文件WinPE、PartedMagic、Linux liveCD等(注意不支持本身通过MEMDISK加载

的各型PE ISO,例如众多GHOST系统盘中带的一般就是此类),然后修改GRUB2相关配

置菜单即可使用。

关于修改配置菜单,请使用文本编辑器(如:notepad++、UltraEdit)保存为无

签名的UTF8编码,详情参考配置文件。

光盘目录:

+--- /

|+-- /EFI —— GRUB2 uEFI引导文件

|+-- /BOOT/GRUB2 —— GRUB2 配置文件及相关模块

|+-- /BOOT/GRUB2/ —— GRUB2主配置文件

|+-- /BOOT/GRUB2/os_ —— LiveCD及系统安装配置文件

|+-- /BOOT/GRUB2/os_ —— 获取本地硬盘启动项配置文件

|+-- /BOOT/GRUB2/ —— PartedMagic配置文件

|+-- /BOOT/GRUB2/ —— Windows登陆密码工具配置文件

|+-- /BOOT/Tools —— 一些实用小工具软件

|+-- /BOOT/Tools/GrubLDR —— GRUB2引导文件备份

|+-- /SoftWare/ISO —— 各种ISO镜像文件,如:WinPE、PartedMagic、Linux liveCD等。

|+-- /SoftWare/ISO/ —— Parted_Magic_2015_05_04工具箱

|+-- /SoftWare/ISO/ —— WinPE工具盘

|+-- /SoftWare/ISO/***.iso —— CentOS ISO,详情请参见:/

|+-- /SoftWare/ISO/***.iso —— Ubuntu ISO,详情请参见:/

|+-- /SoftWare/Tools —— 各种Windows工具。

__

关于生成USB启动盘

GURB2对U盘启动兼容稍差,在Windows下暂无合适程序灵活创建,但也许与使用的

U盘有关。

下面介绍二种制作方式,完成之后可以随意格式化U盘,仅需要将相关文件保存至相

应目录即可,然后修改相关配置文件路径参数。

注意:以下操作将删除原U盘的所有资料,请保存备份。

方式一:Windows系统下面 UltraISO 制作方式:

1、下载镜像文件,UltraISO打开镜像文件,选择操作:启动——写入硬盘

映像。

注意:写入方式选择“RAW”方式,而非采用UltraISO的引导模式(对GRUB2兼容

不好),以RAW方式可以将镜像文件中完全写入U盘,包括引导记录。

2、此时在资源管理器发现U盘容量只有60M左右,其它空间为不可见状态,不用担心...

3、现复制全部目录文件到硬盘上备用,也可再次从镜像文件提取。

4、使用第三方分区软件(如:DiskGenius)根据需要重新对U盘分区格式化,不能使用

Windows自带的因为不支持对U盘多个主分区。

注意:不要再对U盘MBR进行相关写操作,如果只分一个区要格式化成FAT32格式,

其它选项默认即可。

附:镜像文件链接::/s/1gdtS6Nh 密码: jvuk

方式二:在linux系统操作过程,推荐!

1、准备USB分区:

fdisk -l —— 列出USB设置位置,假设为/dev/sdb。

fdisk /dev/sdb ——创建U盘分区, d(删除分区) > n(创建分区)> a(激活主分区)>w

(保存分区信息)

mkfs -t vfat /dev/sdb1 —— 格式化为FAT分区

mkdir /mnt/usb —— 创建U盘挂载目录。

mount /dev/sdb1 /mnt/usb —— 挂载U盘到/mnt/usb

2、安装GRUB2引导程序到U盘中

grub2-install --modules="biosdisk disk part_msdos part_gpt iso9660 udf fat exfat ext2 halt

reboot" --boot-directory=/mnt/usb/BOOT --target=i386-pc --removable /dev/sdb

grub2-install --modules="disk part_msdos part_gpt iso9660 udf fat exfat ext2 halt reboot"

--boot-directory=/mnt/usb/BOOT --target=x86_64-efi --efi-directory=/mnt/usb --removable

/dev/sdb

或使用如下命令:

grub2-install --boot-directory=/mnt/usb/BOOT --target=i386-pc --removable /dev/sdb

grub2-install --boot-directory=/mnt/usb/BOOT --target=x86_64-efi --efi-directory=/mnt/usb

--removable /dev/sdb

下面介绍启动盘相关信息:

一、GRUB2引导核心中默认模块:

BIOS引导:biosdisk disk part_msdos part_gpt iso9660 udf fat exfat ext2 halt reboot

EFI引导:disk part_msdos part_gpt iso9660 udf fat exfat ext2 halt reboot

其它模块在GRUB2配置文件中加载,模块相关配置Windows下操作示例如下:

1、生成bios启动文件:

1.1、配置BIOS引导核心

E: -d D:UPBOOTGRUB2i386-pc -p

/BOOT/GRUB2 -o D: -O i386-pc biosdisk disk part_msdos

part_gpt iso9660 udf fat exfat ext2 halt reboot

1.2、复制文件

copy /Y /b D: D:

1.3、生成BIOS启动文件

copy /Y /b

D:+D:

D:

2、生成EFI启动文件:

2.1、配置EFI引导核心

E: -d D:UPBOOTGRUB2x86_64-efi -p

/BOOT/GRUB2 -o D: -O x86_64-efi disk part_msdos

part_gpt iso9660 udf fat exfat ext2 halt reboot

2.2、复制到启动目录

copy /Y /b D: D:

2.3、生成EFI启动文件

E: D:

D:UPEFI /i /h /y

3、打包成可引导ISO文件

E: -v -d -N -R -J -boot-info-table -l -relaxed-filenames

-gbk4dos-filenames -gbk4win-filenames -no-emul-boot -boot-load-size 4 -o D:

-hide g -hidden g -hide-joliet g -v -V "MULTIBOOTCD" -b

BOOT/Tools/GrubLDR/ -eltorito-alt-boot -b BOOT/Tools/GrubLDR/

-no-emul-boot D:UP

一些引导菜单示例写法:

5. 添加LiveCD

完整的系统及各种Ports,已经足以满足FreeBSD的维护需求,但对于其他的操作系统,可

能还需要各种LiveCD作为补充。

有别于传统的刻录或dd命令写入方式,这里通过GRUB 2自带的loopback功能,能够非常

容易的实现多个LiveCD共存:只要将LiveCD对应的iso文件置于/media/iso/,然后在

/media/boot/grub/中添加引导菜单即可;而/media/位于FAT32分区,可以在任何系统

下操作。

以下将列出一些常用的LiveCD所对应的引导菜单,未列出的可以在其对应的网站上查询。

对于很多采用Syslinux引导的LiveCD,可能需要将其引导菜单手动转换为GRUB 2引导菜

单。

5.1 独立式LiveCD

1) GParted(分区操作)

menuentry "GParted" {

set root=(hd0,1)

set file="/iso/" 将下载后的iso文件更名为

loopback loop $file

linux (loop)/live/vmlinuz boot=live config union=aufs noswap noprompt ip=frommedia

toram=fs findiso=$file

initrd (loop)/live/

}

这里更名文件的目的在于:新版本的LiveCD发布时,只要下载对应的iso文件并覆盖即可

完成升级,无需再次修改引导菜单。

2) Clonezilla(磁盘镜像与克隆)

menuentry "Clonezilla" {

set root=(hd0,1)

set file="/iso/"

loopback loop $file

linux (loop)/live/vmlinuz boot=live live-config noswap nolocales edd=on nomodeset

ocs_live_run="ocs-live-general" ocs_live_extra_param="" ocs_live_keymap=""

ocs_live_batch="no" ocs_lang="" ip=frommedia nosplash toram=fs

findiso=$file

initrd (loop)/live/

}

3) DBAN(数据擦除)

menuentry "DBAN" {

loopback loop (hd0,1)/iso/

linux (loop)/ nuke="dwipe"

}

5.2 集成式LiveCD

1) SystemRescueCd(基于Gentoo Linux)

menuentry "SystemRescueCd" {

set root=(hd0,1)

set file="/iso/"

loopback loop $file

linux (loop)/isolinux/rescue64 isoloop=$file docache setkmap=us dostartx

#linux (loop)/isolinux/altker64 isoloop=$file nomodeset

initrd (loop)/isolinux/

}

2) Parted Magic OS(基于Slackware)

menuentry "PartedMagicOS" {

set root=(hd0,1)

set file="/iso/"

loopback loop $file

linux (loop)/pmagic/bzImage edd=off load_ramdisk=1 prompt_ramdisk=0 rw loglevel=9

max_loop=256 vmalloc=320MiB iso_filename=$file

initrd (loop)/pmagic/

}

6.2 安装Linux

绝大多数Linux发行版都会提供ISO格式的LiveCD,同时支持从LiveCD安装系统;也就

是说,只要通过添加LiveCD一节的方法引导至LiveCD即可。

例如,使用此U盘安装Gentoo Linux时,对应的GRUB 2引导菜单可写作:

menuentry "Install Gentoo" {

set root=(hd0,1)

set file="/iso/" 将下载后的iso文件更名为

loopback loop $file

linux (loop)/isolinux/gentoo root=/dev/ram0 init=/linuxrc dokeymap looptype=squashfs

loop=/fs cdroot initrd= isoboot=$file

initrd (loop)/isolinux/

}

使用此种方式引导个别Linux发行版所提供的LiveCD可能会出现一些问题,需要执行额外

的修正操作。例如,下面的菜单用于引导openSUSEKDE LiveCD:

menuentry "openSUSE KDE LiveCD" {

set root=(hd0,1)

set file="/iso/" 将下载后的iso文件更名为

loopback loop $file

linux (loop)/boot/x86_64/loader/linux kiwidebug=1

initrd (loop)/boot/x86_64/loader/initrd

}

但此菜单仅能引导至LiveCD的的Debug模式(命令行界面),必须继续手动输入以下命令

来引导至图形界面:

# mkdir /livecd/

# mount /dev/sdb1 /mnt/

# mount -o loop /mnt/iso/ /cdrom/

# mount -o loop /mnt/iso/ /livecd/

# exit

6.3 安装Windows

由于GRUB 2并不能直接引导Windows安装所用的iso文件,因此需要使用另外一种方式。

这里假设iso文件名为,目标硬盘为/dev/ada0,以下为具体步骤:

1) 使用独立式LiveCD一节的方法为此U盘添加GParted并引导进入。

2) 使用GParted为/dev/sda(即FreeBSD下的/dev/ada0)创建msdos分区表,然后划分出系

统所在分区并格式化为ntfs,最后将其flag设置为boot。

3) 重启并引导进入U盘上的FreeBSD系统,使用Ports安装p7zip与fusefs-ntfs。

4) 挂载之前创建的Windows系统分区并写入Windows安装文件:

# kldload /usr/local/modules/ 加载ntfs-3g所需的模块

# ntfs-3g /dev/ada0s1 /mnt/ 这里假设之前创建的Windows系统所在分区为

/dev/ada0s1

# 7z x -o{/mnt/} 由于绝大部分Windows安装盘均为UDF格式,因

此无法使用tar解压

...

5) 重启并选择Continue菜单从目标硬盘引导后,即可正常安装Windows。

整个过程中需要注意两点:

之所以使用GParted,是因为在FreeBSD中无法格式化NTFS分区(fusefs-ntfs自带的mkntfs

命令格式化时会卡在99%)。

一旦引导进入了Windows安装环境,系统分区下除sources文件夹外的所有内容均可删除,

而安装完成后sources文件夹也可删除。

本文标签: 引导U盘文件使用需要