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

完整自制尚不方便,还有许多改进的地方.
现在可以达到在单硬盘,无救援模式的情况下安装Winodws.
再也不需要强制要求内存大于镜像包大小了.

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

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

环境 DigitalOcean 512M Debian8 x64 
目标 Windows Think PC (Windows 7 Embedded)


      此教程适用于具有以下特征的机器:
    1. 宿主机提供的VNC
    2. 能够随意更换内核
    3. GURB引导启动

      准备工作:


以下步骤在DigitalOcean上测试成功:

      制作可用的镜像文件:
    1. 下载镜像:下载地址个人版,企业版 服务器版
    2. 提取install.wim文件:解压或挂载都行,提取该文件到’E:\install.wim‘.
      文件路径\sources\install.wim
    3. 创建一个vhd虚拟磁盘:
      示例:盘符为’V‘,路径为’D:\win.vhd‘,大小为5120M.
      1. 以管理员身份打开命令提示符,然后输入:
      2. diskpart
      3. CREATE VDISK FILE=”D:\win.vhd” TYPE=FIXED MAXIMUM=5120
      4. SELECT VDISK FILE=”D:\win.vhd”
      5. ATTACH VDISK
      6. CLEAN
      7. CREATE PARTITION PRIMARY
      8. FORMAT FS=NTFS QUICK
      9. ASSIGN LETTER=V
    4. 在D盘创建一个文件夹’D:\MOUNT‘,打开DISM++
      点文件–>挂载映像–>点第一个浏览,找到’E:\install.wim‘–>点第二个浏览,找到’D:\MOUNT‘–>不选中只读模式–>确定
    5. 在DISM++里进行优化,安装语言包,添加VirtIO驱动等操作备份下载VirtIO驱动
    6. 完成后,点文件–>另存为映像–>保存在’D:\install.wim‘,等待任务完成
    7. 点文件–>释放映像–>点第一个浏览,找到’D:\install.wim‘–>点第二个浏览,找到’V:\‘–>只选中添加引导和格式化–>确定–>在弹出的’引导修复-BIOS’对话框中点击更多–>找到盘符为V的磁盘分区–>确定
    8. 等待完成,在资源管理器中,在盘符为V的磁盘分区点击右键–>弹出.
      如有报错请认真看以上步骤.
    9. 使用gunzip工具压缩打包压缩’D:\win.vhd‘
      用法:gzip.exe -k9 D:\win.vhd.等待压缩完成.
      可点击gunzip for windows下载工具,或使用备份下载链接下载此工具.
      解压文件,将’bin‘目录中的文件放置’%WINDIR%/SYSTEM32‘文件夹中,即可方便在命令提示符中使用.
      实际上刚刚得到的’D:\win.vhd‘就是一个可直接dd的文件.
    10. 上传到可用HTTP直接下载的地方,最好不要包含跳转.

      更新grub配置文件:
    1. 下载 Debian netboot mini.iso 到’/boot‘文件夹内.

      1

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

    2. 在/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=true LANG=en_US.UTF-8 KEYTABLE=us netcfg/dhcp_options="Configure network manually" netcfg/dhcp_failed=note netcfg/get_nameservers=8.8.8.8 hostname=MoeClub domain=MoeClub.org -- quiet

        initrd (loop)/initrd.gz

        }

      • 如果GRUB的配置文件为’grub.conf’:
    3. 获取本机的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 <<<"$1"

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

      }

      SelectMax(){

      ii=0

      for IPITEM in `route -n |awk -v OUT=$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 -k 1 -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. "

      }

    4. 进入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

时间: 2024-12-28 16:24:28

[转]从零开始:在Linux上覆盖安装WINDOWS通用教程(dd)的相关文章

So Easy! Oracle在Linux上的安装配置系列四

So Easy! Oracle在Linux上的安装配置系列四  监听器的配置 在创建了数库和各种数据库对象并装载了数据后,下一步是在数据库服务器与使用它的用户之间建立连 接,Oracle Net Services使这种连接成为可能.Oracle Net Services组件必须"存活"在客户机和服务器上,它们一般使用TCP/IP网络协议来建立客户机和数据库服务器之间的网络连接. 本文官方文档位置: http://docs.oracle.com/cd/E11882_01/network.

linux上nagios安装完整版

监控server端的安装部署一.apache的安装下载httpd-2.2.15.tar.gz gunzip httpd-2.2.15.tar.gztar xvf httpd-2.2.15.tarcd httpd-2.2.15./configure --prefix=/usr/local/apache2 --enable-so --enable-mods-shared=all --enable-cgi --enable-rewrite --enable-deflate --with-mpm=wor

EJBCA在Linux上的安装

在windows上安装为了测试用,装在linux服务器上的因为CN用的ip需要重装.....又是折腾一番,下面介绍一些需要注意的地方 一.所需文件 准备的内容就不说了,参考我的上上篇<EJBCA在windows上的安装>,需要下载的上面提供的有 二.准备条件 1.jboss配置 1.1.JBOSS端口号配置 作为服务器JBOSS的默认端口8080和8009肯定被占用了,修改jboss的端口号.由于JBOSS的版本不同所以修改的位置也不一样 JBOSS-5.1.0GA 修改的位置是:jboss-

GIT在Linux上的安装和使用简介心得

GIT在Linux上的安装和使用简介心得 Linux和Git之父Linus Torvalds曾说过这样一段话:        “Bad programmers worry about the code. Good programmers worry about data structures and their relationships.” (低水平程序员总在考虑代码,高水平程序员总在考虑数据结构及其之间的关系)—— 来自 如何理解Linus Torvalds的“什么才是优秀程序员”的话. G

So Easy! Oracle在Linux上的安装配置系列五

So Easy! Oracle在Linux上的安装配置系列五 本篇是监听器的配置的续篇,上一小节我们创建了一个监听器,创建了密码文,在监听和实例都启动的情况下,从远程windows即时客户端连接到了oracle服务器.本篇我将继续说监听器,还将完成相关的实验 以下内容整理自网络 Oracle 监听器 Listener 是一个重要的数据库服务器组件,在整个 Oracle 体系结构中,扮演着重要的作用.它负责管理 Oracle 数据库和客户端之间的通讯,它在一个特定的网卡端口(默认是TCP 1521

分布式缓存技术redis学习系列(一)——redis简介以及linux上的安装

redis简介 redis是NoSQL(No Only SQL,非关系型数据库)的一种,NoSQL是以Key-Value的形式存储数据.当前主流的分布式缓存技术有redis,memcached,ssdb,mongodb等.既可以把redis理解为理解为缓存技术,因为它的数据都是缓存在内从中的:也可以理解为数据库,因为redis可以周期性的将数据写入磁盘或者把操作追加到记录文件中.而我个人更倾向理解为缓存技术,因为当今互联网应用业务复杂.高并发.大数据的特性,正是各种缓存技术引入最终目的. 关于r

So Easy! Oracle在Linux上的安装配置系列一

So Easy! Oracle在Linux上的安装配置系列一 本文为So Easy!Oracle在linux上的安装和配置序列的第一篇Oracle安装基础环境的搭建 VMware Workstation 11.0 配置和CentOS-6.6-x86_64安装 本文环境及所需软件: Win7 Sevice Pack1 内存 6GB VMware Workstation 11.0  build-2305329 CentOS-6.6-x86_64-bin-DVD1.iso Xmanger Enterp

Tomcat在Linux上的安装与配置

Tomcat在Linux上的安装与配置 1.  jdk下载地址: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html tomcat下载地址:http://tomcat.apache.org/download-70.cg 2.jdk安装与配置.(rpm包)    (1)jdk安装    rpm包:    # rpm -ivh jdk-7u79-linux-x64.rpm tar.gz

为Linux上FireFox安装Flash插件

废话少说,步骤如下: 1.点击网页上插件缺失处,根据提示下载tar.gz版本的插件,我下载的版本是install_flash_player_11_linux.i386.tar.gz,这个文件被下载到了/home/liveuser/Downloads下. 2.进入目录/home/liveuser/Downloads,执行tar -zxvf install_flash_player_11_linux.i386.tar.gz,解压的目的是为了得到libflashplayer.so . 3.执行cp l