一、建立网桥

查看可以用的网桥,没有的话新建网桥br0:
brctl addbr br0
方法1:
将网桥连接到宿主机的网络端口(使用ifconfig查看有ip地址的那个端口,我的是eth1):
修改/etc/network/interfaces,中的信息如下:

auto eth1
iface eth1 inet manual
auto br0
iface br0 inet static
address eth1的IP地址
netmask 255.255.255.0
gateway 网关地址(.1)
bridge_ports eth1

重启服务:

systemctl restart networking.service

centos重启服务的命令如下:

 systemctl restart network

检查/etc/network/interfaces 和/etc/network/interface.d/eth1文件,如果address 后面的值不是本机ip的话,修改一下。
修改后使用如下命令重启动:

/etc/init.d/networking restart

这时候在其他主机会ping不到本主机,因为本主机的ip地址放在了br0桥上。
需要使用一下命令启用:

ifconfig eth1 0.0.0.0 up

上面这些工作完成后,就可以运行桥接模式下的命令安装虚拟机。

方法2:
创建br0网桥:virsh iface-bridge eth1 br0
(需要删除网桥的时候用命令:virsh iface-unbridge br0)

二、命令行 + vnc viewer安装过程

(qcow2制作:qemu-img create -f qcow2 test.qcow2 150G)
NAT模式:

virt-install --virt-type kvm --name Ubuntu --ram 1024 --cdrom=/opt/Ubuntu.iso --disk path=/opt/test.qcow2,bus=ide,format=qcow2 --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole

bridge(桥接模式)命令:

virt-install --virt-type kvm --name Ubuntu --ram 1024 --cdrom=/opt/Ubuntu.iso --disk path=/opt/test.qcow2,bus=ide,format=qcow2  --network=bridge:br0 --graphics vnc,listen=0.0.0.0 --noautoconsole

根据已经存在的qcow2创建:

qemu-img create -f qcow2 -b test.qcow2 node1.qcow2 #创建快照
virt-install --name new --ram  1024 --vcpus 1 --disk node1.qcow2,bus=virtio --import 

如果不想安装VNC Viewer,只需要将 ----noautoconsole去掉就可以直接自动弹出virt viewer界面安装。
以上的 --network=后面的值可以通过brctl show 来获取。

如果虚拟机已经安装好了的话,可以通过以下命令给虚拟机添加网卡(也可以进入虚拟机中自主配置)。

virsh attach-interface Ubuntu --type bridge --source br0 --config

然后通过vnc viewer连接到本机ip:5900,如果是第二个虚拟机的话端口号就是5902,继续完成后续安装,最后选择reboot,再在宿主机这边virsh start Ubuntu启动虚拟机就可以了。
vnc的端口号也可以用:

virsh dumpxml Ubuntu |grep vnc

命令来查看,返回值中你的port就是端口号,其中Ubuntu是虚拟机名字。

三(额外)使用systemback 制作可以一键安装的镜像

在一中使用镜像安装,还是需要virt-viewer或者vnc viewer来进行GUI的安装,但是使用systemback可以实现无GUI,它可以把正在使用的Ubuntu或者其他系统制作为镜像文件,从而在安装的时候使用目前的用户名密码等一系列配置。
参考链接:https://blog.csdn.net/bluewhalerobot/article/details/73649426

systemback是一个软件,安装命令步骤如下:

sudo add-apt-repository ppa:nemh/systemback
sudo apt-get update && sudo apt-get install systemback unionfs-fuse

安装完成后就可以搜索到这个软件了。

ex:使用xml文件+ vnc viewer安装过程
xml文件内容参考我的另一篇博客:kvm导入已经配置好的qcow2文件
1.xml文件内容如下,命名为kvm_temp.xml(NAT模式,更改模式的部分在interface中,参考上面链接可以实现host-only)

其中
uuid在命令行用uuid的命令自动生成;
②mac address 通过命令openssl rand 6 | xxd -p | sed 's/(。。)/1:/g; s/:$//'自动生成(手动添加冒号);
③ubuntu-16.04.3-desktop-amd64.iso文件,是自己下载的镜像文件,文件都放在opt下是因为qemu的权限比较低,root下的文件都无法访问。
④test.qcow2,通过命令qemu-img create -f qcow2 test.qcow2 40G生成(后面的40G是预设的磁盘大小,可以更改)。qcow2 镜像格式是 QEMU 模拟器支持的一种磁盘镜像,以个文件的形式来表示一块固定大小的块设备磁盘。
⑤name自定义,后面启动虚拟机需要用到。
qemu-system-x86_64 -M ?命令可以查看支持的型号,与<type arch='x86_64' >hvm</type>这一行相关。
2.通过xml文件定义虚拟机:

virsh define kvm_temp.xml

查看虚拟机定义是否成功:

virsh list --all

如果显示

 Id    Name                           State
----------------------------------------------------
 -     ubuntu                         shut off

则表示成功,此时id没有,状态为关闭。
4.启动虚拟机(使用上面定义的name)

virsh start ubuntu

再查看,显示:

 Id    Name                           State
----------------------------------------------------
 19    ubuntu                         running

state显示running则表示启动成功。
5.关闭虚拟机(shutdown的关机会需要一点时间,执行命令后用virsh list --all查看会依然显示running。

virsh shutdown 虚拟机名称

virsh destroy 虚拟机名称 是直接下电,相当于强制关机。
如果在shutdown后很长时间虚拟机依然是running状态,那么就需要在虚拟机上安装一个acpid的服务(负责将kernel中的电源管理事件转发给应用程序)并启动它。ACPI(Advanced Configuration and PowerInterface,高级配置和电源接口)d是daemon(守护进程)。
6.安装ACPID:
以下操作在虚拟机上
安装:

  yum -y install acpid

(如果命令不对的话是acpid的位置不同,可以通过 find / -name acpid找到文件位置,然后将以下2个命令更改为对应位置。
启动:

/usr/sbin/acpid status
/usr/sbin/acpid start

启动完成acpid服务后,就可以在宿主机上shutdown虚拟机,当然关机需要一点时间。

四、 无网络安装

如果是无网络环境下,就需要准备它所依赖的包。
1.架包的准备。
一般用apt-get下载的安装包都在在Ubuntu的目录: /var/cache/apt/archives下。
在一个新安装的Ubuntu环境中,以上目录中只有部分deb,如果我们使用
sudo apt-get install vim 命令在安装完成后就会在此目录下多出vim的安装包,其他的软件也是一样的,可以用这种方法整理出某一软件所需要的安装包。
2.架包的安装。

sudo dpkg -i package.deb

批量安装:整理号的deb安装包可以使用以下命令批量安装(在放在同一个目录下,进入目录后使用命令):

dpkg  -i  ./*.deb

3.获取某一个架包(xx)的依赖关系(也可以不用)
apt-cache depends xx

五、遇到的报错

  1. 在新安装的虚拟中使用ssh可以远程连接,但是无法远程使用SCP
    报错:

    ssh: connect to host 172.16.67.128 port 22: Connection refused
    lost connection
    使用ssh localhost命令显示如下:

    ssh: connect to host localhost port 22: Connection refused
    是因为Ubuntu默认没有安装openssh-server,使用以下命令(在虚拟机中)安装即可:

    sudo apt-get install openssh-server
    安装后即可使用scp远程拷贝。

PS :
①.blkid 命令可以查看磁盘的分块。
②.hda指IDE接口的硬盘,hda一般指第一块硬盘,类似的有hdb,hdc等。
③NAT模式安装的虚拟机没有ip。如果想使用vnc viewer的话,将xml文件改为如下(主要是添加
④.virsh list命令只能查看正在运行的虚拟机,vrish list --all才可以查看所有的虚拟机。
⑤如果鼠标进入Virt Viewer弹出的虚拟机安装界面,无法切换出来,只需要按住ctrl+alt键,鼠标就可以移动出来了。

Logo

更多推荐