云平台网络——环境配置(一)

Linux状态查询指令

Linux系统中的“root用户”概念是指一个具备所有权限的超级管理员,sudo命令的作用就是赋予一般的用户(比如本机的hrz)超级管理员的权限,使用场景就是诸如系统更新、(要求权限的)文件下载等。在sudo命令中使用的密码一般是“ 用户自己的密码 ”,而切换root用户的密码是装载系统之初设置的那个密码。

#切入到root用户,这里的密码是装机时设置的密码,跟sudo密码应该是不同的
su

#从root用户切换回原来的用户环境,user是自己的用户名(hrz)
su user

KVM虚拟机

KVM 是基于虚拟化的X86硬件的开源Linux原生的全虚拟化方案(要求cpu支持Intel-VT-x或AMD-V),KVM内嵌于内核模块中,模拟处理器和内存以支持虚拟机运行,虚拟机被实现为常规的Linux进程,由标准Linux调度程序进行调度;虚拟机的每个虚拟CPU被实现为一个常规的Linux进程,这使得KMV能够使用Linux内核的已有功能。

KVM本身不执行任何模拟,需要客户空间程序(虚拟机)通过/dev/kvm (此虚拟设备需要开起硬件辅助虚拟化才能看到)接口设置一个客户机虚拟服务器的地址空间,并且由Qemu模拟/O (ioctl) 进行调度资源和维护管理。

Redhat官网描述:

Using KVM, one can run multiple virtual machines running unmodified Linux or Windows images. Each virtual machine has private virtualized hardware: a network card, disk, graphics adapter, etc.

参考文章如下:

在 Ubuntu 18.04 LTS 上使用 KVM 配置无头虚拟化服务器 - 知乎」、

Ubuntu22.04 用 KVM 安装 Arch Linux 实操-CSDN博客」、

KVM详解,太详细太深入了_sunr_的博客-CSDN博客

第一步需要检查本机系统是否支持硬件虚拟化,使用egrep(extended regular expression)命令在文件内查找指定的字符串,其他的用法还包括查看文件等:

egrep -c '(vmx|svm)' /proc/cpuinfo

本机返回的是16而不是0,说明可以进行虚拟化,接下来需要安装 KVM 并在 Linux 中配置虚拟化环境所需要的其它包,但是出现了下图中的问题,询问了chatGPT老师后得知问题核心在于最新的发行版中 libvirt-bin 被 libvirt-daemon-system 取代,所以调整一下安装的包即可。

命令修改如下:

sudo apt-get install qemu-kvm libvirt-daemon-system virtinst bridge-utils cpu-checker

还可以尝试先装载一个虚机上Arch Linux系统,但发现仍旧绕不开qemu和kvm:

sudo apt install qemu qemu-utils qemu-kvm libvirt-daemon-system virt-manager

不论是上述的哪个命令,都会返回之前就经常会出现的报错“ E: Sub-process /usr/bin/dpkg returned an error code (1) ”,没办法,只能从头开始整理跟dpkg相关的修复了,依此执行下列语句后再键入前述命令就不会再发生报错。

参考文章:「dpkg: 处理软件包 xxx (--configure)时出错

#备份
$ sudo mv /var/lib/dpkg/info /var/lib/dpkg/info.bk
#新建
$ sudo mkdir /var/lib/dpkg/info
#更新
$ sudo apt-get update 
$ sudo apt-get -f install
#替换
$ sudo mv /var/lib/dpkg/info/* /var/lib/dpkg/info.bk 
#把更新的文件替换到备份文件夹,并执行删除
$ sudo rm -rf /var/lib/dpkg/info 
#把自己新建的info文件夹删掉,并进行还原
$ sudo mv /var/lib/dpkg/info.bk /var/lib/dpkg/info

KVM 安装完成后,启动 libvertd 服务(如果它没有启动的话)并检查是否有运行的虚机:

#启动libvirtd服务
$ sudo systemctl enable libvirtd
$ sudo systemctl start libvirtd
#检查是否有虚机
$ sudo virsh list --all

然后是下载将要在虚机上安装的操作系统,本次尝试使用arch-linux系统,所以需要提前下载好官方发布的可用镜像,又因为ISO 镜像的默认路径是 /var/lib/libvirt/boot/,所以得将下载的镜像文件移动到路径“ admin:///var/lib/libvirt/boot/ ”中,在操作中可能遭遇权限不足的问题,因此使用 sudo mv 命令:

#移动下载好的系统镜像文件
$ sudo mv home/hrz/下载/archlinux-2023.05.03-x86_64.iso /var/lib/libvirt/boot/

#参考装机方案一
$ qemu-img create -f qcow2 archlinux.qcow2 2G 
$ sudo virt-install  --name archlinux \
--os-variant=archlinux \
--memory 2048 --vcpus 2 \
--disk path=./archlinux.qcow2 \
--cdrom=/var/lib/libvirt/boot/archlinux-2023.05.03-x86_64.iso \
--boot loader=/usr/share/qemu/OVMF.fd \
--virt-type kvm \
--network network=network,bridge=virbr1

#参考装机方案二
sudo virt-install  --name Ubuntu-16.04 \
--ram=512 --vcpus=1 \
--cpu host \
--hvm \
--disk path=/var/lib/libvirt/images/ubuntu-16.04-vm1,size=8 \
--cdrom /var/lib/libvirt/boot/ubuntu-16.04-server-amd64.iso \
--graphics vnc

针对方案一安装arch-linux时遭遇如下的问题:

所以还需要补充一堆安装依赖,参考文章「ImportError: cannot import name ‘_gi‘... Ubuntu」:

#参考相关文章
apt install python-dev
apt install python3-dev
apt install python3.8-dev 
 
sudo apt-get install libgirepository1.0-dev
sudo apt-get install python-cairo
sudo apt-get install libcairo2

#参考chatGPT老师的答案
sudo apt-get install python3-dev libcairo2-dev

python3 -m pip install -U pycairo

'''注意!使用的软链接名称可能会影响到具体的终端指令效果!'''
#sudo python3.8 -m pip install --ignore-installed PyGObject 
##报错 sudo: python3.8:找不到命令
#sudo python3 -m pip install --ignore-installed PyGObject
##报错 × pip subprocess to install build dependencies did not run successfully.
sudo python -m pip install --ignore-installed PyGObject 
##Successfully installed PyGObject-3.44.1 pycairo-1.23.0

(然后眉头一皱,发现事情没有这么简单)

随着对报错理解的加深,开始逐步意识到Ubuntu的很多操作跟python的默认使用版本息息相关,这里面就涉及了大量软链接的知识(没什么办法,开始硬肝),首先根据别人遇到的问题和返回报错的信息去定位报错的关键“ _gi ”模块。

这里需要细心一点,因为安装的python太多,所以得注意跟报错最相关的所调用的python具体是哪个路径中的版本,这里就发现_gi并没有一个实体的“ .py ”文件,所以估计问题的核心就是画红圈儿的这个编译文件。

 基于前面的观察,得识别自动模式的python版本是否同“_gi.cython-310-x86_64-li...”匹配,因此需要使用如下的命令手动换档,如果模式切换的权限不足就加一个“ sudo ”,最后成功解决 virt-install 调用的报错问题。

#查看自动模式的python版本命令
$ update-alternatives --config python3

随后还遇到了创建的qcow文件名不匹配,创建的虚拟机磁盘镜像分配的内存太离谱(40G)等问题,但相对来说还是比较友好的,另外最后一句指令 --network network=network,bridge=virbr1 涉及的网卡问题比较复杂,先不处理,只使用该指令以前的内容即可,具体配置为“ 分配2G内存,两个CPU核 ”,运行相应指令就可以成功跳出图形界面了。

 令人无语的是。。。好不容易出来了一个图形界面,手贱关掉以后就再也打不开了,之后只能通过以下几个命令认识到虚拟机还存在(如果报错“ error: failed to get domain xxx ”那多半是权限问题,加一个sudo就能解决)。

参考文章:「KVM--virsh虚拟机的日常操作」。

#查看所有有实体的虚机状态
$ sudo virsh list --all
#启动虚机,start后可以接id,也可以接虚机名
$ sudo virsh start archlinux
#关闭虚机
sudo virsh shutdown archlinux
#强制关机
sudo virsh destroy archlinux

 (删掉重装,岂不美哉?)

#关掉虚机窗口以后,重新开启虚机窗口图的指令
##另外关掉窗口不代表虚机关闭,需要在终端使用virsh suspend/shutdown指令才能真正暂停/关闭虚机
virt-viewer --connect qemu:///system --wait archlinux

 


这个学期就这么迎来了尾声,现在ms.X就坐在我的正对面,现在我的主要职业方向变成了大宗,现在我仍然没有暑期实习(毕竟参加项目了),现在对自研平台开发的兴趣被云计算平台的开发分去了大半,生活是实打实的“ random walk ”,不过感觉还行。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值