制作 U 盘启动盘

这篇文章说的是 U 盘启动盘是如何运作的,同时有一个既能装 Windows 又能装 Linux 的 U 盘启动盘的例子。

U 盘启动盘

当按下开机键后,电脑能启动我原本安装的操作系统。在电源键按下到启动系统这中间也有很多的故事,你可能知道 BIOS 或者 UEFI。BIOS 做完了事情之后就要把硬件的控制权交给操作系统了,在启动操作系统之前,还有个东西叫做启动管理器,由用户选择启动哪一个操作系统。

Linux环境中,目前最流行的启动管理器是Grub2。

把 Grub2 安装到 U 盘上可以启动放在我 U 盘上的 ISO 文件来安装系统。对于启动 Linux 的 ISO 镜像来说操作很简单,按照 Multiboot_USB_drive 一步一步操作再用人家写好了的模版就能启动 Linux ISO 镜像了。

但是如果要启动 WinPE 呢?Grub2 启动 WinPE 有很多种方式

* ntldr
* grub2 -> grub4dos
* grub2 + syslinux/memdisk
* grub2 引导 WinPE 的 WIM 文件

由于GRUB2不能在 UEFI 模式下对 ISO 文件进行仿真,那么我们应该如何在UEFI模式下引导 WindowsPE 呢?答案是必须使用 WIM 格式的 WindowsPE。具体说来就是首先用GRUB2链式加载微软的 "bootx64.efi" 引导管理器,然后再由 "bootx64.efi" 根据 BCD 文件的指引去启动 WindowsPE。那么 BIOS 就通过 grub4dos 来启动 WindowsPE 吧。

Note: bootmgfw.efi 文件其实就是镜像文件里的 /EFI/Boot/bootx64.efi

更进一步来说,我们可以把 WinPE 中的 /EFI/Boot/bootx64.efi 拷贝到 U 盘的 /EFI/BOOT/bootmgfw.efi,这只是引导。然后把要加载的 /sources、/Boot 目录也拷贝到 U 盘就能启动PE了。

chainloader bootx64.efi

基于 GRUB2 制作滋瓷 BIOS/UEFI 双模式启动的 Linux/Windows 安装U盘 介绍了如何对 U 盘分区,安装 grub2。在此基础上我们单独为 WindowsPE 开一个分区,然后引导 "bootx64.efi" 启动 WindowsPE。

menuentry 'UEFI Windows PE Boot Manager' --unrestricted {
         set root=(hd0,4)         # WindowsPE 所在的分区
         chainloader /EFI/Boot/bootx64.efi
}

配置 grub4dos

拷贝 "grub.exe" 到 U 盘,在 '/boot/grub/grub.cfg' 增加下面的代码。'/boot/grub4dos/grub.exe' 是 "grub.exe" 在 U 盘的位置,'--config-file=/boot/grub4dos/menu.lst' 是 "menu.lst" 在 U 盘的位置。

menuentry "Grub4Dos" {
         linux /boot/grub4dos/grub.exe --config-file=/boot/grub4dos/menu.lst
}

添加下面的代码到 '/boot/grub4dos/menu.lst','/bootmgr' 的意思是说 "bootmgr" 在 U 盘的根目录下。(bootmgr 在 WindowsPE ISO 的根目录下)

title Win10PE
find --set-root /bootmgr
chainloader /bootmgr

参考文章

制作 U 盘启动盘的更多相关文章

  1. U盘启动盘的制作--用U盘硬装Windows系统、或是重装Windows系统

    借助IT天空的优启通U盘启动盘的制作--用U盘装Windows系统.或是重装Windows系统之U盘启动盘的制作 1.==================================== 2.== ...

  2. 制作centos的U盘启动盘

    制作centos的U盘启动盘比ubuntu麻烦一些,因为可能涉及到fat32文件格式不支持大于4G的文件存储的问题,而最新版本的centos就是大于4G的,所以就需要对U盘进行分区. 一个做主引导,一 ...

  3. windows下制作linux U盘启动盘或者安装优盘(转)

    windows下制作linux U盘启动盘或者安装优盘(转) Linux发行版排行榜:http://iso.linuxquestions.org/ [方案一]:UltraISO(不推荐,在Window ...

  4. 制作U盘启动盘及安装操作系统的方法

    U盘启动盘制作方法: 1.从网上下载最新的老毛桃U盘启动制作工具主程序并安装 2.插入U盘(制作启动盘前先保存好你的资料到其它地方,以防丢失不可找回) 3.插入正确的U盘后程序会自动检测到U盘,启动模 ...

  5. U深度利用iso文件制作U盘启动盘

    利用U盘装win10系统: 工具:U深度装机版   文件:win10.iso 步骤1:下载U深度装机版安装 步骤2:打开U深度,制作U盘启动盘,注意选择iso模式,如下图所示 接下来下一步即可,工具会 ...

  6. 用UltraISO制作支持windows 7的U盘启动盘

    用UltraISO制作U盘启动盘,有人写过,我也看过,不过依照网上的那些文章,成功的并不多,经过几次试验,在不同的主板环境下成功概率高的方法应该如下:   1. UltraISO建议9.3以上 2. ...

  7. UltraISO制作U盘启动盘安装Win7/10系统攻略

    UltraISO制作U盘启动盘安装Win7/9/10系统攻略 U盘安装好处就是不用使用笨拙的光盘,光盘还容易出现问题,无法读取的问题.U盘体积小,携带方便,随时都可以制作系统启动盘. U盘建议选择8G ...

  8. Windows-002-U盘启动盘制作

    通常我们安装系统时,均采用光盘的形式安装,只是这种方法需要随时随地的带着光盘,还不容易保存.携带光盘.这时,一个 U盘启动盘 就是您的首选了,此种方式的好处多多,比如:忘记开机密码.系统备份.安装系统 ...

  9. 一键制作u盘启动盘教程

    第一步:制作完成u深度u盘启动盘   第二步:下载Ghost Win7系统镜像文件包,存入u盘启动盘   第三步:电脑模式更改成ahci模式,不然安装完成win7系统会出现蓝屏现象 正式安装步骤: u ...

  10. windows和linux环境下制作U盘启动盘

    新笔记本上,要装xp的系统,100%会破坏原有的Linux系统,因为安装xp的时候会自动覆盖硬盘的主引导扇区,这个扇区一旦被重写,那么原有的linux根本就启动不了. 要想玩linux和xp双系统,一 ...

随机推荐

  1. find pattern

    daniel@daniel-mint ~/msf/metasploit-framework/tools $ ruby pattern_create.rb 2000 Aa0Aa1Aa2Aa3Aa4Aa5 ...

  2. spring自学历程

    spring几大核心功能 1.IOC/DI(控制反转/依赖注入) IOC是什么?IOC完成的事情是原先程序员主动通过new实例化对象的事情,转交给spring负责 IOC最大的作用是:解耦,程序员不需 ...

  3. 使用pip 时报错 Fatal error in launcher: Unable to create process using '"D:\pytghon2.7\python.exe" "D:\python2.7\S

    无法创建使用pip.exe创建进程,说白了就是无法启动pip安装插件. 解决方法升级pip: python -m pip install -U pip  

  4. 《Javascript权威指南》学习笔记之十七:BOM新成就(1)--client存储数据(Storage实现)

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/u011043843/article/details/30255899     数据构成了web网站的 ...

  5. Spring学习笔记(7)——Bean的基本配置

            先从IOC说起,这个概念其实是从我们平常new一个对象的对立面来说的,我们平常使用对象的时候,一般都是直接使用关键字类new一个对象,那这样有什么坏处呢?其实很显然的,使用new那么就 ...

  6. BUUCTF 派大星的烦恼

    这道题做的累死了,题目关键在于思路,这里将做题的完整思路记下来.题目给了一张bmp,用010打开可以看出题目关键就在于这一段D和“,保存出来 "DD"DD""& ...

  7. vue组件库的基本开发步骤(源代码)

    上次发布的随笔忘记提供源代码了,今天特地来补充,如果有什么问题,欢迎大家为我修改指正. vue.config.js文件: const path = require('path') function r ...

  8. Light项目---实现后端接口时遇见的一些问题

    ImproperlyConfigured: WSGI application 'lightapi.wsgi.application' could not be loaded; 在moddleware中 ...

  9. layui的layer独立版报错“TypeError: i is not a function”的解决

    折腾良久发现是引入jQuery顺序的问题. jQuery必须在layer引入之前引入.

  10. 使用Hystrix实现断路器处理

    在之前的架构的基础上我们会发现,一旦级别低的服务宕了,会导致调用它的服务也挂掉,这样容易产生级联效应(雪崩效应),为了防止这种情况的出现,我引入了Hystrix来处理,先介绍ribbon使用Hystr ...