我的电脑上实际上已经装有了Centos7和Windows7双系统,但是由于一些原因,现在win7系统不能用了,故需要在Centos上制作Windows的启动盘。
准备
win7旗舰版iso镜像;
8G u盘一枚;
ms-sys安装包;
Linux上制作Windows启动u盘
插入准备好的u盘,并查看u盘的设备名称
~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sdb 3.2G 3.2G 0 100% /run/media/alfer/u8
注意:如果看到u盘(/run/media/alfer/u8)挂载在/dev/sdb设备下,则需要先将其卸载;如果此处看不到usb 设备,则要用 fdisk 工具查看。
设置usb设备/dev/sdb的 /dev/sdb1为启动分区
cfdisk /dev/sdb 或 fdisk /dev/sdb (partition type 7, and bootable flag)
u盘分区格式化
格式化分区sdb1为ntfs格式:
mkfs.ntfs -f /dev/sdb1
利用ms-sys写入mbr信息到u盘以引导win7:
ms-sys -7 /dev/sdb
其中的-7参数指Win7 MBR,sdX指的是U盘对应的盘符。
将ISO镜像文件写入到u盘:
mount -o loop win7.iso /mnt/iso
mount /dev/sdb1 /mnt/usb
cp -r /mnt/iso/* /mnt/usb/
sync
监控写入状态:
watch -n1 iostat
从u盘启动安装Windows系统
现在你已经可以从u盘启动来安装Windows了。
总结
Linux上制作 Windows的启动盘整体流程应该是:
u盘建立启动分区 -》u盘分区格式化 -》写入引导程序 -》写入镜像文件 -》 制作完成。
在Centos系统上制作Windows启动盘的时候,我尝试了几种不同的方法,皆是可以制作成功的:
写入u盘启动引导Win7安装方式
方法一:如文中,利用ms-sys工具写入,ms-sys -7 /dev/sdb;
方法二:利用lilo工具,sudo lilo -M /dev/sdb mbr;
方法三:利用syslinux工具,sudo dd if=/usr/lib/syslinux/mbr/mbr.bin of=/dev/sdb;
镜像文件写入u盘
方法一:挂载 iso 镜像后,复制到u盘;
方法二:dd命令写入iso镜像文件到u盘的启动分区
# 不需要挂载/dev/sdb1
sudo dd if=/home/peter/Downloads/WindowsTechnicalPreview-x64-ZH-CN.iso of=/dev/sdb1 bs=4M iflag=direct
教训
记不得是写入引导程序时还是在用dd命令写入镜像文件时,误写入到了我的移动硬盘中,导致移动硬盘数据全部丢失,如同丢失了心爱的事物,痛心疾首!
参考
How to make Windows 7 USB flash install media from Linux?;
在Ubuntu Linux下制作Windows 启动安装 USB盘;