[ Linux Shell ] 通用無限制在 Linux VPS 上一鍵全自動 dd 安裝 Windows 系統(tǒng)

突破沒有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)

#制作可用的鏡像文件

關于在Windows上關閉Ctrl+Alt+Del登陸

注冊表開啟遠程桌面服務和3389端口

Windows通過注冊表禁用或開啟服務項

Windows通過注冊表禁用UAC

Windows自動應答文件示例

使用方法:

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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末僚纷,一起剝皮案震驚了整個濱河市荣刑,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖迈套,帶你破解...
    沈念sama閱讀 218,546評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件甲脏,死亡現(xiàn)場離奇詭異,居然都是意外死亡蒙秒,警方通過查閱死者的電腦和手機勃黍,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來晕讲,“玉大人覆获,你說我怎么就攤上這事∑笆。” “怎么了弄息?”我有些...
    開封第一講書人閱讀 164,911評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長勤婚。 經(jīng)常有香客問我摹量,道長,這世上最難降的妖魔是什么馒胆? 我笑而不...
    開封第一講書人閱讀 58,737評論 1 294
  • 正文 為了忘掉前任缨称,我火速辦了婚禮,結(jié)果婚禮上祝迂,老公的妹妹穿的比我還像新娘睦尽。我一直安慰自己,他們只是感情好型雳,可當我...
    茶點故事閱讀 67,753評論 6 392
  • 文/花漫 我一把揭開白布当凡。 她就那樣靜靜地躺著,像睡著了一般四啰。 火紅的嫁衣襯著肌膚如雪宁玫。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,598評論 1 305
  • 那天柑晒,我揣著相機與錄音欧瘪,去河邊找鬼。 笑死匙赞,一個胖子當著我的面吹牛佛掖,可吹牛的內(nèi)容都是我干的妖碉。 我是一名探鬼主播,決...
    沈念sama閱讀 40,338評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼芥被,長吁一口氣:“原來是場噩夢啊……” “哼欧宜!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起拴魄,我...
    開封第一講書人閱讀 39,249評論 0 276
  • 序言:老撾萬榮一對情侶失蹤冗茸,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后匹中,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體夏漱,經(jīng)...
    沈念sama閱讀 45,696評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,888評論 3 336
  • 正文 我和宋清朗相戀三年顶捷,在試婚紗的時候發(fā)現(xiàn)自己被綠了挂绰。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,013評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡服赎,死狀恐怖葵蒂,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情重虑,我是刑警寧澤践付,帶...
    沈念sama閱讀 35,731評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站缺厉,受9級特大地震影響荔仁,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜芽死,卻給世界環(huán)境...
    茶點故事閱讀 41,348評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望次洼。 院中可真熱鬧关贵,春花似錦、人聲如沸卖毁。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽亥啦。三九已至炭剪,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間翔脱,已是汗流浹背奴拦。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留届吁,地道東北人错妖。 一個月前我還...
    沈念sama閱讀 48,203評論 3 370
  • 正文 我出身青樓绿鸣,卻偏偏與公主長得像,于是被迫代替她去往敵國和親暂氯。 傳聞我的和親對象是個殘疾皇子潮模,可洞房花燭夜當晚...
    茶點故事閱讀 44,960評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 第 2 章 SHELL 基礎知識2.1 shell腳本我們在上面簡單介紹了一下什么是shell腳本,現(xiàn)在我們來進一...
    LiWei_9e4b閱讀 1,573評論 0 0
  • 隨意讀: Linux Kernel 4.3發(fā)布痴施,4.4將會是LTS版本 - Linux 4.3 程序員崩潰:2.5...
    壯士干了這碗皮蛋瘦肉粥閱讀 1,247評論 0 2
  • 流程控制 if 單條件 雙分支 多分支 case case支持glob風格的通配符: *: 任意長度任意字符?: ...
    毛利卷卷發(fā)閱讀 749評論 0 1
  • 文/姣子 圖/剽悍讀書營老鐵 哈嘍辣吃,大家晚上好哇动遭。 大年初七的你,身在何方呢齿尽? 是否已經(jīng)開始自己新一...
    大姣子閱讀 200評論 0 0
  • 寫于2010年11月11日循头,那年我大三 夜神降臨的時刻绵估,世界一片悄然,就剩自己在這只剩呼吸氣息的空間穿梭卡骂。因為有夜...
    MUMU菌閱讀 255評論 0 0