设为首页 收藏本站
查看: 943|回复: 0

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

[复制链接]

尚未签到

发表于 2017-11-22 15:39:46 | 显示全部楼层 |阅读模式
  完整自制尚不方便,还有许多改进的地方.
现在可以达到在单硬盘,无救援模式的情况下安装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++ (打补丁,制作镜像)

  以下步骤在DigitalOcean上测试成功:
      制作可用的镜像文件:


    • 下载镜像:下载地址个人版,企业版 服务器版
    • 提取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=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’:

    • 获取本机的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. "
      }

    • 进入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



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-409545-1-1.html 上篇帖子: iOS 逆向工程(工具介绍)- 学习整理(转) 下篇帖子: cobbler自动化安装Linux系统
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表