如何在linux下制作一个windows的可启动u盘?

情景是这样的,有一个windows10的iso,现在想通过U盘安装,要求即支持UEFI(启动引导器),又支持Legacy(启动引导器),因为有一些老的机器是不支持UEFI的。

那现在分析一下情况:

1 windows10的iso本来就是支持UEFI的,你只要将iso的内容拷贝到U盘的分区内,在开机启动时按某个功能键(好些机器是F12键)会出现选择启动方式和启动盘的页面。你只要选择UEFI启动你的U盘就可以。

2 要支持Legacy,那要一个引导程序了,现在流行的是grub2。那要做的就是生成grub的配置文件grub.cfg了,将grub写入MBR。将grub写入MBR通过命令grub-install实现,grub的配置文件就要靠手写了。

现在说一下技术规格:

1 建议u盘的磁盘标签是msdos,因为gpt标签的磁盘需要一个专门的启动分区来配合grub2的工作。这个没试验过,不推荐给大家。

2 分区格式,建议使用ntfs分区。分区大小只要比你的iso大就可以了。

3 分区的开始,建议空出来磁盘开始的2M空间,从2M后开始分区。

现在说一下实现:

以下假设iso的文件名字是win10.iso,u盘设备为/dev/sdb

使用fdisk和parted命令都可以查看磁盘标签。linux下对ntfs的格式化可能需要另外自己找工具。在这里不做建议。

1 挂载iso,将iso内所有的文件拷贝到u盘分区内。

mkdir iso

mount win10.iso iso

cp -r iso/* /dev/sdb1

2 执行grub-install

grub-install --target=i386-pc --boot-directory=iso/boot /dev/sdb

3 手写grub.cfg 将如下的 grub.cfg 文件放入 iso/boot/grub/

# grub.cfg
menuentry "Install Windows 10" {
set root= hd(0,1)
chainloader +1
}

如何在linux下制作一个windows的可启动u盘?的更多相关文章

  1. 如何在Linux下拷贝一个目录呢

    cp -af newadmin/movie/.   uploadfile/mallvideo/ 如何在Linux下拷贝一个目录呢?这好像是再简单不过的问题了. 比如要把/home/usera拷贝到/m ...

  2. 在Linux下制作一个磁盘文件,在u-boot 阶段对emmc 烧写整个Linux系统方法

    在Linux 下制作一个磁盘文件, 可以给他分区,以及存储文件,然后dd 到SD卡便可启动系统. 在u-boot 下启动后可以读取该文件,直接在u-boot 阶段就可以做烧写操作,省略了进入系统后才进 ...

  3. 如何在linux下编写一个简单的Shell脚本程序

    在了解了linux终端和其搭配的基本Shell(默认为bash)的基础下,我们就可以在终端中用vi/vim编辑器编写一个shell的脚本程序了 Shell既为一种命令解释解释工具,又是一种脚本编程语言 ...

  4. 在Linux下制作Linux&windows启动盘

    在Linux下制作Linux&windows启动盘 如何在Linux-mint环境下,制作其他Linux发行版的UEFI启动盘,以及Windows10的UEFI模式启动盘. 对于U盘的操作,可 ...

  5. 在GNU/Linux下制作Windows 10安装U盘

    今年春节回家期间,我需要将家里的一台安装了Debian Stretch的ZaReason笔记本电脑更换为Windows 10系统,好让爸妈从老台式机上的XP系统升级到新的平台上来.回家前,小仙女已在微 ...

  6. Linux下制作Windows启动U盘的工具

    Linux下制作Windows启动U盘的工具 很多人说Linux下制作Windwos启动盘要用GRUB4DOS建立引导,其实不用,有专门的工具的,就像Windows下有Rufus制作Linux启动U盘 ...

  7. 在windows下制作mac os x的启动安装U盘

    前几天有幸用了下Macbook pro,可在给它装win 7系统时,无知而又手贱地在windows系统下分区了:( 然后再重启就找不到Mac os x,只有win 7了.可进win 7也不正常,直接给 ...

  8. (转)如何在Linux中统计一个进程的线程数

    如何在Linux中统计一个进程的线程数 原文:http://os.51cto.com/art/201509/491728.htm 我正在运行一个程序,它在运行时会派生出多个线程.我想知道程序在运行时会 ...

  9. linux下制作linux系统盘(光盘、U盘)

    cdrecord制作启动光盘 首先cdrecord -scanbus输出设备列表和标识,(我的此次为5,0,0)  [ˈrekərd] 然后用cdrecord -v dev=5,0,0 -eject ...

随机推荐

  1. CodeForces 450B Jzzhu and Sequences

    矩阵快速幂. 首先得到公式 然后构造矩阵,用矩阵加速 取模函数需要自己写一下,是数论中的取模. #include<cstdio> #include<cstring> #incl ...

  2. Android获取手机唯一码

    大部分安卓手机都可以获取手机唯一码,但是有些手机的厂商却禁止了获取手机唯一码的权限,导致我们不能使用手机唯一码作为标识,但遇到一些必须要填的坑,我们也不能不填,所以使用以下方法来填坑,因此我们使用UU ...

  3. ireport 取消自动分页,detail不分页,当没有数据的时候显示title

    报表文件属性页面 lgnore pagination 勾选上,就可以取消分页功能.

  4. BZOJ 2705 [SDOI2012]Longge的问题 ——Dirichlet积

    [题目分析] 狄利克雷卷积. 然后直接求出欧拉函数,计算和即可. [代码] #include <cstdio> #include <cstring> #include < ...

  5. MMA

    在32位的系统上,线性地址空间可达到4GB,这4GB一般按照3:1的比例进行分配,也就是说用户进程享有前3GB线性地址空间,而内核独享最后1GB线性地址空间.由于虚拟内存的引入,每个进程都可拥有3GB ...

  6. java求两个集合的差集

    public static void main(String[] args) {Set set = new HashSet();Set set1 = new HashSet();set.add(&qu ...

  7. python 开发者 精品

    当 Python 和 R 遇上北京二手房 http://mp.weixin.qq.com/s?timestamp=1473262097&src=3&ver=1&signatur ...

  8. pandas 按照列A分组,将同一组的列B求和,生成新的Dataframe

    对于pandas中的Dataframe,如果需要按照列A进行分组,将同一组的列B求和,可以通过下述操作完成: df = df.groupby(by=['column_A'])['column_B']. ...

  9. c++ split()实现

    在c++中,没有java与python中定义的split()功能的函数,于是自己实现之. 情况1,适用范围,分隔符为字符.思路,记录分隔符的位置,判断需要截取的字符串的下标范围. vector< ...

  10. css所有属性参考

    学习地址:https://developer.mozilla.org/zh-CN/docs/Web/CSS/Reference