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

50次阅读

共计 4898 个字符,预计需要花费 13 分钟才能阅读完成。

以 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

网友回复:

注册 我没看明白,这个救援为何会用到

正文完
 0