全文转载自萌咖,博主在波兰 VPS 上使用无问题,小伙伴们在 Vultr、DO 等常见机器也无问题。
也可参考狗仔小分队的文章
用途
- 突破没有 VNC, 没有救援模式, 内存比 dd 包小的限制.
使用 Debian Live CD 中的 busybox 做中间媒介, 经过复杂的处理,
使本机的网络参数传进 Windows 操作系统中,
即使没有 DHCP 能够让 Windows 获取网络参数,
也能让 Windows 操作系统在开机的第一时间能够连通网络. - 与萌咖博客中的 Debian(Ubuntu) 网络安装 / 重装一键脚本需求一样.
- 因为是同一个脚本. 没错, 现在可以 Debian/Ubuntu/Windows 三合一.
注意
当然肯定是有一些限制, 满足以下条件后封装即可使用脚本自动 dd, 自动配置网络.
- 需要定制 dd 包.
1. 默认 Administrator 账户登录.
2. 默认开启远程桌面 (默认 3389 端口).
3. 适当的调整防火墙.(可选) - 需要自行添加相关的虚拟化驱动.
例如 VirtIO 驱动和 XEN 驱动.
dd 包解压后的体积不能超过机器第一块硬盘的最大容积. - 萌咖提供的镜像只是一个 demo. 仅修改了主机名, 可放心使用.(强烈建议自己制作.)
使用
仅在 KVM,Hyper-v 虚拟化构架中通过测试 (因为只添加了 VirtIO 驱动)。无需 VNC, 无需 DHCP.
wget --no-check-certificate -qO DebianNET.sh 'https://moeclub.org/attachment/LinuxShell/DebianNET.sh' && bash DebianNET.sh -dd 'https://moeclub.org/get-win7embx86-auto'
- 默认账号密码:Administrator/Vicer
免责声明
- 如果因此违反了 TOS, 或造成损失萌咖不负任何责任.
源码
#!/bin/bash
while [[ $# -ge 1 ]]; do
case $1 in
-v|--ver)
shift
VERtmp="$1"
shift
;;
-d|--debian|--ubuntu)
shift
vDEBtmp="$1"
shift
;;
-dd|--ddwin)
shift
ddMode='1'
URLtmp="$1"
shift
;;
-p|--password)
shift
WDtmp="$1"
shift
;;
-a|--auto)
shift
INStmp='auto'
;;
-m|--manual)
shift
INStmp='manual'
;;
-apt|--mirror)
shift
isMirror='1'
tmpMirror="$1"
shift
;;
-ssl)
shift
tmpSSL="$1"
shift
;;
*)
echo -ne " Usage:ntbash $0t-d/--debian [7/ 33[33m 33[04mwheezy 33[0m|8/jessie|9/stretch]ntttt-v/--ver [32/ 33[33m 33[04mi386 33[0m|64/amd64]ntttt-apt/--mirrorntttt-dd/--ddwinntttt-a/--autontttt-m/--manualn"
exit 1;
;;
esac
done
[[ $EUID -ne 0 ]] && echo "Error:This script must be run as root!" && exit 1
[[ -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 "Error! Not Found grub path." && exit 1
[[ -n $vDEBtmp ]] && {
[ "$vDEBtmp" == '7' -o "$vDEBtmp" == 'wheezy' ] && linuxdists='debian' && vDEB='wheezy';
[ "$vDEBtmp" == '8' -o "$vDEBtmp" == 'jessie' ] && linuxdists='debian' && vDEB='jessie';
[ "$vDEBtmp" == '9' -o "$vDEBtmp" == 'stretch' ] && linuxdists='debian' && vDEB='stretch';
[[ "$vDEBtmp" == 'precise' ]] && linuxdists='ubuntu' && vDEB='precise';
[[ "$vDEBtmp" == 'trusty' ]] && linuxdists='ubuntu' && vDEB='trusty';
[[ "$vDEBtmp" == 'wily' ]] && linuxdists='ubuntu' && vDEB='wily';
[[ "$vDEBtmp" == 'xenial' ]] && linuxdists='ubuntu' && vDEB='xenial';
[[ "$vDEBtmp" == 'yakkety' ]] && linuxdists='ubuntu' && vDEB='yakkety';
[[ "$vDEBtmp" == 'zesty' ]] && linuxdists='ubuntu' && vDEB='zesty';
}
[[ -n $vDEBtmp ]] && {
[ "$VERtmp" == '32' -o "$VERtmp" == 'i386' ] && VER='i386';
[ "$VERtmp" == '64' -o "$VERtmp" == 'amd64' ] && VER='amd64';
}
[[ -n $ddMode ]] && [[ "$ddMode" == '1' ]] && {
[[ -n $URLtmp ]] && {
linuxdists='debian';
vDEB='jessie';
VER='amd64';
INStmp='auto'
DDURL="$URLtmp"
[[ -n $tmpSSL ]] && CURL_SUPPORT="$tmpSSL"
[[ -z $CURL_SUPPORT ]] && CURL_SUPPORT='https://moeclub.org/get-curl_udeb_amd64'
} || {
echo 'Please input vaild URL! '
exit 1
}
} || {
ddMode='0';
}
[[ -z $linuxdists ]] && linuxdists='debian'
[[ -n $isMirror ]] && [[ "$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')"
}
[[ "$DebianMirrorDirectory" == '/' ]] && [[ -n $DebianMirror ]] && {
[[ $linuxdists == 'debian' ]] && DebianMirrorDirectory='/debian'
[[ $linuxdists == 'ubuntu' ]] && DebianMirrorDirectory='/ubuntu'
}
[[ -z $DebianMirrorDirectory ]] && [[ -n $DebianMirror ]] && {
[[ $linuxdists == 'debian' ]] && DebianMirrorDirectory='/debian'
[[ $linuxdists == 'ubuntu' ]] && DebianMirrorDirectory='/ubuntu'
}
[[ -n $INStmp ]] && {
[[ "$INStmp" == 'auto' ]] && inVNC='n'
[[ "$INStmp" == 'manual' ]] && inVNC='y'
}
[[ -n $WDtmp ]] && myPASSWORD="$WDtmp"
[[ -z $vDEB ]] && vDEB='wheezy';
[[ -z $VER ]] && VER='i386';
[[ -z $myPASSWORD ]] && myPASSWORD='Vicer'
clear && echo -e "n 33[36m# Install 33[0mn"
[[ -z $inVNC ]] && ASKVNC(){
inVNC='y';
[[ "$ddMode" == '0' ]] && {
echo -ne " 33[34mCan you login VNC? 33[0me[33m[e[32mye[33m/n]e[0m "
read inVNCtmp
[[ -n "$inVNCtmp" ]] && inVNC=$inVNCtmp
}
[ "$inVNC" == 'y' -o "$inVNC" == 'Y' ] && inVNC='y'
[ "$inVNC" == 'n' -o "$inVNC" == 'N' ] && inVNC='n'
}
[ "$inVNC" == 'y' -o "$inVNC" == 'n' ] || ASKVNC;
[[ $linuxdists == 'debian' ]] && LinuxName='Debian'
[[ $linuxdists == 'ubuntu' ]] && LinuxName='Ubuntu'
[[ "$ddMode" == '0' ]] && {
[[ "$inVNC" == 'y' ]] && echo -e " 33[34mManual Mode 33[0m insatll 33[33m$LinuxName