virsh启用linux虚拟机+忘记密码的操作

比起君子讷于言而敏于行,我更喜欢君子善于言且敏于行。

目录

一、准备逻辑卷+镜像

[二、安装virt-manager + 准备桥接网络(宿主机)](#二、安装virt-manager + 准备桥接网络(宿主机))

[三、 创建linux虚拟机](#三、 创建linux虚拟机)

[四、 虚拟机查看网络设置静态ip](#四、 虚拟机查看网络设置静态ip)

五、数据盘准备

六、忘记root密码


一、 准备逻辑卷+镜像

复制代码
sudo lvcreate -n centos-sign-lv -L 200G vmsvg
sudo mkfs.ext4 /dev/vmsvg/centos-sign-lv
sudo mkdir /mnt/centos-sign
sudo mount /dev/vmsvg/centos-sign-lv /mnt/centos-sign
cd /mnt/centos-sign
ls


sudo scp -r  ubuntu2@10.xxx.xxx.xxx:/data/linux/centos-sign.raw /mnt/centos-sign

二、安装virt-manager + 准备桥接网络(宿主机)

复制代码
#和windows那篇是一样的,我之前安装了,这一步可以跳过
sudo apt update
sudo apt install -y virt-manager libvirt-daemon-system libvirt-clients qemu-kvm virtinst qemu-efi ovmf
sudo systemctl enable --now libvirtd
sudo systemctl status libvirtd
#说明:virt-manager → 图形界面管理工具;libvirt-daemon-system+libvirt-clients → 提供虚拟机管理后台;qemu-kvm → 真正运行虚拟机的引擎
#将当前用户加入 libvirt 组,这一步是为了解决"权限不够导致无法连接"的问题
sudo usermod -aG libvirt $(whoami)
sudo usermod -aG kvm,libvirt $USER  
 
#在当前 shell 中临时刷新组权限,这条命令会让当前终端立即切换到新的组权限(不需要重启或注销)
newgrp libvirt
sudo systemctl restart libvirtd
virt-manager


#宿主机准备好桥接网络
sudo vim /etc/netplan/01-bridge.yaml
 
network:
  version: 2
  renderer: networkd
  ethernets:
    eno2:
      dhcp4: no
  bridges:
    br0:
      interfaces: [eno2]                #按照实际网卡填写
      addresses: [10.155.xxx.xxx/24]    # 宿主机 IP
      gateway4: 10.155.xxx.1
      nameservers:
        addresses: [10.4.xxx.27,10.4.xxx.28]
      parameters:
        stp: false
        forward-delay: 0
 
#应用配置
sudo netplan apply
 
#检查桥接接口br0,应该显示静态IP 10.155.xxx.xxx,eno2不再有IP,只是桥接接口
ip addr show br0
 
#测试网络,可以 ping 通,说明配置成功,
ping 10.155.xxx.1    # 网关
ping 8.8.8.8         # 外网

三、 创建linux虚拟机

run起来之后,可以通过VNC访问ubuntu物理机IP:5902 (就是命令里,设置的端口)

复制代码
#一定要注意端口问题,端口占用的话可以换一个干净的端口。默认是5900
sudo virt-install \
  --name  centos-sign   \
  --ram 16384 \
  --vcpus 8 \
  --cpu host \
  --disk /mnt/centos-sign/centos-sign.raw,bus=virtio \
  --os-type linux \
  --os-variant centos7.0 \
  --boot hd \
  --network bridge=br0,model=virtio \
  --graphics vnc,port=5902,listen=0.0.0.0 \
  --input type=tablet,bus=usb \
  --input type=keyboard,bus=usb \
  --import \
  --noautoconsole


#查看一下状态
sudo virsh list --all

四、 虚拟机查看网络设置静态ip

配置完之后,拿到ip,就可以通过ssh连接设备了,比VNC好用一些。这是centos的网络配置,后续我会再补一下ubuntu的网络配置

复制代码
#查看用的哪个网卡
ip addr 

#如果为down的话启用对应网卡
sudo ip link set eth6 up

#永久写配置文件(root 身份)
vim /etc/sysconfig/network-scripts/ifcfg-eth6
DEVICE=eth6
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=static
NAME=eth6
IPADDR=IP地址
NETMASK=子网掩码
GATEWAY=网关
DNS1=DNS写一下

#重启网络服务
systemctl restart network

#如果没有systemctl,那就再拉起一下eth6或者试试serice
ifup eth6
service network restart

ubuntu系统

复制代码
#这样可以在自己的终端登录虚拟机并操作命令
virsh console 虚拟机名称
#先看网卡
ip a
#关闭cloud-init 网络配置
mkdir -p /etc/cloud/cloud.cfg.d
cat > /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg <<EOF
network: {config: disabled}
EOF
#删除 cloud-init 生成的 netplan 文件
mv   /etc/netplan/50-cloud-init.yaml /tmp
#写一个静态ip地址配置文件
vim 01-static.yaml 
network:
  version: 2
  renderer: networkd
  ethernets:
    eth0:
      dhcp4: no
      addresses:
        - IP地址/24
      gateway4: 网关
      nameservers:
        addresses:
          - dns1
          - dns2
#应用配置
netplan generate
netplan apply
#手动拉起网卡
ip link set eth0 up
ip a

五、数据盘准备

复制代码
#准备400G的数据盘
sudo lvcreate -L 400G -n centos-sign-data vmsvg

virsh attach-disk centos-sign \
        /dev/vmsvg/centos-sign-data vdb --cache none --subdriver raw --targetbus virtio --persistent

#去虚拟机里面查看一下数据盘是否出现
lsblk | grep vdb

#可以查看之前的数据盘是什么格式,怎么自动挂载的
cat /etc/fstab

/dev/vdb  /data   xfs defaults 0 0

#我这儿原fstab写的是整盘 /dev/vdb 直接挂载成 xfs,没有分区表。为保持兼容,无需再 fdisk 分区。一次性整盘格式化 xfs(会清数据!)
sudo mkfs.xfs -f /dev/vdb

#确保挂载点存在
sudo mkdir -p /data
sudo mount -a          # 读取原 /etc/fstab
df -h /data

六、忘记root密码

复制代码
#先停掉虚拟机
virsh destroy centos-sign

#宿主机操作
sudo losetup -fP /mnt/centos-sign/centos-sign.raw

losetup -a | grep centos-sign
/dev/loop24: []: (/mnt/centos-sign/centos-sign.raw)

lsblk /dev/loop24
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
loop24        7:24   0  100G  0 loop 
├─loop24p1  259:0    0 99.9G  0 loop     	← 这就是根分区 /
├─loop24p14 259:1    0    4M  0 loop 		← BIOS/GRUB 保留分区
└─loop24p15 259:2    0  106M  0 loop		← EFI System Partition

sudo mkdir /mnt/passwd
sudo mount /dev/loop24p1 /mnt/passwd
sudo chroot  /mnt/passwd passwd root
按提示输入两次新密码

sudo umount /mnt/passwd
sudo losetup -d /dev/loop24
启动虚拟机
virsh start centos-sign
相关推荐
小小、码农5 分钟前
〖Linux文件系统〗:彻底打通文件 IO 全链路
linux·开发语言·数据结构·c++·系统
大侠归来9 分钟前
cJSON 源码解析:parse_string 函数深入剖析
linux·网络·算法
小小、码农11 分钟前
〖Linux进程间通信〗IPC全家桶:匿名管道、FIFO、共享内存、消息队列与信号量一篇打通
linux·运维·服务器
阳光九叶草LXGZXJ13 分钟前
达梦数据库-学习-67-SSL加密认证
linux·运维·数据库·sql·学习·ssl
掉进电商坑三年没爬出来的东叔17 分钟前
2026最新:青龙面板搭建全自动薅羊毛脚本,云服务器24小时挂机教程
运维·服务器·pygame
ggaofeng28 分钟前
精简版ssh(去掉认证和加密流程,更清晰的展示远程登录的底层实现)
运维·ssh
0+1111 小时前
Linux --应用层自定义协议与序列化
linux·运维·服务器·网络·tcp
dyxal1 小时前
Linux Crontab 防重复执行利器:flock 文件锁实战详解(脱敏版)
linux·运维·服务器
niuTaylor1 小时前
RK3568 Linux SDK 详解:SDK 是什么、板级差异与完整构建流程
linux·运维·服务器
拾贰_C1 小时前
【Ubuntu | port】Linux进程端口号冲突问题解决
linux·运维·ubuntu