突破沒有VNC,沒有救援模式,內(nèi)存比dd包小的限制.
使用Debian Live CD中的busybox做中間媒介,經(jīng)過復雜的處理,
使本機的網(wǎng)絡參數(shù)傳進Windows操作系統(tǒng)中,
即使沒有DHCP能夠讓Windows獲取網(wǎng)絡參數(shù),
也能讓Windows操作系統(tǒng)在開機的第一時間能夠連通網(wǎng)絡.
更新:
[2018.04.03]
功能合并:?[ Linux VPS ] Debian/Ubuntu/CentOS 網(wǎng)絡安裝/重裝系統(tǒng)/純凈安裝 一鍵腳本
[2018.03.30]
優(yōu)化GRUB檢測測邏輯. 添加組件依賴檢測. 修復一些已知BUG.
[2018.03.25]
優(yōu)化判斷邏輯. 增加手動指定網(wǎng)絡參數(shù)選項,可有效避免自動獲取網(wǎng)絡參數(shù)無效造成無法直接聯(lián)網(wǎng)的問題.
背景:
1.帶Windows的為什么就賣得那么貴? 2.當然是為了更自由的使用自己的機器.
需求:
與萌咖博客中的Debian(Ubuntu)網(wǎng)絡安裝/重裝一鍵腳本需求一樣.
無DHCP時額外需求:?iconv
#Debian/Ubuntu## 一般自帶#RedHat/CentOSyum install glibc-common
限制:
需要定制dd包.
開啟內(nèi)置Administrator賬戶登錄(配置自動登陸)..
開啟遠程桌面(默認3389端口).
禁用UAC..
適當?shù)恼{(diào)整防火墻.(可選)
需要相關的虛擬化驅(qū)動.
VirtIO驅(qū)動(備份下載)?XEN驅(qū)動(備份下載)
dd包解壓后的體積不能超過機器第一塊硬盤的最大容積.
相關教程:
從零開始:在Linux上覆蓋安裝WINDOWS通用教程(dd)
#制作可用的鏡像文件
使用方法:
wget--no-check-certificate -qO InstallNET.sh'https://moeclub.org/attachment/LinuxShell/InstallNET.sh'&& bash InstallNET.sh -dd'[Windows dd包直連地址]'
萌咖提供的demo包(1.19G;已激活):
https://moeclub.org/onedrive/IMAGE/Windows/win7emb_x86.tar.gz# 谷歌文件ID: 1srhylymTjYS-Ky8uLw4R6LCWfAo1F3s7# 該包只添加了VirtIO驅(qū)動,理論上僅能在KVM,Hyper-V構(gòu)架下正常運行.# 如需在其他虛擬化構(gòu)架下運行,請自行添加相關虛擬化驅(qū)動.
使用的是Windows Embedded Standard 7(Thin PC)作為底包,官方精簡. 如需其他組件,例如:完整的桌面特征,Windows照片查看器等. 請參考:?Thin PC (Win7 Embedded) 安裝組件
使用示例:
#在你的機器上全新安裝,如果你有VNC,可以看到全部過程.#在dd的過程中,會卡在分區(qū)的界面上,不會走進度條.完成后將會自動重啟.wget--no-check-certificate -qO InstallNET.sh'https://moeclub.org/attachment/LinuxShell/InstallNET.sh'&& bash InstallNET.sh -dd'https://moeclub.org/onedrive/IMAGE/Windows/win7emb_x86.tar.gz'
使用示例(指定網(wǎng)絡參數(shù)):
# 將X.X.X.X替換為自己的網(wǎng)絡參數(shù).# --ip-addr :IP Address/IP地址# --ip-mask :Netmask? /子網(wǎng)掩碼# --ip-gate :Gateway? /網(wǎng)關#wget --no-check-certificate -qO InstallNET.sh'https://moeclub.org/attachment/LinuxShell/InstallNET.sh'&& bash InstallNET.sh --ip-addr X.X.X.X --ip-mask X.X.X.X --ip-gate X.X.X.X -dd'https://moeclub.org/onedrive/IMAGE/Windows/win7emb_x86.tar.gz'
注意事項:
遠程登陸賬號為:?Administrator
遠程登陸密碼為:?Vicer
僅修改了主機名,可放心使用.(建議自己制作.)
使用的公用網(wǎng)盤,如需長期/大量使用此包請自行備份.
如果因此違反了TOS,萌咖不負任何責任.
可能用到的命令:
::以管理員身份運行CMD::::更改用戶的密碼net user [用戶名] [密碼]::激活 Administrator 賬戶net user Administrator /active:yes::設置 Administrator 賬戶密碼net user Administrator [新密碼]::添加用戶net user [用戶名] [密碼] /add::將用戶添加至 Administrator 組net localgroup Administrators [用戶名] /add::刪除用戶net user [用戶名] /del
溫馨提示:
在磁盤管理中,點擊'C'盤,右鍵選擇'擴展卷',可以直接'增加'C盤的空間.?激活相關請參考:?https://moeclub.org/kms
萌咖提供的可用包:
與本地用iso鏡像安裝過程一樣,如果你有VNC,可看到全部過程. 因為全新安裝!!! 全新安裝!!! 全新安裝!!!?所以會等待久一點.
Windows Embedded 8.1 Industry Pro x64 (2.87G;KVM;XEN;Hyper-V;未激活)
直鏈:https://moeclub.org/onedrive/IMAGE/Windows/win8.1emb_x64.tar.gz谷歌網(wǎng)盤文件ID:1cqVl2wSGx92UTdhOxU9pW3wJgmvZMT_J
預覽:
#!/bin/bashexporttmpVER=''exporttmpDIST=''exporttmpURL=''exporttmpWORD=''exporttmpMirror=''exporttmpSSL=''exporttmpINS=''exporttmpFW=''exportipAddr=''exportipMask=''exportipGate=''exportlinuxdists=''exportddMode='0'exportsetNet='0'exportisMirror='0'exportFindDists='0'while[[$#-ge 1 ]];docase$1in-v|--ver)shifttmpVER="$1"shift;;? ? -d|--debian)shiftlinuxdists='debian'tmpDIST="$1"shift;;? ? -u|--ubuntu)shiftlinuxdists='ubuntu'tmpDIST="$1"shift;;? ? -dd|--image)shiftddMode='1'tmpURL="$1"shift;;? ? -p|--password)shifttmpWORD="$1"shift;;? ? --ip-addr)shiftipAddr="$1"shift;;? ? --ip-mask)shiftipMask="$1"shift;;? ? --ip-gate)shiftipGate="$1"shift;;? ? -a|--auto)shifttmpINS='auto';;? ? -m|--manual)shifttmpINS='manual';;? ? -apt|--mirror)shiftisMirror='1'tmpMirror="$1"shift;;? ? -ssl)shifttmpSSL="$1"shift;;? ? --firmware)shifttmpFW='1';;? ? *)echo-ne" Usage:\n\t$0\t-d/--debian [\033[33m\033[04mdists-name\033[0m]\n\t\t\t\t-u/--ubuntu [\033[04mdists-name\033[0m]\n\t\t\t\t-v/--ver [32/\033[33m\033[04mi386\033[0m|64/amd64]\n\t\t\t\t--ip-addr/--ip-gate/--ip-mask\n\t\t\t\t-apt/--mirror\n\t\t\t\t-dd/--image\n\t\t\t\t-a/--auto\n\t\t\t\t-m/--manual\n"exit1;? ? ? ;;esacdone[["$EUID"-ne'0']] &&echo"Error:This script must be run as root!"&&exit1;functionCheckDependence(){FullDependence='0';forBIN_DEPin`echo"$1"|sed's/,/\n/g'`doif[[ -n"$BIN_DEP"]];thenFounded='0';forBIN_PATHin`echo"$PATH"|sed's/:/\n/g'`dols$BIN_PATH/$BIN_DEP>/dev/null 2>&1;if[ $? =='0'];thenFounded='1';break;fidoneif["$Founded"=='1'];thenecho-en"$BIN_DEP\t\t[\033[32mok\033[0m]\n";elseFullDependence='1';echo-en"$BIN_DEP\t\t[\033[31mfail\033[0m]\n";fifidoneif["$FullDependence"=='1'];thenexit1;fi}clear &&echo-e"\n\033[36m# Check Dependence\033[0m\n"CheckDependence wget,awk,grep,sed,cut,cat,cpio,gzip["$ddMode"=='1'] && {CheckDependence iconv}[[ -f'/boot/grub/grub.cfg']] && GRUBOLD='0'&& GRUBDIR='/boot/grub'&& GRUBFILE='grub.cfg';[[ -z"$GRUBDIR"]] && [[ -f'/boot/grub2/grub.cfg']] && GRUBOLD='0'&& GRUBDIR='/boot/grub2'&& GRUBFILE='grub.cfg';[[ -z"$GRUBDIR"]] && [[ -f'/boot/grub/grub.conf']] && GRUBOLD='1'&& GRUBDIR='/boot/grub'&& GRUBFILE='grub.conf';[ -z"$GRUBDIR"-o -z"$GRUBFILE"] &&echo-ne"Error! \nNot Found grub path.\n"&&exit1;[[ -n"$tmpVER"]] && {? ["$tmpVER"=='32'-o"$tmpVER"=='i386'] && VER='i386';? ["$tmpVER"=='64'-o"$tmpVER"=='amd64'] && VER='amd64';}[[ -z"$VER"]] && VER='i386';[[ -z"$linuxdists"]] && linuxdists='debian';[["$isMirror"=='1']] && [[ -n"$tmpMirror"]] && {? tmpDebianMirror="$(echo -n "$tmpMirror" |grep -Eo '.*\.(\w+)')";echo-n"$tmpDebianMirror"|grep -q'://';? [[ $? -eq'0']] && {? ? DebianMirror="$(echo -n "$tmpDebianMirror" |awk -F'://' '{print $2}')";? } || {? ? DebianMirror="$(echo -n "$tmpDebianMirror")";? }} || {? [["$linuxdists"=='debian']] && DebianMirror='httpredir.debian.org';? [["$linuxdists"=='ubuntu']] && DebianMirror='archive.ubuntu.com';}[[ -z"$DebianMirrorDirectory"]] && [[ -n"$DebianMirror"]] && [[ -n"$tmpMirror"]] && {? DebianMirrorDirectory="$(echo -n "$tmpMirror" |awk -F''${DebianMirror}'' '{print $2}' |sed 's/\/$//g')";}[[ -n"$DebianMirror"]] && {? [["$DebianMirrorDirectory"=='/']] && {? ? [["$linuxdists"=='debian']] && DebianMirrorDirectory='/debian';? ? [["$linuxdists"=='ubuntu']] && DebianMirrorDirectory='/ubuntu';? }? [[ -z"$DebianMirrorDirectory"]] && {? ? [["$linuxdists"=='debian']] && DebianMirrorDirectory='/debian';? ? [["$linuxdists"=='ubuntu']] && DebianMirrorDirectory='/ubuntu';? }}[[ -z"$tmpDIST"]] && {? [["$linuxdists"=='debian']] && DIST='wheezy';? [["$linuxdists"=='ubuntu']] && DIST='trusty';}[[ -z"$DIST"]] && {? DIST="$(echo "$tmpDIST" |sed -r 's/(.*)/\L\1/')";echo"$DIST"|grep -q'[0-9]';? [[ $? -eq'0']] && {? ? isDigital="$(echo "$DIST" |grep -o '[0-9\.]\{1,\}' |sed -n '1h;1!H;$g;s/\n//g;$p' |cut -d'.' -f1)";? ? [[ -n$isDigital]] && {? ? ? [["$isDigital"=='7']] && DIST='wheezy';? ? ? [["$isDigital"=='8']] && DIST='jessie';? ? ? [["$isDigital"=='9']] && DIST='stretch';? ? ? [["$isDigital"=='10']] && DIST='buster';? ? }? }}[["$ddMode"=='1']] && {? [[ -n"$tmpURL"]] && {? ? linuxdists='debian';? ? DIST='jessie';? ? VER='amd64';? ? tmpINS='auto';? ? DDURL="$tmpURL"echo"$DDURL"|grep -q'^http://\|^ftp://\|^https://';? ? [[ $? -ne'0']] &&echo'Please input vaild URL,Only support http://, ftp:// and https:// !'&&exit1;? ? [[ -n"$tmpSSL"]] && SSL_SUPPORT="$tmpSSL";? ? [[ -z"$SSL_SUPPORT"]] && SSL_SUPPORT='https://moeclub.org/get-wget_udeb_amd64';? } || {echo'Please input vaild URL! ';exit1;? }}DistsList="$(wget --no-check-certificate -qO- "http://$DebianMirror$DebianMirrorDirectory/dists/" |grep -o 'href=.*/"' |cut -d'"' -f2 |sed '/-\|old\|Debian\|experimental\|stable\|test\|sid\|devel/d' |grep '^[^/]' |sed -n '1h;1!H;$g;s/\n//g;s/\//\;/g;$p')";forCheckDEBin`echo"$DistsList"|sed's/;/\n/g'`do[["$CheckDEB"=="$DIST"]] && FindDists='1';? ? [["$FindDists"=='1']] &&break;done[["$FindDists"=='0']] && {echo-ne'\nThe dists version not found, Please check it! \n\n'bash$0error;exit1;}[[ -n"$tmpINS"]] && {? [["$tmpINS"=='auto']] && inVNC='n';? [["$tmpINS"=='manual']] && inVNC='y';}[ -n"$ipAddr"] && [ -n"$ipMask"] && [ -n"$ipGate"] && setNet='1';[[ -n"$tmpWORD"]] && myPASSWORD="$tmpWORD";[[ -n"$tmpFW"]] && INCFW="$tmpFW";[[ -z"$myPASSWORD"]] && myPASSWORD='Vicer';[[ -z"$INCFW"]] && INCFW='0';clear &&echo-e"\n\033[36m# Install\033[0m\n"ASKVNC(){? inVNC='y';? [["$ddMode"=='0']] && {echo-ne"\033[34mCan you login VNC?\033[0m\e[33m[\e[32my\e[33m/n]\e[0m "readtmpinVNC? ? [[ -n"$tmpinVNC"]] && inVNCtmp="$tmpinVNC"}? ["$inVNCtmp"=='y'-o"$inVNCtmp"=='Y'] && inVNC='y';? ["$inVNCtmp"=='n'-o"$inVNCtmp"=='N'] && inVNC='n';}["$inVNC"=='y'-o"$inVNC"=='n'] || ASKVNC;[["$linuxdists"=='debian']] && LinuxName='Debian';[["$linuxdists"=='ubuntu']] && LinuxName='Ubuntu';[["$ddMode"=='0']] && {? [["$inVNC"=='y']] &&echo-e"\033[34mManual Mode\033[0m insatll \033[33m$LinuxName\033[0m [\033[33m$DIST\033[0m] [\033[33m$VER\033[0m] in VNC. "[["$inVNC"=='n']] &&echo-e"\033[34mAuto Mode\033[0m insatll \033[33m$LinuxName\033[0m [\033[33m$DIST\033[0m] [\033[33m$VER\033[0m]. "}[["$ddMode"=='1']] && {echo-ne"\033[34mAuto Mode\033[0m insatll \033[33mWindows\033[0m\n[\033[33m$DDURL\033[0m]\n"}echo-e"\n[\033[33m$LinuxName\033[0m] [\033[33m$DIST\033[0m] [\033[33m$VER\033[0m] Downloading..."[[ -z"$DebianMirror"]] &&echo-ne"\033[31mError! \033[0mGet debian mirror fail! \n"&&exit1[[ -z"$DebianMirrorDirectory"]] &&echo-ne"\033[31mError! \033[0mGet debian mirror directory fail! \n"&&exit1wget --no-check-certificate -qO'/boot/initrd.gz'"http://$DebianMirror$DebianMirrorDirectory/dists/$DIST/main/installer-$VER/current/images/netboot/$linuxdists-installer/$VER/initrd.gz"[[ $? -ne'0']] &&echo-ne"\033[31mError! \033[0mDownload 'initrd.gz' failed! \n"&&exit1wget --no-check-certificate -qO'/boot/linux'"http://$DebianMirror$DebianMirrorDirectory/dists/$DIST/main/installer-$VER/current/images/netboot/$linuxdists-installer/$VER/linux"[[ $? -ne'0']] &&echo-ne"\033[31mError! \033[0mDownload 'linux' failed! \n"&&exit1[["$INCFW"=='1']] && [["$linuxdists"=='debian']] && {? wget --no-check-certificate -qO'/boot/firmware.cpio.gz'"http://cdimage.debian.org/cdimage/unofficial/non-free/firmware/$DIST/current/firmware.cpio.gz"[[ $? -ne'0']] &&echo-ne"\033[31mError! \033[0mDownload 'firmware' failed! \n"&&exit1}[["$setNet"=='1']] && {? IPv4="$ipAddr";? MASK="$ipMask";? GATE="$ipGate";} || {? 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"]] || {echo"Not found \`ip command\`, It will use \`route command\`."ipNum() {localIFS='.';readip1 ip2 ip3 ip4 <<<"$1";echo$((ip1*(1<<24)+ip2*(1<<16)+ip3*(1<<8)+ip4));}SelectMax(){ii=0;forIPITEMin`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\}'`doNumTMP="$(ipNum $IPITEM)";eval"arrayNum[$ii]='$NumTMP,$IPITEM'";? ? ii=$[$ii+1];doneecho${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)";[[ -n"$GATE"]] && [[ -n"$MASK"]] && [[ -n"$IPv4"]] || {echo"Error! Not configure network. ";exit1;}}[["$setNet"!='1']] && [[ -f'/etc/network/interfaces']] && {? [[ -z"$(sed -n '/iface.*inet static/p' /etc/network/interfaces)"]] && AutoNet='1'|| AutoNet='0';? [[ -d /etc/network/interfaces.d ]] && {? ? ICFGN="$(find /etc/network/interfaces.d -name '*.cfg' |wc -l)"|| ICFGN='0';? ? [["$ICFGN"-ne'0']] && {forNetCFGin`ls -1 /etc/network/interfaces.d/*.cfg`do[[ -z"$(cat $NetCFG | sed -n '/iface.*inet static/p')"]] && AutoNet='1'|| AutoNet='0';? ? ? ? ? [["$AutoNet"-eq'0']] &&break;done}? }}[["$setNet"!='1']] && [[ -d'/etc/sysconfig/network-scripts']] && {? ICFGN="$(find /etc/sysconfig/network-scripts -name 'ifcfg-*' |grep -v 'lo'|wc -l)"|| ICFGN='0';? [["$ICFGN"-ne'0']] && {forNetCFGin`ls -1 /etc/sysconfig/network-scripts/ifcfg-* |grep -v'lo$'|grep -v':[0-9]\{1,\}'`do[[ -n"$(cat $NetCFG | sed -n '/BOOTPROTO.*[dD][hH][cC][pP]/p')"]] && AutoNet='1'|| {? ? ? ? ? AutoNet='0'&& .$NetCFG;? ? ? ? ? [[ -n$NETMASK]] && MASK="$NETMASK";? ? ? ? ? [[ -n$GATEWAY]] && GATE="$GATEWAY";? ? ? ? }? ? ? ? [["$AutoNet"-eq'0']] &&break;done}}[[ ! -f$GRUBDIR/$GRUBFILE]] &&echo"Error! Not Found$GRUBFILE. "&&exit1;[[ ! -f$GRUBDIR/$GRUBFILE.old ]] && [[ -f$GRUBDIR/$GRUBFILE.bak ]] && mv -f$GRUBDIR/$GRUBFILE.bak$GRUBDIR/$GRUBFILE.old;mv -f$GRUBDIR/$GRUBFILE$GRUBDIR/$GRUBFILE.bak;[[ -f$GRUBDIR/$GRUBFILE.old ]] && cat$GRUBDIR/$GRUBFILE.old >$GRUBDIR/$GRUBFILE|| cat$GRUBDIR/$GRUBFILE.bak >$GRUBDIR/$GRUBFILE;[["$GRUBOLD"=='0']] && {? READGRUB='/tmp/grub.read'cat$GRUBDIR/$GRUBFILE|sed -n'1h;1!H;$g;s/\n/+++/g;$p'|grep -oPm 1'menuentry\ .*\{.*\}\+\+\+'|sed's/\+\+\+/\n/g'>$READGRUBLoadNum="$(cat $READGRUB |grep -c 'menuentry ')"if[["$LoadNum"-eq'1']];thencat$READGRUB|sed'/^$/d'>/tmp/grub.new;elif[["$LoadNum"-gt'1']];thenCFG0="$(awk '/menuentry /{print NR}' $READGRUB|head -n 1)";? ? CFG2="$(awk '/menuentry /{print NR}' $READGRUB|head -n 2 |tail -n 1)";? ? CFG1="";fortmpCFGin`awk'/}/{print NR}'$READGRUB`do["$tmpCFG"-gt"$CFG0"-a"$tmpCFG"-lt"$CFG2"] && CFG1="$tmpCFG";done[[ -z"$CFG1"]] && {echo"Error! read$GRUBFILE. ";exit1;? ? }? ? sed -n"$CFG0,$CFG1"p$READGRUB>/tmp/grub.new;? ? [[ -f /tmp/grub.new ]] && [["$(grep -c '{' /tmp/grub.new)"-eq"$(grep -c '}' /tmp/grub.new)"]] || {echo-ne"\033[31mError! \033[0mNot configure$GRUBFILE. \n";exit1;? ? }fi[ ! -f /tmp/grub.new ] &&echo"Error!$GRUBFILE. "&&exit1;? sed -i"/menuentry.*/c\menuentry\ \'Install OS \[$DIST\$VER\]\'\ --class debian\ --class\ gnu-linux\ --class\ gnu\ --class\ os\ \{"/tmp/grub.new? sed -i"/echo.*Loading/d"/tmp/grub.new;}[["$GRUBOLD"=='1']] && {? CFG0="$(awk '/title /{print NR}' $GRUBDIR/$GRUBFILE|head -n 1)";? CFG1="$(awk '/title /{print NR}' $GRUBDIR/$GRUBFILE|head -n 2 |tail -n 1)";? [[ -n$CFG0]] && [ -z$CFG1-o$CFG1==$CFG0] && sed -n"$CFG0,$"p$GRUBDIR/$GRUBFILE>/tmp/grub.new;? [[ -n$CFG0]] && [ -z$CFG1-o$CFG1!=$CFG0] && sed -n"$CFG0,$CFG1"p$GRUBDIR/$GRUBFILE>/tmp/grub.new;? [[ ! -f /tmp/grub.new ]] &&echo"Error! configure append$GRUBFILE. "&&exit1;? sed -i"/title.*/c\title\ \'Install OS \[$DIST\$VER\]\'"/tmp/grub.new;? sed -i'/^#/d'/tmp/grub.new;}[[ -n"$(grep 'linux.*/\|kernel.*/' /tmp/grub.new |awk '{print $2}' |tail -n 1 |grep '^/boot/')"]] && Type='InBoot'|| Type='NoBoot';LinuxKernel="$(grep 'linux.*/\|kernel.*/' /tmp/grub.new |awk '{print $1}' |head -n 1)";[[ -z"$LinuxKernel"]] &&echo"Error! read grub config! "&&exit1;LinuxIMG="$(grep 'initrd.*/' /tmp/grub.new |awk '{print $1}' |tail -n 1)";[ -z"$LinuxIMG"] && sed -i"/$LinuxKernel.*\//a\\\tinitrd\ \/"/tmp/grub.new && LinuxIMG='initrd';[["$Type"=='InBoot']] && {? sed -i"/$LinuxKernel.*\//c\\\t$LinuxKernel\\t\/boot\/linux auto=true hostname=$linuxdistsdomain= -- quiet"/tmp/grub.new;? sed -i"/$LinuxIMG.*\//c\\\t$LinuxIMG\\t\/boot\/initrd.gz"/tmp/grub.new;}[["$Type"=='NoBoot']] && {? sed -i"/$LinuxKernel.*\//c\\\t$LinuxKernel\\t\/linux auto=true hostname=$linuxdistsdomain= -- quiet"/tmp/grub.new;? sed -i"/$LinuxIMG.*\//c\\\t$LinuxIMG\\t\/initrd.gz"/tmp/grub.new;}sed -i'$a\\n'/tmp/grub.new;[["$inVNC"=='n']] && {GRUBPATCH='0';[ -f'/etc/network/interfaces'-o -d'/etc/sysconfig/network-scripts'] || {echo"Error, Not found interfaces config.";exit1;}INSERTGRUB="$(awk '/menuentry /{print NR}' $GRUBDIR/$GRUBFILE|head -n 1)"sed -i''${INSERTGRUB}'i\\n'$GRUBDIR/$GRUBFILE;sed -i''${INSERTGRUB}'r /tmp/grub.new'$GRUBDIR/$GRUBFILE;[[ -f$GRUBDIR/grubenv ]] && sed -i's/saved_entry/#saved_entry/g'$GRUBDIR/grubenv;[[ -d /boot/tmp ]] && rm -rf /boot/tmp;mkdir -p /boot/tmp;cd/boot/tmp;gzip -d < ../initrd.gz | cpio --extract --verbose --make-directories --no-absolute-filenames >>/dev/null 2>&1cat >/boot/tmp/preseed.cfg<'/boot/tmp/net.tmp';}WinNoDHCP(){echo-ne"@ECHO OFF\r\ncd\056\076\045windir\045\GetAdmin\r\nif\040exist\040\045windir\045\GetAdmin\040\050del\040\057f\040\057q\040\042\045windir\045\GetAdmin\042\051\040else\040\050\r\necho\040CreateObject^\050\042Shell\056Application\042^\051\056ShellExecute\040\042\045~s0\042\054\040\042\045\052\042\054\040\042\042\054\040\042runas\042\054\040\061\040\076\076\040\042\045temp\045\Admin\056vbs\042\r\n\042\045temp\045\Admin\056vbs\042\r\ndel\040\057f\040\057q\040\042\045temp\045\Admin\056vbs\042\r\nexit\040\057b\040\062\051\r\nfor\040\057f\040\042tokens=\063\052\042\040\045\045i\040in\040\050\047netsh\040interface\040show\040interface\040^|more\040+3\040^|findstr\040\057R\040\042\u672c\u5730\056\052\040\u4ee5\u592a\056\052\040Local\056\052\040Ethernet\042\047\051\040do\040\050set\040EthName=\045\045j\051\r\nnetsh\040-c\040interface\040ip\040set\040address\040name=\042\045EthName\045\042\040source=static\040address=$IPv4\040mask=$MASK\040gateway=$GATE\r\nnetsh\040-c\040interface\040ip\040add\040dnsservers\040name=\042\045EthName\045\042\040address=\070\056\070\056\070\056\070\040index=1\040validate=no\r\nnetsh\040-c\040interface\040ip\040add\040dnsservers\040name=\042\045EthName\045\042\040address=\070\056\070\056\064\056\064\040index=2\040validate=no\r\ncd\040\057d\040\042\045ProgramData\045\057Microsoft\057Windows\057Start\040Menu\057Programs\057Startup\042\r\ndel\040\057f\040\057q\040net\056bat\r\n\r\n">'/boot/tmp/net.tmp';}? [["$setNet"=='1']] && WinNoDHCP;? [["$setNet"=='0']] && {? ? [["$AutoNet"-eq'1']] && WinDHCP;? ? [["$AutoNet"-eq'0']] && WinNoDHCP;? }? iconv -f'UTF-8'-t'GBK''/boot/tmp/net.tmp'-o'/boot/tmp/net.bat'rm -rf'/boot/tmp/net.tmp'echo"$DDURL"|grep -q'^https://'[[ $? -eq'0']] && {echo-ne'\nAdd ssl support...\n'[[ -n$SSL_SUPPORT]] && {? ? ? wget --no-check-certificate -qO-"$SSL_SUPPORT"|tar -x? ? ? [[ ! -f? /boot/tmp/usr/bin/wget ]] &&echo'Error! SSL_SUPPORT.'&&exit1;? ? ? sed -i's/wget\ -qO-/\/usr\/bin\/wget\ --no-check-certificate\ --retry-connrefused\ --tries=7\ --continue\ -qO-/g'/boot/tmp/preseed.cfg? ? ? [[ $? -eq'0']] &&echo-ne'Success! \n\n'} || {echo-ne'Not ssl support package! \n\n';exit1;? ? }? }}[["$ddMode"=='0']] && {? sed -i'/anna-install/d'/boot/tmp/preseed.cfg? sed -i's/wget.*\/sbin\/reboot\;\ //g'/boot/tmp/preseed.cfg}[["$INCFW"=='1']] && [["$linuxdists"=='debian']] && [[ -f'/boot/firmware.cpio.gz']] && {? gzip -d < ../firmware.cpio.gz | cpio --extract --verbose --make-directories --no-absolute-filenames >>/dev/null 2>&1}rm -rf ../initrd.gz;find . | cpio -H newc --create --verbose | gzip -9 > ../initrd.gz;rm -rf /boot/tmp;}[["$inVNC"=='y']] && {? sed -i'$i\\n'$GRUBDIR/$GRUBFILEsed -i'$r /tmp/grub.new'$GRUBDIR/$GRUBFILEecho-e"\n\033[33m\033[04mIt will reboot! \nPlease look at VNC! \nSelect\033[0m\033[32m Install OS [$DIST$VER] \033[33m\033[4mto install system.\033[04m\n\n\033[31m\033[04mThere is some information for you.\nDO NOT CLOSE THE WINDOW! \033[0m\n"echo-e"\033[35mIPv4\t\tNETMASK\t\tGATEWAY\033[0m"echo-e"\033[36m\033[04m$IPv4\033[0m\t\033[36m\033[04m$MASK\033[0m\t\033[36m\033[04m$GATE\033[0m\n\n"read-n 1 -p"Press Enter to reboot..."INP? [["$INP"!='']] &&echo-ne'\b \n\n';}chown root:root$GRUBDIR/$GRUBFILEchmod 444$GRUBDIR/$GRUBFILEsleep 3 && reboot >/dev/null 2>&1