全球主机交流论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

CeraNetworks网络延迟测速工具IP归属甄别会员请立即修改密码
查看: 4516|回复: 24

【长文警告!】【教程】DD 官网 Debian 11云镜像到小鸡

  [复制链接]
发表于 2023-3-3 01:16:03 | 显示全部楼层 |阅读模式
本帖最后由 KDE 于 2023-3-19 19:38 编辑

以 DHCP 获取 IPV4/IPV6 地址以及无后台 VNC 屏幕举例,支持 bios/efi 引导的小鸡,包括不限于:aws、az、gcp、龟壳、阿里云、腾讯云、等。

警告!此操作硬盘数据会全部丢失!
警告!此操作硬盘数据会全部丢失!
警告!此操作硬盘数据会全部丢失!


以实际硬盘是 vda举例 可通过 lsblk查看实际硬盘

1、首先给小鸡 DD个 OpenWrt内存系统

echo 1 > /proc/sys/kernel/sysrq
echo u > /proc/sysrq-trigger

curl -Lo- "https://drive.google.com/uc?export=download&id=1cZZlTQaD8ydPAaQYFMSvsDe3HAmqj64Z" | zcat | dd of=/dev/vda bs=1M

echo 1 > /proc/sys/kernel/sysrq
echo b > /proc/sysrq-trigger


2、等待 1-3分钟重启进入 OpenWrt内存系统
ssh地址:你小鸡 IPV4 or IPV6地址
ssh账号:root
ssh密码:hostloc.com


3、DD Debian官方最新系统到小鸡硬盘

3.1、DD原始 raw镜像(2G 不利于网络传输 他不需要解压 CPU占用很小)
curl -Lo- "https://cloud.debian.org/images/cloud/bullseye/latest/debian-11-genericcloud-amd64.raw" | dd of=/dev/vda bs=1M

3.2、DD压缩后的 raw镜像 tar.xz格式(不到200M 网络传输快 CPU占用相对原始 raw镜像较高)
curl -Lo- "https://cloud.debian.org/images/cloud/bullseye/latest/debian-11-genericcloud-amd64.tar.xz" | tar -xJO | dd of=/dev/vda bs=1M

4、DD完之后修复硬盘、重读分区并扩容

4.1、修复硬盘
parted -l

4.1、获取分区表
partprobe

4.2、查看实际硬盘名称
lsblk

4.3、扩容 Debian 11系统分区到最大
parted -s /dev/vda resizepart 1 100%

4.4、扩容 Debian 11系统分区的文件系统到最大
e2fsck -f /dev/vda1
resize2fs /dev/vda1

5、修改 ssh密码、密钥,并允许 ssh以密钥方式登录

5.1、挂载 Debian系统分区到 /mnt目录 并查看硬盘扩容是否成功
mount /dev/vda1 /mnt
df -h

5.2、ssh密码生成(OpenWrt 默认没有安装openssl 可以在别的小鸡生成)
openssl passwd -1 hostloc.com
$1$DiGZGr2m$Ht8S5tfK9oXxLwp6LjPUT0

5.3、修改刚才 Debian的 ssh密码
sed -i 's/root:\*/root:$1$DiGZGr2m$Ht8S5tfK9oXxLwp6LjPUT0/g' /mnt/etc/shadow

5.4、添加 ssh登录公钥(红色部分换成你的公钥)
rm -rf /mnt/root/.ssh/
mkdir /mnt/root/.ssh/
echo "ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAxbMN/h4PR+XVhpdUze/eEwxf5vw1aC0PwVdIwqsYq78A3F0wvwAUN2DuPiDhArfN5HzN6ye1TPCaXhKYZM1wGHrWjFM64XuDT0sDuFVp67rLc9McJ4YAXChNQ51Y8LBss6nHiBDjDl6AobmQ67S2GTODiG3gILdiekluXS+FfaQNSPdfaHZIxTPQc/SuqyZGpSVyW9pSkVXVZn7/EO66+f1jULMt7EjFI8fBQuZlu9oCvodQyz6JMpIYRehZr8XfPaTX84XU9p3PbG9iulMh7yW1okEvGapTnuNTouZDLASAI8BvDXrw2wJiXeQ06dmsHXAfQwf3hzRUc0vFUErC3w== rsa 2048-011123" > /mnt/root/.ssh/authorized_keys
chmod 700 /mnt/root/.ssh/
chmod 600 /mnt/root/.ssh/authorized_keys

5.5、 只允许 root以密钥方式登录 ssh
sed -i 's/#PermitRootLogin/PermitRootLogin/g' /mnt/etc/ssh/sshd_config

6、在开机脚本添加 ssh主机密钥,非常重要!(开机连上 ssh之后就可以删除了,首次需要而已。)
cat <<EOF> /mnt/etc/rc.local
#!/bin/bash
/usr/bin/ssh-keygen -A
systemctl restart ssh
EOF

6.1、给开机脚本添加执行权限 否则无法运行
chmod +x /mnt/etc/rc.local

7、 禁用 cloud-init这就是母鸡给小鸡下发配置的后门
touch /mnt/etc/cloud/cloud-init.disabled

8、IP地址设置 自定义 azure(可选 红色部分改成实际的IP地址和网关)
cat <<EOF>> /mnt/etc/network/interfaces
# eth0
auto eth0
iface eth0 inet static
    address 10.0.0.4/24
    gateway 10.0.0.1
iface eth0 inet6 static
    address 2001:10::4/64
    gateway fe80::1234:5678:9abc
EOF

9、 设置 DNS 并禁止覆盖(可选)
rm -f /mnt/etc/resolv.conf
cat <<EOF> /mnt/etc/resolv.conf
#nameserver 1.1.1.1
#nameserver 1.0.0.1
nameserver 2606:4700:4700::1111
nameserver 2606:4700:4700::1001
EOF
chattr +i /mnt/etc/resolv.conf

10、重启进入新系统……
reboot

补充:

这次的 OpenWrt内存系统镜像 使用 Grub引导 vmlinuz内核 加载 initrd.gz 进入 OpenWrt内存系统
menuentry 'OpenWrt Minimalist in-memory diskless Linux distribution based' {
insmod part_msdos
insmod fat
insmod ext2
set root='(hd0,msdos1)'
linux /vmlinuz
initrd /initrd.gz
}


以下帖子我不再更新 mfslinux镜像 那个帖子的引导方式是 Grub引导 iso镜像
【长文警告!】【教程】DD 官网 Ubuntu 22.10 云镜像到小鸡
https://hostloc.com/thread-1141170-1-1.html

发表于 2023-3-3 05:53:45 | 显示全部楼层
KDE 发表于 2023-3-3 05:44
理论上可行的,找到 grub配置文件 写个启动菜单 然后排第一 重新引导启动进入 OpenWrt内存系统

但是对于 ...

不只是理论上可行,实操也是可行的,而且一个脚本就完成系统重装了,非常便捷,你可以试试
cat << EOF >/boot/Reinstall.sh
#!/bin/bash
rm -f /boot/initrd88.img /boot/vmlinuz88
wget -P /boot/ http://mirror.nsc.liu.se/centos-store/7.2.1511/os/x86_64/images/pxeboot/initrd.img -O /boot/initrd88.img
wget -P /boot/ http://mirror.nsc.liu.se/centos-store/7.2.1511/os/x86_64/images/pxeboot/vmlinuz -O /boot/vmlinuz88
cat << EOFEOF>/etc/grub.d/40_custom
#!/bin/sh
exec tail -n +3 \\\$0
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.
menuentry "VNCInstallCentos8" {
    set root='hd0,msdos1'
    linux16 /boot/vmlinuz88 inst.vnc inst.vncpassword=hostloc.com inst.repo=http://mirror.nsc.liu.se/centos-store/7.2.1511/os/x86_64/ inst.headless ip=dhcp nameserver=1.1.1.1 inst.lang=en_US inst.keymap=us selinux=0
    initrd16 /boot/initrd88.img
}

EOFEOF
grub2-mkconfig -o /boot/grub2/grub.cfg
grub2-reboot VNCInstallCentos8
reboot
EOF

bash /boot/Reinstall.sh
发表于 2023-3-3 02:11:46 | 显示全部楼层
支持大佬技术贴,帮顶
发表于 2023-3-3 03:09:00 | 显示全部楼层
大佬,
你这咋弄嫩复杂呢,
我见人家一键DD弄里简单里很.
 楼主| 发表于 2023-3-3 03:19:30 | 显示全部楼层
【菠萝云】 发表于 2023-3-3 03:09
大佬,
你这咋弄嫩复杂呢,
我见人家一键DD弄里简单里很.


一键脚本就像,给鱼吃,很多人想知道怎么才能抓到鱼。以上内容用 shell脚本也可以写成一键脚本。
发表于 2023-3-3 04:56:07 来自手机 | 显示全部楼层
最少需要多大的内存才能这样搞?
 楼主| 发表于 2023-3-3 05:08:27 | 显示全部楼层
maxkvm 发表于 2023-3-3 04:56
最少需要多大的内存才能这样搞?


512足够了,OpenWrt内存系统镜像25M左右,我估计256也能运行。DD到 U盘还能做个 Linux救援系统
发表于 2023-3-3 05:33:02 | 显示全部楼层
KDE 发表于 2023-3-3 05:08
512足够了,OpenWrt内存系统镜像25M左右,我估计256也能运行。DD到 U盘还能做个 Linux救援系统 ...

其实先dd成openwrt这一步可以省略,有没有试过系统初始化直接加载vmlinuz initrd.img这两个文件来安装新系统?
 楼主| 发表于 2023-3-3 05:44:26 | 显示全部楼层
maxkvm 发表于 2023-3-3 05:33
其实先dd成openwrt这一步可以省略,有没有试过系统初始化直接加载vmlinuz initrd.img这两个文件来安装新 ...

理论上可行的,找到 grub配置文件 写个启动菜单 然后排第一 重新引导启动进入 OpenWrt内存系统

但是对于重装系统来说 这样太麻烦了 直接把 OpenWrt内存系统 DD到硬盘 怎么快怎么来了
发表于 2023-3-3 06:59:53 | 显示全部楼层
技术贴
支持
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|全球主机交流论坛

GMT+8, 2024-4-27 16:20 , Processed in 0.091241 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表