在windows下制作grub2引导的多启动U盘(可启动wepe,安装centos7,debian10等)

2023-11-06

目标

在windows下把一个8GB的u盘制作为grub2引导的多启动U盘(可启动wepe,安装centos7,debian10等)

同时支持bios主板和uefi主板

 

工具准备

a.一个windows 10电脑

b.windows 10电脑安装好virtualbox,安装了一个linux虚拟机

c.一个U盘,这里的容量是8GB

d.一些软件

 

分区软件diskgenius https://www.diskgenius.cn/download.php

grub-2.04-for-windows https://ftp.gnu.org/gnu/grub/grub-2.04-for-windows.zip

grub4dos http://dl.grub4dos.chenall.net/grub4dos-0.4.6a-2021-05-16.7z

 

系统镜像

centos7 http://isoredirect.centos.org/centos/7/isos/x86_64/

debian10 https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/

debian10 安装需要的vmlinuz和initrd.gz两个文件

http://http.us.debian.org/debian/dists/Debian10.9/main/installer-amd64/current/images/hd-media/vmlinuz

http://http.us.debian.org/debian/dists/Debian10.9/main/installer-amd64/current/images/hd-media/initrd.gz

ubuntu 16.04 desktop https://releases.ubuntu.com/16.04/

微PE工具箱  http://www.wepe.com.cn/download.html

Gparted https://gparted.org/download.php

 

步骤简述

给u盘分区和格式化->安装grub2到u盘->放置文件,配置grub2.cfg->测试u盘启动效果

 

详细步骤

1.u盘分区和格式化

使用分区软件diskgenius将U盘分出来一个区,类型为GPT或者MBR,文件系统选择fat32格式。因为UEFI支持在fat32格式引导,

UEFI不支持ntfs格式的引导。 这里为了保证兼容BIOS和UEFI固件,选择了fat32格式的文件系统。

分区有风险,新手必须谨慎!U盘有数据,必须先备份。分清硬盘和U盘的区别,选择U盘操作,千万不要操作电脑的硬盘。

 

官方分区帮助网页 https://www.diskgenius.cn/help/index.php?from=dg

 

下图已经是我做了清除所有分区,新建分区,并且格式化为fat32后的U盘的截图。

可以看到分区成功后,u盘最前方有2048个保留扇区,刚好是1024KB,保证了grub2的成功写入。

2.安装grub2到u盘

下载好grub2-2.04-for-windows ,解压到d盘,例如在这里d:\tools\grub-2.04-for-windows

点击电脑左下角搜索按钮,输入cmd,点击“以管理员身份运行”。

 

在命令提示符里面输入diskmgmt.msc, 按回车键打开。查看U盘的编号和盘符。


这里的u盘显示磁盘1,说明编号是1。盘符是E。安装grub2的时候会用到,非常重要,请和下面的命令对上。

 

在准备安装grub2到u盘之前,先打开grub-2.04-for-windows的locale文件夹,把zh_CN文件夹里面的grub.mo复制到

上级的locale文件夹,并且改名为zh_CN.mo。

现在可以安装grub2了。

在命令提示符里面输入 cd /d d:\tools\grub-2.04-for-windows  按回车键后即进入grub2的目录

支持传统bios引导的安装命令如下。 e指的是u盘盘符e,//./PHYSICALDRIVE1指的是磁盘1。此处必须和上面磁盘管理对应。

 

grub-install.exe --force --no-floppy --target=i386-pc --themes=starfield --boot-directory=e:\boot  //./PHYSICALDRIVE1 (请改为自己电脑的实际参数)

 

支持i386-efi引导的安装命令如下。 e指的是u盘盘符e。

grub-install.exe --force --removable --no-floppy --target=i386-efi --themes=starfield  --boot-directory=e:\boot --efi-directory=e:\ (请改为自己电脑的实际参数)

 

支持x86_64-efi引导的安装命令如下。 e指的是u盘盘符e。

grub-install.exe --force --removable --no-floppy --target=x86_64-efi --themes=starfield  --boot-directory=e:\boot --efi-directory=e:\ (请改为自己电脑的实际参数)

为了更好引导windows pe系统,这里也将grub4dos解压到u盘的boot文件夹。grub2把控制权转到grub4dos,grub4dos引导windows pe。提高成功率。

3.放置一些文件到u盘,配置grub.cfg

在u盘根目录的vmlinuz和initrd.gz是安装debian10需要的内核文件

在u盘新建iso文件夹,放置一些光盘镜像文件。

 

WePE_64_V2.1.iso是微PE工具箱运行后,点击"其他安装方式"里面的“光盘”图标,生成的C盘根目录的ISO文件。

 

 

用emeditor编辑器,在u盘的boot\grub文件夹,新建一个grub.cfg文件。

 

 

内容如下,其中需要注意的是U盘分区的uuid。

#使用lsblk命令得到u盘的fat32分区的uuid,这里是B267-7191,请改为实际U盘存放grub2的分区的UUID。
set fat32_data_uuid="B267-7191"

参考文章

安装windows版本的virtualbox和使用光盘镜像安装debian10  https://blog.csdn.net/shile/article/details/117201109

在windows下使用virtualbox的debian10虚拟机运行lsblk命令查看u盘的uuid https://blog.csdn.net/shile/article/details/117212778

 

#环境变量,用于选择菜单保存,注意对应菜单里需加入函数savedefault
if [ -s $prefix/grubenv ]; then
  load_env
  set default="${saved_entry}"
else
  set default=0
fi

function savedefault {
  if [ -s $prefix/grubenv ]; then
    saved_entry="${chosen}"
    save_env saved_entry
  fi
}

#Boot automatically after xx secs.
if keystatus --shift; then
  set timeout=30
else
  set timeout=5
fi

insmod jpeg
insmod png
set theme=${prefix}/themes/starfield/theme.txt

#By default, boot the first entry.
set default=0
#Fallback to the second entry.
set fallback=1

#  load_video
  insmod gfxterm
  insmod all_video
  insmod font

if loadfont ${prefix}/fonts/unicode.pf2; then
  set gfxmode=auto
  set gfxpayload=keep
  set gfxterm_font=unicode
  set locale_dir=${prefix}/locale
  set lang=zh_CN
  terminal_output gfxterm
fi

#user and password
insmod password
#set superusers="grub"
#password grub grub


menuentry '进入微PE工具箱WePE_64_V2.1' --unrestricted {
savedefault
 set g4d_dir="/boot/grub4dos-0.4.6a"
 set cfgfile="find --set-root /iso/WePE_64_V2.1.iso;map --mem /iso/WePE_64_V2.1.iso (hd32);map --hook;chainloader (hd32); rootnoverify (hd32)"
 linux16 $g4d_dir/grub.exe --config-file=$cfgfile
 initrd16 /iso/WePE_64_V2.1.iso
}


#使用lsblk命令得到u盘的fat32分区的uuid,这里是B267-7191,请改为实际U盘的UUID
set fat32_data_uuid="B267-7191"
search --no-floppy --set=usb_iso_part --fs-uuid $fat32_data_uuid


menuentry '安装CentOS 7'  --class gnu-linux --class gnu --class os {
   savedefault
    set isofile=/iso/CentOS-7-x86_64-Minimal-2009.iso
    loopback loop ($usb_iso_part)$isofile
    probe -u (loop) --set=loopuuid
    linux (loop)/isolinux/vmlinuz iso-scan/filename=$isofile inst.repo=cdrom:UUID=$loopuuid rw  rhgb quiet
    initrd (loop)/isolinux/initrd.img
}

menuentry '安装Debian 10'  --class gnu-linux --class gnu --class os {
    savedefault
    linux ($usb_iso_part)/vmlinuz
    initrd ($usb_iso_part)/initrd.gz
}

menuentry '进入ubuntu 16.04桌面版'  --class gnu-linux --class gnu --class os {
   savedefault
    set isofile=/iso/ubuntu-16.04.7-desktop-amd64.iso
    loopback loop ($usb_iso_part)$isofile
    linux (loop)/casper/vmlinuz   file=/cdrom/preseed/ubuntu.seed boot=casper iso-scan/filename=$isofile quiet splash ---
    initrd (loop)/casper/initrd
}

menuentry '安装ubuntu 16.04桌面版'  --class gnu-linux --class gnu --class os {
    savedefault
    set isofile=/iso/ubuntu-16.04.7-desktop-amd64.iso
    loopback loop ($usb_iso_part)$isofile
    linux (loop)/casper/vmlinuz file=/cdrom/preseed/ubuntu.seed boot=casper iso-scan/filename=$isofile only-ubiquity quiet splash ---
    initrd (loop)/casper/initrd
}


menuentry "GParted Live ISO" --class gnu-linux { 
   savedefault
    set isofile="/iso/gparted-live-1.3.0-1-amd64.iso"
    loopback loop ($usb_iso_part)$isofile
    linux (loop)/live/vmlinuz boot=live config union=overlay username=user noswap noprompt ip=net.ifnames=0 toram=filesystem.squashfs nosplash findiso=${isofile}
    initrd (loop)/live/initrd.img
}


menuentry "Reboot" --unrestricted {
	reboot
}

menuentry "Shutdown" --unrestricted {
	halt
}

 

保存好grub.cfg后 ,弹出U盘。

4.测试效果

将u盘插入一个电脑,开机进入bios,设置从u盘启动,查看具体效果。

 

参考资料

 

 

 

 

 

 

参考文章

  1. https://man7.org/linux/man-pages/man7/dracut.cmdline.7.html
  2. https://access.redhat.com/documentation/zh-cn/red_hat_enterprise_linux/8/html/performing_an_advanced_rhel_installation/kickstart-and-advanced-boot-options_installing-rhel-as-an-experienced-user
  3. https://www.cnblogs.com/f-ck-need-u/p/709469html#auto_id_34

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在windows下制作grub2引导的多启动U盘(可启动wepe,安装centos7,debian10等) 的相关文章

随机推荐

  • 第三方服务器不在响应,服务器是怎样响应请求的?

    小弟最近在改后端项目 但出了个 bug 又解决不了 我觉得是我的后端知识太欠缺了 特来这里请教 流程是这样的 前端有上送信息 接口收到信息后 用收到的部分信息再去第三方接口请求信息 把两部分合起来存储 收到的信息中有一部分是用户ID 绝不重
  • Java: StringBuffer类的运用

    字符串的学习不比其他数据类型的学习 不管是对对象 对象的实体 属性等 的打印 还是在平常所有可以展示出来供我们进行参考的数据内容 共同点就是它们都是 string 字符串 都是一种字符串文本 而且在对一些我们所想表达的数据的提交和获取时 都
  • DBA的一些职责

    1 DBA的一些职责 安装和升级数据库服务器 如Oracle Microsoft SQL server 以及应用程序工具 数据库设计系统存储方案 并制定未来的存储需求计划 一旦开发人员设计了一个应用 就需要DBA来创建数据库存储结构 tab
  • DNN结构:CNN、LSTM/RNN中的Attention结构

    前言 attention作为一种机制 有其认知神经或者生物学原理 注意力的认知神经机制是什么 如何从生物学的角度来定义注意力 大多数attention gating 技巧都可以直接加入现有的网络架构 通过合理设计初始化和训练步骤也可以利用现
  • Linux--写时拷贝、内存管理

    目录 1 内存管理 2 写时拷贝技术 1 内存管理 简单分页 逻辑页 物理页 页表 将虚拟内存空间和物理内存空间划分为大小相同的页面 4k 8k 16k等 虚拟内存 在磁盘上划分一块空间 为什么要有逻辑页面和物理页面 物理页面很长 不能确定
  • ubuntu 设置网络代理

    Ubuntu下通过终端设置网络代理 以便apt get等命令可以正常使用 只需在终端里设置http proxy系统变量即可 plain export http proxy http usr name usr password ipaddre
  • 华为云交付项目服务器配置表,云服务器设备配置列表

    云服务器设备配置列表 内容精选 换一换 当您在华为云上部署了弹性云服务器以及其他云服务 想在关联VPC内通过内网域名实现互访 可以为弹性云服务器配置内网域名解析 内网域名可以随意创建 无需注册 只需要保证VPC内唯一 本操作以为弹性云服务器
  • JavaScript设计模式——工厂模式

    在介绍工厂模式之前 首先我们要理解一下什么是设计模式 什么是设计原则 设计模式 通常在我们解决问题的时候 很多时候不是只有一种方式 我们通常有多种方式来解决 但是肯定会有一种通用且高效的解决方案 这种解决方案在软件开发中我们称它为设计模式
  • 字符串的截取

    第二个 开始截取 String orderArr1 order substring order indexOf order indexOf 1 最后一个 开始截取 String orderArr1 order substring order
  • iOS如何提高tableView的性能

    a 重用cell 我们都知道申请内存是需要时间 特别是在一段时间内频繁的申请内存将会造成很大的开销 而且上tebleView中cell大部分情况下布局都是一样的 这个时候我们可以通过回收重用机制来提高性能 b 避免content的重新布局
  • webservice 安全认证请求头信息

    java import java io IOException import java util Enumeration import javax servlet Filter import javax servlet FilterChai
  • 【深度学习

    文章目录 一 前言 二 Computer vision 2 1 Image classification 2 2 Object detection 2 3 Image segmentation 2 4 Depth estimation 三
  • JAVA使用EasyExcel 进行文件的下载

    Spring Boot中使用EasyExcel 进行文件的下载 1 引入依赖
  • Qt中文乱码解决方法

    Qt中文乱码解决方法 一步到位 一 中文乱码解决方法一 1 QString str QStringLiteral 1你好世界 abc 推荐 2 QString str QObject tr 2你好世界 abc 推荐国际化软件使用 其余不推荐
  • Vue3无法用watch监听到通过ref定义的div内容的改变

    源码如下 div设置了contenteditable属性 但是其中的通过ref绑定的数据监听不到变化
  • 【转载】Elasticsearch——QueryBuilder简单查询--模糊搜索

    elasticsearch中存储的全部文档 1 matchAllQuery matchAllQuery 方法用来匹配全部文档 public class QueryTest public static void main String arg
  • 圆的相切相交相离公式_高中数学:直线与圆

    一 直线 1 直线的倾斜角 在平面直角坐标系中 当直线与x轴重合或平行时 规定倾斜角为0 对于与x轴相交的直线 把x轴绕着交点按逆时针方向转到和直线重合时所转的最小正角叫做直线的倾斜角 倾斜角的范围 0 2 直线的斜率 倾斜角不是90 的直
  • 有关eigen库的一些基本使用方法

    矩阵 向量初始化 include
  • hash冲突的4种解决方案

    简介 解决hash冲突 哈希冲突 有以下四种方法 链地址法 再哈希法 建立公共溢出区 开放定址法 法1 链地址法 对于相同的哈希值 使用链表进行连接 HashMap使用此法 优点 处理冲突简单 无堆积现象 即非同义词决不会发生冲突 因此平均
  • 在windows下制作grub2引导的多启动U盘(可启动wepe,安装centos7,debian10等)

    目标 在windows下把一个8GB的u盘制作为grub2引导的多启动U盘 可启动wepe 安装centos7 debian10等 同时支持bios主板和uefi主板 工具准备 a 一个windows 10电脑 b windows 10电脑