Amazon Linux 2 为每个受支持的虚拟化平台提供不同的 VM 镜像,如 KVM 、VMware vSphere 、Oracle VirtualBox 、Microsoft Hyper-V 等主流虚拟化平台,便于我们进行本地开发和测试
虚拟化环境:
- Ubuntu 20.04.6 LTS (5.4.0-166-generic)
- libvirt-daemon 6.0
- qemu-system-x86_64 4.2.1
准备启动镜像
启动镜像 seed.iso 包含启动新 VM 所需的初始配置信息,例如网络配置、主机名、用户数据,但不包括 Amazon Linux 2 操作系统文件
要生成 seed.iso ,需准备如下两个配置文件:
meta-data
– 该文件包含虚拟机的主机名、静态网络设置user-data
– 该文件配置用户帐户,并指定其密码、访问机制等系进行。默认情况下,Amazon Linux 2 VM 镜像创建一个默认账号 ec2-user,您可以使用该配置文件来设置默认帐户的密码
创建 meta-data
1、静态配置虚机网络信息
mkdir seedconfig && cd seedconfig
cat > meta-data << EOF
local-hostname: t3
network-interfaces: |
auto eth0
iface eth0 inet static
address 192.168.31.93
network 192.168.31.0
netmask 255.255.255.0
broadcast 192.168.31.255
gateway 192.168.31.1
EOF
创建 user-data
1、设置默认账号 ec2-user 密码为 password@123 ,且该账号具有 sudo 权限
cat > user-data << EOF
#cloud-config
#vim:syntax=yaml
users:
- default
chpasswd:
list: |
ec2-user:password@123
EOF
2、使用 meta-data 和 user-data 创建启动映像 seed.iso
genisoimage -output seed.iso -volid cidata -joliet -rock user-data meta-data
# 转化为 qcow2 格式的镜像,便于虚机创建快照
qemu-img convert -p -f raw -O qcow2 seed.img seed-t3.qcow2
虚机配置 t3.xml
1、创建虚机配置 t3.xml
<domain type='kvm'>
<name>t3</name>
<vcpu>4</vcpu>
<memory>4194304</memory><!-- 4 GB内存。 -->
<cpu mode='host-passthrough'>
</cpu>
<os>
<type arch='x86_64'>hvm</type><!-- 如果是ARM64架构的服务器,则需设置为arch='aarch64'。 -->
<boot dev='hd'/>
</os>
<clock sync="localtime"/>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
<!-- 通过 virsh shutdown 关闭该虚机 -->
<features>
<acpi/>
<apic/>
<pae/>
</features>
<devices>
<emulator>/usr/bin/kvm</emulator><!-- 请根据不同的操作系统设置对应的kvm路径。例如:Ubuntu对应的kvm路径是/usr/bin/kvm。 -->
<disk type='file' device='disk'><!-- 请根据镜像格式设置下面的 type 参数:qcow2 对应 type='qcow2'、vhd 对应 type='vpc'。 -->
<driver name='qemu' type='qcow2' cache='none' dataplane='off' io='native'/> <!-- 如果要创建 qcow2 快照,需要关闭 dataplane。 -->
<source file='/mnt/vm/iso/amzn2-kvm-2.0.20231101.0-x86_64.xfs.gpt.qcow2'/> <!-- 填写 Amazon Linux 2 镜像的绝对路径。 -->
<target dev='vda' bus='virtio'/>
</disk>
<!-- 加入 seed.qcow2 的信息。 -->
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/> <!-- raw 对应磁盘格式 img -->
<source file='/mnt/vm/iso/seed/seed-t3.qcow2'/> <!-- 填写 seed 镜像的绝对路径。 -->
<target dev='vdb' bus='virtio'/>
</disk>
<!-- 虚机网卡配置 -->
<interface type='bridge'>
<source bridge='br1'/> <!-- 桥接到宿主机网络,需先创建网桥 br1 -->
<model type='virtio'/>
</interface>
<console type='pty'>
<target type='virtio' port='0'/>
</console>
<video>
<model type='cirrus' vram='9216' heads='1'/>
<alias name='video0'/>
</video>
<input type='tablet' bus='usb'/>
<input type='mouse' bus='ps2'/>
<!-- 通过 vnc 登录控制台,启用 sshd 服务的密码验证 -->
<graphics type='vnc' port='59093' autoport='no' listen='0.0.0.0'>
<listen type='address' address='0.0.0.0'/>
</graphics>
</devices>
</domain>
创建虚机
1、下载虚机镜像
wget https://cdn.amazonlinux.com/os-images/2.0.20231101.0/kvm/amzn2-kvm-2.0.20231101.0-x86_64.xfs.gpt.qcow2
2、根据如上虚机配置及镜像,启动并连接到新虚拟机 t3
virsh define t3.xml
virsh start t3
3、 编辑 /etc/ssh/sshd_config 开启 sshd 服务密码验证,重启 sshd
PasswordAuthentication yes
4、查看默认运行服务及内核版本
[ec2-user@t3 ~]$ sudo netstat -nltp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 2176/rpcbind
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 2846/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 2556/master
tcp6 0 0 :::111 :::* LISTEN 2176/rpcbind
tcp6 0 0 :::22 :::* LISTEN 2846/sshd
[ec2-user@t3 ~]$ uname -r
4.14.327-246.539.amzn2.x86_64
内核升级
1、将 Amazon Linux 2 默认内核从 4.14.x 升级到 Amazon Linux Extras 内核 5.4.x
# 验证 amazon-linux-extras 存储库提供的内核版本
sudo amazon-linux-extras |grep kernel
#> 49 kernel-5.4 available [ =stable ]
#> 55 kernel-5.10 available [ =stable ]
#> 62 kernel-5.15 available [ =stable ]
sudo amazon-linux-extras install kernel-5.4 -y
2、将 Amazon Linux 2 (Amazon Linux Extras) 内核从 5.4.x 升级到 5.10.x
sudo amazon-linux-extras disable kernel-5.4
sudo amazon-linux-extras install kernel-5.10 -y
3、重启虚机实例,以让新内核生效
Amazon Linux 2023
默认情况下,Amazon Linux 2023 虚拟机映像未预配任何用户密码或 ssh 密钥,并将通过第一个发现的网络接口上的 DHCP 获取其网络配置。这意味着默认情况下,如果没有额外的配置,就无法连接到生成的虚拟机。因此,需要向虚拟机提供某种形式的配置。针对 Amazon Linux 执行此操作的标准机制是通过 cloud-init 数据源。
Amazon Linux 2023 (AL2023) 是一种基于 RPM 的 Linux 通用发行版,也是 Amazon Linux 2 的后继者
从 AL2023 开始,每两年发布一个新的 Amazon Linux 主要版本,包括次要季度版本,并提供五年的长期支持
参考
Run Amazon Linux 2 as a virtual machine on premises
cloud-init configuration for Amazon Linux 2023 on KVM
- 专为容器工作负载设计的社区 Linux 发行版,具有高安全性和低维护成本