平时习惯了使用Debian,但是OracleCloud提供的系统镜像并没有Debian,可以使用DD方式重新将系统重装成Debian,本实例以Ubuntu为例重装。
重置root密码
使用SSH客户端远程链接到服务器上,修改root账号密码,在shell中执行下面代码:
sudo passwd root输入两遍密码。
打开控制台
依次点击进入 实例 - 操作系统管理 - 启动 Cloud Shell 连接。
运行一键DD脚本
在控制台界面中输入用户名、密码登录系统,然后输入一键DD脚本:
bash <(wget --no-check-certificate -qO- 'https://raw.githubusercontent.com/MoeClub/Note/master/InstallNET.sh') -d 12 -v arm64 -p "root@DMIN123" -port "3333"参数说明:
-d/--debian [dists-name] #重装为debian
-v/--ver [32/i386|64/amd64] #CPU架构
-p [linux password] #系统密码
-port [linux ssh port] #SSH端口

自动下载系统
一键脚本会下载系统镜像相关文件,下载完成后会自动重启。
系统安装
重启后会自动进入Debian系统安装界面,此处也是全自动的,无需干预。
等安装完成,就会看到Debian登录界面。
配置网络
系统安装完只有IPv4地址,IPv6地址需要配置才可以。
输入用户名、密码进入系统,在shell中输入ip a查看网卡名称并复制到记事本中备用,后续会用到,本次示例名称为enp0s6。
停止现有的networking网络配置,在shell中输入如下命令:
systemctl stop networking
systemctl disable networking
继续在shell中输入命令,生成网络配置文件:
cat > /etc/systemd/network/10-oci-enp0s6.network << 'EOF'
[Match]
Name=enp0s6 #注意此处修改为你的网卡名称
[Network]
# IPv4 自动获取
DHCP=yes
# IPv6 核心兼容配置(接受 RA 地址 + 路由)
IPv6AcceptRA=yes
IPv6Autoconf=yes
MTUBytes=9000
[IPv6AcceptRA]
# OCI RA 路由兼容关键
AcceptRouterAdvertisements=2
AcceptDefaultRoute=yes
AcceptPrefixRoute=yes
RouterPriority=100
IgnoreRoutesWithLinkDown=yes
EOF重启网络配置服务,并且允许开机启动,重新加载网络配置,重新获取对应网卡的IP地址和RA路由通告等信息
systemctl restart systemd-networkd
systemctl enable systemd-networkd
networkctl reload
networkctl renew enp0s6 #此处修改你的网卡名称上述命令没有报错的话,就可以使用ip a查看IP地址,这时网卡中就会看到已经获取到IPv6地址了。
使用ip -6 route也可以看到RA通告过来的64位掩码路由
此时还需要配置DNS,才能保证网络连通。
cat > /etc/resolv.conf << 'EOF'
nameserver 169.254.169.254
nameserver 2606:4700:4700::1111
options edns0 trust-ad
search vnet.oraclevcn.com
EOF使用ping命令测试,IPv4和IPv6地址都可以ping通了。
设置NTP时间同步
# 安装时间同步服务
apt install -y systemd-timesyncd
# 立即启用服务并设置开机启动
systemctl enable --now systemd-timesyncd
# 设置通过NTP同步时间
timedatectl set-ntp true
提升利用率
Oracle会对服务器利用率考虑,此处可以利用lookbusy模拟系统使用。
# Inter/AMD架构下载此文件
wget -O /usr/local/bin/lookbusy https://raw.githubusercontent.com/velor2012/lookbusy-docker/main/lookbusy
# ARM架构下载此文件
wget -O /usr/local/bin/lookbusy https://raw.githubusercontent.com/velor2012/lookbusy-docker/main/lookbusy-arm
# 设置可执行权限
chmod +x /usr/local/bin/lookbusy写入开启启动文件
cat > /etc/systemd/system/lookbusy.service << 'EOF'
[Unit]
Description=Lookbusy CPU Keepalive Service
After=network.target multi-user.target
Wants=multi-user.target
[Service]
Type=simple
# 核心命令:CPU占用20%~22%,curve模式让负载更平滑(避免抖动)
ExecStart=/usr/local/bin/lookbusy -c 20-22 -r curve
# 异常退出自动重启(保活关键)
Restart=always
RestartSec=5
# 低优先级运行,不抢占业务资源
Nice=10
# 限制CPU权重(可选,进一步避免影响业务)
CPUSchedulingPolicy=idle
# 输出重定向,避免日志占满磁盘
StandardOutput=null
StandardError=null
[Install]
WantedBy=multi-user.target
EOF
#重载配置
systemctl daemon-reload
#立刻启用服务并设置开机启动
systemctl enable --now lookbusy
使用top或者htop可以查看CPU利用率上来了。
最后填个坑
上面的步骤我在Oracle的arm主机上可以正常运行,但是在AMD的主机上会引导失败,需要处理一下,下面提供一个一键脚本,自己放到服务器上,然后执行这个脚本就可以了。
#!/bin/bash
# 甲骨文云 OCI 专用 Debian DD 脚本(全变量自定义版)
# 核心变量:密码/SSH端口/系统位数/Debian代号/镜像地址,均可自定义
set -e
# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m'
# ===================== 核心配置变量(全部可自定义)=====================
NEW_ROOT_PASSWORD="YourNewRootPassword" # 自定义root密码
SSH_PORT="2222" # 自定义SSH端口(1024-65535)
SYS_ARCH="64" # 系统位数:64(amd64)/32(i386)/arm64 (ARM)
DEBIAN_CODENAME="12" # Debian版本代号
DEBIAN_MIRROR="https://deb.debian.org/debian/" # Debian基础镜像(必以/结尾)
# =====================================================================
# 检查root权限
if [ $EUID -ne 0 ]; then
echo -e "${RED}错误:必须以root用户运行!${NC}"
exit 1
fi
# 检查系统位数合法性
if [[ "$SYS_ARCH" != "64" && "$SYS_ARCH" != "32" ]]; then
echo -e "${RED}错误:系统位数只能是 64 或 32!${NC}"
exit 1
fi
# 检查SSH端口合法性
if ! [[ "$SSH_PORT" =~ ^[0-9]+$ ]] || [ "$SSH_PORT" -lt 1 ] || [ "$SSH_PORT" -gt 65535 ]; then
echo -e "${RED}错误:SSH端口必须是1-65535之间的数字!${NC}"
exit 1
fi
# 1. 安装全量依赖(解决压缩格式/命令缺失)
echo -e "${GREEN}1/8:安装必备依赖...${NC}"
apt update && apt install -y wget curl sudo parted gdisk efibootmgr grub-efi-amd64 \
xz-utils gzip bzip2 zstd file systemd-sysv --no-install-recommends -y
# 2. 修复lowMem函数(解决command not found)
echo -e "${GREEN}2/8:修复内存检测函数...${NC}"
lowMem() {
local MemTotal=$(grep MemTotal /proc/meminfo | awk '{print $2}')
[ "$MemTotal" -lt 1048576 ] && return 0 || return 1
}
export -f lowMem
# 3. 临时替换reboot为shutdown(避免提前重启)
echo -e "${GREEN}3/8:临时替换重启命令...${NC}"
REBOOT_PATH="/usr/sbin/reboot"
[ -f "$REBOOT_PATH" ] && mv "$REBOOT_PATH" "${REBOOT_PATH}.bak"
cat > "$REBOOT_PATH" <<EOF
#!/bin/bash
shutdown -r now "\$@"
EOF
chmod +x "$REBOOT_PATH"
# 4. 用户确认(显示所有配置)
echo -e "\n${YELLOW}⚠️ 警告:将清空系统盘所有数据!${NC}"
echo -e "${YELLOW}📝 配置信息:"
echo -e " - 系统版本:Debian ${DEBIAN_CODENAME} (${SYS_ARCH}位)"
echo -e " - SSH端口:${SSH_PORT}"
echo -e " - Root密码:${NEW_ROOT_PASSWORD}"
echo -e " - 镜像地址:${DEBIAN_MIRROR}${NC}"
read -p "确认执行DD重装吗?(y/N) " confirm
[[ $confirm != [Yy] ]] && {
rm -f "$REBOOT_PATH"
[ -f "${REBOOT_PATH}.bak" ] && mv "${REBOOT_PATH}.bak" "$REBOOT_PATH"
exit 0
}
# 5. 下载官方DD脚本(最新版)
echo -e "${GREEN}4/8:下载DD核心脚本...${NC}"
wget --no-check-certificate -qO InstallNET.sh 'https://moeclub.org/attachment/LinuxShell/InstallNET.sh'
if [ ! -f "InstallNET.sh" ]; then
echo -e "${RED}错误:下载InstallNET.sh失败!${NC}"
rm -f "$REBOOT_PATH"
[ -f "${REBOOT_PATH}.bak" ] && mv "${REBOOT_PATH}.bak" "$REBOOT_PATH"
exit 1
fi
chmod a+x InstallNET.sh
# 6. 执行DD(核心:使用变量传递系统位数 -v $SYS_ARCH)
echo -e "${GREEN}5/8:写入Debian ${DEBIAN_CODENAME} (${SYS_ARCH}位) 镜像...${NC}"
bash InstallNET.sh -d "$DEBIAN_CODENAME" -v "$SYS_ARCH" -a \
--mirror "$DEBIAN_MIRROR" \
-p "$NEW_ROOT_PASSWORD" \
-port "$SSH_PORT"
# 7. 恢复原始reboot + 修复UEFI引导
echo -e "${GREEN}6/8:恢复系统命令并修复引导...${NC}"
rm -f "$REBOOT_PATH"
[ -f "${REBOOT_PATH}.bak" ] && mv "${REBOOT_PATH}.bak" "$REBOOT_PATH"
# 挂载EFI分区(OCI默认/dev/sda1)
mkdir -p /boot/efi
EFI_PARTITION="/dev/sda1"
if ! mount "$EFI_PARTITION" /boot/efi; then
EFI_PARTITION=$(blkid | grep 'EFI System Partition' | awk -F: '{print $1}')
mount "$EFI_PARTITION" /boot/efi
fi
# 重装GRUB引导
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=debian --recheck --force
update-grub
# 删除旧Ubuntu引导项
efibootmgr | grep -i ubuntu | awk '{print $1}' | sed 's/Boot//g' | xargs -I {} efibootmgr -b {} -B >/dev/null 2>&1 || true
# 8. 开放SSH端口
echo -e "${GREEN}7/8:配置防火墙开放SSH端口...${NC}"
if command -v ufw &>/dev/null; then
ufw allow "$SSH_PORT"/tcp
ufw reload
else
iptables -A INPUT -p tcp --dport "$SSH_PORT" -j ACCEPT
iptables-save > /etc/iptables/rules.v4
fi
# 完成提示 + 重启
echo -e "\n${GREEN}8/8:所有操作完成!${NC}"
echo -e "${YELLOW}✅ Debian ${DEBIAN_CODENAME} (${SYS_ARCH}位) DD完成,UEFI引导已修复"
echo -e "${YELLOW}🔑 登录信息:root / ${NEW_ROOT_PASSWORD}"
echo -e "${YELLOW}🔌 SSH端口:${SSH_PORT}(需开放甲骨文安全组)"
echo -e "${YELLOW}🔄 30秒后自动重启...${NC}"
sleep 30
shutdown -r now
评论 (0)
评论已关闭