经过grub程序引导本地磁盘内核启动系统(busybox)linux
理论上,该实验只须要配置好xen环境便可,可是,咱们的xen环境安装在centOS7上,可是咱们又是使用的kernel 2.6版本的内核,因此须要安装在centOS6版本下的grub程序!vim
因此,这里咱们提供一个centos6的机器,用来准备为磁盘安装grub0版本;centos
同时,提供一个安装好xen环境centOS7的系统;centOS7的xen环境以下:网络
这里的实验需求就是经过给虚拟磁盘安装grub程序,而后准备好系统启动文件,以及根文件系统;app
而后再xen环境下制定“/usr/bin/pygrub”程序来引导启动系统,便可;ssh
*这里安装的grub程序咱们使用的是第一个版本的grub程序,而不是centos7的新版本的grub程序,这点必定要清楚;工具
/*在centos6上完成如下操做*/oop
一、建立虚拟磁盘映像centos7
yum install qemu-img
#能够安装qemu-img工具,qemu-img和qemu-img-xen是同一个工具,他们是软链接关系
mkdir /images/xen/ qemu-img create -f raw -o size=2G busybox.img
ll -h busybox.img
du -h busybox.img
此时咱们就拥有了一个2G大小虚拟磁盘文件spa
二、经过losetup命令,关联虚拟磁盘与虚拟设备,并进行格式化与挂载操做
拥有了磁盘文件有,咱们须要对磁盘关联到回环设备,经过losetup命令,在对回环设备进行分区,格式化以及挂载,才能使用这个磁盘
losetup /dev/loop0 /images/xen/busybox.img kpartx -a /dev/loop0 losetup -a
这样,busybox.img磁盘就关联到/dev/loop0设备上了,这样的话,再去对/dev/loop0设备进行操做,就是对busybox.img进行操做
fdisk /dev/loop0 n p 1 [回车] +200M n p 2 [回车] +1024M w fdisk -l /dev/loop0 kpartx -a /dev/loop0
ll /dev/mapper/
格式化磁盘分区,并建立挂载目录,并挂载磁盘分区
mke2fs -t ext2 /dev/mapper/loop0p1
mke2fs -t ext2 /dev/mapper/loop0p2
mkdir -pv /mnt/{boot,sysroot} mount /dev/mapper/loop0p1 /mnt/boot/ mount /dev/mapper/loop0p2 /mnt/sysroot/
df -h #查看挂载状况
#根据FHS规定,为咱们的系统建立常见的目录文件
mkdir -pv /mnt/sysroot/{etc,home,var,root,tmp,lib/module,proc,sys}
三、写入grub程序,并将xen-netfront.ko、内核文件、ramdisk文件复制到磁盘
grub-install --root-directory=/mnt /dev/loop0
在安装的时候回报错,以下图:
这里是由于咱们是虚拟设备,没有BIOS驱动,可是grub程序同样被装载到/dev/loop0磁盘中去了,不影响;
此时,咱们能够看到,grub对应的文件都已经安装完成;
安装完成grub程序之后,咱们须要手动配置grub.conf文件来引导系统启动
vim /mnt/boot/grub/grub.conf default=0 timeout=10 title MyTestSystem (busybox kernel-2.6) root (hd0,0) #指定kernel和ramdisk文件存放的磁盘分区 kernel /vmlinuz root=/dev/xvda2 ro selinux=0 init=/bin/sh initrd /initrd.img
接下来,拷贝内核文件,ramdisk以及xen-netfront驱动到磁盘中来便可;
cp /boot/vmlinuz-2.6.32-504.el6.x86_64 /mnt/boot/vmlinuz cp /boot/initramfs-2.6.32-504.el6.x86.img /mnt/boot/initrd.img cp /lib/module/2.6.32-504.el6.x86/kernel/divers/net/xen-netfront.ko /mnt/sysroot/lib/module/
自此,咱们系统启动所须要的文件就准备齐了;
四、将虚拟磁盘文件卸载下来,传送到centos7系统上来
咱们这里使用的是grub的第一个版本,因此再centos6上面来作,可是xen环境在centos7上,因此咱们须要将虚拟磁盘传送到centos7上面去;
umount /mnt/boot/ umount /mnt/sysroot/ kpartx -d /dev/loop0 losetup -d /dev/loop0 losetup -a
这样,我就将磁盘卸载下来了,下一步就将磁盘传输到centos7的系统上去;
ping 192.168.238.129
#若是没有scp工具,就 yum install openssh-clients 工具便可 scp /images/xen/busybox.img root@192.168.238.129:/root/
password: #输入192.168.238.129主机的root用户的密码即
/*在centos7上完成如下操做*/
五、将虚拟磁盘挂载到centos7的系统之下
此时,在/root/目录下就会有busybox.img的虚拟磁盘文件,咱们将这个磁盘挂载在咱们centos7下,便可
losetup /dev/loop0 /root/busybox.img kpartx -a /dev/loop0 losetup -a ll /dev/mapper/
此时,在centos7上面就会有loop0p1和loop0p2这两个设备,挂载这两个设备的文件,查看里面的内容,就是咱们以前在centos6上面所配置的内容;
mkdir -pv /mnt/{boot,sysroot} mount /dev/mapper/loop0p1 /mnt/boot/ mount /dev/mapper/loop0p2 /mnt/sysroot/ ls /mnt/boot/ ls /mnt/sysroot/
六、编译安装busybox,将busybox的根文件系统拷贝到虚拟磁盘的/sysroot/下
编译安装busybox系统
【这里在实验三中以及作过,这里再也不赘述】
将busybox的根文件系统拷贝到磁盘的第二个分区中,也就是目录/mnt/sysroot目录下,并切换根目录查看是否正常;
cp -a busybox-1.22.1/_install/* /mnt/sysroot/ chroot /mnt/sysroot/ /bin/sh
七、配置虚拟机的启动文件,指定BootLoader参数
建立xl的虚拟机启动文件,并进行相应的配置
cd /etc/xen/ cp xlexample.pvlinux busybox vim busybox name = "busybox-grub" bootloader = "/usr/bin/pygrub" memory = 256 vcpus = 2 disk = [ '/root/busybox.img,raw,xvda,rw' ]
这里注意,咱们指定bootloader参数来引导系统启动;
八、启动虚拟机
xl create /etc/xen/busybox -c
此时,就会经过xen环境下提供 pyGRUB 来引导系统;
系统最后正常启动,及系统配置正确;
九、网络配置
在虚拟机中配置网卡
cd /lib/module/ insmod xen-netfront.ko
ip addr #查看网卡配置