0001-安装xen
下载安装xen源
yum -y install centos-release-xen11 添加xen的源
sed -i -e "s/enabled=1/enabled=0/g" /etc/yum.repos.d/CentOS-Xen.repo11 更新centos内核
yum --enablerepo=centos-virt-xen -y update kernel11 安装xen
yum --enablerepo=centos-virt-xen -y install xen11 编辑Domain0的配置文件,如同下面code,我配置Domain0的内存是4Gb,如果你安装xen的虚拟机或实体机的内存也为4Gb的话,当安装完xen后重启进入不了系统,注意:虚拟机或实体机的内存一定要大于Domain0设置的内存。
vi /etc/default/grub11GRUB_CMDLINE_XEN_DEFAULT="dom0_mem=4096M,max:4096M cpuinfo com1=115200,8n1 .....11 我使用Libvirt装的虚拟机,安装Libvirt
yum --enablerepo=centos-virt-xen -y install libvirt libvirt-daemon-xen virt-install11 运行grub-bootxen.sh脚本,将xen添加到开机启动项中
/bin/grub-bootxen.sh11 重启进入xen系统
reboot11 查看xen的信息,检查是否安装成功
xl info110010-配置网桥
添加网桥“br0”,添加成功会提示successfully added。
nmcli c add type bridge autoconnect yes con-name br0 ifname br011Connection 'br0' (0f4b7bc8-8c7a-461a-bff1-d516b941a6ec) successfully added.11 为“br0”创建ip地址
nmcli c modify br0 ipv4.addresses 10.0.0.30/24 ipv4.method manual11 为“br0”创建网关
nmcli c modify br0 ipv4.gateway 10.0.0.111 为“br0”创建DNS
nmcli c modify br0 ipv4.dns 10.0.0.111 删除原有网卡,添加新的网卡与br0连通
nmcli c delete eno16777736
nmcli c add type bridge-slave autoconnect yes con-name eno16777736 ifname eno16777736 master br01212
重启NetworkManager服务
systemctl stop NetworkManager; systemctl start NetworkManager11 查看ip信息
ip addr110011-创建虚拟机
启动Libvirt服务
systemctl start libvirtd
systemctl enable libvirtd1212
安装系统安装镜像,我是用虚拟机安装的xen,我直接把安装镜像解压传到了虚拟机里面,在centos系统的home目录下有一个已经解压好的安装镜像文件,“/home/centos”,实体机的话可以挂载安装,找到挂载目录就行。
创建虚拟机镜像目录
mkdir -p /var/xen/images11 开始安装虚拟机,需要注意的是size大小,不要弄太大,要小于机身存储减去Domain0的存储后的存储,否则会报错,提示存储空间不够。
virt-install --connect xen:/// --paravirt --name centos7 --ram 4096 --disk path=/var/xen/images/centos7.img,size=10 --vcpus 2 --os-type linux --os-variant rhel7 --network bridge=br0 --graphics none --location '/home/centos/' --extra-args 'text console=com1 utf8 console=hvc0'110100-安装成功
之后出现一大堆安装信息,当安装的时候没联网的话,会提示类似超时的信息,只需等待一会即可,安装成功之后,就会进入虚拟机的交互界面,输入exit即可退出xen安装的虚拟机,进入本机系统。
xm工具:xm help
xm list 查看所有域
states 状态显示 r表示运行 s表示关闭 c表示崩溃了 d表示正在关闭中 b表示阻塞 p表示暂停
创建虚拟机
xm create /dev/null ramdisk=initrd.img \
kernel=/boot/vmlinuz-2.6.12.6-xenU \
name=ramdisk vif='' vcpus=1 \
memory=64 root=/dev/ram0
# mkdir -pv /xen/vm1 先创建目录
# dd if=/dev/zero of=/xen/vm1/test.img oflag=direct bs=1M seek=2048 count=1 创建一个稀疏的磁盘镜像,不暂用磁盘空间,实际大小只有1M,显示为2.1G
# mkfs.ext4 /xen/vm1/test.img 分区格式化。
# mount -o loop /xen/vm1/test.img/mnt 挂载
# vim /bincp.sh
#!/bin/bash
#
DEST=/mnt
libcp() {
LIBPATH=${1%/*}
[ ! -d $DEST$LIBPATH ] && mkdir -p $DEST$LIBPATH
[ ! -e $DEST${1} ] && cp $1 $DEST$LIBPATH && echo "copy lib $1 finished."
}
bincp() {
CMDPATH=${1%/*}
[ ! -d $DEST$CMDPATH ] && mkdir -p $DEST$CMDPATH
[ ! -e $DEST${1} ] && cp $1 $DEST$CMDPATH
for LIB in `ldd $1 | grep -o "/.*lib\(64\)\{0,1\}/[^[:space:]]\{1,\}"`; do
libcp $LIB
done
}
read -p "Your command: " CMD
until [ $CMD == 'q' ]; do
! which $CMD && echo "Wrong command" && read -p "Input again:" CMD && continue
COMMAND=` which $CMD | grep -v "^alias" | grep -o "[^[:space:]]\{1,\}"`
bincp $COMMAND
echo "copy $COMMAND finished."
read -p "Continue: " CMD
done
-------------------------------------
# bash bincp.sh 移植程序
Your command: init
Your command: bash
Your command: ls
Your command: cat
[root@localhost ~]# tree /mnt
/mnt
├── lib64
│ ├── ld-linux-x86-64.so.2
│ ├── libc.so.6
│ ├── libdbus-1.so.3
│ ├── libgcc_s.so.1
│ ├── libnih-dbus.so.1
│ ├── libnih.so.1
│ ├── libpthread.so.0
│ └── librt.so.1
└── sbin
└── init
# chroot /mnt
# cd /mnt
# mkdir proc sys dev etc/{init,rc.d} var/{log,run} tmp
# cp /etc/init/rcS.conf /mnt/etc/init 提供配置文件
--------------------------------
# vi /mnt/etc/init/rcS.conf
# rcS - runlevel compatibility
#
# This task runs the old sysv-rc startup scripts.
#
# Do not edit this file directly. If you want to change the behaviour,
# please create a file rcS.override and put your changes there.
start on startup
stop on runlevel
task
# Note: there can be no previous runlevel here, if we have one it's bad
# information (we enter rc1 not rcS for maintenance). Run /etc/rc.d/rc
# without information so that it defaults to previous=N runlevel=S.
console output
exec /etc/rc.d/rc.sysinit 只保留这一项
--------------------------------------
# vi /mnt/etc/rc.d/rc.sysinit
#!/bin/bash
##
echo -e "\twelcome to MiniLinux(www.mylinux.com)"
exec /bin/bash
---------------
# umount /mnt
# chmod +x /mnt/etc/rc.d/rc.sysinit
#cd /etc/xen
# vim test
ramdisk="/boot/initramfs-2.6.32-358.el6.x86_64.img"
kernel="/boot/vmlinuz-2.6.32-358.el6.86_64"
name="test"
vcpus=1
memory=128
disk=['file:/xen/vm1/test.img,xvda,w',]
root="/dev/xvda ro"
extra="selinux=0 init=/sbin/init"
-------------------------
# xm create -c test 创建虚拟机,-c表示直接连接到虚拟机
# xm console test 使用xm连上虚拟机
xm destroy test 杀死虚拟机
Crtl+] 退出虚拟机 |