mirror of
https://github.com/bohanyang/debi.git
synced 2026-09-27 14:36:20 +00:00
Compare commits
25
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b67c340954 | ||
|
|
4807410541 | ||
|
|
8e779c7999 | ||
|
|
88cb473795 | ||
|
|
e856aca7c3 | ||
|
|
2de8a1a23d | ||
|
|
1282ca8593 | ||
|
|
0c7bad1e42 | ||
|
|
ab6c04b571 | ||
|
|
7844eb5a37 | ||
|
|
e384a10dc9 | ||
|
|
4ea2f8b3a2 | ||
|
|
b853e09987 | ||
|
|
a4772230b2 | ||
|
|
887d3c4a23 | ||
|
|
47ce372bb6 | ||
|
|
b5b37cbf44 | ||
|
|
e4c84ac328 | ||
|
|
8b42031edf | ||
|
|
b9b5203202 | ||
|
|
212de4be3b | ||
|
|
88ee869a6e | ||
|
|
e5452a93e4 | ||
|
|
7c654c13d4 | ||
|
|
f66bb5bc2e |
@@ -1,60 +1,22 @@
|
|||||||
# Debian Network Reinstall Script
|
# Debian Network Reinstall Script
|
||||||
|
|
||||||
[General description in English ↓](#introduction)
|
[中文说明 ↓](#中文说明)
|
||||||
|
|
||||||
## VPS 网络重装 Debian 12 脚本
|
|
||||||
|
|
||||||
**暂不支持 Oracle Linux 作为原系统。创建新机器时请选择 Ubuntu 系统模板。**
|
|
||||||
|
|
||||||
下载脚本:
|
|
||||||
|
|
||||||
```
|
|
||||||
curl -fLO https://raw.githubusercontent.com/bohanyang/debi/master/debi.sh && chmod a+rx debi.sh
|
|
||||||
```
|
|
||||||
|
|
||||||
运行脚本:
|
|
||||||
|
|
||||||
```
|
|
||||||
sudo ./debi.sh --cdn --network-console --ethx --bbr --user root --password <新系统用户密码>
|
|
||||||
```
|
|
||||||
|
|
||||||
* `--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` 可使用阿里云镜像源。
|
|
||||||
|
|
||||||
如果没有报错可以重启:
|
|
||||||
|
|
||||||
```
|
|
||||||
sudo shutdown -r now
|
|
||||||
```
|
|
||||||
|
|
||||||
约 30 秒后可以尝试 SSH 登录 `installer` 用户,密码与之前设置的相同。如果成功连接,可以按 Ctrl-A 然后再按 4 监控安装日志。安装完成后会自动重启进入新系统。
|
|
||||||
|
|
||||||
|
|
||||||
### [Oracle 自动获取 IPv6](https://github.com/bohanyang/debi/wiki/%E7%94%B2%E9%AA%A8%E6%96%87%E4%BA%91%E6%9C%8D%E5%8A%A1%E5%99%A8%E8%87%AA%E5%8A%A8%E8%8E%B7%E5%8F%96-IPv6)
|
|
||||||
### [Oracle 纯 IPv6 网络(无公网 IPv4)下安装方法](https://github.com/bohanyang/debi/wiki/%E7%94%B2%E9%AA%A8%E6%96%87%E4%BA%91%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%BA%AF-IPv6-%E7%BD%91%E7%BB%9C%EF%BC%88%E6%97%A0%E5%85%AC%E7%BD%91-IPv4%EF%BC%89%E4%B8%8B%E5%AE%89%E8%A3%85%E6%96%B9%E6%B3%95)
|
|
||||||
|
|
||||||
## Introduction
|
## Introduction
|
||||||
|
|
||||||
This script is written to reinstall a VPS/virtual machine to minimal Debian 10/11/12.
|
This script is written to reinstall VPS/VMs to minimal Debian.
|
||||||
|
|
||||||
## Should Work On
|
## Platforms
|
||||||
|
|
||||||
### Virtualization Platform
|
- ✔ KVM or physical machines ❌ Containers
|
||||||
|
- ✔ Debian or Ubuntu or Red Hat Linux as original OS with GRUB 2 bootloader
|
||||||
* SolusVM/OpenStack/DigitalOcean/Vultr/Linode/Proxmox/QEMU KVM (BIOS boot)
|
- ✔ MBR or GPT partition table
|
||||||
* Oracle Cloud Infrastructure (UEFI boot)
|
- ✔ Multiple disks or LVM
|
||||||
* Google Cloud Compute Engine (**Must manually configure the VPC internal IP and the gateway.** UEFI boot with Secure Boot support)
|
- ✔ IPv4 or IPv6
|
||||||
* AWS EC2 & Lightsail (BIOS boot)
|
- ✔ Legacy BIOS or UEFI boot
|
||||||
* Hyper-V & Azure (Generation 1 BIOS boot & Generation 2 UEFI boot)
|
- ✔ Most VPS or cloud providers
|
||||||
|
- ⚠️ Google Compute Engine - **MUST** manually specify IP/CIDR and gateway of VPC
|
||||||
### Original OS
|
- ⚠️ AWS EC2 or Lightsail - Does **NOT** work with UEFI boot
|
||||||
|
|
||||||
* Debian 8 or later
|
|
||||||
* Ubuntu 14.04 or later
|
|
||||||
* CentOS 7 or later
|
|
||||||
|
|
||||||
## How It Works
|
## How It Works
|
||||||
|
|
||||||
@@ -70,9 +32,6 @@ Download the script with curl:
|
|||||||
|
|
||||||
curl -fLO https://raw.githubusercontent.com/bohanyang/debi/master/debi.sh
|
curl -fLO https://raw.githubusercontent.com/bohanyang/debi/master/debi.sh
|
||||||
|
|
||||||
# for IPv6-only machines
|
|
||||||
curl -fLO --resolve 'raw.githubusercontent.com:443:2a04:4e42::133' https://raw.githubusercontent.com/bohanyang/debi/master/debi.sh
|
|
||||||
|
|
||||||
or wget:
|
or wget:
|
||||||
|
|
||||||
wget -O debi.sh https://raw.githubusercontent.com/bohanyang/debi/master/debi.sh
|
wget -O debi.sh https://raw.githubusercontent.com/bohanyang/debi/master/debi.sh
|
||||||
@@ -98,12 +57,25 @@ Otherwise, you can run this command to revert all changes made by the script:
|
|||||||
|
|
||||||
## Available Options
|
## Available Options
|
||||||
|
|
||||||
|
### Presets
|
||||||
|
|
||||||
|
| Region | Alias | Mirror | DNS | NTP |
|
||||||
|
|--------|----------------|--------------------------------------|------------|---------------------|
|
||||||
|
| Global | Default | https://deb.debian.org | Google | time.google.com |
|
||||||
|
| Global | `--cloudflare` | https://deb.debian.org | Cloudflare | time.cloudflare.com |
|
||||||
|
| Global | `--aws` | https://cdn-aws.deb.debian.org | Google | time.aws.com |
|
||||||
|
| China | `--ustc` | https://mirrors.ustc.edu.cn | DNSPod | time.amazonaws.cn |
|
||||||
|
| China | `--tuna` | https://mirrors.tuna.tsinghua.edu.cn | DNSPod | time.amazonaws.cn |
|
||||||
|
| China | `--aliyun` | https://mirrors.aliyun.com | AliDNS | time.amazonaws.cn |
|
||||||
|
|
||||||
* `--interface <string>` Manually select a network interface, e.g. eth1
|
* `--interface <string>` Manually select a network interface, e.g. eth1
|
||||||
* `--ethx` Disable *Consistent Network Device Naming* to get interface names like *ethX* back
|
* `--ethx` Disable *Consistent Network Device Naming* to get interface names like *ethX* back
|
||||||
* `--ip <string>` Disable the auto network config (DHCP) and configure a static IP address, e.g. `10.0.0.2`, `1.2.3.4/24`, `2001:2345:6789:abcd::ef/48`
|
* `--ip <string>` Disable the auto network config (DHCP) and configure a static IP address, e.g. `10.0.0.2`, `1.2.3.4/24`, `2001:2345:6789:abcd::ef/48`
|
||||||
|
* `--static-ipv4` Disable the auto network config (DHCP) and configure with the current IPv4 address and gateway detected automatically
|
||||||
* `--netmask <string>` e.g. `255.255.255.0`, `ffff:ffff:ffff:ffff::`
|
* `--netmask <string>` e.g. `255.255.255.0`, `ffff:ffff:ffff:ffff::`
|
||||||
* `--gateway <string>` e.g. `10.0.0.1`, `none` if no gateway
|
* `--gateway <string>` e.g. `10.0.0.1`, `none` if no gateway
|
||||||
* `--dns '8.8.8.8 8.8.4.4'` (Default IPv6 DNS: `2001:4860:4860::8888 2001:4860:4860::8844`)
|
* `--dns '8.8.8.8 8.8.4.4'`
|
||||||
|
* `--dns6 '2001:4860:4860::8888 2001:4860:4860::8844'` (effective only if IPv6 is specified)
|
||||||
* `--hostname <string>` FQDN hostname (includes the domain name), e.g. `server1.example.com`
|
* `--hostname <string>` 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
|
* `--network-console` Enable the network console of the installer. `ssh installer@ip` to connect
|
||||||
* `--version 12` Supports: `10`, `11`, `12`, `13`
|
* `--version 12` Supports: `10`, `11`, `12`, `13`
|
||||||
@@ -123,7 +95,7 @@ Otherwise, you can run this command to revert all changes made by the script:
|
|||||||
* `--authorized-keys-url <string>` URL to your authorized keys for SSH authentication. e.g. `https://github.com/torvalds.keys`
|
* `--authorized-keys-url <string>` URL to your authorized keys for SSH authentication. e.g. `https://github.com/torvalds.keys`
|
||||||
* `--sudo-with-password` Require password when the user invokes `sudo` command
|
* `--sudo-with-password` Require password when the user invokes `sudo` command
|
||||||
* `--timezone UTC` e.g. `Asia/Shanghai` for China (UTC+8) https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List
|
* `--timezone UTC` e.g. `Asia/Shanghai` for China (UTC+8) https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List
|
||||||
* `--ntp 0.debian.pool.ntp.org`
|
* `--ntp time.google.com`
|
||||||
* `--no-disk-partitioning, --no-part` **(Manual installation)** Proceed disk partitioning manually in VNC or remote console
|
* `--no-disk-partitioning, --no-part` **(Manual installation)** Proceed disk partitioning manually in VNC or remote console
|
||||||
* `--disk <string>` Manually select a disk for installation. **Please remember to specify this when more than one disk is available!** e.g. `/dev/sda`
|
* `--disk <string>` Manually select a disk for installation. **Please remember to specify this when more than one disk is available!** e.g. `/dev/sda`
|
||||||
* `--no-force-gpt` By default, GPT rather than MBR partition table will be created. This option disables it.
|
* `--no-force-gpt` By default, GPT rather than MBR partition table will be created. This option disables it.
|
||||||
@@ -151,25 +123,32 @@ Otherwise, you can run this command to revert all changes made by the script:
|
|||||||
* `--grub-timeout 5` How many seconds the GRUB menu shows before entering the installer
|
* `--grub-timeout 5` How many seconds the GRUB menu shows before entering the installer
|
||||||
* `--force-lowmem <integer>` Valid values: 0, 1, 2. Force [low memory level](https://salsa.debian.org/installer-team/lowmem). Useful if your machine has memory less than 500M where level 2 is set (see issue #45). `--force-lowmem 1` may solve it.
|
* `--force-lowmem <integer>` Valid values: 0, 1, 2. Force [low memory level](https://salsa.debian.org/installer-team/lowmem). Useful if your machine has memory less than 500M where level 2 is set (see issue #45). `--force-lowmem 1` may solve it.
|
||||||
* `--dry-run` Print generated preseed and GRUB entry without downloading the installer and actually saving them
|
* `--dry-run` Print generated preseed and GRUB entry without downloading the installer and actually saving them
|
||||||
|
* `--cidata ./cidata-example` Custom data for cloud-init. **VM provider's data source will be IGNORED.** See example.
|
||||||
|
|
||||||
### Presets
|
## 中文说明
|
||||||
|
|
||||||
### `--cdn`
|
下载脚本:
|
||||||
|
|
||||||
* `--mirror-protocol https`
|
```
|
||||||
* `--mirror-host deb.debian.org`
|
curl -fLO https://raw.githubusercontent.com/bohanyang/debi/master/debi.sh && chmod a+rx debi.sh
|
||||||
* `--security-repository mirror`
|
```
|
||||||
|
|
||||||
### `--aws`
|
运行脚本:
|
||||||
|
|
||||||
* `--mirror-protocol https`
|
```
|
||||||
* `--mirror-host cdn-aws.deb.debian.org`
|
sudo ./debi.sh --cdn --network-console --ethx --bbr --user root --password <新系统用户密码>
|
||||||
* `--security-repository mirror`
|
```
|
||||||
|
|
||||||
### `--china`
|
* `--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),添加 `--ustc` 可使用中科大镜像源。
|
||||||
|
|
||||||
* `--dns '223.5.5.5 223.6.6.6'`
|
如果没有报错可以重启:
|
||||||
* `--mirror-protocol https`
|
|
||||||
* `--mirror-host mirrors.aliyun.com`
|
```
|
||||||
* `--security-repository mirror`
|
sudo shutdown -r now
|
||||||
* `--ntp ntp.aliyun.com`
|
```
|
||||||
|
|
||||||
|
约 30 秒后可以尝试 SSH 登录 `installer` 用户,密码与之前设置的相同。如果成功连接,可以按 Ctrl-A 然后再按 4 监控安装日志。安装完成后会自动重启进入新系统。
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
instance-id: 4c75121c-44fb-4166-8717-800b73cab4e4
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
#cloud-config
|
||||||
|
hostname: ci01
|
||||||
|
user: debian
|
||||||
|
disable_root: false
|
||||||
|
ssh_pwauth: true
|
||||||
|
password: 'kuras001'
|
||||||
|
ssh_authorized_keys:
|
||||||
|
- ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCgBp08hAwwPk2w2T+yvlqil7jqXlzM7ulIA9lrgJB9NJLZV3wyYEmcxP/frTSUanjWtiYlrmn5d6EJFwR01Ga+aD6hwQoSZtKyVGY7zKfM6NWKF/lcpFT6HxPg33C4tpueqSqupSlx2yoPqRZhVoCeERrN9k/7fN8Bv8Xvfa/LN8sAI4v8CEJ7BpRXplRwnxceECBdJm0d3ebzMTnj1sfWBTgu/5iwpDh8DRR6LEab7famSTTB8jo6gz3gcwZC+Q3L/UTxS4kcjiQTuX7G74ae9+oSOpuPfP7N0Yo7lJDr8LCZHqkAZC47mQ2baatmD4hc3ZdVD64k6V1b/ms+37/7 youth@DESKTOP-AV4DNMN
|
||||||
|
chpasswd: { expire: false }
|
||||||
|
|
||||||
|
write_files:
|
||||||
|
- content: |
|
||||||
|
[Swap]
|
||||||
|
What=/swapfile
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=swap.target
|
||||||
|
path: /etc/systemd/system/swapfile.swap
|
||||||
|
|
||||||
|
runcmd:
|
||||||
|
- [ sh, -c, "[ ! -e /swapfile ] && { fallocate -l 100M /swapfile && chmod 0600 /swapfile && mkswap /swapfile; }; systemctl daemon-reload && systemctl enable --now swapfile.swap" ]
|
||||||
@@ -18,7 +18,7 @@ command_exists() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# Sets variable:
|
# Sets variable:
|
||||||
late_command=
|
in_target_script=
|
||||||
in_target() {
|
in_target() {
|
||||||
local command=
|
local command=
|
||||||
|
|
||||||
@@ -27,8 +27,8 @@ in_target() {
|
|||||||
done
|
done
|
||||||
|
|
||||||
if [ -n "$command" ]; then
|
if [ -n "$command" ]; then
|
||||||
[ -z "$late_command" ] && late_command='true'
|
[ -z "$in_target_script" ] && in_target_script='true'
|
||||||
late_command="$late_command;$command"
|
in_target_script="$in_target_script;$command"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -156,7 +156,7 @@ set_debian_version() {
|
|||||||
set_suite bookworm
|
set_suite bookworm
|
||||||
;;
|
;;
|
||||||
13|trixie|testing)
|
13|trixie|testing)
|
||||||
set_suite bookworm
|
set_suite trixie
|
||||||
;;
|
;;
|
||||||
sid|unstable)
|
sid|unstable)
|
||||||
set_suite sid
|
set_suite sid
|
||||||
@@ -196,24 +196,26 @@ interface=auto
|
|||||||
ip=
|
ip=
|
||||||
netmask=
|
netmask=
|
||||||
gateway=
|
gateway=
|
||||||
dns='8.8.8.8 8.8.4.4'
|
dns='1.1.1.1 1.0.0.1'
|
||||||
|
dns6='2606:4700:4700::1111 2606:4700:4700::1001'
|
||||||
|
dns10='1.1.1.1 2606:4700:4700::1111'
|
||||||
hostname=
|
hostname=
|
||||||
network_console=false
|
network_console=false
|
||||||
set_debian_version 12
|
set_debian_version 12
|
||||||
mirror_protocol=http
|
mirror_protocol=https
|
||||||
mirror_host=deb.debian.org
|
mirror_host=deb.debian.org
|
||||||
mirror_directory=/debian
|
mirror_directory=/debian
|
||||||
mirror_proxy=
|
mirror_proxy=
|
||||||
security_repository=http://security.debian.org/debian-security
|
security_repository=mirror
|
||||||
account_setup=true
|
account_setup=true
|
||||||
username=debian
|
username=debian
|
||||||
password=
|
password=
|
||||||
authorized_keys_url=
|
authorized_keys_url=
|
||||||
sudo_with_password=false
|
sudo_with_password=false
|
||||||
timezone=UTC
|
timezone=UTC
|
||||||
ntp=0.debian.pool.ntp.org
|
ntp=time.google.com
|
||||||
disk_partitioning=true
|
disk_partitioning=true
|
||||||
disk=
|
disk="/dev/$(lsblk -no PKNAME "$(df /boot | grep -Eo '/dev/[a-z0-9]+')")"
|
||||||
force_gpt=true
|
force_gpt=true
|
||||||
efi=
|
efi=
|
||||||
esp=106
|
esp=106
|
||||||
@@ -222,7 +224,7 @@ kernel=
|
|||||||
cloud_kernel=false
|
cloud_kernel=false
|
||||||
bpo_kernel=false
|
bpo_kernel=false
|
||||||
install_recommends=true
|
install_recommends=true
|
||||||
install='ca-certificates libpam-systemd'
|
install=
|
||||||
upgrade=
|
upgrade=
|
||||||
kernel_params=
|
kernel_params=
|
||||||
force_lowmem=
|
force_lowmem=
|
||||||
@@ -240,20 +242,46 @@ apt_non_free=false
|
|||||||
apt_contrib=false
|
apt_contrib=false
|
||||||
apt_src=true
|
apt_src=true
|
||||||
apt_backports=true
|
apt_backports=true
|
||||||
|
cidata=
|
||||||
|
|
||||||
while [ $# -gt 0 ]; do
|
while [ $# -gt 0 ]; do
|
||||||
case $1 in
|
case $1 in
|
||||||
--cdn|--aws)
|
--cdn)
|
||||||
mirror_protocol=https
|
|
||||||
[ "$1" = '--aws' ] && mirror_host=cdn-aws.deb.debian.org
|
|
||||||
security_repository=mirror
|
|
||||||
;;
|
;;
|
||||||
--china)
|
--aws)
|
||||||
|
mirror_host=cdn-aws.deb.debian.org
|
||||||
|
ntp=time.aws.com
|
||||||
|
;;
|
||||||
|
--cloudflare)
|
||||||
|
dns='1.1.1.1 1.0.0.1'
|
||||||
|
dns6='2606:4700:4700::1111 2606:4700:4700::1001'
|
||||||
|
ntp=time.cloudflare.com
|
||||||
|
;;
|
||||||
|
--aliyun)
|
||||||
dns='223.5.5.5 223.6.6.6'
|
dns='223.5.5.5 223.6.6.6'
|
||||||
mirror_protocol=https
|
dns6='2400:3200::1 2400:3200:baba::1'
|
||||||
mirror_host=mirrors.aliyun.com
|
mirror_host=mirrors.aliyun.com
|
||||||
ntp=ntp.aliyun.com
|
ntp=time.amazonaws.cn
|
||||||
security_repository=mirror
|
;;
|
||||||
|
--ustc|--china)
|
||||||
|
dns='119.29.29.29'
|
||||||
|
dns6='2402:4e00::'
|
||||||
|
mirror_host=mirrors.ustc.edu.cn
|
||||||
|
ntp=time.amazonaws.cn
|
||||||
|
;;
|
||||||
|
--tuna)
|
||||||
|
dns='119.29.29.29'
|
||||||
|
dns6='2402:4e00::'
|
||||||
|
mirror_host=mirrors.tuna.tsinghua.edu.cn
|
||||||
|
ntp=time.amazonaws.cn
|
||||||
|
;;
|
||||||
|
--static-ipv4)
|
||||||
|
ip=$(ip r get 1.1.1.1 | awk '/src/ {print $7}')
|
||||||
|
gateway=$(ip r get 1.1.1.1 | awk '/via/ {print $3}')
|
||||||
|
_cidr=$(ip -o -f inet addr show | grep -w "$ip" | awk '{print $4}' | cut -d'/' -f2)
|
||||||
|
ip="$ip/$_cidr"
|
||||||
|
hostname=$(hostname)
|
||||||
|
interface=$(ip r get 1.1.1.1 | awk '/dev/ {print $5}')
|
||||||
;;
|
;;
|
||||||
--interface)
|
--interface)
|
||||||
interface=$2
|
interface=$2
|
||||||
@@ -275,6 +303,10 @@ while [ $# -gt 0 ]; do
|
|||||||
dns=$2
|
dns=$2
|
||||||
shift
|
shift
|
||||||
;;
|
;;
|
||||||
|
--dns6)
|
||||||
|
dns6=$2
|
||||||
|
shift
|
||||||
|
;;
|
||||||
--hostname)
|
--hostname)
|
||||||
hostname=$2
|
hostname=$2
|
||||||
shift
|
shift
|
||||||
@@ -468,6 +500,12 @@ while [ $# -gt 0 ]; do
|
|||||||
--dry-run)
|
--dry-run)
|
||||||
dry_run=true
|
dry_run=true
|
||||||
;;
|
;;
|
||||||
|
--cidata)
|
||||||
|
cidata=$(realpath "$2")
|
||||||
|
[ ! -f "$cidata/meta-data" ] && err 'No "meta-data" file found in the cloud-init directory'
|
||||||
|
[ ! -f "$cidata/user-data" ] && err 'No "user-data" file found in the cloud-init directory'
|
||||||
|
shift
|
||||||
|
;;
|
||||||
*)
|
*)
|
||||||
err "Unknown option: \"$1\""
|
err "Unknown option: \"$1\""
|
||||||
esac
|
esac
|
||||||
@@ -554,11 +592,15 @@ EOF
|
|||||||
echo "d-i netcfg/get_ipaddress string $ip" | $save_preseed
|
echo "d-i netcfg/get_ipaddress string $ip" | $save_preseed
|
||||||
[ -n "$netmask" ] && echo "d-i netcfg/get_netmask string $netmask" | $save_preseed
|
[ -n "$netmask" ] && echo "d-i netcfg/get_netmask string $netmask" | $save_preseed
|
||||||
[ -n "$gateway" ] && echo "d-i netcfg/get_gateway string $gateway" | $save_preseed
|
[ -n "$gateway" ] && echo "d-i netcfg/get_gateway string $gateway" | $save_preseed
|
||||||
[ -z "${ip%%*:*}" ] && [ -n "${dns%%*:*}" ] && dns='2001:4860:4860::8888 2001:4860:4860::8844'
|
[ -z "${ip%%*:*}" ] && [ -n "${dns%%*:*}" ] && dns="$dns6"
|
||||||
[ -n "$dns" ] && echo "d-i netcfg/get_nameservers string $dns" | $save_preseed
|
[ -n "$dns" ] && echo "d-i netcfg/get_nameservers string $dns" | $save_preseed
|
||||||
echo 'd-i netcfg/confirm_static boolean true' | $save_preseed
|
echo 'd-i netcfg/confirm_static boolean true' | $save_preseed
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[ -z "$ip" ] && {
|
||||||
|
echo "d-i netcfg/get_nameservers string $dns10" | $save_preseed
|
||||||
|
}
|
||||||
|
|
||||||
if [ -n "$hostname" ]; then
|
if [ -n "$hostname" ]; then
|
||||||
echo "d-i netcfg/hostname string $hostname" | $save_preseed
|
echo "d-i netcfg/hostname string $hostname" | $save_preseed
|
||||||
hostname=debian
|
hostname=debian
|
||||||
@@ -762,6 +804,7 @@ d-i partman-partitioning/confirm_write_new_label boolean true
|
|||||||
d-i partman/choose_partition select finish
|
d-i partman/choose_partition select finish
|
||||||
d-i partman/confirm boolean true
|
d-i partman/confirm boolean true
|
||||||
d-i partman/confirm_nooverwrite boolean true
|
d-i partman/confirm_nooverwrite boolean true
|
||||||
|
d-i partman-lvm/device_remove_lvm boolean true
|
||||||
EOF
|
EOF
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -803,6 +846,9 @@ $save_preseed << 'EOF'
|
|||||||
tasksel tasksel/first multiselect ssh-server
|
tasksel tasksel/first multiselect ssh-server
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
|
install="$install ca-certificates libpam-systemd"
|
||||||
|
[ -n "$cidata" ] && install="$install cloud-init"
|
||||||
|
|
||||||
[ -n "$install" ] && echo "d-i pkgsel/include string $install" | $save_preseed
|
[ -n "$install" ] && echo "d-i pkgsel/include string $install" | $save_preseed
|
||||||
[ -n "$upgrade" ] && echo "d-i pkgsel/upgrade select $upgrade" | $save_preseed
|
[ -n "$upgrade" ] && echo "d-i pkgsel/upgrade select $upgrade" | $save_preseed
|
||||||
|
|
||||||
@@ -832,7 +878,14 @@ EOF
|
|||||||
|
|
||||||
[ "$bbr" = true ] && in_target '{ echo "net.core.default_qdisc=fq"; echo "net.ipv4.tcp_congestion_control=bbr"; } > /etc/sysctl.d/bbr.conf'
|
[ "$bbr" = true ] && in_target '{ echo "net.core.default_qdisc=fq"; echo "net.ipv4.tcp_congestion_control=bbr"; } > /etc/sysctl.d/bbr.conf'
|
||||||
|
|
||||||
[ -n "$late_command" ] && echo "d-i preseed/late_command string in-target sh -c '$late_command'" | $save_preseed
|
[ -n "$cidata" ] && in_target 'echo "{ datasource_list: [ NoCloud ], datasource: { NoCloud: { fs_label: ~ } } }" > /etc/cloud/cloud.cfg.d/99_mandate_nocloud.cfg'
|
||||||
|
[ -n "$cidata" ] && in_target 'printf "%s\n%s\n" "policy: disabled" "datasource: NoCloud" > /etc/cloud/ds-identify.cfg'
|
||||||
|
|
||||||
|
late_command='true'
|
||||||
|
[ -n "$in_target_script" ] && late_command="$late_command; in-target sh -c '$in_target_script'"
|
||||||
|
[ -n "$cidata" ] && late_command="$late_command; mkdir -p /target/var/lib/cloud/seed/nocloud; cp -r /cidata/. /target/var/lib/cloud/seed/nocloud/"
|
||||||
|
|
||||||
|
echo "d-i preseed/late_command string $late_command" | $save_preseed
|
||||||
|
|
||||||
[ "$power_off" = true ] && echo 'd-i debian-installer/exit/poweroff boolean true' | $save_preseed
|
[ "$power_off" = true ] && echo 'd-i debian-installer/exit/poweroff boolean true' | $save_preseed
|
||||||
|
|
||||||
@@ -850,6 +903,12 @@ save_grub_cfg='cat'
|
|||||||
gzip -d initrd.gz
|
gzip -d initrd.gz
|
||||||
# cpio reads a list of file names from the standard input
|
# cpio reads a list of file names from the standard input
|
||||||
echo preseed.cfg | cpio -o -H newc -A -F initrd
|
echo preseed.cfg | cpio -o -H newc -A -F initrd
|
||||||
|
|
||||||
|
if [ -n "$cidata" ]; then
|
||||||
|
cp -r "$cidata" cidata
|
||||||
|
find cidata | cpio -o -H newc -A -F initrd
|
||||||
|
fi
|
||||||
|
|
||||||
gzip -1 initrd
|
gzip -1 initrd
|
||||||
|
|
||||||
mkdir -p /etc/default/grub.d
|
mkdir -p /etc/default/grub.d
|
||||||
@@ -870,9 +929,19 @@ EOF
|
|||||||
# shellcheck disable=SC2016
|
# shellcheck disable=SC2016
|
||||||
echo 'zz_debi=/etc/default/grub.d/zz-debi.cfg; if [ -f "$zz_debi" ]; then . "$zz_debi"; fi' >> /etc/default/grub
|
echo 'zz_debi=/etc/default/grub.d/zz-debi.cfg; if [ -f "$zz_debi" ]; then . "$zz_debi"; fi' >> /etc/default/grub
|
||||||
grub_cfg=/boot/grub2/grub.cfg
|
grub_cfg=/boot/grub2/grub.cfg
|
||||||
|
[ -d /sys/firmware/efi ] && grub_cfg=/boot/efi/EFI/*/grub.cfg
|
||||||
grub2-mkconfig -o "$grub_cfg"
|
grub2-mkconfig -o "$grub_cfg"
|
||||||
|
elif command_exists grub-mkconfig; then
|
||||||
|
tmp=$(mktemp)
|
||||||
|
grep -vF zz_debi /etc/default/grub > "$tmp"
|
||||||
|
cat "$tmp" > /etc/default/grub
|
||||||
|
rm "$tmp"
|
||||||
|
# shellcheck disable=SC2016
|
||||||
|
echo 'zz_debi=/etc/default/grub.d/zz-debi.cfg; if [ -f "$zz_debi" ]; then . "$zz_debi"; fi' >> /etc/default/grub
|
||||||
|
grub_cfg=/boot/grub/grub.cfg
|
||||||
|
grub-mkconfig -o "$grub_cfg"
|
||||||
else
|
else
|
||||||
err 'Could not find "update-grub" or "grub2-mkconfig" command'
|
err 'Could not find "update-grub" or "grub2-mkconfig" or "grub-mkconfig" command'
|
||||||
fi
|
fi
|
||||||
|
|
||||||
save_grub_cfg="tee -a $grub_cfg"
|
save_grub_cfg="tee -a $grub_cfg"
|
||||||
|
|||||||
Reference in New Issue
Block a user