實驗六:通過grub程序引導本地磁盤內核啟動系統(busybox)


實驗名稱:

  通過grub程序引導本地磁盤內核啟動系統(busybox)

實驗環境:

  理論上,該實驗只需要配置好xen環境即可,但是,我們的xen環境安裝在centOS7上,但是我們又是使用的kernel 2.6版本的內核,所以需要安裝在centOS6版本下的grub程序!

  所以,這里我們提供一個centos6的機器,用來准備為磁盤安裝grub0版本;

  同時,提供一個安裝好xen環境centOS7的系統;centOS7的xen環境如下:

實驗需求:

  這里的實驗需求就是通過給虛擬磁盤安裝grub程序,然后准備好系統啟動文件,以及根文件系統;

  然后再xen環境下制定“/usr/bin/pygrub”程序來引導啟動系統,即可;

  *這里安裝的grub程序我們使用的是第一個版本的grub程序,而不是centos7的新版本的grub程序,這點一定要清楚;

實驗配置:

  /*在centos6上完成以下操作*/

  1、創建虛擬磁盤映像

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大小虛擬磁盤文件

  2、通過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}

  3、寫入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/

    自此,我們系統啟動所需要的文件就准備齊了;

  4、將虛擬磁盤文件卸載下來,傳送到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上完成以下操作*/

  5、將虛擬磁盤掛載到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/

  6、編譯安裝busybox,將busybox的根文件系統拷貝到虛擬磁盤的/sysroot/下

    編譯安裝busybox系統

    【這里在實驗三中以及做過,這里不再贅述】

    將busybox的根文件系統拷貝到磁盤的第二個分區中,也就是目錄/mnt/sysroot目錄下,並切換根目錄查看是否正常;

cp -a busybox-1.22.1/_install/* /mnt/sysroot/
chroot /mnt/sysroot/ /bin/sh

  7、配置虛擬機的啟動文件,指定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參數來引導系統啟動;

  8、啟動虛擬機

xl create /etc/xen/busybox -c

  此時,就會通過xen環境下提供 pyGRUB 來引導系統;

    系統最后正常啟動,及系統配置正確;

  9、網絡配置

    在虛擬機中配置網卡

cd /lib/module/
insmod xen-netfront.ko
ip addr   #查看網卡配置

實驗結果:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM