diff --git a/README.md b/README.md index 247c467..b7ca04a 100644 --- a/README.md +++ b/README.md @@ -2,9 +2,9 @@ [General description in English ↓](#introduction) -## Oracle 云服务器重装 Debian +## VPS 网络重装 Debian 10 脚本 -**暂不支持 Oracle Linux 作为原系统。创建新机器时请选择 Ubuntu 系统模板。** +**暂不支持 Oracle Linux 作为原系统。创建新机器时请选择 Ubuntu 20.04 或 18.04 系统模板。** 下载脚本: @@ -15,13 +15,14 @@ curl -fLO https://raw.githubusercontent.com/bohanyang/debi/master/debi.sh && chm 运行脚本: ``` -sudo ./debi.sh --cdn --network-console --ethx --bbr --user root --password <这里设置 root 密码> +sudo ./debi.sh --cdn --network-console --ethx --bbr --user root --password <新系统用户密码> ``` -* ❗ **Oracle ARM 架构还需要添加 `--bpo-kernel` 参数,以安装新版 5.10 内核,否则系统可能无法启动** -* 以上命令选项开启了 BBR;设置了网卡名称形式是 `eth0` 而不是 `ens3` 这种。 -* 不加 `--password` 选项会提示输入密码。 -* (可选)添加 `--cloud-kernel` 参数,以安装空间占用较小的内核,但可能会导致 UEFI 启动的机器(如 Oracle、Azure 及 Hyper-V、Google Cloud 等)VNC 黑屏。BIOS 启动的普通 VPS 则没有此问题。 -* 默认使用 UTC 时区,中国时区请加 `--timezone Asia/Shanghai` + +* `--bbr` 开启 BBR +* `--ethx` 网卡名称使用传统形式,如 `eth0` 而不是 `ens3` +* `--cloud-kernel` 安装占用空间较小的 `cloud` 内核,但可能会导致 UEFI 启动的机器(如 Oracle、Azure 及 Hyper-V、Google Cloud 等)VNC 黑屏。BIOS 启动的普通 VPS 则没有此问题。 +* 默认时区为 UTC,添加 `--timezone Asia/Shanghai` 可使用中国时区。 +* 默认使用 Debian 官方 CDN 镜像源(deb.debian.org),添加 `--china` 可使用阿里云镜像源。 如果没有报错可以重启: @@ -37,7 +38,7 @@ sudo shutdown -r now ## Introduction -This script is written to reinstall a VPS/virtual machine to Debian 10 Buster. +This script is written to reinstall a VPS/virtual machine to minimal Debian 10. ## Should Work On @@ -103,10 +104,10 @@ Otherwise, you can run this command to revert all changes made by the script: * `--dns '8.8.8.8 8.8.4.4'` (Default IPv6 DNS: `2001:4860:4860::8888 2001:4860:4860::8844`) * `--hostname ` FQDN hostname (includes the domain name), e.g. `server1.example.com` * `--network-console` Enable the network console of the installer. `ssh installer@ip` to connect - * `--version 10` Supports: `9`, `10`, `11`, `stretch`, `buster`, `bullseye` - * `--suite buster` **For normal cases, please use `--version` instead.** e.g. `stretch`, `buster`, `bullseye`, `sid`, `oldstable`, `stable`, `testing`, `unstable` + * `--version 11` Supports: `9`, `10`, `11`, `stretch`, `buster`, `bullseye` + * `--suite bullseye` **For normal cases, please use `--version` instead.** e.g. `stretch`, `buster`, `bullseye`, `sid`, `oldstable`, `stable`, `testing`, `unstable` * `--release-d-i` d-i (Debian Installer) for the released versions: 10 (buster) and 9 (stretch) - * `--daily-d-i` Use latest daily build of d-i (Debian Installer) for the unreleased versions: 11 (bullseye) and sid (unstable) + * `--daily-d-i` Use latest daily build of d-i (Debian Installer) for the unreleased version: 11 (bullseye), sid (unstable) * `--mirror-protocol http` or `https` or `ftp` * `--https` alias to `--mirror-protocol https` * `--mirror-host deb.debian.org` diff --git a/debi.sh b/debi.sh index 99ba4a2..676af1f 100755 --- a/debi.sh +++ b/debi.sh @@ -74,19 +74,100 @@ download() { fi } +set_security_archive() { + case $suite in + stretch|oldstable|buster|stable) + security_archive="$suite/updates" + ;; + bullseye|testing) + security_archive="$suite-security" + ;; + sid|unstable) + security_archive='' + ;; + *) + err "Unsupported suite: $suite" + esac +} + +set_daily_d_i() { + case $suite in + stretch|oldstable|buster|stable) + daily_d_i=false + ;; + bullseye|testing|sid|unstable) + daily_d_i=true + ;; + *) + err "Unsupported suite: $suite" + esac +} + +set_suite() { + suite=$1 + set_daily_d_i + set_security_archive +} + +set_debian_version() { + case $1 in + 9|stretch|oldstable) + set_suite stretch + ;; + 10|buster|stable) + set_suite buster + ;; + 11|bullseye|testing) + set_suite bullseye + ;; + sid|unstable) + set_suite sid + ;; + *) + err "Unsupported version: $1" + esac +} + +has_cloud_kernel() { + case $suite in + stretch|oldstable) + [ "$architecture" = amd64 ] && [ "$bpo_kernel" = true ] && return + ;; + buster|stable) + [ "$architecture" = amd64 ] && return + [ "$architecture" = arm64 ] && [ "$bpo_kernel" = true ] && return + ;; + bullseye|testing|sid|unstable) + [ "$architecture" = amd64 ] || [ "$architecture" = arm64 ] && return + esac + + local tmp; tmp=''; [ "$bpo_kernel" = true ] && tmp='-backports' + echo "Warning: No cloud kernel is available for $architecture/$suite$tmp." 1>&2 + + return 1 +} + +has_backports() { + case $suite in + stretch|oldstable|buster|stable|bullseye|testing) return + esac + + echo "Warning: No backports kernel is available for $suite." 1>&2 + + return 1 +} + ip= netmask= gateway= dns='8.8.8.8 8.8.4.4' hostname= network_console=false -suite=buster -daily_d_i=false +set_debian_version 10 mirror_protocol=http mirror_host=deb.debian.org mirror_directory=/debian security_repository=http://security.debian.org/debian-security -security_archive=buster/updates account_setup=true username=debian password= @@ -154,42 +235,11 @@ while [ $# -gt 0 ]; do network_console=true ;; --version) - case $2 in - 9|stretch) - suite=stretch - daily_d_i=false - security_archive=stretch/updates - ;; - 10|buster) - suite=buster - daily_d_i=false - security_archive=buster/updates - ;; - 11|bullseye) - suite=bullseye - daily_d_i=true - security_archive=bullseye-security - ;; - *) - err "Unsupported version: $2" - esac + set_debian_version "$2" shift ;; --suite) - suite=$2 - case $2 in - bullseye|testing) - daily_d_i=true - security_archive="$suite-security" - ;; - sid|unstable) - daily_d_i=true - security_archive='' - ;; - *) - daily_d_i=false - security_archive="$suite/updates" - esac + set_suite "$2" shift ;; --release-d-i) @@ -349,19 +399,8 @@ done [ -z "$kernel" ] && { kernel="linux-image-$architecture" - [ "$cloud_kernel" = true ] && { - [ "$architecture" != amd64 ] && [ "$architecture" != arm64 ] && - err 'Cloud kernel is only available for amd64 (x86_64) and arm64 (aarch64) architectures' - - kernel="linux-image-cloud-$architecture" - } - - [ "$bpo_kernel" = true ] && { - [ "$suite" != buster ] && [ "$suite" != stretch ] && - err 'Backports kernel is only available for 10 (buster) and 9 (stretch)' - - install="$kernel/$suite-backports $install" - } + [ "$cloud_kernel" = true ] && has_cloud_kernel && kernel="linux-image-cloud-$architecture" + [ "$bpo_kernel" = true ] && has_backports && install="$kernel/$suite-backports $install" } [ -n "$authorized_keys_url" ] && ! download "$authorized_keys_url" /dev/null &&