• 哒康

    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创建自定义镜像,利用该镜像创建实例并额外挂载一块数据盘,注意系统盘和数据盘创建的时候都设置成不随实例释放(方便后面卸载);

    进入系统安装系统,将系统安装在数据盘中。

    图片

    账号: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)
    ```图片

    根据回显信息判断:

    根据输出信息中的参数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
    ```图片

    - 如上图所示,表示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 "^#"
    ```图片

    已经加载

    b. 运行以下命令,查看initramfs中是否包含NVMe驱动。```
    sudo lsinitrd /boot/initramfs-uname -r.img | grep -i nvme | awk '{print $NF}'
    ```图片

    不包含

    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}'
    ```图片

    好了

    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&quot;
    sudo rpm -ivh --force aliyun_assist_latest.rpm
    ```4.6. 安装云安全中心Agent

    参考文档:阿里云文档-安装云安全中心客户端

    安装云安全中心的Agent插件后,您的服务器才能受到云安全中心的保护。

    - 操作步骤

    - 登录云安全中心控制台。在左侧导航栏,选择系统配置 > 功能设置。

    - 在客户端页签的未安装客户端子页签下的待安装Agent的服务器列表,单击要安装Agent的服务器操作列的安装客户端,为该服务器安装Agent。

    - 您也可以选中多台服务器,单击左下角 一键安装,批量安装Agent。

    - Agent插件安装完成约5分钟后,您即可在 资产中心 > 主机资产页面的服务器页签下,查看服务器的 客户端在线情况。已安装Agent的服务器 客户端列的 客户端离线图标会变为 客户端在线图标,表示该服务器已受到云安全中心的安全防护。

    图片

    • 操作命令(我在控制台装的,就没用下面的命令了)```

    wget "https://update2.aegis.aliyun.com/download/install/2.0/linux/AliAqsInstall.sh&quot; && 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
    主楼
  • 哒康

    这篇文章可能大部分读者都用不上,也不会去关心作者写了什么。但我相信有一天,一个像两年前的我那样到处找资料完成"云平台自制镜像"任务的朋友会惊喜的在本站发现这么一篇文章。

    #1
  • ZYist

    插个眼,业务相关经常装/重装各种国产类unix系统。我在想可不可以上层统一管理一下,一次直接搞一批机器。

    #2
  • denis2026

    在2027前赶紧学习了,不然到时找不到应对

    #3
  • a23882

    绝绝子,现在正好要做v11镜像。

    #4
  • 哒康

    对文章中有疑问的地方,欢迎评论区交流。

    #5
  • a23882

    好奇删除了什么,怎么删了这么多。

    #6
  • a23882

    我自己麒麟v11的镜像后面用的是天翼云的,天翼云可以申请按量付费实例,然后这个云实例他们支持把实例直接做成镜像,然后这个镜像可以导出来用,基本上不用什么额外的设置和安装,这个导出的镜像在别的云也可以正常用

    #7
  • 南城

    佬,没太看懂,通过这样设置,可以直接在vps中安装不同架构的麒麟系统吗?

    #8

发表回复

登录后回复