实验六:通过grub程序引导本地磁盘内核启动系统(busybox)

摘要:
实验名称:通过grub程序引导本地磁盘内核以启动系统实验环境:理论上,实验只需要配置xen环境。然而,我们的xen环境安装在centOS7上,但我们使用内核版本2.6,因此我们需要在centOS6下安装grub程序!
实验名称:

  通过grub程序引导本地磁盘内核启动系统(busybox)

实验环境:

  理论上,该实验只需要配置好xen环境即可,但是,我们的xen环境安装在centOS7上,但是我们又是使用的kernel 2.6版本的内核,所以需要安装在centOS6版本下的grub程序!

  所以,这里我们提供一个centos6的机器,用来准备为磁盘安装grub0版本;

  同时,提供一个安装好xen环境centOS7的系统;centOS7的xen环境如下:

实验六:通过grub程序引导本地磁盘内核启动系统(busybox)第1张

实验需求:

  这里的实验需求就是通过给虚拟磁盘安装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

实验六:通过grub程序引导本地磁盘内核启动系统(busybox)第2张

    此时我们就拥有了一个2G大小虚拟磁盘文件

  2、通过losetup命令,关联虚拟磁盘与虚拟设备,并进行格式化与挂载操作

    拥有了磁盘文件有,我们需要对磁盘关联到回环设备,通过losetup命令,在对回环设备进行分区,格式化以及挂载,才能使用这个磁盘

losetup /dev/loop0 /images/xen/busybox.img
kpartx -a /dev/loop0
losetup -a

实验六:通过grub程序引导本地磁盘内核启动系统(busybox)第3张

    这样,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/

实验六:通过grub程序引导本地磁盘内核启动系统(busybox)第4张

   格式化磁盘分区,并创建挂载目录,并挂载磁盘分区

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

    在安装的时候回报错,如下图:

实验六:通过grub程序引导本地磁盘内核启动系统(busybox)第5张

    这里是因为我们是虚拟设备,没有BIOS驱动,但是grub程序一样被装载到/dev/loop0磁盘中去了,不影响;

实验六:通过grub程序引导本地磁盘内核启动系统(busybox)第6张

    此时,我们可以看到,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的系统之下

实验六:通过grub程序引导本地磁盘内核启动系统(busybox)第7张

    此时,在/root/目录下就会有busybox.img的虚拟磁盘文件,我们将这个磁盘挂载在我们centos7下,即可

losetup /dev/loop0 /root/busybox.img
kpartx -a /dev/loop0
losetup -a
ll /dev/mapper/

实验六:通过grub程序引导本地磁盘内核启动系统(busybox)第8张

    此时,在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 来引导系统;

实验六:通过grub程序引导本地磁盘内核启动系统(busybox)第9张

    系统最后正常启动,及系统配置正确;

  9、网络配置

    在虚拟机中配置网卡

cd /lib/module/
insmod xen-netfront.ko
ip addr   #查看网卡配置
实验结果:

免责声明:文章转载自《实验六:通过grub程序引导本地磁盘内核启动系统(busybox)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇(转)通过gitlab统计git提交的代码量Git 在同一台机器上配置多个Git帐号下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

win8.1 virtualbox 安装centos7注意事项

 win8.1是64位的,一开始在virtualbox中选择版本时,怎么也选不到64位的,这时要改BIOS设置,把CPU虚拟化改为允许。 virtualbox是32位的,没必要非得是64位(64位的也不好找) centos是最新版的,centos7,64位。 virtualbox是最新版本,新建虚拟机成功,可是启动时,总弹出错误: ------------...

深入理解JVM3

VM运行时数据区域 JVM执行Java程序的过程中,会使用到各种数据区域,这些区域有各自的用途、创建和销毁时间。根据《Java虚拟机规范(第二版)》的规定,JVM包括下列几个运行时数据区域: 1.程序计数器(Program Counter Register): 每一个Java线程都有一个程序计数器来用于保存程序执行到当前方法的哪一个指令,对于非Native...

转:linux的fatab文件详解

/etc/fstab是用来存放文件系统的静态信息的文件。位于/etc/目录下,可以用命令less /etc/fstab 来查看,如果要修改的话,则用命令 vi /etc/fstab 来修改。        当系统启动的时候,系统会自动地从这个文件读取信息,并且会自动将此文件中指定的文件系统挂载到指定的目录。下面我来介绍如何在此文件下填写信息。      ...

Ubuntu18.04格式化U盘为NTFS的方法

1、先安装工具ntfs-3g sudo apt-get install ntfs-3g 2、找到需要格式化的U盘在系统中的序号 df -h 找到U盘的序列号后记下来,例如“/dev/sdd1” 3、解除U盘挂载 sudo umount /dev/sdd1 4、格式化U盘 sudo mkfs.ntfs /dev/sdd1 *还有其它格式的格式化命令 sudo...

关于mvn install命令执行报错问题

首先这个报错,通常要么是依赖问题,比如模块之间的依赖传递问题,通常报这种错误会在控制台提示。 或者是比如子工程分为test-entity、test-dao、test-service、test-web三者之间依赖传递,web依赖为service,service依赖于dao,dao依赖于entity。 比如修改了test-entity,没有及时执行mvn in...

java基础-构建命令行运行的java程序简要注意

 今天编写了一个运行在服务端的java工具类,才发现自己以前很少关注运营方面的内容,导致在服务端部署一个java的工具变得异常困难,其实这也是自己对java的了解不够造成的。   首先,当代码编写完成之后,在主类中必须要有main函数,其中的参数非常重要。根据一位同事的说法,除正常的执行程序之外,其中至少要包含两种参数:-v(软件版本,以及作者等介绍信息...