[ Windows VPS ] Windows 一键重装系统为 Linux

[ Windows VPS ] Windows 一键重装系统为 Linux

2018年11月14日 23:41 技术控
0 10
阿里云双11 新用户最低99元/1年 火速上车!最高可得1111元红包!
浏览器油猴插件:去除百家号链接 恢复网址显示

[ Windows VPS ] Windows 一键重装系统为 Linux

[ Windows VPS ] Windows 一键重装系统为 Linux

文章核心内容转载自@萌咖大佬

有些厂商的机器因策略问题,不支持Windows重装为Linux. 例如: 腾讯云非大陆区域.
有些厂商Windows系统盘会比Linux系统盘大,想要大一点系统盘. 例如: AZURE.
有些厂商不支持VNC,这对于转换系统实在不方便.
这篇文章可以解决以上问题.

使用方法

1、下载 win32loader.bat
2、双击打开此文件
2、自行选择选项
2、按回车重启,并等待安装完成

[ Windows VPS ] Windows 一键重装系统为 Linux

注意事项

如果对提供安装的发行版不满意,请参考此文章:CentOS/Debian/Ubuntu网络重装系统一键脚本
默认提供的是Debian8(Jessie),添加了firmware包,提供了更多的驱动支持,DHCP模式一键.
非DHCP模式,如果要一键,则需要自己定制镜像.
定制Debian系镜像应该没问题,其他未作测试.

默认root账户密码 Vicer .

如需要Linux一键重装为Windows,请参考此文章.

[ Linux VPS ] Debian/Ubuntu/CentOS 网络安装/重装系统/纯净安装 一键脚本

如果厂商不支持VNC,则需要自己定制镜像.
定制方法参考上面提到的文章

[ Linux VPS ] Debian/Ubuntu/CentOS 网络安装/重装系统/纯净安装 一键脚本

主要在镜像中添加机器的网络参数,以便支持一键安装.

命令示例:

# 定制带网络参数的initrd.img
bash InstallNET.sh -d 8 -v 64 -a --ip-addr --ip-mask --ip-gate --loader
# 需要dd安装其他系统(例如 Windows to Windows),定制命令.(网络参数有DHCP的,无需添加.)
bash InstallNET.sh -dd --ip-addr --ip-mask --ip-gate --loader

完成后将 initrd.img 和 vmlinuz 存放到能直链下载的位置.

如果厂商支持VNC,则可以直选全部选 1 .

安装的时候,自己填 IP地址子网掩码网关DNS服务器.
DNS服务器推荐填:  8.8.8.8

区分是否为DHCP模式

[ Windows VPS ] Windows 一键重装系统为 Linux

非DHCP模式: 如上图,显示了详细的IP地址.(选项为:使用下面的IP地址)

DHCP模式: 参考上图.(选项为:自动获得IP地址)

源码备份

@ECHO OFF&PUSHD %~DP0 &TITLE Win32Loader
setlocal enabledelayedexpansion
::Author MoeClub.org
color 87
cd.>%windir%\GetAdmin
if exist %windir%\GetAdmin (del /f /q "%windir%\GetAdmin") else (
echo CreateObject^("Shell.Application"^).ShellExecute "%~s0", "%*", "", "runas", 1 >> "%temp%\Admin.vbs"
"%temp%\Admin.vbs"
del /s /q "%temp%\Admin.vbs"
exit /b 2)
cls
 
echo * Init Win32Loader.
set URL=https://moeclub.org/attachment/WindowsSoftware
 
set download=0
set try_download=1
 
:Init
mkdir "%SystemDrive%\win32-loader" >NUL 2>NUL
if exist "%SystemDrive%\Windows\System32\WindowsPowerShell" (
set use_ps=1
) else (
set use_ps=0
)
 
if %use_ps% equ 1 (
goto InitIt
) else (
goto InitFail
)
 
:InitIt
set try_download=0
powershell.exe -command "& {$client = new-object System.Net.WebClient; $client.DownloadFile('!URL!/g2ldr/g2ldr','%SystemDrive%\g2ldr')}" >NUL 2>NUL
powershell.exe -command "& {$client = new-object System.Net.WebClient; $client.DownloadFile('!URL!/g2ldr/g2ldr.mbr','%SystemDrive%\g2ldr.mbr')}" >NUL 2>NUL
powershell.exe -command "& {$client = new-object System.Net.WebClient; $client.DownloadFile('!URL!/g2ldr/grub.cfg','%SystemDrive%\win32-loader\grub.cfg')}" >NUL 2>NUL
goto InitDone
 
:InitFail
echo Not found powershell, please download them by yourself.
echo '%SystemDrive%\g2ldr'
echo '%SystemDrive%\g2ldr.mbr'
echo '%SystemDrive%\win32-loader\grub.cfg'
echo Press [ENTER] when you finished.
pause >NUL 2>NUL
goto InitDone
 
:InitDone
if !try_download! equ 0 (
set InitOption=InitFail
) else (
set InitOption=Init
)
if not exist "%SystemDrive%\g2ldr" goto !InitOption!
if not exist "%SystemDrive%\g2ldr.mbr" goto !InitOption!
if not exist "%SystemDrive%\win32-loader\grub.cfg" goto !InitOption!
 
:Image
echo.
echo * Please select initrd mode.
echo     [1] Online download
echo     [2] Local file
choice /n /c 12 /m Select:
if errorlevel 2 goto LocalMode
if errorlevel 1 goto OnlineMode
goto Image
 
:OnlineMode
echo.
echo * Please select source.
echo     [1] by MoeClub (DHCP or VNC Support)
echo     [2] by yourself
choice /n /c 12 /m Select:
if errorlevel 2 goto Yourself
if errorlevel 1 goto MoeClub
goto OnlineMode
:Yourself
echo.
echo if 'initrd.img' URL is 'https://moeclub.org/onedrive/IMAGE/Loader/DebianJessie/initrd.img', Please input 'https://moeclub.org/onedrive/IMAGE/Loader/DebianJessie'.
set /p IMG_URL=URL :
if defined IMG_URL (
goto Download
) else (
goto MoeClub
)
:MoeClub
set IMG_URL=https://moeclub.org/onedrive/IMAGE/Loader/DebianJessie
goto Download
:Download
if %use_ps% equ 1 (
echo.
echo Downloading 'initrd.img'...
powershell.exe -command "& {$client = new-object System.Net.WebClient; $client.DownloadFile('!IMG_URL!/initrd.img','%SystemDrive%\win32-loader\initrd.img')}" >NUL 2>NUL
echo Downloading 'vmlinuz'...
powershell.exe -command "& {$client = new-object System.Net.WebClient; $client.DownloadFile('!IMG_URL!/vmlinuz','%SystemDrive%\win32-loader\vmlinuz')}" >NUL 2>NUL
set download=1
) else (
echo Not support online download, auto change Local initrd.
goto LocalMode
)
 
:LocalMode
if !download! equ 0 (
echo.
echo Please put 'initrd.img' and 'vmlinuz' to '%SystemDrive%\win32-loader' .
echo Press [ENTER] when you finished.
pause >NUL 2>NUL
)
 
:Done0
set download=0
if exist "%SystemDrive%\win32-loader\initrd.img" (
goto Done1
) else (
echo Not found '%SystemDrive%\win32-loader\initrd.img' .
goto LocalMode
)
 
:Done1
set download=0
if exist "%SystemDrive%\win32-loader\vmlinuz" (
goto Done
) else (
echo Not found '%SystemDrive%\win32-loader\vmlinuz' .
goto LocalMode
)
 
:Done
echo.
echo Press [ENTER] to reboot...
pause >NUL 2>NUL
if not exist "%SystemDrive%\g2ldr" echo Not found '%SystemDrive%\g2ldr' . && exit 1
if not exist "%SystemDrive%\g2ldr.mbr" echo Not found '%SystemDrive%\g2ldr.mbr' . && exit 1
if not exist "%SystemDrive%\win32-loader\grub.cfg" echo Not found '%SystemDrive%\win32-loader\grub.cfg' . && exit 1
if not exist "%SystemDrive%\win32-loader\initrd.img" echo Not found '%SystemDrive%\win32-loader\initrd.img' . && exit 1
if not exist "%SystemDrive%\win32-loader\vmlinuz" echo Not found '%SystemDrive%\win32-loader\vmlinuz' . && exit 1
set id={01234567-89ab-cdef-0123-456789abcdef}
bcdedit /create %id% /d "Debian GUN/Linux" /application bootsector >NUL 2>NUL
bcdedit /set %id% device partition=%SystemDrive% >NUL 2>NUL
bcdedit /set %id% path \g2ldr.mbr >NUL 2>NUL
bcdedit /displayorder %id% /addlast >NUL 2>NUL
bcdedit /bootsequence %id% /addfirst >NUL 2>NUL
shutdown -r -t 0

文章总数
2357+
标签总数
2169+
评论总数
11601+
运营天数
1975+