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/grub11
GRUB_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 info11
0010-配置網橋
添加網橋“br0”,添加成功會提示successfully added。
nmcli c add type bridge autoconnect yes con-name br0 ifname br011
Connection '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 addr11
0011-創建虛擬機
啓動Libvirt服務
systemctl start libvirtd systemctl enable libvirtd1212
安裝系統安裝鏡像,我是用虛擬機安裝的xen,我直接把安裝鏡像解壓傳到了虛擬機裏面,在centos系統的home目錄下有一個已經解壓好的安裝鏡像文件,“/home/centos”,實體機的話可以掛載安裝,找到掛載目錄就行。
創建虛擬機鏡像目錄
mkdir -p /var/xen/p_w_picpaths11
開始安裝虛擬機,需要注意的是size大小,不要弄太大,要小於機身存儲減去Domain0的存儲後的存儲,否則會報錯,提示存儲空間不夠。
virt-install --connect xen:/// --paravirt --name centos7 --ram 4096 --disk path=/var/xen/p_w_picpaths/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'11
0100-安裝成功
之後出現一大堆安裝信息,當安裝的時候沒聯網的話,會提示類似超時的信息,只需等待一會即可,安裝成功之後,就會進入虛擬機的交互界面,輸入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+] 退出虛擬機