学习心得 · 2023年6月8日 0

Linux一键重装支持Debian 12,迄今为止功能最全,最好用的脚本

原文hostloc复制过来的,原贴地址点此。因为之前的脚本不能用在DO上,而这个可以,作为辅助DD的脚本,权当记录一下吧。

项目地址,欢迎 star,github 主页或私信反馈:

https://github.com/leitbogioro/Tools

支持从甲骨文等主流大厂,各其他商家的任意 Redhat 红帽系统(包括 Oracle Linux CentOS Almalinux RockyLinux)重装到 Debian/Kali,也支持 Ubuntu/Debian 装回红帽系统,双方永久互装完全没问题!彻底解决了萌咖原版 grub 引导不行,只能装 CentOS 6.9 的困扰(我这个版本已不支持 CentOS 6.9),IPv4 和 IPv6 的处理,其他等等细节处理的也很完善。

更新简报:

  • 支持 Debian 12,目前(20230429)正在内测,还未正式发布,仅供测试,不建议应用到日常使用和生产环境,截至 2023 年 5 月 8 日,Debian 12 已不能通过各类源正常安装,请静候 6 月 10 日发布;
  • 适配 Debian 12 的 Python 3 和 vim gtk3 组件;
  • 支持修改 Debian 12 的 vim 配置,以支持从终端直接复制文本;
  • 写了一个验证 IPv6 有效性的组件;
  • 修复了甲骨文云官方模板 Rockylinux 9 中不能正常读取grub配置的问题;
  • 除了从指定源下载的系统安装文件,Debian 的定制文件、Redhat 系列的防火墙配置文件(以支持修改除22以外其他端口)等需要从本项目下载的文件,因为国内机器连接 github 等泛域名经常被阻断,所以可自动切换到码云(gitee.com),以缓解由连接卡死造成的自动应答文件最终配置失败的问题;
  • 安装前会自动尝试开启 dhcp IPv4 和 IPv6,避免造成首次开机后因无法获得对应的 IP 地址造成网络配置缺失;
  • 如果不指定安装哪种系统,默认安装 Debian 12,清除指定 AMD64 或 ARM64 架构,脚本会根据当前系统自动判断。
  • 2023 年 5 月初更新简报:https://hostloc.com/thread-1167534-1-1.html
  • 支持 Kali,提升兼容性:https://hostloc.com/thread-1167534-1-1.html

下载前记得更新源,安装 wget.然后运行:

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 等参数时有效,如果加了,必须指定对应系统的发行版!):

Debian 12

bash InstallNET.sh -debian
或者重装 Debian 11
bash InstallNET.sh -debian 11 -pwd '123456'
#我常用的DD debian11的命令

Kali rolling

bash InstallNET.sh -kali

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

Alpine Linux Edge

bash InstallNET.sh -alpine

CentOS 9 stream

bash InstallNET.sh -centos
#默认centos 9 也可以改成对应的 centos 7 / centos 8

AlmaLinux 9

bash InstallNET.sh -almalinux

RockyLinux 9

bash InstallNET.sh -rockylinux

Fedora 38

bash InstallNET.sh -fedora

Ubuntu 20.04

bash InstallNET.sh -ubuntu

Ubuntu 因为在 22.04 版本及之后不再提供 netboot 文件,也废除了对 preseed 自动应答文件和 d-i(debian install) 命令的支持,官方提供的 Cloud init 安装方法要求 CPU 必须支持虚拟化,大多数 VPS 不满足该要求,故不再提供支持。

使用 netbootxyz 手动重装(仅限 x86 BIOS)

bash InstallNET.sh -netbootxyz

指定源,输入系统和对应版本后,加参数“-mirror”,如:

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

默认密码如下:

LeitboGi0ro

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

-pwd 'xiaoming'

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

默认端口22,可添加 -port 端口号 修改,支持全系受支持的系统,范围“1-65535”:

例:

-port "12345"

注意:脚本以前配置网络的策略,是看到 IPv4 或 IPv6 任意一个为静态,则都为静态,脚本现在可以根据 IPv4 和 IPv6 的动态和静态参数分别记录、配置。解决了类似 Hetzner 这样的商家,IPv4 是动态(dhcp)配置,IPv6 是静态(static)配置,且 IPv4 是公网 IP 地址,网关是内网地址,如果采用 dhcp 配置网络,IPv4 可以正常使用,但以静态配置,网络不通,按以前配置策略,IPv4 和 IPv6 都给静态则无法顺利配置网络的问题。但对于 godaddy 这样的商家,只有 IPv4 网络,且机器 IP 和网关 IP 不在同一网段,且不支持 dhcp,由于无法获得正确网关,重装后安装程序会卡在网络配置界面。除非问清楚客服真实网关是什么,如果客服也搞不清楚,则此问题暂时无解。

参见:https://hostloc.com/forum.php?mod=viewthread&tid=1163052

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

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

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

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

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

bash InstallNET.sh -debian 11 --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 网络,只要设置 –setipv6 “0”,新系统里 IPv6 模块就会被彻底禁用,无法访问 IPv6 网络,请按照实际情况选择。对部分 Racknerd 和 Virmach 等商家的纯 IPv4 机器有效,因为这些机型 DNS 解析会强制返回 IPv6 地址,然而机器没有 IPv6 网络,导致 ping wget 持续失败,强制新系统里不加载 IPv6 模块可解决此问题。但这样会导致 Nginx 里带加载 IPv6 网络的模块失败导致启动失败,请自行到 /etc/nginx/nginx.conf 目录里把 #        listen       [::]:80 default_server; 注释掉

bash InstallNET.sh -debian 11 --setipv6 "0关闭,1开启"

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

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

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

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

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/

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

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

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

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

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

https://launchpad.net/ubuntu/+cdmirrors

已知问题:

  • Nginx 对 Debian12 支持不佳,安装以后 apt-update 会报错;
  • Debian 12 自带 Linux 6.1.0.x 版本内核,安装 Xanmod 6.1 LTS 内核后,两者会有冲突,无论在重启前,将系统自带 6.1.0.x 内核卸载,选择用 Xanmod 6.1 LTS 内核启动,还是选择保留系统自带内核启动,都会无限重启,请慎重操作!





    卸载 Debian 12 自带内核命令:
  • apt autoremove -y –purge linux-image-6.1.0-7-amd64 linux-image-amd64

  • Linode 的机器安装完成后,需要在面板里将机器引导从它自带的 grub2 变成全盘才能正常启动,参见我另外一个贴:https://hostloc.com/forum.php?mod=viewthread&tid=1166099