logo
0
0
Login
core: 不重要的优化

reinstall

Codacy CodeFactor Lines of Code

One-Click system reinstallation script for VPS 中文

Introduction

  • One-click reinstallation to Linux: Supports 19 common distributions.
  • One-click reinstallation to Windows: Uses the official original ISO instead of custom images. The script can automatically fetch the ISO link and installs public cloud drivers like VirtIO.
  • Supports reinstallation in any direction, i.e., Linux to Linux, Linux to Windows, Windows to Windows, Windows to Linux
  • Automatically configures IP and intelligently sets it as static or dynamic. Supports /32, /128, gateway outside subnet, IPv6 only, IPv4/IPv6 on different NIC
  • Specially optimized for low-spec servers, requires less memory than the official netboot
  • Uses partition table ID to identify hard drives throughout the process, ensuring no wrong disk is written
  • Supports BIOS and EFI boot, and ARM Server
  • No homemades image included, all resources are obtained in real-time from mirror sites

If this helped you, you can buy me a milk tea. Donate

Sponsors

Feedback

GitHub Issues Telegram Group

Quick Start

System Requirements

The original system can be any system listed in the table.

The system requirements for the target system are as follows:

SystemVersionMemoryDisk
Alpine3.19, 3.20, 3.21, 3.22256 MB1 GB
Debian9, 10, 11, 12, 13256 MB1 ~ 1.5 GB ^
KaliRolling256 MB1 ~ 1.5 GB ^
Ubuntu16.04 LTS - 24.04 LTS, 25.10512 MB *2 GB
Anolis7, 8, 23512 MB *5 GB
RHEL   AlmaLinux   Rocky   Oracle8, 9, 10512 MB *5 GB
OpenCloudOS8, 9, Stream 23512 MB *5 GB
CentOS Stream9, 10512 MB *5 GB
Fedora42, 43512 MB *5 GB
openEuler20.03 LTS - 24.03 LTS, 25.09512 MB *5 GB
openSUSELeap 15.6, 16.0, Tumbleweed (Rolling)512 MB *5 GB
NixOS25.05512 MB5 GB
ArchRolling512 MB5 GB
GentooRolling512 MB5 GB
AOSC OSRolling512 MB5 GB
fnOSBeta512 MB8 GB
Windows (DD)Any512 MBDepends on image
Windows (ISO)Vista, 7, 8.x (Server 2008 - 2012 R2)512 MB25 GB
Windows (ISO)10, 11 (Server 2016 - 2025)1 GB25 GB

* Indicates installation using cloud images, not traditional network installation.

^ Indicates requiring either 256 MB memory + 1.5 GB disk, or 512 MB memory + 1 GB disk

[!WARNING]

In theory it also supports dedicated servers and PCs

but if you can use IPMI or a USB drive, this script is not recommended.

[!WARNING]

❌ This script does not support OpenVZ or LXC virtual machines.

Please use https://github.com/LloydAsp/OsMutation instead.

Download (Current system is Linux)

For server outside China:

curl -O https://raw.githubusercontent.com/bin456789/reinstall/main/reinstall.sh || wget -O ${_##*/} $_

For server inside China:

curl -O https://cnb.cool/bin456789/reinstall/-/git/raw/main/reinstall.sh || wget -O ${_##*/} $_

Download (Current system is Windows)

[!IMPORTANT] Before proceeding, please disable the 'Real-time protection' feature in Windows Defender. This feature may prevent certutil from downloading any files.

Resolving Script Download Issues on Windows 7

Due to lack of support for TLS 1.2, SHA-256, or outdated root certificates, Windows Vista, 7, and Server 2008 (R2) may not be able to download scripts automatically. Manual downloading is required, as follows:

Use Internet Explorer (enable TLS 1.2 in IE's advanced settings first) to download, or use Remote Desktop to save the following two files into the same directory:

To use, run the downloaded reinstall.bat.

For server outside China:

certutil -urlcache -f -split https://raw.githubusercontent.com/bin456789/reinstall/main/reinstall.bat

For server inside China:

certutil -urlcache -f -split https://cnb.cool/bin456789/reinstall/-/git/raw/main/reinstall.bat

Usage

All features can be used on both Linux and Windows.

  • on Linux, run bash reinstall.sh ...
  • on Windows, first run cmd, then run .\reinstall.bat ...
    • If the link in the parameter contains special characters, it should be enclosed in "", not ''.

Feature 1: Install Linux

[!CAUTION]

This feature will erase the entire hard disk of the current system (including other partitions)!

Data is priceless — please think twice before proceeding!

  • Username root. The script prompts for a password. If left blank, a random one is generated.
  • When installing the latest version, the version number does not need to be specified.
  • Maximizes disk space usage: no boot partition (except for Fedora) and no swap partition.
  • Automatically selects different optimized kernels based on machine type, such as Cloud or HWE kernels.
  • When installing Red Hat, you must provide the qcow2 image link obtained from https://access.redhat.com/downloads/content/rhel. You can also install other RHEL-based OS, such as Alibaba Cloud Linux and TencentOS Server.
  • After reinstallation, if you need to change the SSH port or switch to key-based login, make sure to also modify the files inside /etc/ssh/sshd_config.d/.
bash reinstall.sh anolis 7|8|23 rocky 8|9|10 oracle 8|9|10 almalinux 8|9|10 opencloudos 8|9|23 centos 9|10 fedora 42|43 nixos 25.05 debian 9|10|11|12|13 alpine 3.19|3.20|3.21|3.22 opensuse 15.6|16.0|tumbleweed openeuler 20.03|22.03|24.03|25.09 ubuntu 16.04|18.04|20.04|22.04|24.04|25.10 [--minimal] kali arch gentoo aosc fnos redhat --img="http://access.cdn.redhat.com/xxx.qcow2"

Optional Parameters

  • --password PASSWORD Set the password
  • --ssh-key KEY Set up SSH login public key, formatted as follows. When using public key, password is empty.
  • --ssh-port PORT Change the SSH port (for log observation during installation and for the new system)
  • --web-port PORT Change the Web port (for log observation during installation only)
  • --frpc-toml PATH Add frpc for intranet tunneling. Parameter can be local filepath or HTTP URL
  • --hold 1 Reboot only into install environment, without running installer, only for SSH connect to test network connection.
  • --hold 2 Prevent reboot after installation completes, allowing SSH login to modify system content; the system is mounted at /target for Debian/Kali and /os for other distros.

[!TIP]

Can monitor the progress through various methods (SSH, HTTP 80 port, VNC from server provider, serial console).

Even if errors occur during the installation process, SSH is available for manual recovery.

If the target system is not Debian/Kali, run /trans.sh alpine can automatically recover to Alpine Linux.

Experimental Features

Install Debian using a cloud image

  • Suitable for machines with slower CPUs
bash reinstall.sh debian --ci

Install CentOS, AlmaLinux, Rocky, Fedora using ISO

  • Only supports machines with more than 2G of memory and dynamic IP.
  • Password is 123@@@, and the SSH port is 22; modifying them using parameters is not supported.
bash reinstall.sh centos --installer

Install Ubuntu using ISO

  • Only supports machines with more than 1G of memory and dynamic IP.
  • Password is 123@@@, and the SSH port is 22; modifying them using parameters is not supported.
bash reinstall.sh ubuntu --installer

Feature 2: DD RAW image to hard disk

[!CAUTION]

This feature will erase the entire hard disk of the current system (including other partitions)!

Data is priceless — please think twice before proceeding!

  • Supports raw and fixed-size vhd image formats. Either uncompressed or compressed as .gz, .xz, .zst, .tar, .tar.gz, .tar.xz, .tar.zst.
  • When deploy a Windows image, the system disk will be automatically expanded, and machines with a static IP will have their IP configured, and may take a few minutes after the first boot for the configuration to take effect.
  • When deploy a Linux image, will NOT modify any contents of the image.
bash reinstall.sh dd --img "https://example.com/xxx.xz"

Optional Parameters

  • --allow-ping Configure Windows Firewall to Allow Ping Responses (DD Windows only)
  • --rdp-port PORT Change RDP port (DD Windows only)
  • --ssh-port PORT Change SSH port (for log observation during installation)
  • --web-port PORT Change Web port (for log observation during installation)
  • --frpc-toml PATH Add frpc for intranet tunneling (DD Windows only). Parameter can be local filepath or HTTP URL
  • --hold 1 Reboot only into install environment, without running installer, only for SSH connect to test network connection.
  • --hold 2 Prevent reboot after the DD process finishes. For SSH login to modify system content. The Windows system will be mounted at /os, but Linux systems will NOT be automatically mounted.

[!TIP]

Can monitor the progress through various methods (SSH, HTTP 80 port, VNC from server provider, serial console).

Even if errors occur during the installation process, SSH is available for manual recovery.

Or Run /trans.sh alpine to automatically recover to Alpine Linux.

Feature 3: Reboot to Alpine Live OS (RAM OS)

  • You can use SSH to backup/restore disk, manually perform DD operations, partition modifications, manual Alpine installation, and other operations.
  • Username root. The script prompts for a password. If left blank, a random one is generated.

[!TIP]

Although the script being run is reinstall, this feature does not delete any data or perform an automatic reinstallation; manual user operation is required.

If the user does not damage the original system during manual operation, rebooting will return to the original system.

bash reinstall.sh alpine --hold 1

Optional Parameters

  • --password PASSWORD Set password
  • --ssh-port PORT Change SSH port
  • --ssh-key KEY Set up SSH login public key, formatted as follows. When using public key, password is empty.
  • --frpc-toml PATH Add frpc for intranet tunneling. Parameter can be local filepath or HTTP URL

Feature 4: Reboot to netboot.xyz

  • Can manually install more systems using vendor backend VNC.

[!TIP]

Although the script being run is reinstall, this feature does not delete any data or perform an automatic reinstallation; manual user operation is required.

If the user does not damage the original system during manual operation, rebooting will return to the original system.

bash reinstall.sh netboot.xyz

netboot.xyz

Feature 5: Install Windows ISO

Windows Installation

[!CAUTION]

This feature will erase the entire hard disk of the current system (including other partitions)!

Data is priceless — please think twice before proceeding!

  • Username administrator. The script prompts for a password. If left blank, a random one is generated.
  • If remote login fails, try using the username .\administrator.
  • The machine with a static IP will automatically configure the IP. It may take a few minutes to take effect on the first boot.
  • Supports ISO images in any language.
  • Supports bypassing Windows 11 hardware requirements.

Supported Systems

  • Windows (Vista ~ 11)
  • Windows Server (2008 ~ 2025)
    • Windows Server Essentials *
    • Windows Server (Semi) Annual Channel *
    • Hyper-V Server *
    • Azure Local (Azure Stack HCI) *

Method 1: Let the Script Automatically Search for ISO

bash reinstall.sh windows \ --image-name "Windows 11 Enterprise LTSC 2024" \ --lang zh-cn
Supported languages
ar-sa bg-bg cs-cz da-dk de-de el-gr en-gb en-us es-es es-mx et-ee fi-fi fr-ca fr-fr he-il hr-hr hu-hu it-it ja-jp ko-kr lt-lt lv-lv nb-no nl-nl pl-pl pt-pt pt-br ro-ro ru-ru sk-sk sl-si sr-latn-rs sv-se th-th tr-tr uk-ua zh-cn zh-hk zh-tw

Method 2: Specify the ISO link manually

  • If you don't know the --image-name, you can enter any value. After rebooting, connect via SSH and re-enter the correct value based on the error messages.
bash reinstall.sh windows \ --image-name "Windows 11 Enterprise LTSC 2024 Evaluation" \ --iso "https://go.microsoft.com/fwlink/?linkid=2289029"

or Magnet Link

bash reinstall.sh windows \ --image-name "Windows 11 Enterprise LTSC 2024" \ --iso "magnet:?xt=urn:btih:7352bd2db48c3381dffa783763dc75aa4a6f1cff"
The following website provides ISO links.

Optional Parameters

  • --password PASSWORD Set Password
  • --allow-ping Configure Windows Firewall to Allow Ping Responses
  • --rdp-port PORT Change RDP port
  • --ssh-port PORT Change SSH port (for log observation during installation only)
  • --web-port PORT Change Web port (for log observation during installation only)
  • --add-driver INF_OR_DIR Add additional driver, specifying .inf path, or the folder contains .inf file.
    • The driver must be downloaded to current system first.
    • This parameter can be set multiple times to add different driver.
  • --frpc-toml PATH Add frpc for intranet tunneling. Parameter can be local filepath or HTTP URL
  • --hold 1 Reboot only into install environment, without running installer, only for SSH connect to test network connection.
  • --hold 2 Allow SSH connections for modifying boot.wim, install.wim or other contents before rebooting into the official Windows installation program, with the disk mounted at /os.

The following drivers will automatic download and install as needed, without the need for manual addition

How to Specify the Image Name --image-name

An ISO usually contains multiple system editions, such as Home and Pro. Therefore, you need to use --image-name to specify the system edition (image name) to install, case-insensitive.

You can use tools like DISM, DISM++, or Wimlib to query the image names included in the ISO.

Commonly used image names include:

Windows 7 Ultimate Windows 11 Pro Windows 11 Enterprise LTSC 2024 Windows Server 2025 SERVERDATACENTER

How to Use DISM++ to Query the Image Names Included in the ISO

Open File menu > Open Image File, select the iso to be installed to get the image name (full system name), and all available image names are installable.

image-name

[!WARNING] Vista (Server 2008) and 32-bit systems may lack drivers.

[!WARNING]

For Windows 7 (Server 2008 R2) installation:

  1. EFI-boot machines must enable CSM.

  2. On Hyper-V (Azure), select Generation 1 VM. https://learn.microsoft.com/windows-server/virtualization/hyper-v/plan/should-i-create-a-generation-1-or-2-virtual-machine-in-hyper-v

[!WARNING]

In the Chinese version of Windows 10 LTSC 2021 ISO zh-cn_windows_10_enterprise_ltsc_2021_x64_dvd_033b7312.iso, the wsappx process may indefinitely consume CPU resources.

The solution is to update the system patches or manually install the VCLibs library https://www.google.com/search?q=ltsc+wsappx.

[!WARNING]

When installing Windows ISOs released in May 2022 or later on GCP, the system may repeatedly reboot during the Windows installation (PE) stage. You can resolve this issue using one of the following two methods:

  1. Add the --force-boot-mode bios parameter. The script will install Windows in BIOS boot + MBR partition table mode.

    (Optional) After installation, you can convert it to EFI boot + GPT partition table using the command MBR2GPT /convert /allowFullOS.

  2. Create a custom RAW image and install it via DD.

Considerations for Installing Windows on ARM

Most ARM machines support installing latest Windows 11.

During the installation process, you might encounter a black screen, and the serial console may display ConvertPages: failed to find range, but neither issue affects the installation.

CompatibilityCloud ProviderInstance TypeIssues
✔️AzureB2pts_v2
✔️Alibaba Cloudg6r, c6r
✔️Alibaba Cloudg8y, c8y, r8yThere is a chance of hanging at the boot logo during restart; forced reboot will resolve it.
✔️AWST4g
✔️ScalewayCOPARM1
✔️Gcore
Oracle CloudA1.FlexInstallation success is not guaranteed; newer instances are more likely to succeed.
Manual loading of GPU drivers is required after installation.
Google Cloudt2aMissing network card drivers
Loading Graphics Driver on Oracle Cloud

Log in to the server using Remote Desktop, open Device Manager, locate the graphics card, select "Update Driver," and choose Red Hat VirtIO GPU DOD controller from the list. There's no need to download the drivers in advance.

virtio-gpu-1 virtio-gpu-2 virtio-gpu-3

Parameter Format

--ssh-key

  • --ssh-key "ssh-rsa ..."
  • --ssh-key "ssh-ed25519 ..."
  • --ssh-key "ecdsa-sha2-nistp256/384/521 ..."
  • --ssh-key http://path/to/public_key
  • --ssh-key github:your_username
  • --ssh-key gitlab:your_username
  • --ssh-key /path/to/public_key
  • --ssh-key C:\path\to\public_key

How to Use an Old Version

According to the Law of Bug Conservation, fixing old bugs often introduces new ones.

If a new bug occurs, try using an older version to see if it works.

Go to https://github.com/bin456789/reinstall/commits/main and find the old version’s commit_id on the right side.

commit_id=xxxxxxx curl -O https://raw.githubusercontent.com/bin456789/reinstall/$commit_id/reinstall.sh || wget -O ${_##*/} $_ sed -i "/^confhome.*main$/s/main/$commit_id/" reinstall.sh bash reinstall.sh ...

How to Modify the Script for Your Own

  1. Fork this repository.
  2. Modify the confhome and confhome_cn at the beginning of reinstall.sh and reinstall.bat.
  3. Make changes to the other code.

Thanks

Thanks to the following businesses for providing free servers.

Oracle Cloud DartNode