A-A+

史上最强的一键重装脚本:暂不支持从 Windows 装回 Linux

2023年06月20日 VPS评价 等您评论

我最近在主力做的一个项目,就是 Linux 一键重装脚本,针对市面各类脚本中支持的 Linux 发行版种类过少,grub 引导菜单的路径判别、有效性识别、新项目写入乏力,仅支持 IPv4 dhcp 或仅支持 IPv4 静态(我寻思你们开发的时候是跟用 IPv6 的人有仇吗?),完全不支持 IPv6,dhcp 或静态 IPv4 IPv6 网络配置的检测和商家模板错误的网关设置自动修正等等问题进行了深度的改善和优化,作为服务器功能完整实现的一环,网络方面是我这个脚本着重完善的重点,所有受支持的 Linux 发行版,拥有 IPv4 和 IPv6 的双栈机重装后网络能全部自动配好,无需手配(如果是双网卡每张网卡上配置了一种网络,目前 Debian 也支持),纯 IPv6 机器的支持也完全没问题(暂不包含 AlpineLinux/Ubuntu)。

目前项目获得了很多朋友的认可,支持 Debian 9+,包括Debian 12,新版 AlmaLinux,RockyLinux,CentOS,Fedora,AlpineLinux Edge,Ubuntu 20.04 22.04 等系统之间,arm64 和amd64 架构之间永久互装,也支持从甲骨文自带的 Oracle Linux 等类红帽系统重装到脚本支持的任意系统(红帽系内存要求较高,2GB以上),当然也可以安装到 Windows,暂不支持从 Windows 装回 Linux。

github 项目地址如下,欢迎 star:

https://github.com/leitbogioro/Tools

下载前记得更新源,安装 wget,如果原系统是 AlpineLinux,需要额外安装 bash:

wget --no-check-certificate -qO InstallNET.sh 'https://raw.githubusercontent.com/leitbogioro/Tools/master/Linux_reinstall/InstallNET.sh' && chmod a+x InstallNET.sh

国内机器现在可以从 Gitee 下载:

wget --no-check-certificate -qO InstallNET.sh 'https://gitee.com/mb9e8j2/Tools/raw/master/Linux_reinstall/InstallNET.sh' && chmod a+x InstallNET.sh

快速开始(当且仅当脚本不加 -pwd -port -mirror 等参数时有效,如果加了,必须指定对应系统的发行版版本号!):

不用再输入使用何种架构(-v 选项已被 -version 替代,且两者都已经被弃用),脚本会自动检测架构、实现 Debian 系和 Redhat 系架构名相互智能转换!

Debian 12(支持 9 至 12)

bash InstallNET.sh -debian

Kali rolling

bash InstallNET.sh -kali

Kali 对 ARM64 AMD64 架构的兼容性都 OK,甲骨文 Oracle ARM 机装虽然从原系统重启后安装就黑屏,什么提示都没有,在 VNC 里也无法观测进度并调试,但只要是从面板自带模板或任意其他一键脚本安装的纯净系统中安装过去的,100% 保证能成功,VNC 里看到黑屏别怕,别手欠中途硬重启,不知道 Kali 是什么的,反正你就知道 Kali 是日常、电影电视剧里黑客经常用的,自带很多安全测试工具,贼鸡儿炫酷的一个 Debian 发行版就行。Kali 有三个版本,按激进程度大小排列,分别为 experimental > dev > rolling,普通人不爱折腾的,最好以使用 rolling 为主。

Alpine Linux edge

一个超轻量 Linux 发行版,但需要注意的是,Alpine Linux 运行的时候省内存,内存占用仅 80m 左右,但安装时不省,因为它会在内存中完成所有初始化操作,直到最后再全盘写入硬盘,不像 Debian 红帽系启动内核在内存里准备完毕,就开始进行格盘并从镜像源往硬盘上写入文件操作,这就导致安装 Alpine Linux 的内存要求并不低,低于 1GB 内存的机器不要安装,由于 Alpine Linux iPXE 启动文档里仅描述了如何通过 dhcp 或静态从 IPv4 网络启动,所以仅有 IPv6 公网访问的机器也不要安装。双栈机 IPv6 部分会在安装过程中自动配置好。

bash InstallNET.sh -alpine

CentOS 9 stream(支持 7-9)

bash InstallNET.sh -centos

AlmaLinux 9(支持 8-9)

bash InstallNET.sh -alma

RockyLinux 9(支持 8-9)

bash InstallNET.sh -rocky

Fedora 38(支持 37-38)

bash InstallNET.sh -fedora

Ubuntu 22.04(支持 20.04 或 22.04)

bash InstallNET.sh -ubuntu

感谢王煎饼的天才想法,找到 AlpineLinux 这么一个奇佳的 dd 中介系统,让我得以有得一手嘚瑟一番:

王煎饼隔壁论坛 id:https://hostloc.com/space-uid-35316.html
王煎饼 github 主页:https://github.com/bin456789/

原理论述起来实在太复杂,感兴趣的客官,请移步我单独一个帖子来了解:

https://www.nodeseek.com/post-9558-1 (实现 Ubuntu 22.04 及以后版本安装的技术原理以及我对“原生网络安装”和“dd 安装”的观点与评价)

除了 Ubuntu 和 Windows,其余发行版 Linux 均支持自选镜像源,脚本内部仅内置官方后备,且能够区分国内或是国外机器,国内机器重装时必要联网获取的配置文件也能连接到我项目的 gitee.com 镜像,确保国内机器晚高峰重装时不会卡住,或是遭受 github.com 被大墙的阻断。

其他脚本支持重装到的 Linux 系统均支持原生指定全球各地镜像源的方式安装,如果不指定源,脚本会区分国外国内自动为国内 VPS 切换到国内源,避免连接缓慢,如果要手动指定源,输入系统和对应版本后,加参数“-mirror”,如:

bash InstallNET.sh -debian 12 -mirror "http://ftp.riken.jp/Linux/debian/debian/"

Debian 全世界各国家、地区源列表:

https://www.debian.org/mirror/list.html

Kali 全世界各国家、地区源列表:

https://http.kali.org/README.mirrorlist

Kali 官方源 https://http.kali.org/ 因为不支持纯 IPv6 访问,所以脚本中默认国外源选用的是美国勃克利学院 https://mirrors.ocf.berkeley.edu/kali/ 的,学术机构,中立放心,同时支持 IPv4 IPv6 访问,带宽大,下载质量良好。

CentOS 7 和 8-stream,全世界各国家、地区源列表:

https://www.centos.org/download/mirrors/

CentOS 9-stream 及以后全世界各国家、地区源列表:

https://admin.fedoraproject.org/mirrormanager/mirrors/CentOS

AlmaLinux 全世界各国家、地区源列表:

https://mirrors.almalinux.org/

RockyLinux 全世界各国家、地区源列表:

https://mirrors.rockylinux.org/mirrormanager/mirrors

Fedora 全世界各国家、地区源列表:

https://admin.fedoraproject.org/mirrormanager/mirrors/Fedora

默认密码如下:

LeitboGi0ro

由于 AlpineLinux 和 Ubuntu 采用明文(未经 openssl 加密过的密文,仅本地变量传输,不会传到其他地方,放心)传递密码参数到配置文件,附加特殊符号可能会导致 sed 处理时出错,所以 AlpineLinux 和 Ubuntu 默认密码统一为 LeitboGi0ro 且暂不支持修改。

密码若要自定义,可添加 -pwd '密码内容' 修改,密码字段建议前后使用单英文引号(' ')括起来,以免 shell 将双英文引号(" ")中带特殊字符的密码当做命令传递,造成错误,不要设置的过长过复杂,例:

-pwd 'xiaoming'

特别的是,如果密码中带有英文单引号('),请一定在该单引号前加 ''' 做转义,也就是说,以下转义过的字符才和一个单引号等价:

'\''

也就是说,以上符号才等于实际密码中的 ' 符号,比如你密码要设置为:'xiaoming',那么如下输入才是正确的:

-pwd ''\''xiaoming'\'''

如果使用的是默认密码,安装后请立即修改!

默认 ssh 端口随原系统,比如你机器原系统 ssh 为 65432,新装好的系统端口号也为 65432,亦可添加 -port "端口号" 修改,支持全系受支持的 Linux 系统,范围“1-65535”,如果给错或无法确定原系统端口,后备值为:

22

例:

-port "12345"

如果想要强制双网动态配置,请输入:

bash InstallNET.sh -debian 12 --network "dhcp"

如果想要强制双网静态配置,请输入:

bash InstallNET.sh -debian 12 --network "static"

目前支持如果有双网卡,每张网卡上带一个 IPv4 或 IPv6 的静态配置,新安装系统中这两张网卡的网络配置都能够自动配好,仅限 Debian/Kali:

如果想要纯手动模式安装,比如用于调试等,请输入(要求必须能用 VNC 访问机器),不支持 AlpineLinux Ubuntu:

bash InstallNET.sh -debian 12 --allbymyself

如果想要使用 netbootxyz 纯手动模式安装其受支持的系统,比如 Archlinux 等,请输入(不推荐,要求必须能用 VNC 访问机器,仅 x86_64 AMD64 架构,BIOS 固件机器使用,甲骨文 UEFI 固件机器用 netbootxyz 启动,请参考此教程:https://zhuanlan.zhihu.com/p/97527349):

bash InstallNET.sh -netbootxyz

现在开启了一个参数,--setipv6 "0 ",指定强制关闭系统安装时加载 IPv6 模块,设置为 0 就是关闭,指定其他值或不指定为加载 IPv6 模块。不管机器实际是否有 IPv6 网络,只要设置 --setipv6 "0",新系统里 IPv6 模块就会被彻底禁用,无法访问 IPv6 网络,请按照实际情况选择,对部分 Racknerd 和 Virmach 等商家的纯 IPv4 机器有效,因为这些商家的纯 IPv4 机器也会被 dhcp 分配到一个公共 IPv6 地址,且 DNS 解析外部网站域名,会强制返回它们的 IPv6 地址,然而机器没有 IPv6 网络,导致 ping wget curl 等网络连接工具会因持续试图连接 IPv6 地址而失败,强制新系统里不加载 IPv6 模块可解决此问题。但这样会导致 Nginx 里带加载 IPv6 网络的模块失败导致启动失败,请自行到 /etc/nginx/nginx.conf 目录里把

#        listen       [::]:80 default_server;

Racknerd Virmach 纯 IPv4 机型安装时不指定 --setipv6 "0" 的后果,wget 总是优先连接 IPv6,当失败数次后才使用 IPv4 连接,造成过长的连接等待。

注释掉,该选项适用于除 AlpineLinux 以外的全部 Linux 发行版

bash InstallNET.sh -debian 12 --setipv6 "0"

如何使用本脚本从 Linux dd 到 Windows?

  1. 任意基于 KVM QEMU 或 XEN 的机器,不管机器原系统是 Debian 系还是 Redhat 系,grub 引导菜单都能成功写入并重启后被启动:

bash InstallNET.sh -dd 'DD 镜像链接'

  1. 某些支持多种启动方式,如救援模式,正常模式等的独服,如 Kimsufi 等:

将启动模式转换为救援模式,从邮箱里获取登陆账户密码,进入救援模式临时系统,执行:

wget -O- 'DD 镜像链接' | xzcat | dd of=/dev/sda

等待 dd 镜像下载并解压好,将启动模式改为正常模式,输入重启命令,等待被 dd 的 Windows 系统初始化完成。

reboot

感谢秋水逸冰先生的无私付出,辛苦制作了一批成熟的 Windows 系列 dd 镜像并提供直链,从临时中转的 Debian 12 格盘后,dd 的镜像来源,连接详情,硬件需求均基于秋水逸冰先生的 dd 镜像。

秋水逸冰博客:https://teddysun.com/
秋水逸冰 github:https://github.com/teddysun/

用户名: Administrator
密码: Teddysun.com
RDC(远程桌面) 端口: 5900
网络: 必须具备 IPv4 DHCP
CPU: 仅限 AMD64 架构,至少单核,双核以上更佳
硬盘: 至少 20GB,推荐 50GB 及以上,固态硬盘更佳
内存: 至少 2GB , 8GB 以上更佳

Windows dd 包来源:

BIOS 主板固件,MBR 分区

Windows 11 Pro for Workstations 22H2

简中: https://dl.lamp.sh/vhd/zh-cn_windows11_22h2.xz
英语: https://dl.lamp.sh/vhd/en-us_windows11_22h2.xz
日语: https://dl.lamp.sh/vhd/ja-jp_windows11_22h2.xz

Windows Server 2022 Datacenter

简中: https://dl.lamp.sh/vhd/zh-cn_win2022.xz
英语: https://dl.lamp.sh/vhd/en-us_win2022.xz
日语: https://dl.lamp.sh/vhd/ja-jp_win2022.xz

Windows 10 Enterprise LTSC

简中: https://dl.lamp.sh/vhd/zh-cn_windows10_ltsc.xz
英语: https://dl.lamp.sh/vhd/en-us_windows10_ltsc.xz
日语: https://dl.lamp.sh/vhd/ja-jp_windows10_ltsc.xz

Windows Server 2012 R2 Datacenter

简中: https://dl.lamp.sh/vhd/cn_win2012r2.xz
英语: https://dl.lamp.sh/vhd/en_win2012r2.xz
日语: https://dl.lamp.sh/vhd/ja_win2012r2.xz

UEFI 主板固件,GPT 分区

Windows 11 Pro for Workstations 22H2

简中: https://dl.lamp.sh/vhd/zh-cn_windows11_22h2_uefi.xz
英语: https://dl.lamp.sh/vhd/en-us_windows11_22h2_uefi.xz
日语: https://dl.lamp.sh/vhd/ja-jp_windows11_22h2_uefi.xz

Windows Server 2022 Datacenter

简中: https://dl.lamp.sh/vhd/zh-cn_win2022_uefi.xz
英语: https://dl.lamp.sh/vhd/en-us_win2022_uefi.xz
日语: https://dl.lamp.sh/vhd/ja-jp_win2022_uefi.xz

Windows 10 Enterprise LTSC

简中: https://dl.lamp.sh/vhd/zh-cn_win10_ltsc_uefi.xz
英语: https://dl.lamp.sh/vhd/en-us_win10_ltsc_uefi.xz
日语: https://dl.lamp.sh/vhd/ja-jp_win10_ltsc_uefi.xz

Windows Server 2012 R2 Datacenter

简中: https://dl.lamp.sh/vhd/cn_win2012r2_uefi.xz
英语: https://dl.lamp.sh/vhd/en_win2012r2_uefi.xz
日语: https://dl.lamp.sh/vhd/ja_win2012r2_uefi.xz

有任何问题,都可以在该帖里向我提出,该帖会长期更新,我在力所能及的范围之内都会想办法解决,感谢支持,再次感谢所有爱技术、爱折腾的人们!

给我留言