制作UEFI(64位)下的WinPE + Ubuntu + Acronis多启动U盘
最近研究了一下如何制作一个多启动U盘,其中想包含的WinPE是微软官方的基于Windows 10的PE,LinuxPE就用Puppy Linux。这里先大概聊一下这两个PE的基本原理,然后再说怎么制作。
PE的基本原理
Windows 10 PE的基本原理
Windows 10 PE的ISO制作方法可以参考微软官方的制作方法。制作好以后,可以从ISO文件里面提取出来下面几个东西:
- \boot目录下的bootx64.efi,这个文件是UEFI第一个要找的文件,没有这个没办法引导PE。
- \EFI\Microsoft\Boot目录下的BCD,这个文件是bootx64.efi要寻找的,这个文件配置不好的话会出现cannot find image这个错误。
- \boot目录下的boot.sdi,\sources目录下的boot.wim,这两个文件是BCD文件要寻找的。
- boot.wim是最后要载入的镜像文件。
注意:制作好的目录基本结构如下: - /EFI/Microsoft/Boot/BCD,这个BCD文件不能够放到别的路径,如果放上去那bootx64.efi就会找不到BCD了。
- /iso/win10pe/下放boot.wim,boot.sdi,bootx64.efi,这三个文件可以随意改位置。
Linux PE的基本原理
Puppy Linux的ISO制作方法非常简单,只需要把这根目录下的vmlinuz,initrd.gz,puppy_bionicpup64_8.0.sfs和zdrv_bionicpup64_8.0.sfs提取出来就好了,路径可以随意放置。
准备工作
必备的硬件
1个USB,我用的大小是16GB,其实8G甚至4G也能够完成。
必备的软件
- Grub2 for windows:这个是制作分区必须的
- Bootice 1.3.4:这个可以去网上下载各种绿色版
- Windows 10 PE:这个需要自行去最开始微软链接里面的工具下载制作
- Puppy Linux PE:网上到处都有下载,我是从清华的开源镜像库找的
制作流程
USB分区
USB分区分成两个区就好了,考虑到硬盘数据还需要被mac读取,所以放置数据的分区用exFAT格式化,引导分区ESP用FAT32格式:
- 第一个分区(hd0,1):格式:FAT32,大小:3GB,作用:存放引导和镜像文件
- 第二个分区(hd0,2):格式:exFAT,大小:剩下的大小,作用:存放数据,在本文中不会使用到
安装Grub2
这一步本来没什么想说的,但是后续如果不注意会使得grub产生error: Unknown filesystem这个错误,所以大致讲一下。首先,管理员身份运行CMD,进入grub2解压以后的文件夹,在CMD里面输入以下命令:
grub-install.exe --boot-directory=第一个分区下的目录 --efi-directory=第一个分区的USB盘符: --removable --target=x86_64-efi
注意:这个命令的boot-directory参数指定以后会在指定的目录下安装一个grub文件夹,里面可以进行各种配置,并且会在efi-directory对应的路径生成一个相应的EFI文件夹。
最后,在新生成的grub文件夹下面新建一个grub.cfg空文件。并且添加下面的一些模块加载选项:
insmod iso9660
insmod all_video
安装Windows 10 PE
- 选择好boot.wim,boot.sdi,bootx64.efi的安装路径
- 用BOOTICE打开/EFI/Microsoft/Boot/BCD文件进行编辑,修改boot.wim和boot.sdi这两个文件的相对路径使得BCD能够找到这两个文件,然后,在BOOTICE下还要修改Windows的启动文件winload.exe成winload.efi。
- 在grub.cfg添加下面的启动项:
menuentry "Windows 10 PE" {
chainloader /iso/win10pe/bootx64.efi
}
上面的路径一定要修改成你自己的路径。
安装Linux PE
把Puppy Linux的iso文件放置到你能够找到的位置,然后,在grub.cfg添加下面的Puppy Linux的启动项:
menuentry "Puppy Bionic" {
set root='(hd0,1)'
linux /iso/puppy/vmlinuz pmedia=ataflash psubdir=/iso/puppy
initrd /iso/puppy/initrd.gz
}
到此,所有制作已经完毕,其实没有想象中那么难,但是网上想找到一个比较完整的步骤还不太容易。有问题的话,各位可以在下面留言,我会不定时解答。
制作UEFI(64位)下的WinPE + Ubuntu + Acronis多启动U盘的更多相关文章
- Ubuntu 14.04 AMD 64位 下 Android Studio 的安装
Ubuntu 14.04 AMD 64位 下 Android Studio 的安装 作者:yoyoyosiyu 邮箱:yoyoyosiyu@163.com 时间:2015年8月25日 Android ...
- 求助下 Ubuntu 15.10(64 位)下安装 pyspider 下的问题 - V2EX
https://www.v2ex.com/t/279405 求助下 Ubuntu 15.10(64 位)下安装 pyspider 下的问题 - V2EX pip 更新到最新 sudo apt inst ...
- 64位下pwntools中dynELF函数的使用
这几天有同学问我在64位下怎么用这个函数,于是针对同一道题写了个利用dynELF的方法 编译好的程序 http://pan.baidu.com/s/1jImF95O 源码在后面 from pwn im ...
- win7(64)位下WinDbg64调试VMware10下的win7(32位)
win7(64)位下WinDbg64调试VMware10下的win7(32位) 一 Windbg32位还是64位的选择 参考文档<Windbg 32位版本和64位版本的选择> http:/ ...
- 偶然碰到的Win7 64位下CHM 的问题解决
最近下了几个沪江资料,都是chm格式的,但是在win7 64位下,都显示不了里面的音频和视频flash之类的控件,虽然可以通过源文件的方式打开视频文件,但是很麻烦. 网上似乎碰到的人也不是很多, ...
- win7 64位下如何安装配置mysql-5.7.4-m14-winx64
win7 64位下如何安装配置mysql-5.7.4-m14-winx641. mysql-5.7.4-m14-winx64.zip下载 官方网站下载地址:http://dev.mysql.com/g ...
- 64位下Hook NtOpenProcess的实现进程保护 + 源码 (升级篇 )
64位下Hook NtOpenProcess的实现进程保护 + 源码 (升级篇 ) [PS: 如果在64位系统下,出现调用测试demo,返回false的情况下,请修改Hook Dll的代码] glhH ...
- Linux 64位下一键安装scipy等科学计算环境
Linux 64位下一键安装scipy等科学计算环境 采用scipy.org的各种方法试过了,安装还是失败.找到了一键式安装包Anaconda,基本python要用到的库都齐了,而且还可以选择安装到其 ...
- centos 64位 下hadoop-2.7.2 下编译
centos 64位 下hadoop-2.7.2 下编译 由于机器安装的是centos 6.7 64位 系统 从hadoop中下载是32位 hadoop 依赖的的库是libhadoop.so 是3 ...
随机推荐
- Java依据集合元素的属性,集合相减
两种方法:1.集合相减可以使用阿帕奇的一个ListUtils.subtract(list1,list2)方法,这种方法实现必须重写集合中对象的属性的hashCode和equals方法,集合相减判断的会 ...
- linux c 调用 so 库
/***********编译时要链接 -l dl 库************/ #include<stdlib.h> #include<stdio.h> #include< ...
- 关于XML的一些总结
xml的知识结构图 eXtensible Markup Language,可扩展标记语言,简称XML,和HTML比较而言,语法相似,作用不同 XML被设计用来存储和传输数据,但存储数据方面,数据库是主 ...
- Matlab高级教程_第三篇:Matlab转码C/C++方式(混编)_第一部分
0. 其实Matlab的转码混编大多数就是为了现成的算法函数不用再写了,2就是为了方便提高代码运行速度用C语言去运行. 1. MEX文件: Mex文件是一种可在matlab环境中嗲用C语言(或fort ...
- nutzboot 项目打包排除或指定配置文件(夹)
springboot 是一样的 我这里就是从springboot哪里拿过来的 (nutzboot2.x已测试可以使用) 排除指定文件 在pom 文件 build 标签内添加 resources < ...
- python学习笔记(24)-类与对象
#类与对象 #python类的语法 关键字 class #class 类名 类名的规范是:数字字母下划线组成,不能以数字开头 首字母大写 驼峰命名 #类属性 放在类里面的变量值 #类方法 放在类里面的 ...
- [LC] 250. Count Univalue Subtrees
Given a binary tree, count the number of uni-value subtrees. A Uni-value subtree means all nodes of ...
- Qt Sleep、QCoreApplication::processEvents()(最佳的平衡:一边发送消息,一边睡眠)
sleep()//秒 msleep()//毫秒 usleep()//微秒 以前为了模拟鼠标点击用过这些函数,可以让进程中断,今天发现我原来的做法其实不对.这组函数会将你当前的线程/进程变为“睡眠”状态 ...
- deeplearning.ai 卷积神经网络 Week 3 目标检测
本周的主题是对象检测(object detection):不但需要检测出物体(image classification),还要能定位出在图片的具体位置(classification with loca ...
- B 小雨的三角形
题目链接:https://ac.nowcoder.com/acm/contest/949/B 思路: 一个找规律题,找到规律就很简单,只剩下代码实现了.规律:第i行去头尾剩下的数的和等于第i-1行去头 ...