經過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 #查看網卡配置