以 DHCP 获取 IPV4/IPV6 地址以及无后台 VNC 屏幕举例,支持 bios/efi 引导的小鸡,包括不限于:aws、az、gcp、龟壳、阿里云、腾讯云、等。
1、确定硬盘名称(此处硬盘名称是 vda) [email protected]:~# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS loop0 7:0 0 144.2M 1 loop /snap/lxd/24323 loop1 7:1 0 49.8M 1 loop /snap/snapd/17950 loop2 7:2 0 63.3M 1 loop /snap/core20/1822 vda 252:0 0 9.3G 0 disk ├─vda1 252:1 0 9.2G 0 part / ├─vda14 252:14 0 4M 0 part └─vda15 252:15 0 106M 0 part /boot/efi
2、DD mfslinux 内存救援系统到硬盘(实际上是 OpenWrt 系统,根据 mfslinux 方法,我自己魔改了一个支持 bios/efi 的硬盘镜像实际大小不到 30M) echo 1 > /proc/sys/kernel/sysrq echo u > /proc/sysrq-trigger curl -Lo- “https://drive.google.com/uc?export=download&id=1PsQf5ao-T21EGyh3lZfpxFaL-qsIHA5i” | zcat | dd of=/dev/vda bs=1M status=progress echo 1 > /proc/sys/kernel/sysrq echo b > /proc/sysrq-trigger
3、等待小鸡重启进入 mfslinux 内存救援系统 ssh 地址:你小鸡的地址 支持 DHCP IPV4/IPV6 双栈 ssh 账号:root ssh 密码:mfslinux
4、某吃灰小鸡下载官网 Ubuntu Cloud Image 镜像进行格式转换,qcow2 转 raw,压缩成 gzip 格式,并以 http 方式提供下载(以最新 22.10 举例)
4.1、下载
curl -LO https://cloud-images.ubuntu.com/releases/22.10/release/ubuntu-22.10-server-cloudimg-amd64.img
4.2、转换成 raw 格式(等 1 分钟) qemu-img convert -f qcow2 -O raw ubuntu-22.10-server-cloudimg-amd64.img ubuntu-22.10-server-cloudimg-amd64.raw
4.3、压缩成 gzip 格式(等 1 - 3 分钟) gzip -k ubuntu-22.10-server-cloudimg-amd64.raw
4.4、以 http 方式提供下载
4.4.1、安装 nginx apt -y install nginx
4.4.2、更改 nginx 配置运行访问文件夹目录
4.4.2.1、改配置 nano /etc/nginx/sites-enabled/default
4.4.2.2、找到 root /var/www/html;
4.4.2.3、改成 root /var/www/html; autoindex on; autoindex_exact_size off; autoindex_localtime on;
4.4.2.4、重启 nginx systemctl restart nginx
4.4.2.5、删除原来的默认页面 rm -rf /var/www/html/
4.4.2.6、移动 ubuntu-22.10-server-cloudimg-amd64.raw 到 /var/www/html/ mv -f ubuntu-22.10-server-cloudimg-amd64.raw /var/www/html/
4.4.2.7、获取 ubuntu-22.10-server-cloudimg-amd64.raw.gz 镜像压缩文件的 http 下载地址 http:// 小鸡地址 /ubuntu-22.10-server-cloudimg-amd64.raw.gz
5、DD ubuntu-22.10-server-cloudimg-amd64.raw.gz 镜像压缩文件到小鸡硬盘 curl -Lo- “http:// 小鸡地址 /ubuntu-22.10-server-cloudimg-amd64.raw.gz” | zcat | dd of=/dev/vda bs=1M status=progress
6、修复磁盘 parted -l
6.1、出来提示输入 fix 并回车
7、不需要重启重读硬盘分区 partprobe
8、扩容分区以及文件系统 parted -s /dev/vda resizepart 1 100% e2fsck -f /dev/vda1 resize2fs /dev/vda1
9、挂载 Ubuntu 22.10 系统分区到 /mnt mount /dev/vda1 /mnt
10、确认成功扩容硬盘分区以及文件系统 [email protected]:~# df -h Filesystem Size Used Avail Use% Mounted on tmpfs 97M 884K 96M 1% /run /dev/vda1 8.9G 3.6G 5.3G 41% / tmpfs 483M 0 483M 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 483M 0 483M 0% /run/qemu /dev/vda15 105M 6.1M 99M 6% /boot/efi tmpfs 97M 4.0K 97M 1% /run/user/0 [email protected]:~#
11、更改 ssh 密码、添加 ssh 公钥、设置只允许密钥登录 root 账户
11.1、生成密码 [email protected]:~# openssl passwd -1 mfslinux $1$eBsXTBjL$zFxtamgy9YuaCxoieLTOg1
11.2、更改 ssh 密码 sed -i ‘s/root:*/root:$1$eBsXTBjL$zFxtamgy9YuaCxoieLTOg1/g’ /mnt/etc/shadow
11.3、添加 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
11.4、允许 root 密钥登录 sed -i ‘s/#PermitRootLogin/PermitRootLogin/g’ /mnt/etc/ssh/sshd_config
12、由于 Ubuntu、Debian 云镜像系统没有 ssh_host 密钥无法启动 sshd,所以需要在开机脚本开机的时候生成 ssh_host,否则 sshd 无法运行
12.1、添加开机脚本命令 cat <<EOF> /mnt/etc/rc.local #!/bin/bash /usr/bin/ssh-keygen -A systemctl restart ssh EOF
12.2、给开机脚本添加执行权限,否则无法运行 chmod +x /mnt/etc/rc.local
13、设置网络 DHCP 以及网卡名称(需要获取网卡 mac 地址)
13.1、网卡 mac 地址 [email protected]:~# ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether de:1c:9c:06:60:68 brd ff:ff:ff:ff:ff:ff altname enp0s2 inet 10.69.82.207/31 metric 100 scope global dynamic eth0 valid_lft 75999sec preferred_lft 75999sec inet6 2603:1040:200:3::1/64 scope global valid_lft forever preferred_lft forever inet6 fe80::dc1c:9cff:fe06:6068/64 scope link valid_lft forever preferred_lft forever
13.2、添加 netplan 配置文件 config.yaml 使能够 DHCP 获取 IPV4/IPV6 地址 cat <<EOF> /mnt/etc/netplan/config.yaml network: version: 2 renderer: networkd ethernets: eth0: dhcp4: true dhcp6: true match: macaddress: “de:1c:9c:06:60:68“ set-name: eth0 EOF
14、不使用 DHCP 获取到的 DNS 地址(可选) rm -f /mnt/etc/systemd/system/sysinit.target.wants/systemd-resolved.service rm -f /mnt/etc/systemd/system/dbus-org.freedesktop.resolve1.service 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
重启等 1 分钟启动 ssh 连接……
完成!尽情享受吧!
图文无关 我 DD 的 RHEL 9
|