【Linux-搞机】阿里云添加麒麟V10x86架构的镜像
- 内容介绍
- 文章标签
- 相关推荐
1. 背景
两年前,由于项目上国产化的推进,很多项目现场需要我们适配国产化系统。公司为了节约成本进行测试,需要我提供国产化机器并测试我们的系统并调优。
要知道,在云平台,单单是使用单个国产化的镜像就需要300¥/月,而我们的系统需要大集群支持,累计的镜像成本无疑是一笔巨额的开支。
第一次接到这个任务是要求的arm的国产系统系统,后面再次接到该任务需要x86的,过程是差不多的,所以我写了文档记录了过程并分享,希望能够帮助到需要“解决成本”的你。
2. 下载镜像包上传对象存储
如何安装配置ossutil?
Linux服务器上传文件到阿里云oss对象存储的两种方法ossutil、curl
阿里云-安装ossutil
AMD64版本:
https://iso.kylinos.cn/web_pungi/download/cdn/9D2GPNhvxfsF3BpmRbJjlKu0dowkAc4i/Kylin-Server-V10-SP3-2403-Release-20240426-x86_64.iso
海光64版本:
https://iso.kylinos.cn/web_pungi/download/cdn/9D2GPNhvxfsF3BpmRbJjlKu0dowkAc4i/Kylin-Server-V10-SP3-2403-Release-20240426-x86_64.iso
上传AMD64版本:
D:\Virtualtools\ossutil-v1.7.19-windows-amd64>ossutil cp D:\Virtualmachines\Kylin-Server-V10-SP3-2403-Release-20240426-x86_64_amd.iso oss://images -c D:\Virtualtools\ossutil-v1.7.19-windows-amd64\shanghaiconfig
ossutil cp D:\Virtualmachines\Kylin-Server-V10-SP3-2403-Release-20240426-x86_64_amd.iso oss://juphoon-images -c D:\Virtualtools\ossutil-v1.7.19-windows-amd64\shanghaiconfig
上传海光64版本:
D:\Virtualtools\ossutil-v1.7.19-windows-amd64>ossutil cp D:\Virtualmachines\Kylin-Server-V10-SP3-2403-Release-20240426-x86_64_haiguang.iso oss://images -c D:\Virtualtools\ossutil-v1.7.19-windows-amd64shanghaiconfig
ossutil cp D:\Virtualmachines\Kylin-Server-V10-SP3-2403-Release-20240426-x86_64_haiguang.iso oss://juphoon-images -c D:\Virtualtools\ossutil-v1.7.19-windows-amd64\shanghaiconfig
3. 系统刻盘
先用oss创建自定义镜像,利用该镜像创建实例并额外挂载一块数据盘,注意系统盘和数据盘创建的时候都设置成不随实例释放(方便后面卸载);
进入系统安装系统,将系统安装在数据盘中。
image1920×1224 173 KB
账号:root
密码:xxxxxxxxxxxxx
安装成功后直接关机这个实例,卸载他的系统盘和数据盘,改名字或者打个标签以免找不到了。
随便创建一个centos的实例,挂载这两个盘,使用dd命令将额外挂载的数据盘数据全部写入到额外挂载的系统盘中
[root@iZuf6g3ivu81z9d7fpldmcZ ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda 253:0 0 40G 0 disk
└─vda1 253:1 0 40G 0 part /
vdb 253:16 0 40G 0 disk
├─vdb1 253:17 0 1G 0 part
└─vdb2 253:18 0 39G 0 part
vdc 253:32 0 40G 0 disk
├─vdc1 253:33 0 4.4G 0 part
└─vdc2 253:34 0 8.9M 0 part
# vdb是额外的数据盘,vdc是额外的系统盘
[root@iZuf6g3ivu81z9d7fpldmcZ ~]# dd if=/dev/vdb of=/dev/vdc bs=1M status=progress
42909827072 bytes (43 GB) copied, 451.840663 s, 95.0 MB/s
40960+0 records in
40960+0 records out
42949672960 bytes (43 GB) copied, 454.86 s, 94.4 MB/s
[root@iZuf6g3ivu81z9d7fpldmcZ ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda 253:0 0 40G 0 disk
└─vda1 253:1 0 40G 0 part /
vdb 253:16 0 40G 0 disk
├─vdb1 253:17 0 1G 0 part
└─vdb2 253:18 0 39G 0 part
vdc 253:32 0 40G 0 disk
├─vdc1 253:33 0 1G 0 part
└─vdc2 253:34 0 39G 0 part
将系统盘挂回去麒麟v10的机器,释放centos机器并且释放磁盘。
4. 优化系统适配阿里云
4.1. 设置系统网络默认为eth0
- 修改网卡名
使用ifconfig查看需要修改的网卡名称(以enp1s0为例),在/etc/sysconfig/network-scripts/ 下找到ifcfg-ens6 文件,使用如下命令修改文件名
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# ls
ifcfg-ens6
[root@localhost network-scripts]# mv ifcfg-ens6 ifcfg-eth0
[root@localhost network-scripts]# vi ifcfg-eth0
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=eth0
UUID=4848f4cb-fe18-4ac3-ba67-6079a14459ad
DEVICE=eth0
ONBOOT=yes
[root@localhost network-scripts]# ip a s
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: ens6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:16:3e:06:56:0c brd ff:ff:ff:ff:ff:ff
inet 172.24.183.83/20 brd 172.24.191.255 scope global dynamic noprefixroute ens6
valid_lft 315359922sec preferred_lft 315359922sec
inet6 fe80::3c81:7247:acac:79dc/64 scope link noprefixroute
valid_lft forever preferred_lft forever
- 修改规则
在/etc/udev/rules.d 下找到规则文件 75-network.rules (如果没有就新建)
修改内容如下:
"00:16:3e:06:56:0c"替换成你自己ip a s中"00:16:3e:06:56:0c"的值。
[root@localhost network-scripts]# cd /etc/udev/rules.d
[root@localhost rules.d]# vi 75-network.rules
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="00:16:3e:06:56:0c", NAME="eth0"
其中ATTR后面的值为ens6网卡对应的MAC地址,NAME后面的值为要修改后的网卡名称。
- 配置镜像生成实例采用eth0
编辑 grub 配置文件
# 为GRUB_CMDLINE_LINUX变量增加2个参数,具体内容如下:
# net.ifnames=0 biosdevname=0
[root@localhost rules.d]# vi /etc/sysconfig/grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="resume=/dev/mapper/klas-swap rd.lvm.lv=klas/root rd.lvm.lv=klas/swap rhgb quiet crashkernel=1024M,high audit=0 net.ifnames=0 biosdevname=0"
GRUB_DISABLE_RECOVERY="true"
重新生成 grub 配置文件
# UEFI启动模式
sudo grub2-mkconfig -o /boot/efi/EFI/kylin/grub.cfg
# BIOS(Legacy)启动模式(我这里是BIOS)
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
重启连接查看网卡
[root@localhost ~]# ip a s
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 fq_codel state UP group default qlen 1000
link/ether 00:16:3e:06:56:0c brd ff:ff:ff:ff:ff:ff
inet 172.24.183.83/20 brd 172.24.191.255 scope global dynamic noprefixroute eth0
valid_lft 315359940sec preferred_lft 315359940sec
inet6 fe80::3c81:7247:acac:79dc/64 scope link noprefixroute
valid_lft forever preferred_lft forever
4.2. 安装cloud-init
参考:
阿里云文档-制作Linux镜像文件
阿里云文档-安装cloud-init
- 确保源服务器已安装Python PIP依赖库。
以安装Python3-pip依赖库为例,Linux部分发行版的安装命令如下。
CentOS/Red Hat Enterprise Linux Ubuntu/DebianOpenSUSE/SUSE
yum和wget前先确保该服务器已经开通公网
sudo yum -y install python3-pip
- 运行以下命令下载阿里云版cloud-init。
wget https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/cloud-init-19.1.21.tgz
- 运行以下命令解压cloud-init安装包到当前目录。
tar -zxvf cloud-init-19.1.21.tgz
- 进入cloud-init目录下,并安装依赖库。
cd ./cloud-init-19.1.21
pip3 install -r ./requirements.txt
这里可能会报错,就是下的太慢了,timeout了,重新在下一下就好了pip3 install -r ./requirements.txt
- 进入cloud-init的tools目录。
cd ./tools
- 运行以下命令执行安装cloud-init的脚本deploy.sh。
说明:
麒麟v10版本是基于CentOS8基础上构建,并且官方无麒麟版本安装,所以指定centos 8进行安装
# sudo bash ./deploy.sh <issue> <major_version>
bash ./deploy.sh centos 8
确认cloud-init是否安装成功。
若返回"description": "success" ,表示安装成功。
4.3. 安装virtio驱动
为避免部分服务器、虚拟机或者云主机的操作系统在导入自定义镜像后,创建的ECS实例无法启动,您需要在导入镜像前检查是否需要在源服务器中安装virtio驱动。
检查服务器内核是否支持virtio驱动
运行以下命令,检查当前操作系统内核是否支持virtio驱动,以判断是否需要为自定义镜像安装virtio驱动或将virtio驱动添加到临时文件系统。
grep -i virtio /boot/config-$(uname -r)
image1864×847 185 KB
根据回显信息判断:
根据输出信息中的参数CONFIG_VIRTIO_BLK 和CONFIG_VIRTIO_NET 的取值判断:
- 取值均为 y :已正确安装virtio驱动,可直接执行相关文档。
- 没有这两个参数 :未安装virtio驱动,需要手动安装。具体操作,请参见安装virtio驱动。
取值均为 m /取值一个为y一个为m :支持virtio驱动,还需运行以下命令,判断virtio驱动是否已添加到临时文件系统。
-
取值均为 m :运行以下命令,判断virtio驱动是否已添加到临时文件系统。
-
取值一个为y一个为m :为y的驱动已经编译到内核中且正确安装,还需运行以下命令,判断为m的virtio驱动是否已添加到临时文件系统。
-
CentOS系列 Ubuntu/Debian系列
lsinitrd /boot/initramfs-$(uname -r).img | grep virtio
image1920×160 119 KB
- 如上图所示,表示virtio驱动已经添加到临时文件系统中,可直接执行相关文档。
- 否则,需将virtio驱动添加到临时文件系统。如果
CONFIG_VIRTIO_BLK和CONFIG_VIRTIO_NET参数的取值一个为y一个为m ,则只需要判断取值为m 的驱动是否已添加到临时文件系统。
参考文档:
阿里云文档-如何为已有自定义镜像安装NVMe驱动?
安装NVMe驱动
a. 运行以下命令,查看系统内核是否已经加载了NVMe驱动。
cat /boot/config-`uname -r` | grep -i nvme | grep -v "^#"
image1920×760 167 KB
已经加载
b. 运行以下命令,查看initramfs中是否包含NVMe驱动。
sudo lsinitrd /boot/initramfs-`uname -r`.img | grep -i nvme | awk '{print $NF}'
image2836×336 138 KB
不包含
c. 依次运行以下命令,使initramfs支持NVMe驱动。
mkdir -p /etc/dracut.conf.d
echo 'add_drivers+=" nvme nvme-core "' | sudo tee /etc/dracut.conf.d/nvme.conf > /dev/null
sudo dracut -v -f
d. 在GRUB中添加NVMe相关的io_timeout 参数。
按i键进入编辑模式,在GRUB_CMDLINE_LINUX= 一行中,添加nvme_core.io_timeout=4294967295 nvme_core.admin_timeout=4294967295 参数信息。
sudo vi /etc/default/grub
[root@iZuf6hwfrhipchovcflmzwZ ~]# cat /etc/default/grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="resume=/dev/mapper/klas-swap rd.lvm.lv=klas/root rd.lvm.lv=klas/swap rhgb quiet crashkernel=1024M,high audit=0 net.ifnames=0 biosdevname=0 nvme_core.io_timeout=4294967295 nvme_core.admin_timeout=4294967295"
GRUB_DISABLE_RECOVERY="true"
e. 运行以下命令,使配置的GRUB生效。
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
f. 重新运行以下命令,查看是否有NVMe相关的返回信息。
sudo lsinitrd /boot/initramfs-`uname -r`.img | grep -i nvme | awk '{print $NF}'
image1920×254 150 KB
好了
4.4. 安装growpart包
安装growpart包使镜像支持在线扩容文件系统,安装后在初始化时会将根分区及文件系统扩容,扩容至实际的系统盘大小。更多信息请参见扩容分区和文件系统(Linux) 。
yum -y install cloud-utils-growpart.x86_64
4.5. 安装云助手客户端
参考:阿里云文档-在ECS实例中安装云助手Agent
云助手是专为云服务器ECS打造的原生自动化运维工具,阿里云建议您为镜像安装云助手服务,实现云上ECS高效运维
sudo wget "https://aliyun-client-assist.oss-accelerate.aliyuncs.com/linux/aliyun_assist_latest.rpm"
sudo rpm -ivh --force aliyun_assist_latest.rpm
4.6. 安装云安全中心Agent
参考文档:阿里云文档-安装云安全中心客户端
安装云安全中心的Agent插件后,您的服务器才能受到云安全中心的保护。
- 操作步骤
- 登录云安全中心控制台。在左侧导航栏,选择系统配置 > 功能设置。
- 在客户端页签的未安装客户端子页签下的待安装Agent的服务器列表,单击要安装Agent的服务器操作列的安装客户端,为该服务器安装Agent。
- 您也可以选中多台服务器,单击左下角 一键安装,批量安装Agent。
- Agent插件安装完成约5分钟后,您即可在 资产中心 > 主机资产页面的服务器页签下,查看服务器的 客户端在线情况。已安装Agent的服务器 客户端列的 客户端离线图标会变为 客户端在线图标,表示该服务器已受到云安全中心的安全防护。
image1920×985 167 KB
- 操作命令(我在控制台装的,就没用下面的命令了)
wget "https://update2.aegis.aliyun.com/download/install/2.0/linux/AliAqsInstall.sh" && chmod +x AliAqsInstall.sh && ./AliAqsInstall.sh -k=bE**** -r
4.7. 系统配置
参考文档:
阿里云文档-阿里云镜像规范(Linux)
- 配置时钟
timedatectl status
timedatectl set-local-rtc 0
- 配置SSHD服务
在制作镜像过程中,需要配置SSHD服务。
SSHD服务是Linux系统中的一个服务,用于远程登录和管理Linux系统。SSHD服务通常使用SSH协议(Secure Shell)进行加密通信,以保证远程登录的安全性。修改/etc/ssh/sshd_config 中的配置示例如下:
UseDNS no
AddressFamily inet
SyslogFacility AUTHPRIV
PermitRootLogin yes
PasswordAuthentication yes
- 配置Chrony/NTP服务
在制作镜像过程中,建议您配置Chrony服务或者NTP服务,配置其中一个服务即可。
Chrony和NTP都是用于同步计算机时钟的网络协议,可以确保时钟同步,以避免时间误差导致的问题。示例命令如下:
chrony_file=/etc/chrony.conf
cat >$chrony_file <<EOF
# Use Alibaba NTP server
# Public NTP
# Alicloud NTP
server ntp.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst
server ntp.aliyun.com minpoll 4 maxpoll 10 iburst
server ntp1.aliyun.com minpoll 4 maxpoll 10 iburst
server ntp1.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst
server ntp10.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst
server ntp11.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst
server ntp12.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst
server ntp2.aliyun.com minpoll 4 maxpoll 10 iburst
server ntp2.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst
server ntp3.aliyun.com minpoll 4 maxpoll 10 iburst
server ntp3.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst
server ntp4.aliyun.com minpoll 4 maxpoll 10 iburst
server ntp4.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst
server ntp5.aliyun.com minpoll 4 maxpoll 10 iburst
server ntp5.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst
server ntp6.aliyun.com minpoll 4 maxpoll 10 iburst
server ntp6.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst
server ntp7.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst
server ntp8.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst
server ntp9.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst
# Ignore stratum in source selection.
stratumweight 0.05
# Record the rate at which the system clock gains/losses time.
driftfile /var/lib/chrony/drift
# Enable kernel RTC synchronization.
rtcsync
# In first three updates step the system clock instead of slew
# if the adjustment is larger than 10 seconds.
makestep 10 3
# Allow NTP client access from local network.
#allow 192.168/16
# Listen for commands only on localhost.
bindcmdaddress 127.0.0.1
bindcmdaddress ::1
# Disable logging of client accesses.
noclientlog
# Send a message to syslog if a clock adjustment is larger than 0.5 seconds.
logchange 0.5
logdir /var/log/chrony
#log measurements statistics tracking
EOF
- 配置MOTD服务
在制作镜像过程中,建议您配置MOTD(Message of the Day)服务。
MOTD服务是Linux系统中的一项功能,它可以在用户登录到系统后显示一条欢迎信息或者系统公告。示例命令如下:
echo -e "\nWelcome to Alibaba Cloud Elastic Compute Service ! \n" > /etc/motd
- 关闭Firewalld服务
在制作镜像过程中,建议您关闭Firewalld服务。Firewalld是一种在Linux系统中管理防火墙规则的服务,云上有安全组做安全防护,您可以关闭防火墙。示例命令如下:
systemctl disable firewalld --now
- 配置PIP源
如果系统存在PIP源配置,推荐使用阿里云的PIP源地址,以便从阿里云的源中获取到最新的软件包。配置~/.pip/pip.conf 文件的内容如下:
[global]
index-url=http://mirrors.cloud.aliyuncs.com/pypi/simple/
[install]
trusted-host=mirrors.cloud.aliyuncs.com
- 配置sysctl
在制作镜像过程中,建议您配置sysctl参数,便于调整和优化Linux内核的运行参数。
修改/etc/sysctl.conf 内容如下。
阿里云建议配置
vm.swappiness = 0
kernel.sysrq = 1
net.ipv4.neigh.default.gc_stale_time = 120
net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_announce = 2
net.ipv4.tcp_max_tw_buckets = 5000
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 1024
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_slow_start_after_idle = 0
实际配置
[root@localhost ~]# cat /etc/sysctl.conf
# sysctl settings are defined through files in
# /usr/lib/sysctl.d/, /run/sysctl.d/, and /etc/sysctl.d/.
#
# Vendors settings live in /usr/lib/sysctl.d/.
# To override a whole file, create a new file with the same in
# /etc/sysctl.d/ and put new settings there. To override
# only specific settings, add a file with a lexically later
# name in /etc/sysctl.d/ and put new settings there.
#
# For more information, see sysctl.conf(5) and sysctl.d(5).
# kernel.sysrq=0
net.ipv4.ip_forward=0
net.ipv4.conf.all.send_redirects=0
net.ipv4.conf.default.send_redirects=0
net.ipv4.conf.all.accept_source_route=0
net.ipv4.conf.default.accept_source_route=0
net.ipv4.conf.all.accept_redirects=0
net.ipv4.conf.default.accept_redirects=0
net.ipv4.conf.all.secure_redirects=0
net.ipv4.conf.default.secure_redirects=0
net.ipv4.icmp_echo_ignore_broadcasts=1
net.ipv4.icmp_ignore_bogus_error_responses=1
net.ipv4.conf.all.rp_filter=1
net.ipv4.conf.default.rp_filter=1
net.ipv4.tcp_syncookies=1
kernel.dmesg_restrict=1
net.ipv6.conf.all.accept_redirects=0
net.ipv6.conf.default.accept_redirects=0
# modified
kernel.sysrq=1
# newconfig
vm.swappiness=0
内核参数相关解释
sysctl -p 命令使内核参数修改生效。
- 关闭selinux
setenforce 0
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
- 关闭系统限制
vi /etc/security/limits.conf
* soft nofile 1048576
* hard nofile 1048576
* soft nproc 100000
* hard nproc 100000
* soft core unlimited
修改前
[root@localhost ~]# ulimit -a
core file size (blocks, -c) unlimited
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 7422
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 7422
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
修改后
[root@iZuf6hwfrhipchovcflmzwZ ~]# ulimit -a
core file size (blocks, -c) unlimited
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 7422
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 1048576
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 100000
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
- 修改密码安全策略
[root@localhost ~]# cd /etc/security
[root@localhost security]# cp pwquality.conf pwquality.conf.bak
# 原有配置
[root@localhost security]# grep -v "#" pwquality.conf
minlen = 8
dcredit = 0
ucredit = 0
lcredit = 0
ocredit = 0
minclass = 3
palindrome
# 修改后配置
[root@localhost security]# grep -v "#" pwquality.conf
minlen = 6 # 将密码的最小长度设置为 6 个字符
dcredit = 0 # 不强制要求数字
ucredit = 0 # 不强制要求大写字母
lcredit = 0 # 不强制要求小写字母
ocredit = 0 # 不强制要求特殊字符
minclass = 0 # 不强制要求不同类型的字符
usercheck = 0 # 不检查密码中是否含有用户名
palindrome # 禁止使用回文密码
- 清空历史命令
history -c
5. 最终镜像
最后将该实例关机,创建成新的镜像,上传oss方便下载或其他环境使用
6. 参考文档
- 创建虚拟机并安装Linux操作系统
安装麒麟Kylin-v10 Arm64版本到阿里云
qemu虚拟机 安装银河麒麟V10 arm架构系统 桌面版
win10安装,qemu虚拟机,搭建麒麟操作系统开发环境
阿里云-创建虚拟机并安装Linux操作系统
- 自定义镜像-阿里云规范
阿里云文档-阿里云镜像规范(Linux)
VirtualBox 制作自定义的阿里云镜像方法
阿里云-安装cloud-init
阿里云-安装virtio驱动
- 工具
Linux服务器上传文件到阿里云oss对象存储的两种方法ossutil、curl
阿里云-安装ossutil
网友解答:--【壹】--:
在2027前赶紧学习了,不然到时找不到应对
--【贰】--:
这篇文章可能大部分读者都用不上,也不会去关心作者写了什么。但我相信有一天,一个像两年前的我那样到处找资料完成"云平台自制镜像"任务的朋友会惊喜的在本站发现这么一篇文章。
--【叁】--:
插个眼,业务相关经常装/重装各种国产类unix系统。我在想可不可以上层统一管理一下,一次直接搞一批机器。
1. 背景
两年前,由于项目上国产化的推进,很多项目现场需要我们适配国产化系统。公司为了节约成本进行测试,需要我提供国产化机器并测试我们的系统并调优。
要知道,在云平台,单单是使用单个国产化的镜像就需要300¥/月,而我们的系统需要大集群支持,累计的镜像成本无疑是一笔巨额的开支。
第一次接到这个任务是要求的arm的国产系统系统,后面再次接到该任务需要x86的,过程是差不多的,所以我写了文档记录了过程并分享,希望能够帮助到需要“解决成本”的你。
2. 下载镜像包上传对象存储
如何安装配置ossutil?
Linux服务器上传文件到阿里云oss对象存储的两种方法ossutil、curl
阿里云-安装ossutil
AMD64版本:
https://iso.kylinos.cn/web_pungi/download/cdn/9D2GPNhvxfsF3BpmRbJjlKu0dowkAc4i/Kylin-Server-V10-SP3-2403-Release-20240426-x86_64.iso
海光64版本:
https://iso.kylinos.cn/web_pungi/download/cdn/9D2GPNhvxfsF3BpmRbJjlKu0dowkAc4i/Kylin-Server-V10-SP3-2403-Release-20240426-x86_64.iso
上传AMD64版本:
D:\Virtualtools\ossutil-v1.7.19-windows-amd64>ossutil cp D:\Virtualmachines\Kylin-Server-V10-SP3-2403-Release-20240426-x86_64_amd.iso oss://images -c D:\Virtualtools\ossutil-v1.7.19-windows-amd64\shanghaiconfig
ossutil cp D:\Virtualmachines\Kylin-Server-V10-SP3-2403-Release-20240426-x86_64_amd.iso oss://juphoon-images -c D:\Virtualtools\ossutil-v1.7.19-windows-amd64\shanghaiconfig
上传海光64版本:
D:\Virtualtools\ossutil-v1.7.19-windows-amd64>ossutil cp D:\Virtualmachines\Kylin-Server-V10-SP3-2403-Release-20240426-x86_64_haiguang.iso oss://images -c D:\Virtualtools\ossutil-v1.7.19-windows-amd64shanghaiconfig
ossutil cp D:\Virtualmachines\Kylin-Server-V10-SP3-2403-Release-20240426-x86_64_haiguang.iso oss://juphoon-images -c D:\Virtualtools\ossutil-v1.7.19-windows-amd64\shanghaiconfig
3. 系统刻盘
先用oss创建自定义镜像,利用该镜像创建实例并额外挂载一块数据盘,注意系统盘和数据盘创建的时候都设置成不随实例释放(方便后面卸载);
进入系统安装系统,将系统安装在数据盘中。
image1920×1224 173 KB
账号:root
密码:xxxxxxxxxxxxx
安装成功后直接关机这个实例,卸载他的系统盘和数据盘,改名字或者打个标签以免找不到了。
随便创建一个centos的实例,挂载这两个盘,使用dd命令将额外挂载的数据盘数据全部写入到额外挂载的系统盘中
[root@iZuf6g3ivu81z9d7fpldmcZ ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda 253:0 0 40G 0 disk
└─vda1 253:1 0 40G 0 part /
vdb 253:16 0 40G 0 disk
├─vdb1 253:17 0 1G 0 part
└─vdb2 253:18 0 39G 0 part
vdc 253:32 0 40G 0 disk
├─vdc1 253:33 0 4.4G 0 part
└─vdc2 253:34 0 8.9M 0 part
# vdb是额外的数据盘,vdc是额外的系统盘
[root@iZuf6g3ivu81z9d7fpldmcZ ~]# dd if=/dev/vdb of=/dev/vdc bs=1M status=progress
42909827072 bytes (43 GB) copied, 451.840663 s, 95.0 MB/s
40960+0 records in
40960+0 records out
42949672960 bytes (43 GB) copied, 454.86 s, 94.4 MB/s
[root@iZuf6g3ivu81z9d7fpldmcZ ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda 253:0 0 40G 0 disk
└─vda1 253:1 0 40G 0 part /
vdb 253:16 0 40G 0 disk
├─vdb1 253:17 0 1G 0 part
└─vdb2 253:18 0 39G 0 part
vdc 253:32 0 40G 0 disk
├─vdc1 253:33 0 1G 0 part
└─vdc2 253:34 0 39G 0 part
将系统盘挂回去麒麟v10的机器,释放centos机器并且释放磁盘。
4. 优化系统适配阿里云
4.1. 设置系统网络默认为eth0
- 修改网卡名
使用ifconfig查看需要修改的网卡名称(以enp1s0为例),在/etc/sysconfig/network-scripts/ 下找到ifcfg-ens6 文件,使用如下命令修改文件名
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# ls
ifcfg-ens6
[root@localhost network-scripts]# mv ifcfg-ens6 ifcfg-eth0
[root@localhost network-scripts]# vi ifcfg-eth0
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=eth0
UUID=4848f4cb-fe18-4ac3-ba67-6079a14459ad
DEVICE=eth0
ONBOOT=yes
[root@localhost network-scripts]# ip a s
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: ens6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:16:3e:06:56:0c brd ff:ff:ff:ff:ff:ff
inet 172.24.183.83/20 brd 172.24.191.255 scope global dynamic noprefixroute ens6
valid_lft 315359922sec preferred_lft 315359922sec
inet6 fe80::3c81:7247:acac:79dc/64 scope link noprefixroute
valid_lft forever preferred_lft forever
- 修改规则
在/etc/udev/rules.d 下找到规则文件 75-network.rules (如果没有就新建)
修改内容如下:
"00:16:3e:06:56:0c"替换成你自己ip a s中"00:16:3e:06:56:0c"的值。
[root@localhost network-scripts]# cd /etc/udev/rules.d
[root@localhost rules.d]# vi 75-network.rules
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="00:16:3e:06:56:0c", NAME="eth0"
其中ATTR后面的值为ens6网卡对应的MAC地址,NAME后面的值为要修改后的网卡名称。
- 配置镜像生成实例采用eth0
编辑 grub 配置文件
# 为GRUB_CMDLINE_LINUX变量增加2个参数,具体内容如下:
# net.ifnames=0 biosdevname=0
[root@localhost rules.d]# vi /etc/sysconfig/grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="resume=/dev/mapper/klas-swap rd.lvm.lv=klas/root rd.lvm.lv=klas/swap rhgb quiet crashkernel=1024M,high audit=0 net.ifnames=0 biosdevname=0"
GRUB_DISABLE_RECOVERY="true"
重新生成 grub 配置文件
# UEFI启动模式
sudo grub2-mkconfig -o /boot/efi/EFI/kylin/grub.cfg
# BIOS(Legacy)启动模式(我这里是BIOS)
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
重启连接查看网卡
[root@localhost ~]# ip a s
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 fq_codel state UP group default qlen 1000
link/ether 00:16:3e:06:56:0c brd ff:ff:ff:ff:ff:ff
inet 172.24.183.83/20 brd 172.24.191.255 scope global dynamic noprefixroute eth0
valid_lft 315359940sec preferred_lft 315359940sec
inet6 fe80::3c81:7247:acac:79dc/64 scope link noprefixroute
valid_lft forever preferred_lft forever
4.2. 安装cloud-init
参考:
阿里云文档-制作Linux镜像文件
阿里云文档-安装cloud-init
- 确保源服务器已安装Python PIP依赖库。
以安装Python3-pip依赖库为例,Linux部分发行版的安装命令如下。
CentOS/Red Hat Enterprise Linux Ubuntu/DebianOpenSUSE/SUSE
yum和wget前先确保该服务器已经开通公网
sudo yum -y install python3-pip
- 运行以下命令下载阿里云版cloud-init。
wget https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/cloud-init-19.1.21.tgz
- 运行以下命令解压cloud-init安装包到当前目录。
tar -zxvf cloud-init-19.1.21.tgz
- 进入cloud-init目录下,并安装依赖库。
cd ./cloud-init-19.1.21
pip3 install -r ./requirements.txt
这里可能会报错,就是下的太慢了,timeout了,重新在下一下就好了pip3 install -r ./requirements.txt
- 进入cloud-init的tools目录。
cd ./tools
- 运行以下命令执行安装cloud-init的脚本deploy.sh。
说明:
麒麟v10版本是基于CentOS8基础上构建,并且官方无麒麟版本安装,所以指定centos 8进行安装
# sudo bash ./deploy.sh <issue> <major_version>
bash ./deploy.sh centos 8
确认cloud-init是否安装成功。
若返回"description": "success" ,表示安装成功。
4.3. 安装virtio驱动
为避免部分服务器、虚拟机或者云主机的操作系统在导入自定义镜像后,创建的ECS实例无法启动,您需要在导入镜像前检查是否需要在源服务器中安装virtio驱动。
检查服务器内核是否支持virtio驱动
运行以下命令,检查当前操作系统内核是否支持virtio驱动,以判断是否需要为自定义镜像安装virtio驱动或将virtio驱动添加到临时文件系统。
grep -i virtio /boot/config-$(uname -r)
image1864×847 185 KB
根据回显信息判断:
根据输出信息中的参数CONFIG_VIRTIO_BLK 和CONFIG_VIRTIO_NET 的取值判断:
- 取值均为 y :已正确安装virtio驱动,可直接执行相关文档。
- 没有这两个参数 :未安装virtio驱动,需要手动安装。具体操作,请参见安装virtio驱动。
取值均为 m /取值一个为y一个为m :支持virtio驱动,还需运行以下命令,判断virtio驱动是否已添加到临时文件系统。
-
取值均为 m :运行以下命令,判断virtio驱动是否已添加到临时文件系统。
-
取值一个为y一个为m :为y的驱动已经编译到内核中且正确安装,还需运行以下命令,判断为m的virtio驱动是否已添加到临时文件系统。
-
CentOS系列 Ubuntu/Debian系列
lsinitrd /boot/initramfs-$(uname -r).img | grep virtio
image1920×160 119 KB
- 如上图所示,表示virtio驱动已经添加到临时文件系统中,可直接执行相关文档。
- 否则,需将virtio驱动添加到临时文件系统。如果
CONFIG_VIRTIO_BLK和CONFIG_VIRTIO_NET参数的取值一个为y一个为m ,则只需要判断取值为m 的驱动是否已添加到临时文件系统。
参考文档:
阿里云文档-如何为已有自定义镜像安装NVMe驱动?
安装NVMe驱动
a. 运行以下命令,查看系统内核是否已经加载了NVMe驱动。
cat /boot/config-`uname -r` | grep -i nvme | grep -v "^#"
image1920×760 167 KB
已经加载
b. 运行以下命令,查看initramfs中是否包含NVMe驱动。
sudo lsinitrd /boot/initramfs-`uname -r`.img | grep -i nvme | awk '{print $NF}'
image2836×336 138 KB
不包含
c. 依次运行以下命令,使initramfs支持NVMe驱动。
mkdir -p /etc/dracut.conf.d
echo 'add_drivers+=" nvme nvme-core "' | sudo tee /etc/dracut.conf.d/nvme.conf > /dev/null
sudo dracut -v -f
d. 在GRUB中添加NVMe相关的io_timeout 参数。
按i键进入编辑模式,在GRUB_CMDLINE_LINUX= 一行中,添加nvme_core.io_timeout=4294967295 nvme_core.admin_timeout=4294967295 参数信息。
sudo vi /etc/default/grub
[root@iZuf6hwfrhipchovcflmzwZ ~]# cat /etc/default/grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="resume=/dev/mapper/klas-swap rd.lvm.lv=klas/root rd.lvm.lv=klas/swap rhgb quiet crashkernel=1024M,high audit=0 net.ifnames=0 biosdevname=0 nvme_core.io_timeout=4294967295 nvme_core.admin_timeout=4294967295"
GRUB_DISABLE_RECOVERY="true"
e. 运行以下命令,使配置的GRUB生效。
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
f. 重新运行以下命令,查看是否有NVMe相关的返回信息。
sudo lsinitrd /boot/initramfs-`uname -r`.img | grep -i nvme | awk '{print $NF}'
image1920×254 150 KB
好了
4.4. 安装growpart包
安装growpart包使镜像支持在线扩容文件系统,安装后在初始化时会将根分区及文件系统扩容,扩容至实际的系统盘大小。更多信息请参见扩容分区和文件系统(Linux) 。
yum -y install cloud-utils-growpart.x86_64
4.5. 安装云助手客户端
参考:阿里云文档-在ECS实例中安装云助手Agent
云助手是专为云服务器ECS打造的原生自动化运维工具,阿里云建议您为镜像安装云助手服务,实现云上ECS高效运维
sudo wget "https://aliyun-client-assist.oss-accelerate.aliyuncs.com/linux/aliyun_assist_latest.rpm"
sudo rpm -ivh --force aliyun_assist_latest.rpm
4.6. 安装云安全中心Agent
参考文档:阿里云文档-安装云安全中心客户端
安装云安全中心的Agent插件后,您的服务器才能受到云安全中心的保护。
- 操作步骤
- 登录云安全中心控制台。在左侧导航栏,选择系统配置 > 功能设置。
- 在客户端页签的未安装客户端子页签下的待安装Agent的服务器列表,单击要安装Agent的服务器操作列的安装客户端,为该服务器安装Agent。
- 您也可以选中多台服务器,单击左下角 一键安装,批量安装Agent。
- Agent插件安装完成约5分钟后,您即可在 资产中心 > 主机资产页面的服务器页签下,查看服务器的 客户端在线情况。已安装Agent的服务器 客户端列的 客户端离线图标会变为 客户端在线图标,表示该服务器已受到云安全中心的安全防护。
image1920×985 167 KB
- 操作命令(我在控制台装的,就没用下面的命令了)
wget "https://update2.aegis.aliyun.com/download/install/2.0/linux/AliAqsInstall.sh" && chmod +x AliAqsInstall.sh && ./AliAqsInstall.sh -k=bE**** -r
4.7. 系统配置
参考文档:
阿里云文档-阿里云镜像规范(Linux)
- 配置时钟
timedatectl status
timedatectl set-local-rtc 0
- 配置SSHD服务
在制作镜像过程中,需要配置SSHD服务。
SSHD服务是Linux系统中的一个服务,用于远程登录和管理Linux系统。SSHD服务通常使用SSH协议(Secure Shell)进行加密通信,以保证远程登录的安全性。修改/etc/ssh/sshd_config 中的配置示例如下:
UseDNS no
AddressFamily inet
SyslogFacility AUTHPRIV
PermitRootLogin yes
PasswordAuthentication yes
- 配置Chrony/NTP服务
在制作镜像过程中,建议您配置Chrony服务或者NTP服务,配置其中一个服务即可。
Chrony和NTP都是用于同步计算机时钟的网络协议,可以确保时钟同步,以避免时间误差导致的问题。示例命令如下:
chrony_file=/etc/chrony.conf
cat >$chrony_file <<EOF
# Use Alibaba NTP server
# Public NTP
# Alicloud NTP
server ntp.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst
server ntp.aliyun.com minpoll 4 maxpoll 10 iburst
server ntp1.aliyun.com minpoll 4 maxpoll 10 iburst
server ntp1.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst
server ntp10.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst
server ntp11.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst
server ntp12.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst
server ntp2.aliyun.com minpoll 4 maxpoll 10 iburst
server ntp2.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst
server ntp3.aliyun.com minpoll 4 maxpoll 10 iburst
server ntp3.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst
server ntp4.aliyun.com minpoll 4 maxpoll 10 iburst
server ntp4.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst
server ntp5.aliyun.com minpoll 4 maxpoll 10 iburst
server ntp5.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst
server ntp6.aliyun.com minpoll 4 maxpoll 10 iburst
server ntp6.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst
server ntp7.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst
server ntp8.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst
server ntp9.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst
# Ignore stratum in source selection.
stratumweight 0.05
# Record the rate at which the system clock gains/losses time.
driftfile /var/lib/chrony/drift
# Enable kernel RTC synchronization.
rtcsync
# In first three updates step the system clock instead of slew
# if the adjustment is larger than 10 seconds.
makestep 10 3
# Allow NTP client access from local network.
#allow 192.168/16
# Listen for commands only on localhost.
bindcmdaddress 127.0.0.1
bindcmdaddress ::1
# Disable logging of client accesses.
noclientlog
# Send a message to syslog if a clock adjustment is larger than 0.5 seconds.
logchange 0.5
logdir /var/log/chrony
#log measurements statistics tracking
EOF
- 配置MOTD服务
在制作镜像过程中,建议您配置MOTD(Message of the Day)服务。
MOTD服务是Linux系统中的一项功能,它可以在用户登录到系统后显示一条欢迎信息或者系统公告。示例命令如下:
echo -e "\nWelcome to Alibaba Cloud Elastic Compute Service ! \n" > /etc/motd
- 关闭Firewalld服务
在制作镜像过程中,建议您关闭Firewalld服务。Firewalld是一种在Linux系统中管理防火墙规则的服务,云上有安全组做安全防护,您可以关闭防火墙。示例命令如下:
systemctl disable firewalld --now
- 配置PIP源
如果系统存在PIP源配置,推荐使用阿里云的PIP源地址,以便从阿里云的源中获取到最新的软件包。配置~/.pip/pip.conf 文件的内容如下:
[global]
index-url=http://mirrors.cloud.aliyuncs.com/pypi/simple/
[install]
trusted-host=mirrors.cloud.aliyuncs.com
- 配置sysctl
在制作镜像过程中,建议您配置sysctl参数,便于调整和优化Linux内核的运行参数。
修改/etc/sysctl.conf 内容如下。
阿里云建议配置
vm.swappiness = 0
kernel.sysrq = 1
net.ipv4.neigh.default.gc_stale_time = 120
net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_announce = 2
net.ipv4.tcp_max_tw_buckets = 5000
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 1024
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_slow_start_after_idle = 0
实际配置
[root@localhost ~]# cat /etc/sysctl.conf
# sysctl settings are defined through files in
# /usr/lib/sysctl.d/, /run/sysctl.d/, and /etc/sysctl.d/.
#
# Vendors settings live in /usr/lib/sysctl.d/.
# To override a whole file, create a new file with the same in
# /etc/sysctl.d/ and put new settings there. To override
# only specific settings, add a file with a lexically later
# name in /etc/sysctl.d/ and put new settings there.
#
# For more information, see sysctl.conf(5) and sysctl.d(5).
# kernel.sysrq=0
net.ipv4.ip_forward=0
net.ipv4.conf.all.send_redirects=0
net.ipv4.conf.default.send_redirects=0
net.ipv4.conf.all.accept_source_route=0
net.ipv4.conf.default.accept_source_route=0
net.ipv4.conf.all.accept_redirects=0
net.ipv4.conf.default.accept_redirects=0
net.ipv4.conf.all.secure_redirects=0
net.ipv4.conf.default.secure_redirects=0
net.ipv4.icmp_echo_ignore_broadcasts=1
net.ipv4.icmp_ignore_bogus_error_responses=1
net.ipv4.conf.all.rp_filter=1
net.ipv4.conf.default.rp_filter=1
net.ipv4.tcp_syncookies=1
kernel.dmesg_restrict=1
net.ipv6.conf.all.accept_redirects=0
net.ipv6.conf.default.accept_redirects=0
# modified
kernel.sysrq=1
# newconfig
vm.swappiness=0
内核参数相关解释
sysctl -p 命令使内核参数修改生效。
- 关闭selinux
setenforce 0
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
- 关闭系统限制
vi /etc/security/limits.conf
* soft nofile 1048576
* hard nofile 1048576
* soft nproc 100000
* hard nproc 100000
* soft core unlimited
修改前
[root@localhost ~]# ulimit -a
core file size (blocks, -c) unlimited
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 7422
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 7422
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
修改后
[root@iZuf6hwfrhipchovcflmzwZ ~]# ulimit -a
core file size (blocks, -c) unlimited
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 7422
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 1048576
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 100000
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
- 修改密码安全策略
[root@localhost ~]# cd /etc/security
[root@localhost security]# cp pwquality.conf pwquality.conf.bak
# 原有配置
[root@localhost security]# grep -v "#" pwquality.conf
minlen = 8
dcredit = 0
ucredit = 0
lcredit = 0
ocredit = 0
minclass = 3
palindrome
# 修改后配置
[root@localhost security]# grep -v "#" pwquality.conf
minlen = 6 # 将密码的最小长度设置为 6 个字符
dcredit = 0 # 不强制要求数字
ucredit = 0 # 不强制要求大写字母
lcredit = 0 # 不强制要求小写字母
ocredit = 0 # 不强制要求特殊字符
minclass = 0 # 不强制要求不同类型的字符
usercheck = 0 # 不检查密码中是否含有用户名
palindrome # 禁止使用回文密码
- 清空历史命令
history -c
5. 最终镜像
最后将该实例关机,创建成新的镜像,上传oss方便下载或其他环境使用
6. 参考文档
- 创建虚拟机并安装Linux操作系统
安装麒麟Kylin-v10 Arm64版本到阿里云
qemu虚拟机 安装银河麒麟V10 arm架构系统 桌面版
win10安装,qemu虚拟机,搭建麒麟操作系统开发环境
阿里云-创建虚拟机并安装Linux操作系统
- 自定义镜像-阿里云规范
阿里云文档-阿里云镜像规范(Linux)
VirtualBox 制作自定义的阿里云镜像方法
阿里云-安装cloud-init
阿里云-安装virtio驱动
- 工具
Linux服务器上传文件到阿里云oss对象存储的两种方法ossutil、curl
阿里云-安装ossutil
网友解答:--【壹】--:
在2027前赶紧学习了,不然到时找不到应对
--【贰】--:
这篇文章可能大部分读者都用不上,也不会去关心作者写了什么。但我相信有一天,一个像两年前的我那样到处找资料完成"云平台自制镜像"任务的朋友会惊喜的在本站发现这么一篇文章。
--【叁】--:
插个眼,业务相关经常装/重装各种国产类unix系统。我在想可不可以上层统一管理一下,一次直接搞一批机器。

