You need to enable JavaScript to run this app.
导航

在支持虚拟化机器上制作Debian8镜像

最近更新时间2023.07.18 19:39:08

首次发布时间2023.07.18 19:39:08

实验介绍

本期实验练习介绍了如何在支持虚拟化的机器上制作Debian8镜像,并将该自定义镜像上传到火山引擎自定义镜像控制台并使用该镜像创建实例。在实验正式开始之前,需要完成如下所示的准备工作:

  1. 开始制作之前,在火山引擎控制台创建弹性裸金属服务器,推荐使用ecs.ebmg2i.32xlarge规格进行创建。并为实例挂载公网IP。

  2. 在Debian官方https://cdimage.debian.org/cdimage/archive/8.11.1/amd64/iso-dvd/下载.iso镜像文件。

关于实验:

预计部署时间:60分钟
级别:中级
相关产品:镜像
受众:通用

支持虚拟化的环境准备

依次执行以下命令,完成环境准备;

lscpu | grep vmx //查看实例是否具有虚拟化能力
uname -r //查看内核版本,需高于3.10
sudo apt update
sudo apu upgrade
sudo apt install qemu qemu-kvm qemu-sysytem qemu-utils //安装KVM相关软件
sudo apt install libvirt-clients libvirt-daemon-system virtinst //安装libvirt
systemctl status libvirtd.service //检查libvirt服务是否开启
systemctl restart libvirtd.service //若未开启,执行该命令开启服务
sudo virsh net-list --all //默认libvirt服务网络处于inactive状态
sudo virsh net-start default //开启网络
sudo virsh net-start default //设置开机自启动
ip link show virbr0 //检查virbr0网卡已经被创建
modprobe kvm
modprobe kvm-intel //加载kvm

创建并安装虚拟机

  1. 通过WinSCP上传下载的Debian镜像文件至实例/home目录下;

  2. 创建虚拟机;

    1. 执行以下命令,创建并安装虚拟机virt-install --name=debian-8 --memory=4096,maxmemory=8192 --vcpus=2,maxvcpus=4 --os-type=linux --os-variant=debian8 --location=/home/debian-8.11.1-amd64-netinst.iso --disk path=/home/debian8.qcow2,size=20 --network bridge=virbr0 --graphics=none --console=pty,target_type=serial --extra-args="console=tty0 console=ttyS0"
    将--os-variant后的参数替换为虚拟机的操作系统类型。您可以执行osinfo-query命令查看可选类型。
    将--disk=后的参数替换为虚拟机操作系统的存储位置,即新创建镜像的路径。
    将--cdrom=后的参数替换为基础镜像的路径。
    
    1. 创建完成后,分别执行命令virsh listvirsh vncdisplay debian-8查看创建虚拟机及虚拟机vnc地址;

    2. 安装完成后,可以直接输入用户名及密码登录到虚拟机内;或执行以下步骤,采用VNC方式远程连接虚拟机;

      1. 本地下载安装vnc viewer,安装地址为:https://www.realvnc.com/en/connect/download/viewer/windows/

      2. 通过vnc viewer远程连接新创建的虚拟机;

        1. 依次执行以下命令,安装vnc服务器;
        sudo apt install tigervnc-standalone-server -y //根据提示创建用户及密码等
        vncserver -localhost no //启动VNC服务
        
        1. 执行命令virsh domifaddr volc-tob-debian-8.11-amd64,查看default的ip地址,与步骤c查到的vnc地址一起,在vnc viewer客户端上连接虚拟机。

    3. 依次执行以下命令,检查OS驱动;

    sudo ls /sys/firmware/efi //efi文件不存在,即可正常进行下一步,验证驱动
    grep -wr CONFIG_VIRTIO_NET /boot/config-$(uname -r) 
    grep -wr CONFIG_VIRTIO_BLK /boot/config-$(uname -r)
    

安装火山引擎cloud-init插件

  1. 依次执行以下命令安装Python3及其相关依赖;
wget https://launchpad.net/cloud-init/trunk/20.3/+download/cloud-init-20.3.tar.gz
apt-get install python3 -y
apt-get install python3-pip -y
apt-get install cloud-guest-utils -y
tar -xzvf cloud-init-20.3.tar.gz
 
cd cloud-init-20.3

pip3 install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

python3 setup.py build

python3 setup.py install --init-system systemd

ln -s /usr/local/bin/cloud-init /usr/bin/cloud-init

systemctl enable cloud-init-local.service

systemctl enable cloud-init.service

systemctl enable cloud-config.service

systemctl enable cloud-final.service
  1. 编辑cloud-init配置文件vi /etc/cloud/cloud.cfg 将下列内容替换到文件中;
users:
- default  

disable_root: 0
ssh_pwauth: 1
growpart:
    mode: auto
    devices: ['/']
    ignore_growroot_disabled: false

mount_default_fields: [~, ~, 'auto', 'defaults,nofail,x-systemd.requires=cloud-init.service', '0', '2']
resize_rootfs_tmp: /dev
ssh_deletekeys: 1
syslog_fix_perms: ~
disable_vmware_customization: false

manage_etc_hosts: localhost

cloud_init_modules:
  - disk_setup
  - migrator
  - bootcmd
  - write-files
  - growpart
  - resizefs
  - set_hostname
  - update_hostname
  - update_etc_hosts
  - rsyslog
  - users-groups
  - ssh

cloud_config_modules:
  - mounts
  - locale
  - set-passwords
  - rh_subscription
  - yum-add-repo
  - package-update-upgrade-install
  - timezone
  - puppet
  - chef
  - salt-minion
  - mcollective
  - disable-ec2-metadata
  - runcmd

cloud_final_modules:
  - rightscale_userdata
  - scripts-per-once
  - scripts-per-boot
  - scripts-per-instance
  - scripts-user
  - ssh-authkey-fingerprints
  - keys-to-console
  - phone-home
  - final-message
  - power-state-change

system_info:
  # distro: rhel # centos则打开此配置
  paths:
    cloud_dir: /var/lib/cloud
    templates_dir: /etc/cloud/templates
  ssh_svcname: sshd
  1. 更换cloud-init数据源;

创建文件 vi /etc/cloud/cloud.cfg.d/90_dpkg.cfg,并写入以下内容

datasource_list: [ConfigDrive, OpenStack]

datasource:
    OpenStack:
        metadata_urls: ["http://169.254.169.254","http://100.96.0.96"]
        max_wait: -1
        timeout: 5
        retries: 5
        apply_network_config: True

安装火山引擎密码插件

依次执行以下命令下载安装密码插件;

wget http://volc-ecs.tos-s3-cn-beijing.volces.com/reset-authentication_1.0.4-0_amd64.deb
dpkg -i reset-authentication_1.0.4-0_amd64.deb

systemctl is-active reset-authentication.service

systemctl is-enabled reset-authentication.service

导出镜像

  1. 依次执行以下命令;
virsh shutdow 虚拟机名称 //关闭虚拟机并获得镜像文件
virt-install --disk //查看镜像文件
  1. 当镜像文件小于5GB时,通过WinSCP客户端,将制作好的镜像文件从裸金属实例内上传到本机机器内;

  2. 当镜像文件大于5GB时,依次执行以下命令,完成镜像导出及上传到控制台的操作;

    1. 操作系统安装awscil工具;

      curl "[https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip](https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip)" -o "awscliv2.zip"
      
      apt-get install unzip 
      
      unzip awscliv2.zip
      
      sudo ./aws/install
      
    2. 创建配置文件~/.aws/credentials;

    mkdir ~/.aws
    cd ~/.aws
    touch credentials
    
    1. 配置文件填入AK/SK;
    cat ~/.aws/credentials
    [default]
    aws_access_key_id=AKXXXXXXXX
    aws_secret_access_key=XXXXXX
    s3 = 
      addressing_style = virtual
    
    1. 上上传镜像到TOS内
    aws s3 ls --endpoint-url=http://tos-s3-cn-beijing.volces.com 
    aws s3 cp /tmp/centos  s3://bucket-name/filename --endpoint-url=http://tos-s3-cn-beijing.volces.com
    

添加自定义镜像

  1. 将镜像文件上传到TOS桶内,并复制镜像文件地址;

  2. 在自定义镜像控制台中,点击“导入镜像”,完成信息配置;

  3. 等待导入完成后,即可使用该镜像创建操作系统Debian8的实例。

如果您有其他问题,欢迎您联系火山引擎技术支持服务