linux覆盖windows8,[转]从零开始:在Linux上覆盖安装WINDOWS通用教程(dd)

完整自制尚不方便,还有许多改进的地方.

现在可以达到在单硬盘,无救援模式的情况下安装Winodws.

再也不需要强制要求内存大于镜像包大小了.

本例所给的wget后链接均可用,教程是完整的.

(原文链接:https://moeclub.org/2017/08/31/361/)

环境 DigitalOcean 512M Debian8 x64

目标 Windows Think PC (Windows 7 Embedded)

此教程适用于具有以下特征的机器:

宿主机提供的VNC

能够随意更换内核

GURB引导启动

准备工作:

较高版本的WINDOWS主机 (提供高版本的DISM API)

Windwos原版镜像 (个人版,企业版 服务器版)

DISM++ (打补丁,制作镜像)

制作可用的镜像文件:

提取install.wim文件:解压或挂载都行,提取该文件到’E:\install.wim‘.

文件路径\sources\install.wim

创建一个vhd虚拟磁盘:

示例:盘符为’V‘,路径为’D:\win.vhd‘,大小为5120M.

以管理员身份打开命令提示符,然后输入:

diskpart

CREATE VDISK FILE=”D:\win.vhd” TYPE=FIXED MAXIMUM=5120

SELECT VDISK FILE=”D:\win.vhd”

ATTACH VDISK

CLEAN

CREATE PARTITION PRIMARY

FORMAT FS=NTFS QUICK

ASSIGN LETTER=V

在D盘创建一个文件夹’D:\MOUNT‘,打开DISM++

点文件–>挂载映像–>点第一个浏览,找到’E:\install.wim‘–>点第二个浏览,找到’D:\MOUNT‘–>不选中只读模式–>确定

在DISM++里进行优化,安装语言包,添加VirtIO驱动等操作备份下载VirtIO驱动

完成后,点文件–>另存为映像–>保存在’D:\install.wim‘,等待任务完成

点文件–>释放映像–>点第一个浏览,找到’D:\install.wim‘–>点第二个浏览,找到’V:\‘–>只选中添加引导和格式化–>确定–>在弹出的’引导修复-BIOS’对话框中点击更多–>找到盘符为V的磁盘分区–>确定

等待完成,在资源管理器中,在盘符为V的磁盘分区点击右键–>弹出.

如有报错请认真看以上步骤.

使用gunzip工具压缩打包压缩’D:\win.vhd‘

用法:gzip.exe -k9 D:\win.vhd.等待压缩完成.

可点击gunzip for windows下载工具,或使用备份下载链接下载此工具.

解压文件,将’bin‘目录中的文件放置’%WINDIR%/SYSTEM32‘文件夹中,即可方便在命令提示符中使用.

实际上刚刚得到的’D:\win.vhd‘就是一个可直接dd的文件.

上传到可用HTTP直接下载的地方,最好不要包含跳转.更新grub配置文件:

下载 Debian netboot mini.iso 到’/boot‘文件夹内.

1

wget-qO/boot/mini.iso https://moeclub.org/get-deb-livecd

在/boot文件夹/子目录内寻找GRUB配置文件.

如果GRUB的配置文件为’grub.cfg’:

在文件的末尾添加

1

2

3

4

5

6

menuentry"Boot mini"{

set isoimage="/boot/mini.iso"

loopback loop(hd0,1)$isoimage

linux(loop)/linux auto=trueLANG=en_US.UTF-8KEYTABLE=us netcfg/dhcp_options="Configure network manually"netcfg/dhcp_failed=note netcfg/get_nameservers=8.8.8.8hostname=MoeClub domain=MoeClub.org--quiet

initrd(loop)/initrd.gz

}

如果GRUB的配置文件为’grub.conf’:

获取本机的IP,子网掩码,网关并记录下来.

一般控制台最下面有这些参数.

如果没办法获取到这三项参数,可以用以下命令获取.

代码片段摘自 Debian(Ubuntu)网络安装/重装一键脚本

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

DEFAULTNET="$(ip route show |grep -o ‘default via [0-9]\{1,3\}.[0-9]\{1,3\}.[0-9]\{1,3\}.[0-9]\{1,3\}.*‘ |head -n1 |sed ‘s/proto.*\|onlink.*//g‘ |awk ‘{print $NF}‘)"

[-n"$DEFAULTNET"]&&IPSUB="$(ip addr |grep ‘‘${DEFAULTNET}‘‘ |grep ‘global‘ |grep ‘brd‘ |head -n1 |grep -o ‘[0-9]\{1,3\}.[0-9]\{1,3\}.[0-9]\{1,3\}.[0-9]\{1,3\}/[0-9]\{1,2\}‘)"

IPv4="$(echo -n "$IPSUB" |cut -d‘/‘ -f1)"

NETSUB="$(echo -n "$IPSUB" |grep -o ‘/[0-9]\{1,2\}‘)"

GATE="$(ip route show |grep -o ‘default via [0-9]\{1,3\}.[0-9]\{1,3\}.[0-9]\{1,3\}.[0-9]\{1,3\}‘ |head -n1 |grep -o ‘[0-9]\{1,3\}.[0-9]\{1,3\}.[0-9]\{1,3\}.[0-9]\{1,3\}‘)"

[-n"$NETSUB"]&&MASK="$(echo -n ‘128.0.0.0/1,192.0.0.0/2,224.0.0.0/3,240.0.0.0/4,248.0.0.0/5,252.0.0.0/6,254.0.0.0/7,255.0.0.0/8,255.128.0.0/9,255.192.0.0/10,255.224.0.0/11,255.240.0.0/12,255.248.0.0/13,255.252.0.0/14,255.254.0.0/15,255.255.0.0/16,255.255.128.0/17,255.255.192.0/18,255.255.224.0/19,255.255.240.0/20,255.255.248.0/21,255.255.252.0/22,255.255.254.0/23,255.255.255.0/24,255.255.255.128/25,255.255.255.192/26,255.255.255.224/27,255.255.255.240/28,255.255.255.248/29,255.255.255.252/30,255.255.255.254/31,255.255.255.255/32‘ |grep -o ‘[0-9]\{1,3\}.[0-9]\{1,3\}.[0-9]\{1,3\}.[0-9]\{1,3\}‘${NETSUB}‘‘ |cut -d‘/‘ -f1)"

[-n"$GATE"]&&[-n"$MASK"]&&[-n"$IPv4"]||{

ipNum(){

local IFS=‘.‘

read ip1 ip2 ip3 ip4<<

echo$((ip1*(1<<24)+ip2*(1<<16)+ip3*(1<<8)+ip4))

}

SelectMax(){

ii=0

forIPITEM in`route-n|awk-vOUT=$1‘{print $OUT}‘|grep‘[0-9]\{1,3\}.[0-9]\{1,3\}.[0-9]\{1,3\}.[0-9]\{1,3\}‘`

do

NumTMP="$(ipNum $IPITEM)"

eval"arrayNum[$ii]=‘$NumTMP,$IPITEM‘"

ii=$[$ii+1]

done

echo${arrayNum[@]}|sed‘s/\s/\n/g‘|sort-n-k1-t‘,‘|tail-n1|cut-d‘,‘-f2

}

[[-z$IPv4]]&&IPv4="$(ifconfig |grep ‘Bcast‘ |head -n1 |grep -o ‘[0-9]\{1,3\}.[0-9]\{1,3\}.[0-9]\{1,3\}.[0-9]\{1,3\}‘ |head -n1)"

[[-z$GATE]]&&GATE="$(SelectMax 2)"

[[-z$MASK]]&&MASK="$(SelectMax 3)"

}

PubIPv4="$(wget -qO- checkip.amazonaws.com)"

[-n"$IPv4"]&&[-n"$PubIPv4"]&&{

["$IPv4"!="$PubIPv4"]&&IPv4="$(echo "$IPv4;$PubIPv4")"

}

[-n"$GATE"]&&[-n"$MASK"]&&[-n"$IPv4"]&&{

echo-e"IPv4:\t\033[33m$IPv4\033[0m\nMASK:\t\033[33m$MASK\033[0m\nGATE:\t\033[33m$GATE\033[0m"

}||{

echo"Error! Not found network config. "

}

进入VNC界面,然后在SSH终端输入重启命令.

在VNC界面中可以看到启动菜单,选择’Boot mini‘

安装WINDOWS镜像:

此时进入Debian的安装界面,注意对话框顶部.

如果出现的是

Download debconf preconfiguration file

请按两次ESC键,选择倒数第二个:

Execute a shell

选中Continue,并按回车

如果出现的是

Configure the network

请按要求填入网络参数,等待出现

Download debconf preconfiguration file

按两次ESC键,选择倒数第二个:

Execute a shell

选中Continue,并按回车

使用ls /dev命令可查看硬盘状况

可知DigitalOcean机器的硬盘为’/dev/vda‘

接下使用dd命令进行应用镜像,也可以使用自己的镜像.

1

wget-qO-https://moeclub.org/get-win7embx86 |gunzip -dc |dd of=/dev/vda

待完成后,输入reboot命令

就可看到久违的WINDOWS启动界面.按照正常步骤安装.

安装完成后,如果没有网络,你需要自行完善网络配置.

远程桌面服务如果没有意外,我提供的镜像会自动打开.

提示:在安装步骤时鼠标位置不好找,可能不太适应.

请尝试使用空格键回车键Tab键方向键进行操作.

在磁盘管理中,点击’C‘盘,右键选择’扩展卷‘,可以直接’增加‘C盘的空间.

后记:

你可以在装有Hyper-V的机器上,挂载这个vhd镜像,然后完成安装步骤,优化.

再进行压缩vhd镜像,然后dd安装.可能效果更佳.

文章只是提供一个思路,和实现的例子.更多期待你们去尝试.

提供一些可直接使用的镜像

Windows Embedded 8.1 x86

1

wget-qO-https://moeclub.org/get-win8.1embx86 |gunzip -dc |dd of=/dev/vda

原文:http://www.cnblogs.com/ccuc/p/7497489.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值